Version Description
- October 29th, 2018 =
- Fixed a plugin conflict between Easy Forms and Contact Form 7 when exporting forms.
- Fixed an issue with the bbPress integration where users were being subscribed regardless of checking the box.
- Fixed an issue with datepickers conflicting when the same form (with date pickers) is on the same page twice.
- Inline forms will now stack when the screen size is less than 650px.
- Cleaned/Standardized/Code Sniffed the checkbox integration classes.
- Removed checkbox integration CSS file.
- Moved the WooCommerce integration checkbox's placement on the checkout page (it now uses the filter
woocommerce_review_order_before_submit
instead ofwoocommerce_checkout_after_order_review
). - Added/Fixed several filters:
yikes_mailchimp_checkbox_integration_checkbox_html
,yikes-mailchimp-filter-before-submission-$form_id
,yikes-mailchimp-redirection
,yikes-mailchimp-redirect-new-window
,yikes_mailchimp_inline_stack_fields_width
,yikes_mailchimp_checkbox_integration_checkbox_label
- Removed "Vote that the plugin works" callout.
- Fixed & reorganized MailChimp Gutenberg block.
- Added new tags for the update profile email:
[email]
,[subscriber_id]
, and[form_name]
.
Download this release
Release Info
Developer | yikesitskevin |
Plugin | Easy Forms for MailChimp |
Version | 6.4.8 |
Comparing to | |
See all releases |
Code changes from version 6.4.7 to 6.4.8
- admin/class-yikes-inc-easy-mailchimp-extender-admin.php +5 -11
- admin/partials/edit-form.php +14 -1
- admin/partials/menu/options-sections/import-export-forms.php +1 -1
- blocks/api/api.php +90 -0
- blocks/blocks.php +46 -162
- blocks/{development/form/js → components}/class.MailChimpForms.js +21 -15
- blocks/{development/form/js → components}/countries.js +0 -0
- blocks/{development/form/js → components}/enable-submit-button-editing.js +0 -0
- blocks/{development/form/js → components}/get-form.js +0 -0
- blocks/{development/form/js → components}/get-forms.js +0 -0
- blocks/{development/form/js → components}/get-recaptcha.js +0 -0
- blocks/{development/form/js → components}/locales.js +0 -0
- blocks/{development/form/js → components}/slugify.js +0 -0
- blocks/{development/form/js → components}/states.js +0 -0
- blocks/development/form/js/block-form.js +0 -211
- blocks/easy-forms-block/dev-easy-forms-block.js +212 -0
- blocks/{release/blocks.js → easy-forms-block/easy-forms-block.js} +358 -347
- blocks/easy-forms-block/easy-forms-block.js.map +1 -0
- blocks/easy-forms-block/easy-forms-block.php +93 -0
- blocks/{development/form/css/blocks.scss → easy-forms-block/easy-forms-block.scss} +0 -0
- blocks/index.js +1 -1
- blocks/release/blocks.js.map +0 -1
- changelog.txt +17 -4
- includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php +3 -3
- languages/yikes-inc-easy-mailchimp-extender.pot +266 -256
- public/classes/checkbox-integrations.php +240 -278
- public/classes/checkbox-integrations/class.bbpress_forms-checkbox.php +85 -54
- public/classes/checkbox-integrations/class.buddypress_form-checkbox.php +61 -58
- public/classes/checkbox-integrations/class.comment_form-checkbox.php +71 -74
- public/classes/checkbox-integrations/class.contact_form_7-checkbox.php +42 -54
- public/classes/checkbox-integrations/class.easy_digital_downloads_checkout_form-checkbox.php +87 -78
- public/classes/checkbox-integrations/class.registration_form-checkbox.php +35 -37
- public/classes/checkbox-integrations/class.woocommerce_checkout_form-checkbox.php +72 -66
- public/classes/process/class.process_form_submission_handler.php +7 -7
- public/css/jquery-ui.min.css +6 -6
- public/js/yikes-datepicker-scripts.js +51 -36
- public/js/yikes-datepicker-scripts.min.js +1 -1
- public/partials/ajax/class.public_ajax.php +39 -29
- public/partials/shortcodes/process_form_shortcode.php +14 -6
- readme.txt +13 -6
- yikes-inc-easy-mailchimp-extender.php +2 -2
admin/class-yikes-inc-easy-mailchimp-extender-admin.php
CHANGED
@@ -381,7 +381,7 @@ class Yikes_Inc_Easy_Mailchimp_Forms_Admin {
|
|
381 |
// grab our nonce.
|
382 |
$nonce = $_REQUEST['nonce'];
|
383 |
// grab the forms.
|
384 |
-
$forms = isset( $_REQUEST['
|
385 |
// validate nonce.
|
386 |
if ( ! wp_verify_nonce( $nonce, 'export-forms' ) ) {
|
387 |
wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
|
@@ -1658,7 +1658,7 @@ class Yikes_Inc_Easy_Mailchimp_Forms_Admin {
|
|
1658 |
public function generate_show_some_love_container() {
|
1659 |
// if no active add-ons are installed,
|
1660 |
// lets display our branding and add-on sidebar
|
1661 |
-
if ( get_option( 'yikes-easy-mc-active-addons', array() )
|
1662 |
|
1663 |
/* On Edit Forms Page Display Upsell to Customizer */
|
1664 |
$screen = get_current_screen();
|
@@ -1697,13 +1697,6 @@ class Yikes_Inc_Easy_Mailchimp_Forms_Admin {
|
|
1697 |
<a href="https://twitter.com/share" class="twitter-share-button" data-url="https://wordpress.org/plugins/yikes-inc-easy-mailchimp-extender/" data-text="I'm using the Easy Forms for MailChimp plugin by @YikesInc to grow my mailing list - it's awesome! -" data-hashtags="MailChimp">Tweet</a>
|
1698 |
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if (!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
|
1699 |
</p>
|
1700 |
-
|
1701 |
-
<?php _e( 'Vote that the plugin works', 'yikes-inc-easy-mailchimp-extender' ); ?>
|
1702 |
-
<p class="sidebar-container">
|
1703 |
-
<a href="https://wordpress.org/plugins/yikes-inc-easy-mailchimp-extender/" target="_blank">
|
1704 |
-
<?php _e( 'Vote for Compatibility', 'yikes-inc-easy-mailchimp-extender' ); ?>
|
1705 |
-
</a>
|
1706 |
-
</p>
|
1707 |
</div>
|
1708 |
|
1709 |
<p class="description sidebar-footer-text"><?php printf( __( "This plugin made with %s by %s" , 'yikes-inc-easy-mailchimp-extender' ), '<span class="dashicons dashicons-heart yikes-love"></span>', '<a href="http://www.yikesinc.com" target="_blank" title="YIKES Inc.">YIKES Inc.</a>' ); ?> </p>
|
@@ -2204,7 +2197,8 @@ class Yikes_Inc_Easy_Mailchimp_Forms_Admin {
|
|
2204 |
switch ( $field_type ) {
|
2205 |
case 'radio':
|
2206 |
default:
|
2207 |
-
$
|
|
|
2208 |
break;
|
2209 |
|
2210 |
case 'checkbox':
|
@@ -2224,7 +2218,7 @@ class Yikes_Inc_Easy_Mailchimp_Forms_Admin {
|
|
2224 |
type="<?php echo $field_type; ?>"
|
2225 |
name="<?php echo $field_name; ?>"
|
2226 |
value="no-default"
|
2227 |
-
<?php checked( $field['default_choice'], 'no-default' ); ?>>
|
2228 |
No Default
|
2229 |
</label>
|
2230 |
<?php
|
381 |
// grab our nonce.
|
382 |
$nonce = $_REQUEST['nonce'];
|
383 |
// grab the forms.
|
384 |
+
$forms = isset( $_REQUEST['yikes_export_forms'] ) ? $_REQUEST['yikes_export_forms'] : array();
|
385 |
// validate nonce.
|
386 |
if ( ! wp_verify_nonce( $nonce, 'export-forms' ) ) {
|
387 |
wp_die( __( "We've run into an error. The security check didn't pass. Please try again." , 'yikes-inc-easy-mailchimp-extender' ) , __( "Failed nonce validation" , 'yikes-inc-easy-mailchimp-extender' ) , array( 'response' => 500 , 'back_link' => true ) );
|
1658 |
public function generate_show_some_love_container() {
|
1659 |
// if no active add-ons are installed,
|
1660 |
// lets display our branding and add-on sidebar
|
1661 |
+
if ( empty( get_option( 'yikes-easy-mc-active-addons', array() ) ) ) {
|
1662 |
|
1663 |
/* On Edit Forms Page Display Upsell to Customizer */
|
1664 |
$screen = get_current_screen();
|
1697 |
<a href="https://twitter.com/share" class="twitter-share-button" data-url="https://wordpress.org/plugins/yikes-inc-easy-mailchimp-extender/" data-text="I'm using the Easy Forms for MailChimp plugin by @YikesInc to grow my mailing list - it's awesome! -" data-hashtags="MailChimp">Tweet</a>
|
1698 |
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if (!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
|
1699 |
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1700 |
</div>
|
1701 |
|
1702 |
<p class="description sidebar-footer-text"><?php printf( __( "This plugin made with %s by %s" , 'yikes-inc-easy-mailchimp-extender' ), '<span class="dashicons dashicons-heart yikes-love"></span>', '<a href="http://www.yikesinc.com" target="_blank" title="YIKES Inc.">YIKES Inc.</a>' ); ?> </p>
|
2197 |
switch ( $field_type ) {
|
2198 |
case 'radio':
|
2199 |
default:
|
2200 |
+
$default = is_array( $field['default_choice'] ) ? current( $field['default_choice'] ) : $field['default_choice'];
|
2201 |
+
$checked = is_array( $field['default_choice'] ) ? checked( current( $field['default_choice'] ), $id, false ) : checked( $field['default_choice'], $id, false );
|
2202 |
break;
|
2203 |
|
2204 |
case 'checkbox':
|
2218 |
type="<?php echo $field_type; ?>"
|
2219 |
name="<?php echo $field_name; ?>"
|
2220 |
value="no-default"
|
2221 |
+
<?php is_array( $field['default_choice'] ) ? checked( current( $field['default_choice'] ), 'no-default' ) : checked( $field['default_choice'], 'no-default' ); ?>>
|
2222 |
No Default
|
2223 |
</label>
|
2224 |
<?php
|
admin/partials/edit-form.php
CHANGED
@@ -648,7 +648,20 @@
|
|
648 |
|
649 |
<ul>
|
650 |
<li class="yikes-easy-mc-user-email-subject-help"><strong><?php _e( 'Email Subject' , 'yikes-inc-easy-mailchimp-extender' ); ?></strong> <?php _e( 'The subject of the email sent to the user.' , 'yikes-inc-easy-mailchimp-extender' ); ?></li>
|
651 |
-
<li class="yikes-easy-mc-user-email-body-help"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
652 |
</ul>
|
653 |
|
654 |
</div>
|
648 |
|
649 |
<ul>
|
650 |
<li class="yikes-easy-mc-user-email-subject-help"><strong><?php _e( 'Email Subject' , 'yikes-inc-easy-mailchimp-extender' ); ?></strong> <?php _e( 'The subject of the email sent to the user.' , 'yikes-inc-easy-mailchimp-extender' ); ?></li>
|
651 |
+
<li class="yikes-easy-mc-user-email-body-help">
|
652 |
+
<strong><?php _e( 'Email Body' , 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
|
653 |
+
<?php echo __( 'The text in the profile update verification email sent to the subscriber. Wrap the text you want to be the link in <code>[link][/link]</code> tags. The link is required in the email, please don\'t leave these tags out.', 'yikes-inc-easy-mailchimp-extender' ); ?>
|
654 |
+
</li>
|
655 |
+
<li class="yikes-easy-mc-user-email-body-help">
|
656 |
+
<strong><?php echo __( 'Tags', 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
|
657 |
+
<?php echo __( 'You can also use these tags in your email:', 'yikes-inc-easy-mailchimp-extender' ); ?>
|
658 |
+
<ul>
|
659 |
+
<li><?php echo sprintf( __( '<code>[url]</code> displays your website\'s URL (i.e. %s).', 'yikes-inc-easy-mailchimp-extender' ), get_home_url() ); ?></li>
|
660 |
+
<li><?php echo __( '<code>[email]</code> displays the subscriber\'s email address.', 'yikes-inc-easy-mailchimp-extender' ); ?></li>
|
661 |
+
<li><?php echo __( '<code>[subscriber_id]</code> displays the subscriber\'s unique email ID.', 'yikes-inc-easy-mailchimp-extender' ); ?></li>
|
662 |
+
<li><?php echo sprintf( __( '<code>[form_name]</code> displays your form\'s name (i.e. %s).', 'yikes-inc-easy-mailchimp-extender' ), $form['form_name'] ); ?></li>
|
663 |
+
</ul>
|
664 |
+
</li>
|
665 |
</ul>
|
666 |
|
667 |
</div>
|
admin/partials/menu/options-sections/import-export-forms.php
CHANGED
@@ -24,7 +24,7 @@ $all_forms = $form_interface->get_all_forms();
|
|
24 |
<ul class="export-custom-forms-list">
|
25 |
<p class="description"><?php _e( 'Select which forms to export. Leave all checkboxes unchecked to export all of your forms.' , 'yikes-inc-easy-mailchimp-extender' ); ?></p>
|
26 |
<?php foreach( $all_forms as $id => $form ) { ?>
|
27 |
-
<li><label><input type="checkbox" name="
|
28 |
<?php } ?>
|
29 |
</ul>
|
30 |
<?php } ?>
|
24 |
<ul class="export-custom-forms-list">
|
25 |
<p class="description"><?php _e( 'Select which forms to export. Leave all checkboxes unchecked to export all of your forms.' , 'yikes-inc-easy-mailchimp-extender' ); ?></p>
|
26 |
<?php foreach( $all_forms as $id => $form ) { ?>
|
27 |
+
<li><label><input type="checkbox" name="yikes_export_forms[]" value="<?php echo (int) $id; ?>"><?php echo esc_html( $form['form_name'] ); ?></label></li>
|
28 |
<?php } ?>
|
29 |
</ul>
|
30 |
<?php } ?>
|
blocks/api/api.php
ADDED
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Class YIKES_Easy_Forms_Blocks_API.
|
4 |
+
*/
|
5 |
+
class YIKES_Easy_Forms_Blocks_API {
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Register our hooks.
|
9 |
+
*/
|
10 |
+
public function __construct() {
|
11 |
+
add_action( 'wp_ajax_yikes_get_forms', array( $this, 'get_forms' ) );
|
12 |
+
add_action( 'wp_ajax_yikes_get_form', array( $this, 'get_form' ) );
|
13 |
+
add_action( 'wp_ajax_yikes_get_recaptcha', array( $this, 'get_recaptcha' ) );
|
14 |
+
}
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Get all of our forms.
|
18 |
+
*/
|
19 |
+
public function get_forms() {
|
20 |
+
|
21 |
+
// Verify Nonce.
|
22 |
+
if ( ! check_ajax_referer( 'fetch_forms_nonce', 'nonce', false ) ) {
|
23 |
+
wp_send_json_error( '1' );
|
24 |
+
}
|
25 |
+
|
26 |
+
// Get all of our forms.
|
27 |
+
$form_interface = yikes_easy_mailchimp_extender_get_form_interface();
|
28 |
+
$all_forms = $form_interface->get_all_forms();
|
29 |
+
|
30 |
+
wp_send_json_success( array_values( $all_forms ) );
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Get a form's data.
|
35 |
+
*/
|
36 |
+
public function get_form() {
|
37 |
+
|
38 |
+
// Verify Nonce.
|
39 |
+
if ( ! check_ajax_referer( 'fetch_form_nonce', 'nonce', false ) ) {
|
40 |
+
wp_send_json_error( '1' );
|
41 |
+
}
|
42 |
+
|
43 |
+
$form_id = isset( $_POST['form_id'] ) ? filter_var( wp_unslash( $_POST['form_id'] ), FILTER_SANITIZE_NUMBER_INT ) : '';
|
44 |
+
|
45 |
+
if ( empty( $form_id ) ) {
|
46 |
+
wp_send_json_error( '1' );
|
47 |
+
}
|
48 |
+
|
49 |
+
$form_interface = yikes_easy_mailchimp_extender_get_form_interface();
|
50 |
+
|
51 |
+
$form = $form_interface->get_form( $form_id );
|
52 |
+
|
53 |
+
wp_send_json_success( $form );
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Get the reCAPTCHA variables.
|
58 |
+
*/
|
59 |
+
public function get_recaptcha() {
|
60 |
+
|
61 |
+
// Verify Nonce.
|
62 |
+
if ( ! check_ajax_referer( 'fetch_recaptcha_nonce', 'nonce', false ) ) {
|
63 |
+
wp_send_json_error( '1' );
|
64 |
+
}
|
65 |
+
|
66 |
+
if ( get_option( 'yikes-mc-recaptcha-status', '' ) === '1' ) {
|
67 |
+
|
68 |
+
$site_key = get_option( 'yikes-mc-recaptcha-site-key', '' );
|
69 |
+
$secret_key = get_option( 'yikes-mc-recaptcha-secret-key', '' );
|
70 |
+
|
71 |
+
// If either of the Private the Secret key is left blank, we should display an error back to the user.
|
72 |
+
if ( empty( $site_key ) || empty( $secret_key ) ) {
|
73 |
+
wp_send_json_error();
|
74 |
+
}
|
75 |
+
|
76 |
+
$locale = get_locale();
|
77 |
+
$locale_a = explode( '_', $locale );
|
78 |
+
$locale = isset( $locale_a[0] ) ? $locale_a[0] : $locale;
|
79 |
+
$return = apply_filters( 'yikes_mailchimp_recaptcha_data', array(
|
80 |
+
'site_key' => $site_key,
|
81 |
+
'secret_key' => $secret_key,
|
82 |
+
'locale' => $locale,
|
83 |
+
));
|
84 |
+
|
85 |
+
wp_send_json_success( $return );
|
86 |
+
}
|
87 |
+
|
88 |
+
wp_send_json_error();
|
89 |
+
}
|
90 |
+
}
|
blocks/blocks.php
CHANGED
@@ -1,172 +1,56 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
}
|
7 |
|
8 |
-
|
9 |
-
|
10 |
-
|
|
|
11 |
|
12 |
-
|
13 |
|
|
|
|
|
|
|
14 |
public function __construct() {
|
15 |
-
|
16 |
-
|
17 |
-
add_action( 'wp_ajax_yikes_get_forms', array( $this, 'get_forms' ) );
|
18 |
-
add_action( 'wp_ajax_yikes_get_form', array( $this, 'get_form' ) );
|
19 |
-
add_action( 'wp_ajax_yikes_get_recaptcha', array( $this, 'get_recaptcha' ) );
|
20 |
-
add_action( 'enqueue_block_editor_assets', array( $this, 'gutenberg_scripts' ) );
|
21 |
-
|
22 |
-
// Front end
|
23 |
-
add_action( 'init', array( $this, 'register_easy_forms_block' ) );
|
24 |
}
|
25 |
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
'
|
37 |
-
|
38 |
-
'change_month' => false,
|
39 |
-
'change_year' => false,
|
40 |
-
'min_date' => null,
|
41 |
-
'max_date' => null,
|
42 |
-
'default_date' => null,
|
43 |
-
'number_of_months' => 1,
|
44 |
-
'show_other_months' => false,
|
45 |
-
'select_other_months' => null,
|
46 |
-
'show_anim' => '',
|
47 |
-
'show_button_panel' => false,
|
48 |
-
);
|
49 |
-
|
50 |
-
wp_register_script( 'yikes-datepicker-scripts', YIKES_MC_URL . 'public/js/yikes-datepicker-scripts.min.js', array( 'jquery-ui-datepicker' ), YIKES_MC_VERSION, false );
|
51 |
-
wp_localize_script( 'yikes-datepicker-scripts', 'datepicker_settings', $datepicker_options );
|
52 |
-
wp_enqueue_script( 'yikes-datepicker-scripts' );
|
53 |
-
wp_enqueue_style( 'jquery-datepicker-styles' , YIKES_MC_URL . 'public/css/jquery-ui.min.css' );
|
54 |
-
wp_enqueue_style( 'yikes-datepicker-styles' , YIKES_MC_URL . 'public/css/yikes-datepicker-styles.min.css' );
|
55 |
-
|
56 |
-
wp_register_script( 'yikes-easy-forms-blocks', YIKES_MC_URL . 'blocks/release/blocks.js', array( 'wp-i18n', 'wp-element', 'wp-blocks', 'wp-components', 'wp-api' ), filemtime( plugin_dir_path( __FILE__ ) . 'release/blocks.js' ) );
|
57 |
-
wp_localize_script( 'yikes-easy-forms-blocks', 'ez_forms_gb_data', array(
|
58 |
-
'ajax_url' => esc_url_raw( admin_url( 'admin-ajax.php' ) ),
|
59 |
-
'fetch_form_nonce' => wp_create_nonce( 'fetch_form_nonce' ),
|
60 |
-
'fetch_forms_nonce' => wp_create_nonce( 'fetch_forms_nonce' ),
|
61 |
-
'fetch_recaptcha_nonce' => wp_create_nonce( 'fetch_recaptcha_nonce' ),
|
62 |
-
) );
|
63 |
-
wp_enqueue_script( 'yikes-easy-forms-blocks' );
|
64 |
-
|
65 |
-
wp_enqueue_script( 'yikes-google-recaptcha', 'https://www.google.com/recaptcha/api.js', array( 'jquery' ) );
|
66 |
-
|
67 |
-
if ( ! defined( 'YIKES_MAILCHIMP_EXCLUDE_STYLES' ) ) {
|
68 |
-
wp_enqueue_style( 'yikes-inc-easy-mailchimp-public-styles', YIKES_MC_URL . 'public/css/yikes-inc-easy-mailchimp-extender-public.min.css' );
|
69 |
-
}
|
70 |
-
|
71 |
-
// wp_enqueue_style( 'yikes-easy-forms-block-admin-css', YIKES_MC_URL . 'blocks/release/blocks.css' );
|
72 |
}
|
73 |
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
$all_forms = $form_interface->get_all_forms();
|
85 |
-
|
86 |
-
wp_send_json_success( array_values( $all_forms ) );
|
87 |
-
}
|
88 |
-
|
89 |
-
public function get_form() {
|
90 |
-
|
91 |
-
// Verify Nonce
|
92 |
-
if ( ! check_ajax_referer( 'fetch_form_nonce', 'nonce', false ) ) {
|
93 |
-
wp_send_json_error( '1' );
|
94 |
-
}
|
95 |
-
|
96 |
-
$form_id = isset( $_POST['form_id'] ) ? $_POST['form_id'] : '';
|
97 |
-
|
98 |
-
if ( empty( $form_id ) ) {
|
99 |
-
wp_send_json_error( '1' );
|
100 |
-
}
|
101 |
-
|
102 |
-
$form_interface = yikes_easy_mailchimp_extender_get_form_interface();
|
103 |
-
|
104 |
-
$form = $form_interface->get_form( $form_id );
|
105 |
-
|
106 |
-
wp_send_json_success( $form );
|
107 |
-
}
|
108 |
-
|
109 |
-
public function get_recaptcha() {
|
110 |
-
|
111 |
-
// Verify Nonce
|
112 |
-
if ( ! check_ajax_referer( 'fetch_recaptcha_nonce', 'nonce', false ) ) {
|
113 |
-
wp_send_json_error( '1' );
|
114 |
-
}
|
115 |
-
|
116 |
-
if ( get_option( 'yikes-mc-recaptcha-status' , '' ) == '1' ) {
|
117 |
-
|
118 |
-
$site_key = get_option( 'yikes-mc-recaptcha-site-key' , '' );
|
119 |
-
$secret_key = get_option( 'yikes-mc-recaptcha-secret-key' , '' );
|
120 |
-
|
121 |
-
// If either of the Private the Secret key is left blank, we should display an error back to the user
|
122 |
-
if ( empty( $site_key ) || empty( $secret_key ) ) {
|
123 |
-
wp_send_json_error();
|
124 |
-
}
|
125 |
-
|
126 |
-
$locale = get_locale();
|
127 |
-
$locale_a = explode( '_', $locale );
|
128 |
-
$locale = isset( $locale_a[0] ) ? $locale_a[0] : $locale;
|
129 |
-
|
130 |
-
wp_send_json_success( array( 'site_key' => $site_key, 'secret_key' => $secret_key, 'locale' => $locale ) );
|
131 |
-
}
|
132 |
-
|
133 |
-
wp_send_json_error();
|
134 |
-
}
|
135 |
-
|
136 |
-
public function register_easy_forms_block() {
|
137 |
-
|
138 |
-
// Hook server side rendering into render callback
|
139 |
-
register_block_type( 'yikes-inc-easy-forms/easy-forms-block', array(
|
140 |
-
'render_callback' => array( $this, 'render_easy_forms_block' ),
|
141 |
-
) );
|
142 |
-
}
|
143 |
-
|
144 |
-
public function render_easy_forms_block( $attributes ) {
|
145 |
-
|
146 |
-
// Prevent this from being run when in the admin/saving the block.
|
147 |
-
// I'm not sure why this would run when we're saving a block but it is definitely being called.
|
148 |
-
if ( is_admin() || isset( $_POST['status'] ) && $_POST['status'] === 'publish' ) {
|
149 |
-
return null;
|
150 |
-
}
|
151 |
-
|
152 |
-
$shortcode_attributes = array(
|
153 |
-
'form' => $attributes['form_id'],
|
154 |
-
'submit' => isset( $attributes['submit_button_text'] ) && ! empty( $attributes['submit_button_text'] ) ? $attributes['submit_button_text'] : '',
|
155 |
-
'title' => isset( $attributes['show_title'] ) && $attributes['show_title'] === true ? '1' : '0',
|
156 |
-
'custom_title' => isset( $attributes['form_title'] ) ? $attributes['form_title'] : '',
|
157 |
-
'description' => isset( $attributes['show_description'] ) && $attributes['show_description'] === true ? '1' : '0',
|
158 |
-
'custom_description' => isset( $attributes['form_description'] ) ? $attributes['form_description'] : '',
|
159 |
-
'ajax' => isset( $attributes['is_ajax'] ) && $attributes['is_ajax'] === true ? '1' : '0',
|
160 |
-
'recaptcha' => isset( $attributes['recaptcha'] ) && $attributes['recaptcha'] === false ? '0' : '',
|
161 |
-
'recaptcha_lang' => isset( $attributes['recaptcha_lang'] ) ? $attributes['recaptcha_lang'] : '',
|
162 |
-
'recaptcha_type' => isset( $attributes['recaptcha_type'] ) ? $attributes['recaptcha_type'] : '',
|
163 |
-
'recaptcha_theme' => isset( $attributes['recaptcha_theme'] ) ? $attributes['recaptcha_theme'] : '',
|
164 |
-
'recaptcha_size' => isset( $attributes['recaptcha_size'] ) ? $attributes['recaptcha_size'] : '',
|
165 |
-
'recaptcha_data_callback' => isset( $attributes['recaptcha_verify_callback'] ) ? $attributes['recaptcha_verify_callback'] : '',
|
166 |
-
'recaptcha_expired_callback' => isset( $attributes['recaptcha_expired_callback'] ) ? $attributes['recaptcha_expired_callback'] : '',
|
167 |
-
'inline' => isset( $attributes['inline'] ) && $attributes['inline'] === true ? '1' : '0',
|
168 |
-
);
|
169 |
-
|
170 |
-
return process_mailchimp_shortcode( $shortcode_attributes );
|
171 |
-
}
|
172 |
-
}
|
1 |
<?php
|
2 |
+
add_action( 'init', 'yikes_maybe_activate_blocks' );
|
3 |
+
|
4 |
+
/**
|
5 |
+
* If Gutenberg is active, activate our blocks.
|
6 |
+
*
|
7 |
+
* We check if Gutenberg is active by looking for the existence of the `gutenberg_init()` function.
|
8 |
+
*/
|
9 |
+
function yikes_maybe_activate_blocks() {
|
10 |
+
include ABSPATH . WPINC . '/version.php';
|
11 |
+
if ( function_exists( 'gutenberg_init' ) || isset( $wp_version ) && version_compare( $wp_version, '5.0.0', '>=' ) ) {
|
12 |
+
require_once YIKES_MC_PATH . 'blocks/api/api.php';
|
13 |
+
require_once YIKES_MC_PATH . 'blocks/easy-forms-block/easy-forms-block.php';
|
14 |
+
$yikes_easy_form_block = new YIKES_Easy_Form_Block();
|
15 |
+
$yikes_easy_form_blocks_api = new YIKES_Easy_Forms_Blocks_API();
|
16 |
+
}
|
17 |
}
|
18 |
|
19 |
+
/**
|
20 |
+
* Class YIKES_Easy_Forms_Blocks.
|
21 |
+
*/
|
22 |
+
abstract class YIKES_Easy_Forms_Blocks {
|
23 |
|
24 |
+
const BLOCK_NAMESPACE = 'yikes-inc-easy-forms/';
|
25 |
|
26 |
+
/**
|
27 |
+
* Register our hooks.
|
28 |
+
*/
|
29 |
public function __construct() {
|
30 |
+
add_action( 'enqueue_block_editor_assets', array( $this, 'editor_scripts' ) );
|
31 |
+
add_action( 'init', array( $this, 'register_blocks' ), 11 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
}
|
33 |
|
34 |
+
/**
|
35 |
+
* Enqueue our scripts.
|
36 |
+
*/
|
37 |
+
abstract public function editor_scripts();
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Register our Easy Forms block callback.
|
41 |
+
*/
|
42 |
+
public function register_blocks() {
|
43 |
+
register_block_type( static::BLOCK_NAMESPACE . static::BLOCK, array(
|
44 |
+
'render_callback' => array( $this, 'render_block' ),
|
45 |
+
));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
}
|
47 |
|
48 |
+
/**
|
49 |
+
* Take the shortcode parameters from the Gutenberg block and render our shortcode.
|
50 |
+
*
|
51 |
+
* @param array $attributes Block attributes.
|
52 |
+
* @param string $content Block content.
|
53 |
+
* @return string Block output.
|
54 |
+
*/
|
55 |
+
abstract public function render_block( $attributes, $content );
|
56 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
blocks/{development/form/js → components}/class.MailChimpForms.js
RENAMED
@@ -14,7 +14,8 @@ import locales from './locales.js';
|
|
14 |
// Get functions / blocks / components
|
15 |
const Recaptcha = require( 'react-recaptcha' );
|
16 |
const { __ } = wp.i18n;
|
17 |
-
const { registerBlockType
|
|
|
18 |
const { Spinner, TextControl, PanelBody, PanelRow, FormToggle, SelectControl } = wp.components;
|
19 |
const { Component } = wp.element;
|
20 |
|
@@ -24,28 +25,33 @@ export default class MailChimpForms extends Component {
|
|
24 |
this.state = {
|
25 |
forms : [],
|
26 |
recaptcha_data: {
|
27 |
-
data: {},
|
28 |
success: false
|
29 |
}
|
30 |
}
|
31 |
|
32 |
this.address_fields = {
|
33 |
-
'addr1': 'Address 1',
|
34 |
-
'addr2': 'Address 2',
|
35 |
-
'city'
|
36 |
-
'state': 'State',
|
37 |
-
'zip'
|
38 |
'country': 'Country'
|
39 |
}
|
|
|
40 |
|
|
|
|
|
|
|
|
|
41 |
yikes_easy_forms_fetch_forms()
|
42 |
.then( forms => {
|
43 |
-
|
44 |
});
|
45 |
|
46 |
get_recaptcha()
|
47 |
.then( recaptcha_data => {
|
48 |
-
|
49 |
});
|
50 |
}
|
51 |
|
@@ -476,11 +482,11 @@ export default class MailChimpForms extends Component {
|
|
476 |
type='text'
|
477 |
value={ field.default }
|
478 |
name={ field.merge }
|
479 |
-
className={ 'yikes-easy-mc-' + field.type + '
|
480 |
key= { 'yikes-mailchimp-field-' + field.merge }
|
481 |
required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }
|
482 |
data-attr-type={ field.type }
|
483 |
-
data-date-format={ field.date_format }
|
484 |
/>
|
485 |
)
|
486 |
}
|
@@ -526,7 +532,7 @@ export default class MailChimpForms extends Component {
|
|
526 |
return (
|
527 |
<label
|
528 |
htmlFor={ field.group_id + '-' + ii }
|
529 |
-
className={
|
530 |
key={ field.group_id + '-' + ii + '-label-key' }
|
531 |
>
|
532 |
<input
|
@@ -547,7 +553,7 @@ export default class MailChimpForms extends Component {
|
|
547 |
|
548 |
get_checkboxes_interest_group( field ) {
|
549 |
var ii = -1;
|
550 |
-
var cn =
|
551 |
|
552 |
return (
|
553 |
Object.keys( JSON.parse( field.groups ) ).map( ( key ) => {
|
@@ -562,12 +568,12 @@ export default class MailChimpForms extends Component {
|
|
562 |
<input
|
563 |
className={ { 'yikes-interest-group-required': field.require === '1' } }
|
564 |
type="checkbox"
|
565 |
-
name={
|
566 |
id={ field.group_id + '-' + ii }
|
567 |
key={ field.group_id + '-' + ii + '-input-key' }
|
568 |
value={ key }
|
569 |
onChange={ this.handleFormFieldChanges }
|
570 |
-
checked={ field.default_choice.indexOf( key ) !== -1 }
|
571 |
required={ field.require === '1' ? 'required' : false }
|
572 |
/>
|
573 |
{ choice }
|
14 |
// Get functions / blocks / components
|
15 |
const Recaptcha = require( 'react-recaptcha' );
|
16 |
const { __ } = wp.i18n;
|
17 |
+
const { registerBlockType } = wp.blocks;
|
18 |
+
const { RichText, InspectorControls, PlainText } = wp.editor;
|
19 |
const { Spinner, TextControl, PanelBody, PanelRow, FormToggle, SelectControl } = wp.components;
|
20 |
const { Component } = wp.element;
|
21 |
|
25 |
this.state = {
|
26 |
forms : [],
|
27 |
recaptcha_data: {
|
28 |
+
data : {},
|
29 |
success: false
|
30 |
}
|
31 |
}
|
32 |
|
33 |
this.address_fields = {
|
34 |
+
'addr1' : 'Address 1',
|
35 |
+
'addr2' : 'Address 2',
|
36 |
+
'city' : 'City',
|
37 |
+
'state' : 'State',
|
38 |
+
'zip' : 'Zip',
|
39 |
'country': 'Country'
|
40 |
}
|
41 |
+
}
|
42 |
|
43 |
+
/**
|
44 |
+
* Run our API calls after the component has mounted. You can't use setState before a component is mounted.
|
45 |
+
*/
|
46 |
+
componentDidMount() {
|
47 |
yikes_easy_forms_fetch_forms()
|
48 |
.then( forms => {
|
49 |
+
this.setState( { forms: forms.data } );
|
50 |
});
|
51 |
|
52 |
get_recaptcha()
|
53 |
.then( recaptcha_data => {
|
54 |
+
this.setState( { recaptcha_data: recaptcha_data } );
|
55 |
});
|
56 |
}
|
57 |
|
482 |
type='text'
|
483 |
value={ field.default }
|
484 |
name={ field.merge }
|
485 |
+
className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }
|
486 |
key= { 'yikes-mailchimp-field-' + field.merge }
|
487 |
required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }
|
488 |
data-attr-type={ field.type }
|
489 |
+
data-date-format={ field.date_format.toLowerCase() }
|
490 |
/>
|
491 |
)
|
492 |
}
|
532 |
return (
|
533 |
<label
|
534 |
htmlFor={ field.group_id + '-' + ii }
|
535 |
+
className={ 'yikes-easy-mc-checkbox-label ' + field['additional-classes'] }
|
536 |
key={ field.group_id + '-' + ii + '-label-key' }
|
537 |
>
|
538 |
<input
|
553 |
|
554 |
get_checkboxes_interest_group( field ) {
|
555 |
var ii = -1;
|
556 |
+
var cn = 'yikes-easy-mc-checkbox-label ' + field['additional-classes'];
|
557 |
|
558 |
return (
|
559 |
Object.keys( JSON.parse( field.groups ) ).map( ( key ) => {
|
568 |
<input
|
569 |
className={ { 'yikes-interest-group-required': field.require === '1' } }
|
570 |
type="checkbox"
|
571 |
+
name={ 'group-' + field.group_id + '[]' }
|
572 |
id={ field.group_id + '-' + ii }
|
573 |
key={ field.group_id + '-' + ii + '-input-key' }
|
574 |
value={ key }
|
575 |
onChange={ this.handleFormFieldChanges }
|
576 |
+
checked={ typeof field.default_choice !== 'undefined' && field.default_choice.indexOf( key ) !== -1 }
|
577 |
required={ field.require === '1' ? 'required' : false }
|
578 |
/>
|
579 |
{ choice }
|
blocks/{development/form/js → components}/countries.js
RENAMED
File without changes
|
blocks/{development/form/js → components}/enable-submit-button-editing.js
RENAMED
File without changes
|
blocks/{development/form/js → components}/get-form.js
RENAMED
File without changes
|
blocks/{development/form/js → components}/get-forms.js
RENAMED
File without changes
|
blocks/{development/form/js → components}/get-recaptcha.js
RENAMED
File without changes
|
blocks/{development/form/js → components}/locales.js
RENAMED
File without changes
|
blocks/{development/form/js → components}/slugify.js
RENAMED
File without changes
|
blocks/{development/form/js → components}/states.js
RENAMED
File without changes
|
blocks/development/form/js/block-form.js
DELETED
@@ -1,211 +0,0 @@
|
|
1 |
-
import yikes_easy_forms_fetch_form from './get-form.js'
|
2 |
-
|
3 |
-
import MailChimpForms from './class.MailChimpForms.js';
|
4 |
-
|
5 |
-
import '../css/blocks.scss'
|
6 |
-
|
7 |
-
require( './enable-submit-button-editing.js' );
|
8 |
-
|
9 |
-
// Get just the __() localization function from wp.i18n
|
10 |
-
const { __ } = wp.i18n;
|
11 |
-
|
12 |
-
// Get registerBlockType and other methods from wp.blocks
|
13 |
-
const { registerBlockType } = wp.blocks;
|
14 |
-
|
15 |
-
const edit_easy_form = function( props ) {
|
16 |
-
|
17 |
-
const onChangeForm = ( event ) => {
|
18 |
-
props.setAttributes( { form_id: event.target.value } );
|
19 |
-
|
20 |
-
if ( event.target.value.length > 0 ) {
|
21 |
-
yikes_easy_forms_fetch_form( event.target.value ).then( function( form ) {
|
22 |
-
props.setAttributes( { form: form.data } );
|
23 |
-
props.setAttributes( { form_description: form.data.form_description } );
|
24 |
-
props.setAttributes( { form_title: form.data.form_name } );
|
25 |
-
props.setAttributes( { is_ajax: form.data.submission_settings.ajax === '1' } );
|
26 |
-
props.setAttributes( { submit_button_text: form.data.form_settings['yikes-easy-mc-submit-button-text'] } );
|
27 |
-
});
|
28 |
-
}
|
29 |
-
};
|
30 |
-
|
31 |
-
const onChangeDescription = ( value ) => {
|
32 |
-
props.setAttributes( { form_description: value } );
|
33 |
-
};
|
34 |
-
|
35 |
-
const toggleShowDescription = ( event ) => {
|
36 |
-
props.setAttributes( { show_description: !! event.target.checked } );
|
37 |
-
}
|
38 |
-
|
39 |
-
const toggleInline = ( event ) => {
|
40 |
-
props.setAttributes( { inline: !! event.target.checked } );
|
41 |
-
}
|
42 |
-
|
43 |
-
const toggleShowTitle = ( event ) => {
|
44 |
-
props.setAttributes( { show_title: !! event.target.checked } );
|
45 |
-
}
|
46 |
-
|
47 |
-
const toggleFormTitle = ( value ) => {
|
48 |
-
props.setAttributes( { form_title: value } );
|
49 |
-
}
|
50 |
-
|
51 |
-
const toggleIsAjax = ( event ) => {
|
52 |
-
props.setAttributes( { is_ajax: !! event.target.checked } );
|
53 |
-
}
|
54 |
-
|
55 |
-
const toggleRecaptcha = ( event ) => {
|
56 |
-
props.setAttributes( { recaptcha: !! event.target.checked } );
|
57 |
-
}
|
58 |
-
|
59 |
-
const toggleRecaptchaTheme = ( value ) => {
|
60 |
-
props.setAttributes( { recaptcha_theme: value } );
|
61 |
-
}
|
62 |
-
|
63 |
-
const toggleRecaptchaLang = ( value ) => {
|
64 |
-
props.setAttributes( { recaptcha_lang: value } );
|
65 |
-
}
|
66 |
-
|
67 |
-
const toggleRecaptchaType = ( value ) => {
|
68 |
-
props.setAttributes( { recaptcha_type: value } );
|
69 |
-
}
|
70 |
-
|
71 |
-
const toggleRecaptchaSize = ( value ) => {
|
72 |
-
props.setAttributes( { recaptcha_size: value } );
|
73 |
-
}
|
74 |
-
|
75 |
-
const toggleRecaptchaVerifyCallback = ( value ) => {
|
76 |
-
props.setAttributes( { recaptcha_verify_callback: value } );
|
77 |
-
}
|
78 |
-
|
79 |
-
const toggleRecaptchaExpiredCallback = ( value ) => {
|
80 |
-
props.setAttributes( { recaptcha_expired_callback: value } );
|
81 |
-
}
|
82 |
-
|
83 |
-
const toggleSubmitButtonText = ( value ) => {
|
84 |
-
props.setAttributes( { submit_button_text: value })
|
85 |
-
}
|
86 |
-
|
87 |
-
return (
|
88 |
-
<MailChimpForms
|
89 |
-
className={ props.className }
|
90 |
-
onChangeForm={ onChangeForm }
|
91 |
-
formID={ props.attributes.form_id }
|
92 |
-
formData={ props.attributes.form }
|
93 |
-
onChangeDescription={ onChangeDescription }
|
94 |
-
descriptionValue={ props.attributes.form_description }
|
95 |
-
showDescription={ props.attributes.show_description }
|
96 |
-
toggleShowDescription={ toggleShowDescription }
|
97 |
-
focus={ !! props.isSelected }
|
98 |
-
inline={ props.attributes.inline }
|
99 |
-
toggleInline={ toggleInline }
|
100 |
-
formTitle={ props.attributes.form_title }
|
101 |
-
toggleFormTitle={ toggleFormTitle }
|
102 |
-
showTitle={ props.attributes.show_title }
|
103 |
-
toggleShowTitle={ toggleShowTitle }
|
104 |
-
isAjax={ props.attributes.is_ajax }
|
105 |
-
toggleIsAjax={ toggleIsAjax }
|
106 |
-
recaptcha={ props.attributes.recaptcha }
|
107 |
-
toggleRecaptcha={ toggleRecaptcha }
|
108 |
-
recaptchaTheme={ props.attributes.recaptcha_theme }
|
109 |
-
toggleRecaptchaTheme={ toggleRecaptchaTheme }
|
110 |
-
recaptchaLang={ props.attributes.recaptcha_lang }
|
111 |
-
toggleRecaptchaLang={ toggleRecaptchaLang }
|
112 |
-
recaptchaType={ props.attributes.recaptcha_type }
|
113 |
-
toggleRecaptchaType={ toggleRecaptchaType }
|
114 |
-
recaptchaSize={ props.attributes.recaptcha_size }
|
115 |
-
toggleRecaptchaSize={ toggleRecaptchaSize }
|
116 |
-
recaptchaVerifyCallback={ props.attributes.recaptcha_verify_callback }
|
117 |
-
toggleRecaptchaVerifyCallback={ toggleRecaptchaVerifyCallback }
|
118 |
-
recaptchaExpiredCallback={ props.attributes.recaptcha_expired_callback }
|
119 |
-
toggleRecaptchaExpiredCallback={ toggleRecaptchaExpiredCallback }
|
120 |
-
submitButtonText={ props.attributes.submit_button_text }
|
121 |
-
toggleSubmitButtonText={ toggleSubmitButtonText }
|
122 |
-
/>
|
123 |
-
);
|
124 |
-
|
125 |
-
}
|
126 |
-
|
127 |
-
const save_easy_form = function( props ) {
|
128 |
-
return null;
|
129 |
-
}
|
130 |
-
|
131 |
-
const settings = {
|
132 |
-
title : __( 'Easy Forms for MailChimp' ),
|
133 |
-
category : 'common', // Options include "common", "formatting", "layout", "widgets" and "embed."
|
134 |
-
icon : 'email-alt',
|
135 |
-
keywords : ['mailchimp', 'easy forms for mailchimp', 'yikes'],
|
136 |
-
attributes: {
|
137 |
-
form_id: {
|
138 |
-
type: 'number'
|
139 |
-
},
|
140 |
-
form: {
|
141 |
-
type: 'object'
|
142 |
-
},
|
143 |
-
form_description: {
|
144 |
-
type: 'string',
|
145 |
-
default: ''
|
146 |
-
},
|
147 |
-
show_description: {
|
148 |
-
type: 'boolean',
|
149 |
-
default: false
|
150 |
-
},
|
151 |
-
inline: {
|
152 |
-
type: 'boolean',
|
153 |
-
default: false
|
154 |
-
},
|
155 |
-
show_title: {
|
156 |
-
type: 'boolean',
|
157 |
-
default: false
|
158 |
-
},
|
159 |
-
form_title: {
|
160 |
-
type: 'string',
|
161 |
-
default: ''
|
162 |
-
},
|
163 |
-
is_ajax: {
|
164 |
-
type: 'boolean',
|
165 |
-
default: true,
|
166 |
-
},
|
167 |
-
recaptcha: {
|
168 |
-
type: 'boolean',
|
169 |
-
default: true,
|
170 |
-
},
|
171 |
-
recaptcha_theme: {
|
172 |
-
type: 'string',
|
173 |
-
default: 'light'
|
174 |
-
},
|
175 |
-
recaptcha_lang: {
|
176 |
-
type: 'string',
|
177 |
-
default: ''
|
178 |
-
},
|
179 |
-
recaptcha_type: {
|
180 |
-
type: 'string',
|
181 |
-
default: 'image'
|
182 |
-
},
|
183 |
-
recaptcha_size: {
|
184 |
-
type: 'string',
|
185 |
-
default: 'normal'
|
186 |
-
},
|
187 |
-
recaptcha_verify_callback: {
|
188 |
-
type: 'string',
|
189 |
-
default: ''
|
190 |
-
},
|
191 |
-
recaptcha_expired_callback: {
|
192 |
-
type: 'string',
|
193 |
-
default: ''
|
194 |
-
},
|
195 |
-
submit_button_text: {
|
196 |
-
type: 'string',
|
197 |
-
default: ''
|
198 |
-
}
|
199 |
-
},
|
200 |
-
edit: edit_easy_form,
|
201 |
-
save: save_easy_form,
|
202 |
-
}
|
203 |
-
|
204 |
-
const EasyFormsBlock = registerBlockType(
|
205 |
-
|
206 |
-
// Name
|
207 |
-
'yikes-inc-easy-forms/easy-forms-block',
|
208 |
-
|
209 |
-
// Settings
|
210 |
-
settings
|
211 |
-
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
blocks/easy-forms-block/dev-easy-forms-block.js
ADDED
@@ -0,0 +1,212 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import yikes_easy_forms_fetch_form from '../components/get-form.js'
|
2 |
+
|
3 |
+
import MailChimpForms from '../components/class.MailChimpForms.js';
|
4 |
+
|
5 |
+
import './easy-forms-block.scss'
|
6 |
+
|
7 |
+
require( '../components/enable-submit-button-editing.js' );
|
8 |
+
|
9 |
+
// Get just the __() localization function from wp.i18n
|
10 |
+
const { __ } = wp.i18n;
|
11 |
+
|
12 |
+
// Get registerBlockType and other methods from wp.blocks
|
13 |
+
const { registerBlockType } = wp.blocks;
|
14 |
+
|
15 |
+
const edit_easy_form = function( props ) {
|
16 |
+
|
17 |
+
const onChangeForm = ( event ) => {
|
18 |
+
props.setAttributes( { form_id: event.target.value } );
|
19 |
+
|
20 |
+
if ( event.target.value.length > 0 ) {
|
21 |
+
yikes_easy_forms_fetch_form( event.target.value ).then( function( form ) {
|
22 |
+
props.setAttributes( { form: form.data } );
|
23 |
+
props.setAttributes( { form_description: form.data.form_description } );
|
24 |
+
props.setAttributes( { form_title: form.data.form_name } );
|
25 |
+
props.setAttributes( { is_ajax: form.data.submission_settings.ajax === '1' } );
|
26 |
+
props.setAttributes( { submit_button_text: form.data.form_settings['yikes-easy-mc-submit-button-text'] } );
|
27 |
+
});
|
28 |
+
}
|
29 |
+
};
|
30 |
+
|
31 |
+
const onChangeDescription = ( value ) => {
|
32 |
+
props.setAttributes( { form_description: value } );
|
33 |
+
};
|
34 |
+
|
35 |
+
const toggleShowDescription = ( event ) => {
|
36 |
+
props.setAttributes( { show_description: !! event.target.checked } );
|
37 |
+
}
|
38 |
+
|
39 |
+
const toggleInline = ( event ) => {
|
40 |
+
props.setAttributes( { inline: !! event.target.checked } );
|
41 |
+
}
|
42 |
+
|
43 |
+
const toggleShowTitle = ( event ) => {
|
44 |
+
props.setAttributes( { show_title: !! event.target.checked } );
|
45 |
+
}
|
46 |
+
|
47 |
+
const toggleFormTitle = ( value ) => {
|
48 |
+
props.setAttributes( { form_title: value } );
|
49 |
+
}
|
50 |
+
|
51 |
+
const toggleIsAjax = ( event ) => {
|
52 |
+
props.setAttributes( { is_ajax: !! event.target.checked } );
|
53 |
+
}
|
54 |
+
|
55 |
+
const toggleRecaptcha = ( event ) => {
|
56 |
+
props.setAttributes( { recaptcha: !! event.target.checked } );
|
57 |
+
}
|
58 |
+
|
59 |
+
const toggleRecaptchaTheme = ( value ) => {
|
60 |
+
props.setAttributes( { recaptcha_theme: value } );
|
61 |
+
}
|
62 |
+
|
63 |
+
const toggleRecaptchaLang = ( value ) => {
|
64 |
+
props.setAttributes( { recaptcha_lang: value } );
|
65 |
+
}
|
66 |
+
|
67 |
+
const toggleRecaptchaType = ( value ) => {
|
68 |
+
props.setAttributes( { recaptcha_type: value } );
|
69 |
+
}
|
70 |
+
|
71 |
+
const toggleRecaptchaSize = ( value ) => {
|
72 |
+
props.setAttributes( { recaptcha_size: value } );
|
73 |
+
}
|
74 |
+
|
75 |
+
const toggleRecaptchaVerifyCallback = ( value ) => {
|
76 |
+
props.setAttributes( { recaptcha_verify_callback: value } );
|
77 |
+
}
|
78 |
+
|
79 |
+
const toggleRecaptchaExpiredCallback = ( value ) => {
|
80 |
+
props.setAttributes( { recaptcha_expired_callback: value } );
|
81 |
+
}
|
82 |
+
|
83 |
+
const toggleSubmitButtonText = ( value ) => {
|
84 |
+
props.setAttributes( { submit_button_text: value })
|
85 |
+
}
|
86 |
+
|
87 |
+
return (
|
88 |
+
<MailChimpForms
|
89 |
+
className={ props.className }
|
90 |
+
onChangeForm={ onChangeForm }
|
91 |
+
formID={ props.attributes.form_id }
|
92 |
+
formData={ props.attributes.form }
|
93 |
+
onChangeDescription={ onChangeDescription }
|
94 |
+
descriptionValue={ props.attributes.form_description }
|
95 |
+
showDescription={ props.attributes.show_description }
|
96 |
+
toggleShowDescription={ toggleShowDescription }
|
97 |
+
focus={ !! props.isSelected }
|
98 |
+
inline={ props.attributes.inline }
|
99 |
+
toggleInline={ toggleInline }
|
100 |
+
formTitle={ props.attributes.form_title }
|
101 |
+
toggleFormTitle={ toggleFormTitle }
|
102 |
+
showTitle={ props.attributes.show_title }
|
103 |
+
toggleShowTitle={ toggleShowTitle }
|
104 |
+
isAjax={ props.attributes.is_ajax }
|
105 |
+
toggleIsAjax={ toggleIsAjax }
|
106 |
+
recaptcha={ props.attributes.recaptcha }
|
107 |
+
toggleRecaptcha={ toggleRecaptcha }
|
108 |
+
recaptchaTheme={ props.attributes.recaptcha_theme }
|
109 |
+
toggleRecaptchaTheme={ toggleRecaptchaTheme }
|
110 |
+
recaptchaLang={ props.attributes.recaptcha_lang }
|
111 |
+
toggleRecaptchaLang={ toggleRecaptchaLang }
|
112 |
+
recaptchaType={ props.attributes.recaptcha_type }
|
113 |
+
toggleRecaptchaType={ toggleRecaptchaType }
|
114 |
+
recaptchaSize={ props.attributes.recaptcha_size }
|
115 |
+
toggleRecaptchaSize={ toggleRecaptchaSize }
|
116 |
+
recaptchaVerifyCallback={ props.attributes.recaptcha_verify_callback }
|
117 |
+
toggleRecaptchaVerifyCallback={ toggleRecaptchaVerifyCallback }
|
118 |
+
recaptchaExpiredCallback={ props.attributes.recaptcha_expired_callback }
|
119 |
+
toggleRecaptchaExpiredCallback={ toggleRecaptchaExpiredCallback }
|
120 |
+
submitButtonText={ props.attributes.submit_button_text }
|
121 |
+
toggleSubmitButtonText={ toggleSubmitButtonText }
|
122 |
+
/>
|
123 |
+
);
|
124 |
+
|
125 |
+
}
|
126 |
+
|
127 |
+
const save_easy_form = function( props ) {
|
128 |
+
return null;
|
129 |
+
}
|
130 |
+
|
131 |
+
const settings = {
|
132 |
+
title : __( 'Easy Forms for MailChimp' ),
|
133 |
+
category : 'common', // Options include "common", "formatting", "layout", "widgets" and "embed."
|
134 |
+
icon : 'email-alt',
|
135 |
+
keywords : ['mailchimp', 'easy forms for mailchimp', 'yikes'],
|
136 |
+
attributes: {
|
137 |
+
form_id: {
|
138 |
+
type: 'string',
|
139 |
+
default: ''
|
140 |
+
},
|
141 |
+
form: {
|
142 |
+
type: 'object'
|
143 |
+
},
|
144 |
+
form_description: {
|
145 |
+
type: 'string',
|
146 |
+
default: ''
|
147 |
+
},
|
148 |
+
show_description: {
|
149 |
+
type: 'boolean',
|
150 |
+
default: false
|
151 |
+
},
|
152 |
+
inline: {
|
153 |
+
type: 'boolean',
|
154 |
+
default: false
|
155 |
+
},
|
156 |
+
show_title: {
|
157 |
+
type: 'boolean',
|
158 |
+
default: false
|
159 |
+
},
|
160 |
+
form_title: {
|
161 |
+
type: 'string',
|
162 |
+
default: ''
|
163 |
+
},
|
164 |
+
is_ajax: {
|
165 |
+
type: 'boolean',
|
166 |
+
default: true,
|
167 |
+
},
|
168 |
+
recaptcha: {
|
169 |
+
type: 'boolean',
|
170 |
+
default: true,
|
171 |
+
},
|
172 |
+
recaptcha_theme: {
|
173 |
+
type: 'string',
|
174 |
+
default: 'light'
|
175 |
+
},
|
176 |
+
recaptcha_lang: {
|
177 |
+
type: 'string',
|
178 |
+
default: ''
|
179 |
+
},
|
180 |
+
recaptcha_type: {
|
181 |
+
type: 'string',
|
182 |
+
default: 'image'
|
183 |
+
},
|
184 |
+
recaptcha_size: {
|
185 |
+
type: 'string',
|
186 |
+
default: 'normal'
|
187 |
+
},
|
188 |
+
recaptcha_verify_callback: {
|
189 |
+
type: 'string',
|
190 |
+
default: ''
|
191 |
+
},
|
192 |
+
recaptcha_expired_callback: {
|
193 |
+
type: 'string',
|
194 |
+
default: ''
|
195 |
+
},
|
196 |
+
submit_button_text: {
|
197 |
+
type: 'string',
|
198 |
+
default: ''
|
199 |
+
}
|
200 |
+
},
|
201 |
+
edit: edit_easy_form,
|
202 |
+
save: save_easy_form,
|
203 |
+
}
|
204 |
+
|
205 |
+
const EasyFormsBlock = registerBlockType(
|
206 |
+
|
207 |
+
// Name
|
208 |
+
ez_forms_gb_data.block_namespace + ez_forms_gb_data.block_name,
|
209 |
+
|
210 |
+
// Settings
|
211 |
+
settings
|
212 |
+
);
|
blocks/{release/blocks.js → easy-forms-block/easy-forms-block.js}
RENAMED
@@ -71,272 +71,10 @@
|
|
71 |
/************************************************************************/
|
72 |
/******/ ({
|
73 |
|
74 |
-
/***/ "./blocks/
|
75 |
-
|
76 |
-
!*** ./blocks/
|
77 |
-
|
78 |
-
/*! no static exports found */
|
79 |
-
/***/ (function(module, exports, __webpack_require__) {
|
80 |
-
|
81 |
-
|
82 |
-
var content = __webpack_require__(/*! !../../../../node_modules/css-loader!../../../../node_modules/sass-loader/lib/loader.js!./blocks.scss */ "./node_modules/css-loader/index.js!./node_modules/sass-loader/lib/loader.js!./blocks/development/form/css/blocks.scss");
|
83 |
-
|
84 |
-
if(typeof content === 'string') content = [[module.i, content, '']];
|
85 |
-
|
86 |
-
var transform;
|
87 |
-
var insertInto;
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
var options = {"hmr":true}
|
92 |
-
|
93 |
-
options.transform = transform
|
94 |
-
options.insertInto = undefined;
|
95 |
-
|
96 |
-
var update = __webpack_require__(/*! ../../../../node_modules/style-loader/lib/addStyles.js */ "./node_modules/style-loader/lib/addStyles.js")(content, options);
|
97 |
-
|
98 |
-
if(content.locals) module.exports = content.locals;
|
99 |
-
|
100 |
-
if(false) {}
|
101 |
-
|
102 |
-
/***/ }),
|
103 |
-
|
104 |
-
/***/ "./blocks/development/form/js/block-form.js":
|
105 |
-
/*!**************************************************!*\
|
106 |
-
!*** ./blocks/development/form/js/block-form.js ***!
|
107 |
-
\**************************************************/
|
108 |
-
/*! no static exports found */
|
109 |
-
/***/ (function(module, exports, __webpack_require__) {
|
110 |
-
|
111 |
-
"use strict";
|
112 |
-
|
113 |
-
|
114 |
-
var _classnames = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");
|
115 |
-
|
116 |
-
var _classnames2 = _interopRequireDefault(_classnames);
|
117 |
-
|
118 |
-
var _getForm = __webpack_require__(/*! ./get-form.js */ "./blocks/development/form/js/get-form.js");
|
119 |
-
|
120 |
-
var _getForm2 = _interopRequireDefault(_getForm);
|
121 |
-
|
122 |
-
var _classMailChimpForms = __webpack_require__(/*! ./class.MailChimpForms.js */ "./blocks/development/form/js/class.MailChimpForms.js");
|
123 |
-
|
124 |
-
var _classMailChimpForms2 = _interopRequireDefault(_classMailChimpForms);
|
125 |
-
|
126 |
-
__webpack_require__(/*! ../css/blocks.scss */ "./blocks/development/form/css/blocks.scss");
|
127 |
-
|
128 |
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
129 |
-
|
130 |
-
__webpack_require__(/*! ./enable-submit-button-editing.js */ "./blocks/development/form/js/enable-submit-button-editing.js");
|
131 |
-
|
132 |
-
// Get just the __() localization function from wp.i18n
|
133 |
-
var __ = wp.i18n.__;
|
134 |
-
|
135 |
-
// Get registerBlockType and other methods from wp.blocks
|
136 |
-
|
137 |
-
var registerBlockType = wp.blocks.registerBlockType;
|
138 |
-
|
139 |
-
|
140 |
-
var edit_easy_form = function edit_easy_form(props) {
|
141 |
-
|
142 |
-
var onChangeForm = function onChangeForm(event) {
|
143 |
-
props.setAttributes({ form_id: event.target.value });
|
144 |
-
|
145 |
-
if (event.target.value.length > 0) {
|
146 |
-
(0, _getForm2.default)(event.target.value).then(function (form) {
|
147 |
-
props.setAttributes({ form: form.data });
|
148 |
-
props.setAttributes({ form_description: form.data.form_description });
|
149 |
-
props.setAttributes({ form_title: form.data.form_name });
|
150 |
-
props.setAttributes({ is_ajax: form.data.submission_settings.ajax === '1' });
|
151 |
-
props.setAttributes({ submit_button_text: form.data.form_settings['yikes-easy-mc-submit-button-text'] });
|
152 |
-
});
|
153 |
-
}
|
154 |
-
};
|
155 |
-
|
156 |
-
var onChangeDescription = function onChangeDescription(value) {
|
157 |
-
props.setAttributes({ form_description: value });
|
158 |
-
};
|
159 |
-
|
160 |
-
var toggleShowDescription = function toggleShowDescription(event) {
|
161 |
-
props.setAttributes({ show_description: !!event.target.checked });
|
162 |
-
};
|
163 |
-
|
164 |
-
var toggleInline = function toggleInline(event) {
|
165 |
-
props.setAttributes({ inline: !!event.target.checked });
|
166 |
-
};
|
167 |
-
|
168 |
-
var toggleShowTitle = function toggleShowTitle(event) {
|
169 |
-
props.setAttributes({ show_title: !!event.target.checked });
|
170 |
-
};
|
171 |
-
|
172 |
-
var toggleFormTitle = function toggleFormTitle(value) {
|
173 |
-
props.setAttributes({ form_title: value });
|
174 |
-
};
|
175 |
-
|
176 |
-
var toggleIsAjax = function toggleIsAjax(event) {
|
177 |
-
props.setAttributes({ is_ajax: !!event.target.checked });
|
178 |
-
};
|
179 |
-
|
180 |
-
var toggleRecaptcha = function toggleRecaptcha(event) {
|
181 |
-
props.setAttributes({ recaptcha: !!event.target.checked });
|
182 |
-
};
|
183 |
-
|
184 |
-
var toggleRecaptchaTheme = function toggleRecaptchaTheme(value) {
|
185 |
-
props.setAttributes({ recaptcha_theme: value });
|
186 |
-
};
|
187 |
-
|
188 |
-
var toggleRecaptchaLang = function toggleRecaptchaLang(value) {
|
189 |
-
props.setAttributes({ recaptcha_lang: value });
|
190 |
-
};
|
191 |
-
|
192 |
-
var toggleRecaptchaType = function toggleRecaptchaType(value) {
|
193 |
-
props.setAttributes({ recaptcha_type: value });
|
194 |
-
};
|
195 |
-
|
196 |
-
var toggleRecaptchaSize = function toggleRecaptchaSize(value) {
|
197 |
-
props.setAttributes({ recaptcha_size: value });
|
198 |
-
};
|
199 |
-
|
200 |
-
var toggleRecaptchaVerifyCallback = function toggleRecaptchaVerifyCallback(value) {
|
201 |
-
props.setAttributes({ recaptcha_verify_callback: value });
|
202 |
-
};
|
203 |
-
|
204 |
-
var toggleRecaptchaExpiredCallback = function toggleRecaptchaExpiredCallback(value) {
|
205 |
-
props.setAttributes({ recaptcha_expired_callback: value });
|
206 |
-
};
|
207 |
-
|
208 |
-
var toggleSubmitButtonText = function toggleSubmitButtonText(value) {
|
209 |
-
props.setAttributes({ submit_button_text: value });
|
210 |
-
};
|
211 |
-
|
212 |
-
return wp.element.createElement(_classMailChimpForms2.default, {
|
213 |
-
className: (0, _classnames2.default)(props.className),
|
214 |
-
onChangeForm: onChangeForm,
|
215 |
-
formID: props.attributes.form_id,
|
216 |
-
formData: props.attributes.form,
|
217 |
-
onChangeDescription: onChangeDescription,
|
218 |
-
descriptionValue: props.attributes.form_description,
|
219 |
-
showDescription: props.attributes.show_description,
|
220 |
-
toggleShowDescription: toggleShowDescription,
|
221 |
-
focus: !!props.isSelected,
|
222 |
-
inline: props.attributes.inline,
|
223 |
-
toggleInline: toggleInline,
|
224 |
-
formTitle: props.attributes.form_title,
|
225 |
-
toggleFormTitle: toggleFormTitle,
|
226 |
-
showTitle: props.attributes.show_title,
|
227 |
-
toggleShowTitle: toggleShowTitle,
|
228 |
-
isAjax: props.attributes.is_ajax,
|
229 |
-
toggleIsAjax: toggleIsAjax,
|
230 |
-
recaptcha: props.attributes.recaptcha,
|
231 |
-
toggleRecaptcha: toggleRecaptcha,
|
232 |
-
recaptchaTheme: props.attributes.recaptcha_theme,
|
233 |
-
toggleRecaptchaTheme: toggleRecaptchaTheme,
|
234 |
-
recaptchaLang: props.attributes.recaptcha_lang,
|
235 |
-
toggleRecaptchaLang: toggleRecaptchaLang,
|
236 |
-
recaptchaType: props.attributes.recaptcha_type,
|
237 |
-
toggleRecaptchaType: toggleRecaptchaType,
|
238 |
-
recaptchaSize: props.attributes.recaptcha_size,
|
239 |
-
toggleRecaptchaSize: toggleRecaptchaSize,
|
240 |
-
recaptchaVerifyCallback: props.attributes.recaptcha_verify_callback,
|
241 |
-
toggleRecaptchaVerifyCallback: toggleRecaptchaVerifyCallback,
|
242 |
-
recaptchaExpiredCallback: props.attributes.recaptcha_expired_callback,
|
243 |
-
toggleRecaptchaExpiredCallback: toggleRecaptchaExpiredCallback,
|
244 |
-
submitButtonText: props.attributes.submit_button_text,
|
245 |
-
toggleSubmitButtonText: toggleSubmitButtonText
|
246 |
-
});
|
247 |
-
};
|
248 |
-
|
249 |
-
var save_easy_form = function save_easy_form(props) {
|
250 |
-
return null;
|
251 |
-
};
|
252 |
-
|
253 |
-
var settings = {
|
254 |
-
title: __('Easy Forms for MailChimp'),
|
255 |
-
category: 'common', // Options include "common", "formatting", "layout", "widgets" and "embed."
|
256 |
-
icon: 'email-alt',
|
257 |
-
keywords: ['mailchimp', 'easy forms for mailchimp', 'yikes'],
|
258 |
-
attributes: {
|
259 |
-
form_id: {
|
260 |
-
type: 'number'
|
261 |
-
},
|
262 |
-
form: {
|
263 |
-
type: 'object'
|
264 |
-
},
|
265 |
-
form_description: {
|
266 |
-
type: 'string',
|
267 |
-
default: ''
|
268 |
-
},
|
269 |
-
show_description: {
|
270 |
-
type: 'boolean',
|
271 |
-
default: false
|
272 |
-
},
|
273 |
-
inline: {
|
274 |
-
type: 'boolean',
|
275 |
-
default: false
|
276 |
-
},
|
277 |
-
show_title: {
|
278 |
-
type: 'boolean',
|
279 |
-
default: false
|
280 |
-
},
|
281 |
-
form_title: {
|
282 |
-
type: 'string',
|
283 |
-
default: ''
|
284 |
-
},
|
285 |
-
is_ajax: {
|
286 |
-
type: 'boolean',
|
287 |
-
default: true
|
288 |
-
},
|
289 |
-
recaptcha: {
|
290 |
-
type: 'boolean',
|
291 |
-
default: true
|
292 |
-
},
|
293 |
-
recaptcha_theme: {
|
294 |
-
type: 'string',
|
295 |
-
default: 'light'
|
296 |
-
},
|
297 |
-
recaptcha_lang: {
|
298 |
-
type: 'string',
|
299 |
-
default: ''
|
300 |
-
},
|
301 |
-
recaptcha_type: {
|
302 |
-
type: 'string',
|
303 |
-
default: 'image'
|
304 |
-
},
|
305 |
-
recaptcha_size: {
|
306 |
-
type: 'string',
|
307 |
-
default: 'normal'
|
308 |
-
},
|
309 |
-
recaptcha_verify_callback: {
|
310 |
-
type: 'string',
|
311 |
-
default: ''
|
312 |
-
},
|
313 |
-
recaptcha_expired_callback: {
|
314 |
-
type: 'string',
|
315 |
-
default: ''
|
316 |
-
},
|
317 |
-
submit_button_text: {
|
318 |
-
type: 'string',
|
319 |
-
default: ''
|
320 |
-
}
|
321 |
-
},
|
322 |
-
edit: edit_easy_form,
|
323 |
-
save: save_easy_form
|
324 |
-
};
|
325 |
-
|
326 |
-
var EasyFormsBlock = registerBlockType(
|
327 |
-
|
328 |
-
// Name
|
329 |
-
'yikes-inc-easy-forms/easy-forms-block',
|
330 |
-
|
331 |
-
// Settings
|
332 |
-
settings);
|
333 |
-
|
334 |
-
/***/ }),
|
335 |
-
|
336 |
-
/***/ "./blocks/development/form/js/class.MailChimpForms.js":
|
337 |
-
/*!************************************************************!*\
|
338 |
-
!*** ./blocks/development/form/js/class.MailChimpForms.js ***!
|
339 |
-
\************************************************************/
|
340 |
/*! no static exports found */
|
341 |
/***/ (function(module, exports, __webpack_require__) {
|
342 |
|
@@ -353,27 +91,27 @@ var _classnames2 = _interopRequireDefault(_classnames);
|
|
353 |
|
354 |
var _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
355 |
|
356 |
-
var _getForms = __webpack_require__(/*! ./get-forms.js */ "./blocks/
|
357 |
|
358 |
var _getForms2 = _interopRequireDefault(_getForms);
|
359 |
|
360 |
-
var _getRecaptcha = __webpack_require__(/*! ./get-recaptcha.js */ "./blocks/
|
361 |
|
362 |
var _getRecaptcha2 = _interopRequireDefault(_getRecaptcha);
|
363 |
|
364 |
-
var _slugify = __webpack_require__(/*! ./slugify.js */ "./blocks/
|
365 |
|
366 |
var _slugify2 = _interopRequireDefault(_slugify);
|
367 |
|
368 |
-
var _countries = __webpack_require__(/*! ./countries.js */ "./blocks/
|
369 |
|
370 |
var _countries2 = _interopRequireDefault(_countries);
|
371 |
|
372 |
-
var _states = __webpack_require__(/*! ./states.js */ "./blocks/
|
373 |
|
374 |
var _states2 = _interopRequireDefault(_states);
|
375 |
|
376 |
-
var _locales = __webpack_require__(/*! ./locales.js */ "./blocks/
|
377 |
|
378 |
var _locales2 = _interopRequireDefault(_locales);
|
379 |
|
@@ -391,11 +129,11 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
|
|
391 |
// Get functions / blocks / components
|
392 |
var Recaptcha = __webpack_require__(/*! react-recaptcha */ "./node_modules/react-recaptcha/dist/react-recaptcha.js");
|
393 |
var __ = wp.i18n.__;
|
394 |
-
var
|
395 |
-
|
396 |
-
RichText = _wp$
|
397 |
-
InspectorControls = _wp$
|
398 |
-
PlainText = _wp$
|
399 |
var _wp$components = wp.components,
|
400 |
Spinner = _wp$components.Spinner,
|
401 |
TextControl = _wp$components.TextControl,
|
@@ -429,18 +167,28 @@ var MailChimpForms = function (_Component) {
|
|
429 |
'zip': 'Zip',
|
430 |
'country': 'Country'
|
431 |
};
|
432 |
-
|
433 |
-
(0, _getForms2.default)().then(function (forms) {
|
434 |
-
return _this.setState({ forms: forms.data });
|
435 |
-
});
|
436 |
-
|
437 |
-
(0, _getRecaptcha2.default)().then(function (recaptcha_data) {
|
438 |
-
return _this.setState({ recaptcha_data: recaptcha_data });
|
439 |
-
});
|
440 |
return _this;
|
441 |
}
|
442 |
|
|
|
|
|
|
|
|
|
|
|
443 |
_createClass(MailChimpForms, [{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
444 |
key: 'handleFormFieldChanges',
|
445 |
value: function handleFormFieldChanges(event) {
|
446 |
// console.log( event );
|
@@ -824,7 +572,7 @@ var MailChimpForms = function (_Component) {
|
|
824 |
}, {
|
825 |
key: 'get_radio_field',
|
826 |
value: function get_radio_field(field) {
|
827 |
-
var
|
828 |
|
829 |
var ii = 0;
|
830 |
|
@@ -843,7 +591,7 @@ var MailChimpForms = function (_Component) {
|
|
843 |
id: field.merge + '-' + ii,
|
844 |
key: field.merge + '-' + ii + '-input-key',
|
845 |
value: key,
|
846 |
-
onChange:
|
847 |
checked: parseInt(field.default_choice) === ii - 1
|
848 |
}),
|
849 |
wp.element.createElement(
|
@@ -898,17 +646,17 @@ var MailChimpForms = function (_Component) {
|
|
898 |
type: 'text',
|
899 |
value: field.default,
|
900 |
name: field.merge,
|
901 |
-
className: (0, _classnames2.default)('yikes-easy-mc-' + field.type + '
|
902 |
key: 'yikes-mailchimp-field-' + field.merge,
|
903 |
required: field.merge === 'EMAIL' || field.require === '1' ? 'required' : false,
|
904 |
'data-attr-type': field.type,
|
905 |
-
'data-date-format': field.date_format
|
906 |
});
|
907 |
}
|
908 |
}, {
|
909 |
key: 'get_radio_interest_group',
|
910 |
value: function get_radio_interest_group(field) {
|
911 |
-
var
|
912 |
|
913 |
var ii = -1;
|
914 |
var cn = "yikes-easy-mc-checkbox-label " + field['additional-classes'];
|
@@ -931,7 +679,7 @@ var MailChimpForms = function (_Component) {
|
|
931 |
id: field.group_id + '-' + ii,
|
932 |
key: field.group_id + '-' + ii + '-input-key',
|
933 |
value: key,
|
934 |
-
onChange:
|
935 |
checked: key === field.default_choice,
|
936 |
className: (0, _classnames2.default)({ 'yikes-interest-group-required': field.require === '1' })
|
937 |
}),
|
@@ -942,7 +690,7 @@ var MailChimpForms = function (_Component) {
|
|
942 |
}, {
|
943 |
key: 'get_hidden_interest_group',
|
944 |
value: function get_hidden_interest_group(field) {
|
945 |
-
var
|
946 |
|
947 |
var ii = -1;
|
948 |
|
@@ -953,7 +701,7 @@ var MailChimpForms = function (_Component) {
|
|
953 |
'label',
|
954 |
{
|
955 |
htmlFor: field.group_id + '-' + ii,
|
956 |
-
className: (0, _classnames2.default)(
|
957 |
key: field.group_id + '-' + ii + '-label-key'
|
958 |
},
|
959 |
wp.element.createElement('input', {
|
@@ -962,7 +710,7 @@ var MailChimpForms = function (_Component) {
|
|
962 |
id: field.group_id + '-' + ii,
|
963 |
key: field.group_id + '-' + ii + '-input-key',
|
964 |
value: key,
|
965 |
-
onChange:
|
966 |
checked: field.default_choice.indexOf(key) !== -1
|
967 |
}),
|
968 |
choice
|
@@ -972,10 +720,10 @@ var MailChimpForms = function (_Component) {
|
|
972 |
}, {
|
973 |
key: 'get_checkboxes_interest_group',
|
974 |
value: function get_checkboxes_interest_group(field) {
|
975 |
-
var
|
976 |
|
977 |
var ii = -1;
|
978 |
-
var cn =
|
979 |
|
980 |
return Object.keys(JSON.parse(field.groups)).map(function (key) {
|
981 |
var _classNames3;
|
@@ -992,12 +740,12 @@ var MailChimpForms = function (_Component) {
|
|
992 |
wp.element.createElement('input', {
|
993 |
className: (0, _classnames2.default)({ 'yikes-interest-group-required': field.require === '1' }),
|
994 |
type: 'checkbox',
|
995 |
-
name:
|
996 |
id: field.group_id + '-' + ii,
|
997 |
key: field.group_id + '-' + ii + '-input-key',
|
998 |
value: key,
|
999 |
-
onChange:
|
1000 |
-
checked: field.default_choice.indexOf(key) !== -1,
|
1001 |
required: field.require === '1' ? 'required' : false
|
1002 |
}),
|
1003 |
choice
|
@@ -1033,11 +781,11 @@ var MailChimpForms = function (_Component) {
|
|
1033 |
}, {
|
1034 |
key: 'form_fields',
|
1035 |
value: function form_fields() {
|
1036 |
-
var
|
1037 |
|
1038 |
return this.props.formData && this.props.formData.fields ? Object.keys(this.props.formData.fields).map(function (key) {
|
1039 |
|
1040 |
-
var field =
|
1041 |
|
1042 |
// Form Fields (aka merge variables)
|
1043 |
if (typeof field.merge !== 'undefined') {
|
@@ -1059,37 +807,37 @@ var MailChimpForms = function (_Component) {
|
|
1059 |
|
1060 |
if (field.type === 'address') {
|
1061 |
|
1062 |
-
return [field.description_above === '1' && field.description.length > 0 && desc, Object.keys(
|
1063 |
label = field['hide-label'] !== '1' ? wp.element.createElement(
|
1064 |
'span',
|
1065 |
{ className: (0, _classnames2.default)(field.merge + '-label'), key: field.merge + '-label-span-key-' + addr_field },
|
1066 |
-
|
1067 |
) : '';
|
1068 |
|
1069 |
return wp.element.createElement(
|
1070 |
'label',
|
1071 |
{
|
1072 |
-
htmlFor: "yikes-easy-mc-form-" +
|
1073 |
className: (0, _classnames2.default)(classes),
|
1074 |
key: field.merge + '-label-key-' + addr_field,
|
1075 |
style: field.hide === '1' ? { 'display': 'none' } : {}
|
1076 |
},
|
1077 |
label,
|
1078 |
-
|
1079 |
);
|
1080 |
}), field.description_above !== '1' && field.description.length > 0 && desc];
|
1081 |
} else {
|
1082 |
return wp.element.createElement(
|
1083 |
'label',
|
1084 |
{
|
1085 |
-
htmlFor: "yikes-easy-mc-form-" +
|
1086 |
className: (0, _classnames2.default)(classes),
|
1087 |
key: field.merge + '-label-key',
|
1088 |
style: field.hide === '1' ? { 'display': 'none' } : {}
|
1089 |
},
|
1090 |
label,
|
1091 |
field.description_above === '1' && field.description.length > 0 && desc,
|
1092 |
-
field.type === 'dropdown' ?
|
1093 |
field.description_above !== '1' && field.description.length > 0 && desc
|
1094 |
);
|
1095 |
}
|
@@ -1120,7 +868,7 @@ var MailChimpForms = function (_Component) {
|
|
1120 |
},
|
1121 |
label,
|
1122 |
field.description_above === '1' && field.description.length > 0 && desc,
|
1123 |
-
field.type === 'radio' ?
|
1124 |
field.description_above !== '1' && field.description.length > 0 && desc
|
1125 |
);
|
1126 |
}
|
@@ -1273,10 +1021,10 @@ exports.default = MailChimpForms;
|
|
1273 |
|
1274 |
/***/ }),
|
1275 |
|
1276 |
-
/***/ "./blocks/
|
1277 |
-
|
1278 |
-
!*** ./blocks/
|
1279 |
-
|
1280 |
/*! no static exports found */
|
1281 |
/***/ (function(module, exports, __webpack_require__) {
|
1282 |
|
@@ -1537,10 +1285,10 @@ exports.default = countries;
|
|
1537 |
|
1538 |
/***/ }),
|
1539 |
|
1540 |
-
/***/ "./blocks/
|
1541 |
-
|
1542 |
-
!*** ./blocks/
|
1543 |
-
|
1544 |
/*! no static exports found */
|
1545 |
/***/ (function(module, exports, __webpack_require__) {
|
1546 |
|
@@ -1566,10 +1314,10 @@ exports.default = countries;
|
|
1566 |
|
1567 |
/***/ }),
|
1568 |
|
1569 |
-
/***/ "./blocks/
|
1570 |
-
|
1571 |
-
!*** ./blocks/
|
1572 |
-
|
1573 |
/*! no static exports found */
|
1574 |
/***/ (function(module, exports, __webpack_require__) {
|
1575 |
|
@@ -1594,10 +1342,10 @@ function yikes_easy_forms_fetch_form(form_id) {
|
|
1594 |
|
1595 |
/***/ }),
|
1596 |
|
1597 |
-
/***/ "./blocks/
|
1598 |
-
|
1599 |
-
!*** ./blocks/
|
1600 |
-
|
1601 |
/*! no static exports found */
|
1602 |
/***/ (function(module, exports, __webpack_require__) {
|
1603 |
|
@@ -1622,10 +1370,10 @@ function yikes_easy_forms_fetch_forms() {
|
|
1622 |
|
1623 |
/***/ }),
|
1624 |
|
1625 |
-
/***/ "./blocks/
|
1626 |
-
|
1627 |
-
!*** ./blocks/
|
1628 |
-
|
1629 |
/*! no static exports found */
|
1630 |
/***/ (function(module, exports, __webpack_require__) {
|
1631 |
|
@@ -1650,10 +1398,10 @@ function get_recaptcha() {
|
|
1650 |
|
1651 |
/***/ }),
|
1652 |
|
1653 |
-
/***/ "./blocks/
|
1654 |
-
|
1655 |
-
!*** ./blocks/
|
1656 |
-
|
1657 |
/*! no static exports found */
|
1658 |
/***/ (function(module, exports, __webpack_require__) {
|
1659 |
|
@@ -1740,10 +1488,10 @@ exports.default = locales;
|
|
1740 |
|
1741 |
/***/ }),
|
1742 |
|
1743 |
-
/***/ "./blocks/
|
1744 |
-
|
1745 |
-
!*** ./blocks/
|
1746 |
-
|
1747 |
/*! no static exports found */
|
1748 |
/***/ (function(module, exports, __webpack_require__) {
|
1749 |
|
@@ -1777,10 +1525,10 @@ function slugify(text) {
|
|
1777 |
|
1778 |
/***/ }),
|
1779 |
|
1780 |
-
/***/ "./blocks/
|
1781 |
-
|
1782 |
-
!*** ./blocks/
|
1783 |
-
|
1784 |
/*! no static exports found */
|
1785 |
/***/ (function(module, exports, __webpack_require__) {
|
1786 |
|
@@ -1862,6 +1610,269 @@ exports.default = states;
|
|
1862 |
|
1863 |
/***/ }),
|
1864 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1865 |
/***/ "./blocks/index.js":
|
1866 |
/*!*************************!*\
|
1867 |
!*** ./blocks/index.js ***!
|
@@ -1872,7 +1883,7 @@ exports.default = states;
|
|
1872 |
"use strict";
|
1873 |
|
1874 |
|
1875 |
-
__webpack_require__(/*! ./
|
1876 |
|
1877 |
/***/ }),
|
1878 |
|
@@ -1940,14 +1951,14 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
|
|
1940 |
|
1941 |
/***/ }),
|
1942 |
|
1943 |
-
/***/ "./node_modules/css-loader/index.js!./node_modules/sass-loader/lib/loader.js!./blocks/
|
1944 |
-
|
1945 |
-
!*** ./node_modules/css-loader!./node_modules/sass-loader/lib/loader.js!./blocks/
|
1946 |
-
|
1947 |
/*! no static exports found */
|
1948 |
/***/ (function(module, exports, __webpack_require__) {
|
1949 |
|
1950 |
-
exports = module.exports = __webpack_require__(/*!
|
1951 |
// imports
|
1952 |
|
1953 |
|
@@ -4548,4 +4559,4 @@ module.exports = function (module) {
|
|
4548 |
/***/ })
|
4549 |
|
4550 |
/******/ });
|
4551 |
-
//# sourceMappingURL=
|
71 |
/************************************************************************/
|
72 |
/******/ ({
|
73 |
|
74 |
+
/***/ "./blocks/components/class.MailChimpForms.js":
|
75 |
+
/*!***************************************************!*\
|
76 |
+
!*** ./blocks/components/class.MailChimpForms.js ***!
|
77 |
+
\***************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
/*! no static exports found */
|
79 |
/***/ (function(module, exports, __webpack_require__) {
|
80 |
|
91 |
|
92 |
var _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
93 |
|
94 |
+
var _getForms = __webpack_require__(/*! ./get-forms.js */ "./blocks/components/get-forms.js");
|
95 |
|
96 |
var _getForms2 = _interopRequireDefault(_getForms);
|
97 |
|
98 |
+
var _getRecaptcha = __webpack_require__(/*! ./get-recaptcha.js */ "./blocks/components/get-recaptcha.js");
|
99 |
|
100 |
var _getRecaptcha2 = _interopRequireDefault(_getRecaptcha);
|
101 |
|
102 |
+
var _slugify = __webpack_require__(/*! ./slugify.js */ "./blocks/components/slugify.js");
|
103 |
|
104 |
var _slugify2 = _interopRequireDefault(_slugify);
|
105 |
|
106 |
+
var _countries = __webpack_require__(/*! ./countries.js */ "./blocks/components/countries.js");
|
107 |
|
108 |
var _countries2 = _interopRequireDefault(_countries);
|
109 |
|
110 |
+
var _states = __webpack_require__(/*! ./states.js */ "./blocks/components/states.js");
|
111 |
|
112 |
var _states2 = _interopRequireDefault(_states);
|
113 |
|
114 |
+
var _locales = __webpack_require__(/*! ./locales.js */ "./blocks/components/locales.js");
|
115 |
|
116 |
var _locales2 = _interopRequireDefault(_locales);
|
117 |
|
129 |
// Get functions / blocks / components
|
130 |
var Recaptcha = __webpack_require__(/*! react-recaptcha */ "./node_modules/react-recaptcha/dist/react-recaptcha.js");
|
131 |
var __ = wp.i18n.__;
|
132 |
+
var registerBlockType = wp.blocks.registerBlockType;
|
133 |
+
var _wp$editor = wp.editor,
|
134 |
+
RichText = _wp$editor.RichText,
|
135 |
+
InspectorControls = _wp$editor.InspectorControls,
|
136 |
+
PlainText = _wp$editor.PlainText;
|
137 |
var _wp$components = wp.components,
|
138 |
Spinner = _wp$components.Spinner,
|
139 |
TextControl = _wp$components.TextControl,
|
167 |
'zip': 'Zip',
|
168 |
'country': 'Country'
|
169 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
170 |
return _this;
|
171 |
}
|
172 |
|
173 |
+
/**
|
174 |
+
* Run our API calls after the component has mounted. You can't use setState before a component is mounted.
|
175 |
+
*/
|
176 |
+
|
177 |
+
|
178 |
_createClass(MailChimpForms, [{
|
179 |
+
key: 'componentDidMount',
|
180 |
+
value: function componentDidMount() {
|
181 |
+
var _this2 = this;
|
182 |
+
|
183 |
+
(0, _getForms2.default)().then(function (forms) {
|
184 |
+
_this2.setState({ forms: forms.data });
|
185 |
+
});
|
186 |
+
|
187 |
+
(0, _getRecaptcha2.default)().then(function (recaptcha_data) {
|
188 |
+
_this2.setState({ recaptcha_data: recaptcha_data });
|
189 |
+
});
|
190 |
+
}
|
191 |
+
}, {
|
192 |
key: 'handleFormFieldChanges',
|
193 |
value: function handleFormFieldChanges(event) {
|
194 |
// console.log( event );
|
572 |
}, {
|
573 |
key: 'get_radio_field',
|
574 |
value: function get_radio_field(field) {
|
575 |
+
var _this3 = this;
|
576 |
|
577 |
var ii = 0;
|
578 |
|
591 |
id: field.merge + '-' + ii,
|
592 |
key: field.merge + '-' + ii + '-input-key',
|
593 |
value: key,
|
594 |
+
onChange: _this3.handleFormFieldChanges,
|
595 |
checked: parseInt(field.default_choice) === ii - 1
|
596 |
}),
|
597 |
wp.element.createElement(
|
646 |
type: 'text',
|
647 |
value: field.default,
|
648 |
name: field.merge,
|
649 |
+
className: (0, _classnames2.default)('yikes-easy-mc-' + field.type + ' ' + field['additional-classes']),
|
650 |
key: 'yikes-mailchimp-field-' + field.merge,
|
651 |
required: field.merge === 'EMAIL' || field.require === '1' ? 'required' : false,
|
652 |
'data-attr-type': field.type,
|
653 |
+
'data-date-format': field.date_format.toLowerCase()
|
654 |
});
|
655 |
}
|
656 |
}, {
|
657 |
key: 'get_radio_interest_group',
|
658 |
value: function get_radio_interest_group(field) {
|
659 |
+
var _this4 = this;
|
660 |
|
661 |
var ii = -1;
|
662 |
var cn = "yikes-easy-mc-checkbox-label " + field['additional-classes'];
|
679 |
id: field.group_id + '-' + ii,
|
680 |
key: field.group_id + '-' + ii + '-input-key',
|
681 |
value: key,
|
682 |
+
onChange: _this4.handleFormFieldChanges,
|
683 |
checked: key === field.default_choice,
|
684 |
className: (0, _classnames2.default)({ 'yikes-interest-group-required': field.require === '1' })
|
685 |
}),
|
690 |
}, {
|
691 |
key: 'get_hidden_interest_group',
|
692 |
value: function get_hidden_interest_group(field) {
|
693 |
+
var _this5 = this;
|
694 |
|
695 |
var ii = -1;
|
696 |
|
701 |
'label',
|
702 |
{
|
703 |
htmlFor: field.group_id + '-' + ii,
|
704 |
+
className: (0, _classnames2.default)('yikes-easy-mc-checkbox-label ' + field['additional-classes']),
|
705 |
key: field.group_id + '-' + ii + '-label-key'
|
706 |
},
|
707 |
wp.element.createElement('input', {
|
710 |
id: field.group_id + '-' + ii,
|
711 |
key: field.group_id + '-' + ii + '-input-key',
|
712 |
value: key,
|
713 |
+
onChange: _this5.handleFormFieldChanges,
|
714 |
checked: field.default_choice.indexOf(key) !== -1
|
715 |
}),
|
716 |
choice
|
720 |
}, {
|
721 |
key: 'get_checkboxes_interest_group',
|
722 |
value: function get_checkboxes_interest_group(field) {
|
723 |
+
var _this6 = this;
|
724 |
|
725 |
var ii = -1;
|
726 |
+
var cn = 'yikes-easy-mc-checkbox-label ' + field['additional-classes'];
|
727 |
|
728 |
return Object.keys(JSON.parse(field.groups)).map(function (key) {
|
729 |
var _classNames3;
|
740 |
wp.element.createElement('input', {
|
741 |
className: (0, _classnames2.default)({ 'yikes-interest-group-required': field.require === '1' }),
|
742 |
type: 'checkbox',
|
743 |
+
name: 'group-' + field.group_id + '[]',
|
744 |
id: field.group_id + '-' + ii,
|
745 |
key: field.group_id + '-' + ii + '-input-key',
|
746 |
value: key,
|
747 |
+
onChange: _this6.handleFormFieldChanges,
|
748 |
+
checked: typeof field.default_choice !== 'undefined' && field.default_choice.indexOf(key) !== -1,
|
749 |
required: field.require === '1' ? 'required' : false
|
750 |
}),
|
751 |
choice
|
781 |
}, {
|
782 |
key: 'form_fields',
|
783 |
value: function form_fields() {
|
784 |
+
var _this7 = this;
|
785 |
|
786 |
return this.props.formData && this.props.formData.fields ? Object.keys(this.props.formData.fields).map(function (key) {
|
787 |
|
788 |
+
var field = _this7.props.formData.fields[key];
|
789 |
|
790 |
// Form Fields (aka merge variables)
|
791 |
if (typeof field.merge !== 'undefined') {
|
807 |
|
808 |
if (field.type === 'address') {
|
809 |
|
810 |
+
return [field.description_above === '1' && field.description.length > 0 && desc, Object.keys(_this7.address_fields).map(function (addr_field) {
|
811 |
label = field['hide-label'] !== '1' ? wp.element.createElement(
|
812 |
'span',
|
813 |
{ className: (0, _classnames2.default)(field.merge + '-label'), key: field.merge + '-label-span-key-' + addr_field },
|
814 |
+
_this7.address_fields[addr_field]
|
815 |
) : '';
|
816 |
|
817 |
return wp.element.createElement(
|
818 |
'label',
|
819 |
{
|
820 |
+
htmlFor: "yikes-easy-mc-form-" + _this7.props.formID + "-" + field.merge + '-' + addr_field,
|
821 |
className: (0, _classnames2.default)(classes),
|
822 |
key: field.merge + '-label-key-' + addr_field,
|
823 |
style: field.hide === '1' ? { 'display': 'none' } : {}
|
824 |
},
|
825 |
label,
|
826 |
+
_this7.get_address_field(addr_field, field)
|
827 |
);
|
828 |
}), field.description_above !== '1' && field.description.length > 0 && desc];
|
829 |
} else {
|
830 |
return wp.element.createElement(
|
831 |
'label',
|
832 |
{
|
833 |
+
htmlFor: "yikes-easy-mc-form-" + _this7.props.formID + "-" + field.merge,
|
834 |
className: (0, _classnames2.default)(classes),
|
835 |
key: field.merge + '-label-key',
|
836 |
style: field.hide === '1' ? { 'display': 'none' } : {}
|
837 |
},
|
838 |
label,
|
839 |
field.description_above === '1' && field.description.length > 0 && desc,
|
840 |
+
field.type === 'dropdown' ? _this7.get_dropdown_field(field) : field.type === 'radio' ? _this7.get_radio_field(field) : field.type === 'url' || field.type === 'imageurl' ? _this7.get_url_field(field) : field.type === 'date' || field.type === 'birthday' ? _this7.get_date_field(field) : _this7.get_default_field(field),
|
841 |
field.description_above !== '1' && field.description.length > 0 && desc
|
842 |
);
|
843 |
}
|
868 |
},
|
869 |
label,
|
870 |
field.description_above === '1' && field.description.length > 0 && desc,
|
871 |
+
field.type === 'radio' ? _this7.get_radio_interest_group(field) : field.type === 'hidden' ? _this7.get_hidden_interest_group(field) : field.type === 'checkboxes' ? _this7.get_checkboxes_interest_group(field) : field.type === 'dropdown' ? _this7.get_dropdown_interest_group(field) : '',
|
872 |
field.description_above !== '1' && field.description.length > 0 && desc
|
873 |
);
|
874 |
}
|
1021 |
|
1022 |
/***/ }),
|
1023 |
|
1024 |
+
/***/ "./blocks/components/countries.js":
|
1025 |
+
/*!****************************************!*\
|
1026 |
+
!*** ./blocks/components/countries.js ***!
|
1027 |
+
\****************************************/
|
1028 |
/*! no static exports found */
|
1029 |
/***/ (function(module, exports, __webpack_require__) {
|
1030 |
|
1285 |
|
1286 |
/***/ }),
|
1287 |
|
1288 |
+
/***/ "./blocks/components/enable-submit-button-editing.js":
|
1289 |
+
/*!***********************************************************!*\
|
1290 |
+
!*** ./blocks/components/enable-submit-button-editing.js ***!
|
1291 |
+
\***********************************************************/
|
1292 |
/*! no static exports found */
|
1293 |
/***/ (function(module, exports, __webpack_require__) {
|
1294 |
|
1314 |
|
1315 |
/***/ }),
|
1316 |
|
1317 |
+
/***/ "./blocks/components/get-form.js":
|
1318 |
+
/*!***************************************!*\
|
1319 |
+
!*** ./blocks/components/get-form.js ***!
|
1320 |
+
\***************************************/
|
1321 |
/*! no static exports found */
|
1322 |
/***/ (function(module, exports, __webpack_require__) {
|
1323 |
|
1342 |
|
1343 |
/***/ }),
|
1344 |
|
1345 |
+
/***/ "./blocks/components/get-forms.js":
|
1346 |
+
/*!****************************************!*\
|
1347 |
+
!*** ./blocks/components/get-forms.js ***!
|
1348 |
+
\****************************************/
|
1349 |
/*! no static exports found */
|
1350 |
/***/ (function(module, exports, __webpack_require__) {
|
1351 |
|
1370 |
|
1371 |
/***/ }),
|
1372 |
|
1373 |
+
/***/ "./blocks/components/get-recaptcha.js":
|
1374 |
+
/*!********************************************!*\
|
1375 |
+
!*** ./blocks/components/get-recaptcha.js ***!
|
1376 |
+
\********************************************/
|
1377 |
/*! no static exports found */
|
1378 |
/***/ (function(module, exports, __webpack_require__) {
|
1379 |
|
1398 |
|
1399 |
/***/ }),
|
1400 |
|
1401 |
+
/***/ "./blocks/components/locales.js":
|
1402 |
+
/*!**************************************!*\
|
1403 |
+
!*** ./blocks/components/locales.js ***!
|
1404 |
+
\**************************************/
|
1405 |
/*! no static exports found */
|
1406 |
/***/ (function(module, exports, __webpack_require__) {
|
1407 |
|
1488 |
|
1489 |
/***/ }),
|
1490 |
|
1491 |
+
/***/ "./blocks/components/slugify.js":
|
1492 |
+
/*!**************************************!*\
|
1493 |
+
!*** ./blocks/components/slugify.js ***!
|
1494 |
+
\**************************************/
|
1495 |
/*! no static exports found */
|
1496 |
/***/ (function(module, exports, __webpack_require__) {
|
1497 |
|
1525 |
|
1526 |
/***/ }),
|
1527 |
|
1528 |
+
/***/ "./blocks/components/states.js":
|
1529 |
+
/*!*************************************!*\
|
1530 |
+
!*** ./blocks/components/states.js ***!
|
1531 |
+
\*************************************/
|
1532 |
/*! no static exports found */
|
1533 |
/***/ (function(module, exports, __webpack_require__) {
|
1534 |
|
1610 |
|
1611 |
/***/ }),
|
1612 |
|
1613 |
+
/***/ "./blocks/easy-forms-block/dev-easy-forms-block.js":
|
1614 |
+
/*!*********************************************************!*\
|
1615 |
+
!*** ./blocks/easy-forms-block/dev-easy-forms-block.js ***!
|
1616 |
+
\*********************************************************/
|
1617 |
+
/*! no static exports found */
|
1618 |
+
/***/ (function(module, exports, __webpack_require__) {
|
1619 |
+
|
1620 |
+
"use strict";
|
1621 |
+
|
1622 |
+
|
1623 |
+
var _classnames = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");
|
1624 |
+
|
1625 |
+
var _classnames2 = _interopRequireDefault(_classnames);
|
1626 |
+
|
1627 |
+
var _getForm = __webpack_require__(/*! ../components/get-form.js */ "./blocks/components/get-form.js");
|
1628 |
+
|
1629 |
+
var _getForm2 = _interopRequireDefault(_getForm);
|
1630 |
+
|
1631 |
+
var _classMailChimpForms = __webpack_require__(/*! ../components/class.MailChimpForms.js */ "./blocks/components/class.MailChimpForms.js");
|
1632 |
+
|
1633 |
+
var _classMailChimpForms2 = _interopRequireDefault(_classMailChimpForms);
|
1634 |
+
|
1635 |
+
__webpack_require__(/*! ./easy-forms-block.scss */ "./blocks/easy-forms-block/easy-forms-block.scss");
|
1636 |
+
|
1637 |
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
1638 |
+
|
1639 |
+
__webpack_require__(/*! ../components/enable-submit-button-editing.js */ "./blocks/components/enable-submit-button-editing.js");
|
1640 |
+
|
1641 |
+
// Get just the __() localization function from wp.i18n
|
1642 |
+
var __ = wp.i18n.__;
|
1643 |
+
|
1644 |
+
// Get registerBlockType and other methods from wp.blocks
|
1645 |
+
|
1646 |
+
var registerBlockType = wp.blocks.registerBlockType;
|
1647 |
+
|
1648 |
+
|
1649 |
+
var edit_easy_form = function edit_easy_form(props) {
|
1650 |
+
|
1651 |
+
var onChangeForm = function onChangeForm(event) {
|
1652 |
+
props.setAttributes({ form_id: event.target.value });
|
1653 |
+
|
1654 |
+
if (event.target.value.length > 0) {
|
1655 |
+
(0, _getForm2.default)(event.target.value).then(function (form) {
|
1656 |
+
props.setAttributes({ form: form.data });
|
1657 |
+
props.setAttributes({ form_description: form.data.form_description });
|
1658 |
+
props.setAttributes({ form_title: form.data.form_name });
|
1659 |
+
props.setAttributes({ is_ajax: form.data.submission_settings.ajax === '1' });
|
1660 |
+
props.setAttributes({ submit_button_text: form.data.form_settings['yikes-easy-mc-submit-button-text'] });
|
1661 |
+
});
|
1662 |
+
}
|
1663 |
+
};
|
1664 |
+
|
1665 |
+
var onChangeDescription = function onChangeDescription(value) {
|
1666 |
+
props.setAttributes({ form_description: value });
|
1667 |
+
};
|
1668 |
+
|
1669 |
+
var toggleShowDescription = function toggleShowDescription(event) {
|
1670 |
+
props.setAttributes({ show_description: !!event.target.checked });
|
1671 |
+
};
|
1672 |
+
|
1673 |
+
var toggleInline = function toggleInline(event) {
|
1674 |
+
props.setAttributes({ inline: !!event.target.checked });
|
1675 |
+
};
|
1676 |
+
|
1677 |
+
var toggleShowTitle = function toggleShowTitle(event) {
|
1678 |
+
props.setAttributes({ show_title: !!event.target.checked });
|
1679 |
+
};
|
1680 |
+
|
1681 |
+
var toggleFormTitle = function toggleFormTitle(value) {
|
1682 |
+
props.setAttributes({ form_title: value });
|
1683 |
+
};
|
1684 |
+
|
1685 |
+
var toggleIsAjax = function toggleIsAjax(event) {
|
1686 |
+
props.setAttributes({ is_ajax: !!event.target.checked });
|
1687 |
+
};
|
1688 |
+
|
1689 |
+
var toggleRecaptcha = function toggleRecaptcha(event) {
|
1690 |
+
props.setAttributes({ recaptcha: !!event.target.checked });
|
1691 |
+
};
|
1692 |
+
|
1693 |
+
var toggleRecaptchaTheme = function toggleRecaptchaTheme(value) {
|
1694 |
+
props.setAttributes({ recaptcha_theme: value });
|
1695 |
+
};
|
1696 |
+
|
1697 |
+
var toggleRecaptchaLang = function toggleRecaptchaLang(value) {
|
1698 |
+
props.setAttributes({ recaptcha_lang: value });
|
1699 |
+
};
|
1700 |
+
|
1701 |
+
var toggleRecaptchaType = function toggleRecaptchaType(value) {
|
1702 |
+
props.setAttributes({ recaptcha_type: value });
|
1703 |
+
};
|
1704 |
+
|
1705 |
+
var toggleRecaptchaSize = function toggleRecaptchaSize(value) {
|
1706 |
+
props.setAttributes({ recaptcha_size: value });
|
1707 |
+
};
|
1708 |
+
|
1709 |
+
var toggleRecaptchaVerifyCallback = function toggleRecaptchaVerifyCallback(value) {
|
1710 |
+
props.setAttributes({ recaptcha_verify_callback: value });
|
1711 |
+
};
|
1712 |
+
|
1713 |
+
var toggleRecaptchaExpiredCallback = function toggleRecaptchaExpiredCallback(value) {
|
1714 |
+
props.setAttributes({ recaptcha_expired_callback: value });
|
1715 |
+
};
|
1716 |
+
|
1717 |
+
var toggleSubmitButtonText = function toggleSubmitButtonText(value) {
|
1718 |
+
props.setAttributes({ submit_button_text: value });
|
1719 |
+
};
|
1720 |
+
|
1721 |
+
return wp.element.createElement(_classMailChimpForms2.default, {
|
1722 |
+
className: (0, _classnames2.default)(props.className),
|
1723 |
+
onChangeForm: onChangeForm,
|
1724 |
+
formID: props.attributes.form_id,
|
1725 |
+
formData: props.attributes.form,
|
1726 |
+
onChangeDescription: onChangeDescription,
|
1727 |
+
descriptionValue: props.attributes.form_description,
|
1728 |
+
showDescription: props.attributes.show_description,
|
1729 |
+
toggleShowDescription: toggleShowDescription,
|
1730 |
+
focus: !!props.isSelected,
|
1731 |
+
inline: props.attributes.inline,
|
1732 |
+
toggleInline: toggleInline,
|
1733 |
+
formTitle: props.attributes.form_title,
|
1734 |
+
toggleFormTitle: toggleFormTitle,
|
1735 |
+
showTitle: props.attributes.show_title,
|
1736 |
+
toggleShowTitle: toggleShowTitle,
|
1737 |
+
isAjax: props.attributes.is_ajax,
|
1738 |
+
toggleIsAjax: toggleIsAjax,
|
1739 |
+
recaptcha: props.attributes.recaptcha,
|
1740 |
+
toggleRecaptcha: toggleRecaptcha,
|
1741 |
+
recaptchaTheme: props.attributes.recaptcha_theme,
|
1742 |
+
toggleRecaptchaTheme: toggleRecaptchaTheme,
|
1743 |
+
recaptchaLang: props.attributes.recaptcha_lang,
|
1744 |
+
toggleRecaptchaLang: toggleRecaptchaLang,
|
1745 |
+
recaptchaType: props.attributes.recaptcha_type,
|
1746 |
+
toggleRecaptchaType: toggleRecaptchaType,
|
1747 |
+
recaptchaSize: props.attributes.recaptcha_size,
|
1748 |
+
toggleRecaptchaSize: toggleRecaptchaSize,
|
1749 |
+
recaptchaVerifyCallback: props.attributes.recaptcha_verify_callback,
|
1750 |
+
toggleRecaptchaVerifyCallback: toggleRecaptchaVerifyCallback,
|
1751 |
+
recaptchaExpiredCallback: props.attributes.recaptcha_expired_callback,
|
1752 |
+
toggleRecaptchaExpiredCallback: toggleRecaptchaExpiredCallback,
|
1753 |
+
submitButtonText: props.attributes.submit_button_text,
|
1754 |
+
toggleSubmitButtonText: toggleSubmitButtonText
|
1755 |
+
});
|
1756 |
+
};
|
1757 |
+
|
1758 |
+
var save_easy_form = function save_easy_form(props) {
|
1759 |
+
return null;
|
1760 |
+
};
|
1761 |
+
|
1762 |
+
var settings = {
|
1763 |
+
title: __('Easy Forms for MailChimp'),
|
1764 |
+
category: 'common', // Options include "common", "formatting", "layout", "widgets" and "embed."
|
1765 |
+
icon: 'email-alt',
|
1766 |
+
keywords: ['mailchimp', 'easy forms for mailchimp', 'yikes'],
|
1767 |
+
attributes: {
|
1768 |
+
form_id: {
|
1769 |
+
type: 'string',
|
1770 |
+
default: ''
|
1771 |
+
},
|
1772 |
+
form: {
|
1773 |
+
type: 'object'
|
1774 |
+
},
|
1775 |
+
form_description: {
|
1776 |
+
type: 'string',
|
1777 |
+
default: ''
|
1778 |
+
},
|
1779 |
+
show_description: {
|
1780 |
+
type: 'boolean',
|
1781 |
+
default: false
|
1782 |
+
},
|
1783 |
+
inline: {
|
1784 |
+
type: 'boolean',
|
1785 |
+
default: false
|
1786 |
+
},
|
1787 |
+
show_title: {
|
1788 |
+
type: 'boolean',
|
1789 |
+
default: false
|
1790 |
+
},
|
1791 |
+
form_title: {
|
1792 |
+
type: 'string',
|
1793 |
+
default: ''
|
1794 |
+
},
|
1795 |
+
is_ajax: {
|
1796 |
+
type: 'boolean',
|
1797 |
+
default: true
|
1798 |
+
},
|
1799 |
+
recaptcha: {
|
1800 |
+
type: 'boolean',
|
1801 |
+
default: true
|
1802 |
+
},
|
1803 |
+
recaptcha_theme: {
|
1804 |
+
type: 'string',
|
1805 |
+
default: 'light'
|
1806 |
+
},
|
1807 |
+
recaptcha_lang: {
|
1808 |
+
type: 'string',
|
1809 |
+
default: ''
|
1810 |
+
},
|
1811 |
+
recaptcha_type: {
|
1812 |
+
type: 'string',
|
1813 |
+
default: 'image'
|
1814 |
+
},
|
1815 |
+
recaptcha_size: {
|
1816 |
+
type: 'string',
|
1817 |
+
default: 'normal'
|
1818 |
+
},
|
1819 |
+
recaptcha_verify_callback: {
|
1820 |
+
type: 'string',
|
1821 |
+
default: ''
|
1822 |
+
},
|
1823 |
+
recaptcha_expired_callback: {
|
1824 |
+
type: 'string',
|
1825 |
+
default: ''
|
1826 |
+
},
|
1827 |
+
submit_button_text: {
|
1828 |
+
type: 'string',
|
1829 |
+
default: ''
|
1830 |
+
}
|
1831 |
+
},
|
1832 |
+
edit: edit_easy_form,
|
1833 |
+
save: save_easy_form
|
1834 |
+
};
|
1835 |
+
|
1836 |
+
var EasyFormsBlock = registerBlockType(
|
1837 |
+
|
1838 |
+
// Name
|
1839 |
+
ez_forms_gb_data.block_namespace + ez_forms_gb_data.block_name,
|
1840 |
+
|
1841 |
+
// Settings
|
1842 |
+
settings);
|
1843 |
+
|
1844 |
+
/***/ }),
|
1845 |
+
|
1846 |
+
/***/ "./blocks/easy-forms-block/easy-forms-block.scss":
|
1847 |
+
/*!*******************************************************!*\
|
1848 |
+
!*** ./blocks/easy-forms-block/easy-forms-block.scss ***!
|
1849 |
+
\*******************************************************/
|
1850 |
+
/*! no static exports found */
|
1851 |
+
/***/ (function(module, exports, __webpack_require__) {
|
1852 |
+
|
1853 |
+
|
1854 |
+
var content = __webpack_require__(/*! !../../node_modules/css-loader!../../node_modules/sass-loader/lib/loader.js!./easy-forms-block.scss */ "./node_modules/css-loader/index.js!./node_modules/sass-loader/lib/loader.js!./blocks/easy-forms-block/easy-forms-block.scss");
|
1855 |
+
|
1856 |
+
if(typeof content === 'string') content = [[module.i, content, '']];
|
1857 |
+
|
1858 |
+
var transform;
|
1859 |
+
var insertInto;
|
1860 |
+
|
1861 |
+
|
1862 |
+
|
1863 |
+
var options = {"hmr":true}
|
1864 |
+
|
1865 |
+
options.transform = transform
|
1866 |
+
options.insertInto = undefined;
|
1867 |
+
|
1868 |
+
var update = __webpack_require__(/*! ../../node_modules/style-loader/lib/addStyles.js */ "./node_modules/style-loader/lib/addStyles.js")(content, options);
|
1869 |
+
|
1870 |
+
if(content.locals) module.exports = content.locals;
|
1871 |
+
|
1872 |
+
if(false) {}
|
1873 |
+
|
1874 |
+
/***/ }),
|
1875 |
+
|
1876 |
/***/ "./blocks/index.js":
|
1877 |
/*!*************************!*\
|
1878 |
!*** ./blocks/index.js ***!
|
1883 |
"use strict";
|
1884 |
|
1885 |
|
1886 |
+
__webpack_require__(/*! ./easy-forms-block/dev-easy-forms-block.js */ "./blocks/easy-forms-block/dev-easy-forms-block.js");
|
1887 |
|
1888 |
/***/ }),
|
1889 |
|
1951 |
|
1952 |
/***/ }),
|
1953 |
|
1954 |
+
/***/ "./node_modules/css-loader/index.js!./node_modules/sass-loader/lib/loader.js!./blocks/easy-forms-block/easy-forms-block.scss":
|
1955 |
+
/*!**************************************************************************************************************************!*\
|
1956 |
+
!*** ./node_modules/css-loader!./node_modules/sass-loader/lib/loader.js!./blocks/easy-forms-block/easy-forms-block.scss ***!
|
1957 |
+
\**************************************************************************************************************************/
|
1958 |
/*! no static exports found */
|
1959 |
/***/ (function(module, exports, __webpack_require__) {
|
1960 |
|
1961 |
+
exports = module.exports = __webpack_require__(/*! ../../node_modules/css-loader/lib/css-base.js */ "./node_modules/css-loader/lib/css-base.js")(false);
|
1962 |
// imports
|
1963 |
|
1964 |
|
4559 |
/***/ })
|
4560 |
|
4561 |
/******/ });
|
4562 |
+
//# sourceMappingURL=easy-forms-block.js.map
|
blocks/easy-forms-block/easy-forms-block.js.map
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./blocks/components/class.MailChimpForms.js","webpack:///./blocks/components/countries.js","webpack:///./blocks/components/enable-submit-button-editing.js","webpack:///./blocks/components/get-form.js","webpack:///./blocks/components/get-forms.js","webpack:///./blocks/components/get-recaptcha.js","webpack:///./blocks/components/locales.js","webpack:///./blocks/components/slugify.js","webpack:///./blocks/components/states.js","webpack:///./blocks/easy-forms-block/dev-easy-forms-block.js","webpack:///./blocks/easy-forms-block/easy-forms-block.scss?e701","webpack:///./blocks/index.js","webpack:///./node_modules/classnames/index.js","webpack:///./blocks/easy-forms-block/easy-forms-block.scss","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./node_modules/fbjs/lib/emptyFunction.js","webpack:///./node_modules/fbjs/lib/emptyObject.js","webpack:///./node_modules/fbjs/lib/invariant.js","webpack:///./node_modules/fbjs/lib/warning.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/prop-types/checkPropTypes.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/react-recaptcha/dist/react-recaptcha.js","webpack:///./node_modules/react/cjs/react.development.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/style-loader/lib/addStyles.js","webpack:///./node_modules/style-loader/lib/urls.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///(webpack)/buildin/module.js"],"names":["Recaptcha","require","__","wp","i18n","registerBlockType","blocks","editor","RichText","InspectorControls","PlainText","components","Spinner","TextControl","PanelBody","PanelRow","FormToggle","SelectControl","Component","element","MailChimpForms","props","arguments","state","forms","recaptcha_data","data","success","address_fields","then","setState","event","inline","toggleInline","show_form_title","showTitle","toggleShowTitle","show_form_description","showDescription","toggleShowDescription","is_ajax","isAjax","toggleIsAjax","recaptcha","toggleRecaptcha","recaptcha_type","recaptchaType","value","label","toggleRecaptchaType","recaptcha_theme","recaptchaTheme","toggleRecaptchaTheme","recaptcha_lang","locale","recaptchaLang","length","toggleRecaptchaLang","Object","keys","map","key","recaptcha_size","recaptchaSize","toggleRecaptchaSize","recaptcha_verify_callback","recaptchaVerifyCallback","toggleRecaptchaVerifyCallback","recaptcha_expired_callback","recaptchaExpiredCallback","toggleRecaptchaExpiredCallback","inspector_controls","formID","onChangeForm","form","id","form_name","focus","formTitle","toggleFormTitle","descriptionValue","formData","form_description","onChangeDescription","addr_field","field","merge","handleFormFieldChanges","type","placeholder","choice","JSON","parse","choices","default_choice","ii","parseInt","default","date_format","toLowerCase","cn","groups","group_id","indexOf","fields","desc","description","classes","description_above","hide","get_address_field","get_dropdown_field","get_radio_field","get_url_field","get_date_field","get_default_field","get_radio_interest_group","get_hidden_interest_group","get_checkboxes_interest_group","get_dropdown_interest_group","site_key","Math","random","toString","slice","form_settings","submitButtonText","toggleSubmitButtonText","form_title","get_form","form_fields","form_recaptcha","submit_button","className","forms_dropdown","get_form_section","countries","$","document","ready","on","preventDefault","stopPropagation","jQuery","yikes_easy_forms_fetch_form","form_id","action","nonce","ez_forms_gb_data","fetch_form_nonce","post","ajax_url","yikes_easy_forms_fetch_forms","fetch_forms_nonce","get_recaptcha","fetch_recaptcha_nonce","locales","slugify","text","specialChars","replace","target","index","str","states","edit_easy_form","setAttributes","submission_settings","ajax","submit_button_text","show_description","checked","show_title","attributes","isSelected","save_easy_form","settings","title","category","icon","keywords","edit","save","EasyFormsBlock","block_namespace","block_name","hasOwn","hasOwnProperty","classNames","i","arg","argType","push","Array","isArray","apply","call","join","module","exports","define","window","useSourceMap","list","item","content","cssWithMappingToString","modules","mediaQuery","alreadyImportedModules","cssMapping","btoa","sourceMapping","toComment","sourceURLs","sources","source","sourceRoot","concat","sourceMap","base64","unescape","encodeURIComponent","stringify","makeEmptyFunction","emptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","emptyObject","freeze","validateFormat","format","undefined","Error","invariant","condition","a","b","c","d","e","f","error","args","argIndex","name","framesToPop","warning","printWarning","_len","_key","message","console","x","_len2","_key2","getOwnPropertySymbols","prototype","propIsEnumerable","propertyIsEnumerable","toObject","val","TypeError","shouldUseNative","assign","test1","String","getOwnPropertyNames","test2","fromCharCode","order2","n","test3","split","forEach","letter","err","from","to","symbols","s","ReactPropTypesSecret","loggedTypeFailures","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","ex","stack","t","r","loaded","m","p","__esModule","o","ReferenceError","create","constructor","enumerable","writable","configurable","setPrototypeOf","__proto__","defineProperty","l","u","string","onloadCallbackName","elementID","onloadCallback","func","verifyCallback","expiredCallback","render","sitekey","theme","verifyCallbackName","expiredCallbackName","size","tabindex","hl","badge","h","grecaptcha","y","getPrototypeOf","_renderGrecaptcha","bind","reset","widget","setInterval","_updateReadyState","clearInterval","execute","callback","createElement","propTypes","defaultProps","isRequired","array","bool","number","object","symbol","any","arrayOf","instanceOf","node","objectOf","oneOf","oneOfType","shape","PropTypes","_assign","ReactVersion","hasSymbol","Symbol","REACT_ELEMENT_TYPE","REACT_CALL_TYPE","REACT_RETURN_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_FORWARD_REF_TYPE","MAYBE_ITERATOR_SYMBOL","iterator","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","lowPriorityWarning","warn","lowPriorityWarning$1","didWarnStateUpdateForUnmountedComponent","warnNoop","publicInstance","callerName","_constructor","displayName","warningKey","ReactNoopUpdateQueue","isMounted","enqueueForceUpdate","enqueueReplaceState","completeState","enqueueSetState","partialState","context","updater","refs","isReactComponent","forceUpdate","deprecatedAPIs","replaceState","defineDeprecationWarning","methodName","info","get","fnName","ComponentDummy","PureComponent","pureComponentPrototype","isPureReactComponent","createRef","refObject","current","seal","ReactCurrentOwner","RESERVED_PROPS","ref","__self","__source","specialPropKeyWarningShown","specialPropRefWarningShown","hasValidRef","config","getter","getOwnPropertyDescriptor","isReactWarning","hasValidKey","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","ReactElement","self","owner","$$typeof","_owner","_store","children","propName","childrenLength","childArray","cloneAndReplaceKey","oldElement","newKey","newElement","_self","_source","cloneElement","isValidElement","ReactDebugCurrentFrame","getCurrentStack","getStackAddendum","impl","SEPARATOR","SUBSEPARATOR","escape","escapeRegex","escaperLookup","escapedString","match","didWarnAboutMaps","userProvidedKeyEscapeRegex","escapeUserProvidedKey","POOL_SIZE","traverseContextPool","getPooledTraverseContext","mapResult","keyPrefix","mapFunction","mapContext","traverseContext","pop","result","count","releaseTraverseContext","traverseAllChildrenImpl","nameSoFar","invokeCallback","getComponentKey","child","nextName","subtreeCount","nextNamePrefix","iteratorFn","entries","step","next","done","addendum","childrenString","traverseAllChildren","component","forEachSingleChild","bookKeeping","forEachChildren","forEachFunc","forEachContext","mapSingleChildIntoContext","childKey","mappedChild","mapIntoWithKeyPrefixInternal","prefix","escapedPrefix","mapChildren","countChildren","toArray","onlyChild","createContext","defaultValue","calculateChangedBits","_calculateChangedBits","_defaultValue","_currentValue","_changedBits","Provider","Consumer","_context","_currentRenderer","forwardRef","describeComponentFrame","ownerName","fileName","lineNumber","isValidElementType","getComponentName","fiber","currentlyValidatingElement","propTypesMisspellWarningShown","getDisplayName","getDeclarationErrorAddendum","getSourceInfoErrorAddendum","elementProps","ownerHasKeyUseWarning","getCurrentComponentErrorInfo","parentType","parentName","validateExplicitKey","validated","currentComponentErrorInfo","childOwner","validateChildKeys","validatePropTypes","componentClass","getDefaultProps","isReactClassApproved","validateFragmentProps","fragment","createElementWithValidation","validType","sourceInfo","typeString","createFactoryWithValidation","validatedFactory","cloneElementWithValidation","React","Children","only","Fragment","StrictMode","unstable_AsyncMode","createFactory","version","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactComponentTreeHook","React$2","React$3","react","css","baseUrl","protocol","host","currentDir","pathname","fixedCss","fullMatch","origUrl","unquotedOrigUrl","trim","$1","test","newUrl","webpackPolyfill","deprecate","paths"],"mappings":"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D;AAk3CD,C;;;;;;;;;;;;ACh4CD;;AAEA,IAAI,KAAJ,EAA2C,EAA3C,MAEO;AACLpX,SAAOC,OAAP,GAAiB,mBAAAtM,CAAQ,iFAAR,CAAjB;AACD,C;;;;;;;;;;;ACND;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,mBAAmB,2BAA2B;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;;AAEA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;;AAEA,QAAQ,uBAAuB;AAC/B;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,kDAAkD,sBAAsB;AACxE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;;AAEA,6BAA6B,mBAAmB;;AAEhD;;AAEA;;AAEA;AACA;;;;;;;;;;;;;;;ACtXA;;;;;;;;;;;;;AAaAqM,OAAOC,OAAP,GAAiB,UAAUoX,GAAV,EAAe;AAC9B;AACA,KAAIzR,WAAW,OAAOzF,MAAP,KAAkB,WAAlB,IAAiCA,OAAOyF,QAAvD;;AAEA,KAAI,CAACA,QAAL,EAAe;AACb,QAAM,IAAIrD,KAAJ,CAAU,kCAAV,CAAN;AACD;;AAEF;AACA,KAAI,CAAC8U,GAAD,IAAQ,OAAOA,GAAP,KAAe,QAA3B,EAAqC;AACnC,SAAOA,GAAP;AACA;;AAED,KAAIC,UAAU1R,SAAS2R,QAAT,GAAoB,IAApB,GAA2B3R,SAAS4R,IAAlD;AACA,KAAIC,aAAaH,UAAU1R,SAAS8R,QAAT,CAAkBha,OAAlB,CAA0B,WAA1B,EAAuC,GAAvC,CAA3B;;AAED;AACA;;;;;;;;;;;;;;;;;;;;;;;AAyBA,KAAIia,WAAWN,IAAI3Z,OAAJ,CAAY,qDAAZ,EAAmE,UAASka,SAAT,EAAoBC,OAApB,EAA6B;AAC9G;AACA,MAAIC,kBAAkBD,QACpBE,IADoB,GAEpBra,OAFoB,CAEZ,UAFY,EAEA,UAAS8I,CAAT,EAAYwR,EAAZ,EAAe;AAAE,UAAOA,EAAP;AAAY,GAF7B,EAGpBta,OAHoB,CAGZ,UAHY,EAGA,UAAS8I,CAAT,EAAYwR,EAAZ,EAAe;AAAE,UAAOA,EAAP;AAAY,GAH7B,CAAtB;;AAKA;AACA,MAAI,oDAAoDC,IAApD,CAAyDH,eAAzD,CAAJ,EAA+E;AAC7E,UAAOF,SAAP;AACD;;AAED;AACA,MAAIM,MAAJ;;AAEA,MAAIJ,gBAAgB7d,OAAhB,CAAwB,IAAxB,MAAkC,CAAtC,EAAyC;AACtC;AACFie,YAASJ,eAAT;AACA,GAHD,MAGO,IAAIA,gBAAgB7d,OAAhB,CAAwB,GAAxB,MAAiC,CAArC,EAAwC;AAC9C;AACAie,YAASZ,UAAUQ,eAAnB,CAF8C,CAEV;AACpC,GAHM,MAGA;AACN;AACAI,YAAST,aAAaK,gBAAgBpa,OAAhB,CAAwB,OAAxB,EAAiC,EAAjC,CAAtB,CAFM,CAEsD;AAC5D;;AAED;AACA,SAAO,SAASrE,KAAKoI,SAAL,CAAeyW,MAAf,CAAT,GAAkC,GAAzC;AACA,EA5Bc,CAAf;;AA8BA;AACA,QAAOP,QAAP;AACA,CA1ED,C;;;;;;;;;;;ACdA;AACA;;;;;;;;;;;;;;;;ACDA3X,OAAOC,OAAP,GAAiB,UAASD,MAAT,EAAiB;AACjC,KAAI,CAACA,OAAOmY,eAAZ,EAA6B;AAC5BnY,SAAOoY,SAAP,GAAmB,YAAW,CAAE,CAAhC;AACApY,SAAOqY,KAAP,GAAe,EAAf;AACA;AACA,MAAI,CAACrY,OAAOmP,QAAZ,EAAsBnP,OAAOmP,QAAP,GAAkB,EAAlB;AACtB/X,SAAO6P,cAAP,CAAsBjH,MAAtB,EAA8B,QAA9B,EAAwC;AACvC4G,eAAY,IAD2B;AAEvCsG,QAAK,eAAW;AACf,WAAOlN,OAAOkH,CAAd;AACA;AAJsC,GAAxC;AAMA9P,SAAO6P,cAAP,CAAsBjH,MAAtB,EAA8B,IAA9B,EAAoC;AACnC4G,eAAY,IADuB;AAEnCsG,QAAK,eAAW;AACf,WAAOlN,OAAOT,CAAd;AACA;AAJkC,GAApC;AAMAS,SAAOmY,eAAP,GAAyB,CAAzB;AACA;AACD,QAAOnY,MAAP;AACA,CArBD,C","file":"easy-forms-block.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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./blocks/index.js\");\n","// Import dependencies\r\nimport yikes_easy_forms_fetch_forms from './get-forms.js';\r\n\r\nimport get_recaptcha from './get-recaptcha.js';\r\n\r\nimport slugify from './slugify.js';\r\n\r\nimport countries from './countries.js';\r\n\r\nimport states from './states.js';\r\n\r\nimport locales from './locales.js';\r\n\r\n// Get functions / blocks / components\r\nconst Recaptcha = require( 'react-recaptcha' );\r\nconst { __ } = wp.i18n;\r\nconst { registerBlockType } = wp.blocks;\r\nconst { RichText, InspectorControls, PlainText } = wp.editor;\r\nconst { Spinner, TextControl, PanelBody, PanelRow, FormToggle, SelectControl } = wp.components;\r\nconst { Component } = wp.element;\r\n\r\nexport default class MailChimpForms extends Component {\r\n constructor( props ) {\r\n super( ...arguments );\r\n this.state = {\r\n forms : [],\r\n recaptcha_data: {\r\n data : {},\r\n success: false\r\n }\r\n }\r\n\r\n this.address_fields = {\r\n 'addr1' : 'Address 1', \r\n 'addr2' : 'Address 2', \r\n 'city' : 'City', \r\n 'state' : 'State', \r\n 'zip' : 'Zip',\r\n 'country': 'Country'\r\n }\r\n }\r\n\r\n /**\r\n * Run our API calls after the component has mounted. You can't use setState before a component is mounted.\r\n */\r\n componentDidMount() {\r\n yikes_easy_forms_fetch_forms()\r\n .then( forms => {\r\n this.setState( { forms: forms.data } );\r\n });\r\n\r\n get_recaptcha()\r\n .then( recaptcha_data => {\r\n this.setState( { recaptcha_data: recaptcha_data } );\r\n });\r\n }\r\n\r\n handleFormFieldChanges( event ) {\r\n \t// console.log( event );\r\n \t\r\n \t// console.log( value );\r\n \t// console.log( this );\r\n \t// console.log( typeof this.setState );\r\n\r\n \t// const target = event.target;\r\n // const value = target.type === 'checkbox' ? target.checked : target.value;\r\n // const name = target.name;\r\n\r\n // return this.setState( { [name]: value } );\r\n }\r\n\r\n inspector_controls() {\r\n\r\n const inline = (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"inline-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n >\r\n { __( 'Inline' ) }\r\n </label>\r\n <FormToggle\r\n id=\"inline-form-toggle\"\r\n label={ __( 'Inline' ) }\r\n checked={ !! this.props.inline }\r\n onChange={ this.props.toggleInline }\r\n />\r\n </PanelRow>\r\n )\r\n\r\n const show_form_title = (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"show-title-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n >\r\n { __( 'Show Form Title' ) }\r\n </label>\r\n <FormToggle\r\n id=\"show-title-form-toggle\"\r\n label={ __( 'Show Form Title' ) }\r\n checked={ !! this.props.showTitle }\r\n onChange={ this.props.toggleShowTitle }\r\n />\r\n </PanelRow>\r\n )\r\n\r\n const show_form_description = (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"show-description-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n >\r\n { __( 'Show Form Description' ) }\r\n </label>\r\n <FormToggle\r\n id=\"show-description-form-toggle\"\r\n label={ __( 'Show Form Description' ) }\r\n checked={ !! this.props.showDescription }\r\n onChange={ this.props.toggleShowDescription }\r\n />\r\n </PanelRow>\r\n )\r\n\r\n const is_ajax = (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"is-ajax-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n >\r\n { __( 'AJAX Submissions' ) }\r\n </label>\r\n <FormToggle\r\n id=\"is-ajax-form-toggle\"\r\n label={ __( 'AJAX' ) }\r\n checked={ !! this.props.isAjax }\r\n onChange={ this.props.toggleIsAjax }\r\n />\r\n </PanelRow>\r\n )\r\n\r\n const recaptcha = (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"recaptcha-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n >\r\n { __( 'reCAPTCHA' ) }\r\n </label>\r\n <FormToggle\r\n id=\"recaptcha-form-toggle\"\r\n label={ __( 'reCAPTCHA' ) }\r\n checked={ !! this.props.recaptcha }\r\n onChange={ this.props.toggleRecaptcha }\r\n />\r\n </PanelRow>\r\n )\r\n\r\n const recaptcha_type = !! this.props.recaptcha ?\r\n (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"recaptcha-type-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n >\r\n { __( 'reCAPTCHA Type' ) }\r\n </label>\r\n <SelectControl\r\n value={ this.props.recaptchaType }\r\n options={ [ { value: 'image', label: 'Image' }, { value: 'audio', 'label': 'Audio' } ] }\r\n onChange={ this.props.toggleRecaptchaType }\r\n />\r\n </PanelRow>\r\n )\r\n : '';\r\n\r\n const recaptcha_theme = !! this.props.recaptcha ?\r\n (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"recaptcha-theme-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n >\r\n { __( 'reCAPTCHA Theme' ) }\r\n </label>\r\n <SelectControl\r\n value={ this.props.recaptchaTheme }\r\n options={ [ { value: 'light', label: 'Light' }, {value: 'dark', 'label': 'Dark' } ] }\r\n onChange={ this.props.toggleRecaptchaTheme }\r\n />\r\n </PanelRow>\r\n )\r\n : '';\r\n\r\n const recaptcha_lang = !! this.props.recaptcha ?\r\n (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"recaptcha-language-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n title={ this.state.recaptcha_data.data ? 'The default language for your locale is ' + locales[ this.state.recaptcha_data.data.locale ] : '' }\r\n >\r\n { __( 'reCAPTCHA Language' ) }\r\n </label>\r\n <SelectControl\r\n id=\"recaptcha-language-form-toggle\"\r\n value={ this.props.recaptchaLang.length > 0 ? this.props.recaptchaLang : ( this.state.recaptcha_data.data ? this.state.recaptcha_data.data.locale : '' ) }\r\n onChange={ this.props.toggleRecaptchaLang }\r\n title={ this.state.recaptcha_data.data ? 'The default language for your locale is ' + locales[ this.state.recaptcha_data.data.locale ] : '' }\r\n options={ Object.keys( locales ).map( ( key ) => { return { value: key, label: locales[key] } }) }\r\n />\r\n </PanelRow>\r\n )\r\n : '';\r\n\r\n const recaptcha_size = !! this.props.recaptcha ?\r\n (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"recaptcha-size-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n >\r\n { __( 'reCAPTCHA Size' ) }\r\n </label>\r\n <SelectControl\r\n id=\"recaptcha-size-form-toggle\"\r\n value={ this.props.recaptchaSize }\r\n onChange={ this.props.toggleRecaptchaSize }\r\n options={ [ { value: 'normal', label: 'Normal' }, { value: 'compact', label: 'Compact' } ] }\r\n />\r\n </PanelRow>\r\n )\r\n : '';\r\n\r\n const recaptcha_verify_callback = !! this.props.recaptcha ?\r\n (\r\n <TextControl\r\n id=\"recaptcha-verify-callback-form-toggle\"\r\n label={ __( 'reCAPTCHA Verify Callback' ) }\r\n value={ this.props.recaptchaVerifyCallback }\r\n onChange={ this.props.toggleRecaptchaVerifyCallback }\r\n />\r\n )\r\n : '';\r\n\r\n const recaptcha_expired_callback = !! this.props.recaptcha ?\r\n (\r\n <TextControl\r\n id=\"recaptcha-expired-callback-form-toggle\"\r\n label={ __( 'reCAPTCHA Expired Callback' ) }\r\n value={ this.props.recaptchaExpiredCallback }\r\n onChange={ this.props.toggleRecaptchaExpiredCallback }\r\n />\r\n )\r\n : '';\r\n\r\n const inspector_controls = \r\n <InspectorControls key=\"easy-forms-inspector\">\r\n\r\n <PanelBody title={ __( 'Settings' ) } >\r\n {inline}\r\n {show_form_title}\r\n {show_form_description}\r\n {is_ajax}\r\n {recaptcha}\r\n {recaptcha_type}\r\n {recaptcha_theme}\r\n {recaptcha_lang}\r\n {recaptcha_size}\r\n {recaptcha_verify_callback}\r\n {recaptcha_expired_callback}\r\n </PanelBody>\r\n\r\n </InspectorControls>\r\n\r\n return inspector_controls;\r\n }\r\n\r\n forms_dropdown() {\r\n return this.state.forms.length > 0 ? \r\n <select \r\n value={ this.props.formID } \r\n onChange={ this.props.onChangeForm } \r\n className=\"yikes-mailchimp-forms-dropdown\"\r\n key=\"yikes-mailchimp-forms-dropdown\"\r\n >\r\n <option key=\"select\" value=\"\">Select MailChimp Form...</option>\r\n { this.state.forms.map( ( form ) => {\r\n return <option key={ 'yikes-select-form-' + form.id } value={ form.id }>{ form.form_name }</option>\r\n })}\r\n </select> \r\n : '';\r\n }\r\n\r\n form_title() {\r\n return this.props.showTitle === true ?\r\n ( this.props.focus ? \r\n <h3 \r\n className={ \"yikes-mailchimp-form-title yikes-mailchimp-form-title-\" + this.props.formID }\r\n key=\"yikes-mailchimp-form-title-wrapper\"\r\n >\r\n <PlainText\r\n placeholder={ this.props.formTitle }\r\n key=\"yikes-mailchimp-form-title-editable\"\r\n value={ this.props.formTitle }\r\n onChange={ this.props.toggleFormTitle }\r\n />\r\n </h3>\r\n :\r\n <h3 className={ \"yikes-mailchimp-form-title yikes-mailchimp-form-title-\" + this.props.formID } key=\"yikes-mailchimp-form-title\">\r\n { this.props.formTitle }\r\n </h3> \r\n ) : ''; \r\n }\r\n\r\n form_description() {\r\n return this.props.showDescription === true ?\r\n <section className={ \"yikes-mailchimp-form-description yikes-mailchimp-form-description-\" + this.props.formID } key=\"yikes-mailchimp-form-description\">\r\n <PlainText\r\n className=\"mailchimpDescription\"\r\n placeholder={ __( 'Enter your form\\'s description here.' ) /*( this.props.formData && this.props.formData.form_description && this.props.formData.form_description.length > 0 || this.props.descriptionValue && this.props.descriptionValue.length > 0 ) ? '' : __( 'Enter your form\\'s description here.' )*/ }\r\n value={ this.props.descriptionValue.length > 0 ? this.props.descriptionValue : ( this.props.formData && this.props.formData.form_description ? this.props.formData.form_description : '' ) }\r\n onChange={ this.props.onChangeDescription }\r\n key=\"mailchimpDescription\"\r\n />\r\n </section> \r\n : ''; \r\n }\r\n\r\n get_address_field( addr_field, field ) {\r\n switch( addr_field ) {\r\n\r\n case 'addr1':\r\n case 'addr2':\r\n case 'city':\r\n case 'zip':\r\n return (\r\n <TextControl\r\n id={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge + '-' + addr_field }\r\n onChange={ this.handleFormFieldChanges }\r\n type=\"text\"\r\n name={ field.merge + '[' + addr_field + ']' }\r\n className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }\r\n key= { 'yikes-mailchimp-field-' + field.merge + '-' + addr_field }\r\n required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }\r\n placeholder={ field.placeholder === '1' ? this.address_fields[ addr_field ] : '' }\r\n />\r\n )\r\n break;\r\n\r\n case 'state':\r\n return (\r\n <select \r\n id={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge + '-' + addr_field } \r\n name={ field.merge + '[' + addr_field + ']' }\r\n className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }\r\n onChange={ this.handleFormFieldChanges }\r\n key= { 'yikes-mailchimp-field-' + field.merge + '-' + addr_field }\r\n value=''\r\n required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }\r\n >\r\n { Object.keys( states ).map( ( key ) => {\r\n var choice = states[ key ];\r\n return <option key={ 'state-' + key } value={ key }>{ choice }</option>\r\n })}\r\n \r\n </select>\r\n )\r\n break;\r\n\r\n case 'country':\r\n return (\r\n <select \r\n id={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge + '-' + addr_field } \r\n name={ field.merge + '[' + addr_field + ']' }\r\n className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }\r\n onChange={ this.handleFormFieldChanges }\r\n key= { 'yikes-mailchimp-field-' + field.merge + '-' + addr_field }\r\n value=''\r\n required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }\r\n >\r\n { Object.keys( countries ).map( ( key ) => {\r\n var choice = countries[ key ];\r\n return <option key={ 'country-' + key } value={ key }>{ choice }</option>\r\n })}\r\n \r\n </select>\r\n )\r\n break;\r\n }\r\n }\r\n\r\n get_dropdown_field( field ) {\r\n return (\r\n <select \r\n id={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge }\r\n name={ field.merge }\r\n className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }\r\n onChange={ this.handleFormFieldChanges }\r\n key= { 'yikes-mailchimp-field-' + field.merge }\r\n value={ JSON.parse( field.choices )[ field.default_choice ] }\r\n required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }\r\n >\r\n { Object.keys( JSON.parse( field.choices ) ).map( ( key ) => {\r\n var choice = JSON.parse( field.choices )[ key ];\r\n return <option key={ slugify( choice ) } value={ choice }>{ choice }</option>\r\n })}\r\n </select>\r\n )\r\n }\r\n\r\n get_radio_field( field ) {\r\n var ii = 0;\r\n\r\n return (\r\n JSON.parse( field.choices ).map( ( key ) => {\r\n ii++;\r\n return (\r\n <label \r\n htmlFor={ field.merge + '-' + ii }\r\n className=\"yikes-easy-mc-checkbox-label\"\r\n key={ field.merge + '-label-radio-key-' + ii }\r\n >\r\n <input\r\n type=\"radio\"\r\n name={ field.merge }\r\n id={ field.merge + '-' + ii }\r\n key={ field.merge + '-' + ii + '-input-key' }\r\n value={ key }\r\n onChange={ this.handleFormFieldChanges }\r\n checked={ parseInt( field.default_choice ) === ( ii - 1 ) }\r\n />\r\n <span key={ field.merge + '-span-radio-key-' + ii } className={ field.merge + '-label' }>{ key }</span>\r\n </label>\r\n )\r\n })\r\n )\r\n }\r\n\r\n get_url_field( field ) {\r\n return (\r\n <TextControl\r\n id={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge }\r\n placeholder={ field.placeholder }\r\n onChange={ this.handleFormFieldChanges }\r\n type='url'\r\n value={ field.default }\r\n name={ field.merge }\r\n className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }\r\n key= { 'yikes-mailchimp-field-' + field.merge }\r\n required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }\r\n title={ field.type === 'url' ? __( 'Please enter a valid URL to the website.' ) : __( 'Please enter a valid URL to the image.' ) }\r\n />\r\n )\r\n }\r\n\r\n get_default_field( field ) {\r\n\r\n var type = field.type === 'zip' || field.type === 'phone' ? 'text' : field.type;\r\n\r\n return (\r\n <TextControl\r\n id={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge }\r\n placeholder={ field.placeholder }\r\n onChange={ this.handleFormFieldChanges }\r\n type={ type }\r\n value={ field.default }\r\n name={ field.merge }\r\n className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }\r\n key= { 'yikes-mailchimp-field-' + field.merge }\r\n required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }\r\n />\r\n )\r\n }\r\n\r\n get_date_field( field ) {\r\n return (\r\n <TextControl\r\n id={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge }\r\n placeholder={ field.placeholder }\r\n onChange={ this.handleFormFieldChanges }\r\n type='text'\r\n value={ field.default }\r\n name={ field.merge }\r\n className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }\r\n key= { 'yikes-mailchimp-field-' + field.merge }\r\n required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }\r\n data-attr-type={ field.type }\r\n data-date-format={ field.date_format.toLowerCase() }\r\n />\r\n )\r\n }\r\n\r\n get_radio_interest_group( field ) {\r\n var ii = -1;\r\n var cn = \"yikes-easy-mc-checkbox-label \" + field['additional-classes'];\r\n\r\n return (\r\n Object.keys( JSON.parse( field.groups ) ).map( ( key ) => {\r\n var choice = JSON.parse( field.groups )[ key ];\r\n ii++;\r\n return (\r\n <label\r\n htmlFor={ field.group_id + '-' + ii }\r\n className={ { [cn]: true, 'field-no-label': field['hide-label'] === '1' } }\r\n key={ field.group_id + '-' + ii + '-label-key' }\r\n >\r\n <input\r\n type=\"radio\"\r\n name={\"group-\" + field.group_id + '[]' }\r\n id={ field.group_id + '-' + ii }\r\n key={ field.group_id + '-' + ii + '-input-key' }\r\n value={ key }\r\n onChange={ this.handleFormFieldChanges }\r\n checked={ key === field.default_choice }\r\n className={ { 'yikes-interest-group-required': field.require === '1' } }\r\n />\r\n { choice }\r\n </label>\r\n )\r\n })\r\n )\r\n }\r\n\r\n get_hidden_interest_group( field ) {\r\n var ii = -1;\r\n\r\n return (\r\n Object.keys( JSON.parse( field.groups ) ).map( ( key ) => {\r\n var choice = JSON.parse( field.groups )[ key ];\r\n ii++;\r\n return (\r\n <label\r\n htmlFor={ field.group_id + '-' + ii }\r\n className={ 'yikes-easy-mc-checkbox-label ' + field['additional-classes'] }\r\n key={ field.group_id + '-' + ii + '-label-key' }\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name={\"group-\" + field.group_id + '[]' }\r\n id={ field.group_id + '-' + ii }\r\n key={ field.group_id + '-' + ii + '-input-key' }\r\n value={ key }\r\n onChange={ this.handleFormFieldChanges }\r\n checked={ field.default_choice.indexOf( key ) !== -1 }\r\n />\r\n { choice }\r\n </label>\r\n )\r\n })\r\n )\r\n }\r\n\r\n get_checkboxes_interest_group( field ) {\r\n var ii = -1;\r\n var cn = 'yikes-easy-mc-checkbox-label ' + field['additional-classes'];\r\n\r\n return (\r\n Object.keys( JSON.parse( field.groups ) ).map( ( key ) => {\r\n var choice = JSON.parse( field.groups )[ key ];\r\n ii++;\r\n return (\r\n <label\r\n htmlFor={ field.group_id + '-' + ii }\r\n className={ { [cn]: true, 'field-no-label': field['hide-label'] === '1' } }\r\n key={ field.group_id + '-' + ii + '-label-key' }\r\n >\r\n <input\r\n className={ { 'yikes-interest-group-required': field.require === '1' } }\r\n type=\"checkbox\"\r\n name={ 'group-' + field.group_id + '[]' }\r\n id={ field.group_id + '-' + ii }\r\n key={ field.group_id + '-' + ii + '-input-key' }\r\n value={ key }\r\n onChange={ this.handleFormFieldChanges }\r\n checked={ typeof field.default_choice !== 'undefined' && field.default_choice.indexOf( key ) !== -1 }\r\n required={ field.require === '1' ? 'required' : false }\r\n />\r\n { choice }\r\n </label>\r\n )\r\n })\r\n )\r\n }\r\n\r\n get_dropdown_interest_group( field ) {\r\n var ii = -1;\r\n\r\n return (\r\n <select \r\n id={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.group_id } \r\n name={ \"group-\" + field.group_id }\r\n className={ \"yikes-easy-mc-dropdown \" + field['additional-classes'] }\r\n value={ field.default_choice }\r\n onChange={ this.handleFormFieldChanges }\r\n required={ field.require === '1' ? 'required' : false }\r\n >\r\n\r\n { Object.keys( JSON.parse( field.groups ) ).map( ( key ) => {\r\n var choice = JSON.parse( field.groups )[ key ];\r\n ii++;\r\n return (\r\n <option key={ field.group_id + '-' + ii + '-input-key' } value={ key }>{ choice }</option>\r\n )\r\n })}\r\n </select>\r\n )\r\n }\r\n\r\n form_fields() {\r\n\r\n return this.props.formData && this.props.formData.fields ?\r\n Object.keys( this.props.formData.fields ).map( ( key ) => {\r\n\r\n var field = this.props.formData.fields[ key ];\r\n\r\n // Form Fields (aka merge variables)\r\n if ( typeof field.merge !== 'undefined' ) {\r\n\r\n var desc = field.description.length > 0 ? \r\n <p className=\"form-field-description\" id={ \"form-field-description-\" + field.merge } key={ \"form-field-description-\" + field.merge }>{ field.description }</p>\r\n : '';\r\n\r\n var label = field['hide-label'] !== '1' ? <span className={ field.merge + '-label' } key={ field.merge + '-label-span-key' }>{ field.label }</span> : '';\r\n\r\n var classes = {'yikes-mailchimp-field-required' : field.merge === 'EMAIL' || field.require === '1' }\r\n classes[ field.merge + '-label'] = true;\r\n\r\n if ( field.type === 'address' ) {\r\n\r\n return ([\r\n field.description_above === '1' && field.description.length > 0 && desc,\r\n Object.keys( this.address_fields ).map( ( addr_field ) => {\r\n label = field['hide-label'] !== '1' ? <span className={ field.merge + '-label' } key={ field.merge + '-label-span-key-' + addr_field }>{ this.address_fields[ addr_field ] }</span> : '';\r\n\r\n return (\r\n <label \r\n htmlFor={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge + '-' + addr_field } \r\n className={ classes } \r\n key={ field.merge + '-label-key-' + addr_field }\r\n style={ field.hide === '1' ? { 'display': 'none' } : {} }\r\n >\r\n { label }\r\n { this.get_address_field( addr_field, field ) }\r\n </label> \r\n )\r\n }),\r\n field.description_above !== '1' && field.description.length > 0 && desc\r\n ])\r\n } else {\r\n return (\r\n <label \r\n htmlFor={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge } \r\n className={ classes } \r\n key={ field.merge + '-label-key' }\r\n style={ field.hide === '1' ? { 'display': 'none' } : {} }\r\n >\r\n { label }\r\n\r\n { field.description_above === '1' && field.description.length > 0 && desc }\r\n\r\n { \r\n ( field.type === 'dropdown' ? this.get_dropdown_field( field ) :\r\n ( field.type === 'radio' ? this.get_radio_field( field ) : \r\n ( field.type === 'url' || field.type === 'imageurl' ? this.get_url_field( field ) :\r\n ( field.type === 'date' || field.type === 'birthday' ? this.get_date_field( field ) :\r\n this.get_default_field( field ) ) ) ) )\r\n }\r\n\r\n { field.description_above !== '1' && field.description.length > 0 && desc }\r\n\r\n </label>\r\n )\r\n }\r\n } else {\r\n\r\n var desc = field.description.length > 0 ? \r\n <p className=\"form-field-description\" id={ \"form-field-description-\" + field.group_id } key={ \"form-field-description-\" + field.group_id }>{ field.description }</p>\r\n : '';\r\n\r\n var label = field['hide-label'] !== '1' ?\r\n <span key={ field.group_id + \"-label-span-key\" } className={ field.group_id + \"-label checkbox-parent-label\" }>{ field.label }</span> \r\n : '';\r\n\r\n var classes = { 'yikes-mailchimp-field-required' : field.require === '1' }\r\n classes[ field.group_id + '-label'] = true;\r\n\r\n return ( \r\n <label \r\n htmlFor={ field.group_id }\r\n className= { classes }\r\n key={ field.group_id + \"-label-span-key\" }\r\n style={ field.type === 'hidden' || field.hide === '1' ? { 'display': 'none' } : {} }\r\n >\r\n\r\n { label }\r\n\r\n { field.description_above === '1' && field.description.length > 0 && desc }\r\n\r\n {\r\n ( field.type === 'radio' ? this.get_radio_interest_group( field ) :\r\n ( field.type === 'hidden' ? this.get_hidden_interest_group( field ) : \r\n ( field.type === 'checkboxes' ? this.get_checkboxes_interest_group( field ) :\r\n ( field.type === 'dropdown' ? this.get_dropdown_interest_group( field ) : '' ) ) ) )\r\n }\r\n\r\n { field.description_above !== '1' && field.description.length > 0 && desc }\r\n\r\n </label>\r\n )\r\n }\r\n })\r\n : '';\r\n }\r\n\r\n form_recaptcha() {\r\n\r\n return this.state.recaptcha_data.success === true && this.state.recaptcha_data.data.site_key && this.props.recaptcha === true ? \r\n <Recaptcha\r\n sitekey={ this.state.recaptcha_data.data.site_key }\r\n key={ 'easy-forms-recaptcha-1' }\r\n elementID={ 'google-recaptcha-id-' + Math.random().toString(36).slice(-8) } // Need to use a unique ID for multiple reCAPTCHAs to work on the same page.\r\n theme={ this.props.recaptchaTheme }\r\n hl={ this.props.recaptchaLang.length > 0 ? this.props.recaptchaLang : this.state.recaptcha_data.data.locale }\r\n type={ this.props.recaptchaType }\r\n size={ this.props.recaptchaSize }\r\n verifyCallback=''\r\n expiredCallback=''\r\n />\r\n : ''; \r\n }\r\n\r\n submit_button() {\r\n return this.props.formData && this.props.formData.fields ?\r\n ( this.props.focus && this.props.formData.form_settings['yikes-easy-mc-submit-button-type'] === 'text' ?\r\n <button\r\n type=\"submit\"\r\n key=\"mailchimpSubmitButton\"\r\n className={ \"yikes-easy-mc-submit-button yikes-easy-mc-submit-button-\" + this.props.formID + \" btn btn-primary\" + \" \" + this.props.formData.form_settings['yikes-easy-mc-submit-button-classes'] }\r\n >\r\n <PlainText\r\n className=\"yikes-mailchimp-submit-button-span-text\"\r\n key=\"yikes-mailchimp-submit-button-span-text\"\r\n value={ this.props.submitButtonText ? this.props.submitButtonText : '' }\r\n onChange={ this.props.toggleSubmitButtonText }\r\n />\r\n </button>\r\n :\r\n ( this.props.formData.form_settings['yikes-easy-mc-submit-button-type'] === 'text' ? \r\n <button\r\n type=\"submit\"\r\n key=\"mailchimpSubmitButton\"\r\n className={ \"yikes-easy-mc-submit-button yikes-easy-mc-submit-button-\" + this.props.formID + \" btn btn-primary\" + \" \" + this.props.formData.form_settings['yikes-easy-mc-submit-button-classes'] }\r\n >\r\n <span className=\"yikes-mailchimp-submit-button-span-text\" key=\"yikes-mailchimp-submit-button-span-text\">{ this.props.submitButtonText }</span>\r\n </button>\r\n :\r\n <input\r\n type=\"image\"\r\n alt={ this.props.submitButtonText }\r\n src={ this.props.formData.form_settings['yikes-easy-mc-submit-button-image'] }\r\n className={ \"yikes-easy-mc-submit-button yikes-easy-mc-submit-button-image yikes-easy-mc-submit-button-\" + this.props.formID + \" btn btn-primary\" + \" \" + this.props.formData.form_settings['yikes-easy-mc-submit-button-classes'] }\r\n />\r\n )\r\n )\r\n : '';\r\n }\r\n\r\n get_form_section() {\r\n return (\r\n <section \r\n id={ \"yikes-mailchimp-container-\" + this.props.formID } \r\n className={ \"yikes-mailchimp-container yikes-mailchimp-container-\" + this.props.formID }\r\n key=\"yikes-mailchimp-container-section\"\r\n >\r\n {[\r\n\r\n // Form title\r\n [this.form_title()],\r\n\r\n // Form Description\r\n [this.form_description()],\r\n\r\n // Get the form\r\n [this.get_form()] \r\n ]}\r\n </section>\r\n );\r\n }\r\n\r\n get_form() {\r\n return (\r\n // Form Wrapper\r\n <form\r\n id={ slugify( this.props.formTitle ) + '-' + this.props.formID }\r\n className={ \"yikes-easy-mc-form yikes-easy-mc-form-\" + this.props.formID + \" \" + this.props.formData.form_settings['yikes-easy-mc-form-class-names'] }\r\n key=\"yikes-mailchimp-container-form\"\r\n >\r\n {[\r\n\r\n // Form fields\r\n [this.form_fields()],\r\n\r\n // Recaptcha\r\n [this.form_recaptcha()],\r\n\r\n // Submit button\r\n [this.submit_button()]\r\n ]}\r\n </form>\r\n );\r\n }\r\n\r\n render() {\r\n\r\n if ( this.state.forms.length > 0 && this.props.formData && Object.keys( this.props.formData ).length > 0 ) {\r\n\r\n \t return (\r\n\r\n <div className={ this.props.className }>\r\n\r\n {// Show inspector controls when focused\r\n this.props.focus && this.inspector_controls()}\r\n\r\n {// Show the forms dropdown\r\n this.forms_dropdown()}\r\n\r\n <hr key=\"easy-forms-dropdown-divider\"/>\r\n\r\n {// Show the form\r\n this.get_form_section()}\r\n </div>\r\n \r\n \t );\r\n\r\n \t} else if ( this.state.forms.length > 0 ) {\r\n\r\n // If we don't have form data, show the forms dropdown\r\n \t\treturn ( \r\n <div className={ this.props.className }>\r\n {this.forms_dropdown()}\r\n </div>\r\n );\r\n\r\n \t} else {\r\n\r\n // Show loading... & spinner\r\n \t\treturn (\r\n <p key=\"loading-easy-forms\" className={ this.props.className }>\r\n <span key=\"yikes-easy-forms-loading-text\">Loading...</span>\r\n <Spinner key=\"yikes-easy-forms-loading-spinner\" />\r\n </p>\r\n );\r\n \t}\r\n }\r\n}","const countries = {\r\n\t'US': 'United States',\r\n\t'GB': 'United Kingdom',\r\n\t'AF': 'Afghanistan',\r\n\t'AX': 'Aland Islands',\r\n\t'AL': 'Albania',\r\n\t'DZ': 'Algeria',\r\n\t'AS': 'American Samoa',\r\n\t'AD': 'Andorra',\r\n\t'AO': 'Angola',\r\n\t'AI': 'Anguilla',\r\n\t'AQ': 'Antarctica',\r\n\t'AG': 'Antigua and Barbuda',\r\n\t'AR': 'Argentina',\r\n\t'AM': 'Armenia',\r\n\t'AW': 'Aruba',\r\n\t'AU': 'Australia',\r\n\t'AT': 'Austria',\r\n\t'AZ': 'Azerbaijan',\r\n\t'BS': 'Bahamas',\r\n\t'BH': 'Bahrain',\r\n\t'BD': 'Bangladesh',\r\n\t'BB': 'Barbados',\r\n\t'BY': 'Belarus',\r\n\t'BE': 'Belgium',\r\n\t'BZ': 'Belize',\r\n\t'BJ': 'Benin',\r\n\t'BM': 'Bermuda',\r\n\t'BT': 'Bhutan',\r\n\t'BO': 'Bolivia',\r\n\t'BA': 'Bosnia and Herzegovina',\r\n\t'BW': 'Botswana',\r\n\t'BV': 'Bouvet Island',\r\n\t'BR': 'Brazil',\r\n\t'IO': 'British Indian Ocean Territory',\r\n\t'BN': 'Brunei Darussalam',\r\n\t'BG': 'Bulgaria',\r\n\t'BF': 'Burkina Faso',\r\n\t'BI': 'Burundi',\r\n\t'KH': 'Cambodia',\r\n\t'CM': 'Cameroon',\r\n\t'CA': 'Canada',\r\n\t'CV': 'Cape Verde',\r\n\t'KY': 'Cayman Islands',\r\n\t'CF': 'Central African Republic',\r\n\t'TD': 'Chad',\r\n\t'CL': 'Chile',\r\n\t'CN': 'China',\r\n\t'CX': 'Christmas Island',\r\n\t'CC': 'Cocos (Keeling) Islands',\r\n\t'CO': 'Colombia',\r\n\t'KM': 'Comoros',\r\n\t'CG': 'Congo',\r\n\t'CD': 'Congo, The Democratic Republic of The',\r\n\t'CK': 'Cook Islands',\r\n\t'CR': 'Costa Rica',\r\n\t'CI': 'Cote D’ivoire',\r\n\t'HR': 'Croatia',\r\n\t'CU': 'Cuba',\r\n\t'CY': 'Cyprus',\r\n\t'CZ': 'Czech Republic',\r\n\t'DK': 'Denmark',\r\n\t'DJ': 'Djibouti',\r\n\t'DM': 'Dominica',\r\n\t'DO': 'Dominican Republic',\r\n\t'EC': 'Ecuador',\r\n\t'EG': 'Egypt',\r\n\t'SV': 'El Salvador',\r\n\t'GQ': 'Equatorial Guinea',\r\n\t'ER': 'Eritrea',\r\n\t'EE': 'Estonia',\r\n\t'ET': 'Ethiopia',\r\n\t'FK': 'Falkland Islands (Malvinas)',\r\n\t'FO': 'Faroe Islands',\r\n\t'FJ': 'Fiji',\r\n\t'FI': 'Finland',\r\n\t'FR': 'France',\r\n\t'GF': 'French Guiana',\r\n\t'PF': 'French Polynesia',\r\n\t'TF': 'French Southern Territories',\r\n\t'GA': 'Gabon',\r\n\t'GM': 'Gambia',\r\n\t'GE': 'Georgia',\r\n\t'DE': 'Germany',\r\n\t'GH': 'Ghana',\r\n\t'GI': 'Gibraltar',\r\n\t'GR': 'Greece',\r\n\t'GL': 'Greenland',\r\n\t'GD': 'Grenada',\r\n\t'GP': 'Guadeloupe',\r\n\t'GU': 'Guam',\r\n\t'GT': 'Guatemala',\r\n\t'GG': 'Guernsey',\r\n\t'GN': 'Guinea',\r\n\t'GW': 'Guinea-bissau',\r\n\t'GY': 'Guyana',\r\n\t'HT': 'Haiti',\r\n\t'HM': 'Heard Island and Mcdonald Islands',\r\n\t'VA': 'Holy See (Vatican City State)',\r\n\t'HN': 'Honduras',\r\n\t'HK': 'Hong Kong',\r\n\t'HU': 'Hungary',\r\n\t'IS': 'Iceland',\r\n\t'IN': 'India',\r\n\t'ID': 'Indonesia',\r\n\t'IR': 'Iran, Islamic Republic of',\r\n\t'IQ': 'Iraq',\r\n\t'IE': 'Ireland',\r\n\t'IM': 'Isle of Man',\r\n\t'IL': 'Israel',\r\n\t'IT': 'Italy',\r\n\t'JM': 'Jamaica',\r\n\t'JP': 'Japan',\r\n\t'JE': 'Jersey',\r\n\t'JO': 'Jordan',\r\n\t'KZ': 'Kazakhstan',\r\n\t'KE': 'Kenya',\r\n\t'KI': 'Kiribati',\r\n\t'KP': 'Korea, Democratic People’s Republic of',\r\n\t'KR': 'Korea, Republic of',\r\n\t'KW': 'Kuwait',\r\n\t'KG': 'Kyrgyzstan',\r\n\t'LA': 'Lao People’s Democratic Republic',\r\n\t'LV': 'Latvia',\r\n\t'LB': 'Lebanon',\r\n\t'LS': 'Lesotho',\r\n\t'LR': 'Liberia',\r\n\t'LY': 'Libyan Arab Jamahiriya',\r\n\t'LI': 'Liechtenstein',\r\n\t'LT': 'Lithuania',\r\n\t'LU': 'Luxembourg',\r\n\t'MO': 'Macao',\r\n\t'MK': 'Macedonia, The Former Yugoslav Republic of',\r\n\t'MG': 'Madagascar',\r\n\t'MW': 'Malawi',\r\n\t'MY': 'Malaysia',\r\n\t'MV': 'Maldives',\r\n\t'ML': 'Mali',\r\n\t'MT': 'Malta',\r\n\t'MH': 'Marshall Islands',\r\n\t'MQ': 'Martinique',\r\n\t'MR': 'Mauritania',\r\n\t'MU': 'Mauritius',\r\n\t'YT': 'Mayotte',\r\n\t'MX': 'Mexico',\r\n\t'FM': 'Micronesia, Federated States of',\r\n\t'MD': 'Moldova, Republic of',\r\n\t'MC': 'Monaco',\r\n\t'MN': 'Mongolia',\r\n\t'ME': 'Montenegro',\r\n\t'MS': 'Montserrat',\r\n\t'MA': 'Morocco',\r\n\t'MZ': 'Mozambique',\r\n\t'MM': 'Myanmar',\r\n\t'NA': 'Namibia',\r\n\t'NR': 'Nauru',\r\n\t'NP': 'Nepal',\r\n\t'NL': 'Netherlands',\r\n\t'AN': 'Netherlands Antilles',\r\n\t'NC': 'New Caledonia',\r\n\t'NZ': 'New Zealand',\r\n\t'NI': 'Nicaragua',\r\n\t'NE': 'Niger',\r\n\t'NG': 'Nigeria',\r\n\t'NU': 'Niue',\r\n\t'NF': 'Norfolk Island',\r\n\t'MP': 'Northern Mariana Islands',\r\n\t'NO': 'Norway',\r\n\t'OM': 'Oman',\r\n\t'PK': 'Pakistan',\r\n\t'PW': 'Palau',\r\n\t'PS': 'Palestinian Territory, Occupied',\r\n\t'PA': 'Panama',\r\n\t'PG': 'Papua New Guinea',\r\n\t'PY': 'Paraguay',\r\n\t'PE': 'Peru',\r\n\t'PH': 'Philippines',\r\n\t'PN': 'Pitcairn',\r\n\t'PL': 'Poland',\r\n\t'PT': 'Portugal',\r\n\t'PR': 'Puerto Rico',\r\n\t'QA': 'Qatar',\r\n\t'RE': 'Reunion',\r\n\t'RO': 'Romania',\r\n\t'RU': 'Russian Federation',\r\n\t'RW': 'Rwanda',\r\n\t'SH': 'Saint Helena',\r\n\t'KN': 'Saint Kitts and Nevis',\r\n\t'LC': 'Saint Lucia',\r\n\t'PM': 'Saint Pierre and Miquelon',\r\n\t'VC': 'Saint Vincent and The Grenadines',\r\n\t'WS': 'Samoa',\r\n\t'SM': 'San Marino',\r\n\t'ST': 'Sao Tome and Principe',\r\n\t'SA': 'Saudi Arabia',\r\n\t'SN': 'Senegal',\r\n\t'RS': 'Serbia',\r\n\t'SC': 'Seychelles',\r\n\t'SL': 'Sierra Leone',\r\n\t'SG': 'Singapore',\r\n\t'SK': 'Slovakia',\r\n\t'SI': 'Slovenia',\r\n\t'SB': 'Solomon Islands',\r\n\t'SO': 'Somalia',\r\n\t'ZA': 'South Africa',\r\n\t'GS': 'South Georgia and The South Sandwich Islands',\r\n\t'ES': 'Spain',\r\n\t'LK': 'Sri Lanka',\r\n\t'SD': 'Sudan',\r\n\t'SR': 'Suriname',\r\n\t'SJ': 'Svalbard and Jan Mayen',\r\n\t'SZ': 'Swaziland',\r\n\t'SE': 'Sweden',\r\n\t'CH': 'Switzerland',\r\n\t'SY': 'Syrian Arab Republic',\r\n\t'TW': 'Taiwan, Province of China',\r\n\t'TJ': 'Tajikistan',\r\n\t'TZ': 'Tanzania, United Republic of',\r\n\t'TH': 'Thailand',\r\n\t'TL': 'Timor-leste',\r\n\t'TG': 'Togo',\r\n\t'TK': 'Tokelau',\r\n\t'TO': 'Tonga',\r\n\t'TT': 'Trinidad and Tobago',\r\n\t'TN': 'Tunisia',\r\n\t'TR': 'Turkey',\r\n\t'TM': 'Turkmenistan',\r\n\t'TC': 'Turks and Caicos Islands',\r\n\t'TV': 'Tuvalu',\r\n\t'UG': 'Uganda',\r\n\t'UA': 'Ukraine',\r\n\t'AE': 'United Arab Emirates',\r\n\t'UM': 'United States Minor Outlying Islands',\r\n\t'UY': 'Uruguay',\r\n\t'UZ': 'Uzbekistan',\r\n\t'VU': 'Vanuatu',\r\n\t'VE': 'Venezuela',\r\n\t'VN': 'Viet Nam',\r\n\t'VG': 'Virgin Islands, British',\r\n\t'VI': 'Virgin Islands, U.S.',\r\n\t'WF': 'Wallis and Futuna',\r\n\t'EH': 'Western Sahara',\r\n\t'YE': 'Yemen',\r\n\t'ZM': 'Zambia',\r\n\t'ZW': 'Zimbabwe',\r\n}\r\n\r\nexport default countries;","( function( $ ) {\r\n\r\n\t$( document ).ready( function() {\r\n\t\t\r\n\t\t$( 'body' ).on( 'click', '.yikes-easy-mc-submit-button', function( event ) { \r\n\t\t event.preventDefault();\r\n\t\t event.stopPropagation();\r\n\t\t $( '.yikes-mailchimp-submit-button-span-text' ).focus();\r\n\t\t}); \r\n\r\n\t\t$( 'body' ).on( 'click', '.yikes-mailchimp-submit-button-span-text', function( event ) {\r\n\t\t event.preventDefault();\r\n\t\t event.stopPropagation();\r\n\t\t});\r\n\t});\r\n\r\n})( jQuery );","export default function yikes_easy_forms_fetch_form( form_id ) {\r\n\tlet data = {\r\n\t\taction: 'yikes_get_form',\r\n\t\tform_id: form_id,\r\n\t\tnonce: ez_forms_gb_data.fetch_form_nonce\r\n\t}\r\n\r\n\tlet form = $.post( ez_forms_gb_data.ajax_url, data );\r\n\r\n\treturn form;\r\n}","export default function yikes_easy_forms_fetch_forms() {\r\n\r\n\tlet data = {\r\n\t\taction: 'yikes_get_forms',\r\n\t\tnonce: ez_forms_gb_data.fetch_forms_nonce,\r\n\t}\r\n\r\n\tlet forms = $.post( ez_forms_gb_data.ajax_url, data );\r\n\r\n\treturn forms;\r\n}","export default function get_recaptcha() {\r\n\r\n\tlet data = {\r\n\t\taction: 'yikes_get_recaptcha',\r\n\t\tnonce: ez_forms_gb_data.fetch_recaptcha_nonce\r\n\t}\r\n\r\n\tlet recaptcha_data = $.post( ez_forms_gb_data.ajax_url, data );\r\n\r\n\treturn recaptcha_data;\r\n}","const locales = {\r\n\t\"ar\" : \"Arabic\",\r\n\t\"af\" : \"Afrikaans\",\r\n\t\"am\" : \"Amharic\",\r\n\t\"hy\" : \"Armenian\",\r\n\t\"az\" : \"Azerbaijani\",\r\n\t\"eu\" : \"Basque\",\r\n\t\"bn\" : \"Bengali\",\r\n\t\"bg\" : \"Bulgarian\",\r\n\t\"ca\" : \"Catalan\",\r\n\t\"zh-HK\" : \"Chinese (Hong Kong)\",\r\n\t\"zh-CN\" : \"Chinese (Simplified)\",\r\n\t\"zh-TW\" : \"Chinese (Traditional)\",\r\n\t\"hr\" : \"Croatian\",\r\n\t\"cs\" : \"Czech\",\r\n\t\"da\" : \"Danish\",\r\n\t\"nl\" : \"Dutch\",\r\n\t\"en-GB\" : \"English (UK)\",\r\n\t\"en\" : \"English (US)\",\r\n\t\"et\" : \"Estonian\",\r\n\t\"fil\" : \"Filipino\",\r\n\t\"fi\" : \"Finnish\",\r\n\t\"fr\" : \"French\",\r\n\t\"fr-CA\" : \"French (Canadian)\",\r\n\t\"gl\" : \"Galician\",\r\n\t\"ka\" : \"Georgian\",\r\n\t\"de\" : \"German\",\r\n\t\"de-AT\" : \"German (Austria)\",\r\n\t\"de-CH\" : \"German (Switzerland)\",\r\n\t\"el\" : \"Greek\",\r\n\t\"gu\" : \"Gujarati\",\r\n\t\"iw\" : \"Hebrew\",\r\n\t\"hi\" : \"Hindi\",\r\n\t\"hu\" : \"Hungarain\",\r\n\t\"is\" : \"Icelandic\",\r\n\t\"id\" : \"Indonesian\",\r\n\t\"it\" : \"Italian\",\r\n\t\"ja\" : \"Japanese\",\r\n\t\"kn\" : \"Kannada\",\r\n\t\"ko\" : \"Korean\",\r\n\t\"lo\" : \"Laothian\",\r\n\t\"lv\" : \"Latvian\",\r\n\t\"lt\" : \"Lithuanian\",\r\n\t\"ms\" : \"Malay\",\r\n\t\"ml\" : \"Malayalam\",\r\n\t\"mr\" : \"Marathi\",\r\n\t\"mn\" : \"Mongolian\",\r\n\t\"no\" : \"Norwegian\",\r\n\t\"fa\" : \"Persian\",\r\n\t\"pl\" : \"Polish\",\r\n\t\"pt\" : \"Portuguese\",\r\n\t\"pt-BR\" : \"Portuguese (Brazil)\",\r\n\t\"pt-PT\" : \"Portuguese (Portugal)\",\r\n\t\"ro\" : \"Romanian\",\r\n\t\"ru\" : \"Russian\",\r\n\t\"sr\" : \"Serbian\",\r\n\t\"si\" : \"Sinhalese\",\r\n\t\"sk\" : \"Slovak\",\r\n\t\"sl\" : \"Slovenian\",\r\n\t\"es\" : \"Spanish\",\r\n\t\"es-419\" : \"Spanish (Latin America)\",\r\n\t\"sw\" : \"Swahili\",\r\n\t\"sv\" : \"Swedish\",\r\n\t\"ta\" : \"Tamil\",\r\n\t\"te\" : \"Telugu\",\r\n\t\"th\" : \"Thai\",\r\n\t\"tr\" : \"Turkish\",\r\n\t\"uk\" : \"Ukrainian\",\r\n\t\"ur\" : \"Urdu\",\r\n\t\"vi\" : \"Vietnamese\",\r\n\t\"zu\" : \"Zulu\"\r\n}\r\n\r\nexport default locales;","/*\r\n* This should have the same effect as WP/PHP's `sanitize_title()` function\r\n*\r\n* Source: https://gist.github.com/mathewbyrne/1280286\r\n*/\r\nexport default function slugify( text ) {\r\n\r\n // Use hash map for special characters \r\n let specialChars = {\"à\":'a',\"ä\":'a',\"á\":'a',\"â\":'a',\"æ\":'a',\"å\":'a',\"ë\":'e',\"è\":'e',\"é\":'e', \"ê\":'e',\"î\":'i',\"ï\":'i',\"ì\":'i',\"í\":'i',\"ò\":'o',\"ó\":'o',\"ö\":'o',\"ô\":'o',\"ø\":'o',\"ù\":'o',\"ú\":'u',\"ü\":'u',\"û\":'u',\"ñ\":'n',\"ç\":'c',\"ß\":'s',\"ÿ\":'y',\"œ\":'o',\"ŕ\":'r',\"ś\":'s',\"ń\":'n',\"ṕ\":'p',\"ẃ\":'w',\"ǵ\":'g',\"ǹ\":'n',\"ḿ\":'m',\"ǘ\":'u',\"ẍ\":'x',\"ź\":'z',\"ḧ\":'h',\"·\":'-',\"/\":'-',\"_\":'-',\",\":'-',\":\":'-',\";\":'-'};\r\n\r\n return text.toString().toLowerCase()\r\n .replace(/\\s+/g, '-') // Replace spaces with -\r\n .replace(/./g,(target, index, str) => specialChars[target] || target) // Replace special characters using the hash map\r\n .replace(/&/g, '-and-') // Replace & with 'and'\r\n .replace(/[^\\w\\-]+/g, '') // Remove all non-word chars\r\n .replace(/\\-\\-+/g, '-') // Replace multiple - with single -\r\n .replace(/^-+/, '') // Trim - from start of text\r\n .replace(/-+$/, ''); // Trim - from end of text\r\n};\r\n","const states = {\r\n\t'': '—',\r\n\t'AL': 'Alabama',\r\n\t'AK': 'Alaska',\r\n\t'AZ': 'Arizona',\r\n\t'AR': 'Arkansas',\r\n\t'CA': 'California',\r\n\t'CO': 'Colorado',\r\n\t'CT': 'Connecticut',\r\n\t'DE': 'Delaware',\r\n\t'DC': 'District Of Columbia',\r\n\t'FL': 'Florida',\r\n\t'GA': 'Georgia',\r\n\t'HI': 'Hawaii',\r\n\t'ID': 'Idaho',\r\n\t'IL': 'Illinois',\r\n\t'IN': 'Indiana',\r\n\t'IA': 'Iowa',\r\n\t'KS': 'Kansas',\r\n\t'KY': 'Kentucky',\r\n\t'LA': 'Louisiana',\r\n\t'ME': 'Maine',\r\n\t'MD': 'Maryland',\r\n\t'MA': 'Massachusetts',\r\n\t'MI': 'Michigan',\r\n\t'MN': 'Minnesota',\r\n\t'MS': 'Mississippi',\r\n\t'MO': 'Missouri',\r\n\t'MT': 'Montana',\r\n\t'NE': 'Nebraska',\r\n\t'NV': 'Nevada',\r\n\t'NH': 'New Hampshire',\r\n\t'NJ': 'New Jersey',\r\n\t'NM': 'New Mexico',\r\n\t'NY': 'New York',\r\n\t'NC': 'North Carolina',\r\n\t'ND': 'North Dakota',\r\n\t'OH': 'Ohio',\r\n\t'OK': 'Oklahoma',\r\n\t'OR': 'Oregon',\r\n\t'PA': 'Pennsylvania',\r\n\t'RI': 'Rhode Island',\r\n\t'SC': 'South Carolina',\r\n\t'SD': 'South Dakota',\r\n\t'TN': 'Tennessee',\r\n\t'TX': 'Texas',\r\n\t'UT': 'Utah',\r\n\t'VT': 'Vermont',\r\n\t'VA': 'Virginia',\r\n\t'WA': 'Washington',\r\n\t'WV': 'West Virginia',\r\n\t'WI': 'Wisconsin',\r\n\t'WY': 'Wyoming',\r\n\t'AB': 'Alberta',\r\n\t'BC': 'British Columbia',\r\n\t'MB': 'Manitoba',\r\n\t'NB': 'New Brunswick',\r\n\t'NL': 'Newfoundland and Labrador',\r\n\t'NS': 'Nova Scotia',\r\n\t'ON': 'Ontario',\r\n\t'PE': 'Prince Edward Island',\r\n\t'QC': 'Quebec',\r\n\t'SK': 'Saskatchewan',\r\n\t'NT': 'Northwest Territories',\r\n\t'NU': 'Nunavut',\r\n\t'YT': 'Yukon',\r\n}\r\n\r\nexport default states;","import yikes_easy_forms_fetch_form from '../components/get-form.js'\r\n\r\nimport MailChimpForms from '../components/class.MailChimpForms.js';\r\n\r\nimport './easy-forms-block.scss'\r\n\r\nrequire( '../components/enable-submit-button-editing.js' );\r\n\r\n// Get just the __() localization function from wp.i18n\r\nconst { __ } = wp.i18n;\r\n\r\n// Get registerBlockType and other methods from wp.blocks\r\nconst { registerBlockType } = wp.blocks;\r\n\r\nconst edit_easy_form = function( props ) {\r\n\r\n const onChangeForm = ( event ) => {\r\n props.setAttributes( { form_id: event.target.value } );\r\n\r\n if ( event.target.value.length > 0 ) {\r\n yikes_easy_forms_fetch_form( event.target.value ).then( function( form ) {\r\n props.setAttributes( { form: form.data } );\r\n props.setAttributes( { form_description: form.data.form_description } );\r\n props.setAttributes( { form_title: form.data.form_name } );\r\n props.setAttributes( { is_ajax: form.data.submission_settings.ajax === '1' } );\r\n props.setAttributes( { submit_button_text: form.data.form_settings['yikes-easy-mc-submit-button-text'] } );\r\n });\r\n }\r\n };\r\n\r\n const onChangeDescription = ( value ) => {\r\n props.setAttributes( { form_description: value } );\r\n };\r\n\r\n const toggleShowDescription = ( event ) => {\r\n props.setAttributes( { show_description: !! event.target.checked } );\r\n }\r\n\r\n const toggleInline = ( event ) => {\r\n props.setAttributes( { inline: !! event.target.checked } );\r\n }\r\n\r\n const toggleShowTitle = ( event ) => {\r\n props.setAttributes( { show_title: !! event.target.checked } );\r\n }\r\n\r\n const toggleFormTitle = ( value ) => {\r\n props.setAttributes( { form_title: value } );\r\n }\r\n\r\n const toggleIsAjax = ( event ) => {\r\n props.setAttributes( { is_ajax: !! event.target.checked } );\r\n }\r\n\r\n const toggleRecaptcha = ( event ) => {\r\n props.setAttributes( { recaptcha: !! event.target.checked } ); \r\n }\r\n\r\n const toggleRecaptchaTheme = ( value ) => {\r\n props.setAttributes( { recaptcha_theme: value } );\r\n }\r\n\r\n const toggleRecaptchaLang = ( value ) => {\r\n props.setAttributes( { recaptcha_lang: value } );\r\n }\r\n\r\n const toggleRecaptchaType = ( value ) => {\r\n props.setAttributes( { recaptcha_type: value } );\r\n }\r\n\r\n const toggleRecaptchaSize = ( value ) => {\r\n props.setAttributes( { recaptcha_size: value } );\r\n }\r\n\r\n const toggleRecaptchaVerifyCallback = ( value ) => {\r\n props.setAttributes( { recaptcha_verify_callback: value } );\r\n }\r\n\r\n const toggleRecaptchaExpiredCallback = ( value ) => {\r\n props.setAttributes( { recaptcha_expired_callback: value } );\r\n }\r\n\r\n const toggleSubmitButtonText = ( value ) => {\r\n props.setAttributes( { submit_button_text: value })\r\n }\r\n\r\n return (\r\n <MailChimpForms\r\n className={ props.className }\r\n onChangeForm={ onChangeForm }\r\n formID={ props.attributes.form_id }\r\n formData={ props.attributes.form }\r\n onChangeDescription={ onChangeDescription }\r\n descriptionValue={ props.attributes.form_description }\r\n showDescription={ props.attributes.show_description }\r\n toggleShowDescription={ toggleShowDescription }\r\n focus={ !! props.isSelected }\r\n inline={ props.attributes.inline }\r\n toggleInline={ toggleInline }\r\n formTitle={ props.attributes.form_title }\r\n toggleFormTitle={ toggleFormTitle }\r\n showTitle={ props.attributes.show_title }\r\n toggleShowTitle={ toggleShowTitle }\r\n isAjax={ props.attributes.is_ajax }\r\n toggleIsAjax={ toggleIsAjax }\r\n recaptcha={ props.attributes.recaptcha }\r\n toggleRecaptcha={ toggleRecaptcha }\r\n recaptchaTheme={ props.attributes.recaptcha_theme }\r\n toggleRecaptchaTheme={ toggleRecaptchaTheme }\r\n recaptchaLang={ props.attributes.recaptcha_lang }\r\n toggleRecaptchaLang={ toggleRecaptchaLang }\r\n recaptchaType={ props.attributes.recaptcha_type }\r\n toggleRecaptchaType={ toggleRecaptchaType }\r\n recaptchaSize={ props.attributes.recaptcha_size }\r\n toggleRecaptchaSize={ toggleRecaptchaSize }\r\n recaptchaVerifyCallback={ props.attributes.recaptcha_verify_callback }\r\n toggleRecaptchaVerifyCallback={ toggleRecaptchaVerifyCallback }\r\n recaptchaExpiredCallback={ props.attributes.recaptcha_expired_callback }\r\n toggleRecaptchaExpiredCallback={ toggleRecaptchaExpiredCallback }\r\n submitButtonText={ props.attributes.submit_button_text }\r\n toggleSubmitButtonText={ toggleSubmitButtonText }\r\n />\r\n );\r\n\r\n}\r\n\r\nconst save_easy_form = function( props ) {\r\n return null;\r\n}\r\n\r\nconst settings = {\r\n title : __( 'Easy Forms for MailChimp' ),\r\n category : 'common', // Options include \"common\", \"formatting\", \"layout\", \"widgets\" and \"embed.\"\r\n icon : 'email-alt',\r\n keywords : ['mailchimp', 'easy forms for mailchimp', 'yikes'],\r\n attributes: {\r\n form_id: {\r\n type: 'string',\r\n default: ''\r\n },\r\n form: {\r\n type: 'object'\r\n },\r\n form_description: {\r\n type: 'string',\r\n default: ''\r\n },\r\n show_description: {\r\n type: 'boolean',\r\n default: false\r\n },\r\n inline: {\r\n type: 'boolean',\r\n default: false\r\n },\r\n show_title: {\r\n type: 'boolean',\r\n default: false\r\n },\r\n form_title: {\r\n type: 'string',\r\n default: ''\r\n },\r\n is_ajax: {\r\n type: 'boolean',\r\n default: true,\r\n },\r\n recaptcha: {\r\n type: 'boolean',\r\n default: true,\r\n },\r\n recaptcha_theme: {\r\n type: 'string',\r\n default: 'light'\r\n },\r\n recaptcha_lang: {\r\n type: 'string',\r\n default: ''\r\n },\r\n recaptcha_type: {\r\n type: 'string',\r\n default: 'image'\r\n },\r\n recaptcha_size: {\r\n type: 'string',\r\n default: 'normal'\r\n },\r\n recaptcha_verify_callback: {\r\n type: 'string',\r\n default: ''\r\n },\r\n recaptcha_expired_callback: {\r\n type: 'string',\r\n default: ''\r\n },\r\n submit_button_text: {\r\n type: 'string',\r\n default: ''\r\n }\r\n },\r\n edit: edit_easy_form,\r\n save: save_easy_form,\r\n}\r\n\r\nconst EasyFormsBlock = registerBlockType(\r\n\r\n // Name\r\n ez_forms_gb_data.block_namespace + ez_forms_gb_data.block_name,\r\n\r\n // Settings\r\n settings\r\n);","\nvar content = require(\"!!../../node_modules/css-loader/index.js!../../node_modules/sass-loader/lib/loader.js!./easy-forms-block.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../node_modules/css-loader/index.js!../../node_modules/sass-loader/lib/loader.js!./easy-forms-block.scss\", function() {\n\t\tvar newContent = require(\"!!../../node_modules/css-loader/index.js!../../node_modules/sass-loader/lib/loader.js!./easy-forms-block.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import './easy-forms-block/dev-easy-forms-block.js';","/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".wp-block-yikes-inc-easy-forms-easy-forms-block textarea.yikes-mailchimp-submit-button-span-text {\\n background: none;\\n text-align: center; }\\n\\n.wp-block-yikes-inc-easy-forms-easy-forms-block select {\\n height: auto; }\\n\", \"\"]);\n\n// exports\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define([\"react\"],t):\"object\"==typeof exports?exports.ReactRecaptcha=t(require(\"react\")):e.ReactRecaptcha=t(e.React)}(this,function(e){return function(e){function t(r){if(a[r])return a[r].exports;var n=a[r]={exports:{},id:r,loaded:!1};return e[r].call(n.exports,n,n.exports,t),n.loaded=!0,n.exports}var a={};return t.m=e,t.c=a,t.p=\"\",t(0)}([function(e,t,a){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function o(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}function i(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,\"__esModule\",{value:!0});var s=function(){function e(e,t){for(var a=0;a<t.length;a++){var r=t[a];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,a,r){return a&&e(t.prototype,a),r&&e(t,r),t}}(),l=a(6),c=r(l),p=a(4),u=r(p),d={className:u.default.string,onloadCallbackName:u.default.string,elementID:u.default.string,onloadCallback:u.default.func,verifyCallback:u.default.func,expiredCallback:u.default.func,render:u.default.string,sitekey:u.default.string,theme:u.default.string,type:u.default.string,verifyCallbackName:u.default.string,expiredCallbackName:u.default.string,size:u.default.string,tabindex:u.default.string,hl:u.default.string,badge:u.default.string},f={elementID:\"g-recaptcha\",onloadCallback:void 0,onloadCallbackName:\"onloadCallback\",verifyCallback:void 0,verifyCallbackName:\"verifyCallback\",expiredCallback:void 0,expiredCallbackName:\"expiredCallback\",render:\"onload\",theme:\"light\",type:\"image\",size:\"normal\",tabindex:\"0\",hl:\"en\",badge:\"bottomright\"},h=function(){return\"undefined\"!=typeof window&&\"undefined\"!=typeof window.grecaptcha},y=void 0,b=function(e){function t(e){n(this,t);var a=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return a._renderGrecaptcha=a._renderGrecaptcha.bind(a),a.reset=a.reset.bind(a),a.state={ready:h(),widget:null},a.state.ready||(y=setInterval(a._updateReadyState.bind(a),1e3)),a}return i(t,e),s(t,[{key:\"componentDidMount\",value:function(){this.state.ready&&this._renderGrecaptcha()}},{key:\"componentDidUpdate\",value:function(e,t){var a=this.props,r=a.render,n=a.onloadCallback;\"explicit\"===r&&n&&this.state.ready&&!t.ready&&this._renderGrecaptcha()}},{key:\"componentWillUnmount\",value:function(){clearInterval(y)}},{key:\"reset\",value:function(){var e=this.state,t=e.ready,a=e.widget;t&&null!==a&&grecaptcha.reset(a)}},{key:\"execute\",value:function(){var e=this.state,t=e.ready,a=e.widget;t&&null!==a&&grecaptcha.execute(a)}},{key:\"_updateReadyState\",value:function(){h()&&(this.setState({ready:!0}),clearInterval(y))}},{key:\"_renderGrecaptcha\",value:function(){this.state.widget=grecaptcha.render(this.props.elementID,{sitekey:this.props.sitekey,callback:this.props.verifyCallback?this.props.verifyCallback:void 0,theme:this.props.theme,type:this.props.type,size:this.props.size,tabindex:this.props.tabindex,hl:this.props.hl,badge:this.props.badge,\"expired-callback\":this.props.expiredCallback?this.props.expiredCallback:void 0}),this.props.onloadCallback&&this.props.onloadCallback()}},{key:\"render\",value:function(){return\"explicit\"===this.props.render&&this.props.onloadCallback?c.default.createElement(\"div\",{id:this.props.elementID,\"data-onloadcallbackname\":this.props.onloadCallbackName,\"data-verifycallbackname\":this.props.verifyCallbackName}):c.default.createElement(\"div\",{id:this.props.elementID,className:\"g-recaptcha\",\"data-sitekey\":this.props.sitekey,\"data-theme\":this.props.theme,\"data-type\":this.props.type,\"data-size\":this.props.size,\"data-badge\":this.props.badge,\"data-tabindex\":this.props.tabindex})}}]),t}(l.Component);t.default=b,b.propTypes=d,b.defaultProps=f,e.exports=t.default},function(e,t){\"use strict\";function a(e){return function(){return e}}var r=function(){};r.thatReturns=a,r.thatReturnsFalse=a(!1),r.thatReturnsTrue=a(!0),r.thatReturnsNull=a(null),r.thatReturnsThis=function(){return this},r.thatReturnsArgument=function(e){return e},e.exports=r},function(e,t,a){\"use strict\";function r(e,t,a,r,o,i,s,l){if(n(t),!e){var c;if(void 0===t)c=new Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var p=[a,r,o,i,s,l],u=0;c=new Error(t.replace(/%s/g,function(){return p[u++]})),c.name=\"Invariant Violation\"}throw c.framesToPop=1,c}}var n=function(e){};e.exports=r},function(e,t,a){\"use strict\";var r=a(1),n=a(2),o=a(5);e.exports=function(){function e(e,t,a,r,i,s){s!==o&&n(!1,\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\")}function t(){return e}e.isRequired=e;var a={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t};return a.checkPropTypes=r,a.PropTypes=a,a}},function(e,t,a){e.exports=a(3)()},function(e,t){\"use strict\";var a=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";e.exports=a},function(t,a){t.exports=e}])});","/** @license React v16.3.1\n * react.development.js\n *\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar _assign = require('object-assign');\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar checkPropTypes = require('prop-types/checkPropTypes');\n\n// TODO: this is special because it gets imported during build.\n\nvar ReactVersion = '16.3.1';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol['for'];\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol['for']('react.element') : 0xeac7;\nvar REACT_CALL_TYPE = hasSymbol ? Symbol['for']('react.call') : 0xeac8;\nvar REACT_RETURN_TYPE = hasSymbol ? Symbol['for']('react.return') : 0xeac9;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol['for']('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol['for']('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol['for']('react.strict_mode') : 0xeacc;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol['for']('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol['for']('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol['for']('react.async_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol['for']('react.forward_ref') : 0xead0;\n\nvar MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable === 'undefined') {\n return null;\n }\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n return null;\n}\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n {\n var _constructor = publicInstance.constructor;\n var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n var warningKey = componentName + '.' + callerName;\n if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n return;\n }\n warning(false, \"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance, callback, callerName) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nComponent.prototype.setState = function (partialState, callback) {\n !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : void 0;\n this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n{\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n var defineDeprecationWarning = function (methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n lowPriorityWarning$1(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n return undefined;\n }\n });\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\n\n/**\n * Convenience component with default shallow equality check for sCU.\n */\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n var refObject = {\n current: null\n };\n {\n Object.seal(refObject);\n }\n return refObject;\n}\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\n\nvar specialPropKeyWarningShown = void 0;\nvar specialPropRefWarningShown = void 0;\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName);\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName);\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n });\n // self and source are DEV only properties.\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n });\n // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\nfunction createElement(type, config, children) {\n var propName = void 0;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n {\n if (key || ref) {\n if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n }\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://reactjs.org/docs/react-api.html#createfactory\n */\n\n\nfunction cloneAndReplaceKey(oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n return newElement;\n}\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\nfunction cloneElement(element, config, children) {\n var propName = void 0;\n\n // Original props are copied\n var props = _assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n // Self is preserved since the owner is preserved.\n var self = element._self;\n // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n var source = element._source;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n // Remaining properties override existing props\n var defaultProps = void 0;\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar ReactDebugCurrentFrame = {};\n\n{\n // Component that is being worked on\n ReactDebugCurrentFrame.getCurrentStack = null;\n\n ReactDebugCurrentFrame.getStackAddendum = function () {\n var impl = ReactDebugCurrentFrame.getCurrentStack;\n if (impl) {\n return impl();\n }\n return null;\n };\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\nvar POOL_SIZE = 10;\nvar traverseContextPool = [];\nfunction getPooledTraverseContext(mapResult, keyPrefix, mapFunction, mapContext) {\n if (traverseContextPool.length) {\n var traverseContext = traverseContextPool.pop();\n traverseContext.result = mapResult;\n traverseContext.keyPrefix = keyPrefix;\n traverseContext.func = mapFunction;\n traverseContext.context = mapContext;\n traverseContext.count = 0;\n return traverseContext;\n } else {\n return {\n result: mapResult,\n keyPrefix: keyPrefix,\n func: mapFunction,\n context: mapContext,\n count: 0\n };\n }\n}\n\nfunction releaseTraverseContext(traverseContext) {\n traverseContext.result = null;\n traverseContext.keyPrefix = null;\n traverseContext.func = null;\n traverseContext.context = null;\n traverseContext.count = 0;\n if (traverseContextPool.length < POOL_SIZE) {\n traverseContextPool.push(traverseContext);\n }\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n var invokeCallback = false;\n\n if (children === null) {\n invokeCallback = true;\n } else {\n switch (type) {\n case 'string':\n case 'number':\n invokeCallback = true;\n break;\n case 'object':\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n }\n }\n }\n\n if (invokeCallback) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child = void 0;\n var nextName = void 0;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (typeof iteratorFn === 'function') {\n {\n // Warn about using Maps as children\n if (iteratorFn === children.entries) {\n warning(didWarnAboutMaps, 'Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.%s', ReactDebugCurrentFrame.getStackAddendum());\n didWarnAboutMaps = true;\n }\n }\n\n var iterator = iteratorFn.call(children);\n var step = void 0;\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else if (type === 'object') {\n var addendum = '';\n {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + ReactDebugCurrentFrame.getStackAddendum();\n }\n var childrenString = '' + children;\n invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum);\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (typeof component === 'object' && component !== null && component.key != null) {\n // Explicit key\n return escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n var func = bookKeeping.func,\n context = bookKeeping.context;\n\n func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n var traverseContext = getPooledTraverseContext(null, null, forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n releaseTraverseContext(traverseContext);\n}\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n var result = bookKeeping.result,\n keyPrefix = bookKeeping.keyPrefix,\n func = bookKeeping.func,\n context = bookKeeping.context;\n\n\n var mappedChild = func.call(context, child, bookKeeping.count++);\n if (Array.isArray(mappedChild)) {\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n } else if (mappedChild != null) {\n if (isValidElement(mappedChild)) {\n mappedChild = cloneAndReplaceKey(mappedChild,\n // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n }\n result.push(mappedChild);\n }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n var escapedPrefix = '';\n if (prefix != null) {\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n }\n var traverseContext = getPooledTraverseContext(array, escapedPrefix, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n releaseTraverseContext(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n return result;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, emptyFunction.thatReturnsNull, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#react.children.toarray\n */\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n return result;\n}\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n !isValidElement(children) ? invariant(false, 'React.Children.only expected to receive a single React element child.') : void 0;\n return children;\n}\n\nfunction createContext(defaultValue, calculateChangedBits) {\n if (calculateChangedBits === undefined) {\n calculateChangedBits = null;\n } else {\n {\n warning(calculateChangedBits === null || typeof calculateChangedBits === 'function', 'createContext: Expected the optional second argument to be a ' + 'function. Instead received: %s', calculateChangedBits);\n }\n }\n\n var context = {\n $$typeof: REACT_CONTEXT_TYPE,\n _calculateChangedBits: calculateChangedBits,\n _defaultValue: defaultValue,\n _currentValue: defaultValue,\n _changedBits: 0,\n // These are circular\n Provider: null,\n Consumer: null\n };\n\n context.Provider = {\n $$typeof: REACT_PROVIDER_TYPE,\n _context: context\n };\n context.Consumer = context;\n\n {\n context._currentRenderer = null;\n }\n\n return context;\n}\n\nfunction forwardRef(render) {\n {\n warning(typeof render === 'function', 'forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n }\n\n return {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: render\n };\n}\n\nvar describeComponentFrame = function (name, source, ownerName) {\n return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n};\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_ASYNC_MODE_TYPE || type === REACT_STRICT_MODE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\nfunction getComponentName(fiber) {\n var type = fiber.type;\n\n if (typeof type === 'function') {\n return type.displayName || type.name;\n }\n if (typeof type === 'string') {\n return type;\n }\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'ReactFragment';\n case REACT_PORTAL_TYPE:\n return 'ReactPortal';\n case REACT_CALL_TYPE:\n return 'ReactCall';\n case REACT_RETURN_TYPE:\n return 'ReactReturn';\n }\n return null;\n}\n\n/**\n * ReactElementValidator provides a wrapper around a element factory\n * which validates the props passed to the element. This is intended to be\n * used only in DEV and could be replaced by a static type checker for languages\n * that support it.\n */\n\nvar currentlyValidatingElement = void 0;\nvar propTypesMisspellWarningShown = void 0;\n\nvar getDisplayName = function () {};\nvar getStackAddendum = function () {};\n\n{\n currentlyValidatingElement = null;\n\n propTypesMisspellWarningShown = false;\n\n getDisplayName = function (element) {\n if (element == null) {\n return '#empty';\n } else if (typeof element === 'string' || typeof element === 'number') {\n return '#text';\n } else if (typeof element.type === 'string') {\n return element.type;\n } else if (element.type === REACT_FRAGMENT_TYPE) {\n return 'React.Fragment';\n } else {\n return element.type.displayName || element.type.name || 'Unknown';\n }\n };\n\n getStackAddendum = function () {\n var stack = '';\n if (currentlyValidatingElement) {\n var name = getDisplayName(currentlyValidatingElement);\n var owner = currentlyValidatingElement._owner;\n stack += describeComponentFrame(name, currentlyValidatingElement._source, owner && getComponentName(owner));\n }\n stack += ReactDebugCurrentFrame.getStackAddendum() || '';\n return stack;\n };\n}\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = getComponentName(ReactCurrentOwner.current);\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\nfunction getSourceInfoErrorAddendum(elementProps) {\n if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) {\n var source = elementProps.__source;\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n return '';\n}\n\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n if (parentName) {\n info = '\\n\\nCheck the top-level render call using <' + parentName + '>.';\n }\n }\n return info;\n}\n\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n element._store.validated = true;\n\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true;\n\n // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n var childOwner = '';\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = ' It was passed a child from ' + getComponentName(element._owner) + '.';\n }\n\n currentlyValidatingElement = element;\n {\n warning(false, 'Each child in an array or iterator should have a unique \"key\" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.%s', currentComponentErrorInfo, childOwner, getStackAddendum());\n }\n currentlyValidatingElement = null;\n}\n\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\nfunction validateChildKeys(node, parentType) {\n if (typeof node !== 'object') {\n return;\n }\n if (Array.isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step = void 0;\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n}\n\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\nfunction validatePropTypes(element) {\n var componentClass = element.type;\n if (typeof componentClass !== 'function') {\n return;\n }\n var name = componentClass.displayName || componentClass.name;\n var propTypes = componentClass.propTypes;\n if (propTypes) {\n currentlyValidatingElement = element;\n checkPropTypes(propTypes, element.props, 'prop', name, getStackAddendum);\n currentlyValidatingElement = null;\n } else if (componentClass.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true;\n warning(false, 'Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', name || 'Unknown');\n }\n if (typeof componentClass.getDefaultProps === 'function') {\n warning(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n}\n\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\nfunction validateFragmentProps(fragment) {\n currentlyValidatingElement = fragment;\n\n var keys = Object.keys(fragment.props);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (key !== 'children' && key !== 'key') {\n warning(false, 'Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.%s', key, getStackAddendum());\n break;\n }\n }\n\n if (fragment.ref !== null) {\n warning(false, 'Invalid attribute `ref` supplied to `React.Fragment`.%s', getStackAddendum());\n }\n\n currentlyValidatingElement = null;\n}\n\nfunction createElementWithValidation(type, props, children) {\n var validType = isValidElementType(type);\n\n // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n if (!validType) {\n var info = '';\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(props);\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n info += getStackAddendum() || '';\n\n var typeString = void 0;\n if (type === null) {\n typeString = 'null';\n } else if (Array.isArray(type)) {\n typeString = 'array';\n } else {\n typeString = typeof type;\n }\n\n warning(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = createElement.apply(this, arguments);\n\n // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n if (element == null) {\n return element;\n }\n\n // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n if (validType) {\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n}\n\nfunction createFactoryWithValidation(type) {\n var validatedFactory = createElementWithValidation.bind(null, type);\n validatedFactory.type = type;\n // Legacy hook: remove it\n {\n Object.defineProperty(validatedFactory, 'type', {\n enumerable: false,\n get: function () {\n lowPriorityWarning$1(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n });\n }\n\n return validatedFactory;\n}\n\nfunction cloneElementWithValidation(element, props, children) {\n var newElement = cloneElement.apply(this, arguments);\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n validatePropTypes(newElement);\n return newElement;\n}\n\nvar React = {\n Children: {\n map: mapChildren,\n forEach: forEachChildren,\n count: countChildren,\n toArray: toArray,\n only: onlyChild\n },\n\n createRef: createRef,\n Component: Component,\n PureComponent: PureComponent,\n\n createContext: createContext,\n forwardRef: forwardRef,\n\n Fragment: REACT_FRAGMENT_TYPE,\n StrictMode: REACT_STRICT_MODE_TYPE,\n unstable_AsyncMode: REACT_ASYNC_MODE_TYPE,\n\n createElement: createElementWithValidation,\n cloneElement: cloneElementWithValidation,\n createFactory: createFactoryWithValidation,\n isValidElement: isValidElement,\n\n version: ReactVersion,\n\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {\n ReactCurrentOwner: ReactCurrentOwner,\n // Used by renderers to avoid bundling object-assign twice in UMD bundles:\n assign: _assign\n }\n};\n\n{\n _assign(React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, {\n // These should not be included in production.\n ReactDebugCurrentFrame: ReactDebugCurrentFrame,\n // Shim for React DOM 16.0.0 which still destructured (but not used) this.\n // TODO: remove in React 17.0.\n ReactComponentTreeHook: {}\n });\n}\n\n\n\nvar React$2 = Object.freeze({\n\tdefault: React\n});\n\nvar React$3 = ( React$2 && React ) || React$2;\n\n// TODO: decide on the top-level export form.\n// This is hacky but makes it work with both Rollup and Jest.\nvar react = React$3['default'] ? React$3['default'] : React$3;\n\nmodule.exports = react;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target) {\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n if (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertInto + \" \" + options.insertAt.before);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\toptions.attrs.type = \"text/css\";\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\toptions.attrs.type = \"text/css\";\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t result = options.transform(obj.css);\n\n\t if (result) {\n\t \t// If transform returns a value, use that instead of the original css.\n\t \t// This allows running runtime transformations on the css.\n\t \tobj.css = result;\n\t } else {\n\t \t// If the transform function returns a falsy value, don't add this css.\n\t \t// This allows conditional loading of css\n\t \treturn function() {\n\t \t\t// noop\n\t \t};\n\t }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default. Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n","\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n // get current location\n var location = typeof window !== \"undefined\" && window.location;\n\n if (!location) {\n throw new Error(\"fixUrls requires window.location\");\n }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t return css;\n }\n\n var baseUrl = location.protocol + \"//\" + location.host;\n var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\( = Match on the word \"url\" with any whitespace after it and then a parens\n\t ( = Start a capturing group\n\t (?: = Start a non-capturing group\n\t [^)(] = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t (?: = Start another non-capturing groups\n\t [^)(]+ = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t [^)(]* = Match anything that isn't a parentheses\n\t \\) = Match a end parentheses\n\t ) = End Group\n *\\) = Match anything and then a close parens\n ) = Close non-capturing group\n * = Match anything\n ) = Close capturing group\n\t \\) = Match a close parens\n\n\t /gi = Get all matches, not the first. Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(unquotedOrigUrl)) {\n\t\t return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n","/* globals __webpack_amd_options__ */\r\nmodule.exports = __webpack_amd_options__;\r\n","module.exports = function(module) {\r\n\tif (!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif (!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n"],"sourceRoot":""}
|
blocks/easy-forms-block/easy-forms-block.php
ADDED
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Class YIKES_Easy_Form.
|
4 |
+
*/
|
5 |
+
class YIKES_Easy_Form_Block extends YIKES_Easy_Forms_Blocks {
|
6 |
+
|
7 |
+
const BLOCK = 'easy-forms-block';
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Enqueue our scripts.
|
11 |
+
*/
|
12 |
+
public function editor_scripts() {
|
13 |
+
|
14 |
+
// Localize the calendar.
|
15 |
+
global $wp_locale;
|
16 |
+
$datepicker_options = array(
|
17 |
+
'rtl' => $wp_locale->is_rtl(),
|
18 |
+
'month_names' => array_values( $wp_locale->month ),
|
19 |
+
'month_names_short' => array_values( $wp_locale->month_abbrev ),
|
20 |
+
'day_names' => array_values( $wp_locale->weekday ),
|
21 |
+
'day_names_short' => array_values( $wp_locale->weekday_abbrev ),
|
22 |
+
'day_names_min' => array_values( $wp_locale->weekday_initial ),
|
23 |
+
'first_day' => get_option( 'start_of_week' ),
|
24 |
+
'change_month' => false,
|
25 |
+
'change_year' => false,
|
26 |
+
'min_date' => null,
|
27 |
+
'max_date' => null,
|
28 |
+
'default_date' => null,
|
29 |
+
'number_of_months' => 1,
|
30 |
+
'show_other_months' => false,
|
31 |
+
'select_other_months' => null,
|
32 |
+
'show_anim' => '',
|
33 |
+
'show_button_panel' => false,
|
34 |
+
);
|
35 |
+
|
36 |
+
wp_register_script( 'yikes-datepicker-scripts', YIKES_MC_URL . 'public/js/yikes-datepicker-scripts.min.js', array( 'jquery-ui-datepicker' ), YIKES_MC_VERSION, true );
|
37 |
+
wp_localize_script( 'yikes-datepicker-scripts', 'datepicker_settings', $datepicker_options );
|
38 |
+
wp_enqueue_script( 'yikes-datepicker-scripts' );
|
39 |
+
wp_enqueue_style( 'jquery-datepicker-styles', YIKES_MC_URL . 'public/css/jquery-ui.min.css', array(), YIKES_MC_VERSION );
|
40 |
+
wp_enqueue_style( 'yikes-datepicker-styles', YIKES_MC_URL . 'public/css/yikes-datepicker-styles.min.css', array(), YIKES_MC_VERSION );
|
41 |
+
|
42 |
+
wp_register_script( 'yikes-easy-forms-blocks', YIKES_MC_URL . 'blocks/easy-forms-block/easy-forms-block.js', array( 'wp-i18n', 'wp-element', 'wp-blocks', 'wp-components', 'wp-api' ), filemtime( YIKES_MC_PATH . 'blocks/easy-forms-block/easy-forms-block.js' ), true );
|
43 |
+
wp_localize_script( 'yikes-easy-forms-blocks', 'ez_forms_gb_data', array(
|
44 |
+
'ajax_url' => esc_url_raw( admin_url( 'admin-ajax.php' ) ),
|
45 |
+
'fetch_form_nonce' => wp_create_nonce( 'fetch_form_nonce' ),
|
46 |
+
'fetch_forms_nonce' => wp_create_nonce( 'fetch_forms_nonce' ),
|
47 |
+
'fetch_recaptcha_nonce' => wp_create_nonce( 'fetch_recaptcha_nonce' ),
|
48 |
+
'block_namespace' => parent::BLOCK_NAMESPACE,
|
49 |
+
'block_name' => static::BLOCK,
|
50 |
+
) );
|
51 |
+
wp_enqueue_script( 'yikes-easy-forms-blocks' );
|
52 |
+
|
53 |
+
wp_enqueue_script( 'yikes-google-recaptcha', 'https://www.google.com/recaptcha/api.js', array( 'jquery' ), YIKES_MC_VERSION, true );
|
54 |
+
|
55 |
+
if ( ! defined( 'YIKES_MAILCHIMP_EXCLUDE_STYLES' ) ) {
|
56 |
+
wp_enqueue_style( 'yikes-inc-easy-mailchimp-public-styles', YIKES_MC_URL . 'public/css/yikes-inc-easy-mailchimp-extender-public.min.css', array(), YIKES_MC_VERSION );
|
57 |
+
}
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Take the shortcode parameters from the Gutenberg block and render our shortcode.
|
62 |
+
*
|
63 |
+
* @param array $attributes Block attributes.
|
64 |
+
* @param string $content Block content.
|
65 |
+
*/
|
66 |
+
public function render_block( $attributes, $content ) {
|
67 |
+
|
68 |
+
if ( ! isset( $attributes['form_id'] ) ) {
|
69 |
+
return;
|
70 |
+
}
|
71 |
+
|
72 |
+
$shortcode_attributes = array(
|
73 |
+
'form' => $attributes['form_id'],
|
74 |
+
'submit' => isset( $attributes['submit_button_text'] ) && ! empty( $attributes['submit_button_text'] ) ? $attributes['submit_button_text'] : '',
|
75 |
+
'title' => isset( $attributes['show_title'] ) && true === $attributes['show_title'] ? '1' : '0',
|
76 |
+
'custom_title' => isset( $attributes['form_title'] ) ? $attributes['form_title'] : '',
|
77 |
+
'description' => isset( $attributes['show_description'] ) && true === $attributes['show_description'] ? '1' : '0',
|
78 |
+
'custom_description' => isset( $attributes['form_description'] ) ? $attributes['form_description'] : '',
|
79 |
+
'ajax' => isset( $attributes['is_ajax'] ) && true === $attributes['is_ajax'] ? '1' : '0',
|
80 |
+
'recaptcha' => isset( $attributes['recaptcha'] ) && false === $attributes['recaptcha'] ? '0' : '',
|
81 |
+
'recaptcha_lang' => isset( $attributes['recaptcha_lang'] ) ? $attributes['recaptcha_lang'] : '',
|
82 |
+
'recaptcha_type' => isset( $attributes['recaptcha_type'] ) ? $attributes['recaptcha_type'] : '',
|
83 |
+
'recaptcha_theme' => isset( $attributes['recaptcha_theme'] ) ? $attributes['recaptcha_theme'] : '',
|
84 |
+
'recaptcha_size' => isset( $attributes['recaptcha_size'] ) ? $attributes['recaptcha_size'] : '',
|
85 |
+
'recaptcha_data_callback' => isset( $attributes['recaptcha_verify_callback'] ) ? $attributes['recaptcha_verify_callback'] : '',
|
86 |
+
'recaptcha_expired_callback' => isset( $attributes['recaptcha_expired_callback'] ) ? $attributes['recaptcha_expired_callback'] : '',
|
87 |
+
'inline' => isset( $attributes['inline'] ) && true === $attributes['inline'] ? '1' : '0',
|
88 |
+
);
|
89 |
+
|
90 |
+
// We want to run process_mailchimp_shortcode() but we need to return the plaintext shortcode or Gutenberg will autop() the shortcode content.
|
91 |
+
return '[yikes-mailchimp form="' . $shortcode_attributes['form'] . '" submit="' . $shortcode_attributes['submit'] . '" title="' . $shortcode_attributes['title'] . '" custom_title="' . $shortcode_attributes['custom_title'] . '" description="' . $shortcode_attributes['description'] . '" custom_description="' . $shortcode_attributes['custom_description'] . '" ajax="' . $shortcode_attributes['ajax'] . '" recaptcha="' . $shortcode_attributes['recaptcha'] . '" recaptcha_lang="' . $shortcode_attributes['recaptcha_lang'] . '" recaptcha_type="' . $shortcode_attributes['recaptcha_type'] . '" recaptcha_theme="' . $shortcode_attributes['recaptcha_theme'] . '" recaptcha_size="' . $shortcode_attributes['recaptcha_size'] . '" recaptcha_data_callback="' . $shortcode_attributes['recaptcha_data_callback'] . '" recaptcha_expired_callback="' . $shortcode_attributes['recaptcha_expired_callback'] . '" inline="' . $shortcode_attributes['inline'] . '"]';
|
92 |
+
}
|
93 |
+
}
|
blocks/{development/form/css/blocks.scss → easy-forms-block/easy-forms-block.scss}
RENAMED
File without changes
|
blocks/index.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
import './
|
1 |
+
import './easy-forms-block/dev-easy-forms-block.js';
|
blocks/release/blocks.js.map
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./blocks/development/form/css/blocks.scss?d382","webpack:///./blocks/development/form/js/block-form.js","webpack:///./blocks/development/form/js/class.MailChimpForms.js","webpack:///./blocks/development/form/js/countries.js","webpack:///./blocks/development/form/js/enable-submit-button-editing.js","webpack:///./blocks/development/form/js/get-form.js","webpack:///./blocks/development/form/js/get-forms.js","webpack:///./blocks/development/form/js/get-recaptcha.js","webpack:///./blocks/development/form/js/locales.js","webpack:///./blocks/development/form/js/slugify.js","webpack:///./blocks/development/form/js/states.js","webpack:///./blocks/index.js","webpack:///./node_modules/classnames/index.js","webpack:///./blocks/development/form/css/blocks.scss","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./node_modules/fbjs/lib/emptyFunction.js","webpack:///./node_modules/fbjs/lib/emptyObject.js","webpack:///./node_modules/fbjs/lib/invariant.js","webpack:///./node_modules/fbjs/lib/warning.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/prop-types/checkPropTypes.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/react-recaptcha/dist/react-recaptcha.js","webpack:///./node_modules/react/cjs/react.development.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/style-loader/lib/addStyles.js","webpack:///./node_modules/style-loader/lib/urls.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///(webpack)/buildin/module.js"],"names":["require","__","wp","i18n","registerBlockType","blocks","edit_easy_form","props","onChangeForm","event","setAttributes","form_id","target","value","length","then","form","data","form_description","form_title","form_name","is_ajax","submission_settings","ajax","submit_button_text","form_settings","onChangeDescription","toggleShowDescription","show_description","checked","toggleInline","inline","toggleShowTitle","show_title","toggleFormTitle","toggleIsAjax","toggleRecaptcha","recaptcha","toggleRecaptchaTheme","recaptcha_theme","toggleRecaptchaLang","recaptcha_lang","toggleRecaptchaType","recaptcha_type","toggleRecaptchaSize","recaptcha_size","toggleRecaptchaVerifyCallback","recaptcha_verify_callback","toggleRecaptchaExpiredCallback","recaptcha_expired_callback","toggleSubmitButtonText","className","attributes","isSelected","save_easy_form","settings","title","category","icon","keywords","type","default","edit","save","EasyFormsBlock","Recaptcha","RichText","InspectorControls","PlainText","components","Spinner","TextControl","PanelBody","PanelRow","FormToggle","SelectControl","Component","element","MailChimpForms","arguments","state","forms","recaptcha_data","success","address_fields","setState","show_form_title","showTitle","show_form_description","showDescription","isAjax","recaptchaType","label","recaptchaTheme","locale","recaptchaLang","Object","keys","map","key","recaptchaSize","recaptchaVerifyCallback","recaptchaExpiredCallback","inspector_controls","formID","id","focus","formTitle","descriptionValue","formData","addr_field","field","merge","handleFormFieldChanges","placeholder","choice","JSON","parse","choices","default_choice","ii","parseInt","date_format","cn","groups","group_id","indexOf","fields","desc","description","classes","description_above","hide","get_address_field","get_dropdown_field","get_radio_field","get_url_field","get_date_field","get_default_field","get_radio_interest_group","get_hidden_interest_group","get_checkboxes_interest_group","get_dropdown_interest_group","site_key","Math","random","toString","slice","submitButtonText","get_form","form_fields","form_recaptcha","submit_button","forms_dropdown","get_form_section","countries","$","document","ready","on","preventDefault","stopPropagation","jQuery","yikes_easy_forms_fetch_form","action","nonce","ez_forms_gb_data","fetch_form_nonce","post","ajax_url","yikes_easy_forms_fetch_forms","fetch_forms_nonce","get_recaptcha","fetch_recaptcha_nonce","locales","slugify","text","specialChars","toLowerCase","replace","index","str","states","hasOwn","hasOwnProperty","classNames","i","arg","argType","push","Array","isArray","apply","call","join","module","exports","define","window","useSourceMap","list","item","content","cssWithMappingToString","modules","mediaQuery","alreadyImportedModules","cssMapping","btoa","sourceMapping","toComment","sourceURLs","sources","source","sourceRoot","concat","sourceMap","base64","unescape","encodeURIComponent","stringify","makeEmptyFunction","emptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","emptyObject","freeze","validateFormat","format","undefined","Error","invariant","condition","a","b","c","d","e","f","error","args","argIndex","name","framesToPop","warning","printWarning","_len","_key","message","console","x","_len2","_key2","getOwnPropertySymbols","prototype","propIsEnumerable","propertyIsEnumerable","toObject","val","TypeError","shouldUseNative","assign","test1","String","getOwnPropertyNames","test2","fromCharCode","order2","n","test3","split","forEach","letter","err","from","to","symbols","s","ReactPropTypesSecret","loggedTypeFailures","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","ex","stack","t","r","loaded","m","p","__esModule","o","ReferenceError","create","constructor","enumerable","writable","configurable","setPrototypeOf","__proto__","defineProperty","l","u","string","onloadCallbackName","elementID","onloadCallback","func","verifyCallback","expiredCallback","render","sitekey","theme","verifyCallbackName","expiredCallbackName","size","tabindex","hl","badge","h","grecaptcha","y","getPrototypeOf","_renderGrecaptcha","bind","reset","widget","setInterval","_updateReadyState","clearInterval","execute","callback","createElement","propTypes","defaultProps","isRequired","array","bool","number","object","symbol","any","arrayOf","instanceOf","node","objectOf","oneOf","oneOfType","shape","PropTypes","_assign","ReactVersion","hasSymbol","Symbol","REACT_ELEMENT_TYPE","REACT_CALL_TYPE","REACT_RETURN_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_ASYNC_MODE_TYPE","REACT_FORWARD_REF_TYPE","MAYBE_ITERATOR_SYMBOL","iterator","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","lowPriorityWarning","warn","lowPriorityWarning$1","didWarnStateUpdateForUnmountedComponent","warnNoop","publicInstance","callerName","_constructor","displayName","warningKey","ReactNoopUpdateQueue","isMounted","enqueueForceUpdate","enqueueReplaceState","completeState","enqueueSetState","partialState","context","updater","refs","isReactComponent","forceUpdate","deprecatedAPIs","replaceState","defineDeprecationWarning","methodName","info","get","fnName","ComponentDummy","PureComponent","pureComponentPrototype","isPureReactComponent","createRef","refObject","current","seal","ReactCurrentOwner","RESERVED_PROPS","ref","__self","__source","specialPropKeyWarningShown","specialPropRefWarningShown","hasValidRef","config","getter","getOwnPropertyDescriptor","isReactWarning","hasValidKey","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","ReactElement","self","owner","$$typeof","_owner","_store","children","propName","childrenLength","childArray","cloneAndReplaceKey","oldElement","newKey","newElement","_self","_source","cloneElement","isValidElement","ReactDebugCurrentFrame","getCurrentStack","getStackAddendum","impl","SEPARATOR","SUBSEPARATOR","escape","escapeRegex","escaperLookup","escapedString","match","didWarnAboutMaps","userProvidedKeyEscapeRegex","escapeUserProvidedKey","POOL_SIZE","traverseContextPool","getPooledTraverseContext","mapResult","keyPrefix","mapFunction","mapContext","traverseContext","pop","result","count","releaseTraverseContext","traverseAllChildrenImpl","nameSoFar","invokeCallback","getComponentKey","child","nextName","subtreeCount","nextNamePrefix","iteratorFn","entries","step","next","done","addendum","childrenString","traverseAllChildren","component","forEachSingleChild","bookKeeping","forEachChildren","forEachFunc","forEachContext","mapSingleChildIntoContext","childKey","mappedChild","mapIntoWithKeyPrefixInternal","prefix","escapedPrefix","mapChildren","countChildren","toArray","onlyChild","createContext","defaultValue","calculateChangedBits","_calculateChangedBits","_defaultValue","_currentValue","_changedBits","Provider","Consumer","_context","_currentRenderer","forwardRef","describeComponentFrame","ownerName","fileName","lineNumber","isValidElementType","getComponentName","fiber","currentlyValidatingElement","propTypesMisspellWarningShown","getDisplayName","getDeclarationErrorAddendum","getSourceInfoErrorAddendum","elementProps","ownerHasKeyUseWarning","getCurrentComponentErrorInfo","parentType","parentName","validateExplicitKey","validated","currentComponentErrorInfo","childOwner","validateChildKeys","validatePropTypes","componentClass","getDefaultProps","isReactClassApproved","validateFragmentProps","fragment","createElementWithValidation","validType","sourceInfo","typeString","createFactoryWithValidation","validatedFactory","cloneElementWithValidation","React","Children","only","Fragment","StrictMode","unstable_AsyncMode","createFactory","version","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactComponentTreeHook","React$2","React$3","react","css","baseUrl","protocol","host","currentDir","pathname","fixedCss","fullMatch","origUrl","unquotedOrigUrl","trim","$1","test","newUrl","webpackPolyfill","deprecate","paths"],"mappings":"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ACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,mBAAmB,2BAA2B;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;;AAEA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;;AAEA,QAAQ,uBAAuB;AAC/B;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,kDAAkD,sBAAsB;AACxE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;;AAEA,6BAA6B,mBAAmB;;AAEhD;;AAEA;;AAEA;AACA;;;;;;;;;;;;;;;ACtXA;;;;;;;;;;;;;AAaAmM,OAAOC,OAAP,GAAiB,UAAUoX,GAAV,EAAe;AAC9B;AACA,KAAIzR,WAAW,OAAOzF,MAAP,KAAkB,WAAlB,IAAiCA,OAAOyF,QAAvD;;AAEA,KAAI,CAACA,QAAL,EAAe;AACb,QAAM,IAAIrD,KAAJ,CAAU,kCAAV,CAAN;AACD;;AAEF;AACA,KAAI,CAAC8U,GAAD,IAAQ,OAAOA,GAAP,KAAe,QAA3B,EAAqC;AACnC,SAAOA,GAAP;AACA;;AAED,KAAIC,UAAU1R,SAAS2R,QAAT,GAAoB,IAApB,GAA2B3R,SAAS4R,IAAlD;AACA,KAAIC,aAAaH,UAAU1R,SAAS8R,QAAT,CAAkB1Y,OAAlB,CAA0B,WAA1B,EAAuC,GAAvC,CAA3B;;AAED;AACA;;;;;;;;;;;;;;;;;;;;;;;AAyBA,KAAI2Y,WAAWN,IAAIrY,OAAJ,CAAY,qDAAZ,EAAmE,UAAS4Y,SAAT,EAAoBC,OAApB,EAA6B;AAC9G;AACA,MAAIC,kBAAkBD,QACpBE,IADoB,GAEpB/Y,OAFoB,CAEZ,UAFY,EAEA,UAASwH,CAAT,EAAYwR,EAAZ,EAAe;AAAE,UAAOA,EAAP;AAAY,GAF7B,EAGpBhZ,OAHoB,CAGZ,UAHY,EAGA,UAASwH,CAAT,EAAYwR,EAAZ,EAAe;AAAE,UAAOA,EAAP;AAAY,GAH7B,CAAtB;;AAKA;AACA,MAAI,oDAAoDC,IAApD,CAAyDH,eAAzD,CAAJ,EAA+E;AAC7E,UAAOF,SAAP;AACD;;AAED;AACA,MAAIM,MAAJ;;AAEA,MAAIJ,gBAAgBnc,OAAhB,CAAwB,IAAxB,MAAkC,CAAtC,EAAyC;AACtC;AACFuc,YAASJ,eAAT;AACA,GAHD,MAGO,IAAIA,gBAAgBnc,OAAhB,CAAwB,GAAxB,MAAiC,CAArC,EAAwC;AAC9C;AACAuc,YAASZ,UAAUQ,eAAnB,CAF8C,CAEV;AACpC,GAHM,MAGA;AACN;AACAI,YAAST,aAAaK,gBAAgB9Y,OAAhB,CAAwB,OAAxB,EAAiC,EAAjC,CAAtB,CAFM,CAEsD;AAC5D;;AAED;AACA,SAAO,SAAS/D,KAAKwG,SAAL,CAAeyW,MAAf,CAAT,GAAkC,GAAzC;AACA,EA5Bc,CAAf;;AA8BA;AACA,QAAOP,QAAP;AACA,CA1ED,C;;;;;;;;;;;ACdA;AACA;;;;;;;;;;;;;;;;ACDA3X,OAAOC,OAAP,GAAiB,UAASD,MAAT,EAAiB;AACjC,KAAI,CAACA,OAAOmY,eAAZ,EAA6B;AAC5BnY,SAAOoY,SAAP,GAAmB,YAAW,CAAE,CAAhC;AACApY,SAAOqY,KAAP,GAAe,EAAf;AACA;AACA,MAAI,CAACrY,OAAOmP,QAAZ,EAAsBnP,OAAOmP,QAAP,GAAkB,EAAlB;AACtBtV,SAAOoN,cAAP,CAAsBjH,MAAtB,EAA8B,QAA9B,EAAwC;AACvC4G,eAAY,IAD2B;AAEvCsG,QAAK,eAAW;AACf,WAAOlN,OAAOkH,CAAd;AACA;AAJsC,GAAxC;AAMArN,SAAOoN,cAAP,CAAsBjH,MAAtB,EAA8B,IAA9B,EAAoC;AACnC4G,eAAY,IADuB;AAEnCsG,QAAK,eAAW;AACf,WAAOlN,OAAOT,CAAd;AACA;AAJkC,GAApC;AAMAS,SAAOmY,eAAP,GAAyB,CAAzB;AACA;AACD,QAAOnY,MAAP;AACA,CArBD,C","file":"blocks.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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./blocks/index.js\");\n","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./blocks.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./blocks.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js!../../../../node_modules/sass-loader/lib/loader.js!./blocks.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","import yikes_easy_forms_fetch_form from './get-form.js'\r\n\r\nimport MailChimpForms from './class.MailChimpForms.js';\r\n\r\nimport '../css/blocks.scss'\r\n\r\nrequire( './enable-submit-button-editing.js' );\r\n\r\n// Get just the __() localization function from wp.i18n\r\nconst { __ } = wp.i18n;\r\n\r\n// Get registerBlockType and other methods from wp.blocks\r\nconst { registerBlockType } = wp.blocks;\r\n\r\nconst edit_easy_form = function( props ) {\r\n\r\n\tconst onChangeForm = ( event ) => {\r\n\t props.setAttributes( { form_id: event.target.value } );\r\n\r\n\t if ( event.target.value.length > 0 ) {\r\n\t \tyikes_easy_forms_fetch_form( event.target.value ).then( function( form ) {\r\n\t \t\tprops.setAttributes( { form: form.data } );\r\n\t \t\tprops.setAttributes( { form_description: form.data.form_description } );\r\n\t \t\tprops.setAttributes( { form_title: form.data.form_name } );\r\n\t \t\tprops.setAttributes( { is_ajax: form.data.submission_settings.ajax === '1' } );\r\n\t \t\tprops.setAttributes( { submit_button_text: form.data.form_settings['yikes-easy-mc-submit-button-text'] } );\r\n\t \t});\r\n\t }\r\n\t};\r\n\r\n\tconst onChangeDescription = ( value ) => {\r\n\t\tprops.setAttributes( { form_description: value } );\r\n\t};\r\n\r\n\tconst toggleShowDescription = ( event ) => {\r\n\t\tprops.setAttributes( { show_description: !! event.target.checked } );\r\n\t}\r\n\r\n\tconst toggleInline = ( event ) => {\r\n\t\tprops.setAttributes( { inline: !! event.target.checked } );\r\n\t}\r\n\r\n\tconst toggleShowTitle = ( event ) => {\r\n\t\tprops.setAttributes( { show_title: !! event.target.checked } );\r\n\t}\r\n\r\n\tconst toggleFormTitle = ( value ) => {\r\n\t\tprops.setAttributes( { form_title: value } );\r\n\t}\r\n\r\n\tconst toggleIsAjax = ( event ) => {\r\n\t\tprops.setAttributes( { is_ajax: !! event.target.checked } );\r\n\t}\r\n\r\n\tconst toggleRecaptcha = ( event ) => {\r\n\t\tprops.setAttributes( { recaptcha: !! event.target.checked } );\t\r\n\t}\r\n\r\n\tconst toggleRecaptchaTheme = ( value ) => {\r\n\t\tprops.setAttributes( { recaptcha_theme: value } );\r\n\t}\r\n\r\n\tconst toggleRecaptchaLang = ( value ) => {\r\n\t\tprops.setAttributes( { recaptcha_lang: value } );\r\n\t}\r\n\r\n\tconst toggleRecaptchaType = ( value ) => {\r\n\t\tprops.setAttributes( { recaptcha_type: value } );\r\n\t}\r\n\r\n\tconst toggleRecaptchaSize = ( value ) => {\r\n\t\tprops.setAttributes( { recaptcha_size: value } );\r\n\t}\r\n\r\n\tconst toggleRecaptchaVerifyCallback = ( value ) => {\r\n\t\tprops.setAttributes( { recaptcha_verify_callback: value } );\r\n\t}\r\n\r\n\tconst toggleRecaptchaExpiredCallback = ( value ) => {\r\n\t\tprops.setAttributes( { recaptcha_expired_callback: value } );\r\n\t}\r\n\r\n\tconst toggleSubmitButtonText = ( value ) => {\r\n\t\tprops.setAttributes( { submit_button_text: value })\r\n\t}\r\n\r\n\treturn (\r\n\t\t<MailChimpForms\r\n\t\t\tclassName={ props.className }\r\n\t\t\tonChangeForm={ onChangeForm }\r\n\t\t\tformID={ props.attributes.form_id }\r\n\t\t\tformData={ props.attributes.form }\r\n\t\t\tonChangeDescription={ onChangeDescription }\r\n\t\t\tdescriptionValue={ props.attributes.form_description }\r\n\t\t\tshowDescription={ props.attributes.show_description }\r\n\t\t\ttoggleShowDescription={ toggleShowDescription }\r\n\t\t\tfocus={ !! props.isSelected }\r\n\t\t\tinline={ props.attributes.inline }\r\n\t\t\ttoggleInline={ toggleInline }\r\n\t\t\tformTitle={ props.attributes.form_title }\r\n\t\t\ttoggleFormTitle={ toggleFormTitle }\r\n\t\t\tshowTitle={ props.attributes.show_title }\r\n\t\t\ttoggleShowTitle={ toggleShowTitle }\r\n\t\t\tisAjax={ props.attributes.is_ajax }\r\n\t\t\ttoggleIsAjax={ toggleIsAjax }\r\n\t\t\trecaptcha={ props.attributes.recaptcha }\r\n\t\t\ttoggleRecaptcha={ toggleRecaptcha }\r\n\t\t\trecaptchaTheme={ props.attributes.recaptcha_theme }\r\n\t\t\ttoggleRecaptchaTheme={ toggleRecaptchaTheme }\r\n\t\t\trecaptchaLang={ props.attributes.recaptcha_lang }\r\n\t\t\ttoggleRecaptchaLang={ toggleRecaptchaLang }\r\n\t\t\trecaptchaType={ props.attributes.recaptcha_type }\r\n\t\t\ttoggleRecaptchaType={ toggleRecaptchaType }\r\n\t\t\trecaptchaSize={ props.attributes.recaptcha_size }\r\n\t\t\ttoggleRecaptchaSize={ toggleRecaptchaSize }\r\n\t\t\trecaptchaVerifyCallback={ props.attributes.recaptcha_verify_callback }\r\n\t\t\ttoggleRecaptchaVerifyCallback={ toggleRecaptchaVerifyCallback }\r\n\t\t\trecaptchaExpiredCallback={ props.attributes.recaptcha_expired_callback }\r\n\t\t\ttoggleRecaptchaExpiredCallback={ toggleRecaptchaExpiredCallback }\r\n\t\t\tsubmitButtonText={ props.attributes.submit_button_text }\r\n\t\t\ttoggleSubmitButtonText={ toggleSubmitButtonText }\r\n\t\t/>\r\n\t);\r\n\r\n}\r\n\r\nconst save_easy_form = function( props ) {\r\n\treturn null;\r\n}\r\n\r\nconst settings = {\r\n\ttitle : __( 'Easy Forms for MailChimp' ),\r\n\tcategory : 'common', // Options include \"common\", \"formatting\", \"layout\", \"widgets\" and \"embed.\"\r\n\ticon : 'email-alt',\r\n\tkeywords : ['mailchimp', 'easy forms for mailchimp', 'yikes'],\r\n\tattributes: {\r\n\t\tform_id: {\r\n\t\t\ttype: 'number'\r\n\t\t},\r\n\t\tform: {\r\n\t\t\ttype: 'object'\r\n\t\t},\r\n\t\tform_description: {\r\n\t\t\ttype: 'string',\r\n\t\t\tdefault: ''\r\n\t\t},\r\n\t\tshow_description: {\r\n\t\t\ttype: 'boolean',\r\n\t\t\tdefault: false\r\n\t\t},\r\n\t\tinline: {\r\n\t\t\ttype: 'boolean',\r\n\t\t\tdefault: false\r\n\t\t},\r\n\t\tshow_title: {\r\n\t\t\ttype: 'boolean',\r\n\t\t\tdefault: false\r\n\t\t},\r\n\t\tform_title: {\r\n\t\t\ttype: 'string',\r\n\t\t\tdefault: ''\r\n\t\t},\r\n\t\tis_ajax: {\r\n\t\t\ttype: 'boolean',\r\n\t\t\tdefault: true,\r\n\t\t},\r\n\t\trecaptcha: {\r\n\t\t\ttype: 'boolean',\r\n\t\t\tdefault: true,\r\n\t\t},\r\n\t\trecaptcha_theme: {\r\n\t\t\ttype: 'string',\r\n\t\t\tdefault: 'light'\r\n\t\t},\r\n\t\trecaptcha_lang: {\r\n\t\t\ttype: 'string',\r\n\t\t\tdefault: ''\r\n\t\t},\r\n\t\trecaptcha_type: {\r\n\t\t\ttype: 'string',\r\n\t\t\tdefault: 'image'\r\n\t\t},\r\n\t\trecaptcha_size: {\r\n\t\t\ttype: 'string',\r\n\t\t\tdefault: 'normal'\r\n\t\t},\r\n\t\trecaptcha_verify_callback: {\r\n\t\t\ttype: 'string',\r\n\t\t\tdefault: ''\r\n\t\t},\r\n\t\trecaptcha_expired_callback: {\r\n\t\t\ttype: 'string',\r\n\t\t\tdefault: ''\r\n\t\t},\r\n\t\tsubmit_button_text: {\r\n\t\t\ttype: 'string',\r\n\t\t\tdefault: ''\r\n\t\t}\r\n\t},\r\n\tedit: edit_easy_form,\r\n\tsave: save_easy_form,\r\n}\r\n\r\nconst EasyFormsBlock = registerBlockType(\r\n\r\n\t// Name\r\n\t'yikes-inc-easy-forms/easy-forms-block',\r\n\r\n\t// Settings\r\n\tsettings\r\n);","// Import dependencies\r\nimport yikes_easy_forms_fetch_forms from './get-forms.js';\r\n\r\nimport get_recaptcha from './get-recaptcha.js';\r\n\r\nimport slugify from './slugify.js';\r\n\r\nimport countries from './countries.js';\r\n\r\nimport states from './states.js';\r\n\r\nimport locales from './locales.js';\r\n\r\n// Get functions / blocks / components\r\nconst Recaptcha = require( 'react-recaptcha' );\r\nconst { __ } = wp.i18n;\r\nconst { registerBlockType, RichText, InspectorControls, PlainText } = wp.blocks;\r\nconst { Spinner, TextControl, PanelBody, PanelRow, FormToggle, SelectControl } = wp.components;\r\nconst { Component } = wp.element;\r\n\r\nexport default class MailChimpForms extends Component {\r\n constructor( props ) {\r\n super( ...arguments );\r\n this.state = {\r\n forms : [],\r\n recaptcha_data: {\r\n data: {},\r\n success: false\r\n }\r\n }\r\n\r\n this.address_fields = {\r\n 'addr1': 'Address 1', \r\n 'addr2': 'Address 2', \r\n 'city' : 'City', \r\n 'state': 'State', \r\n 'zip' : 'Zip',\r\n 'country': 'Country'\r\n }\r\n\r\n yikes_easy_forms_fetch_forms()\r\n .then( forms => {\r\n return this.setState( { forms: forms.data } );\r\n });\r\n\r\n get_recaptcha()\r\n .then( recaptcha_data => {\r\n return this.setState( { recaptcha_data: recaptcha_data });\r\n });\r\n }\r\n\r\n handleFormFieldChanges( event ) {\r\n \t// console.log( event );\r\n \t\r\n \t// console.log( value );\r\n \t// console.log( this );\r\n \t// console.log( typeof this.setState );\r\n\r\n \t// const target = event.target;\r\n // const value = target.type === 'checkbox' ? target.checked : target.value;\r\n // const name = target.name;\r\n\r\n // return this.setState( { [name]: value } );\r\n }\r\n\r\n inspector_controls() {\r\n\r\n const inline = (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"inline-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n >\r\n { __( 'Inline' ) }\r\n </label>\r\n <FormToggle\r\n id=\"inline-form-toggle\"\r\n label={ __( 'Inline' ) }\r\n checked={ !! this.props.inline }\r\n onChange={ this.props.toggleInline }\r\n />\r\n </PanelRow>\r\n )\r\n\r\n const show_form_title = (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"show-title-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n >\r\n { __( 'Show Form Title' ) }\r\n </label>\r\n <FormToggle\r\n id=\"show-title-form-toggle\"\r\n label={ __( 'Show Form Title' ) }\r\n checked={ !! this.props.showTitle }\r\n onChange={ this.props.toggleShowTitle }\r\n />\r\n </PanelRow>\r\n )\r\n\r\n const show_form_description = (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"show-description-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n >\r\n { __( 'Show Form Description' ) }\r\n </label>\r\n <FormToggle\r\n id=\"show-description-form-toggle\"\r\n label={ __( 'Show Form Description' ) }\r\n checked={ !! this.props.showDescription }\r\n onChange={ this.props.toggleShowDescription }\r\n />\r\n </PanelRow>\r\n )\r\n\r\n const is_ajax = (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"is-ajax-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n >\r\n { __( 'AJAX Submissions' ) }\r\n </label>\r\n <FormToggle\r\n id=\"is-ajax-form-toggle\"\r\n label={ __( 'AJAX' ) }\r\n checked={ !! this.props.isAjax }\r\n onChange={ this.props.toggleIsAjax }\r\n />\r\n </PanelRow>\r\n )\r\n\r\n const recaptcha = (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"recaptcha-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n >\r\n { __( 'reCAPTCHA' ) }\r\n </label>\r\n <FormToggle\r\n id=\"recaptcha-form-toggle\"\r\n label={ __( 'reCAPTCHA' ) }\r\n checked={ !! this.props.recaptcha }\r\n onChange={ this.props.toggleRecaptcha }\r\n />\r\n </PanelRow>\r\n )\r\n\r\n const recaptcha_type = !! this.props.recaptcha ?\r\n (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"recaptcha-type-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n >\r\n { __( 'reCAPTCHA Type' ) }\r\n </label>\r\n <SelectControl\r\n value={ this.props.recaptchaType }\r\n options={ [ { value: 'image', label: 'Image' }, { value: 'audio', 'label': 'Audio' } ] }\r\n onChange={ this.props.toggleRecaptchaType }\r\n />\r\n </PanelRow>\r\n )\r\n : '';\r\n\r\n const recaptcha_theme = !! this.props.recaptcha ?\r\n (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"recaptcha-theme-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n >\r\n { __( 'reCAPTCHA Theme' ) }\r\n </label>\r\n <SelectControl\r\n value={ this.props.recaptchaTheme }\r\n options={ [ { value: 'light', label: 'Light' }, {value: 'dark', 'label': 'Dark' } ] }\r\n onChange={ this.props.toggleRecaptchaTheme }\r\n />\r\n </PanelRow>\r\n )\r\n : '';\r\n\r\n const recaptcha_lang = !! this.props.recaptcha ?\r\n (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"recaptcha-language-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n title={ this.state.recaptcha_data.data ? 'The default language for your locale is ' + locales[ this.state.recaptcha_data.data.locale ] : '' }\r\n >\r\n { __( 'reCAPTCHA Language' ) }\r\n </label>\r\n <SelectControl\r\n id=\"recaptcha-language-form-toggle\"\r\n value={ this.props.recaptchaLang.length > 0 ? this.props.recaptchaLang : ( this.state.recaptcha_data.data ? this.state.recaptcha_data.data.locale : '' ) }\r\n onChange={ this.props.toggleRecaptchaLang }\r\n title={ this.state.recaptcha_data.data ? 'The default language for your locale is ' + locales[ this.state.recaptcha_data.data.locale ] : '' }\r\n options={ Object.keys( locales ).map( ( key ) => { return { value: key, label: locales[key] } }) }\r\n />\r\n </PanelRow>\r\n )\r\n : '';\r\n\r\n const recaptcha_size = !! this.props.recaptcha ?\r\n (\r\n <PanelRow>\r\n <label\r\n htmlFor=\"recaptcha-size-form-toggle\"\r\n className=\"blocks-base-control__label\"\r\n >\r\n { __( 'reCAPTCHA Size' ) }\r\n </label>\r\n <SelectControl\r\n id=\"recaptcha-size-form-toggle\"\r\n value={ this.props.recaptchaSize }\r\n onChange={ this.props.toggleRecaptchaSize }\r\n options={ [ { value: 'normal', label: 'Normal' }, { value: 'compact', label: 'Compact' } ] }\r\n />\r\n </PanelRow>\r\n )\r\n : '';\r\n\r\n const recaptcha_verify_callback = !! this.props.recaptcha ?\r\n (\r\n <TextControl\r\n id=\"recaptcha-verify-callback-form-toggle\"\r\n label={ __( 'reCAPTCHA Verify Callback' ) }\r\n value={ this.props.recaptchaVerifyCallback }\r\n onChange={ this.props.toggleRecaptchaVerifyCallback }\r\n />\r\n )\r\n : '';\r\n\r\n const recaptcha_expired_callback = !! this.props.recaptcha ?\r\n (\r\n <TextControl\r\n id=\"recaptcha-expired-callback-form-toggle\"\r\n label={ __( 'reCAPTCHA Expired Callback' ) }\r\n value={ this.props.recaptchaExpiredCallback }\r\n onChange={ this.props.toggleRecaptchaExpiredCallback }\r\n />\r\n )\r\n : ''; \r\n\r\n const inspector_controls = \r\n <InspectorControls key=\"easy-forms-inspector\">\r\n\r\n <PanelBody title={ __( 'Settings' ) } >\r\n {inline}\r\n {show_form_title}\r\n {show_form_description}\r\n {is_ajax}\r\n {recaptcha}\r\n {recaptcha_type}\r\n {recaptcha_theme}\r\n {recaptcha_lang}\r\n {recaptcha_size}\r\n {recaptcha_verify_callback}\r\n {recaptcha_expired_callback}\r\n </PanelBody>\r\n\r\n </InspectorControls>\r\n\r\n return inspector_controls;\r\n }\r\n\r\n forms_dropdown() {\r\n return this.state.forms.length > 0 ? \r\n <select \r\n value={ this.props.formID } \r\n onChange={ this.props.onChangeForm } \r\n className=\"yikes-mailchimp-forms-dropdown\"\r\n key=\"yikes-mailchimp-forms-dropdown\"\r\n >\r\n <option key=\"select\" value=\"\">Select MailChimp Form...</option>\r\n { this.state.forms.map( ( form ) => {\r\n return <option key={ 'yikes-select-form-' + form.id } value={ form.id }>{ form.form_name }</option>\r\n })}\r\n </select> \r\n : '';\r\n }\r\n\r\n form_title() {\r\n return this.props.showTitle === true ?\r\n ( this.props.focus ? \r\n <h3 \r\n className={ \"yikes-mailchimp-form-title yikes-mailchimp-form-title-\" + this.props.formID }\r\n key=\"yikes-mailchimp-form-title-wrapper\"\r\n >\r\n <PlainText\r\n placeholder={ this.props.formTitle }\r\n key=\"yikes-mailchimp-form-title-editable\"\r\n value={ this.props.formTitle }\r\n onChange={ this.props.toggleFormTitle }\r\n />\r\n </h3>\r\n :\r\n <h3 className={ \"yikes-mailchimp-form-title yikes-mailchimp-form-title-\" + this.props.formID } key=\"yikes-mailchimp-form-title\">\r\n { this.props.formTitle }\r\n </h3> \r\n ) : ''; \r\n }\r\n\r\n form_description() {\r\n return this.props.showDescription === true ?\r\n <section className={ \"yikes-mailchimp-form-description yikes-mailchimp-form-description-\" + this.props.formID } key=\"yikes-mailchimp-form-description\">\r\n <PlainText\r\n className=\"mailchimpDescription\"\r\n placeholder={ __( 'Enter your form\\'s description here.' ) /*( this.props.formData && this.props.formData.form_description && this.props.formData.form_description.length > 0 || this.props.descriptionValue && this.props.descriptionValue.length > 0 ) ? '' : __( 'Enter your form\\'s description here.' )*/ }\r\n value={ this.props.descriptionValue.length > 0 ? this.props.descriptionValue : ( this.props.formData && this.props.formData.form_description ? this.props.formData.form_description : '' ) }\r\n onChange={ this.props.onChangeDescription }\r\n key=\"mailchimpDescription\"\r\n />\r\n </section> \r\n : ''; \r\n }\r\n\r\n get_address_field( addr_field, field ) {\r\n switch( addr_field ) {\r\n\r\n case 'addr1':\r\n case 'addr2':\r\n case 'city':\r\n case 'zip':\r\n return (\r\n <TextControl\r\n id={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge + '-' + addr_field }\r\n onChange={ this.handleFormFieldChanges }\r\n type=\"text\"\r\n name={ field.merge + '[' + addr_field + ']' }\r\n className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }\r\n key= { 'yikes-mailchimp-field-' + field.merge + '-' + addr_field }\r\n required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }\r\n placeholder={ field.placeholder === '1' ? this.address_fields[ addr_field ] : '' }\r\n />\r\n )\r\n break;\r\n\r\n case 'state':\r\n return (\r\n <select \r\n id={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge + '-' + addr_field } \r\n name={ field.merge + '[' + addr_field + ']' }\r\n className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }\r\n onChange={ this.handleFormFieldChanges }\r\n key= { 'yikes-mailchimp-field-' + field.merge + '-' + addr_field }\r\n value=''\r\n required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }\r\n >\r\n { Object.keys( states ).map( ( key ) => {\r\n var choice = states[ key ];\r\n return <option key={ 'state-' + key } value={ key }>{ choice }</option>\r\n })}\r\n \r\n </select>\r\n )\r\n break;\r\n\r\n case 'country':\r\n return (\r\n <select \r\n id={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge + '-' + addr_field } \r\n name={ field.merge + '[' + addr_field + ']' }\r\n className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }\r\n onChange={ this.handleFormFieldChanges }\r\n key= { 'yikes-mailchimp-field-' + field.merge + '-' + addr_field }\r\n value=''\r\n required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }\r\n >\r\n { Object.keys( countries ).map( ( key ) => {\r\n var choice = countries[ key ];\r\n return <option key={ 'country-' + key } value={ key }>{ choice }</option>\r\n })}\r\n \r\n </select>\r\n )\r\n break;\r\n }\r\n }\r\n\r\n get_dropdown_field( field ) {\r\n return (\r\n <select \r\n id={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge }\r\n name={ field.merge }\r\n className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }\r\n onChange={ this.handleFormFieldChanges }\r\n key= { 'yikes-mailchimp-field-' + field.merge }\r\n value={ JSON.parse( field.choices )[ field.default_choice ] }\r\n required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }\r\n >\r\n { Object.keys( JSON.parse( field.choices ) ).map( ( key ) => {\r\n var choice = JSON.parse( field.choices )[ key ];\r\n return <option key={ slugify( choice ) } value={ choice }>{ choice }</option>\r\n })}\r\n </select>\r\n )\r\n }\r\n\r\n get_radio_field( field ) {\r\n var ii = 0;\r\n\r\n return (\r\n JSON.parse( field.choices ).map( ( key ) => {\r\n ii++;\r\n return (\r\n <label \r\n htmlFor={ field.merge + '-' + ii }\r\n className=\"yikes-easy-mc-checkbox-label\"\r\n key={ field.merge + '-label-radio-key-' + ii }\r\n >\r\n <input\r\n type=\"radio\"\r\n name={ field.merge }\r\n id={ field.merge + '-' + ii }\r\n key={ field.merge + '-' + ii + '-input-key' }\r\n value={ key }\r\n onChange={ this.handleFormFieldChanges }\r\n checked={ parseInt( field.default_choice ) === ( ii - 1 ) }\r\n />\r\n <span key={ field.merge + '-span-radio-key-' + ii } className={ field.merge + '-label' }>{ key }</span>\r\n </label>\r\n )\r\n })\r\n )\r\n }\r\n\r\n get_url_field( field ) {\r\n return (\r\n <TextControl\r\n id={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge }\r\n placeholder={ field.placeholder }\r\n onChange={ this.handleFormFieldChanges }\r\n type='url'\r\n value={ field.default }\r\n name={ field.merge }\r\n className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }\r\n key= { 'yikes-mailchimp-field-' + field.merge }\r\n required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }\r\n title={ field.type === 'url' ? __( 'Please enter a valid URL to the website.' ) : __( 'Please enter a valid URL to the image.' ) }\r\n />\r\n )\r\n }\r\n\r\n get_default_field( field ) {\r\n\r\n var type = field.type === 'zip' || field.type === 'phone' ? 'text' : field.type;\r\n\r\n return (\r\n <TextControl\r\n id={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge }\r\n placeholder={ field.placeholder }\r\n onChange={ this.handleFormFieldChanges }\r\n type={ type }\r\n value={ field.default }\r\n name={ field.merge }\r\n className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }\r\n key= { 'yikes-mailchimp-field-' + field.merge }\r\n required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }\r\n />\r\n )\r\n }\r\n\r\n get_date_field( field ) {\r\n return (\r\n <TextControl\r\n id={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge }\r\n placeholder={ field.placeholder }\r\n onChange={ this.handleFormFieldChanges }\r\n type='text'\r\n value={ field.default }\r\n name={ field.merge }\r\n className={ 'yikes-easy-mc-' + field.type + ' hasDatepicker ' + field['additional-classes'] }\r\n key= { 'yikes-mailchimp-field-' + field.merge }\r\n required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }\r\n data-attr-type={ field.type }\r\n data-date-format={ field.date_format }\r\n />\r\n )\r\n }\r\n\r\n get_radio_interest_group( field ) {\r\n var ii = -1;\r\n var cn = \"yikes-easy-mc-checkbox-label \" + field['additional-classes'];\r\n\r\n return (\r\n Object.keys( JSON.parse( field.groups ) ).map( ( key ) => {\r\n var choice = JSON.parse( field.groups )[ key ];\r\n ii++;\r\n return (\r\n <label\r\n htmlFor={ field.group_id + '-' + ii }\r\n className={ { [cn]: true, 'field-no-label': field['hide-label'] === '1' } }\r\n key={ field.group_id + '-' + ii + '-label-key' }\r\n >\r\n <input\r\n type=\"radio\"\r\n name={\"group-\" + field.group_id + '[]' }\r\n id={ field.group_id + '-' + ii }\r\n key={ field.group_id + '-' + ii + '-input-key' }\r\n value={ key }\r\n onChange={ this.handleFormFieldChanges }\r\n checked={ key === field.default_choice }\r\n className={ { 'yikes-interest-group-required': field.require === '1' } }\r\n />\r\n { choice }\r\n </label>\r\n )\r\n })\r\n )\r\n }\r\n\r\n get_hidden_interest_group( field ) {\r\n var ii = -1;\r\n\r\n return (\r\n Object.keys( JSON.parse( field.groups ) ).map( ( key ) => {\r\n var choice = JSON.parse( field.groups )[ key ];\r\n ii++;\r\n return (\r\n <label\r\n htmlFor={ field.group_id + '-' + ii }\r\n className={ \"yikes-easy-mc-checkbox-label \" + field['additional-classes'] }\r\n key={ field.group_id + '-' + ii + '-label-key' }\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name={\"group-\" + field.group_id + '[]' }\r\n id={ field.group_id + '-' + ii }\r\n key={ field.group_id + '-' + ii + '-input-key' }\r\n value={ key }\r\n onChange={ this.handleFormFieldChanges }\r\n checked={ field.default_choice.indexOf( key ) !== -1 }\r\n />\r\n { choice }\r\n </label>\r\n )\r\n })\r\n )\r\n }\r\n\r\n get_checkboxes_interest_group( field ) {\r\n var ii = -1;\r\n var cn = \"yikes-easy-mc-checkbox-label \" + field['additional-classes'];\r\n\r\n return (\r\n Object.keys( JSON.parse( field.groups ) ).map( ( key ) => {\r\n var choice = JSON.parse( field.groups )[ key ];\r\n ii++;\r\n return (\r\n <label\r\n htmlFor={ field.group_id + '-' + ii }\r\n className={ { [cn]: true, 'field-no-label': field['hide-label'] === '1' } }\r\n key={ field.group_id + '-' + ii + '-label-key' }\r\n >\r\n <input\r\n className={ { 'yikes-interest-group-required': field.require === '1' } }\r\n type=\"checkbox\"\r\n name={\"group-\" + field.group_id + '[]' }\r\n id={ field.group_id + '-' + ii }\r\n key={ field.group_id + '-' + ii + '-input-key' }\r\n value={ key }\r\n onChange={ this.handleFormFieldChanges }\r\n checked={ field.default_choice.indexOf( key ) !== -1 }\r\n required={ field.require === '1' ? 'required' : false }\r\n />\r\n { choice }\r\n </label>\r\n )\r\n })\r\n )\r\n }\r\n\r\n get_dropdown_interest_group( field ) {\r\n var ii = -1;\r\n\r\n return (\r\n <select \r\n id={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.group_id } \r\n name={ \"group-\" + field.group_id }\r\n className={ \"yikes-easy-mc-dropdown \" + field['additional-classes'] }\r\n value={ field.default_choice }\r\n onChange={ this.handleFormFieldChanges }\r\n required={ field.require === '1' ? 'required' : false }\r\n >\r\n\r\n { Object.keys( JSON.parse( field.groups ) ).map( ( key ) => {\r\n var choice = JSON.parse( field.groups )[ key ];\r\n ii++;\r\n return (\r\n <option key={ field.group_id + '-' + ii + '-input-key' } value={ key }>{ choice }</option>\r\n )\r\n })}\r\n </select>\r\n )\r\n }\r\n\r\n form_fields() {\r\n\r\n return this.props.formData && this.props.formData.fields ?\r\n Object.keys( this.props.formData.fields ).map( ( key ) => {\r\n\r\n var field = this.props.formData.fields[ key ];\r\n\r\n // Form Fields (aka merge variables)\r\n if ( typeof field.merge !== 'undefined' ) {\r\n\r\n var desc = field.description.length > 0 ? \r\n <p className=\"form-field-description\" id={ \"form-field-description-\" + field.merge } key={ \"form-field-description-\" + field.merge }>{ field.description }</p>\r\n : '';\r\n\r\n var label = field['hide-label'] !== '1' ? <span className={ field.merge + '-label' } key={ field.merge + '-label-span-key' }>{ field.label }</span> : '';\r\n\r\n var classes = {'yikes-mailchimp-field-required' : field.merge === 'EMAIL' || field.require === '1' }\r\n classes[ field.merge + '-label'] = true;\r\n\r\n if ( field.type === 'address' ) {\r\n\r\n return ([\r\n field.description_above === '1' && field.description.length > 0 && desc,\r\n Object.keys( this.address_fields ).map( ( addr_field ) => {\r\n label = field['hide-label'] !== '1' ? <span className={ field.merge + '-label' } key={ field.merge + '-label-span-key-' + addr_field }>{ this.address_fields[ addr_field ] }</span> : '';\r\n\r\n return (\r\n <label \r\n htmlFor={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge + '-' + addr_field } \r\n className={ classes } \r\n key={ field.merge + '-label-key-' + addr_field }\r\n style={ field.hide === '1' ? { 'display': 'none' } : {} }\r\n >\r\n { label }\r\n { this.get_address_field( addr_field, field ) }\r\n </label> \r\n )\r\n }),\r\n field.description_above !== '1' && field.description.length > 0 && desc\r\n ])\r\n } else {\r\n return (\r\n <label \r\n htmlFor={ \"yikes-easy-mc-form-\" + this.props.formID + \"-\" + field.merge } \r\n className={ classes } \r\n key={ field.merge + '-label-key' }\r\n style={ field.hide === '1' ? { 'display': 'none' } : {} }\r\n >\r\n { label }\r\n\r\n { field.description_above === '1' && field.description.length > 0 && desc }\r\n\r\n { \r\n ( field.type === 'dropdown' ? this.get_dropdown_field( field ) :\r\n ( field.type === 'radio' ? this.get_radio_field( field ) : \r\n ( field.type === 'url' || field.type === 'imageurl' ? this.get_url_field( field ) :\r\n ( field.type === 'date' || field.type === 'birthday' ? this.get_date_field( field ) :\r\n this.get_default_field( field ) ) ) ) )\r\n }\r\n\r\n { field.description_above !== '1' && field.description.length > 0 && desc }\r\n\r\n </label>\r\n )\r\n }\r\n } else {\r\n\r\n var desc = field.description.length > 0 ? \r\n <p className=\"form-field-description\" id={ \"form-field-description-\" + field.group_id } key={ \"form-field-description-\" + field.group_id }>{ field.description }</p>\r\n : '';\r\n\r\n var label = field['hide-label'] !== '1' ?\r\n <span key={ field.group_id + \"-label-span-key\" } className={ field.group_id + \"-label checkbox-parent-label\" }>{ field.label }</span> \r\n : '';\r\n\r\n var classes = { 'yikes-mailchimp-field-required' : field.require === '1' }\r\n classes[ field.group_id + '-label'] = true;\r\n\r\n return ( \r\n <label \r\n htmlFor={ field.group_id }\r\n className= { classes }\r\n key={ field.group_id + \"-label-span-key\" }\r\n style={ field.type === 'hidden' || field.hide === '1' ? { 'display': 'none' } : {} }\r\n >\r\n\r\n { label }\r\n\r\n { field.description_above === '1' && field.description.length > 0 && desc }\r\n\r\n {\r\n ( field.type === 'radio' ? this.get_radio_interest_group( field ) :\r\n ( field.type === 'hidden' ? this.get_hidden_interest_group( field ) : \r\n ( field.type === 'checkboxes' ? this.get_checkboxes_interest_group( field ) :\r\n ( field.type === 'dropdown' ? this.get_dropdown_interest_group( field ) : '' ) ) ) )\r\n }\r\n\r\n { field.description_above !== '1' && field.description.length > 0 && desc }\r\n\r\n </label>\r\n )\r\n }\r\n })\r\n : '';\r\n }\r\n\r\n form_recaptcha() {\r\n\r\n return this.state.recaptcha_data.success === true && this.state.recaptcha_data.data.site_key && this.props.recaptcha === true ? \r\n <Recaptcha\r\n sitekey={ this.state.recaptcha_data.data.site_key }\r\n key={ 'easy-forms-recaptcha-1' }\r\n elementID={ 'google-recaptcha-id-' + Math.random().toString(36).slice(-8) } // Need to use a unique ID for multiple reCAPTCHAs to work on the same page.\r\n theme={ this.props.recaptchaTheme }\r\n hl={ this.props.recaptchaLang.length > 0 ? this.props.recaptchaLang : this.state.recaptcha_data.data.locale }\r\n type={ this.props.recaptchaType }\r\n size={ this.props.recaptchaSize }\r\n verifyCallback=''\r\n expiredCallback=''\r\n />\r\n : ''; \r\n }\r\n\r\n submit_button() {\r\n return this.props.formData && this.props.formData.fields ?\r\n ( this.props.focus && this.props.formData.form_settings['yikes-easy-mc-submit-button-type'] === 'text' ?\r\n <button\r\n type=\"submit\"\r\n key=\"mailchimpSubmitButton\"\r\n className={ \"yikes-easy-mc-submit-button yikes-easy-mc-submit-button-\" + this.props.formID + \" btn btn-primary\" + \" \" + this.props.formData.form_settings['yikes-easy-mc-submit-button-classes'] }\r\n >\r\n <PlainText\r\n className=\"yikes-mailchimp-submit-button-span-text\"\r\n key=\"yikes-mailchimp-submit-button-span-text\"\r\n value={ this.props.submitButtonText ? this.props.submitButtonText : '' }\r\n onChange={ this.props.toggleSubmitButtonText }\r\n />\r\n </button>\r\n :\r\n ( this.props.formData.form_settings['yikes-easy-mc-submit-button-type'] === 'text' ? \r\n <button\r\n type=\"submit\"\r\n key=\"mailchimpSubmitButton\"\r\n className={ \"yikes-easy-mc-submit-button yikes-easy-mc-submit-button-\" + this.props.formID + \" btn btn-primary\" + \" \" + this.props.formData.form_settings['yikes-easy-mc-submit-button-classes'] }\r\n >\r\n <span className=\"yikes-mailchimp-submit-button-span-text\" key=\"yikes-mailchimp-submit-button-span-text\">{ this.props.submitButtonText }</span>\r\n </button>\r\n :\r\n <input\r\n type=\"image\"\r\n alt={ this.props.submitButtonText }\r\n src={ this.props.formData.form_settings['yikes-easy-mc-submit-button-image'] }\r\n className={ \"yikes-easy-mc-submit-button yikes-easy-mc-submit-button-image yikes-easy-mc-submit-button-\" + this.props.formID + \" btn btn-primary\" + \" \" + this.props.formData.form_settings['yikes-easy-mc-submit-button-classes'] }\r\n />\r\n )\r\n )\r\n : '';\r\n }\r\n\r\n get_form_section() {\r\n return (\r\n <section \r\n id={ \"yikes-mailchimp-container-\" + this.props.formID } \r\n className={ \"yikes-mailchimp-container yikes-mailchimp-container-\" + this.props.formID }\r\n key=\"yikes-mailchimp-container-section\"\r\n >\r\n {[\r\n\r\n // Form title\r\n [this.form_title()],\r\n\r\n // Form Description\r\n [this.form_description()],\r\n\r\n // Get the form\r\n [this.get_form()] \r\n ]}\r\n </section>\r\n );\r\n }\r\n\r\n get_form() {\r\n return (\r\n // Form Wrapper\r\n <form\r\n id={ slugify( this.props.formTitle ) + '-' + this.props.formID }\r\n className={ \"yikes-easy-mc-form yikes-easy-mc-form-\" + this.props.formID + \" \" + this.props.formData.form_settings['yikes-easy-mc-form-class-names'] }\r\n key=\"yikes-mailchimp-container-form\"\r\n >\r\n {[\r\n\r\n // Form fields\r\n [this.form_fields()],\r\n\r\n // Recaptcha\r\n [this.form_recaptcha()],\r\n\r\n // Submit button\r\n [this.submit_button()]\r\n ]}\r\n </form>\r\n );\r\n }\r\n\r\n render() {\r\n\r\n if ( this.state.forms.length > 0 && this.props.formData && Object.keys( this.props.formData ).length > 0 ) {\r\n \r\n \t return (\r\n\r\n <div className={ this.props.className }>\r\n\r\n {// Show inspector controls when focused\r\n this.props.focus && this.inspector_controls()}\r\n\r\n {// Show the forms dropdown\r\n this.forms_dropdown()}\r\n\r\n <hr key=\"easy-forms-dropdown-divider\"/>\r\n\r\n {// Show the form\r\n this.get_form_section()}\r\n </div>\r\n \r\n \t );\r\n\r\n \t} else if ( this.state.forms.length > 0 ) {\r\n\r\n // If we don't have form data, show the forms dropdown\r\n \t\treturn ( \r\n <div className={ this.props.className }>\r\n {this.forms_dropdown()}\r\n </div>\r\n );\r\n\r\n \t} else {\r\n\r\n // Show loading... & spinner\r\n \t\treturn (\r\n <p key=\"loading-easy-forms\" className={ this.props.className }>\r\n <span key=\"yikes-easy-forms-loading-text\">Loading...</span>\r\n <Spinner key=\"yikes-easy-forms-loading-spinner\" />\r\n </p>\r\n );\r\n \t}\r\n }\r\n}","const countries = {\r\n\t'US': 'United States',\r\n\t'GB': 'United Kingdom',\r\n\t'AF': 'Afghanistan',\r\n\t'AX': 'Aland Islands',\r\n\t'AL': 'Albania',\r\n\t'DZ': 'Algeria',\r\n\t'AS': 'American Samoa',\r\n\t'AD': 'Andorra',\r\n\t'AO': 'Angola',\r\n\t'AI': 'Anguilla',\r\n\t'AQ': 'Antarctica',\r\n\t'AG': 'Antigua and Barbuda',\r\n\t'AR': 'Argentina',\r\n\t'AM': 'Armenia',\r\n\t'AW': 'Aruba',\r\n\t'AU': 'Australia',\r\n\t'AT': 'Austria',\r\n\t'AZ': 'Azerbaijan',\r\n\t'BS': 'Bahamas',\r\n\t'BH': 'Bahrain',\r\n\t'BD': 'Bangladesh',\r\n\t'BB': 'Barbados',\r\n\t'BY': 'Belarus',\r\n\t'BE': 'Belgium',\r\n\t'BZ': 'Belize',\r\n\t'BJ': 'Benin',\r\n\t'BM': 'Bermuda',\r\n\t'BT': 'Bhutan',\r\n\t'BO': 'Bolivia',\r\n\t'BA': 'Bosnia and Herzegovina',\r\n\t'BW': 'Botswana',\r\n\t'BV': 'Bouvet Island',\r\n\t'BR': 'Brazil',\r\n\t'IO': 'British Indian Ocean Territory',\r\n\t'BN': 'Brunei Darussalam',\r\n\t'BG': 'Bulgaria',\r\n\t'BF': 'Burkina Faso',\r\n\t'BI': 'Burundi',\r\n\t'KH': 'Cambodia',\r\n\t'CM': 'Cameroon',\r\n\t'CA': 'Canada',\r\n\t'CV': 'Cape Verde',\r\n\t'KY': 'Cayman Islands',\r\n\t'CF': 'Central African Republic',\r\n\t'TD': 'Chad',\r\n\t'CL': 'Chile',\r\n\t'CN': 'China',\r\n\t'CX': 'Christmas Island',\r\n\t'CC': 'Cocos (Keeling) Islands',\r\n\t'CO': 'Colombia',\r\n\t'KM': 'Comoros',\r\n\t'CG': 'Congo',\r\n\t'CD': 'Congo, The Democratic Republic of The',\r\n\t'CK': 'Cook Islands',\r\n\t'CR': 'Costa Rica',\r\n\t'CI': 'Cote D’ivoire',\r\n\t'HR': 'Croatia',\r\n\t'CU': 'Cuba',\r\n\t'CY': 'Cyprus',\r\n\t'CZ': 'Czech Republic',\r\n\t'DK': 'Denmark',\r\n\t'DJ': 'Djibouti',\r\n\t'DM': 'Dominica',\r\n\t'DO': 'Dominican Republic',\r\n\t'EC': 'Ecuador',\r\n\t'EG': 'Egypt',\r\n\t'SV': 'El Salvador',\r\n\t'GQ': 'Equatorial Guinea',\r\n\t'ER': 'Eritrea',\r\n\t'EE': 'Estonia',\r\n\t'ET': 'Ethiopia',\r\n\t'FK': 'Falkland Islands (Malvinas)',\r\n\t'FO': 'Faroe Islands',\r\n\t'FJ': 'Fiji',\r\n\t'FI': 'Finland',\r\n\t'FR': 'France',\r\n\t'GF': 'French Guiana',\r\n\t'PF': 'French Polynesia',\r\n\t'TF': 'French Southern Territories',\r\n\t'GA': 'Gabon',\r\n\t'GM': 'Gambia',\r\n\t'GE': 'Georgia',\r\n\t'DE': 'Germany',\r\n\t'GH': 'Ghana',\r\n\t'GI': 'Gibraltar',\r\n\t'GR': 'Greece',\r\n\t'GL': 'Greenland',\r\n\t'GD': 'Grenada',\r\n\t'GP': 'Guadeloupe',\r\n\t'GU': 'Guam',\r\n\t'GT': 'Guatemala',\r\n\t'GG': 'Guernsey',\r\n\t'GN': 'Guinea',\r\n\t'GW': 'Guinea-bissau',\r\n\t'GY': 'Guyana',\r\n\t'HT': 'Haiti',\r\n\t'HM': 'Heard Island and Mcdonald Islands',\r\n\t'VA': 'Holy See (Vatican City State)',\r\n\t'HN': 'Honduras',\r\n\t'HK': 'Hong Kong',\r\n\t'HU': 'Hungary',\r\n\t'IS': 'Iceland',\r\n\t'IN': 'India',\r\n\t'ID': 'Indonesia',\r\n\t'IR': 'Iran, Islamic Republic of',\r\n\t'IQ': 'Iraq',\r\n\t'IE': 'Ireland',\r\n\t'IM': 'Isle of Man',\r\n\t'IL': 'Israel',\r\n\t'IT': 'Italy',\r\n\t'JM': 'Jamaica',\r\n\t'JP': 'Japan',\r\n\t'JE': 'Jersey',\r\n\t'JO': 'Jordan',\r\n\t'KZ': 'Kazakhstan',\r\n\t'KE': 'Kenya',\r\n\t'KI': 'Kiribati',\r\n\t'KP': 'Korea, Democratic People’s Republic of',\r\n\t'KR': 'Korea, Republic of',\r\n\t'KW': 'Kuwait',\r\n\t'KG': 'Kyrgyzstan',\r\n\t'LA': 'Lao People’s Democratic Republic',\r\n\t'LV': 'Latvia',\r\n\t'LB': 'Lebanon',\r\n\t'LS': 'Lesotho',\r\n\t'LR': 'Liberia',\r\n\t'LY': 'Libyan Arab Jamahiriya',\r\n\t'LI': 'Liechtenstein',\r\n\t'LT': 'Lithuania',\r\n\t'LU': 'Luxembourg',\r\n\t'MO': 'Macao',\r\n\t'MK': 'Macedonia, The Former Yugoslav Republic of',\r\n\t'MG': 'Madagascar',\r\n\t'MW': 'Malawi',\r\n\t'MY': 'Malaysia',\r\n\t'MV': 'Maldives',\r\n\t'ML': 'Mali',\r\n\t'MT': 'Malta',\r\n\t'MH': 'Marshall Islands',\r\n\t'MQ': 'Martinique',\r\n\t'MR': 'Mauritania',\r\n\t'MU': 'Mauritius',\r\n\t'YT': 'Mayotte',\r\n\t'MX': 'Mexico',\r\n\t'FM': 'Micronesia, Federated States of',\r\n\t'MD': 'Moldova, Republic of',\r\n\t'MC': 'Monaco',\r\n\t'MN': 'Mongolia',\r\n\t'ME': 'Montenegro',\r\n\t'MS': 'Montserrat',\r\n\t'MA': 'Morocco',\r\n\t'MZ': 'Mozambique',\r\n\t'MM': 'Myanmar',\r\n\t'NA': 'Namibia',\r\n\t'NR': 'Nauru',\r\n\t'NP': 'Nepal',\r\n\t'NL': 'Netherlands',\r\n\t'AN': 'Netherlands Antilles',\r\n\t'NC': 'New Caledonia',\r\n\t'NZ': 'New Zealand',\r\n\t'NI': 'Nicaragua',\r\n\t'NE': 'Niger',\r\n\t'NG': 'Nigeria',\r\n\t'NU': 'Niue',\r\n\t'NF': 'Norfolk Island',\r\n\t'MP': 'Northern Mariana Islands',\r\n\t'NO': 'Norway',\r\n\t'OM': 'Oman',\r\n\t'PK': 'Pakistan',\r\n\t'PW': 'Palau',\r\n\t'PS': 'Palestinian Territory, Occupied',\r\n\t'PA': 'Panama',\r\n\t'PG': 'Papua New Guinea',\r\n\t'PY': 'Paraguay',\r\n\t'PE': 'Peru',\r\n\t'PH': 'Philippines',\r\n\t'PN': 'Pitcairn',\r\n\t'PL': 'Poland',\r\n\t'PT': 'Portugal',\r\n\t'PR': 'Puerto Rico',\r\n\t'QA': 'Qatar',\r\n\t'RE': 'Reunion',\r\n\t'RO': 'Romania',\r\n\t'RU': 'Russian Federation',\r\n\t'RW': 'Rwanda',\r\n\t'SH': 'Saint Helena',\r\n\t'KN': 'Saint Kitts and Nevis',\r\n\t'LC': 'Saint Lucia',\r\n\t'PM': 'Saint Pierre and Miquelon',\r\n\t'VC': 'Saint Vincent and The Grenadines',\r\n\t'WS': 'Samoa',\r\n\t'SM': 'San Marino',\r\n\t'ST': 'Sao Tome and Principe',\r\n\t'SA': 'Saudi Arabia',\r\n\t'SN': 'Senegal',\r\n\t'RS': 'Serbia',\r\n\t'SC': 'Seychelles',\r\n\t'SL': 'Sierra Leone',\r\n\t'SG': 'Singapore',\r\n\t'SK': 'Slovakia',\r\n\t'SI': 'Slovenia',\r\n\t'SB': 'Solomon Islands',\r\n\t'SO': 'Somalia',\r\n\t'ZA': 'South Africa',\r\n\t'GS': 'South Georgia and The South Sandwich Islands',\r\n\t'ES': 'Spain',\r\n\t'LK': 'Sri Lanka',\r\n\t'SD': 'Sudan',\r\n\t'SR': 'Suriname',\r\n\t'SJ': 'Svalbard and Jan Mayen',\r\n\t'SZ': 'Swaziland',\r\n\t'SE': 'Sweden',\r\n\t'CH': 'Switzerland',\r\n\t'SY': 'Syrian Arab Republic',\r\n\t'TW': 'Taiwan, Province of China',\r\n\t'TJ': 'Tajikistan',\r\n\t'TZ': 'Tanzania, United Republic of',\r\n\t'TH': 'Thailand',\r\n\t'TL': 'Timor-leste',\r\n\t'TG': 'Togo',\r\n\t'TK': 'Tokelau',\r\n\t'TO': 'Tonga',\r\n\t'TT': 'Trinidad and Tobago',\r\n\t'TN': 'Tunisia',\r\n\t'TR': 'Turkey',\r\n\t'TM': 'Turkmenistan',\r\n\t'TC': 'Turks and Caicos Islands',\r\n\t'TV': 'Tuvalu',\r\n\t'UG': 'Uganda',\r\n\t'UA': 'Ukraine',\r\n\t'AE': 'United Arab Emirates',\r\n\t'UM': 'United States Minor Outlying Islands',\r\n\t'UY': 'Uruguay',\r\n\t'UZ': 'Uzbekistan',\r\n\t'VU': 'Vanuatu',\r\n\t'VE': 'Venezuela',\r\n\t'VN': 'Viet Nam',\r\n\t'VG': 'Virgin Islands, British',\r\n\t'VI': 'Virgin Islands, U.S.',\r\n\t'WF': 'Wallis and Futuna',\r\n\t'EH': 'Western Sahara',\r\n\t'YE': 'Yemen',\r\n\t'ZM': 'Zambia',\r\n\t'ZW': 'Zimbabwe',\r\n}\r\n\r\nexport default countries;","( function( $ ) {\r\n\r\n\t$( document ).ready( function() {\r\n\t\t\r\n\t\t$( 'body' ).on( 'click', '.yikes-easy-mc-submit-button', function( event ) { \r\n\t\t event.preventDefault();\r\n\t\t event.stopPropagation();\r\n\t\t $( '.yikes-mailchimp-submit-button-span-text' ).focus();\r\n\t\t}); \r\n\r\n\t\t$( 'body' ).on( 'click', '.yikes-mailchimp-submit-button-span-text', function( event ) {\r\n\t\t event.preventDefault();\r\n\t\t event.stopPropagation();\r\n\t\t});\r\n\t});\r\n\r\n})( jQuery );","export default function yikes_easy_forms_fetch_form( form_id ) {\r\n\tlet data = {\r\n\t\taction: 'yikes_get_form',\r\n\t\tform_id: form_id,\r\n\t\tnonce: ez_forms_gb_data.fetch_form_nonce\r\n\t}\r\n\r\n\tlet form = $.post( ez_forms_gb_data.ajax_url, data );\r\n\r\n\treturn form;\r\n}","export default function yikes_easy_forms_fetch_forms() {\r\n\r\n\tlet data = {\r\n\t\taction: 'yikes_get_forms',\r\n\t\tnonce: ez_forms_gb_data.fetch_forms_nonce,\r\n\t}\r\n\r\n\tlet forms = $.post( ez_forms_gb_data.ajax_url, data );\r\n\r\n\treturn forms;\r\n}","export default function get_recaptcha() {\r\n\r\n\tlet data = {\r\n\t\taction: 'yikes_get_recaptcha',\r\n\t\tnonce: ez_forms_gb_data.fetch_recaptcha_nonce\r\n\t}\r\n\r\n\tlet recaptcha_data = $.post( ez_forms_gb_data.ajax_url, data );\r\n\r\n\treturn recaptcha_data;\r\n}","const locales = {\r\n\t\"ar\" : \"Arabic\",\r\n\t\"af\" : \"Afrikaans\",\r\n\t\"am\" : \"Amharic\",\r\n\t\"hy\" : \"Armenian\",\r\n\t\"az\" : \"Azerbaijani\",\r\n\t\"eu\" : \"Basque\",\r\n\t\"bn\" : \"Bengali\",\r\n\t\"bg\" : \"Bulgarian\",\r\n\t\"ca\" : \"Catalan\",\r\n\t\"zh-HK\" : \"Chinese (Hong Kong)\",\r\n\t\"zh-CN\" : \"Chinese (Simplified)\",\r\n\t\"zh-TW\" : \"Chinese (Traditional)\",\r\n\t\"hr\" : \"Croatian\",\r\n\t\"cs\" : \"Czech\",\r\n\t\"da\" : \"Danish\",\r\n\t\"nl\" : \"Dutch\",\r\n\t\"en-GB\" : \"English (UK)\",\r\n\t\"en\" : \"English (US)\",\r\n\t\"et\" : \"Estonian\",\r\n\t\"fil\" : \"Filipino\",\r\n\t\"fi\" : \"Finnish\",\r\n\t\"fr\" : \"French\",\r\n\t\"fr-CA\" : \"French (Canadian)\",\r\n\t\"gl\" : \"Galician\",\r\n\t\"ka\" : \"Georgian\",\r\n\t\"de\" : \"German\",\r\n\t\"de-AT\" : \"German (Austria)\",\r\n\t\"de-CH\" : \"German (Switzerland)\",\r\n\t\"el\" : \"Greek\",\r\n\t\"gu\" : \"Gujarati\",\r\n\t\"iw\" : \"Hebrew\",\r\n\t\"hi\" : \"Hindi\",\r\n\t\"hu\" : \"Hungarain\",\r\n\t\"is\" : \"Icelandic\",\r\n\t\"id\" : \"Indonesian\",\r\n\t\"it\" : \"Italian\",\r\n\t\"ja\" : \"Japanese\",\r\n\t\"kn\" : \"Kannada\",\r\n\t\"ko\" : \"Korean\",\r\n\t\"lo\" : \"Laothian\",\r\n\t\"lv\" : \"Latvian\",\r\n\t\"lt\" : \"Lithuanian\",\r\n\t\"ms\" : \"Malay\",\r\n\t\"ml\" : \"Malayalam\",\r\n\t\"mr\" : \"Marathi\",\r\n\t\"mn\" : \"Mongolian\",\r\n\t\"no\" : \"Norwegian\",\r\n\t\"fa\" : \"Persian\",\r\n\t\"pl\" : \"Polish\",\r\n\t\"pt\" : \"Portuguese\",\r\n\t\"pt-BR\" : \"Portuguese (Brazil)\",\r\n\t\"pt-PT\" : \"Portuguese (Portugal)\",\r\n\t\"ro\" : \"Romanian\",\r\n\t\"ru\" : \"Russian\",\r\n\t\"sr\" : \"Serbian\",\r\n\t\"si\" : \"Sinhalese\",\r\n\t\"sk\" : \"Slovak\",\r\n\t\"sl\" : \"Slovenian\",\r\n\t\"es\" : \"Spanish\",\r\n\t\"es-419\" : \"Spanish (Latin America)\",\r\n\t\"sw\" : \"Swahili\",\r\n\t\"sv\" : \"Swedish\",\r\n\t\"ta\" : \"Tamil\",\r\n\t\"te\" : \"Telugu\",\r\n\t\"th\" : \"Thai\",\r\n\t\"tr\" : \"Turkish\",\r\n\t\"uk\" : \"Ukrainian\",\r\n\t\"ur\" : \"Urdu\",\r\n\t\"vi\" : \"Vietnamese\",\r\n\t\"zu\" : \"Zulu\"\r\n}\r\n\r\nexport default locales;","/*\r\n* This should have the same effect as WP/PHP's `sanitize_title()` function\r\n*\r\n* Source: https://gist.github.com/mathewbyrne/1280286\r\n*/\r\nexport default function slugify( text ) {\r\n\r\n // Use hash map for special characters \r\n let specialChars = {\"à\":'a',\"ä\":'a',\"á\":'a',\"â\":'a',\"æ\":'a',\"å\":'a',\"ë\":'e',\"è\":'e',\"é\":'e', \"ê\":'e',\"î\":'i',\"ï\":'i',\"ì\":'i',\"í\":'i',\"ò\":'o',\"ó\":'o',\"ö\":'o',\"ô\":'o',\"ø\":'o',\"ù\":'o',\"ú\":'u',\"ü\":'u',\"û\":'u',\"ñ\":'n',\"ç\":'c',\"ß\":'s',\"ÿ\":'y',\"œ\":'o',\"ŕ\":'r',\"ś\":'s',\"ń\":'n',\"ṕ\":'p',\"ẃ\":'w',\"ǵ\":'g',\"ǹ\":'n',\"ḿ\":'m',\"ǘ\":'u',\"ẍ\":'x',\"ź\":'z',\"ḧ\":'h',\"·\":'-',\"/\":'-',\"_\":'-',\",\":'-',\":\":'-',\";\":'-'};\r\n\r\n return text.toString().toLowerCase()\r\n .replace(/\\s+/g, '-') // Replace spaces with -\r\n .replace(/./g,(target, index, str) => specialChars[target] || target) // Replace special characters using the hash map\r\n .replace(/&/g, '-and-') // Replace & with 'and'\r\n .replace(/[^\\w\\-]+/g, '') // Remove all non-word chars\r\n .replace(/\\-\\-+/g, '-') // Replace multiple - with single -\r\n .replace(/^-+/, '') // Trim - from start of text\r\n .replace(/-+$/, ''); // Trim - from end of text\r\n};\r\n","const states = {\r\n\t'': '—',\r\n\t'AL': 'Alabama',\r\n\t'AK': 'Alaska',\r\n\t'AZ': 'Arizona',\r\n\t'AR': 'Arkansas',\r\n\t'CA': 'California',\r\n\t'CO': 'Colorado',\r\n\t'CT': 'Connecticut',\r\n\t'DE': 'Delaware',\r\n\t'DC': 'District Of Columbia',\r\n\t'FL': 'Florida',\r\n\t'GA': 'Georgia',\r\n\t'HI': 'Hawaii',\r\n\t'ID': 'Idaho',\r\n\t'IL': 'Illinois',\r\n\t'IN': 'Indiana',\r\n\t'IA': 'Iowa',\r\n\t'KS': 'Kansas',\r\n\t'KY': 'Kentucky',\r\n\t'LA': 'Louisiana',\r\n\t'ME': 'Maine',\r\n\t'MD': 'Maryland',\r\n\t'MA': 'Massachusetts',\r\n\t'MI': 'Michigan',\r\n\t'MN': 'Minnesota',\r\n\t'MS': 'Mississippi',\r\n\t'MO': 'Missouri',\r\n\t'MT': 'Montana',\r\n\t'NE': 'Nebraska',\r\n\t'NV': 'Nevada',\r\n\t'NH': 'New Hampshire',\r\n\t'NJ': 'New Jersey',\r\n\t'NM': 'New Mexico',\r\n\t'NY': 'New York',\r\n\t'NC': 'North Carolina',\r\n\t'ND': 'North Dakota',\r\n\t'OH': 'Ohio',\r\n\t'OK': 'Oklahoma',\r\n\t'OR': 'Oregon',\r\n\t'PA': 'Pennsylvania',\r\n\t'RI': 'Rhode Island',\r\n\t'SC': 'South Carolina',\r\n\t'SD': 'South Dakota',\r\n\t'TN': 'Tennessee',\r\n\t'TX': 'Texas',\r\n\t'UT': 'Utah',\r\n\t'VT': 'Vermont',\r\n\t'VA': 'Virginia',\r\n\t'WA': 'Washington',\r\n\t'WV': 'West Virginia',\r\n\t'WI': 'Wisconsin',\r\n\t'WY': 'Wyoming',\r\n\t'AB': 'Alberta',\r\n\t'BC': 'British Columbia',\r\n\t'MB': 'Manitoba',\r\n\t'NB': 'New Brunswick',\r\n\t'NL': 'Newfoundland and Labrador',\r\n\t'NS': 'Nova Scotia',\r\n\t'ON': 'Ontario',\r\n\t'PE': 'Prince Edward Island',\r\n\t'QC': 'Quebec',\r\n\t'SK': 'Saskatchewan',\r\n\t'NT': 'Northwest Territories',\r\n\t'NU': 'Nunavut',\r\n\t'YT': 'Yukon',\r\n}\r\n\r\nexport default states;","import './development/form/js/block-form.js';","/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".wp-block-yikes-inc-easy-forms-easy-forms-block textarea.yikes-mailchimp-submit-button-span-text {\\n background: none;\\n text-align: center; }\\n\\n.wp-block-yikes-inc-easy-forms-easy-forms-block select {\\n height: auto; }\\n\", \"\"]);\n\n// exports\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define([\"react\"],t):\"object\"==typeof exports?exports.ReactRecaptcha=t(require(\"react\")):e.ReactRecaptcha=t(e.React)}(this,function(e){return function(e){function t(r){if(a[r])return a[r].exports;var n=a[r]={exports:{},id:r,loaded:!1};return e[r].call(n.exports,n,n.exports,t),n.loaded=!0,n.exports}var a={};return t.m=e,t.c=a,t.p=\"\",t(0)}([function(e,t,a){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function o(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}function i(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,\"__esModule\",{value:!0});var s=function(){function e(e,t){for(var a=0;a<t.length;a++){var r=t[a];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,a,r){return a&&e(t.prototype,a),r&&e(t,r),t}}(),l=a(6),c=r(l),p=a(4),u=r(p),d={className:u.default.string,onloadCallbackName:u.default.string,elementID:u.default.string,onloadCallback:u.default.func,verifyCallback:u.default.func,expiredCallback:u.default.func,render:u.default.string,sitekey:u.default.string,theme:u.default.string,type:u.default.string,verifyCallbackName:u.default.string,expiredCallbackName:u.default.string,size:u.default.string,tabindex:u.default.string,hl:u.default.string,badge:u.default.string},f={elementID:\"g-recaptcha\",onloadCallback:void 0,onloadCallbackName:\"onloadCallback\",verifyCallback:void 0,verifyCallbackName:\"verifyCallback\",expiredCallback:void 0,expiredCallbackName:\"expiredCallback\",render:\"onload\",theme:\"light\",type:\"image\",size:\"normal\",tabindex:\"0\",hl:\"en\",badge:\"bottomright\"},h=function(){return\"undefined\"!=typeof window&&\"undefined\"!=typeof window.grecaptcha},y=void 0,b=function(e){function t(e){n(this,t);var a=o(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return a._renderGrecaptcha=a._renderGrecaptcha.bind(a),a.reset=a.reset.bind(a),a.state={ready:h(),widget:null},a.state.ready||(y=setInterval(a._updateReadyState.bind(a),1e3)),a}return i(t,e),s(t,[{key:\"componentDidMount\",value:function(){this.state.ready&&this._renderGrecaptcha()}},{key:\"componentDidUpdate\",value:function(e,t){var a=this.props,r=a.render,n=a.onloadCallback;\"explicit\"===r&&n&&this.state.ready&&!t.ready&&this._renderGrecaptcha()}},{key:\"componentWillUnmount\",value:function(){clearInterval(y)}},{key:\"reset\",value:function(){var e=this.state,t=e.ready,a=e.widget;t&&null!==a&&grecaptcha.reset(a)}},{key:\"execute\",value:function(){var e=this.state,t=e.ready,a=e.widget;t&&null!==a&&grecaptcha.execute(a)}},{key:\"_updateReadyState\",value:function(){h()&&(this.setState({ready:!0}),clearInterval(y))}},{key:\"_renderGrecaptcha\",value:function(){this.state.widget=grecaptcha.render(this.props.elementID,{sitekey:this.props.sitekey,callback:this.props.verifyCallback?this.props.verifyCallback:void 0,theme:this.props.theme,type:this.props.type,size:this.props.size,tabindex:this.props.tabindex,hl:this.props.hl,badge:this.props.badge,\"expired-callback\":this.props.expiredCallback?this.props.expiredCallback:void 0}),this.props.onloadCallback&&this.props.onloadCallback()}},{key:\"render\",value:function(){return\"explicit\"===this.props.render&&this.props.onloadCallback?c.default.createElement(\"div\",{id:this.props.elementID,\"data-onloadcallbackname\":this.props.onloadCallbackName,\"data-verifycallbackname\":this.props.verifyCallbackName}):c.default.createElement(\"div\",{id:this.props.elementID,className:\"g-recaptcha\",\"data-sitekey\":this.props.sitekey,\"data-theme\":this.props.theme,\"data-type\":this.props.type,\"data-size\":this.props.size,\"data-badge\":this.props.badge,\"data-tabindex\":this.props.tabindex})}}]),t}(l.Component);t.default=b,b.propTypes=d,b.defaultProps=f,e.exports=t.default},function(e,t){\"use strict\";function a(e){return function(){return e}}var r=function(){};r.thatReturns=a,r.thatReturnsFalse=a(!1),r.thatReturnsTrue=a(!0),r.thatReturnsNull=a(null),r.thatReturnsThis=function(){return this},r.thatReturnsArgument=function(e){return e},e.exports=r},function(e,t,a){\"use strict\";function r(e,t,a,r,o,i,s,l){if(n(t),!e){var c;if(void 0===t)c=new Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var p=[a,r,o,i,s,l],u=0;c=new Error(t.replace(/%s/g,function(){return p[u++]})),c.name=\"Invariant Violation\"}throw c.framesToPop=1,c}}var n=function(e){};e.exports=r},function(e,t,a){\"use strict\";var r=a(1),n=a(2),o=a(5);e.exports=function(){function e(e,t,a,r,i,s){s!==o&&n(!1,\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\")}function t(){return e}e.isRequired=e;var a={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t};return a.checkPropTypes=r,a.PropTypes=a,a}},function(e,t,a){e.exports=a(3)()},function(e,t){\"use strict\";var a=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";e.exports=a},function(t,a){t.exports=e}])});","/** @license React v16.3.1\n * react.development.js\n *\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nvar _assign = require('object-assign');\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar checkPropTypes = require('prop-types/checkPropTypes');\n\n// TODO: this is special because it gets imported during build.\n\nvar ReactVersion = '16.3.1';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol['for'];\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol['for']('react.element') : 0xeac7;\nvar REACT_CALL_TYPE = hasSymbol ? Symbol['for']('react.call') : 0xeac8;\nvar REACT_RETURN_TYPE = hasSymbol ? Symbol['for']('react.return') : 0xeac9;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol['for']('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol['for']('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol['for']('react.strict_mode') : 0xeacc;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol['for']('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol['for']('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol['for']('react.async_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol['for']('react.forward_ref') : 0xead0;\n\nvar MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable === 'undefined') {\n return null;\n }\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n return null;\n}\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n {\n var _constructor = publicInstance.constructor;\n var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n var warningKey = componentName + '.' + callerName;\n if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n return;\n }\n warning(false, \"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance, callback, callerName) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nComponent.prototype.setState = function (partialState, callback) {\n !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : void 0;\n this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n{\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n var defineDeprecationWarning = function (methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n lowPriorityWarning$1(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n return undefined;\n }\n });\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\n\n/**\n * Convenience component with default shallow equality check for sCU.\n */\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n var refObject = {\n current: null\n };\n {\n Object.seal(refObject);\n }\n return refObject;\n}\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\n\nvar specialPropKeyWarningShown = void 0;\nvar specialPropRefWarningShown = void 0;\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName);\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName);\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n });\n // self and source are DEV only properties.\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n });\n // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\nfunction createElement(type, config, children) {\n var propName = void 0;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n {\n if (key || ref) {\n if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n }\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://reactjs.org/docs/react-api.html#createfactory\n */\n\n\nfunction cloneAndReplaceKey(oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n return newElement;\n}\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\nfunction cloneElement(element, config, children) {\n var propName = void 0;\n\n // Original props are copied\n var props = _assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n // Self is preserved since the owner is preserved.\n var self = element._self;\n // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n var source = element._source;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n // Remaining properties override existing props\n var defaultProps = void 0;\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar ReactDebugCurrentFrame = {};\n\n{\n // Component that is being worked on\n ReactDebugCurrentFrame.getCurrentStack = null;\n\n ReactDebugCurrentFrame.getStackAddendum = function () {\n var impl = ReactDebugCurrentFrame.getCurrentStack;\n if (impl) {\n return impl();\n }\n return null;\n };\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\nvar POOL_SIZE = 10;\nvar traverseContextPool = [];\nfunction getPooledTraverseContext(mapResult, keyPrefix, mapFunction, mapContext) {\n if (traverseContextPool.length) {\n var traverseContext = traverseContextPool.pop();\n traverseContext.result = mapResult;\n traverseContext.keyPrefix = keyPrefix;\n traverseContext.func = mapFunction;\n traverseContext.context = mapContext;\n traverseContext.count = 0;\n return traverseContext;\n } else {\n return {\n result: mapResult,\n keyPrefix: keyPrefix,\n func: mapFunction,\n context: mapContext,\n count: 0\n };\n }\n}\n\nfunction releaseTraverseContext(traverseContext) {\n traverseContext.result = null;\n traverseContext.keyPrefix = null;\n traverseContext.func = null;\n traverseContext.context = null;\n traverseContext.count = 0;\n if (traverseContextPool.length < POOL_SIZE) {\n traverseContextPool.push(traverseContext);\n }\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n var invokeCallback = false;\n\n if (children === null) {\n invokeCallback = true;\n } else {\n switch (type) {\n case 'string':\n case 'number':\n invokeCallback = true;\n break;\n case 'object':\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n }\n }\n }\n\n if (invokeCallback) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child = void 0;\n var nextName = void 0;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (typeof iteratorFn === 'function') {\n {\n // Warn about using Maps as children\n if (iteratorFn === children.entries) {\n warning(didWarnAboutMaps, 'Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.%s', ReactDebugCurrentFrame.getStackAddendum());\n didWarnAboutMaps = true;\n }\n }\n\n var iterator = iteratorFn.call(children);\n var step = void 0;\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else if (type === 'object') {\n var addendum = '';\n {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + ReactDebugCurrentFrame.getStackAddendum();\n }\n var childrenString = '' + children;\n invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum);\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (typeof component === 'object' && component !== null && component.key != null) {\n // Explicit key\n return escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n var func = bookKeeping.func,\n context = bookKeeping.context;\n\n func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n var traverseContext = getPooledTraverseContext(null, null, forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n releaseTraverseContext(traverseContext);\n}\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n var result = bookKeeping.result,\n keyPrefix = bookKeeping.keyPrefix,\n func = bookKeeping.func,\n context = bookKeeping.context;\n\n\n var mappedChild = func.call(context, child, bookKeeping.count++);\n if (Array.isArray(mappedChild)) {\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n } else if (mappedChild != null) {\n if (isValidElement(mappedChild)) {\n mappedChild = cloneAndReplaceKey(mappedChild,\n // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n }\n result.push(mappedChild);\n }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n var escapedPrefix = '';\n if (prefix != null) {\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n }\n var traverseContext = getPooledTraverseContext(array, escapedPrefix, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n releaseTraverseContext(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n return result;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, emptyFunction.thatReturnsNull, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#react.children.toarray\n */\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n return result;\n}\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n !isValidElement(children) ? invariant(false, 'React.Children.only expected to receive a single React element child.') : void 0;\n return children;\n}\n\nfunction createContext(defaultValue, calculateChangedBits) {\n if (calculateChangedBits === undefined) {\n calculateChangedBits = null;\n } else {\n {\n warning(calculateChangedBits === null || typeof calculateChangedBits === 'function', 'createContext: Expected the optional second argument to be a ' + 'function. Instead received: %s', calculateChangedBits);\n }\n }\n\n var context = {\n $$typeof: REACT_CONTEXT_TYPE,\n _calculateChangedBits: calculateChangedBits,\n _defaultValue: defaultValue,\n _currentValue: defaultValue,\n _changedBits: 0,\n // These are circular\n Provider: null,\n Consumer: null\n };\n\n context.Provider = {\n $$typeof: REACT_PROVIDER_TYPE,\n _context: context\n };\n context.Consumer = context;\n\n {\n context._currentRenderer = null;\n }\n\n return context;\n}\n\nfunction forwardRef(render) {\n {\n warning(typeof render === 'function', 'forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n }\n\n return {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: render\n };\n}\n\nvar describeComponentFrame = function (name, source, ownerName) {\n return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n};\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_ASYNC_MODE_TYPE || type === REACT_STRICT_MODE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\nfunction getComponentName(fiber) {\n var type = fiber.type;\n\n if (typeof type === 'function') {\n return type.displayName || type.name;\n }\n if (typeof type === 'string') {\n return type;\n }\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'ReactFragment';\n case REACT_PORTAL_TYPE:\n return 'ReactPortal';\n case REACT_CALL_TYPE:\n return 'ReactCall';\n case REACT_RETURN_TYPE:\n return 'ReactReturn';\n }\n return null;\n}\n\n/**\n * ReactElementValidator provides a wrapper around a element factory\n * which validates the props passed to the element. This is intended to be\n * used only in DEV and could be replaced by a static type checker for languages\n * that support it.\n */\n\nvar currentlyValidatingElement = void 0;\nvar propTypesMisspellWarningShown = void 0;\n\nvar getDisplayName = function () {};\nvar getStackAddendum = function () {};\n\n{\n currentlyValidatingElement = null;\n\n propTypesMisspellWarningShown = false;\n\n getDisplayName = function (element) {\n if (element == null) {\n return '#empty';\n } else if (typeof element === 'string' || typeof element === 'number') {\n return '#text';\n } else if (typeof element.type === 'string') {\n return element.type;\n } else if (element.type === REACT_FRAGMENT_TYPE) {\n return 'React.Fragment';\n } else {\n return element.type.displayName || element.type.name || 'Unknown';\n }\n };\n\n getStackAddendum = function () {\n var stack = '';\n if (currentlyValidatingElement) {\n var name = getDisplayName(currentlyValidatingElement);\n var owner = currentlyValidatingElement._owner;\n stack += describeComponentFrame(name, currentlyValidatingElement._source, owner && getComponentName(owner));\n }\n stack += ReactDebugCurrentFrame.getStackAddendum() || '';\n return stack;\n };\n}\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = getComponentName(ReactCurrentOwner.current);\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\nfunction getSourceInfoErrorAddendum(elementProps) {\n if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) {\n var source = elementProps.__source;\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n return '';\n}\n\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n if (parentName) {\n info = '\\n\\nCheck the top-level render call using <' + parentName + '>.';\n }\n }\n return info;\n}\n\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n element._store.validated = true;\n\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true;\n\n // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n var childOwner = '';\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = ' It was passed a child from ' + getComponentName(element._owner) + '.';\n }\n\n currentlyValidatingElement = element;\n {\n warning(false, 'Each child in an array or iterator should have a unique \"key\" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.%s', currentComponentErrorInfo, childOwner, getStackAddendum());\n }\n currentlyValidatingElement = null;\n}\n\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\nfunction validateChildKeys(node, parentType) {\n if (typeof node !== 'object') {\n return;\n }\n if (Array.isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step = void 0;\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n}\n\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\nfunction validatePropTypes(element) {\n var componentClass = element.type;\n if (typeof componentClass !== 'function') {\n return;\n }\n var name = componentClass.displayName || componentClass.name;\n var propTypes = componentClass.propTypes;\n if (propTypes) {\n currentlyValidatingElement = element;\n checkPropTypes(propTypes, element.props, 'prop', name, getStackAddendum);\n currentlyValidatingElement = null;\n } else if (componentClass.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true;\n warning(false, 'Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', name || 'Unknown');\n }\n if (typeof componentClass.getDefaultProps === 'function') {\n warning(componentClass.getDefaultProps.isReactClassApproved, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n}\n\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\nfunction validateFragmentProps(fragment) {\n currentlyValidatingElement = fragment;\n\n var keys = Object.keys(fragment.props);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (key !== 'children' && key !== 'key') {\n warning(false, 'Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.%s', key, getStackAddendum());\n break;\n }\n }\n\n if (fragment.ref !== null) {\n warning(false, 'Invalid attribute `ref` supplied to `React.Fragment`.%s', getStackAddendum());\n }\n\n currentlyValidatingElement = null;\n}\n\nfunction createElementWithValidation(type, props, children) {\n var validType = isValidElementType(type);\n\n // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n if (!validType) {\n var info = '';\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendum(props);\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n info += getStackAddendum() || '';\n\n var typeString = void 0;\n if (type === null) {\n typeString = 'null';\n } else if (Array.isArray(type)) {\n typeString = 'array';\n } else {\n typeString = typeof type;\n }\n\n warning(false, 'React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n\n var element = createElement.apply(this, arguments);\n\n // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n if (element == null) {\n return element;\n }\n\n // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n if (validType) {\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n}\n\nfunction createFactoryWithValidation(type) {\n var validatedFactory = createElementWithValidation.bind(null, type);\n validatedFactory.type = type;\n // Legacy hook: remove it\n {\n Object.defineProperty(validatedFactory, 'type', {\n enumerable: false,\n get: function () {\n lowPriorityWarning$1(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n });\n }\n\n return validatedFactory;\n}\n\nfunction cloneElementWithValidation(element, props, children) {\n var newElement = cloneElement.apply(this, arguments);\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n validatePropTypes(newElement);\n return newElement;\n}\n\nvar React = {\n Children: {\n map: mapChildren,\n forEach: forEachChildren,\n count: countChildren,\n toArray: toArray,\n only: onlyChild\n },\n\n createRef: createRef,\n Component: Component,\n PureComponent: PureComponent,\n\n createContext: createContext,\n forwardRef: forwardRef,\n\n Fragment: REACT_FRAGMENT_TYPE,\n StrictMode: REACT_STRICT_MODE_TYPE,\n unstable_AsyncMode: REACT_ASYNC_MODE_TYPE,\n\n createElement: createElementWithValidation,\n cloneElement: cloneElementWithValidation,\n createFactory: createFactoryWithValidation,\n isValidElement: isValidElement,\n\n version: ReactVersion,\n\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: {\n ReactCurrentOwner: ReactCurrentOwner,\n // Used by renderers to avoid bundling object-assign twice in UMD bundles:\n assign: _assign\n }\n};\n\n{\n _assign(React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, {\n // These should not be included in production.\n ReactDebugCurrentFrame: ReactDebugCurrentFrame,\n // Shim for React DOM 16.0.0 which still destructured (but not used) this.\n // TODO: remove in React 17.0.\n ReactComponentTreeHook: {}\n });\n}\n\n\n\nvar React$2 = Object.freeze({\n\tdefault: React\n});\n\nvar React$3 = ( React$2 && React ) || React$2;\n\n// TODO: decide on the top-level export form.\n// This is hacky but makes it work with both Rollup and Jest.\nvar react = React$3['default'] ? React$3['default'] : React$3;\n\nmodule.exports = react;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target) {\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n if (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertInto + \" \" + options.insertAt.before);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\toptions.attrs.type = \"text/css\";\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\toptions.attrs.type = \"text/css\";\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t result = options.transform(obj.css);\n\n\t if (result) {\n\t \t// If transform returns a value, use that instead of the original css.\n\t \t// This allows running runtime transformations on the css.\n\t \tobj.css = result;\n\t } else {\n\t \t// If the transform function returns a falsy value, don't add this css.\n\t \t// This allows conditional loading of css\n\t \treturn function() {\n\t \t\t// noop\n\t \t};\n\t }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default. Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n","\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n // get current location\n var location = typeof window !== \"undefined\" && window.location;\n\n if (!location) {\n throw new Error(\"fixUrls requires window.location\");\n }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t return css;\n }\n\n var baseUrl = location.protocol + \"//\" + location.host;\n var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\( = Match on the word \"url\" with any whitespace after it and then a parens\n\t ( = Start a capturing group\n\t (?: = Start a non-capturing group\n\t [^)(] = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t (?: = Start another non-capturing groups\n\t [^)(]+ = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t [^)(]* = Match anything that isn't a parentheses\n\t \\) = Match a end parentheses\n\t ) = End Group\n *\\) = Match anything and then a close parens\n ) = Close non-capturing group\n * = Match anything\n ) = Close capturing group\n\t \\) = Match a close parens\n\n\t /gi = Get all matches, not the first. Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(unquotedOrigUrl)) {\n\t\t return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n","/* globals __webpack_amd_options__ */\r\nmodule.exports = __webpack_amd_options__;\r\n","module.exports = function(module) {\r\n\tif (!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif (!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n"],"sourceRoot":""}
|
|
changelog.txt
CHANGED
@@ -1,10 +1,23 @@
|
|
1 |
== Changelog ==
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
= 6.4.7 - October 2nd, 2018 =
|
4 |
-
*
|
5 |
-
*
|
6 |
-
* Re-
|
7 |
-
*
|
8 |
|
9 |
= 6.4.6 - September 10th, 2018 =
|
10 |
* Added the ability to re-subscribe to a list via an integration checkbox. Previously, users who were unsubscribed or pending confirmation were unable to re-subscribe. This only works when using the [default] double opt-in method.
|
1 |
== Changelog ==
|
2 |
|
3 |
+
= 6.4.8 - October 29th, 2018 =
|
4 |
+
* Fixed a plugin conflict between Easy Forms and Contact Form 7 when exporting forms.
|
5 |
+
* Fixed an issue with the bbPress integration where users were being subscribed regardless of checking the box.
|
6 |
+
* Fixed an issue with datepickers conflicting when the same form (with date pickers) is on the same page twice.
|
7 |
+
* Inline forms will now stack when the screen size is less than 650px.
|
8 |
+
* Cleaned/Standardized/Code Sniffed the checkbox integration classes.
|
9 |
+
* Removed checkbox integration CSS file.
|
10 |
+
* Moved the WooCommerce integration checkbox's placement on the checkout page (it now uses the filter `woocommerce_review_order_before_submit` instead of `woocommerce_checkout_after_order_review`).
|
11 |
+
* Added/Fixed several filters: `yikes_mailchimp_checkbox_integration_checkbox_html`, `yikes-mailchimp-filter-before-submission-$form_id`, `yikes-mailchimp-redirection`, `yikes-mailchimp-redirect-new-window`, `yikes_mailchimp_inline_stack_fields_width`, `yikes_mailchimp_checkbox_integration_checkbox_label`
|
12 |
+
* Removed "Vote that the plugin works" callout.
|
13 |
+
* Fixed & reorganized MailChimp Gutenberg block.
|
14 |
+
* Added new tags for the update profile email: `[email]`, `[subscriber_id]`, and `[form_name]`.
|
15 |
+
|
16 |
= 6.4.7 - October 2nd, 2018 =
|
17 |
+
* Fixed an issue with logging an error from a dashboard widget.
|
18 |
+
* Added a warning to when changing an API key.
|
19 |
+
* Re-added WordPress' HTTP referer field to forms.
|
20 |
+
* Added a filter for default interest groups.
|
21 |
|
22 |
= 6.4.6 - September 10th, 2018 =
|
23 |
* Added the ability to re-subscribe to a list via an integration checkbox. Previously, users who were unsubscribed or pending confirmation were unable to re-subscribe. This only works when using the [default] double opt-in method.
|
includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php
CHANGED
@@ -46,7 +46,7 @@ class Yikes_Inc_Easy_Mailchimp_Error_Logging {
|
|
46 |
*
|
47 |
* @var string
|
48 |
*/
|
49 |
-
protected $error_log_folder_path;
|
50 |
|
51 |
/**
|
52 |
* Define the core functionality of the plugin.
|
@@ -58,11 +58,11 @@ class Yikes_Inc_Easy_Mailchimp_Error_Logging {
|
|
58 |
* @since 1.0.0
|
59 |
*/
|
60 |
public function __construct() {
|
61 |
-
$this->is_debugging = WP_DEBUG || get_option( 'yikes-mailchimp-debug-status', '' )
|
62 |
$this->error_log_file_path = $this->get_error_log_file_path();
|
63 |
$this->error_log_folder_path = $this->get_error_log_folder();
|
64 |
|
65 |
-
// Create our error log folder and file
|
66 |
$this->create_error_log_folder();
|
67 |
$this->create_error_log_file();
|
68 |
}
|
46 |
*
|
47 |
* @var string
|
48 |
*/
|
49 |
+
protected $error_log_folder_path;
|
50 |
|
51 |
/**
|
52 |
* Define the core functionality of the plugin.
|
58 |
* @since 1.0.0
|
59 |
*/
|
60 |
public function __construct() {
|
61 |
+
$this->is_debugging = WP_DEBUG || (string) get_option( 'yikes-mailchimp-debug-status', '' ) === '1';
|
62 |
$this->error_log_file_path = $this->get_error_log_file_path();
|
63 |
$this->error_log_folder_path = $this->get_error_log_folder();
|
64 |
|
65 |
+
// Create our error log folder and file.
|
66 |
$this->create_error_log_folder();
|
67 |
$this->create_error_log_file();
|
68 |
}
|
languages/yikes-inc-easy-mailchimp-extender.pot
CHANGED
@@ -1,14 +1,14 @@
|
|
1 |
# SOME DESCRIPTIVE TITLE.
|
2 |
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
3 |
-
# This file is distributed under the same license as the
|
4 |
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
5 |
#
|
6 |
#, fuzzy
|
7 |
msgid ""
|
8 |
msgstr ""
|
9 |
-
"Project-Id-Version: yikes-inc-easy-mailchimp-extender 6.4.
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
-
"POT-Creation-Date: 2018-
|
12 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
@@ -41,14 +41,14 @@ msgstr ""
|
|
41 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:387
|
42 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:409
|
43 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:429
|
44 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
45 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
46 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
47 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
48 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
49 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
50 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
51 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
52 |
msgid ""
|
53 |
"We've run into an error. The security check didn't pass. Please try again."
|
54 |
msgstr ""
|
@@ -56,13 +56,13 @@ msgstr ""
|
|
56 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:387
|
57 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:409
|
58 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:429
|
59 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
60 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
61 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
62 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
63 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
64 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
65 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
66 |
msgid "Failed nonce validation"
|
67 |
msgstr ""
|
68 |
|
@@ -181,7 +181,7 @@ msgid ""
|
|
181 |
msgstr ""
|
182 |
|
183 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:803
|
184 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
185 |
msgid "Click to edit the label"
|
186 |
msgstr ""
|
187 |
|
@@ -221,7 +221,7 @@ msgstr ""
|
|
221 |
|
222 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:970
|
223 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:971
|
224 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
225 |
msgid "Edit Form"
|
226 |
msgstr ""
|
227 |
|
@@ -231,7 +231,7 @@ msgstr ""
|
|
231 |
|
232 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:990
|
233 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:991
|
234 |
-
#: admin/partials/edit-form.php:
|
235 |
msgid "View List"
|
236 |
msgstr ""
|
237 |
|
@@ -342,8 +342,8 @@ msgid "Integration Settings"
|
|
342 |
msgstr ""
|
343 |
|
344 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1448
|
345 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
346 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
347 |
msgid "ReCaptcha Settings"
|
348 |
msgstr ""
|
349 |
|
@@ -390,7 +390,7 @@ msgid "Form Description"
|
|
390 |
msgstr ""
|
391 |
|
392 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1509
|
393 |
-
#: admin/partials/edit-form.php:
|
394 |
msgid "Associated List"
|
395 |
msgstr ""
|
396 |
|
@@ -461,20 +461,12 @@ msgstr ""
|
|
461 |
msgid "Tweet about it"
|
462 |
msgstr ""
|
463 |
|
464 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
465 |
-
msgid "Vote that the plugin works"
|
466 |
-
msgstr ""
|
467 |
-
|
468 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1704
|
469 |
-
msgid "Vote for Compatibility"
|
470 |
-
msgstr ""
|
471 |
-
|
472 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1709
|
473 |
#, php-format
|
474 |
msgid "This plugin made with %s by %s"
|
475 |
msgstr ""
|
476 |
|
477 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
478 |
msgid ""
|
479 |
"is a web design and development company located in Philadelphia, "
|
480 |
"Pennsylvania, US. YIKES specializes in custom WordPress theme and plugin "
|
@@ -482,102 +474,102 @@ msgid ""
|
|
482 |
"applications and more."
|
483 |
msgstr ""
|
484 |
|
485 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
486 |
msgid "Show YIKES Some Love"
|
487 |
msgstr ""
|
488 |
|
489 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
490 |
msgid "About YIKES"
|
491 |
msgstr ""
|
492 |
|
493 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
494 |
msgid "Easy Forms for MailChimp Add-Ons"
|
495 |
msgstr ""
|
496 |
|
497 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
498 |
msgid "Check out available add-ons for some seriously enhanced features."
|
499 |
msgstr ""
|
500 |
|
501 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
502 |
msgid "View Add-Ons"
|
503 |
msgstr ""
|
504 |
|
505 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
506 |
msgid "We've encountered an error. No list ID was sent."
|
507 |
msgstr ""
|
508 |
|
509 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
510 |
msgid ""
|
511 |
"We've encountered an error. Reload the page and try again. If the error "
|
512 |
"persists, please reach out to support."
|
513 |
msgstr ""
|
514 |
|
515 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
516 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
517 |
msgid "Field no longer exists."
|
518 |
msgstr ""
|
519 |
|
520 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
521 |
msgid "Click to save changes."
|
522 |
msgstr ""
|
523 |
|
524 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
525 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
526 |
#: admin/partials/ajax/add_field_to_form.php:41
|
527 |
#: admin/partials/ajax/add_interest_group_to_form.php:65
|
528 |
msgid "type"
|
529 |
msgstr ""
|
530 |
|
531 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
532 |
msgid ""
|
533 |
"This field no longer exists in this list. Delete this field from the form to "
|
534 |
"prevent issues on your website."
|
535 |
msgstr ""
|
536 |
|
537 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
538 |
#: admin/partials/ajax/add_field_to_form.php:65
|
539 |
msgid "Merge Tag"
|
540 |
msgstr ""
|
541 |
|
542 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
543 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
544 |
#: admin/partials/ajax/add_field_to_form.php:90
|
545 |
#: admin/partials/ajax/add_field_to_form.php:136
|
546 |
msgid "Placeholder"
|
547 |
msgstr ""
|
548 |
|
549 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
550 |
#: admin/partials/ajax/add_field_to_form.php:95
|
551 |
msgid "Assign a placeholder value to this field."
|
552 |
msgstr ""
|
553 |
|
554 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
555 |
#: admin/partials/ajax/add_field_to_form.php:141
|
556 |
msgid ""
|
557 |
"Use placeholders for this field (these will be automatically filled in with "
|
558 |
"field names)."
|
559 |
msgstr ""
|
560 |
|
561 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
562 |
#: admin/partials/ajax/add_field_to_form.php:159
|
563 |
msgid "Default Value"
|
564 |
msgstr ""
|
565 |
|
566 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
567 |
#: admin/partials/ajax/add_field_to_form.php:164
|
568 |
msgid ""
|
569 |
"Assign a default value to populate this field with on initial page load."
|
570 |
msgstr ""
|
571 |
|
572 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
573 |
#: admin/partials/ajax/add_field_to_form.php:169
|
574 |
msgid "View Pre-Defined Tags"
|
575 |
msgstr ""
|
576 |
|
577 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
578 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
579 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
580 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
581 |
#: admin/partials/ajax/add_field_to_form.php:183
|
582 |
#: admin/partials/ajax/add_field_to_form.php:216
|
583 |
#: admin/partials/ajax/add_interest_group_to_form.php:89
|
@@ -586,44 +578,44 @@ msgstr ""
|
|
586 |
msgid "Default Selection"
|
587 |
msgstr ""
|
588 |
|
589 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
590 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
591 |
#: admin/partials/ajax/add_field_to_form.php:204
|
592 |
#: admin/partials/ajax/add_interest_group_to_form.php:103
|
593 |
#: admin/partials/ajax/add_interest_group_to_form.php:129
|
594 |
msgid "Select the option that should be selected by default."
|
595 |
msgstr ""
|
596 |
|
597 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
598 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
599 |
#: admin/partials/ajax/add_field_to_form.php:227
|
600 |
#: admin/partials/ajax/add_interest_group_to_form.php:152
|
601 |
msgid "Which option should be selected by default?"
|
602 |
msgstr ""
|
603 |
|
604 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
605 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
606 |
#: admin/partials/ajax/add_field_to_form.php:240
|
607 |
#: admin/partials/ajax/add_interest_group_to_form.php:164
|
608 |
msgid "Description"
|
609 |
msgstr ""
|
610 |
|
611 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
612 |
msgid ""
|
613 |
"Enter the description for the form field. This will be displayed to the user "
|
614 |
"and will provide some direction on how the field should be filled out or "
|
615 |
"selected."
|
616 |
msgstr ""
|
617 |
|
618 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
619 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
620 |
#: admin/partials/ajax/add_field_to_form.php:252
|
621 |
#: admin/partials/ajax/add_interest_group_to_form.php:177
|
622 |
msgid "Description Above Field"
|
623 |
msgstr ""
|
624 |
|
625 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
626 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
627 |
#: admin/partials/ajax/add_field_to_form.php:257
|
628 |
#: admin/partials/ajax/add_interest_group_to_form.php:182
|
629 |
msgid ""
|
@@ -631,98 +623,98 @@ msgid ""
|
|
631 |
"if you'd like the description to appear above the field."
|
632 |
msgstr ""
|
633 |
|
634 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
635 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
636 |
#: admin/partials/ajax/add_field_to_form.php:264
|
637 |
#: admin/partials/ajax/add_interest_group_to_form.php:190
|
638 |
msgid "Additional Classes"
|
639 |
msgstr ""
|
640 |
|
641 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
642 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
643 |
#: admin/partials/ajax/add_field_to_form.php:269
|
644 |
#: admin/partials/ajax/add_interest_group_to_form.php:195
|
645 |
#, php-format
|
646 |
msgid "Assign additional classes to this field. %s."
|
647 |
msgstr ""
|
648 |
|
649 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
650 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
651 |
#: admin/partials/ajax/add_field_to_form.php:269
|
652 |
#: admin/partials/ajax/add_interest_group_to_form.php:195
|
653 |
msgid "View bundled classes"
|
654 |
msgstr ""
|
655 |
|
656 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
657 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
658 |
#: admin/partials/ajax/add_field_to_form.php:276
|
659 |
#: admin/partials/ajax/add_interest_group_to_form.php:202
|
660 |
msgid "Field Required?"
|
661 |
msgstr ""
|
662 |
|
663 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
664 |
#: admin/partials/ajax/add_field_to_form.php:280
|
665 |
msgid "Email is a required field."
|
666 |
msgstr ""
|
667 |
|
668 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
669 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
670 |
#: admin/partials/ajax/add_field_to_form.php:281
|
671 |
#: admin/partials/ajax/add_interest_group_to_form.php:207
|
672 |
msgid "Require this field to be filled in before the form can be submitted."
|
673 |
msgstr ""
|
674 |
|
675 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
676 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
677 |
#: admin/partials/ajax/add_field_to_form.php:288
|
678 |
#: admin/partials/ajax/add_interest_group_to_form.php:214
|
679 |
msgid "Hide Field"
|
680 |
msgstr ""
|
681 |
|
682 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
683 |
#: admin/partials/ajax/add_field_to_form.php:292
|
684 |
msgid "Cannot toggle email field visibility."
|
685 |
msgstr ""
|
686 |
|
687 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
688 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
689 |
#: admin/partials/ajax/add_field_to_form.php:293
|
690 |
#: admin/partials/ajax/add_interest_group_to_form.php:219
|
691 |
msgid "Hide this field from being displayed on the front end."
|
692 |
msgstr ""
|
693 |
|
694 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
695 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
696 |
#: admin/partials/ajax/add_field_to_form.php:300
|
697 |
#: admin/partials/ajax/add_interest_group_to_form.php:226
|
698 |
msgid "Hide Label"
|
699 |
msgstr ""
|
700 |
|
701 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
702 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
703 |
#: admin/partials/ajax/add_field_to_form.php:305
|
704 |
#: admin/partials/ajax/add_interest_group_to_form.php:231
|
705 |
msgid "Toggle field label visibility."
|
706 |
msgstr ""
|
707 |
|
708 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
709 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
710 |
#: admin/partials/ajax/add_field_to_form.php:324
|
711 |
#: admin/partials/ajax/add_field_to_form.php:330
|
712 |
msgid "Date Format"
|
713 |
msgstr ""
|
714 |
|
715 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
716 |
#: admin/partials/ajax/add_field_to_form.php:336
|
717 |
msgid "Phone Format"
|
718 |
msgstr ""
|
719 |
|
720 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
721 |
#: admin/partials/ajax/add_field_to_form.php:337
|
722 |
msgid "International"
|
723 |
msgstr ""
|
724 |
|
725 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
726 |
#: admin/partials/ajax/add_field_to_form.php:349
|
727 |
#, php-format
|
728 |
msgid ""
|
@@ -731,27 +723,27 @@ msgid ""
|
|
731 |
"import this field."
|
732 |
msgstr ""
|
733 |
|
734 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
735 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
736 |
#: admin/partials/ajax/add_field_to_form.php:368
|
737 |
#: admin/partials/ajax/add_interest_group_to_form.php:241
|
738 |
msgid "Close"
|
739 |
msgstr ""
|
740 |
|
741 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
742 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
743 |
#: admin/partials/ajax/add_field_to_form.php:369
|
744 |
#: admin/partials/ajax/add_interest_group_to_form.php:242
|
745 |
msgid "Remove Field"
|
746 |
msgstr ""
|
747 |
|
748 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
749 |
msgid ""
|
750 |
"This field no longer exists in this list. Delete this field from the form to "
|
751 |
"prevent issues on the front end."
|
752 |
msgstr ""
|
753 |
|
754 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
755 |
#: admin/partials/ajax/add_field_to_form.php:245
|
756 |
#: admin/partials/ajax/add_interest_group_to_form.php:169
|
757 |
msgid ""
|
@@ -759,144 +751,143 @@ msgid ""
|
|
759 |
"and provide some direction on how the field should be filled out or selected."
|
760 |
msgstr ""
|
761 |
|
762 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
763 |
msgid ""
|
764 |
"No fields are assigned to this form. Select fields from the right hand "
|
765 |
"column to add to this form."
|
766 |
msgstr ""
|
767 |
|
768 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
769 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
770 |
msgid "Page Title"
|
771 |
msgstr ""
|
772 |
|
773 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
774 |
msgid ""
|
775 |
"Pre-populate the field with the current page or post title that the user is "
|
776 |
"on when opting in to your mailing list."
|
777 |
msgstr ""
|
778 |
|
779 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
780 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
781 |
msgid "Page ID"
|
782 |
msgstr ""
|
783 |
|
784 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
785 |
msgid ""
|
786 |
"Pre-populate the field with the current page or post ID that the user is on "
|
787 |
"when opting in to your mailing list."
|
788 |
msgstr ""
|
789 |
|
790 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
791 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
792 |
msgid "Page URL"
|
793 |
msgstr ""
|
794 |
|
795 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
796 |
msgid ""
|
797 |
"Pre-populate the field with the current page URL that the user is on when "
|
798 |
"opting in to your mailing list."
|
799 |
msgstr ""
|
800 |
|
801 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
802 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
803 |
msgid "Blog Name"
|
804 |
msgstr ""
|
805 |
|
806 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
807 |
msgid ""
|
808 |
"Pre-populate the field with the current blog name that the user is on when "
|
809 |
"opting in to your mailing list. This is especially helpful for multi-site "
|
810 |
"networks."
|
811 |
msgstr ""
|
812 |
|
813 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
814 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
815 |
msgid "User Logged In"
|
816 |
msgstr ""
|
817 |
|
818 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
819 |
msgid ""
|
820 |
"Detects if a user is logged in and pre-populates the field with an "
|
821 |
"appropriate value."
|
822 |
msgstr ""
|
823 |
|
824 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
825 |
msgid "Pre Defined Tags"
|
826 |
msgstr ""
|
827 |
|
828 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
829 |
msgid ""
|
830 |
"You can use any of the following tags to populate a MailChimp text field "
|
831 |
"with dynamic content. This can be used to determine which page the user "
|
832 |
"signed up on, if the user was logged in and more."
|
833 |
msgstr ""
|
834 |
|
835 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
836 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
837 |
msgid "Already assigned to your form"
|
838 |
msgstr ""
|
839 |
|
840 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
841 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
842 |
msgid "required field"
|
843 |
msgstr ""
|
844 |
|
845 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
846 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
847 |
msgid "Add to Form Builder"
|
848 |
msgstr ""
|
849 |
|
850 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
851 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
852 |
msgid "Error creating a new form"
|
853 |
msgstr ""
|
854 |
|
855 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
856 |
msgid "Creating a new form"
|
857 |
msgstr ""
|
858 |
|
859 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
860 |
msgid "Forms"
|
861 |
msgstr ""
|
862 |
|
863 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
864 |
msgid "Greetings,"
|
865 |
msgstr ""
|
866 |
|
867 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
868 |
msgid ""
|
869 |
"A request has been made to update your MailChimp account profile information."
|
870 |
msgstr ""
|
871 |
|
872 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
873 |
msgid " To do so please use the following link: "
|
874 |
msgstr ""
|
875 |
|
876 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
877 |
msgid "Update MailChimp Profile Info"
|
878 |
msgstr ""
|
879 |
|
880 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
881 |
msgid "If you did not request this update, please disregard this email."
|
882 |
msgstr ""
|
883 |
|
884 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
885 |
#, php-format
|
886 |
msgid "This email was sent from: %s"
|
887 |
msgstr ""
|
888 |
|
889 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
890 |
msgid "Unsubscribe User"
|
891 |
msgstr ""
|
892 |
|
893 |
-
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:
|
894 |
msgid "Manage List Page"
|
895 |
msgstr ""
|
896 |
|
897 |
-
#: admin/partials/ajax/add_field_to_form.php:17
|
898 |
-
#: admin/partials/
|
899 |
-
#: admin/partials/view-user.php:70
|
900 |
msgid "Get Merge Variables"
|
901 |
msgstr ""
|
902 |
|
@@ -971,17 +962,21 @@ msgstr ""
|
|
971 |
msgid "MailChimp List Stats"
|
972 |
msgstr ""
|
973 |
|
974 |
-
#: admin/partials/dashboard-widgets/class.list-activity-widget.php:
|
|
|
|
|
|
|
|
|
975 |
msgid "Select a list"
|
976 |
msgstr ""
|
977 |
|
978 |
-
#: admin/partials/dashboard-widgets/class.list-activity-widget.php:
|
979 |
msgid ""
|
980 |
"Select a list from the dropdown above. View statistics related to this list "
|
981 |
"below."
|
982 |
msgstr ""
|
983 |
|
984 |
-
#: admin/partials/dashboard-widgets/class.list-activity-widget.php:
|
985 |
msgid ""
|
986 |
"Whoops, you don't have any lists set up. Head over to MailChimp to set up "
|
987 |
"lists."
|
@@ -1078,7 +1073,7 @@ msgstr ""
|
|
1078 |
#: admin/partials/front-end-widgets/front-end-widget-form.php:110
|
1079 |
#: includes/class-yikes-inc-easy-mailchimp-extender-forms-abstract.php:43
|
1080 |
#: includes/third-party-integrations/visual-composer/visual-composer.php:89
|
1081 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
1082 |
msgid "Submit"
|
1083 |
msgstr ""
|
1084 |
|
@@ -1107,6 +1102,8 @@ msgstr ""
|
|
1107 |
msgid "You need to be logged in to sign up for this mailing list."
|
1108 |
msgstr ""
|
1109 |
|
|
|
|
|
1110 |
#: admin/partials/edit-form.php:125 admin/partials/menu/add-ons.php:10
|
1111 |
#: admin/partials/menu/manage-forms.php:26
|
1112 |
#: admin/partials/menu/manage-lists.php:30 admin/partials/menu/options.php:35
|
@@ -1116,7 +1113,7 @@ msgid "Freddie - MailChimp Mascot"
|
|
1116 |
msgstr ""
|
1117 |
|
1118 |
#: admin/partials/edit-form.php:127 admin/partials/menu/manage-forms.php:144
|
1119 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
1120 |
msgid "Edit"
|
1121 |
msgstr ""
|
1122 |
|
@@ -1153,7 +1150,7 @@ msgstr ""
|
|
1153 |
msgid "Form Builder"
|
1154 |
msgstr ""
|
1155 |
|
1156 |
-
#: admin/partials/edit-form.php:185 admin/partials/edit-form.php:
|
1157 |
msgid "Form Settings"
|
1158 |
msgstr ""
|
1159 |
|
@@ -1176,7 +1173,7 @@ msgstr ""
|
|
1176 |
msgid "Clear Form Fields"
|
1177 |
msgstr ""
|
1178 |
|
1179 |
-
#: admin/partials/edit-form.php:226 admin/partials/edit-form.php:
|
1180 |
msgid "Update Form"
|
1181 |
msgstr ""
|
1182 |
|
@@ -1450,26 +1447,26 @@ msgstr ""
|
|
1450 |
|
1451 |
#: admin/partials/edit-form.php:546
|
1452 |
#: admin/partials/upgrade-helpers/upgrade-migrate-options.php:22
|
1453 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
1454 |
msgid "Thank you for subscribing!"
|
1455 |
msgstr ""
|
1456 |
|
1457 |
#: admin/partials/edit-form.php:547
|
1458 |
#: admin/partials/upgrade-helpers/upgrade-migrate-options.php:23
|
1459 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
1460 |
msgid ""
|
1461 |
"Thank you for already being a subscriber! Your profile info has been updated."
|
1462 |
msgstr ""
|
1463 |
|
1464 |
#: admin/partials/edit-form.php:548
|
1465 |
#: admin/partials/upgrade-helpers/upgrade-migrate-options.php:20
|
1466 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
1467 |
msgid "Whoops! It looks like something went wrong. Please try again."
|
1468 |
msgstr ""
|
1469 |
|
1470 |
#: admin/partials/edit-form.php:549
|
1471 |
#: admin/partials/upgrade-helpers/upgrade-migrate-options.php:21
|
1472 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
1473 |
msgid "The email you entered is already a subscriber to this list."
|
1474 |
msgstr ""
|
1475 |
|
@@ -1481,19 +1478,19 @@ msgstr ""
|
|
1481 |
|
1482 |
#: admin/partials/edit-form.php:551
|
1483 |
#: admin/partials/upgrade-helpers/upgrade-migrate-options.php:25
|
1484 |
-
#: public/partials/ajax/class.public_ajax.php:
|
1485 |
msgid "MailChimp Profile Update"
|
1486 |
msgstr ""
|
1487 |
|
1488 |
#: admin/partials/edit-form.php:552
|
1489 |
-
#: public/partials/ajax/class.public_ajax.php:
|
1490 |
#, php-format
|
1491 |
msgid ""
|
1492 |
"%s Update email successfully sent. Please check your inbox for the message."
|
1493 |
msgstr ""
|
1494 |
|
1495 |
#: admin/partials/edit-form.php:553
|
1496 |
-
#: public/partials/ajax/class.public_ajax.php:
|
1497 |
#, php-format
|
1498 |
msgid "%s Email failed to send. Please contact the site administrator."
|
1499 |
msgstr ""
|
@@ -1547,7 +1544,7 @@ msgstr ""
|
|
1547 |
msgid "Email Subject"
|
1548 |
msgstr ""
|
1549 |
|
1550 |
-
#: admin/partials/edit-form.php:608 admin/partials/edit-form.php:
|
1551 |
msgid "Email Body"
|
1552 |
msgstr ""
|
1553 |
|
@@ -1608,193 +1605,217 @@ msgstr ""
|
|
1608 |
msgid "The subject of the email sent to the user."
|
1609 |
msgstr ""
|
1610 |
|
1611 |
-
#: admin/partials/edit-form.php:
|
1612 |
-
#, php-format
|
1613 |
msgid ""
|
1614 |
"The text in the profile update verification email sent to the subscriber. "
|
1615 |
"Wrap the text you want to be the link in <code>[link][/link]</code> tags. "
|
1616 |
-
"The link is required in the email, please don't leave these tags out.
|
1617 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1618 |
msgstr ""
|
1619 |
|
1620 |
-
#: admin/partials/edit-form.php:
|
|
|
|
|
|
|
|
|
|
|
1621 |
msgid "Edit Another Form"
|
1622 |
msgstr ""
|
1623 |
|
1624 |
-
#: admin/partials/edit-form.php:
|
1625 |
msgid "Shortcode"
|
1626 |
msgstr ""
|
1627 |
|
1628 |
-
#: admin/partials/edit-form.php:
|
1629 |
msgid "Associated List Settings"
|
1630 |
msgstr ""
|
1631 |
|
1632 |
-
#: admin/partials/edit-form.php:
|
1633 |
msgid "No Lists Found"
|
1634 |
msgstr ""
|
1635 |
|
1636 |
-
#: admin/partials/edit-form.php:
|
1637 |
msgid ""
|
1638 |
"Users who sign up via this form will be added to the list selected above."
|
1639 |
msgstr ""
|
1640 |
|
1641 |
-
#: admin/partials/edit-form.php:
|
1642 |
msgid ""
|
1643 |
"It looks like you first need to create a list to assign this form to. Head "
|
1644 |
"over to"
|
1645 |
msgstr ""
|
1646 |
|
1647 |
-
#: admin/partials/edit-form.php:
|
1648 |
msgid "Create a new list"
|
1649 |
msgstr ""
|
1650 |
|
1651 |
-
#: admin/partials/edit-form.php:
|
1652 |
msgid "to create your first list"
|
1653 |
msgstr ""
|
1654 |
|
1655 |
-
#: admin/partials/edit-form.php:
|
1656 |
#: admin/partials/menu/options-sections/api-cache-settings.php:15
|
1657 |
msgid "No MailChimp data found in temporary cache storage."
|
1658 |
msgstr ""
|
1659 |
|
1660 |
-
#: admin/partials/edit-form.php:
|
1661 |
#: admin/partials/menu/options-sections/api-cache-settings.php:15
|
1662 |
#: admin/partials/menu/options-sections/api-cache-settings.php:17
|
1663 |
msgid "Clear MailChimp API Cache"
|
1664 |
msgstr ""
|
1665 |
|
1666 |
-
#: admin/partials/edit-form.php:
|
1667 |
msgid "Opt-in Settings"
|
1668 |
msgstr ""
|
1669 |
|
1670 |
-
#: admin/partials/edit-form.php:
|
1671 |
msgid "Single or Double Opt-in"
|
1672 |
msgstr ""
|
1673 |
|
1674 |
-
#: admin/partials/edit-form.php:
|
1675 |
msgid "Single"
|
1676 |
msgstr ""
|
1677 |
|
1678 |
-
#: admin/partials/edit-form.php:
|
1679 |
msgid "Double"
|
1680 |
msgstr ""
|
1681 |
|
1682 |
-
#: admin/partials/edit-form.php:
|
1683 |
msgid ""
|
1684 |
"Double opt-in requires users to confirm their email address before being "
|
1685 |
"added to a list (recommended)"
|
1686 |
msgstr ""
|
1687 |
|
1688 |
-
#: admin/partials/edit-form.php:
|
1689 |
msgid "Update Existing Subscriber"
|
1690 |
msgstr ""
|
1691 |
|
1692 |
-
#: admin/partials/edit-form.php:
|
1693 |
-
#: admin/partials/edit-form.php:
|
1694 |
-
#: admin/partials/edit-form.php:
|
1695 |
#: admin/partials/menu/options-sections/integration-settings.php:188
|
1696 |
#: includes/third-party-integrations/visual-composer/visual-composer.php:68
|
1697 |
#: includes/third-party-integrations/visual-composer/visual-composer.php:79
|
1698 |
-
#: public/classes/checkbox-integrations/class.contact_form_7-checkbox.php:
|
1699 |
msgid "Yes"
|
1700 |
msgstr ""
|
1701 |
|
1702 |
-
#: admin/partials/edit-form.php:
|
1703 |
-
#: admin/partials/edit-form.php:
|
1704 |
-
#: admin/partials/edit-form.php:
|
1705 |
#: admin/partials/menu/options-sections/integration-settings.php:189
|
1706 |
-
#: public/classes/checkbox-integrations/class.contact_form_7-checkbox.php:
|
1707 |
msgid "No"
|
1708 |
msgstr ""
|
1709 |
|
1710 |
-
#: admin/partials/edit-form.php:
|
1711 |
#, php-format
|
1712 |
msgid ""
|
1713 |
"Update an existing subscriber's profile information instead of displaying a "
|
1714 |
"%s message."
|
1715 |
msgstr ""
|
1716 |
|
1717 |
-
#: admin/partials/edit-form.php:
|
1718 |
msgid "\"user already subscribed\""
|
1719 |
msgstr ""
|
1720 |
|
1721 |
-
#: admin/partials/edit-form.php:
|
1722 |
msgid "Send Update Email"
|
1723 |
msgstr ""
|
1724 |
|
1725 |
-
#: admin/partials/edit-form.php:
|
1726 |
msgid ""
|
1727 |
"Send an email to the user granting their permission to update their profile "
|
1728 |
"information. Otherwise, an existing subscriber filling out this form, will "
|
1729 |
"have their profile information updated without any further interaction."
|
1730 |
msgstr ""
|
1731 |
|
1732 |
-
#: admin/partials/edit-form.php:
|
1733 |
msgid "Submission Settings"
|
1734 |
msgstr ""
|
1735 |
|
1736 |
-
#: admin/partials/edit-form.php:
|
1737 |
msgid "Enable AJAX Submission"
|
1738 |
msgstr ""
|
1739 |
|
1740 |
-
#: admin/partials/edit-form.php:
|
1741 |
msgid ""
|
1742 |
"AJAX form submissions transmit data without requiring the page to refresh."
|
1743 |
msgstr ""
|
1744 |
|
1745 |
-
#: admin/partials/edit-form.php:
|
1746 |
msgid "Redirect On Submission"
|
1747 |
msgstr ""
|
1748 |
|
1749 |
-
#: admin/partials/edit-form.php:
|
1750 |
msgid "When the user signs up would you like to redirect them to another page?"
|
1751 |
msgstr ""
|
1752 |
|
1753 |
-
#: admin/partials/edit-form.php:
|
1754 |
msgid "Open Redirect URL in a New Window"
|
1755 |
msgstr ""
|
1756 |
|
1757 |
-
#: admin/partials/edit-form.php:
|
1758 |
msgid "Should the redirect URL open in a new window/tab?"
|
1759 |
msgstr ""
|
1760 |
|
1761 |
-
#: admin/partials/edit-form.php:
|
1762 |
msgid "Hide Form After Sign Up"
|
1763 |
msgstr ""
|
1764 |
|
1765 |
-
#: admin/partials/edit-form.php:
|
1766 |
msgid "Should the form be hidden after the user successfully signs up?"
|
1767 |
msgstr ""
|
1768 |
|
1769 |
-
#: admin/partials/edit-form.php:
|
1770 |
msgid "Existing Interest Groups"
|
1771 |
msgstr ""
|
1772 |
|
1773 |
-
#: admin/partials/edit-form.php:
|
1774 |
msgid "Replace"
|
1775 |
msgstr ""
|
1776 |
|
1777 |
-
#: admin/partials/edit-form.php:
|
1778 |
msgid "Update"
|
1779 |
msgstr ""
|
1780 |
|
1781 |
-
#: admin/partials/edit-form.php:
|
1782 |
msgid ""
|
1783 |
"<strong>Replace</strong>: Replace all interest groups with the new ones "
|
1784 |
"submitted."
|
1785 |
msgstr ""
|
1786 |
|
1787 |
-
#: admin/partials/edit-form.php:
|
1788 |
msgid ""
|
1789 |
"<strong>Update</strong>: Update <em>only</em> the ones submitted. Leave "
|
1790 |
"existing interest groups as is."
|
1791 |
msgstr ""
|
1792 |
|
1793 |
-
#: admin/partials/edit-form.php:
|
1794 |
msgid "Are you sure you want to delete this form? This cannot be undone."
|
1795 |
msgstr ""
|
1796 |
|
1797 |
-
#: admin/partials/edit-form.php:
|
1798 |
msgid "Delete Form"
|
1799 |
msgstr ""
|
1800 |
|
@@ -2203,7 +2224,7 @@ msgstr ""
|
|
2203 |
msgid "Get your API key here"
|
2204 |
msgstr ""
|
2205 |
|
2206 |
-
#: admin/partials/menu/options-sections/general-settings.php:
|
2207 |
msgid "Enable nonce validation on this site?"
|
2208 |
msgstr ""
|
2209 |
|
@@ -2604,7 +2625,7 @@ msgid ""
|
|
2604 |
msgstr ""
|
2605 |
|
2606 |
#: admin/partials/view-list.php:99
|
2607 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
2608 |
msgid "New Subscriber"
|
2609 |
msgstr ""
|
2610 |
|
@@ -3054,96 +3075,85 @@ msgstr[1] ""
|
|
3054 |
msgid "yyyy-mm-dd"
|
3055 |
msgstr ""
|
3056 |
|
3057 |
-
#: public/classes/checkbox-integrations.php:
|
3058 |
#: public/classes/checkbox-integrations/class.bbpress_forms-checkbox.php:9
|
3059 |
#: public/classes/checkbox-integrations/class.buddypress_form-checkbox.php:9
|
3060 |
#: public/classes/checkbox-integrations/class.comment_form-checkbox.php:9
|
3061 |
-
#: public/classes/checkbox-integrations/class.contact_form_7-checkbox.php:
|
3062 |
-
#: public/classes/checkbox-integrations/class.easy_digital_downloads_checkout_form-checkbox.php:
|
3063 |
-
#: public/classes/checkbox-integrations/class.registration_form-checkbox.php:
|
3064 |
-
#: public/classes/checkbox-integrations/class.woocommerce_checkout_form-checkbox.php:
|
3065 |
msgid "Whoops, you shouldn't be accessing this file directly. Abort!"
|
3066 |
msgstr ""
|
3067 |
|
3068 |
-
#: public/classes/checkbox-integrations.php:
|
3069 |
msgid "Sign me up for your mailing list."
|
3070 |
msgstr ""
|
3071 |
|
3072 |
-
#: public/classes/checkbox-integrations.php:
|
3073 |
msgid "Checkbox Integration Subscribe User"
|
3074 |
msgstr ""
|
3075 |
|
3076 |
-
#: public/classes/
|
3077 |
-
msgid "Note"
|
3078 |
-
msgstr ""
|
3079 |
-
|
3080 |
-
#: public/classes/checkbox-integrations/class.registration_form-checkbox.php:57
|
3081 |
-
#, php-format
|
3082 |
-
msgid ""
|
3083 |
-
"You have not been subscribed to our mailing list. %s is already subscribed "
|
3084 |
-
"to this list."
|
3085 |
-
msgstr ""
|
3086 |
-
|
3087 |
-
#: public/classes/process/class.process_form_submission_handler.php:256
|
3088 |
msgid "Error: We were unable to find the form ID."
|
3089 |
msgstr ""
|
3090 |
|
3091 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
3092 |
msgid "Error: We were unable to find the form data."
|
3093 |
msgstr ""
|
3094 |
|
3095 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
3096 |
msgid "Error: We were unable to find the form fields."
|
3097 |
msgstr ""
|
3098 |
|
3099 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
3100 |
msgid "Error: We were unable to find the list handler."
|
3101 |
msgstr ""
|
3102 |
|
3103 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
3104 |
msgid "Error: The email is invalid."
|
3105 |
msgstr ""
|
3106 |
|
3107 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
3108 |
msgid ""
|
3109 |
"Error: It looks like the honeypot was filled out and the form was not "
|
3110 |
"properly submitted."
|
3111 |
msgstr ""
|
3112 |
|
3113 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
3114 |
msgid "You're already subscribed. "
|
3115 |
msgstr ""
|
3116 |
|
3117 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
3118 |
msgid ""
|
3119 |
"To update your MailChimp profile, please click to send yourself an update "
|
3120 |
"link"
|
3121 |
msgstr ""
|
3122 |
|
3123 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
3124 |
msgid "A required field is missing."
|
3125 |
msgstr ""
|
3126 |
|
3127 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
3128 |
msgid "A required interest group is missing."
|
3129 |
msgstr ""
|
3130 |
|
3131 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
3132 |
msgid ""
|
3133 |
"Error: Sorry, the nonce security check didn't pass. Please reload the page "
|
3134 |
"and try again. You may want to try clearing your browser cache as a last "
|
3135 |
"attempt."
|
3136 |
msgstr ""
|
3137 |
|
3138 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
3139 |
msgid "Please check the reCAPTCHA field."
|
3140 |
msgstr ""
|
3141 |
|
3142 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
3143 |
msgid "Please refresh the page and try again."
|
3144 |
msgstr ""
|
3145 |
|
3146 |
-
#: public/classes/process/class.process_form_submission_handler.php:
|
3147 |
msgid ""
|
3148 |
"Thank you for subscribing. Check your email for the confirmation message."
|
3149 |
msgstr ""
|
@@ -3152,15 +3162,15 @@ msgstr ""
|
|
3152 |
msgid "Whoops, you forgot to specify a form ID."
|
3153 |
msgstr ""
|
3154 |
|
3155 |
-
#: public/partials/ajax/class.public_ajax.php:
|
3156 |
msgid "Send Update Profile Email - Get Account Lists"
|
3157 |
msgstr ""
|
3158 |
|
3159 |
-
#: public/partials/ajax/class.public_ajax.php:
|
3160 |
msgid "Send Update Profile Email - Get Member Info."
|
3161 |
msgstr ""
|
3162 |
|
3163 |
-
#: public/partials/ajax/class.public_ajax.php:
|
3164 |
#, php-format
|
3165 |
msgid ""
|
3166 |
"Error sending update profile email. <strong>Error(s): %s</strong>. Please "
|
@@ -3184,61 +3194,61 @@ msgid ""
|
|
3184 |
"select a different form."
|
3185 |
msgstr ""
|
3186 |
|
3187 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
3188 |
msgid ""
|
3189 |
"Whoops! It looks like you enabled reCAPTCHA but forgot to enter the "
|
3190 |
"reCAPTCHA site key!"
|
3191 |
msgstr ""
|
3192 |
|
3193 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
3194 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
3195 |
msgid "Edit ReCaptcha Settings"
|
3196 |
msgstr ""
|
3197 |
|
3198 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
3199 |
msgid ""
|
3200 |
"Whoops! It looks like you enabled reCAPTCHA but forgot to enter the "
|
3201 |
"reCAPTCHA secret key!"
|
3202 |
msgstr ""
|
3203 |
|
3204 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
3205 |
msgid ""
|
3206 |
"An email field is required for all MailChimp forms. Please add an email "
|
3207 |
"field to this form."
|
3208 |
msgstr ""
|
3209 |
|
3210 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
3211 |
msgid "Whoops, it looks like you forgot to assign fields to this form."
|
3212 |
msgstr ""
|
3213 |
|
3214 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
3215 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
3216 |
msgid "This field is required."
|
3217 |
msgstr ""
|
3218 |
|
3219 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
3220 |
msgid "Please enter a valid URL to the website."
|
3221 |
msgstr ""
|
3222 |
|
3223 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
3224 |
msgid "Please enter a valid URL to the image."
|
3225 |
msgstr ""
|
3226 |
|
3227 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
3228 |
msgid "International Phone Number"
|
3229 |
msgstr ""
|
3230 |
|
3231 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
3232 |
msgid "US Phone Number (###) ### - ####"
|
3233 |
msgstr ""
|
3234 |
|
3235 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
3236 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
3237 |
msgid "5 digit zip code, numbers only"
|
3238 |
msgstr ""
|
3239 |
|
3240 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
3241 |
-
#: public/partials/shortcodes/process_form_shortcode.php:
|
3242 |
msgid "Select..."
|
3243 |
msgstr ""
|
3244 |
|
1 |
# SOME DESCRIPTIVE TITLE.
|
2 |
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
3 |
+
# This file is distributed under the same license as the yikes-inc-easy-mailchimp-extender package.
|
4 |
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
5 |
#
|
6 |
#, fuzzy
|
7 |
msgid ""
|
8 |
msgstr ""
|
9 |
+
"Project-Id-Version: yikes-inc-easy-mailchimp-extender 6.4.8\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
+
"POT-Creation-Date: 2018-10-29 13:40-0400\n"
|
12 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
41 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:387
|
42 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:409
|
43 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:429
|
44 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2574
|
45 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2609
|
46 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2629
|
47 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2672
|
48 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2706
|
49 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2847
|
50 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2869
|
51 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2893
|
52 |
msgid ""
|
53 |
"We've run into an error. The security check didn't pass. Please try again."
|
54 |
msgstr ""
|
56 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:387
|
57 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:409
|
58 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:429
|
59 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2609
|
60 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2629
|
61 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2672
|
62 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2707
|
63 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2847
|
64 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2869
|
65 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2893
|
66 |
msgid "Failed nonce validation"
|
67 |
msgstr ""
|
68 |
|
181 |
msgstr ""
|
182 |
|
183 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:803
|
184 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1803
|
185 |
msgid "Click to edit the label"
|
186 |
msgstr ""
|
187 |
|
221 |
|
222 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:970
|
223 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:971
|
224 |
+
#: public/partials/shortcodes/process_form_shortcode.php:205
|
225 |
msgid "Edit Form"
|
226 |
msgstr ""
|
227 |
|
231 |
|
232 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:990
|
233 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:991
|
234 |
+
#: admin/partials/edit-form.php:748 admin/partials/view-user.php:119
|
235 |
msgid "View List"
|
236 |
msgstr ""
|
237 |
|
342 |
msgstr ""
|
343 |
|
344 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1448
|
345 |
+
#: public/partials/shortcodes/process_form_shortcode.php:62
|
346 |
+
#: public/partials/shortcodes/process_form_shortcode.php:65
|
347 |
msgid "ReCaptcha Settings"
|
348 |
msgstr ""
|
349 |
|
390 |
msgstr ""
|
391 |
|
392 |
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1509
|
393 |
+
#: admin/partials/edit-form.php:730
|
394 |
msgid "Associated List"
|
395 |
msgstr ""
|
396 |
|
461 |
msgid "Tweet about it"
|
462 |
msgstr ""
|
463 |
|
464 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1702
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
465 |
#, php-format
|
466 |
msgid "This plugin made with %s by %s"
|
467 |
msgstr ""
|
468 |
|
469 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1708
|
470 |
msgid ""
|
471 |
"is a web design and development company located in Philadelphia, "
|
472 |
"Pennsylvania, US. YIKES specializes in custom WordPress theme and plugin "
|
474 |
"applications and more."
|
475 |
msgstr ""
|
476 |
|
477 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1711
|
478 |
msgid "Show YIKES Some Love"
|
479 |
msgstr ""
|
480 |
|
481 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1711
|
482 |
msgid "About YIKES"
|
483 |
msgstr ""
|
484 |
|
485 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1718
|
486 |
msgid "Easy Forms for MailChimp Add-Ons"
|
487 |
msgstr ""
|
488 |
|
489 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1720
|
490 |
msgid "Check out available add-ons for some seriously enhanced features."
|
491 |
msgstr ""
|
492 |
|
493 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1721
|
494 |
msgid "View Add-Ons"
|
495 |
msgstr ""
|
496 |
|
497 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1747
|
498 |
msgid "We've encountered an error. No list ID was sent."
|
499 |
msgstr ""
|
500 |
|
501 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1751
|
502 |
msgid ""
|
503 |
"We've encountered an error. Reload the page and try again. If the error "
|
504 |
"persists, please reach out to support."
|
505 |
msgstr ""
|
506 |
|
507 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1799
|
508 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2148
|
509 |
msgid "Field no longer exists."
|
510 |
msgstr ""
|
511 |
|
512 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1802
|
513 |
msgid "Click to save changes."
|
514 |
msgstr ""
|
515 |
|
516 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1805
|
517 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2150
|
518 |
#: admin/partials/ajax/add_field_to_form.php:41
|
519 |
#: admin/partials/ajax/add_interest_group_to_form.php:65
|
520 |
msgid "type"
|
521 |
msgstr ""
|
522 |
|
523 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1811
|
524 |
msgid ""
|
525 |
"This field no longer exists in this list. Delete this field from the form to "
|
526 |
"prevent issues on your website."
|
527 |
msgstr ""
|
528 |
|
529 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1838
|
530 |
#: admin/partials/ajax/add_field_to_form.php:65
|
531 |
msgid "Merge Tag"
|
532 |
msgstr ""
|
533 |
|
534 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1862
|
535 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1879
|
536 |
#: admin/partials/ajax/add_field_to_form.php:90
|
537 |
#: admin/partials/ajax/add_field_to_form.php:136
|
538 |
msgid "Placeholder"
|
539 |
msgstr ""
|
540 |
|
541 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1867
|
542 |
#: admin/partials/ajax/add_field_to_form.php:95
|
543 |
msgid "Assign a placeholder value to this field."
|
544 |
msgstr ""
|
545 |
|
546 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1884
|
547 |
#: admin/partials/ajax/add_field_to_form.php:141
|
548 |
msgid ""
|
549 |
"Use placeholders for this field (these will be automatically filled in with "
|
550 |
"field names)."
|
551 |
msgstr ""
|
552 |
|
553 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1903
|
554 |
#: admin/partials/ajax/add_field_to_form.php:159
|
555 |
msgid "Default Value"
|
556 |
msgstr ""
|
557 |
|
558 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1908
|
559 |
#: admin/partials/ajax/add_field_to_form.php:164
|
560 |
msgid ""
|
561 |
"Assign a default value to populate this field with on initial page load."
|
562 |
msgstr ""
|
563 |
|
564 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1913
|
565 |
#: admin/partials/ajax/add_field_to_form.php:169
|
566 |
msgid "View Pre-Defined Tags"
|
567 |
msgstr ""
|
568 |
|
569 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1927
|
570 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1965
|
571 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2179
|
572 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2249
|
573 |
#: admin/partials/ajax/add_field_to_form.php:183
|
574 |
#: admin/partials/ajax/add_field_to_form.php:216
|
575 |
#: admin/partials/ajax/add_interest_group_to_form.php:89
|
578 |
msgid "Default Selection"
|
579 |
msgstr ""
|
580 |
|
581 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1953
|
582 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2237
|
583 |
#: admin/partials/ajax/add_field_to_form.php:204
|
584 |
#: admin/partials/ajax/add_interest_group_to_form.php:103
|
585 |
#: admin/partials/ajax/add_interest_group_to_form.php:129
|
586 |
msgid "Select the option that should be selected by default."
|
587 |
msgstr ""
|
588 |
|
589 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1975
|
590 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2259
|
591 |
#: admin/partials/ajax/add_field_to_form.php:227
|
592 |
#: admin/partials/ajax/add_interest_group_to_form.php:152
|
593 |
msgid "Which option should be selected by default?"
|
594 |
msgstr ""
|
595 |
|
596 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1993
|
597 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2273
|
598 |
#: admin/partials/ajax/add_field_to_form.php:240
|
599 |
#: admin/partials/ajax/add_interest_group_to_form.php:164
|
600 |
msgid "Description"
|
601 |
msgstr ""
|
602 |
|
603 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:1998
|
604 |
msgid ""
|
605 |
"Enter the description for the form field. This will be displayed to the user "
|
606 |
"and will provide some direction on how the field should be filled out or "
|
607 |
"selected."
|
608 |
msgstr ""
|
609 |
|
610 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2005
|
611 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2286
|
612 |
#: admin/partials/ajax/add_field_to_form.php:252
|
613 |
#: admin/partials/ajax/add_interest_group_to_form.php:177
|
614 |
msgid "Description Above Field"
|
615 |
msgstr ""
|
616 |
|
617 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2010
|
618 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2291
|
619 |
#: admin/partials/ajax/add_field_to_form.php:257
|
620 |
#: admin/partials/ajax/add_interest_group_to_form.php:182
|
621 |
msgid ""
|
623 |
"if you'd like the description to appear above the field."
|
624 |
msgstr ""
|
625 |
|
626 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2017
|
627 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2299
|
628 |
#: admin/partials/ajax/add_field_to_form.php:264
|
629 |
#: admin/partials/ajax/add_interest_group_to_form.php:190
|
630 |
msgid "Additional Classes"
|
631 |
msgstr ""
|
632 |
|
633 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2022
|
634 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2304
|
635 |
#: admin/partials/ajax/add_field_to_form.php:269
|
636 |
#: admin/partials/ajax/add_interest_group_to_form.php:195
|
637 |
#, php-format
|
638 |
msgid "Assign additional classes to this field. %s."
|
639 |
msgstr ""
|
640 |
|
641 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2022
|
642 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2304
|
643 |
#: admin/partials/ajax/add_field_to_form.php:269
|
644 |
#: admin/partials/ajax/add_interest_group_to_form.php:195
|
645 |
msgid "View bundled classes"
|
646 |
msgstr ""
|
647 |
|
648 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2029
|
649 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2311
|
650 |
#: admin/partials/ajax/add_field_to_form.php:276
|
651 |
#: admin/partials/ajax/add_interest_group_to_form.php:202
|
652 |
msgid "Field Required?"
|
653 |
msgstr ""
|
654 |
|
655 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2034
|
656 |
#: admin/partials/ajax/add_field_to_form.php:280
|
657 |
msgid "Email is a required field."
|
658 |
msgstr ""
|
659 |
|
660 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2035
|
661 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2317
|
662 |
#: admin/partials/ajax/add_field_to_form.php:281
|
663 |
#: admin/partials/ajax/add_interest_group_to_form.php:207
|
664 |
msgid "Require this field to be filled in before the form can be submitted."
|
665 |
msgstr ""
|
666 |
|
667 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2042
|
668 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2324
|
669 |
#: admin/partials/ajax/add_field_to_form.php:288
|
670 |
#: admin/partials/ajax/add_interest_group_to_form.php:214
|
671 |
msgid "Hide Field"
|
672 |
msgstr ""
|
673 |
|
674 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2047
|
675 |
#: admin/partials/ajax/add_field_to_form.php:292
|
676 |
msgid "Cannot toggle email field visibility."
|
677 |
msgstr ""
|
678 |
|
679 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2048
|
680 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2330
|
681 |
#: admin/partials/ajax/add_field_to_form.php:293
|
682 |
#: admin/partials/ajax/add_interest_group_to_form.php:219
|
683 |
msgid "Hide this field from being displayed on the front end."
|
684 |
msgstr ""
|
685 |
|
686 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2055
|
687 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2337
|
688 |
#: admin/partials/ajax/add_field_to_form.php:300
|
689 |
#: admin/partials/ajax/add_interest_group_to_form.php:226
|
690 |
msgid "Hide Label"
|
691 |
msgstr ""
|
692 |
|
693 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2061
|
694 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2343
|
695 |
#: admin/partials/ajax/add_field_to_form.php:305
|
696 |
#: admin/partials/ajax/add_interest_group_to_form.php:231
|
697 |
msgid "Toggle field label visibility."
|
698 |
msgstr ""
|
699 |
|
700 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2080
|
701 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2086
|
702 |
#: admin/partials/ajax/add_field_to_form.php:324
|
703 |
#: admin/partials/ajax/add_field_to_form.php:330
|
704 |
msgid "Date Format"
|
705 |
msgstr ""
|
706 |
|
707 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2092
|
708 |
#: admin/partials/ajax/add_field_to_form.php:336
|
709 |
msgid "Phone Format"
|
710 |
msgstr ""
|
711 |
|
712 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2093
|
713 |
#: admin/partials/ajax/add_field_to_form.php:337
|
714 |
msgid "International"
|
715 |
msgstr ""
|
716 |
|
717 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2105
|
718 |
#: admin/partials/ajax/add_field_to_form.php:349
|
719 |
#, php-format
|
720 |
msgid ""
|
723 |
"import this field."
|
724 |
msgstr ""
|
725 |
|
726 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2124
|
727 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2353
|
728 |
#: admin/partials/ajax/add_field_to_form.php:368
|
729 |
#: admin/partials/ajax/add_interest_group_to_form.php:241
|
730 |
msgid "Close"
|
731 |
msgstr ""
|
732 |
|
733 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2125
|
734 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2354
|
735 |
#: admin/partials/ajax/add_field_to_form.php:369
|
736 |
#: admin/partials/ajax/add_interest_group_to_form.php:242
|
737 |
msgid "Remove Field"
|
738 |
msgstr ""
|
739 |
|
740 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2157
|
741 |
msgid ""
|
742 |
"This field no longer exists in this list. Delete this field from the form to "
|
743 |
"prevent issues on the front end."
|
744 |
msgstr ""
|
745 |
|
746 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2278
|
747 |
#: admin/partials/ajax/add_field_to_form.php:245
|
748 |
#: admin/partials/ajax/add_interest_group_to_form.php:169
|
749 |
msgid ""
|
751 |
"and provide some direction on how the field should be filled out or selected."
|
752 |
msgstr ""
|
753 |
|
754 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2368
|
755 |
msgid ""
|
756 |
"No fields are assigned to this form. Select fields from the right hand "
|
757 |
"column to add to this form."
|
758 |
msgstr ""
|
759 |
|
760 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2379
|
761 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2380
|
762 |
msgid "Page Title"
|
763 |
msgstr ""
|
764 |
|
765 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2379
|
766 |
msgid ""
|
767 |
"Pre-populate the field with the current page or post title that the user is "
|
768 |
"on when opting in to your mailing list."
|
769 |
msgstr ""
|
770 |
|
771 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2384
|
772 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2385
|
773 |
msgid "Page ID"
|
774 |
msgstr ""
|
775 |
|
776 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2384
|
777 |
msgid ""
|
778 |
"Pre-populate the field with the current page or post ID that the user is on "
|
779 |
"when opting in to your mailing list."
|
780 |
msgstr ""
|
781 |
|
782 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2389
|
783 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2390
|
784 |
msgid "Page URL"
|
785 |
msgstr ""
|
786 |
|
787 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2389
|
788 |
msgid ""
|
789 |
"Pre-populate the field with the current page URL that the user is on when "
|
790 |
"opting in to your mailing list."
|
791 |
msgstr ""
|
792 |
|
793 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2394
|
794 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2395
|
795 |
msgid "Blog Name"
|
796 |
msgstr ""
|
797 |
|
798 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2394
|
799 |
msgid ""
|
800 |
"Pre-populate the field with the current blog name that the user is on when "
|
801 |
"opting in to your mailing list. This is especially helpful for multi-site "
|
802 |
"networks."
|
803 |
msgstr ""
|
804 |
|
805 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2399
|
806 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2400
|
807 |
msgid "User Logged In"
|
808 |
msgstr ""
|
809 |
|
810 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2399
|
811 |
msgid ""
|
812 |
"Detects if a user is logged in and pre-populates the field with an "
|
813 |
"appropriate value."
|
814 |
msgstr ""
|
815 |
|
816 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2427
|
817 |
msgid "Pre Defined Tags"
|
818 |
msgstr ""
|
819 |
|
820 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2428
|
821 |
msgid ""
|
822 |
"You can use any of the following tags to populate a MailChimp text field "
|
823 |
"with dynamic content. This can be used to determine which page the user "
|
824 |
"signed up on, if the user was logged in and more."
|
825 |
msgstr ""
|
826 |
|
827 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2472
|
828 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2534
|
829 |
msgid "Already assigned to your form"
|
830 |
msgstr ""
|
831 |
|
832 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2476
|
833 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2490
|
834 |
msgid "required field"
|
835 |
msgstr ""
|
836 |
|
837 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2500
|
838 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2558
|
839 |
msgid "Add to Form Builder"
|
840 |
msgstr ""
|
841 |
|
842 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2588
|
843 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2589
|
844 |
msgid "Error creating a new form"
|
845 |
msgstr ""
|
846 |
|
847 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2588
|
848 |
msgid "Creating a new form"
|
849 |
msgstr ""
|
850 |
|
851 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2588
|
852 |
msgid "Forms"
|
853 |
msgstr ""
|
854 |
|
855 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2818
|
856 |
msgid "Greetings,"
|
857 |
msgstr ""
|
858 |
|
859 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2821
|
860 |
msgid ""
|
861 |
"A request has been made to update your MailChimp account profile information."
|
862 |
msgstr ""
|
863 |
|
864 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2822
|
865 |
msgid " To do so please use the following link: "
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2824
|
869 |
msgid "Update MailChimp Profile Info"
|
870 |
msgstr ""
|
871 |
|
872 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2828
|
873 |
msgid "If you did not request this update, please disregard this email."
|
874 |
msgstr ""
|
875 |
|
876 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2831
|
877 |
#, php-format
|
878 |
msgid "This email was sent from: %s"
|
879 |
msgstr ""
|
880 |
|
881 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2855
|
882 |
msgid "Unsubscribe User"
|
883 |
msgstr ""
|
884 |
|
885 |
+
#: admin/class-yikes-inc-easy-mailchimp-extender-admin.php:2856
|
886 |
msgid "Manage List Page"
|
887 |
msgstr ""
|
888 |
|
889 |
+
#: admin/partials/ajax/add_field_to_form.php:17 admin/partials/edit-form.php:94
|
890 |
+
#: admin/partials/view-list.php:28 admin/partials/view-user.php:70
|
|
|
891 |
msgid "Get Merge Variables"
|
892 |
msgstr ""
|
893 |
|
962 |
msgid "MailChimp List Stats"
|
963 |
msgstr ""
|
964 |
|
965 |
+
#: admin/partials/dashboard-widgets/class.list-activity-widget.php:75
|
966 |
+
msgid "There was an error fetching your list data."
|
967 |
+
msgstr ""
|
968 |
+
|
969 |
+
#: admin/partials/dashboard-widgets/class.list-activity-widget.php:85
|
970 |
msgid "Select a list"
|
971 |
msgstr ""
|
972 |
|
973 |
+
#: admin/partials/dashboard-widgets/class.list-activity-widget.php:95
|
974 |
msgid ""
|
975 |
"Select a list from the dropdown above. View statistics related to this list "
|
976 |
"below."
|
977 |
msgstr ""
|
978 |
|
979 |
+
#: admin/partials/dashboard-widgets/class.list-activity-widget.php:103
|
980 |
msgid ""
|
981 |
"Whoops, you don't have any lists set up. Head over to MailChimp to set up "
|
982 |
"lists."
|
1073 |
#: admin/partials/front-end-widgets/front-end-widget-form.php:110
|
1074 |
#: includes/class-yikes-inc-easy-mailchimp-extender-forms-abstract.php:43
|
1075 |
#: includes/third-party-integrations/visual-composer/visual-composer.php:89
|
1076 |
+
#: public/partials/shortcodes/process_form_shortcode.php:109
|
1077 |
msgid "Submit"
|
1078 |
msgstr ""
|
1079 |
|
1102 |
msgid "You need to be logged in to sign up for this mailing list."
|
1103 |
msgstr ""
|
1104 |
|
1105 |
+
#. //www.yikesinc.com
|
1106 |
+
#.
|
1107 |
#: admin/partials/edit-form.php:125 admin/partials/menu/add-ons.php:10
|
1108 |
#: admin/partials/menu/manage-forms.php:26
|
1109 |
#: admin/partials/menu/manage-lists.php:30 admin/partials/menu/options.php:35
|
1113 |
msgstr ""
|
1114 |
|
1115 |
#: admin/partials/edit-form.php:127 admin/partials/menu/manage-forms.php:144
|
1116 |
+
#: public/partials/shortcodes/process_form_shortcode.php:205
|
1117 |
msgid "Edit"
|
1118 |
msgstr ""
|
1119 |
|
1150 |
msgid "Form Builder"
|
1151 |
msgstr ""
|
1152 |
|
1153 |
+
#: admin/partials/edit-form.php:185 admin/partials/edit-form.php:703
|
1154 |
msgid "Form Settings"
|
1155 |
msgstr ""
|
1156 |
|
1173 |
msgid "Clear Form Fields"
|
1174 |
msgstr ""
|
1175 |
|
1176 |
+
#: admin/partials/edit-form.php:226 admin/partials/edit-form.php:915
|
1177 |
msgid "Update Form"
|
1178 |
msgstr ""
|
1179 |
|
1447 |
|
1448 |
#: admin/partials/edit-form.php:546
|
1449 |
#: admin/partials/upgrade-helpers/upgrade-migrate-options.php:22
|
1450 |
+
#: public/classes/process/class.process_form_submission_handler.php:263
|
1451 |
msgid "Thank you for subscribing!"
|
1452 |
msgstr ""
|
1453 |
|
1454 |
#: admin/partials/edit-form.php:547
|
1455 |
#: admin/partials/upgrade-helpers/upgrade-migrate-options.php:23
|
1456 |
+
#: public/classes/process/class.process_form_submission_handler.php:265
|
1457 |
msgid ""
|
1458 |
"Thank you for already being a subscriber! Your profile info has been updated."
|
1459 |
msgstr ""
|
1460 |
|
1461 |
#: admin/partials/edit-form.php:548
|
1462 |
#: admin/partials/upgrade-helpers/upgrade-migrate-options.php:20
|
1463 |
+
#: public/classes/process/class.process_form_submission_handler.php:253
|
1464 |
msgid "Whoops! It looks like something went wrong. Please try again."
|
1465 |
msgstr ""
|
1466 |
|
1467 |
#: admin/partials/edit-form.php:549
|
1468 |
#: admin/partials/upgrade-helpers/upgrade-migrate-options.php:21
|
1469 |
+
#: public/classes/process/class.process_form_submission_handler.php:252
|
1470 |
msgid "The email you entered is already a subscriber to this list."
|
1471 |
msgstr ""
|
1472 |
|
1478 |
|
1479 |
#: admin/partials/edit-form.php:551
|
1480 |
#: admin/partials/upgrade-helpers/upgrade-migrate-options.php:25
|
1481 |
+
#: public/partials/ajax/class.public_ajax.php:143
|
1482 |
msgid "MailChimp Profile Update"
|
1483 |
msgstr ""
|
1484 |
|
1485 |
#: admin/partials/edit-form.php:552
|
1486 |
+
#: public/partials/ajax/class.public_ajax.php:155
|
1487 |
#, php-format
|
1488 |
msgid ""
|
1489 |
"%s Update email successfully sent. Please check your inbox for the message."
|
1490 |
msgstr ""
|
1491 |
|
1492 |
#: admin/partials/edit-form.php:553
|
1493 |
+
#: public/partials/ajax/class.public_ajax.php:160
|
1494 |
#, php-format
|
1495 |
msgid "%s Email failed to send. Please contact the site administrator."
|
1496 |
msgstr ""
|
1544 |
msgid "Email Subject"
|
1545 |
msgstr ""
|
1546 |
|
1547 |
+
#: admin/partials/edit-form.php:608 admin/partials/edit-form.php:652
|
1548 |
msgid "Email Body"
|
1549 |
msgstr ""
|
1550 |
|
1605 |
msgid "The subject of the email sent to the user."
|
1606 |
msgstr ""
|
1607 |
|
1608 |
+
#: admin/partials/edit-form.php:653
|
|
|
1609 |
msgid ""
|
1610 |
"The text in the profile update verification email sent to the subscriber. "
|
1611 |
"Wrap the text you want to be the link in <code>[link][/link]</code> tags. "
|
1612 |
+
"The link is required in the email, please don't leave these tags out."
|
1613 |
+
msgstr ""
|
1614 |
+
|
1615 |
+
#: admin/partials/edit-form.php:656
|
1616 |
+
msgid "Tags"
|
1617 |
+
msgstr ""
|
1618 |
+
|
1619 |
+
#: admin/partials/edit-form.php:657
|
1620 |
+
msgid "You can also use these tags in your email:"
|
1621 |
+
msgstr ""
|
1622 |
+
|
1623 |
+
#: admin/partials/edit-form.php:659
|
1624 |
+
#, php-format
|
1625 |
+
msgid "<code>[url]</code> displays your website's URL (i.e. %s)."
|
1626 |
+
msgstr ""
|
1627 |
+
|
1628 |
+
#: admin/partials/edit-form.php:660
|
1629 |
+
msgid "<code>[email]</code> displays the subscriber's email address."
|
1630 |
+
msgstr ""
|
1631 |
+
|
1632 |
+
#: admin/partials/edit-form.php:661
|
1633 |
+
msgid "<code>[subscriber_id]</code> displays the subscriber's unique email ID."
|
1634 |
msgstr ""
|
1635 |
|
1636 |
+
#: admin/partials/edit-form.php:662
|
1637 |
+
#, php-format
|
1638 |
+
msgid "<code>[form_name]</code> displays your form's name (i.e. %s)."
|
1639 |
+
msgstr ""
|
1640 |
+
|
1641 |
+
#: admin/partials/edit-form.php:707
|
1642 |
msgid "Edit Another Form"
|
1643 |
msgstr ""
|
1644 |
|
1645 |
+
#: admin/partials/edit-form.php:717 admin/partials/menu/manage-forms.php:147
|
1646 |
msgid "Shortcode"
|
1647 |
msgstr ""
|
1648 |
|
1649 |
+
#: admin/partials/edit-form.php:724
|
1650 |
msgid "Associated List Settings"
|
1651 |
msgstr ""
|
1652 |
|
1653 |
+
#: admin/partials/edit-form.php:741
|
1654 |
msgid "No Lists Found"
|
1655 |
msgstr ""
|
1656 |
|
1657 |
+
#: admin/partials/edit-form.php:751
|
1658 |
msgid ""
|
1659 |
"Users who sign up via this form will be added to the list selected above."
|
1660 |
msgstr ""
|
1661 |
|
1662 |
+
#: admin/partials/edit-form.php:755
|
1663 |
msgid ""
|
1664 |
"It looks like you first need to create a list to assign this form to. Head "
|
1665 |
"over to"
|
1666 |
msgstr ""
|
1667 |
|
1668 |
+
#: admin/partials/edit-form.php:755
|
1669 |
msgid "Create a new list"
|
1670 |
msgstr ""
|
1671 |
|
1672 |
+
#: admin/partials/edit-form.php:755
|
1673 |
msgid "to create your first list"
|
1674 |
msgstr ""
|
1675 |
|
1676 |
+
#: admin/partials/edit-form.php:761
|
1677 |
#: admin/partials/menu/options-sections/api-cache-settings.php:15
|
1678 |
msgid "No MailChimp data found in temporary cache storage."
|
1679 |
msgstr ""
|
1680 |
|
1681 |
+
#: admin/partials/edit-form.php:761 admin/partials/edit-form.php:763
|
1682 |
#: admin/partials/menu/options-sections/api-cache-settings.php:15
|
1683 |
#: admin/partials/menu/options-sections/api-cache-settings.php:17
|
1684 |
msgid "Clear MailChimp API Cache"
|
1685 |
msgstr ""
|
1686 |
|
1687 |
+
#: admin/partials/edit-form.php:770
|
1688 |
msgid "Opt-in Settings"
|
1689 |
msgstr ""
|
1690 |
|
1691 |
+
#: admin/partials/edit-form.php:780
|
1692 |
msgid "Single or Double Opt-in"
|
1693 |
msgstr ""
|
1694 |
|
1695 |
+
#: admin/partials/edit-form.php:782
|
1696 |
msgid "Single"
|
1697 |
msgstr ""
|
1698 |
|
1699 |
+
#: admin/partials/edit-form.php:783
|
1700 |
msgid "Double"
|
1701 |
msgstr ""
|
1702 |
|
1703 |
+
#: admin/partials/edit-form.php:785
|
1704 |
msgid ""
|
1705 |
"Double opt-in requires users to confirm their email address before being "
|
1706 |
"added to a list (recommended)"
|
1707 |
msgstr ""
|
1708 |
|
1709 |
+
#: admin/partials/edit-form.php:794
|
1710 |
msgid "Update Existing Subscriber"
|
1711 |
msgstr ""
|
1712 |
|
1713 |
+
#: admin/partials/edit-form.php:796 admin/partials/edit-form.php:812
|
1714 |
+
#: admin/partials/edit-form.php:832 admin/partials/edit-form.php:847
|
1715 |
+
#: admin/partials/edit-form.php:864 admin/partials/edit-form.php:881
|
1716 |
#: admin/partials/menu/options-sections/integration-settings.php:188
|
1717 |
#: includes/third-party-integrations/visual-composer/visual-composer.php:68
|
1718 |
#: includes/third-party-integrations/visual-composer/visual-composer.php:79
|
1719 |
+
#: public/classes/checkbox-integrations/class.contact_form_7-checkbox.php:51
|
1720 |
msgid "Yes"
|
1721 |
msgstr ""
|
1722 |
|
1723 |
+
#: admin/partials/edit-form.php:797 admin/partials/edit-form.php:813
|
1724 |
+
#: admin/partials/edit-form.php:833 admin/partials/edit-form.php:848
|
1725 |
+
#: admin/partials/edit-form.php:868 admin/partials/edit-form.php:882
|
1726 |
#: admin/partials/menu/options-sections/integration-settings.php:189
|
1727 |
+
#: public/classes/checkbox-integrations/class.contact_form_7-checkbox.php:51
|
1728 |
msgid "No"
|
1729 |
msgstr ""
|
1730 |
|
1731 |
+
#: admin/partials/edit-form.php:799
|
1732 |
#, php-format
|
1733 |
msgid ""
|
1734 |
"Update an existing subscriber's profile information instead of displaying a "
|
1735 |
"%s message."
|
1736 |
msgstr ""
|
1737 |
|
1738 |
+
#: admin/partials/edit-form.php:799 admin/partials/edit-form.php:815
|
1739 |
msgid "\"user already subscribed\""
|
1740 |
msgstr ""
|
1741 |
|
1742 |
+
#: admin/partials/edit-form.php:810
|
1743 |
msgid "Send Update Email"
|
1744 |
msgstr ""
|
1745 |
|
1746 |
+
#: admin/partials/edit-form.php:815
|
1747 |
msgid ""
|
1748 |
"Send an email to the user granting their permission to update their profile "
|
1749 |
"information. Otherwise, an existing subscriber filling out this form, will "
|
1750 |
"have their profile information updated without any further interaction."
|
1751 |
msgstr ""
|
1752 |
|
1753 |
+
#: admin/partials/edit-form.php:821
|
1754 |
msgid "Submission Settings"
|
1755 |
msgstr ""
|
1756 |
|
1757 |
+
#: admin/partials/edit-form.php:830
|
1758 |
msgid "Enable AJAX Submission"
|
1759 |
msgstr ""
|
1760 |
|
1761 |
+
#: admin/partials/edit-form.php:835
|
1762 |
msgid ""
|
1763 |
"AJAX form submissions transmit data without requiring the page to refresh."
|
1764 |
msgstr ""
|
1765 |
|
1766 |
+
#: admin/partials/edit-form.php:845
|
1767 |
msgid "Redirect On Submission"
|
1768 |
msgstr ""
|
1769 |
|
1770 |
+
#: admin/partials/edit-form.php:851
|
1771 |
msgid "When the user signs up would you like to redirect them to another page?"
|
1772 |
msgstr ""
|
1773 |
|
1774 |
+
#: admin/partials/edit-form.php:862
|
1775 |
msgid "Open Redirect URL in a New Window"
|
1776 |
msgstr ""
|
1777 |
|
1778 |
+
#: admin/partials/edit-form.php:870
|
1779 |
msgid "Should the redirect URL open in a new window/tab?"
|
1780 |
msgstr ""
|
1781 |
|
1782 |
+
#: admin/partials/edit-form.php:879
|
1783 |
msgid "Hide Form After Sign Up"
|
1784 |
msgstr ""
|
1785 |
|
1786 |
+
#: admin/partials/edit-form.php:884
|
1787 |
msgid "Should the form be hidden after the user successfully signs up?"
|
1788 |
msgstr ""
|
1789 |
|
1790 |
+
#: admin/partials/edit-form.php:893
|
1791 |
msgid "Existing Interest Groups"
|
1792 |
msgstr ""
|
1793 |
|
1794 |
+
#: admin/partials/edit-form.php:895
|
1795 |
msgid "Replace"
|
1796 |
msgstr ""
|
1797 |
|
1798 |
+
#: admin/partials/edit-form.php:896
|
1799 |
msgid "Update"
|
1800 |
msgstr ""
|
1801 |
|
1802 |
+
#: admin/partials/edit-form.php:899
|
1803 |
msgid ""
|
1804 |
"<strong>Replace</strong>: Replace all interest groups with the new ones "
|
1805 |
"submitted."
|
1806 |
msgstr ""
|
1807 |
|
1808 |
+
#: admin/partials/edit-form.php:902
|
1809 |
msgid ""
|
1810 |
"<strong>Update</strong>: Update <em>only</em> the ones submitted. Leave "
|
1811 |
"existing interest groups as is."
|
1812 |
msgstr ""
|
1813 |
|
1814 |
+
#: admin/partials/edit-form.php:917
|
1815 |
msgid "Are you sure you want to delete this form? This cannot be undone."
|
1816 |
msgstr ""
|
1817 |
|
1818 |
+
#: admin/partials/edit-form.php:917
|
1819 |
msgid "Delete Form"
|
1820 |
msgstr ""
|
1821 |
|
2224 |
msgid "Get your API key here"
|
2225 |
msgstr ""
|
2226 |
|
2227 |
+
#: admin/partials/menu/options-sections/general-settings.php:44
|
2228 |
msgid "Enable nonce validation on this site?"
|
2229 |
msgstr ""
|
2230 |
|
2625 |
msgstr ""
|
2626 |
|
2627 |
#: admin/partials/view-list.php:99
|
2628 |
+
#: public/classes/process/class.process_form_submission_handler.php:709
|
2629 |
msgid "New Subscriber"
|
2630 |
msgstr ""
|
2631 |
|
3075 |
msgid "yyyy-mm-dd"
|
3076 |
msgstr ""
|
3077 |
|
3078 |
+
#: public/classes/checkbox-integrations.php:7
|
3079 |
#: public/classes/checkbox-integrations/class.bbpress_forms-checkbox.php:9
|
3080 |
#: public/classes/checkbox-integrations/class.buddypress_form-checkbox.php:9
|
3081 |
#: public/classes/checkbox-integrations/class.comment_form-checkbox.php:9
|
3082 |
+
#: public/classes/checkbox-integrations/class.contact_form_7-checkbox.php:9
|
3083 |
+
#: public/classes/checkbox-integrations/class.easy_digital_downloads_checkout_form-checkbox.php:9
|
3084 |
+
#: public/classes/checkbox-integrations/class.registration_form-checkbox.php:9
|
3085 |
+
#: public/classes/checkbox-integrations/class.woocommerce_checkout_form-checkbox.php:9
|
3086 |
msgid "Whoops, you shouldn't be accessing this file directly. Abort!"
|
3087 |
msgstr ""
|
3088 |
|
3089 |
+
#: public/classes/checkbox-integrations.php:121
|
3090 |
msgid "Sign me up for your mailing list."
|
3091 |
msgstr ""
|
3092 |
|
3093 |
+
#: public/classes/checkbox-integrations.php:231
|
3094 |
msgid "Checkbox Integration Subscribe User"
|
3095 |
msgstr ""
|
3096 |
|
3097 |
+
#: public/classes/process/class.process_form_submission_handler.php:246
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3098 |
msgid "Error: We were unable to find the form ID."
|
3099 |
msgstr ""
|
3100 |
|
3101 |
+
#: public/classes/process/class.process_form_submission_handler.php:247
|
3102 |
msgid "Error: We were unable to find the form data."
|
3103 |
msgstr ""
|
3104 |
|
3105 |
+
#: public/classes/process/class.process_form_submission_handler.php:248
|
3106 |
msgid "Error: We were unable to find the form fields."
|
3107 |
msgstr ""
|
3108 |
|
3109 |
+
#: public/classes/process/class.process_form_submission_handler.php:249
|
3110 |
msgid "Error: We were unable to find the list handler."
|
3111 |
msgstr ""
|
3112 |
|
3113 |
+
#: public/classes/process/class.process_form_submission_handler.php:250
|
3114 |
msgid "Error: The email is invalid."
|
3115 |
msgstr ""
|
3116 |
|
3117 |
+
#: public/classes/process/class.process_form_submission_handler.php:251
|
3118 |
msgid ""
|
3119 |
"Error: It looks like the honeypot was filled out and the form was not "
|
3120 |
"properly submitted."
|
3121 |
msgstr ""
|
3122 |
|
3123 |
+
#: public/classes/process/class.process_form_submission_handler.php:254
|
3124 |
msgid "You're already subscribed. "
|
3125 |
msgstr ""
|
3126 |
|
3127 |
+
#: public/classes/process/class.process_form_submission_handler.php:255
|
3128 |
msgid ""
|
3129 |
"To update your MailChimp profile, please click to send yourself an update "
|
3130 |
"link"
|
3131 |
msgstr ""
|
3132 |
|
3133 |
+
#: public/classes/process/class.process_form_submission_handler.php:256
|
3134 |
msgid "A required field is missing."
|
3135 |
msgstr ""
|
3136 |
|
3137 |
+
#: public/classes/process/class.process_form_submission_handler.php:257
|
3138 |
msgid "A required interest group is missing."
|
3139 |
msgstr ""
|
3140 |
|
3141 |
+
#: public/classes/process/class.process_form_submission_handler.php:258
|
3142 |
msgid ""
|
3143 |
"Error: Sorry, the nonce security check didn't pass. Please reload the page "
|
3144 |
"and try again. You may want to try clearing your browser cache as a last "
|
3145 |
"attempt."
|
3146 |
msgstr ""
|
3147 |
|
3148 |
+
#: public/classes/process/class.process_form_submission_handler.php:259
|
3149 |
msgid "Please check the reCAPTCHA field."
|
3150 |
msgstr ""
|
3151 |
|
3152 |
+
#: public/classes/process/class.process_form_submission_handler.php:260
|
3153 |
msgid "Please refresh the page and try again."
|
3154 |
msgstr ""
|
3155 |
|
3156 |
+
#: public/classes/process/class.process_form_submission_handler.php:264
|
3157 |
msgid ""
|
3158 |
"Thank you for subscribing. Check your email for the confirmation message."
|
3159 |
msgstr ""
|
3162 |
msgid "Whoops, you forgot to specify a form ID."
|
3163 |
msgstr ""
|
3164 |
|
3165 |
+
#: public/partials/ajax/class.public_ajax.php:78
|
3166 |
msgid "Send Update Profile Email - Get Account Lists"
|
3167 |
msgstr ""
|
3168 |
|
3169 |
+
#: public/partials/ajax/class.public_ajax.php:89
|
3170 |
msgid "Send Update Profile Email - Get Member Info."
|
3171 |
msgstr ""
|
3172 |
|
3173 |
+
#: public/partials/ajax/class.public_ajax.php:124
|
3174 |
#, php-format
|
3175 |
msgid ""
|
3176 |
"Error sending update profile email. <strong>Error(s): %s</strong>. Please "
|
3194 |
"select a different form."
|
3195 |
msgstr ""
|
3196 |
|
3197 |
+
#: public/partials/shortcodes/process_form_shortcode.php:62
|
3198 |
msgid ""
|
3199 |
"Whoops! It looks like you enabled reCAPTCHA but forgot to enter the "
|
3200 |
"reCAPTCHA site key!"
|
3201 |
msgstr ""
|
3202 |
|
3203 |
+
#: public/partials/shortcodes/process_form_shortcode.php:62
|
3204 |
+
#: public/partials/shortcodes/process_form_shortcode.php:65
|
3205 |
msgid "Edit ReCaptcha Settings"
|
3206 |
msgstr ""
|
3207 |
|
3208 |
+
#: public/partials/shortcodes/process_form_shortcode.php:65
|
3209 |
msgid ""
|
3210 |
"Whoops! It looks like you enabled reCAPTCHA but forgot to enter the "
|
3211 |
"reCAPTCHA secret key!"
|
3212 |
msgstr ""
|
3213 |
|
3214 |
+
#: public/partials/shortcodes/process_form_shortcode.php:221
|
3215 |
msgid ""
|
3216 |
"An email field is required for all MailChimp forms. Please add an email "
|
3217 |
"field to this form."
|
3218 |
msgstr ""
|
3219 |
|
3220 |
+
#: public/partials/shortcodes/process_form_shortcode.php:224
|
3221 |
msgid "Whoops, it looks like you forgot to assign fields to this form."
|
3222 |
msgstr ""
|
3223 |
|
3224 |
+
#: public/partials/shortcodes/process_form_shortcode.php:380
|
3225 |
+
#: public/partials/shortcodes/process_form_shortcode.php:1102
|
3226 |
msgid "This field is required."
|
3227 |
msgstr ""
|
3228 |
|
3229 |
+
#: public/partials/shortcodes/process_form_shortcode.php:608
|
3230 |
msgid "Please enter a valid URL to the website."
|
3231 |
msgstr ""
|
3232 |
|
3233 |
+
#: public/partials/shortcodes/process_form_shortcode.php:608
|
3234 |
msgid "Please enter a valid URL to the image."
|
3235 |
msgstr ""
|
3236 |
|
3237 |
+
#: public/partials/shortcodes/process_form_shortcode.php:636
|
3238 |
msgid "International Phone Number"
|
3239 |
msgstr ""
|
3240 |
|
3241 |
+
#: public/partials/shortcodes/process_form_shortcode.php:636
|
3242 |
msgid "US Phone Number (###) ### - ####"
|
3243 |
msgstr ""
|
3244 |
|
3245 |
+
#: public/partials/shortcodes/process_form_shortcode.php:662
|
3246 |
+
#: public/partials/shortcodes/process_form_shortcode.php:817
|
3247 |
msgid "5 digit zip code, numbers only"
|
3248 |
msgstr ""
|
3249 |
|
3250 |
+
#: public/partials/shortcodes/process_form_shortcode.php:955
|
3251 |
+
#: public/partials/shortcodes/process_form_shortcode.php:1161
|
3252 |
msgid "Select..."
|
3253 |
msgstr ""
|
3254 |
|
public/classes/checkbox-integrations.php
CHANGED
@@ -1,318 +1,280 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
|
12 |
-
|
13 |
-
|
|
|
14 |
|
15 |
-
//
|
|
|
|
|
|
|
16 |
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
* @param string $type The integration type to check.
|
23 |
-
* @param string $email The email address to check.
|
24 |
-
*
|
25 |
-
* @return bool Whether the current user is subscribed to a list.
|
26 |
-
*/
|
27 |
-
public function is_user_already_subscribed( $type, $email = '' ) {
|
28 |
-
// Make sure we have an email address to use.
|
29 |
-
if ( empty( $email ) ) {
|
30 |
-
if ( ! is_user_logged_in() ) {
|
31 |
-
return false;
|
32 |
-
}
|
33 |
|
34 |
-
|
35 |
-
|
36 |
-
}
|
37 |
|
38 |
-
|
39 |
-
|
|
|
40 |
return false;
|
41 |
}
|
|
|
|
|
|
|
|
|
42 |
|
43 |
-
|
44 |
-
|
45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
return false;
|
47 |
-
}
|
48 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
return false;
|
50 |
}
|
51 |
-
|
52 |
-
$list_ids = $checkbox_options[ $type ]['associated-list'];
|
53 |
-
$list_ids = is_array( $list_ids ) ? $list_ids : array( $list_ids );
|
54 |
-
|
55 |
-
// Go through each list...
|
56 |
-
foreach ( $list_ids as $list_id ) {
|
57 |
-
|
58 |
-
if ( ! $this->is_user_subscribed( $email, $list_id, $type ) ) {
|
59 |
-
return false;
|
60 |
-
}
|
61 |
-
|
62 |
-
}
|
63 |
-
|
64 |
-
return true;
|
65 |
}
|
66 |
|
67 |
-
|
68 |
-
|
69 |
-
*
|
70 |
-
* @author Jeremy Pry
|
71 |
-
*
|
72 |
-
* @param string $email The email address to check.
|
73 |
-
* @param string $list_id The list ID to check.
|
74 |
-
* @param string $type The integration type
|
75 |
-
*
|
76 |
-
* @return bool Whether the email is subscribed to the list.
|
77 |
-
*/
|
78 |
-
public function is_user_subscribed( $email, $list_id, $type ) {
|
79 |
-
$email_hash = md5( $email );
|
80 |
|
81 |
-
|
82 |
-
|
83 |
-
if ( is_wp_error( $response ) ) {
|
84 |
-
$data = $response->get_error_data();
|
85 |
-
|
86 |
-
// If the error response is a 404, they are not subscribed.
|
87 |
-
if ( isset( $data['status'] ) && 404 == $data['status'] ) {
|
88 |
-
return false;
|
89 |
-
} else {
|
90 |
-
$error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
|
91 |
-
$error_logging->maybe_write_to_log(
|
92 |
-
$response->get_error_code(),
|
93 |
-
__( "Get Member Info", 'yikes-inc-easy-mailchimp-extender' ),
|
94 |
-
"Checkbox Integrations Page"
|
95 |
-
);
|
96 |
-
|
97 |
-
// If there was some other error, let's just assume they're not subscribed
|
98 |
-
return false;
|
99 |
-
}
|
100 |
-
}
|
101 |
-
|
102 |
-
// Look at the status from the API
|
103 |
-
$subscribed = 'subscribed' === $response['status'];
|
104 |
|
105 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
}
|
|
|
107 |
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
if ( $has_list_ids ) {
|
126 |
-
$checked = ( $checkbox_options[$this->type]['precheck'] == 'true' ) ? 'checked' : '';
|
127 |
-
// before checkbox HTML (comment, ...)
|
128 |
-
$before = '<!-- Easy Forms for MailChimp - https://www.yikesplugins.com/ -->';
|
129 |
-
$before .= apply_filters( 'yikes-mailchimp-before-checkbox-html', '' );
|
130 |
-
// checkbox
|
131 |
-
$content = '<p id="yikes-easy-mailchimp-' . $this->type . '-checkbox" class="yikes-easy-mailchimp-' . $this->type . '-checkbox">';
|
132 |
-
$content .= '<label>';
|
133 |
-
$content .= '<input type="checkbox" name="yikes_mailchimp_checkbox_' . $this->type . '" value="1" '. $checked . ' /> ';
|
134 |
-
$content .= ( isset( $checkbox_options[$this->type]['label'] ) && trim( $checkbox_options[$this->type]['label'] ) != '' ) ? trim( $checkbox_options[$this->type]['label'] ) : __( 'Sign me up for your mailing list.', 'yikes-inc-easy-mailchimp-extender' );
|
135 |
-
$content .= '</label>';
|
136 |
-
$content .= '</p>';
|
137 |
-
// after checkbox HTML (..., honeypot, closing comment)
|
138 |
-
$after = apply_filters( 'yikes-mailchimp-after-checkbox-html', '' );
|
139 |
-
$after .= '<!-- Easy Forms for MailChimp -->';
|
140 |
-
return $before . $content . $after;
|
141 |
-
}
|
142 |
}
|
143 |
|
144 |
-
|
145 |
-
* Hook to submit the data to MailChimp when a new integration type is submitted.
|
146 |
-
*
|
147 |
-
* @since 6.0.0
|
148 |
-
*
|
149 |
-
* @param string $email The email address.
|
150 |
-
* @param string $type The integration type.
|
151 |
-
* @param array $merge_vars The array of form data to send.
|
152 |
-
*/
|
153 |
-
public function subscribe_user_integration( $email, $type, $merge_vars ) {
|
154 |
-
// get checkbox data
|
155 |
-
$options = get_option( 'optin-checkbox-init', '' );
|
156 |
-
|
157 |
-
// Make sure we have a list ID.
|
158 |
-
if ( ! isset( $options[ $type ] ) || ! isset( $options[ $type ]['associated-list'] ) ) {
|
159 |
-
// @todo: Throw some kind of error?
|
160 |
-
return;
|
161 |
-
}
|
162 |
-
|
163 |
-
// Check for an IP address.
|
164 |
-
$user_ip = sanitize_text_field( $_SERVER['REMOTE_ADDR'] );
|
165 |
-
if ( isset( $merge_vars['OPTIN_IP'] ) ) {
|
166 |
-
$user_ip = sanitize_text_field( $merge_vars['OPTIN_IP'] );
|
167 |
-
}
|
168 |
-
|
169 |
-
// Build our data
|
170 |
-
$list_ids = $options[ $type ]['associated-list'];
|
171 |
-
$list_ids = is_array( $options[ $type ]['associated-list'] ) ? $options[ $type ]['associated-list'] : array( $options[ $type ]['associated-list'] );
|
172 |
-
|
173 |
-
// $interests =
|
174 |
-
|
175 |
-
$id = md5( $email );
|
176 |
-
$data = array(
|
177 |
-
'email_address' => sanitize_email( $email ),
|
178 |
-
'merge_fields' => apply_filters( 'yikes-mailchimp-checkbox-integration-merge-variables', $merge_vars, $type ),
|
179 |
-
'status_if_new' => 'pending',
|
180 |
-
'status' => 'pending',
|
181 |
-
'timestamp_signup' => (string) current_time( 'timestamp', true ),
|
182 |
-
'ip_signup' => $user_ip,
|
183 |
-
);
|
184 |
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
// Only re-format and add interest groups if not empty
|
191 |
-
if ( ! empty( $interests ) ) {
|
192 |
-
|
193 |
-
$groups = array();
|
194 |
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
201 |
}
|
202 |
}
|
203 |
-
|
204 |
-
$data['interests'] = $groups;
|
205 |
}
|
206 |
|
207 |
-
|
208 |
-
* 'yikes-mailchimp-checkbox-integration-body'
|
209 |
-
*
|
210 |
-
* Filter the request body for a MailChimp subscription via the checkbox integrations
|
211 |
-
*
|
212 |
-
* @param array | $data | The request body
|
213 |
-
* @param string | $type | The integration type, e.g. 'contact_form_7'
|
214 |
-
* @param string | $list_id | The list ID
|
215 |
-
*/
|
216 |
-
$data = apply_filters( 'yikes-mailchimp-checkbox-integration-body', $data, $type, $list_id );
|
217 |
-
|
218 |
-
/**
|
219 |
-
* 'yikes-mailchimp-checkbox-integration-list-id'
|
220 |
-
*
|
221 |
-
* Filter the list ID for a MailChimp subscription via the checkbox integrations
|
222 |
-
*
|
223 |
-
* @param string | $list_id | The list ID
|
224 |
-
* @param array | $data | The request body
|
225 |
-
* @param string | $type | The integration type, e.g. 'contact_form_7'
|
226 |
-
*/
|
227 |
-
$list_id = apply_filters( 'yikes-mailchimp-checkbox-integration-list-id', $list_id, $data, $type );
|
228 |
-
|
229 |
-
|
230 |
-
// Subscribe the user to the list via the API.
|
231 |
-
$response = yikes_get_mc_api_manager()->get_list_handler()->member_subscribe( $list_id, $id, $data );
|
232 |
-
if ( is_wp_error( $response ) ) {
|
233 |
-
$error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
|
234 |
-
$error_logging->maybe_write_to_log(
|
235 |
-
$response->get_error_code(),
|
236 |
-
__( "Checkbox Integration Subscribe User", 'yikes-inc-easy-mailchimp-extender' ),
|
237 |
-
"Checkbox Integrations"
|
238 |
-
);
|
239 |
-
}
|
240 |
}
|
241 |
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
$merge_vars = array(
|
253 |
-
'NAME' => $user->user_login,
|
254 |
-
);
|
255 |
-
|
256 |
-
if ( ! empty( $user->first_name ) ) {
|
257 |
-
$merge_vars['NAME'] = $user->first_name;
|
258 |
-
$merge_vars['FNAME'] = $user->first_name;
|
259 |
-
}
|
260 |
-
if ( ! empty( $user->last_name ) ) {
|
261 |
-
$merge_vars['LNAME'] = $user->last_name;
|
262 |
-
}
|
263 |
-
if ( ! empty( $user->first_name ) && ! empty( $user->last_name ) ) {
|
264 |
-
$merge_vars['NAME'] = sprintf( '%s %s', $user->first_name, $user->last_name );
|
265 |
-
}
|
266 |
|
267 |
/**
|
268 |
-
*
|
269 |
-
*
|
270 |
-
*
|
271 |
-
* @param WP_User $user
|
272 |
*
|
273 |
-
*
|
|
|
|
|
274 |
*/
|
275 |
-
$
|
276 |
|
277 |
-
|
278 |
-
|
|
|
|
|
|
|
|
|
|
|
279 |
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
|
|
287 |
}
|
|
|
288 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
289 |
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
if( isset( $email_error ) && $email_error != '' ) {
|
299 |
-
// Use the magic __get method to retrieve the errors array:
|
300 |
-
$tmp = $errors->errors;
|
301 |
-
$old = 'Registration complete. Please check your e-mail.';
|
302 |
-
foreach( $tmp['registered'] as $index => $msg ) {
|
303 |
-
if( $msg === $old ) {
|
304 |
-
$tmp['registered'][$index] = $old . ' <p class="message"><strong>' . __( 'Note' , 'yikes-inc-easy-mailchimp-extender' ) . '</strong>: ' . $email_error . '</p>';
|
305 |
-
}
|
306 |
-
}
|
307 |
-
// Use the magic __set method to override the errors property:
|
308 |
-
$errors->errors = $tmp;
|
309 |
-
// Cleanup:
|
310 |
-
unset( $tmp );
|
311 |
-
delete_option( 'yikes_register_subscription_error' );
|
312 |
-
}
|
313 |
-
}
|
314 |
-
return $errors;
|
315 |
}
|
316 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
317 |
}
|
318 |
-
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Takes care of all the integration checkboxes.
|
4 |
+
*/
|
5 |
+
|
6 |
+
// Prevent direct access to the file.
|
7 |
+
defined( 'ABSPATH' ) || die( esc_html_e( "Whoops, you shouldn't be accessing this file directly. Abort!", 'yikes-inc-easy-mailchimp-extender' ) );
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Main Checkbox Integration class.
|
11 |
+
*/
|
12 |
+
class Yikes_Easy_MC_Checkbox_Integration_Class {
|
13 |
+
|
14 |
+
/**
|
15 |
+
* The integration type.
|
16 |
+
*
|
17 |
+
* @var string $type
|
18 |
+
*/
|
19 |
+
protected $type = '';
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Determine whether the current user is subscribed to all of the lists.
|
23 |
+
*
|
24 |
+
* @author Jeremy Pry
|
25 |
+
*
|
26 |
+
* @param string $type The integration type to check.
|
27 |
+
* @param string $email The email address to check.
|
28 |
+
*
|
29 |
+
* @return bool Whether the current user is subscribed to a list.
|
30 |
+
*/
|
31 |
+
public function is_user_already_subscribed( $type, $email = '' ) {
|
32 |
+
// Make sure we have an email address to use.
|
33 |
+
if ( empty( $email ) ) {
|
34 |
+
if ( ! is_user_logged_in() ) {
|
35 |
+
return false;
|
36 |
+
}
|
37 |
|
38 |
+
$current_user = wp_get_current_user();
|
39 |
+
$email = $current_user->user_email;
|
40 |
+
}
|
41 |
|
42 |
+
// Ensure we have a valid email.
|
43 |
+
if ( ! is_email( $email ) ) {
|
44 |
+
return false;
|
45 |
+
}
|
46 |
|
47 |
+
// Convert the integration type to a list ID.
|
48 |
+
$checkbox_options = get_option( 'optin-checkbox-init', '' );
|
49 |
+
if ( empty( $checkbox_options ) || ! isset( $checkbox_options[ $type ] ) || ! isset( $checkbox_options[ $type ]['associated-list'] ) ) {
|
50 |
+
return false;
|
51 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
|
53 |
+
$list_ids = $checkbox_options[ $type ]['associated-list'];
|
54 |
+
$list_ids = is_array( $list_ids ) ? $list_ids : array( $list_ids );
|
|
|
55 |
|
56 |
+
// Go through each list...
|
57 |
+
foreach ( $list_ids as $list_id ) {
|
58 |
+
if ( ! $this->is_user_subscribed( $email, $list_id, $type ) ) {
|
59 |
return false;
|
60 |
}
|
61 |
+
}
|
62 |
+
|
63 |
+
return true;
|
64 |
+
}
|
65 |
|
66 |
+
/**
|
67 |
+
* Determine whether a given email is subscribed to a given list.
|
68 |
+
*
|
69 |
+
* @author Jeremy Pry
|
70 |
+
*
|
71 |
+
* @param string $email The email address to check.
|
72 |
+
* @param string $list_id The list ID to check.
|
73 |
+
* @param string $type The integration type.
|
74 |
+
*
|
75 |
+
* @return bool Whether the email is subscribed to the list.
|
76 |
+
*/
|
77 |
+
public function is_user_subscribed( $email, $list_id, $type ) {
|
78 |
+
$email = sanitize_email( $email );
|
79 |
+
$email_hash = md5( $email );
|
80 |
+
|
81 |
+
// Check the API to see the status.
|
82 |
+
$response = yikes_get_mc_api_manager()->get_list_handler()->get_member( $list_id, $email_hash, false );
|
83 |
+
if ( is_wp_error( $response ) ) {
|
84 |
+
$data = $response->get_error_data();
|
85 |
+
|
86 |
+
// If the error response is a 404, they are not subscribed.
|
87 |
+
if ( isset( $data['status'] ) && 404 === (int) $data['status'] ) {
|
88 |
return false;
|
89 |
+
} else {
|
90 |
+
$error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
|
91 |
+
$error_logging->maybe_write_to_log(
|
92 |
+
$response->get_error_code(),
|
93 |
+
__( 'Get Member Info', 'yikes-inc-easy-mailchimp-extender' ),
|
94 |
+
'Checkbox Integrations Page'
|
95 |
+
);
|
96 |
+
|
97 |
+
// If there was some other error, let's just assume they're not subscribed.
|
98 |
return false;
|
99 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
}
|
101 |
|
102 |
+
// Look at the status from the API.
|
103 |
+
$subscribed = 'subscribed' === $response['status'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
|
105 |
+
return apply_filters( 'yikes-mailchimp-integration-is-user-subscribed', $subscribed, $type );
|
106 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
|
108 |
+
/**
|
109 |
+
* Render the checkbox.
|
110 |
+
*
|
111 |
+
* @return string The HTML for the checkbox.
|
112 |
+
*/
|
113 |
+
public function yikes_get_checkbox() {
|
114 |
+
|
115 |
+
// Get our options.
|
116 |
+
$checkbox_options = get_option( 'optin-checkbox-init', array() );
|
117 |
+
$has_list_ids = isset( $checkbox_options[ $this->type ]['associated-list'] ) && '-' !== $checkbox_options[ $this->type ]['associated-list'];
|
118 |
+
$has_list_ids = $has_list_ids && ! in_array( '-', $checkbox_options[ $this->type ]['associated-list'], true );
|
119 |
+
|
120 |
+
if ( $has_list_ids ) {
|
121 |
+
$label = isset( $checkbox_options[ $this->type ]['label'] ) && ! empty( trim( $checkbox_options[ $this->type ]['label'] ) ) ? trim( $checkbox_options[ $this->type ]['label'] ) : __( 'Sign me up for your mailing list.', 'yikes-inc-easy-mailchimp-extender' );
|
122 |
+
$checked = 'true' === $checkbox_options[ $this->type ]['precheck'] ? 'checked="checked"' : '';
|
123 |
+
$before = apply_filters( 'yikes-mailchimp-before-checkbox-html', '' );
|
124 |
+
$content = '<p id="yikes-easy-mailchimp-' . esc_attr( $this->type ) . '-checkbox" class="yikes-easy-mailchimp-' . esc_attr( $this->type ) . '-checkbox">';
|
125 |
+
$content .= '<label>';
|
126 |
+
$content .= '<input type="checkbox" name="yikes_mailchimp_checkbox_' . esc_attr( $this->type ) . '" value="1" ' . $checked . '/>';
|
127 |
+
$content .= apply_filters( 'yikes_mailchimp_checkbox_integration_checkbox_label', $label, $this->type, $checkbox_options );
|
128 |
+
$content .= '</label>';
|
129 |
+
$content .= '</p>';
|
130 |
+
$content = apply_filters( 'yikes_mailchimp_checkbox_integration_checkbox_html', $content, $this->type, $checkbox_options );
|
131 |
+
$after = apply_filters( 'yikes-mailchimp-after-checkbox-html', '' );
|
132 |
+
$after .= '<!-- Easy Forms for MailChimp -->';
|
133 |
+
$checkbox = $before . $content . $after;
|
134 |
+
return apply_filters( 'yikes_mailchimp_checkbox_integration_html', $checkbox, $this->type, $checkbox_options );
|
135 |
}
|
136 |
+
}
|
137 |
|
138 |
+
/**
|
139 |
+
* Hook to submit the data to MailChimp when a new integration type is submitted.
|
140 |
+
*
|
141 |
+
* @since 6.0.0
|
142 |
+
*
|
143 |
+
* @param string $email The email address.
|
144 |
+
* @param string $type The integration type.
|
145 |
+
* @param array $merge_vars The array of form data to send.
|
146 |
+
*/
|
147 |
+
public function subscribe_user_integration( $email, $type, $merge_vars ) {
|
148 |
+
$options = get_option( 'optin-checkbox-init', '' );
|
149 |
+
|
150 |
+
// Make sure we have a list ID.
|
151 |
+
if ( ! isset( $options[ $type ] ) || ! isset( $options[ $type ]['associated-list'] ) ) {
|
152 |
+
// @todo: Throw some kind of error?
|
153 |
+
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
154 |
}
|
155 |
|
156 |
+
$email = sanitize_email( $email );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
|
158 |
+
// Check for an IP address.
|
159 |
+
$user_ip = sanitize_text_field( $_SERVER['REMOTE_ADDR'] );
|
160 |
+
if ( isset( $merge_vars['OPTIN_IP'] ) ) {
|
161 |
+
$user_ip = sanitize_text_field( $merge_vars['OPTIN_IP'] );
|
162 |
+
}
|
|
|
|
|
|
|
|
|
163 |
|
164 |
+
// Build our request data.
|
165 |
+
$list_ids = $options[ $type ]['associated-list'];
|
166 |
+
$list_ids = is_array( $options[ $type ]['associated-list'] ) ? $options[ $type ]['associated-list'] : array( $options[ $type ]['associated-list'] );
|
167 |
+
$id = md5( $email );
|
168 |
+
$data = array(
|
169 |
+
'email_address' => $email,
|
170 |
+
'merge_fields' => apply_filters( 'yikes-mailchimp-checkbox-integration-merge-variables', $merge_vars, $type ),
|
171 |
+
'status_if_new' => 'pending',
|
172 |
+
'status' => 'pending',
|
173 |
+
'ip_signup' => $user_ip,
|
174 |
+
);
|
175 |
+
|
176 |
+
foreach ( $list_ids as $list_id ) {
|
177 |
+
|
178 |
+
$interests = isset( $options[ $type ]['interest-groups'] ) ? $options[ $type ]['interest-groups'] : array();
|
179 |
+
$interests = isset( $interests[ $list_id ] ) ? $interests[ $list_id ] : $interests;
|
180 |
+
|
181 |
+
// Only re-format and add interest groups if not empty.
|
182 |
+
if ( ! empty( $interests ) ) {
|
183 |
+
$groups = array();
|
184 |
+
|
185 |
+
// Need to reformat interest groups array as $interest_group_ID => true.
|
186 |
+
foreach ( $interests as $interest ) {
|
187 |
+
if ( is_array( $interest ) ) {
|
188 |
+
foreach ( $interest as $group_id ) {
|
189 |
+
$groups[ $group_id ] = true;
|
190 |
}
|
191 |
}
|
|
|
|
|
192 |
}
|
193 |
|
194 |
+
$data['interests'] = $groups;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
195 |
}
|
196 |
|
197 |
+
/**
|
198 |
+
* 'yikes-mailchimp-checkbox-integration-body'
|
199 |
+
*
|
200 |
+
* Filter the request body for a MailChimp subscription via the checkbox integrations
|
201 |
+
*
|
202 |
+
* @param array | $data | The request body
|
203 |
+
* @param string | $type | The integration type, e.g. 'contact_form_7'
|
204 |
+
* @param string | $list_id | The list ID
|
205 |
+
*/
|
206 |
+
$data = apply_filters( 'yikes-mailchimp-checkbox-integration-body', $data, $type, $list_id );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
|
208 |
/**
|
209 |
+
* 'yikes-mailchimp-checkbox-integration-list-id'
|
210 |
+
*
|
211 |
+
* Filter the list ID for a MailChimp subscription via the checkbox integrations
|
|
|
212 |
*
|
213 |
+
* @param string $list_id The list ID
|
214 |
+
* @param array $data The request body
|
215 |
+
* @param string $type The integration type, e.g. 'contact_form_7'
|
216 |
*/
|
217 |
+
$list_id = apply_filters( 'yikes-mailchimp-checkbox-integration-list-id', $list_id, $data, $type );
|
218 |
|
219 |
+
// Don't send an empty merge fields array.
|
220 |
+
if ( empty( $data['merge_fields'] ) ) {
|
221 |
+
unset( $data['merge_fields'] );
|
222 |
+
}
|
223 |
+
|
224 |
+
// Subscribe the user to the list via the API.
|
225 |
+
$response = yikes_get_mc_api_manager()->get_list_handler()->member_subscribe( $list_id, $id, $data );
|
226 |
|
227 |
+
if ( is_wp_error( $response ) ) {
|
228 |
+
$error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
|
229 |
+
$error_logging->maybe_write_to_log(
|
230 |
+
$response->get_error_code(),
|
231 |
+
__( 'Checkbox Integration Subscribe User', 'yikes-inc-easy-mailchimp-extender' ),
|
232 |
+
'Checkbox Integrations'
|
233 |
+
);
|
234 |
+
}
|
235 |
}
|
236 |
+
}
|
237 |
|
238 |
+
/**
|
239 |
+
* Build merge varaibles array
|
240 |
+
*
|
241 |
+
* This is currently used in both the BuddyPress and WP Registration integrations.
|
242 |
+
*
|
243 |
+
* @param WP_User $user A WP User.
|
244 |
+
*/
|
245 |
+
public function user_merge_vars( WP_User $user ) {
|
246 |
|
247 |
+
// Setup our array.
|
248 |
+
$merge_vars = array();
|
249 |
+
|
250 |
+
if ( ! empty( $user->first_name ) ) {
|
251 |
+
$merge_vars['FNAME'] = $user->first_name;
|
252 |
+
}
|
253 |
+
if ( ! empty( $user->last_name ) ) {
|
254 |
+
$merge_vars['LNAME'] = $user->last_name;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
255 |
}
|
256 |
|
257 |
+
/**
|
258 |
+
* Filter the user variables passed to MailChimp.
|
259 |
+
*
|
260 |
+
* @param array $merge_vars Merge variables to pass to MailChimp.
|
261 |
+
* @param WP_User $user The WordPress user.
|
262 |
+
*
|
263 |
+
* @return array $merge_vars Merge variables to pass to MailChimp.
|
264 |
+
*/
|
265 |
+
$merge_vars = apply_filters( 'yikes-mailchimp-user-merge-vars', $merge_vars, $user );
|
266 |
+
|
267 |
+
return $merge_vars;
|
268 |
+
}
|
269 |
+
|
270 |
+
/**
|
271 |
+
* Confirm the checkbox was checked.
|
272 |
+
*
|
273 |
+
* @param string $type The integration type.
|
274 |
+
*
|
275 |
+
* @return bool True if the checkbox was checked.
|
276 |
+
*/
|
277 |
+
public function was_checkbox_checked( $type ) {
|
278 |
+
return isset( $_POST[ 'yikes_mailchimp_checkbox_' . $type ] ) && '1' === filter_var( $_POST[ 'yikes_mailchimp_checkbox_' . $type ], FILTER_SANITIZE_STRING );
|
279 |
}
|
280 |
+
}
|
public/classes/checkbox-integrations/class.bbpress_forms-checkbox.php
CHANGED
@@ -1,63 +1,94 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
add_action( 'bbp_theme_after_topic_form_subscriptions', array( $this, 'output_checkbox' ), 10 );
|
23 |
-
add_action( 'bbp_theme_after_reply_form_subscription', array( $this, 'output_checkbox' ), 10 );
|
24 |
-
add_action( 'bbp_theme_anonymous_form_extras_bottom', array( $this, 'output_checkbox' ), 10 );
|
25 |
-
add_action( 'bbp_new_topic', array( $this, 'subscribe_from_bbpress_new_topic' ), 10, 4 );
|
26 |
-
add_action( 'bbp_new_reply', array( $this, 'subscribe_from_bbpress_new_reply' ), 10, 5 );
|
27 |
-
}
|
28 |
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
}
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
}
|
53 |
|
54 |
-
|
55 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
}
|
57 |
|
58 |
-
|
59 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
}
|
61 |
-
|
|
|
62 |
}
|
63 |
-
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Handle bbPress Integration: add a checkbox for subscribers when signing up via bbPress.
|
4 |
+
*
|
5 |
+
* @since 6.0.0
|
6 |
+
*/
|
7 |
+
|
8 |
+
// Prevent direct access to the file.
|
9 |
+
defined( 'ABSPATH' ) || die( esc_html_e( "Whoops, you shouldn't be accessing this file directly. Abort!", 'yikes-inc-easy-mailchimp-extender' ) );
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Handle bbPress Integration.
|
13 |
+
*/
|
14 |
+
class Yikes_Easy_MC_bbPress_Checkbox_Class extends Yikes_Easy_MC_Checkbox_Integration_Class {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* The integration type.
|
18 |
+
*
|
19 |
+
* @var string $type
|
20 |
+
*/
|
21 |
+
protected $type = 'bbpress_forms';
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
|
23 |
+
/**
|
24 |
+
* Constructor.
|
25 |
+
*/
|
26 |
+
public function __construct() {
|
27 |
+
add_action( 'bbp_theme_after_topic_form_subscriptions', array( $this, 'output_checkbox' ), 10 );
|
28 |
+
add_action( 'bbp_theme_after_reply_form_subscription', array( $this, 'output_checkbox' ), 10 );
|
29 |
+
add_action( 'bbp_theme_anonymous_form_extras_bottom', array( $this, 'output_checkbox' ), 10 );
|
30 |
+
add_action( 'bbp_new_topic', array( $this, 'subscribe_from_bbpress_new_topic' ), 10, 4 );
|
31 |
+
add_action( 'bbp_new_reply', array( $this, 'subscribe_from_bbpress_new_reply' ), 10, 5 );
|
32 |
+
}
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Outputs a checkbox if user is not already subscribed.
|
36 |
+
*/
|
37 |
+
public function output_checkbox() {
|
38 |
+
if ( $this->is_user_already_subscribed( $this->type ) ) {
|
39 |
+
return;
|
40 |
}
|
41 |
+
echo $this->yikes_get_checkbox();
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Subscribe the user. At this point, they chose.
|
46 |
+
*
|
47 |
+
* @param int $user_id The WP User ID.
|
48 |
+
*/
|
49 |
+
public function subscribe_from_bbpress( $user_id ) {
|
50 |
+
$user = get_userdata( $user_id );
|
51 |
+
|
52 |
+
if ( false === $user ) {
|
53 |
+
return false;
|
54 |
}
|
55 |
|
56 |
+
$email = $user->user_email;
|
57 |
+
$merge_vars = $this->user_merge_vars( $user );
|
58 |
+
$this->subscribe_user_integration( $email, $this->type, $merge_vars );
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Subscribe the user if they so chose.
|
63 |
+
*
|
64 |
+
* @param int $topic_id The topic's ID.
|
65 |
+
* @param int $forum_id The forum's ID.
|
66 |
+
* @param mixed $anonymous_data Honestly I don't know.
|
67 |
+
* @param int $topic_author_id The topic author's ID (WP User ID).
|
68 |
+
*/
|
69 |
+
public function subscribe_from_bbpress_new_topic( $topic_id, $forum_id, $anonymous_data, $topic_author_id ) {
|
70 |
+
if ( false == $this->was_checkbox_checked( $this->type ) ) {
|
71 |
+
return;
|
72 |
}
|
73 |
|
74 |
+
$this->subscribe_from_bbpress( $topic_author_id );
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* Subscribe the user if they so chose.
|
79 |
+
*
|
80 |
+
* @param int $reply_id The reply's ID.
|
81 |
+
* @param int $topic_id The topic's ID.
|
82 |
+
* @param int $forum_id The forum's ID.
|
83 |
+
* @param mixed $anonymous_data Honestly I don't know.
|
84 |
+
* @param int $reply_author_id The topic author's ID (WP User ID).
|
85 |
+
*/
|
86 |
+
public function subscribe_from_bbpress_new_reply( $reply_id, $topic_id, $forum_id, $anonymous_data, $reply_author_id ) {
|
87 |
+
if ( false == $this->was_checkbox_checked( $this->type ) ) {
|
88 |
+
return;
|
89 |
}
|
90 |
+
|
91 |
+
$this->subscribe_from_bbpress( $reply_author_id );
|
92 |
}
|
93 |
+
}
|
94 |
+
$yikes_easy_mc_bbpress_checkbox_class = new Yikes_Easy_MC_bbPress_Checkbox_Class();
|
public/classes/checkbox-integrations/class.buddypress_form-checkbox.php
CHANGED
@@ -1,62 +1,65 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
}
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
<?php
|
34 |
}
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
* @param string $user_login
|
41 |
-
* @param string $user_password
|
42 |
-
* @param string $user_email
|
43 |
-
* @param array $usermeta
|
44 |
-
*/
|
45 |
-
public function subscribe_from_buddypress_form( $user_id, $user_login, $user_password, $user_email ) {
|
46 |
-
if ( $this->was_checkbox_checked( $this->type ) === false ) {
|
47 |
-
return false;
|
48 |
-
}
|
49 |
-
$user = get_userdata( $user_id );
|
50 |
-
// was a user found with the given ID?
|
51 |
-
if ( ! $user ) {
|
52 |
-
return false;
|
53 |
-
}
|
54 |
-
// gather emailadress and name from user who BuddyPress registered
|
55 |
-
$email = $user->user_email;
|
56 |
-
$merge_vars = $this->user_merge_vars( $user );
|
57 |
-
return $this->subscribe_user_integration( $email, $this->type, $merge_vars );
|
58 |
}
|
59 |
-
|
60 |
-
|
|
|
|
|
61 |
}
|
62 |
-
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Handle BuddyPress Integration: add a checkbox for subscribers when signing up via BuddyPress.
|
4 |
+
*
|
5 |
+
* @since 6.0.0
|
6 |
+
*/
|
7 |
+
|
8 |
+
// Prevent direct access to the file.
|
9 |
+
defined( 'ABSPATH' ) || die( esc_html_e( "Whoops, you shouldn't be accessing this file directly. Abort!", 'yikes-inc-easy-mailchimp-extender' ) );
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Handle BuddyPress Integration.
|
13 |
+
*/
|
14 |
+
class Yikes_Easy_MC_BuddyPress_Checkbox_Class extends Yikes_Easy_MC_Checkbox_Integration_Class {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* The integration type.
|
18 |
+
*
|
19 |
+
* @var string $type
|
20 |
+
*/
|
21 |
+
protected $type = 'buddypress_form';
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Constructor.
|
25 |
+
*/
|
26 |
+
public function __construct() {
|
27 |
+
add_action( 'bp_before_registration_submit_buttons', array( $this, 'output_checkbox' ), 20 );
|
28 |
+
add_action( 'bp_core_signup_user', array( $this, 'subscribe_from_buddypress_form' ), 10, 4 );
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Outputs a checkbox if user is not already subscribed.
|
33 |
+
*/
|
34 |
+
public function output_checkbox() {
|
35 |
+
if ( $this->is_user_already_subscribed( $this->type ) ) {
|
36 |
+
return;
|
37 |
}
|
38 |
+
echo $this->yikes_get_checkbox();
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Subscribe the user if they so chose.
|
43 |
+
*
|
44 |
+
* @param int $user_id The user's ID.
|
45 |
+
* @param string $user_login The user's login.
|
46 |
+
* @param string $user_password The user's password.
|
47 |
+
* @param string $user_email The user's email.
|
48 |
+
*/
|
49 |
+
public function subscribe_from_buddypress_form( $user_id, $user_login, $user_password, $user_email ) {
|
50 |
+
if ( false === $this->was_checkbox_checked( $this->type ) ) {
|
51 |
+
return;
|
|
|
52 |
}
|
53 |
+
|
54 |
+
$user = get_userdata( $user_id );
|
55 |
+
|
56 |
+
if ( false === $user ) {
|
57 |
+
return false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
}
|
59 |
+
|
60 |
+
$email = $user->user_email;
|
61 |
+
$merge_vars = $this->user_merge_vars( $user );
|
62 |
+
$this->subscribe_user_integration( $email, $this->type, $merge_vars );
|
63 |
}
|
64 |
+
}
|
65 |
+
$yikes_easy_mc_buddypress_checkbox_class = new Yikes_Easy_MC_BuddyPress_Checkbox_Class();
|
public/classes/checkbox-integrations/class.comment_form-checkbox.php
CHANGED
@@ -1,89 +1,86 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
// Prevent direct access to the file
|
9 |
-
defined('ABSPATH') or die( __( "Whoops, you shouldn't be accessing this file directly. Abort!" , 'yikes-inc-easy-mailchimp-extender' ) );
|
10 |
-
|
11 |
-
class Yikes_Easy_MC_Comment_Checkbox_Class extends Yikes_Easy_MC_Checkbox_Integration_Class {
|
12 |
-
|
13 |
-
// declare our integration type
|
14 |
-
protected $type = 'comment_form';
|
15 |
-
|
16 |
-
public function __construct() {
|
17 |
-
// hooks for outputting the checkbox
|
18 |
-
add_action( 'thesis_hook_after_comment_box', array( $this, 'output_checkbox' ), 10 );
|
19 |
-
|
20 |
-
// hooks for checking if we should subscribe the commenter
|
21 |
-
add_action( 'comment_post', array( $this, 'subscribe_from_comment' ), 40, 2 );
|
22 |
|
23 |
-
|
24 |
-
|
25 |
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
*/
|
38 |
-
$checkbox_placement = apply_filters( 'yikes-mailchimp-wp-comment-integration-placement', 'comment_form_field_comment' );
|
39 |
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
|
|
51 |
|
52 |
-
do_action( 'yikes-mailchimp-before-checkbox', $this->type );
|
53 |
-
echo $comment_field . $this->yikes_get_checkbox();
|
54 |
-
do_action( 'yikes-mailchimp-after-checkbox', $this->type );
|
55 |
-
}
|
56 |
-
|
57 |
/**
|
58 |
-
*
|
59 |
-
* a new comment is submitted
|
60 |
*
|
61 |
-
*
|
62 |
-
|
63 |
-
|
64 |
|
65 |
-
|
66 |
-
|
67 |
-
return false;
|
68 |
-
}
|
69 |
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
|
|
|
|
|
|
|
|
|
|
74 |
|
75 |
-
|
76 |
-
|
77 |
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
|
84 |
-
|
85 |
-
|
|
|
86 |
}
|
87 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
}
|
89 |
-
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Handle Comment Integration: add a checkbox to the comments area.
|
4 |
+
*
|
5 |
+
* @since 6.0.0
|
6 |
+
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
8 |
+
// Prevent direct access to the file.
|
9 |
+
defined( 'ABSPATH' ) || die( esc_html_e( "Whoops, you shouldn't be accessing this file directly. Abort!", 'yikes-inc-easy-mailchimp-extender' ) );
|
10 |
|
11 |
+
/**
|
12 |
+
* Handle Comment Integration.
|
13 |
+
*/
|
14 |
+
class Yikes_Easy_MC_Comment_Checkbox_Class extends Yikes_Easy_MC_Checkbox_Integration_Class {
|
15 |
|
16 |
+
/**
|
17 |
+
* The integration type.
|
18 |
+
*
|
19 |
+
* @var string $type
|
20 |
+
*/
|
21 |
+
protected $type = 'comment_form';
|
|
|
|
|
22 |
|
23 |
+
/**
|
24 |
+
* Constructor.
|
25 |
+
*/
|
26 |
+
public function __construct() {
|
27 |
+
add_action( 'comment_post', array( $this, 'subscribe_from_comment' ), 40, 3 );
|
28 |
+
add_action( 'init', array( $this, 'init' ) );
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Allows us to filter the filter that we're adding.
|
33 |
+
*/
|
34 |
+
public function init() {
|
35 |
|
|
|
|
|
|
|
|
|
|
|
36 |
/**
|
37 |
+
* Decide the placement of the subscription checkbox. Default ('comment_form_field_comment') is after the "Comment" box.
|
|
|
38 |
*
|
39 |
+
* @return string The name of a WP comment field's filter
|
40 |
+
*/
|
41 |
+
$checkbox_placement = apply_filters( 'yikes-mailchimp-wp-comment-integration-placement', 'comment_form_field_comment' );
|
42 |
|
43 |
+
add_filter( $checkbox_placement, array( $this, 'output_checkbox' ), 10, 1 );
|
44 |
+
}
|
|
|
|
|
45 |
|
46 |
+
/**
|
47 |
+
* Outputs a checkbox, if user is not already subscribed
|
48 |
+
*
|
49 |
+
* @param string $comment_field The content of the comment textarea field.
|
50 |
+
*/
|
51 |
+
public function output_checkbox( $comment_field ) {
|
52 |
+
if ( $this->is_user_already_subscribed( $this->type ) ) {
|
53 |
+
return $comment_field;
|
54 |
+
}
|
55 |
|
56 |
+
return $comment_field . $this->yikes_get_checkbox();
|
57 |
+
}
|
58 |
|
59 |
+
/**
|
60 |
+
* Subscribe the user if they so chose.
|
61 |
+
*
|
62 |
+
* @param int $comment_id The comment's ID.
|
63 |
+
* @param string $comment_approved The comment's status.
|
64 |
+
* @param array $comment_data The comment data.
|
65 |
+
*/
|
66 |
+
public function subscribe_from_comment( $comment_id, $comment_approved, $comment_data ) {
|
67 |
+
if ( false === $this->was_checkbox_checked( $this->type ) ) {
|
68 |
+
return false;
|
69 |
+
}
|
70 |
|
71 |
+
// Is this a spam comment?
|
72 |
+
if ( 'spam' === $comment_approved ) {
|
73 |
+
return false;
|
74 |
}
|
75 |
+
|
76 |
+
// Create merge variables based on comment data.
|
77 |
+
$merge_vars = array(
|
78 |
+
'FNAME' => $comment_data['comment_author'],
|
79 |
+
'OPTIN_IP' => $comment_data['comment_author_IP'],
|
80 |
+
);
|
81 |
+
|
82 |
+
// Subscribe the user.
|
83 |
+
$this->subscribe_user_integration( $comment_data['comment_author_email'], $this->type, $merge_vars );
|
84 |
}
|
85 |
+
}
|
86 |
+
$yikes_easy_mc_comment_checkbox_class = new Yikes_Easy_MC_Comment_Checkbox_Class();
|
public/classes/checkbox-integrations/class.contact_form_7-checkbox.php
CHANGED
@@ -1,86 +1,74 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
-
|
4 |
-
|
5 |
-
*
|
6 |
-
* @description
|
7 |
-
* enables the use of a [yikes_mailchimp_checkbox] shortcode
|
8 |
-
* for use in contact forms
|
9 |
-
*
|
10 |
-
* @since 6.0.0
|
11 |
-
*/
|
12 |
-
|
13 |
-
// Prevent direct access to the file
|
14 |
-
defined('ABSPATH') or die( __( "Whoops, you shouldn't be accessing this file directly. Abort!" , 'yikes-inc-easy-mailchimp-extender' ) );
|
15 |
|
|
|
|
|
|
|
16 |
class Yikes_Easy_MC_CF7_Checkbox_Class extends Yikes_Easy_MC_Checkbox_Integration_Class {
|
|
|
17 |
/**
|
18 |
-
*
|
|
|
|
|
19 |
*/
|
20 |
protected $type = 'contact_form_7';
|
21 |
-
|
22 |
/**
|
23 |
-
* Constructor
|
24 |
*/
|
25 |
public function __construct() {
|
26 |
-
// initialize
|
27 |
$this->init();
|
28 |
add_action( 'wpcf7_mail_sent', array( $this, 'new_cf7_subscription' ) );
|
29 |
-
add_action( 'wpcf7_posted_data', array( $this, 'alter_cf7_data') );
|
30 |
}
|
31 |
-
|
32 |
/**
|
33 |
-
|
34 |
*
|
35 |
-
|
36 |
-
|
37 |
public function init() {
|
38 |
-
if( ! function_exists( 'wpcf7_add_form_tag' ) ) {
|
39 |
return false;
|
40 |
}
|
41 |
-
wpcf7_add_form_tag( 'yikes_mailchimp_checkbox', array( $this, 'yikes_get_checkbox' ) );
|
42 |
-
return true;
|
43 |
}
|
44 |
-
|
45 |
/**
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
* @return array
|
52 |
-
*/
|
53 |
public function alter_cf7_data( $data = array() ) {
|
54 |
$data['yikes_mailchimp_checkbox'] = $this->was_checkbox_checked( $this->type ) ? __( 'Yes', 'yikes-inc-easy-mailchimp-extender' ) : __( 'No', 'yikes-inc-easy-mailchimp-extender' );
|
55 |
return $data;
|
56 |
}
|
57 |
-
|
58 |
/**
|
59 |
-
|
60 |
-
|
|
|
|
|
61 |
public function new_cf7_subscription( $contact_form ) {
|
62 |
-
|
63 |
-
if ( $this->was_checkbox_checked( $this->type ) === false ) {
|
64 |
return false;
|
65 |
}
|
66 |
-
|
67 |
-
$
|
68 |
-
// get the contact form 7 submission instance
|
69 |
-
$submission = WPCF7_Submission::get_instance();
|
70 |
-
// confirm the submission was received
|
71 |
if ( $submission ) {
|
72 |
-
|
73 |
-
$
|
74 |
-
|
75 |
-
$email
|
76 |
-
// Default the merge_values
|
77 |
-
$merge_values = array( 'email' => $email );
|
78 |
-
// submit this subscriber
|
79 |
-
return $this->subscribe_user_integration( $email, $this->type, apply_filters( 'yikes-mailchimp-contact-form-7', $merge_values, $posted_data ) );
|
80 |
}
|
81 |
}
|
82 |
-
|
83 |
}
|
84 |
-
new Yikes_Easy_MC_CF7_Checkbox_Class;
|
85 |
-
|
86 |
-
?>
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Handle Contact Form 7 Integration: create a [yikes_mailchimp_checkbox] shortcode for use in CF7 form building.
|
4 |
+
*
|
5 |
+
* @since 6.0.0
|
6 |
+
*/
|
7 |
|
8 |
+
// Prevent direct access to the file.
|
9 |
+
defined( 'ABSPATH' ) || die( esc_html_e( "Whoops, you shouldn't be accessing this file directly. Abort!", 'yikes-inc-easy-mailchimp-extender' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
|
11 |
+
/**
|
12 |
+
* Handle Contact Form 7 Integration.
|
13 |
+
*/
|
14 |
class Yikes_Easy_MC_CF7_Checkbox_Class extends Yikes_Easy_MC_Checkbox_Integration_Class {
|
15 |
+
|
16 |
/**
|
17 |
+
* The integration type.
|
18 |
+
*
|
19 |
+
* @var string $type
|
20 |
*/
|
21 |
protected $type = 'contact_form_7';
|
22 |
+
|
23 |
/**
|
24 |
+
* Constructor.
|
25 |
*/
|
26 |
public function __construct() {
|
|
|
27 |
$this->init();
|
28 |
add_action( 'wpcf7_mail_sent', array( $this, 'new_cf7_subscription' ) );
|
29 |
+
add_action( 'wpcf7_posted_data', array( $this, 'alter_cf7_data' ) );
|
30 |
}
|
31 |
+
|
32 |
/**
|
33 |
+
* Registers the CF7 shortcode.
|
34 |
*
|
35 |
+
* @return boolean True if we were able to register the shortcode.
|
36 |
+
*/
|
37 |
public function init() {
|
38 |
+
if ( ! function_exists( 'wpcf7_add_form_tag' ) ) {
|
39 |
return false;
|
40 |
}
|
41 |
+
return wpcf7_add_form_tag( 'yikes_mailchimp_checkbox', array( $this, 'yikes_get_checkbox' ) );
|
|
|
42 |
}
|
43 |
+
|
44 |
/**
|
45 |
+
* Add yikes_mailchimp_checkbox to post data as "Yes" or "No."
|
46 |
+
*
|
47 |
+
* @param array $data CF7 posted data.
|
48 |
+
* @return array $data CF7 posted data.
|
49 |
+
*/
|
|
|
|
|
50 |
public function alter_cf7_data( $data = array() ) {
|
51 |
$data['yikes_mailchimp_checkbox'] = $this->was_checkbox_checked( $this->type ) ? __( 'Yes', 'yikes-inc-easy-mailchimp-extender' ) : __( 'No', 'yikes-inc-easy-mailchimp-extender' );
|
52 |
return $data;
|
53 |
}
|
54 |
+
|
55 |
/**
|
56 |
+
* Subscribe the user if they so chose.
|
57 |
+
*
|
58 |
+
* @param Object $contact_form The CF7 object.
|
59 |
+
*/
|
60 |
public function new_cf7_subscription( $contact_form ) {
|
61 |
+
if ( false === $this->was_checkbox_checked( $this->type ) ) {
|
|
|
62 |
return false;
|
63 |
}
|
64 |
+
$integration_options = get_option( 'optin-checkbox-init', '' );
|
65 |
+
$submission = WPCF7_Submission::get_instance();
|
|
|
|
|
|
|
66 |
if ( $submission ) {
|
67 |
+
$data = $submission->get_posted_data();
|
68 |
+
$email = isset( $data['your-email'] ) ? $data['your-email'] : '';
|
69 |
+
$fields = array( 'email' => $email );
|
70 |
+
$this->subscribe_user_integration( $email, $this->type, apply_filters( 'yikes-mailchimp-contact-form-7', $fields, $data ) );
|
|
|
|
|
|
|
|
|
71 |
}
|
72 |
}
|
|
|
73 |
}
|
74 |
+
$yikes_easy_mc_cf7_checkbox_class = new Yikes_Easy_MC_CF7_Checkbox_Class();
|
|
|
|
public/classes/checkbox-integrations/class.easy_digital_downloads_checkout_form-checkbox.php
CHANGED
@@ -1,86 +1,95 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
*/
|
8 |
-
|
9 |
-
// Prevent direct access to the file
|
10 |
-
defined('ABSPATH') or die( __( "Whoops, you shouldn't be accessing this file directly. Abort!" , 'yikes-inc-easy-mailchimp-extender' ) );
|
11 |
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
}
|
27 |
-
|
28 |
-
|
29 |
-
/**
|
30 |
-
* Outputs a checkbox
|
31 |
-
*/
|
32 |
-
public function output_checkbox() {
|
33 |
-
if ( $this->is_user_already_subscribed( $this->type ) ) {
|
34 |
-
return;
|
35 |
-
}
|
36 |
|
37 |
-
|
38 |
-
|
39 |
-
echo $this->yikes_get_checkbox();
|
40 |
-
do_action( 'yikes-mailchimp-after-checkbox', $this->type );
|
41 |
}
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
* @return array
|
48 |
-
*/
|
49 |
-
public function update_payment_post_meta( $payment_id = 0, $payment_data = array() ) {
|
50 |
-
// don't save anything if the checkbox was not checked
|
51 |
-
if( ! $this->was_checkbox_checked( $this->type ) ) {
|
52 |
-
update_post_meta( $payment_id, '_yikes_easy_mc_optin', '0' );
|
53 |
-
return;
|
54 |
-
}
|
55 |
-
update_post_meta( $payment_id, '_yikes_easy_mc_optin', '1' );
|
56 |
}
|
57 |
-
|
58 |
-
|
59 |
-
* @param int $payment_id The ID of the payment
|
60 |
-
*
|
61 |
-
* @return bool|string
|
62 |
-
*/
|
63 |
-
public function subscribe_from_edd_purchase( $payment_id ) {
|
64 |
-
$meta = get_post_meta( $payment_id , '_yikes_easy_mc_optin' , true );
|
65 |
-
if( $meta == '0' ) {
|
66 |
-
return false;
|
67 |
-
}
|
68 |
-
$email = (string) edd_get_payment_user_email( $payment_id );
|
69 |
-
$merge_vars = array();
|
70 |
-
// add first and last name to merge vars, if given
|
71 |
-
$user_info = (array) edd_get_payment_meta_user_info( $payment_id );
|
72 |
-
if( isset( $user_info['first_name'] ) && isset( $user_info['last_name'] ) ) {
|
73 |
-
$merge_vars['NAME'] = $user_info['first_name'] . ' ' . $user_info['last_name'];
|
74 |
-
}
|
75 |
-
if( isset( $user_info['first_name'] ) ) {
|
76 |
-
$merge_vars['FNAME'] = $user_info['first_name'];
|
77 |
-
}
|
78 |
-
if( isset( $user_info['last_name'] ) ) {
|
79 |
-
$merge_vars['LNAME'] = $user_info['last_name'];
|
80 |
-
}
|
81 |
-
// subscribe the user
|
82 |
-
$this->subscribe_user_integration( sanitize_email( $email ) , $this->type , $merge_vars );
|
83 |
}
|
84 |
-
|
|
|
|
|
85 |
}
|
86 |
-
|
|
|
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Handle Easy Digital Downloads Integration: add an opt-in checkbox to the EDD checkout page.
|
4 |
+
*
|
5 |
+
* @since 6.0.0
|
6 |
+
*/
|
|
|
|
|
|
|
|
|
7 |
|
8 |
+
// Prevent direct access to the file.
|
9 |
+
defined( 'ABSPATH' ) || die( esc_html_e( "Whoops, you shouldn't be accessing this file directly. Abort!", 'yikes-inc-easy-mailchimp-extender' ) );
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Handle Easy Digital Downloads Integration.
|
13 |
+
*/
|
14 |
+
class Yikes_Easy_MC_EDD_Checkbox_Class extends Yikes_Easy_MC_Checkbox_Integration_Class {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* The integration type.
|
18 |
+
*
|
19 |
+
* @var string $type
|
20 |
+
*/
|
21 |
+
protected $type = 'easy_digital_downloads_checkout_form';
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Constructor.
|
25 |
+
*/
|
26 |
+
public function __construct() {
|
27 |
+
add_action( 'edd_purchase_form_user_info_fields', array( $this, 'output_checkbox' ) );
|
28 |
+
add_action( 'edd_insert_payment', array( $this, 'update_payment_post_meta' ), 99999 );
|
29 |
+
add_action( 'edd_complete_purchase', array( $this, 'subscribe_from_edd_purchase' ), 50 );
|
30 |
+
}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Outputs the subscribe checkbox.
|
34 |
+
*/
|
35 |
+
public function output_checkbox() {
|
36 |
+
if ( $this->is_user_already_subscribed( $this->type ) ) {
|
37 |
+
return;
|
38 |
+
}
|
39 |
+
echo $this->yikes_get_checkbox();
|
40 |
+
}
|
41 |
+
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Add the checkbox's checked value as post meta to the order.
|
45 |
+
*
|
46 |
+
* @param int $payment_id The payment's ID.
|
47 |
+
* @param array $payment_data Array of payment data.
|
48 |
+
*/
|
49 |
+
public function update_payment_post_meta( $payment_id = 0, $payment_data = array() ) {
|
50 |
+
if ( ! $this->was_checkbox_checked( $this->type ) ) {
|
51 |
+
return;
|
52 |
+
}
|
53 |
+
update_post_meta( $payment_id, '_yikes_easy_mc_optin', '1' );
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Subscribe the user if they so chose.
|
58 |
+
*
|
59 |
+
* @param int $payment_id The ID of the payment.
|
60 |
+
*/
|
61 |
+
public function subscribe_from_edd_purchase( $payment_id ) {
|
62 |
+
$meta = get_post_meta( $payment_id, '_yikes_easy_mc_optin', true );
|
63 |
+
if ( empty( $meta ) ) {
|
64 |
+
return;
|
65 |
+
}
|
66 |
+
|
67 |
+
if ( ! function_exists( 'edd_get_payment_user_email' ) ) {
|
68 |
+
return;
|
69 |
+
}
|
70 |
+
|
71 |
+
$email = (string) edd_get_payment_user_email( $payment_id );
|
72 |
+
|
73 |
+
if ( empty( $email ) ) {
|
74 |
+
return;
|
75 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
|
77 |
+
if ( ! function_exists( 'edd_get_payment_meta_user_info' ) ) {
|
78 |
+
return false;
|
|
|
|
|
79 |
}
|
80 |
+
|
81 |
+
$user_info = (array) edd_get_payment_meta_user_info( $payment_id );
|
82 |
+
$merge_vars = array();
|
83 |
+
if ( isset( $user_info['first_name'] ) ) {
|
84 |
+
$merge_vars['FNAME'] = $user_info['first_name'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
}
|
86 |
+
if ( isset( $user_info['last_name'] ) ) {
|
87 |
+
$merge_vars['LNAME'] = $user_info['last_name'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
}
|
89 |
+
|
90 |
+
// Subscribe the user.
|
91 |
+
$this->subscribe_user_integration( $email, $this->type, $merge_vars );
|
92 |
}
|
93 |
+
|
94 |
+
}
|
95 |
+
$yikes_easy_mc_edd_checkbox_class = new Yikes_Easy_MC_EDD_Checkbox_Class();
|
public/classes/checkbox-integrations/class.registration_form-checkbox.php
CHANGED
@@ -1,64 +1,62 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
-
|
4 |
-
|
5 |
-
* Takes care of opt-in checkboxes to integrate with Registration forms on your site
|
6 |
-
*
|
7 |
-
* since @6.0.0
|
8 |
-
*/
|
9 |
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
class Yikes_Easy_MC_Registration_Checkbox_Class extends Yikes_Easy_MC_Checkbox_Integration_Class {
|
14 |
|
15 |
-
|
|
|
|
|
|
|
|
|
16 |
protected $type = 'registration_form';
|
17 |
-
|
|
|
|
|
|
|
18 |
public function __construct() {
|
19 |
add_action( 'register_form', array( $this, 'output_checkbox' ), 20 );
|
20 |
add_action( 'user_register', array( $this, 'subscribe_from_registration' ), 90, 1 );
|
21 |
-
// alter the error message, if there was an error with the users email address
|
22 |
-
add_filter( 'wp_login_errors', array( $this , 'yikes_reg_complete_msg' ), 10, 2 );
|
23 |
}
|
24 |
|
25 |
/**
|
26 |
-
|
27 |
-
|
28 |
public function output_checkbox() {
|
29 |
echo $this->yikes_get_checkbox();
|
30 |
}
|
31 |
-
|
32 |
/**
|
33 |
-
*
|
34 |
*
|
35 |
-
* @param int $user_id
|
36 |
-
|
37 |
-
* @return bool|string
|
38 |
-
*/
|
39 |
public function subscribe_from_registration( $user_id ) {
|
40 |
-
|
41 |
-
if ( $this->was_checkbox_checked( $this->type ) === false ) {
|
42 |
return false;
|
43 |
}
|
44 |
-
|
45 |
$user = get_userdata( $user_id );
|
46 |
-
|
47 |
-
if (
|
48 |
return false;
|
49 |
}
|
50 |
-
|
|
|
51 |
$merge_variables = $this->user_merge_vars( $user );
|
52 |
-
|
53 |
-
if ( $this->is_user_already_subscribed(
|
54 |
-
$this->subscribe_user_integration(
|
55 |
-
} else {
|
56 |
-
// add a temporary option to pass our email address and let the user know they are already subscribed
|
57 |
-
$user_already_subscribed_message = sprintf( __( "You have not been subscribed to our mailing list. %s is already subscribed to this list.", "yikes-inc-easy-mailchimp-extender" ), $user->user_email );
|
58 |
-
add_option( 'yikes_register_subscription_error' , $user_already_subscribed_message );
|
59 |
}
|
60 |
}
|
61 |
-
|
62 |
-
/* End registration form functions */
|
63 |
}
|
64 |
-
new Yikes_Easy_MC_Registration_Checkbox_Class;
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* Handle WordPress Registration Integration: add an opt-in checkbox to WordPress' native registration form.
|
4 |
+
*
|
5 |
+
* @since 6.0.0
|
6 |
+
*/
|
7 |
|
8 |
+
// Prevent direct access to the file.
|
9 |
+
defined( 'ABSPATH' ) || die( esc_html_e( "Whoops, you shouldn't be accessing this file directly. Abort!", 'yikes-inc-easy-mailchimp-extender' ) );
|
|
|
|
|
|
|
|
|
10 |
|
11 |
+
/**
|
12 |
+
* Handle WordPress Registration Integration.
|
13 |
+
*/
|
14 |
class Yikes_Easy_MC_Registration_Checkbox_Class extends Yikes_Easy_MC_Checkbox_Integration_Class {
|
15 |
|
16 |
+
/**
|
17 |
+
* The integration type.
|
18 |
+
*
|
19 |
+
* @var string $type
|
20 |
+
*/
|
21 |
protected $type = 'registration_form';
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Constructor.
|
25 |
+
*/
|
26 |
public function __construct() {
|
27 |
add_action( 'register_form', array( $this, 'output_checkbox' ), 20 );
|
28 |
add_action( 'user_register', array( $this, 'subscribe_from_registration' ), 90, 1 );
|
|
|
|
|
29 |
}
|
30 |
|
31 |
/**
|
32 |
+
* Outputs the subscribe checkbox.
|
33 |
+
*/
|
34 |
public function output_checkbox() {
|
35 |
echo $this->yikes_get_checkbox();
|
36 |
}
|
37 |
+
|
38 |
/**
|
39 |
+
* Subscribe the user if they so chose.
|
40 |
*
|
41 |
+
* @param int $user_id The WP User's ID.
|
42 |
+
*/
|
|
|
|
|
43 |
public function subscribe_from_registration( $user_id ) {
|
44 |
+
if ( false === $this->was_checkbox_checked( $this->type ) ) {
|
|
|
45 |
return false;
|
46 |
}
|
47 |
+
|
48 |
$user = get_userdata( $user_id );
|
49 |
+
|
50 |
+
if ( false === $user ) {
|
51 |
return false;
|
52 |
}
|
53 |
+
|
54 |
+
// Fetch the user's data.
|
55 |
$merge_variables = $this->user_merge_vars( $user );
|
56 |
+
|
57 |
+
if ( false === $this->is_user_already_subscribed( $this->type, $user->user_email ) ) {
|
58 |
+
$this->subscribe_user_integration( $user->user_email, $this->type, $merge_variables );
|
|
|
|
|
|
|
|
|
59 |
}
|
60 |
}
|
|
|
|
|
61 |
}
|
62 |
+
$yikes_easy_mc_registration_checkbox_class = new Yikes_Easy_MC_Registration_Checkbox_Class();
|
public/classes/checkbox-integrations/class.woocommerce_checkout_form-checkbox.php
CHANGED
@@ -1,33 +1,37 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
|
4 |
-
*
|
5 |
-
*
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
|
|
13 |
class Yikes_Easy_MC_WooCommerce_Checkbox_Class extends Yikes_Easy_MC_Checkbox_Integration_Class {
|
14 |
|
15 |
/**
|
16 |
-
*
|
|
|
|
|
17 |
*/
|
18 |
protected $type = 'woocommerce_checkout_form';
|
19 |
-
|
20 |
/**
|
21 |
-
* Constructor
|
22 |
*/
|
23 |
public function __construct() {
|
24 |
-
|
25 |
add_action( 'init', array( $this, 'determine_checkbox_placement' ), 1000 );
|
26 |
add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'save_woocommerce_checkout_checkbox_value' ) );
|
27 |
add_action( 'woocommerce_checkout_order_processed', array( $this, 'subscribe_from_woocommerce_checkout' ) );
|
28 |
-
|
29 |
}
|
30 |
|
|
|
|
|
|
|
31 |
public function determine_checkbox_placement() {
|
32 |
|
33 |
$default_checkbox_placement = apply_filters( 'yikes-mailchimp-wooco-integration-checkbox-checkout-fields', true );
|
@@ -35,51 +39,39 @@ class Yikes_Easy_MC_WooCommerce_Checkbox_Class extends Yikes_Easy_MC_Checkbox_In
|
|
35 |
if ( $default_checkbox_placement ) {
|
36 |
add_filter( 'woocommerce_checkout_fields', array( $this, 'add_checkout_field' ), 20 );
|
37 |
} else {
|
38 |
-
add_action( '
|
39 |
}
|
40 |
}
|
41 |
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
if ( isset( $checkbox_options[$this->type] ) && isset( $checkbox_options[$this->type]['associated-list'] ) && $checkbox_options[$this->type]['associated-list'] != '-' ) {
|
49 |
-
|
50 |
-
if ( $this->is_user_already_subscribed( $this->type ) ) {
|
51 |
-
return $fields;
|
52 |
-
}
|
53 |
-
|
54 |
-
$precheck = isset( $checkbox_options[$this->type]['precheck'] ) && $checkbox_options[$this->type]['precheck'] == 'true';
|
55 |
-
|
56 |
-
?>
|
57 |
-
<label class="checkbox yikes-mailchimp-woocommerce-checkout-form-checkbox">
|
58 |
-
<input type="checkbox" class="input-checkbox " name="yikes_mailchimp_checkbox_woocommerce_checkout_form" id="yikes_mailchimp_checkbox_woocommerce_checkout_form" value="1" <?php echo $precheck ? 'checked="checked"' : ''; ?>>
|
59 |
-
<?php echo $checkbox_options[$this->type]['label']; ?>
|
60 |
-
</label>
|
61 |
-
<?php
|
62 |
}
|
|
|
63 |
}
|
64 |
-
|
65 |
/**
|
66 |
-
*
|
67 |
*
|
68 |
-
* @
|
|
|
69 |
*/
|
70 |
public function add_checkout_field( $fields ) {
|
71 |
|
72 |
-
// Get checkbox data
|
73 |
-
$checkbox_options = get_option( 'optin-checkbox-init'
|
74 |
|
75 |
-
// Only display the field if a list is set
|
76 |
-
if ( isset( $checkbox_options[$this->type] ) && isset( $checkbox_options[$this->type]['associated-list'] ) && $checkbox_options[$this->type]['associated-list']
|
77 |
|
78 |
if ( $this->is_user_already_subscribed( $this->type ) ) {
|
79 |
return $fields;
|
80 |
}
|
81 |
|
82 |
-
$precheck = isset( $checkbox_options[$this->type]['precheck'] ) && $checkbox_options[$this->type]['precheck']
|
83 |
|
84 |
/**
|
85 |
* Filter where the checkbox goes.
|
@@ -90,47 +82,61 @@ class Yikes_Easy_MC_WooCommerce_Checkbox_Class extends Yikes_Easy_MC_Checkbox_In
|
|
90 |
*/
|
91 |
$field_placement = apply_filters( 'yikes-mailchimp-wooco-integration-checkbox-placement', 'billing' );
|
92 |
|
93 |
-
$
|
94 |
-
'id'
|
95 |
'type' => 'checkbox',
|
96 |
'class' => apply_filters( 'yikes-mailchimp-wooco-integration-checkbox-classes', array( 'form-row-wide' ) ),
|
97 |
-
'label' => $checkbox_options[$this->type]['label'],
|
98 |
'default' => $precheck,
|
99 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
}
|
101 |
|
102 |
return $fields;
|
103 |
}
|
104 |
-
|
105 |
/**
|
106 |
-
|
107 |
-
|
|
|
|
|
|
|
|
|
108 |
public function save_woocommerce_checkout_checkbox_value( $order_id ) {
|
109 |
-
|
110 |
-
// Update the order post meta
|
111 |
update_post_meta( $order_id, 'yikes_easy_mailchimp_optin', $this->was_checkbox_checked( $this->type ) );
|
112 |
}
|
113 |
-
|
114 |
/**
|
115 |
-
|
116 |
-
|
117 |
-
|
|
|
118 |
public function subscribe_from_woocommerce_checkout( $order_id ) {
|
119 |
$do_optin = get_post_meta( $order_id, 'yikes_easy_mailchimp_optin', true );
|
120 |
|
121 |
-
if (
|
122 |
-
$order
|
123 |
-
$email
|
124 |
$merge_vars = array(
|
125 |
-
'NAME' => "{$order->billing_first_name} {$order->billing_last_name}",
|
126 |
'FNAME' => $order->billing_first_name,
|
127 |
'LNAME' => $order->billing_last_name,
|
128 |
);
|
129 |
|
130 |
-
// Subscribe the user
|
131 |
-
$this->subscribe_user_integration(
|
132 |
}
|
133 |
}
|
134 |
-
|
135 |
}
|
136 |
-
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Handle WooCommerce Integration: add a checkbox for subscribers on WooCommerce's checkout page.
|
4 |
+
*
|
5 |
+
* @since 6.0.0
|
6 |
+
*/
|
7 |
+
|
8 |
+
// Prevent direct access to the file.
|
9 |
+
defined( 'ABSPATH' ) || die( esc_html_e( "Whoops, you shouldn't be accessing this file directly. Abort!", 'yikes-inc-easy-mailchimp-extender' ) );
|
10 |
+
|
11 |
+
/**
|
12 |
+
* WooCo Checkbox Integration.
|
13 |
+
*/
|
14 |
class Yikes_Easy_MC_WooCommerce_Checkbox_Class extends Yikes_Easy_MC_Checkbox_Integration_Class {
|
15 |
|
16 |
/**
|
17 |
+
* The integration type.
|
18 |
+
*
|
19 |
+
* @var string $type
|
20 |
*/
|
21 |
protected $type = 'woocommerce_checkout_form';
|
22 |
+
|
23 |
/**
|
24 |
+
* Constructor.
|
25 |
*/
|
26 |
public function __construct() {
|
|
|
27 |
add_action( 'init', array( $this, 'determine_checkbox_placement' ), 1000 );
|
28 |
add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'save_woocommerce_checkout_checkbox_value' ) );
|
29 |
add_action( 'woocommerce_checkout_order_processed', array( $this, 'subscribe_from_woocommerce_checkout' ) );
|
|
|
30 |
}
|
31 |
|
32 |
+
/**
|
33 |
+
* Filter where the WooCo checkbox will go.
|
34 |
+
*/
|
35 |
public function determine_checkbox_placement() {
|
36 |
|
37 |
$default_checkbox_placement = apply_filters( 'yikes-mailchimp-wooco-integration-checkbox-checkout-fields', true );
|
39 |
if ( $default_checkbox_placement ) {
|
40 |
add_filter( 'woocommerce_checkout_fields', array( $this, 'add_checkout_field' ), 20 );
|
41 |
} else {
|
42 |
+
add_action( 'woocommerce_review_order_before_submit', array( $this, 'output_checkbox' ) );
|
43 |
}
|
44 |
}
|
45 |
|
46 |
+
/**
|
47 |
+
* Print the checkbox to the page.
|
48 |
+
*/
|
49 |
+
public function output_checkbox() {
|
50 |
+
if ( $this->is_user_already_subscribed( $this->type ) ) {
|
51 |
+
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
}
|
53 |
+
echo $this->yikes_get_checkbox();
|
54 |
}
|
55 |
+
|
56 |
/**
|
57 |
+
* Add the checkbox to WooCommerce's checkout fields array.
|
58 |
*
|
59 |
+
* @param array $fields WooCommerce's array of checkout fields.
|
60 |
+
* @return array $fields WooCommerce's array of checkout fields with our checkbox appended.
|
61 |
*/
|
62 |
public function add_checkout_field( $fields ) {
|
63 |
|
64 |
+
// Get checkbox data.
|
65 |
+
$checkbox_options = get_option( 'optin-checkbox-init', array() );
|
66 |
|
67 |
+
// Only display the field if a list is set.
|
68 |
+
if ( isset( $checkbox_options[ $this->type ] ) && isset( $checkbox_options[ $this->type ]['associated-list'] ) && '-' !== $checkbox_options[ $this->type ]['associated-list'] ) {
|
69 |
|
70 |
if ( $this->is_user_already_subscribed( $this->type ) ) {
|
71 |
return $fields;
|
72 |
}
|
73 |
|
74 |
+
$precheck = isset( $checkbox_options[ $this->type ]['precheck'] ) && 'true' === $checkbox_options[ $this->type ]['precheck'] ? '1' : '0';
|
75 |
|
76 |
/**
|
77 |
* Filter where the checkbox goes.
|
82 |
*/
|
83 |
$field_placement = apply_filters( 'yikes-mailchimp-wooco-integration-checkbox-placement', 'billing' );
|
84 |
|
85 |
+
$yikes_checkbox = array(
|
86 |
+
'id' => 'yikes_mailchimp_checkbox_' . $this->type,
|
87 |
'type' => 'checkbox',
|
88 |
'class' => apply_filters( 'yikes-mailchimp-wooco-integration-checkbox-classes', array( 'form-row-wide' ) ),
|
89 |
+
'label' => $checkbox_options[ $this->type ]['label'],
|
90 |
'default' => $precheck,
|
91 |
);
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Filter the checkbox data.
|
95 |
+
*
|
96 |
+
* See this WooCo article for possible values: https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/
|
97 |
+
*
|
98 |
+
* @param array $yikes_checkbox The checkbox's fields.
|
99 |
+
* @return array $yikes_checkbox The checkbox's fields.
|
100 |
+
*/
|
101 |
+
$yikes_checkbox = apply_filters( 'yikes_mailchimp_wooco_integration_checkbox_field', $yikes_checkbox, $checkbox_options[ $this->type ] );
|
102 |
+
|
103 |
+
$fields[ $field_placement ][ 'yikes_mailchimp_checkbox_' . $this->type ] = $yikes_checkbox;
|
104 |
}
|
105 |
|
106 |
return $fields;
|
107 |
}
|
108 |
+
|
109 |
/**
|
110 |
+
* Save the checkbox's status as post meta to the order.
|
111 |
+
*
|
112 |
+
* This allows us to run the subscription request after the order has been processed.
|
113 |
+
*
|
114 |
+
* @param int $order_id The WooCo order ID.
|
115 |
+
*/
|
116 |
public function save_woocommerce_checkout_checkbox_value( $order_id ) {
|
|
|
|
|
117 |
update_post_meta( $order_id, 'yikes_easy_mailchimp_optin', $this->was_checkbox_checked( $this->type ) );
|
118 |
}
|
119 |
+
|
120 |
/**
|
121 |
+
* Subscribe the user if they so chose.
|
122 |
+
*
|
123 |
+
* @param int $order_id The WooCo Order ID.
|
124 |
+
*/
|
125 |
public function subscribe_from_woocommerce_checkout( $order_id ) {
|
126 |
$do_optin = get_post_meta( $order_id, 'yikes_easy_mailchimp_optin', true );
|
127 |
|
128 |
+
if ( '1' === $do_optin ) {
|
129 |
+
$order = new WC_Order( $order_id );
|
130 |
+
$email = $order->billing_email;
|
131 |
$merge_vars = array(
|
|
|
132 |
'FNAME' => $order->billing_first_name,
|
133 |
'LNAME' => $order->billing_last_name,
|
134 |
);
|
135 |
|
136 |
+
// Subscribe the user.
|
137 |
+
$this->subscribe_user_integration( $email, $this->type, $merge_vars );
|
138 |
}
|
139 |
}
|
|
|
140 |
}
|
141 |
+
|
142 |
+
$yikes_easy_mc_woocommerce_checkbox_class = new Yikes_Easy_MC_WooCommerce_Checkbox_Class();
|
public/classes/process/class.process_form_submission_handler.php
CHANGED
@@ -394,7 +394,7 @@ class Yikes_Inc_Easy_MailChimp_Extender_Process_Submission_Handler {
|
|
394 |
* @param array | $merge_variables | The user submitted form data
|
395 |
*/
|
396 |
$merge_variables = apply_filters( 'yikes-mailchimp-filter-before-submission', $merge_variables );
|
397 |
-
$merge_variables = apply_filters(
|
398 |
|
399 |
return $merge_variables;
|
400 |
}
|
@@ -613,8 +613,8 @@ class Yikes_Inc_Easy_MailChimp_Extender_Process_Submission_Handler {
|
|
613 |
*
|
614 |
* @param array | $merge_variables | The array of user submitted form data
|
615 |
*/
|
616 |
-
do_action( 'yikes-mailchimp-after-submission', $merge_variables );
|
617 |
-
do_action( "yikes-mailchimp-after-submission-{$this->form_id}", $merge_variables );
|
618 |
|
619 |
/**
|
620 |
* yikes-mailchimp-form-submission || yikes-mailchimp-form-submission-{$form_id}
|
@@ -1376,17 +1376,17 @@ class Yikes_Inc_Easy_MailChimp_Extender_Process_Submission_Handler {
|
|
1376 |
if ( '1' === $redirect_setting ) {
|
1377 |
|
1378 |
// Supply return array with default value of 1
|
1379 |
-
$redirect_array['redirection'] = 1;
|
1380 |
|
1381 |
// Let's confirm we have redirect_page/custom_redirect_url/new_window values
|
1382 |
$redirect_page_setting = isset( $submission_settings['redirect_page'] ) ? $submission_settings['redirect_page'] : false;
|
1383 |
$custom_redirect_setting = isset( $submission_settings['custom_redirect_url'] ) ? $submission_settings['custom_redirect_url'] : false;
|
1384 |
$redirect_new_window = isset( $submission_settings['redirect_new_window'] ) ? $submission_settings['redirect_new_window'] : false;
|
1385 |
|
1386 |
-
$redirect_array['new_window'] = $redirect_new_window;
|
1387 |
|
1388 |
// Check if we're redirecting to a custom_url or just the redirect_page
|
1389 |
-
$redirect_url =
|
1390 |
|
1391 |
/**
|
1392 |
* yikes-mailchimp-redirect-url
|
@@ -1406,7 +1406,7 @@ class Yikes_Inc_Easy_MailChimp_Extender_Process_Submission_Handler {
|
|
1406 |
*
|
1407 |
* @param int | $default_redirect_time_ms | The default time (1500 milliseconds) to wait before redirecting
|
1408 |
*/
|
1409 |
-
$redirect_timer = apply_filters( 'yikes-mailchimp-redirect-timer', $default_redirect_time_ms, $form_id );
|
1410 |
|
1411 |
$redirect_array['redirect_timer'] = $redirect_timer;
|
1412 |
|
394 |
* @param array | $merge_variables | The user submitted form data
|
395 |
*/
|
396 |
$merge_variables = apply_filters( 'yikes-mailchimp-filter-before-submission', $merge_variables );
|
397 |
+
$merge_variables = apply_filters( "yikes-mailchimp-filter-before-submission-{$this->form_id}", $merge_variables );
|
398 |
|
399 |
return $merge_variables;
|
400 |
}
|
613 |
*
|
614 |
* @param array | $merge_variables | The array of user submitted form data
|
615 |
*/
|
616 |
+
do_action( 'yikes-mailchimp-after-submission', $merge_variables, $this->form_id );
|
617 |
+
do_action( "yikes-mailchimp-after-submission-{$this->form_id}", $merge_variables, $this->form_id );
|
618 |
|
619 |
/**
|
620 |
* yikes-mailchimp-form-submission || yikes-mailchimp-form-submission-{$form_id}
|
1376 |
if ( '1' === $redirect_setting ) {
|
1377 |
|
1378 |
// Supply return array with default value of 1
|
1379 |
+
$redirect_array['redirection'] = apply_filters( 'yikes-mailchimp-redirection', 1, $form_id, $page_data );
|
1380 |
|
1381 |
// Let's confirm we have redirect_page/custom_redirect_url/new_window values
|
1382 |
$redirect_page_setting = isset( $submission_settings['redirect_page'] ) ? $submission_settings['redirect_page'] : false;
|
1383 |
$custom_redirect_setting = isset( $submission_settings['custom_redirect_url'] ) ? $submission_settings['custom_redirect_url'] : false;
|
1384 |
$redirect_new_window = isset( $submission_settings['redirect_new_window'] ) ? $submission_settings['redirect_new_window'] : false;
|
1385 |
|
1386 |
+
$redirect_array['new_window'] = apply_filters( 'yikes-mailchimp-redirect-new-window', $redirect_new_window, $form_id, $page_data );
|
1387 |
|
1388 |
// Check if we're redirecting to a custom_url or just the redirect_page
|
1389 |
+
$redirect_url = 'custom_url' !== $redirect_page_setting ? get_permalink( $redirect_page_setting ) : $custom_redirect_setting;
|
1390 |
|
1391 |
/**
|
1392 |
* yikes-mailchimp-redirect-url
|
1406 |
*
|
1407 |
* @param int | $default_redirect_time_ms | The default time (1500 milliseconds) to wait before redirecting
|
1408 |
*/
|
1409 |
+
$redirect_timer = apply_filters( 'yikes-mailchimp-redirect-timer', $default_redirect_time_ms, $form_id, $page_data );
|
1410 |
|
1411 |
$redirect_array['redirect_timer'] = $redirect_timer;
|
1412 |
|
public/css/jquery-ui.min.css
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
-
/*! jQuery UI - v1.11.4 - 2017-05-15
|
2 |
-
* http://jqueryui.com
|
3 |
-
* Includes: core.css, datepicker.css, theme.css
|
4 |
-
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
|
5 |
-
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
6 |
-
|
7 |
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#2b2b2b;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:0 0 0 0;padding:5px;background:#666;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
|
1 |
+
/*! jQuery UI - v1.11.4 - 2017-05-15
|
2 |
+
* http://jqueryui.com
|
3 |
+
* Includes: core.css, datepicker.css, theme.css
|
4 |
+
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
|
5 |
+
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
6 |
+
|
7 |
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#2b2b2b;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:0 0 0 0;padding:5px;background:#666;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
|
public/js/yikes-datepicker-scripts.js
CHANGED
@@ -1,9 +1,8 @@
|
|
1 |
-
|
2 |
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
dateFormat: jQuery( this ).data( 'date-format' ).replace( 'yyyy', 'yy' ),
|
7 |
isRTL: datepicker_settings.rtl,
|
8 |
dayNames: datepicker_settings.day_names,
|
9 |
dayNamesMin: datepicker_settings.day_names_min,
|
@@ -22,42 +21,58 @@ jQuery( document ).ready( function() {
|
|
22 |
showAnim: datepicker_settings.show_anim,
|
23 |
showButtonPanel: datepicker_settings.show_button_panel,
|
24 |
beforeShowDay: typeof( yikes_mc_before_show_day ) === 'function' ? yikes_mc_before_show_day : null
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
});
|
26 |
|
27 |
-
|
28 |
-
|
29 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
});
|
|
|
31 |
});
|
32 |
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
dayNames: datepicker_settings.day_names,
|
39 |
-
dayNamesMin: datepicker_settings.day_names_min,
|
40 |
-
dayNamesShort: datepicker_settings.day_names_short,
|
41 |
-
monthNames: datepicker_settings.month_names,
|
42 |
-
monthNamesShort: datepicker_settings.month_names_short,
|
43 |
-
firstDay: datepicker_settings.first_day,
|
44 |
-
changeMonth: datepicker_settings.change_month,
|
45 |
-
changeYear: datepicker_settings.change_year,
|
46 |
-
minDate: datepicker_settings.min_date,
|
47 |
-
maxDate: datepicker_settings.max_date,
|
48 |
-
defaultDate: datepicker_settings.default_date,
|
49 |
-
numberOfMonths: typeof( datepicker_settings.number_of_months ) === 'string' ? parseInt( datepicker_settings.number_of_months ) : datepicker_settings.number_of_months, // works
|
50 |
-
showOtherMonths: datepicker_settings.show_other_months,
|
51 |
-
selectOtherMonths: datepicker_settings.select_other_months,
|
52 |
-
showAnim: datepicker_settings.show_anim,
|
53 |
-
showButtonPanel: datepicker_settings.show_button_panel,
|
54 |
-
beforeShowDay: typeof( yikes_mc_before_show_day ) === 'function' ? yikes_mc_before_show_day : null
|
55 |
});
|
|
|
|
|
|
|
56 |
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
});
|
61 |
-
});
|
62 |
|
63 |
-
|
|
|
|
|
|
1 |
+
( function( $ ) {
|
2 |
|
3 |
+
function get_datepicker_options( date_format ) {
|
4 |
+
return {
|
5 |
+
dateFormat: date_format,
|
|
|
6 |
isRTL: datepicker_settings.rtl,
|
7 |
dayNames: datepicker_settings.day_names,
|
8 |
dayNamesMin: datepicker_settings.day_names_min,
|
21 |
showAnim: datepicker_settings.show_anim,
|
22 |
showButtonPanel: datepicker_settings.show_button_panel,
|
23 |
beforeShowDay: typeof( yikes_mc_before_show_day ) === 'function' ? yikes_mc_before_show_day : null
|
24 |
+
}
|
25 |
+
}
|
26 |
+
|
27 |
+
// Initialize the datepicker.
|
28 |
+
$( document ).ready( function() {
|
29 |
+
|
30 |
+
// Date Fields.
|
31 |
+
$( 'body' ).on( 'focus', 'input[data-attr-type="date"]', function() {
|
32 |
+
const element = $( this );
|
33 |
+
|
34 |
+
// Handle conflicting IDs.
|
35 |
+
handle_conflicting_id_datepicker_hack( element, 'input[data-attr-type="date"]' );
|
36 |
+
|
37 |
+
// Initialize the datepicker.
|
38 |
+
element.datepicker( get_datepicker_options( element.data( 'date-format' ).replace( 'yyyy', 'yy' ) ) );
|
39 |
+
|
40 |
+
// Show the year.
|
41 |
+
remove_datepicker_hide_year_class();
|
42 |
});
|
43 |
|
44 |
+
|
45 |
+
// Birthday Fields.
|
46 |
+
$( 'body' ).on( 'focus', 'input[data-attr-type="birthday"]', function() {
|
47 |
+
const element = $( this );
|
48 |
+
|
49 |
+
// Handle conflicting IDs.
|
50 |
+
handle_conflicting_id_datepicker_hack( element, 'input[data-attr-type="birthday"]' );
|
51 |
+
|
52 |
+
// Initialize the datepicker.
|
53 |
+
element.datepicker( get_datepicker_options( element.data( 'date-format' ) ) );
|
54 |
+
|
55 |
+
// Hide the year (relies on some CSS in the yikes-datepicker-styles.css file).
|
56 |
+
add_datepicker_hide_year_class();
|
57 |
});
|
58 |
+
|
59 |
});
|
60 |
|
61 |
+
function handle_conflicting_id_datepicker_hack( element, elements_selector ) {
|
62 |
+
$( elements_selector ).each( function() {
|
63 |
+
if ( this.id.length ) {
|
64 |
+
$( this ).data( 'id', this.id );
|
65 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
});
|
67 |
+
$( elements_selector ).attr( 'id', '' );
|
68 |
+
element.attr( 'id', element.data( 'id' ) );
|
69 |
+
}
|
70 |
|
71 |
+
function remove_datepicker_hide_year_class() {
|
72 |
+
$( '#ui-datepicker-div' ).removeClass( 'yikes-datepicker-hide-year' );
|
73 |
+
}
|
|
|
|
|
74 |
|
75 |
+
function add_datepicker_hide_year_class() {
|
76 |
+
$( '#ui-datepicker-div' ).addClass( 'yikes-datepicker-hide-year' );
|
77 |
+
}
|
78 |
+
})( jQuery );
|
public/js/yikes-datepicker-scripts.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
|
1 |
+
!function(t){function e(t){return{dateFormat:t,isRTL:datepicker_settings.rtl,dayNames:datepicker_settings.day_names,dayNamesMin:datepicker_settings.day_names_min,dayNamesShort:datepicker_settings.day_names_short,monthNames:datepicker_settings.month_names,monthNamesShort:datepicker_settings.month_names_short,firstDay:datepicker_settings.first_day,changeMonth:datepicker_settings.change_month,changeYear:datepicker_settings.change_year,minDate:datepicker_settings.min_date,maxDate:datepicker_settings.max_date,defaultDate:datepicker_settings.default_date,numberOfMonths:"string"==typeof datepicker_settings.number_of_months?parseInt(datepicker_settings.number_of_months):datepicker_settings.number_of_months,showOtherMonths:datepicker_settings.show_other_months,selectOtherMonths:datepicker_settings.select_other_months,showAnim:datepicker_settings.show_anim,showButtonPanel:datepicker_settings.show_button_panel,beforeShowDay:"function"==typeof yikes_mc_before_show_day?yikes_mc_before_show_day:null}}function a(e,a){t(a).each(function(){this.id.length&&t(this).data("id",this.id)}),t(a).attr("id",""),e.attr("id",e.data("id"))}t(document).ready(function(){t("body").on("focus",'input[data-attr-type="date"]',function(){const s=t(this);a(s,'input[data-attr-type="date"]'),s.datepicker(e(s.data("date-format").replace("yyyy","yy"))),t("#ui-datepicker-div").removeClass("yikes-datepicker-hide-year")}),t("body").on("focus",'input[data-attr-type="birthday"]',function(){const s=t(this);a(s,'input[data-attr-type="birthday"]'),s.datepicker(e(s.data("date-format"))),t("#ui-datepicker-div").addClass("yikes-datepicker-hide-year")})})}(jQuery);
|
public/partials/ajax/class.public_ajax.php
CHANGED
@@ -58,42 +58,42 @@ class YIKES_Inc_Easy_MailChimp_Public_Ajax {
|
|
58 |
@since v6.0.4.1
|
59 |
*/
|
60 |
public function sendUpdateProfileEmail() {
|
61 |
-
$user_email
|
62 |
-
$user_id
|
63 |
-
$list_id
|
64 |
-
$form_id
|
65 |
-
$page_id
|
66 |
-
$full_site_url
|
67 |
-
$manager
|
68 |
|
69 |
// Possibly handle errors.
|
70 |
$errors = array();
|
71 |
$is_error = false;
|
72 |
|
73 |
-
// List details API call
|
74 |
$list_details = $manager->get_list_handler()->get_list( $list_id );
|
75 |
if ( is_wp_error( $list_details ) ) {
|
76 |
$error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
|
77 |
$error_logging->maybe_write_to_log( $list_details->get_error_code(),
|
78 |
-
__(
|
79 |
-
|
80 |
);
|
81 |
$is_error = true;
|
82 |
$errors[] = $list_details->get_error_message();
|
83 |
}
|
84 |
|
85 |
-
// Subscriber details API call
|
86 |
$subscriber_account_details = $manager->get_list_handler()->get_member( $list_id, $user_id );
|
87 |
if ( is_wp_error( $subscriber_account_details ) ) {
|
88 |
$error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
|
89 |
-
$error_logging->maybe_write_to_log( $subscriber_account_details->get_error_code(), __(
|
90 |
$is_error = true;
|
91 |
$errors[] = $subscriber_account_details->get_error_message();
|
92 |
}
|
93 |
|
94 |
-
// Form details API call
|
95 |
$interface = yikes_easy_mailchimp_extender_get_form_interface();
|
96 |
-
if ( ! empty( $interface ) && method_exists( $interface, 'get_form' ) &&
|
97 |
$form_data = $interface->get_form( $form_id );
|
98 |
if ( ! empty( $form_data ) ) {
|
99 |
if ( isset( $form_data['error_messages'] ) ) {
|
@@ -117,59 +117,69 @@ class YIKES_Inc_Easy_MailChimp_Public_Ajax {
|
|
117 |
}
|
118 |
}
|
119 |
|
120 |
-
//
|
121 |
if ( $is_error ) {
|
122 |
$error_message = '<br>' . join( '<br>', $errors );
|
123 |
-
|
|
|
124 |
wp_send_json_error(
|
125 |
array(
|
126 |
-
'response_text' => '<div class="yikes-easy-mc-error-message">✕ ' . $
|
127 |
)
|
128 |
);
|
129 |
|
130 |
return;
|
131 |
}
|
132 |
|
133 |
-
// Construct the headers & email message content
|
134 |
-
$subscriber_id
|
135 |
$update_link_href = str_replace( '/subscribe', '/profile', $list_details['subscribe_url_long'] );
|
136 |
$update_link_href = add_query_arg( 'e', $subscriber_id, $update_link_href );
|
137 |
$update_link_tag = '<a href="' . $update_link_href . '">';
|
138 |
$headers = 'From: ' . $list_details['campaign_defaults']['from_name'] . ' <' . $list_details['campaign_defaults']['from_email'] . '>' . "\r\n";
|
139 |
-
$headers
|
140 |
|
141 |
if ( ! isset( $email_subject ) ) {
|
142 |
$email_subject = __( 'MailChimp Profile Update', 'yikes-inc-easy-mailchimp-extender' );
|
143 |
}
|
144 |
-
|
145 |
-
// Check if the email_body was set
|
146 |
if ( ! isset( $email_body ) || empty( $email_body ) ) {
|
147 |
|
148 |
-
// The email_body should always be set, but we've made this function static just in case so we can grab our default
|
149 |
$email_body = Yikes_Inc_Easy_Mailchimp_Forms_Admin::generate_default_email_body();
|
150 |
}
|
151 |
|
152 |
if ( ! isset( $update_email_success_message ) ) {
|
|
|
153 |
$update_email_success_message = sprintf( __( '%s Update email successfully sent. Please check your inbox for the message.', 'yikes-inc-easy-mailchimp-extender' ), '✔' );
|
154 |
}
|
155 |
|
156 |
if ( ! isset( $update_email_failed_message ) ) {
|
|
|
157 |
$update_email_failed_message = sprintf( __( '%s Email failed to send. Please contact the site administrator.', 'yikes-inc-easy-mailchimp-extender' ), '✕' );
|
158 |
}
|
159 |
|
160 |
-
|
161 |
|
162 |
-
// We let the user use [link] text [/link] for the update profile link
|
163 |
-
// So replace [link] with the <a> tag
|
164 |
$email_body = str_replace( '[link]', $update_link_tag, $email_body );
|
165 |
|
166 |
-
// And replace [/link] with the closing </a> tag
|
167 |
$email_body = str_replace( '[/link]', '</a>', $email_body );
|
168 |
|
169 |
-
// We let the user use [url] for their website
|
170 |
-
// So replace [url] with get_home_url()
|
171 |
$email_body = str_replace( '[url]', get_home_url(), $email_body );
|
172 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
173 |
/* Confirm that the email was sent */
|
174 |
if ( wp_mail( $user_email, apply_filters( 'yikes-mailchimp-update-email-subject', $email_subject ), apply_filters( 'yikes-mailchimp-update-email-content', $email_body, $update_link_href ), $headers ) ) {
|
175 |
|
58 |
@since v6.0.4.1
|
59 |
*/
|
60 |
public function sendUpdateProfileEmail() {
|
61 |
+
$user_email = filter_var( $_POST['user_email'], FILTER_SANITIZE_STRING );
|
62 |
+
$user_id = md5( $user_email );
|
63 |
+
$list_id = filter_var( $_POST['list_id'], FILTER_SANITIZE_STRING );
|
64 |
+
$form_id = filter_var( $_POST['form_id'], FILTER_SANITIZE_NUMBER_INT );
|
65 |
+
$page_id = filter_var( $_POST['page_id'], FILTER_SANITIZE_NUMBER_INT );
|
66 |
+
$full_site_url = get_bloginfo( 'url' );
|
67 |
+
$manager = yikes_get_mc_api_manager();
|
68 |
|
69 |
// Possibly handle errors.
|
70 |
$errors = array();
|
71 |
$is_error = false;
|
72 |
|
73 |
+
// List details API call.
|
74 |
$list_details = $manager->get_list_handler()->get_list( $list_id );
|
75 |
if ( is_wp_error( $list_details ) ) {
|
76 |
$error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
|
77 |
$error_logging->maybe_write_to_log( $list_details->get_error_code(),
|
78 |
+
__( 'Send Update Profile Email - Get Account Lists', 'yikes-inc-easy-mailchimp-extender' ),
|
79 |
+
'class.public_ajax.php'
|
80 |
);
|
81 |
$is_error = true;
|
82 |
$errors[] = $list_details->get_error_message();
|
83 |
}
|
84 |
|
85 |
+
// Subscriber details API call.
|
86 |
$subscriber_account_details = $manager->get_list_handler()->get_member( $list_id, $user_id );
|
87 |
if ( is_wp_error( $subscriber_account_details ) ) {
|
88 |
$error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
|
89 |
+
$error_logging->maybe_write_to_log( $subscriber_account_details->get_error_code(), __( 'Send Update Profile Email - Get Member Info.', 'yikes-inc-easy-mailchimp-extender' ), 'class.public_ajax.php' );
|
90 |
$is_error = true;
|
91 |
$errors[] = $subscriber_account_details->get_error_message();
|
92 |
}
|
93 |
|
94 |
+
// Form details API call.
|
95 |
$interface = yikes_easy_mailchimp_extender_get_form_interface();
|
96 |
+
if ( ! empty( $interface ) && method_exists( $interface, 'get_form' ) && ! empty( $form_id ) ) {
|
97 |
$form_data = $interface->get_form( $form_id );
|
98 |
if ( ! empty( $form_data ) ) {
|
99 |
if ( isset( $form_data['error_messages'] ) ) {
|
117 |
}
|
118 |
}
|
119 |
|
120 |
+
// Check for errors in any of the calls.
|
121 |
if ( $is_error ) {
|
122 |
$error_message = '<br>' . join( '<br>', $errors );
|
123 |
+
/* translators: the placeholder is a string of errors returned from MailChimp. */
|
124 |
+
$error_message = sprintf( __( 'Error sending update profile email. <strong>Error(s): %s</strong>. Please contact the site administrator.', 'yikes-inc-easy-mailchimp-extender' ), $error_message );
|
125 |
wp_send_json_error(
|
126 |
array(
|
127 |
+
'response_text' => '<div class="yikes-easy-mc-error-message">✕ ' . $error_message . '</div>',
|
128 |
)
|
129 |
);
|
130 |
|
131 |
return;
|
132 |
}
|
133 |
|
134 |
+
// Construct the headers & email message content.
|
135 |
+
$subscriber_id = $subscriber_account_details['unique_email_id'];
|
136 |
$update_link_href = str_replace( '/subscribe', '/profile', $list_details['subscribe_url_long'] );
|
137 |
$update_link_href = add_query_arg( 'e', $subscriber_id, $update_link_href );
|
138 |
$update_link_tag = '<a href="' . $update_link_href . '">';
|
139 |
$headers = 'From: ' . $list_details['campaign_defaults']['from_name'] . ' <' . $list_details['campaign_defaults']['from_email'] . '>' . "\r\n";
|
140 |
+
$headers .= 'Content-type: text/html';
|
141 |
|
142 |
if ( ! isset( $email_subject ) ) {
|
143 |
$email_subject = __( 'MailChimp Profile Update', 'yikes-inc-easy-mailchimp-extender' );
|
144 |
}
|
145 |
+
|
146 |
+
// Check if the email_body was set.
|
147 |
if ( ! isset( $email_body ) || empty( $email_body ) ) {
|
148 |
|
149 |
+
// The email_body should always be set, but we've made this function static just in case so we can grab our default.
|
150 |
$email_body = Yikes_Inc_Easy_Mailchimp_Forms_Admin::generate_default_email_body();
|
151 |
}
|
152 |
|
153 |
if ( ! isset( $update_email_success_message ) ) {
|
154 |
+
/* translators: the placeholder is a unicode checkmark */
|
155 |
$update_email_success_message = sprintf( __( '%s Update email successfully sent. Please check your inbox for the message.', 'yikes-inc-easy-mailchimp-extender' ), '✔' );
|
156 |
}
|
157 |
|
158 |
if ( ! isset( $update_email_failed_message ) ) {
|
159 |
+
/* translators: the placeholder is a unicode X */
|
160 |
$update_email_failed_message = sprintf( __( '%s Email failed to send. Please contact the site administrator.', 'yikes-inc-easy-mailchimp-extender' ), '✕' );
|
161 |
}
|
162 |
|
163 |
+
/* Run our replacement strings for the email body. */
|
164 |
|
165 |
+
// We let the user use [link] text [/link] for the update profile link so replace [link] with the <a> tag.
|
|
|
166 |
$email_body = str_replace( '[link]', $update_link_tag, $email_body );
|
167 |
|
168 |
+
// And replace [/link] with the closing </a> tag.
|
169 |
$email_body = str_replace( '[/link]', '</a>', $email_body );
|
170 |
|
171 |
+
// We let the user use [url] for their website so replace [url] with get_home_url().
|
|
|
172 |
$email_body = str_replace( '[url]', get_home_url(), $email_body );
|
173 |
|
174 |
+
// We let the user use [email] for the subscriber's email so replace [email] with the subscriber's email.
|
175 |
+
$email_body = str_replace( '[email]', $user_email, $email_body );
|
176 |
+
|
177 |
+
// We let the user use [subscriber_id] for the subscriber's unique email ID so replace [subscriber_id] with the subscriber's unique email ID.
|
178 |
+
$email_body = str_replace( '[subscriber_id]', $subscriber_id, $email_body );
|
179 |
+
|
180 |
+
// We let the user use [form_name] for the form's name so replace [form_name] with the form's name.
|
181 |
+
$email_body = str_replace( '[form_name]', $form_data['form_name'], $email_body );
|
182 |
+
|
183 |
/* Confirm that the email was sent */
|
184 |
if ( wp_mail( $user_email, apply_filters( 'yikes-mailchimp-update-email-subject', $email_subject ), apply_filters( 'yikes-mailchimp-update-email-content', $email_body, $update_link_href ), $headers ) ) {
|
185 |
|
public/partials/shortcodes/process_form_shortcode.php
CHANGED
@@ -244,6 +244,7 @@ function process_mailchimp_shortcode( $atts ) {
|
|
244 |
$custom_inline_styles = apply_filters( 'yikes-mailchimp-custom-inline-styles', '', $form_id );
|
245 |
$float_style = apply_filters( 'yikes-mailchimp-inline-float', ! $inline_form_override ? 'left' : 'none', $form_id );
|
246 |
$mobile_width = $field_width - $inline_offset;
|
|
|
247 |
|
248 |
/*
|
249 |
* Add inline styles after calculating the percentage etc.
|
@@ -257,7 +258,8 @@ function process_mailchimp_shortcode( $atts ) {
|
|
257 |
{$custom_inline_styles}
|
258 |
}
|
259 |
|
260 |
-
|
|
|
261 |
.yikes-easy-mc-form label.label-inline {
|
262 |
width: {$mobile_width}%;
|
263 |
padding-right: {$inline_padding_right};
|
@@ -269,7 +271,14 @@ function process_mailchimp_shortcode( $atts ) {
|
|
269 |
.yikes-easy-mc-form .submit-button-inline-label .empty-label {
|
270 |
display: none;
|
271 |
}
|
272 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
273 |
";
|
274 |
wp_add_inline_style( 'yikes-inc-easy-mailchimp-public-styles', $inline_label_css );
|
275 |
}
|
@@ -375,8 +384,8 @@ function process_mailchimp_shortcode( $atts ) {
|
|
375 |
) );
|
376 |
}
|
377 |
|
378 |
-
// Generic JavaScript functions for interacting with the form
|
379 |
-
wp_enqueue_script( 'form-submission-helpers', YIKES_MC_URL . "public/js/form-submission-helpers{$min}.js"
|
380 |
wp_localize_script( 'form-submission-helpers', 'form_submission_helpers', array(
|
381 |
'ajax_url' => esc_url( admin_url( 'admin-ajax.php' ) ),
|
382 |
'preloader_url' => apply_filters( 'yikes-mailchimp-preloader', esc_url_raw( admin_url( 'images/wpspin_light.gif' ) ) ),
|
@@ -867,7 +876,7 @@ function process_mailchimp_shortcode( $atts ) {
|
|
867 |
$datepicker_options = apply_filters( 'yikes-mailchimp-datepicker-options', $datepicker_options, $form_id );
|
868 |
|
869 |
// Enqueue our custom datepicker support scripts and styles, and jQuery UI Style Sheet (these styles are not included in Core)
|
870 |
-
wp_register_script( 'yikes-datepicker-scripts', YIKES_MC_URL .
|
871 |
wp_localize_script( 'yikes-datepicker-scripts', 'datepicker_settings', $datepicker_options );
|
872 |
wp_enqueue_script( 'yikes-datepicker-scripts' );
|
873 |
wp_enqueue_style( 'jquery-datepicker-styles' , YIKES_MC_URL . 'public/css/jquery-ui.min.css' );
|
@@ -1055,7 +1064,6 @@ function process_mailchimp_shortcode( $atts ) {
|
|
1055 |
$default_choice = isset( $field['default_choice'] ) ? $field['default_choice'] : '';
|
1056 |
$default_choice = is_array( $default_choice ) ? $default_choice : array( $default_choice );
|
1057 |
$default_choice = apply_filters( 'yikes-mailchimp-' . $field['group_id'] . '-default', $default_choice, $groups, $field, $form_id );
|
1058 |
-
|
1059 |
|
1060 |
$count = count( $groups );
|
1061 |
|
244 |
$custom_inline_styles = apply_filters( 'yikes-mailchimp-custom-inline-styles', '', $form_id );
|
245 |
$float_style = apply_filters( 'yikes-mailchimp-inline-float', ! $inline_form_override ? 'left' : 'none', $form_id );
|
246 |
$mobile_width = $field_width - $inline_offset;
|
247 |
+
$stack_forms_width = apply_filters( 'yikes_mailchimp_inline_stack_fields_width', '650px', $form_id );
|
248 |
|
249 |
/*
|
250 |
* Add inline styles after calculating the percentage etc.
|
258 |
{$custom_inline_styles}
|
259 |
}
|
260 |
|
261 |
+
/* Drop the submit button (100% width) below the fields */
|
262 |
+
@media ( max-width: 768px ) {
|
263 |
.yikes-easy-mc-form label.label-inline {
|
264 |
width: {$mobile_width}%;
|
265 |
padding-right: {$inline_padding_right};
|
271 |
.yikes-easy-mc-form .submit-button-inline-label .empty-label {
|
272 |
display: none;
|
273 |
}
|
274 |
+
}
|
275 |
+
|
276 |
+
/* Stack all fields @ 100% */
|
277 |
+
@media ( max-width: {$stack_forms_width} ) {
|
278 |
+
.yikes-easy-mc-form label.label-inline {
|
279 |
+
width: 100%;
|
280 |
+
}
|
281 |
+
}
|
282 |
";
|
283 |
wp_add_inline_style( 'yikes-inc-easy-mailchimp-public-styles', $inline_label_css );
|
284 |
}
|
384 |
) );
|
385 |
}
|
386 |
|
387 |
+
// Generic JavaScript functions for interacting with the form.
|
388 |
+
wp_enqueue_script( 'form-submission-helpers', YIKES_MC_URL . "public/js/form-submission-helpers{$min}.js", array( 'jquery' ), YIKES_MC_VERSION, false );
|
389 |
wp_localize_script( 'form-submission-helpers', 'form_submission_helpers', array(
|
390 |
'ajax_url' => esc_url( admin_url( 'admin-ajax.php' ) ),
|
391 |
'preloader_url' => apply_filters( 'yikes-mailchimp-preloader', esc_url_raw( admin_url( 'images/wpspin_light.gif' ) ) ),
|
876 |
$datepicker_options = apply_filters( 'yikes-mailchimp-datepicker-options', $datepicker_options, $form_id );
|
877 |
|
878 |
// Enqueue our custom datepicker support scripts and styles, and jQuery UI Style Sheet (these styles are not included in Core)
|
879 |
+
wp_register_script( 'yikes-datepicker-scripts', YIKES_MC_URL . "public/js/yikes-datepicker-scripts{$min}.js", array( 'jquery-ui-datepicker' ), YIKES_MC_VERSION, false );
|
880 |
wp_localize_script( 'yikes-datepicker-scripts', 'datepicker_settings', $datepicker_options );
|
881 |
wp_enqueue_script( 'yikes-datepicker-scripts' );
|
882 |
wp_enqueue_style( 'jquery-datepicker-styles' , YIKES_MC_URL . 'public/css/jquery-ui.min.css' );
|
1064 |
$default_choice = isset( $field['default_choice'] ) ? $field['default_choice'] : '';
|
1065 |
$default_choice = is_array( $default_choice ) ? $default_choice : array( $default_choice );
|
1066 |
$default_choice = apply_filters( 'yikes-mailchimp-' . $field['group_id'] . '-default', $default_choice, $groups, $field, $form_id );
|
|
|
1067 |
|
1068 |
$count = count( $groups );
|
1069 |
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: https://yikesplugins.com/?utm_source=wp_plugin_repo&utm_medium=dona
|
|
4 |
Tags: MailChimp, MailChimp forms, MailChimp lists, opt-in forms, sign up form, MailChimp, email, forms, mailing lists, marketing, newsletter, sign up
|
5 |
Requires at least: 4.0
|
6 |
Tested up to: 4.9.8
|
7 |
-
Stable tag: 6.4.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -171,8 +171,15 @@ For information and code examples on how to implement the hooks and filters prov
|
|
171 |
|
172 |
== Changelog ==
|
173 |
|
174 |
-
= 6.4.
|
175 |
-
*
|
176 |
-
*
|
177 |
-
*
|
178 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
Tags: MailChimp, MailChimp forms, MailChimp lists, opt-in forms, sign up form, MailChimp, email, forms, mailing lists, marketing, newsletter, sign up
|
5 |
Requires at least: 4.0
|
6 |
Tested up to: 4.9.8
|
7 |
+
Stable tag: 6.4.8
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
171 |
|
172 |
== Changelog ==
|
173 |
|
174 |
+
= 6.4.8 - October 29th, 2018 =
|
175 |
+
* Fixed a plugin conflict between Easy Forms and Contact Form 7 when exporting forms.
|
176 |
+
* Fixed an issue with the bbPress integration where users were being subscribed regardless of checking the box.
|
177 |
+
* Fixed an issue with datepickers conflicting when the same form (with date pickers) is on the same page twice.
|
178 |
+
* Inline forms will now stack when the screen size is less than 650px.
|
179 |
+
* Cleaned/Standardized/Code Sniffed the checkbox integration classes.
|
180 |
+
* Removed checkbox integration CSS file.
|
181 |
+
* Moved the WooCommerce integration checkbox's placement on the checkout page (it now uses the filter `woocommerce_review_order_before_submit` instead of `woocommerce_checkout_after_order_review`).
|
182 |
+
* Added/Fixed several filters: `yikes_mailchimp_checkbox_integration_checkbox_html`, `yikes-mailchimp-filter-before-submission-$form_id`, `yikes-mailchimp-redirection`, `yikes-mailchimp-redirect-new-window`, `yikes_mailchimp_inline_stack_fields_width`, `yikes_mailchimp_checkbox_integration_checkbox_label`
|
183 |
+
* Removed "Vote that the plugin works" callout.
|
184 |
+
* Fixed & reorganized MailChimp Gutenberg block.
|
185 |
+
* Added new tags for the update profile email: `[email]`, `[subscriber_id]`, and `[form_name]`.
|
yikes-inc-easy-mailchimp-extender.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: Easy Forms for MailChimp
|
4 |
* Plugin URI: https://yikesplugins.com/plugin/easy-forms-for-mailchimp/
|
5 |
* Description: The ultimate MailChimp WordPress plugin. Easily build <strong>unlimited forms for your MailChimp lists</strong>, add them to your site and track subscriber activity. To get started, go to the settings page and enter your <a href="https://yikesplugins.com/support/knowledge-base/finding-your-mailchimp-api-key/" target="_blank">MailChimp API key</a>.
|
6 |
-
* Version: 6.4.
|
7 |
* Author: YIKES, Inc.
|
8 |
* Author URI: https://www.yikesplugins.com/
|
9 |
* License: GPL-3.0+
|
@@ -43,7 +43,7 @@ if ( ! defined( 'WPINC' ) ) {
|
|
43 |
* @since 6.1.3
|
44 |
*/
|
45 |
if ( ! defined( 'YIKES_MC_VERSION' ) ) {
|
46 |
-
define( 'YIKES_MC_VERSION' , '6.4.
|
47 |
}
|
48 |
|
49 |
/**
|
3 |
* Plugin Name: Easy Forms for MailChimp
|
4 |
* Plugin URI: https://yikesplugins.com/plugin/easy-forms-for-mailchimp/
|
5 |
* Description: The ultimate MailChimp WordPress plugin. Easily build <strong>unlimited forms for your MailChimp lists</strong>, add them to your site and track subscriber activity. To get started, go to the settings page and enter your <a href="https://yikesplugins.com/support/knowledge-base/finding-your-mailchimp-api-key/" target="_blank">MailChimp API key</a>.
|
6 |
+
* Version: 6.4.8
|
7 |
* Author: YIKES, Inc.
|
8 |
* Author URI: https://www.yikesplugins.com/
|
9 |
* License: GPL-3.0+
|
43 |
* @since 6.1.3
|
44 |
*/
|
45 |
if ( ! defined( 'YIKES_MC_VERSION' ) ) {
|
46 |
+
define( 'YIKES_MC_VERSION' , '6.4.8' );
|
47 |
}
|
48 |
|
49 |
/**
|