/home/ivoiecob/risinghoopers.com/wp-content/plugins/gum-elementor-addon/widgets/blog_grid.php
<?php
namespace Elementor;
/**
 * @package     WordPress
 * @subpackage  Gum Addon for Elementor
 * @author      support@themegum.com
 * @since       1.2.0h
*/
defined('ABSPATH') or die();

use Elementor\Widget_Base;
use Elementor\Controls_Manager;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Typography;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Background;

use WP_Query;
use Gum_Elementor_Helper;

class Gum_Elementor_Widget_blog_grid extends Widget_Base {

  public function __construct( $data = [], $args = null ) {
    parent::__construct( $data, $args );

    $is_type_instance = $this->is_type_instance();

    if ( ! $is_type_instance && null === $args ) {
      throw new \Exception( '`$args` argument is required when initializing a full widget instance.' );
    }

    add_action( 'elementor/element/before_section_start', [ $this, 'enqueue_script' ] );

    if ( $is_type_instance ) {


      if(method_exists( $this, 'register_skins')){
         $this->register_skins();
       }else{
         $this->_register_skins();
       }

      $widget_name = $this->get_name();

      /**
       * Widget skin init.
       *
       * Fires when Elementor widget is being initialized.
       *
       * The dynamic portion of the hook name, `$widget_name`, refers to the widget name.
       *
       * @since 1.0.0
       *
       * @param Widget_Base $this The current widget.
       */
      do_action( "elementor/widget/{$widget_name}/skins_init", $this );
    }
  }

  /**
   * Get widget name.
   *
   *
   * @since 1.0.0
   * @access public
   *
   * @return string Widget name.
   */
  public function get_name() {
    return 'gum_posts_grid';
  }

  /**
   * Get widget title.
   *
   *
   * @since 1.0.0
   * @access public
   *
   * @return string Widget title.
   */
  public function get_title() {

    return esc_html__( 'Blog Grid', 'gum-elementor-addon' );
  }

  /**
   * Get widget icon.
   *
   *
   * @since 1.0.0
   * @access public
   *
   * @return string Widget icon.
   */
  public function get_icon() {
    return 'fas fa-xs fa-grip-vertical';
  }

  public function get_keywords() {
    return [ 'wordpress', 'widget', 'post', 'recent', 'blog' ];
  }

  /**
   * Get widget categories.
   *
   *
   * @since 1.0.0
   * @access public
   *
   * @return array Widget categories.
   */
  public function get_categories() {
    return [ 'temegum_blog' ];
  }

