Passed
Push — master ( ea6210...51cde5 )
by Kiran
11:31 queued 05:35
created
includes/gateways/class-getpaid-bank-transfer-gateway.php 1 patch
Indentation   +363 added lines, -363 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;
42
+
43
+    /**
44
+     * Bank transfer instructions.
45
+     */
46
+    public $instructions;
35 47
 
36 48
     /**
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;
49
+     * Locale array.
50
+     */
51
+    public $locale;
52 52
 
53 53
     /**
54
-	 * Class constructor.
55
-	 */
56
-	public function __construct() {
54
+     * Class constructor.
55
+     */
56
+    public function __construct() {
57 57
         parent::__construct();
58 58
 
59 59
         $this->title                = __( 'Direct bank transfer', 'invoicing' );
@@ -61,43 +61,43 @@  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' ), 12, 2 );
69
-		add_action( 'getpaid_invoice_status_publish', array( $this, 'invoice_paid' ), 20 );
70
-
71
-		add_filter( 'wpinv_' . $this->id . '_support_subscription', array( $this, 'supports_subscription' ), 20, 1 );
72
-		add_filter( 'getpaid_' . $this->id . '_support_subscription', array( $this, 'supports_subscription' ), 20, 1 );
73
-		add_filter( 'getpaid_' . $this->id . '_supports_subscription', array( $this, 'supports_subscription' ), 20, 1 );
74
-	}
75
-
76
-	/**
77
-	 * Check gateway supports for subscription.
78
-	 *
79
-	 * @since 2.8.24
80
-	 *
81
-	 * @param bool $supports True if supports else False.
82
-	 * @return bool True if supports else False.
83
-	 */
84
-	public function supports_subscription( $supports ) {
85
-		if ( $supports && (int) $this->get_option( 'no_subscription' ) ) {
86
-			$supports = false;
87
-		}
88
-
89
-		return $supports;
90
-	}
91
-
92
-	/**
93
-	 * Process Payment.
94
-	 *
95
-	 * @param WPInv_Invoice $invoice Invoice.
96
-	 * @param array $submission_data Posted checkout fields.
97
-	 * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
98
-	 * @return array
99
-	 */
100
-	public function process_payment( $invoice, $submission_data, $submission ) {
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' ), 12, 2 );
69
+        add_action( 'getpaid_invoice_status_publish', array( $this, 'invoice_paid' ), 20 );
70
+
71
+        add_filter( 'wpinv_' . $this->id . '_support_subscription', array( $this, 'supports_subscription' ), 20, 1 );
72
+        add_filter( 'getpaid_' . $this->id . '_support_subscription', array( $this, 'supports_subscription' ), 20, 1 );
73
+        add_filter( 'getpaid_' . $this->id . '_supports_subscription', array( $this, 'supports_subscription' ), 20, 1 );
74
+    }
75
+
76
+    /**
77
+     * Check gateway supports for subscription.
78
+     *
79
+     * @since 2.8.24
80
+     *
81
+     * @param bool $supports True if supports else False.
82
+     * @return bool True if supports else False.
83
+     */
84
+    public function supports_subscription( $supports ) {
85
+        if ( $supports && (int) $this->get_option( 'no_subscription' ) ) {
86
+            $supports = false;
87
+        }
88
+
89
+        return $supports;
90
+    }
91
+
92
+    /**
93
+     * Process Payment.
94
+     *
95
+     * @param WPInv_Invoice $invoice Invoice.
96
+     * @param array $submission_data Posted checkout fields.
97
+     * @param GetPaid_Payment_Form_Submission $submission Checkout submission.
98
+     * @return array
99
+     */
100
+    public function process_payment( $invoice, $submission_data, $submission ) {
101 101
 
102 102
         // Add a transaction id.
103 103
         $invoice->set_transaction_id( $invoice->generate_key( 'bt_' ) );
@@ -118,66 +118,66 @@  discard block
 block discarded – undo
118 118
     }
119 119
 
120 120
     /**
121
-	 * Output for the order received page.
122
-	 *
123
-	 * @param WPInv_Invoice $invoice Invoice.
124
-	 */
125
-	public function thankyou_page( $invoice ) {
121
+     * Output for the order received page.
122
+     *
123
+     * @param WPInv_Invoice $invoice Invoice.
124
+     */
125
+    public function thankyou_page( $invoice ) {
126 126
 
127 127
         if ( 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) {
128 128
 
129
-			echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL;
129
+            echo '<div class="mt-4 mb-2 getpaid-bank-transfer-details">' . PHP_EOL;
130 130
 
131 131
             if ( ! empty( $this->instructions ) ) {
132 132
                 echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) );
133
-			}
133
+            }
134 134
 
135
-			$this->bank_details( $invoice );
135
+            $this->bank_details( $invoice );
136 136
 
137
-			echo '</div>';
137
+            echo '</div>';
138 138
 
139 139
         }
140 140
 
141
-	}
141
+    }
142 142
 
143 143
     /**
144
-	 * Add content to the WPI emails.
145
-	 *
146
-	 * @param WPInv_Invoice $invoice Invoice.
147
-	 * @param string     $email_type Email format: plain text or HTML.
148
-	 * @param bool     $sent_to_admin Sent to admin.
149
-	 */
150
-	public function email_instructions( $invoice, $email_type, $sent_to_admin ) {
144
+     * Add content to the WPI emails.
145
+     *
146
+     * @param WPInv_Invoice $invoice Invoice.
147
+     * @param string     $email_type Email format: plain text or HTML.
148
+     * @param bool     $sent_to_admin Sent to admin.
149
+     */
150
+    public function email_instructions( $invoice, $email_type, $sent_to_admin ) {
151 151
 
152
-		if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) {
152
+        if ( ! $sent_to_admin && 'bank_transfer' === $invoice->get_gateway() && $invoice->needs_payment() ) {
153 153
 
154
-			echo '<div class="wpi-email-row getpaid-bank-transfer-details">';
154
+            echo '<div class="wpi-email-row getpaid-bank-transfer-details">';
155 155
 
156
-			if ( $this->instructions ) {
157
-				echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL );
156
+            if ( $this->instructions ) {
157
+                echo wp_kses_post( wpautop( wptexturize( $this->instructions ) ) . PHP_EOL );
158 158
             }
159 159
 
160
-			$this->bank_details( $invoice );
160
+            $this->bank_details( $invoice );
161 161
 
162
-			echo '</div>';
162
+            echo '</div>';
163 163
 
164
-		}
164
+        }
165 165
 
166 166
     }
167 167
 
168 168
     /**
169
-	 * Get bank details and place into a list format.
170
-	 *
171
-	 * @param WPInv_Invoice $invoice Invoice.
172
-	 */
173
-	protected function bank_details( $invoice ) {
169
+     * Get bank details and place into a list format.
170
+     *
171
+     * @param WPInv_Invoice $invoice Invoice.
172
+     */
173
+    protected function bank_details( $invoice ) {
174 174
 
175
-		// Get the invoice country and country $locale.
176
-		$country = $invoice->get_country();
177
-		$locale  = $this->get_country_locale();
175
+        // Get the invoice country and country $locale.
176
+        $country = $invoice->get_country();
177
+        $locale  = $this->get_country_locale();
178 178
 
179
-		// Get shortcode label in the $locale array and use appropriate one.
180
-		$sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
179
+        // Get shortcode label in the $locale array and use appropriate one.
180
+        $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
181 181
 
182 182
         $bank_fields = array(
183 183
             'ac_name'   => __( 'Account Name', 'invoicing' ),
@@ -196,11 +196,11 @@  discard block
 block discarded – undo
196 196
 
197 197
             if ( ! empty( $value ) ) {
198 198
                 $bank_info[ $field ] = array(
199
-					'label' => $label,
200
-					'value' => $value,
201
-				);
199
+                    'label' => $label,
200
+                    'value' => $value,
201
+                );
202 202
             }
203
-		}
203
+        }
204 204
 
205 205
         $bank_info = apply_filters( 'wpinv_bank_info', $bank_info, $invoice );
206 206
 
@@ -208,177 +208,177 @@  discard block
 block discarded – undo
208 208
             return;
209 209
         }
210 210
 
211
-		echo '<h3 class="getpaid-bank-transfer-title"> ' . esc_html( apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ), $invoice ) ) . '</h3>' . PHP_EOL;
211
+        echo '<h3 class="getpaid-bank-transfer-title"> ' . esc_html( apply_filters( 'wpinv_receipt_bank_details_title', __( 'Bank Details', 'invoicing' ), $invoice ) ) . '</h3>' . PHP_EOL;
212
+
213
+        echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL;
214
+
215
+        foreach ( $bank_info as $key => $data ) {
216
+            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;
217
+        }
218
+
219
+        echo '</table>';
220
+
221
+    }
222
+
223
+    /**
224
+     * Get country locale if localized.
225
+     *
226
+     * @return array
227
+     */
228
+    public function get_country_locale() {
229
+
230
+        if ( empty( $this->locale ) ) {
231
+
232
+            // Locale information to be used - only those that are not 'Sort Code'.
233
+            $this->locale = apply_filters(
234
+                'getpaid_get_bank_transfer_locale',
235
+                array(
236
+                    'AU' => array(
237
+                        'sortcode' => array(
238
+                            'label' => __( 'BSB', 'invoicing' ),
239
+                        ),
240
+                    ),
241
+                    'CA' => array(
242
+                        'sortcode' => array(
243
+                            'label' => __( 'Bank transit number', 'invoicing' ),
244
+                        ),
245
+                    ),
246
+                    'IN' => array(
247
+                        'sortcode' => array(
248
+                            'label' => __( 'IFSC', 'invoicing' ),
249
+                        ),
250
+                    ),
251
+                    'IT' => array(
252
+                        'sortcode' => array(
253
+                            'label' => __( 'Branch sort', 'invoicing' ),
254
+                        ),
255
+                    ),
256
+                    'NZ' => array(
257
+                        'sortcode' => array(
258
+                            'label' => __( 'Bank code', 'invoicing' ),
259
+                        ),
260
+                    ),
261
+                    'SE' => array(
262
+                        'sortcode' => array(
263
+                            'label' => __( 'Bank code', 'invoicing' ),
264
+                        ),
265
+                    ),
266
+                    'US' => array(
267
+                        'sortcode' => array(
268
+                            'label' => __( 'Routing number', 'invoicing' ),
269
+                        ),
270
+                    ),
271
+                    'ZA' => array(
272
+                        'sortcode' => array(
273
+                            'label' => __( 'Branch code', 'invoicing' ),
274
+                        ),
275
+                    ),
276
+                )
277
+            );
278
+
279
+        }
280
+
281
+        return $this->locale;
282
+
283
+    }
284
+
285
+    /**
286
+     * Filters the gateway settings.
287
+     *
288
+     * @param array $admin_settings
289
+     */
290
+    public function admin_settings( $admin_settings ) {
291
+        $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' );
292
+        $admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' );
293
+
294
+        $_settings = array();
295
+
296
+        foreach ( $admin_settings as $key => $setting ) {
297
+            $_settings[ $key ] = $setting;
298
+
299
+            if ( $key == 'bank_transfer_active' ) {
300
+                // Enable/disable subscriptions setting.
301
+                $_settings['bank_transfer_no_subscription'] = array(
302
+                    'id' => 'bank_transfer_no_subscription',
303
+                    'type' => 'checkbox',
304
+                    'name' => __( 'Disable Subscriptions', 'invoicing' ),
305
+                    'desc' => __( 'Tick to disable support for recurring items.', 'invoicing' ),
306
+                    'std' => 0
307
+                );
308
+            }
309
+        }
310
+
311
+        $admin_settings = $_settings;
312
+
313
+        $locale  = $this->get_country_locale();
314
+
315
+        // Get sortcode label in the $locale array and use appropriate one.
316
+        $country  = wpinv_default_billing_country();
317
+        $sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
318
+
319
+        $admin_settings['bank_transfer_ac_name'] = array(
320
+            'type' => 'text',
321
+            'id'   => 'bank_transfer_ac_name',
322
+            'name' => __( 'Account Name', 'invoicing' ),
323
+        );
324
+
325
+        $admin_settings['bank_transfer_ac_no'] = array(
326
+            'type' => 'text',
327
+            'id'   => 'bank_transfer_ac_no',
328
+            'name' => __( 'Account Number', 'invoicing' ),
329
+        );
330
+
331
+        $admin_settings['bank_transfer_bank_name'] = array(
332
+            'type' => 'text',
333
+            'id'   => 'bank_transfer_bank_name',
334
+            'name' => __( 'Bank Name', 'invoicing' ),
335
+        );
212 336
 
213
-		echo '<table class="table table-bordered getpaid-bank-transfer-details">' . PHP_EOL;
337
+        $admin_settings['bank_transfer_ifsc'] = array(
338
+            'type' => 'text',
339
+            'id'   => 'bank_transfer_ifsc',
340
+            'name' => __( 'IFSC Code', 'invoicing' ),
341
+        );
342
+
343
+        $admin_settings['bank_transfer_iban'] = array(
344
+            'type' => 'text',
345
+            'id'   => 'bank_transfer_iban',
346
+            'name' => __( 'IBAN', 'invoicing' ),
347
+        );
348
+
349
+        $admin_settings['bank_transfer_bic'] = array(
350
+            'type' => 'text',
351
+            'id'   => 'bank_transfer_bic',
352
+            'name' => __( 'BIC/Swift Code', 'invoicing' ),
353
+        );
214 354
 
215
-		foreach ( $bank_info as $key => $data ) {
216
-			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;
217
-		}
355
+        $admin_settings['bank_transfer_sort_code'] = array(
356
+            'type' => 'text',
357
+            'id'   => 'bank_transfer_sort_code',
358
+            'name' => $sortcode,
359
+        );
218 360
 
219
-		echo '</table>';
361
+        $admin_settings['bank_transfer_info'] = array(
362
+            'id'   => 'bank_transfer_info',
363
+            'name' => __( 'Instructions', 'invoicing' ),
364
+            'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ),
365
+            'type' => 'textarea',
366
+            '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' ),
367
+            'cols' => 50,
368
+            'rows' => 5,
369
+        );
220 370
 
371
+        return $admin_settings;
221 372
     }
222 373
 
223 374
     /**
224
-	 * Get country locale if localized.
225
-	 *
226
-	 * @return array
227
-	 */
228
-	public function get_country_locale() {
229
-
230
-		if ( empty( $this->locale ) ) {
231
-
232
-			// Locale information to be used - only those that are not 'Sort Code'.
233
-			$this->locale = apply_filters(
234
-				'getpaid_get_bank_transfer_locale',
235
-				array(
236
-					'AU' => array(
237
-						'sortcode' => array(
238
-							'label' => __( 'BSB', 'invoicing' ),
239
-						),
240
-					),
241
-					'CA' => array(
242
-						'sortcode' => array(
243
-							'label' => __( 'Bank transit number', 'invoicing' ),
244
-						),
245
-					),
246
-					'IN' => array(
247
-						'sortcode' => array(
248
-							'label' => __( 'IFSC', 'invoicing' ),
249
-						),
250
-					),
251
-					'IT' => array(
252
-						'sortcode' => array(
253
-							'label' => __( 'Branch sort', 'invoicing' ),
254
-						),
255
-					),
256
-					'NZ' => array(
257
-						'sortcode' => array(
258
-							'label' => __( 'Bank code', 'invoicing' ),
259
-						),
260
-					),
261
-					'SE' => array(
262
-						'sortcode' => array(
263
-							'label' => __( 'Bank code', 'invoicing' ),
264
-						),
265
-					),
266
-					'US' => array(
267
-						'sortcode' => array(
268
-							'label' => __( 'Routing number', 'invoicing' ),
269
-						),
270
-					),
271
-					'ZA' => array(
272
-						'sortcode' => array(
273
-							'label' => __( 'Branch code', 'invoicing' ),
274
-						),
275
-					),
276
-				)
277
-			);
278
-
279
-		}
280
-
281
-		return $this->locale;
282
-
283
-	}
284
-
285
-	/**
286
-	 * Filters the gateway settings.
287
-	 *
288
-	 * @param array $admin_settings
289
-	 */
290
-	public function admin_settings( $admin_settings ) {
291
-		$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' );
292
-		$admin_settings['bank_transfer_active']['desc'] = __( 'Enable bank transfer', 'invoicing' );
293
-
294
-		$_settings = array();
295
-
296
-		foreach ( $admin_settings as $key => $setting ) {
297
-			$_settings[ $key ] = $setting;
298
-
299
-			if ( $key == 'bank_transfer_active' ) {
300
-				// Enable/disable subscriptions setting.
301
-				$_settings['bank_transfer_no_subscription'] = array(
302
-					'id' => 'bank_transfer_no_subscription',
303
-					'type' => 'checkbox',
304
-					'name' => __( 'Disable Subscriptions', 'invoicing' ),
305
-					'desc' => __( 'Tick to disable support for recurring items.', 'invoicing' ),
306
-					'std' => 0
307
-				);
308
-			}
309
-		}
310
-
311
-		$admin_settings = $_settings;
312
-
313
-		$locale  = $this->get_country_locale();
314
-
315
-		// Get sortcode label in the $locale array and use appropriate one.
316
-		$country  = wpinv_default_billing_country();
317
-		$sortcode = isset( $locale[ $country ]['sortcode']['label'] ) ? $locale[ $country ]['sortcode']['label'] : __( 'Sort code', 'invoicing' );
318
-
319
-		$admin_settings['bank_transfer_ac_name'] = array(
320
-			'type' => 'text',
321
-			'id'   => 'bank_transfer_ac_name',
322
-			'name' => __( 'Account Name', 'invoicing' ),
323
-		);
324
-
325
-		$admin_settings['bank_transfer_ac_no'] = array(
326
-			'type' => 'text',
327
-			'id'   => 'bank_transfer_ac_no',
328
-			'name' => __( 'Account Number', 'invoicing' ),
329
-		);
330
-
331
-		$admin_settings['bank_transfer_bank_name'] = array(
332
-			'type' => 'text',
333
-			'id'   => 'bank_transfer_bank_name',
334
-			'name' => __( 'Bank Name', 'invoicing' ),
335
-		);
336
-
337
-		$admin_settings['bank_transfer_ifsc'] = array(
338
-			'type' => 'text',
339
-			'id'   => 'bank_transfer_ifsc',
340
-			'name' => __( 'IFSC Code', 'invoicing' ),
341
-		);
342
-
343
-		$admin_settings['bank_transfer_iban'] = array(
344
-			'type' => 'text',
345
-			'id'   => 'bank_transfer_iban',
346
-			'name' => __( 'IBAN', 'invoicing' ),
347
-		);
348
-
349
-		$admin_settings['bank_transfer_bic'] = array(
350
-			'type' => 'text',
351
-			'id'   => 'bank_transfer_bic',
352
-			'name' => __( 'BIC/Swift Code', 'invoicing' ),
353
-		);
354
-
355
-		$admin_settings['bank_transfer_sort_code'] = array(
356
-			'type' => 'text',
357
-			'id'   => 'bank_transfer_sort_code',
358
-			'name' => $sortcode,
359
-		);
360
-
361
-		$admin_settings['bank_transfer_info'] = array(
362
-			'id'   => 'bank_transfer_info',
363
-			'name' => __( 'Instructions', 'invoicing' ),
364
-			'desc' => __( 'Instructions that will be added to the thank you page and emails.', 'invoicing' ),
365
-			'type' => 'textarea',
366
-			'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' ),
367
-			'cols' => 50,
368
-			'rows' => 5,
369
-		);
370
-
371
-		return $admin_settings;
372
-	}
373
-
374
-	/**
375
-	 * Processes invoice addons.
376
-	 *
377
-	 * @param WPInv_Invoice $invoice
378
-	 * @param GetPaid_Form_Item[] $items
379
-	 * @return WPInv_Invoice
380
-	 */
381
-	public function process_addons( $invoice, $items ) {
375
+     * Processes invoice addons.
376
+     *
377
+     * @param WPInv_Invoice $invoice
378
+     * @param GetPaid_Form_Item[] $items
379
+     * @return WPInv_Invoice
380
+     */
381
+    public function process_addons( $invoice, $items ) {
382 382
 
383 383
         foreach ( $items as $item ) {
384 384
             $invoice->add_item( $item );
@@ -386,98 +386,98 @@  discard block
 block discarded – undo
386 386
 
387 387
         $invoice->recalculate_total();
388 388
         $invoice->save();
389
-	}
390
-
391
-	/**
392
-	 * (Maybe) renews a bank transfer subscription profile.
393
-	 *
394
-	 *
395
-	 * @param WPInv_Subscription $subscription
396
-	 */
397
-	public function maybe_renew_subscription( $subscription, $parent_invoice ) {
398
-		// Ensure its our subscription && it's active.
399
-		if ( ! empty( $parent_invoice ) && $this->id === $parent_invoice->get_gateway() && $subscription->has_status( 'active trialling' ) ) {
400
-			add_filter( 'getpaid_invoice_notifications_is_payment_form_invoice', array( $this, 'force_is_payment_form_invoice' ), 10, 2 );
401
-
402
-			$invoice = $subscription->create_payment();
403
-
404
-			if ( ! empty( $invoice ) ) {
405
-				$is_logged_in = is_user_logged_in();
406
-
407
-				// Cron run.
408
-				if ( ! $is_logged_in ) {
409
-					$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 ) );
410
-
411
-					$invoice->add_note( $note, false, $is_logged_in, ! $is_logged_in );
412
-				}
413
-			}
414
-
415
-			remove_filter( 'getpaid_invoice_notifications_is_payment_form_invoice', array( $this, 'force_is_payment_form_invoice' ), 10, 2 );
416
-		}
417
-	}
418
-
419
-	/**
420
-	 * Process a bank transfer payment.
421
-	 *
422
-	 *
389
+    }
390
+
391
+    /**
392
+     * (Maybe) renews a bank transfer subscription profile.
393
+     *
394
+     *
395
+     * @param WPInv_Subscription $subscription
396
+     */
397
+    public function maybe_renew_subscription( $subscription, $parent_invoice ) {
398
+        // Ensure its our subscription && it's active.
399
+        if ( ! empty( $parent_invoice ) && $this->id === $parent_invoice->get_gateway() && $subscription->has_status( 'active trialling' ) ) {
400
+            add_filter( 'getpaid_invoice_notifications_is_payment_form_invoice', array( $this, 'force_is_payment_form_invoice' ), 10, 2 );
401
+
402
+            $invoice = $subscription->create_payment();
403
+
404
+            if ( ! empty( $invoice ) ) {
405
+                $is_logged_in = is_user_logged_in();
406
+
407
+                // Cron run.
408
+                if ( ! $is_logged_in ) {
409
+                    $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 ) );
410
+
411
+                    $invoice->add_note( $note, false, $is_logged_in, ! $is_logged_in );
412
+                }
413
+            }
414
+
415
+            remove_filter( 'getpaid_invoice_notifications_is_payment_form_invoice', array( $this, 'force_is_payment_form_invoice' ), 10, 2 );
416
+        }
417
+    }
418
+
419
+    /**
420
+     * Process a bank transfer payment.
421
+     *
422
+     *
423 423
      * @param WPInv_Invoice $invoice
424
-	 */
425
-	public function invoice_paid( $invoice ) {
426
-
427
-		// Abort if not paid by bank transfer.
428
-		if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) {
429
-			return;
430
-		}
431
-
432
-		// Is it a parent payment?
433
-		if ( 0 == $invoice->get_parent_id() ) {
434
-
435
-			// (Maybe) activate subscriptions.
436
-			$subscriptions = getpaid_get_invoice_subscriptions( $invoice );
437
-
438
-			if ( ! empty( $subscriptions ) ) {
439
-				$subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions );
440
-
441
-				foreach ( $subscriptions as $subscription ) {
442
-					if ( $subscription->exists() ) {
443
-						$duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() );
444
-						$expiry   = gmdate( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) );
445
-
446
-						$subscription->set_next_renewal_date( $expiry );
447
-						$subscription->set_date_created( current_time( 'mysql' ) );
448
-						$subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() );
449
-						$subscription->activate();
450
-					}
451
-				}
452
-			}
453
-		} else {
454
-
455
-			$subscription = getpaid_get_subscription( $invoice->get_subscription_id() );
456
-
457
-			// Renew the subscription.
458
-			if ( $subscription && $subscription->exists() ) {
459
-				$subscription->add_payment( array(), $invoice );
460
-				$subscription->renew( strtotime( $invoice->get_date_created() ) );
461
-			}
462
-		}
424
+     */
425
+    public function invoice_paid( $invoice ) {
426
+
427
+        // Abort if not paid by bank transfer.
428
+        if ( $this->id !== $invoice->get_gateway() || ! $invoice->is_recurring() ) {
429
+            return;
430
+        }
431
+
432
+        // Is it a parent payment?
433
+        if ( 0 == $invoice->get_parent_id() ) {
434
+
435
+            // (Maybe) activate subscriptions.
436
+            $subscriptions = getpaid_get_invoice_subscriptions( $invoice );
437
+
438
+            if ( ! empty( $subscriptions ) ) {
439
+                $subscriptions = is_array( $subscriptions ) ? $subscriptions : array( $subscriptions );
440
+
441
+                foreach ( $subscriptions as $subscription ) {
442
+                    if ( $subscription->exists() ) {
443
+                        $duration = strtotime( $subscription->get_expiration() ) - strtotime( $subscription->get_date_created() );
444
+                        $expiry   = gmdate( 'Y-m-d H:i:s', ( current_time( 'timestamp' ) + $duration ) );
445
+
446
+                        $subscription->set_next_renewal_date( $expiry );
447
+                        $subscription->set_date_created( current_time( 'mysql' ) );
448
+                        $subscription->set_profile_id( 'bt_sub_' . $invoice->get_id() . '_' . $subscription->get_id() );
449
+                        $subscription->activate();
450
+                    }
451
+                }
452
+            }
453
+        } else {
454
+
455
+            $subscription = getpaid_get_subscription( $invoice->get_subscription_id() );
456
+
457
+            // Renew the subscription.
458
+            if ( $subscription && $subscription->exists() ) {
459
+                $subscription->add_payment( array(), $invoice );
460
+                $subscription->renew( strtotime( $invoice->get_date_created() ) );
461
+            }
462
+        }
463 463
 
464 464
     }
465 465
 
466
-	/**
467
-	 * Force created from payment false to allow email for auto renewal generation invoice.
468
-	 *
469
-	 * @since 2.8.11
470
-	 *
471
-	 * @param bool $is_payment_form_invoice True when invoice created via payment form else false.
472
-	 * @param int  $invoice Invoice ID.
473
-	 * @return bool True when invoice created via payment form else false.
474
-	 */
475
-	public function force_is_payment_form_invoice( $is_payment_form_invoice, $invoice ) {
476
-		if ( $is_payment_form_invoice ) {
477
-			$is_payment_form_invoice = false;
478
-		}
479
-
480
-		return $is_payment_form_invoice;
481
-	}
466
+    /**
467
+     * Force created from payment false to allow email for auto renewal generation invoice.
468
+     *
469
+     * @since 2.8.11
470
+     *
471
+     * @param bool $is_payment_form_invoice True when invoice created via payment form else false.
472
+     * @param int  $invoice Invoice ID.
473
+     * @return bool True when invoice created via payment form else false.
474
+     */
475
+    public function force_is_payment_form_invoice( $is_payment_form_invoice, $invoice ) {
476
+        if ( $is_payment_form_invoice ) {
477
+            $is_payment_form_invoice = false;
478
+        }
479
+
480
+        return $is_payment_form_invoice;
481
+    }
482 482
 
483 483
 }
Please login to merge, or discard this patch.
includes/admin/class-getpaid-admin-setup-wizard.php 1 patch
Indentation   +388 added lines, -388 removed lines patch added patch discarded remove patch
@@ -17,402 +17,402 @@
 block discarded – undo
17 17
  */
18 18
 class GetPaid_Admin_Setup_Wizard {
19 19
 
20
-	/**
21
-	 * @var string Current Step
22
-	 */
23
-	protected $step = '';
24
-
25
-	/**
26
-	 * @var string|false Previous Step
27
-	 */
28
-	protected $previous_step = '';
29
-
30
-	/**
31
-	 * @var string|false Next Step
32
-	 */
33
-	protected $next_step = '';
34
-
35
-	/**
36
-	 * @var array All available steps for the setup wizard
37
-	 */
38
-	protected $steps = array();
39
-
40
-	/**
41
-	 * Class constructor.
42
-	 *
43
-	 * @since 2.4.0
44
-	 */
45
-	public function __construct() {
46
-
47
-		if ( apply_filters( 'getpaid_enable_setup_wizard', true ) && wpinv_current_user_can_manage_invoicing() ) {
48
-			add_action( 'admin_menu', array( $this, 'add_menu' ) );
49
-			add_action( 'current_screen', array( $this, 'setup_wizard' ) );
50
-			add_action( 'admin_init', array( $this, 'remove_deprecated_functions' ) );
51
-		}
52
-
53
-	}
54
-
55
-	/**
56
-	 * Add admin menus/screens.
57
-	 *
58
-	 * @since 2.4.0
59
-	 */
60
-	public function add_menu() {
61
-		add_dashboard_page( '', '', wpinv_get_capability(), 'gp-setup', '' );
62
-	}
63
-
64
-	/**
65
-	 * Sets up the setup wizard.
66
-	 *
67
-	 * @since 2.4.0
68
-	 */
69
-	public function setup_wizard() {
70
-
71
-		if ( isset( $_GET['page'] ) && 'gp-setup' === $_GET['page'] ) {
72
-			$this->setup_globals();
73
-			$this->maybe_save_current_step();
74
-			$this->display_wizard();
75
-			exit;
76
-		}
77
-
78
-	}
79
-
80
-	public function remove_deprecated_functions() {
81
-		// removes deprecated warnings from page
82
-		remove_action('admin_print_styles', 'print_emoji_styles');
83
-		remove_action( 'admin_head', 'wp_admin_bar_header' );
84
-	}
85
-
86
-	/**
87
-	 * Sets up class variables.
88
-	 *
89
-	 * @since 2.4.0
90
-	 */
91
-	protected function setup_globals() {
92
-		$this->steps         = $this->get_setup_steps();
93
-		$this->step          = $this->get_current_step();
94
-		$this->previous_step = $this->get_previous_step();
95
-		$this->next_step     = $this->get_next_step();
96
-	}
97
-
98
-	/**
99
-	 * Saves the current step.
100
-	 *
101
-	 * @since 2.4.0
102
-	 */
103
-	protected function maybe_save_current_step() {
104
-		if ( ! empty( $_POST['save_step'] ) && is_callable( $this->steps[ $this->step ]['handler'] ) ) {
105
-			call_user_func( $this->steps[ $this->step ]['handler'], $this );
106
-		}
107
-	}
108
-
109
-	/**
110
-	 * Returns the setup steps.
111
-	 *
112
-	 * @since 2.4.0
113
-	 * @return array
114
-	 */
115
-	protected function get_setup_steps() {
116
-
117
-		$steps = array(
118
-
119
-			'introduction'     => array(
120
-				'name'    => __( 'Introduction', 'invoicing' ),
121
-				'view'    => array( $this, 'setup_introduction' ),
122
-				'handler' => '',
123
-			),
124
-
125
-			'business_details' => array(
126
-				'name'    => __( 'Business Details', 'invoicing' ),
127
-				'view'    => array( $this, 'setup_business' ),
128
-				'handler' => '',
129
-			),
130
-
131
-			'currency'         => array(
132
-				'name'    => __( 'Currency', 'invoicing' ),
133
-				'view'    => array( $this, 'setup_currency' ),
134
-				'handler' => '',
135
-			),
136
-
137
-			'payments'         => array(
138
-				'name'    => __( 'Payment Gateways', 'invoicing' ),
139
-				'view'    => array( $this, 'setup_payments' ),
140
-				'handler' => array( $this, 'setup_payments_save' ),
141
-			),
142
-
143
-			'recommend'        => array(
144
-				'name'    => __( 'Recommend', 'invoicing' ),
145
-				'view'    => array( $this, 'setup_recommend' ),
146
-				'handler' => '',
147
-			),
148
-
149
-			'next_steps'       => array(
150
-				'name'    => __( 'Get Paid', 'invoicing' ),
151
-				'view'    => array( $this, 'setup_ready' ),
152
-				'handler' => '',
153
-			),
154
-
155
-		);
156
-
157
-		return apply_filters( 'getpaid_setup_wizard_steps', $steps );
158
-
159
-	}
160
-
161
-	/**
162
-	 * Returns the current step.
163
-	 *
164
-	 * @since 2.4.0
165
-	 * @return string
166
-	 */
167
-	protected function get_current_step() {
168
-		$step = isset( $_GET['step'] ) ? sanitize_key( $_GET['step'] ) : '';
169
-		return ! empty( $step ) && in_array( $step, array_keys( $this->steps ) ) ? $step : current( array_keys( $this->steps ) );
170
-	}
171
-
172
-	/**
173
-	 * Returns the previous step.
174
-	 *
175
-	 * @since 2.4.0
176
-	 * @return string|false
177
-	 */
178
-	protected function get_previous_step() {
179
-
180
-		$previous = false;
181
-		$current  = $this->step;
182
-		foreach ( array_keys( $this->steps ) as $step ) {
183
-			if ( $current === $step ) {
184
-				return $previous;
185
-			}
186
-
187
-			$previous = $step;
188
-		}
189
-
190
-		return false;
191
-	}
192
-
193
-	/**
194
-	 * Returns the next step.
195
-	 *
196
-	 * @since 2.4.0
197
-	 * @return string|false
198
-	 */
199
-	protected function get_next_step() {
200
-
201
-		$on_current = false;
202
-		$current    = $this->step;
203
-		foreach ( array_keys( $this->steps ) as $step ) {
204
-
205
-			if ( $on_current ) {
206
-				return $step;
207
-			}
208
-
209
-			if ( $current === $step ) {
210
-				return $on_current = true;
211
-			}
20
+    /**
21
+     * @var string Current Step
22
+     */
23
+    protected $step = '';
24
+
25
+    /**
26
+     * @var string|false Previous Step
27
+     */
28
+    protected $previous_step = '';
29
+
30
+    /**
31
+     * @var string|false Next Step
32
+     */
33
+    protected $next_step = '';
34
+
35
+    /**
36
+     * @var array All available steps for the setup wizard
37
+     */
38
+    protected $steps = array();
39
+
40
+    /**
41
+     * Class constructor.
42
+     *
43
+     * @since 2.4.0
44
+     */
45
+    public function __construct() {
46
+
47
+        if ( apply_filters( 'getpaid_enable_setup_wizard', true ) && wpinv_current_user_can_manage_invoicing() ) {
48
+            add_action( 'admin_menu', array( $this, 'add_menu' ) );
49
+            add_action( 'current_screen', array( $this, 'setup_wizard' ) );
50
+            add_action( 'admin_init', array( $this, 'remove_deprecated_functions' ) );
51
+        }
52
+
53
+    }
54
+
55
+    /**
56
+     * Add admin menus/screens.
57
+     *
58
+     * @since 2.4.0
59
+     */
60
+    public function add_menu() {
61
+        add_dashboard_page( '', '', wpinv_get_capability(), 'gp-setup', '' );
62
+    }
63
+
64
+    /**
65
+     * Sets up the setup wizard.
66
+     *
67
+     * @since 2.4.0
68
+     */
69
+    public function setup_wizard() {
70
+
71
+        if ( isset( $_GET['page'] ) && 'gp-setup' === $_GET['page'] ) {
72
+            $this->setup_globals();
73
+            $this->maybe_save_current_step();
74
+            $this->display_wizard();
75
+            exit;
76
+        }
77
+
78
+    }
79
+
80
+    public function remove_deprecated_functions() {
81
+        // removes deprecated warnings from page
82
+        remove_action('admin_print_styles', 'print_emoji_styles');
83
+        remove_action( 'admin_head', 'wp_admin_bar_header' );
84
+    }
85
+
86
+    /**
87
+     * Sets up class variables.
88
+     *
89
+     * @since 2.4.0
90
+     */
91
+    protected function setup_globals() {
92
+        $this->steps         = $this->get_setup_steps();
93
+        $this->step          = $this->get_current_step();
94
+        $this->previous_step = $this->get_previous_step();
95
+        $this->next_step     = $this->get_next_step();
96
+    }
97
+
98
+    /**
99
+     * Saves the current step.
100
+     *
101
+     * @since 2.4.0
102
+     */
103
+    protected function maybe_save_current_step() {
104
+        if ( ! empty( $_POST['save_step'] ) && is_callable( $this->steps[ $this->step ]['handler'] ) ) {
105
+            call_user_func( $this->steps[ $this->step ]['handler'], $this );
106
+        }
107
+    }
108
+
109
+    /**
110
+     * Returns the setup steps.
111
+     *
112
+     * @since 2.4.0
113
+     * @return array
114
+     */
115
+    protected function get_setup_steps() {
116
+
117
+        $steps = array(
118
+
119
+            'introduction'     => array(
120
+                'name'    => __( 'Introduction', 'invoicing' ),
121
+                'view'    => array( $this, 'setup_introduction' ),
122
+                'handler' => '',
123
+            ),
124
+
125
+            'business_details' => array(
126
+                'name'    => __( 'Business Details', 'invoicing' ),
127
+                'view'    => array( $this, 'setup_business' ),
128
+                'handler' => '',
129
+            ),
130
+
131
+            'currency'         => array(
132
+                'name'    => __( 'Currency', 'invoicing' ),
133
+                'view'    => array( $this, 'setup_currency' ),
134
+                'handler' => '',
135
+            ),
136
+
137
+            'payments'         => array(
138
+                'name'    => __( 'Payment Gateways', 'invoicing' ),
139
+                'view'    => array( $this, 'setup_payments' ),
140
+                'handler' => array( $this, 'setup_payments_save' ),
141
+            ),
142
+
143
+            'recommend'        => array(
144
+                'name'    => __( 'Recommend', 'invoicing' ),
145
+                'view'    => array( $this, 'setup_recommend' ),
146
+                'handler' => '',
147
+            ),
148
+
149
+            'next_steps'       => array(
150
+                'name'    => __( 'Get Paid', 'invoicing' ),
151
+                'view'    => array( $this, 'setup_ready' ),
152
+                'handler' => '',
153
+            ),
154
+
155
+        );
156
+
157
+        return apply_filters( 'getpaid_setup_wizard_steps', $steps );
158
+
159
+    }
160
+
161
+    /**
162
+     * Returns the current step.
163
+     *
164
+     * @since 2.4.0
165
+     * @return string
166
+     */
167
+    protected function get_current_step() {
168
+        $step = isset( $_GET['step'] ) ? sanitize_key( $_GET['step'] ) : '';
169
+        return ! empty( $step ) && in_array( $step, array_keys( $this->steps ) ) ? $step : current( array_keys( $this->steps ) );
170
+    }
171
+
172
+    /**
173
+     * Returns the previous step.
174
+     *
175
+     * @since 2.4.0
176
+     * @return string|false
177
+     */
178
+    protected function get_previous_step() {
179
+
180
+        $previous = false;
181
+        $current  = $this->step;
182
+        foreach ( array_keys( $this->steps ) as $step ) {
183
+            if ( $current === $step ) {
184
+                return $previous;
185
+            }
186
+
187
+            $previous = $step;
188
+        }
189
+
190
+        return false;
191
+    }
192
+
193
+    /**
194
+     * Returns the next step.
195
+     *
196
+     * @since 2.4.0
197
+     * @return string|false
198
+     */
199
+    protected function get_next_step() {
200
+
201
+        $on_current = false;
202
+        $current    = $this->step;
203
+        foreach ( array_keys( $this->steps ) as $step ) {
204
+
205
+            if ( $on_current ) {
206
+                return $step;
207
+            }
208
+
209
+            if ( $current === $step ) {
210
+                return $on_current = true;
211
+            }
212 212
 }
213 213
 
214
-		return false;
215
-	}
216
-
217
-	/**
218
-	 * Displays the setup wizard.
219
-	 *
220
-	 * @since 2.4.0
221
-	 */
222
-	public function display_wizard() {
223
-		$this->display_header();
224
-		$this->display_current_step();
225
-		$this->display_footer();
226
-	}
227
-
228
-	/**
229
-	 * Displays the Wizard Header.
230
-	 *
231
-	 * @since 2.0.0
232
-	 */
233
-	public function display_header() {
234
-		$steps     = $this->steps;
235
-		$current   = $this->step;
236
-		$next_step = $this->next_step;
237
-		array_shift( $steps );
238
-		include plugin_dir_path( __FILE__ ) . 'views/wizard-header.php';
239
-	}
240
-
241
-	/**
242
-	 * Displays the content for the current step.
243
-	 *
244
-	 * @since 2.4.0
245
-	 */
246
-	public function display_current_step() {
247
-		?>
214
+        return false;
215
+    }
216
+
217
+    /**
218
+     * Displays the setup wizard.
219
+     *
220
+     * @since 2.4.0
221
+     */
222
+    public function display_wizard() {
223
+        $this->display_header();
224
+        $this->display_current_step();
225
+        $this->display_footer();
226
+    }
227
+
228
+    /**
229
+     * Displays the Wizard Header.
230
+     *
231
+     * @since 2.0.0
232
+     */
233
+    public function display_header() {
234
+        $steps     = $this->steps;
235
+        $current   = $this->step;
236
+        $next_step = $this->next_step;
237
+        array_shift( $steps );
238
+        include plugin_dir_path( __FILE__ ) . 'views/wizard-header.php';
239
+    }
240
+
241
+    /**
242
+     * Displays the content for the current step.
243
+     *
244
+     * @since 2.4.0
245
+     */
246
+    public function display_current_step() {
247
+        ?>
248 248
 			<div class="gp-setup-content rowx mw-100 text-center mb-3">
249 249
 				<div class="col-12 col-md-5 m-auto">
250 250
 					<?php call_user_func( $this->steps[ $this->step ]['view'], $this ); ?>
251 251
 				</div>
252 252
 			</div>
253 253
 		<?php
254
-	}
255
-
256
-	/**
257
-	 * Setup Wizard Footer.
258
-	 *
259
-	 * @since 2.4.0
260
-	 */
261
-	public function display_footer() {
262
-
263
-		if ( isset( $_GET['step'] ) ) {
264
-			$label    = $this->step == 'next_steps' ? __( 'Return to the WordPress Dashboard', 'invoicing' ) : __( 'Skip this step', 'invoicing' );
265
-
266
-			echo '<p class="gd-return-to-dashboard-wrap"> <a href="' . esc_url( $this->get_next_step_link() ) . '" class="gd-return-to-dashboard btn btn-link d-block text-muted">' . esc_html( $label ) . '</a></p>';
267
-		}
268
-
269
-		echo '</body></html>';
270
-	}
271
-
272
-	/**
273
-	 * Introduction step.
274
-	 *
275
-	 * @since 2.0.0
276
-	 */
277
-	public function setup_introduction() {
278
-		$next_url = $this->get_next_step_link();
279
-		include plugin_dir_path( __FILE__ ) . 'views/wizard-introduction.php';
280
-	}
281
-
282
-	/**
283
-	 * Get the URL for the next step's screen.
284
-	 *
285
-	 * @param string step   slug (default: current step)
286
-	 *
287
-	 * @return string       URL for next step if a next step exists.
288
-	 *                      Admin URL if it's the last step.
289
-	 *                      Empty string on failure.
290
-	 * @since 3.0.0
291
-	 */
292
-	public function get_next_step_link( $step = '' ) {
293
-		if ( ! $step ) {
294
-			$step = $this->step;
295
-		}
296
-
297
-		$keys = array_keys( $this->steps );
298
-		if ( end( $keys ) === $step ) {
299
-			return admin_url();
300
-		}
301
-
302
-		$step_index = array_search( $step, $keys );
303
-		if ( false === $step_index ) {
304
-			return '';
305
-		}
306
-
307
-		return remove_query_arg( 'settings-updated', add_query_arg( 'step', $keys[ $step_index + 1 ] ) );
308
-	}
309
-
310
-	/**
311
-	 * Setup maps api.
312
-	 *
313
-	 * @since 2.0.0
314
-	 */
315
-	public function setup_business() {
316
-		$next_url = $this->get_next_step_link();
317
-		$wizard   = $this;
318
-		$page     = 'wpinv_settings_general_main';
319
-		$section  = 'wpinv_settings_general_main';
320
-		include plugin_dir_path( __FILE__ ) . 'views/wizard-settings.php';
321
-	}
322
-
323
-	/**
324
-	 * Default Location settings.
325
-	 *
326
-	 * @since 2.0.0
327
-	 */
328
-	public function setup_currency() {
329
-		$next_url = $this->get_next_step_link();
330
-		$wizard   = $this;
331
-		$page     = 'wpinv_settings_general_currency_section';
332
-		$section  = 'wpinv_settings_general_currency_section';
333
-		include plugin_dir_path( __FILE__ ) . 'views/wizard-settings.php';
334
-	}
335
-
336
-	/**
337
-	 * Installation of recommended plugins.
338
-	 *
339
-	 * @since 1.0.0
340
-	 */
341
-	public function setup_recommend() {
342
-		$next_url            = $this->get_next_step_link();
343
-		$recommended_plugins = self::get_recommend_wp_plugins();
344
-		include plugin_dir_path( __FILE__ ) . 'views/wizard-plugins.php';
345
-	}
346
-
347
-	/**
348
-	 * A list of recommended wp.org plugins.
349
-	 * @return array
350
-	 */
351
-	public static function get_recommend_wp_plugins() {
352
-		return array(
353
-			'ayecode-connect'  => array(
354
-				'file' => 'ayecode-connect/ayecode-connect.php',
355
-				'url'  => 'https://wordpress.org/plugins/ayecode-connect/',
356
-				'slug' => 'ayecode-connect',
357
-				'name' => 'AyeCode Connect',
358
-				'desc' => __( 'Documentation and Support from within your WordPress admin.', 'invoicing' ),
359
-			),
360
-			'invoicing-quotes' => array(
361
-				'file' => 'invoicing-quotes/wpinv-quote.php',
362
-				'url'  => 'https://wordpress.org/plugins/invoicing-quotes/',
363
-				'slug' => 'invoicing-quotes',
364
-				'name' => 'Customer Quotes',
365
-				'desc' => __( 'Create & Send Quotes to Customers and have them accept and pay.', 'invoicing' ),
366
-			),
367
-			'userswp'          => array(
368
-				'file' => 'userswp/userswp.php',
369
-				'url'  => 'https://wordpress.org/plugins/userswp/',
370
-				'slug' => 'userswp',
371
-				'name' => 'UsersWP',
372
-				'desc' => __( 'Frontend user login and registration as well as slick profile pages.', 'invoicing' ),
373
-			),
374
-		);
375
-	}
376
-
377
-	/**
378
-	 * Dummy Data setup.
379
-	 *
380
-	 * @since 2.4.0
381
-	 */
382
-	public function setup_payments() {
383
-		$next_url = $this->get_next_step_link();
384
-		include plugin_dir_path( __FILE__ ) . 'views/wizard-gateways.php';
385
-	}
386
-
387
-	/**
388
-	 * Dummy data save.
389
-	 *
390
-	 * This is done via ajax so we just pass onto the next step.
391
-	 *
392
-	 * @since 2.0.0
393
-	 */
394
-	public function setup_payments_save() {
395
-		check_admin_referer( 'getpaid-setup-wizard', 'getpaid-setup-wizard' );
396
-		wpinv_update_option( 'manual_active', ! empty( $_POST['enable-manual-gateway'] ) );
397
-
398
-		if ( ! empty( $_POST['paypal-email'] ) ) {
399
-			wpinv_update_option( 'paypal_email', sanitize_email( $_POST['paypal-email'] ) );
400
-			wpinv_update_option( 'paypal_active', 1 );
401
-			wpinv_update_option( 'paypal_sandbox', 0 );
402
-		}
403
-
404
-		wp_redirect( esc_url_raw( $this->get_next_step_link() ) );
405
-		exit;
406
-	}
407
-
408
-	/**
409
-	 * Final step.
410
-	 *
411
-	 * @since 2.0.0
412
-	 */
413
-	public function setup_ready() {
414
-		include plugin_dir_path( __FILE__ ) . 'views/wizard-thank-you.php';
415
-	}
254
+    }
255
+
256
+    /**
257
+     * Setup Wizard Footer.
258
+     *
259
+     * @since 2.4.0
260
+     */
261
+    public function display_footer() {
262
+
263
+        if ( isset( $_GET['step'] ) ) {
264
+            $label    = $this->step == 'next_steps' ? __( 'Return to the WordPress Dashboard', 'invoicing' ) : __( 'Skip this step', 'invoicing' );
265
+
266
+            echo '<p class="gd-return-to-dashboard-wrap"> <a href="' . esc_url( $this->get_next_step_link() ) . '" class="gd-return-to-dashboard btn btn-link d-block text-muted">' . esc_html( $label ) . '</a></p>';
267
+        }
268
+
269
+        echo '</body></html>';
270
+    }
271
+
272
+    /**
273
+     * Introduction step.
274
+     *
275
+     * @since 2.0.0
276
+     */
277
+    public function setup_introduction() {
278
+        $next_url = $this->get_next_step_link();
279
+        include plugin_dir_path( __FILE__ ) . 'views/wizard-introduction.php';
280
+    }
281
+
282
+    /**
283
+     * Get the URL for the next step's screen.
284
+     *
285
+     * @param string step   slug (default: current step)
286
+     *
287
+     * @return string       URL for next step if a next step exists.
288
+     *                      Admin URL if it's the last step.
289
+     *                      Empty string on failure.
290
+     * @since 3.0.0
291
+     */
292
+    public function get_next_step_link( $step = '' ) {
293
+        if ( ! $step ) {
294
+            $step = $this->step;
295
+        }
296
+
297
+        $keys = array_keys( $this->steps );
298
+        if ( end( $keys ) === $step ) {
299
+            return admin_url();
300
+        }
301
+
302
+        $step_index = array_search( $step, $keys );
303
+        if ( false === $step_index ) {
304
+            return '';
305
+        }
306
+
307
+        return remove_query_arg( 'settings-updated', add_query_arg( 'step', $keys[ $step_index + 1 ] ) );
308
+    }
309
+
310
+    /**
311
+     * Setup maps api.
312
+     *
313
+     * @since 2.0.0
314
+     */
315
+    public function setup_business() {
316
+        $next_url = $this->get_next_step_link();
317
+        $wizard   = $this;
318
+        $page     = 'wpinv_settings_general_main';
319
+        $section  = 'wpinv_settings_general_main';
320
+        include plugin_dir_path( __FILE__ ) . 'views/wizard-settings.php';
321
+    }
322
+
323
+    /**
324
+     * Default Location settings.
325
+     *
326
+     * @since 2.0.0
327
+     */
328
+    public function setup_currency() {
329
+        $next_url = $this->get_next_step_link();
330
+        $wizard   = $this;
331
+        $page     = 'wpinv_settings_general_currency_section';
332
+        $section  = 'wpinv_settings_general_currency_section';
333
+        include plugin_dir_path( __FILE__ ) . 'views/wizard-settings.php';
334
+    }
335
+
336
+    /**
337
+     * Installation of recommended plugins.
338
+     *
339
+     * @since 1.0.0
340
+     */
341
+    public function setup_recommend() {
342
+        $next_url            = $this->get_next_step_link();
343
+        $recommended_plugins = self::get_recommend_wp_plugins();
344
+        include plugin_dir_path( __FILE__ ) . 'views/wizard-plugins.php';
345
+    }
346
+
347
+    /**
348
+     * A list of recommended wp.org plugins.
349
+     * @return array
350
+     */
351
+    public static function get_recommend_wp_plugins() {
352
+        return array(
353
+            'ayecode-connect'  => array(
354
+                'file' => 'ayecode-connect/ayecode-connect.php',
355
+                'url'  => 'https://wordpress.org/plugins/ayecode-connect/',
356
+                'slug' => 'ayecode-connect',
357
+                'name' => 'AyeCode Connect',
358
+                'desc' => __( 'Documentation and Support from within your WordPress admin.', 'invoicing' ),
359
+            ),
360
+            'invoicing-quotes' => array(
361
+                'file' => 'invoicing-quotes/wpinv-quote.php',
362
+                'url'  => 'https://wordpress.org/plugins/invoicing-quotes/',
363
+                'slug' => 'invoicing-quotes',
364
+                'name' => 'Customer Quotes',
365
+                'desc' => __( 'Create & Send Quotes to Customers and have them accept and pay.', 'invoicing' ),
366
+            ),
367
+            'userswp'          => array(
368
+                'file' => 'userswp/userswp.php',
369
+                'url'  => 'https://wordpress.org/plugins/userswp/',
370
+                'slug' => 'userswp',
371
+                'name' => 'UsersWP',
372
+                'desc' => __( 'Frontend user login and registration as well as slick profile pages.', 'invoicing' ),
373
+            ),
374
+        );
375
+    }
376
+
377
+    /**
378
+     * Dummy Data setup.
379
+     *
380
+     * @since 2.4.0
381
+     */
382
+    public function setup_payments() {
383
+        $next_url = $this->get_next_step_link();
384
+        include plugin_dir_path( __FILE__ ) . 'views/wizard-gateways.php';
385
+    }
386
+
387
+    /**
388
+     * Dummy data save.
389
+     *
390
+     * This is done via ajax so we just pass onto the next step.
391
+     *
392
+     * @since 2.0.0
393
+     */
394
+    public function setup_payments_save() {
395
+        check_admin_referer( 'getpaid-setup-wizard', 'getpaid-setup-wizard' );
396
+        wpinv_update_option( 'manual_active', ! empty( $_POST['enable-manual-gateway'] ) );
397
+
398
+        if ( ! empty( $_POST['paypal-email'] ) ) {
399
+            wpinv_update_option( 'paypal_email', sanitize_email( $_POST['paypal-email'] ) );
400
+            wpinv_update_option( 'paypal_active', 1 );
401
+            wpinv_update_option( 'paypal_sandbox', 0 );
402
+        }
403
+
404
+        wp_redirect( esc_url_raw( $this->get_next_step_link() ) );
405
+        exit;
406
+    }
407
+
408
+    /**
409
+     * Final step.
410
+     *
411
+     * @since 2.0.0
412
+     */
413
+    public function setup_ready() {
414
+        include plugin_dir_path( __FILE__ ) . 'views/wizard-thank-you.php';
415
+    }
416 416
 
417 417
 }
418 418
 
Please login to merge, or discard this patch.
vendor/ayecode/wp-super-duper/sd-functions.php 1 patch
Indentation   +2869 added lines, -2869 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,43 +1165,43 @@  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 list-group-flush'                                           => 'list-group list-group-flush',
1185
-		'list-group list-group-numbered'                                        => 'list-group list-group-numbered',
1186
-		'list-group list-group-flush list-group-numbered'                       => 'list-group list-group-flush list-group-numbered',
1187
-		'list-group list-group-horizontal'                                      => 'list-group list-group-horizontal',
1188
-		'list-group list-group-horizontal list-group-numbered'                  => 'list-group list-group-horizontal list-group-numbered',
1189
-		'list-group-item'                                                       => 'list-group-item',
1190
-		''                                                                      => __( 'no container class', 'ayecode-connect' ),
1191
-	);
1192
-
1193
-	$defaults = array(
1194
-		'type'     => 'select',
1195
-		'title'    => __( 'Type', 'ayecode-connect' ),
1196
-		'options'  => $options,
1197
-		'default'  => '',
1198
-		'desc_tip' => true,
1199
-		'group'    => __( 'Container', 'ayecode-connect' ),
1200
-	);
1201
-
1202
-	$input = wp_parse_args( $overwrite, $defaults );
1203
-
1204
-	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 list-group-flush'                                           => 'list-group list-group-flush',
1185
+        'list-group list-group-numbered'                                        => 'list-group list-group-numbered',
1186
+        'list-group list-group-flush list-group-numbered'                       => 'list-group list-group-flush list-group-numbered',
1187
+        'list-group list-group-horizontal'                                      => 'list-group list-group-horizontal',
1188
+        'list-group list-group-horizontal list-group-numbered'                  => 'list-group list-group-horizontal list-group-numbered',
1189
+        'list-group-item'                                                       => 'list-group-item',
1190
+        ''                                                                      => __( 'no container class', 'ayecode-connect' ),
1191
+    );
1192
+
1193
+    $defaults = array(
1194
+        'type'     => 'select',
1195
+        'title'    => __( 'Type', 'ayecode-connect' ),
1196
+        'options'  => $options,
1197
+        'default'  => '',
1198
+        'desc_tip' => true,
1199
+        'group'    => __( 'Container', 'ayecode-connect' ),
1200
+    );
1201
+
1202
+    $input = wp_parse_args( $overwrite, $defaults );
1203
+
1204
+    return $input;
1205 1205
 }
1206 1206
 
1207 1207
 /**
@@ -1214,30 +1214,30 @@  discard block
 block discarded – undo
1214 1214
  */
1215 1215
 function sd_get_position_class_input( $type = 'position', $overwrite = array() ) {
1216 1216
 
1217
-	$options = array(
1218
-		''                  => __( 'Default', 'ayecode-connect' ),
1219
-		'position-static'   => 'static',
1220
-		'position-relative' => 'relative',
1221
-		'position-absolute' => 'absolute',
1222
-		'position-fixed'    => 'fixed',
1223
-		'position-sticky'   => 'sticky',
1224
-		'fixed-top'         => 'fixed-top',
1225
-		'fixed-bottom'      => 'fixed-bottom',
1226
-		'sticky-top'        => 'sticky-top',
1227
-	);
1217
+    $options = array(
1218
+        ''                  => __( 'Default', 'ayecode-connect' ),
1219
+        'position-static'   => 'static',
1220
+        'position-relative' => 'relative',
1221
+        'position-absolute' => 'absolute',
1222
+        'position-fixed'    => 'fixed',
1223
+        'position-sticky'   => 'sticky',
1224
+        'fixed-top'         => 'fixed-top',
1225
+        'fixed-bottom'      => 'fixed-bottom',
1226
+        'sticky-top'        => 'sticky-top',
1227
+    );
1228 1228
 
1229
-	$defaults = array(
1230
-		'type'     => 'select',
1231
-		'title'    => __( 'Position', 'ayecode-connect' ),
1232
-		'options'  => $options,
1233
-		'default'  => '',
1234
-		'desc_tip' => true,
1235
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1236
-	);
1229
+    $defaults = array(
1230
+        'type'     => 'select',
1231
+        'title'    => __( 'Position', 'ayecode-connect' ),
1232
+        'options'  => $options,
1233
+        'default'  => '',
1234
+        'desc_tip' => true,
1235
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1236
+    );
1237 1237
 
1238
-	$input = wp_parse_args( $overwrite, $defaults );
1238
+    $input = wp_parse_args( $overwrite, $defaults );
1239 1239
 
1240
-	return $input;
1240
+    return $input;
1241 1241
 }
1242 1242
 
1243 1243
 /**
@@ -1248,32 +1248,32 @@  discard block
 block discarded – undo
1248 1248
  */
1249 1249
 function sd_get_absolute_position_input( $type = 'absolute_position', $overwrite = array() ) {
1250 1250
 
1251
-	$options = array(
1252
-		''              => __( 'Default', 'ayecode-connect' ),
1253
-		'top-left'      => 'top-left',
1254
-		'top-center'    => 'top-center',
1255
-		'top-right'     => 'top-right',
1256
-		'center-left'   => 'middle-left',
1257
-		'center'        => 'center',
1258
-		'center-right'  => 'middle-right',
1259
-		'bottom-left'   => 'bottom-left',
1260
-		'bottom-center' => 'bottom-center',
1261
-		'bottom-right'  => 'bottom-right',
1262
-	);
1251
+    $options = array(
1252
+        ''              => __( 'Default', 'ayecode-connect' ),
1253
+        'top-left'      => 'top-left',
1254
+        'top-center'    => 'top-center',
1255
+        'top-right'     => 'top-right',
1256
+        'center-left'   => 'middle-left',
1257
+        'center'        => 'center',
1258
+        'center-right'  => 'middle-right',
1259
+        'bottom-left'   => 'bottom-left',
1260
+        'bottom-center' => 'bottom-center',
1261
+        'bottom-right'  => 'bottom-right',
1262
+    );
1263 1263
 
1264
-	$defaults = array(
1265
-		'type'            => 'select',
1266
-		'title'           => __( 'Absolute Position', 'ayecode-connect' ),
1267
-		'options'         => $options,
1268
-		'default'         => '',
1269
-		'desc_tip'        => true,
1270
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1271
-		'element_require' => '[%position%]=="position-absolute"',
1272
-	);
1264
+    $defaults = array(
1265
+        'type'            => 'select',
1266
+        'title'           => __( 'Absolute Position', 'ayecode-connect' ),
1267
+        'options'         => $options,
1268
+        'default'         => '',
1269
+        'desc_tip'        => true,
1270
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1271
+        'element_require' => '[%position%]=="position-absolute"',
1272
+    );
1273 1273
 
1274
-	$input = wp_parse_args( $overwrite, $defaults );
1274
+    $input = wp_parse_args( $overwrite, $defaults );
1275 1275
 
1276
-	return $input;
1276
+    return $input;
1277 1277
 }
1278 1278
 
1279 1279
 /**
@@ -1286,38 +1286,38 @@  discard block
 block discarded – undo
1286 1286
  */
1287 1287
 function sd_get_sticky_offset_input( $type = 'top', $overwrite = array() ) {
1288 1288
 
1289
-	$defaults = array(
1290
-		'type'            => 'number',
1291
-		'title'           => __( 'Sticky offset', 'ayecode-connect' ),
1292
-		//'desc' =>  __( 'Sticky offset', 'ayecode-connect' ),
1293
-		'default'         => '',
1294
-		'desc_tip'        => true,
1295
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1296
-		'element_require' => '[%position%]=="sticky" || [%position%]=="sticky-top"',
1297
-	);
1298
-
1299
-	// title
1300
-	if ( $type == 'top' ) {
1301
-		$defaults['title'] = __( 'Top offset', 'ayecode-connect' );
1302
-		$defaults['icon']  = 'box-top';
1303
-		$defaults['row']   = array(
1304
-			'title' => __( 'Sticky offset', 'ayecode-connect' ),
1305
-			'key'   => 'sticky-offset',
1306
-			'open'  => true,
1307
-			'class' => 'text-center',
1308
-		);
1309
-	} elseif ( $type == 'bottom' ) {
1310
-		$defaults['title'] = __( 'Bottom offset', 'ayecode-connect' );
1311
-		$defaults['icon']  = 'box-bottom';
1312
-		$defaults['row']   = array(
1313
-			'key'   => 'sticky-offset',
1314
-			'close' => true,
1315
-		);
1316
-	}
1317
-
1318
-	$input = wp_parse_args( $overwrite, $defaults );
1319
-
1320
-	return $input;
1289
+    $defaults = array(
1290
+        'type'            => 'number',
1291
+        'title'           => __( 'Sticky offset', 'ayecode-connect' ),
1292
+        //'desc' =>  __( 'Sticky offset', 'ayecode-connect' ),
1293
+        'default'         => '',
1294
+        'desc_tip'        => true,
1295
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1296
+        'element_require' => '[%position%]=="sticky" || [%position%]=="sticky-top"',
1297
+    );
1298
+
1299
+    // title
1300
+    if ( $type == 'top' ) {
1301
+        $defaults['title'] = __( 'Top offset', 'ayecode-connect' );
1302
+        $defaults['icon']  = 'box-top';
1303
+        $defaults['row']   = array(
1304
+            'title' => __( 'Sticky offset', 'ayecode-connect' ),
1305
+            'key'   => 'sticky-offset',
1306
+            'open'  => true,
1307
+            'class' => 'text-center',
1308
+        );
1309
+    } elseif ( $type == 'bottom' ) {
1310
+        $defaults['title'] = __( 'Bottom offset', 'ayecode-connect' );
1311
+        $defaults['icon']  = 'box-bottom';
1312
+        $defaults['row']   = array(
1313
+            'key'   => 'sticky-offset',
1314
+            'close' => true,
1315
+        );
1316
+    }
1317
+
1318
+    $input = wp_parse_args( $overwrite, $defaults );
1319
+
1320
+    return $input;
1321 1321
 }
1322 1322
 
1323 1323
 /**
@@ -1329,61 +1329,61 @@  discard block
 block discarded – undo
1329 1329
  * @return array
1330 1330
  */
1331 1331
 function sd_get_font_size_input( $type = 'font_size', $overwrite = array(), $has_custom = false ) {
1332
-	global $aui_bs5;
1333
-
1334
-	$options[] = __( 'Inherit from parent', 'ayecode-connect' );
1335
-	if ( $aui_bs5 ) {
1336
-		// responsive font sizes
1337
-		$options['fs-base'] = 'fs-base (body default)';
1338
-		$options['fs-6']    = 'fs-6';
1339
-		$options['fs-5']    = 'fs-5';
1340
-		$options['fs-4']    = 'fs-4';
1341
-		$options['fs-3']    = 'fs-3';
1342
-		$options['fs-2']    = 'fs-2';
1343
-		$options['fs-1']    = 'fs-1';
1344
-
1345
-		// custom
1346
-		$options['fs-lg']  = 'fs-lg';
1347
-		$options['fs-sm']  = 'fs-sm';
1348
-		$options['fs-xs']  = 'fs-xs';
1349
-		$options['fs-xxs'] = 'fs-xxs';
1350
-
1351
-	}
1352
-
1353
-	$options = $options + array(
1354
-			'h6'        => 'h6',
1355
-			'h5'        => 'h5',
1356
-			'h4'        => 'h4',
1357
-			'h3'        => 'h3',
1358
-			'h2'        => 'h2',
1359
-			'h1'        => 'h1',
1360
-			'display-1' => 'display-1',
1361
-			'display-2' => 'display-2',
1362
-			'display-3' => 'display-3',
1363
-			'display-4' => 'display-4',
1364
-		);
1365
-
1366
-	if ( $aui_bs5 ) {
1367
-		$options['display-5'] = 'display-5';
1368
-		$options['display-6'] = 'display-6';
1369
-	}
1370
-
1371
-	if ( $has_custom ) {
1372
-		$options['custom'] = __( 'Custom size', 'ayecode-connect' );
1373
-	}
1374
-
1375
-	$defaults = array(
1376
-		'type'     => 'select',
1377
-		'title'    => __( 'Font size', 'ayecode-connect' ),
1378
-		'options'  => $options,
1379
-		'default'  => '',
1380
-		'desc_tip' => true,
1381
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1382
-	);
1383
-
1384
-	$input = wp_parse_args( $overwrite, $defaults );
1385
-
1386
-	return $input;
1332
+    global $aui_bs5;
1333
+
1334
+    $options[] = __( 'Inherit from parent', 'ayecode-connect' );
1335
+    if ( $aui_bs5 ) {
1336
+        // responsive font sizes
1337
+        $options['fs-base'] = 'fs-base (body default)';
1338
+        $options['fs-6']    = 'fs-6';
1339
+        $options['fs-5']    = 'fs-5';
1340
+        $options['fs-4']    = 'fs-4';
1341
+        $options['fs-3']    = 'fs-3';
1342
+        $options['fs-2']    = 'fs-2';
1343
+        $options['fs-1']    = 'fs-1';
1344
+
1345
+        // custom
1346
+        $options['fs-lg']  = 'fs-lg';
1347
+        $options['fs-sm']  = 'fs-sm';
1348
+        $options['fs-xs']  = 'fs-xs';
1349
+        $options['fs-xxs'] = 'fs-xxs';
1350
+
1351
+    }
1352
+
1353
+    $options = $options + array(
1354
+            'h6'        => 'h6',
1355
+            'h5'        => 'h5',
1356
+            'h4'        => 'h4',
1357
+            'h3'        => 'h3',
1358
+            'h2'        => 'h2',
1359
+            'h1'        => 'h1',
1360
+            'display-1' => 'display-1',
1361
+            'display-2' => 'display-2',
1362
+            'display-3' => 'display-3',
1363
+            'display-4' => 'display-4',
1364
+        );
1365
+
1366
+    if ( $aui_bs5 ) {
1367
+        $options['display-5'] = 'display-5';
1368
+        $options['display-6'] = 'display-6';
1369
+    }
1370
+
1371
+    if ( $has_custom ) {
1372
+        $options['custom'] = __( 'Custom size', 'ayecode-connect' );
1373
+    }
1374
+
1375
+    $defaults = array(
1376
+        'type'     => 'select',
1377
+        'title'    => __( 'Font size', 'ayecode-connect' ),
1378
+        'options'  => $options,
1379
+        'default'  => '',
1380
+        'desc_tip' => true,
1381
+        'group'    => __( 'Typography', 'ayecode-connect' ),
1382
+    );
1383
+
1384
+    $input = wp_parse_args( $overwrite, $defaults );
1385
+
1386
+    return $input;
1387 1387
 }
1388 1388
 
1389 1389
 /**
@@ -1396,27 +1396,27 @@  discard block
 block discarded – undo
1396 1396
  */
1397 1397
 function sd_get_font_custom_size_input( $type = 'font_size_custom', $overwrite = array(), $parent_type = '' ) {
1398 1398
 
1399
-	$defaults = array(
1400
-		'type'              => 'number',
1401
-		'title'             => __( 'Font size (rem)', 'ayecode-connect' ),
1402
-		'default'           => '',
1403
-		'placeholder'       => '1.25',
1404
-		'custom_attributes' => array(
1405
-			'step' => '0.1',
1406
-			'min'  => '0',
1407
-			'max'  => '100',
1408
-		),
1409
-		'desc_tip'          => true,
1410
-		'group'             => __( 'Typography', 'ayecode-connect' ),
1411
-	);
1399
+    $defaults = array(
1400
+        'type'              => 'number',
1401
+        'title'             => __( 'Font size (rem)', 'ayecode-connect' ),
1402
+        'default'           => '',
1403
+        'placeholder'       => '1.25',
1404
+        'custom_attributes' => array(
1405
+            'step' => '0.1',
1406
+            'min'  => '0',
1407
+            'max'  => '100',
1408
+        ),
1409
+        'desc_tip'          => true,
1410
+        'group'             => __( 'Typography', 'ayecode-connect' ),
1411
+    );
1412 1412
 
1413
-	if ( $parent_type ) {
1414
-		$defaults['element_require'] = '[%' . $parent_type . '%]=="custom"';
1415
-	}
1413
+    if ( $parent_type ) {
1414
+        $defaults['element_require'] = '[%' . $parent_type . '%]=="custom"';
1415
+    }
1416 1416
 
1417
-	$input = wp_parse_args( $overwrite, $defaults );
1417
+    $input = wp_parse_args( $overwrite, $defaults );
1418 1418
 
1419
-	return $input;
1419
+    return $input;
1420 1420
 }
1421 1421
 
1422 1422
 /**
@@ -1429,23 +1429,23 @@  discard block
 block discarded – undo
1429 1429
  */
1430 1430
 function sd_get_font_line_height_input( $type = 'font_line_height', $overwrite = array() ) {
1431 1431
 
1432
-	$defaults = array(
1433
-		'type'              => 'number',
1434
-		'title'             => __( 'Font Line Height', 'ayecode-connect' ),
1435
-		'default'           => '',
1436
-		'placeholder'       => '1.75',
1437
-		'custom_attributes' => array(
1438
-			'step' => '0.1',
1439
-			'min'  => '0',
1440
-			'max'  => '100',
1441
-		),
1442
-		'desc_tip'          => true,
1443
-		'group'             => __( 'Typography', 'ayecode-connect' ),
1444
-	);
1432
+    $defaults = array(
1433
+        'type'              => 'number',
1434
+        'title'             => __( 'Font Line Height', 'ayecode-connect' ),
1435
+        'default'           => '',
1436
+        'placeholder'       => '1.75',
1437
+        'custom_attributes' => array(
1438
+            'step' => '0.1',
1439
+            'min'  => '0',
1440
+            'max'  => '100',
1441
+        ),
1442
+        'desc_tip'          => true,
1443
+        'group'             => __( 'Typography', 'ayecode-connect' ),
1444
+    );
1445 1445
 
1446
-	$input = wp_parse_args( $overwrite, $defaults );
1446
+    $input = wp_parse_args( $overwrite, $defaults );
1447 1447
 
1448
-	return $input;
1448
+    return $input;
1449 1449
 }
1450 1450
 
1451 1451
 /**
@@ -1458,18 +1458,18 @@  discard block
 block discarded – undo
1458 1458
  */
1459 1459
 function sd_get_font_size_input_group( $type = 'font_size', $overwrite = array(), $overwrite_custom = array() ) {
1460 1460
 
1461
-	$inputs = array();
1461
+    $inputs = array();
1462 1462
 
1463
-	if ( $overwrite !== false ) {
1464
-		$inputs[ $type ] = sd_get_font_size_input( $type, $overwrite, true );
1465
-	}
1463
+    if ( $overwrite !== false ) {
1464
+        $inputs[ $type ] = sd_get_font_size_input( $type, $overwrite, true );
1465
+    }
1466 1466
 
1467
-	if ( $overwrite_custom !== false ) {
1468
-		$custom            = $type . '_custom';
1469
-		$inputs[ $custom ] = sd_get_font_custom_size_input( $custom, $overwrite_custom, $type );
1470
-	}
1467
+    if ( $overwrite_custom !== false ) {
1468
+        $custom            = $type . '_custom';
1469
+        $inputs[ $custom ] = sd_get_font_custom_size_input( $custom, $overwrite_custom, $type );
1470
+    }
1471 1471
 
1472
-	return $inputs;
1472
+    return $inputs;
1473 1473
 }
1474 1474
 
1475 1475
 /**
@@ -1482,33 +1482,33 @@  discard block
 block discarded – undo
1482 1482
  */
1483 1483
 function sd_get_font_weight_input( $type = 'font_weight', $overwrite = array() ) {
1484 1484
 
1485
-	$options = array(
1486
-		''                                => __( 'Inherit', 'ayecode-connect' ),
1487
-		'font-weight-bold'                => 'bold',
1488
-		'font-weight-bolder'              => 'bolder',
1489
-		'font-weight-normal'              => 'normal',
1490
-		'font-weight-light'               => 'light',
1491
-		'font-weight-lighter'             => 'lighter',
1492
-		'font-italic'                     => 'italic',
1493
-		'font-weight-bold font-italic'    => 'bold italic',
1494
-		'font-weight-bolder font-italic'  => 'bolder italic',
1495
-		'font-weight-normal font-italic'  => 'normal italic',
1496
-		'font-weight-light font-italic'   => 'light italic',
1497
-		'font-weight-lighter font-italic' => 'lighter italic',
1498
-	);
1485
+    $options = array(
1486
+        ''                                => __( 'Inherit', 'ayecode-connect' ),
1487
+        'font-weight-bold'                => 'bold',
1488
+        'font-weight-bolder'              => 'bolder',
1489
+        'font-weight-normal'              => 'normal',
1490
+        'font-weight-light'               => 'light',
1491
+        'font-weight-lighter'             => 'lighter',
1492
+        'font-italic'                     => 'italic',
1493
+        'font-weight-bold font-italic'    => 'bold italic',
1494
+        'font-weight-bolder font-italic'  => 'bolder italic',
1495
+        'font-weight-normal font-italic'  => 'normal italic',
1496
+        'font-weight-light font-italic'   => 'light italic',
1497
+        'font-weight-lighter font-italic' => 'lighter italic',
1498
+    );
1499 1499
 
1500
-	$defaults = array(
1501
-		'type'     => 'select',
1502
-		'title'    => __( 'Appearance', 'ayecode-connect' ),
1503
-		'options'  => $options,
1504
-		'default'  => '',
1505
-		'desc_tip' => true,
1506
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1507
-	);
1500
+    $defaults = array(
1501
+        'type'     => 'select',
1502
+        'title'    => __( 'Appearance', 'ayecode-connect' ),
1503
+        'options'  => $options,
1504
+        'default'  => '',
1505
+        'desc_tip' => true,
1506
+        'group'    => __( 'Typography', 'ayecode-connect' ),
1507
+    );
1508 1508
 
1509
-	$input = wp_parse_args( $overwrite, $defaults );
1509
+    $input = wp_parse_args( $overwrite, $defaults );
1510 1510
 
1511
-	return $input;
1511
+    return $input;
1512 1512
 }
1513 1513
 
1514 1514
 /**
@@ -1521,25 +1521,25 @@  discard block
 block discarded – undo
1521 1521
  */
1522 1522
 function sd_get_font_case_input( $type = 'font_weight', $overwrite = array() ) {
1523 1523
 
1524
-	$options = array(
1525
-		''                => __( 'Default', 'ayecode-connect' ),
1526
-		'text-lowercase'  => __( 'lowercase', 'ayecode-connect' ),
1527
-		'text-uppercase'  => __( 'UPPERCASE', 'ayecode-connect' ),
1528
-		'text-capitalize' => __( 'Capitalize', 'ayecode-connect' ),
1529
-	);
1524
+    $options = array(
1525
+        ''                => __( 'Default', 'ayecode-connect' ),
1526
+        'text-lowercase'  => __( 'lowercase', 'ayecode-connect' ),
1527
+        'text-uppercase'  => __( 'UPPERCASE', 'ayecode-connect' ),
1528
+        'text-capitalize' => __( 'Capitalize', 'ayecode-connect' ),
1529
+    );
1530 1530
 
1531
-	$defaults = array(
1532
-		'type'     => 'select',
1533
-		'title'    => __( 'Letter case', 'ayecode-connect' ),
1534
-		'options'  => $options,
1535
-		'default'  => '',
1536
-		'desc_tip' => true,
1537
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1538
-	);
1531
+    $defaults = array(
1532
+        'type'     => 'select',
1533
+        'title'    => __( 'Letter case', 'ayecode-connect' ),
1534
+        'options'  => $options,
1535
+        'default'  => '',
1536
+        'desc_tip' => true,
1537
+        'group'    => __( 'Typography', 'ayecode-connect' ),
1538
+    );
1539 1539
 
1540
-	$input = wp_parse_args( $overwrite, $defaults );
1540
+    $input = wp_parse_args( $overwrite, $defaults );
1541 1541
 
1542
-	return $input;
1542
+    return $input;
1543 1543
 }
1544 1544
 
1545 1545
 /**
@@ -1553,23 +1553,23 @@  discard block
 block discarded – undo
1553 1553
  */
1554 1554
 function sd_get_font_italic_input( $type = 'font_italic', $overwrite = array() ) {
1555 1555
 
1556
-	$options = array(
1557
-		''            => __( 'No', 'ayecode-connect' ),
1558
-		'font-italic' => __( 'Yes', 'ayecode-connect' ),
1559
-	);
1556
+    $options = array(
1557
+        ''            => __( 'No', 'ayecode-connect' ),
1558
+        'font-italic' => __( 'Yes', 'ayecode-connect' ),
1559
+    );
1560 1560
 
1561
-	$defaults = array(
1562
-		'type'     => 'select',
1563
-		'title'    => __( 'Font italic', 'ayecode-connect' ),
1564
-		'options'  => $options,
1565
-		'default'  => '',
1566
-		'desc_tip' => true,
1567
-		'group'    => __( 'Typography', 'ayecode-connect' ),
1568
-	);
1561
+    $defaults = array(
1562
+        'type'     => 'select',
1563
+        'title'    => __( 'Font italic', 'ayecode-connect' ),
1564
+        'options'  => $options,
1565
+        'default'  => '',
1566
+        'desc_tip' => true,
1567
+        'group'    => __( 'Typography', 'ayecode-connect' ),
1568
+    );
1569 1569
 
1570
-	$input = wp_parse_args( $overwrite, $defaults );
1570
+    $input = wp_parse_args( $overwrite, $defaults );
1571 1571
 
1572
-	return $input;
1572
+    return $input;
1573 1573
 }
1574 1574
 
1575 1575
 /**
@@ -1582,18 +1582,18 @@  discard block
 block discarded – undo
1582 1582
  */
1583 1583
 function sd_get_anchor_input( $type = 'anchor', $overwrite = array() ) {
1584 1584
 
1585
-	$defaults = array(
1586
-		'type'     => 'text',
1587
-		'title'    => __( 'HTML anchor', 'ayecode-connect' ),
1588
-		'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' ),
1589
-		'default'  => '',
1590
-		'desc_tip' => true,
1591
-		'group'    => __( 'Advanced', 'ayecode-connect' ),
1592
-	);
1585
+    $defaults = array(
1586
+        'type'     => 'text',
1587
+        'title'    => __( 'HTML anchor', 'ayecode-connect' ),
1588
+        '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' ),
1589
+        'default'  => '',
1590
+        'desc_tip' => true,
1591
+        'group'    => __( 'Advanced', 'ayecode-connect' ),
1592
+    );
1593 1593
 
1594
-	$input = wp_parse_args( $overwrite, $defaults );
1594
+    $input = wp_parse_args( $overwrite, $defaults );
1595 1595
 
1596
-	return $input;
1596
+    return $input;
1597 1597
 }
1598 1598
 
1599 1599
 /**
@@ -1606,18 +1606,18 @@  discard block
 block discarded – undo
1606 1606
  */
1607 1607
 function sd_get_class_input( $type = 'css_class', $overwrite = array() ) {
1608 1608
 
1609
-	$defaults = array(
1610
-		'type'     => 'text',
1611
-		'title'    => __( 'Additional CSS class(es)', 'ayecode-connect' ),
1612
-		'desc'     => __( 'Separate multiple classes with spaces.', 'ayecode-connect' ),
1613
-		'default'  => '',
1614
-		'desc_tip' => true,
1615
-		'group'    => __( 'Advanced', 'ayecode-connect' ),
1616
-	);
1609
+    $defaults = array(
1610
+        'type'     => 'text',
1611
+        'title'    => __( 'Additional CSS class(es)', 'ayecode-connect' ),
1612
+        'desc'     => __( 'Separate multiple classes with spaces.', 'ayecode-connect' ),
1613
+        'default'  => '',
1614
+        'desc_tip' => true,
1615
+        'group'    => __( 'Advanced', 'ayecode-connect' ),
1616
+    );
1617 1617
 
1618
-	$input = wp_parse_args( $overwrite, $defaults );
1618
+    $input = wp_parse_args( $overwrite, $defaults );
1619 1619
 
1620
-	return $input;
1620
+    return $input;
1621 1621
 }
1622 1622
 
1623 1623
 /**
@@ -1630,18 +1630,18 @@  discard block
 block discarded – undo
1630 1630
  */
1631 1631
 function sd_get_custom_name_input( $type = 'metadata_name', $overwrite = array() ) {
1632 1632
 
1633
-	$defaults = array(
1634
-		'type'     => 'text',
1635
-		'title'    => __( 'Block Name', 'ayecode-connect' ),
1636
-		'desc'     => __( 'Set a custom name for this block', 'ayecode-connect' ),
1637
-		'default'  => '',
1638
-		'desc_tip' => true,
1639
-		'group'    => __( 'Advanced', 'ayecode-connect' ),
1640
-	);
1633
+    $defaults = array(
1634
+        'type'     => 'text',
1635
+        'title'    => __( 'Block Name', 'ayecode-connect' ),
1636
+        'desc'     => __( 'Set a custom name for this block', 'ayecode-connect' ),
1637
+        'default'  => '',
1638
+        'desc_tip' => true,
1639
+        'group'    => __( 'Advanced', 'ayecode-connect' ),
1640
+    );
1641 1641
 
1642
-	$input = wp_parse_args( $overwrite, $defaults );
1642
+    $input = wp_parse_args( $overwrite, $defaults );
1643 1643
 
1644
-	return $input;
1644
+    return $input;
1645 1645
 }
1646 1646
 
1647 1647
 /**
@@ -1654,341 +1654,341 @@  discard block
 block discarded – undo
1654 1654
  */
1655 1655
 function sd_get_hover_animations_input( $type = 'hover_animations', $overwrite = array() ) {
1656 1656
 
1657
-	$options = array(
1658
-		''                 => __( 'none', 'ayecode-connect' ),
1659
-		'hover-zoom'       => __( 'Zoom', 'ayecode-connect' ),
1660
-		'hover-shadow'     => __( 'Shadow', 'ayecode-connect' ),
1661
-		'hover-move-up'    => __( 'Move up', 'ayecode-connect' ),
1662
-		'hover-move-down'  => __( 'Move down', 'ayecode-connect' ),
1663
-		'hover-move-left'  => __( 'Move left', 'ayecode-connect' ),
1664
-		'hover-move-right' => __( 'Move right', 'ayecode-connect' ),
1665
-	);
1657
+    $options = array(
1658
+        ''                 => __( 'none', 'ayecode-connect' ),
1659
+        'hover-zoom'       => __( 'Zoom', 'ayecode-connect' ),
1660
+        'hover-shadow'     => __( 'Shadow', 'ayecode-connect' ),
1661
+        'hover-move-up'    => __( 'Move up', 'ayecode-connect' ),
1662
+        'hover-move-down'  => __( 'Move down', 'ayecode-connect' ),
1663
+        'hover-move-left'  => __( 'Move left', 'ayecode-connect' ),
1664
+        'hover-move-right' => __( 'Move right', 'ayecode-connect' ),
1665
+    );
1666 1666
 
1667
-	$defaults = array(
1668
-		'type'     => 'select',
1669
-		'multiple' => true,
1670
-		'title'    => __( 'Hover Animations', 'ayecode-connect' ),
1671
-		'options'  => $options,
1672
-		'default'  => '',
1673
-		'desc_tip' => true,
1674
-		'group'    => __( 'Hover Animations', 'ayecode-connect' ),
1675
-	);
1667
+    $defaults = array(
1668
+        'type'     => 'select',
1669
+        'multiple' => true,
1670
+        'title'    => __( 'Hover Animations', 'ayecode-connect' ),
1671
+        'options'  => $options,
1672
+        'default'  => '',
1673
+        'desc_tip' => true,
1674
+        'group'    => __( 'Hover Animations', 'ayecode-connect' ),
1675
+    );
1676 1676
 
1677
-	$input = wp_parse_args( $overwrite, $defaults );
1677
+    $input = wp_parse_args( $overwrite, $defaults );
1678 1678
 
1679
-	return $input;
1679
+    return $input;
1680 1680
 }
1681 1681
 
1682 1682
 
1683 1683
 function sd_get_flex_align_items_input( $type = 'align-items', $overwrite = array() ) {
1684
-	$device_size = '';
1685
-	if ( ! empty( $overwrite['device_type'] ) ) {
1686
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1687
-			$device_size = '-md';
1688
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1689
-			$device_size = '-lg';
1690
-		}
1691
-	}
1692
-	$options = array(
1693
-		''                                         => __( 'Default', 'ayecode-connect' ),
1694
-		'align-items' . $device_size . '-start'    => 'align-items-start',
1695
-		'align-items' . $device_size . '-end'      => 'align-items-end',
1696
-		'align-items' . $device_size . '-center'   => 'align-items-center',
1697
-		'align-items' . $device_size . '-baseline' => 'align-items-baseline',
1698
-		'align-items' . $device_size . '-stretch'  => 'align-items-stretch',
1699
-	);
1700
-
1701
-	$defaults = array(
1702
-		'type'            => 'select',
1703
-		'title'           => __( 'Vertical Align Items', 'ayecode-connect' ),
1704
-		'options'         => $options,
1705
-		'default'         => '',
1706
-		'desc_tip'        => true,
1707
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1708
-		'element_require' => ' ( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1709
-
1710
-	);
1711
-
1712
-	$input = wp_parse_args( $overwrite, $defaults );
1713
-
1714
-	return $input;
1684
+    $device_size = '';
1685
+    if ( ! empty( $overwrite['device_type'] ) ) {
1686
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1687
+            $device_size = '-md';
1688
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1689
+            $device_size = '-lg';
1690
+        }
1691
+    }
1692
+    $options = array(
1693
+        ''                                         => __( 'Default', 'ayecode-connect' ),
1694
+        'align-items' . $device_size . '-start'    => 'align-items-start',
1695
+        'align-items' . $device_size . '-end'      => 'align-items-end',
1696
+        'align-items' . $device_size . '-center'   => 'align-items-center',
1697
+        'align-items' . $device_size . '-baseline' => 'align-items-baseline',
1698
+        'align-items' . $device_size . '-stretch'  => 'align-items-stretch',
1699
+    );
1700
+
1701
+    $defaults = array(
1702
+        'type'            => 'select',
1703
+        'title'           => __( 'Vertical Align Items', 'ayecode-connect' ),
1704
+        'options'         => $options,
1705
+        'default'         => '',
1706
+        'desc_tip'        => true,
1707
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1708
+        'element_require' => ' ( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1709
+
1710
+    );
1711
+
1712
+    $input = wp_parse_args( $overwrite, $defaults );
1713
+
1714
+    return $input;
1715 1715
 }
1716 1716
 
1717 1717
 function sd_get_flex_align_items_input_group( $type = 'flex_align_items', $overwrite = array() ) {
1718
-	$inputs = array();
1719
-	$sizes  = array(
1720
-		''    => 'Mobile',
1721
-		'_md' => 'Tablet',
1722
-		'_lg' => 'Desktop',
1723
-	);
1718
+    $inputs = array();
1719
+    $sizes  = array(
1720
+        ''    => 'Mobile',
1721
+        '_md' => 'Tablet',
1722
+        '_lg' => 'Desktop',
1723
+    );
1724 1724
 
1725
-	if ( $overwrite !== false ) {
1725
+    if ( $overwrite !== false ) {
1726 1726
 
1727
-		foreach ( $sizes as $ds => $dt ) {
1728
-			$overwrite['device_type'] = $dt;
1729
-			$inputs[ $type . $ds ]    = sd_get_flex_align_items_input( $type, $overwrite );
1730
-		}
1731
-	}
1727
+        foreach ( $sizes as $ds => $dt ) {
1728
+            $overwrite['device_type'] = $dt;
1729
+            $inputs[ $type . $ds ]    = sd_get_flex_align_items_input( $type, $overwrite );
1730
+        }
1731
+    }
1732 1732
 
1733
-	return $inputs;
1733
+    return $inputs;
1734 1734
 }
1735 1735
 
1736 1736
 function sd_get_flex_justify_content_input( $type = 'flex_justify_content', $overwrite = array() ) {
1737
-	$device_size = '';
1738
-	if ( ! empty( $overwrite['device_type'] ) ) {
1739
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1740
-			$device_size = '-md';
1741
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1742
-			$device_size = '-lg';
1743
-		}
1744
-	}
1745
-	$options = array(
1746
-		''                                            => __( 'Default', 'ayecode-connect' ),
1747
-		'justify-content' . $device_size . '-start'   => 'justify-content-start',
1748
-		'justify-content' . $device_size . '-end'     => 'justify-content-end',
1749
-		'justify-content' . $device_size . '-center'  => 'justify-content-center',
1750
-		'justify-content' . $device_size . '-between' => 'justify-content-between',
1751
-		'justify-content' . $device_size . '-stretch' => 'justify-content-around',
1752
-	);
1753
-
1754
-	$defaults = array(
1755
-		'type'            => 'select',
1756
-		'title'           => __( 'Justify content', 'ayecode-connect' ),
1757
-		'options'         => $options,
1758
-		'default'         => '',
1759
-		'desc_tip'        => true,
1760
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1761
-		'element_require' => '( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1762
-
1763
-	);
1764
-
1765
-	$input = wp_parse_args( $overwrite, $defaults );
1766
-
1767
-	return $input;
1737
+    $device_size = '';
1738
+    if ( ! empty( $overwrite['device_type'] ) ) {
1739
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1740
+            $device_size = '-md';
1741
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1742
+            $device_size = '-lg';
1743
+        }
1744
+    }
1745
+    $options = array(
1746
+        ''                                            => __( 'Default', 'ayecode-connect' ),
1747
+        'justify-content' . $device_size . '-start'   => 'justify-content-start',
1748
+        'justify-content' . $device_size . '-end'     => 'justify-content-end',
1749
+        'justify-content' . $device_size . '-center'  => 'justify-content-center',
1750
+        'justify-content' . $device_size . '-between' => 'justify-content-between',
1751
+        'justify-content' . $device_size . '-stretch' => 'justify-content-around',
1752
+    );
1753
+
1754
+    $defaults = array(
1755
+        'type'            => 'select',
1756
+        'title'           => __( 'Justify content', 'ayecode-connect' ),
1757
+        'options'         => $options,
1758
+        'default'         => '',
1759
+        'desc_tip'        => true,
1760
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1761
+        'element_require' => '( ( [%container%]=="row" ) || ( [%display%]=="d-flex" || [%display_md%]=="d-md-flex" || [%display_lg%]=="d-lg-flex" ) ) ',
1762
+
1763
+    );
1764
+
1765
+    $input = wp_parse_args( $overwrite, $defaults );
1766
+
1767
+    return $input;
1768 1768
 }
1769 1769
 
1770 1770
 function sd_get_flex_justify_content_input_group( $type = 'flex_justify_content', $overwrite = array() ) {
1771
-	$inputs = array();
1772
-	$sizes  = array(
1773
-		''    => 'Mobile',
1774
-		'_md' => 'Tablet',
1775
-		'_lg' => 'Desktop',
1776
-	);
1771
+    $inputs = array();
1772
+    $sizes  = array(
1773
+        ''    => 'Mobile',
1774
+        '_md' => 'Tablet',
1775
+        '_lg' => 'Desktop',
1776
+    );
1777 1777
 
1778
-	if ( $overwrite !== false ) {
1778
+    if ( $overwrite !== false ) {
1779 1779
 
1780
-		foreach ( $sizes as $ds => $dt ) {
1781
-			$overwrite['device_type'] = $dt;
1782
-			$inputs[ $type . $ds ]    = sd_get_flex_justify_content_input( $type, $overwrite );
1783
-		}
1784
-	}
1780
+        foreach ( $sizes as $ds => $dt ) {
1781
+            $overwrite['device_type'] = $dt;
1782
+            $inputs[ $type . $ds ]    = sd_get_flex_justify_content_input( $type, $overwrite );
1783
+        }
1784
+    }
1785 1785
 
1786
-	return $inputs;
1786
+    return $inputs;
1787 1787
 }
1788 1788
 
1789 1789
 
1790 1790
 function sd_get_flex_align_self_input( $type = 'flex_align_self', $overwrite = array() ) {
1791
-	$device_size = '';
1792
-	if ( ! empty( $overwrite['device_type'] ) ) {
1793
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1794
-			$device_size = '-md';
1795
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1796
-			$device_size = '-lg';
1797
-		}
1798
-	}
1799
-	$options = array(
1800
-		''                                         => __( 'Default', 'ayecode-connect' ),
1801
-		'align-items' . $device_size . '-start'    => 'align-items-start',
1802
-		'align-items' . $device_size . '-end'      => 'align-items-end',
1803
-		'align-items' . $device_size . '-center'   => 'align-items-center',
1804
-		'align-items' . $device_size . '-baseline' => 'align-items-baseline',
1805
-		'align-items' . $device_size . '-stretch'  => 'align-items-stretch',
1806
-	);
1807
-
1808
-	$defaults = array(
1809
-		'type'            => 'select',
1810
-		'title'           => __( 'Align Self', 'ayecode-connect' ),
1811
-		'options'         => $options,
1812
-		'default'         => '',
1813
-		'desc_tip'        => true,
1814
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1815
-		'element_require' => ' [%container%]=="col" ',
1816
-
1817
-	);
1818
-
1819
-	$input = wp_parse_args( $overwrite, $defaults );
1820
-
1821
-	return $input;
1791
+    $device_size = '';
1792
+    if ( ! empty( $overwrite['device_type'] ) ) {
1793
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1794
+            $device_size = '-md';
1795
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1796
+            $device_size = '-lg';
1797
+        }
1798
+    }
1799
+    $options = array(
1800
+        ''                                         => __( 'Default', 'ayecode-connect' ),
1801
+        'align-items' . $device_size . '-start'    => 'align-items-start',
1802
+        'align-items' . $device_size . '-end'      => 'align-items-end',
1803
+        'align-items' . $device_size . '-center'   => 'align-items-center',
1804
+        'align-items' . $device_size . '-baseline' => 'align-items-baseline',
1805
+        'align-items' . $device_size . '-stretch'  => 'align-items-stretch',
1806
+    );
1807
+
1808
+    $defaults = array(
1809
+        'type'            => 'select',
1810
+        'title'           => __( 'Align Self', 'ayecode-connect' ),
1811
+        'options'         => $options,
1812
+        'default'         => '',
1813
+        'desc_tip'        => true,
1814
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1815
+        'element_require' => ' [%container%]=="col" ',
1816
+
1817
+    );
1818
+
1819
+    $input = wp_parse_args( $overwrite, $defaults );
1820
+
1821
+    return $input;
1822 1822
 }
1823 1823
 
1824 1824
 function sd_get_flex_align_self_input_group( $type = 'flex_align_self', $overwrite = array() ) {
1825
-	$inputs = array();
1826
-	$sizes  = array(
1827
-		''    => 'Mobile',
1828
-		'_md' => 'Tablet',
1829
-		'_lg' => 'Desktop',
1830
-	);
1825
+    $inputs = array();
1826
+    $sizes  = array(
1827
+        ''    => 'Mobile',
1828
+        '_md' => 'Tablet',
1829
+        '_lg' => 'Desktop',
1830
+    );
1831 1831
 
1832
-	if ( $overwrite !== false ) {
1832
+    if ( $overwrite !== false ) {
1833 1833
 
1834
-		foreach ( $sizes as $ds => $dt ) {
1835
-			$overwrite['device_type'] = $dt;
1836
-			$inputs[ $type . $ds ]    = sd_get_flex_align_self_input( $type, $overwrite );
1837
-		}
1838
-	}
1834
+        foreach ( $sizes as $ds => $dt ) {
1835
+            $overwrite['device_type'] = $dt;
1836
+            $inputs[ $type . $ds ]    = sd_get_flex_align_self_input( $type, $overwrite );
1837
+        }
1838
+    }
1839 1839
 
1840
-	return $inputs;
1840
+    return $inputs;
1841 1841
 }
1842 1842
 
1843 1843
 function sd_get_flex_order_input( $type = 'flex_order', $overwrite = array() ) {
1844
-	$device_size = '';
1845
-	if ( ! empty( $overwrite['device_type'] ) ) {
1846
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1847
-			$device_size = '-md';
1848
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1849
-			$device_size = '-lg';
1850
-		}
1851
-	}
1852
-	$options = array(
1853
-		'' => __( 'Default', 'ayecode-connect' ),
1854
-	);
1855
-
1856
-	$i = 0;
1857
-	while ( $i <= 5 ) {
1858
-		$options[ 'order' . $device_size . '-' . $i ] = $i;
1859
-		$i++;
1860
-	}
1861
-
1862
-	$defaults = array(
1863
-		'type'            => 'select',
1864
-		'title'           => __( 'Flex Order', 'ayecode-connect' ),
1865
-		'options'         => $options,
1866
-		'default'         => '',
1867
-		'desc_tip'        => true,
1868
-		'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1869
-		'element_require' => ' [%container%]=="col" ',
1870
-
1871
-	);
1872
-
1873
-	$input = wp_parse_args( $overwrite, $defaults );
1874
-
1875
-	return $input;
1844
+    $device_size = '';
1845
+    if ( ! empty( $overwrite['device_type'] ) ) {
1846
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1847
+            $device_size = '-md';
1848
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1849
+            $device_size = '-lg';
1850
+        }
1851
+    }
1852
+    $options = array(
1853
+        '' => __( 'Default', 'ayecode-connect' ),
1854
+    );
1855
+
1856
+    $i = 0;
1857
+    while ( $i <= 5 ) {
1858
+        $options[ 'order' . $device_size . '-' . $i ] = $i;
1859
+        $i++;
1860
+    }
1861
+
1862
+    $defaults = array(
1863
+        'type'            => 'select',
1864
+        'title'           => __( 'Flex Order', 'ayecode-connect' ),
1865
+        'options'         => $options,
1866
+        'default'         => '',
1867
+        'desc_tip'        => true,
1868
+        'group'           => __( 'Wrapper Styles', 'ayecode-connect' ),
1869
+        'element_require' => ' [%container%]=="col" ',
1870
+
1871
+    );
1872
+
1873
+    $input = wp_parse_args( $overwrite, $defaults );
1874
+
1875
+    return $input;
1876 1876
 }
1877 1877
 
1878 1878
 function sd_get_flex_order_input_group( $type = 'flex_order', $overwrite = array() ) {
1879
-	$inputs = array();
1880
-	$sizes  = array(
1881
-		''    => 'Mobile',
1882
-		'_md' => 'Tablet',
1883
-		'_lg' => 'Desktop',
1884
-	);
1879
+    $inputs = array();
1880
+    $sizes  = array(
1881
+        ''    => 'Mobile',
1882
+        '_md' => 'Tablet',
1883
+        '_lg' => 'Desktop',
1884
+    );
1885 1885
 
1886
-	if ( $overwrite !== false ) {
1886
+    if ( $overwrite !== false ) {
1887 1887
 
1888
-		foreach ( $sizes as $ds => $dt ) {
1889
-			$overwrite['device_type'] = $dt;
1890
-			$inputs[ $type . $ds ]    = sd_get_flex_order_input( $type, $overwrite );
1891
-		}
1892
-	}
1888
+        foreach ( $sizes as $ds => $dt ) {
1889
+            $overwrite['device_type'] = $dt;
1890
+            $inputs[ $type . $ds ]    = sd_get_flex_order_input( $type, $overwrite );
1891
+        }
1892
+    }
1893 1893
 
1894
-	return $inputs;
1894
+    return $inputs;
1895 1895
 }
1896 1896
 
1897 1897
 function sd_get_flex_wrap_group( $type = 'flex_wrap', $overwrite = array() ) {
1898
-	$inputs = array();
1899
-	$sizes  = array(
1900
-		''    => 'Mobile',
1901
-		'_md' => 'Tablet',
1902
-		'_lg' => 'Desktop',
1903
-	);
1898
+    $inputs = array();
1899
+    $sizes  = array(
1900
+        ''    => 'Mobile',
1901
+        '_md' => 'Tablet',
1902
+        '_lg' => 'Desktop',
1903
+    );
1904 1904
 
1905
-	if ( $overwrite !== false ) {
1905
+    if ( $overwrite !== false ) {
1906 1906
 
1907
-		foreach ( $sizes as $ds => $dt ) {
1908
-			$overwrite['device_type'] = $dt;
1909
-			$inputs[ $type . $ds ]    = sd_get_flex_wrap_input( $type, $overwrite );
1910
-		}
1911
-	}
1907
+        foreach ( $sizes as $ds => $dt ) {
1908
+            $overwrite['device_type'] = $dt;
1909
+            $inputs[ $type . $ds ]    = sd_get_flex_wrap_input( $type, $overwrite );
1910
+        }
1911
+    }
1912 1912
 
1913
-	return $inputs;
1913
+    return $inputs;
1914 1914
 }
1915 1915
 
1916 1916
 function sd_get_flex_wrap_input( $type = 'flex_wrap', $overwrite = array() ) {
1917
-	$device_size = '';
1918
-	if ( ! empty( $overwrite['device_type'] ) ) {
1919
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1920
-			$device_size = '-md';
1921
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1922
-			$device_size = '-lg';
1923
-		}
1924
-	}
1925
-	$options = array(
1926
-		''                                      => __( 'Default', 'ayecode-connect' ),
1927
-		'flex' . $device_size . '-nowrap'       => 'nowrap',
1928
-		'flex' . $device_size . '-wrap'         => 'wrap',
1929
-		'flex' . $device_size . '-wrap-reverse' => 'wrap-reverse',
1930
-	);
1931
-
1932
-	$defaults = array(
1933
-		'type'     => 'select',
1934
-		'title'    => __( 'Flex wrap', 'ayecode-connect' ),
1935
-		'options'  => $options,
1936
-		'default'  => '',
1937
-		'desc_tip' => true,
1938
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1939
-	);
1940
-
1941
-	$input = wp_parse_args( $overwrite, $defaults );
1942
-
1943
-	return $input;
1917
+    $device_size = '';
1918
+    if ( ! empty( $overwrite['device_type'] ) ) {
1919
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1920
+            $device_size = '-md';
1921
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1922
+            $device_size = '-lg';
1923
+        }
1924
+    }
1925
+    $options = array(
1926
+        ''                                      => __( 'Default', 'ayecode-connect' ),
1927
+        'flex' . $device_size . '-nowrap'       => 'nowrap',
1928
+        'flex' . $device_size . '-wrap'         => 'wrap',
1929
+        'flex' . $device_size . '-wrap-reverse' => 'wrap-reverse',
1930
+    );
1931
+
1932
+    $defaults = array(
1933
+        'type'     => 'select',
1934
+        'title'    => __( 'Flex wrap', 'ayecode-connect' ),
1935
+        'options'  => $options,
1936
+        'default'  => '',
1937
+        'desc_tip' => true,
1938
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1939
+    );
1940
+
1941
+    $input = wp_parse_args( $overwrite, $defaults );
1942
+
1943
+    return $input;
1944 1944
 }
1945 1945
 
1946 1946
 function sd_get_float_group( $type = 'float', $overwrite = array() ) {
1947
-	$inputs = array();
1948
-	$sizes  = array(
1949
-		''    => 'Mobile',
1950
-		'_md' => 'Tablet',
1951
-		'_lg' => 'Desktop',
1952
-	);
1947
+    $inputs = array();
1948
+    $sizes  = array(
1949
+        ''    => 'Mobile',
1950
+        '_md' => 'Tablet',
1951
+        '_lg' => 'Desktop',
1952
+    );
1953 1953
 
1954
-	if ( $overwrite !== false ) {
1954
+    if ( $overwrite !== false ) {
1955 1955
 
1956
-		foreach ( $sizes as $ds => $dt ) {
1957
-			$overwrite['device_type'] = $dt;
1958
-			$inputs[ $type . $ds ]    = sd_get_float_input( $type, $overwrite );
1959
-		}
1960
-	}
1956
+        foreach ( $sizes as $ds => $dt ) {
1957
+            $overwrite['device_type'] = $dt;
1958
+            $inputs[ $type . $ds ]    = sd_get_float_input( $type, $overwrite );
1959
+        }
1960
+    }
1961 1961
 
1962
-	return $inputs;
1962
+    return $inputs;
1963 1963
 }
1964 1964
 function sd_get_float_input( $type = 'float', $overwrite = array() ) {
1965
-	$device_size = '';
1966
-	if ( ! empty( $overwrite['device_type'] ) ) {
1967
-		if ( $overwrite['device_type'] == 'Tablet' ) {
1968
-			$device_size = '-md';
1969
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
1970
-			$device_size = '-lg';
1971
-		}
1972
-	}
1973
-	$options = array(
1974
-		''                                      => __( 'Default', 'ayecode-connect' ),
1975
-		'float' . $device_size . '-start'       => 'left',
1976
-		'float' . $device_size . '-end'         => 'right',
1977
-		'float' . $device_size . '-none' => 'none',
1978
-	);
1979
-
1980
-	$defaults = array(
1981
-		'type'     => 'select',
1982
-		'title'    => __( 'Float', 'ayecode-connect' ),
1983
-		'options'  => $options,
1984
-		'default'  => '',
1985
-		'desc_tip' => true,
1986
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1987
-	);
1988
-
1989
-	$input = wp_parse_args( $overwrite, $defaults );
1990
-
1991
-	return $input;
1965
+    $device_size = '';
1966
+    if ( ! empty( $overwrite['device_type'] ) ) {
1967
+        if ( $overwrite['device_type'] == 'Tablet' ) {
1968
+            $device_size = '-md';
1969
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
1970
+            $device_size = '-lg';
1971
+        }
1972
+    }
1973
+    $options = array(
1974
+        ''                                      => __( 'Default', 'ayecode-connect' ),
1975
+        'float' . $device_size . '-start'       => 'left',
1976
+        'float' . $device_size . '-end'         => 'right',
1977
+        'float' . $device_size . '-none' => 'none',
1978
+    );
1979
+
1980
+    $defaults = array(
1981
+        'type'     => 'select',
1982
+        'title'    => __( 'Float', 'ayecode-connect' ),
1983
+        'options'  => $options,
1984
+        'default'  => '',
1985
+        'desc_tip' => true,
1986
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
1987
+    );
1988
+
1989
+    $input = wp_parse_args( $overwrite, $defaults );
1990
+
1991
+    return $input;
1992 1992
 }
1993 1993
 
1994 1994
 /**
@@ -1999,26 +1999,26 @@  discard block
 block discarded – undo
1999 1999
  */
2000 2000
 function sd_get_zindex_input( $type = 'zindex', $overwrite = array() ) {
2001 2001
 
2002
-	$options = array(
2003
-		''          => __( 'Default', 'ayecode-connect' ),
2004
-		'zindex-0'  => '0',
2005
-		'zindex-1'  => '1',
2006
-		'zindex-5'  => '5',
2007
-		'zindex-10' => '10',
2008
-	);
2002
+    $options = array(
2003
+        ''          => __( 'Default', 'ayecode-connect' ),
2004
+        'zindex-0'  => '0',
2005
+        'zindex-1'  => '1',
2006
+        'zindex-5'  => '5',
2007
+        'zindex-10' => '10',
2008
+    );
2009 2009
 
2010
-	$defaults = array(
2011
-		'type'     => 'select',
2012
-		'title'    => __( 'Z-index', 'ayecode-connect' ),
2013
-		'options'  => $options,
2014
-		'default'  => '',
2015
-		'desc_tip' => true,
2016
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2017
-	);
2010
+    $defaults = array(
2011
+        'type'     => 'select',
2012
+        'title'    => __( 'Z-index', 'ayecode-connect' ),
2013
+        'options'  => $options,
2014
+        'default'  => '',
2015
+        'desc_tip' => true,
2016
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2017
+    );
2018 2018
 
2019
-	$input = wp_parse_args( $overwrite, $defaults );
2019
+    $input = wp_parse_args( $overwrite, $defaults );
2020 2020
 
2021
-	return $input;
2021
+    return $input;
2022 2022
 }
2023 2023
 
2024 2024
 /**
@@ -2029,26 +2029,26 @@  discard block
 block discarded – undo
2029 2029
  */
2030 2030
 function sd_get_overflow_input( $type = 'overflow', $overwrite = array() ) {
2031 2031
 
2032
-	$options = array(
2033
-		''                 => __( 'Default', 'ayecode-connect' ),
2034
-		'overflow-auto'    => __( 'Auto', 'ayecode-connect' ),
2035
-		'overflow-hidden'  => __( 'Hidden', 'ayecode-connect' ),
2036
-		'overflow-visible' => __( 'Visible', 'ayecode-connect' ),
2037
-		'overflow-scroll'  => __( 'Scroll', 'ayecode-connect' ),
2038
-	);
2032
+    $options = array(
2033
+        ''                 => __( 'Default', 'ayecode-connect' ),
2034
+        'overflow-auto'    => __( 'Auto', 'ayecode-connect' ),
2035
+        'overflow-hidden'  => __( 'Hidden', 'ayecode-connect' ),
2036
+        'overflow-visible' => __( 'Visible', 'ayecode-connect' ),
2037
+        'overflow-scroll'  => __( 'Scroll', 'ayecode-connect' ),
2038
+    );
2039 2039
 
2040
-	$defaults = array(
2041
-		'type'     => 'select',
2042
-		'title'    => __( 'Overflow', 'ayecode-connect' ),
2043
-		'options'  => $options,
2044
-		'default'  => '',
2045
-		'desc_tip' => true,
2046
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2047
-	);
2040
+    $defaults = array(
2041
+        'type'     => 'select',
2042
+        'title'    => __( 'Overflow', 'ayecode-connect' ),
2043
+        'options'  => $options,
2044
+        'default'  => '',
2045
+        'desc_tip' => true,
2046
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2047
+    );
2048 2048
 
2049
-	$input = wp_parse_args( $overwrite, $defaults );
2049
+    $input = wp_parse_args( $overwrite, $defaults );
2050 2050
 
2051
-	return $input;
2051
+    return $input;
2052 2052
 }
2053 2053
 
2054 2054
 /**
@@ -2059,19 +2059,19 @@  discard block
 block discarded – undo
2059 2059
  */
2060 2060
 function sd_get_max_height_input( $type = 'max_height', $overwrite = array() ) {
2061 2061
 
2062
-	$defaults = array(
2063
-		'type'        => 'text',
2064
-		'title'       => __( 'Max height', 'ayecode-connect' ),
2065
-		'value'       => '',
2066
-		'default'     => '',
2067
-		'placeholder' => '',
2068
-		'desc_tip'    => true,
2069
-		'group'       => __( 'Wrapper Styles', 'ayecode-connect' ),
2070
-	);
2062
+    $defaults = array(
2063
+        'type'        => 'text',
2064
+        'title'       => __( 'Max height', 'ayecode-connect' ),
2065
+        'value'       => '',
2066
+        'default'     => '',
2067
+        'placeholder' => '',
2068
+        'desc_tip'    => true,
2069
+        'group'       => __( 'Wrapper Styles', 'ayecode-connect' ),
2070
+    );
2071 2071
 
2072
-	$input = wp_parse_args( $overwrite, $defaults );
2072
+    $input = wp_parse_args( $overwrite, $defaults );
2073 2073
 
2074
-	return $input;
2074
+    return $input;
2075 2075
 }
2076 2076
 
2077 2077
 /**
@@ -2082,23 +2082,23 @@  discard block
 block discarded – undo
2082 2082
  */
2083 2083
 function sd_get_scrollbars_input( $type = 'scrollbars', $overwrite = array() ) {
2084 2084
 
2085
-	$options = array(
2086
-		''               => __( 'Default', 'ayecode-connect' ),
2087
-		'scrollbars-ios' => __( 'IOS Style', 'ayecode-connect' ),
2088
-	);
2085
+    $options = array(
2086
+        ''               => __( 'Default', 'ayecode-connect' ),
2087
+        'scrollbars-ios' => __( 'IOS Style', 'ayecode-connect' ),
2088
+    );
2089 2089
 
2090
-	$defaults = array(
2091
-		'type'     => 'select',
2092
-		'title'    => __( 'Scrollbars', 'ayecode-connect' ),
2093
-		'options'  => $options,
2094
-		'default'  => '',
2095
-		'desc_tip' => true,
2096
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2097
-	);
2090
+    $defaults = array(
2091
+        'type'     => 'select',
2092
+        'title'    => __( 'Scrollbars', 'ayecode-connect' ),
2093
+        'options'  => $options,
2094
+        'default'  => '',
2095
+        'desc_tip' => true,
2096
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2097
+    );
2098 2098
 
2099
-	$input = wp_parse_args( $overwrite, $defaults );
2099
+    $input = wp_parse_args( $overwrite, $defaults );
2100 2100
 
2101
-	return $input;
2101
+    return $input;
2102 2102
 }
2103 2103
 
2104 2104
 /**
@@ -2109,17 +2109,17 @@  discard block
 block discarded – undo
2109 2109
  */
2110 2110
 function sd_get_new_window_input( $type = 'target', $overwrite = array() ) {
2111 2111
 
2112
-	$defaults = array(
2113
-		'type'     => 'checkbox',
2114
-		'title'    => __( 'Open in new window', 'ayecode-connect' ),
2115
-		'default'  => '',
2116
-		'desc_tip' => true,
2117
-		'group'    => __( 'Link', 'ayecode-connect' ),
2118
-	);
2112
+    $defaults = array(
2113
+        'type'     => 'checkbox',
2114
+        'title'    => __( 'Open in new window', 'ayecode-connect' ),
2115
+        'default'  => '',
2116
+        'desc_tip' => true,
2117
+        'group'    => __( 'Link', 'ayecode-connect' ),
2118
+    );
2119 2119
 
2120
-	$input = wp_parse_args( $overwrite, $defaults );
2120
+    $input = wp_parse_args( $overwrite, $defaults );
2121 2121
 
2122
-	return $input;
2122
+    return $input;
2123 2123
 }
2124 2124
 
2125 2125
 /**
@@ -2130,17 +2130,17 @@  discard block
 block discarded – undo
2130 2130
  */
2131 2131
 function sd_get_nofollow_input( $type = 'nofollow', $overwrite = array() ) {
2132 2132
 
2133
-	$defaults = array(
2134
-		'type'     => 'checkbox',
2135
-		'title'    => __( 'Add nofollow', 'ayecode-connect' ),
2136
-		'default'  => '',
2137
-		'desc_tip' => true,
2138
-		'group'    => __( 'Link', 'ayecode-connect' ),
2139
-	);
2133
+    $defaults = array(
2134
+        'type'     => 'checkbox',
2135
+        'title'    => __( 'Add nofollow', 'ayecode-connect' ),
2136
+        'default'  => '',
2137
+        'desc_tip' => true,
2138
+        'group'    => __( 'Link', 'ayecode-connect' ),
2139
+    );
2140 2140
 
2141
-	$input = wp_parse_args( $overwrite, $defaults );
2141
+    $input = wp_parse_args( $overwrite, $defaults );
2142 2142
 
2143
-	return $input;
2143
+    return $input;
2144 2144
 }
2145 2145
 
2146 2146
 /**
@@ -2153,35 +2153,35 @@  discard block
 block discarded – undo
2153 2153
  */
2154 2154
 function sd_get_width_input( $type = 'width', $overwrite = array() ) {
2155 2155
 
2156
-	$device_size = '';
2157
-	if ( ! empty( $overwrite['device_type'] ) ) {
2158
-		if ( $overwrite['device_type'] == 'Tablet' ) {
2159
-			$device_size = '-md';
2160
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
2161
-			$device_size = '-lg';
2162
-		}
2163
-	}
2164
-	$options = array(
2165
-		'' => __('Default', 'ayecode-connect'),
2166
-		'w' . $device_size . '-25' => '25%',
2167
-		'w' . $device_size . '-50' => '50%',
2168
-		'w' . $device_size . '-75' => '75%',
2169
-		'w' . $device_size . '-100' => '100%',
2170
-		'w' . $device_size . '-auto' => 'auto',
2171
-	);
2172
-
2173
-	$defaults = array(
2174
-		'type'     => 'select',
2175
-		'title'    => __( 'Width', 'ayecode-connect' ),
2176
-		'options'  => $options,
2177
-		'default'  => '',
2178
-		'desc_tip' => true,
2179
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2180
-	);
2181
-
2182
-	$input = wp_parse_args( $overwrite, $defaults );
2183
-
2184
-	return $input;
2156
+    $device_size = '';
2157
+    if ( ! empty( $overwrite['device_type'] ) ) {
2158
+        if ( $overwrite['device_type'] == 'Tablet' ) {
2159
+            $device_size = '-md';
2160
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
2161
+            $device_size = '-lg';
2162
+        }
2163
+    }
2164
+    $options = array(
2165
+        '' => __('Default', 'ayecode-connect'),
2166
+        'w' . $device_size . '-25' => '25%',
2167
+        'w' . $device_size . '-50' => '50%',
2168
+        'w' . $device_size . '-75' => '75%',
2169
+        'w' . $device_size . '-100' => '100%',
2170
+        'w' . $device_size . '-auto' => 'auto',
2171
+    );
2172
+
2173
+    $defaults = array(
2174
+        'type'     => 'select',
2175
+        'title'    => __( 'Width', 'ayecode-connect' ),
2176
+        'options'  => $options,
2177
+        'default'  => '',
2178
+        'desc_tip' => true,
2179
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2180
+    );
2181
+
2182
+    $input = wp_parse_args( $overwrite, $defaults );
2183
+
2184
+    return $input;
2185 2185
 }
2186 2186
 
2187 2187
 /**
@@ -2194,35 +2194,35 @@  discard block
 block discarded – undo
2194 2194
  */
2195 2195
 function sd_get_height_input( $type = 'height', $overwrite = array() ) {
2196 2196
 
2197
-	$device_size = '';
2198
-	if ( ! empty( $overwrite['device_type'] ) ) {
2199
-		if ( $overwrite['device_type'] == 'Tablet' ) {
2200
-			$device_size = '-md';
2201
-		} elseif ( $overwrite['device_type'] == 'Desktop' ) {
2202
-			$device_size = '-lg';
2203
-		}
2204
-	}
2205
-	$options = array(
2206
-		'' => __('Default', 'ayecode-connect'),
2207
-		'h' . $device_size . '-25' => '25%',
2208
-		'h' . $device_size . '-50' => '50%',
2209
-		'h' . $device_size . '-75' => '75%',
2210
-		'h' . $device_size . '-100' => '100%',
2211
-		'h' . $device_size . '-auto' => 'auto',
2212
-	);
2213
-
2214
-	$defaults = array(
2215
-		'type'     => 'select',
2216
-		'title'    => __( 'Height', 'ayecode-connect' ),
2217
-		'options'  => $options,
2218
-		'default'  => '',
2219
-		'desc_tip' => true,
2220
-		'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2221
-	);
2222
-
2223
-	$input = wp_parse_args( $overwrite, $defaults );
2224
-
2225
-	return $input;
2197
+    $device_size = '';
2198
+    if ( ! empty( $overwrite['device_type'] ) ) {
2199
+        if ( $overwrite['device_type'] == 'Tablet' ) {
2200
+            $device_size = '-md';
2201
+        } elseif ( $overwrite['device_type'] == 'Desktop' ) {
2202
+            $device_size = '-lg';
2203
+        }
2204
+    }
2205
+    $options = array(
2206
+        '' => __('Default', 'ayecode-connect'),
2207
+        'h' . $device_size . '-25' => '25%',
2208
+        'h' . $device_size . '-50' => '50%',
2209
+        'h' . $device_size . '-75' => '75%',
2210
+        'h' . $device_size . '-100' => '100%',
2211
+        'h' . $device_size . '-auto' => 'auto',
2212
+    );
2213
+
2214
+    $defaults = array(
2215
+        'type'     => 'select',
2216
+        'title'    => __( 'Height', 'ayecode-connect' ),
2217
+        'options'  => $options,
2218
+        'default'  => '',
2219
+        'desc_tip' => true,
2220
+        'group'    => __( 'Wrapper Styles', 'ayecode-connect' ),
2221
+    );
2222
+
2223
+    $input = wp_parse_args( $overwrite, $defaults );
2224
+
2225
+    return $input;
2226 2226
 }
2227 2227
 
2228 2228
 /**
@@ -2233,19 +2233,19 @@  discard block
 block discarded – undo
2233 2233
  */
2234 2234
 function sd_get_attributes_input( $type = 'attributes', $overwrite = array() ) {
2235 2235
 
2236
-	$defaults = array(
2237
-		'type'        => 'text',
2238
-		'title'       => __( 'Custom Attributes', 'ayecode-connect' ),
2239
-		'value'       => '',
2240
-		'default'     => '',
2241
-		'placeholder' => 'key|value,key2|value2',
2242
-		'desc_tip'    => true,
2243
-		'group'       => __( 'Link', 'ayecode-connect' ),
2244
-	);
2236
+    $defaults = array(
2237
+        'type'        => 'text',
2238
+        'title'       => __( 'Custom Attributes', 'ayecode-connect' ),
2239
+        'value'       => '',
2240
+        'default'     => '',
2241
+        'placeholder' => 'key|value,key2|value2',
2242
+        'desc_tip'    => true,
2243
+        'group'       => __( 'Link', 'ayecode-connect' ),
2244
+    );
2245 2245
 
2246
-	$input = wp_parse_args( $overwrite, $defaults );
2246
+    $input = wp_parse_args( $overwrite, $defaults );
2247 2247
 
2248
-	return $input;
2248
+    return $input;
2249 2249
 }
2250 2250
 
2251 2251
 /**
@@ -2254,32 +2254,32 @@  discard block
 block discarded – undo
2254 2254
  * @return string
2255 2255
  */
2256 2256
 function sd_build_attributes_string_escaped( $args ) {
2257
-	global $aui_bs5;
2257
+    global $aui_bs5;
2258 2258
 
2259
-	$attributes = array();
2260
-	$string_escaped = '';
2259
+    $attributes = array();
2260
+    $string_escaped = '';
2261 2261
 
2262
-	if ( ! empty( $args['custom'] ) ) {
2263
-		$attributes = sd_parse_custom_attributes($args['custom']);
2264
-	}
2262
+    if ( ! empty( $args['custom'] ) ) {
2263
+        $attributes = sd_parse_custom_attributes($args['custom']);
2264
+    }
2265 2265
 
2266
-	// new window
2267
-	if ( ! empty( $args['new_window'] ) ) {
2268
-		$attributes['target'] = '_blank';
2269
-	}
2266
+    // new window
2267
+    if ( ! empty( $args['new_window'] ) ) {
2268
+        $attributes['target'] = '_blank';
2269
+    }
2270 2270
 
2271
-	// nofollow
2272
-	if ( ! empty( $args['nofollow'] ) ) {
2273
-		$attributes['rel'] = isset($attributes['rel']) ? $attributes['rel'] . ' nofollow' : 'nofollow';
2274
-	}
2271
+    // nofollow
2272
+    if ( ! empty( $args['nofollow'] ) ) {
2273
+        $attributes['rel'] = isset($attributes['rel']) ? $attributes['rel'] . ' nofollow' : 'nofollow';
2274
+    }
2275 2275
 
2276
-	if(!empty($attributes )){
2277
-		foreach ( $attributes as $key => $val ) {
2278
-			$string_escaped .= esc_attr($key) . '="' . esc_attr($val) . '" ';
2279
-		}
2280
-	}
2276
+    if(!empty($attributes )){
2277
+        foreach ( $attributes as $key => $val ) {
2278
+            $string_escaped .= esc_attr($key) . '="' . esc_attr($val) . '" ';
2279
+        }
2280
+    }
2281 2281
 
2282
-	return $string_escaped;
2282
+    return $string_escaped;
2283 2283
 }
2284 2284
 
2285 2285
 /**
@@ -2291,38 +2291,38 @@  discard block
 block discarded – undo
2291 2291
  * @return array
2292 2292
  */
2293 2293
 function sd_parse_custom_attributes( $attributes_string, $delimiter = ',' ) {
2294
-	$attributes = explode( $delimiter, $attributes_string );
2295
-	$result = [];
2294
+    $attributes = explode( $delimiter, $attributes_string );
2295
+    $result = [];
2296 2296
 
2297
-	foreach ( $attributes as $attribute ) {
2298
-		$attr_key_value = explode( '|', $attribute );
2297
+    foreach ( $attributes as $attribute ) {
2298
+        $attr_key_value = explode( '|', $attribute );
2299 2299
 
2300
-		$attr_key = mb_strtolower( $attr_key_value[0] );
2300
+        $attr_key = mb_strtolower( $attr_key_value[0] );
2301 2301
 
2302
-		// Remove any not allowed characters.
2303
-		preg_match( '/[-_a-z0-9]+/', $attr_key, $attr_key_matches );
2302
+        // Remove any not allowed characters.
2303
+        preg_match( '/[-_a-z0-9]+/', $attr_key, $attr_key_matches );
2304 2304
 
2305
-		if ( empty( $attr_key_matches[0] ) ) {
2306
-			continue;
2307
-		}
2305
+        if ( empty( $attr_key_matches[0] ) ) {
2306
+            continue;
2307
+        }
2308 2308
 
2309
-		$attr_key = $attr_key_matches[0];
2309
+        $attr_key = $attr_key_matches[0];
2310 2310
 
2311
-		// Avoid Javascript events and unescaped href.
2312
-		if ( 'href' === $attr_key || 'on' === substr( $attr_key, 0, 2 ) ) {
2313
-			continue;
2314
-		}
2311
+        // Avoid Javascript events and unescaped href.
2312
+        if ( 'href' === $attr_key || 'on' === substr( $attr_key, 0, 2 ) ) {
2313
+            continue;
2314
+        }
2315 2315
 
2316
-		if ( isset( $attr_key_value[1] ) ) {
2317
-			$attr_value = trim( $attr_key_value[1] );
2318
-		} else {
2319
-			$attr_value = '';
2320
-		}
2316
+        if ( isset( $attr_key_value[1] ) ) {
2317
+            $attr_value = trim( $attr_key_value[1] );
2318
+        } else {
2319
+            $attr_value = '';
2320
+        }
2321 2321
 
2322
-		$result[ $attr_key ] = $attr_value;
2323
-	}
2322
+        $result[ $attr_key ] = $attr_value;
2323
+    }
2324 2324
 
2325
-	return $result;
2325
+    return $result;
2326 2326
 }
2327 2327
 
2328 2328
 /**
@@ -2334,424 +2334,424 @@  discard block
 block discarded – undo
2334 2334
  * @todo find best way to use px- py- or general p-
2335 2335
  */
2336 2336
 function sd_build_aui_class( $args ) {
2337
-	global $aui_bs5;
2338
-
2339
-	$classes = array();
2340
-
2341
-	if ( $aui_bs5 ) {
2342
-		$p_ml = 'ms-';
2343
-		$p_mr = 'me-';
2344
-
2345
-		$p_pl = 'ps-';
2346
-		$p_pr = 'pe-';
2347
-	} else {
2348
-		$p_ml = 'ml-';
2349
-		$p_mr = 'mr-';
2350
-
2351
-		$p_pl = 'pl-';
2352
-		$p_pr = 'pr-';
2353
-	}
2354
-
2355
-	// margins.
2356
-	if ( isset( $args['mt'] ) && $args['mt'] !== '' ) {
2357
-		$classes[] = 'mt-' . sanitize_html_class( $args['mt'] );
2358
-		$mt        = $args['mt'];
2359
-	} else {
2360
-		$mt = null;
2361
-	}
2362
-	if ( isset( $args['mr'] ) && $args['mr'] !== '' ) {
2363
-		$classes[] = $p_mr . sanitize_html_class( $args['mr'] );
2364
-		$mr        = $args['mr'];
2365
-	} else {
2366
-		$mr = null;
2367
-	}
2368
-	if ( isset( $args['mb'] ) && $args['mb'] !== '' ) {
2369
-		$classes[] = 'mb-' . sanitize_html_class( $args['mb'] );
2370
-		$mb        = $args['mb'];
2371
-	} else {
2372
-		$mb = null;
2373
-	}
2374
-	if ( isset( $args['ml'] ) && $args['ml'] !== '' ) {
2375
-		$classes[] = $p_ml . sanitize_html_class( $args['ml'] );
2376
-		$ml        = $args['ml'];
2377
-	} else {
2378
-		$ml = null;
2379
-	}
2380
-
2381
-	// margins tablet.
2382
-	if ( isset( $args['mt_md'] ) && $args['mt_md'] !== '' ) {
2383
-		$classes[] = 'mt-md-' . sanitize_html_class( $args['mt_md'] );
2384
-		$mt_md     = $args['mt_md'];
2385
-	} else {
2386
-		$mt_md = null;
2387
-	}
2388
-	if ( isset( $args['mr_md'] ) && $args['mr_md'] !== '' ) {
2389
-		$classes[] = $p_mr . 'md-' . sanitize_html_class( $args['mr_md'] );
2390
-		$mt_md     = $args['mr_md'];
2391
-	} else {
2392
-		$mr_md = null;
2393
-	}
2394
-	if ( isset( $args['mb_md'] ) && $args['mb_md'] !== '' ) {
2395
-		$classes[] = 'mb-md-' . sanitize_html_class( $args['mb_md'] );
2396
-		$mt_md     = $args['mb_md'];
2397
-	} else {
2398
-		$mb_md = null;
2399
-	}
2400
-	if ( isset( $args['ml_md'] ) && $args['ml_md'] !== '' ) {
2401
-		$classes[] = $p_ml . 'md-' . sanitize_html_class( $args['ml_md'] );
2402
-		$mt_md     = $args['ml_md'];
2403
-	} else {
2404
-		$ml_md = null;
2405
-	}
2406
-
2407
-	// margins desktop.
2408
-	if ( isset( $args['mt_lg'] ) && $args['mt_lg'] !== '' ) {
2409
-		if ( $mt == null && $mt_md == null ) {
2410
-			$classes[] = 'mt-' . sanitize_html_class( $args['mt_lg'] );
2411
-		} else {
2412
-			$classes[] = 'mt-lg-' . sanitize_html_class( $args['mt_lg'] );
2413
-		}
2414
-	}
2415
-	if ( isset( $args['mr_lg'] ) && $args['mr_lg'] !== '' ) {
2416
-		if ( $mr == null && $mr_md == null ) {
2417
-			$classes[] = $p_mr . sanitize_html_class( $args['mr_lg'] );
2418
-		} else {
2419
-			$classes[] = $p_mr . 'lg-' . sanitize_html_class( $args['mr_lg'] );
2420
-		}
2421
-	}
2422
-	if ( isset( $args['mb_lg'] ) && $args['mb_lg'] !== '' ) {
2423
-		if ( $mb == null && $mb_md == null ) {
2424
-			$classes[] = 'mb-' . sanitize_html_class( $args['mb_lg'] );
2425
-		} else {
2426
-			$classes[] = 'mb-lg-' . sanitize_html_class( $args['mb_lg'] );
2427
-		}
2428
-	}
2429
-	if ( isset( $args['ml_lg'] ) && $args['ml_lg'] !== '' ) {
2430
-		if ( $ml == null && $ml_md == null ) {
2431
-			$classes[] = $p_ml . sanitize_html_class( $args['ml_lg'] );
2432
-		} else {
2433
-			$classes[] = $p_ml . 'lg-' . sanitize_html_class( $args['ml_lg'] );
2434
-		}
2435
-	}
2436
-
2437
-	// padding.
2438
-	if ( isset( $args['pt'] ) && $args['pt'] !== '' ) {
2439
-		$classes[] = 'pt-' . sanitize_html_class( $args['pt'] );
2440
-		$pt        = $args['pt'];
2441
-	} else {
2442
-		$pt = null;
2443
-	}
2444
-	if ( isset( $args['pr'] ) && $args['pr'] !== '' ) {
2445
-		$classes[] = $p_pr . sanitize_html_class( $args['pr'] );
2446
-		$pr        = $args['pr'];
2447
-	} else {
2448
-		$pr = null;
2449
-	}
2450
-	if ( isset( $args['pb'] ) && $args['pb'] !== '' ) {
2451
-		$classes[] = 'pb-' . sanitize_html_class( $args['pb'] );
2452
-		$pb        = $args['pb'];
2453
-	} else {
2454
-		$pb = null;
2455
-	}
2456
-	if ( isset( $args['pl'] ) && $args['pl'] !== '' ) {
2457
-		$classes[] = $p_pl . sanitize_html_class( $args['pl'] );
2458
-		$pl        = $args['pl'];
2459
-	} else {
2460
-		$pl = null;
2461
-	}
2462
-
2463
-	// padding tablet.
2464
-	if ( isset( $args['pt_md'] ) && $args['pt_md'] !== '' ) {
2465
-		$classes[] = 'pt-md-' . sanitize_html_class( $args['pt_md'] );
2466
-		$pt_md     = $args['pt_md'];
2467
-	} else {
2468
-		$pt_md = null;
2469
-	}
2470
-	if ( isset( $args['pr_md'] ) && $args['pr_md'] !== '' ) {
2471
-		$classes[] = $p_pr . 'md-' . sanitize_html_class( $args['pr_md'] );
2472
-		$pr_md     = $args['pr_md'];
2473
-	} else {
2474
-		$pr_md = null;
2475
-	}
2476
-	if ( isset( $args['pb_md'] ) && $args['pb_md'] !== '' ) {
2477
-		$classes[] = 'pb-md-' . sanitize_html_class( $args['pb_md'] );
2478
-		$pb_md     = $args['pb_md'];
2479
-	} else {
2480
-		$pb_md = null;
2481
-	}
2482
-	if ( isset( $args['pl_md'] ) && $args['pl_md'] !== '' ) {
2483
-		$classes[] = $p_pl . 'md-' . sanitize_html_class( $args['pl_md'] );
2484
-		$pl_md     = $args['pl_md'];
2485
-	} else {
2486
-		$pl_md = null;
2487
-	}
2488
-
2489
-	// padding desktop.
2490
-	if ( isset( $args['pt_lg'] ) && $args['pt_lg'] !== '' ) {
2491
-		if ( $pt == null && $pt_md == null ) {
2492
-			$classes[] = 'pt-' . sanitize_html_class( $args['pt_lg'] );
2493
-		} else {
2494
-			$classes[] = 'pt-lg-' . sanitize_html_class( $args['pt_lg'] );
2495
-		}
2496
-	}
2497
-	if ( isset( $args['pr_lg'] ) && $args['pr_lg'] !== '' ) {
2498
-		if ( $pr == null && $pr_md == null ) {
2499
-			$classes[] = $p_pr . sanitize_html_class( $args['pr_lg'] );
2500
-		} else {
2501
-			$classes[] = $p_pr . 'lg-' . sanitize_html_class( $args['pr_lg'] );
2502
-		}
2503
-	}
2504
-	if ( isset( $args['pb_lg'] ) && $args['pb_lg'] !== '' ) {
2505
-		if ( $pb == null && $pb_md == null ) {
2506
-			$classes[] = 'pb-' . sanitize_html_class( $args['pb_lg'] );
2507
-		} else {
2508
-			$classes[] = 'pb-lg-' . sanitize_html_class( $args['pb_lg'] );
2509
-		}
2510
-	}
2511
-	if ( isset( $args['pl_lg'] ) && $args['pl_lg'] !== '' ) {
2512
-		if ( $pl == null && $pl_md == null ) {
2513
-			$classes[] = $p_pl . sanitize_html_class( $args['pl_lg'] );
2514
-		} else {
2515
-			$classes[] = $p_pl . 'lg-' . sanitize_html_class( $args['pl_lg'] );
2516
-		}
2517
-	}
2518
-
2519
-	// row cols, mobile, tablet, desktop
2520
-	if ( ! empty( $args['row_cols'] ) && $args['row_cols'] !== '' ) {
2521
-		$classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols'] );
2522
-		$row_cols  = $args['row_cols'];
2523
-	} else {
2524
-		$row_cols = null;
2525
-	}
2526
-	if ( ! empty( $args['row_cols_md'] ) && $args['row_cols_md'] !== '' ) {
2527
-		$classes[]   = sanitize_html_class( 'row-cols-md-' . $args['row_cols_md'] );
2528
-		$row_cols_md = $args['row_cols_md'];
2529
-	} else {
2530
-		$row_cols_md = null;
2531
-	}
2532
-	if ( ! empty( $args['row_cols_lg'] ) && $args['row_cols_lg'] !== '' ) {
2533
-		if ( $row_cols == null && $row_cols_md == null ) {
2534
-			$classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols_lg'] );
2535
-		} else {
2536
-			$classes[] = sanitize_html_class( 'row-cols-lg-' . $args['row_cols_lg'] );
2537
-		}
2538
-	}
2539
-
2540
-	// columns , mobile, tablet, desktop
2541
-	if ( ! empty( $args['col'] ) && $args['col'] !== '' ) {
2542
-		$classes[] = sanitize_html_class( 'col-' . $args['col'] );
2543
-		$col       = $args['col'];
2544
-	} else {
2545
-		$col = null;
2546
-	}
2547
-	if ( ! empty( $args['col_md'] ) && $args['col_md'] !== '' ) {
2548
-		$classes[] = sanitize_html_class( 'col-md-' . $args['col_md'] );
2549
-		$col_md    = $args['col_md'];
2550
-	} else {
2551
-		$col_md = null;
2552
-	}
2553
-	if ( ! empty( $args['col_lg'] ) && $args['col_lg'] !== '' ) {
2554
-		if ( $col == null && $col_md == null ) {
2555
-			$classes[] = sanitize_html_class( 'col-' . $args['col_lg'] );
2556
-		} else {
2557
-			$classes[] = sanitize_html_class( 'col-lg-' . $args['col_lg'] );
2558
-		}
2559
-	}
2560
-
2561
-	// border
2562
-	if ( isset( $args['border'] ) && ( $args['border'] == 'none' || $args['border'] === '0' || $args['border'] === 0 ) ) {
2563
-		$classes[] = 'border-0';
2564
-	} elseif ( ! empty( $args['border'] ) ) {
2565
-		$border_class = 'border';
2566
-		if ( ! empty( $args['border_type'] ) && strpos( $args['border_type'], '-0' ) === false ) {
2567
-			$border_class = '';
2568
-		}
2569
-		$classes[] = $border_class . ' border-' . sanitize_html_class( $args['border'] );
2570
-	}
2571
-
2572
-	// border radius type
2573
-	if ( ! empty( $args['rounded'] ) ) {
2574
-		$classes[] = sanitize_html_class( $args['rounded'] );
2575
-	}
2576
-
2577
-	// border radius size BS4
2578
-	if ( isset( $args['rounded_size'] ) && in_array( $args['rounded_size'], array( 'sm', 'lg' ) ) ) {
2579
-		$classes[] = 'rounded-' . sanitize_html_class( $args['rounded_size'] );
2580
-		// if we set a size then we need to remove "rounded" if set
2581
-		if ( ( $key = array_search( 'rounded', $classes ) ) !== false ) {
2582
-			unset( $classes[ $key ] );
2583
-		}
2584
-	} else {
2585
-
2586
-		// border radius size , mobile, tablet, desktop
2587
-		if ( isset( $args['rounded_size'] ) && $args['rounded_size'] !== '' ) {
2588
-			$classes[]    = sanitize_html_class( 'rounded-' . $args['rounded_size'] );
2589
-			$rounded_size = $args['rounded_size'];
2590
-		} else {
2591
-			$rounded_size = null;
2592
-		}
2593
-		if ( isset( $args['rounded_size_md'] ) && $args['rounded_size_md'] !== '' ) {
2594
-			$classes[]       = sanitize_html_class( 'rounded-md-' . $args['rounded_size_md'] );
2595
-			$rounded_size_md = $args['rounded_size_md'];
2596
-		} else {
2597
-			$rounded_size_md = null;
2598
-		}
2599
-		if ( isset( $args['rounded_size_lg'] ) && $args['rounded_size_lg'] !== '' ) {
2600
-			if ( $rounded_size == null && $rounded_size_md == null ) {
2601
-				$classes[] = sanitize_html_class( 'rounded-' . $args['rounded_size_lg'] );
2602
-			} else {
2603
-				$classes[] = sanitize_html_class( 'rounded-lg-' . $args['rounded_size_lg'] );
2604
-			}
2605
-		}
2606
-	}
2607
-
2608
-	// shadow
2609
-	//if ( !empty( $args['shadow'] ) ) { $classes[] = sanitize_html_class($args['shadow']); }
2610
-
2611
-	// background
2612
-	if ( ! empty( $args['bg'] ) ) {
2613
-		$classes[] = 'bg-' . sanitize_html_class( $args['bg'] );
2614
-	}
2615
-
2616
-	// background image fixed bg_image_fixed this helps fix a iOS bug
2617
-	if ( ! empty( $args['bg_image_fixed'] ) ) {
2618
-		$classes[] = 'bg-image-fixed';
2619
-	}
2620
-
2621
-	// text_color
2622
-	if ( ! empty( $args['text_color'] ) ) {
2623
-		$classes[] = 'text-' . sanitize_html_class( $args['text_color'] );
2624
-	}
2625
-
2626
-	// text_align
2627
-	if ( ! empty( $args['text_justify'] ) ) {
2628
-		$classes[] = 'text-justify';
2629
-	} else {
2630
-		if ( ! empty( $args['text_align'] ) ) {
2631
-			$classes[]  = sanitize_html_class( $args['text_align'] );
2632
-			$text_align = $args['text_align'];
2633
-		} else {
2634
-			$text_align = null;
2635
-		}
2636
-		if ( ! empty( $args['text_align_md'] ) && $args['text_align_md'] !== '' ) {
2637
-			$classes[]     = sanitize_html_class( $args['text_align_md'] );
2638
-			$text_align_md = $args['text_align_md'];
2639
-		} else {
2640
-			$text_align_md = null;
2641
-		}
2642
-		if ( ! empty( $args['text_align_lg'] ) && $args['text_align_lg'] !== '' ) {
2643
-			if ( $text_align == null && $text_align_md == null ) {
2644
-				$classes[] = sanitize_html_class( str_replace( '-lg', '', $args['text_align_lg'] ) );
2645
-			} else {
2646
-				$classes[] = sanitize_html_class( $args['text_align_lg'] );
2647
-			}
2648
-		}
2649
-	}
2650
-
2651
-	// display
2652
-	if ( ! empty( $args['display'] ) ) {
2653
-		$classes[] = sanitize_html_class( $args['display'] );
2654
-		$display   = $args['display'];
2655
-	} else {
2656
-		$display = null;
2657
-	}
2658
-	if ( ! empty( $args['display_md'] ) && $args['display_md'] !== '' ) {
2659
-		$classes[]  = sanitize_html_class( $args['display_md'] );
2660
-		$display_md = $args['display_md'];
2661
-	} else {
2662
-		$display_md = null;
2663
-	}
2664
-	if ( ! empty( $args['display_lg'] ) && $args['display_lg'] !== '' ) {
2665
-		if ( $display == null && $display_md == null ) {
2666
-			$classes[] = sanitize_html_class( str_replace( '-lg', '', $args['display_lg'] ) );
2667
-		} else {
2668
-			$classes[] = sanitize_html_class( $args['display_lg'] );
2669
-		}
2670
-	}
2671
-
2672
-	// bgtus - background transparent until scroll
2673
-	if ( ! empty( $args['bgtus'] ) ) {
2674
-		$classes[] = sanitize_html_class( 'bg-transparent-until-scroll' );
2675
-	}
2676
-
2677
-	// cscos - change color scheme on scroll
2678
-	if ( ! empty( $args['bgtus'] ) && ! empty( $args['cscos'] ) ) {
2679
-		$classes[] = sanitize_html_class( 'color-scheme-flip-on-scroll' );
2680
-	}
2681
-
2682
-	// hover animations
2683
-	if ( ! empty( $args['hover_animations'] ) ) {
2684
-		$classes[] = sd_sanitize_html_classes( str_replace( ',', ' ', $args['hover_animations'] ) );
2685
-	}
2686
-
2687
-	// absolute_position
2688
-	if ( ! empty( $args['absolute_position'] ) ) {
2689
-		if ( 'top-left' === $args['absolute_position'] ) {
2690
-			$classes[] = 'start-0 top-0';
2691
-		} elseif ( 'top-center' === $args['absolute_position'] ) {
2692
-			$classes[] = 'start-50 top-0 translate-middle';
2693
-		} elseif ( 'top-right' === $args['absolute_position'] ) {
2694
-			$classes[] = 'end-0 top-0';
2695
-		} elseif ( 'center-left' === $args['absolute_position'] ) {
2696
-			$classes[] = 'start-0 top-50';
2697
-		} elseif ( 'center' === $args['absolute_position'] ) {
2698
-			$classes[] = 'start-50 top-50 translate-middle';
2699
-		} elseif ( 'center-right' === $args['absolute_position'] ) {
2700
-			$classes[] = 'end-0 top-50';
2701
-		} elseif ( 'bottom-left' === $args['absolute_position'] ) {
2702
-			$classes[] = 'start-0 bottom-0';
2703
-		} elseif ( 'bottom-center' === $args['absolute_position'] ) {
2704
-			$classes[] = 'start-50 bottom-0 translate-middle';
2705
-		} elseif ( 'bottom-right' === $args['absolute_position'] ) {
2706
-			$classes[] = 'end-0 bottom-0';
2707
-		}
2708
-	}
2709
-
2710
-	// build classes from build keys
2711
-	$build_keys = sd_get_class_build_keys();
2712
-	if ( ! empty( $build_keys ) ) {
2713
-		foreach ( $build_keys as $key ) {
2714
-
2715
-			if ( substr( $key, -4 ) == '-MTD' ) {
2716
-
2717
-				$k = str_replace( '-MTD', '', $key );
2718
-
2719
-				// Mobile, Tablet, Desktop
2720
-				if ( ! empty( $args[ $k ] ) && $args[ $k ] !== '' ) {
2721
-					$classes[] = sanitize_html_class( $args[ $k ] );
2722
-					$v         = $args[ $k ];
2723
-				} else {
2724
-					$v = null;
2725
-				}
2726
-				if ( ! empty( $args[ $k . '_md' ] ) && $args[ $k . '_md' ] !== '' ) {
2727
-					$classes[] = sanitize_html_class( $args[ $k . '_md' ] );
2728
-					$v_md      = $args[ $k . '_md' ];
2729
-				} else {
2730
-					$v_md = null;
2731
-				}
2732
-				if ( ! empty( $args[ $k . '_lg' ] ) && $args[ $k . '_lg' ] !== '' ) {
2733
-					if ( $v == null && $v_md == null ) {
2734
-						$classes[] = sanitize_html_class( str_replace( '-lg', '', $args[ $k . '_lg' ] ) );
2735
-					} else {
2736
-						$classes[] = sanitize_html_class( $args[ $k . '_lg' ] );
2737
-					}
2738
-				}
2739
-			} else {
2740
-				if ( $key == 'font_size' && ! empty( $args[ $key ] ) && $args[ $key ] == 'custom' ) {
2741
-					continue;
2742
-				}
2743
-				if ( ! empty( $args[ $key ] ) ) {
2744
-					$classes[] = sd_sanitize_html_classes( $args[ $key ] );
2745
-				}
2746
-			}
2747
-		}
2748
-	}
2749
-
2750
-	if ( ! empty( $classes ) ) {
2751
-		$classes = array_unique( array_filter( array_map( 'trim', $classes ) ) );
2752
-	}
2753
-
2754
-	return implode( ' ', $classes );
2337
+    global $aui_bs5;
2338
+
2339
+    $classes = array();
2340
+
2341
+    if ( $aui_bs5 ) {
2342
+        $p_ml = 'ms-';
2343
+        $p_mr = 'me-';
2344
+
2345
+        $p_pl = 'ps-';
2346
+        $p_pr = 'pe-';
2347
+    } else {
2348
+        $p_ml = 'ml-';
2349
+        $p_mr = 'mr-';
2350
+
2351
+        $p_pl = 'pl-';
2352
+        $p_pr = 'pr-';
2353
+    }
2354
+
2355
+    // margins.
2356
+    if ( isset( $args['mt'] ) && $args['mt'] !== '' ) {
2357
+        $classes[] = 'mt-' . sanitize_html_class( $args['mt'] );
2358
+        $mt        = $args['mt'];
2359
+    } else {
2360
+        $mt = null;
2361
+    }
2362
+    if ( isset( $args['mr'] ) && $args['mr'] !== '' ) {
2363
+        $classes[] = $p_mr . sanitize_html_class( $args['mr'] );
2364
+        $mr        = $args['mr'];
2365
+    } else {
2366
+        $mr = null;
2367
+    }
2368
+    if ( isset( $args['mb'] ) && $args['mb'] !== '' ) {
2369
+        $classes[] = 'mb-' . sanitize_html_class( $args['mb'] );
2370
+        $mb        = $args['mb'];
2371
+    } else {
2372
+        $mb = null;
2373
+    }
2374
+    if ( isset( $args['ml'] ) && $args['ml'] !== '' ) {
2375
+        $classes[] = $p_ml . sanitize_html_class( $args['ml'] );
2376
+        $ml        = $args['ml'];
2377
+    } else {
2378
+        $ml = null;
2379
+    }
2380
+
2381
+    // margins tablet.
2382
+    if ( isset( $args['mt_md'] ) && $args['mt_md'] !== '' ) {
2383
+        $classes[] = 'mt-md-' . sanitize_html_class( $args['mt_md'] );
2384
+        $mt_md     = $args['mt_md'];
2385
+    } else {
2386
+        $mt_md = null;
2387
+    }
2388
+    if ( isset( $args['mr_md'] ) && $args['mr_md'] !== '' ) {
2389
+        $classes[] = $p_mr . 'md-' . sanitize_html_class( $args['mr_md'] );
2390
+        $mt_md     = $args['mr_md'];
2391
+    } else {
2392
+        $mr_md = null;
2393
+    }
2394
+    if ( isset( $args['mb_md'] ) && $args['mb_md'] !== '' ) {
2395
+        $classes[] = 'mb-md-' . sanitize_html_class( $args['mb_md'] );
2396
+        $mt_md     = $args['mb_md'];
2397
+    } else {
2398
+        $mb_md = null;
2399
+    }
2400
+    if ( isset( $args['ml_md'] ) && $args['ml_md'] !== '' ) {
2401
+        $classes[] = $p_ml . 'md-' . sanitize_html_class( $args['ml_md'] );
2402
+        $mt_md     = $args['ml_md'];
2403
+    } else {
2404
+        $ml_md = null;
2405
+    }
2406
+
2407
+    // margins desktop.
2408
+    if ( isset( $args['mt_lg'] ) && $args['mt_lg'] !== '' ) {
2409
+        if ( $mt == null && $mt_md == null ) {
2410
+            $classes[] = 'mt-' . sanitize_html_class( $args['mt_lg'] );
2411
+        } else {
2412
+            $classes[] = 'mt-lg-' . sanitize_html_class( $args['mt_lg'] );
2413
+        }
2414
+    }
2415
+    if ( isset( $args['mr_lg'] ) && $args['mr_lg'] !== '' ) {
2416
+        if ( $mr == null && $mr_md == null ) {
2417
+            $classes[] = $p_mr . sanitize_html_class( $args['mr_lg'] );
2418
+        } else {
2419
+            $classes[] = $p_mr . 'lg-' . sanitize_html_class( $args['mr_lg'] );
2420
+        }
2421
+    }
2422
+    if ( isset( $args['mb_lg'] ) && $args['mb_lg'] !== '' ) {
2423
+        if ( $mb == null && $mb_md == null ) {
2424
+            $classes[] = 'mb-' . sanitize_html_class( $args['mb_lg'] );
2425
+        } else {
2426
+            $classes[] = 'mb-lg-' . sanitize_html_class( $args['mb_lg'] );
2427
+        }
2428
+    }
2429
+    if ( isset( $args['ml_lg'] ) && $args['ml_lg'] !== '' ) {
2430
+        if ( $ml == null && $ml_md == null ) {
2431
+            $classes[] = $p_ml . sanitize_html_class( $args['ml_lg'] );
2432
+        } else {
2433
+            $classes[] = $p_ml . 'lg-' . sanitize_html_class( $args['ml_lg'] );
2434
+        }
2435
+    }
2436
+
2437
+    // padding.
2438
+    if ( isset( $args['pt'] ) && $args['pt'] !== '' ) {
2439
+        $classes[] = 'pt-' . sanitize_html_class( $args['pt'] );
2440
+        $pt        = $args['pt'];
2441
+    } else {
2442
+        $pt = null;
2443
+    }
2444
+    if ( isset( $args['pr'] ) && $args['pr'] !== '' ) {
2445
+        $classes[] = $p_pr . sanitize_html_class( $args['pr'] );
2446
+        $pr        = $args['pr'];
2447
+    } else {
2448
+        $pr = null;
2449
+    }
2450
+    if ( isset( $args['pb'] ) && $args['pb'] !== '' ) {
2451
+        $classes[] = 'pb-' . sanitize_html_class( $args['pb'] );
2452
+        $pb        = $args['pb'];
2453
+    } else {
2454
+        $pb = null;
2455
+    }
2456
+    if ( isset( $args['pl'] ) && $args['pl'] !== '' ) {
2457
+        $classes[] = $p_pl . sanitize_html_class( $args['pl'] );
2458
+        $pl        = $args['pl'];
2459
+    } else {
2460
+        $pl = null;
2461
+    }
2462
+
2463
+    // padding tablet.
2464
+    if ( isset( $args['pt_md'] ) && $args['pt_md'] !== '' ) {
2465
+        $classes[] = 'pt-md-' . sanitize_html_class( $args['pt_md'] );
2466
+        $pt_md     = $args['pt_md'];
2467
+    } else {
2468
+        $pt_md = null;
2469
+    }
2470
+    if ( isset( $args['pr_md'] ) && $args['pr_md'] !== '' ) {
2471
+        $classes[] = $p_pr . 'md-' . sanitize_html_class( $args['pr_md'] );
2472
+        $pr_md     = $args['pr_md'];
2473
+    } else {
2474
+        $pr_md = null;
2475
+    }
2476
+    if ( isset( $args['pb_md'] ) && $args['pb_md'] !== '' ) {
2477
+        $classes[] = 'pb-md-' . sanitize_html_class( $args['pb_md'] );
2478
+        $pb_md     = $args['pb_md'];
2479
+    } else {
2480
+        $pb_md = null;
2481
+    }
2482
+    if ( isset( $args['pl_md'] ) && $args['pl_md'] !== '' ) {
2483
+        $classes[] = $p_pl . 'md-' . sanitize_html_class( $args['pl_md'] );
2484
+        $pl_md     = $args['pl_md'];
2485
+    } else {
2486
+        $pl_md = null;
2487
+    }
2488
+
2489
+    // padding desktop.
2490
+    if ( isset( $args['pt_lg'] ) && $args['pt_lg'] !== '' ) {
2491
+        if ( $pt == null && $pt_md == null ) {
2492
+            $classes[] = 'pt-' . sanitize_html_class( $args['pt_lg'] );
2493
+        } else {
2494
+            $classes[] = 'pt-lg-' . sanitize_html_class( $args['pt_lg'] );
2495
+        }
2496
+    }
2497
+    if ( isset( $args['pr_lg'] ) && $args['pr_lg'] !== '' ) {
2498
+        if ( $pr == null && $pr_md == null ) {
2499
+            $classes[] = $p_pr . sanitize_html_class( $args['pr_lg'] );
2500
+        } else {
2501
+            $classes[] = $p_pr . 'lg-' . sanitize_html_class( $args['pr_lg'] );
2502
+        }
2503
+    }
2504
+    if ( isset( $args['pb_lg'] ) && $args['pb_lg'] !== '' ) {
2505
+        if ( $pb == null && $pb_md == null ) {
2506
+            $classes[] = 'pb-' . sanitize_html_class( $args['pb_lg'] );
2507
+        } else {
2508
+            $classes[] = 'pb-lg-' . sanitize_html_class( $args['pb_lg'] );
2509
+        }
2510
+    }
2511
+    if ( isset( $args['pl_lg'] ) && $args['pl_lg'] !== '' ) {
2512
+        if ( $pl == null && $pl_md == null ) {
2513
+            $classes[] = $p_pl . sanitize_html_class( $args['pl_lg'] );
2514
+        } else {
2515
+            $classes[] = $p_pl . 'lg-' . sanitize_html_class( $args['pl_lg'] );
2516
+        }
2517
+    }
2518
+
2519
+    // row cols, mobile, tablet, desktop
2520
+    if ( ! empty( $args['row_cols'] ) && $args['row_cols'] !== '' ) {
2521
+        $classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols'] );
2522
+        $row_cols  = $args['row_cols'];
2523
+    } else {
2524
+        $row_cols = null;
2525
+    }
2526
+    if ( ! empty( $args['row_cols_md'] ) && $args['row_cols_md'] !== '' ) {
2527
+        $classes[]   = sanitize_html_class( 'row-cols-md-' . $args['row_cols_md'] );
2528
+        $row_cols_md = $args['row_cols_md'];
2529
+    } else {
2530
+        $row_cols_md = null;
2531
+    }
2532
+    if ( ! empty( $args['row_cols_lg'] ) && $args['row_cols_lg'] !== '' ) {
2533
+        if ( $row_cols == null && $row_cols_md == null ) {
2534
+            $classes[] = sanitize_html_class( 'row-cols-' . $args['row_cols_lg'] );
2535
+        } else {
2536
+            $classes[] = sanitize_html_class( 'row-cols-lg-' . $args['row_cols_lg'] );
2537
+        }
2538
+    }
2539
+
2540
+    // columns , mobile, tablet, desktop
2541
+    if ( ! empty( $args['col'] ) && $args['col'] !== '' ) {
2542
+        $classes[] = sanitize_html_class( 'col-' . $args['col'] );
2543
+        $col       = $args['col'];
2544
+    } else {
2545
+        $col = null;
2546
+    }
2547
+    if ( ! empty( $args['col_md'] ) && $args['col_md'] !== '' ) {
2548
+        $classes[] = sanitize_html_class( 'col-md-' . $args['col_md'] );
2549
+        $col_md    = $args['col_md'];
2550
+    } else {
2551
+        $col_md = null;
2552
+    }
2553
+    if ( ! empty( $args['col_lg'] ) && $args['col_lg'] !== '' ) {
2554
+        if ( $col == null && $col_md == null ) {
2555
+            $classes[] = sanitize_html_class( 'col-' . $args['col_lg'] );
2556
+        } else {
2557
+            $classes[] = sanitize_html_class( 'col-lg-' . $args['col_lg'] );
2558
+        }
2559
+    }
2560
+
2561
+    // border
2562
+    if ( isset( $args['border'] ) && ( $args['border'] == 'none' || $args['border'] === '0' || $args['border'] === 0 ) ) {
2563
+        $classes[] = 'border-0';
2564
+    } elseif ( ! empty( $args['border'] ) ) {
2565
+        $border_class = 'border';
2566
+        if ( ! empty( $args['border_type'] ) && strpos( $args['border_type'], '-0' ) === false ) {
2567
+            $border_class = '';
2568
+        }
2569
+        $classes[] = $border_class . ' border-' . sanitize_html_class( $args['border'] );
2570
+    }
2571
+
2572
+    // border radius type
2573
+    if ( ! empty( $args['rounded'] ) ) {
2574
+        $classes[] = sanitize_html_class( $args['rounded'] );
2575
+    }
2576
+
2577
+    // border radius size BS4
2578
+    if ( isset( $args['rounded_size'] ) && in_array( $args['rounded_size'], array( 'sm', 'lg' ) ) ) {
2579
+        $classes[] = 'rounded-' . sanitize_html_class( $args['rounded_size'] );
2580
+        // if we set a size then we need to remove "rounded" if set
2581
+        if ( ( $key = array_search( 'rounded', $classes ) ) !== false ) {
2582
+            unset( $classes[ $key ] );
2583
+        }
2584
+    } else {
2585
+
2586
+        // border radius size , mobile, tablet, desktop
2587
+        if ( isset( $args['rounded_size'] ) && $args['rounded_size'] !== '' ) {
2588
+            $classes[]    = sanitize_html_class( 'rounded-' . $args['rounded_size'] );
2589
+            $rounded_size = $args['rounded_size'];
2590
+        } else {
2591
+            $rounded_size = null;
2592
+        }
2593
+        if ( isset( $args['rounded_size_md'] ) && $args['rounded_size_md'] !== '' ) {
2594
+            $classes[]       = sanitize_html_class( 'rounded-md-' . $args['rounded_size_md'] );
2595
+            $rounded_size_md = $args['rounded_size_md'];
2596
+        } else {
2597
+            $rounded_size_md = null;
2598
+        }
2599
+        if ( isset( $args['rounded_size_lg'] ) && $args['rounded_size_lg'] !== '' ) {
2600
+            if ( $rounded_size == null && $rounded_size_md == null ) {
2601
+                $classes[] = sanitize_html_class( 'rounded-' . $args['rounded_size_lg'] );
2602
+            } else {
2603
+                $classes[] = sanitize_html_class( 'rounded-lg-' . $args['rounded_size_lg'] );
2604
+            }
2605
+        }
2606
+    }
2607
+
2608
+    // shadow
2609
+    //if ( !empty( $args['shadow'] ) ) { $classes[] = sanitize_html_class($args['shadow']); }
2610
+
2611
+    // background
2612
+    if ( ! empty( $args['bg'] ) ) {
2613
+        $classes[] = 'bg-' . sanitize_html_class( $args['bg'] );
2614
+    }
2615
+
2616
+    // background image fixed bg_image_fixed this helps fix a iOS bug
2617
+    if ( ! empty( $args['bg_image_fixed'] ) ) {
2618
+        $classes[] = 'bg-image-fixed';
2619
+    }
2620
+
2621
+    // text_color
2622
+    if ( ! empty( $args['text_color'] ) ) {
2623
+        $classes[] = 'text-' . sanitize_html_class( $args['text_color'] );
2624
+    }
2625
+
2626
+    // text_align
2627
+    if ( ! empty( $args['text_justify'] ) ) {
2628
+        $classes[] = 'text-justify';
2629
+    } else {
2630
+        if ( ! empty( $args['text_align'] ) ) {
2631
+            $classes[]  = sanitize_html_class( $args['text_align'] );
2632
+            $text_align = $args['text_align'];
2633
+        } else {
2634
+            $text_align = null;
2635
+        }
2636
+        if ( ! empty( $args['text_align_md'] ) && $args['text_align_md'] !== '' ) {
2637
+            $classes[]     = sanitize_html_class( $args['text_align_md'] );
2638
+            $text_align_md = $args['text_align_md'];
2639
+        } else {
2640
+            $text_align_md = null;
2641
+        }
2642
+        if ( ! empty( $args['text_align_lg'] ) && $args['text_align_lg'] !== '' ) {
2643
+            if ( $text_align == null && $text_align_md == null ) {
2644
+                $classes[] = sanitize_html_class( str_replace( '-lg', '', $args['text_align_lg'] ) );
2645
+            } else {
2646
+                $classes[] = sanitize_html_class( $args['text_align_lg'] );
2647
+            }
2648
+        }
2649
+    }
2650
+
2651
+    // display
2652
+    if ( ! empty( $args['display'] ) ) {
2653
+        $classes[] = sanitize_html_class( $args['display'] );
2654
+        $display   = $args['display'];
2655
+    } else {
2656
+        $display = null;
2657
+    }
2658
+    if ( ! empty( $args['display_md'] ) && $args['display_md'] !== '' ) {
2659
+        $classes[]  = sanitize_html_class( $args['display_md'] );
2660
+        $display_md = $args['display_md'];
2661
+    } else {
2662
+        $display_md = null;
2663
+    }
2664
+    if ( ! empty( $args['display_lg'] ) && $args['display_lg'] !== '' ) {
2665
+        if ( $display == null && $display_md == null ) {
2666
+            $classes[] = sanitize_html_class( str_replace( '-lg', '', $args['display_lg'] ) );
2667
+        } else {
2668
+            $classes[] = sanitize_html_class( $args['display_lg'] );
2669
+        }
2670
+    }
2671
+
2672
+    // bgtus - background transparent until scroll
2673
+    if ( ! empty( $args['bgtus'] ) ) {
2674
+        $classes[] = sanitize_html_class( 'bg-transparent-until-scroll' );
2675
+    }
2676
+
2677
+    // cscos - change color scheme on scroll
2678
+    if ( ! empty( $args['bgtus'] ) && ! empty( $args['cscos'] ) ) {
2679
+        $classes[] = sanitize_html_class( 'color-scheme-flip-on-scroll' );
2680
+    }
2681
+
2682
+    // hover animations
2683
+    if ( ! empty( $args['hover_animations'] ) ) {
2684
+        $classes[] = sd_sanitize_html_classes( str_replace( ',', ' ', $args['hover_animations'] ) );
2685
+    }
2686
+
2687
+    // absolute_position
2688
+    if ( ! empty( $args['absolute_position'] ) ) {
2689
+        if ( 'top-left' === $args['absolute_position'] ) {
2690
+            $classes[] = 'start-0 top-0';
2691
+        } elseif ( 'top-center' === $args['absolute_position'] ) {
2692
+            $classes[] = 'start-50 top-0 translate-middle';
2693
+        } elseif ( 'top-right' === $args['absolute_position'] ) {
2694
+            $classes[] = 'end-0 top-0';
2695
+        } elseif ( 'center-left' === $args['absolute_position'] ) {
2696
+            $classes[] = 'start-0 top-50';
2697
+        } elseif ( 'center' === $args['absolute_position'] ) {
2698
+            $classes[] = 'start-50 top-50 translate-middle';
2699
+        } elseif ( 'center-right' === $args['absolute_position'] ) {
2700
+            $classes[] = 'end-0 top-50';
2701
+        } elseif ( 'bottom-left' === $args['absolute_position'] ) {
2702
+            $classes[] = 'start-0 bottom-0';
2703
+        } elseif ( 'bottom-center' === $args['absolute_position'] ) {
2704
+            $classes[] = 'start-50 bottom-0 translate-middle';
2705
+        } elseif ( 'bottom-right' === $args['absolute_position'] ) {
2706
+            $classes[] = 'end-0 bottom-0';
2707
+        }
2708
+    }
2709
+
2710
+    // build classes from build keys
2711
+    $build_keys = sd_get_class_build_keys();
2712
+    if ( ! empty( $build_keys ) ) {
2713
+        foreach ( $build_keys as $key ) {
2714
+
2715
+            if ( substr( $key, -4 ) == '-MTD' ) {
2716
+
2717
+                $k = str_replace( '-MTD', '', $key );
2718
+
2719
+                // Mobile, Tablet, Desktop
2720
+                if ( ! empty( $args[ $k ] ) && $args[ $k ] !== '' ) {
2721
+                    $classes[] = sanitize_html_class( $args[ $k ] );
2722
+                    $v         = $args[ $k ];
2723
+                } else {
2724
+                    $v = null;
2725
+                }
2726
+                if ( ! empty( $args[ $k . '_md' ] ) && $args[ $k . '_md' ] !== '' ) {
2727
+                    $classes[] = sanitize_html_class( $args[ $k . '_md' ] );
2728
+                    $v_md      = $args[ $k . '_md' ];
2729
+                } else {
2730
+                    $v_md = null;
2731
+                }
2732
+                if ( ! empty( $args[ $k . '_lg' ] ) && $args[ $k . '_lg' ] !== '' ) {
2733
+                    if ( $v == null && $v_md == null ) {
2734
+                        $classes[] = sanitize_html_class( str_replace( '-lg', '', $args[ $k . '_lg' ] ) );
2735
+                    } else {
2736
+                        $classes[] = sanitize_html_class( $args[ $k . '_lg' ] );
2737
+                    }
2738
+                }
2739
+            } else {
2740
+                if ( $key == 'font_size' && ! empty( $args[ $key ] ) && $args[ $key ] == 'custom' ) {
2741
+                    continue;
2742
+                }
2743
+                if ( ! empty( $args[ $key ] ) ) {
2744
+                    $classes[] = sd_sanitize_html_classes( $args[ $key ] );
2745
+                }
2746
+            }
2747
+        }
2748
+    }
2749
+
2750
+    if ( ! empty( $classes ) ) {
2751
+        $classes = array_unique( array_filter( array_map( 'trim', $classes ) ) );
2752
+    }
2753
+
2754
+    return implode( ' ', $classes );
2755 2755
 }
2756 2756
 
2757 2757
 /**
@@ -2763,90 +2763,90 @@  discard block
 block discarded – undo
2763 2763
  */
2764 2764
 function sd_build_aui_styles( $args ) {
2765 2765
 
2766
-	$styles = array();
2767
-
2768
-	// background color
2769
-	if ( ! empty( $args['bg'] ) && $args['bg'] !== '' ) {
2770
-		if ( $args['bg'] == 'custom-color' ) {
2771
-			$styles['background-color'] = $args['bg_color'];
2772
-		} elseif ( $args['bg'] == 'custom-gradient' ) {
2773
-			$styles['background-image'] = $args['bg_gradient'];
2774
-
2775
-			// use background on text.
2776
-			if ( ! empty( $args['bg_on_text'] ) && $args['bg_on_text'] ) {
2777
-				$styles['background-clip']         = 'text';
2778
-				$styles['-webkit-background-clip'] = 'text';
2779
-				$styles['text-fill-color']         = 'transparent';
2780
-				$styles['-webkit-text-fill-color'] = 'transparent';
2781
-			}
2782
-		}
2783
-	}
2784
-
2785
-	if ( ! empty( $args['bg_image'] ) && $args['bg_image'] !== '' ) {
2786
-		$hasImage = true;
2787
-		if ( ! empty( $styles['background-color'] ) && $args['bg'] == 'custom-color' ) {
2788
-			$styles['background-image']      = 'url(' . $args['bg_image'] . ')';
2789
-			$styles['background-blend-mode'] = 'overlay';
2790
-		} elseif ( ! empty( $styles['background-image'] ) && $args['bg'] == 'custom-gradient' ) {
2791
-			$styles['background-image'] .= ',url(' . $args['bg_image'] . ')';
2792
-		} elseif ( ! empty( $args['bg'] ) && $args['bg'] != '' && $args['bg'] != 'transparent' ) {
2793
-			// do nothing as we alreay have a preset
2794
-			$hasImage = false;
2795
-		} else {
2796
-			$styles['background-image'] = 'url(' . $args['bg_image'] . ')';
2797
-		}
2798
-
2799
-		if ( $hasImage ) {
2800
-			$styles['background-size'] = 'cover';
2801
-
2802
-			if ( ! empty( $args['bg_image_fixed'] ) && $args['bg_image_fixed'] ) {
2803
-				$styles['background-attachment'] = 'fixed';
2804
-			}
2805
-		}
2806
-
2807
-		if ( $hasImage && ! empty( $args['bg_image_xy'] ) && ! empty( $args['bg_image_xy']['x'] ) ) {
2808
-			$styles['background-position'] = ( $args['bg_image_xy']['x'] * 100 ) . '% ' . ( $args['bg_image_xy']['y'] * 100 ) . '%';
2809
-		}
2810
-	}
2811
-
2812
-	// sticky offset top
2813
-	if ( ! empty( $args['sticky_offset_top'] ) && $args['sticky_offset_top'] !== '' ) {
2814
-		$styles['top'] = absint( $args['sticky_offset_top'] );
2815
-	}
2816
-
2817
-	// sticky offset bottom
2818
-	if ( ! empty( $args['sticky_offset_bottom'] ) && $args['sticky_offset_bottom'] !== '' ) {
2819
-		$styles['bottom'] = absint( $args['sticky_offset_bottom'] );
2820
-	}
2821
-
2822
-	// font size
2823
-	if ( ! empty( $args['font_size_custom'] ) && $args['font_size_custom'] !== '' ) {
2824
-		$styles['font-size'] = (float) $args['font_size_custom'] . 'rem';
2825
-	}
2826
-
2827
-	// font color
2828
-	if ( ! empty( $args['text_color_custom'] ) && $args['text_color_custom'] !== '' ) {
2829
-		$styles['color'] = esc_attr( $args['text_color_custom'] );
2830
-	}
2831
-
2832
-	// font line height
2833
-	if ( ! empty( $args['font_line_height'] ) && $args['font_line_height'] !== '' ) {
2834
-		$styles['line-height'] = esc_attr( $args['font_line_height'] );
2835
-	}
2836
-
2837
-	// max height
2838
-	if ( ! empty( $args['max_height'] ) && $args['max_height'] !== '' ) {
2839
-		$styles['max-height'] = esc_attr( $args['max_height'] );
2840
-	}
2841
-
2842
-	$style_string = '';
2843
-	if ( ! empty( $styles ) ) {
2844
-		foreach ( $styles as $key => $val ) {
2845
-			$style_string .= esc_attr( $key ) . ':' . esc_attr( $val ) . ';';
2846
-		}
2847
-	}
2848
-
2849
-	return $style_string;
2766
+    $styles = array();
2767
+
2768
+    // background color
2769
+    if ( ! empty( $args['bg'] ) && $args['bg'] !== '' ) {
2770
+        if ( $args['bg'] == 'custom-color' ) {
2771
+            $styles['background-color'] = $args['bg_color'];
2772
+        } elseif ( $args['bg'] == 'custom-gradient' ) {
2773
+            $styles['background-image'] = $args['bg_gradient'];
2774
+
2775
+            // use background on text.
2776
+            if ( ! empty( $args['bg_on_text'] ) && $args['bg_on_text'] ) {
2777
+                $styles['background-clip']         = 'text';
2778
+                $styles['-webkit-background-clip'] = 'text';
2779
+                $styles['text-fill-color']         = 'transparent';
2780
+                $styles['-webkit-text-fill-color'] = 'transparent';
2781
+            }
2782
+        }
2783
+    }
2784
+
2785
+    if ( ! empty( $args['bg_image'] ) && $args['bg_image'] !== '' ) {
2786
+        $hasImage = true;
2787
+        if ( ! empty( $styles['background-color'] ) && $args['bg'] == 'custom-color' ) {
2788
+            $styles['background-image']      = 'url(' . $args['bg_image'] . ')';
2789
+            $styles['background-blend-mode'] = 'overlay';
2790
+        } elseif ( ! empty( $styles['background-image'] ) && $args['bg'] == 'custom-gradient' ) {
2791
+            $styles['background-image'] .= ',url(' . $args['bg_image'] . ')';
2792
+        } elseif ( ! empty( $args['bg'] ) && $args['bg'] != '' && $args['bg'] != 'transparent' ) {
2793
+            // do nothing as we alreay have a preset
2794
+            $hasImage = false;
2795
+        } else {
2796
+            $styles['background-image'] = 'url(' . $args['bg_image'] . ')';
2797
+        }
2798
+
2799
+        if ( $hasImage ) {
2800
+            $styles['background-size'] = 'cover';
2801
+
2802
+            if ( ! empty( $args['bg_image_fixed'] ) && $args['bg_image_fixed'] ) {
2803
+                $styles['background-attachment'] = 'fixed';
2804
+            }
2805
+        }
2806
+
2807
+        if ( $hasImage && ! empty( $args['bg_image_xy'] ) && ! empty( $args['bg_image_xy']['x'] ) ) {
2808
+            $styles['background-position'] = ( $args['bg_image_xy']['x'] * 100 ) . '% ' . ( $args['bg_image_xy']['y'] * 100 ) . '%';
2809
+        }
2810
+    }
2811
+
2812
+    // sticky offset top
2813
+    if ( ! empty( $args['sticky_offset_top'] ) && $args['sticky_offset_top'] !== '' ) {
2814
+        $styles['top'] = absint( $args['sticky_offset_top'] );
2815
+    }
2816
+
2817
+    // sticky offset bottom
2818
+    if ( ! empty( $args['sticky_offset_bottom'] ) && $args['sticky_offset_bottom'] !== '' ) {
2819
+        $styles['bottom'] = absint( $args['sticky_offset_bottom'] );
2820
+    }
2821
+
2822
+    // font size
2823
+    if ( ! empty( $args['font_size_custom'] ) && $args['font_size_custom'] !== '' ) {
2824
+        $styles['font-size'] = (float) $args['font_size_custom'] . 'rem';
2825
+    }
2826
+
2827
+    // font color
2828
+    if ( ! empty( $args['text_color_custom'] ) && $args['text_color_custom'] !== '' ) {
2829
+        $styles['color'] = esc_attr( $args['text_color_custom'] );
2830
+    }
2831
+
2832
+    // font line height
2833
+    if ( ! empty( $args['font_line_height'] ) && $args['font_line_height'] !== '' ) {
2834
+        $styles['line-height'] = esc_attr( $args['font_line_height'] );
2835
+    }
2836
+
2837
+    // max height
2838
+    if ( ! empty( $args['max_height'] ) && $args['max_height'] !== '' ) {
2839
+        $styles['max-height'] = esc_attr( $args['max_height'] );
2840
+    }
2841
+
2842
+    $style_string = '';
2843
+    if ( ! empty( $styles ) ) {
2844
+        foreach ( $styles as $key => $val ) {
2845
+            $style_string .= esc_attr( $key ) . ':' . esc_attr( $val ) . ';';
2846
+        }
2847
+    }
2848
+
2849
+    return $style_string;
2850 2850
 
2851 2851
 }
2852 2852
 
@@ -2859,34 +2859,34 @@  discard block
 block discarded – undo
2859 2859
  * @return string
2860 2860
  */
2861 2861
 function sd_build_hover_styles( $args, $is_preview = false ) {
2862
-	$rules = '';
2863
-	// text color
2864
-	if ( ! empty( $args['styleid'] ) ) {
2865
-		$styleid = $is_preview ? 'html .editor-styles-wrapper .' . esc_attr( $args['styleid'] ) : 'html .' . esc_attr( $args['styleid'] );
2866
-
2867
-		// text
2868
-		if ( ! empty( $args['text_color_hover'] ) ) {
2869
-			$key    = 'custom' === $args['text_color_hover'] && ! empty( $args['text_color_hover_custom'] ) ? 'text_color_hover_custom' : 'text_color_hover';
2870
-			$color  = sd_get_color_from_var( $args[ $key ] );
2871
-			$rules .= $styleid . ':hover {color: ' . $color . ' !important;} ';
2872
-		}
2873
-
2874
-		// bg
2875
-		if ( ! empty( $args['bg_hover'] ) ) {
2876
-			if ( 'custom-gradient' === $args['bg_hover'] ) {
2877
-				$color  = $args['bg_hover_gradient'];
2878
-				$rules .= $styleid . ':hover {background-image: ' . $color . ' !important;} ';
2879
-				$rules .= $styleid . '.btn:hover {border-color: transparent !important;} ';
2880
-			} else {
2881
-				$key    = 'custom-color' === $args['bg_hover'] ? 'bg_hover_color' : 'bg_hover';
2882
-				$color  = sd_get_color_from_var( $args[ $key ] );
2883
-				$rules .= $styleid . ':hover {background: ' . $color . ' !important;} ';
2884
-				$rules .= $styleid . '.btn:hover {border-color: ' . $color . ' !important;} ';
2885
-			}
2886
-		}
2887
-	}
2888
-
2889
-	return $rules ? '<style>' . $rules . '</style>' : '';
2862
+    $rules = '';
2863
+    // text color
2864
+    if ( ! empty( $args['styleid'] ) ) {
2865
+        $styleid = $is_preview ? 'html .editor-styles-wrapper .' . esc_attr( $args['styleid'] ) : 'html .' . esc_attr( $args['styleid'] );
2866
+
2867
+        // text
2868
+        if ( ! empty( $args['text_color_hover'] ) ) {
2869
+            $key    = 'custom' === $args['text_color_hover'] && ! empty( $args['text_color_hover_custom'] ) ? 'text_color_hover_custom' : 'text_color_hover';
2870
+            $color  = sd_get_color_from_var( $args[ $key ] );
2871
+            $rules .= $styleid . ':hover {color: ' . $color . ' !important;} ';
2872
+        }
2873
+
2874
+        // bg
2875
+        if ( ! empty( $args['bg_hover'] ) ) {
2876
+            if ( 'custom-gradient' === $args['bg_hover'] ) {
2877
+                $color  = $args['bg_hover_gradient'];
2878
+                $rules .= $styleid . ':hover {background-image: ' . $color . ' !important;} ';
2879
+                $rules .= $styleid . '.btn:hover {border-color: transparent !important;} ';
2880
+            } else {
2881
+                $key    = 'custom-color' === $args['bg_hover'] ? 'bg_hover_color' : 'bg_hover';
2882
+                $color  = sd_get_color_from_var( $args[ $key ] );
2883
+                $rules .= $styleid . ':hover {background: ' . $color . ' !important;} ';
2884
+                $rules .= $styleid . '.btn:hover {border-color: ' . $color . ' !important;} ';
2885
+            }
2886
+        }
2887
+    }
2888
+
2889
+    return $rules ? '<style>' . $rules . '</style>' : '';
2890 2890
 }
2891 2891
 
2892 2892
 /**
@@ -2898,12 +2898,12 @@  discard block
 block discarded – undo
2898 2898
  */
2899 2899
 function sd_get_color_from_var( $var ) {
2900 2900
 
2901
-	//sanitize_hex_color() @todo this does not cover transparency
2902
-	if ( strpos( $var, '#' ) === false ) {
2903
-		$var = defined( 'BLOCKSTRAP_BLOCKS_VERSION' ) ? 'var(--wp--preset--color--' . esc_attr( $var ) . ')' : 'var(--' . esc_attr( $var ) . ')';
2904
-	}
2901
+    //sanitize_hex_color() @todo this does not cover transparency
2902
+    if ( strpos( $var, '#' ) === false ) {
2903
+        $var = defined( 'BLOCKSTRAP_BLOCKS_VERSION' ) ? 'var(--wp--preset--color--' . esc_attr( $var ) . ')' : 'var(--' . esc_attr( $var ) . ')';
2904
+    }
2905 2905
 
2906
-	return $var;
2906
+    return $var;
2907 2907
 }
2908 2908
 
2909 2909
 /**
@@ -2915,19 +2915,19 @@  discard block
 block discarded – undo
2915 2915
  * @return string
2916 2916
  */
2917 2917
 function sd_sanitize_html_classes( $classes, $sep = ' ' ) {
2918
-	$return = '';
2918
+    $return = '';
2919 2919
 
2920
-	if ( ! is_array( $classes ) ) {
2921
-		$classes = explode( $sep, $classes );
2922
-	}
2920
+    if ( ! is_array( $classes ) ) {
2921
+        $classes = explode( $sep, $classes );
2922
+    }
2923 2923
 
2924
-	if ( ! empty( $classes ) ) {
2925
-		foreach ( $classes as $class ) {
2926
-			$return .= sanitize_html_class( $class ) . ' ';
2927
-		}
2928
-	}
2924
+    if ( ! empty( $classes ) ) {
2925
+        foreach ( $classes as $class ) {
2926
+            $return .= sanitize_html_class( $class ) . ' ';
2927
+        }
2928
+    }
2929 2929
 
2930
-	return $return;
2930
+    return $return;
2931 2931
 }
2932 2932
 
2933 2933
 
@@ -2937,40 +2937,40 @@  discard block
 block discarded – undo
2937 2937
  * @return void
2938 2938
  */
2939 2939
 function sd_get_class_build_keys() {
2940
-	$keys = array(
2941
-		'container',
2942
-		'position',
2943
-		'flex_direction',
2944
-		'shadow',
2945
-		'rounded',
2946
-		'nav_style',
2947
-		'horizontal_alignment',
2948
-		'nav_fill',
2949
-		'width',
2950
-		'font_weight',
2951
-		'font_size',
2952
-		'font_case',
2953
-		'css_class',
2954
-		'flex_align_items-MTD',
2955
-		'flex_justify_content-MTD',
2956
-		'flex_align_self-MTD',
2957
-		'flex_order-MTD',
2958
-		'styleid',
2959
-		'border_opacity',
2960
-		'border_width',
2961
-		'border_type',
2962
-		'opacity',
2963
-		'zindex',
2964
-		'flex_wrap-MTD',
2965
-		'h100',
2966
-		'overflow',
2967
-		'scrollbars',
2968
-		'float-MTD',
2969
-		'height-MTD',
2970
-		'width-MTD'
2971
-	);
2972
-
2973
-	return apply_filters( 'sd_class_build_keys', $keys );
2940
+    $keys = array(
2941
+        'container',
2942
+        'position',
2943
+        'flex_direction',
2944
+        'shadow',
2945
+        'rounded',
2946
+        'nav_style',
2947
+        'horizontal_alignment',
2948
+        'nav_fill',
2949
+        'width',
2950
+        'font_weight',
2951
+        'font_size',
2952
+        'font_case',
2953
+        'css_class',
2954
+        'flex_align_items-MTD',
2955
+        'flex_justify_content-MTD',
2956
+        'flex_align_self-MTD',
2957
+        'flex_order-MTD',
2958
+        'styleid',
2959
+        'border_opacity',
2960
+        'border_width',
2961
+        'border_type',
2962
+        'opacity',
2963
+        'zindex',
2964
+        'flex_wrap-MTD',
2965
+        'h100',
2966
+        'overflow',
2967
+        'scrollbars',
2968
+        'float-MTD',
2969
+        'height-MTD',
2970
+        'width-MTD'
2971
+    );
2972
+
2973
+    return apply_filters( 'sd_class_build_keys', $keys );
2974 2974
 }
2975 2975
 
2976 2976
 /**
@@ -2982,18 +2982,18 @@  discard block
 block discarded – undo
2982 2982
  * @return array
2983 2983
  */
2984 2984
 function sd_get_visibility_conditions_input( $type = 'visibility_conditions', $overwrite = array() ) {
2985
-	$defaults = array(
2986
-		'type'         => 'visibility_conditions',
2987
-		'title'        => __( 'Block Visibility', 'ayecode-connect' ),
2988
-		'button_title' => __( 'Set Block Visibility', 'ayecode-connect' ),
2989
-		'default'      => '',
2990
-		'desc_tip'     => true,
2991
-		'group'        => __( 'Visibility Conditions', 'ayecode-connect' ),
2992
-	);
2985
+    $defaults = array(
2986
+        'type'         => 'visibility_conditions',
2987
+        'title'        => __( 'Block Visibility', 'ayecode-connect' ),
2988
+        'button_title' => __( 'Set Block Visibility', 'ayecode-connect' ),
2989
+        'default'      => '',
2990
+        'desc_tip'     => true,
2991
+        'group'        => __( 'Visibility Conditions', 'ayecode-connect' ),
2992
+    );
2993 2993
 
2994
-	$input = wp_parse_args( $overwrite, $defaults );
2994
+    $input = wp_parse_args( $overwrite, $defaults );
2995 2995
 
2996
-	return $input;
2996
+    return $input;
2997 2997
 }
2998 2998
 
2999 2999
 /**
@@ -3005,24 +3005,24 @@  discard block
 block discarded – undo
3005 3005
  * @return array An array of roles.
3006 3006
  */
3007 3007
 function sd_user_roles_options( $exclude = array() ) {
3008
-	$user_roles = array();
3008
+    $user_roles = array();
3009 3009
 
3010
-	if ( !function_exists('get_editable_roles') ) {
3011
-		require_once( ABSPATH . '/wp-admin/includes/user.php' );
3012
-	}
3010
+    if ( !function_exists('get_editable_roles') ) {
3011
+        require_once( ABSPATH . '/wp-admin/includes/user.php' );
3012
+    }
3013 3013
 
3014
-	$roles = get_editable_roles();
3014
+    $roles = get_editable_roles();
3015 3015
 
3016
-	foreach ( $roles as $role => $data ) {
3017
-		if ( ! ( ! empty( $exclude ) && in_array( $role, $exclude ) ) ) {
3018
-			$user_roles[ esc_attr( $role ) ] = translate_user_role( $data['name'] );
3019
-		}
3020
-	}
3016
+    foreach ( $roles as $role => $data ) {
3017
+        if ( ! ( ! empty( $exclude ) && in_array( $role, $exclude ) ) ) {
3018
+            $user_roles[ esc_attr( $role ) ] = translate_user_role( $data['name'] );
3019
+        }
3020
+    }
3021 3021
 
3022
-	// Logged out as a custom role.
3023
-	$user_roles['logged_out'] = __( 'Guest (logged out)', 'ayecode-connect' );
3022
+    // Logged out as a custom role.
3023
+    $user_roles['logged_out'] = __( 'Guest (logged out)', 'ayecode-connect' );
3024 3024
 
3025
-	return apply_filters( 'sd_user_roles_options', $user_roles );
3025
+    return apply_filters( 'sd_user_roles_options', $user_roles );
3026 3026
 }
3027 3027
 
3028 3028
 /**
@@ -3033,18 +3033,18 @@  discard block
 block discarded – undo
3033 3033
  * @return array Rule options.
3034 3034
  */
3035 3035
 function sd_visibility_rules_options() {
3036
-	$options = array(
3037
-		'logged_in'  => __( 'Logged In', 'ayecode-connect' ),
3038
-		'logged_out' => __( 'Logged Out', 'ayecode-connect' ),
3039
-		'post_author'  => __( 'Post Author', 'ayecode-connect' ),
3040
-		'user_roles' => __( 'Specific User Roles', 'ayecode-connect' )
3041
-	);
3036
+    $options = array(
3037
+        'logged_in'  => __( 'Logged In', 'ayecode-connect' ),
3038
+        'logged_out' => __( 'Logged Out', 'ayecode-connect' ),
3039
+        'post_author'  => __( 'Post Author', 'ayecode-connect' ),
3040
+        'user_roles' => __( 'Specific User Roles', 'ayecode-connect' )
3041
+    );
3042 3042
 
3043
-	if ( class_exists( 'GeoDirectory' ) ) {
3044
-		$options['gd_field'] = __( 'GD Field', 'ayecode-connect' );
3045
-	}
3043
+    if ( class_exists( 'GeoDirectory' ) ) {
3044
+        $options['gd_field'] = __( 'GD Field', 'ayecode-connect' );
3045
+    }
3046 3046
 
3047
-	return apply_filters( 'sd_visibility_rules_options', $options );
3047
+    return apply_filters( 'sd_visibility_rules_options', $options );
3048 3048
 }
3049 3049
 
3050 3050
 /**
@@ -3053,39 +3053,39 @@  discard block
 block discarded – undo
3053 3053
  * @return array
3054 3054
  */
3055 3055
 function sd_visibility_gd_field_options() {
3056
-	$fields = geodir_post_custom_fields( '', 'all', 'all', 'none' );
3056
+    $fields = geodir_post_custom_fields( '', 'all', 'all', 'none' );
3057 3057
 
3058
-	$keys = array();
3059
-	if ( ! empty( $fields ) ) {
3060
-		foreach( $fields as $field ) {
3061
-			if ( apply_filters( 'geodir_badge_field_skip_key', false, $field ) ) {
3062
-				continue;
3063
-			}
3058
+    $keys = array();
3059
+    if ( ! empty( $fields ) ) {
3060
+        foreach( $fields as $field ) {
3061
+            if ( apply_filters( 'geodir_badge_field_skip_key', false, $field ) ) {
3062
+                continue;
3063
+            }
3064 3064
 
3065
-			$keys[ $field['htmlvar_name'] ] = $field['htmlvar_name'] . ' ( ' . __( $field['admin_title'], 'geodirectory' ) . ' )';
3065
+            $keys[ $field['htmlvar_name'] ] = $field['htmlvar_name'] . ' ( ' . __( $field['admin_title'], 'geodirectory' ) . ' )';
3066 3066
 
3067
-			// Extra address fields
3068
-			if ( $field['htmlvar_name'] == 'address' && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
3069
-				foreach ( $address_fields as $_field => $args ) {
3070
-					if ( $_field != 'map_directions' && $_field != 'street' ) {
3071
-						$keys[ $_field ] = $_field . ' ( ' . $args['frontend_title'] . ' )';
3072
-					}
3073
-				}
3074
-			}
3075
-		}
3076
-	}
3067
+            // Extra address fields
3068
+            if ( $field['htmlvar_name'] == 'address' && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
3069
+                foreach ( $address_fields as $_field => $args ) {
3070
+                    if ( $_field != 'map_directions' && $_field != 'street' ) {
3071
+                        $keys[ $_field ] = $_field . ' ( ' . $args['frontend_title'] . ' )';
3072
+                    }
3073
+                }
3074
+            }
3075
+        }
3076
+    }
3077 3077
 
3078
-	$standard_fields = sd_visibility_gd_standard_field_options();
3078
+    $standard_fields = sd_visibility_gd_standard_field_options();
3079 3079
 
3080
-	if ( ! empty( $standard_fields ) ) {
3081
-		foreach ( $standard_fields as $key => $option ) {
3082
-			$keys[ $key ] = $option;
3083
-		}
3084
-	}
3080
+    if ( ! empty( $standard_fields ) ) {
3081
+        foreach ( $standard_fields as $key => $option ) {
3082
+            $keys[ $key ] = $option;
3083
+        }
3084
+    }
3085 3085
 
3086
-	$options = apply_filters( 'geodir_badge_field_keys', $keys );
3086
+    $options = apply_filters( 'geodir_badge_field_keys', $keys );
3087 3087
 
3088
-	return apply_filters( 'sd_visibility_gd_field_options', $options );
3088
+    return apply_filters( 'sd_visibility_gd_field_options', $options );
3089 3089
 }
3090 3090
 
3091 3091
 /**
@@ -3094,17 +3094,17 @@  discard block
 block discarded – undo
3094 3094
  * @return array
3095 3095
  */
3096 3096
 function sd_visibility_gd_standard_field_options( $post_type = '' ) {
3097
-	$fields = sd_visibility_gd_standard_fields( $post_type );
3097
+    $fields = sd_visibility_gd_standard_fields( $post_type );
3098 3098
 
3099
-	$options = array();
3099
+    $options = array();
3100 3100
 
3101
-	foreach ( $fields as $key => $field ) {
3102
-		if ( ! empty( $field['frontend_title'] ) ) {
3103
-			$options[ $key ] = $key . ' ( ' . $field['frontend_title'] . ' )';
3104
-		}
3105
-	}
3101
+    foreach ( $fields as $key => $field ) {
3102
+        if ( ! empty( $field['frontend_title'] ) ) {
3103
+            $options[ $key ] = $key . ' ( ' . $field['frontend_title'] . ' )';
3104
+        }
3105
+    }
3106 3106
 
3107
-	return apply_filters( 'sd_visibility_gd_standard_field_options', $options, $fields );
3107
+    return apply_filters( 'sd_visibility_gd_standard_field_options', $options, $fields );
3108 3108
 }
3109 3109
 
3110 3110
 /**
@@ -3113,17 +3113,17 @@  discard block
 block discarded – undo
3113 3113
  * @return array
3114 3114
  */
3115 3115
 function sd_visibility_gd_standard_fields( $post_type = '' ) {
3116
-	$standard_fields = geodir_post_meta_standard_fields( $post_type );
3116
+    $standard_fields = geodir_post_meta_standard_fields( $post_type );
3117 3117
 
3118
-	$fields = array();
3118
+    $fields = array();
3119 3119
 
3120
-	foreach ( $standard_fields as $key => $field ) {
3121
-		if ( $key != 'post_link' && strpos( $key, 'event' ) === false && ! empty( $field['frontend_title'] ) ) {
3122
-			$fields[ $key ] = $field;
3123
-		}
3124
-	}
3120
+    foreach ( $standard_fields as $key => $field ) {
3121
+        if ( $key != 'post_link' && strpos( $key, 'event' ) === false && ! empty( $field['frontend_title'] ) ) {
3122
+            $fields[ $key ] = $field;
3123
+        }
3124
+    }
3125 3125
 
3126
-	return apply_filters( 'sd_visibility_gd_standard_fields', $fields );
3126
+    return apply_filters( 'sd_visibility_gd_standard_fields', $fields );
3127 3127
 }
3128 3128
 
3129 3129
 /**
@@ -3132,18 +3132,18 @@  discard block
 block discarded – undo
3132 3132
  * @return array
3133 3133
  */
3134 3134
 function sd_visibility_field_condition_options(){
3135
-	$options = array(
3136
-		'is_empty' => __( 'is empty', 'ayecode-connect' ),
3137
-		'is_not_empty' => __( 'is not empty', 'ayecode-connect' ),
3138
-		'is_equal' => __( 'is equal', 'ayecode-connect' ),
3139
-		'is_not_equal' => __( 'is not equal', 'ayecode-connect' ),
3140
-		'is_greater_than' => __( 'is greater than', 'ayecode-connect' ),
3141
-		'is_less_than' => __( 'is less than', 'ayecode-connect' ),
3142
-		'is_contains' => __( 'is contains', 'ayecode-connect' ),
3143
-		'is_not_contains' => __( 'is not contains', 'ayecode-connect' ),
3144
-	);
3135
+    $options = array(
3136
+        'is_empty' => __( 'is empty', 'ayecode-connect' ),
3137
+        'is_not_empty' => __( 'is not empty', 'ayecode-connect' ),
3138
+        'is_equal' => __( 'is equal', 'ayecode-connect' ),
3139
+        'is_not_equal' => __( 'is not equal', 'ayecode-connect' ),
3140
+        'is_greater_than' => __( 'is greater than', 'ayecode-connect' ),
3141
+        'is_less_than' => __( 'is less than', 'ayecode-connect' ),
3142
+        'is_contains' => __( 'is contains', 'ayecode-connect' ),
3143
+        'is_not_contains' => __( 'is not contains', 'ayecode-connect' ),
3144
+    );
3145 3145
 
3146
-	return apply_filters( 'sd_visibility_field_condition_options', $options );
3146
+    return apply_filters( 'sd_visibility_field_condition_options', $options );
3147 3147
 }
3148 3148
 
3149 3149
 /**
@@ -3154,15 +3154,15 @@  discard block
 block discarded – undo
3154 3154
  * @return array Template type options.
3155 3155
  */
3156 3156
 function sd_visibility_output_options() {
3157
-	$options = array(
3158
-		''              => __( 'Show Block', 'ayecode-connect' ),
3159
-		'hide'          => __( 'Hide Block', 'ayecode-connect' ),
3160
-		'message'       => __( 'Show Custom Message', 'ayecode-connect' ),
3161
-		'page'          => __( 'Show Page Content', 'ayecode-connect' ),
3162
-		'template_part' => __( 'Show Template Part', 'ayecode-connect' ),
3163
-	);
3157
+    $options = array(
3158
+        ''              => __( 'Show Block', 'ayecode-connect' ),
3159
+        'hide'          => __( 'Hide Block', 'ayecode-connect' ),
3160
+        'message'       => __( 'Show Custom Message', 'ayecode-connect' ),
3161
+        'page'          => __( 'Show Page Content', 'ayecode-connect' ),
3162
+        'template_part' => __( 'Show Template Part', 'ayecode-connect' ),
3163
+    );
3164 3164
 
3165
-	return apply_filters( 'sd_visibility_output_options', $options );
3165
+    return apply_filters( 'sd_visibility_output_options', $options );
3166 3166
 }
3167 3167
 
3168 3168
 /**
@@ -3174,73 +3174,73 @@  discard block
 block discarded – undo
3174 3174
  * @return array Template page options.
3175 3175
  */
3176 3176
 function sd_template_page_options( $args = array() ) {
3177
-	global $wpdb, $sd_tmpl_page_options;
3177
+    global $wpdb, $sd_tmpl_page_options;
3178 3178
 
3179
-	$defaults = array(
3180
-		'nocache' => false,
3181
-		'with_slug' => false,
3182
-		'default_label' => __( 'Select Page...', 'ayecode-connect' )
3183
-	);
3179
+    $defaults = array(
3180
+        'nocache' => false,
3181
+        'with_slug' => false,
3182
+        'default_label' => __( 'Select Page...', 'ayecode-connect' )
3183
+    );
3184 3184
 
3185
-	$args = wp_parse_args( $args, $defaults );
3185
+    $args = wp_parse_args( $args, $defaults );
3186 3186
 
3187
-	if ( ! empty( $sd_tmpl_page_options ) && empty( $args['nocache'] ) ) {
3188
-		return $sd_tmpl_page_options;
3189
-	}
3187
+    if ( ! empty( $sd_tmpl_page_options ) && empty( $args['nocache'] ) ) {
3188
+        return $sd_tmpl_page_options;
3189
+    }
3190 3190
 
3191
-	$exclude_pages = array();
3192
-	if ( $page_on_front = get_option( 'page_on_front' ) ) {
3193
-		$exclude_pages[] = $page_on_front;
3194
-	}
3191
+    $exclude_pages = array();
3192
+    if ( $page_on_front = get_option( 'page_on_front' ) ) {
3193
+        $exclude_pages[] = $page_on_front;
3194
+    }
3195 3195
 
3196
-	if ( $page_for_posts = get_option( 'page_for_posts' ) ) {
3197
-		$exclude_pages[] = $page_for_posts;
3198
-	}
3196
+    if ( $page_for_posts = get_option( 'page_for_posts' ) ) {
3197
+        $exclude_pages[] = $page_for_posts;
3198
+    }
3199 3199
 
3200
-	$exclude_pages_placeholders = '';
3201
-	if ( ! empty( $exclude_pages ) ) {
3202
-		// Sanitize the array of excluded pages and implode it for the SQL query.
3203
-		$exclude_pages_placeholders = implode( ',', array_fill( 0, count( $exclude_pages ), '%d' ) );
3204
-	}
3200
+    $exclude_pages_placeholders = '';
3201
+    if ( ! empty( $exclude_pages ) ) {
3202
+        // Sanitize the array of excluded pages and implode it for the SQL query.
3203
+        $exclude_pages_placeholders = implode( ',', array_fill( 0, count( $exclude_pages ), '%d' ) );
3204
+    }
3205 3205
 
3206
-	// Prepare the base SQL query.
3207
-	$sql = "SELECT ID, post_title, post_name FROM " . $wpdb->posts . " WHERE post_type = 'page' AND post_status = 'publish'";
3206
+    // Prepare the base SQL query.
3207
+    $sql = "SELECT ID, post_title, post_name FROM " . $wpdb->posts . " WHERE post_type = 'page' AND post_status = 'publish'";
3208 3208
 
3209
-	// Add the exclusion if there are pages to exclude
3210
-	if ( ! empty( $exclude_pages ) ) {
3211
-		$sql .= " AND ID NOT IN ($exclude_pages_placeholders)";
3212
-	}
3209
+    // Add the exclusion if there are pages to exclude
3210
+    if ( ! empty( $exclude_pages ) ) {
3211
+        $sql .= " AND ID NOT IN ($exclude_pages_placeholders)";
3212
+    }
3213 3213
 
3214
-	// Add sorting.
3215
-	$sql .= " ORDER BY post_title ASC";
3214
+    // Add sorting.
3215
+    $sql .= " ORDER BY post_title ASC";
3216 3216
 
3217
-	// Add a limit.
3218
-	$limit = (int) apply_filters( 'sd_template_page_options_limit', 500, $args );
3217
+    // Add a limit.
3218
+    $limit = (int) apply_filters( 'sd_template_page_options_limit', 500, $args );
3219 3219
 
3220
-	if ( $limit > 0 ) {
3221
-		$sql .= " LIMIT " . (int) $limit;
3222
-	}
3220
+    if ( $limit > 0 ) {
3221
+        $sql .= " LIMIT " . (int) $limit;
3222
+    }
3223 3223
 
3224
-	// Prepare the SQL query to include the excluded pages only if we have placeholders.
3225
-	$pages = $exclude_pages_placeholders ? $wpdb->get_results( $wpdb->prepare( $sql, ...$exclude_pages ) ) : $wpdb->get_results( $sql );
3224
+    // Prepare the SQL query to include the excluded pages only if we have placeholders.
3225
+    $pages = $exclude_pages_placeholders ? $wpdb->get_results( $wpdb->prepare( $sql, ...$exclude_pages ) ) : $wpdb->get_results( $sql );
3226 3226
 
3227
-	if ( ! empty( $args['default_label'] ) ) {
3228
-		$options = array( '' => $args['default_label'] );
3229
-	} else {
3230
-		$options = array();
3231
-	}
3227
+    if ( ! empty( $args['default_label'] ) ) {
3228
+        $options = array( '' => $args['default_label'] );
3229
+    } else {
3230
+        $options = array();
3231
+    }
3232 3232
 
3233
-	if ( ! empty( $pages ) ) {
3234
-		foreach ( $pages as $page ) {
3235
-			$title = ! empty( $args['with_slug'] ) ? $page->post_title . ' (' . $page->post_name . ')' : ( $page->post_title . ' (#' . $page->ID . ')' );
3233
+    if ( ! empty( $pages ) ) {
3234
+        foreach ( $pages as $page ) {
3235
+            $title = ! empty( $args['with_slug'] ) ? $page->post_title . ' (' . $page->post_name . ')' : ( $page->post_title . ' (#' . $page->ID . ')' );
3236 3236
 
3237
-			$options[ $page->ID ] = $title;
3238
-		}
3239
-	}
3237
+            $options[ $page->ID ] = $title;
3238
+        }
3239
+    }
3240 3240
 
3241
-	$sd_tmpl_page_options = $options;
3241
+    $sd_tmpl_page_options = $options;
3242 3242
 
3243
-	return apply_filters( 'sd_template_page_options', $options, $args );
3243
+    return apply_filters( 'sd_template_page_options', $options, $args );
3244 3244
 }
3245 3245
 
3246 3246
 /**
@@ -3252,25 +3252,25 @@  discard block
 block discarded – undo
3252 3252
  * @return array Template part options.
3253 3253
  */
3254 3254
 function sd_template_part_options( $args = array() ) {
3255
-	global $sd_tmpl_part_options;
3255
+    global $sd_tmpl_part_options;
3256 3256
 
3257
-	if ( ! empty( $sd_tmpl_part_options ) ) {
3258
-		return $sd_tmpl_part_options;
3259
-	}
3257
+    if ( ! empty( $sd_tmpl_part_options ) ) {
3258
+        return $sd_tmpl_part_options;
3259
+    }
3260 3260
 
3261
-	$options = array( '' => __( 'Select Template Part...', 'ayecode-connect' ) );
3261
+    $options = array( '' => __( 'Select Template Part...', 'ayecode-connect' ) );
3262 3262
 
3263
-	$parts = get_block_templates( array(), 'wp_template_part' );
3263
+    $parts = get_block_templates( array(), 'wp_template_part' );
3264 3264
 
3265
-	if ( ! empty( $parts ) ) {
3266
-		foreach ( $parts as $part ) {
3267
-			$options[ $part->slug ] = $part->title . ' (#' . $part->slug . ')';
3268
-		}
3269
-	}
3265
+    if ( ! empty( $parts ) ) {
3266
+        foreach ( $parts as $part ) {
3267
+            $options[ $part->slug ] = $part->title . ' (#' . $part->slug . ')';
3268
+        }
3269
+    }
3270 3270
 
3271
-	$sd_tmpl_part_options = $options;
3271
+    $sd_tmpl_part_options = $options;
3272 3272
 
3273
-	return apply_filters( 'sd_template_part_options', $options, $args );
3273
+    return apply_filters( 'sd_template_part_options', $options, $args );
3274 3274
 }
3275 3275
 
3276 3276
 /**
@@ -3282,25 +3282,25 @@  discard block
 block discarded – undo
3282 3282
  * @return array Template part object.
3283 3283
  */
3284 3284
 function sd_get_template_part_by_slug( $slug ) {
3285
-	global $bs_tmpl_part_by_slug;
3285
+    global $bs_tmpl_part_by_slug;
3286 3286
 
3287
-	if ( empty( $bs_tmpl_part_by_slug ) ) {
3288
-		$bs_tmpl_part_by_slug = array();
3289
-	}
3287
+    if ( empty( $bs_tmpl_part_by_slug ) ) {
3288
+        $bs_tmpl_part_by_slug = array();
3289
+    }
3290 3290
 
3291
-	if ( isset( $bs_tmpl_part_by_slug[ $slug ] ) ) {
3292
-		return $bs_tmpl_part_by_slug[ $slug ];
3293
-	}
3291
+    if ( isset( $bs_tmpl_part_by_slug[ $slug ] ) ) {
3292
+        return $bs_tmpl_part_by_slug[ $slug ];
3293
+    }
3294 3294
 
3295
-	$template_query = get_block_templates( array( 'slug__in' => array( $slug ) ), 'wp_template_part' );
3295
+    $template_query = get_block_templates( array( 'slug__in' => array( $slug ) ), 'wp_template_part' );
3296 3296
 
3297
-	$query_post = ! empty( $template_query ) ? $template_query[0] : array();
3297
+    $query_post = ! empty( $template_query ) ? $template_query[0] : array();
3298 3298
 
3299
-	$template_part = ! empty( $query_post ) && $query_post->status == 'publish' ? $query_post : array();
3299
+    $template_part = ! empty( $query_post ) && $query_post->status == 'publish' ? $query_post : array();
3300 3300
 
3301
-	$bs_tmpl_part_by_slug[ $slug ] = $template_part;
3301
+    $bs_tmpl_part_by_slug[ $slug ] = $template_part;
3302 3302
 
3303
-	return apply_filters( 'sd_get_template_part_by_slug', $template_part, $slug );
3303
+    return apply_filters( 'sd_get_template_part_by_slug', $template_part, $slug );
3304 3304
 }
3305 3305
 
3306 3306
 /**
@@ -3313,511 +3313,511 @@  discard block
 block discarded – undo
3313 3313
  * @param WP_Block $instance      The block instance.
3314 3314
  */
3315 3315
 function sd_render_block( $block_content, $block, $instance = '' ) {
3316
-	// No block visibility conditions set.
3317
-	if ( empty( $block['attrs']['visibility_conditions'] ) ) {
3318
-		return $block_content;
3319
-	}
3320
-
3321
-	$attributes = json_decode( $block['attrs']['visibility_conditions'], true );
3322
-	$rules = ! empty( $attributes ) ? sd_block_parse_rules( $attributes ) : array();
3323
-
3324
-	// remove rules with missing validators.
3325
-	$valid_rules = sd_visibility_rules_options();
3326
-
3327
-	if ( ! empty( $rules ) ) {
3328
-		foreach ( $rules as $key => $rule ) {
3329
-			if ( ! isset( $valid_rules[ $rule['type'] ] ) ) {
3330
-				unset( $rules[ $key ] );
3331
-			}
3332
-		}
3333
-	}
3334
-
3335
-	// No rules set.
3336
-	if ( empty( $rules ) ) {
3337
-		return $block_content;
3338
-	}
3339
-
3340
-	$check_rules = null;
3341
-	$_block_content = $block_content;
3342
-
3343
-	if ( ! empty( $rules ) && ( ! empty( $attributes['output'] ) || ! empty( $attributes['outputN'] ) ) ) {
3344
-		$check_rules = sd_block_check_rules( $rules );
3345
-
3346
-		if ( $check_rules ) {
3347
-			$output_condition = ! empty( $attributes['output'] ) ? $attributes['output'] : array();
3348
-		} else {
3349
-			$output_condition = ! empty( $attributes['outputN'] ) ? $attributes['outputN'] : array();
3350
-		}
3351
-
3352
-		if ( ! empty( $output_condition ) && ! empty( $output_condition['type'] ) ) {
3353
-			switch ( $output_condition['type'] ) {
3354
-				case 'hide':
3355
-					$valid_type = true;
3356
-					$content = '';
3357
-
3358
-					break;
3359
-				case 'message':
3360
-					$valid_type = true;
3361
-
3362
-					if ( isset( $output_condition['message'] ) ) {
3363
-						$content = $output_condition['message'] != '' ? __( stripslashes( $output_condition['message'] ), 'ayecode-connect' ) : $output_condition['message'];
3364
-
3365
-						if ( ! empty( $output_condition['message_type'] ) ) {
3366
-							$content = aui()->alert( array(
3367
-									'type'=> $output_condition['message_type'],
3368
-									'content'=> $content
3369
-								)
3370
-							);
3371
-						}
3372
-					}
3373
-
3374
-					break;
3375
-				case 'page':
3376
-					$valid_type = true;
3377
-
3378
-					$page_id = ! empty( $output_condition['page'] ) ? absint( $output_condition['page'] ) : 0;
3379
-					$content = sd_get_page_content( $page_id );
3380
-
3381
-					break;
3382
-				case 'template_part':
3383
-					$valid_type = true;
3384
-
3385
-					$template_part = ! empty( $output_condition['template_part'] ) ? $output_condition['template_part'] : '';
3386
-					$content = sd_get_template_part_content( $template_part );
3387
-
3388
-					break;
3389
-				default:
3390
-					$valid_type = false;
3391
-					break;
3392
-			}
3393
-
3394
-			if ( $valid_type ) {
3395
-				$block_content = '<div class="' . esc_attr( wp_get_block_default_classname( $instance->name ) ) . ' sd-block-has-rule' . ( $output_condition['type'] == 'hide' ? ' sd-block-hide-rule' : '' ) . '">' . $content . '</div>';
3396
-			}
3397
-		}
3398
-	}
3399
-
3400
-	return apply_filters( 'sd_render_block_visibility_content', $block_content, $_block_content, $attributes, $block, $instance, $check_rules );
3316
+    // No block visibility conditions set.
3317
+    if ( empty( $block['attrs']['visibility_conditions'] ) ) {
3318
+        return $block_content;
3319
+    }
3320
+
3321
+    $attributes = json_decode( $block['attrs']['visibility_conditions'], true );
3322
+    $rules = ! empty( $attributes ) ? sd_block_parse_rules( $attributes ) : array();
3323
+
3324
+    // remove rules with missing validators.
3325
+    $valid_rules = sd_visibility_rules_options();
3326
+
3327
+    if ( ! empty( $rules ) ) {
3328
+        foreach ( $rules as $key => $rule ) {
3329
+            if ( ! isset( $valid_rules[ $rule['type'] ] ) ) {
3330
+                unset( $rules[ $key ] );
3331
+            }
3332
+        }
3333
+    }
3334
+
3335
+    // No rules set.
3336
+    if ( empty( $rules ) ) {
3337
+        return $block_content;
3338
+    }
3339
+
3340
+    $check_rules = null;
3341
+    $_block_content = $block_content;
3342
+
3343
+    if ( ! empty( $rules ) && ( ! empty( $attributes['output'] ) || ! empty( $attributes['outputN'] ) ) ) {
3344
+        $check_rules = sd_block_check_rules( $rules );
3345
+
3346
+        if ( $check_rules ) {
3347
+            $output_condition = ! empty( $attributes['output'] ) ? $attributes['output'] : array();
3348
+        } else {
3349
+            $output_condition = ! empty( $attributes['outputN'] ) ? $attributes['outputN'] : array();
3350
+        }
3351
+
3352
+        if ( ! empty( $output_condition ) && ! empty( $output_condition['type'] ) ) {
3353
+            switch ( $output_condition['type'] ) {
3354
+                case 'hide':
3355
+                    $valid_type = true;
3356
+                    $content = '';
3357
+
3358
+                    break;
3359
+                case 'message':
3360
+                    $valid_type = true;
3361
+
3362
+                    if ( isset( $output_condition['message'] ) ) {
3363
+                        $content = $output_condition['message'] != '' ? __( stripslashes( $output_condition['message'] ), 'ayecode-connect' ) : $output_condition['message'];
3364
+
3365
+                        if ( ! empty( $output_condition['message_type'] ) ) {
3366
+                            $content = aui()->alert( array(
3367
+                                    'type'=> $output_condition['message_type'],
3368
+                                    'content'=> $content
3369
+                                )
3370
+                            );
3371
+                        }
3372
+                    }
3373
+
3374
+                    break;
3375
+                case 'page':
3376
+                    $valid_type = true;
3377
+
3378
+                    $page_id = ! empty( $output_condition['page'] ) ? absint( $output_condition['page'] ) : 0;
3379
+                    $content = sd_get_page_content( $page_id );
3380
+
3381
+                    break;
3382
+                case 'template_part':
3383
+                    $valid_type = true;
3384
+
3385
+                    $template_part = ! empty( $output_condition['template_part'] ) ? $output_condition['template_part'] : '';
3386
+                    $content = sd_get_template_part_content( $template_part );
3387
+
3388
+                    break;
3389
+                default:
3390
+                    $valid_type = false;
3391
+                    break;
3392
+            }
3393
+
3394
+            if ( $valid_type ) {
3395
+                $block_content = '<div class="' . esc_attr( wp_get_block_default_classname( $instance->name ) ) . ' sd-block-has-rule' . ( $output_condition['type'] == 'hide' ? ' sd-block-hide-rule' : '' ) . '">' . $content . '</div>';
3396
+            }
3397
+        }
3398
+    }
3399
+
3400
+    return apply_filters( 'sd_render_block_visibility_content', $block_content, $_block_content, $attributes, $block, $instance, $check_rules );
3401 3401
 }
3402 3402
 add_filter( 'render_block', 'sd_render_block', 9, 3 );
3403 3403
 
3404 3404
 function sd_get_page_content( $page_id ) {
3405
-	$content = $page_id > 0 ? get_post_field( 'post_content', (int) $page_id ) : '';
3405
+    $content = $page_id > 0 ? get_post_field( 'post_content', (int) $page_id ) : '';
3406 3406
 
3407
-	// Maybe bypass content
3408
-	$bypass_content = apply_filters( 'sd_bypass_page_content', '', $content, $page_id );
3409
-	if ( $bypass_content ) {
3410
-		return $bypass_content;
3411
-	}
3407
+    // Maybe bypass content
3408
+    $bypass_content = apply_filters( 'sd_bypass_page_content', '', $content, $page_id );
3409
+    if ( $bypass_content ) {
3410
+        return $bypass_content;
3411
+    }
3412 3412
 
3413
-	// Run the shortcodes on the content.
3414
-	$content = do_shortcode( $content );
3413
+    // Run the shortcodes on the content.
3414
+    $content = do_shortcode( $content );
3415 3415
 
3416
-	// Run block content if its available.
3417
-	if ( function_exists( 'do_blocks' ) ) {
3418
-		$content = do_blocks( $content );
3419
-	}
3416
+    // Run block content if its available.
3417
+    if ( function_exists( 'do_blocks' ) ) {
3418
+        $content = do_blocks( $content );
3419
+    }
3420 3420
 
3421
-	return apply_filters( 'sd_get_page_content', $content, $page_id );
3421
+    return apply_filters( 'sd_get_page_content', $content, $page_id );
3422 3422
 }
3423 3423
 
3424 3424
 function sd_get_template_part_content( $template_part ) {
3425
-	$template_part_post = $template_part ? sd_get_template_part_by_slug( $template_part ) : array();
3426
-	$content = ! empty( $template_part_post ) ? $template_part_post->content : '';
3425
+    $template_part_post = $template_part ? sd_get_template_part_by_slug( $template_part ) : array();
3426
+    $content = ! empty( $template_part_post ) ? $template_part_post->content : '';
3427 3427
 
3428
-	// Maybe bypass content
3429
-	$bypass_content = apply_filters( 'sd_bypass_template_part_content', '', $content, $template_part );
3430
-	if ( $bypass_content ) {
3431
-		return $bypass_content;
3432
-	}
3428
+    // Maybe bypass content
3429
+    $bypass_content = apply_filters( 'sd_bypass_template_part_content', '', $content, $template_part );
3430
+    if ( $bypass_content ) {
3431
+        return $bypass_content;
3432
+    }
3433 3433
 
3434
-	// Run the shortcodes on the content.
3435
-	$content = do_shortcode( $content );
3434
+    // Run the shortcodes on the content.
3435
+    $content = do_shortcode( $content );
3436 3436
 
3437
-	// Run block content if its available.
3438
-	if ( function_exists( 'do_blocks' ) ) {
3439
-		$content = do_blocks( $content );
3440
-	}
3437
+    // Run block content if its available.
3438
+    if ( function_exists( 'do_blocks' ) ) {
3439
+        $content = do_blocks( $content );
3440
+    }
3441 3441
 
3442
-	return apply_filters( 'sd_get_template_part_content', $content, $template_part );
3442
+    return apply_filters( 'sd_get_template_part_content', $content, $template_part );
3443 3443
 }
3444 3444
 
3445 3445
 function sd_block_parse_rules( $attrs ) {
3446
-	$rules = array();
3446
+    $rules = array();
3447 3447
 
3448
-	if ( ! empty( $attrs ) && is_array( $attrs ) ) {
3449
-		$attrs_keys = array_keys( $attrs );
3448
+    if ( ! empty( $attrs ) && is_array( $attrs ) ) {
3449
+        $attrs_keys = array_keys( $attrs );
3450 3450
 
3451
-		for ( $i = 1; $i <= count( $attrs_keys ); $i++ ) {
3452
-			if ( ! empty( $attrs[ 'rule' . $i ] ) && is_array( $attrs[ 'rule' . $i ] ) ) {
3453
-				$rules[] = $attrs[ 'rule' . $i ];
3454
-			}
3455
-		}
3456
-	}
3451
+        for ( $i = 1; $i <= count( $attrs_keys ); $i++ ) {
3452
+            if ( ! empty( $attrs[ 'rule' . $i ] ) && is_array( $attrs[ 'rule' . $i ] ) ) {
3453
+                $rules[] = $attrs[ 'rule' . $i ];
3454
+            }
3455
+        }
3456
+    }
3457 3457
 
3458
-	return apply_filters( 'sd_block_parse_rules', $rules, $attrs );
3458
+    return apply_filters( 'sd_block_parse_rules', $rules, $attrs );
3459 3459
 }
3460 3460
 
3461 3461
 function sd_block_check_rules( $rules ) {
3462
-	if ( ! ( is_array( $rules ) && ! empty( $rules ) ) ) {
3463
-		return true;
3464
-	}
3462
+    if ( ! ( is_array( $rules ) && ! empty( $rules ) ) ) {
3463
+        return true;
3464
+    }
3465 3465
 
3466
-	foreach ( $rules as $key => $rule ) {
3467
-		$match = apply_filters( 'sd_block_check_rule', true, $rule );
3466
+    foreach ( $rules as $key => $rule ) {
3467
+        $match = apply_filters( 'sd_block_check_rule', true, $rule );
3468 3468
 
3469
-		if ( ! $match ) {
3470
-			break;
3471
-		}
3472
-	}
3469
+        if ( ! $match ) {
3470
+            break;
3471
+        }
3472
+    }
3473 3473
 
3474
-	return apply_filters( 'sd_block_check_rules', $match, $rules );
3474
+    return apply_filters( 'sd_block_check_rules', $match, $rules );
3475 3475
 }
3476 3476
 
3477 3477
 function sd_block_check_rule( $match, $rule ) {
3478
-	global $post;
3479
-
3480
-	if ( $match && ! empty( $rule['type'] ) ) {
3481
-		switch ( $rule['type'] ) {
3482
-			case 'logged_in':
3483
-				$match = (bool) is_user_logged_in();
3484
-
3485
-				break;
3486
-			case 'logged_out':
3487
-				$match = ! is_user_logged_in();
3488
-
3489
-				break;
3490
-			case 'post_author':
3491
-				if ( ! empty( $post ) && $post->post_type != 'page' && ! empty( $post->post_author ) && is_user_logged_in() ) {
3492
-					$match = (int) $post->post_author === (int) get_current_user_id() ? true : false;
3493
-				} else {
3494
-					$match = false;
3495
-				}
3496
-
3497
-				break;
3498
-			case 'user_roles':
3499
-				$match = false;
3500
-
3501
-				if ( ! empty( $rule['user_roles'] ) ) {
3502
-					$user_roles = is_scalar( $rule['user_roles'] ) ? explode( ",", $rule['user_roles'] ) : $rule['user_roles'];
3503
-
3504
-					if ( is_array( $user_roles ) ) {
3505
-						$user_roles = array_filter( array_map( 'trim', $user_roles ) );
3506
-					}
3507
-
3508
-					if ( ! empty( $user_roles ) && is_array( $user_roles ) ) {
3509
-						if ( is_user_logged_in() && ( $current_user = wp_get_current_user() ) ) {
3510
-							$current_user_roles = $current_user->roles;
3511
-
3512
-							foreach ( $user_roles as $role ) {
3513
-								if ( in_array( $role, $current_user_roles ) ) {
3514
-									$match = true;
3515
-								}
3516
-							}
3517
-						} else {
3518
-							// Logged out role.
3519
-							if ( in_array( 'logged_out', $user_roles ) ) {
3520
-								$match = true;
3521
-							}
3522
-						}
3523
-					}
3524
-				}
3525
-
3526
-				break;
3527
-			case 'gd_field':
3528
-				$match = sd_block_check_rule_gd_field( $rule );
3529
-
3530
-				break;
3531
-
3532
-			default:
3533
-				$match = apply_filters( 'sd_block_check_custom_rule', $match, $rule );
3534
-				break;
3535
-		}
3536
-	}
3537
-
3538
-	return $match;
3478
+    global $post;
3479
+
3480
+    if ( $match && ! empty( $rule['type'] ) ) {
3481
+        switch ( $rule['type'] ) {
3482
+            case 'logged_in':
3483
+                $match = (bool) is_user_logged_in();
3484
+
3485
+                break;
3486
+            case 'logged_out':
3487
+                $match = ! is_user_logged_in();
3488
+
3489
+                break;
3490
+            case 'post_author':
3491
+                if ( ! empty( $post ) && $post->post_type != 'page' && ! empty( $post->post_author ) && is_user_logged_in() ) {
3492
+                    $match = (int) $post->post_author === (int) get_current_user_id() ? true : false;
3493
+                } else {
3494
+                    $match = false;
3495
+                }
3496
+
3497
+                break;
3498
+            case 'user_roles':
3499
+                $match = false;
3500
+
3501
+                if ( ! empty( $rule['user_roles'] ) ) {
3502
+                    $user_roles = is_scalar( $rule['user_roles'] ) ? explode( ",", $rule['user_roles'] ) : $rule['user_roles'];
3503
+
3504
+                    if ( is_array( $user_roles ) ) {
3505
+                        $user_roles = array_filter( array_map( 'trim', $user_roles ) );
3506
+                    }
3507
+
3508
+                    if ( ! empty( $user_roles ) && is_array( $user_roles ) ) {
3509
+                        if ( is_user_logged_in() && ( $current_user = wp_get_current_user() ) ) {
3510
+                            $current_user_roles = $current_user->roles;
3511
+
3512
+                            foreach ( $user_roles as $role ) {
3513
+                                if ( in_array( $role, $current_user_roles ) ) {
3514
+                                    $match = true;
3515
+                                }
3516
+                            }
3517
+                        } else {
3518
+                            // Logged out role.
3519
+                            if ( in_array( 'logged_out', $user_roles ) ) {
3520
+                                $match = true;
3521
+                            }
3522
+                        }
3523
+                    }
3524
+                }
3525
+
3526
+                break;
3527
+            case 'gd_field':
3528
+                $match = sd_block_check_rule_gd_field( $rule );
3529
+
3530
+                break;
3531
+
3532
+            default:
3533
+                $match = apply_filters( 'sd_block_check_custom_rule', $match, $rule );
3534
+                break;
3535
+        }
3536
+    }
3537
+
3538
+    return $match;
3539 3539
 }
3540 3540
 add_filter( 'sd_block_check_rule', 'sd_block_check_rule', 10, 2 );
3541 3541
 
3542 3542
 function sd_block_check_rule_gd_field( $rule ) {
3543
-	global $gd_post;
3544
-
3545
-	$match_found = false;
3546
-
3547
-	if ( class_exists( 'GeoDirectory' ) && ! empty( $gd_post->ID ) && ! empty( $rule['field'] ) && ! empty( $rule['condition'] ) ) {
3548
-		$args['block_visibility'] = true;
3549
-		$args['key'] = $rule['field'];
3550
-		$args['condition'] = $rule['condition'];
3551
-		$args['search'] = isset( $rule['search'] ) ? $rule['search'] : '';
3552
-
3553
-		if ( $args['key'] == 'street' ) {
3554
-			$args['key'] = 'address';
3555
-		}
3556
-
3557
-		$match_field = $_match_field = $args['key'];
3558
-
3559
-		if ( $match_field == 'address' ) {
3560
-			$match_field = 'street';
3561
-		} elseif ( $match_field == 'post_images' ) {
3562
-			$match_field = 'featured_image';
3563
-		}
3564
-
3565
-		$find_post = $gd_post;
3566
-		$find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3567
-
3568
-		if ( ! empty( $find_post->ID ) && ! in_array( 'post_category', $find_post_keys ) ) {
3569
-			$find_post = geodir_get_post_info( (int) $find_post->ID );
3570
-			$find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3571
-		}
3572
-
3573
-		if ( $match_field === '' || ( ! empty( $find_post_keys ) && ( in_array( $match_field, $find_post_keys ) || in_array( $_match_field, $find_post_keys ) ) ) ) {
3574
-			$address_fields = array( 'street2', 'neighbourhood', 'city', 'region', 'country', 'zip', 'latitude', 'longitude' ); // Address fields
3575
-			$field = array();
3576
-			$empty_field = false;
3577
-
3578
-			$standard_fields = sd_visibility_gd_standard_fields();
3579
-
3580
-			if ( $match_field && ! in_array( $match_field, array_keys( $standard_fields ) ) && ! in_array( $match_field, $address_fields ) ) {
3581
-				$package_id = geodir_get_post_package_id( $find_post->ID, $find_post->post_type );
3582
-				$fields = geodir_post_custom_fields( $package_id, 'all', $find_post->post_type, 'none' );
3583
-
3584
-				foreach ( $fields as $field_info ) {
3585
-					if ( $match_field == $field_info['htmlvar_name'] ) {
3586
-						$field = $field_info;
3587
-						break;
3588
-					} elseif( $_match_field == $field_info['htmlvar_name'] ) {
3589
-						$field = $field_info;
3590
-						break;
3591
-					}
3592
-				}
3593
-
3594
-				if ( empty( $field ) ) {
3595
-					$empty_field = true;
3596
-				}
3597
-			}
3598
-
3599
-			// Address fields.
3600
-			if ( in_array( $match_field, $address_fields ) && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
3601
-				if ( ! empty( $address_fields[ $match_field ] ) ) {
3602
-					$field = $address_fields[ $match_field ];
3603
-				}
3604
-			} else if ( in_array( $match_field, array_keys( $standard_fields ) ) ) {
3605
-				if ( ! empty( $standard_fields[ $match_field ] ) ) {
3606
-					$field = $standard_fields[ $match_field ];
3607
-				}
3608
-			}
3609
-
3610
-			// Parse search.
3611
-			$search = sd_gd_field_rule_search( $args['search'], $find_post->post_type, $rule, $field, $find_post );
3612
-
3613
-			$is_date = ( ! empty( $field['type'] ) && $field['type'] == 'datepicker' ) || in_array( $match_field, array( 'post_date', 'post_modified' ) ) ? true : false;
3614
-			$is_date = apply_filters( 'geodir_post_badge_is_date', $is_date, $match_field, $field, $args, $find_post );
3615
-
3616
-			$match_value = isset( $find_post->{$match_field} ) && empty( $empty_field ) ? esc_attr( trim( $find_post->{$match_field} ) ) : '';
3617
-			$match_found = $match_field === '' ? true : false;
3618
-
3619
-			if ( ! $match_found ) {
3620
-				if ( ( $match_field == 'post_date' || $match_field == 'post_modified' ) && ( empty( $args['condition'] ) || $args['condition'] == 'is_greater_than' || $args['condition'] == 'is_less_than' ) ) {
3621
-					if ( strpos( $search, '+' ) === false && strpos( $search, '-' ) === false ) {
3622
-						$search = '+' . $search;
3623
-					}
3624
-					$the_time = $match_field == 'post_modified' ? get_the_modified_date( 'Y-m-d', $find_post ) : get_the_time( 'Y-m-d', $find_post );
3625
-					$until_time = strtotime( $the_time . ' ' . $search . ' days' );
3626
-					$now_time   = strtotime( date_i18n( 'Y-m-d', current_time( 'timestamp' ) ) );
3627
-					if ( ( empty( $args['condition'] ) || $args['condition'] == 'is_less_than' ) && $until_time > $now_time ) {
3628
-						$match_found = true;
3629
-					} elseif ( $args['condition'] == 'is_greater_than' && $until_time < $now_time ) {
3630
-						$match_found = true;
3631
-					}
3632
-				} else {
3633
-					switch ( $args['condition'] ) {
3634
-						case 'is_equal':
3635
-							$match_found = (bool) ( $search != '' && $match_value == $search );
3636
-							break;
3637
-						case 'is_not_equal':
3638
-							$match_found = (bool) ( $search != '' && $match_value != $search );
3639
-							break;
3640
-						case 'is_greater_than':
3641
-							$match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value > $search );
3642
-							break;
3643
-						case 'is_less_than':
3644
-							$match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value < $search );
3645
-							break;
3646
-						case 'is_empty':
3647
-							$match_found = (bool) ( $match_value === '' || $match_value === false || $match_value === '0' || is_null( $match_value ) );
3648
-							break;
3649
-						case 'is_not_empty':
3650
-							$match_found = (bool) ( $match_value !== '' && $match_value !== false && $match_value !== '0' && ! is_null( $match_value ) );
3651
-							break;
3652
-						case 'is_contains':
3653
-							$match_found = (bool) ( $search != '' && stripos( $match_value, $search ) !== false );
3654
-							break;
3655
-						case 'is_not_contains':
3656
-							$match_found = (bool) ( $search != '' && stripos( $match_value, $search ) === false );
3657
-							break;
3658
-					}
3659
-				}
3660
-			}
3661
-
3662
-			$match_found = apply_filters( 'geodir_post_badge_check_match_found', $match_found, $args, $find_post );
3663
-		} else {
3664
-			$field = array();
3665
-
3666
-			// Parse search.
3667
-			$search = sd_gd_field_rule_search( $args['search'], $find_post->post_type, $rule, $field, $find_post );
3668
-
3669
-			$match_value = '';
3670
-			$match_found = $match_field === '' ? true : false;
3671
-
3672
-			if ( ! $match_found ) {
3673
-				switch ( $args['condition'] ) {
3674
-					case 'is_equal':
3675
-						$match_found = (bool) ( $search != '' && $match_value == $search );
3676
-						break;
3677
-					case 'is_not_equal':
3678
-						$match_found = (bool) ( $search != '' && $match_value != $search );
3679
-						break;
3680
-					case 'is_greater_than':
3681
-						$match_found = false;
3682
-						break;
3683
-					case 'is_less_than':
3684
-						$match_found = false;
3685
-						break;
3686
-					case 'is_empty':
3687
-						$match_found = true;
3688
-						break;
3689
-					case 'is_not_empty':
3690
-						$match_found = false;
3691
-						break;
3692
-					case 'is_contains':
3693
-						$match_found = false;
3694
-						break;
3695
-					case 'is_not_contains':
3696
-						$match_found = false;
3697
-						break;
3698
-				}
3699
-			}
3700
-
3701
-			$match_found = apply_filters( 'geodir_post_badge_check_match_found_empty', $match_found, $args, $find_post );
3702
-		}
3703
-	}
3704
-
3705
-	return $match_found;
3543
+    global $gd_post;
3544
+
3545
+    $match_found = false;
3546
+
3547
+    if ( class_exists( 'GeoDirectory' ) && ! empty( $gd_post->ID ) && ! empty( $rule['field'] ) && ! empty( $rule['condition'] ) ) {
3548
+        $args['block_visibility'] = true;
3549
+        $args['key'] = $rule['field'];
3550
+        $args['condition'] = $rule['condition'];
3551
+        $args['search'] = isset( $rule['search'] ) ? $rule['search'] : '';
3552
+
3553
+        if ( $args['key'] == 'street' ) {
3554
+            $args['key'] = 'address';
3555
+        }
3556
+
3557
+        $match_field = $_match_field = $args['key'];
3558
+
3559
+        if ( $match_field == 'address' ) {
3560
+            $match_field = 'street';
3561
+        } elseif ( $match_field == 'post_images' ) {
3562
+            $match_field = 'featured_image';
3563
+        }
3564
+
3565
+        $find_post = $gd_post;
3566
+        $find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3567
+
3568
+        if ( ! empty( $find_post->ID ) && ! in_array( 'post_category', $find_post_keys ) ) {
3569
+            $find_post = geodir_get_post_info( (int) $find_post->ID );
3570
+            $find_post_keys = ! empty( $find_post ) ? array_keys( (array) $find_post ) : array();
3571
+        }
3572
+
3573
+        if ( $match_field === '' || ( ! empty( $find_post_keys ) && ( in_array( $match_field, $find_post_keys ) || in_array( $_match_field, $find_post_keys ) ) ) ) {
3574
+            $address_fields = array( 'street2', 'neighbourhood', 'city', 'region', 'country', 'zip', 'latitude', 'longitude' ); // Address fields
3575
+            $field = array();
3576
+            $empty_field = false;
3577
+
3578
+            $standard_fields = sd_visibility_gd_standard_fields();
3579
+
3580
+            if ( $match_field && ! in_array( $match_field, array_keys( $standard_fields ) ) && ! in_array( $match_field, $address_fields ) ) {
3581
+                $package_id = geodir_get_post_package_id( $find_post->ID, $find_post->post_type );
3582
+                $fields = geodir_post_custom_fields( $package_id, 'all', $find_post->post_type, 'none' );
3583
+
3584
+                foreach ( $fields as $field_info ) {
3585
+                    if ( $match_field == $field_info['htmlvar_name'] ) {
3586
+                        $field = $field_info;
3587
+                        break;
3588
+                    } elseif( $_match_field == $field_info['htmlvar_name'] ) {
3589
+                        $field = $field_info;
3590
+                        break;
3591
+                    }
3592
+                }
3593
+
3594
+                if ( empty( $field ) ) {
3595
+                    $empty_field = true;
3596
+                }
3597
+            }
3598
+
3599
+            // Address fields.
3600
+            if ( in_array( $match_field, $address_fields ) && ( $address_fields = geodir_post_meta_address_fields( '' ) ) ) {
3601
+                if ( ! empty( $address_fields[ $match_field ] ) ) {
3602
+                    $field = $address_fields[ $match_field ];
3603
+                }
3604
+            } else if ( in_array( $match_field, array_keys( $standard_fields ) ) ) {
3605
+                if ( ! empty( $standard_fields[ $match_field ] ) ) {
3606
+                    $field = $standard_fields[ $match_field ];
3607
+                }
3608
+            }
3609
+
3610
+            // Parse search.
3611
+            $search = sd_gd_field_rule_search( $args['search'], $find_post->post_type, $rule, $field, $find_post );
3612
+
3613
+            $is_date = ( ! empty( $field['type'] ) && $field['type'] == 'datepicker' ) || in_array( $match_field, array( 'post_date', 'post_modified' ) ) ? true : false;
3614
+            $is_date = apply_filters( 'geodir_post_badge_is_date', $is_date, $match_field, $field, $args, $find_post );
3615
+
3616
+            $match_value = isset( $find_post->{$match_field} ) && empty( $empty_field ) ? esc_attr( trim( $find_post->{$match_field} ) ) : '';
3617
+            $match_found = $match_field === '' ? true : false;
3618
+
3619
+            if ( ! $match_found ) {
3620
+                if ( ( $match_field == 'post_date' || $match_field == 'post_modified' ) && ( empty( $args['condition'] ) || $args['condition'] == 'is_greater_than' || $args['condition'] == 'is_less_than' ) ) {
3621
+                    if ( strpos( $search, '+' ) === false && strpos( $search, '-' ) === false ) {
3622
+                        $search = '+' . $search;
3623
+                    }
3624
+                    $the_time = $match_field == 'post_modified' ? get_the_modified_date( 'Y-m-d', $find_post ) : get_the_time( 'Y-m-d', $find_post );
3625
+                    $until_time = strtotime( $the_time . ' ' . $search . ' days' );
3626
+                    $now_time   = strtotime( date_i18n( 'Y-m-d', current_time( 'timestamp' ) ) );
3627
+                    if ( ( empty( $args['condition'] ) || $args['condition'] == 'is_less_than' ) && $until_time > $now_time ) {
3628
+                        $match_found = true;
3629
+                    } elseif ( $args['condition'] == 'is_greater_than' && $until_time < $now_time ) {
3630
+                        $match_found = true;
3631
+                    }
3632
+                } else {
3633
+                    switch ( $args['condition'] ) {
3634
+                        case 'is_equal':
3635
+                            $match_found = (bool) ( $search != '' && $match_value == $search );
3636
+                            break;
3637
+                        case 'is_not_equal':
3638
+                            $match_found = (bool) ( $search != '' && $match_value != $search );
3639
+                            break;
3640
+                        case 'is_greater_than':
3641
+                            $match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value > $search );
3642
+                            break;
3643
+                        case 'is_less_than':
3644
+                            $match_found = (bool) ( $search != '' && ( is_float( $search ) || is_numeric( $search ) ) && ( is_float( $match_value ) || is_numeric( $match_value ) ) && $match_value < $search );
3645
+                            break;
3646
+                        case 'is_empty':
3647
+                            $match_found = (bool) ( $match_value === '' || $match_value === false || $match_value === '0' || is_null( $match_value ) );
3648
+                            break;
3649
+                        case 'is_not_empty':
3650
+                            $match_found = (bool) ( $match_value !== '' && $match_value !== false && $match_value !== '0' && ! is_null( $match_value ) );
3651
+                            break;
3652
+                        case 'is_contains':
3653
+                            $match_found = (bool) ( $search != '' && stripos( $match_value, $search ) !== false );
3654
+                            break;
3655
+                        case 'is_not_contains':
3656
+                            $match_found = (bool) ( $search != '' && stripos( $match_value, $search ) === false );
3657
+                            break;
3658
+                    }
3659
+                }
3660
+            }
3661
+
3662
+            $match_found = apply_filters( 'geodir_post_badge_check_match_found', $match_found, $args, $find_post );
3663
+        } else {
3664
+            $field = array();
3665
+
3666
+            // Parse search.
3667
+            $search = sd_gd_field_rule_search( $args['search'], $find_post->post_type, $rule, $field, $find_post );
3668
+
3669
+            $match_value = '';
3670
+            $match_found = $match_field === '' ? true : false;
3671
+
3672
+            if ( ! $match_found ) {
3673
+                switch ( $args['condition'] ) {
3674
+                    case 'is_equal':
3675
+                        $match_found = (bool) ( $search != '' && $match_value == $search );
3676
+                        break;
3677
+                    case 'is_not_equal':
3678
+                        $match_found = (bool) ( $search != '' && $match_value != $search );
3679
+                        break;
3680
+                    case 'is_greater_than':
3681
+                        $match_found = false;
3682
+                        break;
3683
+                    case 'is_less_than':
3684
+                        $match_found = false;
3685
+                        break;
3686
+                    case 'is_empty':
3687
+                        $match_found = true;
3688
+                        break;
3689
+                    case 'is_not_empty':
3690
+                        $match_found = false;
3691
+                        break;
3692
+                    case 'is_contains':
3693
+                        $match_found = false;
3694
+                        break;
3695
+                    case 'is_not_contains':
3696
+                        $match_found = false;
3697
+                        break;
3698
+                }
3699
+            }
3700
+
3701
+            $match_found = apply_filters( 'geodir_post_badge_check_match_found_empty', $match_found, $args, $find_post );
3702
+        }
3703
+    }
3704
+
3705
+    return $match_found;
3706 3706
 }
3707 3707
 
3708 3708
 function sd_gd_field_rule_search( $search, $post_type, $rule, $field = array(), $gd_post = array() ) {
3709
-	global $post;
3710
-
3711
-	if ( ! $search ) {
3712
-		return $search;
3713
-	}
3714
-
3715
-	$orig_search = $search;
3716
-	$_search = strtolower( $search );
3717
-
3718
-	if ( ! empty( $rule['field'] ) && $rule['field'] == 'post_author' ) {
3719
-		if ( $search == 'current_user' ) {
3720
-			$search = is_user_logged_in() ? (int) get_current_user_id() : - 1;
3721
-		} else if ( $search == 'current_author' ) {
3722
-			$search = ( ! empty( $post ) && $post->post_type != 'page' && isset( $post->post_author ) ) ? absint( $post->post_author ) : - 1;
3723
-		}
3724
-	} else if ( $_search == 'date_today' ) {
3725
-		$search = date( 'Y-m-d' );
3726
-	} else if ( $_search == 'date_tomorrow' ) {
3727
-		$search = date( 'Y-m-d', strtotime( "+1 day" ) );
3728
-	} else if ( $_search == 'date_yesterday' ) {
3729
-		$search = date( 'Y-m-d', strtotime( "-1 day" ) );
3730
-	} else if ( $_search == 'time_his' ) {
3731
-		$search = date( 'H:i:s' );
3732
-	} else if ( $_search == 'time_hi' ) {
3733
-		$search = date( 'H:i' );
3734
-	} else if ( $_search == 'datetime_now' ) {
3735
-		$search = date( 'Y-m-d H:i:s' );
3736
-	} else if ( strpos( $_search, 'datetime_after_' ) === 0 ) {
3737
-		$_searches = explode( 'datetime_after_', $_search, 2 );
3738
-
3739
-		if ( ! empty( $_searches[1] ) ) {
3740
-			$search = date( 'Y-m-d H:i:s', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3741
-		} else {
3742
-			$search = date( 'Y-m-d H:i:s' );
3743
-		}
3744
-	} else if ( strpos( $_search, 'datetime_before_' ) === 0 ) {
3745
-		$_searches = explode( 'datetime_before_', $_search, 2 );
3746
-
3747
-		if ( ! empty( $_searches[1] ) ) {
3748
-			$search = date( 'Y-m-d H:i:s', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3749
-		} else {
3750
-			$search = date( 'Y-m-d H:i:s' );
3751
-		}
3752
-	} else if ( strpos( $_search, 'date_after_' ) === 0 ) {
3753
-		$_searches = explode( 'date_after_', $_search, 2 );
3754
-
3755
-		if ( ! empty( $_searches[1] ) ) {
3756
-			$search = date( 'Y-m-d', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3757
-		} else {
3758
-			$search = date( 'Y-m-d' );
3759
-		}
3760
-	} else if ( strpos( $_search, 'date_before_' ) === 0 ) {
3761
-		$_searches = explode( 'date_before_', $_search, 2 );
3762
-
3763
-		if ( ! empty( $_searches[1] ) ) {
3764
-			$search = date( 'Y-m-d', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3765
-		} else {
3766
-			$search = date( 'Y-m-d' );
3767
-		}
3768
-	}
3769
-
3770
-	return apply_filters( 'sd_gd_field_rule_search', $search, $post_type, $rule, $orig_search );
3709
+    global $post;
3710
+
3711
+    if ( ! $search ) {
3712
+        return $search;
3713
+    }
3714
+
3715
+    $orig_search = $search;
3716
+    $_search = strtolower( $search );
3717
+
3718
+    if ( ! empty( $rule['field'] ) && $rule['field'] == 'post_author' ) {
3719
+        if ( $search == 'current_user' ) {
3720
+            $search = is_user_logged_in() ? (int) get_current_user_id() : - 1;
3721
+        } else if ( $search == 'current_author' ) {
3722
+            $search = ( ! empty( $post ) && $post->post_type != 'page' && isset( $post->post_author ) ) ? absint( $post->post_author ) : - 1;
3723
+        }
3724
+    } else if ( $_search == 'date_today' ) {
3725
+        $search = date( 'Y-m-d' );
3726
+    } else if ( $_search == 'date_tomorrow' ) {
3727
+        $search = date( 'Y-m-d', strtotime( "+1 day" ) );
3728
+    } else if ( $_search == 'date_yesterday' ) {
3729
+        $search = date( 'Y-m-d', strtotime( "-1 day" ) );
3730
+    } else if ( $_search == 'time_his' ) {
3731
+        $search = date( 'H:i:s' );
3732
+    } else if ( $_search == 'time_hi' ) {
3733
+        $search = date( 'H:i' );
3734
+    } else if ( $_search == 'datetime_now' ) {
3735
+        $search = date( 'Y-m-d H:i:s' );
3736
+    } else if ( strpos( $_search, 'datetime_after_' ) === 0 ) {
3737
+        $_searches = explode( 'datetime_after_', $_search, 2 );
3738
+
3739
+        if ( ! empty( $_searches[1] ) ) {
3740
+            $search = date( 'Y-m-d H:i:s', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3741
+        } else {
3742
+            $search = date( 'Y-m-d H:i:s' );
3743
+        }
3744
+    } else if ( strpos( $_search, 'datetime_before_' ) === 0 ) {
3745
+        $_searches = explode( 'datetime_before_', $_search, 2 );
3746
+
3747
+        if ( ! empty( $_searches[1] ) ) {
3748
+            $search = date( 'Y-m-d H:i:s', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3749
+        } else {
3750
+            $search = date( 'Y-m-d H:i:s' );
3751
+        }
3752
+    } else if ( strpos( $_search, 'date_after_' ) === 0 ) {
3753
+        $_searches = explode( 'date_after_', $_search, 2 );
3754
+
3755
+        if ( ! empty( $_searches[1] ) ) {
3756
+            $search = date( 'Y-m-d', strtotime( "+ " . str_replace( "_", " ", $_searches[1] ) ) );
3757
+        } else {
3758
+            $search = date( 'Y-m-d' );
3759
+        }
3760
+    } else if ( strpos( $_search, 'date_before_' ) === 0 ) {
3761
+        $_searches = explode( 'date_before_', $_search, 2 );
3762
+
3763
+        if ( ! empty( $_searches[1] ) ) {
3764
+            $search = date( 'Y-m-d', strtotime( "- " . str_replace( "_", " ", $_searches[1] ) ) );
3765
+        } else {
3766
+            $search = date( 'Y-m-d' );
3767
+        }
3768
+    }
3769
+
3770
+    return apply_filters( 'sd_gd_field_rule_search', $search, $post_type, $rule, $orig_search );
3771 3771
 }
3772 3772
 
3773 3773
 
3774 3774
 if(!function_exists('sd_blocks_render_blocks')){
3775
-	/**
3776
-	 * Add the shortcodes to the block content if set as an attribute.
3777
-	 *
3778
-	 * We have moved the shortcodes from the block content to a block argument to help prevent broken blocks.
3779
-	 *
3780
-	 * @param $block_content
3781
-	 * @param $parsed_block
3782
-	 * @param $thiss
3783
-	 * @return mixed|string
3784
-	 */
3785
-	function sd_blocks_render_blocks($block_content, $parsed_block, $thiss = array() ){
3786
-		// Check hide block visibility conditions.
3787
-		if ( ! empty( $parsed_block ) && ! empty( $parsed_block['attrs']['visibility_conditions'] ) && $block_content && strpos( strrev( $block_content ), strrev( ' sd-block-has-rule sd-block-hide-rule"></div>' ) ) === 0 && ! empty( $thiss ) && $thiss->name ) {
3788
-			$match_content = '<div class="' . esc_attr( wp_get_block_default_classname( $thiss->name ) ) . ' sd-block-has-rule sd-block-hide-rule"></div>';
3789
-
3790
-			// Return empty content to hide block.
3791
-			if ( $block_content == $match_content ) {
3792
-				return '';
3793
-			}
3794
-		}
3795
-
3796
-		// Check if ita a nested block that needs to be wrapped
3797
-		if(! empty($parsed_block['attrs']['sd_shortcode_close'])){
3798
-			$content = isset($parsed_block['attrs']['html']) ? $parsed_block['attrs']['html'] : $block_content;
3799
-			$block_content = $parsed_block['attrs']['sd_shortcode'].$content.$parsed_block['attrs']['sd_shortcode_close'];
3800
-
3801
-			$block_content = do_shortcode($block_content);
3802
-
3803
-		}elseif(! empty($parsed_block['attrs']['sd_shortcode'])){
3804
-			$has_warp = false;
3805
-			if($block_content && strpos(trim($block_content), '<div class="wp-block-') === 0 ){
3806
-				$parts = explode('></', $block_content);
3807
-				if(count($parts) === 2){
3808
-					$block_content = $parts[0].'>'.$parsed_block['attrs']['sd_shortcode'].'</'.$parts[1];
3809
-					$has_warp = true;
3810
-				}
3811
-			}
3812
-			if (!$has_warp) {
3813
-				// Add the shortcode if its not a wrapped block
3814
-				$block_content .= $parsed_block['attrs']['sd_shortcode'];
3815
-			}
3816
-
3817
-			$block_content = do_shortcode($block_content);
3818
-		}
3819
-		return  $block_content;
3820
-	}
3775
+    /**
3776
+     * Add the shortcodes to the block content if set as an attribute.
3777
+     *
3778
+     * We have moved the shortcodes from the block content to a block argument to help prevent broken blocks.
3779
+     *
3780
+     * @param $block_content
3781
+     * @param $parsed_block
3782
+     * @param $thiss
3783
+     * @return mixed|string
3784
+     */
3785
+    function sd_blocks_render_blocks($block_content, $parsed_block, $thiss = array() ){
3786
+        // Check hide block visibility conditions.
3787
+        if ( ! empty( $parsed_block ) && ! empty( $parsed_block['attrs']['visibility_conditions'] ) && $block_content && strpos( strrev( $block_content ), strrev( ' sd-block-has-rule sd-block-hide-rule"></div>' ) ) === 0 && ! empty( $thiss ) && $thiss->name ) {
3788
+            $match_content = '<div class="' . esc_attr( wp_get_block_default_classname( $thiss->name ) ) . ' sd-block-has-rule sd-block-hide-rule"></div>';
3789
+
3790
+            // Return empty content to hide block.
3791
+            if ( $block_content == $match_content ) {
3792
+                return '';
3793
+            }
3794
+        }
3795
+
3796
+        // Check if ita a nested block that needs to be wrapped
3797
+        if(! empty($parsed_block['attrs']['sd_shortcode_close'])){
3798
+            $content = isset($parsed_block['attrs']['html']) ? $parsed_block['attrs']['html'] : $block_content;
3799
+            $block_content = $parsed_block['attrs']['sd_shortcode'].$content.$parsed_block['attrs']['sd_shortcode_close'];
3800
+
3801
+            $block_content = do_shortcode($block_content);
3802
+
3803
+        }elseif(! empty($parsed_block['attrs']['sd_shortcode'])){
3804
+            $has_warp = false;
3805
+            if($block_content && strpos(trim($block_content), '<div class="wp-block-') === 0 ){
3806
+                $parts = explode('></', $block_content);
3807
+                if(count($parts) === 2){
3808
+                    $block_content = $parts[0].'>'.$parsed_block['attrs']['sd_shortcode'].'</'.$parts[1];
3809
+                    $has_warp = true;
3810
+                }
3811
+            }
3812
+            if (!$has_warp) {
3813
+                // Add the shortcode if its not a wrapped block
3814
+                $block_content .= $parsed_block['attrs']['sd_shortcode'];
3815
+            }
3816
+
3817
+            $block_content = do_shortcode($block_content);
3818
+        }
3819
+        return  $block_content;
3820
+    }
3821 3821
 }
3822 3822
 
3823 3823
 add_filter('render_block', 'sd_blocks_render_blocks',10,3);
Please login to merge, or discard this patch.
vendor/ayecode/wp-super-duper/includes/class-super-duper-bricks-element.php 1 patch
Indentation   +259 added lines, -259 removed lines patch added patch discarded remove patch
@@ -6,259 +6,259 @@  discard block
 block discarded – undo
6 6
 
7 7
 class Super_Duper_Bricks_Element extends \Bricks\Element {
8 8
 
9
-	public $widget;
10
-
11
-	public function __construct( $element = null ) {
12
-
13
-
14
-		$block_icon = !empty($this->widget->options['block-icon']) ? $this->widget->options['block-icon'] : '';
9
+    public $widget;
15 10
 
11
+    public function __construct( $element = null ) {
12
+
13
+
14
+        $block_icon = !empty($this->widget->options['block-icon']) ? $this->widget->options['block-icon'] : '';
15
+
16
+
17
+        $this->category = !empty($this->widget->options['textdomain']) ? esc_attr( $this->widget->options['textdomain'] ) : 'Super Duper';
18
+        $this->name     = $this->widget->id_base;
19
+        $this->icon     = (strpos($block_icon, 'fa') === 0) ? esc_attr($this->widget->options['block-icon']) : 'fas fa-globe-americas';
20
+
21
+        parent::__construct($element);
22
+    }
23
+
24
+    /**
25
+     * Set the element name.
26
+     *
27
+     * @return array|string|string[]|null
28
+     */
29
+    public function get_label() {
30
+        $escaped_text = esc_attr( $this->widget->name );
31
+        return str_replace( ' &gt; ', ' > ', $escaped_text ); // keep our > but have it safe
32
+    }
33
+
34
+    /**
35
+     * Bricks function to set the controls
36
+     *
37
+     * @return void
38
+     */
39
+    public function set_controls() {
40
+        $args = $this->sd_convert_arguments($this->widget);
41
+
42
+        if (!empty($args)) {
43
+            $this->controls = $this->controls + $args;
44
+        }
45
+
46
+    }
47
+
48
+    /**
49
+     * Set the bricks control groups from the GD ones.
50
+     *
51
+     * @return void
52
+     */
53
+    public function set_control_groups() {
54
+        $args = $this->sd_get_arguments();
55
+
56
+        $groups = array();
57
+        if(!empty($args)) {
58
+            foreach ($args as $k => $v) {
59
+                $g_slug = !empty($v['group']) ? sanitize_title( $v['group'] ) : '';
60
+                if($g_slug && empty($groups[$g_slug])) {
61
+                    $groups[$g_slug] = array(
62
+                        'title' => esc_html( $v['group'] ),
63
+                        'tab' => 'content',
64
+                    );
65
+                }
66
+            }
67
+        }
68
+
69
+        if(!empty($groups)) {
70
+            $this->control_groups = $this->control_groups + $groups;
71
+        }
72
+
73
+    }
74
+
75
+    /**
76
+     * Get the setting input arguments.
77
+     *
78
+     * @return mixed
79
+     */
80
+    public function sd_get_arguments() {
81
+        $args = $this->widget->set_arguments();
82
+
83
+        $widget_options = ! empty( $this->widget->options ) ? $this->widget->options : array();
84
+        $widget_instance = ! empty( $this->widget->instance ) ? $this->widget->instance : array();
85
+
86
+        $args = apply_filters( 'wp_super_duper_arguments', $args, $widget_options, $widget_instance );
87
+
88
+        $arg_keys_subtract = $this->sd_remove_arguments();
89
+
90
+        if ( ! empty( $arg_keys_subtract ) ) {
91
+            foreach($arg_keys_subtract as $key ){
92
+                unset($args[$key]);
93
+            }
94
+        }
95
+
96
+        return $args;
97
+    }
98
+
99
+
100
+    /**
101
+     * Simply use our own render function for the output.
102
+     *
103
+     * @return void
104
+     */
105
+    public function render() {
106
+        $settings = $this->sd_maybe_convert_values( $this->settings );
107
+
108
+        // Set the AyeCode UI calss on the wrapper
109
+        $this->set_attribute( '_root', 'class', 'bsui' );
110
+
111
+        // We might need to add a placeholder here for previews.
112
+
113
+        do_action( 'super_duper_before_render_bricks_element', $settings, $this->widget, $this );
114
+
115
+        // Add the bricks attributes to wrapper
116
+        echo "<div {$this->render_attributes( '_root' )}>";
117
+        echo $this->widget->output( $settings );
118
+        echo '</div>';
119
+    }
120
+
121
+    /**
122
+     * Values can never be arrays so convert if bricks setting make it an array.
123
+     *
124
+     * @param $settings
125
+     * @return mixed
126
+     */
127
+    public function sd_maybe_convert_values( $settings ) {
128
+
129
+
130
+        if (!empty($settings)) {
131
+            foreach( $settings as $k => $v ) {
132
+                if(is_array($v)) {
133
+                    $value = '';
134
+                    // is color
135
+                    if (isset($v['hex'])) {
136
+                        $value = $v['hex'];
137
+                    } elseif (isset($v['icon'])) {
138
+                        $value = $v['icon'];
139
+                    }
140
+
141
+
142
+                    // set the value
143
+                    $settings[$k] = $value;
144
+                }
145
+
146
+            }
147
+        }
148
+
149
+        return $settings;
150
+    }
151
+
152
+    /**
153
+     * Convert SD arguments to Bricks arguments.
154
+     *
155
+     * @param $widget
156
+     *
157
+     * @return array
158
+     */
159
+    public function sd_convert_arguments() {
160
+        $bricks_args = array();
161
+
162
+        $args = $this->sd_get_arguments();
163
+
164
+        if ( ! empty( $args ) ) {
165
+            foreach ( $args as $key => $arg ) {
166
+                // convert title
167
+                if ( ! empty( $arg['title'] ) ) {
168
+                    $arg['label'] = $arg['title'];
169
+                    unset( $arg['title'] );
170
+                }
171
+
172
+                // set fields not to use dynamic data
173
+                $arg['hasDynamicData'] = false;
174
+
175
+                if ( ! empty( $arg['group'] ) ) {
176
+                    $arg['group'] =  sanitize_title( $arg['group'] );
177
+                }
178
+
179
+                $arg['rerender'] = true;
180
+
181
+                // required
182
+                if( ! empty( $arg['element_require'] ) ) {
183
+                    $arg['required'] = $this->sd_convert_required( $arg['element_require'] );
184
+                    unset( $arg['element_require'] );
185
+                }
186
+
187
+                // icons
188
+                if ( 'icon' === $key ) {
189
+                    $arg['type'] = 'icon';
190
+                }
191
+
192
+                // Bricks don't render dropdown when first option key is 0.
193
+                if ( in_array( $key, array( 'zoom', 'mapzoom' ) ) && ! empty( $arg['options'] ) && is_array( $arg['options'] ) && ( $option_keys = array_keys( $arg['options'] ) ) ) {
194
+                    // Move first element to last.
195
+                    if ( $option_keys[0] === 0 || $option_keys[0] === '0' ) {
196
+                        $options = $arg['options'];
197
+                        unset( $arg['options'][0] );
198
+                        $arg['options'][0] = $options[0];
199
+                    }
200
+                }
201
+
202
+                $bricks_args[$key] = $arg;
203
+            }
204
+        }
205
+
206
+        return $bricks_args;
207
+    }
208
+
209
+    /**
210
+     * Convert the SD element_required to the Bricks required syntax.
211
+     *
212
+     * @param $element_require
213
+     * @return array
214
+     */
215
+    public function sd_convert_required($element_require) {
216
+        $bricks_required = [];
217
+
218
+        // Handle logical OR (||) for multiple values
219
+        if (strpos($element_require, '||') !== false) {
220
+            preg_match('/\[%(.+?)%\] *== *"(.*?)"/', $element_require, $matches);
221
+            if ($matches) {
222
+                $control_id = $matches[1];
223
+                preg_match_all('/\[%.*?%\] *== *"(.*?)"/', $element_require, $value_matches);
224
+                $values = $value_matches[1];
225
+                $bricks_required[] = [$control_id, '=', $values];
226
+            }
227
+            return $bricks_required;
228
+        }
229
+
230
+        // Match individual conditions
231
+        preg_match_all('/(!)?\[%(.*?)%\](?:\s*([!=<>]=?)\s*(".*?"|\'.*?\'|\d+))?/', $element_require, $matches, PREG_SET_ORDER);
232
+
233
+        foreach ($matches as $match) {
234
+            $is_negation = isset($match[1]) && $match[1] === '!';
235
+            $control_id = $match[2];
236
+            $operator = isset($match[3]) ? str_replace('==', '=', $match[3]) : ($is_negation ? '=' : '!=');
237
+            $value = isset($match[4]) ? trim($match[4], '"\'') : ($is_negation ? '' : '');
238
+
239
+            // Adjust for negation without explicit operator
240
+            if ($is_negation && !isset($match[3])) {
241
+                $operator = '=';
242
+                $value = '';
243
+            }
244
+
245
+            $bricks_required[] = [$control_id, $operator, $value];
246
+        }
247
+
248
+        return $bricks_required;
249
+    }
250
+
251
+
252
+    /**
253
+     * A way to remove some settings by keys.
254
+     *
255
+     * @return array
256
+     */
257
+    public function sd_remove_arguments()
258
+    {
259
+        return array();
260
+    }
16 261
 
17
-		$this->category = !empty($this->widget->options['textdomain']) ? esc_attr( $this->widget->options['textdomain'] ) : 'Super Duper';
18
-		$this->name     = $this->widget->id_base;
19
-		$this->icon     = (strpos($block_icon, 'fa') === 0) ? esc_attr($this->widget->options['block-icon']) : 'fas fa-globe-americas';
20
-
21
-		parent::__construct($element);
22
-	}
23
-
24
-	/**
25
-	 * Set the element name.
26
-	 *
27
-	 * @return array|string|string[]|null
28
-	 */
29
-	public function get_label() {
30
-		$escaped_text = esc_attr( $this->widget->name );
31
-		return str_replace( ' &gt; ', ' > ', $escaped_text ); // keep our > but have it safe
32
-	}
33
-
34
-	/**
35
-	 * Bricks function to set the controls
36
-	 *
37
-	 * @return void
38
-	 */
39
-	public function set_controls() {
40
-		$args = $this->sd_convert_arguments($this->widget);
41
-
42
-		if (!empty($args)) {
43
-			$this->controls = $this->controls + $args;
44
-		}
45
-
46
-	}
47
-
48
-	/**
49
-	 * Set the bricks control groups from the GD ones.
50
-	 *
51
-	 * @return void
52
-	 */
53
-	public function set_control_groups() {
54
-		$args = $this->sd_get_arguments();
55
-
56
-		$groups = array();
57
-		if(!empty($args)) {
58
-			foreach ($args as $k => $v) {
59
-				$g_slug = !empty($v['group']) ? sanitize_title( $v['group'] ) : '';
60
-				if($g_slug && empty($groups[$g_slug])) {
61
-					$groups[$g_slug] = array(
62
-						'title' => esc_html( $v['group'] ),
63
-						'tab' => 'content',
64
-					);
65
-				}
66
-			}
67
-		}
68
-
69
-		if(!empty($groups)) {
70
-			$this->control_groups = $this->control_groups + $groups;
71
-		}
72
-
73
-	}
74
-
75
-	/**
76
-	 * Get the setting input arguments.
77
-	 *
78
-	 * @return mixed
79
-	 */
80
-	public function sd_get_arguments() {
81
-		$args = $this->widget->set_arguments();
82
-
83
-		$widget_options = ! empty( $this->widget->options ) ? $this->widget->options : array();
84
-		$widget_instance = ! empty( $this->widget->instance ) ? $this->widget->instance : array();
85
-
86
-		$args = apply_filters( 'wp_super_duper_arguments', $args, $widget_options, $widget_instance );
87
-
88
-		$arg_keys_subtract = $this->sd_remove_arguments();
89
-
90
-		if ( ! empty( $arg_keys_subtract ) ) {
91
-			foreach($arg_keys_subtract as $key ){
92
-				unset($args[$key]);
93
-			}
94
-		}
95
-
96
-		return $args;
97
-	}
98
-
99
-
100
-	/**
101
-	 * Simply use our own render function for the output.
102
-	 *
103
-	 * @return void
104
-	 */
105
-	public function render() {
106
-		$settings = $this->sd_maybe_convert_values( $this->settings );
107
-
108
-		// Set the AyeCode UI calss on the wrapper
109
-		$this->set_attribute( '_root', 'class', 'bsui' );
110
-
111
-		// We might need to add a placeholder here for previews.
112
-
113
-		do_action( 'super_duper_before_render_bricks_element', $settings, $this->widget, $this );
114
-
115
-		// Add the bricks attributes to wrapper
116
-		echo "<div {$this->render_attributes( '_root' )}>";
117
-		echo $this->widget->output( $settings );
118
-		echo '</div>';
119
-	}
120
-
121
-	/**
122
-	 * Values can never be arrays so convert if bricks setting make it an array.
123
-	 *
124
-	 * @param $settings
125
-	 * @return mixed
126
-	 */
127
-	public function sd_maybe_convert_values( $settings ) {
128
-
129
-
130
-		if (!empty($settings)) {
131
-			foreach( $settings as $k => $v ) {
132
-				if(is_array($v)) {
133
-					$value = '';
134
-					// is color
135
-					if (isset($v['hex'])) {
136
-						$value = $v['hex'];
137
-					} elseif (isset($v['icon'])) {
138
-						$value = $v['icon'];
139
-					}
140
-
141
-
142
-					// set the value
143
-					$settings[$k] = $value;
144
-				}
145
-
146
-			}
147
-		}
148
-
149
-		return $settings;
150
-	}
151
-
152
-	/**
153
-	 * Convert SD arguments to Bricks arguments.
154
-	 *
155
-	 * @param $widget
156
-	 *
157
-	 * @return array
158
-	 */
159
-	public function sd_convert_arguments() {
160
-		$bricks_args = array();
161
-
162
-		$args = $this->sd_get_arguments();
163
-
164
-		if ( ! empty( $args ) ) {
165
-			foreach ( $args as $key => $arg ) {
166
-				// convert title
167
-				if ( ! empty( $arg['title'] ) ) {
168
-					$arg['label'] = $arg['title'];
169
-					unset( $arg['title'] );
170
-				}
171
-
172
-				// set fields not to use dynamic data
173
-				$arg['hasDynamicData'] = false;
174
-
175
-				if ( ! empty( $arg['group'] ) ) {
176
-					$arg['group'] =  sanitize_title( $arg['group'] );
177
-				}
178
-
179
-				$arg['rerender'] = true;
180
-
181
-				// required
182
-				if( ! empty( $arg['element_require'] ) ) {
183
-					$arg['required'] = $this->sd_convert_required( $arg['element_require'] );
184
-					unset( $arg['element_require'] );
185
-				}
186
-
187
-				// icons
188
-				if ( 'icon' === $key ) {
189
-					$arg['type'] = 'icon';
190
-				}
191
-
192
-				// Bricks don't render dropdown when first option key is 0.
193
-				if ( in_array( $key, array( 'zoom', 'mapzoom' ) ) && ! empty( $arg['options'] ) && is_array( $arg['options'] ) && ( $option_keys = array_keys( $arg['options'] ) ) ) {
194
-					// Move first element to last.
195
-					if ( $option_keys[0] === 0 || $option_keys[0] === '0' ) {
196
-						$options = $arg['options'];
197
-						unset( $arg['options'][0] );
198
-						$arg['options'][0] = $options[0];
199
-					}
200
-				}
201
-
202
-				$bricks_args[$key] = $arg;
203
-			}
204
-		}
205
-
206
-		return $bricks_args;
207
-	}
208
-
209
-	/**
210
-	 * Convert the SD element_required to the Bricks required syntax.
211
-	 *
212
-	 * @param $element_require
213
-	 * @return array
214
-	 */
215
-	public function sd_convert_required($element_require) {
216
-		$bricks_required = [];
217
-
218
-		// Handle logical OR (||) for multiple values
219
-		if (strpos($element_require, '||') !== false) {
220
-			preg_match('/\[%(.+?)%\] *== *"(.*?)"/', $element_require, $matches);
221
-			if ($matches) {
222
-				$control_id = $matches[1];
223
-				preg_match_all('/\[%.*?%\] *== *"(.*?)"/', $element_require, $value_matches);
224
-				$values = $value_matches[1];
225
-				$bricks_required[] = [$control_id, '=', $values];
226
-			}
227
-			return $bricks_required;
228
-		}
229
-
230
-		// Match individual conditions
231
-		preg_match_all('/(!)?\[%(.*?)%\](?:\s*([!=<>]=?)\s*(".*?"|\'.*?\'|\d+))?/', $element_require, $matches, PREG_SET_ORDER);
232
-
233
-		foreach ($matches as $match) {
234
-			$is_negation = isset($match[1]) && $match[1] === '!';
235
-			$control_id = $match[2];
236
-			$operator = isset($match[3]) ? str_replace('==', '=', $match[3]) : ($is_negation ? '=' : '!=');
237
-			$value = isset($match[4]) ? trim($match[4], '"\'') : ($is_negation ? '' : '');
238
-
239
-			// Adjust for negation without explicit operator
240
-			if ($is_negation && !isset($match[3])) {
241
-				$operator = '=';
242
-				$value = '';
243
-			}
244
-
245
-			$bricks_required[] = [$control_id, $operator, $value];
246
-		}
247
-
248
-		return $bricks_required;
249
-	}
250
-
251
-
252
-	/**
253
-	 * A way to remove some settings by keys.
254
-	 *
255
-	 * @return array
256
-	 */
257
-	public function sd_remove_arguments()
258
-	{
259
-		return array();
260
-	}
261
-
262 262
 }
263 263
 
264 264
 
@@ -267,12 +267,12 @@  discard block
 block discarded – undo
267 267
  */
268 268
 add_action( 'wp_enqueue_scripts', function() {
269 269
 
270
-	// Check if we're in the Bricks Editor
271
-	if ( isset( $_GET['bricks'] ) && $_GET['bricks'] && bricks_is_builder_main() ) {
272
-		// Add inline script to the 'bricks-builder' script
273
-		wp_add_inline_script(
274
-			'bricks-builder',
275
-			"
270
+    // Check if we're in the Bricks Editor
271
+    if ( isset( $_GET['bricks'] ) && $_GET['bricks'] && bricks_is_builder_main() ) {
272
+        // Add inline script to the 'bricks-builder' script
273
+        wp_add_inline_script(
274
+            'bricks-builder',
275
+            "
276 276
 
277 277
 (function () {
278 278
     // Function to get the current breakpoint from the #bricks-preview class
@@ -479,6 +479,6 @@  discard block
 block discarded – undo
479 479
     addIconsToLabels();
480 480
 })();
481 481
 "
482
-		);
483
-	}
482
+        );
483
+    }
484 484
 });
Please login to merge, or discard this patch.
vendor/ayecode/wp-ayecode-ui/ayecode-ui-loader.php 1 patch
Indentation   +18 added lines, -18 removed lines patch added patch discarded remove patch
@@ -7,40 +7,40 @@
 block discarded – undo
7 7
  * Bail if we are not in WP.
8 8
  */
9 9
 if ( ! defined( 'ABSPATH' ) ) {
10
-	exit;
10
+    exit;
11 11
 }
12 12
 
13 13
 /**
14 14
  * Set the version only if its the current newest while loading.
15 15
  */
16 16
 add_action('after_setup_theme', function () {
17
-	global $ayecode_ui_version,$ayecode_ui_file_key;
18
-	$this_version = "0.2.35";
19
-	if(empty($ayecode_ui_version) || version_compare($this_version , $ayecode_ui_version, '>')){
20
-		$ayecode_ui_version = $this_version ;
21
-		$ayecode_ui_file_key = wp_hash( __FILE__ );
22
-	}
17
+    global $ayecode_ui_version,$ayecode_ui_file_key;
18
+    $this_version = "0.2.35";
19
+    if(empty($ayecode_ui_version) || version_compare($this_version , $ayecode_ui_version, '>')){
20
+        $ayecode_ui_version = $this_version ;
21
+        $ayecode_ui_file_key = wp_hash( __FILE__ );
22
+    }
23 23
 },0);
24 24
 
25 25
 /**
26 26
  * Load this version of WP Bootstrap Settings only if the file hash is the current one.
27 27
  */
28 28
 add_action('after_setup_theme', function () {
29
-	global $ayecode_ui_file_key;
30
-	if($ayecode_ui_file_key && $ayecode_ui_file_key == wp_hash( __FILE__ )){
31
-		include_once( dirname( __FILE__ ) . '/includes/class-aui.php' );
32
-		include_once( dirname( __FILE__ ) . '/includes/ayecode-ui-settings.php' );
33
-	}
29
+    global $ayecode_ui_file_key;
30
+    if($ayecode_ui_file_key && $ayecode_ui_file_key == wp_hash( __FILE__ )){
31
+        include_once( dirname( __FILE__ ) . '/includes/class-aui.php' );
32
+        include_once( dirname( __FILE__ ) . '/includes/ayecode-ui-settings.php' );
33
+    }
34 34
 },1);
35 35
 
36 36
 /**
37 37
  * Add the function that calls the class.
38 38
  */
39 39
 if(!function_exists('aui')){
40
-	function aui(){
41
-		if(!class_exists("AUI",false)){
42
-			return false;
43
-		}
44
-		return AUI::instance();
45
-	}
40
+    function aui(){
41
+        if(!class_exists("AUI",false)){
42
+            return false;
43
+        }
44
+        return AUI::instance();
45
+    }
46 46
 }
Please login to merge, or discard this patch.
vendor/ayecode/wp-ayecode-ui/includes/ayecode-ui-settings.php 1 patch
Indentation   +2335 added lines, -2335 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,472 +21,472 @@  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.35';
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 {
119 32
 
120
-				add_action( 'customize_register', array( self::$instance, 'customizer_settings' ));
33
+        /**
34
+         * Class version version.
35
+         *
36
+         * @var string
37
+         */
38
+        public $version = '0.2.35';
121 39
 
122
-				do_action( 'ayecode_ui_settings_loaded' );
123
-			}
40
+        /**
41
+         * Class textdomain.
42
+         *
43
+         * @var string
44
+         */
45
+        public $textdomain = 'aui';
124 46
 
125
-			return self::$instance;
126
-		}
47
+        /**
48
+         * Latest version of Bootstrap at time of publish published.
49
+         *
50
+         * @var string
51
+         */
52
+        public $latest = "5.2.2";
127 53
 
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 ){
54
+        /**
55
+         * Current version of select2 being used.
56
+         *
57
+         * @var string
58
+         */
59
+        public $select2_version = "4.0.11";
138 60
 
61
+        /**
62
+         * The title.
63
+         *
64
+         * @var string
65
+         */
66
+        public $name = 'AyeCode UI';
139 67
 
140
-			$setting = wp_get_global_settings();
68
+        /**
69
+         * The relative url to the assets.
70
+         *
71
+         * @var string
72
+         */
73
+        public $url = '';
141 74
 
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() {
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
+                }
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';
467
-				$rtl = is_rtl() && ! $aui_bs5 ? '-rtl' : '';
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
+                $rtl = is_rtl() && ! $aui_bs5 ? '-rtl' : '';
468 468
                 $bs_ver = $this->settings['bs_ver'] == '5' ? '-v5' : '';
469 469
 
470
-				if ( $this->settings[ $css_setting ] ) {
471
-					$compatibility = $this->settings[$css_setting]=='core' ? false : true;
472
-					$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';
470
+                if ( $this->settings[ $css_setting ] ) {
471
+                    $compatibility = $this->settings[$css_setting]=='core' ? false : true;
472
+                    $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';
473 473
 
474
-					wp_register_style( 'ayecode-ui', $url, array(), $this->version );
475
-					wp_enqueue_style( 'ayecode-ui' );
474
+                    wp_register_style( 'ayecode-ui', $url, array(), $this->version );
475
+                    wp_enqueue_style( 'ayecode-ui' );
476 476
 
477
-					if ( is_admin() && ( !empty($_REQUEST['postType']) || self::is_block_editor() ) && ( defined( 'BLOCKSTRAP_VERSION' ) || defined( 'AUI_FSE' ) )  ) {
478
-						$url = $this->url.'assets'.$bs_ver.'/css/ayecode-ui-fse.css';
479
-						wp_register_style( 'ayecode-ui-fse', $url, array(), $this->version );
480
-						wp_enqueue_style( 'ayecode-ui-fse' );
481
-						$load_fse = true;
482
-					}
477
+                    if ( is_admin() && ( !empty($_REQUEST['postType']) || self::is_block_editor() ) && ( defined( 'BLOCKSTRAP_VERSION' ) || defined( 'AUI_FSE' ) )  ) {
478
+                        $url = $this->url.'assets'.$bs_ver.'/css/ayecode-ui-fse.css';
479
+                        wp_register_style( 'ayecode-ui-fse', $url, array(), $this->version );
480
+                        wp_enqueue_style( 'ayecode-ui-fse' );
481
+                        $load_fse = true;
482
+                    }
483 483
 
484
-					// flatpickr
485
-					wp_register_style( 'flatpickr', $this->url.'assets'.$bs_ver.'/css/flatpickr.min.css', array(), $this->version );
484
+                    // flatpickr
485
+                    wp_register_style( 'flatpickr', $this->url.'assets'.$bs_ver.'/css/flatpickr.min.css', array(), $this->version );
486 486
 
487
-					// fix some wp-admin issues
488
-					if(is_admin()){
489
-						$custom_css = "
487
+                    // fix some wp-admin issues
488
+                    if(is_admin()){
489
+                        $custom_css = "
490 490
                 body{
491 491
                     background-color: #f1f1f1;
492 492
                     font-family: -apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen-Sans,Ubuntu,Cantarell,\"Helvetica Neue\",sans-serif;
@@ -526,63 +526,63 @@  discard block
 block discarded – undo
526 526
 				}
527 527
                 ";
528 528
 
529
-						// @todo, remove once fixed :: fix for this bug https://github.com/WordPress/gutenberg/issues/14377
530
-						$custom_css .= "
529
+                        // @todo, remove once fixed :: fix for this bug https://github.com/WordPress/gutenberg/issues/14377
530
+                        $custom_css .= "
531 531
 						.edit-post-sidebar input[type=color].components-text-control__input{
532 532
 						    padding: 0;
533 533
 						}
534 534
 					";
535
-						wp_add_inline_style( 'ayecode-ui', $custom_css );
536
-					}
537
-
538
-					// custom changes
539
-					if ( $load_fse ) {
540
-						wp_add_inline_style( 'ayecode-ui-fse', self::custom_css($compatibility, true) );
541
-					}else{
542
-						wp_add_inline_style( 'ayecode-ui', self::custom_css($compatibility) );
543
-					}
544
-				}
545
-			}
546
-		}
547
-
548
-		/**
549
-		 * Get inline script used if bootstrap enqueued
550
-		 *
551
-		 * If this remains small then its best to use this than to add another JS file.
552
-		 */
553
-		public function inline_script() {
554
-            global $aui_bs5;
555
-			// Flatpickr calendar locale
556
-			$flatpickr_locale = self::flatpickr_locale();
535
+                        wp_add_inline_style( 'ayecode-ui', $custom_css );
536
+                    }
537
+
538
+                    // custom changes
539
+                    if ( $load_fse ) {
540
+                        wp_add_inline_style( 'ayecode-ui-fse', self::custom_css($compatibility, true) );
541
+                    }else{
542
+                        wp_add_inline_style( 'ayecode-ui', self::custom_css($compatibility) );
543
+                    }
544
+                }
545
+            }
546
+        }
557 547
 
558
-			ob_start();
559
-			if ( $aui_bs5 ) {
560
-				include_once( dirname( __FILE__ ) . '/inc/bs5-js.php' );
561
-			}else{
562
-				include_once( dirname( __FILE__ ) . '/inc/bs4-js.php' );
548
+        /**
549
+         * Get inline script used if bootstrap enqueued
550
+         *
551
+         * If this remains small then its best to use this than to add another JS file.
552
+         */
553
+        public function inline_script() {
554
+            global $aui_bs5;
555
+            // Flatpickr calendar locale
556
+            $flatpickr_locale = self::flatpickr_locale();
557
+
558
+            ob_start();
559
+            if ( $aui_bs5 ) {
560
+                include_once( dirname( __FILE__ ) . '/inc/bs5-js.php' );
561
+            }else{
562
+                include_once( dirname( __FILE__ ) . '/inc/bs4-js.php' );
563 563
             }
564 564
 
565
-			$output = ob_get_clean();
565
+            $output = ob_get_clean();
566 566
 
567
-			/*
567
+            /*
568 568
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
569 569
 			 */
570
-			return str_replace( array(
571
-				'<script>',
572
-				'</script>'
573
-			), '', self::minify_js($output) );
574
-		}
575
-
576
-
577
-		/**
578
-		 * JS to help with conflict issues with other plugins and themes using bootstrap v3.
579
-		 *
580
-		 * @TODO we may need this when other conflicts arrise.
581
-		 * @return mixed
582
-		 */
583
-		public static function bs3_compat_js() {
584
-			ob_start();
585
-			?>
570
+            return str_replace( array(
571
+                '<script>',
572
+                '</script>'
573
+            ), '', self::minify_js($output) );
574
+        }
575
+
576
+
577
+        /**
578
+         * JS to help with conflict issues with other plugins and themes using bootstrap v3.
579
+         *
580
+         * @TODO we may need this when other conflicts arrise.
581
+         * @return mixed
582
+         */
583
+        public static function bs3_compat_js() {
584
+            ob_start();
585
+            ?>
586 586
             <script>
587 587
 				<?php if( defined( 'FUSION_BUILDER_VERSION' ) ){ ?>
588 588
                 /* With Avada builder */
@@ -590,20 +590,20 @@  discard block
 block discarded – undo
590 590
 				<?php } ?>
591 591
             </script>
592 592
 			<?php
593
-			return str_replace( array(
594
-				'<script>',
595
-				'</script>'
596
-			), '', ob_get_clean());
597
-		}
598
-
599
-		/**
600
-		 * Get inline script used if bootstrap file browser enqueued.
601
-		 *
602
-		 * If this remains small then its best to use this than to add another JS file.
603
-		 */
604
-		public function inline_script_file_browser(){
605
-			ob_start();
606
-			?>
593
+            return str_replace( array(
594
+                '<script>',
595
+                '</script>'
596
+            ), '', ob_get_clean());
597
+        }
598
+
599
+        /**
600
+         * Get inline script used if bootstrap file browser enqueued.
601
+         *
602
+         * If this remains small then its best to use this than to add another JS file.
603
+         */
604
+        public function inline_script_file_browser(){
605
+            ob_start();
606
+            ?>
607 607
             <script>
608 608
                 // run on doc ready
609 609
                 jQuery(document).ready(function () {
@@ -611,127 +611,127 @@  discard block
 block discarded – undo
611 611
                 });
612 612
             </script>
613 613
 			<?php
614
-			$output = ob_get_clean();
614
+            $output = ob_get_clean();
615 615
 
616
-			/*
616
+            /*
617 617
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
618 618
 			 */
619
-			return str_replace( array(
620
-				'<script>',
621
-				'</script>'
622
-			), '', $output );
623
-		}
624
-
625
-		/**
626
-		 * Adds the Font Awesome JS.
627
-		 */
628
-		public function enqueue_scripts() {
629
-			if( is_admin() && !$this->is_aui_screen()){
630
-				// Don't add wp-admin scripts if not requested to.
631
-			} else {
632
-				$js_setting = current_action() == 'wp_enqueue_scripts' ? 'js' : 'js_backend';
633
-
634
-				$bs_ver = $this->settings['bs_ver'] == '5' ? '-v5' : '';
635
-
636
-				// select2
637
-				wp_register_script( 'select2', $this->url . 'assets/js/select2.min.js', array( 'jquery' ), $this->select2_version );
638
-
639
-				// flatpickr
640
-				wp_register_script( 'flatpickr', $this->url . 'assets/js/flatpickr.min.js', array(), $this->version );
641
-
642
-				// iconpicker
643
-				if ( defined( 'FAS_ICONPICKER_JS_URL' ) ) {
644
-					wp_register_script( 'iconpicker', FAS_ICONPICKER_JS_URL, array(), $this->version );
645
-				}else{
646
-					wp_register_script( 'iconpicker', $this->url . 'assets/js/fa-iconpicker.min.js', array(), $this->version );
647
-				}
619
+            return str_replace( array(
620
+                '<script>',
621
+                '</script>'
622
+            ), '', $output );
623
+        }
648 624
 
649
-				// Bootstrap file browser
650
-				wp_register_script( 'aui-custom-file-input', $url = $this->url . 'assets/js/bs-custom-file-input.min.js', array( 'jquery' ), $this->select2_version );
651
-				wp_add_inline_script( 'aui-custom-file-input', $this->inline_script_file_browser() );
625
+        /**
626
+         * Adds the Font Awesome JS.
627
+         */
628
+        public function enqueue_scripts() {
629
+            if( is_admin() && !$this->is_aui_screen()){
630
+                // Don't add wp-admin scripts if not requested to.
631
+            } else {
632
+                $js_setting = current_action() == 'wp_enqueue_scripts' ? 'js' : 'js_backend';
652 633
 
653
-				$load_inline = false;
634
+                $bs_ver = $this->settings['bs_ver'] == '5' ? '-v5' : '';
654 635
 
655
-				// Load select2 only when required.
656
-				if ( $this->force_load_select2() ) {
657
-					$dependency = array( 'select2', 'jquery' );
658
-				} else {
659
-					$dependency = array( 'jquery' );
660
-				}
636
+                // select2
637
+                wp_register_script( 'select2', $this->url . 'assets/js/select2.min.js', array( 'jquery' ), $this->select2_version );
661 638
 
662
-				if ( $this->settings[ $js_setting ] == 'core-popper' ) {
663
-					// Bootstrap bundle
664
-					$url = $this->url . 'assets' . $bs_ver . '/js/bootstrap.bundle.min.js';
665
-					wp_register_script( 'bootstrap-js-bundle', $url, $dependency, $this->version, $this->is_bs3_compat() );
666
-
667
-					// If in admin then add to footer for compatibility.
668
-					is_admin() ? wp_enqueue_script( 'bootstrap-js-bundle', '', null, null, true ) : wp_enqueue_script( 'bootstrap-js-bundle' );
669
-
670
-					$script = $this->inline_script();
671
-					wp_add_inline_script( 'bootstrap-js-bundle', $script );
672
-				} elseif ( $this->settings[ $js_setting ] == 'popper' ) {
673
-					$url = $this->url . 'assets/js/popper.min.js'; // @todo we need to update this to bs5
674
-					wp_register_script( 'bootstrap-js-popper', $url, $dependency, $this->version );
675
-					wp_enqueue_script( 'bootstrap-js-popper' );
676
-					$load_inline = true;
677
-				} else {
678
-					$load_inline = true;
679
-				}
639
+                // flatpickr
640
+                wp_register_script( 'flatpickr', $this->url . 'assets/js/flatpickr.min.js', array(), $this->version );
641
+
642
+                // iconpicker
643
+                if ( defined( 'FAS_ICONPICKER_JS_URL' ) ) {
644
+                    wp_register_script( 'iconpicker', FAS_ICONPICKER_JS_URL, array(), $this->version );
645
+                }else{
646
+                    wp_register_script( 'iconpicker', $this->url . 'assets/js/fa-iconpicker.min.js', array(), $this->version );
647
+                }
680 648
 
681
-				// Load needed inline scripts by faking the loading of a script if the main script is not being loaded
682
-				if ( $load_inline ) {
683
-					wp_register_script( 'bootstrap-dummy', '', $dependency );
684
-					wp_enqueue_script( 'bootstrap-dummy' );
649
+                // Bootstrap file browser
650
+                wp_register_script( 'aui-custom-file-input', $url = $this->url . 'assets/js/bs-custom-file-input.min.js', array( 'jquery' ), $this->select2_version );
651
+                wp_add_inline_script( 'aui-custom-file-input', $this->inline_script_file_browser() );
685 652
 
686
-					$script = $this->inline_script();
687
-					wp_add_inline_script( 'bootstrap-dummy', $script );
688
-				}
689
-			}
690
-		}
691
-
692
-		/**
693
-		 * Enqueue select2 if called.
694
-		 *
695
-		 * @since 0.2.29
696
-		 */
697
-		public function force_load_select2() {
698
-			global $aui_select2_enqueued;
699
-
700
-			$conditional_select2 = apply_filters( 'aui_is_conditional_select2', true );
701
-
702
-			if ( $conditional_select2 !== true ) {
703
-				return true;
704
-			}
705
-
706
-			$load = is_admin() && ! $aui_select2_enqueued;
707
-
708
-			return apply_filters( 'aui_force_load_select2', $load );
709
-		}
710
-
711
-		/**
712
-		 * Enqueue select2 if called.
713
-		 *
714
-		 * @since 0.2.29
715
-		 */
716
-		public function enqueue_select2() {
717
-			wp_enqueue_script( 'select2' );
718
-		}
719
-
720
-		/**
721
-		 * Enqueue flatpickr if called.
722
-		 */
723
-		public function enqueue_flatpickr(){
724
-			wp_enqueue_style( 'flatpickr' );
725
-			wp_enqueue_script( 'flatpickr' );
726
-		}
727
-
728
-		/**
729
-		 * Enqueue iconpicker if called.
730
-		 */
731
-		public function enqueue_iconpicker(){
732
-			wp_enqueue_style( 'iconpicker' );
733
-			wp_enqueue_script( 'iconpicker' );
734
-		}
653
+                $load_inline = false;
654
+
655
+                // Load select2 only when required.
656
+                if ( $this->force_load_select2() ) {
657
+                    $dependency = array( 'select2', 'jquery' );
658
+                } else {
659
+                    $dependency = array( 'jquery' );
660
+                }
661
+
662
+                if ( $this->settings[ $js_setting ] == 'core-popper' ) {
663
+                    // Bootstrap bundle
664
+                    $url = $this->url . 'assets' . $bs_ver . '/js/bootstrap.bundle.min.js';
665
+                    wp_register_script( 'bootstrap-js-bundle', $url, $dependency, $this->version, $this->is_bs3_compat() );
666
+
667
+                    // If in admin then add to footer for compatibility.
668
+                    is_admin() ? wp_enqueue_script( 'bootstrap-js-bundle', '', null, null, true ) : wp_enqueue_script( 'bootstrap-js-bundle' );
669
+
670
+                    $script = $this->inline_script();
671
+                    wp_add_inline_script( 'bootstrap-js-bundle', $script );
672
+                } elseif ( $this->settings[ $js_setting ] == 'popper' ) {
673
+                    $url = $this->url . 'assets/js/popper.min.js'; // @todo we need to update this to bs5
674
+                    wp_register_script( 'bootstrap-js-popper', $url, $dependency, $this->version );
675
+                    wp_enqueue_script( 'bootstrap-js-popper' );
676
+                    $load_inline = true;
677
+                } else {
678
+                    $load_inline = true;
679
+                }
680
+
681
+                // Load needed inline scripts by faking the loading of a script if the main script is not being loaded
682
+                if ( $load_inline ) {
683
+                    wp_register_script( 'bootstrap-dummy', '', $dependency );
684
+                    wp_enqueue_script( 'bootstrap-dummy' );
685
+
686
+                    $script = $this->inline_script();
687
+                    wp_add_inline_script( 'bootstrap-dummy', $script );
688
+                }
689
+            }
690
+        }
691
+
692
+        /**
693
+         * Enqueue select2 if called.
694
+         *
695
+         * @since 0.2.29
696
+         */
697
+        public function force_load_select2() {
698
+            global $aui_select2_enqueued;
699
+
700
+            $conditional_select2 = apply_filters( 'aui_is_conditional_select2', true );
701
+
702
+            if ( $conditional_select2 !== true ) {
703
+                return true;
704
+            }
705
+
706
+            $load = is_admin() && ! $aui_select2_enqueued;
707
+
708
+            return apply_filters( 'aui_force_load_select2', $load );
709
+        }
710
+
711
+        /**
712
+         * Enqueue select2 if called.
713
+         *
714
+         * @since 0.2.29
715
+         */
716
+        public function enqueue_select2() {
717
+            wp_enqueue_script( 'select2' );
718
+        }
719
+
720
+        /**
721
+         * Enqueue flatpickr if called.
722
+         */
723
+        public function enqueue_flatpickr(){
724
+            wp_enqueue_style( 'flatpickr' );
725
+            wp_enqueue_script( 'flatpickr' );
726
+        }
727
+
728
+        /**
729
+         * Enqueue iconpicker if called.
730
+         */
731
+        public function enqueue_iconpicker(){
732
+            wp_enqueue_style( 'iconpicker' );
733
+            wp_enqueue_script( 'iconpicker' );
734
+        }
735 735
 
736 736
         /**
737 737
          * Get the url path to the current folder.
@@ -766,171 +766,171 @@  discard block
 block discarded – undo
766 766
             return trailingslashit($url);
767 767
         }
768 768
 
769
-		/**
770
-		 * Get the url path to the current folder.
771
-		 * @todo remove
772
-		 * @return string
773
-		 */
774
-		public function get_url_old() {
775
-
776
-			$url = '';
777
-			// check if we are inside a plugin
778
-			$file_dir = str_replace( "/includes","", wp_normalize_path( dirname( __FILE__ ) ) );
779
-
780
-			// add check in-case user has changed wp-content dir name.
781
-			$wp_content_folder_name = basename(WP_CONTENT_DIR);
782
-			$dir_parts = explode("/$wp_content_folder_name/",$file_dir);
783
-			$url_parts = explode("/$wp_content_folder_name/",plugins_url());
784
-
785
-			if(!empty($url_parts[0]) && !empty($dir_parts[1])){
786
-				$url = trailingslashit( $url_parts[0]."/$wp_content_folder_name/".$dir_parts[1] );
787
-			}
788
-
789
-			return $url;
790
-		}
791
-
792
-		/**
793
-		 * Register the database settings with WordPress.
794
-		 */
795
-		public function register_settings() {
796
-			register_setting( 'ayecode-ui-settings', 'ayecode-ui-settings' );
797
-		}
798
-
799
-		/**
800
-		 * Add the WordPress settings menu item.
801
-		 * @since 1.0.10 Calling function name direct will fail theme check so we don't.
802
-		 */
803
-		public function menu_item() {
804
-			$menu_function = 'add' . '_' . 'options' . '_' . 'page'; // won't pass theme check if function name present in theme
805
-			call_user_func( $menu_function, $this->name, $this->name, 'manage_options', 'ayecode-ui-settings', array(
806
-				$this,
807
-				'settings_page'
808
-			) );
809
-		}
810
-
811
-		/**
812
-		 * Get a list of themes and their default JS settings.
813
-		 *
814
-		 * @return array
815
-		 */
816
-		public function theme_js_settings(){
817
-			return array(
818
-				'ayetheme' => 'popper',
819
-				'listimia' => 'required',
820
-				'listimia_backend' => 'core-popper',
821
-				//'avada'    => 'required', // removed as we now add compatibility
822
-			);
823
-		}
824
-
825
-		/**
769
+        /**
770
+         * Get the url path to the current folder.
771
+         * @todo remove
772
+         * @return string
773
+         */
774
+        public function get_url_old() {
775
+
776
+            $url = '';
777
+            // check if we are inside a plugin
778
+            $file_dir = str_replace( "/includes","", wp_normalize_path( dirname( __FILE__ ) ) );
779
+
780
+            // add check in-case user has changed wp-content dir name.
781
+            $wp_content_folder_name = basename(WP_CONTENT_DIR);
782
+            $dir_parts = explode("/$wp_content_folder_name/",$file_dir);
783
+            $url_parts = explode("/$wp_content_folder_name/",plugins_url());
784
+
785
+            if(!empty($url_parts[0]) && !empty($dir_parts[1])){
786
+                $url = trailingslashit( $url_parts[0]."/$wp_content_folder_name/".$dir_parts[1] );
787
+            }
788
+
789
+            return $url;
790
+        }
791
+
792
+        /**
793
+         * Register the database settings with WordPress.
794
+         */
795
+        public function register_settings() {
796
+            register_setting( 'ayecode-ui-settings', 'ayecode-ui-settings' );
797
+        }
798
+
799
+        /**
800
+         * Add the WordPress settings menu item.
801
+         * @since 1.0.10 Calling function name direct will fail theme check so we don't.
802
+         */
803
+        public function menu_item() {
804
+            $menu_function = 'add' . '_' . 'options' . '_' . 'page'; // won't pass theme check if function name present in theme
805
+            call_user_func( $menu_function, $this->name, $this->name, 'manage_options', 'ayecode-ui-settings', array(
806
+                $this,
807
+                'settings_page'
808
+            ) );
809
+        }
810
+
811
+        /**
812
+         * Get a list of themes and their default JS settings.
813
+         *
814
+         * @return array
815
+         */
816
+        public function theme_js_settings(){
817
+            return array(
818
+                'ayetheme' => 'popper',
819
+                'listimia' => 'required',
820
+                'listimia_backend' => 'core-popper',
821
+                //'avada'    => 'required', // removed as we now add compatibility
822
+            );
823
+        }
824
+
825
+        /**
826 826
          * Get the date the site was installed.
827 827
          *
828
-		 * @return false|string
829
-		 */
828
+         * @return false|string
829
+         */
830 830
         public function get_site_install_date() {
831
-	        global $wpdb; // This gives you access to the WordPress database object
831
+            global $wpdb; // This gives you access to the WordPress database object
832 832
 
833
-	        // Prepare the SQL query to get the oldest registration date
834
-	        $query = "SELECT MIN(user_registered) AS oldest_registration_date FROM {$wpdb->users}";
833
+            // Prepare the SQL query to get the oldest registration date
834
+            $query = "SELECT MIN(user_registered) AS oldest_registration_date FROM {$wpdb->users}";
835 835
 
836
-	        // Execute the query
837
-	        $date = $wpdb->get_var( $query ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
836
+            // Execute the query
837
+            $date = $wpdb->get_var( $query ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
838 838
 
839
-	        return $date ? $date : false;
839
+            return $date ? $date : false;
840 840
         }
841 841
 
842
-		/**
843
-		 * Show admin notice if backend scripts not loaded.
844
-		 */
845
-		public function show_admin_version_notice(){
846
-			$fix_url = admin_url("options-general.php?page=ayecode-ui-settings" );
847
-			$button = '<a href="'.esc_url($fix_url).'" class="button-primary">View Settings</a>';
848
-			$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;
849
-			echo '<div class="notice notice-error aui-settings-error-notice"><p>'. wp_kses_post( $message ).'</p></div>';
850
-		}
851
-
852
-		/**
853
-		 * Get the current Font Awesome output settings.
854
-		 *
855
-		 * @return array The array of settings.
856
-		 */
857
-		public function get_settings() {
858
-
859
-			$db_settings = get_option( 'ayecode-ui-settings' );
842
+        /**
843
+         * Show admin notice if backend scripts not loaded.
844
+         */
845
+        public function show_admin_version_notice(){
846
+            $fix_url = admin_url("options-general.php?page=ayecode-ui-settings" );
847
+            $button = '<a href="'.esc_url($fix_url).'" class="button-primary">View Settings</a>';
848
+            $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;
849
+            echo '<div class="notice notice-error aui-settings-error-notice"><p>'. wp_kses_post( $message ).'</p></div>';
850
+        }
851
+
852
+        /**
853
+         * Get the current Font Awesome output settings.
854
+         *
855
+         * @return array The array of settings.
856
+         */
857
+        public function get_settings() {
858
+
859
+            $db_settings = get_option( 'ayecode-ui-settings' );
860 860
 
861 861
             // Maybe show default version notice
862
-			$site_install_date = new DateTime( self::get_site_install_date() );
863
-			$switch_over_date = new DateTime("2024-02-01");
864
-			if ( empty( $db_settings ) && $site_install_date < $switch_over_date ) {
865
-				add_action( 'admin_notices', array( $this, 'show_admin_version_notice' ) );
866
-			}
867
-
868
-			$js_default = 'core-popper';
869
-			$js_default_backend = $js_default;
870
-
871
-			// maybe set defaults (if no settings set)
872
-			if(empty($db_settings)){
873
-				$active_theme = strtolower( get_template() ); // active parent theme.
874
-				$theme_js_settings = self::theme_js_settings();
875
-				if(isset($theme_js_settings[$active_theme])){
876
-					$js_default = $theme_js_settings[$active_theme];
877
-					$js_default_backend = isset($theme_js_settings[$active_theme."_backend"]) ? $theme_js_settings[$active_theme."_backend"] : $js_default;
878
-				}
879
-			}
862
+            $site_install_date = new DateTime( self::get_site_install_date() );
863
+            $switch_over_date = new DateTime("2024-02-01");
864
+            if ( empty( $db_settings ) && $site_install_date < $switch_over_date ) {
865
+                add_action( 'admin_notices', array( $this, 'show_admin_version_notice' ) );
866
+            }
880 867
 
881
-			/**
882
-			 * Filter the default settings.
883
-			 */
884
-			$defaults = apply_filters( 'ayecode-ui-default-settings', array(
885
-				'css'            => 'compatibility', // core, compatibility
886
-				'js'             => $js_default, // js to load, core-popper, popper
887
-				'html_font_size' => '16', // js to load, core-popper, popper
888
-				'css_backend'    => 'compatibility', // core, compatibility
889
-				'js_backend'     => $js_default_backend, // js to load, core-popper, popper
890
-				'disable_admin'  => '', // URL snippets to disable loading on admin
868
+            $js_default = 'core-popper';
869
+            $js_default_backend = $js_default;
870
+
871
+            // maybe set defaults (if no settings set)
872
+            if(empty($db_settings)){
873
+                $active_theme = strtolower( get_template() ); // active parent theme.
874
+                $theme_js_settings = self::theme_js_settings();
875
+                if(isset($theme_js_settings[$active_theme])){
876
+                    $js_default = $theme_js_settings[$active_theme];
877
+                    $js_default_backend = isset($theme_js_settings[$active_theme."_backend"]) ? $theme_js_settings[$active_theme."_backend"] : $js_default;
878
+                }
879
+            }
880
+
881
+            /**
882
+             * Filter the default settings.
883
+             */
884
+            $defaults = apply_filters( 'ayecode-ui-default-settings', array(
885
+                'css'            => 'compatibility', // core, compatibility
886
+                'js'             => $js_default, // js to load, core-popper, popper
887
+                'html_font_size' => '16', // js to load, core-popper, popper
888
+                'css_backend'    => 'compatibility', // core, compatibility
889
+                'js_backend'     => $js_default_backend, // js to load, core-popper, popper
890
+                'disable_admin'  => '', // URL snippets to disable loading on admin
891 891
                 'bs_ver'         => '5', // The default bootstrap version to sue by default
892
-			), $db_settings );
892
+            ), $db_settings );
893 893
 
894
-			$settings = wp_parse_args( $db_settings, $defaults );
894
+            $settings = wp_parse_args( $db_settings, $defaults );
895 895
 
896
-			/**
897
-			 * Filter the Bootstrap settings.
898
-			 *
899
-			 * @todo if we add this filer people might use it and then it defeats the purpose of this class :/
900
-			 */
901
-			return $this->settings = apply_filters( 'ayecode-ui-settings', $settings, $db_settings, $defaults );
902
-		}
896
+            /**
897
+             * Filter the Bootstrap settings.
898
+             *
899
+             * @todo if we add this filer people might use it and then it defeats the purpose of this class :/
900
+             */
901
+            return $this->settings = apply_filters( 'ayecode-ui-settings', $settings, $db_settings, $defaults );
902
+        }
903 903
 
904 904
 
905
-		/**
906
-		 * The settings page html output.
907
-		 */
908
-		public function settings_page() {
909
-			if ( ! current_user_can( 'manage_options' ) ) {
910
-				wp_die( esc_attr__( 'You do not have sufficient permissions to access this page.', 'ayecode-connect' ) );
911
-			}
905
+        /**
906
+         * The settings page html output.
907
+         */
908
+        public function settings_page() {
909
+            if ( ! current_user_can( 'manage_options' ) ) {
910
+                wp_die( esc_attr__( 'You do not have sufficient permissions to access this page.', 'ayecode-connect' ) );
911
+            }
912 912
             $overrides = apply_filters( 'ayecode-ui-settings', array(), array(), array() );
913 913
 
914
-			?>
914
+            ?>
915 915
             <div class="wrap">
916 916
                 <h1><?php echo esc_attr( $this->name ); ?></h1>
917 917
                 <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>
918 918
                 <form method="post" action="options.php">
919 919
 					<?php
920
-					settings_fields( 'ayecode-ui-settings' );
921
-					do_settings_sections( 'ayecode-ui-settings' );
922
-					?>
920
+                    settings_fields( 'ayecode-ui-settings' );
921
+                    do_settings_sections( 'ayecode-ui-settings' );
922
+                    ?>
923 923
 
924 924
                     <h2><?php esc_html_e( 'BootStrap Version', 'ayecode-connect' ); ?></h2>
925 925
                     <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>
926 926
 	                <div class="bsui"><?php
927
-	                if ( ! empty( $overrides ) ) {
928
-		                echo aui()->alert(array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
929
-			                'type'=> 'info',
930
-			                'content'=> esc_attr__("Some options are disabled as your current theme is overriding them.", 'ayecode-connect' )
931
-		                ));
932
-	                }
933
-	                ?>
927
+                    if ( ! empty( $overrides ) ) {
928
+                        echo aui()->alert(array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
929
+                            'type'=> 'info',
930
+                            'content'=> esc_attr__("Some options are disabled as your current theme is overriding them.", 'ayecode-connect' )
931
+                        ));
932
+                    }
933
+                    ?>
934 934
                     </div>
935 935
                     <table class="form-table wpbs-table-version-settings">
936 936
                         <tr valign="top">
@@ -1014,77 +1014,77 @@  discard block
 block discarded – undo
1014 1014
                     </table>
1015 1015
 
1016 1016
 					<?php
1017
-					submit_button();
1018
-					?>
1017
+                    submit_button();
1018
+                    ?>
1019 1019
                 </form>
1020 1020
                 <div id="wpbs-version" data-aui-source="<?php echo esc_attr( $this->get_load_source() ); ?>"><?php echo esc_html( $this->version ); ?></div>
1021 1021
             </div>
1022 1022
 			<?php
1023
-		}
1023
+        }
1024 1024
 
1025 1025
         public function get_load_source(){
1026
-	        $file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
1027
-	        $plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
1028
-
1029
-	        // Find source plugin/theme of SD
1030
-	        $source = array();
1031
-	        if ( strpos( $file, $plugins_dir ) !== false ) {
1032
-		        $source = explode( "/", plugin_basename( $file ) );
1033
-	        } else if ( function_exists( 'get_theme_root' ) ) {
1034
-		        $themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
1035
-
1036
-		        if ( strpos( $file, $themes_dir ) !== false ) {
1037
-			        $source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
1038
-		        }
1039
-	        }
1026
+            $file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
1027
+            $plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
1028
+
1029
+            // Find source plugin/theme of SD
1030
+            $source = array();
1031
+            if ( strpos( $file, $plugins_dir ) !== false ) {
1032
+                $source = explode( "/", plugin_basename( $file ) );
1033
+            } else if ( function_exists( 'get_theme_root' ) ) {
1034
+                $themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
1035
+
1036
+                if ( strpos( $file, $themes_dir ) !== false ) {
1037
+                    $source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
1038
+                }
1039
+            }
1040 1040
 
1041 1041
             return isset($source[0]) ? esc_attr($source[0]) : '';
1042 1042
         }
1043 1043
 
1044
-		public function customizer_settings($wp_customize){
1045
-			$wp_customize->add_section('aui_settings', array(
1046
-				'title'    => __('AyeCode UI', 'ayecode-connect' ),
1047
-				'priority' => 120,
1048
-			));
1049
-
1050
-			//  =============================
1051
-			//  = Color Picker              =
1052
-			//  =============================
1053
-			$wp_customize->add_setting('aui_options[color_primary]', array(
1054
-				'default'           => AUI_PRIMARY_COLOR,
1055
-				'sanitize_callback' => 'sanitize_hex_color',
1056
-				'capability'        => 'edit_theme_options',
1057
-				'type'              => 'option',
1058
-				'transport'         => 'refresh',
1059
-			));
1060
-			$wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_primary', array(
1061
-				'label'    => __('Primary Color', 'ayecode-connect' ),
1062
-				'section'  => 'aui_settings',
1063
-				'settings' => 'aui_options[color_primary]',
1064
-			)));
1065
-
1066
-			$wp_customize->add_setting('aui_options[color_secondary]', array(
1067
-				'default'           => '#6c757d',
1068
-				'sanitize_callback' => 'sanitize_hex_color',
1069
-				'capability'        => 'edit_theme_options',
1070
-				'type'              => 'option',
1071
-				'transport'         => 'refresh',
1072
-			));
1073
-			$wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_secondary', array(
1074
-				'label'    => __('Secondary Color', 'ayecode-connect' ),
1075
-				'section'  => 'aui_settings',
1076
-				'settings' => 'aui_options[color_secondary]',
1077
-			)));
1078
-		}
1079
-
1080
-		/**
1081
-		 * CSS to help with conflict issues with other plugins and themes using bootstrap v3.
1082
-		 *
1083
-		 * @return mixed
1084
-		 */
1085
-		public static function bs3_compat_css() {
1086
-			ob_start();
1087
-			?>
1044
+        public function customizer_settings($wp_customize){
1045
+            $wp_customize->add_section('aui_settings', array(
1046
+                'title'    => __('AyeCode UI', 'ayecode-connect' ),
1047
+                'priority' => 120,
1048
+            ));
1049
+
1050
+            //  =============================
1051
+            //  = Color Picker              =
1052
+            //  =============================
1053
+            $wp_customize->add_setting('aui_options[color_primary]', array(
1054
+                'default'           => AUI_PRIMARY_COLOR,
1055
+                'sanitize_callback' => 'sanitize_hex_color',
1056
+                'capability'        => 'edit_theme_options',
1057
+                'type'              => 'option',
1058
+                'transport'         => 'refresh',
1059
+            ));
1060
+            $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_primary', array(
1061
+                'label'    => __('Primary Color', 'ayecode-connect' ),
1062
+                'section'  => 'aui_settings',
1063
+                'settings' => 'aui_options[color_primary]',
1064
+            )));
1065
+
1066
+            $wp_customize->add_setting('aui_options[color_secondary]', array(
1067
+                'default'           => '#6c757d',
1068
+                'sanitize_callback' => 'sanitize_hex_color',
1069
+                'capability'        => 'edit_theme_options',
1070
+                'type'              => 'option',
1071
+                'transport'         => 'refresh',
1072
+            ));
1073
+            $wp_customize->add_control( new WP_Customize_Color_Control($wp_customize, 'color_secondary', array(
1074
+                'label'    => __('Secondary Color', 'ayecode-connect' ),
1075
+                'section'  => 'aui_settings',
1076
+                'settings' => 'aui_options[color_secondary]',
1077
+            )));
1078
+        }
1079
+
1080
+        /**
1081
+         * CSS to help with conflict issues with other plugins and themes using bootstrap v3.
1082
+         *
1083
+         * @return mixed
1084
+         */
1085
+        public static function bs3_compat_css() {
1086
+            ob_start();
1087
+            ?>
1088 1088
             <style>
1089 1089
                 /* Bootstrap 3 compatibility */
1090 1090
                 body.modal-open .modal-backdrop.show:not(.in) {opacity:0.5;}
@@ -1113,374 +1113,374 @@  discard block
 block discarded – undo
1113 1113
                 <?php } ?>
1114 1114
             </style>
1115 1115
 			<?php
1116
-			return str_replace( array(
1117
-				'<style>',
1118
-				'</style>'
1119
-			), '', self::minify_css( ob_get_clean() ) );
1120
-		}
1116
+            return str_replace( array(
1117
+                '<style>',
1118
+                '</style>'
1119
+            ), '', self::minify_css( ob_get_clean() ) );
1120
+        }
1121 1121
 
1122
-		public static function custom_css( $compatibility = true, $is_fse = false ) {
1123
-			global $aui_bs5;
1122
+        public static function custom_css( $compatibility = true, $is_fse = false ) {
1123
+            global $aui_bs5;
1124 1124
 
1125
-			$colors = array();
1125
+            $colors = array();
1126 1126
 
1127
-			if ( defined( 'BLOCKSTRAP_VERSION' ) ) {
1128
-				$setting = wp_get_global_settings();
1127
+            if ( defined( 'BLOCKSTRAP_VERSION' ) ) {
1128
+                $setting = wp_get_global_settings();
1129 1129
 
1130
-				if ( ! empty( $setting['color']['palette']['theme'] ) ) {
1131
-					foreach ( $setting['color']['palette']['theme'] as $color ) {
1132
-						$colors[$color['slug']] = esc_attr( $color['color'] );
1133
-					}
1134
-				}
1130
+                if ( ! empty( $setting['color']['palette']['theme'] ) ) {
1131
+                    foreach ( $setting['color']['palette']['theme'] as $color ) {
1132
+                        $colors[$color['slug']] = esc_attr( $color['color'] );
1133
+                    }
1134
+                }
1135 1135
 
1136
-				if ( ! empty( $setting['color']['palette']['custom'] ) ) {
1137
-					foreach ( $setting['color']['palette']['custom'] as $color ) {
1138
-						$colors[$color['slug']] = esc_attr( $color['color'] );
1139
-					}
1140
-				}
1141
-			} else {
1142
-				$settings = get_option( 'aui_options' );
1143
-
1144
-				$colors = array(
1145
-					'primary'   => ! empty( $settings['color_primary'] ) ? $settings['color_primary'] : AUI_PRIMARY_COLOR,
1146
-					'secondary' => ! empty( $settings['color_secondary'] ) ? $settings['color_secondary'] : AUI_SECONDARY_COLOR
1147
-				);
1148
-			}
1149
-
1150
-			ob_start();
1151
-			?><style><?php
1152
-			// BS v3 compat
1153
-			if( self::is_bs3_compat() ){
1154
-				echo self::bs3_compat_css(); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1155
-			}
1156
-
1157
-			//$is_fse = false;
1158
-			//if ( is_admin() && ( !empty($_REQUEST['postType']) || self::is_block_editor() ) && ( defined( 'BLOCKSTRAP_VERSION' ) || defined( 'AUI_FSE' ) )  ) {
1159
-				//$is_fse = true;
1160
-			//}
1161
-
1162
-			$custom_front = ! is_admin() ? true : apply_filters('ayecode_ui_custom_front', false );
1163
-			$custom_admin = $is_fse || self::is_preview() ? true : apply_filters('ayecode_ui_custom_admin', false );
1136
+                if ( ! empty( $setting['color']['palette']['custom'] ) ) {
1137
+                    foreach ( $setting['color']['palette']['custom'] as $color ) {
1138
+                        $colors[$color['slug']] = esc_attr( $color['color'] );
1139
+                    }
1140
+                }
1141
+            } else {
1142
+                $settings = get_option( 'aui_options' );
1143
+
1144
+                $colors = array(
1145
+                    'primary'   => ! empty( $settings['color_primary'] ) ? $settings['color_primary'] : AUI_PRIMARY_COLOR,
1146
+                    'secondary' => ! empty( $settings['color_secondary'] ) ? $settings['color_secondary'] : AUI_SECONDARY_COLOR
1147
+                );
1148
+            }
1149
+
1150
+            ob_start();
1151
+            ?><style><?php
1152
+            // BS v3 compat
1153
+            if( self::is_bs3_compat() ){
1154
+                echo self::bs3_compat_css(); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1155
+            }
1156
+
1157
+            //$is_fse = false;
1158
+            //if ( is_admin() && ( !empty($_REQUEST['postType']) || self::is_block_editor() ) && ( defined( 'BLOCKSTRAP_VERSION' ) || defined( 'AUI_FSE' ) )  ) {
1159
+                //$is_fse = true;
1160
+            //}
1161
+
1162
+            $custom_front = ! is_admin() ? true : apply_filters('ayecode_ui_custom_front', false );
1163
+            $custom_admin = $is_fse || self::is_preview() ? true : apply_filters('ayecode_ui_custom_admin', false );
1164 1164
             $bs_custom_css = apply_filters( 'ayecode_ui_bs_custom_css', $custom_admin || $custom_front );
1165
-			//$bs_custom_css = true; // Force true to fix any color issue.
1165
+            //$bs_custom_css = true; // Force true to fix any color issue.
1166 1166
 
1167
-			$colors_css = '';
1168
-			if ( ! empty( $colors ) && $bs_custom_css ) {
1169
-				$d_colors = self::get_colors(true);
1167
+            $colors_css = '';
1168
+            if ( ! empty( $colors ) && $bs_custom_css ) {
1169
+                $d_colors = self::get_colors(true);
1170 1170
 
1171
-				foreach ( $colors as $key => $color ) {
1172
-					if ( ( empty( $d_colors[$key]) || $d_colors[$key] != $color) || $is_fse ) {
1173
-						$var = $is_fse ? "var(--wp--preset--color--$key)" : $color;
1174
-						$compat = $is_fse ? '.editor-styles-wrapper' : $compatibility;
1171
+                foreach ( $colors as $key => $color ) {
1172
+                    if ( ( empty( $d_colors[$key]) || $d_colors[$key] != $color) || $is_fse ) {
1173
+                        $var = $is_fse ? "var(--wp--preset--color--$key)" : $color;
1174
+                        $compat = $is_fse ? '.editor-styles-wrapper' : $compatibility;
1175 1175
 
1176
-						$colors_css .= $aui_bs5 ? self::css_overwrite_bs5( $key,$var, $compat, $color ) : self::css_overwrite( $key, $var, $compat, $color );
1177
-					}
1178
-				}
1179
-			}
1176
+                        $colors_css .= $aui_bs5 ? self::css_overwrite_bs5( $key,$var, $compat, $color ) : self::css_overwrite( $key, $var, $compat, $color );
1177
+                    }
1178
+                }
1179
+            }
1180 1180
 
1181
-			if ( $colors_css ) {
1182
-				echo $colors_css; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1183
-			}
1181
+            if ( $colors_css ) {
1182
+                echo $colors_css; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1183
+            }
1184 1184
 
1185
-			// Set admin bar z-index lower when modal is open.
1186
-			echo ' body.modal-open #wpadminbar{z-index:999}.embed-responsive-16by9 .fluid-width-video-wrapper{padding:0 !important;position:initial}';
1185
+            // Set admin bar z-index lower when modal is open.
1186
+            echo ' body.modal-open #wpadminbar{z-index:999}.embed-responsive-16by9 .fluid-width-video-wrapper{padding:0 !important;position:initial}';
1187 1187
 
1188
-			if ( is_admin() ) {
1189
-				echo ' body.modal-open #adminmenuwrap{z-index:999} body.modal-open #wpadminbar{z-index:1025}';
1190
-			}
1188
+            if ( is_admin() ) {
1189
+                echo ' body.modal-open #adminmenuwrap{z-index:999} body.modal-open #wpadminbar{z-index:1025}';
1190
+            }
1191 1191
 
1192
-			$custom_css = '';
1192
+            $custom_css = '';
1193 1193
 
1194
-			if ( $aui_bs5 && defined( 'BLOCKSTRAP_VERSION' ) && $bs_custom_css ) {
1195
-				$css = '';
1196
-				$theme_settings = wp_get_global_styles();
1194
+            if ( $aui_bs5 && defined( 'BLOCKSTRAP_VERSION' ) && $bs_custom_css ) {
1195
+                $css = '';
1196
+                $theme_settings = wp_get_global_styles();
1197 1197
 
1198
-				// Font face
1199
-				if( !empty( $theme_settings['typography']['fontFamily'] ) ){
1200
-					$t_fontface = str_replace( array('var:preset|','font-family|'), array('--wp--preset--','font-family--'), $theme_settings['typography']['fontFamily']  ); //var(--wp--preset--font-family--poppins)
1201
-					$css .= '--bs-body-font-family: ' . esc_attr($t_fontface) . ';';
1202
-				}
1198
+                // Font face
1199
+                if( !empty( $theme_settings['typography']['fontFamily'] ) ){
1200
+                    $t_fontface = str_replace( array('var:preset|','font-family|'), array('--wp--preset--','font-family--'), $theme_settings['typography']['fontFamily']  ); //var(--wp--preset--font-family--poppins)
1201
+                    $css .= '--bs-body-font-family: ' . esc_attr($t_fontface) . ';';
1202
+                }
1203 1203
 
1204
-				// font size
1205
-				if( !empty( $theme_settings['typography']['fontSize'] ) ){
1206
-					$css .= '--bs-body-font-size: ' . esc_attr( $theme_settings['typography']['fontSize'] ) . ' ;';
1207
-				}
1204
+                // font size
1205
+                if( !empty( $theme_settings['typography']['fontSize'] ) ){
1206
+                    $css .= '--bs-body-font-size: ' . esc_attr( $theme_settings['typography']['fontSize'] ) . ' ;';
1207
+                }
1208 1208
 
1209
-				// line height
1210
-				 if( !empty( $theme_settings['typography']['lineHeight'] ) ){
1211
-					$css .= '--bs-body-line-height: ' . esc_attr( $theme_settings['typography']['lineHeight'] ) . ';';
1212
-				}
1209
+                // line height
1210
+                    if( !empty( $theme_settings['typography']['lineHeight'] ) ){
1211
+                    $css .= '--bs-body-line-height: ' . esc_attr( $theme_settings['typography']['lineHeight'] ) . ';';
1212
+                }
1213 1213
 
1214 1214
 
1215
-				   // font weight
1216
-				 if( !empty( $theme_settings['typography']['fontWeight'] ) ){
1217
-					$css .= '--bs-body-font-weight: ' . esc_attr( $theme_settings['typography']['fontWeight'] ) . ';';
1218
-				}
1215
+                    // font weight
1216
+                    if( !empty( $theme_settings['typography']['fontWeight'] ) ){
1217
+                    $css .= '--bs-body-font-weight: ' . esc_attr( $theme_settings['typography']['fontWeight'] ) . ';';
1218
+                }
1219 1219
 
1220
-				// Background
1221
-				 if( !empty( $theme_settings['color']['background'] ) ){
1222
-					$css .= '--bs-body-bg: ' . esc_attr( $theme_settings['color']['background'] ) . ';';
1223
-				}
1220
+                // Background
1221
+                    if( !empty( $theme_settings['color']['background'] ) ){
1222
+                    $css .= '--bs-body-bg: ' . esc_attr( $theme_settings['color']['background'] ) . ';';
1223
+                }
1224 1224
 
1225
-				 // Background Gradient
1226
-				 if( !empty( $theme_settings['color']['gradient'] ) ){
1227
-					$css .= 'background: ' . esc_attr( $theme_settings['color']['gradient'] ) . ';';
1228
-				}
1225
+                    // Background Gradient
1226
+                    if( !empty( $theme_settings['color']['gradient'] ) ){
1227
+                    $css .= 'background: ' . esc_attr( $theme_settings['color']['gradient'] ) . ';';
1228
+                }
1229 1229
 
1230
-				   // Background Gradient
1231
-				 if( !empty( $theme_settings['color']['gradient'] ) ){
1232
-					$css .= 'background: ' . esc_attr( $theme_settings['color']['gradient'] ) . ';';
1233
-				}
1230
+                    // Background Gradient
1231
+                    if( !empty( $theme_settings['color']['gradient'] ) ){
1232
+                    $css .= 'background: ' . esc_attr( $theme_settings['color']['gradient'] ) . ';';
1233
+                }
1234 1234
 
1235
-				// text color
1236
-				if( !empty( $theme_settings['color']['text'] ) ){
1237
-					$css .= '--bs-body-color: ' . esc_attr( $theme_settings['color']['text'] ) . ';';
1238
-				}
1235
+                // text color
1236
+                if( !empty( $theme_settings['color']['text'] ) ){
1237
+                    $css .= '--bs-body-color: ' . esc_attr( $theme_settings['color']['text'] ) . ';';
1238
+                }
1239 1239
 
1240 1240
 
1241
-				// link colors
1242
-				if( !empty( $theme_settings['elements']['link']['color']['text'] ) ){
1243
-					$css .= '--bs-link-color: ' . esc_attr( $theme_settings['elements']['link']['color']['text'] ) . ';';
1244
-				}
1245
-				if( !empty( $theme_settings['elements']['link'][':hover']['color']['text'] ) ){
1246
-					$css .= '--bs-link-hover-color: ' . esc_attr( $theme_settings['elements']['link'][':hover']['color']['text'] ) . ';';
1247
-				}
1241
+                // link colors
1242
+                if( !empty( $theme_settings['elements']['link']['color']['text'] ) ){
1243
+                    $css .= '--bs-link-color: ' . esc_attr( $theme_settings['elements']['link']['color']['text'] ) . ';';
1244
+                }
1245
+                if( !empty( $theme_settings['elements']['link'][':hover']['color']['text'] ) ){
1246
+                    $css .= '--bs-link-hover-color: ' . esc_attr( $theme_settings['elements']['link'][':hover']['color']['text'] ) . ';';
1247
+                }
1248 1248
 
1249
-				if($css){
1250
-					$custom_css .= $is_fse ? 'body.editor-styles-wrapper{' . esc_attr( $css ) . '}' : 'body{' . esc_attr( $css ) . '}';
1251
-				}
1249
+                if($css){
1250
+                    $custom_css .= $is_fse ? 'body.editor-styles-wrapper{' . esc_attr( $css ) . '}' : 'body{' . esc_attr( $css ) . '}';
1251
+                }
1252 1252
 
1253
-				$bep = $is_fse ? 'body.editor-styles-wrapper ' : '';
1253
+                $bep = $is_fse ? 'body.editor-styles-wrapper ' : '';
1254 1254
 
1255
-				// Headings
1256
-				$headings_css = '';
1257
-				if( !empty( $theme_settings['elements']['heading']['color']['text'] ) ){
1258
-					$headings_css .= "color: " . esc_attr( $theme_settings['elements']['heading']['color']['text'] ) . ";";
1259
-				}
1255
+                // Headings
1256
+                $headings_css = '';
1257
+                if( !empty( $theme_settings['elements']['heading']['color']['text'] ) ){
1258
+                    $headings_css .= "color: " . esc_attr( $theme_settings['elements']['heading']['color']['text'] ) . ";";
1259
+                }
1260 1260
 
1261
-				// heading background
1262
-				if( !empty( $theme_settings['elements']['heading']['color']['background'] ) ){
1263
-					$headings_css .= 'background: ' . esc_attr( $theme_settings['elements']['heading']['color']['background'] ) . ';';
1264
-				}
1261
+                // heading background
1262
+                if( !empty( $theme_settings['elements']['heading']['color']['background'] ) ){
1263
+                    $headings_css .= 'background: ' . esc_attr( $theme_settings['elements']['heading']['color']['background'] ) . ';';
1264
+                }
1265 1265
 
1266
-				 // heading font family
1267
-				if( !empty( $theme_settings['elements']['heading']['typography']['fontFamily'] ) ){
1268
-					$headings_css .= 'font-family: ' . esc_attr( $theme_settings['elements']['heading']['typography']['fontFamily']  ) . ';';
1269
-				}
1266
+                    // heading font family
1267
+                if( !empty( $theme_settings['elements']['heading']['typography']['fontFamily'] ) ){
1268
+                    $headings_css .= 'font-family: ' . esc_attr( $theme_settings['elements']['heading']['typography']['fontFamily']  ) . ';';
1269
+                }
1270 1270
 
1271
-				if( $headings_css ){
1272
-					$custom_css .= "$bep h1,$bep h2,$bep h3, $bep h4,$bep h5,$bep h6{ " . esc_attr( $headings_css ) . "}";
1273
-				}
1271
+                if( $headings_css ){
1272
+                    $custom_css .= "$bep h1,$bep h2,$bep h3, $bep h4,$bep h5,$bep h6{ " . esc_attr( $headings_css ) . "}";
1273
+                }
1274 1274
 
1275
-				$hs = array('h1','h2','h3','h4','h5','h6');
1275
+                $hs = array('h1','h2','h3','h4','h5','h6');
1276 1276
 
1277
-				foreach($hs as $hn){
1278
-					$h_css = '';
1279
-					 if( !empty( $theme_settings['elements'][$hn]['color']['text'] ) ){
1280
-						$h_css .= 'color: ' . esc_attr( $theme_settings['elements'][$hn]['color']['text'] ) . ';';
1281
-					 }
1277
+                foreach($hs as $hn){
1278
+                    $h_css = '';
1279
+                        if( !empty( $theme_settings['elements'][$hn]['color']['text'] ) ){
1280
+                        $h_css .= 'color: ' . esc_attr( $theme_settings['elements'][$hn]['color']['text'] ) . ';';
1281
+                        }
1282 1282
 
1283
-					  if( !empty( $theme_settings['elements'][$hn]['typography']['fontSize'] ) ){
1284
-						$h_css .= 'font-size: ' . esc_attr( $theme_settings['elements'][$hn]['typography']['fontSize']  ) . ';';
1285
-					 }
1283
+                        if( !empty( $theme_settings['elements'][$hn]['typography']['fontSize'] ) ){
1284
+                        $h_css .= 'font-size: ' . esc_attr( $theme_settings['elements'][$hn]['typography']['fontSize']  ) . ';';
1285
+                        }
1286 1286
 
1287
-					  if( !empty( $theme_settings['elements'][$hn]['typography']['fontFamily'] ) ){
1288
-						$h_css .= 'font-family: ' . esc_attr( $theme_settings['elements'][$hn]['typography']['fontFamily']  ) . ';';
1289
-					 }
1287
+                        if( !empty( $theme_settings['elements'][$hn]['typography']['fontFamily'] ) ){
1288
+                        $h_css .= 'font-family: ' . esc_attr( $theme_settings['elements'][$hn]['typography']['fontFamily']  ) . ';';
1289
+                        }
1290 1290
 
1291
-					 if($h_css){
1292
-						$custom_css .= esc_attr( $bep  . $hn ) . '{'.esc_attr( $h_css ).'}';
1293
-					 }
1294
-				}
1295
-			}
1291
+                        if($h_css){
1292
+                        $custom_css .= esc_attr( $bep  . $hn ) . '{'.esc_attr( $h_css ).'}';
1293
+                        }
1294
+                }
1295
+            }
1296 1296
 			
1297
-			if ( $custom_css ) {
1298
-				echo $custom_css; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1299
-			}
1297
+            if ( $custom_css ) {
1298
+                echo $custom_css; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
1299
+            }
1300 1300
 
1301
-			// Pagination on Hello Elementor theme.
1302
-			if ( function_exists( 'hello_elementor_setup' ) ) {
1303
-				echo '.aui-nav-links .pagination{justify-content:inherit}';
1304
-			}
1301
+            // Pagination on Hello Elementor theme.
1302
+            if ( function_exists( 'hello_elementor_setup' ) ) {
1303
+                echo '.aui-nav-links .pagination{justify-content:inherit}';
1304
+            }
1305 1305
 
1306 1306
             // Astra theme - when woocommerce active they add compatibility CSS which breaks select2 in modals
1307 1307
             if( defined('ASTRA_THEME_VERSION')){
1308 1308
                 echo '.woocommerce-js.modal-open .select2-container .select2-dropdown, .woocommerce-js.modal-open .select2-container .select2-search__field, .woocommerce-page.modal-open .select2-container .select2-dropdown, .woocommerce-page.modal-open .select2-container .select2-search__field{z-index: 1056;}';
1309 1309
             }
1310 1310
 
1311
-			?></style><?php
1312
-			$custom_css = ob_get_clean();
1311
+            ?></style><?php
1312
+            $custom_css = ob_get_clean();
1313 1313
 
1314
-			/*
1314
+            /*
1315 1315
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
1316 1316
 			 */
1317
-			return str_replace( array(
1318
-				'<style>',
1319
-				'</style>'
1320
-			), '', self::minify_css( $custom_css ) );
1321
-		}
1322
-
1323
-		/**
1324
-		 * Check if we should add booststrap 3 compatibility changes.
1325
-		 *
1326
-		 * @return bool
1327
-		 */
1328
-		public static function is_bs3_compat(){
1329
-			return defined('AYECODE_UI_BS3_COMPAT') || defined('SVQ_THEME_VERSION') || defined('FUSION_BUILDER_VERSION');
1330
-		}
1331
-
1332
-		public static function hex_to_rgb( $hex ) {
1333
-			// Remove '#' if present
1334
-			$hex = str_replace( '#', '', $hex );
1335
-
1336
-			// Check if input is RGB
1337
-			if ( strpos( $hex, 'rgba(' ) === 0 || strpos( $hex, 'rgb(' ) === 0 ) {
1338
-				$_rgb = explode( ',', str_replace( array( 'rgba(', 'rgb(', ')' ), '', $hex ) );
1339
-
1340
-				$rgb = ( isset( $_rgb[0] ) ? (int) trim( $_rgb[0] ) : '0' ) . ',';
1341
-				$rgb .= ( isset( $_rgb[1] ) ? (int) trim( $_rgb[1] ) : '0' ) . ',';
1342
-				$rgb .= ( isset( $_rgb[2] ) ? (int) trim( $_rgb[2] ) : '0' );
1343
-
1344
-				return $rgb;
1345
-			}
1346
-
1347
-			// Convert 3-digit hex to 6-digit hex
1348
-			if ( strlen( $hex ) == 3 ) {
1349
-				$hex = str_repeat( substr( $hex, 0, 1 ), 2 ) . str_repeat( substr( $hex, 1, 1 ), 2 ) . str_repeat( substr( $hex, 2, 1 ), 2 );
1350
-			}
1351
-
1352
-			// Convert hex to RGB
1353
-			$r = hexdec( substr( $hex, 0, 2 ) );
1354
-			$g = hexdec( substr( $hex, 2, 2 ) );
1355
-			$b = hexdec( substr( $hex, 4, 2 ) );
1356
-
1357
-			// Return RGB values as an array
1358
-			return $r . ',' . $g . ',' . $b;
1359
-		}
1360
-
1361
-		/**
1362
-		 * Build the CSS to overwrite a bootstrap color variable.
1363
-		 *
1364
-		 * @param $type
1365
-		 * @param $color_code
1366
-		 * @param $compatibility
1367
-		 *
1368
-		 * @return string
1369
-		 */
1370
-		public static function css_overwrite_bs5($type,$color_code,$compatibility, $hex = '' ){
1371
-			global $aui_bs5;
1372
-
1373
-			$is_var = false;
1374
-			$is_custom = strpos($type, 'custom-') !== false ? true : false;
1375
-			if(!$color_code){return '';}
1376
-			if(strpos($color_code, 'var') !== false){
1377
-				//if(!sanitize_hex_color($color_code)){
1378
-				$color_code = esc_attr($color_code);
1379
-				$is_var = true;
1317
+            return str_replace( array(
1318
+                '<style>',
1319
+                '</style>'
1320
+            ), '', self::minify_css( $custom_css ) );
1321
+        }
1322
+
1323
+        /**
1324
+         * Check if we should add booststrap 3 compatibility changes.
1325
+         *
1326
+         * @return bool
1327
+         */
1328
+        public static function is_bs3_compat(){
1329
+            return defined('AYECODE_UI_BS3_COMPAT') || defined('SVQ_THEME_VERSION') || defined('FUSION_BUILDER_VERSION');
1330
+        }
1331
+
1332
+        public static function hex_to_rgb( $hex ) {
1333
+            // Remove '#' if present
1334
+            $hex = str_replace( '#', '', $hex );
1335
+
1336
+            // Check if input is RGB
1337
+            if ( strpos( $hex, 'rgba(' ) === 0 || strpos( $hex, 'rgb(' ) === 0 ) {
1338
+                $_rgb = explode( ',', str_replace( array( 'rgba(', 'rgb(', ')' ), '', $hex ) );
1339
+
1340
+                $rgb = ( isset( $_rgb[0] ) ? (int) trim( $_rgb[0] ) : '0' ) . ',';
1341
+                $rgb .= ( isset( $_rgb[1] ) ? (int) trim( $_rgb[1] ) : '0' ) . ',';
1342
+                $rgb .= ( isset( $_rgb[2] ) ? (int) trim( $_rgb[2] ) : '0' );
1343
+
1344
+                return $rgb;
1345
+            }
1346
+
1347
+            // Convert 3-digit hex to 6-digit hex
1348
+            if ( strlen( $hex ) == 3 ) {
1349
+                $hex = str_repeat( substr( $hex, 0, 1 ), 2 ) . str_repeat( substr( $hex, 1, 1 ), 2 ) . str_repeat( substr( $hex, 2, 1 ), 2 );
1350
+            }
1351
+
1352
+            // Convert hex to RGB
1353
+            $r = hexdec( substr( $hex, 0, 2 ) );
1354
+            $g = hexdec( substr( $hex, 2, 2 ) );
1355
+            $b = hexdec( substr( $hex, 4, 2 ) );
1356
+
1357
+            // Return RGB values as an array
1358
+            return $r . ',' . $g . ',' . $b;
1359
+        }
1360
+
1361
+        /**
1362
+         * Build the CSS to overwrite a bootstrap color variable.
1363
+         *
1364
+         * @param $type
1365
+         * @param $color_code
1366
+         * @param $compatibility
1367
+         *
1368
+         * @return string
1369
+         */
1370
+        public static function css_overwrite_bs5($type,$color_code,$compatibility, $hex = '' ){
1371
+            global $aui_bs5;
1372
+
1373
+            $is_var = false;
1374
+            $is_custom = strpos($type, 'custom-') !== false ? true : false;
1375
+            if(!$color_code){return '';}
1376
+            if(strpos($color_code, 'var') !== false){
1377
+                //if(!sanitize_hex_color($color_code)){
1378
+                $color_code = esc_attr($color_code);
1379
+                $is_var = true;
1380 1380
 //				$color_code = "rgba($color_code, 0.5)";
1381 1381
 //                echo '###1'.$color_code.'###';//exit;
1382
-			}
1382
+            }
1383 1383
 
1384 1384
 //            echo '@@@'.$color_code.'==='.self::hex_to_rgb($color_code);exit;
1385 1385
 
1386
-			if(!$color_code){return '';}
1386
+            if(!$color_code){return '';}
1387 1387
 
1388
-			$rgb = self::hex_to_rgb($hex);
1388
+            $rgb = self::hex_to_rgb($hex);
1389 1389
 
1390
-			if($compatibility===true || $compatibility===1){
1391
-				$compatibility = '.bsui';
1392
-			}elseif(!$compatibility){
1393
-				$compatibility = '';
1394
-			}else{
1395
-				$compatibility = esc_attr($compatibility);
1396
-			}
1390
+            if($compatibility===true || $compatibility===1){
1391
+                $compatibility = '.bsui';
1392
+            }elseif(!$compatibility){
1393
+                $compatibility = '';
1394
+            }else{
1395
+                $compatibility = esc_attr($compatibility);
1396
+            }
1397 1397
 
1398
-			$prefix = $compatibility ? $compatibility . " " : "";
1398
+            $prefix = $compatibility ? $compatibility . " " : "";
1399 1399
 
1400 1400
 
1401 1401
             $output = '';
1402 1402
 
1403 1403
 //            echo '####'.$color_code;exit;
1404 1404
 
1405
-			$type = sanitize_html_class($type);
1405
+            $type = sanitize_html_class($type);
1406
+
1407
+            /**
1408
+             * c = color, b = background color, o = border-color, f = fill
1409
+             */
1410
+            $selectors = array(
1411
+                ".btn-{$type}"                                              => array( 'b', 'o' ),
1412
+                ".btn-{$type}.disabled"                                     => array( 'b', 'o' ),
1413
+                ".btn-{$type}:disabled"                                     => array( 'b', 'o' ),
1414
+                ".btn-outline-{$type}"                                      => array( 'c', 'o' ),
1415
+                ".btn-outline-{$type}:hover"                                => array( 'b', 'o' ),
1416
+                ".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ),
1417
+                ".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ),
1418
+                ".show>.btn-outline-{$type}.dropdown-toggle"                => array( 'b', 'o' ),
1419
+                ".badge-{$type}"                                            => array( 'b' ),
1420
+                ".alert-{$type}"                                            => array( 'b', 'o' ),
1421
+                ".bg-{$type}"                                               => array( 'b', 'f' ),
1422
+                ".btn-link.btn-{$type}"                                     => array( 'c' ),
1423
+                ".text-{$type}"                                     => array( 'c' ),
1424
+            );
1425
+
1426
+            if ( $aui_bs5 ) {
1427
+                unset($selectors[".alert-{$type}" ]);
1428
+            }
1406 1429
 
1407
-			/**
1408
-			 * c = color, b = background color, o = border-color, f = fill
1409
-			 */
1410
-			$selectors = array(
1411
-				".btn-{$type}"                                              => array( 'b', 'o' ),
1412
-				".btn-{$type}.disabled"                                     => array( 'b', 'o' ),
1413
-				".btn-{$type}:disabled"                                     => array( 'b', 'o' ),
1414
-				".btn-outline-{$type}"                                      => array( 'c', 'o' ),
1415
-				".btn-outline-{$type}:hover"                                => array( 'b', 'o' ),
1416
-				".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ),
1417
-				".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ),
1418
-				".show>.btn-outline-{$type}.dropdown-toggle"                => array( 'b', 'o' ),
1419
-				".badge-{$type}"                                            => array( 'b' ),
1420
-				".alert-{$type}"                                            => array( 'b', 'o' ),
1421
-				".bg-{$type}"                                               => array( 'b', 'f' ),
1422
-				".btn-link.btn-{$type}"                                     => array( 'c' ),
1423
-				".text-{$type}"                                     => array( 'c' ),
1424
-			);
1425
-
1426
-			if ( $aui_bs5 ) {
1427
-				unset($selectors[".alert-{$type}" ]);
1428
-			}
1429
-
1430
-			if ( $type == 'primary' ) {
1431
-				$selectors = $selectors + array(
1432
-						'a'                                                                                                    => array( 'c' ),
1433
-						'.btn-link'                                                                                            => array( 'c' ),
1434
-						'.dropdown-item.active'                                                                                => array( 'b' ),
1435
-						'.custom-control-input:checked~.custom-control-label::before'                                          => array(
1436
-							'b',
1437
-							'o'
1438
-						),
1439
-						'.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before'                   => array(
1440
-							'b',
1441
-							'o'
1442
-						),
1443
-						'.nav-pills .nav-link.active'                                                                          => array( 'b' ),
1444
-						'.nav-pills .show>.nav-link'                                                                           => array( 'b' ),
1445
-						'.page-link'                                                                                           => array( 'c' ),
1446
-						'.page-item.active .page-link'                                                                         => array(
1447
-							'b',
1448
-							'o'
1449
-						),
1450
-						'.progress-bar'                                                                                        => array( 'b' ),
1451
-						'.list-group-item.active'                                                                              => array(
1452
-							'b',
1453
-							'o'
1454
-						),
1455
-						'.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ),
1456
-					);
1457
-			}
1430
+            if ( $type == 'primary' ) {
1431
+                $selectors = $selectors + array(
1432
+                        'a'                                                                                                    => array( 'c' ),
1433
+                        '.btn-link'                                                                                            => array( 'c' ),
1434
+                        '.dropdown-item.active'                                                                                => array( 'b' ),
1435
+                        '.custom-control-input:checked~.custom-control-label::before'                                          => array(
1436
+                            'b',
1437
+                            'o'
1438
+                        ),
1439
+                        '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before'                   => array(
1440
+                            'b',
1441
+                            'o'
1442
+                        ),
1443
+                        '.nav-pills .nav-link.active'                                                                          => array( 'b' ),
1444
+                        '.nav-pills .show>.nav-link'                                                                           => array( 'b' ),
1445
+                        '.page-link'                                                                                           => array( 'c' ),
1446
+                        '.page-item.active .page-link'                                                                         => array(
1447
+                            'b',
1448
+                            'o'
1449
+                        ),
1450
+                        '.progress-bar'                                                                                        => array( 'b' ),
1451
+                        '.list-group-item.active'                                                                              => array(
1452
+                            'b',
1453
+                            'o'
1454
+                        ),
1455
+                        '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ),
1456
+                    );
1457
+            }
1458 1458
 
1459 1459
 
1460 1460
 
1461 1461
             // link
1462
-			if ( $type === 'primary' ) {
1463
-				$output .= 'html body {--bs-link-hover-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .75); --bs-link-color: var(--bs-'.esc_attr($type).'); }';
1464
-				$output .= $prefix . ' .breadcrumb{--bs-breadcrumb-item-active-color: '.esc_attr($color_code).';  }';
1465
-				$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).'; }';
1462
+            if ( $type === 'primary' ) {
1463
+                $output .= 'html body {--bs-link-hover-color: rgba(var(--bs-'.esc_attr($type).'-rgb), .75); --bs-link-color: var(--bs-'.esc_attr($type).'); }';
1464
+                $output .= $prefix . ' .breadcrumb{--bs-breadcrumb-item-active-color: '.esc_attr($color_code).';  }';
1465
+                $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).'; }';
1466 1466
 
1467
-				$output .= $prefix . ' a{color: var(--bs-'.esc_attr($type).');}';
1468
-				$output .= $prefix . ' .text-primary{color: var(--bs-'.esc_attr($type).') !important;}';
1467
+                $output .= $prefix . ' a{color: var(--bs-'.esc_attr($type).');}';
1468
+                $output .= $prefix . ' .text-primary{color: var(--bs-'.esc_attr($type).') !important;}';
1469 1469
 
1470 1470
                 // dropdown
1471
-				$output .= $prefix . ' .dropdown-menu{--bs-dropdown-link-hover-color: var(--bs-'.esc_attr($type).'); --bs-dropdown-link-active-color: var(--bs-'.esc_attr($type).');}';
1471
+                $output .= $prefix . ' .dropdown-menu{--bs-dropdown-link-hover-color: var(--bs-'.esc_attr($type).'); --bs-dropdown-link-active-color: var(--bs-'.esc_attr($type).');}';
1472 1472
 
1473 1473
                 // pagination
1474
-				$output .= $prefix . ' .pagination{--bs-pagination-hover-color: var(--bs-'.esc_attr($type).'); --bs-pagination-active-bg: var(--bs-'.esc_attr($type).');}';
1474
+                $output .= $prefix . ' .pagination{--bs-pagination-hover-color: var(--bs-'.esc_attr($type).'); --bs-pagination-active-bg: var(--bs-'.esc_attr($type).');}';
1475 1475
 
1476
-			}
1476
+            }
1477 1477
 
1478
-			$output .= $prefix . ' .link-'.esc_attr($type).' {color: var(--bs-'.esc_attr($type).'-rgb) !important;}';
1479
-			$output .= $prefix . ' .link-'.esc_attr($type).':hover {color: rgba(var(--bs-'.esc_attr($type).'-rgb), .8) !important;}';
1478
+            $output .= $prefix . ' .link-'.esc_attr($type).' {color: var(--bs-'.esc_attr($type).'-rgb) !important;}';
1479
+            $output .= $prefix . ' .link-'.esc_attr($type).':hover {color: rgba(var(--bs-'.esc_attr($type).'-rgb), .8) !important;}';
1480 1480
 
1481
-			//  buttons
1482
-			$output .= $prefix . ' .btn-'.esc_attr($type).'{';
1483
-			$output .= ' 
1481
+            //  buttons
1482
+            $output .= $prefix . ' .btn-'.esc_attr($type).'{';
1483
+            $output .= ' 
1484 1484
             --bs-btn-bg: '.esc_attr($color_code).';
1485 1485
             --bs-btn-border-color: '.esc_attr($color_code).';
1486 1486
             --bs-btn-hover-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .9);
@@ -1498,11 +1498,11 @@  discard block
 block discarded – undo
1498 1498
 //			--bs-btn-active-color: #fff;
1499 1499
 //			--bs-btn-disabled-color: #fff;
1500 1500
 //            ';
1501
-			$output .= '}';
1501
+            $output .= '}';
1502 1502
 
1503
-			//  buttons outline
1504
-			$output .= $prefix . ' .btn-outline-'.esc_attr($type).'{';
1505
-			$output .= ' 
1503
+            //  buttons outline
1504
+            $output .= $prefix . ' .btn-outline-'.esc_attr($type).'{';
1505
+            $output .= ' 
1506 1506
 			--bs-btn-color: '.esc_attr($color_code).';
1507 1507
             --bs-btn-border-color: '.esc_attr($color_code).';
1508 1508
             --bs-btn-hover-bg: rgba(var(--bs-'.esc_attr($type).'-rgb), .9);
@@ -1520,37 +1520,37 @@  discard block
 block discarded – undo
1520 1520
 //			--bs-btn-active-color: #fff;
1521 1521
 //			--bs-btn-disabled-color: #fff;
1522 1522
 //            ';
1523
-			$output .= '}';
1523
+            $output .= '}';
1524 1524
 
1525 1525
 
1526 1526
             // button hover
1527
-			$output .= $prefix . ' .btn-'.esc_attr($type).':hover{';
1528
-			$output .= ' 
1527
+            $output .= $prefix . ' .btn-'.esc_attr($type).':hover{';
1528
+            $output .= ' 
1529 1529
             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);
1530 1530
             }
1531 1531
             ';
1532 1532
 
1533 1533
 
1534
-			if ( $aui_bs5 ) {
1534
+            if ( $aui_bs5 ) {
1535 1535
 //				$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).'; }';
1536
-				$output .= 'html body {--bs-'.esc_attr($type).': '.esc_attr($color_code).'; }';
1537
-				$output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }';
1538
-			}
1536
+                $output .= 'html body {--bs-'.esc_attr($type).': '.esc_attr($color_code).'; }';
1537
+                $output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }';
1538
+            }
1539 1539
 
1540 1540
 
1541
-			if ( $is_custom ) {
1541
+            if ( $is_custom ) {
1542 1542
 
1543 1543
 //				echo '###'.$type;exit;
1544 1544
 
1545
-				// build rules into each type
1546
-				foreach($selectors as $selector => $types){
1547
-					$selector = $compatibility ? $compatibility . " ".$selector : $selector;
1548
-					$types = array_combine($types,$types);
1549
-					if(isset($types['c'])){$color[] = $selector;}
1550
-					if(isset($types['b'])){$background[] = $selector;}
1551
-					if(isset($types['o'])){$border[] = $selector;}
1552
-					if(isset($types['f'])){$fill[] = $selector;}
1553
-				}
1545
+                // build rules into each type
1546
+                foreach($selectors as $selector => $types){
1547
+                    $selector = $compatibility ? $compatibility . " ".$selector : $selector;
1548
+                    $types = array_combine($types,$types);
1549
+                    if(isset($types['c'])){$color[] = $selector;}
1550
+                    if(isset($types['b'])){$background[] = $selector;}
1551
+                    if(isset($types['o'])){$border[] = $selector;}
1552
+                    if(isset($types['f'])){$fill[] = $selector;}
1553
+                }
1554 1554
 
1555 1555
 //				// build rules into each type
1556 1556
 //				foreach($important_selectors as $selector => $types){
@@ -1562,853 +1562,853 @@  discard block
 block discarded – undo
1562 1562
 //					if(isset($types['f'])){$fill_i[] = $selector;}
1563 1563
 //				}
1564 1564
 
1565
-				// add any color rules
1566
-				if(!empty($color)){
1567
-					$output .= implode(",",$color) . "{color: $color_code;} ";
1568
-				}
1569
-				if(!empty($color_i)){
1570
-					$output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1571
-				}
1565
+                // add any color rules
1566
+                if(!empty($color)){
1567
+                    $output .= implode(",",$color) . "{color: $color_code;} ";
1568
+                }
1569
+                if(!empty($color_i)){
1570
+                    $output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1571
+                }
1572
+
1573
+                // add any background color rules
1574
+                if(!empty($background)){
1575
+                    $output .= implode(",",$background) . "{background-color: $color_code;} ";
1576
+                }
1577
+                if(!empty($background_i)){
1578
+                    $output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} ";
1579
+//				$output .= implode(",",$background_i) . "{background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;} ";
1580
+                }
1581
+
1582
+                // add any border color rules
1583
+                if(!empty($border)){
1584
+                    $output .= implode(",",$border) . "{border-color: $color_code;} ";
1585
+                }
1586
+                if(!empty($border_i)){
1587
+                    $output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1588
+                }
1589
+
1590
+                // add any fill color rules
1591
+                if(!empty($fill)){
1592
+                    $output .= implode(",",$fill) . "{fill: $color_code;} ";
1593
+                }
1594
+                if(!empty($fill_i)){
1595
+                    $output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1596
+                }
1597
+
1598
+            }
1599
+
1600
+
1601
+
1602
+
1603
+            $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;' : '';
1604
+            // darken
1605
+            $darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075");
1606
+            $darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10");
1607
+            $darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125");
1608
+            $darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4");
1609
+
1610
+            // lighten
1611
+            $lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25");
1612
+
1613
+            // opacity see https://css-tricks.com/8-digit-hex-codes/
1614
+            $op_25 = $color_code."40"; // 25% opacity
1615
+
1616
+
1617
+            // button states
1618
+            $output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : '';
1619
+            $output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1620
+//			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: #000;    border-color: #000;} ";
1621
+            $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;} ";
1622
+            $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.";} ";
1623
+            $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;} ";
1624
+            $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);} ";
1625
+
1626
+            // text
1627
+//			$output .= $prefix .".xxx, .text-{$type} {color: var(--bs-".esc_attr($type).");} ";
1628
+
1629
+
1630
+//			if ( $type == 'primary' ) {
1631
+//				// dropdown's
1632
+//				$output .= $prefix . " .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
1633
+//
1634
+//				// input states
1635
+//				$output .= $prefix . " .form-control:focus{border-color: " . $lighten_25 . ";box-shadow: 0 0 0 0.2rem $op_25;} ";
1636
+//
1637
+//				// page link
1638
+//				$output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1639
+//			}
1640
+
1641
+            // alerts
1642
+            if ( $aui_bs5 ) {
1643
+//				$output .= $is_var ? '' : $prefix ." .alert-{$type} {background-color: ".$color_code."20;    border-color: ".$color_code."30;color:$darker_40} ";
1644
+                $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;} ";
1645
+            }
1646
+
1647
+            return $output;
1648
+        }
1649
+
1650
+        /**
1651
+         * Build the CSS to overwrite a bootstrap color variable.
1652
+         *
1653
+         * @param $type
1654
+         * @param $color_code
1655
+         * @param $compatibility
1656
+         *
1657
+         * @return string
1658
+         */
1659
+        public static function css_overwrite($type,$color_code,$compatibility, $hex = '' ){
1660
+            global $aui_bs5;
1661
+
1662
+            $is_var = false;
1663
+            if(!$color_code){return '';}
1664
+            if(strpos($color_code, 'var') !== false){
1665
+                //if(!sanitize_hex_color($color_code)){
1666
+                $color_code = esc_attr($color_code);
1667
+                $is_var = true;
1668
+//				$color_code = "rgba($color_code, 0.5)";
1669
+//                echo '###1'.$color_code.'###';//exit;
1670
+            }
1671
+
1672
+//            echo '@@@'.$color_code.'==='.self::hex_to_rgb($color_code);exit;
1673
+
1674
+            if(!$color_code){return '';}
1675
+
1676
+            $rgb = self::hex_to_rgb($hex);
1677
+
1678
+            if($compatibility===true || $compatibility===1){
1679
+                $compatibility = '.bsui';
1680
+            }elseif(!$compatibility){
1681
+                $compatibility = '';
1682
+            }else{
1683
+                $compatibility = esc_attr($compatibility);
1684
+            }
1685
+
1686
+
1687
+
1688
+//            echo '####'.$color_code;exit;
1689
+
1690
+            $type = sanitize_html_class($type);
1691
+
1692
+            /**
1693
+             * c = color, b = background color, o = border-color, f = fill
1694
+             */
1695
+            $selectors = array(
1696
+                ".btn-{$type}"                                              => array( 'b', 'o' ),
1697
+                ".btn-{$type}.disabled"                                     => array( 'b', 'o' ),
1698
+                ".btn-{$type}:disabled"                                     => array( 'b', 'o' ),
1699
+                ".btn-outline-{$type}"                                      => array( 'c', 'o' ),
1700
+                ".btn-outline-{$type}:hover"                                => array( 'b', 'o' ),
1701
+                ".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ),
1702
+                ".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ),
1703
+                ".show>.btn-outline-{$type}.dropdown-toggle"                => array( 'b', 'o' ),
1704
+                ".badge-{$type}"                                            => array( 'b' ),
1705
+                ".alert-{$type}"                                            => array( 'b', 'o' ),
1706
+                ".bg-{$type}"                                               => array( 'b', 'f' ),
1707
+                ".btn-link.btn-{$type}"                                     => array( 'c' ),
1708
+            );
1709
+
1710
+            if ( $aui_bs5 ) {
1711
+                unset($selectors[".alert-{$type}" ]);
1712
+            }
1713
+
1714
+            if ( $type == 'primary' ) {
1715
+                $selectors = $selectors + array(
1716
+                        'a'                                                                                                    => array( 'c' ),
1717
+                        '.btn-link'                                                                                            => array( 'c' ),
1718
+                        '.dropdown-item.active'                                                                                => array( 'b' ),
1719
+                        '.custom-control-input:checked~.custom-control-label::before'                                          => array(
1720
+                            'b',
1721
+                            'o'
1722
+                        ),
1723
+                        '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before'                   => array(
1724
+                            'b',
1725
+                            'o'
1726
+                        ),
1727
+                        '.nav-pills .nav-link.active'                                                                          => array( 'b' ),
1728
+                        '.nav-pills .show>.nav-link'                                                                           => array( 'b' ),
1729
+                        '.page-link'                                                                                           => array( 'c' ),
1730
+                        '.page-item.active .page-link'                                                                         => array(
1731
+                            'b',
1732
+                            'o'
1733
+                        ),
1734
+                        '.progress-bar'                                                                                        => array( 'b' ),
1735
+                        '.list-group-item.active'                                                                              => array(
1736
+                            'b',
1737
+                            'o'
1738
+                        ),
1739
+                        '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ),
1740
+//				    '.custom-range::-webkit-slider-thumb' => array('b'), // these break the inline rules...
1741
+//				    '.custom-range::-moz-range-thumb' => array('b'),
1742
+//				    '.custom-range::-ms-thumb' => array('b'),
1743
+                    );
1744
+            }
1745
+
1746
+            $important_selectors = array(
1747
+                ".bg-{$type}" => array('b','f'),
1748
+                ".border-{$type}" => array('o'),
1749
+                ".text-{$type}" => array('c'),
1750
+            );
1751
+
1752
+            $color = array();
1753
+            $color_i = array();
1754
+            $background = array();
1755
+            $background_i = array();
1756
+            $border = array();
1757
+            $border_i = array();
1758
+            $fill = array();
1759
+            $fill_i = array();
1760
+
1761
+            $output = '';
1762
+
1763
+            if ( $aui_bs5 ) {
1764
+//				$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).'; }';
1765
+                $output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }';
1766
+            }
1767
+
1768
+            // build rules into each type
1769
+            foreach($selectors as $selector => $types){
1770
+                $selector = $compatibility ? $compatibility . " ".$selector : $selector;
1771
+                $types = array_combine($types,$types);
1772
+                if(isset($types['c'])){$color[] = $selector;}
1773
+                if(isset($types['b'])){$background[] = $selector;}
1774
+                if(isset($types['o'])){$border[] = $selector;}
1775
+                if(isset($types['f'])){$fill[] = $selector;}
1776
+            }
1777
+
1778
+            // build rules into each type
1779
+            foreach($important_selectors as $selector => $types){
1780
+                $selector = $compatibility ? $compatibility . " ".$selector : $selector;
1781
+                $types = array_combine($types,$types);
1782
+                if(isset($types['c'])){$color_i[] = $selector;}
1783
+                if(isset($types['b'])){$background_i[] = $selector;}
1784
+                if(isset($types['o'])){$border_i[] = $selector;}
1785
+                if(isset($types['f'])){$fill_i[] = $selector;}
1786
+            }
1787
+
1788
+            // add any color rules
1789
+            if(!empty($color)){
1790
+                $output .= implode(",",$color) . "{color: $color_code;} ";
1791
+            }
1792
+            if(!empty($color_i)){
1793
+                $output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1794
+            }
1795
+
1796
+            // add any background color rules
1797
+            if(!empty($background)){
1798
+                $output .= implode(",",$background) . "{background-color: $color_code;} ";
1799
+            }
1800
+            if(!empty($background_i)){
1801
+                $output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} ";
1802
+//				$output .= implode(",",$background_i) . "{background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;} ";
1803
+            }
1804
+
1805
+            // add any border color rules
1806
+            if(!empty($border)){
1807
+                $output .= implode(",",$border) . "{border-color: $color_code;} ";
1808
+            }
1809
+            if(!empty($border_i)){
1810
+                $output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1811
+            }
1812
+
1813
+            // add any fill color rules
1814
+            if(!empty($fill)){
1815
+                $output .= implode(",",$fill) . "{fill: $color_code;} ";
1816
+            }
1817
+            if(!empty($fill_i)){
1818
+                $output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1819
+            }
1820
+
1821
+
1822
+            $prefix = $compatibility ? $compatibility . " " : "";
1823
+
1824
+            $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;' : '';
1825
+            // darken
1826
+            $darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075");
1827
+            $darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10");
1828
+            $darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125");
1829
+            $darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4");
1830
+
1831
+            // lighten
1832
+            $lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25");
1833
+
1834
+            // opacity see https://css-tricks.com/8-digit-hex-codes/
1835
+            $op_25 = $color_code."40"; // 25% opacity
1836
+
1837
+
1838
+            // button states
1839
+            $output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : '';
1840
+            $output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1841
+//			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: #000;    border-color: #000;} ";
1842
+            $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;} ";
1843
+            $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.";} ";
1844
+            $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;} ";
1845
+
1846
+            if ( $type == 'primary' ) {
1847
+                // dropdown's
1848
+                $output .= $prefix . " .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
1849
+
1850
+                // input states
1851
+                $output .= $prefix . " .form-control:focus{border-color: " . $lighten_25 . ";box-shadow: 0 0 0 0.2rem $op_25;} ";
1852
+
1853
+                // page link
1854
+                $output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1855
+            }
1856
+
1857
+            // alerts
1858
+            if ( $aui_bs5 ) {
1859
+//				$output .= $is_var ? '' : $prefix ." .alert-{$type} {background-color: ".$color_code."20;    border-color: ".$color_code."30;color:$darker_40} ";
1860
+                $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;} ";
1861
+            }
1862
+
1863
+            return $output;
1864
+        }
1865
+
1866
+        /**
1867
+         *
1868
+         * @deprecated 0.1.76 Use css_overwrite()
1869
+         *
1870
+         * @param $color_code
1871
+         * @param $compatibility
1872
+         * @param $use_variable
1873
+         *
1874
+         * @return string
1875
+         */
1876
+        public static function css_primary($color_code,$compatibility, $use_variable = false){
1877
+
1878
+            if(!$use_variable){
1879
+                $color_code = sanitize_hex_color($color_code);
1880
+                if(!$color_code){return '';}
1881
+            }
1882
+
1883
+            /**
1884
+             * c = color, b = background color, o = border-color, f = fill
1885
+             */
1886
+            $selectors = array(
1887
+                'a' => array('c'),
1888
+                '.btn-primary' => array('b','o'),
1889
+                '.btn-primary.disabled' => array('b','o'),
1890
+                '.btn-primary:disabled' => array('b','o'),
1891
+                '.btn-outline-primary' => array('c','o'),
1892
+                '.btn-outline-primary:hover' => array('b','o'),
1893
+                '.btn-outline-primary:not(:disabled):not(.disabled).active' => array('b','o'),
1894
+                '.btn-outline-primary:not(:disabled):not(.disabled):active' => array('b','o'),
1895
+                '.show>.btn-outline-primary.dropdown-toggle' => array('b','o'),
1896
+                '.btn-link' => array('c'),
1897
+                '.dropdown-item.active' => array('b'),
1898
+                '.custom-control-input:checked~.custom-control-label::before' => array('b','o'),
1899
+                '.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before' => array('b','o'),
1900
+//				'.custom-range::-webkit-slider-thumb' => array('b'), // these break the inline rules...
1901
+//				'.custom-range::-moz-range-thumb' => array('b'),
1902
+//				'.custom-range::-ms-thumb' => array('b'),
1903
+                '.nav-pills .nav-link.active' => array('b'),
1904
+                '.nav-pills .show>.nav-link' => array('b'),
1905
+                '.page-link' => array('c'),
1906
+                '.page-item.active .page-link' => array('b','o'),
1907
+                '.badge-primary' => array('b'),
1908
+                '.alert-primary' => array('b','o'),
1909
+                '.progress-bar' => array('b'),
1910
+                '.list-group-item.active' => array('b','o'),
1911
+                '.bg-primary' => array('b','f'),
1912
+                '.btn-link.btn-primary' => array('c'),
1913
+                '.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array('b'),
1914
+            );
1915
+
1916
+            $important_selectors = array(
1917
+                '.bg-primary' => array('b','f'),
1918
+                '.border-primary' => array('o'),
1919
+                '.text-primary' => array('c'),
1920
+            );
1921
+
1922
+            $color = array();
1923
+            $color_i = array();
1924
+            $background = array();
1925
+            $background_i = array();
1926
+            $border = array();
1927
+            $border_i = array();
1928
+            $fill = array();
1929
+            $fill_i = array();
1930
+
1931
+            $output = '';
1932
+
1933
+            // build rules into each type
1934
+            foreach($selectors as $selector => $types){
1935
+                $selector = $compatibility ? ".bsui ".$selector : $selector;
1936
+                $types = array_combine($types,$types);
1937
+                if(isset($types['c'])){$color[] = $selector;}
1938
+                if(isset($types['b'])){$background[] = $selector;}
1939
+                if(isset($types['o'])){$border[] = $selector;}
1940
+                if(isset($types['f'])){$fill[] = $selector;}
1941
+            }
1942
+
1943
+            // build rules into each type
1944
+            foreach($important_selectors as $selector => $types){
1945
+                $selector = $compatibility ? ".bsui ".$selector : $selector;
1946
+                $types = array_combine($types,$types);
1947
+                if(isset($types['c'])){$color_i[] = $selector;}
1948
+                if(isset($types['b'])){$background_i[] = $selector;}
1949
+                if(isset($types['o'])){$border_i[] = $selector;}
1950
+                if(isset($types['f'])){$fill_i[] = $selector;}
1951
+            }
1952
+
1953
+            // add any color rules
1954
+            if(!empty($color)){
1955
+                $output .= implode(",",$color) . "{color: $color_code;} ";
1956
+            }
1957
+            if(!empty($color_i)){
1958
+                $output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1959
+            }
1960
+
1961
+            // add any background color rules
1962
+            if(!empty($background)){
1963
+                $output .= implode(",",$background) . "{background-color: $color_code;} ";
1964
+            }
1965
+            if(!empty($background_i)){
1966
+                $output .= implode(",",$background_i) . "{background-color: $color_code !important;} ";
1967
+            }
1968
+
1969
+            // add any border color rules
1970
+            if(!empty($border)){
1971
+                $output .= implode(",",$border) . "{border-color: $color_code;} ";
1972
+            }
1973
+            if(!empty($border_i)){
1974
+                $output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1975
+            }
1976
+
1977
+            // add any fill color rules
1978
+            if(!empty($fill)){
1979
+                $output .= implode(",",$fill) . "{fill: $color_code;} ";
1980
+            }
1981
+            if(!empty($fill_i)){
1982
+                $output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1983
+            }
1984
+
1572 1985
 
1573
-				// add any background color rules
1574
-				if(!empty($background)){
1575
-					$output .= implode(",",$background) . "{background-color: $color_code;} ";
1576
-				}
1577
-				if(!empty($background_i)){
1578
-					$output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} ";
1579
-//				$output .= implode(",",$background_i) . "{background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;} ";
1580
-				}
1986
+            $prefix = $compatibility ? ".bsui " : "";
1581 1987
 
1582
-				// add any border color rules
1583
-				if(!empty($border)){
1584
-					$output .= implode(",",$border) . "{border-color: $color_code;} ";
1585
-				}
1586
-				if(!empty($border_i)){
1587
-					$output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1588
-				}
1988
+            // darken
1989
+            $darker_075 = self::css_hex_lighten_darken($color_code,"-0.075");
1990
+            $darker_10 = self::css_hex_lighten_darken($color_code,"-0.10");
1991
+            $darker_125 = self::css_hex_lighten_darken($color_code,"-0.125");
1589 1992
 
1590
-				// add any fill color rules
1591
-				if(!empty($fill)){
1592
-					$output .= implode(",",$fill) . "{fill: $color_code;} ";
1593
-				}
1594
-				if(!empty($fill_i)){
1595
-					$output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1596
-				}
1993
+            // lighten
1994
+            $lighten_25 = self::css_hex_lighten_darken($color_code,"0.25");
1597 1995
 
1598
-			}
1996
+            // opacity see https://css-tricks.com/8-digit-hex-codes/
1997
+            $op_25 = $color_code."40"; // 25% opacity
1599 1998
 
1600 1999
 
2000
+            // button states
2001
+            $output .= $prefix ." .btn-primary:hover, $prefix .btn-primary:focus, $prefix .btn-primary.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
2002
+            $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;} ";
2003
+            $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.";} ";
2004
+            $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;} ";
1601 2005
 
1602 2006
 
1603
-			$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;' : '';
1604
-			// darken
1605
-			$darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075");
1606
-			$darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10");
1607
-			$darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125");
1608
-			$darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4");
2007
+            // dropdown's
2008
+            $output .= $prefix ." .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
1609 2009
 
1610
-			// lighten
1611
-			$lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25");
1612 2010
 
1613
-			// opacity see https://css-tricks.com/8-digit-hex-codes/
1614
-			$op_25 = $color_code."40"; // 25% opacity
2011
+            // input states
2012
+            $output .= $prefix ." .form-control:focus{border-color: ".$lighten_25.";box-shadow: 0 0 0 0.2rem $op_25;} ";
1615 2013
 
2014
+            // page link
2015
+            $output .= $prefix ." .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1616 2016
 
1617
-			// button states
1618
-			$output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : '';
1619
-			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1620
-//			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: #000;    border-color: #000;} ";
1621
-			$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;} ";
1622
-			$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.";} ";
1623
-            $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;} ";
1624
-            $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);} ";
2017
+            return $output;
2018
+        }
1625 2019
 
1626
-			// text
1627
-//			$output .= $prefix .".xxx, .text-{$type} {color: var(--bs-".esc_attr($type).");} ";
2020
+        /**
2021
+         *
2022
+         * @deprecated 0.1.76 Use css_overwrite()
2023
+         *
2024
+         * @param $color_code
2025
+         * @param $compatibility
2026
+         *
2027
+         * @return string
2028
+         */
2029
+        public static function css_secondary($color_code,$compatibility){;
2030
+            $color_code = sanitize_hex_color($color_code);
2031
+            if(!$color_code){return '';}
2032
+            /**
2033
+             * c = color, b = background color, o = border-color, f = fill
2034
+             */
2035
+            $selectors = array(
2036
+                '.btn-secondary' => array('b','o'),
2037
+                '.btn-secondary.disabled' => array('b','o'),
2038
+                '.btn-secondary:disabled' => array('b','o'),
2039
+                '.btn-outline-secondary' => array('c','o'),
2040
+                '.btn-outline-secondary:hover' => array('b','o'),
2041
+                '.btn-outline-secondary.disabled' => array('c'),
2042
+                '.btn-outline-secondary:disabled' => array('c'),
2043
+                '.btn-outline-secondary:not(:disabled):not(.disabled):active' => array('b','o'),
2044
+                '.btn-outline-secondary:not(:disabled):not(.disabled).active' => array('b','o'),
2045
+                '.btn-outline-secondary.dropdown-toggle' => array('b','o'),
2046
+                '.badge-secondary' => array('b'),
2047
+                '.alert-secondary' => array('b','o'),
2048
+                '.btn-link.btn-secondary' => array('c'),
2049
+            );
2050
+
2051
+            $important_selectors = array(
2052
+                '.bg-secondary' => array('b','f'),
2053
+                '.border-secondary' => array('o'),
2054
+                '.text-secondary' => array('c'),
2055
+            );
2056
+
2057
+            $color = array();
2058
+            $color_i = array();
2059
+            $background = array();
2060
+            $background_i = array();
2061
+            $border = array();
2062
+            $border_i = array();
2063
+            $fill = array();
2064
+            $fill_i = array();
1628 2065
 
2066
+            $output = '';
1629 2067
 
1630
-//			if ( $type == 'primary' ) {
1631
-//				// dropdown's
1632
-//				$output .= $prefix . " .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
1633
-//
1634
-//				// input states
1635
-//				$output .= $prefix . " .form-control:focus{border-color: " . $lighten_25 . ";box-shadow: 0 0 0 0.2rem $op_25;} ";
1636
-//
1637
-//				// page link
1638
-//				$output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1639
-//			}
2068
+            // build rules into each type
2069
+            foreach($selectors as $selector => $types){
2070
+                $selector = $compatibility ? ".bsui ".$selector : $selector;
2071
+                $types = array_combine($types,$types);
2072
+                if(isset($types['c'])){$color[] = $selector;}
2073
+                if(isset($types['b'])){$background[] = $selector;}
2074
+                if(isset($types['o'])){$border[] = $selector;}
2075
+                if(isset($types['f'])){$fill[] = $selector;}
2076
+            }
1640 2077
 
1641
-			// alerts
1642
-			if ( $aui_bs5 ) {
1643
-//				$output .= $is_var ? '' : $prefix ." .alert-{$type} {background-color: ".$color_code."20;    border-color: ".$color_code."30;color:$darker_40} ";
1644
-				$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;} ";
1645
-			}
1646
-
1647
-			return $output;
1648
-		}
1649
-
1650
-		/**
1651
-		 * Build the CSS to overwrite a bootstrap color variable.
1652
-		 *
1653
-		 * @param $type
1654
-		 * @param $color_code
1655
-		 * @param $compatibility
1656
-		 *
1657
-		 * @return string
1658
-		 */
1659
-		public static function css_overwrite($type,$color_code,$compatibility, $hex = '' ){
1660
-            global $aui_bs5;
2078
+            // build rules into each type
2079
+            foreach($important_selectors as $selector => $types){
2080
+                $selector = $compatibility ? ".bsui ".$selector : $selector;
2081
+                $types = array_combine($types,$types);
2082
+                if(isset($types['c'])){$color_i[] = $selector;}
2083
+                if(isset($types['b'])){$background_i[] = $selector;}
2084
+                if(isset($types['o'])){$border_i[] = $selector;}
2085
+                if(isset($types['f'])){$fill_i[] = $selector;}
2086
+            }
1661 2087
 
1662
-			$is_var = false;
1663
-			if(!$color_code){return '';}
1664
-			if(strpos($color_code, 'var') !== false){
1665
-				//if(!sanitize_hex_color($color_code)){
1666
-				$color_code = esc_attr($color_code);
1667
-				$is_var = true;
1668
-//				$color_code = "rgba($color_code, 0.5)";
1669
-//                echo '###1'.$color_code.'###';//exit;
1670
-			}
2088
+            // add any color rules
2089
+            if(!empty($color)){
2090
+                $output .= implode(",",$color) . "{color: $color_code;} ";
2091
+            }
2092
+            if(!empty($color_i)){
2093
+                $output .= implode(",",$color_i) . "{color: $color_code !important;} ";
2094
+            }
1671 2095
 
1672
-//            echo '@@@'.$color_code.'==='.self::hex_to_rgb($color_code);exit;
2096
+            // add any background color rules
2097
+            if(!empty($background)){
2098
+                $output .= implode(",",$background) . "{background-color: $color_code;} ";
2099
+            }
2100
+            if(!empty($background_i)){
2101
+                $output .= implode(",",$background_i) . "{background-color: $color_code !important;} ";
2102
+            }
1673 2103
 
1674
-			if(!$color_code){return '';}
2104
+            // add any border color rules
2105
+            if(!empty($border)){
2106
+                $output .= implode(",",$border) . "{border-color: $color_code;} ";
2107
+            }
2108
+            if(!empty($border_i)){
2109
+                $output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
2110
+            }
1675 2111
 
1676
-            $rgb = self::hex_to_rgb($hex);
2112
+            // add any fill color rules
2113
+            if(!empty($fill)){
2114
+                $output .= implode(",",$fill) . "{fill: $color_code;} ";
2115
+            }
2116
+            if(!empty($fill_i)){
2117
+                $output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
2118
+            }
1677 2119
 
1678
-			if($compatibility===true || $compatibility===1){
1679
-				$compatibility = '.bsui';
1680
-			}elseif(!$compatibility){
1681
-				$compatibility = '';
1682
-			}else{
1683
-				$compatibility = esc_attr($compatibility);
1684
-			}
1685 2120
 
2121
+            $prefix = $compatibility ? ".bsui " : "";
1686 2122
 
2123
+            // darken
2124
+            $darker_075 = self::css_hex_lighten_darken($color_code,"-0.075");
2125
+            $darker_10 = self::css_hex_lighten_darken($color_code,"-0.10");
2126
+            $darker_125 = self::css_hex_lighten_darken($color_code,"-0.125");
1687 2127
 
1688
-//            echo '####'.$color_code;exit;
2128
+            // lighten
2129
+            $lighten_25 = self::css_hex_lighten_darken($color_code,"0.25");
1689 2130
 
1690
-			$type = sanitize_html_class($type);
2131
+            // opacity see https://css-tricks.com/8-digit-hex-codes/
2132
+            $op_25 = $color_code."40"; // 25% opacity
1691 2133
 
1692
-			/**
1693
-			 * c = color, b = background color, o = border-color, f = fill
1694
-			 */
1695
-			$selectors = array(
1696
-				".btn-{$type}"                                              => array( 'b', 'o' ),
1697
-				".btn-{$type}.disabled"                                     => array( 'b', 'o' ),
1698
-				".btn-{$type}:disabled"                                     => array( 'b', 'o' ),
1699
-				".btn-outline-{$type}"                                      => array( 'c', 'o' ),
1700
-				".btn-outline-{$type}:hover"                                => array( 'b', 'o' ),
1701
-				".btn-outline-{$type}:not(:disabled):not(.disabled).active" => array( 'b', 'o' ),
1702
-				".btn-outline-{$type}:not(:disabled):not(.disabled):active" => array( 'b', 'o' ),
1703
-				".show>.btn-outline-{$type}.dropdown-toggle"                => array( 'b', 'o' ),
1704
-				".badge-{$type}"                                            => array( 'b' ),
1705
-				".alert-{$type}"                                            => array( 'b', 'o' ),
1706
-				".bg-{$type}"                                               => array( 'b', 'f' ),
1707
-				".btn-link.btn-{$type}"                                     => array( 'c' ),
1708
-			);
1709
-
1710
-			if ( $aui_bs5 ) {
1711
-                unset($selectors[".alert-{$type}" ]);
1712
-			}
1713
-
1714
-			if ( $type == 'primary' ) {
1715
-				$selectors = $selectors + array(
1716
-						'a'                                                                                                    => array( 'c' ),
1717
-						'.btn-link'                                                                                            => array( 'c' ),
1718
-						'.dropdown-item.active'                                                                                => array( 'b' ),
1719
-						'.custom-control-input:checked~.custom-control-label::before'                                          => array(
1720
-							'b',
1721
-							'o'
1722
-						),
1723
-						'.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before'                   => array(
1724
-							'b',
1725
-							'o'
1726
-						),
1727
-						'.nav-pills .nav-link.active'                                                                          => array( 'b' ),
1728
-						'.nav-pills .show>.nav-link'                                                                           => array( 'b' ),
1729
-						'.page-link'                                                                                           => array( 'c' ),
1730
-						'.page-item.active .page-link'                                                                         => array(
1731
-							'b',
1732
-							'o'
1733
-						),
1734
-						'.progress-bar'                                                                                        => array( 'b' ),
1735
-						'.list-group-item.active'                                                                              => array(
1736
-							'b',
1737
-							'o'
1738
-						),
1739
-						'.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array( 'b' ),
1740
-//				    '.custom-range::-webkit-slider-thumb' => array('b'), // these break the inline rules...
1741
-//				    '.custom-range::-moz-range-thumb' => array('b'),
1742
-//				    '.custom-range::-ms-thumb' => array('b'),
1743
-					);
1744
-			}
1745
-
1746
-			$important_selectors = array(
1747
-				".bg-{$type}" => array('b','f'),
1748
-				".border-{$type}" => array('o'),
1749
-				".text-{$type}" => array('c'),
1750
-			);
1751
-
1752
-			$color = array();
1753
-			$color_i = array();
1754
-			$background = array();
1755
-			$background_i = array();
1756
-			$border = array();
1757
-			$border_i = array();
1758
-			$fill = array();
1759
-			$fill_i = array();
1760
-
1761
-			$output = '';
1762
-
1763
-			if ( $aui_bs5 ) {
1764
-//				$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).'; }';
1765
-				$output .= 'html body {--bs-'.esc_attr($type).'-rgb: '.$rgb.'; }';
1766
-			}
1767
-
1768
-			// build rules into each type
1769
-			foreach($selectors as $selector => $types){
1770
-				$selector = $compatibility ? $compatibility . " ".$selector : $selector;
1771
-				$types = array_combine($types,$types);
1772
-				if(isset($types['c'])){$color[] = $selector;}
1773
-				if(isset($types['b'])){$background[] = $selector;}
1774
-				if(isset($types['o'])){$border[] = $selector;}
1775
-				if(isset($types['f'])){$fill[] = $selector;}
1776
-			}
1777
-
1778
-			// build rules into each type
1779
-			foreach($important_selectors as $selector => $types){
1780
-				$selector = $compatibility ? $compatibility . " ".$selector : $selector;
1781
-				$types = array_combine($types,$types);
1782
-				if(isset($types['c'])){$color_i[] = $selector;}
1783
-				if(isset($types['b'])){$background_i[] = $selector;}
1784
-				if(isset($types['o'])){$border_i[] = $selector;}
1785
-				if(isset($types['f'])){$fill_i[] = $selector;}
1786
-			}
1787
-
1788
-			// add any color rules
1789
-			if(!empty($color)){
1790
-				$output .= implode(",",$color) . "{color: $color_code;} ";
1791
-			}
1792
-			if(!empty($color_i)){
1793
-				$output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1794
-			}
1795
-
1796
-			// add any background color rules
1797
-			if(!empty($background)){
1798
-				$output .= implode(",",$background) . "{background-color: $color_code;} ";
1799
-			}
1800
-			if(!empty($background_i)){
1801
-				$output .= $aui_bs5 ? '' : implode(",",$background_i) . "{background-color: $color_code !important;} ";
1802
-//				$output .= implode(",",$background_i) . "{background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;} ";
1803
-			}
1804 2134
 
1805
-			// add any border color rules
1806
-			if(!empty($border)){
1807
-				$output .= implode(",",$border) . "{border-color: $color_code;} ";
1808
-			}
1809
-			if(!empty($border_i)){
1810
-				$output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1811
-			}
2135
+            // button states
2136
+            $output .= $prefix ." .btn-secondary:hover{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
2137
+            $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;} ";
2138
+            $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.";} ";
2139
+            $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;} ";
1812 2140
 
1813
-			// add any fill color rules
1814
-			if(!empty($fill)){
1815
-				$output .= implode(",",$fill) . "{fill: $color_code;} ";
1816
-			}
1817
-			if(!empty($fill_i)){
1818
-				$output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1819
-			}
1820 2141
 
2142
+            return $output;
2143
+        }
1821 2144
 
1822
-			$prefix = $compatibility ? $compatibility . " " : "";
2145
+        /**
2146
+         * Increases or decreases the brightness of a color by a percentage of the current brightness.
2147
+         *
2148
+         * @param   string  $hexCode        Supported formats: `#FFF`, `#FFFFFF`, `FFF`, `FFFFFF`
2149
+         * @param   float   $adjustPercent  A number between -1 and 1. E.g. 0.3 = 30% lighter; -0.4 = 40% darker.
2150
+         *
2151
+         * @return  string
2152
+         */
2153
+        public static function css_hex_lighten_darken($hexCode, $adjustPercent) {
2154
+            $hexCode = ltrim($hexCode, '#');
1823 2155
 
1824
-			$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;' : '';
1825
-			// darken
1826
-			$darker_075 = $is_var ? $color_code.';filter:brightness(0.925)' : self::css_hex_lighten_darken($color_code,"-0.075");
1827
-			$darker_10 = $is_var ? $color_code.';filter:brightness(0.9)' : self::css_hex_lighten_darken($color_code,"-0.10");
1828
-			$darker_125 = $is_var ? $color_code.';filter:brightness(0.875)' : self::css_hex_lighten_darken($color_code,"-0.125");
1829
-			$darker_40 = $is_var ? $color_code.';filter:brightness(0.6)' : self::css_hex_lighten_darken($color_code,"-0.4");
2156
+            if ( strpos( $hexCode, 'rgba(' ) !== false || strpos( $hexCode, 'rgb(' ) !== false ) {
2157
+                return $hexCode;
2158
+            }
1830 2159
 
1831
-			// lighten
1832
-			$lighten_25 = $is_var ? $color_code.';filter:brightness(1.25)' :self::css_hex_lighten_darken($color_code,"0.25");
2160
+            if (strlen($hexCode) == 3) {
2161
+                $hexCode = $hexCode[0] . $hexCode[0] . $hexCode[1] . $hexCode[1] . $hexCode[2] . $hexCode[2];
2162
+            }
1833 2163
 
1834
-			// opacity see https://css-tricks.com/8-digit-hex-codes/
1835
-			$op_25 = $color_code."40"; // 25% opacity
2164
+            $hexCode = array_map('hexdec', str_split($hexCode, 2));
1836 2165
 
2166
+            foreach ($hexCode as & $color) {
2167
+                $adjustableLimit = $adjustPercent < 0 ? $color : 255 - $color;
2168
+                $adjustAmount = ceil($adjustableLimit * $adjustPercent);
1837 2169
 
1838
-			// button states
1839
-			$output .= $is_var ? $prefix ." .btn-{$type}{{$transition }} " : '';
1840
-			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
1841
-//			$output .= $prefix ." .btn-{$type}:hover, $prefix .btn-{$type}:focus, $prefix .btn-{$type}.focus{background-color: #000;    border-color: #000;} ";
1842
-			$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;} ";
1843
-			$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.";} ";
1844
-			$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;} ";
2170
+                $color = str_pad(dechex($color + $adjustAmount), 2, '0', STR_PAD_LEFT);
2171
+            }
1845 2172
 
1846
-			if ( $type == 'primary' ) {
1847
-				// dropdown's
1848
-				$output .= $prefix . " .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
2173
+            return '#' . implode($hexCode);
2174
+        }
1849 2175
 
1850
-				// input states
1851
-				$output .= $prefix . " .form-control:focus{border-color: " . $lighten_25 . ";box-shadow: 0 0 0 0.2rem $op_25;} ";
2176
+        /**
2177
+         * Check if we should display examples.
2178
+         */
2179
+        public function maybe_show_examples(){
2180
+            if(current_user_can('manage_options') && isset($_REQUEST['preview-aui'])){
2181
+                echo "<head>";
2182
+                wp_head();
2183
+                echo "</head>";
2184
+                echo "<body>";
2185
+                echo $this->get_examples(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2186
+                echo "</body>";
2187
+                exit;
2188
+            }
2189
+        }
1852 2190
 
1853
-				// page link
1854
-				$output .= $prefix . " .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
1855
-			}
2191
+        /**
2192
+         * Get developer examples.
2193
+         *
2194
+         * @return string
2195
+         */
2196
+        public function get_examples(){
2197
+            $output = '';
1856 2198
 
1857
-            // alerts
1858
-			if ( $aui_bs5 ) {
1859
-//				$output .= $is_var ? '' : $prefix ." .alert-{$type} {background-color: ".$color_code."20;    border-color: ".$color_code."30;color:$darker_40} ";
1860
-				$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;} ";
1861
-			}
1862
-
1863
-			return $output;
1864
-		}
1865
-
1866
-		/**
1867
-		 *
1868
-		 * @deprecated 0.1.76 Use css_overwrite()
1869
-		 *
1870
-		 * @param $color_code
1871
-		 * @param $compatibility
1872
-		 * @param $use_variable
1873
-		 *
1874
-		 * @return string
1875
-		 */
1876
-		public static function css_primary($color_code,$compatibility, $use_variable = false){
1877
-
1878
-			if(!$use_variable){
1879
-				$color_code = sanitize_hex_color($color_code);
1880
-				if(!$color_code){return '';}
1881
-			}
1882
-
1883
-			/**
1884
-			 * c = color, b = background color, o = border-color, f = fill
1885
-			 */
1886
-			$selectors = array(
1887
-				'a' => array('c'),
1888
-				'.btn-primary' => array('b','o'),
1889
-				'.btn-primary.disabled' => array('b','o'),
1890
-				'.btn-primary:disabled' => array('b','o'),
1891
-				'.btn-outline-primary' => array('c','o'),
1892
-				'.btn-outline-primary:hover' => array('b','o'),
1893
-				'.btn-outline-primary:not(:disabled):not(.disabled).active' => array('b','o'),
1894
-				'.btn-outline-primary:not(:disabled):not(.disabled):active' => array('b','o'),
1895
-				'.show>.btn-outline-primary.dropdown-toggle' => array('b','o'),
1896
-				'.btn-link' => array('c'),
1897
-				'.dropdown-item.active' => array('b'),
1898
-				'.custom-control-input:checked~.custom-control-label::before' => array('b','o'),
1899
-				'.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before' => array('b','o'),
1900
-//				'.custom-range::-webkit-slider-thumb' => array('b'), // these break the inline rules...
1901
-//				'.custom-range::-moz-range-thumb' => array('b'),
1902
-//				'.custom-range::-ms-thumb' => array('b'),
1903
-				'.nav-pills .nav-link.active' => array('b'),
1904
-				'.nav-pills .show>.nav-link' => array('b'),
1905
-				'.page-link' => array('c'),
1906
-				'.page-item.active .page-link' => array('b','o'),
1907
-				'.badge-primary' => array('b'),
1908
-				'.alert-primary' => array('b','o'),
1909
-				'.progress-bar' => array('b'),
1910
-				'.list-group-item.active' => array('b','o'),
1911
-				'.bg-primary' => array('b','f'),
1912
-				'.btn-link.btn-primary' => array('c'),
1913
-				'.select2-container .select2-results__option--highlighted.select2-results__option[aria-selected=true]' => array('b'),
1914
-			);
1915
-
1916
-			$important_selectors = array(
1917
-				'.bg-primary' => array('b','f'),
1918
-				'.border-primary' => array('o'),
1919
-				'.text-primary' => array('c'),
1920
-			);
1921
-
1922
-			$color = array();
1923
-			$color_i = array();
1924
-			$background = array();
1925
-			$background_i = array();
1926
-			$border = array();
1927
-			$border_i = array();
1928
-			$fill = array();
1929
-			$fill_i = array();
1930
-
1931
-			$output = '';
1932
-
1933
-			// build rules into each type
1934
-			foreach($selectors as $selector => $types){
1935
-				$selector = $compatibility ? ".bsui ".$selector : $selector;
1936
-				$types = array_combine($types,$types);
1937
-				if(isset($types['c'])){$color[] = $selector;}
1938
-				if(isset($types['b'])){$background[] = $selector;}
1939
-				if(isset($types['o'])){$border[] = $selector;}
1940
-				if(isset($types['f'])){$fill[] = $selector;}
1941
-			}
1942
-
1943
-			// build rules into each type
1944
-			foreach($important_selectors as $selector => $types){
1945
-				$selector = $compatibility ? ".bsui ".$selector : $selector;
1946
-				$types = array_combine($types,$types);
1947
-				if(isset($types['c'])){$color_i[] = $selector;}
1948
-				if(isset($types['b'])){$background_i[] = $selector;}
1949
-				if(isset($types['o'])){$border_i[] = $selector;}
1950
-				if(isset($types['f'])){$fill_i[] = $selector;}
1951
-			}
1952
-
1953
-			// add any color rules
1954
-			if(!empty($color)){
1955
-				$output .= implode(",",$color) . "{color: $color_code;} ";
1956
-			}
1957
-			if(!empty($color_i)){
1958
-				$output .= implode(",",$color_i) . "{color: $color_code !important;} ";
1959
-			}
1960
-
1961
-			// add any background color rules
1962
-			if(!empty($background)){
1963
-				$output .= implode(",",$background) . "{background-color: $color_code;} ";
1964
-			}
1965
-			if(!empty($background_i)){
1966
-				$output .= implode(",",$background_i) . "{background-color: $color_code !important;} ";
1967
-			}
1968
-
1969
-			// add any border color rules
1970
-			if(!empty($border)){
1971
-				$output .= implode(",",$border) . "{border-color: $color_code;} ";
1972
-			}
1973
-			if(!empty($border_i)){
1974
-				$output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
1975
-			}
1976
-
1977
-			// add any fill color rules
1978
-			if(!empty($fill)){
1979
-				$output .= implode(",",$fill) . "{fill: $color_code;} ";
1980
-			}
1981
-			if(!empty($fill_i)){
1982
-				$output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
1983
-			}
1984
-
1985
-
1986
-			$prefix = $compatibility ? ".bsui " : "";
1987
-
1988
-			// darken
1989
-			$darker_075 = self::css_hex_lighten_darken($color_code,"-0.075");
1990
-			$darker_10 = self::css_hex_lighten_darken($color_code,"-0.10");
1991
-			$darker_125 = self::css_hex_lighten_darken($color_code,"-0.125");
1992
-
1993
-			// lighten
1994
-			$lighten_25 = self::css_hex_lighten_darken($color_code,"0.25");
1995
-
1996
-			// opacity see https://css-tricks.com/8-digit-hex-codes/
1997
-			$op_25 = $color_code."40"; // 25% opacity
1998
-
1999
-
2000
-			// button states
2001
-			$output .= $prefix ." .btn-primary:hover, $prefix .btn-primary:focus, $prefix .btn-primary.focus{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
2002
-			$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;} ";
2003
-			$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.";} ";
2004
-			$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;} ";
2005
-
2006
-
2007
-			// dropdown's
2008
-			$output .= $prefix ." .dropdown-item.active, $prefix .dropdown-item:active{background-color: $color_code;} ";
2009
-
2010
-
2011
-			// input states
2012
-			$output .= $prefix ." .form-control:focus{border-color: ".$lighten_25.";box-shadow: 0 0 0 0.2rem $op_25;} ";
2013
-
2014
-			// page link
2015
-			$output .= $prefix ." .page-link:focus{box-shadow: 0 0 0 0.2rem $op_25;} ";
2016
-
2017
-			return $output;
2018
-		}
2019
-
2020
-		/**
2021
-		 *
2022
-		 * @deprecated 0.1.76 Use css_overwrite()
2023
-		 *
2024
-		 * @param $color_code
2025
-		 * @param $compatibility
2026
-		 *
2027
-		 * @return string
2028
-		 */
2029
-		public static function css_secondary($color_code,$compatibility){;
2030
-			$color_code = sanitize_hex_color($color_code);
2031
-			if(!$color_code){return '';}
2032
-			/**
2033
-			 * c = color, b = background color, o = border-color, f = fill
2034
-			 */
2035
-			$selectors = array(
2036
-				'.btn-secondary' => array('b','o'),
2037
-				'.btn-secondary.disabled' => array('b','o'),
2038
-				'.btn-secondary:disabled' => array('b','o'),
2039
-				'.btn-outline-secondary' => array('c','o'),
2040
-				'.btn-outline-secondary:hover' => array('b','o'),
2041
-				'.btn-outline-secondary.disabled' => array('c'),
2042
-				'.btn-outline-secondary:disabled' => array('c'),
2043
-				'.btn-outline-secondary:not(:disabled):not(.disabled):active' => array('b','o'),
2044
-				'.btn-outline-secondary:not(:disabled):not(.disabled).active' => array('b','o'),
2045
-				'.btn-outline-secondary.dropdown-toggle' => array('b','o'),
2046
-				'.badge-secondary' => array('b'),
2047
-				'.alert-secondary' => array('b','o'),
2048
-				'.btn-link.btn-secondary' => array('c'),
2049
-			);
2050
-
2051
-			$important_selectors = array(
2052
-				'.bg-secondary' => array('b','f'),
2053
-				'.border-secondary' => array('o'),
2054
-				'.text-secondary' => array('c'),
2055
-			);
2056
-
2057
-			$color = array();
2058
-			$color_i = array();
2059
-			$background = array();
2060
-			$background_i = array();
2061
-			$border = array();
2062
-			$border_i = array();
2063
-			$fill = array();
2064
-			$fill_i = array();
2065
-
2066
-			$output = '';
2067
-
2068
-			// build rules into each type
2069
-			foreach($selectors as $selector => $types){
2070
-				$selector = $compatibility ? ".bsui ".$selector : $selector;
2071
-				$types = array_combine($types,$types);
2072
-				if(isset($types['c'])){$color[] = $selector;}
2073
-				if(isset($types['b'])){$background[] = $selector;}
2074
-				if(isset($types['o'])){$border[] = $selector;}
2075
-				if(isset($types['f'])){$fill[] = $selector;}
2076
-			}
2077
-
2078
-			// build rules into each type
2079
-			foreach($important_selectors as $selector => $types){
2080
-				$selector = $compatibility ? ".bsui ".$selector : $selector;
2081
-				$types = array_combine($types,$types);
2082
-				if(isset($types['c'])){$color_i[] = $selector;}
2083
-				if(isset($types['b'])){$background_i[] = $selector;}
2084
-				if(isset($types['o'])){$border_i[] = $selector;}
2085
-				if(isset($types['f'])){$fill_i[] = $selector;}
2086
-			}
2087
-
2088
-			// add any color rules
2089
-			if(!empty($color)){
2090
-				$output .= implode(",",$color) . "{color: $color_code;} ";
2091
-			}
2092
-			if(!empty($color_i)){
2093
-				$output .= implode(",",$color_i) . "{color: $color_code !important;} ";
2094
-			}
2095
-
2096
-			// add any background color rules
2097
-			if(!empty($background)){
2098
-				$output .= implode(",",$background) . "{background-color: $color_code;} ";
2099
-			}
2100
-			if(!empty($background_i)){
2101
-				$output .= implode(",",$background_i) . "{background-color: $color_code !important;} ";
2102
-			}
2103
-
2104
-			// add any border color rules
2105
-			if(!empty($border)){
2106
-				$output .= implode(",",$border) . "{border-color: $color_code;} ";
2107
-			}
2108
-			if(!empty($border_i)){
2109
-				$output .= implode(",",$border_i) . "{border-color: $color_code !important;} ";
2110
-			}
2111
-
2112
-			// add any fill color rules
2113
-			if(!empty($fill)){
2114
-				$output .= implode(",",$fill) . "{fill: $color_code;} ";
2115
-			}
2116
-			if(!empty($fill_i)){
2117
-				$output .= implode(",",$fill_i) . "{fill: $color_code !important;} ";
2118
-			}
2119
-
2120
-
2121
-			$prefix = $compatibility ? ".bsui " : "";
2122
-
2123
-			// darken
2124
-			$darker_075 = self::css_hex_lighten_darken($color_code,"-0.075");
2125
-			$darker_10 = self::css_hex_lighten_darken($color_code,"-0.10");
2126
-			$darker_125 = self::css_hex_lighten_darken($color_code,"-0.125");
2127
-
2128
-			// lighten
2129
-			$lighten_25 = self::css_hex_lighten_darken($color_code,"0.25");
2130
-
2131
-			// opacity see https://css-tricks.com/8-digit-hex-codes/
2132
-			$op_25 = $color_code."40"; // 25% opacity
2133
-
2134
-
2135
-			// button states
2136
-			$output .= $prefix ." .btn-secondary:hover{background-color: ".$darker_075.";    border-color: ".$darker_10.";} ";
2137
-			$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;} ";
2138
-			$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.";} ";
2139
-			$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;} ";
2140
-
2141
-
2142
-			return $output;
2143
-		}
2144
-
2145
-		/**
2146
-		 * Increases or decreases the brightness of a color by a percentage of the current brightness.
2147
-		 *
2148
-		 * @param   string  $hexCode        Supported formats: `#FFF`, `#FFFFFF`, `FFF`, `FFFFFF`
2149
-		 * @param   float   $adjustPercent  A number between -1 and 1. E.g. 0.3 = 30% lighter; -0.4 = 40% darker.
2150
-		 *
2151
-		 * @return  string
2152
-		 */
2153
-		public static function css_hex_lighten_darken($hexCode, $adjustPercent) {
2154
-			$hexCode = ltrim($hexCode, '#');
2155
-
2156
-			if ( strpos( $hexCode, 'rgba(' ) !== false || strpos( $hexCode, 'rgb(' ) !== false ) {
2157
-				return $hexCode;
2158
-			}
2159
-
2160
-			if (strlen($hexCode) == 3) {
2161
-				$hexCode = $hexCode[0] . $hexCode[0] . $hexCode[1] . $hexCode[1] . $hexCode[2] . $hexCode[2];
2162
-			}
2163
-
2164
-			$hexCode = array_map('hexdec', str_split($hexCode, 2));
2165
-
2166
-			foreach ($hexCode as & $color) {
2167
-				$adjustableLimit = $adjustPercent < 0 ? $color : 255 - $color;
2168
-				$adjustAmount = ceil($adjustableLimit * $adjustPercent);
2169
-
2170
-				$color = str_pad(dechex($color + $adjustAmount), 2, '0', STR_PAD_LEFT);
2171
-			}
2172
-
2173
-			return '#' . implode($hexCode);
2174
-		}
2175
-
2176
-		/**
2177
-		 * Check if we should display examples.
2178
-		 */
2179
-		public function maybe_show_examples(){
2180
-			if(current_user_can('manage_options') && isset($_REQUEST['preview-aui'])){
2181
-				echo "<head>";
2182
-				wp_head();
2183
-				echo "</head>";
2184
-				echo "<body>";
2185
-				echo $this->get_examples(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2186
-				echo "</body>";
2187
-				exit;
2188
-			}
2189
-		}
2190
-
2191
-		/**
2192
-		 * Get developer examples.
2193
-		 *
2194
-		 * @return string
2195
-		 */
2196
-		public function get_examples(){
2197
-			$output = '';
2198
-
2199
-
2200
-			// open form
2201
-			$output .= "<form class='p-5 m-5 border rounded'>";
2202
-
2203
-			// input example
2204
-			$output .= aui()->input(array(
2205
-				'type'  =>  'text',
2206
-				'id'    =>  'text-example',
2207
-				'name'    =>  'text-example',
2208
-				'placeholder'   => 'text placeholder',
2209
-				'title'   => 'Text input example',
2210
-				'value' =>  '',
2211
-				'required'  => false,
2212
-				'help_text' => 'help text',
2213
-				'label' => 'Text input example label'
2214
-			));
2215
-
2216
-			// input example
2217
-			$output .= aui()->input(array(
2218
-				'type'  =>  'url',
2219
-				'id'    =>  'text-example2',
2220
-				'name'    =>  'text-example',
2221
-				'placeholder'   => 'url placeholder',
2222
-				'title'   => 'Text input example',
2223
-				'value' =>  '',
2224
-				'required'  => false,
2225
-				'help_text' => 'help text',
2226
-				'label' => 'Text input example label'
2227
-			));
2228
-
2229
-			// checkbox example
2230
-			$output .= aui()->input(array(
2231
-				'type'  =>  'checkbox',
2232
-				'id'    =>  'checkbox-example',
2233
-				'name'    =>  'checkbox-example',
2234
-				'placeholder'   => 'checkbox-example',
2235
-				'title'   => 'Checkbox example',
2236
-				'value' =>  '1',
2237
-				'checked'   => true,
2238
-				'required'  => false,
2239
-				'help_text' => 'help text',
2240
-				'label' => 'Checkbox checked'
2241
-			));
2242
-
2243
-			// checkbox example
2244
-			$output .= aui()->input(array(
2245
-				'type'  =>  'checkbox',
2246
-				'id'    =>  'checkbox-example2',
2247
-				'name'    =>  'checkbox-example2',
2248
-				'placeholder'   => 'checkbox-example',
2249
-				'title'   => 'Checkbox example',
2250
-				'value' =>  '1',
2251
-				'checked'   => false,
2252
-				'required'  => false,
2253
-				'help_text' => 'help text',
2254
-				'label' => 'Checkbox un-checked'
2255
-			));
2256
-
2257
-			// switch example
2258
-			$output .= aui()->input(array(
2259
-				'type'  =>  'checkbox',
2260
-				'id'    =>  'switch-example',
2261
-				'name'    =>  'switch-example',
2262
-				'placeholder'   => 'checkbox-example',
2263
-				'title'   => 'Switch example',
2264
-				'value' =>  '1',
2265
-				'checked'   => true,
2266
-				'switch'    => true,
2267
-				'required'  => false,
2268
-				'help_text' => 'help text',
2269
-				'label' => 'Switch on'
2270
-			));
2271
-
2272
-			// switch example
2273
-			$output .= aui()->input(array(
2274
-				'type'  =>  'checkbox',
2275
-				'id'    =>  'switch-example2',
2276
-				'name'    =>  'switch-example2',
2277
-				'placeholder'   => 'checkbox-example',
2278
-				'title'   => 'Switch example',
2279
-				'value' =>  '1',
2280
-				'checked'   => false,
2281
-				'switch'    => true,
2282
-				'required'  => false,
2283
-				'help_text' => 'help text',
2284
-				'label' => 'Switch off'
2285
-			));
2286
-
2287
-			// close form
2288
-			$output .= "</form>";
2289
-
2290
-			return $output;
2291
-		}
2292
-
2293
-		/**
2294
-		 * Calendar params.
2295
-		 *
2296
-		 * @since 0.1.44
2297
-		 *
2298
-		 * @return array Calendar params.
2299
-		 */
2300
-		public static function calendar_params() {
2301
-			$params = array(
2302
-				'month_long_1' => __( 'January', 'ayecode-connect' ),
2303
-				'month_long_2' => __( 'February', 'ayecode-connect' ),
2304
-				'month_long_3' => __( 'March', 'ayecode-connect' ),
2305
-				'month_long_4' => __( 'April', 'ayecode-connect' ),
2306
-				'month_long_5' => __( 'May', 'ayecode-connect' ),
2307
-				'month_long_6' => __( 'June', 'ayecode-connect' ),
2308
-				'month_long_7' => __( 'July', 'ayecode-connect' ),
2309
-				'month_long_8' => __( 'August', 'ayecode-connect' ),
2310
-				'month_long_9' => __( 'September', 'ayecode-connect' ),
2311
-				'month_long_10' => __( 'October', 'ayecode-connect' ),
2312
-				'month_long_11' => __( 'November', 'ayecode-connect' ),
2313
-				'month_long_12' => __( 'December', 'ayecode-connect' ),
2314
-				'month_s_1' => _x( 'Jan', 'January abbreviation', 'ayecode-connect' ),
2315
-				'month_s_2' => _x( 'Feb', 'February abbreviation', 'ayecode-connect' ),
2316
-				'month_s_3' => _x( 'Mar', 'March abbreviation', 'ayecode-connect' ),
2317
-				'month_s_4' => _x( 'Apr', 'April abbreviation', 'ayecode-connect' ),
2318
-				'month_s_5' => _x( 'May', 'May abbreviation', 'ayecode-connect' ),
2319
-				'month_s_6' => _x( 'Jun', 'June abbreviation', 'ayecode-connect' ),
2320
-				'month_s_7' => _x( 'Jul', 'July abbreviation', 'ayecode-connect' ),
2321
-				'month_s_8' => _x( 'Aug', 'August abbreviation', 'ayecode-connect' ),
2322
-				'month_s_9' => _x( 'Sep', 'September abbreviation', 'ayecode-connect' ),
2323
-				'month_s_10' => _x( 'Oct', 'October abbreviation', 'ayecode-connect' ),
2324
-				'month_s_11' => _x( 'Nov', 'November abbreviation', 'ayecode-connect' ),
2325
-				'month_s_12' => _x( 'Dec', 'December abbreviation', 'ayecode-connect' ),
2326
-				'day_s1_1' => _x( 'S', 'Sunday initial', 'ayecode-connect' ),
2327
-				'day_s1_2' => _x( 'M', 'Monday initial', 'ayecode-connect' ),
2328
-				'day_s1_3' => _x( 'T', 'Tuesday initial', 'ayecode-connect' ),
2329
-				'day_s1_4' => _x( 'W', 'Wednesday initial', 'ayecode-connect' ),
2330
-				'day_s1_5' => _x( 'T', 'Friday initial', 'ayecode-connect' ),
2331
-				'day_s1_6' => _x( 'F', 'Thursday initial', 'ayecode-connect' ),
2332
-				'day_s1_7' => _x( 'S', 'Saturday initial', 'ayecode-connect' ),
2333
-				'day_s2_1' => __( 'Su', 'ayecode-connect' ),
2334
-				'day_s2_2' => __( 'Mo', 'ayecode-connect' ),
2335
-				'day_s2_3' => __( 'Tu', 'ayecode-connect' ),
2336
-				'day_s2_4' => __( 'We', 'ayecode-connect' ),
2337
-				'day_s2_5' => __( 'Th', 'ayecode-connect' ),
2338
-				'day_s2_6' => __( 'Fr', 'ayecode-connect' ),
2339
-				'day_s2_7' => __( 'Sa', 'ayecode-connect' ),
2340
-				'day_s3_1' => __( 'Sun', 'ayecode-connect' ),
2341
-				'day_s3_2' => __( 'Mon', 'ayecode-connect' ),
2342
-				'day_s3_3' => __( 'Tue', 'ayecode-connect' ),
2343
-				'day_s3_4' => __( 'Wed', 'ayecode-connect' ),
2344
-				'day_s3_5' => __( 'Thu', 'ayecode-connect' ),
2345
-				'day_s3_6' => __( 'Fri', 'ayecode-connect' ),
2346
-				'day_s3_7' => __( 'Sat', 'ayecode-connect' ),
2347
-				'day_s5_1' => __( 'Sunday', 'ayecode-connect' ),
2348
-				'day_s5_2' => __( 'Monday', 'ayecode-connect' ),
2349
-				'day_s5_3' => __( 'Tuesday', 'ayecode-connect' ),
2350
-				'day_s5_4' => __( 'Wednesday', 'ayecode-connect' ),
2351
-				'day_s5_5' => __( 'Thursday', 'ayecode-connect' ),
2352
-				'day_s5_6' => __( 'Friday', 'ayecode-connect' ),
2353
-				'day_s5_7' => __( 'Saturday', 'ayecode-connect' ),
2354
-				'am_lower' => __( 'am', 'ayecode-connect' ),
2355
-				'pm_lower' => __( 'pm', 'ayecode-connect' ),
2356
-				'am_upper' => __( 'AM', 'ayecode-connect' ),
2357
-				'pm_upper' => __( 'PM', 'ayecode-connect' ),
2358
-				'firstDayOfWeek' => (int) get_option( 'start_of_week' ),
2359
-				'time_24hr' => false,
2360
-				'year' => __( 'Year', 'ayecode-connect' ),
2361
-				'hour' => __( 'Hour', 'ayecode-connect' ),
2362
-				'minute' => __( 'Minute', 'ayecode-connect' ),
2363
-				'weekAbbreviation' => __( 'Wk', 'ayecode-connect' ),
2364
-				'rangeSeparator' => __( ' to ', 'ayecode-connect' ),
2365
-				'scrollTitle' => __( 'Scroll to increment', 'ayecode-connect' ),
2366
-				'toggleTitle' => __( 'Click to toggle', 'ayecode-connect' )
2367
-			);
2368
-
2369
-			return apply_filters( 'ayecode_ui_calendar_params', $params );
2370
-		}
2371
-
2372
-		/**
2373
-		 * Flatpickr calendar localize.
2374
-		 *
2375
-		 * @since 0.1.44
2376
-		 *
2377
-		 * @return string Calendar locale.
2378
-		 */
2379
-		public static function flatpickr_locale() {
2380
-			$params = self::calendar_params();
2381
-
2382
-			if ( is_string( $params ) ) {
2383
-				$params = html_entity_decode( $params, ENT_QUOTES, 'UTF-8' );
2384
-			} else {
2385
-				foreach ( (array) $params as $key => $value ) {
2386
-					if ( ! is_scalar( $value ) ) {
2387
-						continue;
2388
-					}
2389
-
2390
-					$params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2391
-				}
2392
-			}
2393 2199
 
2394
-			$day_s3 = array();
2395
-			$day_s5 = array();
2200
+            // open form
2201
+            $output .= "<form class='p-5 m-5 border rounded'>";
2202
+
2203
+            // input example
2204
+            $output .= aui()->input(array(
2205
+                'type'  =>  'text',
2206
+                'id'    =>  'text-example',
2207
+                'name'    =>  'text-example',
2208
+                'placeholder'   => 'text placeholder',
2209
+                'title'   => 'Text input example',
2210
+                'value' =>  '',
2211
+                'required'  => false,
2212
+                'help_text' => 'help text',
2213
+                'label' => 'Text input example label'
2214
+            ));
2215
+
2216
+            // input example
2217
+            $output .= aui()->input(array(
2218
+                'type'  =>  'url',
2219
+                'id'    =>  'text-example2',
2220
+                'name'    =>  'text-example',
2221
+                'placeholder'   => 'url placeholder',
2222
+                'title'   => 'Text input example',
2223
+                'value' =>  '',
2224
+                'required'  => false,
2225
+                'help_text' => 'help text',
2226
+                'label' => 'Text input example label'
2227
+            ));
2228
+
2229
+            // checkbox example
2230
+            $output .= aui()->input(array(
2231
+                'type'  =>  'checkbox',
2232
+                'id'    =>  'checkbox-example',
2233
+                'name'    =>  'checkbox-example',
2234
+                'placeholder'   => 'checkbox-example',
2235
+                'title'   => 'Checkbox example',
2236
+                'value' =>  '1',
2237
+                'checked'   => true,
2238
+                'required'  => false,
2239
+                'help_text' => 'help text',
2240
+                'label' => 'Checkbox checked'
2241
+            ));
2242
+
2243
+            // checkbox example
2244
+            $output .= aui()->input(array(
2245
+                'type'  =>  'checkbox',
2246
+                'id'    =>  'checkbox-example2',
2247
+                'name'    =>  'checkbox-example2',
2248
+                'placeholder'   => 'checkbox-example',
2249
+                'title'   => 'Checkbox example',
2250
+                'value' =>  '1',
2251
+                'checked'   => false,
2252
+                'required'  => false,
2253
+                'help_text' => 'help text',
2254
+                'label' => 'Checkbox un-checked'
2255
+            ));
2256
+
2257
+            // switch example
2258
+            $output .= aui()->input(array(
2259
+                'type'  =>  'checkbox',
2260
+                'id'    =>  'switch-example',
2261
+                'name'    =>  'switch-example',
2262
+                'placeholder'   => 'checkbox-example',
2263
+                'title'   => 'Switch example',
2264
+                'value' =>  '1',
2265
+                'checked'   => true,
2266
+                'switch'    => true,
2267
+                'required'  => false,
2268
+                'help_text' => 'help text',
2269
+                'label' => 'Switch on'
2270
+            ));
2271
+
2272
+            // switch example
2273
+            $output .= aui()->input(array(
2274
+                'type'  =>  'checkbox',
2275
+                'id'    =>  'switch-example2',
2276
+                'name'    =>  'switch-example2',
2277
+                'placeholder'   => 'checkbox-example',
2278
+                'title'   => 'Switch example',
2279
+                'value' =>  '1',
2280
+                'checked'   => false,
2281
+                'switch'    => true,
2282
+                'required'  => false,
2283
+                'help_text' => 'help text',
2284
+                'label' => 'Switch off'
2285
+            ));
2286
+
2287
+            // close form
2288
+            $output .= "</form>";
2289
+
2290
+            return $output;
2291
+        }
2292
+
2293
+        /**
2294
+         * Calendar params.
2295
+         *
2296
+         * @since 0.1.44
2297
+         *
2298
+         * @return array Calendar params.
2299
+         */
2300
+        public static function calendar_params() {
2301
+            $params = array(
2302
+                'month_long_1' => __( 'January', 'ayecode-connect' ),
2303
+                'month_long_2' => __( 'February', 'ayecode-connect' ),
2304
+                'month_long_3' => __( 'March', 'ayecode-connect' ),
2305
+                'month_long_4' => __( 'April', 'ayecode-connect' ),
2306
+                'month_long_5' => __( 'May', 'ayecode-connect' ),
2307
+                'month_long_6' => __( 'June', 'ayecode-connect' ),
2308
+                'month_long_7' => __( 'July', 'ayecode-connect' ),
2309
+                'month_long_8' => __( 'August', 'ayecode-connect' ),
2310
+                'month_long_9' => __( 'September', 'ayecode-connect' ),
2311
+                'month_long_10' => __( 'October', 'ayecode-connect' ),
2312
+                'month_long_11' => __( 'November', 'ayecode-connect' ),
2313
+                'month_long_12' => __( 'December', 'ayecode-connect' ),
2314
+                'month_s_1' => _x( 'Jan', 'January abbreviation', 'ayecode-connect' ),
2315
+                'month_s_2' => _x( 'Feb', 'February abbreviation', 'ayecode-connect' ),
2316
+                'month_s_3' => _x( 'Mar', 'March abbreviation', 'ayecode-connect' ),
2317
+                'month_s_4' => _x( 'Apr', 'April abbreviation', 'ayecode-connect' ),
2318
+                'month_s_5' => _x( 'May', 'May abbreviation', 'ayecode-connect' ),
2319
+                'month_s_6' => _x( 'Jun', 'June abbreviation', 'ayecode-connect' ),
2320
+                'month_s_7' => _x( 'Jul', 'July abbreviation', 'ayecode-connect' ),
2321
+                'month_s_8' => _x( 'Aug', 'August abbreviation', 'ayecode-connect' ),
2322
+                'month_s_9' => _x( 'Sep', 'September abbreviation', 'ayecode-connect' ),
2323
+                'month_s_10' => _x( 'Oct', 'October abbreviation', 'ayecode-connect' ),
2324
+                'month_s_11' => _x( 'Nov', 'November abbreviation', 'ayecode-connect' ),
2325
+                'month_s_12' => _x( 'Dec', 'December abbreviation', 'ayecode-connect' ),
2326
+                'day_s1_1' => _x( 'S', 'Sunday initial', 'ayecode-connect' ),
2327
+                'day_s1_2' => _x( 'M', 'Monday initial', 'ayecode-connect' ),
2328
+                'day_s1_3' => _x( 'T', 'Tuesday initial', 'ayecode-connect' ),
2329
+                'day_s1_4' => _x( 'W', 'Wednesday initial', 'ayecode-connect' ),
2330
+                'day_s1_5' => _x( 'T', 'Friday initial', 'ayecode-connect' ),
2331
+                'day_s1_6' => _x( 'F', 'Thursday initial', 'ayecode-connect' ),
2332
+                'day_s1_7' => _x( 'S', 'Saturday initial', 'ayecode-connect' ),
2333
+                'day_s2_1' => __( 'Su', 'ayecode-connect' ),
2334
+                'day_s2_2' => __( 'Mo', 'ayecode-connect' ),
2335
+                'day_s2_3' => __( 'Tu', 'ayecode-connect' ),
2336
+                'day_s2_4' => __( 'We', 'ayecode-connect' ),
2337
+                'day_s2_5' => __( 'Th', 'ayecode-connect' ),
2338
+                'day_s2_6' => __( 'Fr', 'ayecode-connect' ),
2339
+                'day_s2_7' => __( 'Sa', 'ayecode-connect' ),
2340
+                'day_s3_1' => __( 'Sun', 'ayecode-connect' ),
2341
+                'day_s3_2' => __( 'Mon', 'ayecode-connect' ),
2342
+                'day_s3_3' => __( 'Tue', 'ayecode-connect' ),
2343
+                'day_s3_4' => __( 'Wed', 'ayecode-connect' ),
2344
+                'day_s3_5' => __( 'Thu', 'ayecode-connect' ),
2345
+                'day_s3_6' => __( 'Fri', 'ayecode-connect' ),
2346
+                'day_s3_7' => __( 'Sat', 'ayecode-connect' ),
2347
+                'day_s5_1' => __( 'Sunday', 'ayecode-connect' ),
2348
+                'day_s5_2' => __( 'Monday', 'ayecode-connect' ),
2349
+                'day_s5_3' => __( 'Tuesday', 'ayecode-connect' ),
2350
+                'day_s5_4' => __( 'Wednesday', 'ayecode-connect' ),
2351
+                'day_s5_5' => __( 'Thursday', 'ayecode-connect' ),
2352
+                'day_s5_6' => __( 'Friday', 'ayecode-connect' ),
2353
+                'day_s5_7' => __( 'Saturday', 'ayecode-connect' ),
2354
+                'am_lower' => __( 'am', 'ayecode-connect' ),
2355
+                'pm_lower' => __( 'pm', 'ayecode-connect' ),
2356
+                'am_upper' => __( 'AM', 'ayecode-connect' ),
2357
+                'pm_upper' => __( 'PM', 'ayecode-connect' ),
2358
+                'firstDayOfWeek' => (int) get_option( 'start_of_week' ),
2359
+                'time_24hr' => false,
2360
+                'year' => __( 'Year', 'ayecode-connect' ),
2361
+                'hour' => __( 'Hour', 'ayecode-connect' ),
2362
+                'minute' => __( 'Minute', 'ayecode-connect' ),
2363
+                'weekAbbreviation' => __( 'Wk', 'ayecode-connect' ),
2364
+                'rangeSeparator' => __( ' to ', 'ayecode-connect' ),
2365
+                'scrollTitle' => __( 'Scroll to increment', 'ayecode-connect' ),
2366
+                'toggleTitle' => __( 'Click to toggle', 'ayecode-connect' )
2367
+            );
2368
+
2369
+            return apply_filters( 'ayecode_ui_calendar_params', $params );
2370
+        }
2371
+
2372
+        /**
2373
+         * Flatpickr calendar localize.
2374
+         *
2375
+         * @since 0.1.44
2376
+         *
2377
+         * @return string Calendar locale.
2378
+         */
2379
+        public static function flatpickr_locale() {
2380
+            $params = self::calendar_params();
2381
+
2382
+            if ( is_string( $params ) ) {
2383
+                $params = html_entity_decode( $params, ENT_QUOTES, 'UTF-8' );
2384
+            } else {
2385
+                foreach ( (array) $params as $key => $value ) {
2386
+                    if ( ! is_scalar( $value ) ) {
2387
+                        continue;
2388
+                    }
2389
+
2390
+                    $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2391
+                }
2392
+            }
2396 2393
 
2397
-			for ( $i = 1; $i <= 7; $i ++ ) {
2398
-				$day_s3[] = addslashes( $params[ 'day_s3_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2399
-				$day_s5[] = addslashes( $params[ 'day_s3_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2400
-			}
2394
+            $day_s3 = array();
2395
+            $day_s5 = array();
2396
+
2397
+            for ( $i = 1; $i <= 7; $i ++ ) {
2398
+                $day_s3[] = addslashes( $params[ 'day_s3_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2399
+                $day_s5[] = addslashes( $params[ 'day_s3_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2400
+            }
2401 2401
 
2402
-			$month_s = array();
2403
-			$month_long = array();
2402
+            $month_s = array();
2403
+            $month_long = array();
2404 2404
 
2405
-			for ( $i = 1; $i <= 12; $i ++ ) {
2406
-				$month_s[] = addslashes( $params[ 'month_s_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2407
-				$month_long[] = addslashes( $params[ 'month_long_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2408
-			}
2405
+            for ( $i = 1; $i <= 12; $i ++ ) {
2406
+                $month_s[] = addslashes( $params[ 'month_s_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2407
+                $month_long[] = addslashes( $params[ 'month_long_' . $i ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
2408
+            }
2409 2409
 
2410
-			ob_start();
2411
-		if ( 0 ) { ?><script><?php } ?>
2410
+            ob_start();
2411
+        if ( 0 ) { ?><script><?php } ?>
2412 2412
                 {
2413 2413
                     weekdays: {
2414 2414
                         shorthand: ['<?php echo implode( "','", $day_s3 ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>'],
@@ -2447,189 +2447,189 @@  discard block
 block discarded – undo
2447 2447
                 }
2448 2448
 				<?php if ( 0 ) { ?></script><?php } ?>
2449 2449
 			<?php
2450
-			$locale = ob_get_clean();
2451
-
2452
-			return apply_filters( 'ayecode_ui_flatpickr_locale', trim( $locale ) );
2453
-		}
2454
-
2455
-		/**
2456
-		 * Select2 JS params.
2457
-		 *
2458
-		 * @since 0.1.44
2459
-		 *
2460
-		 * @return array Select2 JS params.
2461
-		 */
2462
-		public static function select2_params() {
2463
-			$params = array(
2464
-				'i18n_select_state_text'    => esc_attr__( 'Select an option&hellip;', 'ayecode-connect' ),
2465
-				'i18n_no_matches'           => _x( 'No matches found', 'enhanced select', 'ayecode-connect' ),
2466
-				'i18n_ajax_error'           => _x( 'Loading failed', 'enhanced select', 'ayecode-connect' ),
2467
-				'i18n_input_too_short_1'    => _x( 'Please enter 1 or more characters', 'enhanced select', 'ayecode-connect' ),
2468
-				'i18n_input_too_short_n'    => _x( 'Please enter %item% or more characters', 'enhanced select', 'ayecode-connect' ),
2469
-				'i18n_input_too_long_1'     => _x( 'Please delete 1 character', 'enhanced select', 'ayecode-connect' ),
2470
-				'i18n_input_too_long_n'     => _x( 'Please delete %item% characters', 'enhanced select', 'ayecode-connect' ),
2471
-				'i18n_selection_too_long_1' => _x( 'You can only select 1 item', 'enhanced select', 'ayecode-connect' ),
2472
-				'i18n_selection_too_long_n' => _x( 'You can only select %item% items', 'enhanced select', 'ayecode-connect' ),
2473
-				'i18n_load_more'            => _x( 'Loading more results&hellip;', 'enhanced select', 'ayecode-connect' ),
2474
-				'i18n_searching'            => _x( 'Searching&hellip;', 'enhanced select', 'ayecode-connect' )
2475
-			);
2476
-
2477
-			return apply_filters( 'ayecode_ui_select2_params', $params );
2478
-		}
2479
-
2480
-		/**
2481
-		 * Select2 JS localize.
2482
-		 *
2483
-		 * @since 0.1.44
2484
-		 *
2485
-		 * @return string Select2 JS locale.
2486
-		 */
2487
-		public static function select2_locale() {
2488
-			$params = self::select2_params();
2489
-
2490
-			foreach ( (array) $params as $key => $value ) {
2491
-				if ( ! is_scalar( $value ) ) {
2492
-					continue;
2493
-				}
2450
+            $locale = ob_get_clean();
2494 2451
 
2495
-				$params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2496
-			}
2497
-
2498
-			$locale = json_encode( $params );
2499
-
2500
-			return apply_filters( 'ayecode_ui_select2_locale', trim( $locale ) );
2501
-		}
2502
-
2503
-		/**
2504
-		 * Time ago JS localize.
2505
-		 *
2506
-		 * @since 0.1.47
2507
-		 *
2508
-		 * @return string Time ago JS locale.
2509
-		 */
2510
-		public static function timeago_locale() {
2511
-			$params = array(
2512
-				'prefix_ago' => '',
2513
-				'suffix_ago' => ' ' . _x( 'ago', 'time ago', 'ayecode-connect' ),
2514
-				'prefix_after' => _x( 'after', 'time ago', 'ayecode-connect' ) . ' ',
2515
-				'suffix_after' => '',
2516
-				'seconds' => _x( 'less than a minute', 'time ago', 'ayecode-connect' ),
2517
-				'minute' => _x( 'about a minute', 'time ago', 'ayecode-connect' ),
2518
-				'minutes' => _x( '%d minutes', 'time ago', 'ayecode-connect' ),
2519
-				'hour' => _x( 'about an hour', 'time ago', 'ayecode-connect' ),
2520
-				'hours' => _x( 'about %d hours', 'time ago', 'ayecode-connect' ),
2521
-				'day' => _x( 'a day', 'time ago', 'ayecode-connect' ),
2522
-				'days' => _x( '%d days', 'time ago', 'ayecode-connect' ),
2523
-				'month' => _x( 'about a month', 'time ago', 'ayecode-connect' ),
2524
-				'months' => _x( '%d months', 'time ago', 'ayecode-connect' ),
2525
-				'year' => _x( 'about a year', 'time ago', 'ayecode-connect' ),
2526
-				'years' => _x( '%d years', 'time ago', 'ayecode-connect' ),
2527
-			);
2528
-
2529
-			$params = apply_filters( 'ayecode_ui_timeago_params', $params );
2530
-
2531
-			foreach ( (array) $params as $key => $value ) {
2532
-				if ( ! is_scalar( $value ) ) {
2533
-					continue;
2534
-				}
2452
+            return apply_filters( 'ayecode_ui_flatpickr_locale', trim( $locale ) );
2453
+        }
2454
+
2455
+        /**
2456
+         * Select2 JS params.
2457
+         *
2458
+         * @since 0.1.44
2459
+         *
2460
+         * @return array Select2 JS params.
2461
+         */
2462
+        public static function select2_params() {
2463
+            $params = array(
2464
+                'i18n_select_state_text'    => esc_attr__( 'Select an option&hellip;', 'ayecode-connect' ),
2465
+                'i18n_no_matches'           => _x( 'No matches found', 'enhanced select', 'ayecode-connect' ),
2466
+                'i18n_ajax_error'           => _x( 'Loading failed', 'enhanced select', 'ayecode-connect' ),
2467
+                'i18n_input_too_short_1'    => _x( 'Please enter 1 or more characters', 'enhanced select', 'ayecode-connect' ),
2468
+                'i18n_input_too_short_n'    => _x( 'Please enter %item% or more characters', 'enhanced select', 'ayecode-connect' ),
2469
+                'i18n_input_too_long_1'     => _x( 'Please delete 1 character', 'enhanced select', 'ayecode-connect' ),
2470
+                'i18n_input_too_long_n'     => _x( 'Please delete %item% characters', 'enhanced select', 'ayecode-connect' ),
2471
+                'i18n_selection_too_long_1' => _x( 'You can only select 1 item', 'enhanced select', 'ayecode-connect' ),
2472
+                'i18n_selection_too_long_n' => _x( 'You can only select %item% items', 'enhanced select', 'ayecode-connect' ),
2473
+                'i18n_load_more'            => _x( 'Loading more results&hellip;', 'enhanced select', 'ayecode-connect' ),
2474
+                'i18n_searching'            => _x( 'Searching&hellip;', 'enhanced select', 'ayecode-connect' )
2475
+            );
2476
+
2477
+            return apply_filters( 'ayecode_ui_select2_params', $params );
2478
+        }
2479
+
2480
+        /**
2481
+         * Select2 JS localize.
2482
+         *
2483
+         * @since 0.1.44
2484
+         *
2485
+         * @return string Select2 JS locale.
2486
+         */
2487
+        public static function select2_locale() {
2488
+            $params = self::select2_params();
2489
+
2490
+            foreach ( (array) $params as $key => $value ) {
2491
+                if ( ! is_scalar( $value ) ) {
2492
+                    continue;
2493
+                }
2494
+
2495
+                $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2496
+            }
2497
+
2498
+            $locale = json_encode( $params );
2499
+
2500
+            return apply_filters( 'ayecode_ui_select2_locale', trim( $locale ) );
2501
+        }
2502
+
2503
+        /**
2504
+         * Time ago JS localize.
2505
+         *
2506
+         * @since 0.1.47
2507
+         *
2508
+         * @return string Time ago JS locale.
2509
+         */
2510
+        public static function timeago_locale() {
2511
+            $params = array(
2512
+                'prefix_ago' => '',
2513
+                'suffix_ago' => ' ' . _x( 'ago', 'time ago', 'ayecode-connect' ),
2514
+                'prefix_after' => _x( 'after', 'time ago', 'ayecode-connect' ) . ' ',
2515
+                'suffix_after' => '',
2516
+                'seconds' => _x( 'less than a minute', 'time ago', 'ayecode-connect' ),
2517
+                'minute' => _x( 'about a minute', 'time ago', 'ayecode-connect' ),
2518
+                'minutes' => _x( '%d minutes', 'time ago', 'ayecode-connect' ),
2519
+                'hour' => _x( 'about an hour', 'time ago', 'ayecode-connect' ),
2520
+                'hours' => _x( 'about %d hours', 'time ago', 'ayecode-connect' ),
2521
+                'day' => _x( 'a day', 'time ago', 'ayecode-connect' ),
2522
+                'days' => _x( '%d days', 'time ago', 'ayecode-connect' ),
2523
+                'month' => _x( 'about a month', 'time ago', 'ayecode-connect' ),
2524
+                'months' => _x( '%d months', 'time ago', 'ayecode-connect' ),
2525
+                'year' => _x( 'about a year', 'time ago', 'ayecode-connect' ),
2526
+                'years' => _x( '%d years', 'time ago', 'ayecode-connect' ),
2527
+            );
2528
+
2529
+            $params = apply_filters( 'ayecode_ui_timeago_params', $params );
2530
+
2531
+            foreach ( (array) $params as $key => $value ) {
2532
+                if ( ! is_scalar( $value ) ) {
2533
+                    continue;
2534
+                }
2535 2535
 
2536
-				$params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2537
-			}
2538
-
2539
-			$locale = json_encode( $params );
2540
-
2541
-			return apply_filters( 'ayecode_ui_timeago_locale', trim( $locale ) );
2542
-		}
2543
-
2544
-		/**
2545
-		 * JavaScript Minifier
2546
-		 *
2547
-		 * @param $input
2548
-		 *
2549
-		 * @return mixed
2550
-		 */
2551
-		public static function minify_js($input) {
2552
-			if(trim($input) === "") return $input;
2553
-			return preg_replace(
2554
-				array(
2555
-					// Remove comment(s)
2556
-					'#\s*("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')\s*|\s*\/\*(?!\!|@cc_on)(?>[\s\S]*?\*\/)\s*|\s*(?<![\:\=])\/\/.*(?=[\n\r]|$)|^\s*|\s*$#',
2557
-					// Remove white-space(s) outside the string and regex
2558
-					'#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/)|\/(?!\/)[^\n\r]*?\/(?=[\s.,;]|[gimuy]|$))|\s*([!%&*\(\)\-=+\[\]\{\}|;:,.<>?\/])\s*#s',
2559
-					// Remove the last semicolon
2560
-					'#;+\}#',
2561
-					// Minify object attribute(s) except JSON attribute(s). From `{'foo':'bar'}` to `{foo:'bar'}`
2562
-					'#([\{,])([\'])(\d+|[a-z_][a-z0-9_]*)\2(?=\:)#i',
2563
-					// --ibid. From `foo['bar']` to `foo.bar`
2564
-					'#([a-z0-9_\)\]])\[([\'"])([a-z_][a-z0-9_]*)\2\]#i'
2565
-				),
2566
-				array(
2567
-					'$1',
2568
-					'$1$2',
2569
-					'}',
2570
-					'$1$3',
2571
-					'$1.$3'
2572
-				),
2573
-				$input);
2574
-		}
2575
-
2576
-		/**
2577
-		 * Minify CSS
2578
-		 *
2579
-		 * @param $input
2580
-		 *
2581
-		 * @return mixed
2582
-		 */
2583
-		public static function minify_css($input) {
2584
-			if(trim($input) === "") return $input;
2585
-			return preg_replace(
2586
-				array(
2587
-					// Remove comment(s)
2588
-					'#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')|\/\*(?!\!)(?>.*?\*\/)|^\s*|\s*$#s',
2589
-					// Remove unused white-space(s)
2590
-					'#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/))|\s*+;\s*+(})\s*+|\s*+([*$~^|]?+=|[{};,>~]|\s(?![0-9\.])|!important\b)\s*+|([[(:])\s++|\s++([])])|\s++(:)\s*+(?!(?>[^{}"\']++|"(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')*+{)|^\s++|\s++\z|(\s)\s+#si',
2591
-					// Replace `0(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)` with `0`
2592
-					'#(?<=[\s:])(0)(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)#si',
2593
-					// Replace `:0 0 0 0` with `:0`
2594
-					'#:(0\s+0|0\s+0\s+0\s+0)(?=[;\}]|\!important)#i',
2595
-					// Replace `background-position:0` with `background-position:0 0`
2596
-					'#(background-position):0(?=[;\}])#si',
2597
-					// Replace `0.6` with `.6`, but only when preceded by `:`, `,`, `-` or a white-space
2598
-					'#(?<=[\s:,\-])0+\.(\d+)#s',
2599
-					// Minify string value
2600
-					'#(\/\*(?>.*?\*\/))|(?<!content\:)([\'"])([a-z_][a-z0-9\-_]*?)\2(?=[\s\{\}\];,])#si',
2601
-					'#(\/\*(?>.*?\*\/))|(\burl\()([\'"])([^\s]+?)\3(\))#si',
2602
-					// Minify HEX color code
2603
-					'#(?<=[\s:,\-]\#)([a-f0-6]+)\1([a-f0-6]+)\2([a-f0-6]+)\3#i',
2604
-					// Replace `(border|outline):none` with `(border|outline):0`
2605
-					'#(?<=[\{;])(border|outline):none(?=[;\}\!])#',
2606
-					// Remove empty selector(s)
2607
-					'#(\/\*(?>.*?\*\/))|(^|[\{\}])(?:[^\s\{\}]+)\{\}#s'
2608
-				),
2609
-				array(
2610
-					'$1',
2611
-					'$1$2$3$4$5$6$7',
2612
-					'$1',
2613
-					':0',
2614
-					'$1:0 0',
2615
-					'.$1',
2616
-					'$1$3',
2617
-					'$1$2$4$5',
2618
-					'$1$2$3',
2619
-					'$1:0',
2620
-					'$1$2'
2621
-				),
2622
-				$input);
2623
-		}
2624
-
2625
-		/**
2626
-		 * Get the conditional fields JavaScript.
2627
-		 *
2628
-		 * @return mixed
2629
-		 */
2630
-		public function conditional_fields_js() {
2631
-			ob_start();
2632
-			?>
2536
+                $params[ $key ] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
2537
+            }
2538
+
2539
+            $locale = json_encode( $params );
2540
+
2541
+            return apply_filters( 'ayecode_ui_timeago_locale', trim( $locale ) );
2542
+        }
2543
+
2544
+        /**
2545
+         * JavaScript Minifier
2546
+         *
2547
+         * @param $input
2548
+         *
2549
+         * @return mixed
2550
+         */
2551
+        public static function minify_js($input) {
2552
+            if(trim($input) === "") return $input;
2553
+            return preg_replace(
2554
+                array(
2555
+                    // Remove comment(s)
2556
+                    '#\s*("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')\s*|\s*\/\*(?!\!|@cc_on)(?>[\s\S]*?\*\/)\s*|\s*(?<![\:\=])\/\/.*(?=[\n\r]|$)|^\s*|\s*$#',
2557
+                    // Remove white-space(s) outside the string and regex
2558
+                    '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/)|\/(?!\/)[^\n\r]*?\/(?=[\s.,;]|[gimuy]|$))|\s*([!%&*\(\)\-=+\[\]\{\}|;:,.<>?\/])\s*#s',
2559
+                    // Remove the last semicolon
2560
+                    '#;+\}#',
2561
+                    // Minify object attribute(s) except JSON attribute(s). From `{'foo':'bar'}` to `{foo:'bar'}`
2562
+                    '#([\{,])([\'])(\d+|[a-z_][a-z0-9_]*)\2(?=\:)#i',
2563
+                    // --ibid. From `foo['bar']` to `foo.bar`
2564
+                    '#([a-z0-9_\)\]])\[([\'"])([a-z_][a-z0-9_]*)\2\]#i'
2565
+                ),
2566
+                array(
2567
+                    '$1',
2568
+                    '$1$2',
2569
+                    '}',
2570
+                    '$1$3',
2571
+                    '$1.$3'
2572
+                ),
2573
+                $input);
2574
+        }
2575
+
2576
+        /**
2577
+         * Minify CSS
2578
+         *
2579
+         * @param $input
2580
+         *
2581
+         * @return mixed
2582
+         */
2583
+        public static function minify_css($input) {
2584
+            if(trim($input) === "") return $input;
2585
+            return preg_replace(
2586
+                array(
2587
+                    // Remove comment(s)
2588
+                    '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')|\/\*(?!\!)(?>.*?\*\/)|^\s*|\s*$#s',
2589
+                    // Remove unused white-space(s)
2590
+                    '#("(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\'|\/\*(?>.*?\*\/))|\s*+;\s*+(})\s*+|\s*+([*$~^|]?+=|[{};,>~]|\s(?![0-9\.])|!important\b)\s*+|([[(:])\s++|\s++([])])|\s++(:)\s*+(?!(?>[^{}"\']++|"(?:[^"\\\]++|\\\.)*+"|\'(?:[^\'\\\\]++|\\\.)*+\')*+{)|^\s++|\s++\z|(\s)\s+#si',
2591
+                    // Replace `0(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)` with `0`
2592
+                    '#(?<=[\s:])(0)(cm|em|ex|in|mm|pc|pt|px|vh|vw|%)#si',
2593
+                    // Replace `:0 0 0 0` with `:0`
2594
+                    '#:(0\s+0|0\s+0\s+0\s+0)(?=[;\}]|\!important)#i',
2595
+                    // Replace `background-position:0` with `background-position:0 0`
2596
+                    '#(background-position):0(?=[;\}])#si',
2597
+                    // Replace `0.6` with `.6`, but only when preceded by `:`, `,`, `-` or a white-space
2598
+                    '#(?<=[\s:,\-])0+\.(\d+)#s',
2599
+                    // Minify string value
2600
+                    '#(\/\*(?>.*?\*\/))|(?<!content\:)([\'"])([a-z_][a-z0-9\-_]*?)\2(?=[\s\{\}\];,])#si',
2601
+                    '#(\/\*(?>.*?\*\/))|(\burl\()([\'"])([^\s]+?)\3(\))#si',
2602
+                    // Minify HEX color code
2603
+                    '#(?<=[\s:,\-]\#)([a-f0-6]+)\1([a-f0-6]+)\2([a-f0-6]+)\3#i',
2604
+                    // Replace `(border|outline):none` with `(border|outline):0`
2605
+                    '#(?<=[\{;])(border|outline):none(?=[;\}\!])#',
2606
+                    // Remove empty selector(s)
2607
+                    '#(\/\*(?>.*?\*\/))|(^|[\{\}])(?:[^\s\{\}]+)\{\}#s'
2608
+                ),
2609
+                array(
2610
+                    '$1',
2611
+                    '$1$2$3$4$5$6$7',
2612
+                    '$1',
2613
+                    ':0',
2614
+                    '$1:0 0',
2615
+                    '.$1',
2616
+                    '$1$3',
2617
+                    '$1$2$4$5',
2618
+                    '$1$2$3',
2619
+                    '$1:0',
2620
+                    '$1$2'
2621
+                ),
2622
+                $input);
2623
+        }
2624
+
2625
+        /**
2626
+         * Get the conditional fields JavaScript.
2627
+         *
2628
+         * @return mixed
2629
+         */
2630
+        public function conditional_fields_js() {
2631
+            ob_start();
2632
+            ?>
2633 2633
             <script>
2634 2634
                 /**
2635 2635
                  * Conditional Fields
@@ -3164,237 +3164,237 @@  discard block
 block discarded – undo
3164 3164
 				<?php do_action( 'aui_conditional_fields_js', $this ); ?>
3165 3165
             </script>
3166 3166
 			<?php
3167
-			$output = ob_get_clean();
3168
-
3169
-			return str_replace( array( '<script>', '</script>' ), '', self::minify_js( $output ) );
3170
-		}
3171
-
3172
-		/**
3173
-		 * Check if block editor page.
3174
-		 *
3175
-		 * @since 0.2.27
3176
-		 *
3177
-		 * @return bool
3178
-		 */
3179
-		public static function is_block_editor() {
3180
-			if ( is_admin() ) {
3181
-				$current_screen = function_exists('get_current_screen' ) ? get_current_screen() : array();
3182
-
3183
-				if ( ! empty( $current_screen ) && $current_screen->is_block_editor() ) {
3184
-					return true;
3185
-				}
3186
-			}
3187
-
3188
-			return false;
3189
-		}
3190
-
3191
-		/**
3192
-		 * Checks if the current call is a ajax call to get the block content.
3193
-		 *
3194
-		 * This can be used in your widget to return different content as the block content.
3195
-		 *
3196
-		 * @since 0.2.27
3197
-		 *
3198
-		 * @return bool
3199
-		 */
3200
-		public static function is_block_content_call() {
3201
-			$result = false;
3202
-			if ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'super_duper_output_shortcode' ) {
3203
-				$result = true;
3204
-			}
3205
-
3206
-			return $result;
3207
-		}
3208
-
3209
-		/**
3210
-		 * Tests if the current output is inside a Divi preview.
3211
-		 *
3212
-		 * @since 0.2.27
3213
-		 *
3214
-		 * @return bool
3215
-		 */
3216
-		public static function is_divi_preview() {
3217
-			$result = false;
3218
-			if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) {
3219
-				$result = true;
3220
-			}
3221
-
3222
-			return $result;
3223
-		}
3224
-
3225
-		/**
3226
-		 * Tests if the current output is inside a elementor preview.
3227
-		 *
3228
-		 *
3229
-		 * @since 0.2.27
3230
-		 *
3231
-		 * @return bool
3232
-		 */
3233
-		public static function is_elementor_preview() {
3234
-			$result = false;
3235
-			if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) {
3236
-				$result = true;
3237
-			}
3238
-
3239
-			return $result;
3240
-		}
3241
-
3242
-		/**
3243
-		 * Tests if the current output is inside a Beaver builder preview.
3244
-		 *
3245
-		 * @since 0.2.27
3246
-		 *
3247
-		 * @return bool
3248
-		 */
3249
-		public static function is_beaver_preview() {
3250
-			$result = false;
3251
-			if ( isset( $_REQUEST['fl_builder'] ) ) {
3252
-				$result = true;
3253
-			}
3254
-
3255
-			return $result;
3256
-		}
3257
-
3258
-		/**
3259
-		 * Tests if the current output is inside a siteorigin builder preview.
3260
-		 *
3261
-		 * @since 0.2.27
3262
-		 *
3263
-		 * @return bool
3264
-		 */
3265
-		public static function is_siteorigin_preview() {
3266
-			$result = false;
3267
-			if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) {
3268
-				$result = true;
3269
-			}
3270
-
3271
-			return $result;
3272
-		}
3273
-
3274
-		/**
3275
-		 * Tests if the current output is inside a cornerstone builder preview.
3276
-		 *
3277
-		 * @since 0.2.27
3278
-		 *
3279
-		 * @return bool
3280
-		 */
3281
-		public static function is_cornerstone_preview() {
3282
-			$result = false;
3283
-			if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) {
3284
-				$result = true;
3285
-			}
3286
-
3287
-			return $result;
3288
-		}
3289
-
3290
-		/**
3291
-		 * Tests if the current output is inside a fusion builder preview.
3292
-		 *
3293
-		 * @return bool
3294
-		 *@since 1.1.0
3295
-		 */
3296
-		public static function is_fusion_preview() {
3297
-			$result = false;
3298
-			if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) {
3299
-				$result = true;
3300
-			}
3301
-
3302
-			return $result;
3303
-		}
3304
-
3305
-		/**
3306
-		 * Tests if the current output is inside a Oxygen builder preview.
3307
-		 *
3308
-		 * @return bool
3309
-		 *@since 1.0.18
3310
-		 */
3311
-		public static function is_oxygen_preview() {
3312
-			$result = false;
3313
-			if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) {
3314
-				$result = true;
3315
-			}
3316
-
3317
-			return $result;
3318
-		}
3319
-
3320
-		/**
3321
-		 * Check for Kallyas theme Zion builder preview.
3322
-		 *
3323
-		 * @since 0.2.27
3324
-		 *
3325
-		 * @return bool
3326
-		 */
3327
-		public static function is_kallyas_zion_preview() {
3328
-			$result = false;
3329
-
3330
-			if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) {
3331
-				$result = true;
3332
-			}
3333
-
3334
-			return $result;
3335
-		}
3336
-
3337
-		/**
3338
-		 * Check for Bricks theme builder preview.
3339
-		 *
3340
-		 * @since 0.2.27
3341
-		 *
3342
-		 * @return bool
3343
-		 */
3344
-		public static function is_bricks_preview() {
3345
-			$result = false;
3346
-
3347
-			if ( function_exists( 'bricks_is_builder' ) && ( bricks_is_builder() || bricks_is_builder_call() ) ) {
3348
-				$result = true;
3349
-			}
3350
-
3351
-			return $result;
3352
-		}
3353
-
3354
-		/**
3355
-		 * General function to check if we are in a preview situation.
3356
-		 *
3357
-		 * @since 0.2.27
3358
-		 *
3359
-		 * @return bool
3360
-		 */
3361
-		public static function is_preview() {
3362
-			$preview = false;
3363
-
3364
-			if ( self::is_block_editor() ) {
3365
-				return true;
3366
-			}
3367
-
3368
-			if( self::is_block_content_call() ) {
3369
-				$preview = true;
3370
-			} elseif ( self::is_divi_preview() ) {
3371
-				$preview = true;
3372
-			} elseif ( self::is_elementor_preview() ) {
3373
-				$preview = true;
3374
-			} elseif ( self::is_beaver_preview() ) {
3375
-				$preview = true;
3376
-			} elseif ( self::is_siteorigin_preview() ) {
3377
-				$preview = true;
3378
-			} elseif ( self::is_cornerstone_preview() ) {
3379
-				$preview = true;
3380
-			} elseif ( self::is_fusion_preview() ) {
3381
-				$preview = true;
3382
-			} elseif ( self::is_oxygen_preview() ) {
3383
-				$preview = true;
3384
-			} elseif( self::is_kallyas_zion_preview() ) {
3385
-				$preview = true;
3386
-			} elseif( self::is_bricks_preview() ) {
3387
-				$preview = true;
3388
-			}
3389
-
3390
-			return $preview;
3391
-		}
3392
-	}
3393
-
3394
-	global $ayecode_ui_settings;
3395
-
3396
-	/**
3397
-	 * Run the class if found.
3398
-	 */
3399
-	$ayecode_ui_settings = AyeCode_UI_Settings::instance();
3167
+            $output = ob_get_clean();
3168
+
3169
+            return str_replace( array( '<script>', '</script>' ), '', self::minify_js( $output ) );
3170
+        }
3171
+
3172
+        /**
3173
+         * Check if block editor page.
3174
+         *
3175
+         * @since 0.2.27
3176
+         *
3177
+         * @return bool
3178
+         */
3179
+        public static function is_block_editor() {
3180
+            if ( is_admin() ) {
3181
+                $current_screen = function_exists('get_current_screen' ) ? get_current_screen() : array();
3182
+
3183
+                if ( ! empty( $current_screen ) && $current_screen->is_block_editor() ) {
3184
+                    return true;
3185
+                }
3186
+            }
3187
+
3188
+            return false;
3189
+        }
3190
+
3191
+        /**
3192
+         * Checks if the current call is a ajax call to get the block content.
3193
+         *
3194
+         * This can be used in your widget to return different content as the block content.
3195
+         *
3196
+         * @since 0.2.27
3197
+         *
3198
+         * @return bool
3199
+         */
3200
+        public static function is_block_content_call() {
3201
+            $result = false;
3202
+            if ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'super_duper_output_shortcode' ) {
3203
+                $result = true;
3204
+            }
3205
+
3206
+            return $result;
3207
+        }
3208
+
3209
+        /**
3210
+         * Tests if the current output is inside a Divi preview.
3211
+         *
3212
+         * @since 0.2.27
3213
+         *
3214
+         * @return bool
3215
+         */
3216
+        public static function is_divi_preview() {
3217
+            $result = false;
3218
+            if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) {
3219
+                $result = true;
3220
+            }
3221
+
3222
+            return $result;
3223
+        }
3224
+
3225
+        /**
3226
+         * Tests if the current output is inside a elementor preview.
3227
+         *
3228
+         *
3229
+         * @since 0.2.27
3230
+         *
3231
+         * @return bool
3232
+         */
3233
+        public static function is_elementor_preview() {
3234
+            $result = false;
3235
+            if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) {
3236
+                $result = true;
3237
+            }
3238
+
3239
+            return $result;
3240
+        }
3241
+
3242
+        /**
3243
+         * Tests if the current output is inside a Beaver builder preview.
3244
+         *
3245
+         * @since 0.2.27
3246
+         *
3247
+         * @return bool
3248
+         */
3249
+        public static function is_beaver_preview() {
3250
+            $result = false;
3251
+            if ( isset( $_REQUEST['fl_builder'] ) ) {
3252
+                $result = true;
3253
+            }
3254
+
3255
+            return $result;
3256
+        }
3257
+
3258
+        /**
3259
+         * Tests if the current output is inside a siteorigin builder preview.
3260
+         *
3261
+         * @since 0.2.27
3262
+         *
3263
+         * @return bool
3264
+         */
3265
+        public static function is_siteorigin_preview() {
3266
+            $result = false;
3267
+            if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) {
3268
+                $result = true;
3269
+            }
3270
+
3271
+            return $result;
3272
+        }
3273
+
3274
+        /**
3275
+         * Tests if the current output is inside a cornerstone builder preview.
3276
+         *
3277
+         * @since 0.2.27
3278
+         *
3279
+         * @return bool
3280
+         */
3281
+        public static function is_cornerstone_preview() {
3282
+            $result = false;
3283
+            if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) {
3284
+                $result = true;
3285
+            }
3286
+
3287
+            return $result;
3288
+        }
3289
+
3290
+        /**
3291
+         * Tests if the current output is inside a fusion builder preview.
3292
+         *
3293
+         * @return bool
3294
+         *@since 1.1.0
3295
+         */
3296
+        public static function is_fusion_preview() {
3297
+            $result = false;
3298
+            if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) {
3299
+                $result = true;
3300
+            }
3301
+
3302
+            return $result;
3303
+        }
3304
+
3305
+        /**
3306
+         * Tests if the current output is inside a Oxygen builder preview.
3307
+         *
3308
+         * @return bool
3309
+         *@since 1.0.18
3310
+         */
3311
+        public static function is_oxygen_preview() {
3312
+            $result = false;
3313
+            if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) {
3314
+                $result = true;
3315
+            }
3316
+
3317
+            return $result;
3318
+        }
3319
+
3320
+        /**
3321
+         * Check for Kallyas theme Zion builder preview.
3322
+         *
3323
+         * @since 0.2.27
3324
+         *
3325
+         * @return bool
3326
+         */
3327
+        public static function is_kallyas_zion_preview() {
3328
+            $result = false;
3329
+
3330
+            if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) {
3331
+                $result = true;
3332
+            }
3333
+
3334
+            return $result;
3335
+        }
3336
+
3337
+        /**
3338
+         * Check for Bricks theme builder preview.
3339
+         *
3340
+         * @since 0.2.27
3341
+         *
3342
+         * @return bool
3343
+         */
3344
+        public static function is_bricks_preview() {
3345
+            $result = false;
3346
+
3347
+            if ( function_exists( 'bricks_is_builder' ) && ( bricks_is_builder() || bricks_is_builder_call() ) ) {
3348
+                $result = true;
3349
+            }
3350
+
3351
+            return $result;
3352
+        }
3353
+
3354
+        /**
3355
+         * General function to check if we are in a preview situation.
3356
+         *
3357
+         * @since 0.2.27
3358
+         *
3359
+         * @return bool
3360
+         */
3361
+        public static function is_preview() {
3362
+            $preview = false;
3363
+
3364
+            if ( self::is_block_editor() ) {
3365
+                return true;
3366
+            }
3367
+
3368
+            if( self::is_block_content_call() ) {
3369
+                $preview = true;
3370
+            } elseif ( self::is_divi_preview() ) {
3371
+                $preview = true;
3372
+            } elseif ( self::is_elementor_preview() ) {
3373
+                $preview = true;
3374
+            } elseif ( self::is_beaver_preview() ) {
3375
+                $preview = true;
3376
+            } elseif ( self::is_siteorigin_preview() ) {
3377
+                $preview = true;
3378
+            } elseif ( self::is_cornerstone_preview() ) {
3379
+                $preview = true;
3380
+            } elseif ( self::is_fusion_preview() ) {
3381
+                $preview = true;
3382
+            } elseif ( self::is_oxygen_preview() ) {
3383
+                $preview = true;
3384
+            } elseif( self::is_kallyas_zion_preview() ) {
3385
+                $preview = true;
3386
+            } elseif( self::is_bricks_preview() ) {
3387
+                $preview = true;
3388
+            }
3389
+
3390
+            return $preview;
3391
+        }
3392
+    }
3393
+
3394
+    global $ayecode_ui_settings;
3395
+
3396
+    /**
3397
+     * Run the class if found.
3398
+     */
3399
+    $ayecode_ui_settings = AyeCode_UI_Settings::instance();
3400 3400
 }
3401 3401
\ 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   +2687 added lines, -2687 removed lines patch added patch discarded remove patch
@@ -1,147 +1,147 @@  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.22' );
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
-			}
8
+    define( 'SUPER_DUPER_VER', '1.2.22' );
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;
67 30
 
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
-			}
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
+            }
72 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
+            }
73 72
 
74
-			if ( isset( $options['class_name'] ) ) {
75
-				// register widget
76
-				$this->class_name = $options['class_name'];
77 73
 
78
-				// register shortcode, this needs to be done even for blocks and widgets
79
-				$this->register_shortcode();
74
+            if ( isset( $options['class_name'] ) ) {
75
+                // register widget
76
+                $this->class_name = $options['class_name'];
80 77
 
78
+                // register shortcode, this needs to be done even for blocks and widgets
79
+                $this->register_shortcode();
81 80
 
82
-				// Fusion Builder (avada) support
83
-				if ( function_exists( 'fusion_builder_map' ) ) {
84
-					add_action( 'init', array( $this, 'register_fusion_element' ) );
85
-				}
81
+
82
+                // Fusion Builder (avada) support
83
+                if ( function_exists( 'fusion_builder_map' ) ) {
84
+                    add_action( 'init', array( $this, 'register_fusion_element' ) );
85
+                }
86 86
 
87 87
                 // maybe load the Bricks transformer class
88 88
                 if( class_exists('\Bricks\Elements', false) ){
89
-					add_action( 'init', array( $this, 'load_bricks_element_class' ) );
89
+                    add_action( 'init', array( $this, 'load_bricks_element_class' ) );
90 90
                 }
91 91
 
92
-				// register block
93
-				if(empty($this->options['output_types']) || in_array('block',$this->options['output_types'])){
94
-					add_action( 'admin_enqueue_scripts', array( $this, 'register_block' ) );
95
-				}
96
-			}
92
+                // register block
93
+                if(empty($this->options['output_types']) || in_array('block',$this->options['output_types'])){
94
+                    add_action( 'admin_enqueue_scripts', array( $this, 'register_block' ) );
95
+                }
96
+            }
97 97
 
98
-			// add the CSS and JS we need ONCE
99
-			global $sd_widget_scripts;
98
+            // add the CSS and JS we need ONCE
99
+            global $sd_widget_scripts;
100 100
 
101
-			if ( ! $sd_widget_scripts ) {
102
-				wp_add_inline_script( 'admin-widgets', $this->widget_js() );
103
-				wp_add_inline_script( 'customize-controls', $this->widget_js() );
104
-				wp_add_inline_style( 'widgets', $this->widget_css() );
101
+            if ( ! $sd_widget_scripts ) {
102
+                wp_add_inline_script( 'admin-widgets', $this->widget_js() );
103
+                wp_add_inline_script( 'customize-controls', $this->widget_js() );
104
+                wp_add_inline_style( 'widgets', $this->widget_css() );
105 105
 
106
-				// maybe add elementor editor styles
107
-				add_action( 'elementor/editor/after_enqueue_styles', array( $this, 'elementor_editor_styles' ) );
106
+                // maybe add elementor editor styles
107
+                add_action( 'elementor/editor/after_enqueue_styles', array( $this, 'elementor_editor_styles' ) );
108 108
 
109
-				$sd_widget_scripts = true;
109
+                $sd_widget_scripts = true;
110 110
 
111
-				// add shortcode insert button once
112
-				add_action( 'media_buttons', array( $this, 'wp_media_buttons' ), 1 );
113
-				add_action( 'media_buttons', array( $this, 'shortcode_insert_button' ) );
114
-				// generatepress theme sections compatibility
115
-				if ( function_exists( 'generate_sections_sections_metabox' ) ) {
116
-					add_action( 'generate_sections_metabox', array( $this, 'shortcode_insert_button_script' ) );
117
-				}
118
-				/* Load script on Divi theme builder page */
119
-				if ( function_exists( 'et_builder_is_tb_admin_screen' ) && et_builder_is_tb_admin_screen() ) {
120
-					add_thickbox();
121
-					add_action( 'admin_footer', array( $this, 'shortcode_insert_button_script' ) );
122
-				}
111
+                // add shortcode insert button once
112
+                add_action( 'media_buttons', array( $this, 'wp_media_buttons' ), 1 );
113
+                add_action( 'media_buttons', array( $this, 'shortcode_insert_button' ) );
114
+                // generatepress theme sections compatibility
115
+                if ( function_exists( 'generate_sections_sections_metabox' ) ) {
116
+                    add_action( 'generate_sections_metabox', array( $this, 'shortcode_insert_button_script' ) );
117
+                }
118
+                /* Load script on Divi theme builder page */
119
+                if ( function_exists( 'et_builder_is_tb_admin_screen' ) && et_builder_is_tb_admin_screen() ) {
120
+                    add_thickbox();
121
+                    add_action( 'admin_footer', array( $this, 'shortcode_insert_button_script' ) );
122
+                }
123 123
 
124
-				if ( $this->is_preview() ) {
125
-					add_action( 'wp_footer', array( $this, 'shortcode_insert_button_script' ) );
126
-					// this makes the insert button work for elementor
127
-					add_action( 'elementor/editor/after_enqueue_scripts', array(
128
-						$this,
129
-						'shortcode_insert_button_script'
130
-					) ); // for elementor
131
-				}
132
-				// this makes the insert button work for cornerstone
133
-				add_action( 'wp_print_footer_scripts', array( __CLASS__, 'maybe_cornerstone_builder' ) );
124
+                if ( $this->is_preview() ) {
125
+                    add_action( 'wp_footer', array( $this, 'shortcode_insert_button_script' ) );
126
+                    // this makes the insert button work for elementor
127
+                    add_action( 'elementor/editor/after_enqueue_scripts', array(
128
+                        $this,
129
+                        'shortcode_insert_button_script'
130
+                    ) ); // for elementor
131
+                }
132
+                // this makes the insert button work for cornerstone
133
+                add_action( 'wp_print_footer_scripts', array( __CLASS__, 'maybe_cornerstone_builder' ) );
134 134
 
135
-				add_action( 'wp_ajax_super_duper_get_widget_settings', array( __CLASS__, 'get_widget_settings' ) );
136
-				add_action( 'wp_ajax_super_duper_get_picker', array( __CLASS__, 'get_picker' ) );
135
+                add_action( 'wp_ajax_super_duper_get_widget_settings', array( __CLASS__, 'get_widget_settings' ) );
136
+                add_action( 'wp_ajax_super_duper_get_picker', array( __CLASS__, 'get_picker' ) );
137 137
 
138
-				// add generator text to head
139
-				add_action( 'admin_head', array( $this, 'generator' ), 99 );
140
-				add_action( 'wp_head', array( $this, 'generator' ), 99 );
141
-			}
138
+                // add generator text to head
139
+                add_action( 'admin_head', array( $this, 'generator' ), 99 );
140
+                add_action( 'wp_head', array( $this, 'generator' ), 99 );
141
+            }
142 142
 
143
-			do_action( 'wp_super_duper_widget_init', $options, $this );
144
-		}
143
+            do_action( 'wp_super_duper_widget_init', $options, $this );
144
+        }
145 145
 
146 146
         /**
147 147
          * Load the Bricks conversion class if we are running Bricks.
@@ -151,163 +151,163 @@  discard block
 block discarded – undo
151 151
                     include_once __DIR__ . '/includes/class-super-duper-bricks-element.php';
152 152
         }
153 153
 
154
-		/**
155
-		 * The register widget function
156
-		 * @return void
157
-		 */
158
-		public function _register() {
159
-			if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
160
-				parent::_register();
161
-			}
162
-		}
163
-
164
-		/**
165
-		 * Add our widget CSS to elementor editor.
166
-		 */
167
-		public function elementor_editor_styles() {
168
-			wp_add_inline_style( 'elementor-editor', $this->widget_css( false ) );
169
-		}
170
-
171
-		public function register_fusion_element() {
172
-
173
-			$options = $this->options;
174
-
175
-			if ( $this->base_id ) {
176
-
177
-				$params = $this->get_fusion_params();
178
-
179
-				$args = array(
180
-					'name'            => $options['name'],
181
-					'shortcode'       => $this->base_id,
182
-					'icon'            => $options['block-icon'] ? $options['block-icon'] : 'far fa-square',
183
-					'allow_generator' => true,
184
-				);
185
-
186
-				if ( ! empty( $params ) ) {
187
-					$args['params'] = $params;
188
-				}
189
-
190
-				fusion_builder_map( $args );
191
-			}
154
+        /**
155
+         * The register widget function
156
+         * @return void
157
+         */
158
+        public function _register() {
159
+            if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
160
+                parent::_register();
161
+            }
162
+        }
192 163
 
193
-		}
164
+        /**
165
+         * Add our widget CSS to elementor editor.
166
+         */
167
+        public function elementor_editor_styles() {
168
+            wp_add_inline_style( 'elementor-editor', $this->widget_css( false ) );
169
+        }
194 170
 
195
-		public function get_fusion_params() {
196
-			$params    = array();
197
-			$arguments = $this->get_arguments();
198
-
199
-			if ( ! empty( $arguments ) ) {
200
-				foreach ( $arguments as $key => $val ) {
201
-					$param = array();
202
-					// type
203
-					$param['type'] = str_replace(
204
-						array(
205
-							"text",
206
-							"number",
207
-							"email",
208
-							"color",
209
-							"checkbox"
210
-						),
211
-						array(
212
-							"textfield",
213
-							"textfield",
214
-							"textfield",
215
-							"colorpicker",
216
-							"select",
171
+        public function register_fusion_element() {
217 172
 
218
-						),
219
-						$val['type'] );
173
+            $options = $this->options;
220 174
 
221
-					// multiselect
222
-					if ( $val['type'] == 'multiselect' || ( ( $param['type'] == 'select' || $val['type'] == 'select' ) && ! empty( $val['multiple'] ) ) ) {
223
-						$param['type']     = 'multiple_select';
224
-						$param['multiple'] = true;
225
-					}
175
+            if ( $this->base_id ) {
226 176
 
227
-					// heading
228
-					$param['heading'] = isset( $val['title'] ) ? $val['title'] : '';
177
+                $params = $this->get_fusion_params();
229 178
 
230
-					// description
231
-					$param['description'] = isset( $val['desc'] ) ? $val['desc'] : '';
179
+                $args = array(
180
+                    'name'            => $options['name'],
181
+                    'shortcode'       => $this->base_id,
182
+                    'icon'            => $options['block-icon'] ? $options['block-icon'] : 'far fa-square',
183
+                    'allow_generator' => true,
184
+                );
232 185
 
233
-					// param_name
234
-					$param['param_name'] = $key;
186
+                if ( ! empty( $params ) ) {
187
+                    $args['params'] = $params;
188
+                }
235 189
 
236
-					// Default
237
-					$param['default'] = isset( $val['default'] ) ? $val['default'] : '';
190
+                fusion_builder_map( $args );
191
+            }
238 192
 
239
-					// Group
240
-					if ( isset( $val['group'] ) ) {
241
-						$param['group'] = $val['group'];
242
-					}
193
+        }
243 194
 
244
-					// value
245
-					if ( $val['type'] == 'checkbox' ) {
246
-						if ( isset( $val['default'] ) && $val['default'] == '0' ) {
247
-							unset( $param['default'] );
248
-						}
249
-						$param['value'] = array( '0' => __( "No", 'ayecode-connect' ), '1' => __( "Yes", 'ayecode-connect' ) );
250
-					} elseif ( $param['type'] == 'select' || $param['type'] == 'multiple_select' ) {
251
-						$param['value'] = isset( $val['options'] ) ? $val['options'] : array();
252
-					} else {
253
-						$param['value'] = isset( $val['default'] ) ? $val['default'] : '';
254
-					}
195
+        public function get_fusion_params() {
196
+            $params    = array();
197
+            $arguments = $this->get_arguments();
198
+
199
+            if ( ! empty( $arguments ) ) {
200
+                foreach ( $arguments as $key => $val ) {
201
+                    $param = array();
202
+                    // type
203
+                    $param['type'] = str_replace(
204
+                        array(
205
+                            "text",
206
+                            "number",
207
+                            "email",
208
+                            "color",
209
+                            "checkbox"
210
+                        ),
211
+                        array(
212
+                            "textfield",
213
+                            "textfield",
214
+                            "textfield",
215
+                            "colorpicker",
216
+                            "select",
217
+
218
+                        ),
219
+                        $val['type'] );
220
+
221
+                    // multiselect
222
+                    if ( $val['type'] == 'multiselect' || ( ( $param['type'] == 'select' || $val['type'] == 'select' ) && ! empty( $val['multiple'] ) ) ) {
223
+                        $param['type']     = 'multiple_select';
224
+                        $param['multiple'] = true;
225
+                    }
226
+
227
+                    // heading
228
+                    $param['heading'] = isset( $val['title'] ) ? $val['title'] : '';
229
+
230
+                    // description
231
+                    $param['description'] = isset( $val['desc'] ) ? $val['desc'] : '';
232
+
233
+                    // param_name
234
+                    $param['param_name'] = $key;
235
+
236
+                    // Default
237
+                    $param['default'] = isset( $val['default'] ) ? $val['default'] : '';
238
+
239
+                    // Group
240
+                    if ( isset( $val['group'] ) ) {
241
+                        $param['group'] = $val['group'];
242
+                    }
243
+
244
+                    // value
245
+                    if ( $val['type'] == 'checkbox' ) {
246
+                        if ( isset( $val['default'] ) && $val['default'] == '0' ) {
247
+                            unset( $param['default'] );
248
+                        }
249
+                        $param['value'] = array( '0' => __( "No", 'ayecode-connect' ), '1' => __( "Yes", 'ayecode-connect' ) );
250
+                    } elseif ( $param['type'] == 'select' || $param['type'] == 'multiple_select' ) {
251
+                        $param['value'] = isset( $val['options'] ) ? $val['options'] : array();
252
+                    } else {
253
+                        $param['value'] = isset( $val['default'] ) ? $val['default'] : '';
254
+                    }
255
+
256
+                    // setup the param
257
+                    $params[] = $param;
255 258
 
256
-					// setup the param
257
-					$params[] = $param;
259
+                }
260
+            }
258 261
 
259
-				}
260
-			}
261 262
 
263
+            return $params;
264
+        }
262 265
 
263
-			return $params;
264
-		}
266
+        /**
267
+         * Maybe insert the shortcode inserter button in the footer if we are in the cornerstone builder
268
+         */
269
+        public static function maybe_cornerstone_builder() {
270
+            if ( did_action( 'cornerstone_before_boot_app' ) ) {
271
+                self::shortcode_insert_button_script();
272
+            }
273
+        }
265 274
 
266
-		/**
267
-		 * Maybe insert the shortcode inserter button in the footer if we are in the cornerstone builder
268
-		 */
269
-		public static function maybe_cornerstone_builder() {
270
-			if ( did_action( 'cornerstone_before_boot_app' ) ) {
271
-				self::shortcode_insert_button_script();
272
-			}
273
-		}
275
+        /**
276
+         * A function to ge the shortcode builder picker html.
277
+         *
278
+         * @param string $editor_id
279
+         *
280
+         * @return string
281
+         */
282
+        public static function get_picker( $editor_id = '' ) {
274 283
 
275
-		/**
276
-		 * A function to ge the shortcode builder picker html.
277
-		 *
278
-		 * @param string $editor_id
279
-		 *
280
-		 * @return string
281
-		 */
282
-		public static function get_picker( $editor_id = '' ) {
283
-
284
-			ob_start();
285
-			if ( isset( $_POST['editor_id'] ) ) {
286
-				$editor_id = esc_attr( $_POST['editor_id'] );
287
-			} elseif ( isset( $_REQUEST['et_fb'] ) ) {
288
-				$editor_id = 'main_content_content_vb_tiny_mce';
289
-			}
284
+            ob_start();
285
+            if ( isset( $_POST['editor_id'] ) ) {
286
+                $editor_id = esc_attr( $_POST['editor_id'] );
287
+            } elseif ( isset( $_REQUEST['et_fb'] ) ) {
288
+                $editor_id = 'main_content_content_vb_tiny_mce';
289
+            }
290 290
 
291
-			global $sd_widgets;
291
+            global $sd_widgets;
292 292
 
293 293
 //			print_r($sd_widgets);exit;
294
-			?>
294
+            ?>
295 295
 
296 296
 			<div class="sd-shortcode-left-wrap">
297 297
 				<?php
298
-				ksort( $sd_widgets );
299
-				//				print_r($sd_widgets);exit;
300
-				if ( ! empty( $sd_widgets ) ) {
301
-					echo '<select class="widefat" onchange="sd_get_shortcode_options(this);">';
302
-					echo "<option>" . __( 'Select shortcode', 'ayecode-connect' ) . "</option>";
303
-					foreach ( $sd_widgets as $shortcode => $class ) {
304
-						if(!empty($class['output_types']) && !in_array('shortcode', $class['output_types'])){ continue; }
305
-						echo "<option value='" . esc_attr( $shortcode ) . "'>" . esc_attr( $shortcode ) . " (" . esc_attr( $class['name'] ) . ")</option>";
306
-					}
307
-					echo "</select>";
298
+                ksort( $sd_widgets );
299
+                //				print_r($sd_widgets);exit;
300
+                if ( ! empty( $sd_widgets ) ) {
301
+                    echo '<select class="widefat" onchange="sd_get_shortcode_options(this);">';
302
+                    echo "<option>" . __( 'Select shortcode', 'ayecode-connect' ) . "</option>";
303
+                    foreach ( $sd_widgets as $shortcode => $class ) {
304
+                        if(!empty($class['output_types']) && !in_array('shortcode', $class['output_types'])){ continue; }
305
+                        echo "<option value='" . esc_attr( $shortcode ) . "'>" . esc_attr( $shortcode ) . " (" . esc_attr( $class['name'] ) . ")</option>";
306
+                    }
307
+                    echo "</select>";
308 308
 
309
-				}
310
-				?>
309
+                }
310
+                ?>
311 311
 				<div class="sd-shortcode-settings"></div>
312 312
 
313 313
 			</div>
@@ -318,8 +318,8 @@  discard block
 block discarded – undo
318 318
 					<?php if ( $editor_id != '' ) { ?>
319 319
 						<button class="button sd-insert-shortcode-button"
320 320
 								onclick="sd_insert_shortcode(<?php if ( ! empty( $editor_id ) ) {
321
-									echo "'" . $editor_id . "'";
322
-								} ?>)"><?php _e( 'Insert shortcode', 'ayecode-connect' ); ?></button>
321
+                                    echo "'" . $editor_id . "'";
322
+                                } ?>)"><?php _e( 'Insert shortcode', 'ayecode-connect' ); ?></button>
323 323
 					<?php } ?>
324 324
 					<button class="button"
325 325
 							onclick="sd_copy_to_clipboard()"><?php _e( 'Copy shortcode' ); ?></button>
@@ -327,150 +327,150 @@  discard block
 block discarded – undo
327 327
 			</div>
328 328
 			<?php
329 329
 
330
-			$html = ob_get_clean();
330
+            $html = ob_get_clean();
331 331
 
332
-			if ( wp_doing_ajax() ) {
333
-				echo $html;
334
-				$should_die = true;
332
+            if ( wp_doing_ajax() ) {
333
+                echo $html;
334
+                $should_die = true;
335 335
 
336
-				// some builder get the editor via ajax so we should not die on those occasions
337
-				$dont_die = array(
338
-					'parent_tag',// WP Bakery
339
-					'avia_request' // enfold
340
-				);
336
+                // some builder get the editor via ajax so we should not die on those occasions
337
+                $dont_die = array(
338
+                    'parent_tag',// WP Bakery
339
+                    'avia_request' // enfold
340
+                );
341 341
 
342
-				foreach ( $dont_die as $request ) {
343
-					if ( isset( $_REQUEST[ $request ] ) ) {
344
-						$should_die = false;
345
-					}
346
-				}
342
+                foreach ( $dont_die as $request ) {
343
+                    if ( isset( $_REQUEST[ $request ] ) ) {
344
+                        $should_die = false;
345
+                    }
346
+                }
347 347
 
348
-				if ( $should_die ) {
349
-					wp_die();
350
-				}
348
+                if ( $should_die ) {
349
+                    wp_die();
350
+                }
351 351
 
352
-			} else {
353
-				return $html;
354
-			}
352
+            } else {
353
+                return $html;
354
+            }
355 355
 
356
-			return '';
356
+            return '';
357 357
 
358
-		}
358
+        }
359 359
 
360
-		/**
361
-		 * Output the version in the header.
362
-		 */
363
-		public function generator() {
364
-			$file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
365
-			$plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
366
-
367
-			// Find source plugin/theme of SD
368
-			$source = array();
369
-			if ( strpos( $file, $plugins_dir ) !== false ) {
370
-				$source = explode( "/", plugin_basename( $file ) );
371
-			} else if ( function_exists( 'get_theme_root' ) ) {
372
-				$themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
373
-
374
-				if ( strpos( $file, $themes_dir ) !== false ) {
375
-					$source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
376
-				}
377
-			}
360
+        /**
361
+         * Output the version in the header.
362
+         */
363
+        public function generator() {
364
+            $file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
365
+            $plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
366
+
367
+            // Find source plugin/theme of SD
368
+            $source = array();
369
+            if ( strpos( $file, $plugins_dir ) !== false ) {
370
+                $source = explode( "/", plugin_basename( $file ) );
371
+            } else if ( function_exists( 'get_theme_root' ) ) {
372
+                $themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
373
+
374
+                if ( strpos( $file, $themes_dir ) !== false ) {
375
+                    $source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
376
+                }
377
+            }
378 378
 
379
-			echo '<meta name="generator" content="WP Super Duper v' . esc_attr( $this->version ) . '"' . ( ! empty( $source[0] ) ? ' data-sd-source="' . esc_attr( $source[0] ) . '"' : '' ) . ' />';
380
-		}
379
+            echo '<meta name="generator" content="WP Super Duper v' . esc_attr( $this->version ) . '"' . ( ! empty( $source[0] ) ? ' data-sd-source="' . esc_attr( $source[0] ) . '"' : '' ) . ' />';
380
+        }
381 381
 
382
-		/**
383
-		 * Get widget settings.
384
-		 *
385
-		 * @since 1.0.0
386
-		 */
387
-		public static function get_widget_settings() {
388
-			global $sd_widgets;
389
-
390
-			$shortcode = isset( $_REQUEST['shortcode'] ) && $_REQUEST['shortcode'] ? sanitize_title_with_dashes( $_REQUEST['shortcode'] ) : '';
391
-			if ( ! $shortcode ) {
392
-				wp_die();
393
-			}
394
-			$widget_args = isset( $sd_widgets[ $shortcode ] ) ? $sd_widgets[ $shortcode ] : '';
395
-			if ( ! $widget_args ) {
396
-				wp_die();
397
-			}
398
-			$class_name = isset( $widget_args['class_name'] ) && $widget_args['class_name'] ? $widget_args['class_name'] : '';
399
-			if ( ! $class_name ) {
400
-				wp_die();
401
-			}
382
+        /**
383
+         * Get widget settings.
384
+         *
385
+         * @since 1.0.0
386
+         */
387
+        public static function get_widget_settings() {
388
+            global $sd_widgets;
402 389
 
403
-			// invoke an instance method
404
-			$widget = new $class_name;
390
+            $shortcode = isset( $_REQUEST['shortcode'] ) && $_REQUEST['shortcode'] ? sanitize_title_with_dashes( $_REQUEST['shortcode'] ) : '';
391
+            if ( ! $shortcode ) {
392
+                wp_die();
393
+            }
394
+            $widget_args = isset( $sd_widgets[ $shortcode ] ) ? $sd_widgets[ $shortcode ] : '';
395
+            if ( ! $widget_args ) {
396
+                wp_die();
397
+            }
398
+            $class_name = isset( $widget_args['class_name'] ) && $widget_args['class_name'] ? $widget_args['class_name'] : '';
399
+            if ( ! $class_name ) {
400
+                wp_die();
401
+            }
402
+
403
+            // invoke an instance method
404
+            $widget = new $class_name;
405 405
 
406
-			ob_start();
407
-			$widget->form( array() );
408
-			$form = ob_get_clean();
409
-			echo "<form id='$shortcode'>" . $form . "<div class=\"widget-control-save\"></div></form>";
410
-			echo "<style>" . $widget->widget_css() . "</style>";
411
-			echo "<script>" . $widget->widget_js() . "</script>";
412
-			?>
406
+            ob_start();
407
+            $widget->form( array() );
408
+            $form = ob_get_clean();
409
+            echo "<form id='$shortcode'>" . $form . "<div class=\"widget-control-save\"></div></form>";
410
+            echo "<style>" . $widget->widget_css() . "</style>";
411
+            echo "<script>" . $widget->widget_js() . "</script>";
412
+            ?>
413 413
 			<?php
414
-			wp_die();
415
-		}
414
+            wp_die();
415
+        }
416 416
 
417
-		/**
418
-		 * Insert shortcode builder button to classic editor (not inside Gutenberg, not needed).
419
-		 *
420
-		 * @param string $editor_id Optional. Shortcode editor id. Default null.
421
-		 * @param string $insert_shortcode_function Optional. Insert shortcode function. Default null.
422
-		 *
423
-		 *@since 1.0.0
424
-		 *
425
-		 */
426
-		public static function shortcode_insert_button( $editor_id = '', $insert_shortcode_function = '' ) {
427
-			global $sd_widgets, $shortcode_insert_button_once;
428
-			if ( $shortcode_insert_button_once ) {
429
-				return;
430
-			}
431
-			add_thickbox();
417
+        /**
418
+         * Insert shortcode builder button to classic editor (not inside Gutenberg, not needed).
419
+         *
420
+         * @param string $editor_id Optional. Shortcode editor id. Default null.
421
+         * @param string $insert_shortcode_function Optional. Insert shortcode function. Default null.
422
+         *
423
+         *@since 1.0.0
424
+         *
425
+         */
426
+        public static function shortcode_insert_button( $editor_id = '', $insert_shortcode_function = '' ) {
427
+            global $sd_widgets, $shortcode_insert_button_once;
428
+            if ( $shortcode_insert_button_once ) {
429
+                return;
430
+            }
431
+            add_thickbox();
432 432
 
433 433
 
434
-			/**
435
-			 * Cornerstone makes us play dirty tricks :/
436
-			 * 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.
437
-			 */
438
-			if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
439
-				echo '<span id="insert-media-button">';
440
-			}
434
+            /**
435
+             * Cornerstone makes us play dirty tricks :/
436
+             * 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.
437
+             */
438
+            if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
439
+                echo '<span id="insert-media-button">';
440
+            }
441 441
 
442
-			echo self::shortcode_button( 'this', 'true' );
442
+            echo self::shortcode_button( 'this', 'true' );
443 443
 
444
-			// see opening note
445
-			if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
446
-				echo '</span>'; // end #insert-media-button
447
-			}
444
+            // see opening note
445
+            if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
446
+                echo '</span>'; // end #insert-media-button
447
+            }
448 448
 
449
-			// Add separate script for generatepress theme sections
450
-			if ( function_exists( 'generate_sections_sections_metabox' ) && did_action( 'generate_sections_metabox' ) ) {
451
-			} else {
452
-				self::shortcode_insert_button_script( $editor_id, $insert_shortcode_function );
453
-			}
449
+            // Add separate script for generatepress theme sections
450
+            if ( function_exists( 'generate_sections_sections_metabox' ) && did_action( 'generate_sections_metabox' ) ) {
451
+            } else {
452
+                self::shortcode_insert_button_script( $editor_id, $insert_shortcode_function );
453
+            }
454 454
 
455
-			$shortcode_insert_button_once = true;
456
-		}
455
+            $shortcode_insert_button_once = true;
456
+        }
457 457
 
458
-		/**
459
-		 * Gets the shortcode insert button html.
460
-		 *
461
-		 * @param string $id
462
-		 * @param string $search_for_id
463
-		 *
464
-		 * @return mixed
465
-		 */
466
-		public static function shortcode_button( $id = '', $search_for_id = '' ) {
467
-			ob_start();
468
-			?>
458
+        /**
459
+         * Gets the shortcode insert button html.
460
+         *
461
+         * @param string $id
462
+         * @param string $search_for_id
463
+         *
464
+         * @return mixed
465
+         */
466
+        public static function shortcode_button( $id = '', $search_for_id = '' ) {
467
+            ob_start();
468
+            ?>
469 469
 			<span class="sd-lable-shortcode-inserter">
470 470
 				<a onclick="sd_ajax_get_picker(<?php echo $id;
471
-				if ( $search_for_id ) {
472
-					echo "," . $search_for_id;
473
-				} ?>);" href="#TB_inline?width=100%&height=550&inlineId=super-duper-content-ajaxed"
471
+                if ( $search_for_id ) {
472
+                    echo "," . $search_for_id;
473
+                } ?>);" href="#TB_inline?width=100%&height=550&inlineId=super-duper-content-ajaxed"
474 474
 				   class="thickbox button super-duper-content-open" title="Add Shortcode">
475 475
 					<span style="vertical-align: middle;line-height: 18px;font-size: 20px;"
476 476
 						  class="dashicons dashicons-screenoptions"></span>
@@ -481,21 +481,21 @@  discard block
 block discarded – undo
481 481
 			</span>
482 482
 
483 483
 			<?php
484
-			$html = ob_get_clean();
484
+            $html = ob_get_clean();
485 485
 
486
-			// remove line breaks so we can use it in js
487
-			return preg_replace( "/\r|\n/", "", trim( $html ) );
488
-		}
486
+            // remove line breaks so we can use it in js
487
+            return preg_replace( "/\r|\n/", "", trim( $html ) );
488
+        }
489 489
 
490
-		/**
491
-		 * Makes SD work with the siteOrigin page builder.
492
-		 *
493
-		 * @return mixed
494
-		 *@since 1.0.6
495
-		 */
496
-		public static function siteorigin_js() {
497
-			ob_start();
498
-			?>
490
+        /**
491
+         * Makes SD work with the siteOrigin page builder.
492
+         *
493
+         * @return mixed
494
+         *@since 1.0.6
495
+         */
496
+        public static function siteorigin_js() {
497
+            ob_start();
498
+            ?>
499 499
 			<script>
500 500
 				/**
501 501
 				 * Check a form to see what items should be shown or hidden.
@@ -571,29 +571,29 @@  discard block
 block discarded – undo
571 571
 				});
572 572
 			</script>
573 573
 			<?php
574
-			$output = ob_get_clean();
574
+            $output = ob_get_clean();
575 575
 
576
-			/*
576
+            /*
577 577
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
578 578
 			 */
579 579
 
580
-			return str_replace( array(
581
-				'<script>',
582
-				'</script>'
583
-			), '', $output );
584
-		}
580
+            return str_replace( array(
581
+                '<script>',
582
+                '</script>'
583
+            ), '', $output );
584
+        }
585 585
 
586
-		/**
587
-		 * Output the JS and CSS for the shortcode insert button.
588
-		 *
589
-		 * @param string $editor_id
590
-		 * @param string $insert_shortcode_function
591
-		 *
592
-		 *@since 1.0.6
593
-		 *
594
-		 */
595
-		public static function shortcode_insert_button_script( $editor_id = '', $insert_shortcode_function = '' ) {
596
-			?>
586
+        /**
587
+         * Output the JS and CSS for the shortcode insert button.
588
+         *
589
+         * @param string $editor_id
590
+         * @param string $insert_shortcode_function
591
+         *
592
+         *@since 1.0.6
593
+         *
594
+         */
595
+        public static function shortcode_insert_button_script( $editor_id = '', $insert_shortcode_function = '' ) {
596
+            ?>
597 597
 			<style>
598 598
 				.sd-shortcode-left-wrap {
599 599
 					float: left;
@@ -721,35 +721,35 @@  discard block
 block discarded – undo
721 721
 				<?php } ?>
722 722
 			</style>
723 723
 			<?php
724
-			if ( class_exists( 'SiteOrigin_Panels' ) ) {
725
-				echo "<script>" . self::siteorigin_js() . "</script>";
726
-			}
727
-			?>
724
+            if ( class_exists( 'SiteOrigin_Panels' ) ) {
725
+                echo "<script>" . self::siteorigin_js() . "</script>";
726
+            }
727
+            ?>
728 728
 			<script>
729 729
 				<?php
730
-				if(! empty( $insert_shortcode_function )){
731
-					echo $insert_shortcode_function;
732
-				}else{
733
-
734
-				/**
735
-				 * Function for super duper insert shortcode.
736
-				 *
737
-				 * @since 1.0.0
738
-				 */
739
-				?>
730
+                if(! empty( $insert_shortcode_function )){
731
+                    echo $insert_shortcode_function;
732
+                }else{
733
+
734
+                /**
735
+                 * Function for super duper insert shortcode.
736
+                 *
737
+                 * @since 1.0.0
738
+                 */
739
+                ?>
740 740
 				function sd_insert_shortcode($editor_id) {
741 741
 					$shortcode = jQuery('#TB_ajaxContent #sd-shortcode-output').val();
742 742
 					if ($shortcode) {
743 743
 						if (!$editor_id) {
744 744
 							<?php
745
-							if ( isset( $_REQUEST['et_fb'] ) ) {
746
-								echo '$editor_id = "#main_content_content_vb_tiny_mce";';
747
-							} elseif ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) {
748
-								echo '$editor_id = "#elementor-controls .wp-editor-container textarea";';
749
-							} else {
750
-								echo '$editor_id = "#wp-content-editor-container textarea";';
751
-							}
752
-							?>
745
+                            if ( isset( $_REQUEST['et_fb'] ) ) {
746
+                                echo '$editor_id = "#main_content_content_vb_tiny_mce";';
747
+                            } elseif ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) {
748
+                                echo '$editor_id = "#elementor-controls .wp-editor-container textarea";';
749
+                            } else {
750
+                                echo '$editor_id = "#wp-content-editor-container textarea";';
751
+                            }
752
+                            ?>
753 753
 						} else {
754 754
 							$editor_id = '#' + $editor_id;
755 755
 						}
@@ -1063,18 +1063,18 @@  discard block
 block discarded – undo
1063 1063
 				}
1064 1064
 			</script>
1065 1065
 			<?php
1066
-		}
1066
+        }
1067 1067
 
1068
-		/**
1069
-		 * Gets some CSS for the widgets screen.
1070
-		 *
1071
-		 * @param bool $advanced If we should include advanced CSS.
1072
-		 *
1073
-		 * @return mixed
1074
-		 */
1075
-		public function widget_css( $advanced = true ) {
1076
-			ob_start();
1077
-			?>
1068
+        /**
1069
+         * Gets some CSS for the widgets screen.
1070
+         *
1071
+         * @param bool $advanced If we should include advanced CSS.
1072
+         *
1073
+         * @return mixed
1074
+         */
1075
+        public function widget_css( $advanced = true ) {
1076
+            ob_start();
1077
+            ?>
1078 1078
 			<style>
1079 1079
 				<?php if( $advanced ){ ?>
1080 1080
 				.sd-advanced-setting {
@@ -1114,26 +1114,26 @@  discard block
 block discarded – undo
1114 1114
 				.elementor-control .sd-argument select[multiple] option{padding:3px}
1115 1115
 			</style>
1116 1116
 			<?php
1117
-			$output = ob_get_clean();
1117
+            $output = ob_get_clean();
1118 1118
 
1119
-			/*
1119
+            /*
1120 1120
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
1121 1121
 			 */
1122 1122
 
1123
-			return str_replace( array(
1124
-				'<style>',
1125
-				'</style>'
1126
-			), '', $output );
1127
-		}
1123
+            return str_replace( array(
1124
+                '<style>',
1125
+                '</style>'
1126
+            ), '', $output );
1127
+        }
1128 1128
 
1129
-		/**
1130
-		 * Gets some JS for the widgets screen.
1131
-		 *
1132
-		 * @return mixed
1133
-		 */
1134
-		public function widget_js() {
1135
-			ob_start();
1136
-			?>
1129
+        /**
1130
+         * Gets some JS for the widgets screen.
1131
+         *
1132
+         * @return mixed
1133
+         */
1134
+        public function widget_js() {
1135
+            ob_start();
1136
+            ?>
1137 1137
 			<script>
1138 1138
 
1139 1139
 				/**
@@ -1284,517 +1284,517 @@  discard block
 block discarded – undo
1284 1284
 				<?php do_action( 'wp_super_duper_widget_js', $this ); ?>
1285 1285
 			</script>
1286 1286
 			<?php
1287
-			$output = ob_get_clean();
1287
+            $output = ob_get_clean();
1288 1288
 
1289
-			/*
1289
+            /*
1290 1290
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
1291 1291
 			 */
1292 1292
 
1293
-			return str_replace( array(
1294
-				'<script>',
1295
-				'</script>'
1296
-			), '', $output );
1297
-		}
1293
+            return str_replace( array(
1294
+                '<script>',
1295
+                '</script>'
1296
+            ), '', $output );
1297
+        }
1298 1298
 
1299 1299
 
1300
-		/**
1301
-		 * Set the name from the argument key.
1302
-		 *
1303
-		 * @param $options
1304
-		 *
1305
-		 * @return mixed
1306
-		 */
1307
-		private function add_name_from_key( $options, $arguments = false ) {
1308
-			if ( ! empty( $options['arguments'] ) ) {
1309
-				foreach ( $options['arguments'] as $key => $val ) {
1310
-					$options['arguments'][ $key ]['name'] = $key;
1311
-				}
1312
-			} elseif ( $arguments && is_array( $options ) && ! empty( $options ) ) {
1313
-				foreach ( $options as $key => $val ) {
1314
-					$options[ $key ]['name'] = $key;
1315
-				}
1316
-			}
1300
+        /**
1301
+         * Set the name from the argument key.
1302
+         *
1303
+         * @param $options
1304
+         *
1305
+         * @return mixed
1306
+         */
1307
+        private function add_name_from_key( $options, $arguments = false ) {
1308
+            if ( ! empty( $options['arguments'] ) ) {
1309
+                foreach ( $options['arguments'] as $key => $val ) {
1310
+                    $options['arguments'][ $key ]['name'] = $key;
1311
+                }
1312
+            } elseif ( $arguments && is_array( $options ) && ! empty( $options ) ) {
1313
+                foreach ( $options as $key => $val ) {
1314
+                    $options[ $key ]['name'] = $key;
1315
+                }
1316
+            }
1317 1317
 
1318
-			return $options;
1319
-		}
1318
+            return $options;
1319
+        }
1320 1320
 
1321
-		/**
1322
-		 * Register the parent shortcode.
1323
-		 *
1324
-		 * @since 1.0.0
1325
-		 */
1326
-		public function register_shortcode() {
1327
-			add_shortcode( $this->base_id, array( $this, 'shortcode_output' ) );
1328
-			add_action( 'wp_ajax_super_duper_output_shortcode', array( $this, 'render_shortcode' ) );
1329
-		}
1321
+        /**
1322
+         * Register the parent shortcode.
1323
+         *
1324
+         * @since 1.0.0
1325
+         */
1326
+        public function register_shortcode() {
1327
+            add_shortcode( $this->base_id, array( $this, 'shortcode_output' ) );
1328
+            add_action( 'wp_ajax_super_duper_output_shortcode', array( $this, 'render_shortcode' ) );
1329
+        }
1330 1330
 
1331
-		/**
1332
-		 * Render the shortcode via ajax so we can return it to Gutenberg.
1333
-		 *
1334
-		 * @since 1.0.0
1335
-		 */
1336
-		public function render_shortcode() {
1337
-			check_ajax_referer( 'super_duper_output_shortcode', '_ajax_nonce', true );
1338
-			if ( ! current_user_can( 'manage_options' ) ) {
1339
-				wp_die();
1340
-			}
1331
+        /**
1332
+         * Render the shortcode via ajax so we can return it to Gutenberg.
1333
+         *
1334
+         * @since 1.0.0
1335
+         */
1336
+        public function render_shortcode() {
1337
+            check_ajax_referer( 'super_duper_output_shortcode', '_ajax_nonce', true );
1338
+            if ( ! current_user_can( 'manage_options' ) ) {
1339
+                wp_die();
1340
+            }
1341 1341
 
1342
-			// we might need the $post value here so lets set it.
1343
-			if ( isset( $_POST['post_id'] ) && $_POST['post_id'] ) {
1344
-				$post_obj = get_post( absint( $_POST['post_id'] ) );
1345
-				if ( ! empty( $post_obj ) && empty( $post ) ) {
1346
-					global $post;
1347
-					$post = $post_obj;
1348
-				}
1349
-			}
1342
+            // we might need the $post value here so lets set it.
1343
+            if ( isset( $_POST['post_id'] ) && $_POST['post_id'] ) {
1344
+                $post_obj = get_post( absint( $_POST['post_id'] ) );
1345
+                if ( ! empty( $post_obj ) && empty( $post ) ) {
1346
+                    global $post;
1347
+                    $post = $post_obj;
1348
+                }
1349
+            }
1350 1350
 
1351
-			if ( isset( $_POST['shortcode'] ) && $_POST['shortcode'] ) {
1352
-				$is_preview = $this->is_preview();
1353
-				$shortcode_name   = sanitize_title_with_dashes( $_POST['shortcode'] );
1354
-				$attributes_array = isset( $_POST['attributes'] ) && $_POST['attributes'] ? $_POST['attributes'] : array();
1355
-				$attributes       = '';
1356
-				if ( ! empty( $attributes_array ) ) {
1357
-					foreach ( $attributes_array as $key => $value ) {
1358
-						if ( is_array( $value ) ) {
1359
-							$value = implode( ",", $value );
1360
-						}
1351
+            if ( isset( $_POST['shortcode'] ) && $_POST['shortcode'] ) {
1352
+                $is_preview = $this->is_preview();
1353
+                $shortcode_name   = sanitize_title_with_dashes( $_POST['shortcode'] );
1354
+                $attributes_array = isset( $_POST['attributes'] ) && $_POST['attributes'] ? $_POST['attributes'] : array();
1355
+                $attributes       = '';
1356
+                if ( ! empty( $attributes_array ) ) {
1357
+                    foreach ( $attributes_array as $key => $value ) {
1358
+                        if ( is_array( $value ) ) {
1359
+                            $value = implode( ",", $value );
1360
+                        }
1361
+
1362
+                        if ( ! empty( $value ) ) {
1363
+                            $value = wp_unslash( $value );
1364
+
1365
+                            // Encode [ and ].
1366
+                            if ( $is_preview ) {
1367
+                                $value = $this->encode_shortcodes( $value );
1368
+                            }
1369
+                        }
1370
+                        $attributes .= " " . esc_attr( sanitize_title_with_dashes( $key ) ) . "='" . esc_attr( $value ) . "' ";
1371
+                    }
1372
+                }
1361 1373
 
1362
-						if ( ! empty( $value ) ) {
1363
-							$value = wp_unslash( $value );
1374
+                $shortcode = "[" . esc_attr( $shortcode_name ) . " " . $attributes . "]";
1364 1375
 
1365
-							// Encode [ and ].
1366
-							if ( $is_preview ) {
1367
-								$value = $this->encode_shortcodes( $value );
1368
-							}
1369
-						}
1370
-						$attributes .= " " . esc_attr( sanitize_title_with_dashes( $key ) ) . "='" . esc_attr( $value ) . "' ";
1371
-					}
1372
-				}
1376
+                $content = do_shortcode( $shortcode );
1373 1377
 
1374
-				$shortcode = "[" . esc_attr( $shortcode_name ) . " " . $attributes . "]";
1378
+                // Decode [ and ].
1379
+                if ( ! empty( $content ) && $is_preview ) {
1380
+                    $content = $this->decode_shortcodes( $content );
1381
+                }
1375 1382
 
1376
-				$content = do_shortcode( $shortcode );
1383
+                echo $content;
1384
+            }
1385
+            wp_die();
1386
+        }
1377 1387
 
1378
-				// Decode [ and ].
1379
-				if ( ! empty( $content ) && $is_preview ) {
1380
-					$content = $this->decode_shortcodes( $content );
1381
-				}
1388
+        /**
1389
+         * Output the shortcode.
1390
+         *
1391
+         * @param array $args
1392
+         * @param string $content
1393
+         *
1394
+         * @return string
1395
+         */
1396
+        public function shortcode_output( $args = array(), $content = '' ) {
1397
+            $_instance = $args;
1382 1398
 
1383
-				echo $content;
1384
-			}
1385
-			wp_die();
1386
-		}
1399
+            $args = $this->argument_values( $args );
1387 1400
 
1388
-		/**
1389
-		 * Output the shortcode.
1390
-		 *
1391
-		 * @param array $args
1392
-		 * @param string $content
1393
-		 *
1394
-		 * @return string
1395
-		 */
1396
-		public function shortcode_output( $args = array(), $content = '' ) {
1397
-			$_instance = $args;
1398
-
1399
-			$args = $this->argument_values( $args );
1400
-
1401
-			// add extra argument so we know its a output to gutenberg
1402
-			//$args
1403
-			$args = $this->string_to_bool( $args );
1404
-
1405
-			// if we have a enclosed shortcode we add it to the special `html` argument
1406
-			if ( ! empty( $content ) ) {
1407
-				$args['html'] = $content;
1408
-			}
1401
+            // add extra argument so we know its a output to gutenberg
1402
+            //$args
1403
+            $args = $this->string_to_bool( $args );
1409 1404
 
1410
-			if ( ! $this->is_preview() ) {
1411
-				/**
1412
-				 * Filters the settings for a particular widget args.
1413
-				 *
1414
-				 * @param array          $args      The current widget instance's settings.
1415
-				 * @param WP_Super_Duper $widget    The current widget settings.
1416
-				 * @param array          $_instance An array of default widget arguments.
1417
-				 *
1418
-				 *@since 1.0.28
1419
-				 *
1420
-				 */
1421
-				$args = apply_filters( 'wp_super_duper_widget_display_callback', $args, $this, $_instance );
1405
+            // if we have a enclosed shortcode we add it to the special `html` argument
1406
+            if ( ! empty( $content ) ) {
1407
+                $args['html'] = $content;
1408
+            }
1422 1409
 
1423
-				if ( ! is_array( $args ) ) {
1424
-					return $args;
1425
-				}
1426
-			}
1410
+            if ( ! $this->is_preview() ) {
1411
+                /**
1412
+                 * Filters the settings for a particular widget args.
1413
+                 *
1414
+                 * @param array          $args      The current widget instance's settings.
1415
+                 * @param WP_Super_Duper $widget    The current widget settings.
1416
+                 * @param array          $_instance An array of default widget arguments.
1417
+                 *
1418
+                 *@since 1.0.28
1419
+                 *
1420
+                 */
1421
+                $args = apply_filters( 'wp_super_duper_widget_display_callback', $args, $this, $_instance );
1422
+
1423
+                if ( ! is_array( $args ) ) {
1424
+                    return $args;
1425
+                }
1426
+            }
1427 1427
 
1428
-			$class = isset( $this->options['widget_ops']['classname'] ) ? esc_attr( $this->options['widget_ops']['classname'] ) : '';
1429
-			$class .= " sdel-".$this->get_instance_hash();
1428
+            $class = isset( $this->options['widget_ops']['classname'] ) ? esc_attr( $this->options['widget_ops']['classname'] ) : '';
1429
+            $class .= " sdel-".$this->get_instance_hash();
1430 1430
 
1431
-			$class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
1432
-			$class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
1431
+            $class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
1432
+            $class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
1433 1433
 
1434
-			$attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
1435
-			$attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
1434
+            $attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
1435
+            $attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
1436 1436
 
1437
-			$shortcode_args = array();
1438
-			$output         = '';
1439
-			$no_wrap        = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
1440
-			if ( isset( $args['no_wrap'] ) && $args['no_wrap'] ) {
1441
-				$no_wrap = true;
1442
-			}
1443
-			$main_content = $this->output( $args, $shortcode_args, $content );
1444
-			if ( $main_content && ! $no_wrap ) {
1445
-				// wrap the shortcode in a div with the same class as the widget
1446
-				$output .= '<div class="' . $class . '" ' . $attrs . '>';
1447
-				if ( ! empty( $args['title'] ) ) {
1448
-					// if its a shortcode and there is a title try to grab the title wrappers
1449
-					$shortcode_args = array( 'before_title' => '', 'after_title' => '' );
1450
-					if ( empty( $instance ) ) {
1451
-						global $wp_registered_sidebars;
1452
-						if ( ! empty( $wp_registered_sidebars ) ) {
1453
-							foreach ( $wp_registered_sidebars as $sidebar ) {
1454
-								if ( ! empty( $sidebar['before_title'] ) ) {
1455
-									$shortcode_args['before_title'] = $sidebar['before_title'];
1456
-									$shortcode_args['after_title']  = $sidebar['after_title'];
1457
-									break;
1458
-								}
1459
-							}
1460
-						}
1461
-					}
1462
-					$output .= $this->output_title( $shortcode_args, $args );
1463
-				}
1464
-				$output .= $main_content;
1465
-				$output .= '</div>';
1466
-			} elseif ( $main_content && $no_wrap ) {
1467
-				$output .= $main_content;
1468
-			}
1437
+            $shortcode_args = array();
1438
+            $output         = '';
1439
+            $no_wrap        = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
1440
+            if ( isset( $args['no_wrap'] ) && $args['no_wrap'] ) {
1441
+                $no_wrap = true;
1442
+            }
1443
+            $main_content = $this->output( $args, $shortcode_args, $content );
1444
+            if ( $main_content && ! $no_wrap ) {
1445
+                // wrap the shortcode in a div with the same class as the widget
1446
+                $output .= '<div class="' . $class . '" ' . $attrs . '>';
1447
+                if ( ! empty( $args['title'] ) ) {
1448
+                    // if its a shortcode and there is a title try to grab the title wrappers
1449
+                    $shortcode_args = array( 'before_title' => '', 'after_title' => '' );
1450
+                    if ( empty( $instance ) ) {
1451
+                        global $wp_registered_sidebars;
1452
+                        if ( ! empty( $wp_registered_sidebars ) ) {
1453
+                            foreach ( $wp_registered_sidebars as $sidebar ) {
1454
+                                if ( ! empty( $sidebar['before_title'] ) ) {
1455
+                                    $shortcode_args['before_title'] = $sidebar['before_title'];
1456
+                                    $shortcode_args['after_title']  = $sidebar['after_title'];
1457
+                                    break;
1458
+                                }
1459
+                            }
1460
+                        }
1461
+                    }
1462
+                    $output .= $this->output_title( $shortcode_args, $args );
1463
+                }
1464
+                $output .= $main_content;
1465
+                $output .= '</div>';
1466
+            } elseif ( $main_content && $no_wrap ) {
1467
+                $output .= $main_content;
1468
+            }
1469 1469
 
1470
-			// if preview show a placeholder if empty
1471
-			if ( $this->is_preview() && $output == '' ) {
1472
-				$output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
1473
-			}
1470
+            // if preview show a placeholder if empty
1471
+            if ( $this->is_preview() && $output == '' ) {
1472
+                $output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
1473
+            }
1474 1474
 
1475
-			return apply_filters( 'wp_super_duper_widget_output', $output, $args, $shortcode_args, $this );
1476
-		}
1475
+            return apply_filters( 'wp_super_duper_widget_output', $output, $args, $shortcode_args, $this );
1476
+        }
1477 1477
 
1478
-		/**
1479
-		 * Placeholder text to show if output is empty and we are on a preview/builder page.
1480
-		 *
1481
-		 * @param string $name
1482
-		 *
1483
-		 * @return string
1484
-		 */
1485
-		public function preview_placeholder_text( $name = '' ) {
1486
-			return "<div style='background:#0185ba33;padding: 10px;border: 4px #ccc dashed;'>" . wp_sprintf( __( 'Placeholder for: %s', 'ayecode-connect' ), $name ) . "</div>";
1487
-		}
1478
+        /**
1479
+         * Placeholder text to show if output is empty and we are on a preview/builder page.
1480
+         *
1481
+         * @param string $name
1482
+         *
1483
+         * @return string
1484
+         */
1485
+        public function preview_placeholder_text( $name = '' ) {
1486
+            return "<div style='background:#0185ba33;padding: 10px;border: 4px #ccc dashed;'>" . wp_sprintf( __( 'Placeholder for: %s', 'ayecode-connect' ), $name ) . "</div>";
1487
+        }
1488 1488
 
1489
-		/**
1490
-		 * Sometimes booleans values can be turned to strings, so we fix that.
1491
-		 *
1492
-		 * @param $options
1493
-		 *
1494
-		 * @return mixed
1495
-		 */
1496
-		public function string_to_bool( $options ) {
1497
-			// convert bool strings to booleans
1498
-			foreach ( $options as $key => $val ) {
1499
-				if ( $val == 'false' ) {
1500
-					$options[ $key ] = false;
1501
-				} elseif ( $val == 'true' ) {
1502
-					$options[ $key ] = true;
1503
-				}
1504
-			}
1489
+        /**
1490
+         * Sometimes booleans values can be turned to strings, so we fix that.
1491
+         *
1492
+         * @param $options
1493
+         *
1494
+         * @return mixed
1495
+         */
1496
+        public function string_to_bool( $options ) {
1497
+            // convert bool strings to booleans
1498
+            foreach ( $options as $key => $val ) {
1499
+                if ( $val == 'false' ) {
1500
+                    $options[ $key ] = false;
1501
+                } elseif ( $val == 'true' ) {
1502
+                    $options[ $key ] = true;
1503
+                }
1504
+            }
1505 1505
 
1506
-			return $options;
1507
-		}
1506
+            return $options;
1507
+        }
1508 1508
 
1509
-		/**
1510
-		 * Get the argument values that are also filterable.
1511
-		 *
1512
-		 * @param $instance
1513
-		 *
1514
-		 * @return array
1515
-		 *@since 1.0.12 Don't set checkbox default value if the value is empty.
1516
-		 *
1517
-		 */
1518
-		public function argument_values( $instance ) {
1519
-			$argument_values = array();
1520
-
1521
-			// set widget instance
1522
-			$this->instance = $instance;
1523
-
1524
-			if ( empty( $this->arguments ) ) {
1525
-				$this->arguments = $this->get_arguments();
1526
-			}
1509
+        /**
1510
+         * Get the argument values that are also filterable.
1511
+         *
1512
+         * @param $instance
1513
+         *
1514
+         * @return array
1515
+         *@since 1.0.12 Don't set checkbox default value if the value is empty.
1516
+         *
1517
+         */
1518
+        public function argument_values( $instance ) {
1519
+            $argument_values = array();
1527 1520
 
1528
-			if ( ! empty( $this->arguments ) ) {
1529
-				foreach ( $this->arguments as $key => $args ) {
1530
-					// set the input name from the key
1531
-					$args['name'] = $key;
1532
-					//
1533
-					$argument_values[ $key ] = isset( $instance[ $key ] ) ? $instance[ $key ] : '';
1534
-					if ( $args['type'] == 'checkbox' && $argument_values[ $key ] == '' ) {
1535
-						// don't set default for an empty checkbox
1536
-					} elseif ( $argument_values[ $key ] == '' && isset( $args['default'] ) ) {
1537
-						$argument_values[ $key ] = $args['default'];
1538
-					}
1539
-				}
1540
-			}
1521
+            // set widget instance
1522
+            $this->instance = $instance;
1541 1523
 
1542
-			return $argument_values;
1543
-		}
1524
+            if ( empty( $this->arguments ) ) {
1525
+                $this->arguments = $this->get_arguments();
1526
+            }
1544 1527
 
1545
-		/**
1546
-		 * Set arguments in super duper.
1547
-		 *
1548
-		 * @return array Set arguments.
1549
-		 *@since 1.0.0
1550
-		 *
1551
-		 */
1552
-		public function set_arguments() {
1553
-			return $this->arguments;
1554
-		}
1528
+            if ( ! empty( $this->arguments ) ) {
1529
+                foreach ( $this->arguments as $key => $args ) {
1530
+                    // set the input name from the key
1531
+                    $args['name'] = $key;
1532
+                    //
1533
+                    $argument_values[ $key ] = isset( $instance[ $key ] ) ? $instance[ $key ] : '';
1534
+                    if ( $args['type'] == 'checkbox' && $argument_values[ $key ] == '' ) {
1535
+                        // don't set default for an empty checkbox
1536
+                    } elseif ( $argument_values[ $key ] == '' && isset( $args['default'] ) ) {
1537
+                        $argument_values[ $key ] = $args['default'];
1538
+                    }
1539
+                }
1540
+            }
1555 1541
 
1556
-		/**
1557
-		 * Get arguments in super duper.
1558
-		 *
1559
-		 * @return array Get arguments.
1560
-		 *@since 1.0.0
1561
-		 *
1562
-		 */
1563
-		public function get_arguments() {
1564
-			if ( empty( $this->arguments ) ) {
1565
-				$this->arguments = $this->set_arguments();
1566
-			}
1542
+            return $argument_values;
1543
+        }
1544
+
1545
+        /**
1546
+         * Set arguments in super duper.
1547
+         *
1548
+         * @return array Set arguments.
1549
+         *@since 1.0.0
1550
+         *
1551
+         */
1552
+        public function set_arguments() {
1553
+            return $this->arguments;
1554
+        }
1555
+
1556
+        /**
1557
+         * Get arguments in super duper.
1558
+         *
1559
+         * @return array Get arguments.
1560
+         *@since 1.0.0
1561
+         *
1562
+         */
1563
+        public function get_arguments() {
1564
+            if ( empty( $this->arguments ) ) {
1565
+                $this->arguments = $this->set_arguments();
1566
+            }
1567 1567
 
1568
-			$this->arguments = apply_filters( 'wp_super_duper_arguments', $this->arguments, $this->options, $this->instance );
1569
-			$this->arguments = $this->add_name_from_key( $this->arguments, true );
1568
+            $this->arguments = apply_filters( 'wp_super_duper_arguments', $this->arguments, $this->options, $this->instance );
1569
+            $this->arguments = $this->add_name_from_key( $this->arguments, true );
1570 1570
 
1571 1571
             if( !empty( $this->arguments['title']['value'] ) ){
1572 1572
                 $this->arguments['title']['value'] = wp_kses_post( $this->arguments['title']['value'] );
1573 1573
             }
1574 1574
 
1575
-			return $this->arguments;
1576
-		}
1575
+            return $this->arguments;
1576
+        }
1577 1577
 
1578
-		/**
1579
-		 * This is the main output class for all 3 items, widget, shortcode and block, it is extended in the calling class.
1580
-		 *
1581
-		 * @param array $args
1582
-		 * @param array $widget_args
1583
-		 * @param string $content
1584
-		 */
1585
-		public function output( $args = array(), $widget_args = array(), $content = '' ) {
1578
+        /**
1579
+         * This is the main output class for all 3 items, widget, shortcode and block, it is extended in the calling class.
1580
+         *
1581
+         * @param array $args
1582
+         * @param array $widget_args
1583
+         * @param string $content
1584
+         */
1585
+        public function output( $args = array(), $widget_args = array(), $content = '' ) {
1586 1586
 
1587
-		}
1587
+        }
1588 1588
 
1589
-		/**
1590
-		 * Add the dynamic block code inline when the wp-block in enqueued.
1591
-		 */
1592
-		public function register_block() {
1593
-			wp_add_inline_script( 'wp-blocks', $this->block() );
1594
-			if ( class_exists( 'SiteOrigin_Panels' ) ) {
1595
-				wp_add_inline_script( 'wp-blocks', $this->siteorigin_js() );
1596
-			}
1597
-		}
1589
+        /**
1590
+         * Add the dynamic block code inline when the wp-block in enqueued.
1591
+         */
1592
+        public function register_block() {
1593
+            wp_add_inline_script( 'wp-blocks', $this->block() );
1594
+            if ( class_exists( 'SiteOrigin_Panels' ) ) {
1595
+                wp_add_inline_script( 'wp-blocks', $this->siteorigin_js() );
1596
+            }
1597
+        }
1598 1598
 
1599
-		/**
1600
-		 * Check if we need to show advanced options.
1601
-		 *
1602
-		 * @return bool
1603
-		 */
1604
-		public function block_show_advanced() {
1605
-
1606
-			$show      = false;
1607
-			$arguments = $this->get_arguments();
1608
-
1609
-			if ( ! empty( $arguments ) ) {
1610
-				foreach ( $arguments as $argument ) {
1611
-					if ( isset( $argument['advanced'] ) && $argument['advanced'] ) {
1612
-						$show = true;
1613
-						break; // no need to continue if we know we have it
1614
-					}
1615
-				}
1616
-			}
1599
+        /**
1600
+         * Check if we need to show advanced options.
1601
+         *
1602
+         * @return bool
1603
+         */
1604
+        public function block_show_advanced() {
1617 1605
 
1618
-			return $show;
1619
-		}
1606
+            $show      = false;
1607
+            $arguments = $this->get_arguments();
1620 1608
 
1621
-		/**
1622
-		 * Get the url path to the current folder.
1623
-		 *
1624
-		 * @return string
1625
-		 */
1626
-		public function get_url() {
1627
-			$url = $this->url;
1628
-
1629
-			if ( ! $url ) {
1630
-				$content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
1631
-				$content_url = untrailingslashit( WP_CONTENT_URL );
1632
-
1633
-				// Replace http:// to https://.
1634
-				if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
1635
-					$content_url = str_replace( 'http://', 'https://', $content_url );
1636
-				}
1609
+            if ( ! empty( $arguments ) ) {
1610
+                foreach ( $arguments as $argument ) {
1611
+                    if ( isset( $argument['advanced'] ) && $argument['advanced'] ) {
1612
+                        $show = true;
1613
+                        break; // no need to continue if we know we have it
1614
+                    }
1615
+                }
1616
+            }
1637 1617
 
1638
-				// Check if we are inside a plugin
1639
-				$file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
1640
-				$url = str_replace( $content_dir, $content_url, $file_dir );
1641
-				$url = trailingslashit( $url );
1642
-				$this->url = $url;
1643
-			}
1618
+            return $show;
1619
+        }
1644 1620
 
1645
-			return $url;
1646
-		}
1621
+        /**
1622
+         * Get the url path to the current folder.
1623
+         *
1624
+         * @return string
1625
+         */
1626
+        public function get_url() {
1627
+            $url = $this->url;
1647 1628
 
1648
-		/**
1649
-		 * Get the url path to the current folder.
1650
-		 *
1651
-		 * @return string
1652
-		 */
1653
-		public function get_url_old() {
1629
+            if ( ! $url ) {
1630
+                $content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
1631
+                $content_url = untrailingslashit( WP_CONTENT_URL );
1654 1632
 
1655
-			$url = $this->url;
1633
+                // Replace http:// to https://.
1634
+                if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
1635
+                    $content_url = str_replace( 'http://', 'https://', $content_url );
1636
+                }
1656 1637
 
1657
-			if ( ! $url ) {
1658
-				// check if we are inside a plugin
1659
-				$file_dir = str_replace( "/includes", "", dirname( __FILE__ ) );
1638
+                // Check if we are inside a plugin
1639
+                $file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
1640
+                $url = str_replace( $content_dir, $content_url, $file_dir );
1641
+                $url = trailingslashit( $url );
1642
+                $this->url = $url;
1643
+            }
1660 1644
 
1661
-				$dir_parts = explode( "/wp-content/", $file_dir );
1662
-				$url_parts = explode( "/wp-content/", plugins_url() );
1645
+            return $url;
1646
+        }
1663 1647
 
1664
-				if ( ! empty( $url_parts[0] ) && ! empty( $dir_parts[1] ) ) {
1665
-					$url       = trailingslashit( $url_parts[0] . "/wp-content/" . $dir_parts[1] );
1666
-					$this->url = $url;
1667
-				}
1668
-			}
1648
+        /**
1649
+         * Get the url path to the current folder.
1650
+         *
1651
+         * @return string
1652
+         */
1653
+        public function get_url_old() {
1669 1654
 
1655
+            $url = $this->url;
1670 1656
 
1671
-			return $url;
1672
-		}
1657
+            if ( ! $url ) {
1658
+                // check if we are inside a plugin
1659
+                $file_dir = str_replace( "/includes", "", dirname( __FILE__ ) );
1673 1660
 
1674
-		/**
1675
-		 * Generate the block icon.
1676
-		 *
1677
-		 * Enables the use of Font Awesome icons.
1678
-		 *
1679
-		 * @note xlink:href is actually deprecated but href is not supported by all so we use both.
1680
-		 *
1681
-		 * @param $icon
1682
-		 *
1683
-		 * @return string
1684
-		 *@since 1.1.0
1685
-		 */
1686
-		public function get_block_icon( $icon ) {
1687
-
1688
-			// check if we have a Font Awesome icon
1689
-			$fa_type = '';
1690
-			if ( substr( $icon, 0, 7 ) === "fas fa-" ) {
1691
-				$fa_type = 'solid';
1692
-			} elseif ( substr( $icon, 0, 7 ) === "far fa-" ) {
1693
-				$fa_type = 'regular';
1694
-			} elseif ( substr( $icon, 0, 7 ) === "fab fa-" ) {
1695
-				$fa_type = 'brands';
1696
-			} else {
1697
-				$icon = "'" . $icon . "'";
1698
-			}
1661
+                $dir_parts = explode( "/wp-content/", $file_dir );
1662
+                $url_parts = explode( "/wp-content/", plugins_url() );
1699 1663
 
1700
-			// set the icon if we found one
1701
-			if ( $fa_type ) {
1702
-				$fa_icon = str_replace( array( "fas fa-", "far fa-", "fab fa-" ), "", $icon );
1703
-				$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 . "'}))";
1704
-			}
1664
+                if ( ! empty( $url_parts[0] ) && ! empty( $dir_parts[1] ) ) {
1665
+                    $url       = trailingslashit( $url_parts[0] . "/wp-content/" . $dir_parts[1] );
1666
+                    $this->url = $url;
1667
+                }
1668
+            }
1705 1669
 
1706
-			return $icon;
1707
-		}
1708 1670
 
1709
-		public function group_arguments( $arguments ) {
1710
-			if ( ! empty( $arguments ) ) {
1711
-				$temp_arguments = array();
1712
-				$general        = __( "General", 'ayecode-connect' );
1713
-				$add_sections   = false;
1714
-				foreach ( $arguments as $key => $args ) {
1715
-					if ( isset( $args['group'] ) ) {
1716
-						$temp_arguments[ $args['group'] ][ $key ] = $args;
1717
-						$add_sections                             = true;
1718
-					} else {
1719
-						$temp_arguments[ $general ][ $key ] = $args;
1720
-					}
1721
-				}
1671
+            return $url;
1672
+        }
1722 1673
 
1723
-				// only add sections if more than one
1724
-				if ( $add_sections ) {
1725
-					$arguments = $temp_arguments;
1726
-				}
1727
-			}
1674
+        /**
1675
+         * Generate the block icon.
1676
+         *
1677
+         * Enables the use of Font Awesome icons.
1678
+         *
1679
+         * @note xlink:href is actually deprecated but href is not supported by all so we use both.
1680
+         *
1681
+         * @param $icon
1682
+         *
1683
+         * @return string
1684
+         *@since 1.1.0
1685
+         */
1686
+        public function get_block_icon( $icon ) {
1687
+
1688
+            // check if we have a Font Awesome icon
1689
+            $fa_type = '';
1690
+            if ( substr( $icon, 0, 7 ) === "fas fa-" ) {
1691
+                $fa_type = 'solid';
1692
+            } elseif ( substr( $icon, 0, 7 ) === "far fa-" ) {
1693
+                $fa_type = 'regular';
1694
+            } elseif ( substr( $icon, 0, 7 ) === "fab fa-" ) {
1695
+                $fa_type = 'brands';
1696
+            } else {
1697
+                $icon = "'" . $icon . "'";
1698
+            }
1728 1699
 
1729
-			return $arguments;
1730
-		}
1700
+            // set the icon if we found one
1701
+            if ( $fa_type ) {
1702
+                $fa_icon = str_replace( array( "fas fa-", "far fa-", "fab fa-" ), "", $icon );
1703
+                $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 . "'}))";
1704
+            }
1731 1705
 
1732
-		/**
1733
-		 * Parse used group tabs.
1734
-		 *
1735
-		 * @since 1.1.17
1736
-		 */
1737
-		public function group_block_tabs( $tabs, $arguments ) {
1738
-			if ( ! empty( $tabs ) && ! empty( $arguments ) ) {
1739
-				$has_sections = false;
1740
-
1741
-				foreach ( $this->arguments as $key => $args ) {
1742
-					if ( isset( $args['group'] ) ) {
1743
-						$has_sections = true;
1744
-						break;
1745
-					}
1746
-				}
1706
+            return $icon;
1707
+        }
1747 1708
 
1748
-				if ( ! $has_sections ) {
1749
-					return $tabs;
1750
-				}
1709
+        public function group_arguments( $arguments ) {
1710
+            if ( ! empty( $arguments ) ) {
1711
+                $temp_arguments = array();
1712
+                $general        = __( "General", 'ayecode-connect' );
1713
+                $add_sections   = false;
1714
+                foreach ( $arguments as $key => $args ) {
1715
+                    if ( isset( $args['group'] ) ) {
1716
+                        $temp_arguments[ $args['group'] ][ $key ] = $args;
1717
+                        $add_sections                             = true;
1718
+                    } else {
1719
+                        $temp_arguments[ $general ][ $key ] = $args;
1720
+                    }
1721
+                }
1751 1722
 
1752
-				$new_tabs = array();
1723
+                // only add sections if more than one
1724
+                if ( $add_sections ) {
1725
+                    $arguments = $temp_arguments;
1726
+                }
1727
+            }
1753 1728
 
1754
-				foreach ( $tabs as $tab_key => $tab ) {
1755
-					$new_groups = array();
1729
+            return $arguments;
1730
+        }
1756 1731
 
1757
-					if ( ! empty( $tab['groups'] ) && is_array( $tab['groups'] ) ) {
1758
-						foreach ( $tab['groups'] as $group ) {
1759
-							if ( isset( $arguments[ $group ] ) ) {
1760
-								$new_groups[] = $group;
1761
-							}
1762
-						}
1763
-					}
1732
+        /**
1733
+         * Parse used group tabs.
1734
+         *
1735
+         * @since 1.1.17
1736
+         */
1737
+        public function group_block_tabs( $tabs, $arguments ) {
1738
+            if ( ! empty( $tabs ) && ! empty( $arguments ) ) {
1739
+                $has_sections = false;
1740
+
1741
+                foreach ( $this->arguments as $key => $args ) {
1742
+                    if ( isset( $args['group'] ) ) {
1743
+                        $has_sections = true;
1744
+                        break;
1745
+                    }
1746
+                }
1764 1747
 
1765
-					if ( ! empty( $new_groups ) ) {
1766
-						$tab['groups'] = $new_groups;
1748
+                if ( ! $has_sections ) {
1749
+                    return $tabs;
1750
+                }
1767 1751
 
1768
-						$new_tabs[ $tab_key ] = $tab;
1769
-					}
1770
-				}
1752
+                $new_tabs = array();
1771 1753
 
1772
-				$tabs = $new_tabs;
1773
-			}
1754
+                foreach ( $tabs as $tab_key => $tab ) {
1755
+                    $new_groups = array();
1774 1756
 
1775
-			return $tabs;
1776
-		}
1757
+                    if ( ! empty( $tab['groups'] ) && is_array( $tab['groups'] ) ) {
1758
+                        foreach ( $tab['groups'] as $group ) {
1759
+                            if ( isset( $arguments[ $group ] ) ) {
1760
+                                $new_groups[] = $group;
1761
+                            }
1762
+                        }
1763
+                    }
1764
+
1765
+                    if ( ! empty( $new_groups ) ) {
1766
+                        $tab['groups'] = $new_groups;
1777 1767
 
1778
-		/**
1779
-		 * Output the JS for building the dynamic Guntenberg block.
1780
-		 *
1781
-		 * @return mixed
1782
-		 *@since 1.0.9 Save numbers as numbers and not strings.
1783
-		 * @since 1.1.0 Font Awesome classes can be used for icons.
1784
-		 * @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.
1785
-		 */
1786
-		public function block() {
1787
-			global $sd_is_js_functions_loaded, $aui_bs5;
1788
-
1789
-			$show_advanced = $this->block_show_advanced();
1790
-
1791
-			ob_start();
1792
-			?>
1768
+                        $new_tabs[ $tab_key ] = $tab;
1769
+                    }
1770
+                }
1771
+
1772
+                $tabs = $new_tabs;
1773
+            }
1774
+
1775
+            return $tabs;
1776
+        }
1777
+
1778
+        /**
1779
+         * Output the JS for building the dynamic Guntenberg block.
1780
+         *
1781
+         * @return mixed
1782
+         *@since 1.0.9 Save numbers as numbers and not strings.
1783
+         * @since 1.1.0 Font Awesome classes can be used for icons.
1784
+         * @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.
1785
+         */
1786
+        public function block() {
1787
+            global $sd_is_js_functions_loaded, $aui_bs5;
1788
+
1789
+            $show_advanced = $this->block_show_advanced();
1790
+
1791
+            ob_start();
1792
+            ?>
1793 1793
 			<script>
1794 1794
 			<?php
1795
-			if ( ! $sd_is_js_functions_loaded ) {
1796
-				$sd_is_js_functions_loaded = true;
1797
-			?>
1795
+            if ( ! $sd_is_js_functions_loaded ) {
1796
+                $sd_is_js_functions_loaded = true;
1797
+            ?>
1798 1798
 function sd_show_view_options($this){
1799 1799
 	if(jQuery($this).html().length){
1800 1800
 		jQuery($this).html('');
@@ -2294,8 +2294,8 @@  discard block
 block discarded – undo
2294 2294
 				$classes = [];
2295 2295
 
2296 2296
 				<?php
2297
-				if($aui_bs5){
2298
-					?>
2297
+                if($aui_bs5){
2298
+                    ?>
2299 2299
 				$aui_bs5 = true;
2300 2300
 				$p_ml = 'ms-';
2301 2301
 				$p_mr = 'me-';
@@ -2303,8 +2303,8 @@  discard block
 block discarded – undo
2303 2303
 				$p_pl = 'ps-';
2304 2304
 				$p_pr = 'pe-';
2305 2305
 					<?php
2306
-				}else{
2307
-						?>
2306
+                }else{
2307
+                        ?>
2308 2308
 				$aui_bs5 = false;
2309 2309
 				$p_ml = 'ml-';
2310 2310
 				$p_mr = 'mr-';
@@ -2312,8 +2312,8 @@  discard block
 block discarded – undo
2312 2312
 				$p_pl = 'pl-';
2313 2313
 				$p_pr = 'pr-';
2314 2314
 					<?php
2315
-				}
2316
-				?>
2315
+                }
2316
+                ?>
2317 2317
 
2318 2318
 				// margins
2319 2319
 				if ( $args['mt'] !== undefined && $args['mt'] !== '' ) { $classes.push( "mt-" + $args['mt'] );  $mt = $args['mt']; }else{$mt = null;}
@@ -2497,12 +2497,12 @@  discard block
 block discarded – undo
2497 2497
 			<?php
2498 2498
 
2499 2499
 
2500
-			}
2500
+            }
2501 2501
 
2502
-			if(method_exists($this,'block_global_js')){
2503
-					echo $this->block_global_js();
2504
-			}
2505
-			?>
2502
+            if(method_exists($this,'block_global_js')){
2503
+                    echo $this->block_global_js();
2504
+            }
2505
+            ?>
2506 2506
 
2507 2507
 jQuery(function() {
2508 2508
 
@@ -2555,13 +2555,13 @@  discard block
 block discarded – undo
2555 2555
 						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/.
2556 2556
 						supports: {
2557 2557
 							<?php
2558
-							if(!isset($this->options['block-supports']['renaming'])){
2559
-								$this->options['block-supports']['renaming'] = false;
2560
-							}
2561
-							if ( isset( $this->options['block-supports'] ) ) {
2562
-								echo $this->array_to_attributes( $this->options['block-supports'] );
2563
-							}
2564
-							?>
2558
+                            if(!isset($this->options['block-supports']['renaming'])){
2559
+                                $this->options['block-supports']['renaming'] = false;
2560
+                            }
2561
+                            if ( isset( $this->options['block-supports'] ) ) {
2562
+                                echo $this->array_to_attributes( $this->options['block-supports'] );
2563
+                            }
2564
+                            ?>
2565 2565
 						},
2566 2566
 						__experimentalLabel( attributes, { context } ) {
2567 2567
 							var visibility_html = attributes && attributes.visibility_conditions ? ' &#128065;' : '';
@@ -2571,174 +2571,174 @@  discard block
 block discarded – undo
2571 2571
 						},
2572 2572
 						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.
2573 2573
 						<?php if ( isset( $this->options['block-keywords'] ) ) {
2574
-						echo "keywords : " . $this->options['block-keywords'] . ",";
2575
-						}
2576
-
2577
-
2578
-						// block hover preview.
2579
-						$example_args = array();
2580
-						if(!empty($this->arguments)){
2581
-							foreach($this->arguments as $key => $a_args){
2582
-								if(isset($a_args['example'])){
2583
-									$example_args[$key] = $a_args['example'];
2584
-								}
2585
-							}
2586
-						}
2587
-						$viewport_width = isset($this->options['example']['viewportWidth']) ? 'viewportWidth: '.absint($this->options['example']['viewportWidth']) : '';
2588
-						$example_inner_blocks = !empty($this->options['example']['innerBlocks']) && is_array($this->options['example']['innerBlocks']) ? 'innerBlocks: ' . wp_json_encode($this->options['example']['innerBlocks']) : '';
2589
-						if( isset( $this->options['example'] ) && $this->options['example'] === false ){
2590
-							// no preview if set to false
2591
-						}elseif( !empty( $example_args ) ){
2592
-							echo "example : {attributes:{".$this->array_to_attributes( $example_args )."},$viewport_width},";
2593
-						}elseif( !empty( $this->options['example'] ) ){
2594
-							unset($this->options['example']['viewportWidth']);
2595
-							unset($this->options['example']['innerBlocks']);
2596
-							$example_atts = $this->array_to_attributes( $this->options['example'] );
2597
-							$example_parts = array();
2598
-							if($example_atts){
2599
-								$example_parts[] = rtrim($example_atts,",");
2600
-							}
2601
-							if($viewport_width){
2602
-								$example_parts[] = $viewport_width;
2603
-							}
2604
-							if($example_inner_blocks){
2605
-								$example_parts[] = $example_inner_blocks;
2606
-							}
2607
-							if(!empty($example_parts)){
2608
-								echo "example : {".implode(',', $example_parts)."},";
2609
-							}
2610
-						}else{
2611
-							echo 'example : {viewportWidth: 500},';
2612
-						}
2613
-
2614
-
2615
-
2616
-						// limit to parent
2617
-						if( !empty( $this->options['parent'] ) ){
2618
-							echo "parent : " . wp_json_encode( $this->options['parent'] ) . ",";
2619
-						}
2620
-
2621
-						// limit allowed blocks
2622
-						if( !empty( $this->options['allowed-blocks'] ) ){
2623
-							echo "allowedBlocks : " . wp_json_encode( $this->options['allowed-blocks'] ) . ",";
2624
-						}
2625
-
2626
-						// maybe set no_wrap
2627
-						$no_wrap = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
2628
-						if ( isset( $this->arguments['no_wrap'] ) && $this->arguments['no_wrap'] ) {
2629
-							$no_wrap = true;
2630
-						}
2631
-						if ( $no_wrap ) {
2632
-							$this->options['block-wrap'] = '';
2633
-						}
2634
-
2635
-						// maybe load the drag/drop functions.
2636
-						$img_drag_drop = false;
2637
-
2638
-						$show_alignment = false;
2639
-						// align feature
2640
-						/*echo "supports: {";
2574
+                        echo "keywords : " . $this->options['block-keywords'] . ",";
2575
+                        }
2576
+
2577
+
2578
+                        // block hover preview.
2579
+                        $example_args = array();
2580
+                        if(!empty($this->arguments)){
2581
+                            foreach($this->arguments as $key => $a_args){
2582
+                                if(isset($a_args['example'])){
2583
+                                    $example_args[$key] = $a_args['example'];
2584
+                                }
2585
+                            }
2586
+                        }
2587
+                        $viewport_width = isset($this->options['example']['viewportWidth']) ? 'viewportWidth: '.absint($this->options['example']['viewportWidth']) : '';
2588
+                        $example_inner_blocks = !empty($this->options['example']['innerBlocks']) && is_array($this->options['example']['innerBlocks']) ? 'innerBlocks: ' . wp_json_encode($this->options['example']['innerBlocks']) : '';
2589
+                        if( isset( $this->options['example'] ) && $this->options['example'] === false ){
2590
+                            // no preview if set to false
2591
+                        }elseif( !empty( $example_args ) ){
2592
+                            echo "example : {attributes:{".$this->array_to_attributes( $example_args )."},$viewport_width},";
2593
+                        }elseif( !empty( $this->options['example'] ) ){
2594
+                            unset($this->options['example']['viewportWidth']);
2595
+                            unset($this->options['example']['innerBlocks']);
2596
+                            $example_atts = $this->array_to_attributes( $this->options['example'] );
2597
+                            $example_parts = array();
2598
+                            if($example_atts){
2599
+                                $example_parts[] = rtrim($example_atts,",");
2600
+                            }
2601
+                            if($viewport_width){
2602
+                                $example_parts[] = $viewport_width;
2603
+                            }
2604
+                            if($example_inner_blocks){
2605
+                                $example_parts[] = $example_inner_blocks;
2606
+                            }
2607
+                            if(!empty($example_parts)){
2608
+                                echo "example : {".implode(',', $example_parts)."},";
2609
+                            }
2610
+                        }else{
2611
+                            echo 'example : {viewportWidth: 500},';
2612
+                        }
2613
+
2614
+
2615
+
2616
+                        // limit to parent
2617
+                        if( !empty( $this->options['parent'] ) ){
2618
+                            echo "parent : " . wp_json_encode( $this->options['parent'] ) . ",";
2619
+                        }
2620
+
2621
+                        // limit allowed blocks
2622
+                        if( !empty( $this->options['allowed-blocks'] ) ){
2623
+                            echo "allowedBlocks : " . wp_json_encode( $this->options['allowed-blocks'] ) . ",";
2624
+                        }
2625
+
2626
+                        // maybe set no_wrap
2627
+                        $no_wrap = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
2628
+                        if ( isset( $this->arguments['no_wrap'] ) && $this->arguments['no_wrap'] ) {
2629
+                            $no_wrap = true;
2630
+                        }
2631
+                        if ( $no_wrap ) {
2632
+                            $this->options['block-wrap'] = '';
2633
+                        }
2634
+
2635
+                        // maybe load the drag/drop functions.
2636
+                        $img_drag_drop = false;
2637
+
2638
+                        $show_alignment = false;
2639
+                        // align feature
2640
+                        /*echo "supports: {";
2641 2641
 						echo "	align: true,";
2642 2642
 						echo "  html: false";
2643 2643
 						echo "},";*/
2644 2644
 
2645 2645
 
2646
-							echo "attributes : {";
2647
-
2648
-							if ( $show_advanced ) {
2649
-								echo "show_advanced: {";
2650
-								echo "	type: 'boolean',";
2651
-								echo "  default: false,";
2652
-								echo "},";
2653
-							}
2654
-
2655
-							// block wrap element
2656
-							if ( ! empty( $this->options['block-wrap'] ) ) { //@todo we should validate this?
2657
-								echo "block_wrap: {";
2658
-								echo "	type: 'string',";
2659
-								echo "  default: '" . esc_attr( $this->options['block-wrap'] ) . "',";
2660
-								echo "},";
2661
-							}
2662
-
2663
-
2664
-							if ( ! empty( $this->arguments ) ) {
2665
-
2666
-								foreach ( $this->arguments as $key => $args ) {
2667
-
2668
-									if( $args['type'] == 'image' ||  $args['type'] == 'images' ){
2669
-										$img_drag_drop = true;
2670
-									}
2671
-
2672
-									// set if we should show alignment
2673
-									if ( $key == 'alignment' ) {
2674
-										$show_alignment = true;
2675
-									}
2676
-
2677
-									$extra = '';
2678
-
2679
-									if ( $args['type'] == 'notice' ||  $args['type'] == 'tab' ) {
2680
-										continue;
2681
-									}
2682
-									elseif ( $args['type'] == 'checkbox' ) {
2683
-										$type    = 'boolean';
2684
-										$default = isset( $args['default'] ) && $args['default'] ? 'true' : 'false';
2685
-									} elseif ( $args['type'] == 'number' ) {
2686
-										$type    = 'number';
2687
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2688
-									} elseif ( $args['type'] == 'select' && ! empty( $args['multiple'] ) ) {
2689
-										$type = 'array';
2690
-										if ( isset( $args['default'] ) && is_array( $args['default'] ) ) {
2691
-											$default = ! empty( $args['default'] ) ? "['" . implode( "','", $args['default'] ) . "']" : "[]";
2692
-										} else {
2693
-											$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2694
-										}
2695
-									} elseif ( $args['type'] == 'tagselect' ) {
2696
-										$type    = 'array';
2697
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2698
-									} elseif ( $args['type'] == 'multiselect' ) {
2699
-										$type    = 'array';
2700
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2701
-									} elseif ( $args['type'] == 'image_xy' ) {
2702
-										$type    = 'object';
2703
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2704
-									} elseif ( $args['type'] == 'image' ) {
2705
-										$type    = 'string';
2706
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2707
-
2708
-										// add a field for ID
2709
-	//                                    echo $key . "_id : {";
2710
-	//                                    echo "type : 'number',";
2711
-	//                                    echo "},";
2712
-	//                                    echo $key . "_xy : {";
2713
-	//                                    echo "type : 'object',";
2714
-	//                                    echo "},";
2715
-
2716
-									} else {
2717
-										$type    = !empty($args['hidden_type']) ? esc_attr($args['hidden_type']) : 'string';
2718
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2719
-
2720
-									}
2721
-									echo $key . " : {";
2722
-									echo "type : '$type',";
2723
-									echo "default : $default,";
2724
-									echo "},";
2725
-								}
2726
-							}
2727
-
2728
-							echo "content : {type : 'string',default: 'Please select the attributes in the block settings'},";
2729
-							echo "sd_shortcode : {type : 'string',default: ''},";
2730
-
2731
-							if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
2732
-								echo "sd_shortcode_close : {type : 'string',default: ''},";
2733
-							}
2734
-
2735
-							echo "className: { type: 'string', default: '' },";
2736
-
2737
-							echo "},";
2738
-
2739
-
2740
-
2741
-						?>
2646
+                            echo "attributes : {";
2647
+
2648
+                            if ( $show_advanced ) {
2649
+                                echo "show_advanced: {";
2650
+                                echo "	type: 'boolean',";
2651
+                                echo "  default: false,";
2652
+                                echo "},";
2653
+                            }
2654
+
2655
+                            // block wrap element
2656
+                            if ( ! empty( $this->options['block-wrap'] ) ) { //@todo we should validate this?
2657
+                                echo "block_wrap: {";
2658
+                                echo "	type: 'string',";
2659
+                                echo "  default: '" . esc_attr( $this->options['block-wrap'] ) . "',";
2660
+                                echo "},";
2661
+                            }
2662
+
2663
+
2664
+                            if ( ! empty( $this->arguments ) ) {
2665
+
2666
+                                foreach ( $this->arguments as $key => $args ) {
2667
+
2668
+                                    if( $args['type'] == 'image' ||  $args['type'] == 'images' ){
2669
+                                        $img_drag_drop = true;
2670
+                                    }
2671
+
2672
+                                    // set if we should show alignment
2673
+                                    if ( $key == 'alignment' ) {
2674
+                                        $show_alignment = true;
2675
+                                    }
2676
+
2677
+                                    $extra = '';
2678
+
2679
+                                    if ( $args['type'] == 'notice' ||  $args['type'] == 'tab' ) {
2680
+                                        continue;
2681
+                                    }
2682
+                                    elseif ( $args['type'] == 'checkbox' ) {
2683
+                                        $type    = 'boolean';
2684
+                                        $default = isset( $args['default'] ) && $args['default'] ? 'true' : 'false';
2685
+                                    } elseif ( $args['type'] == 'number' ) {
2686
+                                        $type    = 'number';
2687
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2688
+                                    } elseif ( $args['type'] == 'select' && ! empty( $args['multiple'] ) ) {
2689
+                                        $type = 'array';
2690
+                                        if ( isset( $args['default'] ) && is_array( $args['default'] ) ) {
2691
+                                            $default = ! empty( $args['default'] ) ? "['" . implode( "','", $args['default'] ) . "']" : "[]";
2692
+                                        } else {
2693
+                                            $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2694
+                                        }
2695
+                                    } elseif ( $args['type'] == 'tagselect' ) {
2696
+                                        $type    = 'array';
2697
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2698
+                                    } elseif ( $args['type'] == 'multiselect' ) {
2699
+                                        $type    = 'array';
2700
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2701
+                                    } elseif ( $args['type'] == 'image_xy' ) {
2702
+                                        $type    = 'object';
2703
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2704
+                                    } elseif ( $args['type'] == 'image' ) {
2705
+                                        $type    = 'string';
2706
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2707
+
2708
+                                        // add a field for ID
2709
+    //                                    echo $key . "_id : {";
2710
+    //                                    echo "type : 'number',";
2711
+    //                                    echo "},";
2712
+    //                                    echo $key . "_xy : {";
2713
+    //                                    echo "type : 'object',";
2714
+    //                                    echo "},";
2715
+
2716
+                                    } else {
2717
+                                        $type    = !empty($args['hidden_type']) ? esc_attr($args['hidden_type']) : 'string';
2718
+                                        $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2719
+
2720
+                                    }
2721
+                                    echo $key . " : {";
2722
+                                    echo "type : '$type',";
2723
+                                    echo "default : $default,";
2724
+                                    echo "},";
2725
+                                }
2726
+                            }
2727
+
2728
+                            echo "content : {type : 'string',default: 'Please select the attributes in the block settings'},";
2729
+                            echo "sd_shortcode : {type : 'string',default: ''},";
2730
+
2731
+                            if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
2732
+                                echo "sd_shortcode_close : {type : 'string',default: ''},";
2733
+                            }
2734
+
2735
+                            echo "className: { type: 'string', default: '' },";
2736
+
2737
+                            echo "},";
2738
+
2739
+
2740
+
2741
+                        ?>
2742 2742
 
2743 2743
 						// The "edit" property must be a valid function.
2744 2744
 						edit: function (props) {
@@ -2813,10 +2813,10 @@  discard block
 block discarded – undo
2813 2813
 							}
2814 2814
 
2815 2815
 							<?php
2816
-							if(!empty($this->options['block-edit-raw'])) {
2817
-								echo $this->options['block-edit-raw']; // strings have to be in single quotes, may cause issues
2818
-							}else{
2819
-							?>
2816
+                            if(!empty($this->options['block-edit-raw'])) {
2817
+                                echo $this->options['block-edit-raw']; // strings have to be in single quotes, may cause issues
2818
+                            }else{
2819
+                            ?>
2820 2820
 
2821 2821
 function hasSelectedInnerBlock(props) {
2822 2822
 	const select = wp.data.select('core/editor');
@@ -2838,9 +2838,9 @@  discard block
 block discarded – undo
2838 2838
 
2839 2839
 	var $value = '';
2840 2840
 	<?php
2841
-	// if we have a post_type and a category then link them
2842
-	if( isset($this->arguments['post_type']) && isset($this->arguments['category']) && !empty($this->arguments['category']['post_type_linked']) ){
2843
-	?>
2841
+    // if we have a post_type and a category then link them
2842
+    if( isset($this->arguments['post_type']) && isset($this->arguments['category']) && !empty($this->arguments['category']['post_type_linked']) ){
2843
+    ?>
2844 2844
 	if(typeof(prev_attributes[props.clientId]) != 'undefined' && selectedBlock && selectedBlock.clientId === props.clientId){
2845 2845
 		$pt = props.attributes.post_type;
2846 2846
 		if(post_type_rest_slugs.length){
@@ -2853,11 +2853,11 @@  discard block
 block discarded – undo
2853 2853
 			term_query_type = $pt;
2854 2854
 		}
2855 2855
 <?php
2856
-	$cat_path = '';
2857
-	if ( ! empty( $this->arguments['post_type']['onchange_rest']['path'] ) ) {
2858
-		$cat_path = esc_js( strip_tags( $this->arguments['post_type']['onchange_rest']['path'] ) );
2859
-		$cat_path = str_replace( array( '&quot;', '&#039;' ), array( '"', "'" ), $cat_path );
2860
-	}
2856
+    $cat_path = '';
2857
+    if ( ! empty( $this->arguments['post_type']['onchange_rest']['path'] ) ) {
2858
+        $cat_path = esc_js( strip_tags( $this->arguments['post_type']['onchange_rest']['path'] ) );
2859
+        $cat_path = str_replace( array( '&quot;', '&#039;' ), array( '"', "'" ), $cat_path );
2860
+    }
2861 2861
 ?>
2862 2862
 		/* taxonomies */
2863 2863
 		if($value && 'post_type' in prev_attributes[props.clientId] && 'category' in prev_attributes[props.clientId] && run){
@@ -2949,7 +2949,7 @@  discard block
 block discarded – undo
2949 2949
 <?php
2950 2950
 $current_screen = function_exists('get_current_screen') ? get_current_screen() : '';
2951 2951
 if(!empty($current_screen->base) && $current_screen->base==='widgets'){
2952
-	echo 'const { deviceType } = "";';
2952
+    echo 'const { deviceType } = "";';
2953 2953
 }else{
2954 2954
 ?>
2955 2955
 /** Get device type const. */
@@ -3013,8 +3013,8 @@  discard block
 block discarded – undo
3013 3013
 										'attributes': props.attributes,
3014 3014
 										'block_parent_name': parentBlocks.length ? parentBlocks[parentBlocks.length - 1].name : '',
3015 3015
 										'post_id': <?php global $post; if ( isset( $post->ID ) ) {
3016
-										echo $post->ID;
3017
-									}else{echo '0';}?>,
3016
+                                        echo $post->ID;
3017
+                                    }else{echo '0';}?>,
3018 3018
 										'_ajax_nonce': '<?php echo wp_create_nonce( 'super_duper_output_shortcode' );?>'
3019 3019
 									};
3020 3020
 
@@ -3028,20 +3028,20 @@  discard block
 block discarded – undo
3028 3028
 										}
3029 3029
 
3030 3030
 										 <?php
3031
-										if(!empty($this->options['nested-block'])){
3032
-											?>
3031
+                                        if(!empty($this->options['nested-block'])){
3032
+                                            ?>
3033 3033
 											// props.setAttributes({content: env});
3034 3034
 										is_fetching = false;
3035 3035
 										prev_attributes[props.clientId] = props.attributes;
3036 3036
 											 <?php
3037
-										}else{
3038
-										?>
3037
+                                        }else{
3038
+                                        ?>
3039 3039
 										props.setAttributes({content: env});
3040 3040
 										is_fetching = false;
3041 3041
 										prev_attributes[props.clientId] = props.attributes;
3042 3042
 										<?php
3043
-										}
3044
-										?>
3043
+                                        }
3044
+                                        ?>
3045 3045
 
3046 3046
 
3047 3047
 										// if AUI is active call the js init function
@@ -3060,31 +3060,31 @@  discard block
 block discarded – undo
3060 3060
 							}
3061 3061
 
3062 3062
 							<?php
3063
-							if(!empty($this->options['block-edit-js'])) {
3064
-								echo  $this->options['block-edit-js'] ; // strings have to be in single quotes, may cause issues
3065
-							}
3063
+                            if(!empty($this->options['block-edit-js'])) {
3064
+                                echo  $this->options['block-edit-js'] ; // strings have to be in single quotes, may cause issues
3065
+                            }
3066 3066
 
3067 3067
 
3068 3068
 
3069 3069
 
3070
-							if(empty($this->options['block-save-return'])){
3071
-							?>
3070
+                            if(empty($this->options['block-save-return'])){
3071
+                            ?>
3072 3072
 								///////////////////////////////////////////////////////////////////////
3073 3073
 
3074 3074
 									 // build the shortcode.
3075 3075
 								shortcode = "[<?php echo $this->options['base_id'];?>";
3076 3076
 								<?php
3077 3077
 
3078
-								if(! empty( $this->arguments )){
3078
+                                if(! empty( $this->arguments )){
3079 3079
 
3080
-								foreach($this->arguments as $key => $args){
3081
-								   // if($args['type']=='tabs'){continue;}
3080
+                                foreach($this->arguments as $key => $args){
3081
+                                    // if($args['type']=='tabs'){continue;}
3082 3082
 
3083
-								   // don't add metadata arguments
3084
-								   if (substr($key, 0, 9 ) === 'metadata_') {
3085
-									   continue;
3086
-								   }
3087
-								?>
3083
+                                    // don't add metadata arguments
3084
+                                    if (substr($key, 0, 9 ) === 'metadata_') {
3085
+                                        continue;
3086
+                                    }
3087
+                                ?>
3088 3088
 								if (props.attributes.hasOwnProperty("<?php echo esc_attr( $key );?>")) {
3089 3089
 									if ('<?php echo esc_attr( $key );?>' == 'html') {
3090 3090
 									} else if ('<?php echo esc_attr( $args['type'] );?>' == 'image_xy') {
@@ -3095,10 +3095,10 @@  discard block
 block discarded – undo
3095 3095
 									}
3096 3096
 								}
3097 3097
 								<?php
3098
-								}
3099
-								}
3098
+                                }
3099
+                                }
3100 3100
 
3101
-								?>
3101
+                                ?>
3102 3102
 								shortcode += "]";
3103 3103
 
3104 3104
 								if(shortcode){
@@ -3110,17 +3110,17 @@  discard block
 block discarded – undo
3110 3110
 
3111 3111
 
3112 3112
 									<?php
3113
-									if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
3114
-										echo "props.setAttributes({sd_shortcode_close: '[/".esc_attr( $this->options['base_id'] )."]'});";
3115
-									}
3116
-									?>
3113
+                                    if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
3114
+                                        echo "props.setAttributes({sd_shortcode_close: '[/".esc_attr( $this->options['base_id'] )."]'});";
3115
+                                    }
3116
+                                    ?>
3117 3117
 								}
3118 3118
 
3119 3119
 
3120 3120
 							///////////////////////////////////////////////////////////////////////
3121 3121
 							<?php
3122
-							} // end nested block check
3123
-							?>
3122
+                            } // end nested block check
3123
+                            ?>
3124 3124
 
3125 3125
 							return [
3126 3126
 
@@ -3144,10 +3144,10 @@  discard block
 block discarded – undo
3144 3144
 
3145 3145
 									<?php
3146 3146
 
3147
-									if(! empty( $this->arguments )){
3147
+                                    if(! empty( $this->arguments )){
3148 3148
 
3149
-									if ( $show_advanced ) {
3150
-									?>
3149
+                                    if ( $show_advanced ) {
3150
+                                    ?>
3151 3151
 									el('div', {
3152 3152
 											style: {'padding-left': '16px','padding-right': '16px'}
3153 3153
 										},
@@ -3164,119 +3164,119 @@  discard block
 block discarded – undo
3164 3164
 									)
3165 3165
 									,
3166 3166
 									<?php
3167
-									}
3168
-
3169
-									$arguments = $this->group_arguments( $this->arguments );
3170
-									$block_group_tabs = ! empty( $this->options['block_group_tabs'] ) ? $this->group_block_tabs( $this->options['block_group_tabs'], $arguments ) : array();
3171
-
3172
-									// Do we have sections?
3173
-									$has_sections = $arguments == $this->arguments ? false : true;
3174
-
3175
-									if($has_sections){
3176
-									$panel_count = 0;
3177
-									$open_tab = '';
3178
-
3179
-									$open_tab_groups = array();
3180
-									$used_tabs = array();
3181
-
3182
-									foreach ( $arguments as $key => $args ) {
3183
-										$close_tab = false;
3184
-										$close_tabs = false;
3185
-
3186
-										 if ( ! empty( $block_group_tabs ) ) {
3187
-											foreach ( $block_group_tabs as $tab_name => $tab_args ) {
3188
-												if ( in_array( $key, $tab_args['groups'] ) ) {
3189
-													$open_tab_groups[] = $key;
3190
-
3191
-													if ( $open_tab != $tab_name ) {
3192
-														$tab_args['tab']['tabs_open'] = $open_tab == '' ? true : false;
3193
-														$tab_args['tab']['open'] = true;
3194
-
3195
-														$this->block_tab_start( '', $tab_args );
3196
-														$open_tab = $tab_name;
3197
-														$used_tabs[] = $tab_name;
3198
-													}
3199
-
3200
-													if ( $open_tab_groups == $tab_args['groups'] ) {
3201
-														$close_tab = true;
3202
-														$open_tab_groups = array();
3203
-
3204
-														if ( $used_tabs == array_keys( $block_group_tabs ) ) {
3205
-															$close_tabs = true;
3206
-														}
3207
-													}
3208
-												}
3209
-											}
3210
-										}
3211
-										?>
3167
+                                    }
3168
+
3169
+                                    $arguments = $this->group_arguments( $this->arguments );
3170
+                                    $block_group_tabs = ! empty( $this->options['block_group_tabs'] ) ? $this->group_block_tabs( $this->options['block_group_tabs'], $arguments ) : array();
3171
+
3172
+                                    // Do we have sections?
3173
+                                    $has_sections = $arguments == $this->arguments ? false : true;
3174
+
3175
+                                    if($has_sections){
3176
+                                    $panel_count = 0;
3177
+                                    $open_tab = '';
3178
+
3179
+                                    $open_tab_groups = array();
3180
+                                    $used_tabs = array();
3181
+
3182
+                                    foreach ( $arguments as $key => $args ) {
3183
+                                        $close_tab = false;
3184
+                                        $close_tabs = false;
3185
+
3186
+                                            if ( ! empty( $block_group_tabs ) ) {
3187
+                                            foreach ( $block_group_tabs as $tab_name => $tab_args ) {
3188
+                                                if ( in_array( $key, $tab_args['groups'] ) ) {
3189
+                                                    $open_tab_groups[] = $key;
3190
+
3191
+                                                    if ( $open_tab != $tab_name ) {
3192
+                                                        $tab_args['tab']['tabs_open'] = $open_tab == '' ? true : false;
3193
+                                                        $tab_args['tab']['open'] = true;
3194
+
3195
+                                                        $this->block_tab_start( '', $tab_args );
3196
+                                                        $open_tab = $tab_name;
3197
+                                                        $used_tabs[] = $tab_name;
3198
+                                                    }
3199
+
3200
+                                                    if ( $open_tab_groups == $tab_args['groups'] ) {
3201
+                                                        $close_tab = true;
3202
+                                                        $open_tab_groups = array();
3203
+
3204
+                                                        if ( $used_tabs == array_keys( $block_group_tabs ) ) {
3205
+                                                            $close_tabs = true;
3206
+                                                        }
3207
+                                                    }
3208
+                                                }
3209
+                                            }
3210
+                                        }
3211
+                                        ?>
3212 3212
 										el(wp.components.PanelBody, {
3213 3213
 												title: '<?php esc_attr_e( $key ); ?>',
3214 3214
 												initialOpen: <?php if ( $panel_count ) {
3215
-												echo "false";
3216
-											} else {
3217
-												echo "true";
3218
-											}?>
3215
+                                                echo "false";
3216
+                                            } else {
3217
+                                                echo "true";
3218
+                                            }?>
3219 3219
 											},
3220 3220
 											<?php
3221
-											foreach ( $args as $k => $a ) {
3222
-												$this->block_tab_start( $k, $a );
3223
-												$this->block_row_start( $k, $a );
3224
-												$this->build_block_arguments( $k, $a );
3225
-												$this->block_row_end( $k, $a );
3226
-												$this->block_tab_end( $k, $a );
3227
-											}
3228
-											?>
3221
+                                            foreach ( $args as $k => $a ) {
3222
+                                                $this->block_tab_start( $k, $a );
3223
+                                                $this->block_row_start( $k, $a );
3224
+                                                $this->build_block_arguments( $k, $a );
3225
+                                                $this->block_row_end( $k, $a );
3226
+                                                $this->block_tab_end( $k, $a );
3227
+                                            }
3228
+                                            ?>
3229 3229
 										),
3230 3230
 										<?php
3231
-										$panel_count ++;
3231
+                                        $panel_count ++;
3232 3232
 
3233
-										if($close_tab || $close_tabs){
3234
-											$tab_args = array(
3235
-												'tab'	=> array(
3236
-													'tabs_close' => $close_tabs,
3237
-												'close' => true,
3238
-												)
3233
+                                        if($close_tab || $close_tabs){
3234
+                                            $tab_args = array(
3235
+                                                'tab'	=> array(
3236
+                                                    'tabs_close' => $close_tabs,
3237
+                                                'close' => true,
3238
+                                                )
3239 3239
 
3240
-											);
3241
-											$this->block_tab_end( '', $tab_args );
3240
+                                            );
3241
+                                            $this->block_tab_end( '', $tab_args );
3242 3242
 //											echo '###close'; print_r($tab_args);
3243
-											$panel_count = 0;
3244
-										}
3243
+                                            $panel_count = 0;
3244
+                                        }
3245 3245
 //
3246 3246
 
3247
-									}
3248
-									}else {
3249
-									?>
3247
+                                    }
3248
+                                    }else {
3249
+                                    ?>
3250 3250
 									el(wp.components.PanelBody, {
3251 3251
 											title: '<?php esc_attr_e( "Settings", 'ayecode-connect' ); ?>',
3252 3252
 											initialOpen: true
3253 3253
 										},
3254 3254
 										<?php
3255
-										foreach ( $this->arguments as $key => $args ) {
3256
-											$this->block_row_start( $key, $args );
3257
-											$this->build_block_arguments( $key, $args );
3258
-											$this->block_row_end( $key, $args );
3259
-										}
3260
-										?>
3255
+                                        foreach ( $this->arguments as $key => $args ) {
3256
+                                            $this->block_row_start( $key, $args );
3257
+                                            $this->build_block_arguments( $key, $args );
3258
+                                            $this->block_row_end( $key, $args );
3259
+                                        }
3260
+                                        ?>
3261 3261
 									),
3262 3262
 									<?php
3263
-									}
3263
+                                    }
3264 3264
 
3265
-									}
3266
-									?>
3265
+                                    }
3266
+                                    ?>
3267 3267
 
3268 3268
 								),
3269 3269
 
3270 3270
 								<?php
3271
-								// If the user sets block-output array then build it
3272
-								if ( ! empty( $this->options['block-output'] ) ) {
3273
-								$this->block_element( $this->options['block-output'] );
3274
-							}elseif(!empty($this->options['block-edit-return'])){
3275
-								   echo $this->options['block-edit-return'];
3276
-							}else{
3277
-								// if no block-output is set then we try and get the shortcode html output via ajax.
3278
-								$block_edit_wrap_tag = !empty($this->options['block_edit_wrap_tag']) ? esc_attr($this->options['block_edit_wrap_tag']) : 'div';
3279
-								?>
3271
+                                // If the user sets block-output array then build it
3272
+                                if ( ! empty( $this->options['block-output'] ) ) {
3273
+                                $this->block_element( $this->options['block-output'] );
3274
+                            }elseif(!empty($this->options['block-edit-return'])){
3275
+                                    echo $this->options['block-edit-return'];
3276
+                            }else{
3277
+                                // if no block-output is set then we try and get the shortcode html output via ajax.
3278
+                                $block_edit_wrap_tag = !empty($this->options['block_edit_wrap_tag']) ? esc_attr($this->options['block_edit_wrap_tag']) : 'div';
3279
+                                ?>
3280 3280
 								el('<?php echo esc_attr($block_edit_wrap_tag); ?>', wp.blockEditor.useBlockProps({
3281 3281
 									dangerouslySetInnerHTML: {__html: onChangeContent()},
3282 3282
 									className: props.className,
@@ -3284,13 +3284,13 @@  discard block
 block discarded – undo
3284 3284
 									style: {'minHeight': '30px'}
3285 3285
 								}))
3286 3286
 								<?php
3287
-								}
3288
-								?>
3287
+                                }
3288
+                                ?>
3289 3289
 							]; // end return
3290 3290
 
3291 3291
 							<?php
3292
-							} // end block-edit-raw else
3293
-							?>
3292
+                            } // end block-edit-raw else
3293
+                            ?>
3294 3294
 						},
3295 3295
 
3296 3296
 						// The "save" property must be specified and must be a valid function.
@@ -3304,16 +3304,16 @@  discard block
 block discarded – undo
3304 3304
 							$html = '';
3305 3305
 							<?php
3306 3306
 
3307
-							if(! empty( $this->arguments )){
3307
+                            if(! empty( $this->arguments )){
3308 3308
 
3309
-							foreach($this->arguments as $key => $args){
3310
-							   // if($args['type']=='tabs'){continue;}
3309
+                            foreach($this->arguments as $key => $args){
3310
+                                // if($args['type']=='tabs'){continue;}
3311 3311
 
3312
-							   // don't add metadata arguments
3313
-							   if (substr($key, 0, 9 ) === 'metadata_') {
3314
-								   continue;
3315
-							   }
3316
-							?>
3312
+                                // don't add metadata arguments
3313
+                                if (substr($key, 0, 9 ) === 'metadata_') {
3314
+                                    continue;
3315
+                                }
3316
+                            ?>
3317 3317
 							if (attr.hasOwnProperty("<?php echo esc_attr( $key );?>")) {
3318 3318
 								if ('<?php echo esc_attr( $key );?>' == 'html') {
3319 3319
 									$html = attr.<?php echo esc_attr( $key );?>;
@@ -3324,10 +3324,10 @@  discard block
 block discarded – undo
3324 3324
 								}
3325 3325
 							}
3326 3326
 							<?php
3327
-							}
3328
-							}
3327
+                            }
3328
+                            }
3329 3329
 
3330
-							?>
3330
+                            ?>
3331 3331
 							content += "]";
3332 3332
 							 content = '';
3333 3333
 
@@ -3337,7 +3337,7 @@  discard block
 block discarded – undo
3337 3337
 //                                $html = 'el( InnerBlocks.Content )';
3338 3338
 //                                <?php
3339 3339
 //                            }
3340
-							?>
3340
+                            ?>
3341 3341
 							// if has html element
3342 3342
 							if ($html) {
3343 3343
 								//content += $html + "[/<?php echo $this->options['base_id'];?>]";
@@ -3370,12 +3370,12 @@  discard block
 block discarded – undo
3370 3370
 //                                <x?php
3371 3371
 //							}else
3372 3372
 
3373
-							if(!empty($this->options['block-output'])){
3373
+                            if(!empty($this->options['block-output'])){
3374 3374
 //                               echo "return";
3375 3375
 //                               $this->block_element( $this->options['block-output'], true );
3376 3376
 //                               echo ";";
3377 3377
 
3378
-							   ?>
3378
+                                ?>
3379 3379
 							  return el(
3380 3380
 								   '',
3381 3381
 								   {},
@@ -3385,10 +3385,10 @@  discard block
 block discarded – undo
3385 3385
 							   );
3386 3386
 								<?php
3387 3387
 
3388
-							}elseif(!empty($this->options['block-save-return'])){
3389
-								   echo 'return ' . $this->options['block-save-return'];
3390
-							}elseif(!empty($this->options['nested-block'])){
3391
-								?>
3388
+                            }elseif(!empty($this->options['block-save-return'])){
3389
+                                    echo 'return ' . $this->options['block-save-return'];
3390
+                            }elseif(!empty($this->options['nested-block'])){
3391
+                                ?>
3392 3392
 							  return el(
3393 3393
 								   '',
3394 3394
 								   {},
@@ -3397,22 +3397,22 @@  discard block
 block discarded – undo
3397 3397
 								 //  el('', {dangerouslySetInnerHTML: {__html: "[/<?php echo $this->options['base_id'];?>]"}})
3398 3398
 							   );
3399 3399
 								<?php
3400
-							}elseif(!empty( $this->options['block-save-return'] ) ){
3401
-								echo "return ". $this->options['block-edit-return'].";";
3402
-							}elseif(isset( $this->options['block-wrap'] ) && $this->options['block-wrap'] == ''){
3403
-							?>
3400
+                            }elseif(!empty( $this->options['block-save-return'] ) ){
3401
+                                echo "return ". $this->options['block-edit-return'].";";
3402
+                            }elseif(isset( $this->options['block-wrap'] ) && $this->options['block-wrap'] == ''){
3403
+                            ?>
3404 3404
 							return content;
3405 3405
 							<?php
3406
-							}else{
3407
-							?>
3406
+                            }else{
3407
+                            ?>
3408 3408
 							var block_wrap = 'div';
3409 3409
 							if (attr.hasOwnProperty("block_wrap")) {
3410 3410
 								block_wrap = attr.block_wrap;
3411 3411
 							}
3412 3412
 							return el(block_wrap, wp.blockEditor.useBlockProps.save( {dangerouslySetInnerHTML: {__html: content}, className: align} ));
3413 3413
 							<?php
3414
-							}
3415
-							?>
3414
+                            }
3415
+                            ?>
3416 3416
 
3417 3417
 
3418 3418
 						}
@@ -3426,43 +3426,43 @@  discard block
 block discarded – undo
3426 3426
 				});
3427 3427
 			</script>
3428 3428
 			<?php
3429
-			$output = ob_get_clean();
3429
+            $output = ob_get_clean();
3430 3430
 
3431
-			/*
3431
+            /*
3432 3432
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
3433 3433
 			 */
3434 3434
 
3435
-			return str_replace( array(
3436
-				'<script>',
3437
-				'</script>'
3438
-			), '', $output );
3439
-		}
3435
+            return str_replace( array(
3436
+                '<script>',
3437
+                '</script>'
3438
+            ), '', $output );
3439
+        }
3440 3440
 
3441 3441
 
3442 3442
 
3443
-		public function block_row_start($key, $args){
3443
+        public function block_row_start($key, $args){
3444 3444
 
3445
-			// check for row
3446
-			if(!empty($args['row'])){
3445
+            // check for row
3446
+            if(!empty($args['row'])){
3447 3447
 
3448
-				if(!empty($args['row']['open'])){
3448
+                if(!empty($args['row']['open'])){
3449 3449
 
3450
-				// element require
3451
-				$element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3452
-				$device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3453
-				$device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3454
-				$device_type_icon = '';
3455
-				if($device_type=='Desktop'){
3456
-					$device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3457
-				}elseif($device_type=='Tablet'){
3458
-					$device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3459
-				}elseif($device_type=='Mobile'){
3460
-					$device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3461
-				}
3462
-				echo $element_require;
3463
-				echo $device_type_require;
3450
+                // element require
3451
+                $element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3452
+                $device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3453
+                $device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3454
+                $device_type_icon = '';
3455
+                if($device_type=='Desktop'){
3456
+                    $device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3457
+                }elseif($device_type=='Tablet'){
3458
+                    $device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3459
+                }elseif($device_type=='Mobile'){
3460
+                    $device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3461
+                }
3462
+                echo $element_require;
3463
+                echo $device_type_require;
3464 3464
 
3465
-					if(false){?><script><?php }?>
3465
+                    if(false){?><script><?php }?>
3466 3466
 						el('div', {
3467 3467
 								className: 'bsui components-base-control',
3468 3468
 							},
@@ -3475,8 +3475,8 @@  discard block
 block discarded – undo
3475 3475
 								<?php if($device_type_icon){ ?>
3476 3476
 									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)"}})
3477 3477
 								<?php
3478
-								}
3479
-								?>
3478
+                                }
3479
+                                ?>
3480 3480
 
3481 3481
 
3482 3482
 							),
@@ -3500,51 +3500,51 @@  discard block
 block discarded – undo
3500 3500
 									},
3501 3501
 
3502 3502
 					<?php
3503
-					if(false){?></script><?php }
3504
-				}elseif(!empty($args['row']['close'])){
3505
-					if(false){?><script><?php }?>
3503
+                    if(false){?></script><?php }
3504
+                }elseif(!empty($args['row']['close'])){
3505
+                    if(false){?><script><?php }?>
3506 3506
 						el(
3507 3507
 							'div',
3508 3508
 							{
3509 3509
 								className: 'col pl-0 ps-0',
3510 3510
 							},
3511 3511
 					<?php
3512
-					if(false){?></script><?php }
3513
-				}else{
3514
-					if(false){?><script><?php }?>
3512
+                    if(false){?></script><?php }
3513
+                }else{
3514
+                    if(false){?><script><?php }?>
3515 3515
 						el(
3516 3516
 							'div',
3517 3517
 							{
3518 3518
 								className: 'col pl-0 ps-0 pr-2 pe-2',
3519 3519
 							},
3520 3520
 					<?php
3521
-					if(false){?></script><?php }
3522
-				}
3521
+                    if(false){?></script><?php }
3522
+                }
3523 3523
 
3524
-			}
3524
+            }
3525 3525
 
3526
-		}
3526
+        }
3527 3527
 
3528
-		public function block_row_end($key, $args){
3528
+        public function block_row_end($key, $args){
3529 3529
 
3530
-			if(!empty($args['row'])){
3531
-				// maybe close
3532
-				if(!empty($args['row']['close'])){
3533
-					echo "))";
3534
-				}
3530
+            if(!empty($args['row'])){
3531
+                // maybe close
3532
+                if(!empty($args['row']['close'])){
3533
+                    echo "))";
3534
+                }
3535 3535
 
3536
-				echo "),";
3537
-			}
3538
-		}
3536
+                echo "),";
3537
+            }
3538
+        }
3539 3539
 
3540
-		public function block_tab_start($key, $args){
3540
+        public function block_tab_start($key, $args){
3541 3541
 
3542
-			// check for row
3543
-			if(!empty($args['tab'])){
3542
+            // check for row
3543
+            if(!empty($args['tab'])){
3544 3544
 
3545
-				if(!empty($args['tab']['tabs_open'])){
3545
+                if(!empty($args['tab']['tabs_open'])){
3546 3546
 
3547
-					if(false){?><script><?php }?>
3547
+                    if(false){?><script><?php }?>
3548 3548
 
3549 3549
 el('div',{className: 'bsui'},
3550 3550
 
@@ -3557,12 +3557,12 @@  discard block
 block discarded – undo
3557 3557
 										tabs: [
3558 3558
 
3559 3559
 					<?php
3560
-					if(false){?></script><?php }
3561
-				}
3560
+                    if(false){?></script><?php }
3561
+                }
3562 3562
 
3563
-				if(!empty($args['tab']['open'])){
3563
+                if(!empty($args['tab']['open'])){
3564 3564
 
3565
-					if(false){?><script><?php }?>
3565
+                    if(false){?><script><?php }?>
3566 3566
 							{
3567 3567
 												name: '<?php echo addslashes( esc_attr( $args['tab']['key']) ); ?>',
3568 3568
 												title: el('div', {dangerouslySetInnerHTML: {__html: '<?php echo addslashes( esc_attr( $args['tab']['title']) ); ?>'}}),
@@ -3571,93 +3571,93 @@  discard block
 block discarded – undo
3571 3571
 									className: 'components-base-control__help mb-0',
3572 3572
 									dangerouslySetInnerHTML: {__html:'<?php echo addslashes( $args['tab']['desc'] ); ?>'}
3573 3573
 								}),<?php }
3574
-					if(false){?></script><?php }
3575
-				}
3574
+                    if(false){?></script><?php }
3575
+                }
3576 3576
 
3577
-			}
3577
+            }
3578 3578
 
3579
-		}
3579
+        }
3580 3580
 
3581
-		public function block_tab_end($key, $args){
3581
+        public function block_tab_end($key, $args){
3582 3582
 
3583
-			if(!empty($args['tab'])){
3584
-				// maybe close
3585
-				if(!empty($args['tab']['close'])){
3586
-					echo ")}, /* tab close */";
3587
-				}
3583
+            if(!empty($args['tab'])){
3584
+                // maybe close
3585
+                if(!empty($args['tab']['close'])){
3586
+                    echo ")}, /* tab close */";
3587
+                }
3588 3588
 
3589
-				if(!empty($args['tab']['tabs_close'])){
3590
-					if(false){?><script><?php }?>
3589
+                if(!empty($args['tab']['tabs_close'])){
3590
+                    if(false){?><script><?php }?>
3591 3591
 						]}, ( tab ) => {
3592 3592
 								return tab.content;
3593 3593
 							}
3594 3594
 						)), /* tabs close */
3595 3595
 					<?php if(false){ ?></script><?php }
3596
-				}
3597
-			}
3598
-		}
3596
+                }
3597
+            }
3598
+        }
3599 3599
 
3600
-		public function build_block_arguments( $key, $args ) {
3601
-			$custom_attributes = ! empty( $args['custom_attributes'] ) ? $this->array_to_attributes( $args['custom_attributes'] ) : '';
3602
-			$options           = '';
3603
-			$extra             = '';
3604
-			$require           = '';
3605
-			$inside_elements   = '';
3606
-			$after_elements	   = '';
3607
-
3608
-			// `content` is a protected and special argument
3609
-			if ( $key == 'content' ) {
3610
-				return;
3611
-			}
3600
+        public function build_block_arguments( $key, $args ) {
3601
+            $custom_attributes = ! empty( $args['custom_attributes'] ) ? $this->array_to_attributes( $args['custom_attributes'] ) : '';
3602
+            $options           = '';
3603
+            $extra             = '';
3604
+            $require           = '';
3605
+            $inside_elements   = '';
3606
+            $after_elements	   = '';
3607
+
3608
+            // `content` is a protected and special argument
3609
+            if ( $key == 'content' ) {
3610
+                return;
3611
+            }
3612 3612
 
3613
-			$device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3614
-			$device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3615
-			$device_type_icon = '';
3616
-			if($device_type=='Desktop'){
3617
-				$device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3618
-			}elseif($device_type=='Tablet'){
3619
-				$device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3620
-			}elseif($device_type=='Mobile'){
3621
-				$device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3622
-			}
3613
+            $device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3614
+            $device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3615
+            $device_type_icon = '';
3616
+            if($device_type=='Desktop'){
3617
+                $device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3618
+            }elseif($device_type=='Tablet'){
3619
+                $device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3620
+            }elseif($device_type=='Mobile'){
3621
+                $device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3622
+            }
3623 3623
 
3624
-			// icon
3625
-			$icon = '';
3626
-			if( !empty( $args['icon'] ) ){
3627
-				$icon .= "el('div', {";
3628
-									$icon .= "dangerouslySetInnerHTML: {__html: '".self::get_widget_icon( esc_attr($args['icon']))."'},";
3629
-									$icon .= "className: 'text-center',";
3630
-									$icon .= "title: '".addslashes( $args['title'] )."',";
3631
-								$icon .= "}),";
3632
-
3633
-				// blank title as its added to the icon.
3634
-				$args['title'] = '';
3635
-			}
3624
+            // icon
3625
+            $icon = '';
3626
+            if( !empty( $args['icon'] ) ){
3627
+                $icon .= "el('div', {";
3628
+                                    $icon .= "dangerouslySetInnerHTML: {__html: '".self::get_widget_icon( esc_attr($args['icon']))."'},";
3629
+                                    $icon .= "className: 'text-center',";
3630
+                                    $icon .= "title: '".addslashes( $args['title'] )."',";
3631
+                                $icon .= "}),";
3632
+
3633
+                // blank title as its added to the icon.
3634
+                $args['title'] = '';
3635
+            }
3636 3636
 
3637
-			// require advanced
3638
-			$require_advanced = ! empty( $args['advanced'] ) ? "props.attributes.show_advanced && " : "";
3637
+            // require advanced
3638
+            $require_advanced = ! empty( $args['advanced'] ) ? "props.attributes.show_advanced && " : "";
3639 3639
 
3640
-			// element require
3641
-			$element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3640
+            // element require
3641
+            $element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3642 3642
 
3643 3643
 
3644
-			$onchange  = "props.setAttributes({ $key: $key } )";
3645
-			$onchangecomplete  = "";
3646
-			$value     = "props.attributes.$key";
3647
-			$text_type = array( 'text', 'password', 'number', 'email', 'tel', 'url', 'colorx','range' );
3648
-			if ( in_array( $args['type'], $text_type ) ) {
3649
-				$type = 'TextControl';
3650
-				// Save numbers as numbers and not strings
3651
-				if ( $args['type'] == 'number' ) {
3652
-					$onchange = "props.setAttributes({ $key: $key ? Number($key) : '' } )";
3653
-				}
3644
+            $onchange  = "props.setAttributes({ $key: $key } )";
3645
+            $onchangecomplete  = "";
3646
+            $value     = "props.attributes.$key";
3647
+            $text_type = array( 'text', 'password', 'number', 'email', 'tel', 'url', 'colorx','range' );
3648
+            if ( in_array( $args['type'], $text_type ) ) {
3649
+                $type = 'TextControl';
3650
+                // Save numbers as numbers and not strings
3651
+                if ( $args['type'] == 'number' ) {
3652
+                    $onchange = "props.setAttributes({ $key: $key ? Number($key) : '' } )";
3653
+                }
3654 3654
 
3655
-				if (substr($key, 0, 9 ) === 'metadata_') {
3656
-					$real_key = str_replace('metadata_','', $key );
3657
-					$onchange = "props.setAttributes({ metadata: { $real_key: $key } } )";
3658
-					$value     = "props.attributes.metadata && props.attributes.metadata.$real_key ? props.attributes.metadata.$real_key : ''";
3659
-				}
3660
-			}
3655
+                if (substr($key, 0, 9 ) === 'metadata_') {
3656
+                    $real_key = str_replace('metadata_','', $key );
3657
+                    $onchange = "props.setAttributes({ metadata: { $real_key: $key } } )";
3658
+                    $value     = "props.attributes.metadata && props.attributes.metadata.$real_key ? props.attributes.metadata.$real_key : ''";
3659
+                }
3660
+            }
3661 3661
 //			else if ( $args['type'] == 'popup' ) {
3662 3662
 //				$type = 'TextControl';
3663 3663
 //				$args['type'] == 'text';
@@ -3675,21 +3675,21 @@  discard block
 block discarded – undo
3675 3675
 //
3676 3676
 //				$value     = "props.attributes.$key ? props.attributes.$key : ''";
3677 3677
 //			}
3678
-			else if ( $args['type'] == 'styleid' ) {
3679
-				$type = 'TextControl';
3680
-				$args['type'] == 'text';
3681
-				// Save numbers as numbers and not strings
3682
-				$value     = "props.attributes.$key ? props.attributes.$key : ''";
3683
-			}else if ( $args['type'] == 'notice' ) {
3684
-
3685
-				$notice_message = !empty($args['desc']) ? addslashes($args['desc']) : '';
3686
-				$notice_status = !empty($args['status']) ? esc_attr($args['status']) : 'info';
3687
-
3688
-				$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'}}))),";
3689
-				echo $notice_message ? $element_require . $notice : '';
3690
-				return;
3691
-			}
3692
-			/*
3678
+            else if ( $args['type'] == 'styleid' ) {
3679
+                $type = 'TextControl';
3680
+                $args['type'] == 'text';
3681
+                // Save numbers as numbers and not strings
3682
+                $value     = "props.attributes.$key ? props.attributes.$key : ''";
3683
+            }else if ( $args['type'] == 'notice' ) {
3684
+
3685
+                $notice_message = !empty($args['desc']) ? addslashes($args['desc']) : '';
3686
+                $notice_status = !empty($args['status']) ? esc_attr($args['status']) : 'info';
3687
+
3688
+                $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'}}))),";
3689
+                echo $notice_message ? $element_require . $notice : '';
3690
+                return;
3691
+            }
3692
+            /*
3693 3693
 			 * https://www.wptricks.com/question/set-current-tab-on-a-gutenberg-tabpanel-component-from-outside-that-component/ es5 layout
3694 3694
 						elseif($args['type']=='tabs'){
3695 3695
 							?>
@@ -3742,22 +3742,22 @@  discard block
 block discarded – undo
3742 3742
 							return;
3743 3743
 						}
3744 3744
 */
3745
-			elseif ( $args['type'] == 'color' ) {
3746
-				$type = 'ColorPicker';
3747
-				$onchange = "";
3748
-				$extra = "color: $value,";
3749
-				if(!empty($args['disable_alpha'])){
3750
-					$extra .= "disableAlpha: true,";
3751
-				}
3752
-				$onchangecomplete = "onChangeComplete: function($key) {
3745
+            elseif ( $args['type'] == 'color' ) {
3746
+                $type = 'ColorPicker';
3747
+                $onchange = "";
3748
+                $extra = "color: $value,";
3749
+                if(!empty($args['disable_alpha'])){
3750
+                    $extra .= "disableAlpha: true,";
3751
+                }
3752
+                $onchangecomplete = "onChangeComplete: function($key) {
3753 3753
 				value =  $key.rgb.a && $key.rgb.a < 1 ? \"rgba(\"+$key.rgb.r+\",\"+$key.rgb.g+\",\"+$key.rgb.b+\",\"+$key.rgb.a+\")\" : $key.hex;
3754 3754
 						props.setAttributes({
3755 3755
 							$key: value
3756 3756
 						});
3757 3757
 					},";
3758
-			}elseif ( $args['type'] == 'gradient' ) {
3759
-				$type = 'GradientPicker';
3760
-				$extra .= "gradients: [{
3758
+            }elseif ( $args['type'] == 'gradient' ) {
3759
+                $type = 'GradientPicker';
3760
+                $extra .= "gradients: [{
3761 3761
 			name: 'Vivid cyan blue to vivid purple',
3762 3762
 			gradient:
3763 3763
 				'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
@@ -3794,10 +3794,10 @@  discard block
 block discarded – undo
3794 3794
 			slug: 'cool-to-warm-spectrum',
3795 3795
 		}],";
3796 3796
 
3797
-			}elseif ( $args['type'] == 'image' ) {
3797
+            }elseif ( $args['type'] == 'image' ) {
3798 3798
 //                print_r($args);
3799 3799
 
3800
-				$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,{
3800
+                $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,{
3801 3801
 							url:  props.attributes.{$key}_use_featured === true ? 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxzdmcgYmFzZVByb2ZpbGU9InRpbnkiIGhlaWdodD0iNDAwIiB2ZXJzaW9uPSIxLjIiIHdpZHRoPSI0MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6ZXY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLWV2ZW50cyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzIC8+PHJlY3QgZmlsbD0iI2QzZDNkMyIgaGVpZ2h0PSI0MDAiIHdpZHRoPSI0MDAiIHg9IjAiIHk9IjAiIC8+PGxpbmUgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxMCIgeDE9IjAiIHgyPSI0MDAiIHkxPSIwIiB5Mj0iNDAwIiAvPjxsaW5lIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMTAiIHgxPSIwIiB4Mj0iNDAwIiB5MT0iNDAwIiB5Mj0iMCIgLz48cmVjdCBmaWxsPSIjZDNkM2QzIiBoZWlnaHQ9IjUwIiB3aWR0aD0iMjE4LjAiIHg9IjkxLjAiIHk9IjE3NS4wIiAvPjx0ZXh0IGZpbGw9IndoaXRlIiBmb250LXNpemU9IjMwIiBmb250LXdlaWdodD0iYm9sZCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iMjAwLjAiIHk9IjIwNy41Ij5QTEFDRUhPTERFUjwvdGV4dD48L3N2Zz4='  : props.attributes.$key,
3802 3802
 							value: props.attributes.{$key}_xy.x !== undefined && props.attributes.{$key}_xy.x >= 0 ? props.attributes.{$key}_xy  : {x: 0.5,y: 0.5,},
3803 3803
 //                            value: props.attributes.{$key}_xy,
@@ -3818,16 +3818,16 @@  discard block
 block discarded – undo
3818 3818
 						}), ";
3819 3819
 
3820 3820
 
3821
-				$value = '""';
3822
-				$type = 'MediaUpload';
3823
-				$extra .= "onSelect: function(media){
3821
+                $value = '""';
3822
+                $type = 'MediaUpload';
3823
+                $extra .= "onSelect: function(media){
3824 3824
 					  return props.setAttributes({
3825 3825
 						  $key: media.url,
3826 3826
 						  {$key}_id: media.id
3827 3827
 						});
3828 3828
 					  },";
3829
-				   $extra .= "type: 'image',";
3830
-				   $extra .= "render: function (obj) {
3829
+                    $extra .= "type: 'image',";
3830
+                    $extra .= "render: function (obj) {
3831 3831
 						return el( 'div',{},
3832 3832
 						( !props.attributes.$key && !props.attributes.{$key}_use_featured ) && el( wp.components.Button, {
3833 3833
 						  className: 'components-button components-circular-option-picker__clear is-primary is-smallx',
@@ -3853,11 +3853,11 @@  discard block
 block discarded – undo
3853 3853
 
3854 3854
 
3855 3855
 					  }";
3856
-				$onchange = "";
3856
+                $onchange = "";
3857 3857
 
3858
-				//$inside_elements = ",el('div',{},'file upload')";
3859
-			} else if ( $args['type'] == 'images' ) {
3860
-				$img_preview = "props.attributes.$key && (function() {
3858
+                //$inside_elements = ",el('div',{},'file upload')";
3859
+            } else if ( $args['type'] == 'images' ) {
3860
+                $img_preview = "props.attributes.$key && (function() {
3861 3861
 	let uploads = JSON.parse('['+props.attributes.$key+']');
3862 3862
 	let images = [];
3863 3863
 	uploads.map((upload, index) => (
@@ -3884,9 +3884,9 @@  discard block
 block discarded – undo
3884 3884
 })(),";
3885 3885
 
3886 3886
 
3887
-				$value = '""';
3888
-				$type = 'MediaUpload';
3889
-				$extra .= "onSelect: function(media){
3887
+                $value = '""';
3888
+                $type = 'MediaUpload';
3889
+                $extra .= "onSelect: function(media){
3890 3890
 	let slim_images = props.attributes.$key ? JSON.parse('['+props.attributes.$key+']') : [];
3891 3891
 	if(media.length){
3892 3892
 		for (var i=0; i < media.length; i++) {
@@ -3899,9 +3899,9 @@  discard block
 block discarded – undo
3899 3899
 	}
3900 3900
 	return props.setAttributes({ $key: slimImagesV});
3901 3901
 },";
3902
-				$extra .= "type: 'image',";
3903
-				$extra .= "multiple: true,";
3904
-				$extra .= "render: function (obj) {
3902
+                $extra .= "type: 'image',";
3903
+                $extra .= "multiple: true,";
3904
+                $extra .= "render: function (obj) {
3905 3905
 	/* Init the sort */
3906 3906
 	enableDragSort('sd-sortable');
3907 3907
 	return el( 'div',{},
@@ -3928,40 +3928,40 @@  discard block
 block discarded – undo
3928 3928
 		)
3929 3929
 	)
3930 3930
 }";
3931
-				$onchange = "";
3931
+                $onchange = "";
3932 3932
 
3933
-				//$inside_elements = ",el('div',{},'file upload')";
3934
-			}
3935
-			elseif ( $args['type'] == 'checkbox' ) {
3936
-				$type = 'CheckboxControl';
3937
-				$extra .= "checked: props.attributes.$key,";
3938
-				$onchange = "props.setAttributes({ $key: ! props.attributes.$key } )";
3939
-			} elseif ( $args['type'] == 'textarea' ) {
3940
-				$type = 'TextareaControl';
3941
-
3942
-			} elseif ( $args['type'] == 'select' || $args['type'] == 'multiselect' ) {
3943
-				$type = 'SelectControl';
3944
-
3945
-				if($args['name'] == 'category' && !empty($args['post_type_linked'])){
3946
-					$options .= "options: taxonomies_".str_replace("-","_", $this->id).",";
3947
-				}elseif($args['name'] == 'sort_by' && !empty($args['post_type_linked'])){
3948
-					$options .= "options: sort_by_".str_replace("-","_", $this->id).",";
3949
-				}else {
3950
-
3951
-					if ( ! empty( $args['options'] ) ) {
3952
-						$options .= "options: [";
3953
-						foreach ( $args['options'] as $option_val => $option_label ) {
3954
-							$options .= "{ value: '" . esc_attr( $option_val ) . "', label: '" . esc_js( addslashes( $option_label ) ) . "' },";
3955
-						}
3956
-						$options .= "],";
3957
-					}
3958
-				}
3959
-				if ( isset( $args['multiple'] ) && $args['multiple'] ) { //@todo multiselect does not work at the moment: https://github.com/WordPress/gutenberg/issues/5550
3960
-					$extra .= ' multiple:true,style:{height:"auto",paddingRight:"8px","overflow-y":"auto"}, ';
3961
-				}
3933
+                //$inside_elements = ",el('div',{},'file upload')";
3934
+            }
3935
+            elseif ( $args['type'] == 'checkbox' ) {
3936
+                $type = 'CheckboxControl';
3937
+                $extra .= "checked: props.attributes.$key,";
3938
+                $onchange = "props.setAttributes({ $key: ! props.attributes.$key } )";
3939
+            } elseif ( $args['type'] == 'textarea' ) {
3940
+                $type = 'TextareaControl';
3941
+
3942
+            } elseif ( $args['type'] == 'select' || $args['type'] == 'multiselect' ) {
3943
+                $type = 'SelectControl';
3944
+
3945
+                if($args['name'] == 'category' && !empty($args['post_type_linked'])){
3946
+                    $options .= "options: taxonomies_".str_replace("-","_", $this->id).",";
3947
+                }elseif($args['name'] == 'sort_by' && !empty($args['post_type_linked'])){
3948
+                    $options .= "options: sort_by_".str_replace("-","_", $this->id).",";
3949
+                }else {
3950
+
3951
+                    if ( ! empty( $args['options'] ) ) {
3952
+                        $options .= "options: [";
3953
+                        foreach ( $args['options'] as $option_val => $option_label ) {
3954
+                            $options .= "{ value: '" . esc_attr( $option_val ) . "', label: '" . esc_js( addslashes( $option_label ) ) . "' },";
3955
+                        }
3956
+                        $options .= "],";
3957
+                    }
3958
+                }
3959
+                if ( isset( $args['multiple'] ) && $args['multiple'] ) { //@todo multiselect does not work at the moment: https://github.com/WordPress/gutenberg/issues/5550
3960
+                    $extra .= ' multiple:true,style:{height:"auto",paddingRight:"8px","overflow-y":"auto"}, ';
3961
+                }
3962 3962
 
3963
-				if($args['type'] == 'multiselect' ||  ( isset( $args['multiple'] ) && $args['multiple'] ) ){
3964
-					$after_elements	 .= "props.attributes.$key && el( wp.components.Button, {
3963
+                if($args['type'] == 'multiselect' ||  ( isset( $args['multiple'] ) && $args['multiple'] ) ){
3964
+                    $after_elements	 .= "props.attributes.$key && el( wp.components.Button, {
3965 3965
 									  className: 'components-button components-circular-option-picker__clear is-secondary is-small',
3966 3966
 									  style: {margin:'-8px 0 8px 0',display: 'block'},
3967 3967
 									  onClick: function(){
@@ -3972,8 +3972,8 @@  discard block
 block discarded – undo
3972 3972
 									},
3973 3973
 									'Clear'
3974 3974
 							),";
3975
-				}
3976
-			} elseif ( $args['type'] == 'tagselect' ) {
3975
+                }
3976
+            } elseif ( $args['type'] == 'tagselect' ) {
3977 3977
 //				$type = 'FormTokenField';
3978 3978
 //
3979 3979
 //				if ( ! empty( $args['options'] ) ) {
@@ -4008,20 +4008,20 @@  discard block
 block discarded – undo
4008 4008
 //				$value     = "[]";
4009 4009
 //				$extra .= ' __experimentalExpandOnFocus: true,';
4010 4010
 
4011
-			} else if ( $args['type'] == 'alignment' ) {
4012
-				$type = 'AlignmentToolbar'; // @todo this does not seem to work but cant find a example
4013
-			} else if ( $args['type'] == 'margins' ) {
4014
-
4015
-			} else if ( $args['type'] == 'visibility_conditions' && ( function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() ) ) {
4016
-				$type = 'TextControl';
4017
-				$value = "(props.attributes.$key ? props.attributes.$key : '')";
4018
-				$args['type'] = 'text';
4019
-				$options .= 'disabled:true,';
4020
-				$bsvc_title = esc_attr( addslashes( $args['title'] ) );
4021
-				$bsvc_body = $this->block_visibility_fields( $args );
4022
-				// @TODO reset button
4023
-				$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>';
4024
-				$after_elements .= "el('div', {className: 'components-base-control bs-vc-button-wrap'}, el(wp.components.Button, {
4011
+            } else if ( $args['type'] == 'alignment' ) {
4012
+                $type = 'AlignmentToolbar'; // @todo this does not seem to work but cant find a example
4013
+            } else if ( $args['type'] == 'margins' ) {
4014
+
4015
+            } else if ( $args['type'] == 'visibility_conditions' && ( function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() ) ) {
4016
+                $type = 'TextControl';
4017
+                $value = "(props.attributes.$key ? props.attributes.$key : '')";
4018
+                $args['type'] = 'text';
4019
+                $options .= 'disabled:true,';
4020
+                $bsvc_title = esc_attr( addslashes( $args['title'] ) );
4021
+                $bsvc_body = $this->block_visibility_fields( $args );
4022
+                // @TODO reset button
4023
+                $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>';
4024
+                $after_elements .= "el('div', {className: 'components-base-control bs-vc-button-wrap'}, el(wp.components.Button, {
4025 4025
 						className: 'components-button components-circular-option-picker__clear is-primary is-smallx',
4026 4026
 						onClick: function() {
4027 4027
 							var sValue = props.attributes." . $key . ";
@@ -4047,39 +4047,39 @@  discard block
 block discarded – undo
4047 4047
 					},
4048 4048
 					'" . addslashes( ! empty( $args['button_title'] ) ? $args['button_title'] : $args['title'] ) . "'
4049 4049
 				) ),";
4050
-			} else {
4051
-				return;// if we have not implemented the control then don't break the JS.
4052
-			}
4050
+            } else {
4051
+                return;// if we have not implemented the control then don't break the JS.
4052
+            }
4053 4053
 
4054
-			// color input does not show the labels so we add them
4055
-			if($args['type']=='color'){
4056
-				// add show only if advanced
4057
-				echo $require_advanced;
4058
-				// add setting require if defined
4059
-				echo $element_require;
4060
-				echo "el('div', {style: {'marginBottom': '8px'}}, '".addslashes( $args['title'] )."'),";
4061
-			}
4054
+            // color input does not show the labels so we add them
4055
+            if($args['type']=='color'){
4056
+                // add show only if advanced
4057
+                echo $require_advanced;
4058
+                // add setting require if defined
4059
+                echo $element_require;
4060
+                echo "el('div', {style: {'marginBottom': '8px'}}, '".addslashes( $args['title'] )."'),";
4061
+            }
4062 4062
 
4063
-			// add show only if advanced
4064
-			echo $require_advanced;
4065
-			// add setting require if defined
4066
-			echo $element_require;
4067
-			echo $device_type_require;
4063
+            // add show only if advanced
4064
+            echo $require_advanced;
4065
+            // add setting require if defined
4066
+            echo $element_require;
4067
+            echo $device_type_require;
4068 4068
 
4069
-			// icon
4070
-			echo $icon;
4071
-			?>
4069
+            // icon
4070
+            echo $icon;
4071
+            ?>
4072 4072
 			el( <?php echo $args['type'] == 'image' || $args['type'] == 'images' ? $type  : "wp.components.".$type; ?>, {
4073 4073
 			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
4074
-			} else { ?>'<?php echo addslashes( trim( esc_html( $args['title'] ) ) ); ?>'<?php } ?>,
4074
+            } else { ?>'<?php echo addslashes( trim( esc_html( $args['title'] ) ) ); ?>'<?php } ?>,
4075 4075
 			help: <?php echo ( isset( $args['desc'] ) ? "el('span', {dangerouslySetInnerHTML: {__html: '" . trim( wp_kses_post( addslashes( $args['desc'] ) ) ) . "'}})" : "''" ); ?>,
4076 4076
 			value: <?php echo $value; ?>,
4077 4077
 			<?php if ( $type == 'TextControl' && $args['type'] != 'text' ) {
4078
-				echo "type: '" . addslashes( $args['type'] ) . "',";
4079
-			} ?>
4078
+                echo "type: '" . addslashes( $args['type'] ) . "',";
4079
+            } ?>
4080 4080
 			<?php if ( ! empty( $args['placeholder'] ) ) {
4081
-				echo "placeholder: '" . esc_js( addslashes( trim( esc_html( $args['placeholder'] ) ) ) ) . "',";
4082
-			} ?>
4081
+                echo "placeholder: '" . esc_js( addslashes( trim( esc_html( $args['placeholder'] ) ) ) ) . "',";
4082
+            } ?>
4083 4083
 			<?php echo $options; ?>
4084 4084
 			<?php echo $extra; ?>
4085 4085
 			<?php echo $custom_attributes; ?>
@@ -4091,1366 +4091,1366 @@  discard block
 block discarded – undo
4091 4091
 			<?php } ?>
4092 4092
 		} <?php echo $inside_elements; ?> ),
4093 4093
 			<?php
4094
-			echo $after_elements;
4095
-		}
4094
+            echo $after_elements;
4095
+        }
4096 4096
 
4097
-		/**
4098
-		 * Convert an array of attributes to block string.
4099
-		 *
4100
-		 * @param $custom_attributes
4101
-		 *
4102
-		 * @return string
4103
-		 *@todo there is prob a faster way to do this, also we could add some validation here.
4104
-		 *
4105
-		 */
4106
-		public function array_to_attributes( $custom_attributes, $html = false ) {
4107
-			$attributes = '';
4108
-			if ( ! empty( $custom_attributes ) ) {
4109
-
4110
-				foreach ( $custom_attributes as $key => $val ) {
4111
-					if(is_array($val)){
4112
-						$attributes .= $key.': {'.$this->array_to_attributes( $val, $html ).'},';
4113
-					}else{
4114
-						$attributes .= $html ?  " $key='$val' " : "'$key': '$val',";
4115
-					}
4116
-				}
4097
+        /**
4098
+         * Convert an array of attributes to block string.
4099
+         *
4100
+         * @param $custom_attributes
4101
+         *
4102
+         * @return string
4103
+         *@todo there is prob a faster way to do this, also we could add some validation here.
4104
+         *
4105
+         */
4106
+        public function array_to_attributes( $custom_attributes, $html = false ) {
4107
+            $attributes = '';
4108
+            if ( ! empty( $custom_attributes ) ) {
4109
+
4110
+                foreach ( $custom_attributes as $key => $val ) {
4111
+                    if(is_array($val)){
4112
+                        $attributes .= $key.': {'.$this->array_to_attributes( $val, $html ).'},';
4113
+                    }else{
4114
+                        $attributes .= $html ?  " $key='$val' " : "'$key': '$val',";
4115
+                    }
4116
+                }
4117 4117
 
4118
-			}
4118
+            }
4119 4119
 
4120
-			return $attributes;
4121
-		}
4120
+            return $attributes;
4121
+        }
4122 4122
 
4123 4123
 
4124 4124
 
4125
-		/**
4126
-		 * A self looping function to create the output for JS block elements.
4127
-		 *
4128
-		 * This is what is output in the WP Editor visual view.
4129
-		 *
4130
-		 * @param $args
4131
-		 */
4132
-		public function block_element( $args, $save = false ) {
4125
+        /**
4126
+         * A self looping function to create the output for JS block elements.
4127
+         *
4128
+         * This is what is output in the WP Editor visual view.
4129
+         *
4130
+         * @param $args
4131
+         */
4132
+        public function block_element( $args, $save = false ) {
4133 4133
 
4134 4134
 //            print_r($args);echo '###';exit;
4135 4135
 
4136
-			if ( ! empty( $args ) ) {
4137
-				foreach ( $args as $element => $new_args ) {
4136
+            if ( ! empty( $args ) ) {
4137
+                foreach ( $args as $element => $new_args ) {
4138 4138
 
4139
-					if ( is_array( $new_args ) ) { // its an element
4139
+                    if ( is_array( $new_args ) ) { // its an element
4140 4140
 
4141 4141
 
4142
-						if ( isset( $new_args['element'] ) ) {
4142
+                        if ( isset( $new_args['element'] ) ) {
4143 4143
 
4144
-							if ( isset( $new_args['element_require'] ) ) {
4145
-								echo str_replace( array(
4146
-										"'+",
4147
-										"+'"
4148
-									), '', $this->block_props_replace( $new_args['element_require'] ) ) . " &&  ";
4149
-								unset( $new_args['element_require'] );
4150
-							}
4144
+                            if ( isset( $new_args['element_require'] ) ) {
4145
+                                echo str_replace( array(
4146
+                                        "'+",
4147
+                                        "+'"
4148
+                                    ), '', $this->block_props_replace( $new_args['element_require'] ) ) . " &&  ";
4149
+                                unset( $new_args['element_require'] );
4150
+                            }
4151 4151
 
4152
-							if($new_args['element']=='InnerBlocks'){
4153
-								echo "\n el( InnerBlocks, {";
4154
-							}elseif($new_args['element']=='innerBlocksProps'){
4155
-								$element = isset($new_args['inner_element']) ? esc_attr($new_args['inner_element']) : 'div';
4156
-							  //  echo "\n el( 'section', wp.blockEditor.useInnerBlocksProps( blockProps, {";
4152
+                            if($new_args['element']=='InnerBlocks'){
4153
+                                echo "\n el( InnerBlocks, {";
4154
+                            }elseif($new_args['element']=='innerBlocksProps'){
4155
+                                $element = isset($new_args['inner_element']) ? esc_attr($new_args['inner_element']) : 'div';
4156
+                                //  echo "\n el( 'section', wp.blockEditor.useInnerBlocksProps( blockProps, {";
4157 4157
 //                                echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( ";
4158
-								echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( ";
4159
-								echo $save ? "wp.blockEditor.useBlockProps.save( {" : "wp.blockEditor.useBlockProps( {";
4160
-								echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4161
-
4162
-								echo "} ), {";
4163
-								echo !empty($new_args['innerBlocksProps']) && !$save ? $this->block_element( $new_args['innerBlocksProps'],$save ) : '';
4164
-							//    echo '###';
4165
-
4166
-							  //  echo '###';
4167
-							}elseif($new_args['element']=='BlocksProps'){
4168
-
4169
-								if ( isset($new_args['if_inner_element']) ) {
4170
-									$element = $new_args['if_inner_element'];
4171
-								}else {
4172
-									$element = isset($new_args['inner_element']) ? "'".esc_attr($new_args['inner_element'])."'" : "'div'";
4173
-								}
4174
-
4175
-								unset($new_args['inner_element']);
4176
-								echo $save ? "\n el( $element, wp.blockEditor.useBlockProps.save( {" : "\n el( $element, wp.blockEditor.useBlockProps( {";
4177
-								echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4178
-
4179
-
4180
-							   // echo "} ),";
4181
-
4182
-							}else{
4183
-								echo "\n el( '" . $new_args['element'] . "', {";
4184
-							}
4185
-
4186
-
4187
-							// get the attributes
4188
-							foreach ( $new_args as $new_key => $new_value ) {
4189
-
4190
-
4191
-								if ( $new_key == 'element' || $new_key == 'content'|| $new_key == 'if_content' || $new_key == 'element_require' || $new_key == 'element_repeat' || is_array( $new_value ) ) {
4192
-									// do nothing
4193
-								} else {
4194
-									echo $this->block_element( array( $new_key => $new_value ),$save );
4195
-								}
4196
-							}
4197
-
4198
-							echo $new_args['element']=='BlocksProps' ? '} ),' : "},";// end attributes
4199
-
4200
-							// get the content
4201
-							$first_item = 0;
4202
-							foreach ( $new_args as $new_key => $new_value ) {
4203
-								if ( $new_key === 'content' || $new_key === 'if_content' || is_array( $new_value ) ) {
4204
-
4205
-									if ( $new_key === 'content' ) {
4206
-										echo "'" . $this->block_props_replace( wp_slash( $new_value ) ) . "'";
4207
-									}else if ( $new_key === 'if_content' ) {
4208
-										echo  $this->block_props_replace(  $new_value  );
4209
-									}
4210
-
4211
-									if ( is_array( $new_value ) ) {
4212
-
4213
-										if ( isset( $new_value['element_require'] ) ) {
4214
-											echo str_replace( array(
4215
-													"'+",
4216
-													"+'"
4217
-												), '', $this->block_props_replace( $new_value['element_require'] ) ) . " &&  ";
4218
-											unset( $new_value['element_require'] );
4219
-										}
4220
-
4221
-										if ( isset( $new_value['element_repeat'] ) ) {
4222
-											$x = 1;
4223
-											while ( $x <= absint( $new_value['element_repeat'] ) ) {
4224
-												$this->block_element( array( '' => $new_value ),$save );
4225
-												$x ++;
4226
-											}
4227
-										} else {
4228
-											$this->block_element( array( '' => $new_value ),$save );
4229
-										}
4230
-									}
4231
-									$first_item ++;
4232
-								}
4233
-							}
4234
-
4235
-							if($new_args['element']=='innerBlocksProps' || $new_args['element']=='xBlocksProps'){
4236
-								echo "))";// end content
4237
-							}else{
4238
-								echo ")";// end content
4239
-							}
4240
-
4241
-
4242
-							echo ", \n";
4243
-
4244
-						}
4245
-					} else {
4246
-
4247
-						if ( substr( $element, 0, 3 ) === "if_" ) {
4248
-							$extra = '';
4249
-							if( strpos($new_args, '[%WrapClass%]') !== false ){
4250
-								$new_args = str_replace('[%WrapClass%]"','" + sd_build_aui_class(props.attributes)',$new_args);
4251
-								$new_args = str_replace('[%WrapClass%]','+ sd_build_aui_class(props.attributes)',$new_args);
4252
-							}
4253
-							echo str_replace( "if_", "", $element ) . ": " . $this->block_props_replace( $new_args, true ) . ",";
4254
-						} elseif ( $element == 'style' &&  strpos($new_args, '[%WrapStyle%]') !== false ) {
4255
-							$new_args = str_replace('[%WrapStyle%]','',$new_args);
4256
-							echo $element . ": {..." . $this->block_props_replace( $new_args ) . " , ...sd_build_aui_styles(props.attributes) },";
4158
+                                echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( ";
4159
+                                echo $save ? "wp.blockEditor.useBlockProps.save( {" : "wp.blockEditor.useBlockProps( {";
4160
+                                echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4161
+
4162
+                                echo "} ), {";
4163
+                                echo !empty($new_args['innerBlocksProps']) && !$save ? $this->block_element( $new_args['innerBlocksProps'],$save ) : '';
4164
+                            //    echo '###';
4165
+
4166
+                                //  echo '###';
4167
+                            }elseif($new_args['element']=='BlocksProps'){
4168
+
4169
+                                if ( isset($new_args['if_inner_element']) ) {
4170
+                                    $element = $new_args['if_inner_element'];
4171
+                                }else {
4172
+                                    $element = isset($new_args['inner_element']) ? "'".esc_attr($new_args['inner_element'])."'" : "'div'";
4173
+                                }
4174
+
4175
+                                unset($new_args['inner_element']);
4176
+                                echo $save ? "\n el( $element, wp.blockEditor.useBlockProps.save( {" : "\n el( $element, wp.blockEditor.useBlockProps( {";
4177
+                                echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4178
+
4179
+
4180
+                                // echo "} ),";
4181
+
4182
+                            }else{
4183
+                                echo "\n el( '" . $new_args['element'] . "', {";
4184
+                            }
4185
+
4186
+
4187
+                            // get the attributes
4188
+                            foreach ( $new_args as $new_key => $new_value ) {
4189
+
4190
+
4191
+                                if ( $new_key == 'element' || $new_key == 'content'|| $new_key == 'if_content' || $new_key == 'element_require' || $new_key == 'element_repeat' || is_array( $new_value ) ) {
4192
+                                    // do nothing
4193
+                                } else {
4194
+                                    echo $this->block_element( array( $new_key => $new_value ),$save );
4195
+                                }
4196
+                            }
4197
+
4198
+                            echo $new_args['element']=='BlocksProps' ? '} ),' : "},";// end attributes
4199
+
4200
+                            // get the content
4201
+                            $first_item = 0;
4202
+                            foreach ( $new_args as $new_key => $new_value ) {
4203
+                                if ( $new_key === 'content' || $new_key === 'if_content' || is_array( $new_value ) ) {
4204
+
4205
+                                    if ( $new_key === 'content' ) {
4206
+                                        echo "'" . $this->block_props_replace( wp_slash( $new_value ) ) . "'";
4207
+                                    }else if ( $new_key === 'if_content' ) {
4208
+                                        echo  $this->block_props_replace(  $new_value  );
4209
+                                    }
4210
+
4211
+                                    if ( is_array( $new_value ) ) {
4212
+
4213
+                                        if ( isset( $new_value['element_require'] ) ) {
4214
+                                            echo str_replace( array(
4215
+                                                    "'+",
4216
+                                                    "+'"
4217
+                                                ), '', $this->block_props_replace( $new_value['element_require'] ) ) . " &&  ";
4218
+                                            unset( $new_value['element_require'] );
4219
+                                        }
4220
+
4221
+                                        if ( isset( $new_value['element_repeat'] ) ) {
4222
+                                            $x = 1;
4223
+                                            while ( $x <= absint( $new_value['element_repeat'] ) ) {
4224
+                                                $this->block_element( array( '' => $new_value ),$save );
4225
+                                                $x ++;
4226
+                                            }
4227
+                                        } else {
4228
+                                            $this->block_element( array( '' => $new_value ),$save );
4229
+                                        }
4230
+                                    }
4231
+                                    $first_item ++;
4232
+                                }
4233
+                            }
4234
+
4235
+                            if($new_args['element']=='innerBlocksProps' || $new_args['element']=='xBlocksProps'){
4236
+                                echo "))";// end content
4237
+                            }else{
4238
+                                echo ")";// end content
4239
+                            }
4240
+
4241
+
4242
+                            echo ", \n";
4243
+
4244
+                        }
4245
+                    } else {
4246
+
4247
+                        if ( substr( $element, 0, 3 ) === "if_" ) {
4248
+                            $extra = '';
4249
+                            if( strpos($new_args, '[%WrapClass%]') !== false ){
4250
+                                $new_args = str_replace('[%WrapClass%]"','" + sd_build_aui_class(props.attributes)',$new_args);
4251
+                                $new_args = str_replace('[%WrapClass%]','+ sd_build_aui_class(props.attributes)',$new_args);
4252
+                            }
4253
+                            echo str_replace( "if_", "", $element ) . ": " . $this->block_props_replace( $new_args, true ) . ",";
4254
+                        } elseif ( $element == 'style' &&  strpos($new_args, '[%WrapStyle%]') !== false ) {
4255
+                            $new_args = str_replace('[%WrapStyle%]','',$new_args);
4256
+                            echo $element . ": {..." . $this->block_props_replace( $new_args ) . " , ...sd_build_aui_styles(props.attributes) },";
4257 4257
 //                            echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4258
-						} elseif ( $element == 'style' ) {
4259
-							echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4260
-						} elseif ( ( $element == 'class' || $element == 'className'  ) &&  strpos($new_args, '[%WrapClass%]') !== false ) {
4261
-							$new_args = str_replace('[%WrapClass%]','',$new_args);
4262
-							echo $element . ": '" . $this->block_props_replace( $new_args ) . "' + sd_build_aui_class(props.attributes),";
4263
-						} elseif ( $element == 'template' && $new_args ) {
4264
-							echo $element . ": $new_args,";
4265
-						} else {
4266
-							echo $element . ": '" . $this->block_props_replace( $new_args ) . "',";
4267
-						}
4268
-
4269
-					}
4270
-				}
4271
-			}
4272
-		}
4258
+                        } elseif ( $element == 'style' ) {
4259
+                            echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4260
+                        } elseif ( ( $element == 'class' || $element == 'className'  ) &&  strpos($new_args, '[%WrapClass%]') !== false ) {
4261
+                            $new_args = str_replace('[%WrapClass%]','',$new_args);
4262
+                            echo $element . ": '" . $this->block_props_replace( $new_args ) . "' + sd_build_aui_class(props.attributes),";
4263
+                        } elseif ( $element == 'template' && $new_args ) {
4264
+                            echo $element . ": $new_args,";
4265
+                        } else {
4266
+                            echo $element . ": '" . $this->block_props_replace( $new_args ) . "',";
4267
+                        }
4268
+
4269
+                    }
4270
+                }
4271
+            }
4272
+        }
4273 4273
 
4274
-		/**
4275
-		 * Replace block attributes placeholders with the proper naming.
4276
-		 *
4277
-		 * @param $string
4278
-		 *
4279
-		 * @return mixed
4280
-		 */
4281
-		public function block_props_replace( $string, $no_wrap = false ) {
4282
-			if ( $no_wrap ) {
4283
-				$string = str_replace( array( "[%", "%]", "%:checked]" ), array( "props.attributes.", "", "" ), $string );
4284
-			} else {
4285
-				$string = str_replace( array( "![%", "[%", "%]", "%:checked]" ), array( "'+!props.attributes.", "'+props.attributes.", "+'", "+'" ), $string );
4286
-			}
4274
+        /**
4275
+         * Replace block attributes placeholders with the proper naming.
4276
+         *
4277
+         * @param $string
4278
+         *
4279
+         * @return mixed
4280
+         */
4281
+        public function block_props_replace( $string, $no_wrap = false ) {
4282
+            if ( $no_wrap ) {
4283
+                $string = str_replace( array( "[%", "%]", "%:checked]" ), array( "props.attributes.", "", "" ), $string );
4284
+            } else {
4285
+                $string = str_replace( array( "![%", "[%", "%]", "%:checked]" ), array( "'+!props.attributes.", "'+props.attributes.", "+'", "+'" ), $string );
4286
+            }
4287 4287
 
4288
-			return $string;
4289
-		}
4288
+            return $string;
4289
+        }
4290 4290
 
4291
-		/**
4292
-		 * Outputs the content of the widget
4293
-		 *
4294
-		 * @param array $args
4295
-		 * @param array $instance
4296
-		 */
4297
-		public function widget( $args, $instance ) {
4298
-			if ( ! is_array( $args ) ) {
4299
-				$args = array();
4300
-			}
4291
+        /**
4292
+         * Outputs the content of the widget
4293
+         *
4294
+         * @param array $args
4295
+         * @param array $instance
4296
+         */
4297
+        public function widget( $args, $instance ) {
4298
+            if ( ! is_array( $args ) ) {
4299
+                $args = array();
4300
+            }
4301 4301
 
4302
-			// Get the filtered values
4303
-			$argument_values = $this->argument_values( $instance );
4304
-			$argument_values = $this->string_to_bool( $argument_values );
4305
-			$output          = $this->output( $argument_values, $args );
4302
+            // Get the filtered values
4303
+            $argument_values = $this->argument_values( $instance );
4304
+            $argument_values = $this->string_to_bool( $argument_values );
4305
+            $output          = $this->output( $argument_values, $args );
4306 4306
 
4307
-			$no_wrap = false;
4308
-			if ( isset( $argument_values['no_wrap'] ) && $argument_values['no_wrap'] ) {
4309
-				$no_wrap = true;
4310
-			}
4307
+            $no_wrap = false;
4308
+            if ( isset( $argument_values['no_wrap'] ) && $argument_values['no_wrap'] ) {
4309
+                $no_wrap = true;
4310
+            }
4311 4311
 
4312
-			ob_start();
4313
-			if ( $output && ! $no_wrap ) {
4312
+            ob_start();
4313
+            if ( $output && ! $no_wrap ) {
4314 4314
 
4315
-				$class_original = $this->options['widget_ops']['classname'];
4316
-				$class = $this->options['widget_ops']['classname']." sdel-".$this->get_instance_hash();
4315
+                $class_original = $this->options['widget_ops']['classname'];
4316
+                $class = $this->options['widget_ops']['classname']." sdel-".$this->get_instance_hash();
4317 4317
 
4318
-				// Before widget
4319
-				$before_widget = ! empty( $args['before_widget'] ) ? $args['before_widget'] : '';
4320
-				$before_widget = $before_widget ? str_replace( $class_original, $class, $before_widget ) : $before_widget;
4321
-				$before_widget = apply_filters( 'wp_super_duper_before_widget', $before_widget, $args, $instance, $this );
4322
-				$before_widget = apply_filters( 'wp_super_duper_before_widget_' . $this->base_id, $before_widget, $args, $instance, $this );
4318
+                // Before widget
4319
+                $before_widget = ! empty( $args['before_widget'] ) ? $args['before_widget'] : '';
4320
+                $before_widget = $before_widget ? str_replace( $class_original, $class, $before_widget ) : $before_widget;
4321
+                $before_widget = apply_filters( 'wp_super_duper_before_widget', $before_widget, $args, $instance, $this );
4322
+                $before_widget = apply_filters( 'wp_super_duper_before_widget_' . $this->base_id, $before_widget, $args, $instance, $this );
4323 4323
 
4324
-				// After widget
4325
-				$after_widget = ! empty( $args['after_widget'] ) ? $args['after_widget'] : '';
4326
-				$after_widget = apply_filters( 'wp_super_duper_after_widget', $after_widget, $args, $instance, $this );
4327
-				$after_widget = apply_filters( 'wp_super_duper_after_widget_' . $this->base_id, $after_widget, $args, $instance, $this );
4324
+                // After widget
4325
+                $after_widget = ! empty( $args['after_widget'] ) ? $args['after_widget'] : '';
4326
+                $after_widget = apply_filters( 'wp_super_duper_after_widget', $after_widget, $args, $instance, $this );
4327
+                $after_widget = apply_filters( 'wp_super_duper_after_widget_' . $this->base_id, $after_widget, $args, $instance, $this );
4328 4328
 
4329
-				echo $before_widget;
4330
-				// elementor strips the widget wrapping div so we check for and add it back if needed
4331
-				if ( $this->is_elementor_widget_output() ) {
4332
-					// Filter class & attrs for elementor widget output.
4333
-					$class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
4334
-					$class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
4329
+                echo $before_widget;
4330
+                // elementor strips the widget wrapping div so we check for and add it back if needed
4331
+                if ( $this->is_elementor_widget_output() ) {
4332
+                    // Filter class & attrs for elementor widget output.
4333
+                    $class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
4334
+                    $class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
4335 4335
 
4336
-					$attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
4337
-					$attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
4336
+                    $attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
4337
+                    $attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
4338 4338
 
4339
-					echo "<span class='" . esc_attr( $class  ) . "' " . $attrs . ">";
4340
-				}
4341
-				echo $this->output_title( $args, $instance );
4342
-				echo $output;
4343
-				if ( $this->is_elementor_widget_output() ) {
4344
-					echo "</span>";
4345
-				}
4346
-				echo $after_widget;
4347
-			} elseif ( $this->is_preview() && $output == '' ) {// if preview show a placeholder if empty
4348
-				$output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
4349
-				echo $output;
4350
-			} elseif ( $output && $no_wrap ) {
4351
-				echo $output;
4352
-			}
4353
-			$output = ob_get_clean();
4339
+                    echo "<span class='" . esc_attr( $class  ) . "' " . $attrs . ">";
4340
+                }
4341
+                echo $this->output_title( $args, $instance );
4342
+                echo $output;
4343
+                if ( $this->is_elementor_widget_output() ) {
4344
+                    echo "</span>";
4345
+                }
4346
+                echo $after_widget;
4347
+            } elseif ( $this->is_preview() && $output == '' ) {// if preview show a placeholder if empty
4348
+                $output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
4349
+                echo $output;
4350
+            } elseif ( $output && $no_wrap ) {
4351
+                echo $output;
4352
+            }
4353
+            $output = ob_get_clean();
4354 4354
 
4355
-			$output = apply_filters( 'wp_super_duper_widget_output', $output, $instance, $args, $this );
4355
+            $output = apply_filters( 'wp_super_duper_widget_output', $output, $instance, $args, $this );
4356 4356
 
4357
-			echo $output;
4358
-		}
4357
+            echo $output;
4358
+        }
4359 4359
 
4360
-		/**
4361
-		 * Tests if the current output is inside a elementor container.
4362
-		 *
4363
-		 * @return bool
4364
-		 *@since 1.0.4
4365
-		 */
4366
-		public function is_elementor_widget_output() {
4367
-			$result = false;
4368
-			if ( defined( 'ELEMENTOR_VERSION' ) && isset( $this->number ) && $this->number == 'REPLACE_TO_ID' ) {
4369
-				$result = true;
4370
-			}
4360
+        /**
4361
+         * Tests if the current output is inside a elementor container.
4362
+         *
4363
+         * @return bool
4364
+         *@since 1.0.4
4365
+         */
4366
+        public function is_elementor_widget_output() {
4367
+            $result = false;
4368
+            if ( defined( 'ELEMENTOR_VERSION' ) && isset( $this->number ) && $this->number == 'REPLACE_TO_ID' ) {
4369
+                $result = true;
4370
+            }
4371 4371
 
4372
-			return $result;
4373
-		}
4372
+            return $result;
4373
+        }
4374 4374
 
4375
-		/**
4376
-		 * Tests if the current output is inside a elementor preview.
4377
-		 *
4378
-		 * @return bool
4379
-		 *@since 1.0.4
4380
-		 */
4381
-		public function is_elementor_preview() {
4382
-			$result = false;
4383
-			if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) {
4384
-				$result = true;
4385
-			}
4375
+        /**
4376
+         * Tests if the current output is inside a elementor preview.
4377
+         *
4378
+         * @return bool
4379
+         *@since 1.0.4
4380
+         */
4381
+        public function is_elementor_preview() {
4382
+            $result = false;
4383
+            if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) {
4384
+                $result = true;
4385
+            }
4386 4386
 
4387
-			return $result;
4388
-		}
4387
+            return $result;
4388
+        }
4389 4389
 
4390
-		/**
4391
-		 * Tests if the current output is inside a Divi preview.
4392
-		 *
4393
-		 * @return bool
4394
-		 *@since 1.0.6
4395
-		 */
4396
-		public function is_divi_preview() {
4397
-			$result = false;
4398
-			if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) {
4399
-				$result = true;
4400
-			}
4390
+        /**
4391
+         * Tests if the current output is inside a Divi preview.
4392
+         *
4393
+         * @return bool
4394
+         *@since 1.0.6
4395
+         */
4396
+        public function is_divi_preview() {
4397
+            $result = false;
4398
+            if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) {
4399
+                $result = true;
4400
+            }
4401 4401
 
4402
-			return $result;
4403
-		}
4402
+            return $result;
4403
+        }
4404 4404
 
4405
-		/**
4406
-		 * Tests if the current output is inside a Beaver builder preview.
4407
-		 *
4408
-		 * @return bool
4409
-		 *@since 1.0.6
4410
-		 */
4411
-		public function is_beaver_preview() {
4412
-			$result = false;
4413
-			if ( isset( $_REQUEST['fl_builder'] ) ) {
4414
-				$result = true;
4415
-			}
4405
+        /**
4406
+         * Tests if the current output is inside a Beaver builder preview.
4407
+         *
4408
+         * @return bool
4409
+         *@since 1.0.6
4410
+         */
4411
+        public function is_beaver_preview() {
4412
+            $result = false;
4413
+            if ( isset( $_REQUEST['fl_builder'] ) ) {
4414
+                $result = true;
4415
+            }
4416 4416
 
4417
-			return $result;
4418
-		}
4417
+            return $result;
4418
+        }
4419 4419
 
4420
-		/**
4421
-		 * Tests if the current output is inside a siteorigin builder preview.
4422
-		 *
4423
-		 * @return bool
4424
-		 *@since 1.0.6
4425
-		 */
4426
-		public function is_siteorigin_preview() {
4427
-			$result = false;
4428
-			if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) {
4429
-				$result = true;
4430
-			}
4420
+        /**
4421
+         * Tests if the current output is inside a siteorigin builder preview.
4422
+         *
4423
+         * @return bool
4424
+         *@since 1.0.6
4425
+         */
4426
+        public function is_siteorigin_preview() {
4427
+            $result = false;
4428
+            if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) {
4429
+                $result = true;
4430
+            }
4431 4431
 
4432
-			return $result;
4433
-		}
4432
+            return $result;
4433
+        }
4434 4434
 
4435
-		/**
4436
-		 * Tests if the current output is inside a cornerstone builder preview.
4437
-		 *
4438
-		 * @return bool
4439
-		 *@since 1.0.8
4440
-		 */
4441
-		public function is_cornerstone_preview() {
4442
-			$result = false;
4443
-			if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) {
4444
-				$result = true;
4445
-			}
4435
+        /**
4436
+         * Tests if the current output is inside a cornerstone builder preview.
4437
+         *
4438
+         * @return bool
4439
+         *@since 1.0.8
4440
+         */
4441
+        public function is_cornerstone_preview() {
4442
+            $result = false;
4443
+            if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) {
4444
+                $result = true;
4445
+            }
4446 4446
 
4447
-			return $result;
4448
-		}
4447
+            return $result;
4448
+        }
4449 4449
 
4450
-		/**
4451
-		 * Tests if the current output is inside a fusion builder preview.
4452
-		 *
4453
-		 * @return bool
4454
-		 *@since 1.1.0
4455
-		 */
4456
-		public function is_fusion_preview() {
4457
-			$result = false;
4458
-			if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) {
4459
-				$result = true;
4460
-			}
4450
+        /**
4451
+         * Tests if the current output is inside a fusion builder preview.
4452
+         *
4453
+         * @return bool
4454
+         *@since 1.1.0
4455
+         */
4456
+        public function is_fusion_preview() {
4457
+            $result = false;
4458
+            if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) {
4459
+                $result = true;
4460
+            }
4461 4461
 
4462
-			return $result;
4463
-		}
4462
+            return $result;
4463
+        }
4464 4464
 
4465
-		/**
4466
-		 * Tests if the current output is inside a Oxygen builder preview.
4467
-		 *
4468
-		 * @return bool
4469
-		 *@since 1.0.18
4470
-		 */
4471
-		public function is_oxygen_preview() {
4472
-			$result = false;
4473
-			if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) {
4474
-				$result = true;
4475
-			}
4465
+        /**
4466
+         * Tests if the current output is inside a Oxygen builder preview.
4467
+         *
4468
+         * @return bool
4469
+         *@since 1.0.18
4470
+         */
4471
+        public function is_oxygen_preview() {
4472
+            $result = false;
4473
+            if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) {
4474
+                $result = true;
4475
+            }
4476 4476
 
4477
-			return $result;
4478
-		}
4477
+            return $result;
4478
+        }
4479 4479
 
4480
-		/**
4481
-		 * Check for Kallyas theme Zion builder preview.
4482
-		 *
4483
-		 * @since 1.1.22
4484
-		 *
4485
-		 * @return bool True when preview page otherwise false.
4486
-		 */
4487
-		public function is_kallyas_zion_preview() {
4488
-			$result = false;
4489
-
4490
-			if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) {
4491
-				$result = true;
4492
-			}
4480
+        /**
4481
+         * Check for Kallyas theme Zion builder preview.
4482
+         *
4483
+         * @since 1.1.22
4484
+         *
4485
+         * @return bool True when preview page otherwise false.
4486
+         */
4487
+        public function is_kallyas_zion_preview() {
4488
+            $result = false;
4493 4489
 
4494
-			return $result;
4495
-		}
4490
+            if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) {
4491
+                $result = true;
4492
+            }
4496 4493
 
4497
-		/**
4498
-		 * Check for Bricks theme builder preview.
4499
-		 *
4500
-		 * @since 1.1.31
4501
-		 *
4502
-		 * @return bool True when preview page otherwise false.
4503
-		 */
4504
-		public function is_bricks_preview() {
4505
-			$result = false;
4506
-
4507
-			if ( function_exists( 'bricks_is_builder' ) && ( bricks_is_builder() || bricks_is_builder_call() ) ) {
4508
-				$result = true;
4509
-			}
4494
+            return $result;
4495
+        }
4510 4496
 
4511
-			return $result;
4512
-		}
4497
+        /**
4498
+         * Check for Bricks theme builder preview.
4499
+         *
4500
+         * @since 1.1.31
4501
+         *
4502
+         * @return bool True when preview page otherwise false.
4503
+         */
4504
+        public function is_bricks_preview() {
4505
+            $result = false;
4513 4506
 
4514
-		/**
4515
-		 * General function to check if we are in a preview situation.
4516
-		 *
4517
-		 * @return bool
4518
-		 *@since 1.0.6
4519
-		 */
4520
-		public function is_preview() {
4521
-			$preview = false;
4522
-			if ( $this->is_divi_preview() ) {
4523
-				$preview = true;
4524
-			} elseif ( $this->is_elementor_preview() ) {
4525
-				$preview = true;
4526
-			} elseif ( $this->is_beaver_preview() ) {
4527
-				$preview = true;
4528
-			} elseif ( $this->is_siteorigin_preview() ) {
4529
-				$preview = true;
4530
-			} elseif ( $this->is_cornerstone_preview() ) {
4531
-				$preview = true;
4532
-			} elseif ( $this->is_fusion_preview() ) {
4533
-				$preview = true;
4534
-			} elseif ( $this->is_oxygen_preview() ) {
4535
-				$preview = true;
4536
-			} elseif( $this->is_kallyas_zion_preview() ) {
4537
-				$preview = true;
4538
-			} elseif( $this->is_block_content_call() ) {
4539
-				$preview = true;
4540
-			} elseif( $this->is_bricks_preview() ) {
4541
-				$preview = true;
4542
-			}
4507
+            if ( function_exists( 'bricks_is_builder' ) && ( bricks_is_builder() || bricks_is_builder_call() ) ) {
4508
+                $result = true;
4509
+            }
4543 4510
 
4544
-			return $preview;
4545
-		}
4511
+            return $result;
4512
+        }
4546 4513
 
4547
-		/**
4548
-		 * Output the super title.
4549
-		 *
4550
-		 * @param $args
4551
-		 * @param array $instance
4552
-		 *
4553
-		 * @return string
4554
-		 */
4555
-		public function output_title( $args, $instance = array() ) {
4556
-			$output = '';
4557
-			if ( ! empty( $instance['title'] ) ) {
4558
-				/** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
4559
-				$title  = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
4560
-
4561
-				if ( empty( $instance['widget_title_tag'] ) ) {
4562
-					if ( ! isset( $args['before_title'] ) ) {
4563
-						$args['before_title'] = '';
4564
-					}
4514
+        /**
4515
+         * General function to check if we are in a preview situation.
4516
+         *
4517
+         * @return bool
4518
+         *@since 1.0.6
4519
+         */
4520
+        public function is_preview() {
4521
+            $preview = false;
4522
+            if ( $this->is_divi_preview() ) {
4523
+                $preview = true;
4524
+            } elseif ( $this->is_elementor_preview() ) {
4525
+                $preview = true;
4526
+            } elseif ( $this->is_beaver_preview() ) {
4527
+                $preview = true;
4528
+            } elseif ( $this->is_siteorigin_preview() ) {
4529
+                $preview = true;
4530
+            } elseif ( $this->is_cornerstone_preview() ) {
4531
+                $preview = true;
4532
+            } elseif ( $this->is_fusion_preview() ) {
4533
+                $preview = true;
4534
+            } elseif ( $this->is_oxygen_preview() ) {
4535
+                $preview = true;
4536
+            } elseif( $this->is_kallyas_zion_preview() ) {
4537
+                $preview = true;
4538
+            } elseif( $this->is_block_content_call() ) {
4539
+                $preview = true;
4540
+            } elseif( $this->is_bricks_preview() ) {
4541
+                $preview = true;
4542
+            }
4565 4543
 
4566
-					if ( ! isset( $args['after_title'] ) ) {
4567
-						$args['after_title'] = '';
4568
-					}
4544
+            return $preview;
4545
+        }
4569 4546
 
4570
-					$output = $args['before_title'] . $title . $args['after_title'];
4571
-				} else {
4572
-					$tag 			= esc_attr( $instance['widget_title_tag'] );
4573
-					$allowed_tags 	= array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'div', 'p' );
4574
-					$title_tag      = in_array( $tag, $allowed_tags, true ) ? esc_attr( $tag ) : 'h2';
4575
-
4576
-					// classes
4577
-					$title_classes = array();
4578
-					$title_classes[] = !empty( $instance['widget_title_size_class'] ) ? sanitize_html_class( $instance['widget_title_size_class'] ) : '';
4579
-					$title_classes[] = !empty( $instance['widget_title_align_class'] ) ? sanitize_html_class( $instance['widget_title_align_class'] ) : '';
4580
-					$title_classes[] = !empty( $instance['widget_title_color_class'] ) ? "text-".sanitize_html_class( $instance['widget_title_color_class'] ) : '';
4581
-					$title_classes[] = !empty( $instance['widget_title_border_class'] ) ? sanitize_html_class( $instance['widget_title_border_class'] ) : '';
4582
-					$title_classes[] = !empty( $instance['widget_title_border_color_class'] ) ? "border-".sanitize_html_class( $instance['widget_title_border_color_class'] ) : '';
4583
-					$title_classes[] = !empty( $instance['widget_title_mt_class'] ) ? "mt-".absint( $instance['widget_title_mt_class'] ) : '';
4584
-					$title_classes[] = !empty( $instance['widget_title_mr_class'] ) ? "mr-".absint( $instance['widget_title_mr_class'] ) : '';
4585
-					$title_classes[] = !empty( $instance['widget_title_mb_class'] ) ? "mb-".absint( $instance['widget_title_mb_class'] ) : '';
4586
-					$title_classes[] = !empty( $instance['widget_title_ml_class'] ) ? "ml-".absint( $instance['widget_title_ml_class'] ) : '';
4587
-					$title_classes[] = !empty( $instance['widget_title_pt_class'] ) ? "pt-".absint( $instance['widget_title_pt_class'] ) : '';
4588
-					$title_classes[] = !empty( $instance['widget_title_pr_class'] ) ? "pr-".absint( $instance['widget_title_pr_class'] ) : '';
4589
-					$title_classes[] = !empty( $instance['widget_title_pb_class'] ) ? "pb-".absint( $instance['widget_title_pb_class'] ) : '';
4590
-					$title_classes[] = !empty( $instance['widget_title_pl_class'] ) ? "pl-".absint( $instance['widget_title_pl_class'] ) : '';
4591
-
4592
-					$class = !empty( $title_classes ) ? implode(" ",$title_classes) : '';
4593
-					$output = "<$title_tag class='$class' >$title</$title_tag>";
4594
-				}
4547
+        /**
4548
+         * Output the super title.
4549
+         *
4550
+         * @param $args
4551
+         * @param array $instance
4552
+         *
4553
+         * @return string
4554
+         */
4555
+        public function output_title( $args, $instance = array() ) {
4556
+            $output = '';
4557
+            if ( ! empty( $instance['title'] ) ) {
4558
+                /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
4559
+                $title  = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
4560
+
4561
+                if ( empty( $instance['widget_title_tag'] ) ) {
4562
+                    if ( ! isset( $args['before_title'] ) ) {
4563
+                        $args['before_title'] = '';
4564
+                    }
4565
+
4566
+                    if ( ! isset( $args['after_title'] ) ) {
4567
+                        $args['after_title'] = '';
4568
+                    }
4569
+
4570
+                    $output = $args['before_title'] . $title . $args['after_title'];
4571
+                } else {
4572
+                    $tag 			= esc_attr( $instance['widget_title_tag'] );
4573
+                    $allowed_tags 	= array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'div', 'p' );
4574
+                    $title_tag      = in_array( $tag, $allowed_tags, true ) ? esc_attr( $tag ) : 'h2';
4575
+
4576
+                    // classes
4577
+                    $title_classes = array();
4578
+                    $title_classes[] = !empty( $instance['widget_title_size_class'] ) ? sanitize_html_class( $instance['widget_title_size_class'] ) : '';
4579
+                    $title_classes[] = !empty( $instance['widget_title_align_class'] ) ? sanitize_html_class( $instance['widget_title_align_class'] ) : '';
4580
+                    $title_classes[] = !empty( $instance['widget_title_color_class'] ) ? "text-".sanitize_html_class( $instance['widget_title_color_class'] ) : '';
4581
+                    $title_classes[] = !empty( $instance['widget_title_border_class'] ) ? sanitize_html_class( $instance['widget_title_border_class'] ) : '';
4582
+                    $title_classes[] = !empty( $instance['widget_title_border_color_class'] ) ? "border-".sanitize_html_class( $instance['widget_title_border_color_class'] ) : '';
4583
+                    $title_classes[] = !empty( $instance['widget_title_mt_class'] ) ? "mt-".absint( $instance['widget_title_mt_class'] ) : '';
4584
+                    $title_classes[] = !empty( $instance['widget_title_mr_class'] ) ? "mr-".absint( $instance['widget_title_mr_class'] ) : '';
4585
+                    $title_classes[] = !empty( $instance['widget_title_mb_class'] ) ? "mb-".absint( $instance['widget_title_mb_class'] ) : '';
4586
+                    $title_classes[] = !empty( $instance['widget_title_ml_class'] ) ? "ml-".absint( $instance['widget_title_ml_class'] ) : '';
4587
+                    $title_classes[] = !empty( $instance['widget_title_pt_class'] ) ? "pt-".absint( $instance['widget_title_pt_class'] ) : '';
4588
+                    $title_classes[] = !empty( $instance['widget_title_pr_class'] ) ? "pr-".absint( $instance['widget_title_pr_class'] ) : '';
4589
+                    $title_classes[] = !empty( $instance['widget_title_pb_class'] ) ? "pb-".absint( $instance['widget_title_pb_class'] ) : '';
4590
+                    $title_classes[] = !empty( $instance['widget_title_pl_class'] ) ? "pl-".absint( $instance['widget_title_pl_class'] ) : '';
4591
+
4592
+                    $class = !empty( $title_classes ) ? implode(" ",$title_classes) : '';
4593
+                    $output = "<$title_tag class='$class' >$title</$title_tag>";
4594
+                }
4595 4595
 
4596
-			}
4596
+            }
4597 4597
 
4598
-			return $output;
4599
-		}
4598
+            return $output;
4599
+        }
4600 4600
 
4601
-		/**
4602
-		 * Outputs the options form inputs for the widget.
4603
-		 *
4604
-		 * @param array $instance The widget options.
4605
-		 */
4606
-		public function form( $instance ) {
4601
+        /**
4602
+         * Outputs the options form inputs for the widget.
4603
+         *
4604
+         * @param array $instance The widget options.
4605
+         */
4606
+        public function form( $instance ) {
4607 4607
 
4608
-			// set widget instance
4609
-			$this->instance = $instance;
4608
+            // set widget instance
4609
+            $this->instance = $instance;
4610 4610
 
4611
-			// set it as a SD widget
4612
-			echo $this->widget_advanced_toggle();
4611
+            // set it as a SD widget
4612
+            echo $this->widget_advanced_toggle();
4613 4613
 
4614
-			echo "<p>" . esc_attr( $this->options['widget_ops']['description'] ) . "</p>";
4615
-			$arguments_raw = $this->get_arguments();
4614
+            echo "<p>" . esc_attr( $this->options['widget_ops']['description'] ) . "</p>";
4615
+            $arguments_raw = $this->get_arguments();
4616 4616
 
4617
-			if ( is_array( $arguments_raw ) ) {
4617
+            if ( is_array( $arguments_raw ) ) {
4618 4618
 
4619
-				$arguments = $this->group_arguments( $arguments_raw );
4619
+                $arguments = $this->group_arguments( $arguments_raw );
4620 4620
 
4621
-				// Do we have sections?
4622
-				$has_sections = $arguments == $arguments_raw ? false : true;
4621
+                // Do we have sections?
4622
+                $has_sections = $arguments == $arguments_raw ? false : true;
4623 4623
 
4624 4624
 
4625
-				if ( $has_sections ) {
4626
-					$panel_count = 0;
4627
-					foreach ( $arguments as $key => $args ) {
4625
+                if ( $has_sections ) {
4626
+                    $panel_count = 0;
4627
+                    foreach ( $arguments as $key => $args ) {
4628 4628
 
4629
-						?>
4629
+                        ?>
4630 4630
 						<script>
4631 4631
 							//							jQuery(this).find("i").toggleClass("fas fa-chevron-up fas fa-chevron-down");jQuery(this).next().toggle();
4632 4632
 						</script>
4633 4633
 						<?php
4634 4634
 
4635
-						$hide       = $panel_count ? ' style="display:none;" ' : '';
4636
-						$icon_class = $panel_count ? 'fas fa-chevron-up' : 'fas fa-chevron-down';
4637
-						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>";
4638
-						echo "<div class='sd-toggle-group sd-input-group-" . sanitize_title_with_dashes( $key ) . "' $hide>";
4635
+                        $hide       = $panel_count ? ' style="display:none;" ' : '';
4636
+                        $icon_class = $panel_count ? 'fas fa-chevron-up' : 'fas fa-chevron-down';
4637
+                        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>";
4638
+                        echo "<div class='sd-toggle-group sd-input-group-" . sanitize_title_with_dashes( $key ) . "' $hide>";
4639 4639
 
4640
-						foreach ( $args as $k => $a ) {
4640
+                        foreach ( $args as $k => $a ) {
4641 4641
 
4642
-							$this->widget_inputs_row_start($k, $a);
4643
-							$this->widget_inputs( $a, $instance );
4644
-							$this->widget_inputs_row_end($k, $a);
4642
+                            $this->widget_inputs_row_start($k, $a);
4643
+                            $this->widget_inputs( $a, $instance );
4644
+                            $this->widget_inputs_row_end($k, $a);
4645 4645
 
4646
-						}
4646
+                        }
4647 4647
 
4648
-						echo "</div>";
4648
+                        echo "</div>";
4649 4649
 
4650
-						$panel_count ++;
4650
+                        $panel_count ++;
4651 4651
 
4652
-					}
4653
-				} else {
4654
-					foreach ( $arguments as $key => $args ) {
4655
-						$this->widget_inputs_row_start($key, $args);
4656
-						$this->widget_inputs( $args, $instance );
4657
-						$this->widget_inputs_row_end($key, $args);
4658
-					}
4659
-				}
4652
+                    }
4653
+                } else {
4654
+                    foreach ( $arguments as $key => $args ) {
4655
+                        $this->widget_inputs_row_start($key, $args);
4656
+                        $this->widget_inputs( $args, $instance );
4657
+                        $this->widget_inputs_row_end($key, $args);
4658
+                    }
4659
+                }
4660 4660
 
4661
-			}
4662
-		}
4661
+            }
4662
+        }
4663 4663
 
4664
-		public function widget_inputs_row_start( $key, $args ) {
4665
-			if ( ! empty( $args['row'] ) ) {
4666
-				// Maybe open
4667
-				if ( ! empty( $args['row']['open'] ) ) {
4668
-					?>
4664
+        public function widget_inputs_row_start( $key, $args ) {
4665
+            if ( ! empty( $args['row'] ) ) {
4666
+                // Maybe open
4667
+                if ( ! empty( $args['row']['open'] ) ) {
4668
+                    ?>
4669 4669
 					<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'] ) : '' ); ?>'>
4670 4670
 					<?php if ( ! empty( $args['row']['title'] ) ) { ?>
4671 4671
 					<?php
4672
-						if ( isset( $args['row']['icon'] ) ) {
4673
-							$args['row']['icon'] = '';
4674
-						}
4675
-
4676
-						if ( ! isset( $args['row']['device_type'] ) && isset( $args['device_type'] ) ) {
4677
-							$args['row']['device_type'] = $args['device_type'];
4678
-						}
4679
-					?>
4672
+                        if ( isset( $args['row']['icon'] ) ) {
4673
+                            $args['row']['icon'] = '';
4674
+                        }
4675
+
4676
+                        if ( ! isset( $args['row']['device_type'] ) && isset( $args['device_type'] ) ) {
4677
+                            $args['row']['device_type'] = $args['device_type'];
4678
+                        }
4679
+                    ?>
4680 4680
 					<label class="mb-0"><?php echo $this->widget_field_title( $args['row'] ); ?><?php echo $this->widget_field_desc( $args['row'] ); ?></label>
4681 4681
 					<?php } ?>
4682 4682
 					<div class='row<?php echo ( ! empty( $args['row']['class'] ) ? ' ' . esc_attr( $args['row']['class'] ) : '' ); ?>'>
4683 4683
 					<div class='col pr-2'>
4684 4684
 					<?php
4685
-				} else if ( ! empty( $args['row']['close'] ) ) {
4686
-					echo "<div class='col pl-0 ps-0'>";
4687
-				} else {
4688
-					echo "<div class='col pl-0 ps-0 pr-2 pe-2'>";
4689
-				}
4690
-			}
4691
-		}
4685
+                } else if ( ! empty( $args['row']['close'] ) ) {
4686
+                    echo "<div class='col pl-0 ps-0'>";
4687
+                } else {
4688
+                    echo "<div class='col pl-0 ps-0 pr-2 pe-2'>";
4689
+                }
4690
+            }
4691
+        }
4692 4692
 
4693
-		public function widget_inputs_row_end( $key, $args ) {
4694
-			if ( ! empty( $args['row'] ) ) {
4695
-				// Maybe close
4696
-				if ( ! empty( $args['row']['close'] ) ) {
4697
-					echo "</div></div>";
4698
-				}
4699
-				echo "</div>";
4700
-			}
4701
-		}
4693
+        public function widget_inputs_row_end( $key, $args ) {
4694
+            if ( ! empty( $args['row'] ) ) {
4695
+                // Maybe close
4696
+                if ( ! empty( $args['row']['close'] ) ) {
4697
+                    echo "</div></div>";
4698
+                }
4699
+                echo "</div>";
4700
+            }
4701
+        }
4702 4702
 
4703
-		/**
4704
-		 * Get the hidden input that when added makes the advanced button show on widget settings.
4705
-		 *
4706
-		 * @return string
4707
-		 */
4708
-		public function widget_advanced_toggle() {
4703
+        /**
4704
+         * Get the hidden input that when added makes the advanced button show on widget settings.
4705
+         *
4706
+         * @return string
4707
+         */
4708
+        public function widget_advanced_toggle() {
4709 4709
 
4710
-			$output = '';
4711
-			if ( $this->block_show_advanced() ) {
4712
-				$val = 1;
4713
-			} else {
4714
-				$val = 0;
4715
-			}
4710
+            $output = '';
4711
+            if ( $this->block_show_advanced() ) {
4712
+                $val = 1;
4713
+            } else {
4714
+                $val = 0;
4715
+            }
4716 4716
 
4717
-			$output .= "<input type='hidden'  class='sd-show-advanced' value='$val' />";
4717
+            $output .= "<input type='hidden'  class='sd-show-advanced' value='$val' />";
4718 4718
 
4719
-			return $output;
4720
-		}
4719
+            return $output;
4720
+        }
4721 4721
 
4722
-		/**
4723
-		 * Convert require element.
4724
-		 *
4725
-		 * @param string $input Input element.
4726
-		 *
4727
-		 * @return string $output
4728
-		 *@since 1.0.0
4729
-		 *
4730
-		 */
4731
-		public function convert_element_require( $input ) {
4732
-			$input = str_replace( "'", '"', $input );// we only want double quotes
4733
-
4734
-			$output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array(
4735
-				"jQuery(form).find('[data-argument=\"",
4736
-				"\"]').find('input,select,textarea').val()",
4737
-				"\"]').find('input:checked').val()"
4738
-			), $input ) );
4739
-
4740
-			return $output;
4741
-		}
4722
+        /**
4723
+         * Convert require element.
4724
+         *
4725
+         * @param string $input Input element.
4726
+         *
4727
+         * @return string $output
4728
+         *@since 1.0.0
4729
+         *
4730
+         */
4731
+        public function convert_element_require( $input ) {
4732
+            $input = str_replace( "'", '"', $input );// we only want double quotes
4742 4733
 
4743
-		/**
4744
-		 * Builds the inputs for the widget options.
4745
-		 *
4746
-		 * @param $args
4747
-		 * @param $instance
4748
-		 */
4749
-		public function widget_inputs( $args, $instance ) {
4750
-
4751
-			$class             = "";
4752
-			$element_require   = "";
4753
-			$custom_attributes = "";
4754
-
4755
-			// get value
4756
-			if ( isset( $instance[ $args['name'] ] ) ) {
4757
-				$value = $instance[ $args['name'] ];
4758
-			} elseif ( ! isset( $instance[ $args['name'] ] ) && ! empty( $args['default'] ) ) {
4759
-				$value = is_array( $args['default'] ) ? array_map( "esc_html", $args['default'] ) : esc_html( $args['default'] );
4760
-			} else {
4761
-				$value = '';
4762
-			}
4734
+            $output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array(
4735
+                "jQuery(form).find('[data-argument=\"",
4736
+                "\"]').find('input,select,textarea').val()",
4737
+                "\"]').find('input:checked').val()"
4738
+            ), $input ) );
4763 4739
 
4764
-			// get placeholder
4765
-			if ( ! empty( $args['placeholder'] ) ) {
4766
-				$placeholder = "placeholder='" . esc_html( $args['placeholder'] ) . "'";
4767
-			} else {
4768
-				$placeholder = '';
4769
-			}
4740
+            return $output;
4741
+        }
4770 4742
 
4771
-			// get if advanced
4772
-			if ( isset( $args['advanced'] ) && $args['advanced'] ) {
4773
-				$class .= " sd-advanced-setting ";
4774
-			}
4743
+        /**
4744
+         * Builds the inputs for the widget options.
4745
+         *
4746
+         * @param $args
4747
+         * @param $instance
4748
+         */
4749
+        public function widget_inputs( $args, $instance ) {
4750
+
4751
+            $class             = "";
4752
+            $element_require   = "";
4753
+            $custom_attributes = "";
4754
+
4755
+            // get value
4756
+            if ( isset( $instance[ $args['name'] ] ) ) {
4757
+                $value = $instance[ $args['name'] ];
4758
+            } elseif ( ! isset( $instance[ $args['name'] ] ) && ! empty( $args['default'] ) ) {
4759
+                $value = is_array( $args['default'] ) ? array_map( "esc_html", $args['default'] ) : esc_html( $args['default'] );
4760
+            } else {
4761
+                $value = '';
4762
+            }
4775 4763
 
4776
-			// element_require
4777
-			if ( isset( $args['element_require'] ) && $args['element_require'] ) {
4778
-				$element_require = $args['element_require'];
4779
-			}
4764
+            // get placeholder
4765
+            if ( ! empty( $args['placeholder'] ) ) {
4766
+                $placeholder = "placeholder='" . esc_html( $args['placeholder'] ) . "'";
4767
+            } else {
4768
+                $placeholder = '';
4769
+            }
4780 4770
 
4781
-			// custom_attributes
4782
-			if ( isset( $args['custom_attributes'] ) && $args['custom_attributes'] ) {
4783
-				$custom_attributes = $this->array_to_attributes( $args['custom_attributes'], true );
4784
-			}
4771
+            // get if advanced
4772
+            if ( isset( $args['advanced'] ) && $args['advanced'] ) {
4773
+                $class .= " sd-advanced-setting ";
4774
+            }
4785 4775
 
4786
-			// before wrapper
4787
-			?>
4776
+            // element_require
4777
+            if ( isset( $args['element_require'] ) && $args['element_require'] ) {
4778
+                $element_require = $args['element_require'];
4779
+            }
4780
+
4781
+            // custom_attributes
4782
+            if ( isset( $args['custom_attributes'] ) && $args['custom_attributes'] ) {
4783
+                $custom_attributes = $this->array_to_attributes( $args['custom_attributes'], true );
4784
+            }
4785
+
4786
+            // before wrapper
4787
+            ?>
4788 4788
 			<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 );} ?>'>
4789 4789
 			<?php
4790
-			switch ( $args['type'] ) {
4791
-				//array('text','password','number','email','tel','url','color')
4792
-				case "text":
4793
-				case "password":
4794
-				case "number":
4795
-				case "email":
4796
-				case "tel":
4797
-				case "url":
4798
-				case "color":
4799
-					?>
4790
+            switch ( $args['type'] ) {
4791
+                //array('text','password','number','email','tel','url','color')
4792
+                case "text":
4793
+                case "password":
4794
+                case "number":
4795
+                case "email":
4796
+                case "tel":
4797
+                case "url":
4798
+                case "color":
4799
+                    ?>
4800 4800
 					<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>
4801 4801
 					<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 ); ?>">
4802 4802
 					<?php
4803 4803
 
4804
-					break;
4805
-				case "select":
4806
-					$multiple = isset( $args['multiple'] ) && $args['multiple'] ? true : false;
4807
-					if ( $multiple ) {
4808
-						if ( empty( $value ) ) {
4809
-							$value = array();
4810
-						}
4811
-					}
4812
-					?>
4804
+                    break;
4805
+                case "select":
4806
+                    $multiple = isset( $args['multiple'] ) && $args['multiple'] ? true : false;
4807
+                    if ( $multiple ) {
4808
+                        if ( empty( $value ) ) {
4809
+                            $value = array();
4810
+                        }
4811
+                    }
4812
+                    ?>
4813 4813
 					<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>
4814 4814
 					<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 "[]"; } ?>"
4815 4815
 						<?php if ( $multiple ) {
4816
-							echo "multiple";
4817
-						} //@todo not implemented yet due to gutenberg not supporting it
4818
-						?>>
4816
+                            echo "multiple";
4817
+                        } //@todo not implemented yet due to gutenberg not supporting it
4818
+                        ?>>
4819 4819
 						<?php
4820 4820
 
4821
-						if ( ! empty( $args['options'] ) ) {
4822
-							foreach ( $args['options'] as $val => $label ) {
4823
-								if ( $multiple ) {
4824
-									$selected = in_array( $val, $value ) ? 'selected="selected"' : '';
4825
-								} else {
4826
-									$selected = selected( $value, $val, false );
4827
-								}
4828
-								echo "<option value='$val' " . $selected . ">$label</option>";
4829
-							}
4830
-						}
4831
-						?>
4821
+                        if ( ! empty( $args['options'] ) ) {
4822
+                            foreach ( $args['options'] as $val => $label ) {
4823
+                                if ( $multiple ) {
4824
+                                    $selected = in_array( $val, $value ) ? 'selected="selected"' : '';
4825
+                                } else {
4826
+                                    $selected = selected( $value, $val, false );
4827
+                                }
4828
+                                echo "<option value='$val' " . $selected . ">$label</option>";
4829
+                            }
4830
+                        }
4831
+                        ?>
4832 4832
 					</select>
4833 4833
 					<?php
4834
-					break;
4835
-				case "checkbox":
4836
-					?>
4834
+                    break;
4835
+                case "checkbox":
4836
+                    ?>
4837 4837
 					<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">
4838 4838
 					<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>
4839 4839
 					<?php
4840
-					break;
4841
-				case "textarea":
4842
-					?>
4840
+                    break;
4841
+                case "textarea":
4842
+                    ?>
4843 4843
 					<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>
4844 4844
 					<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>
4845 4845
 					<?php
4846 4846
 
4847
-					break;
4848
-				case "hidden":
4849
-					?>
4847
+                    break;
4848
+                case "hidden":
4849
+                    ?>
4850 4850
 					<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 ); ?>">
4851 4851
 					<?php
4852
-					break;
4853
-				default:
4854
-					echo "No input type found!"; // @todo we need to add more input types.
4855
-			}
4856
-			// after wrapper
4857
-			?></p><?php
4858
-		}
4852
+                    break;
4853
+                default:
4854
+                    echo "No input type found!"; // @todo we need to add more input types.
4855
+            }
4856
+            // after wrapper
4857
+            ?></p><?php
4858
+        }
4859 4859
 
4860
-		public function get_widget_icon($icon = 'box-top', $title = ''){
4861
-			if($icon=='box-top'){
4862
-				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>';
4863
-			}elseif($icon=='box-right'){
4864
-				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>';
4865
-			}elseif($icon=='box-bottom'){
4866
-				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>';
4867
-			}elseif($icon=='box-left'){
4868
-				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>';
4869
-			}
4870
-		}
4860
+        public function get_widget_icon($icon = 'box-top', $title = ''){
4861
+            if($icon=='box-top'){
4862
+                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>';
4863
+            }elseif($icon=='box-right'){
4864
+                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>';
4865
+            }elseif($icon=='box-bottom'){
4866
+                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>';
4867
+            }elseif($icon=='box-left'){
4868
+                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>';
4869
+            }
4870
+        }
4871 4871
 
4872
-		/**
4873
-		 * Get the widget input description html.
4874
-		 *
4875
-		 * @param $args
4876
-		 *
4877
-		 * @return string
4878
-		 * @todo, need to make its own tooltip script
4879
-		 */
4880
-		public function widget_field_desc( $args ) {
4881
-
4882
-			$description = '';
4883
-			if ( isset( $args['desc'] ) && $args['desc'] ) {
4884
-				if ( isset( $args['desc_tip'] ) && $args['desc_tip'] ) {
4885
-					$description = $this->desc_tip( $args['desc'] );
4886
-				} else {
4887
-					$description = '<span class="description">' . wp_kses_post( $args['desc'] ) . '</span>';
4888
-				}
4889
-			}
4872
+        /**
4873
+         * Get the widget input description html.
4874
+         *
4875
+         * @param $args
4876
+         *
4877
+         * @return string
4878
+         * @todo, need to make its own tooltip script
4879
+         */
4880
+        public function widget_field_desc( $args ) {
4881
+
4882
+            $description = '';
4883
+            if ( isset( $args['desc'] ) && $args['desc'] ) {
4884
+                if ( isset( $args['desc_tip'] ) && $args['desc_tip'] ) {
4885
+                    $description = $this->desc_tip( $args['desc'] );
4886
+                } else {
4887
+                    $description = '<span class="description">' . wp_kses_post( $args['desc'] ) . '</span>';
4888
+                }
4889
+            }
4890 4890
 
4891
-			return $description;
4892
-		}
4891
+            return $description;
4892
+        }
4893 4893
 
4894
-		/**
4895
-		 * Get the widget input title html.
4896
-		 *
4897
-		 * @param $args
4898
-		 *
4899
-		 * @return string
4900
-		 */
4901
-		public function widget_field_title( $args ) {
4902
-			$title = '';
4903
-
4904
-			if ( isset( $args['title'] ) && $args['title'] ) {
4905
-				if ( ! empty( $args['device_type'] ) ) {
4906
-					$args['title'] .= ' (' . $args['device_type'] . ')'; // Append device type to title.
4907
-				}
4894
+        /**
4895
+         * Get the widget input title html.
4896
+         *
4897
+         * @param $args
4898
+         *
4899
+         * @return string
4900
+         */
4901
+        public function widget_field_title( $args ) {
4902
+            $title = '';
4908 4903
 
4909
-				if ( isset( $args['icon'] ) && $args['icon'] ) {
4910
-					$title = self::get_widget_icon( $args['icon'], $args['title']  );
4911
-				} else {
4912
-					$title = esc_attr( $args['title'] );
4913
-				}
4914
-			}
4904
+            if ( isset( $args['title'] ) && $args['title'] ) {
4905
+                if ( ! empty( $args['device_type'] ) ) {
4906
+                    $args['title'] .= ' (' . $args['device_type'] . ')'; // Append device type to title.
4907
+                }
4915 4908
 
4916
-			return $title;
4917
-		}
4909
+                if ( isset( $args['icon'] ) && $args['icon'] ) {
4910
+                    $title = self::get_widget_icon( $args['icon'], $args['title']  );
4911
+                } else {
4912
+                    $title = esc_attr( $args['title'] );
4913
+                }
4914
+            }
4918 4915
 
4919
-		/**
4920
-		 * Get the tool tip html.
4921
-		 *
4922
-		 * @param $tip
4923
-		 * @param bool $allow_html
4924
-		 *
4925
-		 * @return string
4926
-		 */
4927
-		function desc_tip( $tip, $allow_html = false ) {
4928
-			if ( $allow_html ) {
4929
-				$tip = $this->sanitize_tooltip( $tip );
4930
-			} else {
4931
-				$tip = esc_attr( $tip );
4932
-			}
4916
+            return $title;
4917
+        }
4933 4918
 
4934
-			return '<span class="gd-help-tip dashicons dashicons-editor-help" title="' . $tip . '"></span>';
4935
-		}
4919
+        /**
4920
+         * Get the tool tip html.
4921
+         *
4922
+         * @param $tip
4923
+         * @param bool $allow_html
4924
+         *
4925
+         * @return string
4926
+         */
4927
+        function desc_tip( $tip, $allow_html = false ) {
4928
+            if ( $allow_html ) {
4929
+                $tip = $this->sanitize_tooltip( $tip );
4930
+            } else {
4931
+                $tip = esc_attr( $tip );
4932
+            }
4936 4933
 
4937
-		/**
4938
-		 * Sanitize a string destined to be a tooltip.
4939
-		 *
4940
-		 * @param string $var
4941
-		 *
4942
-		 * @return string
4943
-		 */
4944
-		public function sanitize_tooltip( $var ) {
4945
-			return htmlspecialchars( wp_kses( html_entity_decode( $var ), array(
4946
-				'br'     => array(),
4947
-				'em'     => array(),
4948
-				'strong' => array(),
4949
-				'small'  => array(),
4950
-				'span'   => array(),
4951
-				'ul'     => array(),
4952
-				'li'     => array(),
4953
-				'ol'     => array(),
4954
-				'p'      => array(),
4955
-			) ) );
4956
-		}
4934
+            return '<span class="gd-help-tip dashicons dashicons-editor-help" title="' . $tip . '"></span>';
4935
+        }
4957 4936
 
4958
-		/**
4959
-		 * Processing widget options on save
4960
-		 *
4961
-		 * @param array $new_instance The new options
4962
-		 * @param array $old_instance The previous options
4963
-		 *
4964
-		 * @return array
4965
-		 * @todo we should add some sanitation here.
4966
-		 */
4967
-		public function update( $new_instance, $old_instance ) {
4968
-
4969
-			//save the widget
4970
-			$instance = array_merge( (array) $old_instance, (array) $new_instance );
4971
-
4972
-			// set widget instance
4973
-			$this->instance = $instance;
4974
-
4975
-			if ( empty( $this->arguments ) ) {
4976
-				$this->get_arguments();
4977
-			}
4937
+        /**
4938
+         * Sanitize a string destined to be a tooltip.
4939
+         *
4940
+         * @param string $var
4941
+         *
4942
+         * @return string
4943
+         */
4944
+        public function sanitize_tooltip( $var ) {
4945
+            return htmlspecialchars( wp_kses( html_entity_decode( $var ), array(
4946
+                'br'     => array(),
4947
+                'em'     => array(),
4948
+                'strong' => array(),
4949
+                'small'  => array(),
4950
+                'span'   => array(),
4951
+                'ul'     => array(),
4952
+                'li'     => array(),
4953
+                'ol'     => array(),
4954
+                'p'      => array(),
4955
+            ) ) );
4956
+        }
4978 4957
 
4979
-			// check for checkboxes
4980
-			if ( ! empty( $this->arguments ) ) {
4981
-				foreach ( $this->arguments as $argument ) {
4982
-					if ( isset( $argument['type'] ) && $argument['type'] == 'checkbox' && ! isset( $new_instance[ $argument['name'] ] ) ) {
4983
-						$instance[ $argument['name'] ] = '0';
4984
-					}
4985
-				}
4986
-			}
4958
+        /**
4959
+         * Processing widget options on save
4960
+         *
4961
+         * @param array $new_instance The new options
4962
+         * @param array $old_instance The previous options
4963
+         *
4964
+         * @return array
4965
+         * @todo we should add some sanitation here.
4966
+         */
4967
+        public function update( $new_instance, $old_instance ) {
4968
+
4969
+            //save the widget
4970
+            $instance = array_merge( (array) $old_instance, (array) $new_instance );
4971
+
4972
+            // set widget instance
4973
+            $this->instance = $instance;
4974
+
4975
+            if ( empty( $this->arguments ) ) {
4976
+                $this->get_arguments();
4977
+            }
4978
+
4979
+            // check for checkboxes
4980
+            if ( ! empty( $this->arguments ) ) {
4981
+                foreach ( $this->arguments as $argument ) {
4982
+                    if ( isset( $argument['type'] ) && $argument['type'] == 'checkbox' && ! isset( $new_instance[ $argument['name'] ] ) ) {
4983
+                        $instance[ $argument['name'] ] = '0';
4984
+                    }
4985
+                }
4986
+            }
4987 4987
 
4988 4988
             // maybe sanitize widget title
4989 4989
             if(!empty($instance['title'])) {
4990 4990
                 $instance['title'] = wp_kses_post( $instance['title'] );
4991 4991
             }
4992 4992
 
4993
-			return $instance;
4994
-		}
4993
+            return $instance;
4994
+        }
4995 4995
 
4996
-		/**
4997
-		 * Checks if the current call is a ajax call to get the block content.
4998
-		 *
4999
-		 * This can be used in your widget to return different content as the block content.
5000
-		 *
5001
-		 * @return bool
5002
-		 *@since 1.0.3
5003
-		 */
5004
-		public function is_block_content_call() {
5005
-			$result = false;
5006
-			if ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'super_duper_output_shortcode' ) {
5007
-				$result = true;
5008
-			}
4996
+        /**
4997
+         * Checks if the current call is a ajax call to get the block content.
4998
+         *
4999
+         * This can be used in your widget to return different content as the block content.
5000
+         *
5001
+         * @return bool
5002
+         *@since 1.0.3
5003
+         */
5004
+        public function is_block_content_call() {
5005
+            $result = false;
5006
+            if ( wp_doing_ajax() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'super_duper_output_shortcode' ) {
5007
+                $result = true;
5008
+            }
5009 5009
 
5010
-			return $result;
5011
-		}
5010
+            return $result;
5011
+        }
5012 5012
 
5013
-		/**
5014
-		 * Get an instance hash that will be unique to the type and settings.
5015
-		 *
5016
-		 * @return string
5017
-		 *@since 1.0.20
5018
-		 */
5019
-		public function get_instance_hash(){
5020
-			$instance_string = $this->base_id.serialize($this->instance);
5021
-			return hash('crc32b',$instance_string);
5022
-		}
5013
+        /**
5014
+         * Get an instance hash that will be unique to the type and settings.
5015
+         *
5016
+         * @return string
5017
+         *@since 1.0.20
5018
+         */
5019
+        public function get_instance_hash(){
5020
+            $instance_string = $this->base_id.serialize($this->instance);
5021
+            return hash('crc32b',$instance_string);
5022
+        }
5023 5023
 
5024
-		/**
5025
-		 * Generate and return inline styles from CSS rules that will match the unique class of the instance.
5026
-		 *
5027
-		 * @param array $rules
5028
-		 *
5029
-		 * @return string
5030
-		 *@since 1.0.20
5031
-		 */
5032
-		public function get_instance_style($rules = array()){
5033
-			$css = '';
5034
-
5035
-			if(!empty($rules)){
5036
-				$rules = array_unique($rules);
5037
-				$instance_hash = $this->get_instance_hash();
5038
-				$css .= "<style>";
5039
-				foreach($rules as $rule){
5040
-					$css .= ".sdel-$instance_hash $rule";
5041
-				}
5042
-				$css .= "</style>";
5043
-			}
5024
+        /**
5025
+         * Generate and return inline styles from CSS rules that will match the unique class of the instance.
5026
+         *
5027
+         * @param array $rules
5028
+         *
5029
+         * @return string
5030
+         *@since 1.0.20
5031
+         */
5032
+        public function get_instance_style($rules = array()){
5033
+            $css = '';
5034
+
5035
+            if(!empty($rules)){
5036
+                $rules = array_unique($rules);
5037
+                $instance_hash = $this->get_instance_hash();
5038
+                $css .= "<style>";
5039
+                foreach($rules as $rule){
5040
+                    $css .= ".sdel-$instance_hash $rule";
5041
+                }
5042
+                $css .= "</style>";
5043
+            }
5044 5044
 
5045
-			return $css;
5046
-		}
5045
+            return $css;
5046
+        }
5047 5047
 
5048
-		/**
5049
-		 * Encode shortcodes tags.
5050
-		 *
5051
-		 * @param string $content Content to search for shortcode tags.
5052
-		 *
5048
+        /**
5049
+         * Encode shortcodes tags.
5050
+         *
5051
+         * @param string $content Content to search for shortcode tags.
5052
+         *
5053 5053
 *@return string Content with shortcode tags removed.
5054
-		 *@since 1.0.28
5055
-		 *
5056
-		 */
5057
-		public function encode_shortcodes( $content ) {
5058
-			// Avoids existing encoded tags.
5059
-			$trans   = array(
5060
-				'&#91;' => '&#091;',
5061
-				'&#93;' => '&#093;',
5062
-				'&amp;#91;' => '&#091;',
5063
-				'&amp;#93;' => '&#093;',
5064
-				'&lt;' => '&0lt;',
5065
-				'&gt;' => '&0gt;',
5066
-				'&amp;lt;' => '&0lt;',
5067
-				'&amp;gt;' => '&0gt;',
5068
-			);
5069
-
5070
-			$content = strtr( $content, $trans );
5071
-
5072
-			$trans   = array(
5073
-				'[' => '&#91;',
5074
-				']' => '&#93;',
5075
-				'<' => '&lt;',
5076
-				'>' => '&gt;',
5077
-				'"' => '&quot;',
5078
-				"'" => '&#39;',
5079
-			);
5080
-
5081
-			$content = strtr( $content, $trans );
5082
-
5083
-			return $content;
5084
-		}
5054
+         *@since 1.0.28
5055
+         *
5056
+         */
5057
+        public function encode_shortcodes( $content ) {
5058
+            // Avoids existing encoded tags.
5059
+            $trans   = array(
5060
+                '&#91;' => '&#091;',
5061
+                '&#93;' => '&#093;',
5062
+                '&amp;#91;' => '&#091;',
5063
+                '&amp;#93;' => '&#093;',
5064
+                '&lt;' => '&0lt;',
5065
+                '&gt;' => '&0gt;',
5066
+                '&amp;lt;' => '&0lt;',
5067
+                '&amp;gt;' => '&0gt;',
5068
+            );
5069
+
5070
+            $content = strtr( $content, $trans );
5071
+
5072
+            $trans   = array(
5073
+                '[' => '&#91;',
5074
+                ']' => '&#93;',
5075
+                '<' => '&lt;',
5076
+                '>' => '&gt;',
5077
+                '"' => '&quot;',
5078
+                "'" => '&#39;',
5079
+            );
5080
+
5081
+            $content = strtr( $content, $trans );
5082
+
5083
+            return $content;
5084
+        }
5085 5085
 
5086
-		/**
5087
-		 * Remove encoded shortcod tags.
5088
-		 *
5089
-		 * @param string $content Content to search for shortcode tags.
5090
-		 *
5086
+        /**
5087
+         * Remove encoded shortcod tags.
5088
+         *
5089
+         * @param string $content Content to search for shortcode tags.
5090
+         *
5091 5091
 *@return string Content with decoded shortcode tags.
5092
-		 *@since 1.0.28
5093
-		 *
5094
-		 */
5095
-		public function decode_shortcodes( $content ) {
5096
-			$trans   = array(
5097
-				'&#91;' => '[',
5098
-				'&#93;' => ']',
5099
-				'&amp;#91;' => '[',
5100
-				'&amp;#93;' => ']',
5101
-				'&lt;' => '<',
5102
-				'&gt;' => '>',
5103
-				'&amp;lt;' => '<',
5104
-				'&amp;gt;' => '>',
5105
-				'&quot;' => '"',
5106
-				'&apos;' => "'",
5107
-			);
5108
-
5109
-			$content = strtr( $content, $trans );
5110
-
5111
-			$trans   = array(
5112
-				'&#091;' => '&#91;',
5113
-				'&#093;' => '&#93;',
5114
-				'&amp;#091;' => '&#91;',
5115
-				'&amp;#093;' => '&#93;',
5116
-				'&0lt;' => '&lt;',
5117
-				'&0gt;' => '&gt;',
5118
-				'&amp;0lt;' => '&lt;',
5119
-				'&amp;0gt;' => '&gt;',
5120
-			);
5121
-
5122
-			$content = strtr( $content, $trans );
5123
-
5124
-			return $content;
5125
-		}
5126
-
5127
-		public function block_visibility_fields( $args ) {
5128
-			$value = ! empty( $args['value'] ) ? esc_attr( $args['value'] ) : '';
5129
-			$content = '<div class="bs-vc-rule-template d-none">';
5130
-				$content .= '<div class="p-3 pb-0 mb-3 border border-1 rounded-1 position-relative bs-vc-rule" data-bs-index="BSVCINDEX" >';
5131
-					$content .= '<div class="row">';
5132
-						$content .= '<div class="col-sm-12">';
5133
-							$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>';
5134
-							$content .= aui()->select(
5135
-								array(
5136
-									'id'          => 'bsvc_rule_BSVCINDEX',
5137
-									'name'        => 'bsvc_rule_BSVCINDEX',
5138
-									'label'       => __( 'Rule', 'ayecode-connect' ),
5139
-									'placeholder' => __( 'Select Rule...', 'ayecode-connect' ),
5140
-									'class'       => 'bsvc_rule form-select-sm no-select2 mw-100',
5141
-									'options'     => sd_visibility_rules_options(),
5142
-									'default'     => '',
5143
-									'value'       => '',
5144
-									'label_type'  => '',
5145
-									'select2'     => false,
5146
-									'input_group_left' => __( 'Rule:', 'ayecode-connect' ),
5147
-									'extra_attributes' => array(
5148
-										'data-minimum-results-for-search' => '-1'
5149
-									)
5150
-								)
5151
-							);
5152
-
5153
-						$content .= '</div>';
5154
-
5155
-						if ( class_exists( 'GeoDirectory' ) ) {
5156
-							$content .= '<div class="col-md-7 col-sm-12">';
5157
-
5158
-								$content .= aui()->select(
5159
-									array(
5160
-										'id'          => 'bsvc_gd_field_BSVCINDEX',
5161
-										'name'        => 'bsvc_gd_field_BSVCINDEX',
5162
-										'label'       => __( 'FIELD', 'ayecode-connect' ),
5163
-										'placeholder' => __( 'FIELD', 'ayecode-connect' ),
5164
-										'class'       => 'bsvc_gd_field form-select-sm no-select2 mw-100',
5165
-										'options'     => sd_visibility_gd_field_options(),
5166
-										'default'     => '',
5167
-										'value'       => '',
5168
-										'label_type'  => '',
5169
-										'select2'     => false,
5170
-										'element_require'  => '[%bsvc_rule_BSVCINDEX%]=="gd_field"',
5171
-										'extra_attributes' => array(
5172
-											'data-minimum-results-for-search' => '-1'
5173
-										)
5174
-									)
5175
-								);
5176
-
5177
-							$content .= '</div>';
5178
-							$content .= '<div class="col-md-5 col-sm-12">';
5179
-
5180
-								$content .= aui()->select(
5181
-									array(
5182
-										'id'          => 'bsvc_gd_field_condition_BSVCINDEX',
5183
-										'name'        => 'bsvc_gd_field_condition_BSVCINDEX',
5184
-										'label'       => __( 'CONDITION', 'ayecode-connect' ),
5185
-										'placeholder' => __( 'CONDITION', 'ayecode-connect' ),
5186
-										'class'       => 'bsvc_gd_field_condition form-select-sm no-select2 mw-100',
5187
-										'options'     => sd_visibility_field_condition_options(),
5188
-										'default'     => '',
5189
-										'value'       => '',
5190
-										'label_type'  => '',
5191
-										'select2'     => false,
5192
-										'element_require'  => '[%bsvc_rule_BSVCINDEX%]=="gd_field"',
5193
-										'extra_attributes' => array(
5194
-											'data-minimum-results-for-search' => '-1'
5195
-										)
5196
-									)
5197
-								);
5198
-
5199
-							$content .= '</div>';
5200
-							$content .= '<div class="col-sm-12">';
5201
-
5202
-								$content .= aui()->input(
5203
-									array(
5204
-										'type'            => 'text',
5205
-										'id'              => 'bsvc_gd_field_search_BSVCINDEX',
5206
-										'name'            => 'bsvc_gd_field_search_BSVCINDEX',
5207
-										'label'           => __( 'VALUE TO MATCH', 'ayecode-connect' ),
5208
-										'class'           => 'bsvc_gd_field_search form-control-sm',
5209
-										'placeholder'     => __( 'VALUE TO MATCH', 'ayecode-connect' ),
5210
-										'label_type'      => '',
5211
-										'value'           => '',
5212
-										'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")'
5213
-									)
5214
-								);
5092
+         *@since 1.0.28
5093
+         *
5094
+         */
5095
+        public function decode_shortcodes( $content ) {
5096
+            $trans   = array(
5097
+                '&#91;' => '[',
5098
+                '&#93;' => ']',
5099
+                '&amp;#91;' => '[',
5100
+                '&amp;#93;' => ']',
5101
+                '&lt;' => '<',
5102
+                '&gt;' => '>',
5103
+                '&amp;lt;' => '<',
5104
+                '&amp;gt;' => '>',
5105
+                '&quot;' => '"',
5106
+                '&apos;' => "'",
5107
+            );
5108
+
5109
+            $content = strtr( $content, $trans );
5110
+
5111
+            $trans   = array(
5112
+                '&#091;' => '&#91;',
5113
+                '&#093;' => '&#93;',
5114
+                '&amp;#091;' => '&#91;',
5115
+                '&amp;#093;' => '&#93;',
5116
+                '&0lt;' => '&lt;',
5117
+                '&0gt;' => '&gt;',
5118
+                '&amp;0lt;' => '&lt;',
5119
+                '&amp;0gt;' => '&gt;',
5120
+            );
5121
+
5122
+            $content = strtr( $content, $trans );
5123
+
5124
+            return $content;
5125
+        }
5215 5126
 
5216
-							$content .= '</div>';
5217
-						}
5127
+        public function block_visibility_fields( $args ) {
5128
+            $value = ! empty( $args['value'] ) ? esc_attr( $args['value'] ) : '';
5129
+            $content = '<div class="bs-vc-rule-template d-none">';
5130
+                $content .= '<div class="p-3 pb-0 mb-3 border border-1 rounded-1 position-relative bs-vc-rule" data-bs-index="BSVCINDEX" >';
5131
+                    $content .= '<div class="row">';
5132
+                        $content .= '<div class="col-sm-12">';
5133
+                            $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>';
5134
+                            $content .= aui()->select(
5135
+                                array(
5136
+                                    'id'          => 'bsvc_rule_BSVCINDEX',
5137
+                                    'name'        => 'bsvc_rule_BSVCINDEX',
5138
+                                    'label'       => __( 'Rule', 'ayecode-connect' ),
5139
+                                    'placeholder' => __( 'Select Rule...', 'ayecode-connect' ),
5140
+                                    'class'       => 'bsvc_rule form-select-sm no-select2 mw-100',
5141
+                                    'options'     => sd_visibility_rules_options(),
5142
+                                    'default'     => '',
5143
+                                    'value'       => '',
5144
+                                    'label_type'  => '',
5145
+                                    'select2'     => false,
5146
+                                    'input_group_left' => __( 'Rule:', 'ayecode-connect' ),
5147
+                                    'extra_attributes' => array(
5148
+                                        'data-minimum-results-for-search' => '-1'
5149
+                                    )
5150
+                                )
5151
+                            );
5152
+
5153
+                        $content .= '</div>';
5154
+
5155
+                        if ( class_exists( 'GeoDirectory' ) ) {
5156
+                            $content .= '<div class="col-md-7 col-sm-12">';
5157
+
5158
+                                $content .= aui()->select(
5159
+                                    array(
5160
+                                        'id'          => 'bsvc_gd_field_BSVCINDEX',
5161
+                                        'name'        => 'bsvc_gd_field_BSVCINDEX',
5162
+                                        'label'       => __( 'FIELD', 'ayecode-connect' ),
5163
+                                        'placeholder' => __( 'FIELD', 'ayecode-connect' ),
5164
+                                        'class'       => 'bsvc_gd_field form-select-sm no-select2 mw-100',
5165
+                                        'options'     => sd_visibility_gd_field_options(),
5166
+                                        'default'     => '',
5167
+                                        'value'       => '',
5168
+                                        'label_type'  => '',
5169
+                                        'select2'     => false,
5170
+                                        'element_require'  => '[%bsvc_rule_BSVCINDEX%]=="gd_field"',
5171
+                                        'extra_attributes' => array(
5172
+                                            'data-minimum-results-for-search' => '-1'
5173
+                                        )
5174
+                                    )
5175
+                                );
5176
+
5177
+                            $content .= '</div>';
5178
+                            $content .= '<div class="col-md-5 col-sm-12">';
5179
+
5180
+                                $content .= aui()->select(
5181
+                                    array(
5182
+                                        'id'          => 'bsvc_gd_field_condition_BSVCINDEX',
5183
+                                        'name'        => 'bsvc_gd_field_condition_BSVCINDEX',
5184
+                                        'label'       => __( 'CONDITION', 'ayecode-connect' ),
5185
+                                        'placeholder' => __( 'CONDITION', 'ayecode-connect' ),
5186
+                                        'class'       => 'bsvc_gd_field_condition form-select-sm no-select2 mw-100',
5187
+                                        'options'     => sd_visibility_field_condition_options(),
5188
+                                        'default'     => '',
5189
+                                        'value'       => '',
5190
+                                        'label_type'  => '',
5191
+                                        'select2'     => false,
5192
+                                        'element_require'  => '[%bsvc_rule_BSVCINDEX%]=="gd_field"',
5193
+                                        'extra_attributes' => array(
5194
+                                            'data-minimum-results-for-search' => '-1'
5195
+                                        )
5196
+                                    )
5197
+                                );
5198
+
5199
+                            $content .= '</div>';
5200
+                            $content .= '<div class="col-sm-12">';
5201
+
5202
+                                $content .= aui()->input(
5203
+                                    array(
5204
+                                        'type'            => 'text',
5205
+                                        'id'              => 'bsvc_gd_field_search_BSVCINDEX',
5206
+                                        'name'            => 'bsvc_gd_field_search_BSVCINDEX',
5207
+                                        'label'           => __( 'VALUE TO MATCH', 'ayecode-connect' ),
5208
+                                        'class'           => 'bsvc_gd_field_search form-control-sm',
5209
+                                        'placeholder'     => __( 'VALUE TO MATCH', 'ayecode-connect' ),
5210
+                                        'label_type'      => '',
5211
+                                        'value'           => '',
5212
+                                        '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")'
5213
+                                    )
5214
+                                );
5215
+
5216
+                            $content .= '</div>';
5217
+                        }
5218 5218
 
5219 5219
                         $content .= apply_filters( 'sd_block_visibility_fields', '', $args );
5220 5220
 
5221
-					$content .= '</div>';
5222
-
5223
-					$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>';
5224
-						$role_options = sd_user_roles_options();
5225
-
5226
-						$role_option_i = 0;
5227
-						foreach ( $role_options as $role_option_key => $role_option_name ) {
5228
-							$role_option_i++;
5229
-
5230
-							$content .= '<div class="col-sm-6">';
5231
-							$content .= aui()->input(
5232
-								array(
5233
-									'id'               => 'bsvc_user_roles_BSVCINDEX_' . $role_option_i,
5234
-									'name'             => 'bsvc_user_roles_BSVCINDEX[]',
5235
-									'type'             => 'checkbox',
5236
-									'label'            => $role_option_name,
5237
-									'label_type'       => 'hidden',
5238
-									'class'            => 'bsvc_user_roles',
5239
-									'value'            => $role_option_key,
5240
-									'switch'           => 'md',
5241
-									'no_wrap'          => true
5242
-								)
5243
-							);
5244
-							$content .= '</div>';
5245
-						}
5246
-					$content .= '</div>';
5247
-					$content .= '<div class="bs-vc-sep-wrap text-center position-absolute top-0 mt-n3"><div class="bs-vc-sep-cond d-inline-block badge text-dark bg-gray mt-1">' . esc_html__( 'AND', 'ayecode-connect' ) . '</div></div>';
5248
-				$content .= '</div>';
5249
-			$content .= '</div>';
5250
-			$content .= '<form id="bs-vc-modal-form" class="bs-vc-modal-form">';
5251
-			$content .= '<div class="bs-vc-rule-sets"></div>';
5252
-			$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>';
5253
-			$content .= '<div class="row"><div class="col-md-6 col-sm-12">';
5254
-			$content .= aui()->select(
5255
-				array(
5256
-					'id'          => 'bsvc_output',
5257
-					'name'        => 'bsvc_output',
5258
-					'label'       => __( 'What should happen if rules met.', 'ayecode-connect' ),
5259
-					'placeholder' => __( 'Show Block', 'ayecode-connect' ),
5260
-					'class'       => 'bsvc_output form-select-sm no-select2 mw-100',
5261
-					'options'     => sd_visibility_output_options(),
5262
-					'default'     => '',
5263
-					'value'       => '',
5264
-					'label_type'  => 'top',
5265
-					'select2'     => false,
5266
-					'extra_attributes' => array(
5267
-						'data-minimum-results-for-search' => '-1'
5268
-					)
5269
-				)
5270
-			);
5271
-
5272
-			$content .= '</div><div class="col-md-6 col-sm-12">';
5273
-
5274
-			$content .= aui()->select(
5275
-				array(
5276
-					'id'              => 'bsvc_page',
5277
-					'name'            => 'bsvc_page',
5278
-					'label'           => __( 'Page Content', 'ayecode-connect' ),
5279
-					'placeholder'     => __( 'Select Page ID...', 'ayecode-connect' ),
5280
-					'class'           => 'bsvc_page form-select-sm no-select2 mw-100',
5281
-					'options'         => sd_template_page_options(),
5282
-					'default'         => '',
5283
-					'value'           => '',
5284
-					'label_type'      => 'top',
5285
-					'select2'         => false,
5286
-					'element_require' => '[%bsvc_output%]=="page"'
5287
-				)
5288
-			);
5289
-
5290
-			$content .= aui()->select(
5291
-				array(
5292
-					'id'          => 'bsvc_tmpl_part',
5293
-					'name'        => 'bsvc_tmpl_part',
5294
-					'label'       => __( 'Template Part', 'ayecode-connect' ),
5295
-					'placeholder' => __( 'Select Template Part...', 'ayecode-connect' ),
5296
-					'class'       => 'bsvc_tmpl_part form-select-sm no-select2 mw-100',
5297
-					'options'     => sd_template_part_options(),
5298
-					'default'     => '',
5299
-					'value'       => '',
5300
-					'label_type'  => 'top',
5301
-					'select2'     => false,
5302
-					'element_require'  => '[%bsvc_output%]=="template_part"',
5303
-					'extra_attributes' => array(
5304
-						'data-minimum-results-for-search' => '-1'
5305
-					)
5306
-				)
5307
-			);
5308
-
5309
-			$content .= aui()->select(
5310
-				array(
5311
-					'id'               => 'bsvc_message_type',
5312
-					'name'             => 'bsvc_message_type',
5313
-					'label'            => __( 'Custom Message Type', 'ayecode-connect' ),
5314
-					'placeholder'      => __( 'Default (none)', 'ayecode-connect' ),
5315
-					'class'            => 'bsvc_message_type form-select-sm no-select2 mw-100',
5316
-					'options'          => sd_aui_colors(),
5317
-					'default'          => '',
5318
-					'value'            => '',
5319
-					'label_type'       => 'top',
5320
-					'select2'          => false,
5321
-					'element_require'  => '[%bsvc_output%]=="message"',
5322
-					'extra_attributes' => array(
5323
-						'data-minimum-results-for-search' => '-1'
5324
-					)
5325
-				)
5326
-			);
5327
-
5328
-			$content .= '</div><div class="col-sm-12">';
5329
-
5330
-			$content .= aui()->input(
5331
-				array(
5332
-					'type'            => 'text',
5333
-					'id'              => 'bsvc_message',
5334
-					'name'            => 'bsvc_message',
5335
-					'label'           => '',
5336
-					'class'           => 'bsvc_message form-control-sm mb-3',
5337
-					'placeholder'     => __( 'CUSTOM MESSAGE TO SHOW', 'ayecode-connect' ),
5338
-					'label_type'      => '',
5339
-					'value'           => '',
5340
-					'form_group_class' => ' ',
5341
-					'element_require' => '[%bsvc_output%]=="message"',
5342
-				)
5343
-			);
5344
-
5345
-			$content .= '</div></div><div class="row"><div class="col col-12"><div class="pt-3 mt-1 border-top"></div></div><div class="col-md-6 col-sm-12">';
5346
-			$content .= aui()->select(
5347
-				array(
5348
-					'id'          => 'bsvc_output_n',
5349
-					'name'        => 'bsvc_output_n',
5350
-					'label'       => __( 'What should happen if rules NOT met.', 'ayecode-connect' ),
5351
-					'placeholder' => __( 'Show Block', 'ayecode-connect' ),
5352
-					'class'       => 'bsvc_output_n form-select-sm no-select2 mw-100',
5353
-					'options'     => sd_visibility_output_options(),
5354
-					'default'     => '',
5355
-					'value'       => '',
5356
-					'label_type'  => 'top',
5357
-					'select2'     => false,
5358
-					'extra_attributes' => array(
5359
-						'data-minimum-results-for-search' => '-1'
5360
-					)
5361
-				)
5362
-			);
5363
-
5364
-			$content .= '</div><div class="col-md-6 col-sm-12">';
5365
-
5366
-			$content .= aui()->select(
5367
-				array(
5368
-					'id'              => 'bsvc_page_n',
5369
-					'name'            => 'bsvc_page_n',
5370
-					'label'           => __( 'Page Content', 'ayecode-connect' ),
5371
-					'placeholder'     => __( 'Select Page ID...', 'ayecode-connect' ),
5372
-					'class'           => 'bsvc_page_n form-select-sm no-select2 mw-100',
5373
-					'options'         => sd_template_page_options(),
5374
-					'default'         => '',
5375
-					'value'           => '',
5376
-					'label_type'      => 'top',
5377
-					'select2'         => false,
5378
-					'element_require' => '[%bsvc_output_n%]=="page"'
5379
-				)
5380
-			);
5381
-
5382
-			$content .= aui()->select(
5383
-				array(
5384
-					'id'          => 'bsvc_tmpl_part_n',
5385
-					'name'        => 'bsvc_tmpl_part_n',
5386
-					'label'       => __( 'Template Part', 'ayecode-connect' ),
5387
-					'placeholder' => __( 'Select Template Part...', 'ayecode-connect' ),
5388
-					'class'       => 'bsvc_tmpl_part_n form-select-sm no-select2 mw-100',
5389
-					'options'     => sd_template_part_options(),
5390
-					'default'     => '',
5391
-					'value'       => '',
5392
-					'label_type'  => 'top',
5393
-					'select2'     => false,
5394
-					'element_require'  => '[%bsvc_output_n%]=="template_part"',
5395
-					'extra_attributes' => array(
5396
-						'data-minimum-results-for-search' => '-1'
5397
-					)
5398
-				)
5399
-			);
5400
-
5401
-			$content .= aui()->select(
5402
-				array(
5403
-					'id'               => 'bsvc_message_type_n',
5404
-					'name'             => 'bsvc_message_type_n',
5405
-					'label'            => __( 'Custom Message Type', 'ayecode-connect' ),
5406
-					'placeholder'      => __( 'Default (none)', 'ayecode-connect' ),
5407
-					'class'            => 'bsvc_message_type_n form-select-sm no-select2 mw-100',
5408
-					'options'          => sd_aui_colors(),
5409
-					'default'          => '',
5410
-					'value'            => '',
5411
-					'label_type'       => 'top',
5412
-					'select2'          => false,
5413
-					'element_require'  => '[%bsvc_output_n%]=="message"',
5414
-					'extra_attributes' => array(
5415
-						'data-minimum-results-for-search' => '-1'
5416
-					)
5417
-				)
5418
-			);
5419
-
5420
-			$content .= '</div><div class="col-sm-12">';
5421
-
5422
-			$content .= aui()->input(
5423
-				array(
5424
-					'type'            => 'text',
5425
-					'id'              => 'bsvc_message_n',
5426
-					'name'            => 'bsvc_message_n',
5427
-					'label'           => '',
5428
-					'class'           => 'bsvc_message_n form-control-sm',
5429
-					'placeholder'     => __( 'CUSTOM MESSAGE TO SHOW', 'ayecode-connect' ),
5430
-					'label_type'      => '',
5431
-					'value'           => '',
5432
-					'form_group_class' => ' ',
5433
-					'element_require' => '[%bsvc_output_n%]=="message"',
5434
-				)
5435
-			);
5436
-
5437
-			$content .= '</div></div></form><input type="hidden" id="bsvc_raw_value" name="bsvc_raw_value" value="' . $value . '">';
5438
-
5439
-			return $content;
5440
-		}
5221
+                    $content .= '</div>';
5222
+
5223
+                    $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>';
5224
+                        $role_options = sd_user_roles_options();
5225
+
5226
+                        $role_option_i = 0;
5227
+                        foreach ( $role_options as $role_option_key => $role_option_name ) {
5228
+                            $role_option_i++;
5229
+
5230
+                            $content .= '<div class="col-sm-6">';
5231
+                            $content .= aui()->input(
5232
+                                array(
5233
+                                    'id'               => 'bsvc_user_roles_BSVCINDEX_' . $role_option_i,
5234
+                                    'name'             => 'bsvc_user_roles_BSVCINDEX[]',
5235
+                                    'type'             => 'checkbox',
5236
+                                    'label'            => $role_option_name,
5237
+                                    'label_type'       => 'hidden',
5238
+                                    'class'            => 'bsvc_user_roles',
5239
+                                    'value'            => $role_option_key,
5240
+                                    'switch'           => 'md',
5241
+                                    'no_wrap'          => true
5242
+                                )
5243
+                            );
5244
+                            $content .= '</div>';
5245
+                        }
5246
+                    $content .= '</div>';
5247
+                    $content .= '<div class="bs-vc-sep-wrap text-center position-absolute top-0 mt-n3"><div class="bs-vc-sep-cond d-inline-block badge text-dark bg-gray mt-1">' . esc_html__( 'AND', 'ayecode-connect' ) . '</div></div>';
5248
+                $content .= '</div>';
5249
+            $content .= '</div>';
5250
+            $content .= '<form id="bs-vc-modal-form" class="bs-vc-modal-form">';
5251
+            $content .= '<div class="bs-vc-rule-sets"></div>';
5252
+            $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>';
5253
+            $content .= '<div class="row"><div class="col-md-6 col-sm-12">';
5254
+            $content .= aui()->select(
5255
+                array(
5256
+                    'id'          => 'bsvc_output',
5257
+                    'name'        => 'bsvc_output',
5258
+                    'label'       => __( 'What should happen if rules met.', 'ayecode-connect' ),
5259
+                    'placeholder' => __( 'Show Block', 'ayecode-connect' ),
5260
+                    'class'       => 'bsvc_output form-select-sm no-select2 mw-100',
5261
+                    'options'     => sd_visibility_output_options(),
5262
+                    'default'     => '',
5263
+                    'value'       => '',
5264
+                    'label_type'  => 'top',
5265
+                    'select2'     => false,
5266
+                    'extra_attributes' => array(
5267
+                        'data-minimum-results-for-search' => '-1'
5268
+                    )
5269
+                )
5270
+            );
5271
+
5272
+            $content .= '</div><div class="col-md-6 col-sm-12">';
5273
+
5274
+            $content .= aui()->select(
5275
+                array(
5276
+                    'id'              => 'bsvc_page',
5277
+                    'name'            => 'bsvc_page',
5278
+                    'label'           => __( 'Page Content', 'ayecode-connect' ),
5279
+                    'placeholder'     => __( 'Select Page ID...', 'ayecode-connect' ),
5280
+                    'class'           => 'bsvc_page form-select-sm no-select2 mw-100',
5281
+                    'options'         => sd_template_page_options(),
5282
+                    'default'         => '',
5283
+                    'value'           => '',
5284
+                    'label_type'      => 'top',
5285
+                    'select2'         => false,
5286
+                    'element_require' => '[%bsvc_output%]=="page"'
5287
+                )
5288
+            );
5289
+
5290
+            $content .= aui()->select(
5291
+                array(
5292
+                    'id'          => 'bsvc_tmpl_part',
5293
+                    'name'        => 'bsvc_tmpl_part',
5294
+                    'label'       => __( 'Template Part', 'ayecode-connect' ),
5295
+                    'placeholder' => __( 'Select Template Part...', 'ayecode-connect' ),
5296
+                    'class'       => 'bsvc_tmpl_part form-select-sm no-select2 mw-100',
5297
+                    'options'     => sd_template_part_options(),
5298
+                    'default'     => '',
5299
+                    'value'       => '',
5300
+                    'label_type'  => 'top',
5301
+                    'select2'     => false,
5302
+                    'element_require'  => '[%bsvc_output%]=="template_part"',
5303
+                    'extra_attributes' => array(
5304
+                        'data-minimum-results-for-search' => '-1'
5305
+                    )
5306
+                )
5307
+            );
5308
+
5309
+            $content .= aui()->select(
5310
+                array(
5311
+                    'id'               => 'bsvc_message_type',
5312
+                    'name'             => 'bsvc_message_type',
5313
+                    'label'            => __( 'Custom Message Type', 'ayecode-connect' ),
5314
+                    'placeholder'      => __( 'Default (none)', 'ayecode-connect' ),
5315
+                    'class'            => 'bsvc_message_type form-select-sm no-select2 mw-100',
5316
+                    'options'          => sd_aui_colors(),
5317
+                    'default'          => '',
5318
+                    'value'            => '',
5319
+                    'label_type'       => 'top',
5320
+                    'select2'          => false,
5321
+                    'element_require'  => '[%bsvc_output%]=="message"',
5322
+                    'extra_attributes' => array(
5323
+                        'data-minimum-results-for-search' => '-1'
5324
+                    )
5325
+                )
5326
+            );
5327
+
5328
+            $content .= '</div><div class="col-sm-12">';
5329
+
5330
+            $content .= aui()->input(
5331
+                array(
5332
+                    'type'            => 'text',
5333
+                    'id'              => 'bsvc_message',
5334
+                    'name'            => 'bsvc_message',
5335
+                    'label'           => '',
5336
+                    'class'           => 'bsvc_message form-control-sm mb-3',
5337
+                    'placeholder'     => __( 'CUSTOM MESSAGE TO SHOW', 'ayecode-connect' ),
5338
+                    'label_type'      => '',
5339
+                    'value'           => '',
5340
+                    'form_group_class' => ' ',
5341
+                    'element_require' => '[%bsvc_output%]=="message"',
5342
+                )
5343
+            );
5344
+
5345
+            $content .= '</div></div><div class="row"><div class="col col-12"><div class="pt-3 mt-1 border-top"></div></div><div class="col-md-6 col-sm-12">';
5346
+            $content .= aui()->select(
5347
+                array(
5348
+                    'id'          => 'bsvc_output_n',
5349
+                    'name'        => 'bsvc_output_n',
5350
+                    'label'       => __( 'What should happen if rules NOT met.', 'ayecode-connect' ),
5351
+                    'placeholder' => __( 'Show Block', 'ayecode-connect' ),
5352
+                    'class'       => 'bsvc_output_n form-select-sm no-select2 mw-100',
5353
+                    'options'     => sd_visibility_output_options(),
5354
+                    'default'     => '',
5355
+                    'value'       => '',
5356
+                    'label_type'  => 'top',
5357
+                    'select2'     => false,
5358
+                    'extra_attributes' => array(
5359
+                        'data-minimum-results-for-search' => '-1'
5360
+                    )
5361
+                )
5362
+            );
5363
+
5364
+            $content .= '</div><div class="col-md-6 col-sm-12">';
5365
+
5366
+            $content .= aui()->select(
5367
+                array(
5368
+                    'id'              => 'bsvc_page_n',
5369
+                    'name'            => 'bsvc_page_n',
5370
+                    'label'           => __( 'Page Content', 'ayecode-connect' ),
5371
+                    'placeholder'     => __( 'Select Page ID...', 'ayecode-connect' ),
5372
+                    'class'           => 'bsvc_page_n form-select-sm no-select2 mw-100',
5373
+                    'options'         => sd_template_page_options(),
5374
+                    'default'         => '',
5375
+                    'value'           => '',
5376
+                    'label_type'      => 'top',
5377
+                    'select2'         => false,
5378
+                    'element_require' => '[%bsvc_output_n%]=="page"'
5379
+                )
5380
+            );
5381
+
5382
+            $content .= aui()->select(
5383
+                array(
5384
+                    'id'          => 'bsvc_tmpl_part_n',
5385
+                    'name'        => 'bsvc_tmpl_part_n',
5386
+                    'label'       => __( 'Template Part', 'ayecode-connect' ),
5387
+                    'placeholder' => __( 'Select Template Part...', 'ayecode-connect' ),
5388
+                    'class'       => 'bsvc_tmpl_part_n form-select-sm no-select2 mw-100',
5389
+                    'options'     => sd_template_part_options(),
5390
+                    'default'     => '',
5391
+                    'value'       => '',
5392
+                    'label_type'  => 'top',
5393
+                    'select2'     => false,
5394
+                    'element_require'  => '[%bsvc_output_n%]=="template_part"',
5395
+                    'extra_attributes' => array(
5396
+                        'data-minimum-results-for-search' => '-1'
5397
+                    )
5398
+                )
5399
+            );
5400
+
5401
+            $content .= aui()->select(
5402
+                array(
5403
+                    'id'               => 'bsvc_message_type_n',
5404
+                    'name'             => 'bsvc_message_type_n',
5405
+                    'label'            => __( 'Custom Message Type', 'ayecode-connect' ),
5406
+                    'placeholder'      => __( 'Default (none)', 'ayecode-connect' ),
5407
+                    'class'            => 'bsvc_message_type_n form-select-sm no-select2 mw-100',
5408
+                    'options'          => sd_aui_colors(),
5409
+                    'default'          => '',
5410
+                    'value'            => '',
5411
+                    'label_type'       => 'top',
5412
+                    'select2'          => false,
5413
+                    'element_require'  => '[%bsvc_output_n%]=="message"',
5414
+                    'extra_attributes' => array(
5415
+                        'data-minimum-results-for-search' => '-1'
5416
+                    )
5417
+                )
5418
+            );
5419
+
5420
+            $content .= '</div><div class="col-sm-12">';
5421
+
5422
+            $content .= aui()->input(
5423
+                array(
5424
+                    'type'            => 'text',
5425
+                    'id'              => 'bsvc_message_n',
5426
+                    'name'            => 'bsvc_message_n',
5427
+                    'label'           => '',
5428
+                    'class'           => 'bsvc_message_n form-control-sm',
5429
+                    'placeholder'     => __( 'CUSTOM MESSAGE TO SHOW', 'ayecode-connect' ),
5430
+                    'label_type'      => '',
5431
+                    'value'           => '',
5432
+                    'form_group_class' => ' ',
5433
+                    'element_require' => '[%bsvc_output_n%]=="message"',
5434
+                )
5435
+            );
5436
+
5437
+            $content .= '</div></div></form><input type="hidden" id="bsvc_raw_value" name="bsvc_raw_value" value="' . $value . '">';
5438
+
5439
+            return $content;
5440
+        }
5441 5441
 
5442
-		/**
5443
-		 * Handle media_buttons hook.
5444
-		 *
5445
-		 * @since 1.2.7
5446
-		 */
5447
-		public function wp_media_buttons() {
5448
-			global $shortcode_insert_button_once;
5449
-
5450
-			// Fix conflicts with UpSolution Core in header template edit element.
5451
-			if ( defined( 'US_CORE_DIR' ) && ! empty( $_REQUEST['action'] ) && $_REQUEST['action'] == 'us_ajax_hb_get_ebuilder_html' ) {
5452
-				$shortcode_insert_button_once = true;
5453
-			}
5454
-		}
5455
-	}
5442
+        /**
5443
+         * Handle media_buttons hook.
5444
+         *
5445
+         * @since 1.2.7
5446
+         */
5447
+        public function wp_media_buttons() {
5448
+            global $shortcode_insert_button_once;
5449
+
5450
+            // Fix conflicts with UpSolution Core in header template edit element.
5451
+            if ( defined( 'US_CORE_DIR' ) && ! empty( $_REQUEST['action'] ) && $_REQUEST['action'] == 'us_ajax_hb_get_ebuilder_html' ) {
5452
+                $shortcode_insert_button_once = true;
5453
+            }
5454
+        }
5455
+    }
5456 5456
 }
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.25' );
26
+    define( 'WPINV_VERSION', '2.8.25' );
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.
includes/admin/class-wpinv-subscriptions-list-table.php 1 patch
Indentation   +475 added lines, -475 removed lines patch added patch discarded remove patch
@@ -8,7 +8,7 @@  discard block
 block discarded – undo
8 8
 }
9 9
 
10 10
 if ( ! class_exists( 'WP_List_Table' ) ) {
11
-	include_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
11
+    include_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
12 12
 }
13 13
 
14 14
 /**
@@ -16,479 +16,479 @@  discard block
 block discarded – undo
16 16
  */
17 17
 class WPInv_Subscriptions_List_Table extends WP_List_Table {
18 18
 
19
-	/**
20
-	 * URL of this page
21
-	 *
22
-	 * @var   string
23
-	 * @since 1.0.19
24
-	 */
25
-	public $base_url;
26
-
27
-	/**
28
-	 * Query
29
-	 *
30
-	 * @var   GetPaid_Subscriptions_Query
31
-	 * @since 1.0.19
32
-	 */
33
-	public $query;
34
-
35
-	/**
36
-	 * Total subscriptions
37
-	 *
38
-	 * @var   string
39
-	 * @since 1.0.0
40
-	 */
41
-	public $total_count;
42
-
43
-	/**
44
-	 * Current status subscriptions
45
-	 *
46
-	 * @var   string
47
-	 * @since 1.0.0
48
-	 */
49
-	public $current_total_count;
50
-
51
-	/**
52
-	 * Status counts
53
-	 *
54
-	 * @var   array
55
-	 * @since 1.0.19
56
-	 */
57
-	public $status_counts;
58
-
59
-	/**
60
-	 * Number of results to show per page
61
-	 *
62
-	 * @var   int
63
-	 * @since 1.0.0
64
-	 */
65
-	public $per_page = 10;
66
-
67
-	/**
68
-	 *  Constructor function.
69
-	 */
70
-	public function __construct() {
71
-
72
-		parent::__construct(
73
-			array(
74
-				'singular' => 'subscription',
75
-				'plural'   => 'subscriptions',
76
-			)
77
-		);
78
-
79
-		$this->process_bulk_action();
80
-
81
-		$this->prepare_query();
82
-
83
-		$this->base_url = remove_query_arg( 'status' );
84
-
85
-	}
86
-
87
-	/**
88
-	 *  Prepares the display query
89
-	 */
90
-	public function prepare_query() {
91
-
92
-		// Prepare query args.
93
-		$query = array(
94
-			'number'      => $this->per_page,
95
-			'paged'       => $this->get_paged(),
96
-			'status'      => ( isset( $_GET['status'] ) && array_key_exists( $_GET['status'], getpaid_get_subscription_statuses() ) ) ? sanitize_text_field( $_GET['status'] ) : 'all',
97
-			'orderby'     => ( isset( $_GET['orderby'] ) ) ? sanitize_text_field( $_GET['orderby'] ) : 'id',
98
-			'order'       => ( isset( $_GET['order'] ) ) ? sanitize_text_field( $_GET['order'] ) : 'DESC',
99
-			'customer_in' => $this->get_user_in(),
100
-		);
101
-
102
-		if ( is_array( $query['customer_in'] ) && empty( $query['customer_in'] ) ) {
103
-			$this->total_count         = 0;
104
-			$this->current_total_count = 0;
105
-			$this->items               = array();
106
-			$this->status_counts       = array();
107
-			return;
108
-		}
109
-
110
-		// Prepare class properties.
111
-		$this->query               = new GetPaid_Subscriptions_Query( $query );
112
-		$this->total_count         = $this->query->get_total();
113
-		$this->current_total_count = $this->query->get_total();
114
-		$this->items               = $this->query->get_results();
115
-		$this->status_counts       = getpaid_get_subscription_status_counts( $query );
116
-
117
-		if ( 'all' != $query['status'] ) {
118
-			unset( $query['status'] );
119
-			$this->total_count   = getpaid_get_subscriptions( $query, 'count' );
120
-		}
121
-
122
-	}
123
-
124
-	/**
125
-	 * Get user in.
126
-	 *
127
-	 */
128
-	public function get_user_in() {
129
-
130
-		// Abort if no user.
131
-		if ( empty( $_GET['s'] ) ) {
132
-			return null;
133
-		}
134
-
135
-		// Or invalid user.
136
-		$user = wp_unslash( sanitize_text_field( $_REQUEST['s'] ) );
137
-
138
-		if ( empty( $user ) ) {
139
-			return null;
140
-		}
141
-
142
-		// Search matching users.
143
-		$user  = '*' . $user . '*';
144
-		$users = new WP_User_Query(
145
-			array(
146
-				'fields'      => 'ID',
147
-				'search'      => $user,
148
-				'count_total' => false,
149
-			)
150
-		);
151
-
152
-		return $users->get_results();
153
-	}
154
-
155
-	/**
156
-	 * Gets the list of views available on this table.
157
-	 *
158
-	 * The format is an associative array:
159
-	 * - `'id' => 'link'`
160
-	 *
161
-	 * @since 1.0.0
162
-	 *
163
-	 * @return array
164
-	 */
165
-	public function get_views() {
166
-
167
-		$current  = isset( $_GET['status'] ) ? sanitize_text_field( $_GET['status'] ) : 'all';
168
-		$views    = array(
169
-
170
-			'all' => sprintf(
171
-				'<a href="%s" %s>%s&nbsp;<span class="count">(%d)</span></a>',
172
-				esc_url( add_query_arg( 'status', false, $this->base_url ) ),
173
-				$current === 'all' ? ' class="current"' : '',
174
-				__( 'All', 'invoicing' ),
175
-				$this->total_count
176
-			),
177
-
178
-		);
179
-
180
-		foreach ( array_filter( $this->status_counts ) as $status => $count ) {
181
-
182
-			$views[ $status ] = sprintf(
183
-				'<a href="%s" %s>%s&nbsp;<span class="count">(%d)</span></a>',
184
-				esc_url( add_query_arg( 'status', urlencode( $status ), $this->base_url ) ),
185
-				$current === $status ? ' class="current"' : '',
186
-				esc_html( getpaid_get_subscription_status_label( $status ) ),
187
-				$count
188
-			);
189
-
190
-		}
191
-
192
-		return $views;
193
-
194
-	}
195
-
196
-	/**
197
-	 * Render most columns
198
-	 *
199
-	 * @access      private
200
-	 * @since       1.0.0
201
-	 * @return      string
202
-	 */
203
-	public function column_default( $item, $column_name ) {
204
-		return apply_filters( "getpaid_subscriptions_table_column_$column_name", $item->$column_name );
205
-	}
206
-
207
-	/**
208
-	 * This is how checkbox column renders.
209
-	 *
210
-	 * @param WPInv_Subscription $item
211
-	 * @return string
212
-	 */
213
-	public function column_cb( $item ) {
214
-		return sprintf( '<input type="checkbox" name="id[]" value="%s" />', esc_html( $item->get_id() ) );
215
-	}
216
-
217
-	/**
218
-	 * Status column
219
-	 *
220
-	 * @param WPInv_Subscription $item
221
-	 * @since       1.0.0
222
-	 * @return      string
223
-	 */
224
-	public function column_status( $item ) {
225
-		$extra = $item->has_status( 'expired' ) ? '<small class="text-muted d-block">' . wp_sprintf( _x( 'On: %s', 'Expired On:', 'invoicing' ), getpaid_format_date_value( $item->get_expiration() ) ) . '</small>' : '';
226
-
227
-		return $item->get_status_label_html() . $extra;
228
-	}
229
-
230
-	/**
231
-	 * Subscription column
232
-	 *
233
-	 * @param WPInv_Subscription $item
234
-	 * @since       1.0.0
235
-	 * @return      string
236
-	 */
237
-	public function column_subscription( $item ) {
238
-
239
-		$username = __( '(Missing User)', 'invoicing' );
240
-
241
-		$user = get_userdata( $item->get_customer_id() );
242
-		$capabilities = wpinv_current_user_can_manage_invoicing();
243
-
244
-		if ( $user ) {
245
-			$username = sprintf(
246
-				'<a href="user-edit.php?user_id=%s">%s</a>',
247
-				absint( $user->ID ),
248
-				! empty( $user->display_name ) ? esc_html( $user->display_name ) : sanitize_email( $user->user_email )
249
-			);
250
-		}
251
-
252
-		// translators: $1: is opening link, $2: is subscription id number, $3: is closing link tag, $4: is user's name
253
-		$column_content = sprintf(
254
-			_x( '%1$s#%2$s%3$s for %4$s', 'Subscription title on admin table. (e.g.: #211 for John Doe)', 'invoicing' ),
255
-			'<a href="' . esc_url( admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $item->get_id() ) ) ) . '">',
256
-			'<strong>' . esc_attr( $item->get_id() ) . '</strong>',
257
-			'</a>',
258
-			$username
259
-		);
260
-
261
-		$row_actions = array();
262
-
263
-		// View subscription.
264
-		$view_url    = esc_url( add_query_arg( 'id', $item->get_id(), admin_url( 'admin.php?page=wpinv-subscriptions' ) ) );
265
-		$row_actions['view'] = '<a href="' . $view_url . '">' . __( 'View Subscription', 'invoicing' ) . '</a>';
266
-
267
-		// View invoice.
268
-		$invoice = get_post( $item->get_parent_invoice_id() );
269
-
270
-		if ( ! empty( $invoice ) ) {
271
-			$invoice_url            = get_edit_post_link( $invoice );
272
-			$row_actions['invoice'] = '<a href="' . $invoice_url . '">' . __( 'View Invoice', 'invoicing' ) . '</a>';
273
-		}
274
-
275
-		$delete_url            = esc_url(
276
-			wp_nonce_url(
277
-				add_query_arg(
278
-					array(
279
-						'getpaid-admin-action' => 'subscription_manual_delete',
280
-						'id'                   => $item->get_id(),
281
-					)
282
-				),
283
-				'getpaid-nonce',
284
-				'getpaid-nonce'
285
-			)
286
-		);
287
-		$row_actions['delete'] = '<a class="text-danger" href="' . $delete_url . '">' . __( 'Delete Subscription', 'invoicing' ) . '</a>';
288
-
289
-		if ( ! $capabilities ) {
290
-			$row_actions = array();
291
-		}
292
-
293
-		$row_actions = $this->row_actions( apply_filters( 'getpaid_subscription_table_row_actions', $row_actions, $item ) );
294
-
295
-		return "<strong>$column_content</strong>" . $this->column_amount( $item ) . $row_actions;
296
-	}
297
-
298
-	/**
299
-	 * Renewal date column
300
-	 *
301
-	 * @param WPInv_Subscription $item
302
-	 * @since       1.0.0
303
-	 * @return      string
304
-	 */
305
-	public function column_renewal_date( $item ) {
306
-		if ( $item->has_status( 'active trialling' ) ) {
307
-			$value = getpaid_format_date_value( $item->get_expiration() );
308
-		} else {
309
-			$value = '-';
310
-		}
311
-
312
-		return $value;
313
-	}
314
-
315
-	/**
316
-	 * Start date column
317
-	 *
318
-	 * @param WPInv_Subscription $item
319
-	 * @since       1.0.0
320
-	 * @return      string
321
-	 */
322
-	public function column_start_date( $item ) {
323
-
324
-		$gateway = $item->get_parent_invoice()->get_gateway_title();
325
-
326
-		if ( empty( $gateway ) ) {
327
-			return getpaid_format_date_value( $item->get_date_created() );
328
-		}
329
-
330
-		$url = apply_filters( 'getpaid_remote_subscription_profile_url', '', $item );
331
-		if ( ! empty( $url ) ) {
332
-
333
-			return getpaid_format_date_value( $item->get_date_created() ) . '<br>' . sprintf(
334
-				__( 'Via %s', 'invoicing' ),
335
-				'<strong><a href="' . esc_url( $url ) . '" target="_blank">' . esc_html( $item->get_parent_invoice()->get_gateway_title() ) . '</a></strong>'
336
-			);
337
-
338
-		}
339
-
340
-		return getpaid_format_date_value( $item->get_date_created() ) . '<br>' . sprintf(
341
-			__( 'Via %s', 'invoicing' ),
342
-			'<strong>' . esc_html( $item->get_parent_invoice()->get_gateway_title() ) . '</strong>'
343
-		);
344
-
345
-	}
346
-
347
-	/**
348
-	 * Amount column
349
-	 *
350
-	 * @param WPInv_Subscription $item
351
-	 * @since       1.0.19
352
-	 * @return      string
353
-	 */
354
-	public static function column_amount( $item ) {
355
-		$amount = getpaid_get_formatted_subscription_amount( $item );
356
-		return "<span class='text-muted form-text mt-2 mb-2 ms-1 ml-1'>$amount</span>";
357
-	}
358
-
359
-	/**
360
-	 * Billing Times column
361
-	 *
362
-	 * @param WPInv_Subscription $item
363
-	 * @since       1.0.0
364
-	 * @return      string
365
-	 */
366
-	public function column_renewals( $item ) {
367
-		$max_bills = $item->get_bill_times();
368
-		return $item->get_times_billed() . ' / ' . ( empty( $max_bills ) ? '&infin;' : $max_bills );
369
-	}
370
-
371
-	/**
372
-	 * Product ID column
373
-	 *
374
-	 * @param WPInv_Subscription $item
375
-	 * @since       1.0.0
376
-	 * @return      string
377
-	 */
378
-	public function column_item( $item ) {
379
-		$subscription_group = getpaid_get_invoice_subscription_group( $item->get_parent_invoice_id(), $item->get_id() );
380
-
381
-		if ( empty( $subscription_group ) ) {
382
-			return $this->generate_item_markup( $item->get_product_id() );
383
-		}
384
-
385
-		$markup = array_map( array( $this, 'generate_item_markup' ), array_keys( $subscription_group['items'] ) );
386
-		return implode( ' | ', $markup );
387
-
388
-	}
389
-
390
-	/**
391
-	 * Generates the items markup.
392
-	 *
393
-	 * @param int $item_id
394
-	 * @since       1.0.0
395
-	 * @return      string
396
-	 */
397
-	public static function generate_item_markup( $item_id ) {
398
-		$item = get_post( $item_id );
399
-
400
-		if ( ! empty( $item ) ) {
401
-			$link = get_edit_post_link( $item );
402
-			$name = esc_html( get_the_title( $item ) );
403
-			return wpinv_current_user_can_manage_invoicing() ? "<a href='" . ( $link ? esc_url( $link ) : '#' ) . "'>$name</a>" : $name;
404
-		} else {
405
-			return sprintf( __( 'Item #%s', 'invoicing' ), $item_id );
406
-		}
407
-
408
-	}
409
-
410
-	/**
411
-	 * Retrieve the current page number
412
-	 *
413
-	 * @return      int
414
-	 */
415
-	public function get_paged() {
416
-		return isset( $_GET['paged'] ) ? absint( $_GET['paged'] ) : 1;
417
-	}
418
-
419
-	/**
420
-	 * Setup the final data for the table
421
-	 *
422
-	 */
423
-	public function prepare_items() {
424
-
425
-		$columns  = $this->get_columns();
426
-		$hidden   = array();
427
-		$sortable = $this->get_sortable_columns();
428
-
429
-		$this->_column_headers = array( $columns, $hidden, $sortable );
430
-
431
-		$this->set_pagination_args(
432
-			array(
433
-				'total_items' => $this->current_total_count,
434
-				'per_page'    => $this->per_page,
435
-				'total_pages' => ceil( $this->current_total_count / $this->per_page ),
436
-			)
437
-		);
438
-	}
439
-
440
-	/**
441
-	 * Table columns
442
-	 *
443
-	 * @return array
444
-	 */
445
-	public function get_columns() {
446
-		$columns = array(
447
-			'cb'           => '<input type="checkbox" />',
448
-			'subscription' => __( 'Subscription', 'invoicing' ),
449
-			'start_date'   => __( 'Start Date', 'invoicing' ),
450
-			'renewal_date' => __( 'Next Payment', 'invoicing' ),
451
-			'renewals'     => __( 'Payments', 'invoicing' ),
452
-			'item'         => __( 'Items', 'invoicing' ),
453
-			'status'       => __( 'Status', 'invoicing' ),
454
-		);
455
-
456
-		return apply_filters( 'manage_getpaid_subscriptions_table_columns', $columns );
457
-	}
458
-
459
-	/**
460
-	 * Sortable table columns.
461
-	 *
462
-	 * @return array
463
-	 */
464
-	public function get_sortable_columns() {
465
-		$sortable = array(
466
-			'subscription' => array( 'id', true ),
467
-			'start_date'   => array( 'created', true ),
468
-			'renewal_date' => array( 'expiration', true ),
469
-			'renewals'     => array( 'bill_times', true ),
470
-			'item'         => array( 'product_id', true ),
471
-			'status'       => array( 'status', true ),
472
-		);
473
-
474
-		return apply_filters( 'manage_getpaid_subscriptions_sortable_table_columns', $sortable );
475
-	}
476
-
477
-	/**
478
-	 * Whether the table has items to display or not
479
-	 *
480
-	 * @return bool
481
-	 */
482
-	public function has_items() {
483
-		return ! empty( $this->current_total_count );
484
-	}
485
-
486
-	/**
487
-	 * Processes bulk actions.
488
-	 *
489
-	 */
490
-	public function process_bulk_action() {
491
-
492
-	}
19
+    /**
20
+     * URL of this page
21
+     *
22
+     * @var   string
23
+     * @since 1.0.19
24
+     */
25
+    public $base_url;
26
+
27
+    /**
28
+     * Query
29
+     *
30
+     * @var   GetPaid_Subscriptions_Query
31
+     * @since 1.0.19
32
+     */
33
+    public $query;
34
+
35
+    /**
36
+     * Total subscriptions
37
+     *
38
+     * @var   string
39
+     * @since 1.0.0
40
+     */
41
+    public $total_count;
42
+
43
+    /**
44
+     * Current status subscriptions
45
+     *
46
+     * @var   string
47
+     * @since 1.0.0
48
+     */
49
+    public $current_total_count;
50
+
51
+    /**
52
+     * Status counts
53
+     *
54
+     * @var   array
55
+     * @since 1.0.19
56
+     */
57
+    public $status_counts;
58
+
59
+    /**
60
+     * Number of results to show per page
61
+     *
62
+     * @var   int
63
+     * @since 1.0.0
64
+     */
65
+    public $per_page = 10;
66
+
67
+    /**
68
+     *  Constructor function.
69
+     */
70
+    public function __construct() {
71
+
72
+        parent::__construct(
73
+            array(
74
+                'singular' => 'subscription',
75
+                'plural'   => 'subscriptions',
76
+            )
77
+        );
78
+
79
+        $this->process_bulk_action();
80
+
81
+        $this->prepare_query();
82
+
83
+        $this->base_url = remove_query_arg( 'status' );
84
+
85
+    }
86
+
87
+    /**
88
+     *  Prepares the display query
89
+     */
90
+    public function prepare_query() {
91
+
92
+        // Prepare query args.
93
+        $query = array(
94
+            'number'      => $this->per_page,
95
+            'paged'       => $this->get_paged(),
96
+            'status'      => ( isset( $_GET['status'] ) && array_key_exists( $_GET['status'], getpaid_get_subscription_statuses() ) ) ? sanitize_text_field( $_GET['status'] ) : 'all',
97
+            'orderby'     => ( isset( $_GET['orderby'] ) ) ? sanitize_text_field( $_GET['orderby'] ) : 'id',
98
+            'order'       => ( isset( $_GET['order'] ) ) ? sanitize_text_field( $_GET['order'] ) : 'DESC',
99
+            'customer_in' => $this->get_user_in(),
100
+        );
101
+
102
+        if ( is_array( $query['customer_in'] ) && empty( $query['customer_in'] ) ) {
103
+            $this->total_count         = 0;
104
+            $this->current_total_count = 0;
105
+            $this->items               = array();
106
+            $this->status_counts       = array();
107
+            return;
108
+        }
109
+
110
+        // Prepare class properties.
111
+        $this->query               = new GetPaid_Subscriptions_Query( $query );
112
+        $this->total_count         = $this->query->get_total();
113
+        $this->current_total_count = $this->query->get_total();
114
+        $this->items               = $this->query->get_results();
115
+        $this->status_counts       = getpaid_get_subscription_status_counts( $query );
116
+
117
+        if ( 'all' != $query['status'] ) {
118
+            unset( $query['status'] );
119
+            $this->total_count   = getpaid_get_subscriptions( $query, 'count' );
120
+        }
121
+
122
+    }
123
+
124
+    /**
125
+     * Get user in.
126
+     *
127
+     */
128
+    public function get_user_in() {
129
+
130
+        // Abort if no user.
131
+        if ( empty( $_GET['s'] ) ) {
132
+            return null;
133
+        }
134
+
135
+        // Or invalid user.
136
+        $user = wp_unslash( sanitize_text_field( $_REQUEST['s'] ) );
137
+
138
+        if ( empty( $user ) ) {
139
+            return null;
140
+        }
141
+
142
+        // Search matching users.
143
+        $user  = '*' . $user . '*';
144
+        $users = new WP_User_Query(
145
+            array(
146
+                'fields'      => 'ID',
147
+                'search'      => $user,
148
+                'count_total' => false,
149
+            )
150
+        );
151
+
152
+        return $users->get_results();
153
+    }
154
+
155
+    /**
156
+     * Gets the list of views available on this table.
157
+     *
158
+     * The format is an associative array:
159
+     * - `'id' => 'link'`
160
+     *
161
+     * @since 1.0.0
162
+     *
163
+     * @return array
164
+     */
165
+    public function get_views() {
166
+
167
+        $current  = isset( $_GET['status'] ) ? sanitize_text_field( $_GET['status'] ) : 'all';
168
+        $views    = array(
169
+
170
+            'all' => sprintf(
171
+                '<a href="%s" %s>%s&nbsp;<span class="count">(%d)</span></a>',
172
+                esc_url( add_query_arg( 'status', false, $this->base_url ) ),
173
+                $current === 'all' ? ' class="current"' : '',
174
+                __( 'All', 'invoicing' ),
175
+                $this->total_count
176
+            ),
177
+
178
+        );
179
+
180
+        foreach ( array_filter( $this->status_counts ) as $status => $count ) {
181
+
182
+            $views[ $status ] = sprintf(
183
+                '<a href="%s" %s>%s&nbsp;<span class="count">(%d)</span></a>',
184
+                esc_url( add_query_arg( 'status', urlencode( $status ), $this->base_url ) ),
185
+                $current === $status ? ' class="current"' : '',
186
+                esc_html( getpaid_get_subscription_status_label( $status ) ),
187
+                $count
188
+            );
189
+
190
+        }
191
+
192
+        return $views;
193
+
194
+    }
195
+
196
+    /**
197
+     * Render most columns
198
+     *
199
+     * @access      private
200
+     * @since       1.0.0
201
+     * @return      string
202
+     */
203
+    public function column_default( $item, $column_name ) {
204
+        return apply_filters( "getpaid_subscriptions_table_column_$column_name", $item->$column_name );
205
+    }
206
+
207
+    /**
208
+     * This is how checkbox column renders.
209
+     *
210
+     * @param WPInv_Subscription $item
211
+     * @return string
212
+     */
213
+    public function column_cb( $item ) {
214
+        return sprintf( '<input type="checkbox" name="id[]" value="%s" />', esc_html( $item->get_id() ) );
215
+    }
216
+
217
+    /**
218
+     * Status column
219
+     *
220
+     * @param WPInv_Subscription $item
221
+     * @since       1.0.0
222
+     * @return      string
223
+     */
224
+    public function column_status( $item ) {
225
+        $extra = $item->has_status( 'expired' ) ? '<small class="text-muted d-block">' . wp_sprintf( _x( 'On: %s', 'Expired On:', 'invoicing' ), getpaid_format_date_value( $item->get_expiration() ) ) . '</small>' : '';
226
+
227
+        return $item->get_status_label_html() . $extra;
228
+    }
229
+
230
+    /**
231
+     * Subscription column
232
+     *
233
+     * @param WPInv_Subscription $item
234
+     * @since       1.0.0
235
+     * @return      string
236
+     */
237
+    public function column_subscription( $item ) {
238
+
239
+        $username = __( '(Missing User)', 'invoicing' );
240
+
241
+        $user = get_userdata( $item->get_customer_id() );
242
+        $capabilities = wpinv_current_user_can_manage_invoicing();
243
+
244
+        if ( $user ) {
245
+            $username = sprintf(
246
+                '<a href="user-edit.php?user_id=%s">%s</a>',
247
+                absint( $user->ID ),
248
+                ! empty( $user->display_name ) ? esc_html( $user->display_name ) : sanitize_email( $user->user_email )
249
+            );
250
+        }
251
+
252
+        // translators: $1: is opening link, $2: is subscription id number, $3: is closing link tag, $4: is user's name
253
+        $column_content = sprintf(
254
+            _x( '%1$s#%2$s%3$s for %4$s', 'Subscription title on admin table. (e.g.: #211 for John Doe)', 'invoicing' ),
255
+            '<a href="' . esc_url( admin_url( 'admin.php?page=wpinv-subscriptions&id=' . absint( $item->get_id() ) ) ) . '">',
256
+            '<strong>' . esc_attr( $item->get_id() ) . '</strong>',
257
+            '</a>',
258
+            $username
259
+        );
260
+
261
+        $row_actions = array();
262
+
263
+        // View subscription.
264
+        $view_url    = esc_url( add_query_arg( 'id', $item->get_id(), admin_url( 'admin.php?page=wpinv-subscriptions' ) ) );
265
+        $row_actions['view'] = '<a href="' . $view_url . '">' . __( 'View Subscription', 'invoicing' ) . '</a>';
266
+
267
+        // View invoice.
268
+        $invoice = get_post( $item->get_parent_invoice_id() );
269
+
270
+        if ( ! empty( $invoice ) ) {
271
+            $invoice_url            = get_edit_post_link( $invoice );
272
+            $row_actions['invoice'] = '<a href="' . $invoice_url . '">' . __( 'View Invoice', 'invoicing' ) . '</a>';
273
+        }
274
+
275
+        $delete_url            = esc_url(
276
+            wp_nonce_url(
277
+                add_query_arg(
278
+                    array(
279
+                        'getpaid-admin-action' => 'subscription_manual_delete',
280
+                        'id'                   => $item->get_id(),
281
+                    )
282
+                ),
283
+                'getpaid-nonce',
284
+                'getpaid-nonce'
285
+            )
286
+        );
287
+        $row_actions['delete'] = '<a class="text-danger" href="' . $delete_url . '">' . __( 'Delete Subscription', 'invoicing' ) . '</a>';
288
+
289
+        if ( ! $capabilities ) {
290
+            $row_actions = array();
291
+        }
292
+
293
+        $row_actions = $this->row_actions( apply_filters( 'getpaid_subscription_table_row_actions', $row_actions, $item ) );
294
+
295
+        return "<strong>$column_content</strong>" . $this->column_amount( $item ) . $row_actions;
296
+    }
297
+
298
+    /**
299
+     * Renewal date column
300
+     *
301
+     * @param WPInv_Subscription $item
302
+     * @since       1.0.0
303
+     * @return      string
304
+     */
305
+    public function column_renewal_date( $item ) {
306
+        if ( $item->has_status( 'active trialling' ) ) {
307
+            $value = getpaid_format_date_value( $item->get_expiration() );
308
+        } else {
309
+            $value = '-';
310
+        }
311
+
312
+        return $value;
313
+    }
314
+
315
+    /**
316
+     * Start date column
317
+     *
318
+     * @param WPInv_Subscription $item
319
+     * @since       1.0.0
320
+     * @return      string
321
+     */
322
+    public function column_start_date( $item ) {
323
+
324
+        $gateway = $item->get_parent_invoice()->get_gateway_title();
325
+
326
+        if ( empty( $gateway ) ) {
327
+            return getpaid_format_date_value( $item->get_date_created() );
328
+        }
329
+
330
+        $url = apply_filters( 'getpaid_remote_subscription_profile_url', '', $item );
331
+        if ( ! empty( $url ) ) {
332
+
333
+            return getpaid_format_date_value( $item->get_date_created() ) . '<br>' . sprintf(
334
+                __( 'Via %s', 'invoicing' ),
335
+                '<strong><a href="' . esc_url( $url ) . '" target="_blank">' . esc_html( $item->get_parent_invoice()->get_gateway_title() ) . '</a></strong>'
336
+            );
337
+
338
+        }
339
+
340
+        return getpaid_format_date_value( $item->get_date_created() ) . '<br>' . sprintf(
341
+            __( 'Via %s', 'invoicing' ),
342
+            '<strong>' . esc_html( $item->get_parent_invoice()->get_gateway_title() ) . '</strong>'
343
+        );
344
+
345
+    }
346
+
347
+    /**
348
+     * Amount column
349
+     *
350
+     * @param WPInv_Subscription $item
351
+     * @since       1.0.19
352
+     * @return      string
353
+     */
354
+    public static function column_amount( $item ) {
355
+        $amount = getpaid_get_formatted_subscription_amount( $item );
356
+        return "<span class='text-muted form-text mt-2 mb-2 ms-1 ml-1'>$amount</span>";
357
+    }
358
+
359
+    /**
360
+     * Billing Times column
361
+     *
362
+     * @param WPInv_Subscription $item
363
+     * @since       1.0.0
364
+     * @return      string
365
+     */
366
+    public function column_renewals( $item ) {
367
+        $max_bills = $item->get_bill_times();
368
+        return $item->get_times_billed() . ' / ' . ( empty( $max_bills ) ? '&infin;' : $max_bills );
369
+    }
370
+
371
+    /**
372
+     * Product ID column
373
+     *
374
+     * @param WPInv_Subscription $item
375
+     * @since       1.0.0
376
+     * @return      string
377
+     */
378
+    public function column_item( $item ) {
379
+        $subscription_group = getpaid_get_invoice_subscription_group( $item->get_parent_invoice_id(), $item->get_id() );
380
+
381
+        if ( empty( $subscription_group ) ) {
382
+            return $this->generate_item_markup( $item->get_product_id() );
383
+        }
384
+
385
+        $markup = array_map( array( $this, 'generate_item_markup' ), array_keys( $subscription_group['items'] ) );
386
+        return implode( ' | ', $markup );
387
+
388
+    }
389
+
390
+    /**
391
+     * Generates the items markup.
392
+     *
393
+     * @param int $item_id
394
+     * @since       1.0.0
395
+     * @return      string
396
+     */
397
+    public static function generate_item_markup( $item_id ) {
398
+        $item = get_post( $item_id );
399
+
400
+        if ( ! empty( $item ) ) {
401
+            $link = get_edit_post_link( $item );
402
+            $name = esc_html( get_the_title( $item ) );
403
+            return wpinv_current_user_can_manage_invoicing() ? "<a href='" . ( $link ? esc_url( $link ) : '#' ) . "'>$name</a>" : $name;
404
+        } else {
405
+            return sprintf( __( 'Item #%s', 'invoicing' ), $item_id );
406
+        }
407
+
408
+    }
409
+
410
+    /**
411
+     * Retrieve the current page number
412
+     *
413
+     * @return      int
414
+     */
415
+    public function get_paged() {
416
+        return isset( $_GET['paged'] ) ? absint( $_GET['paged'] ) : 1;
417
+    }
418
+
419
+    /**
420
+     * Setup the final data for the table
421
+     *
422
+     */
423
+    public function prepare_items() {
424
+
425
+        $columns  = $this->get_columns();
426
+        $hidden   = array();
427
+        $sortable = $this->get_sortable_columns();
428
+
429
+        $this->_column_headers = array( $columns, $hidden, $sortable );
430
+
431
+        $this->set_pagination_args(
432
+            array(
433
+                'total_items' => $this->current_total_count,
434
+                'per_page'    => $this->per_page,
435
+                'total_pages' => ceil( $this->current_total_count / $this->per_page ),
436
+            )
437
+        );
438
+    }
439
+
440
+    /**
441
+     * Table columns
442
+     *
443
+     * @return array
444
+     */
445
+    public function get_columns() {
446
+        $columns = array(
447
+            'cb'           => '<input type="checkbox" />',
448
+            'subscription' => __( 'Subscription', 'invoicing' ),
449
+            'start_date'   => __( 'Start Date', 'invoicing' ),
450
+            'renewal_date' => __( 'Next Payment', 'invoicing' ),
451
+            'renewals'     => __( 'Payments', 'invoicing' ),
452
+            'item'         => __( 'Items', 'invoicing' ),
453
+            'status'       => __( 'Status', 'invoicing' ),
454
+        );
455
+
456
+        return apply_filters( 'manage_getpaid_subscriptions_table_columns', $columns );
457
+    }
458
+
459
+    /**
460
+     * Sortable table columns.
461
+     *
462
+     * @return array
463
+     */
464
+    public function get_sortable_columns() {
465
+        $sortable = array(
466
+            'subscription' => array( 'id', true ),
467
+            'start_date'   => array( 'created', true ),
468
+            'renewal_date' => array( 'expiration', true ),
469
+            'renewals'     => array( 'bill_times', true ),
470
+            'item'         => array( 'product_id', true ),
471
+            'status'       => array( 'status', true ),
472
+        );
473
+
474
+        return apply_filters( 'manage_getpaid_subscriptions_sortable_table_columns', $sortable );
475
+    }
476
+
477
+    /**
478
+     * Whether the table has items to display or not
479
+     *
480
+     * @return bool
481
+     */
482
+    public function has_items() {
483
+        return ! empty( $this->current_total_count );
484
+    }
485
+
486
+    /**
487
+     * Processes bulk actions.
488
+     *
489
+     */
490
+    public function process_bulk_action() {
491
+
492
+    }
493 493
 
494 494
 }
Please login to merge, or discard this patch.