/**
  * Render html UI_Typography.
  *
  * @since  4.0.0
  */
 public function render()
 {
     $html = '';
     $text_align = array('notdefined' => __('Not defined', 'cherry'), 'inherit' => __('Inherit', 'cherry'), 'left' => __('Left', 'cherry'), 'right' => __('Right', 'cherry'), 'center' => __('Center', 'cherry'), 'justify' => __('Justify', 'cherry'));
     $google_fonts_array = $this->get_google_font();
     $standart_fonts_array = $this->get_standart_font();
     $character_array = array();
     $style_array = array();
     $fonttype = '';
     $html .= '<div class="cherry-ui-typography-wrap">';
     //Font Family
     $html .= '<div class="cherry-column-section">';
     $html .= '<div class="inner">';
     $html .= '<div class="field-font-family">';
     $html .= '<label for="' . $this->settings['id'] . '-family">' . __('Font Family', 'cherry') . '</label> ';
     $html .= '<select id="' . $this->settings['id'] . '-family" class="cherry-ui-select cherry-font-family" name="' . $this->settings['name'] . '[family]">';
     if ($standart_fonts_array && !empty($standart_fonts_array) && is_array($standart_fonts_array)) {
         $html .= '<optgroup label="' . __('Standart Webfonts', 'cherry') . '" data-font-type="standart">';
         foreach ($standart_fonts_array as $font_key => $font_value) {
             $category = is_array($font_value['category']) ? implode(",", $font_value['category']) : $font_value['category'];
             $style = is_array($font_value['variants']) ? implode(",", $font_value['variants']) : $font_value['variants'];
             $character = is_array($font_value['subsets']) ? implode(",", $font_value['subsets']) : $font_value['subsets'];
             $selected_state = '';
             if ($this->settings['value']['family'] && !empty($this->settings['value']['family'])) {
                 if (!is_array($this->settings['value']['family'])) {
                     $this->settings['value']['family'] = array($this->settings['value']['family']);
                 }
                 foreach ($this->settings['value']['family'] as $key => $value) {
                     $selected_state = selected($value, $font_value['family'], false);
                     if ($selected_state == " selected='selected'") {
                         $fonttype = 'standart';
                         break;
                     }
                 }
             }
             $html .= '<option value="' . $font_value['family'] . '" data-category="' . $category . '" data-style="' . $style . '" data-character="' . $character . '" ' . $selected_state . '>' . esc_html($font_value['family']) . '</option>';
         }
         $html .= '</optgroup>';
     }
     if ($google_fonts_array && !empty($google_fonts_array) && is_array($google_fonts_array)) {
         $html .= '<optgroup label="' . __('Google Webfonts', 'cherry') . '" data-font-type="web">';
         foreach ($google_fonts_array as $font_key => $font_value) {
             $category = is_array($font_value['category']) ? implode(",", $font_value['category']) : $font_value['category'];
             $style = is_array($font_value['variants']) ? implode(",", $font_value['variants']) : $font_value['variants'];
             $character = is_array($font_value['subsets']) ? implode(",", $font_value['subsets']) : $font_value['subsets'];
             foreach ($font_value['variants'] as $style_key => $style_value) {
                 if (!array_key_exists($style_value, $style_array)) {
                     $text_piece_1 = preg_replace('/[0-9]/s', '', $style_value);
                     $text_piece_2 = preg_replace('/[A-Za-z]/s', ' ', $style_value);
                     $value_text = ucwords($text_piece_2 . ' ' . $text_piece_1);
                     $style_array[$style_value] = $value_text;
                 }
             }
             foreach ($font_value['subsets'] as $character_key => $character_value) {
                 if (!array_key_exists($character_value, $character_array)) {
                     $value_text = str_replace('-ext', ' Extended', $character_value);
                     $value_text = ucwords($value_text);
                     $character_array[$character_value] = $value_text;
                 }
             }
             $selected_state = '';
             if ($this->settings['value']['family'] && !empty($this->settings['value']['family'])) {
                 if (!is_array($this->settings['value']['family'])) {
                     $this->settings['value']['family'] = array($this->settings['value']['family']);
                 }
                 foreach ($this->settings['value']['family'] as $key => $value) {
                     $selected_state = selected($value, $font_value['family'], false);
                     if ($selected_state == " selected='selected'") {
                         $fonttype = 'web';
                         break;
                     }
                 }
             }
             $html .= '<option value="' . $font_value['family'] . '" data-category="' . $category . '" data-style="' . $style . '" data-character="' . $character . '" ' . $selected_state . '>' . esc_html($font_value['family']) . '</option>';
         }
         $html .= '</optgroup>';
     }
     $html .= '</select>';
     $html .= '</div>';
     $html .= '<div class="field-font-style">';
     if ($style_array && !empty($style_array) && is_array($style_array)) {
         $html .= '<label for="' . $this->settings['id'] . '-style">' . __('Font Style', 'cherry') . '</label> ';
         $ui_style_select = new UI_Select(array('id' => $this->settings['id'] . '-style', 'name' => $this->settings['name'] . '[style]', 'value' => $this->settings['value']['style'], 'options' => $style_array, 'class' => 'cherry-font-style'));
         $html .= $ui_style_select->render();
     }
     $html .= '</div>';
     $html .= '<div class="field-font-character">';
     if ($character_array && !empty($character_array) && is_array($character_array)) {
         $html .= '<label for="' . $this->settings['id'] . '-character">' . __('Character Sets', 'cherry') . '</label> ';
         $ui_character_select = new UI_Select(array('id' => $this->settings['id'] . '-character', 'name' => $this->settings['name'] . '[character]', 'value' => $this->settings['value']['character'], 'options' => $character_array, 'class' => 'cherry-font-character'));
         $html .= $ui_character_select->render();
     }
     $html .= '</div>';
     $html .= '</div>';
     $html .= '</div>';
     $html .= '<div class="cherry-column-section">';
     $html .= '<div class="inner">';
     $html .= '<div class="field-font-size">';
     $html .= '<label for="' . $this->settings['id'] . '-size">' . __('Size', 'cherry') . '</label> ';
     $ui_size_stepper = new UI_Stepper(array('id' => $this->settings['id'] . '-size>', 'name' => $this->settings['name'] . '[size]', 'value' => $this->settings['value']['size'], 'max_value' => 500, 'min_value' => 0, 'step_value' => 1, 'class' => 'font-size'));
     $html .= $ui_size_stepper->render();
     $html .= '</div>';
     $html .= '<div class="field-font-lineheight">';
     $html .= '<label for="' . $this->settings['id'] . '-lineheight">' . __('Line-height', 'cherry') . '</label> ';
     $ui_lineheight_stepper = new UI_Stepper(array('id' => $this->settings['id'] . '-lineheight>', 'name' => $this->settings['name'] . '[lineheight]', 'value' => $this->settings['value']['lineheight'], 'max_value' => 500, 'min_value' => 0, 'step_value' => 1, 'class' => 'font-lineheight'));
     $html .= $ui_lineheight_stepper->render();
     $html .= '</div>';
     $html .= '<div class="field-font-letter-spacing">';
     $html .= '<label for="' . $this->settings['id'] . '-letterspacing">' . __('Letter-spacing', 'cherry') . '</label> ';
     $ui_letterspacing_stepper = new UI_Stepper(array('id' => $this->settings['id'] . '-letterspacing>', 'name' => $this->settings['name'] . '[letterspacing]', 'value' => $this->settings['value']['letterspacing'], 'max_value' => 50, 'min_value' => -50, 'step_value' => 1, 'class' => 'font-letterspacing'));
     $html .= $ui_letterspacing_stepper->render();
     $html .= '</div>';
     $html .= '<div class="field-font-color">';
     $html .= '<label for="' . $this->settings['id'] . '-color">' . __('Font color', 'cherry') . '</label> ';
     $ui_colorpicker = new UI_Colorpicker(array('id' => $this->settings['id'] . '-color', 'name' => $this->settings['name'] . '[color]', 'value' => $this->settings['value']['color'], 'class' => 'cherry-color-picker'));
     $html .= $ui_colorpicker->render();
     $html .= '</div>';
     $html .= '<div class="field-font-align">';
     $html .= '<label for="' . $this->settings['id'] . '-align">' . __('Text align', 'cherry') . '</label> ';
     $ui_align_select = new UI_Select(array('id' => $this->settings['id'] . '-align', 'name' => $this->settings['name'] . '[align]', 'value' => $this->settings['value']['align'], 'options' => $text_align, 'class' => 'cherry-text-align'));
     $html .= $ui_align_select->render();
     $html .= '</div>';
     $html .= '<div class="clear"></div>';
     $html .= '</div>';
     $html .= '</div>';
     $html .= '<div class="clear"></div>';
     $ui_preview_textarea = new UI_Textarea(array('id' => $this->settings['id'] . '-preview', 'name' => 'none', 'value' => "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.", 'rows' => 4, 'class' => 'cherry-font-preview'));
     $html .= $ui_preview_textarea->render();
     $html .= '<input class="cherry-font-category" name="' . $this->settings['name'] . '[category]" value=""  type="hidden" />';
     $html .= '<input class="font-type" name="' . $this->settings['name'] . '[fonttype]" type="hidden" value="' . esc_html($fonttype) . '">';
     $html .= '</div>';
     return $html;
 }
 /**
  * Get shortcode input HTML
  *
  * @return string|null
  */
 public function get_shortcode_input()
 {
     if (!file_exists($this->get_path('ui/ui-textarea/ui-textarea.php'))) {
         return null;
     }
     require_once $this->get_path('ui/ui-textarea/ui-textarea.php');
     $ui_control = new UI_Textarea(array('id' => 'generated-shortcode', 'name' => 'generated-shortcode', 'label' => __('Generated shortcode:', $this->plugin), 'rows' => 4));
     return sprintf('<div class="cherry-sg-shortcode">%s</div>', $ui_control->render());
 }
 /**
  * Enqueue admin-specific javascript.
  *
  * @since 4.0.0
  */
 public function enqueue_builder_scripts($hook_suffix)
 {
     UI_Text::enqueue_assets();
     UI_Textarea::enqueue_assets();
     UI_Select::enqueue_assets();
     UI_Checkbox::enqueue_assets();
     UI_Radio::enqueue_assets();
     UI_Switcher::enqueue_assets();
     UI_Colorpicker::enqueue_assets();
     UI_Repeater::enqueue_assets();
     UI_Media::enqueue_assets();
     UI_Stepper::enqueue_assets();
     UI_Slider::enqueue_assets();
     UI_Range_Slider::enqueue_assets();
     UI_Background::enqueue_assets();
     UI_Typography::enqueue_assets();
     UI_Ace_Editor::enqueue_assets();
     UI_Layout_Editor::enqueue_assets();
     UI_Static_Area_Editor::enqueue_assets();
     UI_Tooltip::enqueue_assets();
     wp_enqueue_script('editor');
     wp_enqueue_script('interface-builder');
 }
 /**
  * Enqueue admin-specific javascript.
  *
  * @since 4.0.0
  */
 public function enqueue_builder_scripts($hook_suffix = false)
 {
     UI_Text::enqueue_assets();
     UI_Textarea::enqueue_assets();
     UI_Select::enqueue_assets();
     UI_Checkbox::enqueue_assets();
     UI_Radio::enqueue_assets();
     UI_Switcher::enqueue_assets();
     UI_Colorpicker::enqueue_assets();
     UI_Repeater::enqueue_assets();
     UI_Media::enqueue_assets();
     UI_Stepper::enqueue_assets();
     UI_Slider::enqueue_assets();
     UI_Range_Slider::enqueue_assets();
     UI_Background::enqueue_assets();
     UI_Typography::enqueue_assets();
     UI_Ace_Editor::enqueue_assets();
     UI_Layout_Editor::enqueue_assets();
     UI_Tooltip::enqueue_assets();
     UI_Webfont::enqueue_assets();
     wp_enqueue_script('editor');
     wp_enqueue_script('jquery-ui-dialog');
     wp_enqueue_script('interface-builder', trailingslashit(CHERRY_URI) . 'admin/assets/js/interface-builder.js', array('jquery'), CHERRY_VERSION, true);
 }