  protected function _register_controls() {

    $this->start_controls_section(
      'section_title',
      [
        'label' => esc_html__( 'Layout', 'gum-elementor-addon' ),
      ]
    );

    $this->add_responsive_control(
      'grid_layout',
      [
        'label' => esc_html__( 'Layout', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          '1' => esc_html__( 'One Column', 'gum-elementor-addon' ),
          '2' => esc_html__( 'Two Column', 'gum-elementor-addon' ),
          '3' => esc_html__( 'Three Column', 'gum-elementor-addon' ),
          '4' => esc_html__( 'Four Column', 'gum-elementor-addon' ),
        ],
        'default' => '3',
        'mobile_default' => '1',
        'prefix_class' => 'post-grid-col%s-',
      ]
    );


  $this->add_control(
    'show_image',
    [
      'label' => esc_html__( 'Show Featured Image', 'gum-elementor-addon' ),
      'type' => Controls_Manager::SWITCHER,
      'label_off' => esc_html__( 'No', 'gum-elementor-addon' ),
      'label_on' => esc_html__( 'Yes', 'gum-elementor-addon' ),
      'default' => 'yes',
    ]
  );

    $this->add_control(
      'image_position',
      [
        'label' => esc_html__( 'Image Position', 'gum-elementor-addon' ),
        'type' => Controls_Manager::CHOOSE,
        'options' => [
          'left' => [
            'title' => esc_html__( 'Left', 'gum-elementor-addon' ),
            'icon' => 'eicon-h-align-left',
          ],
          'top' => [
            'title' => esc_html__( 'Top', 'gum-elementor-addon' ),
            'icon' => 'eicon-v-align-top',
          ],
          'right' => [
            'title' => esc_html__( 'Right', 'gum-elementor-addon' ),
            'icon' => 'eicon-h-align-right',
          ],
        ],
        'default' => 'top',
        'condition' => [
          'show_image' => 'yes',
        ],
      ]
    );

  $this->add_control(
    'image_totop',
    [
      'label' => esc_html__( 'Ignore on Mobile', 'gum-elementor-addon' ),
      'type' => Controls_Manager::SWITCHER,
      'label_off' => esc_html__( 'No', 'gum-elementor-addon' ),
      'label_on' => esc_html__( 'Yes', 'gum-elementor-addon' ),
      'default' => 'yes',
      'description' => esc_html__( 'Image changed to top on mobile', 'gum-elementor-addon' ),
      'condition' => [
        'image_position!' => 'top',
        'show_image' => 'yes',
      ],
    ]
  );

    $this->add_group_control(
      Group_Control_Image_Size::get_type(),
      [
        'name' => 'thumbnail', 
        'default' => 'medium',
        'condition' => [
          'show_image' => 'yes',
        ],
      ]
    );

    $this->add_control(
      'tag',
      [
        'label' => esc_html__( 'Title HTML Tag', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          'h2' => 'H2',
          'h3' => 'H3',
          'h4' => 'H4',
          'h5' => 'H5',
          'h6' => 'H6',
          'div' => 'div',
        ],
        'default' => 'h4',
        'separator' => 'before',
      ]
    );

  $this->add_control(
    'title_position',
    [
      'label' => esc_html__( 'Title Position', 'gum-elementor-addon' ),
      'type' => Controls_Manager::SELECT,
      'options' => [
        'content' => esc_html__( 'Content Box', 'gum-elementor-addon' ),
        'before' => esc_html__( 'Before Image', 'gum-elementor-addon' ),
        'after' => esc_html__( 'After Image', 'gum-elementor-addon' ),
      ],
      'default' => 'content',
      'condition' => [
        'show_image' => 'yes',
      ],
    ]
  );


 $this->add_control(
    'post_title_word',
    [
      'label'     => esc_html__( 'Word Count', 'gum-elementor-addon' ),
      'type'      => Controls_Manager::NUMBER,
      'default'   => '',
    ]
  );

 $this->add_control(
    'post_title_sufix',
    [
      'label'     => esc_html__( 'Suffix', 'gum-elementor-addon' ),
      'type'      => Controls_Manager::TEXT,
      'default'   => '',
      'ai' => [
        'active' => false,
      ],
      'condition' => [
        'post_title_word!' => ''
      ],
    ]
  );   

  $this->add_control(
    'show_excerpt',
    [
      'label' => esc_html__( 'Show Post Excerpt', 'gum-elementor-addon' ),
      'type' => Controls_Manager::SWITCHER,
      'label_off' => esc_html__( 'No', 'gum-elementor-addon' ),
      'label_on' => esc_html__( 'Yes', 'gum-elementor-addon' ),
      'default' => 'yes',
      'separator' => 'before'
    ]
  );

   $this->add_control(
      'post_content_word',
      [
        'label'     => esc_html__( 'Word Count', 'gum-elementor-addon' ),
        'type'      => Controls_Manager::NUMBER,
        'default'   => '',
        'condition' => [
          'show_excerpt' => 'yes',
        ],
      ]
    );

   $this->add_control(
      'post_content_sufix',
      [
        'label'     => esc_html__( 'Suffix', 'gum-elementor-addon' ),
        'type'      => Controls_Manager::TEXT,
        'default'   => '',
        'ai' => [
          'active' => false,
        ],
        'condition' => [
          'show_excerpt' => 'yes',
          'post_content_word!' => ''
        ],
      ]
    );   

    $this->add_control(
      'show_readmore',
      [
        'label' => esc_html__( 'Show Readmore', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SWITCHER,
        'label_off' => esc_html__( 'No', 'gum-elementor-addon' ),
        'label_on' => esc_html__( 'Yes', 'gum-elementor-addon' ),
        'default' => 'yes',
        'separator' => 'before'
      ]
    );

    $this->add_control(
      'readmore_label',
      [
        'label' => esc_html__( 'Label', 'gum-elementor-addon' ),
        'type' => Controls_Manager::TEXT,
        'default' => esc_html__( 'Readmore', 'gum-elementor-addon' ),
        'label_block' => true,
        'ai' => [
          'active' => false,
        ],
        'condition' => [
          'show_readmore' => 'yes',
        ],

      ]
    );

    $this->add_control(
      'readmore_icon',
      [
        'label' => esc_html__( 'Icon', 'gum-elementor-addon' ),
        'type' => Controls_Manager::ICONS,
        'fa4compatibility' => 'icon',
        'condition' => [
          'show_readmore' => 'yes',
        ],

      ]
    );

    $this->add_control(
      'readmore_icon_align',
      [
        'label' => esc_html__( 'Icon Position', 'gum-elementor-addon' ),
        'type' => Controls_Manager::CHOOSE,
        'options' => [
          'row' => [
            'title' => esc_html__( 'Left', 'gum-elementor-addon' ),
            'icon' => 'eicon-h-align-left',
          ],
          'row-reverse' => [
            'title' => esc_html__( 'Right', 'gum-elementor-addon' ),
            'icon' => 'eicon-h-align-right',
          ],
        ],
        'condition' => [
          'show_readmore' => 'yes',
          'readmore_icon[value]!' => '',
        ],
        'selectors' => [
            '{{WRAPPER}} .elementor-button-content-wrapper' => 'flex-direction: {{VALUE}};'
        ],
      ]
    );

    $this->add_control(
      'readmore_icon_indent',
      [
        'label' => esc_html__( 'Icon Spacing', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'max' => 100,
          ],
        ],
        'default' =>['value'=>5, 'unit'=>'px'],
        'selectors' => [
          '{{WRAPPER}} .elementor-button .elementor-align-icon-right' => 'margin-left: {{SIZE}}{{UNIT}};margin-right:0;',
          '{{WRAPPER}} .elementor-button .elementor-align-icon-left' => 'margin-right: {{SIZE}}{{UNIT}};margin-left: 0;',
          '{{WRAPPER}} .elementor-button .elementor-button-content-wrapper' => 'gap:{{SIZE}}{{UNIT}};'
        ],
        'condition' => ['show_readmore!' => '','readmore_label!' => '','readmore_icon[value]!' => ''],
      ]
    );

    $this->add_control(
      'show_meta',
      [
        'label' => esc_html__( 'Show Meta', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SWITCHER,
        'label_off' => esc_html__( 'No', 'gum-elementor-addon' ),
        'label_on' => esc_html__( 'Yes', 'gum-elementor-addon' ),
        'default' => 'yes',
        'separator' => 'before'
      ]
    );

   $this->end_controls_section();

    $this->start_controls_section(
      'meta_layout',
      [
        'label' => esc_html__( 'Meta', 'gum-elementor-addon' ),
        'condition' => [
          'show_meta!' => ''
        ],
      ]
    );    


    $this->add_control(
      'date_meta',
      [
        'label' => esc_html__( 'Date', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          '' => esc_html__( 'None', 'gum-elementor-addon' ),
          'before' => esc_html__( 'Before Image', 'gum-elementor-addon' ),
          'after' => esc_html__( 'After Image', 'gum-elementor-addon' ),
          'top' => esc_html__( 'Before Title', 'gum-elementor-addon' ),
          'mid' => esc_html__( 'After Title', 'gum-elementor-addon' ),
          'content' => esc_html__( 'Content Box', 'gum-elementor-addon' ),
          'bottom' => esc_html__( 'Bottom', 'gum-elementor-addon' ),
        ],
        'default' => 'mid',
      ]
    );

    $this->add_control(
      'date_meta_icon',
      [
        'label' => esc_html__( 'Icon', 'gum-elementor-addon' ),
        'type' => Controls_Manager::ICONS,
        'fa4compatibility' => 'icon',
        'condition' => [
          'date_meta!' => ''
        ],

      ]
    );


    $this->add_control(
      'author_meta',
      [
        'label' => esc_html__( 'Author', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          '' => esc_html__( 'None', 'gum-elementor-addon' ),
          'before' => esc_html__( 'Before Image', 'gum-elementor-addon' ),
          'after' => esc_html__( 'After Image', 'gum-elementor-addon' ),
          'top' => esc_html__( 'Before Title', 'gum-elementor-addon' ),
          'mid' => esc_html__( 'After Title', 'gum-elementor-addon' ),
          'content' => esc_html__( 'Content Box', 'gum-elementor-addon' ),
          'bottom' => esc_html__( 'Bottom', 'gum-elementor-addon' ),
        ],
        'default' => 'mid',
        'separator' => 'before'
      ]
    );


    $this->add_control(
      'author_meta_avatar',
      [
        'label' => esc_html__( 'Show Avatar', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SWITCHER,
        'label_off' => esc_html__( 'No', 'gum-elementor-addon' ),
        'label_on' => esc_html__( 'Yes', 'gum-elementor-addon' ),
        'default' => 'no',
        'condition' => [
          'author_meta!' => ''
        ],
      ]
    );


    $this->add_control(
      'author_avatar_position',
      [
        'label' => esc_html__( 'Position', 'gum-elementor-addon' ),
        'type' => Controls_Manager::CHOOSE,
        'options' => [
          'left' => [
            'title' => esc_html__( 'Left', 'gum-elementor-addon' ),
            'icon' => 'eicon-h-align-left',
          ],
          'top' => [
            'title' => esc_html__( 'Top', 'gum-elementor-addon' ),
            'icon' => 'eicon-v-align-top',
          ],
          'right' => [
            'title' => esc_html__( 'Right', 'gum-elementor-addon' ),
            'icon' => 'eicon-h-align-right',
          ],
        ],
        'default' => 'left',
        'prefix_class' => 'author_meta_avatar_position-',
        'condition' => [
          'author_meta!' => '',
          'author_meta_avatar' => 'yes',
        ],
      ]
    );

    $this->add_control(
      'author_meta_icon',
      [
        'label' => esc_html__( 'Icon', 'gum-elementor-addon' ),
        'type' => Controls_Manager::ICONS,
        'fa4compatibility' => 'icon',
        'condition' => [
          'author_meta!' => ''
        ],
      ]
    );


    $this->add_control(
      'category_meta',
      [
        'label' => esc_html__( 'Category', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          '' => esc_html__( 'None', 'gum-elementor-addon' ),
          'before' => esc_html__( 'Before Image', 'gum-elementor-addon' ),
          'after' => esc_html__( 'After Image', 'gum-elementor-addon' ),
          'top' => esc_html__( 'Before Title', 'gum-elementor-addon' ),
          'mid' => esc_html__( 'After Title', 'gum-elementor-addon' ),
          'content' => esc_html__( 'Content Box', 'gum-elementor-addon' ),
          'bottom' => esc_html__( 'Bottom', 'gum-elementor-addon' ),
        ],
        'default' => 'top',
        'separator' => 'before'
      ]
    );


    $this->add_control(
      'category_meta_icon',
      [
        'label' => esc_html__( 'Icon', 'gum-elementor-addon' ),
        'type' => Controls_Manager::ICONS,
        'fa4compatibility' => 'icon',
        'condition' => [
          'category_meta!' => ''
        ],
      ]
    );


    $this->add_control(
      'post_view',
      [
        'label' => esc_html__( 'Post View', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          '' => esc_html__( 'None', 'gum-elementor-addon' ),
          'before' => esc_html__( 'Before Image', 'gum-elementor-addon' ),
          'after' => esc_html__( 'After Image', 'gum-elementor-addon' ),
          'top' => esc_html__( 'Before Title', 'gum-elementor-addon' ),
          'mid' => esc_html__( 'After Title', 'gum-elementor-addon' ),
          'content' => esc_html__( 'Content Box', 'gum-elementor-addon' ),
          'bottom' => esc_html__( 'Bottom', 'gum-elementor-addon' ),
        ],
        'default' => '',
        'separator' => 'before'
      ]
    );


    $this->add_control(
      'post_view_icon',
      [
        'label' => esc_html__( 'Icon', 'gum-elementor-addon' ),
        'type' => Controls_Manager::ICONS,
        'fa4compatibility' => 'icon',
        'condition' => [
          'post_view!' => ''
        ],
      ]
    );



    $this->add_control(
      'reading_time',
      [
        'label' => esc_html__( 'Reading Timer', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          '' => esc_html__( 'None', 'gum-elementor-addon' ),
          'before' => esc_html__( 'Before Image', 'gum-elementor-addon' ),
          'after' => esc_html__( 'After Image', 'gum-elementor-addon' ),
          'top' => esc_html__( 'Before Title', 'gum-elementor-addon' ),
          'mid' => esc_html__( 'After Title', 'gum-elementor-addon' ),
          'content' => esc_html__( 'Content Box', 'gum-elementor-addon' ),
          'bottom' => esc_html__( 'Bottom', 'gum-elementor-addon' ),
        ],
        'default' => '',
        'separator' => 'before'
      ]
    );


    $this->add_control(
      'reading_speed',
      [
        'label' => esc_html__( 'Speed', 'gum-elementor-addon' ),
        'description' => esc_html__( 'Reading speed in word per minute', 'gum-elementor-addon' ),
        'type' => Controls_Manager::TEXT,
        'default' => '200',
        'ai' => [
          'active' => false,
        ],
        'dynamic' => [
          'active' => false,
        ],
        'condition' => [
          'reading_time!' => ''
        ],
      ]
    );



    $this->add_control(
      'reading_time_icon',
      [
        'label' => esc_html__( 'Icon', 'gum-elementor-addon' ),
        'type' => Controls_Manager::ICONS,
        'fa4compatibility' => 'icon',
        'condition' => [
          'reading_time!' => ''
        ],
      ]
    );


    $this->add_control(
      'meta_divider',
      [
        'label' => esc_html__( 'Divider', 'gum-elementor-addon' ),
        'type' => Controls_Manager::CHOOSE,
        'default' => '',
        'options' => [
          '' => [
            'title' => esc_html__( 'None', 'gum-elementor-addon' ),
            'icon' => 'eicon-ban',
          ],
          'text' => [
            'title' => esc_html__( 'Text', 'gum-elementor-addon' ),
            'icon' => 'eicon-t-letter-bold',
          ],
          'icon' => [
            'title' => esc_html__( 'Icon', 'gum-elementor-addon' ),
            'icon' => 'eicon-star',
          ],
        ],
        'prefix_class' => 'elementor-post-meta-divider-',
        'toggle' => false,
        'separator' => 'before'
      ]
    );

    $this->add_control(
      'divider_text',
      [
        'label' => esc_html__( 'Text', 'gum-elementor-addon' ),
        'type' => Controls_Manager::TEXT,
        'condition' => [
          'meta_divider' => 'text',
        ],
        'default' => '-',
        'ai' => [
          'active' => false,
        ],
        'dynamic' => [
          'active' => false,
        ],
      ]
    );


    $this->add_control(
      'divider_icon',
      [
        'label' => esc_html__( 'Icon', 'gum-elementor-addon' ),
        'type' => Controls_Manager::ICONS,
        'default' => [
          'value' => 'fas fa-caret-right',
          'library' => 'fa-solid',
        ],
        'condition' => [
          'meta_divider' => 'icon',
        ],
      ]
    );

    $this->end_controls_section();

    $this->start_controls_section(
      'section_data',
      [
        'label' => esc_html__( 'Query', 'gum-elementor-addon' ),
      ]
    );

    $this->add_control(
      'filter_by',
      [
        'label' => esc_html__( 'Selection', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          '' => esc_html__( 'Select All', 'gum-elementor-addon' ),
          'category' => esc_html__( 'By Category', 'gum-elementor-addon' ),
          'tag' => esc_html__( 'By Tag', 'gum-elementor-addon' ),
          'ids' => esc_html__( 'By IDs', 'gum-elementor-addon' ),
          'sticky' => esc_html__( 'Sticky Only', 'gum-elementor-addon' )
        ],
        'default' => ''
      ]
    );


    $categories_options = array(
       ''=> esc_html__( 'Select Category', 'gum-elementor-addon' ),
     );

   $categories_args = array(
            'orderby' => 'name',
            'show_count' => 0,
            'pad_counts' => 0,
            'hierarchical' => 0,
    );


    $categories=get_categories($categories_args);

    if(count($categories)){

        foreach ( $categories as $category ) {
          $categories_options[$category->term_id] = $category->name;
        }

     }

    $this->add_control(
      'cat_ids',
      [
        'label' => esc_html__( 'By Category', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SELECT,
        'options' => $categories_options,
        'default' => '',
        'condition' => [
          'filter_by' => 'category'
        ],
      ]
    );


    $tags_options = array(
       ''=> esc_html__( 'Select Tag', 'gum-elementor-addon' ),
     );

   $tags_args = array(
            'orderby' => 'name',
            'show_count' => 0,
            'pad_counts' => 0,
            'hierarchical' => 0,
    );


    $tags=get_tags($tags_args);

    if(count($tags)){

        foreach ( $tags as $term ) {
          $tags_options[$term->term_id] = $term->name;
        }

     }

    $this->add_control(
      'tags_ids',
      [
        'label' => esc_html__( 'By Tags', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SELECT,
        'options' => $tags_options,
        'default' => '',
        'condition' => [
          'filter_by' => 'tag'
        ],
      ]
    );

    $this->add_control(
      'posts_ids',
      [
        'label' => esc_html__( 'Post ID', 'gum-elementor-addon' ),
        'type' => Controls_Manager::TEXT,
        'default' => '',
        'description' => esc_html__( 'Type post IDs. Seperated by comma', 'gum-elementor-addon' ),
        'label_block' => true,
        'ai' => [
          'active' => false,
        ],
        'condition' => [
          'filter_by' => 'ids'
        ],
      ]
    );


    $this->add_control(
      'posts_per_page',
      [
        'label' => esc_html__( 'Post Per Page', 'gum-elementor-addon' ),
        'type' => Controls_Manager::NUMBER,
        'min' => 1,
        'max' => 100,
        'step' => 1,
        'default'=>get_option('posts_per_page')
      ]
    );


    $this->add_control(
      'posts_offset',
      [
        'label' => esc_html__( 'Post Offset', 'gum-elementor-addon' ),
        'type' => Controls_Manager::NUMBER,
        'min' => 1,
        'max' => 1000,
        'step' => 1,
        'default'=> 0
      ]
    );


    $this->add_control(
      'source_filter_heading',
      [
        'label' => esc_html__( 'Filter', 'gum-elementor-addon' ),
        'type' => Controls_Manager::HEADING,
        'separator' => 'before'
      ]
    );

    $this->add_control(
      'is_featured_image',
      [
        'label' => esc_html__( 'Featured Image Only', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SWITCHER,
        'label_off' => esc_html__( 'No', 'gum-elementor-addon' ),
        'label_on' => esc_html__( 'Yes', 'gum-elementor-addon' ),
        'default' => '',
      ]
    );


    $this->add_control(
      'single_exclude',
      [
        'label' => esc_html__( 'Exclude Current Post?', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SWITCHER,
        'label_off' => esc_html__( 'No', 'gum-elementor-addon' ),
        'label_on' => esc_html__( 'Yes', 'gum-elementor-addon' ),
        'default' => 'yes',
        'description' => esc_html__( 'Select yes if current active post not showing in the listing.', 'gum-elementor-addon' ),
      ]
    );


    $this->add_control(
      'skip_previous',
      [
        'label' => esc_html__( 'Exclude Previous Post', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SWITCHER,
        'label_off' => esc_html__( 'No', 'gum-elementor-addon' ),
        'label_on' => esc_html__( 'Yes', 'gum-elementor-addon' ),
        'default' => '',
        'description' => esc_html__( 'Exclude post from previous module', 'gum-elementor-addon' ),
      ]
    );


    $this->end_controls_section();

    $this->start_controls_section(
      'section_pagination',
      [
        'label' => esc_html__( 'Pagination', 'gum-elementor-addon' ),
      ]
    );

    $this->add_control(
      'show_pagination',
      [
        'label' => esc_html__( 'Enable', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SWITCHER,
        'label_off' => esc_html__( 'No', 'gum-elementor-addon' ),
        'label_on' => esc_html__( 'Yes', 'gum-elementor-addon' ),
        'default' => 'yes',
      ]
    );

    $this->add_control(
      'pagination_align',
      [
        'label' => esc_html__( 'Align', 'gum-elementor-addon' ),
        'type' => Controls_Manager::CHOOSE,
        'options' => [
          'left' => [
            'title' => esc_html__( 'Left', 'gum-elementor-addon' ),
            'icon' => 'eicon-h-align-left',
          ],
          'center' => [
            'title' => esc_html__( 'Center', 'gum-elementor-addon' ),
            'icon' => 'eicon-h-align-center',
          ],
          'justify' => [
            'title' => esc_html__( 'Full Width', 'gum-elementor-addon' ),
            'icon' => 'eicon-h-align-stretch',
          ],
          'right' => [
            'title' => esc_html__( 'Right', 'gum-elementor-addon' ),
            'icon' => 'eicon-h-align-right',
          ],
        ],
        'default' => 'center',
        'prefix_class' => 'pagination-',
        'condition' => ['show_pagination!' => '']
      ]
    );

    $this->add_control(
      'pagination_type',
      [
        'label' => esc_html__( 'Layout', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          'paging' => esc_html__( 'Paging', 'gum-elementor-addon' ),
          'arrow' => esc_html__( 'Previous / Next', 'gum-elementor-addon' ),
        ],
        'default' => 'paging',
        'condition' => [
          'show_pagination!' => ''
        ],
      ]
    );


    $this->add_control(
      'pagination_baseurl',
      [
        'label' => esc_html__( 'Base URL', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          '' => esc_html__( 'This Page ( default )', 'gum-elementor-addon' ),
          'blog' => esc_html__( 'Blog Page', 'gum-elementor-addon' ),
          'custom' => esc_html__( 'Custom', 'gum-elementor-addon' ),
        ],
        'default' => '',
        'condition' => [
          'show_pagination!' => ''
        ],
      ]
    );


    $this->add_control(
      'custom_baseurl',
      [
        'label' => esc_html__( 'Link', 'gum-elementor-addon' ),
        'type' => Controls_Manager::URL,
        'dynamic' => [
          'active' => true,
        ],
        'default' => [
          'url' => '',
        ],
        'description' => esc_html__( 'Select the page url for next page.', 'gum-elementor-addon' ),
        'condition' => ['show_pagination!' => '', 'pagination_baseurl' => 'custom']
      ]
    );



    $this->end_controls_section();


/*
 * style params
 */

    $this->start_controls_section(
      'post_grid_style',
      [
        'label' => esc_html__( 'Grid Style', 'gum-elementor-addon' ),
        'tab'   => Controls_Manager::TAB_STYLE,
      ]
    );    


    $this->add_responsive_control(
      'post_grid_height',
      [
        'label' => esc_html__( 'Min Height', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'max' => 1000,
            'step' => 5,
            'min' => 50,
          ],
          'vh' => [
            'max' => 100,
            'step' => 1,
            'min' => 10,
          ],

        ],  
        'default'=>['size'=>'','unit'=>'px'],
        'size_units' => [ 'px' ,'vh' ],
        'selectors' => [
          '{{WRAPPER}} article' => 'min-height: {{SIZE}}{{UNIT}};',
        ],
      ]
    );

    $this->add_responsive_control(
      'post_grid_gutter',
      [
        'label' => esc_html__( 'Horizontal Gutter', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
         'px' => [
            'max' => 1000,
          ],
        ],  
        'default'=>['size'=>'30','unit'=>'px'],
        'size_units' => [ 'px' ],
        'selectors' => [
          '{{WRAPPER}} .grid-posts .grid-post:not(.grid-col-1)' => 'padding-left: calc({{SIZE}}{{UNIT}}/2);padding-right: calc({{SIZE}}{{UNIT}}/2);',
          '{{WRAPPER}} .grid-posts .grid-post' => 'padding-bottom: {{SIZE}}{{UNIT}};',
        ]
       ]
    );


    $this->add_responsive_control(
      'post_grid_vgutter',
      [
        'label' => esc_html__( 'Vertical Gutter', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
         'px' => [
            'max' => 1000,
          ],
        ],  
        'default'=>  array(),
        'size_units' => [ 'px' ],
        'selectors' => [
          '{{WRAPPER}} .grid-posts .grid-post' => 'padding-bottom: {{SIZE}}{{UNIT}};',
          '{{WRAPPER}} .grid-posts' => 'margin-bottom: -{{SIZE}}{{UNIT}};',
        ]
       ]
    );


    $this->add_responsive_control(
      'post_grid_padding',
      [
          'label' => esc_html__( 'Padding', 'gum-elementor-addon' ),
          'type' => Controls_Manager::DIMENSIONS,
          'size_units' => [ 'px', '%', 'em' ],
          'selectors' => [
              '{{WRAPPER}} .grid-posts .grid-post article' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
          ],
      ]
    );

    
    $this->add_group_control(
     Group_Control_Border::get_type(),
      [
        'name' => 'post_grid_border',
        'selector' => '{{WRAPPER}} .grid-posts .grid-post article',
      ]
    );

    $this->add_control(
      'post_grid_radius',
      [
        'label' => esc_html__( 'Border Radius', 'gum-elementor-addon' ),
        'type' => Controls_Manager::DIMENSIONS,
        'size_units' => [ 'px', '%' ],
        'selectors' => [
          '{{WRAPPER}} .grid-posts .grid-post article' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
        ],
      ]
    );




   $this->start_controls_tabs( 'post_grid_tabs', [] );

   $this->start_controls_tab(
       'post_grid_tab_normal',
       [
           'label' =>esc_html__( 'Normal', 'gum-elementor-addon' ),
       ]
   );


    $background_options =  $this->grid_background_types();

    $this->add_control(
      'post_grid_background_type',
      [
        'label' => esc_html__( 'Background Type', 'elementor' ),
        'type' => Controls_Manager::CHOOSE,
        'render_type' => 'ui',
        'options'=> $background_options,
        'default' => 'classic',
      ]
    );

    $this->add_control(
      'post_grid_background',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .grid-posts .grid-post article' => 'background-color: {{VALUE}};',
        ],
        'condition' => [
          'post_grid_background_type!' => '',
        ],
      ]
    );

    $this->add_control(
      'post_grid_color_stop',
      [
        'label' => esc_html__( 'Location', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'size_units' => [ '%', 'custom' ],
        'default' => [
          'unit' => '%',
          'size' => 0,
        ],
        'range' => [
          '%' => [
            'min' => -100,
            'max' => 200,
          ],
        ],
        'render_type' => 'ui',
        'condition' => [
          'post_grid_background_type' => [ 'gradient' ],
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'post_grid_color_b',
      [
        'label' => esc_html__( 'Second Color', 'elementor' ),
        'type' => Controls_Manager::COLOR,
        'default' => '#f2295b',
        'render_type' => 'ui',
        'condition' => [
          'post_grid_background_type' => [ 'gradient' ],
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'post_grid_color_b_stop',
      [
        'label' => esc_html__( 'Location', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'size_units' => [ '%', 'custom' ],
        'default' => [
          'unit' => '%',
          'size' => 100,
        ],
        'range' => [
          '%' => [
            'min' => -100,
            'max' => 200,
          ],
        ],
        'render_type' => 'ui',
        'condition' => [
          'post_grid_background_type' => [ 'gradient' ],
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'post_grid_gradient_type',
      [
        'label' => esc_html__( 'Type', 'elementor' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          'linear' => esc_html__( 'Linear', 'elementor' ),
          'radial' => esc_html__( 'Radial', 'elementor' ),
        ],
        'default' => 'linear',
        'render_type' => 'ui',
        'condition' => [
          'post_grid_background_type' => [ 'gradient' ],
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'post_grid_gradient_angle',
      [
        'label' => esc_html__( 'Angle', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'size_units' => [ 'deg', 'grad', 'rad', 'turn', 'custom' ],
        'default' => [
          'unit' => 'deg',
          'size' => 180,
        ],
        'selectors' => [
          '{{WRAPPER}} .grid-posts .grid-post article' => 'background-color: transparent; background-image: linear-gradient({{SIZE}}{{UNIT}}, {{post_grid_background.VALUE}} {{post_grid_color_stop.SIZE}}{{post_grid_color_stop.UNIT}}, {{post_grid_color_b.VALUE}} {{post_grid_color_b_stop.SIZE}}{{post_grid_color_b_stop.UNIT}})',
        ],
        'condition' => [
          'post_grid_background_type' => [ 'gradient' ],
          'post_grid_gradient_type' => 'linear',
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'post_grid_gradient_position',
      [
        'label' => esc_html__( 'Position', 'elementor' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          'center center' => esc_html__( 'Center Center', 'elementor' ),
          'center left' => esc_html__( 'Center Left', 'elementor' ),
          'center right' => esc_html__( 'Center Right', 'elementor' ),
          'top center' => esc_html__( 'Top Center', 'elementor' ),
          'top left' => esc_html__( 'Top Left', 'elementor' ),
          'top right' => esc_html__( 'Top Right', 'elementor' ),
          'bottom center' => esc_html__( 'Bottom Center', 'elementor' ),
          'bottom left' => esc_html__( 'Bottom Left', 'elementor' ),
          'bottom right' => esc_html__( 'Bottom Right', 'elementor' ),
        ],
        'default' => 'center center',
        'selectors' => [
          '{{WRAPPER}} .grid-posts .grid-post article' => 'background-color: transparent; background-image: radial-gradient(at {{VALUE}}, {{post_grid_background.VALUE}} {{post_grid_color_stop.SIZE}}{{post_grid_color_stop.UNIT}}, {{post_grid_color_b.VALUE}} {{post_grid_color_b_stop.SIZE}}{{post_grid_color_b_stop.UNIT}})',
        ],
        'condition' => [
          'post_grid_background_type' => [ 'gradient' ],
          'post_grid_gradient_type' => 'radial',
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_group_control(
      Group_Control_Box_Shadow::get_type(),
      [
        'name' => 'post_grid_shadow',
        'selector' => '{{WRAPPER}} .grid-posts .grid-post article',
      ]
    );


   $this->end_controls_tab();

   $this->start_controls_tab(
       'post_grid_tab_hover',
       [
           'label' => esc_html__( 'Hover', 'gum-elementor-addon' ),
       ]
   );

    $this->add_control(
      'post_grid_bdhover',
      [
        'label' => esc_html__( 'Border Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .grid-posts .grid-post article:hover' => 'border-color: {{VALUE}};',
        ],
        'condition' => [
          'post_grid_border_border!' => ''
        ],
      ]
    );

    $this->add_control(
      'post_grid_bghover_type',
      [
        'label' => esc_html__( 'Background Type', 'elementor' ),
        'type' => Controls_Manager::CHOOSE,
        'render_type' => 'ui',
        'options'=> $background_options,
        'default' => 'classic',
      ]
    );

    $this->add_control(
      'post_grid_bghover',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .grid-posts .grid-post article:hover' => 'background-color: {{VALUE}};background-image: none;',
        ],
        'condition' => [
          'post_grid_bghover_type!' => '',
        ],
      ]
    );

   $this->add_control(
      'post_grid_bghover_stop',
      [
        'label' => esc_html__( 'Location', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'size_units' => [ '%', 'custom' ],
        'default' => [
          'unit' => '%',
          'size' => 0,
        ],
        'range' => [
          '%' => [
            'min' => -100,
            'max' => 200,
          ],
        ],
        'render_type' => 'ui',
        'condition' => [
          'post_grid_bghover_type' => [ 'gradient' ],
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'post_grid_bghover_color_b',
      [
        'label' => esc_html__( 'Second Color', 'elementor' ),
        'type' => Controls_Manager::COLOR,
        'default' => '#f2295b',
        'render_type' => 'ui',
        'condition' => [
          'post_grid_bghover_type' => [ 'gradient' ],
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'post_grid_bghover_b_stop',
      [
        'label' => esc_html__( 'Location', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'size_units' => [ '%', 'custom' ],
        'default' => [
          'unit' => '%',
          'size' => 100,
        ],
        'range' => [
          '%' => [
            'min' => -100,
            'max' => 200,
          ],
        ],
        'render_type' => 'ui',
        'condition' => [
          'post_grid_bghover_type' => [ 'gradient' ],
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'post_grid_bghover_gradient_type',
      [
        'label' => esc_html__( 'Type', 'elementor' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          'linear' => esc_html__( 'Linear', 'elementor' ),
          'radial' => esc_html__( 'Radial', 'elementor' ),
        ],
        'default' => 'linear',
        'render_type' => 'ui',
        'condition' => [
          'post_grid_bghover_type' => [ 'gradient' ],
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'post_grid_bghover_gradient_angle',
      [
        'label' => esc_html__( 'Angle', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'size_units' => [ 'deg', 'grad', 'rad', 'turn', 'custom' ],
        'default' => [
          'unit' => 'deg',
          'size' => 180,
        ],
        'selectors' => [
          '{{WRAPPER}} .grid-posts .grid-post article:hover' => 'background-color: transparent; background-image: linear-gradient({{SIZE}}{{UNIT}}, {{post_grid_bghover.VALUE}} {{post_grid_bghover_stop.SIZE}}{{post_grid_bghover_stop.UNIT}}, {{post_grid_bghover_color_b.VALUE}} {{post_grid_bghover_b_stop.SIZE}}{{post_grid_bghover_b_stop.UNIT}});',
        ],
        'condition' => [
          'post_grid_bghover_type' => [ 'gradient' ],
          'post_grid_bghover_gradient_type' => 'linear',
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'post_grid_bghover_gradient_position',
      [
        'label' => esc_html__( 'Position', 'elementor' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          'center center' => esc_html__( 'Center Center', 'elementor' ),
          'center left' => esc_html__( 'Center Left', 'elementor' ),
          'center right' => esc_html__( 'Center Right', 'elementor' ),
          'top center' => esc_html__( 'Top Center', 'elementor' ),
          'top left' => esc_html__( 'Top Left', 'elementor' ),
          'top right' => esc_html__( 'Top Right', 'elementor' ),
          'bottom center' => esc_html__( 'Bottom Center', 'elementor' ),
          'bottom left' => esc_html__( 'Bottom Left', 'elementor' ),
          'bottom right' => esc_html__( 'Bottom Right', 'elementor' ),
        ],
        'default' => 'center center',
        'selectors' => [
          '{{WRAPPER}} .grid-posts .grid-post article:hover' => 'background-color: transparent; background-image: radial-gradient(at {{VALUE}}, {{post_grid_bghover.VALUE}} {{post_grid_bghover_stop.SIZE}}{{post_grid_bghover_stop.UNIT}}, {{post_grid_bghover_color_b.VALUE}} {{post_grid_bghover_b_stop.SIZE}}{{post_grid_bghover_b_stop.UNIT}})',
        ],
        'condition' => [
          'post_grid_bghover_type' => [ 'gradient' ],
          'post_grid_bghover_gradient_type' => 'radial',
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_group_control(
      Group_Control_Box_Shadow::get_type(),
      [
        'name' => 'post_grid_hover_shadow',
        'selector' => '{{WRAPPER}} .grid-posts .grid-post article:hover',
      ]
    );


    $this->add_control(
      'post_grid_hover_transition',
      [
        'label' => esc_html__( 'Transition Duration', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'default' => [
          'size' => 0.3,
        ],
        'range' => [
          'px' => [
            'max' => 3,
            'step' => 0.1,
          ],
        ],
        'render_type' => 'ui',
        'separator' => 'before',
        'selectors' => [
          '{{WRAPPER}} .grid-posts .grid-post article' => 'transition: background {{SIZE}}s'
        ],
      ]
    );

   $this->end_controls_tab();
   $this->end_controls_tabs();


    $this->end_controls_section();

    $this->start_controls_section(
      'post_list_image',
      [
        'label' => esc_html__( 'Image Box', 'gum-elementor-addon' ),
        'tab'   => Controls_Manager::TAB_STYLE,
        'condition' => [
          'show_image' => 'yes',
        ],
      ]
    );    

    $this->add_responsive_control(
      'post_image_height',
      [
        'label' => esc_html__( 'Height', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'max' => 1000,
            'step' => 5,
            'min' => 50,
          ],
          'vh' => [
            'max' => 100,
            'step' => 1,
            'min' => 10,
          ],

        ],  
        'default'=>['size'=>'','unit'=>'px'],
        'size_units' => [ 'px' ,'vh' ],
        'selectors' => [
          '{{WRAPPER}} article .blog-image' => 'height: {{SIZE}}{{UNIT}};',
          '{{WRAPPER}} article .blog-image img' => 'height: {{SIZE}}{{UNIT}};',
        ],
        'condition' => [
          'image_position' => 'top'
        ],
      ]
    );

    $this->add_responsive_control(
      'post_image_mobileheight',
      [
        'label' => esc_html__( 'Height', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'max' => 1000,
            'step' => 5,
            'min' => 50,
          ],
          'vh' => [
            'max' => 100,
            'step' => 1,
            'min' => 10,
          ],

        ],  
        'default'=>['size'=>'','unit'=>'px'],
        'devices' => ['mobile'],
        'size_units' => [ 'px' ,'vh' ],
        'selectors' => [
          '{{WRAPPER}} article .blog-image' => 'height: {{SIZE}}{{UNIT}};',
          '{{WRAPPER}} article .blog-image img' => 'height: {{SIZE}}{{UNIT}};',
        ],
        'condition' => [
          'image_totop' => 'yes',
          'image_position!' => 'top',
        ],
      ]
    );
  
    $this->add_responsive_control(
      'post_image_width',
      [
        'label' => esc_html__( 'Width (%)', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          '%' => [
            'max' => 80,
            'step' => 5,
            'min' => 20,
          ],

        ],  
        'default'=>['size'=>50,'unit'=>'%'],
        'size_units' => [ '%' ],
        'selectors' => [
          '{{WRAPPER}} article .post-top' => 'width: {{SIZE}}%;',
          '{{WRAPPER}} article .post-top + .post-content' => 'width: calc( 100% - {{SIZE}}% );',
        ],
        'condition' => [
          'image_position!' => 'top'
        ],
      ]
    );

    $this->add_group_control(
     Group_Control_Border::get_type(),
      [
        'name' => 'post_image_border',
        'selector' => '{{WRAPPER}} article .blog-image',
      ]
    );


    $this->add_control(
      'post_image_bdhover',
      [
        'label' => esc_html__( 'Hover Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} article:hover .post-top' => 'border-color: {{VALUE}};',
        ],
        'condition' => [
          'post_image_border_border!' => ''
        ],
      ]
    );


    $this->add_control(
      'post_image_radius',
      [
        'label' => esc_html__( 'Border Radius', 'gum-elementor-addon' ),
        'type' => Controls_Manager::DIMENSIONS,
        'size_units' => [ 'px', '%' ],
        'selectors' => [
          '{{WRAPPER}} article .blog-image' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
        ],
      ]
    );


    $this->add_group_control(
      Group_Control_Box_Shadow::get_type(),
      [
        'name' => 'post_image_shadow',
        'selector' => '{{WRAPPER}} article .blog-image',
      ]
    );
    


    $this->add_responsive_control(
      'post_image_padding',
      [
          'label' => esc_html__( 'Padding', 'gum-elementor-addon' ),
          'type' => Controls_Manager::DIMENSIONS,
          'size_units' => [ 'px', '%', 'em' ],
          'selectors' => [
              '{{WRAPPER}} article .blog-image' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
          ],
          'separator' => 'before'
      ]
    );

    $this->add_responsive_control(
      'post_image_margin',
      [
          'label' => esc_html__( 'Margin', 'gum-elementor-addon' ),
          'type' => Controls_Manager::DIMENSIONS,
          'size_units' => [ 'px', '%', 'em' ],
          'selectors' => [
              '{{WRAPPER}} article .blog-image' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
          ],
      ]
    );

    $this->end_controls_section();

    $this->start_controls_section(
      'grid_content_heading',
      [
        'label' => esc_html__( 'Content Box', 'gum-elementor-addon' ),
        'tab'   => Controls_Manager::TAB_STYLE,
      ]
    );    

    $this->add_responsive_control(
      'grid_content_align',
      [
        'label' => esc_html__( 'Content Align', 'gum-elementor-addon' ),
        'type' => Controls_Manager::CHOOSE,
        'options' => [
              'left' => [
                'title' => esc_html__( 'Left', 'gum-elementor-addon' ),
                'icon' => 'eicon-text-align-left',
              ],
              'center' => [
                'title' => esc_html__( 'Center', 'gum-elementor-addon' ),
                'icon' => 'eicon-text-align-center',
              ],
              'right' => [
                'title' => esc_html__( 'Right', 'gum-elementor-addon' ),
                'icon' => 'eicon-text-align-right',
              ],
              'justify' => [
                'title' => esc_html__( 'Justify', 'gum-elementor-addon' ),
                'icon' => 'eicon-text-align-justify',
              ]
        ],
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} article .post-content' => 'text-align: {{VALUE}};',
        ],
      ]
    );

    $this->add_responsive_control(
      'grid_content_padding',
      [
          'label' => esc_html__( 'Padding', 'gum-elementor-addon' ),
          'type' => Controls_Manager::DIMENSIONS,
          'size_units' => [ 'px', '%', 'em' ],
          'selectors' => [
              '{{WRAPPER}} article .post-content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
          ],
      ]
    );

    $this->add_control(
      'grid_content_radius',
      [
        'label' => esc_html__( 'Border Radius', 'gum-elementor-addon' ),
        'type' => Controls_Manager::DIMENSIONS,
        'size_units' => [ 'px', '%' ],
        'selectors' => [
          '{{WRAPPER}} article .post-content' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
        ],
      ]
    );


    $this->add_group_control(
     Group_Control_Border::get_type(),
      [
        'name' => 'grid_content_border',
        'selector' => '{{WRAPPER}} article .post-content',
      ]
    );

   $this->start_controls_tabs( 'grid_content_tabs', [] );

   $this->start_controls_tab(
       'grid_content_normal',
       [
           'label' =>esc_html__( 'Normal', 'gum-elementor-addon' ),
       ]
   );

    $this->add_control(
      'grid_content_bgcolor_type',
      [
        'label' => esc_html_x( 'Background Type', 'Background Control', 'elementor' ),
        'type' => Controls_Manager::CHOOSE,
        'render_type' => 'ui',
        'options'=> $background_options,
        'default' => 'classic',
      ]
    );

    $this->add_control(
      'grid_content_bgcolor',
      [
        'label' => esc_html__( 'Background Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} article .post-content' => 'background-color: {{VALUE}};',
        ],
        'condition' => [
          'grid_content_bgcolor_type!' => '',
        ],
      ]
    );

    $this->add_control(
      'grid_content_bgcolor_stop',
      [
        'label' => esc_html__( 'Location', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'size_units' => [ '%', 'custom' ],
        'default' => [
          'unit' => '%',
          'size' => 0,
        ],
        'range' => [
          '%' => [
            'min' => -100,
            'max' => 200,
          ],
        ],
        'render_type' => 'ui',
        'condition' => [
          'grid_content_bgcolor_type' => [ 'gradient' ],
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'grid_content_bgcolor_b',
      [
        'label' => esc_html__( 'Second Color', 'elementor' ),
        'type' => Controls_Manager::COLOR,
        'default' => '#f2295b',
        'render_type' => 'ui',
        'condition' => [
          'grid_content_bgcolor_type' => [ 'gradient' ],
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'grid_content_bgcolor_b_stop',
      [
        'label' => esc_html__( 'Location', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'size_units' => [ '%', 'custom' ],
        'default' => [
          'unit' => '%',
          'size' => 100,
        ],
        'range' => [
          '%' => [
            'min' => -100,
            'max' => 200,
          ],
        ],
        'render_type' => 'ui',
        'condition' => [
          'grid_content_bgcolor_type' => [ 'gradient' ],
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'grid_content_bgcolor_gradient_type',
      [
        'label' => esc_html__( 'Type', 'elementor' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          'linear' => esc_html__( 'Linear', 'elementor' ),
          'radial' => esc_html__( 'Radial', 'elementor' ),
        ],
        'default' => 'linear',
        'render_type' => 'ui',
        'condition' => [
          'grid_content_bgcolor_type' => [ 'gradient' ],
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'grid_content_bgcolor_gradient_angle',
      [
        'label' => esc_html__( 'Angle', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'size_units' => [ 'deg', 'grad', 'rad', 'turn', 'custom' ],
        'default' => [
          'unit' => 'deg',
          'size' => 180,
        ],
        'selectors' => [
          '{{WRAPPER}} article .post-content' => 'background-color: transparent; background-image: linear-gradient({{SIZE}}{{UNIT}}, {{grid_content_bgcolor.VALUE}} {{grid_content_bgcolor_stop.SIZE}}{{grid_content_bgcolor_stop.UNIT}}, {{grid_content_bgcolor_b.VALUE}} {{grid_content_bgcolor_b_stop.SIZE}}{{grid_content_bgcolor_b_stop.UNIT}})',
        ],
        'condition' => [
          'grid_content_bgcolor_type' => [ 'gradient' ],
          'grid_content_bgcolor_gradient_type' => 'linear',
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'grid_content_bgcolor_gradient_position',
      [
        'label' => esc_html__( 'Position', 'elementor' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          'center center' => esc_html__( 'Center Center', 'elementor' ),
          'center left' => esc_html__( 'Center Left', 'elementor' ),
          'center right' => esc_html__( 'Center Right', 'elementor' ),
          'top center' => esc_html__( 'Top Center', 'elementor' ),
          'top left' => esc_html__( 'Top Left', 'elementor' ),
          'top right' => esc_html__( 'Top Right', 'elementor' ),
          'bottom center' => esc_html__( 'Bottom Center', 'elementor' ),
          'bottom left' => esc_html__( 'Bottom Left', 'elementor' ),
          'bottom right' => esc_html__( 'Bottom Right', 'elementor' ),
        ],
        'default' => 'center center',
        'selectors' => [
          '{{WRAPPER}} article .post-content' => 'background-color: transparent; background-image: radial-gradient(at {{VALUE}}, {{grid_content_bgcolor.VALUE}} {{grid_content_bgcolor_stop.SIZE}}{{grid_content_bgcolor_stop.UNIT}}, {{grid_content_bgcolor_b.VALUE}} {{grid_content_bgcolor_b_stop.SIZE}}{{grid_content_bgcolor_b_stop.UNIT}})',
        ],
        'condition' => [
          'grid_content_bgcolor_type' => [ 'gradient' ],
          'grid_content_bgcolor_gradient_type' => 'radial',
        ],
        'of_type' => 'gradient',
      ]
    );


   $this->end_controls_tab();

   $this->start_controls_tab(
       'grid_content_hover',
       [
           'label' => esc_html__( 'Hover', 'gum-elementor-addon' ),
       ]
   );

    $this->add_control(
      'grid_content_bdhover',
      [
        'label' => esc_html__( 'Border Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} article:hover .post-content' => 'border-color: {{VALUE}};',
        ],
        'condition' => [
          'grid_content_border_border!' => ''
        ],
      ]
    );

    $this->add_control(
      'grid_content_bghover_type',
      [
        'label' => esc_html_x( 'Background Type', 'Background Control', 'elementor' ),
        'type' => Controls_Manager::CHOOSE,
        'render_type' => 'ui',
        'options'=> $background_options,
        'default' => 'classic',
      ]
    );


    $this->add_control(
      'grid_content_bghover',
      [
        'label' => esc_html__( 'Background Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} article:hover .post-content' => 'background-color: {{VALUE}};background-image: none;',
        ],
        'condition' => [
          'grid_content_bghover_type!' => '',
        ],
      ]
    );


   $this->add_control(
      'grid_content_bghover_stop',
      [
        'label' => esc_html__( 'Location', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'size_units' => [ '%', 'custom' ],
        'default' => [
          'unit' => '%',
          'size' => 0,
        ],
        'range' => [
          '%' => [
            'min' => -100,
            'max' => 200,
          ],
        ],
        'render_type' => 'ui',
        'condition' => [
          'grid_content_bghover_type' => [ 'gradient' ],
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'grid_content_bghover_b',
      [
        'label' => esc_html__( 'Second Color', 'elementor' ),
        'type' => Controls_Manager::COLOR,
        'default' => '#f2295b',
        'render_type' => 'ui',
        'condition' => [
          'grid_content_bghover_type' => [ 'gradient' ],
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'grid_content_bghover_b_stop',
      [
        'label' => esc_html__( 'Location', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'size_units' => [ '%', 'custom' ],
        'default' => [
          'unit' => '%',
          'size' => 100,
        ],
        'range' => [
          '%' => [
            'min' => -100,
            'max' => 200,
          ],
        ],
        'render_type' => 'ui',
        'condition' => [
          'grid_content_bghover_type' => [ 'gradient' ],
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'grid_content_bghover_gradient_type',
      [
        'label' => esc_html__( 'Type', 'elementor' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          'linear' => esc_html__( 'Linear', 'elementor' ),
          'radial' => esc_html__( 'Radial', 'elementor' ),
        ],
        'default' => 'linear',
        'render_type' => 'ui',
        'condition' => [
          'grid_content_bghover_type' => [ 'gradient' ],
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'grid_content_bghover_gradient_angle',
      [
        'label' => esc_html__( 'Angle', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'size_units' => [ 'deg', 'grad', 'rad', 'turn', 'custom' ],
        'default' => [
          'unit' => 'deg',
          'size' => 180,
        ],
        'selectors' => [
          '{{WRAPPER}} article:hover .post-content' => 'background-color: transparent; background-image: linear-gradient({{SIZE}}{{UNIT}}, {{grid_content_bghover.VALUE}} {{grid_content_bghover_stop.SIZE}}{{grid_content_bghover_stop.UNIT}}, {{grid_content_bghover_b.VALUE}} {{grid_content_bghover_b_stop.SIZE}}{{grid_content_bghover_b_stop.UNIT}})',
        ],
        'condition' => [
          'grid_content_bghover_type' => [ 'gradient' ],
          'grid_content_bghover_gradient_type' => 'linear',
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'grid_content_bghover_gradient_position',
      [
        'label' => esc_html__( 'Position', 'elementor' ),
        'type' => Controls_Manager::SELECT,
        'options' => [
          'center center' => esc_html__( 'Center Center', 'elementor' ),
          'center left' => esc_html__( 'Center Left', 'elementor' ),
          'center right' => esc_html__( 'Center Right', 'elementor' ),
          'top center' => esc_html__( 'Top Center', 'elementor' ),
          'top left' => esc_html__( 'Top Left', 'elementor' ),
          'top right' => esc_html__( 'Top Right', 'elementor' ),
          'bottom center' => esc_html__( 'Bottom Center', 'elementor' ),
          'bottom left' => esc_html__( 'Bottom Left', 'elementor' ),
          'bottom right' => esc_html__( 'Bottom Right', 'elementor' ),
        ],
        'default' => 'center center',
        'selectors' => [
          '{{WRAPPER}} article:hover .post-content' => 'background-color: transparent; background-image: radial-gradient(at {{VALUE}}, {{grid_content_bghover.VALUE}} {{grid_content_bghover_stop.SIZE}}{{grid_content_bghover_stop.UNIT}}, {{grid_content_bghover_b.VALUE}} {{grid_content_bghover_b_stop.SIZE}}{{grid_content_bghover_b_stop.UNIT}})',
        ],
        'condition' => [
          'grid_content_bghover_type' => [ 'gradient' ],
          'grid_content_bghover_gradient_type' => 'radial',
        ],
        'of_type' => 'gradient',
      ]
    );

    $this->add_control(
      'grid_content_hover_transition',
      [
        'label' => esc_html__( 'Transition Duration', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'default' => [
          'size' => 0.3,
        ],
        'range' => [
          'px' => [
            'max' => 3,
            'step' => 0.1,
          ],
        ],
        'render_type' => 'ui',
        'separator' => 'before',
        'selectors' => [
          '{{WRAPPER}} article .post-content' => 'transition: background {{SIZE}}s'
        ],
      ]
    );

   $this->end_controls_tab();
   $this->end_controls_tabs();


    $this->end_controls_section();

    $this->start_controls_section(
      'post_title_heading',
      [
        'label' => esc_html__( 'Post Title', 'gum-elementor-addon' ),
        'tab'   => Controls_Manager::TAB_STYLE,
      ]
    );   

    $this->add_group_control(
      Group_Control_Typography::get_type(),
      [
        'name' => 'typography_post_title',
        'selector' => '{{WRAPPER}} .post-title a',
      ]
    );

    $this->add_control(
      'post_title_color',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .post-title a' => 'color: {{VALUE}};',
        ]
      ]
    );


    $this->add_control(
      'post_title_hcolor',
      [
        'label' => esc_html__( 'Hover Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .post-title a:hover,{{WRAPPER}} .post-title a:focus' => 'color: {{VALUE}};',
        ]
      ]
    );

    $this->add_responsive_control(
      'post_title_margin',
      [
          'label' => esc_html__( 'Margin', 'gum-elementor-addon' ),
          'type' => Controls_Manager::DIMENSIONS,
          'size_units' => [ 'px', '%', 'em' ],
          'selectors' => [
              '{{WRAPPER}} article .post-title' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
          ],
      ]
    );

    $this->add_responsive_control(
        'post_title_padding',
        [
            'label' => esc_html__( 'Padding', 'gum-elementor-addon' ),
            'type' => Controls_Manager::DIMENSIONS,
            'size_units' => [ 'px', '%', 'em' ],
            'selectors' => [
                '{{WRAPPER}} article .post-title' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
            ],
        ]
    );


    $this->end_controls_section();

    $this->start_controls_section(
      'post_content_heading',
      [
        'label' => esc_html__( 'Post Excerpt', 'gum-elementor-addon' ),
        'tab'   => Controls_Manager::TAB_STYLE,
        'condition' => [
          'show_excerpt' => 'yes',
        ],
      ]
    );   

    $this->add_group_control(
      Group_Control_Typography::get_type(),
      [
        'name' => 'typography_post_content',
        'selector' => '{{WRAPPER}} article .content-excerpt',
        'condition' => [
          'show_excerpt' => 'yes',
        ],
      ]
    );

    $this->add_control(
      'post_content_color',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} article .content-excerpt' => 'color: {{VALUE}};',
        ],
        'condition' => [
          'show_excerpt' => 'yes',
        ],
      ]
    );


    $this->add_control(
      'post_content_hcolor',
      [
        'label' => esc_html__( 'Hover Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} article:hover .content-excerpt,{{WRAPPER}} article:focus .content-excerpt' => 'color: {{VALUE}};',
        ],
        'condition' => [
          'show_excerpt' => 'yes',
        ],
      ]
    );

    $this->add_responsive_control(
      'post_content_margin',
      [
        'label' => esc_html__( 'Margin', 'gum-elementor-addon' ),
        'type' => Controls_Manager::DIMENSIONS,
        'size_units' => [ 'px', '%', 'em' ],
        'selectors' => [
            '{{WRAPPER}} article .content-excerpt' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
        ],
        'condition' => [
          'show_excerpt' => 'yes',
        ],
      ]
    );

    $this->add_responsive_control(
        'post_content_padding',
        [
            'label' => esc_html__( 'Padding', 'gum-elementor-addon' ),
            'type' => Controls_Manager::DIMENSIONS,
            'size_units' => [ 'px', '%', 'em' ],
            'selectors' => [
                '{{WRAPPER}} article .content-excerpt' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
            ],
        ]
    );

    $this->end_controls_section();

    $this->start_controls_section(
      'post_meta_style',
      [
        'label' => esc_html__( 'Post Meta', 'gum-elementor-addon' ),
        'tab'   => Controls_Manager::TAB_STYLE,
        'condition' => [
          'show_meta!' => ''
        ],
      ]
    );  


    $this->add_control(
      'date_meta_style',
      [
        'label' => esc_html__( 'Date Styles', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SWITCHER,
        'label_off' => esc_html__( 'No', 'gum-elementor-addon' ),
        'label_on' => esc_html__( 'Yes', 'gum-elementor-addon' ),
        'default' => '',
        'condition' => [
          'show_meta!' => '',
          'date_meta!' => ''
        ],
      ]
    );

    $this->add_control(
      'author_meta_style',
      [
        'label' => esc_html__( 'Author Styles', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SWITCHER,
        'label_off' => esc_html__( 'No', 'gum-elementor-addon' ),
        'label_on' => esc_html__( 'Yes', 'gum-elementor-addon' ),
        'default' => '',
        'condition' => [
          'show_meta!' => '',
          'author_meta!' => ''
        ],
      ]
    );


    $this->add_control(
      'category_meta_style',
      [
        'label' => esc_html__( 'Category Styles', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SWITCHER,
        'label_off' => esc_html__( 'No', 'gum-elementor-addon' ),
        'label_on' => esc_html__( 'Yes', 'gum-elementor-addon' ),
        'default' => '',
        'condition' => [
          'show_meta!' => '',
          'category_meta!' => ''
        ],
      ]
    );

    $this->add_control(
      'post_view_meta_style',
      [
        'label' => esc_html__( 'Post View Styles', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SWITCHER,
        'label_off' => esc_html__( 'No', 'gum-elementor-addon' ),
        'label_on' => esc_html__( 'Yes', 'gum-elementor-addon' ),
        'default' => '',
        'condition' => [
          'show_meta!' => '',
          'reading_time!' => ''
        ],
      ]
    );

    $this->add_control(
      'reading_time_meta_style',
      [
        'label' => esc_html__( 'Reading Timer Styles', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SWITCHER,
        'label_off' => esc_html__( 'No', 'gum-elementor-addon' ),
        'label_on' => esc_html__( 'Yes', 'gum-elementor-addon' ),
        'default' => '',
        'condition' => [
          'show_meta!' => '',
          'reading_time!' => ''
        ],
      ]
    );


    $this->add_responsive_control(
      'meta_list_space',
      [
        'label' => esc_html__( 'Spacing', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'em' => [
            'max' => 10,
            'step'=> 1,
          ],
          'px' => [
            'max' => 2000,
            'step'=> 1,
          ],
        ],  
        'default'=>['size'=>1,'unit'=>'em'],
        'size_units' => [ 'px', 'em' ],
        'separator' => 'before',
        'selectors' => [
          '{{WRAPPER}} .meta-divider' => 'padding-left: calc({{SIZE}}{{UNIT}}/2);padding-right: calc({{SIZE}}{{UNIT}}/2);',
        ],
      ]
    );

    $this->add_group_control(
      Group_Control_Typography::get_type(),
      [
        'name' => 'typography_meta_title',
        'selector' => '{{WRAPPER}} .list-meta a,{{WRAPPER}} .list-meta .meta-text',
      ]
    );


    $this->add_control(
      'general_icon_size',
      [
        'label' => esc_html__( 'Icon Size', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'max' => 100,
          ],
        ],
        'default' =>['value'=>'', 'unit'=>'px'],
        'selectors' => [
          '{{WRAPPER}} .list-meta i' => 'font-size: {{SIZE}}{{UNIT}};',
          '{{WRAPPER}} .list-meta svg' => 'height: {{SIZE}}%;width: {{SIZE}}%;'
        ],
      ]
    );

    $this->add_control(
      'general_icon_indent',
      [
        'label' => esc_html__( 'Text Indent', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'max' => 100,
          ],
        ],
        'default' =>['value'=>'10', 'unit'=>'px'],
        'selectors' => [
          '{{WRAPPER}} .list-meta i + .meta-text,{{WRAPPER}} .list-meta i + a .meta-text' => 'padding-left: {{SIZE}}{{UNIT}};',
        ],
      ]
    );


   $this->start_controls_tabs( 'meta_title_tabs', [] );

   $this->start_controls_tab(
       'meta_title_normal',
       [
           'label' =>esc_html__( 'Normal', 'gum-elementor-addon' ),
       ]
   );


    $this->add_control(
      'meta_title_color',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta a,{{WRAPPER}} .list-meta .meta-text' => 'color: {{VALUE}};',
        ]
      ]
    );


    $this->add_control(
      'general_icon_color',
      [
        'label' => esc_html__( 'Icon Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta i, {{WRAPPER}} .list-meta path' => 'fill: {{VALUE}}; color: {{VALUE}};',
        ],
      ]
    );


    $this->add_control(
      'meta_list_bgcolor',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta' => 'background-color: {{VALUE}};',
        ]
      ]
    );

   $this->end_controls_tab();

   $this->start_controls_tab(
       'meta_title_hover',
       [
           'label' =>esc_html__( 'Hover', 'gum-elementor-addon' ),
       ]
   );


    $this->add_control(
      'meta_title_hcolor',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta:hover a,{{WRAPPER}} .list-meta:hover .meta-text' => 'color: {{VALUE}};',
        ]
      ]
    );


    $this->add_control(
      'general_icon_hcolor',
      [
        'label' => esc_html__( 'Icon Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta:hover i, {{WRAPPER}} .list-meta:hover path' => 'fill: {{VALUE}}; color: {{VALUE}};',
        ],
      ]
    );


    $this->add_control(
      'meta_list_bghover',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta:hover' => 'background-color: {{VALUE}};',
        ]
      ]
    );


    $this->add_control(
      'meta_list_bdhover',
      [
        'label' => esc_html__( 'Border Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta:hover' => 'border-color: {{VALUE}};',
        ],
        'condition' => [
          'meta_list_border_border!' => ''
        ],
      ]
    );


   $this->end_controls_tab();
   $this->end_controls_tabs();


    $this->add_responsive_control(
        'meta_list_margin',
        [
            'label' => esc_html__( 'Margin', 'gum-elementor-addon' ),
            'type' => Controls_Manager::DIMENSIONS,
            'size_units' => [ 'px', '%', 'em' ],
            'placeholder' => [
              'top' => '',
              'right' => '',
              'bottom' => '',
              'left' => '',
            ],
            'selectors' => [
                '{{WRAPPER}} .posts-meta' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
            ],
        ]
    );

    $this->add_responsive_control(
        'meta_list_padding',
        [
            'label' => esc_html__( 'Padding', 'gum-elementor-addon' ),
            'type' => Controls_Manager::DIMENSIONS,
            'size_units' => [ 'px', '%', 'em' ],
            'selectors' => [
                '{{WRAPPER}} .list-meta' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
            ],
        ]
    );

    $this->add_responsive_control(
      'meta_list_radius',
      [
        'label' => esc_html__( 'Border Radius', 'gum-elementor-addon' ),
        'type' => Controls_Manager::DIMENSIONS,
        'size_units' => [ 'px', '%' ],
        'selectors' => [
          '{{WRAPPER}} .list-meta' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
        ],
      ]
    );

    $this->add_group_control(
     Group_Control_Border::get_type(),
      [
        'name' => 'meta_list_border',
        'selector' => '{{WRAPPER}} .list-meta',
      ]
    );


    $this->add_control(
      'divider_heading',
      [
        'label' => esc_html__( 'Divider', 'gum-elementor-addon' ),
        'type' => Controls_Manager::HEADING,
        'separator' => 'before',
        'condition' => [
          'meta_divider!' => ''
        ],
      ]
    );

    $this->add_responsive_control(
      'divider_size',
      [
        'label' => esc_html__( 'Size', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'em' => [
            'max' => 10,
            'step'=>1
          ],
          'px' => [
            'max' => 200,
            'step'=>1
          ],
        ],  
        'default'=>['size'=>1,'unit'=>'em'],
        'size_units' => [ 'px', 'em' ],
        'selectors' => [
          '{{WRAPPER}} .meta-divider span' => 'font-size: {{SIZE}}{{UNIT}};',
        ],
        'condition' => [
          'meta_divider!' => ''
        ],
      ]
    );

    $this->add_control(
      'divider_color',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .meta-divider span' => 'color: {{VALUE}};',
        ],
        'condition' => [
          'meta_divider!' => ''
        ],
      ]
    );

    $this->add_responsive_control(
        'divider_padding',
        [
            'label' => esc_html__( 'Padding', 'gum-elementor-addon' ),
            'type' => Controls_Manager::DIMENSIONS,
            'size_units' => [ 'px', 'em' ],
            'default' => [],
            'selectors' => [
                '{{WRAPPER}} .meta-divider' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
            ],
            'condition' => [
              'meta_divider!' => ''
            ],
        ]
    );


    $this->end_controls_section();

    $this->start_controls_section(
      'date_meta_styles',
      [
        'label' => esc_html__( 'Date Styles', 'gum-elementor-addon' ),
        'tab'   => Controls_Manager::TAB_STYLE,
        'condition' => [
          'date_meta_style' => 'yes',
          'date_meta!' => '',
          'show_meta!' => ''
        ],
      ]
    );  

    $this->add_control(
      'date_icon_size',
      [
        'label' => esc_html__( 'Icon Size', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'max' => 100,
          ],
        ],
        'default' =>['value'=>'', 'unit'=>'px'],
        'selectors' => [
          '{{WRAPPER}} .list-meta.date_meta i' => 'font-size: {{SIZE}}{{UNIT}};',
          '{{WRAPPER}} .list-meta.date_meta svg' => 'height: {{SIZE}}%;width: {{SIZE}}%;'
        ],
        'condition' => ['date_meta_icon[value]!' => ''],
      ]
    );

    $this->add_control(
      'date_icon_indent',
      [
        'label' => esc_html__( 'Spacing', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'max' => 100,
          ],
        ],
        'default' =>['value'=>'10', 'unit'=>'px'],
        'selectors' => [
          '{{WRAPPER}} .list-meta.date_meta .meta-text' => 'padding-left: {{SIZE}}{{UNIT}};',
        ],
        'condition' => ['date_meta_icon[value]!' => ''],
      ]
    );

    $this->add_group_control(
      Group_Control_Typography::get_type(),
      [
        'name' => 'typography_datemeta',
        'label' =>'Typography',
        'selector' => '{{WRAPPER}} .list-meta.date_meta a,{{WRAPPER}} .list-meta.date_meta .meta-text',
      ]
    );

   $this->start_controls_tabs( 'datemeta_tabs', [] );

   $this->start_controls_tab(
       'datemeta_normal',
       [
           'label' =>esc_html__( 'Normal', 'gum-elementor-addon' ),
       ]
   );

    $this->add_control(
      'date_meta_color',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.date_meta a,{{WRAPPER}} .list-meta.date_meta .meta-text' => 'color: {{VALUE}};',
        ]
      ]
    );


    $this->add_control(
      'date_icon_color',
      [
        'label' => esc_html__( 'Icon Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.date_meta i, {{WRAPPER}} .list-meta.date_meta path' => 'fill: {{VALUE}}; color: {{VALUE}};',
        ],
      ]
    );


    $this->add_control(
      'datemeta_bgcolor',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.date_meta' => 'background-color: {{VALUE}};',
        ]
      ]
    );


   $this->end_controls_tab();
   $this->start_controls_tab(
       'datemeta_hover',
       [
           'label' =>esc_html__( 'Hover', 'gum-elementor-addon' ),
       ]
   );


    $this->add_control(
      'datemeta_hcolor',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.date_meta:hover a,{{WRAPPER}} .list-meta.date_meta:hover .meta-text' => 'color: {{VALUE}};',
        ]
      ]
    );


    $this->add_control(
      'date_icon_hcolor',
      [
        'label' => esc_html__( 'Icon Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.date_meta:hover i, {{WRAPPER}} .list-meta.date_meta:hover path' => 'fill: {{VALUE}}; color: {{VALUE}};',
        ],
      ]
    );

    $this->add_control(
      'datemeta_bghover',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.date_meta:hover' => 'background-color: {{VALUE}};',
        ]
      ]
    );


    $this->add_control(
      'datemeta_bdhover',
      [
        'label' => esc_html__( 'Border Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.date_meta:hover' => 'border-color: {{VALUE}};',
        ],
        'condition' => [
          'datemeta_border_border!' => ''
        ],
      ]
    );

   $this->end_controls_tab();
   $this->end_controls_tabs();

    $this->add_responsive_control(
        'datemeta_margin',
        [
            'label' => esc_html__( 'Margin', 'gum-elementor-addon' ),
            'type' => Controls_Manager::DIMENSIONS,
            'size_units' => [ 'px', '%', 'em' ],
            'placeholder' => [
              'top' => '',
              'right' => '',
              'bottom' => '',
              'left' => '',
            ],
            'selectors' => [
                '{{WRAPPER}} .list-meta.date_meta' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
            ],
        ]
    );

    $this->add_responsive_control(
        'datemeta_padding',
        [
            'label' => esc_html__( 'Padding', 'gum-elementor-addon' ),
            'type' => Controls_Manager::DIMENSIONS,
            'size_units' => [ 'px', '%', 'em' ],
            'selectors' => [
                '{{WRAPPER}} .list-meta.date_meta' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
            ],
        ]
    );

    $this->add_responsive_control(
      'datemeta_radius',
      [
        'label' => esc_html__( 'Border Radius', 'gum-elementor-addon' ),
        'type' => Controls_Manager::DIMENSIONS,
        'size_units' => [ 'px', '%' ],
        'selectors' => [
          '{{WRAPPER}} .list-meta.date_meta' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
        ],
      ]
    );

    $this->add_group_control(
     Group_Control_Border::get_type(),
      [
        'name' => 'datemeta_border',
        'selector' => '{{WRAPPER}} .list-meta.date_meta',
      ]
    );

    $this->get_position_control( $this,'datemeta','.date_meta','before');

    $this->end_controls_section();

    $this->start_controls_section(
      'author_meta_styles',
      [
        'label' => esc_html__( 'Author Styles', 'gum-elementor-addon' ),
        'tab'   => Controls_Manager::TAB_STYLE,
        'condition' => [
          'author_meta_style' => 'yes',
          'show_meta!' => '',
          'author_meta!' => ''
        ],
      ]
    );  

    $this->add_control(
      'author_avatar_styles',
      [
        'label' => esc_html__( 'Avatar', 'gum-elementor-addon' ),
        'type' => Controls_Manager::HEADING,
        'condition' => [
          'author_meta!' => '',
          'author_meta_avatar' => 'yes',
        ],
      ]
    );


  $this->add_control(
    'author_avatar_align',
    [
      'label' => esc_html__( 'Align', 'gum-elementor-addon' ),
      'type' => Controls_Manager::CHOOSE,
      'options' => [
        'flex-start' => [
          'title' => esc_html__( 'Top', 'gum-elementor-addon' ),
          'icon' => 'eicon-v-align-top',
        ],
        'center' => [
          'title' => esc_html__( 'Center', 'gum-elementor-addon' ),
          'icon' => 'eicon-v-align-middle',
        ],
        'flex-end' => [
          'title' => esc_html__( 'Bottom', 'gum-elementor-addon' ),
          'icon' => 'eicon-v-align-bottom',
        ],
      ],
      'default' => 'center',
        'condition' => [
          'author_meta!' => '',
          'author_meta_avatar' => 'yes',
          'author_avatar_position!'=> 'top'
        ],
        'selectors' => [
          '{{WRAPPER}}:where(.author_meta_avatar_position-left,.author_meta_avatar_position-right) .posts-meta .author_meta' => 'align-items: {{VALUE}};',
        ],
    ]
  );


    $this->add_responsive_control(
      'author_avatar_width',
      [
        'label' => esc_html__( 'Width', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
         'px' => [
            'max' => 1000,
          ],
        ],  
        'default'=>['size'=>'','unit'=>'px'],
        'size_units' => [ 'px','%' ],
        'selectors' => [
          '{{WRAPPER}} .list-meta.author_meta .author-avatar img' => 'width: {{SIZE}}{{UNIT}};',
        ],
        'condition' => [
          'author_meta!' => '',
          'author_meta_avatar' => 'yes',
        ],
       ]
    );


    $this->add_responsive_control(
      'author_avatar_margin',
      [
        'label' => esc_html__( 'Spacing', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
         'px' => [
            'max' => 1000,
          ],
        ],  
        'default'=>['size'=>'','unit'=>'px'],
        'size_units' => [ 'px','%' ],
        'selectors' => [
          '{{WRAPPER}}.author_meta_avatar_position-top .list-meta.author_meta .author-avatar' => 'margin-bottom: {{SIZE}}{{UNIT}};',
          '{{WRAPPER}}.author_meta_avatar_position-left .list-meta.author_meta .author-avatar' => 'margin-right: {{SIZE}}{{UNIT}};',
          '{{WRAPPER}}.author_meta_avatar_position-right .list-meta.author_meta .author-avatar' => 'margin-left: {{SIZE}}{{UNIT}};',
        ],
        'condition' => [
          'author_meta!' => '',
          'author_meta_avatar' => 'yes',
        ],
       ]
    );

    $this->add_group_control(
     Group_Control_Border::get_type(),
      [
        'name' => 'author_avatar_border',
        'selector' => '{{WRAPPER}} .list-meta.author_meta .author-avatar img',
        'condition' => [
          'author_meta!' => '',
          'author_meta_avatar' => 'yes',
        ],

      ]
    );

    $this->add_responsive_control(
      'author_avatar_radius',
      [
        'label' => esc_html__( 'Border Radius', 'gum-elementor-addon' ),
        'type' => Controls_Manager::DIMENSIONS,
        'size_units' => [ 'px', '%' ],
        'selectors' => [
          '{{WRAPPER}} .list-meta.author_meta .author-avatar img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
        ],
        'condition' => [
          'author_meta!' => '',
          'author_meta_avatar' => 'yes',
        ],
        'separator' => 'after',

      ]
    );
    

    $this->add_control(
      'author_icon_styles',
      [
        'label' => esc_html__( 'Icon', 'gum-elementor-addon' ),
        'type' => Controls_Manager::HEADING,
        'condition' => [
          'author_meta!' => '',
          'author_meta_avatar' => 'yes',
          'author_meta_icon[value]!' => ''
        ],
      ]
    );

    $this->add_control(
      'author_icon_size',
      [
        'label' => esc_html__( 'Icon Size', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'max' => 100,
          ],
        ],
        'default' =>['value'=>'', 'unit'=>'px'],
        'selectors' => [
          '{{WRAPPER}} .list-meta.author_meta i' => 'font-size: {{SIZE}}{{UNIT}};',
          '{{WRAPPER}} .list-meta.author_meta svg' => 'height: {{SIZE}}%;width: {{SIZE}}%;'
        ],
        'condition' => ['author_meta_icon[value]!' => ''],
      ]
    );

    $this->add_control(
      'author_icon_indent',
      [
        'label' => esc_html__( 'Spacing', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'max' => 100,
          ],
        ],
        'default' =>['value'=>'10', 'unit'=>'px'],
        'selectors' => [
          '{{WRAPPER}} .list-meta.author_meta .meta-text' => 'padding-left: {{SIZE}}{{UNIT}};',
        ],
        'condition' => ['author_meta_icon[value]!' => ''],
      ]
    );


    $this->add_group_control(
      Group_Control_Typography::get_type(),
      [
        'name' => 'typography_authormeta',
        'selector' => '{{WRAPPER}} .list-meta.author_meta a,{{WRAPPER}} .list-meta.author_meta .meta-text',
      ]
    );

   $this->start_controls_tabs( 'authormeta_tabs', [] );
   $this->start_controls_tab(
       'authormeta_normal',
       [
           'label' =>esc_html__( 'Normal', 'gum-elementor-addon' ),
       ]
   );

    $this->add_control(
      'authormeta_color',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.author_meta a,{{WRAPPER}} .list-meta.author_meta .meta-text' => 'color: {{VALUE}};',
        ]
      ]
    );


    $this->add_control(
      'author_icon_color',
      [
        'label' => esc_html__( 'Icon Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.author_meta i, {{WRAPPER}} .list-meta.author_meta path' => 'fill: {{VALUE}}; color: {{VALUE}};',
        ],
      ]
    );


    $this->add_control(
      'authormeta_bgcolor',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.author_meta' => 'background-color: {{VALUE}};',
        ]
      ]
    );


   $this->end_controls_tab();
   $this->start_controls_tab(
       'authormeta_hover',
       [
           'label' =>esc_html__( 'Hover', 'gum-elementor-addon' ),
       ]
   );

    $this->add_control(
      'authormeta_hcolor',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.author_meta:hover a,{{WRAPPER}} .list-meta.author_meta:hover .meta-text' => 'color: {{VALUE}};',
        ]
      ]
    );

    $this->add_control(
      'author_icon_hcolor',
      [
        'label' => esc_html__( 'Icon Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.author_meta:hover i, {{WRAPPER}} .list-meta.author_meta:hover path' => 'fill: {{VALUE}}; color: {{VALUE}};',
        ],
      ]
    );

    $this->add_control(
      'authormeta_bghover',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.author_meta:hover' => 'background-color: {{VALUE}};',
        ]
      ]
    );


    $this->add_control(
      'authormeta_bdhover',
      [
        'label' => esc_html__( 'Border Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.author_meta:hover' => 'border-color: {{VALUE}};',
        ],
        'condition' => [
          'authormeta_border_border!' => ''
        ],
      ]
    );

   $this->end_controls_tab();
   $this->end_controls_tabs();

    $this->add_responsive_control(
        'authormeta_margin',
        [
            'label' => esc_html__( 'Margin', 'gum-elementor-addon' ),
            'type' => Controls_Manager::DIMENSIONS,
            'size_units' => [ 'px', '%', 'em' ],
            'placeholder' => [
              'top' => '',
              'right' => '',
              'bottom' => '',
              'left' => '',
            ],
            'selectors' => [
                '{{WRAPPER}} .list-meta.author_meta' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
            ],
        ]
    );

    $this->add_responsive_control(
        'authormeta_padding',
        [
            'label' => esc_html__( 'Padding', 'gum-elementor-addon' ),
            'type' => Controls_Manager::DIMENSIONS,
            'size_units' => [ 'px', '%', 'em' ],
            'selectors' => [
                '{{WRAPPER}} .list-meta.author_meta' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
            ],
        ]
    );

    $this->add_responsive_control(
      'authormeta_radius',
      [
        'label' => esc_html__( 'Border Radius', 'gum-elementor-addon' ),
        'type' => Controls_Manager::DIMENSIONS,
        'size_units' => [ 'px', '%' ],
        'selectors' => [
          '{{WRAPPER}} .list-meta.author_meta' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
        ],
      ]
    );

    $this->add_group_control(
     Group_Control_Border::get_type(),
      [
        'name' => 'authormeta_border',
        'selector' => '{{WRAPPER}} .list-meta.author_meta',
      ]
    );

    $this->get_position_control( $this,'authormeta','.author_meta','before');

    $this->end_controls_section();

    $this->start_controls_section(
      'category_meta_styles',
      [
        'label' => esc_html__( 'Category Styles', 'gum-elementor-addon' ),
        'tab'   => Controls_Manager::TAB_STYLE,
        'condition' => [
          'category_meta_style' => 'yes',
          'show_meta!' => '',
          'category_meta!' => ''
        ],
      ]
    );  

    $this->add_control(
      'category_icon_size',
      [
        'label' => esc_html__( 'Icon Size', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'max' => 100,
          ],
        ],
        'default' =>['value'=>'', 'unit'=>'px'],
        'selectors' => [
          '{{WRAPPER}} .list-meta.category_meta i' => 'font-size: {{SIZE}}{{UNIT}};',
          '{{WRAPPER}} .list-meta.category_meta svg' => 'height: {{SIZE}}%;width: {{SIZE}}%;'
        ],
        'condition' => ['category_meta_icon[value]!' => ''],
      ]
    );

    $this->add_control(
      'category_icon_indent',
      [
        'label' => esc_html__( 'Spacing', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'max' => 100,
          ],
        ],
        'default' =>['value'=>'10', 'unit'=>'px'],
        'selectors' => [
          '{{WRAPPER}} .list-meta.category_meta .meta-text' => 'padding-left: {{SIZE}}{{UNIT}};',
        ],
        'condition' => ['category_meta_icon[value]!' => ''],
      ]
    );


    $this->add_group_control(
      Group_Control_Typography::get_type(),
      [
        'name' => 'typography_categorymeta',
        'selector' => '{{WRAPPER}} .list-meta.category_meta a,{{WRAPPER}} .list-meta.category_meta .meta-text',
      ]
    );


   $this->start_controls_tabs( 'categorymeta_tabs', [] );
   $this->start_controls_tab(
       'categorymeta_normal',
       [
           'label' =>esc_html__( 'Normal', 'gum-elementor-addon' ),
       ]
   );

    $this->add_control(
      'categorymeta_color',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.category_meta a,{{WRAPPER}} .list-meta.category_meta .meta-text' => 'color: {{VALUE}};',
        ]
      ]
    );

    $this->add_control(
      'category_icon_color',
      [
        'label' => esc_html__( 'Icon Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.category_meta i, {{WRAPPER}} .list-meta.category_meta path' => 'fill: {{VALUE}}; color: {{VALUE}};',
        ],
      ]
    );

    $this->add_control(
      'categorymeta_bgcolor',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.category_meta' => 'background-color: {{VALUE}};',
        ]
      ]
    );


   $this->end_controls_tab();
   $this->start_controls_tab(
       'categorymeta_hover',
       [
           'label' =>esc_html__( 'Hover', 'gum-elementor-addon' ),
       ]
   );


    $this->add_control(
      'categorymeta_hcolor',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.category_meta:hover a,{{WRAPPER}} .list-meta.category_meta:hover .meta-text' => 'color: {{VALUE}};',
        ]
      ]
    );

    $this->add_control(
      'category_icon_hcolor',
      [
        'label' => esc_html__( 'Icon Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.category_meta:hover i, {{WRAPPER}} .list-meta.category_meta:hover path' => 'fill: {{VALUE}}; color: {{VALUE}};',
        ],
      ]
    );

    $this->add_control(
      'categorymeta_bghover',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.category_meta:hover' => 'background-color: {{VALUE}};',
        ]
      ]
    );


    $this->add_control(
      'categorymeta_bdhover',
      [
        'label' => esc_html__( 'Border Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.category_meta:hover' => 'border-color: {{VALUE}};',
        ],
        'condition' => [
          'categorymeta_border_border!' => ''
        ],
      ]
    );

   $this->end_controls_tab();
   $this->end_controls_tabs();

    $this->add_responsive_control(
        'categorymeta_margin',
        [
            'label' => esc_html__( 'Margin', 'gum-elementor-addon' ),
            'type' => Controls_Manager::DIMENSIONS,
            'size_units' => [ 'px', '%', 'em' ],
            'placeholder' => [
              'top' => '',
              'right' => '',
              'bottom' => '',
              'left' => '',
            ],
            'selectors' => [
                '{{WRAPPER}} .list-meta.category_meta' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
            ],
        ]
    );

    $this->add_responsive_control(
        'categorymeta_padding',
        [
            'label' => esc_html__( 'Padding', 'gum-elementor-addon' ),
            'type' => Controls_Manager::DIMENSIONS,
            'size_units' => [ 'px', '%', 'em' ],
            'selectors' => [
                '{{WRAPPER}} .list-meta.category_meta' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
            ],
        ]
    );

    $this->add_responsive_control(
      'categorymeta_radius',
      [
        'label' => esc_html__( 'Border Radius', 'gum-elementor-addon' ),
        'type' => Controls_Manager::DIMENSIONS,
        'size_units' => [ 'px', '%' ],
        'selectors' => [
          '{{WRAPPER}} .list-meta.category_meta' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
        ],
      ]
    );

    $this->add_group_control(
     Group_Control_Border::get_type(),
      [
        'name' => 'categorymeta_border',
        'selector' => '{{WRAPPER}} .list-meta.category_meta',
      ]
    );

    $this->get_position_control( $this,'category','.category_meta','before');

    $this->end_controls_section();
    $this->start_controls_section(
      'post_view_meta_styles',
      [
        'label' => esc_html__( 'Post View Styles', 'gum-elementor-addon' ),
        'tab'   => Controls_Manager::TAB_STYLE,
        'condition' => [
          'post_view_meta_style' => 'yes',
          'show_meta!' => '',
          'post_view!' => ''
        ],
      ]
    );  

    $this->add_control(
      'post_view_icon_size',
      [
        'label' => esc_html__( 'Icon Size', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'max' => 100,
          ],
        ],
        'default' =>['value'=>'', 'unit'=>'px'],
        'selectors' => [
          '{{WRAPPER}} .list-meta.post_view i' => 'font-size: {{SIZE}}{{UNIT}};',
          '{{WRAPPER}} .list-meta.post_view svg' => 'height: {{SIZE}}%;width: {{SIZE}}%;'
        ],
        'condition' => ['post_view_icon[value]!' => ''],
      ]
    );

    $this->add_control(
      'post_view_icon_indent',
      [
        'label' => esc_html__( 'Spacing', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'max' => 100,
          ],
        ],
        'default' =>['value'=>'10', 'unit'=>'px'],
        'selectors' => [
          '{{WRAPPER}} .list-meta.post_view .meta-text' => 'padding-left: {{SIZE}}{{UNIT}};',
        ],
        'condition' => ['post_view_icon[value]!' => ''],
      ]
    );


    $this->add_group_control(
      Group_Control_Typography::get_type(),
      [
        'name' => 'typography_post_view',
        'selector' => '{{WRAPPER}} .list-meta.post_view a,{{WRAPPER}} .list-meta.post_view .meta-text',
      ]
    );


   $this->start_controls_tabs( 'post_viewmeta_tabs', [] );
   $this->start_controls_tab(
       'post_view_normal',
       [
           'label' =>esc_html__( 'Normal', 'gum-elementor-addon' ),
       ]
   );

    $this->add_control(
      'post_view_color',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.post_view a,{{WRAPPER}} .list-meta.post_view .meta-text' => 'color: {{VALUE}};',
        ]
      ]
    );

    $this->add_control(
      'post_view_icon_color',
      [
        'label' => esc_html__( 'Icon Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.post_view i, {{WRAPPER}} .list-meta.post_view path' => 'fill: {{VALUE}}; color: {{VALUE}};',
        ],
      ]
    );

    $this->add_control(
      'post_view_bgcolor',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.post_view' => 'background-color: {{VALUE}};',
        ]
      ]
    );


   $this->end_controls_tab();
   $this->start_controls_tab(
       'post_view_hover',
       [
           'label' =>esc_html__( 'Hover', 'gum-elementor-addon' ),
       ]
   );


    $this->add_control(
      'post_view_hcolor',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.post_view:hover a,{{WRAPPER}} .list-meta.post_view:hover .meta-text' => 'color: {{VALUE}};',
        ]
      ]
    );

    $this->add_control(
      'post_view_icon_hcolor',
      [
        'label' => esc_html__( 'Icon Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.post_view:hover i, {{WRAPPER}} .list-meta.post_view:hover path' => 'fill: {{VALUE}}; color: {{VALUE}};',
        ],
      ]
    );

    $this->add_control(
      'post_view_bghover',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.post_view:hover' => 'background-color: {{VALUE}};',
        ]
      ]
    );


    $this->add_control(
      'post_view_bdhover',
      [
        'label' => esc_html__( 'Border Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.post_view:hover' => 'border-color: {{VALUE}};',
        ],
        'condition' => [
          'post_view_border_border!' => ''
        ],
      ]
    );

   $this->end_controls_tab();
   $this->end_controls_tabs();

    $this->add_responsive_control(
        'post_view_margin',
        [
            'label' => esc_html__( 'Margin', 'gum-elementor-addon' ),
            'type' => Controls_Manager::DIMENSIONS,
            'size_units' => [ 'px', '%', 'em' ],
            'placeholder' => [
              'top' => '',
              'right' => '',
              'bottom' => '',
              'left' => '',
            ],
            'selectors' => [
                '{{WRAPPER}} .list-meta.post_view' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
            ],
        ]
    );

    $this->add_responsive_control(
        'post_view_padding',
        [
            'label' => esc_html__( 'Padding', 'gum-elementor-addon' ),
            'type' => Controls_Manager::DIMENSIONS,
            'size_units' => [ 'px', '%', 'em' ],
            'selectors' => [
                '{{WRAPPER}} .list-meta.post_view' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
            ],
        ]
    );

    $this->add_control(
      'post_view_radius',
      [
        'label' => esc_html__( 'Border Radius', 'gum-elementor-addon' ),
        'type' => Controls_Manager::DIMENSIONS,
        'size_units' => [ 'px', '%' ],
        'selectors' => [
          '{{WRAPPER}} .list-meta.post_view' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
        ],
      ]
    );

    $this->add_group_control(
     Group_Control_Border::get_type(),
      [
        'name' => 'post_view_border',
        'selector' => '{{WRAPPER}} .list-meta.post_view',
      ]
    );

    $this->get_position_control( $this,'post_view','.post_view','before');

    $this->end_controls_section();

    $this->start_controls_section(
      'reading_time_meta_styles',
      [
        'label' => esc_html__( 'Reading Timer Styles', 'gum-elementor-addon' ),
        'tab'   => Controls_Manager::TAB_STYLE,
        'condition' => [
          'reading_time_meta_style' => 'yes',
          'show_meta!' => '',
          'reading_time!' => ''
        ],
      ]
    );  

    $this->add_control(
      'reading_time_icon_size',
      [
        'label' => esc_html__( 'Icon Size', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'max' => 100,
          ],
        ],
        'default' =>['value'=>'', 'unit'=>'px'],
        'selectors' => [
          '{{WRAPPER}} .list-meta.reading_time i' => 'font-size: {{SIZE}}{{UNIT}};',
          '{{WRAPPER}} .list-meta.reading_time svg' => 'height: {{SIZE}}%;width: {{SIZE}}%;'
        ],
        'condition' => ['reading_time_icon[value]!' => ''],
      ]
    );

    $this->add_control(
      'reading_time_icon_indent',
      [
        'label' => esc_html__( 'Spacing', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'max' => 100,
          ],
        ],
        'default' =>['value'=>'10', 'unit'=>'px'],
        'selectors' => [
          '{{WRAPPER}} .list-meta.reading_time .meta-text' => 'padding-left: {{SIZE}}{{UNIT}};',
        ],
        'condition' => ['reading_time_icon[value]!' => ''],
      ]
    );


    $this->add_group_control(
      Group_Control_Typography::get_type(),
      [
        'name' => 'typography_reading_time',
        'selector' => '{{WRAPPER}} .list-meta.reading_time a,{{WRAPPER}} .list-meta.reading_time .meta-text',
      ]
    );


   $this->start_controls_tabs( 'reading_timemeta_tabs', [] );
   $this->start_controls_tab(
       'reading_time_normal',
       [
           'label' =>esc_html__( 'Normal', 'gum-elementor-addon' ),
       ]
   );

    $this->add_control(
      'reading_time_color',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.reading_time a,{{WRAPPER}} .list-meta.reading_time .meta-text' => 'color: {{VALUE}};',
        ]
      ]
    );

    $this->add_control(
      'reading_time_icon_color',
      [
        'label' => esc_html__( 'Icon Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.reading_time i, {{WRAPPER}} .list-meta.reading_time path' => 'fill: {{VALUE}}; color: {{VALUE}};',
        ],
      ]
    );

    $this->add_control(
      'reading_time_bgcolor',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.reading_time' => 'background-color: {{VALUE}};',
        ]
      ]
    );


   $this->end_controls_tab();
   $this->start_controls_tab(
       'reading_time_hover',
       [
           'label' =>esc_html__( 'Hover', 'gum-elementor-addon' ),
       ]
   );


    $this->add_control(
      'reading_time_hcolor',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.reading_time:hover a,{{WRAPPER}} .list-meta.reading_time:hover .meta-text' => 'color: {{VALUE}};',
        ]
      ]
    );

