Passed
Pull Request — master (#800)
by Kiran
05:42
created
wp-ayecode-ui/includes/components/class-aui-component-pagination.php 1 patch
Switch Indentation   +103 added lines, -103 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1
-<?php
1
+    <?php
2 2
 
3
-if ( ! defined( 'ABSPATH' ) ) {
4
-	exit; // Exit if accessed directly
3
+    if ( ! defined( 'ABSPATH' ) ) {
4
+	    exit; // Exit if accessed directly
5 5
 }
6 6
 
7 7
 /**
@@ -9,114 +9,114 @@  discard block
 block discarded – undo
9 9
  *
10 10
  * @since 1.0.0
11 11
  */
12
-class AUI_Component_Pagination {
12
+    class AUI_Component_Pagination {
13 13
 
14
-	/**
14
+	    /**
15 15
 	 * Build the component.
16 16
 	 *
17 17
 	 * @param array $args
18 18
 	 *
19 19
 	 * @return string The rendered component.
20 20
 	 */
21
-	public static function get( $args = array() ) {
22
-		global $wp_query, $aui_bs5;
23
-
24
-		$defaults = array(
25
-			'class'              => '',
26
-			'mid_size'           => 2,
27
-			'prev_text'          => '<i class="fas fa-chevron-left"></i>',
28
-			'next_text'          => '<i class="fas fa-chevron-right"></i>',
29
-			'screen_reader_text' => __( 'Posts navigation', 'ayecode-connect' ),
30
-			'before_paging'      => '',
31
-			'after_paging'       => '',
32
-			'type'               => 'array',
33
-			'total'              => isset( $wp_query->max_num_pages ) ? $wp_query->max_num_pages : 1,
34
-			'links'              => array(), // an array of links if using custom links, this includes the a tag.
35
-			'rounded_style'      => false,
36
-			'custom_next_text'   => '', // Custom next page text
37
-			'custom_prev_text'   => '', // Custom prev page text
38
-		);
39
-
40
-		/**
21
+	    public static function get( $args = array() ) {
22
+		    global $wp_query, $aui_bs5;
23
+
24
+		    $defaults = array(
25
+			    'class'              => '',
26
+			    'mid_size'           => 2,
27
+			    'prev_text'          => '<i class="fas fa-chevron-left"></i>',
28
+			    'next_text'          => '<i class="fas fa-chevron-right"></i>',
29
+			    'screen_reader_text' => __( 'Posts navigation', 'ayecode-connect' ),
30
+			    'before_paging'      => '',
31
+			    'after_paging'       => '',
32
+			    'type'               => 'array',
33
+			    'total'              => isset( $wp_query->max_num_pages ) ? $wp_query->max_num_pages : 1,
34
+			    'links'              => array(), // an array of links if using custom links, this includes the a tag.
35
+			    'rounded_style'      => false,
36
+			    'custom_next_text'   => '', // Custom next page text
37
+			    'custom_prev_text'   => '', // Custom prev page text
38
+		    );
39
+
40
+		    /**
41 41
 		 * Parse incoming $args into an array and merge it with $defaults
42 42
 		 */
43
-		$args = wp_parse_args( $args, $defaults );
44
-
45
-		$output = '';
46
-
47
-		// Don't print empty markup if there's only one page.
48
-		if ( $args['total'] > 1 ) {
49
-			// Set up paginated links.
50
-			$links = !empty(  $args['links'] ) ? $args['links'] :  paginate_links( $args );
51
-
52
-			$class = !empty($args['class']) ? $args['class'] : '';
53
-
54
-			$custom_prev_link = '';
55
-			$custom_next_link = '';
56
-
57
-			// make the output bootstrap ready
58
-			$links_html = "<ul class='pagination m-0 p-0 $class'>";
59
-			if ( ! empty( $links ) ) {
60
-				foreach ( $links as $link ) {
61
-					$_link = $link;
62
-
63
-					if ( $aui_bs5 ) {
64
-						$link_class = $args['rounded_style'] ? 'page-link badge rounded-pill border-0 mx-1 fs-base text-dark link-primary' : 'page-link';
65
-						$link_class_active = $args['rounded_style'] ? ' current active fw-bold badge rounded-pill' : ' current active';
66
-						$links_html .= "<li class='page-item mx-0'>";
67
-						$link = str_replace( array( "page-numbers", " current" ), array( $link_class, $link_class_active ), $link );
68
-						$link = str_replace( 'text-dark link-primary current', 'current', $link );
69
-						$links_html .=  $link;
70
-						$links_html .= "</li>";
71
-					} else {
72
-						$active = strpos( $link, 'current' ) !== false ? 'active' : '';
73
-						$links_html .= "<li class='page-item $active'>";
74
-						$links_html .= str_replace( "page-numbers", "page-link", $link );
75
-						$links_html .= "</li>";
76
-					}
77
-
78
-					if ( strpos( $_link, 'next page-numbers' ) || strpos( $_link, 'prev page-numbers' ) ) {
79
-						$link = str_replace( array( "page-numbers", " current" ), array( 'btn btn-outline-primary rounded' . ( $args['rounded_style'] ? '-pill' : '' ) . ' mx-1 fs-base text-dark link-primary', ' current active fw-bold badge rounded-pill' ), $_link );
80
-						$link = str_replace( 'text-dark link-primary current', 'current', $link );
81
-
82
-						if ( strpos( $_link, 'next page-numbers' ) && ! empty( $args['custom_next_text'] ) ) {
83
-							$custom_next_link = str_replace( $args['next_text'], $args['custom_next_text'], $link );
84
-						} else if ( strpos( $_link, 'prev page-numbers' ) && ! empty( $args['custom_prev_text'] ) ) {
85
-							$custom_prev_link = str_replace( $args['prev_text'], $args['custom_prev_text'], $link );
86
-						}
87
-					}
88
-				}
89
-			}
90
-			$links_html .= "</ul>";
91
-
92
-			if ( $links ) {
93
-				$output .= '<section class="px-0 py-2 w-100">';
94
-				$output .= _navigation_markup( $links_html, 'aui-pagination', $args['screen_reader_text'] );
95
-				$output .= '</section>';
96
-			}
97
-
98
-			$output = str_replace( "screen-reader-text", "screen-reader-text sr-only", $output );
99
-			$output = str_replace( "nav-links", "aui-nav-links", $output );
100
-		}
101
-
102
-		if ( $output ) {
103
-			if ( $custom_next_link || $custom_prev_link ) {
104
-				$total   = isset( $wp_query->max_num_pages ) ? $wp_query->max_num_pages : 1;
105
-				$current = get_query_var( 'paged' ) ? (int) get_query_var( 'paged' ) : 1;
106
-
107
-				$output = '<div class="row d-flex align-items-center justify-content-between"><div class="col text-start">' . $custom_prev_link . '</div><div class="col text-center d-none d-md-block">' . $output . '</div><div class="col text-center d-md-none">' . $current . '/' . $args['total'] . '</div><div class="col text-end">' . $custom_next_link . '</div></div>';
108
-			}
109
-
110
-			if ( ! empty( $args['before_paging'] ) ) {
111
-				$output = $args['before_paging'] . $output;
112
-			}
113
-
114
-			if ( ! empty( $args['after_paging'] ) ) {
115
-				$output = $output . $args['after_paging'];
116
-			}
117
-		}
118
-
119
-		return $output;
120
-	}
43
+		    $args = wp_parse_args( $args, $defaults );
44
+
45
+		    $output = '';
46
+
47
+		    // Don't print empty markup if there's only one page.
48
+		    if ( $args['total'] > 1 ) {
49
+			    // Set up paginated links.
50
+			    $links = !empty(  $args['links'] ) ? $args['links'] :  paginate_links( $args );
51
+
52
+			    $class = !empty($args['class']) ? $args['class'] : '';
53
+
54
+			    $custom_prev_link = '';
55
+			    $custom_next_link = '';
56
+
57
+			    // make the output bootstrap ready
58
+			    $links_html = "<ul class='pagination m-0 p-0 $class'>";
59
+			    if ( ! empty( $links ) ) {
60
+				    foreach ( $links as $link ) {
61
+					    $_link = $link;
62
+
63
+					    if ( $aui_bs5 ) {
64
+						    $link_class = $args['rounded_style'] ? 'page-link badge rounded-pill border-0 mx-1 fs-base text-dark link-primary' : 'page-link';
65
+						    $link_class_active = $args['rounded_style'] ? ' current active fw-bold badge rounded-pill' : ' current active';
66
+						    $links_html .= "<li class='page-item mx-0'>";
67
+						    $link = str_replace( array( "page-numbers", " current" ), array( $link_class, $link_class_active ), $link );
68
+						    $link = str_replace( 'text-dark link-primary current', 'current', $link );
69
+						    $links_html .=  $link;
70
+						    $links_html .= "</li>";
71
+					    } else {
72
+						    $active = strpos( $link, 'current' ) !== false ? 'active' : '';
73
+						    $links_html .= "<li class='page-item $active'>";
74
+						    $links_html .= str_replace( "page-numbers", "page-link", $link );
75
+						    $links_html .= "</li>";
76
+					    }
77
+
78
+					    if ( strpos( $_link, 'next page-numbers' ) || strpos( $_link, 'prev page-numbers' ) ) {
79
+						    $link = str_replace( array( "page-numbers", " current" ), array( 'btn btn-outline-primary rounded' . ( $args['rounded_style'] ? '-pill' : '' ) . ' mx-1 fs-base text-dark link-primary', ' current active fw-bold badge rounded-pill' ), $_link );
80
+						    $link = str_replace( 'text-dark link-primary current', 'current', $link );
81
+
82
+						    if ( strpos( $_link, 'next page-numbers' ) && ! empty( $args['custom_next_text'] ) ) {
83
+							    $custom_next_link = str_replace( $args['next_text'], $args['custom_next_text'], $link );
84
+						    } else if ( strpos( $_link, 'prev page-numbers' ) && ! empty( $args['custom_prev_text'] ) ) {
85
+							    $custom_prev_link = str_replace( $args['prev_text'], $args['custom_prev_text'], $link );
86
+						    }
87
+					    }
88
+				    }
89
+			    }
90
+			    $links_html .= "</ul>";
91
+
92
+			    if ( $links ) {
93
+				    $output .= '<section class="px-0 py-2 w-100">';
94
+				    $output .= _navigation_markup( $links_html, 'aui-pagination', $args['screen_reader_text'] );
95
+				    $output .= '</section>';
96
+			    }
97
+
98
+			    $output = str_replace( "screen-reader-text", "screen-reader-text sr-only", $output );
99
+			    $output = str_replace( "nav-links", "aui-nav-links", $output );
100
+		    }
101
+
102
+		    if ( $output ) {
103
+			    if ( $custom_next_link || $custom_prev_link ) {
104
+				    $total   = isset( $wp_query->max_num_pages ) ? $wp_query->max_num_pages : 1;
105
+				    $current = get_query_var( 'paged' ) ? (int) get_query_var( 'paged' ) : 1;
106
+
107
+				    $output = '<div class="row d-flex align-items-center justify-content-between"><div class="col text-start">' . $custom_prev_link . '</div><div class="col text-center d-none d-md-block">' . $output . '</div><div class="col text-center d-md-none">' . $current . '/' . $args['total'] . '</div><div class="col text-end">' . $custom_next_link . '</div></div>';
108
+			    }
109
+
110
+			    if ( ! empty( $args['before_paging'] ) ) {
111
+				    $output = $args['before_paging'] . $output;
112
+			    }
113
+
114
+			    if ( ! empty( $args['after_paging'] ) ) {
115
+				    $output = $output . $args['after_paging'];
116
+			    }
117
+		    }
118
+
119
+		    return $output;
120
+	    }
121 121
 
122 122
 }
123 123
\ No newline at end of file
Please login to merge, or discard this patch.
ayecode/wp-ayecode-ui/includes/components/class-aui-component-dropdown.php 1 patch
Switch Indentation   +46 added lines, -46 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1
-<?php
1
+    <?php
2 2
 
3
-if ( ! defined( 'ABSPATH' ) ) {
4
-	exit; // Exit if accessed directly
3
+    if ( ! defined( 'ABSPATH' ) ) {
4
+	    exit; // Exit if accessed directly
5 5
 }
6 6
 
7 7
 /**
@@ -9,64 +9,64 @@  discard block
 block discarded – undo
9 9
  *
10 10
  * @since 1.0.0
11 11
  */
12
-class AUI_Component_Dropdown {
12
+    class AUI_Component_Dropdown {
13 13
 
14
-	/**
14
+	    /**
15 15
 	 * Build the component.
16 16
 	 *
17 17
 	 * @param array $args
18 18
 	 *
19 19
 	 * @return string The rendered component.
20 20
 	 */
21
-	public static function get($args = array()){
22
-		$defaults = array(
23
-			'type'       => 'button',
24
-			'href'       => '#',
25
-			'class'      => 'btn btn-primary dropdown-toggle',
26
-			'wrapper_class' => '',
27
-			'dropdown_menu_class' => '',
28
-			'id'         => '',
29
-			'title'      => '',
30
-			'value'      => '',
31
-			'content'    => '',
32
-			'icon'       => '',
33
-			'hover_content' => '',
34
-			'hover_icon'    => '',
35
-			'data-toggle'   => 'dropdown',
36
-			'aria-haspopup' => 'true',
37
-			'aria-expanded' => 'false',
38
-			'dropdown_menu'          => '', // unescaped html menu (non-preferred way)
39
-			'dropdown_items'          => array(), // array of AUI calls
21
+	    public static function get($args = array()){
22
+		    $defaults = array(
23
+			    'type'       => 'button',
24
+			    'href'       => '#',
25
+			    'class'      => 'btn btn-primary dropdown-toggle',
26
+			    'wrapper_class' => '',
27
+			    'dropdown_menu_class' => '',
28
+			    'id'         => '',
29
+			    'title'      => '',
30
+			    'value'      => '',
31
+			    'content'    => '',
32
+			    'icon'       => '',
33
+			    'hover_content' => '',
34
+			    'hover_icon'    => '',
35
+			    'data-toggle'   => 'dropdown',
36
+			    'aria-haspopup' => 'true',
37
+			    'aria-expanded' => 'false',
38
+			    'dropdown_menu'          => '', // unescaped html menu (non-preferred way)
39
+			    'dropdown_items'          => array(), // array of AUI calls
40 40
 
41
-		);
41
+		    );
42 42
 
43
-		/**
43
+		    /**
44 44
 		 * Parse incoming $args into an array and merge it with $defaults
45 45
 		 */
46
-		$args   = wp_parse_args( $args, $defaults );
47
-		$output = '';
48
-		if ( ! empty( $args['type'] ) ) {
49
-			// wrapper open
50
-			$output .= '<div class="dropdown '.AUI_Component_Helper::esc_classes($args['wrapper_class']).'">';
46
+		    $args   = wp_parse_args( $args, $defaults );
47
+		    $output = '';
48
+		    if ( ! empty( $args['type'] ) ) {
49
+			    // wrapper open
50
+			    $output .= '<div class="dropdown '.AUI_Component_Helper::esc_classes($args['wrapper_class']).'">';
51 51
 
52
-			// button part
53
-			$output .= aui()->button($args);
52
+			    // button part
53
+			    $output .= aui()->button($args);
54 54
 
55
-			// dropdown-menu
56
-			if(!empty($args['dropdown_menu'])){
57
-				$output .= $args['dropdown_menu'];
58
-			}elseif(!empty($args['dropdown_items'])){
59
-				$output .= '<div class="dropdown-menu '.AUI_Component_Helper::esc_classes($args['dropdown_menu_class']).'" aria-labelledby="'.sanitize_html_class($args['id']).'">';
60
-				$output .= aui()->render($args['dropdown_items']);
61
-				$output .= '</div>';
62
-			}
55
+			    // dropdown-menu
56
+			    if(!empty($args['dropdown_menu'])){
57
+				    $output .= $args['dropdown_menu'];
58
+			    }elseif(!empty($args['dropdown_items'])){
59
+				    $output .= '<div class="dropdown-menu '.AUI_Component_Helper::esc_classes($args['dropdown_menu_class']).'" aria-labelledby="'.sanitize_html_class($args['id']).'">';
60
+				    $output .= aui()->render($args['dropdown_items']);
61
+				    $output .= '</div>';
62
+			    }
63 63
 
64
-			// wrapper close
65
-			$output .= '</div>';
64
+			    // wrapper close
65
+			    $output .= '</div>';
66 66
 
67
-		}
67
+		    }
68 68
 
69
-		return $output;
70
-	}
69
+		    return $output;
70
+	    }
71 71
 
72 72
 }
73 73
\ No newline at end of file
Please login to merge, or discard this patch.
ayecode/wp-ayecode-ui/includes/components/class-aui-component-input.php 1 patch
Switch Indentation   +1202 added lines, -1202 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1
-<?php
1
+    <?php
2 2
 
3
-if ( ! defined( 'ABSPATH' ) ) {
4
-	exit; // Exit if accessed directly
3
+    if ( ! defined( 'ABSPATH' ) ) {
4
+	    exit; // Exit if accessed directly
5 5
 }
6 6
 
7 7
 /**
@@ -9,1293 +9,1293 @@  discard block
 block discarded – undo
9 9
  *
10 10
  * @since 1.0.0
11 11
  */
12
-class AUI_Component_Input {
12
+    class AUI_Component_Input {
13 13
 
14
-	/**
14
+	    /**
15 15
 	 * Build the component.
16 16
 	 *
17 17
 	 * @param array $args
18 18
 	 *
19 19
 	 * @return string The rendered component.
20 20
 	 */
21
-	public static function input( $args = array() ) {
22
-		global $aui_bs5;
23
-
24
-		$defaults = array(
25
-			'type'                     => 'text',
26
-			'name'                     => '',
27
-			'class'                    => '',
28
-			'wrap_class'               => '',
29
-			'id'                       => '',
30
-			'placeholder'              => '',
31
-			'title'                    => '',
32
-			'value'                    => '',
33
-			'required'                 => false,
34
-			'size'                     => '', // sm, lg, small, large
35
-			'clear_icon'               => '', // true will show a clear icon, can't be used with input_group_right
36
-			'with_hidden'              => false, // Append hidden field for single checkbox.
37
-			'label'                    => '',
38
-			'label_after'              => false,
39
-			'label_class'              => '',
40
-			'label_col'                => '2',
41
-			'label_type'               => '', // top, horizontal, empty = hidden
42
-			'label_force_left'         => false, // used to force checkbox label left when using horizontal
43
-			// sets the label type, default: hidden. Options: hidden, top, horizontal, floating
44
-			'help_text'                => '',
45
-			'validation_text'          => '',
46
-			'validation_pattern'       => '',
47
-			'no_wrap'                  => false,
48
-			'input_group_right'        => '',
49
-			'input_group_left'         => '',
50
-			'input_group_right_inside' => false,
51
-			// forces the input group inside the input
52
-			'input_group_left_inside'  => false,
53
-			// forces the input group inside the input
54
-			'form_group_class'         => '',
55
-			'step'                     => '',
56
-			'switch'                   => false,
57
-			// to show checkbox as a switch
58
-			'checked'                  => false,
59
-			// set a checkbox or radio as selected
60
-			'password_toggle'          => true,
61
-			// toggle view/hide password
62
-			'element_require'          => '',
63
-			// [%element_id%] == "1"
64
-			'extra_attributes'         => array(),
65
-			// an array of extra attributes
66
-			'wrap_attributes'          => array()
67
-		);
68
-
69
-		/**
21
+	    public static function input( $args = array() ) {
22
+		    global $aui_bs5;
23
+
24
+		    $defaults = array(
25
+			    'type'                     => 'text',
26
+			    'name'                     => '',
27
+			    'class'                    => '',
28
+			    'wrap_class'               => '',
29
+			    'id'                       => '',
30
+			    'placeholder'              => '',
31
+			    'title'                    => '',
32
+			    'value'                    => '',
33
+			    'required'                 => false,
34
+			    'size'                     => '', // sm, lg, small, large
35
+			    'clear_icon'               => '', // true will show a clear icon, can't be used with input_group_right
36
+			    'with_hidden'              => false, // Append hidden field for single checkbox.
37
+			    'label'                    => '',
38
+			    'label_after'              => false,
39
+			    'label_class'              => '',
40
+			    'label_col'                => '2',
41
+			    'label_type'               => '', // top, horizontal, empty = hidden
42
+			    'label_force_left'         => false, // used to force checkbox label left when using horizontal
43
+			    // sets the label type, default: hidden. Options: hidden, top, horizontal, floating
44
+			    'help_text'                => '',
45
+			    'validation_text'          => '',
46
+			    'validation_pattern'       => '',
47
+			    'no_wrap'                  => false,
48
+			    'input_group_right'        => '',
49
+			    'input_group_left'         => '',
50
+			    'input_group_right_inside' => false,
51
+			    // forces the input group inside the input
52
+			    'input_group_left_inside'  => false,
53
+			    // forces the input group inside the input
54
+			    'form_group_class'         => '',
55
+			    'step'                     => '',
56
+			    'switch'                   => false,
57
+			    // to show checkbox as a switch
58
+			    'checked'                  => false,
59
+			    // set a checkbox or radio as selected
60
+			    'password_toggle'          => true,
61
+			    // toggle view/hide password
62
+			    'element_require'          => '',
63
+			    // [%element_id%] == "1"
64
+			    'extra_attributes'         => array(),
65
+			    // an array of extra attributes
66
+			    'wrap_attributes'          => array()
67
+		    );
68
+
69
+		    /**
70 70
 		 * Parse incoming $args into an array and merge it with $defaults
71 71
 		 */
72
-		$args   = wp_parse_args( $args, $defaults );
73
-		$output = '';
74
-		if ( ! empty( $args['type'] ) ) {
75
-			// hidden label option needs to be empty
76
-			$args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type'];
77
-
78
-			$type = sanitize_html_class( $args['type'] );
79
-
80
-			$help_text   = '';
81
-			$label       = '';
82
-			$label_after = $args['label_after'];
83
-			$label_args  = array(
84
-				'title'      => $args['label'],
85
-				'for'        => $args['id'],
86
-				'class'      => $args['label_class'] . " ",
87
-				'label_type' => $args['label_type'],
88
-				'label_col'  => $args['label_col']
89
-			);
90
-
91
-			// floating labels need label after
92
-			if ( $args['label_type'] == 'floating' && $type != 'checkbox' ) {
93
-				$label_after         = true;
94
-				$args['placeholder'] = ' '; // set the placeholder not empty so the floating label works.
95
-			}
96
-
97
-			// size
98
-			$size = '';
99
-			if ( $args['size'] == 'lg' || $args['size'] == 'large' ) {
100
-				$size = 'lg';
101
-				$args['class'] .= ' form-control-lg';
102
-			}elseif ( $args['size'] == 'sm' || $args['size'] == 'small' ) {
103
-				$size = 'sm';
104
-				$args['class'] .= ' form-control-sm';
105
-			}
106
-
107
-			// clear function
108
-			$clear_function = 'jQuery(this).parent().parent().find(\'input\').val(\'\');';
109
-
110
-			// Some special sauce for files
111
-			if ( $type == 'file' ) {
112
-				$label_after = true; // if type file we need the label after
113
-				$args['class'] .= ' custom-file-input ';
114
-			} elseif ( $type == 'checkbox' ) {
115
-				$label_after = true; // if type file we need the label after
116
-				$args['class'] .= $aui_bs5 ? ' form-check-input c-pointer ' : ' custom-control-input c-pointer ';
117
-			} elseif ( $type == 'datepicker' || $type == 'timepicker' ) {
118
-				$orig_type = $type;
119
-				$type = 'text';
120
-				$args['class'] .= ' bg-initial '; // @todo not sure why we have this?
121
-				$clear_function .= "jQuery(this).parent().parent().find('input[name=\'" . esc_attr( $args['name'] ) . "\']').trigger('change');";
122
-
123
-				$args['extra_attributes']['data-aui-init'] = 'flatpickr';
124
-
125
-				// Disable native datetime inputs.
126
-				$disable_mobile_attr = isset( $args['extra_attributes']['data-disable-mobile'] ) ? $args['extra_attributes']['data-disable-mobile'] : 'true';
127
-				$disable_mobile_attr = apply_filters( 'aui_flatpickr_disable_disable_mobile_attr', $disable_mobile_attr, $args );
128
-
129
-				$args['extra_attributes']['data-disable-mobile'] = $disable_mobile_attr;
130
-
131
-				// set a way to clear field if empty
132
-				if ( $args['input_group_right'] === '' && $args['clear_icon'] !== false ) {
133
-					$args['input_group_right_inside'] = true;
134
-					$args['clear_icon'] = true;
135
-				}
136
-
137
-				// enqueue the script
138
-				$aui_settings = AyeCode_UI_Settings::instance();
139
-				$aui_settings->enqueue_flatpickr();
140
-			} elseif ( $type == 'iconpicker' ) {
141
-				$type = 'text';
142
-				//$args['class'] .= ' aui-flatpickr bg-initial ';
143
-//				$args['class'] .= ' bg-initial ';
144
-
145
-				$args['extra_attributes']['data-aui-init'] = 'iconpicker';
146
-				$args['extra_attributes']['data-placement'] = 'bottomRight';
147
-
148
-				$args['input_group_right'] = '<span class="input-group-addon input-group-text c-pointer"></span>';
149
-//				$args['input_group_right_inside'] = true;
150
-				// enqueue the script
151
-				$aui_settings = AyeCode_UI_Settings::instance();
152
-				$aui_settings->enqueue_iconpicker();
153
-			}
154
-
155
-			if ( $type == 'checkbox' && ( ( ! empty( $args['name'] ) && strpos( $args['name'], '[' ) === false ) || ! empty( $args['with_hidden'] ) ) ) {
156
-				$output .= '<input type="hidden" name="' . esc_attr( $args['name'] ) . '" value="0" />';
157
-			}
158
-
159
-			// allow clear icon
160
-			if ( $args['input_group_right'] === '' && $args['clear_icon'] ) {
161
-				$font_size = $size == 'sm' ? '1.3' : ( $size == 'lg' ? '1.65' : '1.5' );
162
-				$args['input_group_right_inside'] = true;
163
-				$align_class = $aui_bs5 ? ' h-100 py-0' : '';
164
-				$args['input_group_right'] = '<span class="input-group-text aui-clear-input c-pointer bg-initial border-0 px-2 d-none ' . $align_class . '" onclick="' . $clear_function . '"><span style="font-size: ' . $font_size . 'rem" aria-hidden="true" class="' . ( $aui_bs5 ? 'btn-close' : 'close' ) . '">' . ( $aui_bs5 ? '' : '&times;' ) . '</span></span>';
165
-			}
166
-
167
-			// open/type
168
-			$output .= '<input type="' . $type . '" ';
169
-
170
-			// name
171
-			if ( ! empty( $args['name'] ) ) {
172
-				$output .= ' name="' . esc_attr( $args['name'] ) . '" ';
173
-			}
174
-
175
-			// id
176
-			if ( ! empty( $args['id'] ) ) {
177
-				$output .= ' id="' . sanitize_html_class( $args['id'] ) . '" ';
178
-			}
179
-
180
-			// placeholder
181
-			if ( isset( $args['placeholder'] ) && '' != $args['placeholder'] ) {
182
-				$output .= ' placeholder="' . esc_attr( $args['placeholder'] ) . '" ';
183
-			}
184
-
185
-			// title
186
-			if ( ! empty( $args['title'] ) ) {
187
-				$output .= ' title="' . esc_attr( $args['title'] ) . '" ';
188
-			}
189
-
190
-			// value
191
-			if ( ! empty( $args['value'] ) ) {
192
-				$output .= AUI_Component_Helper::value( $args['value'] );
193
-			}
194
-
195
-			// checked, for radio and checkboxes
196
-			if ( ( $type == 'checkbox' || $type == 'radio' ) && $args['checked'] ) {
197
-				$output .= ' checked ';
198
-			}
199
-
200
-			// validation text
201
-			if ( ! empty( $args['validation_text'] ) ) {
202
-				$output .= ' oninvalid="setCustomValidity(\'' . esc_attr( addslashes( $args['validation_text'] ) ) . '\')" ';
203
-				$output .= ' onchange="try{setCustomValidity(\'\')}catch(e){}" ';
204
-			}
205
-
206
-			// validation_pattern
207
-			if ( ! empty( $args['validation_pattern'] ) ) {
208
-				$output .= ' pattern="' . esc_attr( $args['validation_pattern'] ) . '" ';
209
-			}
210
-
211
-			// step (for numbers)
212
-			if ( ! empty( $args['step'] ) ) {
213
-				$output .= ' step="' . $args['step'] . '" ';
214
-			}
215
-
216
-			// required
217
-			if ( ! empty( $args['required'] ) ) {
218
-				$output .= ' required ';
219
-			}
220
-
221
-			// class
222
-			$class = ! empty( $args['class'] ) ? AUI_Component_Helper::esc_classes( $args['class'] ) : '';
223
-			$output .= $aui_bs5 &&  $type == 'checkbox' ? ' class="' . $class . '" ' : ' class="form-control ' . $class . '" ';
224
-
225
-			// data-attributes
226
-			$output .= AUI_Component_Helper::data_attributes( $args );
227
-
228
-			// extra attributes
229
-			if ( ! empty( $args['extra_attributes'] ) ) {
230
-				$output .= AUI_Component_Helper::extra_attributes( $args['extra_attributes'] );
231
-			}
232
-
233
-			// close
234
-			$output .= ' >';
235
-
236
-			// help text
237
-			if ( ! empty( $args['help_text'] ) ) {
238
-				$help_text = AUI_Component_Helper::help_text( $args['help_text'] );
239
-			}
240
-
241
-			// label
242
-			if ( ! empty( $args['label'] ) ) {
243
-				$label_base_class = '';
244
-				if ( $type == 'file' ) {
245
-					$label_base_class = ' custom-file-label';
246
-				} elseif ( $type == 'checkbox' ) {
247
-					if ( ! empty( $args['label_force_left'] ) ) {
248
-						$label_args['title'] = wp_kses_post( $args['help_text'] );
249
-						$help_text = '';
250
-						//$label_args['class'] .= ' d-inline ';
251
-						$args['wrap_class'] .= ' align-items-center ';
252
-					}else{
253
-
254
-					}
255
-
256
-					$label_base_class = $aui_bs5 ? ' form-check-label' : ' custom-control-label';
257
-				}
258
-				$label_args['class'] .= $label_base_class;
259
-				$temp_label_args = $label_args;
260
-				if(! empty( $args['label_force_left'] )){$temp_label_args['class'] = $label_base_class." text-muted";}
261
-				$label = self::label( $temp_label_args, $type );
262
-			}
263
-
264
-
265
-
266
-
267
-			// set help text in the correct position
268
-			if ( $label_after ) {
269
-				$output .= $label . $help_text;
270
-			}
271
-
272
-			// some input types need a separate wrap
273
-			if ( $type == 'file' ) {
274
-				$output = self::wrap( array(
275
-					'content' => $output,
276
-					'class'   => $aui_bs5 ? 'mb-3 custom-file' : 'form-group custom-file'
277
-				) );
278
-			} elseif ( $type == 'checkbox' ) {
279
-
280
-				$label_args['title'] = $args['label'];
281
-				$label_col = AUI_Component_Helper::get_column_class( $args['label_col'], 'label' );
282
-				$label = !empty( $args['label_force_left'] ) ? self::label( $label_args, 'cb' ) : '<div class="' . $label_col . ' col-form-label"></div>';
283
-				$switch_size_class = $args['switch'] && !is_bool( $args['switch'] ) ? ' custom-switch-'.esc_attr( $args['switch'] ) : '';
284
-				if ( $aui_bs5 ) {
285
-					$wrap_class = $args['switch'] ? 'form-check form-switch' . $switch_size_class : 'form-check';
286
-				}else{
287
-					$wrap_class = $args['switch'] ? 'custom-switch' . $switch_size_class :  'custom-checkbox' ;
288
-				}
289
-				if ( ! empty( $args['label_force_left'] ) ) {
290
-					$wrap_class .= $aui_bs5 ? '' : ' d-flex align-content-center';
291
-					$label = str_replace(array("form-check-label","custom-control-label"),"", self::label( $label_args, 'cb' ) );
292
-				}
293
-				$output     = self::wrap( array(
294
-					'content' => $output,
295
-					'class'   => $aui_bs5 ? $wrap_class : 'custom-control ' . $wrap_class
296
-				) );
297
-
298
-				if ( $args['label_type'] == 'horizontal' ) {
299
-					$input_col = AUI_Component_Helper::get_column_class( $args['label_col'], 'input' );
300
-					$output    = $label . '<div class="' . $input_col . '">' . $output . '</div>';
301
-				}
302
-			} elseif ( $type == 'password' && $args['password_toggle'] && ! $args['input_group_right'] ) {
303
-
304
-
305
-				// allow password field to toggle view
306
-				$args['input_group_right'] = '<span class="input-group-text c-pointer px-3" 
72
+		    $args   = wp_parse_args( $args, $defaults );
73
+		    $output = '';
74
+		    if ( ! empty( $args['type'] ) ) {
75
+			    // hidden label option needs to be empty
76
+			    $args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type'];
77
+
78
+			    $type = sanitize_html_class( $args['type'] );
79
+
80
+			    $help_text   = '';
81
+			    $label       = '';
82
+			    $label_after = $args['label_after'];
83
+			    $label_args  = array(
84
+				    'title'      => $args['label'],
85
+				    'for'        => $args['id'],
86
+				    'class'      => $args['label_class'] . " ",
87
+				    'label_type' => $args['label_type'],
88
+				    'label_col'  => $args['label_col']
89
+			    );
90
+
91
+			    // floating labels need label after
92
+			    if ( $args['label_type'] == 'floating' && $type != 'checkbox' ) {
93
+				    $label_after         = true;
94
+				    $args['placeholder'] = ' '; // set the placeholder not empty so the floating label works.
95
+			    }
96
+
97
+			    // size
98
+			    $size = '';
99
+			    if ( $args['size'] == 'lg' || $args['size'] == 'large' ) {
100
+				    $size = 'lg';
101
+				    $args['class'] .= ' form-control-lg';
102
+			    }elseif ( $args['size'] == 'sm' || $args['size'] == 'small' ) {
103
+				    $size = 'sm';
104
+				    $args['class'] .= ' form-control-sm';
105
+			    }
106
+
107
+			    // clear function
108
+			    $clear_function = 'jQuery(this).parent().parent().find(\'input\').val(\'\');';
109
+
110
+			    // Some special sauce for files
111
+			    if ( $type == 'file' ) {
112
+				    $label_after = true; // if type file we need the label after
113
+				    $args['class'] .= ' custom-file-input ';
114
+			    } elseif ( $type == 'checkbox' ) {
115
+				    $label_after = true; // if type file we need the label after
116
+				    $args['class'] .= $aui_bs5 ? ' form-check-input c-pointer ' : ' custom-control-input c-pointer ';
117
+			    } elseif ( $type == 'datepicker' || $type == 'timepicker' ) {
118
+				    $orig_type = $type;
119
+				    $type = 'text';
120
+				    $args['class'] .= ' bg-initial '; // @todo not sure why we have this?
121
+				    $clear_function .= "jQuery(this).parent().parent().find('input[name=\'" . esc_attr( $args['name'] ) . "\']').trigger('change');";
122
+
123
+				    $args['extra_attributes']['data-aui-init'] = 'flatpickr';
124
+
125
+				    // Disable native datetime inputs.
126
+				    $disable_mobile_attr = isset( $args['extra_attributes']['data-disable-mobile'] ) ? $args['extra_attributes']['data-disable-mobile'] : 'true';
127
+				    $disable_mobile_attr = apply_filters( 'aui_flatpickr_disable_disable_mobile_attr', $disable_mobile_attr, $args );
128
+
129
+				    $args['extra_attributes']['data-disable-mobile'] = $disable_mobile_attr;
130
+
131
+				    // set a way to clear field if empty
132
+				    if ( $args['input_group_right'] === '' && $args['clear_icon'] !== false ) {
133
+					    $args['input_group_right_inside'] = true;
134
+					    $args['clear_icon'] = true;
135
+				    }
136
+
137
+				    // enqueue the script
138
+				    $aui_settings = AyeCode_UI_Settings::instance();
139
+				    $aui_settings->enqueue_flatpickr();
140
+			    } elseif ( $type == 'iconpicker' ) {
141
+				    $type = 'text';
142
+				    //$args['class'] .= ' aui-flatpickr bg-initial ';
143
+    //				$args['class'] .= ' bg-initial ';
144
+
145
+				    $args['extra_attributes']['data-aui-init'] = 'iconpicker';
146
+				    $args['extra_attributes']['data-placement'] = 'bottomRight';
147
+
148
+				    $args['input_group_right'] = '<span class="input-group-addon input-group-text c-pointer"></span>';
149
+    //				$args['input_group_right_inside'] = true;
150
+				    // enqueue the script
151
+				    $aui_settings = AyeCode_UI_Settings::instance();
152
+				    $aui_settings->enqueue_iconpicker();
153
+			    }
154
+
155
+			    if ( $type == 'checkbox' && ( ( ! empty( $args['name'] ) && strpos( $args['name'], '[' ) === false ) || ! empty( $args['with_hidden'] ) ) ) {
156
+				    $output .= '<input type="hidden" name="' . esc_attr( $args['name'] ) . '" value="0" />';
157
+			    }
158
+
159
+			    // allow clear icon
160
+			    if ( $args['input_group_right'] === '' && $args['clear_icon'] ) {
161
+				    $font_size = $size == 'sm' ? '1.3' : ( $size == 'lg' ? '1.65' : '1.5' );
162
+				    $args['input_group_right_inside'] = true;
163
+				    $align_class = $aui_bs5 ? ' h-100 py-0' : '';
164
+				    $args['input_group_right'] = '<span class="input-group-text aui-clear-input c-pointer bg-initial border-0 px-2 d-none ' . $align_class . '" onclick="' . $clear_function . '"><span style="font-size: ' . $font_size . 'rem" aria-hidden="true" class="' . ( $aui_bs5 ? 'btn-close' : 'close' ) . '">' . ( $aui_bs5 ? '' : '&times;' ) . '</span></span>';
165
+			    }
166
+
167
+			    // open/type
168
+			    $output .= '<input type="' . $type . '" ';
169
+
170
+			    // name
171
+			    if ( ! empty( $args['name'] ) ) {
172
+				    $output .= ' name="' . esc_attr( $args['name'] ) . '" ';
173
+			    }
174
+
175
+			    // id
176
+			    if ( ! empty( $args['id'] ) ) {
177
+				    $output .= ' id="' . sanitize_html_class( $args['id'] ) . '" ';
178
+			    }
179
+
180
+			    // placeholder
181
+			    if ( isset( $args['placeholder'] ) && '' != $args['placeholder'] ) {
182
+				    $output .= ' placeholder="' . esc_attr( $args['placeholder'] ) . '" ';
183
+			    }
184
+
185
+			    // title
186
+			    if ( ! empty( $args['title'] ) ) {
187
+				    $output .= ' title="' . esc_attr( $args['title'] ) . '" ';
188
+			    }
189
+
190
+			    // value
191
+			    if ( ! empty( $args['value'] ) ) {
192
+				    $output .= AUI_Component_Helper::value( $args['value'] );
193
+			    }
194
+
195
+			    // checked, for radio and checkboxes
196
+			    if ( ( $type == 'checkbox' || $type == 'radio' ) && $args['checked'] ) {
197
+				    $output .= ' checked ';
198
+			    }
199
+
200
+			    // validation text
201
+			    if ( ! empty( $args['validation_text'] ) ) {
202
+				    $output .= ' oninvalid="setCustomValidity(\'' . esc_attr( addslashes( $args['validation_text'] ) ) . '\')" ';
203
+				    $output .= ' onchange="try{setCustomValidity(\'\')}catch(e){}" ';
204
+			    }
205
+
206
+			    // validation_pattern
207
+			    if ( ! empty( $args['validation_pattern'] ) ) {
208
+				    $output .= ' pattern="' . esc_attr( $args['validation_pattern'] ) . '" ';
209
+			    }
210
+
211
+			    // step (for numbers)
212
+			    if ( ! empty( $args['step'] ) ) {
213
+				    $output .= ' step="' . $args['step'] . '" ';
214
+			    }
215
+
216
+			    // required
217
+			    if ( ! empty( $args['required'] ) ) {
218
+				    $output .= ' required ';
219
+			    }
220
+
221
+			    // class
222
+			    $class = ! empty( $args['class'] ) ? AUI_Component_Helper::esc_classes( $args['class'] ) : '';
223
+			    $output .= $aui_bs5 &&  $type == 'checkbox' ? ' class="' . $class . '" ' : ' class="form-control ' . $class . '" ';
224
+
225
+			    // data-attributes
226
+			    $output .= AUI_Component_Helper::data_attributes( $args );
227
+
228
+			    // extra attributes
229
+			    if ( ! empty( $args['extra_attributes'] ) ) {
230
+				    $output .= AUI_Component_Helper::extra_attributes( $args['extra_attributes'] );
231
+			    }
232
+
233
+			    // close
234
+			    $output .= ' >';
235
+
236
+			    // help text
237
+			    if ( ! empty( $args['help_text'] ) ) {
238
+				    $help_text = AUI_Component_Helper::help_text( $args['help_text'] );
239
+			    }
240
+
241
+			    // label
242
+			    if ( ! empty( $args['label'] ) ) {
243
+				    $label_base_class = '';
244
+				    if ( $type == 'file' ) {
245
+					    $label_base_class = ' custom-file-label';
246
+				    } elseif ( $type == 'checkbox' ) {
247
+					    if ( ! empty( $args['label_force_left'] ) ) {
248
+						    $label_args['title'] = wp_kses_post( $args['help_text'] );
249
+						    $help_text = '';
250
+						    //$label_args['class'] .= ' d-inline ';
251
+						    $args['wrap_class'] .= ' align-items-center ';
252
+					    }else{
253
+
254
+					    }
255
+
256
+					    $label_base_class = $aui_bs5 ? ' form-check-label' : ' custom-control-label';
257
+				    }
258
+				    $label_args['class'] .= $label_base_class;
259
+				    $temp_label_args = $label_args;
260
+				    if(! empty( $args['label_force_left'] )){$temp_label_args['class'] = $label_base_class." text-muted";}
261
+				    $label = self::label( $temp_label_args, $type );
262
+			    }
263
+
264
+
265
+
266
+
267
+			    // set help text in the correct position
268
+			    if ( $label_after ) {
269
+				    $output .= $label . $help_text;
270
+			    }
271
+
272
+			    // some input types need a separate wrap
273
+			    if ( $type == 'file' ) {
274
+				    $output = self::wrap( array(
275
+					    'content' => $output,
276
+					    'class'   => $aui_bs5 ? 'mb-3 custom-file' : 'form-group custom-file'
277
+				    ) );
278
+			    } elseif ( $type == 'checkbox' ) {
279
+
280
+				    $label_args['title'] = $args['label'];
281
+				    $label_col = AUI_Component_Helper::get_column_class( $args['label_col'], 'label' );
282
+				    $label = !empty( $args['label_force_left'] ) ? self::label( $label_args, 'cb' ) : '<div class="' . $label_col . ' col-form-label"></div>';
283
+				    $switch_size_class = $args['switch'] && !is_bool( $args['switch'] ) ? ' custom-switch-'.esc_attr( $args['switch'] ) : '';
284
+				    if ( $aui_bs5 ) {
285
+					    $wrap_class = $args['switch'] ? 'form-check form-switch' . $switch_size_class : 'form-check';
286
+				    }else{
287
+					    $wrap_class = $args['switch'] ? 'custom-switch' . $switch_size_class :  'custom-checkbox' ;
288
+				    }
289
+				    if ( ! empty( $args['label_force_left'] ) ) {
290
+					    $wrap_class .= $aui_bs5 ? '' : ' d-flex align-content-center';
291
+					    $label = str_replace(array("form-check-label","custom-control-label"),"", self::label( $label_args, 'cb' ) );
292
+				    }
293
+				    $output     = self::wrap( array(
294
+					    'content' => $output,
295
+					    'class'   => $aui_bs5 ? $wrap_class : 'custom-control ' . $wrap_class
296
+				    ) );
297
+
298
+				    if ( $args['label_type'] == 'horizontal' ) {
299
+					    $input_col = AUI_Component_Helper::get_column_class( $args['label_col'], 'input' );
300
+					    $output    = $label . '<div class="' . $input_col . '">' . $output . '</div>';
301
+				    }
302
+			    } elseif ( $type == 'password' && $args['password_toggle'] && ! $args['input_group_right'] ) {
303
+
304
+
305
+				    // allow password field to toggle view
306
+				    $args['input_group_right'] = '<span class="input-group-text c-pointer px-3" 
307 307
 onclick="var $el = jQuery(this).find(\'i\');$el.toggleClass(\'fa-eye fa-eye-slash\');
308 308
 var $eli = jQuery(this).parent().parent().find(\'input\');
309 309
 if($el.hasClass(\'fa-eye\'))
310 310
 {$eli.attr(\'type\',\'text\');}
311 311
 else{$eli.attr(\'type\',\'password\');}"
312 312
 ><i class="far fa-fw fa-eye-slash"></i></span>';
313
-			}
314
-
315
-			// input group wraps
316
-			if ( $args['input_group_left'] || $args['input_group_right'] ) {
317
-				$w100 = strpos( $args['class'], 'w-100' ) !== false ? ' w-100' : '';
318
-				$group_size = $size == 'lg' ? ' input-group-lg' : '';
319
-				$group_size = !$group_size && $size == 'sm' ? ' input-group-sm' : $group_size;
320
-
321
-				if ( $args['input_group_left'] ) {
322
-					$output = self::wrap( array(
323
-						'content'                 => $output,
324
-						'class'                   => $args['input_group_left_inside'] ? 'input-group-inside position-relative' . $w100 . $group_size : 'input-group' . $group_size,
325
-						'input_group_left'        => $args['input_group_left'],
326
-						'input_group_left_inside' => $args['input_group_left_inside']
327
-					) );
328
-				}
329
-				if ( $args['input_group_right'] ) {
330
-					$output = self::wrap( array(
331
-						'content'                  => $output,
332
-						'class'                    => $args['input_group_right_inside'] ? 'input-group-inside position-relative' . $w100 . $group_size : 'input-group' . $group_size,
333
-						'input_group_right'        => $args['input_group_right'],
334
-						'input_group_right_inside' => $args['input_group_right_inside']
335
-					) );
336
-				}
337
-
338
-			}
339
-
340
-			if ( ! $label_after ) {
341
-				$output .= $help_text;
342
-			}
343
-
344
-
345
-			if ( $args['label_type'] == 'horizontal' && $type != 'checkbox' ) {
346
-				$output = self::wrap( array(
347
-					'content' => $output,
348
-					'class'   => AUI_Component_Helper::get_column_class( $args['label_col'], 'input' )
349
-				) );
350
-			}
351
-
352
-			if ( ! $label_after ) {
353
-				$output = $label . $output;
354
-			}
355
-
356
-			// wrap
357
-			if ( ! $args['no_wrap'] ) {
358
-				if ( ! empty( $args['form_group_class'] ) ) {
359
-					$fg_class = esc_attr( $args['form_group_class'] );
360
-				}else{
361
-					$fg_class = $aui_bs5 ? 'mb-3' : 'form-group';
362
-				}
363
-				$form_group_class = $args['label_type'] == 'floating' && $type != 'checkbox' ? 'form-label-group' : $fg_class;
364
-				$wrap_class       = $args['label_type'] == 'horizontal' ? $form_group_class . ' row' : $form_group_class;
365
-				$wrap_class       = ! empty( $args['wrap_class'] ) ? $wrap_class . " " . $args['wrap_class'] : $wrap_class;
366
-				$output           = self::wrap( array(
367
-					'content'         => $output,
368
-					'class'           => $wrap_class,
369
-					'element_require' => $args['element_require'],
370
-					'argument_id'     => $args['id'],
371
-					'wrap_attributes' => $args['wrap_attributes'],
372
-				) );
373
-			}
374
-		}
375
-
376
-		return $output;
377
-	}
378
-
379
-	public static function label( $args = array(), $type = '' ) {
380
-		global $aui_bs5;
381
-		//<label for="exampleInputEmail1">Email address</label>
382
-		$defaults = array(
383
-			'title'      => 'div',
384
-			'for'        => '',
385
-			'class'      => '',
386
-			'label_type' => '', // empty = hidden, top, horizontal
387
-			'label_col'  => '',
388
-		);
389
-
390
-		/**
313
+			    }
314
+
315
+			    // input group wraps
316
+			    if ( $args['input_group_left'] || $args['input_group_right'] ) {
317
+				    $w100 = strpos( $args['class'], 'w-100' ) !== false ? ' w-100' : '';
318
+				    $group_size = $size == 'lg' ? ' input-group-lg' : '';
319
+				    $group_size = !$group_size && $size == 'sm' ? ' input-group-sm' : $group_size;
320
+
321
+				    if ( $args['input_group_left'] ) {
322
+					    $output = self::wrap( array(
323
+						    'content'                 => $output,
324
+						    'class'                   => $args['input_group_left_inside'] ? 'input-group-inside position-relative' . $w100 . $group_size : 'input-group' . $group_size,
325
+						    'input_group_left'        => $args['input_group_left'],
326
+						    'input_group_left_inside' => $args['input_group_left_inside']
327
+					    ) );
328
+				    }
329
+				    if ( $args['input_group_right'] ) {
330
+					    $output = self::wrap( array(
331
+						    'content'                  => $output,
332
+						    'class'                    => $args['input_group_right_inside'] ? 'input-group-inside position-relative' . $w100 . $group_size : 'input-group' . $group_size,
333
+						    'input_group_right'        => $args['input_group_right'],
334
+						    'input_group_right_inside' => $args['input_group_right_inside']
335
+					    ) );
336
+				    }
337
+
338
+			    }
339
+
340
+			    if ( ! $label_after ) {
341
+				    $output .= $help_text;
342
+			    }
343
+
344
+
345
+			    if ( $args['label_type'] == 'horizontal' && $type != 'checkbox' ) {
346
+				    $output = self::wrap( array(
347
+					    'content' => $output,
348
+					    'class'   => AUI_Component_Helper::get_column_class( $args['label_col'], 'input' )
349
+				    ) );
350
+			    }
351
+
352
+			    if ( ! $label_after ) {
353
+				    $output = $label . $output;
354
+			    }
355
+
356
+			    // wrap
357
+			    if ( ! $args['no_wrap'] ) {
358
+				    if ( ! empty( $args['form_group_class'] ) ) {
359
+					    $fg_class = esc_attr( $args['form_group_class'] );
360
+				    }else{
361
+					    $fg_class = $aui_bs5 ? 'mb-3' : 'form-group';
362
+				    }
363
+				    $form_group_class = $args['label_type'] == 'floating' && $type != 'checkbox' ? 'form-label-group' : $fg_class;
364
+				    $wrap_class       = $args['label_type'] == 'horizontal' ? $form_group_class . ' row' : $form_group_class;
365
+				    $wrap_class       = ! empty( $args['wrap_class'] ) ? $wrap_class . " " . $args['wrap_class'] : $wrap_class;
366
+				    $output           = self::wrap( array(
367
+					    'content'         => $output,
368
+					    'class'           => $wrap_class,
369
+					    'element_require' => $args['element_require'],
370
+					    'argument_id'     => $args['id'],
371
+					    'wrap_attributes' => $args['wrap_attributes'],
372
+				    ) );
373
+			    }
374
+		    }
375
+
376
+		    return $output;
377
+	    }
378
+
379
+	    public static function label( $args = array(), $type = '' ) {
380
+		    global $aui_bs5;
381
+		    //<label for="exampleInputEmail1">Email address</label>
382
+		    $defaults = array(
383
+			    'title'      => 'div',
384
+			    'for'        => '',
385
+			    'class'      => '',
386
+			    'label_type' => '', // empty = hidden, top, horizontal
387
+			    'label_col'  => '',
388
+		    );
389
+
390
+		    /**
391 391
 		 * Parse incoming $args into an array and merge it with $defaults
392 392
 		 */
393
-		$args   = wp_parse_args( $args, $defaults );
394
-		$output = '';
393
+		    $args   = wp_parse_args( $args, $defaults );
394
+		    $output = '';
395 395
 
396
-		if ( $args['title'] ) {
396
+		    if ( $args['title'] ) {
397 397
 
398
-			// maybe hide labels //@todo set a global option for visibility class
399
-			if ( $type == 'file' || $type == 'checkbox' || $type == 'radio' || ! empty( $args['label_type'] ) ) {
400
-				$class = $args['class'];
401
-			} else {
402
-				$class = 'sr-only ' . $args['class'];
403
-			}
398
+			    // maybe hide labels //@todo set a global option for visibility class
399
+			    if ( $type == 'file' || $type == 'checkbox' || $type == 'radio' || ! empty( $args['label_type'] ) ) {
400
+				    $class = $args['class'];
401
+			    } else {
402
+				    $class = 'sr-only ' . $args['class'];
403
+			    }
404 404
 
405
-			// maybe horizontal
406
-			if ( $args['label_type'] == 'horizontal' && $type != 'checkbox' ) {
407
-				$class .= ' ' . AUI_Component_Helper::get_column_class( $args['label_col'], 'label' ) . ' col-form-label '.$type;
408
-			}
405
+			    // maybe horizontal
406
+			    if ( $args['label_type'] == 'horizontal' && $type != 'checkbox' ) {
407
+				    $class .= ' ' . AUI_Component_Helper::get_column_class( $args['label_col'], 'label' ) . ' col-form-label '.$type;
408
+			    }
409 409
 
410
-			if( $aui_bs5 ){ $class .= ' form-label'; }
410
+			    if( $aui_bs5 ){ $class .= ' form-label'; }
411 411
 
412
-			// open
413
-			$output .= '<label ';
412
+			    // open
413
+			    $output .= '<label ';
414 414
 
415
-			// for
416
-			if ( ! empty( $args['for'] ) ) {
417
-				$output .= ' for="' . esc_attr( $args['for'] ) . '" ';
418
-			}
415
+			    // for
416
+			    if ( ! empty( $args['for'] ) ) {
417
+				    $output .= ' for="' . esc_attr( $args['for'] ) . '" ';
418
+			    }
419 419
 
420
-			// class
421
-			$class = $class ? AUI_Component_Helper::esc_classes( $class ) : '';
422
-			$output .= ' class="' . $class . '" ';
420
+			    // class
421
+			    $class = $class ? AUI_Component_Helper::esc_classes( $class ) : '';
422
+			    $output .= ' class="' . $class . '" ';
423 423
 
424
-			// close
425
-			$output .= '>';
424
+			    // close
425
+			    $output .= '>';
426 426
 
427 427
 
428
-			// title, don't escape fully as can contain html
429
-			if ( ! empty( $args['title'] ) ) {
430
-				$output .= wp_kses_post( $args['title'] );
431
-			}
428
+			    // title, don't escape fully as can contain html
429
+			    if ( ! empty( $args['title'] ) ) {
430
+				    $output .= wp_kses_post( $args['title'] );
431
+			    }
432 432
 
433
-			// close wrap
434
-			$output .= '</label>';
433
+			    // close wrap
434
+			    $output .= '</label>';
435 435
 
436 436
 
437
-		}
437
+		    }
438 438
 
439 439
 
440
-		return $output;
441
-	}
440
+		    return $output;
441
+	    }
442 442
 
443
-	/**
443
+	    /**
444 444
 	 * Wrap some content in a HTML wrapper.
445 445
 	 *
446 446
 	 * @param array $args
447 447
 	 *
448 448
 	 * @return string
449 449
 	 */
450
-	public static function wrap( $args = array() ) {
451
-		global $aui_bs5;
452
-		$defaults = array(
453
-			'type'                     => 'div',
454
-			'class'                    => $aui_bs5 ? 'mb-3' : 'form-group',
455
-			'content'                  => '',
456
-			'input_group_left'         => '',
457
-			'input_group_right'        => '',
458
-			'input_group_left_inside'  => false,
459
-			'input_group_right_inside' => false,
460
-			'element_require'          => '',
461
-			'argument_id'              => '',
462
-			'wrap_attributes'          => array()
463
-		);
464
-
465
-		/**
450
+	    public static function wrap( $args = array() ) {
451
+		    global $aui_bs5;
452
+		    $defaults = array(
453
+			    'type'                     => 'div',
454
+			    'class'                    => $aui_bs5 ? 'mb-3' : 'form-group',
455
+			    'content'                  => '',
456
+			    'input_group_left'         => '',
457
+			    'input_group_right'        => '',
458
+			    'input_group_left_inside'  => false,
459
+			    'input_group_right_inside' => false,
460
+			    'element_require'          => '',
461
+			    'argument_id'              => '',
462
+			    'wrap_attributes'          => array()
463
+		    );
464
+
465
+		    /**
466 466
 		 * Parse incoming $args into an array and merge it with $defaults
467 467
 		 */
468
-		$args   = wp_parse_args( $args, $defaults );
469
-		$output = '';
470
-		if ( $args['type'] ) {
468
+		    $args   = wp_parse_args( $args, $defaults );
469
+		    $output = '';
470
+		    if ( $args['type'] ) {
471 471
 
472
-			// open
473
-			$output .= '<' . sanitize_html_class( $args['type'] );
472
+			    // open
473
+			    $output .= '<' . sanitize_html_class( $args['type'] );
474 474
 
475
-			// element require
476
-			if ( ! empty( $args['element_require'] ) ) {
477
-				$output .= AUI_Component_Helper::element_require( $args['element_require'] );
478
-				$args['class'] .= " aui-conditional-field";
479
-			}
475
+			    // element require
476
+			    if ( ! empty( $args['element_require'] ) ) {
477
+				    $output .= AUI_Component_Helper::element_require( $args['element_require'] );
478
+				    $args['class'] .= " aui-conditional-field";
479
+			    }
480 480
 
481
-			// argument_id
482
-			if ( ! empty( $args['argument_id'] ) ) {
483
-				$output .= ' data-argument="' . esc_attr( $args['argument_id'] ) . '"';
484
-			}
481
+			    // argument_id
482
+			    if ( ! empty( $args['argument_id'] ) ) {
483
+				    $output .= ' data-argument="' . esc_attr( $args['argument_id'] ) . '"';
484
+			    }
485 485
 
486
-			// class
487
-			$class = ! empty( $args['class'] ) ? AUI_Component_Helper::esc_classes( $args['class'] ) : '';
488
-			$output .= ' class="' . $class . '" ';
486
+			    // class
487
+			    $class = ! empty( $args['class'] ) ? AUI_Component_Helper::esc_classes( $args['class'] ) : '';
488
+			    $output .= ' class="' . $class . '" ';
489 489
 
490
-			// Attributes
491
-			if ( ! empty( $args['wrap_attributes'] ) ) {
492
-				$output .= AUI_Component_Helper::extra_attributes( $args['wrap_attributes'] );
493
-			}
490
+			    // Attributes
491
+			    if ( ! empty( $args['wrap_attributes'] ) ) {
492
+				    $output .= AUI_Component_Helper::extra_attributes( $args['wrap_attributes'] );
493
+			    }
494 494
 
495
-			// close wrap
496
-			$output .= ' >';
495
+			    // close wrap
496
+			    $output .= ' >';
497 497
 
498 498
 
499
-			// Input group left
500
-			if ( ! empty( $args['input_group_left'] ) ) {
501
-				$position_class   = ! empty( $args['input_group_left_inside'] ) ? 'position-absolute h-100' : '';
502
-				$input_group_left = strpos( $args['input_group_left'], '<' ) !== false ? $args['input_group_left'] : '<span class="input-group-text">' . $args['input_group_left'] . '</span>';
503
-				$output .= $aui_bs5 ? $input_group_left : '<div class="input-group-prepend ' . $position_class . '">' . $input_group_left . '</div>';
504
-//				$output .= '<div class="input-group-prepend ' . $position_class . '">' . $input_group_left . '</div>';
505
-			}
499
+			    // Input group left
500
+			    if ( ! empty( $args['input_group_left'] ) ) {
501
+				    $position_class   = ! empty( $args['input_group_left_inside'] ) ? 'position-absolute h-100' : '';
502
+				    $input_group_left = strpos( $args['input_group_left'], '<' ) !== false ? $args['input_group_left'] : '<span class="input-group-text">' . $args['input_group_left'] . '</span>';
503
+				    $output .= $aui_bs5 ? $input_group_left : '<div class="input-group-prepend ' . $position_class . '">' . $input_group_left . '</div>';
504
+    //				$output .= '<div class="input-group-prepend ' . $position_class . '">' . $input_group_left . '</div>';
505
+			    }
506 506
 
507
-			// content
508
-			$output .= $args['content'];
507
+			    // content
508
+			    $output .= $args['content'];
509 509
 
510
-			// Input group right
511
-			if ( ! empty( $args['input_group_right'] ) ) {
512
-				$position_class    = ! empty( $args['input_group_right_inside'] ) ? 'position-absolute h-100' : '';
513
-				$input_group_right = strpos( $args['input_group_right'], '<' ) !== false ? $args['input_group_right'] : '<span class="input-group-text">' . $args['input_group_right'] . '</span>';
514
-				$output .= $aui_bs5 ? str_replace( 'input-group-text','input-group-text top-0 end-0', $input_group_right ) : '<div class="input-group-append ' . $position_class . '" style="top:0;right:0;">' . $input_group_right . '</div>';
515
-//				$output .= '<div class="input-group-append ' . $position_class . '" style="top:0;right:0;">' . $input_group_right . '</div>';
516
-			}
510
+			    // Input group right
511
+			    if ( ! empty( $args['input_group_right'] ) ) {
512
+				    $position_class    = ! empty( $args['input_group_right_inside'] ) ? 'position-absolute h-100' : '';
513
+				    $input_group_right = strpos( $args['input_group_right'], '<' ) !== false ? $args['input_group_right'] : '<span class="input-group-text">' . $args['input_group_right'] . '</span>';
514
+				    $output .= $aui_bs5 ? str_replace( 'input-group-text','input-group-text top-0 end-0', $input_group_right ) : '<div class="input-group-append ' . $position_class . '" style="top:0;right:0;">' . $input_group_right . '</div>';
515
+    //				$output .= '<div class="input-group-append ' . $position_class . '" style="top:0;right:0;">' . $input_group_right . '</div>';
516
+			    }
517 517
 
518 518
 
519
-			// close wrap
520
-			$output .= '</' . sanitize_html_class( $args['type'] ) . '>';
519
+			    // close wrap
520
+			    $output .= '</' . sanitize_html_class( $args['type'] ) . '>';
521 521
 
522 522
 
523
-		} else {
524
-			$output = $args['content'];
525
-		}
523
+		    } else {
524
+			    $output = $args['content'];
525
+		    }
526 526
 
527
-		return $output;
528
-	}
527
+		    return $output;
528
+	    }
529 529
 
530
-	/**
530
+	    /**
531 531
 	 * Build the component.
532 532
 	 *
533 533
 	 * @param array $args
534 534
 	 *
535 535
 	 * @return string The rendered component.
536 536
 	 */
537
-	public static function textarea( $args = array() ) {
538
-		global $aui_bs5;
539
-
540
-		$defaults = array(
541
-			'name'               => '',
542
-			'class'              => '',
543
-			'wrap_class'         => '',
544
-			'id'                 => '',
545
-			'placeholder'        => '',
546
-			'title'              => '',
547
-			'value'              => '',
548
-			'required'           => false,
549
-			'label'              => '',
550
-			'label_after'        => false,
551
-			'label_class'        => '',
552
-			'label_type'         => '',
553
-			'label_col'          => '',
554
-			// sets the label type, default: hidden. Options: hidden, top, horizontal, floating
555
-			'input_group_right'        => '',
556
-			'input_group_left'         => '',
557
-			'input_group_right_inside' => false,
558
-			'form_group_class'      => '',
559
-			'help_text'          => '',
560
-			'validation_text'    => '',
561
-			'validation_pattern' => '',
562
-			'no_wrap'            => false,
563
-			'rows'               => '',
564
-			'wysiwyg'            => false,
565
-			'allow_tags'         => false,
566
-			// Allow HTML tags
567
-			'element_require'    => '',
568
-			// [%element_id%] == "1"
569
-			'extra_attributes'   => array(),
570
-			// an array of extra attributes
571
-			'wrap_attributes'    => array(),
572
-		);
573
-
574
-		/**
537
+	    public static function textarea( $args = array() ) {
538
+		    global $aui_bs5;
539
+
540
+		    $defaults = array(
541
+			    'name'               => '',
542
+			    'class'              => '',
543
+			    'wrap_class'         => '',
544
+			    'id'                 => '',
545
+			    'placeholder'        => '',
546
+			    'title'              => '',
547
+			    'value'              => '',
548
+			    'required'           => false,
549
+			    'label'              => '',
550
+			    'label_after'        => false,
551
+			    'label_class'        => '',
552
+			    'label_type'         => '',
553
+			    'label_col'          => '',
554
+			    // sets the label type, default: hidden. Options: hidden, top, horizontal, floating
555
+			    'input_group_right'        => '',
556
+			    'input_group_left'         => '',
557
+			    'input_group_right_inside' => false,
558
+			    'form_group_class'      => '',
559
+			    'help_text'          => '',
560
+			    'validation_text'    => '',
561
+			    'validation_pattern' => '',
562
+			    'no_wrap'            => false,
563
+			    'rows'               => '',
564
+			    'wysiwyg'            => false,
565
+			    'allow_tags'         => false,
566
+			    // Allow HTML tags
567
+			    'element_require'    => '',
568
+			    // [%element_id%] == "1"
569
+			    'extra_attributes'   => array(),
570
+			    // an array of extra attributes
571
+			    'wrap_attributes'    => array(),
572
+		    );
573
+
574
+		    /**
575 575
 		 * Parse incoming $args into an array and merge it with $defaults
576 576
 		 */
577
-		$args   = wp_parse_args( $args, $defaults );
578
-		$output = '';
579
-		$label = '';
580
-
581
-		// hidden label option needs to be empty
582
-		$args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type'];
583
-
584
-		// floating labels don't work with wysiwyg so set it as top
585
-		if ( $args['label_type'] == 'floating' && ! empty( $args['wysiwyg'] ) ) {
586
-			$args['label_type'] = 'top';
587
-		}
588
-
589
-		$label_after = $args['label_after'];
590
-
591
-		// floating labels need label after
592
-		if ( $args['label_type'] == 'floating' && empty( $args['wysiwyg'] ) ) {
593
-			$label_after         = true;
594
-			$args['placeholder'] = ' '; // set the placeholder not empty so the floating label works.
595
-		}
596
-
597
-		// label
598
-		if ( ! empty( $args['label'] ) && is_array( $args['label'] ) ) {
599
-		} elseif ( ! empty( $args['label'] ) && ! $label_after ) {
600
-			$label_args = array(
601
-				'title'      => $args['label'],
602
-				'for'        => $args['id'],
603
-				'class'      => $args['label_class'] . " ",
604
-				'label_type' => $args['label_type'],
605
-				'label_col'  => $args['label_col']
606
-			);
607
-			$label .= self::label( $label_args );
608
-		}
609
-
610
-		// maybe horizontal label
611
-		if ( $args['label_type'] == 'horizontal' ) {
612
-			$input_col = AUI_Component_Helper::get_column_class( $args['label_col'], 'input' );
613
-			$label .= '<div class="' . $input_col . '">';
614
-		}
615
-
616
-		if ( ! empty( $args['wysiwyg'] ) ) {
617
-			ob_start();
618
-			$content   = $args['value'];
619
-			$editor_id = ! empty( $args['id'] ) ? sanitize_html_class( $args['id'] ) : 'wp_editor';
620
-			$settings  = array(
621
-				'textarea_rows' => ! empty( absint( $args['rows'] ) ) ? absint( $args['rows'] ) : 4,
622
-				'quicktags'     => false,
623
-				'media_buttons' => false,
624
-				'editor_class'  => 'form-control',
625
-				'textarea_name' => ! empty( $args['name'] ) ? sanitize_html_class( $args['name'] ) : sanitize_html_class( $args['id'] ),
626
-				'teeny'         => true,
627
-			);
628
-
629
-			// maybe set settings if array
630
-			if ( is_array( $args['wysiwyg'] ) ) {
631
-				$settings = wp_parse_args( $args['wysiwyg'], $settings );
632
-			}
633
-
634
-			wp_editor( $content, $editor_id, $settings );
635
-			$output .= ob_get_clean();
636
-		} else {
637
-
638
-			// open
639
-			$output .= '<textarea ';
640
-
641
-			// name
642
-			if ( ! empty( $args['name'] ) ) {
643
-				$output .= ' name="' . esc_attr( $args['name'] ) . '" ';
644
-			}
645
-
646
-			// id
647
-			if ( ! empty( $args['id'] ) ) {
648
-				$output .= ' id="' . sanitize_html_class( $args['id'] ) . '" ';
649
-			}
650
-
651
-			// placeholder
652
-			if ( isset( $args['placeholder'] ) && '' != $args['placeholder'] ) {
653
-				$output .= ' placeholder="' . esc_attr( $args['placeholder'] ) . '" ';
654
-			}
655
-
656
-			// title
657
-			if ( ! empty( $args['title'] ) ) {
658
-				$output .= ' title="' . esc_attr( $args['title'] ) . '" ';
659
-			}
660
-
661
-			// validation text
662
-			if ( ! empty( $args['validation_text'] ) ) {
663
-				$output .= ' oninvalid="setCustomValidity(\'' . esc_attr( addslashes( $args['validation_text'] ) ) . '\')" ';
664
-				$output .= ' onchange="try{setCustomValidity(\'\')}catch(e){}" ';
665
-			}
666
-
667
-			// validation_pattern
668
-			if ( ! empty( $args['validation_pattern'] ) ) {
669
-				$output .= ' pattern="' . esc_attr( $args['validation_pattern'] ) . '" ';
670
-			}
671
-
672
-			// required
673
-			if ( ! empty( $args['required'] ) ) {
674
-				$output .= ' required ';
675
-			}
676
-
677
-			// rows
678
-			if ( ! empty( $args['rows'] ) ) {
679
-				$output .= ' rows="' . absint( $args['rows'] ) . '" ';
680
-			}
681
-
682
-
683
-			// class
684
-			$class = ! empty( $args['class'] ) ? $args['class'] : '';
685
-			$output .= ' class="form-control ' . $class . '" ';
686
-
687
-			// extra attributes
688
-			if ( ! empty( $args['extra_attributes'] ) ) {
689
-				$output .= AUI_Component_Helper::extra_attributes( $args['extra_attributes'] );
690
-			}
691
-
692
-			// close tag
693
-			$output .= ' >';
694
-
695
-			// value
696
-			if ( ! empty( $args['value'] ) ) {
697
-				if ( ! empty( $args['allow_tags'] ) ) {
698
-					$output .= AUI_Component_Helper::sanitize_html_field( $args['value'], $args ); // Sanitize HTML.
699
-				} else {
700
-					$output .= AUI_Component_Helper::sanitize_textarea_field( $args['value'] );
701
-				}
702
-			}
703
-
704
-			// closing tag
705
-			$output .= '</textarea>';
706
-
707
-
708
-			// input group wraps
709
-			if ( $args['input_group_left'] || $args['input_group_right'] ) {
710
-				$w100 = strpos( $args['class'], 'w-100' ) !== false ? ' w-100' : '';
711
-				if ( $args['input_group_left'] ) {
712
-					$output = self::wrap( array(
713
-						'content'                 => $output,
714
-						'class'                   => $args['input_group_left_inside'] ? 'input-group-inside position-relative' . $w100 : 'input-group',
715
-						'input_group_left'        => $args['input_group_left'],
716
-						'input_group_left_inside' => $args['input_group_left_inside']
717
-					) );
718
-				}
719
-				if ( $args['input_group_right'] ) {
720
-					$output = self::wrap( array(
721
-						'content'                  => $output,
722
-						'class'                    => $args['input_group_right_inside'] ? 'input-group-inside position-relative' . $w100 : 'input-group',
723
-						'input_group_right'        => $args['input_group_right'],
724
-						'input_group_right_inside' => $args['input_group_right_inside']
725
-					) );
726
-				}
727
-
728
-			}
729
-
730
-
731
-		}
732
-
733
-		if ( ! empty( $args['label'] ) && $label_after ) {
734
-			$label_args = array(
735
-				'title'      => $args['label'],
736
-				'for'        => $args['id'],
737
-				'class'      => $args['label_class'] . " ",
738
-				'label_type' => $args['label_type'],
739
-				'label_col'  => $args['label_col']
740
-			);
741
-			$output .= self::label( $label_args );
742
-		}
743
-
744
-		// help text
745
-		if ( ! empty( $args['help_text'] ) ) {
746
-			$output .= AUI_Component_Helper::help_text( $args['help_text'] );
747
-		}
748
-
749
-		if ( ! $label_after ) {
750
-			$output = $label . $output;
751
-		}
752
-
753
-		// maybe horizontal label
754
-		if ( $args['label_type'] == 'horizontal' ) {
755
-			$output .= '</div>';
756
-		}
757
-
758
-
759
-		// wrap
760
-		if ( ! $args['no_wrap'] ) {
761
-			if ( ! empty( $args['form_group_class'] ) ) {
762
-				$fg_class = esc_attr( $args['form_group_class'] );
763
-			}else{
764
-				$fg_class = $aui_bs5 ? 'mb-3' : 'form-group';
765
-			}
766
-			$form_group_class = $args['label_type'] == 'floating' ? 'form-label-group' : $fg_class;
767
-			$wrap_class       = $args['label_type'] == 'horizontal' ? $form_group_class . ' row' : $form_group_class;
768
-			$wrap_class       = ! empty( $args['wrap_class'] ) ? $wrap_class . " " . $args['wrap_class'] : $wrap_class;
769
-			$output           = self::wrap( array(
770
-				'content'         => $output,
771
-				'class'           => $wrap_class,
772
-				'element_require' => $args['element_require'],
773
-				'argument_id'     => $args['id'],
774
-				'wrap_attributes' => $args['wrap_attributes'],
775
-			) );
776
-		}
777
-
778
-
779
-		return $output;
780
-	}
781
-
782
-	/**
577
+		    $args   = wp_parse_args( $args, $defaults );
578
+		    $output = '';
579
+		    $label = '';
580
+
581
+		    // hidden label option needs to be empty
582
+		    $args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type'];
583
+
584
+		    // floating labels don't work with wysiwyg so set it as top
585
+		    if ( $args['label_type'] == 'floating' && ! empty( $args['wysiwyg'] ) ) {
586
+			    $args['label_type'] = 'top';
587
+		    }
588
+
589
+		    $label_after = $args['label_after'];
590
+
591
+		    // floating labels need label after
592
+		    if ( $args['label_type'] == 'floating' && empty( $args['wysiwyg'] ) ) {
593
+			    $label_after         = true;
594
+			    $args['placeholder'] = ' '; // set the placeholder not empty so the floating label works.
595
+		    }
596
+
597
+		    // label
598
+		    if ( ! empty( $args['label'] ) && is_array( $args['label'] ) ) {
599
+		    } elseif ( ! empty( $args['label'] ) && ! $label_after ) {
600
+			    $label_args = array(
601
+				    'title'      => $args['label'],
602
+				    'for'        => $args['id'],
603
+				    'class'      => $args['label_class'] . " ",
604
+				    'label_type' => $args['label_type'],
605
+				    'label_col'  => $args['label_col']
606
+			    );
607
+			    $label .= self::label( $label_args );
608
+		    }
609
+
610
+		    // maybe horizontal label
611
+		    if ( $args['label_type'] == 'horizontal' ) {
612
+			    $input_col = AUI_Component_Helper::get_column_class( $args['label_col'], 'input' );
613
+			    $label .= '<div class="' . $input_col . '">';
614
+		    }
615
+
616
+		    if ( ! empty( $args['wysiwyg'] ) ) {
617
+			    ob_start();
618
+			    $content   = $args['value'];
619
+			    $editor_id = ! empty( $args['id'] ) ? sanitize_html_class( $args['id'] ) : 'wp_editor';
620
+			    $settings  = array(
621
+				    'textarea_rows' => ! empty( absint( $args['rows'] ) ) ? absint( $args['rows'] ) : 4,
622
+				    'quicktags'     => false,
623
+				    'media_buttons' => false,
624
+				    'editor_class'  => 'form-control',
625
+				    'textarea_name' => ! empty( $args['name'] ) ? sanitize_html_class( $args['name'] ) : sanitize_html_class( $args['id'] ),
626
+				    'teeny'         => true,
627
+			    );
628
+
629
+			    // maybe set settings if array
630
+			    if ( is_array( $args['wysiwyg'] ) ) {
631
+				    $settings = wp_parse_args( $args['wysiwyg'], $settings );
632
+			    }
633
+
634
+			    wp_editor( $content, $editor_id, $settings );
635
+			    $output .= ob_get_clean();
636
+		    } else {
637
+
638
+			    // open
639
+			    $output .= '<textarea ';
640
+
641
+			    // name
642
+			    if ( ! empty( $args['name'] ) ) {
643
+				    $output .= ' name="' . esc_attr( $args['name'] ) . '" ';
644
+			    }
645
+
646
+			    // id
647
+			    if ( ! empty( $args['id'] ) ) {
648
+				    $output .= ' id="' . sanitize_html_class( $args['id'] ) . '" ';
649
+			    }
650
+
651
+			    // placeholder
652
+			    if ( isset( $args['placeholder'] ) && '' != $args['placeholder'] ) {
653
+				    $output .= ' placeholder="' . esc_attr( $args['placeholder'] ) . '" ';
654
+			    }
655
+
656
+			    // title
657
+			    if ( ! empty( $args['title'] ) ) {
658
+				    $output .= ' title="' . esc_attr( $args['title'] ) . '" ';
659
+			    }
660
+
661
+			    // validation text
662
+			    if ( ! empty( $args['validation_text'] ) ) {
663
+				    $output .= ' oninvalid="setCustomValidity(\'' . esc_attr( addslashes( $args['validation_text'] ) ) . '\')" ';
664
+				    $output .= ' onchange="try{setCustomValidity(\'\')}catch(e){}" ';
665
+			    }
666
+
667
+			    // validation_pattern
668
+			    if ( ! empty( $args['validation_pattern'] ) ) {
669
+				    $output .= ' pattern="' . esc_attr( $args['validation_pattern'] ) . '" ';
670
+			    }
671
+
672
+			    // required
673
+			    if ( ! empty( $args['required'] ) ) {
674
+				    $output .= ' required ';
675
+			    }
676
+
677
+			    // rows
678
+			    if ( ! empty( $args['rows'] ) ) {
679
+				    $output .= ' rows="' . absint( $args['rows'] ) . '" ';
680
+			    }
681
+
682
+
683
+			    // class
684
+			    $class = ! empty( $args['class'] ) ? $args['class'] : '';
685
+			    $output .= ' class="form-control ' . $class . '" ';
686
+
687
+			    // extra attributes
688
+			    if ( ! empty( $args['extra_attributes'] ) ) {
689
+				    $output .= AUI_Component_Helper::extra_attributes( $args['extra_attributes'] );
690
+			    }
691
+
692
+			    // close tag
693
+			    $output .= ' >';
694
+
695
+			    // value
696
+			    if ( ! empty( $args['value'] ) ) {
697
+				    if ( ! empty( $args['allow_tags'] ) ) {
698
+					    $output .= AUI_Component_Helper::sanitize_html_field( $args['value'], $args ); // Sanitize HTML.
699
+				    } else {
700
+					    $output .= AUI_Component_Helper::sanitize_textarea_field( $args['value'] );
701
+				    }
702
+			    }
703
+
704
+			    // closing tag
705
+			    $output .= '</textarea>';
706
+
707
+
708
+			    // input group wraps
709
+			    if ( $args['input_group_left'] || $args['input_group_right'] ) {
710
+				    $w100 = strpos( $args['class'], 'w-100' ) !== false ? ' w-100' : '';
711
+				    if ( $args['input_group_left'] ) {
712
+					    $output = self::wrap( array(
713
+						    'content'                 => $output,
714
+						    'class'                   => $args['input_group_left_inside'] ? 'input-group-inside position-relative' . $w100 : 'input-group',
715
+						    'input_group_left'        => $args['input_group_left'],
716
+						    'input_group_left_inside' => $args['input_group_left_inside']
717
+					    ) );
718
+				    }
719
+				    if ( $args['input_group_right'] ) {
720
+					    $output = self::wrap( array(
721
+						    'content'                  => $output,
722
+						    'class'                    => $args['input_group_right_inside'] ? 'input-group-inside position-relative' . $w100 : 'input-group',
723
+						    'input_group_right'        => $args['input_group_right'],
724
+						    'input_group_right_inside' => $args['input_group_right_inside']
725
+					    ) );
726
+				    }
727
+
728
+			    }
729
+
730
+
731
+		    }
732
+
733
+		    if ( ! empty( $args['label'] ) && $label_after ) {
734
+			    $label_args = array(
735
+				    'title'      => $args['label'],
736
+				    'for'        => $args['id'],
737
+				    'class'      => $args['label_class'] . " ",
738
+				    'label_type' => $args['label_type'],
739
+				    'label_col'  => $args['label_col']
740
+			    );
741
+			    $output .= self::label( $label_args );
742
+		    }
743
+
744
+		    // help text
745
+		    if ( ! empty( $args['help_text'] ) ) {
746
+			    $output .= AUI_Component_Helper::help_text( $args['help_text'] );
747
+		    }
748
+
749
+		    if ( ! $label_after ) {
750
+			    $output = $label . $output;
751
+		    }
752
+
753
+		    // maybe horizontal label
754
+		    if ( $args['label_type'] == 'horizontal' ) {
755
+			    $output .= '</div>';
756
+		    }
757
+
758
+
759
+		    // wrap
760
+		    if ( ! $args['no_wrap'] ) {
761
+			    if ( ! empty( $args['form_group_class'] ) ) {
762
+				    $fg_class = esc_attr( $args['form_group_class'] );
763
+			    }else{
764
+				    $fg_class = $aui_bs5 ? 'mb-3' : 'form-group';
765
+			    }
766
+			    $form_group_class = $args['label_type'] == 'floating' ? 'form-label-group' : $fg_class;
767
+			    $wrap_class       = $args['label_type'] == 'horizontal' ? $form_group_class . ' row' : $form_group_class;
768
+			    $wrap_class       = ! empty( $args['wrap_class'] ) ? $wrap_class . " " . $args['wrap_class'] : $wrap_class;
769
+			    $output           = self::wrap( array(
770
+				    'content'         => $output,
771
+				    'class'           => $wrap_class,
772
+				    'element_require' => $args['element_require'],
773
+				    'argument_id'     => $args['id'],
774
+				    'wrap_attributes' => $args['wrap_attributes'],
775
+			    ) );
776
+		    }
777
+
778
+
779
+		    return $output;
780
+	    }
781
+
782
+	    /**
783 783
 	 * Build the component.
784 784
 	 *
785 785
 	 * @param array $args
786 786
 	 *
787 787
 	 * @return string The rendered component.
788 788
 	 */
789
-	public static function select( $args = array() ) {
790
-		global $aui_bs5;
791
-		$defaults = array(
792
-			'class'            => '',
793
-			'wrap_class'       => '',
794
-			'id'               => '',
795
-			'title'            => '',
796
-			'value'            => '',
797
-			// can be an array or a string
798
-			'required'         => false,
799
-			'label'            => '',
800
-			'label_after'      => false,
801
-			'label_type'       => '',
802
-			'label_col'        => '',
803
-			// sets the label type, default: hidden. Options: hidden, top, horizontal, floating
804
-			'label_class'      => '',
805
-			'help_text'        => '',
806
-			'placeholder'      => '',
807
-			'options'          => array(),
808
-			// array or string
809
-			'icon'             => '',
810
-			'multiple'         => false,
811
-			'select2'          => false,
812
-			'no_wrap'          => false,
813
-			'input_group_right' => '',
814
-			'input_group_left' => '',
815
-			'input_group_right_inside' => false, // forces the input group inside the input
816
-			'input_group_left_inside' => false, // forces the input group inside the input
817
-			'form_group_class'  => '',
818
-			'element_require'  => '',
819
-			// [%element_id%] == "1"
820
-			'extra_attributes' => array(),
821
-			// an array of extra attributes
822
-			'wrap_attributes'  => array(),
823
-		);
824
-
825
-		/**
789
+	    public static function select( $args = array() ) {
790
+		    global $aui_bs5;
791
+		    $defaults = array(
792
+			    'class'            => '',
793
+			    'wrap_class'       => '',
794
+			    'id'               => '',
795
+			    'title'            => '',
796
+			    'value'            => '',
797
+			    // can be an array or a string
798
+			    'required'         => false,
799
+			    'label'            => '',
800
+			    'label_after'      => false,
801
+			    'label_type'       => '',
802
+			    'label_col'        => '',
803
+			    // sets the label type, default: hidden. Options: hidden, top, horizontal, floating
804
+			    'label_class'      => '',
805
+			    'help_text'        => '',
806
+			    'placeholder'      => '',
807
+			    'options'          => array(),
808
+			    // array or string
809
+			    'icon'             => '',
810
+			    'multiple'         => false,
811
+			    'select2'          => false,
812
+			    'no_wrap'          => false,
813
+			    'input_group_right' => '',
814
+			    'input_group_left' => '',
815
+			    'input_group_right_inside' => false, // forces the input group inside the input
816
+			    'input_group_left_inside' => false, // forces the input group inside the input
817
+			    'form_group_class'  => '',
818
+			    'element_require'  => '',
819
+			    // [%element_id%] == "1"
820
+			    'extra_attributes' => array(),
821
+			    // an array of extra attributes
822
+			    'wrap_attributes'  => array(),
823
+		    );
824
+
825
+		    /**
826 826
 		 * Parse incoming $args into an array and merge it with $defaults
827 827
 		 */
828
-		$args   = wp_parse_args( $args, $defaults );
829
-		$output = '';
830
-
831
-		// for now lets hide floating labels
832
-		if ( $args['label_type'] == 'floating' ) {
833
-			$args['label_type'] = 'hidden';
834
-		}
835
-
836
-		// hidden label option needs to be empty
837
-		$args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type'];
838
-
839
-
840
-		$label_after = $args['label_after'];
841
-
842
-		// floating labels need label after
843
-		if ( $args['label_type'] == 'floating' ) {
844
-			$label_after         = true;
845
-			$args['placeholder'] = ' '; // set the placeholder not empty so the floating label works.
846
-		}
847
-
848
-		// Maybe setup select2
849
-		$is_select2 = false;
850
-		if ( ! empty( $args['select2'] ) ) {
851
-			$args['class'] .= ' aui-select2';
852
-			$is_select2 = true;
853
-		} elseif ( strpos( $args['class'], 'aui-select2' ) !== false ) {
854
-			$is_select2 = true;
855
-		}
856
-
857
-		// select2 tags
858
-		if ( ! empty( $args['select2'] ) && $args['select2'] === 'tags' ) { // triple equals needed here for some reason
859
-			$args['data-tags']             = 'true';
860
-			$args['data-token-separators'] = "[',']";
861
-			$args['multiple']              = true;
862
-		}
863
-
864
-		// select2 placeholder
865
-		if ( $is_select2 && isset( $args['placeholder'] ) && '' != $args['placeholder'] && empty( $args['data-placeholder'] ) ) {
866
-			$args['data-placeholder'] = esc_attr( $args['placeholder'] );
867
-			$args['data-allow-clear'] = isset( $args['data-allow-clear'] ) ? (bool) $args['data-allow-clear'] : true;
868
-		}
869
-
870
-		// Set hidden input to save empty value for multiselect.
871
-		if ( ! empty( $args['multiple'] ) && ! empty( $args['name'] ) ) {
872
-			$output .= '<input type="hidden" ' . AUI_Component_Helper::name( $args['name'] ) . ' value="" data-ignore-rule/>';
873
-		}
874
-
875
-		// open/type
876
-		$output .= '<select ';
877
-
878
-		// style
879
-		if ( $is_select2 && !($args['input_group_left'] || $args['input_group_right'])) {
880
-			$output .= " style='width:100%;' ";
881
-		}
882
-
883
-		// element require
884
-		if ( ! empty( $args['element_require'] ) ) {
885
-			$output .= AUI_Component_Helper::element_require( $args['element_require'] );
886
-			$args['class'] .= " aui-conditional-field";
887
-		}
888
-
889
-		// class
890
-		$class = ! empty( $args['class'] ) ? $args['class'] : '';
891
-		$select_class = $aui_bs5 ? 'form-select ' : 'custom-select ';
892
-		$output .= AUI_Component_Helper::class_attr( $select_class . $class );
893
-
894
-		// name
895
-		if ( ! empty( $args['name'] ) ) {
896
-			$output .= AUI_Component_Helper::name( $args['name'], $args['multiple'] );
897
-		}
898
-
899
-		// id
900
-		if ( ! empty( $args['id'] ) ) {
901
-			$output .= AUI_Component_Helper::id( $args['id'] );
902
-		}
903
-
904
-		// title
905
-		if ( ! empty( $args['title'] ) ) {
906
-			$output .= AUI_Component_Helper::title( $args['title'] );
907
-		}
908
-
909
-		// data-attributes
910
-		$output .= AUI_Component_Helper::data_attributes( $args );
911
-
912
-		// aria-attributes
913
-		$output .= AUI_Component_Helper::aria_attributes( $args );
914
-
915
-		// extra attributes
916
-		if ( ! empty( $args['extra_attributes'] ) ) {
917
-			$output .= AUI_Component_Helper::extra_attributes( $args['extra_attributes'] );
918
-		}
919
-
920
-		// required
921
-		if ( ! empty( $args['required'] ) ) {
922
-			$output .= ' required ';
923
-		}
924
-
925
-		// multiple
926
-		if ( ! empty( $args['multiple'] ) ) {
927
-			$output .= ' multiple ';
928
-		}
929
-
930
-		// close opening tag
931
-		$output .= ' >';
932
-
933
-		// placeholder
934
-		if ( isset( $args['placeholder'] ) && '' != $args['placeholder'] && ! $is_select2 ) {
935
-			$output .= '<option value="" disabled selected hidden>' . esc_attr( $args['placeholder'] ) . '</option>';
936
-		} elseif ( $is_select2 && ! empty( $args['placeholder'] ) ) {
937
-			$output .= "<option></option>"; // select2 needs an empty select to fill the placeholder
938
-		}
939
-
940
-		// Options
941
-		if ( ! empty( $args['options'] ) ) {
942
-
943
-			if ( ! is_array( $args['options'] ) ) {
944
-				$output .= $args['options']; // not the preferred way but an option
945
-			} else {
946
-				foreach ( $args['options'] as $val => $name ) {
947
-					$selected = '';
948
-					if ( is_array( $name ) ) {
949
-						if ( isset( $name['optgroup'] ) && ( $name['optgroup'] == 'start' || $name['optgroup'] == 'end' ) ) {
950
-							$option_label = isset( $name['label'] ) ? $name['label'] : '';
951
-
952
-							$output .= $name['optgroup'] == 'start' ? '<optgroup label="' . esc_attr( $option_label ) . '">' : '</optgroup>';
953
-						} else {
954
-							$option_label = isset( $name['label'] ) ? $name['label'] : '';
955
-							$option_value = isset( $name['value'] ) ? $name['value'] : '';
956
-							$extra_attributes = !empty($name['extra_attributes']) ? AUI_Component_Helper::extra_attributes( $name['extra_attributes'] ) : '';
957
-							if ( ! empty( $args['multiple'] ) && ! empty( $args['value'] ) && is_array( $args['value'] ) ) {
958
-								$selected = in_array( $option_value, stripslashes_deep( $args['value'] ) ) ? "selected" : "";
959
-							} elseif ( ! empty( $args['value'] ) ) {
960
-								$selected = selected( $option_value, stripslashes_deep( $args['value'] ), false );
961
-							} elseif ( empty( $args['value'] ) && $args['value'] === $option_value ) {
962
-								$selected = selected( $option_value, $args['value'], false );
963
-							}
964
-
965
-							$output .= '<option value="' . esc_attr( $option_value ) . '" ' . $selected . ' '.$extra_attributes .'>' . $option_label . '</option>';
966
-						}
967
-					} else {
968
-						if ( ! empty( $args['value'] ) ) {
969
-							if ( is_array( $args['value'] ) ) {
970
-								$selected = in_array( $val, $args['value'] ) ? 'selected="selected"' : '';
971
-							} elseif ( ! empty( $args['value'] ) ) {
972
-								$selected = selected( $args['value'], $val, false );
973
-							}
974
-						} elseif ( $args['value'] === $val ) {
975
-							$selected = selected( $args['value'], $val, false );
976
-						}
977
-						$output .= '<option value="' . esc_attr( $val ) . '" ' . $selected . '>' . esc_attr( $name ) . '</option>';
978
-					}
979
-				}
980
-			}
981
-
982
-		}
983
-
984
-		// closing tag
985
-		$output .= '</select>';
986
-
987
-		$label = '';
988
-		$help_text = '';
989
-		// label
990
-		if ( ! empty( $args['label'] ) && is_array( $args['label'] ) ) {
991
-		} elseif ( ! empty( $args['label'] ) && ! $label_after ) {
992
-			$label_args = array(
993
-				'title'      => $args['label'],
994
-				'for'        => $args['id'],
995
-				'class'      => $args['label_class'] . " ",
996
-				'label_type' => $args['label_type'],
997
-				'label_col'  => $args['label_col']
998
-			);
999
-			$label = self::label( $label_args );
1000
-		}
1001
-
1002
-		// help text
1003
-		if ( ! empty( $args['help_text'] ) ) {
1004
-			$help_text = AUI_Component_Helper::help_text( $args['help_text'] );
1005
-		}
1006
-
1007
-		// input group wraps
1008
-		if ( $args['input_group_left'] || $args['input_group_right'] ) {
1009
-			$w100 = strpos( $args['class'], 'w-100' ) !== false ? ' w-100' : '';
1010
-			if ( $args['input_group_left'] ) {
1011
-				$output = self::wrap( array(
1012
-					'content'                 => $output,
1013
-					'class'                   => $args['input_group_left_inside'] ? 'input-group-inside position-relative' . $w100 : 'input-group',
1014
-					'input_group_left'        => $args['input_group_left'],
1015
-					'input_group_left_inside' => $args['input_group_left_inside']
1016
-				) );
1017
-			}
1018
-			if ( $args['input_group_right'] ) {
1019
-				$output = self::wrap( array(
1020
-					'content'                  => $output,
1021
-					'class'                    => $args['input_group_right_inside'] ? 'input-group-inside position-relative' . $w100 : 'input-group',
1022
-					'input_group_right'        => $args['input_group_right'],
1023
-					'input_group_right_inside' => $args['input_group_right_inside']
1024
-				) );
1025
-			}
1026
-
1027
-		}
1028
-
1029
-		if ( ! $label_after ) {
1030
-			$output .= $help_text;
1031
-		}
1032
-
1033
-
1034
-		if ( $args['label_type'] == 'horizontal' ) {
1035
-			$output = self::wrap( array(
1036
-				'content' => $output,
1037
-				'class'   => AUI_Component_Helper::get_column_class( $args['label_col'], 'input' )
1038
-			) );
1039
-		}
1040
-
1041
-		if ( ! $label_after ) {
1042
-			$output = $label . $output;
1043
-		}
1044
-
1045
-		// maybe horizontal label
1046
-//		if ( $args['label_type'] == 'horizontal' ) {
1047
-//			$output .= '</div>';
1048
-//		}
1049
-
1050
-
1051
-		// wrap
1052
-		if ( ! $args['no_wrap'] ) {
1053
-			if ( ! empty( $args['form_group_class'] ) ) {
1054
-				$fg_class = esc_attr( $args['form_group_class'] );
1055
-			}else{
1056
-				$fg_class = $aui_bs5 ? 'mb-3' : 'form-group';
1057
-			}
1058
-			$wrap_class = $args['label_type'] == 'horizontal' ? $fg_class . ' row' : $fg_class;
1059
-			$wrap_class = ! empty( $args['wrap_class'] ) ? $wrap_class . " " . $args['wrap_class'] : $wrap_class;
1060
-			$output     = self::wrap( array(
1061
-				'content'         => $output,
1062
-				'class'           => $wrap_class,
1063
-				'element_require' => $args['element_require'],
1064
-				'argument_id'     => $args['id'],
1065
-				'wrap_attributes' => $args['wrap_attributes'],
1066
-			) );
1067
-		}
1068
-
1069
-
1070
-		return $output;
1071
-	}
1072
-
1073
-	/**
828
+		    $args   = wp_parse_args( $args, $defaults );
829
+		    $output = '';
830
+
831
+		    // for now lets hide floating labels
832
+		    if ( $args['label_type'] == 'floating' ) {
833
+			    $args['label_type'] = 'hidden';
834
+		    }
835
+
836
+		    // hidden label option needs to be empty
837
+		    $args['label_type'] = $args['label_type'] == 'hidden' ? '' : $args['label_type'];
838
+
839
+
840
+		    $label_after = $args['label_after'];
841
+
842
+		    // floating labels need label after
843
+		    if ( $args['label_type'] == 'floating' ) {
844
+			    $label_after         = true;
845
+			    $args['placeholder'] = ' '; // set the placeholder not empty so the floating label works.
846
+		    }
847
+
848
+		    // Maybe setup select2
849
+		    $is_select2 = false;
850
+		    if ( ! empty( $args['select2'] ) ) {
851
+			    $args['class'] .= ' aui-select2';
852
+			    $is_select2 = true;
853
+		    } elseif ( strpos( $args['class'], 'aui-select2' ) !== false ) {
854
+			    $is_select2 = true;
855
+		    }
856
+
857
+		    // select2 tags
858
+		    if ( ! empty( $args['select2'] ) && $args['select2'] === 'tags' ) { // triple equals needed here for some reason
859
+			    $args['data-tags']             = 'true';
860
+			    $args['data-token-separators'] = "[',']";
861
+			    $args['multiple']              = true;
862
+		    }
863
+
864
+		    // select2 placeholder
865
+		    if ( $is_select2 && isset( $args['placeholder'] ) && '' != $args['placeholder'] && empty( $args['data-placeholder'] ) ) {
866
+			    $args['data-placeholder'] = esc_attr( $args['placeholder'] );
867
+			    $args['data-allow-clear'] = isset( $args['data-allow-clear'] ) ? (bool) $args['data-allow-clear'] : true;
868
+		    }
869
+
870
+		    // Set hidden input to save empty value for multiselect.
871
+		    if ( ! empty( $args['multiple'] ) && ! empty( $args['name'] ) ) {
872
+			    $output .= '<input type="hidden" ' . AUI_Component_Helper::name( $args['name'] ) . ' value="" data-ignore-rule/>';
873
+		    }
874
+
875
+		    // open/type
876
+		    $output .= '<select ';
877
+
878
+		    // style
879
+		    if ( $is_select2 && !($args['input_group_left'] || $args['input_group_right'])) {
880
+			    $output .= " style='width:100%;' ";
881
+		    }
882
+
883
+		    // element require
884
+		    if ( ! empty( $args['element_require'] ) ) {
885
+			    $output .= AUI_Component_Helper::element_require( $args['element_require'] );
886
+			    $args['class'] .= " aui-conditional-field";
887
+		    }
888
+
889
+		    // class
890
+		    $class = ! empty( $args['class'] ) ? $args['class'] : '';
891
+		    $select_class = $aui_bs5 ? 'form-select ' : 'custom-select ';
892
+		    $output .= AUI_Component_Helper::class_attr( $select_class . $class );
893
+
894
+		    // name
895
+		    if ( ! empty( $args['name'] ) ) {
896
+			    $output .= AUI_Component_Helper::name( $args['name'], $args['multiple'] );
897
+		    }
898
+
899
+		    // id
900
+		    if ( ! empty( $args['id'] ) ) {
901
+			    $output .= AUI_Component_Helper::id( $args['id'] );
902
+		    }
903
+
904
+		    // title
905
+		    if ( ! empty( $args['title'] ) ) {
906
+			    $output .= AUI_Component_Helper::title( $args['title'] );
907
+		    }
908
+
909
+		    // data-attributes
910
+		    $output .= AUI_Component_Helper::data_attributes( $args );
911
+
912
+		    // aria-attributes
913
+		    $output .= AUI_Component_Helper::aria_attributes( $args );
914
+
915
+		    // extra attributes
916
+		    if ( ! empty( $args['extra_attributes'] ) ) {
917
+			    $output .= AUI_Component_Helper::extra_attributes( $args['extra_attributes'] );
918
+		    }
919
+
920
+		    // required
921
+		    if ( ! empty( $args['required'] ) ) {
922
+			    $output .= ' required ';
923
+		    }
924
+
925
+		    // multiple
926
+		    if ( ! empty( $args['multiple'] ) ) {
927
+			    $output .= ' multiple ';
928
+		    }
929
+
930
+		    // close opening tag
931
+		    $output .= ' >';
932
+
933
+		    // placeholder
934
+		    if ( isset( $args['placeholder'] ) && '' != $args['placeholder'] && ! $is_select2 ) {
935
+			    $output .= '<option value="" disabled selected hidden>' . esc_attr( $args['placeholder'] ) . '</option>';
936
+		    } elseif ( $is_select2 && ! empty( $args['placeholder'] ) ) {
937
+			    $output .= "<option></option>"; // select2 needs an empty select to fill the placeholder
938
+		    }
939
+
940
+		    // Options
941
+		    if ( ! empty( $args['options'] ) ) {
942
+
943
+			    if ( ! is_array( $args['options'] ) ) {
944
+				    $output .= $args['options']; // not the preferred way but an option
945
+			    } else {
946
+				    foreach ( $args['options'] as $val => $name ) {
947
+					    $selected = '';
948
+					    if ( is_array( $name ) ) {
949
+						    if ( isset( $name['optgroup'] ) && ( $name['optgroup'] == 'start' || $name['optgroup'] == 'end' ) ) {
950
+							    $option_label = isset( $name['label'] ) ? $name['label'] : '';
951
+
952
+							    $output .= $name['optgroup'] == 'start' ? '<optgroup label="' . esc_attr( $option_label ) . '">' : '</optgroup>';
953
+						    } else {
954
+							    $option_label = isset( $name['label'] ) ? $name['label'] : '';
955
+							    $option_value = isset( $name['value'] ) ? $name['value'] : '';
956
+							    $extra_attributes = !empty($name['extra_attributes']) ? AUI_Component_Helper::extra_attributes( $name['extra_attributes'] ) : '';
957
+							    if ( ! empty( $args['multiple'] ) && ! empty( $args['value'] ) && is_array( $args['value'] ) ) {
958
+								    $selected = in_array( $option_value, stripslashes_deep( $args['value'] ) ) ? "selected" : "";
959
+							    } elseif ( ! empty( $args['value'] ) ) {
960
+								    $selected = selected( $option_value, stripslashes_deep( $args['value'] ), false );
961
+							    } elseif ( empty( $args['value'] ) && $args['value'] === $option_value ) {
962
+								    $selected = selected( $option_value, $args['value'], false );
963
+							    }
964
+
965
+							    $output .= '<option value="' . esc_attr( $option_value ) . '" ' . $selected . ' '.$extra_attributes .'>' . $option_label . '</option>';
966
+						    }
967
+					    } else {
968
+						    if ( ! empty( $args['value'] ) ) {
969
+							    if ( is_array( $args['value'] ) ) {
970
+								    $selected = in_array( $val, $args['value'] ) ? 'selected="selected"' : '';
971
+							    } elseif ( ! empty( $args['value'] ) ) {
972
+								    $selected = selected( $args['value'], $val, false );
973
+							    }
974
+						    } elseif ( $args['value'] === $val ) {
975
+							    $selected = selected( $args['value'], $val, false );
976
+						    }
977
+						    $output .= '<option value="' . esc_attr( $val ) . '" ' . $selected . '>' . esc_attr( $name ) . '</option>';
978
+					    }
979
+				    }
980
+			    }
981
+
982
+		    }
983
+
984
+		    // closing tag
985
+		    $output .= '</select>';
986
+
987
+		    $label = '';
988
+		    $help_text = '';
989
+		    // label
990
+		    if ( ! empty( $args['label'] ) && is_array( $args['label'] ) ) {
991
+		    } elseif ( ! empty( $args['label'] ) && ! $label_after ) {
992
+			    $label_args = array(
993
+				    'title'      => $args['label'],
994
+				    'for'        => $args['id'],
995
+				    'class'      => $args['label_class'] . " ",
996
+				    'label_type' => $args['label_type'],
997
+				    'label_col'  => $args['label_col']
998
+			    );
999
+			    $label = self::label( $label_args );
1000
+		    }
1001
+
1002
+		    // help text
1003
+		    if ( ! empty( $args['help_text'] ) ) {
1004
+			    $help_text = AUI_Component_Helper::help_text( $args['help_text'] );
1005
+		    }
1006
+
1007
+		    // input group wraps
1008
+		    if ( $args['input_group_left'] || $args['input_group_right'] ) {
1009
+			    $w100 = strpos( $args['class'], 'w-100' ) !== false ? ' w-100' : '';
1010
+			    if ( $args['input_group_left'] ) {
1011
+				    $output = self::wrap( array(
1012
+					    'content'                 => $output,
1013
+					    'class'                   => $args['input_group_left_inside'] ? 'input-group-inside position-relative' . $w100 : 'input-group',
1014
+					    'input_group_left'        => $args['input_group_left'],
1015
+					    'input_group_left_inside' => $args['input_group_left_inside']
1016
+				    ) );
1017
+			    }
1018
+			    if ( $args['input_group_right'] ) {
1019
+				    $output = self::wrap( array(
1020
+					    'content'                  => $output,
1021
+					    'class'                    => $args['input_group_right_inside'] ? 'input-group-inside position-relative' . $w100 : 'input-group',
1022
+					    'input_group_right'        => $args['input_group_right'],
1023
+					    'input_group_right_inside' => $args['input_group_right_inside']
1024
+				    ) );
1025
+			    }
1026
+
1027
+		    }
1028
+
1029
+		    if ( ! $label_after ) {
1030
+			    $output .= $help_text;
1031
+		    }
1032
+
1033
+
1034
+		    if ( $args['label_type'] == 'horizontal' ) {
1035
+			    $output = self::wrap( array(
1036
+				    'content' => $output,
1037
+				    'class'   => AUI_Component_Helper::get_column_class( $args['label_col'], 'input' )
1038
+			    ) );
1039
+		    }
1040
+
1041
+		    if ( ! $label_after ) {
1042
+			    $output = $label . $output;
1043
+		    }
1044
+
1045
+		    // maybe horizontal label
1046
+    //		if ( $args['label_type'] == 'horizontal' ) {
1047
+    //			$output .= '</div>';
1048
+    //		}
1049
+
1050
+
1051
+		    // wrap
1052
+		    if ( ! $args['no_wrap'] ) {
1053
+			    if ( ! empty( $args['form_group_class'] ) ) {
1054
+				    $fg_class = esc_attr( $args['form_group_class'] );
1055
+			    }else{
1056
+				    $fg_class = $aui_bs5 ? 'mb-3' : 'form-group';
1057
+			    }
1058
+			    $wrap_class = $args['label_type'] == 'horizontal' ? $fg_class . ' row' : $fg_class;
1059
+			    $wrap_class = ! empty( $args['wrap_class'] ) ? $wrap_class . " " . $args['wrap_class'] : $wrap_class;
1060
+			    $output     = self::wrap( array(
1061
+				    'content'         => $output,
1062
+				    'class'           => $wrap_class,
1063
+				    'element_require' => $args['element_require'],
1064
+				    'argument_id'     => $args['id'],
1065
+				    'wrap_attributes' => $args['wrap_attributes'],
1066
+			    ) );
1067
+		    }
1068
+
1069
+
1070
+		    return $output;
1071
+	    }
1072
+
1073
+	    /**
1074 1074
 	 * Build the component.
1075 1075
 	 *
1076 1076
 	 * @param array $args
1077 1077
 	 *
1078 1078
 	 * @return string The rendered component.
1079 1079
 	 */
1080
-	public static function radio( $args = array() ) {
1081
-		global $aui_bs5;
1082
-
1083
-		$defaults = array(
1084
-			'class'            => '',
1085
-			'wrap_class'       => '',
1086
-			'id'               => '',
1087
-			'title'            => '',
1088
-			'horizontal'       => false,
1089
-			// sets the lable horizontal
1090
-			'value'            => '',
1091
-			'label'            => '',
1092
-			'label_class'      => '',
1093
-			'label_type'       => '',
1094
-			'label_col'        => '',
1095
-			// sets the label type, default: hidden. Options: hidden, top, horizontal, floating
1096
-			'help_text'        => '',
1097
-			'inline'           => true,
1098
-			'required'         => false,
1099
-			'options'          => array(),
1100
-			'icon'             => '',
1101
-			'no_wrap'          => false,
1102
-			'element_require'  => '',
1103
-			// [%element_id%] == "1"
1104
-			'extra_attributes' => array(),
1105
-			// an array of extra attributes
1106
-			'wrap_attributes'  => array()
1107
-		);
1108
-
1109
-		/**
1080
+	    public static function radio( $args = array() ) {
1081
+		    global $aui_bs5;
1082
+
1083
+		    $defaults = array(
1084
+			    'class'            => '',
1085
+			    'wrap_class'       => '',
1086
+			    'id'               => '',
1087
+			    'title'            => '',
1088
+			    'horizontal'       => false,
1089
+			    // sets the lable horizontal
1090
+			    'value'            => '',
1091
+			    'label'            => '',
1092
+			    'label_class'      => '',
1093
+			    'label_type'       => '',
1094
+			    'label_col'        => '',
1095
+			    // sets the label type, default: hidden. Options: hidden, top, horizontal, floating
1096
+			    'help_text'        => '',
1097
+			    'inline'           => true,
1098
+			    'required'         => false,
1099
+			    'options'          => array(),
1100
+			    'icon'             => '',
1101
+			    'no_wrap'          => false,
1102
+			    'element_require'  => '',
1103
+			    // [%element_id%] == "1"
1104
+			    'extra_attributes' => array(),
1105
+			    // an array of extra attributes
1106
+			    'wrap_attributes'  => array()
1107
+		    );
1108
+
1109
+		    /**
1110 1110
 		 * Parse incoming $args into an array and merge it with $defaults
1111 1111
 		 */
1112
-		$args = wp_parse_args( $args, $defaults );
1113
-
1114
-		// for now lets use horizontal for floating
1115
-		if ( $args['label_type'] == 'floating' ) {
1116
-			$args['label_type'] = 'horizontal';
1117
-		}
1118
-
1119
-		$label_args = array(
1120
-			'title'      => $args['label'],
1121
-			'class'      => $args['label_class'] . " pt-0 ",
1122
-			'label_type' => $args['label_type'],
1123
-			'label_col'  => $args['label_col']
1124
-		);
1125
-
1126
-		if ( $args['label_type'] == 'top' || $args['label_type'] == 'hidden' ) {
1127
-			$label_args['class'] .= 'd-block ';
1128
-
1129
-			if ( $args['label_type'] == 'hidden' ) {
1130
-				$label_args['class'] .= 'sr-only ';
1131
-			}
1132
-		}
1133
-
1134
-		$output = '';
1135
-
1136
-		// label before
1137
-		if ( ! empty( $args['label'] ) ) {
1138
-			$output .= self::label( $label_args, 'radio' );
1139
-		}
1140
-
1141
-		// maybe horizontal label
1142
-		if ( $args['label_type'] == 'horizontal' ) {
1143
-			$input_col = AUI_Component_Helper::get_column_class( $args['label_col'], 'input' );
1144
-			$output .= '<div class="' . $input_col . '">';
1145
-		}
1146
-
1147
-		if ( ! empty( $args['options'] ) ) {
1148
-			$count = 0;
1149
-			foreach ( $args['options'] as $value => $label ) {
1150
-				$option_args            = $args;
1151
-				$option_args['value']   = $value;
1152
-				$option_args['label']   = $label;
1153
-				$option_args['checked'] = $value == $args['value'] ? true : false;
1154
-				$output .= self::radio_option( $option_args, $count );
1155
-				$count ++;
1156
-			}
1157
-		}
1158
-
1159
-		// help text
1160
-		$help_text = ! empty( $args['help_text'] ) ? AUI_Component_Helper::help_text( $args['help_text'] ) : '';
1161
-		$output .= $help_text;
1162
-
1163
-		// maybe horizontal label
1164
-		if ( $args['label_type'] == 'horizontal' ) {
1165
-			$output .= '</div>';
1166
-		}
1167
-
1168
-		// wrap
1169
-		$fg_class = $aui_bs5 ? 'mb-3' : 'form-group';
1170
-		$wrap_class = $args['label_type'] == 'horizontal' ? $fg_class . ' row' : $fg_class;
1171
-		$wrap_class = ! empty( $args['wrap_class'] ) ? $wrap_class . " " . $args['wrap_class'] : $wrap_class;
1172
-		$output     = self::wrap( array(
1173
-			'content'         => $output,
1174
-			'class'           => $wrap_class,
1175
-			'element_require' => $args['element_require'],
1176
-			'argument_id'     => $args['id'],
1177
-			'wrap_attributes' => $args['wrap_attributes'],
1178
-		) );
1179
-
1180
-
1181
-		return $output;
1182
-	}
1183
-
1184
-	/**
1112
+		    $args = wp_parse_args( $args, $defaults );
1113
+
1114
+		    // for now lets use horizontal for floating
1115
+		    if ( $args['label_type'] == 'floating' ) {
1116
+			    $args['label_type'] = 'horizontal';
1117
+		    }
1118
+
1119
+		    $label_args = array(
1120
+			    'title'      => $args['label'],
1121
+			    'class'      => $args['label_class'] . " pt-0 ",
1122
+			    'label_type' => $args['label_type'],
1123
+			    'label_col'  => $args['label_col']
1124
+		    );
1125
+
1126
+		    if ( $args['label_type'] == 'top' || $args['label_type'] == 'hidden' ) {
1127
+			    $label_args['class'] .= 'd-block ';
1128
+
1129
+			    if ( $args['label_type'] == 'hidden' ) {
1130
+				    $label_args['class'] .= 'sr-only ';
1131
+			    }
1132
+		    }
1133
+
1134
+		    $output = '';
1135
+
1136
+		    // label before
1137
+		    if ( ! empty( $args['label'] ) ) {
1138
+			    $output .= self::label( $label_args, 'radio' );
1139
+		    }
1140
+
1141
+		    // maybe horizontal label
1142
+		    if ( $args['label_type'] == 'horizontal' ) {
1143
+			    $input_col = AUI_Component_Helper::get_column_class( $args['label_col'], 'input' );
1144
+			    $output .= '<div class="' . $input_col . '">';
1145
+		    }
1146
+
1147
+		    if ( ! empty( $args['options'] ) ) {
1148
+			    $count = 0;
1149
+			    foreach ( $args['options'] as $value => $label ) {
1150
+				    $option_args            = $args;
1151
+				    $option_args['value']   = $value;
1152
+				    $option_args['label']   = $label;
1153
+				    $option_args['checked'] = $value == $args['value'] ? true : false;
1154
+				    $output .= self::radio_option( $option_args, $count );
1155
+				    $count ++;
1156
+			    }
1157
+		    }
1158
+
1159
+		    // help text
1160
+		    $help_text = ! empty( $args['help_text'] ) ? AUI_Component_Helper::help_text( $args['help_text'] ) : '';
1161
+		    $output .= $help_text;
1162
+
1163
+		    // maybe horizontal label
1164
+		    if ( $args['label_type'] == 'horizontal' ) {
1165
+			    $output .= '</div>';
1166
+		    }
1167
+
1168
+		    // wrap
1169
+		    $fg_class = $aui_bs5 ? 'mb-3' : 'form-group';
1170
+		    $wrap_class = $args['label_type'] == 'horizontal' ? $fg_class . ' row' : $fg_class;
1171
+		    $wrap_class = ! empty( $args['wrap_class'] ) ? $wrap_class . " " . $args['wrap_class'] : $wrap_class;
1172
+		    $output     = self::wrap( array(
1173
+			    'content'         => $output,
1174
+			    'class'           => $wrap_class,
1175
+			    'element_require' => $args['element_require'],
1176
+			    'argument_id'     => $args['id'],
1177
+			    'wrap_attributes' => $args['wrap_attributes'],
1178
+		    ) );
1179
+
1180
+
1181
+		    return $output;
1182
+	    }
1183
+
1184
+	    /**
1185 1185
 	 * Build the component.
1186 1186
 	 *
1187 1187
 	 * @param array $args
1188 1188
 	 *
1189 1189
 	 * @return string The rendered component.
1190 1190
 	 */
1191
-	public static function radio_option( $args = array(), $count = '' ) {
1192
-		$defaults = array(
1193
-			'class'            => '',
1194
-			'id'               => '',
1195
-			'title'            => '',
1196
-			'value'            => '',
1197
-			'required'         => false,
1198
-			'inline'           => true,
1199
-			'label'            => '',
1200
-			'options'          => array(),
1201
-			'icon'             => '',
1202
-			'no_wrap'          => false,
1203
-			'extra_attributes' => array() // an array of extra attributes
1204
-		);
1205
-
1206
-		/**
1191
+	    public static function radio_option( $args = array(), $count = '' ) {
1192
+		    $defaults = array(
1193
+			    'class'            => '',
1194
+			    'id'               => '',
1195
+			    'title'            => '',
1196
+			    'value'            => '',
1197
+			    'required'         => false,
1198
+			    'inline'           => true,
1199
+			    'label'            => '',
1200
+			    'options'          => array(),
1201
+			    'icon'             => '',
1202
+			    'no_wrap'          => false,
1203
+			    'extra_attributes' => array() // an array of extra attributes
1204
+		    );
1205
+
1206
+		    /**
1207 1207
 		 * Parse incoming $args into an array and merge it with $defaults
1208 1208
 		 */
1209
-		$args = wp_parse_args( $args, $defaults );
1210
-
1211
-		$output = '';
1212
-
1213
-		// open/type
1214
-		$output .= '<input type="radio"';
1215
-
1216
-		// class
1217
-		$output .= ' class="form-check-input" ';
1218
-
1219
-		// name
1220
-		if ( ! empty( $args['name'] ) ) {
1221
-			$output .= AUI_Component_Helper::name( $args['name'] );
1222
-		}
1223
-
1224
-		// id
1225
-		if ( ! empty( $args['id'] ) ) {
1226
-			$output .= AUI_Component_Helper::id( $args['id'] . $count );
1227
-		}
1228
-
1229
-		// title
1230
-		if ( ! empty( $args['title'] ) ) {
1231
-			$output .= AUI_Component_Helper::title( $args['title'] );
1232
-		}
1233
-
1234
-		// value
1235
-		if ( isset( $args['value'] ) ) {
1236
-			$output .= AUI_Component_Helper::value( $args['value'] );
1237
-		}
1238
-
1239
-		// checked, for radio and checkboxes
1240
-		if ( $args['checked'] ) {
1241
-			$output .= ' checked ';
1242
-		}
1243
-
1244
-		// data-attributes
1245
-		$output .= AUI_Component_Helper::data_attributes( $args );
1246
-
1247
-		// aria-attributes
1248
-		$output .= AUI_Component_Helper::aria_attributes( $args );
1249
-
1250
-		// extra attributes
1251
-		if ( ! empty( $args['extra_attributes'] ) ) {
1252
-			$output .= AUI_Component_Helper::extra_attributes( $args['extra_attributes'] );
1253
-		}
1254
-
1255
-		// required
1256
-		if ( ! empty( $args['required'] ) ) {
1257
-			$output .= ' required ';
1258
-		}
1259
-
1260
-		// close opening tag
1261
-		$output .= ' >';
1262
-
1263
-		// label
1264
-		if ( ! empty( $args['label'] ) && is_array( $args['label'] ) ) {
1265
-		} elseif ( ! empty( $args['label'] ) ) {
1266
-			$output .= self::label( array(
1267
-				'title' => $args['label'],
1268
-				'for'   => $args['id'] . $count,
1269
-				'class' => 'form-check-label'
1270
-			), 'radio' );
1271
-		}
1272
-
1273
-		// wrap
1274
-		if ( ! $args['no_wrap'] ) {
1275
-			$wrap_class = $args['inline'] ? 'form-check form-check-inline' : 'form-check';
1276
-
1277
-			// Unique wrap class
1278
-			$uniq_class = 'fwrap';
1279
-			if ( ! empty( $args['name'] ) ) {
1280
-				$uniq_class .= '-' . $args['name'];
1281
-			} else if ( ! empty( $args['id'] ) ) {
1282
-				$uniq_class .= '-' . $args['id'];
1283
-			}
1284
-
1285
-			if ( isset( $args['value'] ) || $args['value'] !== "" ) {
1286
-				$uniq_class .= '-' . $args['value'];
1287
-			} else {
1288
-				$uniq_class .= '-' . $count;
1289
-			}
1290
-			$wrap_class .= ' ' . sanitize_html_class( $uniq_class );
1291
-
1292
-			$output = self::wrap( array(
1293
-				'content' => $output,
1294
-				'class'   => $wrap_class
1295
-			) );
1296
-		}
1297
-
1298
-		return $output;
1299
-	}
1209
+		    $args = wp_parse_args( $args, $defaults );
1210
+
1211
+		    $output = '';
1212
+
1213
+		    // open/type
1214
+		    $output .= '<input type="radio"';
1215
+
1216
+		    // class
1217
+		    $output .= ' class="form-check-input" ';
1218
+
1219
+		    // name
1220
+		    if ( ! empty( $args['name'] ) ) {
1221
+			    $output .= AUI_Component_Helper::name( $args['name'] );
1222
+		    }
1223
+
1224
+		    // id
1225
+		    if ( ! empty( $args['id'] ) ) {
1226
+			    $output .= AUI_Component_Helper::id( $args['id'] . $count );
1227
+		    }
1228
+
1229
+		    // title
1230
+		    if ( ! empty( $args['title'] ) ) {
1231
+			    $output .= AUI_Component_Helper::title( $args['title'] );
1232
+		    }
1233
+
1234
+		    // value
1235
+		    if ( isset( $args['value'] ) ) {
1236
+			    $output .= AUI_Component_Helper::value( $args['value'] );
1237
+		    }
1238
+
1239
+		    // checked, for radio and checkboxes
1240
+		    if ( $args['checked'] ) {
1241
+			    $output .= ' checked ';
1242
+		    }
1243
+
1244
+		    // data-attributes
1245
+		    $output .= AUI_Component_Helper::data_attributes( $args );
1246
+
1247
+		    // aria-attributes
1248
+		    $output .= AUI_Component_Helper::aria_attributes( $args );
1249
+
1250
+		    // extra attributes
1251
+		    if ( ! empty( $args['extra_attributes'] ) ) {
1252
+			    $output .= AUI_Component_Helper::extra_attributes( $args['extra_attributes'] );
1253
+		    }
1254
+
1255
+		    // required
1256
+		    if ( ! empty( $args['required'] ) ) {
1257
+			    $output .= ' required ';
1258
+		    }
1259
+
1260
+		    // close opening tag
1261
+		    $output .= ' >';
1262
+
1263
+		    // label
1264
+		    if ( ! empty( $args['label'] ) && is_array( $args['label'] ) ) {
1265
+		    } elseif ( ! empty( $args['label'] ) ) {
1266
+			    $output .= self::label( array(
1267
+				    'title' => $args['label'],
1268
+				    'for'   => $args['id'] . $count,
1269
+				    'class' => 'form-check-label'
1270
+			    ), 'radio' );
1271
+		    }
1272
+
1273
+		    // wrap
1274
+		    if ( ! $args['no_wrap'] ) {
1275
+			    $wrap_class = $args['inline'] ? 'form-check form-check-inline' : 'form-check';
1276
+
1277
+			    // Unique wrap class
1278
+			    $uniq_class = 'fwrap';
1279
+			    if ( ! empty( $args['name'] ) ) {
1280
+				    $uniq_class .= '-' . $args['name'];
1281
+			    } else if ( ! empty( $args['id'] ) ) {
1282
+				    $uniq_class .= '-' . $args['id'];
1283
+			    }
1284
+
1285
+			    if ( isset( $args['value'] ) || $args['value'] !== "" ) {
1286
+				    $uniq_class .= '-' . $args['value'];
1287
+			    } else {
1288
+				    $uniq_class .= '-' . $count;
1289
+			    }
1290
+			    $wrap_class .= ' ' . sanitize_html_class( $uniq_class );
1291
+
1292
+			    $output = self::wrap( array(
1293
+				    'content' => $output,
1294
+				    'class'   => $wrap_class
1295
+			    ) );
1296
+		    }
1297
+
1298
+		    return $output;
1299
+	    }
1300 1300
 
1301 1301
 }
1302 1302
\ No newline at end of file
Please login to merge, or discard this patch.
ayecode/wp-ayecode-ui/includes/components/class-aui-component-alert.php 1 patch
Switch Indentation   +78 added lines, -78 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1
-<?php
1
+    <?php
2 2
 
3
-if ( ! defined( 'ABSPATH' ) ) {
4
-	exit; // Exit if accessed directly
3
+    if ( ! defined( 'ABSPATH' ) ) {
4
+	    exit; // Exit if accessed directly
5 5
 }
6 6
 
7 7
 /**
@@ -9,89 +9,89 @@  discard block
 block discarded – undo
9 9
  *
10 10
  * @since 1.0.0
11 11
  */
12
-class AUI_Component_Alert {
12
+    class AUI_Component_Alert {
13 13
 
14
-	/**
14
+	    /**
15 15
 	 * Build the component.
16 16
 	 * 
17 17
 	 * @param array $args
18 18
 	 *
19 19
 	 * @return string The rendered component.
20 20
 	 */
21
-	public static function get($args = array()){
22
-		global $aui_bs5;
23
-		$defaults = array(
24
-			'type'       => 'info',
25
-			'class'      => '',
26
-			'icon' => '',
27
-			'heading'    => '',
28
-			'content'    => '',
29
-			'footer'     => '',
30
-			'dismissible'=> false,
31
-			'data'       => '',
32
-		);
33
-
34
-		/**
21
+	    public static function get($args = array()){
22
+		    global $aui_bs5;
23
+		    $defaults = array(
24
+			    'type'       => 'info',
25
+			    'class'      => '',
26
+			    'icon' => '',
27
+			    'heading'    => '',
28
+			    'content'    => '',
29
+			    'footer'     => '',
30
+			    'dismissible'=> false,
31
+			    'data'       => '',
32
+		    );
33
+
34
+		    /**
35 35
 		 * Parse incoming $args into an array and merge it with $defaults
36 36
 		 */
37
-		$args   = wp_parse_args( $args, $defaults );
38
-		$output = '';
39
-		if ( ! empty( $args['content'] ) ) {
40
-			$type = sanitize_html_class( $args['type'] );
41
-			if($type=='error'){$type='danger';}
42
-			$icon = !empty($args['icon']) ? "<i class='".esc_attr($args['icon'])."'></i>" : '';
43
-
44
-			// set default icon
45
-			if(!$icon && $args['icon']!==false && $type){
46
-				if($type=='danger'){$icon = '<i class="fas fa-exclamation-circle"></i>';}
47
-				elseif($type=='warning'){$icon = '<i class="fas fa-exclamation-triangle"></i>';}
48
-				elseif($type=='success'){$icon = '<i class="fas fa-check-circle"></i>';}
49
-				elseif($type=='info'){$icon = '<i class="fas fa-info-circle"></i>';}
50
-			}
51
-
52
-			$data = '';
53
-			$class = !empty($args['class']) ? esc_attr($args['class']) : '';
54
-			if($args['dismissible']){$class .= " alert-dismissible fade show";}
55
-
56
-			// open
57
-			$output .= '<div class="alert alert-' . $type . ' '.$class.'" role="alert" '.$data.'>';
58
-
59
-			// heading
60
-			if ( ! empty( $args['heading'] ) ) {
61
-				$output .= '<h4 class="alert-heading">' . $args['heading'] . '</h4>';
62
-			}
63
-
64
-			// icon
65
-			if ( ! empty( $icon) ) {
66
-				$output .= $icon." ";
67
-			}
68
-
69
-			// content
70
-			$output .= $args['content'];
71
-
72
-			// dismissible
73
-			if($args['dismissible']){
74
-
75
-				if ( $aui_bs5 ) {
76
-					$output .= '<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>';
77
-				}else{
78
-					$output .= '<button type="button" class="close" data-dismiss="alert" aria-label="Close">';
79
-					$output .= '<span aria-hidden="true">&times;</span>';
80
-					$output .= '</button>';
81
-				}
82
-			}
83
-
84
-			// footer
85
-			if ( ! empty( $args['footer'] ) ) {
86
-				$output .= '<hr>';
87
-				$output .= '<p class="mb-0">' . $args['footer'] . '</p>';
88
-			}
89
-
90
-			// close
91
-			$output .= '</div>';
92
-		}
93
-
94
-		return $output;
95
-	}
37
+		    $args   = wp_parse_args( $args, $defaults );
38
+		    $output = '';
39
+		    if ( ! empty( $args['content'] ) ) {
40
+			    $type = sanitize_html_class( $args['type'] );
41
+			    if($type=='error'){$type='danger';}
42
+			    $icon = !empty($args['icon']) ? "<i class='".esc_attr($args['icon'])."'></i>" : '';
43
+
44
+			    // set default icon
45
+			    if(!$icon && $args['icon']!==false && $type){
46
+				    if($type=='danger'){$icon = '<i class="fas fa-exclamation-circle"></i>';}
47
+				    elseif($type=='warning'){$icon = '<i class="fas fa-exclamation-triangle"></i>';}
48
+				    elseif($type=='success'){$icon = '<i class="fas fa-check-circle"></i>';}
49
+				    elseif($type=='info'){$icon = '<i class="fas fa-info-circle"></i>';}
50
+			    }
51
+
52
+			    $data = '';
53
+			    $class = !empty($args['class']) ? esc_attr($args['class']) : '';
54
+			    if($args['dismissible']){$class .= " alert-dismissible fade show";}
55
+
56
+			    // open
57
+			    $output .= '<div class="alert alert-' . $type . ' '.$class.'" role="alert" '.$data.'>';
58
+
59
+			    // heading
60
+			    if ( ! empty( $args['heading'] ) ) {
61
+				    $output .= '<h4 class="alert-heading">' . $args['heading'] . '</h4>';
62
+			    }
63
+
64
+			    // icon
65
+			    if ( ! empty( $icon) ) {
66
+				    $output .= $icon." ";
67
+			    }
68
+
69
+			    // content
70
+			    $output .= $args['content'];
71
+
72
+			    // dismissible
73
+			    if($args['dismissible']){
74
+
75
+				    if ( $aui_bs5 ) {
76
+					    $output .= '<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>';
77
+				    }else{
78
+					    $output .= '<button type="button" class="close" data-dismiss="alert" aria-label="Close">';
79
+					    $output .= '<span aria-hidden="true">&times;</span>';
80
+					    $output .= '</button>';
81
+				    }
82
+			    }
83
+
84
+			    // footer
85
+			    if ( ! empty( $args['footer'] ) ) {
86
+				    $output .= '<hr>';
87
+				    $output .= '<p class="mb-0">' . $args['footer'] . '</p>';
88
+			    }
89
+
90
+			    // close
91
+			    $output .= '</div>';
92
+		    }
93
+
94
+		    return $output;
95
+	    }
96 96
 
97 97
 }
98 98
\ No newline at end of file
Please login to merge, or discard this patch.
ayecode/wp-ayecode-ui/includes/components/class-aui-component-button.php 1 patch
Switch Indentation   +116 added lines, -116 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1
-<?php
1
+    <?php
2 2
 
3
-if ( ! defined( 'ABSPATH' ) ) {
4
-	exit; // Exit if accessed directly
3
+    if ( ! defined( 'ABSPATH' ) ) {
4
+	    exit; // Exit if accessed directly
5 5
 }
6 6
 
7 7
 /**
@@ -9,145 +9,145 @@  discard block
 block discarded – undo
9 9
  *
10 10
  * @since 1.0.0
11 11
  */
12
-class AUI_Component_Button {
12
+    class AUI_Component_Button {
13 13
 
14
-	/**
14
+	    /**
15 15
 	 * Build the component.
16 16
 	 *
17 17
 	 * @param array $args
18 18
 	 *
19 19
 	 * @return string The rendered component.
20 20
 	 */
21
-	public static function get($args = array()){
22
-		$defaults = array(
23
-			'type'       => 'a', // a, button, badge
24
-			'href'       => '#',
25
-			'new_window' => false,
26
-			'class'      => 'btn btn-primary',
27
-			'id'         => '',
28
-			'title'      => '',
29
-			'value'      => '',
30
-			'content'    => '',
31
-			'icon'       => '',
32
-			'hover_content' => '',
33
-			'hover_icon'    => '',
34
-			'new_line_after' => true,
35
-			'no_wrap'    => true,
36
-			'onclick'    => '',
37
-			'style'  => '',
38
-			'extra_attributes'  => array(), // an array of extra attributes
39
-			'icon_extra_attributes'  => array() // an array of icon extra attributes
40
-		);
41
-
42
-		/**
21
+	    public static function get($args = array()){
22
+		    $defaults = array(
23
+			    'type'       => 'a', // a, button, badge
24
+			    'href'       => '#',
25
+			    'new_window' => false,
26
+			    'class'      => 'btn btn-primary',
27
+			    'id'         => '',
28
+			    'title'      => '',
29
+			    'value'      => '',
30
+			    'content'    => '',
31
+			    'icon'       => '',
32
+			    'hover_content' => '',
33
+			    'hover_icon'    => '',
34
+			    'new_line_after' => true,
35
+			    'no_wrap'    => true,
36
+			    'onclick'    => '',
37
+			    'style'  => '',
38
+			    'extra_attributes'  => array(), // an array of extra attributes
39
+			    'icon_extra_attributes'  => array() // an array of icon extra attributes
40
+		    );
41
+
42
+		    /**
43 43
 		 * Parse incoming $args into an array and merge it with $defaults
44 44
 		 */
45
-		$args   = wp_parse_args( $args, $defaults );
46
-		$output = '';
47
-		if ( ! empty( $args['type'] ) ) {
48
-			$type = $args['type'] != 'a' ? esc_attr($args['type']) : 'a';
49
-
50
-			// open/type
51
-			if($type=='a'){
52
-				$new_window = !empty($args['new_window']) ? ' target="_blank" ' : '';
53
-				$output .= '<a href="' . $args['href'] . '"'.$new_window;
54
-			}elseif($type=='badge'){
55
-				$output .= '<span ';
56
-			}else{
57
-				$output .= '<button type="' . $type . '" ';
58
-			}
59
-
60
-			// name
61
-			if(!empty($args['name'])){
62
-				$output .= AUI_Component_Helper::name($args['name']);
63
-			}
64
-
65
-			// id
66
-			if(!empty($args['id'])){
67
-				$output .= AUI_Component_Helper::id($args['id']);
68
-			}
69
-
70
-			// title
71
-			if(!empty($args['title'])){
72
-				$output .= AUI_Component_Helper::title($args['title']);
73
-			}
74
-
75
-			// value
76
-			if(!empty($args['value'])){
77
-				$output .= AUI_Component_Helper::value($args['value']);
78
-			}
79
-
80
-			// class
81
-			$class = !empty($args['class']) ? $args['class'] : '';
82
-			$output .= AUI_Component_Helper::class_attr($class);
45
+		    $args   = wp_parse_args( $args, $defaults );
46
+		    $output = '';
47
+		    if ( ! empty( $args['type'] ) ) {
48
+			    $type = $args['type'] != 'a' ? esc_attr($args['type']) : 'a';
49
+
50
+			    // open/type
51
+			    if($type=='a'){
52
+				    $new_window = !empty($args['new_window']) ? ' target="_blank" ' : '';
53
+				    $output .= '<a href="' . $args['href'] . '"'.$new_window;
54
+			    }elseif($type=='badge'){
55
+				    $output .= '<span ';
56
+			    }else{
57
+				    $output .= '<button type="' . $type . '" ';
58
+			    }
59
+
60
+			    // name
61
+			    if(!empty($args['name'])){
62
+				    $output .= AUI_Component_Helper::name($args['name']);
63
+			    }
64
+
65
+			    // id
66
+			    if(!empty($args['id'])){
67
+				    $output .= AUI_Component_Helper::id($args['id']);
68
+			    }
69
+
70
+			    // title
71
+			    if(!empty($args['title'])){
72
+				    $output .= AUI_Component_Helper::title($args['title']);
73
+			    }
74
+
75
+			    // value
76
+			    if(!empty($args['value'])){
77
+				    $output .= AUI_Component_Helper::value($args['value']);
78
+			    }
79
+
80
+			    // class
81
+			    $class = !empty($args['class']) ? $args['class'] : '';
82
+			    $output .= AUI_Component_Helper::class_attr($class);
83 83
 			
84
-			// data-attributes
85
-			$output .= AUI_Component_Helper::data_attributes($args);
84
+			    // data-attributes
85
+			    $output .= AUI_Component_Helper::data_attributes($args);
86 86
 
87
-			// aria-attributes
88
-			$output .= AUI_Component_Helper::aria_attributes($args);
87
+			    // aria-attributes
88
+			    $output .= AUI_Component_Helper::aria_attributes($args);
89 89
 
90
-			// extra attributes
91
-			if(!empty($args['extra_attributes'])){
92
-				$output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']);
93
-			}
90
+			    // extra attributes
91
+			    if(!empty($args['extra_attributes'])){
92
+				    $output .= AUI_Component_Helper::extra_attributes($args['extra_attributes']);
93
+			    }
94 94
 
95
-			// onclick, we don't escape this
96
-			if(!empty($args['onclick'])){
97
-				$output .= ' onclick="'.$args['onclick'].'" ';
98
-			}
95
+			    // onclick, we don't escape this
96
+			    if(!empty($args['onclick'])){
97
+				    $output .= ' onclick="'.$args['onclick'].'" ';
98
+			    }
99 99
 
100
-			// style, we don't escape this
101
-			if(!empty($args['style'])){
102
-				$output .= ' style="'.$args['style'].'" ';
103
-			}
100
+			    // style, we don't escape this
101
+			    if(!empty($args['style'])){
102
+				    $output .= ' style="'.$args['style'].'" ';
103
+			    }
104 104
 
105
-			// close opening tag
106
-			$output .= ' >';
105
+			    // close opening tag
106
+			    $output .= ' >';
107 107
 
108 108
 
109
-			// hover content
110
-			$hover_content = false;
111
-			if(!empty($args['hover_content']) || !empty($args['hover_icon'])){
112
-				$output .= "<span class='hover-content'>".AUI_Component_Helper::icon($args['hover_icon'],$args['hover_content']).$args['hover_content']."</span>";
113
-				$hover_content = true;
114
-			}
109
+			    // hover content
110
+			    $hover_content = false;
111
+			    if(!empty($args['hover_content']) || !empty($args['hover_icon'])){
112
+				    $output .= "<span class='hover-content'>".AUI_Component_Helper::icon($args['hover_icon'],$args['hover_content']).$args['hover_content']."</span>";
113
+				    $hover_content = true;
114
+			    }
115 115
 			
116
-			// content
117
-			if($hover_content){$output .= "<span class='hover-content-original'>";}
118
-			if(!empty($args['content']) || !empty($args['icon'])){
119
-				$output .= AUI_Component_Helper::icon($args['icon'],$args['content'],$args['icon_extra_attributes']).$args['content'];
120
-			}
121
-			if($hover_content){$output .= "</span>";}
116
+			    // content
117
+			    if($hover_content){$output .= "<span class='hover-content-original'>";}
118
+			    if(!empty($args['content']) || !empty($args['icon'])){
119
+				    $output .= AUI_Component_Helper::icon($args['icon'],$args['content'],$args['icon_extra_attributes']).$args['content'];
120
+			    }
121
+			    if($hover_content){$output .= "</span>";}
122 122
 					
123 123
 
124 124
 
125
-			// close
126
-			if($type=='a'){
127
-				$output .= '</a>';
128
-			}elseif($type=='badge'){
129
-				$output .= '</span>';
130
-			}else{
131
-				$output .= '</button>';
132
-			}
125
+			    // close
126
+			    if($type=='a'){
127
+				    $output .= '</a>';
128
+			    }elseif($type=='badge'){
129
+				    $output .= '</span>';
130
+			    }else{
131
+				    $output .= '</button>';
132
+			    }
133 133
 
134
-			// maybe new line after?  This adds better spacing between buttons.
135
-			if(!empty($args['new_line_after'])){
136
-				$output .= PHP_EOL;
137
-			}
134
+			    // maybe new line after?  This adds better spacing between buttons.
135
+			    if(!empty($args['new_line_after'])){
136
+				    $output .= PHP_EOL;
137
+			    }
138 138
 
139 139
 
140
-			// wrap
141
-			if(!$args['no_wrap']){
142
-				$output = AUI_Component_Input::wrap(array(
143
-					'content' => $output,
144
-				));
145
-			}
140
+			    // wrap
141
+			    if(!$args['no_wrap']){
142
+				    $output = AUI_Component_Input::wrap(array(
143
+					    'content' => $output,
144
+				    ));
145
+			    }
146 146
 
147 147
 
148
-		}
148
+		    }
149 149
 
150
-		return $output;
151
-	}
150
+		    return $output;
151
+	    }
152 152
 
153 153
 }
154 154
\ No newline at end of file
Please login to merge, or discard this patch.
ayecode/wp-ayecode-ui/includes/components/class-aui-component-helper.php 1 patch
Switch Indentation   +266 added lines, -266 removed lines patch added patch discarded remove patch
@@ -1,7 +1,7 @@  discard block
 block discarded – undo
1
-<?php
1
+    <?php
2 2
 
3
-if ( ! defined( 'ABSPATH' ) ) {
4
-	exit; // Exit if accessed directly
3
+    if ( ! defined( 'ABSPATH' ) ) {
4
+	    exit; // Exit if accessed directly
5 5
 }
6 6
 
7 7
 /**
@@ -9,9 +9,9 @@  discard block
 block discarded – undo
9 9
  *
10 10
  * @since 1.0.0
11 11
  */
12
-class AUI_Component_Helper {
12
+    class AUI_Component_Helper {
13 13
 
14
-	/**
14
+	    /**
15 15
 	 * A component helper for generating a input name.
16 16
 	 *
17 17
 	 * @param $text
@@ -19,152 +19,152 @@  discard block
 block discarded – undo
19 19
 	 *
20 20
 	 * @return string
21 21
 	 */
22
-	public static function name( $text, $multiple = false ) {
23
-		$output = '';
22
+	    public static function name( $text, $multiple = false ) {
23
+		    $output = '';
24 24
 
25
-		if ( $text ) {
26
-			$is_multiple = strpos( $text, '[' ) === false && $multiple ? '[]' : '';
27
-			$output      = ' name="' . esc_attr( $text ) . $is_multiple . '" ';
28
-		}
25
+		    if ( $text ) {
26
+			    $is_multiple = strpos( $text, '[' ) === false && $multiple ? '[]' : '';
27
+			    $output      = ' name="' . esc_attr( $text ) . $is_multiple . '" ';
28
+		    }
29 29
 
30
-		return $output;
31
-	}
30
+		    return $output;
31
+	    }
32 32
 
33
-	/**
33
+	    /**
34 34
 	 * A component helper for generating a item id.
35 35
 	 *
36 36
 	 * @param $text string The text to be used as the value.
37 37
 	 *
38 38
 	 * @return string The sanitized item.
39 39
 	 */
40
-	public static function id( $text ) {
41
-		$output = '';
40
+	    public static function id( $text ) {
41
+		    $output = '';
42 42
 
43
-		if ( $text ) {
44
-			$output = ' id="' . sanitize_html_class( $text ) . '" ';
45
-		}
43
+		    if ( $text ) {
44
+			    $output = ' id="' . sanitize_html_class( $text ) . '" ';
45
+		    }
46 46
 
47
-		return $output;
48
-	}
47
+		    return $output;
48
+	    }
49 49
 
50
-	/**
50
+	    /**
51 51
 	 * A component helper for generating a item title.
52 52
 	 *
53 53
 	 * @param $text string The text to be used as the value.
54 54
 	 *
55 55
 	 * @return string The sanitized item.
56 56
 	 */
57
-	public static function title( $text ) {
58
-		$output = '';
57
+	    public static function title( $text ) {
58
+		    $output = '';
59 59
 
60
-		if ( $text ) {
61
-			$output = ' title="' . esc_attr( $text ) . '" ';
62
-		}
60
+		    if ( $text ) {
61
+			    $output = ' title="' . esc_attr( $text ) . '" ';
62
+		    }
63 63
 
64
-		return $output;
65
-	}
64
+		    return $output;
65
+	    }
66 66
 
67
-	/**
67
+	    /**
68 68
 	 * A component helper for generating a item value.
69 69
 	 *
70 70
 	 * @param $text string The text to be used as the value.
71 71
 	 *
72 72
 	 * @return string The sanitized item.
73 73
 	 */
74
-	public static function value( $text ) {
75
-		$output = '';
74
+	    public static function value( $text ) {
75
+		    $output = '';
76 76
 
77
-		if ( $text !== null && $text !== false ) {
78
-			$output = ' value="' . esc_attr( wp_unslash( $text ) ) . '" ';
79
-		}
77
+		    if ( $text !== null && $text !== false ) {
78
+			    $output = ' value="' . esc_attr( wp_unslash( $text ) ) . '" ';
79
+		    }
80 80
 
81
-		return $output;
82
-	}
81
+		    return $output;
82
+	    }
83 83
 
84
-	/**
84
+	    /**
85 85
 	 * A component helper for generating a item class attribute.
86 86
 	 *
87 87
 	 * @param $text string The text to be used as the value.
88 88
 	 *
89 89
 	 * @return string The sanitized item.
90 90
 	 */
91
-	public static function class_attr( $text ) {
92
-		$output = '';
91
+	    public static function class_attr( $text ) {
92
+		    $output = '';
93 93
 
94
-		if ( $text ) {
95
-			$classes = self::esc_classes( $text );
96
-			if ( ! empty( $classes ) ) {
97
-				$output = ' class="' . $classes . '" ';
98
-			}
99
-		}
94
+		    if ( $text ) {
95
+			    $classes = self::esc_classes( $text );
96
+			    if ( ! empty( $classes ) ) {
97
+				    $output = ' class="' . $classes . '" ';
98
+			    }
99
+		    }
100 100
 
101
-		return $output;
102
-	}
101
+		    return $output;
102
+	    }
103 103
 
104
-	/**
104
+	    /**
105 105
 	 * Escape a string of classes.
106 106
 	 *
107 107
 	 * @param $text
108 108
 	 *
109 109
 	 * @return string
110 110
 	 */
111
-	public static function esc_classes( $text ) {
112
-		$output = '';
111
+	    public static function esc_classes( $text ) {
112
+		    $output = '';
113 113
 
114
-		if ( $text ) {
115
-			$classes = explode( " ", $text );
116
-			$classes = array_map( "trim", $classes );
117
-			$classes = array_map( "sanitize_html_class", $classes );
118
-			if ( ! empty( $classes ) ) {
119
-				$output = implode( " ", $classes );
120
-			}
121
-		}
114
+		    if ( $text ) {
115
+			    $classes = explode( " ", $text );
116
+			    $classes = array_map( "trim", $classes );
117
+			    $classes = array_map( "sanitize_html_class", $classes );
118
+			    if ( ! empty( $classes ) ) {
119
+				    $output = implode( " ", $classes );
120
+			    }
121
+		    }
122 122
 
123
-		return $output;
123
+		    return $output;
124 124
 
125
-	}
125
+	    }
126 126
 
127
-	/**
127
+	    /**
128 128
 	 * @param $args
129 129
 	 *
130 130
 	 * @return string
131 131
 	 */
132
-	public static function data_attributes( $args ) {
133
-		$output = '';
132
+	    public static function data_attributes( $args ) {
133
+		    $output = '';
134 134
 
135
-		if ( ! empty( $args ) ) {
135
+		    if ( ! empty( $args ) ) {
136 136
 
137
-			foreach ( $args as $key => $val ) {
138
-				if ( substr( $key, 0, 5 ) === "data-" ) {
139
-					$output .= ' ' . sanitize_html_class( $key ) . '="' . esc_attr( $val ) . '" ';
140
-				}
141
-			}
142
-		}
137
+			    foreach ( $args as $key => $val ) {
138
+				    if ( substr( $key, 0, 5 ) === "data-" ) {
139
+					    $output .= ' ' . sanitize_html_class( $key ) . '="' . esc_attr( $val ) . '" ';
140
+				    }
141
+			    }
142
+		    }
143 143
 
144
-		return $output;
145
-	}
144
+		    return $output;
145
+	    }
146 146
 
147
-	/**
147
+	    /**
148 148
 	 * @param $args
149 149
 	 *
150 150
 	 * @return string
151 151
 	 */
152
-	public static function aria_attributes( $args ) {
153
-		$output = '';
152
+	    public static function aria_attributes( $args ) {
153
+		    $output = '';
154 154
 
155
-		if ( ! empty( $args ) ) {
155
+		    if ( ! empty( $args ) ) {
156 156
 
157
-			foreach ( $args as $key => $val ) {
158
-				if ( substr( $key, 0, 5 ) === "aria-" ) {
159
-					$output .= ' ' . sanitize_html_class( $key ) . '="' . esc_attr( $val ) . '" ';
160
-				}
161
-			}
162
-		}
157
+			    foreach ( $args as $key => $val ) {
158
+				    if ( substr( $key, 0, 5 ) === "aria-" ) {
159
+					    $output .= ' ' . sanitize_html_class( $key ) . '="' . esc_attr( $val ) . '" ';
160
+				    }
161
+			    }
162
+		    }
163 163
 
164
-		return $output;
165
-	}
164
+		    return $output;
165
+	    }
166 166
 
167
-	/**
167
+	    /**
168 168
 	 * Build a font awesome icon from a class.
169 169
 	 *
170 170
 	 * @param $class
@@ -173,91 +173,91 @@  discard block
 block discarded – undo
173 173
 	 *
174 174
 	 * @return string
175 175
 	 */
176
-	public static function icon( $class, $space_after = false, $extra_attributes = array() ) {
177
-		$output = '';
178
-
179
-		if ( $class ) {
180
-			$classes = self::esc_classes( $class );
181
-			if ( ! empty( $classes ) ) {
182
-				$output = '<i class="' . $classes . '" ';
183
-				// extra attributes
184
-				if ( ! empty( $extra_attributes ) ) {
185
-					$output .= AUI_Component_Helper::extra_attributes( $extra_attributes );
186
-				}
187
-				$output .= '></i>';
188
-				if ( $space_after ) {
189
-					$output .= " ";
190
-				}
191
-			}
192
-		}
193
-
194
-		return $output;
195
-	}
196
-
197
-	/**
176
+	    public static function icon( $class, $space_after = false, $extra_attributes = array() ) {
177
+		    $output = '';
178
+
179
+		    if ( $class ) {
180
+			    $classes = self::esc_classes( $class );
181
+			    if ( ! empty( $classes ) ) {
182
+				    $output = '<i class="' . $classes . '" ';
183
+				    // extra attributes
184
+				    if ( ! empty( $extra_attributes ) ) {
185
+					    $output .= AUI_Component_Helper::extra_attributes( $extra_attributes );
186
+				    }
187
+				    $output .= '></i>';
188
+				    if ( $space_after ) {
189
+					    $output .= " ";
190
+				    }
191
+			    }
192
+		    }
193
+
194
+		    return $output;
195
+	    }
196
+
197
+	    /**
198 198
 	 * @param $args
199 199
 	 *
200 200
 	 * @return string
201 201
 	 */
202
-	public static function extra_attributes( $args ) {
203
-		$output = '';
202
+	    public static function extra_attributes( $args ) {
203
+		    $output = '';
204 204
 
205
-		if ( ! empty( $args ) ) {
205
+		    if ( ! empty( $args ) ) {
206 206
 
207
-			if ( is_array( $args ) ) {
208
-				foreach ( $args as $key => $val ) {
209
-					$output .= ' ' . sanitize_html_class( $key ) . '="' . esc_attr( $val ) . '" ';
210
-				}
211
-			} else {
212
-				$output .= ' ' . $args . ' ';
213
-			}
207
+			    if ( is_array( $args ) ) {
208
+				    foreach ( $args as $key => $val ) {
209
+					    $output .= ' ' . sanitize_html_class( $key ) . '="' . esc_attr( $val ) . '" ';
210
+				    }
211
+			    } else {
212
+				    $output .= ' ' . $args . ' ';
213
+			    }
214 214
 
215
-		}
215
+		    }
216 216
 
217
-		return $output;
218
-	}
217
+		    return $output;
218
+	    }
219 219
 
220
-	/**
220
+	    /**
221 221
 	 * @param $args
222 222
 	 *
223 223
 	 * @return string
224 224
 	 */
225
-	public static function help_text( $text ) {
226
-		$output = '';
225
+	    public static function help_text( $text ) {
226
+		    $output = '';
227 227
 
228
-		if ( $text ) {
229
-			$output .= '<small class="form-text text-muted d-block">' . wp_kses_post( $text ) . '</small>';
230
-		}
228
+		    if ( $text ) {
229
+			    $output .= '<small class="form-text text-muted d-block">' . wp_kses_post( $text ) . '</small>';
230
+		    }
231 231
 
232 232
 
233
-		return $output;
234
-	}
233
+		    return $output;
234
+	    }
235 235
 
236
-	/**
236
+	    /**
237 237
 	 * Replace element require context with JS.
238 238
 	 *
239 239
 	 * @param $input
240 240
 	 *
241 241
 	 * @return string|void
242 242
 	 */
243
-	public static function element_require( $input ) {
243
+	    public static function element_require( $input ) {
244 244
 
245
-		$input = str_replace( "'", '"', $input );// we only want double quotes
245
+		    $input = str_replace( "'", '"', $input );// we only want double quotes
246 246
 
247
-		$output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array(
248
-			"jQuery(form).find('[data-argument=\"",
249
-			"\"]').find('input,select,textarea').val()",
250
-			"\"]').find('input:checked').val()",
251
-		), $input ) );
247
+		    $output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array(
248
+			    "jQuery(form).find('[data-argument=\"",
249
+			    "\"]').find('input,select,textarea').val()",
250
+			    "\"]').find('input:checked').val()",
251
+		    ), $input ) );
252 252
 
253
-		if ( $output ) {
254
-			$output = ' data-element-require="' . $output . '" ';
255
-		}
253
+		    if ( $output ) {
254
+			    $output = ' data-element-require="' . $output . '" ';
255
+		    }
256 256
 
257
-		return $output;
258
-	}
257
+		    return $output;
258
+	    }
259 259
 
260
-	/**
260
+	    /**
261 261
 	 * Navigates through an array, object, or scalar, and removes slashes from the values.
262 262
 	 *
263 263
 	 * @since 0.1.41
@@ -267,24 +267,24 @@  discard block
 block discarded – undo
267 267
 	 *
268 268
 	 * @return mixed Stripped value.
269 269
 	 */
270
-	public static function sanitize_html_field( $value, $input = array() ) {
271
-		$original = $value;
272
-
273
-		if ( is_array( $value ) ) {
274
-			foreach ( $value as $index => $item ) {
275
-				$value[ $index ] = self::_sanitize_html_field( $value, $input );
276
-			}
277
-		} elseif ( is_object( $value ) ) {
278
-			$object_vars = get_object_vars( $value );
279
-
280
-			foreach ( $object_vars as $property_name => $property_value ) {
281
-				$value->$property_name = self::_sanitize_html_field( $property_value, $input );
282
-			}
283
-		} else {
284
-			$value = self::_sanitize_html_field( $value, $input );
285
-		}
286
-
287
-		/**
270
+	    public static function sanitize_html_field( $value, $input = array() ) {
271
+		    $original = $value;
272
+
273
+		    if ( is_array( $value ) ) {
274
+			    foreach ( $value as $index => $item ) {
275
+				    $value[ $index ] = self::_sanitize_html_field( $value, $input );
276
+			    }
277
+		    } elseif ( is_object( $value ) ) {
278
+			    $object_vars = get_object_vars( $value );
279
+
280
+			    foreach ( $object_vars as $property_name => $property_value ) {
281
+				    $value->$property_name = self::_sanitize_html_field( $property_value, $input );
282
+			    }
283
+		    } else {
284
+			    $value = self::_sanitize_html_field( $value, $input );
285
+		    }
286
+
287
+		    /**
288 288
 		 * Filters content and keeps only allowable HTML elements.
289 289
 		 *
290 290
 		 * @since 0.1.41
@@ -293,10 +293,10 @@  discard block
 block discarded – undo
293 293
 		 * @param string|array $value Original content without filter.
294 294
 		 * @param array $input Input Field.
295 295
 		 */
296
-		return apply_filters( 'ayecode_ui_sanitize_html_field', $value, $original, $input );
297
-	}
296
+		    return apply_filters( 'ayecode_ui_sanitize_html_field', $value, $original, $input );
297
+	    }
298 298
 
299
-	/**
299
+	    /**
300 300
 	 * Filters content and keeps only allowable HTML elements.
301 301
 	 *
302 302
 	 * This function makes sure that only the allowed HTML element names, attribute
@@ -316,25 +316,25 @@  discard block
 block discarded – undo
316 316
 	 *
317 317
 	 * @return string Filtered content with only allowed HTML elements.
318 318
 	 */
319
-	public static function _sanitize_html_field( $value, $input = array() ) {
320
-		if ( $value === '' ) {
321
-			return $value;
322
-		}
319
+	    public static function _sanitize_html_field( $value, $input = array() ) {
320
+		    if ( $value === '' ) {
321
+			    return $value;
322
+		    }
323 323
 
324
-		$allowed_html = self::kses_allowed_html( 'post', $input );
324
+		    $allowed_html = self::kses_allowed_html( 'post', $input );
325 325
 
326
-		if ( ! is_array( $allowed_html ) ) {
327
-			$allowed_html = wp_kses_allowed_html( 'post' );
328
-		}
326
+		    if ( ! is_array( $allowed_html ) ) {
327
+			    $allowed_html = wp_kses_allowed_html( 'post' );
328
+		    }
329 329
 
330
-		$filtered = trim( wp_unslash( $value ) );
331
-		$filtered = wp_kses( $filtered, $allowed_html );
332
-		$filtered = balanceTags( $filtered ); // Balances tags
330
+		    $filtered = trim( wp_unslash( $value ) );
331
+		    $filtered = wp_kses( $filtered, $allowed_html );
332
+		    $filtered = balanceTags( $filtered ); // Balances tags
333 333
 
334
-		return $filtered;
335
-	}
334
+		    return $filtered;
335
+	    }
336 336
 
337
-	/**
337
+	    /**
338 338
 	 * Returns an array of allowed HTML tags and attributes for a given context.
339 339
 	 *
340 340
 	 * @since 0.1.41
@@ -346,32 +346,32 @@  discard block
 block discarded – undo
346 346
 	 *
347 347
 	 * @return array Array of allowed HTML tags and their allowed attributes.
348 348
 	 */
349
-	public static function kses_allowed_html( $context = 'post', $input = array() ) {
350
-		$allowed_html = wp_kses_allowed_html( $context );
351
-
352
-		if ( is_array( $allowed_html ) ) {
353
-			// <iframe>
354
-			if ( ! isset( $allowed_html['iframe'] ) && $context == 'post' ) {
355
-				$allowed_html['iframe'] = array(
356
-					'class'           => true,
357
-					'id'              => true,
358
-					'src'             => true,
359
-					'width'           => true,
360
-					'height'          => true,
361
-					'frameborder'     => true,
362
-					'marginwidth'     => true,
363
-					'marginheight'    => true,
364
-					'scrolling'       => true,
365
-					'style'           => true,
366
-					'title'           => true,
367
-					'allow'           => true,
368
-					'allowfullscreen' => true,
369
-					'data-*'          => true,
370
-				);
371
-			}
372
-		}
373
-
374
-		/**
349
+	    public static function kses_allowed_html( $context = 'post', $input = array() ) {
350
+		    $allowed_html = wp_kses_allowed_html( $context );
351
+
352
+		    if ( is_array( $allowed_html ) ) {
353
+			    // <iframe>
354
+			    if ( ! isset( $allowed_html['iframe'] ) && $context == 'post' ) {
355
+				    $allowed_html['iframe'] = array(
356
+					    'class'           => true,
357
+					    'id'              => true,
358
+					    'src'             => true,
359
+					    'width'           => true,
360
+					    'height'          => true,
361
+					    'frameborder'     => true,
362
+					    'marginwidth'     => true,
363
+					    'marginheight'    => true,
364
+					    'scrolling'       => true,
365
+					    'style'           => true,
366
+					    'title'           => true,
367
+					    'allow'           => true,
368
+					    'allowfullscreen' => true,
369
+					    'data-*'          => true,
370
+				    );
371
+			    }
372
+		    }
373
+
374
+		    /**
375 375
 		 * Filters the allowed html tags.
376 376
 		 *
377 377
 		 * @since 0.1.41
@@ -380,30 +380,30 @@  discard block
 block discarded – undo
380 380
 		 * @param @param string|array $context The context for which to retrieve tags.
381 381
 		 * @param array $input Input field.
382 382
 		 */
383
-		return apply_filters( 'ayecode_ui_kses_allowed_html', $allowed_html, $context, $input );
384
-	}
383
+		    return apply_filters( 'ayecode_ui_kses_allowed_html', $allowed_html, $context, $input );
384
+	    }
385 385
 
386
-	public static function get_column_class( $label_number = 2, $type = 'label' ) {
386
+	    public static function get_column_class( $label_number = 2, $type = 'label' ) {
387 387
 
388
-		$class = '';
388
+		    $class = '';
389 389
 
390
-		// set default if empty
391
-		if( $label_number === '' ){
392
-			$label_number = 2;
393
-		}
390
+		    // set default if empty
391
+		    if( $label_number === '' ){
392
+			    $label_number = 2;
393
+		    }
394 394
 
395
-		if ( $label_number && $label_number < 12 && $label_number > 0 ) {
396
-			if ( $type == 'label' ) {
397
-				$class = 'col-sm-' . absint( $label_number );
398
-			} elseif ( $type == 'input' ) {
399
-				$class = 'col-sm-' . ( 12 - absint( $label_number ) );
400
-			}
401
-		}
395
+		    if ( $label_number && $label_number < 12 && $label_number > 0 ) {
396
+			    if ( $type == 'label' ) {
397
+				    $class = 'col-sm-' . absint( $label_number );
398
+			    } elseif ( $type == 'input' ) {
399
+				    $class = 'col-sm-' . ( 12 - absint( $label_number ) );
400
+			    }
401
+		    }
402 402
 
403
-		return $class;
404
-	}
403
+		    return $class;
404
+	    }
405 405
 
406
-	/**
406
+	    /**
407 407
 	 * Sanitizes a multiline string from user input or from the database.
408 408
 	 *
409 409
 	 * Emulate the WP native sanitize_textarea_field function in a %%variable%% safe way.
@@ -415,10 +415,10 @@  discard block
 block discarded – undo
415 415
 	 * @param string $str String to sanitize.
416 416
 	 * @return string Sanitized string.
417 417
 	 */
418
-	public static function sanitize_textarea_field( $str ) {
419
-		$filtered = self::_sanitize_text_fields( $str, true );
418
+	    public static function sanitize_textarea_field( $str ) {
419
+		    $filtered = self::_sanitize_text_fields( $str, true );
420 420
 
421
-		/**
421
+		    /**
422 422
 		 * Filters a sanitized textarea field string.
423 423
 		 *
424 424
 		 * @see https://core.trac.wordpress.org/browser/trunk/src/wp-includes/formatting.php
@@ -426,10 +426,10 @@  discard block
 block discarded – undo
426 426
 		 * @param string $filtered The sanitized string.
427 427
 		 * @param string $str      The string prior to being sanitized.
428 428
 		 */
429
-		return apply_filters( 'sanitize_textarea_field', $filtered, $str );
430
-	}
429
+		    return apply_filters( 'sanitize_textarea_field', $filtered, $str );
430
+	    }
431 431
 
432
-	/**
432
+	    /**
433 433
 	 * Internal helper function to sanitize a string from user input or from the db.
434 434
 	 *
435 435
 	 * @since 0.1.66
@@ -439,42 +439,42 @@  discard block
 block discarded – undo
439 439
 	 * @param bool   $keep_newlines Optional. Whether to keep newlines. Default: false.
440 440
 	 * @return string Sanitized string.
441 441
 	 */
442
-	public static function _sanitize_text_fields( $str, $keep_newlines = false ) {
443
-		if ( is_object( $str ) || is_array( $str ) ) {
444
-			return '';
445
-		}
446
-
447
-		$str = (string) $str;
448
-
449
-		$filtered = wp_check_invalid_utf8( $str );
450
-
451
-		if ( strpos( $filtered, '<' ) !== false ) {
452
-			$filtered = wp_pre_kses_less_than( $filtered );
453
-			// This will strip extra whitespace for us.
454
-			$filtered = wp_strip_all_tags( $filtered, false );
455
-
456
-			// Use HTML entities in a special case to make sure no later
457
-			// newline stripping stage could lead to a functional tag.
458
-			$filtered = str_replace( "<\n", "&lt;\n", $filtered );
459
-		}
460
-
461
-		if ( ! $keep_newlines ) {
462
-			$filtered = preg_replace( '/[\r\n\t ]+/', ' ', $filtered );
463
-		}
464
-		$filtered = trim( $filtered );
465
-
466
-		$found = false;
467
-		while ( preg_match( '`[^%](%[a-f0-9]{2})`i', $filtered, $match ) ) {
468
-			$filtered = str_replace( $match[1], '', $filtered );
469
-			$found = true;
470
-		}
471
-		unset( $match );
472
-
473
-		if ( $found ) {
474
-			// Strip out the whitespace that may now exist after removing the octets.
475
-			$filtered = trim( preg_replace( '` +`', ' ', $filtered ) );
476
-		}
477
-
478
-		return $filtered;
479
-	}
442
+	    public static function _sanitize_text_fields( $str, $keep_newlines = false ) {
443
+		    if ( is_object( $str ) || is_array( $str ) ) {
444
+			    return '';
445
+		    }
446
+
447
+		    $str = (string) $str;
448
+
449
+		    $filtered = wp_check_invalid_utf8( $str );
450
+
451
+		    if ( strpos( $filtered, '<' ) !== false ) {
452
+			    $filtered = wp_pre_kses_less_than( $filtered );
453
+			    // This will strip extra whitespace for us.
454
+			    $filtered = wp_strip_all_tags( $filtered, false );
455
+
456
+			    // Use HTML entities in a special case to make sure no later
457
+			    // newline stripping stage could lead to a functional tag.
458
+			    $filtered = str_replace( "<\n", "&lt;\n", $filtered );
459
+		    }
460
+
461
+		    if ( ! $keep_newlines ) {
462
+			    $filtered = preg_replace( '/[\r\n\t ]+/', ' ', $filtered );
463
+		    }
464
+		    $filtered = trim( $filtered );
465
+
466
+		    $found = false;
467
+		    while ( preg_match( '`[^%](%[a-f0-9]{2})`i', $filtered, $match ) ) {
468
+			    $filtered = str_replace( $match[1], '', $filtered );
469
+			    $found = true;
470
+		    }
471
+		    unset( $match );
472
+
473
+		    if ( $found ) {
474
+			    // Strip out the whitespace that may now exist after removing the octets.
475
+			    $filtered = trim( preg_replace( '` +`', ' ', $filtered ) );
476
+		    }
477
+
478
+		    return $filtered;
479
+	    }
480 480
 }
481 481
\ No newline at end of file
Please login to merge, or discard this patch.
vendor/ayecode/wp-super-duper/sd-plugin.php 1 patch
Switch Indentation   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -1,4 +1,4 @@  discard block
 block discarded – undo
1
-<?php
1
+    <?php
2 2
 /**
3 3
  * This is a Hello World test plugin for WP Super Duper Class.
4 4
  *
@@ -14,26 +14,26 @@  discard block
 block discarded – undo
14 14
  * Tested up to: 5.3
15 15
  */
16 16
 
17
-if ( ! defined( 'ABSPATH' ) ) {
18
-	exit;
17
+    if ( ! defined( 'ABSPATH' ) ) {
18
+	    exit;
19 19
 }
20 20
 
21
-if ( ! class_exists( 'WP_Super_Duper' ) ) {
22
-	// include the class if needed
23
-	include_once( dirname( __FILE__ ) . "/wp-super-duper.php" );
21
+    if ( ! class_exists( 'WP_Super_Duper' ) ) {
22
+	    // include the class if needed
23
+	    include_once( dirname( __FILE__ ) . "/wp-super-duper.php" );
24 24
 }
25 25
 
26 26
 /*
27 27
  * Hello world example.
28 28
  */
29
-include_once( dirname( __FILE__ ) . "/hello-world.php" );
29
+    include_once( dirname( __FILE__ ) . "/hello-world.php" );
30 30
 
31 31
 /*
32 32
  * Map example.
33 33
  */
34
-include_once( dirname( __FILE__ ) . "/map.php" );
34
+    include_once( dirname( __FILE__ ) . "/map.php" );
35 35
 
36 36
 
37
-if ( ! function_exists( 'sd_get_class_build_keys' ) ) {
38
-	include_once( dirname( __FILE__ ) . "/sd-functions.php" );
37
+    if ( ! function_exists( 'sd_get_class_build_keys' ) ) {
38
+	    include_once( dirname( __FILE__ ) . "/sd-functions.php" );
39 39
 }
40 40
\ 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
Switch Indentation   +2000 added lines, -2000 removed lines patch added patch discarded remove patch
@@ -1,13 +1,13 @@  discard block
 block discarded – undo
1
-<?php
2
-if ( ! defined( 'ABSPATH' ) ) {
3
-	exit;
1
+    <?php
2
+    if ( ! defined( 'ABSPATH' ) ) {
3
+	    exit;
4 4
 }
5 5
 
6
-if ( ! class_exists( 'WP_Super_Duper' ) ) {
6
+    if ( ! class_exists( 'WP_Super_Duper' ) ) {
7 7
 
8
-	define( 'SUPER_DUPER_VER', '1.2.6' );
8
+	    define( 'SUPER_DUPER_VER', '1.2.6' );
9 9
 
10
-	/**
10
+	    /**
11 11
 	 * A Class to be able to create a Widget, Shortcode or Block to be able to output content for WordPress.
12 12
 	 *
13 13
 	 * Should not be called direct but extended instead.
@@ -16,284 +16,284 @@  discard block
 block discarded – undo
16 16
 	 * @since 1.0.16 change log moved to file change-log.txt - CHANGED
17 17
 	 * @ver 1.1.1
18 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
-		/**
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 32
 		 * The relative url to the current folder.
33 33
 		 *
34 34
 		 * @var string
35 35
 		 */
36
-		public $url = '';
36
+		    public $url = '';
37 37
 
38
-		/**
38
+		    /**
39 39
 		 * Take the array options and use them to build.
40 40
 		 */
41
-		public function __construct( $options ) {
42
-			global $sd_widgets;
43
-
44
-			$sd_widgets[ $options['base_id'] ] = array(
45
-				'name'       => $options['name'],
46
-				'class_name' => $options['class_name'],
47
-				'output_types' => !empty($options['output_types']) ? $options['output_types'] : array()
48
-			);
49
-			$this->base_id                     = $options['base_id'];
50
-			// lets filter the options before we do anything
51
-			$options       = apply_filters( "wp_super_duper_options", $options );
52
-			$options       = apply_filters( "wp_super_duper_options_{$this->base_id}", $options );
53
-			$options       = $this->add_name_from_key( $options );
54
-			$this->options = $options;
55
-
56
-			$this->base_id   = $options['base_id'];
57
-			$this->arguments = isset( $options['arguments'] ) ? $options['arguments'] : array();
58
-
59
-			// nested blocks can't work as a widget
60
-			if(!empty($this->options['nested-block'])){
61
-				if(empty($this->options['output_types'])){
62
-					$this->options['output_types'] = array('shortcode','block');
63
-				}elseif (($key = array_search('widget', $this->options['output_types'])) !== false) {
64
-					unset($this->options['output_types'][$key]);
65
-				}
66
-			}
67
-
68
-			// init parent
69
-			if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
70
-				parent::__construct( $options['base_id'], $options['name'], $options['widget_ops'] );
71
-			}
72
-
73
-
74
-			if ( isset( $options['class_name'] ) ) {
75
-				// register widget
76
-				$this->class_name = $options['class_name'];
77
-
78
-				// register shortcode, this needs to be done even for blocks and widgets
79
-				$this->register_shortcode();
80
-
81
-
82
-				// Fusion Builder (avada) support
83
-				if ( function_exists( 'fusion_builder_map' ) ) {
84
-					add_action( 'init', array( $this, 'register_fusion_element' ) );
85
-				}
86
-
87
-				// register block
88
-				if(empty($this->options['output_types']) || in_array('block',$this->options['output_types'])){
89
-					add_action( 'admin_enqueue_scripts', array( $this, 'register_block' ) );
90
-				}
91
-			}
92
-
93
-			// add the CSS and JS we need ONCE
94
-			global $sd_widget_scripts;
95
-
96
-			if ( ! $sd_widget_scripts ) {
97
-				wp_add_inline_script( 'admin-widgets', $this->widget_js() );
98
-				wp_add_inline_script( 'customize-controls', $this->widget_js() );
99
-				wp_add_inline_style( 'widgets', $this->widget_css() );
100
-
101
-				// maybe add elementor editor styles
102
-				add_action( 'elementor/editor/after_enqueue_styles', array( $this, 'elementor_editor_styles' ) );
103
-
104
-				$sd_widget_scripts = true;
105
-
106
-				// add shortcode insert button once
107
-				add_action( 'media_buttons', array( $this, 'shortcode_insert_button' ) );
108
-				// generatepress theme sections compatibility
109
-				if ( function_exists( 'generate_sections_sections_metabox' ) ) {
110
-					add_action( 'generate_sections_metabox', array( $this, 'shortcode_insert_button_script' ) );
111
-				}
112
-				/* Load script on Divi theme builder page */
113
-				if ( function_exists( 'et_builder_is_tb_admin_screen' ) && et_builder_is_tb_admin_screen() ) {
114
-					add_thickbox();
115
-					add_action( 'admin_footer', array( $this, 'shortcode_insert_button_script' ) );
116
-				}
117
-
118
-				if ( $this->is_preview() ) {
119
-					add_action( 'wp_footer', array( $this, 'shortcode_insert_button_script' ) );
120
-					// this makes the insert button work for elementor
121
-					add_action( 'elementor/editor/after_enqueue_scripts', array(
122
-						$this,
123
-						'shortcode_insert_button_script'
124
-					) ); // for elementor
125
-				}
126
-				// this makes the insert button work for cornerstone
127
-				add_action( 'wp_print_footer_scripts', array( __CLASS__, 'maybe_cornerstone_builder' ) );
128
-
129
-				add_action( 'wp_ajax_super_duper_get_widget_settings', array( __CLASS__, 'get_widget_settings' ) );
130
-				add_action( 'wp_ajax_super_duper_get_picker', array( __CLASS__, 'get_picker' ) );
131
-
132
-				// add generator text to head
133
-				add_action( 'admin_head', array( $this, 'generator' ), 99 );
134
-				add_action( 'wp_head', array( $this, 'generator' ), 99 );
135
-			}
136
-
137
-			do_action( 'wp_super_duper_widget_init', $options, $this );
138
-		}
139
-
140
-		/**
41
+		    public function __construct( $options ) {
42
+			    global $sd_widgets;
43
+
44
+			    $sd_widgets[ $options['base_id'] ] = array(
45
+				    'name'       => $options['name'],
46
+				    'class_name' => $options['class_name'],
47
+				    'output_types' => !empty($options['output_types']) ? $options['output_types'] : array()
48
+			    );
49
+			    $this->base_id                     = $options['base_id'];
50
+			    // lets filter the options before we do anything
51
+			    $options       = apply_filters( "wp_super_duper_options", $options );
52
+			    $options       = apply_filters( "wp_super_duper_options_{$this->base_id}", $options );
53
+			    $options       = $this->add_name_from_key( $options );
54
+			    $this->options = $options;
55
+
56
+			    $this->base_id   = $options['base_id'];
57
+			    $this->arguments = isset( $options['arguments'] ) ? $options['arguments'] : array();
58
+
59
+			    // nested blocks can't work as a widget
60
+			    if(!empty($this->options['nested-block'])){
61
+				    if(empty($this->options['output_types'])){
62
+					    $this->options['output_types'] = array('shortcode','block');
63
+				    }elseif (($key = array_search('widget', $this->options['output_types'])) !== false) {
64
+					    unset($this->options['output_types'][$key]);
65
+				    }
66
+			    }
67
+
68
+			    // init parent
69
+			    if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
70
+				    parent::__construct( $options['base_id'], $options['name'], $options['widget_ops'] );
71
+			    }
72
+
73
+
74
+			    if ( isset( $options['class_name'] ) ) {
75
+				    // register widget
76
+				    $this->class_name = $options['class_name'];
77
+
78
+				    // register shortcode, this needs to be done even for blocks and widgets
79
+				    $this->register_shortcode();
80
+
81
+
82
+				    // Fusion Builder (avada) support
83
+				    if ( function_exists( 'fusion_builder_map' ) ) {
84
+					    add_action( 'init', array( $this, 'register_fusion_element' ) );
85
+				    }
86
+
87
+				    // register block
88
+				    if(empty($this->options['output_types']) || in_array('block',$this->options['output_types'])){
89
+					    add_action( 'admin_enqueue_scripts', array( $this, 'register_block' ) );
90
+				    }
91
+			    }
92
+
93
+			    // add the CSS and JS we need ONCE
94
+			    global $sd_widget_scripts;
95
+
96
+			    if ( ! $sd_widget_scripts ) {
97
+				    wp_add_inline_script( 'admin-widgets', $this->widget_js() );
98
+				    wp_add_inline_script( 'customize-controls', $this->widget_js() );
99
+				    wp_add_inline_style( 'widgets', $this->widget_css() );
100
+
101
+				    // maybe add elementor editor styles
102
+				    add_action( 'elementor/editor/after_enqueue_styles', array( $this, 'elementor_editor_styles' ) );
103
+
104
+				    $sd_widget_scripts = true;
105
+
106
+				    // add shortcode insert button once
107
+				    add_action( 'media_buttons', array( $this, 'shortcode_insert_button' ) );
108
+				    // generatepress theme sections compatibility
109
+				    if ( function_exists( 'generate_sections_sections_metabox' ) ) {
110
+					    add_action( 'generate_sections_metabox', array( $this, 'shortcode_insert_button_script' ) );
111
+				    }
112
+				    /* Load script on Divi theme builder page */
113
+				    if ( function_exists( 'et_builder_is_tb_admin_screen' ) && et_builder_is_tb_admin_screen() ) {
114
+					    add_thickbox();
115
+					    add_action( 'admin_footer', array( $this, 'shortcode_insert_button_script' ) );
116
+				    }
117
+
118
+				    if ( $this->is_preview() ) {
119
+					    add_action( 'wp_footer', array( $this, 'shortcode_insert_button_script' ) );
120
+					    // this makes the insert button work for elementor
121
+					    add_action( 'elementor/editor/after_enqueue_scripts', array(
122
+						    $this,
123
+						    'shortcode_insert_button_script'
124
+					    ) ); // for elementor
125
+				    }
126
+				    // this makes the insert button work for cornerstone
127
+				    add_action( 'wp_print_footer_scripts', array( __CLASS__, 'maybe_cornerstone_builder' ) );
128
+
129
+				    add_action( 'wp_ajax_super_duper_get_widget_settings', array( __CLASS__, 'get_widget_settings' ) );
130
+				    add_action( 'wp_ajax_super_duper_get_picker', array( __CLASS__, 'get_picker' ) );
131
+
132
+				    // add generator text to head
133
+				    add_action( 'admin_head', array( $this, 'generator' ), 99 );
134
+				    add_action( 'wp_head', array( $this, 'generator' ), 99 );
135
+			    }
136
+
137
+			    do_action( 'wp_super_duper_widget_init', $options, $this );
138
+		    }
139
+
140
+		    /**
141 141
 		 * The register widget function
142 142
 		 * @return void
143 143
 		 */
144
-		public function _register() {
145
-			if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
146
-				parent::_register();
147
-			}
148
-		}
144
+		    public function _register() {
145
+			    if(empty($this->options['output_types']) || in_array('widget',$this->options['output_types'])){
146
+				    parent::_register();
147
+			    }
148
+		    }
149 149
 
150
-		/**
150
+		    /**
151 151
 		 * Add our widget CSS to elementor editor.
152 152
 		 */
153
-		public function elementor_editor_styles() {
154
-			wp_add_inline_style( 'elementor-editor', $this->widget_css( false ) );
155
-		}
156
-
157
-		public function register_fusion_element() {
158
-
159
-			$options = $this->options;
160
-
161
-			if ( $this->base_id ) {
162
-
163
-				$params = $this->get_fusion_params();
164
-
165
-				$args = array(
166
-					'name'            => $options['name'],
167
-					'shortcode'       => $this->base_id,
168
-					'icon'            => $options['block-icon'] ? $options['block-icon'] : 'far fa-square',
169
-					'allow_generator' => true,
170
-				);
171
-
172
-				if ( ! empty( $params ) ) {
173
-					$args['params'] = $params;
174
-				}
175
-
176
-				fusion_builder_map( $args );
177
-			}
178
-
179
-		}
180
-
181
-		public function get_fusion_params() {
182
-			$params    = array();
183
-			$arguments = $this->get_arguments();
184
-
185
-			if ( ! empty( $arguments ) ) {
186
-				foreach ( $arguments as $key => $val ) {
187
-					$param = array();
188
-					// type
189
-					$param['type'] = str_replace(
190
-						array(
191
-							"text",
192
-							"number",
193
-							"email",
194
-							"color",
195
-							"checkbox"
196
-						),
197
-						array(
198
-							"textfield",
199
-							"textfield",
200
-							"textfield",
201
-							"colorpicker",
202
-							"select",
203
-
204
-						),
205
-						$val['type'] );
206
-
207
-					// multiselect
208
-					if ( $val['type'] == 'multiselect' || ( ( $param['type'] == 'select' || $val['type'] == 'select' ) && ! empty( $val['multiple'] ) ) ) {
209
-						$param['type']     = 'multiple_select';
210
-						$param['multiple'] = true;
211
-					}
212
-
213
-					// heading
214
-					$param['heading'] = isset( $val['title'] ) ? $val['title'] : '';
215
-
216
-					// description
217
-					$param['description'] = isset( $val['desc'] ) ? $val['desc'] : '';
218
-
219
-					// param_name
220
-					$param['param_name'] = $key;
221
-
222
-					// Default
223
-					$param['default'] = isset( $val['default'] ) ? $val['default'] : '';
224
-
225
-					// Group
226
-					if ( isset( $val['group'] ) ) {
227
-						$param['group'] = $val['group'];
228
-					}
229
-
230
-					// value
231
-					if ( $val['type'] == 'checkbox' ) {
232
-						if ( isset( $val['default'] ) && $val['default'] == '0' ) {
233
-							unset( $param['default'] );
234
-						}
235
-						$param['value'] = array( '0' => __( "No", 'ayecode-connect' ), '1' => __( "Yes", 'ayecode-connect' ) );
236
-					} elseif ( $param['type'] == 'select' || $param['type'] == 'multiple_select' ) {
237
-						$param['value'] = isset( $val['options'] ) ? $val['options'] : array();
238
-					} else {
239
-						$param['value'] = isset( $val['default'] ) ? $val['default'] : '';
240
-					}
241
-
242
-					// setup the param
243
-					$params[] = $param;
244
-
245
-				}
246
-			}
247
-
248
-
249
-			return $params;
250
-		}
251
-
252
-		/**
153
+		    public function elementor_editor_styles() {
154
+			    wp_add_inline_style( 'elementor-editor', $this->widget_css( false ) );
155
+		    }
156
+
157
+		    public function register_fusion_element() {
158
+
159
+			    $options = $this->options;
160
+
161
+			    if ( $this->base_id ) {
162
+
163
+				    $params = $this->get_fusion_params();
164
+
165
+				    $args = array(
166
+					    'name'            => $options['name'],
167
+					    'shortcode'       => $this->base_id,
168
+					    'icon'            => $options['block-icon'] ? $options['block-icon'] : 'far fa-square',
169
+					    'allow_generator' => true,
170
+				    );
171
+
172
+				    if ( ! empty( $params ) ) {
173
+					    $args['params'] = $params;
174
+				    }
175
+
176
+				    fusion_builder_map( $args );
177
+			    }
178
+
179
+		    }
180
+
181
+		    public function get_fusion_params() {
182
+			    $params    = array();
183
+			    $arguments = $this->get_arguments();
184
+
185
+			    if ( ! empty( $arguments ) ) {
186
+				    foreach ( $arguments as $key => $val ) {
187
+					    $param = array();
188
+					    // type
189
+					    $param['type'] = str_replace(
190
+						    array(
191
+							    "text",
192
+							    "number",
193
+							    "email",
194
+							    "color",
195
+							    "checkbox"
196
+						    ),
197
+						    array(
198
+							    "textfield",
199
+							    "textfield",
200
+							    "textfield",
201
+							    "colorpicker",
202
+							    "select",
203
+
204
+						    ),
205
+						    $val['type'] );
206
+
207
+					    // multiselect
208
+					    if ( $val['type'] == 'multiselect' || ( ( $param['type'] == 'select' || $val['type'] == 'select' ) && ! empty( $val['multiple'] ) ) ) {
209
+						    $param['type']     = 'multiple_select';
210
+						    $param['multiple'] = true;
211
+					    }
212
+
213
+					    // heading
214
+					    $param['heading'] = isset( $val['title'] ) ? $val['title'] : '';
215
+
216
+					    // description
217
+					    $param['description'] = isset( $val['desc'] ) ? $val['desc'] : '';
218
+
219
+					    // param_name
220
+					    $param['param_name'] = $key;
221
+
222
+					    // Default
223
+					    $param['default'] = isset( $val['default'] ) ? $val['default'] : '';
224
+
225
+					    // Group
226
+					    if ( isset( $val['group'] ) ) {
227
+						    $param['group'] = $val['group'];
228
+					    }
229
+
230
+					    // value
231
+					    if ( $val['type'] == 'checkbox' ) {
232
+						    if ( isset( $val['default'] ) && $val['default'] == '0' ) {
233
+							    unset( $param['default'] );
234
+						    }
235
+						    $param['value'] = array( '0' => __( "No", 'ayecode-connect' ), '1' => __( "Yes", 'ayecode-connect' ) );
236
+					    } elseif ( $param['type'] == 'select' || $param['type'] == 'multiple_select' ) {
237
+						    $param['value'] = isset( $val['options'] ) ? $val['options'] : array();
238
+					    } else {
239
+						    $param['value'] = isset( $val['default'] ) ? $val['default'] : '';
240
+					    }
241
+
242
+					    // setup the param
243
+					    $params[] = $param;
244
+
245
+				    }
246
+			    }
247
+
248
+
249
+			    return $params;
250
+		    }
251
+
252
+		    /**
253 253
 		 * Maybe insert the shortcode inserter button in the footer if we are in the cornerstone builder
254 254
 		 */
255
-		public static function maybe_cornerstone_builder() {
256
-			if ( did_action( 'cornerstone_before_boot_app' ) ) {
257
-				self::shortcode_insert_button_script();
258
-			}
259
-		}
255
+		    public static function maybe_cornerstone_builder() {
256
+			    if ( did_action( 'cornerstone_before_boot_app' ) ) {
257
+				    self::shortcode_insert_button_script();
258
+			    }
259
+		    }
260 260
 
261
-		/**
261
+		    /**
262 262
 		 * A function to ge the shortcode builder picker html.
263 263
 		 *
264 264
 		 * @param string $editor_id
265 265
 		 *
266 266
 		 * @return string
267 267
 		 */
268
-		public static function get_picker( $editor_id = '' ) {
268
+		    public static function get_picker( $editor_id = '' ) {
269 269
 
270
-			ob_start();
271
-			if ( isset( $_POST['editor_id'] ) ) {
272
-				$editor_id = esc_attr( $_POST['editor_id'] );
273
-			} elseif ( isset( $_REQUEST['et_fb'] ) ) {
274
-				$editor_id = 'main_content_content_vb_tiny_mce';
275
-			}
270
+			    ob_start();
271
+			    if ( isset( $_POST['editor_id'] ) ) {
272
+				    $editor_id = esc_attr( $_POST['editor_id'] );
273
+			    } elseif ( isset( $_REQUEST['et_fb'] ) ) {
274
+				    $editor_id = 'main_content_content_vb_tiny_mce';
275
+			    }
276 276
 
277
-			global $sd_widgets;
277
+			    global $sd_widgets;
278 278
 
279
-//			print_r($sd_widgets);exit;
280
-			?>
279
+    //			print_r($sd_widgets);exit;
280
+			    ?>
281 281
 
282 282
 			<div class="sd-shortcode-left-wrap">
283 283
 				<?php
284
-				ksort( $sd_widgets );
285
-				//				print_r($sd_widgets);exit;
286
-				if ( ! empty( $sd_widgets ) ) {
287
-					echo '<select class="widefat" onchange="sd_get_shortcode_options(this);">';
288
-					echo "<option>" . __( 'Select shortcode', 'ayecode-connect' ) . "</option>";
289
-					foreach ( $sd_widgets as $shortcode => $class ) {
290
-						if(!empty($class['output_types']) && !in_array('shortcode', $class['output_types'])){ continue; }
291
-						echo "<option value='" . esc_attr( $shortcode ) . "'>" . esc_attr( $shortcode ) . " (" . esc_attr( $class['name'] ) . ")</option>";
292
-					}
293
-					echo "</select>";
294
-
295
-				}
296
-				?>
284
+				    ksort( $sd_widgets );
285
+				    //				print_r($sd_widgets);exit;
286
+				    if ( ! empty( $sd_widgets ) ) {
287
+					    echo '<select class="widefat" onchange="sd_get_shortcode_options(this);">';
288
+					    echo "<option>" . __( 'Select shortcode', 'ayecode-connect' ) . "</option>";
289
+					    foreach ( $sd_widgets as $shortcode => $class ) {
290
+						    if(!empty($class['output_types']) && !in_array('shortcode', $class['output_types'])){ continue; }
291
+						    echo "<option value='" . esc_attr( $shortcode ) . "'>" . esc_attr( $shortcode ) . " (" . esc_attr( $class['name'] ) . ")</option>";
292
+					    }
293
+					    echo "</select>";
294
+
295
+				    }
296
+				    ?>
297 297
 				<div class="sd-shortcode-settings"></div>
298 298
 
299 299
 			</div>
@@ -304,8 +304,8 @@  discard block
 block discarded – undo
304 304
 					<?php if ( $editor_id != '' ) { ?>
305 305
 						<button class="button sd-insert-shortcode-button"
306 306
 								onclick="sd_insert_shortcode(<?php if ( ! empty( $editor_id ) ) {
307
-									echo "'" . $editor_id . "'";
308
-								} ?>)"><?php _e( 'Insert shortcode', 'ayecode-connect' ); ?></button>
307
+									    echo "'" . $editor_id . "'";
308
+								    } ?>)"><?php _e( 'Insert shortcode', 'ayecode-connect' ); ?></button>
309 309
 					<?php } ?>
310 310
 					<button class="button"
311 311
 							onclick="sd_copy_to_clipboard()"><?php _e( 'Copy shortcode' ); ?></button>
@@ -313,94 +313,94 @@  discard block
 block discarded – undo
313 313
 			</div>
314 314
 			<?php
315 315
 
316
-			$html = ob_get_clean();
316
+			    $html = ob_get_clean();
317 317
 
318
-			if ( wp_doing_ajax() ) {
319
-				echo $html;
320
-				$should_die = true;
318
+			    if ( wp_doing_ajax() ) {
319
+				    echo $html;
320
+				    $should_die = true;
321 321
 
322
-				// some builder get the editor via ajax so we should not die on those occasions
323
-				$dont_die = array(
324
-					'parent_tag',// WP Bakery
325
-					'avia_request' // enfold
326
-				);
322
+				    // some builder get the editor via ajax so we should not die on those occasions
323
+				    $dont_die = array(
324
+					    'parent_tag',// WP Bakery
325
+					    'avia_request' // enfold
326
+				    );
327 327
 
328
-				foreach ( $dont_die as $request ) {
329
-					if ( isset( $_REQUEST[ $request ] ) ) {
330
-						$should_die = false;
331
-					}
332
-				}
328
+				    foreach ( $dont_die as $request ) {
329
+					    if ( isset( $_REQUEST[ $request ] ) ) {
330
+						    $should_die = false;
331
+					    }
332
+				    }
333 333
 
334
-				if ( $should_die ) {
335
-					wp_die();
336
-				}
334
+				    if ( $should_die ) {
335
+					    wp_die();
336
+				    }
337 337
 
338
-			} else {
339
-				return $html;
340
-			}
338
+			    } else {
339
+				    return $html;
340
+			    }
341 341
 
342
-			return '';
342
+			    return '';
343 343
 
344
-		}
344
+		    }
345 345
 
346
-		/**
346
+		    /**
347 347
 		 * Output the version in the header.
348 348
 		 */
349
-		public function generator() {
350
-			$file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
351
-			$plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
352
-
353
-			// Find source plugin/theme of SD
354
-			$source = array();
355
-			if ( strpos( $file, $plugins_dir ) !== false ) {
356
-				$source = explode( "/", plugin_basename( $file ) );
357
-			} else if ( function_exists( 'get_theme_root' ) ) {
358
-				$themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
359
-
360
-				if ( strpos( $file, $themes_dir ) !== false ) {
361
-					$source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
362
-				}
363
-			}
364
-
365
-			echo '<meta name="generator" content="WP Super Duper v' . esc_attr( $this->version ) . '"' . ( ! empty( $source[0] ) ? ' data-sd-source="' . esc_attr( $source[0] ) . '"' : '' ) . ' />';
366
-		}
367
-
368
-		/**
349
+		    public function generator() {
350
+			    $file = str_replace( array( "/", "\\" ), "/", realpath( __FILE__ ) );
351
+			    $plugins_dir = str_replace( array( "/", "\\" ), "/", realpath( WP_PLUGIN_DIR ) );
352
+
353
+			    // Find source plugin/theme of SD
354
+			    $source = array();
355
+			    if ( strpos( $file, $plugins_dir ) !== false ) {
356
+				    $source = explode( "/", plugin_basename( $file ) );
357
+			    } else if ( function_exists( 'get_theme_root' ) ) {
358
+				    $themes_dir = str_replace( array( "/", "\\" ), "/", realpath( get_theme_root() ) );
359
+
360
+				    if ( strpos( $file, $themes_dir ) !== false ) {
361
+					    $source = explode( "/", ltrim( str_replace( $themes_dir, "", $file ), "/" ) );
362
+				    }
363
+			    }
364
+
365
+			    echo '<meta name="generator" content="WP Super Duper v' . esc_attr( $this->version ) . '"' . ( ! empty( $source[0] ) ? ' data-sd-source="' . esc_attr( $source[0] ) . '"' : '' ) . ' />';
366
+		    }
367
+
368
+		    /**
369 369
 		 * Get widget settings.
370 370
 		 *
371 371
 		 * @since 1.0.0
372 372
 		 */
373
-		public static function get_widget_settings() {
374
-			global $sd_widgets;
375
-
376
-			$shortcode = isset( $_REQUEST['shortcode'] ) && $_REQUEST['shortcode'] ? sanitize_title_with_dashes( $_REQUEST['shortcode'] ) : '';
377
-			if ( ! $shortcode ) {
378
-				wp_die();
379
-			}
380
-			$widget_args = isset( $sd_widgets[ $shortcode ] ) ? $sd_widgets[ $shortcode ] : '';
381
-			if ( ! $widget_args ) {
382
-				wp_die();
383
-			}
384
-			$class_name = isset( $widget_args['class_name'] ) && $widget_args['class_name'] ? $widget_args['class_name'] : '';
385
-			if ( ! $class_name ) {
386
-				wp_die();
387
-			}
388
-
389
-			// invoke an instance method
390
-			$widget = new $class_name;
391
-
392
-			ob_start();
393
-			$widget->form( array() );
394
-			$form = ob_get_clean();
395
-			echo "<form id='$shortcode'>" . $form . "<div class=\"widget-control-save\"></div></form>";
396
-			echo "<style>" . $widget->widget_css() . "</style>";
397
-			echo "<script>" . $widget->widget_js() . "</script>";
398
-			?>
399
-			<?php
400
-			wp_die();
401
-		}
402
-
403
-		/**
373
+		    public static function get_widget_settings() {
374
+			    global $sd_widgets;
375
+
376
+			    $shortcode = isset( $_REQUEST['shortcode'] ) && $_REQUEST['shortcode'] ? sanitize_title_with_dashes( $_REQUEST['shortcode'] ) : '';
377
+			    if ( ! $shortcode ) {
378
+				    wp_die();
379
+			    }
380
+			    $widget_args = isset( $sd_widgets[ $shortcode ] ) ? $sd_widgets[ $shortcode ] : '';
381
+			    if ( ! $widget_args ) {
382
+				    wp_die();
383
+			    }
384
+			    $class_name = isset( $widget_args['class_name'] ) && $widget_args['class_name'] ? $widget_args['class_name'] : '';
385
+			    if ( ! $class_name ) {
386
+				    wp_die();
387
+			    }
388
+
389
+			    // invoke an instance method
390
+			    $widget = new $class_name;
391
+
392
+			    ob_start();
393
+			    $widget->form( array() );
394
+			    $form = ob_get_clean();
395
+			    echo "<form id='$shortcode'>" . $form . "<div class=\"widget-control-save\"></div></form>";
396
+			    echo "<style>" . $widget->widget_css() . "</style>";
397
+			    echo "<script>" . $widget->widget_js() . "</script>";
398
+			    ?>
399
+    			<?php
400
+			    wp_die();
401
+		    }
402
+
403
+		    /**
404 404
 		 * Insert shortcode builder button to classic editor (not inside Gutenberg, not needed).
405 405
 		 *
406 406
 		 * @param string $editor_id Optional. Shortcode editor id. Default null.
@@ -409,39 +409,39 @@  discard block
 block discarded – undo
409 409
 		 *@since 1.0.0
410 410
 		 *
411 411
 		 */
412
-		public static function shortcode_insert_button( $editor_id = '', $insert_shortcode_function = '' ) {
413
-			global $sd_widgets, $shortcode_insert_button_once;
414
-			if ( $shortcode_insert_button_once ) {
415
-				return;
416
-			}
417
-			add_thickbox();
412
+		    public static function shortcode_insert_button( $editor_id = '', $insert_shortcode_function = '' ) {
413
+			    global $sd_widgets, $shortcode_insert_button_once;
414
+			    if ( $shortcode_insert_button_once ) {
415
+				    return;
416
+			    }
417
+			    add_thickbox();
418 418
 
419 419
 
420
-			/**
420
+			    /**
421 421
 			 * Cornerstone makes us play dirty tricks :/
422 422
 			 * All media_buttons are removed via JS unless they are two specific id's so we wrap our content in this ID so it is not removed.
423 423
 			 */
424
-			if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
425
-				echo '<span id="insert-media-button">';
426
-			}
424
+			    if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
425
+				    echo '<span id="insert-media-button">';
426
+			    }
427 427
 
428
-			echo self::shortcode_button( 'this', 'true' );
428
+			    echo self::shortcode_button( 'this', 'true' );
429 429
 
430
-			// see opening note
431
-			if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
432
-				echo '</span>'; // end #insert-media-button
433
-			}
430
+			    // see opening note
431
+			    if ( function_exists( 'cornerstone_plugin_init' ) && ! is_admin() ) {
432
+				    echo '</span>'; // end #insert-media-button
433
+			    }
434 434
 
435
-			// Add separate script for generatepress theme sections
436
-			if ( function_exists( 'generate_sections_sections_metabox' ) && did_action( 'generate_sections_metabox' ) ) {
437
-			} else {
438
-				self::shortcode_insert_button_script( $editor_id, $insert_shortcode_function );
439
-			}
435
+			    // Add separate script for generatepress theme sections
436
+			    if ( function_exists( 'generate_sections_sections_metabox' ) && did_action( 'generate_sections_metabox' ) ) {
437
+			    } else {
438
+				    self::shortcode_insert_button_script( $editor_id, $insert_shortcode_function );
439
+			    }
440 440
 
441
-			$shortcode_insert_button_once = true;
442
-		}
441
+			    $shortcode_insert_button_once = true;
442
+		    }
443 443
 
444
-		/**
444
+		    /**
445 445
 		 * Gets the shortcode insert button html.
446 446
 		 *
447 447
 		 * @param string $id
@@ -449,14 +449,14 @@  discard block
 block discarded – undo
449 449
 		 *
450 450
 		 * @return mixed
451 451
 		 */
452
-		public static function shortcode_button( $id = '', $search_for_id = '' ) {
453
-			ob_start();
454
-			?>
452
+		    public static function shortcode_button( $id = '', $search_for_id = '' ) {
453
+			    ob_start();
454
+			    ?>
455 455
 			<span class="sd-lable-shortcode-inserter">
456 456
 				<a onclick="sd_ajax_get_picker(<?php echo $id;
457
-				if ( $search_for_id ) {
458
-					echo "," . $search_for_id;
459
-				} ?>);" href="#TB_inline?width=100%&height=550&inlineId=super-duper-content-ajaxed"
457
+				    if ( $search_for_id ) {
458
+					    echo "," . $search_for_id;
459
+				    } ?>);" href="#TB_inline?width=100%&height=550&inlineId=super-duper-content-ajaxed"
460 460
 				   class="thickbox button super-duper-content-open" title="Add Shortcode">
461 461
 					<span style="vertical-align: middle;line-height: 18px;font-size: 20px;"
462 462
 						  class="dashicons dashicons-screenoptions"></span>
@@ -467,21 +467,21 @@  discard block
 block discarded – undo
467 467
 			</span>
468 468
 
469 469
 			<?php
470
-			$html = ob_get_clean();
470
+			    $html = ob_get_clean();
471 471
 
472
-			// remove line breaks so we can use it in js
473
-			return preg_replace( "/\r|\n/", "", trim( $html ) );
474
-		}
472
+			    // remove line breaks so we can use it in js
473
+			    return preg_replace( "/\r|\n/", "", trim( $html ) );
474
+		    }
475 475
 
476
-		/**
476
+		    /**
477 477
 		 * Makes SD work with the siteOrigin page builder.
478 478
 		 *
479 479
 		 * @return mixed
480 480
 		 *@since 1.0.6
481 481
 		 */
482
-		public static function siteorigin_js() {
483
-			ob_start();
484
-			?>
482
+		    public static function siteorigin_js() {
483
+			    ob_start();
484
+			    ?>
485 485
 			<script>
486 486
 				/**
487 487
 				 * Check a form to see what items should be shown or hidden.
@@ -557,19 +557,19 @@  discard block
 block discarded – undo
557 557
 				});
558 558
 			</script>
559 559
 			<?php
560
-			$output = ob_get_clean();
560
+			    $output = ob_get_clean();
561 561
 
562
-			/*
562
+			    /*
563 563
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
564 564
 			 */
565 565
 
566
-			return str_replace( array(
567
-				'<script>',
568
-				'</script>'
569
-			), '', $output );
570
-		}
566
+			    return str_replace( array(
567
+				    '<script>',
568
+				    '</script>'
569
+			    ), '', $output );
570
+		    }
571 571
 
572
-		/**
572
+		    /**
573 573
 		 * Output the JS and CSS for the shortcode insert button.
574 574
 		 *
575 575
 		 * @param string $editor_id
@@ -578,8 +578,8 @@  discard block
 block discarded – undo
578 578
 		 *@since 1.0.6
579 579
 		 *
580 580
 		 */
581
-		public static function shortcode_insert_button_script( $editor_id = '', $insert_shortcode_function = '' ) {
582
-			?>
581
+		    public static function shortcode_insert_button_script( $editor_id = '', $insert_shortcode_function = '' ) {
582
+			    ?>
583 583
 			<style>
584 584
 				.sd-shortcode-left-wrap {
585 585
 					float: left;
@@ -702,40 +702,40 @@  discard block
 block discarded – undo
702 702
 					display: inline;
703 703
 				}
704 704
 				<?php } ?>
705
-				<?php if ( function_exists( 'et_builder_is_tb_admin_screen' ) && et_builder_is_tb_admin_screen() ) { ?>
706
-				body.divi_page_et_theme_builder div#TB_window.gd-tb-window{z-index:9999999}
705
+    				<?php if ( function_exists( 'et_builder_is_tb_admin_screen' ) && et_builder_is_tb_admin_screen() ) { ?>
706
+    				body.divi_page_et_theme_builder div#TB_window.gd-tb-window{z-index:9999999}
707 707
 				<?php } ?>
708
-			</style>
708
+    			</style>
709 709
 			<?php
710
-			if ( class_exists( 'SiteOrigin_Panels' ) ) {
711
-				echo "<script>" . self::siteorigin_js() . "</script>";
712
-			}
713
-			?>
714
-			<script>
710
+			    if ( class_exists( 'SiteOrigin_Panels' ) ) {
711
+				    echo "<script>" . self::siteorigin_js() . "</script>";
712
+			    }
713
+			    ?>
714
+    			<script>
715 715
 				<?php
716
-				if(! empty( $insert_shortcode_function )){
717
-					echo $insert_shortcode_function;
718
-				}else{
716
+				    if(! empty( $insert_shortcode_function )){
717
+					    echo $insert_shortcode_function;
718
+				    }else{
719 719
 
720
-				/**
720
+				    /**
721 721
 				 * Function for super duper insert shortcode.
722 722
 				 *
723 723
 				 * @since 1.0.0
724 724
 				 */
725
-				?>
725
+				    ?>
726 726
 				function sd_insert_shortcode($editor_id) {
727 727
 					$shortcode = jQuery('#TB_ajaxContent #sd-shortcode-output').val();
728 728
 					if ($shortcode) {
729 729
 						if (!$editor_id) {
730 730
 							<?php
731
-							if ( isset( $_REQUEST['et_fb'] ) ) {
732
-								echo '$editor_id = "#main_content_content_vb_tiny_mce";';
733
-							} elseif ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) {
734
-								echo '$editor_id = "#elementor-controls .wp-editor-container textarea";';
735
-							} else {
736
-								echo '$editor_id = "#wp-content-editor-container textarea";';
737
-							}
738
-							?>
731
+							    if ( isset( $_REQUEST['et_fb'] ) ) {
732
+								    echo '$editor_id = "#main_content_content_vb_tiny_mce";';
733
+							    } elseif ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) {
734
+								    echo '$editor_id = "#elementor-controls .wp-editor-container textarea";';
735
+							    } else {
736
+								    echo '$editor_id = "#wp-content-editor-container textarea";';
737
+							    }
738
+							    ?>
739 739
 						} else {
740 740
 							$editor_id = '#' + $editor_id;
741 741
 						}
@@ -1049,19 +1049,19 @@  discard block
 block discarded – undo
1049 1049
 				}
1050 1050
 			</script>
1051 1051
 			<?php
1052
-		}
1052
+		    }
1053 1053
 
1054
-		/**
1054
+		    /**
1055 1055
 		 * Gets some CSS for the widgets screen.
1056 1056
 		 *
1057 1057
 		 * @param bool $advanced If we should include advanced CSS.
1058 1058
 		 *
1059 1059
 		 * @return mixed
1060 1060
 		 */
1061
-		public function widget_css( $advanced = true ) {
1062
-			ob_start();
1063
-			?>
1064
-			<style>
1061
+		    public function widget_css( $advanced = true ) {
1062
+			    ob_start();
1063
+			    ?>
1064
+    			<style>
1065 1065
 				<?php if( $advanced ){ ?>
1066 1066
 				.sd-advanced-setting {
1067 1067
 					display: none;
@@ -1100,26 +1100,26 @@  discard block
 block discarded – undo
1100 1100
 				.elementor-control .sd-argument select[multiple] option{padding:3px}
1101 1101
 			</style>
1102 1102
 			<?php
1103
-			$output = ob_get_clean();
1103
+			    $output = ob_get_clean();
1104 1104
 
1105
-			/*
1105
+			    /*
1106 1106
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
1107 1107
 			 */
1108 1108
 
1109
-			return str_replace( array(
1110
-				'<style>',
1111
-				'</style>'
1112
-			), '', $output );
1113
-		}
1109
+			    return str_replace( array(
1110
+				    '<style>',
1111
+				    '</style>'
1112
+			    ), '', $output );
1113
+		    }
1114 1114
 
1115
-		/**
1115
+		    /**
1116 1116
 		 * Gets some JS for the widgets screen.
1117 1117
 		 *
1118 1118
 		 * @return mixed
1119 1119
 		 */
1120
-		public function widget_js() {
1121
-			ob_start();
1122
-			?>
1120
+		    public function widget_js() {
1121
+			    ob_start();
1122
+			    ?>
1123 1123
 			<script>
1124 1124
 
1125 1125
 				/**
@@ -1268,110 +1268,110 @@  discard block
 block discarded – undo
1268 1268
 
1269 1269
 				}
1270 1270
 				<?php do_action( 'wp_super_duper_widget_js', $this ); ?>
1271
-			</script>
1271
+    			</script>
1272 1272
 			<?php
1273
-			$output = ob_get_clean();
1273
+			    $output = ob_get_clean();
1274 1274
 
1275
-			/*
1275
+			    /*
1276 1276
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
1277 1277
 			 */
1278 1278
 
1279
-			return str_replace( array(
1280
-				'<script>',
1281
-				'</script>'
1282
-			), '', $output );
1283
-		}
1279
+			    return str_replace( array(
1280
+				    '<script>',
1281
+				    '</script>'
1282
+			    ), '', $output );
1283
+		    }
1284 1284
 
1285 1285
 
1286
-		/**
1286
+		    /**
1287 1287
 		 * Set the name from the argument key.
1288 1288
 		 *
1289 1289
 		 * @param $options
1290 1290
 		 *
1291 1291
 		 * @return mixed
1292 1292
 		 */
1293
-		private function add_name_from_key( $options, $arguments = false ) {
1294
-			if ( ! empty( $options['arguments'] ) ) {
1295
-				foreach ( $options['arguments'] as $key => $val ) {
1296
-					$options['arguments'][ $key ]['name'] = $key;
1297
-				}
1298
-			} elseif ( $arguments && is_array( $options ) && ! empty( $options ) ) {
1299
-				foreach ( $options as $key => $val ) {
1300
-					$options[ $key ]['name'] = $key;
1301
-				}
1302
-			}
1303
-
1304
-			return $options;
1305
-		}
1306
-
1307
-		/**
1293
+		    private function add_name_from_key( $options, $arguments = false ) {
1294
+			    if ( ! empty( $options['arguments'] ) ) {
1295
+				    foreach ( $options['arguments'] as $key => $val ) {
1296
+					    $options['arguments'][ $key ]['name'] = $key;
1297
+				    }
1298
+			    } elseif ( $arguments && is_array( $options ) && ! empty( $options ) ) {
1299
+				    foreach ( $options as $key => $val ) {
1300
+					    $options[ $key ]['name'] = $key;
1301
+				    }
1302
+			    }
1303
+
1304
+			    return $options;
1305
+		    }
1306
+
1307
+		    /**
1308 1308
 		 * Register the parent shortcode.
1309 1309
 		 *
1310 1310
 		 * @since 1.0.0
1311 1311
 		 */
1312
-		public function register_shortcode() {
1313
-			add_shortcode( $this->base_id, array( $this, 'shortcode_output' ) );
1314
-			add_action( 'wp_ajax_super_duper_output_shortcode', array( $this, 'render_shortcode' ) );
1315
-		}
1312
+		    public function register_shortcode() {
1313
+			    add_shortcode( $this->base_id, array( $this, 'shortcode_output' ) );
1314
+			    add_action( 'wp_ajax_super_duper_output_shortcode', array( $this, 'render_shortcode' ) );
1315
+		    }
1316 1316
 
1317
-		/**
1317
+		    /**
1318 1318
 		 * Render the shortcode via ajax so we can return it to Gutenberg.
1319 1319
 		 *
1320 1320
 		 * @since 1.0.0
1321 1321
 		 */
1322
-		public function render_shortcode() {
1323
-			check_ajax_referer( 'super_duper_output_shortcode', '_ajax_nonce', true );
1324
-			if ( ! current_user_can( 'manage_options' ) ) {
1325
-				wp_die();
1326
-			}
1327
-
1328
-			// we might need the $post value here so lets set it.
1329
-			if ( isset( $_POST['post_id'] ) && $_POST['post_id'] ) {
1330
-				$post_obj = get_post( absint( $_POST['post_id'] ) );
1331
-				if ( ! empty( $post_obj ) && empty( $post ) ) {
1332
-					global $post;
1333
-					$post = $post_obj;
1334
-				}
1335
-			}
1336
-
1337
-			if ( isset( $_POST['shortcode'] ) && $_POST['shortcode'] ) {
1338
-				$is_preview = $this->is_preview();
1339
-				$shortcode_name   = sanitize_title_with_dashes( $_POST['shortcode'] );
1340
-				$attributes_array = isset( $_POST['attributes'] ) && $_POST['attributes'] ? $_POST['attributes'] : array();
1341
-				$attributes       = '';
1342
-				if ( ! empty( $attributes_array ) ) {
1343
-					foreach ( $attributes_array as $key => $value ) {
1344
-						if ( is_array( $value ) ) {
1345
-							$value = implode( ",", $value );
1346
-						}
1347
-
1348
-						if ( ! empty( $value ) ) {
1349
-							$value = wp_unslash( $value );
1350
-
1351
-							// Encode [ and ].
1352
-							if ( $is_preview ) {
1353
-								$value = $this->encode_shortcodes( $value );
1354
-							}
1355
-						}
1356
-						$attributes .= " " . esc_attr( sanitize_title_with_dashes( $key ) ) . "='" . esc_attr( $value ) . "' ";
1357
-					}
1358
-				}
1359
-
1360
-				$shortcode = "[" . esc_attr( $shortcode_name ) . " " . $attributes . "]";
1361
-
1362
-				$content = do_shortcode( $shortcode );
1363
-
1364
-				// Decode [ and ].
1365
-				if ( ! empty( $content ) && $is_preview ) {
1366
-					$content = $this->decode_shortcodes( $content );
1367
-				}
1368
-
1369
-				echo $content;
1370
-			}
1371
-			wp_die();
1372
-		}
1373
-
1374
-		/**
1322
+		    public function render_shortcode() {
1323
+			    check_ajax_referer( 'super_duper_output_shortcode', '_ajax_nonce', true );
1324
+			    if ( ! current_user_can( 'manage_options' ) ) {
1325
+				    wp_die();
1326
+			    }
1327
+
1328
+			    // we might need the $post value here so lets set it.
1329
+			    if ( isset( $_POST['post_id'] ) && $_POST['post_id'] ) {
1330
+				    $post_obj = get_post( absint( $_POST['post_id'] ) );
1331
+				    if ( ! empty( $post_obj ) && empty( $post ) ) {
1332
+					    global $post;
1333
+					    $post = $post_obj;
1334
+				    }
1335
+			    }
1336
+
1337
+			    if ( isset( $_POST['shortcode'] ) && $_POST['shortcode'] ) {
1338
+				    $is_preview = $this->is_preview();
1339
+				    $shortcode_name   = sanitize_title_with_dashes( $_POST['shortcode'] );
1340
+				    $attributes_array = isset( $_POST['attributes'] ) && $_POST['attributes'] ? $_POST['attributes'] : array();
1341
+				    $attributes       = '';
1342
+				    if ( ! empty( $attributes_array ) ) {
1343
+					    foreach ( $attributes_array as $key => $value ) {
1344
+						    if ( is_array( $value ) ) {
1345
+							    $value = implode( ",", $value );
1346
+						    }
1347
+
1348
+						    if ( ! empty( $value ) ) {
1349
+							    $value = wp_unslash( $value );
1350
+
1351
+							    // Encode [ and ].
1352
+							    if ( $is_preview ) {
1353
+								    $value = $this->encode_shortcodes( $value );
1354
+							    }
1355
+						    }
1356
+						    $attributes .= " " . esc_attr( sanitize_title_with_dashes( $key ) ) . "='" . esc_attr( $value ) . "' ";
1357
+					    }
1358
+				    }
1359
+
1360
+				    $shortcode = "[" . esc_attr( $shortcode_name ) . " " . $attributes . "]";
1361
+
1362
+				    $content = do_shortcode( $shortcode );
1363
+
1364
+				    // Decode [ and ].
1365
+				    if ( ! empty( $content ) && $is_preview ) {
1366
+					    $content = $this->decode_shortcodes( $content );
1367
+				    }
1368
+
1369
+				    echo $content;
1370
+			    }
1371
+			    wp_die();
1372
+		    }
1373
+
1374
+		    /**
1375 1375
 		 * Output the shortcode.
1376 1376
 		 *
1377 1377
 		 * @param array $args
@@ -1379,22 +1379,22 @@  discard block
 block discarded – undo
1379 1379
 		 *
1380 1380
 		 * @return string
1381 1381
 		 */
1382
-		public function shortcode_output( $args = array(), $content = '' ) {
1383
-			$_instance = $args;
1382
+		    public function shortcode_output( $args = array(), $content = '' ) {
1383
+			    $_instance = $args;
1384 1384
 
1385
-			$args = $this->argument_values( $args );
1385
+			    $args = $this->argument_values( $args );
1386 1386
 
1387
-			// add extra argument so we know its a output to gutenberg
1388
-			//$args
1389
-			$args = $this->string_to_bool( $args );
1387
+			    // add extra argument so we know its a output to gutenberg
1388
+			    //$args
1389
+			    $args = $this->string_to_bool( $args );
1390 1390
 
1391
-			// if we have a enclosed shortcode we add it to the special `html` argument
1392
-			if ( ! empty( $content ) ) {
1393
-				$args['html'] = $content;
1394
-			}
1391
+			    // if we have a enclosed shortcode we add it to the special `html` argument
1392
+			    if ( ! empty( $content ) ) {
1393
+				    $args['html'] = $content;
1394
+			    }
1395 1395
 
1396
-			if ( ! $this->is_preview() ) {
1397
-				/**
1396
+			    if ( ! $this->is_preview() ) {
1397
+				    /**
1398 1398
 				 * Filters the settings for a particular widget args.
1399 1399
 				 *
1400 1400
 				 * @param array          $args      The current widget instance's settings.
@@ -1404,95 +1404,95 @@  discard block
 block discarded – undo
1404 1404
 				 *@since 1.0.28
1405 1405
 				 *
1406 1406
 				 */
1407
-				$args = apply_filters( 'wp_super_duper_widget_display_callback', $args, $this, $_instance );
1408
-
1409
-				if ( ! is_array( $args ) ) {
1410
-					return $args;
1411
-				}
1412
-			}
1413
-
1414
-			$class = isset( $this->options['widget_ops']['classname'] ) ? esc_attr( $this->options['widget_ops']['classname'] ) : '';
1415
-			$class .= " sdel-".$this->get_instance_hash();
1416
-
1417
-			$class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
1418
-			$class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
1419
-
1420
-			$attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
1421
-			$attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
1422
-
1423
-			$shortcode_args = array();
1424
-			$output         = '';
1425
-			$no_wrap        = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
1426
-			if ( isset( $args['no_wrap'] ) && $args['no_wrap'] ) {
1427
-				$no_wrap = true;
1428
-			}
1429
-			$main_content = $this->output( $args, $shortcode_args, $content );
1430
-			if ( $main_content && ! $no_wrap ) {
1431
-				// wrap the shortcode in a div with the same class as the widget
1432
-				$output .= '<div class="' . $class . '" ' . $attrs . '>';
1433
-				if ( ! empty( $args['title'] ) ) {
1434
-					// if its a shortcode and there is a title try to grab the title wrappers
1435
-					$shortcode_args = array( 'before_title' => '', 'after_title' => '' );
1436
-					if ( empty( $instance ) ) {
1437
-						global $wp_registered_sidebars;
1438
-						if ( ! empty( $wp_registered_sidebars ) ) {
1439
-							foreach ( $wp_registered_sidebars as $sidebar ) {
1440
-								if ( ! empty( $sidebar['before_title'] ) ) {
1441
-									$shortcode_args['before_title'] = $sidebar['before_title'];
1442
-									$shortcode_args['after_title']  = $sidebar['after_title'];
1443
-									break;
1444
-								}
1445
-							}
1446
-						}
1447
-					}
1448
-					$output .= $this->output_title( $shortcode_args, $args );
1449
-				}
1450
-				$output .= $main_content;
1451
-				$output .= '</div>';
1452
-			} elseif ( $main_content && $no_wrap ) {
1453
-				$output .= $main_content;
1454
-			}
1455
-
1456
-			// if preview show a placeholder if empty
1457
-			if ( $this->is_preview() && $output == '' ) {
1458
-				$output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
1459
-			}
1460
-
1461
-			return apply_filters( 'wp_super_duper_widget_output', $output, $args, $shortcode_args, $this );
1462
-		}
1463
-
1464
-		/**
1407
+				    $args = apply_filters( 'wp_super_duper_widget_display_callback', $args, $this, $_instance );
1408
+
1409
+				    if ( ! is_array( $args ) ) {
1410
+					    return $args;
1411
+				    }
1412
+			    }
1413
+
1414
+			    $class = isset( $this->options['widget_ops']['classname'] ) ? esc_attr( $this->options['widget_ops']['classname'] ) : '';
1415
+			    $class .= " sdel-".$this->get_instance_hash();
1416
+
1417
+			    $class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
1418
+			    $class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
1419
+
1420
+			    $attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
1421
+			    $attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
1422
+
1423
+			    $shortcode_args = array();
1424
+			    $output         = '';
1425
+			    $no_wrap        = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
1426
+			    if ( isset( $args['no_wrap'] ) && $args['no_wrap'] ) {
1427
+				    $no_wrap = true;
1428
+			    }
1429
+			    $main_content = $this->output( $args, $shortcode_args, $content );
1430
+			    if ( $main_content && ! $no_wrap ) {
1431
+				    // wrap the shortcode in a div with the same class as the widget
1432
+				    $output .= '<div class="' . $class . '" ' . $attrs . '>';
1433
+				    if ( ! empty( $args['title'] ) ) {
1434
+					    // if its a shortcode and there is a title try to grab the title wrappers
1435
+					    $shortcode_args = array( 'before_title' => '', 'after_title' => '' );
1436
+					    if ( empty( $instance ) ) {
1437
+						    global $wp_registered_sidebars;
1438
+						    if ( ! empty( $wp_registered_sidebars ) ) {
1439
+							    foreach ( $wp_registered_sidebars as $sidebar ) {
1440
+								    if ( ! empty( $sidebar['before_title'] ) ) {
1441
+									    $shortcode_args['before_title'] = $sidebar['before_title'];
1442
+									    $shortcode_args['after_title']  = $sidebar['after_title'];
1443
+									    break;
1444
+								    }
1445
+							    }
1446
+						    }
1447
+					    }
1448
+					    $output .= $this->output_title( $shortcode_args, $args );
1449
+				    }
1450
+				    $output .= $main_content;
1451
+				    $output .= '</div>';
1452
+			    } elseif ( $main_content && $no_wrap ) {
1453
+				    $output .= $main_content;
1454
+			    }
1455
+
1456
+			    // if preview show a placeholder if empty
1457
+			    if ( $this->is_preview() && $output == '' ) {
1458
+				    $output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
1459
+			    }
1460
+
1461
+			    return apply_filters( 'wp_super_duper_widget_output', $output, $args, $shortcode_args, $this );
1462
+		    }
1463
+
1464
+		    /**
1465 1465
 		 * Placeholder text to show if output is empty and we are on a preview/builder page.
1466 1466
 		 *
1467 1467
 		 * @param string $name
1468 1468
 		 *
1469 1469
 		 * @return string
1470 1470
 		 */
1471
-		public function preview_placeholder_text( $name = '' ) {
1472
-			return "<div style='background:#0185ba33;padding: 10px;border: 4px #ccc dashed;'>" . wp_sprintf( __( 'Placeholder for: %s', 'ayecode-connect' ), $name ) . "</div>";
1473
-		}
1471
+		    public function preview_placeholder_text( $name = '' ) {
1472
+			    return "<div style='background:#0185ba33;padding: 10px;border: 4px #ccc dashed;'>" . wp_sprintf( __( 'Placeholder for: %s', 'ayecode-connect' ), $name ) . "</div>";
1473
+		    }
1474 1474
 
1475
-		/**
1475
+		    /**
1476 1476
 		 * Sometimes booleans values can be turned to strings, so we fix that.
1477 1477
 		 *
1478 1478
 		 * @param $options
1479 1479
 		 *
1480 1480
 		 * @return mixed
1481 1481
 		 */
1482
-		public function string_to_bool( $options ) {
1483
-			// convert bool strings to booleans
1484
-			foreach ( $options as $key => $val ) {
1485
-				if ( $val == 'false' ) {
1486
-					$options[ $key ] = false;
1487
-				} elseif ( $val == 'true' ) {
1488
-					$options[ $key ] = true;
1489
-				}
1490
-			}
1491
-
1492
-			return $options;
1493
-		}
1494
-
1495
-		/**
1482
+		    public function string_to_bool( $options ) {
1483
+			    // convert bool strings to booleans
1484
+			    foreach ( $options as $key => $val ) {
1485
+				    if ( $val == 'false' ) {
1486
+					    $options[ $key ] = false;
1487
+				    } elseif ( $val == 'true' ) {
1488
+					    $options[ $key ] = true;
1489
+				    }
1490
+			    }
1491
+
1492
+			    return $options;
1493
+		    }
1494
+
1495
+		    /**
1496 1496
 		 * Get the argument values that are also filterable.
1497 1497
 		 *
1498 1498
 		 * @param $instance
@@ -1501,159 +1501,159 @@  discard block
 block discarded – undo
1501 1501
 		 *@since 1.0.12 Don't set checkbox default value if the value is empty.
1502 1502
 		 *
1503 1503
 		 */
1504
-		public function argument_values( $instance ) {
1505
-			$argument_values = array();
1506
-
1507
-			// set widget instance
1508
-			$this->instance = $instance;
1509
-
1510
-			if ( empty( $this->arguments ) ) {
1511
-				$this->arguments = $this->get_arguments();
1512
-			}
1513
-
1514
-			if ( ! empty( $this->arguments ) ) {
1515
-				foreach ( $this->arguments as $key => $args ) {
1516
-					// set the input name from the key
1517
-					$args['name'] = $key;
1518
-					//
1519
-					$argument_values[ $key ] = isset( $instance[ $key ] ) ? $instance[ $key ] : '';
1520
-					if ( $args['type'] == 'checkbox' && $argument_values[ $key ] == '' ) {
1521
-						// don't set default for an empty checkbox
1522
-					} elseif ( $argument_values[ $key ] == '' && isset( $args['default'] ) ) {
1523
-						$argument_values[ $key ] = $args['default'];
1524
-					}
1525
-				}
1526
-			}
1527
-
1528
-			return $argument_values;
1529
-		}
1530
-
1531
-		/**
1504
+		    public function argument_values( $instance ) {
1505
+			    $argument_values = array();
1506
+
1507
+			    // set widget instance
1508
+			    $this->instance = $instance;
1509
+
1510
+			    if ( empty( $this->arguments ) ) {
1511
+				    $this->arguments = $this->get_arguments();
1512
+			    }
1513
+
1514
+			    if ( ! empty( $this->arguments ) ) {
1515
+				    foreach ( $this->arguments as $key => $args ) {
1516
+					    // set the input name from the key
1517
+					    $args['name'] = $key;
1518
+					    //
1519
+					    $argument_values[ $key ] = isset( $instance[ $key ] ) ? $instance[ $key ] : '';
1520
+					    if ( $args['type'] == 'checkbox' && $argument_values[ $key ] == '' ) {
1521
+						    // don't set default for an empty checkbox
1522
+					    } elseif ( $argument_values[ $key ] == '' && isset( $args['default'] ) ) {
1523
+						    $argument_values[ $key ] = $args['default'];
1524
+					    }
1525
+				    }
1526
+			    }
1527
+
1528
+			    return $argument_values;
1529
+		    }
1530
+
1531
+		    /**
1532 1532
 		 * Set arguments in super duper.
1533 1533
 		 *
1534 1534
 		 * @return array Set arguments.
1535 1535
 		 *@since 1.0.0
1536 1536
 		 *
1537 1537
 		 */
1538
-		public function set_arguments() {
1539
-			return $this->arguments;
1540
-		}
1538
+		    public function set_arguments() {
1539
+			    return $this->arguments;
1540
+		    }
1541 1541
 
1542
-		/**
1542
+		    /**
1543 1543
 		 * Get arguments in super duper.
1544 1544
 		 *
1545 1545
 		 * @return array Get arguments.
1546 1546
 		 *@since 1.0.0
1547 1547
 		 *
1548 1548
 		 */
1549
-		public function get_arguments() {
1550
-			if ( empty( $this->arguments ) ) {
1551
-				$this->arguments = $this->set_arguments();
1552
-			}
1549
+		    public function get_arguments() {
1550
+			    if ( empty( $this->arguments ) ) {
1551
+				    $this->arguments = $this->set_arguments();
1552
+			    }
1553 1553
 
1554
-			$this->arguments = apply_filters( 'wp_super_duper_arguments', $this->arguments, $this->options, $this->instance );
1555
-			$this->arguments = $this->add_name_from_key( $this->arguments, true );
1554
+			    $this->arguments = apply_filters( 'wp_super_duper_arguments', $this->arguments, $this->options, $this->instance );
1555
+			    $this->arguments = $this->add_name_from_key( $this->arguments, true );
1556 1556
 
1557
-			return $this->arguments;
1558
-		}
1557
+			    return $this->arguments;
1558
+		    }
1559 1559
 
1560
-		/**
1560
+		    /**
1561 1561
 		 * This is the main output class for all 3 items, widget, shortcode and block, it is extended in the calling class.
1562 1562
 		 *
1563 1563
 		 * @param array $args
1564 1564
 		 * @param array $widget_args
1565 1565
 		 * @param string $content
1566 1566
 		 */
1567
-		public function output( $args = array(), $widget_args = array(), $content = '' ) {
1567
+		    public function output( $args = array(), $widget_args = array(), $content = '' ) {
1568 1568
 
1569
-		}
1569
+		    }
1570 1570
 
1571
-		/**
1571
+		    /**
1572 1572
 		 * Add the dynamic block code inline when the wp-block in enqueued.
1573 1573
 		 */
1574
-		public function register_block() {
1575
-			wp_add_inline_script( 'wp-blocks', $this->block() );
1576
-			if ( class_exists( 'SiteOrigin_Panels' ) ) {
1577
-				wp_add_inline_script( 'wp-blocks', $this->siteorigin_js() );
1578
-			}
1579
-		}
1580
-
1581
-		/**
1574
+		    public function register_block() {
1575
+			    wp_add_inline_script( 'wp-blocks', $this->block() );
1576
+			    if ( class_exists( 'SiteOrigin_Panels' ) ) {
1577
+				    wp_add_inline_script( 'wp-blocks', $this->siteorigin_js() );
1578
+			    }
1579
+		    }
1580
+
1581
+		    /**
1582 1582
 		 * Check if we need to show advanced options.
1583 1583
 		 *
1584 1584
 		 * @return bool
1585 1585
 		 */
1586
-		public function block_show_advanced() {
1586
+		    public function block_show_advanced() {
1587 1587
 
1588
-			$show      = false;
1589
-			$arguments = $this->get_arguments();
1588
+			    $show      = false;
1589
+			    $arguments = $this->get_arguments();
1590 1590
 
1591
-			if ( ! empty( $arguments ) ) {
1592
-				foreach ( $arguments as $argument ) {
1593
-					if ( isset( $argument['advanced'] ) && $argument['advanced'] ) {
1594
-						$show = true;
1595
-						break; // no need to continue if we know we have it
1596
-					}
1597
-				}
1598
-			}
1591
+			    if ( ! empty( $arguments ) ) {
1592
+				    foreach ( $arguments as $argument ) {
1593
+					    if ( isset( $argument['advanced'] ) && $argument['advanced'] ) {
1594
+						    $show = true;
1595
+						    break; // no need to continue if we know we have it
1596
+					    }
1597
+				    }
1598
+			    }
1599 1599
 
1600
-			return $show;
1601
-		}
1600
+			    return $show;
1601
+		    }
1602 1602
 
1603
-		/**
1603
+		    /**
1604 1604
 		 * Get the url path to the current folder.
1605 1605
 		 *
1606 1606
 		 * @return string
1607 1607
 		 */
1608
-		public function get_url() {
1609
-			$url = $this->url;
1608
+		    public function get_url() {
1609
+			    $url = $this->url;
1610 1610
 
1611
-			if ( ! $url ) {
1612
-				$content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
1613
-				$content_url = untrailingslashit( WP_CONTENT_URL );
1611
+			    if ( ! $url ) {
1612
+				    $content_dir = wp_normalize_path( untrailingslashit( WP_CONTENT_DIR ) );
1613
+				    $content_url = untrailingslashit( WP_CONTENT_URL );
1614 1614
 
1615
-				// Replace http:// to https://.
1616
-				if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
1617
-					$content_url = str_replace( 'http://', 'https://', $content_url );
1618
-				}
1615
+				    // Replace http:// to https://.
1616
+				    if ( strpos( $content_url, 'http://' ) === 0 && strpos( plugins_url(), 'https://' ) === 0 ) {
1617
+					    $content_url = str_replace( 'http://', 'https://', $content_url );
1618
+				    }
1619 1619
 
1620
-				// Check if we are inside a plugin
1621
-				$file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
1622
-				$url = str_replace( $content_dir, $content_url, $file_dir );
1623
-				$url = trailingslashit( $url );
1624
-				$this->url = $url;
1625
-			}
1620
+				    // Check if we are inside a plugin
1621
+				    $file_dir = str_replace( "/includes", "", wp_normalize_path( dirname( __FILE__ ) ) );
1622
+				    $url = str_replace( $content_dir, $content_url, $file_dir );
1623
+				    $url = trailingslashit( $url );
1624
+				    $this->url = $url;
1625
+			    }
1626 1626
 
1627
-			return $url;
1628
-		}
1627
+			    return $url;
1628
+		    }
1629 1629
 
1630
-		/**
1630
+		    /**
1631 1631
 		 * Get the url path to the current folder.
1632 1632
 		 *
1633 1633
 		 * @return string
1634 1634
 		 */
1635
-		public function get_url_old() {
1635
+		    public function get_url_old() {
1636 1636
 
1637
-			$url = $this->url;
1637
+			    $url = $this->url;
1638 1638
 
1639
-			if ( ! $url ) {
1640
-				// check if we are inside a plugin
1641
-				$file_dir = str_replace( "/includes", "", dirname( __FILE__ ) );
1639
+			    if ( ! $url ) {
1640
+				    // check if we are inside a plugin
1641
+				    $file_dir = str_replace( "/includes", "", dirname( __FILE__ ) );
1642 1642
 
1643
-				$dir_parts = explode( "/wp-content/", $file_dir );
1644
-				$url_parts = explode( "/wp-content/", plugins_url() );
1643
+				    $dir_parts = explode( "/wp-content/", $file_dir );
1644
+				    $url_parts = explode( "/wp-content/", plugins_url() );
1645 1645
 
1646
-				if ( ! empty( $url_parts[0] ) && ! empty( $dir_parts[1] ) ) {
1647
-					$url       = trailingslashit( $url_parts[0] . "/wp-content/" . $dir_parts[1] );
1648
-					$this->url = $url;
1649
-				}
1650
-			}
1646
+				    if ( ! empty( $url_parts[0] ) && ! empty( $dir_parts[1] ) ) {
1647
+					    $url       = trailingslashit( $url_parts[0] . "/wp-content/" . $dir_parts[1] );
1648
+					    $this->url = $url;
1649
+				    }
1650
+			    }
1651 1651
 
1652 1652
 
1653
-			return $url;
1654
-		}
1653
+			    return $url;
1654
+		    }
1655 1655
 
1656
-		/**
1656
+		    /**
1657 1657
 		 * Generate the block icon.
1658 1658
 		 *
1659 1659
 		 * Enables the use of Font Awesome icons.
@@ -1665,99 +1665,99 @@  discard block
 block discarded – undo
1665 1665
 		 * @return string
1666 1666
 		 *@since 1.1.0
1667 1667
 		 */
1668
-		public function get_block_icon( $icon ) {
1669
-
1670
-			// check if we have a Font Awesome icon
1671
-			$fa_type = '';
1672
-			if ( substr( $icon, 0, 7 ) === "fas fa-" ) {
1673
-				$fa_type = 'solid';
1674
-			} elseif ( substr( $icon, 0, 7 ) === "far fa-" ) {
1675
-				$fa_type = 'regular';
1676
-			} elseif ( substr( $icon, 0, 7 ) === "fab fa-" ) {
1677
-				$fa_type = 'brands';
1678
-			} else {
1679
-				$icon = "'" . $icon . "'";
1680
-			}
1681
-
1682
-			// set the icon if we found one
1683
-			if ( $fa_type ) {
1684
-				$fa_icon = str_replace( array( "fas fa-", "far fa-", "fab fa-" ), "", $icon );
1685
-				$icon    = "el('svg',{width: 20, height: 20, viewBox: '0 0 20 20'},el('use', {'xlink:href': '" . $this->get_url() . "icons/" . $fa_type . ".svg#" . $fa_icon . "','href': '" . $this->get_url() . "icons/" . $fa_type . ".svg#" . $fa_icon . "'}))";
1686
-			}
1687
-
1688
-			return $icon;
1689
-		}
1690
-
1691
-		public function group_arguments( $arguments ) {
1692
-			if ( ! empty( $arguments ) ) {
1693
-				$temp_arguments = array();
1694
-				$general        = __( "General", 'ayecode-connect' );
1695
-				$add_sections   = false;
1696
-				foreach ( $arguments as $key => $args ) {
1697
-					if ( isset( $args['group'] ) ) {
1698
-						$temp_arguments[ $args['group'] ][ $key ] = $args;
1699
-						$add_sections                             = true;
1700
-					} else {
1701
-						$temp_arguments[ $general ][ $key ] = $args;
1702
-					}
1703
-				}
1704
-
1705
-				// only add sections if more than one
1706
-				if ( $add_sections ) {
1707
-					$arguments = $temp_arguments;
1708
-				}
1709
-			}
1710
-
1711
-			return $arguments;
1712
-		}
1713
-
1714
-		/**
1668
+		    public function get_block_icon( $icon ) {
1669
+
1670
+			    // check if we have a Font Awesome icon
1671
+			    $fa_type = '';
1672
+			    if ( substr( $icon, 0, 7 ) === "fas fa-" ) {
1673
+				    $fa_type = 'solid';
1674
+			    } elseif ( substr( $icon, 0, 7 ) === "far fa-" ) {
1675
+				    $fa_type = 'regular';
1676
+			    } elseif ( substr( $icon, 0, 7 ) === "fab fa-" ) {
1677
+				    $fa_type = 'brands';
1678
+			    } else {
1679
+				    $icon = "'" . $icon . "'";
1680
+			    }
1681
+
1682
+			    // set the icon if we found one
1683
+			    if ( $fa_type ) {
1684
+				    $fa_icon = str_replace( array( "fas fa-", "far fa-", "fab fa-" ), "", $icon );
1685
+				    $icon    = "el('svg',{width: 20, height: 20, viewBox: '0 0 20 20'},el('use', {'xlink:href': '" . $this->get_url() . "icons/" . $fa_type . ".svg#" . $fa_icon . "','href': '" . $this->get_url() . "icons/" . $fa_type . ".svg#" . $fa_icon . "'}))";
1686
+			    }
1687
+
1688
+			    return $icon;
1689
+		    }
1690
+
1691
+		    public function group_arguments( $arguments ) {
1692
+			    if ( ! empty( $arguments ) ) {
1693
+				    $temp_arguments = array();
1694
+				    $general        = __( "General", 'ayecode-connect' );
1695
+				    $add_sections   = false;
1696
+				    foreach ( $arguments as $key => $args ) {
1697
+					    if ( isset( $args['group'] ) ) {
1698
+						    $temp_arguments[ $args['group'] ][ $key ] = $args;
1699
+						    $add_sections                             = true;
1700
+					    } else {
1701
+						    $temp_arguments[ $general ][ $key ] = $args;
1702
+					    }
1703
+				    }
1704
+
1705
+				    // only add sections if more than one
1706
+				    if ( $add_sections ) {
1707
+					    $arguments = $temp_arguments;
1708
+				    }
1709
+			    }
1710
+
1711
+			    return $arguments;
1712
+		    }
1713
+
1714
+		    /**
1715 1715
 		 * Parse used group tabs.
1716 1716
 		 *
1717 1717
 		 * @since 1.1.17
1718 1718
 		 */
1719
-		public function group_block_tabs( $tabs, $arguments ) {
1720
-			if ( ! empty( $tabs ) && ! empty( $arguments ) ) {
1721
-				$has_sections = false;
1722
-
1723
-				foreach ( $this->arguments as $key => $args ) {
1724
-					if ( isset( $args['group'] ) ) {
1725
-						$has_sections = true;
1726
-						break;
1727
-					}
1728
-				}
1719
+		    public function group_block_tabs( $tabs, $arguments ) {
1720
+			    if ( ! empty( $tabs ) && ! empty( $arguments ) ) {
1721
+				    $has_sections = false;
1729 1722
 
1730
-				if ( ! $has_sections ) {
1731
-					return $tabs;
1732
-				}
1723
+				    foreach ( $this->arguments as $key => $args ) {
1724
+					    if ( isset( $args['group'] ) ) {
1725
+						    $has_sections = true;
1726
+						    break;
1727
+					    }
1728
+				    }
1733 1729
 
1734
-				$new_tabs = array();
1730
+				    if ( ! $has_sections ) {
1731
+					    return $tabs;
1732
+				    }
1735 1733
 
1736
-				foreach ( $tabs as $tab_key => $tab ) {
1737
-					$new_groups = array();
1734
+				    $new_tabs = array();
1738 1735
 
1739
-					if ( ! empty( $tab['groups'] ) && is_array( $tab['groups'] ) ) {
1740
-						foreach ( $tab['groups'] as $group ) {
1741
-							if ( isset( $arguments[ $group ] ) ) {
1742
-								$new_groups[] = $group;
1743
-							}
1744
-						}
1745
-					}
1736
+				    foreach ( $tabs as $tab_key => $tab ) {
1737
+					    $new_groups = array();
1746 1738
 
1747
-					if ( ! empty( $new_groups ) ) {
1748
-						$tab['groups'] = $new_groups;
1739
+					    if ( ! empty( $tab['groups'] ) && is_array( $tab['groups'] ) ) {
1740
+						    foreach ( $tab['groups'] as $group ) {
1741
+							    if ( isset( $arguments[ $group ] ) ) {
1742
+								    $new_groups[] = $group;
1743
+							    }
1744
+						    }
1745
+					    }
1749 1746
 
1750
-						$new_tabs[ $tab_key ] = $tab;
1751
-					}
1752
-				}
1747
+					    if ( ! empty( $new_groups ) ) {
1748
+						    $tab['groups'] = $new_groups;
1753 1749
 
1754
-				$tabs = $new_tabs;
1755
-			}
1750
+						    $new_tabs[ $tab_key ] = $tab;
1751
+					    }
1752
+				    }
1756 1753
 
1757
-			return $tabs;
1758
-		}
1754
+				    $tabs = $new_tabs;
1755
+			    }
1759 1756
 
1760
-		/**
1757
+			    return $tabs;
1758
+		    }
1759
+
1760
+		    /**
1761 1761
 		 * Output the JS for building the dynamic Guntenberg block.
1762 1762
 		 *
1763 1763
 		 * @return mixed
@@ -1765,18 +1765,18 @@  discard block
 block discarded – undo
1765 1765
 		 * @since 1.1.0 Font Awesome classes can be used for icons.
1766 1766
 		 * @since 1.0.4 Added block_wrap property which will set the block wrapping output element ie: div, span, p or empty for no wrap.
1767 1767
 		 */
1768
-		public function block() {
1769
-			global $sd_is_js_functions_loaded, $aui_bs5;
1768
+		    public function block() {
1769
+			    global $sd_is_js_functions_loaded, $aui_bs5;
1770 1770
 
1771
-			$show_advanced = $this->block_show_advanced();
1771
+			    $show_advanced = $this->block_show_advanced();
1772 1772
 
1773
-			ob_start();
1774
-			?>
1775
-			<script>
1773
+			    ob_start();
1774
+			    ?>
1775
+    			<script>
1776 1776
 			<?php
1777
-			if ( ! $sd_is_js_functions_loaded ) {
1778
-				$sd_is_js_functions_loaded = true;
1779
-			?>
1777
+			    if ( ! $sd_is_js_functions_loaded ) {
1778
+				    $sd_is_js_functions_loaded = true;
1779
+			    ?>
1780 1780
 function sd_show_view_options($this){
1781 1781
 	if(jQuery($this).html().length){
1782 1782
 		jQuery($this).html('');
@@ -2222,8 +2222,8 @@  discard block
 block discarded – undo
2222 2222
 				$classes = [];
2223 2223
 
2224 2224
 				<?php
2225
-				if($aui_bs5){
2226
-					?>
2225
+				    if($aui_bs5){
2226
+					    ?>
2227 2227
 				$aui_bs5 = true;
2228 2228
 				$p_ml = 'ms-';
2229 2229
 				$p_mr = 'me-';
@@ -2231,8 +2231,8 @@  discard block
 block discarded – undo
2231 2231
 				$p_pl = 'ps-';
2232 2232
 				$p_pr = 'pe-';
2233 2233
 					<?php
2234
-				}else{
2235
-						?>
2234
+				    }else{
2235
+						    ?>
2236 2236
 				$aui_bs5 = false;
2237 2237
 				$p_ml = 'ml-';
2238 2238
 				$p_mr = 'mr-';
@@ -2240,8 +2240,8 @@  discard block
 block discarded – undo
2240 2240
 				$p_pl = 'pl-';
2241 2241
 				$p_pr = 'pr-';
2242 2242
 					<?php
2243
-				}
2244
-				?>
2243
+				    }
2244
+				    ?>
2245 2245
 
2246 2246
 				// margins
2247 2247
 				if ( $args['mt'] !== undefined && $args['mt'] !== '' ) { $classes.push( "mt-" + $args['mt'] );  $mt = $args['mt']; }else{$mt = null;}
@@ -2425,12 +2425,12 @@  discard block
 block discarded – undo
2425 2425
 			<?php
2426 2426
 
2427 2427
 
2428
-			}
2428
+			    }
2429 2429
 
2430
-			if(method_exists($this,'block_global_js')){
2431
-					echo $this->block_global_js();
2432
-			}
2433
-			?>
2430
+			    if(method_exists($this,'block_global_js')){
2431
+					    echo $this->block_global_js();
2432
+			    }
2433
+			    ?>
2434 2434
 
2435 2435
 jQuery(function() {
2436 2436
 
@@ -2483,13 +2483,13 @@  discard block
 block discarded – undo
2483 2483
 						icon: <?php echo $this->get_block_icon( $this->options['block-icon'] );?>,//'<?php echo isset( $this->options['block-icon'] ) ? esc_attr( $this->options['block-icon'] ) : 'shield-alt';?>', // Block icon from Dashicons → https://developer.wordpress.org/resource/dashicons/.
2484 2484
 						supports: {
2485 2485
 							<?php
2486
-							if(!isset($this->options['block-supports']['renaming'])){
2487
-								$this->options['block-supports']['renaming'] = false;
2488
-							}
2489
-							if ( isset( $this->options['block-supports'] ) ) {
2490
-								echo $this->array_to_attributes( $this->options['block-supports'] );
2491
-							}
2492
-							?>
2486
+							    if(!isset($this->options['block-supports']['renaming'])){
2487
+								    $this->options['block-supports']['renaming'] = false;
2488
+							    }
2489
+							    if ( isset( $this->options['block-supports'] ) ) {
2490
+								    echo $this->array_to_attributes( $this->options['block-supports'] );
2491
+							    }
2492
+							    ?>
2493 2493
 						},
2494 2494
 						__experimentalLabel( attributes, { context } ) {
2495 2495
 							var visibility_html = attributes && attributes.visibility_conditions ? ' &#128065;' : '';
@@ -2499,184 +2499,184 @@  discard block
 block discarded – undo
2499 2499
 						},
2500 2500
 						category: '<?php echo isset( $this->options['block-category'] ) ? esc_attr( $this->options['block-category'] ) : 'common';?>', // Block category — Group blocks together based on common traits E.g. common, formatting, layout widgets, embed.
2501 2501
 						<?php if ( isset( $this->options['block-keywords'] ) ) {
2502
-						echo "keywords : " . $this->options['block-keywords'] . ",";
2503
-						}
2504
-
2505
-
2506
-						// block hover preview.
2507
-						$example_args = array();
2508
-						if(!empty($this->arguments)){
2509
-							foreach($this->arguments as $key => $a_args){
2510
-								if(isset($a_args['example'])){
2511
-									$example_args[$key] = $a_args['example'];
2512
-								}
2513
-							}
2514
-						}
2515
-						$viewport_width = isset($this->options['example']['viewportWidth']) ? 'viewportWidth: '.absint($this->options['example']['viewportWidth']) : '';
2516
-						$example_inner_blocks = !empty($this->options['example']['innerBlocks']) && is_array($this->options['example']['innerBlocks']) ? 'innerBlocks: ' . wp_json_encode($this->options['example']['innerBlocks']) : '';
2517
-						if( isset( $this->options['example'] ) && $this->options['example'] === false ){
2518
-							// no preview if set to false
2519
-						}elseif( !empty( $example_args ) ){
2520
-							echo "example : {attributes:{".$this->array_to_attributes( $example_args )."},$viewport_width},";
2521
-						}elseif( !empty( $this->options['example'] ) ){
2522
-							unset($this->options['example']['viewportWidth']);
2523
-							unset($this->options['example']['innerBlocks']);
2524
-							$example_atts = $this->array_to_attributes( $this->options['example'] );
2525
-							$example_parts = array();
2526
-							if($example_atts){
2527
-								$example_parts[] = rtrim($example_atts,",");
2528
-							}
2529
-							if($viewport_width){
2530
-								$example_parts[] = $viewport_width;
2531
-							}
2532
-							if($example_inner_blocks){
2533
-								$example_parts[] = $example_inner_blocks;
2534
-							}
2535
-							if(!empty($example_parts)){
2536
-								echo "example : {".implode(',', $example_parts)."},";
2537
-							}
2538
-						}else{
2539
-							echo 'example : {viewportWidth: 500},';
2540
-						}
2541
-
2542
-
2543
-
2544
-						// limit to parent
2545
-						if( !empty( $this->options['parent'] ) ){
2546
-							echo "parent : " . wp_json_encode( $this->options['parent'] ) . ",";
2547
-						}
2548
-
2549
-						// limit allowed blocks
2550
-						if( !empty( $this->options['allowed-blocks'] ) ){
2551
-							echo "allowedBlocks : " . wp_json_encode( $this->options['allowed-blocks'] ) . ",";
2552
-						}
2553
-
2554
-						// maybe set no_wrap
2555
-						$no_wrap = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
2556
-						if ( isset( $this->arguments['no_wrap'] ) && $this->arguments['no_wrap'] ) {
2557
-							$no_wrap = true;
2558
-						}
2559
-						if ( $no_wrap ) {
2560
-							$this->options['block-wrap'] = '';
2561
-						}
2562
-
2563
-						// maybe load the drag/drop functions.
2564
-						$img_drag_drop = false;
2565
-
2566
-						$show_alignment = false;
2567
-						// align feature
2568
-						/*echo "supports: {";
2502
+						    echo "keywords : " . $this->options['block-keywords'] . ",";
2503
+						    }
2504
+
2505
+
2506
+						    // block hover preview.
2507
+						    $example_args = array();
2508
+						    if(!empty($this->arguments)){
2509
+							    foreach($this->arguments as $key => $a_args){
2510
+								    if(isset($a_args['example'])){
2511
+									    $example_args[$key] = $a_args['example'];
2512
+								    }
2513
+							    }
2514
+						    }
2515
+						    $viewport_width = isset($this->options['example']['viewportWidth']) ? 'viewportWidth: '.absint($this->options['example']['viewportWidth']) : '';
2516
+						    $example_inner_blocks = !empty($this->options['example']['innerBlocks']) && is_array($this->options['example']['innerBlocks']) ? 'innerBlocks: ' . wp_json_encode($this->options['example']['innerBlocks']) : '';
2517
+						    if( isset( $this->options['example'] ) && $this->options['example'] === false ){
2518
+							    // no preview if set to false
2519
+						    }elseif( !empty( $example_args ) ){
2520
+							    echo "example : {attributes:{".$this->array_to_attributes( $example_args )."},$viewport_width},";
2521
+						    }elseif( !empty( $this->options['example'] ) ){
2522
+							    unset($this->options['example']['viewportWidth']);
2523
+							    unset($this->options['example']['innerBlocks']);
2524
+							    $example_atts = $this->array_to_attributes( $this->options['example'] );
2525
+							    $example_parts = array();
2526
+							    if($example_atts){
2527
+								    $example_parts[] = rtrim($example_atts,",");
2528
+							    }
2529
+							    if($viewport_width){
2530
+								    $example_parts[] = $viewport_width;
2531
+							    }
2532
+							    if($example_inner_blocks){
2533
+								    $example_parts[] = $example_inner_blocks;
2534
+							    }
2535
+							    if(!empty($example_parts)){
2536
+								    echo "example : {".implode(',', $example_parts)."},";
2537
+							    }
2538
+						    }else{
2539
+							    echo 'example : {viewportWidth: 500},';
2540
+						    }
2541
+
2542
+
2543
+
2544
+						    // limit to parent
2545
+						    if( !empty( $this->options['parent'] ) ){
2546
+							    echo "parent : " . wp_json_encode( $this->options['parent'] ) . ",";
2547
+						    }
2548
+
2549
+						    // limit allowed blocks
2550
+						    if( !empty( $this->options['allowed-blocks'] ) ){
2551
+							    echo "allowedBlocks : " . wp_json_encode( $this->options['allowed-blocks'] ) . ",";
2552
+						    }
2553
+
2554
+						    // maybe set no_wrap
2555
+						    $no_wrap = isset( $this->options['no_wrap'] ) && $this->options['no_wrap'] ? true : false;
2556
+						    if ( isset( $this->arguments['no_wrap'] ) && $this->arguments['no_wrap'] ) {
2557
+							    $no_wrap = true;
2558
+						    }
2559
+						    if ( $no_wrap ) {
2560
+							    $this->options['block-wrap'] = '';
2561
+						    }
2562
+
2563
+						    // maybe load the drag/drop functions.
2564
+						    $img_drag_drop = false;
2565
+
2566
+						    $show_alignment = false;
2567
+						    // align feature
2568
+						    /*echo "supports: {";
2569 2569
 						echo "	align: true,";
2570 2570
 						echo "  html: false";
2571 2571
 						echo "},";*/
2572 2572
 
2573 2573
 
2574
-							echo "attributes : {";
2575
-
2576
-							if ( $show_advanced ) {
2577
-								echo "show_advanced: {";
2578
-								echo "	type: 'boolean',";
2579
-								echo "  default: false,";
2580
-								echo "},";
2581
-							}
2582
-
2583
-							// block wrap element
2584
-							if ( ! empty( $this->options['block-wrap'] ) ) { //@todo we should validate this?
2585
-								echo "block_wrap: {";
2586
-								echo "	type: 'string',";
2587
-								echo "  default: '" . esc_attr( $this->options['block-wrap'] ) . "',";
2588
-								echo "},";
2589
-							}
2590
-
2591
-
2592
-							if ( ! empty( $this->arguments ) ) {
2593
-
2594
-								foreach ( $this->arguments as $key => $args ) {
2595
-
2596
-									if( $args['type'] == 'image' ||  $args['type'] == 'images' ){
2597
-										$img_drag_drop = true;
2598
-									}
2599
-
2600
-									// set if we should show alignment
2601
-									if ( $key == 'alignment' ) {
2602
-										$show_alignment = true;
2603
-									}
2604
-
2605
-									$extra = '';
2606
-
2607
-									if ( $args['type'] == 'notice' ||  $args['type'] == 'tab' ) {
2608
-										continue;
2609
-									}
2610
-									elseif ( $args['type'] == 'checkbox' ) {
2611
-										$type    = 'boolean';
2612
-										$default = isset( $args['default'] ) && $args['default'] ? 'true' : 'false';
2613
-									} elseif ( $args['type'] == 'number' ) {
2614
-										$type    = 'number';
2615
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2616
-									} elseif ( $args['type'] == 'select' && ! empty( $args['multiple'] ) ) {
2617
-										$type = 'array';
2618
-										if ( isset( $args['default'] ) && is_array( $args['default'] ) ) {
2619
-											$default = ! empty( $args['default'] ) ? "['" . implode( "','", $args['default'] ) . "']" : "[]";
2620
-										} else {
2621
-											$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2622
-										}
2623
-									} elseif ( $args['type'] == 'tagselect' ) {
2624
-										$type    = 'array';
2625
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2626
-									} elseif ( $args['type'] == 'multiselect' ) {
2627
-										$type    = 'array';
2628
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2629
-									} elseif ( $args['type'] == 'image_xy' ) {
2630
-										$type    = 'object';
2631
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2632
-									} elseif ( $args['type'] == 'image' ) {
2633
-										$type    = 'string';
2634
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2635
-
2636
-										// add a field for ID
2637
-	//                                    echo $key . "_id : {";
2638
-	//                                    echo "type : 'number',";
2639
-	//                                    echo "},";
2640
-	//                                    echo $key . "_xy : {";
2641
-	//                                    echo "type : 'object',";
2642
-	//                                    echo "},";
2643
-
2644
-									} else {
2645
-										$type    = !empty($args['hidden_type']) ? esc_attr($args['hidden_type']) : 'string';
2646
-										$default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2647
-
2648
-									}
2649
-									echo $key . " : {";
2650
-									echo "type : '$type',";
2651
-									echo "default : $default,";
2652
-									echo "},";
2653
-								}
2654
-							}
2655
-
2656
-							echo "content : {type : 'string',default: 'Please select the attributes in the block settings'},";
2657
-							echo "sd_shortcode : {type : 'string',default: ''},";
2658
-
2659
-							if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
2660
-								echo "sd_shortcode_close : {type : 'string',default: ''},";
2661
-							}
2662
-
2663
-							echo "className: { type: 'string', default: '' },";
2664
-
2665
-							echo "},";
2666
-
2667
-
2668
-
2669
-						?>
2574
+							    echo "attributes : {";
2575
+
2576
+							    if ( $show_advanced ) {
2577
+								    echo "show_advanced: {";
2578
+								    echo "	type: 'boolean',";
2579
+								    echo "  default: false,";
2580
+								    echo "},";
2581
+							    }
2582
+
2583
+							    // block wrap element
2584
+							    if ( ! empty( $this->options['block-wrap'] ) ) { //@todo we should validate this?
2585
+								    echo "block_wrap: {";
2586
+								    echo "	type: 'string',";
2587
+								    echo "  default: '" . esc_attr( $this->options['block-wrap'] ) . "',";
2588
+								    echo "},";
2589
+							    }
2590
+
2591
+
2592
+							    if ( ! empty( $this->arguments ) ) {
2593
+
2594
+								    foreach ( $this->arguments as $key => $args ) {
2595
+
2596
+									    if( $args['type'] == 'image' ||  $args['type'] == 'images' ){
2597
+										    $img_drag_drop = true;
2598
+									    }
2599
+
2600
+									    // set if we should show alignment
2601
+									    if ( $key == 'alignment' ) {
2602
+										    $show_alignment = true;
2603
+									    }
2604
+
2605
+									    $extra = '';
2606
+
2607
+									    if ( $args['type'] == 'notice' ||  $args['type'] == 'tab' ) {
2608
+										    continue;
2609
+									    }
2610
+									    elseif ( $args['type'] == 'checkbox' ) {
2611
+										    $type    = 'boolean';
2612
+										    $default = isset( $args['default'] ) && $args['default'] ? 'true' : 'false';
2613
+									    } elseif ( $args['type'] == 'number' ) {
2614
+										    $type    = 'number';
2615
+										    $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2616
+									    } elseif ( $args['type'] == 'select' && ! empty( $args['multiple'] ) ) {
2617
+										    $type = 'array';
2618
+										    if ( isset( $args['default'] ) && is_array( $args['default'] ) ) {
2619
+											    $default = ! empty( $args['default'] ) ? "['" . implode( "','", $args['default'] ) . "']" : "[]";
2620
+										    } else {
2621
+											    $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2622
+										    }
2623
+									    } elseif ( $args['type'] == 'tagselect' ) {
2624
+										    $type    = 'array';
2625
+										    $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2626
+									    } elseif ( $args['type'] == 'multiselect' ) {
2627
+										    $type    = 'array';
2628
+										    $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2629
+									    } elseif ( $args['type'] == 'image_xy' ) {
2630
+										    $type    = 'object';
2631
+										    $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2632
+									    } elseif ( $args['type'] == 'image' ) {
2633
+										    $type    = 'string';
2634
+										    $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2635
+
2636
+										    // add a field for ID
2637
+	    //                                    echo $key . "_id : {";
2638
+	    //                                    echo "type : 'number',";
2639
+	    //                                    echo "},";
2640
+	    //                                    echo $key . "_xy : {";
2641
+	    //                                    echo "type : 'object',";
2642
+	    //                                    echo "},";
2643
+
2644
+									    } else {
2645
+										    $type    = !empty($args['hidden_type']) ? esc_attr($args['hidden_type']) : 'string';
2646
+										    $default = isset( $args['default'] ) ? "'" . $args['default'] . "'" : "''";
2647
+
2648
+									    }
2649
+									    echo $key . " : {";
2650
+									    echo "type : '$type',";
2651
+									    echo "default : $default,";
2652
+									    echo "},";
2653
+								    }
2654
+							    }
2655
+
2656
+							    echo "content : {type : 'string',default: 'Please select the attributes in the block settings'},";
2657
+							    echo "sd_shortcode : {type : 'string',default: ''},";
2658
+
2659
+							    if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
2660
+								    echo "sd_shortcode_close : {type : 'string',default: ''},";
2661
+							    }
2662
+
2663
+							    echo "className: { type: 'string', default: '' },";
2664
+
2665
+							    echo "},";
2666
+
2667
+
2668
+
2669
+						    ?>
2670 2670
 
2671 2671
 						// The "edit" property must be a valid function.
2672 2672
 						edit: function (props) {
2673 2673
 
2674 2674
 
2675 2675
 <?php
2676
-// only include the drag/drop functions if required.
2677
-if( $img_drag_drop ){
2676
+    // only include the drag/drop functions if required.
2677
+    if( $img_drag_drop ){
2678 2678
 
2679
-?>
2679
+    ?>
2680 2680
 
2681 2681
 function enableDragSort(listClass) {
2682 2682
 	setTimeout(function(){
@@ -2740,10 +2740,10 @@  discard block
 block discarded – undo
2740 2740
 							}
2741 2741
 
2742 2742
 							<?php
2743
-							if(!empty($this->options['block-edit-raw'])) {
2744
-								echo $this->options['block-edit-raw']; // strings have to be in single quotes, may cause issues
2745
-							}else{
2746
-							?>
2743
+							    if(!empty($this->options['block-edit-raw'])) {
2744
+								    echo $this->options['block-edit-raw']; // strings have to be in single quotes, may cause issues
2745
+							    }else{
2746
+							    ?>
2747 2747
 
2748 2748
 function hasSelectedInnerBlock(props) {
2749 2749
 	const select = wp.data.select('core/editor');
@@ -2765,9 +2765,9 @@  discard block
 block discarded – undo
2765 2765
 
2766 2766
 	var $value = '';
2767 2767
 	<?php
2768
-	// if we have a post_type and a category then link them
2769
-	if( isset($this->arguments['post_type']) && isset($this->arguments['category']) && !empty($this->arguments['category']['post_type_linked']) ){
2770
-	?>
2768
+	    // if we have a post_type and a category then link them
2769
+	    if( isset($this->arguments['post_type']) && isset($this->arguments['category']) && !empty($this->arguments['category']['post_type_linked']) ){
2770
+	    ?>
2771 2771
 	if(typeof(prev_attributes[props.clientId]) != 'undefined'){
2772 2772
 		$pt = props.attributes.post_type;
2773 2773
 		if(post_type_rest_slugs.length){
@@ -2780,12 +2780,12 @@  discard block
 block discarded – undo
2780 2780
 			term_query_type = $pt;
2781 2781
 		}
2782 2782
 <?php
2783
-	$cat_path = '';
2784
-	if ( ! empty( $this->arguments['post_type']['onchange_rest']['path'] ) ) {
2785
-		$cat_path = esc_js( strip_tags( $this->arguments['post_type']['onchange_rest']['path'] ) );
2786
-		$cat_path = str_replace( array( '&quot;', '&#039;' ), array( '"', "'" ), $cat_path );
2787
-	}
2788
-?>
2783
+	    $cat_path = '';
2784
+	    if ( ! empty( $this->arguments['post_type']['onchange_rest']['path'] ) ) {
2785
+		    $cat_path = esc_js( strip_tags( $this->arguments['post_type']['onchange_rest']['path'] ) );
2786
+		    $cat_path = str_replace( array( '&quot;', '&#039;' ), array( '"', "'" ), $cat_path );
2787
+	    }
2788
+    ?>
2789 2789
 		/* taxonomies */
2790 2790
 		if($value && 'post_type' in prev_attributes[props.clientId] && 'category' in prev_attributes[props.clientId] && run){
2791 2791
 			if (!window.gdCPTCats) {
@@ -2873,12 +2873,12 @@  discard block
 block discarded – undo
2873 2873
 		}
2874 2874
 	}
2875 2875
 	<?php } ?>
2876
-<?php
2877
-$current_screen = function_exists('get_current_screen') ? get_current_screen() : '';
2878
-if(!empty($current_screen->base) && $current_screen->base==='widgets'){
2879
-	echo 'const { deviceType } = "";';
2876
+    <?php
2877
+    $current_screen = function_exists('get_current_screen') ? get_current_screen() : '';
2878
+    if(!empty($current_screen->base) && $current_screen->base==='widgets'){
2879
+	    echo 'const { deviceType } = "";';
2880 2880
 }else{
2881
-?>
2881
+    ?>
2882 2882
 /** Get device type const. */
2883 2883
 const { deviceType } = wp.data.useSelect != 'undefined' ?  wp.data.useSelect(select => {
2884 2884
 	const { __experimentalGetPreviewDeviceType } = select('core/edit-site') ? select('core/edit-site') : select('core/edit-post') ? select('core/edit-post') : ''; // For sie editor https://github.com/WordPress/gutenberg/issues/39248
@@ -2911,8 +2911,8 @@  discard block
 block discarded – undo
2911 2911
 										'attributes': props.attributes,
2912 2912
 										'block_parent_name': parentBlocks.length ? parentBlocks[parentBlocks.length - 1].name : '',
2913 2913
 										'post_id': <?php global $post; if ( isset( $post->ID ) ) {
2914
-										echo $post->ID;
2915
-									}else{echo '0';}?>,
2914
+										    echo $post->ID;
2915
+									    }else{echo '0';}?>,
2916 2916
 										'_ajax_nonce': '<?php echo wp_create_nonce( 'super_duper_output_shortcode' );?>'
2917 2917
 									};
2918 2918
 
@@ -2926,20 +2926,20 @@  discard block
 block discarded – undo
2926 2926
 										}
2927 2927
 
2928 2928
 										 <?php
2929
-										if(!empty($this->options['nested-block'])){
2930
-											?>
2929
+										    if(!empty($this->options['nested-block'])){
2930
+											    ?>
2931 2931
 											// props.setAttributes({content: env});
2932 2932
 										is_fetching = false;
2933 2933
 										prev_attributes[props.clientId] = props.attributes;
2934 2934
 											 <?php
2935
-										}else{
2936
-										?>
2935
+										    }else{
2936
+										    ?>
2937 2937
 										props.setAttributes({content: env});
2938 2938
 										is_fetching = false;
2939 2939
 										prev_attributes[props.clientId] = props.attributes;
2940 2940
 										<?php
2941
-										}
2942
-										?>
2941
+										    }
2942
+										    ?>
2943 2943
 
2944 2944
 
2945 2945
 										// if AUI is active call the js init function
@@ -2958,32 +2958,32 @@  discard block
 block discarded – undo
2958 2958
 							}
2959 2959
 
2960 2960
 							<?php
2961
-							if(!empty($this->options['block-edit-js'])) {
2962
-								echo  $this->options['block-edit-js'] ; // strings have to be in single quotes, may cause issues
2963
-							}
2961
+							    if(!empty($this->options['block-edit-js'])) {
2962
+								    echo  $this->options['block-edit-js'] ; // strings have to be in single quotes, may cause issues
2963
+							    }
2964 2964
 
2965 2965
 
2966 2966
 
2967 2967
 
2968
-							if(empty($this->options['block-save-return'])){
2969
-							?>
2968
+							    if(empty($this->options['block-save-return'])){
2969
+							    ?>
2970 2970
 								///////////////////////////////////////////////////////////////////////
2971 2971
 
2972 2972
 									 // build the shortcode.
2973 2973
 								shortcode = "[<?php echo $this->options['base_id'];?>";
2974 2974
 								<?php
2975 2975
 
2976
-								if(! empty( $this->arguments )){
2976
+								    if(! empty( $this->arguments )){
2977 2977
 
2978
-								foreach($this->arguments as $key => $args){
2979
-								   // if($args['type']=='tabs'){continue;}
2978
+								    foreach($this->arguments as $key => $args){
2979
+								       // if($args['type']=='tabs'){continue;}
2980 2980
 
2981
-								   // don't add metadata arguments
2982
-								   if (substr($key, 0, 9 ) === 'metadata_') {
2983
-									   continue;
2984
-								   }
2985
-								?>
2986
-								if (props.attributes.hasOwnProperty("<?php echo esc_attr( $key );?>")) {
2981
+								       // don't add metadata arguments
2982
+								       if (substr($key, 0, 9 ) === 'metadata_') {
2983
+									       continue;
2984
+								       }
2985
+								    ?>
2986
+    								if (props.attributes.hasOwnProperty("<?php echo esc_attr( $key );?>")) {
2987 2987
 									if ('<?php echo esc_attr( $key );?>' == 'html') {
2988 2988
 									} else if ('<?php echo esc_attr( $args['type'] );?>' == 'image_xy') {
2989 2989
 										shortcode += props.attributes.<?php echo esc_attr( $key );?>.length && ( props.attributes.<?php echo esc_attr( $key );?>.x.length || props.attributes.<?php echo esc_attr( $key );?>.y.length ) ? " <?php echo esc_attr( $key );?>='{x:" + props.attributes.<?php echo esc_attr( $key );?>.x + ",y:"+props.attributes.<?php echo esc_attr( $key );?>.y +"}' " : "";
@@ -2993,10 +2993,10 @@  discard block
 block discarded – undo
2993 2993
 									}
2994 2994
 								}
2995 2995
 								<?php
2996
-								}
2997
-								}
2996
+								    }
2997
+								    }
2998 2998
 
2999
-								?>
2999
+								    ?>
3000 3000
 								shortcode += "]";
3001 3001
 
3002 3002
 								if(shortcode){
@@ -3004,17 +3004,17 @@  discard block
 block discarded – undo
3004 3004
 									props.setAttributes({sd_shortcode: shortcode});
3005 3005
 
3006 3006
 									<?php
3007
-									if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
3008
-										echo "props.setAttributes({sd_shortcode_close: '[/".esc_attr( $this->options['base_id'] )."]'});";
3009
-									}
3010
-									?>
3007
+									    if(!empty($this->options['nested-block']) || !empty($this->arguments['html']) ){
3008
+										    echo "props.setAttributes({sd_shortcode_close: '[/".esc_attr( $this->options['base_id'] )."]'});";
3009
+									    }
3010
+									    ?>
3011 3011
 								}
3012 3012
 
3013 3013
 
3014 3014
 							///////////////////////////////////////////////////////////////////////
3015 3015
 							<?php
3016
-							} // end nested block check
3017
-							?>
3016
+							    } // end nested block check
3017
+							    ?>
3018 3018
 
3019 3019
 							return [
3020 3020
 
@@ -3038,10 +3038,10 @@  discard block
 block discarded – undo
3038 3038
 
3039 3039
 									<?php
3040 3040
 
3041
-									if(! empty( $this->arguments )){
3041
+									    if(! empty( $this->arguments )){
3042 3042
 
3043
-									if ( $show_advanced ) {
3044
-									?>
3043
+									    if ( $show_advanced ) {
3044
+									    ?>
3045 3045
 									el('div', {
3046 3046
 											style: {'padding-left': '16px','padding-right': '16px'}
3047 3047
 										},
@@ -3058,133 +3058,133 @@  discard block
 block discarded – undo
3058 3058
 									)
3059 3059
 									,
3060 3060
 									<?php
3061
-									}
3062
-
3063
-									$arguments = $this->group_arguments( $this->arguments );
3064
-									$block_group_tabs = ! empty( $this->options['block_group_tabs'] ) ? $this->group_block_tabs( $this->options['block_group_tabs'], $arguments ) : array();
3065
-
3066
-									// Do we have sections?
3067
-									$has_sections = $arguments == $this->arguments ? false : true;
3068
-
3069
-									if($has_sections){
3070
-									$panel_count = 0;
3071
-									$open_tab = '';
3072
-
3073
-									$open_tab_groups = array();
3074
-									$used_tabs = array();
3075
-
3076
-									foreach ( $arguments as $key => $args ) {
3077
-										$close_tab = false;
3078
-										$close_tabs = false;
3079
-
3080
-										 if ( ! empty( $block_group_tabs ) ) {
3081
-											foreach ( $block_group_tabs as $tab_name => $tab_args ) {
3082
-												if ( in_array( $key, $tab_args['groups'] ) ) {
3083
-													$open_tab_groups[] = $key;
3084
-
3085
-													if ( $open_tab != $tab_name ) {
3086
-														$tab_args['tab']['tabs_open'] = $open_tab == '' ? true : false;
3087
-														$tab_args['tab']['open'] = true;
3088
-
3089
-														$this->block_tab_start( '', $tab_args );
3090
-														$open_tab = $tab_name;
3091
-														$used_tabs[] = $tab_name;
3092
-													}
3093
-
3094
-													if ( $open_tab_groups == $tab_args['groups'] ) {
3095
-														$close_tab = true;
3096
-														$open_tab_groups = array();
3097
-
3098
-														if ( $used_tabs == array_keys( $block_group_tabs ) ) {
3099
-															$close_tabs = true;
3100
-														}
3101
-													}
3102
-												}
3103
-											}
3104
-										}
3105
-										?>
3061
+									    }
3062
+
3063
+									    $arguments = $this->group_arguments( $this->arguments );
3064
+									    $block_group_tabs = ! empty( $this->options['block_group_tabs'] ) ? $this->group_block_tabs( $this->options['block_group_tabs'], $arguments ) : array();
3065
+
3066
+									    // Do we have sections?
3067
+									    $has_sections = $arguments == $this->arguments ? false : true;
3068
+
3069
+									    if($has_sections){
3070
+									    $panel_count = 0;
3071
+									    $open_tab = '';
3072
+
3073
+									    $open_tab_groups = array();
3074
+									    $used_tabs = array();
3075
+
3076
+									    foreach ( $arguments as $key => $args ) {
3077
+										    $close_tab = false;
3078
+										    $close_tabs = false;
3079
+
3080
+										     if ( ! empty( $block_group_tabs ) ) {
3081
+											    foreach ( $block_group_tabs as $tab_name => $tab_args ) {
3082
+												    if ( in_array( $key, $tab_args['groups'] ) ) {
3083
+													    $open_tab_groups[] = $key;
3084
+
3085
+													    if ( $open_tab != $tab_name ) {
3086
+														    $tab_args['tab']['tabs_open'] = $open_tab == '' ? true : false;
3087
+														    $tab_args['tab']['open'] = true;
3088
+
3089
+														    $this->block_tab_start( '', $tab_args );
3090
+														    $open_tab = $tab_name;
3091
+														    $used_tabs[] = $tab_name;
3092
+													    }
3093
+
3094
+													    if ( $open_tab_groups == $tab_args['groups'] ) {
3095
+														    $close_tab = true;
3096
+														    $open_tab_groups = array();
3097
+
3098
+														    if ( $used_tabs == array_keys( $block_group_tabs ) ) {
3099
+															    $close_tabs = true;
3100
+														    }
3101
+													    }
3102
+												    }
3103
+											    }
3104
+										    }
3105
+										    ?>
3106 3106
 										el(wp.components.PanelBody, {
3107 3107
 												title: '<?php esc_attr_e( $key ); ?>',
3108 3108
 												initialOpen: <?php if ( $panel_count ) {
3109
-												echo "false";
3110
-											} else {
3111
-												echo "true";
3112
-											}?>
3113
-											},
3109
+												    echo "false";
3110
+											    } else {
3111
+												    echo "true";
3112
+											    }?>
3113
+    											},
3114 3114
 											<?php
3115
-											foreach ( $args as $k => $a ) {
3116
-												$this->block_tab_start( $k, $a );
3117
-												$this->block_row_start( $k, $a );
3118
-												$this->build_block_arguments( $k, $a );
3119
-												$this->block_row_end( $k, $a );
3120
-												$this->block_tab_end( $k, $a );
3121
-											}
3122
-											?>
3123
-										),
3115
+											    foreach ( $args as $k => $a ) {
3116
+												    $this->block_tab_start( $k, $a );
3117
+												    $this->block_row_start( $k, $a );
3118
+												    $this->build_block_arguments( $k, $a );
3119
+												    $this->block_row_end( $k, $a );
3120
+												    $this->block_tab_end( $k, $a );
3121
+											    }
3122
+											    ?>
3123
+    										),
3124 3124
 										<?php
3125
-										$panel_count ++;
3126
-
3127
-										if($close_tab || $close_tabs){
3128
-											$tab_args = array(
3129
-												'tab'	=> array(
3130
-													'tabs_close' => $close_tabs,
3131
-												'close' => true,
3132
-												)
3133
-
3134
-											);
3135
-											$this->block_tab_end( '', $tab_args );
3136
-//											echo '###close'; print_r($tab_args);
3137
-											$panel_count = 0;
3138
-										}
3139
-//
3140
-
3141
-									}
3142
-									}else {
3143
-									?>
3125
+										    $panel_count ++;
3126
+
3127
+										    if($close_tab || $close_tabs){
3128
+											    $tab_args = array(
3129
+												    'tab'	=> array(
3130
+													    'tabs_close' => $close_tabs,
3131
+												    'close' => true,
3132
+												    )
3133
+
3134
+											    );
3135
+											    $this->block_tab_end( '', $tab_args );
3136
+    //											echo '###close'; print_r($tab_args);
3137
+											    $panel_count = 0;
3138
+										    }
3139
+    //
3140
+
3141
+									    }
3142
+									    }else {
3143
+									    ?>
3144 3144
 									el(wp.components.PanelBody, {
3145 3145
 											title: '<?php esc_attr_e( "Settings", 'ayecode-connect' ); ?>',
3146 3146
 											initialOpen: true
3147 3147
 										},
3148 3148
 										<?php
3149
-										foreach ( $this->arguments as $key => $args ) {
3150
-											$this->block_row_start( $key, $args );
3151
-											$this->build_block_arguments( $key, $args );
3152
-											$this->block_row_end( $key, $args );
3153
-										}
3154
-										?>
3155
-									),
3149
+										    foreach ( $this->arguments as $key => $args ) {
3150
+											    $this->block_row_start( $key, $args );
3151
+											    $this->build_block_arguments( $key, $args );
3152
+											    $this->block_row_end( $key, $args );
3153
+										    }
3154
+										    ?>
3155
+    									),
3156 3156
 									<?php
3157
-									}
3157
+									    }
3158 3158
 
3159
-									}
3160
-									?>
3159
+									    }
3160
+									    ?>
3161 3161
 
3162 3162
 								),
3163 3163
 
3164 3164
 								<?php
3165
-								// If the user sets block-output array then build it
3166
-								if ( ! empty( $this->options['block-output'] ) ) {
3167
-								$this->block_element( $this->options['block-output'] );
3168
-							}elseif(!empty($this->options['block-edit-return'])){
3169
-								   echo $this->options['block-edit-return'];
3170
-							}else{
3171
-								// if no block-output is set then we try and get the shortcode html output via ajax.
3172
-								$block_edit_wrap_tag = !empty($this->options['block_edit_wrap_tag']) ? esc_attr($this->options['block_edit_wrap_tag']) : 'div';
3173
-								?>
3174
-								el('<?php echo esc_attr($block_edit_wrap_tag); ?>', wp.blockEditor.useBlockProps({
3165
+								    // If the user sets block-output array then build it
3166
+								    if ( ! empty( $this->options['block-output'] ) ) {
3167
+								    $this->block_element( $this->options['block-output'] );
3168
+							    }elseif(!empty($this->options['block-edit-return'])){
3169
+								       echo $this->options['block-edit-return'];
3170
+							    }else{
3171
+								    // if no block-output is set then we try and get the shortcode html output via ajax.
3172
+								    $block_edit_wrap_tag = !empty($this->options['block_edit_wrap_tag']) ? esc_attr($this->options['block_edit_wrap_tag']) : 'div';
3173
+								    ?>
3174
+    								el('<?php echo esc_attr($block_edit_wrap_tag); ?>', wp.blockEditor.useBlockProps({
3175 3175
 									dangerouslySetInnerHTML: {__html: onChangeContent()},
3176 3176
 									className: props.className,
3177 3177
 									<?php //if(isset($this->arguments['visibility_conditions'])){ echo 'dataVisibilityConditionSD: props.visibility_conditions ? true : false,';} //@todo we need to implement this in the other outputs also ?>
3178 3178
 									style: {'minHeight': '30px'}
3179 3179
 								}))
3180 3180
 								<?php
3181
-								}
3182
-								?>
3183
-							]; // end return
3181
+								    }
3182
+								    ?>
3183
+    							]; // end return
3184 3184
 
3185 3185
 							<?php
3186
-							} // end block-edit-raw else
3187
-							?>
3186
+							    } // end block-edit-raw else
3187
+							    ?>
3188 3188
 						},
3189 3189
 
3190 3190
 						// The "save" property must be specified and must be a valid function.
@@ -3198,17 +3198,17 @@  discard block
 block discarded – undo
3198 3198
 							$html = '';
3199 3199
 							<?php
3200 3200
 
3201
-							if(! empty( $this->arguments )){
3201
+							    if(! empty( $this->arguments )){
3202 3202
 
3203
-							foreach($this->arguments as $key => $args){
3204
-							   // if($args['type']=='tabs'){continue;}
3203
+							    foreach($this->arguments as $key => $args){
3204
+							       // if($args['type']=='tabs'){continue;}
3205 3205
 
3206
-							   // don't add metadata arguments
3207
-							   if (substr($key, 0, 9 ) === 'metadata_') {
3208
-								   continue;
3209
-							   }
3210
-							?>
3211
-							if (attr.hasOwnProperty("<?php echo esc_attr( $key );?>")) {
3206
+							       // don't add metadata arguments
3207
+							       if (substr($key, 0, 9 ) === 'metadata_') {
3208
+								       continue;
3209
+							       }
3210
+							    ?>
3211
+    							if (attr.hasOwnProperty("<?php echo esc_attr( $key );?>")) {
3212 3212
 								if ('<?php echo esc_attr( $key );?>' == 'html') {
3213 3213
 									$html = attr.<?php echo esc_attr( $key );?>;
3214 3214
 								} else if ('<?php echo esc_attr( $args['type'] );?>' == 'image_xy') {
@@ -3218,20 +3218,20 @@  discard block
 block discarded – undo
3218 3218
 								}
3219 3219
 							}
3220 3220
 							<?php
3221
-							}
3222
-							}
3221
+							    }
3222
+							    }
3223 3223
 
3224
-							?>
3224
+							    ?>
3225 3225
 							content += "]";
3226 3226
 							 content = '';
3227 3227
 
3228 3228
 							<?php
3229
-//                            if(!empty($this->options['nested-block'])){
3230
-//                                ?>
3229
+    //                            if(!empty($this->options['nested-block'])){
3230
+    //                                ?>
3231 3231
 //                                $html = 'el( InnerBlocks.Content )';
3232 3232
 //                                <?php
3233
-//                            }
3234
-							?>
3233
+    //                            }
3234
+							    ?>
3235 3235
 							// if has html element
3236 3236
 							if ($html) {
3237 3237
 								//content += $html + "[/<?php echo $this->options['base_id'];?>]";
@@ -3251,38 +3251,38 @@  discard block
 block discarded – undo
3251 3251
 							}
3252 3252
 
3253 3253
 							<?php
3254
-//							if(!empty($this->options['nested-block'])){
3255
-//                                ?x>
3256
-//                              return el(
3257
-//                                    'div',
3258
-//                                    { className: props.className,
3259
-//                                        style: {'minHeight': '300px','position':'relative','overflow':'hidden','backgroundImage': 'url(https://s.w.org/images/core/5.5/don-quixote-06.jpg)'}
3260
-//                                    },
3261
-//                                    el( InnerBlocks.Content ),
3262
-//                                    el('div', {dangerouslySetInnerHTML: {__html: content}, className: align})
3263
-//                                );
3264
-//                                <x?php
3265
-//							}else
3266
-
3267
-							if(!empty($this->options['block-output'])){
3268
-//                               echo "return";
3269
-//                               $this->block_element( $this->options['block-output'], true );
3270
-//                               echo ";";
3271
-
3272
-							   ?>
3254
+    //							if(!empty($this->options['nested-block'])){
3255
+    //                                ?x>
3256
+    //                              return el(
3257
+    //                                    'div',
3258
+    //                                    { className: props.className,
3259
+    //                                        style: {'minHeight': '300px','position':'relative','overflow':'hidden','backgroundImage': 'url(https://s.w.org/images/core/5.5/don-quixote-06.jpg)'}
3260
+    //                                    },
3261
+    //                                    el( InnerBlocks.Content ),
3262
+    //                                    el('div', {dangerouslySetInnerHTML: {__html: content}, className: align})
3263
+    //                                );
3264
+    //                                <x?php
3265
+    //							}else
3266
+
3267
+							    if(!empty($this->options['block-output'])){
3268
+    //                               echo "return";
3269
+    //                               $this->block_element( $this->options['block-output'], true );
3270
+    //                               echo ";";
3271
+
3272
+							       ?>
3273 3273
 							  return el(
3274 3274
 								   '',
3275 3275
 								   {},
3276 3276
 								  // el('', {dangerouslySetInnerHTML: {__html: content}}),
3277 3277
 								   <?php $this->block_element( $this->options['block-output'], true ); ?>
3278
-								  // el('', {dangerouslySetInnerHTML: {__html: "[/<?php echo $this->options['base_id'];?>]"}})
3278
+    								  // el('', {dangerouslySetInnerHTML: {__html: "[/<?php echo $this->options['base_id'];?>]"}})
3279 3279
 							   );
3280 3280
 								<?php
3281 3281
 
3282
-							}elseif(!empty($this->options['block-save-return'])){
3283
-								   echo 'return ' . $this->options['block-save-return'];
3284
-							}elseif(!empty($this->options['nested-block'])){
3285
-								?>
3282
+							    }elseif(!empty($this->options['block-save-return'])){
3283
+								       echo 'return ' . $this->options['block-save-return'];
3284
+							    }elseif(!empty($this->options['nested-block'])){
3285
+								    ?>
3286 3286
 							  return el(
3287 3287
 								   '',
3288 3288
 								   {},
@@ -3291,22 +3291,22 @@  discard block
 block discarded – undo
3291 3291
 								 //  el('', {dangerouslySetInnerHTML: {__html: "[/<?php echo $this->options['base_id'];?>]"}})
3292 3292
 							   );
3293 3293
 								<?php
3294
-							}elseif(!empty( $this->options['block-save-return'] ) ){
3295
-								echo "return ". $this->options['block-edit-return'].";";
3296
-							}elseif(isset( $this->options['block-wrap'] ) && $this->options['block-wrap'] == ''){
3297
-							?>
3298
-							return content;
3294
+							    }elseif(!empty( $this->options['block-save-return'] ) ){
3295
+								    echo "return ". $this->options['block-edit-return'].";";
3296
+							    }elseif(isset( $this->options['block-wrap'] ) && $this->options['block-wrap'] == ''){
3297
+							    ?>
3298
+    							return content;
3299 3299
 							<?php
3300
-							}else{
3301
-							?>
3300
+							    }else{
3301
+							    ?>
3302 3302
 							var block_wrap = 'div';
3303 3303
 							if (attr.hasOwnProperty("block_wrap")) {
3304 3304
 								block_wrap = attr.block_wrap;
3305 3305
 							}
3306 3306
 							return el(block_wrap, wp.blockEditor.useBlockProps.save( {dangerouslySetInnerHTML: {__html: content}, className: align} ));
3307 3307
 							<?php
3308
-							}
3309
-							?>
3308
+							    }
3309
+							    ?>
3310 3310
 
3311 3311
 
3312 3312
 						}
@@ -3320,43 +3320,43 @@  discard block
 block discarded – undo
3320 3320
 				});
3321 3321
 			</script>
3322 3322
 			<?php
3323
-			$output = ob_get_clean();
3323
+			    $output = ob_get_clean();
3324 3324
 
3325
-			/*
3325
+			    /*
3326 3326
 			 * We only add the <script> tags for code highlighting, so we strip them from the output.
3327 3327
 			 */
3328 3328
 
3329
-			return str_replace( array(
3330
-				'<script>',
3331
-				'</script>'
3332
-			), '', $output );
3333
-		}
3329
+			    return str_replace( array(
3330
+				    '<script>',
3331
+				    '</script>'
3332
+			    ), '', $output );
3333
+		    }
3334 3334
 
3335 3335
 
3336 3336
 
3337
-		public function block_row_start($key, $args){
3337
+		    public function block_row_start($key, $args){
3338 3338
 
3339
-			// check for row
3340
-			if(!empty($args['row'])){
3339
+			    // check for row
3340
+			    if(!empty($args['row'])){
3341 3341
 
3342
-				if(!empty($args['row']['open'])){
3342
+				    if(!empty($args['row']['open'])){
3343 3343
 
3344
-				// element require
3345
-				$element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3346
-				$device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3347
-				$device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3348
-				$device_type_icon = '';
3349
-				if($device_type=='Desktop'){
3350
-					$device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3351
-				}elseif($device_type=='Tablet'){
3352
-					$device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3353
-				}elseif($device_type=='Mobile'){
3354
-					$device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3355
-				}
3356
-				echo $element_require;
3357
-				echo $device_type_require;
3344
+				    // element require
3345
+				    $element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3346
+				    $device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3347
+				    $device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3348
+				    $device_type_icon = '';
3349
+				    if($device_type=='Desktop'){
3350
+					    $device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3351
+				    }elseif($device_type=='Tablet'){
3352
+					    $device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3353
+				    }elseif($device_type=='Mobile'){
3354
+					    $device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3355
+				    }
3356
+				    echo $element_require;
3357
+				    echo $device_type_require;
3358 3358
 
3359
-					if(false){?><script><?php }?>
3359
+					    if(false){?><script><?php }?>
3360 3360
 						el('div', {
3361 3361
 								className: 'bsui components-base-control',
3362 3362
 							},
@@ -3367,15 +3367,15 @@  discard block
 block discarded – undo
3367 3367
 								},
3368 3368
 								el('span',{dangerouslySetInnerHTML: {__html: '<?php echo addslashes( $args['row']['title'] ) ?>'}}),
3369 3369
 								<?php if($device_type_icon){ ?>
3370
-									deviceType == '<?php echo $device_type;?>' && el('span',{dangerouslySetInnerHTML: {__html: '<?php echo $device_type_icon; ?>'},title: deviceType + ": Set preview mode to change",style: {right:"0",position:"absolute",color:"var(--wp-admin-theme-color)"}})
3370
+    									deviceType == '<?php echo $device_type;?>' && el('span',{dangerouslySetInnerHTML: {__html: '<?php echo $device_type_icon; ?>'},title: deviceType + ": Set preview mode to change",style: {right:"0",position:"absolute",color:"var(--wp-admin-theme-color)"}})
3371 3371
 								<?php
3372
-								}
3373
-								?>
3372
+								    }
3373
+								    ?>
3374 3374
 
3375 3375
 
3376 3376
 							),
3377 3377
 							<?php }?>
3378
-							<?php if(!empty($args['row']['desc'])){ ?>
3378
+    							<?php if(!empty($args['row']['desc'])){ ?>
3379 3379
 							el('p', {
3380 3380
 									className: 'components-base-control__help mb-0',
3381 3381
 								},
@@ -3394,51 +3394,51 @@  discard block
 block discarded – undo
3394 3394
 									},
3395 3395
 
3396 3396
 					<?php
3397
-					if(false){?></script><?php }
3398
-				}elseif(!empty($args['row']['close'])){
3399
-					if(false){?><script><?php }?>
3397
+					    if(false){?></script><?php }
3398
+				    }elseif(!empty($args['row']['close'])){
3399
+					    if(false){?><script><?php }?>
3400 3400
 						el(
3401 3401
 							'div',
3402 3402
 							{
3403 3403
 								className: 'col pl-0 ps-0',
3404 3404
 							},
3405 3405
 					<?php
3406
-					if(false){?></script><?php }
3407
-				}else{
3408
-					if(false){?><script><?php }?>
3406
+					    if(false){?></script><?php }
3407
+				    }else{
3408
+					    if(false){?><script><?php }?>
3409 3409
 						el(
3410 3410
 							'div',
3411 3411
 							{
3412 3412
 								className: 'col pl-0 ps-0 pr-2 pe-2',
3413 3413
 							},
3414 3414
 					<?php
3415
-					if(false){?></script><?php }
3416
-				}
3415
+					    if(false){?></script><?php }
3416
+				    }
3417 3417
 
3418
-			}
3418
+			    }
3419 3419
 
3420
-		}
3420
+		    }
3421 3421
 
3422
-		public function block_row_end($key, $args){
3422
+		    public function block_row_end($key, $args){
3423 3423
 
3424
-			if(!empty($args['row'])){
3425
-				// maybe close
3426
-				if(!empty($args['row']['close'])){
3427
-					echo "))";
3428
-				}
3424
+			    if(!empty($args['row'])){
3425
+				    // maybe close
3426
+				    if(!empty($args['row']['close'])){
3427
+					    echo "))";
3428
+				    }
3429 3429
 
3430
-				echo "),";
3431
-			}
3432
-		}
3430
+				    echo "),";
3431
+			    }
3432
+		    }
3433 3433
 
3434
-		public function block_tab_start($key, $args){
3434
+		    public function block_tab_start($key, $args){
3435 3435
 
3436
-			// check for row
3437
-			if(!empty($args['tab'])){
3436
+			    // check for row
3437
+			    if(!empty($args['tab'])){
3438 3438
 
3439
-				if(!empty($args['tab']['tabs_open'])){
3439
+				    if(!empty($args['tab']['tabs_open'])){
3440 3440
 
3441
-					if(false){?><script><?php }?>
3441
+					    if(false){?><script><?php }?>
3442 3442
 
3443 3443
 el('div',{className: 'bsui'},
3444 3444
 
@@ -3451,12 +3451,12 @@  discard block
 block discarded – undo
3451 3451
 										tabs: [
3452 3452
 
3453 3453
 					<?php
3454
-					if(false){?></script><?php }
3455
-				}
3454
+					    if(false){?></script><?php }
3455
+				    }
3456 3456
 
3457
-				if(!empty($args['tab']['open'])){
3457
+				    if(!empty($args['tab']['open'])){
3458 3458
 
3459
-					if(false){?><script><?php }?>
3459
+					    if(false){?><script><?php }?>
3460 3460
 							{
3461 3461
 												name: '<?php echo addslashes( esc_attr( $args['tab']['key']) ); ?>',
3462 3462
 												title: el('div', {dangerouslySetInnerHTML: {__html: '<?php echo addslashes( esc_attr( $args['tab']['title']) ); ?>'}}),
@@ -3465,125 +3465,125 @@  discard block
 block discarded – undo
3465 3465
 									className: 'components-base-control__help mb-0',
3466 3466
 									dangerouslySetInnerHTML: {__html:'<?php echo addslashes( $args['tab']['desc'] ); ?>'}
3467 3467
 								}),<?php }
3468
-					if(false){?></script><?php }
3469
-				}
3468
+					    if(false){?></script><?php }
3469
+				    }
3470 3470
 
3471
-			}
3471
+			    }
3472 3472
 
3473
-		}
3473
+		    }
3474 3474
 
3475
-		public function block_tab_end($key, $args){
3475
+		    public function block_tab_end($key, $args){
3476 3476
 
3477
-			if(!empty($args['tab'])){
3478
-				// maybe close
3479
-				if(!empty($args['tab']['close'])){
3480
-					echo ")}, /* tab close */";
3481
-				}
3477
+			    if(!empty($args['tab'])){
3478
+				    // maybe close
3479
+				    if(!empty($args['tab']['close'])){
3480
+					    echo ")}, /* tab close */";
3481
+				    }
3482 3482
 
3483
-				if(!empty($args['tab']['tabs_close'])){
3484
-					if(false){?><script><?php }?>
3483
+				    if(!empty($args['tab']['tabs_close'])){
3484
+					    if(false){?><script><?php }?>
3485 3485
 						]}, ( tab ) => {
3486 3486
 								return tab.content;
3487 3487
 							}
3488 3488
 						)), /* tabs close */
3489 3489
 					<?php if(false){ ?></script><?php }
3490
-				}
3491
-			}
3492
-		}
3493
-
3494
-		public function build_block_arguments( $key, $args ) {
3495
-			$custom_attributes = ! empty( $args['custom_attributes'] ) ? $this->array_to_attributes( $args['custom_attributes'] ) : '';
3496
-			$options           = '';
3497
-			$extra             = '';
3498
-			$require           = '';
3499
-			$inside_elements   = '';
3500
-			$after_elements	   = '';
3501
-
3502
-			// `content` is a protected and special argument
3503
-			if ( $key == 'content' ) {
3504
-				return;
3505
-			}
3506
-
3507
-			$device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3508
-			$device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3509
-			$device_type_icon = '';
3510
-			if($device_type=='Desktop'){
3511
-				$device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3512
-			}elseif($device_type=='Tablet'){
3513
-				$device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3514
-			}elseif($device_type=='Mobile'){
3515
-				$device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3516
-			}
3517
-
3518
-			// icon
3519
-			$icon = '';
3520
-			if( !empty( $args['icon'] ) ){
3521
-				$icon .= "el('div', {";
3522
-									$icon .= "dangerouslySetInnerHTML: {__html: '".self::get_widget_icon( esc_attr($args['icon']))."'},";
3523
-									$icon .= "className: 'text-center',";
3524
-									$icon .= "title: '".addslashes( $args['title'] )."',";
3525
-								$icon .= "}),";
3526
-
3527
-				// blank title as its added to the icon.
3528
-				$args['title'] = '';
3529
-			}
3530
-
3531
-			// require advanced
3532
-			$require_advanced = ! empty( $args['advanced'] ) ? "props.attributes.show_advanced && " : "";
3533
-
3534
-			// element require
3535
-			$element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3536
-
3537
-
3538
-			$onchange  = "props.setAttributes({ $key: $key } )";
3539
-			$onchangecomplete  = "";
3540
-			$value     = "props.attributes.$key";
3541
-			$text_type = array( 'text', 'password', 'number', 'email', 'tel', 'url', 'colorx','range' );
3542
-			if ( in_array( $args['type'], $text_type ) ) {
3543
-				$type = 'TextControl';
3544
-				// Save numbers as numbers and not strings
3545
-				if ( $args['type'] == 'number' ) {
3546
-					$onchange = "props.setAttributes({ $key: $key ? Number($key) : '' } )";
3547
-				}
3548
-
3549
-				if (substr($key, 0, 9 ) === 'metadata_') {
3550
-					$real_key = str_replace('metadata_','', $key );
3551
-					$onchange = "props.setAttributes({ metadata: { $real_key: $key } } )";
3552
-					$value     = "props.attributes.metadata && props.attributes.metadata.$real_key ? props.attributes.metadata.$real_key : ''";
3553
-				}
3554
-			}
3555
-//			else if ( $args['type'] == 'popup' ) {
3556
-//				$type = 'TextControl';
3557
-//				$args['type'] == 'text';
3558
-//				$after_elements .= "el( wp.components.Button, {
3559
-//                          className: 'components-button components-circular-option-picker__clear is-primary is-smallx',
3560
-//                          onClick: function(){
3561
-//							  aui_modal('','<input id=\'zzz\' value= />');
3562
-//							  const source = document.getElementById('zzz');
3563
-//							  source.value = props.attributes.$key;
3564
-//							  source.addEventListener('input', function(e){props.setAttributes({ $key: e.target.value });});
3565
-//                          }
3566
-//                        },
3567
-//                        'test'
3568
-//                        ),";
3569
-//
3570
-//				$value     = "props.attributes.$key ? props.attributes.$key : ''";
3571
-//			}
3572
-			else if ( $args['type'] == 'styleid' ) {
3573
-				$type = 'TextControl';
3574
-				$args['type'] == 'text';
3575
-				// Save numbers as numbers and not strings
3576
-				$value     = "props.attributes.$key ? props.attributes.$key : ''";
3577
-			}else if ( $args['type'] == 'notice' ) {
3578
-
3579
-				$notice_message = !empty($args['desc']) ? addslashes($args['desc']) : '';
3580
-				$notice_status = !empty($args['status']) ? esc_attr($args['status']) : 'info';
3581
-
3582
-				$notice = "el('div',{className:'bsui'},el(wp.components.Notice, {status: '$notice_status',isDismissible: false,className: 'm-0 pr-0 pe-0 mb-3'},el('div',{dangerouslySetInnerHTML: {__html: '$notice_message'}}))),";
3583
-				echo $notice_message ? $element_require . $notice : '';
3584
-				return;
3585
-			}
3586
-			/*
3490
+				    }
3491
+			    }
3492
+		    }
3493
+
3494
+		    public function build_block_arguments( $key, $args ) {
3495
+			    $custom_attributes = ! empty( $args['custom_attributes'] ) ? $this->array_to_attributes( $args['custom_attributes'] ) : '';
3496
+			    $options           = '';
3497
+			    $extra             = '';
3498
+			    $require           = '';
3499
+			    $inside_elements   = '';
3500
+			    $after_elements	   = '';
3501
+
3502
+			    // `content` is a protected and special argument
3503
+			    if ( $key == 'content' ) {
3504
+				    return;
3505
+			    }
3506
+
3507
+			    $device_type = ! empty( $args['device_type'] ) ? esc_attr($args['device_type']) : '';
3508
+			    $device_type_require = ! empty( $args['device_type'] ) ? " deviceType == '" . esc_attr($device_type) . "' && " : '';
3509
+			    $device_type_icon = '';
3510
+			    if($device_type=='Desktop'){
3511
+				    $device_type_icon = '<span class="dashicons dashicons-desktop" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3512
+			    }elseif($device_type=='Tablet'){
3513
+				    $device_type_icon = '<span class="dashicons dashicons-tablet" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3514
+			    }elseif($device_type=='Mobile'){
3515
+				    $device_type_icon = '<span class="dashicons dashicons-smartphone" style="font-size: 18px;" onclick="sd_show_view_options(this);"></span>';
3516
+			    }
3517
+
3518
+			    // icon
3519
+			    $icon = '';
3520
+			    if( !empty( $args['icon'] ) ){
3521
+				    $icon .= "el('div', {";
3522
+									    $icon .= "dangerouslySetInnerHTML: {__html: '".self::get_widget_icon( esc_attr($args['icon']))."'},";
3523
+									    $icon .= "className: 'text-center',";
3524
+									    $icon .= "title: '".addslashes( $args['title'] )."',";
3525
+								    $icon .= "}),";
3526
+
3527
+				    // blank title as its added to the icon.
3528
+				    $args['title'] = '';
3529
+			    }
3530
+
3531
+			    // require advanced
3532
+			    $require_advanced = ! empty( $args['advanced'] ) ? "props.attributes.show_advanced && " : "";
3533
+
3534
+			    // element require
3535
+			    $element_require = ! empty( $args['element_require'] ) ? $this->block_props_replace( $args['element_require'], true ) . " && " : "";
3536
+
3537
+
3538
+			    $onchange  = "props.setAttributes({ $key: $key } )";
3539
+			    $onchangecomplete  = "";
3540
+			    $value     = "props.attributes.$key";
3541
+			    $text_type = array( 'text', 'password', 'number', 'email', 'tel', 'url', 'colorx','range' );
3542
+			    if ( in_array( $args['type'], $text_type ) ) {
3543
+				    $type = 'TextControl';
3544
+				    // Save numbers as numbers and not strings
3545
+				    if ( $args['type'] == 'number' ) {
3546
+					    $onchange = "props.setAttributes({ $key: $key ? Number($key) : '' } )";
3547
+				    }
3548
+
3549
+				    if (substr($key, 0, 9 ) === 'metadata_') {
3550
+					    $real_key = str_replace('metadata_','', $key );
3551
+					    $onchange = "props.setAttributes({ metadata: { $real_key: $key } } )";
3552
+					    $value     = "props.attributes.metadata && props.attributes.metadata.$real_key ? props.attributes.metadata.$real_key : ''";
3553
+				    }
3554
+			    }
3555
+    //			else if ( $args['type'] == 'popup' ) {
3556
+    //				$type = 'TextControl';
3557
+    //				$args['type'] == 'text';
3558
+    //				$after_elements .= "el( wp.components.Button, {
3559
+    //                          className: 'components-button components-circular-option-picker__clear is-primary is-smallx',
3560
+    //                          onClick: function(){
3561
+    //							  aui_modal('','<input id=\'zzz\' value= />');
3562
+    //							  const source = document.getElementById('zzz');
3563
+    //							  source.value = props.attributes.$key;
3564
+    //							  source.addEventListener('input', function(e){props.setAttributes({ $key: e.target.value });});
3565
+    //                          }
3566
+    //                        },
3567
+    //                        'test'
3568
+    //                        ),";
3569
+    //
3570
+    //				$value     = "props.attributes.$key ? props.attributes.$key : ''";
3571
+    //			}
3572
+			    else if ( $args['type'] == 'styleid' ) {
3573
+				    $type = 'TextControl';
3574
+				    $args['type'] == 'text';
3575
+				    // Save numbers as numbers and not strings
3576
+				    $value     = "props.attributes.$key ? props.attributes.$key : ''";
3577
+			    }else if ( $args['type'] == 'notice' ) {
3578
+
3579
+				    $notice_message = !empty($args['desc']) ? addslashes($args['desc']) : '';
3580
+				    $notice_status = !empty($args['status']) ? esc_attr($args['status']) : 'info';
3581
+
3582
+				    $notice = "el('div',{className:'bsui'},el(wp.components.Notice, {status: '$notice_status',isDismissible: false,className: 'm-0 pr-0 pe-0 mb-3'},el('div',{dangerouslySetInnerHTML: {__html: '$notice_message'}}))),";
3583
+				    echo $notice_message ? $element_require . $notice : '';
3584
+				    return;
3585
+			    }
3586
+			    /*
3587 3587
 			 * https://www.wptricks.com/question/set-current-tab-on-a-gutenberg-tabpanel-component-from-outside-that-component/ es5 layout
3588 3588
 						elseif($args['type']=='tabs'){
3589 3589
 							?>
@@ -3636,22 +3636,22 @@  discard block
 block discarded – undo
3636 3636
 							return;
3637 3637
 						}
3638 3638
 */
3639
-			elseif ( $args['type'] == 'color' ) {
3640
-				$type = 'ColorPicker';
3641
-				$onchange = "";
3642
-				$extra = "color: $value,";
3643
-				if(!empty($args['disable_alpha'])){
3644
-					$extra .= "disableAlpha: true,";
3645
-				}
3646
-				$onchangecomplete = "onChangeComplete: function($key) {
3639
+			    elseif ( $args['type'] == 'color' ) {
3640
+				    $type = 'ColorPicker';
3641
+				    $onchange = "";
3642
+				    $extra = "color: $value,";
3643
+				    if(!empty($args['disable_alpha'])){
3644
+					    $extra .= "disableAlpha: true,";
3645
+				    }
3646
+				    $onchangecomplete = "onChangeComplete: function($key) {
3647 3647
 				value =  $key.rgb.a && $key.rgb.a < 1 ? \"rgba(\"+$key.rgb.r+\",\"+$key.rgb.g+\",\"+$key.rgb.b+\",\"+$key.rgb.a+\")\" : $key.hex;
3648 3648
 						props.setAttributes({
3649 3649
 							$key: value
3650 3650
 						});
3651 3651
 					},";
3652
-			}elseif ( $args['type'] == 'gradient' ) {
3653
-				$type = 'GradientPicker';
3654
-				$extra .= "gradients: [{
3652
+			    }elseif ( $args['type'] == 'gradient' ) {
3653
+				    $type = 'GradientPicker';
3654
+				    $extra .= "gradients: [{
3655 3655
 			name: 'Vivid cyan blue to vivid purple',
3656 3656
 			gradient:
3657 3657
 				'linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)',
@@ -3688,10 +3688,10 @@  discard block
 block discarded – undo
3688 3688
 			slug: 'cool-to-warm-spectrum',
3689 3689
 		}],";
3690 3690
 
3691
-			}elseif ( $args['type'] == 'image' ) {
3692
-//                print_r($args);
3691
+			    }elseif ( $args['type'] == 'image' ) {
3692
+    //                print_r($args);
3693 3693
 
3694
-				$img_preview = isset($args['focalpoint']) && !$args['focalpoint'] ? " props.attributes.$key && el('img', { src: props.attributes.$key,style: {maxWidth:'100%',background: '#ccc'}})," : " ( props.attributes.$key ||  props.attributes.{$key}_use_featured ) && el(wp.components.FocalPointPicker,{
3694
+				    $img_preview = isset($args['focalpoint']) && !$args['focalpoint'] ? " props.attributes.$key && el('img', { src: props.attributes.$key,style: {maxWidth:'100%',background: '#ccc'}})," : " ( props.attributes.$key ||  props.attributes.{$key}_use_featured ) && el(wp.components.FocalPointPicker,{
3695 3695
 							url:  props.attributes.{$key}_use_featured === true ? 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxzdmcgYmFzZVByb2ZpbGU9InRpbnkiIGhlaWdodD0iNDAwIiB2ZXJzaW9uPSIxLjIiIHdpZHRoPSI0MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6ZXY9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLWV2ZW50cyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzIC8+PHJlY3QgZmlsbD0iI2QzZDNkMyIgaGVpZ2h0PSI0MDAiIHdpZHRoPSI0MDAiIHg9IjAiIHk9IjAiIC8+PGxpbmUgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxMCIgeDE9IjAiIHgyPSI0MDAiIHkxPSIwIiB5Mj0iNDAwIiAvPjxsaW5lIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMTAiIHgxPSIwIiB4Mj0iNDAwIiB5MT0iNDAwIiB5Mj0iMCIgLz48cmVjdCBmaWxsPSIjZDNkM2QzIiBoZWlnaHQ9IjUwIiB3aWR0aD0iMjE4LjAiIHg9IjkxLjAiIHk9IjE3NS4wIiAvPjx0ZXh0IGZpbGw9IndoaXRlIiBmb250LXNpemU9IjMwIiBmb250LXdlaWdodD0iYm9sZCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgeD0iMjAwLjAiIHk9IjIwNy41Ij5QTEFDRUhPTERFUjwvdGV4dD48L3N2Zz4='  : props.attributes.$key,
3696 3696
 							value: props.attributes.{$key}_xy.x !== undefined && props.attributes.{$key}_xy.x >= 0 ? props.attributes.{$key}_xy  : {x: 0.5,y: 0.5,},
3697 3697
 //                            value: props.attributes.{$key}_xy,
@@ -3712,16 +3712,16 @@  discard block
 block discarded – undo
3712 3712
 						}), ";
3713 3713
 
3714 3714
 
3715
-				$value = '""';
3716
-				$type = 'MediaUpload';
3717
-				$extra .= "onSelect: function(media){
3715
+				    $value = '""';
3716
+				    $type = 'MediaUpload';
3717
+				    $extra .= "onSelect: function(media){
3718 3718
 					  return props.setAttributes({
3719 3719
 						  $key: media.url,
3720 3720
 						  {$key}_id: media.id
3721 3721
 						});
3722 3722
 					  },";
3723
-				   $extra .= "type: 'image',";
3724
-				   $extra .= "render: function (obj) {
3723
+				       $extra .= "type: 'image',";
3724
+				       $extra .= "render: function (obj) {
3725 3725
 						return el( 'div',{},
3726 3726
 						( !props.attributes.$key && !props.attributes.{$key}_use_featured ) && el( wp.components.Button, {
3727 3727
 						  className: 'components-button components-circular-option-picker__clear is-primary is-smallx',
@@ -3747,11 +3747,11 @@  discard block
 block discarded – undo
3747 3747
 
3748 3748
 
3749 3749
 					  }";
3750
-				$onchange = "";
3750
+				    $onchange = "";
3751 3751
 
3752
-				//$inside_elements = ",el('div',{},'file upload')";
3753
-			} else if ( $args['type'] == 'images' ) {
3754
-				$img_preview = "props.attributes.$key && (function() {
3752
+				    //$inside_elements = ",el('div',{},'file upload')";
3753
+			    } else if ( $args['type'] == 'images' ) {
3754
+				    $img_preview = "props.attributes.$key && (function() {
3755 3755
 	let uploads = JSON.parse('['+props.attributes.$key+']');
3756 3756
 	let images = [];
3757 3757
 	uploads.map((upload, index) => (
@@ -3778,9 +3778,9 @@  discard block
 block discarded – undo
3778 3778
 })(),";
3779 3779
 
3780 3780
 
3781
-				$value = '""';
3782
-				$type = 'MediaUpload';
3783
-				$extra .= "onSelect: function(media){
3781
+				    $value = '""';
3782
+				    $type = 'MediaUpload';
3783
+				    $extra .= "onSelect: function(media){
3784 3784
 	let slim_images = props.attributes.$key ? JSON.parse('['+props.attributes.$key+']') : [];
3785 3785
 	if(media.length){
3786 3786
 		for (var i=0; i < media.length; i++) {
@@ -3793,9 +3793,9 @@  discard block
 block discarded – undo
3793 3793
 	}
3794 3794
 	return props.setAttributes({ $key: slimImagesV});
3795 3795
 },";
3796
-				$extra .= "type: 'image',";
3797
-				$extra .= "multiple: true,";
3798
-				$extra .= "render: function (obj) {
3796
+				    $extra .= "type: 'image',";
3797
+				    $extra .= "multiple: true,";
3798
+				    $extra .= "render: function (obj) {
3799 3799
 	/* Init the sort */
3800 3800
 	enableDragSort('sd-sortable');
3801 3801
 	return el( 'div',{},
@@ -3822,40 +3822,40 @@  discard block
 block discarded – undo
3822 3822
 		)
3823 3823
 	)
3824 3824
 }";
3825
-				$onchange = "";
3826
-
3827
-				//$inside_elements = ",el('div',{},'file upload')";
3828
-			}
3829
-			elseif ( $args['type'] == 'checkbox' ) {
3830
-				$type = 'CheckboxControl';
3831
-				$extra .= "checked: props.attributes.$key,";
3832
-				$onchange = "props.setAttributes({ $key: ! props.attributes.$key } )";
3833
-			} elseif ( $args['type'] == 'textarea' ) {
3834
-				$type = 'TextareaControl';
3835
-
3836
-			} elseif ( $args['type'] == 'select' || $args['type'] == 'multiselect' ) {
3837
-				$type = 'SelectControl';
3838
-
3839
-				if($args['name'] == 'category' && !empty($args['post_type_linked'])){
3840
-					$options .= "options: taxonomies_".str_replace("-","_", $this->id).",";
3841
-				}elseif($args['name'] == 'sort_by' && !empty($args['post_type_linked'])){
3842
-					$options .= "options: sort_by_".str_replace("-","_", $this->id).",";
3843
-				}else {
3844
-
3845
-					if ( ! empty( $args['options'] ) ) {
3846
-						$options .= "options: [";
3847
-						foreach ( $args['options'] as $option_val => $option_label ) {
3848
-							$options .= "{ value: '" . esc_attr( $option_val ) . "', label: '" . esc_js( addslashes( $option_label ) ) . "' },";
3849
-						}
3850
-						$options .= "],";
3851
-					}
3852
-				}
3853
-				if ( isset( $args['multiple'] ) && $args['multiple'] ) { //@todo multiselect does not work at the moment: https://github.com/WordPress/gutenberg/issues/5550
3854
-					$extra .= ' multiple:true,style:{height:"auto",paddingRight:"8px","overflow-y":"auto"}, ';
3855
-				}
3856
-
3857
-				if($args['type'] == 'multiselect' ||  ( isset( $args['multiple'] ) && $args['multiple'] ) ){
3858
-					$after_elements	 .= "props.attributes.$key && el( wp.components.Button, {
3825
+				    $onchange = "";
3826
+
3827
+				    //$inside_elements = ",el('div',{},'file upload')";
3828
+			    }
3829
+			    elseif ( $args['type'] == 'checkbox' ) {
3830
+				    $type = 'CheckboxControl';
3831
+				    $extra .= "checked: props.attributes.$key,";
3832
+				    $onchange = "props.setAttributes({ $key: ! props.attributes.$key } )";
3833
+			    } elseif ( $args['type'] == 'textarea' ) {
3834
+				    $type = 'TextareaControl';
3835
+
3836
+			    } elseif ( $args['type'] == 'select' || $args['type'] == 'multiselect' ) {
3837
+				    $type = 'SelectControl';
3838
+
3839
+				    if($args['name'] == 'category' && !empty($args['post_type_linked'])){
3840
+					    $options .= "options: taxonomies_".str_replace("-","_", $this->id).",";
3841
+				    }elseif($args['name'] == 'sort_by' && !empty($args['post_type_linked'])){
3842
+					    $options .= "options: sort_by_".str_replace("-","_", $this->id).",";
3843
+				    }else {
3844
+
3845
+					    if ( ! empty( $args['options'] ) ) {
3846
+						    $options .= "options: [";
3847
+						    foreach ( $args['options'] as $option_val => $option_label ) {
3848
+							    $options .= "{ value: '" . esc_attr( $option_val ) . "', label: '" . esc_js( addslashes( $option_label ) ) . "' },";
3849
+						    }
3850
+						    $options .= "],";
3851
+					    }
3852
+				    }
3853
+				    if ( isset( $args['multiple'] ) && $args['multiple'] ) { //@todo multiselect does not work at the moment: https://github.com/WordPress/gutenberg/issues/5550
3854
+					    $extra .= ' multiple:true,style:{height:"auto",paddingRight:"8px","overflow-y":"auto"}, ';
3855
+				    }
3856
+
3857
+				    if($args['type'] == 'multiselect' ||  ( isset( $args['multiple'] ) && $args['multiple'] ) ){
3858
+					    $after_elements	 .= "props.attributes.$key && el( wp.components.Button, {
3859 3859
 									  className: 'components-button components-circular-option-picker__clear is-secondary is-small',
3860 3860
 									  style: {margin:'-8px 0 8px 0',display: 'block'},
3861 3861
 									  onClick: function(){
@@ -3866,56 +3866,56 @@  discard block
 block discarded – undo
3866 3866
 									},
3867 3867
 									'Clear'
3868 3868
 							),";
3869
-				}
3870
-			} elseif ( $args['type'] == 'tagselect' ) {
3871
-//				$type = 'FormTokenField';
3872
-//
3873
-//				if ( ! empty( $args['options'] ) ) {
3874
-//						$options .= "suggestions: [";
3875
-//						foreach ( $args['options'] as $option_val => $option_label ) {
3876
-//							$options .= "{ value: '" . esc_attr( $option_val ) . "', title: '" . addslashes( $option_label ) . "' },";
3877
-////							$options .= "'" . esc_attr( $option_val ) . "':'" . addslashes( $option_label ) . "',";
3878
-//						}
3879
-//						$options .= "],";
3880
-//				}
3881
-//
3882
-//				$onchangex  = "{ ( selectedItems ) => {
3883
-//						// Build array of selected posts.
3884
-//						let selectedPostsArray = [];
3885
-//						selectedPosts.map(
3886
-//							( postName ) => {
3887
-//								const matchingPost = posts.find( ( post ) => {
3888
-//									return post.title.raw === postName;
3889
-//
3890
-//								} );
3891
-//								if ( matchingPost !== undefined ) {
3892
-//									selectedPostsArray.push( matchingPost.id );
3893
-//								}
3894
-//							}
3895
-//						)
3896
-//
3897
-//						setAttributes( { selectedPosts: selectedPostsArray } );
3898
-//					} } ";
3899
-//				$onchange  = '';// "props.setAttributes({ $key: [ props.attributes.$key ] } )";
3900
-//
3901
-////				$options  = "";
3902
-//				$value     = "[]";
3903
-//				$extra .= ' __experimentalExpandOnFocus: true,';
3904
-
3905
-			} else if ( $args['type'] == 'alignment' ) {
3906
-				$type = 'AlignmentToolbar'; // @todo this does not seem to work but cant find a example
3907
-			} else if ( $args['type'] == 'margins' ) {
3908
-
3909
-			} else if ( $args['type'] == 'visibility_conditions' && ( function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() ) ) {
3910
-				$type = 'TextControl';
3911
-				$value = "(props.attributes.$key ? props.attributes.$key : '')";
3912
-				$args['type'] = 'text';
3913
-				$options .= 'disabled:true,';
3914
-				$bsvc_title = esc_attr( addslashes( $args['title'] ) );
3915
-				$bsvc_body = $this->block_visibility_fields( $args );
3916
-				// @TODO reset button
3917
-				$bsvc_footer = '<button type="button" class="btn btn-danger d-none">' . __( 'Reset', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-secondary bs-vc-close text-white" data-bs-dismiss="modal">' . __( 'Close', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-primary bs-vc-save">' . __( 'Save Rules', 'ayecode-connect' ) . '</button>';
3918
-				$after_elements .= "el('div', {className: 'components-base-control bs-vc-button-wrap'}, el(wp.components.Button, {
3869
+				    }
3870
+			    } elseif ( $args['type'] == 'tagselect' ) {
3871
+    //				$type = 'FormTokenField';
3872
+    //
3873
+    //				if ( ! empty( $args['options'] ) ) {
3874
+    //						$options .= "suggestions: [";
3875
+    //						foreach ( $args['options'] as $option_val => $option_label ) {
3876
+    //							$options .= "{ value: '" . esc_attr( $option_val ) . "', title: '" . addslashes( $option_label ) . "' },";
3877
+    ////							$options .= "'" . esc_attr( $option_val ) . "':'" . addslashes( $option_label ) . "',";
3878
+    //						}
3879
+    //						$options .= "],";
3880
+    //				}
3881
+    //
3882
+    //				$onchangex  = "{ ( selectedItems ) => {
3883
+    //						// Build array of selected posts.
3884
+    //						let selectedPostsArray = [];
3885
+    //						selectedPosts.map(
3886
+    //							( postName ) => {
3887
+    //								const matchingPost = posts.find( ( post ) => {
3888
+    //									return post.title.raw === postName;
3889
+    //
3890
+    //								} );
3891
+    //								if ( matchingPost !== undefined ) {
3892
+    //									selectedPostsArray.push( matchingPost.id );
3893
+    //								}
3894
+    //							}
3895
+    //						)
3896
+    //
3897
+    //						setAttributes( { selectedPosts: selectedPostsArray } );
3898
+    //					} } ";
3899
+    //				$onchange  = '';// "props.setAttributes({ $key: [ props.attributes.$key ] } )";
3900
+    //
3901
+    ////				$options  = "";
3902
+    //				$value     = "[]";
3903
+    //				$extra .= ' __experimentalExpandOnFocus: true,';
3904
+
3905
+			    } else if ( $args['type'] == 'alignment' ) {
3906
+				    $type = 'AlignmentToolbar'; // @todo this does not seem to work but cant find a example
3907
+			    } else if ( $args['type'] == 'margins' ) {
3908
+
3909
+			    } else if ( $args['type'] == 'visibility_conditions' && ( function_exists( 'wp_is_block_theme' ) && wp_is_block_theme() ) ) {
3910
+				    $type = 'TextControl';
3911
+				    $value = "(props.attributes.$key ? props.attributes.$key : '')";
3912
+				    $args['type'] = 'text';
3913
+				    $options .= 'disabled:true,';
3914
+				    $bsvc_title = esc_attr( addslashes( $args['title'] ) );
3915
+				    $bsvc_body = $this->block_visibility_fields( $args );
3916
+				    // @TODO reset button
3917
+				    $bsvc_footer = '<button type="button" class="btn btn-danger d-none">' . __( 'Reset', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-secondary bs-vc-close text-white" data-bs-dismiss="modal">' . __( 'Close', 'ayecode-connect' ) . '</button><button type="button" class="btn btn-primary bs-vc-save">' . __( 'Save Rules', 'ayecode-connect' ) . '</button>';
3918
+				    $after_elements .= "el('div', {className: 'components-base-control bs-vc-button-wrap'}, el(wp.components.Button, {
3919 3919
 						className: 'components-button components-circular-option-picker__clear is-primary is-smallx',
3920 3920
 						onClick: function() {
3921 3921
 							var sValue = props.attributes." . $key . ";
@@ -3941,54 +3941,54 @@  discard block
 block discarded – undo
3941 3941
 					},
3942 3942
 					'" . addslashes( ! empty( $args['button_title'] ) ? $args['button_title'] : $args['title'] ) . "'
3943 3943
 				) ),";
3944
-			} else {
3945
-				return;// if we have not implemented the control then don't break the JS.
3946
-			}
3947
-
3948
-			// color input does not show the labels so we add them
3949
-			if($args['type']=='color'){
3950
-				// add show only if advanced
3951
-				echo $require_advanced;
3952
-				// add setting require if defined
3953
-				echo $element_require;
3954
-				echo "el('div', {style: {'marginBottom': '8px'}}, '".addslashes( $args['title'] )."'),";
3955
-			}
3956
-
3957
-			// add show only if advanced
3958
-			echo $require_advanced;
3959
-			// add setting require if defined
3960
-			echo $element_require;
3961
-			echo $device_type_require;
3962
-
3963
-			// icon
3964
-			echo $icon;
3965
-			?>
3966
-			el( <?php echo $args['type'] == 'image' || $args['type'] == 'images' ? $type  : "wp.components.".$type; ?>, {
3944
+			    } else {
3945
+				    return;// if we have not implemented the control then don't break the JS.
3946
+			    }
3947
+
3948
+			    // color input does not show the labels so we add them
3949
+			    if($args['type']=='color'){
3950
+				    // add show only if advanced
3951
+				    echo $require_advanced;
3952
+				    // add setting require if defined
3953
+				    echo $element_require;
3954
+				    echo "el('div', {style: {'marginBottom': '8px'}}, '".addslashes( $args['title'] )."'),";
3955
+			    }
3956
+
3957
+			    // add show only if advanced
3958
+			    echo $require_advanced;
3959
+			    // add setting require if defined
3960
+			    echo $element_require;
3961
+			    echo $device_type_require;
3962
+
3963
+			    // icon
3964
+			    echo $icon;
3965
+			    ?>
3966
+    			el( <?php echo $args['type'] == 'image' || $args['type'] == 'images' ? $type  : "wp.components.".$type; ?>, {
3967 3967
 			label: <?php if ( empty( $args['title'] ) ) { echo "''"; } else if ( empty( $args['row'] ) && ! empty( $args['device_type'] ) ) { ?>el('label',{className:'components-base-control__label',style:{width:"100%"}},el('span',{dangerouslySetInnerHTML: {__html: '<?php echo addslashes( $args['title'] ) ?>'}}),<?php if ( $device_type_icon ) { ?>deviceType == '<?php echo $device_type;?>' && el('span',{dangerouslySetInnerHTML: {__html: '<?php echo $device_type_icon; ?>'},title: deviceType + ": Set preview mode to change",style: {right:"0",position:"absolute",color:"var(--wp-admin-theme-color)"}})<?php } ?>)<?php
3968
-			} else { ?>'<?php echo addslashes( trim( esc_html( $args['title'] ) ) ); ?>'<?php } ?>,
3968
+			    } else { ?>'<?php echo addslashes( trim( esc_html( $args['title'] ) ) ); ?>'<?php } ?>,
3969 3969
 			help: <?php echo ( isset( $args['desc'] ) ? "el('span', {dangerouslySetInnerHTML: {__html: '" . trim( wp_kses_post( addslashes( $args['desc'] ) ) ) . "'}})" : "''" ); ?>,
3970 3970
 			value: <?php echo $value; ?>,
3971 3971
 			<?php if ( $type == 'TextControl' && $args['type'] != 'text' ) {
3972
-				echo "type: '" . addslashes( $args['type'] ) . "',";
3973
-			} ?>
3974
-			<?php if ( ! empty( $args['placeholder'] ) ) {
3975
-				echo "placeholder: '" . esc_js( addslashes( trim( esc_html( $args['placeholder'] ) ) ) ) . "',";
3976
-			} ?>
3977
-			<?php echo $options; ?>
3978
-			<?php echo $extra; ?>
3979
-			<?php echo $custom_attributes; ?>
3980
-			<?php echo $onchangecomplete; ?>
3981
-			<?php if ( $onchange ) { ?>
3982
-			onChange: function ( <?php echo $key; ?> ) {
3972
+				    echo "type: '" . addslashes( $args['type'] ) . "',";
3973
+			    } ?>
3974
+    			<?php if ( ! empty( $args['placeholder'] ) ) {
3975
+				    echo "placeholder: '" . esc_js( addslashes( trim( esc_html( $args['placeholder'] ) ) ) ) . "',";
3976
+			    } ?>
3977
+    			<?php echo $options; ?>
3978
+    			<?php echo $extra; ?>
3979
+    			<?php echo $custom_attributes; ?>
3980
+    			<?php echo $onchangecomplete; ?>
3981
+    			<?php if ( $onchange ) { ?>
3982
+    			onChange: function ( <?php echo $key; ?> ) {
3983 3983
 				<?php echo $onchange; ?>
3984
-			}
3984
+    			}
3985 3985
 			<?php } ?>
3986
-		} <?php echo $inside_elements; ?> ),
3986
+    		} <?php echo $inside_elements; ?> ),
3987 3987
 			<?php
3988
-			echo $after_elements;
3989
-		}
3988
+			    echo $after_elements;
3989
+		    }
3990 3990
 
3991
-		/**
3991
+		    /**
3992 3992
 		 * Convert an array of attributes to block string.
3993 3993
 		 *
3994 3994
 		 * @param $custom_attributes
@@ -3997,448 +3997,448 @@  discard block
 block discarded – undo
3997 3997
 		 *@todo there is prob a faster way to do this, also we could add some validation here.
3998 3998
 		 *
3999 3999
 		 */
4000
-		public function array_to_attributes( $custom_attributes, $html = false ) {
4001
-			$attributes = '';
4002
-			if ( ! empty( $custom_attributes ) ) {
4000
+		    public function array_to_attributes( $custom_attributes, $html = false ) {
4001
+			    $attributes = '';
4002
+			    if ( ! empty( $custom_attributes ) ) {
4003 4003
 
4004
-				foreach ( $custom_attributes as $key => $val ) {
4005
-					if(is_array($val)){
4006
-						$attributes .= $key.': {'.$this->array_to_attributes( $val, $html ).'},';
4007
-					}else{
4008
-						$attributes .= $html ?  " $key='$val' " : "'$key': '$val',";
4009
-					}
4010
-				}
4004
+				    foreach ( $custom_attributes as $key => $val ) {
4005
+					    if(is_array($val)){
4006
+						    $attributes .= $key.': {'.$this->array_to_attributes( $val, $html ).'},';
4007
+					    }else{
4008
+						    $attributes .= $html ?  " $key='$val' " : "'$key': '$val',";
4009
+					    }
4010
+				    }
4011 4011
 
4012
-			}
4012
+			    }
4013 4013
 
4014
-			return $attributes;
4015
-		}
4014
+			    return $attributes;
4015
+		    }
4016 4016
 
4017 4017
 
4018 4018
 
4019
-		/**
4019
+		    /**
4020 4020
 		 * A self looping function to create the output for JS block elements.
4021 4021
 		 *
4022 4022
 		 * This is what is output in the WP Editor visual view.
4023 4023
 		 *
4024 4024
 		 * @param $args
4025 4025
 		 */
4026
-		public function block_element( $args, $save = false ) {
4027
-
4028
-//            print_r($args);echo '###';exit;
4029
-
4030
-			if ( ! empty( $args ) ) {
4031
-				foreach ( $args as $element => $new_args ) {
4026
+		    public function block_element( $args, $save = false ) {
4027
+
4028
+    //            print_r($args);echo '###';exit;
4029
+
4030
+			    if ( ! empty( $args ) ) {
4031
+				    foreach ( $args as $element => $new_args ) {
4032
+
4033
+					    if ( is_array( $new_args ) ) { // its an element
4034
+
4032 4035
 
4033
-					if ( is_array( $new_args ) ) { // its an element
4034
-
4035
-
4036
-						if ( isset( $new_args['element'] ) ) {
4037
-
4038
-							if ( isset( $new_args['element_require'] ) ) {
4039
-								echo str_replace( array(
4040
-										"'+",
4041
-										"+'"
4042
-									), '', $this->block_props_replace( $new_args['element_require'] ) ) . " &&  ";
4043
-								unset( $new_args['element_require'] );
4044
-							}
4045
-
4046
-							if($new_args['element']=='InnerBlocks'){
4047
-								echo "\n el( InnerBlocks, {";
4048
-							}elseif($new_args['element']=='innerBlocksProps'){
4049
-								$element = isset($new_args['inner_element']) ? esc_attr($new_args['inner_element']) : 'div';
4050
-							  //  echo "\n el( 'section', wp.blockEditor.useInnerBlocksProps( blockProps, {";
4051
-//                                echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( ";
4052
-								echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( ";
4053
-								echo $save ? "wp.blockEditor.useBlockProps.save( {" : "wp.blockEditor.useBlockProps( {";
4054
-								echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4055
-
4056
-								echo "} ), {";
4057
-								echo !empty($new_args['innerBlocksProps']) && !$save ? $this->block_element( $new_args['innerBlocksProps'],$save ) : '';
4058
-							//    echo '###';
4059
-
4060
-							  //  echo '###';
4061
-							}elseif($new_args['element']=='BlocksProps'){
4062
-
4063
-								if ( isset($new_args['if_inner_element']) ) {
4064
-									$element = $new_args['if_inner_element'];
4065
-								}else {
4066
-									$element = isset($new_args['inner_element']) ? "'".esc_attr($new_args['inner_element'])."'" : "'div'";
4067
-								}
4068
-
4069
-								unset($new_args['inner_element']);
4070
-								echo $save ? "\n el( $element, wp.blockEditor.useBlockProps.save( {" : "\n el( $element, wp.blockEditor.useBlockProps( {";
4071
-								echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4072
-
4073
-
4074
-							   // echo "} ),";
4075
-
4076
-							}else{
4077
-								echo "\n el( '" . $new_args['element'] . "', {";
4078
-							}
4036
+						    if ( isset( $new_args['element'] ) ) {
4079 4037
 
4080
-
4081
-							// get the attributes
4082
-							foreach ( $new_args as $new_key => $new_value ) {
4083
-
4084
-
4085
-								if ( $new_key == 'element' || $new_key == 'content'|| $new_key == 'if_content' || $new_key == 'element_require' || $new_key == 'element_repeat' || is_array( $new_value ) ) {
4086
-									// do nothing
4087
-								} else {
4088
-									echo $this->block_element( array( $new_key => $new_value ),$save );
4089
-								}
4090
-							}
4091
-
4092
-							echo $new_args['element']=='BlocksProps' ? '} ),' : "},";// end attributes
4093
-
4094
-							// get the content
4095
-							$first_item = 0;
4096
-							foreach ( $new_args as $new_key => $new_value ) {
4097
-								if ( $new_key === 'content' || $new_key === 'if_content' || is_array( $new_value ) ) {
4098
-
4099
-									if ( $new_key === 'content' ) {
4100
-										echo "'" . $this->block_props_replace( wp_slash( $new_value ) ) . "'";
4101
-									}else if ( $new_key === 'if_content' ) {
4102
-										echo  $this->block_props_replace(  $new_value  );
4103
-									}
4104
-
4105
-									if ( is_array( $new_value ) ) {
4106
-
4107
-										if ( isset( $new_value['element_require'] ) ) {
4108
-											echo str_replace( array(
4109
-													"'+",
4110
-													"+'"
4111
-												), '', $this->block_props_replace( $new_value['element_require'] ) ) . " &&  ";
4112
-											unset( $new_value['element_require'] );
4113
-										}
4114
-
4115
-										if ( isset( $new_value['element_repeat'] ) ) {
4116
-											$x = 1;
4117
-											while ( $x <= absint( $new_value['element_repeat'] ) ) {
4118
-												$this->block_element( array( '' => $new_value ),$save );
4119
-												$x ++;
4120
-											}
4121
-										} else {
4122
-											$this->block_element( array( '' => $new_value ),$save );
4123
-										}
4124
-									}
4125
-									$first_item ++;
4126
-								}
4127
-							}
4128
-
4129
-							if($new_args['element']=='innerBlocksProps' || $new_args['element']=='xBlocksProps'){
4130
-								echo "))";// end content
4131
-							}else{
4132
-								echo ")";// end content
4133
-							}
4134
-
4135
-
4136
-							echo ", \n";
4137
-
4138
-						}
4139
-					} else {
4140
-
4141
-						if ( substr( $element, 0, 3 ) === "if_" ) {
4142
-							$extra = '';
4143
-							if( strpos($new_args, '[%WrapClass%]') !== false ){
4144
-								$new_args = str_replace('[%WrapClass%]"','" + sd_build_aui_class(props.attributes)',$new_args);
4145
-								$new_args = str_replace('[%WrapClass%]','+ sd_build_aui_class(props.attributes)',$new_args);
4146
-							}
4147
-							echo str_replace( "if_", "", $element ) . ": " . $this->block_props_replace( $new_args, true ) . ",";
4148
-						} elseif ( $element == 'style' &&  strpos($new_args, '[%WrapStyle%]') !== false ) {
4149
-							$new_args = str_replace('[%WrapStyle%]','',$new_args);
4150
-							echo $element . ": {..." . $this->block_props_replace( $new_args ) . " , ...sd_build_aui_styles(props.attributes) },";
4151
-//                            echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4152
-						} elseif ( $element == 'style' ) {
4153
-							echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4154
-						} elseif ( ( $element == 'class' || $element == 'className'  ) &&  strpos($new_args, '[%WrapClass%]') !== false ) {
4155
-							$new_args = str_replace('[%WrapClass%]','',$new_args);
4156
-							echo $element . ": '" . $this->block_props_replace( $new_args ) . "' + sd_build_aui_class(props.attributes),";
4157
-						} elseif ( $element == 'template' && $new_args ) {
4158
-							echo $element . ": $new_args,";
4159
-						} else {
4160
-							echo $element . ": '" . $this->block_props_replace( $new_args ) . "',";
4161
-						}
4162
-
4163
-					}
4164
-				}
4165
-			}
4166
-		}
4167
-
4168
-		/**
4038
+							    if ( isset( $new_args['element_require'] ) ) {
4039
+								    echo str_replace( array(
4040
+										    "'+",
4041
+										    "+'"
4042
+									    ), '', $this->block_props_replace( $new_args['element_require'] ) ) . " &&  ";
4043
+								    unset( $new_args['element_require'] );
4044
+							    }
4045
+
4046
+							    if($new_args['element']=='InnerBlocks'){
4047
+								    echo "\n el( InnerBlocks, {";
4048
+							    }elseif($new_args['element']=='innerBlocksProps'){
4049
+								    $element = isset($new_args['inner_element']) ? esc_attr($new_args['inner_element']) : 'div';
4050
+							      //  echo "\n el( 'section', wp.blockEditor.useInnerBlocksProps( blockProps, {";
4051
+    //                                echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( ";
4052
+								    echo $save ? "\n el( '$element', wp.blockEditor.useInnerBlocksProps.save( " : "\n el( '$element', wp.blockEditor.useInnerBlocksProps( ";
4053
+								    echo $save ? "wp.blockEditor.useBlockProps.save( {" : "wp.blockEditor.useBlockProps( {";
4054
+								    echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4055
+
4056
+								    echo "} ), {";
4057
+								    echo !empty($new_args['innerBlocksProps']) && !$save ? $this->block_element( $new_args['innerBlocksProps'],$save ) : '';
4058
+							    //    echo '###';
4059
+
4060
+							      //  echo '###';
4061
+							    }elseif($new_args['element']=='BlocksProps'){
4062
+
4063
+								    if ( isset($new_args['if_inner_element']) ) {
4064
+									    $element = $new_args['if_inner_element'];
4065
+								    }else {
4066
+									    $element = isset($new_args['inner_element']) ? "'".esc_attr($new_args['inner_element'])."'" : "'div'";
4067
+								    }
4068
+
4069
+								    unset($new_args['inner_element']);
4070
+								    echo $save ? "\n el( $element, wp.blockEditor.useBlockProps.save( {" : "\n el( $element, wp.blockEditor.useBlockProps( {";
4071
+								    echo !empty($new_args['blockProps']) ? $this->block_element( $new_args['blockProps'],$save ) : '';
4072
+
4073
+
4074
+							       // echo "} ),";
4075
+
4076
+							    }else{
4077
+								    echo "\n el( '" . $new_args['element'] . "', {";
4078
+							    }
4079
+
4080
+
4081
+							    // get the attributes
4082
+							    foreach ( $new_args as $new_key => $new_value ) {
4083
+
4084
+
4085
+								    if ( $new_key == 'element' || $new_key == 'content'|| $new_key == 'if_content' || $new_key == 'element_require' || $new_key == 'element_repeat' || is_array( $new_value ) ) {
4086
+									    // do nothing
4087
+								    } else {
4088
+									    echo $this->block_element( array( $new_key => $new_value ),$save );
4089
+								    }
4090
+							    }
4091
+
4092
+							    echo $new_args['element']=='BlocksProps' ? '} ),' : "},";// end attributes
4093
+
4094
+							    // get the content
4095
+							    $first_item = 0;
4096
+							    foreach ( $new_args as $new_key => $new_value ) {
4097
+								    if ( $new_key === 'content' || $new_key === 'if_content' || is_array( $new_value ) ) {
4098
+
4099
+									    if ( $new_key === 'content' ) {
4100
+										    echo "'" . $this->block_props_replace( wp_slash( $new_value ) ) . "'";
4101
+									    }else if ( $new_key === 'if_content' ) {
4102
+										    echo  $this->block_props_replace(  $new_value  );
4103
+									    }
4104
+
4105
+									    if ( is_array( $new_value ) ) {
4106
+
4107
+										    if ( isset( $new_value['element_require'] ) ) {
4108
+											    echo str_replace( array(
4109
+													    "'+",
4110
+													    "+'"
4111
+												    ), '', $this->block_props_replace( $new_value['element_require'] ) ) . " &&  ";
4112
+											    unset( $new_value['element_require'] );
4113
+										    }
4114
+
4115
+										    if ( isset( $new_value['element_repeat'] ) ) {
4116
+											    $x = 1;
4117
+											    while ( $x <= absint( $new_value['element_repeat'] ) ) {
4118
+												    $this->block_element( array( '' => $new_value ),$save );
4119
+												    $x ++;
4120
+											    }
4121
+										    } else {
4122
+											    $this->block_element( array( '' => $new_value ),$save );
4123
+										    }
4124
+									    }
4125
+									    $first_item ++;
4126
+								    }
4127
+							    }
4128
+
4129
+							    if($new_args['element']=='innerBlocksProps' || $new_args['element']=='xBlocksProps'){
4130
+								    echo "))";// end content
4131
+							    }else{
4132
+								    echo ")";// end content
4133
+							    }
4134
+
4135
+
4136
+							    echo ", \n";
4137
+
4138
+						    }
4139
+					    } else {
4140
+
4141
+						    if ( substr( $element, 0, 3 ) === "if_" ) {
4142
+							    $extra = '';
4143
+							    if( strpos($new_args, '[%WrapClass%]') !== false ){
4144
+								    $new_args = str_replace('[%WrapClass%]"','" + sd_build_aui_class(props.attributes)',$new_args);
4145
+								    $new_args = str_replace('[%WrapClass%]','+ sd_build_aui_class(props.attributes)',$new_args);
4146
+							    }
4147
+							    echo str_replace( "if_", "", $element ) . ": " . $this->block_props_replace( $new_args, true ) . ",";
4148
+						    } elseif ( $element == 'style' &&  strpos($new_args, '[%WrapStyle%]') !== false ) {
4149
+							    $new_args = str_replace('[%WrapStyle%]','',$new_args);
4150
+							    echo $element . ": {..." . $this->block_props_replace( $new_args ) . " , ...sd_build_aui_styles(props.attributes) },";
4151
+    //                            echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4152
+						    } elseif ( $element == 'style' ) {
4153
+							    echo $element . ": " . $this->block_props_replace( $new_args ) . ",";
4154
+						    } elseif ( ( $element == 'class' || $element == 'className'  ) &&  strpos($new_args, '[%WrapClass%]') !== false ) {
4155
+							    $new_args = str_replace('[%WrapClass%]','',$new_args);
4156
+							    echo $element . ": '" . $this->block_props_replace( $new_args ) . "' + sd_build_aui_class(props.attributes),";
4157
+						    } elseif ( $element == 'template' && $new_args ) {
4158
+							    echo $element . ": $new_args,";
4159
+						    } else {
4160
+							    echo $element . ": '" . $this->block_props_replace( $new_args ) . "',";
4161
+						    }
4162
+
4163
+					    }
4164
+				    }
4165
+			    }
4166
+		    }
4167
+
4168
+		    /**
4169 4169
 		 * Replace block attributes placeholders with the proper naming.
4170 4170
 		 *
4171 4171
 		 * @param $string
4172 4172
 		 *
4173 4173
 		 * @return mixed
4174 4174
 		 */
4175
-		public function block_props_replace( $string, $no_wrap = false ) {
4176
-			if ( $no_wrap ) {
4177
-				$string = str_replace( array( "[%", "%]", "%:checked]" ), array( "props.attributes.", "", "" ), $string );
4178
-			} else {
4179
-				$string = str_replace( array( "![%", "[%", "%]", "%:checked]" ), array( "'+!props.attributes.", "'+props.attributes.", "+'", "+'" ), $string );
4180
-			}
4175
+		    public function block_props_replace( $string, $no_wrap = false ) {
4176
+			    if ( $no_wrap ) {
4177
+				    $string = str_replace( array( "[%", "%]", "%:checked]" ), array( "props.attributes.", "", "" ), $string );
4178
+			    } else {
4179
+				    $string = str_replace( array( "![%", "[%", "%]", "%:checked]" ), array( "'+!props.attributes.", "'+props.attributes.", "+'", "+'" ), $string );
4180
+			    }
4181 4181
 
4182
-			return $string;
4183
-		}
4182
+			    return $string;
4183
+		    }
4184 4184
 
4185
-		/**
4185
+		    /**
4186 4186
 		 * Outputs the content of the widget
4187 4187
 		 *
4188 4188
 		 * @param array $args
4189 4189
 		 * @param array $instance
4190 4190
 		 */
4191
-		public function widget( $args, $instance ) {
4192
-			if ( ! is_array( $args ) ) {
4193
-				$args = array();
4194
-			}
4195
-
4196
-			// Get the filtered values
4197
-			$argument_values = $this->argument_values( $instance );
4198
-			$argument_values = $this->string_to_bool( $argument_values );
4199
-			$output          = $this->output( $argument_values, $args );
4200
-
4201
-			$no_wrap = false;
4202
-			if ( isset( $argument_values['no_wrap'] ) && $argument_values['no_wrap'] ) {
4203
-				$no_wrap = true;
4204
-			}
4205
-
4206
-			ob_start();
4207
-			if ( $output && ! $no_wrap ) {
4208
-
4209
-				$class_original = $this->options['widget_ops']['classname'];
4210
-				$class = $this->options['widget_ops']['classname']." sdel-".$this->get_instance_hash();
4211
-
4212
-				// Before widget
4213
-				$before_widget = ! empty( $args['before_widget'] ) ? $args['before_widget'] : '';
4214
-				$before_widget = $before_widget ? str_replace( $class_original, $class, $before_widget ) : $before_widget;
4215
-				$before_widget = apply_filters( 'wp_super_duper_before_widget', $before_widget, $args, $instance, $this );
4216
-				$before_widget = apply_filters( 'wp_super_duper_before_widget_' . $this->base_id, $before_widget, $args, $instance, $this );
4217
-
4218
-				// After widget
4219
-				$after_widget = ! empty( $args['after_widget'] ) ? $args['after_widget'] : '';
4220
-				$after_widget = apply_filters( 'wp_super_duper_after_widget', $after_widget, $args, $instance, $this );
4221
-				$after_widget = apply_filters( 'wp_super_duper_after_widget_' . $this->base_id, $after_widget, $args, $instance, $this );
4222
-
4223
-				echo $before_widget;
4224
-				// elementor strips the widget wrapping div so we check for and add it back if needed
4225
-				if ( $this->is_elementor_widget_output() ) {
4226
-					// Filter class & attrs for elementor widget output.
4227
-					$class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
4228
-					$class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
4229
-
4230
-					$attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
4231
-					$attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
4232
-
4233
-					echo "<span class='" . esc_attr( $class  ) . "' " . $attrs . ">";
4234
-				}
4235
-				echo $this->output_title( $args, $instance );
4236
-				echo $output;
4237
-				if ( $this->is_elementor_widget_output() ) {
4238
-					echo "</span>";
4239
-				}
4240
-				echo $after_widget;
4241
-			} elseif ( $this->is_preview() && $output == '' ) {// if preview show a placeholder if empty
4242
-				$output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
4243
-				echo $output;
4244
-			} elseif ( $output && $no_wrap ) {
4245
-				echo $output;
4246
-			}
4247
-			$output = ob_get_clean();
4248
-
4249
-			$output = apply_filters( 'wp_super_duper_widget_output', $output, $instance, $args, $this );
4250
-
4251
-			echo $output;
4252
-		}
4253
-
4254
-		/**
4191
+		    public function widget( $args, $instance ) {
4192
+			    if ( ! is_array( $args ) ) {
4193
+				    $args = array();
4194
+			    }
4195
+
4196
+			    // Get the filtered values
4197
+			    $argument_values = $this->argument_values( $instance );
4198
+			    $argument_values = $this->string_to_bool( $argument_values );
4199
+			    $output          = $this->output( $argument_values, $args );
4200
+
4201
+			    $no_wrap = false;
4202
+			    if ( isset( $argument_values['no_wrap'] ) && $argument_values['no_wrap'] ) {
4203
+				    $no_wrap = true;
4204
+			    }
4205
+
4206
+			    ob_start();
4207
+			    if ( $output && ! $no_wrap ) {
4208
+
4209
+				    $class_original = $this->options['widget_ops']['classname'];
4210
+				    $class = $this->options['widget_ops']['classname']." sdel-".$this->get_instance_hash();
4211
+
4212
+				    // Before widget
4213
+				    $before_widget = ! empty( $args['before_widget'] ) ? $args['before_widget'] : '';
4214
+				    $before_widget = $before_widget ? str_replace( $class_original, $class, $before_widget ) : $before_widget;
4215
+				    $before_widget = apply_filters( 'wp_super_duper_before_widget', $before_widget, $args, $instance, $this );
4216
+				    $before_widget = apply_filters( 'wp_super_duper_before_widget_' . $this->base_id, $before_widget, $args, $instance, $this );
4217
+
4218
+				    // After widget
4219
+				    $after_widget = ! empty( $args['after_widget'] ) ? $args['after_widget'] : '';
4220
+				    $after_widget = apply_filters( 'wp_super_duper_after_widget', $after_widget, $args, $instance, $this );
4221
+				    $after_widget = apply_filters( 'wp_super_duper_after_widget_' . $this->base_id, $after_widget, $args, $instance, $this );
4222
+
4223
+				    echo $before_widget;
4224
+				    // elementor strips the widget wrapping div so we check for and add it back if needed
4225
+				    if ( $this->is_elementor_widget_output() ) {
4226
+					    // Filter class & attrs for elementor widget output.
4227
+					    $class = apply_filters( 'wp_super_duper_div_classname', $class, $args, $this );
4228
+					    $class = apply_filters( 'wp_super_duper_div_classname_' . $this->base_id, $class, $args, $this );
4229
+
4230
+					    $attrs = apply_filters( 'wp_super_duper_div_attrs', '', $args, $this );
4231
+					    $attrs = apply_filters( 'wp_super_duper_div_attrs_' . $this->base_id, '', $args, $this );
4232
+
4233
+					    echo "<span class='" . esc_attr( $class  ) . "' " . $attrs . ">";
4234
+				    }
4235
+				    echo $this->output_title( $args, $instance );
4236
+				    echo $output;
4237
+				    if ( $this->is_elementor_widget_output() ) {
4238
+					    echo "</span>";
4239
+				    }
4240
+				    echo $after_widget;
4241
+			    } elseif ( $this->is_preview() && $output == '' ) {// if preview show a placeholder if empty
4242
+				    $output = $this->preview_placeholder_text( "{{" . $this->base_id . "}}" );
4243
+				    echo $output;
4244
+			    } elseif ( $output && $no_wrap ) {
4245
+				    echo $output;
4246
+			    }
4247
+			    $output = ob_get_clean();
4248
+
4249
+			    $output = apply_filters( 'wp_super_duper_widget_output', $output, $instance, $args, $this );
4250
+
4251
+			    echo $output;
4252
+		    }
4253
+
4254
+		    /**
4255 4255
 		 * Tests if the current output is inside a elementor container.
4256 4256
 		 *
4257 4257
 		 * @return bool
4258 4258
 		 *@since 1.0.4
4259 4259
 		 */
4260
-		public function is_elementor_widget_output() {
4261
-			$result = false;
4262
-			if ( defined( 'ELEMENTOR_VERSION' ) && isset( $this->number ) && $this->number == 'REPLACE_TO_ID' ) {
4263
-				$result = true;
4264
-			}
4260
+		    public function is_elementor_widget_output() {
4261
+			    $result = false;
4262
+			    if ( defined( 'ELEMENTOR_VERSION' ) && isset( $this->number ) && $this->number == 'REPLACE_TO_ID' ) {
4263
+				    $result = true;
4264
+			    }
4265 4265
 
4266
-			return $result;
4267
-		}
4266
+			    return $result;
4267
+		    }
4268 4268
 
4269
-		/**
4269
+		    /**
4270 4270
 		 * Tests if the current output is inside a elementor preview.
4271 4271
 		 *
4272 4272
 		 * @return bool
4273 4273
 		 *@since 1.0.4
4274 4274
 		 */
4275
-		public function is_elementor_preview() {
4276
-			$result = false;
4277
-			if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) {
4278
-				$result = true;
4279
-			}
4275
+		    public function is_elementor_preview() {
4276
+			    $result = false;
4277
+			    if ( isset( $_REQUEST['elementor-preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) || ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor_ajax' ) ) {
4278
+				    $result = true;
4279
+			    }
4280 4280
 
4281
-			return $result;
4282
-		}
4281
+			    return $result;
4282
+		    }
4283 4283
 
4284
-		/**
4284
+		    /**
4285 4285
 		 * Tests if the current output is inside a Divi preview.
4286 4286
 		 *
4287 4287
 		 * @return bool
4288 4288
 		 *@since 1.0.6
4289 4289
 		 */
4290
-		public function is_divi_preview() {
4291
-			$result = false;
4292
-			if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) {
4293
-				$result = true;
4294
-			}
4290
+		    public function is_divi_preview() {
4291
+			    $result = false;
4292
+			    if ( isset( $_REQUEST['et_fb'] ) || isset( $_REQUEST['et_pb_preview'] ) || ( is_admin() && isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'elementor' ) ) {
4293
+				    $result = true;
4294
+			    }
4295 4295
 
4296
-			return $result;
4297
-		}
4296
+			    return $result;
4297
+		    }
4298 4298
 
4299
-		/**
4299
+		    /**
4300 4300
 		 * Tests if the current output is inside a Beaver builder preview.
4301 4301
 		 *
4302 4302
 		 * @return bool
4303 4303
 		 *@since 1.0.6
4304 4304
 		 */
4305
-		public function is_beaver_preview() {
4306
-			$result = false;
4307
-			if ( isset( $_REQUEST['fl_builder'] ) ) {
4308
-				$result = true;
4309
-			}
4305
+		    public function is_beaver_preview() {
4306
+			    $result = false;
4307
+			    if ( isset( $_REQUEST['fl_builder'] ) ) {
4308
+				    $result = true;
4309
+			    }
4310 4310
 
4311
-			return $result;
4312
-		}
4311
+			    return $result;
4312
+		    }
4313 4313
 
4314
-		/**
4314
+		    /**
4315 4315
 		 * Tests if the current output is inside a siteorigin builder preview.
4316 4316
 		 *
4317 4317
 		 * @return bool
4318 4318
 		 *@since 1.0.6
4319 4319
 		 */
4320
-		public function is_siteorigin_preview() {
4321
-			$result = false;
4322
-			if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) {
4323
-				$result = true;
4324
-			}
4320
+		    public function is_siteorigin_preview() {
4321
+			    $result = false;
4322
+			    if ( ! empty( $_REQUEST['siteorigin_panels_live_editor'] ) ) {
4323
+				    $result = true;
4324
+			    }
4325 4325
 
4326
-			return $result;
4327
-		}
4326
+			    return $result;
4327
+		    }
4328 4328
 
4329
-		/**
4329
+		    /**
4330 4330
 		 * Tests if the current output is inside a cornerstone builder preview.
4331 4331
 		 *
4332 4332
 		 * @return bool
4333 4333
 		 *@since 1.0.8
4334 4334
 		 */
4335
-		public function is_cornerstone_preview() {
4336
-			$result = false;
4337
-			if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) {
4338
-				$result = true;
4339
-			}
4335
+		    public function is_cornerstone_preview() {
4336
+			    $result = false;
4337
+			    if ( ! empty( $_REQUEST['cornerstone_preview'] ) || basename( $_SERVER['REQUEST_URI'] ) == 'cornerstone-endpoint' ) {
4338
+				    $result = true;
4339
+			    }
4340 4340
 
4341
-			return $result;
4342
-		}
4341
+			    return $result;
4342
+		    }
4343 4343
 
4344
-		/**
4344
+		    /**
4345 4345
 		 * Tests if the current output is inside a fusion builder preview.
4346 4346
 		 *
4347 4347
 		 * @return bool
4348 4348
 		 *@since 1.1.0
4349 4349
 		 */
4350
-		public function is_fusion_preview() {
4351
-			$result = false;
4352
-			if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) {
4353
-				$result = true;
4354
-			}
4350
+		    public function is_fusion_preview() {
4351
+			    $result = false;
4352
+			    if ( ! empty( $_REQUEST['fb-edit'] ) || ! empty( $_REQUEST['fusion_load_nonce'] ) ) {
4353
+				    $result = true;
4354
+			    }
4355 4355
 
4356
-			return $result;
4357
-		}
4356
+			    return $result;
4357
+		    }
4358 4358
 
4359
-		/**
4359
+		    /**
4360 4360
 		 * Tests if the current output is inside a Oxygen builder preview.
4361 4361
 		 *
4362 4362
 		 * @return bool
4363 4363
 		 *@since 1.0.18
4364 4364
 		 */
4365
-		public function is_oxygen_preview() {
4366
-			$result = false;
4367
-			if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) {
4368
-				$result = true;
4369
-			}
4365
+		    public function is_oxygen_preview() {
4366
+			    $result = false;
4367
+			    if ( ! empty( $_REQUEST['ct_builder'] ) || ( ! empty( $_REQUEST['action'] ) && ( substr( $_REQUEST['action'], 0, 11 ) === "oxy_render_" || substr( $_REQUEST['action'], 0, 10 ) === "ct_render_" ) ) ) {
4368
+				    $result = true;
4369
+			    }
4370 4370
 
4371
-			return $result;
4372
-		}
4371
+			    return $result;
4372
+		    }
4373 4373
 
4374
-		/**
4374
+		    /**
4375 4375
 		 * Check for Kallyas theme Zion builder preview.
4376 4376
 		 *
4377 4377
 		 * @since 1.1.22
4378 4378
 		 *
4379 4379
 		 * @return bool True when preview page otherwise false.
4380 4380
 		 */
4381
-		public function is_kallyas_zion_preview() {
4382
-			$result = false;
4381
+		    public function is_kallyas_zion_preview() {
4382
+			    $result = false;
4383 4383
 
4384
-			if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) {
4385
-				$result = true;
4386
-			}
4384
+			    if ( function_exists( 'znhg_kallyas_theme_config' ) && ! empty( $_REQUEST['zn_pb_edit'] ) ) {
4385
+				    $result = true;
4386
+			    }
4387 4387
 
4388
-			return $result;
4389
-		}
4388
+			    return $result;
4389
+		    }
4390 4390
 
4391
-		/**
4391
+		    /**
4392 4392
 		 * Check for Bricks theme builder preview.
4393 4393
 		 *
4394 4394
 		 * @since 1.1.31
4395 4395
 		 *
4396 4396
 		 * @return bool True when preview page otherwise false.
4397 4397
 		 */
4398
-		public function is_bricks_preview() {
4399
-			$result = false;
4398
+		    public function is_bricks_preview() {
4399
+			    $result = false;
4400 4400
 
4401
-			if ( function_exists( 'bricks_is_builder' ) && ( bricks_is_builder() || bricks_is_builder_call() ) ) {
4402
-				$result = true;
4403
-			}
4401
+			    if ( function_exists( 'bricks_is_builder' ) && ( bricks_is_builder() || bricks_is_builder_call() ) ) {
4402
+				    $result = true;
4403
+			    }
4404 4404
 
4405
-			return $result;
4406
-		}
4405
+			    return $result;
4406
+		    }
4407 4407
 
4408
-		/**
4408
+		    /**
4409 4409
 		 * General function to check if we are in a preview situation.
4410 4410
 		 *
4411 4411
 		 * @return bool
4412 4412
 		 *@since 1.0.6
4413 4413
 		 */
4414
-		public function is_preview() {
4415
-			$preview = false;
4416
-			if ( $this->is_divi_preview() ) {
4417
-				$preview = true;
4418
-			} elseif ( $this->is_elementor_preview() ) {
4419
-				$preview = true;
4420
-			} elseif ( $this->is_beaver_preview() ) {
4421
-				$preview = true;
4422
-			} elseif ( $this->is_siteorigin_preview() ) {
4423
-				$preview = true;
4424
-			} elseif ( $this->is_cornerstone_preview() ) {
4425
-				$preview = true;
4426
-			} elseif ( $this->is_fusion_preview() ) {
4427
-				$preview = true;
4428
-			} elseif ( $this->is_oxygen_preview() ) {
4429
-				$preview = true;
4430
-			} elseif( $this->is_kallyas_zion_preview() ) {
4431
-				$preview = true;
4432
-			} elseif( $this->is_block_content_call() ) {
4433
-				$preview = true;
4434
-			} elseif( $this->is_bricks_preview() ) {
4435
-				$preview = true;
4436
-			}
4437
-
4438
-			return $preview;
4439
-		}
4440
-
4441
-		/**
4414
+		    public function is_preview() {
4415
+			    $preview = false;
4416
+			    if ( $this->is_divi_preview() ) {
4417
+				    $preview = true;
4418
+			    } elseif ( $this->is_elementor_preview() ) {
4419
+				    $preview = true;
4420
+			    } elseif ( $this->is_beaver_preview() ) {
4421
+				    $preview = true;
4422
+			    } elseif ( $this->is_siteorigin_preview() ) {
4423
+				    $preview = true;
4424
+			    } elseif ( $this->is_cornerstone_preview() ) {
4425
+				    $preview = true;
4426
+			    } elseif ( $this->is_fusion_preview() ) {
4427
+				    $preview = true;
4428
+			    } elseif ( $this->is_oxygen_preview() ) {
4429
+				    $preview = true;
4430
+			    } elseif( $this->is_kallyas_zion_preview() ) {
4431
+				    $preview = true;
4432
+			    } elseif( $this->is_block_content_call() ) {
4433
+				    $preview = true;
4434
+			    } elseif( $this->is_bricks_preview() ) {
4435
+				    $preview = true;
4436
+			    }
4437
+
4438
+			    return $preview;
4439
+		    }
4440
+
4441
+		    /**
4442 4442
 		 * Output the super title.
4443 4443
 		 *
4444 4444
 		 * @param $args
@@ -4446,172 +4446,172 @@  discard block
 block discarded – undo
4446 4446
 		 *
4447 4447
 		 * @return string
4448 4448
 		 */
4449
-		public function output_title( $args, $instance = array() ) {
4450
-			$output = '';
4451
-			if ( ! empty( $instance['title'] ) ) {
4452
-				/** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
4453
-				$title  = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
4454
-
4455
-				if ( empty( $instance['widget_title_tag'] ) ) {
4456
-					if ( ! isset( $args['before_title'] ) ) {
4457
-						$args['before_title'] = '';
4458
-					}
4459
-
4460
-					if ( ! isset( $args['after_title'] ) ) {
4461
-						$args['after_title'] = '';
4462
-					}
4463
-
4464
-					$output = $args['before_title'] . $title . $args['after_title'];
4465
-				} else {
4466
-					$title_tag = esc_attr( $instance['widget_title_tag'] );
4467
-
4468
-					// classes
4469
-					$title_classes = array();
4470
-					$title_classes[] = !empty( $instance['widget_title_size_class'] ) ? sanitize_html_class( $instance['widget_title_size_class'] ) : '';
4471
-					$title_classes[] = !empty( $instance['widget_title_align_class'] ) ? sanitize_html_class( $instance['widget_title_align_class'] ) : '';
4472
-					$title_classes[] = !empty( $instance['widget_title_color_class'] ) ? "text-".sanitize_html_class( $instance['widget_title_color_class'] ) : '';
4473
-					$title_classes[] = !empty( $instance['widget_title_border_class'] ) ? sanitize_html_class( $instance['widget_title_border_class'] ) : '';
4474
-					$title_classes[] = !empty( $instance['widget_title_border_color_class'] ) ? "border-".sanitize_html_class( $instance['widget_title_border_color_class'] ) : '';
4475
-					$title_classes[] = !empty( $instance['widget_title_mt_class'] ) ? "mt-".absint( $instance['widget_title_mt_class'] ) : '';
4476
-					$title_classes[] = !empty( $instance['widget_title_mr_class'] ) ? "mr-".absint( $instance['widget_title_mr_class'] ) : '';
4477
-					$title_classes[] = !empty( $instance['widget_title_mb_class'] ) ? "mb-".absint( $instance['widget_title_mb_class'] ) : '';
4478
-					$title_classes[] = !empty( $instance['widget_title_ml_class'] ) ? "ml-".absint( $instance['widget_title_ml_class'] ) : '';
4479
-					$title_classes[] = !empty( $instance['widget_title_pt_class'] ) ? "pt-".absint( $instance['widget_title_pt_class'] ) : '';
4480
-					$title_classes[] = !empty( $instance['widget_title_pr_class'] ) ? "pr-".absint( $instance['widget_title_pr_class'] ) : '';
4481
-					$title_classes[] = !empty( $instance['widget_title_pb_class'] ) ? "pb-".absint( $instance['widget_title_pb_class'] ) : '';
4482
-					$title_classes[] = !empty( $instance['widget_title_pl_class'] ) ? "pl-".absint( $instance['widget_title_pl_class'] ) : '';
4483
-
4484
-					$class = !empty( $title_classes ) ? implode(" ",$title_classes) : '';
4485
-					$output = "<$title_tag class='$class' >$title</$title_tag>";
4486
-				}
4487
-
4488
-			}
4489
-
4490
-			return $output;
4491
-		}
4492
-
4493
-		/**
4449
+		    public function output_title( $args, $instance = array() ) {
4450
+			    $output = '';
4451
+			    if ( ! empty( $instance['title'] ) ) {
4452
+				    /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
4453
+				    $title  = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
4454
+
4455
+				    if ( empty( $instance['widget_title_tag'] ) ) {
4456
+					    if ( ! isset( $args['before_title'] ) ) {
4457
+						    $args['before_title'] = '';
4458
+					    }
4459
+
4460
+					    if ( ! isset( $args['after_title'] ) ) {
4461
+						    $args['after_title'] = '';
4462
+					    }
4463
+
4464
+					    $output = $args['before_title'] . $title . $args['after_title'];
4465
+				    } else {
4466
+					    $title_tag = esc_attr( $instance['widget_title_tag'] );
4467
+
4468
+					    // classes
4469
+					    $title_classes = array();
4470
+					    $title_classes[] = !empty( $instance['widget_title_size_class'] ) ? sanitize_html_class( $instance['widget_title_size_class'] ) : '';
4471
+					    $title_classes[] = !empty( $instance['widget_title_align_class'] ) ? sanitize_html_class( $instance['widget_title_align_class'] ) : '';
4472
+					    $title_classes[] = !empty( $instance['widget_title_color_class'] ) ? "text-".sanitize_html_class( $instance['widget_title_color_class'] ) : '';
4473
+					    $title_classes[] = !empty( $instance['widget_title_border_class'] ) ? sanitize_html_class( $instance['widget_title_border_class'] ) : '';
4474
+					    $title_classes[] = !empty( $instance['widget_title_border_color_class'] ) ? "border-".sanitize_html_class( $instance['widget_title_border_color_class'] ) : '';
4475
+					    $title_classes[] = !empty( $instance['widget_title_mt_class'] ) ? "mt-".absint( $instance['widget_title_mt_class'] ) : '';
4476
+					    $title_classes[] = !empty( $instance['widget_title_mr_class'] ) ? "mr-".absint( $instance['widget_title_mr_class'] ) : '';
4477
+					    $title_classes[] = !empty( $instance['widget_title_mb_class'] ) ? "mb-".absint( $instance['widget_title_mb_class'] ) : '';
4478
+					    $title_classes[] = !empty( $instance['widget_title_ml_class'] ) ? "ml-".absint( $instance['widget_title_ml_class'] ) : '';
4479
+					    $title_classes[] = !empty( $instance['widget_title_pt_class'] ) ? "pt-".absint( $instance['widget_title_pt_class'] ) : '';
4480
+					    $title_classes[] = !empty( $instance['widget_title_pr_class'] ) ? "pr-".absint( $instance['widget_title_pr_class'] ) : '';
4481
+					    $title_classes[] = !empty( $instance['widget_title_pb_class'] ) ? "pb-".absint( $instance['widget_title_pb_class'] ) : '';
4482
+					    $title_classes[] = !empty( $instance['widget_title_pl_class'] ) ? "pl-".absint( $instance['widget_title_pl_class'] ) : '';
4483
+
4484
+					    $class = !empty( $title_classes ) ? implode(" ",$title_classes) : '';
4485
+					    $output = "<$title_tag class='$class' >$title</$title_tag>";
4486
+				    }
4487
+
4488
+			    }
4489
+
4490
+			    return $output;
4491
+		    }
4492
+
4493
+		    /**
4494 4494
 		 * Outputs the options form inputs for the widget.
4495 4495
 		 *
4496 4496
 		 * @param array $instance The widget options.
4497 4497
 		 */
4498
-		public function form( $instance ) {
4498
+		    public function form( $instance ) {
4499 4499
 
4500
-			// set widget instance
4501
-			$this->instance = $instance;
4500
+			    // set widget instance
4501
+			    $this->instance = $instance;
4502 4502
 
4503
-			// set it as a SD widget
4504
-			echo $this->widget_advanced_toggle();
4503
+			    // set it as a SD widget
4504
+			    echo $this->widget_advanced_toggle();
4505 4505
 
4506
-			echo "<p>" . esc_attr( $this->options['widget_ops']['description'] ) . "</p>";
4507
-			$arguments_raw = $this->get_arguments();
4506
+			    echo "<p>" . esc_attr( $this->options['widget_ops']['description'] ) . "</p>";
4507
+			    $arguments_raw = $this->get_arguments();
4508 4508
 
4509
-			if ( is_array( $arguments_raw ) ) {
4509
+			    if ( is_array( $arguments_raw ) ) {
4510 4510
 
4511
-				$arguments = $this->group_arguments( $arguments_raw );
4511
+				    $arguments = $this->group_arguments( $arguments_raw );
4512 4512
 
4513
-				// Do we have sections?
4514
-				$has_sections = $arguments == $arguments_raw ? false : true;
4513
+				    // Do we have sections?
4514
+				    $has_sections = $arguments == $arguments_raw ? false : true;
4515 4515
 
4516 4516
 
4517
-				if ( $has_sections ) {
4518
-					$panel_count = 0;
4519
-					foreach ( $arguments as $key => $args ) {
4517
+				    if ( $has_sections ) {
4518
+					    $panel_count = 0;
4519
+					    foreach ( $arguments as $key => $args ) {
4520 4520
 
4521
-						?>
4521
+						    ?>
4522 4522
 						<script>
4523 4523
 							//							jQuery(this).find("i").toggleClass("fas fa-chevron-up fas fa-chevron-down");jQuery(this).next().toggle();
4524 4524
 						</script>
4525 4525
 						<?php
4526 4526
 
4527
-						$hide       = $panel_count ? ' style="display:none;" ' : '';
4528
-						$icon_class = $panel_count ? 'fas fa-chevron-up' : 'fas fa-chevron-down';
4529
-						echo "<button onclick='jQuery(this).find(\"i\").toggleClass(\"fas fa-chevron-up fas fa-chevron-down\");jQuery(this).next().slideToggle();' type='button' class='sd-toggle-group-button sd-input-group-toggle" . sanitize_title_with_dashes( $key ) . "'>" . esc_attr( $key ) . " <i style='float:right;' class='" . $icon_class . "'></i></button>";
4530
-						echo "<div class='sd-toggle-group sd-input-group-" . sanitize_title_with_dashes( $key ) . "' $hide>";
4527
+						    $hide       = $panel_count ? ' style="display:none;" ' : '';
4528
+						    $icon_class = $panel_count ? 'fas fa-chevron-up' : 'fas fa-chevron-down';
4529
+						    echo "<button onclick='jQuery(this).find(\"i\").toggleClass(\"fas fa-chevron-up fas fa-chevron-down\");jQuery(this).next().slideToggle();' type='button' class='sd-toggle-group-button sd-input-group-toggle" . sanitize_title_with_dashes( $key ) . "'>" . esc_attr( $key ) . " <i style='float:right;' class='" . $icon_class . "'></i></button>";
4530
+						    echo "<div class='sd-toggle-group sd-input-group-" . sanitize_title_with_dashes( $key ) . "' $hide>";
4531 4531
 
4532
-						foreach ( $args as $k => $a ) {
4532
+						    foreach ( $args as $k => $a ) {
4533 4533
 
4534
-							$this->widget_inputs_row_start($k, $a);
4535
-							$this->widget_inputs( $a, $instance );
4536
-							$this->widget_inputs_row_end($k, $a);
4534
+							    $this->widget_inputs_row_start($k, $a);
4535
+							    $this->widget_inputs( $a, $instance );
4536
+							    $this->widget_inputs_row_end($k, $a);
4537 4537
 
4538
-						}
4538
+						    }
4539 4539
 
4540
-						echo "</div>";
4540
+						    echo "</div>";
4541 4541
 
4542
-						$panel_count ++;
4542
+						    $panel_count ++;
4543 4543
 
4544
-					}
4545
-				} else {
4546
-					foreach ( $arguments as $key => $args ) {
4547
-						$this->widget_inputs_row_start($key, $args);
4548
-						$this->widget_inputs( $args, $instance );
4549
-						$this->widget_inputs_row_end($key, $args);
4550
-					}
4551
-				}
4544
+					    }
4545
+				    } else {
4546
+					    foreach ( $arguments as $key => $args ) {
4547
+						    $this->widget_inputs_row_start($key, $args);
4548
+						    $this->widget_inputs( $args, $instance );
4549
+						    $this->widget_inputs_row_end($key, $args);
4550
+					    }
4551
+				    }
4552 4552
 
4553
-			}
4554
-		}
4553
+			    }
4554
+		    }
4555 4555
 
4556
-		public function widget_inputs_row_start( $key, $args ) {
4557
-			if ( ! empty( $args['row'] ) ) {
4558
-				// Maybe open
4559
-				if ( ! empty( $args['row']['open'] ) ) {
4560
-					?>
4561
-					<div class='bsui sd-argument' data-argument='<?php echo esc_attr( $args['row']['key'] ); ?>' data-element_require='<?php echo ( ! empty( $args['row']['element_require'] ) ? $this->convert_element_require( $args['row']['element_require'] ) : '' ); ?>'>
4556
+		    public function widget_inputs_row_start( $key, $args ) {
4557
+			    if ( ! empty( $args['row'] ) ) {
4558
+				    // Maybe open
4559
+				    if ( ! empty( $args['row']['open'] ) ) {
4560
+					    ?>
4561
+    					<div class='bsui sd-argument' data-argument='<?php echo esc_attr( $args['row']['key'] ); ?>' data-element_require='<?php echo ( ! empty( $args['row']['element_require'] ) ? $this->convert_element_require( $args['row']['element_require'] ) : '' ); ?>'>
4562 4562
 					<?php if ( ! empty( $args['row']['title'] ) ) { ?>
4563
-					<?php
4564
-						if ( isset( $args['row']['icon'] ) ) {
4565
-							$args['row']['icon'] = '';
4566
-						}
4567
-
4568
-						if ( ! isset( $args['row']['device_type'] ) && isset( $args['device_type'] ) ) {
4569
-							$args['row']['device_type'] = $args['device_type'];
4570
-						}
4571
-					?>
4572
-					<label class="mb-0"><?php echo $this->widget_field_title( $args['row'] ); ?><?php echo $this->widget_field_desc( $args['row'] ); ?></label>
4563
+    					<?php
4564
+						    if ( isset( $args['row']['icon'] ) ) {
4565
+							    $args['row']['icon'] = '';
4566
+						    }
4567
+
4568
+						    if ( ! isset( $args['row']['device_type'] ) && isset( $args['device_type'] ) ) {
4569
+							    $args['row']['device_type'] = $args['device_type'];
4570
+						    }
4571
+					    ?>
4572
+    					<label class="mb-0"><?php echo $this->widget_field_title( $args['row'] ); ?><?php echo $this->widget_field_desc( $args['row'] ); ?></label>
4573 4573
 					<?php } ?>
4574
-					<div class='row<?php echo ( ! empty( $args['row']['class'] ) ? ' ' . esc_attr( $args['row']['class'] ) : '' ); ?>'>
4574
+    					<div class='row<?php echo ( ! empty( $args['row']['class'] ) ? ' ' . esc_attr( $args['row']['class'] ) : '' ); ?>'>
4575 4575
 					<div class='col pr-2'>
4576 4576
 					<?php
4577
-				} else if ( ! empty( $args['row']['close'] ) ) {
4578
-					echo "<div class='col pl-0 ps-0'>";
4579
-				} else {
4580
-					echo "<div class='col pl-0 ps-0 pr-2 pe-2'>";
4581
-				}
4582
-			}
4583
-		}
4584
-
4585
-		public function widget_inputs_row_end( $key, $args ) {
4586
-			if ( ! empty( $args['row'] ) ) {
4587
-				// Maybe close
4588
-				if ( ! empty( $args['row']['close'] ) ) {
4589
-					echo "</div></div>";
4590
-				}
4591
-				echo "</div>";
4592
-			}
4593
-		}
4594
-
4595
-		/**
4577
+				    } else if ( ! empty( $args['row']['close'] ) ) {
4578
+					    echo "<div class='col pl-0 ps-0'>";
4579
+				    } else {
4580
+					    echo "<div class='col pl-0 ps-0 pr-2 pe-2'>";
4581
+				    }
4582
+			    }
4583
+		    }
4584
+
4585
+		    public function widget_inputs_row_end( $key, $args ) {
4586
+			    if ( ! empty( $args['row'] ) ) {
4587
+				    // Maybe close
4588
+				    if ( ! empty( $args['row']['close'] ) ) {
4589
+					    echo "</div></div>";
4590
+				    }
4591
+				    echo "</div>";
4592
+			    }
4593
+		    }
4594
+
4595
+		    /**
4596 4596
 		 * Get the hidden input that when added makes the advanced button show on widget settings.
4597 4597
 		 *
4598 4598
 		 * @return string
4599 4599
 		 */
4600
-		public function widget_advanced_toggle() {
4600
+		    public function widget_advanced_toggle() {
4601 4601
 
4602
-			$output = '';
4603
-			if ( $this->block_show_advanced() ) {
4604
-				$val = 1;
4605
-			} else {
4606
-				$val = 0;
4607
-			}
4602
+			    $output = '';
4603
+			    if ( $this->block_show_advanced() ) {
4604
+				    $val = 1;
4605
+			    } else {
4606
+				    $val = 0;
4607
+			    }
4608 4608
 
4609
-			$output .= "<input type='hidden'  class='sd-show-advanced' value='$val' />";
4609
+			    $output .= "<input type='hidden'  class='sd-show-advanced' value='$val' />";
4610 4610
 
4611
-			return $output;
4612
-		}
4611
+			    return $output;
4612
+		    }
4613 4613
 
4614
-		/**
4614
+		    /**
4615 4615
 		 * Convert require element.
4616 4616
 		 *
4617 4617
 		 * @param string $input Input element.
@@ -4620,67 +4620,67 @@  discard block
 block discarded – undo
4620 4620
 		 *@since 1.0.0
4621 4621
 		 *
4622 4622
 		 */
4623
-		public function convert_element_require( $input ) {
4624
-			$input = str_replace( "'", '"', $input );// we only want double quotes
4623
+		    public function convert_element_require( $input ) {
4624
+			    $input = str_replace( "'", '"', $input );// we only want double quotes
4625 4625
 
4626
-			$output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array(
4627
-				"jQuery(form).find('[data-argument=\"",
4628
-				"\"]').find('input,select,textarea').val()",
4629
-				"\"]').find('input:checked').val()"
4630
-			), $input ) );
4626
+			    $output = esc_attr( str_replace( array( "[%", "%]", "%:checked]" ), array(
4627
+				    "jQuery(form).find('[data-argument=\"",
4628
+				    "\"]').find('input,select,textarea').val()",
4629
+				    "\"]').find('input:checked').val()"
4630
+			    ), $input ) );
4631 4631
 
4632
-			return $output;
4633
-		}
4632
+			    return $output;
4633
+		    }
4634 4634
 
4635
-		/**
4635
+		    /**
4636 4636
 		 * Builds the inputs for the widget options.
4637 4637
 		 *
4638 4638
 		 * @param $args
4639 4639
 		 * @param $instance
4640 4640
 		 */
4641
-		public function widget_inputs( $args, $instance ) {
4642
-
4643
-			$class             = "";
4644
-			$element_require   = "";
4645
-			$custom_attributes = "";
4646
-
4647
-			// get value
4648
-			if ( isset( $instance[ $args['name'] ] ) ) {
4649
-				$value = $instance[ $args['name'] ];
4650
-			} elseif ( ! isset( $instance[ $args['name'] ] ) && ! empty( $args['default'] ) ) {
4651
-				$value = is_array( $args['default'] ) ? array_map( "esc_html", $args['default'] ) : esc_html( $args['default'] );
4652
-			} else {
4653
-				$value = '';
4654
-			}
4655
-
4656
-			// get placeholder
4657
-			if ( ! empty( $args['placeholder'] ) ) {
4658
-				$placeholder = "placeholder='" . esc_html( $args['placeholder'] ) . "'";
4659
-			} else {
4660
-				$placeholder = '';
4661
-			}
4662
-
4663
-			// get if advanced
4664
-			if ( isset( $args['advanced'] ) && $args['advanced'] ) {
4665
-				$class .= " sd-advanced-setting ";
4666
-			}
4667
-
4668
-			// element_require
4669
-			if ( isset( $args['element_require'] ) && $args['element_require'] ) {
4670
-				$element_require = $args['element_require'];
4671
-			}
4672
-
4673
-			// custom_attributes
4674
-			if ( isset( $args['custom_attributes'] ) && $args['custom_attributes'] ) {
4675
-				$custom_attributes = $this->array_to_attributes( $args['custom_attributes'], true );
4676
-			}
4677
-
4678
-			// before wrapper
4679
-			?>
4680
-			<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 );} ?>'>
4641
+		    public function widget_inputs( $args, $instance ) {
4642
+
4643
+			    $class             = "";
4644
+			    $element_require   = "";
4645
+			    $custom_attributes = "";
4646
+
4647
+			    // get value
4648
+			    if ( isset( $instance[ $args['name'] ] ) ) {
4649
+				    $value = $instance[ $args['name'] ];
4650
+			    } elseif ( ! isset( $instance[ $args['name'] ] ) && ! empty( $args['default'] ) ) {
4651
+				    $value = is_array( $args['default'] ) ? array_map( "esc_html", $args['default'] ) : esc_html( $args['default'] );
4652
+			    } else {
4653
+				    $value = '';
4654
+			    }
4655
+
4656
+			    // get placeholder
4657
+			    if ( ! empty( $args['placeholder'] ) ) {
4658
+				    $placeholder = "placeholder='" . esc_html( $args['placeholder'] ) . "'";
4659
+			    } else {
4660
+				    $placeholder = '';
4661
+			    }
4662
+
4663
+			    // get if advanced
4664
+			    if ( isset( $args['advanced'] ) && $args['advanced'] ) {
4665
+				    $class .= " sd-advanced-setting ";
4666
+			    }
4667
+
4668
+			    // element_require
4669
+			    if ( isset( $args['element_require'] ) && $args['element_require'] ) {
4670
+				    $element_require = $args['element_require'];
4671
+			    }
4672
+
4673
+			    // custom_attributes
4674
+			    if ( isset( $args['custom_attributes'] ) && $args['custom_attributes'] ) {
4675
+				    $custom_attributes = $this->array_to_attributes( $args['custom_attributes'], true );
4676
+			    }
4677
+
4678
+			    // before wrapper
4679
+			    ?>
4680
+    			<p class="sd-argument <?php echo esc_attr( $class ); ?>" data-argument='<?php echo esc_attr( $args['name'] ); ?>' data-element_require='<?php if ( $element_require ) { echo $this->convert_element_require( $element_require );} ?>'>
4681 4681
 			<?php
4682
-			switch ( $args['type'] ) {
4683
-				//array('text','password','number','email','tel','url','color')
4682
+			    switch ( $args['type'] ) {
4683
+				    //array('text','password','number','email','tel','url','color')
4684 4684
 				case "text":
4685 4685
 				case "password":
4686 4686
 				case "number":
@@ -4744,7 +4744,7 @@  discard block
 block discarded – undo
4744 4744
 					break;
4745 4745
 				default:
4746 4746
 					echo "No input type found!"; // @todo we need to add more input types.
4747
-			}
4747
+			    }
4748 4748
 			// after wrapper
4749 4749
 			?></p><?php
4750 4750
 		}
Please login to merge, or discard this patch.