Passed
Push — master ( 8acefd...e16739 )
by Kiran
09:23 queued 04:32
created
templates/payment-forms/elements/file_upload.php 1 patch
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -21,20 +21,20 @@
 block discarded – undo
21 21
 
22 22
 foreach ( $file_types as $file_type ) {
23 23
 
24
-	if ( isset( $all_types[ $file_type ] ) ) {
25
-		$types[]   = $all_types[ $file_type ];
26
-		$file_type = explode( '|', $file_type );
24
+    if ( isset( $all_types[ $file_type ] ) ) {
25
+        $types[]   = $all_types[ $file_type ];
26
+        $file_type = explode( '|', $file_type );
27 27
 
28
-		foreach ( $file_type as $type ) {
29
-			$type     = trim( $type );
30
-			$types[]  = ".$type";
31
-			$_types[] = $type;
32
-		}
28
+        foreach ( $file_type as $type ) {
29
+            $type     = trim( $type );
30
+            $types[]  = ".$type";
31
+            $_types[] = $type;
32
+        }
33 33
 }
34 34
 }
35 35
 
36 36
 if ( ! empty( $required ) ) {
37
-	$label .= "<span class='text-danger'> *</span>";
37
+    $label .= "<span class='text-danger'> *</span>";
38 38
 }
39 39
 ?>
40 40
 <label><span v-html="form_element.label"></span></label>
Please login to merge, or discard this patch.
includes/gateways/class-getpaid-bank-transfer-gateway.php 1 patch
Indentation   +282 added lines, -282 removed lines patch added patch discarded remove patch
@@ -13,47 +13,47 @@  discard block
 block discarded – undo
13 13
 class GetPaid_Bank_Transfer_Gateway extends GetPaid_Payment_Gateway {
14 14
 
15 15
     /**
16
-	 * Payment method id.
17
-	 *
18
-	 * @var string
19
-	 */
16
+     * Payment method id.
17
+     *
18
+     * @var string
19
+     */
20 20
     public $id = 'bank_transfer';
21 21
 
22
-	/**
23
-	 * An array of features that this gateway supports.
24
-	 *
25
-	 * @var array
26
-	 */
27
-	protected $supports = array(
28
-		'subscription',
29
-		'addons',
30
-		'single_subscription_group',
31
-		'multiple_subscription_groups',
32
-		'subscription_date_change',
33
-		'subscription_bill_times_change',
34
-	);
22
+    /**
23
+     * An array of features that this gateway supports.
24
+     *
25
+     * @var array
26
+     */
27
+    protected $supports = array(
28
+        'subscription',
29
+        'addons',
30
+        'single_subscription_group',
31
+        'multiple_subscription_groups',
32
+        'subscription_date_change',
33
+        'subscription_bill_times_change',
34
+    );
35
+
36
+    /**
37
+     * Payment method order.
38
+     *
39
+     * @var int
40
+     */
41
+    public $order = 8;
35 42
 
36 43
     /**
37
-	 * Payment method order.
38
-	 *
39
-	 * @var int
40
-	 */
41
-	public $order = 8;
42
-
43
-	/**
44
-	 * Bank transfer instructions.
45
-	 */
46
-	public $instructions;
47
-
48
-	/**
49
-	 * Locale array.
50
-	 */
51
-	public $locale;
44
+     * Bank transfer instructions.
45
+     */
46
+    public $instructions;
52 47
 
53 48
     /**
54
-	 * Class constructor.
55
-	 */
56
-	public function __construct() {
49
+     * Locale array.
50
+     */
51
+    public $locale;
52
+
53
+    /**
54
+     * Class constructor.
55
+     */
56
+    public function __construct() {
57 57
         parent::__construct();
58 58
 
59 59
         $this->title                = __( 'Direct bank transfer', 'invoicing' );
@@ -61,24 +61,24 @@  discard block
 block discarded – undo
61 61
         $this->checkout_button_text = __( 'Proceed', 'invoicing' );
62 62
         $this->instructions         = apply_filters( 'wpinv_bank_instructions', $this->get_option( 'info' ) );
63 63
 
64
-		add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) );
65
-		add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 );
66
-		add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 );
67
-		add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 );
68
-		add_action( 'getpaid_should_renew_subscription', array( $this, 'maybe_renew_subscription' ) );
69
-		add_action( 'getpaid_invoice_status_publish', array( $this, 'invoice_paid' ), 20 );
64
+        add_action( 'wpinv_receipt_end', array( $this, 'thankyou_page' ) );
65
+        add_action( 'getpaid_invoice_line_items', array( $this, 'thankyou_page' ), 40 );
66
+        add_action( 'wpinv_pdf_content_billing', array( $this, 'thankyou_page' ), 11 );
67
+        add_action( 'wpinv_email_invoice_details', array( $this, 'email_instructions' ), 10, 3 );
68
+        add_action( 'getpaid_should_renew_subscription', array( $this, 'maybe_renew_subscription' ) );
69
+        add_action( 'getpaid_invoice_status_publish', array( $this, 'invoice_paid' ), 20 );
70 70
 
71 71
     }
72 72
 
73 73
     /**
74
-	 * Process Payment.
75
-	 *
76
-	 * @param WPInv_Invoice $invoice Invoice.
77
-	 * @param array $submission_data Posted checkout fields.
78
-	 * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
79
-	 * @return array
80
-	 */
81
-	public function process_payment( $invoice, $submission_data, $submission ) {
74
+     * Process Payment.
75
+     *
76
+     * @param WPInv_Invoice $invoice Invoice.
77
+     * @param array $submission_data Posted checkout fields.
78
+     * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
79
+     * @return array
80
+     */
81
+    public function process_payment( $invoice, $submission_data, $submission ) {
82 82
 
83 83
         // Add a transaction id.
84 84
         $invoice->set_transaction_id( $invoice->generate_key( 'bt_' ) );
@@ -99,66 +99,66 @@  discard block
 block discarded – undo
99 99
     }
100 100
 
101 101
     /**
102
-	 * Output for the order received page.
103
-	 *
104
-	 * @param WPInv_Invoice $invoice Invoice.
105
-	 */
106
-	public function thankyou_page( $invoice ) {
102
+     * Output for the order received page.
103
+     *
104
+     * @param WPInv_Invoice $invoice Invoice.
105
+     */
106
+    public function thankyou_page( $invoice ) {
107 107
 
108 108
         if ( 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) {
109 109
 
110
-			echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL;
110
+            echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL;
111 111
 
112 112
             if ( ! empty( $this->instructions ) ) {
113 113
                 echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) );
114
-			}
114
+            }
115 115
 
116
-			$this->bank_details( $invoice );
116
+            $this->bank_details( $invoice );
117 117
 
118
-			echo '</div>';
118
+            echo '</div>';
119 119
 
120 120
         }
121 121
 
122
-	}
122
+    }
123 123
 
124 124
     /**
125
-	 * Add content to the WPI emails.
126
-	 *
127
-	 * @param WPInv_Invoice $invoice Invoice.
128
-	 * @param string     $email_type Email format: plain text or HTML.
129
-	 * @param bool     $sent_to_admin Sent to admin.
130
-	 */
131
-	public function email_instructions( $invoice, $email_type, $sent_to_admin ) {
125
+     * Add content to the WPI emails.
126
+     *
127
+     * @param WPInv_Invoice $invoice Invoice.
128
+     * @param string     $email_type Email format: plain text or HTML.
129
+     * @param bool     $sent_to_admin Sent to admin.
130
+     */
131
+    public function email_instructions( $invoice, $email_type, $sent_to_admin ) {
132 132
 
133
-		if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) {
133
+        if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) {
134 134
 
135
-			echo '<div class="wpi-email-row getpaid-bank-transfer-details">';
135
+            echo '<div class="wpi-email-row getpaid-bank-transfer-details">';
136 136
 
137
-			if ( $this->instructions ) {
138
-				echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL );
137
+            if ( $this->instructions ) {
138
+                echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL );
139 139
             }
140 140
 
141
-			$this->bank_details( $invoice );
141
+            $this->bank_details( $invoice );
142 142
 
143
-			echo '</div>';
143
+            echo '</div>';
144 144
 
145
-		}
145
+        }
146 146
 
147 147
     }
148 148
 
149 149
     /**
150
-	 * Get bank details and place into a list format.
151
-	 *
152
-	 * @param WPInv_Invoice $invoice Invoice.
153
-	 */
154
-	protected function bank_details( $invoice ) {
150
+     * Get bank details and place into a list format.
151
+     *
152
+     * @param WPInv_Invoice $invoice Invoice.
153
+     */
154
+    protected function bank_details( $invoice ) {
155 155
 
156
-		// Get the invoice country and country $locale.
157
-		$country = $invoice->get_country();
158
-		$locale  = $this->get_country_locale();
156
+        // Get the invoice country and country $locale.
157
+        $country = $invoice->get_country();
158
+        $locale  = $this->get_country_locale();
159 159
 
160
-		// Get shortcode label in the $locale array and use appropriate one.
161
-		$sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
160
+        // Get shortcode label in the $locale array and use appropriate one.
161
+        $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
162 162
 
163 163
         $bank_fields = array(
164 164
             'ac_name'   => __( 'Account Name', 'invoicing' ),
@@ -177,11 +177,11 @@  discard block
 block discarded – undo
177 177
 
178 178
             if ( ! empty( $value ) ) {
179 179
                 $bank_info[ $field ] = array(
180
-					'label' => $label,
181
-					'value' => $value,
182
-				);
180
+                    'label' => $label,
181
+                    'value' => $value,
182
+                );
183 183
             }
184
-		}
184
+        }
185 185
 
186 186
         $bank_info = apply_filters( 'wpinv_bank_info', $bank_info, $invoice );
187 187
 
@@ -189,139 +189,139 @@  discard block
 block discarded – undo
189 189
             return;
190 190
         }
191 191
 
192
-		echo '<h3 class="getpaid-bank-transfer-title"> ' . esc_html( apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ), $invoice ) ) . '</h3>' . PHP_EOL;
192
+        echo '<h3 class="getpaid-bank-transfer-title"> ' . esc_html( apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ), $invoice ) ) . '</h3>' . PHP_EOL;
193 193
 
194
-		echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL;
194
+        echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL;
195 195
 
196
-		foreach ( $bank_info as $key => $data ) {
197
-			echo "<tr class='getpaid-bank-transfer-" . esc_attr( $key ) . "'><th class='font-weight-bold'>" . wp_kses_post( $data['label'] ) . "</th><td class='w-75'>" . wp_kses_post( wptexturize( $data['value'] ) ) . '</td></tr>' . PHP_EOL;
198
-		}
196
+        foreach ( $bank_info as $key => $data ) {
197
+            echo "<tr class='getpaid-bank-transfer-" . esc_attr( $key ) . "'><th class='font-weight-bold'>" . wp_kses_post( $data['label'] ) . "</th><td class='w-75'>" . wp_kses_post( wptexturize( $data['value'] ) ) . '</td></tr>' . PHP_EOL;
198
+        }
199 199
 
200
-		echo '</table>';
200
+        echo '</table>';
201 201
 
202 202
     }
203 203
 
204 204
     /**
205
-	 * Get country locale if localized.
206
-	 *
207
-	 * @return array
208
-	 */
209
-	public function get_country_locale() {
210
-
211
-		if ( empty( $this->locale ) ) {
212
-
213
-			// Locale information to be used - only those that are not 'Sort Code'.
214
-			$this->locale = apply_filters(
215
-				'getpaid_get_bank_transfer_locale',
216
-				array(
217
-					'AU' => array(
218
-						'sortcode' => array(
219
-							'label' => __( 'BSB', 'invoicing' ),
220
-						),
221
-					),
222
-					'CA' => array(
223
-						'sortcode' => array(
224
-							'label' => __( 'Bank transit number', 'invoicing' ),
225
-						),
226
-					),
227
-					'IN' => array(
228
-						'sortcode' => array(
229
-							'label' => __( 'IFSC', 'invoicing' ),
230
-						),
231
-					),
232
-					'IT' => array(
233
-						'sortcode' => array(
234
-							'label' => __( 'Branch sort', 'invoicing' ),
235
-						),
236
-					),
237
-					'NZ' => array(
238
-						'sortcode' => array(
239
-							'label' => __( 'Bank code', 'invoicing' ),
240
-						),
241
-					),
242
-					'SE' => array(
243
-						'sortcode' => array(
244
-							'label' => __( 'Bank code', 'invoicing' ),
245
-						),
246
-					),
247
-					'US' => array(
248
-						'sortcode' => array(
249
-							'label' => __( 'Routing number', 'invoicing' ),
250
-						),
251
-					),
252
-					'ZA' => array(
253
-						'sortcode' => array(
254
-							'label' => __( 'Branch code', 'invoicing' ),
255
-						),
256
-					),
257
-				)
258
-			);
259
-
260
-		}
261
-
262
-		return $this->locale;
263
-
264
-	}
265
-
266
-	/**
267
-	 * Filters the gateway settings.
268
-	 *
269
-	 * @param array $admin_settings
270
-	 */
271
-	public function admin_settings( $admin_settings ) {
205
+     * Get country locale if localized.
206
+     *
207
+     * @return array
208
+     */
209
+    public function get_country_locale() {
210
+
211
+        if ( empty( $this->locale ) ) {
212
+
213
+            // Locale information to be used - only those that are not 'Sort Code'.
214
+            $this->locale = apply_filters(
215
+                'getpaid_get_bank_transfer_locale',
216
+                array(
217
+                    'AU' => array(
218
+                        'sortcode' => array(
219
+                            'label' => __( 'BSB', 'invoicing' ),
220
+                        ),
221
+                    ),
222
+                    'CA' => array(
223
+                        'sortcode' => array(
224
+                            'label' => __( 'Bank transit number', 'invoicing' ),
225
+                        ),
226
+                    ),
227
+                    'IN' => array(
228
+                        'sortcode' => array(
229
+                            'label' => __( 'IFSC', 'invoicing' ),
230
+                        ),
231
+                    ),
232
+                    'IT' => array(
233
+                        'sortcode' => array(
234
+                            'label' => __( 'Branch sort', 'invoicing' ),
235
+                        ),
236
+                    ),
237
+                    'NZ' => array(
238
+                        'sortcode' => array(
239
+                            'label' => __( 'Bank code', 'invoicing' ),
240
+                        ),
241
+                    ),
242
+                    'SE' => array(
243
+                        'sortcode' => array(
244
+                            'label' => __( 'Bank code', 'invoicing' ),
245
+                        ),
246
+                    ),
247
+                    'US' => array(
248
+                        'sortcode' => array(
249
+                            'label' => __( 'Routing number', 'invoicing' ),
250
+                        ),
251
+                    ),
252
+                    'ZA' => array(
253
+                        'sortcode' => array(
254
+                            'label' => __( 'Branch code', 'invoicing' ),
255
+                        ),
256
+                    ),
257
+                )
258
+            );
259
+
260
+        }
261
+
262
+        return $this->locale;
263
+
264
+    }
265
+
266
+    /**
267
+     * Filters the gateway settings.
268
+     *
269
+     * @param array $admin_settings
270
+     */
271
+    public function admin_settings( $admin_settings ) {
272 272
 
273 273
         $admin_settings['bank_transfer_desc']['std']    = __( "Make your payment directly into our bank account. Please use your Invoice Number as the payment reference. Your invoice won't be processed until the funds have cleared in our account.", 'invoicing' );
274
-		$admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' );
274
+        $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' );
275 275
 
276
-		$locale  = $this->get_country_locale();
276
+        $locale  = $this->get_country_locale();
277 277
 
278
-		// Get sortcode label in the $locale array and use appropriate one.
279
-		$country  = wpinv_default_billing_country();
280
-		$sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
278
+        // Get sortcode label in the $locale array and use appropriate one.
279
+        $country  = wpinv_default_billing_country();
280
+        $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
281 281
 
282
-		$admin_settings['bank_transfer_ac_name'] = array(
282
+        $admin_settings['bank_transfer_ac_name'] = array(
283 283
             'type' => 'text',
284 284
             'id'   => 'bank_transfer_ac_name',
285 285
             'name' => __( 'Account Name', 'invoicing' ),
286
-		);
286
+        );
287 287
 
288
-		$admin_settings['bank_transfer_ac_no'] = array(
288
+        $admin_settings['bank_transfer_ac_no'] = array(
289 289
             'type' => 'text',
290 290
             'id'   => 'bank_transfer_ac_no',
291 291
             'name' => __( 'Account Number', 'invoicing' ),
292
-		);
292
+        );
293 293
 
294
-		$admin_settings['bank_transfer_bank_name'] = array(
294
+        $admin_settings['bank_transfer_bank_name'] = array(
295 295
             'type' => 'text',
296 296
             'id'   => 'bank_transfer_bank_name',
297 297
             'name' => __( 'Bank Name', 'invoicing' ),
298
-		);
298
+        );
299 299
 
300
-		$admin_settings['bank_transfer_ifsc'] = array(
300
+        $admin_settings['bank_transfer_ifsc'] = array(
301 301
             'type' => 'text',
302 302
             'id'   => 'bank_transfer_ifsc',
303 303
             'name' => __( 'IFSC Code', 'invoicing' ),
304
-		);
304
+        );
305 305
 
306
-		$admin_settings['bank_transfer_iban'] = array(
306
+        $admin_settings['bank_transfer_iban'] = array(
307 307
             'type' => 'text',
308 308
             'id'   => 'bank_transfer_iban',
309 309
             'name' => __( 'IBAN', 'invoicing' ),
310
-		);
310
+        );
311 311
 
312
-		$admin_settings['bank_transfer_bic'] = array(
312
+        $admin_settings['bank_transfer_bic'] = array(
313 313
             'type' => 'text',
314 314
             'id'   => 'bank_transfer_bic',
315 315
             'name' => __( 'BIC/Swift Code', 'invoicing' ),
316
-		);
316
+        );
317 317
 
318
-		$admin_settings['bank_transfer_sort_code'] = array(
319
-			'type' => 'text',
320
-			'id'   => 'bank_transfer_sort_code',
321
-			'name' => $sortcode,
322
-		);
318
+        $admin_settings['bank_transfer_sort_code'] = array(
319
+            'type' => 'text',
320
+            'id'   => 'bank_transfer_sort_code',
321
+            'name' => $sortcode,
322
+        );
323 323
 
324
-		$admin_settings['bank_transfer_info'] = array(
324
+        $admin_settings['bank_transfer_info'] = array(
325 325
             'id'   => 'bank_transfer_info',
326 326
             'name' => __( 'Instructions', 'invoicing' ),
327 327
             'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ),
@@ -331,17 +331,17 @@  discard block
 block discarded – undo
331 331
             'rows' => 5,
332 332
         );
333 333
 
334
-		return $admin_settings;
335
-	}
334
+        return $admin_settings;
335
+    }
336 336
 
337
-	/**
338
-	 * Processes invoice addons.
339
-	 *
340
-	 * @param WPInv_Invoice $invoice
341
-	 * @param GetPaid_Form_Item[] $items
342
-	 * @return WPInv_Invoice
343
-	 */
344
-	public function process_addons( $invoice, $items ) {
337
+    /**
338
+     * Processes invoice addons.
339
+     *
340
+     * @param WPInv_Invoice $invoice
341
+     * @param GetPaid_Form_Item[] $items
342
+     * @return WPInv_Invoice
343
+     */
344
+    public function process_addons( $invoice, $items ) {
345 345
 
346 346
         foreach ( $items as $item ) {
347 347
             $invoice->add_item( $item );
@@ -349,98 +349,98 @@  discard block
 block discarded – undo
349 349
 
350 350
         $invoice->recalculate_total();
351 351
         $invoice->save();
352
-	}
353
-
354
-	/**
355
-	 * (Maybe) renews a bank transfer subscription profile.
356
-	 *
357
-	 *
358
-	 * @param WPInv_Subscription $subscription
359
-	 */
360
-	public function maybe_renew_subscription( $subscription ) {
361
-		// Ensure its our subscription && it's active.
362
-		if ( $this->id === $subscription->get_gateway() && $subscription->has_status( 'active trialling' ) ) {
363
-			add_filter( 'getpaid_invoice_notifications_is_payment_form_invoice', array( $this, 'force_is_payment_form_invoice' ), 10, 2 );
364
-
365
-			$invoice = $subscription->create_payment();
366
-
367
-			if ( ! empty( $invoice ) ) {
368
-				$is_logged_in = is_user_logged_in();
369
-
370
-				// Cron run.
371
-				if ( ! $is_logged_in ) {
372
-					$note = wp_sprintf( __( 'Renewal %1$s created with the status "%2$s".', 'invoicing' ), $invoice->get_invoice_quote_type(), wpinv_status_nicename( $invoice->get_status(), $invoice ) );
373
-
374
-					$invoice->add_note( $note, false, $is_logged_in, ! $is_logged_in );
375
-				}
376
-			}
377
-
378
-			remove_filter( 'getpaid_invoice_notifications_is_payment_form_invoice', array( $this, 'force_is_payment_form_invoice' ), 10, 2 );
379
-		}
380
-	}
381
-
382
-	/**
383
-	 * Process a bank transfer payment.
384
-	 *
385
-	 *
352
+    }
353
+
354
+    /**
355
+     * (Maybe) renews a bank transfer subscription profile.
356
+     *
357
+     *
358
+     * @param WPInv_Subscription $subscription
359
+     */
360
+    public function maybe_renew_subscription( $subscription ) {
361
+        // Ensure its our subscription && it's active.
362
+        if ( $this->id === $subscription->get_gateway() && $subscription->has_status( 'active trialling' ) ) {
363
+            add_filter( 'getpaid_invoice_notifications_is_payment_form_invoice', array( $this, 'force_is_payment_form_invoice' ), 10, 2 );
364
+
365
+            $invoice = $subscription->create_payment();
366
+
367
+            if ( ! empty( $invoice ) ) {
368
+                $is_logged_in = is_user_logged_in();
369
+
370
+                // Cron run.
371
+                if ( ! $is_logged_in ) {
372
+                    $note = wp_sprintf( __( 'Renewal %1$s created with the status "%2$s".', 'invoicing' ), $invoice->get_invoice_quote_type(), wpinv_status_nicename( $invoice->get_status(), $invoice ) );
373
+
374
+                    $invoice->add_note( $note, false, $is_logged_in, ! $is_logged_in );
375
+                }
376
+            }
377
+
378
+            remove_filter( 'getpaid_invoice_notifications_is_payment_form_invoice', array( $this, 'force_is_payment_form_invoice' ), 10, 2 );
379
+        }
380
+    }
381
+
382
+    /**
383
+     * Process a bank transfer payment.
384
+     *
385
+     *
386 386
      * @param WPInv_Invoice $invoice
387
-	 */
388
-	public function invoice_paid( $invoice ) {
389
-
390
-		// Abort if not paid by bank transfer.
391
-		if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) {
392
-			return;
393
-		}
394
-
395
-		// Is it a parent payment?
396
-		if ( 0 == $invoice->get_parent_id() ) {
397
-
398
-			// (Maybe) activate subscriptions.
399
-			$subscriptions = getpaid_get_invoice_subscriptions( $invoice );
400
-
401
-			if ( ! empty( $subscriptions ) ) {
402
-				$subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions );
403
-
404
-				foreach ( $subscriptions as $subscription ) {
405
-					if ( $subscription->exists() ) {
406
-						$duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() );
407
-						$expiry   = gmdate( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) );
408
-
409
-						$subscription->set_next_renewal_date( $expiry );
410
-						$subscription->set_date_created( current_time( 'mysql' ) );
411
-						$subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() );
412
-						$subscription->activate();
413
-					}
414
-				}
415
-			}
416
-		} else {
417
-
418
-			$subscription = getpaid_get_subscription( $invoice->get_subscription_id() );
419
-
420
-			// Renew the subscription.
421
-			if ( $subscription && $subscription->exists() ) {
422
-				$subscription->add_payment( array(), $invoice );
423
-				$subscription->renew( strtotime( $invoice->get_date_created() ) );
424
-			}
425
-		}
387
+     */
388
+    public function invoice_paid( $invoice ) {
389
+
390
+        // Abort if not paid by bank transfer.
391
+        if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) {
392
+            return;
393
+        }
394
+
395
+        // Is it a parent payment?
396
+        if ( 0 == $invoice->get_parent_id() ) {
397
+
398
+            // (Maybe) activate subscriptions.
399
+            $subscriptions = getpaid_get_invoice_subscriptions( $invoice );
400
+
401
+            if ( ! empty( $subscriptions ) ) {
402
+                $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions );
403
+
404
+                foreach ( $subscriptions as $subscription ) {
405
+                    if ( $subscription->exists() ) {
406
+                        $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() );
407
+                        $expiry   = gmdate( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) );
408
+
409
+                        $subscription->set_next_renewal_date( $expiry );
410
+                        $subscription->set_date_created( current_time( 'mysql' ) );
411
+                        $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() );
412
+                        $subscription->activate();
413
+                    }
414
+                }
415
+            }
416
+        } else {
417
+
418
+            $subscription = getpaid_get_subscription( $invoice->get_subscription_id() );
419
+
420
+            // Renew the subscription.
421
+            if ( $subscription && $subscription->exists() ) {
422
+                $subscription->add_payment( array(), $invoice );
423
+                $subscription->renew( strtotime( $invoice->get_date_created() ) );
424
+            }
425
+        }
426 426
 
427 427
     }
428 428
 
429
-	/**
430
-	 * Force created from payment false to allow email for auto renewal generation invoice.
431
-	 *
432
-	 * @since 2.8.11
433
-	 *
434
-	 * @param bool $is_payment_form_invoice True when invoice created via payment form else false.
435
-	 * @param int  $invoice Invoice ID.
436
-	 * @return bool True when invoice created via payment form else false.
437
-	 */
438
-	public function force_is_payment_form_invoice( $is_payment_form_invoice, $invoice ) {
439
-		if ( $is_payment_form_invoice ) {
440
-			$is_payment_form_invoice = false;
441
-		}
442
-
443
-		return $is_payment_form_invoice;
444
-	}
429
+    /**
430
+     * Force created from payment false to allow email for auto renewal generation invoice.
431
+     *
432
+     * @since 2.8.11
433
+     *
434
+     * @param bool $is_payment_form_invoice True when invoice created via payment form else false.
435
+     * @param int  $invoice Invoice ID.
436
+     * @return bool True when invoice created via payment form else false.
437
+     */
438
+    public function force_is_payment_form_invoice( $is_payment_form_invoice, $invoice ) {
439
+        if ( $is_payment_form_invoice ) {
440
+            $is_payment_form_invoice = false;
441
+        }
442
+
443
+        return $is_payment_form_invoice;
444
+    }
445 445
 
446 446
 }
Please login to merge, or discard this patch.
vendor/ayecode/wp-ayecode-ui/includes/ayecode-ui-settings.php 1 patch
Indentation   +1975 added lines, -1975 removed lines patch added patch discarded remove patch
@@ -13,7 +13,7 @@  discard block
 block discarded – undo
13 13
  * Bail if we are not in WP.
14 14
  */
15 15
 if ( ! defined( 'ABSPATH' ) ) {
16
-	exit;
16
+    exit;
17 17
 }
18 18
 
19 19
 /**
@@ -21,480 +21,480 @@  discard block
 block discarded – undo
21 21
  */
22 22
 if ( ! class_exists( 'AyeCode_UI_Settings' ) ) {
23 23
 
24
-	/**
25
-	 * A Class to be able to change settings for Font Awesome.
26
-	 *
27
-	 * Class AyeCode_UI_Settings
28
-	 * @ver 1.0.0
29
-	 * @todo decide how to implement textdomain
30
-	 */
31
-	class AyeCode_UI_Settings {
32
-
33
-		/**
34
-		 * Class version version.
35
-		 *
36
-		 * @var string
37
-		 */
38
-		public $version = '0.2.22';
39
-
40
-		/**
41
-		 * Class textdomain.
42
-		 *
43
-		 * @var string
44
-		 */
45
-		public $textdomain = 'aui';
46
-
47
-		/**
48
-		 * Latest version of Bootstrap at time of publish published.
49
-		 *
50
-		 * @var string
51
-		 */
52
-		public $latest = "5.2.2";
53
-
54
-		/**
55
-		 * Current version of select2 being used.
56
-		 *
57
-		 * @var string
58
-		 */
59
-		public $select2_version = "4.0.11";
60
-
61
-		/**
62
-		 * The title.
63
-		 *
64
-		 * @var string
65
-		 */
66
-		public $name = 'AyeCode UI';
67
-
68
-		/**
69
-		 * The relative url to the assets.
70
-		 *
71
-		 * @var string
72
-		 */
73
-		public $url = '';
74
-
75
-		/**
76
-		 * Holds the settings values.
77
-		 *
78
-		 * @var array
79
-		 */
80
-		private $settings;
81
-
82
-		/**
83
-		 * AyeCode_UI_Settings instance.
84
-		 *
85
-		 * @access private
86
-		 * @since  1.0.0
87
-		 * @var    AyeCode_UI_Settings There can be only one!
88
-		 */
89
-		private static $instance = null;
90
-
91
-
92
-		/**
93
-		 * Main AyeCode_UI_Settings Instance.
94
-		 *
95
-		 * Ensures only one instance of AyeCode_UI_Settings is loaded or can be loaded.
96
-		 *
97
-		 * @since 1.0.0
98
-		 * @static
99
-		 * @return AyeCode_UI_Settings - Main instance.
100
-		 */
101
-		public static function instance() {
102
-			if ( ! isset( self::$instance ) && ! ( self::$instance instanceof AyeCode_UI_Settings ) ) {
103
-
104
-				self::$instance = new AyeCode_UI_Settings;
105
-
106
-				add_action( 'init', array( self::$instance, 'init' ) ); // set settings
107
-
108
-				if ( is_admin() ) {
109
-					add_action( 'admin_menu', array( self::$instance, 'menu_item' ) );
110
-					add_action( 'admin_init', array( self::$instance, 'register_settings' ) );
111
-
112
-					// Maybe show example page
113
-					add_action( 'template_redirect', array( self::$instance,'maybe_show_examples' ) );
114
-
115
-					if ( defined( 'BLOCKSTRAP_VERSION' ) ) {
116
-						add_filter( 'sd_aui_colors', array( self::$instance,'sd_aui_colors' ), 10, 3 );
117
-					}
118
-				}
24
+    /**
25
+     * A Class to be able to change settings for Font Awesome.
26
+     *
27
+     * Class AyeCode_UI_Settings
28
+     * @ver 1.0.0
29
+     * @todo decide how to implement textdomain
30
+     */
31
+    class AyeCode_UI_Settings {
32
+
33
+        /**
34
+         * Class version version.
35
+         *
36
+         * @var string
37
+         */
38
+        public $version = '0.2.22';
39
+
40
+        /**
41
+         * Class textdomain.
42
+         *
43
+         * @var string
44
+         */
45
+        public $textdomain = 'aui';
119 46
 
120
-				add_action( 'customize_register', array( self::$instance, 'customizer_settings' ));
47
+        /**
48
+         * Latest version of Bootstrap at time of publish published.
49
+         *
50
+         * @var string
51
+         */
52
+        public $latest = "5.2.2";
53
+
54
+        /**
55
+         * Current version of select2 being used.
56
+         *
57
+         * @var string
58
+         */
59
+        public $select2_version = "4.0.11";
121 60
 
122
-				do_action( 'ayecode_ui_settings_loaded' );
123
-			}
61
+        /**
62
+         * The title.
63
+         *
64
+         * @var string
65
+         */
66
+        public $name = 'AyeCode UI';
124 67
 
125
-			return self::$instance;
126
-		}
68
+        /**
69
+         * The relative url to the assets.
70
+         *
71
+         * @var string
72
+         */
73
+        public $url = '';
127 74
 
128
-		/**
129
-		 * Add custom colors to the color selector.
130
-		 *
131
-		 * @param $theme_colors
132
-		 * @param $include_outlines
133
-		 * @param $include_branding
134
-		 *
135
-		 * @return mixed
136
-		 */
137
-		public function sd_aui_colors( $theme_colors, $include_outlines, $include_branding ){
75
+        /**
76
+         * Holds the settings values.
77
+         *
78
+         * @var array
79
+         */
80
+        private $settings;
138 81
 
82
+        /**
83
+         * AyeCode_UI_Settings instance.
84
+         *
85
+         * @access private
86
+         * @since  1.0.0
87
+         * @var    AyeCode_UI_Settings There can be only one!
88
+         */
89
+        private static $instance = null;
139 90
 
140
-			$setting = wp_get_global_settings();
141 91
 
142
-			if(!empty($setting['color']['palette']['custom'])){
143
-				foreach($setting['color']['palette']['custom'] as $color){
144
-					$theme_colors[$color['slug']] = esc_attr($color['name']);
145
-				}
146
-			}
147
-
148
-			return $theme_colors;
149
-		}
150
-
151
-		/**
152
-		 * Setup some constants.
153
-		 */
154
-		public function constants(){
155
-			define( 'AUI_PRIMARY_COLOR_ORIGINAL', "#1e73be" );
156
-			define( 'AUI_SECONDARY_COLOR_ORIGINAL', '#6c757d' );
157
-			define( 'AUI_INFO_COLOR_ORIGINAL', '#17a2b8' );
158
-			define( 'AUI_WARNING_COLOR_ORIGINAL', '#ffc107' );
159
-			define( 'AUI_DANGER_COLOR_ORIGINAL', '#dc3545' );
160
-			define( 'AUI_SUCCESS_COLOR_ORIGINAL', '#44c553' );
161
-			define( 'AUI_LIGHT_COLOR_ORIGINAL', '#f8f9fa' );
162
-			define( 'AUI_DARK_COLOR_ORIGINAL', '#343a40' );
163
-			define( 'AUI_WHITE_COLOR_ORIGINAL', '#fff' );
164
-			define( 'AUI_PURPLE_COLOR_ORIGINAL', '#ad6edd' );
165
-			define( 'AUI_SALMON_COLOR_ORIGINAL', '#ff977a' );
166
-			define( 'AUI_CYAN_COLOR_ORIGINAL', '#35bdff' );
167
-			define( 'AUI_GRAY_COLOR_ORIGINAL', '#ced4da' );
168
-			define( 'AUI_INDIGO_COLOR_ORIGINAL', '#502c6c' );
169
-			define( 'AUI_ORANGE_COLOR_ORIGINAL', '#orange' );
170
-			define( 'AUI_BLACK_COLOR_ORIGINAL', '#000' );
171
-
172
-			if ( ! defined( 'AUI_PRIMARY_COLOR' ) ) {
173
-				define( 'AUI_PRIMARY_COLOR', AUI_PRIMARY_COLOR_ORIGINAL );
174
-			}
175
-			if ( ! defined( 'AUI_SECONDARY_COLOR' ) ) {
176
-				define( 'AUI_SECONDARY_COLOR', AUI_SECONDARY_COLOR_ORIGINAL );
177
-			}
178
-			if ( ! defined( 'AUI_INFO_COLOR' ) ) {
179
-				define( 'AUI_INFO_COLOR', AUI_INFO_COLOR_ORIGINAL );
180
-			}
181
-			if ( ! defined( 'AUI_WARNING_COLOR' ) ) {
182
-				define( 'AUI_WARNING_COLOR', AUI_WARNING_COLOR_ORIGINAL );
183
-			}
184
-			if ( ! defined( 'AUI_DANGER_COLOR' ) ) {
185
-				define( 'AUI_DANGER_COLOR', AUI_DANGER_COLOR_ORIGINAL );
186
-			}
187
-			if ( ! defined( 'AUI_SUCCESS_COLOR' ) ) {
188
-				define( 'AUI_SUCCESS_COLOR', AUI_SUCCESS_COLOR_ORIGINAL );
189
-			}
190
-			if ( ! defined( 'AUI_LIGHT_COLOR' ) ) {
191
-				define( 'AUI_LIGHT_COLOR', AUI_LIGHT_COLOR_ORIGINAL );
192
-			}
193
-			if ( ! defined( 'AUI_DARK_COLOR' ) ) {
194
-				define( 'AUI_DARK_COLOR', AUI_DARK_COLOR_ORIGINAL );
195
-			}
196
-			if ( ! defined( 'AUI_WHITE_COLOR' ) ) {
197
-				define( 'AUI_WHITE_COLOR', AUI_WHITE_COLOR_ORIGINAL );
198
-			}
199
-			if ( ! defined( 'AUI_PURPLE_COLOR' ) ) {
200
-				define( 'AUI_PURPLE_COLOR', AUI_PURPLE_COLOR_ORIGINAL );
201
-			}
202
-			if ( ! defined( 'AUI_SALMON_COLOR' ) ) {
203
-				define( 'AUI_SALMON_COLOR', AUI_SALMON_COLOR_ORIGINAL );
204
-			}
205
-			if ( ! defined( 'AUI_CYAN_COLOR' ) ) {
206
-				define( 'AUI_CYAN_COLOR', AUI_CYAN_COLOR_ORIGINAL );
207
-			}
208
-			if ( ! defined( 'AUI_GRAY_COLOR' ) ) {
209
-				define( 'AUI_GRAY_COLOR', AUI_GRAY_COLOR_ORIGINAL );
210
-			}
211
-			if ( ! defined( 'AUI_INDIGO_COLOR' ) ) {
212
-				define( 'AUI_INDIGO_COLOR', AUI_INDIGO_COLOR_ORIGINAL );
213
-			}
214
-			if ( ! defined( 'AUI_ORANGE_COLOR' ) ) {
215
-				define( 'AUI_ORANGE_COLOR', AUI_ORANGE_COLOR_ORIGINAL );
216
-			}
217
-			if ( ! defined( 'AUI_BLACK_COLOR' ) ) {
218
-				define( 'AUI_BLACK_COLOR', AUI_BLACK_COLOR_ORIGINAL );
219
-			}
220
-
221
-		}
222
-
223
-		public static function get_colors( $original = false){
224
-
225
-			if ( ! defined( 'AUI_PRIMARY_COLOR' ) ) {
226
-				return array();
227
-			}
228
-			if ( $original ) {
229
-				return array(
230
-					'primary'   => AUI_PRIMARY_COLOR_ORIGINAL,
231
-					'secondary' => AUI_SECONDARY_COLOR_ORIGINAL,
232
-					'info'      => AUI_INFO_COLOR_ORIGINAL,
233
-					'warning'   => AUI_WARNING_COLOR_ORIGINAL,
234
-					'danger'    => AUI_DANGER_COLOR_ORIGINAL,
235
-					'success'   => AUI_SUCCESS_COLOR_ORIGINAL,
236
-					'light'     => AUI_LIGHT_COLOR_ORIGINAL,
237
-					'dark'      => AUI_DARK_COLOR_ORIGINAL,
238
-					'white'     => AUI_WHITE_COLOR_ORIGINAL,
239
-					'purple'    => AUI_PURPLE_COLOR_ORIGINAL,
240
-					'salmon'    => AUI_SALMON_COLOR_ORIGINAL,
241
-					'cyan'      => AUI_CYAN_COLOR_ORIGINAL,
242
-					'gray'      => AUI_GRAY_COLOR_ORIGINAL,
243
-					'indigo'    => AUI_INDIGO_COLOR_ORIGINAL,
244
-					'orange'    => AUI_ORANGE_COLOR_ORIGINAL,
245
-					'black'     => AUI_BLACK_COLOR_ORIGINAL,
246
-				);
247
-			}
248
-
249
-			return array(
250
-				'primary'   => AUI_PRIMARY_COLOR,
251
-				'secondary' => AUI_SECONDARY_COLOR,
252
-				'info'      => AUI_INFO_COLOR,
253
-				'warning'   => AUI_WARNING_COLOR,
254
-				'danger'    => AUI_DANGER_COLOR,
255
-				'success'   => AUI_SUCCESS_COLOR,
256
-				'light'     => AUI_LIGHT_COLOR,
257
-				'dark'      => AUI_DARK_COLOR,
258
-				'white'     => AUI_WHITE_COLOR,
259
-				'purple'    => AUI_PURPLE_COLOR,
260
-				'salmon'    => AUI_SALMON_COLOR,
261
-				'cyan'      => AUI_CYAN_COLOR,
262
-				'gray'      => AUI_GRAY_COLOR,
263
-				'indigo'    => AUI_INDIGO_COLOR,
264
-				'orange'    => AUI_ORANGE_COLOR,
265
-				'black'     => AUI_BLACK_COLOR,
266
-			);
267
-		}
268
-
269
-		/**
270
-		 * Add admin body class to show when BS5 is active.
271
-		 *
272
-		 * @param $classes
273
-		 *
274
-		 * @return mixed
275
-		 */
276
-		public function add_bs5_admin_body_class( $classes = '' ) {
277
-			$classes .= ' aui_bs5';
278
-
279
-			return $classes;
280
-		}
281
-
282
-		/**
283
-		 * Add a body class to show when BS5 is active.
284
-		 *
285
-		 * @param $classes
286
-		 *
287
-		 * @return mixed
288
-		 */
289
-		public function add_bs5_body_class( $classes ) {
290
-			$classes[] = 'aui_bs5';
291
-
292
-			return $classes;
293
-		}
294
-
295
-		/**
296
-		 * Initiate the settings and add the required action hooks.
297
-		 */
298
-		public function init() {
92
+        /**
93
+         * Main AyeCode_UI_Settings Instance.
94
+         *
95
+         * Ensures only one instance of AyeCode_UI_Settings is loaded or can be loaded.
96
+         *
97
+         * @since 1.0.0
98
+         * @static
99
+         * @return AyeCode_UI_Settings - Main instance.
100
+         */
101
+        public static function instance() {
102
+            if ( ! isset( self::$instance ) && ! ( self::$instance instanceof AyeCode_UI_Settings ) ) {
103
+
104
+                self::$instance = new AyeCode_UI_Settings;
105
+
106
+                add_action( 'init', array( self::$instance, 'init' ) ); // set settings
107
+
108
+                if ( is_admin() ) {
109
+                    add_action( 'admin_menu', array( self::$instance, 'menu_item' ) );
110
+                    add_action( 'admin_init', array( self::$instance, 'register_settings' ) );
111
+
112
+                    // Maybe show example page
113
+                    add_action( 'template_redirect', array( self::$instance,'maybe_show_examples' ) );
114
+
115
+                    if ( defined( 'BLOCKSTRAP_VERSION' ) ) {
116
+                        add_filter( 'sd_aui_colors', array( self::$instance,'sd_aui_colors' ), 10, 3 );
117
+                    }
118
+                }
119
+
120
+                add_action( 'customize_register', array( self::$instance, 'customizer_settings' ));
121
+
122
+                do_action( 'ayecode_ui_settings_loaded' );
123
+            }
124
+
125
+            return self::$instance;
126
+        }
127
+
128
+        /**
129
+         * Add custom colors to the color selector.
130
+         *
131
+         * @param $theme_colors
132
+         * @param $include_outlines
133
+         * @param $include_branding
134
+         *
135
+         * @return mixed
136
+         */
137
+        public function sd_aui_colors( $theme_colors, $include_outlines, $include_branding ){
138
+
139
+
140
+            $setting = wp_get_global_settings();
141
+
142
+            if(!empty($setting['color']['palette']['custom'])){
143
+                foreach($setting['color']['palette']['custom'] as $color){
144
+                    $theme_colors[$color['slug']] = esc_attr($color['name']);
145
+                }
146
+            }
147
+
148
+            return $theme_colors;
149
+        }
150
+
151
+        /**
152
+         * Setup some constants.
153
+         */
154
+        public function constants(){
155
+            define( 'AUI_PRIMARY_COLOR_ORIGINAL', "#1e73be" );
156
+            define( 'AUI_SECONDARY_COLOR_ORIGINAL', '#6c757d' );
157
+            define( 'AUI_INFO_COLOR_ORIGINAL', '#17a2b8' );
158
+            define( 'AUI_WARNING_COLOR_ORIGINAL', '#ffc107' );
159
+            define( 'AUI_DANGER_COLOR_ORIGINAL', '#dc3545' );
160
+            define( 'AUI_SUCCESS_COLOR_ORIGINAL', '#44c553' );
161
+            define( 'AUI_LIGHT_COLOR_ORIGINAL', '#f8f9fa' );
162
+            define( 'AUI_DARK_COLOR_ORIGINAL', '#343a40' );
163
+            define( 'AUI_WHITE_COLOR_ORIGINAL', '#fff' );
164
+            define( 'AUI_PURPLE_COLOR_ORIGINAL', '#ad6edd' );
165
+            define( 'AUI_SALMON_COLOR_ORIGINAL', '#ff977a' );
166
+            define( 'AUI_CYAN_COLOR_ORIGINAL', '#35bdff' );
167
+            define( 'AUI_GRAY_COLOR_ORIGINAL', '#ced4da' );
168
+            define( 'AUI_INDIGO_COLOR_ORIGINAL', '#502c6c' );
169
+            define( 'AUI_ORANGE_COLOR_ORIGINAL', '#orange' );
170
+            define( 'AUI_BLACK_COLOR_ORIGINAL', '#000' );
171
+
172
+            if ( ! defined( 'AUI_PRIMARY_COLOR' ) ) {
173
+                define( 'AUI_PRIMARY_COLOR', AUI_PRIMARY_COLOR_ORIGINAL );
174
+            }
175
+            if ( ! defined( 'AUI_SECONDARY_COLOR' ) ) {
176
+                define( 'AUI_SECONDARY_COLOR', AUI_SECONDARY_COLOR_ORIGINAL );
177
+            }
178
+            if ( ! defined( 'AUI_INFO_COLOR' ) ) {
179
+                define( 'AUI_INFO_COLOR', AUI_INFO_COLOR_ORIGINAL );
180
+            }
181
+            if ( ! defined( 'AUI_WARNING_COLOR' ) ) {
182
+                define( 'AUI_WARNING_COLOR', AUI_WARNING_COLOR_ORIGINAL );
183
+            }
184
+            if ( ! defined( 'AUI_DANGER_COLOR' ) ) {
185
+                define( 'AUI_DANGER_COLOR', AUI_DANGER_COLOR_ORIGINAL );
186
+            }
187
+            if ( ! defined( 'AUI_SUCCESS_COLOR' ) ) {
188
+                define( 'AUI_SUCCESS_COLOR', AUI_SUCCESS_COLOR_ORIGINAL );
189
+            }
190
+            if ( ! defined( 'AUI_LIGHT_COLOR' ) ) {
191
+                define( 'AUI_LIGHT_COLOR', AUI_LIGHT_COLOR_ORIGINAL );
192
+            }
193
+            if ( ! defined( 'AUI_DARK_COLOR' ) ) {
194
+                define( 'AUI_DARK_COLOR', AUI_DARK_COLOR_ORIGINAL );
195
+            }
196
+            if ( ! defined( 'AUI_WHITE_COLOR' ) ) {
197
+                define( 'AUI_WHITE_COLOR', AUI_WHITE_COLOR_ORIGINAL );
198
+            }
199
+            if ( ! defined( 'AUI_PURPLE_COLOR' ) ) {
200
+                define( 'AUI_PURPLE_COLOR', AUI_PURPLE_COLOR_ORIGINAL );
201
+            }
202
+            if ( ! defined( 'AUI_SALMON_COLOR' ) ) {
203
+                define( 'AUI_SALMON_COLOR', AUI_SALMON_COLOR_ORIGINAL );
204
+            }
205
+            if ( ! defined( 'AUI_CYAN_COLOR' ) ) {
206
+                define( 'AUI_CYAN_COLOR', AUI_CYAN_COLOR_ORIGINAL );
207
+            }
208
+            if ( ! defined( 'AUI_GRAY_COLOR' ) ) {
209
+                define( 'AUI_GRAY_COLOR', AUI_GRAY_COLOR_ORIGINAL );
210
+            }
211
+            if ( ! defined( 'AUI_INDIGO_COLOR' ) ) {
212
+                define( 'AUI_INDIGO_COLOR', AUI_INDIGO_COLOR_ORIGINAL );
213
+            }
214
+            if ( ! defined( 'AUI_ORANGE_COLOR' ) ) {
215
+                define( 'AUI_ORANGE_COLOR', AUI_ORANGE_COLOR_ORIGINAL );
216
+            }
217
+            if ( ! defined( 'AUI_BLACK_COLOR' ) ) {
218
+                define( 'AUI_BLACK_COLOR', AUI_BLACK_COLOR_ORIGINAL );
219
+            }
220
+
221
+        }
222
+
223
+        public static function get_colors( $original = false){
224
+
225
+            if ( ! defined( 'AUI_PRIMARY_COLOR' ) ) {
226
+                return array();
227
+            }
228
+            if ( $original ) {
229
+                return array(
230
+                    'primary'   => AUI_PRIMARY_COLOR_ORIGINAL,
231
+                    'secondary' => AUI_SECONDARY_COLOR_ORIGINAL,
232
+                    'info'      => AUI_INFO_COLOR_ORIGINAL,
233
+                    'warning'   => AUI_WARNING_COLOR_ORIGINAL,
234
+                    'danger'    => AUI_DANGER_COLOR_ORIGINAL,
235
+                    'success'   => AUI_SUCCESS_COLOR_ORIGINAL,
236
+                    'light'     => AUI_LIGHT_COLOR_ORIGINAL,
237
+                    'dark'      => AUI_DARK_COLOR_ORIGINAL,
238
+                    'white'     => AUI_WHITE_COLOR_ORIGINAL,
239
+                    'purple'    => AUI_PURPLE_COLOR_ORIGINAL,
240
+                    'salmon'    => AUI_SALMON_COLOR_ORIGINAL,
241
+                    'cyan'      => AUI_CYAN_COLOR_ORIGINAL,
242
+                    'gray'      => AUI_GRAY_COLOR_ORIGINAL,
243
+                    'indigo'    => AUI_INDIGO_COLOR_ORIGINAL,
244
+                    'orange'    => AUI_ORANGE_COLOR_ORIGINAL,
245
+                    'black'     => AUI_BLACK_COLOR_ORIGINAL,
246
+                );
247
+            }
248
+
249
+            return array(
250
+                'primary'   => AUI_PRIMARY_COLOR,
251
+                'secondary' => AUI_SECONDARY_COLOR,
252
+                'info'      => AUI_INFO_COLOR,
253
+                'warning'   => AUI_WARNING_COLOR,
254
+                'danger'    => AUI_DANGER_COLOR,
255
+                'success'   => AUI_SUCCESS_COLOR,
256
+                'light'     => AUI_LIGHT_COLOR,
257
+                'dark'      => AUI_DARK_COLOR,
258
+                'white'     => AUI_WHITE_COLOR,
259
+                'purple'    => AUI_PURPLE_COLOR,
260
+                'salmon'    => AUI_SALMON_COLOR,
261
+                'cyan'      => AUI_CYAN_COLOR,
262
+                'gray'      => AUI_GRAY_COLOR,
263
+                'indigo'    => AUI_INDIGO_COLOR,
264
+                'orange'    => AUI_ORANGE_COLOR,
265
+                'black'     => AUI_BLACK_COLOR,
266
+            );
267
+        }
268
+
269
+        /**
270
+         * Add admin body class to show when BS5 is active.
271
+         *
272
+         * @param $classes
273
+         *
274
+         * @return mixed
275
+         */
276
+        public function add_bs5_admin_body_class( $classes = '' ) {
277
+            $classes .= ' aui_bs5';
278
+
279
+            return $classes;
280
+        }
281
+
282
+        /**
283
+         * Add a body class to show when BS5 is active.
284
+         *
285
+         * @param $classes
286
+         *
287
+         * @return mixed
288
+         */
289
+        public function add_bs5_body_class( $classes ) {
290
+            $classes[] = 'aui_bs5';
291
+
292
+            return $classes;
293
+        }
294
+
295
+        /**
296
+         * Initiate the settings and add the required action hooks.
297
+         */
298
+        public function init() {
299 299
             global $aui_bs5;
300 300
 
301
-			// Maybe fix settings
302
-			if ( ! empty( $_REQUEST['aui-fix-admin'] ) && !empty($_REQUEST['nonce']) && wp_verify_nonce( $_REQUEST['nonce'], "aui-fix-admin" ) ) {
303
-				$db_settings = get_option( 'ayecode-ui-settings' );
304
-				if ( ! empty( $db_settings ) ) {
305
-					$db_settings['css_backend'] = 'compatibility';
306
-					$db_settings['js_backend'] = 'core-popper';
307
-					update_option( 'ayecode-ui-settings', $db_settings );
308
-					wp_safe_redirect(admin_url("options-general.php?page=ayecode-ui-settings&updated=true"));
309
-				}
310
-			}
301
+            // Maybe fix settings
302
+            if ( ! empty( $_REQUEST['aui-fix-admin'] ) && !empty($_REQUEST['nonce']) && wp_verify_nonce( $_REQUEST['nonce'], "aui-fix-admin" ) ) {
303
+                $db_settings = get_option( 'ayecode-ui-settings' );
304
+                if ( ! empty( $db_settings ) ) {
305
+                    $db_settings['css_backend'] = 'compatibility';
306
+                    $db_settings['js_backend'] = 'core-popper';
307
+                    update_option( 'ayecode-ui-settings', $db_settings );
308
+                    wp_safe_redirect(admin_url("options-general.php?page=ayecode-ui-settings&updated=true"));
309
+                }
310
+            }
311 311
 
312
-			$this->constants();
313
-			$this->settings = $this->get_settings();
314
-			$this->url = $this->get_url();
312
+            $this->constants();
313
+            $this->settings = $this->get_settings();
314
+            $this->url = $this->get_url();
315 315
 
316 316
             // define the version
317
-			$aui_bs5 = $this->settings['bs_ver'] === '5';
318
-
319
-			if ( $aui_bs5 ) {
320
-				include_once( dirname( __FILE__ ) . '/inc/bs-conversion.php' );
321
-				add_filter( 'admin_body_class', array( $this, 'add_bs5_admin_body_class' ), 99, 1 );
322
-				add_filter( 'body_class', array( $this, 'add_bs5_body_class' ) );
323
-			}
324
-
325
-			/**
326
-			 * Maybe load CSS
327
-			 *
328
-			 * We load super early in case there is a theme version that might change the colors
329
-			 */
330
-			if ( $this->settings['css'] ) {
331
-				$priority = $this->is_bs3_compat() ? 100 : 1;
317
+            $aui_bs5 = $this->settings['bs_ver'] === '5';
318
+
319
+            if ( $aui_bs5 ) {
320
+                include_once( dirname( __FILE__ ) . '/inc/bs-conversion.php' );
321
+                add_filter( 'admin_body_class', array( $this, 'add_bs5_admin_body_class' ), 99, 1 );
322
+                add_filter( 'body_class', array( $this, 'add_bs5_body_class' ) );
323
+            }
324
+
325
+            /**
326
+             * Maybe load CSS
327
+             *
328
+             * We load super early in case there is a theme version that might change the colors
329
+             */
330
+            if ( $this->settings['css'] ) {
331
+                $priority = $this->is_bs3_compat() ? 100 : 1;
332 332
                 $priority = $aui_bs5 ? 10 : $priority;
333
-				add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_style' ), $priority );
334
-			}
335
-			if ( $this->settings['css_backend'] && $this->load_admin_scripts() ) {
336
-				add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_style' ), 1 );
337
-			}
338
-
339
-			// maybe load JS
340
-			if ( $this->settings['js'] ) {
341
-				$priority = $this->is_bs3_compat() ? 100 : 1;
342
-				add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), $priority );
343
-			}
344
-			if ( $this->settings['js_backend'] && $this->load_admin_scripts() ) {
345
-				add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ), 1 );
346
-			}
347
-
348
-			// Maybe set the HTML font size
349
-			if ( $this->settings['html_font_size'] ) {
350
-				add_action( 'wp_footer', array( $this, 'html_font_size' ), 10 );
351
-			}
352
-
353
-			// Maybe show backend style error
354
-			if( $this->settings['css_backend'] != 'compatibility' || $this->settings['js_backend'] != 'core-popper' ){
355
-				add_action( 'admin_notices', array( $this, 'show_admin_style_notice' ) );
356
-			}
357
-
358
-		}
359
-
360
-		/**
361
-		 * Show admin notice if backend scripts not loaded.
362
-		 */
363
-		public function show_admin_style_notice(){
364
-			$fix_url = admin_url("options-general.php?page=ayecode-ui-settings&aui-fix-admin=true&nonce=".wp_create_nonce('aui-fix-admin'));
365
-			$button = '<a href="'.esc_url($fix_url).'" class="button-primary">Fix Now</a>';
366
-			$message = __( '<b>Style Issue:</b> AyeCode UI is disable or set wrong.')." " .$button;
367
-			echo '<div class="notice notice-error aui-settings-error-notice"><p>'. wp_kses_post( $message ).'</p></div>';
368
-		}
369
-
370
-		/**
371
-		 * Check if we should load the admin scripts or not.
372
-		 *
373
-		 * @return bool
374
-		 */
375
-		public function load_admin_scripts(){
376
-			$result = true;
377
-
378
-			// check if specifically disabled
379
-			if(!empty($this->settings['disable_admin'])){
380
-				$url_parts = explode("\n",$this->settings['disable_admin']);
381
-				foreach($url_parts as $part){
382
-					if( strpos($_SERVER['REQUEST_URI'], trim($part)) !== false ){
383
-						return false; // return early, no point checking further
384
-					}
385
-				}
386
-			}
387
-
388
-			return $result;
389
-		}
390
-
391
-		/**
392
-		 * Add a html font size to the footer.
393
-		 */
394
-		public function html_font_size(){
395
-			$this->settings = $this->get_settings();
396
-			echo "<style>html{font-size:".absint($this->settings['html_font_size'])."px;}</style>";
397
-		}
398
-
399
-		/**
400
-		 * Check if the current admin screen should load scripts.
401
-		 *
402
-		 * @return bool
403
-		 */
404
-		public function is_aui_screen(){
333
+                add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_style' ), $priority );
334
+            }
335
+            if ( $this->settings['css_backend'] && $this->load_admin_scripts() ) {
336
+                add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_style' ), 1 );
337
+            }
338
+
339
+            // maybe load JS
340
+            if ( $this->settings['js'] ) {
341
+                $priority = $this->is_bs3_compat() ? 100 : 1;
342
+                add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), $priority );
343
+            }
344
+            if ( $this->settings['js_backend'] && $this->load_admin_scripts() ) {
345
+                add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ), 1 );
346
+            }
347
+
348
+            // Maybe set the HTML font size
349
+            if ( $this->settings['html_font_size'] ) {
350
+                add_action( 'wp_footer', array( $this, 'html_font_size' ), 10 );
351
+            }
352
+
353
+            // Maybe show backend style error
354
+            if( $this->settings['css_backend'] != 'compatibility' || $this->settings['js_backend'] != 'core-popper' ){
355
+                add_action( 'admin_notices', array( $this, 'show_admin_style_notice' ) );
356
+            }
357
+
358
+        }
359
+
360
+        /**
361
+         * Show admin notice if backend scripts not loaded.
362
+         */
363
+        public function show_admin_style_notice(){
364
+            $fix_url = admin_url("options-general.php?page=ayecode-ui-settings&aui-fix-admin=true&nonce=".wp_create_nonce('aui-fix-admin'));
365
+            $button = '<a href="'.esc_url($fix_url).'" class="button-primary">Fix Now</a>';
366
+            $message = __( '<b>Style Issue:</b> AyeCode UI is disable or set wrong.')." " .$button;
367
+            echo '<div class="notice notice-error aui-settings-error-notice"><p>'. wp_kses_post( $message ).'</p></div>';
368
+        }
369
+
370
+        /**
371
+         * Check if we should load the admin scripts or not.
372
+         *
373
+         * @return bool
374
+         */
375
+        public function load_admin_scripts(){
376
+            $result = true;
377
+
378
+            // check if specifically disabled
379
+            if(!empty($this->settings['disable_admin'])){
380
+                $url_parts = explode("\n",$this->settings['disable_admin']);
381
+                foreach($url_parts as $part){
382
+                    if( strpos($_SERVER['REQUEST_URI'], trim($part)) !== false ){
383
+                        return false; // return early, no point checking further
384
+                    }
385
+                }
386
+            }
387
+
388
+            return $result;
389
+        }
390
+
391
+        /**
392
+         * Add a html font size to the footer.
393
+         */
394
+        public function html_font_size(){
395
+            $this->settings = $this->get_settings();
396
+            echo "<style>html{font-size:".absint($this->settings['html_font_size'])."px;}</style>";
397
+        }
398
+
399
+        /**
400
+         * Check if the current admin screen should load scripts.
401
+         *
402
+         * @return bool
403
+         */
404
+        public function is_aui_screen(){
405 405
 //			echo '###';exit;
406
-			$load = false;
407
-			// check if we should load or not
408
-			if ( is_admin() ) {
409
-				// Only enable on set pages
410
-				$aui_screens = array(
411
-					'page',
406
+            $load = false;
407
+            // check if we should load or not
408
+            if ( is_admin() ) {
409
+                // Only enable on set pages
410
+                $aui_screens = array(
411
+                    'page',
412 412
                     //'docs',
413
-					'post',
414
-					'settings_page_ayecode-ui-settings',
415
-					'appearance_page_gutenberg-widgets',
416
-					'widgets',
417
-					'ayecode-ui-settings',
418
-					'site-editor'
419
-				);
420
-				$screen_ids = apply_filters( 'aui_screen_ids', $aui_screens );
413
+                    'post',
414
+                    'settings_page_ayecode-ui-settings',
415
+                    'appearance_page_gutenberg-widgets',
416
+                    'widgets',
417
+                    'ayecode-ui-settings',
418
+                    'site-editor'
419
+                );
420
+                $screen_ids = apply_filters( 'aui_screen_ids', $aui_screens );
421 421
 
422
-				$screen = get_current_screen();
422
+                $screen = get_current_screen();
423 423
 
424 424
 //				echo '###'.$screen->id;
425 425
 
426
-				// check if we are on a AUI screen
427
-				if ( $screen && in_array( $screen->id, $screen_ids ) ) {
428
-					$load = true;
429
-				}
426
+                // check if we are on a AUI screen
427
+                if ( $screen && in_array( $screen->id, $screen_ids ) ) {
428
+                    $load = true;
429
+                }
430 430
 
431
-				//load for widget previews in WP 5.8
432
-				if( !empty($_REQUEST['legacy-widget-preview'])){
433
-					$load = true;
434
-				}
435
-			}
431
+                //load for widget previews in WP 5.8
432
+                if( !empty($_REQUEST['legacy-widget-preview'])){
433
+                    $load = true;
434
+                }
435
+            }
436 436
 
437 437
 
438 438
 
439
-			return apply_filters( 'aui_load_on_admin' , $load );
440
-		}
439
+            return apply_filters( 'aui_load_on_admin' , $load );
440
+        }
441 441
 
442
-		/**
443
-		 * Check if the current theme is a block theme.
444
-		 *
445
-		 * @return bool
446
-		 */
447
-		public static function is_block_theme() {
448
-			if ( function_exists( 'wp_is_block_theme' && wp_is_block_theme() ) ) {
449
-				return true;
450
-			}
442
+        /**
443
+         * Check if the current theme is a block theme.
444
+         *
445
+         * @return bool
446
+         */
447
+        public static function is_block_theme() {
448
+            if ( function_exists( 'wp_is_block_theme' && wp_is_block_theme() ) ) {
449
+                return true;
450
+            }
451 451
 
452
-			return false;
453
-		}
452
+            return false;
453
+        }
454 454
 
455
-		/**
456
-		 * Adds the styles.
457
-		 */
458
-		public function enqueue_style() {
455
+        /**
456
+         * Adds the styles.
457
+         */
458
+        public function enqueue_style() {
459 459
             global $aui_bs5;
460 460
 
461 461
             $load_fse = false;
462 462
 
463
-			if( is_admin() && !$this->is_aui_screen()){
464
-				// don't add wp-admin scripts if not requested to
465
-			}else{
466
-				$css_setting = current_action() == 'wp_enqueue_scripts' ? 'css' : 'css_backend';
463
+            if( is_admin() && !$this->is_aui_screen()){
464
+                // don't add wp-admin scripts if not requested to
465
+            }else{
466
+                $css_setting = current_action() == 'wp_enqueue_scripts' ? 'css' : 'css_backend';
467 467
 
468
-				$rtl = is_rtl() && ! $aui_bs5 ? '-rtl' : '';
468
+                $rtl = is_rtl() && ! $aui_bs5 ? '-rtl' : '';
469 469
 
470 470
                 $bs_ver = $this->settings['bs_ver'] == '5' ? '-v5' : '';
471 471
 
472
-				if($this->settings[$css_setting]){
473
-					$compatibility = $this->settings[$css_setting]=='core' ? false : true;
474
-					$url = $this->settings[$css_setting]=='core' ? $this->url.'assets'.$bs_ver.'/css/ayecode-ui'.$rtl.'.css' : $this->url.'assets'.$bs_ver.'/css/ayecode-ui-compatibility'.$rtl.'.css';
472
+                if($this->settings[$css_setting]){
473
+                    $compatibility = $this->settings[$css_setting]=='core' ? false : true;
474
+                    $url = $this->settings[$css_setting]=='core' ? $this->url.'assets'.$bs_ver.'/css/ayecode-ui'.$rtl.'.css' : $this->url.'assets'.$bs_ver.'/css/ayecode-ui-compatibility'.$rtl.'.css';
475 475
 
476 476
 
477 477
 
478
-					wp_register_style( 'ayecode-ui', $url, array(), $this->version );
479
-					wp_enqueue_style( 'ayecode-ui' );
478
+                    wp_register_style( 'ayecode-ui', $url, array(), $this->version );
479
+                    wp_enqueue_style( 'ayecode-ui' );
480 480
 
481
-					$current_screen = function_exists('get_current_screen' ) ? get_current_screen() : '';
481
+                    $current_screen = function_exists('get_current_screen' ) ? get_current_screen() : '';
482 482
 
483 483
 //					if ( is_admin() && !empty($_REQUEST['postType']) ) {
484
-					if ( is_admin() && ( !empty($_REQUEST['postType']) || $current_screen->is_block_editor() ) && ( defined( 'BLOCKSTRAP_VERSION' ) || defined( 'AUI_FSE' ) )  ) {
485
-						$url = $this->url.'assets'.$bs_ver.'/css/ayecode-ui-fse.css';
486
-						wp_register_style( 'ayecode-ui-fse', $url, array(), $this->version );
487
-						wp_enqueue_style( 'ayecode-ui-fse' );
488
-						$load_fse = true;
489
-					}
484
+                    if ( is_admin() && ( !empty($_REQUEST['postType']) || $current_screen->is_block_editor() ) && ( defined( 'BLOCKSTRAP_VERSION' ) || defined( 'AUI_FSE' ) )  ) {
485
+                        $url = $this->url.'assets'.$bs_ver.'/css/ayecode-ui-fse.css';
486
+                        wp_register_style( 'ayecode-ui-fse', $url, array(), $this->version );
487
+                        wp_enqueue_style( 'ayecode-ui-fse' );
488
+                        $load_fse = true;
489
+                    }
490 490
 
491 491
 
492
-					// flatpickr
493
-					wp_register_style( 'flatpickr', $this->url.'assets'.$bs_ver.'/css/flatpickr.min.css', array(), $this->version );
492
+                    // flatpickr
493
+                    wp_register_style( 'flatpickr', $this->url.'assets'.$bs_ver.'/css/flatpickr.min.css', array(), $this->version );
494 494
 
495
-					// fix some wp-admin issues
496
-					if(is_admin()){
497
-						$custom_css = "
495
+                    // fix some wp-admin issues
496
+                    if(is_admin()){
497
+                        $custom_css = "
498 498
                 body{
499 499
                     background-color: #f1f1f1;
500 500
                     font-family: -apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;
@@ -535,67 +535,67 @@  discard block
 block discarded – undo
535 535
 				}
536 536
                 ";
537 537
 
538
-						// @todo, remove once fixed :: fix for this bug https://github.com/WordPress/gutenberg/issues/14377
539
-						$custom_css .= "
538
+                        // @todo, remove once fixed :: fix for this bug https://github.com/WordPress/gutenberg/issues/14377
539
+                        $custom_css .= "
540 540
 						.edit-post-sidebar input[type=color].components-text-control__input{
541 541
 						    padding: 0;
542 542
 						}
543 543
 					";
544
-						wp_add_inline_style( 'ayecode-ui', $custom_css );
545
-					}
544
+                        wp_add_inline_style( 'ayecode-ui', $custom_css );
545
+                    }
546 546
 
547
-					// custom changes
548
-					if ( $load_fse ) {
549
-						wp_add_inline_style( 'ayecode-ui-fse', self::custom_css($compatibility) );
550
-					}else{
551
-						wp_add_inline_style( 'ayecode-ui', self::custom_css($compatibility) );
547
+                    // custom changes
548
+                    if ( $load_fse ) {
549
+                        wp_add_inline_style( 'ayecode-ui-fse', self::custom_css($compatibility) );
550
+                    }else{
551
+                        wp_add_inline_style( 'ayecode-ui', self::custom_css($compatibility) );
552 552
 
553
-					}
553
+                    }
554 554
 
555
-				}
556
-			}
555
+                }
556
+            }
557 557
 
558 558
 
559
-		}
559
+        }
560 560
 
561
-		/**
562
-		 * Get inline script used if bootstrap enqueued
563
-		 *
564
-		 * If this remains small then its best to use this than to add another JS file.
565
-		 */
566
-		public function inline_script() {
561
+        /**
562
+         * Get inline script used if bootstrap enqueued
563
+         *
564
+         * If this remains small then its best to use this than to add another JS file.
565
+         */
566
+        public function inline_script() {
567 567
             global $aui_bs5;
568
-			// Flatpickr calendar locale
569
-			$flatpickr_locale = self::flatpickr_locale();
570
-
571
-			ob_start();
572
-			if ( $aui_bs5 ) {
573
-				include_once( dirname( __FILE__ ) . '/inc/bs5-js.php' );
574
-			}else{
575
-				include_once( dirname( __FILE__ ) . '/inc/bs4-js.php' );
568
+            // Flatpickr calendar locale
569
+            $flatpickr_locale = self::flatpickr_locale();
570
+
571
+            ob_start();
572
+            if ( $aui_bs5 ) {
573
+                include_once( dirname( __FILE__ ) . '/inc/bs5-js.php' );
574
+            }else{
575
+                include_once( dirname( __FILE__ ) . '/inc/bs4-js.php' );
576 576
             }
577 577
 
578
-			$output = ob_get_clean();
578
+            $output = ob_get_clean();
579 579
 
580
-			/*
580
+            /*
581 581
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
582 582
 			 */
583
-			return str_replace( array(
584
-				'<script>',
585
-				'</script>'
586
-			), '', self::minify_js($output) );
587
-		}
588
-
589
-
590
-		/**
591
-		 * JS to help with conflict issues with other plugins and themes using bootstrap v3.
592
-		 *
593
-		 * @TODO we may need this when other conflicts arrise.
594
-		 * @return mixed
595
-		 */
596
-		public static function bs3_compat_js() {
597
-			ob_start();
598
-			?>
583
+            return str_replace( array(
584
+                '<script>',
585
+                '</script>'
586
+            ), '', self::minify_js($output) );
587
+        }
588
+
589
+
590
+        /**
591
+         * JS to help with conflict issues with other plugins and themes using bootstrap v3.
592
+         *
593
+         * @TODO we may need this when other conflicts arrise.
594
+         * @return mixed
595
+         */
596
+        public static function bs3_compat_js() {
597
+            ob_start();
598
+            ?>
599 599
             <script>
600 600
 				<?php if( defined( 'FUSION_BUILDER_VERSION' ) ){ ?>
601 601
                 /* With Avada builder */
@@ -603,20 +603,20 @@  discard block
 block discarded – undo
603 603
 				<?php } ?>
604 604
             </script>
605 605
 			<?php
606
-			return str_replace( array(
607
-				'<script>',
608
-				'</script>'
609
-			), '', ob_get_clean());
610
-		}
611
-
612
-		/**
613
-		 * Get inline script used if bootstrap file browser enqueued.
614
-		 *
615
-		 * If this remains small then its best to use this than to add another JS file.
616
-		 */
617
-		public function inline_script_file_browser(){
618
-			ob_start();
619
-			?>
606
+            return str_replace( array(
607
+                '<script>',
608
+                '</script>'
609
+            ), '', ob_get_clean());
610
+        }
611
+
612
+        /**
613
+         * Get inline script used if bootstrap file browser enqueued.
614
+         *
615
+         * If this remains small then its best to use this than to add another JS file.
616
+         */
617
+        public function inline_script_file_browser(){
618
+            ob_start();
619
+            ?>
620 620
             <script>
621 621
                 // run on doc ready
622 622
                 jQuery(document).ready(function () {
@@ -624,282 +624,282 @@  discard block
 block discarded – undo
624 624
                 });
625 625
             </script>
626 626
 			<?php
627
-			$output = ob_get_clean();
627
+            $output = ob_get_clean();
628 628
 
629
-			/*
629
+            /*
630 630
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
631 631
 			 */
632
-			return str_replace( array(
633
-				'<script>',
634
-				'</script>'
635
-			), '', $output );
636
-		}
632
+            return str_replace( array(
633
+                '<script>',
634
+                '</script>'
635
+            ), '', $output );
636
+        }
637 637
 
638
-		/**
639
-		 * Adds the Font Awesome JS.
640
-		 */
641
-		public function enqueue_scripts() {
638
+        /**
639
+         * Adds the Font Awesome JS.
640
+         */
641
+        public function enqueue_scripts() {
642 642
 
643
-			if( is_admin() && !$this->is_aui_screen()){
644
-				// don't add wp-admin scripts if not requested to
645
-			}else {
643
+            if( is_admin() && !$this->is_aui_screen()){
644
+                // don't add wp-admin scripts if not requested to
645
+            }else {
646 646
 
647
-				$js_setting = current_action() == 'wp_enqueue_scripts' ? 'js' : 'js_backend';
647
+                $js_setting = current_action() == 'wp_enqueue_scripts' ? 'js' : 'js_backend';
648 648
 
649
-				$bs_ver = $this->settings['bs_ver'] == '5' ? '-v5' : '';
649
+                $bs_ver = $this->settings['bs_ver'] == '5' ? '-v5' : '';
650 650
 
651
-				// select2
652
-				wp_register_script( 'select2', $this->url . 'assets/js/select2.min.js', array( 'jquery' ), $this->select2_version );
651
+                // select2
652
+                wp_register_script( 'select2', $this->url . 'assets/js/select2.min.js', array( 'jquery' ), $this->select2_version );
653 653
 
654
-				// flatpickr
655
-				wp_register_script( 'flatpickr', $this->url . 'assets/js/flatpickr.min.js', array(), $this->version );
654
+                // flatpickr
655
+                wp_register_script( 'flatpickr', $this->url . 'assets/js/flatpickr.min.js', array(), $this->version );
656 656
 
657
-				// iconpicker
658
-				if ( defined( 'FAS_ICONPICKER_JS_URL' ) ) {
659
-					wp_register_script( 'iconpicker', FAS_ICONPICKER_JS_URL, array(), $this->version );
660
-				}else{
661
-					wp_register_script( 'iconpicker', $this->url . 'assets/js/fa-iconpicker.min.js', array(), $this->version );
662
-				}
657
+                // iconpicker
658
+                if ( defined( 'FAS_ICONPICKER_JS_URL' ) ) {
659
+                    wp_register_script( 'iconpicker', FAS_ICONPICKER_JS_URL, array(), $this->version );
660
+                }else{
661
+                    wp_register_script( 'iconpicker', $this->url . 'assets/js/fa-iconpicker.min.js', array(), $this->version );
662
+                }
663 663
 
664
-				// Bootstrap file browser
665
-				wp_register_script( 'aui-custom-file-input', $url = $this->url . 'assets/js/bs-custom-file-input.min.js', array( 'jquery' ), $this->select2_version );
666
-				wp_add_inline_script( 'aui-custom-file-input', $this->inline_script_file_browser() );
667
-
668
-				$load_inline = false;
669
-
670
-				if ( $this->settings[ $js_setting ] == 'core-popper' ) {
671
-					// Bootstrap bundle
672
-					$url = $this->url . 'assets' . $bs_ver . '/js/bootstrap.bundle.min.js';
673
-					wp_register_script( 'bootstrap-js-bundle', $url, array(
674
-						'select2',
675
-						'jquery'
676
-					), $this->version, $this->is_bs3_compat() );
677
-					// if in admin then add to footer for compatibility.
678
-					is_admin() ? wp_enqueue_script( 'bootstrap-js-bundle', '', null, null, true ) : wp_enqueue_script( 'bootstrap-js-bundle' );
679
-					$script = $this->inline_script();
680
-					wp_add_inline_script( 'bootstrap-js-bundle', $script );
681
-				} elseif ( $this->settings[ $js_setting ] == 'popper' ) {
682
-					$url = $this->url . 'assets/js/popper.min.js'; //@todo we need to update this to bs5
683
-					wp_register_script( 'bootstrap-js-popper', $url, array( 'select2', 'jquery' ), $this->version );
684
-					wp_enqueue_script( 'bootstrap-js-popper' );
685
-					$load_inline = true;
686
-				} else {
687
-					$load_inline = true;
688
-				}
664
+                // Bootstrap file browser
665
+                wp_register_script( 'aui-custom-file-input', $url = $this->url . 'assets/js/bs-custom-file-input.min.js', array( 'jquery' ), $this->select2_version );
666
+                wp_add_inline_script( 'aui-custom-file-input', $this->inline_script_file_browser() );
667
+
668
+                $load_inline = false;
669
+
670
+                if ( $this->settings[ $js_setting ] == 'core-popper' ) {
671
+                    // Bootstrap bundle
672
+                    $url = $this->url . 'assets' . $bs_ver . '/js/bootstrap.bundle.min.js';
673
+                    wp_register_script( 'bootstrap-js-bundle', $url, array(
674
+                        'select2',
675
+                        'jquery'
676
+                    ), $this->version, $this->is_bs3_compat() );
677
+                    // if in admin then add to footer for compatibility.
678
+                    is_admin() ? wp_enqueue_script( 'bootstrap-js-bundle', '', null, null, true ) : wp_enqueue_script( 'bootstrap-js-bundle' );
679
+                    $script = $this->inline_script();
680
+                    wp_add_inline_script( 'bootstrap-js-bundle', $script );
681
+                } elseif ( $this->settings[ $js_setting ] == 'popper' ) {
682
+                    $url = $this->url . 'assets/js/popper.min.js'; //@todo we need to update this to bs5
683
+                    wp_register_script( 'bootstrap-js-popper', $url, array( 'select2', 'jquery' ), $this->version );
684
+                    wp_enqueue_script( 'bootstrap-js-popper' );
685
+                    $load_inline = true;
686
+                } else {
687
+                    $load_inline = true;
688
+                }
689 689
 
690
-				// Load needed inline scripts by faking the loading of a script if the main script is not being loaded
691
-				if ( $load_inline ) {
692
-					wp_register_script( 'bootstrap-dummy', '', array( 'select2', 'jquery' ) );
693
-					wp_enqueue_script( 'bootstrap-dummy' );
694
-					$script = $this->inline_script();
695
-					wp_add_inline_script( 'bootstrap-dummy', $script );
696
-				}
697
-			}
698
-
699
-		}
700
-
701
-		/**
702
-		 * Enqueue flatpickr if called.
703
-		 */
704
-		public function enqueue_flatpickr(){
705
-			wp_enqueue_style( 'flatpickr' );
706
-			wp_enqueue_script( 'flatpickr' );
707
-		}
708
-
709
-		/**
710
-		 * Enqueue iconpicker if called.
711
-		 */
712
-		public function enqueue_iconpicker(){
713
-			wp_enqueue_style( 'iconpicker' );
714
-			wp_enqueue_script( 'iconpicker' );
715
-		}
716
-
717
-		/**
718
-		 * Get the url path to the current folder.
719
-		 *
720
-		 * @return string
721
-		 */
722
-		public function get_url() {
723
-			$content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
724
-			$content_url = untrailingslashit( WP_CONTENT_URL );
725
-
726
-			// Replace http:// to https://.
727
-			if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
728
-				$content_url = str_replace( 'http://', 'https://', $content_url );
729
-			}
730
-
731
-			// Check if we are inside a plugin
732
-			$file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
733
-			$url = str_replace( $content_dir, $content_url, $file_dir );
734
-
735
-			return trailingslashit( $url );
736
-		}
737
-
738
-		/**
739
-		 * Get the url path to the current folder.
740
-		 *
741
-		 * @return string
742
-		 */
743
-		public function get_url_old() {
744
-
745
-			$url = '';
746
-			// check if we are inside a plugin
747
-			$file_dir = str_replace( "/includes","", wp_normalize_path( dirname( __FILE__ ) ) );
748
-
749
-			// add check in-case user has changed wp-content dir name.
750
-			$wp_content_folder_name = basename(WP_CONTENT_DIR);
751
-			$dir_parts = explode("/$wp_content_folder_name/",$file_dir);
752
-			$url_parts = explode("/$wp_content_folder_name/",plugins_url());
753
-
754
-			if(!empty($url_parts[0]) && !empty($dir_parts[1])){
755
-				$url = trailingslashit( $url_parts[0]."/$wp_content_folder_name/".$dir_parts[1] );
756
-			}
757
-
758
-			return $url;
759
-		}
760
-
761
-		/**
762
-		 * Register the database settings with WordPress.
763
-		 */
764
-		public function register_settings() {
765
-			register_setting( 'ayecode-ui-settings', 'ayecode-ui-settings' );
766
-		}
767
-
768
-		/**
769
-		 * Add the WordPress settings menu item.
770
-		 * @since 1.0.10 Calling function name direct will fail theme check so we don't.
771
-		 */
772
-		public function menu_item() {
773
-			$menu_function = 'add' . '_' . 'options' . '_' . 'page'; // won't pass theme check if function name present in theme
774
-			call_user_func( $menu_function, $this->name, $this->name, 'manage_options', 'ayecode-ui-settings', array(
775
-				$this,
776
-				'settings_page'
777
-			) );
778
-		}
779
-
780
-		/**
781
-		 * Get a list of themes and their default JS settings.
782
-		 *
783
-		 * @return array
784
-		 */
785
-		public function theme_js_settings(){
786
-			return array(
787
-				'ayetheme' => 'popper',
788
-				'listimia' => 'required',
789
-				'listimia_backend' => 'core-popper',
790
-				//'avada'    => 'required', // removed as we now add compatibility
791
-			);
792
-		}
793
-
794
-		/**
690
+                // Load needed inline scripts by faking the loading of a script if the main script is not being loaded
691
+                if ( $load_inline ) {
692
+                    wp_register_script( 'bootstrap-dummy', '', array( 'select2', 'jquery' ) );
693
+                    wp_enqueue_script( 'bootstrap-dummy' );
694
+                    $script = $this->inline_script();
695
+                    wp_add_inline_script( 'bootstrap-dummy', $script );
696
+                }
697
+            }
698
+
699
+        }
700
+
701
+        /**
702
+         * Enqueue flatpickr if called.
703
+         */
704
+        public function enqueue_flatpickr(){
705
+            wp_enqueue_style( 'flatpickr' );
706
+            wp_enqueue_script( 'flatpickr' );
707
+        }
708
+
709
+        /**
710
+         * Enqueue iconpicker if called.
711
+         */
712
+        public function enqueue_iconpicker(){
713
+            wp_enqueue_style( 'iconpicker' );
714
+            wp_enqueue_script( 'iconpicker' );
715
+        }
716
+
717
+        /**
718
+         * Get the url path to the current folder.
719
+         *
720
+         * @return string
721
+         */
722
+        public function get_url() {
723
+            $content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
724
+            $content_url = untrailingslashit( WP_CONTENT_URL );
725
+
726
+            // Replace http:// to https://.
727
+            if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
728
+                $content_url = str_replace( 'http://', 'https://', $content_url );
729
+            }
730
+
731
+            // Check if we are inside a plugin
732
+            $file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
733
+            $url = str_replace( $content_dir, $content_url, $file_dir );
734
+
735
+            return trailingslashit( $url );
736
+        }
737
+
738
+        /**
739
+         * Get the url path to the current folder.
740
+         *
741
+         * @return string
742
+         */
743
+        public function get_url_old() {
744
+
745
+            $url = '';
746
+            // check if we are inside a plugin
747
+            $file_dir = str_replace( "/includes","", wp_normalize_path( dirname( __FILE__ ) ) );
748
+
749
+            // add check in-case user has changed wp-content dir name.
750
+            $wp_content_folder_name = basename(WP_CONTENT_DIR);
751
+            $dir_parts = explode("/$wp_content_folder_name/",$file_dir);
752
+            $url_parts = explode("/$wp_content_folder_name/",plugins_url());
753
+
754
+            if(!empty($url_parts[0]) && !empty($dir_parts[1])){
755
+                $url = trailingslashit( $url_parts[0]."/$wp_content_folder_name/".$dir_parts[1] );
756
+            }
757
+
758
+            return $url;
759
+        }
760
+
761
+        /**
762
+         * Register the database settings with WordPress.
763
+         */
764
+        public function register_settings() {
765
+            register_setting( 'ayecode-ui-settings', 'ayecode-ui-settings' );
766
+        }
767
+
768
+        /**
769
+         * Add the WordPress settings menu item.
770
+         * @since 1.0.10 Calling function name direct will fail theme check so we don't.
771
+         */
772
+        public function menu_item() {
773
+            $menu_function = 'add' . '_' . 'options' . '_' . 'page'; // won't pass theme check if function name present in theme
774
+            call_user_func( $menu_function, $this->name, $this->name, 'manage_options', 'ayecode-ui-settings', array(
775
+                $this,
776
+                'settings_page'
777
+            ) );
778
+        }
779
+
780
+        /**
781
+         * Get a list of themes and their default JS settings.
782
+         *
783
+         * @return array
784
+         */
785
+        public function theme_js_settings(){
786
+            return array(
787
+                'ayetheme' => 'popper',
788
+                'listimia' => 'required',
789
+                'listimia_backend' => 'core-popper',
790
+                //'avada'    => 'required', // removed as we now add compatibility
791
+            );
792
+        }
793
+
794
+        /**
795 795
          * Get the date the site was installed.
796 796
          *
797
-		 * @return false|string
798
-		 */
797
+         * @return false|string
798
+         */
799 799
         public function get_site_install_date() {
800
-	        global $wpdb; // This gives you access to the WordPress database object
800
+            global $wpdb; // This gives you access to the WordPress database object
801 801
 
802
-	        // Prepare the SQL query to get the oldest registration date
803
-	        $query = "SELECT MIN(user_registered) AS oldest_registration_date FROM {$wpdb->users}";
802
+            // Prepare the SQL query to get the oldest registration date
803
+            $query = "SELECT MIN(user_registered) AS oldest_registration_date FROM {$wpdb->users}";
804 804
 
805
-	        // Execute the query
806
-	        $date = $wpdb->get_var( $query ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
805
+            // Execute the query
806
+            $date = $wpdb->get_var( $query ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
807 807
 
808
-	        return $date ? $date : false;
808
+            return $date ? $date : false;
809 809
         }
810 810
 
811
-		/**
812
-		 * Show admin notice if backend scripts not loaded.
813
-		 */
814
-		public function show_admin_version_notice(){
815
-			$fix_url = admin_url("options-general.php?page=ayecode-ui-settings" );
816
-			$button = '<a href="'.esc_url($fix_url).'" class="button-primary">View Settings</a>';
817
-			$message = __( '<b>Style Issue:</b> AyeCode UI has changed its default version from v4 to v5, if you notice unwanted style changes, please revert to v4 (saving the settings page will remove this notice)')." " .$button;
818
-			echo '<div class="notice notice-error aui-settings-error-notice"><p>'. wp_kses_post( $message ).'</p></div>';
819
-		}
820
-
821
-		/**
822
-		 * Get the current Font Awesome output settings.
823
-		 *
824
-		 * @return array The array of settings.
825
-		 */
826
-		public function get_settings() {
827
-
828
-			$db_settings = get_option( 'ayecode-ui-settings' );
811
+        /**
812
+         * Show admin notice if backend scripts not loaded.
813
+         */
814
+        public function show_admin_version_notice(){
815
+            $fix_url = admin_url("options-general.php?page=ayecode-ui-settings" );
816
+            $button = '<a href="'.esc_url($fix_url).'" class="button-primary">View Settings</a>';
817
+            $message = __( '<b>Style Issue:</b> AyeCode UI has changed its default version from v4 to v5, if you notice unwanted style changes, please revert to v4 (saving the settings page will remove this notice)')." " .$button;
818
+            echo '<div class="notice notice-error aui-settings-error-notice"><p>'. wp_kses_post( $message ).'</p></div>';
819
+        }
820
+
821
+        /**
822
+         * Get the current Font Awesome output settings.
823
+         *
824
+         * @return array The array of settings.
825
+         */
826
+        public function get_settings() {
827
+
828
+            $db_settings = get_option( 'ayecode-ui-settings' );
829 829
 
830 830
             // Maybe show default version notice
831
-			$site_install_date = new DateTime( self::get_site_install_date() );
832
-			$switch_over_date = new DateTime("2024-02-01");
833
-			if ( empty( $db_settings ) && $site_install_date < $switch_over_date ) {
834
-				add_action( 'admin_notices', array( $this, 'show_admin_version_notice' ) );
835
-			}
836
-
837
-			$js_default = 'core-popper';
838
-			$js_default_backend = $js_default;
839
-
840
-			// maybe set defaults (if no settings set)
841
-			if(empty($db_settings)){
842
-				$active_theme = strtolower( get_template() ); // active parent theme.
843
-				$theme_js_settings = self::theme_js_settings();
844
-				if(isset($theme_js_settings[$active_theme])){
845
-					$js_default = $theme_js_settings[$active_theme];
846
-					$js_default_backend = isset($theme_js_settings[$active_theme."_backend"]) ? $theme_js_settings[$active_theme."_backend"] : $js_default;
847
-				}
848
-			}
831
+            $site_install_date = new DateTime( self::get_site_install_date() );
832
+            $switch_over_date = new DateTime("2024-02-01");
833
+            if ( empty( $db_settings ) && $site_install_date < $switch_over_date ) {
834
+                add_action( 'admin_notices', array( $this, 'show_admin_version_notice' ) );
835
+            }
849 836
 
850
-			/**
851
-			 * Filter the default settings.
852
-			 */
853
-			$defaults = apply_filters( 'ayecode-ui-default-settings', array(
854
-				'css'            => 'compatibility', // core, compatibility
855
-				'js'             => $js_default, // js to load, core-popper, popper
856
-				'html_font_size' => '16', // js to load, core-popper, popper
857
-				'css_backend'    => 'compatibility', // core, compatibility
858
-				'js_backend'     => $js_default_backend, // js to load, core-popper, popper
859
-				'disable_admin'  => '', // URL snippets to disable loading on admin
837
+            $js_default = 'core-popper';
838
+            $js_default_backend = $js_default;
839
+
840
+            // maybe set defaults (if no settings set)
841
+            if(empty($db_settings)){
842
+                $active_theme = strtolower( get_template() ); // active parent theme.
843
+                $theme_js_settings = self::theme_js_settings();
844
+                if(isset($theme_js_settings[$active_theme])){
845
+                    $js_default = $theme_js_settings[$active_theme];
846
+                    $js_default_backend = isset($theme_js_settings[$active_theme."_backend"]) ? $theme_js_settings[$active_theme."_backend"] : $js_default;
847
+                }
848
+            }
849
+
850
+            /**
851
+             * Filter the default settings.
852
+             */
853
+            $defaults = apply_filters( 'ayecode-ui-default-settings', array(
854
+                'css'            => 'compatibility', // core, compatibility
855
+                'js'             => $js_default, // js to load, core-popper, popper
856
+                'html_font_size' => '16', // js to load, core-popper, popper
857
+                'css_backend'    => 'compatibility', // core, compatibility
858
+                'js_backend'     => $js_default_backend, // js to load, core-popper, popper
859
+                'disable_admin'  => '', // URL snippets to disable loading on admin
860 860
                 'bs_ver'         => '5', // The default bootstrap version to sue by default
861
-			), $db_settings );
861
+            ), $db_settings );
862 862
 
863
-			$settings = wp_parse_args( $db_settings, $defaults );
863
+            $settings = wp_parse_args( $db_settings, $defaults );
864 864
 
865
-			/**
866
-			 * Filter the Bootstrap settings.
867
-			 *
868
-			 * @todo if we add this filer people might use it and then it defeats the purpose of this class :/
869
-			 */
870
-			return $this->settings = apply_filters( 'ayecode-ui-settings', $settings, $db_settings, $defaults );
871
-		}
865
+            /**
866
+             * Filter the Bootstrap settings.
867
+             *
868
+             * @todo if we add this filer people might use it and then it defeats the purpose of this class :/
869
+             */
870
+            return $this->settings = apply_filters( 'ayecode-ui-settings', $settings, $db_settings, $defaults );
871
+        }
872 872
 
873 873
 
874
-		/**
875
-		 * The settings page html output.
876
-		 */
877
-		public function settings_page() {
878
-			if ( ! current_user_can( 'manage_options' ) ) {
879
-				wp_die( esc_attr__( 'You do not have sufficient permissions to access this page.', 'ayecode-connect' ) );
880
-			}
874
+        /**
875
+         * The settings page html output.
876
+         */
877
+        public function settings_page() {
878
+            if ( ! current_user_can( 'manage_options' ) ) {
879
+                wp_die( esc_attr__( 'You do not have sufficient permissions to access this page.', 'ayecode-connect' ) );
880
+            }
881 881
             $overrides = apply_filters( 'ayecode-ui-settings', array(), array(), array() );
882 882
 
883
-			?>
883
+            ?>
884 884
             <div class="wrap">
885 885
                 <h1><?php echo esc_attr( $this->name ); ?></h1>
886 886
                 <p><?php echo esc_html( apply_filters( 'ayecode-ui-settings-message', __("Here you can adjust settings if you are having compatibility issues.", 'ayecode-connect' ) ) );?></p>
887 887
                 <form method="post" action="options.php">
888 888
 					<?php
889
-					settings_fields( 'ayecode-ui-settings' );
890
-					do_settings_sections( 'ayecode-ui-settings' );
891
-					?>
889
+                    settings_fields( 'ayecode-ui-settings' );
890
+                    do_settings_sections( 'ayecode-ui-settings' );
891
+                    ?>
892 892
 
893 893
                     <h2><?php esc_html_e( 'BootStrap Version', 'ayecode-connect' ); ?></h2>
894 894
                     <p><?php echo esc_html( apply_filters( 'ayecode-ui-version-settings-message', __("V5 is recommended, however if you have another plugin installed using v4, you may need to use v4 also.", 'ayecode-connect' ) ) );?></p>
895 895
 	                <div class="bsui"><?php
896
-	                if ( ! empty( $overrides ) ) {
897
-		                echo aui()->alert(array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
898
-			                'type'=> 'info',
899
-			                'content'=> esc_attr__("Some options are disabled as your current theme is overriding them.", 'ayecode-connect' )
900
-		                ));
901
-	                }
902
-	                ?>
896
+                    if ( ! empty( $overrides ) ) {
897
+                        echo aui()->alert(array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
898
+                            'type'=> 'info',
899
+                            'content'=> esc_attr__("Some options are disabled as your current theme is overriding them.", 'ayecode-connect' )
900
+                        ));
901
+                    }
902
+                    ?>
903 903
                     </div>
904 904
                     <table class="form-table wpbs-table-version-settings">
905 905
                         <tr valign="top">
@@ -983,77 +983,77 @@  discard block
 block discarded – undo
983 983
                     </table>
984 984
 
985 985
 					<?php
986
-					submit_button();
987
-					?>
986
+                    submit_button();
987
+                    ?>
988 988
                 </form>
989 989
                 <div id="wpbs-version" data-aui-source="<?php echo esc_attr( $this->get_load_source() ); ?>"><?php echo esc_html( $this->version ); ?></div>
990 990
             </div>
991 991
 			<?php
992
-		}
992
+        }
993 993
 
994 994
         public function get_load_source(){
995
-	        $file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
996
-	        $plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
997
-
998
-	        // Find source plugin/theme of SD
999
-	        $source = array();
1000
-	        if ( strpos( $file, $plugins_dir ) !== false ) {
1001
-		        $source = explode( "/", plugin_basename( $file ) );
1002
-	        } else if ( function_exists( 'get_theme_root' ) ) {
1003
-		        $themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
1004
-
1005
-		        if ( strpos( $file, $themes_dir ) !== false ) {
1006
-			        $source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
1007
-		        }
1008
-	        }
995
+            $file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
996
+            $plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
997
+
998
+            // Find source plugin/theme of SD
999
+            $source = array();
1000
+            if ( strpos( $file, $plugins_dir ) !== false ) {
1001
+                $source = explode( "/", plugin_basename( $file ) );
1002
+            } else if ( function_exists( 'get_theme_root' ) ) {
1003
+                $themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
1004
+
1005
+                if ( strpos( $file, $themes_dir ) !== false ) {
1006
+                    $source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
1007
+                }
1008
+            }
1009 1009
 
1010 1010
             return isset($source[0]) ? esc_attr($source[0]) : '';
1011 1011
         }
1012 1012
 
1013
-		public function customizer_settings($wp_customize){
1014
-			$wp_customize->add_section('aui_settings', array(
1015
-				'title'    => __('AyeCode UI', 'ayecode-connect' ),
1016
-				'priority' => 120,
1017
-			));
1018
-
1019
-			//  =============================
1020
-			//  = Color Picker              =
1021
-			//  =============================
1022
-			$wp_customize->add_setting('aui_options[color_primary]', array(
1023
-				'default'           => AUI_PRIMARY_COLOR,
1024
-				'sanitize_callback' => 'sanitize_hex_color',
1025
-				'capability'        => 'edit_theme_options',
1026
-				'type'              => 'option',
1027
-				'transport'         => 'refresh',
1028
-			));
1029
-			$wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_primary', array(
1030
-				'label'    => __('Primary Color', 'ayecode-connect' ),
1031
-				'section'  => 'aui_settings',
1032
-				'settings' => 'aui_options[color_primary]',
1033
-			)));
1034
-
1035
-			$wp_customize->add_setting('aui_options[color_secondary]', array(
1036
-				'default'           => '#6c757d',
1037
-				'sanitize_callback' => 'sanitize_hex_color',
1038
-				'capability'        => 'edit_theme_options',
1039
-				'type'              => 'option',
1040
-				'transport'         => 'refresh',
1041
-			));
1042
-			$wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_secondary', array(
1043
-				'label'    => __('Secondary Color', 'ayecode-connect' ),
1044
-				'section'  => 'aui_settings',
1045
-				'settings' => 'aui_options[color_secondary]',
1046
-			)));
1047
-		}
1048
-
1049
-		/**
1050
-		 * CSS to help with conflict issues with other plugins and themes using bootstrap v3.
1051
-		 *
1052
-		 * @return mixed
1053
-		 */
1054
-		public static function bs3_compat_css() {
1055
-			ob_start();
1056
-			?>
1013
+        public function customizer_settings($wp_customize){
1014
+            $wp_customize->add_section('aui_settings', array(
1015
+                'title'    => __('AyeCode UI', 'ayecode-connect' ),
1016
+                'priority' => 120,
1017
+            ));
1018
+
1019
+            //  =============================
1020
+            //  = Color Picker              =
1021
+            //  =============================
1022
+            $wp_customize->add_setting('aui_options[color_primary]', array(
1023
+                'default'           => AUI_PRIMARY_COLOR,
1024
+                'sanitize_callback' => 'sanitize_hex_color',
1025
+                'capability'        => 'edit_theme_options',
1026
+                'type'              => 'option',
1027
+                'transport'         => 'refresh',
1028
+            ));
1029
+            $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_primary', array(
1030
+                'label'    => __('Primary Color', 'ayecode-connect' ),
1031
+                'section'  => 'aui_settings',
1032
+                'settings' => 'aui_options[color_primary]',
1033
+            )));
1034
+
1035
+            $wp_customize->add_setting('aui_options[color_secondary]', array(
1036
+                'default'           => '#6c757d',
1037
+                'sanitize_callback' => 'sanitize_hex_color',
1038
+                'capability'        => 'edit_theme_options',
1039
+                'type'              => 'option',
1040
+                'transport'         => 'refresh',
1041
+            ));
1042
+            $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_secondary', array(
1043
+                'label'    => __('Secondary Color', 'ayecode-connect' ),
1044
+                'section'  => 'aui_settings',
1045
+                'settings' => 'aui_options[color_secondary]',
1046
+            )));
1047
+        }
1048
+
1049
+        /**
1050
+         * CSS to help with conflict issues with other plugins and themes using bootstrap v3.
1051
+         *
1052
+         * @return mixed
1053
+         */
1054
+        public static function bs3_compat_css() {
1055
+            ob_start();
1056
+            ?>
1057 1057
             <style>
1058 1058
                 /* Bootstrap 3 compatibility */
1059 1059
                 body.modal-open .modal-backdrop.show:not(.in) {opacity:0.5;}
@@ -1082,55 +1082,55 @@  discard block
 block discarded – undo
1082 1082
                 <?php } ?>
1083 1083
             </style>
1084 1084
 			<?php
1085
-			return str_replace( array(
1086
-				'<style>',
1087
-				'</style>'
1088
-			), '', self::minify_css( ob_get_clean() ) );
1089
-		}
1085
+            return str_replace( array(
1086
+                '<style>',
1087
+                '</style>'
1088
+            ), '', self::minify_css( ob_get_clean() ) );
1089
+        }
1090 1090
 
1091 1091
 
1092
-		public static function custom_css($compatibility = true) {
1092
+        public static function custom_css($compatibility = true) {
1093 1093
             global $aui_bs5;
1094 1094
 
1095
-			$colors = array();
1096
-			if ( defined( 'BLOCKSTRAP_VERSION' ) ) {
1095
+            $colors = array();
1096
+            if ( defined( 'BLOCKSTRAP_VERSION' ) ) {
1097 1097
 
1098 1098
 
1099
-				$setting = wp_get_global_settings();
1099
+                $setting = wp_get_global_settings();
1100 1100
 
1101 1101
 //                print_r(wp_get_global_styles());//exit;
1102 1102
 //                print_r(get_default_block_editor_settings());exit;
1103 1103
 
1104 1104
 //                print_r($setting);echo  '###';exit;
1105
-				if(!empty($setting['color']['palette']['theme'])){
1106
-					foreach($setting['color']['palette']['theme'] as $color){
1107
-						$colors[$color['slug']] = esc_attr($color['color']);
1108
-					}
1109
-				}
1105
+                if(!empty($setting['color']['palette']['theme'])){
1106
+                    foreach($setting['color']['palette']['theme'] as $color){
1107
+                        $colors[$color['slug']] = esc_attr($color['color']);
1108
+                    }
1109
+                }
1110 1110
 
1111
-				if(!empty($setting['color']['palette']['custom'])){
1112
-					foreach($setting['color']['palette']['custom'] as $color){
1113
-						$colors[$color['slug']] = esc_attr($color['color']);
1114
-					}
1115
-				}
1116
-			}else{
1117
-				$settings = get_option('aui_options');
1118
-				$colors = array(
1119
-					'primary'   => ! empty( $settings['color_primary'] ) ? $settings['color_primary'] : AUI_PRIMARY_COLOR,
1120
-					'secondary' => ! empty( $settings['color_secondary'] ) ? $settings['color_secondary'] : AUI_SECONDARY_COLOR
1121
-				);
1122
-			}
1111
+                if(!empty($setting['color']['palette']['custom'])){
1112
+                    foreach($setting['color']['palette']['custom'] as $color){
1113
+                        $colors[$color['slug']] = esc_attr($color['color']);
1114
+                    }
1115
+                }
1116
+            }else{
1117
+                $settings = get_option('aui_options');
1118
+                $colors = array(
1119
+                    'primary'   => ! empty( $settings['color_primary'] ) ? $settings['color_primary'] : AUI_PRIMARY_COLOR,
1120
+                    'secondary' => ! empty( $settings['color_secondary'] ) ? $settings['color_secondary'] : AUI_SECONDARY_COLOR
1121
+                );
1122
+            }
1123 1123
 
1124
-			ob_start();
1124
+            ob_start();
1125 1125
 
1126
-			?>
1126
+            ?>
1127 1127
             <style>
1128 1128
                 <?php
1129 1129
 
1130
-					// BS v3 compat
1131
-					if( self::is_bs3_compat() ){
1132
-						echo self::bs3_compat_css(); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1133
-					}
1130
+                    // BS v3 compat
1131
+                    if( self::is_bs3_compat() ){
1132
+                        echo self::bs3_compat_css(); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1133
+                    }
1134 1134
 
1135 1135
                     $current_screen = function_exists('get_current_screen' ) ? get_current_screen() : '';
1136 1136
                     $is_fse = false;
@@ -1138,26 +1138,26 @@  discard block
 block discarded – undo
1138 1138
                         $is_fse = true;
1139 1139
                     }
1140 1140
 
1141
-					if(!empty($colors)){
1142
-						$d_colors = self::get_colors(true);
1141
+                    if(!empty($colors)){
1142
+                        $d_colors = self::get_colors(true);
1143 1143
 
1144 1144
 //						$is_fse = !empty($_REQUEST['postType']) && $_REQUEST['postType']=='wp_template';
1145
-						foreach($colors as $key => $color ){
1146
-							if((empty( $d_colors[$key]) ||  $d_colors[$key] != $color) || $is_fse ) {
1147
-								$var = $is_fse ? "var(--wp--preset--color--$key)" : $color;
1148
-								$compat = $is_fse ? '.editor-styles-wrapper' : $compatibility;
1149
-								echo $aui_bs5 ? self::css_overwrite_bs5($key,$var,$compat,$color) : self::css_overwrite($key,$var,$compat,$color); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1150
-							}
1151
-						}
1152
-					   // exit;
1153
-					}
1145
+                        foreach($colors as $key => $color ){
1146
+                            if((empty( $d_colors[$key]) ||  $d_colors[$key] != $color) || $is_fse ) {
1147
+                                $var = $is_fse ? "var(--wp--preset--color--$key)" : $color;
1148
+                                $compat = $is_fse ? '.editor-styles-wrapper' : $compatibility;
1149
+                                echo $aui_bs5 ? self::css_overwrite_bs5($key,$var,$compat,$color) : self::css_overwrite($key,$var,$compat,$color); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1150
+                            }
1151
+                        }
1152
+                        // exit;
1153
+                    }
1154 1154
 
1155
-					// Set admin bar z-index lower when modal is open.
1156
-					echo ' body.modal-open #wpadminbar{z-index:999}.embed-responsive-16by9 .fluid-width-video-wrapper{padding:0 !important;position:initial}';
1155
+                    // Set admin bar z-index lower when modal is open.
1156
+                    echo ' body.modal-open #wpadminbar{z-index:999}.embed-responsive-16by9 .fluid-width-video-wrapper{padding:0 !important;position:initial}';
1157 1157
 
1158
-					if(is_admin()){
1159
-						echo ' body.modal-open #adminmenuwrap{z-index:999} body.modal-open #wpadminbar{z-index:1025}';
1160
-					}
1158
+                    if(is_admin()){
1159
+                        echo ' body.modal-open #adminmenuwrap{z-index:999} body.modal-open #wpadminbar{z-index:1025}';
1160
+                    }
1161 1161
 
1162 1162
                     if( $aui_bs5 && defined( 'BLOCKSTRAP_VERSION' )  ){
1163 1163
                         $css = '';
@@ -1177,28 +1177,28 @@  discard block
 block discarded – undo
1177 1177
                         }
1178 1178
 
1179 1179
                         // line height
1180
-                         if( !empty( $theme_settings['typography']['lineHeight'] ) ){
1180
+                            if( !empty( $theme_settings['typography']['lineHeight'] ) ){
1181 1181
                             $css .= '--bs-body-line-height: ' . esc_attr( $theme_settings['typography']['lineHeight'] ) . ';';
1182 1182
                         }
1183 1183
 
1184 1184
 
1185
-                           // font weight
1186
-                         if( !empty( $theme_settings['typography']['fontWeight'] ) ){
1185
+                            // font weight
1186
+                            if( !empty( $theme_settings['typography']['fontWeight'] ) ){
1187 1187
                             $css .= '--bs-body-font-weight: ' . esc_attr( $theme_settings['typography']['fontWeight'] ) . ';';
1188 1188
                         }
1189 1189
 
1190 1190
                         // Background
1191
-                         if( !empty( $theme_settings['color']['background'] ) ){
1191
+                            if( !empty( $theme_settings['color']['background'] ) ){
1192 1192
                             $css .= '--bs-body-bg: ' . esc_attr( $theme_settings['color']['background'] ) . ';';
1193 1193
                         }
1194 1194
 
1195
-                         // Background Gradient
1196
-                         if( !empty( $theme_settings['color']['gradient'] ) ){
1195
+                            // Background Gradient
1196
+                            if( !empty( $theme_settings['color']['gradient'] ) ){
1197 1197
                             $css .= 'background: ' . esc_attr( $theme_settings['color']['gradient'] ) . ';';
1198 1198
                         }
1199 1199
 
1200
-                           // Background Gradient
1201
-                         if( !empty( $theme_settings['color']['gradient'] ) ){
1200
+                            // Background Gradient
1201
+                            if( !empty( $theme_settings['color']['gradient'] ) ){
1202 1202
                             $css .= 'background: ' . esc_attr( $theme_settings['color']['gradient'] ) . ';';
1203 1203
                         }
1204 1204
 
@@ -1236,7 +1236,7 @@  discard block
 block discarded – undo
1236 1236
                             $headings_css .= 'background: ' . esc_attr( $theme_settings['elements']['heading']['color']['background'] ) . ';';
1237 1237
                         }
1238 1238
 
1239
-                         // heading font family
1239
+                            // heading font family
1240 1240
                         if( !empty( $theme_settings['elements']['heading']['typography']['fontFamily'] ) ){
1241 1241
                             $headings_css .= 'font-family: ' . esc_attr( $theme_settings['elements']['heading']['typography']['fontFamily']  ) . ';';
1242 1242
                         }
@@ -1249,21 +1249,21 @@  discard block
 block discarded – undo
1249 1249
 
1250 1250
                         foreach($hs as $hn){
1251 1251
                             $h_css = '';
1252
-                             if( !empty( $theme_settings['elements'][$hn]['color']['text'] ) ){
1252
+                                if( !empty( $theme_settings['elements'][$hn]['color']['text'] ) ){
1253 1253
                                 $h_css .= 'color: ' . esc_attr( $theme_settings['elements'][$hn]['color']['text'] ) . ';';
1254
-                             }
1254
+                                }
1255 1255
 
1256
-                              if( !empty( $theme_settings['elements'][$hn]['typography']['fontSize'] ) ){
1256
+                                if( !empty( $theme_settings['elements'][$hn]['typography']['fontSize'] ) ){
1257 1257
                                 $h_css .= 'font-size: ' . esc_attr( $theme_settings['elements'][$hn]['typography']['fontSize']  ) . ';';
1258
-                             }
1258
+                                }
1259 1259
 
1260
-                              if( !empty( $theme_settings['elements'][$hn]['typography']['fontFamily'] ) ){
1260
+                                if( !empty( $theme_settings['elements'][$hn]['typography']['fontFamily'] ) ){
1261 1261
                                 $h_css .= 'font-family: ' . esc_attr( $theme_settings['elements'][$hn]['typography']['fontFamily']  ) . ';';
1262
-                             }
1262
+                                }
1263 1263
 
1264
-                             if($h_css){
1264
+                                if($h_css){
1265 1265
                                 echo esc_attr( $bep  . $hn ) . '{'.esc_attr( $h_css ).'}';
1266
-                             }
1266
+                                }
1267 1267
                         }
1268 1268
                     }
1269 1269
 
@@ -1274,176 +1274,176 @@  discard block
 block discarded – undo
1274 1274
                 ?>
1275 1275
             </style>
1276 1276
 			<?php
1277
-			/*
1277
+            /*
1278 1278
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
1279 1279
 			 */
1280
-			return str_replace( array(
1281
-				'<style>',
1282
-				'</style>'
1283
-			), '', self::minify_css( ob_get_clean() ) );
1284
-		}
1285
-
1286
-		/**
1287
-		 * Check if we should add booststrap 3 compatibility changes.
1288
-		 *
1289
-		 * @return bool
1290
-		 */
1291
-		public static function is_bs3_compat(){
1292
-			return defined('AYECODE_UI_BS3_COMPAT') || defined('SVQ_THEME_VERSION') || defined('FUSION_BUILDER_VERSION');
1293
-		}
1294
-
1295
-		public static function hex_to_rgb( $hex ) {
1296
-			// Remove '#' if present
1297
-			$hex = str_replace( '#', '', $hex );
1298
-
1299
-			// Check if input is RGB
1300
-			if ( strpos( $hex, 'rgba(' ) === 0 || strpos( $hex, 'rgb(' ) === 0 ) {
1301
-				$_rgb = explode( ',', str_replace( array( 'rgba(', 'rgb(', ')' ), '', $hex ) );
1302
-
1303
-				$rgb = ( isset( $_rgb[0] ) ? (int) trim( $_rgb[0] ) : '0' ) . ',';
1304
-				$rgb .= ( isset( $_rgb[1] ) ? (int) trim( $_rgb[1] ) : '0' ) . ',';
1305
-				$rgb .= ( isset( $_rgb[2] ) ? (int) trim( $_rgb[2] ) : '0' );
1306
-
1307
-				return $rgb;
1308
-			}
1309
-
1310
-			// Convert 3-digit hex to 6-digit hex
1311
-			if ( strlen( $hex ) == 3 ) {
1312
-				$hex = str_repeat( substr( $hex, 0, 1 ), 2 ) . str_repeat( substr( $hex, 1, 1 ), 2 ) . str_repeat( substr( $hex, 2, 1 ), 2 );
1313
-			}
1314
-
1315
-			// Convert hex to RGB
1316
-			$r = hexdec( substr( $hex, 0, 2 ) );
1317
-			$g = hexdec( substr( $hex, 2, 2 ) );
1318
-			$b = hexdec( substr( $hex, 4, 2 ) );
1319
-
1320
-			// Return RGB values as an array
1321
-			return $r . ',' . $g . ',' . $b;
1322
-		}
1323
-
1324
-		/**
1325
-		 * Build the CSS to overwrite a bootstrap color variable.
1326
-		 *
1327
-		 * @param $type
1328
-		 * @param $color_code
1329
-		 * @param $compatibility
1330
-		 *
1331
-		 * @return string
1332
-		 */
1333
-		public static function css_overwrite_bs5($type,$color_code,$compatibility, $hex = '' ){
1334
-			global $aui_bs5;
1335
-
1336
-			$is_var = false;
1337
-			$is_custom = strpos($type, 'custom-') !== false ? true : false;
1338
-			if(!$color_code){return '';}
1339
-			if(strpos($color_code, 'var') !== false){
1340
-				//if(!sanitize_hex_color($color_code)){
1341
-				$color_code = esc_attr($color_code);
1342
-				$is_var = true;
1280
+            return str_replace( array(
1281
+                '<style>',
1282
+                '</style>'
1283
+            ), '', self::minify_css( ob_get_clean() ) );
1284
+        }
1285
+
1286
+        /**
1287
+         * Check if we should add booststrap 3 compatibility changes.
1288
+         *
1289
+         * @return bool
1290
+         */
1291
+        public static function is_bs3_compat(){
1292
+            return defined('AYECODE_UI_BS3_COMPAT') || defined('SVQ_THEME_VERSION') || defined('FUSION_BUILDER_VERSION');
1293
+        }
1294
+
1295
+        public static function hex_to_rgb( $hex ) {
1296
+            // Remove '#' if present
1297
+            $hex = str_replace( '#', '', $hex );
1298
+
1299
+            // Check if input is RGB
1300
+            if ( strpos( $hex, 'rgba(' ) === 0 || strpos( $hex, 'rgb(' ) === 0 ) {
1301
+                $_rgb = explode( ',', str_replace( array( 'rgba(', 'rgb(', ')' ), '', $hex ) );
1302
+
1303
+                $rgb = ( isset( $_rgb[0] ) ? (int) trim( $_rgb[0] ) : '0' ) . ',';
1304
+                $rgb .= ( isset( $_rgb[1] ) ? (int) trim( $_rgb[1] ) : '0' ) . ',';
1305
+                $rgb .= ( isset( $_rgb[2] ) ? (int) trim( $_rgb[2] ) : '0' );
1306
+
1307
+                return $rgb;
1308
+            }
1309
+
1310
+            // Convert 3-digit hex to 6-digit hex
1311
+            if ( strlen( $hex ) == 3 ) {
1312
+                $hex = str_repeat( substr( $hex, 0, 1 ), 2 ) . str_repeat( substr( $hex, 1, 1 ), 2 ) . str_repeat( substr( $hex, 2, 1 ), 2 );
1313
+            }
1314
+
1315
+            // Convert hex to RGB
1316
+            $r = hexdec( substr( $hex, 0, 2 ) );
1317
+            $g = hexdec( substr( $hex, 2, 2 ) );
1318
+            $b = hexdec( substr( $hex, 4, 2 ) );
1319
+
1320
+            // Return RGB values as an array
1321
+            return $r . ',' . $g . ',' . $b;
1322
+        }
1323
+
1324
+        /**
1325
+         * Build the CSS to overwrite a bootstrap color variable.
1326
+         *
1327
+         * @param $type
1328
+         * @param $color_code
1329
+         * @param $compatibility
1330
+         *
1331
+         * @return string
1332
+         */
1333
+        public static function css_overwrite_bs5($type,$color_code,$compatibility, $hex = '' ){
1334
+            global $aui_bs5;
1335
+
1336
+            $is_var = false;
1337
+            $is_custom = strpos($type, 'custom-') !== false ? true : false;
1338
+            if(!$color_code){return '';}
1339
+            if(strpos($color_code, 'var') !== false){
1340
+                //if(!sanitize_hex_color($color_code)){
1341
+                $color_code = esc_attr($color_code);
1342
+                $is_var = true;
1343 1343
 //				$color_code = "rgba($color_code, 0.5)";
1344 1344
 //                echo '###1'.$color_code.'###';//exit;
1345
-			}
1345
+            }
1346 1346
 
1347 1347
 //            echo '@@@'.$color_code.'==='.self::hex_to_rgb($color_code);exit;
1348 1348
 
1349
-			if(!$color_code){return '';}
1349
+            if(!$color_code){return '';}
1350 1350
 
1351
-			$rgb = self::hex_to_rgb($hex);
1351
+            $rgb = self::hex_to_rgb($hex);
1352 1352
 
1353
-			if($compatibility===true || $compatibility===1){
1354
-				$compatibility = '.bsui';
1355
-			}elseif(!$compatibility){
1356
-				$compatibility = '';
1357
-			}else{
1358
-				$compatibility = esc_attr($compatibility);
1359
-			}
1353
+            if($compatibility===true || $compatibility===1){
1354
+                $compatibility = '.bsui';
1355
+            }elseif(!$compatibility){
1356
+                $compatibility = '';
1357
+            }else{
1358
+                $compatibility = esc_attr($compatibility);
1359
+            }
1360 1360
 
1361
-			$prefix = $compatibility ? $compatibility . " " : "";
1361
+            $prefix = $compatibility ? $compatibility . " " : "";
1362 1362
 
1363 1363
 
1364 1364
             $output = '';
1365 1365
 
1366 1366
 //            echo '####'.$color_code;exit;
1367 1367
 
1368
-			$type = sanitize_html_class($type);
1368
+            $type = sanitize_html_class($type);
1369
+
1370
+            /**
1371
+             * c = color, b = background color, o = border-color, f = fill
1372
+             */
1373
+            $selectors = array(
1374
+                ".btn-{$type}"                                              => array( 'b', 'o' ),
1375
+                ".btn-{$type}.disabled"                                     => array( 'b', 'o' ),
1376
+                ".btn-{$type}:disabled"                                     => array( 'b', 'o' ),
1377
+                ".btn-outline-{$type}"                                      => array( 'c', 'o' ),
1378
+                ".btn-outline-{$type}:hover"                                => array( 'b', 'o' ),
1379
+                ".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ),
1380
+                ".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ),
1381
+                ".show>.btn-outline-{$type}.dropdown-toggle"                => array( 'b', 'o' ),
1382
+                ".badge-{$type}"                                            => array( 'b' ),
1383
+                ".alert-{$type}"                                            => array( 'b', 'o' ),
1384
+                ".bg-{$type}"                                               => array( 'b', 'f' ),
1385
+                ".btn-link.btn-{$type}"                                     => array( 'c' ),
1386
+                ".text-{$type}"                                     => array( 'c' ),
1387
+            );
1388
+
1389
+            if ( $aui_bs5 ) {
1390
+                unset($selectors[".alert-{$type}" ]);
1391
+            }
1369 1392
 
1370
-			/**
1371
-			 * c = color, b = background color, o = border-color, f = fill
1372
-			 */
1373
-			$selectors = array(
1374
-				".btn-{$type}"                                              => array( 'b', 'o' ),
1375
-				".btn-{$type}.disabled"                                     => array( 'b', 'o' ),
1376
-				".btn-{$type}:disabled"                                     => array( 'b', 'o' ),
1377
-				".btn-outline-{$type}"                                      => array( 'c', 'o' ),
1378
-				".btn-outline-{$type}:hover"                                => array( 'b', 'o' ),
1379
-				".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ),
1380
-				".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ),
1381
-				".show>.btn-outline-{$type}.dropdown-toggle"                => array( 'b', 'o' ),
1382
-				".badge-{$type}"                                            => array( 'b' ),
1383
-				".alert-{$type}"                                            => array( 'b', 'o' ),
1384
-				".bg-{$type}"                                               => array( 'b', 'f' ),
1385
-				".btn-link.btn-{$type}"                                     => array( 'c' ),
1386
-				".text-{$type}"                                     => array( 'c' ),
1387
-			);
1388
-
1389
-			if ( $aui_bs5 ) {
1390
-				unset($selectors[".alert-{$type}" ]);
1391
-			}
1392
-
1393
-			if ( $type == 'primary' ) {
1394
-				$selectors = $selectors + array(
1395
-						'a'                                                                                                    => array( 'c' ),
1396
-						'.btn-link'                                                                                            => array( 'c' ),
1397
-						'.dropdown-item.active'                                                                                => array( 'b' ),
1398
-						'.custom-control-input:checked~.custom-control-label::before'                                          => array(
1399
-							'b',
1400
-							'o'
1401
-						),
1402
-						'.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before'                   => array(
1403
-							'b',
1404
-							'o'
1405
-						),
1406
-						'.nav-pills .nav-link.active'                                                                          => array( 'b' ),
1407
-						'.nav-pills .show>.nav-link'                                                                           => array( 'b' ),
1408
-						'.page-link'                                                                                           => array( 'c' ),
1409
-						'.page-item.active .page-link'                                                                         => array(
1410
-							'b',
1411
-							'o'
1412
-						),
1413
-						'.progress-bar'                                                                                        => array( 'b' ),
1414
-						'.list-group-item.active'                                                                              => array(
1415
-							'b',
1416
-							'o'
1417
-						),
1418
-						'.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ),
1419
-					);
1420
-			}
1393
+            if ( $type == 'primary' ) {
1394
+                $selectors = $selectors + array(
1395
+                        'a'                                                                                                    => array( 'c' ),
1396
+                        '.btn-link'                                                                                            => array( 'c' ),
1397
+                        '.dropdown-item.active'                                                                                => array( 'b' ),
1398
+                        '.custom-control-input:checked~.custom-control-label::before'                                          => array(
1399
+                            'b',
1400
+                            'o'
1401
+                        ),
1402
+                        '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before'                   => array(
1403
+                            'b',
1404
+                            'o'
1405
+                        ),
1406
+                        '.nav-pills .nav-link.active'                                                                          => array( 'b' ),
1407
+                        '.nav-pills .show>.nav-link'                                                                           => array( 'b' ),
1408
+                        '.page-link'                                                                                           => array( 'c' ),
1409
+                        '.page-item.active .page-link'                                                                         => array(
1410
+                            'b',
1411
+                            'o'
1412
+                        ),
1413
+                        '.progress-bar'                                                                                        => array( 'b' ),
1414
+                        '.list-group-item.active'                                                                              => array(
1415
+                            'b',
1416
+                            'o'
1417
+                        ),
1418
+                        '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ),
1419
+                    );
1420
+            }
1421 1421
 
1422 1422
 
1423 1423
 
1424 1424
             // link
1425
-			if ( $type === 'primary' ) {
1426
-				$output .= 'html body {--bs-link-hover-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .75); --bs-link-color: var(--bs-'.esc_attr($type).'); }';
1427
-				$output .= $prefix . ' .breadcrumb{--bs-breadcrumb-item-active-color: '.esc_attr($color_code).';  }';
1428
-				$output .= $prefix . ' .navbar { --bs-nav-link-hover-color: '.esc_attr($color_code).'; --bs-navbar-hover-color: '.esc_attr($color_code).'; --bs-navbar-active-color: '.esc_attr($color_code).'; }';
1425
+            if ( $type === 'primary' ) {
1426
+                $output .= 'html body {--bs-link-hover-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .75); --bs-link-color: var(--bs-'.esc_attr($type).'); }';
1427
+                $output .= $prefix . ' .breadcrumb{--bs-breadcrumb-item-active-color: '.esc_attr($color_code).';  }';
1428
+                $output .= $prefix . ' .navbar { --bs-nav-link-hover-color: '.esc_attr($color_code).'; --bs-navbar-hover-color: '.esc_attr($color_code).'; --bs-navbar-active-color: '.esc_attr($color_code).'; }';
1429 1429
 
1430
-				$output .= $prefix . ' a{color: var(--bs-'.esc_attr($type).');}';
1431
-				$output .= $prefix . ' .text-primary{color: var(--bs-'.esc_attr($type).') !important;}';
1430
+                $output .= $prefix . ' a{color: var(--bs-'.esc_attr($type).');}';
1431
+                $output .= $prefix . ' .text-primary{color: var(--bs-'.esc_attr($type).') !important;}';
1432 1432
 
1433 1433
                 // dropdown
1434
-				$output .= $prefix . ' .dropdown-menu{--bs-dropdown-link-hover-color: var(--bs-'.esc_attr($type).'); --bs-dropdown-link-active-color: var(--bs-'.esc_attr($type).');}';
1434
+                $output .= $prefix . ' .dropdown-menu{--bs-dropdown-link-hover-color: var(--bs-'.esc_attr($type).'); --bs-dropdown-link-active-color: var(--bs-'.esc_attr($type).');}';
1435 1435
 
1436 1436
                 // pagination
1437
-				$output .= $prefix . ' .pagination{--bs-pagination-hover-color: var(--bs-'.esc_attr($type).'); --bs-pagination-active-bg: var(--bs-'.esc_attr($type).');}';
1437
+                $output .= $prefix . ' .pagination{--bs-pagination-hover-color: var(--bs-'.esc_attr($type).'); --bs-pagination-active-bg: var(--bs-'.esc_attr($type).');}';
1438 1438
 
1439
-			}
1439
+            }
1440 1440
 
1441
-			$output .= $prefix . ' .link-'.esc_attr($type).' {color: var(--bs-'.esc_attr($type).'-rgb) !important;}';
1442
-			$output .= $prefix . ' .link-'.esc_attr($type).':hover {color: rgba(var(--bs-'.esc_attr($type).'-rgb), .8) !important;}';
1441
+            $output .= $prefix . ' .link-'.esc_attr($type).' {color: var(--bs-'.esc_attr($type).'-rgb) !important;}';
1442
+            $output .= $prefix . ' .link-'.esc_attr($type).':hover {color: rgba(var(--bs-'.esc_attr($type).'-rgb), .8) !important;}';
1443 1443
 
1444
-			//  buttons
1445
-			$output .= $prefix . ' .btn-'.esc_attr($type).'{';
1446
-			$output .= ' 
1444
+            //  buttons
1445
+            $output .= $prefix . ' .btn-'.esc_attr($type).'{';
1446
+            $output .= ' 
1447 1447
             --bs-btn-bg: '.esc_attr($color_code).';
1448 1448
             --bs-btn-border-color: '.esc_attr($color_code).';
1449 1449
             --bs-btn-hover-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .9);
@@ -1461,11 +1461,11 @@  discard block
 block discarded – undo
1461 1461
 //			--bs-btn-active-color: #fff;
1462 1462
 //			--bs-btn-disabled-color: #fff;
1463 1463
 //            ';
1464
-			$output .= '}';
1464
+            $output .= '}';
1465 1465
 
1466
-			//  buttons outline
1467
-			$output .= $prefix . ' .btn-outline-'.esc_attr($type).'{';
1468
-			$output .= ' 
1466
+            //  buttons outline
1467
+            $output .= $prefix . ' .btn-outline-'.esc_attr($type).'{';
1468
+            $output .= ' 
1469 1469
 			--bs-btn-color: '.esc_attr($color_code).';
1470 1470
             --bs-btn-border-color: '.esc_attr($color_code).';
1471 1471
             --bs-btn-hover-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .9);
@@ -1483,37 +1483,37 @@  discard block
 block discarded – undo
1483 1483
 //			--bs-btn-active-color: #fff;
1484 1484
 //			--bs-btn-disabled-color: #fff;
1485 1485
 //            ';
1486
-			$output .= '}';
1486
+            $output .= '}';
1487 1487
 
1488 1488
 
1489 1489
             // button hover
1490
-			$output .= $prefix . ' .btn-'.esc_attr($type).':hover{';
1491
-			$output .= ' 
1490
+            $output .= $prefix . ' .btn-'.esc_attr($type).':hover{';
1491
+            $output .= ' 
1492 1492
             box-shadow: 0 0.25rem 0.25rem 0.125rem rgb(var(--bs-'.esc_attr($type).'-rgb), .1), 0 0.375rem 0.75rem -0.125rem rgb(var(--bs-'.esc_attr($type).'-rgb) , .4);
1493 1493
             }
1494 1494
             ';
1495 1495
 
1496 1496
 
1497
-			if ( $aui_bs5 ) {
1497
+            if ( $aui_bs5 ) {
1498 1498
 //				$output .= $is_var ? 'html body {--bs-'.esc_attr($type).'-rgb: '.$color_code.'; }' : 'html body {--bs-'.esc_attr($type).'-rgb: '.self::hex_to_rgb($color_code).'; }';
1499
-				$output .= 'html body {--bs-'.esc_attr($type).': '.esc_attr($color_code).'; }';
1500
-				$output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }';
1501
-			}
1499
+                $output .= 'html body {--bs-'.esc_attr($type).': '.esc_attr($color_code).'; }';
1500
+                $output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }';
1501
+            }
1502 1502
 
1503 1503
 
1504
-			if ( $is_custom ) {
1504
+            if ( $is_custom ) {
1505 1505
 
1506 1506
 //				echo '###'.$type;exit;
1507 1507
 
1508
-				// build rules into each type
1509
-				foreach($selectors as $selector => $types){
1510
-					$selector = $compatibility ? $compatibility . " ".$selector : $selector;
1511
-					$types = array_combine($types,$types);
1512
-					if(isset($types['c'])){$color[] = $selector;}
1513
-					if(isset($types['b'])){$background[] = $selector;}
1514
-					if(isset($types['o'])){$border[] = $selector;}
1515
-					if(isset($types['f'])){$fill[] = $selector;}
1516
-				}
1508
+                // build rules into each type
1509
+                foreach($selectors as $selector => $types){
1510
+                    $selector = $compatibility ? $compatibility . " ".$selector : $selector;
1511
+                    $types = array_combine($types,$types);
1512
+                    if(isset($types['c'])){$color[] = $selector;}
1513
+                    if(isset($types['b'])){$background[] = $selector;}
1514
+                    if(isset($types['o'])){$border[] = $selector;}
1515
+                    if(isset($types['f'])){$fill[] = $selector;}
1516
+                }
1517 1517
 
1518 1518
 //				// build rules into each type
1519 1519
 //				foreach($important_selectors as $selector => $types){
@@ -1525,68 +1525,68 @@  discard block
 block discarded – undo
1525 1525
 //					if(isset($types['f'])){$fill_i[] = $selector;}
1526 1526
 //				}
1527 1527
 
1528
-				// add any color rules
1529
-				if(!empty($color)){
1530
-					$output .= implode(",",$color) . "{color: $color_code;} ";
1531
-				}
1532
-				if(!empty($color_i)){
1533
-					$output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1534
-				}
1528
+                // add any color rules
1529
+                if(!empty($color)){
1530
+                    $output .= implode(",",$color) . "{color: $color_code;} ";
1531
+                }
1532
+                if(!empty($color_i)){
1533
+                    $output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1534
+                }
1535 1535
 
1536
-				// add any background color rules
1537
-				if(!empty($background)){
1538
-					$output .= implode(",",$background) . "{background-color: $color_code;} ";
1539
-				}
1540
-				if(!empty($background_i)){
1541
-					$output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} ";
1536
+                // add any background color rules
1537
+                if(!empty($background)){
1538
+                    $output .= implode(",",$background) . "{background-color: $color_code;} ";
1539
+                }
1540
+                if(!empty($background_i)){
1541
+                    $output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} ";
1542 1542
 //				$output .= implode(",",$background_i) . "{background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;} ";
1543
-				}
1543
+                }
1544 1544
 
1545
-				// add any border color rules
1546
-				if(!empty($border)){
1547
-					$output .= implode(",",$border) . "{border-color: $color_code;} ";
1548
-				}
1549
-				if(!empty($border_i)){
1550
-					$output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1551
-				}
1545
+                // add any border color rules
1546
+                if(!empty($border)){
1547
+                    $output .= implode(",",$border) . "{border-color: $color_code;} ";
1548
+                }
1549
+                if(!empty($border_i)){
1550
+                    $output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1551
+                }
1552 1552
 
1553
-				// add any fill color rules
1554
-				if(!empty($fill)){
1555
-					$output .= implode(",",$fill) . "{fill: $color_code;} ";
1556
-				}
1557
-				if(!empty($fill_i)){
1558
-					$output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1559
-				}
1553
+                // add any fill color rules
1554
+                if(!empty($fill)){
1555
+                    $output .= implode(",",$fill) . "{fill: $color_code;} ";
1556
+                }
1557
+                if(!empty($fill_i)){
1558
+                    $output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1559
+                }
1560 1560
 
1561
-			}
1561
+            }
1562 1562
 
1563 1563
 
1564 1564
 
1565 1565
 
1566
-			$transition = $is_var ? 'transition: color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,filter 0.15s ease-in-out;' : '';
1567
-			// darken
1568
-			$darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075");
1569
-			$darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10");
1570
-			$darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125");
1571
-			$darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4");
1566
+            $transition = $is_var ? 'transition: color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,filter 0.15s ease-in-out;' : '';
1567
+            // darken
1568
+            $darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075");
1569
+            $darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10");
1570
+            $darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125");
1571
+            $darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4");
1572 1572
 
1573
-			// lighten
1574
-			$lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25");
1573
+            // lighten
1574
+            $lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25");
1575 1575
 
1576
-			// opacity see https://css-tricks.com/8-digit-hex-codes/
1577
-			$op_25 = $color_code."40"; // 25% opacity
1576
+            // opacity see https://css-tricks.com/8-digit-hex-codes/
1577
+            $op_25 = $color_code."40"; // 25% opacity
1578 1578
 
1579 1579
 
1580
-			// button states
1581
-			$output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : '';
1582
-			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1580
+            // button states
1581
+            $output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : '';
1582
+            $output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1583 1583
 //			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: #000;    border-color: #000;} ";
1584
-			$output .= $prefix ." .btn-outline-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-{$type}.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1585
-			$output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active, $prefix .btn-{$type}:not(:disabled):not(.disabled).active, .show>$prefix .btn-{$type}.dropdown-toggle{background-color: ".$darker_10.";    border-color: ".$darker_125.";} ";
1584
+            $output .= $prefix ." .btn-outline-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-{$type}.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1585
+            $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active, $prefix .btn-{$type}:not(:disabled):not(.disabled).active, .show>$prefix .btn-{$type}.dropdown-toggle{background-color: ".$darker_10.";    border-color: ".$darker_125.";} ";
1586 1586
             $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-{$type}.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} ";
1587 1587
             $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-{$type}:not(:disabled):not(.disabled):focus {box-shadow: 0 0.25rem 0.25rem 0.125rem rgba(var(--bs-{$type}-rgb), 0.1), 0 0.375rem 0.75rem -0.125rem rgba(var(--bs-{$type}-rgb), 0.4);} ";
1588 1588
 
1589
-			// text
1589
+            // text
1590 1590
 //			$output .= $prefix .".xxx, .text-{$type} {color: var(--bs-".esc_attr($type).");} ";
1591 1591
 
1592 1592
 
@@ -1601,777 +1601,777 @@  discard block
 block discarded – undo
1601 1601
 //				$output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1602 1602
 //			}
1603 1603
 
1604
-			// alerts
1605
-			if ( $aui_bs5 ) {
1604
+            // alerts
1605
+            if ( $aui_bs5 ) {
1606 1606
 //				$output .= $is_var ? '' : $prefix ." .alert-{$type} {background-color: ".$color_code."20;    border-color: ".$color_code."30;color:$darker_40} ";
1607
-				$output .= $prefix ." .alert-{$type} {--bs-alert-bg: rgba(var(--bs-{$type}-rgb), .1 ) !important;--bs-alert-border-color: rgba(var(--bs-{$type}-rgb), .25 ) !important;--bs-alert-color: rgba(var(--bs-{$type}-rgb), 1 ) !important;} ";
1608
-			}
1609
-
1610
-			return $output;
1611
-		}
1612
-
1613
-		/**
1614
-		 * Build the CSS to overwrite a bootstrap color variable.
1615
-		 *
1616
-		 * @param $type
1617
-		 * @param $color_code
1618
-		 * @param $compatibility
1619
-		 *
1620
-		 * @return string
1621
-		 */
1622
-		public static function css_overwrite($type,$color_code,$compatibility, $hex = '' ){
1607
+                $output .= $prefix ." .alert-{$type} {--bs-alert-bg: rgba(var(--bs-{$type}-rgb), .1 ) !important;--bs-alert-border-color: rgba(var(--bs-{$type}-rgb), .25 ) !important;--bs-alert-color: rgba(var(--bs-{$type}-rgb), 1 ) !important;} ";
1608
+            }
1609
+
1610
+            return $output;
1611
+        }
1612
+
1613
+        /**
1614
+         * Build the CSS to overwrite a bootstrap color variable.
1615
+         *
1616
+         * @param $type
1617
+         * @param $color_code
1618
+         * @param $compatibility
1619
+         *
1620
+         * @return string
1621
+         */
1622
+        public static function css_overwrite($type,$color_code,$compatibility, $hex = '' ){
1623 1623
             global $aui_bs5;
1624 1624
 
1625
-			$is_var = false;
1626
-			if(!$color_code){return '';}
1627
-			if(strpos($color_code, 'var') !== false){
1628
-				//if(!sanitize_hex_color($color_code)){
1629
-				$color_code = esc_attr($color_code);
1630
-				$is_var = true;
1625
+            $is_var = false;
1626
+            if(!$color_code){return '';}
1627
+            if(strpos($color_code, 'var') !== false){
1628
+                //if(!sanitize_hex_color($color_code)){
1629
+                $color_code = esc_attr($color_code);
1630
+                $is_var = true;
1631 1631
 //				$color_code = "rgba($color_code, 0.5)";
1632 1632
 //                echo '###1'.$color_code.'###';//exit;
1633
-			}
1633
+            }
1634 1634
 
1635 1635
 //            echo '@@@'.$color_code.'==='.self::hex_to_rgb($color_code);exit;
1636 1636
 
1637
-			if(!$color_code){return '';}
1637
+            if(!$color_code){return '';}
1638 1638
 
1639 1639
             $rgb = self::hex_to_rgb($hex);
1640 1640
 
1641
-			if($compatibility===true || $compatibility===1){
1642
-				$compatibility = '.bsui';
1643
-			}elseif(!$compatibility){
1644
-				$compatibility = '';
1645
-			}else{
1646
-				$compatibility = esc_attr($compatibility);
1647
-			}
1641
+            if($compatibility===true || $compatibility===1){
1642
+                $compatibility = '.bsui';
1643
+            }elseif(!$compatibility){
1644
+                $compatibility = '';
1645
+            }else{
1646
+                $compatibility = esc_attr($compatibility);
1647
+            }
1648 1648
 
1649 1649
 
1650 1650
 
1651 1651
 //            echo '####'.$color_code;exit;
1652 1652
 
1653
-			$type = sanitize_html_class($type);
1654
-
1655
-			/**
1656
-			 * c = color, b = background color, o = border-color, f = fill
1657
-			 */
1658
-			$selectors = array(
1659
-				".btn-{$type}"                                              => array( 'b', 'o' ),
1660
-				".btn-{$type}.disabled"                                     => array( 'b', 'o' ),
1661
-				".btn-{$type}:disabled"                                     => array( 'b', 'o' ),
1662
-				".btn-outline-{$type}"                                      => array( 'c', 'o' ),
1663
-				".btn-outline-{$type}:hover"                                => array( 'b', 'o' ),
1664
-				".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ),
1665
-				".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ),
1666
-				".show>.btn-outline-{$type}.dropdown-toggle"                => array( 'b', 'o' ),
1667
-				".badge-{$type}"                                            => array( 'b' ),
1668
-				".alert-{$type}"                                            => array( 'b', 'o' ),
1669
-				".bg-{$type}"                                               => array( 'b', 'f' ),
1670
-				".btn-link.btn-{$type}"                                     => array( 'c' ),
1671
-			);
1672
-
1673
-			if ( $aui_bs5 ) {
1653
+            $type = sanitize_html_class($type);
1654
+
1655
+            /**
1656
+             * c = color, b = background color, o = border-color, f = fill
1657
+             */
1658
+            $selectors = array(
1659
+                ".btn-{$type}"                                              => array( 'b', 'o' ),
1660
+                ".btn-{$type}.disabled"                                     => array( 'b', 'o' ),
1661
+                ".btn-{$type}:disabled"                                     => array( 'b', 'o' ),
1662
+                ".btn-outline-{$type}"                                      => array( 'c', 'o' ),
1663
+                ".btn-outline-{$type}:hover"                                => array( 'b', 'o' ),
1664
+                ".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ),
1665
+                ".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ),
1666
+                ".show>.btn-outline-{$type}.dropdown-toggle"                => array( 'b', 'o' ),
1667
+                ".badge-{$type}"                                            => array( 'b' ),
1668
+                ".alert-{$type}"                                            => array( 'b', 'o' ),
1669
+                ".bg-{$type}"                                               => array( 'b', 'f' ),
1670
+                ".btn-link.btn-{$type}"                                     => array( 'c' ),
1671
+            );
1672
+
1673
+            if ( $aui_bs5 ) {
1674 1674
                 unset($selectors[".alert-{$type}" ]);
1675
-			}
1676
-
1677
-			if ( $type == 'primary' ) {
1678
-				$selectors = $selectors + array(
1679
-						'a'                                                                                                    => array( 'c' ),
1680
-						'.btn-link'                                                                                            => array( 'c' ),
1681
-						'.dropdown-item.active'                                                                                => array( 'b' ),
1682
-						'.custom-control-input:checked~.custom-control-label::before'                                          => array(
1683
-							'b',
1684
-							'o'
1685
-						),
1686
-						'.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before'                   => array(
1687
-							'b',
1688
-							'o'
1689
-						),
1690
-						'.nav-pills .nav-link.active'                                                                          => array( 'b' ),
1691
-						'.nav-pills .show>.nav-link'                                                                           => array( 'b' ),
1692
-						'.page-link'                                                                                           => array( 'c' ),
1693
-						'.page-item.active .page-link'                                                                         => array(
1694
-							'b',
1695
-							'o'
1696
-						),
1697
-						'.progress-bar'                                                                                        => array( 'b' ),
1698
-						'.list-group-item.active'                                                                              => array(
1699
-							'b',
1700
-							'o'
1701
-						),
1702
-						'.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ),
1675
+            }
1676
+
1677
+            if ( $type == 'primary' ) {
1678
+                $selectors = $selectors + array(
1679
+                        'a'                                                                                                    => array( 'c' ),
1680
+                        '.btn-link'                                                                                            => array( 'c' ),
1681
+                        '.dropdown-item.active'                                                                                => array( 'b' ),
1682
+                        '.custom-control-input:checked~.custom-control-label::before'                                          => array(
1683
+                            'b',
1684
+                            'o'
1685
+                        ),
1686
+                        '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before'                   => array(
1687
+                            'b',
1688
+                            'o'
1689
+                        ),
1690
+                        '.nav-pills .nav-link.active'                                                                          => array( 'b' ),
1691
+                        '.nav-pills .show>.nav-link'                                                                           => array( 'b' ),
1692
+                        '.page-link'                                                                                           => array( 'c' ),
1693
+                        '.page-item.active .page-link'                                                                         => array(
1694
+                            'b',
1695
+                            'o'
1696
+                        ),
1697
+                        '.progress-bar'                                                                                        => array( 'b' ),
1698
+                        '.list-group-item.active'                                                                              => array(
1699
+                            'b',
1700
+                            'o'
1701
+                        ),
1702
+                        '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ),
1703 1703
 //				    '.custom-range::-webkit-slider-thumb' => array('b'), // these break the inline rules...
1704 1704
 //				    '.custom-range::-moz-range-thumb' => array('b'),
1705 1705
 //				    '.custom-range::-ms-thumb' => array('b'),
1706
-					);
1707
-			}
1708
-
1709
-			$important_selectors = array(
1710
-				".bg-{$type}" => array('b','f'),
1711
-				".border-{$type}" => array('o'),
1712
-				".text-{$type}" => array('c'),
1713
-			);
1714
-
1715
-			$color = array();
1716
-			$color_i = array();
1717
-			$background = array();
1718
-			$background_i = array();
1719
-			$border = array();
1720
-			$border_i = array();
1721
-			$fill = array();
1722
-			$fill_i = array();
1723
-
1724
-			$output = '';
1725
-
1726
-			if ( $aui_bs5 ) {
1706
+                    );
1707
+            }
1708
+
1709
+            $important_selectors = array(
1710
+                ".bg-{$type}" => array('b','f'),
1711
+                ".border-{$type}" => array('o'),
1712
+                ".text-{$type}" => array('c'),
1713
+            );
1714
+
1715
+            $color = array();
1716
+            $color_i = array();
1717
+            $background = array();
1718
+            $background_i = array();
1719
+            $border = array();
1720
+            $border_i = array();
1721
+            $fill = array();
1722
+            $fill_i = array();
1723
+
1724
+            $output = '';
1725
+
1726
+            if ( $aui_bs5 ) {
1727 1727
 //				$output .= $is_var ? 'html body {--bs-'.esc_attr($type).'-rgb: '.$color_code.'; }' : 'html body {--bs-'.esc_attr($type).'-rgb: '.self::hex_to_rgb($color_code).'; }';
1728
-				$output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }';
1729
-			}
1730
-
1731
-			// build rules into each type
1732
-			foreach($selectors as $selector => $types){
1733
-				$selector = $compatibility ? $compatibility . " ".$selector : $selector;
1734
-				$types = array_combine($types,$types);
1735
-				if(isset($types['c'])){$color[] = $selector;}
1736
-				if(isset($types['b'])){$background[] = $selector;}
1737
-				if(isset($types['o'])){$border[] = $selector;}
1738
-				if(isset($types['f'])){$fill[] = $selector;}
1739
-			}
1740
-
1741
-			// build rules into each type
1742
-			foreach($important_selectors as $selector => $types){
1743
-				$selector = $compatibility ? $compatibility . " ".$selector : $selector;
1744
-				$types = array_combine($types,$types);
1745
-				if(isset($types['c'])){$color_i[] = $selector;}
1746
-				if(isset($types['b'])){$background_i[] = $selector;}
1747
-				if(isset($types['o'])){$border_i[] = $selector;}
1748
-				if(isset($types['f'])){$fill_i[] = $selector;}
1749
-			}
1750
-
1751
-			// add any color rules
1752
-			if(!empty($color)){
1753
-				$output .= implode(",",$color) . "{color: $color_code;} ";
1754
-			}
1755
-			if(!empty($color_i)){
1756
-				$output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1757
-			}
1758
-
1759
-			// add any background color rules
1760
-			if(!empty($background)){
1761
-				$output .= implode(",",$background) . "{background-color: $color_code;} ";
1762
-			}
1763
-			if(!empty($background_i)){
1764
-				$output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} ";
1728
+                $output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }';
1729
+            }
1730
+
1731
+            // build rules into each type
1732
+            foreach($selectors as $selector => $types){
1733
+                $selector = $compatibility ? $compatibility . " ".$selector : $selector;
1734
+                $types = array_combine($types,$types);
1735
+                if(isset($types['c'])){$color[] = $selector;}
1736
+                if(isset($types['b'])){$background[] = $selector;}
1737
+                if(isset($types['o'])){$border[] = $selector;}
1738
+                if(isset($types['f'])){$fill[] = $selector;}
1739
+            }
1740
+
1741
+            // build rules into each type
1742
+            foreach($important_selectors as $selector => $types){
1743
+                $selector = $compatibility ? $compatibility . " ".$selector : $selector;
1744
+                $types = array_combine($types,$types);
1745
+                if(isset($types['c'])){$color_i[] = $selector;}
1746
+                if(isset($types['b'])){$background_i[] = $selector;}
1747
+                if(isset($types['o'])){$border_i[] = $selector;}
1748
+                if(isset($types['f'])){$fill_i[] = $selector;}
1749
+            }
1750
+
1751
+            // add any color rules
1752
+            if(!empty($color)){
1753
+                $output .= implode(",",$color) . "{color: $color_code;} ";
1754
+            }
1755
+            if(!empty($color_i)){
1756
+                $output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1757
+            }
1758
+
1759
+            // add any background color rules
1760
+            if(!empty($background)){
1761
+                $output .= implode(",",$background) . "{background-color: $color_code;} ";
1762
+            }
1763
+            if(!empty($background_i)){
1764
+                $output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} ";
1765 1765
 //				$output .= implode(",",$background_i) . "{background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;} ";
1766
-			}
1766
+            }
1767 1767
 
1768
-			// add any border color rules
1769
-			if(!empty($border)){
1770
-				$output .= implode(",",$border) . "{border-color: $color_code;} ";
1771
-			}
1772
-			if(!empty($border_i)){
1773
-				$output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1774
-			}
1768
+            // add any border color rules
1769
+            if(!empty($border)){
1770
+                $output .= implode(",",$border) . "{border-color: $color_code;} ";
1771
+            }
1772
+            if(!empty($border_i)){
1773
+                $output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1774
+            }
1775 1775
 
1776
-			// add any fill color rules
1777
-			if(!empty($fill)){
1778
-				$output .= implode(",",$fill) . "{fill: $color_code;} ";
1779
-			}
1780
-			if(!empty($fill_i)){
1781
-				$output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1782
-			}
1776
+            // add any fill color rules
1777
+            if(!empty($fill)){
1778
+                $output .= implode(",",$fill) . "{fill: $color_code;} ";
1779
+            }
1780
+            if(!empty($fill_i)){
1781
+                $output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1782
+            }
1783 1783
 
1784 1784
 
1785
-			$prefix = $compatibility ? $compatibility . " " : "";
1785
+            $prefix = $compatibility ? $compatibility . " " : "";
1786 1786
 
1787
-			$transition = $is_var ? 'transition: color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,filter 0.15s ease-in-out;' : '';
1788
-			// darken
1789
-			$darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075");
1790
-			$darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10");
1791
-			$darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125");
1792
-			$darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4");
1787
+            $transition = $is_var ? 'transition: color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,filter 0.15s ease-in-out;' : '';
1788
+            // darken
1789
+            $darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075");
1790
+            $darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10");
1791
+            $darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125");
1792
+            $darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4");
1793 1793
 
1794
-			// lighten
1795
-			$lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25");
1794
+            // lighten
1795
+            $lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25");
1796 1796
 
1797
-			// opacity see https://css-tricks.com/8-digit-hex-codes/
1798
-			$op_25 = $color_code."40"; // 25% opacity
1797
+            // opacity see https://css-tricks.com/8-digit-hex-codes/
1798
+            $op_25 = $color_code."40"; // 25% opacity
1799 1799
 
1800 1800
 
1801
-			// button states
1802
-			$output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : '';
1803
-			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1801
+            // button states
1802
+            $output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : '';
1803
+            $output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1804 1804
 //			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: #000;    border-color: #000;} ";
1805
-			$output .= $prefix ." .btn-outline-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-{$type}.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1806
-			$output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active, $prefix .btn-{$type}:not(:disabled):not(.disabled).active, .show>$prefix .btn-{$type}.dropdown-toggle{background-color: ".$darker_10.";    border-color: ".$darker_125.";} ";
1807
-			$output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-{$type}.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} ";
1805
+            $output .= $prefix ." .btn-outline-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-{$type}.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1806
+            $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active, $prefix .btn-{$type}:not(:disabled):not(.disabled).active, .show>$prefix .btn-{$type}.dropdown-toggle{background-color: ".$darker_10.";    border-color: ".$darker_125.";} ";
1807
+            $output .= $prefix ." .btn-{$type}:not(:disabled):not(.disabled):active:focus, $prefix .btn-{$type}:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-{$type}.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} ";
1808 1808
 
1809
-			if ( $type == 'primary' ) {
1810
-				// dropdown's
1811
-				$output .= $prefix . " .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
1809
+            if ( $type == 'primary' ) {
1810
+                // dropdown's
1811
+                $output .= $prefix . " .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
1812 1812
 
1813
-				// input states
1814
-				$output .= $prefix . " .form-control:focus{border-color: " . $lighten_25 . ";box-shadow: 0 0 0 0.2rem $op_25;} ";
1813
+                // input states
1814
+                $output .= $prefix . " .form-control:focus{border-color: " . $lighten_25 . ";box-shadow: 0 0 0 0.2rem $op_25;} ";
1815 1815
 
1816
-				// page link
1817
-				$output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1818
-			}
1816
+                // page link
1817
+                $output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1818
+            }
1819 1819
 
1820 1820
             // alerts
1821
-			if ( $aui_bs5 ) {
1821
+            if ( $aui_bs5 ) {
1822 1822
 //				$output .= $is_var ? '' : $prefix ." .alert-{$type} {background-color: ".$color_code."20;    border-color: ".$color_code."30;color:$darker_40} ";
1823
-				$output .= $prefix ." .alert-{$type} {--bs-alert-bg: rgba(var(--bs-{$type}-rgb), .1 ) !important;--bs-alert-border-color: rgba(var(--bs-{$type}-rgb), .25 ) !important;--bs-alert-color: rgba(var(--bs-{$type}-rgb), 1 ) !important;} ";
1824
-			}
1825
-
1826
-			return $output;
1827
-		}
1828
-
1829
-		/**
1830
-		 *
1831
-		 * @deprecated 0.1.76 Use css_overwrite()
1832
-		 *
1833
-		 * @param $color_code
1834
-		 * @param $compatibility
1835
-		 * @param $use_variable
1836
-		 *
1837
-		 * @return string
1838
-		 */
1839
-		public static function css_primary($color_code,$compatibility, $use_variable = false){
1840
-
1841
-			if(!$use_variable){
1842
-				$color_code = sanitize_hex_color($color_code);
1843
-				if(!$color_code){return '';}
1844
-			}
1845
-
1846
-			/**
1847
-			 * c = color, b = background color, o = border-color, f = fill
1848
-			 */
1849
-			$selectors = array(
1850
-				'a' => array('c'),
1851
-				'.btn-primary' => array('b','o'),
1852
-				'.btn-primary.disabled' => array('b','o'),
1853
-				'.btn-primary:disabled' => array('b','o'),
1854
-				'.btn-outline-primary' => array('c','o'),
1855
-				'.btn-outline-primary:hover' => array('b','o'),
1856
-				'.btn-outline-primary:not(:disabled):not(.disabled).active' => array('b','o'),
1857
-				'.btn-outline-primary:not(:disabled):not(.disabled):active' => array('b','o'),
1858
-				'.show>.btn-outline-primary.dropdown-toggle' => array('b','o'),
1859
-				'.btn-link' => array('c'),
1860
-				'.dropdown-item.active' => array('b'),
1861
-				'.custom-control-input:checked~.custom-control-label::before' => array('b','o'),
1862
-				'.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before' => array('b','o'),
1823
+                $output .= $prefix ." .alert-{$type} {--bs-alert-bg: rgba(var(--bs-{$type}-rgb), .1 ) !important;--bs-alert-border-color: rgba(var(--bs-{$type}-rgb), .25 ) !important;--bs-alert-color: rgba(var(--bs-{$type}-rgb), 1 ) !important;} ";
1824
+            }
1825
+
1826
+            return $output;
1827
+        }
1828
+
1829
+        /**
1830
+         *
1831
+         * @deprecated 0.1.76 Use css_overwrite()
1832
+         *
1833
+         * @param $color_code
1834
+         * @param $compatibility
1835
+         * @param $use_variable
1836
+         *
1837
+         * @return string
1838
+         */
1839
+        public static function css_primary($color_code,$compatibility, $use_variable = false){
1840
+
1841
+            if(!$use_variable){
1842
+                $color_code = sanitize_hex_color($color_code);
1843
+                if(!$color_code){return '';}
1844
+            }
1845
+
1846
+            /**
1847
+             * c = color, b = background color, o = border-color, f = fill
1848
+             */
1849
+            $selectors = array(
1850
+                'a' => array('c'),
1851
+                '.btn-primary' => array('b','o'),
1852
+                '.btn-primary.disabled' => array('b','o'),
1853
+                '.btn-primary:disabled' => array('b','o'),
1854
+                '.btn-outline-primary' => array('c','o'),
1855
+                '.btn-outline-primary:hover' => array('b','o'),
1856
+                '.btn-outline-primary:not(:disabled):not(.disabled).active' => array('b','o'),
1857
+                '.btn-outline-primary:not(:disabled):not(.disabled):active' => array('b','o'),
1858
+                '.show>.btn-outline-primary.dropdown-toggle' => array('b','o'),
1859
+                '.btn-link' => array('c'),
1860
+                '.dropdown-item.active' => array('b'),
1861
+                '.custom-control-input:checked~.custom-control-label::before' => array('b','o'),
1862
+                '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before' => array('b','o'),
1863 1863
 //				'.custom-range::-webkit-slider-thumb' => array('b'), // these break the inline rules...
1864 1864
 //				'.custom-range::-moz-range-thumb' => array('b'),
1865 1865
 //				'.custom-range::-ms-thumb' => array('b'),
1866
-				'.nav-pills .nav-link.active' => array('b'),
1867
-				'.nav-pills .show>.nav-link' => array('b'),
1868
-				'.page-link' => array('c'),
1869
-				'.page-item.active .page-link' => array('b','o'),
1870
-				'.badge-primary' => array('b'),
1871
-				'.alert-primary' => array('b','o'),
1872
-				'.progress-bar' => array('b'),
1873
-				'.list-group-item.active' => array('b','o'),
1874
-				'.bg-primary' => array('b','f'),
1875
-				'.btn-link.btn-primary' => array('c'),
1876
-				'.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array('b'),
1877
-			);
1878
-
1879
-			$important_selectors = array(
1880
-				'.bg-primary' => array('b','f'),
1881
-				'.border-primary' => array('o'),
1882
-				'.text-primary' => array('c'),
1883
-			);
1884
-
1885
-			$color = array();
1886
-			$color_i = array();
1887
-			$background = array();
1888
-			$background_i = array();
1889
-			$border = array();
1890
-			$border_i = array();
1891
-			$fill = array();
1892
-			$fill_i = array();
1893
-
1894
-			$output = '';
1895
-
1896
-			// build rules into each type
1897
-			foreach($selectors as $selector => $types){
1898
-				$selector = $compatibility ? ".bsui ".$selector : $selector;
1899
-				$types = array_combine($types,$types);
1900
-				if(isset($types['c'])){$color[] = $selector;}
1901
-				if(isset($types['b'])){$background[] = $selector;}
1902
-				if(isset($types['o'])){$border[] = $selector;}
1903
-				if(isset($types['f'])){$fill[] = $selector;}
1904
-			}
1905
-
1906
-			// build rules into each type
1907
-			foreach($important_selectors as $selector => $types){
1908
-				$selector = $compatibility ? ".bsui ".$selector : $selector;
1909
-				$types = array_combine($types,$types);
1910
-				if(isset($types['c'])){$color_i[] = $selector;}
1911
-				if(isset($types['b'])){$background_i[] = $selector;}
1912
-				if(isset($types['o'])){$border_i[] = $selector;}
1913
-				if(isset($types['f'])){$fill_i[] = $selector;}
1914
-			}
1915
-
1916
-			// add any color rules
1917
-			if(!empty($color)){
1918
-				$output .= implode(",",$color) . "{color: $color_code;} ";
1919
-			}
1920
-			if(!empty($color_i)){
1921
-				$output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1922
-			}
1923
-
1924
-			// add any background color rules
1925
-			if(!empty($background)){
1926
-				$output .= implode(",",$background) . "{background-color: $color_code;} ";
1927
-			}
1928
-			if(!empty($background_i)){
1929
-				$output .= implode(",",$background_i) . "{background-color: $color_code !important;} ";
1930
-			}
1931
-
1932
-			// add any border color rules
1933
-			if(!empty($border)){
1934
-				$output .= implode(",",$border) . "{border-color: $color_code;} ";
1935
-			}
1936
-			if(!empty($border_i)){
1937
-				$output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1938
-			}
1939
-
1940
-			// add any fill color rules
1941
-			if(!empty($fill)){
1942
-				$output .= implode(",",$fill) . "{fill: $color_code;} ";
1943
-			}
1944
-			if(!empty($fill_i)){
1945
-				$output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1946
-			}
1947
-
1948
-
1949
-			$prefix = $compatibility ? ".bsui " : "";
1950
-
1951
-			// darken
1952
-			$darker_075 = self::css_hex_lighten_darken($color_code,"-0.075");
1953
-			$darker_10 = self::css_hex_lighten_darken($color_code,"-0.10");
1954
-			$darker_125 = self::css_hex_lighten_darken($color_code,"-0.125");
1955
-
1956
-			// lighten
1957
-			$lighten_25 = self::css_hex_lighten_darken($color_code,"0.25");
1958
-
1959
-			// opacity see https://css-tricks.com/8-digit-hex-codes/
1960
-			$op_25 = $color_code."40"; // 25% opacity
1961
-
1962
-
1963
-			// button states
1964
-			$output .= $prefix ." .btn-primary:hover, $prefix .btn-primary:focus, $prefix .btn-primary.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1965
-			$output .= $prefix ." .btn-outline-primary:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-primary.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1966
-			$output .= $prefix ." .btn-primary:not(:disabled):not(.disabled):active, $prefix .btn-primary:not(:disabled):not(.disabled).active, .show>$prefix .btn-primary.dropdown-toggle{background-color: ".$darker_10.";    border-color: ".$darker_125.";} ";
1967
-			$output .= $prefix ." .btn-primary:not(:disabled):not(.disabled):active:focus, $prefix .btn-primary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-primary.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} ";
1968
-
1969
-
1970
-			// dropdown's
1971
-			$output .= $prefix ." .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
1972
-
1973
-
1974
-			// input states
1975
-			$output .= $prefix ." .form-control:focus{border-color: ".$lighten_25.";box-shadow: 0 0 0 0.2rem $op_25;} ";
1976
-
1977
-			// page link
1978
-			$output .= $prefix ." .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1979
-
1980
-			return $output;
1981
-		}
1982
-
1983
-		/**
1984
-		 *
1985
-		 * @deprecated 0.1.76 Use css_overwrite()
1986
-		 *
1987
-		 * @param $color_code
1988
-		 * @param $compatibility
1989
-		 *
1990
-		 * @return string
1991
-		 */
1992
-		public static function css_secondary($color_code,$compatibility){;
1993
-			$color_code = sanitize_hex_color($color_code);
1994
-			if(!$color_code){return '';}
1995
-			/**
1996
-			 * c = color, b = background color, o = border-color, f = fill
1997
-			 */
1998
-			$selectors = array(
1999
-				'.btn-secondary' => array('b','o'),
2000
-				'.btn-secondary.disabled' => array('b','o'),
2001
-				'.btn-secondary:disabled' => array('b','o'),
2002
-				'.btn-outline-secondary' => array('c','o'),
2003
-				'.btn-outline-secondary:hover' => array('b','o'),
2004
-				'.btn-outline-secondary.disabled' => array('c'),
2005
-				'.btn-outline-secondary:disabled' => array('c'),
2006
-				'.btn-outline-secondary:not(:disabled):not(.disabled):active' => array('b','o'),
2007
-				'.btn-outline-secondary:not(:disabled):not(.disabled).active' => array('b','o'),
2008
-				'.btn-outline-secondary.dropdown-toggle' => array('b','o'),
2009
-				'.badge-secondary' => array('b'),
2010
-				'.alert-secondary' => array('b','o'),
2011
-				'.btn-link.btn-secondary' => array('c'),
2012
-			);
2013
-
2014
-			$important_selectors = array(
2015
-				'.bg-secondary' => array('b','f'),
2016
-				'.border-secondary' => array('o'),
2017
-				'.text-secondary' => array('c'),
2018
-			);
2019
-
2020
-			$color = array();
2021
-			$color_i = array();
2022
-			$background = array();
2023
-			$background_i = array();
2024
-			$border = array();
2025
-			$border_i = array();
2026
-			$fill = array();
2027
-			$fill_i = array();
2028
-
2029
-			$output = '';
2030
-
2031
-			// build rules into each type
2032
-			foreach($selectors as $selector => $types){
2033
-				$selector = $compatibility ? ".bsui ".$selector : $selector;
2034
-				$types = array_combine($types,$types);
2035
-				if(isset($types['c'])){$color[] = $selector;}
2036
-				if(isset($types['b'])){$background[] = $selector;}
2037
-				if(isset($types['o'])){$border[] = $selector;}
2038
-				if(isset($types['f'])){$fill[] = $selector;}
2039
-			}
2040
-
2041
-			// build rules into each type
2042
-			foreach($important_selectors as $selector => $types){
2043
-				$selector = $compatibility ? ".bsui ".$selector : $selector;
2044
-				$types = array_combine($types,$types);
2045
-				if(isset($types['c'])){$color_i[] = $selector;}
2046
-				if(isset($types['b'])){$background_i[] = $selector;}
2047
-				if(isset($types['o'])){$border_i[] = $selector;}
2048
-				if(isset($types['f'])){$fill_i[] = $selector;}
2049
-			}
2050
-
2051
-			// add any color rules
2052
-			if(!empty($color)){
2053
-				$output .= implode(",",$color) . "{color: $color_code;} ";
2054
-			}
2055
-			if(!empty($color_i)){
2056
-				$output .= implode(",",$color_i) . "{color: $color_code !important;} ";
2057
-			}
2058
-
2059
-			// add any background color rules
2060
-			if(!empty($background)){
2061
-				$output .= implode(",",$background) . "{background-color: $color_code;} ";
2062
-			}
2063
-			if(!empty($background_i)){
2064
-				$output .= implode(",",$background_i) . "{background-color: $color_code !important;} ";
2065
-			}
2066
-
2067
-			// add any border color rules
2068
-			if(!empty($border)){
2069
-				$output .= implode(",",$border) . "{border-color: $color_code;} ";
2070
-			}
2071
-			if(!empty($border_i)){
2072
-				$output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
2073
-			}
2074
-
2075
-			// add any fill color rules
2076
-			if(!empty($fill)){
2077
-				$output .= implode(",",$fill) . "{fill: $color_code;} ";
2078
-			}
2079
-			if(!empty($fill_i)){
2080
-				$output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
2081
-			}
2082
-
2083
-
2084
-			$prefix = $compatibility ? ".bsui " : "";
2085
-
2086
-			// darken
2087
-			$darker_075 = self::css_hex_lighten_darken($color_code,"-0.075");
2088
-			$darker_10 = self::css_hex_lighten_darken($color_code,"-0.10");
2089
-			$darker_125 = self::css_hex_lighten_darken($color_code,"-0.125");
2090
-
2091
-			// lighten
2092
-			$lighten_25 = self::css_hex_lighten_darken($color_code,"0.25");
2093
-
2094
-			// opacity see https://css-tricks.com/8-digit-hex-codes/
2095
-			$op_25 = $color_code."40"; // 25% opacity
2096
-
2097
-
2098
-			// button states
2099
-			$output .= $prefix ." .btn-secondary:hover{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
2100
-			$output .= $prefix ." .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-secondary.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
2101
-			$output .= $prefix ." .btn-secondary:not(:disabled):not(.disabled):active, $prefix .btn-secondary:not(:disabled):not(.disabled).active, .show>$prefix .btn-secondary.dropdown-toggle{background-color: ".$darker_10.";    border-color: ".$darker_125.";} ";
2102
-			$output .= $prefix ." .btn-secondary:not(:disabled):not(.disabled):active:focus, $prefix .btn-secondary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-secondary.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} ";
2103
-
2104
-
2105
-			return $output;
2106
-		}
2107
-
2108
-		/**
2109
-		 * Increases or decreases the brightness of a color by a percentage of the current brightness.
2110
-		 *
2111
-		 * @param   string  $hexCode        Supported formats: `#FFF`, `#FFFFFF`, `FFF`, `FFFFFF`
2112
-		 * @param   float   $adjustPercent  A number between -1 and 1. E.g. 0.3 = 30% lighter; -0.4 = 40% darker.
2113
-		 *
2114
-		 * @return  string
2115
-		 */
2116
-		public static function css_hex_lighten_darken($hexCode, $adjustPercent) {
2117
-			$hexCode = ltrim($hexCode, '#');
2118
-
2119
-			if ( strpos( $hexCode, 'rgba(' ) !== false || strpos( $hexCode, 'rgb(' ) !== false ) {
2120
-				return $hexCode;
2121
-			}
2122
-
2123
-			if (strlen($hexCode) == 3) {
2124
-				$hexCode = $hexCode[0] . $hexCode[0] . $hexCode[1] . $hexCode[1] . $hexCode[2] . $hexCode[2];
2125
-			}
2126
-
2127
-			$hexCode = array_map('hexdec', str_split($hexCode, 2));
2128
-
2129
-			foreach ($hexCode as & $color) {
2130
-				$adjustableLimit = $adjustPercent < 0 ? $color : 255 - $color;
2131
-				$adjustAmount = ceil($adjustableLimit * $adjustPercent);
2132
-
2133
-				$color = str_pad(dechex($color + $adjustAmount), 2, '0', STR_PAD_LEFT);
2134
-			}
2135
-
2136
-			return '#' . implode($hexCode);
2137
-		}
2138
-
2139
-		/**
2140
-		 * Check if we should display examples.
2141
-		 */
2142
-		public function maybe_show_examples(){
2143
-			if(current_user_can('manage_options') && isset($_REQUEST['preview-aui'])){
2144
-				echo "<head>";
2145
-				wp_head();
2146
-				echo "</head>";
2147
-				echo "<body>";
2148
-				echo $this->get_examples(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2149
-				echo "</body>";
2150
-				exit;
2151
-			}
2152
-		}
2153
-
2154
-		/**
2155
-		 * Get developer examples.
2156
-		 *
2157
-		 * @return string
2158
-		 */
2159
-		public function get_examples(){
2160
-			$output = '';
2161
-
2162
-
2163
-			// open form
2164
-			$output .= "<form class='p-5 m-5 border rounded'>";
2165
-
2166
-			// input example
2167
-			$output .= aui()->input(array(
2168
-				'type'  =>  'text',
2169
-				'id'    =>  'text-example',
2170
-				'name'    =>  'text-example',
2171
-				'placeholder'   => 'text placeholder',
2172
-				'title'   => 'Text input example',
2173
-				'value' =>  '',
2174
-				'required'  => false,
2175
-				'help_text' => 'help text',
2176
-				'label' => 'Text input example label'
2177
-			));
2178
-
2179
-			// input example
2180
-			$output .= aui()->input(array(
2181
-				'type'  =>  'url',
2182
-				'id'    =>  'text-example2',
2183
-				'name'    =>  'text-example',
2184
-				'placeholder'   => 'url placeholder',
2185
-				'title'   => 'Text input example',
2186
-				'value' =>  '',
2187
-				'required'  => false,
2188
-				'help_text' => 'help text',
2189
-				'label' => 'Text input example label'
2190
-			));
2191
-
2192
-			// checkbox example
2193
-			$output .= aui()->input(array(
2194
-				'type'  =>  'checkbox',
2195
-				'id'    =>  'checkbox-example',
2196
-				'name'    =>  'checkbox-example',
2197
-				'placeholder'   => 'checkbox-example',
2198
-				'title'   => 'Checkbox example',
2199
-				'value' =>  '1',
2200
-				'checked'   => true,
2201
-				'required'  => false,
2202
-				'help_text' => 'help text',
2203
-				'label' => 'Checkbox checked'
2204
-			));
2205
-
2206
-			// checkbox example
2207
-			$output .= aui()->input(array(
2208
-				'type'  =>  'checkbox',
2209
-				'id'    =>  'checkbox-example2',
2210
-				'name'    =>  'checkbox-example2',
2211
-				'placeholder'   => 'checkbox-example',
2212
-				'title'   => 'Checkbox example',
2213
-				'value' =>  '1',
2214
-				'checked'   => false,
2215
-				'required'  => false,
2216
-				'help_text' => 'help text',
2217
-				'label' => 'Checkbox un-checked'
2218
-			));
2219
-
2220
-			// switch example
2221
-			$output .= aui()->input(array(
2222
-				'type'  =>  'checkbox',
2223
-				'id'    =>  'switch-example',
2224
-				'name'    =>  'switch-example',
2225
-				'placeholder'   => 'checkbox-example',
2226
-				'title'   => 'Switch example',
2227
-				'value' =>  '1',
2228
-				'checked'   => true,
2229
-				'switch'    => true,
2230
-				'required'  => false,
2231
-				'help_text' => 'help text',
2232
-				'label' => 'Switch on'
2233
-			));
2234
-
2235
-			// switch example
2236
-			$output .= aui()->input(array(
2237
-				'type'  =>  'checkbox',
2238
-				'id'    =>  'switch-example2',
2239
-				'name'    =>  'switch-example2',
2240
-				'placeholder'   => 'checkbox-example',
2241
-				'title'   => 'Switch example',
2242
-				'value' =>  '1',
2243
-				'checked'   => false,
2244
-				'switch'    => true,
2245
-				'required'  => false,
2246
-				'help_text' => 'help text',
2247
-				'label' => 'Switch off'
2248
-			));
2249
-
2250
-			// close form
2251
-			$output .= "</form>";
2252
-
2253
-			return $output;
2254
-		}
2255
-
2256
-		/**
2257
-		 * Calendar params.
2258
-		 *
2259
-		 * @since 0.1.44
2260
-		 *
2261
-		 * @return array Calendar params.
2262
-		 */
2263
-		public static function calendar_params() {
2264
-			$params = array(
2265
-				'month_long_1' => __( 'January', 'ayecode-connect' ),
2266
-				'month_long_2' => __( 'February', 'ayecode-connect' ),
2267
-				'month_long_3' => __( 'March', 'ayecode-connect' ),
2268
-				'month_long_4' => __( 'April', 'ayecode-connect' ),
2269
-				'month_long_5' => __( 'May', 'ayecode-connect' ),
2270
-				'month_long_6' => __( 'June', 'ayecode-connect' ),
2271
-				'month_long_7' => __( 'July', 'ayecode-connect' ),
2272
-				'month_long_8' => __( 'August', 'ayecode-connect' ),
2273
-				'month_long_9' => __( 'September', 'ayecode-connect' ),
2274
-				'month_long_10' => __( 'October', 'ayecode-connect' ),
2275
-				'month_long_11' => __( 'November', 'ayecode-connect' ),
2276
-				'month_long_12' => __( 'December', 'ayecode-connect' ),
2277
-				'month_s_1' => _x( 'Jan', 'January abbreviation', 'ayecode-connect' ),
2278
-				'month_s_2' => _x( 'Feb', 'February abbreviation', 'ayecode-connect' ),
2279
-				'month_s_3' => _x( 'Mar', 'March abbreviation', 'ayecode-connect' ),
2280
-				'month_s_4' => _x( 'Apr', 'April abbreviation', 'ayecode-connect' ),
2281
-				'month_s_5' => _x( 'May', 'May abbreviation', 'ayecode-connect' ),
2282
-				'month_s_6' => _x( 'Jun', 'June abbreviation', 'ayecode-connect' ),
2283
-				'month_s_7' => _x( 'Jul', 'July abbreviation', 'ayecode-connect' ),
2284
-				'month_s_8' => _x( 'Aug', 'August abbreviation', 'ayecode-connect' ),
2285
-				'month_s_9' => _x( 'Sep', 'September abbreviation', 'ayecode-connect' ),
2286
-				'month_s_10' => _x( 'Oct', 'October abbreviation', 'ayecode-connect' ),
2287
-				'month_s_11' => _x( 'Nov', 'November abbreviation', 'ayecode-connect' ),
2288
-				'month_s_12' => _x( 'Dec', 'December abbreviation', 'ayecode-connect' ),
2289
-				'day_s1_1' => _x( 'S', 'Sunday initial', 'ayecode-connect' ),
2290
-				'day_s1_2' => _x( 'M', 'Monday initial', 'ayecode-connect' ),
2291
-				'day_s1_3' => _x( 'T', 'Tuesday initial', 'ayecode-connect' ),
2292
-				'day_s1_4' => _x( 'W', 'Wednesday initial', 'ayecode-connect' ),
2293
-				'day_s1_5' => _x( 'T', 'Friday initial', 'ayecode-connect' ),
2294
-				'day_s1_6' => _x( 'F', 'Thursday initial', 'ayecode-connect' ),
2295
-				'day_s1_7' => _x( 'S', 'Saturday initial', 'ayecode-connect' ),
2296
-				'day_s2_1' => __( 'Su', 'ayecode-connect' ),
2297
-				'day_s2_2' => __( 'Mo', 'ayecode-connect' ),
2298
-				'day_s2_3' => __( 'Tu', 'ayecode-connect' ),
2299
-				'day_s2_4' => __( 'We', 'ayecode-connect' ),
2300
-				'day_s2_5' => __( 'Th', 'ayecode-connect' ),
2301
-				'day_s2_6' => __( 'Fr', 'ayecode-connect' ),
2302
-				'day_s2_7' => __( 'Sa', 'ayecode-connect' ),
2303
-				'day_s3_1' => __( 'Sun', 'ayecode-connect' ),
2304
-				'day_s3_2' => __( 'Mon', 'ayecode-connect' ),
2305
-				'day_s3_3' => __( 'Tue', 'ayecode-connect' ),
2306
-				'day_s3_4' => __( 'Wed', 'ayecode-connect' ),
2307
-				'day_s3_5' => __( 'Thu', 'ayecode-connect' ),
2308
-				'day_s3_6' => __( 'Fri', 'ayecode-connect' ),
2309
-				'day_s3_7' => __( 'Sat', 'ayecode-connect' ),
2310
-				'day_s5_1' => __( 'Sunday', 'ayecode-connect' ),
2311
-				'day_s5_2' => __( 'Monday', 'ayecode-connect' ),
2312
-				'day_s5_3' => __( 'Tuesday', 'ayecode-connect' ),
2313
-				'day_s5_4' => __( 'Wednesday', 'ayecode-connect' ),
2314
-				'day_s5_5' => __( 'Thursday', 'ayecode-connect' ),
2315
-				'day_s5_6' => __( 'Friday', 'ayecode-connect' ),
2316
-				'day_s5_7' => __( 'Saturday', 'ayecode-connect' ),
2317
-				'am_lower' => __( 'am', 'ayecode-connect' ),
2318
-				'pm_lower' => __( 'pm', 'ayecode-connect' ),
2319
-				'am_upper' => __( 'AM', 'ayecode-connect' ),
2320
-				'pm_upper' => __( 'PM', 'ayecode-connect' ),
2321
-				'firstDayOfWeek' => (int) get_option( 'start_of_week' ),
2322
-				'time_24hr' => false,
2323
-				'year' => __( 'Year', 'ayecode-connect' ),
2324
-				'hour' => __( 'Hour', 'ayecode-connect' ),
2325
-				'minute' => __( 'Minute', 'ayecode-connect' ),
2326
-				'weekAbbreviation' => __( 'Wk', 'ayecode-connect' ),
2327
-				'rangeSeparator' => __( ' to ', 'ayecode-connect' ),
2328
-				'scrollTitle' => __( 'Scroll to increment', 'ayecode-connect' ),
2329
-				'toggleTitle' => __( 'Click to toggle', 'ayecode-connect' )
2330
-			);
2331
-
2332
-			return apply_filters( 'ayecode_ui_calendar_params', $params );
2333
-		}
2334
-
2335
-		/**
2336
-		 * Flatpickr calendar localize.
2337
-		 *
2338
-		 * @since 0.1.44
2339
-		 *
2340
-		 * @return string Calendar locale.
2341
-		 */
2342
-		public static function flatpickr_locale() {
2343
-			$params = self::calendar_params();
2344
-
2345
-			if ( is_string( $params ) ) {
2346
-				$params = html_entity_decode( $params, ENT_QUOTES, 'UTF-8' );
2347
-			} else {
2348
-				foreach ( (array) $params as $key => $value ) {
2349
-					if ( ! is_scalar( $value ) ) {
2350
-						continue;
2351
-					}
2352
-
2353
-					$params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2354
-				}
2355
-			}
1866
+                '.nav-pills .nav-link.active' => array('b'),
1867
+                '.nav-pills .show>.nav-link' => array('b'),
1868
+                '.page-link' => array('c'),
1869
+                '.page-item.active .page-link' => array('b','o'),
1870
+                '.badge-primary' => array('b'),
1871
+                '.alert-primary' => array('b','o'),
1872
+                '.progress-bar' => array('b'),
1873
+                '.list-group-item.active' => array('b','o'),
1874
+                '.bg-primary' => array('b','f'),
1875
+                '.btn-link.btn-primary' => array('c'),
1876
+                '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array('b'),
1877
+            );
1878
+
1879
+            $important_selectors = array(
1880
+                '.bg-primary' => array('b','f'),
1881
+                '.border-primary' => array('o'),
1882
+                '.text-primary' => array('c'),
1883
+            );
1884
+
1885
+            $color = array();
1886
+            $color_i = array();
1887
+            $background = array();
1888
+            $background_i = array();
1889
+            $border = array();
1890
+            $border_i = array();
1891
+            $fill = array();
1892
+            $fill_i = array();
1893
+
1894
+            $output = '';
1895
+
1896
+            // build rules into each type
1897
+            foreach($selectors as $selector => $types){
1898
+                $selector = $compatibility ? ".bsui ".$selector : $selector;
1899
+                $types = array_combine($types,$types);
1900
+                if(isset($types['c'])){$color[] = $selector;}
1901
+                if(isset($types['b'])){$background[] = $selector;}
1902
+                if(isset($types['o'])){$border[] = $selector;}
1903
+                if(isset($types['f'])){$fill[] = $selector;}
1904
+            }
1905
+
1906
+            // build rules into each type
1907
+            foreach($important_selectors as $selector => $types){
1908
+                $selector = $compatibility ? ".bsui ".$selector : $selector;
1909
+                $types = array_combine($types,$types);
1910
+                if(isset($types['c'])){$color_i[] = $selector;}
1911
+                if(isset($types['b'])){$background_i[] = $selector;}
1912
+                if(isset($types['o'])){$border_i[] = $selector;}
1913
+                if(isset($types['f'])){$fill_i[] = $selector;}
1914
+            }
1915
+
1916
+            // add any color rules
1917
+            if(!empty($color)){
1918
+                $output .= implode(",",$color) . "{color: $color_code;} ";
1919
+            }
1920
+            if(!empty($color_i)){
1921
+                $output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1922
+            }
1923
+
1924
+            // add any background color rules
1925
+            if(!empty($background)){
1926
+                $output .= implode(",",$background) . "{background-color: $color_code;} ";
1927
+            }
1928
+            if(!empty($background_i)){
1929
+                $output .= implode(",",$background_i) . "{background-color: $color_code !important;} ";
1930
+            }
1931
+
1932
+            // add any border color rules
1933
+            if(!empty($border)){
1934
+                $output .= implode(",",$border) . "{border-color: $color_code;} ";
1935
+            }
1936
+            if(!empty($border_i)){
1937
+                $output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1938
+            }
1939
+
1940
+            // add any fill color rules
1941
+            if(!empty($fill)){
1942
+                $output .= implode(",",$fill) . "{fill: $color_code;} ";
1943
+            }
1944
+            if(!empty($fill_i)){
1945
+                $output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1946
+            }
1947
+
1948
+
1949
+            $prefix = $compatibility ? ".bsui " : "";
1950
+
1951
+            // darken
1952
+            $darker_075 = self::css_hex_lighten_darken($color_code,"-0.075");
1953
+            $darker_10 = self::css_hex_lighten_darken($color_code,"-0.10");
1954
+            $darker_125 = self::css_hex_lighten_darken($color_code,"-0.125");
1955
+
1956
+            // lighten
1957
+            $lighten_25 = self::css_hex_lighten_darken($color_code,"0.25");
1958
+
1959
+            // opacity see https://css-tricks.com/8-digit-hex-codes/
1960
+            $op_25 = $color_code."40"; // 25% opacity
1961
+
1962
+
1963
+            // button states
1964
+            $output .= $prefix ." .btn-primary:hover, $prefix .btn-primary:focus, $prefix .btn-primary.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1965
+            $output .= $prefix ." .btn-outline-primary:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-primary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-primary.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1966
+            $output .= $prefix ." .btn-primary:not(:disabled):not(.disabled):active, $prefix .btn-primary:not(:disabled):not(.disabled).active, .show>$prefix .btn-primary.dropdown-toggle{background-color: ".$darker_10.";    border-color: ".$darker_125.";} ";
1967
+            $output .= $prefix ." .btn-primary:not(:disabled):not(.disabled):active:focus, $prefix .btn-primary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-primary.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} ";
2356 1968
 
2357
-			$day_s3 = array();
2358
-			$day_s5 = array();
2359 1969
 
2360
-			for ( $i = 1; $i <= 7; $i ++ ) {
2361
-				$day_s3[] = addslashes( $params[ 'day_s3_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2362
-				$day_s5[] = addslashes( $params[ 'day_s3_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2363
-			}
1970
+            // dropdown's
1971
+            $output .= $prefix ." .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
2364 1972
 
2365
-			$month_s = array();
2366
-			$month_long = array();
2367 1973
 
2368
-			for ( $i = 1; $i <= 12; $i ++ ) {
2369
-				$month_s[] = addslashes( $params[ 'month_s_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2370
-				$month_long[] = addslashes( $params[ 'month_long_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2371
-			}
1974
+            // input states
1975
+            $output .= $prefix ." .form-control:focus{border-color: ".$lighten_25.";box-shadow: 0 0 0 0.2rem $op_25;} ";
2372 1976
 
2373
-			ob_start();
2374
-		if ( 0 ) { ?><script><?php } ?>
1977
+            // page link
1978
+            $output .= $prefix ." .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1979
+
1980
+            return $output;
1981
+        }
1982
+
1983
+        /**
1984
+         *
1985
+         * @deprecated 0.1.76 Use css_overwrite()
1986
+         *
1987
+         * @param $color_code
1988
+         * @param $compatibility
1989
+         *
1990
+         * @return string
1991
+         */
1992
+        public static function css_secondary($color_code,$compatibility){;
1993
+            $color_code = sanitize_hex_color($color_code);
1994
+            if(!$color_code){return '';}
1995
+            /**
1996
+             * c = color, b = background color, o = border-color, f = fill
1997
+             */
1998
+            $selectors = array(
1999
+                '.btn-secondary' => array('b','o'),
2000
+                '.btn-secondary.disabled' => array('b','o'),
2001
+                '.btn-secondary:disabled' => array('b','o'),
2002
+                '.btn-outline-secondary' => array('c','o'),
2003
+                '.btn-outline-secondary:hover' => array('b','o'),
2004
+                '.btn-outline-secondary.disabled' => array('c'),
2005
+                '.btn-outline-secondary:disabled' => array('c'),
2006
+                '.btn-outline-secondary:not(:disabled):not(.disabled):active' => array('b','o'),
2007
+                '.btn-outline-secondary:not(:disabled):not(.disabled).active' => array('b','o'),
2008
+                '.btn-outline-secondary.dropdown-toggle' => array('b','o'),
2009
+                '.badge-secondary' => array('b'),
2010
+                '.alert-secondary' => array('b','o'),
2011
+                '.btn-link.btn-secondary' => array('c'),
2012
+            );
2013
+
2014
+            $important_selectors = array(
2015
+                '.bg-secondary' => array('b','f'),
2016
+                '.border-secondary' => array('o'),
2017
+                '.text-secondary' => array('c'),
2018
+            );
2019
+
2020
+            $color = array();
2021
+            $color_i = array();
2022
+            $background = array();
2023
+            $background_i = array();
2024
+            $border = array();
2025
+            $border_i = array();
2026
+            $fill = array();
2027
+            $fill_i = array();
2028
+
2029
+            $output = '';
2030
+
2031
+            // build rules into each type
2032
+            foreach($selectors as $selector => $types){
2033
+                $selector = $compatibility ? ".bsui ".$selector : $selector;
2034
+                $types = array_combine($types,$types);
2035
+                if(isset($types['c'])){$color[] = $selector;}
2036
+                if(isset($types['b'])){$background[] = $selector;}
2037
+                if(isset($types['o'])){$border[] = $selector;}
2038
+                if(isset($types['f'])){$fill[] = $selector;}
2039
+            }
2040
+
2041
+            // build rules into each type
2042
+            foreach($important_selectors as $selector => $types){
2043
+                $selector = $compatibility ? ".bsui ".$selector : $selector;
2044
+                $types = array_combine($types,$types);
2045
+                if(isset($types['c'])){$color_i[] = $selector;}
2046
+                if(isset($types['b'])){$background_i[] = $selector;}
2047
+                if(isset($types['o'])){$border_i[] = $selector;}
2048
+                if(isset($types['f'])){$fill_i[] = $selector;}
2049
+            }
2050
+
2051
+            // add any color rules
2052
+            if(!empty($color)){
2053
+                $output .= implode(",",$color) . "{color: $color_code;} ";
2054
+            }
2055
+            if(!empty($color_i)){
2056
+                $output .= implode(",",$color_i) . "{color: $color_code !important;} ";
2057
+            }
2058
+
2059
+            // add any background color rules
2060
+            if(!empty($background)){
2061
+                $output .= implode(",",$background) . "{background-color: $color_code;} ";
2062
+            }
2063
+            if(!empty($background_i)){
2064
+                $output .= implode(",",$background_i) . "{background-color: $color_code !important;} ";
2065
+            }
2066
+
2067
+            // add any border color rules
2068
+            if(!empty($border)){
2069
+                $output .= implode(",",$border) . "{border-color: $color_code;} ";
2070
+            }
2071
+            if(!empty($border_i)){
2072
+                $output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
2073
+            }
2074
+
2075
+            // add any fill color rules
2076
+            if(!empty($fill)){
2077
+                $output .= implode(",",$fill) . "{fill: $color_code;} ";
2078
+            }
2079
+            if(!empty($fill_i)){
2080
+                $output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
2081
+            }
2082
+
2083
+
2084
+            $prefix = $compatibility ? ".bsui " : "";
2085
+
2086
+            // darken
2087
+            $darker_075 = self::css_hex_lighten_darken($color_code,"-0.075");
2088
+            $darker_10 = self::css_hex_lighten_darken($color_code,"-0.10");
2089
+            $darker_125 = self::css_hex_lighten_darken($color_code,"-0.125");
2090
+
2091
+            // lighten
2092
+            $lighten_25 = self::css_hex_lighten_darken($color_code,"0.25");
2093
+
2094
+            // opacity see https://css-tricks.com/8-digit-hex-codes/
2095
+            $op_25 = $color_code."40"; // 25% opacity
2096
+
2097
+
2098
+            // button states
2099
+            $output .= $prefix ." .btn-secondary:hover{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
2100
+            $output .= $prefix ." .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, $prefix .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-outline-secondary.dropdown-toggle:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
2101
+            $output .= $prefix ." .btn-secondary:not(:disabled):not(.disabled):active, $prefix .btn-secondary:not(:disabled):not(.disabled).active, .show>$prefix .btn-secondary.dropdown-toggle{background-color: ".$darker_10.";    border-color: ".$darker_125.";} ";
2102
+            $output .= $prefix ." .btn-secondary:not(:disabled):not(.disabled):active:focus, $prefix .btn-secondary:not(:disabled):not(.disabled).active:focus, .show>$prefix .btn-secondary.dropdown-toggle:focus {box-shadow: 0 0 0 0.2rem $op_25;} ";
2103
+
2104
+
2105
+            return $output;
2106
+        }
2107
+
2108
+        /**
2109
+         * Increases or decreases the brightness of a color by a percentage of the current brightness.
2110
+         *
2111
+         * @param   string  $hexCode        Supported formats: `#FFF`, `#FFFFFF`, `FFF`, `FFFFFF`
2112
+         * @param   float   $adjustPercent  A number between -1 and 1. E.g. 0.3 = 30% lighter; -0.4 = 40% darker.
2113
+         *
2114
+         * @return  string
2115
+         */
2116
+        public static function css_hex_lighten_darken($hexCode, $adjustPercent) {
2117
+            $hexCode = ltrim($hexCode, '#');
2118
+
2119
+            if ( strpos( $hexCode, 'rgba(' ) !== false || strpos( $hexCode, 'rgb(' ) !== false ) {
2120
+                return $hexCode;
2121
+            }
2122
+
2123
+            if (strlen($hexCode) == 3) {
2124
+                $hexCode = $hexCode[0] . $hexCode[0] . $hexCode[1] . $hexCode[1] . $hexCode[2] . $hexCode[2];
2125
+            }
2126
+
2127
+            $hexCode = array_map('hexdec', str_split($hexCode, 2));
2128
+
2129
+            foreach ($hexCode as & $color) {
2130
+                $adjustableLimit = $adjustPercent < 0 ? $color : 255 - $color;
2131
+                $adjustAmount = ceil($adjustableLimit * $adjustPercent);
2132
+
2133
+                $color = str_pad(dechex($color + $adjustAmount), 2, '0', STR_PAD_LEFT);
2134
+            }
2135
+
2136
+            return '#' . implode($hexCode);
2137
+        }
2138
+
2139
+        /**
2140
+         * Check if we should display examples.
2141
+         */
2142
+        public function maybe_show_examples(){
2143
+            if(current_user_can('manage_options') && isset($_REQUEST['preview-aui'])){
2144
+                echo "<head>";
2145
+                wp_head();
2146
+                echo "</head>";
2147
+                echo "<body>";
2148
+                echo $this->get_examples(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2149
+                echo "</body>";
2150
+                exit;
2151
+            }
2152
+        }
2153
+
2154
+        /**
2155
+         * Get developer examples.
2156
+         *
2157
+         * @return string
2158
+         */
2159
+        public function get_examples(){
2160
+            $output = '';
2161
+
2162
+
2163
+            // open form
2164
+            $output .= "<form class='p-5 m-5 border rounded'>";
2165
+
2166
+            // input example
2167
+            $output .= aui()->input(array(
2168
+                'type'  =>  'text',
2169
+                'id'    =>  'text-example',
2170
+                'name'    =>  'text-example',
2171
+                'placeholder'   => 'text placeholder',
2172
+                'title'   => 'Text input example',
2173
+                'value' =>  '',
2174
+                'required'  => false,
2175
+                'help_text' => 'help text',
2176
+                'label' => 'Text input example label'
2177
+            ));
2178
+
2179
+            // input example
2180
+            $output .= aui()->input(array(
2181
+                'type'  =>  'url',
2182
+                'id'    =>  'text-example2',
2183
+                'name'    =>  'text-example',
2184
+                'placeholder'   => 'url placeholder',
2185
+                'title'   => 'Text input example',
2186
+                'value' =>  '',
2187
+                'required'  => false,
2188
+                'help_text' => 'help text',
2189
+                'label' => 'Text input example label'
2190
+            ));
2191
+
2192
+            // checkbox example
2193
+            $output .= aui()->input(array(
2194
+                'type'  =>  'checkbox',
2195
+                'id'    =>  'checkbox-example',
2196
+                'name'    =>  'checkbox-example',
2197
+                'placeholder'   => 'checkbox-example',
2198
+                'title'   => 'Checkbox example',
2199
+                'value' =>  '1',
2200
+                'checked'   => true,
2201
+                'required'  => false,
2202
+                'help_text' => 'help text',
2203
+                'label' => 'Checkbox checked'
2204
+            ));
2205
+
2206
+            // checkbox example
2207
+            $output .= aui()->input(array(
2208
+                'type'  =>  'checkbox',
2209
+                'id'    =>  'checkbox-example2',
2210
+                'name'    =>  'checkbox-example2',
2211
+                'placeholder'   => 'checkbox-example',
2212
+                'title'   => 'Checkbox example',
2213
+                'value' =>  '1',
2214
+                'checked'   => false,
2215
+                'required'  => false,
2216
+                'help_text' => 'help text',
2217
+                'label' => 'Checkbox un-checked'
2218
+            ));
2219
+
2220
+            // switch example
2221
+            $output .= aui()->input(array(
2222
+                'type'  =>  'checkbox',
2223
+                'id'    =>  'switch-example',
2224
+                'name'    =>  'switch-example',
2225
+                'placeholder'   => 'checkbox-example',
2226
+                'title'   => 'Switch example',
2227
+                'value' =>  '1',
2228
+                'checked'   => true,
2229
+                'switch'    => true,
2230
+                'required'  => false,
2231
+                'help_text' => 'help text',
2232
+                'label' => 'Switch on'
2233
+            ));
2234
+
2235
+            // switch example
2236
+            $output .= aui()->input(array(
2237
+                'type'  =>  'checkbox',
2238
+                'id'    =>  'switch-example2',
2239
+                'name'    =>  'switch-example2',
2240
+                'placeholder'   => 'checkbox-example',
2241
+                'title'   => 'Switch example',
2242
+                'value' =>  '1',
2243
+                'checked'   => false,
2244
+                'switch'    => true,
2245
+                'required'  => false,
2246
+                'help_text' => 'help text',
2247
+                'label' => 'Switch off'
2248
+            ));
2249
+
2250
+            // close form
2251
+            $output .= "</form>";
2252
+
2253
+            return $output;
2254
+        }
2255
+
2256
+        /**
2257
+         * Calendar params.
2258
+         *
2259
+         * @since 0.1.44
2260
+         *
2261
+         * @return array Calendar params.
2262
+         */
2263
+        public static function calendar_params() {
2264
+            $params = array(
2265
+                'month_long_1' => __( 'January', 'ayecode-connect' ),
2266
+                'month_long_2' => __( 'February', 'ayecode-connect' ),
2267
+                'month_long_3' => __( 'March', 'ayecode-connect' ),
2268
+                'month_long_4' => __( 'April', 'ayecode-connect' ),
2269
+                'month_long_5' => __( 'May', 'ayecode-connect' ),
2270
+                'month_long_6' => __( 'June', 'ayecode-connect' ),
2271
+                'month_long_7' => __( 'July', 'ayecode-connect' ),
2272
+                'month_long_8' => __( 'August', 'ayecode-connect' ),
2273
+                'month_long_9' => __( 'September', 'ayecode-connect' ),
2274
+                'month_long_10' => __( 'October', 'ayecode-connect' ),
2275
+                'month_long_11' => __( 'November', 'ayecode-connect' ),
2276
+                'month_long_12' => __( 'December', 'ayecode-connect' ),
2277
+                'month_s_1' => _x( 'Jan', 'January abbreviation', 'ayecode-connect' ),
2278
+                'month_s_2' => _x( 'Feb', 'February abbreviation', 'ayecode-connect' ),
2279
+                'month_s_3' => _x( 'Mar', 'March abbreviation', 'ayecode-connect' ),
2280
+                'month_s_4' => _x( 'Apr', 'April abbreviation', 'ayecode-connect' ),
2281
+                'month_s_5' => _x( 'May', 'May abbreviation', 'ayecode-connect' ),
2282
+                'month_s_6' => _x( 'Jun', 'June abbreviation', 'ayecode-connect' ),
2283
+                'month_s_7' => _x( 'Jul', 'July abbreviation', 'ayecode-connect' ),
2284
+                'month_s_8' => _x( 'Aug', 'August abbreviation', 'ayecode-connect' ),
2285
+                'month_s_9' => _x( 'Sep', 'September abbreviation', 'ayecode-connect' ),
2286
+                'month_s_10' => _x( 'Oct', 'October abbreviation', 'ayecode-connect' ),
2287
+                'month_s_11' => _x( 'Nov', 'November abbreviation', 'ayecode-connect' ),
2288
+                'month_s_12' => _x( 'Dec', 'December abbreviation', 'ayecode-connect' ),
2289
+                'day_s1_1' => _x( 'S', 'Sunday initial', 'ayecode-connect' ),
2290
+                'day_s1_2' => _x( 'M', 'Monday initial', 'ayecode-connect' ),
2291
+                'day_s1_3' => _x( 'T', 'Tuesday initial', 'ayecode-connect' ),
2292
+                'day_s1_4' => _x( 'W', 'Wednesday initial', 'ayecode-connect' ),
2293
+                'day_s1_5' => _x( 'T', 'Friday initial', 'ayecode-connect' ),
2294
+                'day_s1_6' => _x( 'F', 'Thursday initial', 'ayecode-connect' ),
2295
+                'day_s1_7' => _x( 'S', 'Saturday initial', 'ayecode-connect' ),
2296
+                'day_s2_1' => __( 'Su', 'ayecode-connect' ),
2297
+                'day_s2_2' => __( 'Mo', 'ayecode-connect' ),
2298
+                'day_s2_3' => __( 'Tu', 'ayecode-connect' ),
2299
+                'day_s2_4' => __( 'We', 'ayecode-connect' ),
2300
+                'day_s2_5' => __( 'Th', 'ayecode-connect' ),
2301
+                'day_s2_6' => __( 'Fr', 'ayecode-connect' ),
2302
+                'day_s2_7' => __( 'Sa', 'ayecode-connect' ),
2303
+                'day_s3_1' => __( 'Sun', 'ayecode-connect' ),
2304
+                'day_s3_2' => __( 'Mon', 'ayecode-connect' ),
2305
+                'day_s3_3' => __( 'Tue', 'ayecode-connect' ),
2306
+                'day_s3_4' => __( 'Wed', 'ayecode-connect' ),
2307
+                'day_s3_5' => __( 'Thu', 'ayecode-connect' ),
2308
+                'day_s3_6' => __( 'Fri', 'ayecode-connect' ),
2309
+                'day_s3_7' => __( 'Sat', 'ayecode-connect' ),
2310
+                'day_s5_1' => __( 'Sunday', 'ayecode-connect' ),
2311
+                'day_s5_2' => __( 'Monday', 'ayecode-connect' ),
2312
+                'day_s5_3' => __( 'Tuesday', 'ayecode-connect' ),
2313
+                'day_s5_4' => __( 'Wednesday', 'ayecode-connect' ),
2314
+                'day_s5_5' => __( 'Thursday', 'ayecode-connect' ),
2315
+                'day_s5_6' => __( 'Friday', 'ayecode-connect' ),
2316
+                'day_s5_7' => __( 'Saturday', 'ayecode-connect' ),
2317
+                'am_lower' => __( 'am', 'ayecode-connect' ),
2318
+                'pm_lower' => __( 'pm', 'ayecode-connect' ),
2319
+                'am_upper' => __( 'AM', 'ayecode-connect' ),
2320
+                'pm_upper' => __( 'PM', 'ayecode-connect' ),
2321
+                'firstDayOfWeek' => (int) get_option( 'start_of_week' ),
2322
+                'time_24hr' => false,
2323
+                'year' => __( 'Year', 'ayecode-connect' ),
2324
+                'hour' => __( 'Hour', 'ayecode-connect' ),
2325
+                'minute' => __( 'Minute', 'ayecode-connect' ),
2326
+                'weekAbbreviation' => __( 'Wk', 'ayecode-connect' ),
2327
+                'rangeSeparator' => __( ' to ', 'ayecode-connect' ),
2328
+                'scrollTitle' => __( 'Scroll to increment', 'ayecode-connect' ),
2329
+                'toggleTitle' => __( 'Click to toggle', 'ayecode-connect' )
2330
+            );
2331
+
2332
+            return apply_filters( 'ayecode_ui_calendar_params', $params );
2333
+        }
2334
+
2335
+        /**
2336
+         * Flatpickr calendar localize.
2337
+         *
2338
+         * @since 0.1.44
2339
+         *
2340
+         * @return string Calendar locale.
2341
+         */
2342
+        public static function flatpickr_locale() {
2343
+            $params = self::calendar_params();
2344
+
2345
+            if ( is_string( $params ) ) {
2346
+                $params = html_entity_decode( $params, ENT_QUOTES, 'UTF-8' );
2347
+            } else {
2348
+                foreach ( (array) $params as $key => $value ) {
2349
+                    if ( ! is_scalar( $value ) ) {
2350
+                        continue;
2351
+                    }
2352
+
2353
+                    $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2354
+                }
2355
+            }
2356
+
2357
+            $day_s3 = array();
2358
+            $day_s5 = array();
2359
+
2360
+            for ( $i = 1; $i <= 7; $i ++ ) {
2361
+                $day_s3[] = addslashes( $params[ 'day_s3_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2362
+                $day_s5[] = addslashes( $params[ 'day_s3_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2363
+            }
2364
+
2365
+            $month_s = array();
2366
+            $month_long = array();
2367
+
2368
+            for ( $i = 1; $i <= 12; $i ++ ) {
2369
+                $month_s[] = addslashes( $params[ 'month_s_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2370
+                $month_long[] = addslashes( $params[ 'month_long_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2371
+            }
2372
+
2373
+            ob_start();
2374
+        if ( 0 ) { ?><script><?php } ?>
2375 2375
                 {
2376 2376
                     weekdays: {
2377 2377
                         shorthand: ['<?php echo implode( "','", $day_s3 ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>'],
@@ -2410,189 +2410,189 @@  discard block
 block discarded – undo
2410 2410
                 }
2411 2411
 				<?php if ( 0 ) { ?></script><?php } ?>
2412 2412
 			<?php
2413
-			$locale = ob_get_clean();
2414
-
2415
-			return apply_filters( 'ayecode_ui_flatpickr_locale', trim( $locale ) );
2416
-		}
2417
-
2418
-		/**
2419
-		 * Select2 JS params.
2420
-		 *
2421
-		 * @since 0.1.44
2422
-		 *
2423
-		 * @return array Select2 JS params.
2424
-		 */
2425
-		public static function select2_params() {
2426
-			$params = array(
2427
-				'i18n_select_state_text'    => esc_attr__( 'Select an option&hellip;', 'ayecode-connect' ),
2428
-				'i18n_no_matches'           => _x( 'No matches found', 'enhanced select', 'ayecode-connect' ),
2429
-				'i18n_ajax_error'           => _x( 'Loading failed', 'enhanced select', 'ayecode-connect' ),
2430
-				'i18n_input_too_short_1'    => _x( 'Please enter 1 or more characters', 'enhanced select', 'ayecode-connect' ),
2431
-				'i18n_input_too_short_n'    => _x( 'Please enter %item% or more characters', 'enhanced select', 'ayecode-connect' ),
2432
-				'i18n_input_too_long_1'     => _x( 'Please delete 1 character', 'enhanced select', 'ayecode-connect' ),
2433
-				'i18n_input_too_long_n'     => _x( 'Please delete %item% characters', 'enhanced select', 'ayecode-connect' ),
2434
-				'i18n_selection_too_long_1' => _x( 'You can only select 1 item', 'enhanced select', 'ayecode-connect' ),
2435
-				'i18n_selection_too_long_n' => _x( 'You can only select %item% items', 'enhanced select', 'ayecode-connect' ),
2436
-				'i18n_load_more'            => _x( 'Loading more results&hellip;', 'enhanced select', 'ayecode-connect' ),
2437
-				'i18n_searching'            => _x( 'Searching&hellip;', 'enhanced select', 'ayecode-connect' )
2438
-			);
2439
-
2440
-			return apply_filters( 'ayecode_ui_select2_params', $params );
2441
-		}
2442
-
2443
-		/**
2444
-		 * Select2 JS localize.
2445
-		 *
2446
-		 * @since 0.1.44
2447
-		 *
2448
-		 * @return string Select2 JS locale.
2449
-		 */
2450
-		public static function select2_locale() {
2451
-			$params = self::select2_params();
2452
-
2453
-			foreach ( (array) $params as $key => $value ) {
2454
-				if ( ! is_scalar( $value ) ) {
2455
-					continue;
2456
-				}
2413
+            $locale = ob_get_clean();
2457 2414
 
2458
-				$params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2459
-			}
2460
-
2461
-			$locale = json_encode( $params );
2462
-
2463
-			return apply_filters( 'ayecode_ui_select2_locale', trim( $locale ) );
2464
-		}
2465
-
2466
-		/**
2467
-		 * Time ago JS localize.
2468
-		 *
2469
-		 * @since 0.1.47
2470
-		 *
2471
-		 * @return string Time ago JS locale.
2472
-		 */
2473
-		public static function timeago_locale() {
2474
-			$params = array(
2475
-				'prefix_ago' => '',
2476
-				'suffix_ago' => ' ' . _x( 'ago', 'time ago', 'ayecode-connect' ),
2477
-				'prefix_after' => _x( 'after', 'time ago', 'ayecode-connect' ) . ' ',
2478
-				'suffix_after' => '',
2479
-				'seconds' => _x( 'less than a minute', 'time ago', 'ayecode-connect' ),
2480
-				'minute' => _x( 'about a minute', 'time ago', 'ayecode-connect' ),
2481
-				'minutes' => _x( '%d minutes', 'time ago', 'ayecode-connect' ),
2482
-				'hour' => _x( 'about an hour', 'time ago', 'ayecode-connect' ),
2483
-				'hours' => _x( 'about %d hours', 'time ago', 'ayecode-connect' ),
2484
-				'day' => _x( 'a day', 'time ago', 'ayecode-connect' ),
2485
-				'days' => _x( '%d days', 'time ago', 'ayecode-connect' ),
2486
-				'month' => _x( 'about a month', 'time ago', 'ayecode-connect' ),
2487
-				'months' => _x( '%d months', 'time ago', 'ayecode-connect' ),
2488
-				'year' => _x( 'about a year', 'time ago', 'ayecode-connect' ),
2489
-				'years' => _x( '%d years', 'time ago', 'ayecode-connect' ),
2490
-			);
2491
-
2492
-			$params = apply_filters( 'ayecode_ui_timeago_params', $params );
2493
-
2494
-			foreach ( (array) $params as $key => $value ) {
2495
-				if ( ! is_scalar( $value ) ) {
2496
-					continue;
2497
-				}
2415
+            return apply_filters( 'ayecode_ui_flatpickr_locale', trim( $locale ) );
2416
+        }
2417
+
2418
+        /**
2419
+         * Select2 JS params.
2420
+         *
2421
+         * @since 0.1.44
2422
+         *
2423
+         * @return array Select2 JS params.
2424
+         */
2425
+        public static function select2_params() {
2426
+            $params = array(
2427
+                'i18n_select_state_text'    => esc_attr__( 'Select an option&hellip;', 'ayecode-connect' ),
2428
+                'i18n_no_matches'           => _x( 'No matches found', 'enhanced select', 'ayecode-connect' ),
2429
+                'i18n_ajax_error'           => _x( 'Loading failed', 'enhanced select', 'ayecode-connect' ),
2430
+                'i18n_input_too_short_1'    => _x( 'Please enter 1 or more characters', 'enhanced select', 'ayecode-connect' ),
2431
+                'i18n_input_too_short_n'    => _x( 'Please enter %item% or more characters', 'enhanced select', 'ayecode-connect' ),
2432
+                'i18n_input_too_long_1'     => _x( 'Please delete 1 character', 'enhanced select', 'ayecode-connect' ),
2433
+                'i18n_input_too_long_n'     => _x( 'Please delete %item% characters', 'enhanced select', 'ayecode-connect' ),
2434
+                'i18n_selection_too_long_1' => _x( 'You can only select 1 item', 'enhanced select', 'ayecode-connect' ),
2435
+                'i18n_selection_too_long_n' => _x( 'You can only select %item% items', 'enhanced select', 'ayecode-connect' ),
2436
+                'i18n_load_more'            => _x( 'Loading more results&hellip;', 'enhanced select', 'ayecode-connect' ),
2437
+                'i18n_searching'            => _x( 'Searching&hellip;', 'enhanced select', 'ayecode-connect' )
2438
+            );
2439
+
2440
+            return apply_filters( 'ayecode_ui_select2_params', $params );
2441
+        }
2442
+
2443
+        /**
2444
+         * Select2 JS localize.
2445
+         *
2446
+         * @since 0.1.44
2447
+         *
2448
+         * @return string Select2 JS locale.
2449
+         */
2450
+        public static function select2_locale() {
2451
+            $params = self::select2_params();
2452
+
2453
+            foreach ( (array) $params as $key => $value ) {
2454
+                if ( ! is_scalar( $value ) ) {
2455
+                    continue;
2456
+                }
2457
+
2458
+                $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2459
+            }
2460
+
2461
+            $locale = json_encode( $params );
2462
+
2463
+            return apply_filters( 'ayecode_ui_select2_locale', trim( $locale ) );
2464
+        }
2465
+
2466
+        /**
2467
+         * Time ago JS localize.
2468
+         *
2469
+         * @since 0.1.47
2470
+         *
2471
+         * @return string Time ago JS locale.
2472
+         */
2473
+        public static function timeago_locale() {
2474
+            $params = array(
2475
+                'prefix_ago' => '',
2476
+                'suffix_ago' => ' ' . _x( 'ago', 'time ago', 'ayecode-connect' ),
2477
+                'prefix_after' => _x( 'after', 'time ago', 'ayecode-connect' ) . ' ',
2478
+                'suffix_after' => '',
2479
+                'seconds' => _x( 'less than a minute', 'time ago', 'ayecode-connect' ),
2480
+                'minute' => _x( 'about a minute', 'time ago', 'ayecode-connect' ),
2481
+                'minutes' => _x( '%d minutes', 'time ago', 'ayecode-connect' ),
2482
+                'hour' => _x( 'about an hour', 'time ago', 'ayecode-connect' ),
2483
+                'hours' => _x( 'about %d hours', 'time ago', 'ayecode-connect' ),
2484
+                'day' => _x( 'a day', 'time ago', 'ayecode-connect' ),
2485
+                'days' => _x( '%d days', 'time ago', 'ayecode-connect' ),
2486
+                'month' => _x( 'about a month', 'time ago', 'ayecode-connect' ),
2487
+                'months' => _x( '%d months', 'time ago', 'ayecode-connect' ),
2488
+                'year' => _x( 'about a year', 'time ago', 'ayecode-connect' ),
2489
+                'years' => _x( '%d years', 'time ago', 'ayecode-connect' ),
2490
+            );
2491
+
2492
+            $params = apply_filters( 'ayecode_ui_timeago_params', $params );
2493
+
2494
+            foreach ( (array) $params as $key => $value ) {
2495
+                if ( ! is_scalar( $value ) ) {
2496
+                    continue;
2497
+                }
2498
+
2499
+                $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2500
+            }
2498 2501
 
2499
-				$params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2500
-			}
2501
-
2502
-			$locale = json_encode( $params );
2503
-
2504
-			return apply_filters( 'ayecode_ui_timeago_locale', trim( $locale ) );
2505
-		}
2506
-
2507
-		/**
2508
-		 * JavaScript Minifier
2509
-		 *
2510
-		 * @param $input
2511
-		 *
2512
-		 * @return mixed
2513
-		 */
2514
-		public static function minify_js($input) {
2515
-			if(trim($input) === "") return $input;
2516
-			return preg_replace(
2517
-				array(
2518
-					// Remove comment(s)
2519
-					'#\s*("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')\s*|\s*\/\*(?!\!|@cc_on)(?>[\s\S]*?\*\/)\s*|\s*(?<![\:\=])\/\/.*(?=[\n\r]|$)|^\s*|\s*$#',
2520
-					// Remove white-space(s) outside the string and regex
2521
-					'#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/)|\/(?!\/)[^\n\r]*?\/(?=[\s.,;]|[gimuy]|$))|\s*([!%&*\(\)\-=+\[\]\{\}|;:,.<>?\/])\s*#s',
2522
-					// Remove the last semicolon
2523
-					'#;+\}#',
2524
-					// Minify object attribute(s) except JSON attribute(s). From `{'foo':'bar'}` to `{foo:'bar'}`
2525
-					'#([\{,])([\'])(\d+|[a-z_][a-z0-9_]*)\2(?=\:)#i',
2526
-					// --ibid. From `foo['bar']` to `foo.bar`
2527
-					'#([a-z0-9_\)\]])\[([\'"])([a-z_][a-z0-9_]*)\2\]#i'
2528
-				),
2529
-				array(
2530
-					'$1',
2531
-					'$1$2',
2532
-					'}',
2533
-					'$1$3',
2534
-					'$1.$3'
2535
-				),
2536
-				$input);
2537
-		}
2538
-
2539
-		/**
2540
-		 * Minify CSS
2541
-		 *
2542
-		 * @param $input
2543
-		 *
2544
-		 * @return mixed
2545
-		 */
2546
-		public static function minify_css($input) {
2547
-			if(trim($input) === "") return $input;
2548
-			return preg_replace(
2549
-				array(
2550
-					// Remove comment(s)
2551
-					'#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')|\/\*(?!\!)(?>.*?\*\/)|^\s*|\s*$#s',
2552
-					// Remove unused white-space(s)
2553
-					'#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/))|\s*+;\s*+(})\s*+|\s*+([*$~^|]?+=|[{};,>~]|\s(?![0-9\.])|!important\b)\s*+|([[(:])\s++|\s++([])])|\s++(:)\s*+(?!(?>[^{}"\']++|"(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')*+{)|^\s++|\s++\z|(\s)\s+#si',
2554
-					// Replace `0(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)` with `0`
2555
-					'#(?<=[\s:])(0)(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)#si',
2556
-					// Replace `:0 0 0 0` with `:0`
2557
-					'#:(0\s+0|0\s+0\s+0\s+0)(?=[;\}]|\!important)#i',
2558
-					// Replace `background-position:0` with `background-position:0 0`
2559
-					'#(background-position):0(?=[;\}])#si',
2560
-					// Replace `0.6` with `.6`, but only when preceded by `:`, `,`, `-` or a white-space
2561
-					'#(?<=[\s:,\-])0+\.(\d+)#s',
2562
-					// Minify string value
2563
-					'#(\/\*(?>.*?\*\/))|(?<!content\:)([\'"])([a-z_][a-z0-9\-_]*?)\2(?=[\s\{\}\];,])#si',
2564
-					'#(\/\*(?>.*?\*\/))|(\burl\()([\'"])([^\s]+?)\3(\))#si',
2565
-					// Minify HEX color code
2566
-					'#(?<=[\s:,\-]\#)([a-f0-6]+)\1([a-f0-6]+)\2([a-f0-6]+)\3#i',
2567
-					// Replace `(border|outline):none` with `(border|outline):0`
2568
-					'#(?<=[\{;])(border|outline):none(?=[;\}\!])#',
2569
-					// Remove empty selector(s)
2570
-					'#(\/\*(?>.*?\*\/))|(^|[\{\}])(?:[^\s\{\}]+)\{\}#s'
2571
-				),
2572
-				array(
2573
-					'$1',
2574
-					'$1$2$3$4$5$6$7',
2575
-					'$1',
2576
-					':0',
2577
-					'$1:0 0',
2578
-					'.$1',
2579
-					'$1$3',
2580
-					'$1$2$4$5',
2581
-					'$1$2$3',
2582
-					'$1:0',
2583
-					'$1$2'
2584
-				),
2585
-				$input);
2586
-		}
2587
-
2588
-		/**
2589
-		 * Get the conditional fields JavaScript.
2590
-		 *
2591
-		 * @return mixed
2592
-		 */
2593
-		public function conditional_fields_js() {
2594
-			ob_start();
2595
-			?>
2502
+            $locale = json_encode( $params );
2503
+
2504
+            return apply_filters( 'ayecode_ui_timeago_locale', trim( $locale ) );
2505
+        }
2506
+
2507
+        /**
2508
+         * JavaScript Minifier
2509
+         *
2510
+         * @param $input
2511
+         *
2512
+         * @return mixed
2513
+         */
2514
+        public static function minify_js($input) {
2515
+            if(trim($input) === "") return $input;
2516
+            return preg_replace(
2517
+                array(
2518
+                    // Remove comment(s)
2519
+                    '#\s*("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')\s*|\s*\/\*(?!\!|@cc_on)(?>[\s\S]*?\*\/)\s*|\s*(?<![\:\=])\/\/.*(?=[\n\r]|$)|^\s*|\s*$#',
2520
+                    // Remove white-space(s) outside the string and regex
2521
+                    '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/)|\/(?!\/)[^\n\r]*?\/(?=[\s.,;]|[gimuy]|$))|\s*([!%&*\(\)\-=+\[\]\{\}|;:,.<>?\/])\s*#s',
2522
+                    // Remove the last semicolon
2523
+                    '#;+\}#',
2524
+                    // Minify object attribute(s) except JSON attribute(s). From `{'foo':'bar'}` to `{foo:'bar'}`
2525
+                    '#([\{,])([\'])(\d+|[a-z_][a-z0-9_]*)\2(?=\:)#i',
2526
+                    // --ibid. From `foo['bar']` to `foo.bar`
2527
+                    '#([a-z0-9_\)\]])\[([\'"])([a-z_][a-z0-9_]*)\2\]#i'
2528
+                ),
2529
+                array(
2530
+                    '$1',
2531
+                    '$1$2',
2532
+                    '}',
2533
+                    '$1$3',
2534
+                    '$1.$3'
2535
+                ),
2536
+                $input);
2537
+        }
2538
+
2539
+        /**
2540
+         * Minify CSS
2541
+         *
2542
+         * @param $input
2543
+         *
2544
+         * @return mixed
2545
+         */
2546
+        public static function minify_css($input) {
2547
+            if(trim($input) === "") return $input;
2548
+            return preg_replace(
2549
+                array(
2550
+                    // Remove comment(s)
2551
+                    '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')|\/\*(?!\!)(?>.*?\*\/)|^\s*|\s*$#s',
2552
+                    // Remove unused white-space(s)
2553
+                    '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/))|\s*+;\s*+(})\s*+|\s*+([*$~^|]?+=|[{};,>~]|\s(?![0-9\.])|!important\b)\s*+|([[(:])\s++|\s++([])])|\s++(:)\s*+(?!(?>[^{}"\']++|"(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')*+{)|^\s++|\s++\z|(\s)\s+#si',
2554
+                    // Replace `0(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)` with `0`
2555
+                    '#(?<=[\s:])(0)(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)#si',
2556
+                    // Replace `:0 0 0 0` with `:0`
2557
+                    '#:(0\s+0|0\s+0\s+0\s+0)(?=[;\}]|\!important)#i',
2558
+                    // Replace `background-position:0` with `background-position:0 0`
2559
+                    '#(background-position):0(?=[;\}])#si',
2560
+                    // Replace `0.6` with `.6`, but only when preceded by `:`, `,`, `-` or a white-space
2561
+                    '#(?<=[\s:,\-])0+\.(\d+)#s',
2562
+                    // Minify string value
2563
+                    '#(\/\*(?>.*?\*\/))|(?<!content\:)([\'"])([a-z_][a-z0-9\-_]*?)\2(?=[\s\{\}\];,])#si',
2564
+                    '#(\/\*(?>.*?\*\/))|(\burl\()([\'"])([^\s]+?)\3(\))#si',
2565
+                    // Minify HEX color code
2566
+                    '#(?<=[\s:,\-]\#)([a-f0-6]+)\1([a-f0-6]+)\2([a-f0-6]+)\3#i',
2567
+                    // Replace `(border|outline):none` with `(border|outline):0`
2568
+                    '#(?<=[\{;])(border|outline):none(?=[;\}\!])#',
2569
+                    // Remove empty selector(s)
2570
+                    '#(\/\*(?>.*?\*\/))|(^|[\{\}])(?:[^\s\{\}]+)\{\}#s'
2571
+                ),
2572
+                array(
2573
+                    '$1',
2574
+                    '$1$2$3$4$5$6$7',
2575
+                    '$1',
2576
+                    ':0',
2577
+                    '$1:0 0',
2578
+                    '.$1',
2579
+                    '$1$3',
2580
+                    '$1$2$4$5',
2581
+                    '$1$2$3',
2582
+                    '$1:0',
2583
+                    '$1$2'
2584
+                ),
2585
+                $input);
2586
+        }
2587
+
2588
+        /**
2589
+         * Get the conditional fields JavaScript.
2590
+         *
2591
+         * @return mixed
2592
+         */
2593
+        public function conditional_fields_js() {
2594
+            ob_start();
2595
+            ?>
2596 2596
             <script>
2597 2597
                 /**
2598 2598
                  * Conditional Fields
@@ -3119,14 +3119,14 @@  discard block
 block discarded – undo
3119 3119
 				<?php do_action( 'aui_conditional_fields_js', $this ); ?>
3120 3120
             </script>
3121 3121
 			<?php
3122
-			$output = ob_get_clean();
3122
+            $output = ob_get_clean();
3123 3123
 
3124
-			return str_replace( array( '<script>', '</script>' ), '', self::minify_js( $output ) );
3125
-		}
3126
-	}
3124
+            return str_replace( array( '<script>', '</script>' ), '', self::minify_js( $output ) );
3125
+        }
3126
+    }
3127 3127
 
3128
-	/**
3129
-	 * Run the class if found.
3130
-	 */
3131
-	AyeCode_UI_Settings::instance();
3128
+    /**
3129
+     * Run the class if found.
3130
+     */
3131
+    AyeCode_UI_Settings::instance();
3132 3132
 }
3133 3133
\ No newline at end of file
Please login to merge, or discard this patch.
vendor/ayecode/wp-super-duper/wp-super-duper.php 1 patch
Indentation   +2872 added lines, -2872 removed lines patch added patch discarded remove patch
@@ -1,299 +1,299 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 if ( ! defined( 'ABSPATH' ) ) {
3
-	exit;
3
+    exit;
4 4
 }
5 5
 
6 6
 if ( ! class_exists( 'WP_Super_Duper' ) ) {
7 7
 
8
-	define( 'SUPER_DUPER_VER', '1.2.6' );
9
-
10
-	/**
11
-	 * A Class to be able to create a Widget, Shortcode or Block to be able to output content for WordPress.
12
-	 *
13
-	 * Should not be called direct but extended instead.
14
-	 *
15
-	 * Class WP_Super_Duper
16
-	 * @since 1.0.16 change log moved to file change-log.txt - CHANGED
17
-	 * @ver 1.1.1
18
-	 */
19
-	class WP_Super_Duper extends WP_Widget {
20
-
21
-		public $version = SUPER_DUPER_VER;
22
-		public $font_awesome_icon_version = "5.11.2";
23
-		public $block_code;
24
-		public $options;
25
-		public $base_id;
26
-		public $settings_hash;
27
-		public $arguments = array();
28
-		public $instance = array();
29
-		private $class_name;
30
-
31
-		/**
32
-		 * The relative url to the current folder.
33
-		 *
34
-		 * @var string
35
-		 */
36
-		public $url = '';
37
-
38
-		/**
39
-		 * Take the array options and use them to build.
40
-		 */
41
-		public function __construct( $options ) {
42
-			global $sd_widgets;
43
-
44
-			$sd_widgets[ $options['base_id'] ] = array(
45
-				'name'       => $options['name'],
46
-				'class_name' => $options['class_name'],
47
-				'output_types' => !empty($options['output_types']) ? $options['output_types'] : array()
48
-			);
49
-			$this->base_id                     = $options['base_id'];
50
-			// lets filter the options before we do anything
51
-			$options       = apply_filters( "wp_super_duper_options", $options );
52
-			$options       = apply_filters( "wp_super_duper_options_{$this->base_id}", $options );
53
-			$options       = $this->add_name_from_key( $options );
54
-			$this->options = $options;
55
-
56
-			$this->base_id   = $options['base_id'];
57
-			$this->arguments = isset( $options['arguments'] ) ? $options['arguments'] : array();
58
-
59
-			// nested blocks can't work as a widget
60
-			if(!empty($this->options['nested-block'])){
61
-				if(empty($this->options['output_types'])){
62
-					$this->options['output_types'] = array('shortcode','block');
63
-				}elseif (($key = array_search('widget', $this->options['output_types'])) !== false) {
64
-					unset($this->options['output_types'][$key]);
65
-				}
66
-			}
67
-
68
-			// init parent
69
-			if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
70
-				parent::__construct( $options['base_id'], $options['name'], $options['widget_ops'] );
71
-			}
72
-
73
-
74
-			if ( isset( $options['class_name'] ) ) {
75
-				// register widget
76
-				$this->class_name = $options['class_name'];
77
-
78
-				// register shortcode, this needs to be done even for blocks and widgets
79
-				$this->register_shortcode();
80
-
81
-
82
-				// Fusion Builder (avada) support
83
-				if ( function_exists( 'fusion_builder_map' ) ) {
84
-					add_action( 'init', array( $this, 'register_fusion_element' ) );
85
-				}
86
-
87
-				// register block
88
-				if(empty($this->options['output_types']) || in_array('block',$this->options['output_types'])){
89
-					add_action( 'admin_enqueue_scripts', array( $this, 'register_block' ) );
90
-				}
91
-			}
92
-
93
-			// add the CSS and JS we need ONCE
94
-			global $sd_widget_scripts;
95
-
96
-			if ( ! $sd_widget_scripts ) {
97
-				wp_add_inline_script( 'admin-widgets', $this->widget_js() );
98
-				wp_add_inline_script( 'customize-controls', $this->widget_js() );
99
-				wp_add_inline_style( 'widgets', $this->widget_css() );
100
-
101
-				// maybe add elementor editor styles
102
-				add_action( 'elementor/editor/after_enqueue_styles', array( $this, 'elementor_editor_styles' ) );
103
-
104
-				$sd_widget_scripts = true;
105
-
106
-				// add shortcode insert button once
107
-				add_action( 'media_buttons', array( $this, 'shortcode_insert_button' ) );
108
-				// generatepress theme sections compatibility
109
-				if ( function_exists( 'generate_sections_sections_metabox' ) ) {
110
-					add_action( 'generate_sections_metabox', array( $this, 'shortcode_insert_button_script' ) );
111
-				}
112
-				/* Load script on Divi theme builder page */
113
-				if ( function_exists( 'et_builder_is_tb_admin_screen' ) && et_builder_is_tb_admin_screen() ) {
114
-					add_thickbox();
115
-					add_action( 'admin_footer', array( $this, 'shortcode_insert_button_script' ) );
116
-				}
117
-
118
-				if ( $this->is_preview() ) {
119
-					add_action( 'wp_footer', array( $this, 'shortcode_insert_button_script' ) );
120
-					// this makes the insert button work for elementor
121
-					add_action( 'elementor/editor/after_enqueue_scripts', array(
122
-						$this,
123
-						'shortcode_insert_button_script'
124
-					) ); // for elementor
125
-				}
126
-				// this makes the insert button work for cornerstone
127
-				add_action( 'wp_print_footer_scripts', array( __CLASS__, 'maybe_cornerstone_builder' ) );
128
-
129
-				add_action( 'wp_ajax_super_duper_get_widget_settings', array( __CLASS__, 'get_widget_settings' ) );
130
-				add_action( 'wp_ajax_super_duper_get_picker', array( __CLASS__, 'get_picker' ) );
131
-
132
-				// add generator text to head
133
-				add_action( 'admin_head', array( $this, 'generator' ), 99 );
134
-				add_action( 'wp_head', array( $this, 'generator' ), 99 );
135
-			}
136
-
137
-			do_action( 'wp_super_duper_widget_init', $options, $this );
138
-		}
139
-
140
-		/**
141
-		 * The register widget function
142
-		 * @return void
143
-		 */
144
-		public function _register() {
145
-			if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
146
-				parent::_register();
147
-			}
148
-		}
149
-
150
-		/**
151
-		 * Add our widget CSS to elementor editor.
152
-		 */
153
-		public function elementor_editor_styles() {
154
-			wp_add_inline_style( 'elementor-editor', $this->widget_css( false ) );
155
-		}
156
-
157
-		public function register_fusion_element() {
158
-
159
-			$options = $this->options;
160
-
161
-			if ( $this->base_id ) {
162
-
163
-				$params = $this->get_fusion_params();
164
-
165
-				$args = array(
166
-					'name'            => $options['name'],
167
-					'shortcode'       => $this->base_id,
168
-					'icon'            => $options['block-icon'] ? $options['block-icon'] : 'far fa-square',
169
-					'allow_generator' => true,
170
-				);
171
-
172
-				if ( ! empty( $params ) ) {
173
-					$args['params'] = $params;
174
-				}
175
-
176
-				fusion_builder_map( $args );
177
-			}
178
-
179
-		}
180
-
181
-		public function get_fusion_params() {
182
-			$params    = array();
183
-			$arguments = $this->get_arguments();
184
-
185
-			if ( ! empty( $arguments ) ) {
186
-				foreach ( $arguments as $key => $val ) {
187
-					$param = array();
188
-					// type
189
-					$param['type'] = str_replace(
190
-						array(
191
-							"text",
192
-							"number",
193
-							"email",
194
-							"color",
195
-							"checkbox"
196
-						),
197
-						array(
198
-							"textfield",
199
-							"textfield",
200
-							"textfield",
201
-							"colorpicker",
202
-							"select",
203
-
204
-						),
205
-						$val['type'] );
206
-
207
-					// multiselect
208
-					if ( $val['type'] == 'multiselect' || ( ( $param['type'] == 'select' || $val['type'] == 'select' ) && ! empty( $val['multiple'] ) ) ) {
209
-						$param['type']     = 'multiple_select';
210
-						$param['multiple'] = true;
211
-					}
212
-
213
-					// heading
214
-					$param['heading'] = isset( $val['title'] ) ? $val['title'] : '';
215
-
216
-					// description
217
-					$param['description'] = isset( $val['desc'] ) ? $val['desc'] : '';
218
-
219
-					// param_name
220
-					$param['param_name'] = $key;
221
-
222
-					// Default
223
-					$param['default'] = isset( $val['default'] ) ? $val['default'] : '';
224
-
225
-					// Group
226
-					if ( isset( $val['group'] ) ) {
227
-						$param['group'] = $val['group'];
228
-					}
229
-
230
-					// value
231
-					if ( $val['type'] == 'checkbox' ) {
232
-						if ( isset( $val['default'] ) && $val['default'] == '0' ) {
233
-							unset( $param['default'] );
234
-						}
235
-						$param['value'] = array( '0' => __( "No", 'ayecode-connect' ), '1' => __( "Yes", 'ayecode-connect' ) );
236
-					} elseif ( $param['type'] == 'select' || $param['type'] == 'multiple_select' ) {
237
-						$param['value'] = isset( $val['options'] ) ? $val['options'] : array();
238
-					} else {
239
-						$param['value'] = isset( $val['default'] ) ? $val['default'] : '';
240
-					}
241
-
242
-					// setup the param
243
-					$params[] = $param;
244
-
245
-				}
246
-			}
247
-
248
-
249
-			return $params;
250
-		}
251
-
252
-		/**
253
-		 * Maybe insert the shortcode inserter button in the footer if we are in the cornerstone builder
254
-		 */
255
-		public static function maybe_cornerstone_builder() {
256
-			if ( did_action( 'cornerstone_before_boot_app' ) ) {
257
-				self::shortcode_insert_button_script();
258
-			}
259
-		}
260
-
261
-		/**
262
-		 * A function to ge the shortcode builder picker html.
263
-		 *
264
-		 * @param string $editor_id
265
-		 *
266
-		 * @return string
267
-		 */
268
-		public static function get_picker( $editor_id = '' ) {
269
-
270
-			ob_start();
271
-			if ( isset( $_POST['editor_id'] ) ) {
272
-				$editor_id = esc_attr( $_POST['editor_id'] );
273
-			} elseif ( isset( $_REQUEST['et_fb'] ) ) {
274
-				$editor_id = 'main_content_content_vb_tiny_mce';
275
-			}
276
-
277
-			global $sd_widgets;
8
+    define( 'SUPER_DUPER_VER', '1.2.6' );
9
+
10
+    /**
11
+     * A Class to be able to create a Widget, Shortcode or Block to be able to output content for WordPress.
12
+     *
13
+     * Should not be called direct but extended instead.
14
+     *
15
+     * Class WP_Super_Duper
16
+     * @since 1.0.16 change log moved to file change-log.txt - CHANGED
17
+     * @ver 1.1.1
18
+     */
19
+    class WP_Super_Duper extends WP_Widget {
20
+
21
+        public $version = SUPER_DUPER_VER;
22
+        public $font_awesome_icon_version = "5.11.2";
23
+        public $block_code;
24
+        public $options;
25
+        public $base_id;
26
+        public $settings_hash;
27
+        public $arguments = array();
28
+        public $instance = array();
29
+        private $class_name;
30
+
31
+        /**
32
+         * The relative url to the current folder.
33
+         *
34
+         * @var string
35
+         */
36
+        public $url = '';
37
+
38
+        /**
39
+         * Take the array options and use them to build.
40
+         */
41
+        public function __construct( $options ) {
42
+            global $sd_widgets;
43
+
44
+            $sd_widgets[ $options['base_id'] ] = array(
45
+                'name'       => $options['name'],
46
+                'class_name' => $options['class_name'],
47
+                'output_types' => !empty($options['output_types']) ? $options['output_types'] : array()
48
+            );
49
+            $this->base_id                     = $options['base_id'];
50
+            // lets filter the options before we do anything
51
+            $options       = apply_filters( "wp_super_duper_options", $options );
52
+            $options       = apply_filters( "wp_super_duper_options_{$this->base_id}", $options );
53
+            $options       = $this->add_name_from_key( $options );
54
+            $this->options = $options;
55
+
56
+            $this->base_id   = $options['base_id'];
57
+            $this->arguments = isset( $options['arguments'] ) ? $options['arguments'] : array();
58
+
59
+            // nested blocks can't work as a widget
60
+            if(!empty($this->options['nested-block'])){
61
+                if(empty($this->options['output_types'])){
62
+                    $this->options['output_types'] = array('shortcode','block');
63
+                }elseif (($key = array_search('widget', $this->options['output_types'])) !== false) {
64
+                    unset($this->options['output_types'][$key]);
65
+                }
66
+            }
67
+
68
+            // init parent
69
+            if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
70
+                parent::__construct( $options['base_id'], $options['name'], $options['widget_ops'] );
71
+            }
72
+
73
+
74
+            if ( isset( $options['class_name'] ) ) {
75
+                // register widget
76
+                $this->class_name = $options['class_name'];
77
+
78
+                // register shortcode, this needs to be done even for blocks and widgets
79
+                $this->register_shortcode();
80
+
81
+
82
+                // Fusion Builder (avada) support
83
+                if ( function_exists( 'fusion_builder_map' ) ) {
84
+                    add_action( 'init', array( $this, 'register_fusion_element' ) );
85
+                }
86
+
87
+                // register block
88
+                if(empty($this->options['output_types']) || in_array('block',$this->options['output_types'])){
89
+                    add_action( 'admin_enqueue_scripts', array( $this, 'register_block' ) );
90
+                }
91
+            }
92
+
93
+            // add the CSS and JS we need ONCE
94
+            global $sd_widget_scripts;
95
+
96
+            if ( ! $sd_widget_scripts ) {
97
+                wp_add_inline_script( 'admin-widgets', $this->widget_js() );
98
+                wp_add_inline_script( 'customize-controls', $this->widget_js() );
99
+                wp_add_inline_style( 'widgets', $this->widget_css() );
100
+
101
+                // maybe add elementor editor styles
102
+                add_action( 'elementor/editor/after_enqueue_styles', array( $this, 'elementor_editor_styles' ) );
103
+
104
+                $sd_widget_scripts = true;
105
+
106
+                // add shortcode insert button once
107
+                add_action( 'media_buttons', array( $this, 'shortcode_insert_button' ) );
108
+                // generatepress theme sections compatibility
109
+                if ( function_exists( 'generate_sections_sections_metabox' ) ) {
110
+                    add_action( 'generate_sections_metabox', array( $this, 'shortcode_insert_button_script' ) );
111
+                }
112
+                /* Load script on Divi theme builder page */
113
+                if ( function_exists( 'et_builder_is_tb_admin_screen' ) && et_builder_is_tb_admin_screen() ) {
114
+                    add_thickbox();
115
+                    add_action( 'admin_footer', array( $this, 'shortcode_insert_button_script' ) );
116
+                }
117
+
118
+                if ( $this->is_preview() ) {
119
+                    add_action( 'wp_footer', array( $this, 'shortcode_insert_button_script' ) );
120
+                    // this makes the insert button work for elementor
121
+                    add_action( 'elementor/editor/after_enqueue_scripts', array(
122
+                        $this,
123
+                        'shortcode_insert_button_script'
124
+                    ) ); // for elementor
125
+                }
126
+                // this makes the insert button work for cornerstone
127
+                add_action( 'wp_print_footer_scripts', array( __CLASS__, 'maybe_cornerstone_builder' ) );
128
+
129
+                add_action( 'wp_ajax_super_duper_get_widget_settings', array( __CLASS__, 'get_widget_settings' ) );
130
+                add_action( 'wp_ajax_super_duper_get_picker', array( __CLASS__, 'get_picker' ) );
131
+
132
+                // add generator text to head
133
+                add_action( 'admin_head', array( $this, 'generator' ), 99 );
134
+                add_action( 'wp_head', array( $this, 'generator' ), 99 );
135
+            }
136
+
137
+            do_action( 'wp_super_duper_widget_init', $options, $this );
138
+        }
139
+
140
+        /**
141
+         * The register widget function
142
+         * @return void
143
+         */
144
+        public function _register() {
145
+            if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
146
+                parent::_register();
147
+            }
148
+        }
149
+
150
+        /**
151
+         * Add our widget CSS to elementor editor.
152
+         */
153
+        public function elementor_editor_styles() {
154
+            wp_add_inline_style( 'elementor-editor', $this->widget_css( false ) );
155
+        }
156
+
157
+        public function register_fusion_element() {
158
+
159
+            $options = $this->options;
160
+
161
+            if ( $this->base_id ) {
162
+
163
+                $params = $this->get_fusion_params();
164
+
165
+                $args = array(
166
+                    'name'            => $options['name'],
167
+                    'shortcode'       => $this->base_id,
168
+                    'icon'            => $options['block-icon'] ? $options['block-icon'] : 'far fa-square',
169
+                    'allow_generator' => true,
170
+                );
171
+
172
+                if ( ! empty( $params ) ) {
173
+                    $args['params'] = $params;
174
+                }
175
+
176
+                fusion_builder_map( $args );
177
+            }
178
+
179
+        }
180
+
181
+        public function get_fusion_params() {
182
+            $params    = array();
183
+            $arguments = $this->get_arguments();
184
+
185
+            if ( ! empty( $arguments ) ) {
186
+                foreach ( $arguments as $key => $val ) {
187
+                    $param = array();
188
+                    // type
189
+                    $param['type'] = str_replace(
190
+                        array(
191
+                            "text",
192
+                            "number",
193
+                            "email",
194
+                            "color",
195
+                            "checkbox"
196
+                        ),
197
+                        array(
198
+                            "textfield",
199
+                            "textfield",
200
+                            "textfield",
201
+                            "colorpicker",
202
+                            "select",
203
+
204
+                        ),
205
+                        $val['type'] );
206
+
207
+                    // multiselect
208
+                    if ( $val['type'] == 'multiselect' || ( ( $param['type'] == 'select' || $val['type'] == 'select' ) && ! empty( $val['multiple'] ) ) ) {
209
+                        $param['type']     = 'multiple_select';
210
+                        $param['multiple'] = true;
211
+                    }
212
+
213
+                    // heading
214
+                    $param['heading'] = isset( $val['title'] ) ? $val['title'] : '';
215
+
216
+                    // description
217
+                    $param['description'] = isset( $val['desc'] ) ? $val['desc'] : '';
218
+
219
+                    // param_name
220
+                    $param['param_name'] = $key;
221
+
222
+                    // Default
223
+                    $param['default'] = isset( $val['default'] ) ? $val['default'] : '';
224
+
225
+                    // Group
226
+                    if ( isset( $val['group'] ) ) {
227
+                        $param['group'] = $val['group'];
228
+                    }
229
+
230
+                    // value
231
+                    if ( $val['type'] == 'checkbox' ) {
232
+                        if ( isset( $val['default'] ) && $val['default'] == '0' ) {
233
+                            unset( $param['default'] );
234
+                        }
235
+                        $param['value'] = array( '0' => __( "No", 'ayecode-connect' ), '1' => __( "Yes", 'ayecode-connect' ) );
236
+                    } elseif ( $param['type'] == 'select' || $param['type'] == 'multiple_select' ) {
237
+                        $param['value'] = isset( $val['options'] ) ? $val['options'] : array();
238
+                    } else {
239
+                        $param['value'] = isset( $val['default'] ) ? $val['default'] : '';
240
+                    }
241
+
242
+                    // setup the param
243
+                    $params[] = $param;
244
+
245
+                }
246
+            }
247
+
248
+
249
+            return $params;
250
+        }
251
+
252
+        /**
253
+         * Maybe insert the shortcode inserter button in the footer if we are in the cornerstone builder
254
+         */
255
+        public static function maybe_cornerstone_builder() {
256
+            if ( did_action( 'cornerstone_before_boot_app' ) ) {
257
+                self::shortcode_insert_button_script();
258
+            }
259
+        }
260
+
261
+        /**
262
+         * A function to ge the shortcode builder picker html.
263
+         *
264
+         * @param string $editor_id
265
+         *
266
+         * @return string
267
+         */
268
+        public static function get_picker( $editor_id = '' ) {
269
+
270
+            ob_start();
271
+            if ( isset( $_POST['editor_id'] ) ) {
272
+                $editor_id = esc_attr( $_POST['editor_id'] );
273
+            } elseif ( isset( $_REQUEST['et_fb'] ) ) {
274
+                $editor_id = 'main_content_content_vb_tiny_mce';
275
+            }
276
+
277
+            global $sd_widgets;
278 278
 
279 279
 //			print_r($sd_widgets);exit;
280
-			?>
280
+            ?>
281 281
 
282 282
 			<div class="sd-shortcode-left-wrap">
283 283
 				<?php
284
-				ksort( $sd_widgets );
285
-				//				print_r($sd_widgets);exit;
286
-				if ( ! empty( $sd_widgets ) ) {
287
-					echo '<select class="widefat" onchange="sd_get_shortcode_options(this);">';
288
-					echo "<option>" . __( 'Select shortcode', 'ayecode-connect' ) . "</option>";
289
-					foreach ( $sd_widgets as $shortcode => $class ) {
290
-						if(!empty($class['output_types']) && !in_array('shortcode', $class['output_types'])){ continue; }
291
-						echo "<option value='" . esc_attr( $shortcode ) . "'>" . esc_attr( $shortcode ) . " (" . esc_attr( $class['name'] ) . ")</option>";
292
-					}
293
-					echo "</select>";
294
-
295
-				}
296
-				?>
284
+                ksort( $sd_widgets );
285
+                //				print_r($sd_widgets);exit;
286
+                if ( ! empty( $sd_widgets ) ) {
287
+                    echo '<select class="widefat" onchange="sd_get_shortcode_options(this);">';
288
+                    echo "<option>" . __( 'Select shortcode', 'ayecode-connect' ) . "</option>";
289
+                    foreach ( $sd_widgets as $shortcode => $class ) {
290
+                        if(!empty($class['output_types']) && !in_array('shortcode', $class['output_types'])){ continue; }
291
+                        echo "<option value='" . esc_attr( $shortcode ) . "'>" . esc_attr( $shortcode ) . " (" . esc_attr( $class['name'] ) . ")</option>";
292
+                    }
293
+                    echo "</select>";
294
+
295
+                }
296
+                ?>
297 297
 				<div class="sd-shortcode-settings"></div>
298 298
 
299 299
 			</div>
@@ -304,8 +304,8 @@  discard block
 block discarded – undo
304 304
 					<?php if ( $editor_id != '' ) { ?>
305 305
 						<button class="button sd-insert-shortcode-button"
306 306
 								onclick="sd_insert_shortcode(<?php if ( ! empty( $editor_id ) ) {
307
-									echo "'" . $editor_id . "'";
308
-								} ?>)"><?php _e( 'Insert shortcode', 'ayecode-connect' ); ?></button>
307
+                                    echo "'" . $editor_id . "'";
308
+                                } ?>)"><?php _e( 'Insert shortcode', 'ayecode-connect' ); ?></button>
309 309
 					<?php } ?>
310 310
 					<button class="button"
311 311
 							onclick="sd_copy_to_clipboard()"><?php _e( 'Copy shortcode' ); ?></button>
@@ -313,150 +313,150 @@  discard block
 block discarded – undo
313 313
 			</div>
314 314
 			<?php
315 315
 
316
-			$html = ob_get_clean();
317
-
318
-			if ( wp_doing_ajax() ) {
319
-				echo $html;
320
-				$should_die = true;
321
-
322
-				// some builder get the editor via ajax so we should not die on those occasions
323
-				$dont_die = array(
324
-					'parent_tag',// WP Bakery
325
-					'avia_request' // enfold
326
-				);
327
-
328
-				foreach ( $dont_die as $request ) {
329
-					if ( isset( $_REQUEST[ $request ] ) ) {
330
-						$should_die = false;
331
-					}
332
-				}
333
-
334
-				if ( $should_die ) {
335
-					wp_die();
336
-				}
337
-
338
-			} else {
339
-				return $html;
340
-			}
341
-
342
-			return '';
343
-
344
-		}
345
-
346
-		/**
347
-		 * Output the version in the header.
348
-		 */
349
-		public function generator() {
350
-			$file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
351
-			$plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
352
-
353
-			// Find source plugin/theme of SD
354
-			$source = array();
355
-			if ( strpos( $file, $plugins_dir ) !== false ) {
356
-				$source = explode( "/", plugin_basename( $file ) );
357
-			} else if ( function_exists( 'get_theme_root' ) ) {
358
-				$themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
359
-
360
-				if ( strpos( $file, $themes_dir ) !== false ) {
361
-					$source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
362
-				}
363
-			}
364
-
365
-			echo '<meta name="generator" content="WP Super Duper v' . esc_attr( $this->version ) . '"' . ( ! empty( $source[0] ) ? ' data-sd-source="' . esc_attr( $source[0] ) . '"' : '' ) . ' />';
366
-		}
367
-
368
-		/**
369
-		 * Get widget settings.
370
-		 *
371
-		 * @since 1.0.0
372
-		 */
373
-		public static function get_widget_settings() {
374
-			global $sd_widgets;
375
-
376
-			$shortcode = isset( $_REQUEST['shortcode'] ) && $_REQUEST['shortcode'] ? sanitize_title_with_dashes( $_REQUEST['shortcode'] ) : '';
377
-			if ( ! $shortcode ) {
378
-				wp_die();
379
-			}
380
-			$widget_args = isset( $sd_widgets[ $shortcode ] ) ? $sd_widgets[ $shortcode ] : '';
381
-			if ( ! $widget_args ) {
382
-				wp_die();
383
-			}
384
-			$class_name = isset( $widget_args['class_name'] ) && $widget_args['class_name'] ? $widget_args['class_name'] : '';
385
-			if ( ! $class_name ) {
386
-				wp_die();
387
-			}
388
-
389
-			// invoke an instance method
390
-			$widget = new $class_name;
391
-
392
-			ob_start();
393
-			$widget->form( array() );
394
-			$form = ob_get_clean();
395
-			echo "<form id='$shortcode'>" . $form . "<div class=\"widget-control-save\"></div></form>";
396
-			echo "<style>" . $widget->widget_css() . "</style>";
397
-			echo "<script>" . $widget->widget_js() . "</script>";
398
-			?>
316
+            $html = ob_get_clean();
317
+
318
+            if ( wp_doing_ajax() ) {
319
+                echo $html;
320
+                $should_die = true;
321
+
322
+                // some builder get the editor via ajax so we should not die on those occasions
323
+                $dont_die = array(
324
+                    'parent_tag',// WP Bakery
325
+                    'avia_request' // enfold
326
+                );
327
+
328
+                foreach ( $dont_die as $request ) {
329
+                    if ( isset( $_REQUEST[ $request ] ) ) {
330
+                        $should_die = false;
331
+                    }
332
+                }
333
+
334
+                if ( $should_die ) {
335
+                    wp_die();
336
+                }
337
+
338
+            } else {
339
+                return $html;
340
+            }
341
+
342
+            return '';
343
+
344
+        }
345
+
346
+        /**
347
+         * Output the version in the header.
348
+         */
349
+        public function generator() {
350
+            $file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
351
+            $plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
352
+
353
+            // Find source plugin/theme of SD
354
+            $source = array();
355
+            if ( strpos( $file, $plugins_dir ) !== false ) {
356
+                $source = explode( "/", plugin_basename( $file ) );
357
+            } else if ( function_exists( 'get_theme_root' ) ) {
358
+                $themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
359
+
360
+                if ( strpos( $file, $themes_dir ) !== false ) {
361
+                    $source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
362
+                }
363
+            }
364
+
365
+            echo '<meta name="generator" content="WP Super Duper v' . esc_attr( $this->version ) . '"' . ( ! empty( $source[0] ) ? ' data-sd-source="' . esc_attr( $source[0] ) . '"' : '' ) . ' />';
366
+        }
367
+
368
+        /**
369
+         * Get widget settings.
370
+         *
371
+         * @since 1.0.0
372
+         */
373
+        public static function get_widget_settings() {
374
+            global $sd_widgets;
375
+
376
+            $shortcode = isset( $_REQUEST['shortcode'] ) && $_REQUEST['shortcode'] ? sanitize_title_with_dashes( $_REQUEST['shortcode'] ) : '';
377
+            if ( ! $shortcode ) {
378
+                wp_die();
379
+            }
380
+            $widget_args = isset( $sd_widgets[ $shortcode ] ) ? $sd_widgets[ $shortcode ] : '';
381
+            if ( ! $widget_args ) {
382
+                wp_die();
383
+            }
384
+            $class_name = isset( $widget_args['class_name'] ) && $widget_args['class_name'] ? $widget_args['class_name'] : '';
385
+            if ( ! $class_name ) {
386
+                wp_die();
387
+            }
388
+
389
+            // invoke an instance method
390
+            $widget = new $class_name;
391
+
392
+            ob_start();
393
+            $widget->form( array() );
394
+            $form = ob_get_clean();
395
+            echo "<form id='$shortcode'>" . $form . "<div class=\"widget-control-save\"></div></form>";
396
+            echo "<style>" . $widget->widget_css() . "</style>";
397
+            echo "<script>" . $widget->widget_js() . "</script>";
398
+            ?>
399 399
 			<?php
400
-			wp_die();
401
-		}
402
-
403
-		/**
404
-		 * Insert shortcode builder button to classic editor (not inside Gutenberg, not needed).
405
-		 *
406
-		 * @param string $editor_id Optional. Shortcode editor id. Default null.
407
-		 * @param string $insert_shortcode_function Optional. Insert shortcode function. Default null.
408
-		 *
409
-		 *@since 1.0.0
410
-		 *
411
-		 */
412
-		public static function shortcode_insert_button( $editor_id = '', $insert_shortcode_function = '' ) {
413
-			global $sd_widgets, $shortcode_insert_button_once;
414
-			if ( $shortcode_insert_button_once ) {
415
-				return;
416
-			}
417
-			add_thickbox();
418
-
419
-
420
-			/**
421
-			 * Cornerstone makes us play dirty tricks :/
422
-			 * All media_buttons are removed via JS unless they are two specific id's so we wrap our content in this ID so it is not removed.
423
-			 */
424
-			if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
425
-				echo '<span id="insert-media-button">';
426
-			}
427
-
428
-			echo self::shortcode_button( 'this', 'true' );
429
-
430
-			// see opening note
431
-			if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
432
-				echo '</span>'; // end #insert-media-button
433
-			}
434
-
435
-			// Add separate script for generatepress theme sections
436
-			if ( function_exists( 'generate_sections_sections_metabox' ) && did_action( 'generate_sections_metabox' ) ) {
437
-			} else {
438
-				self::shortcode_insert_button_script( $editor_id, $insert_shortcode_function );
439
-			}
440
-
441
-			$shortcode_insert_button_once = true;
442
-		}
443
-
444
-		/**
445
-		 * Gets the shortcode insert button html.
446
-		 *
447
-		 * @param string $id
448
-		 * @param string $search_for_id
449
-		 *
450
-		 * @return mixed
451
-		 */
452
-		public static function shortcode_button( $id = '', $search_for_id = '' ) {
453
-			ob_start();
454
-			?>
400
+            wp_die();
401
+        }
402
+
403
+        /**
404
+         * Insert shortcode builder button to classic editor (not inside Gutenberg, not needed).
405
+         *
406
+         * @param string $editor_id Optional. Shortcode editor id. Default null.
407
+         * @param string $insert_shortcode_function Optional. Insert shortcode function. Default null.
408
+         *
409
+         *@since 1.0.0
410
+         *
411
+         */
412
+        public static function shortcode_insert_button( $editor_id = '', $insert_shortcode_function = '' ) {
413
+            global $sd_widgets, $shortcode_insert_button_once;
414
+            if ( $shortcode_insert_button_once ) {
415
+                return;
416
+            }
417
+            add_thickbox();
418
+
419
+
420
+            /**
421
+             * Cornerstone makes us play dirty tricks :/
422
+             * All media_buttons are removed via JS unless they are two specific id's so we wrap our content in this ID so it is not removed.
423
+             */
424
+            if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
425
+                echo '<span id="insert-media-button">';
426
+            }
427
+
428
+            echo self::shortcode_button( 'this', 'true' );
429
+
430
+            // see opening note
431
+            if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
432
+                echo '</span>'; // end #insert-media-button
433
+            }
434
+
435
+            // Add separate script for generatepress theme sections
436
+            if ( function_exists( 'generate_sections_sections_metabox' ) && did_action( 'generate_sections_metabox' ) ) {
437
+            } else {
438
+                self::shortcode_insert_button_script( $editor_id, $insert_shortcode_function );
439
+            }
440
+
441
+            $shortcode_insert_button_once = true;
442
+        }
443
+
444
+        /**
445
+         * Gets the shortcode insert button html.
446
+         *
447
+         * @param string $id
448
+         * @param string $search_for_id
449
+         *
450
+         * @return mixed
451
+         */
452
+        public static function shortcode_button( $id = '', $search_for_id = '' ) {
453
+            ob_start();
454
+            ?>
455 455
 			<span class="sd-lable-shortcode-inserter">
456 456
 				<a onclick="sd_ajax_get_picker(<?php echo $id;
457
-				if ( $search_for_id ) {
458
-					echo "," . $search_for_id;
459
-				} ?>);" href="#TB_inline?width=100%&height=550&inlineId=super-duper-content-ajaxed"
457
+                if ( $search_for_id ) {
458
+                    echo "," . $search_for_id;
459
+                } ?>);" href="#TB_inline?width=100%&height=550&inlineId=super-duper-content-ajaxed"
460 460
 				   class="thickbox button super-duper-content-open" title="Add Shortcode">
461 461
 					<span style="vertical-align: middle;line-height: 18px;font-size: 20px;"
462 462
 						  class="dashicons dashicons-screenoptions"></span>
@@ -467,21 +467,21 @@  discard block
 block discarded – undo
467 467
 			</span>
468 468
 
469 469
 			<?php
470
-			$html = ob_get_clean();
471
-
472
-			// remove line breaks so we can use it in js
473
-			return preg_replace( "/\r|\n/", "", trim( $html ) );
474
-		}
475
-
476
-		/**
477
-		 * Makes SD work with the siteOrigin page builder.
478
-		 *
479
-		 * @return mixed
480
-		 *@since 1.0.6
481
-		 */
482
-		public static function siteorigin_js() {
483
-			ob_start();
484
-			?>
470
+            $html = ob_get_clean();
471
+
472
+            // remove line breaks so we can use it in js
473
+            return preg_replace( "/\r|\n/", "", trim( $html ) );
474
+        }
475
+
476
+        /**
477
+         * Makes SD work with the siteOrigin page builder.
478
+         *
479
+         * @return mixed
480
+         *@since 1.0.6
481
+         */
482
+        public static function siteorigin_js() {
483
+            ob_start();
484
+            ?>
485 485
 			<script>
486 486
 				/**
487 487
 				 * Check a form to see what items should be shown or hidden.
@@ -557,29 +557,29 @@  discard block
 block discarded – undo
557 557
 				});
558 558
 			</script>
559 559
 			<?php
560
-			$output = ob_get_clean();
560
+            $output = ob_get_clean();
561 561
 
562
-			/*
562
+            /*
563 563
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
564 564
 			 */
565 565
 
566
-			return str_replace( array(
567
-				'<script>',
568
-				'</script>'
569
-			), '', $output );
570
-		}
571
-
572
-		/**
573
-		 * Output the JS and CSS for the shortcode insert button.
574
-		 *
575
-		 * @param string $editor_id
576
-		 * @param string $insert_shortcode_function
577
-		 *
578
-		 *@since 1.0.6
579
-		 *
580
-		 */
581
-		public static function shortcode_insert_button_script( $editor_id = '', $insert_shortcode_function = '' ) {
582
-			?>
566
+            return str_replace( array(
567
+                '<script>',
568
+                '</script>'
569
+            ), '', $output );
570
+        }
571
+
572
+        /**
573
+         * Output the JS and CSS for the shortcode insert button.
574
+         *
575
+         * @param string $editor_id
576
+         * @param string $insert_shortcode_function
577
+         *
578
+         *@since 1.0.6
579
+         *
580
+         */
581
+        public static function shortcode_insert_button_script( $editor_id = '', $insert_shortcode_function = '' ) {
582
+            ?>
583 583
 			<style>
584 584
 				.sd-shortcode-left-wrap {
585 585
 					float: left;
@@ -707,35 +707,35 @@  discard block
 block discarded – undo
707 707
 				<?php } ?>
708 708
 			</style>
709 709
 			<?php
710
-			if ( class_exists( 'SiteOrigin_Panels' ) ) {
711
-				echo "<script>" . self::siteorigin_js() . "</script>";
712
-			}
713
-			?>
710
+            if ( class_exists( 'SiteOrigin_Panels' ) ) {
711
+                echo "<script>" . self::siteorigin_js() . "</script>";
712
+            }
713
+            ?>
714 714
 			<script>
715 715
 				<?php
716
-				if(! empty( $insert_shortcode_function )){
717
-					echo $insert_shortcode_function;
718
-				}else{
719
-
720
-				/**
721
-				 * Function for super duper insert shortcode.
722
-				 *
723
-				 * @since 1.0.0
724
-				 */
725
-				?>
716
+                if(! empty( $insert_shortcode_function )){
717
+                    echo $insert_shortcode_function;
718
+                }else{
719
+
720
+                /**
721
+                 * Function for super duper insert shortcode.
722
+                 *
723
+                 * @since 1.0.0
724
+                 */
725
+                ?>
726 726
 				function sd_insert_shortcode($editor_id) {
727 727
 					$shortcode = jQuery('#TB_ajaxContent #sd-shortcode-output').val();
728 728
 					if ($shortcode) {
729 729
 						if (!$editor_id) {
730 730
 							<?php
731
-							if ( isset( $_REQUEST['et_fb'] ) ) {
732
-								echo '$editor_id = "#main_content_content_vb_tiny_mce";';
733
-							} elseif ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) {
734
-								echo '$editor_id = "#elementor-controls .wp-editor-container textarea";';
735
-							} else {
736
-								echo '$editor_id = "#wp-content-editor-container textarea";';
737
-							}
738
-							?>
731
+                            if ( isset( $_REQUEST['et_fb'] ) ) {
732
+                                echo '$editor_id = "#main_content_content_vb_tiny_mce";';
733
+                            } elseif ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) {
734
+                                echo '$editor_id = "#elementor-controls .wp-editor-container textarea";';
735
+                            } else {
736
+                                echo '$editor_id = "#wp-content-editor-container textarea";';
737
+                            }
738
+                            ?>
739 739
 						} else {
740 740
 							$editor_id = '#' + $editor_id;
741 741
 						}
@@ -1049,18 +1049,18 @@  discard block
 block discarded – undo
1049 1049
 				}
1050 1050
 			</script>
1051 1051
 			<?php
1052
-		}
1053
-
1054
-		/**
1055
-		 * Gets some CSS for the widgets screen.
1056
-		 *
1057
-		 * @param bool $advanced If we should include advanced CSS.
1058
-		 *
1059
-		 * @return mixed
1060
-		 */
1061
-		public function widget_css( $advanced = true ) {
1062
-			ob_start();
1063
-			?>
1052
+        }
1053
+
1054
+        /**
1055
+         * Gets some CSS for the widgets screen.
1056
+         *
1057
+         * @param bool $advanced If we should include advanced CSS.
1058
+         *
1059
+         * @return mixed
1060
+         */
1061
+        public function widget_css( $advanced = true ) {
1062
+            ob_start();
1063
+            ?>
1064 1064
 			<style>
1065 1065
 				<?php if( $advanced ){ ?>
1066 1066
 				.sd-advanced-setting {
@@ -1100,26 +1100,26 @@  discard block
 block discarded – undo
1100 1100
 				.elementor-control .sd-argument select[multiple] option{padding:3px}
1101 1101
 			</style>
1102 1102
 			<?php
1103
-			$output = ob_get_clean();
1103
+            $output = ob_get_clean();
1104 1104
 
1105
-			/*
1105
+            /*
1106 1106
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
1107 1107
 			 */
1108 1108
 
1109
-			return str_replace( array(
1110
-				'<style>',
1111
-				'</style>'
1112
-			), '', $output );
1113
-		}
1114
-
1115
-		/**
1116
-		 * Gets some JS for the widgets screen.
1117
-		 *
1118
-		 * @return mixed
1119
-		 */
1120
-		public function widget_js() {
1121
-			ob_start();
1122
-			?>
1109
+            return str_replace( array(
1110
+                '<style>',
1111
+                '</style>'
1112
+            ), '', $output );
1113
+        }
1114
+
1115
+        /**
1116
+         * Gets some JS for the widgets screen.
1117
+         *
1118
+         * @return mixed
1119
+         */
1120
+        public function widget_js() {
1121
+            ob_start();
1122
+            ?>
1123 1123
 			<script>
1124 1124
 
1125 1125
 				/**
@@ -1270,595 +1270,595 @@  discard block
 block discarded – undo
1270 1270
 				<?php do_action( 'wp_super_duper_widget_js', $this ); ?>
1271 1271
 			</script>
1272 1272
 			<?php
1273
-			$output = ob_get_clean();
1273
+            $output = ob_get_clean();
1274 1274
 
1275
-			/*
1275
+            /*
1276 1276
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
1277 1277
 			 */
1278 1278
 
1279
-			return str_replace( array(
1280
-				'<script>',
1281
-				'</script>'
1282
-			), '', $output );
1283
-		}
1284
-
1285
-
1286
-		/**
1287
-		 * Set the name from the argument key.
1288
-		 *
1289
-		 * @param $options
1290
-		 *
1291
-		 * @return mixed
1292
-		 */
1293
-		private function add_name_from_key( $options, $arguments = false ) {
1294
-			if ( ! empty( $options['arguments'] ) ) {
1295
-				foreach ( $options['arguments'] as $key => $val ) {
1296
-					$options['arguments'][ $key ]['name'] = $key;
1297
-				}
1298
-			} elseif ( $arguments && is_array( $options ) && ! empty( $options ) ) {
1299
-				foreach ( $options as $key => $val ) {
1300
-					$options[ $key ]['name'] = $key;
1301
-				}
1302
-			}
1279
+            return str_replace( array(
1280
+                '<script>',
1281
+                '</script>'
1282
+            ), '', $output );
1283
+        }
1284
+
1285
+
1286
+        /**
1287
+         * Set the name from the argument key.
1288
+         *
1289
+         * @param $options
1290
+         *
1291
+         * @return mixed
1292
+         */
1293
+        private function add_name_from_key( $options, $arguments = false ) {
1294
+            if ( ! empty( $options['arguments'] ) ) {
1295
+                foreach ( $options['arguments'] as $key => $val ) {
1296
+                    $options['arguments'][ $key ]['name'] = $key;
1297
+                }
1298
+            } elseif ( $arguments && is_array( $options ) && ! empty( $options ) ) {
1299
+                foreach ( $options as $key => $val ) {
1300
+                    $options[ $key ]['name'] = $key;
1301
+                }
1302
+            }
1303
+
1304
+            return $options;
1305
+        }
1306
+
1307
+        /**
1308
+         * Register the parent shortcode.
1309
+         *
1310
+         * @since 1.0.0
1311
+         */
1312
+        public function register_shortcode() {
1313
+            add_shortcode( $this->base_id, array( $this, 'shortcode_output' ) );
1314
+            add_action( 'wp_ajax_super_duper_output_shortcode', array( $this, 'render_shortcode' ) );
1315
+        }
1316
+
1317
+        /**
1318
+         * Render the shortcode via ajax so we can return it to Gutenberg.
1319
+         *
1320
+         * @since 1.0.0
1321
+         */
1322
+        public function render_shortcode() {
1323
+            check_ajax_referer( 'super_duper_output_shortcode', '_ajax_nonce', true );
1324
+            if ( ! current_user_can( 'manage_options' ) ) {
1325
+                wp_die();
1326
+            }
1327
+
1328
+            // we might need the $post value here so lets set it.
1329
+            if ( isset( $_POST['post_id'] ) && $_POST['post_id'] ) {
1330
+                $post_obj = get_post( absint( $_POST['post_id'] ) );
1331
+                if ( ! empty( $post_obj ) && empty( $post ) ) {
1332
+                    global $post;
1333
+                    $post = $post_obj;
1334
+                }
1335
+            }
1336
+
1337
+            if ( isset( $_POST['shortcode'] ) && $_POST['shortcode'] ) {
1338
+                $is_preview = $this->is_preview();
1339
+                $shortcode_name   = sanitize_title_with_dashes( $_POST['shortcode'] );
1340
+                $attributes_array = isset( $_POST['attributes'] ) && $_POST['attributes'] ? $_POST['attributes'] : array();
1341
+                $attributes       = '';
1342
+                if ( ! empty( $attributes_array ) ) {
1343
+                    foreach ( $attributes_array as $key => $value ) {
1344
+                        if ( is_array( $value ) ) {
1345
+                            $value = implode( ",", $value );
1346
+                        }
1347
+
1348
+                        if ( ! empty( $value ) ) {
1349
+                            $value = wp_unslash( $value );
1350
+
1351
+                            // Encode [ and ].
1352
+                            if ( $is_preview ) {
1353
+                                $value = $this->encode_shortcodes( $value );
1354
+                            }
1355
+                        }
1356
+                        $attributes .= " " . esc_attr( sanitize_title_with_dashes( $key ) ) . "='" . esc_attr( $value ) . "' ";
1357
+                    }
1358
+                }
1359
+
1360
+                $shortcode = "[" . esc_attr( $shortcode_name ) . " " . $attributes . "]";
1361
+
1362
+                $content = do_shortcode( $shortcode );
1363
+
1364
+                // Decode [ and ].
1365
+                if ( ! empty( $content ) && $is_preview ) {
1366
+                    $content = $this->decode_shortcodes( $content );
1367
+                }
1368
+
1369
+                echo $content;
1370
+            }
1371
+            wp_die();
1372
+        }
1373
+
1374
+        /**
1375
+         * Output the shortcode.
1376
+         *
1377
+         * @param array $args
1378
+         * @param string $content
1379
+         *
1380
+         * @return string
1381
+         */
1382
+        public function shortcode_output( $args = array(), $content = '' ) {
1383
+            $_instance = $args;
1384
+
1385
+            $args = $this->argument_values( $args );
1386
+
1387
+            // add extra argument so we know its a output to gutenberg
1388
+            //$args
1389
+            $args = $this->string_to_bool( $args );
1390
+
1391
+            // if we have a enclosed shortcode we add it to the special `html` argument
1392
+            if ( ! empty( $content ) ) {
1393
+                $args['html'] = $content;
1394
+            }
1395
+
1396
+            if ( ! $this->is_preview() ) {
1397
+                /**
1398
+                 * Filters the settings for a particular widget args.
1399
+                 *
1400
+                 * @param array          $args      The current widget instance's settings.
1401
+                 * @param WP_Super_Duper $widget    The current widget settings.
1402
+                 * @param array          $_instance An array of default widget arguments.
1403
+                 *
1404
+                 *@since 1.0.28
1405
+                 *
1406
+                 */
1407
+                $args = apply_filters( 'wp_super_duper_widget_display_callback', $args, $this, $_instance );
1408
+
1409
+                if ( ! is_array( $args ) ) {
1410
+                    return $args;
1411
+                }
1412
+            }
1413
+
1414
+            $class = isset( $this->options['widget_ops']['classname'] ) ? esc_attr( $this->options['widget_ops']['classname'] ) : '';
1415
+            $class .= " sdel-".$this->get_instance_hash();
1416
+
1417
+            $class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
1418
+            $class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
1419
+
1420
+            $attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
1421
+            $attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
1422
+
1423
+            $shortcode_args = array();
1424
+            $output         = '';
1425
+            $no_wrap        = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
1426
+            if ( isset( $args['no_wrap'] ) && $args['no_wrap'] ) {
1427
+                $no_wrap = true;
1428
+            }
1429
+            $main_content = $this->output( $args, $shortcode_args, $content );
1430
+            if ( $main_content && ! $no_wrap ) {
1431
+                // wrap the shortcode in a div with the same class as the widget
1432
+                $output .= '<div class="' . $class . '" ' . $attrs . '>';
1433
+                if ( ! empty( $args['title'] ) ) {
1434
+                    // if its a shortcode and there is a title try to grab the title wrappers
1435
+                    $shortcode_args = array( 'before_title' => '', 'after_title' => '' );
1436
+                    if ( empty( $instance ) ) {
1437
+                        global $wp_registered_sidebars;
1438
+                        if ( ! empty( $wp_registered_sidebars ) ) {
1439
+                            foreach ( $wp_registered_sidebars as $sidebar ) {
1440
+                                if ( ! empty( $sidebar['before_title'] ) ) {
1441
+                                    $shortcode_args['before_title'] = $sidebar['before_title'];
1442
+                                    $shortcode_args['after_title']  = $sidebar['after_title'];
1443
+                                    break;
1444
+                                }
1445
+                            }
1446
+                        }
1447
+                    }
1448
+                    $output .= $this->output_title( $shortcode_args, $args );
1449
+                }
1450
+                $output .= $main_content;
1451
+                $output .= '</div>';
1452
+            } elseif ( $main_content && $no_wrap ) {
1453
+                $output .= $main_content;
1454
+            }
1455
+
1456
+            // if preview show a placeholder if empty
1457
+            if ( $this->is_preview() && $output == '' ) {
1458
+                $output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
1459
+            }
1460
+
1461
+            return apply_filters( 'wp_super_duper_widget_output', $output, $args, $shortcode_args, $this );
1462
+        }
1463
+
1464
+        /**
1465
+         * Placeholder text to show if output is empty and we are on a preview/builder page.
1466
+         *
1467
+         * @param string $name
1468
+         *
1469
+         * @return string
1470
+         */
1471
+        public function preview_placeholder_text( $name = '' ) {
1472
+            return "<div style='background:#0185ba33;padding: 10px;border: 4px #ccc dashed;'>" . wp_sprintf( __( 'Placeholder for: %s', 'ayecode-connect' ), $name ) . "</div>";
1473
+        }
1474
+
1475
+        /**
1476
+         * Sometimes booleans values can be turned to strings, so we fix that.
1477
+         *
1478
+         * @param $options
1479
+         *
1480
+         * @return mixed
1481
+         */
1482
+        public function string_to_bool( $options ) {
1483
+            // convert bool strings to booleans
1484
+            foreach ( $options as $key => $val ) {
1485
+                if ( $val == 'false' ) {
1486
+                    $options[ $key ] = false;
1487
+                } elseif ( $val == 'true' ) {
1488
+                    $options[ $key ] = true;
1489
+                }
1490
+            }
1491
+
1492
+            return $options;
1493
+        }
1494
+
1495
+        /**
1496
+         * Get the argument values that are also filterable.
1497
+         *
1498
+         * @param $instance
1499
+         *
1500
+         * @return array
1501
+         *@since 1.0.12 Don't set checkbox default value if the value is empty.
1502
+         *
1503
+         */
1504
+        public function argument_values( $instance ) {
1505
+            $argument_values = array();
1506
+
1507
+            // set widget instance
1508
+            $this->instance = $instance;
1509
+
1510
+            if ( empty( $this->arguments ) ) {
1511
+                $this->arguments = $this->get_arguments();
1512
+            }
1513
+
1514
+            if ( ! empty( $this->arguments ) ) {
1515
+                foreach ( $this->arguments as $key => $args ) {
1516
+                    // set the input name from the key
1517
+                    $args['name'] = $key;
1518
+                    //
1519
+                    $argument_values[ $key ] = isset( $instance[ $key ] ) ? $instance[ $key ] : '';
1520
+                    if ( $args['type'] == 'checkbox' && $argument_values[ $key ] == '' ) {
1521
+                        // don't set default for an empty checkbox
1522
+                    } elseif ( $argument_values[ $key ] == '' && isset( $args['default'] ) ) {
1523
+                        $argument_values[ $key ] = $args['default'];
1524
+                    }
1525
+                }
1526
+            }
1527
+
1528
+            return $argument_values;
1529
+        }
1530
+
1531
+        /**
1532
+         * Set arguments in super duper.
1533
+         *
1534
+         * @return array Set arguments.
1535
+         *@since 1.0.0
1536
+         *
1537
+         */
1538
+        public function set_arguments() {
1539
+            return $this->arguments;
1540
+        }
1541
+
1542
+        /**
1543
+         * Get arguments in super duper.
1544
+         *
1545
+         * @return array Get arguments.
1546
+         *@since 1.0.0
1547
+         *
1548
+         */
1549
+        public function get_arguments() {
1550
+            if ( empty( $this->arguments ) ) {
1551
+                $this->arguments = $this->set_arguments();
1552
+            }
1553
+
1554
+            $this->arguments = apply_filters( 'wp_super_duper_arguments', $this->arguments, $this->options, $this->instance );
1555
+            $this->arguments = $this->add_name_from_key( $this->arguments, true );
1556
+
1557
+            return $this->arguments;
1558
+        }
1559
+
1560
+        /**
1561
+         * This is the main output class for all 3 items, widget, shortcode and block, it is extended in the calling class.
1562
+         *
1563
+         * @param array $args
1564
+         * @param array $widget_args
1565
+         * @param string $content
1566
+         */
1567
+        public function output( $args = array(), $widget_args = array(), $content = '' ) {
1568
+
1569
+        }
1570
+
1571
+        /**
1572
+         * Add the dynamic block code inline when the wp-block in enqueued.
1573
+         */
1574
+        public function register_block() {
1575
+            wp_add_inline_script( 'wp-blocks', $this->block() );
1576
+            if ( class_exists( 'SiteOrigin_Panels' ) ) {
1577
+                wp_add_inline_script( 'wp-blocks', $this->siteorigin_js() );
1578
+            }
1579
+        }
1580
+
1581
+        /**
1582
+         * Check if we need to show advanced options.
1583
+         *
1584
+         * @return bool
1585
+         */
1586
+        public function block_show_advanced() {
1587
+
1588
+            $show      = false;
1589
+            $arguments = $this->get_arguments();
1590
+
1591
+            if ( ! empty( $arguments ) ) {
1592
+                foreach ( $arguments as $argument ) {
1593
+                    if ( isset( $argument['advanced'] ) && $argument['advanced'] ) {
1594
+                        $show = true;
1595
+                        break; // no need to continue if we know we have it
1596
+                    }
1597
+                }
1598
+            }
1599
+
1600
+            return $show;
1601
+        }
1602
+
1603
+        /**
1604
+         * Get the url path to the current folder.
1605
+         *
1606
+         * @return string
1607
+         */
1608
+        public function get_url() {
1609
+            $url = $this->url;
1610
+
1611
+            if ( ! $url ) {
1612
+                $content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
1613
+                $content_url = untrailingslashit( WP_CONTENT_URL );
1614
+
1615
+                // Replace http:// to https://.
1616
+                if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
1617
+                    $content_url = str_replace( 'http://', 'https://', $content_url );
1618
+                }
1619
+
1620
+                // Check if we are inside a plugin
1621
+                $file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
1622
+                $url = str_replace( $content_dir, $content_url, $file_dir );
1623
+                $url = trailingslashit( $url );
1624
+                $this->url = $url;
1625
+            }
1626
+
1627
+            return $url;
1628
+        }
1629
+
1630
+        /**
1631
+         * Get the url path to the current folder.
1632
+         *
1633
+         * @return string
1634
+         */
1635
+        public function get_url_old() {
1636
+
1637
+            $url = $this->url;
1638
+
1639
+            if ( ! $url ) {
1640
+                // check if we are inside a plugin
1641
+                $file_dir = str_replace( "/includes", "", dirname( __FILE__ ) );
1642
+
1643
+                $dir_parts = explode( "/wp-content/", $file_dir );
1644
+                $url_parts = explode( "/wp-content/", plugins_url() );
1645
+
1646
+                if ( ! empty( $url_parts[0] ) && ! empty( $dir_parts[1] ) ) {
1647
+                    $url       = trailingslashit( $url_parts[0] . "/wp-content/" . $dir_parts[1] );
1648
+                    $this->url = $url;
1649
+                }
1650
+            }
1651
+
1652
+
1653
+            return $url;
1654
+        }
1655
+
1656
+        /**
1657
+         * Generate the block icon.
1658
+         *
1659
+         * Enables the use of Font Awesome icons.
1660
+         *
1661
+         * @note xlink:href is actually deprecated but href is not supported by all so we use both.
1662
+         *
1663
+         * @param $icon
1664
+         *
1665
+         * @return string
1666
+         *@since 1.1.0
1667
+         */
1668
+        public function get_block_icon( $icon ) {
1669
+
1670
+            // check if we have a Font Awesome icon
1671
+            $fa_type = '';
1672
+            if ( substr( $icon, 0, 7 ) === "fas fa-" ) {
1673
+                $fa_type = 'solid';
1674
+            } elseif ( substr( $icon, 0, 7 ) === "far fa-" ) {
1675
+                $fa_type = 'regular';
1676
+            } elseif ( substr( $icon, 0, 7 ) === "fab fa-" ) {
1677
+                $fa_type = 'brands';
1678
+            } else {
1679
+                $icon = "'" . $icon . "'";
1680
+            }
1681
+
1682
+            // set the icon if we found one
1683
+            if ( $fa_type ) {
1684
+                $fa_icon = str_replace( array( "fas fa-", "far fa-", "fab fa-" ), "", $icon );
1685
+                $icon    = "el('svg',{width: 20, height: 20, viewBox: '0 0 20 20'},el('use', {'xlink:href': '" . $this->get_url() . "icons/" . $fa_type . ".svg#" . $fa_icon . "','href': '" . $this->get_url() . "icons/" . $fa_type . ".svg#" . $fa_icon . "'}))";
1686
+            }
1687
+
1688
+            return $icon;
1689
+        }
1690
+
1691
+        public function group_arguments( $arguments ) {
1692
+            if ( ! empty( $arguments ) ) {
1693
+                $temp_arguments = array();
1694
+                $general        = __( "General", 'ayecode-connect' );
1695
+                $add_sections   = false;
1696
+                foreach ( $arguments as $key => $args ) {
1697
+                    if ( isset( $args['group'] ) ) {
1698
+                        $temp_arguments[ $args['group'] ][ $key ] = $args;
1699
+                        $add_sections                             = true;
1700
+                    } else {
1701
+                        $temp_arguments[ $general ][ $key ] = $args;
1702
+                    }
1703
+                }
1704
+
1705
+                // only add sections if more than one
1706
+                if ( $add_sections ) {
1707
+                    $arguments = $temp_arguments;
1708
+                }
1709
+            }
1710
+
1711
+            return $arguments;
1712
+        }
1713
+
1714
+        /**
1715
+         * Parse used group tabs.
1716
+         *
1717
+         * @since 1.1.17
1718
+         */
1719
+        public function group_block_tabs( $tabs, $arguments ) {
1720
+            if ( ! empty( $tabs ) && ! empty( $arguments ) ) {
1721
+                $has_sections = false;
1722
+
1723
+                foreach ( $this->arguments as $key => $args ) {
1724
+                    if ( isset( $args['group'] ) ) {
1725
+                        $has_sections = true;
1726
+                        break;
1727
+                    }
1728
+                }
1729
+
1730
+                if ( ! $has_sections ) {
1731
+                    return $tabs;
1732
+                }
1733
+
1734
+                $new_tabs = array();
1735
+
1736
+                foreach ( $tabs as $tab_key => $tab ) {
1737
+                    $new_groups = array();
1738
+
1739
+                    if ( ! empty( $tab['groups'] ) && is_array( $tab['groups'] ) ) {
1740
+                        foreach ( $tab['groups'] as $group ) {
1741
+                            if ( isset( $arguments[ $group ] ) ) {
1742
+                                $new_groups[] = $group;
1743
+                            }
1744
+                        }
1745
+                    }
1746
+
1747
+                    if ( ! empty( $new_groups ) ) {
1748
+                        $tab['groups'] = $new_groups;
1749
+
1750
+                        $new_tabs[ $tab_key ] = $tab;
1751
+                    }
1752
+                }
1753
+
1754
+                $tabs = $new_tabs;
1755
+            }
1756
+
1757
+            return $tabs;
1758
+        }
1759
+
1760
+        /**
1761
+         * Output the JS for building the dynamic Guntenberg block.
1762
+         *
1763
+         * @return mixed
1764
+         *@since 1.0.9 Save numbers as numbers and not strings.
1765
+         * @since 1.1.0 Font Awesome classes can be used for icons.
1766
+         * @since 1.0.4 Added block_wrap property which will set the block wrapping output element ie: div, span, p or empty for no wrap.
1767
+         */
1768
+        public function block() {
1769
+            global $sd_is_js_functions_loaded, $aui_bs5;
1770
+
1771
+            $show_advanced = $this->block_show_advanced();
1772
+
1773
+            ob_start();
1774
+            ?>
1775
+			<script>
1776
+			<?php
1777
+            if ( ! $sd_is_js_functions_loaded ) {
1778
+                $sd_is_js_functions_loaded = true;
1779
+            ?>
1780
+function sd_show_view_options($this){
1781
+	if(jQuery($this).html().length){
1782
+		jQuery($this).html('');
1783
+	}else{
1784
+		jQuery($this).html('<div class="position-absolute d-flex flex-column bg-white p-1 rounded border shadow-lg " style="top:-80px;left:-5px;"><div class="dashicons dashicons-desktop mb-1" onclick="sd_set_view_type(\'Desktop\');"></div><div class="dashicons dashicons-tablet mb-1" onclick="sd_set_view_type(\'Tablet\');"></div><div class="dashicons dashicons-smartphone" onclick="sd_set_view_type(\'Mobile\');"></div></div>');
1785
+	}
1786
+}
1303 1787
 
1304
-			return $options;
1305
-		}
1788
+function sd_set_view_type($device){
1789
+	wp.data.dispatch('core/edit-site') ? wp.data.dispatch('core/edit-site').__experimentalSetPreviewDeviceType($device) : wp.data.dispatch('core/edit-post').__experimentalSetPreviewDeviceType($device);
1790
+}
1306 1791
 
1307
-		/**
1308
-		 * Register the parent shortcode.
1309
-		 *
1310
-		 * @since 1.0.0
1311
-		 */
1312
-		public function register_shortcode() {
1313
-			add_shortcode( $this->base_id, array( $this, 'shortcode_output' ) );
1314
-			add_action( 'wp_ajax_super_duper_output_shortcode', array( $this, 'render_shortcode' ) );
1792
+jQuery(function(){
1793
+	sd_block_visibility_init();
1794
+});
1795
+function sd_block_visibility_init() {
1796
+	jQuery(document).off('change', '.bs-vc-modal-form').on('change', '.bs-vc-modal-form', function() {
1797
+		try {
1798
+			aui_conditional_fields('.bs-vc-modal-form');
1799
+		} catch(err) {
1800
+			console.log(err.message);
1315 1801
 		}
1802
+	});
1316 1803
 
1317
-		/**
1318
-		 * Render the shortcode via ajax so we can return it to Gutenberg.
1319
-		 *
1320
-		 * @since 1.0.0
1321
-		 */
1322
-		public function render_shortcode() {
1323
-			check_ajax_referer( 'super_duper_output_shortcode', '_ajax_nonce', true );
1324
-			if ( ! current_user_can( 'manage_options' ) ) {
1325
-				wp_die();
1326
-			}
1327
-
1328
-			// we might need the $post value here so lets set it.
1329
-			if ( isset( $_POST['post_id'] ) && $_POST['post_id'] ) {
1330
-				$post_obj = get_post( absint( $_POST['post_id'] ) );
1331
-				if ( ! empty( $post_obj ) && empty( $post ) ) {
1332
-					global $post;
1333
-					$post = $post_obj;
1334
-				}
1335
-			}
1336
-
1337
-			if ( isset( $_POST['shortcode'] ) && $_POST['shortcode'] ) {
1338
-				$is_preview = $this->is_preview();
1339
-				$shortcode_name   = sanitize_title_with_dashes( $_POST['shortcode'] );
1340
-				$attributes_array = isset( $_POST['attributes'] ) && $_POST['attributes'] ? $_POST['attributes'] : array();
1341
-				$attributes       = '';
1342
-				if ( ! empty( $attributes_array ) ) {
1343
-					foreach ( $attributes_array as $key => $value ) {
1344
-						if ( is_array( $value ) ) {
1345
-							$value = implode( ",", $value );
1346
-						}
1347
-
1348
-						if ( ! empty( $value ) ) {
1349
-							$value = wp_unslash( $value );
1350
-
1351
-							// Encode [ and ].
1352
-							if ( $is_preview ) {
1353
-								$value = $this->encode_shortcodes( $value );
1354
-							}
1355
-						}
1356
-						$attributes .= " " . esc_attr( sanitize_title_with_dashes( $key ) ) . "='" . esc_attr( $value ) . "' ";
1804
+	jQuery(document).off('click', '.bs-vc-save').on('click', '.bs-vc-save', function() {
1805
+		var $bsvcModal = jQuery(this).closest('.bs-vc-modal'), $bsvcForm = $bsvcModal.find('.bs-vc-modal-form'), vOutput = jQuery('#bsvc_output', $bsvcForm).val(), rawValue = '', oVal = {}, oOut = {}, iRule = 0;
1806
+		jQuery(this).addClass('disabled');
1807
+		jQuery('.bs-vc-modal-form .bs-vc-rule-sets .bs-vc-rule').each(function(){
1808
+			vRule = jQuery(this).find('.bsvc_rule').val(), oRule = {};
1809
+			if (vRule == 'logged_in' || vRule == 'logged_out' || vRule == 'post_author') {
1810
+				oRule.type = vRule;
1811
+			} else if (vRule == 'user_roles') {
1812
+				oRule.type = vRule;
1813
+				if (jQuery(this).find('.bsvc_user_roles:checked').length) {
1814
+					var user_roles = jQuery(this).find('.bsvc_user_roles:checked').map(function() {
1815
+						return jQuery(this).val();
1816
+					}).get();
1817
+					if (user_roles && user_roles.length) {
1818
+						oRule.user_roles = user_roles.join(",");
1357 1819
 					}
1358 1820
 				}
1359
-
1360
-				$shortcode = "[" . esc_attr( $shortcode_name ) . " " . $attributes . "]";
1361
-
1362
-				$content = do_shortcode( $shortcode );
1363
-
1364
-				// Decode [ and ].
1365
-				if ( ! empty( $content ) && $is_preview ) {
1366
-					$content = $this->decode_shortcodes( $content );
1821
+			} else if (vRule == 'gd_field') {
1822
+				if (jQuery(this).find('.bsvc_gd_field ').val() && jQuery(this).find('.bsvc_gd_field_condition').val()) {
1823
+					oRule.type = vRule;
1824
+					oRule.field = jQuery(this).find('.bsvc_gd_field ').val();
1825
+					oRule.condition = jQuery(this).find('.bsvc_gd_field_condition').val();
1826
+					if (oRule.condition != 'is_empty' && oRule.condition != 'is_not_empty') {
1827
+						oRule.search = jQuery(this).find('.bsvc_gd_field_search').val();
1828
+					}
1367 1829
 				}
1368
-
1369
-				echo $content;
1370 1830
 			}
1371
-			wp_die();
1372
-		}
1373
-
1374
-		/**
1375
-		 * Output the shortcode.
1376
-		 *
1377
-		 * @param array $args
1378
-		 * @param string $content
1379
-		 *
1380
-		 * @return string
1381
-		 */
1382
-		public function shortcode_output( $args = array(), $content = '' ) {
1383
-			$_instance = $args;
1384
-
1385
-			$args = $this->argument_values( $args );
1386
-
1387
-			// add extra argument so we know its a output to gutenberg
1388
-			//$args
1389
-			$args = $this->string_to_bool( $args );
1390
-
1391
-			// if we have a enclosed shortcode we add it to the special `html` argument
1392
-			if ( ! empty( $content ) ) {
1393
-				$args['html'] = $content;
1831
+			if (Object.keys(oRule).length > 0) {
1832
+				iRule++;
1833
+				oVal['rule'+iRule] = oRule;
1394 1834
 			}
1395
-
1396
-			if ( ! $this->is_preview() ) {
1397
-				/**
1398
-				 * Filters the settings for a particular widget args.
1399
-				 *
1400
-				 * @param array          $args      The current widget instance's settings.
1401
-				 * @param WP_Super_Duper $widget    The current widget settings.
1402
-				 * @param array          $_instance An array of default widget arguments.
1403
-				 *
1404
-				 *@since 1.0.28
1405
-				 *
1406
-				 */
1407
-				$args = apply_filters( 'wp_super_duper_widget_display_callback', $args, $this, $_instance );
1408
-
1409
-				if ( ! is_array( $args ) ) {
1410
-					return $args;
1835
+		});
1836
+		if (vOutput == 'hide') {
1837
+			oOut.type = vOutput;
1838
+		} else if (vOutput == 'message') {
1839
+			if (jQuery('#bsvc_message', $bsvcForm).val()) {
1840
+				oOut.type = vOutput;
1841
+				oOut.message = jQuery('#bsvc_message', $bsvcForm).val();
1842
+				if (jQuery('#bsvc_message_type', $bsvcForm).val()) {
1843
+					oOut.message_type = jQuery('#bsvc_message_type', $bsvcForm).val();
1411 1844
 				}
1412 1845
 			}
1413
-
1414
-			$class = isset( $this->options['widget_ops']['classname'] ) ? esc_attr( $this->options['widget_ops']['classname'] ) : '';
1415
-			$class .= " sdel-".$this->get_instance_hash();
1416
-
1417
-			$class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
1418
-			$class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
1419
-
1420
-			$attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
1421
-			$attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
1422
-
1423
-			$shortcode_args = array();
1424
-			$output         = '';
1425
-			$no_wrap        = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
1426
-			if ( isset( $args['no_wrap'] ) && $args['no_wrap'] ) {
1427
-				$no_wrap = true;
1428
-			}
1429
-			$main_content = $this->output( $args, $shortcode_args, $content );
1430
-			if ( $main_content && ! $no_wrap ) {
1431
-				// wrap the shortcode in a div with the same class as the widget
1432
-				$output .= '<div class="' . $class . '" ' . $attrs . '>';
1433
-				if ( ! empty( $args['title'] ) ) {
1434
-					// if its a shortcode and there is a title try to grab the title wrappers
1435
-					$shortcode_args = array( 'before_title' => '', 'after_title' => '' );
1436
-					if ( empty( $instance ) ) {
1437
-						global $wp_registered_sidebars;
1438
-						if ( ! empty( $wp_registered_sidebars ) ) {
1439
-							foreach ( $wp_registered_sidebars as $sidebar ) {
1440
-								if ( ! empty( $sidebar['before_title'] ) ) {
1441
-									$shortcode_args['before_title'] = $sidebar['before_title'];
1442
-									$shortcode_args['after_title']  = $sidebar['after_title'];
1443
-									break;
1444
-								}
1445
-							}
1446
-						}
1447
-					}
1448
-					$output .= $this->output_title( $shortcode_args, $args );
1449
-				}
1450
-				$output .= $main_content;
1451
-				$output .= '</div>';
1452
-			} elseif ( $main_content && $no_wrap ) {
1453
-				$output .= $main_content;
1846
+		} else if (vOutput == 'page') {
1847
+			if (jQuery('#bsvc_page', $bsvcForm).val()) {
1848
+				oOut.type = vOutput;
1849
+				oOut.page = jQuery('#bsvc_page', $bsvcForm).val();
1454 1850
 			}
1455
-
1456
-			// if preview show a placeholder if empty
1457
-			if ( $this->is_preview() && $output == '' ) {
1458
-				$output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
1851
+		} else if (vOutput == 'template_part') {
1852
+			if (jQuery('#bsvc_tmpl_part', $bsvcForm).val()) {
1853
+				oOut.type = vOutput;
1854
+				oOut.template_part = jQuery('#bsvc_tmpl_part', $bsvcForm).val();
1459 1855
 			}
1460
-
1461
-			return apply_filters( 'wp_super_duper_widget_output', $output, $args, $shortcode_args, $this );
1462 1856
 		}
1463
-
1464
-		/**
1465
-		 * Placeholder text to show if output is empty and we are on a preview/builder page.
1466
-		 *
1467
-		 * @param string $name
1468
-		 *
1469
-		 * @return string
1470
-		 */
1471
-		public function preview_placeholder_text( $name = '' ) {
1472
-			return "<div style='background:#0185ba33;padding: 10px;border: 4px #ccc dashed;'>" . wp_sprintf( __( 'Placeholder for: %s', 'ayecode-connect' ), $name ) . "</div>";
1857
+		if (Object.keys(oOut).length > 0) {
1858
+			oVal.output = oOut;
1473 1859
 		}
1474
-
1475
-		/**
1476
-		 * Sometimes booleans values can be turned to strings, so we fix that.
1477
-		 *
1478
-		 * @param $options
1479
-		 *
1480
-		 * @return mixed
1481
-		 */
1482
-		public function string_to_bool( $options ) {
1483
-			// convert bool strings to booleans
1484
-			foreach ( $options as $key => $val ) {
1485
-				if ( $val == 'false' ) {
1486
-					$options[ $key ] = false;
1487
-				} elseif ( $val == 'true' ) {
1488
-					$options[ $key ] = true;
1489
-				}
1490
-			}
1491
-
1492
-			return $options;
1493
-		}
1494
-
1495
-		/**
1496
-		 * Get the argument values that are also filterable.
1497
-		 *
1498
-		 * @param $instance
1499
-		 *
1500
-		 * @return array
1501
-		 *@since 1.0.12 Don't set checkbox default value if the value is empty.
1502
-		 *
1503
-		 */
1504
-		public function argument_values( $instance ) {
1505
-			$argument_values = array();
1506
-
1507
-			// set widget instance
1508
-			$this->instance = $instance;
1509
-
1510
-			if ( empty( $this->arguments ) ) {
1511
-				$this->arguments = $this->get_arguments();
1512
-			}
1513
-
1514
-			if ( ! empty( $this->arguments ) ) {
1515
-				foreach ( $this->arguments as $key => $args ) {
1516
-					// set the input name from the key
1517
-					$args['name'] = $key;
1518
-					//
1519
-					$argument_values[ $key ] = isset( $instance[ $key ] ) ? $instance[ $key ] : '';
1520
-					if ( $args['type'] == 'checkbox' && $argument_values[ $key ] == '' ) {
1521
-						// don't set default for an empty checkbox
1522
-					} elseif ( $argument_values[ $key ] == '' && isset( $args['default'] ) ) {
1523
-						$argument_values[ $key ] = $args['default'];
1524
-					}
1525
-				}
1526
-			}
1527
-
1528
-			return $argument_values;
1529
-		}
1530
-
1531
-		/**
1532
-		 * Set arguments in super duper.
1533
-		 *
1534
-		 * @return array Set arguments.
1535
-		 *@since 1.0.0
1536
-		 *
1537
-		 */
1538
-		public function set_arguments() {
1539
-			return $this->arguments;
1540
-		}
1541
-
1542
-		/**
1543
-		 * Get arguments in super duper.
1544
-		 *
1545
-		 * @return array Get arguments.
1546
-		 *@since 1.0.0
1547
-		 *
1548
-		 */
1549
-		public function get_arguments() {
1550
-			if ( empty( $this->arguments ) ) {
1551
-				$this->arguments = $this->set_arguments();
1552
-			}
1553
-
1554
-			$this->arguments = apply_filters( 'wp_super_duper_arguments', $this->arguments, $this->options, $this->instance );
1555
-			$this->arguments = $this->add_name_from_key( $this->arguments, true );
1556
-
1557
-			return $this->arguments;
1558
-		}
1559
-
1560
-		/**
1561
-		 * This is the main output class for all 3 items, widget, shortcode and block, it is extended in the calling class.
1562
-		 *
1563
-		 * @param array $args
1564
-		 * @param array $widget_args
1565
-		 * @param string $content
1566
-		 */
1567
-		public function output( $args = array(), $widget_args = array(), $content = '' ) {
1568
-
1569
-		}
1570
-
1571
-		/**
1572
-		 * Add the dynamic block code inline when the wp-block in enqueued.
1573
-		 */
1574
-		public function register_block() {
1575
-			wp_add_inline_script( 'wp-blocks', $this->block() );
1576
-			if ( class_exists( 'SiteOrigin_Panels' ) ) {
1577
-				wp_add_inline_script( 'wp-blocks', $this->siteorigin_js() );
1578
-			}
1579
-		}
1580
-
1581
-		/**
1582
-		 * Check if we need to show advanced options.
1583
-		 *
1584
-		 * @return bool
1585
-		 */
1586
-		public function block_show_advanced() {
1587
-
1588
-			$show      = false;
1589
-			$arguments = $this->get_arguments();
1590
-
1591
-			if ( ! empty( $arguments ) ) {
1592
-				foreach ( $arguments as $argument ) {
1593
-					if ( isset( $argument['advanced'] ) && $argument['advanced'] ) {
1594
-						$show = true;
1595
-						break; // no need to continue if we know we have it
1596
-					}
1597
-				}
1598
-			}
1599
-
1600
-			return $show;
1601
-		}
1602
-
1603
-		/**
1604
-		 * Get the url path to the current folder.
1605
-		 *
1606
-		 * @return string
1607
-		 */
1608
-		public function get_url() {
1609
-			$url = $this->url;
1610
-
1611
-			if ( ! $url ) {
1612
-				$content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
1613
-				$content_url = untrailingslashit( WP_CONTENT_URL );
1614
-
1615
-				// Replace http:// to https://.
1616
-				if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
1617
-					$content_url = str_replace( 'http://', 'https://', $content_url );
1618
-				}
1619
-
1620
-				// Check if we are inside a plugin
1621
-				$file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
1622
-				$url = str_replace( $content_dir, $content_url, $file_dir );
1623
-				$url = trailingslashit( $url );
1624
-				$this->url = $url;
1625
-			}
1626
-
1627
-			return $url;
1628
-		}
1629
-
1630
-		/**
1631
-		 * Get the url path to the current folder.
1632
-		 *
1633
-		 * @return string
1634
-		 */
1635
-		public function get_url_old() {
1636
-
1637
-			$url = $this->url;
1638
-
1639
-			if ( ! $url ) {
1640
-				// check if we are inside a plugin
1641
-				$file_dir = str_replace( "/includes", "", dirname( __FILE__ ) );
1642
-
1643
-				$dir_parts = explode( "/wp-content/", $file_dir );
1644
-				$url_parts = explode( "/wp-content/", plugins_url() );
1645
-
1646
-				if ( ! empty( $url_parts[0] ) && ! empty( $dir_parts[1] ) ) {
1647
-					$url       = trailingslashit( $url_parts[0] . "/wp-content/" . $dir_parts[1] );
1648
-					$this->url = $url;
1649
-				}
1650
-			}
1651
-
1652
-
1653
-			return $url;
1654
-		}
1655
-
1656
-		/**
1657
-		 * Generate the block icon.
1658
-		 *
1659
-		 * Enables the use of Font Awesome icons.
1660
-		 *
1661
-		 * @note xlink:href is actually deprecated but href is not supported by all so we use both.
1662
-		 *
1663
-		 * @param $icon
1664
-		 *
1665
-		 * @return string
1666
-		 *@since 1.1.0
1667
-		 */
1668
-		public function get_block_icon( $icon ) {
1669
-
1670
-			// check if we have a Font Awesome icon
1671
-			$fa_type = '';
1672
-			if ( substr( $icon, 0, 7 ) === "fas fa-" ) {
1673
-				$fa_type = 'solid';
1674
-			} elseif ( substr( $icon, 0, 7 ) === "far fa-" ) {
1675
-				$fa_type = 'regular';
1676
-			} elseif ( substr( $icon, 0, 7 ) === "fab fa-" ) {
1677
-				$fa_type = 'brands';
1678
-			} else {
1679
-				$icon = "'" . $icon . "'";
1680
-			}
1681
-
1682
-			// set the icon if we found one
1683
-			if ( $fa_type ) {
1684
-				$fa_icon = str_replace( array( "fas fa-", "far fa-", "fab fa-" ), "", $icon );
1685
-				$icon    = "el('svg',{width: 20, height: 20, viewBox: '0 0 20 20'},el('use', {'xlink:href': '" . $this->get_url() . "icons/" . $fa_type . ".svg#" . $fa_icon . "','href': '" . $this->get_url() . "icons/" . $fa_type . ".svg#" . $fa_icon . "'}))";
1686
-			}
1687
-
1688
-			return $icon;
1689
-		}
1690
-
1691
-		public function group_arguments( $arguments ) {
1692
-			if ( ! empty( $arguments ) ) {
1693
-				$temp_arguments = array();
1694
-				$general        = __( "General", 'ayecode-connect' );
1695
-				$add_sections   = false;
1696
-				foreach ( $arguments as $key => $args ) {
1697
-					if ( isset( $args['group'] ) ) {
1698
-						$temp_arguments[ $args['group'] ][ $key ] = $args;
1699
-						$add_sections                             = true;
1700
-					} else {
1701
-						$temp_arguments[ $general ][ $key ] = $args;
1702
-					}
1703
-				}
1704
-
1705
-				// only add sections if more than one
1706
-				if ( $add_sections ) {
1707
-					$arguments = $temp_arguments;
1708
-				}
1709
-			}
1710
-
1711
-			return $arguments;
1712
-		}
1713
-
1714
-		/**
1715
-		 * Parse used group tabs.
1716
-		 *
1717
-		 * @since 1.1.17
1718
-		 */
1719
-		public function group_block_tabs( $tabs, $arguments ) {
1720
-			if ( ! empty( $tabs ) && ! empty( $arguments ) ) {
1721
-				$has_sections = false;
1722
-
1723
-				foreach ( $this->arguments as $key => $args ) {
1724
-					if ( isset( $args['group'] ) ) {
1725
-						$has_sections = true;
1726
-						break;
1727
-					}
1728
-				}
1729
-
1730
-				if ( ! $has_sections ) {
1731
-					return $tabs;
1732
-				}
1733
-
1734
-				$new_tabs = array();
1735
-
1736
-				foreach ( $tabs as $tab_key => $tab ) {
1737
-					$new_groups = array();
1738
-
1739
-					if ( ! empty( $tab['groups'] ) && is_array( $tab['groups'] ) ) {
1740
-						foreach ( $tab['groups'] as $group ) {
1741
-							if ( isset( $arguments[ $group ] ) ) {
1742
-								$new_groups[] = $group;
1743
-							}
1744
-						}
1745
-					}
1746
-
1747
-					if ( ! empty( $new_groups ) ) {
1748
-						$tab['groups'] = $new_groups;
1749
-
1750
-						$new_tabs[ $tab_key ] = $tab;
1751
-					}
1752
-				}
1753
-
1754
-				$tabs = $new_tabs;
1755
-			}
1756
-
1757
-			return $tabs;
1758
-		}
1759
-
1760
-		/**
1761
-		 * Output the JS for building the dynamic Guntenberg block.
1762
-		 *
1763
-		 * @return mixed
1764
-		 *@since 1.0.9 Save numbers as numbers and not strings.
1765
-		 * @since 1.1.0 Font Awesome classes can be used for icons.
1766
-		 * @since 1.0.4 Added block_wrap property which will set the block wrapping output element ie: div, span, p or empty for no wrap.
1767
-		 */
1768
-		public function block() {
1769
-			global $sd_is_js_functions_loaded, $aui_bs5;
1770
-
1771
-			$show_advanced = $this->block_show_advanced();
1772
-
1773
-			ob_start();
1774
-			?>
1775
-			<script>
1776
-			<?php
1777
-			if ( ! $sd_is_js_functions_loaded ) {
1778
-				$sd_is_js_functions_loaded = true;
1779
-			?>
1780
-function sd_show_view_options($this){
1781
-	if(jQuery($this).html().length){
1782
-		jQuery($this).html('');
1783
-	}else{
1784
-		jQuery($this).html('<div class="position-absolute d-flex flex-column bg-white p-1 rounded border shadow-lg " style="top:-80px;left:-5px;"><div class="dashicons dashicons-desktop mb-1" onclick="sd_set_view_type(\'Desktop\');"></div><div class="dashicons dashicons-tablet mb-1" onclick="sd_set_view_type(\'Tablet\');"></div><div class="dashicons dashicons-smartphone" onclick="sd_set_view_type(\'Mobile\');"></div></div>');
1785
-	}
1786
-}
1787
-
1788
-function sd_set_view_type($device){
1789
-	wp.data.dispatch('core/edit-site') ? wp.data.dispatch('core/edit-site').__experimentalSetPreviewDeviceType($device) : wp.data.dispatch('core/edit-post').__experimentalSetPreviewDeviceType($device);
1790
-}
1791
-
1792
-jQuery(function(){
1793
-	sd_block_visibility_init();
1794
-});
1795
-function sd_block_visibility_init() {
1796
-	jQuery(document).off('change', '.bs-vc-modal-form').on('change', '.bs-vc-modal-form', function() {
1797
-		try {
1798
-			aui_conditional_fields('.bs-vc-modal-form');
1799
-		} catch(err) {
1800
-			console.log(err.message);
1801
-		}
1802
-	});
1803
-
1804
-	jQuery(document).off('click', '.bs-vc-save').on('click', '.bs-vc-save', function() {
1805
-		var $bsvcModal = jQuery(this).closest('.bs-vc-modal'), $bsvcForm = $bsvcModal.find('.bs-vc-modal-form'), vOutput = jQuery('#bsvc_output', $bsvcForm).val(), rawValue = '', oVal = {}, oOut = {}, iRule = 0;
1806
-		jQuery(this).addClass('disabled');
1807
-		jQuery('.bs-vc-modal-form .bs-vc-rule-sets .bs-vc-rule').each(function(){
1808
-			vRule = jQuery(this).find('.bsvc_rule').val(), oRule = {};
1809
-			if (vRule == 'logged_in' || vRule == 'logged_out' || vRule == 'post_author') {
1810
-				oRule.type = vRule;
1811
-			} else if (vRule == 'user_roles') {
1812
-				oRule.type = vRule;
1813
-				if (jQuery(this).find('.bsvc_user_roles:checked').length) {
1814
-					var user_roles = jQuery(this).find('.bsvc_user_roles:checked').map(function() {
1815
-						return jQuery(this).val();
1816
-					}).get();
1817
-					if (user_roles && user_roles.length) {
1818
-						oRule.user_roles = user_roles.join(",");
1819
-					}
1820
-				}
1821
-			} else if (vRule == 'gd_field') {
1822
-				if (jQuery(this).find('.bsvc_gd_field ').val() && jQuery(this).find('.bsvc_gd_field_condition').val()) {
1823
-					oRule.type = vRule;
1824
-					oRule.field = jQuery(this).find('.bsvc_gd_field ').val();
1825
-					oRule.condition = jQuery(this).find('.bsvc_gd_field_condition').val();
1826
-					if (oRule.condition != 'is_empty' && oRule.condition != 'is_not_empty') {
1827
-						oRule.search = jQuery(this).find('.bsvc_gd_field_search').val();
1828
-					}
1829
-				}
1830
-			}
1831
-			if (Object.keys(oRule).length > 0) {
1832
-				iRule++;
1833
-				oVal['rule'+iRule] = oRule;
1834
-			}
1835
-		});
1836
-		if (vOutput == 'hide') {
1837
-			oOut.type = vOutput;
1838
-		} else if (vOutput == 'message') {
1839
-			if (jQuery('#bsvc_message', $bsvcForm).val()) {
1840
-				oOut.type = vOutput;
1841
-				oOut.message = jQuery('#bsvc_message', $bsvcForm).val();
1842
-				if (jQuery('#bsvc_message_type', $bsvcForm).val()) {
1843
-					oOut.message_type = jQuery('#bsvc_message_type', $bsvcForm).val();
1844
-				}
1845
-			}
1846
-		} else if (vOutput == 'page') {
1847
-			if (jQuery('#bsvc_page', $bsvcForm).val()) {
1848
-				oOut.type = vOutput;
1849
-				oOut.page = jQuery('#bsvc_page', $bsvcForm).val();
1850
-			}
1851
-		} else if (vOutput == 'template_part') {
1852
-			if (jQuery('#bsvc_tmpl_part', $bsvcForm).val()) {
1853
-				oOut.type = vOutput;
1854
-				oOut.template_part = jQuery('#bsvc_tmpl_part', $bsvcForm).val();
1855
-			}
1856
-		}
1857
-		if (Object.keys(oOut).length > 0) {
1858
-			oVal.output = oOut;
1859
-		}
1860
-		if (Object.keys(oVal).length > 0) {
1861
-			rawValue = JSON.stringify(oVal);
1860
+		if (Object.keys(oVal).length > 0) {
1861
+			rawValue = JSON.stringify(oVal);
1862 1862
 		}
1863 1863
 		$bsvcModal.find('[name="bsvc_raw_value"]').val(rawValue).trigger('change');
1864 1864
 		$bsvcModal.find('.bs-vc-close').trigger('click');
@@ -2222,8 +2222,8 @@  discard block
 block discarded – undo
2222 2222
 				$classes = [];
2223 2223
 
2224 2224
 				<?php
2225
-				if($aui_bs5){
2226
-					?>
2225
+                if($aui_bs5){
2226
+                    ?>
2227 2227
 				$aui_bs5 = true;
2228 2228
 				$p_ml = 'ms-';
2229 2229
 				$p_mr = 'me-';
@@ -2231,8 +2231,8 @@  discard block
 block discarded – undo
2231 2231
 				$p_pl = 'ps-';
2232 2232
 				$p_pr = 'pe-';
2233 2233
 					<?php
2234
-				}else{
2235
-						?>
2234
+                }else{
2235
+                        ?>
2236 2236
 				$aui_bs5 = false;
2237 2237
 				$p_ml = 'ml-';
2238 2238
 				$p_mr = 'mr-';
@@ -2240,8 +2240,8 @@  discard block
 block discarded – undo
2240 2240
 				$p_pl = 'pl-';
2241 2241
 				$p_pr = 'pr-';
2242 2242
 					<?php
2243
-				}
2244
-				?>
2243
+                }
2244
+                ?>
2245 2245
 
2246 2246
 				// margins
2247 2247
 				if ( $args['mt'] !== undefined && $args['mt'] !== '' ) { $classes.push( "mt-" + $args['mt'] );  $mt = $args['mt']; }else{$mt = null;}
@@ -2425,12 +2425,12 @@  discard block
 block discarded – undo
2425 2425
 			<?php
2426 2426
 
2427 2427
 
2428
-			}
2428
+            }
2429 2429
 
2430
-			if(method_exists($this,'block_global_js')){
2431
-					echo $this->block_global_js();
2432
-			}
2433
-			?>
2430
+            if(method_exists($this,'block_global_js')){
2431
+                    echo $this->block_global_js();
2432
+            }
2433
+            ?>
2434 2434
 
2435 2435
 jQuery(function() {
2436 2436
 
@@ -2483,13 +2483,13 @@  discard block
 block discarded – undo
2483 2483
 						icon: <?php echo $this->get_block_icon( $this->options['block-icon'] );?>,//'<?php echo isset( $this->options['block-icon'] ) ? esc_attr( $this->options['block-icon'] ) : 'shield-alt';?>', // Block icon from Dashicons → https://developer.wordpress.org/resource/dashicons/.
2484 2484
 						supports: {
2485 2485
 							<?php
2486
-							if(!isset($this->options['block-supports']['renaming'])){
2487
-								$this->options['block-supports']['renaming'] = false;
2488
-							}
2489
-							if ( isset( $this->options['block-supports'] ) ) {
2490
-								echo $this->array_to_attributes( $this->options['block-supports'] );
2491
-							}
2492
-							?>
2486
+                            if(!isset($this->options['block-supports']['renaming'])){
2487
+                                $this->options['block-supports']['renaming'] = false;
2488
+                            }
2489
+                            if ( isset( $this->options['block-supports'] ) ) {
2490
+                                echo $this->array_to_attributes( $this->options['block-supports'] );
2491
+                            }
2492
+                            ?>
2493 2493
 						},
2494 2494
 						__experimentalLabel( attributes, { context } ) {
2495 2495
 							var visibility_html = attributes && attributes.visibility_conditions ? ' &#128065;' : '';
@@ -2499,174 +2499,174 @@  discard block
 block discarded – undo
2499 2499
 						},
2500 2500
 						category: '<?php echo isset( $this->options['block-category'] ) ? esc_attr( $this->options['block-category'] ) : 'common';?>', // Block category — Group blocks together based on common traits E.g. common, formatting, layout widgets, embed.
2501 2501
 						<?php if ( isset( $this->options['block-keywords'] ) ) {
2502
-						echo "keywords : " . $this->options['block-keywords'] . ",";
2503
-						}
2504
-
2505
-
2506
-						// block hover preview.
2507
-						$example_args = array();
2508
-						if(!empty($this->arguments)){
2509
-							foreach($this->arguments as $key => $a_args){
2510
-								if(isset($a_args['example'])){
2511
-									$example_args[$key] = $a_args['example'];
2512
-								}
2513
-							}
2514
-						}
2515
-						$viewport_width = isset($this->options['example']['viewportWidth']) ? 'viewportWidth: '.absint($this->options['example']['viewportWidth']) : '';
2516
-						$example_inner_blocks = !empty($this->options['example']['innerBlocks']) && is_array($this->options['example']['innerBlocks']) ? 'innerBlocks: ' . wp_json_encode($this->options['example']['innerBlocks']) : '';
2517
-						if( isset( $this->options['example'] ) && $this->options['example'] === false ){
2518
-							// no preview if set to false
2519
-						}elseif( !empty( $example_args ) ){
2520
-							echo "example : {attributes:{".$this->array_to_attributes( $example_args )."},$viewport_width},";
2521
-						}elseif( !empty( $this->options['example'] ) ){
2522
-							unset($this->options['example']['viewportWidth']);
2523
-							unset($this->options['example']['innerBlocks']);
2524
-							$example_atts = $this->array_to_attributes( $this->options['example'] );
2525
-							$example_parts = array();
2526
-							if($example_atts){
2527
-								$example_parts[] = rtrim($example_atts,",");
2528
-							}
2529
-							if($viewport_width){
2530
-								$example_parts[] = $viewport_width;
2531
-							}
2532
-							if($example_inner_blocks){
2533
-								$example_parts[] = $example_inner_blocks;
2534
-							}
2535
-							if(!empty($example_parts)){
2536
-								echo "example : {".implode(',', $example_parts)."},";
2537
-							}
2538
-						}else{
2539
-							echo 'example : {viewportWidth: 500},';
2540
-						}
2541
-
2542
-
2543
-
2544
-						// limit to parent
2545
-						if( !empty( $this->options['parent'] ) ){
2546
-							echo "parent : " . wp_json_encode( $this->options['parent'] ) . ",";
2547
-						}
2548
-
2549
-						// limit allowed blocks
2550
-						if( !empty( $this->options['allowed-blocks'] ) ){
2551
-							echo "allowedBlocks : " . wp_json_encode( $this->options['allowed-blocks'] ) . ",";
2552
-						}
2553
-
2554
-						// maybe set no_wrap
2555
-						$no_wrap = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
2556
-						if ( isset( $this->arguments['no_wrap'] ) && $this->arguments['no_wrap'] ) {
2557
-							$no_wrap = true;
2558
-						}
2559
-						if ( $no_wrap ) {
2560
-							$this->options['block-wrap'] = '';
2561
-						}
2562
-
2563
-						// maybe load the drag/drop functions.
2564
-						$img_drag_drop = false;
2565
-
2566
-						$show_alignment = false;
2567
-						// align feature
2568
-						/*echo "supports: {";
2502
+                        echo "keywords : " . $this->options['block-keywords'] . ",";
2503
+                        }
2504
+
2505
+
2506
+                        // block hover preview.
2507
+                        $example_args = array();
2508
+                        if(!empty($this->arguments)){
2509
+                            foreach($this->arguments as $key => $a_args){
2510
+                                if(isset($a_args['example'])){
2511
+                                    $example_args[$key] = $a_args['example'];
2512
+                                }
2513
+                            }
2514
+                        }
2515
+                        $viewport_width = isset($this->options['example']['viewportWidth']) ? 'viewportWidth: '.absint($this->options['example']['viewportWidth']) : '';
2516
+                        $example_inner_blocks = !empty($this->options['example']['innerBlocks']) && is_array($this->options['example']['innerBlocks']) ? 'innerBlocks: ' . wp_json_encode($this->options['example']['innerBlocks']) : '';
2517
+                        if( isset( $this->options['example'] ) && $this->options['example'] === false ){
2518
+                            // no preview if set to false
2519
+                        }elseif( !empty( $example_args ) ){
2520
+                            echo "example : {attributes:{".$this->array_to_attributes( $example_args )."},$viewport_width},";
2521
+                        }elseif( !empty( $this->options['example'] ) ){
2522
+                            unset($this->options['example']['viewportWidth']);
2523
+                            unset($this->options['example']['innerBlocks']);
2524
+                            $example_atts = $this->array_to_attributes( $this->options['example'] );
2525
+                            $example_parts = array();
2526
+                            if($example_atts){
2527
+                                $example_parts[] = rtrim($example_atts,",");
2528
+                            }
2529
+                            if($viewport_width){
2530
+                                $example_parts[] = $viewport_width;
2531
+                            }
2532
+                            if($example_inner_blocks){
2533
+                                $example_parts[] = $example_inner_blocks;
2534
+                            }
2535
+                            if(!empty($example_parts)){
2536
+                                echo "example : {".implode(',', $example_parts)."},";
2537
+                            }
2538
+                        }else{
2539
+                            echo 'example : {viewportWidth: 500},';
2540
+                        }
2541
+
2542
+
2543
+
2544
+                        // limit to parent
2545
+                        if( !empty( $this->options['parent'] ) ){
2546
+                            echo "parent : " . wp_json_encode( $this->options['parent'] ) . ",";
2547
+                        }
2548
+
2549
+                        // limit allowed blocks
2550
+                        if( !empty( $this->options['allowed-blocks'] ) ){
2551
+                            echo "allowedBlocks : " . wp_json_encode( $this->options['allowed-blocks'] ) . ",";
2552
+                        }
2553
+
2554
+                        // maybe set no_wrap
2555
+                        $no_wrap = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
2556
+                        if ( isset( $this->arguments['no_wrap'] ) && $this->arguments['no_wrap'] ) {
2557
+                            $no_wrap = true;
2558
+                        }
2559
+                        if ( $no_wrap ) {
2560
+                            $this->options['block-wrap'] = '';
2561
+                        }
2562
+
2563
+                        // maybe load the drag/drop functions.
2564
+                        $img_drag_drop = false;
2565
+
2566
+                        $show_alignment = false;
2567
+                        // align feature
2568
+                        /*echo "supports: {";
2569 2569
 						echo "	align: true,";
2570 2570
 						echo "  html: false";
2571 2571
 						echo "},";*/
2572 2572
 
2573 2573
 
2574
-							echo "attributes : {";
2575
-
2576
-							if ( $show_advanced ) {
2577
-								echo "show_advanced: {";
2578
-								echo "	type: 'boolean',";
2579
-								echo "  default: false,";
2580
-								echo "},";
2581
-							}
2582
-
2583
-							// block wrap element
2584
-							if ( ! empty( $this->options['block-wrap'] ) ) { //@todo we should validate this?
2585
-								echo "block_wrap: {";
2586
-								echo "	type: 'string',";
2587
-								echo "  default: '" . esc_attr( $this->options['block-wrap'] ) . "',";
2588
-								echo "},";
2589
-							}
2590
-
2591
-
2592
-							if ( ! empty( $this->arguments ) ) {
2593
-
2594
-								foreach ( $this->arguments as $key => $args ) {
2595
-
2596
-									if( $args['type'] == 'image' ||  $args['type'] == 'images' ){
2597
-										$img_drag_drop = true;
2598
-									}
2599
-
2600
-									// set if we should show alignment
2601
-									if ( $key == 'alignment' ) {
2602
-										$show_alignment = true;
2603
-									}
2604
-
2605
-									$extra = '';
2606
-
2607
-									if ( $args['type'] == 'notice' ||  $args['type'] == 'tab' ) {
2608
-										continue;
2609
-									}
2610
-									elseif ( $args['type'] == 'checkbox' ) {
2611
-										$type    = 'boolean';
2612
-										$default = isset( $args['default'] ) && $args['default'] ? 'true' : 'false';
2613
-									} elseif ( $args['type'] == 'number' ) {
2614
-										$type    = 'number';
2615
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2616
-									} elseif ( $args['type'] == 'select' && ! empty( $args['multiple'] ) ) {
2617
-										$type = 'array';
2618
-										if ( isset( $args['default'] ) && is_array( $args['default'] ) ) {
2619
-											$default = ! empty( $args['default'] ) ? "['" . implode( "','", $args['default'] ) . "']" : "[]";
2620
-										} else {
2621
-											$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2622
-										}
2623
-									} elseif ( $args['type'] == 'tagselect' ) {
2624
-										$type    = 'array';
2625
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2626
-									} elseif ( $args['type'] == 'multiselect' ) {
2627
-										$type    = 'array';
2628
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2629
-									} elseif ( $args['type'] == 'image_xy' ) {
2630
-										$type    = 'object';
2631
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2632
-									} elseif ( $args['type'] == 'image' ) {
2633
-										$type    = 'string';
2634
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2635
-
2636
-										// add a field for ID
2637
-	//                                    echo $key . "_id : {";
2638
-	//                                    echo "type : 'number',";
2639
-	//                                    echo "},";
2640
-	//                                    echo $key . "_xy : {";
2641
-	//                                    echo "type : 'object',";
2642
-	//                                    echo "},";
2643
-
2644
-									} else {
2645
-										$type    = !empty($args['hidden_type']) ? esc_attr($args['hidden_type']) : 'string';
2646
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2647
-
2648
-									}
2649
-									echo $key . " : {";
2650
-									echo "type : '$type',";
2651
-									echo "default : $default,";
2652
-									echo "},";
2653
-								}
2654
-							}
2655
-
2656
-							echo "content : {type : 'string',default: 'Please select the attributes in the block settings'},";
2657
-							echo "sd_shortcode : {type : 'string',default: ''},";
2658
-
2659
-							if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
2660
-								echo "sd_shortcode_close : {type : 'string',default: ''},";
2661
-							}
2662
-
2663
-							echo "className: { type: 'string', default: '' },";
2664
-
2665
-							echo "},";
2666
-
2667
-
2668
-
2669
-						?>
2574
+                            echo "attributes : {";
2575
+
2576
+                            if ( $show_advanced ) {
2577
+                                echo "show_advanced: {";
2578
+                                echo "	type: 'boolean',";
2579
+                                echo "  default: false,";
2580
+                                echo "},";
2581
+                            }
2582
+
2583
+                            // block wrap element
2584
+                            if ( ! empty( $this->options['block-wrap'] ) ) { //@todo we should validate this?
2585
+                                echo "block_wrap: {";
2586
+                                echo "	type: 'string',";
2587
+                                echo "  default: '" . esc_attr( $this->options['block-wrap'] ) . "',";
2588
+                                echo "},";
2589
+                            }
2590
+
2591
+
2592
+                            if ( ! empty( $this->arguments ) ) {
2593
+
2594
+                                foreach ( $this->arguments as $key => $args ) {
2595
+
2596
+                                    if( $args['type'] == 'image' ||  $args['type'] == 'images' ){
2597
+                                        $img_drag_drop = true;
2598
+                                    }
2599
+
2600
+                                    // set if we should show alignment
2601
+                                    if ( $key == 'alignment' ) {
2602
+                                        $show_alignment = true;
2603
+                                    }
2604
+
2605
+                                    $extra = '';
2606
+
2607
+                                    if ( $args['type'] == 'notice' ||  $args['type'] == 'tab' ) {
2608
+                                        continue;
2609
+                                    }
2610
+                                    elseif ( $args['type'] == 'checkbox' ) {
2611
+                                        $type    = 'boolean';
2612
+                                        $default = isset( $args['default'] ) && $args['default'] ? 'true' : 'false';
2613
+                                    } elseif ( $args['type'] == 'number' ) {
2614
+                                        $type    = 'number';
2615
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2616
+                                    } elseif ( $args['type'] == 'select' && ! empty( $args['multiple'] ) ) {
2617
+                                        $type = 'array';
2618
+                                        if ( isset( $args['default'] ) && is_array( $args['default'] ) ) {
2619
+                                            $default = ! empty( $args['default'] ) ? "['" . implode( "','", $args['default'] ) . "']" : "[]";
2620
+                                        } else {
2621
+                                            $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2622
+                                        }
2623
+                                    } elseif ( $args['type'] == 'tagselect' ) {
2624
+                                        $type    = 'array';
2625
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2626
+                                    } elseif ( $args['type'] == 'multiselect' ) {
2627
+                                        $type    = 'array';
2628
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2629
+                                    } elseif ( $args['type'] == 'image_xy' ) {
2630
+                                        $type    = 'object';
2631
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2632
+                                    } elseif ( $args['type'] == 'image' ) {
2633
+                                        $type    = 'string';
2634
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2635
+
2636
+                                        // add a field for ID
2637
+    //                                    echo $key . "_id : {";
2638
+    //                                    echo "type : 'number',";
2639
+    //                                    echo "},";
2640
+    //                                    echo $key . "_xy : {";
2641
+    //                                    echo "type : 'object',";
2642
+    //                                    echo "},";
2643
+
2644
+                                    } else {
2645
+                                        $type    = !empty($args['hidden_type']) ? esc_attr($args['hidden_type']) : 'string';
2646
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2647
+
2648
+                                    }
2649
+                                    echo $key . " : {";
2650
+                                    echo "type : '$type',";
2651
+                                    echo "default : $default,";
2652
+                                    echo "},";
2653
+                                }
2654
+                            }
2655
+
2656
+                            echo "content : {type : 'string',default: 'Please select the attributes in the block settings'},";
2657
+                            echo "sd_shortcode : {type : 'string',default: ''},";
2658
+
2659
+                            if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
2660
+                                echo "sd_shortcode_close : {type : 'string',default: ''},";
2661
+                            }
2662
+
2663
+                            echo "className: { type: 'string', default: '' },";
2664
+
2665
+                            echo "},";
2666
+
2667
+
2668
+
2669
+                        ?>
2670 2670
 
2671 2671
 						// The "edit" property must be a valid function.
2672 2672
 						edit: function (props) {
@@ -2740,10 +2740,10 @@  discard block
 block discarded – undo
2740 2740
 							}
2741 2741
 
2742 2742
 							<?php
2743
-							if(!empty($this->options['block-edit-raw'])) {
2744
-								echo $this->options['block-edit-raw']; // strings have to be in single quotes, may cause issues
2745
-							}else{
2746
-							?>
2743
+                            if(!empty($this->options['block-edit-raw'])) {
2744
+                                echo $this->options['block-edit-raw']; // strings have to be in single quotes, may cause issues
2745
+                            }else{
2746
+                            ?>
2747 2747
 
2748 2748
 function hasSelectedInnerBlock(props) {
2749 2749
 	const select = wp.data.select('core/editor');
@@ -2765,9 +2765,9 @@  discard block
 block discarded – undo
2765 2765
 
2766 2766
 	var $value = '';
2767 2767
 	<?php
2768
-	// if we have a post_type and a category then link them
2769
-	if( isset($this->arguments['post_type']) && isset($this->arguments['category']) && !empty($this->arguments['category']['post_type_linked']) ){
2770
-	?>
2768
+    // if we have a post_type and a category then link them
2769
+    if( isset($this->arguments['post_type']) && isset($this->arguments['category']) && !empty($this->arguments['category']['post_type_linked']) ){
2770
+    ?>
2771 2771
 	if(typeof(prev_attributes[props.clientId]) != 'undefined'){
2772 2772
 		$pt = props.attributes.post_type;
2773 2773
 		if(post_type_rest_slugs.length){
@@ -2780,11 +2780,11 @@  discard block
 block discarded – undo
2780 2780
 			term_query_type = $pt;
2781 2781
 		}
2782 2782
 <?php
2783
-	$cat_path = '';
2784
-	if ( ! empty( $this->arguments['post_type']['onchange_rest']['path'] ) ) {
2785
-		$cat_path = esc_js( strip_tags( $this->arguments['post_type']['onchange_rest']['path'] ) );
2786
-		$cat_path = str_replace( array( '&quot;', '&#039;' ), array( '"', "'" ), $cat_path );
2787
-	}
2783
+    $cat_path = '';
2784
+    if ( ! empty( $this->arguments['post_type']['onchange_rest']['path'] ) ) {
2785
+        $cat_path = esc_js( strip_tags( $this->arguments['post_type']['onchange_rest']['path'] ) );
2786
+        $cat_path = str_replace( array( '&quot;', '&#039;' ), array( '"', "'" ), $cat_path );
2787
+    }
2788 2788
 ?>
2789 2789
 		/* taxonomies */
2790 2790
 		if($value && 'post_type' in prev_attributes[props.clientId] && 'category' in prev_attributes[props.clientId] && run){
@@ -2876,7 +2876,7 @@  discard block
 block discarded – undo
2876 2876
 <?php
2877 2877
 $current_screen = function_exists('get_current_screen') ? get_current_screen() : '';
2878 2878
 if(!empty($current_screen->base) && $current_screen->base==='widgets'){
2879
-	echo 'const { deviceType } = "";';
2879
+    echo 'const { deviceType } = "";';
2880 2880
 }else{
2881 2881
 ?>
2882 2882
 /** Get device type const. */
@@ -2911,8 +2911,8 @@  discard block
 block discarded – undo
2911 2911
 										'attributes': props.attributes,
2912 2912
 										'block_parent_name': parentBlocks.length ? parentBlocks[parentBlocks.length - 1].name : '',
2913 2913
 										'post_id': <?php global $post; if ( isset( $post->ID ) ) {
2914
-										echo $post->ID;
2915
-									}else{echo '0';}?>,
2914
+                                        echo $post->ID;
2915
+                                    }else{echo '0';}?>,
2916 2916
 										'_ajax_nonce': '<?php echo wp_create_nonce( 'super_duper_output_shortcode' );?>'
2917 2917
 									};
2918 2918
 
@@ -2926,20 +2926,20 @@  discard block
 block discarded – undo
2926 2926
 										}
2927 2927
 
2928 2928
 										 <?php
2929
-										if(!empty($this->options['nested-block'])){
2930
-											?>
2929
+                                        if(!empty($this->options['nested-block'])){
2930
+                                            ?>
2931 2931
 											// props.setAttributes({content: env});
2932 2932
 										is_fetching = false;
2933 2933
 										prev_attributes[props.clientId] = props.attributes;
2934 2934
 											 <?php
2935
-										}else{
2936
-										?>
2935
+                                        }else{
2936
+                                        ?>
2937 2937
 										props.setAttributes({content: env});
2938 2938
 										is_fetching = false;
2939 2939
 										prev_attributes[props.clientId] = props.attributes;
2940 2940
 										<?php
2941
-										}
2942
-										?>
2941
+                                        }
2942
+                                        ?>
2943 2943
 
2944 2944
 
2945 2945
 										// if AUI is active call the js init function
@@ -2958,31 +2958,31 @@  discard block
 block discarded – undo
2958 2958
 							}
2959 2959
 
2960 2960
 							<?php
2961
-							if(!empty($this->options['block-edit-js'])) {
2962
-								echo  $this->options['block-edit-js'] ; // strings have to be in single quotes, may cause issues
2963
-							}
2961
+                            if(!empty($this->options['block-edit-js'])) {
2962
+                                echo  $this->options['block-edit-js'] ; // strings have to be in single quotes, may cause issues
2963
+                            }
2964 2964
 
2965 2965
 
2966 2966
 
2967 2967
 
2968
-							if(empty($this->options['block-save-return'])){
2969
-							?>
2968
+                            if(empty($this->options['block-save-return'])){
2969
+                            ?>
2970 2970
 								///////////////////////////////////////////////////////////////////////
2971 2971
 
2972 2972
 									 // build the shortcode.
2973 2973
 								shortcode = "[<?php echo $this->options['base_id'];?>";
2974 2974
 								<?php
2975 2975
 
2976
-								if(! empty( $this->arguments )){
2976
+                                if(! empty( $this->arguments )){
2977 2977
 
2978
-								foreach($this->arguments as $key => $args){
2979
-								   // if($args['type']=='tabs'){continue;}
2978
+                                foreach($this->arguments as $key => $args){
2979
+                                    // if($args['type']=='tabs'){continue;}
2980 2980
 
2981
-								   // don't add metadata arguments
2982
-								   if (substr($key, 0, 9 ) === 'metadata_') {
2983
-									   continue;
2984
-								   }
2985
-								?>
2981
+                                    // don't add metadata arguments
2982
+                                    if (substr($key, 0, 9 ) === 'metadata_') {
2983
+                                        continue;
2984
+                                    }
2985
+                                ?>
2986 2986
 								if (props.attributes.hasOwnProperty("<?php echo esc_attr( $key );?>")) {
2987 2987
 									if ('<?php echo esc_attr( $key );?>' == 'html') {
2988 2988
 									} else if ('<?php echo esc_attr( $args['type'] );?>' == 'image_xy') {
@@ -2993,10 +2993,10 @@  discard block
 block discarded – undo
2993 2993
 									}
2994 2994
 								}
2995 2995
 								<?php
2996
-								}
2997
-								}
2996
+                                }
2997
+                                }
2998 2998
 
2999
-								?>
2999
+                                ?>
3000 3000
 								shortcode += "]";
3001 3001
 
3002 3002
 								if(shortcode){
@@ -3004,17 +3004,17 @@  discard block
 block discarded – undo
3004 3004
 									props.setAttributes({sd_shortcode: shortcode});
3005 3005
 
3006 3006
 									<?php
3007
-									if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
3008
-										echo "props.setAttributes({sd_shortcode_close: '[/".esc_attr( $this->options['base_id'] )."]'});";
3009
-									}
3010
-									?>
3007
+                                    if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
3008
+                                        echo "props.setAttributes({sd_shortcode_close: '[/".esc_attr( $this->options['base_id'] )."]'});";
3009
+                                    }
3010
+                                    ?>
3011 3011
 								}
3012 3012
 
3013 3013
 
3014 3014
 							///////////////////////////////////////////////////////////////////////
3015 3015
 							<?php
3016
-							} // end nested block check
3017
-							?>
3016
+                            } // end nested block check
3017
+                            ?>
3018 3018
 
3019 3019
 							return [
3020 3020
 
@@ -3038,10 +3038,10 @@  discard block
 block discarded – undo
3038 3038
 
3039 3039
 									<?php
3040 3040
 
3041
-									if(! empty( $this->arguments )){
3041
+                                    if(! empty( $this->arguments )){
3042 3042
 
3043
-									if ( $show_advanced ) {
3044
-									?>
3043
+                                    if ( $show_advanced ) {
3044
+                                    ?>
3045 3045
 									el('div', {
3046 3046
 											style: {'padding-left': '16px','padding-right': '16px'}
3047 3047
 										},
@@ -3058,119 +3058,119 @@  discard block
 block discarded – undo
3058 3058
 									)
3059 3059
 									,
3060 3060
 									<?php
3061
-									}
3062
-
3063
-									$arguments = $this->group_arguments( $this->arguments );
3064
-									$block_group_tabs = ! empty( $this->options['block_group_tabs'] ) ? $this->group_block_tabs( $this->options['block_group_tabs'], $arguments ) : array();
3065
-
3066
-									// Do we have sections?
3067
-									$has_sections = $arguments == $this->arguments ? false : true;
3068
-
3069
-									if($has_sections){
3070
-									$panel_count = 0;
3071
-									$open_tab = '';
3072
-
3073
-									$open_tab_groups = array();
3074
-									$used_tabs = array();
3075
-
3076
-									foreach ( $arguments as $key => $args ) {
3077
-										$close_tab = false;
3078
-										$close_tabs = false;
3079
-
3080
-										 if ( ! empty( $block_group_tabs ) ) {
3081
-											foreach ( $block_group_tabs as $tab_name => $tab_args ) {
3082
-												if ( in_array( $key, $tab_args['groups'] ) ) {
3083
-													$open_tab_groups[] = $key;
3084
-
3085
-													if ( $open_tab != $tab_name ) {
3086
-														$tab_args['tab']['tabs_open'] = $open_tab == '' ? true : false;
3087
-														$tab_args['tab']['open'] = true;
3088
-
3089
-														$this->block_tab_start( '', $tab_args );
3090
-														$open_tab = $tab_name;
3091
-														$used_tabs[] = $tab_name;
3092
-													}
3093
-
3094
-													if ( $open_tab_groups == $tab_args['groups'] ) {
3095
-														$close_tab = true;
3096
-														$open_tab_groups = array();
3097
-
3098
-														if ( $used_tabs == array_keys( $block_group_tabs ) ) {
3099
-															$close_tabs = true;
3100
-														}
3101
-													}
3102
-												}
3103
-											}
3104
-										}
3105
-										?>
3061
+                                    }
3062
+
3063
+                                    $arguments = $this->group_arguments( $this->arguments );
3064
+                                    $block_group_tabs = ! empty( $this->options['block_group_tabs'] ) ? $this->group_block_tabs( $this->options['block_group_tabs'], $arguments ) : array();
3065
+
3066
+                                    // Do we have sections?
3067
+                                    $has_sections = $arguments == $this->arguments ? false : true;
3068
+
3069
+                                    if($has_sections){
3070
+                                    $panel_count = 0;
3071
+                                    $open_tab = '';
3072
+
3073
+                                    $open_tab_groups = array();
3074
+                                    $used_tabs = array();
3075
+
3076
+                                    foreach ( $arguments as $key => $args ) {
3077
+                                        $close_tab = false;
3078
+                                        $close_tabs = false;
3079
+
3080
+                                            if ( ! empty( $block_group_tabs ) ) {
3081
+                                            foreach ( $block_group_tabs as $tab_name => $tab_args ) {
3082
+                                                if ( in_array( $key, $tab_args['groups'] ) ) {
3083
+                                                    $open_tab_groups[] = $key;
3084
+
3085
+                                                    if ( $open_tab != $tab_name ) {
3086
+                                                        $tab_args['tab']['tabs_open'] = $open_tab == '' ? true : false;
3087
+                                                        $tab_args['tab']['open'] = true;
3088
+
3089
+                                                        $this->block_tab_start( '', $tab_args );
3090
+                                                        $open_tab = $tab_name;
3091
+                                                        $used_tabs[] = $tab_name;
3092
+                                                    }
3093
+
3094
+                                                    if ( $open_tab_groups == $tab_args['groups'] ) {
3095
+                                                        $close_tab = true;
3096
+                                                        $open_tab_groups = array();
3097
+
3098
+                                                        if ( $used_tabs == array_keys( $block_group_tabs ) ) {
3099
+                                                            $close_tabs = true;
3100
+                                                        }
3101
+                                                    }
3102
+                                                }
3103
+                                            }
3104
+                                        }
3105
+                                        ?>
3106 3106
 										el(wp.components.PanelBody, {
3107 3107
 												title: '<?php esc_attr_e( $key ); ?>',
3108 3108
 												initialOpen: <?php if ( $panel_count ) {
3109
-												echo "false";
3110
-											} else {
3111
-												echo "true";
3112
-											}?>
3109
+                                                echo "false";
3110
+                                            } else {
3111
+                                                echo "true";
3112
+                                            }?>
3113 3113
 											},
3114 3114
 											<?php
3115
-											foreach ( $args as $k => $a ) {
3116
-												$this->block_tab_start( $k, $a );
3117
-												$this->block_row_start( $k, $a );
3118
-												$this->build_block_arguments( $k, $a );
3119
-												$this->block_row_end( $k, $a );
3120
-												$this->block_tab_end( $k, $a );
3121
-											}
3122
-											?>
3115
+                                            foreach ( $args as $k => $a ) {
3116
+                                                $this->block_tab_start( $k, $a );
3117
+                                                $this->block_row_start( $k, $a );
3118
+                                                $this->build_block_arguments( $k, $a );
3119
+                                                $this->block_row_end( $k, $a );
3120
+                                                $this->block_tab_end( $k, $a );
3121
+                                            }
3122
+                                            ?>
3123 3123
 										),
3124 3124
 										<?php
3125
-										$panel_count ++;
3125
+                                        $panel_count ++;
3126 3126
 
3127
-										if($close_tab || $close_tabs){
3128
-											$tab_args = array(
3129
-												'tab'	=> array(
3130
-													'tabs_close' => $close_tabs,
3131
-												'close' => true,
3132
-												)
3127
+                                        if($close_tab || $close_tabs){
3128
+                                            $tab_args = array(
3129
+                                                'tab'	=> array(
3130
+                                                    'tabs_close' => $close_tabs,
3131
+                                                'close' => true,
3132
+                                                )
3133 3133
 
3134
-											);
3135
-											$this->block_tab_end( '', $tab_args );
3134
+                                            );
3135
+                                            $this->block_tab_end( '', $tab_args );
3136 3136
 //											echo '###close'; print_r($tab_args);
3137
-											$panel_count = 0;
3138
-										}
3137
+                                            $panel_count = 0;
3138
+                                        }
3139 3139
 //
3140 3140
 
3141
-									}
3142
-									}else {
3143
-									?>
3141
+                                    }
3142
+                                    }else {
3143
+                                    ?>
3144 3144
 									el(wp.components.PanelBody, {
3145 3145
 											title: '<?php esc_attr_e( "Settings", 'ayecode-connect' ); ?>',
3146 3146
 											initialOpen: true
3147 3147
 										},
3148 3148
 										<?php
3149
-										foreach ( $this->arguments as $key => $args ) {
3150
-											$this->block_row_start( $key, $args );
3151
-											$this->build_block_arguments( $key, $args );
3152
-											$this->block_row_end( $key, $args );
3153
-										}
3154
-										?>
3149
+                                        foreach ( $this->arguments as $key => $args ) {
3150
+                                            $this->block_row_start( $key, $args );
3151
+                                            $this->build_block_arguments( $key, $args );
3152
+                                            $this->block_row_end( $key, $args );
3153
+                                        }
3154
+                                        ?>
3155 3155
 									),
3156 3156
 									<?php
3157
-									}
3157
+                                    }
3158 3158
 
3159
-									}
3160
-									?>
3159
+                                    }
3160
+                                    ?>
3161 3161
 
3162 3162
 								),
3163 3163
 
3164 3164
 								<?php
3165
-								// If the user sets block-output array then build it
3166
-								if ( ! empty( $this->options['block-output'] ) ) {
3167
-								$this->block_element( $this->options['block-output'] );
3168
-							}elseif(!empty($this->options['block-edit-return'])){
3169
-								   echo $this->options['block-edit-return'];
3170
-							}else{
3171
-								// if no block-output is set then we try and get the shortcode html output via ajax.
3172
-								$block_edit_wrap_tag = !empty($this->options['block_edit_wrap_tag']) ? esc_attr($this->options['block_edit_wrap_tag']) : 'div';
3173
-								?>
3165
+                                // If the user sets block-output array then build it
3166
+                                if ( ! empty( $this->options['block-output'] ) ) {
3167
+                                $this->block_element( $this->options['block-output'] );
3168
+                            }elseif(!empty($this->options['block-edit-return'])){
3169
+                                    echo $this->options['block-edit-return'];
3170
+                            }else{
3171
+                                // if no block-output is set then we try and get the shortcode html output via ajax.
3172
+                                $block_edit_wrap_tag = !empty($this->options['block_edit_wrap_tag']) ? esc_attr($this->options['block_edit_wrap_tag']) : 'div';
3173
+                                ?>
3174 3174
 								el('<?php echo esc_attr($block_edit_wrap_tag); ?>', wp.blockEditor.useBlockProps({
3175 3175
 									dangerouslySetInnerHTML: {__html: onChangeContent()},
3176 3176
 									className: props.className,
@@ -3178,13 +3178,13 @@  discard block
 block discarded – undo
3178 3178
 									style: {'minHeight': '30px'}
3179 3179
 								}))
3180 3180
 								<?php
3181
-								}
3182
-								?>
3181
+                                }
3182
+                                ?>
3183 3183
 							]; // end return
3184 3184
 
3185 3185
 							<?php
3186
-							} // end block-edit-raw else
3187
-							?>
3186
+                            } // end block-edit-raw else
3187
+                            ?>
3188 3188
 						},
3189 3189
 
3190 3190
 						// The "save" property must be specified and must be a valid function.
@@ -3198,16 +3198,16 @@  discard block
 block discarded – undo
3198 3198
 							$html = '';
3199 3199
 							<?php
3200 3200
 
3201
-							if(! empty( $this->arguments )){
3201
+                            if(! empty( $this->arguments )){
3202 3202
 
3203
-							foreach($this->arguments as $key => $args){
3204
-							   // if($args['type']=='tabs'){continue;}
3203
+                            foreach($this->arguments as $key => $args){
3204
+                                // if($args['type']=='tabs'){continue;}
3205 3205
 
3206
-							   // don't add metadata arguments
3207
-							   if (substr($key, 0, 9 ) === 'metadata_') {
3208
-								   continue;
3209
-							   }
3210
-							?>
3206
+                                // don't add metadata arguments
3207
+                                if (substr($key, 0, 9 ) === 'metadata_') {
3208
+                                    continue;
3209
+                                }
3210
+                            ?>
3211 3211
 							if (attr.hasOwnProperty("<?php echo esc_attr( $key );?>")) {
3212 3212
 								if ('<?php echo esc_attr( $key );?>' == 'html') {
3213 3213
 									$html = attr.<?php echo esc_attr( $key );?>;
@@ -3218,10 +3218,10 @@  discard block
 block discarded – undo
3218 3218
 								}
3219 3219
 							}
3220 3220
 							<?php
3221
-							}
3222
-							}
3221
+                            }
3222
+                            }
3223 3223
 
3224
-							?>
3224
+                            ?>
3225 3225
 							content += "]";
3226 3226
 							 content = '';
3227 3227
 
@@ -3231,7 +3231,7 @@  discard block
 block discarded – undo
3231 3231
 //                                $html = 'el( InnerBlocks.Content )';
3232 3232
 //                                <?php
3233 3233
 //                            }
3234
-							?>
3234
+                            ?>
3235 3235
 							// if has html element
3236 3236
 							if ($html) {
3237 3237
 								//content += $html + "[/<?php echo $this->options['base_id'];?>]";
@@ -3264,12 +3264,12 @@  discard block
 block discarded – undo
3264 3264
 //                                <x?php
3265 3265
 //							}else
3266 3266
 
3267
-							if(!empty($this->options['block-output'])){
3267
+                            if(!empty($this->options['block-output'])){
3268 3268
 //                               echo "return";
3269 3269
 //                               $this->block_element( $this->options['block-output'], true );
3270 3270
 //                               echo ";";
3271 3271
 
3272
-							   ?>
3272
+                                ?>
3273 3273
 							  return el(
3274 3274
 								   '',
3275 3275
 								   {},
@@ -3279,10 +3279,10 @@  discard block
 block discarded – undo
3279 3279
 							   );
3280 3280
 								<?php
3281 3281
 
3282
-							}elseif(!empty($this->options['block-save-return'])){
3283
-								   echo 'return ' . $this->options['block-save-return'];
3284
-							}elseif(!empty($this->options['nested-block'])){
3285
-								?>
3282
+                            }elseif(!empty($this->options['block-save-return'])){
3283
+                                    echo 'return ' . $this->options['block-save-return'];
3284
+                            }elseif(!empty($this->options['nested-block'])){
3285
+                                ?>
3286 3286
 							  return el(
3287 3287
 								   '',
3288 3288
 								   {},
@@ -3291,22 +3291,22 @@  discard block
 block discarded – undo
3291 3291
 								 //  el('', {dangerouslySetInnerHTML: {__html: "[/<?php echo $this->options['base_id'];?>]"}})
3292 3292
 							   );
3293 3293
 								<?php
3294
-							}elseif(!empty( $this->options['block-save-return'] ) ){
3295
-								echo "return ". $this->options['block-edit-return'].";";
3296
-							}elseif(isset( $this->options['block-wrap'] ) && $this->options['block-wrap'] == ''){
3297
-							?>
3294
+                            }elseif(!empty( $this->options['block-save-return'] ) ){
3295
+                                echo "return ". $this->options['block-edit-return'].";";
3296
+                            }elseif(isset( $this->options['block-wrap'] ) && $this->options['block-wrap'] == ''){
3297
+                            ?>
3298 3298
 							return content;
3299 3299
 							<?php
3300
-							}else{
3301
-							?>
3300
+                            }else{
3301
+                            ?>
3302 3302
 							var block_wrap = 'div';
3303 3303
 							if (attr.hasOwnProperty("block_wrap")) {
3304 3304
 								block_wrap = attr.block_wrap;
3305 3305
 							}
3306 3306
 							return el(block_wrap, wp.blockEditor.useBlockProps.save( {dangerouslySetInnerHTML: {__html: content}, className: align} ));
3307 3307
 							<?php
3308
-							}
3309
-							?>
3308
+                            }
3309
+                            ?>
3310 3310
 
3311 3311
 
3312 3312
 						}
@@ -3320,43 +3320,43 @@  discard block
 block discarded – undo
3320 3320
 				});
3321 3321
 			</script>
3322 3322
 			<?php
3323
-			$output = ob_get_clean();
3323
+            $output = ob_get_clean();
3324 3324
 
3325
-			/*
3325
+            /*
3326 3326
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
3327 3327
 			 */
3328 3328
 
3329
-			return str_replace( array(
3330
-				'<script>',
3331
-				'</script>'
3332
-			), '', $output );
3333
-		}
3329
+            return str_replace( array(
3330
+                '<script>',
3331
+                '</script>'
3332
+            ), '', $output );
3333
+        }
3334 3334
 
3335 3335
 
3336 3336
 
3337
-		public function block_row_start($key, $args){
3337
+        public function block_row_start($key, $args){
3338 3338
 
3339
-			// check for row
3340
-			if(!empty($args['row'])){
3339
+            // check for row
3340
+            if(!empty($args['row'])){
3341 3341
 
3342
-				if(!empty($args['row']['open'])){
3342
+                if(!empty($args['row']['open'])){
3343 3343
 
3344
-				// element require
3345
-				$element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3346
-				$device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3347
-				$device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3348
-				$device_type_icon = '';
3349
-				if($device_type=='Desktop'){
3350
-					$device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3351
-				}elseif($device_type=='Tablet'){
3352
-					$device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3353
-				}elseif($device_type=='Mobile'){
3354
-					$device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3355
-				}
3356
-				echo $element_require;
3357
-				echo $device_type_require;
3344
+                // element require
3345
+                $element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3346
+                $device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3347
+                $device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3348
+                $device_type_icon = '';
3349
+                if($device_type=='Desktop'){
3350
+                    $device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3351
+                }elseif($device_type=='Tablet'){
3352
+                    $device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3353
+                }elseif($device_type=='Mobile'){
3354
+                    $device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3355
+                }
3356
+                echo $element_require;
3357
+                echo $device_type_require;
3358 3358
 
3359
-					if(false){?><script><?php }?>
3359
+                    if(false){?><script><?php }?>
3360 3360
 						el('div', {
3361 3361
 								className: 'bsui components-base-control',
3362 3362
 							},
@@ -3369,8 +3369,8 @@  discard block
 block discarded – undo
3369 3369
 								<?php if($device_type_icon){ ?>
3370 3370
 									deviceType == '<?php echo $device_type;?>' && el('span',{dangerouslySetInnerHTML: {__html: '<?php echo $device_type_icon; ?>'},title: deviceType + ": Set preview mode to change",style: {right:"0",position:"absolute",color:"var(--wp-admin-theme-color)"}})
3371 3371
 								<?php
3372
-								}
3373
-								?>
3372
+                                }
3373
+                                ?>
3374 3374
 
3375 3375
 
3376 3376
 							),
@@ -3394,51 +3394,51 @@  discard block
 block discarded – undo
3394 3394
 									},
3395 3395
 
3396 3396
 					<?php
3397
-					if(false){?></script><?php }
3398
-				}elseif(!empty($args['row']['close'])){
3399
-					if(false){?><script><?php }?>
3397
+                    if(false){?></script><?php }
3398
+                }elseif(!empty($args['row']['close'])){
3399
+                    if(false){?><script><?php }?>
3400 3400
 						el(
3401 3401
 							'div',
3402 3402
 							{
3403 3403
 								className: 'col pl-0 ps-0',
3404 3404
 							},
3405 3405
 					<?php
3406
-					if(false){?></script><?php }
3407
-				}else{
3408
-					if(false){?><script><?php }?>
3406
+                    if(false){?></script><?php }
3407
+                }else{
3408
+                    if(false){?><script><?php }?>
3409 3409
 						el(
3410 3410
 							'div',
3411 3411
 							{
3412 3412
 								className: 'col pl-0 ps-0 pr-2 pe-2',
3413 3413
 							},
3414 3414
 					<?php
3415
-					if(false){?></script><?php }
3416
-				}
3415
+                    if(false){?></script><?php }
3416
+                }
3417 3417
 
3418
-			}
3418
+            }
3419 3419
 
3420
-		}
3420
+        }
3421 3421
 
3422
-		public function block_row_end($key, $args){
3422
+        public function block_row_end($key, $args){
3423 3423
 
3424
-			if(!empty($args['row'])){
3425
-				// maybe close
3426
-				if(!empty($args['row']['close'])){
3427
-					echo "))";
3428
-				}
3424
+            if(!empty($args['row'])){
3425
+                // maybe close
3426
+                if(!empty($args['row']['close'])){
3427
+                    echo "))";
3428
+                }
3429 3429
 
3430
-				echo "),";
3431
-			}
3432
-		}
3430
+                echo "),";
3431
+            }
3432
+        }
3433 3433
 
3434
-		public function block_tab_start($key, $args){
3434
+        public function block_tab_start($key, $args){
3435 3435
 
3436
-			// check for row
3437
-			if(!empty($args['tab'])){
3436
+            // check for row
3437
+            if(!empty($args['tab'])){
3438 3438
 
3439
-				if(!empty($args['tab']['tabs_open'])){
3439
+                if(!empty($args['tab']['tabs_open'])){
3440 3440
 
3441
-					if(false){?><script><?php }?>
3441
+                    if(false){?><script><?php }?>
3442 3442
 
3443 3443
 el('div',{className: 'bsui'},
3444 3444
 
@@ -3451,12 +3451,12 @@  discard block
 block discarded – undo
3451 3451
 										tabs: [
3452 3452
 
3453 3453
 					<?php
3454
-					if(false){?></script><?php }
3455
-				}
3454
+                    if(false){?></script><?php }
3455
+                }
3456 3456
 
3457
-				if(!empty($args['tab']['open'])){
3457
+                if(!empty($args['tab']['open'])){
3458 3458
 
3459
-					if(false){?><script><?php }?>
3459
+                    if(false){?><script><?php }?>
3460 3460
 							{
3461 3461
 												name: '<?php echo addslashes( esc_attr( $args['tab']['key']) ); ?>',
3462 3462
 												title: el('div', {dangerouslySetInnerHTML: {__html: '<?php echo addslashes( esc_attr( $args['tab']['title']) ); ?>'}}),
@@ -3465,93 +3465,93 @@  discard block
 block discarded – undo
3465 3465
 									className: 'components-base-control__help mb-0',
3466 3466
 									dangerouslySetInnerHTML: {__html:'<?php echo addslashes( $args['tab']['desc'] ); ?>'}
3467 3467
 								}),<?php }
3468
-					if(false){?></script><?php }
3469
-				}
3468
+                    if(false){?></script><?php }
3469
+                }
3470 3470
 
3471
-			}
3471
+            }
3472 3472
 
3473
-		}
3473
+        }
3474 3474
 
3475
-		public function block_tab_end($key, $args){
3475
+        public function block_tab_end($key, $args){
3476 3476
 
3477
-			if(!empty($args['tab'])){
3478
-				// maybe close
3479
-				if(!empty($args['tab']['close'])){
3480
-					echo ")}, /* tab close */";
3481
-				}
3477
+            if(!empty($args['tab'])){
3478
+                // maybe close
3479
+                if(!empty($args['tab']['close'])){
3480
+                    echo ")}, /* tab close */";
3481
+                }
3482 3482
 
3483
-				if(!empty($args['tab']['tabs_close'])){
3484
-					if(false){?><script><?php }?>
3483
+                if(!empty($args['tab']['tabs_close'])){
3484
+                    if(false){?><script><?php }?>
3485 3485
 						]}, ( tab ) => {
3486 3486
 								return tab.content;
3487 3487
 							}
3488 3488
 						)), /* tabs close */
3489 3489
 					<?php if(false){ ?></script><?php }
3490
-				}
3491
-			}
3492
-		}
3493
-
3494
-		public function build_block_arguments( $key, $args ) {
3495
-			$custom_attributes = ! empty( $args['custom_attributes'] ) ? $this->array_to_attributes( $args['custom_attributes'] ) : '';
3496
-			$options           = '';
3497
-			$extra             = '';
3498
-			$require           = '';
3499
-			$inside_elements   = '';
3500
-			$after_elements	   = '';
3501
-
3502
-			// `content` is a protected and special argument
3503
-			if ( $key == 'content' ) {
3504
-				return;
3505
-			}
3506
-
3507
-			$device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3508
-			$device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3509
-			$device_type_icon = '';
3510
-			if($device_type=='Desktop'){
3511
-				$device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3512
-			}elseif($device_type=='Tablet'){
3513
-				$device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3514
-			}elseif($device_type=='Mobile'){
3515
-				$device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3516
-			}
3517
-
3518
-			// icon
3519
-			$icon = '';
3520
-			if( !empty( $args['icon'] ) ){
3521
-				$icon .= "el('div', {";
3522
-									$icon .= "dangerouslySetInnerHTML: {__html: '".self::get_widget_icon( esc_attr($args['icon']))."'},";
3523
-									$icon .= "className: 'text-center',";
3524
-									$icon .= "title: '".addslashes( $args['title'] )."',";
3525
-								$icon .= "}),";
3526
-
3527
-				// blank title as its added to the icon.
3528
-				$args['title'] = '';
3529
-			}
3530
-
3531
-			// require advanced
3532
-			$require_advanced = ! empty( $args['advanced'] ) ? "props.attributes.show_advanced && " : "";
3533
-
3534
-			// element require
3535
-			$element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3536
-
3537
-
3538
-			$onchange  = "props.setAttributes({ $key: $key } )";
3539
-			$onchangecomplete  = "";
3540
-			$value     = "props.attributes.$key";
3541
-			$text_type = array( 'text', 'password', 'number', 'email', 'tel', 'url', 'colorx','range' );
3542
-			if ( in_array( $args['type'], $text_type ) ) {
3543
-				$type = 'TextControl';
3544
-				// Save numbers as numbers and not strings
3545
-				if ( $args['type'] == 'number' ) {
3546
-					$onchange = "props.setAttributes({ $key: $key ? Number($key) : '' } )";
3547
-				}
3548
-
3549
-				if (substr($key, 0, 9 ) === 'metadata_') {
3550
-					$real_key = str_replace('metadata_','', $key );
3551
-					$onchange = "props.setAttributes({ metadata: { $real_key: $key } } )";
3552
-					$value     = "props.attributes.metadata && props.attributes.metadata.$real_key ? props.attributes.metadata.$real_key : ''";
3553
-				}
3554
-			}
3490
+                }
3491
+            }
3492
+        }
3493
+
3494
+        public function build_block_arguments( $key, $args ) {
3495
+            $custom_attributes = ! empty( $args['custom_attributes'] ) ? $this->array_to_attributes( $args['custom_attributes'] ) : '';
3496
+            $options           = '';
3497
+            $extra             = '';
3498
+            $require           = '';
3499
+            $inside_elements   = '';
3500
+            $after_elements	   = '';
3501
+
3502
+            // `content` is a protected and special argument
3503
+            if ( $key == 'content' ) {
3504
+                return;
3505
+            }
3506
+
3507
+            $device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3508
+            $device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3509
+            $device_type_icon = '';
3510
+            if($device_type=='Desktop'){
3511
+                $device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3512
+            }elseif($device_type=='Tablet'){
3513
+                $device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3514
+            }elseif($device_type=='Mobile'){
3515
+                $device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3516
+            }
3517
+
3518
+            // icon
3519
+            $icon = '';
3520
+            if( !empty( $args['icon'] ) ){
3521
+                $icon .= "el('div', {";
3522
+                                    $icon .= "dangerouslySetInnerHTML: {__html: '".self::get_widget_icon( esc_attr($args['icon']))."'},";
3523
+                                    $icon .= "className: 'text-center',";
3524
+                                    $icon .= "title: '".addslashes( $args['title'] )."',";
3525
+                                $icon .= "}),";
3526
+
3527
+                // blank title as its added to the icon.
3528
+                $args['title'] = '';
3529
+            }
3530
+
3531
+            // require advanced
3532
+            $require_advanced = ! empty( $args['advanced'] ) ? "props.attributes.show_advanced && " : "";
3533
+
3534
+            // element require
3535
+            $element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3536
+
3537
+
3538
+            $onchange  = "props.setAttributes({ $key: $key } )";
3539
+            $onchangecomplete  = "";
3540
+            $value     = "props.attributes.$key";
3541
+            $text_type = array( 'text', 'password', 'number', 'email', 'tel', 'url', 'colorx','range' );
3542
+            if ( in_array( $args['type'], $text_type ) ) {
3543
+                $type = 'TextControl';
3544
+                // Save numbers as numbers and not strings
3545
+                if ( $args['type'] == 'number' ) {
3546
+                    $onchange = "props.setAttributes({ $key: $key ? Number($key) : '' } )";
3547
+                }
3548
+
3549
+                if (substr($key, 0, 9 ) === 'metadata_') {
3550
+                    $real_key = str_replace('metadata_','', $key );
3551
+                    $onchange = "props.setAttributes({ metadata: { $real_key: $key } } )";
3552
+                    $value     = "props.attributes.metadata && props.attributes.metadata.$real_key ? props.attributes.metadata.$real_key : ''";
3553
+                }
3554
+            }
3555 3555
 //			else if ( $args['type'] == 'popup' ) {
3556 3556
 //				$type = 'TextControl';
3557 3557
 //				$args['type'] == 'text';
@@ -3569,21 +3569,21 @@  discard block
 block discarded – undo
3569 3569
 //
3570 3570
 //				$value     = "props.attributes.$key ? props.attributes.$key : ''";
3571 3571
 //			}
3572
-			else if ( $args['type'] == 'styleid' ) {
3573
-				$type = 'TextControl';
3574
-				$args['type'] == 'text';
3575
-				// Save numbers as numbers and not strings
3576
-				$value     = "props.attributes.$key ? props.attributes.$key : ''";
3577
-			}else if ( $args['type'] == 'notice' ) {
3578
-
3579
-				$notice_message = !empty($args['desc']) ? addslashes($args['desc']) : '';
3580
-				$notice_status = !empty($args['status']) ? esc_attr($args['status']) : 'info';
3581
-
3582
-				$notice = "el('div',{className:'bsui'},el(wp.components.Notice, {status: '$notice_status',isDismissible: false,className: 'm-0 pr-0 pe-0 mb-3'},el('div',{dangerouslySetInnerHTML: {__html: '$notice_message'}}))),";
3583
-				echo $notice_message ? $element_require . $notice : '';
3584
-				return;
3585
-			}
3586
-			/*
3572
+            else if ( $args['type'] == 'styleid' ) {
3573
+                $type = 'TextControl';
3574
+                $args['type'] == 'text';
3575
+                // Save numbers as numbers and not strings
3576
+                $value     = "props.attributes.$key ? props.attributes.$key : ''";
3577
+            }else if ( $args['type'] == 'notice' ) {
3578
+
3579
+                $notice_message = !empty($args['desc']) ? addslashes($args['desc']) : '';
3580
+                $notice_status = !empty($args['status']) ? esc_attr($args['status']) : 'info';
3581
+
3582
+                $notice = "el('div',{className:'bsui'},el(wp.components.Notice, {status: '$notice_status',isDismissible: false,className: 'm-0 pr-0 pe-0 mb-3'},el('div',{dangerouslySetInnerHTML: {__html: '$notice_message'}}))),";
3583
+                echo $notice_message ? $element_require . $notice : '';
3584
+                return;
3585
+            }
3586
+            /*
3587 3587
 			 * https://www.wptricks.com/question/set-current-tab-on-a-gutenberg-tabpanel-component-from-outside-that-component/ es5 layout
3588 3588
 						elseif($args['type']=='tabs'){
3589 3589
 							?>
@@ -3636,22 +3636,22 @@  discard block
 block discarded – undo
3636 3636
 							return;
3637 3637
 						}
3638 3638
 */
3639
-			elseif ( $args['type'] == 'color' ) {
3640
-				$type = 'ColorPicker';
3641
-				$onchange = "";
3642
-				$extra = "color: $value,";
3643
-				if(!empty($args['disable_alpha'])){
3644
-					$extra .= "disableAlpha: true,";
3645
-				}
3646
-				$onchangecomplete = "onChangeComplete: function($key) {
3639
+            elseif ( $args['type'] == 'color' ) {
3640
+                $type = 'ColorPicker';
3641
+                $onchange = "";
3642
+                $extra = "color: $value,";
3643
+                if(!empty($args['disable_alpha'])){
3644
+                    $extra .= "disableAlpha: true,";
3645
+                }
3646
+                $onchangecomplete = "onChangeComplete: function($key) {
3647 3647
 				value =  $key.rgb.a && $key.rgb.a < 1 ? \"rgba(\"+$key.rgb.r+\",\"+$key.rgb.g+\",\"+$key.rgb.b+\",\"+$key.rgb.a+\")\" : $key.hex;
3648 3648
 						props.setAttributes({
3649 3649
 							$key: value
3650 3650
 						});
3651 3651
 					},";
3652
-			}elseif ( $args['type'] == 'gradient' ) {
3653
-				$type = 'GradientPicker';
3654
-				$extra .= "gradients: [{
3652
+            }elseif ( $args['type'] == 'gradient' ) {
3653
+                $type = 'GradientPicker';
3654
+                $extra .= "gradients: [{
3655 3655
 			name: 'Vivid cyan blue to vivid purple',
3656 3656
 			gradient:
3657 3657
 				'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
@@ -3688,10 +3688,10 @@  discard block
 block discarded – undo
3688 3688
 			slug: 'cool-to-warm-spectrum',
3689 3689
 		}],";
3690 3690
 
3691
-			}elseif ( $args['type'] == 'image' ) {
3691
+            }elseif ( $args['type'] == 'image' ) {
3692 3692
 //                print_r($args);
3693 3693
 
3694
-				$img_preview = isset($args['focalpoint']) && !$args['focalpoint'] ? " props.attributes.$key && el('img', { src: props.attributes.$key,style: {maxWidth:'100%',background: '#ccc'}})," : " ( props.attributes.$key ||  props.attributes.{$key}_use_featured ) && el(wp.components.FocalPointPicker,{
3694
+                $img_preview = isset($args['focalpoint']) && !$args['focalpoint'] ? " props.attributes.$key && el('img', { src: props.attributes.$key,style: {maxWidth:'100%',background: '#ccc'}})," : " ( props.attributes.$key ||  props.attributes.{$key}_use_featured ) && el(wp.components.FocalPointPicker,{
3695 3695
 							url:  props.attributes.{$key}_use_featured === true ? 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxzdmcgYmFzZVByb2ZpbGU9InRpbnkiIGhlaWdodD0iNDAwIiB2ZXJzaW9uPSIxLjIiIHdpZHRoPSI0MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6ZXY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLWV2ZW50cyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzIC8+PHJlY3QgZmlsbD0iI2QzZDNkMyIgaGVpZ2h0PSI0MDAiIHdpZHRoPSI0MDAiIHg9IjAiIHk9IjAiIC8+PGxpbmUgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxMCIgeDE9IjAiIHgyPSI0MDAiIHkxPSIwIiB5Mj0iNDAwIiAvPjxsaW5lIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMTAiIHgxPSIwIiB4Mj0iNDAwIiB5MT0iNDAwIiB5Mj0iMCIgLz48cmVjdCBmaWxsPSIjZDNkM2QzIiBoZWlnaHQ9IjUwIiB3aWR0aD0iMjE4LjAiIHg9IjkxLjAiIHk9IjE3NS4wIiAvPjx0ZXh0IGZpbGw9IndoaXRlIiBmb250LXNpemU9IjMwIiBmb250LXdlaWdodD0iYm9sZCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iMjAwLjAiIHk9IjIwNy41Ij5QTEFDRUhPTERFUjwvdGV4dD48L3N2Zz4='  : props.attributes.$key,
3696 3696
 							value: props.attributes.{$key}_xy.x !== undefined && props.attributes.{$key}_xy.x >= 0 ? props.attributes.{$key}_xy  : {x: 0.5,y: 0.5,},
3697 3697
 //                            value: props.attributes.{$key}_xy,
@@ -3712,16 +3712,16 @@  discard block
 block discarded – undo
3712 3712
 						}), ";
3713 3713
 
3714 3714
 
3715
-				$value = '""';
3716
-				$type = 'MediaUpload';
3717
-				$extra .= "onSelect: function(media){
3715
+                $value = '""';
3716
+                $type = 'MediaUpload';
3717
+                $extra .= "onSelect: function(media){
3718 3718
 					  return props.setAttributes({
3719 3719
 						  $key: media.url,
3720 3720
 						  {$key}_id: media.id
3721 3721
 						});
3722 3722
 					  },";
3723
-				   $extra .= "type: 'image',";
3724
-				   $extra .= "render: function (obj) {
3723
+                    $extra .= "type: 'image',";
3724
+                    $extra .= "render: function (obj) {
3725 3725
 						return el( 'div',{},
3726 3726
 						( !props.attributes.$key && !props.attributes.{$key}_use_featured ) && el( wp.components.Button, {
3727 3727
 						  className: 'components-button components-circular-option-picker__clear is-primary is-smallx',
@@ -3747,11 +3747,11 @@  discard block
 block discarded – undo
3747 3747
 
3748 3748
 
3749 3749
 					  }";
3750
-				$onchange = "";
3750
+                $onchange = "";
3751 3751
 
3752
-				//$inside_elements = ",el('div',{},'file upload')";
3753
-			} else if ( $args['type'] == 'images' ) {
3754
-				$img_preview = "props.attributes.$key && (function() {
3752
+                //$inside_elements = ",el('div',{},'file upload')";
3753
+            } else if ( $args['type'] == 'images' ) {
3754
+                $img_preview = "props.attributes.$key && (function() {
3755 3755
 	let uploads = JSON.parse('['+props.attributes.$key+']');
3756 3756
 	let images = [];
3757 3757
 	uploads.map((upload, index) => (
@@ -3778,9 +3778,9 @@  discard block
 block discarded – undo
3778 3778
 })(),";
3779 3779
 
3780 3780
 
3781
-				$value = '""';
3782
-				$type = 'MediaUpload';
3783
-				$extra .= "onSelect: function(media){
3781
+                $value = '""';
3782
+                $type = 'MediaUpload';
3783
+                $extra .= "onSelect: function(media){
3784 3784
 	let slim_images = props.attributes.$key ? JSON.parse('['+props.attributes.$key+']') : [];
3785 3785
 	if(media.length){
3786 3786
 		for (var i=0; i < media.length; i++) {
@@ -3793,9 +3793,9 @@  discard block
 block discarded – undo
3793 3793
 	}
3794 3794
 	return props.setAttributes({ $key: slimImagesV});
3795 3795
 },";
3796
-				$extra .= "type: 'image',";
3797
-				$extra .= "multiple: true,";
3798
-				$extra .= "render: function (obj) {
3796
+                $extra .= "type: 'image',";
3797
+                $extra .= "multiple: true,";
3798
+                $extra .= "render: function (obj) {
3799 3799
 	/* Init the sort */
3800 3800
 	enableDragSort('sd-sortable');
3801 3801
 	return el( 'div',{},
@@ -3822,40 +3822,40 @@  discard block
 block discarded – undo
3822 3822
 		)
3823 3823
 	)
3824 3824
 }";
3825
-				$onchange = "";
3826
-
3827
-				//$inside_elements = ",el('div',{},'file upload')";
3828
-			}
3829
-			elseif ( $args['type'] == 'checkbox' ) {
3830
-				$type = 'CheckboxControl';
3831
-				$extra .= "checked: props.attributes.$key,";
3832
-				$onchange = "props.setAttributes({ $key: ! props.attributes.$key } )";
3833
-			} elseif ( $args['type'] == 'textarea' ) {
3834
-				$type = 'TextareaControl';
3835
-
3836
-			} elseif ( $args['type'] == 'select' || $args['type'] == 'multiselect' ) {
3837
-				$type = 'SelectControl';
3838
-
3839
-				if($args['name'] == 'category' && !empty($args['post_type_linked'])){
3840
-					$options .= "options: taxonomies_".str_replace("-","_", $this->id).",";
3841
-				}elseif($args['name'] == 'sort_by' && !empty($args['post_type_linked'])){
3842
-					$options .= "options: sort_by_".str_replace("-","_", $this->id).",";
3843
-				}else {
3844
-
3845
-					if ( ! empty( $args['options'] ) ) {
3846
-						$options .= "options: [";
3847
-						foreach ( $args['options'] as $option_val => $option_label ) {
3848
-							$options .= "{ value: '" . esc_attr( $option_val ) . "', label: '" . esc_js( addslashes( $option_label ) ) . "' },";
3849
-						}
3850
-						$options .= "],";
3851
-					}
3852
-				}
3853
-				if ( isset( $args['multiple'] ) && $args['multiple'] ) { //@todo multiselect does not work at the moment: https://github.com/WordPress/gutenberg/issues/5550
3854
-					$extra .= ' multiple:true,style:{height:"auto",paddingRight:"8px","overflow-y":"auto"}, ';
3855
-				}
3856
-
3857
-				if($args['type'] == 'multiselect' ||  ( isset( $args['multiple'] ) && $args['multiple'] ) ){
3858
-					$after_elements	 .= "props.attributes.$key && el( wp.components.Button, {
3825
+                $onchange = "";
3826
+
3827
+                //$inside_elements = ",el('div',{},'file upload')";
3828
+            }
3829
+            elseif ( $args['type'] == 'checkbox' ) {
3830
+                $type = 'CheckboxControl';
3831
+                $extra .= "checked: props.attributes.$key,";
3832
+                $onchange = "props.setAttributes({ $key: ! props.attributes.$key } )";
3833
+            } elseif ( $args['type'] == 'textarea' ) {
3834
+                $type = 'TextareaControl';
3835
+
3836
+            } elseif ( $args['type'] == 'select' || $args['type'] == 'multiselect' ) {
3837
+                $type = 'SelectControl';
3838
+
3839
+                if($args['name'] == 'category' && !empty($args['post_type_linked'])){
3840
+                    $options .= "options: taxonomies_".str_replace("-","_", $this->id).",";
3841
+                }elseif($args['name'] == 'sort_by' && !empty($args['post_type_linked'])){
3842
+                    $options .= "options: sort_by_".str_replace("-","_", $this->id).",";
3843
+                }else {
3844
+
3845
+                    if ( ! empty( $args['options'] ) ) {
3846
+                        $options .= "options: [";
3847
+                        foreach ( $args['options'] as $option_val => $option_label ) {
3848
+                            $options .= "{ value: '" . esc_attr( $option_val ) . "', label: '" . esc_js( addslashes( $option_label ) ) . "' },";
3849
+                        }
3850
+                        $options .= "],";
3851
+                    }
3852
+                }
3853
+                if ( isset( $args['multiple'] ) && $args['multiple'] ) { //@todo multiselect does not work at the moment: https://github.com/WordPress/gutenberg/issues/5550
3854
+                    $extra .= ' multiple:true,style:{height:"auto",paddingRight:"8px","overflow-y":"auto"}, ';
3855
+                }
3856
+
3857
+                if($args['type'] == 'multiselect' ||  ( isset( $args['multiple'] ) && $args['multiple'] ) ){
3858
+                    $after_elements	 .= "props.attributes.$key && el( wp.components.Button, {
3859 3859
 									  className: 'components-button components-circular-option-picker__clear is-secondary is-small',
3860 3860
 									  style: {margin:'-8px 0 8px 0',display: 'block'},
3861 3861
 									  onClick: function(){
@@ -3866,8 +3866,8 @@  discard block
 block discarded – undo
3866 3866
 									},
3867 3867
 									'Clear'
3868 3868
 							),";
3869
-				}
3870
-			} elseif ( $args['type'] == 'tagselect' ) {
3869
+                }
3870
+            } elseif ( $args['type'] == 'tagselect' ) {
3871 3871
 //				$type = 'FormTokenField';
3872 3872
 //
3873 3873
 //				if ( ! empty( $args['options'] ) ) {
@@ -3902,20 +3902,20 @@  discard block
 block discarded – undo
3902 3902
 //				$value     = "[]";
3903 3903
 //				$extra .= ' __experimentalExpandOnFocus: true,';
3904 3904
 
3905
-			} else if ( $args['type'] == 'alignment' ) {
3906
-				$type = 'AlignmentToolbar'; // @todo this does not seem to work but cant find a example
3907
-			} else if ( $args['type'] == 'margins' ) {
3908
-
3909
-			} else if ( $args['type'] == 'visibility_conditions' && ( function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() ) ) {
3910
-				$type = 'TextControl';
3911
-				$value = "(props.attributes.$key ? props.attributes.$key : '')";
3912
-				$args['type'] = 'text';
3913
-				$options .= 'disabled:true,';
3914
-				$bsvc_title = esc_attr( addslashes( $args['title'] ) );
3915
-				$bsvc_body = $this->block_visibility_fields( $args );
3916
-				// @TODO reset button
3917
-				$bsvc_footer = '<button type="button" class="btn btn-danger d-none">' . __( 'Reset', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-secondary bs-vc-close text-white" data-bs-dismiss="modal">' . __( 'Close', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-primary bs-vc-save">' . __( 'Save Rules', 'ayecode-connect' ) . '</button>';
3918
-				$after_elements .= "el('div', {className: 'components-base-control bs-vc-button-wrap'}, el(wp.components.Button, {
3905
+            } else if ( $args['type'] == 'alignment' ) {
3906
+                $type = 'AlignmentToolbar'; // @todo this does not seem to work but cant find a example
3907
+            } else if ( $args['type'] == 'margins' ) {
3908
+
3909
+            } else if ( $args['type'] == 'visibility_conditions' && ( function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() ) ) {
3910
+                $type = 'TextControl';
3911
+                $value = "(props.attributes.$key ? props.attributes.$key : '')";
3912
+                $args['type'] = 'text';
3913
+                $options .= 'disabled:true,';
3914
+                $bsvc_title = esc_attr( addslashes( $args['title'] ) );
3915
+                $bsvc_body = $this->block_visibility_fields( $args );
3916
+                // @TODO reset button
3917
+                $bsvc_footer = '<button type="button" class="btn btn-danger d-none">' . __( 'Reset', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-secondary bs-vc-close text-white" data-bs-dismiss="modal">' . __( 'Close', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-primary bs-vc-save">' . __( 'Save Rules', 'ayecode-connect' ) . '</button>';
3918
+                $after_elements .= "el('div', {className: 'components-base-control bs-vc-button-wrap'}, el(wp.components.Button, {
3919 3919
 						className: 'components-button components-circular-option-picker__clear is-primary is-smallx',
3920 3920
 						onClick: function() {
3921 3921
 							var sValue = props.attributes." . $key . ";
@@ -3941,39 +3941,39 @@  discard block
 block discarded – undo
3941 3941
 					},
3942 3942
 					'" . addslashes( ! empty( $args['button_title'] ) ? $args['button_title'] : $args['title'] ) . "'
3943 3943
 				) ),";
3944
-			} else {
3945
-				return;// if we have not implemented the control then don't break the JS.
3946
-			}
3947
-
3948
-			// color input does not show the labels so we add them
3949
-			if($args['type']=='color'){
3950
-				// add show only if advanced
3951
-				echo $require_advanced;
3952
-				// add setting require if defined
3953
-				echo $element_require;
3954
-				echo "el('div', {style: {'marginBottom': '8px'}}, '".addslashes( $args['title'] )."'),";
3955
-			}
3956
-
3957
-			// add show only if advanced
3958
-			echo $require_advanced;
3959
-			// add setting require if defined
3960
-			echo $element_require;
3961
-			echo $device_type_require;
3962
-
3963
-			// icon
3964
-			echo $icon;
3965
-			?>
3944
+            } else {
3945
+                return;// if we have not implemented the control then don't break the JS.
3946
+            }
3947
+
3948
+            // color input does not show the labels so we add them
3949
+            if($args['type']=='color'){
3950
+                // add show only if advanced
3951
+                echo $require_advanced;
3952
+                // add setting require if defined
3953
+                echo $element_require;
3954
+                echo "el('div', {style: {'marginBottom': '8px'}}, '".addslashes( $args['title'] )."'),";
3955
+            }
3956
+
3957
+            // add show only if advanced
3958
+            echo $require_advanced;
3959
+            // add setting require if defined
3960
+            echo $element_require;
3961
+            echo $device_type_require;
3962
+
3963
+            // icon
3964
+            echo $icon;
3965
+            ?>
3966 3966
 			el( <?php echo $args['type'] == 'image' || $args['type'] == 'images' ? $type  : "wp.components.".$type; ?>, {
3967 3967
 			label: <?php if ( empty( $args['title'] ) ) { echo "''"; } else if ( empty( $args['row'] ) && ! empty( $args['device_type'] ) ) { ?>el('label',{className:'components-base-control__label',style:{width:"100%"}},el('span',{dangerouslySetInnerHTML: {__html: '<?php echo addslashes( $args['title'] ) ?>'}}),<?php if ( $device_type_icon ) { ?>deviceType == '<?php echo $device_type;?>' && el('span',{dangerouslySetInnerHTML: {__html: '<?php echo $device_type_icon; ?>'},title: deviceType + ": Set preview mode to change",style: {right:"0",position:"absolute",color:"var(--wp-admin-theme-color)"}})<?php } ?>)<?php
3968
-			} else { ?>'<?php echo addslashes( trim( esc_html( $args['title'] ) ) ); ?>'<?php } ?>,
3968
+            } else { ?>'<?php echo addslashes( trim( esc_html( $args['title'] ) ) ); ?>'<?php } ?>,
3969 3969
 			help: <?php echo ( isset( $args['desc'] ) ? "el('span', {dangerouslySetInnerHTML: {__html: '" . trim( wp_kses_post( addslashes( $args['desc'] ) ) ) . "'}})" : "''" ); ?>,
3970 3970
 			value: <?php echo $value; ?>,
3971 3971
 			<?php if ( $type == 'TextControl' && $args['type'] != 'text' ) {
3972
-				echo "type: '" . addslashes( $args['type'] ) . "',";
3973
-			} ?>
3972
+                echo "type: '" . addslashes( $args['type'] ) . "',";
3973
+            } ?>
3974 3974
 			<?php if ( ! empty( $args['placeholder'] ) ) {
3975
-				echo "placeholder: '" . esc_js( addslashes( trim( esc_html( $args['placeholder'] ) ) ) ) . "',";
3976
-			} ?>
3975
+                echo "placeholder: '" . esc_js( addslashes( trim( esc_html( $args['placeholder'] ) ) ) ) . "',";
3976
+            } ?>
3977 3977
 			<?php echo $options; ?>
3978 3978
 			<?php echo $extra; ?>
3979 3979
 			<?php echo $custom_attributes; ?>
@@ -3985,1250 +3985,1250 @@  discard block
 block discarded – undo
3985 3985
 			<?php } ?>
3986 3986
 		} <?php echo $inside_elements; ?> ),
3987 3987
 			<?php
3988
-			echo $after_elements;
3989
-		}
3990
-
3991
-		/**
3992
-		 * Convert an array of attributes to block string.
3993
-		 *
3994
-		 * @param $custom_attributes
3995
-		 *
3996
-		 * @return string
3997
-		 *@todo there is prob a faster way to do this, also we could add some validation here.
3998
-		 *
3999
-		 */
4000
-		public function array_to_attributes( $custom_attributes, $html = false ) {
4001
-			$attributes = '';
4002
-			if ( ! empty( $custom_attributes ) ) {
4003
-
4004
-				foreach ( $custom_attributes as $key => $val ) {
4005
-					if(is_array($val)){
4006
-						$attributes .= $key.': {'.$this->array_to_attributes( $val, $html ).'},';
4007
-					}else{
4008
-						$attributes .= $html ?  " $key='$val' " : "'$key': '$val',";
4009
-					}
4010
-				}
4011
-
4012
-			}
4013
-
4014
-			return $attributes;
4015
-		}
4016
-
4017
-
4018
-
4019
-		/**
4020
-		 * A self looping function to create the output for JS block elements.
4021
-		 *
4022
-		 * This is what is output in the WP Editor visual view.
4023
-		 *
4024
-		 * @param $args
4025
-		 */
4026
-		public function block_element( $args, $save = false ) {
3988
+            echo $after_elements;
3989
+        }
3990
+
3991
+        /**
3992
+         * Convert an array of attributes to block string.
3993
+         *
3994
+         * @param $custom_attributes
3995
+         *
3996
+         * @return string
3997
+         *@todo there is prob a faster way to do this, also we could add some validation here.
3998
+         *
3999
+         */
4000
+        public function array_to_attributes( $custom_attributes, $html = false ) {
4001
+            $attributes = '';
4002
+            if ( ! empty( $custom_attributes ) ) {
4003
+
4004
+                foreach ( $custom_attributes as $key => $val ) {
4005
+                    if(is_array($val)){
4006
+                        $attributes .= $key.': {'.$this->array_to_attributes( $val, $html ).'},';
4007
+                    }else{
4008
+                        $attributes .= $html ?  " $key='$val' " : "'$key': '$val',";
4009
+                    }
4010
+                }
4011
+
4012
+            }
4013
+
4014
+            return $attributes;
4015
+        }
4016
+
4017
+
4018
+
4019
+        /**
4020
+         * A self looping function to create the output for JS block elements.
4021
+         *
4022
+         * This is what is output in the WP Editor visual view.
4023
+         *
4024
+         * @param $args
4025
+         */
4026
+        public function block_element( $args, $save = false ) {
4027 4027
 
4028 4028
 //            print_r($args);echo '###';exit;
4029 4029
 
4030
-			if ( ! empty( $args ) ) {
4031
-				foreach ( $args as $element => $new_args ) {
4030
+            if ( ! empty( $args ) ) {
4031
+                foreach ( $args as $element => $new_args ) {
4032 4032
 
4033
-					if ( is_array( $new_args ) ) { // its an element
4033
+                    if ( is_array( $new_args ) ) { // its an element
4034 4034
 
4035 4035
 
4036
-						if ( isset( $new_args['element'] ) ) {
4036
+                        if ( isset( $new_args['element'] ) ) {
4037 4037
 
4038
-							if ( isset( $new_args['element_require'] ) ) {
4039
-								echo str_replace( array(
4040
-										"'+",
4041
-										"+'"
4042
-									), '', $this->block_props_replace( $new_args['element_require'] ) ) . " &&  ";
4043
-								unset( $new_args['element_require'] );
4044
-							}
4038
+                            if ( isset( $new_args['element_require'] ) ) {
4039
+                                echo str_replace( array(
4040
+                                        "'+",
4041
+                                        "+'"
4042
+                                    ), '', $this->block_props_replace( $new_args['element_require'] ) ) . " &&  ";
4043
+                                unset( $new_args['element_require'] );
4044
+                            }
4045 4045
 
4046
-							if($new_args['element']=='InnerBlocks'){
4047
-								echo "\n el( InnerBlocks, {";
4048
-							}elseif($new_args['element']=='innerBlocksProps'){
4049
-								$element = isset($new_args['inner_element']) ? esc_attr($new_args['inner_element']) : 'div';
4050
-							  //  echo "\n el( 'section', wp.blockEditor.useInnerBlocksProps( blockProps, {";
4046
+                            if($new_args['element']=='InnerBlocks'){
4047
+                                echo "\n el( InnerBlocks, {";
4048
+                            }elseif($new_args['element']=='innerBlocksProps'){
4049
+                                $element = isset($new_args['inner_element']) ? esc_attr($new_args['inner_element']) : 'div';
4050
+                                //  echo "\n el( 'section', wp.blockEditor.useInnerBlocksProps( blockProps, {";
4051 4051
 //                                echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( ";
4052
-								echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( ";
4053
-								echo $save ? "wp.blockEditor.useBlockProps.save( {" : "wp.blockEditor.useBlockProps( {";
4054
-								echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4055
-
4056
-								echo "} ), {";
4057
-								echo !empty($new_args['innerBlocksProps']) && !$save ? $this->block_element( $new_args['innerBlocksProps'],$save ) : '';
4058
-							//    echo '###';
4059
-
4060
-							  //  echo '###';
4061
-							}elseif($new_args['element']=='BlocksProps'){
4062
-
4063
-								if ( isset($new_args['if_inner_element']) ) {
4064
-									$element = $new_args['if_inner_element'];
4065
-								}else {
4066
-									$element = isset($new_args['inner_element']) ? "'".esc_attr($new_args['inner_element'])."'" : "'div'";
4067
-								}
4068
-
4069
-								unset($new_args['inner_element']);
4070
-								echo $save ? "\n el( $element, wp.blockEditor.useBlockProps.save( {" : "\n el( $element, wp.blockEditor.useBlockProps( {";
4071
-								echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4072
-
4073
-
4074
-							   // echo "} ),";
4075
-
4076
-							}else{
4077
-								echo "\n el( '" . $new_args['element'] . "', {";
4078
-							}
4079
-
4080
-
4081
-							// get the attributes
4082
-							foreach ( $new_args as $new_key => $new_value ) {
4083
-
4084
-
4085
-								if ( $new_key == 'element' || $new_key == 'content'|| $new_key == 'if_content' || $new_key == 'element_require' || $new_key == 'element_repeat' || is_array( $new_value ) ) {
4086
-									// do nothing
4087
-								} else {
4088
-									echo $this->block_element( array( $new_key => $new_value ),$save );
4089
-								}
4090
-							}
4091
-
4092
-							echo $new_args['element']=='BlocksProps' ? '} ),' : "},";// end attributes
4093
-
4094
-							// get the content
4095
-							$first_item = 0;
4096
-							foreach ( $new_args as $new_key => $new_value ) {
4097
-								if ( $new_key === 'content' || $new_key === 'if_content' || is_array( $new_value ) ) {
4098
-
4099
-									if ( $new_key === 'content' ) {
4100
-										echo "'" . $this->block_props_replace( wp_slash( $new_value ) ) . "'";
4101
-									}else if ( $new_key === 'if_content' ) {
4102
-										echo  $this->block_props_replace(  $new_value  );
4103
-									}
4104
-
4105
-									if ( is_array( $new_value ) ) {
4106
-
4107
-										if ( isset( $new_value['element_require'] ) ) {
4108
-											echo str_replace( array(
4109
-													"'+",
4110
-													"+'"
4111
-												), '', $this->block_props_replace( $new_value['element_require'] ) ) . " &&  ";
4112
-											unset( $new_value['element_require'] );
4113
-										}
4114
-
4115
-										if ( isset( $new_value['element_repeat'] ) ) {
4116
-											$x = 1;
4117
-											while ( $x <= absint( $new_value['element_repeat'] ) ) {
4118
-												$this->block_element( array( '' => $new_value ),$save );
4119
-												$x ++;
4120
-											}
4121
-										} else {
4122
-											$this->block_element( array( '' => $new_value ),$save );
4123
-										}
4124
-									}
4125
-									$first_item ++;
4126
-								}
4127
-							}
4128
-
4129
-							if($new_args['element']=='innerBlocksProps' || $new_args['element']=='xBlocksProps'){
4130
-								echo "))";// end content
4131
-							}else{
4132
-								echo ")";// end content
4133
-							}
4134
-
4135
-
4136
-							echo ", \n";
4137
-
4138
-						}
4139
-					} else {
4140
-
4141
-						if ( substr( $element, 0, 3 ) === "if_" ) {
4142
-							$extra = '';
4143
-							if( strpos($new_args, '[%WrapClass%]') !== false ){
4144
-								$new_args = str_replace('[%WrapClass%]"','" + sd_build_aui_class(props.attributes)',$new_args);
4145
-								$new_args = str_replace('[%WrapClass%]','+ sd_build_aui_class(props.attributes)',$new_args);
4146
-							}
4147
-							echo str_replace( "if_", "", $element ) . ": " . $this->block_props_replace( $new_args, true ) . ",";
4148
-						} elseif ( $element == 'style' &&  strpos($new_args, '[%WrapStyle%]') !== false ) {
4149
-							$new_args = str_replace('[%WrapStyle%]','',$new_args);
4150
-							echo $element . ": {..." . $this->block_props_replace( $new_args ) . " , ...sd_build_aui_styles(props.attributes) },";
4052
+                                echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( ";
4053
+                                echo $save ? "wp.blockEditor.useBlockProps.save( {" : "wp.blockEditor.useBlockProps( {";
4054
+                                echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4055
+
4056
+                                echo "} ), {";
4057
+                                echo !empty($new_args['innerBlocksProps']) && !$save ? $this->block_element( $new_args['innerBlocksProps'],$save ) : '';
4058
+                            //    echo '###';
4059
+
4060
+                                //  echo '###';
4061
+                            }elseif($new_args['element']=='BlocksProps'){
4062
+
4063
+                                if ( isset($new_args['if_inner_element']) ) {
4064
+                                    $element = $new_args['if_inner_element'];
4065
+                                }else {
4066
+                                    $element = isset($new_args['inner_element']) ? "'".esc_attr($new_args['inner_element'])."'" : "'div'";
4067
+                                }
4068
+
4069
+                                unset($new_args['inner_element']);
4070
+                                echo $save ? "\n el( $element, wp.blockEditor.useBlockProps.save( {" : "\n el( $element, wp.blockEditor.useBlockProps( {";
4071
+                                echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4072
+
4073
+
4074
+                                // echo "} ),";
4075
+
4076
+                            }else{
4077
+                                echo "\n el( '" . $new_args['element'] . "', {";
4078
+                            }
4079
+
4080
+
4081
+                            // get the attributes
4082
+                            foreach ( $new_args as $new_key => $new_value ) {
4083
+
4084
+
4085
+                                if ( $new_key == 'element' || $new_key == 'content'|| $new_key == 'if_content' || $new_key == 'element_require' || $new_key == 'element_repeat' || is_array( $new_value ) ) {
4086
+                                    // do nothing
4087
+                                } else {
4088
+                                    echo $this->block_element( array( $new_key => $new_value ),$save );
4089
+                                }
4090
+                            }
4091
+
4092
+                            echo $new_args['element']=='BlocksProps' ? '} ),' : "},";// end attributes
4093
+
4094
+                            // get the content
4095
+                            $first_item = 0;
4096
+                            foreach ( $new_args as $new_key => $new_value ) {
4097
+                                if ( $new_key === 'content' || $new_key === 'if_content' || is_array( $new_value ) ) {
4098
+
4099
+                                    if ( $new_key === 'content' ) {
4100
+                                        echo "'" . $this->block_props_replace( wp_slash( $new_value ) ) . "'";
4101
+                                    }else if ( $new_key === 'if_content' ) {
4102
+                                        echo  $this->block_props_replace(  $new_value  );
4103
+                                    }
4104
+
4105
+                                    if ( is_array( $new_value ) ) {
4106
+
4107
+                                        if ( isset( $new_value['element_require'] ) ) {
4108
+                                            echo str_replace( array(
4109
+                                                    "'+",
4110
+                                                    "+'"
4111
+                                                ), '', $this->block_props_replace( $new_value['element_require'] ) ) . " &&  ";
4112
+                                            unset( $new_value['element_require'] );
4113
+                                        }
4114
+
4115
+                                        if ( isset( $new_value['element_repeat'] ) ) {
4116
+                                            $x = 1;
4117
+                                            while ( $x <= absint( $new_value['element_repeat'] ) ) {
4118
+                                                $this->block_element( array( '' => $new_value ),$save );
4119
+                                                $x ++;
4120
+                                            }
4121
+                                        } else {
4122
+                                            $this->block_element( array( '' => $new_value ),$save );
4123
+                                        }
4124
+                                    }
4125
+                                    $first_item ++;
4126
+                                }
4127
+                            }
4128
+
4129
+                            if($new_args['element']=='innerBlocksProps' || $new_args['element']=='xBlocksProps'){
4130
+                                echo "))";// end content
4131
+                            }else{
4132
+                                echo ")";// end content
4133
+                            }
4134
+
4135
+
4136
+                            echo ", \n";
4137
+
4138
+                        }
4139
+                    } else {
4140
+
4141
+                        if ( substr( $element, 0, 3 ) === "if_" ) {
4142
+                            $extra = '';
4143
+                            if( strpos($new_args, '[%WrapClass%]') !== false ){
4144
+                                $new_args = str_replace('[%WrapClass%]"','" + sd_build_aui_class(props.attributes)',$new_args);
4145
+                                $new_args = str_replace('[%WrapClass%]','+ sd_build_aui_class(props.attributes)',$new_args);
4146
+                            }
4147
+                            echo str_replace( "if_", "", $element ) . ": " . $this->block_props_replace( $new_args, true ) . ",";
4148
+                        } elseif ( $element == 'style' &&  strpos($new_args, '[%WrapStyle%]') !== false ) {
4149
+                            $new_args = str_replace('[%WrapStyle%]','',$new_args);
4150
+                            echo $element . ": {..." . $this->block_props_replace( $new_args ) . " , ...sd_build_aui_styles(props.attributes) },";
4151 4151
 //                            echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4152
-						} elseif ( $element == 'style' ) {
4153
-							echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4154
-						} elseif ( ( $element == 'class' || $element == 'className'  ) &&  strpos($new_args, '[%WrapClass%]') !== false ) {
4155
-							$new_args = str_replace('[%WrapClass%]','',$new_args);
4156
-							echo $element . ": '" . $this->block_props_replace( $new_args ) . "' + sd_build_aui_class(props.attributes),";
4157
-						} elseif ( $element == 'template' && $new_args ) {
4158
-							echo $element . ": $new_args,";
4159
-						} else {
4160
-							echo $element . ": '" . $this->block_props_replace( $new_args ) . "',";
4161
-						}
4162
-
4163
-					}
4164
-				}
4165
-			}
4166
-		}
4167
-
4168
-		/**
4169
-		 * Replace block attributes placeholders with the proper naming.
4170
-		 *
4171
-		 * @param $string
4172
-		 *
4173
-		 * @return mixed
4174
-		 */
4175
-		public function block_props_replace( $string, $no_wrap = false ) {
4176
-			if ( $no_wrap ) {
4177
-				$string = str_replace( array( "[%", "%]", "%:checked]" ), array( "props.attributes.", "", "" ), $string );
4178
-			} else {
4179
-				$string = str_replace( array( "![%", "[%", "%]", "%:checked]" ), array( "'+!props.attributes.", "'+props.attributes.", "+'", "+'" ), $string );
4180
-			}
4181
-
4182
-			return $string;
4183
-		}
4184
-
4185
-		/**
4186
-		 * Outputs the content of the widget
4187
-		 *
4188
-		 * @param array $args
4189
-		 * @param array $instance
4190
-		 */
4191
-		public function widget( $args, $instance ) {
4192
-			if ( ! is_array( $args ) ) {
4193
-				$args = array();
4194
-			}
4195
-
4196
-			// Get the filtered values
4197
-			$argument_values = $this->argument_values( $instance );
4198
-			$argument_values = $this->string_to_bool( $argument_values );
4199
-			$output          = $this->output( $argument_values, $args );
4200
-
4201
-			$no_wrap = false;
4202
-			if ( isset( $argument_values['no_wrap'] ) && $argument_values['no_wrap'] ) {
4203
-				$no_wrap = true;
4204
-			}
4205
-
4206
-			ob_start();
4207
-			if ( $output && ! $no_wrap ) {
4208
-
4209
-				$class_original = $this->options['widget_ops']['classname'];
4210
-				$class = $this->options['widget_ops']['classname']." sdel-".$this->get_instance_hash();
4211
-
4212
-				// Before widget
4213
-				$before_widget = ! empty( $args['before_widget'] ) ? $args['before_widget'] : '';
4214
-				$before_widget = $before_widget ? str_replace( $class_original, $class, $before_widget ) : $before_widget;
4215
-				$before_widget = apply_filters( 'wp_super_duper_before_widget', $before_widget, $args, $instance, $this );
4216
-				$before_widget = apply_filters( 'wp_super_duper_before_widget_' . $this->base_id, $before_widget, $args, $instance, $this );
4217
-
4218
-				// After widget
4219
-				$after_widget = ! empty( $args['after_widget'] ) ? $args['after_widget'] : '';
4220
-				$after_widget = apply_filters( 'wp_super_duper_after_widget', $after_widget, $args, $instance, $this );
4221
-				$after_widget = apply_filters( 'wp_super_duper_after_widget_' . $this->base_id, $after_widget, $args, $instance, $this );
4222
-
4223
-				echo $before_widget;
4224
-				// elementor strips the widget wrapping div so we check for and add it back if needed
4225
-				if ( $this->is_elementor_widget_output() ) {
4226
-					// Filter class & attrs for elementor widget output.
4227
-					$class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
4228
-					$class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
4229
-
4230
-					$attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
4231
-					$attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
4232
-
4233
-					echo "<span class='" . esc_attr( $class  ) . "' " . $attrs . ">";
4234
-				}
4235
-				echo $this->output_title( $args, $instance );
4236
-				echo $output;
4237
-				if ( $this->is_elementor_widget_output() ) {
4238
-					echo "</span>";
4239
-				}
4240
-				echo $after_widget;
4241
-			} elseif ( $this->is_preview() && $output == '' ) {// if preview show a placeholder if empty
4242
-				$output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
4243
-				echo $output;
4244
-			} elseif ( $output && $no_wrap ) {
4245
-				echo $output;
4246
-			}
4247
-			$output = ob_get_clean();
4248
-
4249
-			$output = apply_filters( 'wp_super_duper_widget_output', $output, $instance, $args, $this );
4250
-
4251
-			echo $output;
4252
-		}
4253
-
4254
-		/**
4255
-		 * Tests if the current output is inside a elementor container.
4256
-		 *
4257
-		 * @return bool
4258
-		 *@since 1.0.4
4259
-		 */
4260
-		public function is_elementor_widget_output() {
4261
-			$result = false;
4262
-			if ( defined( 'ELEMENTOR_VERSION' ) && isset( $this->number ) && $this->number == 'REPLACE_TO_ID' ) {
4263
-				$result = true;
4264
-			}
4265
-
4266
-			return $result;
4267
-		}
4268
-
4269
-		/**
4270
-		 * Tests if the current output is inside a elementor preview.
4271
-		 *
4272
-		 * @return bool
4273
-		 *@since 1.0.4
4274
-		 */
4275
-		public function is_elementor_preview() {
4276
-			$result = false;
4277
-			if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) {
4278
-				$result = true;
4279
-			}
4280
-
4281
-			return $result;
4282
-		}
4283
-
4284
-		/**
4285
-		 * Tests if the current output is inside a Divi preview.
4286
-		 *
4287
-		 * @return bool
4288
-		 *@since 1.0.6
4289
-		 */
4290
-		public function is_divi_preview() {
4291
-			$result = false;
4292
-			if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) {
4293
-				$result = true;
4294
-			}
4295
-
4296
-			return $result;
4297
-		}
4298
-
4299
-		/**
4300
-		 * Tests if the current output is inside a Beaver builder preview.
4301
-		 *
4302
-		 * @return bool
4303
-		 *@since 1.0.6
4304
-		 */
4305
-		public function is_beaver_preview() {
4306
-			$result = false;
4307
-			if ( isset( $_REQUEST['fl_builder'] ) ) {
4308
-				$result = true;
4309
-			}
4310
-
4311
-			return $result;
4312
-		}
4313
-
4314
-		/**
4315
-		 * Tests if the current output is inside a siteorigin builder preview.
4316
-		 *
4317
-		 * @return bool
4318
-		 *@since 1.0.6
4319
-		 */
4320
-		public function is_siteorigin_preview() {
4321
-			$result = false;
4322
-			if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) {
4323
-				$result = true;
4324
-			}
4325
-
4326
-			return $result;
4327
-		}
4328
-
4329
-		/**
4330
-		 * Tests if the current output is inside a cornerstone builder preview.
4331
-		 *
4332
-		 * @return bool
4333
-		 *@since 1.0.8
4334
-		 */
4335
-		public function is_cornerstone_preview() {
4336
-			$result = false;
4337
-			if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) {
4338
-				$result = true;
4339
-			}
4340
-
4341
-			return $result;
4342
-		}
4343
-
4344
-		/**
4345
-		 * Tests if the current output is inside a fusion builder preview.
4346
-		 *
4347
-		 * @return bool
4348
-		 *@since 1.1.0
4349
-		 */
4350
-		public function is_fusion_preview() {
4351
-			$result = false;
4352
-			if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) {
4353
-				$result = true;
4354
-			}
4355
-
4356
-			return $result;
4357
-		}
4358
-
4359
-		/**
4360
-		 * Tests if the current output is inside a Oxygen builder preview.
4361
-		 *
4362
-		 * @return bool
4363
-		 *@since 1.0.18
4364
-		 */
4365
-		public function is_oxygen_preview() {
4366
-			$result = false;
4367
-			if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) {
4368
-				$result = true;
4369
-			}
4370
-
4371
-			return $result;
4372
-		}
4373
-
4374
-		/**
4375
-		 * Check for Kallyas theme Zion builder preview.
4376
-		 *
4377
-		 * @since 1.1.22
4378
-		 *
4379
-		 * @return bool True when preview page otherwise false.
4380
-		 */
4381
-		public function is_kallyas_zion_preview() {
4382
-			$result = false;
4383
-
4384
-			if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) {
4385
-				$result = true;
4386
-			}
4387
-
4388
-			return $result;
4389
-		}
4390
-
4391
-		/**
4392
-		 * Check for Bricks theme builder preview.
4393
-		 *
4394
-		 * @since 1.1.31
4395
-		 *
4396
-		 * @return bool True when preview page otherwise false.
4397
-		 */
4398
-		public function is_bricks_preview() {
4399
-			$result = false;
4400
-
4401
-			if ( function_exists( 'bricks_is_builder' ) && ( bricks_is_builder() || bricks_is_builder_call() ) ) {
4402
-				$result = true;
4403
-			}
4404
-
4405
-			return $result;
4406
-		}
4407
-
4408
-		/**
4409
-		 * General function to check if we are in a preview situation.
4410
-		 *
4411
-		 * @return bool
4412
-		 *@since 1.0.6
4413
-		 */
4414
-		public function is_preview() {
4415
-			$preview = false;
4416
-			if ( $this->is_divi_preview() ) {
4417
-				$preview = true;
4418
-			} elseif ( $this->is_elementor_preview() ) {
4419
-				$preview = true;
4420
-			} elseif ( $this->is_beaver_preview() ) {
4421
-				$preview = true;
4422
-			} elseif ( $this->is_siteorigin_preview() ) {
4423
-				$preview = true;
4424
-			} elseif ( $this->is_cornerstone_preview() ) {
4425
-				$preview = true;
4426
-			} elseif ( $this->is_fusion_preview() ) {
4427
-				$preview = true;
4428
-			} elseif ( $this->is_oxygen_preview() ) {
4429
-				$preview = true;
4430
-			} elseif( $this->is_kallyas_zion_preview() ) {
4431
-				$preview = true;
4432
-			} elseif( $this->is_block_content_call() ) {
4433
-				$preview = true;
4434
-			} elseif( $this->is_bricks_preview() ) {
4435
-				$preview = true;
4436
-			}
4437
-
4438
-			return $preview;
4439
-		}
4440
-
4441
-		/**
4442
-		 * Output the super title.
4443
-		 *
4444
-		 * @param $args
4445
-		 * @param array $instance
4446
-		 *
4447
-		 * @return string
4448
-		 */
4449
-		public function output_title( $args, $instance = array() ) {
4450
-			$output = '';
4451
-			if ( ! empty( $instance['title'] ) ) {
4452
-				/** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
4453
-				$title  = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
4454
-
4455
-				if ( empty( $instance['widget_title_tag'] ) ) {
4456
-					if ( ! isset( $args['before_title'] ) ) {
4457
-						$args['before_title'] = '';
4458
-					}
4459
-
4460
-					if ( ! isset( $args['after_title'] ) ) {
4461
-						$args['after_title'] = '';
4462
-					}
4463
-
4464
-					$output = $args['before_title'] . $title . $args['after_title'];
4465
-				} else {
4466
-					$title_tag = esc_attr( $instance['widget_title_tag'] );
4467
-
4468
-					// classes
4469
-					$title_classes = array();
4470
-					$title_classes[] = !empty( $instance['widget_title_size_class'] ) ? sanitize_html_class( $instance['widget_title_size_class'] ) : '';
4471
-					$title_classes[] = !empty( $instance['widget_title_align_class'] ) ? sanitize_html_class( $instance['widget_title_align_class'] ) : '';
4472
-					$title_classes[] = !empty( $instance['widget_title_color_class'] ) ? "text-".sanitize_html_class( $instance['widget_title_color_class'] ) : '';
4473
-					$title_classes[] = !empty( $instance['widget_title_border_class'] ) ? sanitize_html_class( $instance['widget_title_border_class'] ) : '';
4474
-					$title_classes[] = !empty( $instance['widget_title_border_color_class'] ) ? "border-".sanitize_html_class( $instance['widget_title_border_color_class'] ) : '';
4475
-					$title_classes[] = !empty( $instance['widget_title_mt_class'] ) ? "mt-".absint( $instance['widget_title_mt_class'] ) : '';
4476
-					$title_classes[] = !empty( $instance['widget_title_mr_class'] ) ? "mr-".absint( $instance['widget_title_mr_class'] ) : '';
4477
-					$title_classes[] = !empty( $instance['widget_title_mb_class'] ) ? "mb-".absint( $instance['widget_title_mb_class'] ) : '';
4478
-					$title_classes[] = !empty( $instance['widget_title_ml_class'] ) ? "ml-".absint( $instance['widget_title_ml_class'] ) : '';
4479
-					$title_classes[] = !empty( $instance['widget_title_pt_class'] ) ? "pt-".absint( $instance['widget_title_pt_class'] ) : '';
4480
-					$title_classes[] = !empty( $instance['widget_title_pr_class'] ) ? "pr-".absint( $instance['widget_title_pr_class'] ) : '';
4481
-					$title_classes[] = !empty( $instance['widget_title_pb_class'] ) ? "pb-".absint( $instance['widget_title_pb_class'] ) : '';
4482
-					$title_classes[] = !empty( $instance['widget_title_pl_class'] ) ? "pl-".absint( $instance['widget_title_pl_class'] ) : '';
4483
-
4484
-					$class = !empty( $title_classes ) ? implode(" ",$title_classes) : '';
4485
-					$output = "<$title_tag class='$class' >$title</$title_tag>";
4486
-				}
4487
-
4488
-			}
4489
-
4490
-			return $output;
4491
-		}
4492
-
4493
-		/**
4494
-		 * Outputs the options form inputs for the widget.
4495
-		 *
4496
-		 * @param array $instance The widget options.
4497
-		 */
4498
-		public function form( $instance ) {
4499
-
4500
-			// set widget instance
4501
-			$this->instance = $instance;
4502
-
4503
-			// set it as a SD widget
4504
-			echo $this->widget_advanced_toggle();
4505
-
4506
-			echo "<p>" . esc_attr( $this->options['widget_ops']['description'] ) . "</p>";
4507
-			$arguments_raw = $this->get_arguments();
4508
-
4509
-			if ( is_array( $arguments_raw ) ) {
4510
-
4511
-				$arguments = $this->group_arguments( $arguments_raw );
4512
-
4513
-				// Do we have sections?
4514
-				$has_sections = $arguments == $arguments_raw ? false : true;
4515
-
4516
-
4517
-				if ( $has_sections ) {
4518
-					$panel_count = 0;
4519
-					foreach ( $arguments as $key => $args ) {
4520
-
4521
-						?>
4152
+                        } elseif ( $element == 'style' ) {
4153
+                            echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4154
+                        } elseif ( ( $element == 'class' || $element == 'className'  ) &&  strpos($new_args, '[%WrapClass%]') !== false ) {
4155
+                            $new_args = str_replace('[%WrapClass%]','',$new_args);
4156
+                            echo $element . ": '" . $this->block_props_replace( $new_args ) . "' + sd_build_aui_class(props.attributes),";
4157
+                        } elseif ( $element == 'template' && $new_args ) {
4158
+                            echo $element . ": $new_args,";
4159
+                        } else {
4160
+                            echo $element . ": '" . $this->block_props_replace( $new_args ) . "',";
4161
+                        }
4162
+
4163
+                    }
4164
+                }
4165
+            }
4166
+        }
4167
+
4168
+        /**
4169
+         * Replace block attributes placeholders with the proper naming.
4170
+         *
4171
+         * @param $string
4172
+         *
4173
+         * @return mixed
4174
+         */
4175
+        public function block_props_replace( $string, $no_wrap = false ) {
4176
+            if ( $no_wrap ) {
4177
+                $string = str_replace( array( "[%", "%]", "%:checked]" ), array( "props.attributes.", "", "" ), $string );
4178
+            } else {
4179
+                $string = str_replace( array( "![%", "[%", "%]", "%:checked]" ), array( "'+!props.attributes.", "'+props.attributes.", "+'", "+'" ), $string );
4180
+            }
4181
+
4182
+            return $string;
4183
+        }
4184
+
4185
+        /**
4186
+         * Outputs the content of the widget
4187
+         *
4188
+         * @param array $args
4189
+         * @param array $instance
4190
+         */
4191
+        public function widget( $args, $instance ) {
4192
+            if ( ! is_array( $args ) ) {
4193
+                $args = array();
4194
+            }
4195
+
4196
+            // Get the filtered values
4197
+            $argument_values = $this->argument_values( $instance );
4198
+            $argument_values = $this->string_to_bool( $argument_values );
4199
+            $output          = $this->output( $argument_values, $args );
4200
+
4201
+            $no_wrap = false;
4202
+            if ( isset( $argument_values['no_wrap'] ) && $argument_values['no_wrap'] ) {
4203
+                $no_wrap = true;
4204
+            }
4205
+
4206
+            ob_start();
4207
+            if ( $output && ! $no_wrap ) {
4208
+
4209
+                $class_original = $this->options['widget_ops']['classname'];
4210
+                $class = $this->options['widget_ops']['classname']." sdel-".$this->get_instance_hash();
4211
+
4212
+                // Before widget
4213
+                $before_widget = ! empty( $args['before_widget'] ) ? $args['before_widget'] : '';
4214
+                $before_widget = $before_widget ? str_replace( $class_original, $class, $before_widget ) : $before_widget;
4215
+                $before_widget = apply_filters( 'wp_super_duper_before_widget', $before_widget, $args, $instance, $this );
4216
+                $before_widget = apply_filters( 'wp_super_duper_before_widget_' . $this->base_id, $before_widget, $args, $instance, $this );
4217
+
4218
+                // After widget
4219
+                $after_widget = ! empty( $args['after_widget'] ) ? $args['after_widget'] : '';
4220
+                $after_widget = apply_filters( 'wp_super_duper_after_widget', $after_widget, $args, $instance, $this );
4221
+                $after_widget = apply_filters( 'wp_super_duper_after_widget_' . $this->base_id, $after_widget, $args, $instance, $this );
4222
+
4223
+                echo $before_widget;
4224
+                // elementor strips the widget wrapping div so we check for and add it back if needed
4225
+                if ( $this->is_elementor_widget_output() ) {
4226
+                    // Filter class & attrs for elementor widget output.
4227
+                    $class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
4228
+                    $class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
4229
+
4230
+                    $attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
4231
+                    $attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
4232
+
4233
+                    echo "<span class='" . esc_attr( $class  ) . "' " . $attrs . ">";
4234
+                }
4235
+                echo $this->output_title( $args, $instance );
4236
+                echo $output;
4237
+                if ( $this->is_elementor_widget_output() ) {
4238
+                    echo "</span>";
4239
+                }
4240
+                echo $after_widget;
4241
+            } elseif ( $this->is_preview() && $output == '' ) {// if preview show a placeholder if empty
4242
+                $output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
4243
+                echo $output;
4244
+            } elseif ( $output && $no_wrap ) {
4245
+                echo $output;
4246
+            }
4247
+            $output = ob_get_clean();
4248
+
4249
+            $output = apply_filters( 'wp_super_duper_widget_output', $output, $instance, $args, $this );
4250
+
4251
+            echo $output;
4252
+        }
4253
+
4254
+        /**
4255
+         * Tests if the current output is inside a elementor container.
4256
+         *
4257
+         * @return bool
4258
+         *@since 1.0.4
4259
+         */
4260
+        public function is_elementor_widget_output() {
4261
+            $result = false;
4262
+            if ( defined( 'ELEMENTOR_VERSION' ) && isset( $this->number ) && $this->number == 'REPLACE_TO_ID' ) {
4263
+                $result = true;
4264
+            }
4265
+
4266
+            return $result;
4267
+        }
4268
+
4269
+        /**
4270
+         * Tests if the current output is inside a elementor preview.
4271
+         *
4272
+         * @return bool
4273
+         *@since 1.0.4
4274
+         */
4275
+        public function is_elementor_preview() {
4276
+            $result = false;
4277
+            if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) {
4278
+                $result = true;
4279
+            }
4280
+
4281
+            return $result;
4282
+        }
4283
+
4284
+        /**
4285
+         * Tests if the current output is inside a Divi preview.
4286
+         *
4287
+         * @return bool
4288
+         *@since 1.0.6
4289
+         */
4290
+        public function is_divi_preview() {
4291
+            $result = false;
4292
+            if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) {
4293
+                $result = true;
4294
+            }
4295
+
4296
+            return $result;
4297
+        }
4298
+
4299
+        /**
4300
+         * Tests if the current output is inside a Beaver builder preview.
4301
+         *
4302
+         * @return bool
4303
+         *@since 1.0.6
4304
+         */
4305
+        public function is_beaver_preview() {
4306
+            $result = false;
4307
+            if ( isset( $_REQUEST['fl_builder'] ) ) {
4308
+                $result = true;
4309
+            }
4310
+
4311
+            return $result;
4312
+        }
4313
+
4314
+        /**
4315
+         * Tests if the current output is inside a siteorigin builder preview.
4316
+         *
4317
+         * @return bool
4318
+         *@since 1.0.6
4319
+         */
4320
+        public function is_siteorigin_preview() {
4321
+            $result = false;
4322
+            if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) {
4323
+                $result = true;
4324
+            }
4325
+
4326
+            return $result;
4327
+        }
4328
+
4329
+        /**
4330
+         * Tests if the current output is inside a cornerstone builder preview.
4331
+         *
4332
+         * @return bool
4333
+         *@since 1.0.8
4334
+         */
4335
+        public function is_cornerstone_preview() {
4336
+            $result = false;
4337
+            if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) {
4338
+                $result = true;
4339
+            }
4340
+
4341
+            return $result;
4342
+        }
4343
+
4344
+        /**
4345
+         * Tests if the current output is inside a fusion builder preview.
4346
+         *
4347
+         * @return bool
4348
+         *@since 1.1.0
4349
+         */
4350
+        public function is_fusion_preview() {
4351
+            $result = false;
4352
+            if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) {
4353
+                $result = true;
4354
+            }
4355
+
4356
+            return $result;
4357
+        }
4358
+
4359
+        /**
4360
+         * Tests if the current output is inside a Oxygen builder preview.
4361
+         *
4362
+         * @return bool
4363
+         *@since 1.0.18
4364
+         */
4365
+        public function is_oxygen_preview() {
4366
+            $result = false;
4367
+            if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) {
4368
+                $result = true;
4369
+            }
4370
+
4371
+            return $result;
4372
+        }
4373
+
4374
+        /**
4375
+         * Check for Kallyas theme Zion builder preview.
4376
+         *
4377
+         * @since 1.1.22
4378
+         *
4379
+         * @return bool True when preview page otherwise false.
4380
+         */
4381
+        public function is_kallyas_zion_preview() {
4382
+            $result = false;
4383
+
4384
+            if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) {
4385
+                $result = true;
4386
+            }
4387
+
4388
+            return $result;
4389
+        }
4390
+
4391
+        /**
4392
+         * Check for Bricks theme builder preview.
4393
+         *
4394
+         * @since 1.1.31
4395
+         *
4396
+         * @return bool True when preview page otherwise false.
4397
+         */
4398
+        public function is_bricks_preview() {
4399
+            $result = false;
4400
+
4401
+            if ( function_exists( 'bricks_is_builder' ) && ( bricks_is_builder() || bricks_is_builder_call() ) ) {
4402
+                $result = true;
4403
+            }
4404
+
4405
+            return $result;
4406
+        }
4407
+
4408
+        /**
4409
+         * General function to check if we are in a preview situation.
4410
+         *
4411
+         * @return bool
4412
+         *@since 1.0.6
4413
+         */
4414
+        public function is_preview() {
4415
+            $preview = false;
4416
+            if ( $this->is_divi_preview() ) {
4417
+                $preview = true;
4418
+            } elseif ( $this->is_elementor_preview() ) {
4419
+                $preview = true;
4420
+            } elseif ( $this->is_beaver_preview() ) {
4421
+                $preview = true;
4422
+            } elseif ( $this->is_siteorigin_preview() ) {
4423
+                $preview = true;
4424
+            } elseif ( $this->is_cornerstone_preview() ) {
4425
+                $preview = true;
4426
+            } elseif ( $this->is_fusion_preview() ) {
4427
+                $preview = true;
4428
+            } elseif ( $this->is_oxygen_preview() ) {
4429
+                $preview = true;
4430
+            } elseif( $this->is_kallyas_zion_preview() ) {
4431
+                $preview = true;
4432
+            } elseif( $this->is_block_content_call() ) {
4433
+                $preview = true;
4434
+            } elseif( $this->is_bricks_preview() ) {
4435
+                $preview = true;
4436
+            }
4437
+
4438
+            return $preview;
4439
+        }
4440
+
4441
+        /**
4442
+         * Output the super title.
4443
+         *
4444
+         * @param $args
4445
+         * @param array $instance
4446
+         *
4447
+         * @return string
4448
+         */
4449
+        public function output_title( $args, $instance = array() ) {
4450
+            $output = '';
4451
+            if ( ! empty( $instance['title'] ) ) {
4452
+                /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
4453
+                $title  = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
4454
+
4455
+                if ( empty( $instance['widget_title_tag'] ) ) {
4456
+                    if ( ! isset( $args['before_title'] ) ) {
4457
+                        $args['before_title'] = '';
4458
+                    }
4459
+
4460
+                    if ( ! isset( $args['after_title'] ) ) {
4461
+                        $args['after_title'] = '';
4462
+                    }
4463
+
4464
+                    $output = $args['before_title'] . $title . $args['after_title'];
4465
+                } else {
4466
+                    $title_tag = esc_attr( $instance['widget_title_tag'] );
4467
+
4468
+                    // classes
4469
+                    $title_classes = array();
4470
+                    $title_classes[] = !empty( $instance['widget_title_size_class'] ) ? sanitize_html_class( $instance['widget_title_size_class'] ) : '';
4471
+                    $title_classes[] = !empty( $instance['widget_title_align_class'] ) ? sanitize_html_class( $instance['widget_title_align_class'] ) : '';
4472
+                    $title_classes[] = !empty( $instance['widget_title_color_class'] ) ? "text-".sanitize_html_class( $instance['widget_title_color_class'] ) : '';
4473
+                    $title_classes[] = !empty( $instance['widget_title_border_class'] ) ? sanitize_html_class( $instance['widget_title_border_class'] ) : '';
4474
+                    $title_classes[] = !empty( $instance['widget_title_border_color_class'] ) ? "border-".sanitize_html_class( $instance['widget_title_border_color_class'] ) : '';
4475
+                    $title_classes[] = !empty( $instance['widget_title_mt_class'] ) ? "mt-".absint( $instance['widget_title_mt_class'] ) : '';
4476
+                    $title_classes[] = !empty( $instance['widget_title_mr_class'] ) ? "mr-".absint( $instance['widget_title_mr_class'] ) : '';
4477
+                    $title_classes[] = !empty( $instance['widget_title_mb_class'] ) ? "mb-".absint( $instance['widget_title_mb_class'] ) : '';
4478
+                    $title_classes[] = !empty( $instance['widget_title_ml_class'] ) ? "ml-".absint( $instance['widget_title_ml_class'] ) : '';
4479
+                    $title_classes[] = !empty( $instance['widget_title_pt_class'] ) ? "pt-".absint( $instance['widget_title_pt_class'] ) : '';
4480
+                    $title_classes[] = !empty( $instance['widget_title_pr_class'] ) ? "pr-".absint( $instance['widget_title_pr_class'] ) : '';
4481
+                    $title_classes[] = !empty( $instance['widget_title_pb_class'] ) ? "pb-".absint( $instance['widget_title_pb_class'] ) : '';
4482
+                    $title_classes[] = !empty( $instance['widget_title_pl_class'] ) ? "pl-".absint( $instance['widget_title_pl_class'] ) : '';
4483
+
4484
+                    $class = !empty( $title_classes ) ? implode(" ",$title_classes) : '';
4485
+                    $output = "<$title_tag class='$class' >$title</$title_tag>";
4486
+                }
4487
+
4488
+            }
4489
+
4490
+            return $output;
4491
+        }
4492
+
4493
+        /**
4494
+         * Outputs the options form inputs for the widget.
4495
+         *
4496
+         * @param array $instance The widget options.
4497
+         */
4498
+        public function form( $instance ) {
4499
+
4500
+            // set widget instance
4501
+            $this->instance = $instance;
4502
+
4503
+            // set it as a SD widget
4504
+            echo $this->widget_advanced_toggle();
4505
+
4506
+            echo "<p>" . esc_attr( $this->options['widget_ops']['description'] ) . "</p>";
4507
+            $arguments_raw = $this->get_arguments();
4508
+
4509
+            if ( is_array( $arguments_raw ) ) {
4510
+
4511
+                $arguments = $this->group_arguments( $arguments_raw );
4512
+
4513
+                // Do we have sections?
4514
+                $has_sections = $arguments == $arguments_raw ? false : true;
4515
+
4516
+
4517
+                if ( $has_sections ) {
4518
+                    $panel_count = 0;
4519
+                    foreach ( $arguments as $key => $args ) {
4520
+
4521
+                        ?>
4522 4522
 						<script>
4523 4523
 							//							jQuery(this).find("i").toggleClass("fas fa-chevron-up fas fa-chevron-down");jQuery(this).next().toggle();
4524 4524
 						</script>
4525 4525
 						<?php
4526 4526
 
4527
-						$hide       = $panel_count ? ' style="display:none;" ' : '';
4528
-						$icon_class = $panel_count ? 'fas fa-chevron-up' : 'fas fa-chevron-down';
4529
-						echo "<button onclick='jQuery(this).find(\"i\").toggleClass(\"fas fa-chevron-up fas fa-chevron-down\");jQuery(this).next().slideToggle();' type='button' class='sd-toggle-group-button sd-input-group-toggle" . sanitize_title_with_dashes( $key ) . "'>" . esc_attr( $key ) . " <i style='float:right;' class='" . $icon_class . "'></i></button>";
4530
-						echo "<div class='sd-toggle-group sd-input-group-" . sanitize_title_with_dashes( $key ) . "' $hide>";
4527
+                        $hide       = $panel_count ? ' style="display:none;" ' : '';
4528
+                        $icon_class = $panel_count ? 'fas fa-chevron-up' : 'fas fa-chevron-down';
4529
+                        echo "<button onclick='jQuery(this).find(\"i\").toggleClass(\"fas fa-chevron-up fas fa-chevron-down\");jQuery(this).next().slideToggle();' type='button' class='sd-toggle-group-button sd-input-group-toggle" . sanitize_title_with_dashes( $key ) . "'>" . esc_attr( $key ) . " <i style='float:right;' class='" . $icon_class . "'></i></button>";
4530
+                        echo "<div class='sd-toggle-group sd-input-group-" . sanitize_title_with_dashes( $key ) . "' $hide>";
4531 4531
 
4532
-						foreach ( $args as $k => $a ) {
4532
+                        foreach ( $args as $k => $a ) {
4533 4533
 
4534
-							$this->widget_inputs_row_start($k, $a);
4535
-							$this->widget_inputs( $a, $instance );
4536
-							$this->widget_inputs_row_end($k, $a);
4534
+                            $this->widget_inputs_row_start($k, $a);
4535
+                            $this->widget_inputs( $a, $instance );
4536
+                            $this->widget_inputs_row_end($k, $a);
4537 4537
 
4538
-						}
4538
+                        }
4539 4539
 
4540
-						echo "</div>";
4540
+                        echo "</div>";
4541 4541
 
4542
-						$panel_count ++;
4542
+                        $panel_count ++;
4543 4543
 
4544
-					}
4545
-				} else {
4546
-					foreach ( $arguments as $key => $args ) {
4547
-						$this->widget_inputs_row_start($key, $args);
4548
-						$this->widget_inputs( $args, $instance );
4549
-						$this->widget_inputs_row_end($key, $args);
4550
-					}
4551
-				}
4544
+                    }
4545
+                } else {
4546
+                    foreach ( $arguments as $key => $args ) {
4547
+                        $this->widget_inputs_row_start($key, $args);
4548
+                        $this->widget_inputs( $args, $instance );
4549
+                        $this->widget_inputs_row_end($key, $args);
4550
+                    }
4551
+                }
4552 4552
 
4553
-			}
4554
-		}
4553
+            }
4554
+        }
4555 4555
 
4556
-		public function widget_inputs_row_start( $key, $args ) {
4557
-			if ( ! empty( $args['row'] ) ) {
4558
-				// Maybe open
4559
-				if ( ! empty( $args['row']['open'] ) ) {
4560
-					?>
4556
+        public function widget_inputs_row_start( $key, $args ) {
4557
+            if ( ! empty( $args['row'] ) ) {
4558
+                // Maybe open
4559
+                if ( ! empty( $args['row']['open'] ) ) {
4560
+                    ?>
4561 4561
 					<div class='bsui sd-argument' data-argument='<?php echo esc_attr( $args['row']['key'] ); ?>' data-element_require='<?php echo ( ! empty( $args['row']['element_require'] ) ? $this->convert_element_require( $args['row']['element_require'] ) : '' ); ?>'>
4562 4562
 					<?php if ( ! empty( $args['row']['title'] ) ) { ?>
4563 4563
 					<?php
4564
-						if ( isset( $args['row']['icon'] ) ) {
4565
-							$args['row']['icon'] = '';
4566
-						}
4567
-
4568
-						if ( ! isset( $args['row']['device_type'] ) && isset( $args['device_type'] ) ) {
4569
-							$args['row']['device_type'] = $args['device_type'];
4570
-						}
4571
-					?>
4564
+                        if ( isset( $args['row']['icon'] ) ) {
4565
+                            $args['row']['icon'] = '';
4566
+                        }
4567
+
4568
+                        if ( ! isset( $args['row']['device_type'] ) && isset( $args['device_type'] ) ) {
4569
+                            $args['row']['device_type'] = $args['device_type'];
4570
+                        }
4571
+                    ?>
4572 4572
 					<label class="mb-0"><?php echo $this->widget_field_title( $args['row'] ); ?><?php echo $this->widget_field_desc( $args['row'] ); ?></label>
4573 4573
 					<?php } ?>
4574 4574
 					<div class='row<?php echo ( ! empty( $args['row']['class'] ) ? ' ' . esc_attr( $args['row']['class'] ) : '' ); ?>'>
4575 4575
 					<div class='col pr-2'>
4576 4576
 					<?php
4577
-				} else if ( ! empty( $args['row']['close'] ) ) {
4578
-					echo "<div class='col pl-0 ps-0'>";
4579
-				} else {
4580
-					echo "<div class='col pl-0 ps-0 pr-2 pe-2'>";
4581
-				}
4582
-			}
4583
-		}
4584
-
4585
-		public function widget_inputs_row_end( $key, $args ) {
4586
-			if ( ! empty( $args['row'] ) ) {
4587
-				// Maybe close
4588
-				if ( ! empty( $args['row']['close'] ) ) {
4589
-					echo "</div></div>";
4590
-				}
4591
-				echo "</div>";
4592
-			}
4593
-		}
4594
-
4595
-		/**
4596
-		 * Get the hidden input that when added makes the advanced button show on widget settings.
4597
-		 *
4598
-		 * @return string
4599
-		 */
4600
-		public function widget_advanced_toggle() {
4601
-
4602
-			$output = '';
4603
-			if ( $this->block_show_advanced() ) {
4604
-				$val = 1;
4605
-			} else {
4606
-				$val = 0;
4607
-			}
4608
-
4609
-			$output .= "<input type='hidden'  class='sd-show-advanced' value='$val' />";
4610
-
4611
-			return $output;
4612
-		}
4613
-
4614
-		/**
4615
-		 * Convert require element.
4616
-		 *
4617
-		 * @param string $input Input element.
4618
-		 *
4619
-		 * @return string $output
4620
-		 *@since 1.0.0
4621
-		 *
4622
-		 */
4623
-		public function convert_element_require( $input ) {
4624
-			$input = str_replace( "'", '"', $input );// we only want double quotes
4625
-
4626
-			$output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array(
4627
-				"jQuery(form).find('[data-argument=\"",
4628
-				"\"]').find('input,select,textarea').val()",
4629
-				"\"]').find('input:checked').val()"
4630
-			), $input ) );
4631
-
4632
-			return $output;
4633
-		}
4634
-
4635
-		/**
4636
-		 * Builds the inputs for the widget options.
4637
-		 *
4638
-		 * @param $args
4639
-		 * @param $instance
4640
-		 */
4641
-		public function widget_inputs( $args, $instance ) {
4642
-
4643
-			$class             = "";
4644
-			$element_require   = "";
4645
-			$custom_attributes = "";
4646
-
4647
-			// get value
4648
-			if ( isset( $instance[ $args['name'] ] ) ) {
4649
-				$value = $instance[ $args['name'] ];
4650
-			} elseif ( ! isset( $instance[ $args['name'] ] ) && ! empty( $args['default'] ) ) {
4651
-				$value = is_array( $args['default'] ) ? array_map( "esc_html", $args['default'] ) : esc_html( $args['default'] );
4652
-			} else {
4653
-				$value = '';
4654
-			}
4655
-
4656
-			// get placeholder
4657
-			if ( ! empty( $args['placeholder'] ) ) {
4658
-				$placeholder = "placeholder='" . esc_html( $args['placeholder'] ) . "'";
4659
-			} else {
4660
-				$placeholder = '';
4661
-			}
4662
-
4663
-			// get if advanced
4664
-			if ( isset( $args['advanced'] ) && $args['advanced'] ) {
4665
-				$class .= " sd-advanced-setting ";
4666
-			}
4667
-
4668
-			// element_require
4669
-			if ( isset( $args['element_require'] ) && $args['element_require'] ) {
4670
-				$element_require = $args['element_require'];
4671
-			}
4672
-
4673
-			// custom_attributes
4674
-			if ( isset( $args['custom_attributes'] ) && $args['custom_attributes'] ) {
4675
-				$custom_attributes = $this->array_to_attributes( $args['custom_attributes'], true );
4676
-			}
4677
-
4678
-			// before wrapper
4679
-			?>
4577
+                } else if ( ! empty( $args['row']['close'] ) ) {
4578
+                    echo "<div class='col pl-0 ps-0'>";
4579
+                } else {
4580
+                    echo "<div class='col pl-0 ps-0 pr-2 pe-2'>";
4581
+                }
4582
+            }
4583
+        }
4584
+
4585
+        public function widget_inputs_row_end( $key, $args ) {
4586
+            if ( ! empty( $args['row'] ) ) {
4587
+                // Maybe close
4588
+                if ( ! empty( $args['row']['close'] ) ) {
4589
+                    echo "</div></div>";
4590
+                }
4591
+                echo "</div>";
4592
+            }
4593
+        }
4594
+
4595
+        /**
4596
+         * Get the hidden input that when added makes the advanced button show on widget settings.
4597
+         *
4598
+         * @return string
4599
+         */
4600
+        public function widget_advanced_toggle() {
4601
+
4602
+            $output = '';
4603
+            if ( $this->block_show_advanced() ) {
4604
+                $val = 1;
4605
+            } else {
4606
+                $val = 0;
4607
+            }
4608
+
4609
+            $output .= "<input type='hidden'  class='sd-show-advanced' value='$val' />";
4610
+
4611
+            return $output;
4612
+        }
4613
+
4614
+        /**
4615
+         * Convert require element.
4616
+         *
4617
+         * @param string $input Input element.
4618
+         *
4619
+         * @return string $output
4620
+         *@since 1.0.0
4621
+         *
4622
+         */
4623
+        public function convert_element_require( $input ) {
4624
+            $input = str_replace( "'", '"', $input );// we only want double quotes
4625
+
4626
+            $output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array(
4627
+                "jQuery(form).find('[data-argument=\"",
4628
+                "\"]').find('input,select,textarea').val()",
4629
+                "\"]').find('input:checked').val()"
4630
+            ), $input ) );
4631
+
4632
+            return $output;
4633
+        }
4634
+
4635
+        /**
4636
+         * Builds the inputs for the widget options.
4637
+         *
4638
+         * @param $args
4639
+         * @param $instance
4640
+         */
4641
+        public function widget_inputs( $args, $instance ) {
4642
+
4643
+            $class             = "";
4644
+            $element_require   = "";
4645
+            $custom_attributes = "";
4646
+
4647
+            // get value
4648
+            if ( isset( $instance[ $args['name'] ] ) ) {
4649
+                $value = $instance[ $args['name'] ];
4650
+            } elseif ( ! isset( $instance[ $args['name'] ] ) && ! empty( $args['default'] ) ) {
4651
+                $value = is_array( $args['default'] ) ? array_map( "esc_html", $args['default'] ) : esc_html( $args['default'] );
4652
+            } else {
4653
+                $value = '';
4654
+            }
4655
+
4656
+            // get placeholder
4657
+            if ( ! empty( $args['placeholder'] ) ) {
4658
+                $placeholder = "placeholder='" . esc_html( $args['placeholder'] ) . "'";
4659
+            } else {
4660
+                $placeholder = '';
4661
+            }
4662
+
4663
+            // get if advanced
4664
+            if ( isset( $args['advanced'] ) && $args['advanced'] ) {
4665
+                $class .= " sd-advanced-setting ";
4666
+            }
4667
+
4668
+            // element_require
4669
+            if ( isset( $args['element_require'] ) && $args['element_require'] ) {
4670
+                $element_require = $args['element_require'];
4671
+            }
4672
+
4673
+            // custom_attributes
4674
+            if ( isset( $args['custom_attributes'] ) && $args['custom_attributes'] ) {
4675
+                $custom_attributes = $this->array_to_attributes( $args['custom_attributes'], true );
4676
+            }
4677
+
4678
+            // before wrapper
4679
+            ?>
4680 4680
 			<p class="sd-argument <?php echo esc_attr( $class ); ?>" data-argument='<?php echo esc_attr( $args['name'] ); ?>' data-element_require='<?php if ( $element_require ) { echo $this->convert_element_require( $element_require );} ?>'>
4681 4681
 			<?php
4682
-			switch ( $args['type'] ) {
4683
-				//array('text','password','number','email','tel','url','color')
4684
-				case "text":
4685
-				case "password":
4686
-				case "number":
4687
-				case "email":
4688
-				case "tel":
4689
-				case "url":
4690
-				case "color":
4691
-					?>
4682
+            switch ( $args['type'] ) {
4683
+                //array('text','password','number','email','tel','url','color')
4684
+                case "text":
4685
+                case "password":
4686
+                case "number":
4687
+                case "email":
4688
+                case "tel":
4689
+                case "url":
4690
+                case "color":
4691
+                    ?>
4692 4692
 					<label for="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>"><?php echo $this->widget_field_title( $args );?><?php echo $this->widget_field_desc( $args ); ?></label>
4693 4693
 					<input <?php echo $placeholder; ?> class="widefat" <?php echo $custom_attributes; ?> id="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( $args['name'] ) ); ?>" type="<?php echo esc_attr( $args['type'] ); ?>" value="<?php echo esc_attr( $value ); ?>">
4694 4694
 					<?php
4695 4695
 
4696
-					break;
4697
-				case "select":
4698
-					$multiple = isset( $args['multiple'] ) && $args['multiple'] ? true : false;
4699
-					if ( $multiple ) {
4700
-						if ( empty( $value ) ) {
4701
-							$value = array();
4702
-						}
4703
-					}
4704
-					?>
4696
+                    break;
4697
+                case "select":
4698
+                    $multiple = isset( $args['multiple'] ) && $args['multiple'] ? true : false;
4699
+                    if ( $multiple ) {
4700
+                        if ( empty( $value ) ) {
4701
+                            $value = array();
4702
+                        }
4703
+                    }
4704
+                    ?>
4705 4705
 					<label for="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>"><?php echo $this->widget_field_title( $args ); ?><?php echo $this->widget_field_desc( $args ); ?></label>
4706 4706
 					<select <?php echo $placeholder; ?> class="widefat" <?php echo $custom_attributes; ?> id="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( $args['name'] ) ); if ( $multiple ) { echo "[]"; } ?>"
4707 4707
 						<?php if ( $multiple ) {
4708
-							echo "multiple";
4709
-						} //@todo not implemented yet due to gutenberg not supporting it
4710
-						?>>
4708
+                            echo "multiple";
4709
+                        } //@todo not implemented yet due to gutenberg not supporting it
4710
+                        ?>>
4711 4711
 						<?php
4712 4712
 
4713
-						if ( ! empty( $args['options'] ) ) {
4714
-							foreach ( $args['options'] as $val => $label ) {
4715
-								if ( $multiple ) {
4716
-									$selected = in_array( $val, $value ) ? 'selected="selected"' : '';
4717
-								} else {
4718
-									$selected = selected( $value, $val, false );
4719
-								}
4720
-								echo "<option value='$val' " . $selected . ">$label</option>";
4721
-							}
4722
-						}
4723
-						?>
4713
+                        if ( ! empty( $args['options'] ) ) {
4714
+                            foreach ( $args['options'] as $val => $label ) {
4715
+                                if ( $multiple ) {
4716
+                                    $selected = in_array( $val, $value ) ? 'selected="selected"' : '';
4717
+                                } else {
4718
+                                    $selected = selected( $value, $val, false );
4719
+                                }
4720
+                                echo "<option value='$val' " . $selected . ">$label</option>";
4721
+                            }
4722
+                        }
4723
+                        ?>
4724 4724
 					</select>
4725 4725
 					<?php
4726
-					break;
4727
-				case "checkbox":
4728
-					?>
4726
+                    break;
4727
+                case "checkbox":
4728
+                    ?>
4729 4729
 					<input <?php echo $placeholder; ?> <?php checked( 1, $value, true ) ?> <?php echo $custom_attributes; ?> class="widefat" id="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( $args['name'] ) ); ?>" type="checkbox" value="1">
4730 4730
 					<label for="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>"><?php echo $this->widget_field_title( $args );?><?php echo $this->widget_field_desc( $args ); ?></label>
4731 4731
 					<?php
4732
-					break;
4733
-				case "textarea":
4734
-					?>
4732
+                    break;
4733
+                case "textarea":
4734
+                    ?>
4735 4735
 					<label for="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>"><?php echo $this->widget_field_title( $args ); ?><?php echo $this->widget_field_desc( $args ); ?></label>
4736 4736
 					<textarea <?php echo $placeholder; ?> class="widefat" <?php echo $custom_attributes; ?> id="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( $args['name'] ) ); ?>"><?php echo esc_attr( $value ); ?></textarea>
4737 4737
 					<?php
4738 4738
 
4739
-					break;
4740
-				case "hidden":
4741
-					?>
4739
+                    break;
4740
+                case "hidden":
4741
+                    ?>
4742 4742
 					<input id="<?php echo esc_attr( $this->get_field_id( $args['name'] ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( $args['name'] ) ); ?>" type="hidden" value="<?php echo esc_attr( $value ); ?>">
4743 4743
 					<?php
4744
-					break;
4745
-				default:
4746
-					echo "No input type found!"; // @todo we need to add more input types.
4747
-			}
4748
-			// after wrapper
4749
-			?></p><?php
4750
-		}
4751
-
4752
-		public function get_widget_icon($icon = 'box-top', $title = ''){
4753
-			if($icon=='box-top'){
4754
-				return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1.048" height="9.017" fill="#555D66"></rect><rect x="16.265" y="5.498" width="1.023" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.186" width="8.964" height="2.482" fill="#272B2F"></rect><rect x="5.487" y="16.261" width="9.026" height="1.037" fill="#555D66"></rect></svg>';
4755
-			}elseif($icon=='box-right'){
4756
-				return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1.046" height="9.017" fill="#555D66"></rect><rect x="15.244" y="5.498" width="2.518" height="9.003" fill="#272B2F"></rect><rect x="5.518" y="2.719" width="8.964" height="0.954" fill="#555D66"></rect><rect x="5.487" y="16.308" width="9.026" height="0.99" fill="#555D66"></rect></svg>';
4757
-			}elseif($icon=='box-bottom'){
4758
-				return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1" height="9.017" fill="#555D66"></rect><rect x="16.261" y="5.498" width="1.027" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.719" width="8.964" height="0.968" fill="#555D66"></rect><rect x="5.487" y="15.28" width="9.026" height="2.499" fill="#272B2F"></rect></svg>';
4759
-			}elseif($icon=='box-left'){
4760
-				return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.202" y="5.492" width="2.503" height="9.017" fill="#272B2F"></rect><rect x="16.276" y="5.498" width="1.012" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.719" width="8.964" height="0.966" fill="#555D66"></rect><rect x="5.487" y="16.303" width="9.026" height="0.995" fill="#555D66"></rect></svg>';
4761
-			}
4762
-		}
4763
-
4764
-		/**
4765
-		 * Get the widget input description html.
4766
-		 *
4767
-		 * @param $args
4768
-		 *
4769
-		 * @return string
4770
-		 * @todo, need to make its own tooltip script
4771
-		 */
4772
-		public function widget_field_desc( $args ) {
4773
-
4774
-			$description = '';
4775
-			if ( isset( $args['desc'] ) && $args['desc'] ) {
4776
-				if ( isset( $args['desc_tip'] ) && $args['desc_tip'] ) {
4777
-					$description = $this->desc_tip( $args['desc'] );
4778
-				} else {
4779
-					$description = '<span class="description">' . wp_kses_post( $args['desc'] ) . '</span>';
4780
-				}
4781
-			}
4782
-
4783
-			return $description;
4784
-		}
4785
-
4786
-		/**
4787
-		 * Get the widget input title html.
4788
-		 *
4789
-		 * @param $args
4790
-		 *
4791
-		 * @return string
4792
-		 */
4793
-		public function widget_field_title( $args ) {
4794
-			$title = '';
4795
-
4796
-			if ( isset( $args['title'] ) && $args['title'] ) {
4797
-				if ( ! empty( $args['device_type'] ) ) {
4798
-					$args['title'] .= ' (' . $args['device_type'] . ')'; // Append device type to title.
4799
-				}
4800
-
4801
-				if ( isset( $args['icon'] ) && $args['icon'] ) {
4802
-					$title = self::get_widget_icon( $args['icon'], $args['title']  );
4803
-				} else {
4804
-					$title = esc_attr( $args['title'] );
4805
-				}
4806
-			}
4807
-
4808
-			return $title;
4809
-		}
4810
-
4811
-		/**
4812
-		 * Get the tool tip html.
4813
-		 *
4814
-		 * @param $tip
4815
-		 * @param bool $allow_html
4816
-		 *
4817
-		 * @return string
4818
-		 */
4819
-		function desc_tip( $tip, $allow_html = false ) {
4820
-			if ( $allow_html ) {
4821
-				$tip = $this->sanitize_tooltip( $tip );
4822
-			} else {
4823
-				$tip = esc_attr( $tip );
4824
-			}
4825
-
4826
-			return '<span class="gd-help-tip dashicons dashicons-editor-help" title="' . $tip . '"></span>';
4827
-		}
4828
-
4829
-		/**
4830
-		 * Sanitize a string destined to be a tooltip.
4831
-		 *
4832
-		 * @param string $var
4833
-		 *
4834
-		 * @return string
4835
-		 */
4836
-		public function sanitize_tooltip( $var ) {
4837
-			return htmlspecialchars( wp_kses( html_entity_decode( $var ), array(
4838
-				'br'     => array(),
4839
-				'em'     => array(),
4840
-				'strong' => array(),
4841
-				'small'  => array(),
4842
-				'span'   => array(),
4843
-				'ul'     => array(),
4844
-				'li'     => array(),
4845
-				'ol'     => array(),
4846
-				'p'      => array(),
4847
-			) ) );
4848
-		}
4849
-
4850
-		/**
4851
-		 * Processing widget options on save
4852
-		 *
4853
-		 * @param array $new_instance The new options
4854
-		 * @param array $old_instance The previous options
4855
-		 *
4856
-		 * @return array
4857
-		 * @todo we should add some sanitation here.
4858
-		 */
4859
-		public function update( $new_instance, $old_instance ) {
4860
-
4861
-			//save the widget
4862
-			$instance = array_merge( (array) $old_instance, (array) $new_instance );
4863
-
4864
-			// set widget instance
4865
-			$this->instance = $instance;
4866
-
4867
-			if ( empty( $this->arguments ) ) {
4868
-				$this->get_arguments();
4869
-			}
4870
-
4871
-			// check for checkboxes
4872
-			if ( ! empty( $this->arguments ) ) {
4873
-				foreach ( $this->arguments as $argument ) {
4874
-					if ( isset( $argument['type'] ) && $argument['type'] == 'checkbox' && ! isset( $new_instance[ $argument['name'] ] ) ) {
4875
-						$instance[ $argument['name'] ] = '0';
4876
-					}
4877
-				}
4878
-			}
4879
-
4880
-			return $instance;
4881
-		}
4882
-
4883
-		/**
4884
-		 * Checks if the current call is a ajax call to get the block content.
4885
-		 *
4886
-		 * This can be used in your widget to return different content as the block content.
4887
-		 *
4888
-		 * @return bool
4889
-		 *@since 1.0.3
4890
-		 */
4891
-		public function is_block_content_call() {
4892
-			$result = false;
4893
-			if ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'super_duper_output_shortcode' ) {
4894
-				$result = true;
4895
-			}
4896
-
4897
-			return $result;
4898
-		}
4899
-
4900
-		/**
4901
-		 * Get an instance hash that will be unique to the type and settings.
4902
-		 *
4903
-		 * @return string
4904
-		 *@since 1.0.20
4905
-		 */
4906
-		public function get_instance_hash(){
4907
-			$instance_string = $this->base_id.serialize($this->instance);
4908
-			return hash('crc32b',$instance_string);
4909
-		}
4910
-
4911
-		/**
4912
-		 * Generate and return inline styles from CSS rules that will match the unique class of the instance.
4913
-		 *
4914
-		 * @param array $rules
4915
-		 *
4916
-		 * @return string
4917
-		 *@since 1.0.20
4918
-		 */
4919
-		public function get_instance_style($rules = array()){
4920
-			$css = '';
4921
-
4922
-			if(!empty($rules)){
4923
-				$rules = array_unique($rules);
4924
-				$instance_hash = $this->get_instance_hash();
4925
-				$css .= "<style>";
4926
-				foreach($rules as $rule){
4927
-					$css .= ".sdel-$instance_hash $rule";
4928
-				}
4929
-				$css .= "</style>";
4930
-			}
4931
-
4932
-			return $css;
4933
-		}
4934
-
4935
-		/**
4936
-		 * Encode shortcodes tags.
4937
-		 *
4938
-		 * @param string $content Content to search for shortcode tags.
4939
-		 *
4744
+                    break;
4745
+                default:
4746
+                    echo "No input type found!"; // @todo we need to add more input types.
4747
+            }
4748
+            // after wrapper
4749
+            ?></p><?php
4750
+        }
4751
+
4752
+        public function get_widget_icon($icon = 'box-top', $title = ''){
4753
+            if($icon=='box-top'){
4754
+                return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1.048" height="9.017" fill="#555D66"></rect><rect x="16.265" y="5.498" width="1.023" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.186" width="8.964" height="2.482" fill="#272B2F"></rect><rect x="5.487" y="16.261" width="9.026" height="1.037" fill="#555D66"></rect></svg>';
4755
+            }elseif($icon=='box-right'){
4756
+                return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1.046" height="9.017" fill="#555D66"></rect><rect x="15.244" y="5.498" width="2.518" height="9.003" fill="#272B2F"></rect><rect x="5.518" y="2.719" width="8.964" height="0.954" fill="#555D66"></rect><rect x="5.487" y="16.308" width="9.026" height="0.99" fill="#555D66"></rect></svg>';
4757
+            }elseif($icon=='box-bottom'){
4758
+                return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.714" y="5.492" width="1" height="9.017" fill="#555D66"></rect><rect x="16.261" y="5.498" width="1.027" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.719" width="8.964" height="0.968" fill="#555D66"></rect><rect x="5.487" y="15.28" width="9.026" height="2.499" fill="#272B2F"></rect></svg>';
4759
+            }elseif($icon=='box-left'){
4760
+                return '<svg title="'.esc_attr($title).'" width="20px" height="20px" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" role="img" aria-hidden="true" focusable="false"><rect x="2.202" y="5.492" width="2.503" height="9.017" fill="#272B2F"></rect><rect x="16.276" y="5.498" width="1.012" height="9.003" fill="#555D66"></rect><rect x="5.518" y="2.719" width="8.964" height="0.966" fill="#555D66"></rect><rect x="5.487" y="16.303" width="9.026" height="0.995" fill="#555D66"></rect></svg>';
4761
+            }
4762
+        }
4763
+
4764
+        /**
4765
+         * Get the widget input description html.
4766
+         *
4767
+         * @param $args
4768
+         *
4769
+         * @return string
4770
+         * @todo, need to make its own tooltip script
4771
+         */
4772
+        public function widget_field_desc( $args ) {
4773
+
4774
+            $description = '';
4775
+            if ( isset( $args['desc'] ) && $args['desc'] ) {
4776
+                if ( isset( $args['desc_tip'] ) && $args['desc_tip'] ) {
4777
+                    $description = $this->desc_tip( $args['desc'] );
4778
+                } else {
4779
+                    $description = '<span class="description">' . wp_kses_post( $args['desc'] ) . '</span>';
4780
+                }
4781
+            }
4782
+
4783
+            return $description;
4784
+        }
4785
+
4786
+        /**
4787
+         * Get the widget input title html.
4788
+         *
4789
+         * @param $args
4790
+         *
4791
+         * @return string
4792
+         */
4793
+        public function widget_field_title( $args ) {
4794
+            $title = '';
4795
+
4796
+            if ( isset( $args['title'] ) && $args['title'] ) {
4797
+                if ( ! empty( $args['device_type'] ) ) {
4798
+                    $args['title'] .= ' (' . $args['device_type'] . ')'; // Append device type to title.
4799
+                }
4800
+
4801
+                if ( isset( $args['icon'] ) && $args['icon'] ) {
4802
+                    $title = self::get_widget_icon( $args['icon'], $args['title']  );
4803
+                } else {
4804
+                    $title = esc_attr( $args['title'] );
4805
+                }
4806
+            }
4807
+
4808
+            return $title;
4809
+        }
4810
+
4811
+        /**
4812
+         * Get the tool tip html.
4813
+         *
4814
+         * @param $tip
4815
+         * @param bool $allow_html
4816
+         *
4817
+         * @return string
4818
+         */
4819
+        function desc_tip( $tip, $allow_html = false ) {
4820
+            if ( $allow_html ) {
4821
+                $tip = $this->sanitize_tooltip( $tip );
4822
+            } else {
4823
+                $tip = esc_attr( $tip );
4824
+            }
4825
+
4826
+            return '<span class="gd-help-tip dashicons dashicons-editor-help" title="' . $tip . '"></span>';
4827
+        }
4828
+
4829
+        /**
4830
+         * Sanitize a string destined to be a tooltip.
4831
+         *
4832
+         * @param string $var
4833
+         *
4834
+         * @return string
4835
+         */
4836
+        public function sanitize_tooltip( $var ) {
4837
+            return htmlspecialchars( wp_kses( html_entity_decode( $var ), array(
4838
+                'br'     => array(),
4839
+                'em'     => array(),
4840
+                'strong' => array(),
4841
+                'small'  => array(),
4842
+                'span'   => array(),
4843
+                'ul'     => array(),
4844
+                'li'     => array(),
4845
+                'ol'     => array(),
4846
+                'p'      => array(),
4847
+            ) ) );
4848
+        }
4849
+
4850
+        /**
4851
+         * Processing widget options on save
4852
+         *
4853
+         * @param array $new_instance The new options
4854
+         * @param array $old_instance The previous options
4855
+         *
4856
+         * @return array
4857
+         * @todo we should add some sanitation here.
4858
+         */
4859
+        public function update( $new_instance, $old_instance ) {
4860
+
4861
+            //save the widget
4862
+            $instance = array_merge( (array) $old_instance, (array) $new_instance );
4863
+
4864
+            // set widget instance
4865
+            $this->instance = $instance;
4866
+
4867
+            if ( empty( $this->arguments ) ) {
4868
+                $this->get_arguments();
4869
+            }
4870
+
4871
+            // check for checkboxes
4872
+            if ( ! empty( $this->arguments ) ) {
4873
+                foreach ( $this->arguments as $argument ) {
4874
+                    if ( isset( $argument['type'] ) && $argument['type'] == 'checkbox' && ! isset( $new_instance[ $argument['name'] ] ) ) {
4875
+                        $instance[ $argument['name'] ] = '0';
4876
+                    }
4877
+                }
4878
+            }
4879
+
4880
+            return $instance;
4881
+        }
4882
+
4883
+        /**
4884
+         * Checks if the current call is a ajax call to get the block content.
4885
+         *
4886
+         * This can be used in your widget to return different content as the block content.
4887
+         *
4888
+         * @return bool
4889
+         *@since 1.0.3
4890
+         */
4891
+        public function is_block_content_call() {
4892
+            $result = false;
4893
+            if ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'super_duper_output_shortcode' ) {
4894
+                $result = true;
4895
+            }
4896
+
4897
+            return $result;
4898
+        }
4899
+
4900
+        /**
4901
+         * Get an instance hash that will be unique to the type and settings.
4902
+         *
4903
+         * @return string
4904
+         *@since 1.0.20
4905
+         */
4906
+        public function get_instance_hash(){
4907
+            $instance_string = $this->base_id.serialize($this->instance);
4908
+            return hash('crc32b',$instance_string);
4909
+        }
4910
+
4911
+        /**
4912
+         * Generate and return inline styles from CSS rules that will match the unique class of the instance.
4913
+         *
4914
+         * @param array $rules
4915
+         *
4916
+         * @return string
4917
+         *@since 1.0.20
4918
+         */
4919
+        public function get_instance_style($rules = array()){
4920
+            $css = '';
4921
+
4922
+            if(!empty($rules)){
4923
+                $rules = array_unique($rules);
4924
+                $instance_hash = $this->get_instance_hash();
4925
+                $css .= "<style>";
4926
+                foreach($rules as $rule){
4927
+                    $css .= ".sdel-$instance_hash $rule";
4928
+                }
4929
+                $css .= "</style>";
4930
+            }
4931
+
4932
+            return $css;
4933
+        }
4934
+
4935
+        /**
4936
+         * Encode shortcodes tags.
4937
+         *
4938
+         * @param string $content Content to search for shortcode tags.
4939
+         *
4940 4940
 *@return string Content with shortcode tags removed.
4941
-		 *@since 1.0.28
4942
-		 *
4943
-		 */
4944
-		public function encode_shortcodes( $content ) {
4945
-			// Avoids existing encoded tags.
4946
-			$trans   = array(
4947
-				'&#91;' => '&#091;',
4948
-				'&#93;' => '&#093;',
4949
-				'&amp;#91;' => '&#091;',
4950
-				'&amp;#93;' => '&#093;',
4951
-				'&lt;' => '&0lt;',
4952
-				'&gt;' => '&0gt;',
4953
-				'&amp;lt;' => '&0lt;',
4954
-				'&amp;gt;' => '&0gt;',
4955
-			);
4956
-
4957
-			$content = strtr( $content, $trans );
4958
-
4959
-			$trans   = array(
4960
-				'[' => '&#91;',
4961
-				']' => '&#93;',
4962
-				'<' => '&lt;',
4963
-				'>' => '&gt;',
4964
-				'"' => '&quot;',
4965
-				"'" => '&#39;',
4966
-			);
4967
-
4968
-			$content = strtr( $content, $trans );
4969
-
4970
-			return $content;
4971
-		}
4972
-
4973
-		/**
4974
-		 * Remove encoded shortcod tags.
4975
-		 *
4976
-		 * @param string $content Content to search for shortcode tags.
4977
-		 *
4941
+         *@since 1.0.28
4942
+         *
4943
+         */
4944
+        public function encode_shortcodes( $content ) {
4945
+            // Avoids existing encoded tags.
4946
+            $trans   = array(
4947
+                '&#91;' => '&#091;',
4948
+                '&#93;' => '&#093;',
4949
+                '&amp;#91;' => '&#091;',
4950
+                '&amp;#93;' => '&#093;',
4951
+                '&lt;' => '&0lt;',
4952
+                '&gt;' => '&0gt;',
4953
+                '&amp;lt;' => '&0lt;',
4954
+                '&amp;gt;' => '&0gt;',
4955
+            );
4956
+
4957
+            $content = strtr( $content, $trans );
4958
+
4959
+            $trans   = array(
4960
+                '[' => '&#91;',
4961
+                ']' => '&#93;',
4962
+                '<' => '&lt;',
4963
+                '>' => '&gt;',
4964
+                '"' => '&quot;',
4965
+                "'" => '&#39;',
4966
+            );
4967
+
4968
+            $content = strtr( $content, $trans );
4969
+
4970
+            return $content;
4971
+        }
4972
+
4973
+        /**
4974
+         * Remove encoded shortcod tags.
4975
+         *
4976
+         * @param string $content Content to search for shortcode tags.
4977
+         *
4978 4978
 *@return string Content with decoded shortcode tags.
4979
-		 *@since 1.0.28
4980
-		 *
4981
-		 */
4982
-		public function decode_shortcodes( $content ) {
4983
-			$trans   = array(
4984
-				'&#91;' => '[',
4985
-				'&#93;' => ']',
4986
-				'&amp;#91;' => '[',
4987
-				'&amp;#93;' => ']',
4988
-				'&lt;' => '<',
4989
-				'&gt;' => '>',
4990
-				'&amp;lt;' => '<',
4991
-				'&amp;gt;' => '>',
4992
-				'&quot;' => '"',
4993
-				'&apos;' => "'",
4994
-			);
4995
-
4996
-			$content = strtr( $content, $trans );
4997
-
4998
-			$trans   = array(
4999
-				'&#091;' => '&#91;',
5000
-				'&#093;' => '&#93;',
5001
-				'&amp;#091;' => '&#91;',
5002
-				'&amp;#093;' => '&#93;',
5003
-				'&0lt;' => '&lt;',
5004
-				'&0gt;' => '&gt;',
5005
-				'&amp;0lt;' => '&lt;',
5006
-				'&amp;0gt;' => '&gt;',
5007
-			);
5008
-
5009
-			$content = strtr( $content, $trans );
5010
-
5011
-			return $content;
5012
-		}
5013
-
5014
-		public function block_visibility_fields( $args ) {
5015
-			$value = ! empty( $args['value'] ) ? esc_attr( $args['value'] ) : '';
5016
-			$content = '<div class="bs-vc-rule-template d-none">';
5017
-				$content .= '<div class="p-3 pb-0 mb-3 border border-1 rounded-1 position-relative bs-vc-rule" data-bs-index="BSVCINDEX" >';
5018
-					$content .= '<div class="row">';
5019
-						$content .= '<div class="col-sm-12">';
5020
-							$content .= '<div class="bs-rule-action position-absolute top-0 end-0 p-2 zindex-5"><span class="text-danger c-pointer bs-vc-remove-rule" title="' . esc_attr__( 'Remove Rule', 'ayecode-connect' ) . '"><i class="fas fa-circle-minus fs-6"></i></span></div>';
5021
-							$content .= aui()->select(
5022
-								array(
5023
-									'id'          => 'bsvc_rule_BSVCINDEX',
5024
-									'name'        => 'bsvc_rule_BSVCINDEX',
5025
-									'label'       => __( 'Rule', 'ayecode-connect' ),
5026
-									'placeholder' => __( 'Select Rule...', 'ayecode-connect' ),
5027
-									'class'       => 'bsvc_rule form-select-sm no-select2 mw-100',
5028
-									'options'     => sd_visibility_rules_options(),
5029
-									'default'     => '',
5030
-									'value'       => '',
5031
-									'label_type'  => '',
5032
-									'select2'     => false,
5033
-									'input_group_left' => __( 'Rule:', 'ayecode-connect' ),
5034
-									'extra_attributes' => array(
5035
-										'data-minimum-results-for-search' => '-1'
5036
-									)
5037
-								)
5038
-							);
5039
-
5040
-						$content .= '</div>';
5041
-
5042
-						if ( class_exists( 'GeoDirectory' ) ) {
5043
-							$content .= '<div class="col-md-7 col-sm-12">';
5044
-
5045
-								$content .= aui()->select(
5046
-									array(
5047
-										'id'          => 'bsvc_gd_field_BSVCINDEX',
5048
-										'name'        => 'bsvc_gd_field_BSVCINDEX',
5049
-										'label'       => __( 'FIELD', 'ayecode-connect' ),
5050
-										'placeholder' => __( 'FIELD', 'ayecode-connect' ),
5051
-										'class'       => 'bsvc_gd_field form-select-sm no-select2 mw-100',
5052
-										'options'     => sd_visibility_gd_field_options(),
5053
-										'default'     => '',
5054
-										'value'       => '',
5055
-										'label_type'  => '',
5056
-										'select2'     => false,
5057
-										'element_require'  => '[%bsvc_rule_BSVCINDEX%]=="gd_field"',
5058
-										'extra_attributes' => array(
5059
-											'data-minimum-results-for-search' => '-1'
5060
-										)
5061
-									)
5062
-								);
5063
-
5064
-							$content .= '</div>';
5065
-							$content .= '<div class="col-md-5 col-sm-12">';
5066
-
5067
-								$content .= aui()->select(
5068
-									array(
5069
-										'id'          => 'bsvc_gd_field_condition_BSVCINDEX',
5070
-										'name'        => 'bsvc_gd_field_condition_BSVCINDEX',
5071
-										'label'       => __( 'CONDITION', 'ayecode-connect' ),
5072
-										'placeholder' => __( 'CONDITION', 'ayecode-connect' ),
5073
-										'class'       => 'bsvc_gd_field_condition form-select-sm no-select2 mw-100',
5074
-										'options'     => sd_visibility_field_condition_options(),
5075
-										'default'     => '',
5076
-										'value'       => '',
5077
-										'label_type'  => '',
5078
-										'select2'     => false,
5079
-										'element_require'  => '[%bsvc_rule_BSVCINDEX%]=="gd_field"',
5080
-										'extra_attributes' => array(
5081
-											'data-minimum-results-for-search' => '-1'
5082
-										)
5083
-									)
5084
-								);
5085
-
5086
-							$content .= '</div>';
5087
-							$content .= '<div class="col-sm-12">';
5088
-
5089
-								$content .= aui()->input(
5090
-									array(
5091
-										'type'            => 'text',
5092
-										'id'              => 'bsvc_gd_field_search_BSVCINDEX',
5093
-										'name'            => 'bsvc_gd_field_search_BSVCINDEX',
5094
-										'label'           => __( 'VALUE TO MATCH', 'ayecode-connect' ),
5095
-										'class'           => 'bsvc_gd_field_search form-control-sm',
5096
-										'placeholder'     => __( 'VALUE TO MATCH', 'ayecode-connect' ),
5097
-										'label_type'      => '',
5098
-										'value'           => '',
5099
-										'element_require' => '([%bsvc_rule_BSVCINDEX%]=="gd_field" && [%bsvc_gd_field_condition_BSVCINDEX%] && [%bsvc_gd_field_condition_BSVCINDEX%]!="is_empty" && [%bsvc_gd_field_condition_BSVCINDEX%]!="is_not_empty")'
5100
-									)
5101
-								);
5102
-
5103
-							$content .= '</div>';
5104
-						}
5105
-
5106
-					$content .= '</div>';
5107
-
5108
-					$content .= '<div class="row aui-conditional-field" data-element-require="jQuery(form).find(\'[name=bsvc_rule_BSVCINDEX]\').val()==\'user_roles\'" data-argument="bsvc_user_roles_BSVCINDEX_1"><label for="bsvc_user_roles_BSVCINDEX_1" class="form-label mb-3">' . __( 'Select User Roles:', 'ayecode-connect' ) . '</label>';
5109
-						$role_options = sd_user_roles_options();
5110
-
5111
-						$role_option_i = 0;
5112
-						foreach ( $role_options as $role_option_key => $role_option_name ) {
5113
-							$role_option_i++;
5114
-
5115
-							$content .= '<div class="col-sm-6">';
5116
-							$content .= aui()->input(
5117
-								array(
5118
-									'id'               => 'bsvc_user_roles_BSVCINDEX_' . $role_option_i,
5119
-									'name'             => 'bsvc_user_roles_BSVCINDEX[]',
5120
-									'type'             => 'checkbox',
5121
-									'label'            => $role_option_name,
5122
-									'label_type'       => 'hidden',
5123
-									'class'            => 'bsvc_user_roles',
5124
-									'value'            => $role_option_key,
5125
-									'switch'           => 'md',
5126
-									'no_wrap'          => true
5127
-								)
5128
-							);
5129
-							$content .= '</div>';
5130
-						}
5131
-					$content .= '</div>';
5132
-				$content .= '</div>';
5133
-			$content .= '</div>';
5134
-			$content .= '<form id="bs-vc-modal-form" class="bs-vc-modal-form">';
5135
-			$content .= '<div class="bs-vc-rule-sets"></div>';
5136
-			$content .= '<div class="row"><div class="col-sm-12 text-center pt-1 pb-4"><button type="button" class="btn btn-sm btn-primary d-block w-100 bs-vc-add-rule"><i class="fas fa-plus"></i> ' . __( 'Add Rule', 'ayecode-connect' ) . '</button></div></div>';
5137
-			$content .= '<div class="row"><div class="col-md-6 col-sm-12">';
5138
-			$content .= aui()->select(
5139
-				array(
5140
-					'id'          => 'bsvc_output',
5141
-					'name'        => 'bsvc_output',
5142
-					'label'       => __( 'What should happen if rules met.', 'ayecode-connect' ),
5143
-					'placeholder' => __( 'Default Output', 'ayecode-connect' ),
5144
-					'class'       => 'bsvc_output form-select-sm no-select2 mw-100',
5145
-					'options'     => sd_visibility_output_options(),
5146
-					'default'     => '',
5147
-					'value'       => '',
5148
-					'label_type'  => 'top',
5149
-					'select2'     => false,
5150
-					'extra_attributes' => array(
5151
-						'data-minimum-results-for-search' => '-1'
5152
-					)
5153
-				)
5154
-			);
5155
-
5156
-			$content .= '</div><div class="col-md-6 col-sm-12">';
5157
-
5158
-			$content .= aui()->select(
5159
-				array(
5160
-					'id'              => 'bsvc_page',
5161
-					'name'            => 'bsvc_page',
5162
-					'label'           => __( 'Page Content', 'ayecode-connect' ),
5163
-					'placeholder'     => __( 'Select Page ID...', 'ayecode-connect' ),
5164
-					'class'           => 'bsvc_page form-select-sm no-select2 mw-100',
5165
-					'options'         => sd_template_page_options(),
5166
-					'default'         => '',
5167
-					'value'           => '',
5168
-					'label_type'      => 'top',
5169
-					'select2'         => false,
5170
-					'element_require' => '[%bsvc_output%]=="page"'
5171
-				)
5172
-			);
5173
-
5174
-			$content .= aui()->select(
5175
-				array(
5176
-					'id'          => 'bsvc_tmpl_part',
5177
-					'name'        => 'bsvc_tmpl_part',
5178
-					'label'       => __( 'Template Part', 'ayecode-connect' ),
5179
-					'placeholder' => __( 'Select Template Part...', 'ayecode-connect' ),
5180
-					'class'       => 'bsvc_tmpl_part form-select-sm no-select2 mw-100',
5181
-					'options'     => sd_template_part_options(),
5182
-					'default'     => '',
5183
-					'value'       => '',
5184
-					'label_type'  => 'top',
5185
-					'select2'     => false,
5186
-					'element_require'  => '[%bsvc_output%]=="template_part"',
5187
-					'extra_attributes' => array(
5188
-						'data-minimum-results-for-search' => '-1'
5189
-					)
5190
-				)
5191
-			);
5192
-
5193
-			$content .= aui()->select(
5194
-				array(
5195
-					'id'               => 'bsvc_message_type',
5196
-					'name'             => 'bsvc_message_type',
5197
-					'label'            => __( 'Custom Message Type', 'ayecode-connect' ),
5198
-					'placeholder'      => __( 'Default (none)', 'ayecode-connect' ),
5199
-					'class'            => 'bsvc_message_type form-select-sm no-select2 mw-100',
5200
-					'options'          => sd_aui_colors(),
5201
-					'default'          => '',
5202
-					'value'            => '',
5203
-					'label_type'       => 'top',
5204
-					'select2'          => false,
5205
-					'element_require'  => '[%bsvc_output%]=="message"',
5206
-					'extra_attributes' => array(
5207
-						'data-minimum-results-for-search' => '-1'
5208
-					)
5209
-				)
5210
-			);
5211
-
5212
-			$content .= '</div><div class="col-sm-12">';
5213
-
5214
-			$content .= aui()->input(
5215
-				array(
5216
-					'type'            => 'text',
5217
-					'id'              => 'bsvc_message',
5218
-					'name'            => 'bsvc_message',
5219
-					'label'           => '',
5220
-					'class'           => 'bsvc_message form-control-sm',
5221
-					'placeholder'     => __( 'CUSTOM MESSAGE TO SHOW', 'ayecode-connect' ),
5222
-					'label_type'      => '',
5223
-					'value'           => '',
5224
-					'form_group_class' => ' ',
5225
-					'element_require' => '[%bsvc_output%]=="message"',
5226
-				)
5227
-			);
5228
-
5229
-			$content .= '</div></div></form><input type="hidden" id="bsvc_raw_value" name="bsvc_raw_value" value="' . $value . '">';
5230
-
5231
-			return $content;
5232
-		}
5233
-	}
4979
+         *@since 1.0.28
4980
+         *
4981
+         */
4982
+        public function decode_shortcodes( $content ) {
4983
+            $trans   = array(
4984
+                '&#91;' => '[',
4985
+                '&#93;' => ']',
4986
+                '&amp;#91;' => '[',
4987
+                '&amp;#93;' => ']',
4988
+                '&lt;' => '<',
4989
+                '&gt;' => '>',
4990
+                '&amp;lt;' => '<',
4991
+                '&amp;gt;' => '>',
4992
+                '&quot;' => '"',
4993
+                '&apos;' => "'",
4994
+            );
4995
+
4996
+            $content = strtr( $content, $trans );
4997
+
4998
+            $trans   = array(
4999
+                '&#091;' => '&#91;',
5000
+                '&#093;' => '&#93;',
5001
+                '&amp;#091;' => '&#91;',
5002
+                '&amp;#093;' => '&#93;',
5003
+                '&0lt;' => '&lt;',
5004
+                '&0gt;' => '&gt;',
5005
+                '&amp;0lt;' => '&lt;',
5006
+                '&amp;0gt;' => '&gt;',
5007
+            );
5008
+
5009
+            $content = strtr( $content, $trans );
5010
+
5011
+            return $content;
5012
+        }
5013
+
5014
+        public function block_visibility_fields( $args ) {
5015
+            $value = ! empty( $args['value'] ) ? esc_attr( $args['value'] ) : '';
5016
+            $content = '<div class="bs-vc-rule-template d-none">';
5017
+                $content .= '<div class="p-3 pb-0 mb-3 border border-1 rounded-1 position-relative bs-vc-rule" data-bs-index="BSVCINDEX" >';
5018
+                    $content .= '<div class="row">';
5019
+                        $content .= '<div class="col-sm-12">';
5020
+                            $content .= '<div class="bs-rule-action position-absolute top-0 end-0 p-2 zindex-5"><span class="text-danger c-pointer bs-vc-remove-rule" title="' . esc_attr__( 'Remove Rule', 'ayecode-connect' ) . '"><i class="fas fa-circle-minus fs-6"></i></span></div>';
5021
+                            $content .= aui()->select(
5022
+                                array(
5023
+                                    'id'          => 'bsvc_rule_BSVCINDEX',
5024
+                                    'name'        => 'bsvc_rule_BSVCINDEX',
5025
+                                    'label'       => __( 'Rule', 'ayecode-connect' ),
5026
+                                    'placeholder' => __( 'Select Rule...', 'ayecode-connect' ),
5027
+                                    'class'       => 'bsvc_rule form-select-sm no-select2 mw-100',
5028
+                                    'options'     => sd_visibility_rules_options(),
5029
+                                    'default'     => '',
5030
+                                    'value'       => '',
5031
+                                    'label_type'  => '',
5032
+                                    'select2'     => false,
5033
+                                    'input_group_left' => __( 'Rule:', 'ayecode-connect' ),
5034
+                                    'extra_attributes' => array(
5035
+                                        'data-minimum-results-for-search' => '-1'
5036
+                                    )
5037
+                                )
5038
+                            );
5039
+
5040
+                        $content .= '</div>';
5041
+
5042
+                        if ( class_exists( 'GeoDirectory' ) ) {
5043
+                            $content .= '<div class="col-md-7 col-sm-12">';
5044
+
5045
+                                $content .= aui()->select(
5046
+                                    array(
5047
+                                        'id'          => 'bsvc_gd_field_BSVCINDEX',
5048
+                                        'name'        => 'bsvc_gd_field_BSVCINDEX',
5049
+                                        'label'       => __( 'FIELD', 'ayecode-connect' ),
5050
+                                        'placeholder' => __( 'FIELD', 'ayecode-connect' ),
5051
+                                        'class'       => 'bsvc_gd_field form-select-sm no-select2 mw-100',
5052
+                                        'options'     => sd_visibility_gd_field_options(),
5053
+                                        'default'     => '',
5054
+                                        'value'       => '',
5055
+                                        'label_type'  => '',
5056
+                                        'select2'     => false,
5057
+                                        'element_require'  => '[%bsvc_rule_BSVCINDEX%]=="gd_field"',
5058
+                                        'extra_attributes' => array(
5059
+                                            'data-minimum-results-for-search' => '-1'
5060
+                                        )
5061
+                                    )
5062
+                                );
5063
+
5064
+                            $content .= '</div>';
5065
+                            $content .= '<div class="col-md-5 col-sm-12">';
5066
+
5067
+                                $content .= aui()->select(
5068
+                                    array(
5069
+                                        'id'          => 'bsvc_gd_field_condition_BSVCINDEX',
5070
+                                        'name'        => 'bsvc_gd_field_condition_BSVCINDEX',
5071
+                                        'label'       => __( 'CONDITION', 'ayecode-connect' ),
5072
+                                        'placeholder' => __( 'CONDITION', 'ayecode-connect' ),
5073
+                                        'class'       => 'bsvc_gd_field_condition form-select-sm no-select2 mw-100',
5074
+                                        'options'     => sd_visibility_field_condition_options(),
5075
+                                        'default'     => '',
5076
+                                        'value'       => '',
5077
+                                        'label_type'  => '',
5078
+                                        'select2'     => false,
5079
+                                        'element_require'  => '[%bsvc_rule_BSVCINDEX%]=="gd_field"',
5080
+                                        'extra_attributes' => array(
5081
+                                            'data-minimum-results-for-search' => '-1'
5082
+                                        )
5083
+                                    )
5084
+                                );
5085
+
5086
+                            $content .= '</div>';
5087
+                            $content .= '<div class="col-sm-12">';
5088
+
5089
+                                $content .= aui()->input(
5090
+                                    array(
5091
+                                        'type'            => 'text',
5092
+                                        'id'              => 'bsvc_gd_field_search_BSVCINDEX',
5093
+                                        'name'            => 'bsvc_gd_field_search_BSVCINDEX',
5094
+                                        'label'           => __( 'VALUE TO MATCH', 'ayecode-connect' ),
5095
+                                        'class'           => 'bsvc_gd_field_search form-control-sm',
5096
+                                        'placeholder'     => __( 'VALUE TO MATCH', 'ayecode-connect' ),
5097
+                                        'label_type'      => '',
5098
+                                        'value'           => '',
5099
+                                        'element_require' => '([%bsvc_rule_BSVCINDEX%]=="gd_field" && [%bsvc_gd_field_condition_BSVCINDEX%] && [%bsvc_gd_field_condition_BSVCINDEX%]!="is_empty" && [%bsvc_gd_field_condition_BSVCINDEX%]!="is_not_empty")'
5100
+                                    )
5101
+                                );
5102
+
5103
+                            $content .= '</div>';
5104
+                        }
5105
+
5106
+                    $content .= '</div>';
5107
+
5108
+                    $content .= '<div class="row aui-conditional-field" data-element-require="jQuery(form).find(\'[name=bsvc_rule_BSVCINDEX]\').val()==\'user_roles\'" data-argument="bsvc_user_roles_BSVCINDEX_1"><label for="bsvc_user_roles_BSVCINDEX_1" class="form-label mb-3">' . __( 'Select User Roles:', 'ayecode-connect' ) . '</label>';
5109
+                        $role_options = sd_user_roles_options();
5110
+
5111
+                        $role_option_i = 0;
5112
+                        foreach ( $role_options as $role_option_key => $role_option_name ) {
5113
+                            $role_option_i++;
5114
+
5115
+                            $content .= '<div class="col-sm-6">';
5116
+                            $content .= aui()->input(
5117
+                                array(
5118
+                                    'id'               => 'bsvc_user_roles_BSVCINDEX_' . $role_option_i,
5119
+                                    'name'             => 'bsvc_user_roles_BSVCINDEX[]',
5120
+                                    'type'             => 'checkbox',
5121
+                                    'label'            => $role_option_name,
5122
+                                    'label_type'       => 'hidden',
5123
+                                    'class'            => 'bsvc_user_roles',
5124
+                                    'value'            => $role_option_key,
5125
+                                    'switch'           => 'md',
5126
+                                    'no_wrap'          => true
5127
+                                )
5128
+                            );
5129
+                            $content .= '</div>';
5130
+                        }
5131
+                    $content .= '</div>';
5132
+                $content .= '</div>';
5133
+            $content .= '</div>';
5134
+            $content .= '<form id="bs-vc-modal-form" class="bs-vc-modal-form">';
5135
+            $content .= '<div class="bs-vc-rule-sets"></div>';
5136
+            $content .= '<div class="row"><div class="col-sm-12 text-center pt-1 pb-4"><button type="button" class="btn btn-sm btn-primary d-block w-100 bs-vc-add-rule"><i class="fas fa-plus"></i> ' . __( 'Add Rule', 'ayecode-connect' ) . '</button></div></div>';
5137
+            $content .= '<div class="row"><div class="col-md-6 col-sm-12">';
5138
+            $content .= aui()->select(
5139
+                array(
5140
+                    'id'          => 'bsvc_output',
5141
+                    'name'        => 'bsvc_output',
5142
+                    'label'       => __( 'What should happen if rules met.', 'ayecode-connect' ),
5143
+                    'placeholder' => __( 'Default Output', 'ayecode-connect' ),
5144
+                    'class'       => 'bsvc_output form-select-sm no-select2 mw-100',
5145
+                    'options'     => sd_visibility_output_options(),
5146
+                    'default'     => '',
5147
+                    'value'       => '',
5148
+                    'label_type'  => 'top',
5149
+                    'select2'     => false,
5150
+                    'extra_attributes' => array(
5151
+                        'data-minimum-results-for-search' => '-1'
5152
+                    )
5153
+                )
5154
+            );
5155
+
5156
+            $content .= '</div><div class="col-md-6 col-sm-12">';
5157
+
5158
+            $content .= aui()->select(
5159
+                array(
5160
+                    'id'              => 'bsvc_page',
5161
+                    'name'            => 'bsvc_page',
5162
+                    'label'           => __( 'Page Content', 'ayecode-connect' ),
5163
+                    'placeholder'     => __( 'Select Page ID...', 'ayecode-connect' ),
5164
+                    'class'           => 'bsvc_page form-select-sm no-select2 mw-100',
5165
+                    'options'         => sd_template_page_options(),
5166
+                    'default'         => '',
5167
+                    'value'           => '',
5168
+                    'label_type'      => 'top',
5169
+                    'select2'         => false,
5170
+                    'element_require' => '[%bsvc_output%]=="page"'
5171
+                )
5172
+            );
5173
+
5174
+            $content .= aui()->select(
5175
+                array(
5176
+                    'id'          => 'bsvc_tmpl_part',
5177
+                    'name'        => 'bsvc_tmpl_part',
5178
+                    'label'       => __( 'Template Part', 'ayecode-connect' ),
5179
+                    'placeholder' => __( 'Select Template Part...', 'ayecode-connect' ),
5180
+                    'class'       => 'bsvc_tmpl_part form-select-sm no-select2 mw-100',
5181
+                    'options'     => sd_template_part_options(),
5182
+                    'default'     => '',
5183
+                    'value'       => '',
5184
+                    'label_type'  => 'top',
5185
+                    'select2'     => false,
5186
+                    'element_require'  => '[%bsvc_output%]=="template_part"',
5187
+                    'extra_attributes' => array(
5188
+                        'data-minimum-results-for-search' => '-1'
5189
+                    )
5190
+                )
5191
+            );
5192
+
5193
+            $content .= aui()->select(
5194
+                array(
5195
+                    'id'               => 'bsvc_message_type',
5196
+                    'name'             => 'bsvc_message_type',
5197
+                    'label'            => __( 'Custom Message Type', 'ayecode-connect' ),
5198
+                    'placeholder'      => __( 'Default (none)', 'ayecode-connect' ),
5199
+                    'class'            => 'bsvc_message_type form-select-sm no-select2 mw-100',
5200
+                    'options'          => sd_aui_colors(),
5201
+                    'default'          => '',
5202
+                    'value'            => '',
5203
+                    'label_type'       => 'top',
5204
+                    'select2'          => false,
5205
+                    'element_require'  => '[%bsvc_output%]=="message"',
5206
+                    'extra_attributes' => array(
5207
+                        'data-minimum-results-for-search' => '-1'
5208
+                    )
5209
+                )
5210
+            );
5211
+
5212
+            $content .= '</div><div class="col-sm-12">';
5213
+
5214
+            $content .= aui()->input(
5215
+                array(
5216
+                    'type'            => 'text',
5217
+                    'id'              => 'bsvc_message',
5218
+                    'name'            => 'bsvc_message',
5219
+                    'label'           => '',
5220
+                    'class'           => 'bsvc_message form-control-sm',
5221
+                    'placeholder'     => __( 'CUSTOM MESSAGE TO SHOW', 'ayecode-connect' ),
5222
+                    'label_type'      => '',
5223
+                    'value'           => '',
5224
+                    'form_group_class' => ' ',
5225
+                    'element_require' => '[%bsvc_output%]=="message"',
5226
+                )
5227
+            );
5228
+
5229
+            $content .= '</div></div></form><input type="hidden" id="bsvc_raw_value" name="bsvc_raw_value" value="' . $value . '">';
5230
+
5231
+            return $content;
5232
+        }
5233
+    }
5234 5234
 }
Please login to merge, or discard this patch.
vendor/ayecode/wp-super-duper/sd-functions.php 1 patch
Indentation   +2790 added lines, -2790 removed lines patch added patch discarded remove patch
@@ -11,21 +11,21 @@  discard block
 block discarded – undo
11 11
  * @return mixed|void
12 12
  */
13 13
 function sd_pagenow_exclude() {
14
-	return apply_filters(
15
-		'sd_pagenow_exclude',
16
-		array(
17
-			'upload.php',
18
-			'edit-comments.php',
19
-			'edit-tags.php',
20
-			'index.php',
21
-			'media-new.php',
22
-			'options-discussion.php',
23
-			'options-writing.php',
24
-			'edit.php',
25
-			'themes.php',
26
-			'users.php',
27
-		)
28
-	);
14
+    return apply_filters(
15
+        'sd_pagenow_exclude',
16
+        array(
17
+            'upload.php',
18
+            'edit-comments.php',
19
+            'edit-tags.php',
20
+            'index.php',
21
+            'media-new.php',
22
+            'options-discussion.php',
23
+            'options-writing.php',
24
+            'edit.php',
25
+            'themes.php',
26
+            'users.php',
27
+        )
28
+    );
29 29
 }
30 30
 
31 31
 
@@ -37,7 +37,7 @@  discard block
 block discarded – undo
37 37
  * @return mixed|void
38 38
  */
39 39
 function sd_widget_exclude() {
40
-	return apply_filters( 'sd_widget_exclude', array() );
40
+    return apply_filters( 'sd_widget_exclude', array() );
41 41
 }
42 42
 
43 43
 
@@ -50,83 +50,83 @@  discard block
 block discarded – undo
50 50
  * @return array
51 51
  */
52 52
 function sd_get_margin_input( $type = 'mt', $overwrite = array(), $include_negatives = true ) {
53
-	global $aui_bs5;
54
-	$options = array(
55
-		''     => __( 'None', 'ayecode-connect' ),
56
-		'auto' => __( 'auto', 'ayecode-connect' ),
57
-		'0'    => '0',
58
-		'1'    => '1',
59
-		'2'    => '2',
60
-		'3'    => '3',
61
-		'4'    => '4',
62
-		'5'    => '5',
63
-		'6'    => '6',
64
-		'7'    => '7',
65
-		'8'    => '8',
66
-		'9'    => '9',
67
-		'10'   => '10',
68
-		'11'   => '11',
69
-		'12'   => '12',
70
-	);
71
-
72
-	if ( $include_negatives ) {
73
-		$options['n1']  = '-1';
74
-		$options['n2']  = '-2';
75
-		$options['n3']  = '-3';
76
-		$options['n4']  = '-4';
77
-		$options['n5']  = '-5';
78
-		$options['n6']  = '-6';
79
-		$options['n7']  = '-7';
80
-		$options['n8']  = '-8';
81
-		$options['n9']  = '-9';
82
-		$options['n10'] = '-10';
83
-		$options['n11'] = '-11';
84
-		$options['n12'] = '-12';
85
-	}
86
-
87
-	$defaults = array(
88
-		'type'     => 'select',
89
-		'title'    => __( 'Margin top', 'ayecode-connect' ),
90
-		'options'  => $options,
91
-		'default'  => '',
92
-		'desc_tip' => true,
93
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
94
-	);
95
-
96
-	// title
97
-	if ( $type == 'mt' ) {
98
-		$defaults['title'] = __( 'Margin top', 'ayecode-connect' );
99
-		$defaults['icon']  = 'box-top';
100
-		$defaults['row']   = array(
101
-			'title' => __( 'Margins', 'ayecode-connect' ),
102
-			'key'   => 'wrapper-margins',
103
-			'open'  => true,
104
-			'class' => 'text-center',
105
-		);
106
-	} elseif ( $type == 'mr' ) {
107
-		$defaults['title'] = __( 'Margin right', 'ayecode-connect' );
108
-		$defaults['icon']  = 'box-right';
109
-		$defaults['row']   = array(
110
-			'key' => 'wrapper-margins',
111
-		);
112
-	} elseif ( $type == 'mb' ) {
113
-		$defaults['title'] = __( 'Margin bottom', 'ayecode-connect' );
114
-		$defaults['icon']  = 'box-bottom';
115
-		$defaults['row']   = array(
116
-			'key' => 'wrapper-margins',
117
-		);
118
-	} elseif ( $type == 'ml' ) {
119
-		$defaults['title'] = __( 'Margin left', 'ayecode-connect' );
120
-		$defaults['icon']  = 'box-left';
121
-		$defaults['row']   = array(
122
-			'key'   => 'wrapper-margins',
123
-			'close' => true,
124
-		);
125
-	}
126
-
127
-	$input = wp_parse_args( $overwrite, $defaults );
128
-
129
-	return $input;
53
+    global $aui_bs5;
54
+    $options = array(
55
+        ''     => __( 'None', 'ayecode-connect' ),
56
+        'auto' => __( 'auto', 'ayecode-connect' ),
57
+        '0'    => '0',
58
+        '1'    => '1',
59
+        '2'    => '2',
60
+        '3'    => '3',
61
+        '4'    => '4',
62
+        '5'    => '5',
63
+        '6'    => '6',
64
+        '7'    => '7',
65
+        '8'    => '8',
66
+        '9'    => '9',
67
+        '10'   => '10',
68
+        '11'   => '11',
69
+        '12'   => '12',
70
+    );
71
+
72
+    if ( $include_negatives ) {
73
+        $options['n1']  = '-1';
74
+        $options['n2']  = '-2';
75
+        $options['n3']  = '-3';
76
+        $options['n4']  = '-4';
77
+        $options['n5']  = '-5';
78
+        $options['n6']  = '-6';
79
+        $options['n7']  = '-7';
80
+        $options['n8']  = '-8';
81
+        $options['n9']  = '-9';
82
+        $options['n10'] = '-10';
83
+        $options['n11'] = '-11';
84
+        $options['n12'] = '-12';
85
+    }
86
+
87
+    $defaults = array(
88
+        'type'     => 'select',
89
+        'title'    => __( 'Margin top', 'ayecode-connect' ),
90
+        'options'  => $options,
91
+        'default'  => '',
92
+        'desc_tip' => true,
93
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
94
+    );
95
+
96
+    // title
97
+    if ( $type == 'mt' ) {
98
+        $defaults['title'] = __( 'Margin top', 'ayecode-connect' );
99
+        $defaults['icon']  = 'box-top';
100
+        $defaults['row']   = array(
101
+            'title' => __( 'Margins', 'ayecode-connect' ),
102
+            'key'   => 'wrapper-margins',
103
+            'open'  => true,
104
+            'class' => 'text-center',
105
+        );
106
+    } elseif ( $type == 'mr' ) {
107
+        $defaults['title'] = __( 'Margin right', 'ayecode-connect' );
108
+        $defaults['icon']  = 'box-right';
109
+        $defaults['row']   = array(
110
+            'key' => 'wrapper-margins',
111
+        );
112
+    } elseif ( $type == 'mb' ) {
113
+        $defaults['title'] = __( 'Margin bottom', 'ayecode-connect' );
114
+        $defaults['icon']  = 'box-bottom';
115
+        $defaults['row']   = array(
116
+            'key' => 'wrapper-margins',
117
+        );
118
+    } elseif ( $type == 'ml' ) {
119
+        $defaults['title'] = __( 'Margin left', 'ayecode-connect' );
120
+        $defaults['icon']  = 'box-left';
121
+        $defaults['row']   = array(
122
+            'key'   => 'wrapper-margins',
123
+            'close' => true,
124
+        );
125
+    }
126
+
127
+    $input = wp_parse_args( $overwrite, $defaults );
128
+
129
+    return $input;
130 130
 }
131 131
 
132 132
 /**
@@ -138,67 +138,67 @@  discard block
 block discarded – undo
138 138
  * @return array
139 139
  */
140 140
 function sd_get_padding_input( $type = 'pt', $overwrite = array() ) {
141
-	$options = array(
142
-		''   => __( 'None', 'ayecode-connect' ),
143
-		'0'  => '0',
144
-		'1'  => '1',
145
-		'2'  => '2',
146
-		'3'  => '3',
147
-		'4'  => '4',
148
-		'5'  => '5',
149
-		'6'  => '6',
150
-		'7'  => '7',
151
-		'8'  => '8',
152
-		'9'  => '9',
153
-		'10' => '10',
154
-		'11' => '11',
155
-		'12' => '12',
156
-	);
157
-
158
-	$defaults = array(
159
-		'type'     => 'select',
160
-		'title'    => __( 'Padding top', 'ayecode-connect' ),
161
-		'options'  => $options,
162
-		'default'  => '',
163
-		'desc_tip' => true,
164
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
165
-	);
166
-
167
-	// title
168
-	if ( $type == 'pt' ) {
169
-		$defaults['title'] = __( 'Padding top', 'ayecode-connect' );
170
-		$defaults['icon']  = 'box-top';
171
-		$defaults['row']   = array(
172
-			'title' => __( 'Padding', 'ayecode-connect' ),
173
-			'key'   => 'wrapper-padding',
174
-			'open'  => true,
175
-			'class' => 'text-center',
176
-		);
177
-	} elseif ( $type == 'pr' ) {
178
-		$defaults['title'] = __( 'Padding right', 'ayecode-connect' );
179
-		$defaults['icon']  = 'box-right';
180
-		$defaults['row']   = array(
181
-			'key' => 'wrapper-padding',
182
-		);
183
-	} elseif ( $type == 'pb' ) {
184
-		$defaults['title'] = __( 'Padding bottom', 'ayecode-connect' );
185
-		$defaults['icon']  = 'box-bottom';
186
-		$defaults['row']   = array(
187
-			'key' => 'wrapper-padding',
188
-		);
189
-	} elseif ( $type == 'pl' ) {
190
-		$defaults['title'] = __( 'Padding left', 'ayecode-connect' );
191
-		$defaults['icon']  = 'box-left';
192
-		$defaults['row']   = array(
193
-			'key'   => 'wrapper-padding',
194
-			'close' => true,
195
-
196
-		);
197
-	}
198
-
199
-	$input = wp_parse_args( $overwrite, $defaults );
200
-
201
-	return $input;
141
+    $options = array(
142
+        ''   => __( 'None', 'ayecode-connect' ),
143
+        '0'  => '0',
144
+        '1'  => '1',
145
+        '2'  => '2',
146
+        '3'  => '3',
147
+        '4'  => '4',
148
+        '5'  => '5',
149
+        '6'  => '6',
150
+        '7'  => '7',
151
+        '8'  => '8',
152
+        '9'  => '9',
153
+        '10' => '10',
154
+        '11' => '11',
155
+        '12' => '12',
156
+    );
157
+
158
+    $defaults = array(
159
+        'type'     => 'select',
160
+        'title'    => __( 'Padding top', 'ayecode-connect' ),
161
+        'options'  => $options,
162
+        'default'  => '',
163
+        'desc_tip' => true,
164
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
165
+    );
166
+
167
+    // title
168
+    if ( $type == 'pt' ) {
169
+        $defaults['title'] = __( 'Padding top', 'ayecode-connect' );
170
+        $defaults['icon']  = 'box-top';
171
+        $defaults['row']   = array(
172
+            'title' => __( 'Padding', 'ayecode-connect' ),
173
+            'key'   => 'wrapper-padding',
174
+            'open'  => true,
175
+            'class' => 'text-center',
176
+        );
177
+    } elseif ( $type == 'pr' ) {
178
+        $defaults['title'] = __( 'Padding right', 'ayecode-connect' );
179
+        $defaults['icon']  = 'box-right';
180
+        $defaults['row']   = array(
181
+            'key' => 'wrapper-padding',
182
+        );
183
+    } elseif ( $type == 'pb' ) {
184
+        $defaults['title'] = __( 'Padding bottom', 'ayecode-connect' );
185
+        $defaults['icon']  = 'box-bottom';
186
+        $defaults['row']   = array(
187
+            'key' => 'wrapper-padding',
188
+        );
189
+    } elseif ( $type == 'pl' ) {
190
+        $defaults['title'] = __( 'Padding left', 'ayecode-connect' );
191
+        $defaults['icon']  = 'box-left';
192
+        $defaults['row']   = array(
193
+            'key'   => 'wrapper-padding',
194
+            'close' => true,
195
+
196
+        );
197
+    }
198
+
199
+    $input = wp_parse_args( $overwrite, $defaults );
200
+
201
+    return $input;
202 202
 }
203 203
 
204 204
 /**
@@ -210,96 +210,96 @@  discard block
 block discarded – undo
210 210
  * @return array
211 211
  */
212 212
 function sd_get_border_input( $type = 'border', $overwrite = array() ) {
213
-	global $aui_bs5;
214
-
215
-	$defaults = array(
216
-		'type'     => 'select',
217
-		'title'    => __( 'Border', 'ayecode-connect' ),
218
-		'options'  => array(),
219
-		'default'  => '',
220
-		'desc_tip' => true,
221
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
222
-	);
223
-
224
-	// title
225
-	if ( 'rounded' === $type ) {
226
-		$defaults['title']           = __( 'Border radius type', 'ayecode-connect' );
227
-		$defaults['options']         = array(
228
-			''               => __( 'Default', 'ayecode-connect' ),
229
-			'rounded'        => 'rounded',
230
-			'rounded-top'    => 'rounded-top',
231
-			'rounded-right'  => 'rounded-right',
232
-			'rounded-bottom' => 'rounded-bottom',
233
-			'rounded-left'   => 'rounded-left',
234
-		);
235
-		$defaults['element_require'] = '([%border%]&&[%border%]!="0")';
236
-	} elseif ( 'rounded_size' === $type ) {
237
-		$defaults['title'] = __( 'Border radius size', 'ayecode-connect' );
238
-
239
-		if ( $aui_bs5 ) {
240
-			$defaults['options'] = array(
241
-				''       => __( 'Default', 'ayecode-connect' ),
242
-				'0'      => '0',
243
-				'1'      => '1',
244
-				'2'      => '2',
245
-				'3'      => '3',
246
-				'4'      => '4',
247
-				'circle' => 'circle',
248
-				'pill'   => 'pill',
249
-			);
250
-		} else {
251
-			$defaults['options'] = array(
252
-				''   => __( 'Default', 'ayecode-connect' ),
253
-				'sm' => __( 'Small', 'ayecode-connect' ),
254
-				'lg' => __( 'Large', 'ayecode-connect' ),
255
-			);
256
-		}
257
-		$defaults['element_require'] = '([%border%]&&[%border%]!="0")';
258
-	} elseif ( 'width' === $type ) { // BS%
259
-		$defaults['title']           = __( 'Border width', 'ayecode-connect' );
260
-		$defaults['options']         = array(
261
-			''         => __( 'Default', 'ayecode-connect' ),
262
-			'border-2' => '2',
263
-			'border-3' => '3',
264
-			'border-4' => '4',
265
-			'border-5' => '5',
266
-		);
267
-		$defaults['element_require'] = $aui_bs5 ? '([%border%]&&[%border%]!="0")' : '1==2';
268
-	} elseif ( 'opacity' === $type ) { // BS%
269
-		$defaults['title']           = __( 'Border opacity', 'ayecode-connect' );
270
-		$defaults['options']         = array(
271
-			''                  => __( 'Default', 'ayecode-connect' ),
272
-			'border-opacity-75' => '75%',
273
-			'border-opacity-50' => '50%',
274
-			'border-opacity-25' => '25%',
275
-			'border-opacity-10' => '10%',
276
-		);
277
-		$defaults['element_require'] = $aui_bs5 ? '([%border%]&&[%border%]!="0")' : '1==2';
278
-	} elseif ( 'type' === $type ) {
279
-		$defaults['title']           = __( 'Border show', 'ayecode-connect' );
280
-		$defaults['options']         = array(
281
-			'border'          => __( 'Full (set color to show)', 'ayecode-connect' ),
282
-			'border-top'      => __( 'Top', 'ayecode-connect' ),
283
-			'border-bottom'   => __( 'Bottom', 'ayecode-connect' ),
284
-			'border-left'     => __( 'Left', 'ayecode-connect' ),
285
-			'border-right'    => __( 'Right', 'ayecode-connect' ),
286
-			'border-top-0'    => __( '-Top', 'ayecode-connect' ),
287
-			'border-bottom-0' => __( '-Bottom', 'ayecode-connect' ),
288
-			'border-left-0'   => __( '-Left', 'ayecode-connect' ),
289
-			'border-right-0'  => __( '-Right', 'ayecode-connect' ),
290
-		);
291
-		$defaults['element_require'] = '([%border%]&&[%border%]!="0")';
292
-	} else {
293
-		$defaults['title']   = __( 'Border color', 'ayecode-connect' );
294
-		$defaults['options'] = array(
295
-			''  => __( 'Default', 'ayecode-connect' ),
296
-			'0' => __( 'None', 'ayecode-connect' )
297
-		) + sd_aui_colors( false, false, false, false, true );
298
-	}
299
-
300
-	$input = wp_parse_args( $overwrite, $defaults );
301
-
302
-	return $input;
213
+    global $aui_bs5;
214
+
215
+    $defaults = array(
216
+        'type'     => 'select',
217
+        'title'    => __( 'Border', 'ayecode-connect' ),
218
+        'options'  => array(),
219
+        'default'  => '',
220
+        'desc_tip' => true,
221
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
222
+    );
223
+
224
+    // title
225
+    if ( 'rounded' === $type ) {
226
+        $defaults['title']           = __( 'Border radius type', 'ayecode-connect' );
227
+        $defaults['options']         = array(
228
+            ''               => __( 'Default', 'ayecode-connect' ),
229
+            'rounded'        => 'rounded',
230
+            'rounded-top'    => 'rounded-top',
231
+            'rounded-right'  => 'rounded-right',
232
+            'rounded-bottom' => 'rounded-bottom',
233
+            'rounded-left'   => 'rounded-left',
234
+        );
235
+        $defaults['element_require'] = '([%border%]&&[%border%]!="0")';
236
+    } elseif ( 'rounded_size' === $type ) {
237
+        $defaults['title'] = __( 'Border radius size', 'ayecode-connect' );
238
+
239
+        if ( $aui_bs5 ) {
240
+            $defaults['options'] = array(
241
+                ''       => __( 'Default', 'ayecode-connect' ),
242
+                '0'      => '0',
243
+                '1'      => '1',
244
+                '2'      => '2',
245
+                '3'      => '3',
246
+                '4'      => '4',
247
+                'circle' => 'circle',
248
+                'pill'   => 'pill',
249
+            );
250
+        } else {
251
+            $defaults['options'] = array(
252
+                ''   => __( 'Default', 'ayecode-connect' ),
253
+                'sm' => __( 'Small', 'ayecode-connect' ),
254
+                'lg' => __( 'Large', 'ayecode-connect' ),
255
+            );
256
+        }
257
+        $defaults['element_require'] = '([%border%]&&[%border%]!="0")';
258
+    } elseif ( 'width' === $type ) { // BS%
259
+        $defaults['title']           = __( 'Border width', 'ayecode-connect' );
260
+        $defaults['options']         = array(
261
+            ''         => __( 'Default', 'ayecode-connect' ),
262
+            'border-2' => '2',
263
+            'border-3' => '3',
264
+            'border-4' => '4',
265
+            'border-5' => '5',
266
+        );
267
+        $defaults['element_require'] = $aui_bs5 ? '([%border%]&&[%border%]!="0")' : '1==2';
268
+    } elseif ( 'opacity' === $type ) { // BS%
269
+        $defaults['title']           = __( 'Border opacity', 'ayecode-connect' );
270
+        $defaults['options']         = array(
271
+            ''                  => __( 'Default', 'ayecode-connect' ),
272
+            'border-opacity-75' => '75%',
273
+            'border-opacity-50' => '50%',
274
+            'border-opacity-25' => '25%',
275
+            'border-opacity-10' => '10%',
276
+        );
277
+        $defaults['element_require'] = $aui_bs5 ? '([%border%]&&[%border%]!="0")' : '1==2';
278
+    } elseif ( 'type' === $type ) {
279
+        $defaults['title']           = __( 'Border show', 'ayecode-connect' );
280
+        $defaults['options']         = array(
281
+            'border'          => __( 'Full (set color to show)', 'ayecode-connect' ),
282
+            'border-top'      => __( 'Top', 'ayecode-connect' ),
283
+            'border-bottom'   => __( 'Bottom', 'ayecode-connect' ),
284
+            'border-left'     => __( 'Left', 'ayecode-connect' ),
285
+            'border-right'    => __( 'Right', 'ayecode-connect' ),
286
+            'border-top-0'    => __( '-Top', 'ayecode-connect' ),
287
+            'border-bottom-0' => __( '-Bottom', 'ayecode-connect' ),
288
+            'border-left-0'   => __( '-Left', 'ayecode-connect' ),
289
+            'border-right-0'  => __( '-Right', 'ayecode-connect' ),
290
+        );
291
+        $defaults['element_require'] = '([%border%]&&[%border%]!="0")';
292
+    } else {
293
+        $defaults['title']   = __( 'Border color', 'ayecode-connect' );
294
+        $defaults['options'] = array(
295
+            ''  => __( 'Default', 'ayecode-connect' ),
296
+            '0' => __( 'None', 'ayecode-connect' )
297
+        ) + sd_aui_colors( false, false, false, false, true );
298
+    }
299
+
300
+    $input = wp_parse_args( $overwrite, $defaults );
301
+
302
+    return $input;
303 303
 }
304 304
 
305 305
 /**
@@ -311,25 +311,25 @@  discard block
 block discarded – undo
311 311
  * @return array
312 312
  */
313 313
 function sd_get_shadow_input( $type = 'shadow', $overwrite = array() ) {
314
-	$options = array(
315
-		''          => __( 'None', 'ayecode-connect' ),
316
-		'shadow-sm' => __( 'Small', 'ayecode-connect' ),
317
-		'shadow'    => __( 'Regular', 'ayecode-connect' ),
318
-		'shadow-lg' => __( 'Large', 'ayecode-connect' ),
319
-	);
314
+    $options = array(
315
+        ''          => __( 'None', 'ayecode-connect' ),
316
+        'shadow-sm' => __( 'Small', 'ayecode-connect' ),
317
+        'shadow'    => __( 'Regular', 'ayecode-connect' ),
318
+        'shadow-lg' => __( 'Large', 'ayecode-connect' ),
319
+    );
320 320
 
321
-	$defaults = array(
322
-		'type'     => 'select',
323
-		'title'    => __( 'Shadow', 'ayecode-connect' ),
324
-		'options'  => $options,
325
-		'default'  => '',
326
-		'desc_tip' => true,
327
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
328
-	);
321
+    $defaults = array(
322
+        'type'     => 'select',
323
+        'title'    => __( 'Shadow', 'ayecode-connect' ),
324
+        'options'  => $options,
325
+        'default'  => '',
326
+        'desc_tip' => true,
327
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
328
+    );
329 329
 
330
-	$input = wp_parse_args( $overwrite, $defaults );
330
+    $input = wp_parse_args( $overwrite, $defaults );
331 331
 
332
-	return $input;
332
+    return $input;
333 333
 }
334 334
 
335 335
 /**
@@ -341,23 +341,23 @@  discard block
 block discarded – undo
341 341
  * @return array
342 342
  */
343 343
 function sd_get_background_input( $type = 'bg', $overwrite = array() ) {
344
-	$options = array(
345
-		           ''            => __( 'None', 'ayecode-connect' ),
346
-		           'transparent' => __( 'Transparent', 'ayecode-connect' ),
347
-	           ) + sd_aui_colors(false,false,false,false,true);
344
+    $options = array(
345
+                    ''            => __( 'None', 'ayecode-connect' ),
346
+                    'transparent' => __( 'Transparent', 'ayecode-connect' ),
347
+                ) + sd_aui_colors(false,false,false,false,true);
348 348
 
349
-	$defaults = array(
350
-		'type'     => 'select',
351
-		'title'    => __( 'Background color', 'ayecode-connect' ),
352
-		'options'  => $options,
353
-		'default'  => '',
354
-		'desc_tip' => true,
355
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
356
-	);
349
+    $defaults = array(
350
+        'type'     => 'select',
351
+        'title'    => __( 'Background color', 'ayecode-connect' ),
352
+        'options'  => $options,
353
+        'default'  => '',
354
+        'desc_tip' => true,
355
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
356
+    );
357 357
 
358
-	$input = wp_parse_args( $overwrite, $defaults );
358
+    $input = wp_parse_args( $overwrite, $defaults );
359 359
 
360
-	return $input;
360
+    return $input;
361 361
 }
362 362
 
363 363
 /**
@@ -369,35 +369,35 @@  discard block
 block discarded – undo
369 369
  * @return array
370 370
  */
371 371
 function sd_get_opacity_input( $type = 'opacity', $overwrite = array() ) {
372
-	$options = array(
373
-		''            => __( 'Default', 'ayecode-connect' ),
374
-		'opacity-10'  => '10%',
375
-		'opacity-15'  => '15%',
376
-		'opacity-25'  => '25%',
377
-		'opacity-35'  => '35%',
378
-		'opacity-40'  => '40%',
379
-		'opacity-50'  => '50%',
380
-		'opacity-60'  => '60%',
381
-		'opacity-65'  => '65%',
382
-		'opacity-70'  => '70%',
383
-		'opacity-75'  => '75%',
384
-		'opacity-80'  => '80%',
385
-		'opacity-90'  => '90%',
386
-		'opacity-100' => '100%',
387
-	);
388
-
389
-	$defaults = array(
390
-		'type'     => 'select',
391
-		'title'    => __( 'Opacity', 'ayecode-connect' ),
392
-		'options'  => $options,
393
-		'default'  => '',
394
-		'desc_tip' => true,
395
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
396
-	);
397
-
398
-	$input = wp_parse_args( $overwrite, $defaults );
399
-
400
-	return $input;
372
+    $options = array(
373
+        ''            => __( 'Default', 'ayecode-connect' ),
374
+        'opacity-10'  => '10%',
375
+        'opacity-15'  => '15%',
376
+        'opacity-25'  => '25%',
377
+        'opacity-35'  => '35%',
378
+        'opacity-40'  => '40%',
379
+        'opacity-50'  => '50%',
380
+        'opacity-60'  => '60%',
381
+        'opacity-65'  => '65%',
382
+        'opacity-70'  => '70%',
383
+        'opacity-75'  => '75%',
384
+        'opacity-80'  => '80%',
385
+        'opacity-90'  => '90%',
386
+        'opacity-100' => '100%',
387
+    );
388
+
389
+    $defaults = array(
390
+        'type'     => 'select',
391
+        'title'    => __( 'Opacity', 'ayecode-connect' ),
392
+        'options'  => $options,
393
+        'default'  => '',
394
+        'desc_tip' => true,
395
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
396
+    );
397
+
398
+    $input = wp_parse_args( $overwrite, $defaults );
399
+
400
+    return $input;
401 401
 }
402 402
 
403 403
 /**
@@ -410,124 +410,124 @@  discard block
 block discarded – undo
410 410
  */
411 411
 function sd_get_background_inputs( $type = 'bg', $overwrite = array(), $overwrite_color = array(), $overwrite_gradient = array(), $overwrite_image = array(), $include_button_colors = false ) {
412 412
 
413
-	$color_options = $include_button_colors ? sd_aui_colors( false, true, true, true, true ) : sd_aui_colors(false, false, false, false, true );
414
-
415
-	$options = array(
416
-		           ''            => __( 'None', 'ayecode-connect' ),
417
-		           'transparent' => __( 'Transparent', 'ayecode-connect' ),
418
-	           ) + $color_options;
419
-
420
-	if ( false !== $overwrite_color ) {
421
-		$options['custom-color'] = __( 'Custom Color', 'ayecode-connect' );
422
-	}
423
-
424
-	if ( false !== $overwrite_gradient ) {
425
-		$options['custom-gradient'] = __( 'Custom Gradient', 'ayecode-connect' );
426
-	}
427
-
428
-	$defaults = array(
429
-		'type'     => 'select',
430
-		'title'    => __( 'Background Color', 'ayecode-connect' ),
431
-		'options'  => $options,
432
-		'default'  => '',
433
-		'desc_tip' => true,
434
-		'group'    => __( 'Background', 'ayecode-connect' ),
435
-	);
436
-
437
-	if ( $overwrite !== false ) {
438
-		$input[ $type ] = wp_parse_args( $overwrite, $defaults );
439
-	}
440
-
441
-	if ( $overwrite_color !== false ) {
442
-		$input[ $type . '_color' ] = wp_parse_args(
443
-			$overwrite_color,
444
-			array(
445
-				'type'            => 'color',
446
-				'title'           => __( 'Custom color', 'ayecode-connect' ),
447
-				'placeholder'     => '',
448
-				'default'         => '#0073aa',
449
-				'desc_tip'        => true,
450
-				'group'           => __( 'Background', 'ayecode-connect' ),
451
-				'element_require' => '[%' . $type . '%]=="custom-color"',
452
-			)
453
-		);
454
-	}
455
-
456
-	if ( $overwrite_gradient !== false ) {
457
-		$input[ $type . '_gradient' ] = wp_parse_args(
458
-			$overwrite_gradient,
459
-			array(
460
-				'type'            => 'gradient',
461
-				'title'           => __( 'Custom gradient', 'ayecode-connect' ),
462
-				'placeholder'     => '',
463
-				'default'         => 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
464
-				'desc_tip'        => true,
465
-				'group'           => __( 'Background', 'ayecode-connect' ),
466
-				'element_require' => '[%' . $type . '%]=="custom-gradient"',
467
-			)
468
-		);
469
-	}
470
-
471
-	if ( $overwrite_image !== false ) {
472
-
473
-		$input[ $type . '_image_fixed' ] = array(
474
-			'type'            => 'checkbox',
475
-			'title'           => __( 'Fixed background', 'ayecode-connect' ),
476
-			'default'         => '',
477
-			'desc_tip'        => true,
478
-			'group'           => ! empty( $overwrite_image['group'] ) ? $overwrite_image['group'] : __( 'Background', 'ayecode-connect' ),
479
-			'element_require' => '( [%' . $type . '%]=="" || [%' . $type . '%]=="custom-color" || [%' . $type . '%]=="custom-gradient" || [%' . $type . '%]=="transparent" )',
480
-
481
-		);
482
-
483
-		$input[ $type . '_image_use_featured' ] = array(
484
-			'type'            => 'checkbox',
485
-			'title'           => __( 'Use featured image', 'ayecode-connect' ),
486
-			'default'         => '',
487
-			'desc_tip'        => true,
488
-			'group'           => ! empty( $overwrite_image['group'] ) ? $overwrite_image['group'] : __( 'Background', 'ayecode-connect' ),
489
-			'element_require' => '( [%' . $type . '%]=="" || [%' . $type . '%]=="custom-color" || [%' . $type . '%]=="custom-gradient" || [%' . $type . '%]=="transparent" )',
490
-
491
-		);
492
-
493
-		$input[ $type . '_image' ] = wp_parse_args(
494
-			$overwrite_image,
495
-			array(
496
-				'type'        => 'image',
497
-				'title'       => __( 'Custom image', 'ayecode-connect' ),
498
-				'placeholder' => '',
499
-				'default'     => '',
500
-				'desc_tip'    => true,
501
-				'group'       => __( 'Background', 'ayecode-connect' ),
502
-				//          'element_require' => ' ![%' . $type . '_image_use_featured%] '
503
-			)
504
-		);
505
-
506
-		$input[ $type . '_image_id' ] = wp_parse_args(
507
-			$overwrite_image,
508
-			array(
509
-				'type'        => 'hidden',
510
-				'hidden_type' => 'number',
511
-				'title'       => '',
512
-				'placeholder' => '',
513
-				'default'     => '',
514
-				'group'       => __( 'Background', 'ayecode-connect' ),
515
-			)
516
-		);
517
-
518
-		$input[ $type . '_image_xy' ] = wp_parse_args(
519
-			$overwrite_image,
520
-			array(
521
-				'type'        => 'image_xy',
522
-				'title'       => '',
523
-				'placeholder' => '',
524
-				'default'     => '',
525
-				'group'       => __( 'Background', 'ayecode-connect' ),
526
-			)
527
-		);
528
-	}
529
-
530
-	return $input;
413
+    $color_options = $include_button_colors ? sd_aui_colors( false, true, true, true, true ) : sd_aui_colors(false, false, false, false, true );
414
+
415
+    $options = array(
416
+                    ''            => __( 'None', 'ayecode-connect' ),
417
+                    'transparent' => __( 'Transparent', 'ayecode-connect' ),
418
+                ) + $color_options;
419
+
420
+    if ( false !== $overwrite_color ) {
421
+        $options['custom-color'] = __( 'Custom Color', 'ayecode-connect' );
422
+    }
423
+
424
+    if ( false !== $overwrite_gradient ) {
425
+        $options['custom-gradient'] = __( 'Custom Gradient', 'ayecode-connect' );
426
+    }
427
+
428
+    $defaults = array(
429
+        'type'     => 'select',
430
+        'title'    => __( 'Background Color', 'ayecode-connect' ),
431
+        'options'  => $options,
432
+        'default'  => '',
433
+        'desc_tip' => true,
434
+        'group'    => __( 'Background', 'ayecode-connect' ),
435
+    );
436
+
437
+    if ( $overwrite !== false ) {
438
+        $input[ $type ] = wp_parse_args( $overwrite, $defaults );
439
+    }
440
+
441
+    if ( $overwrite_color !== false ) {
442
+        $input[ $type . '_color' ] = wp_parse_args(
443
+            $overwrite_color,
444
+            array(
445
+                'type'            => 'color',
446
+                'title'           => __( 'Custom color', 'ayecode-connect' ),
447
+                'placeholder'     => '',
448
+                'default'         => '#0073aa',
449
+                'desc_tip'        => true,
450
+                'group'           => __( 'Background', 'ayecode-connect' ),
451
+                'element_require' => '[%' . $type . '%]=="custom-color"',
452
+            )
453
+        );
454
+    }
455
+
456
+    if ( $overwrite_gradient !== false ) {
457
+        $input[ $type . '_gradient' ] = wp_parse_args(
458
+            $overwrite_gradient,
459
+            array(
460
+                'type'            => 'gradient',
461
+                'title'           => __( 'Custom gradient', 'ayecode-connect' ),
462
+                'placeholder'     => '',
463
+                'default'         => 'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
464
+                'desc_tip'        => true,
465
+                'group'           => __( 'Background', 'ayecode-connect' ),
466
+                'element_require' => '[%' . $type . '%]=="custom-gradient"',
467
+            )
468
+        );
469
+    }
470
+
471
+    if ( $overwrite_image !== false ) {
472
+
473
+        $input[ $type . '_image_fixed' ] = array(
474
+            'type'            => 'checkbox',
475
+            'title'           => __( 'Fixed background', 'ayecode-connect' ),
476
+            'default'         => '',
477
+            'desc_tip'        => true,
478
+            'group'           => ! empty( $overwrite_image['group'] ) ? $overwrite_image['group'] : __( 'Background', 'ayecode-connect' ),
479
+            'element_require' => '( [%' . $type . '%]=="" || [%' . $type . '%]=="custom-color" || [%' . $type . '%]=="custom-gradient" || [%' . $type . '%]=="transparent" )',
480
+
481
+        );
482
+
483
+        $input[ $type . '_image_use_featured' ] = array(
484
+            'type'            => 'checkbox',
485
+            'title'           => __( 'Use featured image', 'ayecode-connect' ),
486
+            'default'         => '',
487
+            'desc_tip'        => true,
488
+            'group'           => ! empty( $overwrite_image['group'] ) ? $overwrite_image['group'] : __( 'Background', 'ayecode-connect' ),
489
+            'element_require' => '( [%' . $type . '%]=="" || [%' . $type . '%]=="custom-color" || [%' . $type . '%]=="custom-gradient" || [%' . $type . '%]=="transparent" )',
490
+
491
+        );
492
+
493
+        $input[ $type . '_image' ] = wp_parse_args(
494
+            $overwrite_image,
495
+            array(
496
+                'type'        => 'image',
497
+                'title'       => __( 'Custom image', 'ayecode-connect' ),
498
+                'placeholder' => '',
499
+                'default'     => '',
500
+                'desc_tip'    => true,
501
+                'group'       => __( 'Background', 'ayecode-connect' ),
502
+                //          'element_require' => ' ![%' . $type . '_image_use_featured%] '
503
+            )
504
+        );
505
+
506
+        $input[ $type . '_image_id' ] = wp_parse_args(
507
+            $overwrite_image,
508
+            array(
509
+                'type'        => 'hidden',
510
+                'hidden_type' => 'number',
511
+                'title'       => '',
512
+                'placeholder' => '',
513
+                'default'     => '',
514
+                'group'       => __( 'Background', 'ayecode-connect' ),
515
+            )
516
+        );
517
+
518
+        $input[ $type . '_image_xy' ] = wp_parse_args(
519
+            $overwrite_image,
520
+            array(
521
+                'type'        => 'image_xy',
522
+                'title'       => '',
523
+                'placeholder' => '',
524
+                'default'     => '',
525
+                'group'       => __( 'Background', 'ayecode-connect' ),
526
+            )
527
+        );
528
+    }
529
+
530
+    return $input;
531 531
 }
532 532
 
533 533
 /**
@@ -540,175 +540,175 @@  discard block
 block discarded – undo
540 540
  */
541 541
 function sd_get_shape_divider_inputs( $type = 'sd', $overwrite = array(), $overwrite_color = array(), $overwrite_gradient = array(), $overwrite_image = array() ) {
542 542
 
543
-	$options = array(
544
-		''                      => __( 'None', 'ayecode-connect' ),
545
-		'mountains'             => __( 'Mountains', 'ayecode-connect' ),
546
-		'drops'                 => __( 'Drops', 'ayecode-connect' ),
547
-		'clouds'                => __( 'Clouds', 'ayecode-connect' ),
548
-		'zigzag'                => __( 'Zigzag', 'ayecode-connect' ),
549
-		'pyramids'              => __( 'Pyramids', 'ayecode-connect' ),
550
-		'triangle'              => __( 'Triangle', 'ayecode-connect' ),
551
-		'triangle-asymmetrical' => __( 'Triangle Asymmetrical', 'ayecode-connect' ),
552
-		'tilt'                  => __( 'Tilt', 'ayecode-connect' ),
553
-		'opacity-tilt'          => __( 'Opacity Tilt', 'ayecode-connect' ),
554
-		'opacity-fan'           => __( 'Opacity Fan', 'ayecode-connect' ),
555
-		'curve'                 => __( 'Curve', 'ayecode-connect' ),
556
-		'curve-asymmetrical'    => __( 'Curve Asymmetrical', 'ayecode-connect' ),
557
-		'waves'                 => __( 'Waves', 'ayecode-connect' ),
558
-		'wave-brush'            => __( 'Wave Brush', 'ayecode-connect' ),
559
-		'waves-pattern'         => __( 'Waves Pattern', 'ayecode-connect' ),
560
-		'arrow'                 => __( 'Arrow', 'ayecode-connect' ),
561
-		'split'                 => __( 'Split', 'ayecode-connect' ),
562
-		'book'                  => __( 'Book', 'ayecode-connect' ),
563
-	);
564
-
565
-	$defaults = array(
566
-		'type'     => 'select',
567
-		'title'    => __( 'Type', 'ayecode-connect' ),
568
-		'options'  => $options,
569
-		'default'  => '',
570
-		'desc_tip' => true,
571
-		'group'    => __( 'Shape Divider', 'ayecode-connect' ),
572
-	);
573
-
574
-	$input[ $type ] = wp_parse_args( $overwrite, $defaults );
575
-
576
-	$input[ $type . '_notice' ] = array(
577
-		'type'            => 'notice',
578
-		'desc'            => __( 'Parent element must be position `relative`', 'ayecode-connect' ),
579
-		'status'          => 'warning',
580
-		'group'           => __( 'Shape Divider', 'ayecode-connect' ),
581
-		'element_require' => '[%' . $type . '%]!=""',
582
-	);
583
-
584
-	$input[ $type . '_position' ] = wp_parse_args(
585
-		$overwrite_color,
586
-		array(
587
-			'type'            => 'select',
588
-			'title'           => __( 'Position', 'ayecode-connect' ),
589
-			'options'         => array(
590
-				'top'    => __( 'Top', 'ayecode-connect' ),
591
-				'bottom' => __( 'Bottom', 'ayecode-connect' ),
592
-			),
593
-			'desc_tip'        => true,
594
-			'group'           => __( 'Shape Divider', 'ayecode-connect' ),
595
-			'element_require' => '[%' . $type . '%]!=""',
596
-		)
597
-	);
598
-
599
-	$options = array(
600
-		           ''            => __( 'None', 'ayecode-connect' ),
601
-		           'transparent' => __( 'Transparent', 'ayecode-connect' ),
602
-	           ) + sd_aui_colors(false,false,false,false,true )
603
-	           + array(
604
-		           'custom-color' => __( 'Custom Color', 'ayecode-connect' ),
605
-	           );
606
-
607
-	$input[ $type . '_color' ] = wp_parse_args(
608
-		$overwrite_color,
609
-		array(
610
-			'type'            => 'select',
611
-			'title'           => __( 'Color', 'ayecode-connect' ),
612
-			'options'         => $options,
613
-			'desc_tip'        => true,
614
-			'group'           => __( 'Shape Divider', 'ayecode-connect' ),
615
-			'element_require' => '[%' . $type . '%]!=""',
616
-		)
617
-	);
618
-
619
-	$input[ $type . '_custom_color' ] = wp_parse_args(
620
-		$overwrite_color,
621
-		array(
622
-			'type'            => 'color',
623
-			'title'           => __( 'Custom color', 'ayecode-connect' ),
624
-			'placeholder'     => '',
625
-			'default'         => '#0073aa',
626
-			'desc_tip'        => true,
627
-			'group'           => __( 'Shape Divider', 'ayecode-connect' ),
628
-			'element_require' => '[%' . $type . '_color%]=="custom-color" && [%' . $type . '%]!=""',
629
-		)
630
-	);
631
-
632
-	$input[ $type . '_width' ] = wp_parse_args(
633
-		$overwrite_gradient,
634
-		array(
635
-			'type'              => 'range',
636
-			'title'             => __( 'Width', 'ayecode-connect' ),
637
-			'placeholder'       => '',
638
-			'default'           => '200',
639
-			'desc_tip'          => true,
640
-			'custom_attributes' => array(
641
-				'min' => 100,
642
-				'max' => 300,
643
-			),
644
-			'group'             => __( 'Shape Divider', 'ayecode-connect' ),
645
-			'element_require'   => '[%' . $type . '%]!=""',
646
-		)
647
-	);
648
-
649
-	$input[ $type . '_height' ] = array(
650
-		'type'              => 'range',
651
-		'title'             => __( 'Height', 'ayecode-connect' ),
652
-		'default'           => '100',
653
-		'desc_tip'          => true,
654
-		'custom_attributes' => array(
655
-			'min' => 0,
656
-			'max' => 500,
657
-		),
658
-		'group'             => __( 'Shape Divider', 'ayecode-connect' ),
659
-		'element_require'   => '[%' . $type . '%]!=""',
660
-	);
661
-
662
-	$requires = array(
663
-		'mountains'             => array( 'flip' ),
664
-		'drops'                 => array( 'flip', 'invert' ),
665
-		'clouds'                => array( 'flip', 'invert' ),
666
-		'zigzag'                => array(),
667
-		'pyramids'              => array( 'flip', 'invert' ),
668
-		'triangle'              => array( 'invert' ),
669
-		'triangle-asymmetrical' => array( 'flip', 'invert' ),
670
-		'tilt'                  => array( 'flip' ),
671
-		'opacity-tilt'          => array( 'flip' ),
672
-		'opacity-fan'           => array(),
673
-		'curve'                 => array( 'invert' ),
674
-		'curve-asymmetrical'    => array( 'flip', 'invert' ),
675
-		'waves'                 => array( 'flip', 'invert' ),
676
-		'wave-brush'            => array( 'flip' ),
677
-		'waves-pattern'         => array( 'flip' ),
678
-		'arrow'                 => array( 'invert' ),
679
-		'split'                 => array( 'invert' ),
680
-		'book'                  => array( 'invert' ),
681
-	);
682
-
683
-	$input[ $type . '_flip' ] = array(
684
-		'type'            => 'checkbox',
685
-		'title'           => __( 'Flip', 'ayecode-connect' ),
686
-		'default'         => '',
687
-		'desc_tip'        => true,
688
-		'group'           => __( 'Shape Divider', 'ayecode-connect' ),
689
-		'element_require' => sd_get_element_require_string( $requires, 'flip', 'sd' ),
690
-	);
691
-
692
-	$input[ $type . '_invert' ] = array(
693
-		'type'            => 'checkbox',
694
-		'title'           => __( 'Invert', 'ayecode-connect' ),
695
-		'default'         => '',
696
-		'desc_tip'        => true,
697
-		'group'           => __( 'Shape Divider', 'ayecode-connect' ),
698
-		'element_require' => sd_get_element_require_string( $requires, 'invert', 'sd' ),
699
-	);
700
-
701
-	$input[ $type . '_btf' ] = array(
702
-		'type'            => 'checkbox',
703
-		'title'           => __( 'Bring to front', 'ayecode-connect' ),
704
-		'default'         => '',
705
-		'desc_tip'        => true,
706
-		'group'           => __( 'Shape Divider', 'ayecode-connect' ),
707
-		'element_require' => '[%' . $type . '%]!=""',
708
-
709
-	);
710
-
711
-	return $input;
543
+    $options = array(
544
+        ''                      => __( 'None', 'ayecode-connect' ),
545
+        'mountains'             => __( 'Mountains', 'ayecode-connect' ),
546
+        'drops'                 => __( 'Drops', 'ayecode-connect' ),
547
+        'clouds'                => __( 'Clouds', 'ayecode-connect' ),
548
+        'zigzag'                => __( 'Zigzag', 'ayecode-connect' ),
549
+        'pyramids'              => __( 'Pyramids', 'ayecode-connect' ),
550
+        'triangle'              => __( 'Triangle', 'ayecode-connect' ),
551
+        'triangle-asymmetrical' => __( 'Triangle Asymmetrical', 'ayecode-connect' ),
552
+        'tilt'                  => __( 'Tilt', 'ayecode-connect' ),
553
+        'opacity-tilt'          => __( 'Opacity Tilt', 'ayecode-connect' ),
554
+        'opacity-fan'           => __( 'Opacity Fan', 'ayecode-connect' ),
555
+        'curve'                 => __( 'Curve', 'ayecode-connect' ),
556
+        'curve-asymmetrical'    => __( 'Curve Asymmetrical', 'ayecode-connect' ),
557
+        'waves'                 => __( 'Waves', 'ayecode-connect' ),
558
+        'wave-brush'            => __( 'Wave Brush', 'ayecode-connect' ),
559
+        'waves-pattern'         => __( 'Waves Pattern', 'ayecode-connect' ),
560
+        'arrow'                 => __( 'Arrow', 'ayecode-connect' ),
561
+        'split'                 => __( 'Split', 'ayecode-connect' ),
562
+        'book'                  => __( 'Book', 'ayecode-connect' ),
563
+    );
564
+
565
+    $defaults = array(
566
+        'type'     => 'select',
567
+        'title'    => __( 'Type', 'ayecode-connect' ),
568
+        'options'  => $options,
569
+        'default'  => '',
570
+        'desc_tip' => true,
571
+        'group'    => __( 'Shape Divider', 'ayecode-connect' ),
572
+    );
573
+
574
+    $input[ $type ] = wp_parse_args( $overwrite, $defaults );
575
+
576
+    $input[ $type . '_notice' ] = array(
577
+        'type'            => 'notice',
578
+        'desc'            => __( 'Parent element must be position `relative`', 'ayecode-connect' ),
579
+        'status'          => 'warning',
580
+        'group'           => __( 'Shape Divider', 'ayecode-connect' ),
581
+        'element_require' => '[%' . $type . '%]!=""',
582
+    );
583
+
584
+    $input[ $type . '_position' ] = wp_parse_args(
585
+        $overwrite_color,
586
+        array(
587
+            'type'            => 'select',
588
+            'title'           => __( 'Position', 'ayecode-connect' ),
589
+            'options'         => array(
590
+                'top'    => __( 'Top', 'ayecode-connect' ),
591
+                'bottom' => __( 'Bottom', 'ayecode-connect' ),
592
+            ),
593
+            'desc_tip'        => true,
594
+            'group'           => __( 'Shape Divider', 'ayecode-connect' ),
595
+            'element_require' => '[%' . $type . '%]!=""',
596
+        )
597
+    );
598
+
599
+    $options = array(
600
+                    ''            => __( 'None', 'ayecode-connect' ),
601
+                    'transparent' => __( 'Transparent', 'ayecode-connect' ),
602
+                ) + sd_aui_colors(false,false,false,false,true )
603
+               + array(
604
+                    'custom-color' => __( 'Custom Color', 'ayecode-connect' ),
605
+                );
606
+
607
+    $input[ $type . '_color' ] = wp_parse_args(
608
+        $overwrite_color,
609
+        array(
610
+            'type'            => 'select',
611
+            'title'           => __( 'Color', 'ayecode-connect' ),
612
+            'options'         => $options,
613
+            'desc_tip'        => true,
614
+            'group'           => __( 'Shape Divider', 'ayecode-connect' ),
615
+            'element_require' => '[%' . $type . '%]!=""',
616
+        )
617
+    );
618
+
619
+    $input[ $type . '_custom_color' ] = wp_parse_args(
620
+        $overwrite_color,
621
+        array(
622
+            'type'            => 'color',
623
+            'title'           => __( 'Custom color', 'ayecode-connect' ),
624
+            'placeholder'     => '',
625
+            'default'         => '#0073aa',
626
+            'desc_tip'        => true,
627
+            'group'           => __( 'Shape Divider', 'ayecode-connect' ),
628
+            'element_require' => '[%' . $type . '_color%]=="custom-color" && [%' . $type . '%]!=""',
629
+        )
630
+    );
631
+
632
+    $input[ $type . '_width' ] = wp_parse_args(
633
+        $overwrite_gradient,
634
+        array(
635
+            'type'              => 'range',
636
+            'title'             => __( 'Width', 'ayecode-connect' ),
637
+            'placeholder'       => '',
638
+            'default'           => '200',
639
+            'desc_tip'          => true,
640
+            'custom_attributes' => array(
641
+                'min' => 100,
642
+                'max' => 300,
643
+            ),
644
+            'group'             => __( 'Shape Divider', 'ayecode-connect' ),
645
+            'element_require'   => '[%' . $type . '%]!=""',
646
+        )
647
+    );
648
+
649
+    $input[ $type . '_height' ] = array(
650
+        'type'              => 'range',
651
+        'title'             => __( 'Height', 'ayecode-connect' ),
652
+        'default'           => '100',
653
+        'desc_tip'          => true,
654
+        'custom_attributes' => array(
655
+            'min' => 0,
656
+            'max' => 500,
657
+        ),
658
+        'group'             => __( 'Shape Divider', 'ayecode-connect' ),
659
+        'element_require'   => '[%' . $type . '%]!=""',
660
+    );
661
+
662
+    $requires = array(
663
+        'mountains'             => array( 'flip' ),
664
+        'drops'                 => array( 'flip', 'invert' ),
665
+        'clouds'                => array( 'flip', 'invert' ),
666
+        'zigzag'                => array(),
667
+        'pyramids'              => array( 'flip', 'invert' ),
668
+        'triangle'              => array( 'invert' ),
669
+        'triangle-asymmetrical' => array( 'flip', 'invert' ),
670
+        'tilt'                  => array( 'flip' ),
671
+        'opacity-tilt'          => array( 'flip' ),
672
+        'opacity-fan'           => array(),
673
+        'curve'                 => array( 'invert' ),
674
+        'curve-asymmetrical'    => array( 'flip', 'invert' ),
675
+        'waves'                 => array( 'flip', 'invert' ),
676
+        'wave-brush'            => array( 'flip' ),
677
+        'waves-pattern'         => array( 'flip' ),
678
+        'arrow'                 => array( 'invert' ),
679
+        'split'                 => array( 'invert' ),
680
+        'book'                  => array( 'invert' ),
681
+    );
682
+
683
+    $input[ $type . '_flip' ] = array(
684
+        'type'            => 'checkbox',
685
+        'title'           => __( 'Flip', 'ayecode-connect' ),
686
+        'default'         => '',
687
+        'desc_tip'        => true,
688
+        'group'           => __( 'Shape Divider', 'ayecode-connect' ),
689
+        'element_require' => sd_get_element_require_string( $requires, 'flip', 'sd' ),
690
+    );
691
+
692
+    $input[ $type . '_invert' ] = array(
693
+        'type'            => 'checkbox',
694
+        'title'           => __( 'Invert', 'ayecode-connect' ),
695
+        'default'         => '',
696
+        'desc_tip'        => true,
697
+        'group'           => __( 'Shape Divider', 'ayecode-connect' ),
698
+        'element_require' => sd_get_element_require_string( $requires, 'invert', 'sd' ),
699
+    );
700
+
701
+    $input[ $type . '_btf' ] = array(
702
+        'type'            => 'checkbox',
703
+        'title'           => __( 'Bring to front', 'ayecode-connect' ),
704
+        'default'         => '',
705
+        'desc_tip'        => true,
706
+        'group'           => __( 'Shape Divider', 'ayecode-connect' ),
707
+        'element_require' => '[%' . $type . '%]!=""',
708
+
709
+    );
710
+
711
+    return $input;
712 712
 }
713 713
 
714 714
 /**
@@ -721,22 +721,22 @@  discard block
 block discarded – undo
721 721
  * @return string
722 722
  */
723 723
 function sd_get_element_require_string( $args, $key, $type ) {
724
-	$output   = '';
725
-	$requires = array();
724
+    $output   = '';
725
+    $requires = array();
726 726
 
727
-	if ( ! empty( $args ) ) {
728
-		foreach ( $args as $t => $k ) {
729
-			if ( in_array( $key, $k ) ) {
730
-				$requires[] = '[%' . $type . '%]=="' . $t . '"';
731
-			}
732
-		}
727
+    if ( ! empty( $args ) ) {
728
+        foreach ( $args as $t => $k ) {
729
+            if ( in_array( $key, $k ) ) {
730
+                $requires[] = '[%' . $type . '%]=="' . $t . '"';
731
+            }
732
+        }
733 733
 
734
-		if ( ! empty( $requires ) ) {
735
-			$output = '(' . implode( ' || ', $requires ) . ')';
736
-		}
737
-	}
734
+        if ( ! empty( $requires ) ) {
735
+            $output = '(' . implode( ' || ', $requires ) . ')';
736
+        }
737
+    }
738 738
 
739
-	return $output;
739
+    return $output;
740 740
 }
741 741
 
742 742
 /**
@@ -748,41 +748,41 @@  discard block
 block discarded – undo
748 748
  * @return array
749 749
  */
750 750
 function sd_get_text_color_input( $type = 'text_color', $overwrite = array(), $has_custom = false, $emphasis = true ) {
751
-	$options = array(
752
-		           '' => __( 'None', 'ayecode-connect' ),
753
-	           ) + sd_aui_colors(false,false,false,false,false, true);
751
+    $options = array(
752
+                    '' => __( 'None', 'ayecode-connect' ),
753
+                ) + sd_aui_colors(false,false,false,false,false, true);
754 754
 
755
-	if ( $has_custom ) {
756
-		$options['custom'] = __( 'Custom color', 'ayecode-connect' );
757
-	}
755
+    if ( $has_custom ) {
756
+        $options['custom'] = __( 'Custom color', 'ayecode-connect' );
757
+    }
758 758
 
759
-	$defaults = array(
760
-		'type'     => 'select',
761
-		'title'    => __( 'Text color', 'ayecode-connect' ),
762
-		'options'  => $options,
763
-		'default'  => '',
764
-		'desc_tip' => true,
765
-		'group'    => __( 'Typography', 'ayecode-connect' ),
766
-	);
759
+    $defaults = array(
760
+        'type'     => 'select',
761
+        'title'    => __( 'Text color', 'ayecode-connect' ),
762
+        'options'  => $options,
763
+        'default'  => '',
764
+        'desc_tip' => true,
765
+        'group'    => __( 'Typography', 'ayecode-connect' ),
766
+    );
767 767
 
768
-	$input = wp_parse_args( $overwrite, $defaults );
768
+    $input = wp_parse_args( $overwrite, $defaults );
769 769
 
770
-	return $input;
770
+    return $input;
771 771
 }
772 772
 
773 773
 function sd_get_text_color_input_group( $type = 'text_color', $overwrite = array(), $overwrite_custom = array() ) {
774
-	$inputs = array();
774
+    $inputs = array();
775 775
 
776
-	if ( $overwrite !== false ) {
777
-		$inputs[ $type ] = sd_get_text_color_input( $type, $overwrite, true );
778
-	}
776
+    if ( $overwrite !== false ) {
777
+        $inputs[ $type ] = sd_get_text_color_input( $type, $overwrite, true );
778
+    }
779 779
 
780
-	if ( $overwrite_custom !== false ) {
781
-		$custom            = $type . '_custom';
782
-		$inputs[ $custom ] = sd_get_custom_color_input( $custom, $overwrite_custom, $type );
783
-	}
780
+    if ( $overwrite_custom !== false ) {
781
+        $custom            = $type . '_custom';
782
+        $inputs[ $custom ] = sd_get_custom_color_input( $custom, $overwrite_custom, $type );
783
+    }
784 784
 
785
-	return $inputs;
785
+    return $inputs;
786 786
 }
787 787
 
788 788
 /**
@@ -795,22 +795,22 @@  discard block
 block discarded – undo
795 795
  */
796 796
 function sd_get_custom_color_input( $type = 'color_custom', $overwrite = array(), $parent_type = '' ) {
797 797
 
798
-	$defaults = array(
799
-		'type'        => 'color',
800
-		'title'       => __( 'Custom color', 'ayecode-connect' ),
801
-		'default'     => '',
802
-		'placeholder' => '',
803
-		'desc_tip'    => true,
804
-		'group'       => __( 'Typography', 'ayecode-connect' ),
805
-	);
798
+    $defaults = array(
799
+        'type'        => 'color',
800
+        'title'       => __( 'Custom color', 'ayecode-connect' ),
801
+        'default'     => '',
802
+        'placeholder' => '',
803
+        'desc_tip'    => true,
804
+        'group'       => __( 'Typography', 'ayecode-connect' ),
805
+    );
806 806
 
807
-	if ( $parent_type ) {
808
-		$defaults['element_require'] = '[%' . $parent_type . '%]=="custom"';
809
-	}
807
+    if ( $parent_type ) {
808
+        $defaults['element_require'] = '[%' . $parent_type . '%]=="custom"';
809
+    }
810 810
 
811
-	$input = wp_parse_args( $overwrite, $defaults );
811
+    $input = wp_parse_args( $overwrite, $defaults );
812 812
 
813
-	return $input;
813
+    return $input;
814 814
 }
815 815
 
816 816
 /**
@@ -823,44 +823,44 @@  discard block
 block discarded – undo
823 823
  */
824 824
 function sd_get_col_input( $type = 'col', $overwrite = array() ) {
825 825
 
826
-	$device_size = '';
827
-	if ( ! empty( $overwrite['device_type'] ) ) {
828
-		if ( $overwrite['device_type'] == 'Tablet' ) {
829
-			$device_size = '-md';
830
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
831
-			$device_size = '-lg';
832
-		}
833
-	}
834
-	$options = array(
835
-		''     => __( 'Default', 'ayecode-connect' ),
836
-		'auto' => __( 'auto', 'ayecode-connect' ),
837
-		'1'    => '1/12',
838
-		'2'    => '2/12',
839
-		'3'    => '3/12',
840
-		'4'    => '4/12',
841
-		'5'    => '5/12',
842
-		'6'    => '6/12',
843
-		'7'    => '7/12',
844
-		'8'    => '8/12',
845
-		'9'    => '9/12',
846
-		'10'   => '10/12',
847
-		'11'   => '11/12',
848
-		'12'   => '12/12',
849
-	);
850
-
851
-	$defaults = array(
852
-		'type'            => 'select',
853
-		'title'           => __( 'Column width', 'ayecode-connect' ),
854
-		'options'         => $options,
855
-		'default'         => '',
856
-		'desc_tip'        => true,
857
-		'group'           => __( 'Container', 'ayecode-connect' ),
858
-		'element_require' => '[%container%]=="col"',
859
-	);
860
-
861
-	$input = wp_parse_args( $overwrite, $defaults );
862
-
863
-	return $input;
826
+    $device_size = '';
827
+    if ( ! empty( $overwrite['device_type'] ) ) {
828
+        if ( $overwrite['device_type'] == 'Tablet' ) {
829
+            $device_size = '-md';
830
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
831
+            $device_size = '-lg';
832
+        }
833
+    }
834
+    $options = array(
835
+        ''     => __( 'Default', 'ayecode-connect' ),
836
+        'auto' => __( 'auto', 'ayecode-connect' ),
837
+        '1'    => '1/12',
838
+        '2'    => '2/12',
839
+        '3'    => '3/12',
840
+        '4'    => '4/12',
841
+        '5'    => '5/12',
842
+        '6'    => '6/12',
843
+        '7'    => '7/12',
844
+        '8'    => '8/12',
845
+        '9'    => '9/12',
846
+        '10'   => '10/12',
847
+        '11'   => '11/12',
848
+        '12'   => '12/12',
849
+    );
850
+
851
+    $defaults = array(
852
+        'type'            => 'select',
853
+        'title'           => __( 'Column width', 'ayecode-connect' ),
854
+        'options'         => $options,
855
+        'default'         => '',
856
+        'desc_tip'        => true,
857
+        'group'           => __( 'Container', 'ayecode-connect' ),
858
+        'element_require' => '[%container%]=="col"',
859
+    );
860
+
861
+    $input = wp_parse_args( $overwrite, $defaults );
862
+
863
+    return $input;
864 864
 }
865 865
 
866 866
 /**
@@ -873,37 +873,37 @@  discard block
 block discarded – undo
873 873
  */
874 874
 function sd_get_row_cols_input( $type = 'row_cols', $overwrite = array() ) {
875 875
 
876
-	$device_size = '';
877
-	if ( ! empty( $overwrite['device_type'] ) ) {
878
-		if ( $overwrite['device_type'] == 'Tablet' ) {
879
-			$device_size = '-md';
880
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
881
-			$device_size = '-lg';
882
-		}
883
-	}
884
-	$options = array(
885
-		''  => __( 'auto', 'ayecode-connect' ),
886
-		'1' => '1',
887
-		'2' => '2',
888
-		'3' => '3',
889
-		'4' => '4',
890
-		'5' => '5',
891
-		'6' => '6',
892
-	);
893
-
894
-	$defaults = array(
895
-		'type'            => 'select',
896
-		'title'           => __( 'Row columns', 'ayecode-connect' ),
897
-		'options'         => $options,
898
-		'default'         => '',
899
-		'desc_tip'        => true,
900
-		'group'           => __( 'Container', 'ayecode-connect' ),
901
-		'element_require' => '[%container%]=="row"',
902
-	);
903
-
904
-	$input = wp_parse_args( $overwrite, $defaults );
905
-
906
-	return $input;
876
+    $device_size = '';
877
+    if ( ! empty( $overwrite['device_type'] ) ) {
878
+        if ( $overwrite['device_type'] == 'Tablet' ) {
879
+            $device_size = '-md';
880
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
881
+            $device_size = '-lg';
882
+        }
883
+    }
884
+    $options = array(
885
+        ''  => __( 'auto', 'ayecode-connect' ),
886
+        '1' => '1',
887
+        '2' => '2',
888
+        '3' => '3',
889
+        '4' => '4',
890
+        '5' => '5',
891
+        '6' => '6',
892
+    );
893
+
894
+    $defaults = array(
895
+        'type'            => 'select',
896
+        'title'           => __( 'Row columns', 'ayecode-connect' ),
897
+        'options'         => $options,
898
+        'default'         => '',
899
+        'desc_tip'        => true,
900
+        'group'           => __( 'Container', 'ayecode-connect' ),
901
+        'element_require' => '[%container%]=="row"',
902
+    );
903
+
904
+    $input = wp_parse_args( $overwrite, $defaults );
905
+
906
+    return $input;
907 907
 }
908 908
 
909 909
 /**
@@ -916,33 +916,33 @@  discard block
 block discarded – undo
916 916
  */
917 917
 function sd_get_text_align_input( $type = 'text_align', $overwrite = array() ) {
918 918
 
919
-	$device_size = '';
920
-	if ( ! empty( $overwrite['device_type'] ) ) {
921
-		if ( $overwrite['device_type'] == 'Tablet' ) {
922
-			$device_size = '-md';
923
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
924
-			$device_size = '-lg';
925
-		}
926
-	}
927
-	$options = array(
928
-		''                                => __( 'Default', 'ayecode-connect' ),
929
-		'text' . $device_size . '-left'   => __( 'Left', 'ayecode-connect' ),
930
-		'text' . $device_size . '-right'  => __( 'Right', 'ayecode-connect' ),
931
-		'text' . $device_size . '-center' => __( 'Center', 'ayecode-connect' ),
932
-	);
919
+    $device_size = '';
920
+    if ( ! empty( $overwrite['device_type'] ) ) {
921
+        if ( $overwrite['device_type'] == 'Tablet' ) {
922
+            $device_size = '-md';
923
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
924
+            $device_size = '-lg';
925
+        }
926
+    }
927
+    $options = array(
928
+        ''                                => __( 'Default', 'ayecode-connect' ),
929
+        'text' . $device_size . '-left'   => __( 'Left', 'ayecode-connect' ),
930
+        'text' . $device_size . '-right'  => __( 'Right', 'ayecode-connect' ),
931
+        'text' . $device_size . '-center' => __( 'Center', 'ayecode-connect' ),
932
+    );
933 933
 
934
-	$defaults = array(
935
-		'type'     => 'select',
936
-		'title'    => __( 'Text align', 'ayecode-connect' ),
937
-		'options'  => $options,
938
-		'default'  => '',
939
-		'desc_tip' => true,
940
-		'group'    => __( 'Typography', 'ayecode-connect' ),
941
-	);
934
+    $defaults = array(
935
+        'type'     => 'select',
936
+        'title'    => __( 'Text align', 'ayecode-connect' ),
937
+        'options'  => $options,
938
+        'default'  => '',
939
+        'desc_tip' => true,
940
+        'group'    => __( 'Typography', 'ayecode-connect' ),
941
+    );
942 942
 
943
-	$input = wp_parse_args( $overwrite, $defaults );
943
+    $input = wp_parse_args( $overwrite, $defaults );
944 944
 
945
-	return $input;
945
+    return $input;
946 946
 }
947 947
 
948 948
 /**
@@ -955,39 +955,39 @@  discard block
 block discarded – undo
955 955
  */
956 956
 function sd_get_display_input( $type = 'display', $overwrite = array() ) {
957 957
 
958
-	$device_size = '';
959
-	if ( ! empty( $overwrite['device_type'] ) ) {
960
-		if ( $overwrite['device_type'] == 'Tablet' ) {
961
-			$device_size = '-md';
962
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
963
-			$device_size = '-lg';
964
-		}
965
-	}
966
-	$options = array(
967
-		''                                   => __( 'Default', 'ayecode-connect' ),
968
-		'd' . $device_size . '-none'         => 'none',
969
-		'd' . $device_size . '-inline'       => 'inline',
970
-		'd' . $device_size . '-inline-block' => 'inline-block',
971
-		'd' . $device_size . '-block'        => 'block',
972
-		'd' . $device_size . '-table'        => 'table',
973
-		'd' . $device_size . '-table-cell'   => 'table-cell',
974
-		'd' . $device_size . '-table-row'    => 'table-row',
975
-		'd' . $device_size . '-flex'         => 'flex',
976
-		'd' . $device_size . '-inline-flex'  => 'inline-flex',
977
-	);
978
-
979
-	$defaults = array(
980
-		'type'     => 'select',
981
-		'title'    => __( 'Display', 'ayecode-connect' ),
982
-		'options'  => $options,
983
-		'default'  => '',
984
-		'desc_tip' => true,
985
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
986
-	);
987
-
988
-	$input = wp_parse_args( $overwrite, $defaults );
989
-
990
-	return $input;
958
+    $device_size = '';
959
+    if ( ! empty( $overwrite['device_type'] ) ) {
960
+        if ( $overwrite['device_type'] == 'Tablet' ) {
961
+            $device_size = '-md';
962
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
963
+            $device_size = '-lg';
964
+        }
965
+    }
966
+    $options = array(
967
+        ''                                   => __( 'Default', 'ayecode-connect' ),
968
+        'd' . $device_size . '-none'         => 'none',
969
+        'd' . $device_size . '-inline'       => 'inline',
970
+        'd' . $device_size . '-inline-block' => 'inline-block',
971
+        'd' . $device_size . '-block'        => 'block',
972
+        'd' . $device_size . '-table'        => 'table',
973
+        'd' . $device_size . '-table-cell'   => 'table-cell',
974
+        'd' . $device_size . '-table-row'    => 'table-row',
975
+        'd' . $device_size . '-flex'         => 'flex',
976
+        'd' . $device_size . '-inline-flex'  => 'inline-flex',
977
+    );
978
+
979
+    $defaults = array(
980
+        'type'     => 'select',
981
+        'title'    => __( 'Display', 'ayecode-connect' ),
982
+        'options'  => $options,
983
+        'default'  => '',
984
+        'desc_tip' => true,
985
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
986
+    );
987
+
988
+    $input = wp_parse_args( $overwrite, $defaults );
989
+
990
+    return $input;
991 991
 }
992 992
 
993 993
 /**
@@ -1000,17 +1000,17 @@  discard block
 block discarded – undo
1000 1000
  */
1001 1001
 function sd_get_text_justify_input( $type = 'text_justify', $overwrite = array() ) {
1002 1002
 
1003
-	$defaults = array(
1004
-		'type'     => 'checkbox',
1005
-		'title'    => __( 'Text justify', 'ayecode-connect' ),
1006
-		'default'  => '',
1007
-		'desc_tip' => true,
1008
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1009
-	);
1003
+    $defaults = array(
1004
+        'type'     => 'checkbox',
1005
+        'title'    => __( 'Text justify', 'ayecode-connect' ),
1006
+        'default'  => '',
1007
+        'desc_tip' => true,
1008
+        'group'    => __( 'Typography', 'ayecode-connect' ),
1009
+    );
1010 1010
 
1011
-	$input = wp_parse_args( $overwrite, $defaults );
1011
+    $input = wp_parse_args( $overwrite, $defaults );
1012 1012
 
1013
-	return $input;
1013
+    return $input;
1014 1014
 }
1015 1015
 
1016 1016
 /**
@@ -1023,114 +1023,114 @@  discard block
 block discarded – undo
1023 1023
  * @return array
1024 1024
  */
1025 1025
 function sd_aui_colors( $include_branding = false, $include_outlines = false, $outline_button_only_text = false, $include_translucent = false, $include_subtle = false, $include_emphasis = false ) {
1026
-	$theme_colors = array();
1027
-
1028
-	$theme_colors['primary']   = __( 'Primary', 'ayecode-connect' );
1029
-	$theme_colors['secondary'] = __( 'Secondary', 'ayecode-connect' );
1030
-	$theme_colors['success']   = __( 'Success', 'ayecode-connect' );
1031
-	$theme_colors['danger']    = __( 'Danger', 'ayecode-connect' );
1032
-	$theme_colors['warning']   = __( 'Warning', 'ayecode-connect' );
1033
-	$theme_colors['info']      = __( 'Info', 'ayecode-connect' );
1034
-	$theme_colors['light']     = __( 'Light', 'ayecode-connect' );
1035
-	$theme_colors['dark']      = __( 'Dark', 'ayecode-connect' );
1036
-	$theme_colors['black']     = __( 'Black', 'ayecode-connect' );
1037
-	$theme_colors['white']     = __( 'White', 'ayecode-connect' );
1038
-	$theme_colors['purple']    = __( 'Purple', 'ayecode-connect' );
1039
-	$theme_colors['salmon']    = __( 'Salmon', 'ayecode-connect' );
1040
-	$theme_colors['cyan']      = __( 'Cyan', 'ayecode-connect' );
1041
-	$theme_colors['gray']      = __( 'Gray', 'ayecode-connect' );
1042
-	$theme_colors['muted']     = __( 'Muted', 'ayecode-connect' );
1043
-	$theme_colors['gray-dark'] = __( 'Gray dark', 'ayecode-connect' );
1044
-	$theme_colors['indigo']    = __( 'Indigo', 'ayecode-connect' );
1045
-	$theme_colors['orange']    = __( 'Orange', 'ayecode-connect' );
1046
-	$theme_colors['body']      = __( 'Body', 'ayecode-connect' );
1047
-
1048
-
1049
-	// for bg and borders
1050
-	if ( $include_subtle ) {
1051
-		$theme_colors['primary-subtle']   = __( 'Primary Subtle', 'ayecode-connect' );
1052
-		$theme_colors['primary-subtle']   = __( 'Primary Subtle', 'ayecode-connect' );
1053
-		$theme_colors['secondary-subtle'] = __( 'Secondary Subtle', 'ayecode-connect' );
1054
-		$theme_colors['success-subtle']   = __( 'Success Subtle', 'ayecode-connect' );
1055
-		$theme_colors['danger-subtle']    = __( 'Danger Subtle', 'ayecode-connect' );
1056
-		$theme_colors['warning-subtle']   = __( 'Warning Subtle', 'ayecode-connect' );
1057
-		$theme_colors['info-subtle']      = __( 'Info Subtle', 'ayecode-connect' );
1058
-		$theme_colors['light-subtle']     = __( 'Light Subtle', 'ayecode-connect' );
1059
-		$theme_colors['dark-subtle']      = __( 'Dark Subtle', 'ayecode-connect' );
1060
-		$theme_colors['purple-subtle']    = __( 'Purple Subtle', 'ayecode-connect' );
1061
-		$theme_colors['salmon-subtle']    = __( 'Salmon Subtle', 'ayecode-connect' );
1062
-		$theme_colors['cyan-subtle']      = __( 'Cyan Subtle', 'ayecode-connect' );
1063
-		$theme_colors['gray-subtle']      = __( 'Gray Subtle', 'ayecode-connect' );
1064
-		$theme_colors['gray-dark-subtle'] = __( 'Gray dark Subtle', 'ayecode-connect' );
1065
-		$theme_colors['indigo-subtle']    = __( 'Indigo Subtle', 'ayecode-connect' );
1066
-		$theme_colors['orange-subtle']    = __( 'Orange Subtle', 'ayecode-connect' );
1067
-	}
1068
-
1069
-	// for texts
1070
-	if ($include_emphasis) {
1071
-		$theme_colors['primary-emphasis']   = __( 'Primary Emphasis', 'ayecode-connect' );
1072
-		$theme_colors['secondary-emphasis'] = __( 'Secondary Emphasis', 'ayecode-connect' );
1073
-		$theme_colors['success-emphasis']   = __( 'Success Emphasis', 'ayecode-connect' );
1074
-		$theme_colors['danger-emphasis']    = __( 'Danger Emphasis', 'ayecode-connect' );
1075
-		$theme_colors['warning-emphasis']   = __( 'Warning Emphasis', 'ayecode-connect' );
1076
-		$theme_colors['info-emphasis']      = __( 'Info Emphasis', 'ayecode-connect' );
1077
-		$theme_colors['light-emphasis']     = __( 'Light Emphasis', 'ayecode-connect' );
1078
-		$theme_colors['dark-emphasis']      = __( 'Dark Emphasis', 'ayecode-connect' );
1079
-		$theme_colors['purple-emphasis']    = __( 'Purple Emphasis', 'ayecode-connect' );
1080
-		$theme_colors['salmon-emphasis']    = __( 'Salmon Emphasis', 'ayecode-connect' );
1081
-		$theme_colors['cyan-emphasis']      = __( 'Cyan Emphasis', 'ayecode-connect' );
1082
-		$theme_colors['gray-emphasis']      = __( 'Gray Emphasis', 'ayecode-connect' );
1083
-		$theme_colors['muted-emphasis']     = __( 'Muted Emphasis', 'ayecode-connect' );
1084
-		$theme_colors['gray-dark-emphasis'] = __( 'Gray dark Emphasis', 'ayecode-connect' );
1085
-		$theme_colors['indigo-emphasis']    = __( 'Indigo Emphasis', 'ayecode-connect' );
1086
-		$theme_colors['orange-emphasis']    = __( 'Orange Emphasis', 'ayecode-connect' );
1087
-	}
1088
-
1089
-	if ( $include_outlines ) {
1090
-		$button_only                       = $outline_button_only_text ? ' ' . __( '(button only)', 'ayecode-connect' ) : '';
1091
-		$theme_colors['outline-primary']   = __( 'Primary outline', 'ayecode-connect' ) . $button_only;
1092
-		$theme_colors['outline-secondary'] = __( 'Secondary outline', 'ayecode-connect' ) . $button_only;
1093
-		$theme_colors['outline-success']   = __( 'Success outline', 'ayecode-connect' ) . $button_only;
1094
-		$theme_colors['outline-danger']    = __( 'Danger outline', 'ayecode-connect' ) . $button_only;
1095
-		$theme_colors['outline-warning']   = __( 'Warning outline', 'ayecode-connect' ) . $button_only;
1096
-		$theme_colors['outline-info']      = __( 'Info outline', 'ayecode-connect' ) . $button_only;
1097
-		$theme_colors['outline-light']     = __( 'Light outline', 'ayecode-connect' ) . $button_only;
1098
-		$theme_colors['outline-dark']      = __( 'Dark outline', 'ayecode-connect' ) . $button_only;
1099
-		$theme_colors['outline-white']     = __( 'White outline', 'ayecode-connect' ) . $button_only;
1100
-		$theme_colors['outline-purple']    = __( 'Purple outline', 'ayecode-connect' ) . $button_only;
1101
-		$theme_colors['outline-salmon']    = __( 'Salmon outline', 'ayecode-connect' ) . $button_only;
1102
-		$theme_colors['outline-cyan']      = __( 'Cyan outline', 'ayecode-connect' ) . $button_only;
1103
-		$theme_colors['outline-gray']      = __( 'Gray outline', 'ayecode-connect' ) . $button_only;
1104
-		$theme_colors['outline-gray-dark'] = __( 'Gray dark outline', 'ayecode-connect' ) . $button_only;
1105
-		$theme_colors['outline-indigo']    = __( 'Indigo outline', 'ayecode-connect' ) . $button_only;
1106
-		$theme_colors['outline-orange']    = __( 'Orange outline', 'ayecode-connect' ) . $button_only;
1107
-	}
1108
-
1109
-	if ( $include_branding ) {
1110
-		$theme_colors = $theme_colors + sd_aui_branding_colors();
1111
-	}
1112
-
1113
-	if ( $include_translucent ) {
1114
-		$button_only                           = $outline_button_only_text ? ' ' . __( '(button only)', 'ayecode-connect' ) : '';
1115
-		$theme_colors['translucent-primary']   = __( 'Primary translucent', 'ayecode-connect' ) . $button_only;
1116
-		$theme_colors['translucent-secondary'] = __( 'Secondary translucent', 'ayecode-connect' ) . $button_only;
1117
-		$theme_colors['translucent-success']   = __( 'Success translucent', 'ayecode-connect' ) . $button_only;
1118
-		$theme_colors['translucent-danger']    = __( 'Danger translucent', 'ayecode-connect' ) . $button_only;
1119
-		$theme_colors['translucent-warning']   = __( 'Warning translucent', 'ayecode-connect' ) . $button_only;
1120
-		$theme_colors['translucent-info']      = __( 'Info translucent', 'ayecode-connect' ) . $button_only;
1121
-		$theme_colors['translucent-light']     = __( 'Light translucent', 'ayecode-connect' ) . $button_only;
1122
-		$theme_colors['translucent-dark']      = __( 'Dark translucent', 'ayecode-connect' ) . $button_only;
1123
-		$theme_colors['translucent-white']     = __( 'White translucent', 'ayecode-connect' ) . $button_only;
1124
-		$theme_colors['translucent-purple']    = __( 'Purple translucent', 'ayecode-connect' ) . $button_only;
1125
-		$theme_colors['translucent-salmon']    = __( 'Salmon translucent', 'ayecode-connect' ) . $button_only;
1126
-		$theme_colors['translucent-cyan']      = __( 'Cyan translucent', 'ayecode-connect' ) . $button_only;
1127
-		$theme_colors['translucent-gray']      = __( 'Gray translucent', 'ayecode-connect' ) . $button_only;
1128
-		$theme_colors['translucent-gray-dark'] = __( 'Gray dark translucent', 'ayecode-connect' ) . $button_only;
1129
-		$theme_colors['translucent-indigo']    = __( 'Indigo translucent', 'ayecode-connect' ) . $button_only;
1130
-		$theme_colors['translucent-orange']    = __( 'Orange translucent', 'ayecode-connect' ) . $button_only;
1131
-	}
1132
-
1133
-	return apply_filters( 'sd_aui_colors', $theme_colors, $include_outlines, $include_branding );
1026
+    $theme_colors = array();
1027
+
1028
+    $theme_colors['primary']   = __( 'Primary', 'ayecode-connect' );
1029
+    $theme_colors['secondary'] = __( 'Secondary', 'ayecode-connect' );
1030
+    $theme_colors['success']   = __( 'Success', 'ayecode-connect' );
1031
+    $theme_colors['danger']    = __( 'Danger', 'ayecode-connect' );
1032
+    $theme_colors['warning']   = __( 'Warning', 'ayecode-connect' );
1033
+    $theme_colors['info']      = __( 'Info', 'ayecode-connect' );
1034
+    $theme_colors['light']     = __( 'Light', 'ayecode-connect' );
1035
+    $theme_colors['dark']      = __( 'Dark', 'ayecode-connect' );
1036
+    $theme_colors['black']     = __( 'Black', 'ayecode-connect' );
1037
+    $theme_colors['white']     = __( 'White', 'ayecode-connect' );
1038
+    $theme_colors['purple']    = __( 'Purple', 'ayecode-connect' );
1039
+    $theme_colors['salmon']    = __( 'Salmon', 'ayecode-connect' );
1040
+    $theme_colors['cyan']      = __( 'Cyan', 'ayecode-connect' );
1041
+    $theme_colors['gray']      = __( 'Gray', 'ayecode-connect' );
1042
+    $theme_colors['muted']     = __( 'Muted', 'ayecode-connect' );
1043
+    $theme_colors['gray-dark'] = __( 'Gray dark', 'ayecode-connect' );
1044
+    $theme_colors['indigo']    = __( 'Indigo', 'ayecode-connect' );
1045
+    $theme_colors['orange']    = __( 'Orange', 'ayecode-connect' );
1046
+    $theme_colors['body']      = __( 'Body', 'ayecode-connect' );
1047
+
1048
+
1049
+    // for bg and borders
1050
+    if ( $include_subtle ) {
1051
+        $theme_colors['primary-subtle']   = __( 'Primary Subtle', 'ayecode-connect' );
1052
+        $theme_colors['primary-subtle']   = __( 'Primary Subtle', 'ayecode-connect' );
1053
+        $theme_colors['secondary-subtle'] = __( 'Secondary Subtle', 'ayecode-connect' );
1054
+        $theme_colors['success-subtle']   = __( 'Success Subtle', 'ayecode-connect' );
1055
+        $theme_colors['danger-subtle']    = __( 'Danger Subtle', 'ayecode-connect' );
1056
+        $theme_colors['warning-subtle']   = __( 'Warning Subtle', 'ayecode-connect' );
1057
+        $theme_colors['info-subtle']      = __( 'Info Subtle', 'ayecode-connect' );
1058
+        $theme_colors['light-subtle']     = __( 'Light Subtle', 'ayecode-connect' );
1059
+        $theme_colors['dark-subtle']      = __( 'Dark Subtle', 'ayecode-connect' );
1060
+        $theme_colors['purple-subtle']    = __( 'Purple Subtle', 'ayecode-connect' );
1061
+        $theme_colors['salmon-subtle']    = __( 'Salmon Subtle', 'ayecode-connect' );
1062
+        $theme_colors['cyan-subtle']      = __( 'Cyan Subtle', 'ayecode-connect' );
1063
+        $theme_colors['gray-subtle']      = __( 'Gray Subtle', 'ayecode-connect' );
1064
+        $theme_colors['gray-dark-subtle'] = __( 'Gray dark Subtle', 'ayecode-connect' );
1065
+        $theme_colors['indigo-subtle']    = __( 'Indigo Subtle', 'ayecode-connect' );
1066
+        $theme_colors['orange-subtle']    = __( 'Orange Subtle', 'ayecode-connect' );
1067
+    }
1068
+
1069
+    // for texts
1070
+    if ($include_emphasis) {
1071
+        $theme_colors['primary-emphasis']   = __( 'Primary Emphasis', 'ayecode-connect' );
1072
+        $theme_colors['secondary-emphasis'] = __( 'Secondary Emphasis', 'ayecode-connect' );
1073
+        $theme_colors['success-emphasis']   = __( 'Success Emphasis', 'ayecode-connect' );
1074
+        $theme_colors['danger-emphasis']    = __( 'Danger Emphasis', 'ayecode-connect' );
1075
+        $theme_colors['warning-emphasis']   = __( 'Warning Emphasis', 'ayecode-connect' );
1076
+        $theme_colors['info-emphasis']      = __( 'Info Emphasis', 'ayecode-connect' );
1077
+        $theme_colors['light-emphasis']     = __( 'Light Emphasis', 'ayecode-connect' );
1078
+        $theme_colors['dark-emphasis']      = __( 'Dark Emphasis', 'ayecode-connect' );
1079
+        $theme_colors['purple-emphasis']    = __( 'Purple Emphasis', 'ayecode-connect' );
1080
+        $theme_colors['salmon-emphasis']    = __( 'Salmon Emphasis', 'ayecode-connect' );
1081
+        $theme_colors['cyan-emphasis']      = __( 'Cyan Emphasis', 'ayecode-connect' );
1082
+        $theme_colors['gray-emphasis']      = __( 'Gray Emphasis', 'ayecode-connect' );
1083
+        $theme_colors['muted-emphasis']     = __( 'Muted Emphasis', 'ayecode-connect' );
1084
+        $theme_colors['gray-dark-emphasis'] = __( 'Gray dark Emphasis', 'ayecode-connect' );
1085
+        $theme_colors['indigo-emphasis']    = __( 'Indigo Emphasis', 'ayecode-connect' );
1086
+        $theme_colors['orange-emphasis']    = __( 'Orange Emphasis', 'ayecode-connect' );
1087
+    }
1088
+
1089
+    if ( $include_outlines ) {
1090
+        $button_only                       = $outline_button_only_text ? ' ' . __( '(button only)', 'ayecode-connect' ) : '';
1091
+        $theme_colors['outline-primary']   = __( 'Primary outline', 'ayecode-connect' ) . $button_only;
1092
+        $theme_colors['outline-secondary'] = __( 'Secondary outline', 'ayecode-connect' ) . $button_only;
1093
+        $theme_colors['outline-success']   = __( 'Success outline', 'ayecode-connect' ) . $button_only;
1094
+        $theme_colors['outline-danger']    = __( 'Danger outline', 'ayecode-connect' ) . $button_only;
1095
+        $theme_colors['outline-warning']   = __( 'Warning outline', 'ayecode-connect' ) . $button_only;
1096
+        $theme_colors['outline-info']      = __( 'Info outline', 'ayecode-connect' ) . $button_only;
1097
+        $theme_colors['outline-light']     = __( 'Light outline', 'ayecode-connect' ) . $button_only;
1098
+        $theme_colors['outline-dark']      = __( 'Dark outline', 'ayecode-connect' ) . $button_only;
1099
+        $theme_colors['outline-white']     = __( 'White outline', 'ayecode-connect' ) . $button_only;
1100
+        $theme_colors['outline-purple']    = __( 'Purple outline', 'ayecode-connect' ) . $button_only;
1101
+        $theme_colors['outline-salmon']    = __( 'Salmon outline', 'ayecode-connect' ) . $button_only;
1102
+        $theme_colors['outline-cyan']      = __( 'Cyan outline', 'ayecode-connect' ) . $button_only;
1103
+        $theme_colors['outline-gray']      = __( 'Gray outline', 'ayecode-connect' ) . $button_only;
1104
+        $theme_colors['outline-gray-dark'] = __( 'Gray dark outline', 'ayecode-connect' ) . $button_only;
1105
+        $theme_colors['outline-indigo']    = __( 'Indigo outline', 'ayecode-connect' ) . $button_only;
1106
+        $theme_colors['outline-orange']    = __( 'Orange outline', 'ayecode-connect' ) . $button_only;
1107
+    }
1108
+
1109
+    if ( $include_branding ) {
1110
+        $theme_colors = $theme_colors + sd_aui_branding_colors();
1111
+    }
1112
+
1113
+    if ( $include_translucent ) {
1114
+        $button_only                           = $outline_button_only_text ? ' ' . __( '(button only)', 'ayecode-connect' ) : '';
1115
+        $theme_colors['translucent-primary']   = __( 'Primary translucent', 'ayecode-connect' ) . $button_only;
1116
+        $theme_colors['translucent-secondary'] = __( 'Secondary translucent', 'ayecode-connect' ) . $button_only;
1117
+        $theme_colors['translucent-success']   = __( 'Success translucent', 'ayecode-connect' ) . $button_only;
1118
+        $theme_colors['translucent-danger']    = __( 'Danger translucent', 'ayecode-connect' ) . $button_only;
1119
+        $theme_colors['translucent-warning']   = __( 'Warning translucent', 'ayecode-connect' ) . $button_only;
1120
+        $theme_colors['translucent-info']      = __( 'Info translucent', 'ayecode-connect' ) . $button_only;
1121
+        $theme_colors['translucent-light']     = __( 'Light translucent', 'ayecode-connect' ) . $button_only;
1122
+        $theme_colors['translucent-dark']      = __( 'Dark translucent', 'ayecode-connect' ) . $button_only;
1123
+        $theme_colors['translucent-white']     = __( 'White translucent', 'ayecode-connect' ) . $button_only;
1124
+        $theme_colors['translucent-purple']    = __( 'Purple translucent', 'ayecode-connect' ) . $button_only;
1125
+        $theme_colors['translucent-salmon']    = __( 'Salmon translucent', 'ayecode-connect' ) . $button_only;
1126
+        $theme_colors['translucent-cyan']      = __( 'Cyan translucent', 'ayecode-connect' ) . $button_only;
1127
+        $theme_colors['translucent-gray']      = __( 'Gray translucent', 'ayecode-connect' ) . $button_only;
1128
+        $theme_colors['translucent-gray-dark'] = __( 'Gray dark translucent', 'ayecode-connect' ) . $button_only;
1129
+        $theme_colors['translucent-indigo']    = __( 'Indigo translucent', 'ayecode-connect' ) . $button_only;
1130
+        $theme_colors['translucent-orange']    = __( 'Orange translucent', 'ayecode-connect' ) . $button_only;
1131
+    }
1132
+
1133
+    return apply_filters( 'sd_aui_colors', $theme_colors, $include_outlines, $include_branding );
1134 1134
 }
1135 1135
 
1136 1136
 /**
@@ -1139,19 +1139,19 @@  discard block
 block discarded – undo
1139 1139
  * @return array
1140 1140
  */
1141 1141
 function sd_aui_branding_colors() {
1142
-	return array(
1143
-		'facebook'  => __( 'Facebook', 'ayecode-connect' ),
1144
-		'twitter'   => __( 'Twitter', 'ayecode-connect' ),
1145
-		'instagram' => __( 'Instagram', 'ayecode-connect' ),
1146
-		'linkedin'  => __( 'Linkedin', 'ayecode-connect' ),
1147
-		'flickr'    => __( 'Flickr', 'ayecode-connect' ),
1148
-		'github'    => __( 'GitHub', 'ayecode-connect' ),
1149
-		'youtube'   => __( 'YouTube', 'ayecode-connect' ),
1150
-		'wordpress' => __( 'WordPress', 'ayecode-connect' ),
1151
-		'google'    => __( 'Google', 'ayecode-connect' ),
1152
-		'yahoo'     => __( 'Yahoo', 'ayecode-connect' ),
1153
-		'vkontakte' => __( 'Vkontakte', 'ayecode-connect' ),
1154
-	);
1142
+    return array(
1143
+        'facebook'  => __( 'Facebook', 'ayecode-connect' ),
1144
+        'twitter'   => __( 'Twitter', 'ayecode-connect' ),
1145
+        'instagram' => __( 'Instagram', 'ayecode-connect' ),
1146
+        'linkedin'  => __( 'Linkedin', 'ayecode-connect' ),
1147
+        'flickr'    => __( 'Flickr', 'ayecode-connect' ),
1148
+        'github'    => __( 'GitHub', 'ayecode-connect' ),
1149
+        'youtube'   => __( 'YouTube', 'ayecode-connect' ),
1150
+        'wordpress' => __( 'WordPress', 'ayecode-connect' ),
1151
+        'google'    => __( 'Google', 'ayecode-connect' ),
1152
+        'yahoo'     => __( 'Yahoo', 'ayecode-connect' ),
1153
+        'vkontakte' => __( 'Vkontakte', 'ayecode-connect' ),
1154
+    );
1155 1155
 }
1156 1156
 
1157 1157
 
@@ -1165,38 +1165,38 @@  discard block
 block discarded – undo
1165 1165
  */
1166 1166
 function sd_get_container_class_input( $type = 'container', $overwrite = array() ) {
1167 1167
 
1168
-	$options = array(
1169
-		'container'       => __( 'container (default)', 'ayecode-connect' ),
1170
-		'container-sm'    => 'container-sm',
1171
-		'container-md'    => 'container-md',
1172
-		'container-lg'    => 'container-lg',
1173
-		'container-xl'    => 'container-xl',
1174
-		'container-xxl'   => 'container-xxl',
1175
-		'container-fluid' => 'container-fluid',
1176
-		'row'             => 'row',
1177
-		'col'             => 'col',
1178
-		'card'            => 'card',
1179
-		'card-header'     => 'card-header',
1180
-		'card-img-top'    => 'card-img-top',
1181
-		'card-body'       => 'card-body',
1182
-		'card-footer'     => 'card-footer',
1183
-		'list-group'      => 'list-group',
1184
-		'list-group-item' => 'list-group-item',
1185
-		''                => __( 'no container class', 'ayecode-connect' ),
1186
-	);
1187
-
1188
-	$defaults = array(
1189
-		'type'     => 'select',
1190
-		'title'    => __( 'Type', 'ayecode-connect' ),
1191
-		'options'  => $options,
1192
-		'default'  => '',
1193
-		'desc_tip' => true,
1194
-		'group'    => __( 'Container', 'ayecode-connect' ),
1195
-	);
1196
-
1197
-	$input = wp_parse_args( $overwrite, $defaults );
1198
-
1199
-	return $input;
1168
+    $options = array(
1169
+        'container'       => __( 'container (default)', 'ayecode-connect' ),
1170
+        'container-sm'    => 'container-sm',
1171
+        'container-md'    => 'container-md',
1172
+        'container-lg'    => 'container-lg',
1173
+        'container-xl'    => 'container-xl',
1174
+        'container-xxl'   => 'container-xxl',
1175
+        'container-fluid' => 'container-fluid',
1176
+        'row'             => 'row',
1177
+        'col'             => 'col',
1178
+        'card'            => 'card',
1179
+        'card-header'     => 'card-header',
1180
+        'card-img-top'    => 'card-img-top',
1181
+        'card-body'       => 'card-body',
1182
+        'card-footer'     => 'card-footer',
1183
+        'list-group'      => 'list-group',
1184
+        'list-group-item' => 'list-group-item',
1185
+        ''                => __( 'no container class', 'ayecode-connect' ),
1186
+    );
1187
+
1188
+    $defaults = array(
1189
+        'type'     => 'select',
1190
+        'title'    => __( 'Type', 'ayecode-connect' ),
1191
+        'options'  => $options,
1192
+        'default'  => '',
1193
+        'desc_tip' => true,
1194
+        'group'    => __( 'Container', 'ayecode-connect' ),
1195
+    );
1196
+
1197
+    $input = wp_parse_args( $overwrite, $defaults );
1198
+
1199
+    return $input;
1200 1200
 }
1201 1201
 
1202 1202
 /**
@@ -1209,30 +1209,30 @@  discard block
 block discarded – undo
1209 1209
  */
1210 1210
 function sd_get_position_class_input( $type = 'position', $overwrite = array() ) {
1211 1211
 
1212
-	$options = array(
1213
-		''                  => __( 'Default', 'ayecode-connect' ),
1214
-		'position-static'   => 'static',
1215
-		'position-relative' => 'relative',
1216
-		'position-absolute' => 'absolute',
1217
-		'position-fixed'    => 'fixed',
1218
-		'position-sticky'   => 'sticky',
1219
-		'fixed-top'         => 'fixed-top',
1220
-		'fixed-bottom'      => 'fixed-bottom',
1221
-		'sticky-top'        => 'sticky-top',
1222
-	);
1212
+    $options = array(
1213
+        ''                  => __( 'Default', 'ayecode-connect' ),
1214
+        'position-static'   => 'static',
1215
+        'position-relative' => 'relative',
1216
+        'position-absolute' => 'absolute',
1217
+        'position-fixed'    => 'fixed',
1218
+        'position-sticky'   => 'sticky',
1219
+        'fixed-top'         => 'fixed-top',
1220
+        'fixed-bottom'      => 'fixed-bottom',
1221
+        'sticky-top'        => 'sticky-top',
1222
+    );
1223 1223
 
1224
-	$defaults = array(
1225
-		'type'     => 'select',
1226
-		'title'    => __( 'Position', 'ayecode-connect' ),
1227
-		'options'  => $options,
1228
-		'default'  => '',
1229
-		'desc_tip' => true,
1230
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1231
-	);
1224
+    $defaults = array(
1225
+        'type'     => 'select',
1226
+        'title'    => __( 'Position', 'ayecode-connect' ),
1227
+        'options'  => $options,
1228
+        'default'  => '',
1229
+        'desc_tip' => true,
1230
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1231
+    );
1232 1232
 
1233
-	$input = wp_parse_args( $overwrite, $defaults );
1233
+    $input = wp_parse_args( $overwrite, $defaults );
1234 1234
 
1235
-	return $input;
1235
+    return $input;
1236 1236
 }
1237 1237
 
1238 1238
 /**
@@ -1243,32 +1243,32 @@  discard block
 block discarded – undo
1243 1243
  */
1244 1244
 function sd_get_absolute_position_input( $type = 'absolute_position', $overwrite = array() ) {
1245 1245
 
1246
-	$options = array(
1247
-		''              => __( 'Default', 'ayecode-connect' ),
1248
-		'top-left'      => 'top-left',
1249
-		'top-center'    => 'top-center',
1250
-		'top-right'     => 'top-right',
1251
-		'center-left'   => 'middle-left',
1252
-		'center'        => 'center',
1253
-		'center-right'  => 'middle-right',
1254
-		'bottom-left'   => 'bottom-left',
1255
-		'bottom-center' => 'bottom-center',
1256
-		'bottom-right'  => 'bottom-right',
1257
-	);
1246
+    $options = array(
1247
+        ''              => __( 'Default', 'ayecode-connect' ),
1248
+        'top-left'      => 'top-left',
1249
+        'top-center'    => 'top-center',
1250
+        'top-right'     => 'top-right',
1251
+        'center-left'   => 'middle-left',
1252
+        'center'        => 'center',
1253
+        'center-right'  => 'middle-right',
1254
+        'bottom-left'   => 'bottom-left',
1255
+        'bottom-center' => 'bottom-center',
1256
+        'bottom-right'  => 'bottom-right',
1257
+    );
1258 1258
 
1259
-	$defaults = array(
1260
-		'type'            => 'select',
1261
-		'title'           => __( 'Absolute Position', 'ayecode-connect' ),
1262
-		'options'         => $options,
1263
-		'default'         => '',
1264
-		'desc_tip'        => true,
1265
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1266
-		'element_require' => '[%position%]=="position-absolute"',
1267
-	);
1259
+    $defaults = array(
1260
+        'type'            => 'select',
1261
+        'title'           => __( 'Absolute Position', 'ayecode-connect' ),
1262
+        'options'         => $options,
1263
+        'default'         => '',
1264
+        'desc_tip'        => true,
1265
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1266
+        'element_require' => '[%position%]=="position-absolute"',
1267
+    );
1268 1268
 
1269
-	$input = wp_parse_args( $overwrite, $defaults );
1269
+    $input = wp_parse_args( $overwrite, $defaults );
1270 1270
 
1271
-	return $input;
1271
+    return $input;
1272 1272
 }
1273 1273
 
1274 1274
 /**
@@ -1281,38 +1281,38 @@  discard block
 block discarded – undo
1281 1281
  */
1282 1282
 function sd_get_sticky_offset_input( $type = 'top', $overwrite = array() ) {
1283 1283
 
1284
-	$defaults = array(
1285
-		'type'            => 'number',
1286
-		'title'           => __( 'Sticky offset', 'ayecode-connect' ),
1287
-		//'desc' =>  __( 'Sticky offset', 'ayecode-connect' ),
1288
-		'default'         => '',
1289
-		'desc_tip'        => true,
1290
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1291
-		'element_require' => '[%position%]=="sticky" || [%position%]=="sticky-top"',
1292
-	);
1293
-
1294
-	// title
1295
-	if ( $type == 'top' ) {
1296
-		$defaults['title'] = __( 'Top offset', 'ayecode-connect' );
1297
-		$defaults['icon']  = 'box-top';
1298
-		$defaults['row']   = array(
1299
-			'title' => __( 'Sticky offset', 'ayecode-connect' ),
1300
-			'key'   => 'sticky-offset',
1301
-			'open'  => true,
1302
-			'class' => 'text-center',
1303
-		);
1304
-	} elseif ( $type == 'bottom' ) {
1305
-		$defaults['title'] = __( 'Bottom offset', 'ayecode-connect' );
1306
-		$defaults['icon']  = 'box-bottom';
1307
-		$defaults['row']   = array(
1308
-			'key'   => 'sticky-offset',
1309
-			'close' => true,
1310
-		);
1311
-	}
1312
-
1313
-	$input = wp_parse_args( $overwrite, $defaults );
1314
-
1315
-	return $input;
1284
+    $defaults = array(
1285
+        'type'            => 'number',
1286
+        'title'           => __( 'Sticky offset', 'ayecode-connect' ),
1287
+        //'desc' =>  __( 'Sticky offset', 'ayecode-connect' ),
1288
+        'default'         => '',
1289
+        'desc_tip'        => true,
1290
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1291
+        'element_require' => '[%position%]=="sticky" || [%position%]=="sticky-top"',
1292
+    );
1293
+
1294
+    // title
1295
+    if ( $type == 'top' ) {
1296
+        $defaults['title'] = __( 'Top offset', 'ayecode-connect' );
1297
+        $defaults['icon']  = 'box-top';
1298
+        $defaults['row']   = array(
1299
+            'title' => __( 'Sticky offset', 'ayecode-connect' ),
1300
+            'key'   => 'sticky-offset',
1301
+            'open'  => true,
1302
+            'class' => 'text-center',
1303
+        );
1304
+    } elseif ( $type == 'bottom' ) {
1305
+        $defaults['title'] = __( 'Bottom offset', 'ayecode-connect' );
1306
+        $defaults['icon']  = 'box-bottom';
1307
+        $defaults['row']   = array(
1308
+            'key'   => 'sticky-offset',
1309
+            'close' => true,
1310
+        );
1311
+    }
1312
+
1313
+    $input = wp_parse_args( $overwrite, $defaults );
1314
+
1315
+    return $input;
1316 1316
 }
1317 1317
 
1318 1318
 /**
@@ -1324,61 +1324,61 @@  discard block
 block discarded – undo
1324 1324
  * @return array
1325 1325
  */
1326 1326
 function sd_get_font_size_input( $type = 'font_size', $overwrite = array(), $has_custom = false ) {
1327
-	global $aui_bs5;
1328
-
1329
-	$options[] = __( 'Inherit from parent', 'ayecode-connect' );
1330
-	if ( $aui_bs5 ) {
1331
-		// responsive font sizes
1332
-		$options['fs-base'] = 'fs-base (body default)';
1333
-		$options['fs-6']    = 'fs-6';
1334
-		$options['fs-5']    = 'fs-5';
1335
-		$options['fs-4']    = 'fs-4';
1336
-		$options['fs-3']    = 'fs-3';
1337
-		$options['fs-2']    = 'fs-2';
1338
-		$options['fs-1']    = 'fs-1';
1339
-
1340
-		// custom
1341
-		$options['fs-lg']  = 'fs-lg';
1342
-		$options['fs-sm']  = 'fs-sm';
1343
-		$options['fs-xs']  = 'fs-xs';
1344
-		$options['fs-xxs'] = 'fs-xxs';
1345
-
1346
-	}
1347
-
1348
-	$options = $options + array(
1349
-			'h6'        => 'h6',
1350
-			'h5'        => 'h5',
1351
-			'h4'        => 'h4',
1352
-			'h3'        => 'h3',
1353
-			'h2'        => 'h2',
1354
-			'h1'        => 'h1',
1355
-			'display-1' => 'display-1',
1356
-			'display-2' => 'display-2',
1357
-			'display-3' => 'display-3',
1358
-			'display-4' => 'display-4',
1359
-		);
1360
-
1361
-	if ( $aui_bs5 ) {
1362
-		$options['display-5'] = 'display-5';
1363
-		$options['display-6'] = 'display-6';
1364
-	}
1365
-
1366
-	if ( $has_custom ) {
1367
-		$options['custom'] = __( 'Custom size', 'ayecode-connect' );
1368
-	}
1369
-
1370
-	$defaults = array(
1371
-		'type'     => 'select',
1372
-		'title'    => __( 'Font size', 'ayecode-connect' ),
1373
-		'options'  => $options,
1374
-		'default'  => '',
1375
-		'desc_tip' => true,
1376
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1377
-	);
1378
-
1379
-	$input = wp_parse_args( $overwrite, $defaults );
1380
-
1381
-	return $input;
1327
+    global $aui_bs5;
1328
+
1329
+    $options[] = __( 'Inherit from parent', 'ayecode-connect' );
1330
+    if ( $aui_bs5 ) {
1331
+        // responsive font sizes
1332
+        $options['fs-base'] = 'fs-base (body default)';
1333
+        $options['fs-6']    = 'fs-6';
1334
+        $options['fs-5']    = 'fs-5';
1335
+        $options['fs-4']    = 'fs-4';
1336
+        $options['fs-3']    = 'fs-3';
1337
+        $options['fs-2']    = 'fs-2';
1338
+        $options['fs-1']    = 'fs-1';
1339
+
1340
+        // custom
1341
+        $options['fs-lg']  = 'fs-lg';
1342
+        $options['fs-sm']  = 'fs-sm';
1343
+        $options['fs-xs']  = 'fs-xs';
1344
+        $options['fs-xxs'] = 'fs-xxs';
1345
+
1346
+    }
1347
+
1348
+    $options = $options + array(
1349
+            'h6'        => 'h6',
1350
+            'h5'        => 'h5',
1351
+            'h4'        => 'h4',
1352
+            'h3'        => 'h3',
1353
+            'h2'        => 'h2',
1354
+            'h1'        => 'h1',
1355
+            'display-1' => 'display-1',
1356
+            'display-2' => 'display-2',
1357
+            'display-3' => 'display-3',
1358
+            'display-4' => 'display-4',
1359
+        );
1360
+
1361
+    if ( $aui_bs5 ) {
1362
+        $options['display-5'] = 'display-5';
1363
+        $options['display-6'] = 'display-6';
1364
+    }
1365
+
1366
+    if ( $has_custom ) {
1367
+        $options['custom'] = __( 'Custom size', 'ayecode-connect' );
1368
+    }
1369
+
1370
+    $defaults = array(
1371
+        'type'     => 'select',
1372
+        'title'    => __( 'Font size', 'ayecode-connect' ),
1373
+        'options'  => $options,
1374
+        'default'  => '',
1375
+        'desc_tip' => true,
1376
+        'group'    => __( 'Typography', 'ayecode-connect' ),
1377
+    );
1378
+
1379
+    $input = wp_parse_args( $overwrite, $defaults );
1380
+
1381
+    return $input;
1382 1382
 }
1383 1383
 
1384 1384
 /**
@@ -1391,27 +1391,27 @@  discard block
 block discarded – undo
1391 1391
  */
1392 1392
 function sd_get_font_custom_size_input( $type = 'font_size_custom', $overwrite = array(), $parent_type = '' ) {
1393 1393
 
1394
-	$defaults = array(
1395
-		'type'              => 'number',
1396
-		'title'             => __( 'Font size (rem)', 'ayecode-connect' ),
1397
-		'default'           => '',
1398
-		'placeholder'       => '1.25',
1399
-		'custom_attributes' => array(
1400
-			'step' => '0.1',
1401
-			'min'  => '0',
1402
-			'max'  => '100',
1403
-		),
1404
-		'desc_tip'          => true,
1405
-		'group'             => __( 'Typography', 'ayecode-connect' ),
1406
-	);
1394
+    $defaults = array(
1395
+        'type'              => 'number',
1396
+        'title'             => __( 'Font size (rem)', 'ayecode-connect' ),
1397
+        'default'           => '',
1398
+        'placeholder'       => '1.25',
1399
+        'custom_attributes' => array(
1400
+            'step' => '0.1',
1401
+            'min'  => '0',
1402
+            'max'  => '100',
1403
+        ),
1404
+        'desc_tip'          => true,
1405
+        'group'             => __( 'Typography', 'ayecode-connect' ),
1406
+    );
1407 1407
 
1408
-	if ( $parent_type ) {
1409
-		$defaults['element_require'] = '[%' . $parent_type . '%]=="custom"';
1410
-	}
1408
+    if ( $parent_type ) {
1409
+        $defaults['element_require'] = '[%' . $parent_type . '%]=="custom"';
1410
+    }
1411 1411
 
1412
-	$input = wp_parse_args( $overwrite, $defaults );
1412
+    $input = wp_parse_args( $overwrite, $defaults );
1413 1413
 
1414
-	return $input;
1414
+    return $input;
1415 1415
 }
1416 1416
 
1417 1417
 /**
@@ -1424,23 +1424,23 @@  discard block
 block discarded – undo
1424 1424
  */
1425 1425
 function sd_get_font_line_height_input( $type = 'font_line_height', $overwrite = array() ) {
1426 1426
 
1427
-	$defaults = array(
1428
-		'type'              => 'number',
1429
-		'title'             => __( 'Font Line Height', 'ayecode-connect' ),
1430
-		'default'           => '',
1431
-		'placeholder'       => '1.75',
1432
-		'custom_attributes' => array(
1433
-			'step' => '0.1',
1434
-			'min'  => '0',
1435
-			'max'  => '100',
1436
-		),
1437
-		'desc_tip'          => true,
1438
-		'group'             => __( 'Typography', 'ayecode-connect' ),
1439
-	);
1427
+    $defaults = array(
1428
+        'type'              => 'number',
1429
+        'title'             => __( 'Font Line Height', 'ayecode-connect' ),
1430
+        'default'           => '',
1431
+        'placeholder'       => '1.75',
1432
+        'custom_attributes' => array(
1433
+            'step' => '0.1',
1434
+            'min'  => '0',
1435
+            'max'  => '100',
1436
+        ),
1437
+        'desc_tip'          => true,
1438
+        'group'             => __( 'Typography', 'ayecode-connect' ),
1439
+    );
1440 1440
 
1441
-	$input = wp_parse_args( $overwrite, $defaults );
1441
+    $input = wp_parse_args( $overwrite, $defaults );
1442 1442
 
1443
-	return $input;
1443
+    return $input;
1444 1444
 }
1445 1445
 
1446 1446
 /**
@@ -1453,18 +1453,18 @@  discard block
 block discarded – undo
1453 1453
  */
1454 1454
 function sd_get_font_size_input_group( $type = 'font_size', $overwrite = array(), $overwrite_custom = array() ) {
1455 1455
 
1456
-	$inputs = array();
1456
+    $inputs = array();
1457 1457
 
1458
-	if ( $overwrite !== false ) {
1459
-		$inputs[ $type ] = sd_get_font_size_input( $type, $overwrite, true );
1460
-	}
1458
+    if ( $overwrite !== false ) {
1459
+        $inputs[ $type ] = sd_get_font_size_input( $type, $overwrite, true );
1460
+    }
1461 1461
 
1462
-	if ( $overwrite_custom !== false ) {
1463
-		$custom            = $type . '_custom';
1464
-		$inputs[ $custom ] = sd_get_font_custom_size_input( $custom, $overwrite_custom, $type );
1465
-	}
1462
+    if ( $overwrite_custom !== false ) {
1463
+        $custom            = $type . '_custom';
1464
+        $inputs[ $custom ] = sd_get_font_custom_size_input( $custom, $overwrite_custom, $type );
1465
+    }
1466 1466
 
1467
-	return $inputs;
1467
+    return $inputs;
1468 1468
 }
1469 1469
 
1470 1470
 /**
@@ -1477,33 +1477,33 @@  discard block
 block discarded – undo
1477 1477
  */
1478 1478
 function sd_get_font_weight_input( $type = 'font_weight', $overwrite = array() ) {
1479 1479
 
1480
-	$options = array(
1481
-		''                                => __( 'Inherit', 'ayecode-connect' ),
1482
-		'font-weight-bold'                => 'bold',
1483
-		'font-weight-bolder'              => 'bolder',
1484
-		'font-weight-normal'              => 'normal',
1485
-		'font-weight-light'               => 'light',
1486
-		'font-weight-lighter'             => 'lighter',
1487
-		'font-italic'                     => 'italic',
1488
-		'font-weight-bold font-italic'    => 'bold italic',
1489
-		'font-weight-bolder font-italic'  => 'bolder italic',
1490
-		'font-weight-normal font-italic'  => 'normal italic',
1491
-		'font-weight-light font-italic'   => 'light italic',
1492
-		'font-weight-lighter font-italic' => 'lighter italic',
1493
-	);
1480
+    $options = array(
1481
+        ''                                => __( 'Inherit', 'ayecode-connect' ),
1482
+        'font-weight-bold'                => 'bold',
1483
+        'font-weight-bolder'              => 'bolder',
1484
+        'font-weight-normal'              => 'normal',
1485
+        'font-weight-light'               => 'light',
1486
+        'font-weight-lighter'             => 'lighter',
1487
+        'font-italic'                     => 'italic',
1488
+        'font-weight-bold font-italic'    => 'bold italic',
1489
+        'font-weight-bolder font-italic'  => 'bolder italic',
1490
+        'font-weight-normal font-italic'  => 'normal italic',
1491
+        'font-weight-light font-italic'   => 'light italic',
1492
+        'font-weight-lighter font-italic' => 'lighter italic',
1493
+    );
1494 1494
 
1495
-	$defaults = array(
1496
-		'type'     => 'select',
1497
-		'title'    => __( 'Appearance', 'ayecode-connect' ),
1498
-		'options'  => $options,
1499
-		'default'  => '',
1500
-		'desc_tip' => true,
1501
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1502
-	);
1495
+    $defaults = array(
1496
+        'type'     => 'select',
1497
+        'title'    => __( 'Appearance', 'ayecode-connect' ),
1498
+        'options'  => $options,
1499
+        'default'  => '',
1500
+        'desc_tip' => true,
1501
+        'group'    => __( 'Typography', 'ayecode-connect' ),
1502
+    );
1503 1503
 
1504
-	$input = wp_parse_args( $overwrite, $defaults );
1504
+    $input = wp_parse_args( $overwrite, $defaults );
1505 1505
 
1506
-	return $input;
1506
+    return $input;
1507 1507
 }
1508 1508
 
1509 1509
 /**
@@ -1516,25 +1516,25 @@  discard block
 block discarded – undo
1516 1516
  */
1517 1517
 function sd_get_font_case_input( $type = 'font_weight', $overwrite = array() ) {
1518 1518
 
1519
-	$options = array(
1520
-		''                => __( 'Default', 'ayecode-connect' ),
1521
-		'text-lowercase'  => __( 'lowercase', 'ayecode-connect' ),
1522
-		'text-uppercase'  => __( 'UPPERCASE', 'ayecode-connect' ),
1523
-		'text-capitalize' => __( 'Capitalize', 'ayecode-connect' ),
1524
-	);
1519
+    $options = array(
1520
+        ''                => __( 'Default', 'ayecode-connect' ),
1521
+        'text-lowercase'  => __( 'lowercase', 'ayecode-connect' ),
1522
+        'text-uppercase'  => __( 'UPPERCASE', 'ayecode-connect' ),
1523
+        'text-capitalize' => __( 'Capitalize', 'ayecode-connect' ),
1524
+    );
1525 1525
 
1526
-	$defaults = array(
1527
-		'type'     => 'select',
1528
-		'title'    => __( 'Letter case', 'ayecode-connect' ),
1529
-		'options'  => $options,
1530
-		'default'  => '',
1531
-		'desc_tip' => true,
1532
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1533
-	);
1526
+    $defaults = array(
1527
+        'type'     => 'select',
1528
+        'title'    => __( 'Letter case', 'ayecode-connect' ),
1529
+        'options'  => $options,
1530
+        'default'  => '',
1531
+        'desc_tip' => true,
1532
+        'group'    => __( 'Typography', 'ayecode-connect' ),
1533
+    );
1534 1534
 
1535
-	$input = wp_parse_args( $overwrite, $defaults );
1535
+    $input = wp_parse_args( $overwrite, $defaults );
1536 1536
 
1537
-	return $input;
1537
+    return $input;
1538 1538
 }
1539 1539
 
1540 1540
 /**
@@ -1548,23 +1548,23 @@  discard block
 block discarded – undo
1548 1548
  */
1549 1549
 function sd_get_font_italic_input( $type = 'font_italic', $overwrite = array() ) {
1550 1550
 
1551
-	$options = array(
1552
-		''            => __( 'No', 'ayecode-connect' ),
1553
-		'font-italic' => __( 'Yes', 'ayecode-connect' ),
1554
-	);
1551
+    $options = array(
1552
+        ''            => __( 'No', 'ayecode-connect' ),
1553
+        'font-italic' => __( 'Yes', 'ayecode-connect' ),
1554
+    );
1555 1555
 
1556
-	$defaults = array(
1557
-		'type'     => 'select',
1558
-		'title'    => __( 'Font italic', 'ayecode-connect' ),
1559
-		'options'  => $options,
1560
-		'default'  => '',
1561
-		'desc_tip' => true,
1562
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1563
-	);
1556
+    $defaults = array(
1557
+        'type'     => 'select',
1558
+        'title'    => __( 'Font italic', 'ayecode-connect' ),
1559
+        'options'  => $options,
1560
+        'default'  => '',
1561
+        'desc_tip' => true,
1562
+        'group'    => __( 'Typography', 'ayecode-connect' ),
1563
+    );
1564 1564
 
1565
-	$input = wp_parse_args( $overwrite, $defaults );
1565
+    $input = wp_parse_args( $overwrite, $defaults );
1566 1566
 
1567
-	return $input;
1567
+    return $input;
1568 1568
 }
1569 1569
 
1570 1570
 /**
@@ -1577,18 +1577,18 @@  discard block
 block discarded – undo
1577 1577
  */
1578 1578
 function sd_get_anchor_input( $type = 'anchor', $overwrite = array() ) {
1579 1579
 
1580
-	$defaults = array(
1581
-		'type'     => 'text',
1582
-		'title'    => __( 'HTML anchor', 'ayecode-connect' ),
1583
-		'desc'     => __( 'Enter a word or two — without spaces — to make a unique web address just for this block, called an “anchor.” Then, you’ll be able to link directly to this section of your page.', 'ayecode-connect' ),
1584
-		'default'  => '',
1585
-		'desc_tip' => true,
1586
-		'group'    => __( 'Advanced', 'ayecode-connect' ),
1587
-	);
1580
+    $defaults = array(
1581
+        'type'     => 'text',
1582
+        'title'    => __( 'HTML anchor', 'ayecode-connect' ),
1583
+        'desc'     => __( 'Enter a word or two — without spaces — to make a unique web address just for this block, called an “anchor.” Then, you’ll be able to link directly to this section of your page.', 'ayecode-connect' ),
1584
+        'default'  => '',
1585
+        'desc_tip' => true,
1586
+        'group'    => __( 'Advanced', 'ayecode-connect' ),
1587
+    );
1588 1588
 
1589
-	$input = wp_parse_args( $overwrite, $defaults );
1589
+    $input = wp_parse_args( $overwrite, $defaults );
1590 1590
 
1591
-	return $input;
1591
+    return $input;
1592 1592
 }
1593 1593
 
1594 1594
 /**
@@ -1601,18 +1601,18 @@  discard block
 block discarded – undo
1601 1601
  */
1602 1602
 function sd_get_class_input( $type = 'css_class', $overwrite = array() ) {
1603 1603
 
1604
-	$defaults = array(
1605
-		'type'     => 'text',
1606
-		'title'    => __( 'Additional CSS class(es)', 'ayecode-connect' ),
1607
-		'desc'     => __( 'Separate multiple classes with spaces.', 'ayecode-connect' ),
1608
-		'default'  => '',
1609
-		'desc_tip' => true,
1610
-		'group'    => __( 'Advanced', 'ayecode-connect' ),
1611
-	);
1604
+    $defaults = array(
1605
+        'type'     => 'text',
1606
+        'title'    => __( 'Additional CSS class(es)', 'ayecode-connect' ),
1607
+        'desc'     => __( 'Separate multiple classes with spaces.', 'ayecode-connect' ),
1608
+        'default'  => '',
1609
+        'desc_tip' => true,
1610
+        'group'    => __( 'Advanced', 'ayecode-connect' ),
1611
+    );
1612 1612
 
1613
-	$input = wp_parse_args( $overwrite, $defaults );
1613
+    $input = wp_parse_args( $overwrite, $defaults );
1614 1614
 
1615
-	return $input;
1615
+    return $input;
1616 1616
 }
1617 1617
 
1618 1618
 /**
@@ -1625,18 +1625,18 @@  discard block
 block discarded – undo
1625 1625
  */
1626 1626
 function sd_get_custom_name_input( $type = 'metadata_name', $overwrite = array() ) {
1627 1627
 
1628
-	$defaults = array(
1629
-		'type'     => 'text',
1630
-		'title'    => __( 'Block Name', 'ayecode-connect' ),
1631
-		'desc'     => __( 'Set a custom name for this block', 'ayecode-connect' ),
1632
-		'default'  => '',
1633
-		'desc_tip' => true,
1634
-		'group'    => __( 'Advanced', 'ayecode-connect' ),
1635
-	);
1628
+    $defaults = array(
1629
+        'type'     => 'text',
1630
+        'title'    => __( 'Block Name', 'ayecode-connect' ),
1631
+        'desc'     => __( 'Set a custom name for this block', 'ayecode-connect' ),
1632
+        'default'  => '',
1633
+        'desc_tip' => true,
1634
+        'group'    => __( 'Advanced', 'ayecode-connect' ),
1635
+    );
1636 1636
 
1637
-	$input = wp_parse_args( $overwrite, $defaults );
1637
+    $input = wp_parse_args( $overwrite, $defaults );
1638 1638
 
1639
-	return $input;
1639
+    return $input;
1640 1640
 }
1641 1641
 
1642 1642
 /**
@@ -1649,341 +1649,341 @@  discard block
 block discarded – undo
1649 1649
  */
1650 1650
 function sd_get_hover_animations_input( $type = 'hover_animations', $overwrite = array() ) {
1651 1651
 
1652
-	$options = array(
1653
-		''                 => __( 'none', 'ayecode-connect' ),
1654
-		'hover-zoom'       => __( 'Zoom', 'ayecode-connect' ),
1655
-		'hover-shadow'     => __( 'Shadow', 'ayecode-connect' ),
1656
-		'hover-move-up'    => __( 'Move up', 'ayecode-connect' ),
1657
-		'hover-move-down'  => __( 'Move down', 'ayecode-connect' ),
1658
-		'hover-move-left'  => __( 'Move left', 'ayecode-connect' ),
1659
-		'hover-move-right' => __( 'Move right', 'ayecode-connect' ),
1660
-	);
1652
+    $options = array(
1653
+        ''                 => __( 'none', 'ayecode-connect' ),
1654
+        'hover-zoom'       => __( 'Zoom', 'ayecode-connect' ),
1655
+        'hover-shadow'     => __( 'Shadow', 'ayecode-connect' ),
1656
+        'hover-move-up'    => __( 'Move up', 'ayecode-connect' ),
1657
+        'hover-move-down'  => __( 'Move down', 'ayecode-connect' ),
1658
+        'hover-move-left'  => __( 'Move left', 'ayecode-connect' ),
1659
+        'hover-move-right' => __( 'Move right', 'ayecode-connect' ),
1660
+    );
1661 1661
 
1662
-	$defaults = array(
1663
-		'type'     => 'select',
1664
-		'multiple' => true,
1665
-		'title'    => __( 'Hover Animations', 'ayecode-connect' ),
1666
-		'options'  => $options,
1667
-		'default'  => '',
1668
-		'desc_tip' => true,
1669
-		'group'    => __( 'Hover Animations', 'ayecode-connect' ),
1670
-	);
1662
+    $defaults = array(
1663
+        'type'     => 'select',
1664
+        'multiple' => true,
1665
+        'title'    => __( 'Hover Animations', 'ayecode-connect' ),
1666
+        'options'  => $options,
1667
+        'default'  => '',
1668
+        'desc_tip' => true,
1669
+        'group'    => __( 'Hover Animations', 'ayecode-connect' ),
1670
+    );
1671 1671
 
1672
-	$input = wp_parse_args( $overwrite, $defaults );
1672
+    $input = wp_parse_args( $overwrite, $defaults );
1673 1673
 
1674
-	return $input;
1674
+    return $input;
1675 1675
 }
1676 1676
 
1677 1677
 
1678 1678
 function sd_get_flex_align_items_input( $type = 'align-items', $overwrite = array() ) {
1679
-	$device_size = '';
1680
-	if ( ! empty( $overwrite['device_type'] ) ) {
1681
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1682
-			$device_size = '-md';
1683
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1684
-			$device_size = '-lg';
1685
-		}
1686
-	}
1687
-	$options = array(
1688
-		''                                         => __( 'Default', 'ayecode-connect' ),
1689
-		'align-items' . $device_size . '-start'    => 'align-items-start',
1690
-		'align-items' . $device_size . '-end'      => 'align-items-end',
1691
-		'align-items' . $device_size . '-center'   => 'align-items-center',
1692
-		'align-items' . $device_size . '-baseline' => 'align-items-baseline',
1693
-		'align-items' . $device_size . '-stretch'  => 'align-items-stretch',
1694
-	);
1695
-
1696
-	$defaults = array(
1697
-		'type'            => 'select',
1698
-		'title'           => __( 'Vertical Align Items', 'ayecode-connect' ),
1699
-		'options'         => $options,
1700
-		'default'         => '',
1701
-		'desc_tip'        => true,
1702
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1703
-		'element_require' => ' ( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1704
-
1705
-	);
1706
-
1707
-	$input = wp_parse_args( $overwrite, $defaults );
1708
-
1709
-	return $input;
1679
+    $device_size = '';
1680
+    if ( ! empty( $overwrite['device_type'] ) ) {
1681
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1682
+            $device_size = '-md';
1683
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1684
+            $device_size = '-lg';
1685
+        }
1686
+    }
1687
+    $options = array(
1688
+        ''                                         => __( 'Default', 'ayecode-connect' ),
1689
+        'align-items' . $device_size . '-start'    => 'align-items-start',
1690
+        'align-items' . $device_size . '-end'      => 'align-items-end',
1691
+        'align-items' . $device_size . '-center'   => 'align-items-center',
1692
+        'align-items' . $device_size . '-baseline' => 'align-items-baseline',
1693
+        'align-items' . $device_size . '-stretch'  => 'align-items-stretch',
1694
+    );
1695
+
1696
+    $defaults = array(
1697
+        'type'            => 'select',
1698
+        'title'           => __( 'Vertical Align Items', 'ayecode-connect' ),
1699
+        'options'         => $options,
1700
+        'default'         => '',
1701
+        'desc_tip'        => true,
1702
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1703
+        'element_require' => ' ( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1704
+
1705
+    );
1706
+
1707
+    $input = wp_parse_args( $overwrite, $defaults );
1708
+
1709
+    return $input;
1710 1710
 }
1711 1711
 
1712 1712
 function sd_get_flex_align_items_input_group( $type = 'flex_align_items', $overwrite = array() ) {
1713
-	$inputs = array();
1714
-	$sizes  = array(
1715
-		''    => 'Mobile',
1716
-		'_md' => 'Tablet',
1717
-		'_lg' => 'Desktop',
1718
-	);
1713
+    $inputs = array();
1714
+    $sizes  = array(
1715
+        ''    => 'Mobile',
1716
+        '_md' => 'Tablet',
1717
+        '_lg' => 'Desktop',
1718
+    );
1719 1719
 
1720
-	if ( $overwrite !== false ) {
1720
+    if ( $overwrite !== false ) {
1721 1721
 
1722
-		foreach ( $sizes as $ds => $dt ) {
1723
-			$overwrite['device_type'] = $dt;
1724
-			$inputs[ $type . $ds ]    = sd_get_flex_align_items_input( $type, $overwrite );
1725
-		}
1726
-	}
1722
+        foreach ( $sizes as $ds => $dt ) {
1723
+            $overwrite['device_type'] = $dt;
1724
+            $inputs[ $type . $ds ]    = sd_get_flex_align_items_input( $type, $overwrite );
1725
+        }
1726
+    }
1727 1727
 
1728
-	return $inputs;
1728
+    return $inputs;
1729 1729
 }
1730 1730
 
1731 1731
 function sd_get_flex_justify_content_input( $type = 'flex_justify_content', $overwrite = array() ) {
1732
-	$device_size = '';
1733
-	if ( ! empty( $overwrite['device_type'] ) ) {
1734
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1735
-			$device_size = '-md';
1736
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1737
-			$device_size = '-lg';
1738
-		}
1739
-	}
1740
-	$options = array(
1741
-		''                                            => __( 'Default', 'ayecode-connect' ),
1742
-		'justify-content' . $device_size . '-start'   => 'justify-content-start',
1743
-		'justify-content' . $device_size . '-end'     => 'justify-content-end',
1744
-		'justify-content' . $device_size . '-center'  => 'justify-content-center',
1745
-		'justify-content' . $device_size . '-between' => 'justify-content-between',
1746
-		'justify-content' . $device_size . '-stretch' => 'justify-content-around',
1747
-	);
1748
-
1749
-	$defaults = array(
1750
-		'type'            => 'select',
1751
-		'title'           => __( 'Justify content', 'ayecode-connect' ),
1752
-		'options'         => $options,
1753
-		'default'         => '',
1754
-		'desc_tip'        => true,
1755
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1756
-		'element_require' => '( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1757
-
1758
-	);
1759
-
1760
-	$input = wp_parse_args( $overwrite, $defaults );
1761
-
1762
-	return $input;
1732
+    $device_size = '';
1733
+    if ( ! empty( $overwrite['device_type'] ) ) {
1734
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1735
+            $device_size = '-md';
1736
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1737
+            $device_size = '-lg';
1738
+        }
1739
+    }
1740
+    $options = array(
1741
+        ''                                            => __( 'Default', 'ayecode-connect' ),
1742
+        'justify-content' . $device_size . '-start'   => 'justify-content-start',
1743
+        'justify-content' . $device_size . '-end'     => 'justify-content-end',
1744
+        'justify-content' . $device_size . '-center'  => 'justify-content-center',
1745
+        'justify-content' . $device_size . '-between' => 'justify-content-between',
1746
+        'justify-content' . $device_size . '-stretch' => 'justify-content-around',
1747
+    );
1748
+
1749
+    $defaults = array(
1750
+        'type'            => 'select',
1751
+        'title'           => __( 'Justify content', 'ayecode-connect' ),
1752
+        'options'         => $options,
1753
+        'default'         => '',
1754
+        'desc_tip'        => true,
1755
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1756
+        'element_require' => '( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1757
+
1758
+    );
1759
+
1760
+    $input = wp_parse_args( $overwrite, $defaults );
1761
+
1762
+    return $input;
1763 1763
 }
1764 1764
 
1765 1765
 function sd_get_flex_justify_content_input_group( $type = 'flex_justify_content', $overwrite = array() ) {
1766
-	$inputs = array();
1767
-	$sizes  = array(
1768
-		''    => 'Mobile',
1769
-		'_md' => 'Tablet',
1770
-		'_lg' => 'Desktop',
1771
-	);
1766
+    $inputs = array();
1767
+    $sizes  = array(
1768
+        ''    => 'Mobile',
1769
+        '_md' => 'Tablet',
1770
+        '_lg' => 'Desktop',
1771
+    );
1772 1772
 
1773
-	if ( $overwrite !== false ) {
1773
+    if ( $overwrite !== false ) {
1774 1774
 
1775
-		foreach ( $sizes as $ds => $dt ) {
1776
-			$overwrite['device_type'] = $dt;
1777
-			$inputs[ $type . $ds ]    = sd_get_flex_justify_content_input( $type, $overwrite );
1778
-		}
1779
-	}
1775
+        foreach ( $sizes as $ds => $dt ) {
1776
+            $overwrite['device_type'] = $dt;
1777
+            $inputs[ $type . $ds ]    = sd_get_flex_justify_content_input( $type, $overwrite );
1778
+        }
1779
+    }
1780 1780
 
1781
-	return $inputs;
1781
+    return $inputs;
1782 1782
 }
1783 1783
 
1784 1784
 
1785 1785
 function sd_get_flex_align_self_input( $type = 'flex_align_self', $overwrite = array() ) {
1786
-	$device_size = '';
1787
-	if ( ! empty( $overwrite['device_type'] ) ) {
1788
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1789
-			$device_size = '-md';
1790
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1791
-			$device_size = '-lg';
1792
-		}
1793
-	}
1794
-	$options = array(
1795
-		''                                         => __( 'Default', 'ayecode-connect' ),
1796
-		'align-items' . $device_size . '-start'    => 'align-items-start',
1797
-		'align-items' . $device_size . '-end'      => 'align-items-end',
1798
-		'align-items' . $device_size . '-center'   => 'align-items-center',
1799
-		'align-items' . $device_size . '-baseline' => 'align-items-baseline',
1800
-		'align-items' . $device_size . '-stretch'  => 'align-items-stretch',
1801
-	);
1802
-
1803
-	$defaults = array(
1804
-		'type'            => 'select',
1805
-		'title'           => __( 'Align Self', 'ayecode-connect' ),
1806
-		'options'         => $options,
1807
-		'default'         => '',
1808
-		'desc_tip'        => true,
1809
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1810
-		'element_require' => ' [%container%]=="col" ',
1811
-
1812
-	);
1813
-
1814
-	$input = wp_parse_args( $overwrite, $defaults );
1815
-
1816
-	return $input;
1786
+    $device_size = '';
1787
+    if ( ! empty( $overwrite['device_type'] ) ) {
1788
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1789
+            $device_size = '-md';
1790
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1791
+            $device_size = '-lg';
1792
+        }
1793
+    }
1794
+    $options = array(
1795
+        ''                                         => __( 'Default', 'ayecode-connect' ),
1796
+        'align-items' . $device_size . '-start'    => 'align-items-start',
1797
+        'align-items' . $device_size . '-end'      => 'align-items-end',
1798
+        'align-items' . $device_size . '-center'   => 'align-items-center',
1799
+        'align-items' . $device_size . '-baseline' => 'align-items-baseline',
1800
+        'align-items' . $device_size . '-stretch'  => 'align-items-stretch',
1801
+    );
1802
+
1803
+    $defaults = array(
1804
+        'type'            => 'select',
1805
+        'title'           => __( 'Align Self', 'ayecode-connect' ),
1806
+        'options'         => $options,
1807
+        'default'         => '',
1808
+        'desc_tip'        => true,
1809
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1810
+        'element_require' => ' [%container%]=="col" ',
1811
+
1812
+    );
1813
+
1814
+    $input = wp_parse_args( $overwrite, $defaults );
1815
+
1816
+    return $input;
1817 1817
 }
1818 1818
 
1819 1819
 function sd_get_flex_align_self_input_group( $type = 'flex_align_self', $overwrite = array() ) {
1820
-	$inputs = array();
1821
-	$sizes  = array(
1822
-		''    => 'Mobile',
1823
-		'_md' => 'Tablet',
1824
-		'_lg' => 'Desktop',
1825
-	);
1820
+    $inputs = array();
1821
+    $sizes  = array(
1822
+        ''    => 'Mobile',
1823
+        '_md' => 'Tablet',
1824
+        '_lg' => 'Desktop',
1825
+    );
1826 1826
 
1827
-	if ( $overwrite !== false ) {
1827
+    if ( $overwrite !== false ) {
1828 1828
 
1829
-		foreach ( $sizes as $ds => $dt ) {
1830
-			$overwrite['device_type'] = $dt;
1831
-			$inputs[ $type . $ds ]    = sd_get_flex_align_self_input( $type, $overwrite );
1832
-		}
1833
-	}
1829
+        foreach ( $sizes as $ds => $dt ) {
1830
+            $overwrite['device_type'] = $dt;
1831
+            $inputs[ $type . $ds ]    = sd_get_flex_align_self_input( $type, $overwrite );
1832
+        }
1833
+    }
1834 1834
 
1835
-	return $inputs;
1835
+    return $inputs;
1836 1836
 }
1837 1837
 
1838 1838
 function sd_get_flex_order_input( $type = 'flex_order', $overwrite = array() ) {
1839
-	$device_size = '';
1840
-	if ( ! empty( $overwrite['device_type'] ) ) {
1841
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1842
-			$device_size = '-md';
1843
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1844
-			$device_size = '-lg';
1845
-		}
1846
-	}
1847
-	$options = array(
1848
-		'' => __( 'Default', 'ayecode-connect' ),
1849
-	);
1850
-
1851
-	$i = 0;
1852
-	while ( $i <= 5 ) {
1853
-		$options[ 'order' . $device_size . '-' . $i ] = $i;
1854
-		$i++;
1855
-	}
1856
-
1857
-	$defaults = array(
1858
-		'type'            => 'select',
1859
-		'title'           => __( 'Flex Order', 'ayecode-connect' ),
1860
-		'options'         => $options,
1861
-		'default'         => '',
1862
-		'desc_tip'        => true,
1863
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1864
-		'element_require' => ' [%container%]=="col" ',
1865
-
1866
-	);
1867
-
1868
-	$input = wp_parse_args( $overwrite, $defaults );
1869
-
1870
-	return $input;
1839
+    $device_size = '';
1840
+    if ( ! empty( $overwrite['device_type'] ) ) {
1841
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1842
+            $device_size = '-md';
1843
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1844
+            $device_size = '-lg';
1845
+        }
1846
+    }
1847
+    $options = array(
1848
+        '' => __( 'Default', 'ayecode-connect' ),
1849
+    );
1850
+
1851
+    $i = 0;
1852
+    while ( $i <= 5 ) {
1853
+        $options[ 'order' . $device_size . '-' . $i ] = $i;
1854
+        $i++;
1855
+    }
1856
+
1857
+    $defaults = array(
1858
+        'type'            => 'select',
1859
+        'title'           => __( 'Flex Order', 'ayecode-connect' ),
1860
+        'options'         => $options,
1861
+        'default'         => '',
1862
+        'desc_tip'        => true,
1863
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1864
+        'element_require' => ' [%container%]=="col" ',
1865
+
1866
+    );
1867
+
1868
+    $input = wp_parse_args( $overwrite, $defaults );
1869
+
1870
+    return $input;
1871 1871
 }
1872 1872
 
1873 1873
 function sd_get_flex_order_input_group( $type = 'flex_order', $overwrite = array() ) {
1874
-	$inputs = array();
1875
-	$sizes  = array(
1876
-		''    => 'Mobile',
1877
-		'_md' => 'Tablet',
1878
-		'_lg' => 'Desktop',
1879
-	);
1874
+    $inputs = array();
1875
+    $sizes  = array(
1876
+        ''    => 'Mobile',
1877
+        '_md' => 'Tablet',
1878
+        '_lg' => 'Desktop',
1879
+    );
1880 1880
 
1881
-	if ( $overwrite !== false ) {
1881
+    if ( $overwrite !== false ) {
1882 1882
 
1883
-		foreach ( $sizes as $ds => $dt ) {
1884
-			$overwrite['device_type'] = $dt;
1885
-			$inputs[ $type . $ds ]    = sd_get_flex_order_input( $type, $overwrite );
1886
-		}
1887
-	}
1883
+        foreach ( $sizes as $ds => $dt ) {
1884
+            $overwrite['device_type'] = $dt;
1885
+            $inputs[ $type . $ds ]    = sd_get_flex_order_input( $type, $overwrite );
1886
+        }
1887
+    }
1888 1888
 
1889
-	return $inputs;
1889
+    return $inputs;
1890 1890
 }
1891 1891
 
1892 1892
 function sd_get_flex_wrap_group( $type = 'flex_wrap', $overwrite = array() ) {
1893
-	$inputs = array();
1894
-	$sizes  = array(
1895
-		''    => 'Mobile',
1896
-		'_md' => 'Tablet',
1897
-		'_lg' => 'Desktop',
1898
-	);
1893
+    $inputs = array();
1894
+    $sizes  = array(
1895
+        ''    => 'Mobile',
1896
+        '_md' => 'Tablet',
1897
+        '_lg' => 'Desktop',
1898
+    );
1899 1899
 
1900
-	if ( $overwrite !== false ) {
1900
+    if ( $overwrite !== false ) {
1901 1901
 
1902
-		foreach ( $sizes as $ds => $dt ) {
1903
-			$overwrite['device_type'] = $dt;
1904
-			$inputs[ $type . $ds ]    = sd_get_flex_wrap_input( $type, $overwrite );
1905
-		}
1906
-	}
1902
+        foreach ( $sizes as $ds => $dt ) {
1903
+            $overwrite['device_type'] = $dt;
1904
+            $inputs[ $type . $ds ]    = sd_get_flex_wrap_input( $type, $overwrite );
1905
+        }
1906
+    }
1907 1907
 
1908
-	return $inputs;
1908
+    return $inputs;
1909 1909
 }
1910 1910
 
1911 1911
 function sd_get_flex_wrap_input( $type = 'flex_wrap', $overwrite = array() ) {
1912
-	$device_size = '';
1913
-	if ( ! empty( $overwrite['device_type'] ) ) {
1914
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1915
-			$device_size = '-md';
1916
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1917
-			$device_size = '-lg';
1918
-		}
1919
-	}
1920
-	$options = array(
1921
-		''                                      => __( 'Default', 'ayecode-connect' ),
1922
-		'flex' . $device_size . '-nowrap'       => 'nowrap',
1923
-		'flex' . $device_size . '-wrap'         => 'wrap',
1924
-		'flex' . $device_size . '-wrap-reverse' => 'wrap-reverse',
1925
-	);
1926
-
1927
-	$defaults = array(
1928
-		'type'     => 'select',
1929
-		'title'    => __( 'Flex wrap', 'ayecode-connect' ),
1930
-		'options'  => $options,
1931
-		'default'  => '',
1932
-		'desc_tip' => true,
1933
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1934
-	);
1935
-
1936
-	$input = wp_parse_args( $overwrite, $defaults );
1937
-
1938
-	return $input;
1912
+    $device_size = '';
1913
+    if ( ! empty( $overwrite['device_type'] ) ) {
1914
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1915
+            $device_size = '-md';
1916
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1917
+            $device_size = '-lg';
1918
+        }
1919
+    }
1920
+    $options = array(
1921
+        ''                                      => __( 'Default', 'ayecode-connect' ),
1922
+        'flex' . $device_size . '-nowrap'       => 'nowrap',
1923
+        'flex' . $device_size . '-wrap'         => 'wrap',
1924
+        'flex' . $device_size . '-wrap-reverse' => 'wrap-reverse',
1925
+    );
1926
+
1927
+    $defaults = array(
1928
+        'type'     => 'select',
1929
+        'title'    => __( 'Flex wrap', 'ayecode-connect' ),
1930
+        'options'  => $options,
1931
+        'default'  => '',
1932
+        'desc_tip' => true,
1933
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1934
+    );
1935
+
1936
+    $input = wp_parse_args( $overwrite, $defaults );
1937
+
1938
+    return $input;
1939 1939
 }
1940 1940
 
1941 1941
 function sd_get_float_group( $type = 'float', $overwrite = array() ) {
1942
-	$inputs = array();
1943
-	$sizes  = array(
1944
-		''    => 'Mobile',
1945
-		'_md' => 'Tablet',
1946
-		'_lg' => 'Desktop',
1947
-	);
1942
+    $inputs = array();
1943
+    $sizes  = array(
1944
+        ''    => 'Mobile',
1945
+        '_md' => 'Tablet',
1946
+        '_lg' => 'Desktop',
1947
+    );
1948 1948
 
1949
-	if ( $overwrite !== false ) {
1949
+    if ( $overwrite !== false ) {
1950 1950
 
1951
-		foreach ( $sizes as $ds => $dt ) {
1952
-			$overwrite['device_type'] = $dt;
1953
-			$inputs[ $type . $ds ]    = sd_get_float_input( $type, $overwrite );
1954
-		}
1955
-	}
1951
+        foreach ( $sizes as $ds => $dt ) {
1952
+            $overwrite['device_type'] = $dt;
1953
+            $inputs[ $type . $ds ]    = sd_get_float_input( $type, $overwrite );
1954
+        }
1955
+    }
1956 1956
 
1957
-	return $inputs;
1957
+    return $inputs;
1958 1958
 }
1959 1959
 function sd_get_float_input( $type = 'float', $overwrite = array() ) {
1960
-	$device_size = '';
1961
-	if ( ! empty( $overwrite['device_type'] ) ) {
1962
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1963
-			$device_size = '-md';
1964
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1965
-			$device_size = '-lg';
1966
-		}
1967
-	}
1968
-	$options = array(
1969
-		''                                      => __( 'Default', 'ayecode-connect' ),
1970
-		'float' . $device_size . '-start'       => 'left',
1971
-		'float' . $device_size . '-end'         => 'right',
1972
-		'float' . $device_size . '-none' => 'none',
1973
-	);
1974
-
1975
-	$defaults = array(
1976
-		'type'     => 'select',
1977
-		'title'    => __( 'Float', 'ayecode-connect' ),
1978
-		'options'  => $options,
1979
-		'default'  => '',
1980
-		'desc_tip' => true,
1981
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1982
-	);
1983
-
1984
-	$input = wp_parse_args( $overwrite, $defaults );
1985
-
1986
-	return $input;
1960
+    $device_size = '';
1961
+    if ( ! empty( $overwrite['device_type'] ) ) {
1962
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1963
+            $device_size = '-md';
1964
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1965
+            $device_size = '-lg';
1966
+        }
1967
+    }
1968
+    $options = array(
1969
+        ''                                      => __( 'Default', 'ayecode-connect' ),
1970
+        'float' . $device_size . '-start'       => 'left',
1971
+        'float' . $device_size . '-end'         => 'right',
1972
+        'float' . $device_size . '-none' => 'none',
1973
+    );
1974
+
1975
+    $defaults = array(
1976
+        'type'     => 'select',
1977
+        'title'    => __( 'Float', 'ayecode-connect' ),
1978
+        'options'  => $options,
1979
+        'default'  => '',
1980
+        'desc_tip' => true,
1981
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1982
+    );
1983
+
1984
+    $input = wp_parse_args( $overwrite, $defaults );
1985
+
1986
+    return $input;
1987 1987
 }
1988 1988
 
1989 1989
 /**
@@ -1994,26 +1994,26 @@  discard block
 block discarded – undo
1994 1994
  */
1995 1995
 function sd_get_zindex_input( $type = 'zindex', $overwrite = array() ) {
1996 1996
 
1997
-	$options = array(
1998
-		''          => __( 'Default', 'ayecode-connect' ),
1999
-		'zindex-0'  => '0',
2000
-		'zindex-1'  => '1',
2001
-		'zindex-5'  => '5',
2002
-		'zindex-10' => '10',
2003
-	);
1997
+    $options = array(
1998
+        ''          => __( 'Default', 'ayecode-connect' ),
1999
+        'zindex-0'  => '0',
2000
+        'zindex-1'  => '1',
2001
+        'zindex-5'  => '5',
2002
+        'zindex-10' => '10',
2003
+    );
2004 2004
 
2005
-	$defaults = array(
2006
-		'type'     => 'select',
2007
-		'title'    => __( 'Z-index', 'ayecode-connect' ),
2008
-		'options'  => $options,
2009
-		'default'  => '',
2010
-		'desc_tip' => true,
2011
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2012
-	);
2005
+    $defaults = array(
2006
+        'type'     => 'select',
2007
+        'title'    => __( 'Z-index', 'ayecode-connect' ),
2008
+        'options'  => $options,
2009
+        'default'  => '',
2010
+        'desc_tip' => true,
2011
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2012
+    );
2013 2013
 
2014
-	$input = wp_parse_args( $overwrite, $defaults );
2014
+    $input = wp_parse_args( $overwrite, $defaults );
2015 2015
 
2016
-	return $input;
2016
+    return $input;
2017 2017
 }
2018 2018
 
2019 2019
 /**
@@ -2024,26 +2024,26 @@  discard block
 block discarded – undo
2024 2024
  */
2025 2025
 function sd_get_overflow_input( $type = 'overflow', $overwrite = array() ) {
2026 2026
 
2027
-	$options = array(
2028
-		''                 => __( 'Default', 'ayecode-connect' ),
2029
-		'overflow-auto'    => __( 'Auto', 'ayecode-connect' ),
2030
-		'overflow-hidden'  => __( 'Hidden', 'ayecode-connect' ),
2031
-		'overflow-visible' => __( 'Visible', 'ayecode-connect' ),
2032
-		'overflow-scroll'  => __( 'Scroll', 'ayecode-connect' ),
2033
-	);
2027
+    $options = array(
2028
+        ''                 => __( 'Default', 'ayecode-connect' ),
2029
+        'overflow-auto'    => __( 'Auto', 'ayecode-connect' ),
2030
+        'overflow-hidden'  => __( 'Hidden', 'ayecode-connect' ),
2031
+        'overflow-visible' => __( 'Visible', 'ayecode-connect' ),
2032
+        'overflow-scroll'  => __( 'Scroll', 'ayecode-connect' ),
2033
+    );
2034 2034
 
2035
-	$defaults = array(
2036
-		'type'     => 'select',
2037
-		'title'    => __( 'Overflow', 'ayecode-connect' ),
2038
-		'options'  => $options,
2039
-		'default'  => '',
2040
-		'desc_tip' => true,
2041
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2042
-	);
2035
+    $defaults = array(
2036
+        'type'     => 'select',
2037
+        'title'    => __( 'Overflow', 'ayecode-connect' ),
2038
+        'options'  => $options,
2039
+        'default'  => '',
2040
+        'desc_tip' => true,
2041
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2042
+    );
2043 2043
 
2044
-	$input = wp_parse_args( $overwrite, $defaults );
2044
+    $input = wp_parse_args( $overwrite, $defaults );
2045 2045
 
2046
-	return $input;
2046
+    return $input;
2047 2047
 }
2048 2048
 
2049 2049
 /**
@@ -2054,19 +2054,19 @@  discard block
 block discarded – undo
2054 2054
  */
2055 2055
 function sd_get_max_height_input( $type = 'max_height', $overwrite = array() ) {
2056 2056
 
2057
-	$defaults = array(
2058
-		'type'        => 'text',
2059
-		'title'       => __( 'Max height', 'ayecode-connect' ),
2060
-		'value'       => '',
2061
-		'default'     => '',
2062
-		'placeholder' => '',
2063
-		'desc_tip'    => true,
2064
-		'group'       => __( 'Wrapper Styles', 'ayecode-connect' ),
2065
-	);
2057
+    $defaults = array(
2058
+        'type'        => 'text',
2059
+        'title'       => __( 'Max height', 'ayecode-connect' ),
2060
+        'value'       => '',
2061
+        'default'     => '',
2062
+        'placeholder' => '',
2063
+        'desc_tip'    => true,
2064
+        'group'       => __( 'Wrapper Styles', 'ayecode-connect' ),
2065
+    );
2066 2066
 
2067
-	$input = wp_parse_args( $overwrite, $defaults );
2067
+    $input = wp_parse_args( $overwrite, $defaults );
2068 2068
 
2069
-	return $input;
2069
+    return $input;
2070 2070
 }
2071 2071
 
2072 2072
 /**
@@ -2077,23 +2077,23 @@  discard block
 block discarded – undo
2077 2077
  */
2078 2078
 function sd_get_scrollbars_input( $type = 'scrollbars', $overwrite = array() ) {
2079 2079
 
2080
-	$options = array(
2081
-		''               => __( 'Default', 'ayecode-connect' ),
2082
-		'scrollbars-ios' => __( 'IOS Style', 'ayecode-connect' ),
2083
-	);
2080
+    $options = array(
2081
+        ''               => __( 'Default', 'ayecode-connect' ),
2082
+        'scrollbars-ios' => __( 'IOS Style', 'ayecode-connect' ),
2083
+    );
2084 2084
 
2085
-	$defaults = array(
2086
-		'type'     => 'select',
2087
-		'title'    => __( 'Scrollbars', 'ayecode-connect' ),
2088
-		'options'  => $options,
2089
-		'default'  => '',
2090
-		'desc_tip' => true,
2091
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2092
-	);
2085
+    $defaults = array(
2086
+        'type'     => 'select',
2087
+        'title'    => __( 'Scrollbars', 'ayecode-connect' ),
2088
+        'options'  => $options,
2089
+        'default'  => '',
2090
+        'desc_tip' => true,
2091
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2092
+    );
2093 2093
 
2094
-	$input = wp_parse_args( $overwrite, $defaults );
2094
+    $input = wp_parse_args( $overwrite, $defaults );
2095 2095
 
2096
-	return $input;
2096
+    return $input;
2097 2097
 }
2098 2098
 
2099 2099
 /**
@@ -2104,17 +2104,17 @@  discard block
 block discarded – undo
2104 2104
  */
2105 2105
 function sd_get_new_window_input( $type = 'target', $overwrite = array() ) {
2106 2106
 
2107
-	$defaults = array(
2108
-		'type'     => 'checkbox',
2109
-		'title'    => __( 'Open in new window', 'ayecode-connect' ),
2110
-		'default'  => '',
2111
-		'desc_tip' => true,
2112
-		'group'    => __( 'Link', 'ayecode-connect' ),
2113
-	);
2107
+    $defaults = array(
2108
+        'type'     => 'checkbox',
2109
+        'title'    => __( 'Open in new window', 'ayecode-connect' ),
2110
+        'default'  => '',
2111
+        'desc_tip' => true,
2112
+        'group'    => __( 'Link', 'ayecode-connect' ),
2113
+    );
2114 2114
 
2115
-	$input = wp_parse_args( $overwrite, $defaults );
2115
+    $input = wp_parse_args( $overwrite, $defaults );
2116 2116
 
2117
-	return $input;
2117
+    return $input;
2118 2118
 }
2119 2119
 
2120 2120
 /**
@@ -2125,17 +2125,17 @@  discard block
 block discarded – undo
2125 2125
  */
2126 2126
 function sd_get_nofollow_input( $type = 'nofollow', $overwrite = array() ) {
2127 2127
 
2128
-	$defaults = array(
2129
-		'type'     => 'checkbox',
2130
-		'title'    => __( 'Add nofollow', 'ayecode-connect' ),
2131
-		'default'  => '',
2132
-		'desc_tip' => true,
2133
-		'group'    => __( 'Link', 'ayecode-connect' ),
2134
-	);
2128
+    $defaults = array(
2129
+        'type'     => 'checkbox',
2130
+        'title'    => __( 'Add nofollow', 'ayecode-connect' ),
2131
+        'default'  => '',
2132
+        'desc_tip' => true,
2133
+        'group'    => __( 'Link', 'ayecode-connect' ),
2134
+    );
2135 2135
 
2136
-	$input = wp_parse_args( $overwrite, $defaults );
2136
+    $input = wp_parse_args( $overwrite, $defaults );
2137 2137
 
2138
-	return $input;
2138
+    return $input;
2139 2139
 }
2140 2140
 
2141 2141
 /**
@@ -2148,35 +2148,35 @@  discard block
 block discarded – undo
2148 2148
  */
2149 2149
 function sd_get_width_input( $type = 'width', $overwrite = array() ) {
2150 2150
 
2151
-	$device_size = '';
2152
-	if ( ! empty( $overwrite['device_type'] ) ) {
2153
-		if ( $overwrite['device_type'] == 'Tablet' ) {
2154
-			$device_size = '-md';
2155
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
2156
-			$device_size = '-lg';
2157
-		}
2158
-	}
2159
-	$options = array(
2160
-		'' => __('Default', 'ayecode-connect'),
2161
-		'w' . $device_size . '-25' => '25%',
2162
-		'w' . $device_size . '-50' => '50%',
2163
-		'w' . $device_size . '-75' => '75%',
2164
-		'w' . $device_size . '-100' => '100%',
2165
-		'w' . $device_size . '-auto' => 'auto',
2166
-	);
2167
-
2168
-	$defaults = array(
2169
-		'type'     => 'select',
2170
-		'title'    => __( 'Width', 'ayecode-connect' ),
2171
-		'options'  => $options,
2172
-		'default'  => '',
2173
-		'desc_tip' => true,
2174
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2175
-	);
2176
-
2177
-	$input = wp_parse_args( $overwrite, $defaults );
2178
-
2179
-	return $input;
2151
+    $device_size = '';
2152
+    if ( ! empty( $overwrite['device_type'] ) ) {
2153
+        if ( $overwrite['device_type'] == 'Tablet' ) {
2154
+            $device_size = '-md';
2155
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
2156
+            $device_size = '-lg';
2157
+        }
2158
+    }
2159
+    $options = array(
2160
+        '' => __('Default', 'ayecode-connect'),
2161
+        'w' . $device_size . '-25' => '25%',
2162
+        'w' . $device_size . '-50' => '50%',
2163
+        'w' . $device_size . '-75' => '75%',
2164
+        'w' . $device_size . '-100' => '100%',
2165
+        'w' . $device_size . '-auto' => 'auto',
2166
+    );
2167
+
2168
+    $defaults = array(
2169
+        'type'     => 'select',
2170
+        'title'    => __( 'Width', 'ayecode-connect' ),
2171
+        'options'  => $options,
2172
+        'default'  => '',
2173
+        'desc_tip' => true,
2174
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2175
+    );
2176
+
2177
+    $input = wp_parse_args( $overwrite, $defaults );
2178
+
2179
+    return $input;
2180 2180
 }
2181 2181
 
2182 2182
 /**
@@ -2189,35 +2189,35 @@  discard block
 block discarded – undo
2189 2189
  */
2190 2190
 function sd_get_height_input( $type = 'height', $overwrite = array() ) {
2191 2191
 
2192
-	$device_size = '';
2193
-	if ( ! empty( $overwrite['device_type'] ) ) {
2194
-		if ( $overwrite['device_type'] == 'Tablet' ) {
2195
-			$device_size = '-md';
2196
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
2197
-			$device_size = '-lg';
2198
-		}
2199
-	}
2200
-	$options = array(
2201
-		'' => __('Default', 'ayecode-connect'),
2202
-		'h' . $device_size . '-25' => '25%',
2203
-		'h' . $device_size . '-50' => '50%',
2204
-		'h' . $device_size . '-75' => '75%',
2205
-		'h' . $device_size . '-100' => '100%',
2206
-		'h' . $device_size . '-auto' => 'auto',
2207
-	);
2208
-
2209
-	$defaults = array(
2210
-		'type'     => 'select',
2211
-		'title'    => __( 'Height', 'ayecode-connect' ),
2212
-		'options'  => $options,
2213
-		'default'  => '',
2214
-		'desc_tip' => true,
2215
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2216
-	);
2217
-
2218
-	$input = wp_parse_args( $overwrite, $defaults );
2219
-
2220
-	return $input;
2192
+    $device_size = '';
2193
+    if ( ! empty( $overwrite['device_type'] ) ) {
2194
+        if ( $overwrite['device_type'] == 'Tablet' ) {
2195
+            $device_size = '-md';
2196
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
2197
+            $device_size = '-lg';
2198
+        }
2199
+    }
2200
+    $options = array(
2201
+        '' => __('Default', 'ayecode-connect'),
2202
+        'h' . $device_size . '-25' => '25%',
2203
+        'h' . $device_size . '-50' => '50%',
2204
+        'h' . $device_size . '-75' => '75%',
2205
+        'h' . $device_size . '-100' => '100%',
2206
+        'h' . $device_size . '-auto' => 'auto',
2207
+    );
2208
+
2209
+    $defaults = array(
2210
+        'type'     => 'select',
2211
+        'title'    => __( 'Height', 'ayecode-connect' ),
2212
+        'options'  => $options,
2213
+        'default'  => '',
2214
+        'desc_tip' => true,
2215
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2216
+    );
2217
+
2218
+    $input = wp_parse_args( $overwrite, $defaults );
2219
+
2220
+    return $input;
2221 2221
 }
2222 2222
 
2223 2223
 /**
@@ -2228,19 +2228,19 @@  discard block
 block discarded – undo
2228 2228
  */
2229 2229
 function sd_get_attributes_input( $type = 'attributes', $overwrite = array() ) {
2230 2230
 
2231
-	$defaults = array(
2232
-		'type'        => 'text',
2233
-		'title'       => __( 'Custom Attributes', 'ayecode-connect' ),
2234
-		'value'       => '',
2235
-		'default'     => '',
2236
-		'placeholder' => 'key|value,key2|value2',
2237
-		'desc_tip'    => true,
2238
-		'group'       => __( 'Link', 'ayecode-connect' ),
2239
-	);
2231
+    $defaults = array(
2232
+        'type'        => 'text',
2233
+        'title'       => __( 'Custom Attributes', 'ayecode-connect' ),
2234
+        'value'       => '',
2235
+        'default'     => '',
2236
+        'placeholder' => 'key|value,key2|value2',
2237
+        'desc_tip'    => true,
2238
+        'group'       => __( 'Link', 'ayecode-connect' ),
2239
+    );
2240 2240
 
2241
-	$input = wp_parse_args( $overwrite, $defaults );
2241
+    $input = wp_parse_args( $overwrite, $defaults );
2242 2242
 
2243
-	return $input;
2243
+    return $input;
2244 2244
 }
2245 2245
 
2246 2246
 /**
@@ -2249,32 +2249,32 @@  discard block
 block discarded – undo
2249 2249
  * @return string
2250 2250
  */
2251 2251
 function sd_build_attributes_string_escaped( $args ) {
2252
-	global $aui_bs5;
2252
+    global $aui_bs5;
2253 2253
 
2254
-	$attributes = array();
2255
-	$string_escaped = '';
2254
+    $attributes = array();
2255
+    $string_escaped = '';
2256 2256
 
2257
-	if ( ! empty( $args['custom'] ) ) {
2258
-		$attributes = sd_parse_custom_attributes($args['custom']);
2259
-	}
2257
+    if ( ! empty( $args['custom'] ) ) {
2258
+        $attributes = sd_parse_custom_attributes($args['custom']);
2259
+    }
2260 2260
 
2261
-	// new window
2262
-	if ( ! empty( $args['new_window'] ) ) {
2263
-		$attributes['target'] = '_blank';
2264
-	}
2261
+    // new window
2262
+    if ( ! empty( $args['new_window'] ) ) {
2263
+        $attributes['target'] = '_blank';
2264
+    }
2265 2265
 
2266
-	// nofollow
2267
-	if ( ! empty( $args['nofollow'] ) ) {
2268
-		$attributes['rel'] = isset($attributes['rel']) ? $attributes['rel'] . ' nofollow' : 'nofollow';
2269
-	}
2266
+    // nofollow
2267
+    if ( ! empty( $args['nofollow'] ) ) {
2268
+        $attributes['rel'] = isset($attributes['rel']) ? $attributes['rel'] . ' nofollow' : 'nofollow';
2269
+    }
2270 2270
 
2271
-	if(!empty($attributes )){
2272
-		foreach ( $attributes as $key => $val ) {
2273
-			$string_escaped .= esc_attr($key) . '="' . esc_attr($val) . '" ';
2274
-		}
2275
-	}
2271
+    if(!empty($attributes )){
2272
+        foreach ( $attributes as $key => $val ) {
2273
+            $string_escaped .= esc_attr($key) . '="' . esc_attr($val) . '" ';
2274
+        }
2275
+    }
2276 2276
 
2277
-	return $string_escaped;
2277
+    return $string_escaped;
2278 2278
 }
2279 2279
 
2280 2280
 /**
@@ -2286,38 +2286,38 @@  discard block
 block discarded – undo
2286 2286
  * @return array
2287 2287
  */
2288 2288
 function sd_parse_custom_attributes( $attributes_string, $delimiter = ',' ) {
2289
-	$attributes = explode( $delimiter, $attributes_string );
2290
-	$result = [];
2289
+    $attributes = explode( $delimiter, $attributes_string );
2290
+    $result = [];
2291 2291
 
2292
-	foreach ( $attributes as $attribute ) {
2293
-		$attr_key_value = explode( '|', $attribute );
2292
+    foreach ( $attributes as $attribute ) {
2293
+        $attr_key_value = explode( '|', $attribute );
2294 2294
 
2295
-		$attr_key = mb_strtolower( $attr_key_value[0] );
2295
+        $attr_key = mb_strtolower( $attr_key_value[0] );
2296 2296
 
2297
-		// Remove any not allowed characters.
2298
-		preg_match( '/[-_a-z0-9]+/', $attr_key, $attr_key_matches );
2297
+        // Remove any not allowed characters.
2298
+        preg_match( '/[-_a-z0-9]+/', $attr_key, $attr_key_matches );
2299 2299
 
2300
-		if ( empty( $attr_key_matches[0] ) ) {
2301
-			continue;
2302
-		}
2300
+        if ( empty( $attr_key_matches[0] ) ) {
2301
+            continue;
2302
+        }
2303 2303
 
2304
-		$attr_key = $attr_key_matches[0];
2304
+        $attr_key = $attr_key_matches[0];
2305 2305
 
2306
-		// Avoid Javascript events and unescaped href.
2307
-		if ( 'href' === $attr_key || 'on' === substr( $attr_key, 0, 2 ) ) {
2308
-			continue;
2309
-		}
2306
+        // Avoid Javascript events and unescaped href.
2307
+        if ( 'href' === $attr_key || 'on' === substr( $attr_key, 0, 2 ) ) {
2308
+            continue;
2309
+        }
2310 2310
 
2311
-		if ( isset( $attr_key_value[1] ) ) {
2312
-			$attr_value = trim( $attr_key_value[1] );
2313
-		} else {
2314
-			$attr_value = '';
2315
-		}
2311
+        if ( isset( $attr_key_value[1] ) ) {
2312
+            $attr_value = trim( $attr_key_value[1] );
2313
+        } else {
2314
+            $attr_value = '';
2315
+        }
2316 2316
 
2317
-		$result[ $attr_key ] = $attr_value;
2318
-	}
2317
+        $result[ $attr_key ] = $attr_value;
2318
+    }
2319 2319
 
2320
-	return $result;
2320
+    return $result;
2321 2321
 }
2322 2322
 
2323 2323
 /**
@@ -2329,424 +2329,424 @@  discard block
 block discarded – undo
2329 2329
  * @todo find best way to use px- py- or general p-
2330 2330
  */
2331 2331
 function sd_build_aui_class( $args ) {
2332
-	global $aui_bs5;
2333
-
2334
-	$classes = array();
2335
-
2336
-	if ( $aui_bs5 ) {
2337
-		$p_ml = 'ms-';
2338
-		$p_mr = 'me-';
2339
-
2340
-		$p_pl = 'ps-';
2341
-		$p_pr = 'pe-';
2342
-	} else {
2343
-		$p_ml = 'ml-';
2344
-		$p_mr = 'mr-';
2345
-
2346
-		$p_pl = 'pl-';
2347
-		$p_pr = 'pr-';
2348
-	}
2349
-
2350
-	// margins.
2351
-	if ( isset( $args['mt'] ) && $args['mt'] !== '' ) {
2352
-		$classes[] = 'mt-' . sanitize_html_class( $args['mt'] );
2353
-		$mt        = $args['mt'];
2354
-	} else {
2355
-		$mt = null;
2356
-	}
2357
-	if ( isset( $args['mr'] ) && $args['mr'] !== '' ) {
2358
-		$classes[] = $p_mr . sanitize_html_class( $args['mr'] );
2359
-		$mr        = $args['mr'];
2360
-	} else {
2361
-		$mr = null;
2362
-	}
2363
-	if ( isset( $args['mb'] ) && $args['mb'] !== '' ) {
2364
-		$classes[] = 'mb-' . sanitize_html_class( $args['mb'] );
2365
-		$mb        = $args['mb'];
2366
-	} else {
2367
-		$mb = null;
2368
-	}
2369
-	if ( isset( $args['ml'] ) && $args['ml'] !== '' ) {
2370
-		$classes[] = $p_ml . sanitize_html_class( $args['ml'] );
2371
-		$ml        = $args['ml'];
2372
-	} else {
2373
-		$ml = null;
2374
-	}
2375
-
2376
-	// margins tablet.
2377
-	if ( isset( $args['mt_md'] ) && $args['mt_md'] !== '' ) {
2378
-		$classes[] = 'mt-md-' . sanitize_html_class( $args['mt_md'] );
2379
-		$mt_md     = $args['mt_md'];
2380
-	} else {
2381
-		$mt_md = null;
2382
-	}
2383
-	if ( isset( $args['mr_md'] ) && $args['mr_md'] !== '' ) {
2384
-		$classes[] = $p_mr . 'md-' . sanitize_html_class( $args['mr_md'] );
2385
-		$mt_md     = $args['mr_md'];
2386
-	} else {
2387
-		$mr_md = null;
2388
-	}
2389
-	if ( isset( $args['mb_md'] ) && $args['mb_md'] !== '' ) {
2390
-		$classes[] = 'mb-md-' . sanitize_html_class( $args['mb_md'] );
2391
-		$mt_md     = $args['mb_md'];
2392
-	} else {
2393
-		$mb_md = null;
2394
-	}
2395
-	if ( isset( $args['ml_md'] ) && $args['ml_md'] !== '' ) {
2396
-		$classes[] = $p_ml . 'md-' . sanitize_html_class( $args['ml_md'] );
2397
-		$mt_md     = $args['ml_md'];
2398
-	} else {
2399
-		$ml_md = null;
2400
-	}
2401
-
2402
-	// margins desktop.
2403
-	if ( isset( $args['mt_lg'] ) && $args['mt_lg'] !== '' ) {
2404
-		if ( $mt == null && $mt_md == null ) {
2405
-			$classes[] = 'mt-' . sanitize_html_class( $args['mt_lg'] );
2406
-		} else {
2407
-			$classes[] = 'mt-lg-' . sanitize_html_class( $args['mt_lg'] );
2408
-		}
2409
-	}
2410
-	if ( isset( $args['mr_lg'] ) && $args['mr_lg'] !== '' ) {
2411
-		if ( $mr == null && $mr_md == null ) {
2412
-			$classes[] = $p_mr . sanitize_html_class( $args['mr_lg'] );
2413
-		} else {
2414
-			$classes[] = $p_mr . 'lg-' . sanitize_html_class( $args['mr_lg'] );
2415
-		}
2416
-	}
2417
-	if ( isset( $args['mb_lg'] ) && $args['mb_lg'] !== '' ) {
2418
-		if ( $mb == null && $mb_md == null ) {
2419
-			$classes[] = 'mb-' . sanitize_html_class( $args['mb_lg'] );
2420
-		} else {
2421
-			$classes[] = 'mb-lg-' . sanitize_html_class( $args['mb_lg'] );
2422
-		}
2423
-	}
2424
-	if ( isset( $args['ml_lg'] ) && $args['ml_lg'] !== '' ) {
2425
-		if ( $ml == null && $ml_md == null ) {
2426
-			$classes[] = $p_ml . sanitize_html_class( $args['ml_lg'] );
2427
-		} else {
2428
-			$classes[] = $p_ml . 'lg-' . sanitize_html_class( $args['ml_lg'] );
2429
-		}
2430
-	}
2431
-
2432
-	// padding.
2433
-	if ( isset( $args['pt'] ) && $args['pt'] !== '' ) {
2434
-		$classes[] = 'pt-' . sanitize_html_class( $args['pt'] );
2435
-		$pt        = $args['pt'];
2436
-	} else {
2437
-		$pt = null;
2438
-	}
2439
-	if ( isset( $args['pr'] ) && $args['pr'] !== '' ) {
2440
-		$classes[] = $p_pr . sanitize_html_class( $args['pr'] );
2441
-		$pr        = $args['pr'];
2442
-	} else {
2443
-		$pr = null;
2444
-	}
2445
-	if ( isset( $args['pb'] ) && $args['pb'] !== '' ) {
2446
-		$classes[] = 'pb-' . sanitize_html_class( $args['pb'] );
2447
-		$pb        = $args['pb'];
2448
-	} else {
2449
-		$pb = null;
2450
-	}
2451
-	if ( isset( $args['pl'] ) && $args['pl'] !== '' ) {
2452
-		$classes[] = $p_pl . sanitize_html_class( $args['pl'] );
2453
-		$pl        = $args['pl'];
2454
-	} else {
2455
-		$pl = null;
2456
-	}
2457
-
2458
-	// padding tablet.
2459
-	if ( isset( $args['pt_md'] ) && $args['pt_md'] !== '' ) {
2460
-		$classes[] = 'pt-md-' . sanitize_html_class( $args['pt_md'] );
2461
-		$pt_md     = $args['pt_md'];
2462
-	} else {
2463
-		$pt_md = null;
2464
-	}
2465
-	if ( isset( $args['pr_md'] ) && $args['pr_md'] !== '' ) {
2466
-		$classes[] = $p_pr . 'md-' . sanitize_html_class( $args['pr_md'] );
2467
-		$pr_md     = $args['pr_md'];
2468
-	} else {
2469
-		$pr_md = null;
2470
-	}
2471
-	if ( isset( $args['pb_md'] ) && $args['pb_md'] !== '' ) {
2472
-		$classes[] = 'pb-md-' . sanitize_html_class( $args['pb_md'] );
2473
-		$pb_md     = $args['pb_md'];
2474
-	} else {
2475
-		$pb_md = null;
2476
-	}
2477
-	if ( isset( $args['pl_md'] ) && $args['pl_md'] !== '' ) {
2478
-		$classes[] = $p_pl . 'md-' . sanitize_html_class( $args['pl_md'] );
2479
-		$pl_md     = $args['pl_md'];
2480
-	} else {
2481
-		$pl_md = null;
2482
-	}
2483
-
2484
-	// padding desktop.
2485
-	if ( isset( $args['pt_lg'] ) && $args['pt_lg'] !== '' ) {
2486
-		if ( $pt == null && $pt_md == null ) {
2487
-			$classes[] = 'pt-' . sanitize_html_class( $args['pt_lg'] );
2488
-		} else {
2489
-			$classes[] = 'pt-lg-' . sanitize_html_class( $args['pt_lg'] );
2490
-		}
2491
-	}
2492
-	if ( isset( $args['pr_lg'] ) && $args['pr_lg'] !== '' ) {
2493
-		if ( $pr == null && $pr_md == null ) {
2494
-			$classes[] = $p_pr . sanitize_html_class( $args['pr_lg'] );
2495
-		} else {
2496
-			$classes[] = $p_pr . 'lg-' . sanitize_html_class( $args['pr_lg'] );
2497
-		}
2498
-	}
2499
-	if ( isset( $args['pb_lg'] ) && $args['pb_lg'] !== '' ) {
2500
-		if ( $pb == null && $pb_md == null ) {
2501
-			$classes[] = 'pb-' . sanitize_html_class( $args['pb_lg'] );
2502
-		} else {
2503
-			$classes[] = 'pb-lg-' . sanitize_html_class( $args['pb_lg'] );
2504
-		}
2505
-	}
2506
-	if ( isset( $args['pl_lg'] ) && $args['pl_lg'] !== '' ) {
2507
-		if ( $pl == null && $pl_md == null ) {
2508
-			$classes[] = $p_pl . sanitize_html_class( $args['pl_lg'] );
2509
-		} else {
2510
-			$classes[] = $p_pl . 'lg-' . sanitize_html_class( $args['pl_lg'] );
2511
-		}
2512
-	}
2513
-
2514
-	// row cols, mobile, tablet, desktop
2515
-	if ( ! empty( $args['row_cols'] ) && $args['row_cols'] !== '' ) {
2516
-		$classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols'] );
2517
-		$row_cols  = $args['row_cols'];
2518
-	} else {
2519
-		$row_cols = null;
2520
-	}
2521
-	if ( ! empty( $args['row_cols_md'] ) && $args['row_cols_md'] !== '' ) {
2522
-		$classes[]   = sanitize_html_class( 'row-cols-md-' . $args['row_cols_md'] );
2523
-		$row_cols_md = $args['row_cols_md'];
2524
-	} else {
2525
-		$row_cols_md = null;
2526
-	}
2527
-	if ( ! empty( $args['row_cols_lg'] ) && $args['row_cols_lg'] !== '' ) {
2528
-		if ( $row_cols == null && $row_cols_md == null ) {
2529
-			$classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols_lg'] );
2530
-		} else {
2531
-			$classes[] = sanitize_html_class( 'row-cols-lg-' . $args['row_cols_lg'] );
2532
-		}
2533
-	}
2534
-
2535
-	// columns , mobile, tablet, desktop
2536
-	if ( ! empty( $args['col'] ) && $args['col'] !== '' ) {
2537
-		$classes[] = sanitize_html_class( 'col-' . $args['col'] );
2538
-		$col       = $args['col'];
2539
-	} else {
2540
-		$col = null;
2541
-	}
2542
-	if ( ! empty( $args['col_md'] ) && $args['col_md'] !== '' ) {
2543
-		$classes[] = sanitize_html_class( 'col-md-' . $args['col_md'] );
2544
-		$col_md    = $args['col_md'];
2545
-	} else {
2546
-		$col_md = null;
2547
-	}
2548
-	if ( ! empty( $args['col_lg'] ) && $args['col_lg'] !== '' ) {
2549
-		if ( $col == null && $col_md == null ) {
2550
-			$classes[] = sanitize_html_class( 'col-' . $args['col_lg'] );
2551
-		} else {
2552
-			$classes[] = sanitize_html_class( 'col-lg-' . $args['col_lg'] );
2553
-		}
2554
-	}
2555
-
2556
-	// border
2557
-	if ( isset( $args['border'] ) && ( $args['border'] == 'none' || $args['border'] === '0' || $args['border'] === 0 ) ) {
2558
-		$classes[] = 'border-0';
2559
-	} elseif ( ! empty( $args['border'] ) ) {
2560
-		$border_class = 'border';
2561
-		if ( ! empty( $args['border_type'] ) && strpos( $args['border_type'], '-0' ) === false ) {
2562
-			$border_class = '';
2563
-		}
2564
-		$classes[] = $border_class . ' border-' . sanitize_html_class( $args['border'] );
2565
-	}
2566
-
2567
-	// border radius type
2568
-	if ( ! empty( $args['rounded'] ) ) {
2569
-		$classes[] = sanitize_html_class( $args['rounded'] );
2570
-	}
2571
-
2572
-	// border radius size BS4
2573
-	if ( isset( $args['rounded_size'] ) && in_array( $args['rounded_size'], array( 'sm', 'lg' ) ) ) {
2574
-		$classes[] = 'rounded-' . sanitize_html_class( $args['rounded_size'] );
2575
-		// if we set a size then we need to remove "rounded" if set
2576
-		if ( ( $key = array_search( 'rounded', $classes ) ) !== false ) {
2577
-			unset( $classes[ $key ] );
2578
-		}
2579
-	} else {
2580
-
2581
-		// border radius size , mobile, tablet, desktop
2582
-		if ( isset( $args['rounded_size'] ) && $args['rounded_size'] !== '' ) {
2583
-			$classes[]    = sanitize_html_class( 'rounded-' . $args['rounded_size'] );
2584
-			$rounded_size = $args['rounded_size'];
2585
-		} else {
2586
-			$rounded_size = null;
2587
-		}
2588
-		if ( isset( $args['rounded_size_md'] ) && $args['rounded_size_md'] !== '' ) {
2589
-			$classes[]       = sanitize_html_class( 'rounded-md-' . $args['rounded_size_md'] );
2590
-			$rounded_size_md = $args['rounded_size_md'];
2591
-		} else {
2592
-			$rounded_size_md = null;
2593
-		}
2594
-		if ( isset( $args['rounded_size_lg'] ) && $args['rounded_size_lg'] !== '' ) {
2595
-			if ( $rounded_size == null && $rounded_size_md == null ) {
2596
-				$classes[] = sanitize_html_class( 'rounded-' . $args['rounded_size_lg'] );
2597
-			} else {
2598
-				$classes[] = sanitize_html_class( 'rounded-lg-' . $args['rounded_size_lg'] );
2599
-			}
2600
-		}
2601
-	}
2602
-
2603
-	// shadow
2604
-	//if ( !empty( $args['shadow'] ) ) { $classes[] = sanitize_html_class($args['shadow']); }
2605
-
2606
-	// background
2607
-	if ( ! empty( $args['bg'] ) ) {
2608
-		$classes[] = 'bg-' . sanitize_html_class( $args['bg'] );
2609
-	}
2610
-
2611
-	// background image fixed bg_image_fixed this helps fix a iOS bug
2612
-	if ( ! empty( $args['bg_image_fixed'] ) ) {
2613
-		$classes[] = 'bg-image-fixed';
2614
-	}
2615
-
2616
-	// text_color
2617
-	if ( ! empty( $args['text_color'] ) ) {
2618
-		$classes[] = 'text-' . sanitize_html_class( $args['text_color'] );
2619
-	}
2620
-
2621
-	// text_align
2622
-	if ( ! empty( $args['text_justify'] ) ) {
2623
-		$classes[] = 'text-justify';
2624
-	} else {
2625
-		if ( ! empty( $args['text_align'] ) ) {
2626
-			$classes[]  = sanitize_html_class( $args['text_align'] );
2627
-			$text_align = $args['text_align'];
2628
-		} else {
2629
-			$text_align = null;
2630
-		}
2631
-		if ( ! empty( $args['text_align_md'] ) && $args['text_align_md'] !== '' ) {
2632
-			$classes[]     = sanitize_html_class( $args['text_align_md'] );
2633
-			$text_align_md = $args['text_align_md'];
2634
-		} else {
2635
-			$text_align_md = null;
2636
-		}
2637
-		if ( ! empty( $args['text_align_lg'] ) && $args['text_align_lg'] !== '' ) {
2638
-			if ( $text_align == null && $text_align_md == null ) {
2639
-				$classes[] = sanitize_html_class( str_replace( '-lg', '', $args['text_align_lg'] ) );
2640
-			} else {
2641
-				$classes[] = sanitize_html_class( $args['text_align_lg'] );
2642
-			}
2643
-		}
2644
-	}
2645
-
2646
-	// display
2647
-	if ( ! empty( $args['display'] ) ) {
2648
-		$classes[] = sanitize_html_class( $args['display'] );
2649
-		$display   = $args['display'];
2650
-	} else {
2651
-		$display = null;
2652
-	}
2653
-	if ( ! empty( $args['display_md'] ) && $args['display_md'] !== '' ) {
2654
-		$classes[]  = sanitize_html_class( $args['display_md'] );
2655
-		$display_md = $args['display_md'];
2656
-	} else {
2657
-		$display_md = null;
2658
-	}
2659
-	if ( ! empty( $args['display_lg'] ) && $args['display_lg'] !== '' ) {
2660
-		if ( $display == null && $display_md == null ) {
2661
-			$classes[] = sanitize_html_class( str_replace( '-lg', '', $args['display_lg'] ) );
2662
-		} else {
2663
-			$classes[] = sanitize_html_class( $args['display_lg'] );
2664
-		}
2665
-	}
2666
-
2667
-	// bgtus - background transparent until scroll
2668
-	if ( ! empty( $args['bgtus'] ) ) {
2669
-		$classes[] = sanitize_html_class( 'bg-transparent-until-scroll' );
2670
-	}
2671
-
2672
-	// cscos - change color scheme on scroll
2673
-	if ( ! empty( $args['bgtus'] ) && ! empty( $args['cscos'] ) ) {
2674
-		$classes[] = sanitize_html_class( 'color-scheme-flip-on-scroll' );
2675
-	}
2676
-
2677
-	// hover animations
2678
-	if ( ! empty( $args['hover_animations'] ) ) {
2679
-		$classes[] = sd_sanitize_html_classes( str_replace( ',', ' ', $args['hover_animations'] ) );
2680
-	}
2681
-
2682
-	// absolute_position
2683
-	if ( ! empty( $args['absolute_position'] ) ) {
2684
-		if ( 'top-left' === $args['absolute_position'] ) {
2685
-			$classes[] = 'start-0 top-0';
2686
-		} elseif ( 'top-center' === $args['absolute_position'] ) {
2687
-			$classes[] = 'start-50 top-0 translate-middle';
2688
-		} elseif ( 'top-right' === $args['absolute_position'] ) {
2689
-			$classes[] = 'end-0 top-0';
2690
-		} elseif ( 'center-left' === $args['absolute_position'] ) {
2691
-			$classes[] = 'start-0 top-50';
2692
-		} elseif ( 'center' === $args['absolute_position'] ) {
2693
-			$classes[] = 'start-50 top-50 translate-middle';
2694
-		} elseif ( 'center-right' === $args['absolute_position'] ) {
2695
-			$classes[] = 'end-0 top-50';
2696
-		} elseif ( 'bottom-left' === $args['absolute_position'] ) {
2697
-			$classes[] = 'start-0 bottom-0';
2698
-		} elseif ( 'bottom-center' === $args['absolute_position'] ) {
2699
-			$classes[] = 'start-50 bottom-0 translate-middle';
2700
-		} elseif ( 'bottom-right' === $args['absolute_position'] ) {
2701
-			$classes[] = 'end-0 bottom-0';
2702
-		}
2703
-	}
2704
-
2705
-	// build classes from build keys
2706
-	$build_keys = sd_get_class_build_keys();
2707
-	if ( ! empty( $build_keys ) ) {
2708
-		foreach ( $build_keys as $key ) {
2709
-
2710
-			if ( substr( $key, -4 ) == '-MTD' ) {
2711
-
2712
-				$k = str_replace( '-MTD', '', $key );
2713
-
2714
-				// Mobile, Tablet, Desktop
2715
-				if ( ! empty( $args[ $k ] ) && $args[ $k ] !== '' ) {
2716
-					$classes[] = sanitize_html_class( $args[ $k ] );
2717
-					$v         = $args[ $k ];
2718
-				} else {
2719
-					$v = null;
2720
-				}
2721
-				if ( ! empty( $args[ $k . '_md' ] ) && $args[ $k . '_md' ] !== '' ) {
2722
-					$classes[] = sanitize_html_class( $args[ $k . '_md' ] );
2723
-					$v_md      = $args[ $k . '_md' ];
2724
-				} else {
2725
-					$v_md = null;
2726
-				}
2727
-				if ( ! empty( $args[ $k . '_lg' ] ) && $args[ $k . '_lg' ] !== '' ) {
2728
-					if ( $v == null && $v_md == null ) {
2729
-						$classes[] = sanitize_html_class( str_replace( '-lg', '', $args[ $k . '_lg' ] ) );
2730
-					} else {
2731
-						$classes[] = sanitize_html_class( $args[ $k . '_lg' ] );
2732
-					}
2733
-				}
2734
-			} else {
2735
-				if ( $key == 'font_size' && ! empty( $args[ $key ] ) && $args[ $key ] == 'custom' ) {
2736
-					continue;
2737
-				}
2738
-				if ( ! empty( $args[ $key ] ) ) {
2739
-					$classes[] = sd_sanitize_html_classes( $args[ $key ] );
2740
-				}
2741
-			}
2742
-		}
2743
-	}
2744
-
2745
-	if ( ! empty( $classes ) ) {
2746
-		$classes = array_unique( array_filter( array_map( 'trim', $classes ) ) );
2747
-	}
2748
-
2749
-	return implode( ' ', $classes );
2332
+    global $aui_bs5;
2333
+
2334
+    $classes = array();
2335
+
2336
+    if ( $aui_bs5 ) {
2337
+        $p_ml = 'ms-';
2338
+        $p_mr = 'me-';
2339
+
2340
+        $p_pl = 'ps-';
2341
+        $p_pr = 'pe-';
2342
+    } else {
2343
+        $p_ml = 'ml-';
2344
+        $p_mr = 'mr-';
2345
+
2346
+        $p_pl = 'pl-';
2347
+        $p_pr = 'pr-';
2348
+    }
2349
+
2350
+    // margins.
2351
+    if ( isset( $args['mt'] ) && $args['mt'] !== '' ) {
2352
+        $classes[] = 'mt-' . sanitize_html_class( $args['mt'] );
2353
+        $mt        = $args['mt'];
2354
+    } else {
2355
+        $mt = null;
2356
+    }
2357
+    if ( isset( $args['mr'] ) && $args['mr'] !== '' ) {
2358
+        $classes[] = $p_mr . sanitize_html_class( $args['mr'] );
2359
+        $mr        = $args['mr'];
2360
+    } else {
2361
+        $mr = null;
2362
+    }
2363
+    if ( isset( $args['mb'] ) && $args['mb'] !== '' ) {
2364
+        $classes[] = 'mb-' . sanitize_html_class( $args['mb'] );
2365
+        $mb        = $args['mb'];
2366
+    } else {
2367
+        $mb = null;
2368
+    }
2369
+    if ( isset( $args['ml'] ) && $args['ml'] !== '' ) {
2370
+        $classes[] = $p_ml . sanitize_html_class( $args['ml'] );
2371
+        $ml        = $args['ml'];
2372
+    } else {
2373
+        $ml = null;
2374
+    }
2375
+
2376
+    // margins tablet.
2377
+    if ( isset( $args['mt_md'] ) && $args['mt_md'] !== '' ) {
2378
+        $classes[] = 'mt-md-' . sanitize_html_class( $args['mt_md'] );
2379
+        $mt_md     = $args['mt_md'];
2380
+    } else {
2381
+        $mt_md = null;
2382
+    }
2383
+    if ( isset( $args['mr_md'] ) && $args['mr_md'] !== '' ) {
2384
+        $classes[] = $p_mr . 'md-' . sanitize_html_class( $args['mr_md'] );
2385
+        $mt_md     = $args['mr_md'];
2386
+    } else {
2387
+        $mr_md = null;
2388
+    }
2389
+    if ( isset( $args['mb_md'] ) && $args['mb_md'] !== '' ) {
2390
+        $classes[] = 'mb-md-' . sanitize_html_class( $args['mb_md'] );
2391
+        $mt_md     = $args['mb_md'];
2392
+    } else {
2393
+        $mb_md = null;
2394
+    }
2395
+    if ( isset( $args['ml_md'] ) && $args['ml_md'] !== '' ) {
2396
+        $classes[] = $p_ml . 'md-' . sanitize_html_class( $args['ml_md'] );
2397
+        $mt_md     = $args['ml_md'];
2398
+    } else {
2399
+        $ml_md = null;
2400
+    }
2401
+
2402
+    // margins desktop.
2403
+    if ( isset( $args['mt_lg'] ) && $args['mt_lg'] !== '' ) {
2404
+        if ( $mt == null && $mt_md == null ) {
2405
+            $classes[] = 'mt-' . sanitize_html_class( $args['mt_lg'] );
2406
+        } else {
2407
+            $classes[] = 'mt-lg-' . sanitize_html_class( $args['mt_lg'] );
2408
+        }
2409
+    }
2410
+    if ( isset( $args['mr_lg'] ) && $args['mr_lg'] !== '' ) {
2411
+        if ( $mr == null && $mr_md == null ) {
2412
+            $classes[] = $p_mr . sanitize_html_class( $args['mr_lg'] );
2413
+        } else {
2414
+            $classes[] = $p_mr . 'lg-' . sanitize_html_class( $args['mr_lg'] );
2415
+        }
2416
+    }
2417
+    if ( isset( $args['mb_lg'] ) && $args['mb_lg'] !== '' ) {
2418
+        if ( $mb == null && $mb_md == null ) {
2419
+            $classes[] = 'mb-' . sanitize_html_class( $args['mb_lg'] );
2420
+        } else {
2421
+            $classes[] = 'mb-lg-' . sanitize_html_class( $args['mb_lg'] );
2422
+        }
2423
+    }
2424
+    if ( isset( $args['ml_lg'] ) && $args['ml_lg'] !== '' ) {
2425
+        if ( $ml == null && $ml_md == null ) {
2426
+            $classes[] = $p_ml . sanitize_html_class( $args['ml_lg'] );
2427
+        } else {
2428
+            $classes[] = $p_ml . 'lg-' . sanitize_html_class( $args['ml_lg'] );
2429
+        }
2430
+    }
2431
+
2432
+    // padding.
2433
+    if ( isset( $args['pt'] ) && $args['pt'] !== '' ) {
2434
+        $classes[] = 'pt-' . sanitize_html_class( $args['pt'] );
2435
+        $pt        = $args['pt'];
2436
+    } else {
2437
+        $pt = null;
2438
+    }
2439
+    if ( isset( $args['pr'] ) && $args['pr'] !== '' ) {
2440
+        $classes[] = $p_pr . sanitize_html_class( $args['pr'] );
2441
+        $pr        = $args['pr'];
2442
+    } else {
2443
+        $pr = null;
2444
+    }
2445
+    if ( isset( $args['pb'] ) && $args['pb'] !== '' ) {
2446
+        $classes[] = 'pb-' . sanitize_html_class( $args['pb'] );
2447
+        $pb        = $args['pb'];
2448
+    } else {
2449
+        $pb = null;
2450
+    }
2451
+    if ( isset( $args['pl'] ) && $args['pl'] !== '' ) {
2452
+        $classes[] = $p_pl . sanitize_html_class( $args['pl'] );
2453
+        $pl        = $args['pl'];
2454
+    } else {
2455
+        $pl = null;
2456
+    }
2457
+
2458
+    // padding tablet.
2459
+    if ( isset( $args['pt_md'] ) && $args['pt_md'] !== '' ) {
2460
+        $classes[] = 'pt-md-' . sanitize_html_class( $args['pt_md'] );
2461
+        $pt_md     = $args['pt_md'];
2462
+    } else {
2463
+        $pt_md = null;
2464
+    }
2465
+    if ( isset( $args['pr_md'] ) && $args['pr_md'] !== '' ) {
2466
+        $classes[] = $p_pr . 'md-' . sanitize_html_class( $args['pr_md'] );
2467
+        $pr_md     = $args['pr_md'];
2468
+    } else {
2469
+        $pr_md = null;
2470
+    }
2471
+    if ( isset( $args['pb_md'] ) && $args['pb_md'] !== '' ) {
2472
+        $classes[] = 'pb-md-' . sanitize_html_class( $args['pb_md'] );
2473
+        $pb_md     = $args['pb_md'];
2474
+    } else {
2475
+        $pb_md = null;
2476
+    }
2477
+    if ( isset( $args['pl_md'] ) && $args['pl_md'] !== '' ) {
2478
+        $classes[] = $p_pl . 'md-' . sanitize_html_class( $args['pl_md'] );
2479
+        $pl_md     = $args['pl_md'];
2480
+    } else {
2481
+        $pl_md = null;
2482
+    }
2483
+
2484
+    // padding desktop.
2485
+    if ( isset( $args['pt_lg'] ) && $args['pt_lg'] !== '' ) {
2486
+        if ( $pt == null && $pt_md == null ) {
2487
+            $classes[] = 'pt-' . sanitize_html_class( $args['pt_lg'] );
2488
+        } else {
2489
+            $classes[] = 'pt-lg-' . sanitize_html_class( $args['pt_lg'] );
2490
+        }
2491
+    }
2492
+    if ( isset( $args['pr_lg'] ) && $args['pr_lg'] !== '' ) {
2493
+        if ( $pr == null && $pr_md == null ) {
2494
+            $classes[] = $p_pr . sanitize_html_class( $args['pr_lg'] );
2495
+        } else {
2496
+            $classes[] = $p_pr . 'lg-' . sanitize_html_class( $args['pr_lg'] );
2497
+        }
2498
+    }
2499
+    if ( isset( $args['pb_lg'] ) && $args['pb_lg'] !== '' ) {
2500
+        if ( $pb == null && $pb_md == null ) {
2501
+            $classes[] = 'pb-' . sanitize_html_class( $args['pb_lg'] );
2502
+        } else {
2503
+            $classes[] = 'pb-lg-' . sanitize_html_class( $args['pb_lg'] );
2504
+        }
2505
+    }
2506
+    if ( isset( $args['pl_lg'] ) && $args['pl_lg'] !== '' ) {
2507
+        if ( $pl == null && $pl_md == null ) {
2508
+            $classes[] = $p_pl . sanitize_html_class( $args['pl_lg'] );
2509
+        } else {
2510
+            $classes[] = $p_pl . 'lg-' . sanitize_html_class( $args['pl_lg'] );
2511
+        }
2512
+    }
2513
+
2514
+    // row cols, mobile, tablet, desktop
2515
+    if ( ! empty( $args['row_cols'] ) && $args['row_cols'] !== '' ) {
2516
+        $classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols'] );
2517
+        $row_cols  = $args['row_cols'];
2518
+    } else {
2519
+        $row_cols = null;
2520
+    }
2521
+    if ( ! empty( $args['row_cols_md'] ) && $args['row_cols_md'] !== '' ) {
2522
+        $classes[]   = sanitize_html_class( 'row-cols-md-' . $args['row_cols_md'] );
2523
+        $row_cols_md = $args['row_cols_md'];
2524
+    } else {
2525
+        $row_cols_md = null;
2526
+    }
2527
+    if ( ! empty( $args['row_cols_lg'] ) && $args['row_cols_lg'] !== '' ) {
2528
+        if ( $row_cols == null && $row_cols_md == null ) {
2529
+            $classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols_lg'] );
2530
+        } else {
2531
+            $classes[] = sanitize_html_class( 'row-cols-lg-' . $args['row_cols_lg'] );
2532
+        }
2533
+    }
2534
+
2535
+    // columns , mobile, tablet, desktop
2536
+    if ( ! empty( $args['col'] ) && $args['col'] !== '' ) {
2537
+        $classes[] = sanitize_html_class( 'col-' . $args['col'] );
2538
+        $col       = $args['col'];
2539
+    } else {
2540
+        $col = null;
2541
+    }
2542
+    if ( ! empty( $args['col_md'] ) && $args['col_md'] !== '' ) {
2543
+        $classes[] = sanitize_html_class( 'col-md-' . $args['col_md'] );
2544
+        $col_md    = $args['col_md'];
2545
+    } else {
2546
+        $col_md = null;
2547
+    }
2548
+    if ( ! empty( $args['col_lg'] ) && $args['col_lg'] !== '' ) {
2549
+        if ( $col == null && $col_md == null ) {
2550
+            $classes[] = sanitize_html_class( 'col-' . $args['col_lg'] );
2551
+        } else {
2552
+            $classes[] = sanitize_html_class( 'col-lg-' . $args['col_lg'] );
2553
+        }
2554
+    }
2555
+
2556
+    // border
2557
+    if ( isset( $args['border'] ) && ( $args['border'] == 'none' || $args['border'] === '0' || $args['border'] === 0 ) ) {
2558
+        $classes[] = 'border-0';
2559
+    } elseif ( ! empty( $args['border'] ) ) {
2560
+        $border_class = 'border';
2561
+        if ( ! empty( $args['border_type'] ) && strpos( $args['border_type'], '-0' ) === false ) {
2562
+            $border_class = '';
2563
+        }
2564
+        $classes[] = $border_class . ' border-' . sanitize_html_class( $args['border'] );
2565
+    }
2566
+
2567
+    // border radius type
2568
+    if ( ! empty( $args['rounded'] ) ) {
2569
+        $classes[] = sanitize_html_class( $args['rounded'] );
2570
+    }
2571
+
2572
+    // border radius size BS4
2573
+    if ( isset( $args['rounded_size'] ) && in_array( $args['rounded_size'], array( 'sm', 'lg' ) ) ) {
2574
+        $classes[] = 'rounded-' . sanitize_html_class( $args['rounded_size'] );
2575
+        // if we set a size then we need to remove "rounded" if set
2576
+        if ( ( $key = array_search( 'rounded', $classes ) ) !== false ) {
2577
+            unset( $classes[ $key ] );
2578
+        }
2579
+    } else {
2580
+
2581
+        // border radius size , mobile, tablet, desktop
2582
+        if ( isset( $args['rounded_size'] ) && $args['rounded_size'] !== '' ) {
2583
+            $classes[]    = sanitize_html_class( 'rounded-' . $args['rounded_size'] );
2584
+            $rounded_size = $args['rounded_size'];
2585
+        } else {
2586
+            $rounded_size = null;
2587
+        }
2588
+        if ( isset( $args['rounded_size_md'] ) && $args['rounded_size_md'] !== '' ) {
2589
+            $classes[]       = sanitize_html_class( 'rounded-md-' . $args['rounded_size_md'] );
2590
+            $rounded_size_md = $args['rounded_size_md'];
2591
+        } else {
2592
+            $rounded_size_md = null;
2593
+        }
2594
+        if ( isset( $args['rounded_size_lg'] ) && $args['rounded_size_lg'] !== '' ) {
2595
+            if ( $rounded_size == null && $rounded_size_md == null ) {
2596
+                $classes[] = sanitize_html_class( 'rounded-' . $args['rounded_size_lg'] );
2597
+            } else {
2598
+                $classes[] = sanitize_html_class( 'rounded-lg-' . $args['rounded_size_lg'] );
2599
+            }
2600
+        }
2601
+    }
2602
+
2603
+    // shadow
2604
+    //if ( !empty( $args['shadow'] ) ) { $classes[] = sanitize_html_class($args['shadow']); }
2605
+
2606
+    // background
2607
+    if ( ! empty( $args['bg'] ) ) {
2608
+        $classes[] = 'bg-' . sanitize_html_class( $args['bg'] );
2609
+    }
2610
+
2611
+    // background image fixed bg_image_fixed this helps fix a iOS bug
2612
+    if ( ! empty( $args['bg_image_fixed'] ) ) {
2613
+        $classes[] = 'bg-image-fixed';
2614
+    }
2615
+
2616
+    // text_color
2617
+    if ( ! empty( $args['text_color'] ) ) {
2618
+        $classes[] = 'text-' . sanitize_html_class( $args['text_color'] );
2619
+    }
2620
+
2621
+    // text_align
2622
+    if ( ! empty( $args['text_justify'] ) ) {
2623
+        $classes[] = 'text-justify';
2624
+    } else {
2625
+        if ( ! empty( $args['text_align'] ) ) {
2626
+            $classes[]  = sanitize_html_class( $args['text_align'] );
2627
+            $text_align = $args['text_align'];
2628
+        } else {
2629
+            $text_align = null;
2630
+        }
2631
+        if ( ! empty( $args['text_align_md'] ) && $args['text_align_md'] !== '' ) {
2632
+            $classes[]     = sanitize_html_class( $args['text_align_md'] );
2633
+            $text_align_md = $args['text_align_md'];
2634
+        } else {
2635
+            $text_align_md = null;
2636
+        }
2637
+        if ( ! empty( $args['text_align_lg'] ) && $args['text_align_lg'] !== '' ) {
2638
+            if ( $text_align == null && $text_align_md == null ) {
2639
+                $classes[] = sanitize_html_class( str_replace( '-lg', '', $args['text_align_lg'] ) );
2640
+            } else {
2641
+                $classes[] = sanitize_html_class( $args['text_align_lg'] );
2642
+            }
2643
+        }
2644
+    }
2645
+
2646
+    // display
2647
+    if ( ! empty( $args['display'] ) ) {
2648
+        $classes[] = sanitize_html_class( $args['display'] );
2649
+        $display   = $args['display'];
2650
+    } else {
2651
+        $display = null;
2652
+    }
2653
+    if ( ! empty( $args['display_md'] ) && $args['display_md'] !== '' ) {
2654
+        $classes[]  = sanitize_html_class( $args['display_md'] );
2655
+        $display_md = $args['display_md'];
2656
+    } else {
2657
+        $display_md = null;
2658
+    }
2659
+    if ( ! empty( $args['display_lg'] ) && $args['display_lg'] !== '' ) {
2660
+        if ( $display == null && $display_md == null ) {
2661
+            $classes[] = sanitize_html_class( str_replace( '-lg', '', $args['display_lg'] ) );
2662
+        } else {
2663
+            $classes[] = sanitize_html_class( $args['display_lg'] );
2664
+        }
2665
+    }
2666
+
2667
+    // bgtus - background transparent until scroll
2668
+    if ( ! empty( $args['bgtus'] ) ) {
2669
+        $classes[] = sanitize_html_class( 'bg-transparent-until-scroll' );
2670
+    }
2671
+
2672
+    // cscos - change color scheme on scroll
2673
+    if ( ! empty( $args['bgtus'] ) && ! empty( $args['cscos'] ) ) {
2674
+        $classes[] = sanitize_html_class( 'color-scheme-flip-on-scroll' );
2675
+    }
2676
+
2677
+    // hover animations
2678
+    if ( ! empty( $args['hover_animations'] ) ) {
2679
+        $classes[] = sd_sanitize_html_classes( str_replace( ',', ' ', $args['hover_animations'] ) );
2680
+    }
2681
+
2682
+    // absolute_position
2683
+    if ( ! empty( $args['absolute_position'] ) ) {
2684
+        if ( 'top-left' === $args['absolute_position'] ) {
2685
+            $classes[] = 'start-0 top-0';
2686
+        } elseif ( 'top-center' === $args['absolute_position'] ) {
2687
+            $classes[] = 'start-50 top-0 translate-middle';
2688
+        } elseif ( 'top-right' === $args['absolute_position'] ) {
2689
+            $classes[] = 'end-0 top-0';
2690
+        } elseif ( 'center-left' === $args['absolute_position'] ) {
2691
+            $classes[] = 'start-0 top-50';
2692
+        } elseif ( 'center' === $args['absolute_position'] ) {
2693
+            $classes[] = 'start-50 top-50 translate-middle';
2694
+        } elseif ( 'center-right' === $args['absolute_position'] ) {
2695
+            $classes[] = 'end-0 top-50';
2696
+        } elseif ( 'bottom-left' === $args['absolute_position'] ) {
2697
+            $classes[] = 'start-0 bottom-0';
2698
+        } elseif ( 'bottom-center' === $args['absolute_position'] ) {
2699
+            $classes[] = 'start-50 bottom-0 translate-middle';
2700
+        } elseif ( 'bottom-right' === $args['absolute_position'] ) {
2701
+            $classes[] = 'end-0 bottom-0';
2702
+        }
2703
+    }
2704
+
2705
+    // build classes from build keys
2706
+    $build_keys = sd_get_class_build_keys();
2707
+    if ( ! empty( $build_keys ) ) {
2708
+        foreach ( $build_keys as $key ) {
2709
+
2710
+            if ( substr( $key, -4 ) == '-MTD' ) {
2711
+
2712
+                $k = str_replace( '-MTD', '', $key );
2713
+
2714
+                // Mobile, Tablet, Desktop
2715
+                if ( ! empty( $args[ $k ] ) && $args[ $k ] !== '' ) {
2716
+                    $classes[] = sanitize_html_class( $args[ $k ] );
2717
+                    $v         = $args[ $k ];
2718
+                } else {
2719
+                    $v = null;
2720
+                }
2721
+                if ( ! empty( $args[ $k . '_md' ] ) && $args[ $k . '_md' ] !== '' ) {
2722
+                    $classes[] = sanitize_html_class( $args[ $k . '_md' ] );
2723
+                    $v_md      = $args[ $k . '_md' ];
2724
+                } else {
2725
+                    $v_md = null;
2726
+                }
2727
+                if ( ! empty( $args[ $k . '_lg' ] ) && $args[ $k . '_lg' ] !== '' ) {
2728
+                    if ( $v == null && $v_md == null ) {
2729
+                        $classes[] = sanitize_html_class( str_replace( '-lg', '', $args[ $k . '_lg' ] ) );
2730
+                    } else {
2731
+                        $classes[] = sanitize_html_class( $args[ $k . '_lg' ] );
2732
+                    }
2733
+                }
2734
+            } else {
2735
+                if ( $key == 'font_size' && ! empty( $args[ $key ] ) && $args[ $key ] == 'custom' ) {
2736
+                    continue;
2737
+                }
2738
+                if ( ! empty( $args[ $key ] ) ) {
2739
+                    $classes[] = sd_sanitize_html_classes( $args[ $key ] );
2740
+                }
2741
+            }
2742
+        }
2743
+    }
2744
+
2745
+    if ( ! empty( $classes ) ) {
2746
+        $classes = array_unique( array_filter( array_map( 'trim', $classes ) ) );
2747
+    }
2748
+
2749
+    return implode( ' ', $classes );
2750 2750
 }
2751 2751
 
2752 2752
 /**
@@ -2758,90 +2758,90 @@  discard block
 block discarded – undo
2758 2758
  */
2759 2759
 function sd_build_aui_styles( $args ) {
2760 2760
 
2761
-	$styles = array();
2762
-
2763
-	// background color
2764
-	if ( ! empty( $args['bg'] ) && $args['bg'] !== '' ) {
2765
-		if ( $args['bg'] == 'custom-color' ) {
2766
-			$styles['background-color'] = $args['bg_color'];
2767
-		} elseif ( $args['bg'] == 'custom-gradient' ) {
2768
-			$styles['background-image'] = $args['bg_gradient'];
2769
-
2770
-			// use background on text.
2771
-			if ( ! empty( $args['bg_on_text'] ) && $args['bg_on_text'] ) {
2772
-				$styles['background-clip']         = 'text';
2773
-				$styles['-webkit-background-clip'] = 'text';
2774
-				$styles['text-fill-color']         = 'transparent';
2775
-				$styles['-webkit-text-fill-color'] = 'transparent';
2776
-			}
2777
-		}
2778
-	}
2779
-
2780
-	if ( ! empty( $args['bg_image'] ) && $args['bg_image'] !== '' ) {
2781
-		$hasImage = true;
2782
-		if ( ! empty( $styles['background-color'] ) && $args['bg'] == 'custom-color' ) {
2783
-			$styles['background-image']      = 'url(' . $args['bg_image'] . ')';
2784
-			$styles['background-blend-mode'] = 'overlay';
2785
-		} elseif ( ! empty( $styles['background-image'] ) && $args['bg'] == 'custom-gradient' ) {
2786
-			$styles['background-image'] .= ',url(' . $args['bg_image'] . ')';
2787
-		} elseif ( ! empty( $args['bg'] ) && $args['bg'] != '' && $args['bg'] != 'transparent' ) {
2788
-			// do nothing as we alreay have a preset
2789
-			$hasImage = false;
2790
-		} else {
2791
-			$styles['background-image'] = 'url(' . $args['bg_image'] . ')';
2792
-		}
2793
-
2794
-		if ( $hasImage ) {
2795
-			$styles['background-size'] = 'cover';
2796
-
2797
-			if ( ! empty( $args['bg_image_fixed'] ) && $args['bg_image_fixed'] ) {
2798
-				$styles['background-attachment'] = 'fixed';
2799
-			}
2800
-		}
2801
-
2802
-		if ( $hasImage && ! empty( $args['bg_image_xy'] ) && ! empty( $args['bg_image_xy']['x'] ) ) {
2803
-			$styles['background-position'] = ( $args['bg_image_xy']['x'] * 100 ) . '% ' . ( $args['bg_image_xy']['y'] * 100 ) . '%';
2804
-		}
2805
-	}
2806
-
2807
-	// sticky offset top
2808
-	if ( ! empty( $args['sticky_offset_top'] ) && $args['sticky_offset_top'] !== '' ) {
2809
-		$styles['top'] = absint( $args['sticky_offset_top'] );
2810
-	}
2811
-
2812
-	// sticky offset bottom
2813
-	if ( ! empty( $args['sticky_offset_bottom'] ) && $args['sticky_offset_bottom'] !== '' ) {
2814
-		$styles['bottom'] = absint( $args['sticky_offset_bottom'] );
2815
-	}
2816
-
2817
-	// font size
2818
-	if ( ! empty( $args['font_size_custom'] ) && $args['font_size_custom'] !== '' ) {
2819
-		$styles['font-size'] = (float) $args['font_size_custom'] . 'rem';
2820
-	}
2821
-
2822
-	// font color
2823
-	if ( ! empty( $args['text_color_custom'] ) && $args['text_color_custom'] !== '' ) {
2824
-		$styles['color'] = esc_attr( $args['text_color_custom'] );
2825
-	}
2826
-
2827
-	// font line height
2828
-	if ( ! empty( $args['font_line_height'] ) && $args['font_line_height'] !== '' ) {
2829
-		$styles['line-height'] = esc_attr( $args['font_line_height'] );
2830
-	}
2831
-
2832
-	// max height
2833
-	if ( ! empty( $args['max_height'] ) && $args['max_height'] !== '' ) {
2834
-		$styles['max-height'] = esc_attr( $args['max_height'] );
2835
-	}
2836
-
2837
-	$style_string = '';
2838
-	if ( ! empty( $styles ) ) {
2839
-		foreach ( $styles as $key => $val ) {
2840
-			$style_string .= esc_attr( $key ) . ':' . esc_attr( $val ) . ';';
2841
-		}
2842
-	}
2843
-
2844
-	return $style_string;
2761
+    $styles = array();
2762
+
2763
+    // background color
2764
+    if ( ! empty( $args['bg'] ) && $args['bg'] !== '' ) {
2765
+        if ( $args['bg'] == 'custom-color' ) {
2766
+            $styles['background-color'] = $args['bg_color'];
2767
+        } elseif ( $args['bg'] == 'custom-gradient' ) {
2768
+            $styles['background-image'] = $args['bg_gradient'];
2769
+
2770
+            // use background on text.
2771
+            if ( ! empty( $args['bg_on_text'] ) && $args['bg_on_text'] ) {
2772
+                $styles['background-clip']         = 'text';
2773
+                $styles['-webkit-background-clip'] = 'text';
2774
+                $styles['text-fill-color']         = 'transparent';
2775
+                $styles['-webkit-text-fill-color'] = 'transparent';
2776
+            }
2777
+        }
2778
+    }
2779
+
2780
+    if ( ! empty( $args['bg_image'] ) && $args['bg_image'] !== '' ) {
2781
+        $hasImage = true;
2782
+        if ( ! empty( $styles['background-color'] ) && $args['bg'] == 'custom-color' ) {
2783
+            $styles['background-image']      = 'url(' . $args['bg_image'] . ')';
2784
+            $styles['background-blend-mode'] = 'overlay';
2785
+        } elseif ( ! empty( $styles['background-image'] ) && $args['bg'] == 'custom-gradient' ) {
2786
+            $styles['background-image'] .= ',url(' . $args['bg_image'] . ')';
2787
+        } elseif ( ! empty( $args['bg'] ) && $args['bg'] != '' && $args['bg'] != 'transparent' ) {
2788
+            // do nothing as we alreay have a preset
2789
+            $hasImage = false;
2790
+        } else {
2791
+            $styles['background-image'] = 'url(' . $args['bg_image'] . ')';
2792
+        }
2793
+
2794
+        if ( $hasImage ) {
2795
+            $styles['background-size'] = 'cover';
2796
+
2797
+            if ( ! empty( $args['bg_image_fixed'] ) && $args['bg_image_fixed'] ) {
2798
+                $styles['background-attachment'] = 'fixed';
2799
+            }
2800
+        }
2801
+
2802
+        if ( $hasImage && ! empty( $args['bg_image_xy'] ) && ! empty( $args['bg_image_xy']['x'] ) ) {
2803
+            $styles['background-position'] = ( $args['bg_image_xy']['x'] * 100 ) . '% ' . ( $args['bg_image_xy']['y'] * 100 ) . '%';
2804
+        }
2805
+    }
2806
+
2807
+    // sticky offset top
2808
+    if ( ! empty( $args['sticky_offset_top'] ) && $args['sticky_offset_top'] !== '' ) {
2809
+        $styles['top'] = absint( $args['sticky_offset_top'] );
2810
+    }
2811
+
2812
+    // sticky offset bottom
2813
+    if ( ! empty( $args['sticky_offset_bottom'] ) && $args['sticky_offset_bottom'] !== '' ) {
2814
+        $styles['bottom'] = absint( $args['sticky_offset_bottom'] );
2815
+    }
2816
+
2817
+    // font size
2818
+    if ( ! empty( $args['font_size_custom'] ) && $args['font_size_custom'] !== '' ) {
2819
+        $styles['font-size'] = (float) $args['font_size_custom'] . 'rem';
2820
+    }
2821
+
2822
+    // font color
2823
+    if ( ! empty( $args['text_color_custom'] ) && $args['text_color_custom'] !== '' ) {
2824
+        $styles['color'] = esc_attr( $args['text_color_custom'] );
2825
+    }
2826
+
2827
+    // font line height
2828
+    if ( ! empty( $args['font_line_height'] ) && $args['font_line_height'] !== '' ) {
2829
+        $styles['line-height'] = esc_attr( $args['font_line_height'] );
2830
+    }
2831
+
2832
+    // max height
2833
+    if ( ! empty( $args['max_height'] ) && $args['max_height'] !== '' ) {
2834
+        $styles['max-height'] = esc_attr( $args['max_height'] );
2835
+    }
2836
+
2837
+    $style_string = '';
2838
+    if ( ! empty( $styles ) ) {
2839
+        foreach ( $styles as $key => $val ) {
2840
+            $style_string .= esc_attr( $key ) . ':' . esc_attr( $val ) . ';';
2841
+        }
2842
+    }
2843
+
2844
+    return $style_string;
2845 2845
 
2846 2846
 }
2847 2847
 
@@ -2854,34 +2854,34 @@  discard block
 block discarded – undo
2854 2854
  * @return string
2855 2855
  */
2856 2856
 function sd_build_hover_styles( $args, $is_preview = false ) {
2857
-	$rules = '';
2858
-	// text color
2859
-	if ( ! empty( $args['styleid'] ) ) {
2860
-		$styleid = $is_preview ? 'html .editor-styles-wrapper .' . esc_attr( $args['styleid'] ) : 'html .' . esc_attr( $args['styleid'] );
2861
-
2862
-		// text
2863
-		if ( ! empty( $args['text_color_hover'] ) ) {
2864
-			$key    = 'custom' === $args['text_color_hover'] && ! empty( $args['text_color_hover_custom'] ) ? 'text_color_hover_custom' : 'text_color_hover';
2865
-			$color  = sd_get_color_from_var( $args[ $key ] );
2866
-			$rules .= $styleid . ':hover {color: ' . $color . ' !important;} ';
2867
-		}
2868
-
2869
-		// bg
2870
-		if ( ! empty( $args['bg_hover'] ) ) {
2871
-			if ( 'custom-gradient' === $args['bg_hover'] ) {
2872
-				$color  = $args['bg_hover_gradient'];
2873
-				$rules .= $styleid . ':hover {background-image: ' . $color . ' !important;} ';
2874
-				$rules .= $styleid . '.btn:hover {border-color: transparent !important;} ';
2875
-			} else {
2876
-				$key    = 'custom-color' === $args['bg_hover'] ? 'bg_hover_color' : 'bg_hover';
2877
-				$color  = sd_get_color_from_var( $args[ $key ] );
2878
-				$rules .= $styleid . ':hover {background: ' . $color . ' !important;} ';
2879
-				$rules .= $styleid . '.btn:hover {border-color: ' . $color . ' !important;} ';
2880
-			}
2881
-		}
2882
-	}
2883
-
2884
-	return $rules ? '<style>' . $rules . '</style>' : '';
2857
+    $rules = '';
2858
+    // text color
2859
+    if ( ! empty( $args['styleid'] ) ) {
2860
+        $styleid = $is_preview ? 'html .editor-styles-wrapper .' . esc_attr( $args['styleid'] ) : 'html .' . esc_attr( $args['styleid'] );
2861
+
2862
+        // text
2863
+        if ( ! empty( $args['text_color_hover'] ) ) {
2864
+            $key    = 'custom' === $args['text_color_hover'] && ! empty( $args['text_color_hover_custom'] ) ? 'text_color_hover_custom' : 'text_color_hover';
2865
+            $color  = sd_get_color_from_var( $args[ $key ] );
2866
+            $rules .= $styleid . ':hover {color: ' . $color . ' !important;} ';
2867
+        }
2868
+
2869
+        // bg
2870
+        if ( ! empty( $args['bg_hover'] ) ) {
2871
+            if ( 'custom-gradient' === $args['bg_hover'] ) {
2872
+                $color  = $args['bg_hover_gradient'];
2873
+                $rules .= $styleid . ':hover {background-image: ' . $color . ' !important;} ';
2874
+                $rules .= $styleid . '.btn:hover {border-color: transparent !important;} ';
2875
+            } else {
2876
+                $key    = 'custom-color' === $args['bg_hover'] ? 'bg_hover_color' : 'bg_hover';
2877
+                $color  = sd_get_color_from_var( $args[ $key ] );
2878
+                $rules .= $styleid . ':hover {background: ' . $color . ' !important;} ';
2879
+                $rules .= $styleid . '.btn:hover {border-color: ' . $color . ' !important;} ';
2880
+            }
2881
+        }
2882
+    }
2883
+
2884
+    return $rules ? '<style>' . $rules . '</style>' : '';
2885 2885
 }
2886 2886
 
2887 2887
 /**
@@ -2893,12 +2893,12 @@  discard block
 block discarded – undo
2893 2893
  */
2894 2894
 function sd_get_color_from_var( $var ) {
2895 2895
 
2896
-	//sanitize_hex_color() @todo this does not cover transparency
2897
-	if ( strpos( $var, '#' ) === false ) {
2898
-		$var = defined( 'BLOCKSTRAP_BLOCKS_VERSION' ) ? 'var(--wp--preset--color--' . esc_attr( $var ) . ')' : 'var(--' . esc_attr( $var ) . ')';
2899
-	}
2896
+    //sanitize_hex_color() @todo this does not cover transparency
2897
+    if ( strpos( $var, '#' ) === false ) {
2898
+        $var = defined( 'BLOCKSTRAP_BLOCKS_VERSION' ) ? 'var(--wp--preset--color--' . esc_attr( $var ) . ')' : 'var(--' . esc_attr( $var ) . ')';
2899
+    }
2900 2900
 
2901
-	return $var;
2901
+    return $var;
2902 2902
 }
2903 2903
 
2904 2904
 /**
@@ -2910,19 +2910,19 @@  discard block
 block discarded – undo
2910 2910
  * @return string
2911 2911
  */
2912 2912
 function sd_sanitize_html_classes( $classes, $sep = ' ' ) {
2913
-	$return = '';
2913
+    $return = '';
2914 2914
 
2915
-	if ( ! is_array( $classes ) ) {
2916
-		$classes = explode( $sep, $classes );
2917
-	}
2915
+    if ( ! is_array( $classes ) ) {
2916
+        $classes = explode( $sep, $classes );
2917
+    }
2918 2918
 
2919
-	if ( ! empty( $classes ) ) {
2920
-		foreach ( $classes as $class ) {
2921
-			$return .= sanitize_html_class( $class ) . ' ';
2922
-		}
2923
-	}
2919
+    if ( ! empty( $classes ) ) {
2920
+        foreach ( $classes as $class ) {
2921
+            $return .= sanitize_html_class( $class ) . ' ';
2922
+        }
2923
+    }
2924 2924
 
2925
-	return $return;
2925
+    return $return;
2926 2926
 }
2927 2927
 
2928 2928
 
@@ -2932,40 +2932,40 @@  discard block
 block discarded – undo
2932 2932
  * @return void
2933 2933
  */
2934 2934
 function sd_get_class_build_keys() {
2935
-	$keys = array(
2936
-		'container',
2937
-		'position',
2938
-		'flex_direction',
2939
-		'shadow',
2940
-		'rounded',
2941
-		'nav_style',
2942
-		'horizontal_alignment',
2943
-		'nav_fill',
2944
-		'width',
2945
-		'font_weight',
2946
-		'font_size',
2947
-		'font_case',
2948
-		'css_class',
2949
-		'flex_align_items-MTD',
2950
-		'flex_justify_content-MTD',
2951
-		'flex_align_self-MTD',
2952
-		'flex_order-MTD',
2953
-		'styleid',
2954
-		'border_opacity',
2955
-		'border_width',
2956
-		'border_type',
2957
-		'opacity',
2958
-		'zindex',
2959
-		'flex_wrap-MTD',
2960
-		'h100',
2961
-		'overflow',
2962
-		'scrollbars',
2963
-		'float-MTD',
2964
-		'height-MTD',
2965
-		'width-MTD'
2966
-	);
2967
-
2968
-	return apply_filters( 'sd_class_build_keys', $keys );
2935
+    $keys = array(
2936
+        'container',
2937
+        'position',
2938
+        'flex_direction',
2939
+        'shadow',
2940
+        'rounded',
2941
+        'nav_style',
2942
+        'horizontal_alignment',
2943
+        'nav_fill',
2944
+        'width',
2945
+        'font_weight',
2946
+        'font_size',
2947
+        'font_case',
2948
+        'css_class',
2949
+        'flex_align_items-MTD',
2950
+        'flex_justify_content-MTD',
2951
+        'flex_align_self-MTD',
2952
+        'flex_order-MTD',
2953
+        'styleid',
2954
+        'border_opacity',
2955
+        'border_width',
2956
+        'border_type',
2957
+        'opacity',
2958
+        'zindex',
2959
+        'flex_wrap-MTD',
2960
+        'h100',
2961
+        'overflow',
2962
+        'scrollbars',
2963
+        'float-MTD',
2964
+        'height-MTD',
2965
+        'width-MTD'
2966
+    );
2967
+
2968
+    return apply_filters( 'sd_class_build_keys', $keys );
2969 2969
 }
2970 2970
 
2971 2971
 /**
@@ -2977,18 +2977,18 @@  discard block
 block discarded – undo
2977 2977
  * @return array
2978 2978
  */
2979 2979
 function sd_get_visibility_conditions_input( $type = 'visibility_conditions', $overwrite = array() ) {
2980
-	$defaults = array(
2981
-		'type'         => 'visibility_conditions',
2982
-		'title'        => __( 'Block Visibility', 'ayecode-connect' ),
2983
-		'button_title' => __( 'Set Block Visibility', 'ayecode-connect' ),
2984
-		'default'      => '',
2985
-		'desc_tip'     => true,
2986
-		'group'        => __( 'Visibility Conditions', 'ayecode-connect' ),
2987
-	);
2980
+    $defaults = array(
2981
+        'type'         => 'visibility_conditions',
2982
+        'title'        => __( 'Block Visibility', 'ayecode-connect' ),
2983
+        'button_title' => __( 'Set Block Visibility', 'ayecode-connect' ),
2984
+        'default'      => '',
2985
+        'desc_tip'     => true,
2986
+        'group'        => __( 'Visibility Conditions', 'ayecode-connect' ),
2987
+    );
2988 2988
 
2989
-	$input = wp_parse_args( $overwrite, $defaults );
2989
+    $input = wp_parse_args( $overwrite, $defaults );
2990 2990
 
2991
-	return $input;
2991
+    return $input;
2992 2992
 }
2993 2993
 
2994 2994
 /**
@@ -3000,21 +3000,21 @@  discard block
 block discarded – undo
3000 3000
  * @return array An array of roles.
3001 3001
  */
3002 3002
 function sd_user_roles_options( $exclude = array() ) {
3003
-	$user_roles = array();
3003
+    $user_roles = array();
3004 3004
 
3005
-	if ( !function_exists('get_editable_roles') ) {
3006
-		require_once( ABSPATH . '/wp-admin/includes/user.php' );
3007
-	}
3005
+    if ( !function_exists('get_editable_roles') ) {
3006
+        require_once( ABSPATH . '/wp-admin/includes/user.php' );
3007
+    }
3008 3008
 
3009
-	$roles = get_editable_roles();
3009
+    $roles = get_editable_roles();
3010 3010
 
3011
-	foreach ( $roles as $role => $data ) {
3012
-		if ( ! ( ! empty( $exclude ) && in_array( $role, $exclude ) ) ) {
3013
-			$user_roles[ esc_attr( $role ) ] = translate_user_role( $data['name'] );
3014
-		}
3015
-	}
3011
+    foreach ( $roles as $role => $data ) {
3012
+        if ( ! ( ! empty( $exclude ) && in_array( $role, $exclude ) ) ) {
3013
+            $user_roles[ esc_attr( $role ) ] = translate_user_role( $data['name'] );
3014
+        }
3015
+    }
3016 3016
 
3017
-	return apply_filters( 'sd_user_roles_options', $user_roles );
3017
+    return apply_filters( 'sd_user_roles_options', $user_roles );
3018 3018
 }
3019 3019
 
3020 3020
 /**
@@ -3025,18 +3025,18 @@  discard block
 block discarded – undo
3025 3025
  * @return array Rule options.
3026 3026
  */
3027 3027
 function sd_visibility_rules_options() {
3028
-	$options = array(
3029
-		'logged_in'  => __( 'Logged In', 'ayecode-connect' ),
3030
-		'logged_out' => __( 'Logged Out', 'ayecode-connect' ),
3031
-		'post_author'  => __( 'Post Author', 'ayecode-connect' ),
3032
-		'user_roles' => __( 'Specific User Roles', 'ayecode-connect' )
3033
-	);
3028
+    $options = array(
3029
+        'logged_in'  => __( 'Logged In', 'ayecode-connect' ),
3030
+        'logged_out' => __( 'Logged Out', 'ayecode-connect' ),
3031
+        'post_author'  => __( 'Post Author', 'ayecode-connect' ),
3032
+        'user_roles' => __( 'Specific User Roles', 'ayecode-connect' )
3033
+    );
3034 3034
 
3035
-	if ( class_exists( 'GeoDirectory' ) ) {
3036
-		$options['gd_field'] = __( 'GD Field', 'ayecode-connect' );
3037
-	}
3035
+    if ( class_exists( 'GeoDirectory' ) ) {
3036
+        $options['gd_field'] = __( 'GD Field', 'ayecode-connect' );
3037
+    }
3038 3038
 
3039
-	return apply_filters( 'sd_visibility_rules_options', $options );
3039
+    return apply_filters( 'sd_visibility_rules_options', $options );
3040 3040
 }
3041 3041
 
3042 3042
 /**
@@ -3045,39 +3045,39 @@  discard block
 block discarded – undo
3045 3045
  * @return array
3046 3046
  */
3047 3047
 function sd_visibility_gd_field_options() {
3048
-	$fields = geodir_post_custom_fields( '', 'all', 'all', 'none' );
3048
+    $fields = geodir_post_custom_fields( '', 'all', 'all', 'none' );
3049 3049
 
3050
-	$keys = array();
3051
-	if ( ! empty( $fields ) ) {
3052
-		foreach( $fields as $field ) {
3053
-			if ( apply_filters( 'geodir_badge_field_skip_key', false, $field ) ) {
3054
-				continue;
3055
-			}
3050
+    $keys = array();
3051
+    if ( ! empty( $fields ) ) {
3052
+        foreach( $fields as $field ) {
3053
+            if ( apply_filters( 'geodir_badge_field_skip_key', false, $field ) ) {
3054
+                continue;
3055
+            }
3056 3056
 
3057
-			$keys[ $field['htmlvar_name'] ] = $field['htmlvar_name'] . ' ( ' . __( $field['admin_title'], 'geodirectory' ) . ' )';
3057
+            $keys[ $field['htmlvar_name'] ] = $field['htmlvar_name'] . ' ( ' . __( $field['admin_title'], 'geodirectory' ) . ' )';
3058 3058
 
3059
-			// Extra address fields
3060
-			if ( $field['htmlvar_name'] == 'address' && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
3061
-				foreach ( $address_fields as $_field => $args ) {
3062
-					if ( $_field != 'map_directions' && $_field != 'street' ) {
3063
-						$keys[ $_field ] = $_field . ' ( ' . $args['frontend_title'] . ' )';
3064
-					}
3065
-				}
3066
-			}
3067
-		}
3068
-	}
3059
+            // Extra address fields
3060
+            if ( $field['htmlvar_name'] == 'address' && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
3061
+                foreach ( $address_fields as $_field => $args ) {
3062
+                    if ( $_field != 'map_directions' && $_field != 'street' ) {
3063
+                        $keys[ $_field ] = $_field . ' ( ' . $args['frontend_title'] . ' )';
3064
+                    }
3065
+                }
3066
+            }
3067
+        }
3068
+    }
3069 3069
 
3070
-	$standard_fields = sd_visibility_gd_standard_field_options();
3070
+    $standard_fields = sd_visibility_gd_standard_field_options();
3071 3071
 
3072
-	if ( ! empty( $standard_fields ) ) {
3073
-		foreach ( $standard_fields as $key => $option ) {
3074
-			$keys[ $key ] = $option;
3075
-		}
3076
-	}
3072
+    if ( ! empty( $standard_fields ) ) {
3073
+        foreach ( $standard_fields as $key => $option ) {
3074
+            $keys[ $key ] = $option;
3075
+        }
3076
+    }
3077 3077
 
3078
-	$options = apply_filters( 'geodir_badge_field_keys', $keys );
3078
+    $options = apply_filters( 'geodir_badge_field_keys', $keys );
3079 3079
 
3080
-	return apply_filters( 'sd_visibility_gd_field_options', $options );
3080
+    return apply_filters( 'sd_visibility_gd_field_options', $options );
3081 3081
 }
3082 3082
 
3083 3083
 /**
@@ -3086,17 +3086,17 @@  discard block
 block discarded – undo
3086 3086
  * @return array
3087 3087
  */
3088 3088
 function sd_visibility_gd_standard_field_options( $post_type = '' ) {
3089
-	$fields = sd_visibility_gd_standard_fields( $post_type );
3089
+    $fields = sd_visibility_gd_standard_fields( $post_type );
3090 3090
 
3091
-	$options = array();
3091
+    $options = array();
3092 3092
 
3093
-	foreach ( $fields as $key => $field ) {
3094
-		if ( ! empty( $field['frontend_title'] ) ) {
3095
-			$options[ $key ] = $key . ' ( ' . $field['frontend_title'] . ' )';
3096
-		}
3097
-	}
3093
+    foreach ( $fields as $key => $field ) {
3094
+        if ( ! empty( $field['frontend_title'] ) ) {
3095
+            $options[ $key ] = $key . ' ( ' . $field['frontend_title'] . ' )';
3096
+        }
3097
+    }
3098 3098
 
3099
-	return apply_filters( 'sd_visibility_gd_standard_field_options', $options, $fields );
3099
+    return apply_filters( 'sd_visibility_gd_standard_field_options', $options, $fields );
3100 3100
 }
3101 3101
 
3102 3102
 /**
@@ -3105,17 +3105,17 @@  discard block
 block discarded – undo
3105 3105
  * @return array
3106 3106
  */
3107 3107
 function sd_visibility_gd_standard_fields( $post_type = '' ) {
3108
-	$standard_fields = geodir_post_meta_standard_fields( $post_type );
3108
+    $standard_fields = geodir_post_meta_standard_fields( $post_type );
3109 3109
 
3110
-	$fields = array();
3110
+    $fields = array();
3111 3111
 
3112
-	foreach ( $standard_fields as $key => $field ) {
3113
-		if ( $key != 'post_link' && strpos( $key, 'event' ) === false && ! empty( $field['frontend_title'] ) ) {
3114
-			$fields[ $key ] = $field;
3115
-		}
3116
-	}
3112
+    foreach ( $standard_fields as $key => $field ) {
3113
+        if ( $key != 'post_link' && strpos( $key, 'event' ) === false && ! empty( $field['frontend_title'] ) ) {
3114
+            $fields[ $key ] = $field;
3115
+        }
3116
+    }
3117 3117
 
3118
-	return apply_filters( 'sd_visibility_gd_standard_fields', $fields );
3118
+    return apply_filters( 'sd_visibility_gd_standard_fields', $fields );
3119 3119
 }
3120 3120
 
3121 3121
 /**
@@ -3124,18 +3124,18 @@  discard block
 block discarded – undo
3124 3124
  * @return array
3125 3125
  */
3126 3126
 function sd_visibility_field_condition_options(){
3127
-	$options = array(
3128
-		'is_empty' => __( 'is empty', 'ayecode-connect' ),
3129
-		'is_not_empty' => __( 'is not empty', 'ayecode-connect' ),
3130
-		'is_equal' => __( 'is equal', 'ayecode-connect' ),
3131
-		'is_not_equal' => __( 'is not equal', 'ayecode-connect' ),
3132
-		'is_greater_than' => __( 'is greater than', 'ayecode-connect' ),
3133
-		'is_less_than' => __( 'is less than', 'ayecode-connect' ),
3134
-		'is_contains' => __( 'is contains', 'ayecode-connect' ),
3135
-		'is_not_contains' => __( 'is not contains', 'ayecode-connect' ),
3136
-	);
3127
+    $options = array(
3128
+        'is_empty' => __( 'is empty', 'ayecode-connect' ),
3129
+        'is_not_empty' => __( 'is not empty', 'ayecode-connect' ),
3130
+        'is_equal' => __( 'is equal', 'ayecode-connect' ),
3131
+        'is_not_equal' => __( 'is not equal', 'ayecode-connect' ),
3132
+        'is_greater_than' => __( 'is greater than', 'ayecode-connect' ),
3133
+        'is_less_than' => __( 'is less than', 'ayecode-connect' ),
3134
+        'is_contains' => __( 'is contains', 'ayecode-connect' ),
3135
+        'is_not_contains' => __( 'is not contains', 'ayecode-connect' ),
3136
+    );
3137 3137
 
3138
-	return apply_filters( 'sd_visibility_field_condition_options', $options );
3138
+    return apply_filters( 'sd_visibility_field_condition_options', $options );
3139 3139
 }
3140 3140
 
3141 3141
 /**
@@ -3146,14 +3146,14 @@  discard block
 block discarded – undo
3146 3146
  * @return array Template type options.
3147 3147
  */
3148 3148
 function sd_visibility_output_options() {
3149
-	$options = array(
3150
-		'hide'          => __( 'Hide Block', 'ayecode-connect' ),
3151
-		'message'       => __( 'Show Custom Message', 'ayecode-connect' ),
3152
-		'page'          => __( 'Show Page Content', 'ayecode-connect' ),
3153
-		'template_part' => __( 'Show Template Part', 'ayecode-connect' ),
3154
-	);
3149
+    $options = array(
3150
+        'hide'          => __( 'Hide Block', 'ayecode-connect' ),
3151
+        'message'       => __( 'Show Custom Message', 'ayecode-connect' ),
3152
+        'page'          => __( 'Show Page Content', 'ayecode-connect' ),
3153
+        'template_part' => __( 'Show Template Part', 'ayecode-connect' ),
3154
+    );
3155 3155
 
3156
-	return apply_filters( 'sd_visibility_output_options', $options );
3156
+    return apply_filters( 'sd_visibility_output_options', $options );
3157 3157
 }
3158 3158
 
3159 3159
 /**
@@ -3165,45 +3165,45 @@  discard block
 block discarded – undo
3165 3165
  * @return array Template page options.
3166 3166
  */
3167 3167
 function sd_template_page_options( $args = array() ) {
3168
-	global $sd_tmpl_page_options;
3168
+    global $sd_tmpl_page_options;
3169 3169
 
3170
-	if ( ! empty( $sd_tmpl_page_options ) ) {
3171
-		return $sd_tmpl_page_options;
3172
-	}
3170
+    if ( ! empty( $sd_tmpl_page_options ) ) {
3171
+        return $sd_tmpl_page_options;
3172
+    }
3173 3173
 
3174
-	$args = wp_parse_args( $args, array(
3175
-		'child_of'    => 0,
3176
-		'sort_column' => 'post_title',
3177
-		'sort_order'  => 'ASC'
3178
-	) );
3174
+    $args = wp_parse_args( $args, array(
3175
+        'child_of'    => 0,
3176
+        'sort_column' => 'post_title',
3177
+        'sort_order'  => 'ASC'
3178
+    ) );
3179 3179
 
3180
-	$exclude_pages = array();
3181
-	if ( $page_on_front = get_option( 'page_on_front' ) ) {
3182
-		$exclude_pages[] = $page_on_front;
3183
-	}
3180
+    $exclude_pages = array();
3181
+    if ( $page_on_front = get_option( 'page_on_front' ) ) {
3182
+        $exclude_pages[] = $page_on_front;
3183
+    }
3184 3184
 
3185
-	if ( $page_for_posts = get_option( 'page_for_posts' ) ) {
3186
-		$exclude_pages[] = $page_for_posts;
3187
-	}
3185
+    if ( $page_for_posts = get_option( 'page_for_posts' ) ) {
3186
+        $exclude_pages[] = $page_for_posts;
3187
+    }
3188 3188
 
3189
-	if ( ! empty( $exclude_pages ) ) {
3190
-		$args['exclude'] = $exclude_pages;
3191
-	}
3189
+    if ( ! empty( $exclude_pages ) ) {
3190
+        $args['exclude'] = $exclude_pages;
3191
+    }
3192 3192
 
3193
-	$pages = get_pages( $args );
3193
+    $pages = get_pages( $args );
3194 3194
 
3195
-	$options = array( '' => __( 'Select Page...', 'ayecode-connect' ) );
3196
-	if ( ! empty( $pages ) ) {
3197
-		foreach ( $pages as $page ) {
3198
-			if ( ! empty( $page->ID ) && ! empty( $page->post_title ) ) {
3199
-				$options[ $page->ID ] = $page->post_title . ' (#' . $page->ID . ')';
3200
-			}
3201
-		}
3202
-	}
3195
+    $options = array( '' => __( 'Select Page...', 'ayecode-connect' ) );
3196
+    if ( ! empty( $pages ) ) {
3197
+        foreach ( $pages as $page ) {
3198
+            if ( ! empty( $page->ID ) && ! empty( $page->post_title ) ) {
3199
+                $options[ $page->ID ] = $page->post_title . ' (#' . $page->ID . ')';
3200
+            }
3201
+        }
3202
+    }
3203 3203
 
3204
-	$sd_tmpl_page_options = $options;
3204
+    $sd_tmpl_page_options = $options;
3205 3205
 
3206
-	return apply_filters( 'sd_template_page_options', $options );
3206
+    return apply_filters( 'sd_template_page_options', $options );
3207 3207
 }
3208 3208
 
3209 3209
 /**
@@ -3215,25 +3215,25 @@  discard block
 block discarded – undo
3215 3215
  * @return array Template part options.
3216 3216
  */
3217 3217
 function sd_template_part_options( $args = array() ) {
3218
-	global $sd_tmpl_part_options;
3218
+    global $sd_tmpl_part_options;
3219 3219
 
3220
-	if ( ! empty( $sd_tmpl_part_options ) ) {
3221
-		return $sd_tmpl_part_options;
3222
-	}
3220
+    if ( ! empty( $sd_tmpl_part_options ) ) {
3221
+        return $sd_tmpl_part_options;
3222
+    }
3223 3223
 
3224
-	$options = array( '' => __( 'Select Template Part...', 'ayecode-connect' ) );
3224
+    $options = array( '' => __( 'Select Template Part...', 'ayecode-connect' ) );
3225 3225
 
3226
-	$parts = get_block_templates( array(), 'wp_template_part' );
3226
+    $parts = get_block_templates( array(), 'wp_template_part' );
3227 3227
 
3228
-	if ( ! empty( $parts ) ) {
3229
-		foreach ( $parts as $part ) {
3230
-			$options[ $part->slug ] = $part->title . ' (#' . $part->slug . ')';
3231
-		}
3232
-	}
3228
+    if ( ! empty( $parts ) ) {
3229
+        foreach ( $parts as $part ) {
3230
+            $options[ $part->slug ] = $part->title . ' (#' . $part->slug . ')';
3231
+        }
3232
+    }
3233 3233
 
3234
-	$sd_tmpl_part_options = $options;
3234
+    $sd_tmpl_part_options = $options;
3235 3235
 
3236
-	return apply_filters( 'sd_template_part_options', $options, $args );
3236
+    return apply_filters( 'sd_template_part_options', $options, $args );
3237 3237
 }
3238 3238
 
3239 3239
 /**
@@ -3245,25 +3245,25 @@  discard block
 block discarded – undo
3245 3245
  * @return array Template part object.
3246 3246
  */
3247 3247
 function sd_get_template_part_by_slug( $slug ) {
3248
-	global $bs_tmpl_part_by_slug;
3248
+    global $bs_tmpl_part_by_slug;
3249 3249
 
3250
-	if ( empty( $bs_tmpl_part_by_slug ) ) {
3251
-		$bs_tmpl_part_by_slug = array();
3252
-	}
3250
+    if ( empty( $bs_tmpl_part_by_slug ) ) {
3251
+        $bs_tmpl_part_by_slug = array();
3252
+    }
3253 3253
 
3254
-	if ( isset( $bs_tmpl_part_by_slug[ $slug ] ) ) {
3255
-		return $bs_tmpl_part_by_slug[ $slug ];
3256
-	}
3254
+    if ( isset( $bs_tmpl_part_by_slug[ $slug ] ) ) {
3255
+        return $bs_tmpl_part_by_slug[ $slug ];
3256
+    }
3257 3257
 
3258
-	$template_query = get_block_templates( array( 'slug__in' => array( $slug ) ), 'wp_template_part' );
3258
+    $template_query = get_block_templates( array( 'slug__in' => array( $slug ) ), 'wp_template_part' );
3259 3259
 
3260
-	$query_post = ! empty( $template_query ) ? $template_query[0] : array();
3260
+    $query_post = ! empty( $template_query ) ? $template_query[0] : array();
3261 3261
 
3262
-	$template_part = ! empty( $query_post ) && $query_post->status == 'publish' ? $query_post : array();
3262
+    $template_part = ! empty( $query_post ) && $query_post->status == 'publish' ? $query_post : array();
3263 3263
 
3264
-	$bs_tmpl_part_by_slug[ $slug ] = $template_part;
3264
+    $bs_tmpl_part_by_slug[ $slug ] = $template_part;
3265 3265
 
3266
-	return apply_filters( 'sd_get_template_part_by_slug', $template_part, $slug );
3266
+    return apply_filters( 'sd_get_template_part_by_slug', $template_part, $slug );
3267 3267
 }
3268 3268
 
3269 3269
 /**
@@ -3276,471 +3276,471 @@  discard block
 block discarded – undo
3276 3276
  * @param WP_Block $instance      The block instance.
3277 3277
  */
3278 3278
 function sd_render_block( $block_content, $block, $instance = '' ) {
3279
-	// No block visibility conditions set.
3280
-	if ( empty( $block['attrs']['visibility_conditions'] ) ) {
3281
-		return $block_content;
3282
-	}
3283
-
3284
-	$attributes = json_decode( $block['attrs']['visibility_conditions'], true );
3285
-	$rules = ! empty( $attributes ) ? sd_block_parse_rules( $attributes ) : array();
3286
-
3287
-	// No rules set.
3288
-	if ( empty( $rules ) ) {
3289
-		return $block_content;
3290
-	}
3291
-
3292
-	$_block_content = $block_content;
3293
-
3294
-	if ( ! empty( $rules ) && sd_block_check_rules( $rules ) ) {
3295
-		if ( ! empty( $attributes['output']['type'] ) ) {
3296
-			switch ( $attributes['output']['type'] ) {
3297
-				case 'hide':
3298
-					$valid_type = true;
3299
-					$content = '';
3300
-
3301
-					break;
3302
-				case 'message':
3303
-					$valid_type = true;
3304
-
3305
-					if ( isset( $attributes['output']['message'] ) ) {
3306
-						$content = $attributes['output']['message'] != '' ? __( stripslashes( $attributes['output']['message'] ), 'ayecode-connect' ) : $attributes['output']['message'];
3307
-
3308
-						if ( ! empty( $attributes['output']['message_type'] ) ) {
3309
-							$content = aui()->alert( array(
3310
-									'type'=> $attributes['output']['message_type'],
3311
-									'content'=> $content
3312
-								)
3313
-							);
3314
-						}
3315
-					}
3316
-
3317
-					break;
3318
-				case 'page':
3319
-					$valid_type = true;
3320
-
3321
-					$page_id = ! empty( $attributes['output']['page'] ) ? absint( $attributes['output']['page'] ) : 0;
3322
-					$content = sd_get_page_content( $page_id );
3323
-
3324
-					break;
3325
-				case 'template_part':
3326
-					$valid_type = true;
3327
-
3328
-					$template_part = ! empty( $attributes['output']['template_part'] ) ? $attributes['output']['template_part'] : '';
3329
-					$content = sd_get_template_part_content( $template_part );
3330
-
3331
-					break;
3332
-				default:
3333
-					$valid_type = false;
3334
-					break;
3335
-			}
3336
-
3337
-			if ( $valid_type ) {
3338
-				$block_content = '<div class="' . esc_attr( wp_get_block_default_classname( $instance->name ) ) . ' sd-block-has-rule">' . $content . '</div>';
3339
-			}
3340
-		}
3341
-	}
3342
-
3343
-	return apply_filters( 'sd_render_block_visibility_content', $block_content, $_block_content, $attributes, $block, $instance );
3279
+    // No block visibility conditions set.
3280
+    if ( empty( $block['attrs']['visibility_conditions'] ) ) {
3281
+        return $block_content;
3282
+    }
3283
+
3284
+    $attributes = json_decode( $block['attrs']['visibility_conditions'], true );
3285
+    $rules = ! empty( $attributes ) ? sd_block_parse_rules( $attributes ) : array();
3286
+
3287
+    // No rules set.
3288
+    if ( empty( $rules ) ) {
3289
+        return $block_content;
3290
+    }
3291
+
3292
+    $_block_content = $block_content;
3293
+
3294
+    if ( ! empty( $rules ) && sd_block_check_rules( $rules ) ) {
3295
+        if ( ! empty( $attributes['output']['type'] ) ) {
3296
+            switch ( $attributes['output']['type'] ) {
3297
+                case 'hide':
3298
+                    $valid_type = true;
3299
+                    $content = '';
3300
+
3301
+                    break;
3302
+                case 'message':
3303
+                    $valid_type = true;
3304
+
3305
+                    if ( isset( $attributes['output']['message'] ) ) {
3306
+                        $content = $attributes['output']['message'] != '' ? __( stripslashes( $attributes['output']['message'] ), 'ayecode-connect' ) : $attributes['output']['message'];
3307
+
3308
+                        if ( ! empty( $attributes['output']['message_type'] ) ) {
3309
+                            $content = aui()->alert( array(
3310
+                                    'type'=> $attributes['output']['message_type'],
3311
+                                    'content'=> $content
3312
+                                )
3313
+                            );
3314
+                        }
3315
+                    }
3316
+
3317
+                    break;
3318
+                case 'page':
3319
+                    $valid_type = true;
3320
+
3321
+                    $page_id = ! empty( $attributes['output']['page'] ) ? absint( $attributes['output']['page'] ) : 0;
3322
+                    $content = sd_get_page_content( $page_id );
3323
+
3324
+                    break;
3325
+                case 'template_part':
3326
+                    $valid_type = true;
3327
+
3328
+                    $template_part = ! empty( $attributes['output']['template_part'] ) ? $attributes['output']['template_part'] : '';
3329
+                    $content = sd_get_template_part_content( $template_part );
3330
+
3331
+                    break;
3332
+                default:
3333
+                    $valid_type = false;
3334
+                    break;
3335
+            }
3336
+
3337
+            if ( $valid_type ) {
3338
+                $block_content = '<div class="' . esc_attr( wp_get_block_default_classname( $instance->name ) ) . ' sd-block-has-rule">' . $content . '</div>';
3339
+            }
3340
+        }
3341
+    }
3342
+
3343
+    return apply_filters( 'sd_render_block_visibility_content', $block_content, $_block_content, $attributes, $block, $instance );
3344 3344
 }
3345 3345
 add_filter( 'render_block', 'sd_render_block', 9, 3 );
3346 3346
 
3347 3347
 function sd_get_page_content( $page_id ) {
3348
-	$content = $page_id > 0 ? get_post_field( 'post_content', (int) $page_id ) : '';
3348
+    $content = $page_id > 0 ? get_post_field( 'post_content', (int) $page_id ) : '';
3349 3349
 
3350
-	// Maybe bypass content
3351
-	$bypass_content = apply_filters( 'sd_bypass_page_content', '', $content, $page_id );
3352
-	if ( $bypass_content ) {
3353
-		return $bypass_content;
3354
-	}
3350
+    // Maybe bypass content
3351
+    $bypass_content = apply_filters( 'sd_bypass_page_content', '', $content, $page_id );
3352
+    if ( $bypass_content ) {
3353
+        return $bypass_content;
3354
+    }
3355 3355
 
3356
-	// Run the shortcodes on the content.
3357
-	$content = do_shortcode( $content );
3356
+    // Run the shortcodes on the content.
3357
+    $content = do_shortcode( $content );
3358 3358
 
3359
-	// Run block content if its available.
3360
-	if ( function_exists( 'do_blocks' ) ) {
3361
-		$content = do_blocks( $content );
3362
-	}
3359
+    // Run block content if its available.
3360
+    if ( function_exists( 'do_blocks' ) ) {
3361
+        $content = do_blocks( $content );
3362
+    }
3363 3363
 
3364
-	return apply_filters( 'sd_get_page_content', $content, $page_id );
3364
+    return apply_filters( 'sd_get_page_content', $content, $page_id );
3365 3365
 }
3366 3366
 
3367 3367
 function sd_get_template_part_content( $template_part ) {
3368
-	$template_part_post = $template_part ? sd_get_template_part_by_slug( $template_part ) : array();
3369
-	$content = ! empty( $template_part_post ) ? $template_part_post->content : '';
3368
+    $template_part_post = $template_part ? sd_get_template_part_by_slug( $template_part ) : array();
3369
+    $content = ! empty( $template_part_post ) ? $template_part_post->content : '';
3370 3370
 
3371
-	// Maybe bypass content
3372
-	$bypass_content = apply_filters( 'sd_bypass_template_part_content', '', $content, $template_part );
3373
-	if ( $bypass_content ) {
3374
-		return $bypass_content;
3375
-	}
3371
+    // Maybe bypass content
3372
+    $bypass_content = apply_filters( 'sd_bypass_template_part_content', '', $content, $template_part );
3373
+    if ( $bypass_content ) {
3374
+        return $bypass_content;
3375
+    }
3376 3376
 
3377
-	// Run the shortcodes on the content.
3378
-	$content = do_shortcode( $content );
3377
+    // Run the shortcodes on the content.
3378
+    $content = do_shortcode( $content );
3379 3379
 
3380
-	// Run block content if its available.
3381
-	if ( function_exists( 'do_blocks' ) ) {
3382
-		$content = do_blocks( $content );
3383
-	}
3380
+    // Run block content if its available.
3381
+    if ( function_exists( 'do_blocks' ) ) {
3382
+        $content = do_blocks( $content );
3383
+    }
3384 3384
 
3385
-	return apply_filters( 'sd_get_template_part_content', $content, $template_part );
3385
+    return apply_filters( 'sd_get_template_part_content', $content, $template_part );
3386 3386
 }
3387 3387
 
3388 3388
 function sd_block_parse_rules( $attrs ) {
3389
-	$rules = array();
3389
+    $rules = array();
3390 3390
 
3391
-	if ( ! empty( $attrs ) && is_array( $attrs ) ) {
3392
-		$attrs_keys = array_keys( $attrs );
3391
+    if ( ! empty( $attrs ) && is_array( $attrs ) ) {
3392
+        $attrs_keys = array_keys( $attrs );
3393 3393
 
3394
-		for ( $i = 1; $i <= count( $attrs_keys ); $i++ ) {
3395
-			if ( ! empty( $attrs[ 'rule' . $i ] ) && is_array( $attrs[ 'rule' . $i ] ) ) {
3396
-				$rules[] = $attrs[ 'rule' . $i ];
3397
-			}
3398
-		}
3399
-	}
3394
+        for ( $i = 1; $i <= count( $attrs_keys ); $i++ ) {
3395
+            if ( ! empty( $attrs[ 'rule' . $i ] ) && is_array( $attrs[ 'rule' . $i ] ) ) {
3396
+                $rules[] = $attrs[ 'rule' . $i ];
3397
+            }
3398
+        }
3399
+    }
3400 3400
 
3401
-	return apply_filters( 'sd_block_parse_rules', $rules, $attrs );
3401
+    return apply_filters( 'sd_block_parse_rules', $rules, $attrs );
3402 3402
 }
3403 3403
 
3404 3404
 function sd_block_check_rules( $rules ) {
3405
-	if ( ! ( is_array( $rules ) && ! empty( $rules ) ) ) {
3406
-		return true;
3407
-	}
3405
+    if ( ! ( is_array( $rules ) && ! empty( $rules ) ) ) {
3406
+        return true;
3407
+    }
3408 3408
 
3409
-	foreach ( $rules as $key => $rule ) {
3410
-		$match = apply_filters( 'sd_block_check_rule', true, $rule );
3409
+    foreach ( $rules as $key => $rule ) {
3410
+        $match = apply_filters( 'sd_block_check_rule', true, $rule );
3411 3411
 
3412
-		if ( ! $match ) {
3413
-			break;
3414
-		}
3415
-	}
3412
+        if ( ! $match ) {
3413
+            break;
3414
+        }
3415
+    }
3416 3416
 
3417
-	return apply_filters( 'sd_block_check_rules', $match, $rules );
3417
+    return apply_filters( 'sd_block_check_rules', $match, $rules );
3418 3418
 }
3419 3419
 
3420 3420
 function sd_block_check_rule( $match, $rule ) {
3421
-	global $post;
3421
+    global $post;
3422 3422
 
3423
-	if ( $match && ! empty( $rule['type'] ) ) {
3424
-		switch ( $rule['type'] ) {
3425
-			case 'logged_in':
3426
-				$match = (bool) is_user_logged_in();
3423
+    if ( $match && ! empty( $rule['type'] ) ) {
3424
+        switch ( $rule['type'] ) {
3425
+            case 'logged_in':
3426
+                $match = (bool) is_user_logged_in();
3427 3427
 
3428
-				break;
3429
-			case 'logged_out':
3430
-				$match = ! is_user_logged_in();
3428
+                break;
3429
+            case 'logged_out':
3430
+                $match = ! is_user_logged_in();
3431 3431
 
3432
-				break;
3433
-			case 'post_author':
3434
-				if ( ! empty( $post ) && $post->post_type != 'page' && ! empty( $post->post_author ) && is_user_logged_in() ) {
3435
-					$match = (int) $post->post_author === (int) get_current_user_id() ? true : false;
3436
-				} else {
3437
-					$match = false;
3438
-				}
3432
+                break;
3433
+            case 'post_author':
3434
+                if ( ! empty( $post ) && $post->post_type != 'page' && ! empty( $post->post_author ) && is_user_logged_in() ) {
3435
+                    $match = (int) $post->post_author === (int) get_current_user_id() ? true : false;
3436
+                } else {
3437
+                    $match = false;
3438
+                }
3439 3439
 
3440
-				break;
3441
-			case 'user_roles':
3442
-				$match = false;
3440
+                break;
3441
+            case 'user_roles':
3442
+                $match = false;
3443 3443
 
3444
-				if ( ! empty( $rule['user_roles'] ) ) {
3445
-					$user_roles = is_scalar( $rule['user_roles'] ) ? explode( ",", $rule['user_roles'] ) : $rule['user_roles'];
3444
+                if ( ! empty( $rule['user_roles'] ) ) {
3445
+                    $user_roles = is_scalar( $rule['user_roles'] ) ? explode( ",", $rule['user_roles'] ) : $rule['user_roles'];
3446 3446
 
3447
-					if ( is_array( $user_roles ) ) {
3448
-						$user_roles = array_filter( array_map( 'trim', $user_roles ) );
3449
-					}
3447
+                    if ( is_array( $user_roles ) ) {
3448
+                        $user_roles = array_filter( array_map( 'trim', $user_roles ) );
3449
+                    }
3450 3450
 
3451
-					if ( ! empty( $user_roles ) && is_array( $user_roles ) && is_user_logged_in() && ( $current_user = wp_get_current_user() ) ) {
3452
-						$current_user_roles = $current_user->roles;
3451
+                    if ( ! empty( $user_roles ) && is_array( $user_roles ) && is_user_logged_in() && ( $current_user = wp_get_current_user() ) ) {
3452
+                        $current_user_roles = $current_user->roles;
3453 3453
 
3454
-						foreach ( $user_roles as $role ) {
3455
-							if ( in_array( $role, $current_user_roles ) ) {
3456
-								$match = true;
3457
-							}
3458
-						}
3459
-					}
3460
-				}
3454
+                        foreach ( $user_roles as $role ) {
3455
+                            if ( in_array( $role, $current_user_roles ) ) {
3456
+                                $match = true;
3457
+                            }
3458
+                        }
3459
+                    }
3460
+                }
3461 3461
 
3462
-				break;
3463
-			case 'gd_field':
3464
-				$match = sd_block_check_rule_gd_field( $rule );
3462
+                break;
3463
+            case 'gd_field':
3464
+                $match = sd_block_check_rule_gd_field( $rule );
3465 3465
 
3466
-				break;
3467
-		}
3468
-	}
3466
+                break;
3467
+        }
3468
+    }
3469 3469
 
3470
-	return $match;
3470
+    return $match;
3471 3471
 }
3472 3472
 add_filter( 'sd_block_check_rule', 'sd_block_check_rule', 10, 2 );
3473 3473
 
3474 3474
 function sd_block_check_rule_gd_field( $rule ) {
3475
-	global $gd_post;
3476
-
3477
-	$match_found = false;
3478
-
3479
-	if ( class_exists( 'GeoDirectory' ) && ! empty( $gd_post->ID ) && ! empty( $rule['field'] ) && ! empty( $rule['condition'] ) ) {
3480
-		$args['block_visibility'] = true;
3481
-		$args['key'] = $rule['field'];
3482
-		$args['condition'] = $rule['condition'];
3483
-		$args['search'] = isset( $rule['search'] ) ? $rule['search'] : '';
3484
-
3485
-		if ( $args['key'] == 'street' ) {
3486
-			$args['key'] = 'address';
3487
-		}
3488
-
3489
-		$match_field = $_match_field = $args['key'];
3490
-
3491
-		if ( $match_field == 'address' ) {
3492
-			$match_field = 'street';
3493
-		} elseif ( $match_field == 'post_images' ) {
3494
-			$match_field = 'featured_image';
3495
-		}
3496
-
3497
-		$find_post = $gd_post;
3498
-		$find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3499
-
3500
-		if ( ! empty( $find_post->ID ) && ! in_array( 'post_category', $find_post_keys ) ) {
3501
-			$find_post = geodir_get_post_info( (int) $find_post->ID );
3502
-			$find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3503
-		}
3504
-
3505
-		if ( $match_field === '' || ( ! empty( $find_post_keys ) && ( in_array( $match_field, $find_post_keys ) || in_array( $_match_field, $find_post_keys ) ) ) ) {
3506
-			$address_fields = array( 'street2', 'neighbourhood', 'city', 'region', 'country', 'zip', 'latitude', 'longitude' ); // Address fields
3507
-			$field = array();
3508
-			$empty_field = false;
3509
-
3510
-			$standard_fields = sd_visibility_gd_standard_fields();
3511
-
3512
-			if ( $match_field && ! in_array( $match_field, array_keys( $standard_fields ) ) && ! in_array( $match_field, $address_fields ) ) {
3513
-				$package_id = geodir_get_post_package_id( $find_post->ID, $find_post->post_type );
3514
-				$fields = geodir_post_custom_fields( $package_id, 'all', $find_post->post_type, 'none' );
3515
-
3516
-				foreach ( $fields as $field_info ) {
3517
-					if ( $match_field == $field_info['htmlvar_name'] ) {
3518
-						$field = $field_info;
3519
-						break;
3520
-					} elseif( $_match_field == $field_info['htmlvar_name'] ) {
3521
-						$field = $field_info;
3522
-						break;
3523
-					}
3524
-				}
3525
-
3526
-				if ( empty( $field ) ) {
3527
-					$empty_field = true;
3528
-				}
3529
-			}
3530
-
3531
-			// Address fields.
3532
-			if ( in_array( $match_field, $address_fields ) && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
3533
-				if ( ! empty( $address_fields[ $match_field ] ) ) {
3534
-					$field = $address_fields[ $match_field ];
3535
-				}
3536
-			} else if ( in_array( $match_field, array_keys( $standard_fields ) ) ) {
3537
-				if ( ! empty( $standard_fields[ $match_field ] ) ) {
3538
-					$field = $standard_fields[ $match_field ];
3539
-				}
3540
-			}
3541
-
3542
-			// Parse search.
3543
-			$search = sd_gd_field_rule_search( $args['search'], $find_post->post_type, $rule, $field, $find_post );
3544
-
3545
-			$is_date = ( ! empty( $field['type'] ) && $field['type'] == 'datepicker' ) || in_array( $match_field, array( 'post_date', 'post_modified' ) ) ? true : false;
3546
-			$is_date = apply_filters( 'geodir_post_badge_is_date', $is_date, $match_field, $field, $args, $find_post );
3547
-
3548
-			$match_value = isset( $find_post->{$match_field} ) && empty( $empty_field ) ? esc_attr( trim( $find_post->{$match_field} ) ) : '';
3549
-			$match_found = $match_field === '' ? true : false;
3550
-
3551
-			if ( ! $match_found ) {
3552
-				if ( ( $match_field == 'post_date' || $match_field == 'post_modified' ) && ( empty( $args['condition'] ) || $args['condition'] == 'is_greater_than' || $args['condition'] == 'is_less_than' ) ) {
3553
-					if ( strpos( $search, '+' ) === false && strpos( $search, '-' ) === false ) {
3554
-						$search = '+' . $search;
3555
-					}
3556
-					$the_time = $match_field == 'post_modified' ? get_the_modified_date( 'Y-m-d', $find_post ) : get_the_time( 'Y-m-d', $find_post );
3557
-					$until_time = strtotime( $the_time . ' ' . $search . ' days' );
3558
-					$now_time   = strtotime( date_i18n( 'Y-m-d', current_time( 'timestamp' ) ) );
3559
-					if ( ( empty( $args['condition'] ) || $args['condition'] == 'is_less_than' ) && $until_time > $now_time ) {
3560
-						$match_found = true;
3561
-					} elseif ( $args['condition'] == 'is_greater_than' && $until_time < $now_time ) {
3562
-						$match_found = true;
3563
-					}
3564
-				} else {
3565
-					switch ( $args['condition'] ) {
3566
-						case 'is_equal':
3567
-							$match_found = (bool) ( $search != '' && $match_value == $search );
3568
-							break;
3569
-						case 'is_not_equal':
3570
-							$match_found = (bool) ( $search != '' && $match_value != $search );
3571
-							break;
3572
-						case 'is_greater_than':
3573
-							$match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value > $search );
3574
-							break;
3575
-						case 'is_less_than':
3576
-							$match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value < $search );
3577
-							break;
3578
-						case 'is_empty':
3579
-							$match_found = (bool) ( $match_value === '' || $match_value === false || $match_value === '0' || is_null( $match_value ) );
3580
-							break;
3581
-						case 'is_not_empty':
3582
-							$match_found = (bool) ( $match_value !== '' && $match_value !== false && $match_value !== '0' && ! is_null( $match_value ) );
3583
-							break;
3584
-						case 'is_contains':
3585
-							$match_found = (bool) ( $search != '' && stripos( $match_value, $search ) !== false );
3586
-							break;
3587
-						case 'is_not_contains':
3588
-							$match_found = (bool) ( $search != '' && stripos( $match_value, $search ) === false );
3589
-							break;
3590
-					}
3591
-				}
3592
-			}
3593
-
3594
-			$match_found = apply_filters( 'geodir_post_badge_check_match_found', $match_found, $args, $find_post );
3595
-		} else {
3596
-			$field = array();
3597
-
3598
-			// Parse search.
3599
-			$search = sd_gd_field_rule_search( $args['search'], $find_post->post_type, $rule, $field, $find_post );
3600
-
3601
-			$match_value = '';
3602
-			$match_found = $match_field === '' ? true : false;
3603
-
3604
-			if ( ! $match_found ) {
3605
-				switch ( $args['condition'] ) {
3606
-					case 'is_equal':
3607
-						$match_found = (bool) ( $search != '' && $match_value == $search );
3608
-						break;
3609
-					case 'is_not_equal':
3610
-						$match_found = (bool) ( $search != '' && $match_value != $search );
3611
-						break;
3612
-					case 'is_greater_than':
3613
-						$match_found = false;
3614
-						break;
3615
-					case 'is_less_than':
3616
-						$match_found = false;
3617
-						break;
3618
-					case 'is_empty':
3619
-						$match_found = true;
3620
-						break;
3621
-					case 'is_not_empty':
3622
-						$match_found = false;
3623
-						break;
3624
-					case 'is_contains':
3625
-						$match_found = false;
3626
-						break;
3627
-					case 'is_not_contains':
3628
-						$match_found = false;
3629
-						break;
3630
-				}
3631
-			}
3632
-
3633
-			$match_found = apply_filters( 'geodir_post_badge_check_match_found_empty', $match_found, $args, $find_post );
3634
-		}
3635
-	}
3636
-
3637
-	return $match_found;
3475
+    global $gd_post;
3476
+
3477
+    $match_found = false;
3478
+
3479
+    if ( class_exists( 'GeoDirectory' ) && ! empty( $gd_post->ID ) && ! empty( $rule['field'] ) && ! empty( $rule['condition'] ) ) {
3480
+        $args['block_visibility'] = true;
3481
+        $args['key'] = $rule['field'];
3482
+        $args['condition'] = $rule['condition'];
3483
+        $args['search'] = isset( $rule['search'] ) ? $rule['search'] : '';
3484
+
3485
+        if ( $args['key'] == 'street' ) {
3486
+            $args['key'] = 'address';
3487
+        }
3488
+
3489
+        $match_field = $_match_field = $args['key'];
3490
+
3491
+        if ( $match_field == 'address' ) {
3492
+            $match_field = 'street';
3493
+        } elseif ( $match_field == 'post_images' ) {
3494
+            $match_field = 'featured_image';
3495
+        }
3496
+
3497
+        $find_post = $gd_post;
3498
+        $find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3499
+
3500
+        if ( ! empty( $find_post->ID ) && ! in_array( 'post_category', $find_post_keys ) ) {
3501
+            $find_post = geodir_get_post_info( (int) $find_post->ID );
3502
+            $find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3503
+        }
3504
+
3505
+        if ( $match_field === '' || ( ! empty( $find_post_keys ) && ( in_array( $match_field, $find_post_keys ) || in_array( $_match_field, $find_post_keys ) ) ) ) {
3506
+            $address_fields = array( 'street2', 'neighbourhood', 'city', 'region', 'country', 'zip', 'latitude', 'longitude' ); // Address fields
3507
+            $field = array();
3508
+            $empty_field = false;
3509
+
3510
+            $standard_fields = sd_visibility_gd_standard_fields();
3511
+
3512
+            if ( $match_field && ! in_array( $match_field, array_keys( $standard_fields ) ) && ! in_array( $match_field, $address_fields ) ) {
3513
+                $package_id = geodir_get_post_package_id( $find_post->ID, $find_post->post_type );
3514
+                $fields = geodir_post_custom_fields( $package_id, 'all', $find_post->post_type, 'none' );
3515
+
3516
+                foreach ( $fields as $field_info ) {
3517
+                    if ( $match_field == $field_info['htmlvar_name'] ) {
3518
+                        $field = $field_info;
3519
+                        break;
3520
+                    } elseif( $_match_field == $field_info['htmlvar_name'] ) {
3521
+                        $field = $field_info;
3522
+                        break;
3523
+                    }
3524
+                }
3525
+
3526
+                if ( empty( $field ) ) {
3527
+                    $empty_field = true;
3528
+                }
3529
+            }
3530
+
3531
+            // Address fields.
3532
+            if ( in_array( $match_field, $address_fields ) && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
3533
+                if ( ! empty( $address_fields[ $match_field ] ) ) {
3534
+                    $field = $address_fields[ $match_field ];
3535
+                }
3536
+            } else if ( in_array( $match_field, array_keys( $standard_fields ) ) ) {
3537
+                if ( ! empty( $standard_fields[ $match_field ] ) ) {
3538
+                    $field = $standard_fields[ $match_field ];
3539
+                }
3540
+            }
3541
+
3542
+            // Parse search.
3543
+            $search = sd_gd_field_rule_search( $args['search'], $find_post->post_type, $rule, $field, $find_post );
3544
+
3545
+            $is_date = ( ! empty( $field['type'] ) && $field['type'] == 'datepicker' ) || in_array( $match_field, array( 'post_date', 'post_modified' ) ) ? true : false;
3546
+            $is_date = apply_filters( 'geodir_post_badge_is_date', $is_date, $match_field, $field, $args, $find_post );
3547
+
3548
+            $match_value = isset( $find_post->{$match_field} ) && empty( $empty_field ) ? esc_attr( trim( $find_post->{$match_field} ) ) : '';
3549
+            $match_found = $match_field === '' ? true : false;
3550
+
3551
+            if ( ! $match_found ) {
3552
+                if ( ( $match_field == 'post_date' || $match_field == 'post_modified' ) && ( empty( $args['condition'] ) || $args['condition'] == 'is_greater_than' || $args['condition'] == 'is_less_than' ) ) {
3553
+                    if ( strpos( $search, '+' ) === false && strpos( $search, '-' ) === false ) {
3554
+                        $search = '+' . $search;
3555
+                    }
3556
+                    $the_time = $match_field == 'post_modified' ? get_the_modified_date( 'Y-m-d', $find_post ) : get_the_time( 'Y-m-d', $find_post );
3557
+                    $until_time = strtotime( $the_time . ' ' . $search . ' days' );
3558
+                    $now_time   = strtotime( date_i18n( 'Y-m-d', current_time( 'timestamp' ) ) );
3559
+                    if ( ( empty( $args['condition'] ) || $args['condition'] == 'is_less_than' ) && $until_time > $now_time ) {
3560
+                        $match_found = true;
3561
+                    } elseif ( $args['condition'] == 'is_greater_than' && $until_time < $now_time ) {
3562
+                        $match_found = true;
3563
+                    }
3564
+                } else {
3565
+                    switch ( $args['condition'] ) {
3566
+                        case 'is_equal':
3567
+                            $match_found = (bool) ( $search != '' && $match_value == $search );
3568
+                            break;
3569
+                        case 'is_not_equal':
3570
+                            $match_found = (bool) ( $search != '' && $match_value != $search );
3571
+                            break;
3572
+                        case 'is_greater_than':
3573
+                            $match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value > $search );
3574
+                            break;
3575
+                        case 'is_less_than':
3576
+                            $match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value < $search );
3577
+                            break;
3578
+                        case 'is_empty':
3579
+                            $match_found = (bool) ( $match_value === '' || $match_value === false || $match_value === '0' || is_null( $match_value ) );
3580
+                            break;
3581
+                        case 'is_not_empty':
3582
+                            $match_found = (bool) ( $match_value !== '' && $match_value !== false && $match_value !== '0' && ! is_null( $match_value ) );
3583
+                            break;
3584
+                        case 'is_contains':
3585
+                            $match_found = (bool) ( $search != '' && stripos( $match_value, $search ) !== false );
3586
+                            break;
3587
+                        case 'is_not_contains':
3588
+                            $match_found = (bool) ( $search != '' && stripos( $match_value, $search ) === false );
3589
+                            break;
3590
+                    }
3591
+                }
3592
+            }
3593
+
3594
+            $match_found = apply_filters( 'geodir_post_badge_check_match_found', $match_found, $args, $find_post );
3595
+        } else {
3596
+            $field = array();
3597
+
3598
+            // Parse search.
3599
+            $search = sd_gd_field_rule_search( $args['search'], $find_post->post_type, $rule, $field, $find_post );
3600
+
3601
+            $match_value = '';
3602
+            $match_found = $match_field === '' ? true : false;
3603
+
3604
+            if ( ! $match_found ) {
3605
+                switch ( $args['condition'] ) {
3606
+                    case 'is_equal':
3607
+                        $match_found = (bool) ( $search != '' && $match_value == $search );
3608
+                        break;
3609
+                    case 'is_not_equal':
3610
+                        $match_found = (bool) ( $search != '' && $match_value != $search );
3611
+                        break;
3612
+                    case 'is_greater_than':
3613
+                        $match_found = false;
3614
+                        break;
3615
+                    case 'is_less_than':
3616
+                        $match_found = false;
3617
+                        break;
3618
+                    case 'is_empty':
3619
+                        $match_found = true;
3620
+                        break;
3621
+                    case 'is_not_empty':
3622
+                        $match_found = false;
3623
+                        break;
3624
+                    case 'is_contains':
3625
+                        $match_found = false;
3626
+                        break;
3627
+                    case 'is_not_contains':
3628
+                        $match_found = false;
3629
+                        break;
3630
+                }
3631
+            }
3632
+
3633
+            $match_found = apply_filters( 'geodir_post_badge_check_match_found_empty', $match_found, $args, $find_post );
3634
+        }
3635
+    }
3636
+
3637
+    return $match_found;
3638 3638
 }
3639 3639
 
3640 3640
 function sd_gd_field_rule_search( $search, $post_type, $rule, $field = array(), $gd_post = array() ) {
3641
-	global $post;
3642
-
3643
-	if ( ! $search ) {
3644
-		return $search;
3645
-	}
3646
-
3647
-	$orig_search = $search;
3648
-	$_search = strtolower( $search );
3649
-
3650
-	if ( ! empty( $rule['field'] ) && $rule['field'] == 'post_author' ) {
3651
-		if ( $search == 'current_user' ) {
3652
-			$search = is_user_logged_in() ? (int) get_current_user_id() : - 1;
3653
-		} else if ( $search == 'current_author' ) {
3654
-			$search = ( ! empty( $post ) && $post->post_type != 'page' && isset( $post->post_author ) ) ? absint( $post->post_author ) : - 1;
3655
-		}
3656
-	} else if ( $_search == 'date_today' ) {
3657
-		$search = date( 'Y-m-d' );
3658
-	} else if ( $_search == 'date_tomorrow' ) {
3659
-		$search = date( 'Y-m-d', strtotime( "+1 day" ) );
3660
-	} else if ( $_search == 'date_yesterday' ) {
3661
-		$search = date( 'Y-m-d', strtotime( "-1 day" ) );
3662
-	} else if ( $_search == 'time_his' ) {
3663
-		$search = date( 'H:i:s' );
3664
-	} else if ( $_search == 'time_hi' ) {
3665
-		$search = date( 'H:i' );
3666
-	} else if ( $_search == 'datetime_now' ) {
3667
-		$search = date( 'Y-m-d H:i:s' );
3668
-	} else if ( strpos( $_search, 'datetime_after_' ) === 0 ) {
3669
-		$_searches = explode( 'datetime_after_', $_search, 2 );
3670
-
3671
-		if ( ! empty( $_searches[1] ) ) {
3672
-			$search = date( 'Y-m-d H:i:s', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3673
-		} else {
3674
-			$search = date( 'Y-m-d H:i:s' );
3675
-		}
3676
-	} else if ( strpos( $_search, 'datetime_before_' ) === 0 ) {
3677
-		$_searches = explode( 'datetime_before_', $_search, 2 );
3678
-
3679
-		if ( ! empty( $_searches[1] ) ) {
3680
-			$search = date( 'Y-m-d H:i:s', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3681
-		} else {
3682
-			$search = date( 'Y-m-d H:i:s' );
3683
-		}
3684
-	} else if ( strpos( $_search, 'date_after_' ) === 0 ) {
3685
-		$_searches = explode( 'date_after_', $_search, 2 );
3686
-
3687
-		if ( ! empty( $_searches[1] ) ) {
3688
-			$search = date( 'Y-m-d', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3689
-		} else {
3690
-			$search = date( 'Y-m-d' );
3691
-		}
3692
-	} else if ( strpos( $_search, 'date_before_' ) === 0 ) {
3693
-		$_searches = explode( 'date_before_', $_search, 2 );
3694
-
3695
-		if ( ! empty( $_searches[1] ) ) {
3696
-			$search = date( 'Y-m-d', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3697
-		} else {
3698
-			$search = date( 'Y-m-d' );
3699
-		}
3700
-	}
3701
-
3702
-	return apply_filters( 'sd_gd_field_rule_search', $search, $post_type, $rule, $orig_search );
3641
+    global $post;
3642
+
3643
+    if ( ! $search ) {
3644
+        return $search;
3645
+    }
3646
+
3647
+    $orig_search = $search;
3648
+    $_search = strtolower( $search );
3649
+
3650
+    if ( ! empty( $rule['field'] ) && $rule['field'] == 'post_author' ) {
3651
+        if ( $search == 'current_user' ) {
3652
+            $search = is_user_logged_in() ? (int) get_current_user_id() : - 1;
3653
+        } else if ( $search == 'current_author' ) {
3654
+            $search = ( ! empty( $post ) && $post->post_type != 'page' && isset( $post->post_author ) ) ? absint( $post->post_author ) : - 1;
3655
+        }
3656
+    } else if ( $_search == 'date_today' ) {
3657
+        $search = date( 'Y-m-d' );
3658
+    } else if ( $_search == 'date_tomorrow' ) {
3659
+        $search = date( 'Y-m-d', strtotime( "+1 day" ) );
3660
+    } else if ( $_search == 'date_yesterday' ) {
3661
+        $search = date( 'Y-m-d', strtotime( "-1 day" ) );
3662
+    } else if ( $_search == 'time_his' ) {
3663
+        $search = date( 'H:i:s' );
3664
+    } else if ( $_search == 'time_hi' ) {
3665
+        $search = date( 'H:i' );
3666
+    } else if ( $_search == 'datetime_now' ) {
3667
+        $search = date( 'Y-m-d H:i:s' );
3668
+    } else if ( strpos( $_search, 'datetime_after_' ) === 0 ) {
3669
+        $_searches = explode( 'datetime_after_', $_search, 2 );
3670
+
3671
+        if ( ! empty( $_searches[1] ) ) {
3672
+            $search = date( 'Y-m-d H:i:s', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3673
+        } else {
3674
+            $search = date( 'Y-m-d H:i:s' );
3675
+        }
3676
+    } else if ( strpos( $_search, 'datetime_before_' ) === 0 ) {
3677
+        $_searches = explode( 'datetime_before_', $_search, 2 );
3678
+
3679
+        if ( ! empty( $_searches[1] ) ) {
3680
+            $search = date( 'Y-m-d H:i:s', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3681
+        } else {
3682
+            $search = date( 'Y-m-d H:i:s' );
3683
+        }
3684
+    } else if ( strpos( $_search, 'date_after_' ) === 0 ) {
3685
+        $_searches = explode( 'date_after_', $_search, 2 );
3686
+
3687
+        if ( ! empty( $_searches[1] ) ) {
3688
+            $search = date( 'Y-m-d', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3689
+        } else {
3690
+            $search = date( 'Y-m-d' );
3691
+        }
3692
+    } else if ( strpos( $_search, 'date_before_' ) === 0 ) {
3693
+        $_searches = explode( 'date_before_', $_search, 2 );
3694
+
3695
+        if ( ! empty( $_searches[1] ) ) {
3696
+            $search = date( 'Y-m-d', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3697
+        } else {
3698
+            $search = date( 'Y-m-d' );
3699
+        }
3700
+    }
3701
+
3702
+    return apply_filters( 'sd_gd_field_rule_search', $search, $post_type, $rule, $orig_search );
3703 3703
 }
3704 3704
 
3705 3705
 
3706 3706
 if(!function_exists('sd_blocks_render_blocks')){
3707
-	/**
3708
-	 * Add the shortcodes to the block content if set as an attribute.
3709
-	 *
3710
-	 * We have moved the shortcodes from the block content to a block argument to help prevent broken blocks.
3711
-	 *
3712
-	 * @param $block_content
3713
-	 * @param $parsed_block
3714
-	 * @param $thiss
3715
-	 * @return mixed|string
3716
-	 */
3717
-	function sd_blocks_render_blocks($block_content, $parsed_block, $thiss = array() ){
3718
-
3719
-		// Check if ita a nested block that needs to be wrapped
3720
-		if(! empty($parsed_block['attrs']['sd_shortcode_close'])){
3721
-			$content = isset($parsed_block['attrs']['html']) ? $parsed_block['attrs']['html'] : $block_content;
3722
-			$block_content = $parsed_block['attrs']['sd_shortcode'].$content.$parsed_block['attrs']['sd_shortcode_close'];
3723
-
3724
-			$block_content = do_shortcode($block_content);
3725
-
3726
-		}elseif(! empty($parsed_block['attrs']['sd_shortcode'])){
3727
-			$has_warp = false;
3728
-			if($block_content && strpos(trim($block_content), '<div class="wp-block-') === 0 ){
3729
-				$parts = explode('></', $block_content);
3730
-				if(count($parts) === 2){
3731
-					$block_content = $parts[0].'>'.$parsed_block['attrs']['sd_shortcode'].'</'.$parts[1];
3732
-					$has_warp = true;
3733
-				}
3734
-			}
3735
-			if (!$has_warp) {
3736
-				// Add the shortcode if its not a wrapped block
3737
-				$block_content .= $parsed_block['attrs']['sd_shortcode'];
3738
-			}
3739
-
3740
-			$block_content = do_shortcode($block_content);
3741
-		}
3742
-		return  $block_content;
3743
-	}
3707
+    /**
3708
+     * Add the shortcodes to the block content if set as an attribute.
3709
+     *
3710
+     * We have moved the shortcodes from the block content to a block argument to help prevent broken blocks.
3711
+     *
3712
+     * @param $block_content
3713
+     * @param $parsed_block
3714
+     * @param $thiss
3715
+     * @return mixed|string
3716
+     */
3717
+    function sd_blocks_render_blocks($block_content, $parsed_block, $thiss = array() ){
3718
+
3719
+        // Check if ita a nested block that needs to be wrapped
3720
+        if(! empty($parsed_block['attrs']['sd_shortcode_close'])){
3721
+            $content = isset($parsed_block['attrs']['html']) ? $parsed_block['attrs']['html'] : $block_content;
3722
+            $block_content = $parsed_block['attrs']['sd_shortcode'].$content.$parsed_block['attrs']['sd_shortcode_close'];
3723
+
3724
+            $block_content = do_shortcode($block_content);
3725
+
3726
+        }elseif(! empty($parsed_block['attrs']['sd_shortcode'])){
3727
+            $has_warp = false;
3728
+            if($block_content && strpos(trim($block_content), '<div class="wp-block-') === 0 ){
3729
+                $parts = explode('></', $block_content);
3730
+                if(count($parts) === 2){
3731
+                    $block_content = $parts[0].'>'.$parsed_block['attrs']['sd_shortcode'].'</'.$parts[1];
3732
+                    $has_warp = true;
3733
+                }
3734
+            }
3735
+            if (!$has_warp) {
3736
+                // Add the shortcode if its not a wrapped block
3737
+                $block_content .= $parsed_block['attrs']['sd_shortcode'];
3738
+            }
3739
+
3740
+            $block_content = do_shortcode($block_content);
3741
+        }
3742
+        return  $block_content;
3743
+    }
3744 3744
 }
3745 3745
 
3746 3746
 add_filter('render_block', 'sd_blocks_render_blocks',10,3);
Please login to merge, or discard this patch.
invoicing.php 1 patch
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -19,16 +19,16 @@  discard block
 block discarded – undo
19 19
 
20 20
 // Define constants.
21 21
 if ( ! defined( 'WPINV_PLUGIN_FILE' ) ) {
22
-	define( 'WPINV_PLUGIN_FILE', __FILE__ );
22
+    define( 'WPINV_PLUGIN_FILE', __FILE__ );
23 23
 }
24 24
 
25 25
 if ( ! defined( 'WPINV_VERSION' ) ) {
26
-	define( 'WPINV_VERSION', '2.8.11' );
26
+    define( 'WPINV_VERSION', '2.8.11' );
27 27
 }
28 28
 
29 29
 // Include the main Invoicing class.
30 30
 if ( ! class_exists( 'WPInv_Plugin', false ) ) {
31
-	require_once plugin_dir_path( WPINV_PLUGIN_FILE ) . 'includes/class-wpinv.php';
31
+    require_once plugin_dir_path( WPINV_PLUGIN_FILE ) . 'includes/class-wpinv.php';
32 32
 }
33 33
 
34 34
 /**
@@ -43,7 +43,7 @@  discard block
 block discarded – undo
43 43
         $GLOBALS['invoicing'] = new WPInv_Plugin();
44 44
     }
45 45
 
46
-	return $GLOBALS['invoicing'];
46
+    return $GLOBALS['invoicing'];
47 47
 }
48 48
 
49 49
 /**
Please login to merge, or discard this patch.