    $this->add_control(
      'reading_time_icon_hcolor',
      [
        'label' => esc_html__( 'Icon Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.reading_time:hover i, {{WRAPPER}} .list-meta.reading_time:hover path' => 'fill: {{VALUE}}; color: {{VALUE}};',
        ],
      ]
    );

    $this->add_control(
      'reading_time_bghover',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.reading_time:hover' => 'background-color: {{VALUE}};',
        ]
      ]
    );


    $this->add_control(
      'reading_time_bdhover',
      [
        'label' => esc_html__( 'Border Color', 'gum-elementor-addon' ),
        'type' =>  Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .list-meta.reading_time:hover' => 'border-color: {{VALUE}};',
        ],
        'condition' => [
          'reading_time_border_border!' => ''
        ],
      ]
    );

   $this->end_controls_tab();
   $this->end_controls_tabs();

    $this->add_responsive_control(
        'reading_time_margin',
        [
            'label' => esc_html__( 'Margin', 'gum-elementor-addon' ),
            'type' => Controls_Manager::DIMENSIONS,
            'size_units' => [ 'px', '%', 'em' ],
            'placeholder' => [
              'top' => '',
              'right' => '',
              'bottom' => '',
              'left' => '',
            ],
            'selectors' => [
                '{{WRAPPER}} .list-meta.reading_time' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
            ],
        ]
    );

    $this->add_responsive_control(
        'reading_time_padding',
        [
            'label' => esc_html__( 'Padding', 'gum-elementor-addon' ),
            'type' => Controls_Manager::DIMENSIONS,
            'size_units' => [ 'px', '%', 'em' ],
            'selectors' => [
                '{{WRAPPER}} .list-meta.reading_time' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
            ],
        ]
    );

    $this->add_control(
      'reading_time_radius',
      [
        'label' => esc_html__( 'Border Radius', 'gum-elementor-addon' ),
        'type' => Controls_Manager::DIMENSIONS,
        'size_units' => [ 'px', '%' ],
        'selectors' => [
          '{{WRAPPER}} .list-meta.reading_time' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
        ],
      ]
    );

    $this->add_group_control(
     Group_Control_Border::get_type(),
      [
        'name' => 'reading_time_border',
        'selector' => '{{WRAPPER}} .list-meta.reading_time',
      ]
    );

    $this->get_position_control( $this,'reading_time','.reading_time','before');

    $this->end_controls_section();

    $this->start_controls_section(
      'post_readmore_style',
      [
        'label' => esc_html__( 'Readmore', 'gum-elementor-addon' ),
        'tab'   => Controls_Manager::TAB_STYLE,
        'condition' => [
          'show_readmore!' => ''
        ],
      ]
    );  

    $this->add_control(
      'readmore_button_align',
      [
        'label' => esc_html__( 'Align', 'gum-elementor-addon' ),
        'type' => Controls_Manager::CHOOSE,
        'options' => [
          'left' => [
            'title' => esc_html__( 'Left', 'gum-elementor-addon' ),
            'icon' => 'eicon-h-align-left',
          ],
          'center' => [
            'title' => esc_html__( 'Center', 'gum-elementor-addon' ),
            'icon' => 'eicon-h-align-center',
          ],
          'full' => [
            'title' => esc_html__( 'Full Width', 'gum-elementor-addon' ),
            'icon' => 'eicon-h-align-stretch',
          ],
          'right' => [
            'title' => esc_html__( 'Right', 'gum-elementor-addon' ),
            'icon' => 'eicon-h-align-right',
          ],
        ],
        'default' => '',
        'condition' => ['show_readmore!' => '']
      ]
    );


    $this->add_group_control(
      Group_Control_Typography::get_type(),
      [
        'name' => 'typography_readmore_button',
        'selector' => '{{WRAPPER}} .elementor-button',
      ]
    );

    $this->add_responsive_control(
      'readmore_button_margin',
      [
          'label' => esc_html__( 'Margin', 'gum-elementor-addon' ),
          'type' => Controls_Manager::DIMENSIONS,
          'size_units' => [ 'px', '%', 'em' ],
          'selectors' => [
              '{{WRAPPER}} .elementor-button' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
          ],
      ]
    );


    $this->add_responsive_control(
      'readmore_button_padding',
      [
        'label' => esc_html__( 'Padding', 'gum-elementor-addon' ),
        'type' => Controls_Manager::DIMENSIONS,
        'size_units' => [ 'px', 'em', '%' ],
        'selectors' => [
          '{{WRAPPER}} .elementor-button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
        ]
      ]
    );
    
    $this->add_control(
      'readmore_button_radius',
      [
        'label' => esc_html__( 'Border Radius', 'gum-elementor-addon' ),
        'type' => Controls_Manager::DIMENSIONS,
        'size_units' => [ 'px', '%' ],
        'selectors' => [
          '{{WRAPPER}} .elementor-button' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
        ]
      ]
    );

    $this->add_group_control(
      Group_Control_Border::get_type(),
      [
        'name' => 'readmore_button_border',
        'selector' => '{{WRAPPER}} article .elementor-button',
        'separator' => 'before',
      ]
    );


    $this->start_controls_tabs( 'tabs_readmore_button_style' );

    $this->start_controls_tab(
      'tab_readmore_button_normal',
      [
        'label' => esc_html__( 'Normal', 'gum-elementor-addon' ),
      ]
    );

    $this->add_control(
      'readmore_button_color',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .elementor-button' => 'fill: {{VALUE}}; color: {{VALUE}};',
        ],
      ]
    );

    $this->add_control(
      'readmore_button_background',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'selectors' => [
          '{{WRAPPER}} .elementor-button' => 'background-color: {{VALUE}};',
        ],
      ]
    );

    $this->end_controls_tab();

    $this->start_controls_tab(
      'tab_readmore_button_hover',
      [
        'label' => esc_html__( 'Hover', 'gum-elementor-addon' ),
      ]
    );

    $this->add_control(
      'readmore_button_hover_color',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'selectors' => [
          '{{WRAPPER}} .elementor-button:hover, {{WRAPPER}} .elementor-button:focus' => 'color: {{VALUE}}!important;',
          '{{WRAPPER}} .elementor-button:hover svg, {{WRAPPER}} .elementor-button:focus svg' => 'fill: {{VALUE}}!important;',
        ],
      ]
    );

    $this->add_control(
      'readmore_button_background_hover_color',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'selectors' => [
          '{{WRAPPER}} .elementor-button:hover, {{WRAPPER}} .elementor-button:focus' => 'background-color: {{VALUE}};',
        ],
      ]
    );

    $this->add_control(
      'readmore_button_hover_border_color',
      [
        'label' => esc_html__( 'Border', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'condition' => [
          'readmore_button_border_border!' => '',
        ],
        'selectors' => [
          '{{WRAPPER}} .elementor-button:hover, {{WRAPPER}} .elementor-button:focus' => 'border-color: {{VALUE}};',
        ],
      ]
    );

    $this->end_controls_tab();
    $this->end_controls_tabs();


    $this->get_position_control( $this,'readmore','.elementor-button','before');


    $this->add_control(
      'readmore_icon_heading',
      [
        'label' => esc_html__( 'Icon', 'gum-elementor-addon' ),
        'type' => Controls_Manager::HEADING,
        'separator' => 'before',
        'condition' => ['show_readmore!' => '','readmore_icon[value]!' => ''],
      ]
    );



    $this->add_control(
      'readmore_icon_size',
      [
        'label' => esc_html__( 'Size', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'max' => 100,
          ],
        ],
        'default' =>['value'=>'', 'unit'=>'px'],
        'selectors' => [
          '{{WRAPPER}} .elementor-button .elementor-button-icon' => 'font-size: {{SIZE}}{{UNIT}};',
        ],
        'condition' => ['show_readmore!' => '','readmore_icon[value]!' => ''],
      ]
    );


    $this->add_group_control(
     Group_Control_Border::get_type(),
      [
        'name' => 'readmore_icon_border',
        'selector' => '{{WRAPPER}} .elementor-button .elementor-button-icon',
        'condition' => ['show_readmore!' => '','readmore_icon[value]!' => ''],
      ]
    );

    $this->add_responsive_control(
        'readmore_icon_padding',
        [
            'label' => esc_html__( 'Padding', 'gum-elementor-addon' ),
            'type' => Controls_Manager::DIMENSIONS,
            'size_units' => [ 'px', '%', 'em' ],
            'selectors' => [
                '{{WRAPPER}} .elementor-button .elementor-button-icon' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
            ],
            'condition' => ['show_readmore!' => '','readmore_icon[value]!' => '','readmore_icon_border_border!' => ''],
        ]
    );

    $this->add_control(
      'readmore_icon_radius',
      [
        'label' => esc_html__( 'Border Radius', 'gum-elementor-addon' ),
        'type' => Controls_Manager::DIMENSIONS,
        'size_units' => [ 'px', '%' ],
        'selectors' => [
          '{{WRAPPER}} .elementor-button .elementor-button-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
        ],
        'condition' => ['show_readmore!' => '','readmore_icon[value]!' => '','readmore_icon_border_border!'=>''],
      ]
    );

    $this->start_controls_tabs( '_tabs_readmore_icon_style',['condition' => ['show_readmore!' => '','readmore_icon[value]!' => '']] );

    $this->start_controls_tab(
      '_tab_readmore_icon_normal',
      [
        'label' => esc_html__( 'Normal', 'gum-elementor-addon' ),
      ]
    );


    $this->add_control(
      'readmore_icon_color',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'selectors' => [
          '{{WRAPPER}} .elementor-button .elementor-button-icon i,{{WRAPPER}} .elementor-button .elementor-button-icon svg' => 'color: {{VALUE}}!important,fill: {{VALUE}}!important;',
        ],
        'condition' => ['show_readmore!' => '','readmore_icon[value]!' => ''],
      ]
    );


    $this->add_control(
      'readmore_icon_background',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .elementor-button .elementor-button-icon' => 'background: {{VALUE}};',
        ],
        'condition' => ['readmore_icon_border_border!' => ''],
      ]
    );

    $this->add_control(
      'readmore_icon_rotate',
      [
        'label' => esc_html__( 'Rotate', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'size_units' => [ 'deg' ],
        'default' => [
          'size' => 0,
          'unit' => 'deg',
        ],
        'selectors' => [
          '{{WRAPPER}} .elementor-button .elementor-button-icon i, {{WRAPPER}} .elementor-button .elementor-button-icon svg' => 'transform: rotate({{SIZE}}{{UNIT}});',
        ],
        'condition' => ['show_readmore!' => '','readmore_icon[value]!' => ''],

      ]
    );

    $this->end_controls_tab();
    $this->start_controls_tab(
      '_tab_readmore_icon_hover',
      [
        'label' => esc_html__( 'Hover', 'gum-elementor-addon' ),
      ]
    );


    $this->add_control(
      'readmore_icon_hover_color',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'selectors' => [
          '{{WRAPPER}} .elementor-button:hover .elementor-button-icon i,{{WRAPPER}} .elementor-button:hover .elementor-button-icon svg' => 'color: {{VALUE}}!important,fill: {{VALUE}}!important;',
        ],
        'condition' => ['show_readmore!' => '','readmore_icon[value]!' => ''],
      ]
    );

    $this->add_control(
      'readmore_icon_hover_background',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .elementor-button:hover .elementor-button-icon' => 'background: {{VALUE}};',
        ],
        'condition' => ['readmore_icon_border_border!' => ''],
      ]
    );

    $this->add_control(
      'readmore_icon_border_hover_color',
      [
        'label' => esc_html__( 'Border', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'selectors' => [
          '{{WRAPPER}} .elementor-button:hover .elementor-button-icon' => 'border-color: {{VALUE}}!important;',
        ],
        'condition' => ['show_readmore!' => '','readmore_icon[value]!' => '','readmore_icon_border_border!'=>''],
      ]
    );


    $this->add_control(
      'readmore_icon_hover_rotate',
      [
        'label' => esc_html__( 'Rotate', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'size_units' => [ 'deg' ],
        'default' => [
          'size' => '',
          'unit' => 'deg',
        ],
        'selectors' => [
          '{{WRAPPER}} .elementor-button:hover .elementor-button-icon i, {{WRAPPER}} .elementor-button:hover .elementor-button-icon svg' => 'transform: rotate({{SIZE}}{{UNIT}});',
        ],
      ]
    );

    $this->add_control(
      'readmore_icon_transform_transition_hover',
      [
        'label' => esc_html__( 'Transition Duration (ms)', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'min' => 100,
            'max' => 10000,
          ],
        ],
        'selectors' => [
          '{{WRAPPER}} .elementor-button-content-wrapper' => '--e-button-transition-duration: {{SIZE}}ms',
        ],
      ]
    );


    $this->end_controls_tab();
    $this->end_controls_tabs();

    $this->end_controls_section();

    $this->start_controls_section(
      'pagination_style',
      [
        'label' => esc_html__( 'Pagination', 'gum-elementor-addon' ),
        'tab'   => Controls_Manager::TAB_STYLE,
        'condition' => [
          'show_pagination!' => ''
        ],
      ]
    );  



    $this->add_responsive_control(
      'pagination_margin',
      [
          'label' => esc_html__( 'Margin', 'gum-elementor-addon' ),
          'type' => Controls_Manager::DIMENSIONS,
          'size_units' => [ 'px', '%', 'em' ],
          'selectors' => [
              '{{WRAPPER}} .grid-posts-pagination' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
          ],
      ]
    );



    $this->add_control(
      'pagination_item_width',
      [
        'label' => esc_html__( 'Min Width', 'gum-elementor-addon' ),
        'type' => Controls_Manager::NUMBER,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .grid-posts-pagination .page-numbers,{{WRAPPER}} .grid-posts-pagination .nav-button' => 'min-width: {{VALUE}}px;',
        ],
        'separator' =>'before'
      ]
    );

    $this->add_responsive_control(
      'pagination_item_spacing',
      [
        'label' => esc_html__( 'Item Spacing', 'gum-elementor-addon' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'min' => 0,
            'max' => 200,
            'step'=> 1
          ],
        ],
        'default' => [
          'size' => '10',
          'unit' => 'px'
        ],
        'selectors' => [
          '{{WRAPPER}} .grid-posts-pagination li:not(:last-child)' => 'margin-right: {{SIZE}}{{UNIT}};',
        ],
        'separator' =>'after',
        'condition' => [
          'pagination_align!' => 'justify'
        ]
      ]
    );


    $this->add_group_control(
      Group_Control_Typography::get_type(),
      [
        'name' => 'typography_pagination',
        'selector' => '{{WRAPPER}} .grid-posts-pagination a,{{WRAPPER}} .grid-posts-pagination .page-numbers',
      ]
    );

    $this->add_responsive_control(
      'pagination_padding',
      [
        'label' => esc_html__( 'Padding', 'gum-elementor-addon' ),
        'type' => Controls_Manager::DIMENSIONS,
        'size_units' => [ 'px', 'em', '%' ],
        'selectors' => [
          '{{WRAPPER}} .grid-posts-pagination .page-numbers,{{WRAPPER}} .grid-posts-pagination .nav-button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
        ]
      ]
    );
    
    $this->add_control(
      'pagination_radius',
      [
        'label' => esc_html__( 'Border Radius', 'gum-elementor-addon' ),
        'type' => Controls_Manager::DIMENSIONS,
        'size_units' => [ 'px', '%' ],
        'selectors' => [
          '{{WRAPPER}} .grid-posts-pagination .page-numbers,{{WRAPPER}} .grid-posts-pagination .nav-button' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
        ]
      ]
    );

    $this->add_group_control(
      Group_Control_Border::get_type(),
      [
        'name' => 'pagination_border',
        'selector' => '{{WRAPPER}} .grid-posts-pagination .page-numbers,{{WRAPPER}} .grid-posts-pagination .nav-button',
      ]
    );

    $this->start_controls_tabs( 'tabs_pagination_style' );

    $this->start_controls_tab(
      'tab_pagination_normal',
      [
        'label' => esc_html__( 'Normal', 'gum-elementor-addon' ),
      ]
    );

    $this->add_control(
      'pagination_item_color',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .grid-posts-pagination .page-numbers,{{WRAPPER}} .grid-posts-pagination .nav-button' => 'color: {{VALUE}};',
        ],
      ]
    );


    $this->add_control(
      'pagination_item_bgcolor',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .grid-posts-pagination .page-numbers,{{WRAPPER}} .grid-posts-pagination .nav-button' => 'background-color: {{VALUE}};',
        ],
      ]
    );

    $this->end_controls_tab();
    $this->start_controls_tab(
      'tab_pagination_current',
      [
        'label' => esc_html__( 'Current', 'gum-elementor-addon' ),
        'condition' => ['pagination_type' => 'paging']
      ]
    );


    $this->add_control(
      'pagination_curitem_color',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .grid-posts-pagination .page-numbers.current' => 'color: {{VALUE}};',
        ],
      ]
    );    

    $this->add_control(
      'pagination_curitem_bgcolor',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .grid-posts-pagination .page-numbers.current' => 'background-color: {{VALUE}};',
        ],
      ]
    );   

    $this->add_control(
      'pagination_curitem_bdcolor',
      [
        'label' => esc_html__( 'Border Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .grid-posts-pagination .page-numbers.current' => 'border-color: {{VALUE}};',
        ],
        'condition' => ['pagination_border_border!' => '']
      ]
    );   

    $this->end_controls_tab();

    $this->start_controls_tab(
      'tab_pagination_hover',
      [
        'label' => esc_html__( 'Hover', 'gum-elementor-addon' ),
      ]
    );

    $this->add_control(
      'pagination_item_hovercolor',
      [
        'label' => esc_html__( 'Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .grid-posts-pagination .page-numbers:hover,{{WRAPPER}} .grid-posts-pagination .nav-button:hover' => 'color: {{VALUE}};',
        ],
      ]
    );

    $this->add_control(
      'pagination_item_hoverbgcolor',
      [
        'label' => esc_html__( 'Background', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .grid-posts-pagination .page-numbers:hover,{{WRAPPER}} .grid-posts-pagination .nav-button:hover' => 'background-color: {{VALUE}};',
        ],
      ]
    );

    $this->add_control(
      'pagination_item_hover_bdcolor',
      [
        'label' => esc_html__( 'Border Color', 'gum-elementor-addon' ),
        'type' => Controls_Manager::COLOR,
        'default' => '',
        'selectors' => [
          '{{WRAPPER}} .grid-posts-pagination .page-numbers:hover,{{WRAPPER}} .grid-posts-pagination .nav-button:hover' => 'border-color: {{VALUE}};',
        ],
        'condition' => ['pagination_border_border!' => '']
      ]
    );   

    $this->end_controls_tab();
    $this->end_controls_tabs();


    $this->end_controls_section();

  }

  private static function grid_background_types() {
    return [
      'classic' => [
        'title' => esc_html_x( 'Classic', 'Background Control', 'elementor' ),
        'icon' => 'eicon-paint-brush',
      ],
      'gradient' => [
        'title' => esc_html_x( 'Gradient', 'Background Control', 'elementor' ),
        'icon' => 'eicon-barcode',
      ],
    ];
  }

  private static function get_position_control($element, $id, $selector='', $separator=''){


    $element->add_control(
      $id.'_position',
      [
        'label' => esc_html__( 'Position', 'elementor' ),
        'type' => Controls_Manager::SELECT,
        'default' => '',
        'options' => [
          '' => esc_html__( 'Default', 'elementor' ),
          'absolute' => esc_html__( 'Absolute', 'elementor' ),
          'fixed' => esc_html__( 'Fixed', 'elementor' ),
        ],
        'selectors' => [
          '{{WRAPPER}} '.$selector => 'position: {{VALUE}};',
        ],
        'separator' => $separator
      ]
    );

    $start = is_rtl() ? esc_html__( 'Right', 'elementor' ) : esc_html__( 'Left', 'elementor' );
    $end = ! is_rtl() ? esc_html__( 'Right', 'elementor' ) : esc_html__( 'Left', 'elementor' );

    $element->add_control(
      $id.'_offset_orientation_h',
      [
        'label' => esc_html__( 'Horizontal Orientation', 'elementor' ),
        'type' => Controls_Manager::CHOOSE,
        'toggle' => false,
        'default' => 'start',
        'options' => [
          'start' => [
            'title' => $start,
            'icon' => 'eicon-h-align-left',
          ],
          'end' => [
            'title' => $end,
            'icon' => 'eicon-h-align-right',
          ],
        ],
        'classes' => 'elementor-control-start-end',
        'render_type' => 'ui',
        'condition' => [
          $id.'_position!' => '',
        ],
      ]
    );

    $element->add_responsive_control(
      $id.'_offset_x',
      [
        'label' => esc_html__( 'Offset', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'min' => -1000,
            'max' => 1000,
            'step' => 1,
          ],
          '%' => [
            'min' => -200,
            'max' => 200,
          ],
          'vw' => [
            'min' => -200,
            'max' => 200,
          ],
          'vh' => [
            'min' => -200,
            'max' => 200,
          ],
        ],
        'default' => [
          'size' => '0',
        ],
        'size_units' => [ 'px', '%', 'vw', 'vh' ],
        'selectors' => [
          'body:not(.rtl) {{WRAPPER}} '.$selector => 'left: {{SIZE}}{{UNIT}}',
          'body.rtl {{WRAPPER}} '.$selector => 'right: {{SIZE}}{{UNIT}}',
        ],
        'condition' => [
          $id.'_offset_orientation_h!' => 'end',
          $id.'_position!' => '',
        ],
      ]
    );

    $element->add_responsive_control(
      $id.'_offset_x_end',
      [
        'label' => esc_html__( 'Offset', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'min' => -1000,
            'max' => 1000,
            'step' => 0.1,
          ],
          '%' => [
            'min' => -200,
            'max' => 200,
          ],
          'vw' => [
            'min' => -200,
            'max' => 200,
          ],
          'vh' => [
            'min' => -200,
            'max' => 200,
          ],
        ],
        'default' => [
          'size' => '0',
        ],
        'size_units' => [ 'px', '%', 'vw', 'vh' ],
        'selectors' => [
          'body:not(.rtl) {{WRAPPER}} '.$selector => 'right: {{SIZE}}{{UNIT}}',
          'body.rtl {{WRAPPER}} '.$selector => 'left: {{SIZE}}{{UNIT}}',
        ],
        'condition' => [
          $id.'_offset_orientation_h' => 'end',
          $id.'_position!' => '',
        ],
      ]
    );

    $element->add_control(
      $id.'_offset_orientation_v',
      [
        'label' => esc_html__( 'Vertical Orientation', 'elementor' ),
        'type' => Controls_Manager::CHOOSE,
        'toggle' => false,
        'default' => 'start',
        'options' => [
          'start' => [
            'title' => esc_html__( 'Top', 'elementor' ),
            'icon' => 'eicon-v-align-top',
          ],
          'end' => [
            'title' => esc_html__( 'Bottom', 'elementor' ),
            'icon' => 'eicon-v-align-bottom',
          ],
        ],
        'render_type' => 'ui',
        'condition' => [
          $id.'_position!' => '',
        ],
      ]
    );

    $element->add_responsive_control(
      $id.'_offset_y',
      [
        'label' => esc_html__( 'Offset', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'min' => -1000,
            'max' => 1000,
            'step' => 1,
          ],
          '%' => [
            'min' => -200,
            'max' => 200,
          ],
          'vh' => [
            'min' => -200,
            'max' => 200,
          ],
          'vw' => [
            'min' => -200,
            'max' => 200,
          ],
        ],
        'size_units' => [ 'px', '%', 'vh', 'vw' ],
        'default' => [
          'size' => '0',
        ],
        'selectors' => [
          '{{WRAPPER}} '.$selector => 'top: {{SIZE}}{{UNIT}}',
        ],
        'condition' => [
          $id.'_offset_orientation_v!' => 'end',
          $id.'_position!' => '',
        ],
      ]
    );

    $element->add_responsive_control(
      $id.'_offset_y_end',
      [
        'label' => esc_html__( 'Offset', 'elementor' ),
        'type' => Controls_Manager::SLIDER,
        'range' => [
          'px' => [
            'min' => -1000,
            'max' => 1000,
            'step' => 1,
          ],
          '%' => [
            'min' => -200,
            'max' => 200,
          ],
          'vh' => [
            'min' => -200,
            'max' => 200,
          ],
          'vw' => [
            'min' => -200,
            'max' => 200,
          ],
        ],
        'size_units' => [ 'px', '%', 'vh', 'vw' ],
        'default' => [
          'size' => '0',
        ],
        'selectors' => [
          '{{WRAPPER}} '.$selector => 'bottom: {{SIZE}}{{UNIT}}',
        ],
        'condition' => [
          $id.'_offset_orientation_v' => 'end',
          $id.'_position!' => '',
        ],
      ]
    );





  }

  protected function render() {

    $settings = $this->get_settings_for_display();

    extract( $settings );


    $posts_per_page = isset($posts_per_page) && $posts_per_page!='' ? $posts_per_page : 10;
    $paged = get_query_var('paged');

    if($show_meta == 'yes'){

      $divider = '';

      if($meta_divider == 'text'){
        $divider = '<span>'.esc_html($divider_text).'</span>';

      }elseif($meta_divider == 'icon'){
        ob_start();
        
        Icons_Manager::render_icon( $divider_icon, ['aria-hidden' => 'true'],'span' );

        $divider = ob_get_clean();
      }

      $settings['divider'] = $divider;

    }

    if(! $paged ){
      global $wp_query;
      $paged = $wp_query->get('page');
    }

    $query_params= array(
      'posts_per_page' => $posts_per_page,
      'no_found_rows' => false,
      'post_status' => 'publish',
      'post_type'=>'post',
      'paged' => $paged,
      'ignore_sticky_posts' => true
    );

    $post_not_ids = array();


    if($is_featured_image === 'yes'){

      $query_params['meta_query'] = array('relation'=> 'AND', array( 'key' => '_thumbnail_id' ) );
    }

    if( $posts_offset && $posts_offset > 0 ){
      $query_params['offset'] = absint( $posts_offset );
    }


    if($single_exclude && $single_exclude === 'yes' && is_single()){
      $post_not_ids[] = $post_id = get_the_ID();
    }

    if( $skip_previous == 'yes'){
      $excludes =  $this->get_previous_blog();
      $post_not_ids = array_merge($post_not_ids, $excludes );
    }

    switch ($filter_by) {
      case 'category':
            if($cat_ids !=''){
              $query_params['cat']= trim($cat_ids);
            }
        break;      
      case 'tag':
            if($tags_ids !=''){

              $query_params['tax_query'] = array(
                array(
                  'taxonomy' => 'post_tag',
                  'field' => 'id',
                  'terms' => array( $tags_ids ),
                  'operator' => 'IN'
                )
              );
            }
        break;
      case 'ids':
            if($posts_ids !=''){
              $query_params['post__in']=explode(",",$posts_ids);
            }
        break;
      case 'sticky':
              $query_params['ignore_sticky_posts']= false;
              $sticky_posts = get_option('sticky_posts');

              if( isset($query_params['post__not_in']) && !empty( $query_params['post__not_in'] )){
                $excludes_post = $query_params['post__not_in'];

                foreach ($sticky_posts as $k => $value) {
                  if(in_array($value, $excludes_post)) unset($sticky_posts[$k]);
                }
              }

              $query_params['post__in']= count( $sticky_posts ) ? $sticky_posts : array(0);

        break;
      default:
        break;
    }


    if(count($post_not_ids)){
      $query_params['post__not_in'] = $post_not_ids;
    }


    $post_query = new WP_Query($query_params);

    if (is_wp_error($post_query) || !$post_query->have_posts()) {
      return '';
    }

    $rows_html  = array();

    while ( $post_query->have_posts() ) : 

     $post_query->the_post();
     $rows_html[] = $this->get_post($settings);

    endwhile;

    wp_reset_postdata();

  
    $col_class = 'grid-post grid-col-'.absint($grid_layout).' image-position-'.sanitize_html_class($image_position);

    if($image_totop === 'yes'){
      $col_class.=' mobile-force-ontop';
    }

    echo '<div class="grid-posts"><div class="'.$col_class.'">'.join('</div><div class="'.$col_class.'">',$rows_html).'</div></div><div class="not-empty">&nbsp;</div>';

    if( $show_pagination == 'yes'){

      $base_url="";

      switch ($pagination_baseurl) {
        case 'blog':

            $nex_page_id = get_option('page_for_posts');
            $base_url= get_permalink($nex_page_id); 

          break;                
        case 'custom':
            if(isset( $custom_baseurl['url'] )){
                $base_url = $custom_baseurl['url'];
              }
          break;
        default:
          break;
      }

      $pagination = $this->get_pagination( $post_query, $posts_per_page, $pagination_type, $base_url );

      print $pagination;

    }

  }

  protected function get_pagination( $query, $posts_per_page, $type="", $base_url="" ) {

    if( !is_object( $query ) || !method_exists( $query , 'have_posts')) return;

    $total = $query->found_posts;
    $max_num_pages = ceil( $total / $posts_per_page );

    $pagination_args=array(
          "max_num_pages"=> $max_num_pages,
          "total"=> $total,
          "base_url" => esc_url( $base_url ),
          "before"=>"<li>",
          "after"=>"</li>",
          "navigation_type" => $type,
          "wrapper"=>"<div class=\"grid-posts-pagination %s\" dir=\"ltr\"><ul>%s</ul></div>"
    );

    $pagination =  Gum_Elementor_Helper::blog_pagination( $pagination_args );

    return $pagination;
  }

  protected function get_post($settings = array()) {

    if(!isset( $settings ) || empty( $settings )){
      $settings = $this->get_settings_for_display();
    }

    extract( $settings );      

    $post_id = get_the_ID();
    $post_title = get_the_title();

    $hide_content = true; $post_content = '';

    if(!isset($show_excerpt) || $show_excerpt =='yes'){

      $hide_content = false;
      $post_content = strip_shortcodes( get_the_excerpt() );
      if($post_content_word !='' && $post_content_word > 0){
        $post_content = wp_trim_words($post_content ,  absint($post_content_word) , $post_content_sufix );
      }

    }

    if($post_title_word !='' && $post_title_word > 0 ){
        $post_title = wp_trim_words($post_title ,  absint($post_title_word) , $post_title_sufix );
    }

    $this->add_toprevious_blog( $post_id );
    $post_url = get_the_permalink();

    $thumb_id = get_post_thumbnail_id( $post_id );
    $image = ['id' => $thumb_id ];
    $settings['thumbnail'] = $image;
    $settings['post_id'] = $post_id;
    $settings['post_title'] = $post_title;

    $divider = isset( $settings['divider'] ) ? $settings['divider'] : '';
    $settings['post_url'] = $post_url;

    $is_image = isset($show_image) && $show_image =='yes' || !isset($show_image);

    $image_url = $is_image ? Group_Control_Image_Size::get_attachment_image_src( $thumb_id , 'thumbnail', $settings) : '';

    if ( ! empty( $image_url ) ) {
      $image_html = sprintf( '<img src="%s" title="%s" alt="%s" />', esc_attr( $image_url ), Control_Media::get_image_title( $thumb_id ), Control_Media::get_image_alt( $thumb_id ) );
    }

    $allowed_tags = array('h1','h2','h3','h4','h5','h6','div');
    $tag_title = (in_array( $tag, $allowed_tags )) ? trim( $tag ): 'h4';

    $post_title = sprintf( '<%s class="post-title"><a href="%s">%s</a></%s>',$tag_title, get_the_permalink( $post_id ),esc_html( $post_title ), $tag_title);
    $top_meta = $this->get_post_meta( $settings , 'top', $divider);
    $mid_meta = $this->get_post_meta( $settings , 'mid', $divider);

    $top_content = $title_position == 'content' || $image_url=='' ? $top_meta.$post_title.$mid_meta :  "" ;

    ob_start();
?>
<article id="post-<?php esc_attr_e($post_id); ?>" <?php post_class(); ?>>
    <?php if($image_url!=''):?>
  <div class="post-top">
<?php print $this->get_post_meta( $settings , 'before', $divider); ?>
    <?php if($title_position == 'before'){ print $top_meta.$post_title.$mid_meta; } ?>
    <div class="blog-image" style="background-image: url('<?php esc_attr_e($image_url); ?>');"><?php print $image_html;?></div>
    <?php if($title_position == 'after'){ print $top_meta.$post_title.$mid_meta; } ?>
<?php print $this->get_post_meta( $settings , 'after', $divider); ?>
  </div>
    <?php endif;?>
    <div class="post-content">
      <?php 

      print $top_content;

      ?>
      <?php if(!$hide_content){ printf( '<div class="content-excerpt clearfix">%s</div>', $post_content); } ?>
      <?php print $this->get_post_meta( $settings , 'content', $divider); ?>
      <?php $this->get_readmore_button( 'post-'.$post_id,  $settings ); ?>
  </div>
  <?php print $this->get_post_meta( $settings , 'bottom', $divider); ?>
</article>
<?php 

    return ob_get_clean();
  }

  protected function get_post_meta($settings = array(), $position='', $spacer='') {

    if(!isset($settings['show_meta']) || $settings['show_meta']!='yes' || empty($position) ) return '';

    $post_id = $settings['post_id'];

    $metas = array( 'date_meta','author_meta','category_meta','post_view','reading_time' );
    $rows_html  = array();

    foreach ($metas as $meta) {
      if( isset( $settings[$meta] ) && $position == $settings[$meta] ){

        $meta_url = '';
        $meta_type = '';
        $meta_icon_html = $this->get_meta_icon( $settings[ $meta.'_icon']);


        switch ($meta) {
          case 'post_view':

            $count = Gum_Elementor_Helper::get_post_view_count($post_id);
            $test = _n(  esc_html__('%s view','gum-elementor-addon'), esc_html__('%s views','gum-elementor-addon'), $count);
            $meta_type =  $count ? sprintf($test, $count ) : '';

            break;
          case 'reading_time':

            $reading_speed = isset($settings['reading_speed']) && $settings['reading_speed'] > 1 ? absint($settings['reading_speed']): 200;

            $count = Gum_Elementor_Helper::get_post_reading_time($post_id,$reading_speed);

            $test = _n(  esc_html__('%s minute','gum-elementor-addon'), esc_html__('%s minutes','gum-elementor-addon'), $count);
            $meta_type =  $count ? sprintf($test, $count ) : '';

            break;
          case 'date_meta':
            $meta_type = get_the_date();
            break;
          case 'author_meta':

            $author_id = get_post_field( 'post_author', $post_id );
            $meta_type = get_the_author_meta('nickname', $author_id);
            $meta_url = esc_url(get_the_author_meta('url',$author_id));

            if($settings['author_meta_avatar'] =='yes' && $avatar_url = get_avatar_url($author_id, 100)){
              $meta_icon_html = '<div class="author-avatar"><img src="'.esc_url($avatar_url).'" /></div>'.$meta_icon_html;
            }

            break;
          case 'category_meta':
            $categories = get_the_category($post_id);

            if($categories){
              $category = $categories[0];

              $meta_type = $category->name;
              $meta_url = get_category_link( $category->term_id );
            }
            break;
          default:
            $meta_type = '';
            break;
        }

        if($meta_type!=''){
            $rows_html[] = '<li class="list-meta '.$meta.'">'.$meta_icon_html. ( $meta_url !='' ? sprintf('<a href="%s"><span class="meta-text">%s</span></a>', $meta_url, $meta_type) : sprintf('<span class="meta-text">%s</span>',$meta_type) ).'</li>';
        }

      }


    }

    return '<ul class="meta-position-'.esc_attr($position).' posts-meta">'.join('<li class="meta-divider">'.$spacer.'</li>',$rows_html).'</ul>';

  }

  protected function get_readmore_button( $index, $settings = array() ) {

     if(!isset($settings['show_readmore']) || $settings['show_readmore']!='yes' ) return '';

    $this->add_render_attribute( 'button-'.$index ,
      [
        'class' => ['elementor-button', 'readmore-button' ],
        'role' => 'button'
      ]
    );

    $this->add_link_attributes( 'button-'.$index, array('url' => $settings['post_url']) );
    $this->add_render_attribute( 'button-'.$index, 'class', 'elementor-button-link' );

    $this->add_render_attribute( [
      'readmore_icon_align' => [
        'class' => [
          'elementor-button-icon',
          'elementor-align-icon-' . sanitize_html_class($settings['readmore_icon_align']),
        ],
      ],
    ] );

    $this->add_render_attribute( $index , 'class', 'elementor-button-text' );
    $this->add_inline_editing_attributes( $index, 'none' );

    $readmore_button_align = isset( $settings['readmore_button_align'] ) ? $settings['readmore_button_align'] : '';

    ?><div class="elementor-button-wrap<?php print ' button-align-'.esc_attr($readmore_button_align) ;?>"><a <?php echo $this->get_render_attribute_string( 'button-'.$index ); ?>>
          <span class="elementor-button-content-wrapper">
      <?php if ( ! empty( $settings['readmore_icon']['value'] ) ) : ?>
      <span <?php echo $this->get_render_attribute_string( 'readmore_icon_align' ); ?>>
          <?php Icons_Manager::render_icon( $settings['readmore_icon'], [ 'aria-hidden' => 'true' ] ); ?>
      </span>
      <?php endif; ?>
      <span <?php echo $this->get_render_attribute_string( $index );?>><?php esc_html_e($settings['readmore_label']); ?></span>
    </span>
  </a></div><?php

  }

  protected function get_meta_icon( $meta_icon ) {

    if( empty($meta_icon['value'] )) return '';

     if ( 'svg' === $meta_icon['library'] ) {
        return Icons_Manager::render_uploaded_svg_icon( $meta_icon['value'] );
      } else {
        return Icons_Manager::render_font_icon( $meta_icon, [ 'aria-hidden' => 'true' ], 'i' );
      }

  }

  public function get_previous_blog(  ) {

    global $gum_helper;

    if(!isset($gum_helper) || !isset( $gum_helper['blog_ids'] )){
      $gum_helper['blog_ids'] = array();
    }

    return $gum_helper['blog_ids'];

  } 


  public function add_toprevious_blog( $ids ) {

    global $gum_helper;

    $previous_blog = $this->get_previous_blog();

    if( is_array($ids) ){
      $previous_blog = array_merge( $previous_blog, $ids );
    }
    else{
      array_push($previous_blog, $ids );
    }

    $gum_helper['blog_ids'] = array_unique( $previous_blog );

  }

  protected function content_template() {

  }

  public function enqueue_script( ) {

    wp_enqueue_style( 'gum-elementor-addon',GUM_ELEMENTOR_URL."css/style.css",array());
  }

}

// Register widget
\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Gum_Elementor_Widget_blog_grid() );

?>