Email Subscribers & Newsletters - Version 4.6.13

Version Description

Download this release

Release Info

Developer Icegram
Plugin Icon 128x128 Email Subscribers & Newsletters
Version 4.6.13
Comparing to
See all releases

Code changes from version 4.6.12.1 to 4.6.13

Files changed (32) hide show
  1. email-subscribers.php +3 -3
  2. lite/admin/class-email-subscribers-admin.php +61 -60
  3. lite/admin/class-ig-es-campaign-rules.php +36 -54
  4. lite/admin/css/campaign-rules.css +0 -163
  5. lite/admin/css/email-subscribers-admin.css +184 -6
  6. lite/admin/dist/main.css +1 -1
  7. lite/admin/dist/main.js +1 -1
  8. lite/admin/js/campaign-rules.js +0 -201
  9. lite/admin/js/email-subscribers-admin.js +1156 -22
  10. lite/admin/js/ig-es-workflows-variables.js +0 -170
  11. lite/admin/js/ig-es-workflows.js +0 -384
  12. lite/admin/js/subscribers.js +0 -349
  13. lite/includes/class-es-common.php +7 -4
  14. lite/includes/class-es-install.php +4 -0
  15. lite/includes/classes/class-es-campaign-report.php +2 -2
  16. lite/includes/classes/class-es-contacts-table.php +1 -1
  17. lite/includes/classes/class-es-import-subscribers.php +0 -2
  18. lite/includes/classes/class-es-newsletters.php +9 -4
  19. lite/includes/classes/class-es-post-notifications.php +0 -3
  20. lite/includes/classes/class-es-queue.php +110 -91
  21. lite/includes/classes/class-ig-es-background-process-helper.php +5 -2
  22. lite/includes/classes/class-ig-es-subscriber-query.php +46 -12
  23. lite/includes/db/class-es-db-campaigns.php +6 -0
  24. lite/includes/pro-features.php +55 -35
  25. lite/includes/upgrade/es-update-functions.php +53 -0
  26. lite/includes/workflows/actions/class-es-action-add-to-list.php +4 -1
  27. lite/includes/workflows/actions/class-es-action-delete-contact.php +5 -1
  28. lite/includes/workflows/actions/class-es-action-update-contact.php +4 -1
  29. lite/includes/workflows/admin/class-es-workflow-admin-ajax.php +9 -4
  30. lite/includes/workflows/admin/views/meta-box-trigger.php +11 -0
  31. lite/languages/email-subscribers.pot +258 -264
  32. readme.txt +9 -2
email-subscribers.php CHANGED
@@ -3,11 +3,11 @@
3
  * Plugin Name: Email Subscribers & Newsletters
4
  * Plugin URI: https://www.icegram.com/
5
  * Description: Add subscription forms on website, send HTML newsletters & automatically notify subscribers about new blog posts once it is published.
6
- * Version: 4.6.12.1
7
  * Author: Icegram
8
  * Author URI: https://www.icegram.com/
9
  * Requires at least: 3.9
10
- * Tested up to: 5.6.2
11
  * WC requires at least: 3.6.0
12
  * WC tested up to: 4.9.2
13
  * ES WOO: 7120515:9f4c7f8bb491260ef19edf9699db73e6
@@ -178,7 +178,7 @@ if ( 'premium' === $ig_es_plan ) {
178
  /* ***************************** Initial Compatibility Work (End) ******************* */
179
 
180
  if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
181
- define( 'ES_PLUGIN_VERSION', '4.6.12.1' );
182
  }
183
 
184
  // Plugin Folder Path.
3
  * Plugin Name: Email Subscribers & Newsletters
4
  * Plugin URI: https://www.icegram.com/
5
  * Description: Add subscription forms on website, send HTML newsletters & automatically notify subscribers about new blog posts once it is published.
6
+ * Version: 4.6.13
7
  * Author: Icegram
8
  * Author URI: https://www.icegram.com/
9
  * Requires at least: 3.9
10
+ * Tested up to: 5.7
11
  * WC requires at least: 3.6.0
12
  * WC tested up to: 4.9.2
13
  * ES WOO: 7120515:9f4c7f8bb491260ef19edf9699db73e6
178
  /* ***************************** Initial Compatibility Work (End) ******************* */
179
 
180
  if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
181
+ define( 'ES_PLUGIN_VERSION', '4.6.13' );
182
  }
183
 
184
  // Plugin Folder Path.
lite/admin/class-email-subscribers-admin.php CHANGED
@@ -155,45 +155,64 @@ class Email_Subscribers_Admin {
155
  return;
156
  }
157
 
 
 
158
  wp_enqueue_script( $this->email_subscribers, plugin_dir_url( __FILE__ ) . 'js/email-subscribers-admin.js', array( 'jquery', 'jquery-ui-core', 'jquery-ui-tabs' ), $this->version, false );
159
 
160
  $ig_es_js_data = array(
161
  'security' => wp_create_nonce( 'ig-es-admin-ajax-nonce' ),
162
  'i18n_data' => array(
 
163
  'ajax_error_message' => __( 'An error has occured. Please try again later.', 'email-subscribers' ),
164
  'broadcast_draft_success_message' => __( 'Broadcast saved as draft successfully.', 'email-subscribers' ),
165
  'broadcast_draft_error_message' => __( 'An error has occured while saving the broadcast. Please try again later.', 'email-subscribers' ),
166
  'broadcast_subject_empty_message' => __( 'Please add a broadcast subject before saving.', 'email-subscribers' ),
167
  'empty_template_message' => __( 'Please add email body.', 'email-subscribers' ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
168
  ),
 
169
  );
170
 
171
  wp_localize_script( $this->email_subscribers, 'ig_es_js_data', $ig_es_js_data );
172
 
173
- $page_prefix = ES()->get_admin_page_prefix();
174
-
175
- if ( ES()->is_es_admin_screen( $page_prefix . '_page_es_workflows' ) ) {
176
 
177
  if ( ! wp_script_is( 'clipboard', 'registered' ) ) {
178
  wp_enqueue_script( 'clipboard', plugin_dir_url( __FILE__ ) . 'js/clipboard.js', array( 'jquery' ), '2.0.6', false );
179
  }
180
 
181
- wp_enqueue_script( $this->email_subscribers . '-workflows', plugin_dir_url( __FILE__ ) . 'js/ig-es-workflows.js', array( 'jquery', 'jquery-ui-datepicker' ), $this->version, false );
182
- wp_enqueue_script( $this->email_subscribers . '-workflows-variables', plugin_dir_url( __FILE__ ) . 'js/ig-es-workflows-variables.js', array( 'jquery', 'clipboard' ), $this->version, false );
183
-
184
- $workflows_data = array(
185
- 'security' => wp_create_nonce( 'ig-es-workflow-nonce' ),
186
- 'no_trigger_message' => __( 'Please select a trigger before saving the workflow.', 'email-subscribers' ),
187
- 'no_actions_message' => __( 'Please add some actions before saving the workflow.', 'email-subscribers' ),
188
- 'no_action_selected_message' => __( 'Please select an action that this workflow should perform before saving the workflow.', 'email-subscribers' ),
189
- 'trigger_change_message' => __( 'Changing the trigger will remove existing actions. Do you want to proceed anyway?.', 'email-subscribers' ),
190
- 'placeholder_copied_message' => __( 'Copied!', 'email-subscribers' ),
191
- );
192
-
193
- $workflows_data = array_merge( $workflows_data, ES_Workflow_Admin_Edit::get_workflow_data() );
194
-
195
- wp_localize_script( $this->email_subscribers . '-workflows', 'ig_es_workflows_data', $workflows_data );
196
-
197
  if ( ! function_exists( 'ig_es_wp_js_editor_admin_scripts' ) ) {
198
  /**
199
  * Include WP JS Editor library's main file. This file contains required functions to enqueue required js file which being used to create WordPress editor dynamcially.
@@ -203,45 +222,24 @@ class Email_Subscribers_Admin {
203
 
204
  // Load required html/js for dynamic WordPress editor.
205
  ig_es_wp_js_editor_admin_scripts();
206
- } else if ( ES()->is_es_admin_screen( $page_prefix . '_page_es_subscribers' ) ) {
207
- wp_enqueue_script( $this->email_subscribers . '-subscribers', plugin_dir_url( __FILE__ ) . 'js/subscribers.js', array( 'jquery', 'plupload-all' ), $this->version, false );
208
-
209
- $subscribers_data = array(
210
- 'security' => wp_create_nonce( 'ig-es-admin-ajax-nonce' ),
211
- 'i18n' => array(
212
- 'select_status' => esc_html__( 'Please select the status for the importing contacts!', 'email-subscribers' ),
213
- 'select_email_column' => esc_html__( 'Please select the email address column!', 'email-subscribers' ),
214
- 'prepare_data' => esc_html__( 'Preparing Data', 'email-subscribers' ),
215
- /* translators: %s: Upload progress */
216
- 'uploading' => esc_html__( 'Uploading...%s', 'email-subscribers' ),
217
- /* translators: %s: Import progress */
218
- 'import_contacts' => esc_html__( 'Importing contacts...%s', 'email-subscribers' ),
219
- /* translators: %s: Import failed svg icon */
220
- 'import_failed' => esc_html__( 'Import failed! %s', 'email-subscribers' ),
221
- 'no_windowclose' => esc_html__( 'Please do not close this window until it completes...', 'email-subscribers' ),
222
- 'prepare_import' => esc_html__( 'Preparing Import...', 'email-subscribers' ),
223
- /* translators: 1. Imported contacts count 2. Total contacts count 3. Failed to import count 4. Memory usage */
224
- 'current_stats' => esc_html__( 'Currently %1$s of %2$s imported with %3$s errors. %4$s memory usage', 'email-subscribers' ),
225
- /* translators: %s: Time left in minutes */
226
- 'estimate_time' => esc_html__( 'Estimate time left: %s minutes', 'email-subscribers' ),
227
- /* translators: %s: Next attempt delaly time */
228
- 'continues_in' => esc_html__( 'Continues in %s seconds', 'email-subscribers' ),
229
- 'error_importing' => esc_html__( 'There was a problem during importing contacts. Please check the error logs for more information!', 'email-subscribers' ),
230
- 'confirm_import' => esc_html__( 'Do you really like to import these contacts?', 'email-subscribers' ),
231
- /* translators: %s: Process complete svg icon */
232
- 'import_complete' => esc_html__( 'Import complete! %s', 'email-subscribers' ),
233
- 'onbeforeunloadimport' => esc_html__( 'You are currently importing subscribers! If you leave the page all pending subscribers don\'t get imported!', 'email-subscribers' ),
234
- ),
235
- );
236
 
237
- wp_localize_script( $this->email_subscribers . '-subscribers', 'ig_es_subscribers_data', $subscribers_data );
 
 
 
 
 
 
 
 
 
238
  }
239
 
240
  //timepicker
241
  wp_register_script( $this->email_subscribers . '-timepicker', plugin_dir_url( __FILE__ ) . 'js/jquery.timepicker.js', array( 'jquery' ), ES_PLUGIN_VERSION, true );
242
  wp_enqueue_script( $this->email_subscribers . '-timepicker' );
243
 
244
- $get_page = ig_es_get_request_data( 'page' );
245
  if ( ! empty( $get_page ) && 'es_dashboard' === $get_page || 'es_reports' === $get_page ) {
246
  wp_enqueue_script( 'frappe-js', 'https://unpkg.com/frappe-charts@1.5.2/dist/frappe-charts.min.iife.js', array( 'jquery' ), $this->version, false );
247
  }
@@ -632,22 +630,25 @@ class Email_Subscribers_Admin {
632
  $list_id = ig_es_get_request_data( 'list_id', 0 );
633
  $status = ig_es_get_request_data( 'status', 'all' );
634
  $conditions = ig_es_get_request_data( 'conditions', array() );
 
635
 
636
  if ( 0 == $list_id && empty( $conditions) ) {
637
  return 0;
638
  }
639
 
640
  $response_data = array();
641
-
642
  if ( ! empty( $conditions ) ) {
643
- $args = array(
644
- 'lists' => $list_id,
645
- 'conditions' => $conditions,
646
- 'status' => $status,
647
- 'return_count' => true,
648
- );
649
- $query = new IG_ES_Subscribers_Query();
650
- $response_data['total'] = $query->run( $args );
 
 
651
  ob_start();
652
  do_action( 'ig_es_campaign_show_conditions', $conditions );
653
  $response_data['conditions_html'] = ob_get_clean();
155
  return;
156
  }
157
 
158
+ $get_page = ig_es_get_request_data( 'page' );
159
+
160
  wp_enqueue_script( $this->email_subscribers, plugin_dir_url( __FILE__ ) . 'js/email-subscribers-admin.js', array( 'jquery', 'jquery-ui-core', 'jquery-ui-tabs' ), $this->version, false );
161
 
162
  $ig_es_js_data = array(
163
  'security' => wp_create_nonce( 'ig-es-admin-ajax-nonce' ),
164
  'i18n_data' => array(
165
+ // Broadcast messages.
166
  'ajax_error_message' => __( 'An error has occured. Please try again later.', 'email-subscribers' ),
167
  'broadcast_draft_success_message' => __( 'Broadcast saved as draft successfully.', 'email-subscribers' ),
168
  'broadcast_draft_error_message' => __( 'An error has occured while saving the broadcast. Please try again later.', 'email-subscribers' ),
169
  'broadcast_subject_empty_message' => __( 'Please add a broadcast subject before saving.', 'email-subscribers' ),
170
  'empty_template_message' => __( 'Please add email body.', 'email-subscribers' ),
171
+ 'remove_conditions_message' => __( 'Do you really like to remove all conditions?', 'email-subscribers' ),
172
+
173
+ // Workflows messages.
174
+ 'no_trigger_message' => __( 'Please select a trigger before saving the workflow.', 'email-subscribers' ),
175
+ 'no_actions_message' => __( 'Please add some actions before saving the workflow.', 'email-subscribers' ),
176
+ 'no_action_selected_message' => __( 'Please select an action that this workflow should perform before saving the workflow.', 'email-subscribers' ),
177
+ 'trigger_change_message' => __( 'Changing the trigger will remove existing actions. Do you want to proceed anyway?.', 'email-subscribers' ),
178
+ 'placeholder_copied_message' => __( 'Copied!', 'email-subscribers' ),
179
+ 'delete_confirmation_message' => __( 'Are you sure?', 'email-subscribers' ),
180
+
181
+ // Import subscribers messages.
182
+ 'select_status' => esc_html__( 'Please select the status for the importing contacts!', 'email-subscribers' ),
183
+ 'select_email_column' => esc_html__( 'Please select the email address column!', 'email-subscribers' ),
184
+ 'prepare_data' => esc_html__( 'Preparing Data', 'email-subscribers' ),
185
+ /* translators: %s: Upload progress */
186
+ 'uploading' => esc_html__( 'Uploading...%s', 'email-subscribers' ),
187
+ /* translators: %s: Import progress */
188
+ 'import_contacts' => esc_html__( 'Importing contacts...%s', 'email-subscribers' ),
189
+ /* translators: %s: Import failed svg icon */
190
+ 'import_failed' => esc_html__( 'Import failed! %s', 'email-subscribers' ),
191
+ 'no_windowclose' => esc_html__( 'Please do not close this window until it completes...', 'email-subscribers' ),
192
+ 'prepare_import' => esc_html__( 'Preparing Import...', 'email-subscribers' ),
193
+ /* translators: 1. Imported contacts count 2. Total contacts count 3. Failed to import count 4. Memory usage */
194
+ 'current_stats' => esc_html__( 'Currently %1$s of %2$s imported with %3$s errors. %4$s memory usage', 'email-subscribers' ),
195
+ /* translators: %s: Time left in minutes */
196
+ 'estimate_time' => esc_html__( 'Estimate time left: %s minutes', 'email-subscribers' ),
197
+ /* translators: %s: Next attempt delaly time */
198
+ 'continues_in' => esc_html__( 'Continues in %s seconds', 'email-subscribers' ),
199
+ 'error_importing' => esc_html__( 'There was a problem during importing contacts. Please check the error logs for more information!', 'email-subscribers' ),
200
+ 'confirm_import' => esc_html__( 'Do you really like to import these contacts?', 'email-subscribers' ),
201
+ /* translators: %s: Process complete svg icon */
202
+ 'import_complete' => esc_html__( 'Import complete! %s', 'email-subscribers' ),
203
+ 'onbeforeunloadimport' => esc_html__( 'You are currently importing subscribers! If you leave the page all pending subscribers don\'t get imported!', 'email-subscribers' ),
204
  ),
205
+ 'is_pro' => ES()->is_pro(),
206
  );
207
 
208
  wp_localize_script( $this->email_subscribers, 'ig_es_js_data', $ig_es_js_data );
209
 
210
+ if ( 'es_workflows' === $get_page ) {
 
 
211
 
212
  if ( ! wp_script_is( 'clipboard', 'registered' ) ) {
213
  wp_enqueue_script( 'clipboard', plugin_dir_url( __FILE__ ) . 'js/clipboard.js', array( 'jquery' ), '2.0.6', false );
214
  }
215
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
  if ( ! function_exists( 'ig_es_wp_js_editor_admin_scripts' ) ) {
217
  /**
218
  * Include WP JS Editor library's main file. This file contains required functions to enqueue required js file which being used to create WordPress editor dynamcially.
222
 
223
  // Load required html/js for dynamic WordPress editor.
224
  ig_es_wp_js_editor_admin_scripts();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
225
 
226
+ // Localize additional required data for workflow functionality
227
+ $workflows_data = ES_Workflow_Admin_Edit::get_workflow_data();
228
+ wp_localize_script( $this->email_subscribers, 'ig_es_workflows_data', $workflows_data );
229
+ } else if ( 'es_subscribers' === $get_page ) {
230
+
231
+ $action = ig_es_get_request_data( 'action' );
232
+ if ( 'import' === $action ) {
233
+ // Library to handle CSV file upload.
234
+ wp_enqueue_script( 'plupload-all' );
235
+ }
236
  }
237
 
238
  //timepicker
239
  wp_register_script( $this->email_subscribers . '-timepicker', plugin_dir_url( __FILE__ ) . 'js/jquery.timepicker.js', array( 'jquery' ), ES_PLUGIN_VERSION, true );
240
  wp_enqueue_script( $this->email_subscribers . '-timepicker' );
241
 
242
+
243
  if ( ! empty( $get_page ) && 'es_dashboard' === $get_page || 'es_reports' === $get_page ) {
244
  wp_enqueue_script( 'frappe-js', 'https://unpkg.com/frappe-charts@1.5.2/dist/frappe-charts.min.iife.js', array( 'jquery' ), $this->version, false );
245
  }
630
  $list_id = ig_es_get_request_data( 'list_id', 0 );
631
  $status = ig_es_get_request_data( 'status', 'all' );
632
  $conditions = ig_es_get_request_data( 'conditions', array() );
633
+ $get_count = ig_es_get_request_data( 'get_count', 'no' );
634
 
635
  if ( 0 == $list_id && empty( $conditions) ) {
636
  return 0;
637
  }
638
 
639
  $response_data = array();
640
+
641
  if ( ! empty( $conditions ) ) {
642
+ if ( 'yes' === $get_count ) {
643
+ $args = array(
644
+ 'lists' => $list_id,
645
+ 'conditions' => $conditions,
646
+ 'status' => $status,
647
+ 'return_count' => true,
648
+ );
649
+ $query = new IG_ES_Subscribers_Query();
650
+ $response_data['total'] = $query->run( $args );
651
+ }
652
  ob_start();
653
  do_action( 'ig_es_campaign_show_conditions', $conditions );
654
  $response_data['conditions_html'] = ob_get_clean();
lite/admin/class-ig-es-campaign-rules.php CHANGED
@@ -76,9 +76,9 @@ if ( ! class_exists( 'IG_ES_Campaign_Rules' ) ) {
76
  $this->simple_operators = $this->get_simple_operators();
77
  $this->string_operators = $this->get_string_operators();
78
  $this->bool_operators = $this->get_bool_operators();
79
- $this->campaign_rules = $this->get_campaign_rules();
80
 
81
- add_action( 'ig_es_show_campaign_rules', array( $this, 'show_campaign_rules' ) );
82
  add_action( 'ig_es_campaign_show_conditions', array( $this, 'show_conditions' ) );
83
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
84
  }
@@ -87,38 +87,12 @@ if ( ! class_exists( 'IG_ES_Campaign_Rules' ) ) {
87
  * Register the JavaScript for campaign rules.
88
  */
89
  public function enqueue_scripts() {
90
-
91
- global $wp_locale;
92
 
93
  $current_page = ig_es_get_request_data( 'page' );
94
 
95
  if ( in_array( $current_page, array( 'es_newsletters', 'es_sequence' ), true ) ) {
96
  wp_register_script( 'alpine', plugins_url( '/js/alpine.js', __FILE__ ), array(), '2.8.0', false );
97
  wp_enqueue_script( 'alpine' );
98
-
99
- wp_register_script( 'ig-es-campaign-rules', plugins_url( '/js/campaign-rules.js', __FILE__ ), array(), ES_PLUGIN_VERSION, false );
100
- wp_enqueue_script( 'ig-es-campaign-rules' );
101
-
102
- $rules_data = array(
103
- 'security' => wp_create_nonce( 'ig-es-admin-ajax-nonce' ),
104
- 'i18n' => array(
105
- 'start_of_week' => get_option( 'start_of_week' ),
106
- 'next' => esc_html__( 'next', 'email-subscribers' ),
107
- 'prev' => esc_html__( 'prev', 'email-subscribers' ),
108
- 'day_names' => $wp_locale->weekday,
109
- 'day_names_min' => array_values( $wp_locale->weekday_abbrev ),
110
- 'month_names' => array_values( $wp_locale->month ),
111
- 'remove_conditions' => esc_html__( 'Do you really like to remove all conditions?', 'email-subscribers' ),
112
- ),
113
- 'is_pro' => ES()->is_pro(),
114
- );
115
-
116
- wp_localize_script( 'ig-es-campaign-rules', 'ig_es_rules_data', $rules_data );
117
- }
118
-
119
- if ( in_array( $current_page, array( 'es_newsletters', 'es_sequence', 'es_reports' ), true ) ) {
120
- wp_register_style( 'ig-es-campaign-rules', plugins_url( '/css/campaign-rules.css', __FILE__ ), array(), ES_PLUGIN_VERSION, 'all' );
121
- wp_enqueue_style( 'ig-es-campaign-rules' );
122
  }
123
  }
124
 
@@ -129,10 +103,16 @@ if ( ! class_exists( 'IG_ES_Campaign_Rules' ) ) {
129
  *
130
  * @since 4.6.11
131
  */
132
- public function show_campaign_rules( $campaign_data = array() ) {
133
 
134
  $current_page = ig_es_get_request_data( 'page' );
135
- $campaign_id = ! empty( $campaign_data['id'] ) ? $campaign_data['id'] : 1;
 
 
 
 
 
 
136
 
137
  $conditions = array();
138
  if ( ! empty( $campaign_data['meta'] ) ) {
@@ -141,12 +121,13 @@ if ( ! class_exists( 'IG_ES_Campaign_Rules' ) ) {
141
  }
142
 
143
  $args = array();
144
- if ( 'es_newsletters' === $current_page ) {
145
  $args = array(
146
  'include_types' => array(
147
  'newsletter'
148
  ),
149
  'status' => array(
 
150
  IG_ES_CAMPAIGN_STATUS_FINISHED
151
  ),
152
  );
@@ -157,15 +138,19 @@ if ( ! class_exists( 'IG_ES_Campaign_Rules' ) ) {
157
  ),
158
  );
159
  }
 
 
 
 
160
  $all_campaigns = ES()->campaigns_db->get_all_campaigns( $args );
161
- $lists = ES()->lists_db->get_list_id_name_map();
 
162
  if ( ! empty( $all_campaigns ) ) {
163
  $all_campaigns_stati = array_column( $all_campaigns, 'status' );
164
  }
165
 
166
  $countries_data = ES_Geolocation::get_countries();
167
 
168
-
169
  $input_name = 'es_newsletters' === $current_page ? 'broadcast_data[meta][list_conditions]' : 'seq_data[' . $campaign_id . '][list_conditions]';
170
 
171
  $select_list_attr = ES()->is_pro() ? 'multiple="multiple"' : '';
@@ -182,7 +167,7 @@ if ( ! class_exists( 'IG_ES_Campaign_Rules' ) ) {
182
  width: 100%!important;
183
  }
184
  </style>
185
- <div class="ig-es-campaign-rules my-2" x-data="{ <?php echo esc_attr( $sidebar_id ); ?>: false }">
186
  <label for="es-campaign-condition" class="text-sm font-medium leading-5 text-gray-700"><?php esc_html_e( 'Recipients', 'email-subscribers' ); ?>:</label>
187
  <div class="ig-es-conditions-render-wrapper">
188
  <?php
@@ -238,10 +223,9 @@ if ( ! class_exists( 'IG_ES_Campaign_Rules' ) ) {
238
  <div class="h-full rounded-md" aria-hidden="true">
239
  <div class="absolute inset-0 z-50">
240
  <div class="foot pt-2 px-6 text-right">
241
- <div class="broadcast-conditions-total-contacts">
242
- <p class="inline font-medium text-base tracking-wide pr-2 text-gray-400"><?php esc_html_e( 'Total recipients', 'email-subscribers' ); ?>: </span> <span class="ig-es-total-contacts">&ndash;</span></div>
243
-
244
- </div>
245
  <div class="ig-es-conditions px-6 h-full">
246
  <div class="ig-es-condition-container"></div>
247
  <div class="ig-es-conditions-wrap mt-1 mb-3 overflow-auto">
@@ -353,22 +337,20 @@ if ( ! class_exists( 'IG_ES_Campaign_Rules' ) ) {
353
  </select>
354
  </div>
355
  <div class="ig-es-conditions-value-field" data-fields=",_sent,_sent__not_in,_open,_open__not_in,_click,_click__not_in,">
356
- <?php if ( $all_campaigns ) : ?>
357
- <?php foreach ( $value_arr as $k => $v ) : ?>
358
  <div class="-mr-3">
359
- <select name="<?php echo esc_attr( $input_name ); ?>[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $j ); ?>][value][]" class="condition-value <?php echo esc_attr( $select_list_class ); ?>" <?php echo esc_attr( $select_list_attr ); ?>>
360
  <option value="0"><?php echo esc_html__( 'Any campaign', 'email-subscribers' ); ?></option>
361
- <?php
362
- foreach ( $all_campaigns as $campaign ) :
363
- ?>
 
 
364
  <option value="<?php echo esc_attr( $campaign['id'] ); ?>" <?php selected( $v, $campaign['id'] ); ?>><?php echo $campaign['name'] ? esc_html( $campaign['name'] ) : '[' . esc_html__( 'no title', 'email-subscribers' ) . '] (# ' . esc_attr( $campaign['id'] ) . ')'; ?></option>
 
365
  <?php endforeach; ?>
 
366
  </select>
367
  </div>
368
- <?php endforeach; ?>
369
- <?php else : ?>
370
- <p><?php esc_html_e( 'No campaigns available', 'email-subscribers' ); ?><input type="hidden" class="condition-value" disabled value="0" name="<?php echo esc_attr( $input_name ); ?>[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $j ); ?>][value]"></p>
371
- <?php endif; ?>
372
  </div>
373
  <div class="ig-es-conditions-value-field" data-fields=",_lists__not_in,_lists__in,">
374
  <?php if ( $lists ) : ?>
@@ -407,6 +389,7 @@ if ( ! class_exists( 'IG_ES_Campaign_Rules' ) ) {
407
  <!-- /End replace -->
408
  </div>
409
  </div>
 
410
  </div>
411
  </section>
412
  </div>
@@ -522,7 +505,6 @@ if ( ! class_exists( 'IG_ES_Campaign_Rules' ) ) {
522
  $closing_quote = esc_html_x( '&#8221;', 'closing curly double quote', 'email-subscribers' );
523
 
524
  if ( isset( $this->campaign_rules['Campaign'][ $field ] ) ) {
525
- $aggregate_campaign_keys = array_keys( $this->aggregate_campaigns );
526
  if ( ! is_array( $value ) ) {
527
  $value = array( $value );
528
  }
@@ -582,11 +564,11 @@ if ( ! class_exists( 'IG_ES_Campaign_Rules' ) ) {
582
  }
583
 
584
  /**
585
- * Get list of subscribers data based rules
586
  *
587
- * @return array List of subscribers data based rules
588
  */
589
- private function get_campaign_rules() {
590
 
591
  $campaign_rules = array(
592
  'List' => array(
@@ -744,7 +726,7 @@ if ( ! class_exists( 'IG_ES_Campaign_Rules' ) ) {
744
  } else {
745
  $name = $campaign['name'];
746
  }
747
- return $name;
748
  }
749
 
750
  /**
@@ -785,7 +767,7 @@ if ( ! class_exists( 'IG_ES_Campaign_Rules' ) ) {
785
  *
786
  * @return array $conditions_data
787
  */
788
- public static function remove_empty_conditions ( $conditions_data = array() ) {
789
 
790
  if ( ! empty( $conditions_data ) ) {
791
  $list_conditions = $conditions_data;
76
  $this->simple_operators = $this->get_simple_operators();
77
  $this->string_operators = $this->get_string_operators();
78
  $this->bool_operators = $this->get_bool_operators();
79
+ $this->campaign_rules = self::get_campaign_rules();
80
 
81
+ add_action( 'ig_es_show_campaign_rules', array( $this, 'show_campaign_rules' ), 10, 2 );
82
  add_action( 'ig_es_campaign_show_conditions', array( $this, 'show_conditions' ) );
83
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
84
  }
87
  * Register the JavaScript for campaign rules.
88
  */
89
  public function enqueue_scripts() {
 
 
90
 
91
  $current_page = ig_es_get_request_data( 'page' );
92
 
93
  if ( in_array( $current_page, array( 'es_newsletters', 'es_sequence' ), true ) ) {
94
  wp_register_script( 'alpine', plugins_url( '/js/alpine.js', __FILE__ ), array(), '2.8.0', false );
95
  wp_enqueue_script( 'alpine' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  }
97
  }
98
 
103
  *
104
  * @since 4.6.11
105
  */
106
+ public function show_campaign_rules( $campaign_id = 0, $campaign_data = array() ) {
107
 
108
  $current_page = ig_es_get_request_data( 'page' );
109
+
110
+ $campaign_type = '';
111
+ if ( 'es_newsletters' === $current_page ) {
112
+ $campaign_type = 'newsletter';
113
+ } else {
114
+ $campaign_type = 'sequence_message';
115
+ }
116
 
117
  $conditions = array();
118
  if ( ! empty( $campaign_data['meta'] ) ) {
121
  }
122
 
123
  $args = array();
124
+ if ( 'newsletter' === $campaign_type ) {
125
  $args = array(
126
  'include_types' => array(
127
  'newsletter'
128
  ),
129
  'status' => array(
130
+ IG_ES_CAMPAIGN_STATUS_QUEUED,
131
  IG_ES_CAMPAIGN_STATUS_FINISHED
132
  ),
133
  );
138
  ),
139
  );
140
  }
141
+
142
+ if ( ! empty( $campaign_id ) ) {
143
+ $args['campaigns_not_in'] = array( $campaign_id );
144
+ }
145
  $all_campaigns = ES()->campaigns_db->get_all_campaigns( $args );
146
+
147
+ $lists = ES()->lists_db->get_list_id_name_map();
148
  if ( ! empty( $all_campaigns ) ) {
149
  $all_campaigns_stati = array_column( $all_campaigns, 'status' );
150
  }
151
 
152
  $countries_data = ES_Geolocation::get_countries();
153
 
 
154
  $input_name = 'es_newsletters' === $current_page ? 'broadcast_data[meta][list_conditions]' : 'seq_data[' . $campaign_id . '][list_conditions]';
155
 
156
  $select_list_attr = ES()->is_pro() ? 'multiple="multiple"' : '';
167
  width: 100%!important;
168
  }
169
  </style>
170
+ <div class="ig-es-campaign-rules my-2" data-campaign-id="<?php echo esc_attr( $campaign_id ); ?>" data-campaign-type="<?php echo esc_attr( $campaign_type ); ?>" x-data="{ <?php echo esc_attr( $sidebar_id ); ?>: false }">
171
  <label for="es-campaign-condition" class="text-sm font-medium leading-5 text-gray-700"><?php esc_html_e( 'Recipients', 'email-subscribers' ); ?>:</label>
172
  <div class="ig-es-conditions-render-wrapper">
173
  <?php
223
  <div class="h-full rounded-md" aria-hidden="true">
224
  <div class="absolute inset-0 z-50">
225
  <div class="foot pt-2 px-6 text-right">
226
+ <div class="campaign-conditions-total-contacts">
227
+ <p class="inline font-medium text-base tracking-wide pr-2 text-gray-400"><?php esc_html_e( 'Total recipients', 'email-subscribers' ); ?>: </span> <span class="ig-es-total-contacts">&ndash;</span></div>
228
+ </div>
 
229
  <div class="ig-es-conditions px-6 h-full">
230
  <div class="ig-es-condition-container"></div>
231
  <div class="ig-es-conditions-wrap mt-1 mb-3 overflow-auto">
337
  </select>
338
  </div>
339
  <div class="ig-es-conditions-value-field" data-fields=",_sent,_sent__not_in,_open,_open__not_in,_click,_click__not_in,">
 
 
340
  <div class="-mr-3">
341
+ <select name="<?php echo esc_attr( $input_name ); ?>[<?php echo esc_attr( $i ); ?>][<?php echo esc_attr( $j ); ?>][value][]" class="condition-value ig-es-campaign-select-field <?php echo esc_attr( $select_list_class ); ?>" <?php echo esc_attr( $select_list_attr ); ?>>
342
  <option value="0"><?php echo esc_html__( 'Any campaign', 'email-subscribers' ); ?></option>
343
+ <?php if ( $all_campaigns ) : ?>
344
+ <?php foreach ( $value_arr as $k => $v ) : ?>
345
+ <?php
346
+ foreach ( $all_campaigns as $campaign ) :
347
+ ?>
348
  <option value="<?php echo esc_attr( $campaign['id'] ); ?>" <?php selected( $v, $campaign['id'] ); ?>><?php echo $campaign['name'] ? esc_html( $campaign['name'] ) : '[' . esc_html__( 'no title', 'email-subscribers' ) . '] (# ' . esc_attr( $campaign['id'] ) . ')'; ?></option>
349
+ <?php endforeach; ?>
350
  <?php endforeach; ?>
351
+ <?php endif; ?>
352
  </select>
353
  </div>
 
 
 
 
354
  </div>
355
  <div class="ig-es-conditions-value-field" data-fields=",_lists__not_in,_lists__in,">
356
  <?php if ( $lists ) : ?>
389
  <!-- /End replace -->
390
  </div>
391
  </div>
392
+ <?php do_action( 'ig_es_upsell_campaign_rules'); ?>
393
  </div>
394
  </section>
395
  </div>
505
  $closing_quote = esc_html_x( '&#8221;', 'closing curly double quote', 'email-subscribers' );
506
 
507
  if ( isset( $this->campaign_rules['Campaign'][ $field ] ) ) {
 
508
  if ( ! is_array( $value ) ) {
509
  $value = array( $value );
510
  }
564
  }
565
 
566
  /**
567
+ * Get list of campaign rules
568
  *
569
+ * @return array List of campaign rules
570
  */
571
+ public static function get_campaign_rules() {
572
 
573
  $campaign_rules = array(
574
  'List' => array(
726
  } else {
727
  $name = $campaign['name'];
728
  }
729
+ return '<span class="campaign-name" data-campaign-id="' . esc_attr( $campaign_id ) . '">' . $name . '</span>';
730
  }
731
 
732
  /**
767
  *
768
  * @return array $conditions_data
769
  */
770
+ public static function remove_empty_conditions( $conditions_data = array() ) {
771
 
772
  if ( ! empty( $conditions_data ) ) {
773
  $list_conditions = $conditions_data;
lite/admin/css/campaign-rules.css DELETED
@@ -1,163 +0,0 @@
1
- .ig-es-conditions-wrap .ig-es-condition-group:after, .ig-es-conditions-wrap .ig-es-condition:after{
2
- content: attr(data-operator);
3
- position: absolute;
4
- left: 320px;
5
- padding: 3px 1px;
6
- text-transform: uppercase;
7
- color: #999;
8
- font-size: 16px;
9
- line-height: 1em;
10
- z-index: 1;
11
- bottom: -35px;
12
- }
13
- .ig-es-conditions-wrap .ig-es-condition:after{
14
- background-color: #fff;
15
- padding: 2px 10px;
16
- font-size: 14px;
17
- bottom: -10px;
18
- left: 300px;
19
- }
20
- .ig-es-conditions-wrap .ig-es-condition-group:last-child:after, .ig-es-conditions-wrap .ig-es-condition:last-child:after, .ig-es-condition-container{
21
- display: none;
22
- }
23
- .ig-es-conditions-wrap .ig-es-condition-group:last-child, .ig-es-conditions-wrap .ig-es-condition:last-child{
24
- margin-bottom: 0;
25
- }
26
- .ig-es-conditions-wrap .ig-es-condition, .ig-es-conditions-wrap .ig-es-condition-empty{
27
- border-bottom: 1px dotted #DFDFDF;
28
- background-color: #fff;
29
- position: relative;
30
- }
31
-
32
- .ig-es-conditions-wrap .ig-es-condition:last-child{
33
- border-bottom: none;
34
- }
35
-
36
- .ig-es-conditions-field-fields, .ig-es-conditions-operator-fields, .ig-es-conditions-value-fields{
37
- float: left;
38
- max-width: 37%;
39
- padding-right: 4px;
40
- }
41
- .rtl .ig-es-conditions-field-fields,.rtl .ig-es-conditions-operator-fields,.rtl .ig-es-conditions-value-fields{
42
- float: right;
43
- padding-right: 0px;
44
- padding-left: 4px;
45
- }
46
- .ig-es-conditions-operator-fields{
47
- max-width: 140px;
48
- }
49
- .ig-es-conditions-operator-field, .ig-es-conditions-value-field{
50
- display: none;
51
- }
52
- .ig-es-conditions-operator-field.active, .ig-es-conditions-value-field.active{
53
- display: block;
54
- }
55
- .ig-es-conditions-wrap select, .ig-es-conditions-wrap input{
56
- max-width: 100%
57
- }
58
- .ig-es-conditions-wrap .ig-es-condition-empty{
59
- background-color: none;
60
- border: 1px dotted #DFDFDF;
61
- text-align: center;
62
- padding: 10px 0 10px;
63
- }
64
- .ig-es-conditions-wrap .remove-condition{
65
- visibility: hidden;
66
- }
67
-
68
- .rtl .ig-es-conditions-wrap .remove-condition{
69
- float: left;
70
- }
71
-
72
- .ig-es-conditions-wrap .ig-es-condition:hover .remove-condition{
73
- visibility: visible;
74
- }
75
-
76
- /*.ig-es-conditions-wrap .add-or-condition{
77
- position: absolute;
78
- bottom: 12px;
79
- z-index: 1;
80
- }
81
- */
82
- .ig-es-conditions-wrap .datepicker.condition-value{
83
- width: 100px;
84
- }
85
- .ig-es-condition .ig-es-conditions-value-field p, .ig-es-condition .ig-es-conditions-value-field ul{
86
- margin: 0;
87
- }
88
- .ig-es-condition-render span.ig-es-condition-type {
89
- float: left;
90
- padding-right: 4px;
91
- }
92
- .rtl .ig-es-condition-render span.ig-es-condition-type {
93
- float: right;
94
- padding-right: 0;
95
- padding-left: 4px;
96
- }
97
- .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:first-child{
98
- display: inline-block;
99
- }
100
- .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect .condition-value{
101
- width: 180px;
102
- }
103
- .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect a.ig-es-condition-add-multiselect, .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:first-child span, .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect a.ig-es-condition-remove-multiselect{
104
- visibility: hidden;
105
- }
106
- .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect a{
107
- cursor: pointer;
108
- }
109
- .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:hover a.ig-es-condition-remove-multiselect, .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:last-child a.ig-es-condition-add-multiselect{
110
- visibility: visible;
111
- }
112
-
113
- .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:first-child a.ig-es-condition-remove-multiselect{
114
- visibility: hidden !important;
115
- }
116
-
117
- div.ig-es-conditions-render-wrapper::after,
118
- .ig-es-conditions-render-wrapper .ig-es-conditions-render::after {
119
- content: '';
120
- display: block;
121
- clear: both;
122
- }
123
-
124
- .ig-es-conditions-render-wrapper .ig-es-conditions-render {
125
- margin: 10px 0 10px 0;
126
- padding: 5px 0 5px 8px;
127
- border: 0.5px solid rgb(210, 214, 220);
128
- border-radius: 0.25rem;
129
- }
130
-
131
- .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:not(:first-child) {
132
- margin-top:0.5rem;
133
- }
134
- .es-add-or-condition{
135
- border: hsl(215,13.8%,54.1%);
136
- color: rgb(75, 85, 99);
137
- border: 1px solid hsl(215,13.8%,54.1%);
138
- top:67px;
139
- }
140
-
141
- /*.es-report-description .ig-es-condition-render-group span, .es-report-description .ig-es-condition-render-group{
142
- float:none !important;
143
- clear:none !important;
144
- }
145
-
146
- .es-report-description .ig-es-condition-render-group, .es-report-description .ig-es-conditions-render{
147
- display: inline-block !important;
148
- font-weight:normal;
149
- }*/
150
-
151
- .email-subscribers_page_es_reports .ig-es-condition-render-group span, .email-subscribers_page_es_reports .ig-es-condition-type span, .email-subscribers_page_es_reports span.ig-es-condition-type{
152
- font-weight: normal;
153
- color: rgba(22, 30, 46, 1);
154
- padding-right:1px;
155
- }
156
-
157
- .email-subscribers_page_es_reports .recipient-text {
158
- position: absolute;
159
- top: 12px;
160
- }
161
-
162
-
163
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lite/admin/css/email-subscribers-admin.css CHANGED
@@ -1613,12 +1613,6 @@ body[class*="_page_es_workflows"] #post-body .postbox .inside {
1613
  }
1614
  */
1615
 
1616
-
1617
- li.menu-top div.wp-menu-image img {
1618
- border-style: none !important;
1619
- display: inline;
1620
- }
1621
-
1622
  /** Broadcast New UI CSS */
1623
  /* input[type="date"]::-webkit-inner-spin-button,
1624
  input[type="date"]::-webkit-clear-button {
@@ -1915,3 +1909,187 @@ div.broadcast_side_content{
1915
  .es-campaign-reports-table{
1916
  padding-top: 0 !important;
1917
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1613
  }
1614
  */
1615
 
 
 
 
 
 
 
1616
  /** Broadcast New UI CSS */
1617
  /* input[type="date"]::-webkit-inner-spin-button,
1618
  input[type="date"]::-webkit-clear-button {
1909
  .es-campaign-reports-table{
1910
  padding-top: 0 !important;
1911
  }
1912
+
1913
+ #es_campaign_report tbody tr td.country_flag{
1914
+ font-size: 0;
1915
+ }
1916
+
1917
+ /* Campaign Rules CSS - Start */
1918
+ .ig-es-conditions-wrap .ig-es-condition-group:after, .ig-es-conditions-wrap .ig-es-condition:after{
1919
+ content: attr(data-operator);
1920
+ position: absolute;
1921
+ left: 320px;
1922
+ padding: 3px 1px;
1923
+ text-transform: uppercase;
1924
+ color: #999;
1925
+ font-size: 16px;
1926
+ line-height: 1em;
1927
+ z-index: 1;
1928
+ bottom: -35px;
1929
+ }
1930
+ .ig-es-conditions-wrap .ig-es-condition:after{
1931
+ background-color: #fff;
1932
+ padding: 2px 10px;
1933
+ font-size: 14px;
1934
+ bottom: -10px;
1935
+ left: 300px;
1936
+ }
1937
+ .ig-es-conditions-wrap .ig-es-condition-group:last-child:after, .ig-es-conditions-wrap .ig-es-condition:last-child:after, .ig-es-condition-container{
1938
+ display: none;
1939
+ }
1940
+ .ig-es-conditions-wrap .ig-es-condition-group:last-child, .ig-es-conditions-wrap .ig-es-condition:last-child{
1941
+ margin-bottom: 0;
1942
+ }
1943
+ .ig-es-conditions-wrap .ig-es-condition, .ig-es-conditions-wrap .ig-es-condition-empty{
1944
+ border-bottom: 1px dotted #DFDFDF;
1945
+ background-color: #fff;
1946
+ position: relative;
1947
+ }
1948
+
1949
+ .ig-es-conditions-wrap .ig-es-condition:last-child{
1950
+ border-bottom: none;
1951
+ }
1952
+
1953
+ .ig-es-conditions-field-fields, .ig-es-conditions-operator-fields, .ig-es-conditions-value-fields{
1954
+ float: left;
1955
+ max-width: 37%;
1956
+ padding-right: 4px;
1957
+ }
1958
+ .rtl .ig-es-conditions-field-fields,.rtl .ig-es-conditions-operator-fields,.rtl .ig-es-conditions-value-fields{
1959
+ float: right;
1960
+ padding-right: 0px;
1961
+ padding-left: 4px;
1962
+ }
1963
+ .ig-es-conditions-operator-fields{
1964
+ max-width: 140px;
1965
+ }
1966
+ .ig-es-conditions-operator-field, .ig-es-conditions-value-field{
1967
+ display: none;
1968
+ }
1969
+ .ig-es-conditions-operator-field.active, .ig-es-conditions-value-field.active{
1970
+ display: block;
1971
+ }
1972
+ .ig-es-conditions-wrap select, .ig-es-conditions-wrap input{
1973
+ max-width: 100%
1974
+ }
1975
+ .ig-es-conditions-wrap .ig-es-condition-empty{
1976
+ background-color: none;
1977
+ border: 1px dotted #DFDFDF;
1978
+ text-align: center;
1979
+ padding: 10px 0 10px;
1980
+ }
1981
+ .ig-es-conditions-wrap .remove-condition{
1982
+ visibility: hidden;
1983
+ }
1984
+
1985
+ .rtl .ig-es-conditions-wrap .remove-condition{
1986
+ float: left;
1987
+ }
1988
+
1989
+ .ig-es-conditions-wrap .ig-es-condition:hover .remove-condition{
1990
+ visibility: visible;
1991
+ }
1992
+
1993
+ /*.ig-es-conditions-wrap .add-or-condition{
1994
+ position: absolute;
1995
+ bottom: 12px;
1996
+ z-index: 1;
1997
+ }
1998
+ */
1999
+ .ig-es-conditions-wrap .datepicker.condition-value{
2000
+ width: 100px;
2001
+ }
2002
+ .ig-es-condition .ig-es-conditions-value-field p, .ig-es-condition .ig-es-conditions-value-field ul{
2003
+ margin: 0;
2004
+ }
2005
+ .ig-es-condition-render span.ig-es-condition-type {
2006
+ float: left;
2007
+ padding-right: 2px;
2008
+ }
2009
+ .rtl .ig-es-condition-render span.ig-es-condition-type {
2010
+ float: right;
2011
+ padding-right: 0;
2012
+ padding-left: 4px;
2013
+ }
2014
+ .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:first-child{
2015
+ display: inline-block;
2016
+ }
2017
+ .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect .condition-value{
2018
+ width: 180px;
2019
+ }
2020
+ .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect a.ig-es-condition-add-multiselect, .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:first-child span, .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect a.ig-es-condition-remove-multiselect{
2021
+ visibility: hidden;
2022
+ }
2023
+ .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect a{
2024
+ cursor: pointer;
2025
+ }
2026
+ .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:hover a.ig-es-condition-remove-multiselect, .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:last-child a.ig-es-condition-add-multiselect{
2027
+ visibility: visible;
2028
+ }
2029
+
2030
+ .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:first-child a.ig-es-condition-remove-multiselect{
2031
+ visibility: hidden !important;
2032
+ }
2033
+
2034
+ div.ig-es-conditions-render-wrapper::after,
2035
+ .ig-es-conditions-render-wrapper .ig-es-conditions-render::after {
2036
+ content: '';
2037
+ display: block;
2038
+ clear: both;
2039
+ }
2040
+
2041
+ .ig-es-conditions-render-wrapper .ig-es-conditions-render {
2042
+ margin: 10px 0 10px 0;
2043
+ padding: 5px 0 5px 8px;
2044
+ border: 0.5px solid rgb(210, 214, 220);
2045
+ border-radius: 0.25rem;
2046
+ }
2047
+
2048
+ .ig-es-conditions-wrap .ig-es-conditions-value-field-multiselect:not(:first-child) {
2049
+ margin-top:0.5rem;
2050
+ }
2051
+ .es-add-or-condition{
2052
+ border: hsl(215,13.8%,54.1%);
2053
+ color: rgb(75, 85, 99);
2054
+ border: 1px solid hsl(215,13.8%,54.1%);
2055
+ top:67px;
2056
+ }
2057
+
2058
+ /*.es-report-description .ig-es-condition-render-group span, .es-report-description .ig-es-condition-render-group{
2059
+ float:none !important;
2060
+ clear:none !important;
2061
+ }
2062
+
2063
+ .es-report-description .ig-es-condition-render-group, .es-report-description .ig-es-conditions-render{
2064
+ display: inline-block !important;
2065
+ font-weight:normal;
2066
+ }*/
2067
+
2068
+ body[class*="es_reports"] .ig-es-condition-render-group span,
2069
+ body[class*="es_reports"] .ig-es-condition-type span,
2070
+ body[class*="es_reports"] span.ig-es-condition-type{
2071
+ font-weight: normal;
2072
+ color: rgba(22, 30, 46, 1);
2073
+ padding-right:1px;
2074
+ }
2075
+
2076
+ body[class*="es_reports"] .recipient-text {
2077
+ position: absolute;
2078
+ top: 12px;
2079
+ }
2080
+
2081
+ /* Hide total contacts count on the sequence page */
2082
+ .es_sequences_wrapper .campaign-conditions-total-contacts {
2083
+ display:none;
2084
+ }
2085
+
2086
+ .es_sequences_wrapper .ig-es-conditions-render-wrapper, .es_sequences_wrapper .ig-es-campaign-rules{
2087
+ width:100%;
2088
+ }
2089
+ .es_sequences_wrapper .ig-es-conditions-render-wrapper .ig-es-conditions-render{
2090
+ border: none;
2091
+ margin:5px 0;
2092
+ }
2093
+
2094
+ /* Campaign Rules CSS - END */
2095
+
lite/admin/dist/main.css CHANGED
@@ -1 +1 @@
1
- /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box;border:0 solid #d2d6dc}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#a0aec0}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}a{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}img{border-width:0}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-input::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-moz-placeholder{color:#9fa6b2;opacity:1}.form-input::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::placeholder{color:#9fa6b2;opacity:1}.form-input:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-textarea::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-moz-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::placeholder{color:#9fa6b2;opacity:1}.form-textarea:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-multiselect:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;background-repeat:no-repeat;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem 2.5rem .5rem .75rem;font-size:1rem;line-height:1.5;background-position:right .5rem center;background-size:1.5em 1.5em}.form-select::-ms-expand{color:#9fa6b2;border:none}@media not print{.form-select::-ms-expand{display:none}}@media print and (-ms-high-contrast:active),print and (-ms-high-contrast:none){.form-select{padding-right:.75rem}}.form-select:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-checkbox::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.25rem}.form-checkbox:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked:focus,.form-radio:checked{border-color:transparent}.form-radio:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;border-radius:100%;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px}.form-radio:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-radio:checked:focus{border-color:transparent}.ig-es-primary-button,.ig-es-send-queue-emails{border-color:transparent;padding:.5rem 1rem;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.ig-es-primary-button,.ig-es-send-queue-emails,.ig-es-title-button,.wp-heading-inline+.page-title-action{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:.375rem;border-width:1px;font-size:.875rem;line-height:1.25rem;font-weight:500;--text-opacity:1;--bg-opacity:1;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.ig-es-title-button,.wp-heading-inline+.page-title-action{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity));color:#374151;color:rgba(55,65,81,var(--text-opacity));background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));padding:.25rem .75rem}.wrap .wp-heading-inline+.page-title-action{margin-left:.5rem}.ig-es-title-button:hover,.wp-heading-inline+.page-title-action:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity));--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.ig-es-title-button:focus,.wp-heading-inline+.page-title-action:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45);--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.ig-es-primary-button:hover{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity));--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.ig-es-primary-button:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.ig-es-imp-button{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important;-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important;border-radius:.375rem!important;border-width:1px!important;border-color:transparent!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;font-size:.875rem!important;line-height:1.25rem!important;font-weight:500!important;background-color:#0e9f6e!important;background-color:rgba(14,159,110,var(--bg-opacity))!important;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform!important;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;-webkit-transition-duration:.15s!important;transition-duration:.15s!important}.ig-es-imp-button,.ig-es-imp-button:hover{--text-opacity:1!important;color:#fff!important;color:rgba(255,255,255,var(--text-opacity))!important;--bg-opacity:1!important}.ig-es-imp-button:hover{background-color:#31c48d!important;background-color:rgba(49,196,141,var(--bg-opacity))!important}.ig-es-imp-button:focus{outline:2px solid transparent!important;outline-offset:2px!important;-webkit-box-shadow:0 0 0 3px rgba(132,225,188,.45)!important;box-shadow:0 0 0 3px rgba(132,225,188,.45)!important}.ig-es-link-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:.375rem;border-width:1px;border-color:transparent;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));font-size:.875rem;line-height:1.25rem;font-weight:500;background-color:#ff5a1f;background-color:rgba(255,90,31,var(--bg-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.ig-es-link-button,.ig-es-link-button:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity));--bg-opacity:1}.ig-es-link-button:hover{background-color:#ff8a4c;background-color:rgba(255,138,76,var(--bg-opacity))}.ig-es-link-button:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(253,186,140,.45);box-shadow:0 0 0 3px rgba(253,186,140,.45)}.ig-es-action.js-open .ig-es-action__header{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity));--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.form-input{--bg-opacity:1!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;border-width:1px!important;border-radius:.375rem!important;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important}.form-input:focus{outline:2px solid transparent!important;outline-offset:2px!important;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;box-shadow:0 0 0 3px rgba(164,202,254,.45)!important}.form-checkbox{content:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E")}.form-radio{content:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}.form-checkbox:checked,.form-radio:checked{--text-opacity:1!important;color:#5850ec!important;color:rgba(88,80,236,var(--text-opacity))!important}.form-select{font-size:.875rem!important;--border-opacity:1!important;border-color:#9fa6b2!important;border-color:rgba(159,166,178,var(--border-opacity))!important;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important}.form-select:focus,input[type=number]:focus{outline:2px solid transparent!important;outline-offset:2px!important;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;--border-opacity:1!important;border-color:#a4cafe!important;border-color:rgba(164,202,254,var(--border-opacity))!important}.es-check-toggle:checked~.es-mail-toggle-line{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.es-check-toggle:checked~.es-mail-toggle-dot{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));--transform-translate-x:100%}.es-mail-toggle-line{width:2.25rem;height:1.25rem;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity));-webkit-box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06);box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06)}.es-mail-toggle-dot,.es-mail-toggle-line{display:block;--bg-opacity:1;border-radius:9999px}.es-mail-toggle-dot{width:.875rem;height:.875rem;margin-left:.25rem;position:absolute;top:0;bottom:0;-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.es-mail-toggle-dot:focus-within{-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45)}[type=radio]:checked+.es-mailer-logo{-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));--transform-scale-x:1.1;--transform-scale-y:1.1;-webkit-box-shadow:0 0 3px 1px #5a67d8;box-shadow:0 0 3px 1px #5a67d8}[type=radio]:checked+.es-mailer-logo:hover{border-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.wp-core-ui .button,.wp-core-ui .button-secondary{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{font-size:.875rem;border-radius:.375rem;border-width:1px;line-height:1.25rem;font-weight:500;--text-opacity:1}.wp-core-ui .button-primary{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.wp-core-ui .button-primary:hover,.wp-core-ui .button:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.wp-core-ui .search-box input[name=s],.wp-core-ui select{border-radius:.375rem}.wp-core-ui #bulk-action-selector-top,.wp-core-ui #doaction,.wp-core-ui #doaction2,.wp-core-ui #filter-by-date,.wp-core-ui #post-query-submit,.wp-core-ui #poststuff select,.wp-core-ui #search-submit{cursor:pointer;line-height:1.25rem;--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity));background-color:transparent;font-size:.875rem}.wp-core-ui #search-submit{margin-left:.375rem}.es-add-or-condition:hover,.wp-core-ui #doaction2:hover .wp-core-ui #post-query-submit:hover,.wp-core-ui #doaction:hover,.wp-core-ui #search-submit:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));--border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--border-opacity))}.es-add-or-condition:focus,.wp-core-ui #doaction2:focus .wp-core-ui #post-query-submit:focus,.wp-core-ui #doaction:focus,.wp-core-ui #search-submit:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(159,166,178,.45);box-shadow:0 0 0 3px rgba(159,166,178,.45)}.es-items-lists table.fixed,.post-type-es_template table.fixed{margin-top:1rem;margin-bottom:1rem;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);border-radius:.5rem;overflow:hidden}.es-items-lists table.fixed tfoot td,.es-items-lists table.fixed tfoot th,.es-items-lists table.fixed thead td,.es-items-lists table.fixed thead th,.post-type-es_template table.fixed tfoot th,.post-type-es_template table.fixed thead td,.post-type-es_template table.fixed thead th{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity));font-weight:500;letter-spacing:.05em}.es-items-lists table.fixed tfoot th,.es-items-lists table.fixed thead th,.post-type-es_template table.fixed tfoot th,.post-type-es_template table.fixed thead th{padding-top:.5rem;padding-bottom:.5rem}.es-items-lists .widefat thead td input,.post-type-es_template .widefat thead td input{margin-right:1.5rem}.post-type-es_template .wrap{padding-top:1rem;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.post-type-es_template .wrap>h1{padding-top:0;font-weight:600;--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));line-height:2.25rem}.es-items-lists .striped>tbody tr,.post-type-es_template .striped>tbody tr{border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));padding-top:.5rem;padding-bottom:.5rem}.es-campaign-reports-table .striped>tbody tr{border-bottom-width:2px}.es-items-lists .striped>tbody>:nth-child(odd),.post-type-es_template .striped>tbody>:nth-child(odd){--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.es_onboard_email{padding:.25rem .75rem!important}.es_reports_table_header{border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));text-align:left;font-size:.875rem;line-height:1rem;font-weight:500;--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity));letter-spacing:.05em}.importing-progress,.progress{width:100%;height:2rem;--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity));overflow:hidden;position:relative;text-align:right;line-height:1rem;margin-top:.375rem;border-radius:.25rem}.importing-progress span.bar,.progress span.bar{display:block;position:absolute;line-height:2.5rem;padding-top:.25rem;padding-bottom:.25rem;top:0;bottom:0;left:0;border-radius:.25rem;overflow:hidden;background-image:-webkit-gradient(linear,left top,right top,from(var(--gradient-color-stops)));background-image:linear-gradient(90deg,var(--gradient-color-stops));--gradient-from-color:#42389d;--gradient-color-stops:var(--gradient-from-color),var(--gradient-to-color,rgba(66,56,157,0));--gradient-to-color:#6875f5;--bg-opacity:1;background-color:#8da2fb;background-color:rgba(141,162,251,var(--bg-opacity))}.space-y-1>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.25rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.25rem*var(--space-y-reverse))}.space-y-2>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.5rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.5rem*var(--space-y-reverse))}.space-y-3>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.75rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.75rem*var(--space-y-reverse))}.space-x-3>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(0.75rem*var(--space-x-reverse));margin-left:calc(0.75rem*(1 - var(--space-x-reverse)))}.space-y-4>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(1rem*(1 - var(--space-y-reverse)));margin-bottom:calc(1rem*var(--space-y-reverse))}.space-y-5>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--space-y-reverse)));margin-bottom:calc(1.25rem*var(--space-y-reverse))}.divide-y>:not(template)~:not(template){--divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--divide-y-reverse)));border-bottom-width:calc(1px*var(--divide-y-reverse))}.divide-gray-200>:not(template)~:not(template){--divide-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--divide-opacity))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-50{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.bg-gray-200{--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.bg-gray-300{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity))}.bg-gray-500{--bg-opacity:1;background-color:#6b7280;background-color:rgba(107,114,128,var(--bg-opacity))}.bg-red-50{--bg-opacity:1;background-color:#fdf2f2;background-color:rgba(253,242,242,var(--bg-opacity))}.bg-red-100{--bg-opacity:1;background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity))}.bg-yellow-100{--bg-opacity:1;background-color:#fdf6b2;background-color:rgba(253,246,178,var(--bg-opacity))}.bg-green-100{--bg-opacity:1;background-color:#def7ec;background-color:rgba(222,247,236,var(--bg-opacity))}.bg-green-300{--bg-opacity:1;background-color:#84e1bc;background-color:rgba(132,225,188,var(--bg-opacity))}.bg-green-600{--bg-opacity:1;background-color:#057a55;background-color:rgba(5,122,85,var(--bg-opacity))}.bg-teal-50{--bg-opacity:1;background-color:#edfafa;background-color:rgba(237,250,250,var(--bg-opacity))}.bg-blue-50{--bg-opacity:1;background-color:#ebf5ff;background-color:rgba(235,245,255,var(--bg-opacity))}.bg-blue-300{--bg-opacity:1;background-color:#a4cafe;background-color:rgba(164,202,254,var(--bg-opacity))}.bg-indigo-200{--bg-opacity:1;background-color:#cddbfe;background-color:rgba(205,219,254,var(--bg-opacity))}.bg-indigo-500{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.bg-indigo-600{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.bg-indigo-700{--bg-opacity:1;background-color:#5145cd;background-color:rgba(81,69,205,var(--bg-opacity))}.bg-indigo-800{--bg-opacity:1;background-color:#42389d;background-color:rgba(66,56,157,var(--bg-opacity))}.bg-pink-200{--bg-opacity:1;background-color:#fad1e8;background-color:rgba(250,209,232,var(--bg-opacity))}.group:focus .group-focus\:bg-gray-400,.group:hover .group-hover\:bg-gray-400{--bg-opacity:1;background-color:#9fa6b2;background-color:rgba(159,166,178,var(--bg-opacity))}.hover\:bg-gray-50:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.hover\:bg-gray-100:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.hover\:bg-gray-300:hover{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity))}.hover\:bg-green-500:hover{--bg-opacity:1;background-color:#0e9f6e;background-color:rgba(14,159,110,var(--bg-opacity))}.hover\:bg-indigo-500:hover{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.hover\:bg-indigo-600:hover{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.focus\:bg-gray-50:focus{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.focus\:bg-gray-100:focus{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.bg-opacity-75{--bg-opacity:0.75}.border-collapse{border-collapse:collapse}.border-transparent{border-color:transparent}.border-gray-100{--border-opacity:1;border-color:#f4f5f7;border-color:rgba(244,245,247,var(--border-opacity))}.border-gray-200{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.border-gray-300{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.border-indigo-300{--border-opacity:1;border-color:#b4c6fc;border-color:rgba(180,198,252,var(--border-opacity))}.border-indigo-500{--border-opacity:1;border-color:#6875f5;border-color:rgba(104,117,245,var(--border-opacity))}.border-indigo-600{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.hover\:border-gray-200:hover{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.hover\:border-red-400:hover{--border-opacity:1;border-color:#f98080;border-color:rgba(249,128,128,var(--border-opacity))}.hover\:border-indigo-600:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.focus\:border-blue-300:focus{--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-0{border-width:0}.border-2{border-width:2px}.border{border-width:1px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.grid{display:grid}.contents{display:contents}.hidden{display:none}.flex-row{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.flex-col,.flex-row{-webkit-box-direction:normal}.flex-col{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.self-start{-ms-flex-item-align:start;align-self:flex-start}.justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.flex-1{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.flex-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.flex-shrink-0{-ms-flex-negative:0;flex-shrink:0}.float-right{float:right}.float-left{float:left}.clearfix:after{content:"";display:table;clear:both}.font-sans{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-thin{font-weight:200}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-0{height:0}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-15{height:3.75rem}.h-20{height:5rem}.h-48{height:12rem}.h-auto{height:auto}.h-1\.5{height:.375rem}.h-2\.5{height:.625rem}.h-full{height:100%}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.25rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-9{line-height:2.25rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.list-none{list-style-type:none}.list-disc{list-style-type:disc}.list-decimal{list-style-type:decimal}.m-4{margin:1rem}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mx-8{margin-left:2rem;margin-right:2rem}.mx-10{margin-left:2.5rem;margin-right:2.5rem}.my-12{margin-top:3rem;margin-bottom:3rem}.mx-auto{margin-left:auto;margin-right:auto}.-my-4{margin-top:-1rem;margin-bottom:-1rem}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-5{margin-top:1.25rem}.ml-5{margin-left:1.25rem}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.ml-6{margin-left:1.5rem}.mt-7{margin-top:1.75rem}.mb-7{margin-bottom:1.75rem}.ml-7{margin-left:1.75rem}.mt-8{margin-top:2rem}.mr-8{margin-right:2rem}.ml-8{margin-left:2rem}.mt-10{margin-top:2.5rem}.mr-10{margin-right:2.5rem}.mt-12{margin-top:3rem}.mb-12{margin-bottom:3rem}.ml-12{margin-left:3rem}.ml-14{margin-left:3.5rem}.mt-16{margin-top:4rem}.mr-16{margin-right:4rem}.ml-16{margin-left:4rem}.mt-0\.5{margin-top:.125rem}.mt-1\.5{margin-top:.375rem}.mr-1\.5{margin-right:.375rem}.mt-2\.5{margin-top:.625rem}.-mt-1{margin-top:-.25rem}.-mr-1{margin-right:-.25rem}.-mb-1{margin-bottom:-.25rem}.-mb-2{margin-bottom:-.5rem}.-mt-3{margin-top:-.75rem}.-mr-3{margin-right:-.75rem}.-mb-4{margin-bottom:-1rem}.-mt-5{margin-top:-1.25rem}.-ml-6{margin-left:-1.5rem}.-ml-8{margin-left:-2rem}.-mb-0\.5{margin-bottom:-.125rem}.-mt-1\.5{margin-top:-.375rem}.max-h-full{max-height:100%}.max-w-3xl{max-width:48rem}.max-w-7xl{max-width:80rem}.max-w-full{max-width:100%}.min-h-screen{min-height:100vh}.min-w-0{min-width:0}.min-w-full{min-width:100%}.object-cover{-o-object-fit:cover;object-fit:cover}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.p-0{padding:0}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-13{padding:3.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-7{padding-top:1.75rem;padding-bottom:1.75rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.px-12{padding-left:3rem;padding-right:3rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.pt-1{padding-top:.25rem}.pr-1{padding-right:.25rem}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.pt-2{padding-top:.5rem}.pr-2{padding-right:.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pt-3{padding-top:.75rem}.pr-3{padding-right:.75rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pt-5{padding-top:1.25rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.pt-6{padding-top:1.5rem}.pr-6{padding-right:1.5rem}.pb-6{padding-bottom:1.5rem}.pl-6{padding-left:1.5rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.pb-8{padding-bottom:2rem}.pl-8{padding-left:2rem}.pt-10{padding-top:2.5rem}.pl-10{padding-left:2.5rem}.pr-12{padding-right:3rem}.pb-12{padding-bottom:3rem}.pl-16{padding-left:4rem}.pt-0\.5{padding-top:.125rem}.pl-0\.5{padding-left:.125rem}.pt-1\.5{padding-top:.375rem}.pb-1\.5{padding-bottom:.375rem}.pointer-events-none{pointer-events:none}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.inset-0{right:0;left:0}.inset-0,.inset-y-0{top:0;bottom:0}.top-0{top:0}.right-0{right:0}.left-0{left:0}.bottom-2{bottom:.5rem}.bottom-5{bottom:1.25rem}.top-8{top:2rem}.top-10{top:2.5rem}.top-20{top:5rem}.resize{resize:both}.shadow-xs{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.05);box-shadow:0 0 0 1px rgba(0,0,0,.05)}.shadow-sm{-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05);box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.shadow{-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.shadow-md{-webkit-box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.shadow-lg{-webkit-box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.shadow-xl{-webkit-box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.shadow-inner{-webkit-box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06);box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06)}.hover\:shadow-md:hover{-webkit-box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.focus\:shadow-lg:focus{-webkit-box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.focus\:shadow-outline:focus{-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45)}.focus\:shadow-outline-blue:focus{-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.focus\:shadow-outline-red:focus{-webkit-box-shadow:0 0 0 3px rgba(248,180,180,.45);box-shadow:0 0 0 3px rgba(248,180,180,.45)}.focus\:shadow-outline-indigo:focus{-webkit-box-shadow:0 0 0 3px rgba(180,198,252,.45);box-shadow:0 0 0 3px rgba(180,198,252,.45)}.fill-current{fill:currentColor}.table-fixed{table-layout:fixed}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.text-black{--text-opacity:1;color:#000;color:rgba(0,0,0,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#d2d6dc;color:rgba(210,214,220,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.text-gray-800{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.text-red-400{--text-opacity:1;color:#f98080;color:rgba(249,128,128,var(--text-opacity))}.text-red-500{--text-opacity:1;color:#f05252;color:rgba(240,82,82,var(--text-opacity))}.text-red-600{--text-opacity:1;color:#e02424;color:rgba(224,36,36,var(--text-opacity))}.text-red-800{--text-opacity:1;color:#9b1c1c;color:rgba(155,28,28,var(--text-opacity))}.text-orange-400{--text-opacity:1;color:#ff8a4c;color:rgba(255,138,76,var(--text-opacity))}.text-orange-500{--text-opacity:1;color:#ff5a1f;color:rgba(255,90,31,var(--text-opacity))}.text-yellow-400{--text-opacity:1;color:#e3a008;color:rgba(227,160,8,var(--text-opacity))}.text-yellow-600{--text-opacity:1;color:#9f580a;color:rgba(159,88,10,var(--text-opacity))}.text-green-400{--text-opacity:1;color:#31c48d;color:rgba(49,196,141,var(--text-opacity))}.text-green-600{--text-opacity:1;color:#057a55;color:rgba(5,122,85,var(--text-opacity))}.text-green-800{--text-opacity:1;color:#03543f;color:rgba(3,84,63,var(--text-opacity))}.text-teal-400{--text-opacity:1;color:#16bdca;color:rgba(22,189,202,var(--text-opacity))}.text-teal-700{--text-opacity:1;color:#036672;color:rgba(3,102,114,var(--text-opacity))}.text-teal-800{--text-opacity:1;color:#05505c;color:rgba(5,80,92,var(--text-opacity))}.text-blue-400{--text-opacity:1;color:#76a9fa;color:rgba(118,169,250,var(--text-opacity))}.text-blue-500{--text-opacity:1;color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}.text-blue-700{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.text-blue-800{--text-opacity:1;color:#1e429f;color:rgba(30,66,159,var(--text-opacity))}.text-indigo-100{--text-opacity:1;color:#e5edff;color:rgba(229,237,255,var(--text-opacity))}.text-indigo-400{--text-opacity:1;color:#8da2fb;color:rgba(141,162,251,var(--text-opacity))}.text-indigo-500{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.text-indigo-600{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-indigo-700{--text-opacity:1;color:#5145cd;color:rgba(81,69,205,var(--text-opacity))}.text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:hover .group-hover\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:hover .group-hover\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:focus .group-focus\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:focus .group-focus\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.hover\:text-white:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.hover\:text-gray-500:hover{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.hover\:text-gray-800:hover{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.hover\:text-gray-900:hover{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.hover\:text-blue-700:hover{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.hover\:text-indigo-500:hover{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.focus\:text-gray-900:focus{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.active\:text-indigo-600:active{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-opacity-75{--text-opacity:0.75}.italic{font-style:italic}.not-italic{font-style:normal}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.underline{text-decoration:underline}.no-underline{text-decoration:none}.hover\:underline:hover{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.visible{visibility:visible}.whitespace-no-wrap{white-space:nowrap}.break-words{word-wrap:break-word;overflow-wrap:break-word}.break-all{word-break:break-all}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-0{width:0}.w-2{width:.5rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-12{width:3rem}.w-24{width:6rem}.w-40{width:10rem}.w-48{width:12rem}.w-56{width:14rem}.w-auto{width:auto}.w-1\.5{width:.375rem}.w-2\.5{width:.625rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-1\/4{width:25%}.w-2\/4{width:50%}.w-3\/4{width:75%}.w-1\/5{width:20%}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-4\/5{width:80%}.w-3\/6{width:50%}.w-4\/6{width:66.666667%}.w-5\/6{width:83.333333%}.w-1\/12{width:8.333333%}.w-2\/12{width:16.666667%}.w-3\/12{width:25%}.w-4\/12{width:33.333333%}.w-5\/12{width:41.666667%}.w-9\/12{width:75%}.w-10\/12{width:83.333333%}.w-11\/12{width:91.666667%}.w-full{width:100%}.w-screen{width:100vw}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.gap-8{grid-gap:2rem;gap:2rem}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.origin-top-right{-webkit-transform-origin:top right;transform-origin:top right}.scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.scale-100{--transform-scale-x:1;--transform-scale-y:1}.translate-x-0{--transform-translate-x:0}.-translate-x-full{--transform-translate-x:-100%}.transition-all{-webkit-transition-property:all;transition-property:all}.transition{-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform}.transition-opacity{-webkit-transition-property:opacity;transition-property:opacity}.ease-in{-webkit-transition-timing-function:cubic-bezier(.4,0,1,1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{-webkit-transition-duration:75ms;transition-duration:75ms}.duration-100{-webkit-transition-duration:.1s;transition-duration:.1s}.duration-150{-webkit-transition-duration:.15s;transition-duration:.15s}.duration-200{-webkit-transition-duration:.2s;transition-duration:.2s}.duration-300{-webkit-transition-duration:.3s;transition-duration:.3s}@-webkit-keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-ping{-webkit-animation:ping 1s cubic-bezier(0,0,.2,1) infinite;animation:ping 1s cubic-bezier(0,0,.2,1) infinite}.animate-pulse{-webkit-animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@media (min-width:640px){.sm\:space-y-0>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0px*(1 - var(--space-y-reverse)));margin-bottom:calc(0px*var(--space-y-reverse))}.sm\:space-y-3>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.75rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.75rem*var(--space-y-reverse))}.sm\:space-x-4>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(1rem*var(--space-x-reverse));margin-left:calc(1rem*(1 - var(--space-x-reverse)))}.sm\:rounded-md{border-radius:.375rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.sm\:grid{display:grid}.sm\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.sm\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.sm\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.sm\:h-10{height:2.5rem}.sm\:text-sm{font-size:.875rem}.sm\:text-2xl{font-size:1.5rem}.sm\:text-3xl{font-size:1.875rem}.sm\:leading-5{line-height:1.25rem}.sm\:leading-7{line-height:1.75rem}.sm\:leading-9{line-height:2.25rem}.sm\:my-0{margin-top:0;margin-bottom:0}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-7{margin-top:1.75rem;margin-bottom:1.75rem}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:my-12{margin-top:3rem;margin-bottom:3rem}.sm\:mt-0{margin-top:0}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-5{margin-top:1.25rem}.sm\:max-w-lg{max-width:32rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sm\:w-10{width:2.5rem}.sm\:w-32{width:8rem}.sm\:w-auto{width:auto}.sm\:w-1\/2{width:50%}.sm\:w-1\/3{width:33.333333%}.sm\:w-2\/3{width:66.666667%}.sm\:w-2\/4{width:50%}.sm\:w-full{width:100%}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:768px){.md\:rounded-lg{border-radius:.5rem}.md\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.md\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.md\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.md\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.md\:text-base{font-size:1rem}.md\:mx-0{margin-left:0;margin-right:0}.md\:my-2{margin-top:.5rem;margin-bottom:.5rem}.md\:mx-auto{margin-left:auto;margin-right:auto}.md\:mt-0{margin-top:0}.md\:ml-2{margin-left:.5rem}.md\:ml-4{margin-left:1rem}.md\:ml-8{margin-left:2rem}.md\:-mr-8{margin-right:-2rem}.md\:max-w-xl{max-width:36rem}.md\:max-w-5xl{max-width:64rem}.md\:p-2{padding:.5rem}.md\:p-6{padding:1.5rem}.md\:py-0{padding-top:0;padding-bottom:0}.md\:px-1{padding-left:.25rem;padding-right:.25rem}.md\:px-2{padding-left:.5rem;padding-right:.5rem}.md\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:pb-2{padding-bottom:.5rem}.md\:pr-4{padding-right:1rem}.md\:pt-6{padding-top:1.5rem}.md\:shadow-xl{-webkit-box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.md\:w-3\/5{width:60%}}@media (min-width:1024px){.lg\:bg-transparent{background-color:transparent}.lg\:border-transparent{border-color:transparent}.lg\:rounded-full{border-radius:9999px}.lg\:block{display:block}.lg\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.lg\:inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.lg\:text-sm{font-size:.875rem}.lg\:text-lg{font-size:1.125rem}.lg\:my-0{margin-top:0;margin-bottom:0}.lg\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.lg\:my-24{margin-top:6rem;margin-bottom:6rem}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:ml-16{margin-left:4rem}.lg\:-mr-16{margin-right:-4rem}.lg\:max-w-3xl{max-width:48rem}.lg\:p-6{padding:1.5rem}.lg\:p-8{padding:2rem}.lg\:px-3{padding-left:.75rem;padding-right:.75rem}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pt-2{padding-top:.5rem}.lg\:pb-2{padding-bottom:.5rem}.lg\:pl-2{padding-left:.5rem}.lg\:top-1\/2{top:50%}.lg\:shadow-none{-webkit-box-shadow:none;box-shadow:none}.lg\:w-40{width:10rem}.lg\:w-48{width:12rem}.lg\:w-1\/2{width:50%}.lg\:w-3\/5{width:60%}.lg\:w-3\/12{width:25%}.lg\:w-7\/12{width:58.333333%}}@media (min-width:1280px){.xl\:mx-7{margin-left:1.75rem;margin-right:1.75rem}.xl\:mr-0{margin-right:0}.xl\:ml-3{margin-left:.75rem}.xl\:ml-4{margin-left:1rem}.xl\:ml-20{margin-left:5rem}.xl\:ml-32{margin-left:8rem}.xl\:max-w-4xl{max-width:56rem}.xl\:px-4{padding-left:1rem;padding-right:1rem}.xl\:pb-4{padding-bottom:1rem}.xl\:top-1\/3{top:33.333333%}.xl\:w-1\/4{width:25%}.xl\:w-2\/5{width:40%}.xl\:w-3\/5{width:60%}.xl\:w-2\/12{width:16.666667%}.xl\:w-6\/12{width:50%}.xl\:w-7\/12{width:58.333333%}}
1
+ /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box;border:0 solid #d2d6dc}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#a0aec0}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}a{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}img{border-width:0}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-input::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-moz-placeholder{color:#9fa6b2;opacity:1}.form-input::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::placeholder{color:#9fa6b2;opacity:1}.form-input:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-textarea::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-moz-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::placeholder{color:#9fa6b2;opacity:1}.form-textarea:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-multiselect:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;background-repeat:no-repeat;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem 2.5rem .5rem .75rem;font-size:1rem;line-height:1.5;background-position:right .5rem center;background-size:1.5em 1.5em}.form-select::-ms-expand{color:#9fa6b2;border:none}@media not print{.form-select::-ms-expand{display:none}}@media print and (-ms-high-contrast:active),print and (-ms-high-contrast:none){.form-select{padding-right:.75rem}}.form-select:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.25rem}.form-checkbox:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-checkbox::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-checkbox:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked:focus{border-color:transparent}.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;border-radius:100%;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px}.form-radio:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-radio:checked:focus{border-color:transparent}li.menu-top div.wp-menu-image img{display:initial;border-style:none}.ig-es-primary-button,.ig-es-send-queue-emails{border-color:transparent;padding:.5rem 1rem;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.ig-es-primary-button,.ig-es-send-queue-emails,.ig-es-title-button,.wp-heading-inline+.page-title-action{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:.375rem;border-width:1px;font-size:.875rem;line-height:1.25rem;font-weight:500;--text-opacity:1;--bg-opacity:1;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.ig-es-title-button,.wp-heading-inline+.page-title-action{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity));color:#374151;color:rgba(55,65,81,var(--text-opacity));background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));padding:.25rem .75rem}.wrap .wp-heading-inline+.page-title-action{margin-left:.5rem}.ig-es-title-button:hover,.wp-heading-inline+.page-title-action:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity));--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.ig-es-title-button:focus,.wp-heading-inline+.page-title-action:focus{outline:0;-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45);--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.ig-es-primary-button:hover{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity));--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.ig-es-primary-button:focus{outline:0;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.ig-es-imp-button{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important;-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important;border-radius:.375rem!important;border-width:1px!important;border-color:transparent!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;font-size:.875rem!important;line-height:1.25rem!important;font-weight:500!important;background-color:#0e9f6e!important;background-color:rgba(14,159,110,var(--bg-opacity))!important;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform!important;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;-webkit-transition-duration:.15s!important;transition-duration:.15s!important}.ig-es-imp-button,.ig-es-imp-button:hover{--text-opacity:1!important;color:#fff!important;color:rgba(255,255,255,var(--text-opacity))!important;--bg-opacity:1!important}.ig-es-imp-button:hover{background-color:#31c48d!important;background-color:rgba(49,196,141,var(--bg-opacity))!important}.ig-es-imp-button:focus{outline:0!important;-webkit-box-shadow:0 0 0 3px rgba(132,225,188,.45)!important;box-shadow:0 0 0 3px rgba(132,225,188,.45)!important}.ig-es-link-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:.375rem;border-width:1px;border-color:transparent;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));font-size:.875rem;line-height:1.25rem;font-weight:500;background-color:#ff5a1f;background-color:rgba(255,90,31,var(--bg-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.ig-es-link-button,.ig-es-link-button:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity));--bg-opacity:1}.ig-es-link-button:hover{background-color:#ff8a4c;background-color:rgba(255,138,76,var(--bg-opacity))}.ig-es-link-button:focus{outline:0;-webkit-box-shadow:0 0 0 3px rgba(253,186,140,.45);box-shadow:0 0 0 3px rgba(253,186,140,.45)}.ig-es-action.js-open .ig-es-action__header{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity));--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.form-input{--bg-opacity:1!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;border-width:1px!important;border-radius:.375rem!important;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important}.form-input:focus{outline:0!important;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;box-shadow:0 0 0 3px rgba(164,202,254,.45)!important}.form-checkbox{content:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E")}.form-radio{content:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}.form-checkbox:checked,.form-radio:checked{--text-opacity:1!important;color:#5850ec!important;color:rgba(88,80,236,var(--text-opacity))!important}.form-select{font-size:.875rem!important;--border-opacity:1!important;border-color:#9fa6b2!important;border-color:rgba(159,166,178,var(--border-opacity))!important;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important}.form-select:focus,input[type=number]:focus{outline:0!important;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;--border-opacity:1!important;border-color:#a4cafe!important;border-color:rgba(164,202,254,var(--border-opacity))!important}.es-check-toggle:checked~.es-mail-toggle-line{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.es-check-toggle:checked~.es-mail-toggle-dot{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));--transform-translate-x:100%}.es-mail-toggle-line{width:2.25rem;height:1.25rem;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity));-webkit-box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06);box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06)}.es-mail-toggle-dot,.es-mail-toggle-line{display:block;--bg-opacity:1;border-radius:9999px}.es-mail-toggle-dot{width:.875rem;height:.875rem;margin-left:.25rem;position:absolute;top:0;bottom:0;-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.es-mail-toggle-dot:focus-within{-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45)}[type=radio]:checked+.es-mailer-logo{-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));--transform-scale-x:1.1;--transform-scale-y:1.1;-webkit-box-shadow:0 0 3px 1px #5a67d8;box-shadow:0 0 3px 1px #5a67d8}[type=radio]:checked+.es-mailer-logo:hover{border-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.wp-core-ui .button,.wp-core-ui .button-secondary{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{font-size:.875rem;border-radius:.375rem;border-width:1px;line-height:1.25rem;font-weight:500;--text-opacity:1}.wp-core-ui .button-primary{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.wp-core-ui .button-primary:hover,.wp-core-ui .button:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.wp-core-ui .search-box input[name=s],.wp-core-ui select{border-radius:.375rem}.wp-core-ui #bulk-action-selector-top,.wp-core-ui #doaction,.wp-core-ui #doaction2,.wp-core-ui #filter-by-date,.wp-core-ui #post-query-submit,.wp-core-ui #poststuff select,.wp-core-ui #search-submit{cursor:pointer;line-height:1.25rem;--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity));background-color:transparent;font-size:.875rem}.wp-core-ui #search-submit{margin-left:.375rem}.es-add-or-condition:hover,.wp-core-ui #doaction2:hover .wp-core-ui #post-query-submit:hover,.wp-core-ui #doaction:hover,.wp-core-ui #search-submit:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));--border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--border-opacity))}.es-add-or-condition:focus,.wp-core-ui #doaction2:focus .wp-core-ui #post-query-submit:focus,.wp-core-ui #doaction:focus,.wp-core-ui #search-submit:focus{outline:0;-webkit-box-shadow:0 0 0 3px rgba(159,166,178,.45);box-shadow:0 0 0 3px rgba(159,166,178,.45)}.es-items-lists table.fixed,.post-type-es_template table.fixed{margin-top:1rem;margin-bottom:1rem;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);border-radius:.5rem;overflow:hidden}.es-items-lists table.fixed tfoot td,.es-items-lists table.fixed tfoot th,.es-items-lists table.fixed thead td,.es-items-lists table.fixed thead th,.post-type-es_template table.fixed tfoot th,.post-type-es_template table.fixed thead td,.post-type-es_template table.fixed thead th{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity));font-weight:500;letter-spacing:.05em}.es-items-lists table.fixed tfoot th,.es-items-lists table.fixed thead th,.post-type-es_template table.fixed tfoot th,.post-type-es_template table.fixed thead th{padding-top:.5rem;padding-bottom:.5rem}.es-items-lists .widefat thead td input,.post-type-es_template .widefat thead td input{margin-right:1.5rem}.post-type-es_template .wrap{padding-top:1rem;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.post-type-es_template .wrap>h1{padding-top:0;font-weight:600;--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));line-height:2.25rem}.es-items-lists .striped>tbody tr,.post-type-es_template .striped>tbody tr{border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));padding-top:.5rem;padding-bottom:.5rem}.es-campaign-reports-table .striped>tbody tr{border-bottom-width:2px}.es-items-lists .striped>tbody>:nth-child(odd),.post-type-es_template .striped>tbody>:nth-child(odd){--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.es_onboard_email{padding:.25rem .75rem!important}.es_reports_table_header{border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));text-align:left;font-size:.875rem;line-height:1rem;font-weight:500;--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity));letter-spacing:.05em}.importing-progress,.progress{width:100%;height:2rem;--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity));overflow:hidden;position:relative;text-align:right;line-height:1rem;margin-top:.375rem;border-radius:.25rem}.importing-progress span.bar,.progress span.bar{display:block;position:absolute;line-height:2.5rem;padding-top:.25rem;padding-bottom:.25rem;top:0;bottom:0;left:0;border-radius:.25rem;overflow:hidden;background-image:-webkit-gradient(linear,left top,right top,from(var(--gradient-color-stops)));background-image:linear-gradient(90deg,var(--gradient-color-stops));--gradient-from-color:#42389d;--gradient-color-stops:var(--gradient-from-color),var(--gradient-to-color,rgba(66,56,157,0));--gradient-to-color:#6875f5;--bg-opacity:1;background-color:#8da2fb;background-color:rgba(141,162,251,var(--bg-opacity))}.es_sequences_wrapper .ig-es-campaign-rules label{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));font-weight:500;--text-opacity:0.75;font-size:.875rem;letter-spacing:.025em;line-height:1.5rem}.email-subscribers_page_es_workflows #ig_es_workflow_trigger select option:disabled{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity))}.space-y-1>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.25rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.25rem*var(--space-y-reverse))}.space-y-2>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.5rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.5rem*var(--space-y-reverse))}.space-y-3>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.75rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.75rem*var(--space-y-reverse))}.space-x-3>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(0.75rem*var(--space-x-reverse));margin-left:calc(0.75rem*(1 - var(--space-x-reverse)))}.space-y-4>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(1rem*(1 - var(--space-y-reverse)));margin-bottom:calc(1rem*var(--space-y-reverse))}.space-y-5>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--space-y-reverse)));margin-bottom:calc(1.25rem*var(--space-y-reverse))}.divide-y>:not(template)~:not(template){--divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--divide-y-reverse)));border-bottom-width:calc(1px*var(--divide-y-reverse))}.divide-gray-200>:not(template)~:not(template){--divide-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--divide-opacity))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-50{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.bg-gray-200{--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.bg-gray-300{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity))}.bg-gray-500{--bg-opacity:1;background-color:#6b7280;background-color:rgba(107,114,128,var(--bg-opacity))}.bg-red-50{--bg-opacity:1;background-color:#fdf2f2;background-color:rgba(253,242,242,var(--bg-opacity))}.bg-red-100{--bg-opacity:1;background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity))}.bg-yellow-100{--bg-opacity:1;background-color:#fdf6b2;background-color:rgba(253,246,178,var(--bg-opacity))}.bg-green-100{--bg-opacity:1;background-color:#def7ec;background-color:rgba(222,247,236,var(--bg-opacity))}.bg-green-300{--bg-opacity:1;background-color:#84e1bc;background-color:rgba(132,225,188,var(--bg-opacity))}.bg-green-600{--bg-opacity:1;background-color:#057a55;background-color:rgba(5,122,85,var(--bg-opacity))}.bg-teal-50{--bg-opacity:1;background-color:#edfafa;background-color:rgba(237,250,250,var(--bg-opacity))}.bg-blue-50{--bg-opacity:1;background-color:#ebf5ff;background-color:rgba(235,245,255,var(--bg-opacity))}.bg-blue-300{--bg-opacity:1;background-color:#a4cafe;background-color:rgba(164,202,254,var(--bg-opacity))}.bg-indigo-200{--bg-opacity:1;background-color:#cddbfe;background-color:rgba(205,219,254,var(--bg-opacity))}.bg-indigo-500{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.bg-indigo-600{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.bg-indigo-700{--bg-opacity:1;background-color:#5145cd;background-color:rgba(81,69,205,var(--bg-opacity))}.bg-indigo-800{--bg-opacity:1;background-color:#42389d;background-color:rgba(66,56,157,var(--bg-opacity))}.bg-pink-200{--bg-opacity:1;background-color:#fad1e8;background-color:rgba(250,209,232,var(--bg-opacity))}.group:focus .group-focus\:bg-gray-400,.group:hover .group-hover\:bg-gray-400{--bg-opacity:1;background-color:#9fa6b2;background-color:rgba(159,166,178,var(--bg-opacity))}.hover\:bg-gray-50:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.hover\:bg-gray-100:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.hover\:bg-gray-300:hover{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity))}.hover\:bg-green-500:hover{--bg-opacity:1;background-color:#0e9f6e;background-color:rgba(14,159,110,var(--bg-opacity))}.hover\:bg-indigo-500:hover{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.hover\:bg-indigo-600:hover{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.focus\:bg-gray-50:focus{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.focus\:bg-gray-100:focus{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.bg-opacity-75{--bg-opacity:0.75}.border-collapse{border-collapse:collapse}.border-transparent{border-color:transparent}.border-gray-100{--border-opacity:1;border-color:#f4f5f7;border-color:rgba(244,245,247,var(--border-opacity))}.border-gray-200{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.border-gray-300{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.border-indigo-300{--border-opacity:1;border-color:#b4c6fc;border-color:rgba(180,198,252,var(--border-opacity))}.border-indigo-500{--border-opacity:1;border-color:#6875f5;border-color:rgba(104,117,245,var(--border-opacity))}.border-indigo-600{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.hover\:border-gray-200:hover{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.hover\:border-red-400:hover{--border-opacity:1;border-color:#f98080;border-color:rgba(249,128,128,var(--border-opacity))}.hover\:border-indigo-600:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.focus\:border-blue-300:focus{--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-0{border-width:0}.border-2{border-width:2px}.border{border-width:1px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.grid{display:grid}.contents{display:contents}.hidden{display:none}.flex-row{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.flex-col,.flex-row{-webkit-box-direction:normal}.flex-col{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.self-start{-ms-flex-item-align:start;align-self:flex-start}.justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.flex-1{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.flex-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.flex-shrink-0{-ms-flex-negative:0;flex-shrink:0}.float-right{float:right}.float-left{float:left}.clearfix:after{content:"";display:table;clear:both}.font-sans{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-thin{font-weight:200}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-0{height:0}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-15{height:3.75rem}.h-20{height:5rem}.h-48{height:12rem}.h-auto{height:auto}.h-1\.5{height:.375rem}.h-2\.5{height:.625rem}.h-full{height:100%}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.25rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-9{line-height:2.25rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.list-none{list-style-type:none}.list-disc{list-style-type:disc}.list-decimal{list-style-type:decimal}.m-4{margin:1rem}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mx-8{margin-left:2rem;margin-right:2rem}.mx-10{margin-left:2.5rem;margin-right:2.5rem}.my-12{margin-top:3rem;margin-bottom:3rem}.mx-auto{margin-left:auto;margin-right:auto}.-my-4{margin-top:-1rem;margin-bottom:-1rem}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-5{margin-top:1.25rem}.ml-5{margin-left:1.25rem}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.ml-6{margin-left:1.5rem}.mt-7{margin-top:1.75rem}.mb-7{margin-bottom:1.75rem}.ml-7{margin-left:1.75rem}.mt-8{margin-top:2rem}.mr-8{margin-right:2rem}.ml-8{margin-left:2rem}.mt-10{margin-top:2.5rem}.mr-10{margin-right:2.5rem}.mt-12{margin-top:3rem}.mb-12{margin-bottom:3rem}.ml-12{margin-left:3rem}.ml-14{margin-left:3.5rem}.mt-16{margin-top:4rem}.mr-16{margin-right:4rem}.ml-16{margin-left:4rem}.mt-0\.5{margin-top:.125rem}.mt-1\.5{margin-top:.375rem}.mr-1\.5{margin-right:.375rem}.mt-2\.5{margin-top:.625rem}.-mt-1{margin-top:-.25rem}.-mr-1{margin-right:-.25rem}.-mb-1{margin-bottom:-.25rem}.-mb-2{margin-bottom:-.5rem}.-mt-3{margin-top:-.75rem}.-mr-3{margin-right:-.75rem}.-mb-4{margin-bottom:-1rem}.-mt-5{margin-top:-1.25rem}.-ml-6{margin-left:-1.5rem}.-ml-8{margin-left:-2rem}.-mb-0\.5{margin-bottom:-.125rem}.-mt-1\.5{margin-top:-.375rem}.max-h-full{max-height:100%}.max-w-3xl{max-width:48rem}.max-w-7xl{max-width:80rem}.max-w-full{max-width:100%}.min-h-screen{min-height:100vh}.min-w-0{min-width:0}.min-w-full{min-width:100%}.object-cover{-o-object-fit:cover;object-fit:cover}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:0}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.p-0{padding:0}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-13{padding:3.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-7{padding-top:1.75rem;padding-bottom:1.75rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.px-12{padding-left:3rem;padding-right:3rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.pt-1{padding-top:.25rem}.pr-1{padding-right:.25rem}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.pt-2{padding-top:.5rem}.pr-2{padding-right:.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pt-3{padding-top:.75rem}.pr-3{padding-right:.75rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pt-5{padding-top:1.25rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.pt-6{padding-top:1.5rem}.pr-6{padding-right:1.5rem}.pb-6{padding-bottom:1.5rem}.pl-6{padding-left:1.5rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.pb-8{padding-bottom:2rem}.pl-8{padding-left:2rem}.pt-10{padding-top:2.5rem}.pl-10{padding-left:2.5rem}.pr-12{padding-right:3rem}.pb-12{padding-bottom:3rem}.pl-16{padding-left:4rem}.pt-0\.5{padding-top:.125rem}.pl-0\.5{padding-left:.125rem}.pt-1\.5{padding-top:.375rem}.pb-1\.5{padding-bottom:.375rem}.pointer-events-none{pointer-events:none}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.inset-0{right:0;left:0}.inset-0,.inset-y-0{top:0;bottom:0}.top-0{top:0}.right-0{right:0}.left-0{left:0}.bottom-2{bottom:.5rem}.bottom-5{bottom:1.25rem}.top-8{top:2rem}.top-10{top:2.5rem}.top-20{top:5rem}.resize{resize:both}.shadow-xs{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.05);box-shadow:0 0 0 1px rgba(0,0,0,.05)}.shadow-sm{-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05);box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.shadow{-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.shadow-md{-webkit-box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.shadow-lg{-webkit-box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.shadow-xl{-webkit-box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.shadow-inner{-webkit-box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06);box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06)}.hover\:shadow-md:hover{-webkit-box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.focus\:shadow-lg:focus{-webkit-box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.focus\:shadow-outline:focus{-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45)}.focus\:shadow-outline-blue:focus{-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.focus\:shadow-outline-red:focus{-webkit-box-shadow:0 0 0 3px rgba(248,180,180,.45);box-shadow:0 0 0 3px rgba(248,180,180,.45)}.focus\:shadow-outline-indigo:focus{-webkit-box-shadow:0 0 0 3px rgba(180,198,252,.45);box-shadow:0 0 0 3px rgba(180,198,252,.45)}.fill-current{fill:currentColor}.table-fixed{table-layout:fixed}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.text-black{--text-opacity:1;color:#000;color:rgba(0,0,0,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#d2d6dc;color:rgba(210,214,220,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.text-gray-800{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.text-red-400{--text-opacity:1;color:#f98080;color:rgba(249,128,128,var(--text-opacity))}.text-red-500{--text-opacity:1;color:#f05252;color:rgba(240,82,82,var(--text-opacity))}.text-red-600{--text-opacity:1;color:#e02424;color:rgba(224,36,36,var(--text-opacity))}.text-red-800{--text-opacity:1;color:#9b1c1c;color:rgba(155,28,28,var(--text-opacity))}.text-orange-400{--text-opacity:1;color:#ff8a4c;color:rgba(255,138,76,var(--text-opacity))}.text-orange-500{--text-opacity:1;color:#ff5a1f;color:rgba(255,90,31,var(--text-opacity))}.text-yellow-400{--text-opacity:1;color:#e3a008;color:rgba(227,160,8,var(--text-opacity))}.text-yellow-600{--text-opacity:1;color:#9f580a;color:rgba(159,88,10,var(--text-opacity))}.text-green-400{--text-opacity:1;color:#31c48d;color:rgba(49,196,141,var(--text-opacity))}.text-green-600{--text-opacity:1;color:#057a55;color:rgba(5,122,85,var(--text-opacity))}.text-green-800{--text-opacity:1;color:#03543f;color:rgba(3,84,63,var(--text-opacity))}.text-teal-400{--text-opacity:1;color:#16bdca;color:rgba(22,189,202,var(--text-opacity))}.text-teal-700{--text-opacity:1;color:#036672;color:rgba(3,102,114,var(--text-opacity))}.text-teal-800{--text-opacity:1;color:#05505c;color:rgba(5,80,92,var(--text-opacity))}.text-blue-400{--text-opacity:1;color:#76a9fa;color:rgba(118,169,250,var(--text-opacity))}.text-blue-500{--text-opacity:1;color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}.text-blue-700{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.text-blue-800{--text-opacity:1;color:#1e429f;color:rgba(30,66,159,var(--text-opacity))}.text-indigo-100{--text-opacity:1;color:#e5edff;color:rgba(229,237,255,var(--text-opacity))}.text-indigo-400{--text-opacity:1;color:#8da2fb;color:rgba(141,162,251,var(--text-opacity))}.text-indigo-500{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.text-indigo-600{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-indigo-700{--text-opacity:1;color:#5145cd;color:rgba(81,69,205,var(--text-opacity))}.text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:hover .group-hover\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:hover .group-hover\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:focus .group-focus\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:focus .group-focus\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.hover\:text-white:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.hover\:text-gray-500:hover{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.hover\:text-gray-800:hover{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.hover\:text-gray-900:hover{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.hover\:text-blue-700:hover{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.hover\:text-indigo-500:hover{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.focus\:text-gray-900:focus{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.active\:text-indigo-600:active{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-opacity-75{--text-opacity:0.75}.italic{font-style:italic}.not-italic{font-style:normal}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.underline{text-decoration:underline}.no-underline{text-decoration:none}.hover\:underline:hover{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.visible{visibility:visible}.whitespace-no-wrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-0{width:0}.w-2{width:.5rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-12{width:3rem}.w-24{width:6rem}.w-40{width:10rem}.w-48{width:12rem}.w-56{width:14rem}.w-auto{width:auto}.w-1\.5{width:.375rem}.w-2\.5{width:.625rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-1\/4{width:25%}.w-2\/4{width:50%}.w-3\/4{width:75%}.w-1\/5{width:20%}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-4\/5{width:80%}.w-3\/6{width:50%}.w-4\/6{width:66.666667%}.w-5\/6{width:83.333333%}.w-1\/12{width:8.333333%}.w-2\/12{width:16.666667%}.w-3\/12{width:25%}.w-4\/12{width:33.333333%}.w-5\/12{width:41.666667%}.w-9\/12{width:75%}.w-10\/12{width:83.333333%}.w-11\/12{width:91.666667%}.w-full{width:100%}.w-screen{width:100vw}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.gap-8{grid-gap:2rem;gap:2rem}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.origin-top-right{-webkit-transform-origin:top right;transform-origin:top right}.scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.scale-100{--transform-scale-x:1;--transform-scale-y:1}.translate-x-0{--transform-translate-x:0}.-translate-x-full{--transform-translate-x:-100%}.transition-all{-webkit-transition-property:all;transition-property:all}.transition{-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform}.transition-opacity{-webkit-transition-property:opacity;transition-property:opacity}.ease-in{-webkit-transition-timing-function:cubic-bezier(.4,0,1,1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{-webkit-transition-duration:75ms;transition-duration:75ms}.duration-100{-webkit-transition-duration:.1s;transition-duration:.1s}.duration-150{-webkit-transition-duration:.15s;transition-duration:.15s}.duration-200{-webkit-transition-duration:.2s;transition-duration:.2s}.duration-300{-webkit-transition-duration:.3s;transition-duration:.3s}@-webkit-keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-ping{-webkit-animation:ping 1s cubic-bezier(0,0,.2,1) infinite;animation:ping 1s cubic-bezier(0,0,.2,1) infinite}.animate-pulse{-webkit-animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@media (min-width:640px){.sm\:space-y-0>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0px*(1 - var(--space-y-reverse)));margin-bottom:calc(0px*var(--space-y-reverse))}.sm\:space-y-3>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.75rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.75rem*var(--space-y-reverse))}.sm\:space-x-4>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(1rem*var(--space-x-reverse));margin-left:calc(1rem*(1 - var(--space-x-reverse)))}.sm\:rounded-md{border-radius:.375rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.sm\:grid{display:grid}.sm\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.sm\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.sm\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.sm\:h-10{height:2.5rem}.sm\:text-sm{font-size:.875rem}.sm\:text-2xl{font-size:1.5rem}.sm\:text-3xl{font-size:1.875rem}.sm\:leading-5{line-height:1.25rem}.sm\:leading-7{line-height:1.75rem}.sm\:leading-9{line-height:2.25rem}.sm\:my-0{margin-top:0;margin-bottom:0}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-7{margin-top:1.75rem;margin-bottom:1.75rem}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:my-12{margin-top:3rem;margin-bottom:3rem}.sm\:mt-0{margin-top:0}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-5{margin-top:1.25rem}.sm\:max-w-lg{max-width:32rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sm\:w-10{width:2.5rem}.sm\:w-32{width:8rem}.sm\:w-auto{width:auto}.sm\:w-1\/2{width:50%}.sm\:w-1\/3{width:33.333333%}.sm\:w-2\/3{width:66.666667%}.sm\:w-2\/4{width:50%}.sm\:w-full{width:100%}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:768px){.md\:rounded-lg{border-radius:.5rem}.md\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.md\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.md\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.md\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.md\:text-base{font-size:1rem}.md\:mx-0{margin-left:0;margin-right:0}.md\:my-2{margin-top:.5rem;margin-bottom:.5rem}.md\:mx-auto{margin-left:auto;margin-right:auto}.md\:mt-0{margin-top:0}.md\:ml-2{margin-left:.5rem}.md\:ml-4{margin-left:1rem}.md\:ml-8{margin-left:2rem}.md\:-mr-8{margin-right:-2rem}.md\:max-w-xl{max-width:36rem}.md\:max-w-5xl{max-width:64rem}.md\:p-2{padding:.5rem}.md\:p-6{padding:1.5rem}.md\:py-0{padding-top:0;padding-bottom:0}.md\:px-1{padding-left:.25rem;padding-right:.25rem}.md\:px-2{padding-left:.5rem;padding-right:.5rem}.md\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:pb-2{padding-bottom:.5rem}.md\:pr-4{padding-right:1rem}.md\:pt-6{padding-top:1.5rem}.md\:shadow-xl{-webkit-box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.md\:w-3\/5{width:60%}}@media (min-width:1024px){.lg\:bg-transparent{background-color:transparent}.lg\:border-transparent{border-color:transparent}.lg\:rounded-full{border-radius:9999px}.lg\:block{display:block}.lg\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.lg\:inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.lg\:text-sm{font-size:.875rem}.lg\:text-lg{font-size:1.125rem}.lg\:my-0{margin-top:0;margin-bottom:0}.lg\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.lg\:my-24{margin-top:6rem;margin-bottom:6rem}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:ml-16{margin-left:4rem}.lg\:-mr-16{margin-right:-4rem}.lg\:max-w-3xl{max-width:48rem}.lg\:p-6{padding:1.5rem}.lg\:p-8{padding:2rem}.lg\:px-3{padding-left:.75rem;padding-right:.75rem}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pt-2{padding-top:.5rem}.lg\:pb-2{padding-bottom:.5rem}.lg\:pl-2{padding-left:.5rem}.lg\:top-1\/2{top:50%}.lg\:shadow-none{-webkit-box-shadow:none;box-shadow:none}.lg\:w-40{width:10rem}.lg\:w-48{width:12rem}.lg\:w-1\/2{width:50%}.lg\:w-3\/5{width:60%}.lg\:w-3\/12{width:25%}.lg\:w-7\/12{width:58.333333%}}@media (min-width:1280px){.xl\:mx-7{margin-left:1.75rem;margin-right:1.75rem}.xl\:mr-0{margin-right:0}.xl\:ml-3{margin-left:.75rem}.xl\:ml-4{margin-left:1rem}.xl\:ml-20{margin-left:5rem}.xl\:ml-32{margin-left:8rem}.xl\:max-w-4xl{max-width:56rem}.xl\:px-4{padding-left:1rem;padding-right:1rem}.xl\:pb-4{padding-bottom:1rem}.xl\:top-1\/3{top:33.333333%}.xl\:w-1\/4{width:25%}.xl\:w-2\/5{width:40%}.xl\:w-3\/5{width:60%}.xl\:w-2\/12{width:16.666667%}.xl\:w-6\/12{width:50%}.xl\:w-7\/12{width:58.333333%}}
lite/admin/dist/main.js CHANGED
@@ -1 +1 @@
1
- !function(r){var n={};function o(e){if(n[e])return n[e].exports;var t=n[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.m=r,o.c=n,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)o.d(r,n,function(e){return t[e]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,r){"use strict";r.r(t);t=r(1)},function(e,t,r){}]);
1
+ !function(r){var n={};function o(e){if(n[e])return n[e].exports;var t=n[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.m=r,o.c=n,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)o.d(r,n,function(e){return t[e]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,r){"use strict";r.r(t);r(1)},function(e,t,r){}]);
lite/admin/js/campaign-rules.js DELETED
@@ -1,201 +0,0 @@
1
- jQuery(document).ready(function ($) {
2
-
3
- "use strict"
4
- ig_es_register_campaign_rules_js_events_handler();
5
-
6
- });
7
-
8
- function ig_es_register_campaign_rules_js_events_handler( conditions_elem ) {
9
- if ( 'undefined' === typeof conditions_elem ) {
10
- conditions_elem = jQuery('.ig-es-conditions');
11
- }
12
- jQuery.each(jQuery(conditions_elem), function () {
13
- var _self = jQuery(this),
14
- conditions = _self.find('.ig-es-conditions-wrap'),
15
- groups = _self.find('.ig-es-condition-group'),
16
- cond = _self.find('.ig-es-condition');
17
-
18
- groups.eq(0).appendTo(_self.find('.ig-es-condition-container'));
19
-
20
- _self
21
- .on('click', '.add-condition', function () {
22
- ig_es_add_and_condtion();
23
- })
24
- .on('click', '.add-or-condition', function () {
25
- var cont = jQuery(this).parent(),
26
- id = cont.find('.ig-es-condition').last().data('id'),
27
- clone = cond.eq(0).clone();
28
-
29
- clone.removeAttr('id').appendTo(cont).data('id', ++id);
30
- jQuery.each(clone.find('input, select'), function () {
31
- var _this = jQuery(this),
32
- name = _this.attr('name');
33
- _this.attr('name', name.replace(/\[\d+\]\[\d+\]/, '[' + cont.data('id') + '][' + id + ']')).prop('disabled', false);
34
- if( jQuery(_this).hasClass('ig-es-campaign-rule-form-multiselect') ) {
35
- jQuery(_this).ig_es_select2();
36
- }
37
- if( jQuery(_this).hasClass('condition-field')) {
38
- ig_es_handle_list_condition();
39
- }
40
- });
41
- clone.find('.condition-field').val('').focus();
42
- cond = _self.find('.ig-es-condition');
43
- });
44
-
45
- jQuery('.remove-conditions').on('click', function () {
46
- if (confirm(ig_es_rules_data.i18n.remove_conditions)) {
47
- jQuery(conditions).empty();
48
- jQuery('.ig-es-conditions-render-wrapper').empty();
49
- jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
50
- }
51
- return false;
52
- });
53
- conditions
54
- .on('click', '.remove-condition', function () {
55
- var c = jQuery(this).parent();
56
- if (c.parent().find('.ig-es-condition').length == 1) {
57
- c = c.parent();
58
- }
59
- c.slideUp(100, function () {
60
- jQuery(this).remove();
61
- ig_es_handle_list_condition();
62
- jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
63
- });
64
- })
65
- .on('change', '.condition-field', function (event) {
66
-
67
- var condition = jQuery(this).closest('.ig-es-condition'),
68
- field = jQuery(this),
69
- operator_field, value_field;
70
- ig_es_show_operator_and_value_field(field);
71
- jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
72
- })
73
- .on('change', '.condition-operator', function () {
74
- jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
75
- })
76
- .on('change', '.condition-value', function () {
77
- jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
78
- })
79
- .on('click', '.ig-es-condition-add-multiselect', function () {
80
- jQuery(this).parent().clone().insertAfter(jQuery(this).parent()).find('.condition-value').select().focus();
81
- return false;
82
- })
83
- .on('click', '.ig-es-condition-remove-multiselect', function () {
84
- jQuery(this).parent().remove();
85
- jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
86
- return false;
87
- })
88
- .on('change', '.ig-es-conditions-value-field-multiselect > .condition-value', function () {
89
- if (0 == jQuery(this).val() && jQuery(this).parent().parent().find('.condition-value').size() > 1) jQuery(this).parent().remove();
90
- })
91
- .find('.condition-field').prop('disabled', false).trigger('change');
92
-
93
- jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
94
-
95
- // Add one list condition if there are no conditions.
96
- if( 0 === jQuery(_self).find('.ig-es-conditions-wrap .ig-es-condition-group').length ) {
97
- ig_es_add_default_list_condition();
98
- } else {
99
- jQuery(_self).find('.ig-es-conditions-wrap .ig-es-condition-group .condition-value').each(function(){
100
- if( jQuery(this).hasClass('ig-es-campaign-rule-form-multiselect') ) {
101
- jQuery(this).ig_es_select2();
102
- }
103
- });
104
- }
105
-
106
- function ig_es_add_and_condtion( condition_data ) {
107
- let id = groups.length,
108
- clone = groups.eq(0).clone();
109
-
110
- clone.removeAttr('id').appendTo(conditions).data('id', id).show();
111
- jQuery.each(clone.find('input, select'), function () {
112
- let _this = jQuery(this);
113
- name = _this.attr('name');
114
- _this.attr('name', name.replace(/\[\d+\]/, '[' + id + ']')).prop('disabled', false);
115
-
116
- if( jQuery(_this).hasClass('ig-es-campaign-rule-form-multiselect') ) {
117
- jQuery(_this).ig_es_select2();
118
- }
119
- });
120
-
121
- if ( 'undefined' === typeof condition_data ) {
122
- condition_data = {
123
- condition: '',
124
- }
125
- }
126
- let condition_value = condition_data.condition;
127
- let condition_field = clone.find('.condition-field');
128
- jQuery(condition_field).val(condition_value).focus();
129
- if ( '' !== condition_value ) {
130
- ig_es_show_operator_and_value_field(condition_field);
131
- }
132
- groups = _self.find('.ig-es-condition-group');
133
- cond = _self.find('.ig-es-condition');
134
- ig_es_handle_list_condition();
135
- }
136
-
137
- function ig_es_handle_list_condition( selected_elem ) {
138
- if ( ig_es_rules_data.is_pro ) {
139
- return;
140
- }
141
- var condition_fields = jQuery('.ig-es-conditions-wrap .condition-field');
142
- var list_rule_count = 0;
143
- jQuery(condition_fields).each(function(){
144
- var selected_rule = jQuery(this).val();
145
- if ( '_lists__in' === selected_rule ) {
146
- list_rule_count++;
147
- }
148
- });
149
- var hide_list_rule = list_rule_count > 0;
150
- var campaign_rules = jQuery('.ig-es-conditions-wrap .condition-field');
151
- jQuery(campaign_rules).each(function(index,elem){
152
- var list_rule_option = jQuery(this).find('option[value = "_lists__in"]');
153
- var list_rule_text = jQuery(list_rule_option).text();
154
- list_rule_text = list_rule_text.replace(' [PRO]','');
155
- if ( 'undefined' !== typeof selected_elem ) {
156
- if( hide_list_rule && ! ( jQuery(selected_elem)[0] === elem ) ) {
157
- list_rule_text += ' [PRO]';
158
- jQuery(list_rule_option).prop("selected", false).attr('disabled','disabled');
159
- } else {
160
- jQuery(list_rule_option).removeAttr('disabled');
161
- }
162
- } else {
163
- if( index > 0 && hide_list_rule ) {
164
- list_rule_text += ' [PRO]';
165
- jQuery(list_rule_option).prop("selected", false).attr('disabled','disabled');
166
- } else {
167
- jQuery(list_rule_option).removeAttr('disabled');
168
- }
169
- }
170
- jQuery(list_rule_option).text(list_rule_text);
171
- });
172
- }
173
-
174
- function ig_es_add_default_list_condition() {
175
- ig_es_add_and_condtion({ condition: '_lists__in' });
176
- }
177
-
178
- function ig_es_show_operator_and_value_field( field ) {
179
-
180
- var condition = jQuery(field).closest('.ig-es-condition'),
181
- operator_field, value_field;
182
-
183
- condition.find('div.ig-es-conditions-value-field').removeClass('active').find('.condition-value').prop('disabled', true);
184
- condition.find('div.ig-es-conditions-operator-field').removeClass('active').find('.condition-operator').prop('disabled', true);
185
-
186
- value_field = condition.find('div.ig-es-conditions-value-field[data-fields*=",' + jQuery(field).val() + ',"]').addClass('active').find('.condition-value').prop('disabled', false);
187
- operator_field = condition.find('div.ig-es-conditions-operator-field[data-fields*=",' + jQuery(field).val() + ',"]').addClass('active').find('.condition-operator').prop('disabled', false);
188
-
189
- if (!value_field.length) {
190
- value_field = condition.find('div.ig-es-conditions-value-field-default').addClass('active').find('.condition-value').prop('disabled', false);
191
- }
192
- if (!operator_field.length) {
193
- operator_field = condition.find('div.ig-es-conditions-operator-field-default').addClass('active').find('.condition-operator').prop('disabled', false);
194
- }
195
-
196
- if ( jQuery(field).hasClass('condition-field') ) {
197
- ig_es_handle_list_condition(field);
198
- }
199
- }
200
- });
201
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lite/admin/js/email-subscribers-admin.js CHANGED
@@ -312,19 +312,234 @@
312
 
313
 
314
  // Broadcast Setttings
315
- // Get count by list
316
  $('#ig_es_campaign_submit_button').attr("disabled", true);
317
- $('#ig_es_broadcast_list_ids').change(function () {
318
- $(document).trigger('ig_es_update_contacts_counts');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
319
  });
320
 
321
- let update_contacts_counts_xhr;
322
  $(document).on('ig_es_update_contacts_counts', function(e, data){
323
 
324
- let condition_elem = data.condition_elem;
325
  let condition_container_elem = $(condition_elem).closest('.ig-es-campaign-rules');
326
- let selected_list_id = $('#ig_es_broadcast_list_ids').val();
327
-
 
328
  let conditions = [],
329
  groups = $(condition_elem).find('.ig-es-conditions-wrap > .ig-es-condition-group'),
330
  i = 0;
@@ -362,23 +577,26 @@
362
  // Return if no list or conditions selected.
363
  if ( ! selected_list_id && 0 === conditions.length ) {
364
  $('.ig_es_list_contacts_count').text(0);
365
- $('.ig-es-conditions-render-wrapper').html('');
366
  return;
367
  }
368
 
 
 
369
  // Update total count in lists
370
  let params = {
371
  action: 'count_contacts_by_list',
372
  list_id: selected_list_id,
373
  conditions: conditions,
374
- status: 'subscribed'
 
375
  };
376
 
377
- if ( update_contacts_counts_xhr ) {
378
- update_contacts_counts_xhr.abort();
379
  }
380
 
381
- update_contacts_counts_xhr = $.ajax({
382
  method: 'POST',
383
  url: ajaxurl,
384
  async: true,
@@ -389,9 +607,9 @@
389
  success: function (response) {
390
  if (response !== '') {
391
  response = JSON.parse(response);
392
- if (response.hasOwnProperty('total')) {
393
- var total = response.total;
394
- var total_recipients_text = "<div class='mt-1.5 py-2'><span class='font-medium text-base text-gray-700'><span class='ig_es_list_contacts_count'>" + total + "</span> <span class='text-base font-medium text-gray-700'></span><span class='font-normal text-sm text-gray-500'> recipients </span></div>";
395
  $('#ig_es_total_contacts .ig_es_list_contacts_count').html(total);
396
  $('#ig_es_total_recipients').html(total_recipients_text);
397
 
@@ -402,11 +620,19 @@
402
  $('#ig_es_campaign_submit_button').attr("disabled", false);
403
  }
404
  }
 
405
  if ( response.hasOwnProperty('conditions_html') ) {
406
- $(condition_container_elem).find('.ig-es-conditions-render-wrapper').html(response.conditions_html);
407
- } else {
408
- $(condition_container_elem).find('.ig-es-conditions-render-wrapper').html('');
 
 
 
 
 
 
409
  }
 
410
  if ( $(condition_container_elem).find('.ig-es-conditions-wrap .condition-field').length > 0 ) {
411
  $(condition_container_elem).find('.remove-all-conditions-wrapper').removeClass('hidden');
412
  } else {
@@ -417,7 +643,33 @@
417
  }).always(function(){
418
  $('#spinner-image').hide();
419
  });;
420
- })
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
421
 
422
  jQuery(document).on('change', '#base_template_id', function () {
423
  var template_id = $(this).val();
@@ -475,6 +727,8 @@
475
 
476
  });
477
 
 
 
478
  jQuery('.es-note-category-parent').trigger('change');
479
 
480
 
@@ -612,7 +866,7 @@
612
 
613
  });
614
 
615
- $('.wp-editor-boradcast, #edit-es-boradcast-body,#ig_es_broadcast_subject,#ig_es_broadcast_list_ids').on('change',function(event){
616
 
617
  // Trigger save event for content of wp_editor instances before processing it.
618
  window.tinyMCE.triggerSave();
@@ -770,13 +1024,893 @@
770
  });
771
 
772
 
 
 
773
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
774
  });
775
 
776
  })(jQuery);
777
 
778
  function checkDelete() {
779
- return confirm('Are you sure?');
780
  }
781
 
782
  function ig_es_show_broadcast_preview_in_popup() {
@@ -849,4 +1983,4 @@ jQuery.fn.extend({
849
  });
850
  });
851
  }
852
- });
312
 
313
 
314
  // Broadcast Setttings
 
315
  $('#ig_es_campaign_submit_button').attr("disabled", true);
316
+
317
+ let update_contacts_counts_xhr = {};
318
+ let edited_campaign_data = {}; // Variable to hold campaign id and name of edited campaign which is used in showing updated options select campaign field and updated HTML for conditions.
319
+ jQuery(document).on('bind_campaign_rules_events', function( e, data ){
320
+ if ( 'undefined' !== typeof data && 'undefined' !== typeof data.conditions_elem ) {
321
+ conditions_elem = data.conditions_elem;
322
+ } else {
323
+ conditions_elem = jQuery('.ig-es-conditions');
324
+ }
325
+
326
+ jQuery.each(jQuery(conditions_elem), function () {
327
+ var _self = jQuery(this),
328
+ conditions = _self.find('.ig-es-conditions-wrap'),
329
+ groups = _self.find('.ig-es-condition-group'),
330
+ cond = _self.find('.ig-es-condition');
331
+
332
+ jQuery.each(edited_campaign_data,function(campaign_id, campaign_name){
333
+ let option = jQuery(conditions_elem).find('.ig-es-campaign-select-field option[value="' + campaign_id + '"]');
334
+ let option_exists = jQuery(option).length > 0;
335
+ let new_option = new Option(campaign_name, campaign_id, false, false);
336
+ // Add new option don't exists else update option's text
337
+ if( ! option_exists ){
338
+ jQuery(conditions_elem).find('.ig-es-campaign-select-field').append(new_option);
339
+ } else {
340
+ jQuery(option).text(campaign_name);
341
+ }
342
+ });
343
+
344
+ groups.eq(0).appendTo(_self.find('.ig-es-condition-container'));
345
+
346
+ _self
347
+ .on('click', '.add-condition', function () {
348
+ ig_es_add_and_condtion();
349
+ })
350
+ .on('click', '.add-or-condition', function () {
351
+ var cont = jQuery(this).parent(),
352
+ id = cont.find('.ig-es-condition').last().data('id'),
353
+ clone = cond.eq(0).clone();
354
+
355
+ clone.removeAttr('id').appendTo(cont).data('id', ++id);
356
+ jQuery.each(clone.find('input, select'), function () {
357
+ var _this = jQuery(this),
358
+ name = _this.attr('name');
359
+ // match and replace regex '][any digit][any digit]' with '][AND rule counter][OR rule counter]'
360
+ _this.attr('name', name.replace(/\]\[\d+\]\[\d+\]/, '][' + cont.data('id') + '][' + id + ']')).prop('disabled', false);
361
+ name = _this.attr('name');
362
+ if( jQuery(_this).hasClass('ig-es-campaign-rule-form-multiselect') ) {
363
+ jQuery(_this).ig_es_select2();
364
+ }
365
+ if( jQuery(_this).hasClass('condition-field')) {
366
+ ig_es_handle_list_condition();
367
+ }
368
+ });
369
+ clone.find('.condition-field').val('').trigger('focus');
370
+ cond = _self.find('.ig-es-condition');
371
+ });
372
+
373
+ jQuery(_self).closest('.ig-es-campaign-rules').find('.remove-conditions').on('click', function () {
374
+ if (confirm(ig_es_js_data.i18n_data.remove_conditions_message)) {
375
+ jQuery(conditions).empty();
376
+ jQuery(_self).closest('.ig-es-campaign-rules').find('.ig-es-conditions-render-wrapper').empty();
377
+ jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
378
+ }
379
+ return false;
380
+ });
381
+ conditions
382
+ .on('click', '.remove-condition', function () {
383
+ var c = jQuery(this).parent();
384
+ if (c.parent().find('.ig-es-condition').length == 1) {
385
+ c = c.parent();
386
+ }
387
+ c.slideUp(100, function () {
388
+ jQuery(this).remove();
389
+ ig_es_handle_list_condition();
390
+ jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
391
+ });
392
+ })
393
+ .on('change', '.condition-field', function (event) {
394
+
395
+ var condition = jQuery(this).closest('.ig-es-condition'),
396
+ field = jQuery(this),
397
+ operator_field, value_field;
398
+ ig_es_show_operator_and_value_field(field);
399
+ jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
400
+ })
401
+ .on('change', '.condition-operator', function () {
402
+ jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
403
+ })
404
+ .on('change', '.condition-value', function () {
405
+ jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
406
+ })
407
+ .on('click', '.ig-es-condition-add-multiselect', function () {
408
+ jQuery(this).parent().clone().insertAfter(jQuery(this).parent()).find('.condition-value').select().trigger('focus');
409
+ return false;
410
+ })
411
+ .on('click', '.ig-es-condition-remove-multiselect', function () {
412
+ jQuery(this).parent().remove();
413
+ jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
414
+ return false;
415
+ })
416
+ .on('change', '.ig-es-conditions-value-field-multiselect > .condition-value', function () {
417
+ if (0 == jQuery(this).val() && jQuery(this).parent().parent().find('.condition-value').size() > 1) jQuery(this).parent().remove();
418
+ })
419
+ .find('.condition-field').prop('disabled', false).trigger('change');
420
+
421
+ jQuery(document).trigger('ig_es_update_contacts_counts',[{condition_elem:_self}]);
422
+
423
+ // Add one list condition if there are no conditions.
424
+ if( 0 === jQuery(_self).find('.ig-es-conditions-wrap .ig-es-condition-group').length ) {
425
+ ig_es_add_default_list_condition();
426
+ } else {
427
+ jQuery(_self).find('.ig-es-conditions-wrap .ig-es-condition-group .condition-value').each(function(){
428
+ if( jQuery(this).hasClass('ig-es-campaign-rule-form-multiselect') ) {
429
+ jQuery(this).ig_es_select2();
430
+ }
431
+ });
432
+ }
433
+
434
+ function ig_es_add_and_condtion( condition_data ) {
435
+ let id = groups.length,
436
+ clone = groups.eq(0).clone();
437
+
438
+ clone.removeAttr('id').appendTo(conditions).data('id', id).show();
439
+ jQuery.each(clone.find('input, select'), function () {
440
+ let _this = jQuery(this);
441
+ name = _this.attr('name');
442
+ // match and replace regex '][any digit]' with '][id]' i.e. AND rule counter
443
+ _this.attr('name', name.replace(/\]\[\d+\]/, '][' + id + ']')).prop('disabled', false);
444
+
445
+ if( jQuery(_this).hasClass('ig-es-campaign-rule-form-multiselect') ) {
446
+ jQuery(_this).ig_es_select2();
447
+ }
448
+ });
449
+
450
+ if ( 'undefined' === typeof condition_data ) {
451
+ condition_data = {
452
+ condition: '',
453
+ }
454
+ }
455
+ let condition = condition_data.condition;
456
+
457
+ let condition_field = clone.find('.condition-field');
458
+
459
+ jQuery(condition_field).val(condition).trigger('focus');
460
+
461
+ if ( '' !== condition ) {
462
+ ig_es_show_operator_and_value_field(condition_field);
463
+ }
464
+
465
+ groups = _self.find('.ig-es-condition-group');
466
+ cond = _self.find('.ig-es-condition');
467
+ ig_es_handle_list_condition();
468
+ }
469
+
470
+ function ig_es_handle_list_condition( selected_elem ) {
471
+ if ( ig_es_js_data.is_pro ) {
472
+ return;
473
+ }
474
+ var condition_fields = jQuery('.ig-es-conditions-wrap .condition-field');
475
+ var list_rule_count = 0;
476
+ jQuery(condition_fields).each(function(){
477
+ var selected_rule = jQuery(this).val();
478
+ if ( '_lists__in' === selected_rule ) {
479
+ list_rule_count++;
480
+ }
481
+ });
482
+ var disable_list_rule = list_rule_count > 0;
483
+ var campaign_rules = jQuery('.ig-es-conditions-wrap .condition-field');
484
+ jQuery(campaign_rules).each(function(index,elem){
485
+ var list_rule_option = jQuery(this).find('option[value = "_lists__in"]');
486
+ var list_rule_text = jQuery(list_rule_option).text();
487
+ list_rule_text = list_rule_text.replace(' [PRO]','');
488
+ if ( 'undefined' !== typeof selected_elem ) {
489
+ if( disable_list_rule && ! ( jQuery(selected_elem)[0] === elem ) ) {
490
+ list_rule_text += ' [PRO]';
491
+ jQuery(list_rule_option).prop("selected", false).attr('disabled','disabled');
492
+ } else {
493
+ jQuery(list_rule_option).removeAttr('disabled');
494
+ }
495
+ } else {
496
+ if( index > 0 && disable_list_rule ) {
497
+ list_rule_text += ' [PRO]';
498
+ jQuery(list_rule_option).prop("selected", false).attr('disabled','disabled');
499
+ } else {
500
+ jQuery(list_rule_option).removeAttr('disabled');
501
+ }
502
+ }
503
+ jQuery(list_rule_option).text(list_rule_text);
504
+ });
505
+ }
506
+
507
+ function ig_es_add_default_list_condition() {
508
+ ig_es_add_and_condtion({ condition: '_lists__in' });
509
+ }
510
+
511
+ function ig_es_show_operator_and_value_field( field ) {
512
+
513
+ var condition = jQuery(field).closest('.ig-es-condition'),
514
+ operator_field, value_field;
515
+
516
+ condition.find('div.ig-es-conditions-value-field').removeClass('active').find('.condition-value').prop('disabled', true);
517
+ condition.find('div.ig-es-conditions-operator-field').removeClass('active').find('.condition-operator').prop('disabled', true);
518
+
519
+ value_field = condition.find('div.ig-es-conditions-value-field[data-fields*=",' + jQuery(field).val() + ',"]').addClass('active').find('.condition-value').prop('disabled', false);
520
+ operator_field = condition.find('div.ig-es-conditions-operator-field[data-fields*=",' + jQuery(field).val() + ',"]').addClass('active').find('.condition-operator').prop('disabled', false);
521
+
522
+ if (!value_field.length) {
523
+ value_field = condition.find('div.ig-es-conditions-value-field-default').addClass('active').find('.condition-value').prop('disabled', false);
524
+ }
525
+ if (!operator_field.length) {
526
+ operator_field = condition.find('div.ig-es-conditions-operator-field-default').addClass('active').find('.condition-operator').prop('disabled', false);
527
+ }
528
+
529
+ if ( jQuery(field).hasClass('condition-field') ) {
530
+ ig_es_handle_list_condition(field);
531
+ }
532
+ }
533
+ });
534
  });
535
 
 
536
  $(document).on('ig_es_update_contacts_counts', function(e, data){
537
 
538
+ let condition_elem = data.condition_elem;
539
  let condition_container_elem = $(condition_elem).closest('.ig-es-campaign-rules');
540
+ let selected_list_id = $('#ig_es_broadcast_list_ids').val();
541
+ let campaign_id = $(condition_container_elem).data('campaign-id');
542
+ let campaign_type = $(condition_container_elem).data('campaign-type');
543
  let conditions = [],
544
  groups = $(condition_elem).find('.ig-es-conditions-wrap > .ig-es-condition-group'),
545
  i = 0;
577
  // Return if no list or conditions selected.
578
  if ( ! selected_list_id && 0 === conditions.length ) {
579
  $('.ig_es_list_contacts_count').text(0);
580
+ $(condition_container_elem).find('.ig-es-conditions-render-wrapper').html('');
581
  return;
582
  }
583
 
584
+ let get_count = 'newsletter' === campaign_type ? 'yes' : 'no'; // Get count only when on broadcast screen
585
+
586
  // Update total count in lists
587
  let params = {
588
  action: 'count_contacts_by_list',
589
  list_id: selected_list_id,
590
  conditions: conditions,
591
+ status: 'subscribed',
592
+ get_count: get_count
593
  };
594
 
595
+ if ( 'undefined' !== typeof update_contacts_counts_xhr && 'undefined' !== typeof update_contacts_counts_xhr[campaign_id] ) {
596
+ update_contacts_counts_xhr[campaign_id].abort();
597
  }
598
 
599
+ update_contacts_counts_xhr[campaign_id] = $.ajax({
600
  method: 'POST',
601
  url: ajaxurl,
602
  async: true,
607
  success: function (response) {
608
  if (response !== '') {
609
  response = JSON.parse(response);
610
+ if (get_count && response.hasOwnProperty('total')) {
611
+ let total = response.total;
612
+ let total_recipients_text = "<div class='mt-1.5 py-2'><span class='font-medium text-base text-gray-700'><span class='ig_es_list_contacts_count'>" + total + "</span> <span class='text-base font-medium text-gray-700'></span><span class='font-normal text-sm text-gray-500'> recipients </span></div>";
613
  $('#ig_es_total_contacts .ig_es_list_contacts_count').html(total);
614
  $('#ig_es_total_recipients').html(total_recipients_text);
615
 
620
  $('#ig_es_campaign_submit_button').attr("disabled", false);
621
  }
622
  }
623
+ $(condition_container_elem).find('.ig-es-conditions-render-wrapper').html('');
624
  if ( response.hasOwnProperty('conditions_html') ) {
625
+ let conditions = $.parseHTML(response.conditions_html);
626
+ $(conditions).find('.campaign-name').each(function(){
627
+ let campaing_id = $(this).data('campaign-id');
628
+ if (edited_campaign_data.hasOwnProperty(campaing_id)) {
629
+ let campaing_name = edited_campaign_data[campaing_id];
630
+ $(this).text(campaing_name);
631
+ }
632
+ });
633
+ $(condition_container_elem).find('.ig-es-conditions-render-wrapper').append($(conditions));
634
  }
635
+
636
  if ( $(condition_container_elem).find('.ig-es-conditions-wrap .condition-field').length > 0 ) {
637
  $(condition_container_elem).find('.remove-all-conditions-wrapper').removeClass('hidden');
638
  } else {
643
  }).always(function(){
644
  $('#spinner-image').hide();
645
  });;
646
+ });
647
+
648
+ // Add/update campaign option in select campaign rule
649
+ jQuery(document).on('ig_es_sequence_name_updated',function(e,seq_data){
650
+ let seq_id = seq_data.id;
651
+ let seq_name = seq_data.name;
652
+ let new_option = new Option(seq_name, seq_id, false, false);
653
+ edited_campaign_data[seq_id] = seq_name;
654
+ jQuery('.es_seq_right_wrapper:not([data-seq-id="' + seq_id + '"])').each(function(){
655
+ let current_seq_id = jQuery(this).data('seq-id');
656
+
657
+ // We are restricting admin to select sequence campaigns whose id is greater then current sequence id.
658
+ if ( current_seq_id > seq_id ) {
659
+ jQuery(this).find('.ig-es-campaign-select-field').each(function(){
660
+ let option = jQuery(this).find('option[value = ' + seq_id + ']');
661
+ let option_exists = jQuery(option).length > 0;
662
+ // Add new option don't exists else update option's text
663
+ if( ! option_exists ){
664
+ jQuery(this).append(new_option);
665
+ } else {
666
+ jQuery(option).text(seq_name);
667
+ }
668
+ jQuery(this).ig_es_select2().trigger('change');
669
+ });
670
+ }
671
+ });
672
+ });
673
 
674
  jQuery(document).on('change', '#base_template_id', function () {
675
  var template_id = $(this).val();
727
 
728
  });
729
 
730
+ jQuery(document).trigger('bind_campaign_rules_events');
731
+
732
  jQuery('.es-note-category-parent').trigger('change');
733
 
734
 
866
 
867
  });
868
 
869
+ $('.wp-editor-boradcast, #edit-es-boradcast-body,#ig_es_broadcast_subject').on('change',function(event){
870
 
871
  // Trigger save event for content of wp_editor instances before processing it.
872
  window.tinyMCE.triggerSave();
1024
  });
1025
 
1026
 
1027
+ // Workflow JS
1028
+ IG_ES_Workflows = {
1029
 
1030
+ $triggers_box: $('#ig_es_workflow_trigger'),
1031
+ $actions_box : $('#ig_es_workflow_actions'),
1032
+ $variables_box: $('#ig_es_workflow_variables'),
1033
+ $trigger_select: $('.js-trigger-select').first(),
1034
+ $actions_container: $('.ig-es-actions-container'),
1035
+
1036
+ init: function() {
1037
+ IG_ES_Workflows.init_triggers_box();
1038
+ IG_ES_Workflows.init_actions_box();
1039
+ IG_ES_Workflows.init_variables_box();
1040
+ IG_ES_Workflows.init_show_hide();
1041
+ IG_ES_Workflows.init_date_pickers();
1042
+ IG_ES_Workflows.init_workflow_status_switch();
1043
+ },
1044
+
1045
+ init_date_pickers: function() {
1046
+ $( '.ig-es-date-picker' ).datepicker({
1047
+ dateFormat: 'yy-mm-dd',
1048
+ numberOfMonths: 1,
1049
+ showButtonPanel: true
1050
+ });
1051
+
1052
+ let d = new Date();
1053
+ let n = d.getHours() + 1;
1054
+ $('.ig-es-time-picker').timepicker({
1055
+ timeFormat: 'H:mm',
1056
+ interval: 15,
1057
+ startTime: new Date(0,0,0,n,0,0),
1058
+ dynamic: true,
1059
+ dropdown: true,
1060
+ scrollbar: false,
1061
+ minTime: new Date(0,0,0,n,0,0)
1062
+ });
1063
+ },
1064
+
1065
+ init_workflow_status_switch: function() {
1066
+ $('.ig-es-switch.js-toggle-workflow-status').click(function(){
1067
+
1068
+ let $switch, state, new_state;
1069
+
1070
+ $switch = $(this);
1071
+
1072
+ if ( $switch.is('.ig-es-loading') ) {
1073
+ return;
1074
+ }
1075
+
1076
+ state = $switch.attr( 'data-ig-es-switch' );
1077
+ new_state = state === 'active' ? 'inactive' : 'active';
1078
+
1079
+ $switch.addClass('ig-es-loading');
1080
+
1081
+ $.post( ajaxurl, {
1082
+ action: 'ig_es_toggle_workflow_status',
1083
+ workflow_id: $switch.attr( 'data-workflow-id' ),
1084
+ new_state: new_state,
1085
+ security: ig_es_js_data.security,
1086
+ dataType: 'json'
1087
+ }, function( response ) {
1088
+ $switch.attr( 'data-ig-es-switch', new_state );
1089
+ $switch.removeClass('ig-es-loading');
1090
+ });
1091
+
1092
+ });
1093
+ },
1094
+
1095
+ /**
1096
+ * Show / hide logic with data attributes
1097
+ */
1098
+ init_show_hide: function() {
1099
+
1100
+ let update = function( $el ) {
1101
+ let id = $el.data( 'ig-es-bind' );
1102
+ let value = $el.val();
1103
+ let is_checkbox = $el.is('input[type="checkbox"]');
1104
+
1105
+ $('[data-ig-es-show]').each(function() {
1106
+ if ( is_checkbox && $(this).data('ig-es-show') === id ) {
1107
+ if ( $el.is(':checked') ) {
1108
+ $(this).show();
1109
+ } else {
1110
+ $(this).hide();
1111
+ }
1112
+ } else {
1113
+ let logic = $(this).data('ig-es-show').split('=');
1114
+
1115
+ if ( logic[0] !== id ) {
1116
+ return;
1117
+ }
1118
+
1119
+ let possible_values = logic[1].split('|');
1120
+
1121
+ if ( possible_values.indexOf( value ) !== -1 ) {
1122
+ $(this).show();
1123
+ } else {
1124
+ $(this).hide();
1125
+ }
1126
+ }
1127
+ });
1128
+
1129
+
1130
+ $('[data-ig-es-hide]').each(function() {
1131
+ if ( is_checkbox && $(this).data('ig-es-hide') === id ) {
1132
+ if ( $el.is(':checked') ) {
1133
+ $(this).hide();
1134
+ } else {
1135
+ $(this).show();
1136
+ }
1137
+ } else {
1138
+ let logic = $(this).data('ig-es-hide').split('=');
1139
+
1140
+ if ( logic[0] !== id ) {
1141
+ return;
1142
+ }
1143
+
1144
+ let possible_values = logic[1].split('|');
1145
+
1146
+ if ( possible_values.indexOf( value ) !== -1 ) {
1147
+ $(this).hide();
1148
+ } else {
1149
+ $(this).show();
1150
+ }
1151
+ }
1152
+ });
1153
+ };
1154
+
1155
+
1156
+ $(document).on( 'change', '[data-ig-es-bind]', function() {
1157
+ update( $(this) );
1158
+ });
1159
+
1160
+ $('[data-ig-es-bind]').each(function() {
1161
+ update( $(this) );
1162
+ });
1163
+
1164
+ },
1165
+
1166
+ /**
1167
+ *
1168
+ */
1169
+ init_triggers_box: function() {
1170
+ IG_ES_Workflows.$trigger_select.change(function(){
1171
+ IG_ES_Workflows.fill_trigger_fields( $(this).val() );
1172
+ IG_ES_Workflows.remove_actions();
1173
+ });
1174
+ },
1175
+
1176
+ /**
1177
+ * @param trigger_name
1178
+ */
1179
+ fill_trigger_fields: function( trigger_name ) {
1180
+
1181
+ // Remove existing fields
1182
+ IG_ES_Workflows.$triggers_box.find('tr.ig-es-trigger-option').remove();
1183
+
1184
+ if ( trigger_name ) {
1185
+
1186
+ IG_ES_Workflows.$triggers_box.addClass('ig-es-loading');
1187
+
1188
+ let workflow_id = $('#workflow_id').val();
1189
+ $.ajax({
1190
+ url: ajaxurl,
1191
+ data: {
1192
+ action: 'ig_es_fill_trigger_fields',
1193
+ trigger_name: trigger_name,
1194
+ security: ig_es_js_data.security,
1195
+ workflow_id: workflow_id
1196
+ }
1197
+ })
1198
+ .done(function(response){
1199
+
1200
+ if ( ! response.success ) {
1201
+ return;
1202
+ }
1203
+
1204
+ ig_es_workflows_data.trigger = response.data.trigger;
1205
+ IG_ES_Workflows.refine_variables();
1206
+
1207
+ IG_ES_Workflows.$triggers_box.find('tbody').append( response.data.fields );
1208
+ IG_ES_Workflows.$triggers_box.removeClass('ig-es-loading');
1209
+ IG_ES_Workflows.$triggers_box.find('.js-trigger-description').html( '<p class="ig-es-field-description">' + response.data.trigger.description + '</p>' );
1210
+ });
1211
+ }
1212
+ },
1213
+
1214
+ /**
1215
+ *
1216
+ */
1217
+ init_actions_box: function() {
1218
+ // Action select change
1219
+ $(document).on('change', '.js-action-select', function () {
1220
+ let $action = $(this).parents('.ig-es-action').first();
1221
+ IG_ES_Workflows.fill_action_fields( $action, $(this).val() );
1222
+ });
1223
+
1224
+ // Add new action
1225
+ $('.js-ig-es-add-action').click(function (e) {
1226
+ e.preventDefault();
1227
+ IG_ES_Workflows.add_new_action();
1228
+ });
1229
+
1230
+ $(document).on('click', '.js-edit-action, .ig-es-action__header', function (e) {
1231
+ e.preventDefault();
1232
+ e.stopImmediatePropagation();
1233
+
1234
+ let $action = $(this).parents('.ig-es-action').first();
1235
+
1236
+ if ($action.is('.js-open')) {
1237
+ IG_ES_Workflows.action_edit_close($action);
1238
+ } else {
1239
+ IG_ES_Workflows.action_edit_open($action);
1240
+ }
1241
+ });
1242
+
1243
+ // Delete action
1244
+ $(document).on('click', '.js-delete-action', function (e) {
1245
+ e.preventDefault();
1246
+ let $action = $(this).parents('.ig-es-action').first();
1247
+ IG_ES_Workflows.action_delete($action);
1248
+ });
1249
+
1250
+ $('#ig_es_workflow_save #publish').on('click', function(e){
1251
+ let trigger_name = $('.js-trigger-select').val();
1252
+
1253
+ if ( '' === trigger_name) {
1254
+ e.preventDefault();
1255
+ alert( ig_es_js_data.i18n_data.no_trigger_message );
1256
+ return;
1257
+ }
1258
+
1259
+ let actions = $('.ig-es-action:not([data-action-number=""]) .js-action-select');
1260
+ if ( 0 === $( actions ).length ) {
1261
+ e.preventDefault();
1262
+ alert( ig_es_js_data.i18n_data.no_actions_message );
1263
+ return;
1264
+ } else {
1265
+ $(actions).each(function() {
1266
+ let action_name = $(this).val();
1267
+ // Check if user have selected an action or not.
1268
+ if( '' === action_name ) {
1269
+ e.preventDefault();
1270
+ // Open the action accordion if is not already open.
1271
+ $(this).closest('.ig-es-action:not(.js-open)').find('.ig-es-action__header').trigger('click');
1272
+ alert( ig_es_js_data.i18n_data.no_action_selected_message );
1273
+ return false;
1274
+ }
1275
+ });
1276
+ }
1277
+ });
1278
+ },
1279
+
1280
+ add_new_action: function() {
1281
+
1282
+ let $new_action,
1283
+ action_number = IG_ES_Workflows.get_number_of_actions() + 1;
1284
+
1285
+ $('.js-ig-es-no-actions-message').hide();
1286
+
1287
+ $new_action = $('.ig-es-action-template .ig-es-action').clone();
1288
+
1289
+ IG_ES_Workflows.$actions_container.append($new_action);
1290
+
1291
+ $new_action.attr( 'data-action-number', action_number );
1292
+
1293
+ IG_ES_Workflows.action_edit_open($new_action);
1294
+ },
1295
+
1296
+ /**
1297
+ * @param $action
1298
+ */
1299
+ action_delete: function( $action ) {
1300
+ $action.remove();
1301
+ },
1302
+
1303
+ action_edit_close: function( $action ) {
1304
+
1305
+ let action_number = $action.data('action-number');
1306
+
1307
+ $action.removeClass('js-open');
1308
+ $action.find('.ig-es-action__fields').slideUp(150);
1309
+ },
1310
+
1311
+ action_edit_open: function( $action ) {
1312
+
1313
+ let action_number = $action.data('action-number');
1314
+
1315
+ $action.addClass('js-open');
1316
+ $action.find('.ig-es-action__fields').slideDown(150);
1317
+ },
1318
+
1319
+ /**
1320
+ *
1321
+ */
1322
+ fill_action_fields: function( $action, selected_action ) {
1323
+
1324
+ let action_number = $action.data('action-number');
1325
+ action_number = ( typeof action_number !== 'undefined' && action_number !== '' ) ? action_number : IG_ES_Workflows.get_number_of_actions() + 1;
1326
+ let $select = $action.find('.js-action-select');
1327
+
1328
+ let selected_trigger = $('.js-trigger-select').val();
1329
+
1330
+ IG_ES_Workflows.$actions_box.addClass('ig-es-loading');
1331
+
1332
+ // Remove existing fields
1333
+ $action.find('tr.ig-es-table__row:not([data-name="action_name"])').remove();
1334
+
1335
+ $.ajax({
1336
+ url: ajaxurl,
1337
+ data: {
1338
+ action: 'ig_es_fill_action_fields',
1339
+ action_name: selected_action,
1340
+ action_number: action_number,
1341
+ trigger_name: selected_trigger,
1342
+ security: ig_es_js_data.security
1343
+ }
1344
+ }).done(function(response){
1345
+
1346
+ $action.find('.ig-es-table tbody').append( response.data.fields );
1347
+ IG_ES_Workflows.$actions_box.removeClass('ig-es-loading');
1348
+
1349
+ // Fill select box name
1350
+ $select.attr('name', 'ig_es_workflow_data[actions]['+action_number+'][action_name]' );
1351
+
1352
+ // Pre fill title
1353
+ $action.find('.action-title').text( response.data.title );
1354
+
1355
+ $action.find('.js-action-description').html( response.data.description );
1356
+
1357
+ });
1358
+
1359
+ },
1360
+
1361
+ get_number_of_actions: function () {
1362
+ return $('.ig-es-action:not([data-action-number=""])').length;
1363
+ },
1364
+
1365
+ remove_actions: function() {
1366
+ let number_of_actions = IG_ES_Workflows.get_number_of_actions();
1367
+ if ( number_of_actions > 0 ) {
1368
+ let confirm_trigger_change = window.confirm( ig_es_js_data.i18n_data.trigger_change_message );
1369
+ if ( confirm_trigger_change ) {
1370
+ $('.ig-es-action:not([data-action-number=""])').remove();
1371
+ }
1372
+ }
1373
+ },
1374
+
1375
+ init_variables_box: function() {
1376
+ this.init_clipboard();
1377
+
1378
+ $(document.body).on( 'change keyup', '.ig-es-workflow-variable-parameter', this.update_preview_field );
1379
+ $(document.body).on( 'keypress', 'input.ig-es-workflow-variable-parameter', this.restrict_parameter_chars );
1380
+
1381
+ this.$variables_box.on( 'click', '.ig-es-workflow-variable', this.open_modal );
1382
+ this.$variables_box.on( 'click', '.ig-es-close-variable-info-popup', this.close_modal );
1383
+
1384
+ $(document).keydown(function(e) {
1385
+ if ( 27 === e.keyCode ) {
1386
+ IG_ES_Workflows.close_modal();
1387
+ }
1388
+ });
1389
+
1390
+ if ( ! ig_es_workflows_data.is_new ) {
1391
+ IG_ES_Workflows.refine_variables();
1392
+ }
1393
+ },
1394
+
1395
+ /**
1396
+ * Show or hide text var groups based on the selected trigger
1397
+ */
1398
+ refine_variables: function() {
1399
+
1400
+ let trigger = ig_es_workflows_data.trigger;
1401
+
1402
+ $('.ig-es-variables-group').each(function( i, el ){
1403
+
1404
+ let group = $(el).data( 'ig-es-variable-group' );
1405
+
1406
+ if ( -1 === $.inArray( group, trigger.supplied_data_items ) ) {
1407
+ $(el).addClass('hidden');
1408
+ } else {
1409
+ $(el).removeClass('hidden');
1410
+ }
1411
+ });
1412
+
1413
+ let shown_group = $('.ig-es-variables-group:not(.hidden)');
1414
+ if ( 0 === shown_group.length ) {
1415
+ $('.js-ig-es-no-variables-message').show();
1416
+ } else {
1417
+ $('.js-ig-es-no-variables-message').hide();
1418
+ }
1419
+ },
1420
+
1421
+ /**
1422
+ *
1423
+ */
1424
+ init_clipboard: function() {
1425
+
1426
+ var clipboard = new ClipboardJS('.ig-es-clipboard-btn', {
1427
+ text: function(trigger) {
1428
+ return $('#ig_es_workflow_variable_preview_field').text();
1429
+ }
1430
+ });
1431
+
1432
+ clipboard.on('success', function(e) {
1433
+
1434
+ $('.ig-es-clipboard-btn').html( ig_es_js_data.i18n_data.placeholder_copied_message );
1435
+ setTimeout(function(){
1436
+ IG_ES_Workflows.close_modal();
1437
+ }, 500 );
1438
+ });
1439
+
1440
+ },
1441
+
1442
+
1443
+ open_modal: function(){
1444
+
1445
+ var ajax_data = {
1446
+ action: 'ig_es_modal_variable_info',
1447
+ variable: $(this).text(),
1448
+ security: ig_es_js_data.security,
1449
+ };
1450
+
1451
+ $.post( ajaxurl, ajax_data, function( response ){
1452
+ $('#ig-es-variable-info-popup #ig-es-workflow-variable-info-body').html(response).show();
1453
+ IG_ES_Workflows.show_modal();
1454
+ IG_ES_Workflows.update_preview_field();
1455
+ });
1456
+ },
1457
+
1458
+ show_modal: function() {
1459
+ jQuery('#ig-es-variable-info-popup').show();
1460
+ },
1461
+
1462
+ close_modal: function() {
1463
+ $('#ig-es-variable-info-popup').hide('fast');
1464
+ },
1465
+
1466
+
1467
+ /**
1468
+ * Updates the variable preview text field
1469
+ */
1470
+ update_preview_field: function() {
1471
+
1472
+ var $preview_field = $('#ig_es_workflow_variable_preview_field');
1473
+ var variable = $preview_field.data('variable');
1474
+ var parameters = [];
1475
+
1476
+ $('.ig-es-workflow-variable-parameter').each(function(){
1477
+
1478
+ var $param_row = $(this).parents('.ig-es-workflow-variables-parameter-row:first');
1479
+
1480
+ // Check 'show' logic
1481
+ if ( $param_row.data('parameter-show') ) {
1482
+
1483
+ var show_logic = $param_row.data('parameter-show').split('=');
1484
+
1485
+ var $condition_field = $('.ig-es-workflow-variable-parameter[name="' + show_logic[0] + '"]');
1486
+
1487
+ if ( $condition_field.length && $condition_field.val() == show_logic[1] ) {
1488
+ $param_row.show();
1489
+ } else {
1490
+ $param_row.hide();
1491
+ return; // don't add parameter to preview
1492
+ }
1493
+ }
1494
+
1495
+ var param = {
1496
+ name: $(this).attr('name'),
1497
+ required: $param_row.data('is-required'),
1498
+ value: $(this).val()
1499
+ };
1500
+
1501
+ parameters.push( param );
1502
+ });
1503
+
1504
+ var string = IG_ES_Workflows.generate_variable_string( variable, parameters );
1505
+
1506
+ $preview_field.text( string );
1507
+ },
1508
+
1509
+
1510
+ /**
1511
+ *
1512
+ * @param variable
1513
+ * @param parameters
1514
+ */
1515
+ generate_variable_string: function( variable, parameters ) {
1516
+
1517
+ var string = '{{ ' + variable;
1518
+
1519
+ if ( parameters.length ) {
1520
+ var param_parts = [];
1521
+
1522
+ $.each( parameters, function( i, param ) {
1523
+
1524
+ if ( param.value ) {
1525
+ param_parts.push( param.name + ": '" + param.value + "'" );
1526
+ }
1527
+ else if ( param.required ) {
1528
+ param_parts.push( param.name + ": '...'" );
1529
+ }
1530
+ });
1531
+
1532
+
1533
+ if ( param_parts.length > 0 ) {
1534
+ string += ' | ';
1535
+ string += param_parts.join( ', ' );
1536
+ }
1537
+ }
1538
+
1539
+ return string + ' }}';
1540
+ },
1541
+
1542
+
1543
+ /**
1544
+ *
1545
+ * @param e
1546
+ */
1547
+ restrict_parameter_chars: function(e) {
1548
+
1549
+ var restricted = [ 39, 123, 124, 125 ];
1550
+
1551
+ if ( $.inArray( e.which, restricted ) !== -1 ) {
1552
+ return false;
1553
+ }
1554
+ }
1555
+
1556
+ }
1557
+
1558
+ if ( 'undefined' !== typeof ig_es_workflows_data ) {
1559
+ IG_ES_Workflows.init();
1560
+ }
1561
+
1562
+ // Import Subscribers JS
1563
+ let importstatus = $('.es-import-step1 .import-status'),
1564
+ progress = $('#progress'),
1565
+ progressbar = progress.find('.bar'),
1566
+ importprogress = $('#importing-progress'),
1567
+ importprogressbar = importprogress.find('.bar'),
1568
+ import_percentage = importprogress.find('.import_percentage'),
1569
+ wpnonce = ig_es_js_data.security,
1570
+ importerrors = 0,
1571
+ importstarttime,
1572
+ importidentifier,
1573
+
1574
+ uploader_init = function () {
1575
+ let uploader = new plupload.Uploader(wpUploaderInit);
1576
+
1577
+ uploader.bind('Init', function (up) {
1578
+ let uploaddiv = $('#plupload-upload-ui');
1579
+
1580
+ if (up.features.dragdrop && !$(document.body).hasClass('mobile')) {
1581
+ uploaddiv.addClass('drag-drop');
1582
+ $('#drag-drop-area').bind('dragover.wp-uploader', function () { // dragenter doesn't fire right :(
1583
+ uploaddiv.addClass('drag-over');
1584
+ }).bind('dragleave.wp-uploader, drop.wp-uploader', function () {
1585
+ uploaddiv.removeClass('drag-over');
1586
+ });
1587
+ } else {
1588
+ uploaddiv.removeClass('drag-drop');
1589
+ $('#drag-drop-area').unbind('.wp-uploader');
1590
+ }
1591
+
1592
+ });
1593
+
1594
+ uploader.bind('FilesAdded', function (up, files) {
1595
+ $('#media-upload-error').html('');
1596
+
1597
+ setTimeout(function () {
1598
+ up.refresh();
1599
+ up.start();
1600
+ }, 1);
1601
+
1602
+ });
1603
+
1604
+ uploader.bind('BeforeUpload', function (up, file) {
1605
+ progress.removeClass('finished error hidden');
1606
+ importstatus.show().removeClass('text-red-600');
1607
+ importstatus.html('Uploading');
1608
+ });
1609
+
1610
+ uploader.bind('UploadFile', function (up, file) {});
1611
+
1612
+ uploader.bind('UploadProgress', function (up, file) {
1613
+ importstatus.show().removeClass('text-red-600');
1614
+ importstatus.html(sprintf(ig_es_js_data.i18n_data.uploading, file.percent + '%'));
1615
+ progressbar.stop().animate({
1616
+ 'width': file.percent + '%'
1617
+ }, 100);
1618
+ });
1619
+
1620
+ uploader.bind('Error', function (up, err) {
1621
+ importstatus.show().addClass('text-red-600 text-base font-medium');
1622
+ importstatus.html(err.message);
1623
+ progress.addClass('error');
1624
+ up.refresh();
1625
+ });
1626
+
1627
+ uploader.bind('FileUploaded', function (up, file, response) {
1628
+ response = $.parseJSON(response.response);
1629
+ importidentifier = response.identifier;
1630
+ if (!response.success) {
1631
+ importstatus.html(response.message);
1632
+ progress.addClass('error');
1633
+ up.refresh();
1634
+ uploader.unbind('UploadComplete');
1635
+ }
1636
+ });
1637
+
1638
+ uploader.bind('UploadComplete', function (up, files) {
1639
+ importstatus.removeClass('text-red-600').html(ig_es_js_data.i18n_data.prepare_data);
1640
+ progress.addClass('finished');
1641
+ get_import_data();
1642
+ });
1643
+
1644
+ uploader.init();
1645
+ }
1646
+
1647
+ let get_import_data = function () {
1648
+
1649
+ progress.removeClass('finished error');
1650
+
1651
+ $.post( ajaxurl, {
1652
+ action: 'ig_es_get_import_data',
1653
+ identifier: importidentifier,
1654
+ security: wpnonce,
1655
+ dataType: 'json'
1656
+ }, function( response ) {
1657
+ progress.addClass('hidden');
1658
+ $(".es-import-step1").slideUp();
1659
+ $('.es-import-option').hide();
1660
+ $('.step2-body').html(response.html).parent().show();
1661
+ $('.step2-status,.step2-list').show();
1662
+
1663
+ importstatus.html('');
1664
+ });
1665
+ }
1666
+
1667
+ let start_import = function(e) {
1668
+
1669
+ e.preventDefault();
1670
+
1671
+ let is_email_field_set = false;
1672
+ let mapping_order = [];
1673
+ $('select[name="mapping_order[]"').each(function(){
1674
+ let mapped_field = $(this).val();
1675
+ mapping_order.push(mapped_field);
1676
+ if ( 'email' === mapped_field ) {
1677
+ is_email_field_set = true;
1678
+ }
1679
+ });
1680
+
1681
+
1682
+ if ( ! is_email_field_set ) {
1683
+ alert(ig_es_js_data.i18n_data.select_email_column);
1684
+ return false;
1685
+ }
1686
+
1687
+ let status = $('#es_email_status').val();
1688
+ if ( '' === status || '0' === status ) {
1689
+ alert(ig_es_js_data.i18n_data.select_status);
1690
+ return false;
1691
+ }
1692
+
1693
+ let list_id = $('#list_id').val();
1694
+
1695
+ if ( ! confirm(ig_es_js_data.i18n_data.confirm_import) ) {
1696
+ return false;
1697
+ }
1698
+
1699
+ let _this = $('.start-import').prop('disabled', true),
1700
+ loader = $('#import-ajax-loading').css({
1701
+ 'display': 'inline-block'
1702
+ }),
1703
+ identifier = $('#identifier').val(),
1704
+ performance = $('#performance').is(':checked') ? 'yes' : 'no';
1705
+
1706
+ progress.removeClass('hidden');
1707
+ progressbar.stop().width(0);
1708
+ $('.es-import-step1').slideUp();
1709
+ $('.es-import-option').hide();
1710
+ $('.step2-body').html('<br><br>').parent().show();
1711
+ $('.step2-status,.step2-list, .es-import-processing ').hide();
1712
+
1713
+ importstarttime = new Date();
1714
+
1715
+ do_import(0, {
1716
+ identifier: identifier,
1717
+ mapping_order: mapping_order,
1718
+ list_id: list_id,
1719
+ status: status,
1720
+ performance: performance
1721
+ });
1722
+
1723
+ importstatus = $('.step2 .import-status');
1724
+
1725
+ importstatus.html(ig_es_js_data.i18n_data.prepare_import);
1726
+
1727
+ window.onbeforeunload = function () {
1728
+ return ig_es_js_data.i18n_data.onbeforeunloadimport;
1729
+ };
1730
+ }
1731
+
1732
+ let do_import = function(id, options) {
1733
+ let percentage = 0;
1734
+ importprogress.removeClass('hidden');
1735
+ $.ajax({
1736
+ type: 'POST',
1737
+ url: ajaxurl,
1738
+ dataType: 'json',
1739
+ data: {
1740
+ action: 'ig_es_do_import',
1741
+ id: id,
1742
+ options: options,
1743
+ security: wpnonce,
1744
+ },
1745
+ success: function( response ) {
1746
+ percentage = (Math.min(1, (response.imported + response.errors) / response.total) * 100);
1747
+
1748
+ $('.step2-body').html('<p class="pt-3 pb-2 text-sm text-gray-600">' + get_stats(response.f_imported, response.f_errors, response.f_total, percentage, response.memoryusage) + '</p>');
1749
+ $('.step2-status,.step2-list, .es-import-processing').hide();
1750
+ importerrors = 0;
1751
+ let finished = percentage >= 100;
1752
+
1753
+ if (response.success) {
1754
+
1755
+ if (!finished) do_import(id + 1, options);
1756
+
1757
+ importprogressbar.animate({
1758
+ 'width': (percentage) + '%'
1759
+ }, {
1760
+ duration: 1000,
1761
+ easing: 'swing',
1762
+ queue: false,
1763
+ step: function (percentage) {
1764
+ importstatus.show().addClass('text-lg').html( sprintf(ig_es_js_data.i18n_data.import_contacts, '' ) );
1765
+ $('.import-instruction').html( ig_es_js_data.i18n_data.no_windowclose );
1766
+ import_percentage.html( Math.ceil(percentage) + '%' );
1767
+ },
1768
+ complete: function () {
1769
+ if (finished) {
1770
+ window.onbeforeunload = null;
1771
+ $('.import-instruction').hide();
1772
+ importprogress.addClass('finished');
1773
+ $('.step2-body').html(response.html).slideDown();
1774
+ $('.step2-status,.step2-list,.es-import-processing').hide();
1775
+ importstatus.addClass('text-xl');
1776
+ importstatus.html(sprintf(ig_es_js_data.i18n_data.import_complete,'<svg class=" w-6 h-6 inline-block text-indigo-600" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"></path></svg>'));
1777
+ }
1778
+ }
1779
+ });
1780
+ } else {
1781
+ import_error_handler(percentage, id, options);
1782
+ }
1783
+ },
1784
+ error: function(jqXHR, textStatus, errorThrown) {
1785
+ import_error_handler(percentage, id, options);
1786
+ }
1787
+ });
1788
+ }
1789
+
1790
+ let get_stats = function(imported, errors, total, percentage, memoryusage) {
1791
+ let timepast = new Date().getTime() - importstarttime.getTime(),
1792
+ timeleft = Math.ceil(((100 - percentage) * (timepast / percentage)) / 60000);
1793
+
1794
+ return sprintf(ig_es_js_data.i18n_data.current_stats, '<span class="font-medium">' + imported + '</span>', '<span class="font-medium">' + total + '</span>', '<span class="font-medium">' + errors + '</span>', '<span class="font-medium">' + memoryusage + '</span>') + '<br>' +
1795
+ sprintf(ig_es_js_data.i18n_data.estimate_time, timeleft);
1796
+ }
1797
+
1798
+ let import_error_handler = function(percentage, id, options) {
1799
+ importerrors++;
1800
+ if (importerrors >= 5) {
1801
+
1802
+ alert(ig_es_js_data.i18n_data.error_importing);
1803
+ importstatus.html(sprintf(ig_es_js_data.i18n_data.import_failed, '<svg class=" w-6 h-6 inline-block text-red-600" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>'));
1804
+ window.onbeforeunload = null;
1805
+ return;
1806
+ }
1807
+
1808
+ let i = importerrors * 5,
1809
+ str = '',
1810
+ errorint = setInterval(function () {
1811
+ if (i <= 0) {
1812
+ clearInterval(errorint);
1813
+ progress.removeClass('paused');
1814
+ do_import(id, options);
1815
+ } else {
1816
+ progress.addClass('paused');
1817
+ str = '<span class="error">' + sprintf(ig_es_js_data.i18n_data.continues_in, (i--)) + '</span>';
1818
+ }
1819
+ importstatus.html(sprintf(ig_es_js_data.i18n_data.import_contacts, str));
1820
+ }, 1000);
1821
+ }
1822
+
1823
+ let sprintf = function() {
1824
+ let a = Array.prototype.slice.call(arguments),
1825
+ str = a.shift(),
1826
+ total = a.length,
1827
+ reg;
1828
+ for (let i = 0; i < total; i++) {
1829
+ reg = new RegExp('%(' + (i + 1) + '\\$)?(s|d|f)');
1830
+ str = str.replace(reg, a[i]);
1831
+ }
1832
+ return str;
1833
+ }
1834
+
1835
+ let _ajax = function(action, data, callback, errorCallback) {
1836
+
1837
+ if ($.isFunction(data)) {
1838
+ if ($.isFunction(callback)) {
1839
+ errorCallback = callback;
1840
+ }
1841
+ callback = data;
1842
+ data = {};
1843
+ }
1844
+ $.ajax({
1845
+ type: 'POST',
1846
+ url: ajaxurl,
1847
+ data: $.extend({
1848
+ action: 'ig_es_' + action,
1849
+ security: wpnonce
1850
+ }, data),
1851
+ success: function (data, textStatus, jqXHR) {
1852
+ callback && callback.call(this, data, textStatus, jqXHR);
1853
+ },
1854
+ error: function (jqXHR, textStatus, errorThrown) {
1855
+ if (textStatus == 'error' && !errorThrown) return;
1856
+ if (console) console.error($.trim(jqXHR.responseText));
1857
+ errorCallback && errorCallback.call(this, jqXHR, textStatus, errorThrown);
1858
+ },
1859
+ dataType: "JSON"
1860
+ });
1861
+ }
1862
+
1863
+ if ( 'object' === typeof (wpUploaderInit) ) {
1864
+ uploader_init();
1865
+ }
1866
+
1867
+ $('#form_import_subscribers').on('submit', start_import );
1868
+
1869
+ $('#import_wordpress')
1870
+ .on('click', function () {
1871
+
1872
+ let selected_roles = [];
1873
+ $('#ig-es-wordpress-user-roles input[name="roles[]"]:checked').each(function(){
1874
+ let selected_role = $(this).val();
1875
+ selected_roles.push(selected_role);
1876
+ });
1877
+ _ajax('import_subscribers_upload_handler', {
1878
+ selected_roles: selected_roles
1879
+ }, function (response) {
1880
+
1881
+ if (response.success) {
1882
+ importidentifier = response.identifier;
1883
+ $('#wordpress-users').fadeOut();
1884
+ get_import_data();
1885
+ } else {
1886
+ importstatus.html(response.message);
1887
+ progress.addClass('error');
1888
+ }
1889
+ }, function () {
1890
+
1891
+ importstatus.html('Error');
1892
+ });
1893
+
1894
+ return false;
1895
+ });
1896
+
1897
+ $("input:radio[name='es-import-subscribers']").click(function() {
1898
+ let import_option = $(this).attr("value");
1899
+ if( "es-sync-wordpress-users" === import_option ){
1900
+ $(".es-sync-wordpress-users").show();
1901
+ $(".es-import-with-csv").hide();
1902
+ }
1903
+ else{
1904
+ $(".es-import-with-csv").show();
1905
+ $(".es-sync-wordpress-users").hide();
1906
+ }
1907
+ });
1908
  });
1909
 
1910
  })(jQuery);
1911
 
1912
  function checkDelete() {
1913
+ return confirm( ig_es_js_data.i18n_data.delete_confirmation_message );
1914
  }
1915
 
1916
  function ig_es_show_broadcast_preview_in_popup() {
1983
  });
1984
  });
1985
  }
1986
+ });
lite/admin/js/ig-es-workflows-variables.js DELETED
@@ -1,170 +0,0 @@
1
- /**
2
- * IG_ES_Workflows Variables
3
- */
4
-
5
- jQuery(function($) {
6
-
7
- IG_ES_Workflows.Variables = {
8
-
9
- $meta_box: $('#ig_es_workflow_variables'),
10
-
11
-
12
- init: function(){
13
-
14
- this.init_clipboard();
15
-
16
- $(document.body).on( 'change keyup', '.ig-es-workflow-variable-parameter', this.update_preview_field );
17
- $(document.body).on( 'keypress', 'input.ig-es-workflow-variable-parameter', this.restrict_parameter_chars );
18
-
19
- this.$meta_box.on( 'click', '.ig-es-workflow-variable', this.open_modal );
20
- this.$meta_box.on( 'click', '.ig-es-close-variable-info-popup', this.close_modal );
21
-
22
- $(document).keydown(function(e) {
23
- if ( 27 === e.keyCode ) {
24
- IG_ES_Workflows.Variables.close_modal();
25
- }
26
- });
27
- },
28
-
29
-
30
- /**
31
- *
32
- */
33
- init_clipboard: function() {
34
-
35
- var clipboard = new ClipboardJS('.ig-es-clipboard-btn', {
36
- text: function(trigger) {
37
- return $('#ig_es_workflow_variable_preview_field').text();
38
- }
39
- });
40
-
41
- clipboard.on('success', function(e) {
42
-
43
- $('.ig-es-clipboard-btn').html( ig_es_workflows_data.placeholder_copied_message );
44
- setTimeout(function(){
45
- IG_ES_Workflows.Variables.close_modal();
46
- }, 500 );
47
- });
48
-
49
- },
50
-
51
-
52
- open_modal: function(){
53
-
54
- var ajax_data = {
55
- action: 'ig_es_modal_variable_info',
56
- variable: $(this).text(),
57
- security: ig_es_workflows_data.security,
58
- };
59
-
60
- $.post( ajaxurl, ajax_data, function( response ){
61
- $('#ig-es-variable-info-popup #ig-es-workflow-variable-info-body').html(response).show();
62
- IG_ES_Workflows.Variables.show_modal();
63
- IG_ES_Workflows.Variables.update_preview_field();
64
- });
65
- },
66
-
67
- show_modal: function() {
68
- jQuery('#ig-es-variable-info-popup').show();
69
- },
70
-
71
- close_modal: function() {
72
- $('#ig-es-variable-info-popup').hide('fast');
73
- },
74
-
75
-
76
- /**
77
- * Updates the variable preview text field
78
- */
79
- update_preview_field: function() {
80
-
81
- var $preview_field = $('#ig_es_workflow_variable_preview_field');
82
- var variable = $preview_field.data('variable');
83
- var parameters = [];
84
-
85
- $('.ig-es-workflow-variable-parameter').each(function(){
86
-
87
- var $param_row = $(this).parents('.ig-es-workflow-variables-parameter-row:first');
88
-
89
- // Check 'show' logic
90
- if ( $param_row.data('parameter-show') ) {
91
-
92
- var show_logic = $param_row.data('parameter-show').split('=');
93
-
94
- var $condition_field = $('.ig-es-workflow-variable-parameter[name="' + show_logic[0] + '"]');
95
-
96
- if ( $condition_field.length && $condition_field.val() == show_logic[1] ) {
97
- $param_row.show();
98
- } else {
99
- $param_row.hide();
100
- return; // don't add parameter to preview
101
- }
102
- }
103
-
104
- var param = {
105
- name: $(this).attr('name'),
106
- required: $param_row.data('is-required'),
107
- value: $(this).val()
108
- };
109
-
110
- parameters.push( param );
111
- });
112
-
113
- var string = IG_ES_Workflows.Variables.generate_variable_string( variable, parameters );
114
-
115
- $preview_field.text( string );
116
- },
117
-
118
-
119
- /**
120
- *
121
- * @param variable
122
- * @param parameters
123
- */
124
- generate_variable_string: function( variable, parameters ) {
125
-
126
- var string = '{{ ' + variable;
127
-
128
- if ( parameters.length ) {
129
- var param_parts = [];
130
-
131
- $.each( parameters, function( i, param ) {
132
-
133
- if ( param.value ) {
134
- param_parts.push( param.name + ": '" + param.value + "'" );
135
- }
136
- else if ( param.required ) {
137
- param_parts.push( param.name + ": '...'" );
138
- }
139
- });
140
-
141
-
142
- if ( param_parts.length > 0 ) {
143
- string += ' | ';
144
- string += param_parts.join( ', ' );
145
- }
146
- }
147
-
148
- return string + ' }}';
149
- },
150
-
151
-
152
- /**
153
- *
154
- * @param e
155
- */
156
- restrict_parameter_chars: function(e) {
157
-
158
- var restricted = [ 39, 123, 124, 125 ];
159
-
160
- if ( $.inArray( e.which, restricted ) !== -1 ) {
161
- return false;
162
- }
163
- }
164
-
165
- };
166
-
167
-
168
- IG_ES_Workflows.Variables.init();
169
-
170
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lite/admin/js/ig-es-workflows.js DELETED
@@ -1,384 +0,0 @@
1
- (function($){
2
- $(document).ready(function(){
3
- IG_ES_Workflows = {
4
-
5
- $triggers_box: $('#ig_es_workflow_trigger'),
6
- $actions_box : $('#ig_es_workflow_actions'),
7
- $trigger_select: $('.js-trigger-select').first(),
8
- $actions_container: $('.ig-es-actions-container'),
9
-
10
- init: function() {
11
- IG_ES_Workflows.init_triggers_box();
12
- IG_ES_Workflows.init_actions_box();
13
- IG_ES_Workflows.init_variables_box();
14
- IG_ES_Workflows.init_show_hide();
15
- IG_ES_Workflows.init_date_pickers();
16
- IG_ES_Workflows.init_workflow_status_switch();
17
- },
18
-
19
- init_date_pickers: function() {
20
- $( '.ig-es-date-picker' ).datepicker({
21
- dateFormat: 'yy-mm-dd',
22
- numberOfMonths: 1,
23
- showButtonPanel: true
24
- });
25
-
26
- let d = new Date();
27
- let n = d.getHours() + 1;
28
- $('.ig-es-time-picker').timepicker({
29
- timeFormat: 'H:mm',
30
- interval: 15,
31
- startTime: new Date(0,0,0,n,0,0),
32
- dynamic: true,
33
- dropdown: true,
34
- scrollbar: false,
35
- minTime: new Date(0,0,0,n,0,0)
36
- });
37
- },
38
-
39
- init_workflow_status_switch: function() {
40
- $('.ig-es-switch.js-toggle-workflow-status').click(function(){
41
-
42
- let $switch, state, new_state;
43
-
44
- $switch = $(this);
45
-
46
- if ( $switch.is('.ig-es-loading') ) {
47
- return;
48
- }
49
-
50
- state = $switch.attr( 'data-ig-es-switch' );
51
- new_state = state === 'active' ? 'inactive' : 'active';
52
-
53
- $switch.addClass('ig-es-loading');
54
-
55
- $.post( ajaxurl, {
56
- action: 'ig_es_toggle_workflow_status',
57
- workflow_id: $switch.attr( 'data-workflow-id' ),
58
- new_state: new_state,
59
- security: ig_es_workflows_data.security,
60
- dataType: 'json'
61
- }, function( response ) {
62
- $switch.attr( 'data-ig-es-switch', new_state );
63
- $switch.removeClass('ig-es-loading');
64
- });
65
-
66
- });
67
- },
68
-
69
- /**
70
- * Show / hide logic with data attributes
71
- */
72
- init_show_hide: function() {
73
-
74
- let update = function( $el ) {
75
- let id = $el.data( 'ig-es-bind' );
76
- let value = $el.val();
77
- let is_checkbox = $el.is('input[type="checkbox"]');
78
-
79
- $('[data-ig-es-show]').each(function() {
80
- if ( is_checkbox && $(this).data('ig-es-show') === id ) {
81
- if ( $el.is(':checked') ) {
82
- $(this).show();
83
- } else {
84
- $(this).hide();
85
- }
86
- } else {
87
- let logic = $(this).data('ig-es-show').split('=');
88
-
89
- if ( logic[0] !== id ) {
90
- return;
91
- }
92
-
93
- let possible_values = logic[1].split('|');
94
-
95
- if ( possible_values.indexOf( value ) !== -1 ) {
96
- $(this).show();
97
- } else {
98
- $(this).hide();
99
- }
100
- }
101
- });
102
-
103
-
104
- $('[data-ig-es-hide]').each(function() {
105
- if ( is_checkbox && $(this).data('ig-es-hide') === id ) {
106
- if ( $el.is(':checked') ) {
107
- $(this).hide();
108
- } else {
109
- $(this).show();
110
- }
111
- } else {
112
- let logic = $(this).data('ig-es-hide').split('=');
113
-
114
- if ( logic[0] !== id ) {
115
- return;
116
- }
117
-
118
- let possible_values = logic[1].split('|');
119
-
120
- if ( possible_values.indexOf( value ) !== -1 ) {
121
- $(this).hide();
122
- } else {
123
- $(this).show();
124
- }
125
- }
126
- });
127
- };
128
-
129
-
130
- $(document).on( 'change', '[data-ig-es-bind]', function() {
131
- update( $(this) );
132
- });
133
-
134
- $('[data-ig-es-bind]').each(function() {
135
- update( $(this) );
136
- });
137
-
138
- },
139
-
140
- /**
141
- *
142
- */
143
- init_triggers_box: function() {
144
- IG_ES_Workflows.$trigger_select.change(function(){
145
- IG_ES_Workflows.fill_trigger_fields( $(this).val() );
146
- IG_ES_Workflows.remove_actions();
147
- });
148
- },
149
-
150
- /**
151
- * @param trigger_name
152
- */
153
- fill_trigger_fields: function( trigger_name ) {
154
-
155
- // Remove existing fields
156
- IG_ES_Workflows.$triggers_box.find('tr.ig-es-trigger-option').remove();
157
-
158
- if ( trigger_name ) {
159
-
160
- IG_ES_Workflows.$triggers_box.addClass('ig-es-loading');
161
-
162
- let workflow_id = $('#workflow_id').val();
163
- $.ajax({
164
- url: ajaxurl,
165
- data: {
166
- action: 'ig_es_fill_trigger_fields',
167
- trigger_name: trigger_name,
168
- security: ig_es_workflows_data.security,
169
- workflow_id: workflow_id
170
- }
171
- })
172
- .done(function(response){
173
-
174
- if ( ! response.success ) {
175
- return;
176
- }
177
-
178
- ig_es_workflows_data.trigger = response.data.trigger;
179
- IG_ES_Workflows.refine_variables();
180
-
181
- IG_ES_Workflows.$triggers_box.find('tbody').append( response.data.fields );
182
- IG_ES_Workflows.$triggers_box.removeClass('ig-es-loading');
183
- IG_ES_Workflows.$triggers_box.find('.js-trigger-description').html( '<p class="ig-es-field-description">' + response.data.trigger.description + '</p>' );
184
- });
185
- }
186
- },
187
-
188
- /**
189
- *
190
- */
191
- init_actions_box: function() {
192
- // Action select change
193
- $(document).on('change', '.js-action-select', function () {
194
- let $action = $(this).parents('.ig-es-action').first();
195
- IG_ES_Workflows.fill_action_fields( $action, $(this).val() );
196
- });
197
-
198
- // Add new action
199
- $('.js-ig-es-add-action').click(function (e) {
200
- e.preventDefault();
201
- IG_ES_Workflows.add_new_action();
202
- });
203
-
204
- $(document).on('click', '.js-edit-action, .ig-es-action__header', function (e) {
205
- e.preventDefault();
206
- e.stopImmediatePropagation();
207
-
208
- let $action = $(this).parents('.ig-es-action').first();
209
-
210
- if ($action.is('.js-open')) {
211
- IG_ES_Workflows.action_edit_close($action);
212
- } else {
213
- IG_ES_Workflows.action_edit_open($action);
214
- }
215
- });
216
-
217
- // Delete action
218
- $(document).on('click', '.js-delete-action', function (e) {
219
- e.preventDefault();
220
- let $action = $(this).parents('.ig-es-action').first();
221
- IG_ES_Workflows.action_delete($action);
222
- });
223
-
224
- $('#ig_es_workflow_save #publish').on('click', function(e){
225
- let trigger_name = $('.js-trigger-select').val();
226
-
227
- if ( '' === trigger_name) {
228
- e.preventDefault();
229
- alert( ig_es_workflows_data.no_trigger_message );
230
- return;
231
- }
232
-
233
- let actions = $('.ig-es-action:not([data-action-number=""]) .js-action-select');
234
- if ( 0 === $( actions ).length ) {
235
- e.preventDefault();
236
- alert( ig_es_workflows_data.no_actions_message );
237
- return;
238
- } else {
239
- $(actions).each(function() {
240
- let action_name = $(this).val();
241
- // Check if user have selected an action or not.
242
- if( '' === action_name ) {
243
- e.preventDefault();
244
- // Open the action accordion if is not already open.
245
- $(this).closest('.ig-es-action:not(.js-open)').find('.ig-es-action__header').trigger('click');
246
- alert( ig_es_workflows_data.no_action_selected_message );
247
- return false;
248
- }
249
- });
250
- }
251
- });
252
- },
253
-
254
- add_new_action: function() {
255
-
256
- let $new_action,
257
- action_number = IG_ES_Workflows.get_number_of_actions() + 1;
258
-
259
- $('.js-ig-es-no-actions-message').hide();
260
-
261
- $new_action = $('.ig-es-action-template .ig-es-action').clone();
262
-
263
- IG_ES_Workflows.$actions_container.append($new_action);
264
-
265
- $new_action.attr( 'data-action-number', action_number );
266
-
267
- IG_ES_Workflows.action_edit_open($new_action);
268
- },
269
-
270
- /**
271
- * @param $action
272
- */
273
- action_delete: function( $action ) {
274
- $action.remove();
275
- },
276
-
277
- action_edit_close: function( $action ) {
278
-
279
- let action_number = $action.data('action-number');
280
-
281
- $action.removeClass('js-open');
282
- $action.find('.ig-es-action__fields').slideUp(150);
283
- },
284
-
285
- action_edit_open: function( $action ) {
286
-
287
- let action_number = $action.data('action-number');
288
-
289
- $action.addClass('js-open');
290
- $action.find('.ig-es-action__fields').slideDown(150);
291
- },
292
-
293
- /**
294
- *
295
- */
296
- fill_action_fields: function( $action, selected_action ) {
297
-
298
- let action_number = $action.data('action-number');
299
- action_number = ( typeof action_number !== 'undefined' && action_number !== '' ) ? action_number : IG_ES_Workflows.get_number_of_actions() + 1;
300
- let $select = $action.find('.js-action-select');
301
-
302
- let selected_trigger = $('.js-trigger-select').val();
303
-
304
- IG_ES_Workflows.$actions_box.addClass('ig-es-loading');
305
-
306
- // Remove existing fields
307
- $action.find('tr.ig-es-table__row:not([data-name="action_name"])').remove();
308
-
309
- $.ajax({
310
- url: ajaxurl,
311
- data: {
312
- action: 'ig_es_fill_action_fields',
313
- action_name: selected_action,
314
- action_number: action_number,
315
- trigger_name: selected_trigger,
316
- security: ig_es_workflows_data.security
317
- }
318
- }).done(function(response){
319
-
320
- $action.find('.ig-es-table tbody').append( response.data.fields );
321
- IG_ES_Workflows.$actions_box.removeClass('ig-es-loading');
322
-
323
- // Fill select box name
324
- $select.attr('name', 'ig_es_workflow_data[actions]['+action_number+'][action_name]' );
325
-
326
- // Pre fill title
327
- $action.find('.action-title').text( response.data.title );
328
-
329
- $action.find('.js-action-description').html( response.data.description );
330
-
331
- });
332
-
333
- },
334
-
335
- get_number_of_actions: function () {
336
- return $('.ig-es-action:not([data-action-number=""])').length;
337
- },
338
-
339
- remove_actions: function() {
340
- let number_of_actions = IG_ES_Workflows.get_number_of_actions();
341
- if ( number_of_actions > 0 ) {
342
- let confirm_trigger_change = window.confirm( ig_es_workflows_data.trigger_change_message );
343
- if ( confirm_trigger_change ) {
344
- $('.ig-es-action:not([data-action-number=""])').remove();
345
- }
346
- }
347
- },
348
-
349
- init_variables_box: function() {
350
- if ( ! ig_es_workflows_data.is_new ) {
351
- IG_ES_Workflows.refine_variables();
352
- }
353
- },
354
-
355
- /**
356
- * Show or hide text var groups based on the selected trigger
357
- */
358
- refine_variables: function() {
359
-
360
- let trigger = ig_es_workflows_data.trigger;
361
-
362
- $('.ig-es-variables-group').each(function( i, el ){
363
-
364
- let group = $(el).data( 'ig-es-variable-group' );
365
-
366
- if ( -1 === $.inArray( group, trigger.supplied_data_items ) ) {
367
- $(el).addClass('hidden');
368
- } else {
369
- $(el).removeClass('hidden');
370
- }
371
- });
372
-
373
- let shown_group = $('.ig-es-variables-group:not(.hidden)');
374
- if ( 0 === shown_group.length ) {
375
- $('.js-ig-es-no-variables-message').show();
376
- } else {
377
- $('.js-ig-es-no-variables-message').hide();
378
- }
379
- },
380
- }
381
-
382
- IG_ES_Workflows.init();
383
- });
384
- })(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lite/admin/js/subscribers.js DELETED
@@ -1,349 +0,0 @@
1
- jQuery(document).ready(function ($) {
2
- "use strict"
3
-
4
- let importstatus = $('.es-import-step1 .import-status'),
5
- progress = $('#progress'),
6
- progressbar = progress.find('.bar'),
7
- importprogress = $('#importing-progress'),
8
- importprogressbar = importprogress.find('.bar'),
9
- import_percentage = importprogress.find('.import_percentage'),
10
- wpnonce = ig_es_subscribers_data.security,
11
- importerrors = 0,
12
- importstarttime,
13
- importidentifier,
14
-
15
- uploader_init = function () {
16
- let uploader = new plupload.Uploader(wpUploaderInit);
17
-
18
- uploader.bind('Init', function (up) {
19
- let uploaddiv = $('#plupload-upload-ui');
20
-
21
- if (up.features.dragdrop && !$(document.body).hasClass('mobile')) {
22
- uploaddiv.addClass('drag-drop');
23
- $('#drag-drop-area').bind('dragover.wp-uploader', function () { // dragenter doesn't fire right :(
24
- uploaddiv.addClass('drag-over');
25
- }).bind('dragleave.wp-uploader, drop.wp-uploader', function () {
26
- uploaddiv.removeClass('drag-over');
27
- });
28
- } else {
29
- uploaddiv.removeClass('drag-drop');
30
- $('#drag-drop-area').unbind('.wp-uploader');
31
- }
32
-
33
- });
34
-
35
- uploader.bind('FilesAdded', function (up, files) {
36
- $('#media-upload-error').html('');
37
-
38
- setTimeout(function () {
39
- up.refresh();
40
- up.start();
41
- }, 1);
42
-
43
- });
44
-
45
- uploader.bind('BeforeUpload', function (up, file) {
46
- progress.removeClass('finished error hidden');
47
- importstatus.show().removeClass('text-red-600');
48
- importstatus.html('Uploading');
49
- });
50
-
51
- uploader.bind('UploadFile', function (up, file) {});
52
-
53
- uploader.bind('UploadProgress', function (up, file) {
54
- importstatus.show().removeClass('text-red-600');
55
- importstatus.html(sprintf(ig_es_subscribers_data.i18n.uploading, file.percent + '%'));
56
- progressbar.stop().animate({
57
- 'width': file.percent + '%'
58
- }, 100);
59
- });
60
-
61
- uploader.bind('Error', function (up, err) {
62
- importstatus.show().addClass('text-red-600 text-base font-medium');
63
- importstatus.html(err.message);
64
- progress.addClass('error');
65
- up.refresh();
66
- });
67
-
68
- uploader.bind('FileUploaded', function (up, file, response) {
69
- response = $.parseJSON(response.response);
70
- importidentifier = response.identifier;
71
- if (!response.success) {
72
- importstatus.html(response.message);
73
- progress.addClass('error');
74
- up.refresh();
75
- uploader.unbind('UploadComplete');
76
- }
77
- });
78
-
79
- uploader.bind('UploadComplete', function (up, files) {
80
- importstatus.removeClass('text-red-600').html(ig_es_subscribers_data.i18n.prepare_data);
81
- progress.addClass('finished');
82
- get_import_data();
83
- });
84
-
85
- uploader.init();
86
- }
87
-
88
- let get_import_data = function () {
89
-
90
- progress.removeClass('finished error');
91
-
92
- $.post( ajaxurl, {
93
- action: 'ig_es_get_import_data',
94
- identifier: importidentifier,
95
- security: wpnonce,
96
- dataType: 'json'
97
- }, function( response ) {
98
- progress.addClass('hidden');
99
- $(".es-import-step1").slideUp();
100
- $('.es-import-option').hide();
101
- $('.step2-body').html(response.html).parent().show();
102
- $('.step2-status,.step2-list').show();
103
-
104
- importstatus.html('');
105
- });
106
- }
107
-
108
- let start_import = function(e) {
109
-
110
- e.preventDefault();
111
-
112
- let is_email_field_set = false;
113
- let mapping_order = [];
114
- $('select[name="mapping_order[]"').each(function(){
115
- let mapped_field = $(this).val();
116
- mapping_order.push(mapped_field);
117
- if ( 'email' === mapped_field ) {
118
- is_email_field_set = true;
119
- }
120
- });
121
-
122
-
123
- if ( ! is_email_field_set ) {
124
- alert(ig_es_subscribers_data.i18n.select_email_column);
125
- return false;
126
- }
127
-
128
- let status = $('#es_email_status').val();
129
- if ( '' === status || '0' === status ) {
130
- alert(ig_es_subscribers_data.i18n.select_status);
131
- return false;
132
- }
133
-
134
- let list_id = $('#list_id').val();
135
-
136
- if ( ! confirm(ig_es_subscribers_data.i18n.confirm_import) ) {
137
- return false;
138
- }
139
-
140
- let _this = $('.start-import').prop('disabled', true),
141
- loader = $('#import-ajax-loading').css({
142
- 'display': 'inline-block'
143
- }),
144
- identifier = $('#identifier').val(),
145
- performance = $('#performance').is(':checked') ? 'yes' : 'no';
146
-
147
- progress.removeClass('hidden');
148
- progressbar.stop().width(0);
149
- $('.es-import-step1').slideUp();
150
- $('.es-import-option').hide();
151
- $('.step2-body').html('<br><br>').parent().show();
152
- $('.step2-status,.step2-list, .es-import-processing ').hide();
153
-
154
- importstarttime = new Date();
155
-
156
- do_import(0, {
157
- identifier: identifier,
158
- mapping_order: mapping_order,
159
- list_id: list_id,
160
- status: status,
161
- performance: performance
162
- });
163
-
164
- importstatus = $('.step2 .import-status');
165
-
166
- importstatus.html(ig_es_subscribers_data.i18n.prepare_import);
167
-
168
- window.onbeforeunload = function () {
169
- return ig_es_subscribers_data.i18n.onbeforeunloadimport;
170
- };
171
- }
172
-
173
- let do_import = function(id, options) {
174
- let percentage = 0;
175
- importprogress.removeClass('hidden');
176
- $.ajax({
177
- type: 'POST',
178
- url: ajaxurl,
179
- dataType: 'json',
180
- data: {
181
- action: 'ig_es_do_import',
182
- id: id,
183
- options: options,
184
- security: wpnonce,
185
- },
186
- success: function( response ) {
187
- percentage = (Math.min(1, (response.imported + response.errors) / response.total) * 100);
188
-
189
- $('.step2-body').html('<p class="pt-3 pb-2 text-sm text-gray-600">' + get_stats(response.f_imported, response.f_errors, response.f_total, percentage, response.memoryusage) + '</p>');
190
- $('.step2-status,.step2-list, .es-import-processing').hide();
191
- importerrors = 0;
192
- let finished = percentage >= 100;
193
-
194
- if (response.success) {
195
-
196
- if (!finished) do_import(id + 1, options);
197
-
198
- importprogressbar.animate({
199
- 'width': (percentage) + '%'
200
- }, {
201
- duration: 1000,
202
- easing: 'swing',
203
- queue: false,
204
- step: function (percentage) {
205
- importstatus.show().addClass('text-lg').html( sprintf(ig_es_subscribers_data.i18n.import_contacts, '' ) );
206
- $('.import-instruction').html( ig_es_subscribers_data.i18n.no_windowclose );
207
- import_percentage.html( Math.ceil(percentage) + '%' );
208
- },
209
- complete: function () {
210
- if (finished) {
211
- window.onbeforeunload = null;
212
- $('.import-instruction').hide();
213
- importprogress.addClass('finished');
214
- $('.step2-body').html(response.html).slideDown();
215
- $('.step2-status,.step2-list,.es-import-processing').hide();
216
- importstatus.addClass('text-xl');
217
- importstatus.html(sprintf(ig_es_subscribers_data.i18n.import_complete,'<svg class=" w-6 h-6 inline-block text-indigo-600" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"></path></svg>'));
218
- }
219
- }
220
- });
221
- } else {
222
- import_error_handler(percentage, id, options);
223
- }
224
- },
225
- error: function(jqXHR, textStatus, errorThrown) {
226
- import_error_handler(percentage, id, options);
227
- }
228
- });
229
- }
230
-
231
- let get_stats = function(imported, errors, total, percentage, memoryusage) {
232
- let timepast = new Date().getTime() - importstarttime.getTime(),
233
- timeleft = Math.ceil(((100 - percentage) * (timepast / percentage)) / 60000);
234
-
235
- return sprintf(ig_es_subscribers_data.i18n.current_stats, '<span class="font-medium">' + imported + '</span>', '<span class="font-medium">' + total + '</span>', '<span class="font-medium">' + errors + '</span>', '<span class="font-medium">' + memoryusage + '</span>') + '<br>' +
236
- sprintf(ig_es_subscribers_data.i18n.estimate_time, timeleft);
237
- }
238
-
239
- let import_error_handler = function(percentage, id, options) {
240
- importerrors++;
241
- if (importerrors >= 5) {
242
-
243
- alert(ig_es_subscribers_data.i18n.error_importing);
244
- importstatus.html(sprintf(ig_es_subscribers_data.i18n.import_failed, '<svg class=" w-6 h-6 inline-block text-red-600" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>'));
245
- window.onbeforeunload = null;
246
- return;
247
- }
248
-
249
- let i = importerrors * 5,
250
- str = '',
251
- errorint = setInterval(function () {
252
- if (i <= 0) {
253
- clearInterval(errorint);
254
- progress.removeClass('paused');
255
- do_import(id, options);
256
- } else {
257
- progress.addClass('paused');
258
- str = '<span class="error">' + sprintf(ig_es_subscribers_data.i18n.continues_in, (i--)) + '</span>';
259
- }
260
- importstatus.html(sprintf(ig_es_subscribers_data.i18n.import_contacts, str));
261
- }, 1000);
262
- }
263
-
264
- let sprintf = function() {
265
- let a = Array.prototype.slice.call(arguments),
266
- str = a.shift(),
267
- total = a.length,
268
- reg;
269
- for (let i = 0; i < total; i++) {
270
- reg = new RegExp('%(' + (i + 1) + '\\$)?(s|d|f)');
271
- str = str.replace(reg, a[i]);
272
- }
273
- return str;
274
- }
275
-
276
- let _ajax = function(action, data, callback, errorCallback) {
277
-
278
- if ($.isFunction(data)) {
279
- if ($.isFunction(callback)) {
280
- errorCallback = callback;
281
- }
282
- callback = data;
283
- data = {};
284
- }
285
- $.ajax({
286
- type: 'POST',
287
- url: ajaxurl,
288
- data: $.extend({
289
- action: 'ig_es_' + action,
290
- security: wpnonce
291
- }, data),
292
- success: function (data, textStatus, jqXHR) {
293
- callback && callback.call(this, data, textStatus, jqXHR);
294
- },
295
- error: function (jqXHR, textStatus, errorThrown) {
296
- if (textStatus == 'error' && !errorThrown) return;
297
- if (console) console.error($.trim(jqXHR.responseText));
298
- errorCallback && errorCallback.call(this, jqXHR, textStatus, errorThrown);
299
- },
300
- dataType: "JSON"
301
- });
302
- }
303
-
304
- if ( 'object' === typeof (wpUploaderInit) ) {
305
- uploader_init();
306
- }
307
-
308
- $('#form_import_subscribers').on('submit', start_import );
309
-
310
- $('#import_wordpress')
311
- .on('click', function () {
312
-
313
- let selected_roles = [];
314
- $('#ig-es-wordpress-user-roles input[name="roles[]"]:checked').each(function(){
315
- let selected_role = $(this).val();
316
- selected_roles.push(selected_role);
317
- });
318
- _ajax('import_subscribers_upload_handler', {
319
- selected_roles: selected_roles
320
- }, function (response) {
321
-
322
- if (response.success) {
323
- importidentifier = response.identifier;
324
- $('#wordpress-users').fadeOut();
325
- get_import_data();
326
- } else {
327
- importstatus.html(response.message);
328
- progress.addClass('error');
329
- }
330
- }, function () {
331
-
332
- importstatus.html('Error');
333
- });
334
-
335
- return false;
336
- });
337
-
338
- $("input:radio[name='es-import-subscribers']").click(function() {
339
- let import_option = $(this).attr("value");
340
- if( "es-sync-wordpress-users" === import_option ){
341
- $(".es-sync-wordpress-users").show();
342
- $(".es-import-with-csv").hide();
343
- }
344
- else{
345
- $(".es-import-with-csv").show();
346
- $(".es-sync-wordpress-users").hide();
347
- }
348
- });
349
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lite/includes/class-es-common.php CHANGED
@@ -1763,12 +1763,15 @@ class ES_Common {
1763
  *
1764
  * @return string
1765
  */
1766
- public static function convert_timestamp_to_date( $timestamp ) {
1767
 
1768
- $convert_date_format = get_option( 'date_format' );
1769
- $convert_time_format = get_option( 'time_format' );
 
 
 
1770
 
1771
- return gmdate( "$convert_date_format $convert_time_format", $timestamp );
1772
  }
1773
 
1774
  /**
1763
  *
1764
  * @return string
1765
  */
1766
+ public static function convert_timestamp_to_date( $timestamp, $format = '' ) {
1767
 
1768
+ if ( empty( $format ) ) {
1769
+ $convert_date_format = get_option( 'date_format' );
1770
+ $convert_time_format = get_option( 'time_format' );
1771
+ $format = $convert_date_format . ' ' . $convert_time_format;
1772
+ }
1773
 
1774
+ return gmdate( $format, $timestamp );
1775
  }
1776
 
1777
  /**
lite/includes/class-es-install.php CHANGED
@@ -252,6 +252,10 @@ if ( ! class_exists( 'ES_Install' ) ) {
252
  'ig_es_update_469_alter_wc_guests_table',
253
  'ig_es_update_469_db_version',
254
  ),
 
 
 
 
255
 
256
  );
257
 
252
  'ig_es_update_469_alter_wc_guests_table',
253
  'ig_es_update_469_db_version',
254
  ),
255
+ '4.6.13' => array(
256
+ 'ig_es_migrate_4613_sequence_list_settings_into_campaign_rules',
257
+ 'ig_es_update_4613_db_version',
258
+ )
259
 
260
  );
261
 
lite/includes/classes/class-es-campaign-report.php CHANGED
@@ -342,14 +342,14 @@ class ES_Campaign_Report extends ES_List_Table {
342
  if ( IG_MESSAGE_OPEN === $action_type ) {
343
  $view_activity_data[$contact_id]['opened'] = 'Viewed';
344
  $view_activity_data[$contact_id]['status'] = 'Opened';
345
- $view_activity_data[$contact_id]['opened_at'] = ! empty( $notification_action['created_at'] ) ? ES_Common::convert_timestamp_to_date( $notification_action['created_at'] ) : '' ;
346
 
347
  $view_activity_data = apply_filters( 'additional_es_report_activity_data', $view_activity_data, $contact_id, $notification_action );
348
  } elseif ( IG_MESSAGE_SENT === $action_type ) {
349
  if ( empty( $view_activity_data[$contact_id]['status'] ) ) {
350
  $view_activity_data[$contact_id]['status'] = 'Sent';
351
  }
352
- $view_activity_data[$contact_id]['sent_at'] = ! empty( $notification_action['created_at'] ) ? ES_Common::convert_timestamp_to_date( $notification_action['created_at'] ) : '' ;
353
  }
354
 
355
  }
342
  if ( IG_MESSAGE_OPEN === $action_type ) {
343
  $view_activity_data[$contact_id]['opened'] = 'Viewed';
344
  $view_activity_data[$contact_id]['status'] = 'Opened';
345
+ $view_activity_data[$contact_id]['opened_at'] = ! empty( $notification_action['created_at'] ) ? ES_Common::convert_timestamp_to_date( $notification_action['created_at'], 'Y-m-d H:i:s' ) : '' ;
346
 
347
  $view_activity_data = apply_filters( 'additional_es_report_activity_data', $view_activity_data, $contact_id, $notification_action );
348
  } elseif ( IG_MESSAGE_SENT === $action_type ) {
349
  if ( empty( $view_activity_data[$contact_id]['status'] ) ) {
350
  $view_activity_data[$contact_id]['status'] = 'Sent';
351
  }
352
+ $view_activity_data[$contact_id]['sent_at'] = ! empty( $notification_action['created_at'] ) ? ES_Common::convert_timestamp_to_date( $notification_action['created_at'], 'Y-m-d H:i:s' ) : '' ;
353
  }
354
 
355
  }
lite/includes/classes/class-es-contacts-table.php CHANGED
@@ -867,7 +867,7 @@ class ES_Contacts_Table extends ES_List_Table {
867
  * @since 4.0.0
868
  */
869
  public function column_default( $item, $column_name ) {
870
- $item = apply_filters( 'es_subscribers_col_data', $item, $column_name );
871
  switch ( $column_name ) {
872
  case 'lists':
873
  return $this->get_lists_to_show( $item['id'] );
867
  * @since 4.0.0
868
  */
869
  public function column_default( $item, $column_name ) {
870
+ $item = apply_filters( 'es_subscribers_col_data', $item, $column_name, $this );
871
  switch ( $column_name ) {
872
  case 'lists':
873
  return $this->get_lists_to_show( $item['id'] );
lite/includes/classes/class-es-import-subscribers.php CHANGED
@@ -41,8 +41,6 @@ class ES_Import_Subscribers {
41
 
42
  public function prepare_import_subscriber_form() {
43
 
44
- global $is_IE, $is_opera;
45
-
46
  if ( is_multisite() && ! is_upload_space_available() ) {
47
  return;
48
  }
41
 
42
  public function prepare_import_subscriber_form() {
43
 
 
 
44
  if ( is_multisite() && ! is_upload_space_available() ) {
45
  return;
46
  }
lite/includes/classes/class-es-newsletters.php CHANGED
@@ -81,7 +81,7 @@ class ES_Newsletters {
81
  $meta['list_conditions'] = IG_ES_Campaign_Rules::remove_empty_conditions( $meta['list_conditions'] );
82
  }
83
 
84
- $broadcast_data['meta'] = maybe_serialize( $meta );
85
 
86
  self::es_send_email_callback( $broadcast_data );
87
 
@@ -175,7 +175,7 @@ class ES_Newsletters {
175
  $lists = ES_Common::prepare_list_dropdown_options( $list_ids );
176
  $from_email = ES_Common::get_ig_option( 'from_email' );
177
 
178
- $broadcast_id = ! empty( $broadcast_data['id'] ) ? $broadcast_data['id'] : '';
179
  $broadcast_from_name = ! empty( $broadcast_data['from_name'] ) ? $broadcast_data['from_name'] : get_option( 'ig_es_from_name' );
180
  $broadcast_email = ! empty( $broadcast_data['from_email'] ) ? $broadcast_data['from_email'] : $from_email;
181
  $broadcast_reply_to = ! empty( $broadcast_data['reply_to_email'] ) ? $broadcast_data['reply_to_email'] : $from_email;
@@ -386,7 +386,7 @@ class ES_Newsletters {
386
  </div>
387
  <div class="block py-2 mx-4 ">
388
  <?php
389
- do_action( 'ig_es_show_campaign_rules', $broadcast_data );
390
  ?>
391
  <!-- Hidden field to detect whether admin has update campaign lists or not during editing of campaign -->
392
  <input type="hidden" name="broadcast_data[existing_list_ids]" value="<?php echo esc_attr( $list_ids ); ?>">
@@ -737,6 +737,10 @@ class ES_Newsletters {
737
 
738
  $broadcast_data = ig_es_get_request_data( 'broadcast_data', array(), false );
739
 
 
 
 
 
740
  $broadcast_id = ! empty( $broadcast_data['id'] ) ? $broadcast_data['id'] : null;
741
  $is_updating = ! empty( $broadcast_id ) ? true : false;
742
  $list_id = ! empty( $broadcast_data['list_ids'] ) ? $broadcast_data['list_ids'] : '';
@@ -748,11 +752,12 @@ class ES_Newsletters {
748
  $broadcast_data['status'] = ! empty( $broadcast_data['status'] ) ? 1 : 0;
749
  $meta = ! empty( $broadcast_data['meta'] ) ? $broadcast_data['meta'] : array();
750
  $meta['pre_header'] = ! empty( $broadcast_data['pre_header'] ) ? $broadcast_data['pre_header'] : '';
 
751
  if ( ! empty( $meta['list_conditions'] ) ) {
752
  $meta['list_conditions'] = IG_ES_Campaign_Rules::remove_empty_conditions( $meta['list_conditions'] );
753
  }
754
- $broadcast_data['meta'] = maybe_serialize( $meta );
755
 
 
756
  $broadcast_data['type'] = 'newsletter';
757
  $broadcast_data['name'] = $broadcast_data['subject'];
758
  $broadcast_data['slug'] = sanitize_title( sanitize_text_field( $broadcast_data['name'] ) );
81
  $meta['list_conditions'] = IG_ES_Campaign_Rules::remove_empty_conditions( $meta['list_conditions'] );
82
  }
83
 
84
+ $broadcast_data['meta'] = maybe_serialize( $meta );
85
 
86
  self::es_send_email_callback( $broadcast_data );
87
 
175
  $lists = ES_Common::prepare_list_dropdown_options( $list_ids );
176
  $from_email = ES_Common::get_ig_option( 'from_email' );
177
 
178
+ $broadcast_id = ! empty( $broadcast_data['id'] ) ? $broadcast_data['id'] : 0;
179
  $broadcast_from_name = ! empty( $broadcast_data['from_name'] ) ? $broadcast_data['from_name'] : get_option( 'ig_es_from_name' );
180
  $broadcast_email = ! empty( $broadcast_data['from_email'] ) ? $broadcast_data['from_email'] : $from_email;
181
  $broadcast_reply_to = ! empty( $broadcast_data['reply_to_email'] ) ? $broadcast_data['reply_to_email'] : $from_email;
386
  </div>
387
  <div class="block py-2 mx-4 ">
388
  <?php
389
+ do_action( 'ig_es_show_campaign_rules', $broadcast_id, $broadcast_data );
390
  ?>
391
  <!-- Hidden field to detect whether admin has update campaign lists or not during editing of campaign -->
392
  <input type="hidden" name="broadcast_data[existing_list_ids]" value="<?php echo esc_attr( $list_ids ); ?>">
737
 
738
  $broadcast_data = ig_es_get_request_data( 'broadcast_data', array(), false );
739
 
740
+ /**
741
+ * To allow insert of new broadcast data,
742
+ * we are specifically setting $broadcast_id to null when id is empty in $broadcast_data
743
+ **/
744
  $broadcast_id = ! empty( $broadcast_data['id'] ) ? $broadcast_data['id'] : null;
745
  $is_updating = ! empty( $broadcast_id ) ? true : false;
746
  $list_id = ! empty( $broadcast_data['list_ids'] ) ? $broadcast_data['list_ids'] : '';
752
  $broadcast_data['status'] = ! empty( $broadcast_data['status'] ) ? 1 : 0;
753
  $meta = ! empty( $broadcast_data['meta'] ) ? $broadcast_data['meta'] : array();
754
  $meta['pre_header'] = ! empty( $broadcast_data['pre_header'] ) ? $broadcast_data['pre_header'] : '';
755
+
756
  if ( ! empty( $meta['list_conditions'] ) ) {
757
  $meta['list_conditions'] = IG_ES_Campaign_Rules::remove_empty_conditions( $meta['list_conditions'] );
758
  }
 
759
 
760
+ $broadcast_data['meta'] = maybe_serialize( $meta );
761
  $broadcast_data['type'] = 'newsletter';
762
  $broadcast_data['name'] = $broadcast_data['subject'];
763
  $broadcast_data['slug'] = sanitize_title( sanitize_text_field( $broadcast_data['name'] ) );
lite/includes/classes/class-es-post-notifications.php CHANGED
@@ -364,9 +364,6 @@ class ES_Post_Notifications_Table {
364
  </div>
365
  </td>
366
  </tr>
367
- <?php
368
- do_action( 'ig_es_show_campaign_rules', array() );
369
- ?>
370
  <?php do_action( 'es_after_post_notification_template', $id ); ?>
371
  <?php if ( ! $is_new ) { ?>
372
  <tr class="border-b border-gray-100">
364
  </div>
365
  </td>
366
  </tr>
 
 
 
367
  <?php do_action( 'es_after_post_notification_template', $id ); ?>
368
  <?php if ( ! $is_new ) { ?>
369
  <tr class="border-b border-gray-100">
lite/includes/classes/class-es-queue.php CHANGED
@@ -277,29 +277,44 @@ if ( ! class_exists( 'ES_Queue' ) ) {
277
 
278
  $list_ids = $campaign['list_ids'];
279
 
280
- $ig_actions_table = IG_ACTIONS_TABLE;
281
- $ig_lists_contacts_table = IG_LISTS_CONTACTS_TABLE;
282
- $ig_queue_table = IG_QUEUE_TABLE;
283
- $ig_campaign_sent = IG_MESSAGE_SENT;
 
 
 
 
 
 
 
284
 
 
285
  $query_args = array(
286
- 'select' => "SELECT lists_contacts.contact_id, UNIX_TIMESTAMP ( lists_contacts.subscribed_at + INTERVAL $offset ) AS timestamp",
287
- 'from' => "FROM $ig_lists_contacts_table AS lists_contacts",
288
- 'join1' => "LEFT JOIN $ig_actions_table AS actions_sent_message ON lists_contacts.contact_id = actions_sent_message.contact_id AND actions_sent_message.type = $ig_campaign_sent AND actions_sent_message.campaign_id IN ($campaign_id)",
289
- 'join2' => "LEFT JOIN $ig_queue_table AS queue ON lists_contacts.contact_id = queue.contact_id AND queue.campaign_id IN ($campaign_id)",
290
- 'where' => "WHERE 1=1 AND lists_contacts.list_id IN ($list_ids) AND lists_contacts.status = 'subscribed' AND actions_sent_message.contact_id IS NULL AND queue.contact_id IS NULL",
291
- 'group_by' => 'GROUP BY lists_contacts.contact_id',
292
- 'having' => 'HAVING timestamp <= ' . ( $now + $queue_upfront ) . ' AND timestamp >= ' . ( $now - $grace_period ),
293
- 'order_by' => 'ORDER BY timestamp ASC',
 
 
 
294
  );
295
 
296
- $query = implode( ' ', $query_args );
 
 
 
 
 
297
 
298
  // ES()->logger->info( '----------------------------Query Args (ig_es_contact_insert) ----------------------------' );
299
  // ES()->logger->info( $query );
300
  // ES()->logger->info( '----------------------------Query Args Complete (ig_es_contact_insert) ----------------------------' );
301
 
302
- $results = $wpbd->get_results( $query, ARRAY_A );
303
 
304
  // ES()->logger->info( 'Results: ' . print_r( $results, true ) );
305
 
@@ -534,87 +549,91 @@ if ( ! class_exists( 'ES_Queue' ) ) {
534
  }
535
 
536
  ES()->cron->set_last_hit();
 
 
537
 
538
- $micro_time = microtime( true );
539
-
540
- $ig_queue_table = IG_QUEUE_TABLE;
541
- $ig_campaigns_table = IG_CAMPAIGNS_TABLE;
542
-
543
- $sql = 'SELECT queue.campaign_id, queue.contact_id, queue.count AS _count, queue.requeued AS _requeued, queue.options AS _options, queue.tags AS _tags, queue.priority AS _priority';
544
- $sql .= " FROM $ig_queue_table AS queue";
545
- $sql .= " LEFT JOIN $ig_campaigns_table AS campaigns ON campaigns.id = queue.campaign_id";
546
- $sql .= ' WHERE queue.timestamp <= ' . (int) $micro_time . ' AND queue.sent_at = 0';
547
- $sql .= ' AND (campaigns.status = 1)';
548
- $sql .= ' ORDER BY queue.priority DESC';
549
-
550
- // ES()->logger->info( 'Process Queue:' );
551
- // ES()->logger->info( 'SQL: ' . $sql );
552
-
553
- $notifications = $wpdb->get_results(
554
- $wpdb->prepare(
555
- "SELECT queue.campaign_id, queue.contact_id, queue.count AS _count, queue.requeued AS _requeued, queue.options AS _options, queue.tags AS _tags, queue.priority AS _priority
556
- FROM {$wpdb->prefix}ig_queue AS queue
557
- LEFT JOIN {$wpdb->prefix}ig_campaigns AS campaigns ON campaigns.id = queue.campaign_id
558
- WHERE queue.timestamp <= %d AND queue.sent_at = 0
559
- AND (campaigns.status = 1)
560
- ORDER BY queue.priority DESC",
561
- (int) $micro_time
562
- ),
563
- ARRAY_A
564
- );
565
-
566
- if ( is_array( $notifications ) && count( $notifications ) > 0 ) {
567
- $campaigns_notifications = array();
568
- $contact_ids = array();
569
- foreach ( $notifications as $notification ) {
570
- $campaigns_notifications[ $notification['campaign_id'] ][] = $notification;
571
-
572
- $contact_ids[] = $notification['contact_id'];
573
- }
574
-
575
- // We need unique ids
576
- $contact_ids = array_unique( $contact_ids );
577
-
578
- $contacts = ES()->contacts_db->get_details_by_ids( $contact_ids );
579
-
580
- foreach ( $campaigns_notifications as $campaign_id => $notifications ) {
581
-
582
- $campaign = ES()->campaigns_db->get( $campaign_id );
583
-
584
- if ( ! empty( $campaign ) ) {
585
-
586
- $content = $campaign['body'];
587
- $subject = $campaign['subject'];
588
-
589
- foreach ( $notifications as $notification ) {
590
-
591
- $contact_id = $notification['contact_id'];
592
-
593
- if ( ! empty( $contacts[ $contact_id ] ) ) {
594
-
595
- $first_name = $contacts[ $contact_id ]['first_name'];
596
- $last_name = $contacts[ $contact_id ]['last_name'];
597
- $hash = $contacts[ $contact_id ]['hash'];
598
- $email = $contacts[ $contact_id ]['email'];
599
- $name = ES_Common::prepare_name_from_first_name_last_name( $first_name, $last_name );
600
 
601
- $merge_tags = array(
602
- 'name' => $name,
603
- 'first_name' => $first_name,
604
- 'last_name' => $last_name,
605
- 'email' => $email,
606
- 'guid' => $hash,
607
- 'dbid' => $contact_id,
608
- 'message_id' => 0,
609
- 'campaign_id' => $campaign_id,
610
- );
611
-
612
- $result = ES()->mailer->send( $subject, $content, $email, $merge_tags );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
613
 
614
- do_action( 'ig_es_message_sent', $contact_id, $campaign_id, 0 );
 
 
 
 
615
 
616
- // Email Sent now delete from queue now.
617
- $this->db->delete_from_queue( $campaign_id, $contact_id );
 
 
618
  }
619
  }
620
  }
277
 
278
  $list_ids = $campaign['list_ids'];
279
 
280
+ $campaign = ES()->campaigns_db->get( $campaign_id );
281
+
282
+ $conditions = array();
283
+ if ( ! empty( $campaign ) && ! empty( $campaign['meta'] ) ) {
284
+ $campaign_meta = maybe_unserialize( $campaign['meta'] );
285
+ if ( ! empty( $campaign_meta['list_conditions'] ) ) {
286
+ $conditions = $campaign_meta['list_conditions'];
287
+ }
288
+ }
289
+
290
+ $conditions = ! empty( $meta['list_conditions'] ) ? $meta['list_conditions'] : array();
291
 
292
+
293
  $query_args = array(
294
+ 'select' => array(
295
+ 'lists_subscribers.contact_id AS contact_id',
296
+ "UNIX_TIMESTAMP ( lists_subscribers.subscribed_at + INTERVAL $offset ) AS timestamp",
297
+ ),
298
+ 'sent__not_in' => array( $campaign_id ),
299
+ 'queue__not_in' => array( $campaign_id ),
300
+ 'lists' => $list_ids,
301
+ 'conditions' => $conditions,
302
+ 'having' => array( 'timestamp <= ' . ( $now + $queue_upfront ) ),
303
+ 'orderby' => array( 'timestamp' ),
304
+ 'groupby' => 'lists_subscribers.contact_id',
305
  );
306
 
307
+ if ( $grace_period ) {
308
+ $query_args['having'][] = 'timestamp >= ' . ( $now - $grace_period );
309
+ }
310
+
311
+ $query = new IG_ES_Subscribers_Query();
312
+ $results = $query->run( $query_args );
313
 
314
  // ES()->logger->info( '----------------------------Query Args (ig_es_contact_insert) ----------------------------' );
315
  // ES()->logger->info( $query );
316
  // ES()->logger->info( '----------------------------Query Args Complete (ig_es_contact_insert) ----------------------------' );
317
 
 
318
 
319
  // ES()->logger->info( 'Results: ' . print_r( $results, true ) );
320
 
549
  }
550
 
551
  ES()->cron->set_last_hit();
552
+
553
+ $email_sending_limit = ES()->mailer->get_total_emails_send_now();
554
 
555
+ if ( $email_sending_limit > 0 ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
556
 
557
+ $micro_time = microtime( true );
558
+
559
+ // ES()->logger->info( 'Process Queue:' );
560
+ // ES()->logger->info( 'SQL: ' . $sql );
561
+
562
+ $notifications = $wpdb->get_results(
563
+ $wpdb->prepare(
564
+ "SELECT queue.campaign_id, queue.contact_id, queue.count AS _count, queue.requeued AS _requeued, queue.options AS _options, queue.tags AS _tags, queue.priority AS _priority
565
+ FROM {$wpdb->prefix}ig_queue AS queue
566
+ LEFT JOIN {$wpdb->prefix}ig_campaigns AS campaigns ON campaigns.id = queue.campaign_id
567
+ WHERE queue.timestamp <= %d AND queue.sent_at = 0
568
+ AND (campaigns.status = 1)
569
+ ORDER BY queue.priority DESC",
570
+ (int) $micro_time
571
+ ),
572
+ ARRAY_A
573
+ );
574
+
575
+ $batch_start_time = time();
576
+
577
+ if ( is_array( $notifications ) && count( $notifications ) > 0 ) {
578
+ $campaigns_notifications = array();
579
+ $contact_ids = array();
580
+ foreach ( $notifications as $notification ) {
581
+ $campaigns_notifications[ $notification['campaign_id'] ][] = $notification;
582
+
583
+ $contact_ids[] = $notification['contact_id'];
584
+ }
585
+
586
+ // We need unique ids
587
+ $contact_ids = array_unique( $contact_ids );
588
+
589
+ $contacts = ES()->contacts_db->get_details_by_ids( $contact_ids );
590
+
591
+ foreach ( $campaigns_notifications as $campaign_id => $notifications ) {
592
+
593
+ $campaign = ES()->campaigns_db->get( $campaign_id );
594
+
595
+ if ( ! empty( $campaign ) ) {
596
+
597
+ $content = $campaign['body'];
598
+ $subject = $campaign['subject'];
599
+
600
+ foreach ( $notifications as $notification ) {
601
+
602
+ $contact_id = $notification['contact_id'];
603
+
604
+ if ( ! empty( $contacts[ $contact_id ] ) ) {
605
+
606
+ $first_name = $contacts[ $contact_id ]['first_name'];
607
+ $last_name = $contacts[ $contact_id ]['last_name'];
608
+ $hash = $contacts[ $contact_id ]['hash'];
609
+ $email = $contacts[ $contact_id ]['email'];
610
+ $name = ES_Common::prepare_name_from_first_name_last_name( $first_name, $last_name );
611
+
612
+ $merge_tags = array(
613
+ 'name' => $name,
614
+ 'first_name' => $first_name,
615
+ 'last_name' => $last_name,
616
+ 'email' => $email,
617
+ 'guid' => $hash,
618
+ 'dbid' => $contact_id,
619
+ 'message_id' => 0,
620
+ 'campaign_id' => $campaign_id,
621
+ );
622
+
623
+ $result = ES()->mailer->send( $subject, $content, $email, $merge_tags );
624
+
625
+ do_action( 'ig_es_message_sent', $contact_id, $campaign_id, 0 );
626
 
627
+ $email_sending_limit--;
628
+
629
+ // Email Sent now delete from queue now.
630
+ $this->db->delete_from_queue( $campaign_id, $contact_id );
631
+ }
632
 
633
+ // Check if email sending limit or time limit or memory limit has been reached.
634
+ if ( $email_sending_limit <= 0 || IG_ES_Background_Process_Helper::time_exceeded( $batch_start_time, 0.8 ) || IG_ES_Background_Process_Helper::memory_exceeded() ) {
635
+ break 2;
636
+ }
637
  }
638
  }
639
  }
lite/includes/classes/class-ig-es-background-process-helper.php CHANGED
@@ -110,14 +110,17 @@ if ( ! class_exists( 'IG_ES_Background_Process_Helper' ) ) {
110
  * A timeout limit of 30s is common on shared hosting.
111
  *
112
  * @param string $start_time start timestamp.
 
113
  *
114
  * @return bool
115
  *
116
  * @since 4.6.3
 
 
117
  */
118
- public static function time_exceeded( $start_time = 0 ) {
119
 
120
- $finish = $start_time + ( self::get_time_limit() * 0.6 );
121
  $return = false;
122
 
123
  if ( time() >= $finish ) {
110
  * A timeout limit of 30s is common on shared hosting.
111
  *
112
  * @param string $start_time start timestamp.
113
+ * @param float $fraction Time fraction.
114
  *
115
  * @return bool
116
  *
117
  * @since 4.6.3
118
+ *
119
+ * @since Added $fraction parameter
120
  */
121
+ public static function time_exceeded( $start_time = 0, $fraction = 0.6 ) {
122
 
123
+ $finish = $start_time + ( self::get_time_limit() * $fraction );
124
  $return = false;
125
 
126
  if ( time() >= $finish ) {
lite/includes/classes/class-ig-es-subscriber-query.php CHANGED
@@ -14,16 +14,17 @@ class IG_ES_Subscribers_Query {
14
  private $args = array();
15
 
16
  private $defaults = array(
17
- 'select' => null,
18
- 'join' => null,
19
- 'status' => null,
20
- 'status__not_in' => null,
21
- 'where' => null,
22
- 'having' => null,
23
- 'orderby' => null,
24
- 'order' => null,
25
- 'limit' => null,
26
- 'offset' => null,
 
27
 
28
  'return_ids' => false,
29
  'return_count' => false,
@@ -104,7 +105,8 @@ class IG_ES_Subscribers_Query {
104
  '_click_link',
105
  '_click_link__not_in',
106
  '_lists__in',
107
- '_lists__not_in'
 
108
  );
109
 
110
  private static $_instance = null;
@@ -161,10 +163,21 @@ class IG_ES_Subscribers_Query {
161
  if ( ! empty( $this->args['lists'] ) && is_string( $this->args['lists'] ) ) {
162
  $this->args['lists'] = explode( ',', $this->args['lists'] );
163
  }
164
-
 
 
 
165
 
166
  $this->args = apply_filters( 'ig_es_subscriber_query_args', $this->args );
167
 
 
 
 
 
 
 
 
 
168
  if ( $this->args['conditions'] ) {
169
  $cond = array();
170
 
@@ -327,6 +340,7 @@ class IG_ES_Subscribers_Query {
327
 
328
  $joins[] = "LEFT JOIN {$wpbd->prefix}ig_lists_contacts AS lists_subscribers ON subscribers.id = lists_subscribers.contact_id";
329
  $wheres[] = "AND lists_subscribers.status IN( 'subscribed', 'confirmed' )";
 
330
 
331
  if ( ! is_bool( $this->args['lists'] ) ) {
332
  // unassigned members if NULL
@@ -345,6 +359,14 @@ class IG_ES_Subscribers_Query {
345
  }
346
  }
347
 
 
 
 
 
 
 
 
 
348
  if ( $this->args['orderby'] && ! $this->args['return_count'] ) {
349
 
350
  $ordering = isset( $this->args['order'][0] ) ? strtoupper( $this->args['order'][0] ) : 'ASC';
@@ -376,6 +398,16 @@ class IG_ES_Subscribers_Query {
376
  $where = 'WHERE 1=1 ' . implode( "\n ", array_unique( $wheres ) );
377
  }
378
 
 
 
 
 
 
 
 
 
 
 
379
  $order = '';
380
  if ( ! empty( $orders ) ) {
381
  $order = 'ORDER BY ' . implode( ', ', array_unique( $orders ) );
@@ -385,6 +417,8 @@ class IG_ES_Subscribers_Query {
385
  $sql .= ' ' . apply_filters( 'ig_es_subscriber_query_sql_from', $from, $this->args, $campaign_id ) . "\n";
386
  $sql .= ' ' . apply_filters( 'ig_es_subscriber_query_sql_join', $join, $this->args, $campaign_id ) . "\n";
387
  $sql .= ' ' . apply_filters( 'ig_es_subscriber_query_sql_where', $where, $this->args, $campaign_id ) . "\n";
 
 
388
  $sql .= ' ' . apply_filters( 'ig_es_subscriber_query_sql_order', $order, $this->args, $campaign_id ) . "\n";
389
 
390
  $sql = trim( $sql );
14
  private $args = array();
15
 
16
  private $defaults = array(
17
+ 'select' => null,
18
+ 'join' => null,
19
+ 'status' => null,
20
+ 'status__not_in' => null,
21
+ 'where' => null,
22
+ 'having' => null,
23
+ 'orderby' => null,
24
+ 'order' => null,
25
+ 'groupby' => null,
26
+ 'limit' => null,
27
+ 'offset' => null,
28
 
29
  'return_ids' => false,
30
  'return_count' => false,
105
  '_click_link',
106
  '_click_link__not_in',
107
  '_lists__in',
108
+ '_lists__not_in',
109
+ '_subscribed_before'
110
  );
111
 
112
  private static $_instance = null;
163
  if ( ! empty( $this->args['lists'] ) && is_string( $this->args['lists'] ) ) {
164
  $this->args['lists'] = explode( ',', $this->args['lists'] );
165
  }
166
+
167
+ if ( $this->args['sent__not_in'] ) {
168
+ $this->add_condition( '_sent__not_in', '=', $this->id_parse( $this->args['sent__not_in'] ) );
169
+ }
170
 
171
  $this->args = apply_filters( 'ig_es_subscriber_query_args', $this->args );
172
 
173
+ if ( ! empty( $this->args['queue__not_in'] ) ) {
174
+ $join = "LEFT JOIN {$wpbd->prefix}ig_queue AS queue ON subscribers.id = queue.contact_id";
175
+ if ( ! empty( $this->args['queue__not_in'] ) ) {
176
+ $join .= ' AND queue.campaign_id IN (' . implode( ',', array_filter( $this->args['queue__not_in'], 'is_numeric' ) ) . ')';
177
+ }
178
+ $joins[] = $join;
179
+ }
180
+
181
  if ( $this->args['conditions'] ) {
182
  $cond = array();
183
 
340
 
341
  $joins[] = "LEFT JOIN {$wpbd->prefix}ig_lists_contacts AS lists_subscribers ON subscribers.id = lists_subscribers.contact_id";
342
  $wheres[] = "AND lists_subscribers.status IN( 'subscribed', 'confirmed' )";
343
+
344
 
345
  if ( ! is_bool( $this->args['lists'] ) ) {
346
  // unassigned members if NULL
359
  }
360
  }
361
 
362
+ if ( ! empty( $this->args['queue__not_in'] ) ) {
363
+ $wheres[] = 'AND queue.contact_id IS NULL';
364
+ }
365
+
366
+ if ( $this->args['where'] ) {
367
+ $wheres[] = 'AND ( ' . implode( ' AND ', array_unique( $this->args['where'] ) ) . " )\n";
368
+ }
369
+
370
  if ( $this->args['orderby'] && ! $this->args['return_count'] ) {
371
 
372
  $ordering = isset( $this->args['order'][0] ) ? strtoupper( $this->args['order'][0] ) : 'ASC';
398
  $where = 'WHERE 1=1 ' . implode( "\n ", array_unique( $wheres ) );
399
  }
400
 
401
+ $groupby = '';
402
+ if ( ! empty( $this->args['groupby'] ) ) {
403
+ $groupby = 'GROUP BY ' . $this->args['groupby'] . '';
404
+ }
405
+
406
+ $having = '';
407
+ if ( ! empty( $this->args['having'] ) ) {
408
+ $having = 'HAVING ' . implode( ' AND ', array_unique( $this->args['having'] ) );
409
+ }
410
+
411
  $order = '';
412
  if ( ! empty( $orders ) ) {
413
  $order = 'ORDER BY ' . implode( ', ', array_unique( $orders ) );
417
  $sql .= ' ' . apply_filters( 'ig_es_subscriber_query_sql_from', $from, $this->args, $campaign_id ) . "\n";
418
  $sql .= ' ' . apply_filters( 'ig_es_subscriber_query_sql_join', $join, $this->args, $campaign_id ) . "\n";
419
  $sql .= ' ' . apply_filters( 'ig_es_subscriber_query_sql_where', $where, $this->args, $campaign_id ) . "\n";
420
+ $sql .= ' ' . apply_filters( 'ig_es_subscriber_query_sql_groupby', $groupby, $this->args, $campaign_id ) . "\n";
421
+ $sql .= ' ' . apply_filters( 'ig_es_subscriber_query_sql_having', $having, $this->args, $campaign_id ) . "\n";
422
  $sql .= ' ' . apply_filters( 'ig_es_subscriber_query_sql_order', $order, $this->args, $campaign_id ) . "\n";
423
 
424
  $sql = trim( $sql );
lite/includes/db/class-es-db-campaigns.php CHANGED
@@ -800,6 +800,12 @@ class ES_DB_Campaigns extends ES_DB {
800
  $status_placeholders = array_fill( 0, $status_count, '%d' );
801
  $where .= $wpbd->prepare( ' AND status IN( ' . implode( ',', $status_placeholders ) . ' )', $args['status'] );
802
  }
 
 
 
 
 
 
803
 
804
  return $this->get_by_conditions( $where );
805
  }
800
  $status_placeholders = array_fill( 0, $status_count, '%d' );
801
  $where .= $wpbd->prepare( ' AND status IN( ' . implode( ',', $status_placeholders ) . ' )', $args['status'] );
802
  }
803
+
804
+ if ( ! empty( $args['campaigns_not_in'] ) ) {
805
+ $ids_count = count( $args['campaigns_not_in'] );
806
+ $ids_placeholders = array_fill( 0, $ids_count, '%d' );
807
+ $where .= $wpbd->prepare( ' AND id NOT IN( ' . implode( ',', $ids_placeholders ) . ' )', $args['campaigns_not_in'] );
808
+ }
809
 
810
  return $this->get_by_conditions( $where );
811
  }
lite/includes/pro-features.php CHANGED
@@ -35,6 +35,7 @@ add_action( 'media_buttons', 'ig_es_upsell_add_attachment_feature' );
35
  add_action( 'ig_es_subscriber_import_method_tab_heading', 'ig_es_upsell_existing_wp_user_import_feature' );
36
 
37
  add_filter( 'ig_es_campaign_rules', 'ig_es_upsell_pro_campaign_rules' );
 
38
  /**
39
  * Promote SMTP mailer for free
40
  *
@@ -199,7 +200,7 @@ function ig_es_add_upsale( $fields ) {
199
  'disabled' => true,
200
  /* translators: %s: Icegram Pricing page url with utm tracking */
201
  'upgrade_title' => __( 'Track key insight behaviour with PRO', 'email-subscribers' ),
202
- 'upgrade_desc' => __( 'Understand key insight into customer behavior with Link Tracking and UTM tracking in <b class="font-medium text-teal-800">Email Subscribers Pro</b>.', 'email-subscribers' )
203
  )
204
  );
205
  $general_fields = ig_es_array_insert_after( $general_fields, 'ig_es_track_email_opens', $track_link_click );
@@ -242,7 +243,7 @@ function ig_es_add_upsale( $fields ) {
242
  'disabled' => true,
243
  /* translators: %s: Icegram Pricing page url with utm tracking */
244
  'upgrade_title' => __( 'Prevent spam attacks with PRO', 'email-subscribers' ),
245
- 'upgrade_desc' => __( 'Get a gatekeeper to secure your form and avoid spam signups with form Captcha <b class="font-medium text-teal-800">Email Subscribers PRO</b>.', 'email-subscribers' ),
246
  );
247
 
248
  $managed_blocked_domains['ig_es_enable_disposable_domains'] = array(
@@ -293,7 +294,7 @@ function ig_es_add_upsale( $fields ) {
293
  'disabled' => true,
294
  /* translators: %s: Icegram Pricing page url with utm tracking */
295
  'upgrade_title' => __( 'Track subscribers IP addresses with PRO', 'email-subscribers' ),
296
- 'upgrade_desc' => __( 'Enable IP tracking and get more information about your subscribers <b>eg.</b> which country your subscribers are from.', 'email-subscribers' ),
297
  );
298
 
299
  $fields['security_settings'] = array_merge( $fields['security_settings'], $track_ip_address );
@@ -665,6 +666,7 @@ function ig_es_workflows_integration_upsell () {
665
 
666
  $plugin_integrations = array(
667
  'WooCommerce',
 
668
  'Contact Form 7',
669
  'Easy Digital Downloads',
670
  'Ninja Forms',
@@ -684,7 +686,7 @@ function ig_es_workflows_integration_upsell () {
684
  <p class="text-sm leading-5 py-0.5 text-gray-500 group-hover:text-gray-900 group-focus:text-gray-900 transition ease-in-out duration-150">' . $plugin_name . '</p>
685
  </div>', 'email-subscribers');
686
  }
687
- $upsell_message .= __('</div><br>Powerup by integrating popular WordPress plugins with Email Subscribers. We have made things simple and automated for you to avoid manual actions.', 'email-subscribers');
688
  $upsell_info = array(
689
  'upgrade_title' => __('Unlock plugin integrations with PRO', 'email-subscribers' ),
690
  'pricing_url' => $pricing_url,
@@ -728,9 +730,9 @@ function ig_es_add_captcha_option( $form_data ) {
728
 
729
  $pricing_url = ES_Common::get_utm_tracking_url( $utm_args );
730
  $upsell_info = array(
731
- 'upgrade_title' => __('Secure your list now with PRO', 'email-subscribers'),
732
  'pricing_url' => $pricing_url,
733
- 'upsell_message' => __('Block known spam bot attacker domains, fake email addresses and bot signups with <b class="font-medium text-teal-800">Email Subscribers PRO.</b>', 'email-subscribers'),
734
  'cta_html' => false,
735
  );
736
  ?>
@@ -783,19 +785,14 @@ function ig_es_additional_multilist_and_post_digest() {
783
  <div class="flex-shrink-0 h-5 w-5 relative flex justify-center">
784
  <span class="block h-1.5 w-1.5 mt-2.5 bg-gray-300 rounded-full group-hover:bg-gray-400 group-focus:bg-gray-400 transition ease-in-out duration-150"></span>
785
  </div>
786
- <p class="text-sm leading-5 py-0.5 text-gray-500 group-hover:text-gray-900 group-focus:text-gray-900 transition ease-in-out duration-150">Schedule & send campaigns to multiple lists with <b class="font-medium text-teal-800">Email Subscribers PRO</b>.</p>
787
  </div>
 
788
  <div class="flex items-start space-x-3 -ml-8">
789
  <div class="flex-shrink-0 h-5 w-5 relative flex justify-center">
790
  <span class="block h-1.5 w-1.5 mt-2.5 bg-gray-300 rounded-full group-hover:bg-gray-400 group-focus:bg-gray-400 transition ease-in-out duration-150"></span>
791
  </div>
792
- <p class="text-sm leading-5 py-0.5 text-gray-500 group-hover:text-gray-900 group-focus:text-gray-900 transition ease-in-out duration-150">Stop creating multiple campaigns for different lists. Select multiple lists with <span class="text-teal-800">Email Subscribers PRO</span>.</p>
793
- </div>
794
- <div class="flex items-start space-x-3 -ml-8">
795
- <div class="flex-shrink-0 h-5 w-5 relative flex justify-center">
796
- <span class="block h-1.5 w-1.5 mt-2.5 bg-gray-300 rounded-full group-hover:bg-gray-400 group-focus:bg-gray-400 transition ease-in-out duration-150"></span>
797
- </div>
798
- <p class="text-sm leading-5 py-0.5 text-gray-500 group-hover:text-gray-900 group-focus:text-gray-900 transition ease-in-out duration-150">Schedule your future campaigns now and feel the peace of mind with <span class="text-teal-800">Email Subscribers PRO</span>.
799
  </p>
800
  </div>' , 'email-subscribers'),
801
  'cta_html' => false,
@@ -881,7 +878,7 @@ function ig_es_additional_options() {
881
  $upsell_info = array(
882
  'upgrade_title' => __('Reduce the possibility to land in spam with PRO', 'email-subscribers'),
883
  'pricing_url' => $pricing_url,
884
- 'upsell_message' => __('Get key insights about most converting links by tracking link activity, UTM tracking and also prevent your emails land into spam.'),
885
  'cta_html' => false,
886
  );
887
  ?>
@@ -995,9 +992,9 @@ function ig_es_view_additional_reports_data() {
995
 
996
  $pricing_url = ES_Common::get_utm_tracking_url( $utm_args );
997
  $upsell_info = array(
998
- 'upgrade_title' => __('Track campaign insights with PRO', 'email-subscribers'),
999
  'pricing_url' => $pricing_url,
1000
- 'upsell_message' => __('Know your subscribers & their behaviour with detailed campaign insights using <b class="font-medium text-teal-800">Email Subscribers Pro</b>.', 'email-subscribers'),
1001
  'cta_html' => true,
1002
  );
1003
  ?>
@@ -1547,44 +1544,44 @@ function ig_es_upsell_pro_campaign_rules( $campaign_rules = array() ) {
1547
 
1548
  $pro_campaign_rules = array(
1549
  'List' => array(
1550
- '_lists__not_in' => array(
1551
- 'name' => esc_html__( 'is not in List [PRO]', 'email-subscribers' ),
1552
  'disabled' => true
1553
  ),
1554
  ),
1555
  'Subscriber' => array(
1556
- 'email' => array(
1557
- 'name' => esc_html__( 'Email [PRO]', 'email-subscribers' ),
1558
  'disabled' => true
1559
  ),
1560
- 'country_code' => array(
1561
- 'name' => esc_html__( 'Country [PRO]', 'email-subscribers' ),
1562
  'disabled' => true
1563
  ),
1564
  ),
1565
  'Campaign' => array(
1566
- '_sent' => array(
1567
- 'name' => esc_html__( 'has received [PRO]', 'email-subscribers' ),
1568
  'disabled' => true
1569
  ),
1570
- '_sent__not_in' => array(
1571
- 'name' => esc_html__( 'has not received [PRO]', 'email-subscribers' ),
1572
  'disabled' => true
1573
  ),
1574
- '_open' => array(
1575
- 'name' => esc_html__( 'has received and opened [PRO]', 'email-subscribers' ),
1576
  'disabled' => true
1577
  ),
1578
- '_open__not_in' => array(
1579
- 'name' => esc_html__( 'has received but not opened [PRO]', 'email-subscribers' ),
1580
  'disabled' => true
1581
  ),
1582
- '_click' => array(
1583
- 'name' => esc_html__( 'has received and clicked [PRO]', 'email-subscribers' ),
1584
  'disabled' => true
1585
  ),
1586
- '_click__not_in' => array(
1587
- 'name' => esc_html__( 'has received and not clicked [PRO]', 'email-subscribers' ),
1588
  'disabled' => true
1589
  ),
1590
  ),
@@ -1593,5 +1590,28 @@ function ig_es_upsell_pro_campaign_rules( $campaign_rules = array() ) {
1593
  $campaign_rules = array_merge_recursive( $campaign_rules, $pro_campaign_rules );
1594
  }
1595
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1596
  return $campaign_rules;
1597
  }
35
  add_action( 'ig_es_subscriber_import_method_tab_heading', 'ig_es_upsell_existing_wp_user_import_feature' );
36
 
37
  add_filter( 'ig_es_campaign_rules', 'ig_es_upsell_pro_campaign_rules' );
38
+ add_action( 'ig_es_upsell_campaign_rules', 'ig_es_upsell_campaign_rules_message' );
39
  /**
40
  * Promote SMTP mailer for free
41
  *
200
  'disabled' => true,
201
  /* translators: %s: Icegram Pricing page url with utm tracking */
202
  'upgrade_title' => __( 'Track key insight behaviour with PRO', 'email-subscribers' ),
203
+ 'upgrade_desc' => __( 'Enable Link Tracking, UTM tracking and understand customer behavior to plan your next campaign accordingly.', 'email-subscribers' )
204
  )
205
  );
206
  $general_fields = ig_es_array_insert_after( $general_fields, 'ig_es_track_email_opens', $track_link_click );
243
  'disabled' => true,
244
  /* translators: %s: Icegram Pricing page url with utm tracking */
245
  'upgrade_title' => __( 'Prevent spam attacks with PRO', 'email-subscribers' ),
246
+ 'upgrade_desc' => __( 'Secure your list from known spam bot attacker domains, fake email addresses and bot signups.', 'email-subscribers' ),
247
  );
248
 
249
  $managed_blocked_domains['ig_es_enable_disposable_domains'] = array(
294
  'disabled' => true,
295
  /* translators: %s: Icegram Pricing page url with utm tracking */
296
  'upgrade_title' => __( 'Track subscribers IP addresses with PRO', 'email-subscribers' ),
297
+ 'upgrade_desc' => __( 'Enable IP tracking to store IP addresses and country name of subscribers. With this, you can target campaigns like Broadcasts, Sequences to subscribers from specific countries.', 'email-subscribers' ),
298
  );
299
 
300
  $fields['security_settings'] = array_merge( $fields['security_settings'], $track_ip_address );
666
 
667
  $plugin_integrations = array(
668
  'WooCommerce',
669
+ 'YITH WooCommerce Wishlist',
670
  'Contact Form 7',
671
  'Easy Digital Downloads',
672
  'Ninja Forms',
686
  <p class="text-sm leading-5 py-0.5 text-gray-500 group-hover:text-gray-900 group-focus:text-gray-900 transition ease-in-out duration-150">' . $plugin_name . '</p>
687
  </div>', 'email-subscribers');
688
  }
689
+ $upsell_message .= __('</div><br>Avoid manual actions and make your workflow quick, simple and effortless by integrating popular WordPress plugins with Email Subscribers PRO.', 'email-subscribers');
690
  $upsell_info = array(
691
  'upgrade_title' => __('Unlock plugin integrations with PRO', 'email-subscribers' ),
692
  'pricing_url' => $pricing_url,
730
 
731
  $pricing_url = ES_Common::get_utm_tracking_url( $utm_args );
732
  $upsell_info = array(
733
+ 'upgrade_title' => __('Protect your subscription list now with PRO', 'email-subscribers'),
734
  'pricing_url' => $pricing_url,
735
+ 'upsell_message' => __('Get a gatekeeper like <b class="font-medium text-teal-800">Captcha</b> and prevent bot signups from your subscription form.', 'email-subscribers'),
736
  'cta_html' => false,
737
  );
738
  ?>
785
  <div class="flex-shrink-0 h-5 w-5 relative flex justify-center">
786
  <span class="block h-1.5 w-1.5 mt-2.5 bg-gray-300 rounded-full group-hover:bg-gray-400 group-focus:bg-gray-400 transition ease-in-out duration-150"></span>
787
  </div>
788
+ <p class="text-sm leading-5 py-0.5 text-gray-500 group-hover:text-gray-900 group-focus:text-gray-900 transition ease-in-out duration-150">Want to send notification emails to more than one list? You can select multiple list with <b class="font-medium text-teal-800">Email Subscribers PRO.</b></p>
789
  </div>
790
+
791
  <div class="flex items-start space-x-3 -ml-8">
792
  <div class="flex-shrink-0 h-5 w-5 relative flex justify-center">
793
  <span class="block h-1.5 w-1.5 mt-2.5 bg-gray-300 rounded-full group-hover:bg-gray-400 group-focus:bg-gray-400 transition ease-in-out duration-150"></span>
794
  </div>
795
+ <p class="text-sm leading-5 py-0.5 text-gray-500 group-hover:text-gray-900 group-focus:text-gray-900 transition ease-in-out duration-150">With post digest, improve post notification by sending one notification for multiple post, schedule it to what you feel is the best time and leave it on the plugin.
 
 
 
 
 
 
796
  </p>
797
  </div>' , 'email-subscribers'),
798
  'cta_html' => false,
878
  $upsell_info = array(
879
  'upgrade_title' => __('Reduce the possibility to land in spam with PRO', 'email-subscribers'),
880
  'pricing_url' => $pricing_url,
881
+ 'upsell_message' => __('Build your brand, track your links with the help of Link tracking, UTM tracking and schedule your next broadcast accordingly. Also prevent your emails from landing into spam by checking its spam score'),
882
  'cta_html' => false,
883
  );
884
  ?>
992
 
993
  $pricing_url = ES_Common::get_utm_tracking_url( $utm_args );
994
  $upsell_info = array(
995
+ 'upgrade_title' => __('Get campaign analytics with PRO', 'email-subscribers'),
996
  'pricing_url' => $pricing_url,
997
+ 'upsell_message' => __('Want to track some very useful statistics of your campaigns and improve your future campaign ? Upgrade to <b class="font-medium text-teal-800">Email Subscribers Pro</b> and measure the effectiveness of your campaigns. .', 'email-subscribers'),
998
  'cta_html' => true,
999
  );
1000
  ?>
1544
 
1545
  $pro_campaign_rules = array(
1546
  'List' => array(
1547
+ array(
1548
+ 'name' => esc_html__( 'is not in List [PRO]', 'email-subscribers' ),
1549
  'disabled' => true
1550
  ),
1551
  ),
1552
  'Subscriber' => array(
1553
+ array(
1554
+ 'name' => esc_html__( 'Email [PRO]', 'email-subscribers' ),
1555
  'disabled' => true
1556
  ),
1557
+ array(
1558
+ 'name' => esc_html__( 'Country [PRO]', 'email-subscribers' ),
1559
  'disabled' => true
1560
  ),
1561
  ),
1562
  'Campaign' => array(
1563
+ array(
1564
+ 'name' => esc_html__( 'has received [PRO]', 'email-subscribers' ),
1565
  'disabled' => true
1566
  ),
1567
+ array(
1568
+ 'name' => esc_html__( 'has not received [PRO]', 'email-subscribers' ),
1569
  'disabled' => true
1570
  ),
1571
+ array(
1572
+ 'name' => esc_html__( 'has received and opened [PRO]', 'email-subscribers' ),
1573
  'disabled' => true
1574
  ),
1575
+ array(
1576
+ 'name' => esc_html__( 'has received but not opened [PRO]', 'email-subscribers' ),
1577
  'disabled' => true
1578
  ),
1579
+ array(
1580
+ 'name' => esc_html__( 'has received and clicked [PRO]', 'email-subscribers' ),
1581
  'disabled' => true
1582
  ),
1583
+ array(
1584
+ 'name' => esc_html__( 'has received and not clicked [PRO]', 'email-subscribers' ),
1585
  'disabled' => true
1586
  ),
1587
  ),
1590
  $campaign_rules = array_merge_recursive( $campaign_rules, $pro_campaign_rules );
1591
  }
1592
 
1593
+ function ig_es_upsell_campaign_rules_message() {
1594
+
1595
+ if ( ES()->can_upsell_features( array( 'lite', 'starter', 'trial' ) ) ) {
1596
+ $utm_args = array(
1597
+ 'utm_medium' => 'broadcast_campaign_rules'
1598
+ );
1599
+
1600
+ $pricing_url = ES_Common::get_utm_tracking_url( $utm_args );
1601
+ $upsell_info = array(
1602
+ 'upgrade_title' => __('Send Broadcast to specific audience with PRO', 'email-subscribers'),
1603
+ 'pricing_url' => $pricing_url,
1604
+ 'upsell_message' => __('Now, you can select multiple lists and also filter your subscribers based on their country, emails and whether they have received, opened or clicked a specific campaign or not and then send Broadcast emails to them.', 'email-subscribers'),
1605
+ 'cta_html' => false,
1606
+ );
1607
+
1608
+ ?>
1609
+ <div class="block w-2/3 py-2 px-6 mt-2 ">
1610
+ <?php ES_Common::upsell_description_message_box( $upsell_info ); ?>
1611
+ </div>
1612
+ <?php
1613
+ }
1614
+ }
1615
+
1616
  return $campaign_rules;
1617
  }
lite/includes/upgrade/es-update-functions.php CHANGED
@@ -1434,3 +1434,56 @@ function ig_es_update_469_db_version() {
1434
  }
1435
 
1436
  /* --------------------- ES 4.6.9(End)--------------------------- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1434
  }
1435
 
1436
  /* --------------------- ES 4.6.9(End)--------------------------- */
1437
+
1438
+ /* --------------------- ES 4.6.13(Start)--------------------------- */
1439
+
1440
+ /**
1441
+ * Migrate sequence list settings into campaign rules
1442
+ *
1443
+ * @since 4.6.13
1444
+ */
1445
+ function ig_es_migrate_4613_sequence_list_settings_into_campaign_rules() {
1446
+
1447
+ $args = array(
1448
+ 'include_types' => array(
1449
+ 'sequence_message'
1450
+ ),
1451
+ );
1452
+
1453
+ $sequence_campaigns = ES()->campaigns_db->get_all_campaigns( $args );
1454
+ if ( ! empty( $sequence_campaigns ) ) {
1455
+ foreach ( $sequence_campaigns as $campaign ) {
1456
+ $campaign_id = $campaign['id'];
1457
+ $list_ids = $campaign['list_ids'];
1458
+ if ( ! empty( $campaign_id ) && ! empty( $list_ids ) ) {
1459
+ $list_ids = explode( ',', $list_ids );
1460
+ $campaign_meta = ! empty( $campaign['meta'] ) ? maybe_unserialize( $campaign['meta'] ) : array();
1461
+ if ( empty( $campaign_meta['list_conditions'] ) ) {
1462
+ $list_conditions = array();
1463
+ $list_conditions_data = array(
1464
+ 'field' => '_lists__in',
1465
+ 'operator' => 'is',
1466
+ 'value' => array(),
1467
+ );
1468
+ foreach ( $list_ids as $index => $list_id ) {
1469
+ $list_conditions_data['value'][] = $list_id;
1470
+ }
1471
+ $list_conditions[][] = $list_conditions_data;
1472
+ $campaign_meta['list_conditions'] = $list_conditions;
1473
+ ES()->campaigns_db->update_campaign_meta( $campaign_id, $campaign_meta );
1474
+ }
1475
+ }
1476
+ }
1477
+ }
1478
+ }
1479
+
1480
+ /**
1481
+ * Update DB version
1482
+ *
1483
+ * @since 4.6.13
1484
+ */
1485
+ function ig_es_update_4613_db_version() {
1486
+ ES_Install::update_db_version( '4.6.13' );
1487
+ }
1488
+
1489
+ /* --------------------- ES 4.6.13(End)--------------------------- */
lite/includes/workflows/actions/class-es-action-add-to-list.php CHANGED
@@ -67,8 +67,11 @@ class ES_Action_Add_To_List extends ES_Workflow_Action {
67
  if ( ! $data_type || ! $data_type->validate( $data_item ) ) {
68
  continue;
69
  }
70
- if ( is_callable( array( $data_item, 'get_data' ) ) ) {
 
71
  $data = $data_type->get_data( $data_item );
 
 
72
  $this->add_contact( $list_id, $data );
73
  }
74
 
67
  if ( ! $data_type || ! $data_type->validate( $data_item ) ) {
68
  continue;
69
  }
70
+ $data = array();
71
+ if ( is_callable( array( $data_type, 'get_data' ) ) ) {
72
  $data = $data_type->get_data( $data_item );
73
+ }
74
+ if ( ! empty( $data['email'] ) ) {
75
  $this->add_contact( $list_id, $data );
76
  }
77
 
lite/includes/workflows/actions/class-es-action-delete-contact.php CHANGED
@@ -47,7 +47,11 @@ class ES_Action_Delete_Contact extends ES_Workflow_Action {
47
  continue;
48
  }
49
 
50
- $data = $data_type->get_data( $data_item );
 
 
 
 
51
  $email = ! empty( $data['email'] ) ? $data['email'] : '';
52
 
53
  if ( ! empty( $email ) ) {
47
  continue;
48
  }
49
 
50
+ $data = array();
51
+ if ( is_callable( array( $data_type, 'get_data' ) ) ) {
52
+ $data = $data_type->get_data( $data_item );
53
+ }
54
+
55
  $email = ! empty( $data['email'] ) ? $data['email'] : '';
56
 
57
  if ( ! empty( $email ) ) {
lite/includes/workflows/actions/class-es-action-update-contact.php CHANGED
@@ -45,7 +45,10 @@ class ES_Action_Update_Contact extends ES_Workflow_Action {
45
  continue;
46
  }
47
 
48
- $data = $data_type->get_data( $data_item );
 
 
 
49
 
50
  $user_id = ! empty( $data['wp_user_id'] ) ? $data['wp_user_id'] : 0;
51
 
45
  continue;
46
  }
47
 
48
+ $data = array();
49
+ if ( is_callable( array( $data_type, 'get_data' ) ) ) {
50
+ $data = $data_type->get_data( $data_item );
51
+ }
52
 
53
  $user_id = ! empty( $data['wp_user_id'] ) ? $data['wp_user_id'] : 0;
54
 
lite/includes/workflows/admin/class-es-workflow-admin-ajax.php CHANGED
@@ -47,7 +47,7 @@ class ES_Workflow_Admin_Ajax {
47
  */
48
  public static function fill_trigger_fields() {
49
 
50
- check_ajax_referer( 'ig-es-workflow-nonce', 'security' );
51
 
52
  $trigger_name = ig_es_get_request_data( 'trigger_name' );
53
  $workflow_id = ig_es_get_request_data( 'workflow_id' );
@@ -88,7 +88,7 @@ class ES_Workflow_Admin_Ajax {
88
  */
89
  public static function fill_action_fields() {
90
 
91
- check_ajax_referer( 'ig-es-workflow-nonce', 'security' );
92
 
93
  $action_name = ig_es_get_request_data( 'action_name' );
94
  $action_number = ig_es_get_request_data( 'action_number' );
@@ -127,7 +127,7 @@ class ES_Workflow_Admin_Ajax {
127
  */
128
  public static function toggle_workflow_status() {
129
 
130
- check_ajax_referer( 'ig-es-workflow-nonce', 'security' );
131
 
132
  $workflow = ES_Workflow_Factory::get( ig_es_get_request_data( 'workflow_id' ) );
133
  $new_state = ig_es_get_request_data( 'new_state' );
@@ -145,9 +145,14 @@ class ES_Workflow_Admin_Ajax {
145
  }
146
  }
147
 
 
 
 
 
 
148
  public static function modal_variable_info() {
149
 
150
- check_ajax_referer( 'ig-es-workflow-nonce', 'security' );
151
 
152
  $variable = IG_ES_Variables::get_variable( ES_Clean::string( ig_es_get_request_data( 'variable' ) ) );
153
 
47
  */
48
  public static function fill_trigger_fields() {
49
 
50
+ check_ajax_referer( 'ig-es-admin-ajax-nonce', 'security' );
51
 
52
  $trigger_name = ig_es_get_request_data( 'trigger_name' );
53
  $workflow_id = ig_es_get_request_data( 'workflow_id' );
88
  */
89
  public static function fill_action_fields() {
90
 
91
+ check_ajax_referer( 'ig-es-admin-ajax-nonce', 'security' );
92
 
93
  $action_name = ig_es_get_request_data( 'action_name' );
94
  $action_number = ig_es_get_request_data( 'action_number' );
127
  */
128
  public static function toggle_workflow_status() {
129
 
130
+ check_ajax_referer( 'ig-es-admin-ajax-nonce', 'security' );
131
 
132
  $workflow = ES_Workflow_Factory::get( ig_es_get_request_data( 'workflow_id' ) );
133
  $new_state = ig_es_get_request_data( 'new_state' );
145
  }
146
  }
147
 
148
+ /**
149
+ * Show vairable info modal
150
+ *
151
+ * @since 4.6.9
152
+ */
153
  public static function modal_variable_info() {
154
 
155
+ check_ajax_referer( 'ig-es-admin-ajax-nonce', 'security' );
156
 
157
  $variable = IG_ES_Variables::get_variable( ES_Clean::string( ig_es_get_request_data( 'variable' ) ) );
158
 
lite/includes/workflows/admin/views/meta-box-trigger.php CHANGED
@@ -46,6 +46,17 @@ if ( ! ES()->is_pro() ) {
46
  'Order' => array(
47
  'ig_es_wc_order_refunded' => __( 'WooCommerce Order Refunded', 'email-subscribers' ),
48
  ),
 
 
 
 
 
 
 
 
 
 
 
49
  );
50
  $trigger_list = array_merge_recursive( $trigger_list, $pro_trigger_list );
51
  }
46
  'Order' => array(
47
  'ig_es_wc_order_refunded' => __( 'WooCommerce Order Refunded', 'email-subscribers' ),
48
  ),
49
+ 'Wishlists' => array(
50
+ 'ig_es_yith_wc_wishlist' => __( 'Wishlist Item On Sale (YITH Wishlists)', 'email-subscribers' ),
51
+ ),
52
+ 'Carts' => array(
53
+ 'ig_es_wc_cart_abandoned' => __( 'Cart Abandoned', 'email-subscribers' ),
54
+ 'ig_es_wc_cart_abandoned_registered_users' => __( 'Cart Abandoned - Registered Users Only', 'email-subscribers' ),
55
+ 'ig_es_wc_cart_abandoned_guests_users' => __( 'Cart Abandoned - Guests Only', 'email-subscribers' ),
56
+ ),
57
+ 'User' => array(
58
+ 'ig_es_user_role_changed' => __( 'User Role Changed', 'email-subscribers' ),
59
+ ),
60
  );
61
  $trigger_list = array_merge_recursive( $trigger_list, $pro_trigger_list );
62
  }
lite/languages/email-subscribers.pot CHANGED
@@ -2,14 +2,14 @@
2
  # This file is distributed under the same license as the Email Subscribers & Newsletters plugin.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Email Subscribers & Newsletters 4.6.12.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/email-subscribers\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "POT-Creation-Date: 2021-03-05T13:43:32+05:30\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: email-subscribers\n"
@@ -71,120 +71,128 @@ msgstr ""
71
  msgid "Connect to Icegram"
72
  msgstr ""
73
 
74
- #: lite/admin/class-email-subscribers-admin.php:163
75
  msgid "An error has occured. Please try again later."
76
  msgstr ""
77
 
78
- #: lite/admin/class-email-subscribers-admin.php:164
79
  msgid "Broadcast saved as draft successfully."
80
  msgstr ""
81
 
82
- #: lite/admin/class-email-subscribers-admin.php:165
83
  msgid "An error has occured while saving the broadcast. Please try again later."
84
  msgstr ""
85
 
86
- #: lite/admin/class-email-subscribers-admin.php:166
87
  msgid "Please add a broadcast subject before saving."
88
  msgstr ""
89
 
90
- #: lite/admin/class-email-subscribers-admin.php:167
91
  #: pro/pro-class-email-subscribers.php:480
92
  msgid "Please add email body."
93
  msgstr ""
94
 
95
- #: lite/admin/class-email-subscribers-admin.php:186
 
 
 
 
96
  msgid "Please select a trigger before saving the workflow."
97
  msgstr ""
98
 
99
- #: lite/admin/class-email-subscribers-admin.php:187
100
  msgid "Please add some actions before saving the workflow."
101
  msgstr ""
102
 
103
- #: lite/admin/class-email-subscribers-admin.php:188
104
  msgid "Please select an action that this workflow should perform before saving the workflow."
105
  msgstr ""
106
 
107
- #: lite/admin/class-email-subscribers-admin.php:189
108
  msgid "Changing the trigger will remove existing actions. Do you want to proceed anyway?."
109
  msgstr ""
110
 
111
- #: lite/admin/class-email-subscribers-admin.php:190
112
  msgid "Copied!"
113
  msgstr ""
114
 
115
- #: lite/admin/class-email-subscribers-admin.php:212
 
 
 
 
116
  msgid "Please select the status for the importing contacts!"
117
  msgstr ""
118
 
119
- #: lite/admin/class-email-subscribers-admin.php:213
120
  msgid "Please select the email address column!"
121
  msgstr ""
122
 
123
- #: lite/admin/class-email-subscribers-admin.php:214
124
  msgid "Preparing Data"
125
  msgstr ""
126
 
127
  #. translators: %s: Upload progress
128
- #: lite/admin/class-email-subscribers-admin.php:216
129
  msgid "Uploading...%s"
130
  msgstr ""
131
 
132
  #. translators: %s: Import progress
133
- #: lite/admin/class-email-subscribers-admin.php:218
134
  msgid "Importing contacts...%s"
135
  msgstr ""
136
 
137
  #. translators: %s: Import failed svg icon
138
- #: lite/admin/class-email-subscribers-admin.php:220
139
  msgid "Import failed! %s"
140
  msgstr ""
141
 
142
- #: lite/admin/class-email-subscribers-admin.php:221
143
  msgid "Please do not close this window until it completes..."
144
  msgstr ""
145
 
146
- #: lite/admin/class-email-subscribers-admin.php:222
147
  msgid "Preparing Import..."
148
  msgstr ""
149
 
150
  #. translators: 1. Imported contacts count 2. Total contacts count 3. Failed to import count 4. Memory usage
151
- #: lite/admin/class-email-subscribers-admin.php:224
152
  msgid "Currently %1$s of %2$s imported with %3$s errors. %4$s memory usage"
153
  msgstr ""
154
 
155
  #. translators: %s: Time left in minutes
156
- #: lite/admin/class-email-subscribers-admin.php:226
157
  msgid "Estimate time left: %s minutes"
158
  msgstr ""
159
 
160
  #. translators: %s: Next attempt delaly time
161
- #: lite/admin/class-email-subscribers-admin.php:228
162
  msgid "Continues in %s seconds"
163
  msgstr ""
164
 
165
- #: lite/admin/class-email-subscribers-admin.php:229
166
  msgid "There was a problem during importing contacts. Please check the error logs for more information!"
167
  msgstr ""
168
 
169
- #: lite/admin/class-email-subscribers-admin.php:230
170
  msgid "Do you really like to import these contacts?"
171
  msgstr ""
172
 
173
  #. translators: %s: Process complete svg icon
174
- #: lite/admin/class-email-subscribers-admin.php:232
175
  msgid "Import complete! %s"
176
  msgstr ""
177
 
178
- #: lite/admin/class-email-subscribers-admin.php:233
179
  msgid "You are currently importing subscribers! If you leave the page all pending subscribers don't get imported!"
180
  msgstr ""
181
 
182
- #: lite/admin/class-email-subscribers-admin.php:283
183
  #: lite/admin/partials/dashboard.php:57
184
  msgid "Dashboard"
185
  msgstr ""
186
 
187
- #: lite/admin/class-email-subscribers-admin.php:288
188
  #: lite/admin/partials/dashboard.php:64
189
  #: lite/includes/classes/class-es-contacts-table.php:219
190
  #: lite/includes/pro-features.php:105
@@ -192,14 +200,14 @@ msgstr ""
192
  msgid "Audience"
193
  msgstr ""
194
 
195
- #: lite/admin/class-email-subscribers-admin.php:292
196
  #: lite/includes/classes/class-es-forms-table.php:448
197
  #: lite/includes/classes/class-es-lists-table.php:34
198
  #: lite/includes/classes/class-es-lists-table.php:88
199
  msgid "Lists"
200
  msgstr ""
201
 
202
- #: lite/admin/class-email-subscribers-admin.php:298
203
  #: lite/includes/classes/class-es-form-widget.php:70
204
  #: lite/includes/classes/class-es-forms-table.php:39
205
  #: lite/includes/classes/class-es-forms-table.php:40
@@ -209,7 +217,7 @@ msgstr ""
209
  msgid "Forms"
210
  msgstr ""
211
 
212
- #: lite/admin/class-email-subscribers-admin.php:304
213
  #: lite/includes/classes/class-es-campaigns-table.php:109
214
  #: lite/includes/classes/class-es-newsletters.php:245
215
  #: lite/includes/classes/class-es-newsletters.php:251
@@ -219,11 +227,11 @@ msgstr ""
219
  msgid "Campaigns"
220
  msgstr ""
221
 
222
- #: lite/admin/class-email-subscribers-admin.php:308
223
  msgid "Post Notifications"
224
  msgstr ""
225
 
226
- #: lite/admin/class-email-subscribers-admin.php:310
227
  #: lite/includes/classes/class-es-campaigns-table.php:356
228
  #: lite/includes/classes/class-es-newsletters.php:260
229
  #: lite/includes/classes/class-es-reports-table.php:149
@@ -235,13 +243,13 @@ msgstr ""
235
  msgid "Broadcast"
236
  msgstr ""
237
 
238
- #: lite/admin/class-email-subscribers-admin.php:311
239
  #: lite/includes/classes/class-es-newsletters.php:419
240
  #: lite/includes/classes/class-es-reports-table.php:472
241
  msgid "Template Preview"
242
  msgstr ""
243
 
244
- #: lite/admin/class-email-subscribers-admin.php:318
245
  #: lite/includes/pro-features.php:110
246
  #: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:222
247
  #: lite/includes/workflows/class-es-workflows-table.php:53
@@ -250,7 +258,7 @@ msgstr ""
250
  msgid "Workflows"
251
  msgstr ""
252
 
253
- #: lite/admin/class-email-subscribers-admin.php:327
254
  #: lite/admin/partials/dashboard.php:195
255
  #: lite/includes/classes/class-es-campaign-report.php:17
256
  #: lite/includes/classes/class-es-reports-table.php:17
@@ -264,268 +272,255 @@ msgstr ""
264
  msgid "Reports"
265
  msgstr ""
266
 
267
- #: lite/admin/class-email-subscribers-admin.php:331
268
  #: lite/admin/partials/dashboard.php:203
269
  #: lite/includes/classes/class-es-admin-settings.php:119
270
  msgid "Settings"
271
  msgstr ""
272
 
273
- #: lite/admin/class-email-subscribers-admin.php:336
274
  msgid "Go To Icegram"
275
  msgstr ""
276
 
277
  #. translators: 1. WordPress URL 2. Email Subscribers version 3. Icegram site URL
278
- #: lite/admin/class-email-subscribers-admin.php:878
279
  msgid "<span id=\"footer-thankyou\">Thank you for creating with <a href=\"%1$s\" target=\"_blank\">WordPress</a> | Email Subscribers <b>%2$s</b>. Developed by team <a href=\"%3$s\" target=\"_blank\">Icegram</a></span>"
280
  msgstr ""
281
 
282
- #: lite/admin/class-email-subscribers-admin.php:906
283
  msgid "Something went wrong"
284
  msgstr ""
285
 
286
- #: lite/admin/class-ig-es-campaign-rules.php:106
287
- msgid "next"
288
- msgstr ""
289
-
290
- #: lite/admin/class-ig-es-campaign-rules.php:107
291
- msgid "prev"
292
- msgstr ""
293
-
294
- #: lite/admin/class-ig-es-campaign-rules.php:111
295
- msgid "Do you really like to remove all conditions?"
296
- msgstr ""
297
-
298
- #: lite/admin/class-ig-es-campaign-rules.php:186
299
  msgid "Recipients"
300
  msgstr ""
301
 
302
- #: lite/admin/class-ig-es-campaign-rules.php:196
303
  msgid "Add recipients"
304
  msgstr ""
305
 
306
- #: lite/admin/class-ig-es-campaign-rules.php:199
307
- #: lite/admin/class-ig-es-campaign-rules.php:273
308
- #: lite/admin/class-ig-es-campaign-rules.php:275
309
- #: lite/admin/class-ig-es-campaign-rules.php:446
310
- #: lite/admin/class-ig-es-campaign-rules.php:531
311
- #: lite/admin/class-ig-es-campaign-rules.php:536
312
- #: lite/admin/class-ig-es-campaign-rules.php:542
313
- #: lite/admin/class-ig-es-campaign-rules.php:576
314
  msgid "or"
315
  msgstr ""
316
 
317
- #: lite/admin/class-ig-es-campaign-rules.php:201
318
  msgid "remove all"
319
  msgstr ""
320
 
321
- #: lite/admin/class-ig-es-campaign-rules.php:221
322
  msgid "Campaign Rules"
323
  msgstr ""
324
 
325
- #: lite/admin/class-ig-es-campaign-rules.php:226
326
  msgid "Save Rules"
327
  msgstr ""
328
 
329
- #: lite/admin/class-ig-es-campaign-rules.php:228
330
  msgid "Close panel"
331
  msgstr ""
332
 
333
- #: lite/admin/class-ig-es-campaign-rules.php:242
334
  msgid "Total recipients"
335
  msgstr ""
336
 
337
- #: lite/admin/class-ig-es-campaign-rules.php:264
338
- #: lite/admin/class-ig-es-campaign-rules.php:435
339
- #: lite/admin/class-ig-es-campaign-rules.php:573
340
  msgid "and"
341
  msgstr ""
342
 
343
- #: lite/admin/class-ig-es-campaign-rules.php:273
344
- #: lite/admin/class-ig-es-campaign-rules.php:400
345
  msgid "Add Condition"
346
  msgstr ""
347
 
348
- #: lite/admin/class-ig-es-campaign-rules.php:276
349
  msgid "remove condition"
350
  msgstr ""
351
 
352
- #: lite/admin/class-ig-es-campaign-rules.php:360
353
- #: lite/admin/class-ig-es-campaign-rules.php:734
354
  msgid "Any campaign"
355
  msgstr ""
356
 
357
- #: lite/admin/class-ig-es-campaign-rules.php:364
358
- #: lite/admin/class-ig-es-campaign-rules.php:384
359
  msgid "no title"
360
  msgstr ""
361
 
362
- #: lite/admin/class-ig-es-campaign-rules.php:370
363
- #: lite/admin/class-ig-es-campaign-rules.php:388
364
- msgid "No campaigns available"
365
  msgstr ""
366
 
367
- #: lite/admin/class-ig-es-campaign-rules.php:379
368
- #: lite/admin/class-ig-es-campaign-rules.php:760
369
- msgid "Any list"
370
  msgstr ""
371
 
372
- #: lite/admin/class-ig-es-campaign-rules.php:521
373
  msgctxt "opening curly double quote"
374
  msgid "&#8220;"
375
  msgstr ""
376
 
377
- #: lite/admin/class-ig-es-campaign-rules.php:522
378
  msgctxt "closing curly double quote"
379
  msgid "&#8221;"
380
  msgstr ""
381
 
382
- #: lite/admin/class-ig-es-campaign-rules.php:594
383
  msgid "is in List"
384
  msgstr ""
385
 
386
- #: lite/admin/class-ig-es-campaign-rules.php:611
387
  #: lite/includes/classes/class-es-admin-settings.php:199
388
  #: lite/includes/classes/class-es-campaign-report.php:179
389
  #: lite/includes/classes/class-es-contacts-table.php:764
390
  #: lite/includes/classes/class-es-contacts-table.php:1026
391
  #: lite/includes/classes/class-es-export-subscribers.php:339
392
  #: lite/includes/classes/class-es-forms-table.php:382
393
- #: lite/includes/classes/class-es-import-subscribers.php:401
394
- #: lite/includes/classes/class-es-import-subscribers.php:538
395
- #: lite/includes/classes/class-es-import-subscribers.php:861
396
  #: lite/includes/pro-features.php:857
397
  #: lite/includes/pro-features.php:1388
398
  #: lite/includes/workflows/actions/abstracts/class-ig-es-action-send-email-abstract.php:29
399
  #: lite/public/partials/class-es-shortcode.php:151
400
  #: pro/classes/class-es-pro-campaign-rules.php:35
401
- #: pro/pro-class-email-subscribers.php:834
402
  #: pro/workflows/actions/class-es-action-send-email.php:29
403
  msgid "Email"
404
  msgstr ""
405
 
406
- #: lite/admin/class-ig-es-campaign-rules.php:612
407
  #: lite/includes/pro-features.php:1137
408
  #: lite/includes/pro-features.php:1387
409
  #: pro/classes/class-es-pro-campaign-rules.php:38
410
- #: pro/classes/class-es-pro-reports-data.php:411
411
  msgid "Country"
412
  msgstr ""
413
 
414
- #: lite/admin/class-ig-es-campaign-rules.php:625
415
  #: pro/classes/class-es-pro-campaign-rules.php:43
416
  msgid "has received"
417
  msgstr ""
418
 
419
- #: lite/admin/class-ig-es-campaign-rules.php:626
420
  #: pro/classes/class-es-pro-campaign-rules.php:46
421
  msgid "has not received"
422
  msgstr ""
423
 
424
- #: lite/admin/class-ig-es-campaign-rules.php:627
425
  #: pro/classes/class-es-pro-campaign-rules.php:49
426
  msgid "has received and opened"
427
  msgstr ""
428
 
429
- #: lite/admin/class-ig-es-campaign-rules.php:628
430
  #: pro/classes/class-es-pro-campaign-rules.php:52
431
  msgid "has received but not opened"
432
  msgstr ""
433
 
434
- #: lite/admin/class-ig-es-campaign-rules.php:629
435
  #: pro/classes/class-es-pro-campaign-rules.php:55
436
  msgid "has received and clicked"
437
  msgstr ""
438
 
439
- #: lite/admin/class-ig-es-campaign-rules.php:630
440
  #: pro/classes/class-es-pro-campaign-rules.php:58
441
  msgid "has received and not clicked"
442
  msgstr ""
443
 
444
- #: lite/admin/class-ig-es-campaign-rules.php:642
445
  msgid "Any of the Last 5 Campaigns"
446
  msgstr ""
447
 
448
- #: lite/admin/class-ig-es-campaign-rules.php:643
449
  msgid "Any Campaigns within the last 7 days"
450
  msgstr ""
451
 
452
- #: lite/admin/class-ig-es-campaign-rules.php:644
453
  msgid "Any Campaigns within the last 1 month"
454
  msgstr ""
455
 
456
- #: lite/admin/class-ig-es-campaign-rules.php:645
457
  msgid "Any Campaigns within the last 3 months"
458
  msgstr ""
459
 
460
- #: lite/admin/class-ig-es-campaign-rules.php:646
461
  msgid "Any Campaigns within the last 6 months"
462
  msgstr ""
463
 
464
- #: lite/admin/class-ig-es-campaign-rules.php:647
465
  msgid "Any Campaigns within the last 12 months"
466
  msgstr ""
467
 
468
- #: lite/admin/class-ig-es-campaign-rules.php:659
469
- #: lite/admin/class-ig-es-campaign-rules.php:682
 
470
  #: lite/admin/class-ig-es-campaign-rules.php:699
471
- #: lite/admin/class-ig-es-campaign-rules.php:718
472
  msgid "is"
473
  msgstr ""
474
 
475
- #: lite/admin/class-ig-es-campaign-rules.php:660
476
- #: lite/admin/class-ig-es-campaign-rules.php:683
 
477
  #: lite/admin/class-ig-es-campaign-rules.php:700
478
- #: lite/admin/class-ig-es-campaign-rules.php:719
479
  msgid "is not"
480
  msgstr ""
481
 
482
- #: lite/admin/class-ig-es-campaign-rules.php:661
483
- #: lite/admin/class-ig-es-campaign-rules.php:701
484
  msgid "contains"
485
  msgstr ""
486
 
487
- #: lite/admin/class-ig-es-campaign-rules.php:662
488
- #: lite/admin/class-ig-es-campaign-rules.php:702
489
  msgid "contains not"
490
  msgstr ""
491
 
492
- #: lite/admin/class-ig-es-campaign-rules.php:663
493
- #: lite/admin/class-ig-es-campaign-rules.php:703
494
  msgid "begins with"
495
  msgstr ""
496
 
497
- #: lite/admin/class-ig-es-campaign-rules.php:664
498
- #: lite/admin/class-ig-es-campaign-rules.php:704
499
  msgid "ends with"
500
  msgstr ""
501
 
 
502
  #: lite/admin/class-ig-es-campaign-rules.php:665
503
- #: lite/admin/class-ig-es-campaign-rules.php:684
504
  msgid "is greater than"
505
  msgstr ""
506
 
 
507
  #: lite/admin/class-ig-es-campaign-rules.php:666
508
- #: lite/admin/class-ig-es-campaign-rules.php:685
509
  msgid "is smaller than"
510
  msgstr ""
511
 
 
512
  #: lite/admin/class-ig-es-campaign-rules.php:667
513
- #: lite/admin/class-ig-es-campaign-rules.php:686
514
  msgid "is greater or equal"
515
  msgstr ""
516
 
 
517
  #: lite/admin/class-ig-es-campaign-rules.php:668
518
- #: lite/admin/class-ig-es-campaign-rules.php:687
519
  msgid "is smaller or equal"
520
  msgstr ""
521
 
522
- #: lite/admin/class-ig-es-campaign-rules.php:669
523
- #: lite/admin/class-ig-es-campaign-rules.php:705
524
  msgid "match regex pattern"
525
  msgstr ""
526
 
527
- #: lite/admin/class-ig-es-campaign-rules.php:670
528
- #: lite/admin/class-ig-es-campaign-rules.php:706
529
  msgid "does not match regex pattern"
530
  msgstr ""
531
 
@@ -627,9 +622,9 @@ msgstr ""
627
  #: lite/admin/partials/dashboard.php:134
628
  #: lite/includes/pro-features.php:1140
629
  #: lite/includes/pro-features.php:1178
630
- #: pro/classes/class-es-pro-reports-data.php:414
631
- #: pro/classes/class-es-pro-reports-data.php:557
632
- #: pro/classes/class-es-pro-reports-data.php:741
633
  #: pro/partials/es-dashboard.php:88
634
  msgid "Opens"
635
  msgstr ""
@@ -644,7 +639,7 @@ msgstr ""
644
 
645
  #: lite/admin/partials/dashboard.php:158
646
  #: lite/includes/pro-features.php:1076
647
- #: pro/classes/class-es-pro-reports-data.php:377
648
  msgid "Avg Click Rate"
649
  msgstr ""
650
 
@@ -1068,7 +1063,7 @@ msgid "Unsubscribed"
1068
  msgstr ""
1069
 
1070
  #: lite/includes/class-es-common.php:212
1071
- #: lite/includes/classes/class-es-post-notifications.php:375
1072
  msgid "Select Status"
1073
  msgstr ""
1074
 
@@ -1184,7 +1179,7 @@ msgstr ""
1184
  #: lite/includes/pro-features.php:1021
1185
  #: lite/includes/pro-features.php:1068
1186
  #: pro/classes/class-es-pro-reports-data.php:284
1187
- #: pro/classes/class-es-pro-reports-data.php:369
1188
  msgid "Sent"
1189
  msgstr ""
1190
 
@@ -1209,7 +1204,7 @@ msgstr ""
1209
 
1210
  #: lite/includes/class-es-common.php:1916
1211
  #: lite/includes/classes/class-es-reports-table.php:513
1212
- #: pro/classes/class-es-pro-reports-data.php:889
1213
  msgid "All Status"
1214
  msgstr ""
1215
 
@@ -1378,7 +1373,7 @@ msgstr ""
1378
  #: lite/includes/classes/class-es-admin-settings.php:427
1379
  #: lite/includes/classes/class-es-admin-settings.php:467
1380
  #: lite/includes/classes/class-es-newsletters.php:266
1381
- #: pro/pro-class-sequences.php:412
1382
  msgid "Content"
1383
  msgstr ""
1384
 
@@ -1593,9 +1588,9 @@ msgstr ""
1593
  #: lite/includes/classes/class-es-campaign-report.php:246
1594
  #: lite/includes/classes/class-es-contacts-table.php:356
1595
  #: lite/includes/pro-features.php:1052
1596
- #: pro/classes/class-es-pro-reports-data.php:353
1597
- #: pro/classes/class-es-pro-reports-data.php:886
1598
- #: pro/pro-class-email-subscribers.php:1634
1599
  msgid "Opened"
1600
  msgstr ""
1601
 
@@ -1752,7 +1747,7 @@ msgid "Add New Contact"
1752
  msgstr ""
1753
 
1754
  #: lite/includes/classes/class-es-contacts-table.php:138
1755
- #: lite/includes/classes/class-es-import-subscribers.php:238
1756
  msgid "Import Contacts"
1757
  msgstr ""
1758
 
@@ -1818,7 +1813,7 @@ msgstr ""
1818
  #: lite/includes/classes/class-es-contacts-table.php:554
1819
  #: lite/includes/classes/class-es-export-subscribers.php:157
1820
  #: lite/includes/classes/class-es-handle-sync-wp-user.php:216
1821
- #: lite/includes/classes/class-es-import-subscribers.php:232
1822
  #: lite/includes/classes/class-es-lists-table.php:83
1823
  #: lite/includes/classes/class-es-lists-table.php:276
1824
  msgid "Audience "
@@ -1846,7 +1841,7 @@ msgstr ""
1846
 
1847
  #: lite/includes/classes/class-es-contacts-table.php:776
1848
  #: lite/includes/pro-features.php:863
1849
- #: pro/pro-class-email-subscribers.php:838
1850
  msgid "Enter email"
1851
  msgstr ""
1852
 
@@ -1861,14 +1856,14 @@ msgstr ""
1861
  #: lite/includes/classes/class-es-contacts-table.php:832
1862
  #: lite/includes/classes/class-es-forms-table.php:549
1863
  #: lite/includes/classes/class-es-lists-table.php:321
1864
- #: lite/includes/classes/class-es-post-notifications.php:432
1865
  msgid "Save Changes"
1866
  msgstr ""
1867
 
1868
  #: lite/includes/classes/class-es-contacts-table.php:839
1869
  #: lite/includes/classes/class-es-forms-table.php:553
1870
  #: lite/includes/classes/class-es-lists-table.php:325
1871
- #: lite/includes/classes/class-es-post-notifications.php:435
1872
  msgid "Cancel"
1873
  msgstr ""
1874
 
@@ -1949,8 +1944,6 @@ msgstr ""
1949
  #: lite/includes/classes/class-es-contacts-table.php:1310
1950
  #: lite/includes/classes/class-es-contacts-table.php:1331
1951
  #: lite/includes/classes/class-es-post-notifications.php:51
1952
- #: pro/pro-class-sequences.php:163
1953
- #: pro/pro-class-sequences.php:237
1954
  msgid "Please select list."
1955
  msgstr ""
1956
 
@@ -2067,16 +2060,16 @@ msgid "Export the Subscribers"
2067
  msgstr ""
2068
 
2069
  #: lite/includes/classes/class-es-export-subscribers.php:337
2070
- #: lite/includes/classes/class-es-import-subscribers.php:402
2071
- #: lite/includes/classes/class-es-import-subscribers.php:539
2072
- #: lite/includes/classes/class-es-import-subscribers.php:853
2073
  msgid "First Name"
2074
  msgstr ""
2075
 
2076
  #: lite/includes/classes/class-es-export-subscribers.php:338
2077
- #: lite/includes/classes/class-es-import-subscribers.php:403
2078
- #: lite/includes/classes/class-es-import-subscribers.php:540
2079
- #: lite/includes/classes/class-es-import-subscribers.php:858
2080
  msgid "Last Name"
2081
  msgstr ""
2082
 
@@ -2396,108 +2389,108 @@ msgstr ""
2396
  msgid "Keep growing. Get everything you need to target, measure, re-target, behavior rules, personalize, split test, segment, automate and optimize."
2397
  msgstr ""
2398
 
2399
- #: lite/includes/classes/class-es-import-subscribers.php:86
2400
  msgid "Import CSV"
2401
  msgstr ""
2402
 
2403
- #: lite/includes/classes/class-es-import-subscribers.php:103
2404
  msgid "Select CSV file"
2405
  msgstr ""
2406
 
2407
  #. translators: %s: Max upload size
2408
- #: lite/includes/classes/class-es-import-subscribers.php:108
2409
  msgid "File size should be less than %s"
2410
  msgstr ""
2411
 
2412
- #: lite/includes/classes/class-es-import-subscribers.php:112
2413
  msgid "Check CSV structure"
2414
  msgstr ""
2415
 
2416
- #: lite/includes/classes/class-es-import-subscribers.php:113
2417
  msgid "from here"
2418
  msgstr ""
2419
 
2420
- #: lite/includes/classes/class-es-import-subscribers.php:125
2421
  msgid "Drop your CSV here"
2422
  msgstr ""
2423
 
2424
- #: lite/includes/classes/class-es-import-subscribers.php:126
2425
  msgctxt "Uploader: Drop files here - or - Select Files"
2426
  msgid "or"
2427
  msgstr ""
2428
 
2429
- #: lite/includes/classes/class-es-import-subscribers.php:127
2430
  msgid "Select File"
2431
  msgstr ""
2432
 
2433
- #: lite/includes/classes/class-es-import-subscribers.php:152
2434
  msgid "Select status"
2435
  msgstr ""
2436
 
2437
- #: lite/includes/classes/class-es-import-subscribers.php:171
2438
  #: lite/includes/classes/class-es-post-notifications.php:327
2439
  msgid "Select list"
2440
  msgstr ""
2441
 
2442
- #: lite/includes/classes/class-es-import-subscribers.php:200
2443
  msgid "Import"
2444
  msgstr ""
2445
 
2446
- #: lite/includes/classes/class-es-import-subscribers.php:404
2447
  msgid "Nick Name"
2448
  msgstr ""
2449
 
2450
- #: lite/includes/classes/class-es-import-subscribers.php:405
2451
  msgid "Display Name"
2452
  msgstr ""
2453
 
2454
- #: lite/includes/classes/class-es-import-subscribers.php:541
2455
  msgid "(First Name) (Last Name)"
2456
  msgstr ""
2457
 
2458
- #: lite/includes/classes/class-es-import-subscribers.php:542
2459
  msgid "(Last Name) (First Name)"
2460
  msgstr ""
2461
 
2462
- #: lite/includes/classes/class-es-import-subscribers.php:550
2463
  msgid "Select columns for mapping"
2464
  msgstr ""
2465
 
2466
- #: lite/includes/classes/class-es-import-subscribers.php:553
2467
  msgid "Define which column represents which field"
2468
  msgstr ""
2469
 
2470
- #: lite/includes/classes/class-es-import-subscribers.php:570
2471
  msgid "Ignore column"
2472
  msgstr ""
2473
 
2474
  #. translators: %s: Hidden contacts count
2475
- #: lite/includes/classes/class-es-import-subscribers.php:609
2476
  msgid "%s contacts are hidden"
2477
  msgstr ""
2478
 
2479
- #: lite/includes/classes/class-es-import-subscribers.php:676
2480
  msgid "Email address is invalid."
2481
  msgstr ""
2482
 
2483
- #: lite/includes/classes/class-es-import-subscribers.php:677
2484
  msgid "Email address is empty."
2485
  msgstr ""
2486
 
2487
- #: lite/includes/classes/class-es-import-subscribers.php:678
2488
  msgid "Duplicate email in the CSV file. Only the first record imported."
2489
  msgstr ""
2490
 
2491
  #. translators: 1. Total imported contacts 2. Total contacts
2492
- #: lite/includes/classes/class-es-import-subscribers.php:843
2493
  msgid "%1$s of %2$s contacts imported"
2494
  msgstr ""
2495
 
2496
- #: lite/includes/classes/class-es-import-subscribers.php:847
2497
  msgid "The following contacts were skipped"
2498
  msgstr ""
2499
 
2500
- #: lite/includes/classes/class-es-import-subscribers.php:862
2501
  msgid "Reason"
2502
  msgstr ""
2503
 
@@ -2806,23 +2799,23 @@ msgstr ""
2806
  msgid "Content of the selected template will be sent out as post notification."
2807
  msgstr ""
2808
 
2809
- #: lite/includes/classes/class-es-post-notifications.php:391
2810
  msgid "Select post category"
2811
  msgstr ""
2812
 
2813
- #: lite/includes/classes/class-es-post-notifications.php:392
2814
  msgid "Notification will be sent out when any post from selected categories will be published."
2815
  msgstr ""
2816
 
2817
- #: lite/includes/classes/class-es-post-notifications.php:408
2818
  msgid "Select custom post type(s)"
2819
  msgstr ""
2820
 
2821
- #: lite/includes/classes/class-es-post-notifications.php:409
2822
  msgid "(Optional) Select custom post type for which you want to send notification."
2823
  msgstr ""
2824
 
2825
- #: lite/includes/classes/class-es-post-notifications.php:432
2826
  msgid "Save Campaign"
2827
  msgstr ""
2828
 
@@ -3152,7 +3145,7 @@ msgid "User Roles"
3152
  msgstr ""
3153
 
3154
  #: lite/includes/pro-features.php:194
3155
- #: pro/pro-class-email-subscribers.php:885
3156
  msgid "Track clicks"
3157
  msgstr ""
3158
 
@@ -3208,7 +3201,7 @@ msgid "Show a captcha in subscription forms to protect from bot signups."
3208
  msgstr ""
3209
 
3210
  #: lite/includes/pro-features.php:287
3211
- #: pro/pro-class-email-subscribers.php:893
3212
  msgid "Track IP address"
3213
  msgstr ""
3214
 
@@ -3484,7 +3477,7 @@ msgid "Reduce the possibility to land in spam with PRO"
3484
  msgstr ""
3485
 
3486
  #: lite/includes/pro-features.php:890
3487
- #: pro/pro-class-email-subscribers.php:722
3488
  msgid "Link tracking"
3489
  msgstr ""
3490
 
@@ -3493,30 +3486,30 @@ msgid "Get spam score"
3493
  msgstr ""
3494
 
3495
  #: lite/includes/pro-features.php:939
3496
- #: pro/pro-class-email-subscribers.php:766
3497
  msgid "Send options"
3498
  msgstr ""
3499
 
3500
  #: lite/includes/pro-features.php:942
3501
- #: pro/pro-class-email-subscribers.php:769
3502
  msgid "Schedule for later"
3503
  msgstr ""
3504
 
3505
  #: lite/includes/pro-features.php:949
3506
  #: lite/includes/workflows/admin/views/meta-box-timing.php:82
3507
  #: lite/includes/workflows/fields/class-es-date.php:31
3508
- #: pro/pro-class-email-subscribers.php:782
3509
  msgid "Date"
3510
  msgstr ""
3511
 
3512
  #: lite/includes/pro-features.php:958
3513
  #: lite/includes/workflows/fields/class-es-time.php:64
3514
- #: pro/pro-class-email-subscribers.php:793
3515
  msgid "Time"
3516
  msgstr ""
3517
 
3518
  #: lite/includes/pro-features.php:968
3519
- #: pro/pro-class-email-subscribers.php:804
3520
  msgid "Local Time: "
3521
  msgstr ""
3522
 
@@ -3551,7 +3544,7 @@ msgid "Test, Main "
3551
  msgstr ""
3552
 
3553
  #: lite/includes/pro-features.php:1036
3554
- #: pro/classes/class-es-pro-reports-data.php:336
3555
  msgid "Date: "
3556
  msgstr ""
3557
 
@@ -3560,12 +3553,12 @@ msgid "July 1, 2020 10:00 AM"
3560
  msgstr ""
3561
 
3562
  #: lite/includes/pro-features.php:1044
3563
- #: pro/classes/class-es-pro-reports-data.php:345
3564
  msgid "Statistics"
3565
  msgstr ""
3566
 
3567
  #: lite/includes/pro-features.php:1060
3568
- #: pro/classes/class-es-pro-reports-data.php:361
3569
  msgid "Avg Open Rate"
3570
  msgstr ""
3571
 
@@ -3583,8 +3576,8 @@ msgstr ""
3583
 
3584
  #: lite/includes/pro-features.php:1175
3585
  #: lite/includes/pro-features.php:1390
3586
- #: pro/classes/class-es-pro-reports-data.php:554
3587
- #: pro/classes/class-es-pro-reports-data.php:933
3588
  msgid "Mail Client"
3589
  msgstr ""
3590
 
@@ -3605,17 +3598,17 @@ msgid "Link Activity"
3605
  msgstr ""
3606
 
3607
  #: lite/includes/pro-features.php:1240
3608
- #: pro/classes/class-es-pro-reports-data.php:649
3609
  msgid "Link (URL)"
3610
  msgstr ""
3611
 
3612
  #: lite/includes/pro-features.php:1242
3613
- #: pro/classes/class-es-pro-reports-data.php:651
3614
  msgid "Unique Clicks"
3615
  msgstr ""
3616
 
3617
  #: lite/includes/pro-features.php:1244
3618
- #: pro/classes/class-es-pro-reports-data.php:653
3619
  msgid "Total Clicks"
3620
  msgstr ""
3621
 
@@ -3632,37 +3625,37 @@ msgid "Last 10 Open Activity"
3632
  msgstr ""
3633
 
3634
  #: lite/includes/pro-features.php:1389
3635
- #: pro/classes/class-es-pro-reports-data.php:932
3636
  msgid "Device"
3637
  msgstr ""
3638
 
3639
  #: lite/includes/pro-features.php:1391
3640
- #: pro/classes/class-es-pro-reports-data.php:934
3641
  msgid "OS"
3642
  msgstr ""
3643
 
3644
  #: lite/includes/pro-features.php:1418
3645
- #: pro/classes/class-es-pro-reports-data.php:956
3646
  msgid "Desktop"
3647
  msgstr ""
3648
 
3649
  #: lite/includes/pro-features.php:1427
3650
- #: pro/classes/class-es-pro-reports-data.php:964
3651
  msgid "Tablet"
3652
  msgstr ""
3653
 
3654
  #: lite/includes/pro-features.php:1436
3655
- #: pro/classes/class-es-pro-reports-data.php:972
3656
  msgid "Mobile"
3657
  msgstr ""
3658
 
3659
  #: lite/includes/pro-features.php:1495
3660
- #: pro/pro-class-email-subscribers.php:1466
3661
  msgid "Add Attachments"
3662
  msgstr ""
3663
 
3664
  #: lite/includes/pro-features.php:1525
3665
- #: pro/pro-class-email-subscribers.php:1547
3666
  msgid "Import existing WordPress users"
3667
  msgstr ""
3668
 
@@ -3743,7 +3736,7 @@ msgstr ""
3743
  msgid "Update Contact"
3744
  msgstr ""
3745
 
3746
- #: lite/includes/workflows/admin/class-es-workflow-admin-ajax.php:161
3747
  msgid "Variable not found."
3748
  msgstr ""
3749
 
@@ -4176,7 +4169,7 @@ msgid "Total Emails In Queue"
4176
  msgstr ""
4177
 
4178
  #: lite/public/partials/cron-message.php:43
4179
- #: pro/pro-class-email-subscribers.php:812
4180
  msgid "Send Now"
4181
  msgstr ""
4182
 
@@ -4221,68 +4214,68 @@ msgstr ""
4221
  msgid "Recipient(s): "
4222
  msgstr ""
4223
 
4224
- #: pro/classes/class-es-pro-reports-data.php:397
4225
  msgid "Open and Click activity"
4226
  msgstr ""
4227
 
4228
- #: pro/classes/class-es-pro-reports-data.php:405
4229
  msgid "Country info"
4230
  msgstr ""
4231
 
4232
- #: pro/classes/class-es-pro-reports-data.php:510
4233
  msgid "Others"
4234
  msgstr ""
4235
 
4236
- #: pro/classes/class-es-pro-reports-data.php:538
4237
  msgid "No country data found."
4238
  msgstr ""
4239
 
4240
- #: pro/classes/class-es-pro-reports-data.php:549
4241
  msgid "Mail Client info"
4242
  msgstr ""
4243
 
4244
- #: pro/classes/class-es-pro-reports-data.php:585
4245
  msgid "No mail client data found."
4246
  msgstr ""
4247
 
4248
- #: pro/classes/class-es-pro-reports-data.php:599
4249
  msgid "Device info"
4250
  msgstr ""
4251
 
4252
- #: pro/classes/class-es-pro-reports-data.php:602
4253
  msgid "No device data found"
4254
  msgstr ""
4255
 
4256
- #: pro/classes/class-es-pro-reports-data.php:606
4257
  msgid "Browser info"
4258
  msgstr ""
4259
 
4260
- #: pro/classes/class-es-pro-reports-data.php:609
4261
  msgid "No browser data found"
4262
  msgstr ""
4263
 
4264
- #: pro/classes/class-es-pro-reports-data.php:613
4265
  msgid "OS info"
4266
  msgstr ""
4267
 
4268
- #: pro/classes/class-es-pro-reports-data.php:616
4269
  msgid "No OS data found"
4270
  msgstr ""
4271
 
4272
- #: pro/classes/class-es-pro-reports-data.php:642
4273
  msgid "Link activity"
4274
  msgstr ""
4275
 
4276
- #: pro/classes/class-es-pro-reports-data.php:746
4277
  #: pro/partials/es-dashboard.php:100
4278
  msgid "Clicks"
4279
  msgstr ""
4280
 
4281
- #: pro/classes/class-es-pro-reports-data.php:875
4282
  msgid "Filter Report"
4283
  msgstr ""
4284
 
4285
- #: pro/classes/class-es-pro-reports-data.php:887
4286
  msgid "Not Opened"
4287
  msgstr ""
4288
 
@@ -4450,82 +4443,86 @@ msgstr ""
4450
  msgid "Please attach a file having size lower than %s."
4451
  msgstr ""
4452
 
4453
- #: pro/pro-class-email-subscribers.php:613
 
 
 
 
4454
  msgid "Clean My List"
4455
  msgstr ""
4456
 
4457
- #: pro/pro-class-email-subscribers.php:614
4458
  msgid "List cleanup is in progress..."
4459
  msgstr ""
4460
 
4461
- #: pro/pro-class-email-subscribers.php:615
4462
  msgid "List cleanup completed successfully."
4463
  msgstr ""
4464
 
4465
- #: pro/pro-class-email-subscribers.php:632
4466
  msgid "Email status"
4467
  msgstr ""
4468
 
4469
- #: pro/pro-class-email-subscribers.php:633
4470
  msgid "Last opened at"
4471
  msgstr ""
4472
 
4473
- #: pro/pro-class-email-subscribers.php:636
4474
  msgid "IP"
4475
  msgstr ""
4476
 
4477
- #: pro/pro-class-email-subscribers.php:850
4478
  msgid "Select page"
4479
  msgstr ""
4480
 
4481
- #: pro/pro-class-email-subscribers.php:863
4482
  msgid "Subscriber will be redirected to selected page once they click on unsubscribe link from the email."
4483
  msgstr ""
4484
 
4485
- #: pro/pro-class-email-subscribers.php:876
4486
  msgid "Subscriber will be redirected to selected page once they click on email confirmation link from the double opt-in (confirmation) email."
4487
  msgstr ""
4488
 
4489
- #: pro/pro-class-email-subscribers.php:915
4490
  msgid "Access Key ID"
4491
  msgstr ""
4492
 
4493
- #: pro/pro-class-email-subscribers.php:926
4494
  msgid "Secret Access Key"
4495
  msgstr ""
4496
 
4497
- #: pro/pro-class-email-subscribers.php:938
4498
  msgid "Closest Region"
4499
  msgstr ""
4500
 
4501
- #: pro/pro-class-email-subscribers.php:939
4502
  msgid ""
4503
  "Please select the Amazon SES API region which is the closest to where your website is hosted.\n"
4504
  "\t\t\t\t\tThis can help to decrease network latency between your site and Amazon SES, which will speed up email sending."
4505
  msgstr ""
4506
 
4507
- #: pro/pro-class-email-subscribers.php:1000
4508
  msgid "Clicked"
4509
  msgstr ""
4510
 
4511
  #. translators: 1: Page 2: Duplicate action 3: Campaign id 4: Wp nonce
4512
- #: pro/pro-class-email-subscribers.php:1265
4513
  msgid "<a href=\"?page=%1$s&action=%2$s&list=%3$s&_wpnonce=%4$s\">Duplicate</a>"
4514
  msgstr ""
4515
 
4516
- #: pro/pro-class-email-subscribers.php:1286
4517
  msgid "You are not allowed to duplicate campaign."
4518
  msgstr ""
4519
 
4520
- #: pro/pro-class-email-subscribers.php:1301
4521
  msgid "Campaign duplicated !"
4522
  msgstr ""
4523
 
4524
- #: pro/pro-class-email-subscribers.php:1566
4525
  msgid "Import WordPress users with following roles"
4526
  msgstr ""
4527
 
4528
- #: pro/pro-class-email-subscribers.php:1616
4529
  msgid "Proceed"
4530
  msgstr ""
4531
 
@@ -4614,67 +4611,64 @@ msgid "Add Sequence name"
4614
  msgstr ""
4615
 
4616
  #: pro/pro-class-sequences.php:100
4617
- #: pro/pro-class-sequences.php:346
4618
  msgid "Save All"
4619
  msgstr ""
4620
 
4621
- #: pro/pro-class-sequences.php:122
4622
  msgid "+ Add Email"
4623
  msgstr ""
4624
 
4625
- #: pro/pro-class-sequences.php:170
4626
- #: pro/pro-class-sequences.php:244
4627
  msgid "Sequence should have atleast one email"
4628
  msgstr ""
4629
 
4630
- #: pro/pro-class-sequences.php:208
4631
  msgid "Sequence added successfully!"
4632
  msgstr ""
4633
 
4634
- #: pro/pro-class-sequences.php:212
4635
  msgid "Sorry, you are not allowed to add sequence."
4636
  msgstr ""
4637
 
4638
- #: pro/pro-class-sequences.php:307
4639
  msgid "Sequence updated successfully!"
4640
  msgstr ""
4641
 
4642
- #: pro/pro-class-sequences.php:311
4643
  msgid "Sorry, you are not allowed to edit sequence."
4644
  msgstr ""
4645
 
4646
- #: pro/pro-class-sequences.php:327
4647
- msgid "Recipients : "
4648
- msgstr ""
4649
-
4650
- #: pro/pro-class-sequences.php:370
4651
- #: pro/pro-class-sequences.php:450
4652
  msgid " day"
4653
  msgstr ""
4654
 
4655
- #: pro/pro-class-sequences.php:370
4656
- #: pro/pro-class-sequences.php:450
4657
  msgid " days"
4658
  msgstr ""
4659
 
4660
- #: pro/pro-class-sequences.php:375
 
4661
  msgid "Welcome"
4662
  msgstr ""
4663
 
4664
- #: pro/pro-class-sequences.php:378
4665
- #: pro/pro-class-sequences.php:381
4666
  msgid "Delete this email"
4667
  msgstr ""
4668
 
4669
- #: pro/pro-class-sequences.php:406
4670
  msgid "Email Subject"
4671
  msgstr ""
4672
 
4673
- #: pro/pro-class-sequences.php:455
4674
  msgid "When to send"
4675
  msgstr ""
4676
 
4677
- #: pro/pro-class-sequences.php:461
4678
  msgid " after subscription"
4679
  msgstr ""
4680
 
2
  # This file is distributed under the same license as the Email Subscribers & Newsletters plugin.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Email Subscribers & Newsletters 4.6.13\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/email-subscribers\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2021-03-11T14:24:41+05:30\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: email-subscribers\n"
71
  msgid "Connect to Icegram"
72
  msgstr ""
73
 
74
+ #: lite/admin/class-email-subscribers-admin.php:166
75
  msgid "An error has occured. Please try again later."
76
  msgstr ""
77
 
78
+ #: lite/admin/class-email-subscribers-admin.php:167
79
  msgid "Broadcast saved as draft successfully."
80
  msgstr ""
81
 
82
+ #: lite/admin/class-email-subscribers-admin.php:168
83
  msgid "An error has occured while saving the broadcast. Please try again later."
84
  msgstr ""
85
 
86
+ #: lite/admin/class-email-subscribers-admin.php:169
87
  msgid "Please add a broadcast subject before saving."
88
  msgstr ""
89
 
90
+ #: lite/admin/class-email-subscribers-admin.php:170
91
  #: pro/pro-class-email-subscribers.php:480
92
  msgid "Please add email body."
93
  msgstr ""
94
 
95
+ #: lite/admin/class-email-subscribers-admin.php:171
96
+ msgid "Do you really like to remove all conditions?"
97
+ msgstr ""
98
+
99
+ #: lite/admin/class-email-subscribers-admin.php:174
100
  msgid "Please select a trigger before saving the workflow."
101
  msgstr ""
102
 
103
+ #: lite/admin/class-email-subscribers-admin.php:175
104
  msgid "Please add some actions before saving the workflow."
105
  msgstr ""
106
 
107
+ #: lite/admin/class-email-subscribers-admin.php:176
108
  msgid "Please select an action that this workflow should perform before saving the workflow."
109
  msgstr ""
110
 
111
+ #: lite/admin/class-email-subscribers-admin.php:177
112
  msgid "Changing the trigger will remove existing actions. Do you want to proceed anyway?."
113
  msgstr ""
114
 
115
+ #: lite/admin/class-email-subscribers-admin.php:178
116
  msgid "Copied!"
117
  msgstr ""
118
 
119
+ #: lite/admin/class-email-subscribers-admin.php:179
120
+ msgid "Are you sure?"
121
+ msgstr ""
122
+
123
+ #: lite/admin/class-email-subscribers-admin.php:182
124
  msgid "Please select the status for the importing contacts!"
125
  msgstr ""
126
 
127
+ #: lite/admin/class-email-subscribers-admin.php:183
128
  msgid "Please select the email address column!"
129
  msgstr ""
130
 
131
+ #: lite/admin/class-email-subscribers-admin.php:184
132
  msgid "Preparing Data"
133
  msgstr ""
134
 
135
  #. translators: %s: Upload progress
136
+ #: lite/admin/class-email-subscribers-admin.php:186
137
  msgid "Uploading...%s"
138
  msgstr ""
139
 
140
  #. translators: %s: Import progress
141
+ #: lite/admin/class-email-subscribers-admin.php:188
142
  msgid "Importing contacts...%s"
143
  msgstr ""
144
 
145
  #. translators: %s: Import failed svg icon
146
+ #: lite/admin/class-email-subscribers-admin.php:190
147
  msgid "Import failed! %s"
148
  msgstr ""
149
 
150
+ #: lite/admin/class-email-subscribers-admin.php:191
151
  msgid "Please do not close this window until it completes..."
152
  msgstr ""
153
 
154
+ #: lite/admin/class-email-subscribers-admin.php:192
155
  msgid "Preparing Import..."
156
  msgstr ""
157
 
158
  #. translators: 1. Imported contacts count 2. Total contacts count 3. Failed to import count 4. Memory usage
159
+ #: lite/admin/class-email-subscribers-admin.php:194
160
  msgid "Currently %1$s of %2$s imported with %3$s errors. %4$s memory usage"
161
  msgstr ""
162
 
163
  #. translators: %s: Time left in minutes
164
+ #: lite/admin/class-email-subscribers-admin.php:196
165
  msgid "Estimate time left: %s minutes"
166
  msgstr ""
167
 
168
  #. translators: %s: Next attempt delaly time
169
+ #: lite/admin/class-email-subscribers-admin.php:198
170
  msgid "Continues in %s seconds"
171
  msgstr ""
172
 
173
+ #: lite/admin/class-email-subscribers-admin.php:199
174
  msgid "There was a problem during importing contacts. Please check the error logs for more information!"
175
  msgstr ""
176
 
177
+ #: lite/admin/class-email-subscribers-admin.php:200
178
  msgid "Do you really like to import these contacts?"
179
  msgstr ""
180
 
181
  #. translators: %s: Process complete svg icon
182
+ #: lite/admin/class-email-subscribers-admin.php:202
183
  msgid "Import complete! %s"
184
  msgstr ""
185
 
186
+ #: lite/admin/class-email-subscribers-admin.php:203
187
  msgid "You are currently importing subscribers! If you leave the page all pending subscribers don't get imported!"
188
  msgstr ""
189
 
190
+ #: lite/admin/class-email-subscribers-admin.php:281
191
  #: lite/admin/partials/dashboard.php:57
192
  msgid "Dashboard"
193
  msgstr ""
194
 
195
+ #: lite/admin/class-email-subscribers-admin.php:286
196
  #: lite/admin/partials/dashboard.php:64
197
  #: lite/includes/classes/class-es-contacts-table.php:219
198
  #: lite/includes/pro-features.php:105
200
  msgid "Audience"
201
  msgstr ""
202
 
203
+ #: lite/admin/class-email-subscribers-admin.php:290
204
  #: lite/includes/classes/class-es-forms-table.php:448
205
  #: lite/includes/classes/class-es-lists-table.php:34
206
  #: lite/includes/classes/class-es-lists-table.php:88
207
  msgid "Lists"
208
  msgstr ""
209
 
210
+ #: lite/admin/class-email-subscribers-admin.php:296
211
  #: lite/includes/classes/class-es-form-widget.php:70
212
  #: lite/includes/classes/class-es-forms-table.php:39
213
  #: lite/includes/classes/class-es-forms-table.php:40
217
  msgid "Forms"
218
  msgstr ""
219
 
220
+ #: lite/admin/class-email-subscribers-admin.php:302
221
  #: lite/includes/classes/class-es-campaigns-table.php:109
222
  #: lite/includes/classes/class-es-newsletters.php:245
223
  #: lite/includes/classes/class-es-newsletters.php:251
227
  msgid "Campaigns"
228
  msgstr ""
229
 
230
+ #: lite/admin/class-email-subscribers-admin.php:306
231
  msgid "Post Notifications"
232
  msgstr ""
233
 
234
+ #: lite/admin/class-email-subscribers-admin.php:308
235
  #: lite/includes/classes/class-es-campaigns-table.php:356
236
  #: lite/includes/classes/class-es-newsletters.php:260
237
  #: lite/includes/classes/class-es-reports-table.php:149
243
  msgid "Broadcast"
244
  msgstr ""
245
 
246
+ #: lite/admin/class-email-subscribers-admin.php:309
247
  #: lite/includes/classes/class-es-newsletters.php:419
248
  #: lite/includes/classes/class-es-reports-table.php:472
249
  msgid "Template Preview"
250
  msgstr ""
251
 
252
+ #: lite/admin/class-email-subscribers-admin.php:316
253
  #: lite/includes/pro-features.php:110
254
  #: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:222
255
  #: lite/includes/workflows/class-es-workflows-table.php:53
258
  msgid "Workflows"
259
  msgstr ""
260
 
261
+ #: lite/admin/class-email-subscribers-admin.php:325
262
  #: lite/admin/partials/dashboard.php:195
263
  #: lite/includes/classes/class-es-campaign-report.php:17
264
  #: lite/includes/classes/class-es-reports-table.php:17
272
  msgid "Reports"
273
  msgstr ""
274
 
275
+ #: lite/admin/class-email-subscribers-admin.php:329
276
  #: lite/admin/partials/dashboard.php:203
277
  #: lite/includes/classes/class-es-admin-settings.php:119
278
  msgid "Settings"
279
  msgstr ""
280
 
281
+ #: lite/admin/class-email-subscribers-admin.php:334
282
  msgid "Go To Icegram"
283
  msgstr ""
284
 
285
  #. translators: 1. WordPress URL 2. Email Subscribers version 3. Icegram site URL
286
+ #: lite/admin/class-email-subscribers-admin.php:879
287
  msgid "<span id=\"footer-thankyou\">Thank you for creating with <a href=\"%1$s\" target=\"_blank\">WordPress</a> | Email Subscribers <b>%2$s</b>. Developed by team <a href=\"%3$s\" target=\"_blank\">Icegram</a></span>"
288
  msgstr ""
289
 
290
+ #: lite/admin/class-email-subscribers-admin.php:907
291
  msgid "Something went wrong"
292
  msgstr ""
293
 
294
+ #: lite/admin/class-ig-es-campaign-rules.php:171
 
 
 
 
 
 
 
 
 
 
 
 
295
  msgid "Recipients"
296
  msgstr ""
297
 
298
+ #: lite/admin/class-ig-es-campaign-rules.php:181
299
  msgid "Add recipients"
300
  msgstr ""
301
 
302
+ #: lite/admin/class-ig-es-campaign-rules.php:184
303
+ #: lite/admin/class-ig-es-campaign-rules.php:257
304
+ #: lite/admin/class-ig-es-campaign-rules.php:259
305
+ #: lite/admin/class-ig-es-campaign-rules.php:428
306
+ #: lite/admin/class-ig-es-campaign-rules.php:512
307
+ #: lite/admin/class-ig-es-campaign-rules.php:517
308
+ #: lite/admin/class-ig-es-campaign-rules.php:523
309
+ #: lite/admin/class-ig-es-campaign-rules.php:557
310
  msgid "or"
311
  msgstr ""
312
 
313
+ #: lite/admin/class-ig-es-campaign-rules.php:186
314
  msgid "remove all"
315
  msgstr ""
316
 
317
+ #: lite/admin/class-ig-es-campaign-rules.php:206
318
  msgid "Campaign Rules"
319
  msgstr ""
320
 
321
+ #: lite/admin/class-ig-es-campaign-rules.php:211
322
  msgid "Save Rules"
323
  msgstr ""
324
 
325
+ #: lite/admin/class-ig-es-campaign-rules.php:213
326
  msgid "Close panel"
327
  msgstr ""
328
 
329
+ #: lite/admin/class-ig-es-campaign-rules.php:227
330
  msgid "Total recipients"
331
  msgstr ""
332
 
333
+ #: lite/admin/class-ig-es-campaign-rules.php:248
334
+ #: lite/admin/class-ig-es-campaign-rules.php:417
335
+ #: lite/admin/class-ig-es-campaign-rules.php:554
336
  msgid "and"
337
  msgstr ""
338
 
339
+ #: lite/admin/class-ig-es-campaign-rules.php:257
340
+ #: lite/admin/class-ig-es-campaign-rules.php:382
341
  msgid "Add Condition"
342
  msgstr ""
343
 
344
+ #: lite/admin/class-ig-es-campaign-rules.php:260
345
  msgid "remove condition"
346
  msgstr ""
347
 
348
+ #: lite/admin/class-ig-es-campaign-rules.php:342
349
+ #: lite/admin/class-ig-es-campaign-rules.php:715
350
  msgid "Any campaign"
351
  msgstr ""
352
 
353
+ #: lite/admin/class-ig-es-campaign-rules.php:348
354
+ #: lite/admin/class-ig-es-campaign-rules.php:366
355
  msgid "no title"
356
  msgstr ""
357
 
358
+ #: lite/admin/class-ig-es-campaign-rules.php:361
359
+ #: lite/admin/class-ig-es-campaign-rules.php:741
360
+ msgid "Any list"
361
  msgstr ""
362
 
363
+ #: lite/admin/class-ig-es-campaign-rules.php:370
364
+ msgid "No campaigns available"
 
365
  msgstr ""
366
 
367
+ #: lite/admin/class-ig-es-campaign-rules.php:503
368
  msgctxt "opening curly double quote"
369
  msgid "&#8220;"
370
  msgstr ""
371
 
372
+ #: lite/admin/class-ig-es-campaign-rules.php:504
373
  msgctxt "closing curly double quote"
374
  msgid "&#8221;"
375
  msgstr ""
376
 
377
+ #: lite/admin/class-ig-es-campaign-rules.php:575
378
  msgid "is in List"
379
  msgstr ""
380
 
381
+ #: lite/admin/class-ig-es-campaign-rules.php:592
382
  #: lite/includes/classes/class-es-admin-settings.php:199
383
  #: lite/includes/classes/class-es-campaign-report.php:179
384
  #: lite/includes/classes/class-es-contacts-table.php:764
385
  #: lite/includes/classes/class-es-contacts-table.php:1026
386
  #: lite/includes/classes/class-es-export-subscribers.php:339
387
  #: lite/includes/classes/class-es-forms-table.php:382
388
+ #: lite/includes/classes/class-es-import-subscribers.php:399
389
+ #: lite/includes/classes/class-es-import-subscribers.php:536
390
+ #: lite/includes/classes/class-es-import-subscribers.php:859
391
  #: lite/includes/pro-features.php:857
392
  #: lite/includes/pro-features.php:1388
393
  #: lite/includes/workflows/actions/abstracts/class-ig-es-action-send-email-abstract.php:29
394
  #: lite/public/partials/class-es-shortcode.php:151
395
  #: pro/classes/class-es-pro-campaign-rules.php:35
396
+ #: pro/pro-class-email-subscribers.php:831
397
  #: pro/workflows/actions/class-es-action-send-email.php:29
398
  msgid "Email"
399
  msgstr ""
400
 
401
+ #: lite/admin/class-ig-es-campaign-rules.php:593
402
  #: lite/includes/pro-features.php:1137
403
  #: lite/includes/pro-features.php:1387
404
  #: pro/classes/class-es-pro-campaign-rules.php:38
405
+ #: pro/classes/class-es-pro-reports-data.php:413
406
  msgid "Country"
407
  msgstr ""
408
 
409
+ #: lite/admin/class-ig-es-campaign-rules.php:606
410
  #: pro/classes/class-es-pro-campaign-rules.php:43
411
  msgid "has received"
412
  msgstr ""
413
 
414
+ #: lite/admin/class-ig-es-campaign-rules.php:607
415
  #: pro/classes/class-es-pro-campaign-rules.php:46
416
  msgid "has not received"
417
  msgstr ""
418
 
419
+ #: lite/admin/class-ig-es-campaign-rules.php:608
420
  #: pro/classes/class-es-pro-campaign-rules.php:49
421
  msgid "has received and opened"
422
  msgstr ""
423
 
424
+ #: lite/admin/class-ig-es-campaign-rules.php:609
425
  #: pro/classes/class-es-pro-campaign-rules.php:52
426
  msgid "has received but not opened"
427
  msgstr ""
428
 
429
+ #: lite/admin/class-ig-es-campaign-rules.php:610
430
  #: pro/classes/class-es-pro-campaign-rules.php:55
431
  msgid "has received and clicked"
432
  msgstr ""
433
 
434
+ #: lite/admin/class-ig-es-campaign-rules.php:611
435
  #: pro/classes/class-es-pro-campaign-rules.php:58
436
  msgid "has received and not clicked"
437
  msgstr ""
438
 
439
+ #: lite/admin/class-ig-es-campaign-rules.php:623
440
  msgid "Any of the Last 5 Campaigns"
441
  msgstr ""
442
 
443
+ #: lite/admin/class-ig-es-campaign-rules.php:624
444
  msgid "Any Campaigns within the last 7 days"
445
  msgstr ""
446
 
447
+ #: lite/admin/class-ig-es-campaign-rules.php:625
448
  msgid "Any Campaigns within the last 1 month"
449
  msgstr ""
450
 
451
+ #: lite/admin/class-ig-es-campaign-rules.php:626
452
  msgid "Any Campaigns within the last 3 months"
453
  msgstr ""
454
 
455
+ #: lite/admin/class-ig-es-campaign-rules.php:627
456
  msgid "Any Campaigns within the last 6 months"
457
  msgstr ""
458
 
459
+ #: lite/admin/class-ig-es-campaign-rules.php:628
460
  msgid "Any Campaigns within the last 12 months"
461
  msgstr ""
462
 
463
+ #: lite/admin/class-ig-es-campaign-rules.php:640
464
+ #: lite/admin/class-ig-es-campaign-rules.php:663
465
+ #: lite/admin/class-ig-es-campaign-rules.php:680
466
  #: lite/admin/class-ig-es-campaign-rules.php:699
 
467
  msgid "is"
468
  msgstr ""
469
 
470
+ #: lite/admin/class-ig-es-campaign-rules.php:641
471
+ #: lite/admin/class-ig-es-campaign-rules.php:664
472
+ #: lite/admin/class-ig-es-campaign-rules.php:681
473
  #: lite/admin/class-ig-es-campaign-rules.php:700
 
474
  msgid "is not"
475
  msgstr ""
476
 
477
+ #: lite/admin/class-ig-es-campaign-rules.php:642
478
+ #: lite/admin/class-ig-es-campaign-rules.php:682
479
  msgid "contains"
480
  msgstr ""
481
 
482
+ #: lite/admin/class-ig-es-campaign-rules.php:643
483
+ #: lite/admin/class-ig-es-campaign-rules.php:683
484
  msgid "contains not"
485
  msgstr ""
486
 
487
+ #: lite/admin/class-ig-es-campaign-rules.php:644
488
+ #: lite/admin/class-ig-es-campaign-rules.php:684
489
  msgid "begins with"
490
  msgstr ""
491
 
492
+ #: lite/admin/class-ig-es-campaign-rules.php:645
493
+ #: lite/admin/class-ig-es-campaign-rules.php:685
494
  msgid "ends with"
495
  msgstr ""
496
 
497
+ #: lite/admin/class-ig-es-campaign-rules.php:646
498
  #: lite/admin/class-ig-es-campaign-rules.php:665
 
499
  msgid "is greater than"
500
  msgstr ""
501
 
502
+ #: lite/admin/class-ig-es-campaign-rules.php:647
503
  #: lite/admin/class-ig-es-campaign-rules.php:666
 
504
  msgid "is smaller than"
505
  msgstr ""
506
 
507
+ #: lite/admin/class-ig-es-campaign-rules.php:648
508
  #: lite/admin/class-ig-es-campaign-rules.php:667
 
509
  msgid "is greater or equal"
510
  msgstr ""
511
 
512
+ #: lite/admin/class-ig-es-campaign-rules.php:649
513
  #: lite/admin/class-ig-es-campaign-rules.php:668
 
514
  msgid "is smaller or equal"
515
  msgstr ""
516
 
517
+ #: lite/admin/class-ig-es-campaign-rules.php:650
518
+ #: lite/admin/class-ig-es-campaign-rules.php:686
519
  msgid "match regex pattern"
520
  msgstr ""
521
 
522
+ #: lite/admin/class-ig-es-campaign-rules.php:651
523
+ #: lite/admin/class-ig-es-campaign-rules.php:687
524
  msgid "does not match regex pattern"
525
  msgstr ""
526
 
622
  #: lite/admin/partials/dashboard.php:134
623
  #: lite/includes/pro-features.php:1140
624
  #: lite/includes/pro-features.php:1178
625
+ #: pro/classes/class-es-pro-reports-data.php:416
626
+ #: pro/classes/class-es-pro-reports-data.php:559
627
+ #: pro/classes/class-es-pro-reports-data.php:743
628
  #: pro/partials/es-dashboard.php:88
629
  msgid "Opens"
630
  msgstr ""
639
 
640
  #: lite/admin/partials/dashboard.php:158
641
  #: lite/includes/pro-features.php:1076
642
+ #: pro/classes/class-es-pro-reports-data.php:379
643
  msgid "Avg Click Rate"
644
  msgstr ""
645
 
1063
  msgstr ""
1064
 
1065
  #: lite/includes/class-es-common.php:212
1066
+ #: lite/includes/classes/class-es-post-notifications.php:372
1067
  msgid "Select Status"
1068
  msgstr ""
1069
 
1179
  #: lite/includes/pro-features.php:1021
1180
  #: lite/includes/pro-features.php:1068
1181
  #: pro/classes/class-es-pro-reports-data.php:284
1182
+ #: pro/classes/class-es-pro-reports-data.php:371
1183
  msgid "Sent"
1184
  msgstr ""
1185
 
1204
 
1205
  #: lite/includes/class-es-common.php:1916
1206
  #: lite/includes/classes/class-es-reports-table.php:513
1207
+ #: pro/classes/class-es-pro-reports-data.php:891
1208
  msgid "All Status"
1209
  msgstr ""
1210
 
1373
  #: lite/includes/classes/class-es-admin-settings.php:427
1374
  #: lite/includes/classes/class-es-admin-settings.php:467
1375
  #: lite/includes/classes/class-es-newsletters.php:266
1376
+ #: pro/pro-class-sequences.php:397
1377
  msgid "Content"
1378
  msgstr ""
1379
 
1588
  #: lite/includes/classes/class-es-campaign-report.php:246
1589
  #: lite/includes/classes/class-es-contacts-table.php:356
1590
  #: lite/includes/pro-features.php:1052
1591
+ #: pro/classes/class-es-pro-reports-data.php:355
1592
+ #: pro/classes/class-es-pro-reports-data.php:888
1593
+ #: pro/pro-class-email-subscribers.php:1631
1594
  msgid "Opened"
1595
  msgstr ""
1596
 
1747
  msgstr ""
1748
 
1749
  #: lite/includes/classes/class-es-contacts-table.php:138
1750
+ #: lite/includes/classes/class-es-import-subscribers.php:236
1751
  msgid "Import Contacts"
1752
  msgstr ""
1753
 
1813
  #: lite/includes/classes/class-es-contacts-table.php:554
1814
  #: lite/includes/classes/class-es-export-subscribers.php:157
1815
  #: lite/includes/classes/class-es-handle-sync-wp-user.php:216
1816
+ #: lite/includes/classes/class-es-import-subscribers.php:230
1817
  #: lite/includes/classes/class-es-lists-table.php:83
1818
  #: lite/includes/classes/class-es-lists-table.php:276
1819
  msgid "Audience "
1841
 
1842
  #: lite/includes/classes/class-es-contacts-table.php:776
1843
  #: lite/includes/pro-features.php:863
1844
+ #: pro/pro-class-email-subscribers.php:835
1845
  msgid "Enter email"
1846
  msgstr ""
1847
 
1856
  #: lite/includes/classes/class-es-contacts-table.php:832
1857
  #: lite/includes/classes/class-es-forms-table.php:549
1858
  #: lite/includes/classes/class-es-lists-table.php:321
1859
+ #: lite/includes/classes/class-es-post-notifications.php:429
1860
  msgid "Save Changes"
1861
  msgstr ""
1862
 
1863
  #: lite/includes/classes/class-es-contacts-table.php:839
1864
  #: lite/includes/classes/class-es-forms-table.php:553
1865
  #: lite/includes/classes/class-es-lists-table.php:325
1866
+ #: lite/includes/classes/class-es-post-notifications.php:432
1867
  msgid "Cancel"
1868
  msgstr ""
1869
 
1944
  #: lite/includes/classes/class-es-contacts-table.php:1310
1945
  #: lite/includes/classes/class-es-contacts-table.php:1331
1946
  #: lite/includes/classes/class-es-post-notifications.php:51
 
 
1947
  msgid "Please select list."
1948
  msgstr ""
1949
 
2060
  msgstr ""
2061
 
2062
  #: lite/includes/classes/class-es-export-subscribers.php:337
2063
+ #: lite/includes/classes/class-es-import-subscribers.php:400
2064
+ #: lite/includes/classes/class-es-import-subscribers.php:537
2065
+ #: lite/includes/classes/class-es-import-subscribers.php:851
2066
  msgid "First Name"
2067
  msgstr ""
2068
 
2069
  #: lite/includes/classes/class-es-export-subscribers.php:338
2070
+ #: lite/includes/classes/class-es-import-subscribers.php:401
2071
+ #: lite/includes/classes/class-es-import-subscribers.php:538
2072
+ #: lite/includes/classes/class-es-import-subscribers.php:856
2073
  msgid "Last Name"
2074
  msgstr ""
2075
 
2389
  msgid "Keep growing. Get everything you need to target, measure, re-target, behavior rules, personalize, split test, segment, automate and optimize."
2390
  msgstr ""
2391
 
2392
+ #: lite/includes/classes/class-es-import-subscribers.php:84
2393
  msgid "Import CSV"
2394
  msgstr ""
2395
 
2396
+ #: lite/includes/classes/class-es-import-subscribers.php:101
2397
  msgid "Select CSV file"
2398
  msgstr ""
2399
 
2400
  #. translators: %s: Max upload size
2401
+ #: lite/includes/classes/class-es-import-subscribers.php:106
2402
  msgid "File size should be less than %s"
2403
  msgstr ""
2404
 
2405
+ #: lite/includes/classes/class-es-import-subscribers.php:110
2406
  msgid "Check CSV structure"
2407
  msgstr ""
2408
 
2409
+ #: lite/includes/classes/class-es-import-subscribers.php:111
2410
  msgid "from here"
2411
  msgstr ""
2412
 
2413
+ #: lite/includes/classes/class-es-import-subscribers.php:123
2414
  msgid "Drop your CSV here"
2415
  msgstr ""
2416
 
2417
+ #: lite/includes/classes/class-es-import-subscribers.php:124
2418
  msgctxt "Uploader: Drop files here - or - Select Files"
2419
  msgid "or"
2420
  msgstr ""
2421
 
2422
+ #: lite/includes/classes/class-es-import-subscribers.php:125
2423
  msgid "Select File"
2424
  msgstr ""
2425
 
2426
+ #: lite/includes/classes/class-es-import-subscribers.php:150
2427
  msgid "Select status"
2428
  msgstr ""
2429
 
2430
+ #: lite/includes/classes/class-es-import-subscribers.php:169
2431
  #: lite/includes/classes/class-es-post-notifications.php:327
2432
  msgid "Select list"
2433
  msgstr ""
2434
 
2435
+ #: lite/includes/classes/class-es-import-subscribers.php:198
2436
  msgid "Import"
2437
  msgstr ""
2438
 
2439
+ #: lite/includes/classes/class-es-import-subscribers.php:402
2440
  msgid "Nick Name"
2441
  msgstr ""
2442
 
2443
+ #: lite/includes/classes/class-es-import-subscribers.php:403
2444
  msgid "Display Name"
2445
  msgstr ""
2446
 
2447
+ #: lite/includes/classes/class-es-import-subscribers.php:539
2448
  msgid "(First Name) (Last Name)"
2449
  msgstr ""
2450
 
2451
+ #: lite/includes/classes/class-es-import-subscribers.php:540
2452
  msgid "(Last Name) (First Name)"
2453
  msgstr ""
2454
 
2455
+ #: lite/includes/classes/class-es-import-subscribers.php:548
2456
  msgid "Select columns for mapping"
2457
  msgstr ""
2458
 
2459
+ #: lite/includes/classes/class-es-import-subscribers.php:551
2460
  msgid "Define which column represents which field"
2461
  msgstr ""
2462
 
2463
+ #: lite/includes/classes/class-es-import-subscribers.php:568
2464
  msgid "Ignore column"
2465
  msgstr ""
2466
 
2467
  #. translators: %s: Hidden contacts count
2468
+ #: lite/includes/classes/class-es-import-subscribers.php:607
2469
  msgid "%s contacts are hidden"
2470
  msgstr ""
2471
 
2472
+ #: lite/includes/classes/class-es-import-subscribers.php:674
2473
  msgid "Email address is invalid."
2474
  msgstr ""
2475
 
2476
+ #: lite/includes/classes/class-es-import-subscribers.php:675
2477
  msgid "Email address is empty."
2478
  msgstr ""
2479
 
2480
+ #: lite/includes/classes/class-es-import-subscribers.php:676
2481
  msgid "Duplicate email in the CSV file. Only the first record imported."
2482
  msgstr ""
2483
 
2484
  #. translators: 1. Total imported contacts 2. Total contacts
2485
+ #: lite/includes/classes/class-es-import-subscribers.php:841
2486
  msgid "%1$s of %2$s contacts imported"
2487
  msgstr ""
2488
 
2489
+ #: lite/includes/classes/class-es-import-subscribers.php:845
2490
  msgid "The following contacts were skipped"
2491
  msgstr ""
2492
 
2493
+ #: lite/includes/classes/class-es-import-subscribers.php:860
2494
  msgid "Reason"
2495
  msgstr ""
2496
 
2799
  msgid "Content of the selected template will be sent out as post notification."
2800
  msgstr ""
2801
 
2802
+ #: lite/includes/classes/class-es-post-notifications.php:388
2803
  msgid "Select post category"
2804
  msgstr ""
2805
 
2806
+ #: lite/includes/classes/class-es-post-notifications.php:389
2807
  msgid "Notification will be sent out when any post from selected categories will be published."
2808
  msgstr ""
2809
 
2810
+ #: lite/includes/classes/class-es-post-notifications.php:405
2811
  msgid "Select custom post type(s)"
2812
  msgstr ""
2813
 
2814
+ #: lite/includes/classes/class-es-post-notifications.php:406
2815
  msgid "(Optional) Select custom post type for which you want to send notification."
2816
  msgstr ""
2817
 
2818
+ #: lite/includes/classes/class-es-post-notifications.php:429
2819
  msgid "Save Campaign"
2820
  msgstr ""
2821
 
3145
  msgstr ""
3146
 
3147
  #: lite/includes/pro-features.php:194
3148
+ #: pro/pro-class-email-subscribers.php:882
3149
  msgid "Track clicks"
3150
  msgstr ""
3151
 
3201
  msgstr ""
3202
 
3203
  #: lite/includes/pro-features.php:287
3204
+ #: pro/pro-class-email-subscribers.php:890
3205
  msgid "Track IP address"
3206
  msgstr ""
3207
 
3477
  msgstr ""
3478
 
3479
  #: lite/includes/pro-features.php:890
3480
+ #: pro/pro-class-email-subscribers.php:719
3481
  msgid "Link tracking"
3482
  msgstr ""
3483
 
3486
  msgstr ""
3487
 
3488
  #: lite/includes/pro-features.php:939
3489
+ #: pro/pro-class-email-subscribers.php:763
3490
  msgid "Send options"
3491
  msgstr ""
3492
 
3493
  #: lite/includes/pro-features.php:942
3494
+ #: pro/pro-class-email-subscribers.php:766
3495
  msgid "Schedule for later"
3496
  msgstr ""
3497
 
3498
  #: lite/includes/pro-features.php:949
3499
  #: lite/includes/workflows/admin/views/meta-box-timing.php:82
3500
  #: lite/includes/workflows/fields/class-es-date.php:31
3501
+ #: pro/pro-class-email-subscribers.php:779
3502
  msgid "Date"
3503
  msgstr ""
3504
 
3505
  #: lite/includes/pro-features.php:958
3506
  #: lite/includes/workflows/fields/class-es-time.php:64
3507
+ #: pro/pro-class-email-subscribers.php:790
3508
  msgid "Time"
3509
  msgstr ""
3510
 
3511
  #: lite/includes/pro-features.php:968
3512
+ #: pro/pro-class-email-subscribers.php:801
3513
  msgid "Local Time: "
3514
  msgstr ""
3515
 
3544
  msgstr ""
3545
 
3546
  #: lite/includes/pro-features.php:1036
3547
+ #: pro/classes/class-es-pro-reports-data.php:338
3548
  msgid "Date: "
3549
  msgstr ""
3550
 
3553
  msgstr ""
3554
 
3555
  #: lite/includes/pro-features.php:1044
3556
+ #: pro/classes/class-es-pro-reports-data.php:347
3557
  msgid "Statistics"
3558
  msgstr ""
3559
 
3560
  #: lite/includes/pro-features.php:1060
3561
+ #: pro/classes/class-es-pro-reports-data.php:363
3562
  msgid "Avg Open Rate"
3563
  msgstr ""
3564
 
3576
 
3577
  #: lite/includes/pro-features.php:1175
3578
  #: lite/includes/pro-features.php:1390
3579
+ #: pro/classes/class-es-pro-reports-data.php:556
3580
+ #: pro/classes/class-es-pro-reports-data.php:935
3581
  msgid "Mail Client"
3582
  msgstr ""
3583
 
3598
  msgstr ""
3599
 
3600
  #: lite/includes/pro-features.php:1240
3601
+ #: pro/classes/class-es-pro-reports-data.php:651
3602
  msgid "Link (URL)"
3603
  msgstr ""
3604
 
3605
  #: lite/includes/pro-features.php:1242
3606
+ #: pro/classes/class-es-pro-reports-data.php:653
3607
  msgid "Unique Clicks"
3608
  msgstr ""
3609
 
3610
  #: lite/includes/pro-features.php:1244
3611
+ #: pro/classes/class-es-pro-reports-data.php:655
3612
  msgid "Total Clicks"
3613
  msgstr ""
3614
 
3625
  msgstr ""
3626
 
3627
  #: lite/includes/pro-features.php:1389
3628
+ #: pro/classes/class-es-pro-reports-data.php:934
3629
  msgid "Device"
3630
  msgstr ""
3631
 
3632
  #: lite/includes/pro-features.php:1391
3633
+ #: pro/classes/class-es-pro-reports-data.php:936
3634
  msgid "OS"
3635
  msgstr ""
3636
 
3637
  #: lite/includes/pro-features.php:1418
3638
+ #: pro/classes/class-es-pro-reports-data.php:958
3639
  msgid "Desktop"
3640
  msgstr ""
3641
 
3642
  #: lite/includes/pro-features.php:1427
3643
+ #: pro/classes/class-es-pro-reports-data.php:966
3644
  msgid "Tablet"
3645
  msgstr ""
3646
 
3647
  #: lite/includes/pro-features.php:1436
3648
+ #: pro/classes/class-es-pro-reports-data.php:974
3649
  msgid "Mobile"
3650
  msgstr ""
3651
 
3652
  #: lite/includes/pro-features.php:1495
3653
+ #: pro/pro-class-email-subscribers.php:1463
3654
  msgid "Add Attachments"
3655
  msgstr ""
3656
 
3657
  #: lite/includes/pro-features.php:1525
3658
+ #: pro/pro-class-email-subscribers.php:1544
3659
  msgid "Import existing WordPress users"
3660
  msgstr ""
3661
 
3736
  msgid "Update Contact"
3737
  msgstr ""
3738
 
3739
+ #: lite/includes/workflows/admin/class-es-workflow-admin-ajax.php:166
3740
  msgid "Variable not found."
3741
  msgstr ""
3742
 
4169
  msgstr ""
4170
 
4171
  #: lite/public/partials/cron-message.php:43
4172
+ #: pro/pro-class-email-subscribers.php:809
4173
  msgid "Send Now"
4174
  msgstr ""
4175
 
4214
  msgid "Recipient(s): "
4215
  msgstr ""
4216
 
4217
+ #: pro/classes/class-es-pro-reports-data.php:399
4218
  msgid "Open and Click activity"
4219
  msgstr ""
4220
 
4221
+ #: pro/classes/class-es-pro-reports-data.php:407
4222
  msgid "Country info"
4223
  msgstr ""
4224
 
4225
+ #: pro/classes/class-es-pro-reports-data.php:512
4226
  msgid "Others"
4227
  msgstr ""
4228
 
4229
+ #: pro/classes/class-es-pro-reports-data.php:540
4230
  msgid "No country data found."
4231
  msgstr ""
4232
 
4233
+ #: pro/classes/class-es-pro-reports-data.php:551
4234
  msgid "Mail Client info"
4235
  msgstr ""
4236
 
4237
+ #: pro/classes/class-es-pro-reports-data.php:587
4238
  msgid "No mail client data found."
4239
  msgstr ""
4240
 
4241
+ #: pro/classes/class-es-pro-reports-data.php:601
4242
  msgid "Device info"
4243
  msgstr ""
4244
 
4245
+ #: pro/classes/class-es-pro-reports-data.php:604
4246
  msgid "No device data found"
4247
  msgstr ""
4248
 
4249
+ #: pro/classes/class-es-pro-reports-data.php:608
4250
  msgid "Browser info"
4251
  msgstr ""
4252
 
4253
+ #: pro/classes/class-es-pro-reports-data.php:611
4254
  msgid "No browser data found"
4255
  msgstr ""
4256
 
4257
+ #: pro/classes/class-es-pro-reports-data.php:615
4258
  msgid "OS info"
4259
  msgstr ""
4260
 
4261
+ #: pro/classes/class-es-pro-reports-data.php:618
4262
  msgid "No OS data found"
4263
  msgstr ""
4264
 
4265
+ #: pro/classes/class-es-pro-reports-data.php:644
4266
  msgid "Link activity"
4267
  msgstr ""
4268
 
4269
+ #: pro/classes/class-es-pro-reports-data.php:748
4270
  #: pro/partials/es-dashboard.php:100
4271
  msgid "Clicks"
4272
  msgstr ""
4273
 
4274
+ #: pro/classes/class-es-pro-reports-data.php:877
4275
  msgid "Filter Report"
4276
  msgstr ""
4277
 
4278
+ #: pro/classes/class-es-pro-reports-data.php:889
4279
  msgid "Not Opened"
4280
  msgstr ""
4281
 
4443
  msgid "Please attach a file having size lower than %s."
4444
  msgstr ""
4445
 
4446
+ #: pro/pro-class-email-subscribers.php:484
4447
+ msgid "Are you sure you want to delete this?"
4448
+ msgstr ""
4449
+
4450
+ #: pro/pro-class-email-subscribers.php:610
4451
  msgid "Clean My List"
4452
  msgstr ""
4453
 
4454
+ #: pro/pro-class-email-subscribers.php:611
4455
  msgid "List cleanup is in progress..."
4456
  msgstr ""
4457
 
4458
+ #: pro/pro-class-email-subscribers.php:612
4459
  msgid "List cleanup completed successfully."
4460
  msgstr ""
4461
 
4462
+ #: pro/pro-class-email-subscribers.php:629
4463
  msgid "Email status"
4464
  msgstr ""
4465
 
4466
+ #: pro/pro-class-email-subscribers.php:630
4467
  msgid "Last opened at"
4468
  msgstr ""
4469
 
4470
+ #: pro/pro-class-email-subscribers.php:633
4471
  msgid "IP"
4472
  msgstr ""
4473
 
4474
+ #: pro/pro-class-email-subscribers.php:847
4475
  msgid "Select page"
4476
  msgstr ""
4477
 
4478
+ #: pro/pro-class-email-subscribers.php:860
4479
  msgid "Subscriber will be redirected to selected page once they click on unsubscribe link from the email."
4480
  msgstr ""
4481
 
4482
+ #: pro/pro-class-email-subscribers.php:873
4483
  msgid "Subscriber will be redirected to selected page once they click on email confirmation link from the double opt-in (confirmation) email."
4484
  msgstr ""
4485
 
4486
+ #: pro/pro-class-email-subscribers.php:912
4487
  msgid "Access Key ID"
4488
  msgstr ""
4489
 
4490
+ #: pro/pro-class-email-subscribers.php:923
4491
  msgid "Secret Access Key"
4492
  msgstr ""
4493
 
4494
+ #: pro/pro-class-email-subscribers.php:935
4495
  msgid "Closest Region"
4496
  msgstr ""
4497
 
4498
+ #: pro/pro-class-email-subscribers.php:936
4499
  msgid ""
4500
  "Please select the Amazon SES API region which is the closest to where your website is hosted.\n"
4501
  "\t\t\t\t\tThis can help to decrease network latency between your site and Amazon SES, which will speed up email sending."
4502
  msgstr ""
4503
 
4504
+ #: pro/pro-class-email-subscribers.php:997
4505
  msgid "Clicked"
4506
  msgstr ""
4507
 
4508
  #. translators: 1: Page 2: Duplicate action 3: Campaign id 4: Wp nonce
4509
+ #: pro/pro-class-email-subscribers.php:1262
4510
  msgid "<a href=\"?page=%1$s&action=%2$s&list=%3$s&_wpnonce=%4$s\">Duplicate</a>"
4511
  msgstr ""
4512
 
4513
+ #: pro/pro-class-email-subscribers.php:1283
4514
  msgid "You are not allowed to duplicate campaign."
4515
  msgstr ""
4516
 
4517
+ #: pro/pro-class-email-subscribers.php:1298
4518
  msgid "Campaign duplicated !"
4519
  msgstr ""
4520
 
4521
+ #: pro/pro-class-email-subscribers.php:1563
4522
  msgid "Import WordPress users with following roles"
4523
  msgstr ""
4524
 
4525
+ #: pro/pro-class-email-subscribers.php:1613
4526
  msgid "Proceed"
4527
  msgstr ""
4528
 
4611
  msgstr ""
4612
 
4613
  #: pro/pro-class-sequences.php:100
4614
+ #: pro/pro-class-sequences.php:326
4615
  msgid "Save All"
4616
  msgstr ""
4617
 
4618
+ #: pro/pro-class-sequences.php:121
4619
  msgid "+ Add Email"
4620
  msgstr ""
4621
 
4622
+ #: pro/pro-class-sequences.php:161
4623
+ #: pro/pro-class-sequences.php:233
4624
  msgid "Sequence should have atleast one email"
4625
  msgstr ""
4626
 
4627
+ #: pro/pro-class-sequences.php:205
4628
  msgid "Sequence added successfully!"
4629
  msgstr ""
4630
 
4631
+ #: pro/pro-class-sequences.php:209
4632
  msgid "Sorry, you are not allowed to add sequence."
4633
  msgstr ""
4634
 
4635
+ #: pro/pro-class-sequences.php:308
4636
  msgid "Sequence updated successfully!"
4637
  msgstr ""
4638
 
4639
+ #: pro/pro-class-sequences.php:312
4640
  msgid "Sorry, you are not allowed to edit sequence."
4641
  msgstr ""
4642
 
4643
+ #: pro/pro-class-sequences.php:350
4644
+ #: pro/pro-class-sequences.php:435
 
 
 
 
4645
  msgid " day"
4646
  msgstr ""
4647
 
4648
+ #: pro/pro-class-sequences.php:350
4649
+ #: pro/pro-class-sequences.php:435
4650
  msgid " days"
4651
  msgstr ""
4652
 
4653
+ #: pro/pro-class-sequences.php:355
4654
+ #: pro/pro-class-sequences.php:393
4655
  msgid "Welcome"
4656
  msgstr ""
4657
 
4658
+ #: pro/pro-class-sequences.php:358
4659
+ #: pro/pro-class-sequences.php:361
4660
  msgid "Delete this email"
4661
  msgstr ""
4662
 
4663
+ #: pro/pro-class-sequences.php:391
4664
  msgid "Email Subject"
4665
  msgstr ""
4666
 
4667
+ #: pro/pro-class-sequences.php:440
4668
  msgid "When to send"
4669
  msgstr ""
4670
 
4671
+ #: pro/pro-class-sequences.php:446
4672
  msgid " after subscription"
4673
  msgstr ""
4674
 
readme.txt CHANGED
@@ -4,9 +4,9 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
4
  Author URI: https://www.icegram.com/
5
  Tags: email marketing, subscription, autoresponder, post notification, welcome email
6
  Requires at least: 3.9
7
- Tested up to: 5.6.2
8
  Requires PHP: 5.6
9
- Stable tag: 4.6.12.1
10
  License: GPLv3
11
  License URI: http://www.gnu.org/licenses
12
 
@@ -304,6 +304,12 @@ Refer [here](https://www.icegram.com/documentation/es-faq/).
304
 
305
  == Changelog ==
306
 
 
 
 
 
 
 
307
  **4.6.12.1 (05.03.2021)**
308
 
309
  * Fix: Subscription issue with [Icegram](https://wordpress.org/plugins/icegram) plugin
@@ -322,6 +328,7 @@ Refer [here](https://www.icegram.com/documentation/es-faq/).
322
 
323
  **4.6.10 (15.02.2021)**
324
 
 
325
  * New: Added additional stats on campaigns reports dashboard
326
  * Update: Disable IP tracking in lite version by default to make GDPR compliant
327
  * Fix: Database vulnerability
4
  Author URI: https://www.icegram.com/
5
  Tags: email marketing, subscription, autoresponder, post notification, welcome email
6
  Requires at least: 3.9
7
+ Tested up to: 5.7
8
  Requires PHP: 5.6
9
+ Stable tag: 4.6.13
10
  License: GPLv3
11
  License URI: http://www.gnu.org/licenses
12
 
304
 
305
  == Changelog ==
306
 
307
+ **4.6.13 (17.03.2021)**
308
+
309
+ * New: Campaign rules to filter recipients while sending sequence emails [PRO]
310
+ * Update: Tested upto WordPress 5.7
311
+ * Fix: Invalid date and time for campaign reports activity table
312
+
313
  **4.6.12.1 (05.03.2021)**
314
 
315
  * Fix: Subscription issue with [Icegram](https://wordpress.org/plugins/icegram) plugin
328
 
329
  **4.6.10 (15.02.2021)**
330
 
331
+ * New: New workflow trigger for YITH WooCommerce Wishlist [PRO]
332
  * New: Added additional stats on campaigns reports dashboard
333
  * Update: Disable IP tracking in lite version by default to make GDPR compliant
334
  * Fix: Database vulnerability