Version Description
- July, 1, 2020 =
- Adding support for Google Recaptcha Version 3.
Download this release
Release Info
| Developer | fmixell |
| Plugin | |
| Version | 6.7.0 |
| Comparing to | |
| See all releases | |
Code changes from version 6.6.3 to 6.7.0
- .scrutinizer.yml +115 -0
- .travis.yml +65 -0
- admin/class-yikes-inc-easy-mailchimp-extender-admin.php +28 -2
- admin/partials/menu/options-sections/recaptcha-settings.php +15 -2
- blocks/components/api.js +51 -0
- blocks/components/class.MailChimpForms.js +871 -0
- blocks/components/constants.js +390 -0
- blocks/components/enable-submit-button-editing.js +17 -0
- blocks/components/slugify.js +19 -0
- blocks/easy-forms-block/dev-easy-forms-block.js +219 -0
- blocks/easy-forms-block/easy-forms-block.js +4718 -0
- blocks/easy-forms-block/easy-forms-block.js.map +1 -0
- blocks/easy-forms-block/easy-forms-block.scss +11 -0
- blocks/index.js +1 -0
- includes/api/class-yikes-inc-easy-mailchimp-api.php +1 -0
- includes/images/{MailChimp_Assets → Mailchimp_Assets}/Freddie_60px.png +0 -0
- includes/images/{MailChimp_Assets → Mailchimp_Assets}/Freddie_original.png +0 -0
- includes/images/{MailChimp_Assets → Mailchimp_Assets}/Freddie_wink_icon.png +0 -0
- includes/images/{MailChimp_Assets → Mailchimp_Assets}/mailchimp-logo.png +0 -0
- includes/images/{MailChimp_Assets → Mailchimp_Assets}/yikes-mailchimp-welcome-logo.png +0 -0
- public/classes/process/class.process_form_submission_handler.php +15 -2
- public/js/yikes-mc-ajax-forms.js +253 -120
- public/js/yikes-mc-ajax-forms.min.js +1 -1
- public/js/yikes-recaptcha-v3.js +12 -0
- public/partials/shortcodes/process/process_form_submission_ajax.php +4 -0
- public/partials/shortcodes/process_form_shortcode.php +52 -3
- readme.txt +7 -1
- yikes-inc-easy-mailchimp-extender.php +2 -2
.scrutinizer.yml
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
tools:
|
| 2 |
+
php_sim: true
|
| 3 |
+
php_pdepend: true
|
| 4 |
+
php_analyzer: true
|
| 5 |
+
php_code_sniffer:
|
| 6 |
+
config:
|
| 7 |
+
standard: "WordPress" # Other Values: PSR2, PEAR, Zend, WordPress, Drupal, TYPO3CMS
|
| 8 |
+
external_code_coverage:
|
| 9 |
+
timeout: 900 # Timeout in seconds (15 mins for slow/throttled reports).
|
| 10 |
+
|
| 11 |
+
filter:
|
| 12 |
+
excluded_paths: [tests/*, bin/*, includes/error_log/yikes-easy-mailchimp-error-log.php, includes/images/* ]
|
| 13 |
+
|
| 14 |
+
checks:
|
| 15 |
+
php:
|
| 16 |
+
code_rating: true
|
| 17 |
+
duplication: true
|
| 18 |
+
|
| 19 |
+
coding_style:
|
| 20 |
+
php:
|
| 21 |
+
indentation:
|
| 22 |
+
general:
|
| 23 |
+
use_tabs: true
|
| 24 |
+
size: 3
|
| 25 |
+
switch:
|
| 26 |
+
indent_case: true
|
| 27 |
+
spaces:
|
| 28 |
+
before_parentheses:
|
| 29 |
+
function_declaration: false
|
| 30 |
+
closure_definition: false
|
| 31 |
+
function_call: false
|
| 32 |
+
if: true
|
| 33 |
+
for: true
|
| 34 |
+
while: true
|
| 35 |
+
switch: true
|
| 36 |
+
catch: true
|
| 37 |
+
array_initializer: false
|
| 38 |
+
around_operators:
|
| 39 |
+
assignment: true
|
| 40 |
+
logical: true
|
| 41 |
+
equality: true
|
| 42 |
+
relational: true
|
| 43 |
+
bitwise: true
|
| 44 |
+
additive: true
|
| 45 |
+
multiplicative: true
|
| 46 |
+
shift: true
|
| 47 |
+
unary_additive: false
|
| 48 |
+
concatenation: true
|
| 49 |
+
negation: true
|
| 50 |
+
before_left_brace:
|
| 51 |
+
class: true
|
| 52 |
+
function: true
|
| 53 |
+
if: true
|
| 54 |
+
else: true
|
| 55 |
+
for: true
|
| 56 |
+
while: true
|
| 57 |
+
do: true
|
| 58 |
+
switch: true
|
| 59 |
+
try: true
|
| 60 |
+
catch: true
|
| 61 |
+
finally: true
|
| 62 |
+
before_keywords:
|
| 63 |
+
else: true
|
| 64 |
+
while: true
|
| 65 |
+
catch: true
|
| 66 |
+
finally: true
|
| 67 |
+
within:
|
| 68 |
+
brackets: true
|
| 69 |
+
array_initializer: true
|
| 70 |
+
grouping: true
|
| 71 |
+
function_call: true
|
| 72 |
+
function_declaration: true
|
| 73 |
+
if: true
|
| 74 |
+
for: true
|
| 75 |
+
while: true
|
| 76 |
+
switch: true
|
| 77 |
+
catch: true
|
| 78 |
+
type_cast: false
|
| 79 |
+
ternary_operator:
|
| 80 |
+
before_condition: true
|
| 81 |
+
after_condition: true
|
| 82 |
+
before_alternative: true
|
| 83 |
+
after_alternative: true
|
| 84 |
+
in_short_version: true
|
| 85 |
+
other:
|
| 86 |
+
before_comma: false
|
| 87 |
+
after_comma: true
|
| 88 |
+
before_semicolon: false
|
| 89 |
+
after_semicolon: true
|
| 90 |
+
after_type_cast: true
|
| 91 |
+
braces:
|
| 92 |
+
classes_functions:
|
| 93 |
+
class: end-of-line
|
| 94 |
+
function: end-of-line
|
| 95 |
+
closure: end-of-line
|
| 96 |
+
if:
|
| 97 |
+
opening: end-of-line
|
| 98 |
+
always: true
|
| 99 |
+
else_on_new_line: false
|
| 100 |
+
for:
|
| 101 |
+
opening: end-of-line
|
| 102 |
+
always: true
|
| 103 |
+
while:
|
| 104 |
+
opening: end-of-line
|
| 105 |
+
always: true
|
| 106 |
+
do_while:
|
| 107 |
+
opening: end-of-line
|
| 108 |
+
always: true
|
| 109 |
+
while_on_new_line: false
|
| 110 |
+
switch:
|
| 111 |
+
opening: end-of-line
|
| 112 |
+
try:
|
| 113 |
+
opening: end-of-line
|
| 114 |
+
catch_on_new_line: false
|
| 115 |
+
finally_on_new_line: false
|
.travis.yml
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
language: php
|
| 2 |
+
|
| 3 |
+
sudo: false
|
| 4 |
+
|
| 5 |
+
php:
|
| 6 |
+
- 5.4
|
| 7 |
+
- 5.5
|
| 8 |
+
- 5.6
|
| 9 |
+
- 7.0
|
| 10 |
+
# https://hhvm.com/blog/2018/09/12/end-of-php-support-future-of-hack.html
|
| 11 |
+
#- hhvm
|
| 12 |
+
|
| 13 |
+
env:
|
| 14 |
+
- WP_VERSION=latest WP_MULTISITE=0
|
| 15 |
+
- WP_VERSION=4.9 WP_MULTISITE=0
|
| 16 |
+
- WP_VERSION=4.6 WP_MULTISITE=0
|
| 17 |
+
- WP_VERSION=4.3 WP_MULTISITE=0
|
| 18 |
+
- WP_VERSION=4.0 WP_MULTISITE=0
|
| 19 |
+
|
| 20 |
+
matrix:
|
| 21 |
+
include:
|
| 22 |
+
- php: 5.3
|
| 23 |
+
dist: precise
|
| 24 |
+
env: WP_VERSION=4.9 WP_MULTISITE=0
|
| 25 |
+
- php: 5.4
|
| 26 |
+
env: WP_VERSION=latest WP_MULTISITE=1
|
| 27 |
+
exclude:
|
| 28 |
+
# https://github.com/WordPress/wordpress-develop/commit/ce8a915c06c42ef4e65e26ce39c20e5029e80293
|
| 29 |
+
- php: 7.0
|
| 30 |
+
env: WP_VERSION=4.6 WP_MULTISITE=0
|
| 31 |
+
- php: 7.0
|
| 32 |
+
env: WP_VERSION=4.3 WP_MULTISITE=0
|
| 33 |
+
- php: 7.0
|
| 34 |
+
env: WP_VERSION=4.0 WP_MULTISITE=0
|
| 35 |
+
|
| 36 |
+
before_script:
|
| 37 |
+
- |
|
| 38 |
+
phpunit --version
|
| 39 |
+
- |
|
| 40 |
+
bash bin/install-wp-tests.sh wordpress_test root '' localhost "$WP_VERSION"
|
| 41 |
+
|
| 42 |
+
script:
|
| 43 |
+
- |
|
| 44 |
+
if [[ "$TRAVIS_PHP_VERSION" == 5.5 && "$WP_VERSION" == latest && "$WP_MULTISITE" == 0 ]]; then
|
| 45 |
+
phpunit --coverage-clover=coverage.clover
|
| 46 |
+
else
|
| 47 |
+
phpunit
|
| 48 |
+
fi
|
| 49 |
+
|
| 50 |
+
after_script:
|
| 51 |
+
- |
|
| 52 |
+
if [[ "$TRAVIS_PHP_VERSION" == 5.5 && "$WP_VERSION" == latest && "$WP_MULTISITE" == 0 ]]; then
|
| 53 |
+
wget "https://scrutinizer-ci.com/ocular.phar"
|
| 54 |
+
fi
|
| 55 |
+
- |
|
| 56 |
+
if [[ "$TRAVIS_PHP_VERSION" == 5.5 && "$WP_VERSION" == latest && "$WP_MULTISITE" == 0 ]]; then
|
| 57 |
+
php ocular.phar code-coverage:upload --format=php-clover coverage.clover
|
| 58 |
+
fi
|
| 59 |
+
|
| 60 |
+
notifications:
|
| 61 |
+
email:
|
| 62 |
+
on_success: change
|
| 63 |
+
on_failure: change
|
| 64 |
+
slack:
|
| 65 |
+
secure: Vl+EtMXcpx8JowBmLNrWhAyvebu/VF7hXVFX5BFMl/6vA5GBE6hnw3vI/TlB6PAso4Mv6yMVY4xUzzBYWow3ClwaTCYNlCTxQEUon2H7FIqGV3Wrir28zxGcSAX7VHGf3w6acHP7LnPIQrIctRjKqcbYVbjR36ha9gJgUU/OUeI=
|
admin/class-yikes-inc-easy-mailchimp-extender-admin.php
CHANGED
|
@@ -1084,6 +1084,11 @@ class Yikes_Inc_Easy_Mailchimp_Forms_Admin {
|
|
| 1084 |
register_setting( 'yikes_inc_easy_mc_recaptcha_settings_page', 'yikes-mc-recaptcha-site-key' );
|
| 1085 |
register_setting( 'yikes_inc_easy_mc_recaptcha_settings_page', 'yikes-mc-recaptcha-secret-key' );
|
| 1086 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1087 |
/* Register reCAPTCHA Settings Section */
|
| 1088 |
add_settings_section(
|
| 1089 |
'yikes_easy_mc_settings_recpatcha_section',
|
|
@@ -1094,14 +1099,14 @@ class Yikes_Inc_Easy_Mailchimp_Forms_Admin {
|
|
| 1094 |
|
| 1095 |
add_settings_field(
|
| 1096 |
'yikes-mc-recaptcha-site-key',
|
| 1097 |
-
__( 'Enter reCAPTCHA Site Key', 'yikes-inc-easy-mailchimp-extender' ),
|
| 1098 |
'', // callback + validation inside of admin/partials/menu/options.php
|
| 1099 |
'yikes_easy_mc_settings_recpatcha_section'
|
| 1100 |
);
|
| 1101 |
|
| 1102 |
add_settings_field(
|
| 1103 |
'yikes-mc-recaptcha-secret-key',
|
| 1104 |
-
__( 'Enter reCAPTCHA Secret Key', 'yikes-inc-easy-mailchimp-extender' ),
|
| 1105 |
'', // callback + validation inside of admin/partials/menu/options.php
|
| 1106 |
'yikes_easy_mc_settings_recpatcha_section'
|
| 1107 |
);
|
|
@@ -1113,6 +1118,27 @@ class Yikes_Inc_Easy_Mailchimp_Forms_Admin {
|
|
| 1113 |
'yikes_easy_mc_settings_recpatcha_section'
|
| 1114 |
);
|
| 1115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1116 |
/* End reCAPTCHA Settings */
|
| 1117 |
|
| 1118 |
/* Debug Settings */
|
| 1084 |
register_setting( 'yikes_inc_easy_mc_recaptcha_settings_page', 'yikes-mc-recaptcha-site-key' );
|
| 1085 |
register_setting( 'yikes_inc_easy_mc_recaptcha_settings_page', 'yikes-mc-recaptcha-secret-key' );
|
| 1086 |
|
| 1087 |
+
/* Version 3 Settings */
|
| 1088 |
+
register_setting( 'yikes_inc_easy_mc_recaptcha_settings_page', 'yikes-mc-recaptcha-site-key-three' );
|
| 1089 |
+
register_setting( 'yikes_inc_easy_mc_recaptcha_settings_page', 'yikes-mc-recaptcha-secret-key-three' );
|
| 1090 |
+
register_setting( 'yikes_inc_easy_mc_recaptcha_settings_page', 'yikes-mc-recaptcha-version-three' );
|
| 1091 |
+
|
| 1092 |
/* Register reCAPTCHA Settings Section */
|
| 1093 |
add_settings_section(
|
| 1094 |
'yikes_easy_mc_settings_recpatcha_section',
|
| 1099 |
|
| 1100 |
add_settings_field(
|
| 1101 |
'yikes-mc-recaptcha-site-key',
|
| 1102 |
+
__( 'Enter reCAPTCHA V2 Site Key', 'yikes-inc-easy-mailchimp-extender' ),
|
| 1103 |
'', // callback + validation inside of admin/partials/menu/options.php
|
| 1104 |
'yikes_easy_mc_settings_recpatcha_section'
|
| 1105 |
);
|
| 1106 |
|
| 1107 |
add_settings_field(
|
| 1108 |
'yikes-mc-recaptcha-secret-key',
|
| 1109 |
+
__( 'Enter reCAPTCHA V2 Secret Key', 'yikes-inc-easy-mailchimp-extender' ),
|
| 1110 |
'', // callback + validation inside of admin/partials/menu/options.php
|
| 1111 |
'yikes_easy_mc_settings_recpatcha_section'
|
| 1112 |
);
|
| 1118 |
'yikes_easy_mc_settings_recpatcha_section'
|
| 1119 |
);
|
| 1120 |
|
| 1121 |
+
add_settings_field(
|
| 1122 |
+
'yikes-mc-recaptcha-version-three',
|
| 1123 |
+
__( 'Enable Version 3', 'yikes-inc-easy-mailchimp-extender' ),
|
| 1124 |
+
'', // callback + validation inside of admin/partials/menu/options.php
|
| 1125 |
+
'yikes_easy_mc_settings_recpatcha_section'
|
| 1126 |
+
);
|
| 1127 |
+
|
| 1128 |
+
add_settings_field(
|
| 1129 |
+
'yikes-mc-recaptcha-site-key-three',
|
| 1130 |
+
__( 'Enter reCAPTCHA V3 Site Key', 'yikes-inc-easy-mailchimp-extender' ),
|
| 1131 |
+
'', // callback + validation inside of admin/partials/menu/options.php
|
| 1132 |
+
'yikes_easy_mc_settings_recpatcha_section'
|
| 1133 |
+
);
|
| 1134 |
+
|
| 1135 |
+
add_settings_field(
|
| 1136 |
+
'yikes-mc-recaptcha-secret-key-three',
|
| 1137 |
+
__( 'Enter reCAPTCHA V3 Secret Key', 'yikes-inc-easy-mailchimp-extender' ),
|
| 1138 |
+
'', // callback + validation inside of admin/partials/menu/options.php
|
| 1139 |
+
'yikes_easy_mc_settings_recpatcha_section'
|
| 1140 |
+
);
|
| 1141 |
+
|
| 1142 |
/* End reCAPTCHA Settings */
|
| 1143 |
|
| 1144 |
/* Debug Settings */
|
admin/partials/menu/options-sections/recaptcha-settings.php
CHANGED
|
@@ -28,19 +28,32 @@
|
|
| 28 |
|
| 29 |
<?php settings_fields( 'yikes_inc_easy_mc_recaptcha_settings_page' ); ?>
|
| 30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
<label for="yikes-mc-recaptcha-setting">
|
| 32 |
<input type="checkbox" id="yikes-mc-recaptcha-setting" name="yikes-mc-recaptcha-status" class="recaptcha-setting-checkbox" value="1" <?php checked( get_option( 'yikes-mc-recaptcha-status', '' ) , '1' ); ?>>
|
| 33 |
<strong><?php _e( 'Enable reCAPTCHA Protection', 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
|
| 34 |
</label>
|
| 35 |
|
| 36 |
-
<label for="yikes-mc-recaptcha-api-key"><strong><?php _e( 'reCAPTCHA Site Key', 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
|
| 37 |
<input type="text" class="widefat recaptcha-setting-checkbox" name="yikes-mc-recaptcha-site-key" value="<?php echo esc_attr( get_option( 'yikes-mc-recaptcha-site-key', '' ) ); ?>">
|
| 38 |
</label>
|
| 39 |
|
| 40 |
-
<label for="yikes-mc-recaptcha-private-api-key"><strong><?php _e( 'reCAPTCHA Secret Key', 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
|
| 41 |
<input type="text" class="widefat recaptcha-setting-checkbox" name="yikes-mc-recaptcha-secret-key" id="" value="<?php echo esc_attr( get_option( 'yikes-mc-recaptcha-secret-key', '' ) ); ?>">
|
| 42 |
</label>
|
| 43 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
<a href="#" onclick="jQuery(this).next().slideToggle();return false;" class="recaptcha-preview-link"><?php _e( 'View reCAPTCHA Preview', 'yikes-inc-easy-mailchimp-extender' ); ?></a>
|
| 45 |
<span class="recaptcha-preview-container">
|
| 46 |
<img src="<?php echo YIKES_MC_URL . 'includes/images/recaptcha/recaptcha-demo.gif'; ?>" alt="<?php _e( 'reCAPTCHA Preview', 'yikes-inc-easy-mailchimp-extender' ); ?>" class="recaptcha-demo-gif">
|
| 28 |
|
| 29 |
<?php settings_fields( 'yikes_inc_easy_mc_recaptcha_settings_page' ); ?>
|
| 30 |
|
| 31 |
+
<label for="yikes-mc-recaptcha-version-three">
|
| 32 |
+
<input type="checkbox" id="yikes-mc-recaptcha-version-three" name="yikes-mc-recaptcha-version-three" class="recaptcha-setting-checkbox" value="1" <?php checked( get_option( 'yikes-mc-recaptcha-version-three', '' ) , '1' ); ?>>
|
| 33 |
+
<strong><?php _e( 'Use reCAPTCHA Version 3', 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
|
| 34 |
+
</label>
|
| 35 |
+
|
| 36 |
<label for="yikes-mc-recaptcha-setting">
|
| 37 |
<input type="checkbox" id="yikes-mc-recaptcha-setting" name="yikes-mc-recaptcha-status" class="recaptcha-setting-checkbox" value="1" <?php checked( get_option( 'yikes-mc-recaptcha-status', '' ) , '1' ); ?>>
|
| 38 |
<strong><?php _e( 'Enable reCAPTCHA Protection', 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
|
| 39 |
</label>
|
| 40 |
|
| 41 |
+
<label for="yikes-mc-recaptcha-api-key"><strong><?php _e( 'reCAPTCHA V2 Site Key', 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
|
| 42 |
<input type="text" class="widefat recaptcha-setting-checkbox" name="yikes-mc-recaptcha-site-key" value="<?php echo esc_attr( get_option( 'yikes-mc-recaptcha-site-key', '' ) ); ?>">
|
| 43 |
</label>
|
| 44 |
|
| 45 |
+
<label for="yikes-mc-recaptcha-private-api-key"><strong><?php _e( 'reCAPTCHA V2 Secret Key', 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
|
| 46 |
<input type="text" class="widefat recaptcha-setting-checkbox" name="yikes-mc-recaptcha-secret-key" id="" value="<?php echo esc_attr( get_option( 'yikes-mc-recaptcha-secret-key', '' ) ); ?>">
|
| 47 |
</label>
|
| 48 |
|
| 49 |
+
<label for="yikes-mc-recaptcha-site-key-three"><strong><?php _e( 'reCAPTCHA V3 Site Key', 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
|
| 50 |
+
<input type="text" class="widefat recaptcha-setting-checkbox" name="yikes-mc-recaptcha-site-key-three" value="<?php echo esc_attr( get_option( 'yikes-mc-recaptcha-site-key-three', '' ) ); ?>">
|
| 51 |
+
</label>
|
| 52 |
+
|
| 53 |
+
<label for="yikes-mc-recaptcha-private-api-key-three"><strong><?php _e( 'reCAPTCHA V3 Secret Key', 'yikes-inc-easy-mailchimp-extender' ); ?></strong>
|
| 54 |
+
<input type="text" class="widefat recaptcha-setting-checkbox" name="yikes-mc-recaptcha-secret-key-three" id="" value="<?php echo esc_attr( get_option( 'yikes-mc-recaptcha-secret-key-three', '' ) ); ?>">
|
| 55 |
+
</label>
|
| 56 |
+
|
| 57 |
<a href="#" onclick="jQuery(this).next().slideToggle();return false;" class="recaptcha-preview-link"><?php _e( 'View reCAPTCHA Preview', 'yikes-inc-easy-mailchimp-extender' ); ?></a>
|
| 58 |
<span class="recaptcha-preview-container">
|
| 59 |
<img src="<?php echo YIKES_MC_URL . 'includes/images/recaptcha/recaptcha-demo.gif'; ?>" alt="<?php _e( 'reCAPTCHA Preview', 'yikes-inc-easy-mailchimp-extender' ); ?>" class="recaptcha-demo-gif">
|
blocks/components/api.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
export default class EasyFormsAPI {
|
| 2 |
+
|
| 3 |
+
constructor() {
|
| 4 |
+
this.ajaxurl = window.ajaxurl;
|
| 5 |
+
}
|
| 6 |
+
|
| 7 |
+
get_api_key_status() {
|
| 8 |
+
let data = {
|
| 9 |
+
action: 'yikes_get_api_key_status',
|
| 10 |
+
nonce: ez_forms_gb_data.get_api_key_status,
|
| 11 |
+
}
|
| 12 |
+
|
| 13 |
+
let status = $.post( this.ajaxurl, data );
|
| 14 |
+
|
| 15 |
+
return status;
|
| 16 |
+
}
|
| 17 |
+
|
| 18 |
+
get_recaptcha() {
|
| 19 |
+
let data = {
|
| 20 |
+
action: 'yikes_get_recaptcha',
|
| 21 |
+
nonce: ez_forms_gb_data.fetch_recaptcha_nonce
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
let recaptcha_data = $.post( this.ajaxurl, data );
|
| 25 |
+
|
| 26 |
+
return recaptcha_data;
|
| 27 |
+
}
|
| 28 |
+
|
| 29 |
+
get_forms() {
|
| 30 |
+
let data = {
|
| 31 |
+
action: 'yikes_get_forms',
|
| 32 |
+
nonce: ez_forms_gb_data.fetch_forms_nonce,
|
| 33 |
+
}
|
| 34 |
+
|
| 35 |
+
let forms = $.post( this.ajaxurl, data );
|
| 36 |
+
|
| 37 |
+
return forms;
|
| 38 |
+
}
|
| 39 |
+
|
| 40 |
+
get_form( form_id ) {
|
| 41 |
+
let data = {
|
| 42 |
+
action: 'yikes_get_form',
|
| 43 |
+
form_id: form_id,
|
| 44 |
+
nonce: ez_forms_gb_data.fetch_form_nonce
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
let form = $.post( this.ajaxurl, data );
|
| 48 |
+
|
| 49 |
+
return form;
|
| 50 |
+
}
|
| 51 |
+
}
|
blocks/components/class.MailChimpForms.js
ADDED
|
@@ -0,0 +1,871 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Import dependencies
|
| 2 |
+
import slugify from './slugify.js';
|
| 3 |
+
import constants from './constants.js';
|
| 4 |
+
import EasyFormsAPI from './api.js';
|
| 5 |
+
|
| 6 |
+
// Get functions / blocks / components
|
| 7 |
+
const Recaptcha = require( 'react-recaptcha' );
|
| 8 |
+
const { __ } = wp.i18n;
|
| 9 |
+
const { registerBlockType } = wp.blocks;
|
| 10 |
+
const { RichText, InspectorControls, PlainText } = wp.editor;
|
| 11 |
+
const { Spinner, TextControl, PanelBody, PanelRow, FormToggle, SelectControl } = wp.components;
|
| 12 |
+
const { Component } = wp.element;
|
| 13 |
+
|
| 14 |
+
export default class MailchimpForms extends Component {
|
| 15 |
+
constructor( props ) {
|
| 16 |
+
super( ...arguments );
|
| 17 |
+
this.state = {
|
| 18 |
+
api_key_status: 'valid',
|
| 19 |
+
forms : [],
|
| 20 |
+
recaptcha_data: {
|
| 21 |
+
data : {},
|
| 22 |
+
success: false
|
| 23 |
+
},
|
| 24 |
+
'forms_loaded': false
|
| 25 |
+
}
|
| 26 |
+
|
| 27 |
+
this.api = new EasyFormsAPI();
|
| 28 |
+
|
| 29 |
+
this.address_fields = {
|
| 30 |
+
'addr1' : 'Address 1',
|
| 31 |
+
'addr2' : 'Address 2',
|
| 32 |
+
'city' : 'City',
|
| 33 |
+
'state' : 'State',
|
| 34 |
+
'zip' : 'Zip',
|
| 35 |
+
'country': 'Country'
|
| 36 |
+
}
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
/**
|
| 40 |
+
* Run our API calls after the component has mounted. You can't use setState before a component is mounted.
|
| 41 |
+
*/
|
| 42 |
+
componentDidMount() {
|
| 43 |
+
this.api.get_api_key_status().then( status => {
|
| 44 |
+
this.setState( { api_key_status: status.data } );
|
| 45 |
+
});
|
| 46 |
+
|
| 47 |
+
this.api.get_forms().then( forms => {
|
| 48 |
+
this.setState( { forms: forms.data, forms_loaded: true } );
|
| 49 |
+
});
|
| 50 |
+
|
| 51 |
+
this.api.get_recaptcha().then( recaptcha_data => {
|
| 52 |
+
this.setState( { recaptcha_data: recaptcha_data } );
|
| 53 |
+
this.props.toggleRecaptchaAbstract( this.state.recaptcha_data.success );
|
| 54 |
+
});
|
| 55 |
+
}
|
| 56 |
+
|
| 57 |
+
handleFormFieldChanges( event ) {
|
| 58 |
+
// console.log( event );
|
| 59 |
+
|
| 60 |
+
// console.log( value );
|
| 61 |
+
// console.log( this );
|
| 62 |
+
// console.log( typeof this.setState );
|
| 63 |
+
|
| 64 |
+
// const target = event.target;
|
| 65 |
+
// const value = target.type === 'checkbox' ? target.checked : target.value;
|
| 66 |
+
// const name = target.name;
|
| 67 |
+
|
| 68 |
+
// return this.setState( { [name]: value } );
|
| 69 |
+
}
|
| 70 |
+
|
| 71 |
+
inspector_controls() {
|
| 72 |
+
|
| 73 |
+
const inline = (
|
| 74 |
+
<PanelRow>
|
| 75 |
+
<label
|
| 76 |
+
htmlFor="inline-form-toggle"
|
| 77 |
+
className="blocks-base-control__label"
|
| 78 |
+
>
|
| 79 |
+
{ __( 'Inline' ) }
|
| 80 |
+
</label>
|
| 81 |
+
<FormToggle
|
| 82 |
+
id="inline-form-toggle"
|
| 83 |
+
label={ __( 'Inline' ) }
|
| 84 |
+
checked={ !! this.props.inline }
|
| 85 |
+
onChange={ this.props.toggleInline }
|
| 86 |
+
/>
|
| 87 |
+
</PanelRow>
|
| 88 |
+
)
|
| 89 |
+
|
| 90 |
+
const show_form_title = (
|
| 91 |
+
<PanelRow>
|
| 92 |
+
<label
|
| 93 |
+
htmlFor="show-title-form-toggle"
|
| 94 |
+
className="blocks-base-control__label"
|
| 95 |
+
>
|
| 96 |
+
{ __( 'Show Form Title' ) }
|
| 97 |
+
</label>
|
| 98 |
+
<FormToggle
|
| 99 |
+
id="show-title-form-toggle"
|
| 100 |
+
label={ __( 'Show Form Title' ) }
|
| 101 |
+
checked={ !! this.props.showTitle }
|
| 102 |
+
onChange={ this.props.toggleShowTitle }
|
| 103 |
+
/>
|
| 104 |
+
</PanelRow>
|
| 105 |
+
)
|
| 106 |
+
|
| 107 |
+
const show_form_description = (
|
| 108 |
+
<PanelRow>
|
| 109 |
+
<label
|
| 110 |
+
htmlFor="show-description-form-toggle"
|
| 111 |
+
className="blocks-base-control__label"
|
| 112 |
+
>
|
| 113 |
+
{ __( 'Show Form Description' ) }
|
| 114 |
+
</label>
|
| 115 |
+
<FormToggle
|
| 116 |
+
id="show-description-form-toggle"
|
| 117 |
+
label={ __( 'Show Form Description' ) }
|
| 118 |
+
checked={ !! this.props.showDescription }
|
| 119 |
+
onChange={ this.props.toggleShowDescription }
|
| 120 |
+
/>
|
| 121 |
+
</PanelRow>
|
| 122 |
+
)
|
| 123 |
+
|
| 124 |
+
const is_ajax = (
|
| 125 |
+
<PanelRow>
|
| 126 |
+
<label
|
| 127 |
+
htmlFor="is-ajax-form-toggle"
|
| 128 |
+
className="blocks-base-control__label"
|
| 129 |
+
>
|
| 130 |
+
{ __( 'AJAX Submissions' ) }
|
| 131 |
+
</label>
|
| 132 |
+
<FormToggle
|
| 133 |
+
id="is-ajax-form-toggle"
|
| 134 |
+
label={ __( 'AJAX' ) }
|
| 135 |
+
checked={ !! this.props.isAjax }
|
| 136 |
+
onChange={ this.props.toggleIsAjax }
|
| 137 |
+
/>
|
| 138 |
+
</PanelRow>
|
| 139 |
+
)
|
| 140 |
+
|
| 141 |
+
const recaptcha = (
|
| 142 |
+
<PanelRow>
|
| 143 |
+
<label
|
| 144 |
+
htmlFor="recaptcha-form-toggle"
|
| 145 |
+
className="blocks-base-control__label"
|
| 146 |
+
>
|
| 147 |
+
{ __( 'reCAPTCHA' ) }
|
| 148 |
+
</label>
|
| 149 |
+
<FormToggle
|
| 150 |
+
id="recaptcha-form-toggle"
|
| 151 |
+
label={ __( 'reCAPTCHA' ) }
|
| 152 |
+
checked={ !! this.props.recaptcha }
|
| 153 |
+
onChange={ this.props.toggleRecaptcha }
|
| 154 |
+
/>
|
| 155 |
+
</PanelRow>
|
| 156 |
+
)
|
| 157 |
+
|
| 158 |
+
const recaptcha_type = !! this.props.recaptcha ?
|
| 159 |
+
(
|
| 160 |
+
<PanelRow>
|
| 161 |
+
<label
|
| 162 |
+
htmlFor="recaptcha-type-form-toggle"
|
| 163 |
+
className="blocks-base-control__label"
|
| 164 |
+
>
|
| 165 |
+
{ __( 'reCAPTCHA Type' ) }
|
| 166 |
+
</label>
|
| 167 |
+
<SelectControl
|
| 168 |
+
value={ this.props.recaptchaType }
|
| 169 |
+
options={ [ { value: 'image', label: 'Image' }, { value: 'audio', 'label': 'Audio' } ] }
|
| 170 |
+
onChange={ this.props.toggleRecaptchaType }
|
| 171 |
+
/>
|
| 172 |
+
</PanelRow>
|
| 173 |
+
)
|
| 174 |
+
: '';
|
| 175 |
+
|
| 176 |
+
const recaptcha_theme = !! this.props.recaptcha ?
|
| 177 |
+
(
|
| 178 |
+
<PanelRow>
|
| 179 |
+
<label
|
| 180 |
+
htmlFor="recaptcha-theme-form-toggle"
|
| 181 |
+
className="blocks-base-control__label"
|
| 182 |
+
>
|
| 183 |
+
{ __( 'reCAPTCHA Theme' ) }
|
| 184 |
+
</label>
|
| 185 |
+
<SelectControl
|
| 186 |
+
value={ this.props.recaptchaTheme }
|
| 187 |
+
options={ [ { value: 'light', label: 'Light' }, {value: 'dark', 'label': 'Dark' } ] }
|
| 188 |
+
onChange={ this.props.toggleRecaptchaTheme }
|
| 189 |
+
/>
|
| 190 |
+
</PanelRow>
|
| 191 |
+
)
|
| 192 |
+
: '';
|
| 193 |
+
|
| 194 |
+
const recaptcha_lang = !! this.props.recaptcha ?
|
| 195 |
+
(
|
| 196 |
+
<PanelRow>
|
| 197 |
+
<label
|
| 198 |
+
htmlFor="recaptcha-language-form-toggle"
|
| 199 |
+
className="blocks-base-control__label"
|
| 200 |
+
title={ this.state.recaptcha_data.data ? 'The default language for your locale is ' + constants.locales[ this.state.recaptcha_data.data.locale ] : '' }
|
| 201 |
+
>
|
| 202 |
+
{ __( 'reCAPTCHA Language' ) }
|
| 203 |
+
</label>
|
| 204 |
+
<SelectControl
|
| 205 |
+
id="recaptcha-language-form-toggle"
|
| 206 |
+
value={ this.props.recaptchaLang.length > 0 ? this.props.recaptchaLang : ( this.state.recaptcha_data.data ? this.state.recaptcha_data.data.locale : '' ) }
|
| 207 |
+
onChange={ this.props.toggleRecaptchaLang }
|
| 208 |
+
title={ this.state.recaptcha_data.data ? 'The default language for your locale is ' + constants.locales[ this.state.recaptcha_data.data.locale ] : '' }
|
| 209 |
+
options={ Object.keys( constants.locales ).map( ( key ) => { return { value: key, label: constants.locales[key] } }) }
|
| 210 |
+
/>
|
| 211 |
+
</PanelRow>
|
| 212 |
+
)
|
| 213 |
+
: '';
|
| 214 |
+
|
| 215 |
+
const recaptcha_size = !! this.props.recaptcha ?
|
| 216 |
+
(
|
| 217 |
+
<PanelRow>
|
| 218 |
+
<label
|
| 219 |
+
htmlFor="recaptcha-size-form-toggle"
|
| 220 |
+
className="blocks-base-control__label"
|
| 221 |
+
>
|
| 222 |
+
{ __( 'reCAPTCHA Size' ) }
|
| 223 |
+
</label>
|
| 224 |
+
<SelectControl
|
| 225 |
+
id="recaptcha-size-form-toggle"
|
| 226 |
+
value={ this.props.recaptchaSize }
|
| 227 |
+
onChange={ this.props.toggleRecaptchaSize }
|
| 228 |
+
options={ [ { value: 'normal', label: 'Normal' }, { value: 'compact', label: 'Compact' } ] }
|
| 229 |
+
/>
|
| 230 |
+
</PanelRow>
|
| 231 |
+
)
|
| 232 |
+
: '';
|
| 233 |
+
|
| 234 |
+
const recaptcha_verify_callback = !! this.props.recaptcha ?
|
| 235 |
+
(
|
| 236 |
+
<TextControl
|
| 237 |
+
id="recaptcha-verify-callback-form-toggle"
|
| 238 |
+
label={ __( 'reCAPTCHA Verify Callback' ) }
|
| 239 |
+
value={ this.props.recaptchaVerifyCallback }
|
| 240 |
+
onChange={ this.props.toggleRecaptchaVerifyCallback }
|
| 241 |
+
/>
|
| 242 |
+
)
|
| 243 |
+
: '';
|
| 244 |
+
|
| 245 |
+
const recaptcha_expired_callback = !! this.props.recaptcha ?
|
| 246 |
+
(
|
| 247 |
+
<TextControl
|
| 248 |
+
id="recaptcha-expired-callback-form-toggle"
|
| 249 |
+
label={ __( 'reCAPTCHA Expired Callback' ) }
|
| 250 |
+
value={ this.props.recaptchaExpiredCallback }
|
| 251 |
+
onChange={ this.props.toggleRecaptchaExpiredCallback }
|
| 252 |
+
/>
|
| 253 |
+
)
|
| 254 |
+
: '';
|
| 255 |
+
|
| 256 |
+
const inspector_controls =
|
| 257 |
+
<InspectorControls key="easy-forms-inspector">
|
| 258 |
+
|
| 259 |
+
<PanelBody title={ __( 'Settings' ) } >
|
| 260 |
+
{inline}
|
| 261 |
+
{show_form_title}
|
| 262 |
+
{show_form_description}
|
| 263 |
+
{is_ajax}
|
| 264 |
+
{recaptcha}
|
| 265 |
+
{recaptcha_type}
|
| 266 |
+
{recaptcha_theme}
|
| 267 |
+
{recaptcha_lang}
|
| 268 |
+
{recaptcha_size}
|
| 269 |
+
{recaptcha_verify_callback}
|
| 270 |
+
{recaptcha_expired_callback}
|
| 271 |
+
</PanelBody>
|
| 272 |
+
|
| 273 |
+
</InspectorControls>
|
| 274 |
+
|
| 275 |
+
return inspector_controls;
|
| 276 |
+
}
|
| 277 |
+
|
| 278 |
+
forms_dropdown() {
|
| 279 |
+
return this.state.forms.length > 0 ?
|
| 280 |
+
<select
|
| 281 |
+
value={ this.props.formID }
|
| 282 |
+
onChange={ this.props.onChangeForm }
|
| 283 |
+
className="yikes-mailchimp-forms-dropdown"
|
| 284 |
+
key="yikes-mailchimp-forms-dropdown"
|
| 285 |
+
>
|
| 286 |
+
<option key="select" value="">Select Mailchimp Form...</option>
|
| 287 |
+
{ this.state.forms.map( ( form ) => {
|
| 288 |
+
return <option key={ 'yikes-select-form-' + form.id } value={ form.id }>{ form.form_name }</option>
|
| 289 |
+
})}
|
| 290 |
+
</select>
|
| 291 |
+
: '';
|
| 292 |
+
}
|
| 293 |
+
|
| 294 |
+
form_title() {
|
| 295 |
+
return this.props.showTitle === true ?
|
| 296 |
+
( this.props.focus ?
|
| 297 |
+
<h3
|
| 298 |
+
className={ "yikes-mailchimp-form-title yikes-mailchimp-form-title-" + this.props.formID }
|
| 299 |
+
key="yikes-mailchimp-form-title-wrapper"
|
| 300 |
+
>
|
| 301 |
+
<PlainText
|
| 302 |
+
placeholder={ this.props.formTitle }
|
| 303 |
+
key="yikes-mailchimp-form-title-editable"
|
| 304 |
+
value={ this.props.formTitle }
|
| 305 |
+
onChange={ this.props.toggleFormTitle }
|
| 306 |
+
/>
|
| 307 |
+
</h3>
|
| 308 |
+
:
|
| 309 |
+
<h3 className={ "yikes-mailchimp-form-title yikes-mailchimp-form-title-" + this.props.formID } key="yikes-mailchimp-form-title">
|
| 310 |
+
{ this.props.formTitle }
|
| 311 |
+
</h3>
|
| 312 |
+
) : '';
|
| 313 |
+
}
|
| 314 |
+
|
| 315 |
+
form_description() {
|
| 316 |
+
return this.props.showDescription === true ?
|
| 317 |
+
<section className={ "yikes-mailchimp-form-description yikes-mailchimp-form-description-" + this.props.formID } key="yikes-mailchimp-form-description">
|
| 318 |
+
<PlainText
|
| 319 |
+
className="mailchimpDescription"
|
| 320 |
+
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.' )*/ }
|
| 321 |
+
value={ this.props.descriptionValue.length > 0 ? this.props.descriptionValue : ( this.props.formData && this.props.formData.form_description ? this.props.formData.form_description : '' ) }
|
| 322 |
+
onChange={ this.props.onChangeDescription }
|
| 323 |
+
key="mailchimpDescription"
|
| 324 |
+
/>
|
| 325 |
+
</section>
|
| 326 |
+
: '';
|
| 327 |
+
}
|
| 328 |
+
|
| 329 |
+
get_address_field( addr_field, field ) {
|
| 330 |
+
switch( addr_field ) {
|
| 331 |
+
|
| 332 |
+
case 'addr1':
|
| 333 |
+
case 'addr2':
|
| 334 |
+
case 'city':
|
| 335 |
+
case 'zip':
|
| 336 |
+
return (
|
| 337 |
+
<TextControl
|
| 338 |
+
id={ "yikes-easy-mc-form-" + this.props.formID + "-" + field.merge + '-' + addr_field }
|
| 339 |
+
onChange={ this.handleFormFieldChanges }
|
| 340 |
+
type="text"
|
| 341 |
+
name={ field.merge + '[' + addr_field + ']' }
|
| 342 |
+
className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }
|
| 343 |
+
key= { 'yikes-mailchimp-field-' + field.merge + '-' + addr_field }
|
| 344 |
+
required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }
|
| 345 |
+
placeholder={ field.placeholder === '1' ? this.address_fields[ addr_field ] : '' }
|
| 346 |
+
/>
|
| 347 |
+
)
|
| 348 |
+
break;
|
| 349 |
+
|
| 350 |
+
case 'state':
|
| 351 |
+
return (
|
| 352 |
+
<select
|
| 353 |
+
id={ "yikes-easy-mc-form-" + this.props.formID + "-" + field.merge + '-' + addr_field }
|
| 354 |
+
name={ field.merge + '[' + addr_field + ']' }
|
| 355 |
+
className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }
|
| 356 |
+
onChange={ this.handleFormFieldChanges }
|
| 357 |
+
key= { 'yikes-mailchimp-field-' + field.merge + '-' + addr_field }
|
| 358 |
+
value=''
|
| 359 |
+
required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }
|
| 360 |
+
>
|
| 361 |
+
{ Object.keys( constants.states ).map( ( key ) => {
|
| 362 |
+
var choice = constants.states[ key ];
|
| 363 |
+
return <option key={ 'state-' + key } value={ key }>{ choice }</option>
|
| 364 |
+
})}
|
| 365 |
+
|
| 366 |
+
</select>
|
| 367 |
+
)
|
| 368 |
+
break;
|
| 369 |
+
|
| 370 |
+
case 'country':
|
| 371 |
+
return (
|
| 372 |
+
<select
|
| 373 |
+
id={ "yikes-easy-mc-form-" + this.props.formID + "-" + field.merge + '-' + addr_field }
|
| 374 |
+
name={ field.merge + '[' + addr_field + ']' }
|
| 375 |
+
className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }
|
| 376 |
+
onChange={ this.handleFormFieldChanges }
|
| 377 |
+
key= { 'yikes-mailchimp-field-' + field.merge + '-' + addr_field }
|
| 378 |
+
value=''
|
| 379 |
+
required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }
|
| 380 |
+
>
|
| 381 |
+
{ Object.keys( constants.countries ).map( ( key ) => {
|
| 382 |
+
var choice = constants.countries[ key ];
|
| 383 |
+
return <option key={ 'country-' + key } value={ key }>{ choice }</option>
|
| 384 |
+
})}
|
| 385 |
+
|
| 386 |
+
</select>
|
| 387 |
+
)
|
| 388 |
+
break;
|
| 389 |
+
}
|
| 390 |
+
}
|
| 391 |
+
|
| 392 |
+
get_dropdown_field( field ) {
|
| 393 |
+
return (
|
| 394 |
+
<select
|
| 395 |
+
id={ "yikes-easy-mc-form-" + this.props.formID + "-" + field.merge }
|
| 396 |
+
name={ field.merge }
|
| 397 |
+
className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }
|
| 398 |
+
onChange={ this.handleFormFieldChanges }
|
| 399 |
+
key= { 'yikes-mailchimp-field-' + field.merge }
|
| 400 |
+
value={ JSON.parse( field.choices )[ field.default_choice ] }
|
| 401 |
+
required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }
|
| 402 |
+
>
|
| 403 |
+
{ Object.keys( JSON.parse( field.choices ) ).map( ( key ) => {
|
| 404 |
+
var choice = JSON.parse( field.choices )[ key ];
|
| 405 |
+
return <option key={ slugify( choice ) } value={ choice }>{ choice }</option>
|
| 406 |
+
})}
|
| 407 |
+
</select>
|
| 408 |
+
)
|
| 409 |
+
}
|
| 410 |
+
|
| 411 |
+
get_radio_field( field ) {
|
| 412 |
+
var ii = 0;
|
| 413 |
+
|
| 414 |
+
return (
|
| 415 |
+
JSON.parse( field.choices ).map( ( key ) => {
|
| 416 |
+
ii++;
|
| 417 |
+
return (
|
| 418 |
+
<label
|
| 419 |
+
htmlFor={ field.merge + '-' + ii }
|
| 420 |
+
className="yikes-easy-mc-checkbox-label"
|
| 421 |
+
key={ field.merge + '-label-radio-key-' + ii }
|
| 422 |
+
>
|
| 423 |
+
<input
|
| 424 |
+
type="radio"
|
| 425 |
+
name={ field.merge }
|
| 426 |
+
id={ field.merge + '-' + ii }
|
| 427 |
+
key={ field.merge + '-' + ii + '-input-key' }
|
| 428 |
+
value={ key }
|
| 429 |
+
onChange={ this.handleFormFieldChanges }
|
| 430 |
+
checked={ parseInt( field.default_choice ) === ( ii - 1 ) }
|
| 431 |
+
/>
|
| 432 |
+
<span key={ field.merge + '-span-radio-key-' + ii } className={ field.merge + '-label' }>{ key }</span>
|
| 433 |
+
</label>
|
| 434 |
+
)
|
| 435 |
+
})
|
| 436 |
+
)
|
| 437 |
+
}
|
| 438 |
+
|
| 439 |
+
get_url_field( field ) {
|
| 440 |
+
return (
|
| 441 |
+
<TextControl
|
| 442 |
+
id={ "yikes-easy-mc-form-" + this.props.formID + "-" + field.merge }
|
| 443 |
+
placeholder={ field.placeholder }
|
| 444 |
+
onChange={ this.handleFormFieldChanges }
|
| 445 |
+
type='url'
|
| 446 |
+
value={ field.default }
|
| 447 |
+
name={ field.merge }
|
| 448 |
+
className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }
|
| 449 |
+
key= { 'yikes-mailchimp-field-' + field.merge }
|
| 450 |
+
required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }
|
| 451 |
+
title={ field.type === 'url' ? __( 'Please enter a valid URL to the website.' ) : __( 'Please enter a valid URL to the image.' ) }
|
| 452 |
+
/>
|
| 453 |
+
)
|
| 454 |
+
}
|
| 455 |
+
|
| 456 |
+
get_default_field( field ) {
|
| 457 |
+
|
| 458 |
+
var type = field.type === 'zip' || field.type === 'phone' ? 'text' : field.type;
|
| 459 |
+
|
| 460 |
+
return (
|
| 461 |
+
<TextControl
|
| 462 |
+
id={ "yikes-easy-mc-form-" + this.props.formID + "-" + field.merge }
|
| 463 |
+
placeholder={ field.placeholder }
|
| 464 |
+
onChange={ this.handleFormFieldChanges }
|
| 465 |
+
type={ type }
|
| 466 |
+
value={ field.default }
|
| 467 |
+
name={ field.merge }
|
| 468 |
+
className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }
|
| 469 |
+
key= { 'yikes-mailchimp-field-' + field.merge }
|
| 470 |
+
required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }
|
| 471 |
+
/>
|
| 472 |
+
)
|
| 473 |
+
}
|
| 474 |
+
|
| 475 |
+
get_date_field( field ) {
|
| 476 |
+
return (
|
| 477 |
+
<TextControl
|
| 478 |
+
id={ "yikes-easy-mc-form-" + this.props.formID + "-" + field.merge }
|
| 479 |
+
placeholder={ field.placeholder }
|
| 480 |
+
onChange={ this.handleFormFieldChanges }
|
| 481 |
+
type='text'
|
| 482 |
+
value={ field.default }
|
| 483 |
+
name={ field.merge }
|
| 484 |
+
className={ 'yikes-easy-mc-' + field.type + ' ' + field['additional-classes'] }
|
| 485 |
+
key= { 'yikes-mailchimp-field-' + field.merge }
|
| 486 |
+
required={ field.merge === 'EMAIL' || field.require === '1' ? 'required' : false }
|
| 487 |
+
data-attr-type={ field.type }
|
| 488 |
+
data-date-format={ field.date_format.toLowerCase() }
|
| 489 |
+
/>
|
| 490 |
+
)
|
| 491 |
+
}
|
| 492 |
+
|
| 493 |
+
get_radio_interest_group( field ) {
|
| 494 |
+
var ii = -1;
|
| 495 |
+
var cn = "yikes-easy-mc-checkbox-label " + field['additional-classes'];
|
| 496 |
+
|
| 497 |
+
return (
|
| 498 |
+
Object.keys( JSON.parse( field.groups ) ).map( ( key ) => {
|
| 499 |
+
var choice = JSON.parse( field.groups )[ key ];
|
| 500 |
+
ii++;
|
| 501 |
+
return (
|
| 502 |
+
<label
|
| 503 |
+
htmlFor={ field.group_id + '-' + ii }
|
| 504 |
+
className={ { [cn]: true, 'field-no-label': field['hide-label'] === '1' } }
|
| 505 |
+
key={ field.group_id + '-' + ii + '-label-key' }
|
| 506 |
+
>
|
| 507 |
+
<input
|
| 508 |
+
type="radio"
|
| 509 |
+
name={"group-" + field.group_id + '[]' }
|
| 510 |
+
id={ field.group_id + '-' + ii }
|
| 511 |
+
key={ field.group_id + '-' + ii + '-input-key' }
|
| 512 |
+
value={ key }
|
| 513 |
+
onChange={ this.handleFormFieldChanges }
|
| 514 |
+
checked={ key === field.default_choice }
|
| 515 |
+
className={ { 'yikes-interest-group-required': field.require === '1' } }
|
| 516 |
+
/>
|
| 517 |
+
{ choice }
|
| 518 |
+
</label>
|
| 519 |
+
)
|
| 520 |
+
})
|
| 521 |
+
)
|
| 522 |
+
}
|
| 523 |
+
|
| 524 |
+
get_hidden_interest_group( field ) {
|
| 525 |
+
var ii = -1;
|
| 526 |
+
|
| 527 |
+
return (
|
| 528 |
+
Object.keys( JSON.parse( field.groups ) ).map( ( key ) => {
|
| 529 |
+
var choice = JSON.parse( field.groups )[ key ];
|
| 530 |
+
ii++;
|
| 531 |
+
return (
|
| 532 |
+
<label
|
| 533 |
+
htmlFor={ field.group_id + '-' + ii }
|
| 534 |
+
className={ 'yikes-easy-mc-checkbox-label ' + field['additional-classes'] }
|
| 535 |
+
key={ field.group_id + '-' + ii + '-label-key' }
|
| 536 |
+
>
|
| 537 |
+
<input
|
| 538 |
+
type="checkbox"
|
| 539 |
+
name={"group-" + field.group_id + '[]' }
|
| 540 |
+
id={ field.group_id + '-' + ii }
|
| 541 |
+
key={ field.group_id + '-' + ii + '-input-key' }
|
| 542 |
+
value={ key }
|
| 543 |
+
onChange={ this.handleFormFieldChanges }
|
| 544 |
+
checked={ field.default_choice && field.default_choice.indexOf( key ) !== -1 }
|
| 545 |
+
/>
|
| 546 |
+
{ choice }
|
| 547 |
+
</label>
|
| 548 |
+
)
|
| 549 |
+
})
|
| 550 |
+
)
|
| 551 |
+
}
|
| 552 |
+
|
| 553 |
+
get_checkboxes_interest_group( field ) {
|
| 554 |
+
var ii = -1;
|
| 555 |
+
var cn = 'yikes-easy-mc-checkbox-label ' + field['additional-classes'];
|
| 556 |
+
|
| 557 |
+
return (
|
| 558 |
+
Object.keys( JSON.parse( field.groups ) ).map( ( key ) => {
|
| 559 |
+
var choice = JSON.parse( field.groups )[ key ];
|
| 560 |
+
ii++;
|
| 561 |
+
return (
|
| 562 |
+
<label
|
| 563 |
+
htmlFor={ field.group_id + '-' + ii }
|
| 564 |
+
className={ { [cn]: true, 'field-no-label': field['hide-label'] === '1' } }
|
| 565 |
+
key={ field.group_id + '-' + ii + '-label-key' }
|
| 566 |
+
>
|
| 567 |
+
<input
|
| 568 |
+
className={ { 'yikes-interest-group-required': field.require === '1' } }
|
| 569 |
+
type="checkbox"
|
| 570 |
+
name={ 'group-' + field.group_id + '[]' }
|
| 571 |
+
id={ field.group_id + '-' + ii }
|
| 572 |
+
key={ field.group_id + '-' + ii + '-input-key' }
|
| 573 |
+
value={ key }
|
| 574 |
+
onChange={ this.handleFormFieldChanges }
|
| 575 |
+
checked={ typeof field.default_choice !== 'undefined' && field.default_choice.indexOf( key ) !== -1 }
|
| 576 |
+
required={ field.require === '1' ? 'required' : false }
|
| 577 |
+
/>
|
| 578 |
+
{ choice }
|
| 579 |
+
</label>
|
| 580 |
+
)
|
| 581 |
+
})
|
| 582 |
+
)
|
| 583 |
+
}
|
| 584 |
+
|
| 585 |
+
get_dropdown_interest_group( field ) {
|
| 586 |
+
var ii = -1;
|
| 587 |
+
|
| 588 |
+
return (
|
| 589 |
+
<select
|
| 590 |
+
id={ "yikes-easy-mc-form-" + this.props.formID + "-" + field.group_id }
|
| 591 |
+
name={ "group-" + field.group_id }
|
| 592 |
+
className={ "yikes-easy-mc-dropdown " + field['additional-classes'] }
|
| 593 |
+
value={ field.default_choice }
|
| 594 |
+
onChange={ this.handleFormFieldChanges }
|
| 595 |
+
required={ field.require === '1' ? 'required' : false }
|
| 596 |
+
>
|
| 597 |
+
|
| 598 |
+
{ Object.keys( JSON.parse( field.groups ) ).map( ( key ) => {
|
| 599 |
+
var choice = JSON.parse( field.groups )[ key ];
|
| 600 |
+
ii++;
|
| 601 |
+
return (
|
| 602 |
+
<option key={ field.group_id + '-' + ii + '-input-key' } value={ key }>{ choice }</option>
|
| 603 |
+
)
|
| 604 |
+
})}
|
| 605 |
+
</select>
|
| 606 |
+
)
|
| 607 |
+
}
|
| 608 |
+
|
| 609 |
+
form_fields() {
|
| 610 |
+
|
| 611 |
+
return this.props.formData && this.props.formData.fields ?
|
| 612 |
+
Object.keys( this.props.formData.fields ).map( ( key ) => {
|
| 613 |
+
|
| 614 |
+
var field = this.props.formData.fields[ key ];
|
| 615 |
+
|
| 616 |
+
// Form Fields (aka merge variables)
|
| 617 |
+
if ( typeof field.merge !== 'undefined' ) {
|
| 618 |
+
|
| 619 |
+
var desc = field.description.length > 0 ?
|
| 620 |
+
<p className="form-field-description" id={ "form-field-description-" + field.merge } key={ "form-field-description-" + field.merge }>{ field.description }</p>
|
| 621 |
+
: '';
|
| 622 |
+
|
| 623 |
+
var label = field['hide-label'] !== '1' ? <span className={ field.merge + '-label' } key={ field.merge + '-label-span-key' }>{ field.label }</span> : '';
|
| 624 |
+
|
| 625 |
+
var classes = {'yikes-mailchimp-field-required' : field.merge === 'EMAIL' || field.require === '1' }
|
| 626 |
+
classes[ field.merge + '-label'] = true;
|
| 627 |
+
|
| 628 |
+
if ( field.type === 'address' ) {
|
| 629 |
+
|
| 630 |
+
return ([
|
| 631 |
+
field.description_above === '1' && field.description.length > 0 && desc,
|
| 632 |
+
Object.keys( this.address_fields ).map( ( addr_field ) => {
|
| 633 |
+
label = field['hide-label'] !== '1' ? <span className={ field.merge + '-label' } key={ field.merge + '-label-span-key-' + addr_field }>{ this.address_fields[ addr_field ] }</span> : '';
|
| 634 |
+
|
| 635 |
+
return (
|
| 636 |
+
<label
|
| 637 |
+
htmlFor={ "yikes-easy-mc-form-" + this.props.formID + "-" + field.merge + '-' + addr_field }
|
| 638 |
+
className={ classes }
|
| 639 |
+
key={ field.merge + '-label-key-' + addr_field }
|
| 640 |
+
style={ field.hide === '1' ? { 'display': 'none' } : {} }
|
| 641 |
+
>
|
| 642 |
+
{ label }
|
| 643 |
+
{ this.get_address_field( addr_field, field ) }
|
| 644 |
+
</label>
|
| 645 |
+
)
|
| 646 |
+
}),
|
| 647 |
+
field.description_above !== '1' && field.description.length > 0 && desc
|
| 648 |
+
])
|
| 649 |
+
} else {
|
| 650 |
+
return (
|
| 651 |
+
<label
|
| 652 |
+
htmlFor={ "yikes-easy-mc-form-" + this.props.formID + "-" + field.merge }
|
| 653 |
+
className={ classes }
|
| 654 |
+
key={ field.merge + '-label-key' }
|
| 655 |
+
style={ field.hide === '1' ? { 'display': 'none' } : {} }
|
| 656 |
+
>
|
| 657 |
+
{ label }
|
| 658 |
+
|
| 659 |
+
{ field.description_above === '1' && field.description.length > 0 && desc }
|
| 660 |
+
|
| 661 |
+
{
|
| 662 |
+
( field.type === 'dropdown' ? this.get_dropdown_field( field ) :
|
| 663 |
+
( field.type === 'radio' ? this.get_radio_field( field ) :
|
| 664 |
+
( field.type === 'url' || field.type === 'imageurl' ? this.get_url_field( field ) :
|
| 665 |
+
( field.type === 'date' || field.type === 'birthday' ? this.get_date_field( field ) :
|
| 666 |
+
this.get_default_field( field ) ) ) ) )
|
| 667 |
+
}
|
| 668 |
+
|
| 669 |
+
{ field.description_above !== '1' && field.description.length > 0 && desc }
|
| 670 |
+
|
| 671 |
+
</label>
|
| 672 |
+
)
|
| 673 |
+
}
|
| 674 |
+
} else {
|
| 675 |
+
|
| 676 |
+
var desc = field.description.length > 0 ?
|
| 677 |
+
<p className="form-field-description" id={ "form-field-description-" + field.group_id } key={ "form-field-description-" + field.group_id }>{ field.description }</p>
|
| 678 |
+
: '';
|
| 679 |
+
|
| 680 |
+
var label = field['hide-label'] !== '1' ?
|
| 681 |
+
<span key={ field.group_id + "-label-span-key" } className={ field.group_id + "-label checkbox-parent-label" }>{ field.label }</span>
|
| 682 |
+
: '';
|
| 683 |
+
|
| 684 |
+
var classes = { 'yikes-mailchimp-field-required' : field.require === '1' }
|
| 685 |
+
classes[ field.group_id + '-label'] = true;
|
| 686 |
+
|
| 687 |
+
return (
|
| 688 |
+
<label
|
| 689 |
+
htmlFor={ field.group_id }
|
| 690 |
+
className= { classes }
|
| 691 |
+
key={ field.group_id + "-label-span-key" }
|
| 692 |
+
style={ field.type === 'hidden' || field.hide === '1' ? { 'display': 'none' } : {} }
|
| 693 |
+
>
|
| 694 |
+
|
| 695 |
+
{ label }
|
| 696 |
+
|
| 697 |
+
{ field.description_above === '1' && field.description.length > 0 && desc }
|
| 698 |
+
|
| 699 |
+
{
|
| 700 |
+
( field.type === 'radio' ? this.get_radio_interest_group( field ) :
|
| 701 |
+
( field.type === 'hidden' ? this.get_hidden_interest_group( field ) :
|
| 702 |
+
( field.type === 'checkboxes' ? this.get_checkboxes_interest_group( field ) :
|
| 703 |
+
( field.type === 'dropdown' ? this.get_dropdown_interest_group( field ) : '' ) ) ) )
|
| 704 |
+
}
|
| 705 |
+
|
| 706 |
+
{ field.description_above !== '1' && field.description.length > 0 && desc }
|
| 707 |
+
|
| 708 |
+
</label>
|
| 709 |
+
)
|
| 710 |
+
}
|
| 711 |
+
})
|
| 712 |
+
: '';
|
| 713 |
+
}
|
| 714 |
+
|
| 715 |
+
form_recaptcha() {
|
| 716 |
+
|
| 717 |
+
return this.state.recaptcha_data.success === true && this.state.recaptcha_data.data.site_key && this.props.recaptcha === true ?
|
| 718 |
+
<Recaptcha
|
| 719 |
+
sitekey={ this.state.recaptcha_data.data.site_key }
|
| 720 |
+
key={ 'easy-forms-recaptcha-1' }
|
| 721 |
+
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.
|
| 722 |
+
theme={ this.props.recaptchaTheme }
|
| 723 |
+
hl={ this.props.recaptchaLang.length > 0 ? this.props.recaptchaLang : this.state.recaptcha_data.data.locale }
|
| 724 |
+
type={ this.props.recaptchaType }
|
| 725 |
+
size={ this.props.recaptchaSize }
|
| 726 |
+
verifyCallback=''
|
| 727 |
+
expiredCallback=''
|
| 728 |
+
/>
|
| 729 |
+
: '';
|
| 730 |
+
}
|
| 731 |
+
|
| 732 |
+
submit_button() {
|
| 733 |
+
return this.props.formData && this.props.formData.fields ?
|
| 734 |
+
( this.props.focus && this.props.formData.form_settings['yikes-easy-mc-submit-button-type'] === 'text' ?
|
| 735 |
+
<button
|
| 736 |
+
type="submit"
|
| 737 |
+
key="mailchimpSubmitButton"
|
| 738 |
+
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'] }
|
| 739 |
+
>
|
| 740 |
+
<PlainText
|
| 741 |
+
className="yikes-mailchimp-submit-button-span-text"
|
| 742 |
+
key="yikes-mailchimp-submit-button-span-text"
|
| 743 |
+
value={ this.props.submitButtonText ? this.props.submitButtonText : '' }
|
| 744 |
+
onChange={ this.props.toggleSubmitButtonText }
|
| 745 |
+
/>
|
| 746 |
+
</button>
|
| 747 |
+
:
|
| 748 |
+
( this.props.formData.form_settings['yikes-easy-mc-submit-button-type'] === 'text' ?
|
| 749 |
+
<button
|
| 750 |
+
type="submit"
|
| 751 |
+
key="mailchimpSubmitButton"
|
| 752 |
+
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'] }
|
| 753 |
+
>
|
| 754 |
+
<span className="yikes-mailchimp-submit-button-span-text" key="yikes-mailchimp-submit-button-span-text">{ this.props.submitButtonText }</span>
|
| 755 |
+
</button>
|
| 756 |
+
:
|
| 757 |
+
<input
|
| 758 |
+
type="image"
|
| 759 |
+
alt={ this.props.submitButtonText }
|
| 760 |
+
src={ this.props.formData.form_settings['yikes-easy-mc-submit-button-image'] }
|
| 761 |
+
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'] }
|
| 762 |
+
/>
|
| 763 |
+
)
|
| 764 |
+
)
|
| 765 |
+
: '';
|
| 766 |
+
}
|
| 767 |
+
|
| 768 |
+
get_form_section() {
|
| 769 |
+
return (
|
| 770 |
+
<section
|
| 771 |
+
id={ "yikes-mailchimp-container-" + this.props.formID }
|
| 772 |
+
className={ "yikes-mailchimp-container yikes-mailchimp-container-" + this.props.formID }
|
| 773 |
+
key="yikes-mailchimp-container-section"
|
| 774 |
+
>
|
| 775 |
+
{[
|
| 776 |
+
|
| 777 |
+
// Form title
|
| 778 |
+
[this.form_title()],
|
| 779 |
+
|
| 780 |
+
// Form Description
|
| 781 |
+
[this.form_description()],
|
| 782 |
+
|
| 783 |
+
// Get the form
|
| 784 |
+
[this.get_form()]
|
| 785 |
+
]}
|
| 786 |
+
</section>
|
| 787 |
+
);
|
| 788 |
+
}
|
| 789 |
+
|
| 790 |
+
get_form() {
|
| 791 |
+
return (
|
| 792 |
+
// Form Wrapper
|
| 793 |
+
<form
|
| 794 |
+
id={ slugify( this.props.formTitle ) + '-' + this.props.formID }
|
| 795 |
+
className={ "yikes-easy-mc-form yikes-easy-mc-form-" + this.props.formID + " " + this.props.formData.form_settings['yikes-easy-mc-form-class-names'] }
|
| 796 |
+
key="yikes-mailchimp-container-form"
|
| 797 |
+
>
|
| 798 |
+
{[
|
| 799 |
+
|
| 800 |
+
// Form fields
|
| 801 |
+
[this.form_fields()],
|
| 802 |
+
|
| 803 |
+
// Recaptcha
|
| 804 |
+
[this.form_recaptcha()],
|
| 805 |
+
|
| 806 |
+
// Submit button
|
| 807 |
+
[this.submit_button()]
|
| 808 |
+
]}
|
| 809 |
+
</form>
|
| 810 |
+
);
|
| 811 |
+
}
|
| 812 |
+
|
| 813 |
+
render() {
|
| 814 |
+
|
| 815 |
+
if ( this.state.forms.length > 0 && this.props.formData && Object.keys( this.props.formData ).length > 0 ) {
|
| 816 |
+
|
| 817 |
+
return (
|
| 818 |
+
|
| 819 |
+
<div className={ this.props.className }>
|
| 820 |
+
|
| 821 |
+
{// Show inspector controls when focused
|
| 822 |
+
this.props.focus && this.inspector_controls()}
|
| 823 |
+
|
| 824 |
+
{// Show the forms dropdown
|
| 825 |
+
this.forms_dropdown()}
|
| 826 |
+
|
| 827 |
+
<hr key="easy-forms-dropdown-divider"/>
|
| 828 |
+
|
| 829 |
+
{// Show the form
|
| 830 |
+
this.get_form_section()}
|
| 831 |
+
</div>
|
| 832 |
+
|
| 833 |
+
);
|
| 834 |
+
|
| 835 |
+
} else if ( this.state.forms.length > 0 ) {
|
| 836 |
+
|
| 837 |
+
// If we don't have form data, show the forms dropdown
|
| 838 |
+
return (
|
| 839 |
+
<div className={ this.props.className }>
|
| 840 |
+
{this.forms_dropdown()}
|
| 841 |
+
</div>
|
| 842 |
+
);
|
| 843 |
+
|
| 844 |
+
} else if ( this.state.api_key_status !== 'valid' ) {
|
| 845 |
+
|
| 846 |
+
// If the API key is invalid, show a message.
|
| 847 |
+
return (
|
| 848 |
+
<p className="yikes-mailchimp-api-key-warning" key="yikes-mailchimp-api-key-warning">
|
| 849 |
+
<em>{ this.state.api_key_status === 'empty' ? <a href={ constants.settings_url }> { __( 'To use this block, please enter an API key on the Easy Forms\' settings page.' ) } </a> : __( 'Your API key is invalid.' ) }</em>
|
| 850 |
+
</p>
|
| 851 |
+
);
|
| 852 |
+
} else if ( this.state.forms_loaded === true && this.state.forms.length === 0 ) {
|
| 853 |
+
|
| 854 |
+
// No forms.
|
| 855 |
+
return (
|
| 856 |
+
<p key="no-forms-found" className={ this.props.className }>
|
| 857 |
+
<em>{ __( 'No forms were found.' ) }</em>
|
| 858 |
+
</p>
|
| 859 |
+
);
|
| 860 |
+
} else {
|
| 861 |
+
|
| 862 |
+
// Show loading... & spinner.
|
| 863 |
+
return (
|
| 864 |
+
<p key="loading-easy-forms" className={ this.props.className }>
|
| 865 |
+
<span key="yikes-easy-forms-loading-text">{ __( 'Loading...' ) }</span>
|
| 866 |
+
<Spinner key="yikes-easy-forms-loading-spinner" />
|
| 867 |
+
</p>
|
| 868 |
+
);
|
| 869 |
+
}
|
| 870 |
+
}
|
| 871 |
+
}
|
blocks/components/constants.js
ADDED
|
@@ -0,0 +1,390 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
const constants = {
|
| 2 |
+
states: {
|
| 3 |
+
'': '—',
|
| 4 |
+
'AL': 'Alabama',
|
| 5 |
+
'AK': 'Alaska',
|
| 6 |
+
'AZ': 'Arizona',
|
| 7 |
+
'AR': 'Arkansas',
|
| 8 |
+
'CA': 'California',
|
| 9 |
+
'CO': 'Colorado',
|
| 10 |
+
'CT': 'Connecticut',
|
| 11 |
+
'DE': 'Delaware',
|
| 12 |
+
'DC': 'District Of Columbia',
|
| 13 |
+
'FL': 'Florida',
|
| 14 |
+
'GA': 'Georgia',
|
| 15 |
+
'HI': 'Hawaii',
|
| 16 |
+
'ID': 'Idaho',
|
| 17 |
+
'IL': 'Illinois',
|
| 18 |
+
'IN': 'Indiana',
|
| 19 |
+
'IA': 'Iowa',
|
| 20 |
+
'KS': 'Kansas',
|
| 21 |
+
'KY': 'Kentucky',
|
| 22 |
+
'LA': 'Louisiana',
|
| 23 |
+
'ME': 'Maine',
|
| 24 |
+
'MD': 'Maryland',
|
| 25 |
+
'MA': 'Massachusetts',
|
| 26 |
+
'MI': 'Michigan',
|
| 27 |
+
'MN': 'Minnesota',
|
| 28 |
+
'MS': 'Mississippi',
|
| 29 |
+
'MO': 'Missouri',
|
| 30 |
+
'MT': 'Montana',
|
| 31 |
+
'NE': 'Nebraska',
|
| 32 |
+
'NV': 'Nevada',
|
| 33 |
+
'NH': 'New Hampshire',
|
| 34 |
+
'NJ': 'New Jersey',
|
| 35 |
+
'NM': 'New Mexico',
|
| 36 |
+
'NY': 'New York',
|
| 37 |
+
'NC': 'North Carolina',
|
| 38 |
+
'ND': 'North Dakota',
|
| 39 |
+
'OH': 'Ohio',
|
| 40 |
+
'OK': 'Oklahoma',
|
| 41 |
+
'OR': 'Oregon',
|
| 42 |
+
'PA': 'Pennsylvania',
|
| 43 |
+
'RI': 'Rhode Island',
|
| 44 |
+
'SC': 'South Carolina',
|
| 45 |
+
'SD': 'South Dakota',
|
| 46 |
+
'TN': 'Tennessee',
|
| 47 |
+
'TX': 'Texas',
|
| 48 |
+
'UT': 'Utah',
|
| 49 |
+
'VT': 'Vermont',
|
| 50 |
+
'VA': 'Virginia',
|
| 51 |
+
'WA': 'Washington',
|
| 52 |
+
'WV': 'West Virginia',
|
| 53 |
+
'WI': 'Wisconsin',
|
| 54 |
+
'WY': 'Wyoming',
|
| 55 |
+
'AB': 'Alberta',
|
| 56 |
+
'BC': 'British Columbia',
|
| 57 |
+
'MB': 'Manitoba',
|
| 58 |
+
'NB': 'New Brunswick',
|
| 59 |
+
'NL': 'Newfoundland and Labrador',
|
| 60 |
+
'NS': 'Nova Scotia',
|
| 61 |
+
'ON': 'Ontario',
|
| 62 |
+
'PE': 'Prince Edward Island',
|
| 63 |
+
'QC': 'Quebec',
|
| 64 |
+
'SK': 'Saskatchewan',
|
| 65 |
+
'NT': 'Northwest Territories',
|
| 66 |
+
'NU': 'Nunavut',
|
| 67 |
+
'YT': 'Yukon',
|
| 68 |
+
},
|
| 69 |
+
countries: {
|
| 70 |
+
'US': 'United States',
|
| 71 |
+
'GB': 'United Kingdom',
|
| 72 |
+
'AF': 'Afghanistan',
|
| 73 |
+
'AX': 'Aland Islands',
|
| 74 |
+
'AL': 'Albania',
|
| 75 |
+
'DZ': 'Algeria',
|
| 76 |
+
'AS': 'American Samoa',
|
| 77 |
+
'AD': 'Andorra',
|
| 78 |
+
'AO': 'Angola',
|
| 79 |
+
'AI': 'Anguilla',
|
| 80 |
+
'AQ': 'Antarctica',
|
| 81 |
+
'AG': 'Antigua and Barbuda',
|
| 82 |
+
'AR': 'Argentina',
|
| 83 |
+
'AM': 'Armenia',
|
| 84 |
+
'AW': 'Aruba',
|
| 85 |
+
'AU': 'Australia',
|
| 86 |
+
'AT': 'Austria',
|
| 87 |
+
'AZ': 'Azerbaijan',
|
| 88 |
+
'BS': 'Bahamas',
|
| 89 |
+
'BH': 'Bahrain',
|
| 90 |
+
'BD': 'Bangladesh',
|
| 91 |
+
'BB': 'Barbados',
|
| 92 |
+
'BY': 'Belarus',
|
| 93 |
+
'BE': 'Belgium',
|
| 94 |
+
'BZ': 'Belize',
|
| 95 |
+
'BJ': 'Benin',
|
| 96 |
+
'BM': 'Bermuda',
|
| 97 |
+
'BT': 'Bhutan',
|
| 98 |
+
'BO': 'Bolivia',
|
| 99 |
+
'BA': 'Bosnia and Herzegovina',
|
| 100 |
+
'BW': 'Botswana',
|
| 101 |
+
'BV': 'Bouvet Island',
|
| 102 |
+
'BR': 'Brazil',
|
| 103 |
+
'IO': 'British Indian Ocean Territory',
|
| 104 |
+
'BN': 'Brunei Darussalam',
|
| 105 |
+
'BG': 'Bulgaria',
|
| 106 |
+
'BF': 'Burkina Faso',
|
| 107 |
+
'BI': 'Burundi',
|
| 108 |
+
'KH': 'Cambodia',
|
| 109 |
+
'CM': 'Cameroon',
|
| 110 |
+
'CA': 'Canada',
|
| 111 |
+
'CV': 'Cape Verde',
|
| 112 |
+
'KY': 'Cayman Islands',
|
| 113 |
+
'CF': 'Central African Republic',
|
| 114 |
+
'TD': 'Chad',
|
| 115 |
+
'CL': 'Chile',
|
| 116 |
+
'CN': 'China',
|
| 117 |
+
'CX': 'Christmas Island',
|
| 118 |
+
'CC': 'Cocos (Keeling) Islands',
|
| 119 |
+
'CO': 'Colombia',
|
| 120 |
+
'KM': 'Comoros',
|
| 121 |
+
'CG': 'Congo',
|
| 122 |
+
'CD': 'Congo, The Democratic Republic of The',
|
| 123 |
+
'CK': 'Cook Islands',
|
| 124 |
+
'CR': 'Costa Rica',
|
| 125 |
+
'CI': 'Cote D’ivoire',
|
| 126 |
+
'HR': 'Croatia',
|
| 127 |
+
'CU': 'Cuba',
|
| 128 |
+
'CY': 'Cyprus',
|
| 129 |
+
'CZ': 'Czech Republic',
|
| 130 |
+
'DK': 'Denmark',
|
| 131 |
+
'DJ': 'Djibouti',
|
| 132 |
+
'DM': 'Dominica',
|
| 133 |
+
'DO': 'Dominican Republic',
|
| 134 |
+
'EC': 'Ecuador',
|
| 135 |
+
'EG': 'Egypt',
|
| 136 |
+
'SV': 'El Salvador',
|
| 137 |
+
'GQ': 'Equatorial Guinea',
|
| 138 |
+
'ER': 'Eritrea',
|
| 139 |
+
'EE': 'Estonia',
|
| 140 |
+
'ET': 'Ethiopia',
|
| 141 |
+
'FK': 'Falkland Islands (Malvinas)',
|
| 142 |
+
'FO': 'Faroe Islands',
|
| 143 |
+
'FJ': 'Fiji',
|
| 144 |
+
'FI': 'Finland',
|
| 145 |
+
'FR': 'France',
|
| 146 |
+
'GF': 'French Guiana',
|
| 147 |
+
'PF': 'French Polynesia',
|
| 148 |
+
'TF': 'French Southern Territories',
|
| 149 |
+
'GA': 'Gabon',
|
| 150 |
+
'GM': 'Gambia',
|
| 151 |
+
'GE': 'Georgia',
|
| 152 |
+
'DE': 'Germany',
|
| 153 |
+
'GH': 'Ghana',
|
| 154 |
+
'GI': 'Gibraltar',
|
| 155 |
+
'GR': 'Greece',
|
| 156 |
+
'GL': 'Greenland',
|
| 157 |
+
'GD': 'Grenada',
|
| 158 |
+
'GP': 'Guadeloupe',
|
| 159 |
+
'GU': 'Guam',
|
| 160 |
+
'GT': 'Guatemala',
|
| 161 |
+
'GG': 'Guernsey',
|
| 162 |
+
'GN': 'Guinea',
|
| 163 |
+
'GW': 'Guinea-bissau',
|
| 164 |
+
'GY': 'Guyana',
|
| 165 |
+
'HT': 'Haiti',
|
| 166 |
+
'HM': 'Heard Island and Mcdonald Islands',
|
| 167 |
+
'VA': 'Holy See (Vatican City State)',
|
| 168 |
+
'HN': 'Honduras',
|
| 169 |
+
'HK': 'Hong Kong',
|
| 170 |
+
'HU': 'Hungary',
|
| 171 |
+
'IS': 'Iceland',
|
| 172 |
+
'IN': 'India',
|
| 173 |
+
'ID': 'Indonesia',
|
| 174 |
+
'IR': 'Iran, Islamic Republic of',
|
| 175 |
+
'IQ': 'Iraq',
|
| 176 |
+
'IE': 'Ireland',
|
| 177 |
+
'IM': 'Isle of Man',
|
| 178 |
+
'IL': 'Israel',
|
| 179 |
+
'IT': 'Italy',
|
| 180 |
+
'JM': 'Jamaica',
|
| 181 |
+
'JP': 'Japan',
|
| 182 |
+
'JE': 'Jersey',
|
| 183 |
+
'JO': 'Jordan',
|
| 184 |
+
'KZ': 'Kazakhstan',
|
| 185 |
+
'KE': 'Kenya',
|
| 186 |
+
'KI': 'Kiribati',
|
| 187 |
+
'KP': 'Korea, Democratic People’s Republic of',
|
| 188 |
+
'KR': 'Korea, Republic of',
|
| 189 |
+
'KW': 'Kuwait',
|
| 190 |
+
'KG': 'Kyrgyzstan',
|
| 191 |
+
'LA': 'Lao People’s Democratic Republic',
|
| 192 |
+
'LV': 'Latvia',
|
| 193 |
+
'LB': 'Lebanon',
|
| 194 |
+
'LS': 'Lesotho',
|
| 195 |
+
'LR': 'Liberia',
|
| 196 |
+
'LY': 'Libyan Arab Jamahiriya',
|
| 197 |
+
'LI': 'Liechtenstein',
|
| 198 |
+
'LT': 'Lithuania',
|
| 199 |
+
'LU': 'Luxembourg',
|
| 200 |
+
'MO': 'Macao',
|
| 201 |
+
'MK': 'Macedonia, The Former Yugoslav Republic of',
|
| 202 |
+
'MG': 'Madagascar',
|
| 203 |
+
'MW': 'Malawi',
|
| 204 |
+
'MY': 'Malaysia',
|
| 205 |
+
'MV': 'Maldives',
|
| 206 |
+
'ML': 'Mali',
|
| 207 |
+
'MT': 'Malta',
|
| 208 |
+
'MH': 'Marshall Islands',
|
| 209 |
+
'MQ': 'Martinique',
|
| 210 |
+
'MR': 'Mauritania',
|
| 211 |
+
'MU': 'Mauritius',
|
| 212 |
+
'YT': 'Mayotte',
|
| 213 |
+
'MX': 'Mexico',
|
| 214 |
+
'FM': 'Micronesia, Federated States of',
|
| 215 |
+
'MD': 'Moldova, Republic of',
|
| 216 |
+
'MC': 'Monaco',
|
| 217 |
+
'MN': 'Mongolia',
|
| 218 |
+
'ME': 'Montenegro',
|
| 219 |
+
'MS': 'Montserrat',
|
| 220 |
+
'MA': 'Morocco',
|
| 221 |
+
'MZ': 'Mozambique',
|
| 222 |
+
'MM': 'Myanmar',
|
| 223 |
+
'NA': 'Namibia',
|
| 224 |
+
'NR': 'Nauru',
|
| 225 |
+
'NP': 'Nepal',
|
| 226 |
+
'NL': 'Netherlands',
|
| 227 |
+
'AN': 'Netherlands Antilles',
|
| 228 |
+
'NC': 'New Caledonia',
|
| 229 |
+
'NZ': 'New Zealand',
|
| 230 |
+
'NI': 'Nicaragua',
|
| 231 |
+
'NE': 'Niger',
|
| 232 |
+
'NG': 'Nigeria',
|
| 233 |
+
'NU': 'Niue',
|
| 234 |
+
'NF': 'Norfolk Island',
|
| 235 |
+
'MP': 'Northern Mariana Islands',
|
| 236 |
+
'NO': 'Norway',
|
| 237 |
+
'OM': 'Oman',
|
| 238 |
+
'PK': 'Pakistan',
|
| 239 |
+
'PW': 'Palau',
|
| 240 |
+
'PS': 'Palestinian Territory, Occupied',
|
| 241 |
+
'PA': 'Panama',
|
| 242 |
+
'PG': 'Papua New Guinea',
|
| 243 |
+
'PY': 'Paraguay',
|
| 244 |
+
'PE': 'Peru',
|
| 245 |
+
'PH': 'Philippines',
|
| 246 |
+
'PN': 'Pitcairn',
|
| 247 |
+
'PL': 'Poland',
|
| 248 |
+
'PT': 'Portugal',
|
| 249 |
+
'PR': 'Puerto Rico',
|
| 250 |
+
'QA': 'Qatar',
|
| 251 |
+
'RE': 'Reunion',
|
| 252 |
+
'RO': 'Romania',
|
| 253 |
+
'RU': 'Russian Federation',
|
| 254 |
+
'RW': 'Rwanda',
|
| 255 |
+
'SH': 'Saint Helena',
|
| 256 |
+
'KN': 'Saint Kitts and Nevis',
|
| 257 |
+
'LC': 'Saint Lucia',
|
| 258 |
+
'PM': 'Saint Pierre and Miquelon',
|
| 259 |
+
'VC': 'Saint Vincent and The Grenadines',
|
| 260 |
+
'WS': 'Samoa',
|
| 261 |
+
'SM': 'San Marino',
|
| 262 |
+
'ST': 'Sao Tome and Principe',
|
| 263 |
+
'SA': 'Saudi Arabia',
|
| 264 |
+
'SN': 'Senegal',
|
| 265 |
+
'RS': 'Serbia',
|
| 266 |
+
'SC': 'Seychelles',
|
| 267 |
+
'SL': 'Sierra Leone',
|
| 268 |
+
'SG': 'Singapore',
|
| 269 |
+
'SK': 'Slovakia',
|
| 270 |
+
'SI': 'Slovenia',
|
| 271 |
+
'SB': 'Solomon Islands',
|
| 272 |
+
'SO': 'Somalia',
|
| 273 |
+
'ZA': 'South Africa',
|
| 274 |
+
'GS': 'South Georgia and The South Sandwich Islands',
|
| 275 |
+
'ES': 'Spain',
|
| 276 |
+
'LK': 'Sri Lanka',
|
| 277 |
+
'SD': 'Sudan',
|
| 278 |
+
'SR': 'Suriname',
|
| 279 |
+
'SJ': 'Svalbard and Jan Mayen',
|
| 280 |
+
'SZ': 'Swaziland',
|
| 281 |
+
'SE': 'Sweden',
|
| 282 |
+
'CH': 'Switzerland',
|
| 283 |
+
'SY': 'Syrian Arab Republic',
|
| 284 |
+
'TW': 'Taiwan, Province of China',
|
| 285 |
+
'TJ': 'Tajikistan',
|
| 286 |
+
'TZ': 'Tanzania, United Republic of',
|
| 287 |
+
'TH': 'Thailand',
|
| 288 |
+
'TL': 'Timor-leste',
|
| 289 |
+
'TG': 'Togo',
|
| 290 |
+
'TK': 'Tokelau',
|
| 291 |
+
'TO': 'Tonga',
|
| 292 |
+
'TT': 'Trinidad and Tobago',
|
| 293 |
+
'TN': 'Tunisia',
|
| 294 |
+
'TR': 'Turkey',
|
| 295 |
+
'TM': 'Turkmenistan',
|
| 296 |
+
'TC': 'Turks and Caicos Islands',
|
| 297 |
+
'TV': 'Tuvalu',
|
| 298 |
+
'UG': 'Uganda',
|
| 299 |
+
'UA': 'Ukraine',
|
| 300 |
+
'AE': 'United Arab Emirates',
|
| 301 |
+
'UM': 'United States Minor Outlying Islands',
|
| 302 |
+
'UY': 'Uruguay',
|
| 303 |
+
'UZ': 'Uzbekistan',
|
| 304 |
+
'VU': 'Vanuatu',
|
| 305 |
+
'VE': 'Venezuela',
|
| 306 |
+
'VN': 'Viet Nam',
|
| 307 |
+
'VG': 'Virgin Islands, British',
|
| 308 |
+
'VI': 'Virgin Islands, U.S.',
|
| 309 |
+
'WF': 'Wallis and Futuna',
|
| 310 |
+
'EH': 'Western Sahara',
|
| 311 |
+
'YE': 'Yemen',
|
| 312 |
+
'ZM': 'Zambia',
|
| 313 |
+
'ZW': 'Zimbabwe',
|
| 314 |
+
},
|
| 315 |
+
locales: {
|
| 316 |
+
"ar" : "Arabic",
|
| 317 |
+
"af" : "Afrikaans",
|
| 318 |
+
"am" : "Amharic",
|
| 319 |
+
"hy" : "Armenian",
|
| 320 |
+
"az" : "Azerbaijani",
|
| 321 |
+
"eu" : "Basque",
|
| 322 |
+
"bn" : "Bengali",
|
| 323 |
+
"bg" : "Bulgarian",
|
| 324 |
+
"ca" : "Catalan",
|
| 325 |
+
"zh-HK" : "Chinese (Hong Kong)",
|
| 326 |
+
"zh-CN" : "Chinese (Simplified)",
|
| 327 |
+
"zh-TW" : "Chinese (Traditional)",
|
| 328 |
+
"hr" : "Croatian",
|
| 329 |
+
"cs" : "Czech",
|
| 330 |
+
"da" : "Danish",
|
| 331 |
+
"nl" : "Dutch",
|
| 332 |
+
"en-GB" : "English (UK)",
|
| 333 |
+
"en" : "English (US)",
|
| 334 |
+
"et" : "Estonian",
|
| 335 |
+
"fil" : "Filipino",
|
| 336 |
+
"fi" : "Finnish",
|
| 337 |
+
"fr" : "French",
|
| 338 |
+
"fr-CA" : "French (Canadian)",
|
| 339 |
+
"gl" : "Galician",
|
| 340 |
+
"ka" : "Georgian",
|
| 341 |
+
"de" : "German",
|
| 342 |
+
"de-AT" : "German (Austria)",
|
| 343 |
+
"de-CH" : "German (Switzerland)",
|
| 344 |
+
"el" : "Greek",
|
| 345 |
+
"gu" : "Gujarati",
|
| 346 |
+
"iw" : "Hebrew",
|
| 347 |
+
"hi" : "Hindi",
|
| 348 |
+
"hu" : "Hungarain",
|
| 349 |
+
"is" : "Icelandic",
|
| 350 |
+
"id" : "Indonesian",
|
| 351 |
+
"it" : "Italian",
|
| 352 |
+
"ja" : "Japanese",
|
| 353 |
+
"kn" : "Kannada",
|
| 354 |
+
"ko" : "Korean",
|
| 355 |
+
"lo" : "Laothian",
|
| 356 |
+
"lv" : "Latvian",
|
| 357 |
+
"lt" : "Lithuanian",
|
| 358 |
+
"ms" : "Malay",
|
| 359 |
+
"ml" : "Malayalam",
|
| 360 |
+
"mr" : "Marathi",
|
| 361 |
+
"mn" : "Mongolian",
|
| 362 |
+
"no" : "Norwegian",
|
| 363 |
+
"fa" : "Persian",
|
| 364 |
+
"pl" : "Polish",
|
| 365 |
+
"pt" : "Portuguese",
|
| 366 |
+
"pt-BR" : "Portuguese (Brazil)",
|
| 367 |
+
"pt-PT" : "Portuguese (Portugal)",
|
| 368 |
+
"ro" : "Romanian",
|
| 369 |
+
"ru" : "Russian",
|
| 370 |
+
"sr" : "Serbian",
|
| 371 |
+
"si" : "Sinhalese",
|
| 372 |
+
"sk" : "Slovak",
|
| 373 |
+
"sl" : "Slovenian",
|
| 374 |
+
"es" : "Spanish",
|
| 375 |
+
"es-419" : "Spanish (Latin America)",
|
| 376 |
+
"sw" : "Swahili",
|
| 377 |
+
"sv" : "Swedish",
|
| 378 |
+
"ta" : "Tamil",
|
| 379 |
+
"te" : "Telugu",
|
| 380 |
+
"th" : "Thai",
|
| 381 |
+
"tr" : "Turkish",
|
| 382 |
+
"uk" : "Ukrainian",
|
| 383 |
+
"ur" : "Urdu",
|
| 384 |
+
"vi" : "Vietnamese",
|
| 385 |
+
"zu" : "Zulu"
|
| 386 |
+
},
|
| 387 |
+
settings_url: 'wp-admin/admin.php?page=yikes-inc-easy-mailchimp-settings'
|
| 388 |
+
}
|
| 389 |
+
|
| 390 |
+
export default constants;
|
blocks/components/enable-submit-button-editing.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
( function( $ ) {
|
| 2 |
+
|
| 3 |
+
$( document ).ready( function() {
|
| 4 |
+
|
| 5 |
+
$( 'body' ).on( 'click', '.yikes-easy-mc-submit-button', function( event ) {
|
| 6 |
+
event.preventDefault();
|
| 7 |
+
event.stopPropagation();
|
| 8 |
+
$( '.yikes-mailchimp-submit-button-span-text' ).focus();
|
| 9 |
+
});
|
| 10 |
+
|
| 11 |
+
$( 'body' ).on( 'click', '.yikes-mailchimp-submit-button-span-text', function( event ) {
|
| 12 |
+
event.preventDefault();
|
| 13 |
+
event.stopPropagation();
|
| 14 |
+
});
|
| 15 |
+
});
|
| 16 |
+
|
| 17 |
+
})( jQuery );
|
blocks/components/slugify.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/*
|
| 2 |
+
* This should have the same effect as WP/PHP's `sanitize_title()` function
|
| 3 |
+
*
|
| 4 |
+
* Source: https://gist.github.com/mathewbyrne/1280286
|
| 5 |
+
*/
|
| 6 |
+
export default function slugify( text ) {
|
| 7 |
+
|
| 8 |
+
// Use hash map for special characters
|
| 9 |
+
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',"·":'-',"/":'-',"_":'-',",":'-',":":'-',";":'-'};
|
| 10 |
+
|
| 11 |
+
return text.toString().toLowerCase()
|
| 12 |
+
.replace(/\s+/g, '-') // Replace spaces with -
|
| 13 |
+
.replace(/./g,(target, index, str) => specialChars[target] || target) // Replace special characters using the hash map
|
| 14 |
+
.replace(/&/g, '-and-') // Replace & with 'and'
|
| 15 |
+
.replace(/[^\w\-]+/g, '') // Remove all non-word chars
|
| 16 |
+
.replace(/\-\-+/g, '-') // Replace multiple - with single -
|
| 17 |
+
.replace(/^-+/, '') // Trim - from start of text
|
| 18 |
+
.replace(/-+$/, ''); // Trim - from end of text
|
| 19 |
+
};
|
blocks/easy-forms-block/dev-easy-forms-block.js
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import EasyFormsAPI from '../components/api.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 |
+
const api = new EasyFormsAPI();
|
| 22 |
+
api.get_form( event.target.value ).then( function( form ) {
|
| 23 |
+
props.setAttributes( { form: form.data } );
|
| 24 |
+
props.setAttributes( { form_description: form.data.form_description } );
|
| 25 |
+
props.setAttributes( { form_title: form.data.form_name } );
|
| 26 |
+
props.setAttributes( { is_ajax: form.data.submission_settings.ajax === '1' } );
|
| 27 |
+
props.setAttributes( { submit_button_text: form.data.form_settings['yikes-easy-mc-submit-button-text'] } );
|
| 28 |
+
});
|
| 29 |
+
}
|
| 30 |
+
};
|
| 31 |
+
|
| 32 |
+
const onChangeDescription = ( value ) => {
|
| 33 |
+
props.setAttributes( { form_description: value } );
|
| 34 |
+
};
|
| 35 |
+
|
| 36 |
+
const toggleShowDescription = ( event ) => {
|
| 37 |
+
props.setAttributes( { show_description: !! event.target.checked } );
|
| 38 |
+
}
|
| 39 |
+
|
| 40 |
+
const toggleInline = ( event ) => {
|
| 41 |
+
props.setAttributes( { inline: !! event.target.checked } );
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
const toggleShowTitle = ( event ) => {
|
| 45 |
+
props.setAttributes( { show_title: !! event.target.checked } );
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
const toggleFormTitle = ( value ) => {
|
| 49 |
+
props.setAttributes( { form_title: value } );
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
const toggleIsAjax = ( event ) => {
|
| 53 |
+
props.setAttributes( { is_ajax: !! event.target.checked } );
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
/* Allow this function to be called via a checkbox handler or directly by passing in a boolean */
|
| 57 |
+
const toggleRecaptchaAbstract = ( checked ) => {
|
| 58 |
+
props.setAttributes( { recaptcha: checked } );
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
const toggleRecaptcha = ( event ) => {
|
| 62 |
+
toggleRecaptchaAbstract( !! event.target.checked )
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
const toggleRecaptchaTheme = ( value ) => {
|
| 66 |
+
props.setAttributes( { recaptcha_theme: value } );
|
| 67 |
+
}
|
| 68 |
+
|
| 69 |
+
const toggleRecaptchaLang = ( value ) => {
|
| 70 |
+
props.setAttributes( { recaptcha_lang: value } );
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
+
const toggleRecaptchaType = ( value ) => {
|
| 74 |
+
props.setAttributes( { recaptcha_type: value } );
|
| 75 |
+
}
|
| 76 |
+
|
| 77 |
+
const toggleRecaptchaSize = ( value ) => {
|
| 78 |
+
props.setAttributes( { recaptcha_size: value } );
|
| 79 |
+
}
|
| 80 |
+
|
| 81 |
+
const toggleRecaptchaVerifyCallback = ( value ) => {
|
| 82 |
+
props.setAttributes( { recaptcha_verify_callback: value } );
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
const toggleRecaptchaExpiredCallback = ( value ) => {
|
| 86 |
+
props.setAttributes( { recaptcha_expired_callback: value } );
|
| 87 |
+
}
|
| 88 |
+
|
| 89 |
+
const toggleSubmitButtonText = ( value ) => {
|
| 90 |
+
props.setAttributes( { submit_button_text: value })
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
+
return (
|
| 94 |
+
<MailchimpForms
|
| 95 |
+
className={ props.className }
|
| 96 |
+
onChangeForm={ onChangeForm }
|
| 97 |
+
formID={ props.attributes.form_id }
|
| 98 |
+
formData={ props.attributes.form }
|
| 99 |
+
onChangeDescription={ onChangeDescription }
|
| 100 |
+
descriptionValue={ props.attributes.form_description }
|
| 101 |
+
showDescription={ props.attributes.show_description }
|
| 102 |
+
toggleShowDescription={ toggleShowDescription }
|
| 103 |
+
focus={ !! props.isSelected }
|
| 104 |
+
inline={ props.attributes.inline }
|
| 105 |
+
toggleInline={ toggleInline }
|
| 106 |
+
formTitle={ props.attributes.form_title }
|
| 107 |
+
toggleFormTitle={ toggleFormTitle }
|
| 108 |
+
showTitle={ props.attributes.show_title }
|
| 109 |
+
toggleShowTitle={ toggleShowTitle }
|
| 110 |
+
isAjax={ props.attributes.is_ajax }
|
| 111 |
+
toggleIsAjax={ toggleIsAjax }
|
| 112 |
+
toggleRecaptchaAbstract={ toggleRecaptchaAbstract }
|
| 113 |
+
recaptcha={ props.attributes.recaptcha }
|
| 114 |
+
toggleRecaptcha={ toggleRecaptcha }
|
| 115 |
+
recaptchaTheme={ props.attributes.recaptcha_theme }
|
| 116 |
+
toggleRecaptchaTheme={ toggleRecaptchaTheme }
|
| 117 |
+
recaptchaLang={ props.attributes.recaptcha_lang }
|
| 118 |
+
toggleRecaptchaLang={ toggleRecaptchaLang }
|
| 119 |
+
recaptchaType={ props.attributes.recaptcha_type }
|
| 120 |
+
toggleRecaptchaType={ toggleRecaptchaType }
|
| 121 |
+
recaptchaSize={ props.attributes.recaptcha_size }
|
| 122 |
+
toggleRecaptchaSize={ toggleRecaptchaSize }
|
| 123 |
+
recaptchaVerifyCallback={ props.attributes.recaptcha_verify_callback }
|
| 124 |
+
toggleRecaptchaVerifyCallback={ toggleRecaptchaVerifyCallback }
|
| 125 |
+
recaptchaExpiredCallback={ props.attributes.recaptcha_expired_callback }
|
| 126 |
+
toggleRecaptchaExpiredCallback={ toggleRecaptchaExpiredCallback }
|
| 127 |
+
submitButtonText={ props.attributes.submit_button_text }
|
| 128 |
+
toggleSubmitButtonText={ toggleSubmitButtonText }
|
| 129 |
+
/>
|
| 130 |
+
);
|
| 131 |
+
|
| 132 |
+
}
|
| 133 |
+
|
| 134 |
+
const save_easy_form = function( props ) {
|
| 135 |
+
return null;
|
| 136 |
+
}
|
| 137 |
+
|
| 138 |
+
const settings = {
|
| 139 |
+
title : __( 'Easy Forms for Mailchimp' ),
|
| 140 |
+
category : 'common', // Options include "common", "formatting", "layout", "widgets" and "embed."
|
| 141 |
+
icon : 'email-alt',
|
| 142 |
+
keywords : ['mailchimp', 'easy forms for mailchimp', 'yikes'],
|
| 143 |
+
attributes: {
|
| 144 |
+
form_id: {
|
| 145 |
+
type: 'string',
|
| 146 |
+
default: ''
|
| 147 |
+
},
|
| 148 |
+
form: {
|
| 149 |
+
type: 'object'
|
| 150 |
+
},
|
| 151 |
+
form_description: {
|
| 152 |
+
type: 'string',
|
| 153 |
+
default: ''
|
| 154 |
+
},
|
| 155 |
+
show_description: {
|
| 156 |
+
type: 'boolean',
|
| 157 |
+
default: false
|
| 158 |
+
},
|
| 159 |
+
inline: {
|
| 160 |
+
type: 'boolean',
|
| 161 |
+
default: false
|
| 162 |
+
},
|
| 163 |
+
show_title: {
|
| 164 |
+
type: 'boolean',
|
| 165 |
+
default: false
|
| 166 |
+
},
|
| 167 |
+
form_title: {
|
| 168 |
+
type: 'string',
|
| 169 |
+
default: ''
|
| 170 |
+
},
|
| 171 |
+
is_ajax: {
|
| 172 |
+
type: 'boolean',
|
| 173 |
+
default: true,
|
| 174 |
+
},
|
| 175 |
+
recaptcha: {
|
| 176 |
+
type: 'boolean',
|
| 177 |
+
default: false,
|
| 178 |
+
},
|
| 179 |
+
recaptcha_theme: {
|
| 180 |
+
type: 'string',
|
| 181 |
+
default: 'light'
|
| 182 |
+
},
|
| 183 |
+
recaptcha_lang: {
|
| 184 |
+
type: 'string',
|
| 185 |
+
default: ''
|
| 186 |
+
},
|
| 187 |
+
recaptcha_type: {
|
| 188 |
+
type: 'string',
|
| 189 |
+
default: 'image'
|
| 190 |
+
},
|
| 191 |
+
recaptcha_size: {
|
| 192 |
+
type: 'string',
|
| 193 |
+
default: 'normal'
|
| 194 |
+
},
|
| 195 |
+
recaptcha_verify_callback: {
|
| 196 |
+
type: 'string',
|
| 197 |
+
default: ''
|
| 198 |
+
},
|
| 199 |
+
recaptcha_expired_callback: {
|
| 200 |
+
type: 'string',
|
| 201 |
+
default: ''
|
| 202 |
+
},
|
| 203 |
+
submit_button_text: {
|
| 204 |
+
type: 'string',
|
| 205 |
+
default: ''
|
| 206 |
+
}
|
| 207 |
+
},
|
| 208 |
+
edit: edit_easy_form,
|
| 209 |
+
save: save_easy_form,
|
| 210 |
+
}
|
| 211 |
+
|
| 212 |
+
const EasyFormsBlock = registerBlockType(
|
| 213 |
+
|
| 214 |
+
// Name
|
| 215 |
+
ez_forms_gb_data.block_namespace + ez_forms_gb_data.block_name,
|
| 216 |
+
|
| 217 |
+
// Settings
|
| 218 |
+
settings
|
| 219 |
+
);
|
blocks/easy-forms-block/easy-forms-block.js
ADDED
|
@@ -0,0 +1,4718 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/******/ (function(modules) { // webpackBootstrap
|
| 2 |
+
/******/ // The module cache
|
| 3 |
+
/******/ var installedModules = {};
|
| 4 |
+
/******/
|
| 5 |
+
/******/ // The require function
|
| 6 |
+
/******/ function __webpack_require__(moduleId) {
|
| 7 |
+
/******/
|
| 8 |
+
/******/ // Check if module is in cache
|
| 9 |
+
/******/ if(installedModules[moduleId]) {
|
| 10 |
+
/******/ return installedModules[moduleId].exports;
|
| 11 |
+
/******/ }
|
| 12 |
+
/******/ // Create a new module (and put it into the cache)
|
| 13 |
+
/******/ var module = installedModules[moduleId] = {
|
| 14 |
+
/******/ i: moduleId,
|
| 15 |
+
/******/ l: false,
|
| 16 |
+
/******/ exports: {}
|
| 17 |
+
/******/ };
|
| 18 |
+
/******/
|
| 19 |
+
/******/ // Execute the module function
|
| 20 |
+
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
| 21 |
+
/******/
|
| 22 |
+
/******/ // Flag the module as loaded
|
| 23 |
+
/******/ module.l = true;
|
| 24 |
+
/******/
|
| 25 |
+
/******/ // Return the exports of the module
|
| 26 |
+
/******/ return module.exports;
|
| 27 |
+
/******/ }
|
| 28 |
+
/******/
|
| 29 |
+
/******/
|
| 30 |
+
/******/ // expose the modules object (__webpack_modules__)
|
| 31 |
+
/******/ __webpack_require__.m = modules;
|
| 32 |
+
/******/
|
| 33 |
+
/******/ // expose the module cache
|
| 34 |
+
/******/ __webpack_require__.c = installedModules;
|
| 35 |
+
/******/
|
| 36 |
+
/******/ // define getter function for harmony exports
|
| 37 |
+
/******/ __webpack_require__.d = function(exports, name, getter) {
|
| 38 |
+
/******/ if(!__webpack_require__.o(exports, name)) {
|
| 39 |
+
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
| 40 |
+
/******/ }
|
| 41 |
+
/******/ };
|
| 42 |
+
/******/
|
| 43 |
+
/******/ // define __esModule on exports
|
| 44 |
+
/******/ __webpack_require__.r = function(exports) {
|
| 45 |
+
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
| 46 |
+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
| 47 |
+
/******/ }
|
| 48 |
+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
| 49 |
+
/******/ };
|
| 50 |
+
/******/
|
| 51 |
+
/******/ // create a fake namespace object
|
| 52 |
+
/******/ // mode & 1: value is a module id, require it
|
| 53 |
+
/******/ // mode & 2: merge all properties of value into the ns
|
| 54 |
+
/******/ // mode & 4: return value when already ns object
|
| 55 |
+
/******/ // mode & 8|1: behave like require
|
| 56 |
+
/******/ __webpack_require__.t = function(value, mode) {
|
| 57 |
+
/******/ if(mode & 1) value = __webpack_require__(value);
|
| 58 |
+
/******/ if(mode & 8) return value;
|
| 59 |
+
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
| 60 |
+
/******/ var ns = Object.create(null);
|
| 61 |
+
/******/ __webpack_require__.r(ns);
|
| 62 |
+
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
| 63 |
+
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
| 64 |
+
/******/ return ns;
|
| 65 |
+
/******/ };
|
| 66 |
+
/******/
|
| 67 |
+
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
| 68 |
+
/******/ __webpack_require__.n = function(module) {
|
| 69 |
+
/******/ var getter = module && module.__esModule ?
|
| 70 |
+
/******/ function getDefault() { return module['default']; } :
|
| 71 |
+
/******/ function getModuleExports() { return module; };
|
| 72 |
+
/******/ __webpack_require__.d(getter, 'a', getter);
|
| 73 |
+
/******/ return getter;
|
| 74 |
+
/******/ };
|
| 75 |
+
/******/
|
| 76 |
+
/******/ // Object.prototype.hasOwnProperty.call
|
| 77 |
+
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
| 78 |
+
/******/
|
| 79 |
+
/******/ // __webpack_public_path__
|
| 80 |
+
/******/ __webpack_require__.p = "";
|
| 81 |
+
/******/
|
| 82 |
+
/******/
|
| 83 |
+
/******/ // Load entry module and return exports
|
| 84 |
+
/******/ return __webpack_require__(__webpack_require__.s = "./blocks/index.js");
|
| 85 |
+
/******/ })
|
| 86 |
+
/************************************************************************/
|
| 87 |
+
/******/ ({
|
| 88 |
+
|
| 89 |
+
/***/ "./blocks/components/api.js":
|
| 90 |
+
/*!**********************************!*\
|
| 91 |
+
!*** ./blocks/components/api.js ***!
|
| 92 |
+
\**********************************/
|
| 93 |
+
/*! no static exports found */
|
| 94 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 95 |
+
|
| 96 |
+
"use strict";
|
| 97 |
+
|
| 98 |
+
|
| 99 |
+
Object.defineProperty(exports, "__esModule", {
|
| 100 |
+
value: true
|
| 101 |
+
});
|
| 102 |
+
|
| 103 |
+
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; }; }();
|
| 104 |
+
|
| 105 |
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
| 106 |
+
|
| 107 |
+
var EasyFormsAPI = function () {
|
| 108 |
+
function EasyFormsAPI() {
|
| 109 |
+
_classCallCheck(this, EasyFormsAPI);
|
| 110 |
+
|
| 111 |
+
this.ajaxurl = window.ajaxurl;
|
| 112 |
+
}
|
| 113 |
+
|
| 114 |
+
_createClass(EasyFormsAPI, [{
|
| 115 |
+
key: 'get_api_key_status',
|
| 116 |
+
value: function get_api_key_status() {
|
| 117 |
+
var data = {
|
| 118 |
+
action: 'yikes_get_api_key_status',
|
| 119 |
+
nonce: ez_forms_gb_data.get_api_key_status
|
| 120 |
+
};
|
| 121 |
+
|
| 122 |
+
var status = $.post(this.ajaxurl, data);
|
| 123 |
+
|
| 124 |
+
return status;
|
| 125 |
+
}
|
| 126 |
+
}, {
|
| 127 |
+
key: 'get_recaptcha',
|
| 128 |
+
value: function get_recaptcha() {
|
| 129 |
+
var data = {
|
| 130 |
+
action: 'yikes_get_recaptcha',
|
| 131 |
+
nonce: ez_forms_gb_data.fetch_recaptcha_nonce
|
| 132 |
+
};
|
| 133 |
+
|
| 134 |
+
var recaptcha_data = $.post(this.ajaxurl, data);
|
| 135 |
+
|
| 136 |
+
return recaptcha_data;
|
| 137 |
+
}
|
| 138 |
+
}, {
|
| 139 |
+
key: 'get_forms',
|
| 140 |
+
value: function get_forms() {
|
| 141 |
+
var data = {
|
| 142 |
+
action: 'yikes_get_forms',
|
| 143 |
+
nonce: ez_forms_gb_data.fetch_forms_nonce
|
| 144 |
+
};
|
| 145 |
+
|
| 146 |
+
var forms = $.post(this.ajaxurl, data);
|
| 147 |
+
|
| 148 |
+
return forms;
|
| 149 |
+
}
|
| 150 |
+
}, {
|
| 151 |
+
key: 'get_form',
|
| 152 |
+
value: function get_form(form_id) {
|
| 153 |
+
var data = {
|
| 154 |
+
action: 'yikes_get_form',
|
| 155 |
+
form_id: form_id,
|
| 156 |
+
nonce: ez_forms_gb_data.fetch_form_nonce
|
| 157 |
+
};
|
| 158 |
+
|
| 159 |
+
var form = $.post(this.ajaxurl, data);
|
| 160 |
+
|
| 161 |
+
return form;
|
| 162 |
+
}
|
| 163 |
+
}]);
|
| 164 |
+
|
| 165 |
+
return EasyFormsAPI;
|
| 166 |
+
}();
|
| 167 |
+
|
| 168 |
+
exports.default = EasyFormsAPI;
|
| 169 |
+
|
| 170 |
+
/***/ }),
|
| 171 |
+
|
| 172 |
+
/***/ "./blocks/components/class.MailchimpForms.js":
|
| 173 |
+
/*!***************************************************!*\
|
| 174 |
+
!*** ./blocks/components/class.MailchimpForms.js ***!
|
| 175 |
+
\***************************************************/
|
| 176 |
+
/*! no static exports found */
|
| 177 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 178 |
+
|
| 179 |
+
"use strict";
|
| 180 |
+
|
| 181 |
+
|
| 182 |
+
Object.defineProperty(exports, "__esModule", {
|
| 183 |
+
value: true
|
| 184 |
+
});
|
| 185 |
+
|
| 186 |
+
var _classnames = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");
|
| 187 |
+
|
| 188 |
+
var _classnames2 = _interopRequireDefault(_classnames);
|
| 189 |
+
|
| 190 |
+
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; }; }();
|
| 191 |
+
|
| 192 |
+
var _slugify = __webpack_require__(/*! ./slugify.js */ "./blocks/components/slugify.js");
|
| 193 |
+
|
| 194 |
+
var _slugify2 = _interopRequireDefault(_slugify);
|
| 195 |
+
|
| 196 |
+
var _constants = __webpack_require__(/*! ./constants.js */ "./blocks/components/constants.js");
|
| 197 |
+
|
| 198 |
+
var _constants2 = _interopRequireDefault(_constants);
|
| 199 |
+
|
| 200 |
+
var _api = __webpack_require__(/*! ./api.js */ "./blocks/components/api.js");
|
| 201 |
+
|
| 202 |
+
var _api2 = _interopRequireDefault(_api);
|
| 203 |
+
|
| 204 |
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
| 205 |
+
|
| 206 |
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
| 207 |
+
|
| 208 |
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
| 209 |
+
|
| 210 |
+
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
| 211 |
+
|
| 212 |
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Import dependencies
|
| 213 |
+
|
| 214 |
+
|
| 215 |
+
// Get functions / blocks / components
|
| 216 |
+
var Recaptcha = __webpack_require__(/*! react-recaptcha */ "./node_modules/react-recaptcha/dist/react-recaptcha.js");
|
| 217 |
+
var __ = wp.i18n.__;
|
| 218 |
+
var registerBlockType = wp.blocks.registerBlockType;
|
| 219 |
+
var _wp$editor = wp.editor,
|
| 220 |
+
RichText = _wp$editor.RichText,
|
| 221 |
+
InspectorControls = _wp$editor.InspectorControls,
|
| 222 |
+
PlainText = _wp$editor.PlainText;
|
| 223 |
+
var _wp$components = wp.components,
|
| 224 |
+
Spinner = _wp$components.Spinner,
|
| 225 |
+
TextControl = _wp$components.TextControl,
|
| 226 |
+
PanelBody = _wp$components.PanelBody,
|
| 227 |
+
PanelRow = _wp$components.PanelRow,
|
| 228 |
+
FormToggle = _wp$components.FormToggle,
|
| 229 |
+
SelectControl = _wp$components.SelectControl;
|
| 230 |
+
var Component = wp.element.Component;
|
| 231 |
+
|
| 232 |
+
var MailchimpForms = function (_Component) {
|
| 233 |
+
_inherits(MailchimpForms, _Component);
|
| 234 |
+
|
| 235 |
+
function MailchimpForms(props) {
|
| 236 |
+
_classCallCheck(this, MailchimpForms);
|
| 237 |
+
|
| 238 |
+
var _this = _possibleConstructorReturn(this, (MailchimpForms.__proto__ || Object.getPrototypeOf(MailchimpForms)).apply(this, arguments));
|
| 239 |
+
|
| 240 |
+
_this.state = {
|
| 241 |
+
api_key_status: 'valid',
|
| 242 |
+
forms: [],
|
| 243 |
+
recaptcha_data: {
|
| 244 |
+
data: {},
|
| 245 |
+
success: false
|
| 246 |
+
},
|
| 247 |
+
'forms_loaded': false
|
| 248 |
+
};
|
| 249 |
+
|
| 250 |
+
_this.api = new _api2.default();
|
| 251 |
+
|
| 252 |
+
_this.address_fields = {
|
| 253 |
+
'addr1': 'Address 1',
|
| 254 |
+
'addr2': 'Address 2',
|
| 255 |
+
'city': 'City',
|
| 256 |
+
'state': 'State',
|
| 257 |
+
'zip': 'Zip',
|
| 258 |
+
'country': 'Country'
|
| 259 |
+
};
|
| 260 |
+
return _this;
|
| 261 |
+
}
|
| 262 |
+
|
| 263 |
+
/**
|
| 264 |
+
* Run our API calls after the component has mounted. You can't use setState before a component is mounted.
|
| 265 |
+
*/
|
| 266 |
+
|
| 267 |
+
|
| 268 |
+
_createClass(MailchimpForms, [{
|
| 269 |
+
key: 'componentDidMount',
|
| 270 |
+
value: function componentDidMount() {
|
| 271 |
+
var _this2 = this;
|
| 272 |
+
|
| 273 |
+
this.api.get_api_key_status().then(function (status) {
|
| 274 |
+
_this2.setState({ api_key_status: status.data });
|
| 275 |
+
});
|
| 276 |
+
|
| 277 |
+
this.api.get_forms().then(function (forms) {
|
| 278 |
+
_this2.setState({ forms: forms.data, forms_loaded: true });
|
| 279 |
+
});
|
| 280 |
+
|
| 281 |
+
this.api.get_recaptcha().then(function (recaptcha_data) {
|
| 282 |
+
_this2.setState({ recaptcha_data: recaptcha_data });
|
| 283 |
+
_this2.props.toggleRecaptchaAbstract(_this2.state.recaptcha_data.success);
|
| 284 |
+
});
|
| 285 |
+
}
|
| 286 |
+
}, {
|
| 287 |
+
key: 'handleFormFieldChanges',
|
| 288 |
+
value: function handleFormFieldChanges(event) {
|
| 289 |
+
// console.log( event );
|
| 290 |
+
|
| 291 |
+
// console.log( value );
|
| 292 |
+
// console.log( this );
|
| 293 |
+
// console.log( typeof this.setState );
|
| 294 |
+
|
| 295 |
+
// const target = event.target;
|
| 296 |
+
// const value = target.type === 'checkbox' ? target.checked : target.value;
|
| 297 |
+
// const name = target.name;
|
| 298 |
+
|
| 299 |
+
// return this.setState( { [name]: value } );
|
| 300 |
+
}
|
| 301 |
+
}, {
|
| 302 |
+
key: 'inspector_controls',
|
| 303 |
+
value: function inspector_controls() {
|
| 304 |
+
|
| 305 |
+
var inline = wp.element.createElement(
|
| 306 |
+
PanelRow,
|
| 307 |
+
null,
|
| 308 |
+
wp.element.createElement(
|
| 309 |
+
'label',
|
| 310 |
+
{
|
| 311 |
+
htmlFor: 'inline-form-toggle',
|
| 312 |
+
className: 'blocks-base-control__label'
|
| 313 |
+
},
|
| 314 |
+
__('Inline')
|
| 315 |
+
),
|
| 316 |
+
wp.element.createElement(FormToggle, {
|
| 317 |
+
id: 'inline-form-toggle',
|
| 318 |
+
label: __('Inline'),
|
| 319 |
+
checked: !!this.props.inline,
|
| 320 |
+
onChange: this.props.toggleInline
|
| 321 |
+
})
|
| 322 |
+
);
|
| 323 |
+
|
| 324 |
+
var show_form_title = wp.element.createElement(
|
| 325 |
+
PanelRow,
|
| 326 |
+
null,
|
| 327 |
+
wp.element.createElement(
|
| 328 |
+
'label',
|
| 329 |
+
{
|
| 330 |
+
htmlFor: 'show-title-form-toggle',
|
| 331 |
+
className: 'blocks-base-control__label'
|
| 332 |
+
},
|
| 333 |
+
__('Show Form Title')
|
| 334 |
+
),
|
| 335 |
+
wp.element.createElement(FormToggle, {
|
| 336 |
+
id: 'show-title-form-toggle',
|
| 337 |
+
label: __('Show Form Title'),
|
| 338 |
+
checked: !!this.props.showTitle,
|
| 339 |
+
onChange: this.props.toggleShowTitle
|
| 340 |
+
})
|
| 341 |
+
);
|
| 342 |
+
|
| 343 |
+
var show_form_description = wp.element.createElement(
|
| 344 |
+
PanelRow,
|
| 345 |
+
null,
|
| 346 |
+
wp.element.createElement(
|
| 347 |
+
'label',
|
| 348 |
+
{
|
| 349 |
+
htmlFor: 'show-description-form-toggle',
|
| 350 |
+
className: 'blocks-base-control__label'
|
| 351 |
+
},
|
| 352 |
+
__('Show Form Description')
|
| 353 |
+
),
|
| 354 |
+
wp.element.createElement(FormToggle, {
|
| 355 |
+
id: 'show-description-form-toggle',
|
| 356 |
+
label: __('Show Form Description'),
|
| 357 |
+
checked: !!this.props.showDescription,
|
| 358 |
+
onChange: this.props.toggleShowDescription
|
| 359 |
+
})
|
| 360 |
+
);
|
| 361 |
+
|
| 362 |
+
var is_ajax = wp.element.createElement(
|
| 363 |
+
PanelRow,
|
| 364 |
+
null,
|
| 365 |
+
wp.element.createElement(
|
| 366 |
+
'label',
|
| 367 |
+
{
|
| 368 |
+
htmlFor: 'is-ajax-form-toggle',
|
| 369 |
+
className: 'blocks-base-control__label'
|
| 370 |
+
},
|
| 371 |
+
__('AJAX Submissions')
|
| 372 |
+
),
|
| 373 |
+
wp.element.createElement(FormToggle, {
|
| 374 |
+
id: 'is-ajax-form-toggle',
|
| 375 |
+
label: __('AJAX'),
|
| 376 |
+
checked: !!this.props.isAjax,
|
| 377 |
+
onChange: this.props.toggleIsAjax
|
| 378 |
+
})
|
| 379 |
+
);
|
| 380 |
+
|
| 381 |
+
var recaptcha = wp.element.createElement(
|
| 382 |
+
PanelRow,
|
| 383 |
+
null,
|
| 384 |
+
wp.element.createElement(
|
| 385 |
+
'label',
|
| 386 |
+
{
|
| 387 |
+
htmlFor: 'recaptcha-form-toggle',
|
| 388 |
+
className: 'blocks-base-control__label'
|
| 389 |
+
},
|
| 390 |
+
__('reCAPTCHA')
|
| 391 |
+
),
|
| 392 |
+
wp.element.createElement(FormToggle, {
|
| 393 |
+
id: 'recaptcha-form-toggle',
|
| 394 |
+
label: __('reCAPTCHA'),
|
| 395 |
+
checked: !!this.props.recaptcha,
|
| 396 |
+
onChange: this.props.toggleRecaptcha
|
| 397 |
+
})
|
| 398 |
+
);
|
| 399 |
+
|
| 400 |
+
var recaptcha_type = !!this.props.recaptcha ? wp.element.createElement(
|
| 401 |
+
PanelRow,
|
| 402 |
+
null,
|
| 403 |
+
wp.element.createElement(
|
| 404 |
+
'label',
|
| 405 |
+
{
|
| 406 |
+
htmlFor: 'recaptcha-type-form-toggle',
|
| 407 |
+
className: 'blocks-base-control__label'
|
| 408 |
+
},
|
| 409 |
+
__('reCAPTCHA Type')
|
| 410 |
+
),
|
| 411 |
+
wp.element.createElement(SelectControl, {
|
| 412 |
+
value: this.props.recaptchaType,
|
| 413 |
+
options: [{ value: 'image', label: 'Image' }, { value: 'audio', 'label': 'Audio' }],
|
| 414 |
+
onChange: this.props.toggleRecaptchaType
|
| 415 |
+
})
|
| 416 |
+
) : '';
|
| 417 |
+
|
| 418 |
+
var recaptcha_theme = !!this.props.recaptcha ? wp.element.createElement(
|
| 419 |
+
PanelRow,
|
| 420 |
+
null,
|
| 421 |
+
wp.element.createElement(
|
| 422 |
+
'label',
|
| 423 |
+
{
|
| 424 |
+
htmlFor: 'recaptcha-theme-form-toggle',
|
| 425 |
+
className: 'blocks-base-control__label'
|
| 426 |
+
},
|
| 427 |
+
__('reCAPTCHA Theme')
|
| 428 |
+
),
|
| 429 |
+
wp.element.createElement(SelectControl, {
|
| 430 |
+
value: this.props.recaptchaTheme,
|
| 431 |
+
options: [{ value: 'light', label: 'Light' }, { value: 'dark', 'label': 'Dark' }],
|
| 432 |
+
onChange: this.props.toggleRecaptchaTheme
|
| 433 |
+
})
|
| 434 |
+
) : '';
|
| 435 |
+
|
| 436 |
+
var recaptcha_lang = !!this.props.recaptcha ? wp.element.createElement(
|
| 437 |
+
PanelRow,
|
| 438 |
+
null,
|
| 439 |
+
wp.element.createElement(
|
| 440 |
+
'label',
|
| 441 |
+
{
|
| 442 |
+
htmlFor: 'recaptcha-language-form-toggle',
|
| 443 |
+
className: 'blocks-base-control__label',
|
| 444 |
+
title: this.state.recaptcha_data.data ? 'The default language for your locale is ' + _constants2.default.locales[this.state.recaptcha_data.data.locale] : ''
|
| 445 |
+
},
|
| 446 |
+
__('reCAPTCHA Language')
|
| 447 |
+
),
|
| 448 |
+
wp.element.createElement(SelectControl, {
|
| 449 |
+
id: 'recaptcha-language-form-toggle',
|
| 450 |
+
value: this.props.recaptchaLang.length > 0 ? this.props.recaptchaLang : this.state.recaptcha_data.data ? this.state.recaptcha_data.data.locale : '',
|
| 451 |
+
onChange: this.props.toggleRecaptchaLang,
|
| 452 |
+
title: this.state.recaptcha_data.data ? 'The default language for your locale is ' + _constants2.default.locales[this.state.recaptcha_data.data.locale] : '',
|
| 453 |
+
options: Object.keys(_constants2.default.locales).map(function (key) {
|
| 454 |
+
return { value: key, label: _constants2.default.locales[key] };
|
| 455 |
+
})
|
| 456 |
+
})
|
| 457 |
+
) : '';
|
| 458 |
+
|
| 459 |
+
var recaptcha_size = !!this.props.recaptcha ? wp.element.createElement(
|
| 460 |
+
PanelRow,
|
| 461 |
+
null,
|
| 462 |
+
wp.element.createElement(
|
| 463 |
+
'label',
|
| 464 |
+
{
|
| 465 |
+
htmlFor: 'recaptcha-size-form-toggle',
|
| 466 |
+
className: 'blocks-base-control__label'
|
| 467 |
+
},
|
| 468 |
+
__('reCAPTCHA Size')
|
| 469 |
+
),
|
| 470 |
+
wp.element.createElement(SelectControl, {
|
| 471 |
+
id: 'recaptcha-size-form-toggle',
|
| 472 |
+
value: this.props.recaptchaSize,
|
| 473 |
+
onChange: this.props.toggleRecaptchaSize,
|
| 474 |
+
options: [{ value: 'normal', label: 'Normal' }, { value: 'compact', label: 'Compact' }]
|
| 475 |
+
})
|
| 476 |
+
) : '';
|
| 477 |
+
|
| 478 |
+
var recaptcha_verify_callback = !!this.props.recaptcha ? wp.element.createElement(TextControl, {
|
| 479 |
+
id: 'recaptcha-verify-callback-form-toggle',
|
| 480 |
+
label: __('reCAPTCHA Verify Callback'),
|
| 481 |
+
value: this.props.recaptchaVerifyCallback,
|
| 482 |
+
onChange: this.props.toggleRecaptchaVerifyCallback
|
| 483 |
+
}) : '';
|
| 484 |
+
|
| 485 |
+
var recaptcha_expired_callback = !!this.props.recaptcha ? wp.element.createElement(TextControl, {
|
| 486 |
+
id: 'recaptcha-expired-callback-form-toggle',
|
| 487 |
+
label: __('reCAPTCHA Expired Callback'),
|
| 488 |
+
value: this.props.recaptchaExpiredCallback,
|
| 489 |
+
onChange: this.props.toggleRecaptchaExpiredCallback
|
| 490 |
+
}) : '';
|
| 491 |
+
|
| 492 |
+
var inspector_controls = wp.element.createElement(
|
| 493 |
+
InspectorControls,
|
| 494 |
+
{ key: 'easy-forms-inspector' },
|
| 495 |
+
wp.element.createElement(
|
| 496 |
+
PanelBody,
|
| 497 |
+
{ title: __('Settings') },
|
| 498 |
+
inline,
|
| 499 |
+
show_form_title,
|
| 500 |
+
show_form_description,
|
| 501 |
+
is_ajax,
|
| 502 |
+
recaptcha,
|
| 503 |
+
recaptcha_type,
|
| 504 |
+
recaptcha_theme,
|
| 505 |
+
recaptcha_lang,
|
| 506 |
+
recaptcha_size,
|
| 507 |
+
recaptcha_verify_callback,
|
| 508 |
+
recaptcha_expired_callback
|
| 509 |
+
)
|
| 510 |
+
);
|
| 511 |
+
|
| 512 |
+
return inspector_controls;
|
| 513 |
+
}
|
| 514 |
+
}, {
|
| 515 |
+
key: 'forms_dropdown',
|
| 516 |
+
value: function forms_dropdown() {
|
| 517 |
+
return this.state.forms.length > 0 ? wp.element.createElement(
|
| 518 |
+
'select',
|
| 519 |
+
{
|
| 520 |
+
value: this.props.formID,
|
| 521 |
+
onChange: this.props.onChangeForm,
|
| 522 |
+
className: 'yikes-mailchimp-forms-dropdown',
|
| 523 |
+
key: 'yikes-mailchimp-forms-dropdown'
|
| 524 |
+
},
|
| 525 |
+
wp.element.createElement(
|
| 526 |
+
'option',
|
| 527 |
+
{ key: 'select', value: '' },
|
| 528 |
+
'Select Mailchimp Form...'
|
| 529 |
+
),
|
| 530 |
+
this.state.forms.map(function (form) {
|
| 531 |
+
return wp.element.createElement(
|
| 532 |
+
'option',
|
| 533 |
+
{ key: 'yikes-select-form-' + form.id, value: form.id },
|
| 534 |
+
form.form_name
|
| 535 |
+
);
|
| 536 |
+
})
|
| 537 |
+
) : '';
|
| 538 |
+
}
|
| 539 |
+
}, {
|
| 540 |
+
key: 'form_title',
|
| 541 |
+
value: function form_title() {
|
| 542 |
+
return this.props.showTitle === true ? this.props.focus ? wp.element.createElement(
|
| 543 |
+
'h3',
|
| 544 |
+
{
|
| 545 |
+
className: (0, _classnames2.default)("yikes-mailchimp-form-title yikes-mailchimp-form-title-" + this.props.formID),
|
| 546 |
+
key: 'yikes-mailchimp-form-title-wrapper'
|
| 547 |
+
},
|
| 548 |
+
wp.element.createElement(PlainText, {
|
| 549 |
+
placeholder: this.props.formTitle,
|
| 550 |
+
key: 'yikes-mailchimp-form-title-editable',
|
| 551 |
+
value: this.props.formTitle,
|
| 552 |
+
onChange: this.props.toggleFormTitle
|
| 553 |
+
})
|
| 554 |
+
) : wp.element.createElement(
|
| 555 |
+
'h3',
|
| 556 |
+
{ className: (0, _classnames2.default)("yikes-mailchimp-form-title yikes-mailchimp-form-title-" + this.props.formID), key: 'yikes-mailchimp-form-title' },
|
| 557 |
+
this.props.formTitle
|
| 558 |
+
) : '';
|
| 559 |
+
}
|
| 560 |
+
}, {
|
| 561 |
+
key: 'form_description',
|
| 562 |
+
value: function form_description() {
|
| 563 |
+
return this.props.showDescription === true ? wp.element.createElement(
|
| 564 |
+
'section',
|
| 565 |
+
{ className: (0, _classnames2.default)("yikes-mailchimp-form-description yikes-mailchimp-form-description-" + this.props.formID), key: 'yikes-mailchimp-form-description' },
|
| 566 |
+
wp.element.createElement(PlainText, {
|
| 567 |
+
className: 'mailchimpDescription',
|
| 568 |
+
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.' )*/,
|
| 569 |
+
value: this.props.descriptionValue.length > 0 ? this.props.descriptionValue : this.props.formData && this.props.formData.form_description ? this.props.formData.form_description : '',
|
| 570 |
+
onChange: this.props.onChangeDescription,
|
| 571 |
+
key: 'mailchimpDescription'
|
| 572 |
+
})
|
| 573 |
+
) : '';
|
| 574 |
+
}
|
| 575 |
+
}, {
|
| 576 |
+
key: 'get_address_field',
|
| 577 |
+
value: function get_address_field(addr_field, field) {
|
| 578 |
+
switch (addr_field) {
|
| 579 |
+
|
| 580 |
+
case 'addr1':
|
| 581 |
+
case 'addr2':
|
| 582 |
+
case 'city':
|
| 583 |
+
case 'zip':
|
| 584 |
+
return wp.element.createElement(TextControl, {
|
| 585 |
+
id: "yikes-easy-mc-form-" + this.props.formID + "-" + field.merge + '-' + addr_field,
|
| 586 |
+
onChange: this.handleFormFieldChanges,
|
| 587 |
+
type: 'text',
|
| 588 |
+
name: field.merge + '[' + addr_field + ']',
|
| 589 |
+
className: (0, _classnames2.default)('yikes-easy-mc-' + field.type + ' ' + field['additional-classes']),
|
| 590 |
+
key: 'yikes-mailchimp-field-' + field.merge + '-' + addr_field,
|
| 591 |
+
required: field.merge === 'EMAIL' || field.require === '1' ? 'required' : false,
|
| 592 |
+
placeholder: field.placeholder === '1' ? this.address_fields[addr_field] : ''
|
| 593 |
+
});
|
| 594 |
+
break;
|
| 595 |
+
|
| 596 |
+
case 'state':
|
| 597 |
+
return wp.element.createElement(
|
| 598 |
+
'select',
|
| 599 |
+
{
|
| 600 |
+
id: "yikes-easy-mc-form-" + this.props.formID + "-" + field.merge + '-' + addr_field,
|
| 601 |
+
name: field.merge + '[' + addr_field + ']',
|
| 602 |
+
className: (0, _classnames2.default)('yikes-easy-mc-' + field.type + ' ' + field['additional-classes']),
|
| 603 |
+
onChange: this.handleFormFieldChanges,
|
| 604 |
+
key: 'yikes-mailchimp-field-' + field.merge + '-' + addr_field,
|
| 605 |
+
value: '',
|
| 606 |
+
required: field.merge === 'EMAIL' || field.require === '1' ? 'required' : false
|
| 607 |
+
},
|
| 608 |
+
Object.keys(_constants2.default.states).map(function (key) {
|
| 609 |
+
var choice = _constants2.default.states[key];
|
| 610 |
+
return wp.element.createElement(
|
| 611 |
+
'option',
|
| 612 |
+
{ key: 'state-' + key, value: key },
|
| 613 |
+
choice
|
| 614 |
+
);
|
| 615 |
+
})
|
| 616 |
+
);
|
| 617 |
+
break;
|
| 618 |
+
|
| 619 |
+
case 'country':
|
| 620 |
+
return wp.element.createElement(
|
| 621 |
+
'select',
|
| 622 |
+
{
|
| 623 |
+
id: "yikes-easy-mc-form-" + this.props.formID + "-" + field.merge + '-' + addr_field,
|
| 624 |
+
name: field.merge + '[' + addr_field + ']',
|
| 625 |
+
className: (0, _classnames2.default)('yikes-easy-mc-' + field.type + ' ' + field['additional-classes']),
|
| 626 |
+
onChange: this.handleFormFieldChanges,
|
| 627 |
+
key: 'yikes-mailchimp-field-' + field.merge + '-' + addr_field,
|
| 628 |
+
value: '',
|
| 629 |
+
required: field.merge === 'EMAIL' || field.require === '1' ? 'required' : false
|
| 630 |
+
},
|
| 631 |
+
Object.keys(_constants2.default.countries).map(function (key) {
|
| 632 |
+
var choice = _constants2.default.countries[key];
|
| 633 |
+
return wp.element.createElement(
|
| 634 |
+
'option',
|
| 635 |
+
{ key: 'country-' + key, value: key },
|
| 636 |
+
choice
|
| 637 |
+
);
|
| 638 |
+
})
|
| 639 |
+
);
|
| 640 |
+
break;
|
| 641 |
+
}
|
| 642 |
+
}
|
| 643 |
+
}, {
|
| 644 |
+
key: 'get_dropdown_field',
|
| 645 |
+
value: function get_dropdown_field(field) {
|
| 646 |
+
return wp.element.createElement(
|
| 647 |
+
'select',
|
| 648 |
+
{
|
| 649 |
+
id: "yikes-easy-mc-form-" + this.props.formID + "-" + field.merge,
|
| 650 |
+
name: field.merge,
|
| 651 |
+
className: (0, _classnames2.default)('yikes-easy-mc-' + field.type + ' ' + field['additional-classes']),
|
| 652 |
+
onChange: this.handleFormFieldChanges,
|
| 653 |
+
key: 'yikes-mailchimp-field-' + field.merge,
|
| 654 |
+
value: JSON.parse(field.choices)[field.default_choice],
|
| 655 |
+
required: field.merge === 'EMAIL' || field.require === '1' ? 'required' : false
|
| 656 |
+
},
|
| 657 |
+
Object.keys(JSON.parse(field.choices)).map(function (key) {
|
| 658 |
+
var choice = JSON.parse(field.choices)[key];
|
| 659 |
+
return wp.element.createElement(
|
| 660 |
+
'option',
|
| 661 |
+
{ key: (0, _slugify2.default)(choice), value: choice },
|
| 662 |
+
choice
|
| 663 |
+
);
|
| 664 |
+
})
|
| 665 |
+
);
|
| 666 |
+
}
|
| 667 |
+
}, {
|
| 668 |
+
key: 'get_radio_field',
|
| 669 |
+
value: function get_radio_field(field) {
|
| 670 |
+
var _this3 = this;
|
| 671 |
+
|
| 672 |
+
var ii = 0;
|
| 673 |
+
|
| 674 |
+
return JSON.parse(field.choices).map(function (key) {
|
| 675 |
+
ii++;
|
| 676 |
+
return wp.element.createElement(
|
| 677 |
+
'label',
|
| 678 |
+
{
|
| 679 |
+
htmlFor: field.merge + '-' + ii,
|
| 680 |
+
className: 'yikes-easy-mc-checkbox-label',
|
| 681 |
+
key: field.merge + '-label-radio-key-' + ii
|
| 682 |
+
},
|
| 683 |
+
wp.element.createElement('input', {
|
| 684 |
+
type: 'radio',
|
| 685 |
+
name: field.merge,
|
| 686 |
+
id: field.merge + '-' + ii,
|
| 687 |
+
key: field.merge + '-' + ii + '-input-key',
|
| 688 |
+
value: key,
|
| 689 |
+
onChange: _this3.handleFormFieldChanges,
|
| 690 |
+
checked: parseInt(field.default_choice) === ii - 1
|
| 691 |
+
}),
|
| 692 |
+
wp.element.createElement(
|
| 693 |
+
'span',
|
| 694 |
+
{ key: field.merge + '-span-radio-key-' + ii, className: (0, _classnames2.default)(field.merge + '-label') },
|
| 695 |
+
key
|
| 696 |
+
)
|
| 697 |
+
);
|
| 698 |
+
});
|
| 699 |
+
}
|
| 700 |
+
}, {
|
| 701 |
+
key: 'get_url_field',
|
| 702 |
+
value: function get_url_field(field) {
|
| 703 |
+
return wp.element.createElement(TextControl, {
|
| 704 |
+
id: "yikes-easy-mc-form-" + this.props.formID + "-" + field.merge,
|
| 705 |
+
placeholder: field.placeholder,
|
| 706 |
+
onChange: this.handleFormFieldChanges,
|
| 707 |
+
type: 'url',
|
| 708 |
+
value: field.default,
|
| 709 |
+
name: field.merge,
|
| 710 |
+
className: (0, _classnames2.default)('yikes-easy-mc-' + field.type + ' ' + field['additional-classes']),
|
| 711 |
+
key: 'yikes-mailchimp-field-' + field.merge,
|
| 712 |
+
required: field.merge === 'EMAIL' || field.require === '1' ? 'required' : false,
|
| 713 |
+
title: field.type === 'url' ? __('Please enter a valid URL to the website.') : __('Please enter a valid URL to the image.')
|
| 714 |
+
});
|
| 715 |
+
}
|
| 716 |
+
}, {
|
| 717 |
+
key: 'get_default_field',
|
| 718 |
+
value: function get_default_field(field) {
|
| 719 |
+
|
| 720 |
+
var type = field.type === 'zip' || field.type === 'phone' ? 'text' : field.type;
|
| 721 |
+
|
| 722 |
+
return wp.element.createElement(TextControl, {
|
| 723 |
+
id: "yikes-easy-mc-form-" + this.props.formID + "-" + field.merge,
|
| 724 |
+
placeholder: field.placeholder,
|
| 725 |
+
onChange: this.handleFormFieldChanges,
|
| 726 |
+
type: type,
|
| 727 |
+
value: field.default,
|
| 728 |
+
name: field.merge,
|
| 729 |
+
className: (0, _classnames2.default)('yikes-easy-mc-' + field.type + ' ' + field['additional-classes']),
|
| 730 |
+
key: 'yikes-mailchimp-field-' + field.merge,
|
| 731 |
+
required: field.merge === 'EMAIL' || field.require === '1' ? 'required' : false
|
| 732 |
+
});
|
| 733 |
+
}
|
| 734 |
+
}, {
|
| 735 |
+
key: 'get_date_field',
|
| 736 |
+
value: function get_date_field(field) {
|
| 737 |
+
return wp.element.createElement(TextControl, {
|
| 738 |
+
id: "yikes-easy-mc-form-" + this.props.formID + "-" + field.merge,
|
| 739 |
+
placeholder: field.placeholder,
|
| 740 |
+
onChange: this.handleFormFieldChanges,
|
| 741 |
+
type: 'text',
|
| 742 |
+
value: field.default,
|
| 743 |
+
name: field.merge,
|
| 744 |
+
className: (0, _classnames2.default)('yikes-easy-mc-' + field.type + ' ' + field['additional-classes']),
|
| 745 |
+
key: 'yikes-mailchimp-field-' + field.merge,
|
| 746 |
+
required: field.merge === 'EMAIL' || field.require === '1' ? 'required' : false,
|
| 747 |
+
'data-attr-type': field.type,
|
| 748 |
+
'data-date-format': field.date_format.toLowerCase()
|
| 749 |
+
});
|
| 750 |
+
}
|
| 751 |
+
}, {
|
| 752 |
+
key: 'get_radio_interest_group',
|
| 753 |
+
value: function get_radio_interest_group(field) {
|
| 754 |
+
var _this4 = this;
|
| 755 |
+
|
| 756 |
+
var ii = -1;
|
| 757 |
+
var cn = "yikes-easy-mc-checkbox-label " + field['additional-classes'];
|
| 758 |
+
|
| 759 |
+
return Object.keys(JSON.parse(field.groups)).map(function (key) {
|
| 760 |
+
var _classNames2;
|
| 761 |
+
|
| 762 |
+
var choice = JSON.parse(field.groups)[key];
|
| 763 |
+
ii++;
|
| 764 |
+
return wp.element.createElement(
|
| 765 |
+
'label',
|
| 766 |
+
{
|
| 767 |
+
htmlFor: field.group_id + '-' + ii,
|
| 768 |
+
className: (0, _classnames2.default)((_classNames2 = {}, _defineProperty(_classNames2, cn, true), _defineProperty(_classNames2, 'field-no-label', field['hide-label'] === '1'), _classNames2)),
|
| 769 |
+
key: field.group_id + '-' + ii + '-label-key'
|
| 770 |
+
},
|
| 771 |
+
wp.element.createElement('input', {
|
| 772 |
+
type: 'radio',
|
| 773 |
+
name: "group-" + field.group_id + '[]',
|
| 774 |
+
id: field.group_id + '-' + ii,
|
| 775 |
+
key: field.group_id + '-' + ii + '-input-key',
|
| 776 |
+
value: key,
|
| 777 |
+
onChange: _this4.handleFormFieldChanges,
|
| 778 |
+
checked: key === field.default_choice,
|
| 779 |
+
className: (0, _classnames2.default)({ 'yikes-interest-group-required': field.require === '1' })
|
| 780 |
+
}),
|
| 781 |
+
choice
|
| 782 |
+
);
|
| 783 |
+
});
|
| 784 |
+
}
|
| 785 |
+
}, {
|
| 786 |
+
key: 'get_hidden_interest_group',
|
| 787 |
+
value: function get_hidden_interest_group(field) {
|
| 788 |
+
var _this5 = this;
|
| 789 |
+
|
| 790 |
+
var ii = -1;
|
| 791 |
+
|
| 792 |
+
return Object.keys(JSON.parse(field.groups)).map(function (key) {
|
| 793 |
+
var choice = JSON.parse(field.groups)[key];
|
| 794 |
+
ii++;
|
| 795 |
+
return wp.element.createElement(
|
| 796 |
+
'label',
|
| 797 |
+
{
|
| 798 |
+
htmlFor: field.group_id + '-' + ii,
|
| 799 |
+
className: (0, _classnames2.default)('yikes-easy-mc-checkbox-label ' + field['additional-classes']),
|
| 800 |
+
key: field.group_id + '-' + ii + '-label-key'
|
| 801 |
+
},
|
| 802 |
+
wp.element.createElement('input', {
|
| 803 |
+
type: 'checkbox',
|
| 804 |
+
name: "group-" + field.group_id + '[]',
|
| 805 |
+
id: field.group_id + '-' + ii,
|
| 806 |
+
key: field.group_id + '-' + ii + '-input-key',
|
| 807 |
+
value: key,
|
| 808 |
+
onChange: _this5.handleFormFieldChanges,
|
| 809 |
+
checked: field.default_choice && field.default_choice.indexOf(key) !== -1
|
| 810 |
+
}),
|
| 811 |
+
choice
|
| 812 |
+
);
|
| 813 |
+
});
|
| 814 |
+
}
|
| 815 |
+
}, {
|
| 816 |
+
key: 'get_checkboxes_interest_group',
|
| 817 |
+
value: function get_checkboxes_interest_group(field) {
|
| 818 |
+
var _this6 = this;
|
| 819 |
+
|
| 820 |
+
var ii = -1;
|
| 821 |
+
var cn = 'yikes-easy-mc-checkbox-label ' + field['additional-classes'];
|
| 822 |
+
|
| 823 |
+
return Object.keys(JSON.parse(field.groups)).map(function (key) {
|
| 824 |
+
var _classNames3;
|
| 825 |
+
|
| 826 |
+
var choice = JSON.parse(field.groups)[key];
|
| 827 |
+
ii++;
|
| 828 |
+
return wp.element.createElement(
|
| 829 |
+
'label',
|
| 830 |
+
{
|
| 831 |
+
htmlFor: field.group_id + '-' + ii,
|
| 832 |
+
className: (0, _classnames2.default)((_classNames3 = {}, _defineProperty(_classNames3, cn, true), _defineProperty(_classNames3, 'field-no-label', field['hide-label'] === '1'), _classNames3)),
|
| 833 |
+
key: field.group_id + '-' + ii + '-label-key'
|
| 834 |
+
},
|
| 835 |
+
wp.element.createElement('input', {
|
| 836 |
+
className: (0, _classnames2.default)({ 'yikes-interest-group-required': field.require === '1' }),
|
| 837 |
+
type: 'checkbox',
|
| 838 |
+
name: 'group-' + field.group_id + '[]',
|
| 839 |
+
id: field.group_id + '-' + ii,
|
| 840 |
+
key: field.group_id + '-' + ii + '-input-key',
|
| 841 |
+
value: key,
|
| 842 |
+
onChange: _this6.handleFormFieldChanges,
|
| 843 |
+
checked: typeof field.default_choice !== 'undefined' && field.default_choice.indexOf(key) !== -1,
|
| 844 |
+
required: field.require === '1' ? 'required' : false
|
| 845 |
+
}),
|
| 846 |
+
choice
|
| 847 |
+
);
|
| 848 |
+
});
|
| 849 |
+
}
|
| 850 |
+
}, {
|
| 851 |
+
key: 'get_dropdown_interest_group',
|
| 852 |
+
value: function get_dropdown_interest_group(field) {
|
| 853 |
+
var ii = -1;
|
| 854 |
+
|
| 855 |
+
return wp.element.createElement(
|
| 856 |
+
'select',
|
| 857 |
+
{
|
| 858 |
+
id: "yikes-easy-mc-form-" + this.props.formID + "-" + field.group_id,
|
| 859 |
+
name: "group-" + field.group_id,
|
| 860 |
+
className: (0, _classnames2.default)("yikes-easy-mc-dropdown " + field['additional-classes']),
|
| 861 |
+
value: field.default_choice,
|
| 862 |
+
onChange: this.handleFormFieldChanges,
|
| 863 |
+
required: field.require === '1' ? 'required' : false
|
| 864 |
+
},
|
| 865 |
+
Object.keys(JSON.parse(field.groups)).map(function (key) {
|
| 866 |
+
var choice = JSON.parse(field.groups)[key];
|
| 867 |
+
ii++;
|
| 868 |
+
return wp.element.createElement(
|
| 869 |
+
'option',
|
| 870 |
+
{ key: field.group_id + '-' + ii + '-input-key', value: key },
|
| 871 |
+
choice
|
| 872 |
+
);
|
| 873 |
+
})
|
| 874 |
+
);
|
| 875 |
+
}
|
| 876 |
+
}, {
|
| 877 |
+
key: 'form_fields',
|
| 878 |
+
value: function form_fields() {
|
| 879 |
+
var _this7 = this;
|
| 880 |
+
|
| 881 |
+
return this.props.formData && this.props.formData.fields ? Object.keys(this.props.formData.fields).map(function (key) {
|
| 882 |
+
|
| 883 |
+
var field = _this7.props.formData.fields[key];
|
| 884 |
+
|
| 885 |
+
// Form Fields (aka merge variables)
|
| 886 |
+
if (typeof field.merge !== 'undefined') {
|
| 887 |
+
|
| 888 |
+
var desc = field.description.length > 0 ? wp.element.createElement(
|
| 889 |
+
'p',
|
| 890 |
+
{ className: 'form-field-description', id: "form-field-description-" + field.merge, key: "form-field-description-" + field.merge },
|
| 891 |
+
field.description
|
| 892 |
+
) : '';
|
| 893 |
+
|
| 894 |
+
var label = field['hide-label'] !== '1' ? wp.element.createElement(
|
| 895 |
+
'span',
|
| 896 |
+
{ className: (0, _classnames2.default)(field.merge + '-label'), key: field.merge + '-label-span-key' },
|
| 897 |
+
field.label
|
| 898 |
+
) : '';
|
| 899 |
+
|
| 900 |
+
var classes = { 'yikes-mailchimp-field-required': field.merge === 'EMAIL' || field.require === '1' };
|
| 901 |
+
classes[field.merge + '-label'] = true;
|
| 902 |
+
|
| 903 |
+
if (field.type === 'address') {
|
| 904 |
+
|
| 905 |
+
return [field.description_above === '1' && field.description.length > 0 && desc, Object.keys(_this7.address_fields).map(function (addr_field) {
|
| 906 |
+
label = field['hide-label'] !== '1' ? wp.element.createElement(
|
| 907 |
+
'span',
|
| 908 |
+
{ className: (0, _classnames2.default)(field.merge + '-label'), key: field.merge + '-label-span-key-' + addr_field },
|
| 909 |
+
_this7.address_fields[addr_field]
|
| 910 |
+
) : '';
|
| 911 |
+
|
| 912 |
+
return wp.element.createElement(
|
| 913 |
+
'label',
|
| 914 |
+
{
|
| 915 |
+
htmlFor: "yikes-easy-mc-form-" + _this7.props.formID + "-" + field.merge + '-' + addr_field,
|
| 916 |
+
className: (0, _classnames2.default)(classes),
|
| 917 |
+
key: field.merge + '-label-key-' + addr_field,
|
| 918 |
+
style: field.hide === '1' ? { 'display': 'none' } : {}
|
| 919 |
+
},
|
| 920 |
+
label,
|
| 921 |
+
_this7.get_address_field(addr_field, field)
|
| 922 |
+
);
|
| 923 |
+
}), field.description_above !== '1' && field.description.length > 0 && desc];
|
| 924 |
+
} else {
|
| 925 |
+
return wp.element.createElement(
|
| 926 |
+
'label',
|
| 927 |
+
{
|
| 928 |
+
htmlFor: "yikes-easy-mc-form-" + _this7.props.formID + "-" + field.merge,
|
| 929 |
+
className: (0, _classnames2.default)(classes),
|
| 930 |
+
key: field.merge + '-label-key',
|
| 931 |
+
style: field.hide === '1' ? { 'display': 'none' } : {}
|
| 932 |
+
},
|
| 933 |
+
label,
|
| 934 |
+
field.description_above === '1' && field.description.length > 0 && desc,
|
| 935 |
+
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),
|
| 936 |
+
field.description_above !== '1' && field.description.length > 0 && desc
|
| 937 |
+
);
|
| 938 |
+
}
|
| 939 |
+
} else {
|
| 940 |
+
|
| 941 |
+
var desc = field.description.length > 0 ? wp.element.createElement(
|
| 942 |
+
'p',
|
| 943 |
+
{ className: 'form-field-description', id: "form-field-description-" + field.group_id, key: "form-field-description-" + field.group_id },
|
| 944 |
+
field.description
|
| 945 |
+
) : '';
|
| 946 |
+
|
| 947 |
+
var label = field['hide-label'] !== '1' ? wp.element.createElement(
|
| 948 |
+
'span',
|
| 949 |
+
{ key: field.group_id + "-label-span-key", className: (0, _classnames2.default)(field.group_id + "-label checkbox-parent-label") },
|
| 950 |
+
field.label
|
| 951 |
+
) : '';
|
| 952 |
+
|
| 953 |
+
var classes = { 'yikes-mailchimp-field-required': field.require === '1' };
|
| 954 |
+
classes[field.group_id + '-label'] = true;
|
| 955 |
+
|
| 956 |
+
return wp.element.createElement(
|
| 957 |
+
'label',
|
| 958 |
+
{
|
| 959 |
+
htmlFor: field.group_id,
|
| 960 |
+
className: (0, _classnames2.default)(classes),
|
| 961 |
+
key: field.group_id + "-label-span-key",
|
| 962 |
+
style: field.type === 'hidden' || field.hide === '1' ? { 'display': 'none' } : {}
|
| 963 |
+
},
|
| 964 |
+
label,
|
| 965 |
+
field.description_above === '1' && field.description.length > 0 && desc,
|
| 966 |
+
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) : '',
|
| 967 |
+
field.description_above !== '1' && field.description.length > 0 && desc
|
| 968 |
+
);
|
| 969 |
+
}
|
| 970 |
+
}) : '';
|
| 971 |
+
}
|
| 972 |
+
}, {
|
| 973 |
+
key: 'form_recaptcha',
|
| 974 |
+
value: function form_recaptcha() {
|
| 975 |
+
|
| 976 |
+
return this.state.recaptcha_data.success === true && this.state.recaptcha_data.data.site_key && this.props.recaptcha === true ? wp.element.createElement(Recaptcha, {
|
| 977 |
+
sitekey: this.state.recaptcha_data.data.site_key,
|
| 978 |
+
key: 'easy-forms-recaptcha-1',
|
| 979 |
+
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.
|
| 980 |
+
, theme: this.props.recaptchaTheme,
|
| 981 |
+
hl: this.props.recaptchaLang.length > 0 ? this.props.recaptchaLang : this.state.recaptcha_data.data.locale,
|
| 982 |
+
type: this.props.recaptchaType,
|
| 983 |
+
size: this.props.recaptchaSize,
|
| 984 |
+
verifyCallback: '',
|
| 985 |
+
expiredCallback: ''
|
| 986 |
+
}) : '';
|
| 987 |
+
}
|
| 988 |
+
}, {
|
| 989 |
+
key: 'submit_button',
|
| 990 |
+
value: function submit_button() {
|
| 991 |
+
return this.props.formData && this.props.formData.fields ? this.props.focus && this.props.formData.form_settings['yikes-easy-mc-submit-button-type'] === 'text' ? wp.element.createElement(
|
| 992 |
+
'button',
|
| 993 |
+
{
|
| 994 |
+
type: 'submit',
|
| 995 |
+
key: 'mailchimpSubmitButton',
|
| 996 |
+
className: (0, _classnames2.default)("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'])
|
| 997 |
+
},
|
| 998 |
+
wp.element.createElement(PlainText, {
|
| 999 |
+
className: 'yikes-mailchimp-submit-button-span-text',
|
| 1000 |
+
key: 'yikes-mailchimp-submit-button-span-text',
|
| 1001 |
+
value: this.props.submitButtonText ? this.props.submitButtonText : '',
|
| 1002 |
+
onChange: this.props.toggleSubmitButtonText
|
| 1003 |
+
})
|
| 1004 |
+
) : this.props.formData.form_settings['yikes-easy-mc-submit-button-type'] === 'text' ? wp.element.createElement(
|
| 1005 |
+
'button',
|
| 1006 |
+
{
|
| 1007 |
+
type: 'submit',
|
| 1008 |
+
key: 'mailchimpSubmitButton',
|
| 1009 |
+
className: (0, _classnames2.default)("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'])
|
| 1010 |
+
},
|
| 1011 |
+
wp.element.createElement(
|
| 1012 |
+
'span',
|
| 1013 |
+
{ className: 'yikes-mailchimp-submit-button-span-text', key: 'yikes-mailchimp-submit-button-span-text' },
|
| 1014 |
+
this.props.submitButtonText
|
| 1015 |
+
)
|
| 1016 |
+
) : wp.element.createElement('input', {
|
| 1017 |
+
type: 'image',
|
| 1018 |
+
alt: this.props.submitButtonText,
|
| 1019 |
+
src: this.props.formData.form_settings['yikes-easy-mc-submit-button-image'],
|
| 1020 |
+
className: (0, _classnames2.default)("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'])
|
| 1021 |
+
}) : '';
|
| 1022 |
+
}
|
| 1023 |
+
}, {
|
| 1024 |
+
key: 'get_form_section',
|
| 1025 |
+
value: function get_form_section() {
|
| 1026 |
+
return wp.element.createElement(
|
| 1027 |
+
'section',
|
| 1028 |
+
{
|
| 1029 |
+
id: "yikes-mailchimp-container-" + this.props.formID,
|
| 1030 |
+
className: (0, _classnames2.default)("yikes-mailchimp-container yikes-mailchimp-container-" + this.props.formID),
|
| 1031 |
+
key: 'yikes-mailchimp-container-section'
|
| 1032 |
+
},
|
| 1033 |
+
[
|
| 1034 |
+
|
| 1035 |
+
// Form title
|
| 1036 |
+
[this.form_title()],
|
| 1037 |
+
|
| 1038 |
+
// Form Description
|
| 1039 |
+
[this.form_description()],
|
| 1040 |
+
|
| 1041 |
+
// Get the form
|
| 1042 |
+
[this.get_form()]]
|
| 1043 |
+
);
|
| 1044 |
+
}
|
| 1045 |
+
}, {
|
| 1046 |
+
key: 'get_form',
|
| 1047 |
+
value: function get_form() {
|
| 1048 |
+
return (
|
| 1049 |
+
// Form Wrapper
|
| 1050 |
+
wp.element.createElement(
|
| 1051 |
+
'form',
|
| 1052 |
+
{
|
| 1053 |
+
id: (0, _slugify2.default)(this.props.formTitle) + '-' + this.props.formID,
|
| 1054 |
+
className: (0, _classnames2.default)("yikes-easy-mc-form yikes-easy-mc-form-" + this.props.formID + " " + this.props.formData.form_settings['yikes-easy-mc-form-class-names']),
|
| 1055 |
+
key: 'yikes-mailchimp-container-form'
|
| 1056 |
+
},
|
| 1057 |
+
[
|
| 1058 |
+
|
| 1059 |
+
// Form fields
|
| 1060 |
+
[this.form_fields()],
|
| 1061 |
+
|
| 1062 |
+
// Recaptcha
|
| 1063 |
+
[this.form_recaptcha()],
|
| 1064 |
+
|
| 1065 |
+
// Submit button
|
| 1066 |
+
[this.submit_button()]]
|
| 1067 |
+
)
|
| 1068 |
+
);
|
| 1069 |
+
}
|
| 1070 |
+
}, {
|
| 1071 |
+
key: 'render',
|
| 1072 |
+
value: function render() {
|
| 1073 |
+
|
| 1074 |
+
if (this.state.forms.length > 0 && this.props.formData && Object.keys(this.props.formData).length > 0) {
|
| 1075 |
+
|
| 1076 |
+
return wp.element.createElement(
|
| 1077 |
+
'div',
|
| 1078 |
+
{ className: (0, _classnames2.default)(this.props.className) },
|
| 1079 |
+
// Show inspector controls when focused
|
| 1080 |
+
this.props.focus && this.inspector_controls(),
|
| 1081 |
+
// Show the forms dropdown
|
| 1082 |
+
this.forms_dropdown(),
|
| 1083 |
+
wp.element.createElement('hr', { key: 'easy-forms-dropdown-divider' }),
|
| 1084 |
+
// Show the form
|
| 1085 |
+
this.get_form_section()
|
| 1086 |
+
);
|
| 1087 |
+
} else if (this.state.forms.length > 0) {
|
| 1088 |
+
|
| 1089 |
+
// If we don't have form data, show the forms dropdown
|
| 1090 |
+
return wp.element.createElement(
|
| 1091 |
+
'div',
|
| 1092 |
+
{ className: (0, _classnames2.default)(this.props.className) },
|
| 1093 |
+
this.forms_dropdown()
|
| 1094 |
+
);
|
| 1095 |
+
} else if (this.state.api_key_status !== 'valid') {
|
| 1096 |
+
|
| 1097 |
+
// If the API key is invalid, show a message.
|
| 1098 |
+
return wp.element.createElement(
|
| 1099 |
+
'p',
|
| 1100 |
+
{ className: 'yikes-mailchimp-api-key-warning', key: 'yikes-mailchimp-api-key-warning' },
|
| 1101 |
+
wp.element.createElement(
|
| 1102 |
+
'em',
|
| 1103 |
+
null,
|
| 1104 |
+
this.state.api_key_status === 'empty' ? wp.element.createElement(
|
| 1105 |
+
'a',
|
| 1106 |
+
{ href: _constants2.default.settings_url },
|
| 1107 |
+
' ',
|
| 1108 |
+
__('To use this block, please enter an API key on the Easy Forms\' settings page.'),
|
| 1109 |
+
' '
|
| 1110 |
+
) : __('Your API key is invalid.')
|
| 1111 |
+
)
|
| 1112 |
+
);
|
| 1113 |
+
} else if (this.state.forms_loaded === true && this.state.forms.length === 0) {
|
| 1114 |
+
|
| 1115 |
+
// No forms.
|
| 1116 |
+
return wp.element.createElement(
|
| 1117 |
+
'p',
|
| 1118 |
+
{ key: 'no-forms-found', className: (0, _classnames2.default)(this.props.className) },
|
| 1119 |
+
wp.element.createElement(
|
| 1120 |
+
'em',
|
| 1121 |
+
null,
|
| 1122 |
+
__('No forms were found.')
|
| 1123 |
+
)
|
| 1124 |
+
);
|
| 1125 |
+
} else {
|
| 1126 |
+
|
| 1127 |
+
// Show loading... & spinner.
|
| 1128 |
+
return wp.element.createElement(
|
| 1129 |
+
'p',
|
| 1130 |
+
{ key: 'loading-easy-forms', className: (0, _classnames2.default)(this.props.className) },
|
| 1131 |
+
wp.element.createElement(
|
| 1132 |
+
'span',
|
| 1133 |
+
{ key: 'yikes-easy-forms-loading-text' },
|
| 1134 |
+
__('Loading...')
|
| 1135 |
+
),
|
| 1136 |
+
wp.element.createElement(Spinner, { key: 'yikes-easy-forms-loading-spinner' })
|
| 1137 |
+
);
|
| 1138 |
+
}
|
| 1139 |
+
}
|
| 1140 |
+
}]);
|
| 1141 |
+
|
| 1142 |
+
return MailchimpForms;
|
| 1143 |
+
}(Component);
|
| 1144 |
+
|
| 1145 |
+
exports.default = MailchimpForms;
|
| 1146 |
+
|
| 1147 |
+
/***/ }),
|
| 1148 |
+
|
| 1149 |
+
/***/ "./blocks/components/constants.js":
|
| 1150 |
+
/*!****************************************!*\
|
| 1151 |
+
!*** ./blocks/components/constants.js ***!
|
| 1152 |
+
\****************************************/
|
| 1153 |
+
/*! no static exports found */
|
| 1154 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 1155 |
+
|
| 1156 |
+
"use strict";
|
| 1157 |
+
|
| 1158 |
+
|
| 1159 |
+
Object.defineProperty(exports, "__esModule", {
|
| 1160 |
+
value: true
|
| 1161 |
+
});
|
| 1162 |
+
var constants = {
|
| 1163 |
+
states: {
|
| 1164 |
+
'': '—',
|
| 1165 |
+
'AL': 'Alabama',
|
| 1166 |
+
'AK': 'Alaska',
|
| 1167 |
+
'AZ': 'Arizona',
|
| 1168 |
+
'AR': 'Arkansas',
|
| 1169 |
+
'CA': 'California',
|
| 1170 |
+
'CO': 'Colorado',
|
| 1171 |
+
'CT': 'Connecticut',
|
| 1172 |
+
'DE': 'Delaware',
|
| 1173 |
+
'DC': 'District Of Columbia',
|
| 1174 |
+
'FL': 'Florida',
|
| 1175 |
+
'GA': 'Georgia',
|
| 1176 |
+
'HI': 'Hawaii',
|
| 1177 |
+
'ID': 'Idaho',
|
| 1178 |
+
'IL': 'Illinois',
|
| 1179 |
+
'IN': 'Indiana',
|
| 1180 |
+
'IA': 'Iowa',
|
| 1181 |
+
'KS': 'Kansas',
|
| 1182 |
+
'KY': 'Kentucky',
|
| 1183 |
+
'LA': 'Louisiana',
|
| 1184 |
+
'ME': 'Maine',
|
| 1185 |
+
'MD': 'Maryland',
|
| 1186 |
+
'MA': 'Massachusetts',
|
| 1187 |
+
'MI': 'Michigan',
|
| 1188 |
+
'MN': 'Minnesota',
|
| 1189 |
+
'MS': 'Mississippi',
|
| 1190 |
+
'MO': 'Missouri',
|
| 1191 |
+
'MT': 'Montana',
|
| 1192 |
+
'NE': 'Nebraska',
|
| 1193 |
+
'NV': 'Nevada',
|
| 1194 |
+
'NH': 'New Hampshire',
|
| 1195 |
+
'NJ': 'New Jersey',
|
| 1196 |
+
'NM': 'New Mexico',
|
| 1197 |
+
'NY': 'New York',
|
| 1198 |
+
'NC': 'North Carolina',
|
| 1199 |
+
'ND': 'North Dakota',
|
| 1200 |
+
'OH': 'Ohio',
|
| 1201 |
+
'OK': 'Oklahoma',
|
| 1202 |
+
'OR': 'Oregon',
|
| 1203 |
+
'PA': 'Pennsylvania',
|
| 1204 |
+
'RI': 'Rhode Island',
|
| 1205 |
+
'SC': 'South Carolina',
|
| 1206 |
+
'SD': 'South Dakota',
|
| 1207 |
+
'TN': 'Tennessee',
|
| 1208 |
+
'TX': 'Texas',
|
| 1209 |
+
'UT': 'Utah',
|
| 1210 |
+
'VT': 'Vermont',
|
| 1211 |
+
'VA': 'Virginia',
|
| 1212 |
+
'WA': 'Washington',
|
| 1213 |
+
'WV': 'West Virginia',
|
| 1214 |
+
'WI': 'Wisconsin',
|
| 1215 |
+
'WY': 'Wyoming',
|
| 1216 |
+
'AB': 'Alberta',
|
| 1217 |
+
'BC': 'British Columbia',
|
| 1218 |
+
'MB': 'Manitoba',
|
| 1219 |
+
'NB': 'New Brunswick',
|
| 1220 |
+
'NL': 'Newfoundland and Labrador',
|
| 1221 |
+
'NS': 'Nova Scotia',
|
| 1222 |
+
'ON': 'Ontario',
|
| 1223 |
+
'PE': 'Prince Edward Island',
|
| 1224 |
+
'QC': 'Quebec',
|
| 1225 |
+
'SK': 'Saskatchewan',
|
| 1226 |
+
'NT': 'Northwest Territories',
|
| 1227 |
+
'NU': 'Nunavut',
|
| 1228 |
+
'YT': 'Yukon'
|
| 1229 |
+
},
|
| 1230 |
+
countries: {
|
| 1231 |
+
'US': 'United States',
|
| 1232 |
+
'GB': 'United Kingdom',
|
| 1233 |
+
'AF': 'Afghanistan',
|
| 1234 |
+
'AX': 'Aland Islands',
|
| 1235 |
+
'AL': 'Albania',
|
| 1236 |
+
'DZ': 'Algeria',
|
| 1237 |
+
'AS': 'American Samoa',
|
| 1238 |
+
'AD': 'Andorra',
|
| 1239 |
+
'AO': 'Angola',
|
| 1240 |
+
'AI': 'Anguilla',
|
| 1241 |
+
'AQ': 'Antarctica',
|
| 1242 |
+
'AG': 'Antigua and Barbuda',
|
| 1243 |
+
'AR': 'Argentina',
|
| 1244 |
+
'AM': 'Armenia',
|
| 1245 |
+
'AW': 'Aruba',
|
| 1246 |
+
'AU': 'Australia',
|
| 1247 |
+
'AT': 'Austria',
|
| 1248 |
+
'AZ': 'Azerbaijan',
|
| 1249 |
+
'BS': 'Bahamas',
|
| 1250 |
+
'BH': 'Bahrain',
|
| 1251 |
+
'BD': 'Bangladesh',
|
| 1252 |
+
'BB': 'Barbados',
|
| 1253 |
+
'BY': 'Belarus',
|
| 1254 |
+
'BE': 'Belgium',
|
| 1255 |
+
'BZ': 'Belize',
|
| 1256 |
+
'BJ': 'Benin',
|
| 1257 |
+
'BM': 'Bermuda',
|
| 1258 |
+
'BT': 'Bhutan',
|
| 1259 |
+
'BO': 'Bolivia',
|
| 1260 |
+
'BA': 'Bosnia and Herzegovina',
|
| 1261 |
+
'BW': 'Botswana',
|
| 1262 |
+
'BV': 'Bouvet Island',
|
| 1263 |
+
'BR': 'Brazil',
|
| 1264 |
+
'IO': 'British Indian Ocean Territory',
|
| 1265 |
+
'BN': 'Brunei Darussalam',
|
| 1266 |
+
'BG': 'Bulgaria',
|
| 1267 |
+
'BF': 'Burkina Faso',
|
| 1268 |
+
'BI': 'Burundi',
|
| 1269 |
+
'KH': 'Cambodia',
|
| 1270 |
+
'CM': 'Cameroon',
|
| 1271 |
+
'CA': 'Canada',
|
| 1272 |
+
'CV': 'Cape Verde',
|
| 1273 |
+
'KY': 'Cayman Islands',
|
| 1274 |
+
'CF': 'Central African Republic',
|
| 1275 |
+
'TD': 'Chad',
|
| 1276 |
+
'CL': 'Chile',
|
| 1277 |
+
'CN': 'China',
|
| 1278 |
+
'CX': 'Christmas Island',
|
| 1279 |
+
'CC': 'Cocos (Keeling) Islands',
|
| 1280 |
+
'CO': 'Colombia',
|
| 1281 |
+
'KM': 'Comoros',
|
| 1282 |
+
'CG': 'Congo',
|
| 1283 |
+
'CD': 'Congo, The Democratic Republic of The',
|
| 1284 |
+
'CK': 'Cook Islands',
|
| 1285 |
+
'CR': 'Costa Rica',
|
| 1286 |
+
'CI': 'Cote D’ivoire',
|
| 1287 |
+
'HR': 'Croatia',
|
| 1288 |
+
'CU': 'Cuba',
|
| 1289 |
+
'CY': 'Cyprus',
|
| 1290 |
+
'CZ': 'Czech Republic',
|
| 1291 |
+
'DK': 'Denmark',
|
| 1292 |
+
'DJ': 'Djibouti',
|
| 1293 |
+
'DM': 'Dominica',
|
| 1294 |
+
'DO': 'Dominican Republic',
|
| 1295 |
+
'EC': 'Ecuador',
|
| 1296 |
+
'EG': 'Egypt',
|
| 1297 |
+
'SV': 'El Salvador',
|
| 1298 |
+
'GQ': 'Equatorial Guinea',
|
| 1299 |
+
'ER': 'Eritrea',
|
| 1300 |
+
'EE': 'Estonia',
|
| 1301 |
+
'ET': 'Ethiopia',
|
| 1302 |
+
'FK': 'Falkland Islands (Malvinas)',
|
| 1303 |
+
'FO': 'Faroe Islands',
|
| 1304 |
+
'FJ': 'Fiji',
|
| 1305 |
+
'FI': 'Finland',
|
| 1306 |
+
'FR': 'France',
|
| 1307 |
+
'GF': 'French Guiana',
|
| 1308 |
+
'PF': 'French Polynesia',
|
| 1309 |
+
'TF': 'French Southern Territories',
|
| 1310 |
+
'GA': 'Gabon',
|
| 1311 |
+
'GM': 'Gambia',
|
| 1312 |
+
'GE': 'Georgia',
|
| 1313 |
+
'DE': 'Germany',
|
| 1314 |
+
'GH': 'Ghana',
|
| 1315 |
+
'GI': 'Gibraltar',
|
| 1316 |
+
'GR': 'Greece',
|
| 1317 |
+
'GL': 'Greenland',
|
| 1318 |
+
'GD': 'Grenada',
|
| 1319 |
+
'GP': 'Guadeloupe',
|
| 1320 |
+
'GU': 'Guam',
|
| 1321 |
+
'GT': 'Guatemala',
|
| 1322 |
+
'GG': 'Guernsey',
|
| 1323 |
+
'GN': 'Guinea',
|
| 1324 |
+
'GW': 'Guinea-bissau',
|
| 1325 |
+
'GY': 'Guyana',
|
| 1326 |
+
'HT': 'Haiti',
|
| 1327 |
+
'HM': 'Heard Island and Mcdonald Islands',
|
| 1328 |
+
'VA': 'Holy See (Vatican City State)',
|
| 1329 |
+
'HN': 'Honduras',
|
| 1330 |
+
'HK': 'Hong Kong',
|
| 1331 |
+
'HU': 'Hungary',
|
| 1332 |
+
'IS': 'Iceland',
|
| 1333 |
+
'IN': 'India',
|
| 1334 |
+
'ID': 'Indonesia',
|
| 1335 |
+
'IR': 'Iran, Islamic Republic of',
|
| 1336 |
+
'IQ': 'Iraq',
|
| 1337 |
+
'IE': 'Ireland',
|
| 1338 |
+
'IM': 'Isle of Man',
|
| 1339 |
+
'IL': 'Israel',
|
| 1340 |
+
'IT': 'Italy',
|
| 1341 |
+
'JM': 'Jamaica',
|
| 1342 |
+
'JP': 'Japan',
|
| 1343 |
+
'JE': 'Jersey',
|
| 1344 |
+
'JO': 'Jordan',
|
| 1345 |
+
'KZ': 'Kazakhstan',
|
| 1346 |
+
'KE': 'Kenya',
|
| 1347 |
+
'KI': 'Kiribati',
|
| 1348 |
+
'KP': 'Korea, Democratic People’s Republic of',
|
| 1349 |
+
'KR': 'Korea, Republic of',
|
| 1350 |
+
'KW': 'Kuwait',
|
| 1351 |
+
'KG': 'Kyrgyzstan',
|
| 1352 |
+
'LA': 'Lao People’s Democratic Republic',
|
| 1353 |
+
'LV': 'Latvia',
|
| 1354 |
+
'LB': 'Lebanon',
|
| 1355 |
+
'LS': 'Lesotho',
|
| 1356 |
+
'LR': 'Liberia',
|
| 1357 |
+
'LY': 'Libyan Arab Jamahiriya',
|
| 1358 |
+
'LI': 'Liechtenstein',
|
| 1359 |
+
'LT': 'Lithuania',
|
| 1360 |
+
'LU': 'Luxembourg',
|
| 1361 |
+
'MO': 'Macao',
|
| 1362 |
+
'MK': 'Macedonia, The Former Yugoslav Republic of',
|
| 1363 |
+
'MG': 'Madagascar',
|
| 1364 |
+
'MW': 'Malawi',
|
| 1365 |
+
'MY': 'Malaysia',
|
| 1366 |
+
'MV': 'Maldives',
|
| 1367 |
+
'ML': 'Mali',
|
| 1368 |
+
'MT': 'Malta',
|
| 1369 |
+
'MH': 'Marshall Islands',
|
| 1370 |
+
'MQ': 'Martinique',
|
| 1371 |
+
'MR': 'Mauritania',
|
| 1372 |
+
'MU': 'Mauritius',
|
| 1373 |
+
'YT': 'Mayotte',
|
| 1374 |
+
'MX': 'Mexico',
|
| 1375 |
+
'FM': 'Micronesia, Federated States of',
|
| 1376 |
+
'MD': 'Moldova, Republic of',
|
| 1377 |
+
'MC': 'Monaco',
|
| 1378 |
+
'MN': 'Mongolia',
|
| 1379 |
+
'ME': 'Montenegro',
|
| 1380 |
+
'MS': 'Montserrat',
|
| 1381 |
+
'MA': 'Morocco',
|
| 1382 |
+
'MZ': 'Mozambique',
|
| 1383 |
+
'MM': 'Myanmar',
|
| 1384 |
+
'NA': 'Namibia',
|
| 1385 |
+
'NR': 'Nauru',
|
| 1386 |
+
'NP': 'Nepal',
|
| 1387 |
+
'NL': 'Netherlands',
|
| 1388 |
+
'AN': 'Netherlands Antilles',
|
| 1389 |
+
'NC': 'New Caledonia',
|
| 1390 |
+
'NZ': 'New Zealand',
|
| 1391 |
+
'NI': 'Nicaragua',
|
| 1392 |
+
'NE': 'Niger',
|
| 1393 |
+
'NG': 'Nigeria',
|
| 1394 |
+
'NU': 'Niue',
|
| 1395 |
+
'NF': 'Norfolk Island',
|
| 1396 |
+
'MP': 'Northern Mariana Islands',
|
| 1397 |
+
'NO': 'Norway',
|
| 1398 |
+
'OM': 'Oman',
|
| 1399 |
+
'PK': 'Pakistan',
|
| 1400 |
+
'PW': 'Palau',
|
| 1401 |
+
'PS': 'Palestinian Territory, Occupied',
|
| 1402 |
+
'PA': 'Panama',
|
| 1403 |
+
'PG': 'Papua New Guinea',
|
| 1404 |
+
'PY': 'Paraguay',
|
| 1405 |
+
'PE': 'Peru',
|
| 1406 |
+
'PH': 'Philippines',
|
| 1407 |
+
'PN': 'Pitcairn',
|
| 1408 |
+
'PL': 'Poland',
|
| 1409 |
+
'PT': 'Portugal',
|
| 1410 |
+
'PR': 'Puerto Rico',
|
| 1411 |
+
'QA': 'Qatar',
|
| 1412 |
+
'RE': 'Reunion',
|
| 1413 |
+
'RO': 'Romania',
|
| 1414 |
+
'RU': 'Russian Federation',
|
| 1415 |
+
'RW': 'Rwanda',
|
| 1416 |
+
'SH': 'Saint Helena',
|
| 1417 |
+
'KN': 'Saint Kitts and Nevis',
|
| 1418 |
+
'LC': 'Saint Lucia',
|
| 1419 |
+
'PM': 'Saint Pierre and Miquelon',
|
| 1420 |
+
'VC': 'Saint Vincent and The Grenadines',
|
| 1421 |
+
'WS': 'Samoa',
|
| 1422 |
+
'SM': 'San Marino',
|
| 1423 |
+
'ST': 'Sao Tome and Principe',
|
| 1424 |
+
'SA': 'Saudi Arabia',
|
| 1425 |
+
'SN': 'Senegal',
|
| 1426 |
+
'RS': 'Serbia',
|
| 1427 |
+
'SC': 'Seychelles',
|
| 1428 |
+
'SL': 'Sierra Leone',
|
| 1429 |
+
'SG': 'Singapore',
|
| 1430 |
+
'SK': 'Slovakia',
|
| 1431 |
+
'SI': 'Slovenia',
|
| 1432 |
+
'SB': 'Solomon Islands',
|
| 1433 |
+
'SO': 'Somalia',
|
| 1434 |
+
'ZA': 'South Africa',
|
| 1435 |
+
'GS': 'South Georgia and The South Sandwich Islands',
|
| 1436 |
+
'ES': 'Spain',
|
| 1437 |
+
'LK': 'Sri Lanka',
|
| 1438 |
+
'SD': 'Sudan',
|
| 1439 |
+
'SR': 'Suriname',
|
| 1440 |
+
'SJ': 'Svalbard and Jan Mayen',
|
| 1441 |
+
'SZ': 'Swaziland',
|
| 1442 |
+
'SE': 'Sweden',
|
| 1443 |
+
'CH': 'Switzerland',
|
| 1444 |
+
'SY': 'Syrian Arab Republic',
|
| 1445 |
+
'TW': 'Taiwan, Province of China',
|
| 1446 |
+
'TJ': 'Tajikistan',
|
| 1447 |
+
'TZ': 'Tanzania, United Republic of',
|
| 1448 |
+
'TH': 'Thailand',
|
| 1449 |
+
'TL': 'Timor-leste',
|
| 1450 |
+
'TG': 'Togo',
|
| 1451 |
+
'TK': 'Tokelau',
|
| 1452 |
+
'TO': 'Tonga',
|
| 1453 |
+
'TT': 'Trinidad and Tobago',
|
| 1454 |
+
'TN': 'Tunisia',
|
| 1455 |
+
'TR': 'Turkey',
|
| 1456 |
+
'TM': 'Turkmenistan',
|
| 1457 |
+
'TC': 'Turks and Caicos Islands',
|
| 1458 |
+
'TV': 'Tuvalu',
|
| 1459 |
+
'UG': 'Uganda',
|
| 1460 |
+
'UA': 'Ukraine',
|
| 1461 |
+
'AE': 'United Arab Emirates',
|
| 1462 |
+
'UM': 'United States Minor Outlying Islands',
|
| 1463 |
+
'UY': 'Uruguay',
|
| 1464 |
+
'UZ': 'Uzbekistan',
|
| 1465 |
+
'VU': 'Vanuatu',
|
| 1466 |
+
'VE': 'Venezuela',
|
| 1467 |
+
'VN': 'Viet Nam',
|
| 1468 |
+
'VG': 'Virgin Islands, British',
|
| 1469 |
+
'VI': 'Virgin Islands, U.S.',
|
| 1470 |
+
'WF': 'Wallis and Futuna',
|
| 1471 |
+
'EH': 'Western Sahara',
|
| 1472 |
+
'YE': 'Yemen',
|
| 1473 |
+
'ZM': 'Zambia',
|
| 1474 |
+
'ZW': 'Zimbabwe'
|
| 1475 |
+
},
|
| 1476 |
+
locales: {
|
| 1477 |
+
"ar": "Arabic",
|
| 1478 |
+
"af": "Afrikaans",
|
| 1479 |
+
"am": "Amharic",
|
| 1480 |
+
"hy": "Armenian",
|
| 1481 |
+
"az": "Azerbaijani",
|
| 1482 |
+
"eu": "Basque",
|
| 1483 |
+
"bn": "Bengali",
|
| 1484 |
+
"bg": "Bulgarian",
|
| 1485 |
+
"ca": "Catalan",
|
| 1486 |
+
"zh-HK": "Chinese (Hong Kong)",
|
| 1487 |
+
"zh-CN": "Chinese (Simplified)",
|
| 1488 |
+
"zh-TW": "Chinese (Traditional)",
|
| 1489 |
+
"hr": "Croatian",
|
| 1490 |
+
"cs": "Czech",
|
| 1491 |
+
"da": "Danish",
|
| 1492 |
+
"nl": "Dutch",
|
| 1493 |
+
"en-GB": "English (UK)",
|
| 1494 |
+
"en": "English (US)",
|
| 1495 |
+
"et": "Estonian",
|
| 1496 |
+
"fil": "Filipino",
|
| 1497 |
+
"fi": "Finnish",
|
| 1498 |
+
"fr": "French",
|
| 1499 |
+
"fr-CA": "French (Canadian)",
|
| 1500 |
+
"gl": "Galician",
|
| 1501 |
+
"ka": "Georgian",
|
| 1502 |
+
"de": "German",
|
| 1503 |
+
"de-AT": "German (Austria)",
|
| 1504 |
+
"de-CH": "German (Switzerland)",
|
| 1505 |
+
"el": "Greek",
|
| 1506 |
+
"gu": "Gujarati",
|
| 1507 |
+
"iw": "Hebrew",
|
| 1508 |
+
"hi": "Hindi",
|
| 1509 |
+
"hu": "Hungarain",
|
| 1510 |
+
"is": "Icelandic",
|
| 1511 |
+
"id": "Indonesian",
|
| 1512 |
+
"it": "Italian",
|
| 1513 |
+
"ja": "Japanese",
|
| 1514 |
+
"kn": "Kannada",
|
| 1515 |
+
"ko": "Korean",
|
| 1516 |
+
"lo": "Laothian",
|
| 1517 |
+
"lv": "Latvian",
|
| 1518 |
+
"lt": "Lithuanian",
|
| 1519 |
+
"ms": "Malay",
|
| 1520 |
+
"ml": "Malayalam",
|
| 1521 |
+
"mr": "Marathi",
|
| 1522 |
+
"mn": "Mongolian",
|
| 1523 |
+
"no": "Norwegian",
|
| 1524 |
+
"fa": "Persian",
|
| 1525 |
+
"pl": "Polish",
|
| 1526 |
+
"pt": "Portuguese",
|
| 1527 |
+
"pt-BR": "Portuguese (Brazil)",
|
| 1528 |
+
"pt-PT": "Portuguese (Portugal)",
|
| 1529 |
+
"ro": "Romanian",
|
| 1530 |
+
"ru": "Russian",
|
| 1531 |
+
"sr": "Serbian",
|
| 1532 |
+
"si": "Sinhalese",
|
| 1533 |
+
"sk": "Slovak",
|
| 1534 |
+
"sl": "Slovenian",
|
| 1535 |
+
"es": "Spanish",
|
| 1536 |
+
"es-419": "Spanish (Latin America)",
|
| 1537 |
+
"sw": "Swahili",
|
| 1538 |
+
"sv": "Swedish",
|
| 1539 |
+
"ta": "Tamil",
|
| 1540 |
+
"te": "Telugu",
|
| 1541 |
+
"th": "Thai",
|
| 1542 |
+
"tr": "Turkish",
|
| 1543 |
+
"uk": "Ukrainian",
|
| 1544 |
+
"ur": "Urdu",
|
| 1545 |
+
"vi": "Vietnamese",
|
| 1546 |
+
"zu": "Zulu"
|
| 1547 |
+
},
|
| 1548 |
+
settings_url: 'wp-admin/admin.php?page=yikes-inc-easy-mailchimp-settings'
|
| 1549 |
+
};
|
| 1550 |
+
|
| 1551 |
+
exports.default = constants;
|
| 1552 |
+
|
| 1553 |
+
/***/ }),
|
| 1554 |
+
|
| 1555 |
+
/***/ "./blocks/components/enable-submit-button-editing.js":
|
| 1556 |
+
/*!***********************************************************!*\
|
| 1557 |
+
!*** ./blocks/components/enable-submit-button-editing.js ***!
|
| 1558 |
+
\***********************************************************/
|
| 1559 |
+
/*! no static exports found */
|
| 1560 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 1561 |
+
|
| 1562 |
+
"use strict";
|
| 1563 |
+
|
| 1564 |
+
|
| 1565 |
+
(function ($) {
|
| 1566 |
+
|
| 1567 |
+
$(document).ready(function () {
|
| 1568 |
+
|
| 1569 |
+
$('body').on('click', '.yikes-easy-mc-submit-button', function (event) {
|
| 1570 |
+
event.preventDefault();
|
| 1571 |
+
event.stopPropagation();
|
| 1572 |
+
$('.yikes-mailchimp-submit-button-span-text').focus();
|
| 1573 |
+
});
|
| 1574 |
+
|
| 1575 |
+
$('body').on('click', '.yikes-mailchimp-submit-button-span-text', function (event) {
|
| 1576 |
+
event.preventDefault();
|
| 1577 |
+
event.stopPropagation();
|
| 1578 |
+
});
|
| 1579 |
+
});
|
| 1580 |
+
})(jQuery);
|
| 1581 |
+
|
| 1582 |
+
/***/ }),
|
| 1583 |
+
|
| 1584 |
+
/***/ "./blocks/components/slugify.js":
|
| 1585 |
+
/*!**************************************!*\
|
| 1586 |
+
!*** ./blocks/components/slugify.js ***!
|
| 1587 |
+
\**************************************/
|
| 1588 |
+
/*! no static exports found */
|
| 1589 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 1590 |
+
|
| 1591 |
+
"use strict";
|
| 1592 |
+
|
| 1593 |
+
|
| 1594 |
+
Object.defineProperty(exports, "__esModule", {
|
| 1595 |
+
value: true
|
| 1596 |
+
});
|
| 1597 |
+
exports.default = slugify;
|
| 1598 |
+
/*
|
| 1599 |
+
* This should have the same effect as WP/PHP's `sanitize_title()` function
|
| 1600 |
+
*
|
| 1601 |
+
* Source: https://gist.github.com/mathewbyrne/1280286
|
| 1602 |
+
*/
|
| 1603 |
+
function slugify(text) {
|
| 1604 |
+
|
| 1605 |
+
// Use hash map for special characters
|
| 1606 |
+
var 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', "·": '-', "/": '-', "_": '-', ",": '-', ":": '-', ";": '-' };
|
| 1607 |
+
|
| 1608 |
+
return text.toString().toLowerCase().replace(/\s+/g, '-') // Replace spaces with -
|
| 1609 |
+
.replace(/./g, function (target, index, str) {
|
| 1610 |
+
return specialChars[target] || target;
|
| 1611 |
+
}) // Replace special characters using the hash map
|
| 1612 |
+
.replace(/&/g, '-and-') // Replace & with 'and'
|
| 1613 |
+
.replace(/[^\w\-]+/g, '') // Remove all non-word chars
|
| 1614 |
+
.replace(/\-\-+/g, '-') // Replace multiple - with single -
|
| 1615 |
+
.replace(/^-+/, '') // Trim - from start of text
|
| 1616 |
+
.replace(/-+$/, ''); // Trim - from end of text
|
| 1617 |
+
};
|
| 1618 |
+
|
| 1619 |
+
/***/ }),
|
| 1620 |
+
|
| 1621 |
+
/***/ "./blocks/easy-forms-block/dev-easy-forms-block.js":
|
| 1622 |
+
/*!*********************************************************!*\
|
| 1623 |
+
!*** ./blocks/easy-forms-block/dev-easy-forms-block.js ***!
|
| 1624 |
+
\*********************************************************/
|
| 1625 |
+
/*! no static exports found */
|
| 1626 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 1627 |
+
|
| 1628 |
+
"use strict";
|
| 1629 |
+
|
| 1630 |
+
|
| 1631 |
+
var _classnames = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");
|
| 1632 |
+
|
| 1633 |
+
var _classnames2 = _interopRequireDefault(_classnames);
|
| 1634 |
+
|
| 1635 |
+
var _api = __webpack_require__(/*! ../components/api.js */ "./blocks/components/api.js");
|
| 1636 |
+
|
| 1637 |
+
var _api2 = _interopRequireDefault(_api);
|
| 1638 |
+
|
| 1639 |
+
var _classMailchimpForms = __webpack_require__(/*! ../components/class.MailchimpForms.js */ "./blocks/components/class.MailchimpForms.js");
|
| 1640 |
+
|
| 1641 |
+
var _classMailchimpForms2 = _interopRequireDefault(_classMailchimpForms);
|
| 1642 |
+
|
| 1643 |
+
__webpack_require__(/*! ./easy-forms-block.scss */ "./blocks/easy-forms-block/easy-forms-block.scss");
|
| 1644 |
+
|
| 1645 |
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
| 1646 |
+
|
| 1647 |
+
__webpack_require__(/*! ../components/enable-submit-button-editing.js */ "./blocks/components/enable-submit-button-editing.js");
|
| 1648 |
+
|
| 1649 |
+
// Get just the __() localization function from wp.i18n
|
| 1650 |
+
var __ = wp.i18n.__;
|
| 1651 |
+
|
| 1652 |
+
// Get registerBlockType and other methods from wp.blocks
|
| 1653 |
+
|
| 1654 |
+
var registerBlockType = wp.blocks.registerBlockType;
|
| 1655 |
+
|
| 1656 |
+
|
| 1657 |
+
var edit_easy_form = function edit_easy_form(props) {
|
| 1658 |
+
|
| 1659 |
+
var onChangeForm = function onChangeForm(event) {
|
| 1660 |
+
props.setAttributes({ form_id: event.target.value });
|
| 1661 |
+
|
| 1662 |
+
if (event.target.value.length > 0) {
|
| 1663 |
+
var api = new _api2.default();
|
| 1664 |
+
api.get_form(event.target.value).then(function (form) {
|
| 1665 |
+
props.setAttributes({ form: form.data });
|
| 1666 |
+
props.setAttributes({ form_description: form.data.form_description });
|
| 1667 |
+
props.setAttributes({ form_title: form.data.form_name });
|
| 1668 |
+
props.setAttributes({ is_ajax: form.data.submission_settings.ajax === '1' });
|
| 1669 |
+
props.setAttributes({ submit_button_text: form.data.form_settings['yikes-easy-mc-submit-button-text'] });
|
| 1670 |
+
});
|
| 1671 |
+
}
|
| 1672 |
+
};
|
| 1673 |
+
|
| 1674 |
+
var onChangeDescription = function onChangeDescription(value) {
|
| 1675 |
+
props.setAttributes({ form_description: value });
|
| 1676 |
+
};
|
| 1677 |
+
|
| 1678 |
+
var toggleShowDescription = function toggleShowDescription(event) {
|
| 1679 |
+
props.setAttributes({ show_description: !!event.target.checked });
|
| 1680 |
+
};
|
| 1681 |
+
|
| 1682 |
+
var toggleInline = function toggleInline(event) {
|
| 1683 |
+
props.setAttributes({ inline: !!event.target.checked });
|
| 1684 |
+
};
|
| 1685 |
+
|
| 1686 |
+
var toggleShowTitle = function toggleShowTitle(event) {
|
| 1687 |
+
props.setAttributes({ show_title: !!event.target.checked });
|
| 1688 |
+
};
|
| 1689 |
+
|
| 1690 |
+
var toggleFormTitle = function toggleFormTitle(value) {
|
| 1691 |
+
props.setAttributes({ form_title: value });
|
| 1692 |
+
};
|
| 1693 |
+
|
| 1694 |
+
var toggleIsAjax = function toggleIsAjax(event) {
|
| 1695 |
+
props.setAttributes({ is_ajax: !!event.target.checked });
|
| 1696 |
+
};
|
| 1697 |
+
|
| 1698 |
+
/* Allow this function to be called via a checkbox handler or directly by passing in a boolean */
|
| 1699 |
+
var toggleRecaptchaAbstract = function toggleRecaptchaAbstract(checked) {
|
| 1700 |
+
props.setAttributes({ recaptcha: checked });
|
| 1701 |
+
};
|
| 1702 |
+
|
| 1703 |
+
var toggleRecaptcha = function toggleRecaptcha(event) {
|
| 1704 |
+
toggleRecaptchaAbstract(!!event.target.checked);
|
| 1705 |
+
};
|
| 1706 |
+
|
| 1707 |
+
var toggleRecaptchaTheme = function toggleRecaptchaTheme(value) {
|
| 1708 |
+
props.setAttributes({ recaptcha_theme: value });
|
| 1709 |
+
};
|
| 1710 |
+
|
| 1711 |
+
var toggleRecaptchaLang = function toggleRecaptchaLang(value) {
|
| 1712 |
+
props.setAttributes({ recaptcha_lang: value });
|
| 1713 |
+
};
|
| 1714 |
+
|
| 1715 |
+
var toggleRecaptchaType = function toggleRecaptchaType(value) {
|
| 1716 |
+
props.setAttributes({ recaptcha_type: value });
|
| 1717 |
+
};
|
| 1718 |
+
|
| 1719 |
+
var toggleRecaptchaSize = function toggleRecaptchaSize(value) {
|
| 1720 |
+
props.setAttributes({ recaptcha_size: value });
|
| 1721 |
+
};
|
| 1722 |
+
|
| 1723 |
+
var toggleRecaptchaVerifyCallback = function toggleRecaptchaVerifyCallback(value) {
|
| 1724 |
+
props.setAttributes({ recaptcha_verify_callback: value });
|
| 1725 |
+
};
|
| 1726 |
+
|
| 1727 |
+
var toggleRecaptchaExpiredCallback = function toggleRecaptchaExpiredCallback(value) {
|
| 1728 |
+
props.setAttributes({ recaptcha_expired_callback: value });
|
| 1729 |
+
};
|
| 1730 |
+
|
| 1731 |
+
var toggleSubmitButtonText = function toggleSubmitButtonText(value) {
|
| 1732 |
+
props.setAttributes({ submit_button_text: value });
|
| 1733 |
+
};
|
| 1734 |
+
|
| 1735 |
+
return wp.element.createElement(_classMailchimpForms2.default, {
|
| 1736 |
+
className: (0, _classnames2.default)(props.className),
|
| 1737 |
+
onChangeForm: onChangeForm,
|
| 1738 |
+
formID: props.attributes.form_id,
|
| 1739 |
+
formData: props.attributes.form,
|
| 1740 |
+
onChangeDescription: onChangeDescription,
|
| 1741 |
+
descriptionValue: props.attributes.form_description,
|
| 1742 |
+
showDescription: props.attributes.show_description,
|
| 1743 |
+
toggleShowDescription: toggleShowDescription,
|
| 1744 |
+
focus: !!props.isSelected,
|
| 1745 |
+
inline: props.attributes.inline,
|
| 1746 |
+
toggleInline: toggleInline,
|
| 1747 |
+
formTitle: props.attributes.form_title,
|
| 1748 |
+
toggleFormTitle: toggleFormTitle,
|
| 1749 |
+
showTitle: props.attributes.show_title,
|
| 1750 |
+
toggleShowTitle: toggleShowTitle,
|
| 1751 |
+
isAjax: props.attributes.is_ajax,
|
| 1752 |
+
toggleIsAjax: toggleIsAjax,
|
| 1753 |
+
toggleRecaptchaAbstract: toggleRecaptchaAbstract,
|
| 1754 |
+
recaptcha: props.attributes.recaptcha,
|
| 1755 |
+
toggleRecaptcha: toggleRecaptcha,
|
| 1756 |
+
recaptchaTheme: props.attributes.recaptcha_theme,
|
| 1757 |
+
toggleRecaptchaTheme: toggleRecaptchaTheme,
|
| 1758 |
+
recaptchaLang: props.attributes.recaptcha_lang,
|
| 1759 |
+
toggleRecaptchaLang: toggleRecaptchaLang,
|
| 1760 |
+
recaptchaType: props.attributes.recaptcha_type,
|
| 1761 |
+
toggleRecaptchaType: toggleRecaptchaType,
|
| 1762 |
+
recaptchaSize: props.attributes.recaptcha_size,
|
| 1763 |
+
toggleRecaptchaSize: toggleRecaptchaSize,
|
| 1764 |
+
recaptchaVerifyCallback: props.attributes.recaptcha_verify_callback,
|
| 1765 |
+
toggleRecaptchaVerifyCallback: toggleRecaptchaVerifyCallback,
|
| 1766 |
+
recaptchaExpiredCallback: props.attributes.recaptcha_expired_callback,
|
| 1767 |
+
toggleRecaptchaExpiredCallback: toggleRecaptchaExpiredCallback,
|
| 1768 |
+
submitButtonText: props.attributes.submit_button_text,
|
| 1769 |
+
toggleSubmitButtonText: toggleSubmitButtonText
|
| 1770 |
+
});
|
| 1771 |
+
};
|
| 1772 |
+
|
| 1773 |
+
var save_easy_form = function save_easy_form(props) {
|
| 1774 |
+
return null;
|
| 1775 |
+
};
|
| 1776 |
+
|
| 1777 |
+
var settings = {
|
| 1778 |
+
title: __('Easy Forms for Mailchimp'),
|
| 1779 |
+
category: 'common', // Options include "common", "formatting", "layout", "widgets" and "embed."
|
| 1780 |
+
icon: 'email-alt',
|
| 1781 |
+
keywords: ['mailchimp', 'easy forms for mailchimp', 'yikes'],
|
| 1782 |
+
attributes: {
|
| 1783 |
+
form_id: {
|
| 1784 |
+
type: 'string',
|
| 1785 |
+
default: ''
|
| 1786 |
+
},
|
| 1787 |
+
form: {
|
| 1788 |
+
type: 'object'
|
| 1789 |
+
},
|
| 1790 |
+
form_description: {
|
| 1791 |
+
type: 'string',
|
| 1792 |
+
default: ''
|
| 1793 |
+
},
|
| 1794 |
+
show_description: {
|
| 1795 |
+
type: 'boolean',
|
| 1796 |
+
default: false
|
| 1797 |
+
},
|
| 1798 |
+
inline: {
|
| 1799 |
+
type: 'boolean',
|
| 1800 |
+
default: false
|
| 1801 |
+
},
|
| 1802 |
+
show_title: {
|
| 1803 |
+
type: 'boolean',
|
| 1804 |
+
default: false
|
| 1805 |
+
},
|
| 1806 |
+
form_title: {
|
| 1807 |
+
type: 'string',
|
| 1808 |
+
default: ''
|
| 1809 |
+
},
|
| 1810 |
+
is_ajax: {
|
| 1811 |
+
type: 'boolean',
|
| 1812 |
+
default: true
|
| 1813 |
+
},
|
| 1814 |
+
recaptcha: {
|
| 1815 |
+
type: 'boolean',
|
| 1816 |
+
default: false
|
| 1817 |
+
},
|
| 1818 |
+
recaptcha_theme: {
|
| 1819 |
+
type: 'string',
|
| 1820 |
+
default: 'light'
|
| 1821 |
+
},
|
| 1822 |
+
recaptcha_lang: {
|
| 1823 |
+
type: 'string',
|
| 1824 |
+
default: ''
|
| 1825 |
+
},
|
| 1826 |
+
recaptcha_type: {
|
| 1827 |
+
type: 'string',
|
| 1828 |
+
default: 'image'
|
| 1829 |
+
},
|
| 1830 |
+
recaptcha_size: {
|
| 1831 |
+
type: 'string',
|
| 1832 |
+
default: 'normal'
|
| 1833 |
+
},
|
| 1834 |
+
recaptcha_verify_callback: {
|
| 1835 |
+
type: 'string',
|
| 1836 |
+
default: ''
|
| 1837 |
+
},
|
| 1838 |
+
recaptcha_expired_callback: {
|
| 1839 |
+
type: 'string',
|
| 1840 |
+
default: ''
|
| 1841 |
+
},
|
| 1842 |
+
submit_button_text: {
|
| 1843 |
+
type: 'string',
|
| 1844 |
+
default: ''
|
| 1845 |
+
}
|
| 1846 |
+
},
|
| 1847 |
+
edit: edit_easy_form,
|
| 1848 |
+
save: save_easy_form
|
| 1849 |
+
};
|
| 1850 |
+
|
| 1851 |
+
var EasyFormsBlock = registerBlockType(
|
| 1852 |
+
|
| 1853 |
+
// Name
|
| 1854 |
+
ez_forms_gb_data.block_namespace + ez_forms_gb_data.block_name,
|
| 1855 |
+
|
| 1856 |
+
// Settings
|
| 1857 |
+
settings);
|
| 1858 |
+
|
| 1859 |
+
/***/ }),
|
| 1860 |
+
|
| 1861 |
+
/***/ "./blocks/easy-forms-block/easy-forms-block.scss":
|
| 1862 |
+
/*!*******************************************************!*\
|
| 1863 |
+
!*** ./blocks/easy-forms-block/easy-forms-block.scss ***!
|
| 1864 |
+
\*******************************************************/
|
| 1865 |
+
/*! no static exports found */
|
| 1866 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 1867 |
+
|
| 1868 |
+
|
| 1869 |
+
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");
|
| 1870 |
+
|
| 1871 |
+
if(typeof content === 'string') content = [[module.i, content, '']];
|
| 1872 |
+
|
| 1873 |
+
var transform;
|
| 1874 |
+
var insertInto;
|
| 1875 |
+
|
| 1876 |
+
|
| 1877 |
+
|
| 1878 |
+
var options = {"hmr":true}
|
| 1879 |
+
|
| 1880 |
+
options.transform = transform
|
| 1881 |
+
options.insertInto = undefined;
|
| 1882 |
+
|
| 1883 |
+
var update = __webpack_require__(/*! ../../node_modules/style-loader/lib/addStyles.js */ "./node_modules/style-loader/lib/addStyles.js")(content, options);
|
| 1884 |
+
|
| 1885 |
+
if(content.locals) module.exports = content.locals;
|
| 1886 |
+
|
| 1887 |
+
if(false) {}
|
| 1888 |
+
|
| 1889 |
+
/***/ }),
|
| 1890 |
+
|
| 1891 |
+
/***/ "./blocks/index.js":
|
| 1892 |
+
/*!*************************!*\
|
| 1893 |
+
!*** ./blocks/index.js ***!
|
| 1894 |
+
\*************************/
|
| 1895 |
+
/*! no static exports found */
|
| 1896 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 1897 |
+
|
| 1898 |
+
"use strict";
|
| 1899 |
+
|
| 1900 |
+
|
| 1901 |
+
__webpack_require__(/*! ./easy-forms-block/dev-easy-forms-block.js */ "./blocks/easy-forms-block/dev-easy-forms-block.js");
|
| 1902 |
+
|
| 1903 |
+
/***/ }),
|
| 1904 |
+
|
| 1905 |
+
/***/ "./node_modules/classnames/index.js":
|
| 1906 |
+
/*!******************************************!*\
|
| 1907 |
+
!*** ./node_modules/classnames/index.js ***!
|
| 1908 |
+
\******************************************/
|
| 1909 |
+
/*! no static exports found */
|
| 1910 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 1911 |
+
|
| 1912 |
+
"use strict";
|
| 1913 |
+
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;
|
| 1914 |
+
|
| 1915 |
+
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
| 1916 |
+
|
| 1917 |
+
/*!
|
| 1918 |
+
Copyright (c) 2017 Jed Watson.
|
| 1919 |
+
Licensed under the MIT License (MIT), see
|
| 1920 |
+
http://jedwatson.github.io/classnames
|
| 1921 |
+
*/
|
| 1922 |
+
/* global define */
|
| 1923 |
+
|
| 1924 |
+
(function () {
|
| 1925 |
+
'use strict';
|
| 1926 |
+
|
| 1927 |
+
var hasOwn = {}.hasOwnProperty;
|
| 1928 |
+
|
| 1929 |
+
function classNames() {
|
| 1930 |
+
var classes = [];
|
| 1931 |
+
|
| 1932 |
+
for (var i = 0; i < arguments.length; i++) {
|
| 1933 |
+
var arg = arguments[i];
|
| 1934 |
+
if (!arg) continue;
|
| 1935 |
+
|
| 1936 |
+
var argType = typeof arg === 'undefined' ? 'undefined' : _typeof(arg);
|
| 1937 |
+
|
| 1938 |
+
if (argType === 'string' || argType === 'number') {
|
| 1939 |
+
classes.push(arg);
|
| 1940 |
+
} else if (Array.isArray(arg) && arg.length) {
|
| 1941 |
+
var inner = classNames.apply(null, arg);
|
| 1942 |
+
if (inner) {
|
| 1943 |
+
classes.push(inner);
|
| 1944 |
+
}
|
| 1945 |
+
} else if (argType === 'object') {
|
| 1946 |
+
for (var key in arg) {
|
| 1947 |
+
if (hasOwn.call(arg, key) && arg[key]) {
|
| 1948 |
+
classes.push(key);
|
| 1949 |
+
}
|
| 1950 |
+
}
|
| 1951 |
+
}
|
| 1952 |
+
}
|
| 1953 |
+
|
| 1954 |
+
return classes.join(' ');
|
| 1955 |
+
}
|
| 1956 |
+
|
| 1957 |
+
if (typeof module !== 'undefined' && module.exports) {
|
| 1958 |
+
classNames.default = classNames;
|
| 1959 |
+
module.exports = classNames;
|
| 1960 |
+
} else if ("function" === 'function' && _typeof(__webpack_require__(/*! !webpack amd options */ "./node_modules/webpack/buildin/amd-options.js")) === 'object' && __webpack_require__(/*! !webpack amd options */ "./node_modules/webpack/buildin/amd-options.js")) {
|
| 1961 |
+
// register as 'classnames', consistent with npm package name
|
| 1962 |
+
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
|
| 1963 |
+
return classNames;
|
| 1964 |
+
}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
|
| 1965 |
+
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
|
| 1966 |
+
} else {
|
| 1967 |
+
window.classNames = classNames;
|
| 1968 |
+
}
|
| 1969 |
+
})();
|
| 1970 |
+
|
| 1971 |
+
/***/ }),
|
| 1972 |
+
|
| 1973 |
+
/***/ "./node_modules/css-loader/index.js!./node_modules/sass-loader/lib/loader.js!./blocks/easy-forms-block/easy-forms-block.scss":
|
| 1974 |
+
/*!**************************************************************************************************************************!*\
|
| 1975 |
+
!*** ./node_modules/css-loader!./node_modules/sass-loader/lib/loader.js!./blocks/easy-forms-block/easy-forms-block.scss ***!
|
| 1976 |
+
\**************************************************************************************************************************/
|
| 1977 |
+
/*! no static exports found */
|
| 1978 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 1979 |
+
|
| 1980 |
+
exports = module.exports = __webpack_require__(/*! ../../node_modules/css-loader/lib/css-base.js */ "./node_modules/css-loader/lib/css-base.js")(false);
|
| 1981 |
+
// imports
|
| 1982 |
+
|
| 1983 |
+
|
| 1984 |
+
// module
|
| 1985 |
+
exports.push([module.i, ".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", ""]);
|
| 1986 |
+
|
| 1987 |
+
// exports
|
| 1988 |
+
|
| 1989 |
+
|
| 1990 |
+
/***/ }),
|
| 1991 |
+
|
| 1992 |
+
/***/ "./node_modules/css-loader/lib/css-base.js":
|
| 1993 |
+
/*!*************************************************!*\
|
| 1994 |
+
!*** ./node_modules/css-loader/lib/css-base.js ***!
|
| 1995 |
+
\*************************************************/
|
| 1996 |
+
/*! no static exports found */
|
| 1997 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 1998 |
+
|
| 1999 |
+
"use strict";
|
| 2000 |
+
|
| 2001 |
+
|
| 2002 |
+
/*
|
| 2003 |
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
| 2004 |
+
Author Tobias Koppers @sokra
|
| 2005 |
+
*/
|
| 2006 |
+
// css base code, injected by the css-loader
|
| 2007 |
+
module.exports = function (useSourceMap) {
|
| 2008 |
+
var list = [];
|
| 2009 |
+
|
| 2010 |
+
// return the list of modules as css string
|
| 2011 |
+
list.toString = function toString() {
|
| 2012 |
+
return this.map(function (item) {
|
| 2013 |
+
var content = cssWithMappingToString(item, useSourceMap);
|
| 2014 |
+
if (item[2]) {
|
| 2015 |
+
return "@media " + item[2] + "{" + content + "}";
|
| 2016 |
+
} else {
|
| 2017 |
+
return content;
|
| 2018 |
+
}
|
| 2019 |
+
}).join("");
|
| 2020 |
+
};
|
| 2021 |
+
|
| 2022 |
+
// import a list of modules into the list
|
| 2023 |
+
list.i = function (modules, mediaQuery) {
|
| 2024 |
+
if (typeof modules === "string") modules = [[null, modules, ""]];
|
| 2025 |
+
var alreadyImportedModules = {};
|
| 2026 |
+
for (var i = 0; i < this.length; i++) {
|
| 2027 |
+
var id = this[i][0];
|
| 2028 |
+
if (typeof id === "number") alreadyImportedModules[id] = true;
|
| 2029 |
+
}
|
| 2030 |
+
for (i = 0; i < modules.length; i++) {
|
| 2031 |
+
var item = modules[i];
|
| 2032 |
+
// skip already imported module
|
| 2033 |
+
// this implementation is not 100% perfect for weird media query combinations
|
| 2034 |
+
// when a module is imported multiple times with different media queries.
|
| 2035 |
+
// I hope this will never occur (Hey this way we have smaller bundles)
|
| 2036 |
+
if (typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
|
| 2037 |
+
if (mediaQuery && !item[2]) {
|
| 2038 |
+
item[2] = mediaQuery;
|
| 2039 |
+
} else if (mediaQuery) {
|
| 2040 |
+
item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
|
| 2041 |
+
}
|
| 2042 |
+
list.push(item);
|
| 2043 |
+
}
|
| 2044 |
+
}
|
| 2045 |
+
};
|
| 2046 |
+
return list;
|
| 2047 |
+
};
|
| 2048 |
+
|
| 2049 |
+
function cssWithMappingToString(item, useSourceMap) {
|
| 2050 |
+
var content = item[1] || '';
|
| 2051 |
+
var cssMapping = item[3];
|
| 2052 |
+
if (!cssMapping) {
|
| 2053 |
+
return content;
|
| 2054 |
+
}
|
| 2055 |
+
|
| 2056 |
+
if (useSourceMap && typeof btoa === 'function') {
|
| 2057 |
+
var sourceMapping = toComment(cssMapping);
|
| 2058 |
+
var sourceURLs = cssMapping.sources.map(function (source) {
|
| 2059 |
+
return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */';
|
| 2060 |
+
});
|
| 2061 |
+
|
| 2062 |
+
return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
|
| 2063 |
+
}
|
| 2064 |
+
|
| 2065 |
+
return [content].join('\n');
|
| 2066 |
+
}
|
| 2067 |
+
|
| 2068 |
+
// Adapted from convert-source-map (MIT)
|
| 2069 |
+
function toComment(sourceMap) {
|
| 2070 |
+
// eslint-disable-next-line no-undef
|
| 2071 |
+
var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
|
| 2072 |
+
var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;
|
| 2073 |
+
|
| 2074 |
+
return '/*# ' + data + ' */';
|
| 2075 |
+
}
|
| 2076 |
+
|
| 2077 |
+
/***/ }),
|
| 2078 |
+
|
| 2079 |
+
/***/ "./node_modules/object-assign/index.js":
|
| 2080 |
+
/*!*********************************************!*\
|
| 2081 |
+
!*** ./node_modules/object-assign/index.js ***!
|
| 2082 |
+
\*********************************************/
|
| 2083 |
+
/*! no static exports found */
|
| 2084 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 2085 |
+
|
| 2086 |
+
"use strict";
|
| 2087 |
+
/*
|
| 2088 |
+
object-assign
|
| 2089 |
+
(c) Sindre Sorhus
|
| 2090 |
+
@license MIT
|
| 2091 |
+
*/
|
| 2092 |
+
|
| 2093 |
+
|
| 2094 |
+
/* eslint-disable no-unused-vars */
|
| 2095 |
+
|
| 2096 |
+
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
|
| 2097 |
+
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
| 2098 |
+
var propIsEnumerable = Object.prototype.propertyIsEnumerable;
|
| 2099 |
+
|
| 2100 |
+
function toObject(val) {
|
| 2101 |
+
if (val === null || val === undefined) {
|
| 2102 |
+
throw new TypeError('Object.assign cannot be called with null or undefined');
|
| 2103 |
+
}
|
| 2104 |
+
|
| 2105 |
+
return Object(val);
|
| 2106 |
+
}
|
| 2107 |
+
|
| 2108 |
+
function shouldUseNative() {
|
| 2109 |
+
try {
|
| 2110 |
+
if (!Object.assign) {
|
| 2111 |
+
return false;
|
| 2112 |
+
}
|
| 2113 |
+
|
| 2114 |
+
// Detect buggy property enumeration order in older V8 versions.
|
| 2115 |
+
|
| 2116 |
+
// https://bugs.chromium.org/p/v8/issues/detail?id=4118
|
| 2117 |
+
var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
|
| 2118 |
+
test1[5] = 'de';
|
| 2119 |
+
if (Object.getOwnPropertyNames(test1)[0] === '5') {
|
| 2120 |
+
return false;
|
| 2121 |
+
}
|
| 2122 |
+
|
| 2123 |
+
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
|
| 2124 |
+
var test2 = {};
|
| 2125 |
+
for (var i = 0; i < 10; i++) {
|
| 2126 |
+
test2['_' + String.fromCharCode(i)] = i;
|
| 2127 |
+
}
|
| 2128 |
+
var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
|
| 2129 |
+
return test2[n];
|
| 2130 |
+
});
|
| 2131 |
+
if (order2.join('') !== '0123456789') {
|
| 2132 |
+
return false;
|
| 2133 |
+
}
|
| 2134 |
+
|
| 2135 |
+
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
|
| 2136 |
+
var test3 = {};
|
| 2137 |
+
'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
|
| 2138 |
+
test3[letter] = letter;
|
| 2139 |
+
});
|
| 2140 |
+
if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {
|
| 2141 |
+
return false;
|
| 2142 |
+
}
|
| 2143 |
+
|
| 2144 |
+
return true;
|
| 2145 |
+
} catch (err) {
|
| 2146 |
+
// We don't expect any of the above to throw, but better to be safe.
|
| 2147 |
+
return false;
|
| 2148 |
+
}
|
| 2149 |
+
}
|
| 2150 |
+
|
| 2151 |
+
module.exports = shouldUseNative() ? Object.assign : function (target, source) {
|
| 2152 |
+
var from;
|
| 2153 |
+
var to = toObject(target);
|
| 2154 |
+
var symbols;
|
| 2155 |
+
|
| 2156 |
+
for (var s = 1; s < arguments.length; s++) {
|
| 2157 |
+
from = Object(arguments[s]);
|
| 2158 |
+
|
| 2159 |
+
for (var key in from) {
|
| 2160 |
+
if (hasOwnProperty.call(from, key)) {
|
| 2161 |
+
to[key] = from[key];
|
| 2162 |
+
}
|
| 2163 |
+
}
|
| 2164 |
+
|
| 2165 |
+
if (getOwnPropertySymbols) {
|
| 2166 |
+
symbols = getOwnPropertySymbols(from);
|
| 2167 |
+
for (var i = 0; i < symbols.length; i++) {
|
| 2168 |
+
if (propIsEnumerable.call(from, symbols[i])) {
|
| 2169 |
+
to[symbols[i]] = from[symbols[i]];
|
| 2170 |
+
}
|
| 2171 |
+
}
|
| 2172 |
+
}
|
| 2173 |
+
}
|
| 2174 |
+
|
| 2175 |
+
return to;
|
| 2176 |
+
};
|
| 2177 |
+
|
| 2178 |
+
/***/ }),
|
| 2179 |
+
|
| 2180 |
+
/***/ "./node_modules/prop-types/checkPropTypes.js":
|
| 2181 |
+
/*!***************************************************!*\
|
| 2182 |
+
!*** ./node_modules/prop-types/checkPropTypes.js ***!
|
| 2183 |
+
\***************************************************/
|
| 2184 |
+
/*! no static exports found */
|
| 2185 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 2186 |
+
|
| 2187 |
+
"use strict";
|
| 2188 |
+
/**
|
| 2189 |
+
* Copyright (c) 2013-present, Facebook, Inc.
|
| 2190 |
+
*
|
| 2191 |
+
* This source code is licensed under the MIT license found in the
|
| 2192 |
+
* LICENSE file in the root directory of this source tree.
|
| 2193 |
+
*/
|
| 2194 |
+
|
| 2195 |
+
|
| 2196 |
+
|
| 2197 |
+
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
| 2198 |
+
|
| 2199 |
+
var printWarning = function printWarning() {};
|
| 2200 |
+
|
| 2201 |
+
if (true) {
|
| 2202 |
+
var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "./node_modules/prop-types/lib/ReactPropTypesSecret.js");
|
| 2203 |
+
var loggedTypeFailures = {};
|
| 2204 |
+
|
| 2205 |
+
printWarning = function printWarning(text) {
|
| 2206 |
+
var message = 'Warning: ' + text;
|
| 2207 |
+
if (typeof console !== 'undefined') {
|
| 2208 |
+
console.error(message);
|
| 2209 |
+
}
|
| 2210 |
+
try {
|
| 2211 |
+
// --- Welcome to debugging React ---
|
| 2212 |
+
// This error was thrown as a convenience so that you can use this stack
|
| 2213 |
+
// to find the callsite that caused this warning to fire.
|
| 2214 |
+
throw new Error(message);
|
| 2215 |
+
} catch (x) {}
|
| 2216 |
+
};
|
| 2217 |
+
}
|
| 2218 |
+
|
| 2219 |
+
/**
|
| 2220 |
+
* Assert that the values match with the type specs.
|
| 2221 |
+
* Error messages are memorized and will only be shown once.
|
| 2222 |
+
*
|
| 2223 |
+
* @param {object} typeSpecs Map of name to a ReactPropType
|
| 2224 |
+
* @param {object} values Runtime values that need to be type-checked
|
| 2225 |
+
* @param {string} location e.g. "prop", "context", "child context"
|
| 2226 |
+
* @param {string} componentName Name of the component for error messages.
|
| 2227 |
+
* @param {?Function} getStack Returns the component stack.
|
| 2228 |
+
* @private
|
| 2229 |
+
*/
|
| 2230 |
+
function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
|
| 2231 |
+
if (true) {
|
| 2232 |
+
for (var typeSpecName in typeSpecs) {
|
| 2233 |
+
if (typeSpecs.hasOwnProperty(typeSpecName)) {
|
| 2234 |
+
var error;
|
| 2235 |
+
// Prop type validation may throw. In case they do, we don't want to
|
| 2236 |
+
// fail the render phase where it didn't fail before. So we log it.
|
| 2237 |
+
// After these have been cleaned up, we'll let them throw.
|
| 2238 |
+
try {
|
| 2239 |
+
// This is intentionally an invariant that gets caught. It's the same
|
| 2240 |
+
// behavior as without this statement except with a better message.
|
| 2241 |
+
if (typeof typeSpecs[typeSpecName] !== 'function') {
|
| 2242 |
+
var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + _typeof(typeSpecs[typeSpecName]) + '`.');
|
| 2243 |
+
err.name = 'Invariant Violation';
|
| 2244 |
+
throw err;
|
| 2245 |
+
}
|
| 2246 |
+
error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
|
| 2247 |
+
} catch (ex) {
|
| 2248 |
+
error = ex;
|
| 2249 |
+
}
|
| 2250 |
+
if (error && !(error instanceof Error)) {
|
| 2251 |
+
printWarning((componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + (typeof error === 'undefined' ? 'undefined' : _typeof(error)) + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).');
|
| 2252 |
+
}
|
| 2253 |
+
if (error instanceof Error && !(error.message in loggedTypeFailures)) {
|
| 2254 |
+
// Only monitor this failure once because there tends to be a lot of the
|
| 2255 |
+
// same error.
|
| 2256 |
+
loggedTypeFailures[error.message] = true;
|
| 2257 |
+
|
| 2258 |
+
var stack = getStack ? getStack() : '';
|
| 2259 |
+
|
| 2260 |
+
printWarning('Failed ' + location + ' type: ' + error.message + (stack != null ? stack : ''));
|
| 2261 |
+
}
|
| 2262 |
+
}
|
| 2263 |
+
}
|
| 2264 |
+
}
|
| 2265 |
+
}
|
| 2266 |
+
|
| 2267 |
+
module.exports = checkPropTypes;
|
| 2268 |
+
|
| 2269 |
+
/***/ }),
|
| 2270 |
+
|
| 2271 |
+
/***/ "./node_modules/prop-types/lib/ReactPropTypesSecret.js":
|
| 2272 |
+
/*!*************************************************************!*\
|
| 2273 |
+
!*** ./node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
|
| 2274 |
+
\*************************************************************/
|
| 2275 |
+
/*! no static exports found */
|
| 2276 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 2277 |
+
|
| 2278 |
+
"use strict";
|
| 2279 |
+
/**
|
| 2280 |
+
* Copyright (c) 2013-present, Facebook, Inc.
|
| 2281 |
+
*
|
| 2282 |
+
* This source code is licensed under the MIT license found in the
|
| 2283 |
+
* LICENSE file in the root directory of this source tree.
|
| 2284 |
+
*/
|
| 2285 |
+
|
| 2286 |
+
|
| 2287 |
+
|
| 2288 |
+
var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
|
| 2289 |
+
|
| 2290 |
+
module.exports = ReactPropTypesSecret;
|
| 2291 |
+
|
| 2292 |
+
/***/ }),
|
| 2293 |
+
|
| 2294 |
+
/***/ "./node_modules/react-recaptcha/dist/react-recaptcha.js":
|
| 2295 |
+
/*!**************************************************************!*\
|
| 2296 |
+
!*** ./node_modules/react-recaptcha/dist/react-recaptcha.js ***!
|
| 2297 |
+
\**************************************************************/
|
| 2298 |
+
/*! no static exports found */
|
| 2299 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 2300 |
+
|
| 2301 |
+
"use strict";
|
| 2302 |
+
/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;
|
| 2303 |
+
|
| 2304 |
+
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
| 2305 |
+
|
| 2306 |
+
!function (e, t) {
|
| 2307 |
+
"object" == ( false ? undefined : _typeof(exports)) && "object" == ( false ? undefined : _typeof(module)) ? module.exports = t(__webpack_require__(/*! react */ "./node_modules/react/index.js")) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! react */ "./node_modules/react/index.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (t),
|
| 2308 |
+
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
|
| 2309 |
+
(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
|
| 2310 |
+
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
|
| 2311 |
+
}(undefined, function (e) {
|
| 2312 |
+
return function (e) {
|
| 2313 |
+
function t(r) {
|
| 2314 |
+
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;
|
| 2315 |
+
}var a = {};return t.m = e, t.c = a, t.p = "", t(0);
|
| 2316 |
+
}([function (e, t, a) {
|
| 2317 |
+
"use strict";
|
| 2318 |
+
function r(e) {
|
| 2319 |
+
return e && e.__esModule ? e : { default: e };
|
| 2320 |
+
}function n(e, t) {
|
| 2321 |
+
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
|
| 2322 |
+
}function o(e, t) {
|
| 2323 |
+
if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return !t || "object" != (typeof t === "undefined" ? "undefined" : _typeof(t)) && "function" != typeof t ? e : t;
|
| 2324 |
+
}function i(e, t) {
|
| 2325 |
+
if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + (typeof t === "undefined" ? "undefined" : _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);
|
| 2326 |
+
}Object.defineProperty(t, "__esModule", { value: !0 });var l = function () {
|
| 2327 |
+
function e(e, t) {
|
| 2328 |
+
for (var a = 0; a < t.length; a++) {
|
| 2329 |
+
var r = t[a];r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r);
|
| 2330 |
+
}
|
| 2331 |
+
}return function (t, a, r) {
|
| 2332 |
+
return a && e(t.prototype, a), r && e(t, r), t;
|
| 2333 |
+
};
|
| 2334 |
+
}(),
|
| 2335 |
+
s = a(6),
|
| 2336 |
+
c = r(s),
|
| 2337 |
+
p = a(4),
|
| 2338 |
+
u = r(p),
|
| 2339 |
+
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.oneOf(["onload", "explicit"]), sitekey: u.default.string, theme: u.default.oneOf(["light", "dark"]), type: u.default.string, verifyCallbackName: u.default.string, expiredCallbackName: u.default.string, size: u.default.oneOf(["invisible", "compact", "normal"]), tabindex: u.default.string, hl: u.default.string, badge: u.default.oneOf(["bottomright", "bottomleft", "inline"]) },
|
| 2340 |
+
f = { elementID: "g-recaptcha", className: "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" },
|
| 2341 |
+
h = function h() {
|
| 2342 |
+
return "undefined" != typeof window && "undefined" != typeof window.grecaptcha && "function" == typeof window.grecaptcha.render;
|
| 2343 |
+
},
|
| 2344 |
+
y = void 0,
|
| 2345 |
+
b = function (e) {
|
| 2346 |
+
function t(e) {
|
| 2347 |
+
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 || "undefined" == typeof window || (y = setInterval(a._updateReadyState.bind(a), 1e3)), a;
|
| 2348 |
+
}return i(t, e), l(t, [{ key: "componentDidMount", value: function value() {
|
| 2349 |
+
this.state.ready && this._renderGrecaptcha();
|
| 2350 |
+
} }, { key: "componentDidUpdate", value: function value(e, t) {
|
| 2351 |
+
var a = this.props,
|
| 2352 |
+
r = a.render,
|
| 2353 |
+
n = a.onloadCallback;"explicit" === r && n && this.state.ready && !t.ready && this._renderGrecaptcha();
|
| 2354 |
+
} }, { key: "componentWillUnmount", value: function value() {
|
| 2355 |
+
clearInterval(y);
|
| 2356 |
+
} }, { key: "reset", value: function value() {
|
| 2357 |
+
var e = this.state,
|
| 2358 |
+
t = e.ready,
|
| 2359 |
+
a = e.widget;t && null !== a && grecaptcha.reset(a);
|
| 2360 |
+
} }, { key: "execute", value: function value() {
|
| 2361 |
+
var e = this.state,
|
| 2362 |
+
t = e.ready,
|
| 2363 |
+
a = e.widget;t && null !== a && grecaptcha.execute(a);
|
| 2364 |
+
} }, { key: "_updateReadyState", value: function value() {
|
| 2365 |
+
h() && (this.setState({ ready: !0 }), clearInterval(y));
|
| 2366 |
+
} }, { key: "_renderGrecaptcha", value: function value() {
|
| 2367 |
+
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();
|
| 2368 |
+
} }, { key: "render", value: function value() {
|
| 2369 |
+
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: this.props.className, "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 });
|
| 2370 |
+
} }]), t;
|
| 2371 |
+
}(s.Component);t.default = b, b.propTypes = d, b.defaultProps = f, e.exports = t.default;
|
| 2372 |
+
}, function (e, t) {
|
| 2373 |
+
"use strict";
|
| 2374 |
+
function a(e) {
|
| 2375 |
+
return function () {
|
| 2376 |
+
return e;
|
| 2377 |
+
};
|
| 2378 |
+
}var r = function r() {};r.thatReturns = a, r.thatReturnsFalse = a(!1), r.thatReturnsTrue = a(!0), r.thatReturnsNull = a(null), r.thatReturnsThis = function () {
|
| 2379 |
+
return this;
|
| 2380 |
+
}, r.thatReturnsArgument = function (e) {
|
| 2381 |
+
return e;
|
| 2382 |
+
}, e.exports = r;
|
| 2383 |
+
}, function (e, t, a) {
|
| 2384 |
+
"use strict";
|
| 2385 |
+
function r(e, t, a, r, o, i, l, s) {
|
| 2386 |
+
if (n(t), !e) {
|
| 2387 |
+
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 {
|
| 2388 |
+
var p = [a, r, o, i, l, s],
|
| 2389 |
+
u = 0;c = new Error(t.replace(/%s/g, function () {
|
| 2390 |
+
return p[u++];
|
| 2391 |
+
})), c.name = "Invariant Violation";
|
| 2392 |
+
}throw c.framesToPop = 1, c;
|
| 2393 |
+
}
|
| 2394 |
+
}var n = function n(e) {};e.exports = r;
|
| 2395 |
+
}, function (e, t, a) {
|
| 2396 |
+
"use strict";
|
| 2397 |
+
var r = a(1),
|
| 2398 |
+
n = a(2),
|
| 2399 |
+
o = a(5);e.exports = function () {
|
| 2400 |
+
function e(e, t, a, r, i, l) {
|
| 2401 |
+
l !== 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");
|
| 2402 |
+
}function t() {
|
| 2403 |
+
return e;
|
| 2404 |
+
}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;
|
| 2405 |
+
};
|
| 2406 |
+
}, function (e, t, a) {
|
| 2407 |
+
e.exports = a(3)();
|
| 2408 |
+
}, function (e, t) {
|
| 2409 |
+
"use strict";
|
| 2410 |
+
var a = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";e.exports = a;
|
| 2411 |
+
}, function (t, a) {
|
| 2412 |
+
t.exports = e;
|
| 2413 |
+
}]);
|
| 2414 |
+
});
|
| 2415 |
+
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
|
| 2416 |
+
|
| 2417 |
+
/***/ }),
|
| 2418 |
+
|
| 2419 |
+
/***/ "./node_modules/react/cjs/react.development.js":
|
| 2420 |
+
/*!*****************************************************!*\
|
| 2421 |
+
!*** ./node_modules/react/cjs/react.development.js ***!
|
| 2422 |
+
\*****************************************************/
|
| 2423 |
+
/*! no static exports found */
|
| 2424 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 2425 |
+
|
| 2426 |
+
"use strict";
|
| 2427 |
+
/** @license React v16.6.0
|
| 2428 |
+
* react.development.js
|
| 2429 |
+
*
|
| 2430 |
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
| 2431 |
+
*
|
| 2432 |
+
* This source code is licensed under the MIT license found in the
|
| 2433 |
+
* LICENSE file in the root directory of this source tree.
|
| 2434 |
+
*/
|
| 2435 |
+
|
| 2436 |
+
|
| 2437 |
+
|
| 2438 |
+
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
| 2439 |
+
|
| 2440 |
+
if (true) {
|
| 2441 |
+
(function () {
|
| 2442 |
+
'use strict';
|
| 2443 |
+
|
| 2444 |
+
var _assign = __webpack_require__(/*! object-assign */ "./node_modules/object-assign/index.js");
|
| 2445 |
+
var checkPropTypes = __webpack_require__(/*! prop-types/checkPropTypes */ "./node_modules/prop-types/checkPropTypes.js");
|
| 2446 |
+
|
| 2447 |
+
// TODO: this is special because it gets imported during build.
|
| 2448 |
+
|
| 2449 |
+
var ReactVersion = '16.6.0';
|
| 2450 |
+
|
| 2451 |
+
// The Symbol used to tag the ReactElement-like types. If there is no native Symbol
|
| 2452 |
+
// nor polyfill, then a plain number is used for performance.
|
| 2453 |
+
var hasSymbol = typeof Symbol === 'function' && Symbol.for;
|
| 2454 |
+
|
| 2455 |
+
var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
|
| 2456 |
+
var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
|
| 2457 |
+
var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
|
| 2458 |
+
var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
|
| 2459 |
+
var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
|
| 2460 |
+
var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
|
| 2461 |
+
var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;
|
| 2462 |
+
var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
|
| 2463 |
+
var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
|
| 2464 |
+
var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
|
| 2465 |
+
var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
|
| 2466 |
+
var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
|
| 2467 |
+
|
| 2468 |
+
var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
|
| 2469 |
+
var FAUX_ITERATOR_SYMBOL = '@@iterator';
|
| 2470 |
+
|
| 2471 |
+
function getIteratorFn(maybeIterable) {
|
| 2472 |
+
if (maybeIterable === null || (typeof maybeIterable === 'undefined' ? 'undefined' : _typeof(maybeIterable)) !== 'object') {
|
| 2473 |
+
return null;
|
| 2474 |
+
}
|
| 2475 |
+
var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];
|
| 2476 |
+
if (typeof maybeIterator === 'function') {
|
| 2477 |
+
return maybeIterator;
|
| 2478 |
+
}
|
| 2479 |
+
return null;
|
| 2480 |
+
}
|
| 2481 |
+
|
| 2482 |
+
/**
|
| 2483 |
+
* Use invariant() to assert state which your program assumes to be true.
|
| 2484 |
+
*
|
| 2485 |
+
* Provide sprintf-style format (only %s is supported) and arguments
|
| 2486 |
+
* to provide information about what broke and what you were
|
| 2487 |
+
* expecting.
|
| 2488 |
+
*
|
| 2489 |
+
* The invariant message will be stripped in production, but the invariant
|
| 2490 |
+
* will remain to ensure logic does not differ in production.
|
| 2491 |
+
*/
|
| 2492 |
+
|
| 2493 |
+
var validateFormat = function validateFormat() {};
|
| 2494 |
+
|
| 2495 |
+
{
|
| 2496 |
+
validateFormat = function validateFormat(format) {
|
| 2497 |
+
if (format === undefined) {
|
| 2498 |
+
throw new Error('invariant requires an error message argument');
|
| 2499 |
+
}
|
| 2500 |
+
};
|
| 2501 |
+
}
|
| 2502 |
+
|
| 2503 |
+
function invariant(condition, format, a, b, c, d, e, f) {
|
| 2504 |
+
validateFormat(format);
|
| 2505 |
+
|
| 2506 |
+
if (!condition) {
|
| 2507 |
+
var error = void 0;
|
| 2508 |
+
if (format === undefined) {
|
| 2509 |
+
error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');
|
| 2510 |
+
} else {
|
| 2511 |
+
var args = [a, b, c, d, e, f];
|
| 2512 |
+
var argIndex = 0;
|
| 2513 |
+
error = new Error(format.replace(/%s/g, function () {
|
| 2514 |
+
return args[argIndex++];
|
| 2515 |
+
}));
|
| 2516 |
+
error.name = 'Invariant Violation';
|
| 2517 |
+
}
|
| 2518 |
+
|
| 2519 |
+
error.framesToPop = 1; // we don't care about invariant's own frame
|
| 2520 |
+
throw error;
|
| 2521 |
+
}
|
| 2522 |
+
}
|
| 2523 |
+
|
| 2524 |
+
// Relying on the `invariant()` implementation lets us
|
| 2525 |
+
// preserve the format and params in the www builds.
|
| 2526 |
+
|
| 2527 |
+
/**
|
| 2528 |
+
* Forked from fbjs/warning:
|
| 2529 |
+
* https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js
|
| 2530 |
+
*
|
| 2531 |
+
* Only change is we use console.warn instead of console.error,
|
| 2532 |
+
* and do nothing when 'console' is not supported.
|
| 2533 |
+
* This really simplifies the code.
|
| 2534 |
+
* ---
|
| 2535 |
+
* Similar to invariant but only logs a warning if the condition is not met.
|
| 2536 |
+
* This can be used to log issues in development environments in critical
|
| 2537 |
+
* paths. Removing the logging code for production environments will keep the
|
| 2538 |
+
* same logic and follow the same code paths.
|
| 2539 |
+
*/
|
| 2540 |
+
|
| 2541 |
+
var lowPriorityWarning = function lowPriorityWarning() {};
|
| 2542 |
+
|
| 2543 |
+
{
|
| 2544 |
+
var printWarning = function printWarning(format) {
|
| 2545 |
+
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
| 2546 |
+
args[_key - 1] = arguments[_key];
|
| 2547 |
+
}
|
| 2548 |
+
|
| 2549 |
+
var argIndex = 0;
|
| 2550 |
+
var message = 'Warning: ' + format.replace(/%s/g, function () {
|
| 2551 |
+
return args[argIndex++];
|
| 2552 |
+
});
|
| 2553 |
+
if (typeof console !== 'undefined') {
|
| 2554 |
+
console.warn(message);
|
| 2555 |
+
}
|
| 2556 |
+
try {
|
| 2557 |
+
// --- Welcome to debugging React ---
|
| 2558 |
+
// This error was thrown as a convenience so that you can use this stack
|
| 2559 |
+
// to find the callsite that caused this warning to fire.
|
| 2560 |
+
throw new Error(message);
|
| 2561 |
+
} catch (x) {}
|
| 2562 |
+
};
|
| 2563 |
+
|
| 2564 |
+
lowPriorityWarning = function lowPriorityWarning(condition, format) {
|
| 2565 |
+
if (format === undefined) {
|
| 2566 |
+
throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');
|
| 2567 |
+
}
|
| 2568 |
+
if (!condition) {
|
| 2569 |
+
for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
|
| 2570 |
+
args[_key2 - 2] = arguments[_key2];
|
| 2571 |
+
}
|
| 2572 |
+
|
| 2573 |
+
printWarning.apply(undefined, [format].concat(args));
|
| 2574 |
+
}
|
| 2575 |
+
};
|
| 2576 |
+
}
|
| 2577 |
+
|
| 2578 |
+
var lowPriorityWarning$1 = lowPriorityWarning;
|
| 2579 |
+
|
| 2580 |
+
/**
|
| 2581 |
+
* Similar to invariant but only logs a warning if the condition is not met.
|
| 2582 |
+
* This can be used to log issues in development environments in critical
|
| 2583 |
+
* paths. Removing the logging code for production environments will keep the
|
| 2584 |
+
* same logic and follow the same code paths.
|
| 2585 |
+
*/
|
| 2586 |
+
|
| 2587 |
+
var warningWithoutStack = function warningWithoutStack() {};
|
| 2588 |
+
|
| 2589 |
+
{
|
| 2590 |
+
warningWithoutStack = function warningWithoutStack(condition, format) {
|
| 2591 |
+
for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
| 2592 |
+
args[_key - 2] = arguments[_key];
|
| 2593 |
+
}
|
| 2594 |
+
|
| 2595 |
+
if (format === undefined) {
|
| 2596 |
+
throw new Error('`warningWithoutStack(condition, format, ...args)` requires a warning ' + 'message argument');
|
| 2597 |
+
}
|
| 2598 |
+
if (args.length > 8) {
|
| 2599 |
+
// Check before the condition to catch violations early.
|
| 2600 |
+
throw new Error('warningWithoutStack() currently supports at most 8 arguments.');
|
| 2601 |
+
}
|
| 2602 |
+
if (condition) {
|
| 2603 |
+
return;
|
| 2604 |
+
}
|
| 2605 |
+
if (typeof console !== 'undefined') {
|
| 2606 |
+
var _args$map = args.map(function (item) {
|
| 2607 |
+
return '' + item;
|
| 2608 |
+
}),
|
| 2609 |
+
a = _args$map[0],
|
| 2610 |
+
b = _args$map[1],
|
| 2611 |
+
c = _args$map[2],
|
| 2612 |
+
d = _args$map[3],
|
| 2613 |
+
e = _args$map[4],
|
| 2614 |
+
f = _args$map[5],
|
| 2615 |
+
g = _args$map[6],
|
| 2616 |
+
h = _args$map[7];
|
| 2617 |
+
|
| 2618 |
+
var message = 'Warning: ' + format;
|
| 2619 |
+
|
| 2620 |
+
// We intentionally don't use spread (or .apply) because it breaks IE9:
|
| 2621 |
+
// https://github.com/facebook/react/issues/13610
|
| 2622 |
+
switch (args.length) {
|
| 2623 |
+
case 0:
|
| 2624 |
+
console.error(message);
|
| 2625 |
+
break;
|
| 2626 |
+
case 1:
|
| 2627 |
+
console.error(message, a);
|
| 2628 |
+
break;
|
| 2629 |
+
case 2:
|
| 2630 |
+
console.error(message, a, b);
|
| 2631 |
+
break;
|
| 2632 |
+
case 3:
|
| 2633 |
+
console.error(message, a, b, c);
|
| 2634 |
+
break;
|
| 2635 |
+
case 4:
|
| 2636 |
+
console.error(message, a, b, c, d);
|
| 2637 |
+
break;
|
| 2638 |
+
case 5:
|
| 2639 |
+
console.error(message, a, b, c, d, e);
|
| 2640 |
+
break;
|
| 2641 |
+
case 6:
|
| 2642 |
+
console.error(message, a, b, c, d, e, f);
|
| 2643 |
+
break;
|
| 2644 |
+
case 7:
|
| 2645 |
+
console.error(message, a, b, c, d, e, f, g);
|
| 2646 |
+
break;
|
| 2647 |
+
case 8:
|
| 2648 |
+
console.error(message, a, b, c, d, e, f, g, h);
|
| 2649 |
+
break;
|
| 2650 |
+
default:
|
| 2651 |
+
throw new Error('warningWithoutStack() currently supports at most 8 arguments.');
|
| 2652 |
+
}
|
| 2653 |
+
}
|
| 2654 |
+
try {
|
| 2655 |
+
// --- Welcome to debugging React ---
|
| 2656 |
+
// This error was thrown as a convenience so that you can use this stack
|
| 2657 |
+
// to find the callsite that caused this warning to fire.
|
| 2658 |
+
var argIndex = 0;
|
| 2659 |
+
var _message = 'Warning: ' + format.replace(/%s/g, function () {
|
| 2660 |
+
return args[argIndex++];
|
| 2661 |
+
});
|
| 2662 |
+
throw new Error(_message);
|
| 2663 |
+
} catch (x) {}
|
| 2664 |
+
};
|
| 2665 |
+
}
|
| 2666 |
+
|
| 2667 |
+
var warningWithoutStack$1 = warningWithoutStack;
|
| 2668 |
+
|
| 2669 |
+
var didWarnStateUpdateForUnmountedComponent = {};
|
| 2670 |
+
|
| 2671 |
+
function warnNoop(publicInstance, callerName) {
|
| 2672 |
+
{
|
| 2673 |
+
var _constructor = publicInstance.constructor;
|
| 2674 |
+
var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';
|
| 2675 |
+
var warningKey = componentName + '.' + callerName;
|
| 2676 |
+
if (didWarnStateUpdateForUnmountedComponent[warningKey]) {
|
| 2677 |
+
return;
|
| 2678 |
+
}
|
| 2679 |
+
warningWithoutStack$1(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);
|
| 2680 |
+
didWarnStateUpdateForUnmountedComponent[warningKey] = true;
|
| 2681 |
+
}
|
| 2682 |
+
}
|
| 2683 |
+
|
| 2684 |
+
/**
|
| 2685 |
+
* This is the abstract API for an update queue.
|
| 2686 |
+
*/
|
| 2687 |
+
var ReactNoopUpdateQueue = {
|
| 2688 |
+
/**
|
| 2689 |
+
* Checks whether or not this composite component is mounted.
|
| 2690 |
+
* @param {ReactClass} publicInstance The instance we want to test.
|
| 2691 |
+
* @return {boolean} True if mounted, false otherwise.
|
| 2692 |
+
* @protected
|
| 2693 |
+
* @final
|
| 2694 |
+
*/
|
| 2695 |
+
isMounted: function isMounted(publicInstance) {
|
| 2696 |
+
return false;
|
| 2697 |
+
},
|
| 2698 |
+
|
| 2699 |
+
/**
|
| 2700 |
+
* Forces an update. This should only be invoked when it is known with
|
| 2701 |
+
* certainty that we are **not** in a DOM transaction.
|
| 2702 |
+
*
|
| 2703 |
+
* You may want to call this when you know that some deeper aspect of the
|
| 2704 |
+
* component's state has changed but `setState` was not called.
|
| 2705 |
+
*
|
| 2706 |
+
* This will not invoke `shouldComponentUpdate`, but it will invoke
|
| 2707 |
+
* `componentWillUpdate` and `componentDidUpdate`.
|
| 2708 |
+
*
|
| 2709 |
+
* @param {ReactClass} publicInstance The instance that should rerender.
|
| 2710 |
+
* @param {?function} callback Called after component is updated.
|
| 2711 |
+
* @param {?string} callerName name of the calling function in the public API.
|
| 2712 |
+
* @internal
|
| 2713 |
+
*/
|
| 2714 |
+
enqueueForceUpdate: function enqueueForceUpdate(publicInstance, callback, callerName) {
|
| 2715 |
+
warnNoop(publicInstance, 'forceUpdate');
|
| 2716 |
+
},
|
| 2717 |
+
|
| 2718 |
+
/**
|
| 2719 |
+
* Replaces all of the state. Always use this or `setState` to mutate state.
|
| 2720 |
+
* You should treat `this.state` as immutable.
|
| 2721 |
+
*
|
| 2722 |
+
* There is no guarantee that `this.state` will be immediately updated, so
|
| 2723 |
+
* accessing `this.state` after calling this method may return the old value.
|
| 2724 |
+
*
|
| 2725 |
+
* @param {ReactClass} publicInstance The instance that should rerender.
|
| 2726 |
+
* @param {object} completeState Next state.
|
| 2727 |
+
* @param {?function} callback Called after component is updated.
|
| 2728 |
+
* @param {?string} callerName name of the calling function in the public API.
|
| 2729 |
+
* @internal
|
| 2730 |
+
*/
|
| 2731 |
+
enqueueReplaceState: function enqueueReplaceState(publicInstance, completeState, callback, callerName) {
|
| 2732 |
+
warnNoop(publicInstance, 'replaceState');
|
| 2733 |
+
},
|
| 2734 |
+
|
| 2735 |
+
/**
|
| 2736 |
+
* Sets a subset of the state. This only exists because _pendingState is
|
| 2737 |
+
* internal. This provides a merging strategy that is not available to deep
|
| 2738 |
+
* properties which is confusing. TODO: Expose pendingState or don't use it
|
| 2739 |
+
* during the merge.
|
| 2740 |
+
*
|
| 2741 |
+
* @param {ReactClass} publicInstance The instance that should rerender.
|
| 2742 |
+
* @param {object} partialState Next partial state to be merged with state.
|
| 2743 |
+
* @param {?function} callback Called after component is updated.
|
| 2744 |
+
* @param {?string} Name of the calling function in the public API.
|
| 2745 |
+
* @internal
|
| 2746 |
+
*/
|
| 2747 |
+
enqueueSetState: function enqueueSetState(publicInstance, partialState, callback, callerName) {
|
| 2748 |
+
warnNoop(publicInstance, 'setState');
|
| 2749 |
+
}
|
| 2750 |
+
};
|
| 2751 |
+
|
| 2752 |
+
var emptyObject = {};
|
| 2753 |
+
{
|
| 2754 |
+
Object.freeze(emptyObject);
|
| 2755 |
+
}
|
| 2756 |
+
|
| 2757 |
+
/**
|
| 2758 |
+
* Base class helpers for the updating state of a component.
|
| 2759 |
+
*/
|
| 2760 |
+
function Component(props, context, updater) {
|
| 2761 |
+
this.props = props;
|
| 2762 |
+
this.context = context;
|
| 2763 |
+
// If a component has string refs, we will assign a different object later.
|
| 2764 |
+
this.refs = emptyObject;
|
| 2765 |
+
// We initialize the default updater but the real one gets injected by the
|
| 2766 |
+
// renderer.
|
| 2767 |
+
this.updater = updater || ReactNoopUpdateQueue;
|
| 2768 |
+
}
|
| 2769 |
+
|
| 2770 |
+
Component.prototype.isReactComponent = {};
|
| 2771 |
+
|
| 2772 |
+
/**
|
| 2773 |
+
* Sets a subset of the state. Always use this to mutate
|
| 2774 |
+
* state. You should treat `this.state` as immutable.
|
| 2775 |
+
*
|
| 2776 |
+
* There is no guarantee that `this.state` will be immediately updated, so
|
| 2777 |
+
* accessing `this.state` after calling this method may return the old value.
|
| 2778 |
+
*
|
| 2779 |
+
* There is no guarantee that calls to `setState` will run synchronously,
|
| 2780 |
+
* as they may eventually be batched together. You can provide an optional
|
| 2781 |
+
* callback that will be executed when the call to setState is actually
|
| 2782 |
+
* completed.
|
| 2783 |
+
*
|
| 2784 |
+
* When a function is provided to setState, it will be called at some point in
|
| 2785 |
+
* the future (not synchronously). It will be called with the up to date
|
| 2786 |
+
* component arguments (state, props, context). These values can be different
|
| 2787 |
+
* from this.* because your function may be called after receiveProps but before
|
| 2788 |
+
* shouldComponentUpdate, and this new state, props, and context will not yet be
|
| 2789 |
+
* assigned to this.
|
| 2790 |
+
*
|
| 2791 |
+
* @param {object|function} partialState Next partial state or function to
|
| 2792 |
+
* produce next partial state to be merged with current state.
|
| 2793 |
+
* @param {?function} callback Called after state is updated.
|
| 2794 |
+
* @final
|
| 2795 |
+
* @protected
|
| 2796 |
+
*/
|
| 2797 |
+
Component.prototype.setState = function (partialState, callback) {
|
| 2798 |
+
!((typeof partialState === 'undefined' ? 'undefined' : _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;
|
| 2799 |
+
this.updater.enqueueSetState(this, partialState, callback, 'setState');
|
| 2800 |
+
};
|
| 2801 |
+
|
| 2802 |
+
/**
|
| 2803 |
+
* Forces an update. This should only be invoked when it is known with
|
| 2804 |
+
* certainty that we are **not** in a DOM transaction.
|
| 2805 |
+
*
|
| 2806 |
+
* You may want to call this when you know that some deeper aspect of the
|
| 2807 |
+
* component's state has changed but `setState` was not called.
|
| 2808 |
+
*
|
| 2809 |
+
* This will not invoke `shouldComponentUpdate`, but it will invoke
|
| 2810 |
+
* `componentWillUpdate` and `componentDidUpdate`.
|
| 2811 |
+
*
|
| 2812 |
+
* @param {?function} callback Called after update is complete.
|
| 2813 |
+
* @final
|
| 2814 |
+
* @protected
|
| 2815 |
+
*/
|
| 2816 |
+
Component.prototype.forceUpdate = function (callback) {
|
| 2817 |
+
this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');
|
| 2818 |
+
};
|
| 2819 |
+
|
| 2820 |
+
/**
|
| 2821 |
+
* Deprecated APIs. These APIs used to exist on classic React classes but since
|
| 2822 |
+
* we would like to deprecate them, we're not going to move them over to this
|
| 2823 |
+
* modern base class. Instead, we define a getter that warns if it's accessed.
|
| 2824 |
+
*/
|
| 2825 |
+
{
|
| 2826 |
+
var deprecatedAPIs = {
|
| 2827 |
+
isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],
|
| 2828 |
+
replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']
|
| 2829 |
+
};
|
| 2830 |
+
var defineDeprecationWarning = function defineDeprecationWarning(methodName, info) {
|
| 2831 |
+
Object.defineProperty(Component.prototype, methodName, {
|
| 2832 |
+
get: function get() {
|
| 2833 |
+
lowPriorityWarning$1(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);
|
| 2834 |
+
return undefined;
|
| 2835 |
+
}
|
| 2836 |
+
});
|
| 2837 |
+
};
|
| 2838 |
+
for (var fnName in deprecatedAPIs) {
|
| 2839 |
+
if (deprecatedAPIs.hasOwnProperty(fnName)) {
|
| 2840 |
+
defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);
|
| 2841 |
+
}
|
| 2842 |
+
}
|
| 2843 |
+
}
|
| 2844 |
+
|
| 2845 |
+
function ComponentDummy() {}
|
| 2846 |
+
ComponentDummy.prototype = Component.prototype;
|
| 2847 |
+
|
| 2848 |
+
/**
|
| 2849 |
+
* Convenience component with default shallow equality check for sCU.
|
| 2850 |
+
*/
|
| 2851 |
+
function PureComponent(props, context, updater) {
|
| 2852 |
+
this.props = props;
|
| 2853 |
+
this.context = context;
|
| 2854 |
+
// If a component has string refs, we will assign a different object later.
|
| 2855 |
+
this.refs = emptyObject;
|
| 2856 |
+
this.updater = updater || ReactNoopUpdateQueue;
|
| 2857 |
+
}
|
| 2858 |
+
|
| 2859 |
+
var pureComponentPrototype = PureComponent.prototype = new ComponentDummy();
|
| 2860 |
+
pureComponentPrototype.constructor = PureComponent;
|
| 2861 |
+
// Avoid an extra prototype jump for these methods.
|
| 2862 |
+
_assign(pureComponentPrototype, Component.prototype);
|
| 2863 |
+
pureComponentPrototype.isPureReactComponent = true;
|
| 2864 |
+
|
| 2865 |
+
// an immutable object with a single mutable value
|
| 2866 |
+
function createRef() {
|
| 2867 |
+
var refObject = {
|
| 2868 |
+
current: null
|
| 2869 |
+
};
|
| 2870 |
+
{
|
| 2871 |
+
Object.seal(refObject);
|
| 2872 |
+
}
|
| 2873 |
+
return refObject;
|
| 2874 |
+
}
|
| 2875 |
+
|
| 2876 |
+
/**
|
| 2877 |
+
* Keeps track of the current owner.
|
| 2878 |
+
*
|
| 2879 |
+
* The current owner is the component who should own any components that are
|
| 2880 |
+
* currently being constructed.
|
| 2881 |
+
*/
|
| 2882 |
+
var ReactCurrentOwner = {
|
| 2883 |
+
/**
|
| 2884 |
+
* @internal
|
| 2885 |
+
* @type {ReactComponent}
|
| 2886 |
+
*/
|
| 2887 |
+
current: null,
|
| 2888 |
+
currentDispatcher: null
|
| 2889 |
+
};
|
| 2890 |
+
|
| 2891 |
+
var BEFORE_SLASH_RE = /^(.*)[\\\/]/;
|
| 2892 |
+
|
| 2893 |
+
var describeComponentFrame = function describeComponentFrame(name, source, ownerName) {
|
| 2894 |
+
var sourceInfo = '';
|
| 2895 |
+
if (source) {
|
| 2896 |
+
var path = source.fileName;
|
| 2897 |
+
var fileName = path.replace(BEFORE_SLASH_RE, '');
|
| 2898 |
+
{
|
| 2899 |
+
// In DEV, include code for a common special case:
|
| 2900 |
+
// prefer "folder/index.js" instead of just "index.js".
|
| 2901 |
+
if (/^index\./.test(fileName)) {
|
| 2902 |
+
var match = path.match(BEFORE_SLASH_RE);
|
| 2903 |
+
if (match) {
|
| 2904 |
+
var pathBeforeSlash = match[1];
|
| 2905 |
+
if (pathBeforeSlash) {
|
| 2906 |
+
var folderName = pathBeforeSlash.replace(BEFORE_SLASH_RE, '');
|
| 2907 |
+
fileName = folderName + '/' + fileName;
|
| 2908 |
+
}
|
| 2909 |
+
}
|
| 2910 |
+
}
|
| 2911 |
+
}
|
| 2912 |
+
sourceInfo = ' (at ' + fileName + ':' + source.lineNumber + ')';
|
| 2913 |
+
} else if (ownerName) {
|
| 2914 |
+
sourceInfo = ' (created by ' + ownerName + ')';
|
| 2915 |
+
}
|
| 2916 |
+
return '\n in ' + (name || 'Unknown') + sourceInfo;
|
| 2917 |
+
};
|
| 2918 |
+
|
| 2919 |
+
var Resolved = 1;
|
| 2920 |
+
|
| 2921 |
+
function refineResolvedLazyComponent(lazyComponent) {
|
| 2922 |
+
return lazyComponent._status === Resolved ? lazyComponent._result : null;
|
| 2923 |
+
}
|
| 2924 |
+
|
| 2925 |
+
function getWrappedName(outerType, innerType, wrapperName) {
|
| 2926 |
+
var functionName = innerType.displayName || innerType.name || '';
|
| 2927 |
+
return outerType.displayName || (functionName !== '' ? wrapperName + '(' + functionName + ')' : wrapperName);
|
| 2928 |
+
}
|
| 2929 |
+
|
| 2930 |
+
function getComponentName(type) {
|
| 2931 |
+
if (type == null) {
|
| 2932 |
+
// Host root, text node or just invalid type.
|
| 2933 |
+
return null;
|
| 2934 |
+
}
|
| 2935 |
+
{
|
| 2936 |
+
if (typeof type.tag === 'number') {
|
| 2937 |
+
warningWithoutStack$1(false, 'Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.');
|
| 2938 |
+
}
|
| 2939 |
+
}
|
| 2940 |
+
if (typeof type === 'function') {
|
| 2941 |
+
return type.displayName || type.name || null;
|
| 2942 |
+
}
|
| 2943 |
+
if (typeof type === 'string') {
|
| 2944 |
+
return type;
|
| 2945 |
+
}
|
| 2946 |
+
switch (type) {
|
| 2947 |
+
case REACT_CONCURRENT_MODE_TYPE:
|
| 2948 |
+
return 'ConcurrentMode';
|
| 2949 |
+
case REACT_FRAGMENT_TYPE:
|
| 2950 |
+
return 'Fragment';
|
| 2951 |
+
case REACT_PORTAL_TYPE:
|
| 2952 |
+
return 'Portal';
|
| 2953 |
+
case REACT_PROFILER_TYPE:
|
| 2954 |
+
return 'Profiler';
|
| 2955 |
+
case REACT_STRICT_MODE_TYPE:
|
| 2956 |
+
return 'StrictMode';
|
| 2957 |
+
case REACT_SUSPENSE_TYPE:
|
| 2958 |
+
return 'Suspense';
|
| 2959 |
+
}
|
| 2960 |
+
if ((typeof type === 'undefined' ? 'undefined' : _typeof(type)) === 'object') {
|
| 2961 |
+
switch (type.$$typeof) {
|
| 2962 |
+
case REACT_CONTEXT_TYPE:
|
| 2963 |
+
return 'Context.Consumer';
|
| 2964 |
+
case REACT_PROVIDER_TYPE:
|
| 2965 |
+
return 'Context.Provider';
|
| 2966 |
+
case REACT_FORWARD_REF_TYPE:
|
| 2967 |
+
return getWrappedName(type, type.render, 'ForwardRef');
|
| 2968 |
+
case REACT_MEMO_TYPE:
|
| 2969 |
+
return getComponentName(type.type);
|
| 2970 |
+
case REACT_LAZY_TYPE:
|
| 2971 |
+
{
|
| 2972 |
+
var thenable = type;
|
| 2973 |
+
var resolvedThenable = refineResolvedLazyComponent(thenable);
|
| 2974 |
+
if (resolvedThenable) {
|
| 2975 |
+
return getComponentName(resolvedThenable);
|
| 2976 |
+
}
|
| 2977 |
+
}
|
| 2978 |
+
}
|
| 2979 |
+
}
|
| 2980 |
+
return null;
|
| 2981 |
+
}
|
| 2982 |
+
|
| 2983 |
+
var ReactDebugCurrentFrame = {};
|
| 2984 |
+
|
| 2985 |
+
var currentlyValidatingElement = null;
|
| 2986 |
+
|
| 2987 |
+
function setCurrentlyValidatingElement(element) {
|
| 2988 |
+
{
|
| 2989 |
+
currentlyValidatingElement = element;
|
| 2990 |
+
}
|
| 2991 |
+
}
|
| 2992 |
+
|
| 2993 |
+
{
|
| 2994 |
+
// Stack implementation injected by the current renderer.
|
| 2995 |
+
ReactDebugCurrentFrame.getCurrentStack = null;
|
| 2996 |
+
|
| 2997 |
+
ReactDebugCurrentFrame.getStackAddendum = function () {
|
| 2998 |
+
var stack = '';
|
| 2999 |
+
|
| 3000 |
+
// Add an extra top frame while an element is being validated
|
| 3001 |
+
if (currentlyValidatingElement) {
|
| 3002 |
+
var name = getComponentName(currentlyValidatingElement.type);
|
| 3003 |
+
var owner = currentlyValidatingElement._owner;
|
| 3004 |
+
stack += describeComponentFrame(name, currentlyValidatingElement._source, owner && getComponentName(owner.type));
|
| 3005 |
+
}
|
| 3006 |
+
|
| 3007 |
+
// Delegate to the injected renderer-specific implementation
|
| 3008 |
+
var impl = ReactDebugCurrentFrame.getCurrentStack;
|
| 3009 |
+
if (impl) {
|
| 3010 |
+
stack += impl() || '';
|
| 3011 |
+
}
|
| 3012 |
+
|
| 3013 |
+
return stack;
|
| 3014 |
+
};
|
| 3015 |
+
}
|
| 3016 |
+
|
| 3017 |
+
var ReactSharedInternals = {
|
| 3018 |
+
ReactCurrentOwner: ReactCurrentOwner,
|
| 3019 |
+
// Used by renderers to avoid bundling object-assign twice in UMD bundles:
|
| 3020 |
+
assign: _assign
|
| 3021 |
+
};
|
| 3022 |
+
|
| 3023 |
+
{
|
| 3024 |
+
_assign(ReactSharedInternals, {
|
| 3025 |
+
// These should not be included in production.
|
| 3026 |
+
ReactDebugCurrentFrame: ReactDebugCurrentFrame,
|
| 3027 |
+
// Shim for React DOM 16.0.0 which still destructured (but not used) this.
|
| 3028 |
+
// TODO: remove in React 17.0.
|
| 3029 |
+
ReactComponentTreeHook: {}
|
| 3030 |
+
});
|
| 3031 |
+
}
|
| 3032 |
+
|
| 3033 |
+
/**
|
| 3034 |
+
* Similar to invariant but only logs a warning if the condition is not met.
|
| 3035 |
+
* This can be used to log issues in development environments in critical
|
| 3036 |
+
* paths. Removing the logging code for production environments will keep the
|
| 3037 |
+
* same logic and follow the same code paths.
|
| 3038 |
+
*/
|
| 3039 |
+
|
| 3040 |
+
var warning = warningWithoutStack$1;
|
| 3041 |
+
|
| 3042 |
+
{
|
| 3043 |
+
warning = function warning(condition, format) {
|
| 3044 |
+
if (condition) {
|
| 3045 |
+
return;
|
| 3046 |
+
}
|
| 3047 |
+
var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
|
| 3048 |
+
var stack = ReactDebugCurrentFrame.getStackAddendum();
|
| 3049 |
+
// eslint-disable-next-line react-internal/warning-and-invariant-args
|
| 3050 |
+
|
| 3051 |
+
for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
| 3052 |
+
args[_key - 2] = arguments[_key];
|
| 3053 |
+
}
|
| 3054 |
+
|
| 3055 |
+
warningWithoutStack$1.apply(undefined, [false, format + '%s'].concat(args, [stack]));
|
| 3056 |
+
};
|
| 3057 |
+
}
|
| 3058 |
+
|
| 3059 |
+
var warning$1 = warning;
|
| 3060 |
+
|
| 3061 |
+
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
| 3062 |
+
|
| 3063 |
+
var RESERVED_PROPS = {
|
| 3064 |
+
key: true,
|
| 3065 |
+
ref: true,
|
| 3066 |
+
__self: true,
|
| 3067 |
+
__source: true
|
| 3068 |
+
};
|
| 3069 |
+
|
| 3070 |
+
var specialPropKeyWarningShown = void 0;
|
| 3071 |
+
var specialPropRefWarningShown = void 0;
|
| 3072 |
+
|
| 3073 |
+
function hasValidRef(config) {
|
| 3074 |
+
{
|
| 3075 |
+
if (hasOwnProperty.call(config, 'ref')) {
|
| 3076 |
+
var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;
|
| 3077 |
+
if (getter && getter.isReactWarning) {
|
| 3078 |
+
return false;
|
| 3079 |
+
}
|
| 3080 |
+
}
|
| 3081 |
+
}
|
| 3082 |
+
return config.ref !== undefined;
|
| 3083 |
+
}
|
| 3084 |
+
|
| 3085 |
+
function hasValidKey(config) {
|
| 3086 |
+
{
|
| 3087 |
+
if (hasOwnProperty.call(config, 'key')) {
|
| 3088 |
+
var getter = Object.getOwnPropertyDescriptor(config, 'key').get;
|
| 3089 |
+
if (getter && getter.isReactWarning) {
|
| 3090 |
+
return false;
|
| 3091 |
+
}
|
| 3092 |
+
}
|
| 3093 |
+
}
|
| 3094 |
+
return config.key !== undefined;
|
| 3095 |
+
}
|
| 3096 |
+
|
| 3097 |
+
function defineKeyPropWarningGetter(props, displayName) {
|
| 3098 |
+
var warnAboutAccessingKey = function warnAboutAccessingKey() {
|
| 3099 |
+
if (!specialPropKeyWarningShown) {
|
| 3100 |
+
specialPropKeyWarningShown = true;
|
| 3101 |
+
warningWithoutStack$1(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);
|
| 3102 |
+
}
|
| 3103 |
+
};
|
| 3104 |
+
warnAboutAccessingKey.isReactWarning = true;
|
| 3105 |
+
Object.defineProperty(props, 'key', {
|
| 3106 |
+
get: warnAboutAccessingKey,
|
| 3107 |
+
configurable: true
|
| 3108 |
+
});
|
| 3109 |
+
}
|
| 3110 |
+
|
| 3111 |
+
function defineRefPropWarningGetter(props, displayName) {
|
| 3112 |
+
var warnAboutAccessingRef = function warnAboutAccessingRef() {
|
| 3113 |
+
if (!specialPropRefWarningShown) {
|
| 3114 |
+
specialPropRefWarningShown = true;
|
| 3115 |
+
warningWithoutStack$1(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);
|
| 3116 |
+
}
|
| 3117 |
+
};
|
| 3118 |
+
warnAboutAccessingRef.isReactWarning = true;
|
| 3119 |
+
Object.defineProperty(props, 'ref', {
|
| 3120 |
+
get: warnAboutAccessingRef,
|
| 3121 |
+
configurable: true
|
| 3122 |
+
});
|
| 3123 |
+
}
|
| 3124 |
+
|
| 3125 |
+
/**
|
| 3126 |
+
* Factory method to create a new React element. This no longer adheres to
|
| 3127 |
+
* the class pattern, so do not use new to call it. Also, no instanceof check
|
| 3128 |
+
* will work. Instead test $$typeof field against Symbol.for('react.element') to check
|
| 3129 |
+
* if something is a React Element.
|
| 3130 |
+
*
|
| 3131 |
+
* @param {*} type
|
| 3132 |
+
* @param {*} key
|
| 3133 |
+
* @param {string|object} ref
|
| 3134 |
+
* @param {*} self A *temporary* helper to detect places where `this` is
|
| 3135 |
+
* different from the `owner` when React.createElement is called, so that we
|
| 3136 |
+
* can warn. We want to get rid of owner and replace string `ref`s with arrow
|
| 3137 |
+
* functions, and as long as `this` and owner are the same, there will be no
|
| 3138 |
+
* change in behavior.
|
| 3139 |
+
* @param {*} source An annotation object (added by a transpiler or otherwise)
|
| 3140 |
+
* indicating filename, line number, and/or other information.
|
| 3141 |
+
* @param {*} owner
|
| 3142 |
+
* @param {*} props
|
| 3143 |
+
* @internal
|
| 3144 |
+
*/
|
| 3145 |
+
var ReactElement = function ReactElement(type, key, ref, self, source, owner, props) {
|
| 3146 |
+
var element = {
|
| 3147 |
+
// This tag allows us to uniquely identify this as a React Element
|
| 3148 |
+
$$typeof: REACT_ELEMENT_TYPE,
|
| 3149 |
+
|
| 3150 |
+
// Built-in properties that belong on the element
|
| 3151 |
+
type: type,
|
| 3152 |
+
key: key,
|
| 3153 |
+
ref: ref,
|
| 3154 |
+
props: props,
|
| 3155 |
+
|
| 3156 |
+
// Record the component responsible for creating this element.
|
| 3157 |
+
_owner: owner
|
| 3158 |
+
};
|
| 3159 |
+
|
| 3160 |
+
{
|
| 3161 |
+
// The validation flag is currently mutative. We put it on
|
| 3162 |
+
// an external backing store so that we can freeze the whole object.
|
| 3163 |
+
// This can be replaced with a WeakMap once they are implemented in
|
| 3164 |
+
// commonly used development environments.
|
| 3165 |
+
element._store = {};
|
| 3166 |
+
|
| 3167 |
+
// To make comparing ReactElements easier for testing purposes, we make
|
| 3168 |
+
// the validation flag non-enumerable (where possible, which should
|
| 3169 |
+
// include every environment we run tests in), so the test framework
|
| 3170 |
+
// ignores it.
|
| 3171 |
+
Object.defineProperty(element._store, 'validated', {
|
| 3172 |
+
configurable: false,
|
| 3173 |
+
enumerable: false,
|
| 3174 |
+
writable: true,
|
| 3175 |
+
value: false
|
| 3176 |
+
});
|
| 3177 |
+
// self and source are DEV only properties.
|
| 3178 |
+
Object.defineProperty(element, '_self', {
|
| 3179 |
+
configurable: false,
|
| 3180 |
+
enumerable: false,
|
| 3181 |
+
writable: false,
|
| 3182 |
+
value: self
|
| 3183 |
+
});
|
| 3184 |
+
// Two elements created in two different places should be considered
|
| 3185 |
+
// equal for testing purposes and therefore we hide it from enumeration.
|
| 3186 |
+
Object.defineProperty(element, '_source', {
|
| 3187 |
+
configurable: false,
|
| 3188 |
+
enumerable: false,
|
| 3189 |
+
writable: false,
|
| 3190 |
+
value: source
|
| 3191 |
+
});
|
| 3192 |
+
if (Object.freeze) {
|
| 3193 |
+
Object.freeze(element.props);
|
| 3194 |
+
Object.freeze(element);
|
| 3195 |
+
}
|
| 3196 |
+
}
|
| 3197 |
+
|
| 3198 |
+
return element;
|
| 3199 |
+
};
|
| 3200 |
+
|
| 3201 |
+
/**
|
| 3202 |
+
* Create and return a new ReactElement of the given type.
|
| 3203 |
+
* See https://reactjs.org/docs/react-api.html#createelement
|
| 3204 |
+
*/
|
| 3205 |
+
function createElement(type, config, children) {
|
| 3206 |
+
var propName = void 0;
|
| 3207 |
+
|
| 3208 |
+
// Reserved names are extracted
|
| 3209 |
+
var props = {};
|
| 3210 |
+
|
| 3211 |
+
var key = null;
|
| 3212 |
+
var ref = null;
|
| 3213 |
+
var self = null;
|
| 3214 |
+
var source = null;
|
| 3215 |
+
|
| 3216 |
+
if (config != null) {
|
| 3217 |
+
if (hasValidRef(config)) {
|
| 3218 |
+
ref = config.ref;
|
| 3219 |
+
}
|
| 3220 |
+
if (hasValidKey(config)) {
|
| 3221 |
+
key = '' + config.key;
|
| 3222 |
+
}
|
| 3223 |
+
|
| 3224 |
+
self = config.__self === undefined ? null : config.__self;
|
| 3225 |
+
source = config.__source === undefined ? null : config.__source;
|
| 3226 |
+
// Remaining properties are added to a new props object
|
| 3227 |
+
for (propName in config) {
|
| 3228 |
+
if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
|
| 3229 |
+
props[propName] = config[propName];
|
| 3230 |
+
}
|
| 3231 |
+
}
|
| 3232 |
+
}
|
| 3233 |
+
|
| 3234 |
+
// Children can be more than one argument, and those are transferred onto
|
| 3235 |
+
// the newly allocated props object.
|
| 3236 |
+
var childrenLength = arguments.length - 2;
|
| 3237 |
+
if (childrenLength === 1) {
|
| 3238 |
+
props.children = children;
|
| 3239 |
+
} else if (childrenLength > 1) {
|
| 3240 |
+
var childArray = Array(childrenLength);
|
| 3241 |
+
for (var i = 0; i < childrenLength; i++) {
|
| 3242 |
+
childArray[i] = arguments[i + 2];
|
| 3243 |
+
}
|
| 3244 |
+
{
|
| 3245 |
+
if (Object.freeze) {
|
| 3246 |
+
Object.freeze(childArray);
|
| 3247 |
+
}
|
| 3248 |
+
}
|
| 3249 |
+
props.children = childArray;
|
| 3250 |
+
}
|
| 3251 |
+
|
| 3252 |
+
// Resolve default props
|
| 3253 |
+
if (type && type.defaultProps) {
|
| 3254 |
+
var defaultProps = type.defaultProps;
|
| 3255 |
+
for (propName in defaultProps) {
|
| 3256 |
+
if (props[propName] === undefined) {
|
| 3257 |
+
props[propName] = defaultProps[propName];
|
| 3258 |
+
}
|
| 3259 |
+
}
|
| 3260 |
+
}
|
| 3261 |
+
{
|
| 3262 |
+
if (key || ref) {
|
| 3263 |
+
var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;
|
| 3264 |
+
if (key) {
|
| 3265 |
+
defineKeyPropWarningGetter(props, displayName);
|
| 3266 |
+
}
|
| 3267 |
+
if (ref) {
|
| 3268 |
+
defineRefPropWarningGetter(props, displayName);
|
| 3269 |
+
}
|
| 3270 |
+
}
|
| 3271 |
+
}
|
| 3272 |
+
return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);
|
| 3273 |
+
}
|
| 3274 |
+
|
| 3275 |
+
/**
|
| 3276 |
+
* Return a function that produces ReactElements of a given type.
|
| 3277 |
+
* See https://reactjs.org/docs/react-api.html#createfactory
|
| 3278 |
+
*/
|
| 3279 |
+
|
| 3280 |
+
function cloneAndReplaceKey(oldElement, newKey) {
|
| 3281 |
+
var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);
|
| 3282 |
+
|
| 3283 |
+
return newElement;
|
| 3284 |
+
}
|
| 3285 |
+
|
| 3286 |
+
/**
|
| 3287 |
+
* Clone and return a new ReactElement using element as the starting point.
|
| 3288 |
+
* See https://reactjs.org/docs/react-api.html#cloneelement
|
| 3289 |
+
*/
|
| 3290 |
+
function cloneElement(element, config, children) {
|
| 3291 |
+
!!(element === null || element === undefined) ? invariant(false, 'React.cloneElement(...): The argument must be a React element, but you passed %s.', element) : void 0;
|
| 3292 |
+
|
| 3293 |
+
var propName = void 0;
|
| 3294 |
+
|
| 3295 |
+
// Original props are copied
|
| 3296 |
+
var props = _assign({}, element.props);
|
| 3297 |
+
|
| 3298 |
+
// Reserved names are extracted
|
| 3299 |
+
var key = element.key;
|
| 3300 |
+
var ref = element.ref;
|
| 3301 |
+
// Self is preserved since the owner is preserved.
|
| 3302 |
+
var self = element._self;
|
| 3303 |
+
// Source is preserved since cloneElement is unlikely to be targeted by a
|
| 3304 |
+
// transpiler, and the original source is probably a better indicator of the
|
| 3305 |
+
// true owner.
|
| 3306 |
+
var source = element._source;
|
| 3307 |
+
|
| 3308 |
+
// Owner will be preserved, unless ref is overridden
|
| 3309 |
+
var owner = element._owner;
|
| 3310 |
+
|
| 3311 |
+
if (config != null) {
|
| 3312 |
+
if (hasValidRef(config)) {
|
| 3313 |
+
// Silently steal the ref from the parent.
|
| 3314 |
+
ref = config.ref;
|
| 3315 |
+
owner = ReactCurrentOwner.current;
|
| 3316 |
+
}
|
| 3317 |
+
if (hasValidKey(config)) {
|
| 3318 |
+
key = '' + config.key;
|
| 3319 |
+
}
|
| 3320 |
+
|
| 3321 |
+
// Remaining properties override existing props
|
| 3322 |
+
var defaultProps = void 0;
|
| 3323 |
+
if (element.type && element.type.defaultProps) {
|
| 3324 |
+
defaultProps = element.type.defaultProps;
|
| 3325 |
+
}
|
| 3326 |
+
for (propName in config) {
|
| 3327 |
+
if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
|
| 3328 |
+
if (config[propName] === undefined && defaultProps !== undefined) {
|
| 3329 |
+
// Resolve default props
|
| 3330 |
+
props[propName] = defaultProps[propName];
|
| 3331 |
+
} else {
|
| 3332 |
+
props[propName] = config[propName];
|
| 3333 |
+
}
|
| 3334 |
+
}
|
| 3335 |
+
}
|
| 3336 |
+
}
|
| 3337 |
+
|
| 3338 |
+
// Children can be more than one argument, and those are transferred onto
|
| 3339 |
+
// the newly allocated props object.
|
| 3340 |
+
var childrenLength = arguments.length - 2;
|
| 3341 |
+
if (childrenLength === 1) {
|
| 3342 |
+
props.children = children;
|
| 3343 |
+
} else if (childrenLength > 1) {
|
| 3344 |
+
var childArray = Array(childrenLength);
|
| 3345 |
+
for (var i = 0; i < childrenLength; i++) {
|
| 3346 |
+
childArray[i] = arguments[i + 2];
|
| 3347 |
+
}
|
| 3348 |
+
props.children = childArray;
|
| 3349 |
+
}
|
| 3350 |
+
|
| 3351 |
+
return ReactElement(element.type, key, ref, self, source, owner, props);
|
| 3352 |
+
}
|
| 3353 |
+
|
| 3354 |
+
/**
|
| 3355 |
+
* Verifies the object is a ReactElement.
|
| 3356 |
+
* See https://reactjs.org/docs/react-api.html#isvalidelement
|
| 3357 |
+
* @param {?object} object
|
| 3358 |
+
* @return {boolean} True if `object` is a ReactElement.
|
| 3359 |
+
* @final
|
| 3360 |
+
*/
|
| 3361 |
+
function isValidElement(object) {
|
| 3362 |
+
return (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
|
| 3363 |
+
}
|
| 3364 |
+
|
| 3365 |
+
var SEPARATOR = '.';
|
| 3366 |
+
var SUBSEPARATOR = ':';
|
| 3367 |
+
|
| 3368 |
+
/**
|
| 3369 |
+
* Escape and wrap key so it is safe to use as a reactid
|
| 3370 |
+
*
|
| 3371 |
+
* @param {string} key to be escaped.
|
| 3372 |
+
* @return {string} the escaped key.
|
| 3373 |
+
*/
|
| 3374 |
+
function escape(key) {
|
| 3375 |
+
var escapeRegex = /[=:]/g;
|
| 3376 |
+
var escaperLookup = {
|
| 3377 |
+
'=': '=0',
|
| 3378 |
+
':': '=2'
|
| 3379 |
+
};
|
| 3380 |
+
var escapedString = ('' + key).replace(escapeRegex, function (match) {
|
| 3381 |
+
return escaperLookup[match];
|
| 3382 |
+
});
|
| 3383 |
+
|
| 3384 |
+
return '$' + escapedString;
|
| 3385 |
+
}
|
| 3386 |
+
|
| 3387 |
+
/**
|
| 3388 |
+
* TODO: Test that a single child and an array with one item have the same key
|
| 3389 |
+
* pattern.
|
| 3390 |
+
*/
|
| 3391 |
+
|
| 3392 |
+
var didWarnAboutMaps = false;
|
| 3393 |
+
|
| 3394 |
+
var userProvidedKeyEscapeRegex = /\/+/g;
|
| 3395 |
+
function escapeUserProvidedKey(text) {
|
| 3396 |
+
return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');
|
| 3397 |
+
}
|
| 3398 |
+
|
| 3399 |
+
var POOL_SIZE = 10;
|
| 3400 |
+
var traverseContextPool = [];
|
| 3401 |
+
function getPooledTraverseContext(mapResult, keyPrefix, mapFunction, mapContext) {
|
| 3402 |
+
if (traverseContextPool.length) {
|
| 3403 |
+
var traverseContext = traverseContextPool.pop();
|
| 3404 |
+
traverseContext.result = mapResult;
|
| 3405 |
+
traverseContext.keyPrefix = keyPrefix;
|
| 3406 |
+
traverseContext.func = mapFunction;
|
| 3407 |
+
traverseContext.context = mapContext;
|
| 3408 |
+
traverseContext.count = 0;
|
| 3409 |
+
return traverseContext;
|
| 3410 |
+
} else {
|
| 3411 |
+
return {
|
| 3412 |
+
result: mapResult,
|
| 3413 |
+
keyPrefix: keyPrefix,
|
| 3414 |
+
func: mapFunction,
|
| 3415 |
+
context: mapContext,
|
| 3416 |
+
count: 0
|
| 3417 |
+
};
|
| 3418 |
+
}
|
| 3419 |
+
}
|
| 3420 |
+
|
| 3421 |
+
function releaseTraverseContext(traverseContext) {
|
| 3422 |
+
traverseContext.result = null;
|
| 3423 |
+
traverseContext.keyPrefix = null;
|
| 3424 |
+
traverseContext.func = null;
|
| 3425 |
+
traverseContext.context = null;
|
| 3426 |
+
traverseContext.count = 0;
|
| 3427 |
+
if (traverseContextPool.length < POOL_SIZE) {
|
| 3428 |
+
traverseContextPool.push(traverseContext);
|
| 3429 |
+
}
|
| 3430 |
+
}
|
| 3431 |
+
|
| 3432 |
+
/**
|
| 3433 |
+
* @param {?*} children Children tree container.
|
| 3434 |
+
* @param {!string} nameSoFar Name of the key path so far.
|
| 3435 |
+
* @param {!function} callback Callback to invoke with each child found.
|
| 3436 |
+
* @param {?*} traverseContext Used to pass information throughout the traversal
|
| 3437 |
+
* process.
|
| 3438 |
+
* @return {!number} The number of children in this subtree.
|
| 3439 |
+
*/
|
| 3440 |
+
function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {
|
| 3441 |
+
var type = typeof children === 'undefined' ? 'undefined' : _typeof(children);
|
| 3442 |
+
|
| 3443 |
+
if (type === 'undefined' || type === 'boolean') {
|
| 3444 |
+
// All of the above are perceived as null.
|
| 3445 |
+
children = null;
|
| 3446 |
+
}
|
| 3447 |
+
|
| 3448 |
+
var invokeCallback = false;
|
| 3449 |
+
|
| 3450 |
+
if (children === null) {
|
| 3451 |
+
invokeCallback = true;
|
| 3452 |
+
} else {
|
| 3453 |
+
switch (type) {
|
| 3454 |
+
case 'string':
|
| 3455 |
+
case 'number':
|
| 3456 |
+
invokeCallback = true;
|
| 3457 |
+
break;
|
| 3458 |
+
case 'object':
|
| 3459 |
+
switch (children.$$typeof) {
|
| 3460 |
+
case REACT_ELEMENT_TYPE:
|
| 3461 |
+
case REACT_PORTAL_TYPE:
|
| 3462 |
+
invokeCallback = true;
|
| 3463 |
+
}
|
| 3464 |
+
}
|
| 3465 |
+
}
|
| 3466 |
+
|
| 3467 |
+
if (invokeCallback) {
|
| 3468 |
+
callback(traverseContext, children,
|
| 3469 |
+
// If it's the only child, treat the name as if it was wrapped in an array
|
| 3470 |
+
// so that it's consistent if the number of children grows.
|
| 3471 |
+
nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);
|
| 3472 |
+
return 1;
|
| 3473 |
+
}
|
| 3474 |
+
|
| 3475 |
+
var child = void 0;
|
| 3476 |
+
var nextName = void 0;
|
| 3477 |
+
var subtreeCount = 0; // Count of children found in the current subtree.
|
| 3478 |
+
var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;
|
| 3479 |
+
|
| 3480 |
+
if (Array.isArray(children)) {
|
| 3481 |
+
for (var i = 0; i < children.length; i++) {
|
| 3482 |
+
child = children[i];
|
| 3483 |
+
nextName = nextNamePrefix + getComponentKey(child, i);
|
| 3484 |
+
subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
|
| 3485 |
+
}
|
| 3486 |
+
} else {
|
| 3487 |
+
var iteratorFn = getIteratorFn(children);
|
| 3488 |
+
if (typeof iteratorFn === 'function') {
|
| 3489 |
+
{
|
| 3490 |
+
// Warn about using Maps as children
|
| 3491 |
+
if (iteratorFn === children.entries) {
|
| 3492 |
+
!didWarnAboutMaps ? warning$1(false, 'Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.') : void 0;
|
| 3493 |
+
didWarnAboutMaps = true;
|
| 3494 |
+
}
|
| 3495 |
+
}
|
| 3496 |
+
|
| 3497 |
+
var iterator = iteratorFn.call(children);
|
| 3498 |
+
var step = void 0;
|
| 3499 |
+
var ii = 0;
|
| 3500 |
+
while (!(step = iterator.next()).done) {
|
| 3501 |
+
child = step.value;
|
| 3502 |
+
nextName = nextNamePrefix + getComponentKey(child, ii++);
|
| 3503 |
+
subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
|
| 3504 |
+
}
|
| 3505 |
+
} else if (type === 'object') {
|
| 3506 |
+
var addendum = '';
|
| 3507 |
+
{
|
| 3508 |
+
addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + ReactDebugCurrentFrame.getStackAddendum();
|
| 3509 |
+
}
|
| 3510 |
+
var childrenString = '' + children;
|
| 3511 |
+
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);
|
| 3512 |
+
}
|
| 3513 |
+
}
|
| 3514 |
+
|
| 3515 |
+
return subtreeCount;
|
| 3516 |
+
}
|
| 3517 |
+
|
| 3518 |
+
/**
|
| 3519 |
+
* Traverses children that are typically specified as `props.children`, but
|
| 3520 |
+
* might also be specified through attributes:
|
| 3521 |
+
*
|
| 3522 |
+
* - `traverseAllChildren(this.props.children, ...)`
|
| 3523 |
+
* - `traverseAllChildren(this.props.leftPanelChildren, ...)`
|
| 3524 |
+
*
|
| 3525 |
+
* The `traverseContext` is an optional argument that is passed through the
|
| 3526 |
+
* entire traversal. It can be used to store accumulations or anything else that
|
| 3527 |
+
* the callback might find relevant.
|
| 3528 |
+
*
|
| 3529 |
+
* @param {?*} children Children tree object.
|
| 3530 |
+
* @param {!function} callback To invoke upon traversing each child.
|
| 3531 |
+
* @param {?*} traverseContext Context for traversal.
|
| 3532 |
+
* @return {!number} The number of children in this subtree.
|
| 3533 |
+
*/
|
| 3534 |
+
function traverseAllChildren(children, callback, traverseContext) {
|
| 3535 |
+
if (children == null) {
|
| 3536 |
+
return 0;
|
| 3537 |
+
}
|
| 3538 |
+
|
| 3539 |
+
return traverseAllChildrenImpl(children, '', callback, traverseContext);
|
| 3540 |
+
}
|
| 3541 |
+
|
| 3542 |
+
/**
|
| 3543 |
+
* Generate a key string that identifies a component within a set.
|
| 3544 |
+
*
|
| 3545 |
+
* @param {*} component A component that could contain a manual key.
|
| 3546 |
+
* @param {number} index Index that is used if a manual key is not provided.
|
| 3547 |
+
* @return {string}
|
| 3548 |
+
*/
|
| 3549 |
+
function getComponentKey(component, index) {
|
| 3550 |
+
// Do some typechecking here since we call this blindly. We want to ensure
|
| 3551 |
+
// that we don't block potential future ES APIs.
|
| 3552 |
+
if ((typeof component === 'undefined' ? 'undefined' : _typeof(component)) === 'object' && component !== null && component.key != null) {
|
| 3553 |
+
// Explicit key
|
| 3554 |
+
return escape(component.key);
|
| 3555 |
+
}
|
| 3556 |
+
// Implicit key determined by the index in the set
|
| 3557 |
+
return index.toString(36);
|
| 3558 |
+
}
|
| 3559 |
+
|
| 3560 |
+
function forEachSingleChild(bookKeeping, child, name) {
|
| 3561 |
+
var func = bookKeeping.func,
|
| 3562 |
+
context = bookKeeping.context;
|
| 3563 |
+
|
| 3564 |
+
func.call(context, child, bookKeeping.count++);
|
| 3565 |
+
}
|
| 3566 |
+
|
| 3567 |
+
/**
|
| 3568 |
+
* Iterates through children that are typically specified as `props.children`.
|
| 3569 |
+
*
|
| 3570 |
+
* See https://reactjs.org/docs/react-api.html#reactchildrenforeach
|
| 3571 |
+
*
|
| 3572 |
+
* The provided forEachFunc(child, index) will be called for each
|
| 3573 |
+
* leaf child.
|
| 3574 |
+
*
|
| 3575 |
+
* @param {?*} children Children tree container.
|
| 3576 |
+
* @param {function(*, int)} forEachFunc
|
| 3577 |
+
* @param {*} forEachContext Context for forEachContext.
|
| 3578 |
+
*/
|
| 3579 |
+
function forEachChildren(children, forEachFunc, forEachContext) {
|
| 3580 |
+
if (children == null) {
|
| 3581 |
+
return children;
|
| 3582 |
+
}
|
| 3583 |
+
var traverseContext = getPooledTraverseContext(null, null, forEachFunc, forEachContext);
|
| 3584 |
+
traverseAllChildren(children, forEachSingleChild, traverseContext);
|
| 3585 |
+
releaseTraverseContext(traverseContext);
|
| 3586 |
+
}
|
| 3587 |
+
|
| 3588 |
+
function mapSingleChildIntoContext(bookKeeping, child, childKey) {
|
| 3589 |
+
var result = bookKeeping.result,
|
| 3590 |
+
keyPrefix = bookKeeping.keyPrefix,
|
| 3591 |
+
func = bookKeeping.func,
|
| 3592 |
+
context = bookKeeping.context;
|
| 3593 |
+
|
| 3594 |
+
var mappedChild = func.call(context, child, bookKeeping.count++);
|
| 3595 |
+
if (Array.isArray(mappedChild)) {
|
| 3596 |
+
mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, function (c) {
|
| 3597 |
+
return c;
|
| 3598 |
+
});
|
| 3599 |
+
} else if (mappedChild != null) {
|
| 3600 |
+
if (isValidElement(mappedChild)) {
|
| 3601 |
+
mappedChild = cloneAndReplaceKey(mappedChild,
|
| 3602 |
+
// Keep both the (mapped) and old keys if they differ, just as
|
| 3603 |
+
// traverseAllChildren used to do for objects as children
|
| 3604 |
+
keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);
|
| 3605 |
+
}
|
| 3606 |
+
result.push(mappedChild);
|
| 3607 |
+
}
|
| 3608 |
+
}
|
| 3609 |
+
|
| 3610 |
+
function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {
|
| 3611 |
+
var escapedPrefix = '';
|
| 3612 |
+
if (prefix != null) {
|
| 3613 |
+
escapedPrefix = escapeUserProvidedKey(prefix) + '/';
|
| 3614 |
+
}
|
| 3615 |
+
var traverseContext = getPooledTraverseContext(array, escapedPrefix, func, context);
|
| 3616 |
+
traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);
|
| 3617 |
+
releaseTraverseContext(traverseContext);
|
| 3618 |
+
}
|
| 3619 |
+
|
| 3620 |
+
/**
|
| 3621 |
+
* Maps children that are typically specified as `props.children`.
|
| 3622 |
+
*
|
| 3623 |
+
* See https://reactjs.org/docs/react-api.html#reactchildrenmap
|
| 3624 |
+
*
|
| 3625 |
+
* The provided mapFunction(child, key, index) will be called for each
|
| 3626 |
+
* leaf child.
|
| 3627 |
+
*
|
| 3628 |
+
* @param {?*} children Children tree container.
|
| 3629 |
+
* @param {function(*, int)} func The map function.
|
| 3630 |
+
* @param {*} context Context for mapFunction.
|
| 3631 |
+
* @return {object} Object containing the ordered map of results.
|
| 3632 |
+
*/
|
| 3633 |
+
function mapChildren(children, func, context) {
|
| 3634 |
+
if (children == null) {
|
| 3635 |
+
return children;
|
| 3636 |
+
}
|
| 3637 |
+
var result = [];
|
| 3638 |
+
mapIntoWithKeyPrefixInternal(children, result, null, func, context);
|
| 3639 |
+
return result;
|
| 3640 |
+
}
|
| 3641 |
+
|
| 3642 |
+
/**
|
| 3643 |
+
* Count the number of children that are typically specified as
|
| 3644 |
+
* `props.children`.
|
| 3645 |
+
*
|
| 3646 |
+
* See https://reactjs.org/docs/react-api.html#reactchildrencount
|
| 3647 |
+
*
|
| 3648 |
+
* @param {?*} children Children tree container.
|
| 3649 |
+
* @return {number} The number of children.
|
| 3650 |
+
*/
|
| 3651 |
+
function countChildren(children) {
|
| 3652 |
+
return traverseAllChildren(children, function () {
|
| 3653 |
+
return null;
|
| 3654 |
+
}, null);
|
| 3655 |
+
}
|
| 3656 |
+
|
| 3657 |
+
/**
|
| 3658 |
+
* Flatten a children object (typically specified as `props.children`) and
|
| 3659 |
+
* return an array with appropriately re-keyed children.
|
| 3660 |
+
*
|
| 3661 |
+
* See https://reactjs.org/docs/react-api.html#reactchildrentoarray
|
| 3662 |
+
*/
|
| 3663 |
+
function toArray(children) {
|
| 3664 |
+
var result = [];
|
| 3665 |
+
mapIntoWithKeyPrefixInternal(children, result, null, function (child) {
|
| 3666 |
+
return child;
|
| 3667 |
+
});
|
| 3668 |
+
return result;
|
| 3669 |
+
}
|
| 3670 |
+
|
| 3671 |
+
/**
|
| 3672 |
+
* Returns the first child in a collection of children and verifies that there
|
| 3673 |
+
* is only one child in the collection.
|
| 3674 |
+
*
|
| 3675 |
+
* See https://reactjs.org/docs/react-api.html#reactchildrenonly
|
| 3676 |
+
*
|
| 3677 |
+
* The current implementation of this function assumes that a single child gets
|
| 3678 |
+
* passed without a wrapper, but the purpose of this helper function is to
|
| 3679 |
+
* abstract away the particular structure of children.
|
| 3680 |
+
*
|
| 3681 |
+
* @param {?object} children Child collection structure.
|
| 3682 |
+
* @return {ReactElement} The first and only `ReactElement` contained in the
|
| 3683 |
+
* structure.
|
| 3684 |
+
*/
|
| 3685 |
+
function onlyChild(children) {
|
| 3686 |
+
!isValidElement(children) ? invariant(false, 'React.Children.only expected to receive a single React element child.') : void 0;
|
| 3687 |
+
return children;
|
| 3688 |
+
}
|
| 3689 |
+
|
| 3690 |
+
function createContext(defaultValue, calculateChangedBits) {
|
| 3691 |
+
if (calculateChangedBits === undefined) {
|
| 3692 |
+
calculateChangedBits = null;
|
| 3693 |
+
} else {
|
| 3694 |
+
{
|
| 3695 |
+
!(calculateChangedBits === null || typeof calculateChangedBits === 'function') ? warningWithoutStack$1(false, 'createContext: Expected the optional second argument to be a ' + 'function. Instead received: %s', calculateChangedBits) : void 0;
|
| 3696 |
+
}
|
| 3697 |
+
}
|
| 3698 |
+
|
| 3699 |
+
var context = {
|
| 3700 |
+
$$typeof: REACT_CONTEXT_TYPE,
|
| 3701 |
+
_calculateChangedBits: calculateChangedBits,
|
| 3702 |
+
// As a workaround to support multiple concurrent renderers, we categorize
|
| 3703 |
+
// some renderers as primary and others as secondary. We only expect
|
| 3704 |
+
// there to be two concurrent renderers at most: React Native (primary) and
|
| 3705 |
+
// Fabric (secondary); React DOM (primary) and React ART (secondary).
|
| 3706 |
+
// Secondary renderers store their context values on separate fields.
|
| 3707 |
+
_currentValue: defaultValue,
|
| 3708 |
+
_currentValue2: defaultValue,
|
| 3709 |
+
// These are circular
|
| 3710 |
+
Provider: null,
|
| 3711 |
+
Consumer: null
|
| 3712 |
+
};
|
| 3713 |
+
|
| 3714 |
+
context.Provider = {
|
| 3715 |
+
$$typeof: REACT_PROVIDER_TYPE,
|
| 3716 |
+
_context: context
|
| 3717 |
+
};
|
| 3718 |
+
|
| 3719 |
+
var hasWarnedAboutUsingNestedContextConsumers = false;
|
| 3720 |
+
var hasWarnedAboutUsingConsumerProvider = false;
|
| 3721 |
+
|
| 3722 |
+
{
|
| 3723 |
+
// A separate object, but proxies back to the original context object for
|
| 3724 |
+
// backwards compatibility. It has a different $$typeof, so we can properly
|
| 3725 |
+
// warn for the incorrect usage of Context as a Consumer.
|
| 3726 |
+
var Consumer = {
|
| 3727 |
+
$$typeof: REACT_CONTEXT_TYPE,
|
| 3728 |
+
_context: context,
|
| 3729 |
+
_calculateChangedBits: context._calculateChangedBits
|
| 3730 |
+
};
|
| 3731 |
+
// $FlowFixMe: Flow complains about not setting a value, which is intentional here
|
| 3732 |
+
Object.defineProperties(Consumer, {
|
| 3733 |
+
Provider: {
|
| 3734 |
+
get: function get() {
|
| 3735 |
+
if (!hasWarnedAboutUsingConsumerProvider) {
|
| 3736 |
+
hasWarnedAboutUsingConsumerProvider = true;
|
| 3737 |
+
warning$1(false, 'Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?');
|
| 3738 |
+
}
|
| 3739 |
+
return context.Provider;
|
| 3740 |
+
},
|
| 3741 |
+
set: function set(_Provider) {
|
| 3742 |
+
context.Provider = _Provider;
|
| 3743 |
+
}
|
| 3744 |
+
},
|
| 3745 |
+
_currentValue: {
|
| 3746 |
+
get: function get() {
|
| 3747 |
+
return context._currentValue;
|
| 3748 |
+
},
|
| 3749 |
+
set: function set(_currentValue) {
|
| 3750 |
+
context._currentValue = _currentValue;
|
| 3751 |
+
}
|
| 3752 |
+
},
|
| 3753 |
+
_currentValue2: {
|
| 3754 |
+
get: function get() {
|
| 3755 |
+
return context._currentValue2;
|
| 3756 |
+
},
|
| 3757 |
+
set: function set(_currentValue2) {
|
| 3758 |
+
context._currentValue2 = _currentValue2;
|
| 3759 |
+
}
|
| 3760 |
+
},
|
| 3761 |
+
Consumer: {
|
| 3762 |
+
get: function get() {
|
| 3763 |
+
if (!hasWarnedAboutUsingNestedContextConsumers) {
|
| 3764 |
+
hasWarnedAboutUsingNestedContextConsumers = true;
|
| 3765 |
+
warning$1(false, 'Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');
|
| 3766 |
+
}
|
| 3767 |
+
return context.Consumer;
|
| 3768 |
+
}
|
| 3769 |
+
}
|
| 3770 |
+
});
|
| 3771 |
+
// $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty
|
| 3772 |
+
context.Consumer = Consumer;
|
| 3773 |
+
}
|
| 3774 |
+
|
| 3775 |
+
{
|
| 3776 |
+
context._currentRenderer = null;
|
| 3777 |
+
context._currentRenderer2 = null;
|
| 3778 |
+
}
|
| 3779 |
+
|
| 3780 |
+
return context;
|
| 3781 |
+
}
|
| 3782 |
+
|
| 3783 |
+
function lazy(ctor) {
|
| 3784 |
+
return {
|
| 3785 |
+
$$typeof: REACT_LAZY_TYPE,
|
| 3786 |
+
_ctor: ctor,
|
| 3787 |
+
// React uses these fields to store the result.
|
| 3788 |
+
_status: -1,
|
| 3789 |
+
_result: null
|
| 3790 |
+
};
|
| 3791 |
+
}
|
| 3792 |
+
|
| 3793 |
+
function forwardRef(render) {
|
| 3794 |
+
{
|
| 3795 |
+
if (typeof render !== 'function') {
|
| 3796 |
+
warningWithoutStack$1(false, 'forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render === 'undefined' ? 'undefined' : _typeof(render));
|
| 3797 |
+
} else {
|
| 3798 |
+
!(
|
| 3799 |
+
// Do not warn for 0 arguments because it could be due to usage of the 'arguments' object
|
| 3800 |
+
render.length === 0 || render.length === 2) ? warningWithoutStack$1(false, 'forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.') : void 0;
|
| 3801 |
+
}
|
| 3802 |
+
|
| 3803 |
+
if (render != null) {
|
| 3804 |
+
!(render.defaultProps == null && render.propTypes == null) ? warningWithoutStack$1(false, 'forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?') : void 0;
|
| 3805 |
+
}
|
| 3806 |
+
}
|
| 3807 |
+
|
| 3808 |
+
return {
|
| 3809 |
+
$$typeof: REACT_FORWARD_REF_TYPE,
|
| 3810 |
+
render: render
|
| 3811 |
+
};
|
| 3812 |
+
}
|
| 3813 |
+
|
| 3814 |
+
function isValidElementType(type) {
|
| 3815 |
+
return typeof type === 'string' || typeof type === 'function' ||
|
| 3816 |
+
// Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
|
| 3817 |
+
type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || (typeof type === 'undefined' ? 'undefined' : _typeof(type)) === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);
|
| 3818 |
+
}
|
| 3819 |
+
|
| 3820 |
+
function memo(type, compare) {
|
| 3821 |
+
{
|
| 3822 |
+
if (!isValidElementType(type)) {
|
| 3823 |
+
warningWithoutStack$1(false, 'memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type === 'undefined' ? 'undefined' : _typeof(type));
|
| 3824 |
+
}
|
| 3825 |
+
}
|
| 3826 |
+
return {
|
| 3827 |
+
$$typeof: REACT_MEMO_TYPE,
|
| 3828 |
+
type: type,
|
| 3829 |
+
compare: compare === undefined ? null : compare
|
| 3830 |
+
};
|
| 3831 |
+
}
|
| 3832 |
+
|
| 3833 |
+
/**
|
| 3834 |
+
* ReactElementValidator provides a wrapper around a element factory
|
| 3835 |
+
* which validates the props passed to the element. This is intended to be
|
| 3836 |
+
* used only in DEV and could be replaced by a static type checker for languages
|
| 3837 |
+
* that support it.
|
| 3838 |
+
*/
|
| 3839 |
+
|
| 3840 |
+
var propTypesMisspellWarningShown = void 0;
|
| 3841 |
+
|
| 3842 |
+
{
|
| 3843 |
+
propTypesMisspellWarningShown = false;
|
| 3844 |
+
}
|
| 3845 |
+
|
| 3846 |
+
function getDeclarationErrorAddendum() {
|
| 3847 |
+
if (ReactCurrentOwner.current) {
|
| 3848 |
+
var name = getComponentName(ReactCurrentOwner.current.type);
|
| 3849 |
+
if (name) {
|
| 3850 |
+
return '\n\nCheck the render method of `' + name + '`.';
|
| 3851 |
+
}
|
| 3852 |
+
}
|
| 3853 |
+
return '';
|
| 3854 |
+
}
|
| 3855 |
+
|
| 3856 |
+
function getSourceInfoErrorAddendum(elementProps) {
|
| 3857 |
+
if (elementProps !== null && elementProps !== undefined && elementProps.__source !== undefined) {
|
| 3858 |
+
var source = elementProps.__source;
|
| 3859 |
+
var fileName = source.fileName.replace(/^.*[\\\/]/, '');
|
| 3860 |
+
var lineNumber = source.lineNumber;
|
| 3861 |
+
return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.';
|
| 3862 |
+
}
|
| 3863 |
+
return '';
|
| 3864 |
+
}
|
| 3865 |
+
|
| 3866 |
+
/**
|
| 3867 |
+
* Warn if there's no key explicitly set on dynamic arrays of children or
|
| 3868 |
+
* object keys are not valid. This allows us to keep track of children between
|
| 3869 |
+
* updates.
|
| 3870 |
+
*/
|
| 3871 |
+
var ownerHasKeyUseWarning = {};
|
| 3872 |
+
|
| 3873 |
+
function getCurrentComponentErrorInfo(parentType) {
|
| 3874 |
+
var info = getDeclarationErrorAddendum();
|
| 3875 |
+
|
| 3876 |
+
if (!info) {
|
| 3877 |
+
var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;
|
| 3878 |
+
if (parentName) {
|
| 3879 |
+
info = '\n\nCheck the top-level render call using <' + parentName + '>.';
|
| 3880 |
+
}
|
| 3881 |
+
}
|
| 3882 |
+
return info;
|
| 3883 |
+
}
|
| 3884 |
+
|
| 3885 |
+
/**
|
| 3886 |
+
* Warn if the element doesn't have an explicit key assigned to it.
|
| 3887 |
+
* This element is in an array. The array could grow and shrink or be
|
| 3888 |
+
* reordered. All children that haven't already been validated are required to
|
| 3889 |
+
* have a "key" property assigned to it. Error statuses are cached so a warning
|
| 3890 |
+
* will only be shown once.
|
| 3891 |
+
*
|
| 3892 |
+
* @internal
|
| 3893 |
+
* @param {ReactElement} element Element that requires a key.
|
| 3894 |
+
* @param {*} parentType element's parent's type.
|
| 3895 |
+
*/
|
| 3896 |
+
function validateExplicitKey(element, parentType) {
|
| 3897 |
+
if (!element._store || element._store.validated || element.key != null) {
|
| 3898 |
+
return;
|
| 3899 |
+
}
|
| 3900 |
+
element._store.validated = true;
|
| 3901 |
+
|
| 3902 |
+
var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);
|
| 3903 |
+
if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {
|
| 3904 |
+
return;
|
| 3905 |
+
}
|
| 3906 |
+
ownerHasKeyUseWarning[currentComponentErrorInfo] = true;
|
| 3907 |
+
|
| 3908 |
+
// Usually the current owner is the offender, but if it accepts children as a
|
| 3909 |
+
// property, it may be the creator of the child that's responsible for
|
| 3910 |
+
// assigning it a key.
|
| 3911 |
+
var childOwner = '';
|
| 3912 |
+
if (element && element._owner && element._owner !== ReactCurrentOwner.current) {
|
| 3913 |
+
// Give the component that originally created this child.
|
| 3914 |
+
childOwner = ' It was passed a child from ' + getComponentName(element._owner.type) + '.';
|
| 3915 |
+
}
|
| 3916 |
+
|
| 3917 |
+
setCurrentlyValidatingElement(element);
|
| 3918 |
+
{
|
| 3919 |
+
warning$1(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.', currentComponentErrorInfo, childOwner);
|
| 3920 |
+
}
|
| 3921 |
+
setCurrentlyValidatingElement(null);
|
| 3922 |
+
}
|
| 3923 |
+
|
| 3924 |
+
/**
|
| 3925 |
+
* Ensure that every element either is passed in a static location, in an
|
| 3926 |
+
* array with an explicit keys property defined, or in an object literal
|
| 3927 |
+
* with valid key property.
|
| 3928 |
+
*
|
| 3929 |
+
* @internal
|
| 3930 |
+
* @param {ReactNode} node Statically passed child of any type.
|
| 3931 |
+
* @param {*} parentType node's parent's type.
|
| 3932 |
+
*/
|
| 3933 |
+
function validateChildKeys(node, parentType) {
|
| 3934 |
+
if ((typeof node === 'undefined' ? 'undefined' : _typeof(node)) !== 'object') {
|
| 3935 |
+
return;
|
| 3936 |
+
}
|
| 3937 |
+
if (Array.isArray(node)) {
|
| 3938 |
+
for (var i = 0; i < node.length; i++) {
|
| 3939 |
+
var child = node[i];
|
| 3940 |
+
if (isValidElement(child)) {
|
| 3941 |
+
validateExplicitKey(child, parentType);
|
| 3942 |
+
}
|
| 3943 |
+
}
|
| 3944 |
+
} else if (isValidElement(node)) {
|
| 3945 |
+
// This element was passed in a valid location.
|
| 3946 |
+
if (node._store) {
|
| 3947 |
+
node._store.validated = true;
|
| 3948 |
+
}
|
| 3949 |
+
} else if (node) {
|
| 3950 |
+
var iteratorFn = getIteratorFn(node);
|
| 3951 |
+
if (typeof iteratorFn === 'function') {
|
| 3952 |
+
// Entry iterators used to provide implicit keys,
|
| 3953 |
+
// but now we print a separate warning for them later.
|
| 3954 |
+
if (iteratorFn !== node.entries) {
|
| 3955 |
+
var iterator = iteratorFn.call(node);
|
| 3956 |
+
var step = void 0;
|
| 3957 |
+
while (!(step = iterator.next()).done) {
|
| 3958 |
+
if (isValidElement(step.value)) {
|
| 3959 |
+
validateExplicitKey(step.value, parentType);
|
| 3960 |
+
}
|
| 3961 |
+
}
|
| 3962 |
+
}
|
| 3963 |
+
}
|
| 3964 |
+
}
|
| 3965 |
+
}
|
| 3966 |
+
|
| 3967 |
+
/**
|
| 3968 |
+
* Given an element, validate that its props follow the propTypes definition,
|
| 3969 |
+
* provided by the type.
|
| 3970 |
+
*
|
| 3971 |
+
* @param {ReactElement} element
|
| 3972 |
+
*/
|
| 3973 |
+
function validatePropTypes(element) {
|
| 3974 |
+
var type = element.type;
|
| 3975 |
+
var name = void 0,
|
| 3976 |
+
propTypes = void 0;
|
| 3977 |
+
if (typeof type === 'function') {
|
| 3978 |
+
// Class or function component
|
| 3979 |
+
name = type.displayName || type.name;
|
| 3980 |
+
propTypes = type.propTypes;
|
| 3981 |
+
} else if ((typeof type === 'undefined' ? 'undefined' : _typeof(type)) === 'object' && type !== null && type.$$typeof === REACT_FORWARD_REF_TYPE) {
|
| 3982 |
+
// ForwardRef
|
| 3983 |
+
var functionName = type.render.displayName || type.render.name || '';
|
| 3984 |
+
name = type.displayName || (functionName !== '' ? 'ForwardRef(' + functionName + ')' : 'ForwardRef');
|
| 3985 |
+
propTypes = type.propTypes;
|
| 3986 |
+
} else {
|
| 3987 |
+
return;
|
| 3988 |
+
}
|
| 3989 |
+
if (propTypes) {
|
| 3990 |
+
setCurrentlyValidatingElement(element);
|
| 3991 |
+
checkPropTypes(propTypes, element.props, 'prop', name, ReactDebugCurrentFrame.getStackAddendum);
|
| 3992 |
+
setCurrentlyValidatingElement(null);
|
| 3993 |
+
} else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {
|
| 3994 |
+
propTypesMisspellWarningShown = true;
|
| 3995 |
+
warningWithoutStack$1(false, 'Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', name || 'Unknown');
|
| 3996 |
+
}
|
| 3997 |
+
if (typeof type.getDefaultProps === 'function') {
|
| 3998 |
+
!type.getDefaultProps.isReactClassApproved ? warningWithoutStack$1(false, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.') : void 0;
|
| 3999 |
+
}
|
| 4000 |
+
}
|
| 4001 |
+
|
| 4002 |
+
/**
|
| 4003 |
+
* Given a fragment, validate that it can only be provided with fragment props
|
| 4004 |
+
* @param {ReactElement} fragment
|
| 4005 |
+
*/
|
| 4006 |
+
function validateFragmentProps(fragment) {
|
| 4007 |
+
setCurrentlyValidatingElement(fragment);
|
| 4008 |
+
|
| 4009 |
+
var keys = Object.keys(fragment.props);
|
| 4010 |
+
for (var i = 0; i < keys.length; i++) {
|
| 4011 |
+
var key = keys[i];
|
| 4012 |
+
if (key !== 'children' && key !== 'key') {
|
| 4013 |
+
warning$1(false, 'Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);
|
| 4014 |
+
break;
|
| 4015 |
+
}
|
| 4016 |
+
}
|
| 4017 |
+
|
| 4018 |
+
if (fragment.ref !== null) {
|
| 4019 |
+
warning$1(false, 'Invalid attribute `ref` supplied to `React.Fragment`.');
|
| 4020 |
+
}
|
| 4021 |
+
|
| 4022 |
+
setCurrentlyValidatingElement(null);
|
| 4023 |
+
}
|
| 4024 |
+
|
| 4025 |
+
function createElementWithValidation(type, props, children) {
|
| 4026 |
+
var validType = isValidElementType(type);
|
| 4027 |
+
|
| 4028 |
+
// We warn in this case but don't throw. We expect the element creation to
|
| 4029 |
+
// succeed and there will likely be errors in render.
|
| 4030 |
+
if (!validType) {
|
| 4031 |
+
var info = '';
|
| 4032 |
+
if (type === undefined || (typeof type === 'undefined' ? 'undefined' : _typeof(type)) === 'object' && type !== null && Object.keys(type).length === 0) {
|
| 4033 |
+
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.";
|
| 4034 |
+
}
|
| 4035 |
+
|
| 4036 |
+
var sourceInfo = getSourceInfoErrorAddendum(props);
|
| 4037 |
+
if (sourceInfo) {
|
| 4038 |
+
info += sourceInfo;
|
| 4039 |
+
} else {
|
| 4040 |
+
info += getDeclarationErrorAddendum();
|
| 4041 |
+
}
|
| 4042 |
+
|
| 4043 |
+
var typeString = void 0;
|
| 4044 |
+
if (type === null) {
|
| 4045 |
+
typeString = 'null';
|
| 4046 |
+
} else if (Array.isArray(type)) {
|
| 4047 |
+
typeString = 'array';
|
| 4048 |
+
} else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {
|
| 4049 |
+
typeString = '<' + (getComponentName(type.type) || 'Unknown') + ' />';
|
| 4050 |
+
info = ' Did you accidentally export a JSX literal instead of a component?';
|
| 4051 |
+
} else {
|
| 4052 |
+
typeString = typeof type === 'undefined' ? 'undefined' : _typeof(type);
|
| 4053 |
+
}
|
| 4054 |
+
|
| 4055 |
+
warning$1(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);
|
| 4056 |
+
}
|
| 4057 |
+
|
| 4058 |
+
var element = createElement.apply(this, arguments);
|
| 4059 |
+
|
| 4060 |
+
// The result can be nullish if a mock or a custom function is used.
|
| 4061 |
+
// TODO: Drop this when these are no longer allowed as the type argument.
|
| 4062 |
+
if (element == null) {
|
| 4063 |
+
return element;
|
| 4064 |
+
}
|
| 4065 |
+
|
| 4066 |
+
// Skip key warning if the type isn't valid since our key validation logic
|
| 4067 |
+
// doesn't expect a non-string/function type and can throw confusing errors.
|
| 4068 |
+
// We don't want exception behavior to differ between dev and prod.
|
| 4069 |
+
// (Rendering will throw with a helpful message and as soon as the type is
|
| 4070 |
+
// fixed, the key warnings will appear.)
|
| 4071 |
+
if (validType) {
|
| 4072 |
+
for (var i = 2; i < arguments.length; i++) {
|
| 4073 |
+
validateChildKeys(arguments[i], type);
|
| 4074 |
+
}
|
| 4075 |
+
}
|
| 4076 |
+
|
| 4077 |
+
if (type === REACT_FRAGMENT_TYPE) {
|
| 4078 |
+
validateFragmentProps(element);
|
| 4079 |
+
} else {
|
| 4080 |
+
validatePropTypes(element);
|
| 4081 |
+
}
|
| 4082 |
+
|
| 4083 |
+
return element;
|
| 4084 |
+
}
|
| 4085 |
+
|
| 4086 |
+
function createFactoryWithValidation(type) {
|
| 4087 |
+
var validatedFactory = createElementWithValidation.bind(null, type);
|
| 4088 |
+
validatedFactory.type = type;
|
| 4089 |
+
// Legacy hook: remove it
|
| 4090 |
+
{
|
| 4091 |
+
Object.defineProperty(validatedFactory, 'type', {
|
| 4092 |
+
enumerable: false,
|
| 4093 |
+
get: function get() {
|
| 4094 |
+
lowPriorityWarning$1(false, 'Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');
|
| 4095 |
+
Object.defineProperty(this, 'type', {
|
| 4096 |
+
value: type
|
| 4097 |
+
});
|
| 4098 |
+
return type;
|
| 4099 |
+
}
|
| 4100 |
+
});
|
| 4101 |
+
}
|
| 4102 |
+
|
| 4103 |
+
return validatedFactory;
|
| 4104 |
+
}
|
| 4105 |
+
|
| 4106 |
+
function cloneElementWithValidation(element, props, children) {
|
| 4107 |
+
var newElement = cloneElement.apply(this, arguments);
|
| 4108 |
+
for (var i = 2; i < arguments.length; i++) {
|
| 4109 |
+
validateChildKeys(arguments[i], newElement.type);
|
| 4110 |
+
}
|
| 4111 |
+
validatePropTypes(newElement);
|
| 4112 |
+
return newElement;
|
| 4113 |
+
}
|
| 4114 |
+
|
| 4115 |
+
var React = {
|
| 4116 |
+
Children: {
|
| 4117 |
+
map: mapChildren,
|
| 4118 |
+
forEach: forEachChildren,
|
| 4119 |
+
count: countChildren,
|
| 4120 |
+
toArray: toArray,
|
| 4121 |
+
only: onlyChild
|
| 4122 |
+
},
|
| 4123 |
+
|
| 4124 |
+
createRef: createRef,
|
| 4125 |
+
Component: Component,
|
| 4126 |
+
PureComponent: PureComponent,
|
| 4127 |
+
|
| 4128 |
+
createContext: createContext,
|
| 4129 |
+
forwardRef: forwardRef,
|
| 4130 |
+
lazy: lazy,
|
| 4131 |
+
memo: memo,
|
| 4132 |
+
|
| 4133 |
+
Fragment: REACT_FRAGMENT_TYPE,
|
| 4134 |
+
StrictMode: REACT_STRICT_MODE_TYPE,
|
| 4135 |
+
unstable_ConcurrentMode: REACT_CONCURRENT_MODE_TYPE,
|
| 4136 |
+
Suspense: REACT_SUSPENSE_TYPE,
|
| 4137 |
+
unstable_Profiler: REACT_PROFILER_TYPE,
|
| 4138 |
+
|
| 4139 |
+
createElement: createElementWithValidation,
|
| 4140 |
+
cloneElement: cloneElementWithValidation,
|
| 4141 |
+
createFactory: createFactoryWithValidation,
|
| 4142 |
+
isValidElement: isValidElement,
|
| 4143 |
+
|
| 4144 |
+
version: ReactVersion,
|
| 4145 |
+
|
| 4146 |
+
__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: ReactSharedInternals
|
| 4147 |
+
};
|
| 4148 |
+
|
| 4149 |
+
var React$2 = Object.freeze({
|
| 4150 |
+
default: React
|
| 4151 |
+
});
|
| 4152 |
+
|
| 4153 |
+
var React$3 = React$2 && React || React$2;
|
| 4154 |
+
|
| 4155 |
+
// TODO: decide on the top-level export form.
|
| 4156 |
+
// This is hacky but makes it work with both Rollup and Jest.
|
| 4157 |
+
var react = React$3.default || React$3;
|
| 4158 |
+
|
| 4159 |
+
module.exports = react;
|
| 4160 |
+
})();
|
| 4161 |
+
}
|
| 4162 |
+
|
| 4163 |
+
/***/ }),
|
| 4164 |
+
|
| 4165 |
+
/***/ "./node_modules/react/index.js":
|
| 4166 |
+
/*!*************************************!*\
|
| 4167 |
+
!*** ./node_modules/react/index.js ***!
|
| 4168 |
+
\*************************************/
|
| 4169 |
+
/*! no static exports found */
|
| 4170 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 4171 |
+
|
| 4172 |
+
"use strict";
|
| 4173 |
+
|
| 4174 |
+
|
| 4175 |
+
if (false) {} else {
|
| 4176 |
+
module.exports = __webpack_require__(/*! ./cjs/react.development.js */ "./node_modules/react/cjs/react.development.js");
|
| 4177 |
+
}
|
| 4178 |
+
|
| 4179 |
+
/***/ }),
|
| 4180 |
+
|
| 4181 |
+
/***/ "./node_modules/style-loader/lib/addStyles.js":
|
| 4182 |
+
/*!****************************************************!*\
|
| 4183 |
+
!*** ./node_modules/style-loader/lib/addStyles.js ***!
|
| 4184 |
+
\****************************************************/
|
| 4185 |
+
/*! no static exports found */
|
| 4186 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 4187 |
+
|
| 4188 |
+
/*
|
| 4189 |
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
| 4190 |
+
Author Tobias Koppers @sokra
|
| 4191 |
+
*/
|
| 4192 |
+
|
| 4193 |
+
var stylesInDom = {};
|
| 4194 |
+
|
| 4195 |
+
var memoize = function (fn) {
|
| 4196 |
+
var memo;
|
| 4197 |
+
|
| 4198 |
+
return function () {
|
| 4199 |
+
if (typeof memo === "undefined") memo = fn.apply(this, arguments);
|
| 4200 |
+
return memo;
|
| 4201 |
+
};
|
| 4202 |
+
};
|
| 4203 |
+
|
| 4204 |
+
var isOldIE = memoize(function () {
|
| 4205 |
+
// Test for IE <= 9 as proposed by Browserhacks
|
| 4206 |
+
// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
|
| 4207 |
+
// Tests for existence of standard globals is to allow style-loader
|
| 4208 |
+
// to operate correctly into non-standard environments
|
| 4209 |
+
// @see https://github.com/webpack-contrib/style-loader/issues/177
|
| 4210 |
+
return window && document && document.all && !window.atob;
|
| 4211 |
+
});
|
| 4212 |
+
|
| 4213 |
+
var getTarget = function (target) {
|
| 4214 |
+
return document.querySelector(target);
|
| 4215 |
+
};
|
| 4216 |
+
|
| 4217 |
+
var getElement = (function (fn) {
|
| 4218 |
+
var memo = {};
|
| 4219 |
+
|
| 4220 |
+
return function(target) {
|
| 4221 |
+
// If passing function in options, then use it for resolve "head" element.
|
| 4222 |
+
// Useful for Shadow Root style i.e
|
| 4223 |
+
// {
|
| 4224 |
+
// insertInto: function () { return document.querySelector("#foo").shadowRoot }
|
| 4225 |
+
// }
|
| 4226 |
+
if (typeof target === 'function') {
|
| 4227 |
+
return target();
|
| 4228 |
+
}
|
| 4229 |
+
if (typeof memo[target] === "undefined") {
|
| 4230 |
+
var styleTarget = getTarget.call(this, target);
|
| 4231 |
+
// Special case to return head of iframe instead of iframe itself
|
| 4232 |
+
if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
|
| 4233 |
+
try {
|
| 4234 |
+
// This will throw an exception if access to iframe is blocked
|
| 4235 |
+
// due to cross-origin restrictions
|
| 4236 |
+
styleTarget = styleTarget.contentDocument.head;
|
| 4237 |
+
} catch(e) {
|
| 4238 |
+
styleTarget = null;
|
| 4239 |
+
}
|
| 4240 |
+
}
|
| 4241 |
+
memo[target] = styleTarget;
|
| 4242 |
+
}
|
| 4243 |
+
return memo[target]
|
| 4244 |
+
};
|
| 4245 |
+
})();
|
| 4246 |
+
|
| 4247 |
+
var singleton = null;
|
| 4248 |
+
var singletonCounter = 0;
|
| 4249 |
+
var stylesInsertedAtTop = [];
|
| 4250 |
+
|
| 4251 |
+
var fixUrls = __webpack_require__(/*! ./urls */ "./node_modules/style-loader/lib/urls.js");
|
| 4252 |
+
|
| 4253 |
+
module.exports = function(list, options) {
|
| 4254 |
+
if (typeof DEBUG !== "undefined" && DEBUG) {
|
| 4255 |
+
if (typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");
|
| 4256 |
+
}
|
| 4257 |
+
|
| 4258 |
+
options = options || {};
|
| 4259 |
+
|
| 4260 |
+
options.attrs = typeof options.attrs === "object" ? options.attrs : {};
|
| 4261 |
+
|
| 4262 |
+
// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
|
| 4263 |
+
// tags it will allow on a page
|
| 4264 |
+
if (!options.singleton && typeof options.singleton !== "boolean") options.singleton = isOldIE();
|
| 4265 |
+
|
| 4266 |
+
// By default, add <style> tags to the <head> element
|
| 4267 |
+
if (!options.insertInto) options.insertInto = "head";
|
| 4268 |
+
|
| 4269 |
+
// By default, add <style> tags to the bottom of the target
|
| 4270 |
+
if (!options.insertAt) options.insertAt = "bottom";
|
| 4271 |
+
|
| 4272 |
+
var styles = listToStyles(list, options);
|
| 4273 |
+
|
| 4274 |
+
addStylesToDom(styles, options);
|
| 4275 |
+
|
| 4276 |
+
return function update (newList) {
|
| 4277 |
+
var mayRemove = [];
|
| 4278 |
+
|
| 4279 |
+
for (var i = 0; i < styles.length; i++) {
|
| 4280 |
+
var item = styles[i];
|
| 4281 |
+
var domStyle = stylesInDom[item.id];
|
| 4282 |
+
|
| 4283 |
+
domStyle.refs--;
|
| 4284 |
+
mayRemove.push(domStyle);
|
| 4285 |
+
}
|
| 4286 |
+
|
| 4287 |
+
if(newList) {
|
| 4288 |
+
var newStyles = listToStyles(newList, options);
|
| 4289 |
+
addStylesToDom(newStyles, options);
|
| 4290 |
+
}
|
| 4291 |
+
|
| 4292 |
+
for (var i = 0; i < mayRemove.length; i++) {
|
| 4293 |
+
var domStyle = mayRemove[i];
|
| 4294 |
+
|
| 4295 |
+
if(domStyle.refs === 0) {
|
| 4296 |
+
for (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();
|
| 4297 |
+
|
| 4298 |
+
delete stylesInDom[domStyle.id];
|
| 4299 |
+
}
|
| 4300 |
+
}
|
| 4301 |
+
};
|
| 4302 |
+
};
|
| 4303 |
+
|
| 4304 |
+
function addStylesToDom (styles, options) {
|
| 4305 |
+
for (var i = 0; i < styles.length; i++) {
|
| 4306 |
+
var item = styles[i];
|
| 4307 |
+
var domStyle = stylesInDom[item.id];
|
| 4308 |
+
|
| 4309 |
+
if(domStyle) {
|
| 4310 |
+
domStyle.refs++;
|
| 4311 |
+
|
| 4312 |
+
for(var j = 0; j < domStyle.parts.length; j++) {
|
| 4313 |
+
domStyle.parts[j](item.parts[j]);
|
| 4314 |
+
}
|
| 4315 |
+
|
| 4316 |
+
for(; j < item.parts.length; j++) {
|
| 4317 |
+
domStyle.parts.push(addStyle(item.parts[j], options));
|
| 4318 |
+
}
|
| 4319 |
+
} else {
|
| 4320 |
+
var parts = [];
|
| 4321 |
+
|
| 4322 |
+
for(var j = 0; j < item.parts.length; j++) {
|
| 4323 |
+
parts.push(addStyle(item.parts[j], options));
|
| 4324 |
+
}
|
| 4325 |
+
|
| 4326 |
+
stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};
|
| 4327 |
+
}
|
| 4328 |
+
}
|
| 4329 |
+
}
|
| 4330 |
+
|
| 4331 |
+
function listToStyles (list, options) {
|
| 4332 |
+
var styles = [];
|
| 4333 |
+
var newStyles = {};
|
| 4334 |
+
|
| 4335 |
+
for (var i = 0; i < list.length; i++) {
|
| 4336 |
+
var item = list[i];
|
| 4337 |
+
var id = options.base ? item[0] + options.base : item[0];
|
| 4338 |
+
var css = item[1];
|
| 4339 |
+
var media = item[2];
|
| 4340 |
+
var sourceMap = item[3];
|
| 4341 |
+
var part = {css: css, media: media, sourceMap: sourceMap};
|
| 4342 |
+
|
| 4343 |
+
if(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});
|
| 4344 |
+
else newStyles[id].parts.push(part);
|
| 4345 |
+
}
|
| 4346 |
+
|
| 4347 |
+
return styles;
|
| 4348 |
+
}
|
| 4349 |
+
|
| 4350 |
+
function insertStyleElement (options, style) {
|
| 4351 |
+
var target = getElement(options.insertInto)
|
| 4352 |
+
|
| 4353 |
+
if (!target) {
|
| 4354 |
+
throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");
|
| 4355 |
+
}
|
| 4356 |
+
|
| 4357 |
+
var lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];
|
| 4358 |
+
|
| 4359 |
+
if (options.insertAt === "top") {
|
| 4360 |
+
if (!lastStyleElementInsertedAtTop) {
|
| 4361 |
+
target.insertBefore(style, target.firstChild);
|
| 4362 |
+
} else if (lastStyleElementInsertedAtTop.nextSibling) {
|
| 4363 |
+
target.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);
|
| 4364 |
+
} else {
|
| 4365 |
+
target.appendChild(style);
|
| 4366 |
+
}
|
| 4367 |
+
stylesInsertedAtTop.push(style);
|
| 4368 |
+
} else if (options.insertAt === "bottom") {
|
| 4369 |
+
target.appendChild(style);
|
| 4370 |
+
} else if (typeof options.insertAt === "object" && options.insertAt.before) {
|
| 4371 |
+
var nextSibling = getElement(options.insertInto + " " + options.insertAt.before);
|
| 4372 |
+
target.insertBefore(style, nextSibling);
|
| 4373 |
+
} else {
|
| 4374 |
+
throw 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");
|
| 4375 |
+
}
|
| 4376 |
+
}
|
| 4377 |
+
|
| 4378 |
+
function removeStyleElement (style) {
|
| 4379 |
+
if (style.parentNode === null) return false;
|
| 4380 |
+
style.parentNode.removeChild(style);
|
| 4381 |
+
|
| 4382 |
+
var idx = stylesInsertedAtTop.indexOf(style);
|
| 4383 |
+
if(idx >= 0) {
|
| 4384 |
+
stylesInsertedAtTop.splice(idx, 1);
|
| 4385 |
+
}
|
| 4386 |
+
}
|
| 4387 |
+
|
| 4388 |
+
function createStyleElement (options) {
|
| 4389 |
+
var style = document.createElement("style");
|
| 4390 |
+
|
| 4391 |
+
options.attrs.type = "text/css";
|
| 4392 |
+
|
| 4393 |
+
addAttrs(style, options.attrs);
|
| 4394 |
+
insertStyleElement(options, style);
|
| 4395 |
+
|
| 4396 |
+
return style;
|
| 4397 |
+
}
|
| 4398 |
+
|
| 4399 |
+
function createLinkElement (options) {
|
| 4400 |
+
var link = document.createElement("link");
|
| 4401 |
+
|
| 4402 |
+
options.attrs.type = "text/css";
|
| 4403 |
+
options.attrs.rel = "stylesheet";
|
| 4404 |
+
|
| 4405 |
+
addAttrs(link, options.attrs);
|
| 4406 |
+
insertStyleElement(options, link);
|
| 4407 |
+
|
| 4408 |
+
return link;
|
| 4409 |
+
}
|
| 4410 |
+
|
| 4411 |
+
function addAttrs (el, attrs) {
|
| 4412 |
+
Object.keys(attrs).forEach(function (key) {
|
| 4413 |
+
el.setAttribute(key, attrs[key]);
|
| 4414 |
+
});
|
| 4415 |
+
}
|
| 4416 |
+
|
| 4417 |
+
function addStyle (obj, options) {
|
| 4418 |
+
var style, update, remove, result;
|
| 4419 |
+
|
| 4420 |
+
// If a transform function was defined, run it on the css
|
| 4421 |
+
if (options.transform && obj.css) {
|
| 4422 |
+
result = options.transform(obj.css);
|
| 4423 |
+
|
| 4424 |
+
if (result) {
|
| 4425 |
+
// If transform returns a value, use that instead of the original css.
|
| 4426 |
+
// This allows running runtime transformations on the css.
|
| 4427 |
+
obj.css = result;
|
| 4428 |
+
} else {
|
| 4429 |
+
// If the transform function returns a falsy value, don't add this css.
|
| 4430 |
+
// This allows conditional loading of css
|
| 4431 |
+
return function() {
|
| 4432 |
+
// noop
|
| 4433 |
+
};
|
| 4434 |
+
}
|
| 4435 |
+
}
|
| 4436 |
+
|
| 4437 |
+
if (options.singleton) {
|
| 4438 |
+
var styleIndex = singletonCounter++;
|
| 4439 |
+
|
| 4440 |
+
style = singleton || (singleton = createStyleElement(options));
|
| 4441 |
+
|
| 4442 |
+
update = applyToSingletonTag.bind(null, style, styleIndex, false);
|
| 4443 |
+
remove = applyToSingletonTag.bind(null, style, styleIndex, true);
|
| 4444 |
+
|
| 4445 |
+
} else if (
|
| 4446 |
+
obj.sourceMap &&
|
| 4447 |
+
typeof URL === "function" &&
|
| 4448 |
+
typeof URL.createObjectURL === "function" &&
|
| 4449 |
+
typeof URL.revokeObjectURL === "function" &&
|
| 4450 |
+
typeof Blob === "function" &&
|
| 4451 |
+
typeof btoa === "function"
|
| 4452 |
+
) {
|
| 4453 |
+
style = createLinkElement(options);
|
| 4454 |
+
update = updateLink.bind(null, style, options);
|
| 4455 |
+
remove = function () {
|
| 4456 |
+
removeStyleElement(style);
|
| 4457 |
+
|
| 4458 |
+
if(style.href) URL.revokeObjectURL(style.href);
|
| 4459 |
+
};
|
| 4460 |
+
} else {
|
| 4461 |
+
style = createStyleElement(options);
|
| 4462 |
+
update = applyToTag.bind(null, style);
|
| 4463 |
+
remove = function () {
|
| 4464 |
+
removeStyleElement(style);
|
| 4465 |
+
};
|
| 4466 |
+
}
|
| 4467 |
+
|
| 4468 |
+
update(obj);
|
| 4469 |
+
|
| 4470 |
+
return function updateStyle (newObj) {
|
| 4471 |
+
if (newObj) {
|
| 4472 |
+
if (
|
| 4473 |
+
newObj.css === obj.css &&
|
| 4474 |
+
newObj.media === obj.media &&
|
| 4475 |
+
newObj.sourceMap === obj.sourceMap
|
| 4476 |
+
) {
|
| 4477 |
+
return;
|
| 4478 |
+
}
|
| 4479 |
+
|
| 4480 |
+
update(obj = newObj);
|
| 4481 |
+
} else {
|
| 4482 |
+
remove();
|
| 4483 |
+
}
|
| 4484 |
+
};
|
| 4485 |
+
}
|
| 4486 |
+
|
| 4487 |
+
var replaceText = (function () {
|
| 4488 |
+
var textStore = [];
|
| 4489 |
+
|
| 4490 |
+
return function (index, replacement) {
|
| 4491 |
+
textStore[index] = replacement;
|
| 4492 |
+
|
| 4493 |
+
return textStore.filter(Boolean).join('\n');
|
| 4494 |
+
};
|
| 4495 |
+
})();
|
| 4496 |
+
|
| 4497 |
+
function applyToSingletonTag (style, index, remove, obj) {
|
| 4498 |
+
var css = remove ? "" : obj.css;
|
| 4499 |
+
|
| 4500 |
+
if (style.styleSheet) {
|
| 4501 |
+
style.styleSheet.cssText = replaceText(index, css);
|
| 4502 |
+
} else {
|
| 4503 |
+
var cssNode = document.createTextNode(css);
|
| 4504 |
+
var childNodes = style.childNodes;
|
| 4505 |
+
|
| 4506 |
+
if (childNodes[index]) style.removeChild(childNodes[index]);
|
| 4507 |
+
|
| 4508 |
+
if (childNodes.length) {
|
| 4509 |
+
style.insertBefore(cssNode, childNodes[index]);
|
| 4510 |
+
} else {
|
| 4511 |
+
style.appendChild(cssNode);
|
| 4512 |
+
}
|
| 4513 |
+
}
|
| 4514 |
+
}
|
| 4515 |
+
|
| 4516 |
+
function applyToTag (style, obj) {
|
| 4517 |
+
var css = obj.css;
|
| 4518 |
+
var media = obj.media;
|
| 4519 |
+
|
| 4520 |
+
if(media) {
|
| 4521 |
+
style.setAttribute("media", media)
|
| 4522 |
+
}
|
| 4523 |
+
|
| 4524 |
+
if(style.styleSheet) {
|
| 4525 |
+
style.styleSheet.cssText = css;
|
| 4526 |
+
} else {
|
| 4527 |
+
while(style.firstChild) {
|
| 4528 |
+
style.removeChild(style.firstChild);
|
| 4529 |
+
}
|
| 4530 |
+
|
| 4531 |
+
style.appendChild(document.createTextNode(css));
|
| 4532 |
+
}
|
| 4533 |
+
}
|
| 4534 |
+
|
| 4535 |
+
function updateLink (link, options, obj) {
|
| 4536 |
+
var css = obj.css;
|
| 4537 |
+
var sourceMap = obj.sourceMap;
|
| 4538 |
+
|
| 4539 |
+
/*
|
| 4540 |
+
If convertToAbsoluteUrls isn't defined, but sourcemaps are enabled
|
| 4541 |
+
and there is no publicPath defined then lets turn convertToAbsoluteUrls
|
| 4542 |
+
on by default. Otherwise default to the convertToAbsoluteUrls option
|
| 4543 |
+
directly
|
| 4544 |
+
*/
|
| 4545 |
+
var autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;
|
| 4546 |
+
|
| 4547 |
+
if (options.convertToAbsoluteUrls || autoFixUrls) {
|
| 4548 |
+
css = fixUrls(css);
|
| 4549 |
+
}
|
| 4550 |
+
|
| 4551 |
+
if (sourceMap) {
|
| 4552 |
+
// http://stackoverflow.com/a/26603875
|
| 4553 |
+
css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";
|
| 4554 |
+
}
|
| 4555 |
+
|
| 4556 |
+
var blob = new Blob([css], { type: "text/css" });
|
| 4557 |
+
|
| 4558 |
+
var oldSrc = link.href;
|
| 4559 |
+
|
| 4560 |
+
link.href = URL.createObjectURL(blob);
|
| 4561 |
+
|
| 4562 |
+
if(oldSrc) URL.revokeObjectURL(oldSrc);
|
| 4563 |
+
}
|
| 4564 |
+
|
| 4565 |
+
|
| 4566 |
+
/***/ }),
|
| 4567 |
+
|
| 4568 |
+
/***/ "./node_modules/style-loader/lib/urls.js":
|
| 4569 |
+
/*!***********************************************!*\
|
| 4570 |
+
!*** ./node_modules/style-loader/lib/urls.js ***!
|
| 4571 |
+
\***********************************************/
|
| 4572 |
+
/*! no static exports found */
|
| 4573 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 4574 |
+
|
| 4575 |
+
"use strict";
|
| 4576 |
+
|
| 4577 |
+
|
| 4578 |
+
/**
|
| 4579 |
+
* When source maps are enabled, `style-loader` uses a link element with a data-uri to
|
| 4580 |
+
* embed the css on the page. This breaks all relative urls because now they are relative to a
|
| 4581 |
+
* bundle instead of the current page.
|
| 4582 |
+
*
|
| 4583 |
+
* One solution is to only use full urls, but that may be impossible.
|
| 4584 |
+
*
|
| 4585 |
+
* Instead, this function "fixes" the relative urls to be absolute according to the current page location.
|
| 4586 |
+
*
|
| 4587 |
+
* A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.
|
| 4588 |
+
*
|
| 4589 |
+
*/
|
| 4590 |
+
|
| 4591 |
+
module.exports = function (css) {
|
| 4592 |
+
// get current location
|
| 4593 |
+
var location = typeof window !== "undefined" && window.location;
|
| 4594 |
+
|
| 4595 |
+
if (!location) {
|
| 4596 |
+
throw new Error("fixUrls requires window.location");
|
| 4597 |
+
}
|
| 4598 |
+
|
| 4599 |
+
// blank or null?
|
| 4600 |
+
if (!css || typeof css !== "string") {
|
| 4601 |
+
return css;
|
| 4602 |
+
}
|
| 4603 |
+
|
| 4604 |
+
var baseUrl = location.protocol + "//" + location.host;
|
| 4605 |
+
var currentDir = baseUrl + location.pathname.replace(/\/[^\/]*$/, "/");
|
| 4606 |
+
|
| 4607 |
+
// convert each url(...)
|
| 4608 |
+
/*
|
| 4609 |
+
This regular expression is just a way to recursively match brackets within
|
| 4610 |
+
a string.
|
| 4611 |
+
/url\s*\( = Match on the word "url" with any whitespace after it and then a parens
|
| 4612 |
+
( = Start a capturing group
|
| 4613 |
+
(?: = Start a non-capturing group
|
| 4614 |
+
[^)(] = Match anything that isn't a parentheses
|
| 4615 |
+
| = OR
|
| 4616 |
+
\( = Match a start parentheses
|
| 4617 |
+
(?: = Start another non-capturing groups
|
| 4618 |
+
[^)(]+ = Match anything that isn't a parentheses
|
| 4619 |
+
| = OR
|
| 4620 |
+
\( = Match a start parentheses
|
| 4621 |
+
[^)(]* = Match anything that isn't a parentheses
|
| 4622 |
+
\) = Match a end parentheses
|
| 4623 |
+
) = End Group
|
| 4624 |
+
*\) = Match anything and then a close parens
|
| 4625 |
+
) = Close non-capturing group
|
| 4626 |
+
* = Match anything
|
| 4627 |
+
) = Close capturing group
|
| 4628 |
+
\) = Match a close parens
|
| 4629 |
+
/gi = Get all matches, not the first. Be case insensitive.
|
| 4630 |
+
*/
|
| 4631 |
+
var fixedCss = css.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi, function (fullMatch, origUrl) {
|
| 4632 |
+
// strip quotes (if they exist)
|
| 4633 |
+
var unquotedOrigUrl = origUrl.trim().replace(/^"(.*)"$/, function (o, $1) {
|
| 4634 |
+
return $1;
|
| 4635 |
+
}).replace(/^'(.*)'$/, function (o, $1) {
|
| 4636 |
+
return $1;
|
| 4637 |
+
});
|
| 4638 |
+
|
| 4639 |
+
// already a full url? no change
|
| 4640 |
+
if (/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(unquotedOrigUrl)) {
|
| 4641 |
+
return fullMatch;
|
| 4642 |
+
}
|
| 4643 |
+
|
| 4644 |
+
// convert the url to a full url
|
| 4645 |
+
var newUrl;
|
| 4646 |
+
|
| 4647 |
+
if (unquotedOrigUrl.indexOf("//") === 0) {
|
| 4648 |
+
//TODO: should we add protocol?
|
| 4649 |
+
newUrl = unquotedOrigUrl;
|
| 4650 |
+
} else if (unquotedOrigUrl.indexOf("/") === 0) {
|
| 4651 |
+
// path should be relative to the base url
|
| 4652 |
+
newUrl = baseUrl + unquotedOrigUrl; // already starts with '/'
|
| 4653 |
+
} else {
|
| 4654 |
+
// path should be relative to current directory
|
| 4655 |
+
newUrl = currentDir + unquotedOrigUrl.replace(/^\.\//, ""); // Strip leading './'
|
| 4656 |
+
}
|
| 4657 |
+
|
| 4658 |
+
// send back the fixed url(...)
|
| 4659 |
+
return "url(" + JSON.stringify(newUrl) + ")";
|
| 4660 |
+
});
|
| 4661 |
+
|
| 4662 |
+
// send back the fixed css
|
| 4663 |
+
return fixedCss;
|
| 4664 |
+
};
|
| 4665 |
+
|
| 4666 |
+
/***/ }),
|
| 4667 |
+
|
| 4668 |
+
/***/ "./node_modules/webpack/buildin/amd-options.js":
|
| 4669 |
+
/*!****************************************!*\
|
| 4670 |
+
!*** (webpack)/buildin/amd-options.js ***!
|
| 4671 |
+
\****************************************/
|
| 4672 |
+
/*! no static exports found */
|
| 4673 |
+
/***/ (function(module, exports) {
|
| 4674 |
+
|
| 4675 |
+
/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */
|
| 4676 |
+
module.exports = __webpack_amd_options__;
|
| 4677 |
+
|
| 4678 |
+
/* WEBPACK VAR INJECTION */}.call(this, {}))
|
| 4679 |
+
|
| 4680 |
+
/***/ }),
|
| 4681 |
+
|
| 4682 |
+
/***/ "./node_modules/webpack/buildin/module.js":
|
| 4683 |
+
/*!***********************************!*\
|
| 4684 |
+
!*** (webpack)/buildin/module.js ***!
|
| 4685 |
+
\***********************************/
|
| 4686 |
+
/*! no static exports found */
|
| 4687 |
+
/***/ (function(module, exports, __webpack_require__) {
|
| 4688 |
+
|
| 4689 |
+
"use strict";
|
| 4690 |
+
|
| 4691 |
+
|
| 4692 |
+
module.exports = function (module) {
|
| 4693 |
+
if (!module.webpackPolyfill) {
|
| 4694 |
+
module.deprecate = function () {};
|
| 4695 |
+
module.paths = [];
|
| 4696 |
+
// module.parent = undefined by default
|
| 4697 |
+
if (!module.children) module.children = [];
|
| 4698 |
+
Object.defineProperty(module, "loaded", {
|
| 4699 |
+
enumerable: true,
|
| 4700 |
+
get: function get() {
|
| 4701 |
+
return module.l;
|
| 4702 |
+
}
|
| 4703 |
+
});
|
| 4704 |
+
Object.defineProperty(module, "id", {
|
| 4705 |
+
enumerable: true,
|
| 4706 |
+
get: function get() {
|
| 4707 |
+
return module.i;
|
| 4708 |
+
}
|
| 4709 |
+
});
|
| 4710 |
+
module.webpackPolyfill = 1;
|
| 4711 |
+
}
|
| 4712 |
+
return module;
|
| 4713 |
+
};
|
| 4714 |
+
|
| 4715 |
+
/***/ })
|
| 4716 |
+
|
| 4717 |
+
/******/ });
|
| 4718 |
+
//# 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/api.js","webpack:///./blocks/components/class.MailchimpForms.js","webpack:///./blocks/components/constants.js","webpack:///./blocks/components/enable-submit-button-editing.js","webpack:///./blocks/components/slugify.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/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":["EasyFormsAPI","ajaxurl","window","data","action","nonce","ez_forms_gb_data","get_api_key_status","status","$","post","fetch_recaptcha_nonce","recaptcha_data","fetch_forms_nonce","forms","form_id","fetch_form_nonce","form","Recaptcha","require","__","wp","i18n","registerBlockType","blocks","editor","RichText","InspectorControls","PlainText","components","Spinner","TextControl","PanelBody","PanelRow","FormToggle","SelectControl","Component","element","MailchimpForms","props","arguments","state","api_key_status","success","api","address_fields","then","setState","get_forms","forms_loaded","get_recaptcha","toggleRecaptchaAbstract","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","locales","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","id","form_name","focus","formTitle","toggleFormTitle","descriptionValue","formData","form_description","onChangeDescription","addr_field","field","merge","handleFormFieldChanges","type","placeholder","states","choice","countries","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","settings_url","constants","document","ready","on","preventDefault","stopPropagation","jQuery","slugify","text","specialChars","replace","target","index","str","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","inner","apply","call","join","module","exports","define","useSourceMap","list","item","content","cssWithMappingToString","modules","mediaQuery","alreadyImportedModules","cssMapping","btoa","sourceMapping","toComment","sourceURLs","sources","source","sourceRoot","concat","sourceMap","base64","unescape","encodeURIComponent","stringify","getOwnPropertySymbols","prototype","propIsEnumerable","propertyIsEnumerable","toObject","val","undefined","TypeError","shouldUseNative","assign","test1","String","getOwnPropertyNames","test2","fromCharCode","order2","n","test3","split","forEach","letter","err","from","to","symbols","s","printWarning","process","ReactPropTypesSecret","loggedTypeFailures","message","console","error","Error","x","checkPropTypes","typeSpecs","values","location","componentName","getStack","typeSpecName","name","ex","stack","e","t","r","a","loaded","m","c","p","__esModule","o","ReferenceError","create","constructor","enumerable","writable","configurable","setPrototypeOf","__proto__","defineProperty","l","u","d","string","onloadCallbackName","elementID","onloadCallback","func","verifyCallback","expiredCallback","render","oneOf","sitekey","theme","verifyCallbackName","expiredCallbackName","size","tabindex","hl","badge","f","h","grecaptcha","y","b","getPrototypeOf","_renderGrecaptcha","bind","reset","widget","setInterval","_updateReadyState","clearInterval","execute","callback","createElement","propTypes","defaultProps","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","framesToPop","isRequired","array","bool","number","object","symbol","any","arrayOf","instanceOf","node","objectOf","oneOfType","shape","PropTypes","_assign","ReactVersion","hasSymbol","Symbol","for","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONTEXT_TYPE","REACT_CONCURRENT_MODE_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","MAYBE_ITERATOR_SYMBOL","iterator","FAUX_ITERATOR_SYMBOL","getIteratorFn","maybeIterable","maybeIterator","validateFormat","format","invariant","condition","args","argIndex","lowPriorityWarning","_len","_key","warn","_len2","_key2","lowPriorityWarning$1","warningWithoutStack","_args$map","g","_message","warningWithoutStack$1","didWarnStateUpdateForUnmountedComponent","warnNoop","publicInstance","callerName","_constructor","displayName","warningKey","ReactNoopUpdateQueue","isMounted","enqueueForceUpdate","enqueueReplaceState","completeState","enqueueSetState","partialState","emptyObject","freeze","context","updater","refs","isReactComponent","forceUpdate","deprecatedAPIs","replaceState","defineDeprecationWarning","methodName","info","get","fnName","ComponentDummy","PureComponent","pureComponentPrototype","isPureReactComponent","createRef","refObject","current","seal","ReactCurrentOwner","currentDispatcher","BEFORE_SLASH_RE","describeComponentFrame","ownerName","sourceInfo","path","fileName","test","match","pathBeforeSlash","folderName","lineNumber","Resolved","refineResolvedLazyComponent","lazyComponent","_status","_result","getWrappedName","outerType","innerType","wrapperName","functionName","getComponentName","tag","$$typeof","thenable","resolvedThenable","ReactDebugCurrentFrame","currentlyValidatingElement","setCurrentlyValidatingElement","getCurrentStack","getStackAddendum","owner","_owner","_source","impl","ReactSharedInternals","ReactComponentTreeHook","warning","warning$1","RESERVED_PROPS","ref","__self","__source","specialPropKeyWarningShown","specialPropRefWarningShown","hasValidRef","config","getter","getOwnPropertyDescriptor","isReactWarning","hasValidKey","defineKeyPropWarningGetter","warnAboutAccessingKey","defineRefPropWarningGetter","warnAboutAccessingRef","ReactElement","self","_store","children","propName","childrenLength","childArray","cloneAndReplaceKey","oldElement","newKey","newElement","_self","cloneElement","isValidElement","SEPARATOR","SUBSEPARATOR","escape","escapeRegex","escaperLookup","escapedString","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","_currentValue","_currentValue2","Provider","Consumer","_context","hasWarnedAboutUsingNestedContextConsumers","hasWarnedAboutUsingConsumerProvider","defineProperties","set","_Provider","_currentRenderer","_currentRenderer2","lazy","ctor","_ctor","forwardRef","isValidElementType","memo","compare","propTypesMisspellWarningShown","getDeclarationErrorAddendum","getSourceInfoErrorAddendum","elementProps","ownerHasKeyUseWarning","getCurrentComponentErrorInfo","parentType","parentName","validateExplicitKey","validated","currentComponentErrorInfo","childOwner","validateChildKeys","validatePropTypes","getDefaultProps","isReactClassApproved","validateFragmentProps","fragment","createElementWithValidation","validType","typeString","createFactoryWithValidation","validatedFactory","cloneElementWithValidation","React","Children","only","Fragment","StrictMode","unstable_ConcurrentMode","Suspense","unstable_Profiler","createFactory","version","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","React$2","React$3","react","css","baseUrl","protocol","host","currentDir","pathname","fixedCss","fullMatch","origUrl","unquotedOrigUrl","trim","$1","newUrl","webpackPolyfill","deprecate","paths"],"mappings":"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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;;;;;;;;;;;;;AAaA6L,OAAOC,OAAP,GAAiB,UAAUyZ,GAAV,EAAe;AAC9B;AACA,KAAI3V,WAAW,OAAO7Q,MAAP,KAAkB,WAAlB,IAAiCA,OAAO6Q,QAAvD;;AAEA,KAAI,CAACA,QAAL,EAAe;AACb,QAAM,IAAIL,KAAJ,CAAU,kCAAV,CAAN;AACD;;AAEF;AACA,KAAI,CAACgW,GAAD,IAAQ,OAAOA,GAAP,KAAe,QAA3B,EAAqC;AACnC,SAAOA,GAAP;AACA;;AAED,KAAIC,UAAU5V,SAAS6V,QAAT,GAAoB,IAApB,GAA2B7V,SAAS8V,IAAlD;AACA,KAAIC,aAAaH,UAAU5V,SAASgW,QAAT,CAAkBrc,OAAlB,CAA0B,WAA1B,EAAuC,GAAvC,CAA3B;;AAED;AACA;;;;;;;;;;;;;;;;;;;;;;;AAyBA,KAAIsc,WAAWN,IAAIhc,OAAJ,CAAY,qDAAZ,EAAmE,UAASuc,SAAT,EAAoBC,OAApB,EAA6B;AAC9G;AACA,MAAIC,kBAAkBD,QACpBE,IADoB,GAEpB1c,OAFoB,CAEZ,UAFY,EAEA,UAASqH,CAAT,EAAYsV,EAAZ,EAAe;AAAE,UAAOA,EAAP;AAAY,GAF7B,EAGpB3c,OAHoB,CAGZ,UAHY,EAGA,UAASqH,CAAT,EAAYsV,EAAZ,EAAe;AAAE,UAAOA,EAAP;AAAY,GAH7B,CAAtB;;AAKA;AACA,MAAI,oDAAoD5L,IAApD,CAAyD0L,eAAzD,CAAJ,EAA+E;AAC7E,UAAOF,SAAP;AACD;;AAED;AACA,MAAIK,MAAJ;;AAEA,MAAIH,gBAAgBrf,OAAhB,CAAwB,IAAxB,MAAkC,CAAtC,EAAyC;AACtC;AACFwf,YAASH,eAAT;AACA,GAHD,MAGO,IAAIA,gBAAgBrf,OAAhB,CAAwB,GAAxB,MAAiC,CAArC,EAAwC;AAC9C;AACAwf,YAASX,UAAUQ,eAAnB,CAF8C,CAEV;AACpC,GAHM,MAGA;AACN;AACAG,YAASR,aAAaK,gBAAgBzc,OAAhB,CAAwB,OAAxB,EAAiC,EAAjC,CAAtB,CAFM,CAEsD;AAC5D;;AAED;AACA,SAAO,SAASxD,KAAKsH,SAAL,CAAe8Y,MAAf,CAAT,GAAkC,GAAzC;AACA,EA5Bc,CAAf;;AA8BA;AACA,QAAON,QAAP;AACA,CA1ED,C;;;;;;;;;;;ACdA;AACA;;;;;;;;;;;;;;;;ACDAha,OAAOC,OAAP,GAAiB,UAASD,MAAT,EAAiB;AACjC,KAAI,CAACA,OAAOua,eAAZ,EAA6B;AAC5Bva,SAAOwa,SAAP,GAAmB,YAAW,CAAE,CAAhC;AACAxa,SAAOya,KAAP,GAAe,EAAf;AACA;AACA,MAAI,CAACza,OAAO6R,QAAZ,EAAsB7R,OAAO6R,QAAP,GAAkB,EAAlB;AACtB7Z,SAAOwN,cAAP,CAAsBxF,MAAtB,EAA8B,QAA9B,EAAwC;AACvCmF,eAAY,IAD2B;AAEvCoI,QAAK,eAAW;AACf,WAAOvN,OAAOyF,CAAd;AACA;AAJsC,GAAxC;AAMAzN,SAAOwN,cAAP,CAAsBxF,MAAtB,EAA8B,IAA9B,EAAoC;AACnCmF,eAAY,IADuB;AAEnCoI,QAAK,eAAW;AACf,WAAOvN,OAAOV,CAAd;AACA;AAJkC,GAApC;AAMAU,SAAOua,eAAP,GAAyB,CAAzB;AACA;AACD,QAAOva,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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./blocks/index.js\");\n","export default class EasyFormsAPI {\r\n\r\n\tconstructor() {\r\n\t\tthis.ajaxurl = window.ajaxurl;\r\n\t}\r\n\r\n\tget_api_key_status() {\r\n\t\tlet data = {\r\n\t\t\taction: 'yikes_get_api_key_status',\r\n\t\t\tnonce: ez_forms_gb_data.get_api_key_status,\r\n\t\t}\r\n\r\n\t\tlet status = $.post( this.ajaxurl, data );\r\n\r\n\t\treturn status;\r\n\t}\r\n\r\n\tget_recaptcha() {\r\n\t\tlet data = {\r\n\t\t\taction: 'yikes_get_recaptcha',\r\n\t\t\tnonce: ez_forms_gb_data.fetch_recaptcha_nonce\r\n\t\t}\r\n\r\n\t\tlet recaptcha_data = $.post( this.ajaxurl, data );\r\n\r\n\t\treturn recaptcha_data;\r\n\t}\r\n\r\n\tget_forms() {\r\n\t\tlet data = {\r\n\t\t\taction: 'yikes_get_forms',\r\n\t\t\tnonce: ez_forms_gb_data.fetch_forms_nonce,\r\n\t\t}\r\n\r\n\t\tlet forms = $.post( this.ajaxurl, data );\r\n\r\n\t\treturn forms;\r\n\t}\r\n\r\n\tget_form( form_id ) {\r\n\t\tlet data = {\r\n\t\t\taction: 'yikes_get_form',\r\n\t\t\tform_id: form_id,\r\n\t\t\tnonce: ez_forms_gb_data.fetch_form_nonce\r\n\t\t}\r\n\r\n\t\tlet form = $.post( this.ajaxurl, data );\r\n\r\n\t\treturn form;\r\n\t}\r\n}\r\n","// Import dependencies\r\nimport slugify from './slugify.js';\r\nimport constants from './constants.js';\r\nimport EasyFormsAPI from './api.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 api_key_status: 'valid',\r\n forms : [],\r\n recaptcha_data: {\r\n data : {},\r\n success: false\r\n },\r\n 'forms_loaded': false\r\n }\r\n \r\n this.api = new EasyFormsAPI();\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 this.api.get_api_key_status().then( status => {\r\n this.setState( { api_key_status: status.data } );\r\n });\r\n\r\n this.api.get_forms().then( forms => {\r\n this.setState( { forms: forms.data, forms_loaded: true } );\r\n });\r\n\r\n this.api.get_recaptcha().then( recaptcha_data => {\r\n this.setState( { recaptcha_data: recaptcha_data } );\r\n this.props.toggleRecaptchaAbstract( this.state.recaptcha_data.success );\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 ' + constants.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 ' + constants.locales[ this.state.recaptcha_data.data.locale ] : '' }\r\n options={ Object.keys( constants.locales ).map( ( key ) => { return { value: key, label: constants.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( constants.states ).map( ( key ) => {\r\n var choice = constants.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( constants.countries ).map( ( key ) => {\r\n var choice = constants.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 && 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 if ( this.state.api_key_status !== 'valid' ) {\r\n\r\n // If the API key is invalid, show a message.\r\n return ( \r\n <p className=\"yikes-mailchimp-api-key-warning\" key=\"yikes-mailchimp-api-key-warning\">\r\n <em>{ this.state.api_key_status === 'empty' ? <a href={ constants.settings_url }> { __( 'To use this block, please enter an API key on the Easy Forms\\' settings page.' ) } </a> : __( 'Your API key is invalid.' ) }</em>\r\n </p>\r\n );\r\n } else if ( this.state.forms_loaded === true && this.state.forms.length === 0 ) {\r\n\r\n // No forms.\r\n return (\r\n <p key=\"no-forms-found\" className={ this.props.className }>\r\n <em>{ __( 'No forms were found.' ) }</em>\r\n </p>\r\n );\r\n } 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 constants = {\r\n\tstates: {\r\n\t\t'': '—',\r\n\t\t'AL': 'Alabama',\r\n\t\t'AK': 'Alaska',\r\n\t\t'AZ': 'Arizona',\r\n\t\t'AR': 'Arkansas',\r\n\t\t'CA': 'California',\r\n\t\t'CO': 'Colorado',\r\n\t\t'CT': 'Connecticut',\r\n\t\t'DE': 'Delaware',\r\n\t\t'DC': 'District Of Columbia',\r\n\t\t'FL': 'Florida',\r\n\t\t'GA': 'Georgia',\r\n\t\t'HI': 'Hawaii',\r\n\t\t'ID': 'Idaho',\r\n\t\t'IL': 'Illinois',\r\n\t\t'IN': 'Indiana',\r\n\t\t'IA': 'Iowa',\r\n\t\t'KS': 'Kansas',\r\n\t\t'KY': 'Kentucky',\r\n\t\t'LA': 'Louisiana',\r\n\t\t'ME': 'Maine',\r\n\t\t'MD': 'Maryland',\r\n\t\t'MA': 'Massachusetts',\r\n\t\t'MI': 'Michigan',\r\n\t\t'MN': 'Minnesota',\r\n\t\t'MS': 'Mississippi',\r\n\t\t'MO': 'Missouri',\r\n\t\t'MT': 'Montana',\r\n\t\t'NE': 'Nebraska',\r\n\t\t'NV': 'Nevada',\r\n\t\t'NH': 'New Hampshire',\r\n\t\t'NJ': 'New Jersey',\r\n\t\t'NM': 'New Mexico',\r\n\t\t'NY': 'New York',\r\n\t\t'NC': 'North Carolina',\r\n\t\t'ND': 'North Dakota',\r\n\t\t'OH': 'Ohio',\r\n\t\t'OK': 'Oklahoma',\r\n\t\t'OR': 'Oregon',\r\n\t\t'PA': 'Pennsylvania',\r\n\t\t'RI': 'Rhode Island',\r\n\t\t'SC': 'South Carolina',\r\n\t\t'SD': 'South Dakota',\r\n\t\t'TN': 'Tennessee',\r\n\t\t'TX': 'Texas',\r\n\t\t'UT': 'Utah',\r\n\t\t'VT': 'Vermont',\r\n\t\t'VA': 'Virginia',\r\n\t\t'WA': 'Washington',\r\n\t\t'WV': 'West Virginia',\r\n\t\t'WI': 'Wisconsin',\r\n\t\t'WY': 'Wyoming',\r\n\t\t'AB': 'Alberta',\r\n\t\t'BC': 'British Columbia',\r\n\t\t'MB': 'Manitoba',\r\n\t\t'NB': 'New Brunswick',\r\n\t\t'NL': 'Newfoundland and Labrador',\r\n\t\t'NS': 'Nova Scotia',\r\n\t\t'ON': 'Ontario',\r\n\t\t'PE': 'Prince Edward Island',\r\n\t\t'QC': 'Quebec',\r\n\t\t'SK': 'Saskatchewan',\r\n\t\t'NT': 'Northwest Territories',\r\n\t\t'NU': 'Nunavut',\r\n\t\t'YT': 'Yukon',\r\n\t},\r\n\tcountries: {\r\n\t\t'US': 'United States',\r\n\t\t'GB': 'United Kingdom',\r\n\t\t'AF': 'Afghanistan',\r\n\t\t'AX': 'Aland Islands',\r\n\t\t'AL': 'Albania',\r\n\t\t'DZ': 'Algeria',\r\n\t\t'AS': 'American Samoa',\r\n\t\t'AD': 'Andorra',\r\n\t\t'AO': 'Angola',\r\n\t\t'AI': 'Anguilla',\r\n\t\t'AQ': 'Antarctica',\r\n\t\t'AG': 'Antigua and Barbuda',\r\n\t\t'AR': 'Argentina',\r\n\t\t'AM': 'Armenia',\r\n\t\t'AW': 'Aruba',\r\n\t\t'AU': 'Australia',\r\n\t\t'AT': 'Austria',\r\n\t\t'AZ': 'Azerbaijan',\r\n\t\t'BS': 'Bahamas',\r\n\t\t'BH': 'Bahrain',\r\n\t\t'BD': 'Bangladesh',\r\n\t\t'BB': 'Barbados',\r\n\t\t'BY': 'Belarus',\r\n\t\t'BE': 'Belgium',\r\n\t\t'BZ': 'Belize',\r\n\t\t'BJ': 'Benin',\r\n\t\t'BM': 'Bermuda',\r\n\t\t'BT': 'Bhutan',\r\n\t\t'BO': 'Bolivia',\r\n\t\t'BA': 'Bosnia and Herzegovina',\r\n\t\t'BW': 'Botswana',\r\n\t\t'BV': 'Bouvet Island',\r\n\t\t'BR': 'Brazil',\r\n\t\t'IO': 'British Indian Ocean Territory',\r\n\t\t'BN': 'Brunei Darussalam',\r\n\t\t'BG': 'Bulgaria',\r\n\t\t'BF': 'Burkina Faso',\r\n\t\t'BI': 'Burundi',\r\n\t\t'KH': 'Cambodia',\r\n\t\t'CM': 'Cameroon',\r\n\t\t'CA': 'Canada',\r\n\t\t'CV': 'Cape Verde',\r\n\t\t'KY': 'Cayman Islands',\r\n\t\t'CF': 'Central African Republic',\r\n\t\t'TD': 'Chad',\r\n\t\t'CL': 'Chile',\r\n\t\t'CN': 'China',\r\n\t\t'CX': 'Christmas Island',\r\n\t\t'CC': 'Cocos (Keeling) Islands',\r\n\t\t'CO': 'Colombia',\r\n\t\t'KM': 'Comoros',\r\n\t\t'CG': 'Congo',\r\n\t\t'CD': 'Congo, The Democratic Republic of The',\r\n\t\t'CK': 'Cook Islands',\r\n\t\t'CR': 'Costa Rica',\r\n\t\t'CI': 'Cote D’ivoire',\r\n\t\t'HR': 'Croatia',\r\n\t\t'CU': 'Cuba',\r\n\t\t'CY': 'Cyprus',\r\n\t\t'CZ': 'Czech Republic',\r\n\t\t'DK': 'Denmark',\r\n\t\t'DJ': 'Djibouti',\r\n\t\t'DM': 'Dominica',\r\n\t\t'DO': 'Dominican Republic',\r\n\t\t'EC': 'Ecuador',\r\n\t\t'EG': 'Egypt',\r\n\t\t'SV': 'El Salvador',\r\n\t\t'GQ': 'Equatorial Guinea',\r\n\t\t'ER': 'Eritrea',\r\n\t\t'EE': 'Estonia',\r\n\t\t'ET': 'Ethiopia',\r\n\t\t'FK': 'Falkland Islands (Malvinas)',\r\n\t\t'FO': 'Faroe Islands',\r\n\t\t'FJ': 'Fiji',\r\n\t\t'FI': 'Finland',\r\n\t\t'FR': 'France',\r\n\t\t'GF': 'French Guiana',\r\n\t\t'PF': 'French Polynesia',\r\n\t\t'TF': 'French Southern Territories',\r\n\t\t'GA': 'Gabon',\r\n\t\t'GM': 'Gambia',\r\n\t\t'GE': 'Georgia',\r\n\t\t'DE': 'Germany',\r\n\t\t'GH': 'Ghana',\r\n\t\t'GI': 'Gibraltar',\r\n\t\t'GR': 'Greece',\r\n\t\t'GL': 'Greenland',\r\n\t\t'GD': 'Grenada',\r\n\t\t'GP': 'Guadeloupe',\r\n\t\t'GU': 'Guam',\r\n\t\t'GT': 'Guatemala',\r\n\t\t'GG': 'Guernsey',\r\n\t\t'GN': 'Guinea',\r\n\t\t'GW': 'Guinea-bissau',\r\n\t\t'GY': 'Guyana',\r\n\t\t'HT': 'Haiti',\r\n\t\t'HM': 'Heard Island and Mcdonald Islands',\r\n\t\t'VA': 'Holy See (Vatican City State)',\r\n\t\t'HN': 'Honduras',\r\n\t\t'HK': 'Hong Kong',\r\n\t\t'HU': 'Hungary',\r\n\t\t'IS': 'Iceland',\r\n\t\t'IN': 'India',\r\n\t\t'ID': 'Indonesia',\r\n\t\t'IR': 'Iran, Islamic Republic of',\r\n\t\t'IQ': 'Iraq',\r\n\t\t'IE': 'Ireland',\r\n\t\t'IM': 'Isle of Man',\r\n\t\t'IL': 'Israel',\r\n\t\t'IT': 'Italy',\r\n\t\t'JM': 'Jamaica',\r\n\t\t'JP': 'Japan',\r\n\t\t'JE': 'Jersey',\r\n\t\t'JO': 'Jordan',\r\n\t\t'KZ': 'Kazakhstan',\r\n\t\t'KE': 'Kenya',\r\n\t\t'KI': 'Kiribati',\r\n\t\t'KP': 'Korea, Democratic People’s Republic of',\r\n\t\t'KR': 'Korea, Republic of',\r\n\t\t'KW': 'Kuwait',\r\n\t\t'KG': 'Kyrgyzstan',\r\n\t\t'LA': 'Lao People’s Democratic Republic',\r\n\t\t'LV': 'Latvia',\r\n\t\t'LB': 'Lebanon',\r\n\t\t'LS': 'Lesotho',\r\n\t\t'LR': 'Liberia',\r\n\t\t'LY': 'Libyan Arab Jamahiriya',\r\n\t\t'LI': 'Liechtenstein',\r\n\t\t'LT': 'Lithuania',\r\n\t\t'LU': 'Luxembourg',\r\n\t\t'MO': 'Macao',\r\n\t\t'MK': 'Macedonia, The Former Yugoslav Republic of',\r\n\t\t'MG': 'Madagascar',\r\n\t\t'MW': 'Malawi',\r\n\t\t'MY': 'Malaysia',\r\n\t\t'MV': 'Maldives',\r\n\t\t'ML': 'Mali',\r\n\t\t'MT': 'Malta',\r\n\t\t'MH': 'Marshall Islands',\r\n\t\t'MQ': 'Martinique',\r\n\t\t'MR': 'Mauritania',\r\n\t\t'MU': 'Mauritius',\r\n\t\t'YT': 'Mayotte',\r\n\t\t'MX': 'Mexico',\r\n\t\t'FM': 'Micronesia, Federated States of',\r\n\t\t'MD': 'Moldova, Republic of',\r\n\t\t'MC': 'Monaco',\r\n\t\t'MN': 'Mongolia',\r\n\t\t'ME': 'Montenegro',\r\n\t\t'MS': 'Montserrat',\r\n\t\t'MA': 'Morocco',\r\n\t\t'MZ': 'Mozambique',\r\n\t\t'MM': 'Myanmar',\r\n\t\t'NA': 'Namibia',\r\n\t\t'NR': 'Nauru',\r\n\t\t'NP': 'Nepal',\r\n\t\t'NL': 'Netherlands',\r\n\t\t'AN': 'Netherlands Antilles',\r\n\t\t'NC': 'New Caledonia',\r\n\t\t'NZ': 'New Zealand',\r\n\t\t'NI': 'Nicaragua',\r\n\t\t'NE': 'Niger',\r\n\t\t'NG': 'Nigeria',\r\n\t\t'NU': 'Niue',\r\n\t\t'NF': 'Norfolk Island',\r\n\t\t'MP': 'Northern Mariana Islands',\r\n\t\t'NO': 'Norway',\r\n\t\t'OM': 'Oman',\r\n\t\t'PK': 'Pakistan',\r\n\t\t'PW': 'Palau',\r\n\t\t'PS': 'Palestinian Territory, Occupied',\r\n\t\t'PA': 'Panama',\r\n\t\t'PG': 'Papua New Guinea',\r\n\t\t'PY': 'Paraguay',\r\n\t\t'PE': 'Peru',\r\n\t\t'PH': 'Philippines',\r\n\t\t'PN': 'Pitcairn',\r\n\t\t'PL': 'Poland',\r\n\t\t'PT': 'Portugal',\r\n\t\t'PR': 'Puerto Rico',\r\n\t\t'QA': 'Qatar',\r\n\t\t'RE': 'Reunion',\r\n\t\t'RO': 'Romania',\r\n\t\t'RU': 'Russian Federation',\r\n\t\t'RW': 'Rwanda',\r\n\t\t'SH': 'Saint Helena',\r\n\t\t'KN': 'Saint Kitts and Nevis',\r\n\t\t'LC': 'Saint Lucia',\r\n\t\t'PM': 'Saint Pierre and Miquelon',\r\n\t\t'VC': 'Saint Vincent and The Grenadines',\r\n\t\t'WS': 'Samoa',\r\n\t\t'SM': 'San Marino',\r\n\t\t'ST': 'Sao Tome and Principe',\r\n\t\t'SA': 'Saudi Arabia',\r\n\t\t'SN': 'Senegal',\r\n\t\t'RS': 'Serbia',\r\n\t\t'SC': 'Seychelles',\r\n\t\t'SL': 'Sierra Leone',\r\n\t\t'SG': 'Singapore',\r\n\t\t'SK': 'Slovakia',\r\n\t\t'SI': 'Slovenia',\r\n\t\t'SB': 'Solomon Islands',\r\n\t\t'SO': 'Somalia',\r\n\t\t'ZA': 'South Africa',\r\n\t\t'GS': 'South Georgia and The South Sandwich Islands',\r\n\t\t'ES': 'Spain',\r\n\t\t'LK': 'Sri Lanka',\r\n\t\t'SD': 'Sudan',\r\n\t\t'SR': 'Suriname',\r\n\t\t'SJ': 'Svalbard and Jan Mayen',\r\n\t\t'SZ': 'Swaziland',\r\n\t\t'SE': 'Sweden',\r\n\t\t'CH': 'Switzerland',\r\n\t\t'SY': 'Syrian Arab Republic',\r\n\t\t'TW': 'Taiwan, Province of China',\r\n\t\t'TJ': 'Tajikistan',\r\n\t\t'TZ': 'Tanzania, United Republic of',\r\n\t\t'TH': 'Thailand',\r\n\t\t'TL': 'Timor-leste',\r\n\t\t'TG': 'Togo',\r\n\t\t'TK': 'Tokelau',\r\n\t\t'TO': 'Tonga',\r\n\t\t'TT': 'Trinidad and Tobago',\r\n\t\t'TN': 'Tunisia',\r\n\t\t'TR': 'Turkey',\r\n\t\t'TM': 'Turkmenistan',\r\n\t\t'TC': 'Turks and Caicos Islands',\r\n\t\t'TV': 'Tuvalu',\r\n\t\t'UG': 'Uganda',\r\n\t\t'UA': 'Ukraine',\r\n\t\t'AE': 'United Arab Emirates',\r\n\t\t'UM': 'United States Minor Outlying Islands',\r\n\t\t'UY': 'Uruguay',\r\n\t\t'UZ': 'Uzbekistan',\r\n\t\t'VU': 'Vanuatu',\r\n\t\t'VE': 'Venezuela',\r\n\t\t'VN': 'Viet Nam',\r\n\t\t'VG': 'Virgin Islands, British',\r\n\t\t'VI': 'Virgin Islands, U.S.',\r\n\t\t'WF': 'Wallis and Futuna',\r\n\t\t'EH': 'Western Sahara',\r\n\t\t'YE': 'Yemen',\r\n\t\t'ZM': 'Zambia',\r\n\t\t'ZW': 'Zimbabwe',\r\n\t},\r\n\tlocales: {\r\n\t\t\"ar\" : \"Arabic\",\r\n\t\t\"af\" : \"Afrikaans\",\r\n\t\t\"am\" : \"Amharic\",\r\n\t\t\"hy\" : \"Armenian\",\r\n\t\t\"az\" : \"Azerbaijani\",\r\n\t\t\"eu\" : \"Basque\",\r\n\t\t\"bn\" : \"Bengali\",\r\n\t\t\"bg\" : \"Bulgarian\",\r\n\t\t\"ca\" : \"Catalan\",\r\n\t\t\"zh-HK\" : \"Chinese (Hong Kong)\",\r\n\t\t\"zh-CN\" : \"Chinese (Simplified)\",\r\n\t\t\"zh-TW\" : \"Chinese (Traditional)\",\r\n\t\t\"hr\" : \"Croatian\",\r\n\t\t\"cs\" : \"Czech\",\r\n\t\t\"da\" : \"Danish\",\r\n\t\t\"nl\" : \"Dutch\",\r\n\t\t\"en-GB\" : \"English (UK)\",\r\n\t\t\"en\" : \"English (US)\",\r\n\t\t\"et\" : \"Estonian\",\r\n\t\t\"fil\" : \"Filipino\",\r\n\t\t\"fi\" : \"Finnish\",\r\n\t\t\"fr\" : \"French\",\r\n\t\t\"fr-CA\" : \"French (Canadian)\",\r\n\t\t\"gl\" : \"Galician\",\r\n\t\t\"ka\" : \"Georgian\",\r\n\t\t\"de\" : \"German\",\r\n\t\t\"de-AT\" : \"German (Austria)\",\r\n\t\t\"de-CH\" : \"German (Switzerland)\",\r\n\t\t\"el\" : \"Greek\",\r\n\t\t\"gu\" : \"Gujarati\",\r\n\t\t\"iw\" : \"Hebrew\",\r\n\t\t\"hi\" : \"Hindi\",\r\n\t\t\"hu\" : \"Hungarain\",\r\n\t\t\"is\" : \"Icelandic\",\r\n\t\t\"id\" : \"Indonesian\",\r\n\t\t\"it\" : \"Italian\",\r\n\t\t\"ja\" : \"Japanese\",\r\n\t\t\"kn\" : \"Kannada\",\r\n\t\t\"ko\" : \"Korean\",\r\n\t\t\"lo\" : \"Laothian\",\r\n\t\t\"lv\" : \"Latvian\",\r\n\t\t\"lt\" : \"Lithuanian\",\r\n\t\t\"ms\" : \"Malay\",\r\n\t\t\"ml\" : \"Malayalam\",\r\n\t\t\"mr\" : \"Marathi\",\r\n\t\t\"mn\" : \"Mongolian\",\r\n\t\t\"no\" : \"Norwegian\",\r\n\t\t\"fa\" : \"Persian\",\r\n\t\t\"pl\" : \"Polish\",\r\n\t\t\"pt\" : \"Portuguese\",\r\n\t\t\"pt-BR\" : \"Portuguese (Brazil)\",\r\n\t\t\"pt-PT\" : \"Portuguese (Portugal)\",\r\n\t\t\"ro\" : \"Romanian\",\r\n\t\t\"ru\" : \"Russian\",\r\n\t\t\"sr\" : \"Serbian\",\r\n\t\t\"si\" : \"Sinhalese\",\r\n\t\t\"sk\" : \"Slovak\",\r\n\t\t\"sl\" : \"Slovenian\",\r\n\t\t\"es\" : \"Spanish\",\r\n\t\t\"es-419\" : \"Spanish (Latin America)\",\r\n\t\t\"sw\" : \"Swahili\",\r\n\t\t\"sv\" : \"Swedish\",\r\n\t\t\"ta\" : \"Tamil\",\r\n\t\t\"te\" : \"Telugu\",\r\n\t\t\"th\" : \"Thai\",\r\n\t\t\"tr\" : \"Turkish\",\r\n\t\t\"uk\" : \"Ukrainian\",\r\n\t\t\"ur\" : \"Urdu\",\r\n\t\t\"vi\" : \"Vietnamese\",\r\n\t\t\"zu\" : \"Zulu\"\r\n\t},\r\n\tsettings_url: 'wp-admin/admin.php?page=yikes-inc-easy-mailchimp-settings'\r\n}\r\n\r\nexport default constants;\r\n","( 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 );","/*\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","import EasyFormsAPI from '../components/api.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 const api = new EasyFormsAPI();\r\n api.get_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 /* Allow this function to be called via a checkbox handler or directly by passing in a boolean */\r\n const toggleRecaptchaAbstract = ( checked ) => {\r\n props.setAttributes( { recaptcha: checked } );\r\n }\r\n\r\n const toggleRecaptcha = ( event ) => {\r\n toggleRecaptchaAbstract( !! 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 toggleRecaptchaAbstract={ toggleRecaptchaAbstract }\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: false,\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) 2017 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) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\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\tclassNames.default = classNames;\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","/*\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\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\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\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 if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n )\n\n }\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 printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\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 l=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}}(),s=a(6),c=r(s),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.oneOf([\"onload\",\"explicit\"]),sitekey:u.default.string,theme:u.default.oneOf([\"light\",\"dark\"]),type:u.default.string,verifyCallbackName:u.default.string,expiredCallbackName:u.default.string,size:u.default.oneOf([\"invisible\",\"compact\",\"normal\"]),tabindex:u.default.string,hl:u.default.string,badge:u.default.oneOf([\"bottomright\",\"bottomleft\",\"inline\"])},f={elementID:\"g-recaptcha\",className:\"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&&\"function\"==typeof window.grecaptcha.render},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||\"undefined\"==typeof window||(y=setInterval(a._updateReadyState.bind(a),1e3)),a}return i(t,e),l(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:this.props.className,\"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}(s.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,l,s){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,l,s],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,l){l!==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.6.0\n * react.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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 checkPropTypes = require('prop-types/checkPropTypes');\n\n// TODO: this is special because it gets imported during build.\n\nvar ReactVersion = '16.6.0';\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_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_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\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 !== 'object') {\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 * 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 () {};\n\n{\n validateFormat = function (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 = void 0;\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\n// Relying on the `invariant()` implementation lets us\n// preserve the format and params in the www builds.\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('`lowPriorityWarning(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\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 warningWithoutStack = function () {};\n\n{\n warningWithoutStack = function (condition, format) {\n for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n if (format === undefined) {\n throw new Error('`warningWithoutStack(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (args.length > 8) {\n // Check before the condition to catch violations early.\n throw new Error('warningWithoutStack() currently supports at most 8 arguments.');\n }\n if (condition) {\n return;\n }\n if (typeof console !== 'undefined') {\n var _args$map = args.map(function (item) {\n return '' + item;\n }),\n a = _args$map[0],\n b = _args$map[1],\n c = _args$map[2],\n d = _args$map[3],\n e = _args$map[4],\n f = _args$map[5],\n g = _args$map[6],\n h = _args$map[7];\n\n var message = 'Warning: ' + format;\n\n // We intentionally don't use spread (or .apply) because it breaks IE9:\n // https://github.com/facebook/react/issues/13610\n switch (args.length) {\n case 0:\n console.error(message);\n break;\n case 1:\n console.error(message, a);\n break;\n case 2:\n console.error(message, a, b);\n break;\n case 3:\n console.error(message, a, b, c);\n break;\n case 4:\n console.error(message, a, b, c, d);\n break;\n case 5:\n console.error(message, a, b, c, d, e);\n break;\n case 6:\n console.error(message, a, b, c, d, e, f);\n break;\n case 7:\n console.error(message, a, b, c, d, e, f, g);\n break;\n case 8:\n console.error(message, a, b, c, d, e, f, g, h);\n break;\n default:\n throw new Error('warningWithoutStack() currently supports at most 8 arguments.');\n }\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 var argIndex = 0;\n var _message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n throw new Error(_message);\n } catch (x) {}\n };\n}\n\nvar warningWithoutStack$1 = warningWithoutStack;\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 warningWithoutStack$1(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\nvar emptyObject = {};\n{\n Object.freeze(emptyObject);\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 // If a component has string refs, we will assign a different object later.\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 // If a component has string refs, we will assign a different object later.\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 currentDispatcher: null\n};\n\nvar BEFORE_SLASH_RE = /^(.*)[\\\\\\/]/;\n\nvar describeComponentFrame = function (name, source, ownerName) {\n var sourceInfo = '';\n if (source) {\n var path = source.fileName;\n var fileName = path.replace(BEFORE_SLASH_RE, '');\n {\n // In DEV, include code for a common special case:\n // prefer \"folder/index.js\" instead of just \"index.js\".\n if (/^index\\./.test(fileName)) {\n var match = path.match(BEFORE_SLASH_RE);\n if (match) {\n var pathBeforeSlash = match[1];\n if (pathBeforeSlash) {\n var folderName = pathBeforeSlash.replace(BEFORE_SLASH_RE, '');\n fileName = folderName + '/' + fileName;\n }\n }\n }\n }\n sourceInfo = ' (at ' + fileName + ':' + source.lineNumber + ')';\n } else if (ownerName) {\n sourceInfo = ' (created by ' + ownerName + ')';\n }\n return '\\n in ' + (name || 'Unknown') + sourceInfo;\n};\n\nvar Resolved = 1;\n\n\nfunction refineResolvedLazyComponent(lazyComponent) {\n return lazyComponent._status === Resolved ? lazyComponent._result : null;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var functionName = innerType.displayName || innerType.name || '';\n return outerType.displayName || (functionName !== '' ? wrapperName + '(' + functionName + ')' : wrapperName);\n}\n\nfunction getComponentName(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n {\n if (typeof type.tag === 'number') {\n warningWithoutStack$1(false, 'Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n if (typeof type === 'string') {\n return type;\n }\n switch (type) {\n case REACT_CONCURRENT_MODE_TYPE:\n return 'ConcurrentMode';\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n case REACT_PORTAL_TYPE:\n return 'Portal';\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n }\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n return 'Context.Consumer';\n case REACT_PROVIDER_TYPE:\n return 'Context.Provider';\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n case REACT_MEMO_TYPE:\n return getComponentName(type.type);\n case REACT_LAZY_TYPE:\n {\n var thenable = type;\n var resolvedThenable = refineResolvedLazyComponent(thenable);\n if (resolvedThenable) {\n return getComponentName(resolvedThenable);\n }\n }\n }\n }\n return null;\n}\n\nvar ReactDebugCurrentFrame = {};\n\nvar currentlyValidatingElement = null;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n currentlyValidatingElement = element;\n }\n}\n\n{\n // Stack implementation injected by the current renderer.\n ReactDebugCurrentFrame.getCurrentStack = null;\n\n ReactDebugCurrentFrame.getStackAddendum = function () {\n var stack = '';\n\n // Add an extra top frame while an element is being validated\n if (currentlyValidatingElement) {\n var name = getComponentName(currentlyValidatingElement.type);\n var owner = currentlyValidatingElement._owner;\n stack += describeComponentFrame(name, currentlyValidatingElement._source, owner && getComponentName(owner.type));\n }\n\n // Delegate to the injected renderer-specific implementation\n var impl = ReactDebugCurrentFrame.getCurrentStack;\n if (impl) {\n stack += impl() || '';\n }\n\n return stack;\n };\n}\n\nvar ReactSharedInternals = {\n ReactCurrentOwner: ReactCurrentOwner,\n // Used by renderers to avoid bundling object-assign twice in UMD bundles:\n assign: _assign\n};\n\n{\n _assign(ReactSharedInternals, {\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 * 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 = warningWithoutStack$1;\n\n{\n warning = function (condition, format) {\n if (condition) {\n return;\n }\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n // eslint-disable-next-line react-internal/warning-and-invariant-args\n\n for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n warningWithoutStack$1.apply(undefined, [false, format + '%s'].concat(args, [stack]));\n };\n}\n\nvar warning$1 = warning;\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 warningWithoutStack$1(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 warningWithoutStack$1(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 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 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 !!(element === null || element === undefined) ? invariant(false, 'React.cloneElement(...): The argument must be a React element, but you passed %s.', element) : void 0;\n\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 ReactElement.\n * @final\n */\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\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 !didWarnAboutMaps ? warning$1(false, 'Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.') : void 0;\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#reactchildrenforeach\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, function (c) {\n return c;\n });\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#reactchildrenmap\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#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children) {\n return traverseAllChildren(children, function () {\n return null;\n }, 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#reactchildrentoarray\n */\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, function (child) {\n return child;\n });\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#reactchildrenonly\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 !(calculateChangedBits === null || typeof calculateChangedBits === 'function') ? warningWithoutStack$1(false, 'createContext: Expected the optional second argument to be a ' + 'function. Instead received: %s', calculateChangedBits) : void 0;\n }\n }\n\n var context = {\n $$typeof: REACT_CONTEXT_TYPE,\n _calculateChangedBits: calculateChangedBits,\n // As a workaround to support multiple concurrent renderers, we categorize\n // some renderers as primary and others as secondary. We only expect\n // there to be two concurrent renderers at most: React Native (primary) and\n // Fabric (secondary); React DOM (primary) and React ART (secondary).\n // Secondary renderers store their context values on separate fields.\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\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\n var hasWarnedAboutUsingNestedContextConsumers = false;\n var hasWarnedAboutUsingConsumerProvider = false;\n\n {\n // A separate object, but proxies back to the original context object for\n // backwards compatibility. It has a different $$typeof, so we can properly\n // warn for the incorrect usage of Context as a Consumer.\n var Consumer = {\n $$typeof: REACT_CONTEXT_TYPE,\n _context: context,\n _calculateChangedBits: context._calculateChangedBits\n };\n // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n Object.defineProperties(Consumer, {\n Provider: {\n get: function () {\n if (!hasWarnedAboutUsingConsumerProvider) {\n hasWarnedAboutUsingConsumerProvider = true;\n warning$1(false, 'Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?');\n }\n return context.Provider;\n },\n set: function (_Provider) {\n context.Provider = _Provider;\n }\n },\n _currentValue: {\n get: function () {\n return context._currentValue;\n },\n set: function (_currentValue) {\n context._currentValue = _currentValue;\n }\n },\n _currentValue2: {\n get: function () {\n return context._currentValue2;\n },\n set: function (_currentValue2) {\n context._currentValue2 = _currentValue2;\n }\n },\n Consumer: {\n get: function () {\n if (!hasWarnedAboutUsingNestedContextConsumers) {\n hasWarnedAboutUsingNestedContextConsumers = true;\n warning$1(false, 'Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');\n }\n return context.Consumer;\n }\n }\n });\n // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n context.Consumer = Consumer;\n }\n\n {\n context._currentRenderer = null;\n context._currentRenderer2 = null;\n }\n\n return context;\n}\n\nfunction lazy(ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _ctor: ctor,\n // React uses these fields to store the result.\n _status: -1,\n _result: null\n };\n}\n\nfunction forwardRef(render) {\n {\n if (typeof render !== 'function') {\n warningWithoutStack$1(false, 'forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n } else {\n !(\n // Do not warn for 0 arguments because it could be due to usage of the 'arguments' object\n render.length === 0 || render.length === 2) ? warningWithoutStack$1(false, 'forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.') : void 0;\n }\n\n if (render != null) {\n !(render.defaultProps == null && render.propTypes == null) ? warningWithoutStack$1(false, 'forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?') : void 0;\n }\n }\n\n return {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: render\n };\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_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\nfunction memo(type, compare) {\n {\n if (!isValidElementType(type)) {\n warningWithoutStack$1(false, 'memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);\n }\n }\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: compare === undefined ? null : compare\n };\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 propTypesMisspellWarningShown = void 0;\n\n{\n propTypesMisspellWarningShown = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = getComponentName(ReactCurrentOwner.current.type);\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.type) + '.';\n }\n\n setCurrentlyValidatingElement(element);\n {\n warning$1(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.', currentComponentErrorInfo, childOwner);\n }\n setCurrentlyValidatingElement(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 type = element.type;\n var name = void 0,\n propTypes = void 0;\n if (typeof type === 'function') {\n // Class or function component\n name = type.displayName || type.name;\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && type !== null && type.$$typeof === REACT_FORWARD_REF_TYPE) {\n // ForwardRef\n var functionName = type.render.displayName || type.render.name || '';\n name = type.displayName || (functionName !== '' ? 'ForwardRef(' + functionName + ')' : 'ForwardRef');\n propTypes = type.propTypes;\n } else {\n return;\n }\n if (propTypes) {\n setCurrentlyValidatingElement(element);\n checkPropTypes(propTypes, element.props, 'prop', name, ReactDebugCurrentFrame.getStackAddendum);\n setCurrentlyValidatingElement(null);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true;\n warningWithoutStack$1(false, 'Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', name || 'Unknown');\n }\n if (typeof type.getDefaultProps === 'function') {\n !type.getDefaultProps.isReactClassApproved ? warningWithoutStack$1(false, 'getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.') : void 0;\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 setCurrentlyValidatingElement(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$1(false, 'Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n warning$1(false, 'Invalid attribute `ref` supplied to `React.Fragment`.');\n }\n\n setCurrentlyValidatingElement(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 var typeString = void 0;\n if (type === null) {\n typeString = 'null';\n } else if (Array.isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = '<' + (getComponentName(type.type) || 'Unknown') + ' />';\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n warning$1(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 lazy: lazy,\n memo: memo,\n\n Fragment: REACT_FRAGMENT_TYPE,\n StrictMode: REACT_STRICT_MODE_TYPE,\n unstable_ConcurrentMode: REACT_CONCURRENT_MODE_TYPE,\n Suspense: REACT_SUSPENSE_TYPE,\n unstable_Profiler: REACT_PROFILER_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: ReactSharedInternals\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;\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__ */\nmodule.exports = __webpack_amd_options__;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n"],"sourceRoot":""}
|
blocks/easy-forms-block/easy-forms-block.scss
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
.wp-block-yikes-inc-easy-forms-easy-forms-block {
|
| 2 |
+
|
| 3 |
+
textarea.yikes-mailchimp-submit-button-span-text {
|
| 4 |
+
background: none;
|
| 5 |
+
text-align: center;
|
| 6 |
+
}
|
| 7 |
+
|
| 8 |
+
select {
|
| 9 |
+
height: auto;
|
| 10 |
+
}
|
| 11 |
+
}
|
blocks/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
| 1 |
+
import './easy-forms-block/dev-easy-forms-block.js';
|
includes/api/class-yikes-inc-easy-mailchimp-api.php
CHANGED
|
@@ -185,6 +185,7 @@ class Yikes_Inc_Easy_Mailchimp_API {
|
|
| 185 |
* @return array|WP_Error
|
| 186 |
*/
|
| 187 |
protected function send_request( $path, $method, $headers = array(), $params = array() ) {
|
|
|
|
| 188 |
|
| 189 |
// Remove leading slashes from $path, as we'll add that ourselves later.
|
| 190 |
$path = ltrim( $path, '/' );
|
| 185 |
* @return array|WP_Error
|
| 186 |
*/
|
| 187 |
protected function send_request( $path, $method, $headers = array(), $params = array() ) {
|
| 188 |
+
$headers = apply_filters( 'yikesinc_eme_mailchimp_headers', $headers );
|
| 189 |
|
| 190 |
// Remove leading slashes from $path, as we'll add that ourselves later.
|
| 191 |
$path = ltrim( $path, '/' );
|
includes/images/{MailChimp_Assets → Mailchimp_Assets}/Freddie_60px.png
RENAMED
|
File without changes
|
includes/images/{MailChimp_Assets → Mailchimp_Assets}/Freddie_original.png
RENAMED
|
File without changes
|
includes/images/{MailChimp_Assets → Mailchimp_Assets}/Freddie_wink_icon.png
RENAMED
|
File without changes
|
includes/images/{MailChimp_Assets → Mailchimp_Assets}/mailchimp-logo.png
RENAMED
|
File without changes
|
includes/images/{MailChimp_Assets → Mailchimp_Assets}/yikes-mailchimp-welcome-logo.png
RENAMED
|
File without changes
|
public/classes/process/class.process_form_submission_handler.php
CHANGED
|
@@ -874,8 +874,9 @@ class Yikes_Inc_Easy_Mailchimp_Extender_Process_Submission_Handler {
|
|
| 874 |
* @since 6.3.0
|
| 875 |
*
|
| 876 |
* @param string | $recaptcha_response | The form value of the recaptcha field
|
|
|
|
| 877 |
*/
|
| 878 |
-
public function handle_recaptcha( $recaptcha_response ) {
|
| 879 |
|
| 880 |
// Before we the hit the API, let's check that we actually got a response.
|
| 881 |
// If the user did not fill anything in (e.g. did not hit the checkbox), then the response will be empty.
|
|
@@ -891,8 +892,20 @@ class Yikes_Inc_Easy_Mailchimp_Extender_Process_Submission_Handler {
|
|
| 891 |
return $this->yikes_fail( $hide = 0, $error = 1, $response, array(), $return_response_non_ajax = true );
|
| 892 |
}
|
| 893 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 894 |
// Construct the API URL
|
| 895 |
-
$url = esc_url_raw( 'https://www.google.com/recaptcha/api/siteverify?secret=' .
|
| 896 |
$response = wp_remote_get( $url );
|
| 897 |
$response_body = json_decode( $response['body'], true );
|
| 898 |
|
| 874 |
* @since 6.3.0
|
| 875 |
*
|
| 876 |
* @param string | $recaptcha_response | The form value of the recaptcha field
|
| 877 |
+
* @param int | $version | The version of recaptcha to use.
|
| 878 |
*/
|
| 879 |
+
public function handle_recaptcha( $recaptcha_response, $version = 2 ) {
|
| 880 |
|
| 881 |
// Before we the hit the API, let's check that we actually got a response.
|
| 882 |
// If the user did not fill anything in (e.g. did not hit the checkbox), then the response will be empty.
|
| 892 |
return $this->yikes_fail( $hide = 0, $error = 1, $response, array(), $return_response_non_ajax = true );
|
| 893 |
}
|
| 894 |
|
| 895 |
+
$recaptcha_secret = '';
|
| 896 |
+
|
| 897 |
+
switch ( $version ) {
|
| 898 |
+
case 2:
|
| 899 |
+
$recaptcha_secret_key = get_option( 'yikes-mc-recaptcha-secret-key', '' );
|
| 900 |
+
break;
|
| 901 |
+
|
| 902 |
+
case 3:
|
| 903 |
+
$recaptcha_secret_key = get_option( 'yikes-mc-recaptcha-secret-key-three' , '' );
|
| 904 |
+
break;
|
| 905 |
+
}
|
| 906 |
+
|
| 907 |
// Construct the API URL
|
| 908 |
+
$url = esc_url_raw( 'https://www.google.com/recaptcha/api/siteverify?secret=' . $recaptcha_secret_key . '&response=' . $recaptcha_response . '&remoteip=' . $_SERVER['REMOTE_ADDR'] );
|
| 909 |
$response = wp_remote_get( $url );
|
| 910 |
$response_body = json_decode( $response['body'], true );
|
| 911 |
|
public/js/yikes-mc-ajax-forms.js
CHANGED
|
@@ -104,132 +104,265 @@ window.Yikes_Mailchimp_Ajax = window.Yikes_Mailchimp_Ajax || {};
|
|
| 104 |
};
|
| 105 |
|
| 106 |
/* submit our ajax request */
|
| 107 |
-
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 139 |
}
|
| 140 |
-
|
| 141 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 142 |
}
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
| 155 |
-
|
| 156 |
-
|
| 157 |
-
$( '.yikes-
|
| 158 |
-
|
| 159 |
-
|
| 160 |
-
|
| 161 |
-
|
| 162 |
-
|
| 163 |
-
|
| 164 |
-
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
'
|
| 171 |
-
|
| 172 |
-
};
|
| 173 |
-
$.ajax({
|
| 174 |
-
url: app.l10n.ajax_url,
|
| 175 |
-
type: 'POST',
|
| 176 |
-
data: new_data,
|
| 177 |
-
success : function( response, textStatus, jqXHR) {
|
| 178 |
-
/* console.log( 'submission count increased by 1' ); */
|
| 179 |
-
},
|
| 180 |
-
error : function( jqXHR, textStatus, errorThrown ) {
|
| 181 |
-
/* display the error back to the user in the console */
|
| 182 |
-
console.error( errorThrown );
|
| 183 |
}
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
| 191 |
-
|
| 192 |
-
|
| 193 |
-
|
| 194 |
-
|
| 195 |
-
|
| 196 |
-
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
|
| 200 |
-
|
| 201 |
-
|
| 202 |
-
|
| 203 |
-
|
| 204 |
-
|
| 205 |
-
|
| 206 |
-
|
| 207 |
-
|
| 208 |
-
|
| 209 |
-
|
| 210 |
-
|
| 211 |
-
|
| 212 |
-
var is_interest_group = ( typeof( response.is_interest_group ) !== 'undefined' ) ? response.is_interest_group : false;
|
| 213 |
-
highlight_missing_required_fields( field_data, is_interest_group );
|
| 214 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 215 |
}
|
| 216 |
-
|
| 217 |
-
|
| 218 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 219 |
}
|
| 220 |
-
}
|
| 221 |
-
|
| 222 |
-
|
| 223 |
-
console.error( errorThrown );
|
| 224 |
-
console.log( jqXHR );
|
| 225 |
-
console.log( textStatus );
|
| 226 |
-
},
|
| 227 |
-
complete : function( jqXHR, textStatus ) {
|
| 228 |
-
/* console.log( 'Yikes Easy Mailchimp AJAX submission complete.' ); */
|
| 229 |
-
/* enable the button to prevent double click */
|
| 230 |
-
submitted_form.find( '.yikes-easy-mc-submit-button' ).removeAttr( 'disabled' , 'disabled' );
|
| 231 |
-
}
|
| 232 |
-
});
|
| 233 |
/* prevent default form action */
|
| 234 |
return false;
|
| 235 |
});
|
| 104 |
};
|
| 105 |
|
| 106 |
/* submit our ajax request */
|
| 107 |
+
if ( typeof window.yikesGoogleRecaptchaV3 !== 'undefined' ) {
|
| 108 |
+
yikesRecaptchaV3(
|
| 109 |
+
function() {
|
| 110 |
+
return $.ajax({
|
| 111 |
+
url: app.l10n.ajax_url,
|
| 112 |
+
type: 'POST',
|
| 113 |
+
data: data,
|
| 114 |
+
success : function( response, textStatus, jqXHR) {
|
| 115 |
+
|
| 116 |
+
submitted_form.find( 'input, label, button' ).not( ':hidden' ).fadeTo( 'fast', 1 );
|
| 117 |
+
submitted_form.find( '.yikes-mailchimp-preloader' ).remove();
|
| 118 |
+
|
| 119 |
+
// As of 6.3.0 we just show/hide the button text instead of removing it, so:
|
| 120 |
+
// Remove loading dots && show button text
|
| 121 |
+
$( '.yikes-mc-loading-dots' ).remove();
|
| 122 |
+
$( '.yikes-mailchimp-submit-button-span-text' ).show();
|
| 123 |
+
|
| 124 |
+
// As of 6.3.0 we add a class to the form, so remove it if we're here
|
| 125 |
+
submitted_form.removeClass( 'yikes-mc-submitted-form-loading' );
|
| 126 |
+
|
| 127 |
+
submitted_form.trigger( 'yikes_mailchimp_ajax_submission', response );
|
| 128 |
+
|
| 129 |
+
/* Success */
|
| 130 |
+
if( response.success ) {
|
| 131 |
+
response = response.data;
|
| 132 |
+
|
| 133 |
+
// Fire off our Google Analytics for a successful submission
|
| 134 |
+
if ( typeof( yikes_mailchimp_google_analytics_success ) === 'function' ) {
|
| 135 |
+
yikes_mailchimp_google_analytics_success( response );
|
| 136 |
+
}
|
| 137 |
+
|
| 138 |
+
if( response.hide == 1 ) {
|
| 139 |
+
/* hide the description if visible */
|
| 140 |
+
if( $( '.yikes-easy-mc-form-description-'+form_id ).length > 0 ) {
|
| 141 |
+
$( '.yikes-easy-mc-form-description-'+form_id ).hide();
|
| 142 |
+
}
|
| 143 |
+
/* hide the form */
|
| 144 |
+
submitted_form.hide();
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
+
var successMessage = '<p class="yikes-easy-mc-success-message yikes-easy-mc-success-message-' + form_id + ' yikes-easy-mc-hidden">' + response.response + '</p>';
|
| 148 |
+
var successMessageAnchor = $( '.yikes-easy-mc-form-description-' + form_id ).length > 0 ? $( '.yikes-easy-mc-form-description-' + form_id ) : submitted_form;
|
| 149 |
+
if ( app.l10n.feedback_message_placement === 'before' ) {
|
| 150 |
+
successMessageAnchor.before( successMessage );
|
| 151 |
+
} else if ( app.l10n.feedback_message_placement === 'after' ) {
|
| 152 |
+
submitted_form.after( successMessage );
|
| 153 |
+
} else if ( app.l10n.feedback_message_placement === 'both' ) {
|
| 154 |
+
successMessageAnchor.before( successMessage );
|
| 155 |
+
submitted_form.after( successMessage );
|
| 156 |
+
}
|
| 157 |
+
|
| 158 |
+
/* fade in our success message */
|
| 159 |
+
$( '.yikes-easy-mc-success-message-'+form_id ).fadeIn();
|
| 160 |
+
$( '.yikes-mailchimp-required-interest-group-error' ).remove();
|
| 161 |
+
|
| 162 |
+
/* redirect if setup */
|
| 163 |
+
if ( response.redirection === 1 ) {
|
| 164 |
+
yikes_mc_redirect_after_submission( response.redirect, response.redirect_timer, response.new_window );
|
| 165 |
+
}
|
| 166 |
+
|
| 167 |
+
/* clear the inputs - but don't clear submit button, radio, select, list_id, or form */
|
| 168 |
+
submitted_form.trigger( 'yikes_clear_input_fields_after_successful_submission' );
|
| 169 |
+
submitted_form.find( 'input' ).not( '.yikes-easy-mc-submit-button, input[type="radio"], input[type="select"], input[type="checkbox"], input[name="yikes-mailchimp-associated-list-id"], input[name="yikes-mailchimp-submitted-form"]' ).val( '' );
|
| 170 |
+
|
| 171 |
+
/* ajax to increase submission count by 1 */
|
| 172 |
+
var new_data = {
|
| 173 |
+
'action' : 'increase_submission_count',
|
| 174 |
+
'form_id' : form_id
|
| 175 |
+
};
|
| 176 |
+
$.ajax({
|
| 177 |
+
url: app.l10n.ajax_url,
|
| 178 |
+
type: 'POST',
|
| 179 |
+
data: new_data,
|
| 180 |
+
success : function( response, textStatus, jqXHR) {
|
| 181 |
+
/* console.log( 'submission count increased by 1' ); */
|
| 182 |
+
},
|
| 183 |
+
error : function( jqXHR, textStatus, errorThrown ) {
|
| 184 |
+
/* display the error back to the user in the console */
|
| 185 |
+
console.error( errorThrown );
|
| 186 |
+
}
|
| 187 |
+
});
|
| 188 |
+
/* console.log( 'Successfully submit subscriber data to Mailchimp.' ); */
|
| 189 |
+
} else {
|
| 190 |
+
response = response.data;
|
| 191 |
+
|
| 192 |
+
// Fire off our Google Analytics for an unsuccessful submission
|
| 193 |
+
if ( typeof( yikes_mailchimp_google_analytics_failure ) === 'function' ) {
|
| 194 |
+
yikes_mailchimp_google_analytics_failure( response );
|
| 195 |
+
}
|
| 196 |
+
|
| 197 |
+
var errorMessage = typeof response !== 'undefined' && typeof response.response !== 'undefined' ? response.response : 'Error collecting the API response.';
|
| 198 |
+
var errorMessageHTML = '<p class="yikes-easy-mc-error-message yikes-easy-mc-error-message-' + form_id + ' yikes-easy-mc-hidden">' + errorMessage + '</p>';
|
| 199 |
+
var errorMessageAnchor = $( '.yikes-easy-mc-form-description-' + form_id ).length > 0 ? $( '.yikes-easy-mc-form-description-' + form_id ) : submitted_form;
|
| 200 |
+
if ( app.l10n.feedback_message_placement === 'before' ) {
|
| 201 |
+
errorMessageAnchor.before( errorMessageHTML );
|
| 202 |
+
} else if ( app.l10n.feedback_message_placement === 'after' ) {
|
| 203 |
+
submitted_form.after( errorMessageHTML );
|
| 204 |
+
} else if ( app.l10n.feedback_message_placement === 'both' ) {
|
| 205 |
+
errorMessageAnchor.before( errorMessageHTML );
|
| 206 |
+
submitted_form.after( errorMessageHTML );
|
| 207 |
+
}
|
| 208 |
+
|
| 209 |
+
// Check if we found a required field that's missing (server side check)
|
| 210 |
+
if ( typeof( response ) !== 'undefined' && typeof( response.missing_required_field ) !== 'undefined' && response.missing_required_field === true ) {
|
| 211 |
+
if ( typeof ( response.missing_required_field_data ) !== 'undefined' ) {
|
| 212 |
+
|
| 213 |
+
// Capture the field data and highlight the field
|
| 214 |
+
var field_data = response.missing_required_field_data;
|
| 215 |
+
var is_interest_group = ( typeof( response.is_interest_group ) !== 'undefined' ) ? response.is_interest_group : false;
|
| 216 |
+
highlight_missing_required_fields( field_data, is_interest_group );
|
| 217 |
+
}
|
| 218 |
+
}
|
| 219 |
+
|
| 220 |
+
// Fade in the error message
|
| 221 |
+
$( '.yikes-easy-mc-error-message' ).fadeIn();
|
| 222 |
}
|
| 223 |
+
},
|
| 224 |
+
error : function( jqXHR, textStatus, errorThrown ) { /* someother error is happening, and should be investigated... */
|
| 225 |
+
/* alert( errorThrown ); */
|
| 226 |
+
console.error( errorThrown );
|
| 227 |
+
console.log( jqXHR );
|
| 228 |
+
console.log( textStatus );
|
| 229 |
+
},
|
| 230 |
+
complete : function( jqXHR, textStatus ) {
|
| 231 |
+
/* console.log( 'Yikes Easy Mailchimp AJAX submission complete.' ); */
|
| 232 |
+
/* enable the button to prevent double click */
|
| 233 |
+
submitted_form.find( '.yikes-easy-mc-submit-button' ).removeAttr( 'disabled' , 'disabled' );
|
| 234 |
}
|
| 235 |
+
}) }
|
| 236 |
+
);
|
| 237 |
+
} else {
|
| 238 |
+
$.ajax({
|
| 239 |
+
url: app.l10n.ajax_url,
|
| 240 |
+
type: 'POST',
|
| 241 |
+
data: data,
|
| 242 |
+
success : function( response, textStatus, jqXHR) {
|
| 243 |
+
|
| 244 |
+
submitted_form.find( 'input, label, button' ).not( ':hidden' ).fadeTo( 'fast', 1 );
|
| 245 |
+
submitted_form.find( '.yikes-mailchimp-preloader' ).remove();
|
| 246 |
+
|
| 247 |
+
// As of 6.3.0 we just show/hide the button text instead of removing it, so:
|
| 248 |
+
// Remove loading dots && show button text
|
| 249 |
+
$( '.yikes-mc-loading-dots' ).remove();
|
| 250 |
+
$( '.yikes-mailchimp-submit-button-span-text' ).show();
|
| 251 |
+
|
| 252 |
+
// As of 6.3.0 we add a class to the form, so remove it if we're here
|
| 253 |
+
submitted_form.removeClass( 'yikes-mc-submitted-form-loading' );
|
| 254 |
+
|
| 255 |
+
submitted_form.trigger( 'yikes_mailchimp_ajax_submission', response );
|
| 256 |
+
|
| 257 |
+
/* Success */
|
| 258 |
+
if( response.success ) {
|
| 259 |
+
response = response.data;
|
| 260 |
+
|
| 261 |
+
// Fire off our Google Analytics for a successful submission
|
| 262 |
+
if ( typeof( yikes_mailchimp_google_analytics_success ) === 'function' ) {
|
| 263 |
+
yikes_mailchimp_google_analytics_success( response );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 264 |
}
|
| 265 |
+
|
| 266 |
+
if( response.hide == 1 ) {
|
| 267 |
+
/* hide the description if visible */
|
| 268 |
+
if( $( '.yikes-easy-mc-form-description-'+form_id ).length > 0 ) {
|
| 269 |
+
$( '.yikes-easy-mc-form-description-'+form_id ).hide();
|
| 270 |
+
}
|
| 271 |
+
/* hide the form */
|
| 272 |
+
submitted_form.hide();
|
| 273 |
+
}
|
| 274 |
+
|
| 275 |
+
var successMessage = '<p class="yikes-easy-mc-success-message yikes-easy-mc-success-message-' + form_id + ' yikes-easy-mc-hidden">' + response.response + '</p>';
|
| 276 |
+
var successMessageAnchor = $( '.yikes-easy-mc-form-description-' + form_id ).length > 0 ? $( '.yikes-easy-mc-form-description-' + form_id ) : submitted_form;
|
| 277 |
+
if ( app.l10n.feedback_message_placement === 'before' ) {
|
| 278 |
+
successMessageAnchor.before( successMessage );
|
| 279 |
+
} else if ( app.l10n.feedback_message_placement === 'after' ) {
|
| 280 |
+
submitted_form.after( successMessage );
|
| 281 |
+
} else if ( app.l10n.feedback_message_placement === 'both' ) {
|
| 282 |
+
successMessageAnchor.before( successMessage );
|
| 283 |
+
submitted_form.after( successMessage );
|
| 284 |
+
}
|
| 285 |
+
|
| 286 |
+
/* fade in our success message */
|
| 287 |
+
$( '.yikes-easy-mc-success-message-'+form_id ).fadeIn();
|
| 288 |
+
$( '.yikes-mailchimp-required-interest-group-error' ).remove();
|
| 289 |
+
|
| 290 |
+
/* redirect if setup */
|
| 291 |
+
if ( response.redirection === 1 ) {
|
| 292 |
+
yikes_mc_redirect_after_submission( response.redirect, response.redirect_timer, response.new_window );
|
|
|
|
|
|
|
| 293 |
}
|
| 294 |
+
|
| 295 |
+
/* clear the inputs - but don't clear submit button, radio, select, list_id, or form */
|
| 296 |
+
submitted_form.trigger( 'yikes_clear_input_fields_after_successful_submission' );
|
| 297 |
+
submitted_form.find( 'input' ).not( '.yikes-easy-mc-submit-button, input[type="radio"], input[type="select"], input[type="checkbox"], input[name="yikes-mailchimp-associated-list-id"], input[name="yikes-mailchimp-submitted-form"]' ).val( '' );
|
| 298 |
+
|
| 299 |
+
/* ajax to increase submission count by 1 */
|
| 300 |
+
var new_data = {
|
| 301 |
+
'action' : 'increase_submission_count',
|
| 302 |
+
'form_id' : form_id
|
| 303 |
+
};
|
| 304 |
+
$.ajax({
|
| 305 |
+
url: app.l10n.ajax_url,
|
| 306 |
+
type: 'POST',
|
| 307 |
+
data: new_data,
|
| 308 |
+
success : function( response, textStatus, jqXHR) {
|
| 309 |
+
/* console.log( 'submission count increased by 1' ); */
|
| 310 |
+
},
|
| 311 |
+
error : function( jqXHR, textStatus, errorThrown ) {
|
| 312 |
+
/* display the error back to the user in the console */
|
| 313 |
+
console.error( errorThrown );
|
| 314 |
+
}
|
| 315 |
+
});
|
| 316 |
+
/* console.log( 'Successfully submit subscriber data to Mailchimp.' ); */
|
| 317 |
+
} else {
|
| 318 |
+
response = response.data;
|
| 319 |
+
|
| 320 |
+
// Fire off our Google Analytics for an unsuccessful submission
|
| 321 |
+
if ( typeof( yikes_mailchimp_google_analytics_failure ) === 'function' ) {
|
| 322 |
+
yikes_mailchimp_google_analytics_failure( response );
|
| 323 |
+
}
|
| 324 |
+
|
| 325 |
+
var errorMessage = typeof response !== 'undefined' && typeof response.response !== 'undefined' ? response.response : 'Error collecting the API response.';
|
| 326 |
+
var errorMessageHTML = '<p class="yikes-easy-mc-error-message yikes-easy-mc-error-message-' + form_id + ' yikes-easy-mc-hidden">' + errorMessage + '</p>';
|
| 327 |
+
var errorMessageAnchor = $( '.yikes-easy-mc-form-description-' + form_id ).length > 0 ? $( '.yikes-easy-mc-form-description-' + form_id ) : submitted_form;
|
| 328 |
+
if ( app.l10n.feedback_message_placement === 'before' ) {
|
| 329 |
+
errorMessageAnchor.before( errorMessageHTML );
|
| 330 |
+
} else if ( app.l10n.feedback_message_placement === 'after' ) {
|
| 331 |
+
submitted_form.after( errorMessageHTML );
|
| 332 |
+
} else if ( app.l10n.feedback_message_placement === 'both' ) {
|
| 333 |
+
errorMessageAnchor.before( errorMessageHTML );
|
| 334 |
+
submitted_form.after( errorMessageHTML );
|
| 335 |
+
}
|
| 336 |
+
|
| 337 |
+
// Check if we found a required field that's missing (server side check)
|
| 338 |
+
if ( typeof( response ) !== 'undefined' && typeof( response.missing_required_field ) !== 'undefined' && response.missing_required_field === true ) {
|
| 339 |
+
if ( typeof ( response.missing_required_field_data ) !== 'undefined' ) {
|
| 340 |
+
|
| 341 |
+
// Capture the field data and highlight the field
|
| 342 |
+
var field_data = response.missing_required_field_data;
|
| 343 |
+
var is_interest_group = ( typeof( response.is_interest_group ) !== 'undefined' ) ? response.is_interest_group : false;
|
| 344 |
+
highlight_missing_required_fields( field_data, is_interest_group );
|
| 345 |
+
}
|
| 346 |
+
}
|
| 347 |
+
|
| 348 |
+
// Fade in the error message
|
| 349 |
+
$( '.yikes-easy-mc-error-message' ).fadeIn();
|
| 350 |
}
|
| 351 |
+
},
|
| 352 |
+
error : function( jqXHR, textStatus, errorThrown ) { /* someother error is happening, and should be investigated... */
|
| 353 |
+
/* alert( errorThrown ); */
|
| 354 |
+
console.error( errorThrown );
|
| 355 |
+
console.log( jqXHR );
|
| 356 |
+
console.log( textStatus );
|
| 357 |
+
},
|
| 358 |
+
complete : function( jqXHR, textStatus ) {
|
| 359 |
+
/* console.log( 'Yikes Easy Mailchimp AJAX submission complete.' ); */
|
| 360 |
+
/* enable the button to prevent double click */
|
| 361 |
+
submitted_form.find( '.yikes-easy-mc-submit-button' ).removeAttr( 'disabled' , 'disabled' );
|
| 362 |
}
|
| 363 |
+
});
|
| 364 |
+
}
|
| 365 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 366 |
/* prevent default form action */
|
| 367 |
return false;
|
| 368 |
});
|
public/js/yikes-mc-ajax-forms.min.js
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
window.Yikes_Mailchimp_Ajax=window.Yikes_Mailchimp_Ajax||{},function(e,i,s,r
|
| 1 |
+
window.Yikes_Mailchimp_Ajax=window.Yikes_Mailchimp_Ajax||{},function(e,i,s,a,r){"use strict";function t(e,i){void 0!==e&&s.each(e,function(e,a){!0===i?s("span."+e+"-label").length>0?s("span."+e+"-label").addClass("yikes-mc-required-field-not-filled"):s("."+e+"-label").addClass("yikes-mc-required-field-not-filled"):s('label[for="'+e+'"]').children("input").addClass("yikes-mc-required-field-not-filled")})}a.l10n=e.yikes_mailchimp_ajax||{},s(i).ready(function(){s("body").on("submit",".yikes-easy-mc-form",function(){var i=s(this);i.addClass("yikes-mc-submitted-form-loading"),i.find("input, label, button").not(":hidden").fadeTo("fast",.5),"string"==typeof a.l10n.preloader_url&&a.l10n.preloader_url.length>1&&i.append('<img src="'+a.l10n.preloader_url+'" class="yikes-mailchimp-preloader" />'),s(".yikes-mc-required-field-not-filled").removeClass("yikes-mc-required-field-not-filled"),s(".yikes-mailchimp-submit-button-span-text").hide(),"string"==typeof a.l10n.loading_dots&&a.l10n.loading_dots.length>1&&i.find(".yikes-easy-mc-submit-button").append('<img src="'+a.l10n.loading_dots+'" class="loading-dots yikes-mc-loading-dots" />');var r=i.attr("data-attr-form-id"),n=[];if(i.find(".yikes-interest-group-required").length>0&&i.find(".yikes-interest-group-required").each(function(){var e=jQuery(this).attr("name").replace("[]","");0==i.find('input[name="'+e+'[]"]:checked').length&&(n[e]=i.find("span."+e+"-label").text())}),n.length>0){if(i.find(".yikes-mailchimp-required-interest-group-error").length>0)i.find(".yikes-mailchimp-required-interest-group-error").fadeOut("fast",function(){for(var e in i.find(".yikes-mailchimp-required-interest-group-error").remove(),n)i.find("span."+e+"-label").after('<p class="yikes-mailchimp-required-interest-group-error">'+a.l10n.interest_group_checkbox_error+"</p>")});else for(var o in n)i.find("span."+o+"-label").after('<p class="yikes-mailchimp-required-interest-group-error">'+a.l10n.interest_group_checkbox_error+"</p>");return i.find(".yikes-easy-mc-submit-button").removeAttr("disabled","disabled"),i.find("input, label, button").not(":hidden").fadeTo("fast",1),i.find(".yikes-mailchimp-preloader").remove(),s(".yikes-mc-loading-dots").remove(),s(".yikes-mailchimp-submit-button-span-text").show(),i.removeClass("yikes-mc-submitted-form-loading"),!1}i.find(".yikes-easy-mc-submit-button").attr("disabled","disabled"),s(".yikes-easy-mc-error-message").remove(),s(".yikes-easy-mc-success-message").remove();var c={action:"process_form_submission",form_data:i.serialize(),form_id:r,page_data:a.l10n.page_data,ajax_security_nonce:a.l10n.ajax_security_nonce};return void 0!==e.yikesGoogleRecaptchaV3?yikesRecaptchaV3(function(){return s.ajax({url:a.l10n.ajax_url,type:"POST",data:c,success:function(e,n,o){if(i.find("input, label, button").not(":hidden").fadeTo("fast",1),i.find(".yikes-mailchimp-preloader").remove(),s(".yikes-mc-loading-dots").remove(),s(".yikes-mailchimp-submit-button-span-text").show(),i.removeClass("yikes-mc-submitted-form-loading"),i.trigger("yikes_mailchimp_ajax_submission",e),e.success){e=e.data,"function"==typeof yikes_mailchimp_google_analytics_success&&yikes_mailchimp_google_analytics_success(e),1==e.hide&&(s(".yikes-easy-mc-form-description-"+r).length>0&&s(".yikes-easy-mc-form-description-"+r).hide(),i.hide());var c='<p class="yikes-easy-mc-success-message yikes-easy-mc-success-message-'+r+' yikes-easy-mc-hidden">'+e.response+"</p>",m=s(".yikes-easy-mc-form-description-"+r).length>0?s(".yikes-easy-mc-form-description-"+r):i;"before"===a.l10n.feedback_message_placement?m.before(c):"after"===a.l10n.feedback_message_placement?i.after(c):"both"===a.l10n.feedback_message_placement&&(m.before(c),i.after(c)),s(".yikes-easy-mc-success-message-"+r).fadeIn(),s(".yikes-mailchimp-required-interest-group-error").remove(),1===e.redirection&&yikes_mc_redirect_after_submission(e.redirect,e.redirect_timer,e.new_window),i.trigger("yikes_clear_input_fields_after_successful_submission"),i.find("input").not('.yikes-easy-mc-submit-button, input[type="radio"], input[type="select"], input[type="checkbox"], input[name="yikes-mailchimp-associated-list-id"], input[name="yikes-mailchimp-submitted-form"]').val("");var l={action:"increase_submission_count",form_id:r};s.ajax({url:a.l10n.ajax_url,type:"POST",data:l,success:function(e,i,s){},error:function(e,i,s){console.error(s)}})}else{e=e.data,"function"==typeof yikes_mailchimp_google_analytics_failure&&yikes_mailchimp_google_analytics_failure(e);var d=void 0!==e&&void 0!==e.response?e.response:"Error collecting the API response.",f='<p class="yikes-easy-mc-error-message yikes-easy-mc-error-message-'+r+' yikes-easy-mc-hidden">'+d+"</p>",u=s(".yikes-easy-mc-form-description-"+r).length>0?s(".yikes-easy-mc-form-description-"+r):i;if("before"===a.l10n.feedback_message_placement?u.before(f):"after"===a.l10n.feedback_message_placement?i.after(f):"both"===a.l10n.feedback_message_placement&&(u.before(f),i.after(f)),void 0!==e&&void 0!==e.missing_required_field&&!0===e.missing_required_field)if(void 0!==e.missing_required_field_data)t(e.missing_required_field_data,void 0!==e.is_interest_group&&e.is_interest_group);s(".yikes-easy-mc-error-message").fadeIn()}},error:function(e,i,s){console.error(s),console.log(e),console.log(i)},complete:function(e,s){i.find(".yikes-easy-mc-submit-button").removeAttr("disabled","disabled")}})}):s.ajax({url:a.l10n.ajax_url,type:"POST",data:c,success:function(e,n,o){if(i.find("input, label, button").not(":hidden").fadeTo("fast",1),i.find(".yikes-mailchimp-preloader").remove(),s(".yikes-mc-loading-dots").remove(),s(".yikes-mailchimp-submit-button-span-text").show(),i.removeClass("yikes-mc-submitted-form-loading"),i.trigger("yikes_mailchimp_ajax_submission",e),e.success){e=e.data,"function"==typeof yikes_mailchimp_google_analytics_success&&yikes_mailchimp_google_analytics_success(e),1==e.hide&&(s(".yikes-easy-mc-form-description-"+r).length>0&&s(".yikes-easy-mc-form-description-"+r).hide(),i.hide());var c='<p class="yikes-easy-mc-success-message yikes-easy-mc-success-message-'+r+' yikes-easy-mc-hidden">'+e.response+"</p>",m=s(".yikes-easy-mc-form-description-"+r).length>0?s(".yikes-easy-mc-form-description-"+r):i;"before"===a.l10n.feedback_message_placement?m.before(c):"after"===a.l10n.feedback_message_placement?i.after(c):"both"===a.l10n.feedback_message_placement&&(m.before(c),i.after(c)),s(".yikes-easy-mc-success-message-"+r).fadeIn(),s(".yikes-mailchimp-required-interest-group-error").remove(),1===e.redirection&&yikes_mc_redirect_after_submission(e.redirect,e.redirect_timer,e.new_window),i.trigger("yikes_clear_input_fields_after_successful_submission"),i.find("input").not('.yikes-easy-mc-submit-button, input[type="radio"], input[type="select"], input[type="checkbox"], input[name="yikes-mailchimp-associated-list-id"], input[name="yikes-mailchimp-submitted-form"]').val("");var l={action:"increase_submission_count",form_id:r};s.ajax({url:a.l10n.ajax_url,type:"POST",data:l,success:function(e,i,s){},error:function(e,i,s){console.error(s)}})}else{e=e.data,"function"==typeof yikes_mailchimp_google_analytics_failure&&yikes_mailchimp_google_analytics_failure(e);var d=void 0!==e&&void 0!==e.response?e.response:"Error collecting the API response.",f='<p class="yikes-easy-mc-error-message yikes-easy-mc-error-message-'+r+' yikes-easy-mc-hidden">'+d+"</p>",u=s(".yikes-easy-mc-form-description-"+r).length>0?s(".yikes-easy-mc-form-description-"+r):i;if("before"===a.l10n.feedback_message_placement?u.before(f):"after"===a.l10n.feedback_message_placement?i.after(f):"both"===a.l10n.feedback_message_placement&&(u.before(f),i.after(f)),void 0!==e&&void 0!==e.missing_required_field&&!0===e.missing_required_field)if(void 0!==e.missing_required_field_data)t(e.missing_required_field_data,void 0!==e.is_interest_group&&e.is_interest_group);s(".yikes-easy-mc-error-message").fadeIn()}},error:function(e,i,s){console.error(s),console.log(e),console.log(i)},complete:function(e,s){i.find(".yikes-easy-mc-submit-button").removeAttr("disabled","disabled")}}),!1})})}(window,document,jQuery,Yikes_Mailchimp_Ajax);
|
public/js/yikes-recaptcha-v3.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/**
|
| 2 |
+
* Recaptcha Version 3
|
| 3 |
+
*/
|
| 4 |
+
|
| 5 |
+
document.addEventListener( 'DOMContentLoaded', function() {
|
| 6 |
+
grecaptcha.ready(function () {
|
| 7 |
+
grecaptcha.execute( yikesRecaptcha.siteKey, { action: 'mailchimp' } ).then( function ( token ) {
|
| 8 |
+
var recaptchaResponse = document.getElementById( 'recaptcha_three_response' );
|
| 9 |
+
recaptchaResponse.value = token;
|
| 10 |
+
} );
|
| 11 |
+
} );
|
| 12 |
+
} );
|
public/partials/shortcodes/process/process_form_submission_ajax.php
CHANGED
|
@@ -87,6 +87,10 @@ if ( isset( $data['g-recaptcha-response'] ) ) {
|
|
| 87 |
$submission_handler->handle_recaptcha( $recaptcha_response );
|
| 88 |
}
|
| 89 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
// Loop through the submitted data to sanitize and format values
|
| 91 |
$merge_variables = $submission_handler->get_submitted_merge_values( $data, $form_fields );
|
| 92 |
|
| 87 |
$submission_handler->handle_recaptcha( $recaptcha_response );
|
| 88 |
}
|
| 89 |
|
| 90 |
+
if ( isset( $data['recaptcha_three_response'] ) ) {
|
| 91 |
+
$submission_handler->handle_recaptcha( $data['recaptcha_three_response'], 3 );
|
| 92 |
+
}
|
| 93 |
+
|
| 94 |
// Loop through the submitted data to sanitize and format values
|
| 95 |
$merge_variables = $submission_handler->get_submitted_merge_values( $data, $form_fields );
|
| 96 |
|
public/partials/shortcodes/process_form_shortcode.php
CHANGED
|
@@ -14,6 +14,7 @@ function process_mailchimp_shortcode( $atts ) {
|
|
| 14 |
'custom_description' => '',
|
| 15 |
'ajax' => '',
|
| 16 |
'recaptcha' => '', // manually set googles recptcha state
|
|
|
|
| 17 |
'recaptcha_lang' => '', // manually set the recaptcha language in the shortcode - also available is the yikes-mailchimp-recaptcha-language filter
|
| 18 |
'recaptcha_type' => '', // manually set the recaptcha type - audio/image - default image
|
| 19 |
'recaptcha_theme' => '', // manually set the recaptcha theme - light/dark - default light
|
|
@@ -55,14 +56,14 @@ function process_mailchimp_shortcode( $atts ) {
|
|
| 55 |
if ( get_option( 'yikes-mc-recaptcha-status' , '' ) == '1' ) {
|
| 56 |
|
| 57 |
// Allow users to manually set recaptcha (instead of globally - recaptcha="1"/recaptcha="0" - but still needs to be globally enabled on the settings page).
|
| 58 |
-
if ( $atts['recaptcha'] != '0' ) {
|
| 59 |
|
| 60 |
// If either of the Private the Secret key is left blank, we should display an error back to the user.
|
| 61 |
if ( get_option( 'yikes-mc-recaptcha-site-key' , '' ) == '' ) {
|
| 62 |
-
return __( "Whoops! It looks like you enabled reCAPTCHA but forgot to enter the reCAPTCHA site key!" , 'yikes-inc-easy-mailchimp-extender' ) . '<span class="edit-link yikes-easy-mc-edit-link"><a class="post-edit-link" href="' . esc_url( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings§ion=recaptcha-settings' ) ) . '" title="' . __( 'ReCaptcha Settings' , 'yikes-inc-easy-mailchimp-extender' ) . '">' . __( 'Edit ReCaptcha Settings' , 'yikes-inc-easy-mailchimp-extender' ) . '</a></span>';
|
| 63 |
}
|
| 64 |
if ( get_option( 'yikes-mc-recaptcha-secret-key' , '' ) == '' ) {
|
| 65 |
-
return __( "Whoops! It looks like you enabled reCAPTCHA but forgot to enter the reCAPTCHA secret key!" , 'yikes-inc-easy-mailchimp-extender' ) . '<span class="edit-link yikes-easy-mc-edit-link"><a class="post-edit-link" href="' . esc_url( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings§ion=recaptcha-settings' ) ) . '" title="' . __( 'ReCaptcha Settings' , 'yikes-inc-easy-mailchimp-extender' ) . '">' . __( 'Edit ReCaptcha Settings' , 'yikes-inc-easy-mailchimp-extender' ) . '</a></span>';
|
| 66 |
}
|
| 67 |
|
| 68 |
$has_recaptcha = true;
|
|
@@ -97,6 +98,54 @@ function process_mailchimp_shortcode( $atts ) {
|
|
| 97 |
$recaptcha_site_key = get_option( 'yikes-mc-recaptcha-site-key' , '' );
|
| 98 |
$recaptcha_box = '<div class="g-recaptcha" data-sitekey="' . esc_attr( $recaptcha_site_key ) . '" data-theme="' . esc_attr( $recaptcha_shortcode_params['theme'] ) . '" data-type="' . esc_attr( $recaptcha_shortcode_params['type'] ) . '" data-size="' . esc_attr( $recaptcha_shortcode_params['size'] ) . '" data-callback="' . esc_attr( $recaptcha_shortcode_params['success_callback'] ) . '" data-expired-callback="' . esc_attr( $recaptcha_shortcode_params['expired_callback'] ) . '"></div>';
|
| 99 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 100 |
}
|
| 101 |
|
| 102 |
// place our results into a separate variable for easy looping
|
| 14 |
'custom_description' => '',
|
| 15 |
'ajax' => '',
|
| 16 |
'recaptcha' => '', // manually set googles recptcha state
|
| 17 |
+
'recaptcha_version' => 2,
|
| 18 |
'recaptcha_lang' => '', // manually set the recaptcha language in the shortcode - also available is the yikes-mailchimp-recaptcha-language filter
|
| 19 |
'recaptcha_type' => '', // manually set the recaptcha type - audio/image - default image
|
| 20 |
'recaptcha_theme' => '', // manually set the recaptcha theme - light/dark - default light
|
| 56 |
if ( get_option( 'yikes-mc-recaptcha-status' , '' ) == '1' ) {
|
| 57 |
|
| 58 |
// Allow users to manually set recaptcha (instead of globally - recaptcha="1"/recaptcha="0" - but still needs to be globally enabled on the settings page).
|
| 59 |
+
if ( $atts['recaptcha'] != '0' && ( ! get_option( 'yikes-mc-recaptcha-version-three', false ) && absint( $atts['recaptcha_version'] ) !== 3 ) ) {
|
| 60 |
|
| 61 |
// If either of the Private the Secret key is left blank, we should display an error back to the user.
|
| 62 |
if ( get_option( 'yikes-mc-recaptcha-site-key' , '' ) == '' ) {
|
| 63 |
+
return __( "Whoops! It looks like you enabled reCAPTCHA but forgot to enter the reCAPTCHA V2 site key!" , 'yikes-inc-easy-mailchimp-extender' ) . '<span class="edit-link yikes-easy-mc-edit-link"><a class="post-edit-link" href="' . esc_url( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings§ion=recaptcha-settings' ) ) . '" title="' . __( 'ReCaptcha Settings' , 'yikes-inc-easy-mailchimp-extender' ) . '">' . __( 'Edit ReCaptcha Settings' , 'yikes-inc-easy-mailchimp-extender' ) . '</a></span>';
|
| 64 |
}
|
| 65 |
if ( get_option( 'yikes-mc-recaptcha-secret-key' , '' ) == '' ) {
|
| 66 |
+
return __( "Whoops! It looks like you enabled reCAPTCHA but forgot to enter the reCAPTCHA V2 secret key!" , 'yikes-inc-easy-mailchimp-extender' ) . '<span class="edit-link yikes-easy-mc-edit-link"><a class="post-edit-link" href="' . esc_url( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings§ion=recaptcha-settings' ) ) . '" title="' . __( 'ReCaptcha Settings' , 'yikes-inc-easy-mailchimp-extender' ) . '">' . __( 'Edit ReCaptcha Settings' , 'yikes-inc-easy-mailchimp-extender' ) . '</a></span>';
|
| 67 |
}
|
| 68 |
|
| 69 |
$has_recaptcha = true;
|
| 98 |
$recaptcha_site_key = get_option( 'yikes-mc-recaptcha-site-key' , '' );
|
| 99 |
$recaptcha_box = '<div class="g-recaptcha" data-sitekey="' . esc_attr( $recaptcha_site_key ) . '" data-theme="' . esc_attr( $recaptcha_shortcode_params['theme'] ) . '" data-type="' . esc_attr( $recaptcha_shortcode_params['type'] ) . '" data-size="' . esc_attr( $recaptcha_shortcode_params['size'] ) . '" data-callback="' . esc_attr( $recaptcha_shortcode_params['success_callback'] ) . '" data-expired-callback="' . esc_attr( $recaptcha_shortcode_params['expired_callback'] ) . '"></div>';
|
| 100 |
}
|
| 101 |
+
|
| 102 |
+
// Allow users to manually override version 3 and use 2 on some forms.
|
| 103 |
+
if ( $atts['recaptcha'] != '0' && ( ! get_option( 'yikes-mc-recaptcha-version-three', false ) && $attrs['recaptcha_version'] === 3 ) || ( get_option( 'yikes-mc-recaptcha-version-three', false ) ) ) {
|
| 104 |
+
|
| 105 |
+
// If either of the Private the Secret key is left blank, we should display an error back to the user.
|
| 106 |
+
if ( get_option( 'yikes-mc-recaptcha-site-key-three' , '' ) == '' ) {
|
| 107 |
+
return __( "Whoops! It looks like you enabled reCAPTCHA but forgot to enter the reCAPTCHA V3 site key!" , 'yikes-inc-easy-mailchimp-extender' ) . '<span class="edit-link yikes-easy-mc-edit-link"><a class="post-edit-link" href="' . esc_url( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings§ion=recaptcha-settings' ) ) . '" title="' . __( 'ReCaptcha Settings' , 'yikes-inc-easy-mailchimp-extender' ) . '">' . __( 'Edit ReCaptcha Settings' , 'yikes-inc-easy-mailchimp-extender' ) . '</a></span>';
|
| 108 |
+
}
|
| 109 |
+
if ( get_option( 'yikes-mc-recaptcha-secret-key-three' , '' ) == '' ) {
|
| 110 |
+
return __( "Whoops! It looks like you enabled reCAPTCHA but forgot to enter the reCAPTCHA V3 secret key!" , 'yikes-inc-easy-mailchimp-extender' ) . '<span class="edit-link yikes-easy-mc-edit-link"><a class="post-edit-link" href="' . esc_url( admin_url( 'admin.php?page=yikes-inc-easy-mailchimp-settings§ion=recaptcha-settings' ) ) . '" title="' . __( 'ReCaptcha Settings' , 'yikes-inc-easy-mailchimp-extender' ) . '">' . __( 'Edit ReCaptcha Settings' , 'yikes-inc-easy-mailchimp-extender' ) . '</a></span>';
|
| 111 |
+
}
|
| 112 |
+
|
| 113 |
+
$v3_site_key = get_option( 'yikes-mc-recaptcha-site-key-three' , '' );
|
| 114 |
+
|
| 115 |
+
wp_enqueue_script(
|
| 116 |
+
'yikes-google-recaptcha-v3',
|
| 117 |
+
"https://www.google.com/recaptcha/api.js?render=" . $v3_site_key,
|
| 118 |
+
array(),
|
| 119 |
+
null,
|
| 120 |
+
true
|
| 121 |
+
);
|
| 122 |
+
wp_enqueue_script(
|
| 123 |
+
'yikes-recaptcha-js',
|
| 124 |
+
YIKES_MC_URL . 'public/js/yikes-recaptcha-v3.js',
|
| 125 |
+
array( 'jquery', 'yikes-google-recaptcha-v3' ),
|
| 126 |
+
null,
|
| 127 |
+
true
|
| 128 |
+
);
|
| 129 |
+
|
| 130 |
+
wp_localize_script(
|
| 131 |
+
'yikes-recaptcha-js',
|
| 132 |
+
'yikesRecaptcha',
|
| 133 |
+
array(
|
| 134 |
+
'siteKey' => $v3_site_key,
|
| 135 |
+
)
|
| 136 |
+
);
|
| 137 |
+
|
| 138 |
+
$recaptcha_box = wp_kses(
|
| 139 |
+
'<input type="hidden" name="recaptcha_three_response" id="recaptcha_three_response" />',
|
| 140 |
+
array(
|
| 141 |
+
'input' => array(
|
| 142 |
+
'type' => array(),
|
| 143 |
+
'name' => array(),
|
| 144 |
+
'id' => array(),
|
| 145 |
+
)
|
| 146 |
+
)
|
| 147 |
+
);
|
| 148 |
+
}
|
| 149 |
}
|
| 150 |
|
| 151 |
// place our results into a separate variable for easy looping
|
readme.txt
CHANGED
|
@@ -5,7 +5,7 @@ Tags: Mailchimp, Mailchimp forms, Mailchimp lists, opt-in forms, sign up form, M
|
|
| 5 |
Requires at least: 4.0
|
| 6 |
Tested up to: 5.4
|
| 7 |
Requires PHP: 5.2.13
|
| 8 |
-
Stable tag: 6.
|
| 9 |
License: GPLv2 or later
|
| 10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 11 |
|
|
@@ -172,6 +172,12 @@ For information and code examples on how to implement the hooks and filters prov
|
|
| 172 |
|
| 173 |
== Changelog ==
|
| 174 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 175 |
= 6.6.3 - February, 27, 2020 =
|
| 176 |
* Important security release.
|
| 177 |
|
| 5 |
Requires at least: 4.0
|
| 6 |
Tested up to: 5.4
|
| 7 |
Requires PHP: 5.2.13
|
| 8 |
+
Stable tag: 6.7.0
|
| 9 |
License: GPLv2 or later
|
| 10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 11 |
|
| 172 |
|
| 173 |
== Changelog ==
|
| 174 |
|
| 175 |
+
= 6.7.0 - July, 1, 2020 =
|
| 176 |
+
* Adding support for Google Recaptcha Version 3.
|
| 177 |
+
|
| 178 |
+
= 6.6.4 - March, 26, 2020 =
|
| 179 |
+
* Fixes "Freddie" logo image path.
|
| 180 |
+
|
| 181 |
= 6.6.3 - February, 27, 2020 =
|
| 182 |
* Important security release.
|
| 183 |
|
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.
|
| 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.
|
| 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.7.0
|
| 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.7.0' );
|
| 47 |
}
|
| 48 |
|
| 49 |
/**
|
