Version Description
- July, 1, 2020 =
- Adding support for Google Recaptcha Version 3.
Download this release
Release Info
Developer | fmixell |
Plugin | Easy Forms for MailChimp |
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":";AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kDAA0C,gCAAgC;AAC1E;AACA;;AAEA;AACA;AACA;AACA,gEAAwD,kBAAkB;AAC1E;AACA,yDAAiD,cAAc;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAyC,iCAAiC;AAC1E,wHAAgH,mBAAmB,EAAE;AACrI;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;;AAGA;AACA;;;;;;;;;;;;;;;;;;;;;;;IClFqBA,Y;AAEpB,yBAAc;AAAA;;AACb,OAAKC,OAAL,GAAeC,OAAOD,OAAtB;AACA;;;;uCAEoB;AACpB,OAAIE,OAAO;AACVC,YAAQ,0BADE;AAEVC,WAAOC,iBAAiBC;AAFd,IAAX;;AAKA,OAAIC,SAASC,EAAEC,IAAF,CAAQ,KAAKT,OAAb,EAAsBE,IAAtB,CAAb;;AAEA,UAAOK,MAAP;AACA;;;kCAEe;AACf,OAAIL,OAAO;AACVC,YAAQ,qBADE;AAEVC,WAAOC,iBAAiBK;AAFd,IAAX;;AAKA,OAAIC,iBAAiBH,EAAEC,IAAF,CAAQ,KAAKT,OAAb,EAAsBE,IAAtB,CAArB;;AAEA,UAAOS,cAAP;AACA;;;8BAEW;AACX,OAAIT,OAAO;AACVC,YAAQ,iBADE;AAEVC,WAAOC,iBAAiBO;AAFd,IAAX;;AAKA,OAAIC,QAAQL,EAAEC,IAAF,CAAQ,KAAKT,OAAb,EAAsBE,IAAtB,CAAZ;;AAEA,UAAOW,KAAP;AACA;;;2BAESC,O,EAAU;AACnB,OAAIZ,OAAO;AACVC,YAAQ,gBADE;AAEVW,aAASA,OAFC;AAGVV,WAAOC,iBAAiBU;AAHd,IAAX;;AAMA,OAAIC,OAAOR,EAAEC,IAAF,CAAQ,KAAKT,OAAb,EAAsBE,IAAtB,CAAX;;AAEA,UAAOc,IAAP;AACA;;;;;;kBAjDmBjB,Y;;;;;;;;;;;;;;;;;;;;;;;;ACCrB;;;;AACA;;;;AACA;;;;;;;;;;;;+eAHA;;;AAKA;AACA,IAAMkB,YAAYC,mBAAOA,CAAE,+EAAT,CAAlB;IACQC,E,GAAOC,GAAGC,I,CAAVF,E;IACAG,iB,GAAsBF,GAAGG,M,CAAzBD,iB;iBAC2CF,GAAGI,M;IAA9CC,Q,cAAAA,Q;IAAUC,iB,cAAAA,iB;IAAmBC,S,cAAAA,S;qBAC4CP,GAAGQ,U;IAA5EC,O,kBAAAA,O;IAASC,W,kBAAAA,W;IAAaC,S,kBAAAA,S;IAAWC,Q,kBAAAA,Q;IAAUC,U,kBAAAA,U;IAAYC,a,kBAAAA,a;IACvDC,S,GAAcf,GAAGgB,O,CAAjBD,S;;IAEaE,c;;;AACnB,0BAAaC,KAAb,EAAqB;AAAA;;AAAA,iIACTC,SADS;;AAEnB,UAAKC,KAAL,GAAa;AACXC,sBAAgB,OADL;AAEX5B,aAAgB,EAFL;AAGXF,sBAAgB;AACdT,cAAS,EADK;AAEdwC,iBAAS;AAFK,OAHL;AAOX,sBAAgB;AAPL,KAAb;;AAUA,UAAKC,GAAL,GAAW,mBAAX;;AAEA,UAAKC,cAAL,GAAsB;AACpB,eAAW,WADS;AAEpB,eAAW,WAFS;AAGpB,cAAW,MAHS;AAIpB,eAAW,OAJS;AAKpB,aAAW,KALS;AAMpB,iBAAW;AANS,KAAtB;AAdmB;AAsBpB;;AAED;;;;;;;wCAGoB;AAAA;;AAClB,WAAKD,GAAL,CAASrC,kBAAT,GAA8BuC,IAA9B,CAAoC,kBAAU;AAC5C,eAAKC,QAAL,CAAe,EAAEL,gBAAgBlC,OAAOL,IAAzB,EAAf;AACD,OAFD;;AAIA,WAAKyC,GAAL,CAASI,SAAT,GAAqBF,IAArB,CAA2B,iBAAS;AAClC,eAAKC,QAAL,CAAe,EAAEjC,OAAOA,MAAMX,IAAf,EAAqB8C,cAAc,IAAnC,EAAf;AACD,OAFD;;AAIA,WAAKL,GAAL,CAASM,aAAT,GAAyBJ,IAAzB,CAA+B,0BAAkB;AAC/C,eAAKC,QAAL,CAAe,EAAEnC,gBAAgBA,cAAlB,EAAf;AACA,eAAK2B,KAAL,CAAWY,uBAAX,CAAoC,OAAKV,KAAL,CAAW7B,cAAX,CAA0B+B,OAA9D;AACD,OAHD;AAID;;;2CAEuBS,K,EAAQ;AAC/B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEC;AACD;;;yCAEoB;;AAEnB,UAAMC,SACJ;AAAC,gBAAD;AAAA;AACE;AAAA;AAAA;AACE,qBAAQ,oBADV;AAEE,uBAAU;AAFZ;AAIIjC,aAAI,QAAJ;AAJJ,SADF;AAOE,iCAAC,UAAD;AACE,cAAG,oBADL;AAEE,iBAAQA,GAAI,QAAJ,CAFV;AAGE,mBAAU,CAAC,CAAE,KAAKmB,KAAL,CAAWc,MAH1B;AAIE,oBAAW,KAAKd,KAAL,CAAWe;AAJxB;AAPF,OADF;;AAiBA,UAAMC,kBACJ;AAAC,gBAAD;AAAA;AACE;AAAA;AAAA;AACE,qBAAQ,wBADV;AAEE,uBAAU;AAFZ;AAIInC,aAAI,iBAAJ;AAJJ,SADF;AAOE,iCAAC,UAAD;AACE,cAAG,wBADL;AAEE,iBAAQA,GAAI,iBAAJ,CAFV;AAGE,mBAAU,CAAC,CAAE,KAAKmB,KAAL,CAAWiB,SAH1B;AAIE,oBAAW,KAAKjB,KAAL,CAAWkB;AAJxB;AAPF,OADF;;AAiBA,UAAMC,wBACJ;AAAC,gBAAD;AAAA;AACE;AAAA;AAAA;AACE,qBAAQ,8BADV;AAEE,uBAAU;AAFZ;AAIItC,aAAI,uBAAJ;AAJJ,SADF;AAOE,iCAAC,UAAD;AACE,cAAG,8BADL;AAEE,iBAAQA,GAAI,uBAAJ,CAFV;AAGE,mBAAU,CAAC,CAAE,KAAKmB,KAAL,CAAWoB,eAH1B;AAIE,oBAAW,KAAKpB,KAAL,CAAWqB;AAJxB;AAPF,OADF;;AAiBA,UAAMC,UACJ;AAAC,gBAAD;AAAA;AACE;AAAA;AAAA;AACE,qBAAQ,qBADV;AAEE,uBAAU;AAFZ;AAIIzC,aAAI,kBAAJ;AAJJ,SADF;AAOE,iCAAC,UAAD;AACE,cAAG,qBADL;AAEE,iBAAQA,GAAI,MAAJ,CAFV;AAGE,mBAAU,CAAC,CAAE,KAAKmB,KAAL,CAAWuB,MAH1B;AAIE,oBAAW,KAAKvB,KAAL,CAAWwB;AAJxB;AAPF,OADF;;AAiBA,UAAMC,YACJ;AAAC,gBAAD;AAAA;AACE;AAAA;AAAA;AACE,qBAAQ,uBADV;AAEE,uBAAU;AAFZ;AAII5C,aAAI,WAAJ;AAJJ,SADF;AAOE,iCAAC,UAAD;AACE,cAAG,uBADL;AAEE,iBAAQA,GAAI,WAAJ,CAFV;AAGE,mBAAU,CAAC,CAAE,KAAKmB,KAAL,CAAWyB,SAH1B;AAIE,oBAAW,KAAKzB,KAAL,CAAW0B;AAJxB;AAPF,OADF;;AAiBA,UAAMC,iBAAiB,CAAC,CAAE,KAAK3B,KAAL,CAAWyB,SAAd,GAErB;AAAC,gBAAD;AAAA;AACE;AAAA;AAAA;AACE,qBAAQ,4BADV;AAEE,uBAAU;AAFZ;AAII5C,aAAI,gBAAJ;AAJJ,SADF;AAOE,iCAAC,aAAD;AACE,iBAAQ,KAAKmB,KAAL,CAAW4B,aADrB;AAEE,mBAAU,CAAE,EAAEC,OAAO,OAAT,EAAkBC,OAAO,OAAzB,EAAF,EAAsC,EAAED,OAAO,OAAT,EAAkB,SAAS,OAA3B,EAAtC,CAFZ;AAGE,oBAAW,KAAK7B,KAAL,CAAW+B;AAHxB;AAPF,OAFqB,GAgBrB,EAhBF;;AAkBA,UAAMC,kBAAkB,CAAC,CAAE,KAAKhC,KAAL,CAAWyB,SAAd,GAEtB;AAAC,gBAAD;AAAA;AACE;AAAA;AAAA;AACE,qBAAQ,6BADV;AAEE,uBAAU;AAFZ;AAII5C,aAAI,iBAAJ;AAJJ,SADF;AAOE,iCAAC,aAAD;AACE,iBAAQ,KAAKmB,KAAL,CAAWiC,cADrB;AAEE,mBAAU,CAAE,EAAEJ,OAAO,OAAT,EAAkBC,OAAO,OAAzB,EAAF,EAAsC,EAACD,OAAO,MAAR,EAAgB,SAAS,MAAzB,EAAtC,CAFZ;AAGE,oBAAW,KAAK7B,KAAL,CAAWkC;AAHxB;AAPF,OAFsB,GAgBtB,EAhBF;;AAkBA,UAAMC,iBAAiB,CAAC,CAAE,KAAKnC,KAAL,CAAWyB,SAAd,GAErB;AAAC,gBAAD;AAAA;AACE;AAAA;AAAA;AACE,qBAAQ,gCADV;AAEE,uBAAU,4BAFZ;AAGE,mBAAQ,KAAKvB,KAAL,CAAW7B,cAAX,CAA0BT,IAA1B,GAAiC,6CAA6C,oBAAUwE,OAAV,CAAmB,KAAKlC,KAAL,CAAW7B,cAAX,CAA0BT,IAA1B,CAA+ByE,MAAlD,CAA9E,GAA2I;AAHrJ;AAKIxD,aAAI,oBAAJ;AALJ,SADF;AAQE,iCAAC,aAAD;AACE,cAAG,gCADL;AAEE,iBAAQ,KAAKmB,KAAL,CAAWsC,aAAX,CAAyBC,MAAzB,GAAkC,CAAlC,GAAsC,KAAKvC,KAAL,CAAWsC,aAAjD,GAAmE,KAAKpC,KAAL,CAAW7B,cAAX,CAA0BT,IAA1B,GAAiC,KAAKsC,KAAL,CAAW7B,cAAX,CAA0BT,IAA1B,CAA+ByE,MAAhE,GAAyE,EAFtJ;AAGE,oBAAW,KAAKrC,KAAL,CAAWwC,mBAHxB;AAIE,iBAAQ,KAAKtC,KAAL,CAAW7B,cAAX,CAA0BT,IAA1B,GAAiC,6CAA6C,oBAAUwE,OAAV,CAAmB,KAAKlC,KAAL,CAAW7B,cAAX,CAA0BT,IAA1B,CAA+ByE,MAAlD,CAA9E,GAA2I,EAJrJ;AAKE,mBAAUI,OAAOC,IAAP,CAAa,oBAAUN,OAAvB,EAAiCO,GAAjC,CAAsC,UAAEC,GAAF,EAAW;AAAE,mBAAO,EAAEf,OAAOe,GAAT,EAAcd,OAAO,oBAAUM,OAAV,CAAkBQ,GAAlB,CAArB,EAAP;AAAsD,WAAzG;AALZ;AARF,OAFqB,GAmBrB,EAnBF;;AAqBA,UAAMC,iBAAiB,CAAC,CAAE,KAAK7C,KAAL,CAAWyB,SAAd,GAErB;AAAC,gBAAD;AAAA;AACE;AAAA;AAAA;AACE,qBAAQ,4BADV;AAEE,uBAAU;AAFZ;AAII5C,aAAI,gBAAJ;AAJJ,SADF;AAOE,iCAAC,aAAD;AACE,cAAG,4BADL;AAEE,iBAAQ,KAAKmB,KAAL,CAAW8C,aAFrB;AAGE,oBAAW,KAAK9C,KAAL,CAAW+C,mBAHxB;AAIE,mBAAU,CAAE,EAAElB,OAAO,QAAT,EAAmBC,OAAO,QAA1B,EAAF,EAAwC,EAAED,OAAO,SAAT,EAAoBC,OAAO,SAA3B,EAAxC;AAJZ;AAPF,OAFqB,GAiBrB,EAjBF;;AAmBA,UAAMkB,4BAA4B,CAAC,CAAE,KAAKhD,KAAL,CAAWyB,SAAd,GAEhC,yBAAC,WAAD;AACE,YAAG,uCADL;AAEE,eAAQ5C,GAAI,2BAAJ,CAFV;AAGE,eAAQ,KAAKmB,KAAL,CAAWiD,uBAHrB;AAIE,kBAAW,KAAKjD,KAAL,CAAWkD;AAJxB,QAFgC,GAShC,EATF;;AAWA,UAAMC,6BAA6B,CAAC,CAAE,KAAKnD,KAAL,CAAWyB,SAAd,GAEjC,yBAAC,WAAD;AACE,YAAG,wCADL;AAEE,eAAQ5C,GAAI,4BAAJ,CAFV;AAGE,eAAQ,KAAKmB,KAAL,CAAWoD,wBAHrB;AAIE,kBAAW,KAAKpD,KAAL,CAAWqD;AAJxB,QAFiC,GASjC,EATF;;AAWA,UAAMC,qBACL;AAAC,yBAAD;AAAA,UAAmB,KAAI,sBAAvB;AAEC;AAAC,mBAAD;AAAA,YAAW,OAAQzE,GAAI,UAAJ,CAAnB;AACGiC,gBADH;AAEGE,yBAFH;AAGGG,+BAHH;AAIGG,iBAJH;AAKGG,mBALH;AAMGE,wBANH;AAOGK,yBAPH;AAQGG,wBARH;AASGU,wBATH;AAUGG,mCAVH;AAWGG;AAXH;AAFD,OADD;;AAmBA,aAAOG,kBAAP;AACD;;;qCAEgB;AACf,aAAO,KAAKpD,KAAL,CAAW3B,KAAX,CAAiBgE,MAAjB,GAA0B,CAA1B,GACL;AAAA;AAAA;AACE,iBAAQ,KAAKvC,KAAL,CAAWuD,MADrB;AAEE,oBAAW,KAAKvD,KAAL,CAAWwD,YAFxB;AAGE,qBAAU,gCAHZ;AAIE,eAAI;AAJN;AAME;AAAA;AAAA,YAAQ,KAAI,QAAZ,EAAqB,OAAM,EAA3B;AAAA;AAAA,SANF;AAOI,aAAKtD,KAAL,CAAW3B,KAAX,CAAiBoE,GAAjB,CAAsB,UAAEjE,IAAF,EAAY;AAClC,iBAAO;AAAA;AAAA,cAAQ,KAAM,uBAAuBA,KAAK+E,EAA1C,EAA+C,OAAQ/E,KAAK+E,EAA5D;AAAmE/E,iBAAKgF;AAAxE,WAAP;AACD,SAFC;AAPJ,OADK,GAYL,EAZF;AAaD;;;iCAEY;AACX,aAAO,KAAK1D,KAAL,CAAWiB,SAAX,KAAyB,IAAzB,GACH,KAAKjB,KAAL,CAAW2D,KAAX,GACA;AAAA;AAAA;AACE,+CAAY,2DAA2D,KAAK3D,KAAL,CAAWuD,MAAlF,CADF;AAEE,eAAI;AAFN;AAIE,iCAAC,SAAD;AACE,uBAAc,KAAKvD,KAAL,CAAW4D,SAD3B;AAEE,eAAI,qCAFN;AAGE,iBAAQ,KAAK5D,KAAL,CAAW4D,SAHrB;AAIE,oBAAW,KAAK5D,KAAL,CAAW6D;AAJxB;AAJF,OADA,GAaA;AAAA;AAAA,UAAI,qCAAY,2DAA2D,KAAK7D,KAAL,CAAWuD,MAAlF,CAAJ,EAA+F,KAAI,4BAAnG;AACI,aAAKvD,KAAL,CAAW4D;AADf,OAdG,GAiBD,EAjBN;AAkBD;;;uCAEkB;AACjB,aAAO,KAAK5D,KAAL,CAAWoB,eAAX,KAA+B,IAA/B,GACL;AAAA;AAAA,UAAS,qCAAY,uEAAuE,KAAKpB,KAAL,CAAWuD,MAA9F,CAAT,EAAgH,KAAI,kCAApH;AACE,iCAAC,SAAD;AACE,qBAAU,sBADZ;AAEE,uBAAc1E,GAAI,sCAAJ,CAAd,CAA2D,mPAF7D;AAGE,iBAAQ,KAAKmB,KAAL,CAAW8D,gBAAX,CAA4BvB,MAA5B,GAAqC,CAArC,GAAyC,KAAKvC,KAAL,CAAW8D,gBAApD,GAAyE,KAAK9D,KAAL,CAAW+D,QAAX,IAAuB,KAAK/D,KAAL,CAAW+D,QAAX,CAAoBC,gBAA3C,GAA8D,KAAKhE,KAAL,CAAW+D,QAAX,CAAoBC,gBAAlF,GAAqG,EAHxL;AAIE,oBAAW,KAAKhE,KAAL,CAAWiE,mBAJxB;AAKE,eAAI;AALN;AADF,OADK,GAUH,EAVJ;AAWD;;;sCAEkBC,U,EAAYC,K,EAAQ;AACrC,cAAQD,UAAR;;AAEE,aAAK,OAAL;AACA,aAAK,OAAL;AACA,aAAK,MAAL;AACA,aAAK,KAAL;AACE,iBACE,yBAAC,WAAD;AACE,gBAAK,wBAAwB,KAAKlE,KAAL,CAAWuD,MAAnC,GAA4C,GAA5C,GAAkDY,MAAMC,KAAxD,GAAgE,GAAhE,GAAsEF,UAD7E;AAEE,sBAAW,KAAKG,sBAFlB;AAGE,kBAAK,MAHP;AAIE,kBAAOF,MAAMC,KAAN,GAAc,GAAd,GAAoBF,UAApB,GAAiC,GAJ1C;AAKE,iDAAY,mBAAmBC,MAAMG,IAAzB,GAAgC,GAAhC,GAAsCH,MAAM,oBAAN,CAAlD,CALF;AAME,iBAAO,2BAA2BA,MAAMC,KAAjC,GAAyC,GAAzC,GAA+CF,UANxD;AAOE,sBAAWC,MAAMC,KAAN,KAAgB,OAAhB,IAA2BD,MAAMvF,OAAN,KAAkB,GAA7C,GAAmD,UAAnD,GAAgE,KAP7E;AAQE,yBAAcuF,MAAMI,WAAN,KAAsB,GAAtB,GAA4B,KAAKjE,cAAL,CAAqB4D,UAArB,CAA5B,GAAgE;AARhF,YADF;AAYF;;AAEA,aAAK,OAAL;AACA,iBACE;AAAA;AAAA;AACE,kBAAK,wBAAwB,KAAKlE,KAAL,CAAWuD,MAAnC,GAA4C,GAA5C,GAAkDY,MAAMC,KAAxD,GAAgE,GAAhE,GAAsEF,UAD7E;AAEE,oBAAOC,MAAMC,KAAN,GAAc,GAAd,GAAoBF,UAApB,GAAiC,GAF1C;AAGE,mDAAY,mBAAmBC,MAAMG,IAAzB,GAAgC,GAAhC,GAAsCH,MAAM,oBAAN,CAAlD,CAHF;AAIE,wBAAW,KAAKE,sBAJlB;AAKE,mBAAO,2BAA2BF,MAAMC,KAAjC,GAAyC,GAAzC,GAA+CF,UALxD;AAME,qBAAM,EANR;AAOE,wBAAWC,MAAMC,KAAN,KAAgB,OAAhB,IAA2BD,MAAMvF,OAAN,KAAkB,GAA7C,GAAmD,UAAnD,GAAgE;AAP7E;AASI6D,mBAAOC,IAAP,CAAa,oBAAU8B,MAAvB,EAAgC7B,GAAhC,CAAqC,UAAEC,GAAF,EAAW;AAChD,kBAAI6B,SAAS,oBAAUD,MAAV,CAAkB5B,GAAlB,CAAb;AACA,qBAAO;AAAA;AAAA,kBAAQ,KAAM,WAAWA,GAAzB,EAA+B,OAAQA,GAAvC;AAA+C6B;AAA/C,eAAP;AACD,aAHC;AATJ,WADF;AAiBA;;AAEA,aAAK,SAAL;AACE,iBACE;AAAA;AAAA;AACE,kBAAK,wBAAwB,KAAKzE,KAAL,CAAWuD,MAAnC,GAA4C,GAA5C,GAAkDY,MAAMC,KAAxD,GAAgE,GAAhE,GAAsEF,UAD7E;AAEE,oBAAOC,MAAMC,KAAN,GAAc,GAAd,GAAoBF,UAApB,GAAiC,GAF1C;AAGE,mDAAY,mBAAmBC,MAAMG,IAAzB,GAAgC,GAAhC,GAAsCH,MAAM,oBAAN,CAAlD,CAHF;AAIE,wBAAW,KAAKE,sBAJlB;AAKE,mBAAO,2BAA2BF,MAAMC,KAAjC,GAAyC,GAAzC,GAA+CF,UALxD;AAME,qBAAM,EANR;AAOE,wBAAWC,MAAMC,KAAN,KAAgB,OAAhB,IAA2BD,MAAMvF,OAAN,KAAkB,GAA7C,GAAmD,UAAnD,GAAgE;AAP7E;AASI6D,mBAAOC,IAAP,CAAa,oBAAUgC,SAAvB,EAAmC/B,GAAnC,CAAwC,UAAEC,GAAF,EAAW;AACnD,kBAAI6B,SAAS,oBAAUC,SAAV,CAAqB9B,GAArB,CAAb;AACA,qBAAO;AAAA;AAAA,kBAAQ,KAAM,aAAaA,GAA3B,EAAiC,OAAQA,GAAzC;AAAiD6B;AAAjD,eAAP;AACD,aAHC;AATJ,WADF;AAiBF;AA1DF;AA4DD;;;uCAEmBN,K,EAAQ;AAC1B,aACE;AAAA;AAAA;AACE,cAAK,wBAAwB,KAAKnE,KAAL,CAAWuD,MAAnC,GAA4C,GAA5C,GAAkDY,MAAMC,KAD/D;AAEE,gBAAOD,MAAMC,KAFf;AAGE,+CAAY,mBAAmBD,MAAMG,IAAzB,GAAgC,GAAhC,GAAsCH,MAAM,oBAAN,CAAlD,CAHF;AAIE,oBAAW,KAAKE,sBAJlB;AAKE,eAAO,2BAA2BF,MAAMC,KAL1C;AAME,iBAAQO,KAAKC,KAAL,CAAYT,MAAMU,OAAlB,EAA6BV,MAAMW,cAAnC,CANV;AAOE,oBAAWX,MAAMC,KAAN,KAAgB,OAAhB,IAA2BD,MAAMvF,OAAN,KAAkB,GAA7C,GAAmD,UAAnD,GAAgE;AAP7E;AASM6D,eAAOC,IAAP,CAAaiC,KAAKC,KAAL,CAAYT,MAAMU,OAAlB,CAAb,EAA2ClC,GAA3C,CAAgD,UAAEC,GAAF,EAAW;AAC3D,cAAI6B,SAASE,KAAKC,KAAL,CAAYT,MAAMU,OAAlB,EAA6BjC,GAA7B,CAAb;AACA,iBAAO;AAAA;AAAA,cAAQ,KAAM,uBAAS6B,MAAT,CAAd,EAAkC,OAAQA,MAA1C;AAAqDA;AAArD,WAAP;AACD,SAHC;AATN,OADF;AAgBD;;;oCAEgBN,K,EAAQ;AAAA;;AACvB,UAAIY,KAAK,CAAT;;AAEA,aACEJ,KAAKC,KAAL,CAAYT,MAAMU,OAAlB,EAA4BlC,GAA5B,CAAiC,UAAEC,GAAF,EAAW;AAC1CmC;AACA,eACE;AAAA;AAAA;AACE,qBAAUZ,MAAMC,KAAN,GAAc,GAAd,GAAoBW,EADhC;AAEE,uBAAU,8BAFZ;AAGE,iBAAMZ,MAAMC,KAAN,GAAc,mBAAd,GAAoCW;AAH5C;AAKE;AACE,kBAAK,OADP;AAEE,kBAAOZ,MAAMC,KAFf;AAGE,gBAAKD,MAAMC,KAAN,GAAc,GAAd,GAAoBW,EAH3B;AAIE,iBAAMZ,MAAMC,KAAN,GAAc,GAAd,GAAoBW,EAApB,GAAyB,YAJjC;AAKE,mBAAQnC,GALV;AAME,sBAAW,OAAKyB,sBANlB;AAOE,qBAAUW,SAAUb,MAAMW,cAAhB,MAAuCC,KAAK;AAPxD,YALF;AAcE;AAAA;AAAA,cAAM,KAAMZ,MAAMC,KAAN,GAAc,kBAAd,GAAmCW,EAA/C,EAAoD,qCAAYZ,MAAMC,KAAN,GAAc,QAA1B,CAApD;AAA2FxB;AAA3F;AAdF,SADF;AAkBD,OApBD,CADF;AAuBD;;;kCAEcuB,K,EAAQ;AACrB,aACE,yBAAC,WAAD;AACE,YAAK,wBAAwB,KAAKnE,KAAL,CAAWuD,MAAnC,GAA4C,GAA5C,GAAkDY,MAAMC,KAD/D;AAEE,qBAAcD,MAAMI,WAFtB;AAGE,kBAAW,KAAKF,sBAHlB;AAIE,cAAK,KAJP;AAKE,eAAQF,MAAMc,OALhB;AAME,cAAOd,MAAMC,KANf;AAOE,6CAAY,mBAAmBD,MAAMG,IAAzB,GAAgC,GAAhC,GAAsCH,MAAM,oBAAN,CAAlD,CAPF;AAQE,aAAO,2BAA2BA,MAAMC,KAR1C;AASE,kBAAWD,MAAMC,KAAN,KAAgB,OAAhB,IAA2BD,MAAMvF,OAAN,KAAkB,GAA7C,GAAmD,UAAnD,GAAgE,KAT7E;AAUE,eAAQuF,MAAMG,IAAN,KAAe,KAAf,GAAuBzF,GAAI,0CAAJ,CAAvB,GAA0EA,GAAI,wCAAJ;AAVpF,QADF;AAcD;;;sCAEkBsF,K,EAAQ;;AAEzB,UAAIG,OAAOH,MAAMG,IAAN,KAAe,KAAf,IAAwBH,MAAMG,IAAN,KAAe,OAAvC,GAAiD,MAAjD,GAA0DH,MAAMG,IAA3E;;AAEA,aACE,yBAAC,WAAD;AACE,YAAK,wBAAwB,KAAKtE,KAAL,CAAWuD,MAAnC,GAA4C,GAA5C,GAAkDY,MAAMC,KAD/D;AAEE,qBAAcD,MAAMI,WAFtB;AAGE,kBAAW,KAAKF,sBAHlB;AAIE,cAAOC,IAJT;AAKE,eAAQH,MAAMc,OALhB;AAME,cAAOd,MAAMC,KANf;AAOE,6CAAY,mBAAmBD,MAAMG,IAAzB,GAAgC,GAAhC,GAAsCH,MAAM,oBAAN,CAAlD,CAPF;AAQE,aAAO,2BAA2BA,MAAMC,KAR1C;AASE,kBAAWD,MAAMC,KAAN,KAAgB,OAAhB,IAA2BD,MAAMvF,OAAN,KAAkB,GAA7C,GAAmD,UAAnD,GAAgE;AAT7E,QADF;AAaD;;;mCAEeuF,K,EAAQ;AACtB,aACE,yBAAC,WAAD;AACE,YAAK,wBAAwB,KAAKnE,KAAL,CAAWuD,MAAnC,GAA4C,GAA5C,GAAkDY,MAAMC,KAD/D;AAEE,qBAAcD,MAAMI,WAFtB;AAGE,kBAAW,KAAKF,sBAHlB;AAIE,cAAK,MAJP;AAKE,eAAQF,MAAMc,OALhB;AAME,cAAOd,MAAMC,KANf;AAOE,6CAAY,mBAAmBD,MAAMG,IAAzB,GAAgC,GAAhC,GAAsCH,MAAM,oBAAN,CAAlD,CAPF;AAQE,aAAO,2BAA2BA,MAAMC,KAR1C;AASE,kBAAWD,MAAMC,KAAN,KAAgB,OAAhB,IAA2BD,MAAMvF,OAAN,KAAkB,GAA7C,GAAmD,UAAnD,GAAgE,KAT7E;AAUE,0BAAiBuF,MAAMG,IAVzB;AAWE,4BAAmBH,MAAMe,WAAN,CAAkBC,WAAlB;AAXrB,QADF;AAeD;;;6CAEyBhB,K,EAAQ;AAAA;;AAChC,UAAIY,KAAK,CAAC,CAAV;AACA,UAAIK,KAAK,kCAAkCjB,MAAM,oBAAN,CAA3C;;AAEA,aACE1B,OAAOC,IAAP,CAAaiC,KAAKC,KAAL,CAAYT,MAAMkB,MAAlB,CAAb,EAA0C1C,GAA1C,CAA+C,UAAEC,GAAF,EAAW;AAAA;;AACxD,YAAI6B,SAASE,KAAKC,KAAL,CAAYT,MAAMkB,MAAlB,EAA4BzC,GAA5B,CAAb;AACAmC;AACA,eACE;AAAA;AAAA;AACE,qBAAUZ,MAAMmB,QAAN,GAAiB,GAAjB,GAAuBP,EADnC;AAEE,mGAAeK,EAAf,EAAoB,IAApB,iCAA0B,gBAA1B,EAA4CjB,MAAM,YAAN,MAAwB,GAApE,iBAFF;AAGE,iBAAMA,MAAMmB,QAAN,GAAiB,GAAjB,GAAuBP,EAAvB,GAA4B;AAHpC;AAKE;AACE,kBAAK,OADP;AAEE,kBAAM,WAAWZ,MAAMmB,QAAjB,GAA4B,IAFpC;AAGE,gBAAKnB,MAAMmB,QAAN,GAAiB,GAAjB,GAAuBP,EAH9B;AAIE,iBAAMZ,MAAMmB,QAAN,GAAiB,GAAjB,GAAuBP,EAAvB,GAA4B,YAJpC;AAKE,mBAAQnC,GALV;AAME,sBAAW,OAAKyB,sBANlB;AAOE,qBAAUzB,QAAQuB,MAAMW,cAP1B;AAQE,iDAAY,EAAE,iCAAiCX,MAAMvF,OAAN,KAAkB,GAArD,EAAZ;AARF,YALF;AAeI6F;AAfJ,SADF;AAmBD,OAtBD,CADF;AAyBD;;;8CAE0BN,K,EAAQ;AAAA;;AACjC,UAAIY,KAAK,CAAC,CAAV;;AAEA,aACEtC,OAAOC,IAAP,CAAaiC,KAAKC,KAAL,CAAYT,MAAMkB,MAAlB,CAAb,EAA0C1C,GAA1C,CAA+C,UAAEC,GAAF,EAAW;AACxD,YAAI6B,SAASE,KAAKC,KAAL,CAAYT,MAAMkB,MAAlB,EAA4BzC,GAA5B,CAAb;AACAmC;AACA,eACE;AAAA;AAAA;AACE,qBAAUZ,MAAMmB,QAAN,GAAiB,GAAjB,GAAuBP,EADnC;AAEE,iDAAY,kCAAkCZ,MAAM,oBAAN,CAA9C,CAFF;AAGE,iBAAMA,MAAMmB,QAAN,GAAiB,GAAjB,GAAuBP,EAAvB,GAA4B;AAHpC;AAKE;AACE,kBAAK,UADP;AAEE,kBAAM,WAAWZ,MAAMmB,QAAjB,GAA4B,IAFpC;AAGE,gBAAKnB,MAAMmB,QAAN,GAAiB,GAAjB,GAAuBP,EAH9B;AAIE,iBAAMZ,MAAMmB,QAAN,GAAiB,GAAjB,GAAuBP,EAAvB,GAA4B,YAJpC;AAKE,mBAAQnC,GALV;AAME,sBAAW,OAAKyB,sBANlB;AAOE,qBAAUF,MAAMW,cAAN,IAAwBX,MAAMW,cAAN,CAAqBS,OAArB,CAA8B3C,GAA9B,MAAwC,CAAC;AAP7E,YALF;AAcI6B;AAdJ,SADF;AAkBD,OArBD,CADF;AAwBD;;;kDAE8BN,K,EAAQ;AAAA;;AACrC,UAAIY,KAAK,CAAC,CAAV;AACA,UAAIK,KAAK,kCAAkCjB,MAAM,oBAAN,CAA3C;;AAEA,aACE1B,OAAOC,IAAP,CAAaiC,KAAKC,KAAL,CAAYT,MAAMkB,MAAlB,CAAb,EAA0C1C,GAA1C,CAA+C,UAAEC,GAAF,EAAW;AAAA;;AACxD,YAAI6B,SAASE,KAAKC,KAAL,CAAYT,MAAMkB,MAAlB,EAA4BzC,GAA5B,CAAb;AACAmC;AACA,eACE;AAAA;AAAA;AACE,qBAAUZ,MAAMmB,QAAN,GAAiB,GAAjB,GAAuBP,EADnC;AAEE,mGAAeK,EAAf,EAAoB,IAApB,iCAA0B,gBAA1B,EAA4CjB,MAAM,YAAN,MAAwB,GAApE,iBAFF;AAGE,iBAAMA,MAAMmB,QAAN,GAAiB,GAAjB,GAAuBP,EAAvB,GAA4B;AAHpC;AAKE;AACE,iDAAY,EAAE,iCAAiCZ,MAAMvF,OAAN,KAAkB,GAArD,EAAZ,CADF;AAEE,kBAAK,UAFP;AAGE,kBAAO,WAAWuF,MAAMmB,QAAjB,GAA4B,IAHrC;AAIE,gBAAKnB,MAAMmB,QAAN,GAAiB,GAAjB,GAAuBP,EAJ9B;AAKE,iBAAMZ,MAAMmB,QAAN,GAAiB,GAAjB,GAAuBP,EAAvB,GAA4B,YALpC;AAME,mBAAQnC,GANV;AAOE,sBAAW,OAAKyB,sBAPlB;AAQE,qBAAU,OAAOF,MAAMW,cAAb,KAAgC,WAAhC,IAA+CX,MAAMW,cAAN,CAAqBS,OAArB,CAA8B3C,GAA9B,MAAwC,CAAC,CARpG;AASE,sBAAWuB,MAAMvF,OAAN,KAAkB,GAAlB,GAAwB,UAAxB,GAAqC;AATlD,YALF;AAgBI6F;AAhBJ,SADF;AAoBD,OAvBD,CADF;AA0BD;;;gDAE4BN,K,EAAQ;AACnC,UAAIY,KAAK,CAAC,CAAV;;AAEA,aACE;AAAA;AAAA;AACE,cAAK,wBAAwB,KAAK/E,KAAL,CAAWuD,MAAnC,GAA4C,GAA5C,GAAkDY,MAAMmB,QAD/D;AAEE,gBAAO,WAAWnB,MAAMmB,QAF1B;AAGE,+CAAY,4BAA4BnB,MAAM,oBAAN,CAAxC,CAHF;AAIE,iBAAQA,MAAMW,cAJhB;AAKE,oBAAW,KAAKT,sBALlB;AAME,oBAAWF,MAAMvF,OAAN,KAAkB,GAAlB,GAAwB,UAAxB,GAAqC;AANlD;AASE6D,eAAOC,IAAP,CAAaiC,KAAKC,KAAL,CAAYT,MAAMkB,MAAlB,CAAb,EAA0C1C,GAA1C,CAA+C,UAAEC,GAAF,EAAW;AACxD,cAAI6B,SAASE,KAAKC,KAAL,CAAYT,MAAMkB,MAAlB,EAA4BzC,GAA5B,CAAb;AACAmC;AACA,iBACE;AAAA;AAAA,cAAQ,KAAMZ,MAAMmB,QAAN,GAAiB,GAAjB,GAAuBP,EAAvB,GAA4B,YAA1C,EAAyD,OAAQnC,GAAjE;AAAyE6B;AAAzE,WADF;AAGD,SAND;AATF,OADF;AAmBD;;;kCAEa;AAAA;;AAEZ,aAAO,KAAKzE,KAAL,CAAW+D,QAAX,IAAuB,KAAK/D,KAAL,CAAW+D,QAAX,CAAoByB,MAA3C,GACL/C,OAAOC,IAAP,CAAa,KAAK1C,KAAL,CAAW+D,QAAX,CAAoByB,MAAjC,EAA0C7C,GAA1C,CAA+C,UAAEC,GAAF,EAAW;;AAEtD,YAAIuB,QAAQ,OAAKnE,KAAL,CAAW+D,QAAX,CAAoByB,MAApB,CAA4B5C,GAA5B,CAAZ;;AAEA;AACA,YAAK,OAAOuB,MAAMC,KAAb,KAAuB,WAA5B,EAA0C;;AAExC,cAAIqB,OAAUtB,MAAMuB,WAAN,CAAkBnD,MAAlB,GAA2B,CAA3B,GACZ;AAAA;AAAA,cAAG,WAAU,wBAAb,EAAsC,IAAK,4BAA4B4B,MAAMC,KAA7E,EAAqF,KAAM,4BAA4BD,MAAMC,KAA7H;AAAuID,kBAAMuB;AAA7I,WADY,GAEZ,EAFF;;AAIA,cAAI5D,QAAUqC,MAAM,YAAN,MAAwB,GAAxB,GAA8B;AAAA;AAAA,cAAM,qCAAYA,MAAMC,KAAN,GAAc,QAA1B,CAAN,EAA2C,KAAMD,MAAMC,KAAN,GAAc,iBAA/D;AAAqFD,kBAAMrC;AAA3F,WAA9B,GAA0I,EAAxJ;;AAEA,cAAI6D,UAAU,EAAC,kCAAmCxB,MAAMC,KAAN,KAAgB,OAAhB,IAA2BD,MAAMvF,OAAN,KAAkB,GAAjF,EAAd;AACA+G,kBAASxB,MAAMC,KAAN,GAAc,QAAvB,IAAmC,IAAnC;;AAEA,cAAKD,MAAMG,IAAN,KAAe,SAApB,EAAgC;;AAE9B,mBAAQ,CACNH,MAAMyB,iBAAN,KAA4B,GAA5B,IAAmCzB,MAAMuB,WAAN,CAAkBnD,MAAlB,GAA2B,CAA9D,IAAmEkD,IAD7D,EAEJhD,OAAOC,IAAP,CAAa,OAAKpC,cAAlB,EAAmCqC,GAAnC,CAAwC,UAAEuB,UAAF,EAAkB;AACxDpC,sBAAQqC,MAAM,YAAN,MAAwB,GAAxB,GAA8B;AAAA;AAAA,kBAAM,qCAAYA,MAAMC,KAAN,GAAc,QAA1B,CAAN,EAA2C,KAAMD,MAAMC,KAAN,GAAc,kBAAd,GAAmCF,UAApF;AAAmG,uBAAK5D,cAAL,CAAqB4D,UAArB;AAAnG,eAA9B,GAA8K,EAAtL;;AAEA,qBACE;AAAA;AAAA;AACE,2BAAU,wBAAwB,OAAKlE,KAAL,CAAWuD,MAAnC,GAA4C,GAA5C,GAAkDY,MAAMC,KAAxD,GAAgE,GAAhE,GAAsEF,UADlF;AAEE,uDAAYyB,OAAZ,CAFF;AAGE,uBAAMxB,MAAMC,KAAN,GAAc,aAAd,GAA8BF,UAHtC;AAIE,yBAAQC,MAAM0B,IAAN,KAAe,GAAf,GAAqB,EAAE,WAAW,MAAb,EAArB,GAA6C;AAJvD;AAMI/D,qBANJ;AAOI,uBAAKgE,iBAAL,CAAwB5B,UAAxB,EAAoCC,KAApC;AAPJ,eADF;AAWD,aAdD,CAFI,EAiBNA,MAAMyB,iBAAN,KAA4B,GAA5B,IAAmCzB,MAAMuB,WAAN,CAAkBnD,MAAlB,GAA2B,CAA9D,IAAmEkD,IAjB7D,CAAR;AAmBC,WArBH,MAqBS;AACP,mBACE;AAAA;AAAA;AACE,yBAAU,wBAAwB,OAAKzF,KAAL,CAAWuD,MAAnC,GAA4C,GAA5C,GAAkDY,MAAMC,KADpE;AAEE,qDAAYuB,OAAZ,CAFF;AAGE,qBAAMxB,MAAMC,KAAN,GAAc,YAHtB;AAIE,uBAAQD,MAAM0B,IAAN,KAAe,GAAf,GAAqB,EAAE,WAAW,MAAb,EAArB,GAA6C;AAJvD;AAMI/D,mBANJ;AAQIqC,oBAAMyB,iBAAN,KAA4B,GAA5B,IAAmCzB,MAAMuB,WAAN,CAAkBnD,MAAlB,GAA2B,CAA9D,IAAmEkD,IARvE;AAWMtB,oBAAMG,IAAN,KAAe,UAAf,GAA4B,OAAKyB,kBAAL,CAAyB5B,KAAzB,CAA5B,GACAA,MAAMG,IAAN,KAAe,OAAf,GAAyB,OAAK0B,eAAL,CAAsB7B,KAAtB,CAAzB,GACAA,MAAMG,IAAN,KAAe,KAAf,IAAwBH,MAAMG,IAAN,KAAe,UAAvC,GAAoD,OAAK2B,aAAL,CAAoB9B,KAApB,CAApD,GACAA,MAAMG,IAAN,KAAe,MAAf,IAAyBH,MAAMG,IAAN,KAAe,UAAxC,GAAqD,OAAK4B,cAAL,CAAqB/B,KAArB,CAArD,GACF,OAAKgC,iBAAL,CAAwBhC,KAAxB,CAfJ;AAkBIA,oBAAMyB,iBAAN,KAA4B,GAA5B,IAAmCzB,MAAMuB,WAAN,CAAkBnD,MAAlB,GAA2B,CAA9D,IAAmEkD;AAlBvE,aADF;AAuBD;AACF,SAzDD,MAyDO;;AAEL,cAAIA,OAAOtB,MAAMuB,WAAN,CAAkBnD,MAAlB,GAA2B,CAA3B,GACT;AAAA;AAAA,cAAG,WAAU,wBAAb,EAAsC,IAAK,4BAA4B4B,MAAMmB,QAA7E,EAAwF,KAAM,4BAA4BnB,MAAMmB,QAAhI;AAA6InB,kBAAMuB;AAAnJ,WADS,GAET,EAFF;;AAIA,cAAI5D,QAAQqC,MAAM,YAAN,MAAwB,GAAxB,GACV;AAAA;AAAA,cAAM,KAAMA,MAAMmB,QAAN,GAAiB,iBAA7B,EAAiD,qCAAYnB,MAAMmB,QAAN,GAAiB,8BAA7B,CAAjD;AAAiHnB,kBAAMrC;AAAvH,WADU,GAEV,EAFF;;AAIA,cAAI6D,UAAU,EAAE,kCAAmCxB,MAAMvF,OAAN,KAAkB,GAAvD,EAAd;AACA+G,kBAASxB,MAAMmB,QAAN,GAAiB,QAA1B,IAAsC,IAAtC;;AAEE,iBACE;AAAA;AAAA;AACE,uBAAUnB,MAAMmB,QADlB;AAEE,mDAAaK,OAAb,CAFF;AAGE,mBAAMxB,MAAMmB,QAAN,GAAiB,iBAHzB;AAIE,qBAAQnB,MAAMG,IAAN,KAAe,QAAf,IAA2BH,MAAM0B,IAAN,KAAe,GAA1C,GAAgD,EAAE,WAAW,MAAb,EAAhD,GAAwE;AAJlF;AAOI/D,iBAPJ;AASIqC,kBAAMyB,iBAAN,KAA4B,GAA5B,IAAmCzB,MAAMuB,WAAN,CAAkBnD,MAAlB,GAA2B,CAA9D,IAAmEkD,IATvE;AAYMtB,kBAAMG,IAAN,KAAe,OAAf,GAAyB,OAAK8B,wBAAL,CAA+BjC,KAA/B,CAAzB,GACAA,MAAMG,IAAN,KAAe,QAAf,GAA0B,OAAK+B,yBAAL,CAAgClC,KAAhC,CAA1B,GACAA,MAAMG,IAAN,KAAe,YAAf,GAA8B,OAAKgC,6BAAL,CAAoCnC,KAApC,CAA9B,GACAA,MAAMG,IAAN,KAAe,UAAf,GAA4B,OAAKiC,2BAAL,CAAkCpC,KAAlC,CAA5B,GAAwE,EAf9E;AAkBIA,kBAAMyB,iBAAN,KAA4B,GAA5B,IAAmCzB,MAAMuB,WAAN,CAAkBnD,MAAlB,GAA2B,CAA9D,IAAmEkD;AAlBvE,WADF;AAuBD;AACJ,OAnGH,CADK,GAqGL,EArGF;AAsGD;;;qCAEgB;;AAEf,aAAO,KAAKvF,KAAL,CAAW7B,cAAX,CAA0B+B,OAA1B,KAAsC,IAAtC,IAA8C,KAAKF,KAAL,CAAW7B,cAAX,CAA0BT,IAA1B,CAA+B4I,QAA7E,IAAyF,KAAKxG,KAAL,CAAWyB,SAAX,KAAyB,IAAlH,GACL,yBAAC,SAAD;AACE,iBAAU,KAAKvB,KAAL,CAAW7B,cAAX,CAA0BT,IAA1B,CAA+B4I,QAD3C;AAEE,aAAM,wBAFR;AAGE,mBAAY,yBAAyBC,KAAKC,MAAL,GAAcC,QAAd,CAAuB,EAAvB,EAA2BC,KAA3B,CAAiC,CAAC,CAAlC,CAHvC,CAG8E;AAH9E,UAIE,OAAQ,KAAK5G,KAAL,CAAWiC,cAJrB;AAKE,YAAK,KAAKjC,KAAL,CAAWsC,aAAX,CAAyBC,MAAzB,GAAkC,CAAlC,GAAsC,KAAKvC,KAAL,CAAWsC,aAAjD,GAAiE,KAAKpC,KAAL,CAAW7B,cAAX,CAA0BT,IAA1B,CAA+ByE,MALvG;AAME,cAAO,KAAKrC,KAAL,CAAW4B,aANpB;AAOE,cAAO,KAAK5B,KAAL,CAAW8C,aAPpB;AAQE,wBAAe,EARjB;AASE,yBAAgB;AATlB,QADK,GAYH,EAZJ;AAaD;;;oCAEe;AACd,aAAO,KAAK9C,KAAL,CAAW+D,QAAX,IAAuB,KAAK/D,KAAL,CAAW+D,QAAX,CAAoByB,MAA3C,GACH,KAAKxF,KAAL,CAAW2D,KAAX,IAAoB,KAAK3D,KAAL,CAAW+D,QAAX,CAAoB8C,aAApB,CAAkC,kCAAlC,MAA0E,MAA9F,GACA;AAAA;AAAA;AACE,gBAAK,QADP;AAEE,eAAI,uBAFN;AAGE,+CAAY,6DAA6D,KAAK7G,KAAL,CAAWuD,MAAxE,GAAiF,kBAAjF,GAAsG,GAAtG,GAA4G,KAAKvD,KAAL,CAAW+D,QAAX,CAAoB8C,aAApB,CAAkC,qCAAlC,CAAxH;AAHF;AAKE,iCAAC,SAAD;AACE,qBAAU,yCADZ;AAEE,eAAI,yCAFN;AAGE,iBAAQ,KAAK7G,KAAL,CAAW8G,gBAAX,GAA8B,KAAK9G,KAAL,CAAW8G,gBAAzC,GAA4D,EAHtE;AAIE,oBAAW,KAAK9G,KAAL,CAAW+G;AAJxB;AALF,OADA,GAcE,KAAK/G,KAAL,CAAW+D,QAAX,CAAoB8C,aAApB,CAAkC,kCAAlC,MAA0E,MAA1E,GACA;AAAA;AAAA;AACE,gBAAK,QADP;AAEE,eAAI,uBAFN;AAGE,+CAAY,6DAA6D,KAAK7G,KAAL,CAAWuD,MAAxE,GAAiF,kBAAjF,GAAsG,GAAtG,GAA4G,KAAKvD,KAAL,CAAW+D,QAAX,CAAoB8C,aAApB,CAAkC,qCAAlC,CAAxH;AAHF;AAKE;AAAA;AAAA,YAAM,WAAU,yCAAhB,EAA0D,KAAI,yCAA9D;AAA0G,eAAK7G,KAAL,CAAW8G;AAArH;AALF,OADA,GASA;AACE,cAAK,OADP;AAEE,aAAM,KAAK9G,KAAL,CAAW8G,gBAFnB;AAGE,aAAM,KAAK9G,KAAL,CAAW+D,QAAX,CAAoB8C,aAApB,CAAkC,mCAAlC,CAHR;AAIE,6CAAY,+FAA+F,KAAK7G,KAAL,CAAWuD,MAA1G,GAAmH,kBAAnH,GAAwI,GAAxI,GAA8I,KAAKvD,KAAL,CAAW+D,QAAX,CAAoB8C,aAApB,CAAkC,qCAAlC,CAA1J;AAJF,QAxBC,GAgCH,EAhCJ;AAiCD;;;uCAEkB;AACjB,aACE;AAAA;AAAA;AACE,cAAK,+BAA+B,KAAK7G,KAAL,CAAWuD,MADjD;AAEE,+CAAY,yDAAyD,KAAKvD,KAAL,CAAWuD,MAAhF,CAFF;AAGE,eAAI;AAHN;AAKG;;AAEC;AACA,SAAC,KAAKyD,UAAL,EAAD,CAHD;;AAKC;AACA,SAAC,KAAKhD,gBAAL,EAAD,CAND;;AAQC;AACA,SAAC,KAAKiD,QAAL,EAAD,CATD;AALH,OADF;AAmBD;;;+BAEU;AACT;AACE;AACA;AAAA;AAAA;AACE,gBAAK,uBAAS,KAAKjH,KAAL,CAAW4D,SAApB,IAAkC,GAAlC,GAAwC,KAAK5D,KAAL,CAAWuD,MAD1D;AAEE,iDAAY,2CAA2C,KAAKvD,KAAL,CAAWuD,MAAtD,GAA+D,GAA/D,GAAqE,KAAKvD,KAAL,CAAW+D,QAAX,CAAoB8C,aAApB,CAAkC,gCAAlC,CAAjF,CAFF;AAGE,iBAAI;AAHN;AAKG;;AAEC;AACA,WAAC,KAAKK,WAAL,EAAD,CAHD;;AAKC;AACA,WAAC,KAAKC,cAAL,EAAD,CAND;;AAQC;AACA,WAAC,KAAKC,aAAL,EAAD,CATD;AALH;AAFF;AAoBD;;;6BAEQ;;AAEP,UAAK,KAAKlH,KAAL,CAAW3B,KAAX,CAAiBgE,MAAjB,GAA0B,CAA1B,IAA+B,KAAKvC,KAAL,CAAW+D,QAA1C,IAAsDtB,OAAOC,IAAP,CAAa,KAAK1C,KAAL,CAAW+D,QAAxB,EAAmCxB,MAAnC,GAA4C,CAAvG,EAA2G;;AAE1G,eAEG;AAAA;AAAA,YAAK,qCAAY,KAAKvC,KAAL,CAAWqH,SAAvB,CAAL;AAEG;AACD,eAAKrH,KAAL,CAAW2D,KAAX,IAAoB,KAAKL,kBAAL,EAHtB;AAKG;AACD,eAAKgE,cAAL,EANF;AAQE,2CAAI,KAAI,6BAAR,GARF;AAUG;AACD,eAAKC,gBAAL;AAXF,SAFH;AAkBD,OApBA,MAoBM,IAAK,KAAKrH,KAAL,CAAW3B,KAAX,CAAiBgE,MAAjB,GAA0B,CAA/B,EAAmC;;AAEvC;AACF,eACI;AAAA;AAAA,YAAK,qCAAY,KAAKvC,KAAL,CAAWqH,SAAvB,CAAL;AACG,eAAKC,cAAL;AADH,SADJ;AAMA,OATM,MASA,IAAK,KAAKpH,KAAL,CAAWC,cAAX,KAA8B,OAAnC,EAA6C;;AAEjD;AACA,eACE;AAAA;AAAA,YAAG,WAAU,iCAAb,EAA+C,KAAI,iCAAnD;AACC;AAAA;AAAA;AAAM,iBAAKD,KAAL,CAAWC,cAAX,KAA8B,OAA9B,GAAwC;AAAA;AAAA,gBAAG,MAAO,oBAAUqH,YAApB;AAAA;AAAsC3I,iBAAI,+EAAJ,CAAtC;AAAA;AAAA,aAAxC,GAA6KA,GAAI,0BAAJ;AAAnL;AADD,SADF;AAKD,OARK,MAQC,IAAK,KAAKqB,KAAL,CAAWQ,YAAX,KAA4B,IAA5B,IAAoC,KAAKR,KAAL,CAAW3B,KAAX,CAAiBgE,MAAjB,KAA4B,CAArE,EAAyE;;AAE9E;AACA,eACE;AAAA;AAAA,YAAG,KAAI,gBAAP,EAAwB,qCAAY,KAAKvC,KAAL,CAAWqH,SAAvB,CAAxB;AACE;AAAA;AAAA;AAAMxI,eAAI,sBAAJ;AAAN;AADF,SADF;AAKD,OARM,MAQA;;AAEL;AACF,eACI;AAAA;AAAA,YAAG,KAAI,oBAAP,EAA4B,qCAAY,KAAKmB,KAAL,CAAWqH,SAAvB,CAA5B;AACE;AAAA;AAAA,cAAM,KAAI,+BAAV;AAA4CxI,eAAI,YAAJ;AAA5C,WADF;AAEE,mCAAC,OAAD,IAAS,KAAI,kCAAb;AAFF,SADJ;AAMA;AACD;;;;EAx1ByCgB,S;;kBAAvBE,c;;;;;;;;;;;;;;;;;ACbrB,IAAM0H,YAAY;AACjBjD,SAAQ;AACP,MAAI,GADG;AAEP,QAAM,SAFC;AAGP,QAAM,QAHC;AAIP,QAAM,SAJC;AAKP,QAAM,UALC;AAMP,QAAM,YANC;AAOP,QAAM,UAPC;AAQP,QAAM,aARC;AASP,QAAM,UATC;AAUP,QAAM,sBAVC;AAWP,QAAM,SAXC;AAYP,QAAM,SAZC;AAaP,QAAM,QAbC;AAcP,QAAM,OAdC;AAeP,QAAM,UAfC;AAgBP,QAAM,SAhBC;AAiBP,QAAM,MAjBC;AAkBP,QAAM,QAlBC;AAmBP,QAAM,UAnBC;AAoBP,QAAM,WApBC;AAqBP,QAAM,OArBC;AAsBP,QAAM,UAtBC;AAuBP,QAAM,eAvBC;AAwBP,QAAM,UAxBC;AAyBP,QAAM,WAzBC;AA0BP,QAAM,aA1BC;AA2BP,QAAM,UA3BC;AA4BP,QAAM,SA5BC;AA6BP,QAAM,UA7BC;AA8BP,QAAM,QA9BC;AA+BP,QAAM,eA/BC;AAgCP,QAAM,YAhCC;AAiCP,QAAM,YAjCC;AAkCP,QAAM,UAlCC;AAmCP,QAAM,gBAnCC;AAoCP,QAAM,cApCC;AAqCP,QAAM,MArCC;AAsCP,QAAM,UAtCC;AAuCP,QAAM,QAvCC;AAwCP,QAAM,cAxCC;AAyCP,QAAM,cAzCC;AA0CP,QAAM,gBA1CC;AA2CP,QAAM,cA3CC;AA4CP,QAAM,WA5CC;AA6CP,QAAM,OA7CC;AA8CP,QAAM,MA9CC;AA+CP,QAAM,SA/CC;AAgDP,QAAM,UAhDC;AAiDP,QAAM,YAjDC;AAkDP,QAAM,eAlDC;AAmDP,QAAM,WAnDC;AAoDP,QAAM,SApDC;AAqDP,QAAM,SArDC;AAsDP,QAAM,kBAtDC;AAuDP,QAAM,UAvDC;AAwDP,QAAM,eAxDC;AAyDP,QAAM,2BAzDC;AA0DP,QAAM,aA1DC;AA2DP,QAAM,SA3DC;AA4DP,QAAM,sBA5DC;AA6DP,QAAM,QA7DC;AA8DP,QAAM,cA9DC;AA+DP,QAAM,uBA/DC;AAgEP,QAAM,SAhEC;AAiEP,QAAM;AAjEC,EADS;AAoEjBE,YAAW;AACV,QAAM,eADI;AAEV,QAAM,gBAFI;AAGV,QAAM,aAHI;AAIV,QAAM,eAJI;AAKV,QAAM,SALI;AAMV,QAAM,SANI;AAOV,QAAM,gBAPI;AAQV,QAAM,SARI;AASV,QAAM,QATI;AAUV,QAAM,UAVI;AAWV,QAAM,YAXI;AAYV,QAAM,qBAZI;AAaV,QAAM,WAbI;AAcV,QAAM,SAdI;AAeV,QAAM,OAfI;AAgBV,QAAM,WAhBI;AAiBV,QAAM,SAjBI;AAkBV,QAAM,YAlBI;AAmBV,QAAM,SAnBI;AAoBV,QAAM,SApBI;AAqBV,QAAM,YArBI;AAsBV,QAAM,UAtBI;AAuBV,QAAM,SAvBI;AAwBV,QAAM,SAxBI;AAyBV,QAAM,QAzBI;AA0BV,QAAM,OA1BI;AA2BV,QAAM,SA3BI;AA4BV,QAAM,QA5BI;AA6BV,QAAM,SA7BI;AA8BV,QAAM,wBA9BI;AA+BV,QAAM,UA/BI;AAgCV,QAAM,eAhCI;AAiCV,QAAM,QAjCI;AAkCV,QAAM,gCAlCI;AAmCV,QAAM,mBAnCI;AAoCV,QAAM,UApCI;AAqCV,QAAM,cArCI;AAsCV,QAAM,SAtCI;AAuCV,QAAM,UAvCI;AAwCV,QAAM,UAxCI;AAyCV,QAAM,QAzCI;AA0CV,QAAM,YA1CI;AA2CV,QAAM,gBA3CI;AA4CV,QAAM,0BA5CI;AA6CV,QAAM,MA7CI;AA8CV,QAAM,OA9CI;AA+CV,QAAM,OA/CI;AAgDV,QAAM,kBAhDI;AAiDV,QAAM,yBAjDI;AAkDV,QAAM,UAlDI;AAmDV,QAAM,SAnDI;AAoDV,QAAM,OApDI;AAqDV,QAAM,uCArDI;AAsDV,QAAM,cAtDI;AAuDV,QAAM,YAvDI;AAwDV,QAAM,eAxDI;AAyDV,QAAM,SAzDI;AA0DV,QAAM,MA1DI;AA2DV,QAAM,QA3DI;AA4DV,QAAM,gBA5DI;AA6DV,QAAM,SA7DI;AA8DV,QAAM,UA9DI;AA+DV,QAAM,UA/DI;AAgEV,QAAM,oBAhEI;AAiEV,QAAM,SAjEI;AAkEV,QAAM,OAlEI;AAmEV,QAAM,aAnEI;AAoEV,QAAM,mBApEI;AAqEV,QAAM,SArEI;AAsEV,QAAM,SAtEI;AAuEV,QAAM,UAvEI;AAwEV,QAAM,6BAxEI;AAyEV,QAAM,eAzEI;AA0EV,QAAM,MA1EI;AA2EV,QAAM,SA3EI;AA4EV,QAAM,QA5EI;AA6EV,QAAM,eA7EI;AA8EV,QAAM,kBA9EI;AA+EV,QAAM,6BA/EI;AAgFV,QAAM,OAhFI;AAiFV,QAAM,QAjFI;AAkFV,QAAM,SAlFI;AAmFV,QAAM,SAnFI;AAoFV,QAAM,OApFI;AAqFV,QAAM,WArFI;AAsFV,QAAM,QAtFI;AAuFV,QAAM,WAvFI;AAwFV,QAAM,SAxFI;AAyFV,QAAM,YAzFI;AA0FV,QAAM,MA1FI;AA2FV,QAAM,WA3FI;AA4FV,QAAM,UA5FI;AA6FV,QAAM,QA7FI;AA8FV,QAAM,eA9FI;AA+FV,QAAM,QA/FI;AAgGV,QAAM,OAhGI;AAiGV,QAAM,mCAjGI;AAkGV,QAAM,+BAlGI;AAmGV,QAAM,UAnGI;AAoGV,QAAM,WApGI;AAqGV,QAAM,SArGI;AAsGV,QAAM,SAtGI;AAuGV,QAAM,OAvGI;AAwGV,QAAM,WAxGI;AAyGV,QAAM,2BAzGI;AA0GV,QAAM,MA1GI;AA2GV,QAAM,SA3GI;AA4GV,QAAM,aA5GI;AA6GV,QAAM,QA7GI;AA8GV,QAAM,OA9GI;AA+GV,QAAM,SA/GI;AAgHV,QAAM,OAhHI;AAiHV,QAAM,QAjHI;AAkHV,QAAM,QAlHI;AAmHV,QAAM,YAnHI;AAoHV,QAAM,OApHI;AAqHV,QAAM,UArHI;AAsHV,QAAM,wCAtHI;AAuHV,QAAM,oBAvHI;AAwHV,QAAM,QAxHI;AAyHV,QAAM,YAzHI;AA0HV,QAAM,kCA1HI;AA2HV,QAAM,QA3HI;AA4HV,QAAM,SA5HI;AA6HV,QAAM,SA7HI;AA8HV,QAAM,SA9HI;AA+HV,QAAM,wBA/HI;AAgIV,QAAM,eAhII;AAiIV,QAAM,WAjII;AAkIV,QAAM,YAlII;AAmIV,QAAM,OAnII;AAoIV,QAAM,4CApII;AAqIV,QAAM,YArII;AAsIV,QAAM,QAtII;AAuIV,QAAM,UAvII;AAwIV,QAAM,UAxII;AAyIV,QAAM,MAzII;AA0IV,QAAM,OA1II;AA2IV,QAAM,kBA3II;AA4IV,QAAM,YA5II;AA6IV,QAAM,YA7II;AA8IV,QAAM,WA9II;AA+IV,QAAM,SA/II;AAgJV,QAAM,QAhJI;AAiJV,QAAM,iCAjJI;AAkJV,QAAM,sBAlJI;AAmJV,QAAM,QAnJI;AAoJV,QAAM,UApJI;AAqJV,QAAM,YArJI;AAsJV,QAAM,YAtJI;AAuJV,QAAM,SAvJI;AAwJV,QAAM,YAxJI;AAyJV,QAAM,SAzJI;AA0JV,QAAM,SA1JI;AA2JV,QAAM,OA3JI;AA4JV,QAAM,OA5JI;AA6JV,QAAM,aA7JI;AA8JV,QAAM,sBA9JI;AA+JV,QAAM,eA/JI;AAgKV,QAAM,aAhKI;AAiKV,QAAM,WAjKI;AAkKV,QAAM,OAlKI;AAmKV,QAAM,SAnKI;AAoKV,QAAM,MApKI;AAqKV,QAAM,gBArKI;AAsKV,QAAM,0BAtKI;AAuKV,QAAM,QAvKI;AAwKV,QAAM,MAxKI;AAyKV,QAAM,UAzKI;AA0KV,QAAM,OA1KI;AA2KV,QAAM,iCA3KI;AA4KV,QAAM,QA5KI;AA6KV,QAAM,kBA7KI;AA8KV,QAAM,UA9KI;AA+KV,QAAM,MA/KI;AAgLV,QAAM,aAhLI;AAiLV,QAAM,UAjLI;AAkLV,QAAM,QAlLI;AAmLV,QAAM,UAnLI;AAoLV,QAAM,aApLI;AAqLV,QAAM,OArLI;AAsLV,QAAM,SAtLI;AAuLV,QAAM,SAvLI;AAwLV,QAAM,oBAxLI;AAyLV,QAAM,QAzLI;AA0LV,QAAM,cA1LI;AA2LV,QAAM,uBA3LI;AA4LV,QAAM,aA5LI;AA6LV,QAAM,2BA7LI;AA8LV,QAAM,kCA9LI;AA+LV,QAAM,OA/LI;AAgMV,QAAM,YAhMI;AAiMV,QAAM,uBAjMI;AAkMV,QAAM,cAlMI;AAmMV,QAAM,SAnMI;AAoMV,QAAM,QApMI;AAqMV,QAAM,YArMI;AAsMV,QAAM,cAtMI;AAuMV,QAAM,WAvMI;AAwMV,QAAM,UAxMI;AAyMV,QAAM,UAzMI;AA0MV,QAAM,iBA1MI;AA2MV,QAAM,SA3MI;AA4MV,QAAM,cA5MI;AA6MV,QAAM,8CA7MI;AA8MV,QAAM,OA9MI;AA+MV,QAAM,WA/MI;AAgNV,QAAM,OAhNI;AAiNV,QAAM,UAjNI;AAkNV,QAAM,wBAlNI;AAmNV,QAAM,WAnNI;AAoNV,QAAM,QApNI;AAqNV,QAAM,aArNI;AAsNV,QAAM,sBAtNI;AAuNV,QAAM,2BAvNI;AAwNV,QAAM,YAxNI;AAyNV,QAAM,8BAzNI;AA0NV,QAAM,UA1NI;AA2NV,QAAM,aA3NI;AA4NV,QAAM,MA5NI;AA6NV,QAAM,SA7NI;AA8NV,QAAM,OA9NI;AA+NV,QAAM,qBA/NI;AAgOV,QAAM,SAhOI;AAiOV,QAAM,QAjOI;AAkOV,QAAM,cAlOI;AAmOV,QAAM,0BAnOI;AAoOV,QAAM,QApOI;AAqOV,QAAM,QArOI;AAsOV,QAAM,SAtOI;AAuOV,QAAM,sBAvOI;AAwOV,QAAM,sCAxOI;AAyOV,QAAM,SAzOI;AA0OV,QAAM,YA1OI;AA2OV,QAAM,SA3OI;AA4OV,QAAM,WA5OI;AA6OV,QAAM,UA7OI;AA8OV,QAAM,yBA9OI;AA+OV,QAAM,sBA/OI;AAgPV,QAAM,mBAhPI;AAiPV,QAAM,gBAjPI;AAkPV,QAAM,OAlPI;AAmPV,QAAM,QAnPI;AAoPV,QAAM;AApPI,EApEM;AA0TjBtC,UAAS;AACR,QAAO,QADC;AAER,QAAO,WAFC;AAGR,QAAO,SAHC;AAIR,QAAO,UAJC;AAKR,QAAO,aALC;AAMR,QAAO,QANC;AAOR,QAAO,SAPC;AAQR,QAAO,WARC;AASR,QAAO,SATC;AAUR,WAAU,qBAVF;AAWR,WAAU,sBAXF;AAYR,WAAU,uBAZF;AAaR,QAAO,UAbC;AAcR,QAAO,OAdC;AAeR,QAAO,QAfC;AAgBR,QAAO,OAhBC;AAiBR,WAAU,cAjBF;AAkBR,QAAO,cAlBC;AAmBR,QAAO,UAnBC;AAoBR,SAAQ,UApBA;AAqBR,QAAO,SArBC;AAsBR,QAAO,QAtBC;AAuBR,WAAU,mBAvBF;AAwBR,QAAO,UAxBC;AAyBR,QAAO,UAzBC;AA0BR,QAAO,QA1BC;AA2BR,WAAU,kBA3BF;AA4BR,WAAU,sBA5BF;AA6BR,QAAO,OA7BC;AA8BR,QAAO,UA9BC;AA+BR,QAAO,QA/BC;AAgCR,QAAO,OAhCC;AAiCR,QAAO,WAjCC;AAkCR,QAAO,WAlCC;AAmCR,QAAO,YAnCC;AAoCR,QAAO,SApCC;AAqCR,QAAO,UArCC;AAsCR,QAAO,SAtCC;AAuCR,QAAO,QAvCC;AAwCR,QAAO,UAxCC;AAyCR,QAAO,SAzCC;AA0CR,QAAO,YA1CC;AA2CR,QAAO,OA3CC;AA4CR,QAAO,WA5CC;AA6CR,QAAO,SA7CC;AA8CR,QAAO,WA9CC;AA+CR,QAAO,WA/CC;AAgDR,QAAO,SAhDC;AAiDR,QAAO,QAjDC;AAkDR,QAAO,YAlDC;AAmDR,WAAU,qBAnDF;AAoDR,WAAU,uBApDF;AAqDR,QAAO,UArDC;AAsDR,QAAO,SAtDC;AAuDR,QAAO,SAvDC;AAwDR,QAAO,WAxDC;AAyDR,QAAO,QAzDC;AA0DR,QAAO,WA1DC;AA2DR,QAAO,SA3DC;AA4DR,YAAW,yBA5DH;AA6DR,QAAO,SA7DC;AA8DR,QAAO,SA9DC;AA+DR,QAAO,OA/DC;AAgER,QAAO,QAhEC;AAiER,QAAO,MAjEC;AAkER,QAAO,SAlEC;AAmER,QAAO,WAnEC;AAoER,QAAO,MApEC;AAqER,QAAO,YArEC;AAsER,QAAO;AAtEC,EA1TQ;AAkYjBoF,eAAc;AAlYG,CAAlB;;kBAqYeC,S;;;;;;;;;;;;;;ACrYf,CAAE,UAAUvJ,CAAV,EAAc;;AAEfA,GAAGwJ,QAAH,EAAcC,KAAd,CAAqB,YAAW;;AAE/BzJ,IAAG,MAAH,EAAY0J,EAAZ,CAAgB,OAAhB,EAAyB,8BAAzB,EAAyD,UAAU/G,KAAV,EAAkB;AACzEA,SAAMgH,cAAN;AACAhH,SAAMiH,eAAN;AACA5J,KAAG,0CAAH,EAAgDyF,KAAhD;AACD,GAJD;;AAMAzF,IAAG,MAAH,EAAY0J,EAAZ,CAAgB,OAAhB,EAAyB,0CAAzB,EAAqE,UAAU/G,KAAV,EAAkB;AACrFA,SAAMgH,cAAN;AACAhH,SAAMiH,eAAN;AACD,GAHD;AAIA,EAZD;AAcA,CAhBD,EAgBIC,MAhBJ,E;;;;;;;;;;;;;;;;;kBCKwBC,O;AALxB;;;;;AAKe,SAASA,OAAT,CAAkBC,IAAlB,EAAyB;;AAEtC;AACA,MAAIC,eAAe,EAAC,KAAI,GAAL,EAAS,KAAI,GAAb,EAAiB,KAAI,GAArB,EAAyB,KAAI,GAA7B,EAAiC,KAAI,GAArC,EAAyC,KAAI,GAA7C,EAAiD,KAAI,GAArD,EAAyD,KAAI,GAA7D,EAAiE,KAAI,GAArE,EAA0E,KAAI,GAA9E,EAAkF,KAAI,GAAtF,EAA0F,KAAI,GAA9F,EAAkG,KAAI,GAAtG,EAA0G,KAAI,GAA9G,EAAkH,KAAI,GAAtH,EAA0H,KAAI,GAA9H,EAAkI,KAAI,GAAtI,EAA0I,KAAI,GAA9I,EAAkJ,KAAI,GAAtJ,EAA0J,KAAI,GAA9J,EAAkK,KAAI,GAAtK,EAA0K,KAAI,GAA9K,EAAkL,KAAI,GAAtL,EAA0L,KAAI,GAA9L,EAAkM,KAAI,GAAtM,EAA0M,KAAI,GAA9M,EAAkN,KAAI,GAAtN,EAA0N,KAAI,GAA9N,EAAkO,KAAI,GAAtO,EAA0O,KAAI,GAA9O,EAAkP,KAAI,GAAtP,EAA0P,KAAI,GAA9P,EAAkQ,KAAI,GAAtQ,EAA0Q,KAAI,GAA9Q,EAAkR,KAAI,GAAtR,EAA0R,KAAI,GAA9R,EAAkS,KAAI,GAAtS,EAA0S,KAAI,GAA9S,EAAkT,KAAI,GAAtT,EAA0T,KAAI,GAA9T,EAAkU,KAAI,GAAtU,EAA0U,KAAI,GAA9U,EAAkV,KAAI,GAAtV,EAA0V,KAAI,GAA9V,EAAkW,KAAI,GAAtW,EAA0W,KAAI,GAA9W,EAAnB;;AAEE,SAAOD,KAAKtB,QAAL,GAAgBxB,WAAhB,GACJgD,OADI,CACI,MADJ,EACY,GADZ,EAC2B;AAD3B,GAEJA,OAFI,CAEI,IAFJ,EAES,UAACC,MAAD,EAASC,KAAT,EAAgBC,GAAhB;AAAA,WAAwBJ,aAAaE,MAAb,KAAwBA,MAAhD;AAAA,GAFT,EAEiE;AAFjE,GAGJD,OAHI,CAGI,IAHJ,EAGU,OAHV,EAG2B;AAH3B,GAIJA,OAJI,CAII,WAJJ,EAIiB,EAJjB,EAI2B;AAJ3B,GAKJA,OALI,CAKI,QALJ,EAKc,GALd,EAK2B;AAL3B,GAMJA,OANI,CAMI,KANJ,EAMW,EANX,EAM2B;AAN3B,GAOJA,OAPI,CAOI,KAPJ,EAOW,EAPX,CAAP,CALoC,CAYD;AACtC,E;;;;;;;;;;;;;;;;;;AClBD;;;;AAEA;;;;AAEA;;;;AAEAvJ,mBAAOA,CAAE,0GAAT;;AAEA;IACQC,E,GAAOC,GAAGC,I,CAAVF,E;;AAER;;IACQG,iB,GAAsBF,GAAGG,M,CAAzBD,iB;;;AAER,IAAMuJ,iBAAiB,SAAjBA,cAAiB,CAAUvI,KAAV,EAAkB;;AAEvC,MAAMwD,eAAe,SAAfA,YAAe,CAAE3C,KAAF,EAAa;AAChCb,UAAMwI,aAAN,CAAqB,EAAEhK,SAASqC,MAAMuH,MAAN,CAAavG,KAAxB,EAArB;;AAEA,QAAKhB,MAAMuH,MAAN,CAAavG,KAAb,CAAmBU,MAAnB,GAA4B,CAAjC,EAAqC;AACnC,UAAMlC,MAAM,mBAAZ;AACAA,UAAI4G,QAAJ,CAAcpG,MAAMuH,MAAN,CAAavG,KAA3B,EAAmCtB,IAAnC,CAAyC,UAAU7B,IAAV,EAAiB;AACxDsB,cAAMwI,aAAN,CAAqB,EAAE9J,MAAMA,KAAKd,IAAb,EAArB;AACAoC,cAAMwI,aAAN,CAAqB,EAAExE,kBAAkBtF,KAAKd,IAAL,CAAUoG,gBAA9B,EAArB;AACAhE,cAAMwI,aAAN,CAAqB,EAAExB,YAAYtI,KAAKd,IAAL,CAAU8F,SAAxB,EAArB;AACA1D,cAAMwI,aAAN,CAAqB,EAAElH,SAAS5C,KAAKd,IAAL,CAAU6K,mBAAV,CAA8BC,IAA9B,KAAuC,GAAlD,EAArB;AACA1I,cAAMwI,aAAN,CAAqB,EAAEG,oBAAoBjK,KAAKd,IAAL,CAAUiJ,aAAV,CAAwB,kCAAxB,CAAtB,EAArB;AACD,OAND;AAOD;AACF,GAbD;;AAeA,MAAM5C,sBAAsB,SAAtBA,mBAAsB,CAAEpC,KAAF,EAAa;AACvC7B,UAAMwI,aAAN,CAAqB,EAAExE,kBAAkBnC,KAApB,EAArB;AACD,GAFD;;AAIA,MAAMR,wBAAwB,SAAxBA,qBAAwB,CAAER,KAAF,EAAa;AACzCb,UAAMwI,aAAN,CAAqB,EAAEI,kBAAkB,CAAC,CAAE/H,MAAMuH,MAAN,CAAaS,OAApC,EAArB;AACD,GAFD;;AAIA,MAAM9H,eAAe,SAAfA,YAAe,CAAEF,KAAF,EAAa;AAChCb,UAAMwI,aAAN,CAAqB,EAAE1H,QAAQ,CAAC,CAAED,MAAMuH,MAAN,CAAaS,OAA1B,EAArB;AACD,GAFD;;AAIA,MAAM3H,kBAAkB,SAAlBA,eAAkB,CAAEL,KAAF,EAAa;AACnCb,UAAMwI,aAAN,CAAqB,EAAEM,YAAY,CAAC,CAAEjI,MAAMuH,MAAN,CAAaS,OAA9B,EAArB;AACD,GAFD;;AAIA,MAAMhF,kBAAkB,SAAlBA,eAAkB,CAAEhC,KAAF,EAAa;AACnC7B,UAAMwI,aAAN,CAAqB,EAAExB,YAAYnF,KAAd,EAArB;AACD,GAFD;;AAIA,MAAML,eAAe,SAAfA,YAAe,CAAEX,KAAF,EAAa;AAChCb,UAAMwI,aAAN,CAAqB,EAAElH,SAAS,CAAC,CAAET,MAAMuH,MAAN,CAAaS,OAA3B,EAArB;AACD,GAFD;;AAIA;AACA,MAAMjI,0BAA0B,SAA1BA,uBAA0B,CAAEiI,OAAF,EAAe;AAC7C7I,UAAMwI,aAAN,CAAqB,EAAE/G,WAAWoH,OAAb,EAArB;AACD,GAFD;;AAIA,MAAMnH,kBAAkB,SAAlBA,eAAkB,CAAEb,KAAF,EAAa;AACnCD,4BAAyB,CAAC,CAAEC,MAAMuH,MAAN,CAAaS,OAAzC;AACD,GAFD;;AAIA,MAAM3G,uBAAuB,SAAvBA,oBAAuB,CAAEL,KAAF,EAAa;AACxC7B,UAAMwI,aAAN,CAAqB,EAAExG,iBAAiBH,KAAnB,EAArB;AACD,GAFD;;AAIA,MAAMW,sBAAsB,SAAtBA,mBAAsB,CAAEX,KAAF,EAAa;AACvC7B,UAAMwI,aAAN,CAAqB,EAAErG,gBAAgBN,KAAlB,EAArB;AACD,GAFD;;AAIA,MAAME,sBAAsB,SAAtBA,mBAAsB,CAAEF,KAAF,EAAa;AACvC7B,UAAMwI,aAAN,CAAqB,EAAE7G,gBAAgBE,KAAlB,EAArB;AACD,GAFD;;AAIA,MAAMkB,sBAAsB,SAAtBA,mBAAsB,CAAElB,KAAF,EAAa;AACvC7B,UAAMwI,aAAN,CAAqB,EAAE3F,gBAAgBhB,KAAlB,EAArB;AACD,GAFD;;AAIA,MAAMqB,gCAAgC,SAAhCA,6BAAgC,CAAErB,KAAF,EAAa;AACjD7B,UAAMwI,aAAN,CAAqB,EAAExF,2BAA2BnB,KAA7B,EAArB;AACD,GAFD;;AAIA,MAAMwB,iCAAiC,SAAjCA,8BAAiC,CAAExB,KAAF,EAAa;AAClD7B,UAAMwI,aAAN,CAAqB,EAAErF,4BAA4BtB,KAA9B,EAArB;AACD,GAFD;;AAIA,MAAMkF,yBAAyB,SAAzBA,sBAAyB,CAAElF,KAAF,EAAa;AAC1C7B,UAAMwI,aAAN,CAAqB,EAAEG,oBAAoB9G,KAAtB,EAArB;AACD,GAFD;;AAIA,SACE;AACE,yCAAY7B,MAAMqH,SAAlB,CADF;AAEE,kBAAe7D,YAFjB;AAGE,YAASxD,MAAM+I,UAAN,CAAiBvK,OAH5B;AAIE,cAAWwB,MAAM+I,UAAN,CAAiBrK,IAJ9B;AAKE,yBAAsBuF,mBALxB;AAME,sBAAmBjE,MAAM+I,UAAN,CAAiB/E,gBANtC;AAOE,qBAAkBhE,MAAM+I,UAAN,CAAiBH,gBAPrC;AAQE,2BAAwBvH,qBAR1B;AASE,WAAQ,CAAC,CAAErB,MAAMgJ,UATnB;AAUE,YAAShJ,MAAM+I,UAAN,CAAiBjI,MAV5B;AAWE,kBAAeC,YAXjB;AAYE,eAAYf,MAAM+I,UAAN,CAAiB/B,UAZ/B;AAaE,qBAAkBnD,eAbpB;AAcE,eAAY7D,MAAM+I,UAAN,CAAiBD,UAd/B;AAeE,qBAAkB5H,eAfpB;AAgBE,YAASlB,MAAM+I,UAAN,CAAiBzH,OAhB5B;AAiBE,kBAAeE,YAjBjB;AAkBE,6BAA0BZ,uBAlB5B;AAmBE,eAAYZ,MAAM+I,UAAN,CAAiBtH,SAnB/B;AAoBE,qBAAkBC,eApBpB;AAqBE,oBAAiB1B,MAAM+I,UAAN,CAAiB/G,eArBpC;AAsBE,0BAAuBE,oBAtBzB;AAuBE,mBAAgBlC,MAAM+I,UAAN,CAAiB5G,cAvBnC;AAwBE,yBAAsBK,mBAxBxB;AAyBE,mBAAgBxC,MAAM+I,UAAN,CAAiBpH,cAzBnC;AA0BE,yBAAsBI,mBA1BxB;AA2BE,mBAAgB/B,MAAM+I,UAAN,CAAiBlG,cA3BnC;AA4BE,yBAAsBE,mBA5BxB;AA6BE,6BAA0B/C,MAAM+I,UAAN,CAAiB/F,yBA7B7C;AA8BE,mCAAgCE,6BA9BlC;AA+BE,8BAA2BlD,MAAM+I,UAAN,CAAiB5F,0BA/B9C;AAgCE,oCAAiCE,8BAhCnC;AAiCE,sBAAmBrD,MAAM+I,UAAN,CAAiBJ,kBAjCtC;AAkCE,4BAAyB5B;AAlC3B,IADF;AAuCD,CArHD;;AAuHA,IAAMkC,iBAAiB,SAAjBA,cAAiB,CAAUjJ,KAAV,EAAkB;AACvC,SAAO,IAAP;AACD,CAFD;;AAIA,IAAMkJ,WAAW;AACfC,SAAYtK,GAAI,0BAAJ,CADG;AAEfuK,YAAY,QAFG,EAEO;AACtBC,QAAY,WAHG;AAIfC,YAAY,CAAC,WAAD,EAAc,0BAAd,EAA0C,OAA1C,CAJG;AAKfP,cAAa;AACXvK,aAAS;AACP8F,YAAM,QADC;AAEPW,eAAS;AAFF,KADE;AAKXvG,UAAM;AACJ4F,YAAM;AADF,KALK;AAQXN,sBAAkB;AAChBM,YAAM,QADU;AAEhBW,eAAS;AAFO,KARP;AAYX2D,sBAAkB;AAChBtE,YAAM,SADU;AAEhBW,eAAS;AAFO,KAZP;AAgBXnE,YAAQ;AACNwD,YAAM,SADA;AAENW,eAAS;AAFH,KAhBG;AAoBX6D,gBAAY;AACVxE,YAAM,SADI;AAEVW,eAAS;AAFC,KApBD;AAwBX+B,gBAAY;AACV1C,YAAM,QADI;AAEVW,eAAS;AAFC,KAxBD;AA4BX3D,aAAS;AACPgD,YAAM,SADC;AAEPW,eAAS;AAFF,KA5BE;AAgCXxD,eAAW;AACT6C,YAAM,SADG;AAETW,eAAS;AAFA,KAhCA;AAoCXjD,qBAAiB;AACfsC,YAAM,QADS;AAEfW,eAAS;AAFM,KApCN;AAwCX9C,oBAAgB;AACdmC,YAAM,QADQ;AAEdW,eAAS;AAFK,KAxCL;AA4CXtD,oBAAgB;AACd2C,YAAM,QADQ;AAEdW,eAAS;AAFK,KA5CL;AAgDXpC,oBAAgB;AACdyB,YAAM,QADQ;AAEdW,eAAS;AAFK,KAhDL;AAoDXjC,+BAA2B;AACzBsB,YAAM,QADmB;AAEzBW,eAAS;AAFgB,KApDhB;AAwDX9B,gCAA4B;AAC1BmB,YAAM,QADoB;AAE1BW,eAAS;AAFiB,KAxDjB;AA4DX0D,wBAAoB;AAClBrE,YAAM,QADY;AAElBW,eAAS;AAFS;AA5DT,GALE;AAsEfsE,QAAMhB,cAtES;AAuEfiB,QAAMP;AAvES,CAAjB;;AA0EA,IAAMQ,iBAAiBzK;;AAErB;AACAjB,iBAAiB2L,eAAjB,GAAmC3L,iBAAiB4L,UAH/B;;AAKrB;AACAT,QANqB,CAAvB,C;;;;;;;;;;;;AClNA,cAAc,mBAAO,CAAC,wOAA+G;;AAErI,4CAA4C,QAAS;;AAErD;AACA;;;;AAIA,eAAe;;AAEf;AACA;;AAEA,aAAa,mBAAO,CAAC,sGAAmD;;AAExE;;AAEA,GAAG,KAAU,EAAE,E;;;;;;;;;;;;;;ACnBf,2H;;;;;;;;;;;;;;;;ACAA;;;;;AAKA;;AAEC,aAAY;AACZ;;AAEA,KAAIU,SAAS,GAAGC,cAAhB;;AAEA,UAASC,UAAT,GAAuB;AACtB,MAAInE,UAAU,EAAd;;AAEA,OAAK,IAAIoE,IAAI,CAAb,EAAgBA,IAAI9J,UAAUsC,MAA9B,EAAsCwH,GAAtC,EAA2C;AAC1C,OAAIC,MAAM/J,UAAU8J,CAAV,CAAV;AACA,OAAI,CAACC,GAAL,EAAU;;AAEV,OAAIC,iBAAiBD,GAAjB,yCAAiBA,GAAjB,CAAJ;;AAEA,OAAIC,YAAY,QAAZ,IAAwBA,YAAY,QAAxC,EAAkD;AACjDtE,YAAQuE,IAAR,CAAaF,GAAb;AACA,IAFD,MAEO,IAAIG,MAAMC,OAAN,CAAcJ,GAAd,KAAsBA,IAAIzH,MAA9B,EAAsC;AAC5C,QAAI8H,QAAQP,WAAWQ,KAAX,CAAiB,IAAjB,EAAuBN,GAAvB,CAAZ;AACA,QAAIK,KAAJ,EAAW;AACV1E,aAAQuE,IAAR,CAAaG,KAAb;AACA;AACD,IALM,MAKA,IAAIJ,YAAY,QAAhB,EAA0B;AAChC,SAAK,IAAIrH,GAAT,IAAgBoH,GAAhB,EAAqB;AACpB,SAAIJ,OAAOW,IAAP,CAAYP,GAAZ,EAAiBpH,GAAjB,KAAyBoH,IAAIpH,GAAJ,CAA7B,EAAuC;AACtC+C,cAAQuE,IAAR,CAAatH,GAAb;AACA;AACD;AACD;AACD;;AAED,SAAO+C,QAAQ6E,IAAR,CAAa,GAAb,CAAP;AACA;;AAED,KAAI,OAAOC,MAAP,KAAkB,WAAlB,IAAiCA,OAAOC,OAA5C,EAAqD;AACpDZ,aAAW7E,OAAX,GAAqB6E,UAArB;AACAW,SAAOC,OAAP,GAAiBZ,UAAjB;AACA,EAHD,MAGO,IAAI,eAAkB,UAAlB,IAAgC,QAAOa,gGAAP,MAAsB,QAAtD,IAAkEA,gGAAtE,EAAkF;AACxF;AACAA,mCAAqB,EAArB,mCAAyB,YAAY;AACpC,UAAOb,UAAP;AACA,GAFD;AAAA;AAGA,EALM,MAKA;AACNnM,SAAOmM,UAAP,GAAoBA,UAApB;AACA;AACD,CA5CA,GAAD,C;;;;;;;;;;;ACPA,2BAA2B,mBAAO,CAAC,gGAA+C;AAClF;;;AAGA;AACA,cAAc,QAAS,qGAAqG,qBAAqB,uBAAuB,EAAE,4DAA4D,iBAAiB,EAAE;;AAEzP;;;;;;;;;;;;;;;ACPA;;;;AAIA;AACAW,OAAOC,OAAP,GAAiB,UAASE,YAAT,EAAuB;AACvC,KAAIC,OAAO,EAAX;;AAEA;AACAA,MAAKlE,QAAL,GAAgB,SAASA,QAAT,GAAoB;AACnC,SAAO,KAAKhE,GAAL,CAAS,UAAUmI,IAAV,EAAgB;AAC/B,OAAIC,UAAUC,uBAAuBF,IAAvB,EAA6BF,YAA7B,CAAd;AACA,OAAGE,KAAK,CAAL,CAAH,EAAY;AACX,WAAO,YAAYA,KAAK,CAAL,CAAZ,GAAsB,GAAtB,GAA4BC,OAA5B,GAAsC,GAA7C;AACA,IAFD,MAEO;AACN,WAAOA,OAAP;AACA;AACD,GAPM,EAOJP,IAPI,CAOC,EAPD,CAAP;AAQA,EATD;;AAWA;AACAK,MAAKd,CAAL,GAAS,UAASkB,OAAT,EAAkBC,UAAlB,EAA8B;AACtC,MAAG,OAAOD,OAAP,KAAmB,QAAtB,EACCA,UAAU,CAAC,CAAC,IAAD,EAAOA,OAAP,EAAgB,EAAhB,CAAD,CAAV;AACD,MAAIE,yBAAyB,EAA7B;AACA,OAAI,IAAIpB,IAAI,CAAZ,EAAeA,IAAI,KAAKxH,MAAxB,EAAgCwH,GAAhC,EAAqC;AACpC,OAAItG,KAAK,KAAKsG,CAAL,EAAQ,CAAR,CAAT;AACA,OAAG,OAAOtG,EAAP,KAAc,QAAjB,EACC0H,uBAAuB1H,EAAvB,IAA6B,IAA7B;AACD;AACD,OAAIsG,IAAI,CAAR,EAAWA,IAAIkB,QAAQ1I,MAAvB,EAA+BwH,GAA/B,EAAoC;AACnC,OAAIe,OAAOG,QAAQlB,CAAR,CAAX;AACA;AACA;AACA;AACA;AACA,OAAG,OAAOe,KAAK,CAAL,CAAP,KAAmB,QAAnB,IAA+B,CAACK,uBAAuBL,KAAK,CAAL,CAAvB,CAAnC,EAAoE;AACnE,QAAGI,cAAc,CAACJ,KAAK,CAAL,CAAlB,EAA2B;AAC1BA,UAAK,CAAL,IAAUI,UAAV;AACA,KAFD,MAEO,IAAGA,UAAH,EAAe;AACrBJ,UAAK,CAAL,IAAU,MAAMA,KAAK,CAAL,CAAN,GAAgB,SAAhB,GAA4BI,UAA5B,GAAyC,GAAnD;AACA;AACDL,SAAKX,IAAL,CAAUY,IAAV;AACA;AACD;AACD,EAxBD;AAyBA,QAAOD,IAAP;AACA,CA1CD;;AA4CA,SAASG,sBAAT,CAAgCF,IAAhC,EAAsCF,YAAtC,EAAoD;AACnD,KAAIG,UAAUD,KAAK,CAAL,KAAW,EAAzB;AACA,KAAIM,aAAaN,KAAK,CAAL,CAAjB;AACA,KAAI,CAACM,UAAL,EAAiB;AAChB,SAAOL,OAAP;AACA;;AAED,KAAIH,gBAAgB,OAAOS,IAAP,KAAgB,UAApC,EAAgD;AAC/C,MAAIC,gBAAgBC,UAAUH,UAAV,CAApB;AACA,MAAII,aAAaJ,WAAWK,OAAX,CAAmB9I,GAAnB,CAAuB,UAAU+I,MAAV,EAAkB;AACzD,UAAO,mBAAmBN,WAAWO,UAA9B,GAA2CD,MAA3C,GAAoD,KAA3D;AACA,GAFgB,CAAjB;;AAIA,SAAO,CAACX,OAAD,EAAUa,MAAV,CAAiBJ,UAAjB,EAA6BI,MAA7B,CAAoC,CAACN,aAAD,CAApC,EAAqDd,IAArD,CAA0D,IAA1D,CAAP;AACA;;AAED,QAAO,CAACO,OAAD,EAAUP,IAAV,CAAe,IAAf,CAAP;AACA;;AAED;AACA,SAASe,SAAT,CAAmBM,SAAnB,EAA8B;AAC7B;AACA,KAAIC,SAAST,KAAKU,SAASC,mBAAmBrH,KAAKsH,SAAL,CAAeJ,SAAf,CAAnB,CAAT,CAAL,CAAb;AACA,KAAIjO,OAAO,iEAAiEkO,MAA5E;;AAEA,QAAO,SAASlO,IAAT,GAAgB,KAAvB;AACA,C;;;;;;;;;;;;AC3ED;;;;;;AAMa;AACb;;AACA,IAAIsO,wBAAwBzJ,OAAOyJ,qBAAnC;AACA,IAAIrC,iBAAiBpH,OAAO0J,SAAP,CAAiBtC,cAAtC;AACA,IAAIuC,mBAAmB3J,OAAO0J,SAAP,CAAiBE,oBAAxC;;AAEA,SAASC,QAAT,CAAkBC,GAAlB,EAAuB;AACtB,KAAIA,QAAQ,IAAR,IAAgBA,QAAQC,SAA5B,EAAuC;AACtC,QAAM,IAAIC,SAAJ,CAAc,uDAAd,CAAN;AACA;;AAED,QAAOhK,OAAO8J,GAAP,CAAP;AACA;;AAED,SAASG,eAAT,GAA2B;AAC1B,KAAI;AACH,MAAI,CAACjK,OAAOkK,MAAZ,EAAoB;AACnB,UAAO,KAAP;AACA;;AAED;;AAEA;AACA,MAAIC,QAAQ,IAAIC,MAAJ,CAAW,KAAX,CAAZ,CARG,CAQ6B;AAChCD,QAAM,CAAN,IAAW,IAAX;AACA,MAAInK,OAAOqK,mBAAP,CAA2BF,KAA3B,EAAkC,CAAlC,MAAyC,GAA7C,EAAkD;AACjD,UAAO,KAAP;AACA;;AAED;AACA,MAAIG,QAAQ,EAAZ;AACA,OAAK,IAAIhD,IAAI,CAAb,EAAgBA,IAAI,EAApB,EAAwBA,GAAxB,EAA6B;AAC5BgD,SAAM,MAAMF,OAAOG,YAAP,CAAoBjD,CAApB,CAAZ,IAAsCA,CAAtC;AACA;AACD,MAAIkD,SAASxK,OAAOqK,mBAAP,CAA2BC,KAA3B,EAAkCpK,GAAlC,CAAsC,UAAUuK,CAAV,EAAa;AAC/D,UAAOH,MAAMG,CAAN,CAAP;AACA,GAFY,CAAb;AAGA,MAAID,OAAOzC,IAAP,CAAY,EAAZ,MAAoB,YAAxB,EAAsC;AACrC,UAAO,KAAP;AACA;;AAED;AACA,MAAI2C,QAAQ,EAAZ;AACA,yBAAuBC,KAAvB,CAA6B,EAA7B,EAAiCC,OAAjC,CAAyC,UAAUC,MAAV,EAAkB;AAC1DH,SAAMG,MAAN,IAAgBA,MAAhB;AACA,GAFD;AAGA,MAAI7K,OAAOC,IAAP,CAAYD,OAAOkK,MAAP,CAAc,EAAd,EAAkBQ,KAAlB,CAAZ,EAAsC3C,IAAtC,CAA2C,EAA3C,MACF,sBADF,EAC0B;AACzB,UAAO,KAAP;AACA;;AAED,SAAO,IAAP;AACA,EArCD,CAqCE,OAAO+C,GAAP,EAAY;AACb;AACA,SAAO,KAAP;AACA;AACD;;AAED9C,OAAOC,OAAP,GAAiBgC,oBAAoBjK,OAAOkK,MAA3B,GAAoC,UAAUvE,MAAV,EAAkBsD,MAAlB,EAA0B;AAC9E,KAAI8B,IAAJ;AACA,KAAIC,KAAKnB,SAASlE,MAAT,CAAT;AACA,KAAIsF,OAAJ;;AAEA,MAAK,IAAIC,IAAI,CAAb,EAAgBA,IAAI1N,UAAUsC,MAA9B,EAAsCoL,GAAtC,EAA2C;AAC1CH,SAAO/K,OAAOxC,UAAU0N,CAAV,CAAP,CAAP;;AAEA,OAAK,IAAI/K,GAAT,IAAgB4K,IAAhB,EAAsB;AACrB,OAAI3D,eAAeU,IAAf,CAAoBiD,IAApB,EAA0B5K,GAA1B,CAAJ,EAAoC;AACnC6K,OAAG7K,GAAH,IAAU4K,KAAK5K,GAAL,CAAV;AACA;AACD;;AAED,MAAIsJ,qBAAJ,EAA2B;AAC1BwB,aAAUxB,sBAAsBsB,IAAtB,CAAV;AACA,QAAK,IAAIzD,IAAI,CAAb,EAAgBA,IAAI2D,QAAQnL,MAA5B,EAAoCwH,GAApC,EAAyC;AACxC,QAAIqC,iBAAiB7B,IAAjB,CAAsBiD,IAAtB,EAA4BE,QAAQ3D,CAAR,CAA5B,CAAJ,EAA6C;AAC5C0D,QAAGC,QAAQ3D,CAAR,CAAH,IAAiByD,KAAKE,QAAQ3D,CAAR,CAAL,CAAjB;AACA;AACD;AACD;AACD;;AAED,QAAO0D,EAAP;AACA,CAzBD,C;;;;;;;;;;;;AChEA;;;;;;;AAOa;;;;AAEb,IAAIG,eAAe,wBAAW,CAAE,CAAhC;;AAEA,IAAIC,IAAJ,EAA2C;AACzC,MAAIC,uBAAuBlP,mBAAOA,CAAC,yFAAR,CAA3B;AACA,MAAImP,qBAAqB,EAAzB;;AAEAH,iBAAe,sBAAS3F,IAAT,EAAe;AAC5B,QAAI+F,UAAU,cAAc/F,IAA5B;AACA,QAAI,OAAOgG,OAAP,KAAmB,WAAvB,EAAoC;AAClCA,cAAQC,KAAR,CAAcF,OAAd;AACD;AACD,QAAI;AACF;AACA;AACA;AACA,YAAM,IAAIG,KAAJ,CAAUH,OAAV,CAAN;AACD,KALD,CAKE,OAAOI,CAAP,EAAU,CAAE;AACf,GAXD;AAYD;;AAED;;;;;;;;;;;AAWA,SAASC,cAAT,CAAwBC,SAAxB,EAAmCC,MAAnC,EAA2CC,QAA3C,EAAqDC,aAArD,EAAoEC,QAApE,EAA8E;AAC5E,MAAIb,IAAJ,EAA2C;AACzC,SAAK,IAAIc,YAAT,IAAyBL,SAAzB,EAAoC;AAClC,UAAIA,UAAUzE,cAAV,CAAyB8E,YAAzB,CAAJ,EAA4C;AAC1C,YAAIT,KAAJ;AACA;AACA;AACA;AACA,YAAI;AACF;AACA;AACA,cAAI,OAAOI,UAAUK,YAAV,CAAP,KAAmC,UAAvC,EAAmD;AACjD,gBAAIpB,MAAMY,MACR,CAACM,iBAAiB,aAAlB,IAAmC,IAAnC,GAA0CD,QAA1C,GAAqD,SAArD,GAAiEG,YAAjE,GAAgF,gBAAhF,GACA,8EADA,WACwFL,UAAUK,YAAV,CADxF,IACkH,IAF1G,CAAV;AAIApB,gBAAIqB,IAAJ,GAAW,qBAAX;AACA,kBAAMrB,GAAN;AACD;AACDW,kBAAQI,UAAUK,YAAV,EAAwBJ,MAAxB,EAAgCI,YAAhC,EAA8CF,aAA9C,EAA6DD,QAA7D,EAAuE,IAAvE,EAA6EV,oBAA7E,CAAR;AACD,SAZD,CAYE,OAAOe,EAAP,EAAW;AACXX,kBAAQW,EAAR;AACD;AACD,YAAIX,SAAS,EAAEA,iBAAiBC,KAAnB,CAAb,EAAwC;AACtCP,uBACE,CAACa,iBAAiB,aAAlB,IAAmC,0BAAnC,GACAD,QADA,GACW,IADX,GACkBG,YADlB,GACiC,iCADjC,GAEA,2DAFA,WAEqET,KAFrE,yCAEqEA,KAFrE,KAE6E,IAF7E,GAGA,iEAHA,GAIA,gEAJA,GAKA,iCANF;AASD;AACD,YAAIA,iBAAiBC,KAAjB,IAA0B,EAAED,MAAMF,OAAN,IAAiBD,kBAAnB,CAA9B,EAAsE;AACpE;AACA;AACAA,6BAAmBG,MAAMF,OAAzB,IAAoC,IAApC;;AAEA,cAAIc,QAAQJ,WAAWA,UAAX,GAAwB,EAApC;;AAEAd,uBACE,YAAYY,QAAZ,GAAuB,SAAvB,GAAmCN,MAAMF,OAAzC,IAAoDc,SAAS,IAAT,GAAgBA,KAAhB,GAAwB,EAA5E,CADF;AAGD;AACF;AACF;AACF;AACF;;AAEDrE,OAAOC,OAAP,GAAiB2D,cAAjB,C;;;;;;;;;;;;AC1FA;;;;;;;AAOa;;AAEb,IAAIP,uBAAuB,8CAA3B;;AAEArD,OAAOC,OAAP,GAAiBoD,oBAAjB,C;;;;;;;;;;;;;;;;ACXA,CAAC,UAASiB,CAAT,EAAWC,CAAX,EAAa;AAAC,4CAAiBtE,OAAjB,MAA0B,0CAAiBD,MAAjB,EAA1B,GAAkDA,OAAOC,OAAP,GAAesE,EAAEpQ,mBAAOA,CAAC,4CAAR,CAAF,CAAjE,GAAqF,QAAsC+L,iCAAO,CAAC,iEAAD,CAAP,oCAAiBqE,CAAjB;AAAA;AAAA;AAAA,oGAAtC,GAA0D,SAA/I;AAA+O,CAA7P,YAAmQ,UAASD,CAAT,EAAW;AAAC,SAAO,UAASA,CAAT,EAAW;AAAC,aAASC,CAAT,CAAWC,CAAX,EAAa;AAAC,UAAGC,EAAED,CAAF,CAAH,EAAQ,OAAOC,EAAED,CAAF,EAAKvE,OAAZ,CAAoB,IAAIwC,IAAEgC,EAAED,CAAF,IAAK,EAACvE,SAAQ,EAAT,EAAYjH,IAAGwL,CAAf,EAAiBE,QAAO,CAAC,CAAzB,EAAX,CAAuC,OAAOJ,EAAEE,CAAF,EAAK1E,IAAL,CAAU2C,EAAExC,OAAZ,EAAoBwC,CAApB,EAAsBA,EAAExC,OAAxB,EAAgCsE,CAAhC,GAAmC9B,EAAEiC,MAAF,GAAS,CAAC,CAA7C,EAA+CjC,EAAExC,OAAxD;AAAgE,SAAIwE,IAAE,EAAN,CAAS,OAAOF,EAAEI,CAAF,GAAIL,CAAJ,EAAMC,EAAEK,CAAF,GAAIH,CAAV,EAAYF,EAAEM,CAAF,GAAI,EAAhB,EAAmBN,EAAE,CAAF,CAA1B;AAA+B,GAArM,CAAsM,CAAC,UAASD,CAAT,EAAWC,CAAX,EAAaE,CAAb,EAAe;AAAC;AAAa,aAASD,CAAT,CAAWF,CAAX,EAAa;AAAC,aAAOA,KAAGA,EAAEQ,UAAL,GAAgBR,CAAhB,GAAkB,EAAC9J,SAAQ8J,CAAT,EAAzB;AAAqC,cAAS7B,CAAT,CAAW6B,CAAX,EAAaC,CAAb,EAAe;AAAC,UAAG,EAAED,aAAaC,CAAf,CAAH,EAAqB,MAAM,IAAIvC,SAAJ,CAAc,mCAAd,CAAN;AAAyD,cAAS+C,CAAT,CAAWT,CAAX,EAAaC,CAAb,EAAe;AAAC,UAAG,CAACD,CAAJ,EAAM,MAAM,IAAIU,cAAJ,CAAmB,2DAAnB,CAAN,CAAsF,OAAM,CAACT,CAAD,IAAI,oBAAiBA,CAAjB,yCAAiBA,CAAjB,MAAoB,cAAY,OAAOA,CAA3C,GAA6CD,CAA7C,GAA+CC,CAArD;AAAuD,cAASjF,CAAT,CAAWgF,CAAX,EAAaC,CAAb,EAAe;AAAC,UAAG,cAAY,OAAOA,CAAnB,IAAsB,SAAOA,CAAhC,EAAkC,MAAM,IAAIvC,SAAJ,CAAc,qEAAkEuC,CAAlE,yCAAkEA,CAAlE,EAAd,CAAN,CAAyFD,EAAE5C,SAAF,GAAY1J,OAAOiN,MAAP,CAAcV,KAAGA,EAAE7C,SAAnB,EAA6B,EAACwD,aAAY,EAAC9N,OAAMkN,CAAP,EAASa,YAAW,CAAC,CAArB,EAAuBC,UAAS,CAAC,CAAjC,EAAmCC,cAAa,CAAC,CAAjD,EAAb,EAA7B,CAAZ,EAA4Gd,MAAIvM,OAAOsN,cAAP,GAAsBtN,OAAOsN,cAAP,CAAsBhB,CAAtB,EAAwBC,CAAxB,CAAtB,GAAiDD,EAAEiB,SAAF,GAAYhB,CAAjE,CAA5G;AAAgL,YAAOiB,cAAP,CAAsBjB,CAAtB,EAAwB,YAAxB,EAAqC,EAACnN,OAAM,CAAC,CAAR,EAArC,EAAiD,IAAIqO,IAAE,YAAU;AAAC,eAASnB,CAAT,CAAWA,CAAX,EAAaC,CAAb,EAAe;AAAC,aAAI,IAAIE,IAAE,CAAV,EAAYA,IAAEF,EAAEzM,MAAhB,EAAuB2M,GAAvB,EAA2B;AAAC,cAAID,IAAED,EAAEE,CAAF,CAAN,CAAWD,EAAEW,UAAF,GAAaX,EAAEW,UAAF,IAAc,CAAC,CAA5B,EAA8BX,EAAEa,YAAF,GAAe,CAAC,CAA9C,EAAgD,WAAUb,CAAV,KAAcA,EAAEY,QAAF,GAAW,CAAC,CAA1B,CAAhD,EAA6EpN,OAAOwN,cAAP,CAAsBlB,CAAtB,EAAwBE,EAAErM,GAA1B,EAA8BqM,CAA9B,CAA7E;AAA8G;AAAC,cAAO,UAASD,CAAT,EAAWE,CAAX,EAAaD,CAAb,EAAe;AAAC,eAAOC,KAAGH,EAAEC,EAAE7C,SAAJ,EAAc+C,CAAd,CAAH,EAAoBD,KAAGF,EAAEC,CAAF,EAAIC,CAAJ,CAAvB,EAA8BD,CAArC;AAAuC,OAA9D;AAA+D,KAAhP,EAAN;AAAA,QAAyPrB,IAAEuB,EAAE,CAAF,CAA3P;AAAA,QAAgQG,IAAEJ,EAAEtB,CAAF,CAAlQ;AAAA,QAAuQ2B,IAAEJ,EAAE,CAAF,CAAzQ;AAAA,QAA8QiB,IAAElB,EAAEK,CAAF,CAAhR;AAAA,QAAqRc,IAAE,EAAC/I,WAAU8I,EAAElL,OAAF,CAAUoL,MAArB,EAA4BC,oBAAmBH,EAAElL,OAAF,CAAUoL,MAAzD,EAAgEE,WAAUJ,EAAElL,OAAF,CAAUoL,MAApF,EAA2FG,gBAAeL,EAAElL,OAAF,CAAUwL,IAApH,EAAyHC,gBAAeP,EAAElL,OAAF,CAAUwL,IAAlJ,EAAuJE,iBAAgBR,EAAElL,OAAF,CAAUwL,IAAjL,EAAsLG,QAAOT,EAAElL,OAAF,CAAU4L,KAAV,CAAgB,CAAC,QAAD,EAAU,UAAV,CAAhB,CAA7L,EAAoOC,SAAQX,EAAElL,OAAF,CAAUoL,MAAtP,EAA6PU,OAAMZ,EAAElL,OAAF,CAAU4L,KAAV,CAAgB,CAAC,OAAD,EAAS,MAAT,CAAhB,CAAnQ,EAAqSvM,MAAK6L,EAAElL,OAAF,CAAUoL,MAApT,EAA2TW,oBAAmBb,EAAElL,OAAF,CAAUoL,MAAxV,EAA+VY,qBAAoBd,EAAElL,OAAF,CAAUoL,MAA7X,EAAoYa,MAAKf,EAAElL,OAAF,CAAU4L,KAAV,CAAgB,CAAC,WAAD,EAAa,SAAb,EAAuB,QAAvB,CAAhB,CAAzY,EAA2bM,UAAShB,EAAElL,OAAF,CAAUoL,MAA9c,EAAqde,IAAGjB,EAAElL,OAAF,CAAUoL,MAAle,EAAyegB,OAAMlB,EAAElL,OAAF,CAAU4L,KAAV,CAAgB,CAAC,aAAD,EAAe,YAAf,EAA4B,QAA5B,CAAhB,CAA/e,EAAvR;AAAA,QAA8zBS,IAAE,EAACf,WAAU,aAAX,EAAyBlJ,WAAU,aAAnC,EAAiDmJ,gBAAe,KAAK,CAArE,EAAuEF,oBAAmB,gBAA1F,EAA2GI,gBAAe,KAAK,CAA/H,EAAiIM,oBAAmB,gBAApJ,EAAqKL,iBAAgB,KAAK,CAA1L,EAA4LM,qBAAoB,iBAAhN,EAAkOL,QAAO,QAAzO,EAAkPG,OAAM,OAAxP,EAAgQzM,MAAK,OAArQ,EAA6Q4M,MAAK,QAAlR,EAA2RC,UAAS,GAApS,EAAwSC,IAAG,IAA3S,EAAgTC,OAAM,aAAtT,EAAh0B;AAAA,QAAqoCE,IAAE,SAAFA,CAAE,GAAU;AAAC,aAAM,eAAa,OAAO5T,MAApB,IAA4B,eAAa,OAAOA,OAAO6T,UAAvD,IAAmE,cAAY,OAAO7T,OAAO6T,UAAP,CAAkBZ,MAA9G;AAAqH,KAAvwC;AAAA,QAAwwCa,IAAE,KAAK,CAA/wC;AAAA,QAAixCC,IAAE,UAAS3C,CAAT,EAAW;AAAC,eAASC,CAAT,CAAWD,CAAX,EAAa;AAAC7B,UAAE,IAAF,EAAO8B,CAAP,EAAU,IAAIE,IAAEM,EAAE,IAAF,EAAO,CAACR,EAAEgB,SAAF,IAAavN,OAAOkP,cAAP,CAAsB3C,CAAtB,CAAd,EAAwCzE,IAAxC,CAA6C,IAA7C,EAAkDwE,CAAlD,CAAP,CAAN,CAAmE,OAAOG,EAAE0C,iBAAF,GAAoB1C,EAAE0C,iBAAF,CAAoBC,IAApB,CAAyB3C,CAAzB,CAApB,EAAgDA,EAAE4C,KAAF,GAAQ5C,EAAE4C,KAAF,CAAQD,IAAR,CAAa3C,CAAb,CAAxD,EAAwEA,EAAEhP,KAAF,GAAQ,EAACyH,OAAM4J,GAAP,EAAWQ,QAAO,IAAlB,EAAhF,EAAwG7C,EAAEhP,KAAF,CAAQyH,KAAR,IAAe,eAAa,OAAOhK,MAAnC,KAA4C8T,IAAEO,YAAY9C,EAAE+C,iBAAF,CAAoBJ,IAApB,CAAyB3C,CAAzB,CAAZ,EAAwC,GAAxC,CAA9C,CAAxG,EAAoMA,CAA3M;AAA6M,cAAOnF,EAAEiF,CAAF,EAAID,CAAJ,GAAOmB,EAAElB,CAAF,EAAI,CAAC,EAACpM,KAAI,mBAAL,EAAyBf,OAAM,iBAAU;AAAC,eAAK3B,KAAL,CAAWyH,KAAX,IAAkB,KAAKiK,iBAAL,EAAlB;AAA2C,SAArF,EAAD,EAAwF,EAAChP,KAAI,oBAAL,EAA0Bf,OAAM,eAASkN,CAAT,EAAWC,CAAX,EAAa;AAAC,cAAIE,IAAE,KAAKlP,KAAX;AAAA,cAAiBiP,IAAEC,EAAE0B,MAArB;AAAA,cAA4B1D,IAAEgC,EAAEsB,cAAhC,CAA+C,eAAavB,CAAb,IAAgB/B,CAAhB,IAAmB,KAAKhN,KAAL,CAAWyH,KAA9B,IAAqC,CAACqH,EAAErH,KAAxC,IAA+C,KAAKiK,iBAAL,EAA/C;AAAwE,SAArK,EAAxF,EAA+P,EAAChP,KAAI,sBAAL,EAA4Bf,OAAM,iBAAU;AAACqQ,wBAAcT,CAAd;AAAiB,SAA9D,EAA/P,EAA+T,EAAC7O,KAAI,OAAL,EAAaf,OAAM,iBAAU;AAAC,cAAIkN,IAAE,KAAK7O,KAAX;AAAA,cAAiB8O,IAAED,EAAEpH,KAArB;AAAA,cAA2BuH,IAAEH,EAAEgD,MAA/B,CAAsC/C,KAAG,SAAOE,CAAV,IAAasC,WAAWM,KAAX,CAAiB5C,CAAjB,CAAb;AAAiC,SAArG,EAA/T,EAAsa,EAACtM,KAAI,SAAL,EAAef,OAAM,iBAAU;AAAC,cAAIkN,IAAE,KAAK7O,KAAX;AAAA,cAAiB8O,IAAED,EAAEpH,KAArB;AAAA,cAA2BuH,IAAEH,EAAEgD,MAA/B,CAAsC/C,KAAG,SAAOE,CAAV,IAAasC,WAAWW,OAAX,CAAmBjD,CAAnB,CAAb;AAAmC,SAAzG,EAAta,EAAihB,EAACtM,KAAI,mBAAL,EAAyBf,OAAM,iBAAU;AAAC0P,kBAAM,KAAK/Q,QAAL,CAAc,EAACmH,OAAM,CAAC,CAAR,EAAd,GAA0BuK,cAAcT,CAAd,CAAhC;AAAkD,SAA5F,EAAjhB,EAA+mB,EAAC7O,KAAI,mBAAL,EAAyBf,OAAM,iBAAU;AAAC,eAAK3B,KAAL,CAAW6R,MAAX,GAAkBP,WAAWZ,MAAX,CAAkB,KAAK5Q,KAAL,CAAWuQ,SAA7B,EAAuC,EAACO,SAAQ,KAAK9Q,KAAL,CAAW8Q,OAApB,EAA4BsB,UAAS,KAAKpS,KAAL,CAAW0Q,cAAX,GAA0B,KAAK1Q,KAAL,CAAW0Q,cAArC,GAAoD,KAAK,CAA9F,EAAgGK,OAAM,KAAK/Q,KAAL,CAAW+Q,KAAjH,EAAuHzM,MAAK,KAAKtE,KAAL,CAAWsE,IAAvI,EAA4I4M,MAAK,KAAKlR,KAAL,CAAWkR,IAA5J,EAAiKC,UAAS,KAAKnR,KAAL,CAAWmR,QAArL,EAA8LC,IAAG,KAAKpR,KAAL,CAAWoR,EAA5M,EAA+MC,OAAM,KAAKrR,KAAL,CAAWqR,KAAhO,EAAsO,oBAAmB,KAAKrR,KAAL,CAAW2Q,eAAX,GAA2B,KAAK3Q,KAAL,CAAW2Q,eAAtC,GAAsD,KAAK,CAApT,EAAvC,CAAlB,EAAiX,KAAK3Q,KAAL,CAAWwQ,cAAX,IAA2B,KAAKxQ,KAAL,CAAWwQ,cAAX,EAA5Y;AAAwa,SAAld,EAA/mB,EAAmkC,EAAC5N,KAAI,QAAL,EAAcf,OAAM,iBAAU;AAAC,iBAAM,eAAa,KAAK7B,KAAL,CAAW4Q,MAAxB,IAAgC,KAAK5Q,KAAL,CAAWwQ,cAA3C,GAA0DnB,EAAEpK,OAAF,CAAUoN,aAAV,CAAwB,KAAxB,EAA8B,EAAC5O,IAAG,KAAKzD,KAAL,CAAWuQ,SAAf,EAAyB,2BAA0B,KAAKvQ,KAAL,CAAWsQ,kBAA9D,EAAiF,2BAA0B,KAAKtQ,KAAL,CAAWgR,kBAAtH,EAA9B,CAA1D,GAAmO3B,EAAEpK,OAAF,CAAUoN,aAAV,CAAwB,KAAxB,EAA8B,EAAC5O,IAAG,KAAKzD,KAAL,CAAWuQ,SAAf,EAAyBlJ,WAAU,KAAKrH,KAAL,CAAWqH,SAA9C,EAAwD,gBAAe,KAAKrH,KAAL,CAAW8Q,OAAlF,EAA0F,cAAa,KAAK9Q,KAAL,CAAW+Q,KAAlH,EAAwH,aAAY,KAAK/Q,KAAL,CAAWsE,IAA/I,EAAoJ,aAAY,KAAKtE,KAAL,CAAWkR,IAA3K,EAAgL,cAAa,KAAKlR,KAAL,CAAWqR,KAAxM,EAA8M,iBAAgB,KAAKrR,KAAL,CAAWmR,QAAzO,EAA9B,CAAzO;AAA2f,SAA1hB,EAAnkC,CAAJ,CAAP,EAA4mDnC,CAAnnD;AAAqnD,KAAz6D,CAA06DrB,EAAE9N,SAA56D,CAAnxC,CAA0sGmP,EAAE/J,OAAF,GAAUyM,CAAV,EAAYA,EAAEY,SAAF,GAAYlC,CAAxB,EAA0BsB,EAAEa,YAAF,GAAejB,CAAzC,EAA2CvC,EAAErE,OAAF,GAAUsE,EAAE/J,OAAvD;AAA+D,GAAv8H,EAAw8H,UAAS8J,CAAT,EAAWC,CAAX,EAAa;AAAC;AAAa,aAASE,CAAT,CAAWH,CAAX,EAAa;AAAC,aAAO,YAAU;AAAC,eAAOA,CAAP;AAAS,OAA3B;AAA4B,SAAIE,IAAE,SAAFA,CAAE,GAAU,CAAE,CAAlB,CAAmBA,EAAEuD,WAAF,GAActD,CAAd,EAAgBD,EAAEwD,gBAAF,GAAmBvD,EAAE,CAAC,CAAH,CAAnC,EAAyCD,EAAEyD,eAAF,GAAkBxD,EAAE,CAAC,CAAH,CAA3D,EAAiED,EAAE0D,eAAF,GAAkBzD,EAAE,IAAF,CAAnF,EAA2FD,EAAE2D,eAAF,GAAkB,YAAU;AAAC,aAAO,IAAP;AAAY,KAApI,EAAqI3D,EAAE4D,mBAAF,GAAsB,UAAS9D,CAAT,EAAW;AAAC,aAAOA,CAAP;AAAS,KAAhL,EAAiLA,EAAErE,OAAF,GAAUuE,CAA3L;AAA6L,GAA7tI,EAA8tI,UAASF,CAAT,EAAWC,CAAX,EAAaE,CAAb,EAAe;AAAC;AAAa,aAASD,CAAT,CAAWF,CAAX,EAAaC,CAAb,EAAeE,CAAf,EAAiBD,CAAjB,EAAmBO,CAAnB,EAAqBzF,CAArB,EAAuBmG,CAAvB,EAAyBvC,CAAzB,EAA2B;AAAC,UAAGT,EAAE8B,CAAF,GAAK,CAACD,CAAT,EAAW;AAAC,YAAIM,CAAJ,CAAM,IAAG,KAAK,CAAL,KAASL,CAAZ,EAAcK,IAAE,IAAIlB,KAAJ,CAAU,+HAAV,CAAF,CAAd,KAA+J;AAAC,cAAImB,IAAE,CAACJ,CAAD,EAAGD,CAAH,EAAKO,CAAL,EAAOzF,CAAP,EAASmG,CAAT,EAAWvC,CAAX,CAAN;AAAA,cAAoBwC,IAAE,CAAtB,CAAwBd,IAAE,IAAIlB,KAAJ,CAAUa,EAAE7G,OAAF,CAAU,KAAV,EAAgB,YAAU;AAAC,mBAAOmH,EAAEa,GAAF,CAAP;AAAc,WAAzC,CAAV,CAAF,EAAwDd,EAAET,IAAF,GAAO,qBAA/D;AAAqF,eAAMS,EAAEyD,WAAF,GAAc,CAAd,EAAgBzD,CAAtB;AAAwB;AAAC,SAAInC,IAAE,SAAFA,CAAE,CAAS6B,CAAT,EAAW,CAAE,CAAnB,CAAoBA,EAAErE,OAAF,GAAUuE,CAAV;AAAY,GAA/mJ,EAAgnJ,UAASF,CAAT,EAAWC,CAAX,EAAaE,CAAb,EAAe;AAAC;AAAa,QAAID,IAAEC,EAAE,CAAF,CAAN;AAAA,QAAWhC,IAAEgC,EAAE,CAAF,CAAb;AAAA,QAAkBM,IAAEN,EAAE,CAAF,CAApB,CAAyBH,EAAErE,OAAF,GAAU,YAAU;AAAC,eAASqE,CAAT,CAAWA,CAAX,EAAaC,CAAb,EAAeE,CAAf,EAAiBD,CAAjB,EAAmBlF,CAAnB,EAAqBmG,CAArB,EAAuB;AAACA,cAAIV,CAAJ,IAAOtC,EAAE,CAAC,CAAH,EAAK,iLAAL,CAAP;AAA+L,gBAAS8B,CAAT,GAAY;AAAC,eAAOD,CAAP;AAAS,SAAEgE,UAAF,GAAahE,CAAb,CAAe,IAAIG,IAAE,EAAC8D,OAAMjE,CAAP,EAASkE,MAAKlE,CAAd,EAAgB0B,MAAK1B,CAArB,EAAuBmE,QAAOnE,CAA9B,EAAgCoE,QAAOpE,CAAvC,EAAyCsB,QAAOtB,CAAhD,EAAkDqE,QAAOrE,CAAzD,EAA2DsE,KAAItE,CAA/D,EAAiEuE,SAAQtE,CAAzE,EAA2ElP,SAAQiP,CAAnF,EAAqFwE,YAAWvE,CAAhG,EAAkGwE,MAAKzE,CAAvG,EAAyG0E,UAASzE,CAAlH,EAAoH6B,OAAM7B,CAA1H,EAA4H0E,WAAU1E,CAAtI,EAAwI2E,OAAM3E,CAA9I,EAAN,CAAuJ,OAAOE,EAAEb,cAAF,GAAiBY,CAAjB,EAAmBC,EAAE0E,SAAF,GAAY1E,CAA/B,EAAiCA,CAAxC;AAA0C,KAAld;AAAmd,GAAznK,EAA0nK,UAASH,CAAT,EAAWC,CAAX,EAAaE,CAAb,EAAe;AAACH,MAAErE,OAAF,GAAUwE,EAAE,CAAF,GAAV;AAAiB,GAA3pK,EAA4pK,UAASH,CAAT,EAAWC,CAAX,EAAa;AAAC;AAAa,QAAIE,IAAE,8CAAN,CAAqDH,EAAErE,OAAF,GAAUwE,CAAV;AAAY,GAAxvK,EAAyvK,UAASF,CAAT,EAAWE,CAAX,EAAa;AAACF,MAAEtE,OAAF,GAAUqE,CAAV;AAAY,GAAnxK,CAAtM,CAAP;AAAm+K,CAAlvL,CAAD,C;;;;;;;;;;;;;ACAA;;;;;;;;;AASa;;;;AAIb,IAAIlB,IAAJ,EAA2C;AACzC,GAAC,YAAW;AACd;;AAEA,QAAIgG,UAAUjV,mBAAOA,CAAC,4DAAR,CAAd;AACA,QAAIyP,iBAAiBzP,mBAAOA,CAAC,8EAAR,CAArB;;AAEA;;AAEA,QAAIkV,eAAe,QAAnB;;AAEA;AACA;AACA,QAAIC,YAAY,OAAOC,MAAP,KAAkB,UAAlB,IAAgCA,OAAOC,GAAvD;;AAEA,QAAIC,qBAAqBH,YAAYC,OAAOC,GAAP,CAAW,eAAX,CAAZ,GAA0C,MAAnE;AACA,QAAIE,oBAAoBJ,YAAYC,OAAOC,GAAP,CAAW,cAAX,CAAZ,GAAyC,MAAjE;AACA,QAAIG,sBAAsBL,YAAYC,OAAOC,GAAP,CAAW,gBAAX,CAAZ,GAA2C,MAArE;AACA,QAAII,yBAAyBN,YAAYC,OAAOC,GAAP,CAAW,mBAAX,CAAZ,GAA8C,MAA3E;AACA,QAAIK,sBAAsBP,YAAYC,OAAOC,GAAP,CAAW,gBAAX,CAAZ,GAA2C,MAArE;AACA,QAAIM,sBAAsBR,YAAYC,OAAOC,GAAP,CAAW,gBAAX,CAAZ,GAA2C,MAArE;AACA,QAAIO,qBAAqBT,YAAYC,OAAOC,GAAP,CAAW,eAAX,CAAZ,GAA0C,MAAnE;AACA,QAAIQ,6BAA6BV,YAAYC,OAAOC,GAAP,CAAW,uBAAX,CAAZ,GAAkD,MAAnF;AACA,QAAIS,yBAAyBX,YAAYC,OAAOC,GAAP,CAAW,mBAAX,CAAZ,GAA8C,MAA3E;AACA,QAAIU,sBAAsBZ,YAAYC,OAAOC,GAAP,CAAW,gBAAX,CAAZ,GAA2C,MAArE;AACA,QAAIW,kBAAkBb,YAAYC,OAAOC,GAAP,CAAW,YAAX,CAAZ,GAAuC,MAA7D;AACA,QAAIY,kBAAkBd,YAAYC,OAAOC,GAAP,CAAW,YAAX,CAAZ,GAAuC,MAA7D;;AAEA,QAAIa,wBAAwB,OAAOd,MAAP,KAAkB,UAAlB,IAAgCA,OAAOe,QAAnE;AACA,QAAIC,uBAAuB,YAA3B;;AAEA,aAASC,aAAT,CAAuBC,aAAvB,EAAsC;AACpC,UAAIA,kBAAkB,IAAlB,IAA0B,QAAOA,aAAP,yCAAOA,aAAP,OAAyB,QAAvD,EAAiE;AAC/D,eAAO,IAAP;AACD;AACD,UAAIC,gBAAgBL,yBAAyBI,cAAcJ,qBAAd,CAAzB,IAAiEI,cAAcF,oBAAd,CAArF;AACA,UAAI,OAAOG,aAAP,KAAyB,UAA7B,EAAyC;AACvC,eAAOA,aAAP;AACD;AACD,aAAO,IAAP;AACD;;AAED;;;;;;;;;;;AAWA,QAAIC,iBAAiB,0BAAY,CAAE,CAAnC;;AAEA;AACEA,uBAAiB,wBAAUC,MAAV,EAAkB;AACjC,YAAIA,WAAW7I,SAAf,EAA0B;AACxB,gBAAM,IAAI2B,KAAJ,CAAU,8CAAV,CAAN;AACD;AACF,OAJD;AAKD;;AAED,aAASmH,SAAT,CAAmBC,SAAnB,EAA8BF,MAA9B,EAAsCnG,CAAtC,EAAyCwC,CAAzC,EAA4CrC,CAA5C,EAA+Ce,CAA/C,EAAkDrB,CAAlD,EAAqDuC,CAArD,EAAwD;AACtD8D,qBAAeC,MAAf;;AAEA,UAAI,CAACE,SAAL,EAAgB;AACd,YAAIrH,QAAQ,KAAK,CAAjB;AACA,YAAImH,WAAW7I,SAAf,EAA0B;AACxB0B,kBAAQ,IAAIC,KAAJ,CAAU,uEAAuE,6DAAjF,CAAR;AACD,SAFD,MAEO;AACL,cAAIqH,OAAO,CAACtG,CAAD,EAAIwC,CAAJ,EAAOrC,CAAP,EAAUe,CAAV,EAAarB,CAAb,EAAgBuC,CAAhB,CAAX;AACA,cAAImE,WAAW,CAAf;AACAvH,kBAAQ,IAAIC,KAAJ,CAAUkH,OAAOlN,OAAP,CAAe,KAAf,EAAsB,YAAY;AAClD,mBAAOqN,KAAKC,UAAL,CAAP;AACD,WAFiB,CAAV,CAAR;AAGAvH,gBAAMU,IAAN,GAAa,qBAAb;AACD;;AAEDV,cAAM4E,WAAN,GAAoB,CAApB,CAbc,CAaS;AACvB,cAAM5E,KAAN;AACD;AACF;;AAED;AACA;;AAEA;;;;;;;;;;;;;;AAcA,QAAIwH,qBAAqB,8BAAY,CAAE,CAAvC;;AAEA;AACE,UAAI9H,eAAe,SAAfA,YAAe,CAAUyH,MAAV,EAAkB;AACnC,aAAK,IAAIM,OAAO1V,UAAUsC,MAArB,EAA6BiT,OAAOrL,MAAMwL,OAAO,CAAP,GAAWA,OAAO,CAAlB,GAAsB,CAA5B,CAApC,EAAoEC,OAAO,CAAhF,EAAmFA,OAAOD,IAA1F,EAAgGC,MAAhG,EAAwG;AACtGJ,eAAKI,OAAO,CAAZ,IAAiB3V,UAAU2V,IAAV,CAAjB;AACD;;AAED,YAAIH,WAAW,CAAf;AACA,YAAIzH,UAAU,cAAcqH,OAAOlN,OAAP,CAAe,KAAf,EAAsB,YAAY;AAC5D,iBAAOqN,KAAKC,UAAL,CAAP;AACD,SAF2B,CAA5B;AAGA,YAAI,OAAOxH,OAAP,KAAmB,WAAvB,EAAoC;AAClCA,kBAAQ4H,IAAR,CAAa7H,OAAb;AACD;AACD,YAAI;AACF;AACA;AACA;AACA,gBAAM,IAAIG,KAAJ,CAAUH,OAAV,CAAN;AACD,SALD,CAKE,OAAOI,CAAP,EAAU,CAAE;AACf,OAlBD;;AAoBAsH,2BAAqB,4BAAUH,SAAV,EAAqBF,MAArB,EAA6B;AAChD,YAAIA,WAAW7I,SAAf,EAA0B;AACxB,gBAAM,IAAI2B,KAAJ,CAAU,yEAAyE,kBAAnF,CAAN;AACD;AACD,YAAI,CAACoH,SAAL,EAAgB;AACd,eAAK,IAAIO,QAAQ7V,UAAUsC,MAAtB,EAA8BiT,OAAOrL,MAAM2L,QAAQ,CAAR,GAAYA,QAAQ,CAApB,GAAwB,CAA9B,CAArC,EAAuEC,QAAQ,CAApF,EAAuFA,QAAQD,KAA/F,EAAsGC,OAAtG,EAA+G;AAC7GP,iBAAKO,QAAQ,CAAb,IAAkB9V,UAAU8V,KAAV,CAAlB;AACD;;AAEDnI,uBAAatD,KAAb,CAAmBkC,SAAnB,EAA8B,CAAC6I,MAAD,EAASzJ,MAAT,CAAgB4J,IAAhB,CAA9B;AACD;AACF,OAXD;AAYD;;AAED,QAAIQ,uBAAuBN,kBAA3B;;AAEA;;;;;;;AAOA,QAAIO,sBAAsB,+BAAY,CAAE,CAAxC;;AAEA;AACEA,4BAAsB,6BAAUV,SAAV,EAAqBF,MAArB,EAA6B;AACjD,aAAK,IAAIM,OAAO1V,UAAUsC,MAArB,EAA6BiT,OAAOrL,MAAMwL,OAAO,CAAP,GAAWA,OAAO,CAAlB,GAAsB,CAA5B,CAApC,EAAoEC,OAAO,CAAhF,EAAmFA,OAAOD,IAA1F,EAAgGC,MAAhG,EAAwG;AACtGJ,eAAKI,OAAO,CAAZ,IAAiB3V,UAAU2V,IAAV,CAAjB;AACD;;AAED,YAAIP,WAAW7I,SAAf,EAA0B;AACxB,gBAAM,IAAI2B,KAAJ,CAAU,0EAA0E,kBAApF,CAAN;AACD;AACD,YAAIqH,KAAKjT,MAAL,GAAc,CAAlB,EAAqB;AACnB;AACA,gBAAM,IAAI4L,KAAJ,CAAU,+DAAV,CAAN;AACD;AACD,YAAIoH,SAAJ,EAAe;AACb;AACD;AACD,YAAI,OAAOtH,OAAP,KAAmB,WAAvB,EAAoC;AAClC,cAAIiI,YAAYV,KAAK7S,GAAL,CAAS,UAAUmI,IAAV,EAAgB;AACvC,mBAAO,KAAKA,IAAZ;AACD,WAFe,CAAhB;AAAA,cAGIoE,IAAIgH,UAAU,CAAV,CAHR;AAAA,cAIIxE,IAAIwE,UAAU,CAAV,CAJR;AAAA,cAKI7G,IAAI6G,UAAU,CAAV,CALR;AAAA,cAMI9F,IAAI8F,UAAU,CAAV,CANR;AAAA,cAOInH,IAAImH,UAAU,CAAV,CAPR;AAAA,cAQI5E,IAAI4E,UAAU,CAAV,CARR;AAAA,cASIC,IAAID,UAAU,CAAV,CATR;AAAA,cAUI3E,IAAI2E,UAAU,CAAV,CAVR;;AAYA,cAAIlI,UAAU,cAAcqH,MAA5B;;AAEA;AACA;AACA,kBAAQG,KAAKjT,MAAb;AACE,iBAAK,CAAL;AACE0L,sBAAQC,KAAR,CAAcF,OAAd;AACA;AACF,iBAAK,CAAL;AACEC,sBAAQC,KAAR,CAAcF,OAAd,EAAuBkB,CAAvB;AACA;AACF,iBAAK,CAAL;AACEjB,sBAAQC,KAAR,CAAcF,OAAd,EAAuBkB,CAAvB,EAA0BwC,CAA1B;AACA;AACF,iBAAK,CAAL;AACEzD,sBAAQC,KAAR,CAAcF,OAAd,EAAuBkB,CAAvB,EAA0BwC,CAA1B,EAA6BrC,CAA7B;AACA;AACF,iBAAK,CAAL;AACEpB,sBAAQC,KAAR,CAAcF,OAAd,EAAuBkB,CAAvB,EAA0BwC,CAA1B,EAA6BrC,CAA7B,EAAgCe,CAAhC;AACA;AACF,iBAAK,CAAL;AACEnC,sBAAQC,KAAR,CAAcF,OAAd,EAAuBkB,CAAvB,EAA0BwC,CAA1B,EAA6BrC,CAA7B,EAAgCe,CAAhC,EAAmCrB,CAAnC;AACA;AACF,iBAAK,CAAL;AACEd,sBAAQC,KAAR,CAAcF,OAAd,EAAuBkB,CAAvB,EAA0BwC,CAA1B,EAA6BrC,CAA7B,EAAgCe,CAAhC,EAAmCrB,CAAnC,EAAsCuC,CAAtC;AACA;AACF,iBAAK,CAAL;AACErD,sBAAQC,KAAR,CAAcF,OAAd,EAAuBkB,CAAvB,EAA0BwC,CAA1B,EAA6BrC,CAA7B,EAAgCe,CAAhC,EAAmCrB,CAAnC,EAAsCuC,CAAtC,EAAyC6E,CAAzC;AACA;AACF,iBAAK,CAAL;AACElI,sBAAQC,KAAR,CAAcF,OAAd,EAAuBkB,CAAvB,EAA0BwC,CAA1B,EAA6BrC,CAA7B,EAAgCe,CAAhC,EAAmCrB,CAAnC,EAAsCuC,CAAtC,EAAyC6E,CAAzC,EAA4C5E,CAA5C;AACA;AACF;AACE,oBAAM,IAAIpD,KAAJ,CAAU,+DAAV,CAAN;AA7BJ;AA+BD;AACD,YAAI;AACF;AACA;AACA;AACA,cAAIsH,WAAW,CAAf;AACA,cAAIW,WAAW,cAAcf,OAAOlN,OAAP,CAAe,KAAf,EAAsB,YAAY;AAC7D,mBAAOqN,KAAKC,UAAL,CAAP;AACD,WAF4B,CAA7B;AAGA,gBAAM,IAAItH,KAAJ,CAAUiI,QAAV,CAAN;AACD,SATD,CASE,OAAOhI,CAAP,EAAU,CAAE;AACf,OA1ED;AA2ED;;AAED,QAAIiI,wBAAwBJ,mBAA5B;;AAEA,QAAIK,0CAA0C,EAA9C;;AAEA,aAASC,QAAT,CAAkBC,cAAlB,EAAkCC,UAAlC,EAA8C;AAC5C;AACE,YAAIC,eAAeF,eAAe7G,WAAlC;AACA,YAAIlB,gBAAgBiI,iBAAiBA,aAAaC,WAAb,IAA4BD,aAAa9H,IAA1D,KAAmE,YAAvF;AACA,YAAIgI,aAAanI,gBAAgB,GAAhB,GAAsBgI,UAAvC;AACA,YAAIH,wCAAwCM,UAAxC,CAAJ,EAAyD;AACvD;AACD;AACDP,8BAAsB,KAAtB,EAA6B,2DAA2D,oEAA3D,GAAkI,qEAAlI,GAA0M,4DAAvO,EAAqSI,UAArS,EAAiThI,aAAjT;AACA6H,gDAAwCM,UAAxC,IAAsD,IAAtD;AACD;AACF;;AAED;;;AAGA,QAAIC,uBAAuB;AACzB;;;;;;;AAOAC,iBAAW,mBAAUN,cAAV,EAA0B;AACnC,eAAO,KAAP;AACD,OAVwB;;AAYzB;;;;;;;;;;;;;;;AAeAO,0BAAoB,4BAAUP,cAAV,EAA0BpE,QAA1B,EAAoCqE,UAApC,EAAgD;AAClEF,iBAASC,cAAT,EAAyB,aAAzB;AACD,OA7BwB;;AA+BzB;;;;;;;;;;;;;AAaAQ,2BAAqB,6BAAUR,cAAV,EAA0BS,aAA1B,EAAyC7E,QAAzC,EAAmDqE,UAAnD,EAA+D;AAClFF,iBAASC,cAAT,EAAyB,cAAzB;AACD,OA9CwB;;AAgDzB;;;;;;;;;;;;AAYAU,uBAAiB,yBAAUV,cAAV,EAA0BW,YAA1B,EAAwC/E,QAAxC,EAAkDqE,UAAlD,EAA8D;AAC7EF,iBAASC,cAAT,EAAyB,UAAzB;AACD;AA9DwB,KAA3B;;AAiEA,QAAIY,cAAc,EAAlB;AACA;AACE3U,aAAO4U,MAAP,CAAcD,WAAd;AACD;;AAED;;;AAGA,aAASvX,SAAT,CAAmBG,KAAnB,EAA0BsX,OAA1B,EAAmCC,OAAnC,EAA4C;AAC1C,WAAKvX,KAAL,GAAaA,KAAb;AACA,WAAKsX,OAAL,GAAeA,OAAf;AACA;AACA,WAAKE,IAAL,GAAYJ,WAAZ;AACA;AACA;AACA,WAAKG,OAAL,GAAeA,WAAWV,oBAA1B;AACD;;AAEDhX,cAAUsM,SAAV,CAAoBsL,gBAApB,GAAuC,EAAvC;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA5X,cAAUsM,SAAV,CAAoB3L,QAApB,GAA+B,UAAU2W,YAAV,EAAwB/E,QAAxB,EAAkC;AAC/D,QAAE,QAAO+E,YAAP,yCAAOA,YAAP,OAAwB,QAAxB,IAAoC,OAAOA,YAAP,KAAwB,UAA5D,IAA0EA,gBAAgB,IAA5F,IAAoG7B,UAAU,KAAV,EAAiB,uHAAjB,CAApG,GAAgP,KAAK,CAArP;AACA,WAAKiC,OAAL,CAAaL,eAAb,CAA6B,IAA7B,EAAmCC,YAAnC,EAAiD/E,QAAjD,EAA2D,UAA3D;AACD,KAHD;;AAKA;;;;;;;;;;;;;;AAcAvS,cAAUsM,SAAV,CAAoBuL,WAApB,GAAkC,UAAUtF,QAAV,EAAoB;AACpD,WAAKmF,OAAL,CAAaR,kBAAb,CAAgC,IAAhC,EAAsC3E,QAAtC,EAAgD,aAAhD;AACD,KAFD;;AAIA;;;;;AAKA;AACE,UAAIuF,iBAAiB;AACnBb,mBAAW,CAAC,WAAD,EAAc,0EAA0E,+CAAxF,CADQ;AAEnBc,sBAAc,CAAC,cAAD,EAAiB,qDAAqD,iDAAtE;AAFK,OAArB;AAIA,UAAIC,2BAA2B,SAA3BA,wBAA2B,CAAUC,UAAV,EAAsBC,IAAtB,EAA4B;AACzDtV,eAAOwN,cAAP,CAAsBpQ,UAAUsM,SAAhC,EAA2C2L,UAA3C,EAAuD;AACrDE,eAAK,eAAY;AACfhC,iCAAqB,KAArB,EAA4B,6DAA5B,EAA2F+B,KAAK,CAAL,CAA3F,EAAoGA,KAAK,CAAL,CAApG;AACA,mBAAOvL,SAAP;AACD;AAJoD,SAAvD;AAMD,OAPD;AAQA,WAAK,IAAIyL,MAAT,IAAmBN,cAAnB,EAAmC;AACjC,YAAIA,eAAe9N,cAAf,CAA8BoO,MAA9B,CAAJ,EAA2C;AACzCJ,mCAAyBI,MAAzB,EAAiCN,eAAeM,MAAf,CAAjC;AACD;AACF;AACF;;AAED,aAASC,cAAT,GAA0B,CAAE;AAC5BA,mBAAe/L,SAAf,GAA2BtM,UAAUsM,SAArC;;AAEA;;;AAGA,aAASgM,aAAT,CAAuBnY,KAAvB,EAA8BsX,OAA9B,EAAuCC,OAAvC,EAAgD;AAC9C,WAAKvX,KAAL,GAAaA,KAAb;AACA,WAAKsX,OAAL,GAAeA,OAAf;AACA;AACA,WAAKE,IAAL,GAAYJ,WAAZ;AACA,WAAKG,OAAL,GAAeA,WAAWV,oBAA1B;AACD;;AAED,QAAIuB,yBAAyBD,cAAchM,SAAd,GAA0B,IAAI+L,cAAJ,EAAvD;AACAE,2BAAuBzI,WAAvB,GAAqCwI,aAArC;AACA;AACAtE,YAAQuE,sBAAR,EAAgCvY,UAAUsM,SAA1C;AACAiM,2BAAuBC,oBAAvB,GAA8C,IAA9C;;AAEA;AACA,aAASC,SAAT,GAAqB;AACnB,UAAIC,YAAY;AACdC,iBAAS;AADK,OAAhB;AAGA;AACE/V,eAAOgW,IAAP,CAAYF,SAAZ;AACD;AACD,aAAOA,SAAP;AACD;;AAED;;;;;;AAMA,QAAIG,oBAAoB;AACtB;;;;AAIAF,eAAS,IALa;AAMtBG,yBAAmB;AANG,KAAxB;;AASA,QAAIC,kBAAkB,aAAtB;;AAEA,QAAIC,yBAAyB,SAAzBA,sBAAyB,CAAUjK,IAAV,EAAgBlD,MAAhB,EAAwBoN,SAAxB,EAAmC;AAC9D,UAAIC,aAAa,EAAjB;AACA,UAAIrN,MAAJ,EAAY;AACV,YAAIsN,OAAOtN,OAAOuN,QAAlB;AACA,YAAIA,WAAWD,KAAK7Q,OAAL,CAAayQ,eAAb,EAA8B,EAA9B,CAAf;AACA;AACE;AACA;AACA,cAAI,WAAWM,IAAX,CAAgBD,QAAhB,CAAJ,EAA+B;AAC7B,gBAAIE,QAAQH,KAAKG,KAAL,CAAWP,eAAX,CAAZ;AACA,gBAAIO,KAAJ,EAAW;AACT,kBAAIC,kBAAkBD,MAAM,CAAN,CAAtB;AACA,kBAAIC,eAAJ,EAAqB;AACnB,oBAAIC,aAAaD,gBAAgBjR,OAAhB,CAAwByQ,eAAxB,EAAyC,EAAzC,CAAjB;AACAK,2BAAWI,aAAa,GAAb,GAAmBJ,QAA9B;AACD;AACF;AACF;AACF;AACDF,qBAAa,UAAUE,QAAV,GAAqB,GAArB,GAA2BvN,OAAO4N,UAAlC,GAA+C,GAA5D;AACD,OAlBD,MAkBO,IAAIR,SAAJ,EAAe;AACpBC,qBAAa,kBAAkBD,SAAlB,GAA8B,GAA3C;AACD;AACD,aAAO,eAAelK,QAAQ,SAAvB,IAAoCmK,UAA3C;AACD,KAxBD;;AA0BA,QAAIQ,WAAW,CAAf;;AAGA,aAASC,2BAAT,CAAqCC,aAArC,EAAoD;AAClD,aAAOA,cAAcC,OAAd,KAA0BH,QAA1B,GAAqCE,cAAcE,OAAnD,GAA6D,IAApE;AACD;;AAED,aAASC,cAAT,CAAwBC,SAAxB,EAAmCC,SAAnC,EAA8CC,WAA9C,EAA2D;AACzD,UAAIC,eAAeF,UAAUnD,WAAV,IAAyBmD,UAAUlL,IAAnC,IAA2C,EAA9D;AACA,aAAOiL,UAAUlD,WAAV,KAA0BqD,iBAAiB,EAAjB,GAAsBD,cAAc,GAAd,GAAoBC,YAApB,GAAmC,GAAzD,GAA+DD,WAAzF,CAAP;AACD;;AAED,aAASE,gBAAT,CAA0B3V,IAA1B,EAAgC;AAC9B,UAAIA,QAAQ,IAAZ,EAAkB;AAChB;AACA,eAAO,IAAP;AACD;AACD;AACE,YAAI,OAAOA,KAAK4V,GAAZ,KAAoB,QAAxB,EAAkC;AAChC7D,gCAAsB,KAAtB,EAA6B,0DAA0D,sDAAvF;AACD;AACF;AACD,UAAI,OAAO/R,IAAP,KAAgB,UAApB,EAAgC;AAC9B,eAAOA,KAAKqS,WAAL,IAAoBrS,KAAKsK,IAAzB,IAAiC,IAAxC;AACD;AACD,UAAI,OAAOtK,IAAP,KAAgB,QAApB,EAA8B;AAC5B,eAAOA,IAAP;AACD;AACD,cAAQA,IAAR;AACE,aAAKmQ,0BAAL;AACE,iBAAO,gBAAP;AACF,aAAKL,mBAAL;AACE,iBAAO,UAAP;AACF,aAAKD,iBAAL;AACE,iBAAO,QAAP;AACF,aAAKG,mBAAL;AACE,iBAAO,UAAP;AACF,aAAKD,sBAAL;AACE,iBAAO,YAAP;AACF,aAAKM,mBAAL;AACE,iBAAO,UAAP;AAZJ;AAcA,UAAI,QAAOrQ,IAAP,yCAAOA,IAAP,OAAgB,QAApB,EAA8B;AAC5B,gBAAQA,KAAK6V,QAAb;AACE,eAAK3F,kBAAL;AACE,mBAAO,kBAAP;AACF,eAAKD,mBAAL;AACE,mBAAO,kBAAP;AACF,eAAKG,sBAAL;AACE,mBAAOkF,eAAetV,IAAf,EAAqBA,KAAKsM,MAA1B,EAAkC,YAAlC,CAAP;AACF,eAAKgE,eAAL;AACE,mBAAOqF,iBAAiB3V,KAAKA,IAAtB,CAAP;AACF,eAAKuQ,eAAL;AACE;AACE,kBAAIuF,WAAW9V,IAAf;AACA,kBAAI+V,mBAAmBb,4BAA4BY,QAA5B,CAAvB;AACA,kBAAIC,gBAAJ,EAAsB;AACpB,uBAAOJ,iBAAiBI,gBAAjB,CAAP;AACD;AACF;AAhBL;AAkBD;AACD,aAAO,IAAP;AACD;;AAED,QAAIC,yBAAyB,EAA7B;;AAEA,QAAIC,6BAA6B,IAAjC;;AAEA,aAASC,6BAAT,CAAuC1a,OAAvC,EAAgD;AAC9C;AACEya,qCAA6Bza,OAA7B;AACD;AACF;;AAED;AACE;AACAwa,6BAAuBG,eAAvB,GAAyC,IAAzC;;AAEAH,6BAAuBI,gBAAvB,GAA0C,YAAY;AACpD,YAAI5L,QAAQ,EAAZ;;AAEA;AACA,YAAIyL,0BAAJ,EAAgC;AAC9B,cAAI3L,OAAOqL,iBAAiBM,2BAA2BjW,IAA5C,CAAX;AACA,cAAIqW,QAAQJ,2BAA2BK,MAAvC;AACA9L,mBAAS+J,uBAAuBjK,IAAvB,EAA6B2L,2BAA2BM,OAAxD,EAAiEF,SAASV,iBAAiBU,MAAMrW,IAAvB,CAA1E,CAAT;AACD;;AAED;AACA,YAAIwW,OAAOR,uBAAuBG,eAAlC;AACA,YAAIK,IAAJ,EAAU;AACRhM,mBAASgM,UAAU,EAAnB;AACD;;AAED,eAAOhM,KAAP;AACD,OAjBD;AAkBD;;AAED,QAAIiM,uBAAuB;AACzBrC,yBAAmBA,iBADM;AAEzB;AACA/L,cAAQkH;AAHiB,KAA3B;;AAMA;AACEA,cAAQkH,oBAAR,EAA8B;AAC5B;AACAT,gCAAwBA,sBAFI;AAG5B;AACA;AACAU,gCAAwB;AALI,OAA9B;AAOD;;AAED;;;;;;;AAOA,QAAIC,UAAU5E,qBAAd;;AAEA;AACE4E,gBAAU,iBAAU1F,SAAV,EAAqBF,MAArB,EAA6B;AACrC,YAAIE,SAAJ,EAAe;AACb;AACD;AACD,YAAI+E,yBAAyBS,qBAAqBT,sBAAlD;AACA,YAAIxL,QAAQwL,uBAAuBI,gBAAvB,EAAZ;AACA;;AAEA,aAAK,IAAI/E,OAAO1V,UAAUsC,MAArB,EAA6BiT,OAAOrL,MAAMwL,OAAO,CAAP,GAAWA,OAAO,CAAlB,GAAsB,CAA5B,CAApC,EAAoEC,OAAO,CAAhF,EAAmFA,OAAOD,IAA1F,EAAgGC,MAAhG,EAAwG;AACtGJ,eAAKI,OAAO,CAAZ,IAAiB3V,UAAU2V,IAAV,CAAjB;AACD;;AAEDS,8BAAsB/L,KAAtB,CAA4BkC,SAA5B,EAAuC,CAAC,KAAD,EAAQ6I,SAAS,IAAjB,EAAuBzJ,MAAvB,CAA8B4J,IAA9B,EAAoC,CAAC1G,KAAD,CAApC,CAAvC;AACD,OAbD;AAcD;;AAED,QAAIoM,YAAYD,OAAhB;;AAEA,QAAIpR,iBAAiBpH,OAAO0J,SAAP,CAAiBtC,cAAtC;;AAEA,QAAIsR,iBAAiB;AACnBvY,WAAK,IADc;AAEnBwY,WAAK,IAFc;AAGnBC,cAAQ,IAHW;AAInBC,gBAAU;AAJS,KAArB;;AAOA,QAAIC,6BAA6B,KAAK,CAAtC;AACA,QAAIC,6BAA6B,KAAK,CAAtC;;AAEA,aAASC,WAAT,CAAqBC,MAArB,EAA6B;AAC3B;AACE,YAAI7R,eAAeU,IAAf,CAAoBmR,MAApB,EAA4B,KAA5B,CAAJ,EAAwC;AACtC,cAAIC,SAASlZ,OAAOmZ,wBAAP,CAAgCF,MAAhC,EAAwC,KAAxC,EAA+C1D,GAA5D;AACA,cAAI2D,UAAUA,OAAOE,cAArB,EAAqC;AACnC,mBAAO,KAAP;AACD;AACF;AACF;AACD,aAAOH,OAAON,GAAP,KAAe5O,SAAtB;AACD;;AAED,aAASsP,WAAT,CAAqBJ,MAArB,EAA6B;AAC3B;AACE,YAAI7R,eAAeU,IAAf,CAAoBmR,MAApB,EAA4B,KAA5B,CAAJ,EAAwC;AACtC,cAAIC,SAASlZ,OAAOmZ,wBAAP,CAAgCF,MAAhC,EAAwC,KAAxC,EAA+C1D,GAA5D;AACA,cAAI2D,UAAUA,OAAOE,cAArB,EAAqC;AACnC,mBAAO,KAAP;AACD;AACF;AACF;AACD,aAAOH,OAAO9Y,GAAP,KAAe4J,SAAtB;AACD;;AAED,aAASuP,0BAAT,CAAoC/b,KAApC,EAA2C2W,WAA3C,EAAwD;AACtD,UAAIqF,wBAAwB,SAAxBA,qBAAwB,GAAY;AACtC,YAAI,CAACT,0BAAL,EAAiC;AAC/BA,uCAA6B,IAA7B;AACAlF,gCAAsB,KAAtB,EAA6B,8DAA8D,gEAA9D,GAAiI,sEAAjI,GAA0M,2CAAvO,EAAoRM,WAApR;AACD;AACF,OALD;AAMAqF,4BAAsBH,cAAtB,GAAuC,IAAvC;AACApZ,aAAOwN,cAAP,CAAsBjQ,KAAtB,EAA6B,KAA7B,EAAoC;AAClCgY,aAAKgE,qBAD6B;AAElClM,sBAAc;AAFoB,OAApC;AAID;;AAED,aAASmM,0BAAT,CAAoCjc,KAApC,EAA2C2W,WAA3C,EAAwD;AACtD,UAAIuF,wBAAwB,SAAxBA,qBAAwB,GAAY;AACtC,YAAI,CAACV,0BAAL,EAAiC;AAC/BA,uCAA6B,IAA7B;AACAnF,gCAAsB,KAAtB,EAA6B,8DAA8D,gEAA9D,GAAiI,sEAAjI,GAA0M,2CAAvO,EAAoRM,WAApR;AACD;AACF,OALD;AAMAuF,4BAAsBL,cAAtB,GAAuC,IAAvC;AACApZ,aAAOwN,cAAP,CAAsBjQ,KAAtB,EAA6B,KAA7B,EAAoC;AAClCgY,aAAKkE,qBAD6B;AAElCpM,sBAAc;AAFoB,OAApC;AAID;;AAED;;;;;;;;;;;;;;;;;;;;AAoBA,QAAIqM,eAAe,SAAfA,YAAe,CAAU7X,IAAV,EAAgB1B,GAAhB,EAAqBwY,GAArB,EAA0BgB,IAA1B,EAAgC1Q,MAAhC,EAAwCiP,KAAxC,EAA+C3a,KAA/C,EAAsD;AACvE,UAAIF,UAAU;AACZ;AACAqa,kBAAUjG,kBAFE;;AAIZ;AACA5P,cAAMA,IALM;AAMZ1B,aAAKA,GANO;AAOZwY,aAAKA,GAPO;AAQZpb,eAAOA,KARK;;AAUZ;AACA4a,gBAAQD;AAXI,OAAd;;AAcA;AACE;AACA;AACA;AACA;AACA7a,gBAAQuc,MAAR,GAAiB,EAAjB;;AAEA;AACA;AACA;AACA;AACA5Z,eAAOwN,cAAP,CAAsBnQ,QAAQuc,MAA9B,EAAsC,WAAtC,EAAmD;AACjDvM,wBAAc,KADmC;AAEjDF,sBAAY,KAFqC;AAGjDC,oBAAU,IAHuC;AAIjDhO,iBAAO;AAJ0C,SAAnD;AAMA;AACAY,eAAOwN,cAAP,CAAsBnQ,OAAtB,EAA+B,OAA/B,EAAwC;AACtCgQ,wBAAc,KADwB;AAEtCF,sBAAY,KAF0B;AAGtCC,oBAAU,KAH4B;AAItChO,iBAAOua;AAJ+B,SAAxC;AAMA;AACA;AACA3Z,eAAOwN,cAAP,CAAsBnQ,OAAtB,EAA+B,SAA/B,EAA0C;AACxCgQ,wBAAc,KAD0B;AAExCF,sBAAY,KAF4B;AAGxCC,oBAAU,KAH8B;AAIxChO,iBAAO6J;AAJiC,SAA1C;AAMA,YAAIjJ,OAAO4U,MAAX,EAAmB;AACjB5U,iBAAO4U,MAAP,CAAcvX,QAAQE,KAAtB;AACAyC,iBAAO4U,MAAP,CAAcvX,OAAd;AACD;AACF;;AAED,aAAOA,OAAP;AACD,KAtDD;;AAwDA;;;;AAIA,aAASuS,aAAT,CAAuB/N,IAAvB,EAA6BoX,MAA7B,EAAqCY,QAArC,EAA+C;AAC7C,UAAIC,WAAW,KAAK,CAApB;;AAEA;AACA,UAAIvc,QAAQ,EAAZ;;AAEA,UAAI4C,MAAM,IAAV;AACA,UAAIwY,MAAM,IAAV;AACA,UAAIgB,OAAO,IAAX;AACA,UAAI1Q,SAAS,IAAb;;AAEA,UAAIgQ,UAAU,IAAd,EAAoB;AAClB,YAAID,YAAYC,MAAZ,CAAJ,EAAyB;AACvBN,gBAAMM,OAAON,GAAb;AACD;AACD,YAAIU,YAAYJ,MAAZ,CAAJ,EAAyB;AACvB9Y,gBAAM,KAAK8Y,OAAO9Y,GAAlB;AACD;;AAEDwZ,eAAOV,OAAOL,MAAP,KAAkB7O,SAAlB,GAA8B,IAA9B,GAAqCkP,OAAOL,MAAnD;AACA3P,iBAASgQ,OAAOJ,QAAP,KAAoB9O,SAApB,GAAgC,IAAhC,GAAuCkP,OAAOJ,QAAvD;AACA;AACA,aAAKiB,QAAL,IAAiBb,MAAjB,EAAyB;AACvB,cAAI7R,eAAeU,IAAf,CAAoBmR,MAApB,EAA4Ba,QAA5B,KAAyC,CAACpB,eAAetR,cAAf,CAA8B0S,QAA9B,CAA9C,EAAuF;AACrFvc,kBAAMuc,QAAN,IAAkBb,OAAOa,QAAP,CAAlB;AACD;AACF;AACF;;AAED;AACA;AACA,UAAIC,iBAAiBvc,UAAUsC,MAAV,GAAmB,CAAxC;AACA,UAAIia,mBAAmB,CAAvB,EAA0B;AACxBxc,cAAMsc,QAAN,GAAiBA,QAAjB;AACD,OAFD,MAEO,IAAIE,iBAAiB,CAArB,EAAwB;AAC7B,YAAIC,aAAatS,MAAMqS,cAAN,CAAjB;AACA,aAAK,IAAIzS,IAAI,CAAb,EAAgBA,IAAIyS,cAApB,EAAoCzS,GAApC,EAAyC;AACvC0S,qBAAW1S,CAAX,IAAgB9J,UAAU8J,IAAI,CAAd,CAAhB;AACD;AACD;AACE,cAAItH,OAAO4U,MAAX,EAAmB;AACjB5U,mBAAO4U,MAAP,CAAcoF,UAAd;AACD;AACF;AACDzc,cAAMsc,QAAN,GAAiBG,UAAjB;AACD;;AAED;AACA,UAAInY,QAAQA,KAAKiO,YAAjB,EAA+B;AAC7B,YAAIA,eAAejO,KAAKiO,YAAxB;AACA,aAAKgK,QAAL,IAAiBhK,YAAjB,EAA+B;AAC7B,cAAIvS,MAAMuc,QAAN,MAAoB/P,SAAxB,EAAmC;AACjCxM,kBAAMuc,QAAN,IAAkBhK,aAAagK,QAAb,CAAlB;AACD;AACF;AACF;AACD;AACE,YAAI3Z,OAAOwY,GAAX,EAAgB;AACd,cAAIzE,cAAc,OAAOrS,IAAP,KAAgB,UAAhB,GAA6BA,KAAKqS,WAAL,IAAoBrS,KAAKsK,IAAzB,IAAiC,SAA9D,GAA0EtK,IAA5F;AACA,cAAI1B,GAAJ,EAAS;AACPmZ,uCAA2B/b,KAA3B,EAAkC2W,WAAlC;AACD;AACD,cAAIyE,GAAJ,EAAS;AACPa,uCAA2Bjc,KAA3B,EAAkC2W,WAAlC;AACD;AACF;AACF;AACD,aAAOwF,aAAa7X,IAAb,EAAmB1B,GAAnB,EAAwBwY,GAAxB,EAA6BgB,IAA7B,EAAmC1Q,MAAnC,EAA2CgN,kBAAkBF,OAA7D,EAAsExY,KAAtE,CAAP;AACD;;AAED;;;;;AAMA,aAAS0c,kBAAT,CAA4BC,UAA5B,EAAwCC,MAAxC,EAAgD;AAC9C,UAAIC,aAAaV,aAAaQ,WAAWrY,IAAxB,EAA8BsY,MAA9B,EAAsCD,WAAWvB,GAAjD,EAAsDuB,WAAWG,KAAjE,EAAwEH,WAAW9B,OAAnF,EAA4F8B,WAAW/B,MAAvG,EAA+G+B,WAAW3c,KAA1H,CAAjB;;AAEA,aAAO6c,UAAP;AACD;;AAED;;;;AAIA,aAASE,YAAT,CAAsBjd,OAAtB,EAA+B4b,MAA/B,EAAuCY,QAAvC,EAAiD;AAC/C,OAAC,EAAExc,YAAY,IAAZ,IAAoBA,YAAY0M,SAAlC,CAAD,GAAgD8I,UAAU,KAAV,EAAiB,mFAAjB,EAAsGxV,OAAtG,CAAhD,GAAiK,KAAK,CAAtK;;AAEA,UAAIyc,WAAW,KAAK,CAApB;;AAEA;AACA,UAAIvc,QAAQ6T,QAAQ,EAAR,EAAY/T,QAAQE,KAApB,CAAZ;;AAEA;AACA,UAAI4C,MAAM9C,QAAQ8C,GAAlB;AACA,UAAIwY,MAAMtb,QAAQsb,GAAlB;AACA;AACA,UAAIgB,OAAOtc,QAAQgd,KAAnB;AACA;AACA;AACA;AACA,UAAIpR,SAAS5L,QAAQ+a,OAArB;;AAEA;AACA,UAAIF,QAAQ7a,QAAQ8a,MAApB;;AAEA,UAAIc,UAAU,IAAd,EAAoB;AAClB,YAAID,YAAYC,MAAZ,CAAJ,EAAyB;AACvB;AACAN,gBAAMM,OAAON,GAAb;AACAT,kBAAQjC,kBAAkBF,OAA1B;AACD;AACD,YAAIsD,YAAYJ,MAAZ,CAAJ,EAAyB;AACvB9Y,gBAAM,KAAK8Y,OAAO9Y,GAAlB;AACD;;AAED;AACA,YAAI2P,eAAe,KAAK,CAAxB;AACA,YAAIzS,QAAQwE,IAAR,IAAgBxE,QAAQwE,IAAR,CAAaiO,YAAjC,EAA+C;AAC7CA,yBAAezS,QAAQwE,IAAR,CAAaiO,YAA5B;AACD;AACD,aAAKgK,QAAL,IAAiBb,MAAjB,EAAyB;AACvB,cAAI7R,eAAeU,IAAf,CAAoBmR,MAApB,EAA4Ba,QAA5B,KAAyC,CAACpB,eAAetR,cAAf,CAA8B0S,QAA9B,CAA9C,EAAuF;AACrF,gBAAIb,OAAOa,QAAP,MAAqB/P,SAArB,IAAkC+F,iBAAiB/F,SAAvD,EAAkE;AAChE;AACAxM,oBAAMuc,QAAN,IAAkBhK,aAAagK,QAAb,CAAlB;AACD,aAHD,MAGO;AACLvc,oBAAMuc,QAAN,IAAkBb,OAAOa,QAAP,CAAlB;AACD;AACF;AACF;AACF;;AAED;AACA;AACA,UAAIC,iBAAiBvc,UAAUsC,MAAV,GAAmB,CAAxC;AACA,UAAIia,mBAAmB,CAAvB,EAA0B;AACxBxc,cAAMsc,QAAN,GAAiBA,QAAjB;AACD,OAFD,MAEO,IAAIE,iBAAiB,CAArB,EAAwB;AAC7B,YAAIC,aAAatS,MAAMqS,cAAN,CAAjB;AACA,aAAK,IAAIzS,IAAI,CAAb,EAAgBA,IAAIyS,cAApB,EAAoCzS,GAApC,EAAyC;AACvC0S,qBAAW1S,CAAX,IAAgB9J,UAAU8J,IAAI,CAAd,CAAhB;AACD;AACD/J,cAAMsc,QAAN,GAAiBG,UAAjB;AACD;;AAED,aAAON,aAAarc,QAAQwE,IAArB,EAA2B1B,GAA3B,EAAgCwY,GAAhC,EAAqCgB,IAArC,EAA2C1Q,MAA3C,EAAmDiP,KAAnD,EAA0D3a,KAA1D,CAAP;AACD;;AAED;;;;;;;AAOA,aAASgd,cAAT,CAAwB7J,MAAxB,EAAgC;AAC9B,aAAO,QAAOA,MAAP,yCAAOA,MAAP,OAAkB,QAAlB,IAA8BA,WAAW,IAAzC,IAAiDA,OAAOgH,QAAP,KAAoBjG,kBAA5E;AACD;;AAED,QAAI+I,YAAY,GAAhB;AACA,QAAIC,eAAe,GAAnB;;AAEA;;;;;;AAMA,aAASC,MAAT,CAAgBva,GAAhB,EAAqB;AACnB,UAAIwa,cAAc,OAAlB;AACA,UAAIC,gBAAgB;AAClB,aAAK,IADa;AAElB,aAAK;AAFa,OAApB;AAIA,UAAIC,gBAAgB,CAAC,KAAK1a,GAAN,EAAWuF,OAAX,CAAmBiV,WAAnB,EAAgC,UAAUjE,KAAV,EAAiB;AACnE,eAAOkE,cAAclE,KAAd,CAAP;AACD,OAFmB,CAApB;;AAIA,aAAO,MAAMmE,aAAb;AACD;;AAED;;;;;AAKA,QAAIC,mBAAmB,KAAvB;;AAEA,QAAIC,6BAA6B,MAAjC;AACA,aAASC,qBAAT,CAA+BxV,IAA/B,EAAqC;AACnC,aAAO,CAAC,KAAKA,IAAN,EAAYE,OAAZ,CAAoBqV,0BAApB,EAAgD,KAAhD,CAAP;AACD;;AAED,QAAIE,YAAY,EAAhB;AACA,QAAIC,sBAAsB,EAA1B;AACA,aAASC,wBAAT,CAAkCC,SAAlC,EAA6CC,SAA7C,EAAwDC,WAAxD,EAAqEC,UAArE,EAAiF;AAC/E,UAAIL,oBAAoBpb,MAAxB,EAAgC;AAC9B,YAAI0b,kBAAkBN,oBAAoBO,GAApB,EAAtB;AACAD,wBAAgBE,MAAhB,GAAyBN,SAAzB;AACAI,wBAAgBH,SAAhB,GAA4BA,SAA5B;AACAG,wBAAgBxN,IAAhB,GAAuBsN,WAAvB;AACAE,wBAAgB3G,OAAhB,GAA0B0G,UAA1B;AACAC,wBAAgBG,KAAhB,GAAwB,CAAxB;AACA,eAAOH,eAAP;AACD,OARD,MAQO;AACL,eAAO;AACLE,kBAAQN,SADH;AAELC,qBAAWA,SAFN;AAGLrN,gBAAMsN,WAHD;AAILzG,mBAAS0G,UAJJ;AAKLI,iBAAO;AALF,SAAP;AAOD;AACF;;AAED,aAASC,sBAAT,CAAgCJ,eAAhC,EAAiD;AAC/CA,sBAAgBE,MAAhB,GAAyB,IAAzB;AACAF,sBAAgBH,SAAhB,GAA4B,IAA5B;AACAG,sBAAgBxN,IAAhB,GAAuB,IAAvB;AACAwN,sBAAgB3G,OAAhB,GAA0B,IAA1B;AACA2G,sBAAgBG,KAAhB,GAAwB,CAAxB;AACA,UAAIT,oBAAoBpb,MAApB,GAA6Bmb,SAAjC,EAA4C;AAC1CC,4BAAoBzT,IAApB,CAAyB+T,eAAzB;AACD;AACF;;AAED;;;;;;;;AAQA,aAASK,uBAAT,CAAiChC,QAAjC,EAA2CiC,SAA3C,EAAsDnM,QAAtD,EAAgE6L,eAAhE,EAAiF;AAC/E,UAAI3Z,cAAcgY,QAAd,yCAAcA,QAAd,CAAJ;;AAEA,UAAIhY,SAAS,WAAT,IAAwBA,SAAS,SAArC,EAAgD;AAC9C;AACAgY,mBAAW,IAAX;AACD;;AAED,UAAIkC,iBAAiB,KAArB;;AAEA,UAAIlC,aAAa,IAAjB,EAAuB;AACrBkC,yBAAiB,IAAjB;AACD,OAFD,MAEO;AACL,gBAAQla,IAAR;AACE,eAAK,QAAL;AACA,eAAK,QAAL;AACEka,6BAAiB,IAAjB;AACA;AACF,eAAK,QAAL;AACE,oBAAQlC,SAASnC,QAAjB;AACE,mBAAKjG,kBAAL;AACA,mBAAKC,iBAAL;AACEqK,iCAAiB,IAAjB;AAHJ;AANJ;AAYD;;AAED,UAAIA,cAAJ,EAAoB;AAClBpM,iBAAS6L,eAAT,EAA0B3B,QAA1B;AACA;AACA;AACAiC,sBAAc,EAAd,GAAmBtB,YAAYwB,gBAAgBnC,QAAhB,EAA0B,CAA1B,CAA/B,GAA8DiC,SAH9D;AAIA,eAAO,CAAP;AACD;;AAED,UAAIG,QAAQ,KAAK,CAAjB;AACA,UAAIC,WAAW,KAAK,CAApB;AACA,UAAIC,eAAe,CAAnB,CArC+E,CAqCzD;AACtB,UAAIC,iBAAiBN,cAAc,EAAd,GAAmBtB,SAAnB,GAA+BsB,YAAYrB,YAAhE;;AAEA,UAAI/S,MAAMC,OAAN,CAAckS,QAAd,CAAJ,EAA6B;AAC3B,aAAK,IAAIvS,IAAI,CAAb,EAAgBA,IAAIuS,SAAS/Z,MAA7B,EAAqCwH,GAArC,EAA0C;AACxC2U,kBAAQpC,SAASvS,CAAT,CAAR;AACA4U,qBAAWE,iBAAiBJ,gBAAgBC,KAAhB,EAAuB3U,CAAvB,CAA5B;AACA6U,0BAAgBN,wBAAwBI,KAAxB,EAA+BC,QAA/B,EAAyCvM,QAAzC,EAAmD6L,eAAnD,CAAhB;AACD;AACF,OAND,MAMO;AACL,YAAIa,aAAa7J,cAAcqH,QAAd,CAAjB;AACA,YAAI,OAAOwC,UAAP,KAAsB,UAA1B,EAAsC;AACpC;AACE;AACA,gBAAIA,eAAexC,SAASyC,OAA5B,EAAqC;AACnC,eAACxB,gBAAD,GAAoBrC,UAAU,KAAV,EAAiB,iEAAiE,iEAAjE,GAAqI,wBAAtJ,CAApB,GAAsM,KAAK,CAA3M;AACAqC,iCAAmB,IAAnB;AACD;AACF;;AAED,cAAIxI,WAAW+J,WAAWvU,IAAX,CAAgB+R,QAAhB,CAAf;AACA,cAAI0C,OAAO,KAAK,CAAhB;AACA,cAAIja,KAAK,CAAT;AACA,iBAAO,CAAC,CAACia,OAAOjK,SAASkK,IAAT,EAAR,EAAyBC,IAAjC,EAAuC;AACrCR,oBAAQM,KAAKnd,KAAb;AACA8c,uBAAWE,iBAAiBJ,gBAAgBC,KAAhB,EAAuB3Z,IAAvB,CAA5B;AACA6Z,4BAAgBN,wBAAwBI,KAAxB,EAA+BC,QAA/B,EAAyCvM,QAAzC,EAAmD6L,eAAnD,CAAhB;AACD;AACF,SAjBD,MAiBO,IAAI3Z,SAAS,QAAb,EAAuB;AAC5B,cAAI6a,WAAW,EAAf;AACA;AACEA,uBAAW,oEAAoE,UAApE,GAAiF7E,uBAAuBI,gBAAvB,EAA5F;AACD;AACD,cAAI0E,iBAAiB,KAAK9C,QAA1B;AACAhH,oBAAU,KAAV,EAAiB,uDAAjB,EAA0E8J,mBAAmB,iBAAnB,GAAuC,uBAAuB3c,OAAOC,IAAP,CAAY4Z,QAAZ,EAAsB9R,IAAtB,CAA2B,IAA3B,CAAvB,GAA0D,GAAjG,GAAuG4U,cAAjL,EAAiMD,QAAjM;AACD;AACF;;AAED,aAAOP,YAAP;AACD;;AAED;;;;;;;;;;;;;;;;AAgBA,aAASS,mBAAT,CAA6B/C,QAA7B,EAAuClK,QAAvC,EAAiD6L,eAAjD,EAAkE;AAChE,UAAI3B,YAAY,IAAhB,EAAsB;AACpB,eAAO,CAAP;AACD;;AAED,aAAOgC,wBAAwBhC,QAAxB,EAAkC,EAAlC,EAAsClK,QAAtC,EAAgD6L,eAAhD,CAAP;AACD;;AAED;;;;;;;AAOA,aAASQ,eAAT,CAAyBa,SAAzB,EAAoCjX,KAApC,EAA2C;AACzC;AACA;AACA,UAAI,QAAOiX,SAAP,yCAAOA,SAAP,OAAqB,QAArB,IAAiCA,cAAc,IAA/C,IAAuDA,UAAU1c,GAAV,IAAiB,IAA5E,EAAkF;AAChF;AACA,eAAOua,OAAOmC,UAAU1c,GAAjB,CAAP;AACD;AACD;AACA,aAAOyF,MAAM1B,QAAN,CAAe,EAAf,CAAP;AACD;;AAED,aAAS4Y,kBAAT,CAA4BC,WAA5B,EAAyCd,KAAzC,EAAgD9P,IAAhD,EAAsD;AACpD,UAAI6B,OAAO+O,YAAY/O,IAAvB;AAAA,UACI6G,UAAUkI,YAAYlI,OAD1B;;AAGA7G,WAAKlG,IAAL,CAAU+M,OAAV,EAAmBoH,KAAnB,EAA0Bc,YAAYpB,KAAZ,EAA1B;AACD;;AAED;;;;;;;;;;;;AAYA,aAASqB,eAAT,CAAyBnD,QAAzB,EAAmCoD,WAAnC,EAAgDC,cAAhD,EAAgE;AAC9D,UAAIrD,YAAY,IAAhB,EAAsB;AACpB,eAAOA,QAAP;AACD;AACD,UAAI2B,kBAAkBL,yBAAyB,IAAzB,EAA+B,IAA/B,EAAqC8B,WAArC,EAAkDC,cAAlD,CAAtB;AACAN,0BAAoB/C,QAApB,EAA8BiD,kBAA9B,EAAkDtB,eAAlD;AACAI,6BAAuBJ,eAAvB;AACD;;AAED,aAAS2B,yBAAT,CAAmCJ,WAAnC,EAAgDd,KAAhD,EAAuDmB,QAAvD,EAAiE;AAC/D,UAAI1B,SAASqB,YAAYrB,MAAzB;AAAA,UACIL,YAAY0B,YAAY1B,SAD5B;AAAA,UAEIrN,OAAO+O,YAAY/O,IAFvB;AAAA,UAGI6G,UAAUkI,YAAYlI,OAH1B;;AAMA,UAAIwI,cAAcrP,KAAKlG,IAAL,CAAU+M,OAAV,EAAmBoH,KAAnB,EAA0Bc,YAAYpB,KAAZ,EAA1B,CAAlB;AACA,UAAIjU,MAAMC,OAAN,CAAc0V,WAAd,CAAJ,EAAgC;AAC9BC,qCAA6BD,WAA7B,EAA0C3B,MAA1C,EAAkD0B,QAAlD,EAA4D,UAAUxQ,CAAV,EAAa;AACvE,iBAAOA,CAAP;AACD,SAFD;AAGD,OAJD,MAIO,IAAIyQ,eAAe,IAAnB,EAAyB;AAC9B,YAAI9C,eAAe8C,WAAf,CAAJ,EAAiC;AAC/BA,wBAAcpD,mBAAmBoD,WAAnB;AACd;AACA;AACAhC,uBAAagC,YAAYld,GAAZ,KAAoB,CAAC8b,KAAD,IAAUA,MAAM9b,GAAN,KAAckd,YAAYld,GAAxD,IAA+D6a,sBAAsBqC,YAAYld,GAAlC,IAAyC,GAAxG,GAA8G,EAA3H,IAAiIid,QAHnH,CAAd;AAID;AACD1B,eAAOjU,IAAP,CAAY4V,WAAZ;AACD;AACF;;AAED,aAASC,4BAAT,CAAsCzD,QAAtC,EAAgDtJ,KAAhD,EAAuDgN,MAAvD,EAA+DvP,IAA/D,EAAqE6G,OAArE,EAA8E;AAC5E,UAAI2I,gBAAgB,EAApB;AACA,UAAID,UAAU,IAAd,EAAoB;AAClBC,wBAAgBxC,sBAAsBuC,MAAtB,IAAgC,GAAhD;AACD;AACD,UAAI/B,kBAAkBL,yBAAyB5K,KAAzB,EAAgCiN,aAAhC,EAA+CxP,IAA/C,EAAqD6G,OAArD,CAAtB;AACA+H,0BAAoB/C,QAApB,EAA8BsD,yBAA9B,EAAyD3B,eAAzD;AACAI,6BAAuBJ,eAAvB;AACD;;AAED;;;;;;;;;;;;;AAaA,aAASiC,WAAT,CAAqB5D,QAArB,EAA+B7L,IAA/B,EAAqC6G,OAArC,EAA8C;AAC5C,UAAIgF,YAAY,IAAhB,EAAsB;AACpB,eAAOA,QAAP;AACD;AACD,UAAI6B,SAAS,EAAb;AACA4B,mCAA6BzD,QAA7B,EAAuC6B,MAAvC,EAA+C,IAA/C,EAAqD1N,IAArD,EAA2D6G,OAA3D;AACA,aAAO6G,MAAP;AACD;;AAED;;;;;;;;;AASA,aAASgC,aAAT,CAAuB7D,QAAvB,EAAiC;AAC/B,aAAO+C,oBAAoB/C,QAApB,EAA8B,YAAY;AAC/C,eAAO,IAAP;AACD,OAFM,EAEJ,IAFI,CAAP;AAGD;;AAED;;;;;;AAMA,aAAS8D,OAAT,CAAiB9D,QAAjB,EAA2B;AACzB,UAAI6B,SAAS,EAAb;AACA4B,mCAA6BzD,QAA7B,EAAuC6B,MAAvC,EAA+C,IAA/C,EAAqD,UAAUO,KAAV,EAAiB;AACpE,eAAOA,KAAP;AACD,OAFD;AAGA,aAAOP,MAAP;AACD;;AAED;;;;;;;;;;;;;;AAcA,aAASkC,SAAT,CAAmB/D,QAAnB,EAA6B;AAC3B,OAACU,eAAeV,QAAf,CAAD,GAA4BhH,UAAU,KAAV,EAAiB,uEAAjB,CAA5B,GAAwH,KAAK,CAA7H;AACA,aAAOgH,QAAP;AACD;;AAED,aAASgE,aAAT,CAAuBC,YAAvB,EAAqCC,oBAArC,EAA2D;AACzD,UAAIA,yBAAyBhU,SAA7B,EAAwC;AACtCgU,+BAAuB,IAAvB;AACD,OAFD,MAEO;AACL;AACE,YAAEA,yBAAyB,IAAzB,IAAiC,OAAOA,oBAAP,KAAgC,UAAnE,IAAiFnK,sBAAsB,KAAtB,EAA6B,kEAAkE,gCAA/F,EAAiImK,oBAAjI,CAAjF,GAA0O,KAAK,CAA/O;AACD;AACF;;AAED,UAAIlJ,UAAU;AACZ6C,kBAAU3F,kBADE;AAEZiM,+BAAuBD,oBAFX;AAGZ;AACA;AACA;AACA;AACA;AACAE,uBAAeH,YARH;AASZI,wBAAgBJ,YATJ;AAUZ;AACAK,kBAAU,IAXE;AAYZC,kBAAU;AAZE,OAAd;;AAeAvJ,cAAQsJ,QAAR,GAAmB;AACjBzG,kBAAU5F,mBADO;AAEjBuM,kBAAUxJ;AAFO,OAAnB;;AAKA,UAAIyJ,4CAA4C,KAAhD;AACA,UAAIC,sCAAsC,KAA1C;;AAEA;AACE;AACA;AACA;AACA,YAAIH,WAAW;AACb1G,oBAAU3F,kBADG;AAEbsM,oBAAUxJ,OAFG;AAGbmJ,iCAAuBnJ,QAAQmJ;AAHlB,SAAf;AAKA;AACAhe,eAAOwe,gBAAP,CAAwBJ,QAAxB,EAAkC;AAChCD,oBAAU;AACR5I,iBAAK,eAAY;AACf,kBAAI,CAACgJ,mCAAL,EAA0C;AACxCA,sDAAsC,IAAtC;AACA9F,0BAAU,KAAV,EAAiB,mFAAmF,4EAApG;AACD;AACD,qBAAO5D,QAAQsJ,QAAf;AACD,aAPO;AAQRM,iBAAK,aAAUC,SAAV,EAAqB;AACxB7J,sBAAQsJ,QAAR,GAAmBO,SAAnB;AACD;AAVO,WADsB;AAahCT,yBAAe;AACb1I,iBAAK,eAAY;AACf,qBAAOV,QAAQoJ,aAAf;AACD,aAHY;AAIbQ,iBAAK,aAAUR,aAAV,EAAyB;AAC5BpJ,sBAAQoJ,aAAR,GAAwBA,aAAxB;AACD;AANY,WAbiB;AAqBhCC,0BAAgB;AACd3I,iBAAK,eAAY;AACf,qBAAOV,QAAQqJ,cAAf;AACD,aAHa;AAIdO,iBAAK,aAAUP,cAAV,EAA0B;AAC7BrJ,sBAAQqJ,cAAR,GAAyBA,cAAzB;AACD;AANa,WArBgB;AA6BhCE,oBAAU;AACR7I,iBAAK,eAAY;AACf,kBAAI,CAAC+I,yCAAL,EAAgD;AAC9CA,4DAA4C,IAA5C;AACA7F,0BAAU,KAAV,EAAiB,mFAAmF,4EAApG;AACD;AACD,qBAAO5D,QAAQuJ,QAAf;AACD;AAPO;AA7BsB,SAAlC;AAuCA;AACAvJ,gBAAQuJ,QAAR,GAAmBA,QAAnB;AACD;;AAED;AACEvJ,gBAAQ8J,gBAAR,GAA2B,IAA3B;AACA9J,gBAAQ+J,iBAAR,GAA4B,IAA5B;AACD;;AAED,aAAO/J,OAAP;AACD;;AAED,aAASgK,IAAT,CAAcC,IAAd,EAAoB;AAClB,aAAO;AACLpH,kBAAUtF,eADL;AAEL2M,eAAOD,IAFF;AAGL;AACA7H,iBAAS,CAAC,CAJL;AAKLC,iBAAS;AALJ,OAAP;AAOD;;AAED,aAAS8H,UAAT,CAAoB7Q,MAApB,EAA4B;AAC1B;AACE,YAAI,OAAOA,MAAP,KAAkB,UAAtB,EAAkC;AAChCyF,gCAAsB,KAAtB,EAA6B,yDAA7B,EAAwFzF,WAAW,IAAX,GAAkB,MAAlB,UAAkCA,MAAlC,yCAAkCA,MAAlC,CAAxF;AACD,SAFD,MAEO;AACL;AACA;AACAA,iBAAOrO,MAAP,KAAkB,CAAlB,IAAuBqO,OAAOrO,MAAP,KAAkB,CAFzC,IAE8C8T,sBAAsB,KAAtB,EAA6B,8EAA7B,EAA6GzF,OAAOrO,MAAP,KAAkB,CAAlB,GAAsB,0CAAtB,GAAmE,6CAAhL,CAF9C,GAE+Q,KAAK,CAFpR;AAGD;;AAED,YAAIqO,UAAU,IAAd,EAAoB;AAClB,YAAEA,OAAO2B,YAAP,IAAuB,IAAvB,IAA+B3B,OAAO0B,SAAP,IAAoB,IAArD,IAA6D+D,sBAAsB,KAAtB,EAA6B,2EAA2E,8CAAxG,CAA7D,GAAuN,KAAK,CAA5N;AACD;AACF;;AAED,aAAO;AACL8D,kBAAUzF,sBADL;AAEL9D,gBAAQA;AAFH,OAAP;AAID;;AAED,aAAS8Q,kBAAT,CAA4Bpd,IAA5B,EAAkC;AAChC,aAAO,OAAOA,IAAP,KAAgB,QAAhB,IAA4B,OAAOA,IAAP,KAAgB,UAA5C;AACP;AACAA,eAAS8P,mBAFF,IAEyB9P,SAASmQ,0BAFlC,IAEgEnQ,SAASgQ,mBAFzE,IAEgGhQ,SAAS+P,sBAFzG,IAEmI/P,SAASqQ,mBAF5I,IAEmK,QAAOrQ,IAAP,yCAAOA,IAAP,OAAgB,QAAhB,IAA4BA,SAAS,IAArC,KAA8CA,KAAK6V,QAAL,KAAkBtF,eAAlB,IAAqCvQ,KAAK6V,QAAL,KAAkBvF,eAAvD,IAA0EtQ,KAAK6V,QAAL,KAAkB5F,mBAA5F,IAAmHjQ,KAAK6V,QAAL,KAAkB3F,kBAArI,IAA2JlQ,KAAK6V,QAAL,KAAkBzF,sBAA3N,CAF1K;AAGD;;AAED,aAASiN,IAAT,CAAcrd,IAAd,EAAoBsd,OAApB,EAA6B;AAC3B;AACE,YAAI,CAACF,mBAAmBpd,IAAnB,CAAL,EAA+B;AAC7B+R,gCAAsB,KAAtB,EAA6B,2DAA2D,cAAxF,EAAwG/R,SAAS,IAAT,GAAgB,MAAhB,UAAgCA,IAAhC,yCAAgCA,IAAhC,CAAxG;AACD;AACF;AACD,aAAO;AACL6V,kBAAUvF,eADL;AAELtQ,cAAMA,IAFD;AAGLsd,iBAASA,YAAYpV,SAAZ,GAAwB,IAAxB,GAA+BoV;AAHnC,OAAP;AAKD;;AAED;;;;;;;AAOA,QAAIC,gCAAgC,KAAK,CAAzC;;AAEA;AACEA,sCAAgC,KAAhC;AACD;;AAED,aAASC,2BAAT,GAAuC;AACrC,UAAIpJ,kBAAkBF,OAAtB,EAA+B;AAC7B,YAAI5J,OAAOqL,iBAAiBvB,kBAAkBF,OAAlB,CAA0BlU,IAA3C,CAAX;AACA,YAAIsK,IAAJ,EAAU;AACR,iBAAO,qCAAqCA,IAArC,GAA4C,IAAnD;AACD;AACF;AACD,aAAO,EAAP;AACD;;AAED,aAASmT,0BAAT,CAAoCC,YAApC,EAAkD;AAChD,UAAIA,iBAAiB,IAAjB,IAAyBA,iBAAiBxV,SAA1C,IAAuDwV,aAAa1G,QAAb,KAA0B9O,SAArF,EAAgG;AAC9F,YAAId,SAASsW,aAAa1G,QAA1B;AACA,YAAIrC,WAAWvN,OAAOuN,QAAP,CAAgB9Q,OAAhB,CAAwB,WAAxB,EAAqC,EAArC,CAAf;AACA,YAAImR,aAAa5N,OAAO4N,UAAxB;AACA,eAAO,4BAA4BL,QAA5B,GAAuC,GAAvC,GAA6CK,UAA7C,GAA0D,GAAjE;AACD;AACD,aAAO,EAAP;AACD;;AAED;;;;;AAKA,QAAI2I,wBAAwB,EAA5B;;AAEA,aAASC,4BAAT,CAAsCC,UAAtC,EAAkD;AAChD,UAAIpK,OAAO+J,6BAAX;;AAEA,UAAI,CAAC/J,IAAL,EAAW;AACT,YAAIqK,aAAa,OAAOD,UAAP,KAAsB,QAAtB,GAAiCA,UAAjC,GAA8CA,WAAWxL,WAAX,IAA0BwL,WAAWvT,IAApG;AACA,YAAIwT,UAAJ,EAAgB;AACdrK,iBAAO,gDAAgDqK,UAAhD,GAA6D,IAApE;AACD;AACF;AACD,aAAOrK,IAAP;AACD;;AAED;;;;;;;;;;;AAWA,aAASsK,mBAAT,CAA6BviB,OAA7B,EAAsCqiB,UAAtC,EAAkD;AAChD,UAAI,CAACriB,QAAQuc,MAAT,IAAmBvc,QAAQuc,MAAR,CAAeiG,SAAlC,IAA+CxiB,QAAQ8C,GAAR,IAAe,IAAlE,EAAwE;AACtE;AACD;AACD9C,cAAQuc,MAAR,CAAeiG,SAAf,GAA2B,IAA3B;;AAEA,UAAIC,4BAA4BL,6BAA6BC,UAA7B,CAAhC;AACA,UAAIF,sBAAsBM,yBAAtB,CAAJ,EAAsD;AACpD;AACD;AACDN,4BAAsBM,yBAAtB,IAAmD,IAAnD;;AAEA;AACA;AACA;AACA,UAAIC,aAAa,EAAjB;AACA,UAAI1iB,WAAWA,QAAQ8a,MAAnB,IAA6B9a,QAAQ8a,MAAR,KAAmBlC,kBAAkBF,OAAtE,EAA+E;AAC7E;AACAgK,qBAAa,iCAAiCvI,iBAAiBna,QAAQ8a,MAAR,CAAetW,IAAhC,CAAjC,GAAyE,GAAtF;AACD;;AAEDkW,oCAA8B1a,OAA9B;AACA;AACEob,kBAAU,KAAV,EAAiB,wEAAwE,iEAAzF,EAA4JqH,yBAA5J,EAAuLC,UAAvL;AACD;AACDhI,oCAA8B,IAA9B;AACD;;AAED;;;;;;;;;AASA,aAASiI,iBAAT,CAA2BjP,IAA3B,EAAiC2O,UAAjC,EAA6C;AAC3C,UAAI,QAAO3O,IAAP,yCAAOA,IAAP,OAAgB,QAApB,EAA8B;AAC5B;AACD;AACD,UAAIrJ,MAAMC,OAAN,CAAcoJ,IAAd,CAAJ,EAAyB;AACvB,aAAK,IAAIzJ,IAAI,CAAb,EAAgBA,IAAIyJ,KAAKjR,MAAzB,EAAiCwH,GAAjC,EAAsC;AACpC,cAAI2U,QAAQlL,KAAKzJ,CAAL,CAAZ;AACA,cAAIiT,eAAe0B,KAAf,CAAJ,EAA2B;AACzB2D,gCAAoB3D,KAApB,EAA2ByD,UAA3B;AACD;AACF;AACF,OAPD,MAOO,IAAInF,eAAexJ,IAAf,CAAJ,EAA0B;AAC/B;AACA,YAAIA,KAAK6I,MAAT,EAAiB;AACf7I,eAAK6I,MAAL,CAAYiG,SAAZ,GAAwB,IAAxB;AACD;AACF,OALM,MAKA,IAAI9O,IAAJ,EAAU;AACf,YAAIsL,aAAa7J,cAAczB,IAAd,CAAjB;AACA,YAAI,OAAOsL,UAAP,KAAsB,UAA1B,EAAsC;AACpC;AACA;AACA,cAAIA,eAAetL,KAAKuL,OAAxB,EAAiC;AAC/B,gBAAIhK,WAAW+J,WAAWvU,IAAX,CAAgBiJ,IAAhB,CAAf;AACA,gBAAIwL,OAAO,KAAK,CAAhB;AACA,mBAAO,CAAC,CAACA,OAAOjK,SAASkK,IAAT,EAAR,EAAyBC,IAAjC,EAAuC;AACrC,kBAAIlC,eAAegC,KAAKnd,KAApB,CAAJ,EAAgC;AAC9BwgB,oCAAoBrD,KAAKnd,KAAzB,EAAgCsgB,UAAhC;AACD;AACF;AACF;AACF;AACF;AACF;;AAED;;;;;;AAMA,aAASO,iBAAT,CAA2B5iB,OAA3B,EAAoC;AAClC,UAAIwE,OAAOxE,QAAQwE,IAAnB;AACA,UAAIsK,OAAO,KAAK,CAAhB;AAAA,UACI0D,YAAY,KAAK,CADrB;AAEA,UAAI,OAAOhO,IAAP,KAAgB,UAApB,EAAgC;AAC9B;AACAsK,eAAOtK,KAAKqS,WAAL,IAAoBrS,KAAKsK,IAAhC;AACA0D,oBAAYhO,KAAKgO,SAAjB;AACD,OAJD,MAIO,IAAI,QAAOhO,IAAP,yCAAOA,IAAP,OAAgB,QAAhB,IAA4BA,SAAS,IAArC,IAA6CA,KAAK6V,QAAL,KAAkBzF,sBAAnE,EAA2F;AAChG;AACA,YAAIsF,eAAe1V,KAAKsM,MAAL,CAAY+F,WAAZ,IAA2BrS,KAAKsM,MAAL,CAAYhC,IAAvC,IAA+C,EAAlE;AACAA,eAAOtK,KAAKqS,WAAL,KAAqBqD,iBAAiB,EAAjB,GAAsB,gBAAgBA,YAAhB,GAA+B,GAArD,GAA2D,YAAhF,CAAP;AACA1H,oBAAYhO,KAAKgO,SAAjB;AACD,OALM,MAKA;AACL;AACD;AACD,UAAIA,SAAJ,EAAe;AACbkI,sCAA8B1a,OAA9B;AACAuO,uBAAeiE,SAAf,EAA0BxS,QAAQE,KAAlC,EAAyC,MAAzC,EAAiD4O,IAAjD,EAAuD0L,uBAAuBI,gBAA9E;AACAF,sCAA8B,IAA9B;AACD,OAJD,MAIO,IAAIlW,KAAKsP,SAAL,KAAmBpH,SAAnB,IAAgC,CAACqV,6BAArC,EAAoE;AACzEA,wCAAgC,IAAhC;AACAxL,8BAAsB,KAAtB,EAA6B,qGAA7B,EAAoIzH,QAAQ,SAA5I;AACD;AACD,UAAI,OAAOtK,KAAKqe,eAAZ,KAAgC,UAApC,EAAgD;AAC9C,SAACre,KAAKqe,eAAL,CAAqBC,oBAAtB,GAA6CvM,sBAAsB,KAAtB,EAA6B,+DAA+D,kEAA5F,CAA7C,GAA+M,KAAK,CAApN;AACD;AACF;;AAED;;;;AAIA,aAASwM,qBAAT,CAA+BC,QAA/B,EAAyC;AACvCtI,oCAA8BsI,QAA9B;;AAEA,UAAIpgB,OAAOD,OAAOC,IAAP,CAAYogB,SAAS9iB,KAArB,CAAX;AACA,WAAK,IAAI+J,IAAI,CAAb,EAAgBA,IAAIrH,KAAKH,MAAzB,EAAiCwH,GAAjC,EAAsC;AACpC,YAAInH,MAAMF,KAAKqH,CAAL,CAAV;AACA,YAAInH,QAAQ,UAAR,IAAsBA,QAAQ,KAAlC,EAAyC;AACvCsY,oBAAU,KAAV,EAAiB,qDAAqD,0DAAtE,EAAkItY,GAAlI;AACA;AACD;AACF;;AAED,UAAIkgB,SAAS1H,GAAT,KAAiB,IAArB,EAA2B;AACzBF,kBAAU,KAAV,EAAiB,uDAAjB;AACD;;AAEDV,oCAA8B,IAA9B;AACD;;AAED,aAASuI,2BAAT,CAAqCze,IAArC,EAA2CtE,KAA3C,EAAkDsc,QAAlD,EAA4D;AAC1D,UAAI0G,YAAYtB,mBAAmBpd,IAAnB,CAAhB;;AAEA;AACA;AACA,UAAI,CAAC0e,SAAL,EAAgB;AACd,YAAIjL,OAAO,EAAX;AACA,YAAIzT,SAASkI,SAAT,IAAsB,QAAOlI,IAAP,yCAAOA,IAAP,OAAgB,QAAhB,IAA4BA,SAAS,IAArC,IAA6C7B,OAAOC,IAAP,CAAY4B,IAAZ,EAAkB/B,MAAlB,KAA6B,CAApG,EAAuG;AACrGwV,kBAAQ,+DAA+D,wEAAvE;AACD;;AAED,YAAIgB,aAAagJ,2BAA2B/hB,KAA3B,CAAjB;AACA,YAAI+Y,UAAJ,EAAgB;AACdhB,kBAAQgB,UAAR;AACD,SAFD,MAEO;AACLhB,kBAAQ+J,6BAAR;AACD;;AAED,YAAImB,aAAa,KAAK,CAAtB;AACA,YAAI3e,SAAS,IAAb,EAAmB;AACjB2e,uBAAa,MAAb;AACD,SAFD,MAEO,IAAI9Y,MAAMC,OAAN,CAAc9F,IAAd,CAAJ,EAAyB;AAC9B2e,uBAAa,OAAb;AACD,SAFM,MAEA,IAAI3e,SAASkI,SAAT,IAAsBlI,KAAK6V,QAAL,KAAkBjG,kBAA5C,EAAgE;AACrE+O,uBAAa,OAAOhJ,iBAAiB3V,KAAKA,IAAtB,KAA+B,SAAtC,IAAmD,KAAhE;AACAyT,iBAAO,oEAAP;AACD,SAHM,MAGA;AACLkL,8BAAoB3e,IAApB,yCAAoBA,IAApB;AACD;;AAED4W,kBAAU,KAAV,EAAiB,oEAAoE,0DAApE,GAAiI,4BAAlJ,EAAgL+H,UAAhL,EAA4LlL,IAA5L;AACD;;AAED,UAAIjY,UAAUuS,cAAc/H,KAAd,CAAoB,IAApB,EAA0BrK,SAA1B,CAAd;;AAEA;AACA;AACA,UAAIH,WAAW,IAAf,EAAqB;AACnB,eAAOA,OAAP;AACD;;AAED;AACA;AACA;AACA;AACA;AACA,UAAIkjB,SAAJ,EAAe;AACb,aAAK,IAAIjZ,IAAI,CAAb,EAAgBA,IAAI9J,UAAUsC,MAA9B,EAAsCwH,GAAtC,EAA2C;AACzC0Y,4BAAkBxiB,UAAU8J,CAAV,CAAlB,EAAgCzF,IAAhC;AACD;AACF;;AAED,UAAIA,SAAS8P,mBAAb,EAAkC;AAChCyO,8BAAsB/iB,OAAtB;AACD,OAFD,MAEO;AACL4iB,0BAAkB5iB,OAAlB;AACD;;AAED,aAAOA,OAAP;AACD;;AAED,aAASojB,2BAAT,CAAqC5e,IAArC,EAA2C;AACzC,UAAI6e,mBAAmBJ,4BAA4BlR,IAA5B,CAAiC,IAAjC,EAAuCvN,IAAvC,CAAvB;AACA6e,uBAAiB7e,IAAjB,GAAwBA,IAAxB;AACA;AACA;AACE7B,eAAOwN,cAAP,CAAsBkT,gBAAtB,EAAwC,MAAxC,EAAgD;AAC9CvT,sBAAY,KADkC;AAE9CoI,eAAK,eAAY;AACfhC,iCAAqB,KAArB,EAA4B,2DAA2D,qCAAvF;AACAvT,mBAAOwN,cAAP,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC;AAClCpO,qBAAOyC;AAD2B,aAApC;AAGA,mBAAOA,IAAP;AACD;AAR6C,SAAhD;AAUD;;AAED,aAAO6e,gBAAP;AACD;;AAED,aAASC,0BAAT,CAAoCtjB,OAApC,EAA6CE,KAA7C,EAAoDsc,QAApD,EAA8D;AAC5D,UAAIO,aAAaE,aAAazS,KAAb,CAAmB,IAAnB,EAAyBrK,SAAzB,CAAjB;AACA,WAAK,IAAI8J,IAAI,CAAb,EAAgBA,IAAI9J,UAAUsC,MAA9B,EAAsCwH,GAAtC,EAA2C;AACzC0Y,0BAAkBxiB,UAAU8J,CAAV,CAAlB,EAAgC8S,WAAWvY,IAA3C;AACD;AACDoe,wBAAkB7F,UAAlB;AACA,aAAOA,UAAP;AACD;;AAED,QAAIwG,QAAQ;AACVC,gBAAU;AACR3gB,aAAKud,WADG;AAER7S,iBAASoS,eAFD;AAGRrB,eAAO+B,aAHC;AAIRC,iBAASA,OAJD;AAKRmD,cAAMlD;AALE,OADA;;AASV/H,iBAAWA,SATD;AAUVzY,iBAAWA,SAVD;AAWVsY,qBAAeA,aAXL;;AAaVmI,qBAAeA,aAbL;AAcVmB,kBAAYA,UAdF;AAeVH,YAAMA,IAfI;AAgBVK,YAAMA,IAhBI;;AAkBV6B,gBAAUpP,mBAlBA;AAmBVqP,kBAAYpP,sBAnBF;AAoBVqP,+BAAyBjP,0BApBf;AAqBVkP,gBAAUhP,mBArBA;AAsBViP,yBAAmBtP,mBAtBT;;AAwBVjC,qBAAe0Q,2BAxBL;AAyBVhG,oBAAcqG,0BAzBJ;AA0BVS,qBAAeX,2BA1BL;AA2BVlG,sBAAgBA,cA3BN;;AA6BV8G,eAAShQ,YA7BC;;AA+BViQ,0DAAoDhJ;AA/B1C,KAAZ;;AAoCA,QAAIiJ,UAAUvhB,OAAO4U,MAAP,CAAc;AAC3BpS,eAASoe;AADkB,KAAd,CAAd;;AAIA,QAAIY,UAAYD,WAAWX,KAAb,IAAwBW,OAAtC;;AAEA;AACA;AACA,QAAIE,QAAQD,QAAQhf,OAAR,IAAmBgf,OAA/B;;AAEAxZ,WAAOC,OAAP,GAAiBwZ,KAAjB;AACG,GA5rDD;AA6rDD,C;;;;;;;;;;;;AC3sDY;;AAEb,IAAIrW,KAAJ,EAA2C,EAA3C,MAEO;AACLpD,SAAOC,OAAP,GAAiB9L,mBAAOA,CAAC,iFAAR,CAAjB;AACD,C;;;;;;;;;;;ACND;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,cAAc,mBAAO,CAAC,uDAAQ;;AAE9B;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,mBAAmB,2BAA2B;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;;AAEA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;;AAEA,QAAQ,uBAAuB;AAC/B;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,kDAAkD,sBAAsB;AACxE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;;AAEA,6BAA6B,mBAAmB;;AAEhD;;AAEA;;AAEA;AACA;;;;;;;;;;;;;;;ACtXA;;;;;;;;;;;;;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 |
/**
|