<?php 
/*
Widget Name: Table
Description: Content of table.
Author: Theplus
Author URI: https://posimyth.com
*/
namespace TheplusAddons\Widgets;

use Elementor\Widget_Base;
use Elementor\Controls_Manager;
use Elementor\Utils;
use Elementor\Core\Schemes\Color;
use Elementor\Group_Control_Typography;
use Elementor\Group_Control_Background;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Border;
use Elementor\Core\Schemes\Typography;
use Elementor\Group_Control_Image_Size;

if (!defined('ABSPATH'))
    exit; // Exit if accessed directly


class ThePlus_Data_Table extends Widget_Base {
		
	public function get_name() {
		return 'tp-table';
	}

    public function get_title() {
        return esc_html__('Table', 'theplus');
    }

    public function get_icon() {
        return 'fa fa-table theplus_backend_icon';
    }

    public function get_categories() {
        return array('plus-essential');
    }

    protected function register_controls() {
		$this->start_controls_section(
			'section_table',
			[
				'label' => esc_html__( 'Table', 'theplus' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);
		$this->add_control(
			'table_selection',
			[
				'label' => esc_html__( 'Content Table', 'theplus' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'custom',
				'options' => [
					'custom'  => esc_html__( 'Custom', 'theplus' ),
					'csv_file' => esc_html__( 'CSV File', 'theplus' ),
				],
			]
		);
		$this->add_control(
			'file',
			[
				'label'         => esc_html__( 'Enter a CSV File URL', 'theplus' ),
				'type'          => Controls_Manager::URL,
				'show_external' => false,
				'label_block'   => true,
				'default'       => [
					'url' => THEPLUS_ASSETS_URL . 'images/table.csv',
				],
				'condition'     => [
					'table_selection' => 'csv_file',
				],
			]
		);
		$this->end_controls_section();
		
		$this->start_controls_section(
			'section_table_header',
			[
				'label' => esc_html__( 'Table Header', 'theplus' ),
				'tab' => Controls_Manager::TAB_CONTENT,
				'condition'     => [
					'table_selection' => 'custom',
				],
			]
		);
		// Repeater object created.
		$repeater = new \Elementor\Repeater();

		// Content Type Row/Col.
		$repeater->add_control(
			'header_content_type',
			[
				'label'   => esc_html__( 'Action', 'theplus' ),
				'type'    => Controls_Manager::SELECT,
				'default' => 'cell',
				'options' => [
					'row'  => esc_html__( 'Start New Row', 'theplus' ),
					'cell' => esc_html__( 'Cell Content', 'theplus' ),
				],
			]
		);
		
		// Table TH heading Row/Cell Note.
		$repeater->add_control(
			'add_head_cell_row_description',
			[
				'label'     => '',
				'type'      => Controls_Manager::TEXT,
				'dynamic'   => [
					'active' => true,
				],
				'type'      => Controls_Manager::RAW_HTML,
				'raw'       => sprintf( '<p style="font-size: 12px;font-style: italic;line-height: 1.4;color: #a4afb7;">%s</p>', __( 'Your new row have been initiated. Add content of cells by selecting <b>"Cell Content"</b> in your next repeater tab.', 'theplus' ) ),
				'condition' => [
					'header_content_type' => 'row',
				],
			]
		);
		$repeater->start_controls_tabs( 'items_repeater' );

		// Start control Table content.
		$repeater->start_controls_tab(
			'tab_head_content',
			[
				'label'     => esc_html__( 'CONTENT', 'theplus' ),
				'condition' => [
					'header_content_type' => 'cell',
				],
			]
		);
		$repeater->add_control(
			'heading_text',
			[
				'label'     => esc_html__( 'Text', 'theplus' ),
				'type'      => Controls_Manager::TEXT,
				'dynamic' => ['active'   => true,],
				'condition' => [
					'header_content_type' => 'cell',
				],
			]
		);
		$repeater->add_control(
			'heading_show_tooltips',
			[
				'label'        => esc_html__( 'Tooltip', 'theplus' ),
				'type'         => Controls_Manager::SWITCHER,
				'label_on'     => esc_html__( 'Enable', 'theplus' ),
				'label_off'    => esc_html__( 'Disable', 'theplus' ),
				'render_type'  => 'template',
				'separator' => 'before',
			]
		);
		$repeater->add_control(
			'heading_show_tooltips_on',
			[
				'label' => esc_html__( 'Tooltip On', 'theplus' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'box',
				'options' => [
					'box'  => esc_html__( 'Box', 'theplus' ),
					'icon'  => esc_html__( 'Icon', 'theplus' ),
				],
				'condition' => [
					'heading_show_tooltips' => 'yes',
				],
			]
		);
		$repeater->add_control(
			'heading_tooltip_content',
			[
				'label' => esc_html__( 'Tooltip Content', 'theplus' ),
				'type' => Controls_Manager::TEXTAREA,
				'default' => esc_html__( 'Luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'theplus' ),
				'dynamic' => ['active'   => true,],
				'condition' => [
					'heading_show_tooltips' => 'yes',
				],
			]				
		);
		$repeater->end_controls_tab();

		// Start control content.
		$repeater->start_controls_tab(
			'tab_head_icon',
			[
				'label'     => esc_html__( 'ICON / IMAGE', 'theplus' ),
				'condition' => [
					'header_content_type' => 'cell',
				],
			]
		);
		$repeater->add_control(
			'header_content_icon_image',
			[
				'label'   => esc_html__( 'Select', 'theplus' ),
				'type'    => Controls_Manager::SELECT,
				'default' => 'none',
				'options' => [
					'none' => esc_html__( 'None', 'theplus' ),
					'icon' => esc_html__( 'Icon', 'theplus' ),
					'image' => esc_html__( 'Image', 'theplus' ),
				],
			]
		);
		$repeater->add_control(
			'icons_image',
			[
				'label' => esc_html__( 'Use Image As icon', 'theplus' ),
				'type' => Controls_Manager::MEDIA,
				'default' => [
					'url' => '',
				],
				'media_type' => 'image',
				'dynamic' => ['active'   => true,],
				'condition' => [					
					'header_content_icon_image' => 'image',
				],
			]
		);
		$repeater->add_group_control(
			Group_Control_Image_Size::get_type(),
			[
				'name' => 'icons_image_thumbnail',
				'default' => 'full',
				'separator' => 'none',
				'separator' => 'before',
				'condition' => [					
					'header_content_icon_image' => 'image',
				],
			]
		);
		$repeater->add_control(
			'icon_font_style',
			[
				'label' => esc_html__( 'Icon Font', 'theplus' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'font_awesome',
				'options' => [
					'font_awesome'  => esc_html__( 'Font Awesome', 'theplus' ),
					'icon_mind' => esc_html__( 'Icons Mind', 'theplus' ),
				],
				'condition' => [					
					'header_content_icon_image' => 'icon',
				],
			]
		);
		$repeater->add_control(
			'icon_fontawesome',
			[
				'label' => esc_html__( 'Icon Library', 'theplus' ),
				'type' => Controls_Manager::ICON,
				'default' => 'fa fa-bank',
				'condition' => [			
					'header_content_icon_image' => 'icon',
					'icon_font_style' => 'font_awesome',
				],
			]
		);
		$repeater->add_control(
			'icons_mind',
			[
				'label' => esc_html__( 'Icon Library', 'theplus' ),
				'type' => Controls_Manager::SELECT2,
				'default' => '',
				'label_block' => true,
				'options' => theplus_icons_mind(),
				'condition' => [				
					'header_content_icon_image' => 'icon',
					'icon_font_style' => 'icon_mind',
				],
			]
		);
		$repeater->end_controls_tab();
		// Start control content.
		$repeater->start_controls_tab(
			'tab_head_advance',
			[
				'label'     => esc_html__( 'ADVANCE', 'theplus' ),
				'condition' => [
					'header_content_type' => 'cell',
				],
			]
		);
		$repeater->add_control(
			'heading_col_span',
			[
				'label'     => esc_html__( 'Column Span', 'theplus' ),
				'title'     => esc_html__( 'Number of columns for this column span COLSPAN.', 'theplus' ),
				'type'      => Controls_Manager::NUMBER,
				'default'   => 1,
				'min'       => 1,
				'max'       => 20,
				'step'      => 1,
				'condition' => [
					'header_content_type' => 'cell',
				],
			]
		);

		// Column row Span.
		$repeater->add_control(
			'heading_row_span',
			[
				'label'     => esc_html__( 'Row Span', 'theplus' ),
				'title'     => esc_html__( 'Number of rows for this column span ROWSPAN. Note : Put Row Span first and Column Span second in list.', 'theplus' ),
				'type'      => Controls_Manager::NUMBER,
				'default'   => 1,
				'min'       => 1,
				'max'       => 20,
				'step'      => 1,
				'separator' => 'below',
				'condition' => [
					'header_content_type' => 'cell',
				],
			]
		);

		// Column row Span.
		$repeater->add_control(
			'heading_row_width',
			[
				'label'      => esc_html__( 'Column Width', 'theplus' ),
				'type'       => Controls_Manager::SLIDER,
				'range'      => [
					'px' => [
						'min' => 0,
						'max' => 500,
					],
					'%'  => [
						'min' => 0,
						'max' => 100,
					],
				],
				'size_units' => [ 'px', '%' ],
				'separator'  => 'below',
				'selectors'  => [
					'{{WRAPPER}} {{CURRENT_ITEM}}.plus-table-col' => 'width: {{SIZE}}{{UNIT}}',
				],
				'condition'  => [
					'header_content_type' => 'cell',
				],
			]
		);

		// Single Header Text Color.
		$repeater->add_control(
			'single_heading_color',
			[
				'label'     => esc_html__( 'Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .plus-table-row {{CURRENT_ITEM}} .plus-table__text' => 'color: {{VALUE}};',
				],
				'condition' => [
					'header_content_type' => 'cell',
				],
			]
		);

		// Single Header Background Color.
		$repeater->add_control(
			'single_heading_background_color',
			[
				'label'     => esc_html__( 'Background Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} thead .plus-table-row {{CURRENT_ITEM}}' => 'background-color: {{VALUE}};',
				],
				'condition' => [
					'header_content_type' => 'cell',
				],
			]
		);

		$repeater->end_controls_tab();
		$repeater->end_controls_tab();
		
		$this->add_control(
			'table_headings',
			[
				'type'        => Controls_Manager::REPEATER,
				'show_label'  => true,
				'fields'      => $repeater->get_controls(),
				'title_field' => '{{ header_content_type }}: {{{ heading_text }}}',
				'default'     => [
					[
						'header_content_type' => 'row',
					],
					[
						'header_content_type' => 'cell',
						'heading_text'        => esc_html__( 'ID', 'theplus' ),
					],
					[
						'header_content_type' => 'cell',
						'heading_text'        => esc_html__( 'Title 1', 'theplus' ),
					],
					[
						'header_content_type' => 'cell',
						'heading_text'        => esc_html__( 'Title 2', 'theplus' ),
					],
				],
			]
		);		
		$this->end_controls_section();
		/*Table Header*/
		
		/*Table Content*/		
		$this->start_controls_section(
			'section_table_content',
			[
				'label'     => esc_html__( 'Table Body', 'theplus' ),
				'condition'     => [
					'table_selection' => 'custom',
				],
			]
		);

		$repeater_row_col = new \Elementor\Repeater();

		// Content Type Row/Col.
		$repeater_row_col->add_control(
			'content_type',
			[
				'label'   => esc_html__( 'Action', 'theplus' ),
				'type'    => Controls_Manager::SELECT,
				'default' => 'cell',
				'options' => [
					'row'  => esc_html__( 'Start New Row', 'theplus' ),
					'cell' => esc_html__( 'Cell Content', 'theplus' ),
				],
			]
		);

		// Table heading border Row/Cell Note.
		$repeater_row_col->add_control(
			'add_body_cell_row_description',
			[
				'type'      => Controls_Manager::RAW_HTML,
				'raw'       => sprintf( '<p style="font-size: 12px;font-style: italic;line-height: 1.4;color: #a4afb7;">%s</p>', __( 'Your new row have been initiated. Add content of cells by selecting <b>"Cell Content"</b> in your next repeater tab.', 'theplus' ) ),
				'condition' => [
					'content_type' => 'row',
				],
			]
		);

		// Start control tab.
		$repeater_row_col->start_controls_tabs( 'items_repeater' );

		$repeater_row_col->start_controls_tab(
			'tab_content',
			[
				'label'     => esc_html__( 'Content', 'theplus' ),
				'condition' => [
					'content_type' => 'cell',
				],
			]
		);

		// Single Column text.
		$repeater_row_col->add_control(
			'cell_text',
			[
				'label'     => esc_html__( 'Text', 'theplus' ),
				'type'      => Controls_Manager::TEXTAREA,
				'dynamic'   => [
					'active' => true,
				],
				'condition' => [
					'content_type' => 'cell',
				],
			]
		);

		// Single Column LINK.
		$repeater_row_col->add_control(
			'link',
			[
				'label'       => esc_html__( 'Link', 'theplus' ),
				'type'        => Controls_Manager::URL,
				'placeholder' => '#',
				'dynamic'     => [
					'active' => true,
				],
				'default'     => [
					'url' => '',
				],
				'condition'   => [
					'content_type' => 'cell',
				],
			]
		);
		$repeater_row_col->add_control(
			'cell_display_button',
			[
				'label' => esc_html__( 'Button', 'theplus' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'theplus' ),
				'label_off' => esc_html__( 'Hide', 'theplus' ),
				'default' => 'no',
				'condition'   => [
					'content_type' => 'cell',
				],
				'separator' => 'before',
			]
		);
		$repeater_row_col->add_control(
			'cell_button_style', [
				'type' => Controls_Manager::SELECT,
				'label' => esc_html__('Button Style', 'theplus'),
				'default' => 'style-8',
				'options' => [						
					'style-8' => esc_html__('Style 1', 'theplus'),							
				],
				'condition' => [
					'content_type' => 'cell',
					'cell_display_button' => 'yes',
				],
			]
		);
		$repeater_row_col->add_control(
			'cell_button_text',
			[
				'label' => esc_html__( 'Button Text', 'theplus' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Click here', 'theplus' ),
				'dynamic' => ['active'   => true,],
				'condition' => [
					'content_type' => 'cell',
					'cell_display_button' => 'yes',
				],
			]
		);
		$repeater_row_col->add_control(
			'cell_button_link',
			[
				'label' => esc_html__( 'URL/Link', 'theplus' ),
				'type' => Controls_Manager::URL,						
				'show_external' => true,
				'default' => [
					'url' => '',
					'is_external' => true,
					'nofollow' => true,
				],
				'dynamic' => ['active'   => true,],
				'condition' => [
					'content_type' => 'cell',
					'cell_display_button' => 'yes',
				],
			]
		);
		$repeater_row_col->add_control(
			'button_custom_attributes',
			[
				'label'     => __( 'Add Custom Attributes', 'theplus' ),
				'type'      => Controls_Manager::SWITCHER,
				'label_on'     => esc_html__( 'Yes', 'theplus' ),
				'label_off'    => esc_html__( 'No', 'theplus' ),
				'default' => 'no',
				'condition' => [
					'content_type' => 'cell',
					'cell_display_button' => 'yes',
				],
			]
		);

		$repeater_row_col->add_control(
			'custom_attributes',
			[
				'label' => __( 'Custom Attributes', 'theplus' ),
				'type' => Controls_Manager::TEXTAREA,
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => __( 'key|value', 'theplus' ),				
				'condition' => [
					'content_type' => 'cell',
					'cell_display_button' => 'yes',
					'button_custom_attributes' => 'yes'
				]
			]
		);
		$repeater_row_col->add_control(
			'body_show_tooltips',
			[
				'label'        => esc_html__( 'Tooltip', 'theplus' ),
				'type'         => Controls_Manager::SWITCHER,
				'label_on'     => esc_html__( 'Enable', 'theplus' ),
				'label_off'    => esc_html__( 'Disable', 'theplus' ),
				'render_type'  => 'template',
				'separator' => 'before',
			]
		);
		$repeater_row_col->add_control(
			'body_show_tooltips_on',
			[
				'label' => esc_html__( 'Tooltip On', 'theplus' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'box',
				'options' => [
					'box'  => esc_html__( 'Box', 'theplus' ),
					'icon'  => esc_html__( 'Icon', 'theplus' ),
				],
				'condition' => [
					'body_show_tooltips' => 'yes',
				],
			]
		);
		$repeater_row_col->add_control(
			'body_tooltip_content',
			[
				'label' => esc_html__( 'Tooltip Content', 'theplus' ),
				'type' => Controls_Manager::TEXTAREA,
				'default' => esc_html__( 'Luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'theplus' ),
				'dynamic' => ['active'   => true,],
				'condition' => [
					'body_show_tooltips' => 'yes',
				],
			]				
		);
		$repeater_row_col->end_controls_tab();

		// Start Icon/Image Tab.
		$repeater_row_col->start_controls_tab(
			'tab_media',
			[
				'label'     => esc_html__( 'ICON / IMAGE', 'theplus' ),
				'condition' => [
					'content_type' => 'cell',
				],
			]
		);

		// Type Icon/Image.
		$repeater_row_col->add_control(
			'cell_content_icon_image',
			[
				'label'   => esc_html__( 'Select', 'theplus' ),
				'type'    => Controls_Manager::SELECT,
				'default' => 'none',
				'options' => [
					'none' => esc_html__( 'None', 'theplus' ),
					'icon' => esc_html__( 'Icon', 'theplus' ),
					'image' => esc_html__( 'Image', 'theplus' ),
				],
			]
		);
				
		$repeater_row_col->add_control(
			'icon_font_style',
			[
				'label' => esc_html__( 'Icon Font', 'theplus' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'font_awesome',
				'options' => [
					'font_awesome'  => esc_html__( 'Font Awesome', 'theplus' ),
					'icon_mind' => esc_html__( 'Icons Mind', 'theplus' ),
				],
				'condition' => [
					'content_type'            => 'cell',
					'cell_content_icon_image' => 'icon',
				],
			]
		);
		
		$repeater_row_col->add_control(
			'cell_icon',
			[
				'label'       => esc_html__( 'Icon', 'theplus' ),
				'type'        => Controls_Manager::ICON,
				'label_block' => false,
				'default'     => '',
				'condition'   => [
					'content_type'            => 'cell',
					'icon_font_style'            => 'font_awesome',
					'cell_content_icon_image' => 'icon',
				],
			]
		);
		$repeater_row_col->add_control(
			'cell_icons_mind',
			[
				'label' => esc_html__( 'Icon Minds', 'theplus' ),
				'type' => Controls_Manager::SELECT2,
				'default' => '',
				'label_block' => true,
				'options' => theplus_icons_mind(),
				'condition' => [				
					'content_type'            => 'cell',
					'cell_content_icon_image' => 'icon',
					'icon_font_style' => 'icon_mind',
				],
			]
		);
		$repeater_row_col->add_control(
			'cell_icon_color',
			[
				'label' => esc_html__( 'Icon Color', 'theplus' ),
				'type' => Controls_Manager::COLOR,
				'condition' => [				
					'content_type'            => 'cell',
					'cell_content_icon_image' => 'icon',
				],
				'selectors' => [
					'{{WRAPPER}} .plus-table-row td.plus-table-col{{CURRENT_ITEM}} .plus-table__text i' => 'color: {{VALUE}};',
				],
			]
		);
		// Image.
		$repeater_row_col->add_control(
			'image',
			[
				'label'     => esc_html__( 'Choose Image', 'theplus' ),
				'type'      => Controls_Manager::MEDIA,
				'dynamic'   => [
					'active' => true,
				],
				'condition' => [
					'content_type'            => 'cell',
					'cell_content_icon_image' => 'image',
				],
			]
		);
		$repeater_row_col->add_group_control(
			Group_Control_Image_Size::get_type(),
			[
				'name' => 'image_thumbnail',
				'default' => 'full',
				'separator' => 'none',
				'separator' => 'before',
				'condition' => [
					'content_type'            => 'cell',
					'cell_content_icon_image' => 'image',
				],
			]
		);

		$repeater_row_col->end_controls_tab();

		$repeater_row_col->start_controls_tab(
			'tab_advance_cells',
			[
				'label'     => esc_html__( 'Advance', 'theplus' ),
				'condition' => [
					'content_type' => 'cell',
				],
			]
		);
		$repeater_row_col->add_responsive_control(
			'cell_align',
			[
				'label'     => esc_html__( 'Text Alignment', 'theplus' ),
				'type'      => Controls_Manager::CHOOSE,
				'default'   => '',
				'options'   => [
					'left'   => [
						'title' => esc_html__( 'Left', 'theplus' ),
						'icon'  => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'theplus' ),
						'icon'  => 'eicon-text-align-center',
					],
					'right'  => [
						'title' => esc_html__( 'Right', 'theplus' ),
						'icon'  => 'eicon-text-align-right',
					],
				],
				'condition' => [
					'content_type' => 'cell',
				],
				'selectors' => [
					'{{WRAPPER}} td{{CURRENT_ITEM}} .plus-table__text,{{WRAPPER}} td{{CURRENT_ITEM}}' => 'text-align: {{VALUE}};',
				],
			]
		);
		
		$repeater_row_col->add_control(
			'cell_span',
			[
				'label'     => esc_html__( 'Column Span', 'theplus' ),
				'title'     => esc_html__( 'Number of columns for this column span.', 'theplus' ),
				'type'      => Controls_Manager::NUMBER,
				'default'   => 1,
				'min'       => 1,
				'max'       => 20,
				'step'      => 1,
				'condition' => [
					'content_type' => 'cell',
				],
			]
		);
			
		$repeater_row_col->add_control(
			'cell_row_span',
			[
				'label'     => esc_html__( 'Row Span', 'theplus' ),
				'title'     => esc_html__( 'Number of rows for this column span.', 'theplus' ),
				'type'      => Controls_Manager::NUMBER,
				'default'   => 1,
				'min'       => 1,
				'max'       => 20,
				'step'      => 1,
				'separator' => 'below',
				'condition' => [
					'content_type' => 'cell',
				],
			]
		);

		$repeater_row_col->add_control(
			'table_th_td',
			[
				'label'       => esc_html__( 'Mark this cell as a Table Heading?', 'theplus' ),
				'type'        => Controls_Manager::SELECT,
				'options'     => [
					'td' => esc_html__( 'No', 'theplus' ),
					'th' => esc_html__( 'Yes', 'theplus' ),
				],
				'default'     => 'td',
				'condition'   => [
					'content_type' => 'cell',
				],
				'label_block' => true,
			]
		);

		$repeater_row_col->end_controls_tab();

		$repeater_row_col->end_controls_tabs();

		// Repeater default values.
		$this->add_control(
			'table_content',
			[
				'type'        => Controls_Manager::REPEATER,
				'default'     => [
					[
						'content_type' => 'row',
					],
					[
						'content_type' => 'cell',
						'cell_text'    => esc_html__( 'Sample #1', 'theplus' ),
					],
					[
						'content_type' => 'cell',
						'cell_text'    => esc_html__( 'Row 1, Content 1', 'theplus' ),
					],
					[
						'content_type' => 'cell',
						'cell_text'    => esc_html__( 'Row 1, Content 2', 'theplus' ),
					],
					[
						'content_type' => 'row',
					],
					[
						'content_type' => 'cell',
						'cell_text'    => esc_html__( 'Sample #2', 'theplus' ),
					],
					[
						'content_type' => 'cell',
						'cell_text'    => esc_html__( 'Row 2, Content 1', 'theplus' ),
					],
					[
						'content_type' => 'cell',
						'cell_text'    => esc_html__( 'Row 2, Content 2', 'theplus' ),
					],
					[
						'content_type' => 'row',
					],
					[
						'content_type' => 'cell',
						'cell_text'    => esc_html__( 'Sample #3', 'theplus' ),
					],
					[
						'content_type' => 'cell',
						'cell_text'    => esc_html__( 'Row 3, Content 1', 'theplus' ),
					],
					[
						'content_type' => 'cell',
						'cell_text'    => esc_html__( 'Row 3, Content 2', 'theplus' ),
					],
				],
				'fields'      => $repeater_row_col->get_controls(),
				'title_field' => '{{ content_type }}: {{{ cell_text }}}',
			]
		);

		$this->end_controls_section();
		/*Table Content*/
		
		/*Table Extra Option*/
		$this->start_controls_section(
			'section_advance_settings',
			[
				'label' => esc_html__( 'Extra Settings', 'theplus' ),
			]
		);

		$this->add_control(
			'searchable',
			[
				'label'        => esc_html__( 'Table Searchable', 'theplus' ),
				'type'         => Controls_Manager::SWITCHER,
				'label_on'     => esc_html__( 'On', 'theplus' ),
				'label_off'    => esc_html__( 'Off', 'theplus' ),
				'return_value' => 'yes',
				'default'      => 'no',
			]
		);
		$this->add_control(
			'searchable_label',
			[
				'label' => esc_html__( 'Search Field Label', 'theplus' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Search', 'theplus' ),
				'dynamic' => ['active'   => true,],
				'condition'   => [
					'searchable' => 'yes',
				],
			]
		);
		$this->add_control(
			'sortable',
			[
				'label'        => esc_html__( 'Table Sortable', 'theplus' ),
				'type'         => Controls_Manager::SWITCHER,
				'label_on'     => esc_html__( 'On', 'theplus' ),
				'label_off'    => esc_html__( 'Off', 'theplus' ),					
				'return_value' => 'yes',
				'default'      => 'no',
				'separator'	=> 'before',
			]
		);

		
		$this->add_control(
			'show_entries',
			[
				'label'        => esc_html__( 'Entry Filter Dropdown', 'theplus' ),
				'description'  => esc_html__( 'Controls the number of entries in a table.', 'theplus' ),
				'type'         => Controls_Manager::SWITCHER,
				'label_on'     => esc_html__( 'On', 'theplus' ),
				'label_off'    => esc_html__( 'Off', 'theplus' ),
				'return_value' => 'yes',
				'default'      => 'no',
				'separator'	=> 'before',
			]
		);
		$this->add_control(
			'mobile_responsive_table',
			[
				'label' => esc_html__( 'Mobile Responsive', 'theplus' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'default',
				'options' => [
					'default'  => esc_html__( 'Swipe Responsive', 'theplus' ),
					'one-by-one' => esc_html__( 'One by One Responsive', 'theplus' ),
				],
				'separator'	=> 'before',
			]
		);

		$this->end_controls_section();
		/*Table Extra Option*/
		
		/*Table Header Style*/
		$this->start_controls_section(
			'section_header_style',
			[
				'label' => esc_html__( 'Table Header', 'theplus' ),
				'tab'   => Controls_Manager::TAB_STYLE,
			]
		);
		
		$this->add_responsive_control(
			'cell_align_head_normal',
			[
				'label'     => esc_html__( 'Text Alignment', 'theplus' ),
				'type'      => Controls_Manager::CHOOSE,
				'default'   => '',
				'options'   => [
					'left'   => [
						'title' => esc_html__( 'Left', 'theplus' ),
						'icon'  => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'theplus' ),
						'icon'  => 'eicon-text-align-center',
					],
					'right'  => [
						'title' => esc_html__( 'Right', 'theplus' ),
						'icon'  => 'eicon-text-align-right',
					],
				],
				'condition'   => [
					'table_selection' => 'custom',
				],
			]
		);
		$this->add_responsive_control(
			'cell_align_head',
			[
				'label'     => esc_html__( 'Text Alignment', 'theplus' ),
				'type'      => Controls_Manager::CHOOSE,
				'default'   => '',
				'options'   => [
					'left'   => [
						'title' => esc_html__( 'Left', 'theplus' ),
						'icon'  => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'theplus' ),
						'icon'  => 'eicon-text-align-center',
					],
					'right'  => [
						'title' => esc_html__( 'Right', 'theplus' ),
						'icon'  => 'eicon-text-align-right',
					],
				],
				'condition'   => [
						'table_selection' => 'csv_file',
				],
				'selectors' => [
					'{{WRAPPER}} th .plus-table__text,{{WRAPPER}} th' => 'text-align: {{VALUE}};',
				],
			]
		);
		
		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name'     => 'header_typography',
				'label'    => esc_html__( 'Typography', 'theplus' ),
				'scheme'   => Typography::TYPOGRAPHY_4,
				'selector' => '{{WRAPPER}} th.plus-table-col',
			]
		);

		$this->add_responsive_control(
			'cell_padding_head',
			[
				'label'      => esc_html__( 'Padding', 'theplus' ),
				'type'       => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px' ],
				'default'    => [
					'top'      => '15',
					'bottom'   => '15',
					'left'     => '15',
					'right'    => '15',
					'unit'     => 'px',
					'isLinked' => true,
				],
				'selectors'  => [
					'{{WRAPPER}} th.plus-table-col' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->start_controls_tabs( 'tabs_header_colors_row' );

		
		$this->start_controls_tab( 'tab_header_colors_row', [ 'label' => esc_html__( 'Normal', 'theplus' ) ] );

		$this->add_control(
			'header_cell_color_row',
			[
				'label'     => esc_html__( 'Row Text Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'scheme'    => [
					'type'  => Color::get_type(),
					'value' => Color::COLOR_3,
				],
				'selectors' => [
					'{{WRAPPER}} thead .plus-table-row th .plus-table__text' => 'color: {{VALUE}};',
					'{{WRAPPER}} th' => 'color: {{VALUE}};',
					'{{WRAPPER}} tbody .plus-table-row th' => 'color: {{VALUE}};',							
				],
			]
		);


		$this->add_control(
			'header_cell_background_row',
			[
				'label'     => esc_html__( 'Row Background Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} thead .plus-table-row th' => 'background-color: {{VALUE}};',
					'{{WRAPPER}} tbody .plus-table-row th' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'header_border_styling',
			[
				'label'        => esc_html__( 'Apply Border To', 'theplus' ),
				'type'         => Controls_Manager::SWITCHER,
				'label_on'     => esc_html__( 'CELL', 'theplus' ),
				'label_off'    => esc_html__( 'ROW', 'theplus' ),
				'return_value' => 'yes',
				'default'      => 'yes',
				'prefix_class' => 'plus-border-',
			]
		);


		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name'           => 'row_border_head',
				'label'          => esc_html__( 'Row Border', 'theplus' ),
				'fields_options' => [
					'border' => [
						'default' => 'solid',
					],
					'width'  => [
						'default' => [
							'top'      => '1',
							'right'    => '1',
							'bottom'   => '1',
							'left'     => '1',
							'isLinked' => true,
						],
					],
					'color'  => [
						'default' => '#bbb',
					],
				],
				'selector'       => '{{WRAPPER}} thead tr.plus-table-row, {{WRAPPER}} tbody .plus-table-row th',
				'condition'      => [
					'header_border_styling!' => 'yes',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name'           => 'cell_border_head',
				'label'          => esc_html__( 'Cell Border', 'theplus' ),
				'selector'       => '{{WRAPPER}} th.plus-table-col',
				'fields_options' => [
					'border' => [
						'default' => 'solid',
					],
					'width'  => [
						'default' => [
							'top'      => '1',
							'right'    => '1',
							'bottom'   => '1',
							'left'     => '1',
							'isLinked' => true,
						],
					],
					'color'  => [
						'default' => '#bbb',
					],
				],
				'condition'      => [
					'header_border_styling' => 'yes',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'tab_header_hover_colors_row', [ 'label' => esc_html__( 'Hover', 'theplus' ) ] );

		$this->add_control(
			'header_cell_hover_color_row',
			[
				'label'     => esc_html__( 'Row Text Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} thead .plus-table-row:hover .plus-table__text' => 'color: {{VALUE}};',
					'{{WRAPPER}} tbody .plus-table-row:hover th .plus-table__text' => 'color: {{VALUE}};',
					'{{WRAPPER}} .plus-table-row:hover th' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'header_cell_hover_background_row',
			[
				'label'     => esc_html__( 'Row Background Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} thead .plus-table-row:hover > th' => 'background-color: {{VALUE}};',
					'{{WRAPPER}} .plus-table tbody .plus-table-row:hover > th' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'header_cell_hover_color',
			[
				'label'     => esc_html__( 'Cell Hover Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} thead th.plus-table-col:hover .plus-table__text' => 'color: {{VALUE}};',
					'{{WRAPPER}} tbody .plus-table-row th.plus-table-col:hover .plus-table__text' => 'color: {{VALUE}};',
					'{{WRAPPER}} tr.plus-table-row th.plus-table-col:hover' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'header_cell_hover_background',
			[
				'label'     => esc_html__( 'Cell Hover Background Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} thead .plus-table-row th.plus-table-col:hover' => 'background-color: {{VALUE}};',
					'{{WRAPPER}} .plus-table tbody .plus-table-row:hover >  th.plus-table-col:hover' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();
		/*Table Header Style*/
		
		/*Table Header Mobile Style*/
		$this->start_controls_section(
			'section_table_mobile_res_style',
			[
				'label' => esc_html__( 'Header Mobile Responsive Style', 'theplus' ),
				'tab'   => Controls_Manager::TAB_STYLE,
				'condition'      => [
					'mobile_responsive_table' => 'one-by-one',
				],
			]
		);
		
		$this->add_control(
			'mob_cell_align_head',
			[
				'label'     => esc_html__( 'Text Alignment', 'theplus' ),
				'type'      => Controls_Manager::CHOOSE,
				'default'   => '',
				'options'   => [
					'left'   => [
						'title' => esc_html__( 'Left', 'theplus' ),
						'icon'  => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'theplus' ),
						'icon'  => 'eicon-text-align-center',
					],
					'right'  => [
						'title' => esc_html__( 'Right', 'theplus' ),
						'icon'  => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}} .plus-table-mob-res span.plus-table-mob-row' => 'text-align: {{VALUE}};width: 100%;',
				],
			]
		);
		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name'     => 'mob_header_typography',
				'label'    => esc_html__( 'Typography', 'theplus' ),
				'scheme'   => Typography::TYPOGRAPHY_4,
				'selector' => '{{WRAPPER}} .plus-table-mob-res span.plus-table-mob-row',
			]
		);
		$this->add_responsive_control(
			'mob_cell_padding',
			[
				'label'      => esc_html__( 'Padding', 'theplus' ),
				'type'       => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px' ],
				'default'    => [
					'top'      => '15',
					'bottom'   => '15',
					'left'     => '15',
					'right'    => '15',
					'unit'     => 'px',
					'isLinked' => true,
				],
				'selectors'  => [
					'{{WRAPPER}} .plus-table-mob-res span.plus-table-mob-row,{{WRAPPER}} .plus-table-mob-res .plus-table-mob-wrap span.plus-table__text' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);
		$this->add_control(
			'mob_cell_head_width',
			[
				'label' => esc_html__( 'Heading Cell Width', 'theplus' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px'],
				'range' => [
					'px' => [
						'min' => 50,
						'max' => 500,
						'step' => 1,
					],
				],
				'default' => [
					'unit' => 'px',
					'size' => 120,
				],
				'selectors' => [
					'{{WRAPPER}} .plus-table.plus-table-mob-res .plus-table-mob-wrap span.plus-table-mob-row' => '-webkit-flex-basis: {{SIZE}}{{UNIT}};-ms-flex-preferred-size: {{SIZE}}{{UNIT}};flex-basis: {{SIZE}}{{UNIT}};',
				],
			]
		);
		
		$this->start_controls_tabs( 'tabs_mob_head_colors_row' );

		
		$this->start_controls_tab( 'tab_mob_head_colors_row', 
			[ 
				'label' => esc_html__( 'Normal', 'theplus' )
			]
		);

		$this->add_control(
			'mob_head_cell_color_row',
			[
				'label'     => esc_html__( 'Heading Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'scheme'    => [
					'type'  => Color::get_type(),
					'value' => Color::COLOR_3,
				],
				'selectors' => [
					'{{WRAPPER}} .plus-table-mob-res span.plus-table-mob-row' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'mob_head_cell_background_row',
			[
				'label'     => esc_html__( 'Heading Background Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .plus-table-mob-res span.plus-table-mob-row' => 'background-color: {{VALUE}};',		
				],
			]
		);
		$this->add_responsive_control(
			'mob_cell_border_width',
			[
				'label' => esc_html__( 'Border Width', 'theplus' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px'],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 20,
						'step' => 1,
					],
				],
				'mobile_default' => [
					'size' => 1,
					'unit' => 'px',
				],
				'devices' => [ 'mobile' ],
				'selectors' => [
					'{{WRAPPER}} .plus-table.plus-table-mob-res tbody tr td.plus-table-col' => 'border-bottom-width: {{SIZE}}{{UNIT}} !important;',
					'{{WRAPPER}} .plus-table-mob-wrap span.plus-table-mob-row' => 'border-right-width: {{SIZE}}{{UNIT}};',
					'{{WRAPPER}} .plus-table.plus-table-mob-res tbody  tr.plus-table-row' => 'border-width: {{SIZE}}{{UNIT}};',
				],
			]
		);
		$this->add_responsive_control(
			'mob_cell_border_color',
			[
				'label'     => esc_html__( 'Cell Border Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'devices' => [ 'mobile' ],
				'selectors' => [
					'{{WRAPPER}} .plus-table.plus-table-mob-res tbody tr td.plus-table-col' => 'border-bottom-color: {{VALUE}} !important;',				
					'{{WRAPPER}} .plus-table-mob-wrap span.plus-table-mob-row' => 'border-right-color: {{VALUE}};',
				],
			]
		);
		$this->add_responsive_control(
			'mob_row_border_color',
			[
				'label'     => esc_html__( 'Row Border Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'devices' => [ 'mobile' ],
				'selectors' => [
					'{{WRAPPER}} .plus-table.plus-table-mob-res tbody  tr.plus-table-row' => 'border-color: {{VALUE}};',
				],
			]
		);
		$this->add_responsive_control(
			'mob_row_space',
			[
				'label' => esc_html__( 'Row Space', 'theplus' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => ['px'],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 50,
						'step' => 1,
					],
				],
				'mobile_default' => [
					'size' => 8,
					'unit' => 'px',
				],
				'devices' => [ 'mobile' ],
				'selectors' => [
					'{{WRAPPER}} .plus-table.plus-table-mob-res tbody  tr.plus-table-row' => 'margin-bottom: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}} .plus-table.plus-table-mob-res tbody  tr.plus-table-row:last-child' => 'margin-bottom: 0px;',
				],
			]
		);
		$this->add_responsive_control(
			'mob_row_border_radius',
			[
				'label' => esc_html__( 'Row Border Radius', 'theplus' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em' ],
				'devices' => [ 'mobile' ],
				'selectors' => [
					'{{WRAPPER}} .plus-table.plus-table-mob-res tbody  tr.plus-table-row' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);
		$this->end_controls_tab();
			
		$this->start_controls_tab( 'tab_mob_head_hover_colors_row', 
			[
				'label' => esc_html__( 'Hover', 'theplus' ) 
			]
		);

		$this->add_control(
			'mob_head_cell_hover_color_row',
			[
				'label'     => esc_html__( 'Heading Hover Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .plus-table-mob-res span.plus-table-mob-row:hover' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'mob_head_cell_hover_background_row',
			[
				'label'     => esc_html__( 'Heading Hover Background', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .plus-table-mob-res span.plus-table-mob-row:hover' => 'background-color: {{VALUE}};',
				],
			]
		);
		$this->end_controls_tab();
		$this->end_controls_tabs();
		$this->end_controls_section();
		/*Table Header Mobile Style*/
		
		/*Table Body Style*/
		$this->start_controls_section(
			'section_table_body_style',
			[
				'label' => esc_html__( 'Table Body', 'theplus' ),
				'tab'   => Controls_Manager::TAB_STYLE,
			]
		);
		
		$this->add_responsive_control(
			'cell_align',
			[
				'label'     => esc_html__( 'Text Alignment', 'theplus' ),
				'type'      => Controls_Manager::CHOOSE,
				'default'   => '',
				'options'   => [
					'left'   => [
						'title' => esc_html__( 'Left', 'theplus' ),
						'icon'  => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'theplus' ),
						'icon'  => 'eicon-text-align-center',
					],
					'right'  => [
						'title' => esc_html__( 'Right', 'theplus' ),
						'icon'  => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}} td .plus-table__text,{{WRAPPER}} td' => 'text-align: {{VALUE}};',
				],
			]
		);
		
		$this->add_responsive_control(
			'cell_valign',
			[
				'label'     => esc_html__( 'Vertical Alignment', 'theplus' ),
				'type'      => Controls_Manager::CHOOSE,
				'default'   => 'middle',
				'options'   => [
					'top'    => [
						'title' => esc_html__( 'Top', 'theplus' ),
						'icon'  => 'eicon-v-align-top',
					],
					'middle' => [
						'title' => esc_html__( 'Middle', 'theplus' ),
						'icon'  => 'eicon-v-align-middle',
					],
					'bottom' => [
						'title' => esc_html__( 'Bottom', 'theplus' ),
						'icon'  => 'eicon-v-align-bottom',
					],
				],
				'selectors' => [
					'{{WRAPPER}} .plus-table-row .plus-table-col' => 'vertical-align: {{VALUE}};',
				],
			]
		);
		
		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name'     => 'cell_typography',
				'label'    => esc_html__( 'Typography', 'theplus' ),
				'scheme'   => Typography::TYPOGRAPHY_3,
				'selector' => '{{WRAPPER}} td .plus-table__text-inner,{{WRAPPER}} td .plus-align-icon--left,{{WRAPPER}} td .plus-align-icon--right,
				{{WRAPPER}} td',
			]
		);

		$this->add_responsive_control(
			'cell_padding',
			[
				'label'      => esc_html__( 'Padding', 'theplus' ),
				'type'       => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px' ],
				'default'    => [
					'top'      => '15',
					'bottom'   => '15',
					'left'     => '15',
					'right'    => '15',
					'unit'     => 'px',
					'isLinked' => true,
				],
				'selectors'  => [
					'{{WRAPPER}} td.plus-table-col' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->start_controls_tabs( 'tabs_cell_colors' );

		$this->start_controls_tab( 'tab_cell_colors', [ 'label' => esc_html__( 'Normal', 'theplus' ) ] );

		$this->add_control(
			'cell_color',
			[
				'label'     => esc_html__( 'Row Text Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'scheme'    => [
					'type'  => Color::get_type(),
					'value' => Color::COLOR_3,
				],
				'selectors' => [
					'{{WRAPPER}} tbody td.plus-table-col .plus-table__text,{{WRAPPER}} tbody td.plus-table-col' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'striped_effect_feature',
			[
				'label'        => esc_html__( 'Stripped Effect', 'theplus' ),
				'type'         => Controls_Manager::SWITCHER,
				'label_on'     => esc_html__( 'YES', 'theplus' ),
				'label_off'    => esc_html__( 'NO', 'theplus' ),
				'return_value' => 'yes',
				'default'      => 'yes',
			]
		);

		$this->add_control(
			'striped_effect_odd',
			[
				'label'     => esc_html__( 'Stripe Rows Color 1', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'default'   => '#eaeaea',
				'selectors' => [
					'{{WRAPPER}} tbody tr:nth-child(odd)' => 'background: {{VALUE}};',
				],
				'condition' => [
					'striped_effect_feature' => 'yes',
				],
			]
		);

		$this->add_control(
			'striped_effect_even',
			[
				'label'     => esc_html__( 'Stripe Rows Color 2', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'default'   => '#FFFFFF',
				'selectors' => [
					'{{WRAPPER}} tbody tr:nth-child(even)' => 'background: {{VALUE}};',
				],
				'condition' => [
					'striped_effect_feature' => 'yes',
				],
			]
		);

		$this->add_control(
			'cell_background',
			[
				'label'     => esc_html__( 'Row Background Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} tbody .plus-table-row' => 'background-color: {{VALUE}};',
				],
				'condition' => [
					'striped_effect_feature!' => 'yes',
				],
			]
		);

		$this->add_control(
			'body_border_styling',
			[
				'label'        => esc_html__( 'Apply Border To', 'theplus' ),
				'type'         => Controls_Manager::SWITCHER,
				'label_on'     => esc_html__( 'CELL', 'theplus' ),
				'label_off'    => esc_html__( 'ROW', 'theplus' ),
				'return_value' => 'yes',
				'default'      => 'yes',
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name'           => 'row_border',
				'label'          => esc_html__( 'Border', 'theplus' ),
				'selector'       => '{{WRAPPER}} tbody .plus-table-row',
				'fields_options' => [
					'border' => [
						'default' => 'solid',
					],
					'width'  => [
						'default' => [
							'top'      => '1',
							'right'    => '1',
							'bottom'   => '1',
							'left'     => '1',
							'isLinked' => true,
						],
					],
					'color'  => [
						'default' => '#bbb',
					],
				],
				'condition'      => [
					'body_border_styling!' => 'yes',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name'           => 'cell_border_body',
				'label'          => esc_html__( 'Cell Border', 'theplus' ),
				'selector'       => '{{WRAPPER}} td.plus-table-col',
				'fields_options' => [
					'border' => [
						'default' => 'solid',
					],
					'width'  => [
						'default' => [
							'top'      => '1',
							'right'    => '1',
							'bottom'   => '1',
							'left'     => '1',
							'isLinked' => true,
						],
					],
					'color'  => [
						'default' => '#bbb',
					],
				],
				'condition'      => [
					'body_border_styling' => 'yes',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'tab_cell_hover_colors',
			[ 
				'label' => esc_html__( 'Hover', 'theplus' ) 
			]
		);
		$this->add_control(
			'row_hover_color',
			[
				'label'     => esc_html__( 'Row Text Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} tbody .plus-table-row:hover td.plus-table-col .plus-table__text,
					{{WRAPPER}} tbody .plus-table-row:hover td.plus-table-col' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'row_hover_background',
			[
				'label'     => esc_html__( 'Row Background Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} tbody .plus-table-row:hover' => 'background-color: {{VALUE}};',
					'{{WRAPPER}} tbody .plus-table-row:hover > .plus-table-col:hover' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'cell_hover_color',
			[
				'label'     => esc_html__( 'Cell Hover Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .plus-table tbody td.plus-table-col:hover .plus-table__text,
					{{WRAPPER}} .plus-table tbody td.plus-table-col:hover' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'cell_hover_background',
			[
				'label'     => esc_html__( 'Cell Hover Background Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .plus-table tbody .plus-table-row:hover > td.plus-table-col:hover' => 'background-color: {{VALUE}};',
				],
			]
		);


		$this->end_controls_tab();
		$this->end_controls_tabs();
		$this->add_control(
			'tbody_button_heading',
			[
				'label' => esc_html__( 'Button', 'theplus' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);
		$this->add_responsive_control(
			'button_padding',
			[
				'label' => esc_html__( 'Button Padding', 'theplus' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'default' => [
							'top' => '15',
							'right' => '30',
							'bottom' => '15',
							'left' => '30',
							'isLinked' => false 
				],
				'selectors' => [
					'{{WRAPPER}} .plus-table-col .pt_plus_button .button-link-wrap' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);
		$this->add_responsive_control(
			'button_width',
			[
				'label' => esc_html__( 'Button Width', 'theplus' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 300,
						'step' => 2,
					],
				],
				//'devices' => [ 'tablet', 'mobile' ],
				'tablet_default' => [
					'size' => 120,
					'unit' => 'px',
				],
				'mobile_default' => [
					'size' => 120,
					'unit' => 'px',
				],
				'selectors' => [
					'{{WRAPPER}} .plus-table-col .pt_plus_button .button-link-wrap' => 'width: {{SIZE}}{{UNIT}};',
				],
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);
		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'button_typography',
				'selector' => '{{WRAPPER}} .plus-table-col .pt_plus_button .button-link-wrap',
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);
		$this->start_controls_tabs( 'tabs_button_style' );

		$this->start_controls_tab(
			'tab_button_normal',
			[
				'label' => esc_html__( 'Normal', 'theplus' ),
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);
		
		$this->add_control(
			'btn_text_color',
			[
				'label' => esc_html__( 'Text Color', 'theplus' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .pt_plus_button .button-link-wrap' => 'color: {{VALUE}};',					
				],
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);
		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name'      => 'button_background',
				'types'     => [ 'classic', 'gradient' ],
				'selector'  => '{{WRAPPER}} .pt_plus_button.button-style-8 .button-link-wrap',
				'separator' => 'after',	
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);
		$this->add_control(
			'button_border_style',
			[
				'label'   => esc_html__( 'Border Style', 'theplus' ),
				'type'    => Controls_Manager::SELECT,
				'default' => 'solid',
				'options' => [
					'none'   => esc_html__( 'None', 'theplus' ),
					'solid'  => esc_html__( 'Solid', 'theplus' ),
					'dotted' => esc_html__( 'Dotted', 'theplus' ),
					'dashed' => esc_html__( 'Dashed', 'theplus' ),
					'groove' => esc_html__( 'Groove', 'theplus' ),
				],
				'selectors'  => [
					'{{WRAPPER}} .pt_plus_button.button-style-8 .button-link-wrap' => 'border-style: {{VALUE}};',
				],
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);
		$this->add_responsive_control(
			'button_border_width',
			[
				'label' => esc_html__( 'Border Width', 'theplus' ),
				'type'  => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'default' => [
					'top'    => 1,
					'right'  => 1,
					'bottom' => 1,
					'left'   => 1,
				],
				'selectors'  => [
					'{{WRAPPER}} .pt_plus_button.button-style-8 .button-link-wrap' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);

		$this->add_control(
		'button_border_color',
			[
				'label'     => esc_html__( 'Border Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'default'   => '#313131',
				'selectors' => [
					'{{WRAPPER}} .pt_plus_button.button-style-8 .button-link-wrap' => 'border-color: {{VALUE}};',
				],
				'separator' => 'after',
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);

		$this->add_responsive_control(
			'button_radius',
			[
				'label'      => esc_html__( 'Border Radius', 'theplus' ),
				'type'       => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors'  => [
					'{{WRAPPER}} .pt_plus_button.button-style-8 .button-link-wrap' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);
		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name'     => 'button_shadow',
				'selector' => '{{WRAPPER}} .pt_plus_button.button-style-8 .button-link-wrap',
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);
		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_button_hover',
			[
				'label' => esc_html__( 'Hover', 'theplus' ),
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);
		$this->add_control(
			'btn_text_hover_color',
			[
				'label' => esc_html__( 'Text Hover Color', 'theplus' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .pt_plus_button .button-link-wrap:hover' => 'color: {{VALUE}};',
				],
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);
		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name'      => 'button_hover_background',
				'types'     => [ 'classic', 'gradient' ],
				'selector'  => '{{WRAPPER}} .pt_plus_button.button-style-8 .button-link-wrap:hover',
				'separator' => 'after',
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);
		$this->add_control(
			'button_border_hover_color',
			[
				'label'     => esc_html__( 'Hover Border Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'default'   => '#313131',
				'selectors' => [
					'{{WRAPPER}} .pt_plus_button.button-style-8 .button-link-wrap:hover' => 'border-color: {{VALUE}};',
				],
				'separator' => 'after',
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);

		$this->add_responsive_control(
			'button_hover_radius',
			[
				'label'      => esc_html__( 'Hover Border Radius', 'theplus' ),
				'type'       => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors'  => [
					'{{WRAPPER}} .pt_plus_button.button-style-8 .button-link-wrap:hover' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);
		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name'     => 'button_hover_shadow',
				'selector' => '{{WRAPPER}} .pt_plus_button.button-style-8 .button-link-wrap:hover',
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);
		$this->end_controls_tab();
		$this->end_controls_tabs();
		$this->end_controls_section();
		/*Table Body Style*/
		
		$this->start_controls_section(
			'section_icon_image_style',
			[
				'label'     => esc_html__( 'Icon / Image Options', 'theplus' ),
				'tab'       => Controls_Manager::TAB_STYLE,
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);

		$this->add_control(
			'icon_styling_heading',
			[
				'label' => esc_html__( 'Icon', 'theplus' ),
				'type'  => Controls_Manager::HEADING,
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);

		$this->add_control(
			'all_icon_color',
			[
				'label'     => esc_html__( 'Icon Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .plus-align-icon--left i' => 'color: {{VALUE}};',
					'{{WRAPPER}} .plus-align-icon--right i' => 'color: {{VALUE}};',					
				],
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);

		$this->add_responsive_control(
			'all_icon_size',
			[
				'label'     => esc_html__( 'Icon Size', 'theplus' ),
				'type'      => Controls_Manager::SLIDER,
				'default'   => [
					'size' => 30,
				],
				'range'     => [
					'px' => [
						'min'  => 1,
						'max'  => 100,
						'step' => 1,
					],
				],
				'selectors' => [
					// Item.
					'{{WRAPPER}} .plus-align-icon--left i' => 'font-size: {{SIZE}}px;    vertical-align: middle;',
					'{{WRAPPER}} .plus-align-icon--right i' => 'font-size: {{SIZE}}px;vertical-align: middle;',					
				],
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);

		$this->add_control(
			'all_icon_align',
			[
				'label'   => esc_html__( 'Icon Position', 'theplus' ),
				'type'    => Controls_Manager::SELECT,
				'default' => 'left',
				'options' => [
					'left'  => esc_html__( 'Before', 'theplus' ),
					'right' => esc_html__( 'After', 'theplus' ),
				],
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);

		$this->add_responsive_control(
			'all_icon_indent',
			[
				'label'     => esc_html__( 'Icon Spacing', 'theplus' ),
				'type'      => Controls_Manager::SLIDER,
				'default'   => [
					'size' => 10,
				],
				'range'     => [
					'px' => [
						'min'  => 1,
						'max'  => 100,
						'step' => 1,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .plus-align-icon--left'  => 'margin-right: {{SIZE}}px;',
					'{{WRAPPER}} .plus-align-icon--right' => 'margin-left: {{SIZE}}px;',
				],
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);

		$this->add_control(
			'image_styling_heading',
			[
				'label'     => esc_html__( 'Image', 'theplus' ),
				'type'      => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);

		$this->add_responsive_control(
			'all_image_size',
			[
				'label'      => esc_html__( 'Image Size', 'theplus' ),
				'type'       => Controls_Manager::SLIDER,
				'default'    => [
					'size' => 30,
				],
				'size_units' => [ 'px' ],
				'range'      => [
					'px' => [
						'min'  => 1,
						'max'  => 500,
						'step' => 1,
					],
				],
				'selectors'  => [
					'{{WRAPPER}} .plus-col-img--left'  => 'width: {{SIZE}}{{UNIT}};',
					'{{WRAPPER}} .plus-col-img--right' => 'width: {{SIZE}}{{UNIT}};',
				],
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);

		$this->add_control(
			'all_image_align',
			[
				'label'   => esc_html__( 'Image Position', 'theplus' ),
				'type'    => Controls_Manager::SELECT,
				'default' => 'left',
				'options' => [
					'left'  => esc_html__( 'Before', 'theplus' ),
					'right' => esc_html__( 'After', 'theplus' ),
				],
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);

		$this->add_responsive_control(
			'all_image_indent',
			[
				'label'     => esc_html__( 'Image Spacing', 'theplus' ),
				'type'      => Controls_Manager::SLIDER,
				'default'   => [
					'size' => 10,
				],
				'range'     => [
					'px' => [
						'min'  => 1,
						'max'  => 100,
						'step' => 1,
					],
				],
				'selectors' => [
					// Item.
					'{{WRAPPER}} .plus-col-img--left'  => 'margin-right: {{SIZE}}px;',
					'{{WRAPPER}} .plus-col-img--right' => 'margin-left: {{SIZE}}px;',
				],
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);

		$this->add_responsive_control(
			'all_image_border_radius',
			[
				'label'      => esc_html__( 'Border Radius', 'theplus' ),
				'type'       => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors'  => [
					'{{WRAPPER}} .plus-col-img--left'  => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
					'{{WRAPPER}} .plus-col-img--right' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition'     => [
					'table_selection!' => 'csv_file',
				],
			]
		);

		$this->end_controls_section();
		/* Icon/Image Style*/
		
		/* Search Style*/		
		$this->start_controls_section(
			'section_search_style',
			[
				'label' => esc_html__( 'Search Bar / Show Entries', 'theplus' ),
				'tab'   => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'label_color',
			[
				'label'     => esc_html__( 'Label Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .plus-advance-heading label' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'input_color',
			[
				'label'     => esc_html__( 'Input Value Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .plus-advance-heading select, {{WRAPPER}} .plus-advance-heading input' => 'color: {{VALUE}};',
				],
			]
		);
		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name'     => 'label_typography',
				'label'    => esc_html__( 'Typography', 'theplus' ),
				'scheme'   => Typography::TYPOGRAPHY_3,
				'selector' => '{{WRAPPER}} .plus-advance-heading label, {{WRAPPER}} .plus-advance-heading select, {{WRAPPER}} .plus-advance-heading input',
			]
		);
		$this->add_control(
			'label_bg_color',
			[
				'label'     => esc_html__( 'Input Background Color', 'theplus' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .plus-advance-heading select, {{WRAPPER}} .plus-advance-heading input' => 'background-color: {{VALUE}};',
				],
			]
		);
		$this->add_responsive_control(
			'input_padding',
			[
				'label'      => esc_html__( 'Input Padding', 'theplus' ),
				'type'       => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px' ],
				'default'    => [
					'top'      => '10',
					'bottom'   => '10',
					'left'     => '10',
					'right'    => '10',
					'unit'     => 'px',
					'isLinked' => false,
				],
				'selectors'  => [
					'{{WRAPPER}} .plus-advance-heading select, {{WRAPPER}} .plus-advance-heading input' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name'           => 'input_border',
				'label'          => esc_html__( 'Input Border', 'theplus' ),
				'fields_options' => [
					'border' => [
						'default' => 'solid',
					],
					'width'  => [
						'default' => [
							'top'      => '1',
							'right'    => '1',
							'bottom'   => '1',
							'left'     => '1',
							'isLinked' => true,
						],
					],
					'color'  => [
						'default' => '#bbb',
					],
				],
				'selector'       => '{{WRAPPER}} .plus-advance-heading select, {{WRAPPER}} .plus-advance-heading input',
			]
		);
		$this->add_responsive_control(
			'input_border_radius',
			[
				'label'      => esc_html__( 'Input Border Radius', 'theplus' ),
				'type'       => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px' ],
				'default'    => [
					'top'      => '2',
					'bottom'   => '2',
					'left'     => '2',
					'right'    => '2',
					'unit'     => 'px',
					'isLinked' => true,
				],
				'selectors'  => [
					'{{WRAPPER}} .plus-advance-heading select, {{WRAPPER}} .plus-advance-heading input' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);
		
		$this->add_responsive_control(
			'search_input_size',
			[
				'label'     => esc_html__( 'Search Bar Width', 'theplus' ),
				'type'      => Controls_Manager::SLIDER,
				'default'   => [
					'size' => 200,
				],
				'range'     => [
					'px' => [
						'min'  => 1,
						'max'  => 400,
						'step' => 1,
					],
				],
				'devices' => [ 'desktop', 'tablet', 'mobile' ],
				'selectors' => [
					'{{WRAPPER}} .plus-advance-heading .plus-tbl-search-wrapper input' => 'width: {{SIZE}}{{UNIT}}',
				],
			]
		);
		$this->add_responsive_control(
			'entry_page_input_size',
			[
				'label'     => esc_html__( 'Show Entries Width', 'theplus' ),
				'type'      => Controls_Manager::SLIDER,
				'default'   => [
					'size' => 200,
				],
				'range'     => [
					'px' => [
						'min'  => 1,
						'max'  => 400,
						'step' => 1,
					],
				],
				'devices' => [ 'desktop', 'tablet', 'mobile' ],
				'selectors' => [
					'{{WRAPPER}} .plus-advance-heading .plus-tbl-entry-wrapper select' => 'width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'bottom_spacing',
			[
				'label'     => esc_html__( 'Bottom Space', 'theplus' ),
				'type'      => Controls_Manager::SLIDER,
				'default'   => [
					'size' => 15,
					'unit' => 'px',
				],
				'selectors' => [
					// Item.
					'{{WRAPPER}} .plus-advance-heading' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_section();
		/* Search Style*/
		
		/*tooltip option start*/
		$this->start_controls_section(
            'section_tooltip_option_styling',
            [
                'label' => esc_html__('Tooltip Options', 'theplus'),
                'tab' => Controls_Manager::TAB_STYLE,
            ]
        );
		$this->add_group_control(
			\Theplus_Tooltips_Option_Group::get_type(),
			[
				'label' => esc_html__( 'Tooltip Options', 'theplus' ),
				'name'           => 'tooltip_common_option',
			]
		);
		$this->add_group_control(
			\Theplus_Tooltips_Option_Style_Group::get_type(),
			[
				'label' => esc_html__( 'Tooltip Style', 'theplus' ),
				'name'           => 'tooltip_common_style',
			]
		);
		$this->add_control(
			'tt_on_icon',
			[
				'label' => esc_html__( 'Tooltip Icon', 'theplus' ),
				'type' => Controls_Manager::ICONS,
				'default' => [
					'value' => 'fas fa-info-circle',
					'library' => 'solid',
				],
			]
		);
		$this->add_control(
            'tt_on_icon_margin_left',
            [
                'type' => Controls_Manager::SLIDER,
				'label' => esc_html__('Left Offset', 'theplus'),
				'range' => [
					'' => [
						'min'	=> 1,
						'max'	=> 50,
						'step' => 1,
					],
				],				
				'default' => [
					'unit' => 'px',
					'size' => 15,
				],
				'render_type' => 'ui',
				'selectors'  => [
					'{{WRAPPER}} .tp-tooltip-on-icon' => 'margin-left: {{SIZE}}px;',
				],
            ]
        );
		$this->add_control(
			'tt_on_icon_color',
			[
				'label' => esc_html__( 'Color', 'theplus' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .tp-tooltip-on-icon i' => 'color: {{VALUE}};',
					'{{WRAPPER}} .tp-tooltip-on-icon svg' => 'fill: {{VALUE}};',
				],
			]
		);
		$this->add_control(
            'tt_on_icon_size',
            [
                'type' => Controls_Manager::SLIDER,
				'label' => esc_html__('Size', 'theplus'),
				'range' => [
					'' => [
						'min'	=> 1,
						'max'	=> 50,
						'step' => 1,
					],
				],
				'render_type' => 'ui',
				'selectors'  => [
					'{{WRAPPER}} .tp-tooltip-on-icon i' => 'font-size: {{SIZE}}px;',
					'{{WRAPPER}} .tp-tooltip-on-icon svg' => 'width: {{SIZE}}px;height: {{SIZE}}px;',
				],
            ]
        );
		$this->end_controls_section();
		/*tooltip option end*/
		
		/* table background option*/
		$this->start_controls_section(
            'section_table_option_styling',
            [
                'label' => esc_html__('Table Option', 'theplus'),
                'tab' => Controls_Manager::TAB_STYLE,
            ]
        );
		$this->add_responsive_control(
			'tos_margin',
			[
				'label' => esc_html__( 'Margin', 'theplus' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em' ],				
				'selectors' => [
					'{{WRAPPER}} .plus-table-wrapper .dataTables_wrapper,{{wrapper}} .plus-table-wrapper' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',					
				],
			]
		);
		$this->add_responsive_control(
			'tos_padding',
			[
				'label' => esc_html__( 'Padding', 'theplus' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em' ],				
				'selectors' => [
					'{{wrapper}} .plus-table-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',					
				],
			]
		);
		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'tos_background',
				'label' => esc_html__( 'Background', 'theplus' ),
				'types' => [ 'classic', 'gradient'],
				'selector' => '{{WRAPPER}} .plus-table-wrapper',
				'separator' => 'before',
			]
		);
		$this->add_control(
			'tos_border_check',
			[
				'label' => esc_html__( 'Display Border', 'theplus' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'theplus' ),
				'label_off' => esc_html__( 'Hide', 'theplus' ),
				'default' => 'no',
				'separator' => 'before',
			]
		);
		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'tos_border',
				'label' => esc_html__( 'Border', 'theplus' ),
				'selector' => '{{WRAPPER}} .plus-table-wrapper',
				'condition' => [
					'tos_border_check' => 'yes',
				],
			]
		);
		$this->add_responsive_control(
			'tos_border_radius',
			[
				'label'      => esc_html__( 'Border Radius', 'theplus' ),
				'type'       => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors'  => [
					'{{WRAPPER}} .plus-table-wrapper' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [					
					'tos_border_check' => 'yes',
				],
			]
		);
		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name'     => 'tos_box_shadow',
				'selector' => '{{WRAPPER}} .plus-table-wrapper .plus-table',
				'separator' => 'before',
			]
		);
		$this->add_control(
			'table_overflow',
			[
				'label' => esc_html__( 'Overflow', 'theplus' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'theplus' ),
				'label_off' => esc_html__( 'Hide', 'theplus' ),
				'default' => 'no',
				'separator' => 'before',
				'selectors'  => [
					'{{WRAPPER}} .plus-table-wrapper .plus-table' => 'overflow:visible;',
				],
			]
		);
		$this->end_controls_section();
		/*table background option*/
		$this->start_controls_section(
            'section_animation_styling',
            [
                'label' => esc_html__('On Scroll View Animation', 'theplus'),
                'tab' => Controls_Manager::TAB_STYLE,				
            ]
        );
		$this->add_control(
			'animation_effects',
			[
				'label'   => esc_html__( 'In Animation Effect', 'theplus' ),
				'type'    => Controls_Manager::SELECT,
				'default' => 'no-animation',
				'options' => theplus_get_animation_options(),				
			]
		);
		$this->add_control(
            'animation_delay',
            [
                'type' => Controls_Manager::SLIDER,
				'label' => esc_html__('Animation Delay', 'theplus'),
				'default' => [
					'unit' => '',
					'size' => 50,
				],
				'range' => [
					'' => [
						'min'	=> 0,
						'max'	=> 4000,
						'step' => 15,
					],
				],
				'condition' => [
					'animation_effects!' => 'no-animation',
				],
            ]
        );
		$this->add_control(
            'animation_duration_default',
            [
				'label'   => esc_html__( 'Animation Duration', 'theplus' ),
				'type'    => Controls_Manager::SWITCHER,
				'default' => 'no',
				'condition' => [
					'animation_effects!' => 'no-animation',
				],
			]
		);
		$this->add_control(
            'animate_duration',
            [
                'type' => Controls_Manager::SLIDER,
				'label' => esc_html__('Duration Speed', 'theplus'),
				'default' => [
					'unit' => 'px',
					'size' => 50,
				],
				'range' => [
					'px' => [
						'min'	=> 100,
						'max'	=> 10000,
						'step' => 100,
					],
				],
				'condition' => [
					'animation_effects!' => 'no-animation',
					'animation_duration_default' => 'yes',
				],
            ]
        );
		$this->add_control(
			'animation_out_effects',
			[
				'label'   => esc_html__( 'Out Animation Effect', 'theplus' ),
				'type'    => Controls_Manager::SELECT,
				'default' => 'no-animation',
				'options' => theplus_get_out_animation_options(),
				'separator' => 'before',
				'condition' => [
					'animation_effects!' => 'no-animation',
				],
			]
		);
		$this->add_control(
            'animation_out_delay',
            [
                'type' => Controls_Manager::SLIDER,
				'label' => esc_html__('Out Animation Delay', 'theplus'),
				'default' => [
					'unit' => '',
					'size' => 50,
				],
				'range' => [
					'' => [
						'min'	=> 0,
						'max'	=> 4000,
						'step' => 15,
					],
				],
				'condition' => [
					'animation_effects!' => 'no-animation',
					'animation_out_effects!' => 'no-animation',
				],
            ]
        );
		$this->add_control(
            'animation_out_duration_default',
            [
				'label'   => esc_html__( 'Out Animation Duration', 'theplus' ),
				'type'    => Controls_Manager::SWITCHER,
				'default' => 'no',
				'condition' => [
					'animation_effects!' => 'no-animation',
					'animation_out_effects!' => 'no-animation',
				],
			]
		);
		$this->add_control(
            'animation_out_duration',
            [
                'type' => Controls_Manager::SLIDER,
				'label' => esc_html__('Duration Speed', 'theplus'),
				'default' => [
					'unit' => 'px',
					'size' => 50,
				],
				'range' => [
					'px' => [
						'min'	=> 100,
						'max'	=> 10000,
						'step' => 100,
					],
				],
				'condition' => [
					'animation_effects!' => 'no-animation',
					'animation_out_effects!' => 'no-animation',
					'animation_out_duration_default' => 'yes',
				],
            ]
        );
		$this->end_controls_section();
	}
	
	 protected function render() {

        $settings = $this->get_settings_for_display();
		$widget_id   = $this->get_id();
		$is_editor_mode = \Elementor\Plugin::instance()->editor->is_edit_mode();
		
		$cell_align_head_desktop = !empty($settings["cell_align_head_normal"]) ? $settings["cell_align_head_normal"] : '';
		$cell_align_head_tablet = !empty($settings["cell_align_head_normal_tablet"]) ? $settings["cell_align_head_normal_tablet"] : '';
		$cell_align_head_mobile = !empty($settings["cell_align_head_normal_mobile"]) ? $settings["cell_align_head_normal_mobile"] : '';
		
		/*--On Scroll View Animation ---*/
		include THEPLUS_PATH. 'modules/widgets/theplus-widget-animation-attr.php';
		
			ob_start();
			
			//Table Wrapper
			$this->add_render_attribute( 'plus_table_wrapper', 'class', 'plus-table-wrapper '.esc_attr($animated_class) );
			$this->add_render_attribute( 'plus_table_wrapper', $animation_attr );
			$this->add_render_attribute( 'plus_table_wrapper', 'itemtype', 'http://schema.org/Table' );
			
			$this->add_render_attribute( 'plus_table_id', 'id', 'plus-table-id-' . $widget_id );
			
			$this->add_render_attribute( 'plus_table_id', 'class', 'plus-table' );
			
			$this->add_render_attribute( 'plus_table_id', 'class', 'plus-text-break' );

			$this->add_render_attribute( 'plus_table_id', 'class', 'plus-column-rules' );
			

			if(!empty($settings["mobile_responsive_table"]) && $settings["mobile_responsive_table"] == 'one-by-one' ){
				$this->add_render_attribute( 'plus_table_id', 'class', 'plus-table-mob-res' );
			}
			
			// <Tr> (Row).
			$this->add_render_attribute( 'plus_table_row', 'class', 'plus-table-row' );
			
			// Text span.
			$this->add_render_attribute( 'plus_table__text', 'class', 'plus-table__text' );
			
			
			// Table Sortable.
			if ( !empty($settings['sortable']) && 'yes' === $settings['sortable'] ) {
				$this->add_render_attribute( 'plus_table_id', 'data-sort-table', $settings['sortable'] );
			} else {
				$this->add_render_attribute( 'plus_table_id', 'data-sort-table', 'no' );
			}
			
			// Table Show entries.
			if ( !empty($settings['show_entries']) && 'yes' === $settings['show_entries'] ) {
				$this->add_render_attribute( 'plus_table_id', 'data-show-entry', $settings['show_entries'] );
			} else {
				$this->add_render_attribute( 'plus_table_id', 'data-show-entry', 'no' );
			}
			
			//Table Searchable
			if ( !empty($settings['searchable']) &&  'yes' === $settings['searchable'] ) {
				$this->add_render_attribute( 'plus_table_id', 'data-searchable', $settings['searchable'] );
				$this->add_render_attribute( 'plus_table_id', 'data-searchable-label', $settings['searchable_label'] );				
			} else {
				$this->add_render_attribute( 'plus_table_id', 'data-searchable', 'no' );
			}

			//Table CSV File
			if(!empty($settings['table_selection']) && $settings['table_selection'] == 'csv_file'){
			
				if($settings['file']['url'] != '' ){
					$ext = pathinfo($settings['file']['url'], PATHINFO_EXTENSION);
					if($ext!='csv'){
						echo '<h3 class="theplus-posts-not-found">'.esc_html__("Opps!! Please Enter Only CSV File Extension.",'theplus').'</h3>';
						return false;
					}
				}
				
				if($settings['file']['url']){
					echo '<div itemscope '.$this->get_render_attribute_string( 'plus_table_wrapper' ).'>';
					echo '<table '.$this->get_render_attribute_string( 'plus_table_id' ).'>';
						echo theplus_fetch_csv(esc_url($settings['file']['url']),$settings['sortable']);
					echo '</table></div>';
				}else{
					echo '<h3 class="theplus-posts-not-found">'.esc_html__("Opps!! You didn\'t enter any table data or CSV file",'theplus').'</h3>';
				}
				
			}else { ?>
			<div itemscope <?php echo $this->get_render_attribute_string( 'plus_table_wrapper' ); ?>>
				
				<table <?php echo $this->get_render_attribute_string( 'plus_table_id' ); ?>>
					<?php
					$first_row_th    = true;
					$cell_col_count = 0;
					$counter_row      = 1;					
					$inline_count   = 0;
					$row_count_tb    = count( $settings['table_headings'] );
					$data_entry_col     = 0;
					$header_text    = array();					

					if ( $row_count_tb > 1 ) {
						?>
					<thead>
						<?php
						if ( $settings['table_headings'] ) {
							$headi=0;
							foreach ( $settings['table_headings'] as $index => $head ) {
								
								// Header text prepview editing.
								$repeater_heading_text = $this->get_repeater_setting_key( 'heading_text', 'table_headings', $inline_count );
								$this->add_render_attribute( $repeater_heading_text, 'class', 'plus-table__text-inner' );
								$this->add_inline_editing_attributes( $repeater_heading_text );
								
								// TH.
								if ( true === $first_row_th ) {
									$this->add_render_attribute( 'current_' . $head['_id'], 'data-sort', $cell_col_count );
								}
								
								$this->add_render_attribute( 'current_' . $head['_id'], 'class', 'sort-this' );
								$this->add_render_attribute( 'current_' . $head['_id'], 'class', 'elementor-repeater-item-' . $head['_id'] );
								$this->add_render_attribute( 'current_' . $head['_id'], 'class', 'plus-table-col' );								
								
								if ( 1 < $head['heading_col_span'] ) {
									$this->add_render_attribute( 'current_' . $head['_id'], 'colspan', $head['heading_col_span'] );
								}
								if ( 1 < $head['heading_row_span'] ) {
									$this->add_render_attribute( 'current_' . $head['_id'], 'rowspan', $head['heading_row_span'] );
								}
								
								// Sort Icon.
								if ( 'yes' === $settings['sortable'] && true === $first_row_th ) {
									$this->add_render_attribute( 'icon_sort_' . $head['_id'], 'class', 'plus-sort-icon' );
								}
								
								if (!empty($head['icons_image']['url']) ) {
									$icons_image=$head['icons_image']['id'];
									$img = wp_get_attachment_image_src($icons_image,$head['icons_image_thumbnail_size']);
									$icons_image_Src = $img[0];
									$this->add_render_attribute( 'plus_head_col_img' . $head['_id'], 'src', $icons_image_Src );
									$this->add_render_attribute( 'plus_head_col_img' . $head['_id'], 'class', 'plus-col-img--' . $settings['all_image_align'] );
									$this->add_render_attribute( 'plus_head_col_img' . $head['_id'], 'title', get_the_title( $head['icons_image']['id'] ) );
									$this->add_render_attribute( 'plus_head_col_img' . $head['_id'], 'alt', get_the_title( $head['icons_image']['id'] ) );
								}
								
								// ICON.								
								if('icon' === $head['header_content_icon_image'] && $head["icon_font_style"]=='font_awesome'){
									$this->add_render_attribute( 'plus_heading_icon' . $head['_id'], 'class', $head['icon_fontawesome'] );
								}else if('icon' === $head['header_content_icon_image'] && $head["icon_font_style"]=='icon_mind'){
									$this->add_render_attribute( 'plus_heading_icon' . $head['_id'], 'class', $head['icons_mind'] );
								}
								$this->add_render_attribute( 'plus_heading_icon_align' . $head['_id'], 'class', 'plus-align-icon--' . $settings['all_icon_align'] );
								
								//tooltip
								$_tooltip='_tooltip_'.$headi;
								if( $head['heading_show_tooltips'] == 'yes' ) {
									
									$this->add_render_attribute( $_tooltip, 'data-tippy', '', true );

									$tooltip_content=$head['heading_tooltip_content'];
									$this->add_render_attribute( $_tooltip, 'title', $tooltip_content, true );
									
									$plus_tooltip_position=($settings["tooltip_common_option_plus_tooltip_position"]!='') ? $settings["tooltip_common_option_plus_tooltip_position"] : 'top';
									$this->add_render_attribute( $_tooltip, 'data-tippy-placement', $plus_tooltip_position, true );
									
									$tooltip_interactive =($settings["tooltip_common_option_plus_tooltip_interactive"]=='' || $settings["tooltip_common_option_plus_tooltip_interactive"]=='yes') ? 'true' : 'false';
									$this->add_render_attribute( $_tooltip, 'data-tippy-interactive', $tooltip_interactive, true );
									
									$plus_tooltip_theme=($settings["tooltip_common_option_plus_tooltip_theme"]!='') ? $settings["tooltip_common_option_plus_tooltip_theme"] : 'dark';
									$this->add_render_attribute( $_tooltip, 'data-tippy-theme', $plus_tooltip_theme, true );
									
									
									$tooltip_arrow =($settings["tooltip_common_option_plus_tooltip_arrow"]!='none' || $settings["tooltip_common_option_plus_tooltip_arrow"]=='') ? 'true' : 'false';
									$this->add_render_attribute( $_tooltip, 'data-tippy-arrow', $tooltip_arrow , true );
									
									$plus_tooltip_arrow=($settings["tooltip_common_option_plus_tooltip_arrow"]!='') ? $settings["tooltip_common_option_plus_tooltip_arrow"] : 'sharp';
									$this->add_render_attribute( $_tooltip, 'data-tippy-arrowtype', $plus_tooltip_arrow, true );
									
									$plus_tooltip_animation=($settings["tooltip_common_option_plus_tooltip_animation"]!='') ? $settings["tooltip_common_option_plus_tooltip_animation"] : 'shift-toward';
									$this->add_render_attribute( $_tooltip, 'data-tippy-animation', $plus_tooltip_animation, true );
									
									$plus_tooltip_x_offset=($settings["tooltip_common_option_plus_tooltip_x_offset"]!='') ? $settings["tooltip_common_option_plus_tooltip_x_offset"] : 0;
									$plus_tooltip_y_offset=($settings["tooltip_common_option_plus_tooltip_y_offset"]!='') ? $settings["tooltip_common_option_plus_tooltip_y_offset"] : 0;
									$this->add_render_attribute( $_tooltip, 'data-tippy-offset', $plus_tooltip_x_offset .','. $plus_tooltip_y_offset, true );
									
									$tooltip_duration_in =($settings["tooltip_common_option_plus_tooltip_duration_in"]!='') ? $settings["tooltip_common_option_plus_tooltip_duration_in"] : 250;
									$tooltip_duration_out =($settings["tooltip_common_option_plus_tooltip_duration_out"]!='') ? $settings["tooltip_common_option_plus_tooltip_duration_out"] : 200;
									$tooltip_trigger =($settings["tooltip_common_option_plus_tooltip_triggger"]!='') ? $settings["tooltip_common_option_plus_tooltip_triggger"] : 'mouseenter';
									$tooltip_arrowtype =($settings["tooltip_common_option_plus_tooltip_arrow"]!='') ? $settings["tooltip_common_option_plus_tooltip_arrow"] : 'sharp';
								}

								$uniqid=uniqid("tooltip");
						
								$show_tooltips_on = $head['heading_show_tooltips_on'];
								$toolbox=$toolicon=$tt_on_icon='';
								if(!empty($show_tooltips_on) && $show_tooltips_on=='icon'){
									$toolbox = $this->get_render_attribute_string( 'current_' . $head['_id'] );
									$toolicon = 'id="'.esc_attr($uniqid).'" class="plus-icon-list-item elementor-repeater-item-'.esc_attr($head['_id']).'" data-local="true" '.$this->get_render_attribute_string( $_tooltip ).'';
									
									ob_start();
									\Elementor\Icons_Manager::render_icon( $settings['tt_on_icon'] , [ 'aria-hidden' => 'true' ]);
									$tt_on_icon = ob_get_contents();
									ob_end_clean();
									
								}else{									
									$toolbox = 'id="'.esc_attr($uniqid).'"'.$this->get_render_attribute_string( 'current_' . $head['_id'] ).' data-local="true" '.$this->get_render_attribute_string( $_tooltip ).'';
								}
						
								if ( 'cell' === $head['header_content_type'] ) {
									?>
									<th <?php echo $toolbox; ?> scope="col">
										<span class="sort-style">
										<span <?php echo $this->get_render_attribute_string( 'plus_table__text' ); ?>>
											<?php if ( 'icon' === $head['header_content_icon_image'] ) { ?>												
													<?php if ( 'left' === $settings['all_icon_align'] ) { ?>
												<span <?php echo $this->get_render_attribute_string( 'plus_heading_icon_align' . $head['_id'] ); ?>>
													<i <?php echo $this->get_render_attribute_string( 'plus_heading_icon' . $head['_id'] ); ?>></i>
												</span>
											<?php } ?>											
											<?php } else { ?>
													<?php if ( !empty($head['icons_image']['url']) ) { ?>
														<?php if ( 'left' == $settings['all_image_align'] ) { ?>
														<img <?php echo $this->get_render_attribute_string( 'plus_head_col_img' . $head['_id'] ); ?>>
													<?php } ?>
													<?php } ?>
											<?php } ?>
											<span <?php echo $this->get_render_attribute_string( $repeater_heading_text ); ?>><?php echo $head['heading_text']; ?></span>
											<?php if ( 'icon' === $head['header_content_icon_image'] ) { ?>												
													<?php if ( 'right' === $settings['all_icon_align'] ) { ?>
												<span <?php echo $this->get_render_attribute_string( 'plus_heading_icon_align' . $head['_id'] ); ?>>
													<i <?php echo $this->get_render_attribute_string( 'plus_heading_icon' . $head['_id'] ); ?>></i>
												</span>
											<?php } ?>											
											<?php } else { ?>
													<?php if ( !empty($head['icons_image']['url']) ) { ?>
														<?php if ( 'right' == $settings['all_image_align'] ) { ?>
														<img <?php echo $this->get_render_attribute_string( 'plus_head_col_img' . $head['_id'] ); ?>>
													<?php } ?>
													<?php } ?>
											<?php } 
											if(!empty($show_tooltips_on) && $show_tooltips_on=='icon'){
												echo '<span class="tp-tooltip-on-icon" '.$toolicon.'>'.$tt_on_icon.'</span>';
											}											
											?>
										</span> 
										
										<?php
										if ( 'yes' === $settings['sortable'] && true === $first_row_th ) { ?>
											<span <?php echo $this->get_render_attribute_string( 'icon_sort_' . $head['_id'] ); ?>></span>
										<?php } ?>
										</span>
									</th>
									<?php
									$inline_tippy_js='';
									if($head['heading_show_tooltips'] == 'yes'){
										$inline_tippy_js ='jQuery( document ).ready(function() {
										"use strict";
											if(typeof tippy === "function"){
												tippy( "#'.esc_attr($uniqid).'" , {
													arrowType : "'.esc_attr($tooltip_arrowtype).'",
													duration : ['.esc_attr($tooltip_duration_in).','.esc_attr($tooltip_duration_out).'],
													trigger : "'.esc_attr($tooltip_trigger).'",
													appendTo: document.querySelector("#'.esc_attr($uniqid).'")
												});
											}
										});';
										echo wp_print_inline_script_tag($inline_tippy_js);
									}
							
									$header_text[ $cell_col_count ]['heading_text'] = $head['heading_text'];
									$header_text[ $cell_col_count ]['icon_image'] = $head['header_content_icon_image'];
									$header_text[ $cell_col_count ]['plus_heading_icon_align'] = 'plus_heading_icon_align' .$head['_id'];
									$header_text[ $cell_col_count ]['plus_heading_icon'] = 'plus_heading_icon' . $head['_id'];
									$header_text[ $cell_col_count ]['icons_image_url'] = !empty($head['icons_image']['url']) ? $head['icons_image']['url'] : '';
									$header_text[ $cell_col_count ]['plus_head_col_img'] = 'plus_head_col_img' . $head['_id'];
									$cell_col_count++;
								} else {
									if ( $counter_row > 1 && $counter_row < $row_count_tb ) {
										// Break into new row.
										?>
										</tr><tr <?php echo $this->get_render_attribute_string( 'plus_table_row' ); ?>>
										<?php
										$first_row_th = false;
									} elseif ( 1 === $counter_row && false === $this->table_first_row() ) {
										?>
										<tr <?php echo $this->get_render_attribute_string( 'plus_table_row' ); ?>>
														<?php
									}
									$cell_col_count = 0;
								}
								$headi++;
								$counter_row++;
								$inline_count++;
							}
						}
						?>
					</thead>
					<?php } ?>
					<tbody>
						<!-- ROWS -->
						<?php
						$cell_counter_c    = 0;
						$counter           = 1;						
						$cell_inline_count = 0;
						$row_count         = count( $settings['table_content'] );						
						$attr_id='cell';
						$ij=0;
						
						if ( $settings['table_content'] ) {
							$rowi=0;
							foreach ( $settings['table_content'] as $index => $row ) {
								// Cell text inline classes.
								$ij++;
								
								$repeater_cell_text = $this->get_repeater_setting_key( 'cell_text', 'table_content', $cell_inline_count );
								$this->add_render_attribute( $repeater_cell_text, 'class', 'plus-table__text-inner' );
								$this->add_inline_editing_attributes( $repeater_cell_text );
								$this->add_render_attribute( 'plus_cell_icon_align' . $row['_id'], 'class', 'plus-align-icon--' . $settings['all_icon_align'] );
								
								$button='';
								if(!empty($row["cell_display_button"]) && $row["cell_display_button"]=='yes'){
									$link_key = 'link_' . $ij;
									if ( ! empty( $row['cell_button_link']['url'] ) ) {
										$this->add_render_attribute( $link_key, 'href', $row['cell_button_link']['url'] );
										if ( $row['cell_button_link']['is_external'] ) {
											$this->add_render_attribute( $link_key, 'target', '_blank' );
										}
										if ( $row['cell_button_link']['nofollow'] ) {
											$this->add_render_attribute( $link_key, 'rel', 'nofollow' );
										}
									}
									$this->add_render_attribute( $link_key, 'class', 'button-link-wrap' );
									$this->add_render_attribute( $link_key, 'role', 'button' );
									
									/*button attributes start*/
									$button_custom_attributes=$row["button_custom_attributes"];
									$custom_attributes=$row["custom_attributes"];
																		
									$cst_att='';
									if((!empty($button_custom_attributes) && $button_custom_attributes=='yes') && !empty($custom_attributes)){
										$cst_att = $custom_attributes;
									}
									/*button attributes end*/
									
									$button_style = $row['cell_button_style'];
									$button_text = $row['cell_button_text'];
									$btn_uid=uniqid('btn');
									$data_class= $btn_uid;
									$data_class .=' button-'.$button_style.' ';
									$button .='<div class="pt_plus_button '.esc_attr($data_class).'">';						
											$button .='<a '.$this->get_render_attribute_string( $link_key ).' '.$cst_att.' >';
											$button .= esc_html($button_text);
											$button .='</a>';
									$button .='</div>';
								}
								
								if('icon' === $row['cell_content_icon_image'] && $row["icon_font_style"]=='font_awesome'){
									$this->add_render_attribute( 'plus_cell_icon'  . $row['_id'], 'class', $row['cell_icon'] );
								}else if('icon' === $row['cell_content_icon_image'] && $row["icon_font_style"]=='icon_mind'){
									$this->add_render_attribute( 'plus_cell_icon'  . $row['_id'], 'class', $row['cell_icons_mind'] );								
								}

								$this->add_render_attribute( 'plus_table_col' . $row['_id'], 'class', 'plus-table-col' );
								$this->add_render_attribute( 'plus_table_col' . $row['_id'], 'class', 'elementor-repeater-item-' . $row['_id'] );
								
								if ( 1 < $row['cell_span'] ) {
									$this->add_render_attribute( 'plus_table_col' . $row['_id'], 'colspan', $row['cell_span'] );
								}
								if ( 1 < $row['cell_row_span'] ) {
									$this->add_render_attribute( 'plus_table_col' . $row['_id'], 'rowspan', $row['cell_row_span'] );
								}
								
								if ( !empty($row['image']['url']) ) {
									$image=$row['image']['id'];
									$img = wp_get_attachment_image_src($image,$row['image_thumbnail_size']);
									$image_Src = $img[0];
								
									$this->add_render_attribute( 'plus_col_img' . $row['_id'], 'src', $image_Src );
									$this->add_render_attribute( 'plus_col_img' . $row['_id'], 'class', 'plus-col-img--' . $settings['all_image_align'] );
									$this->add_render_attribute( 'plus_col_img' . $row['_id'], 'title', get_the_title( $row['image']['id'] ) );
									$this->add_render_attribute( 'plus_col_img' . $row['_id'], 'alt', get_the_title( $row['image']['id']) );
								}
								
								if ( ! empty( $row['link']['url'] ) ) {
									$this->add_render_attribute( 'col-link-' . $row['_id'], 'href', $row['link']['url'] );
									if ( $row['link']['is_external'] ) {
										$this->add_render_attribute( 'col-link-' . $row['_id'], 'target', '_blank' );
									}
									if ( $row['link']['nofollow'] ) {
										$this->add_render_attribute( 'col-link-' . $row['_id'], 'rel', 'nofollow' );
									}
									$this->add_render_attribute( 'col-link-' . $row['_id'], 'class', 'tb-col-link' );
								}

								if ( 'cell' === $row['content_type'] ) {
									// Fetch corresponding header cell text.
									if ( isset( $header_text[ $cell_counter_c ]['heading_text'] ) && $header_text[ $cell_counter_c ]['heading_text'] ) {
										$this->add_render_attribute( 'plus_table_col' . $row['_id'], 'data-title', $header_text[ $cell_counter_c ]['heading_text'] );
									}
									
									//tooltip
									$_tooltip='_tooltip_'.$rowi;
									if( isset($row['body_show_tooltips']) && $row['body_show_tooltips'] == 'yes' ) {
										
										$this->add_render_attribute( $_tooltip, 'data-tippy', '', true );

										$tooltip_content=$row['body_tooltip_content'];
										$this->add_render_attribute( $_tooltip, 'title', $tooltip_content, true );
										
										$plus_tooltip_position=($settings["tooltip_common_option_plus_tooltip_position"]!='') ? $settings["tooltip_common_option_plus_tooltip_position"] : 'top';
										$this->add_render_attribute( $_tooltip, 'data-tippy-placement', $plus_tooltip_position, true );
										
										$tooltip_interactive =($settings["tooltip_common_option_plus_tooltip_interactive"]=='' || $settings["tooltip_common_option_plus_tooltip_interactive"]=='yes') ? 'true' : 'false';
										$this->add_render_attribute( $_tooltip, 'data-tippy-interactive', $tooltip_interactive, true );
										
										$plus_tooltip_theme=($settings["tooltip_common_option_plus_tooltip_theme"]!='') ? $settings["tooltip_common_option_plus_tooltip_theme"] : 'dark';
										$this->add_render_attribute( $_tooltip, 'data-tippy-theme', $plus_tooltip_theme, true );
										
										
										$tooltip_arrow =($settings["tooltip_common_option_plus_tooltip_arrow"]!='none' || $settings["tooltip_common_option_plus_tooltip_arrow"]=='') ? 'true' : 'false';
										$this->add_render_attribute( $_tooltip, 'data-tippy-arrow', $tooltip_arrow , true );
										
										$plus_tooltip_arrow=($settings["tooltip_common_option_plus_tooltip_arrow"]!='') ? $settings["tooltip_common_option_plus_tooltip_arrow"] : 'sharp';
										$this->add_render_attribute( $_tooltip, 'data-tippy-arrowtype', $plus_tooltip_arrow, true );
										
										$plus_tooltip_animation=($settings["tooltip_common_option_plus_tooltip_animation"]!='') ? $settings["tooltip_common_option_plus_tooltip_animation"] : 'shift-toward';
										$this->add_render_attribute( $_tooltip, 'data-tippy-animation', $plus_tooltip_animation, true );
										
										$plus_tooltip_x_offset=($settings["tooltip_common_option_plus_tooltip_x_offset"]!='') ? $settings["tooltip_common_option_plus_tooltip_x_offset"] : 0;
										$plus_tooltip_y_offset=($settings["tooltip_common_option_plus_tooltip_y_offset"]!='') ? $settings["tooltip_common_option_plus_tooltip_y_offset"] : 0;
										$this->add_render_attribute( $_tooltip, 'data-tippy-offset', $plus_tooltip_x_offset .','. $plus_tooltip_y_offset, true );
										
										$tooltip_duration_in =($settings["tooltip_common_option_plus_tooltip_duration_in"]!='') ? $settings["tooltip_common_option_plus_tooltip_duration_in"] : 250;
										$tooltip_duration_out =($settings["tooltip_common_option_plus_tooltip_duration_out"]!='') ? $settings["tooltip_common_option_plus_tooltip_duration_out"] : 200;
										$tooltip_trigger =($settings["tooltip_common_option_plus_tooltip_triggger"]!='') ? $settings["tooltip_common_option_plus_tooltip_triggger"] : 'mouseenter';
										$tooltip_arrowtype =($settings["tooltip_common_option_plus_tooltip_arrow"]!='') ? $settings["tooltip_common_option_plus_tooltip_arrow"] : 'sharp';
									}

									$uniqid=uniqid("tooltip");
							
									$show_tooltips_on = !empty($row['body_show_tooltips_on']) ? $row['body_show_tooltips_on'] : 'box';
									$toolbox=$toolicon=$tt_on_icon='';
									if(!empty($show_tooltips_on) && $show_tooltips_on=='icon'){
										$toolbox = $this->get_render_attribute_string( 'plus_table_col' . $row['_id'] );
										$toolicon = 'id="'.esc_attr($uniqid).'" '.$this->get_render_attribute_string( 'plus_table_col' . $row['_id'] ).' data-local="true" '.$this->get_render_attribute_string( $_tooltip ).'';
										
										ob_start();
										\Elementor\Icons_Manager::render_icon( $settings['tt_on_icon'] , [ 'aria-hidden' => 'true' ]);
										$tt_on_icon = ob_get_contents();
										ob_end_clean();
										
									}else{										
										$toolbox = 'id="'.esc_attr($uniqid).'"'.$this->get_render_attribute_string( 'plus_table_col' . $row['_id'] ) .$this->get_render_attribute_string( $_tooltip );
									}								
								
									?>
									<<?php echo esc_attr($row['table_th_td']); ?> <?php echo $toolbox; ?>>
										<?php if ( ! empty( $row['link']['url'] ) ) { ?>
										<a <?php echo $this->get_render_attribute_string( 'col-link-' . $row['_id'] ); ?>>
										<?php } ?>
											<?php if(!empty($settings["mobile_responsive_table"]) && $settings["mobile_responsive_table"]=='one-by-one'){ ?>
												<div class="plus-table-mob-wrap">
												<span class="plus-table-mob-row">
													<?php if ( 'icon' === $header_text[ $cell_counter_c ]['icon_image'] ) { ?>												
															<?php if ( 'left' === $settings['all_icon_align'] ) { ?>
														<span <?php echo $this->get_render_attribute_string( $header_text[ $cell_counter_c ]['plus_heading_icon_align'] ); ?>>
															<i <?php echo $this->get_render_attribute_string( $header_text[ $cell_counter_c ]['plus_heading_icon'] ); ?>></i>
														</span>
													<?php } ?>											
													<?php } else { ?>
															<?php if ( $header_text[ $cell_counter_c ]['icons_image_url'] ) { ?>
																<?php if ( 'left' == $settings['all_image_align'] ) { ?>
																<img <?php echo $this->get_render_attribute_string( $header_text[ $cell_counter_c ]['plus_head_col_img'] ); ?>>
															<?php } ?>
															<?php } ?>
													<?php } ?>
													<?php if ( isset( $header_text[ $cell_counter_c ]['heading_text'] ) && $header_text[ $cell_counter_c ]['heading_text'] ) {														
														echo '<span class="mob-heading-text">'.$header_text[ $cell_counter_c ]['heading_text'].'</span>';
													}
													?>
													<?php if ( 'icon' === $header_text[ $cell_counter_c ]['icon_image'] ) { ?>												
														<?php if ( 'right' === $settings['all_icon_align'] ) { ?>
														<span <?php echo $this->get_render_attribute_string( $header_text[ $cell_counter_c ]['plus_heading_icon_align'] ); ?>>
															<i <?php echo $this->get_render_attribute_string( $header_text[ $cell_counter_c ]['plus_heading_icon'] ); ?>></i>
														</span>
													<?php } ?>											
													<?php } else { ?>
															<?php if ( $header_text[ $cell_counter_c ]['icons_image_url'] ) { ?>
																<?php if ( 'right' == $settings['all_image_align'] ) { ?>
																<img <?php echo $this->get_render_attribute_string( $header_text[ $cell_counter_c ]['plus_head_col_img'] ); ?>>
															<?php } ?>
															<?php } ?>
													<?php } ?>
												</span> 
											<?php } ?>
												<span <?php echo $this->get_render_attribute_string( 'plus_table__text' ); ?>>
													<?php if ( 'icon' === $row['cell_content_icon_image'] ) { ?>
														
															<?php if ( 'left' === $settings['all_icon_align'] ) { ?>
														<span <?php echo $this->get_render_attribute_string( 'plus_cell_icon_align' . $row['_id'] ); ?>>
															<i <?php echo $this->get_render_attribute_string( 'plus_cell_icon' . $row['_id'] ); ?>></i>
														</span>
														<?php } ?>
														
													<?php } else { ?>
														<?php if ( !empty($row['image']) && !empty($row['image']['url']) ) { ?>
															<?php if ( 'left' === $settings['all_image_align'] ) { ?>
															<img <?php echo $this->get_render_attribute_string( 'plus_col_img' . $row['_id'] ); ?>>
														<?php } ?>
														<?php } ?>
													<?php } ?>
													<?php if(!empty($row['cell_text'])){ ?>
														<span <?php echo $this->get_render_attribute_string( $repeater_cell_text ); ?>><?php echo $row['cell_text']; ?></span>
													<?php } ?>
													<?php if ( 'icon' === $row['cell_content_icon_image'] ) { ?>
														
															<?php if ( 'right' === $settings['all_icon_align'] ) { ?>
														<span <?php echo $this->get_render_attribute_string( 'plus_cell_icon_align' . $row['_id'] ); ?>>
															<i <?php echo $this->get_render_attribute_string( 'plus_cell_icon' . $row['_id'] ); ?>></i>
														</span>
														<?php } ?>
														
													<?php } else { ?>
														<?php if ( !empty($row['image']['url']) ) { ?>
															<?php if ( 'right' === $settings['all_image_align'] ) { ?>
															<img <?php echo $this->get_render_attribute_string( 'plus_col_img' . $row['_id'] ); ?>>
														<?php } ?>
														<?php } ?>
													<?php } ?>
													<?php echo $button; ?>
												</span>
											<?php if(!empty($settings["mobile_responsive_table"]) && $settings["mobile_responsive_table"]=='one-by-one'){ ?>
												</div>
											<?php } 
											if(!empty($show_tooltips_on) && $show_tooltips_on=='icon'){
												echo '<span class="tp-tooltip-on-icon" '.$toolicon.'>'.$tt_on_icon.'</span>';
											}											
											?>
										<?php if ( ! empty( $row['link']['url'] ) ) { ?>
										</a>
										<?php } ?>
									</<?php echo $row['table_th_td']; ?>>
										<?php
										// Increment to next cell.
										$cell_counter_c++;
										
										$body_inline_tippy_js='';
										if(isset($row['body_show_tooltips']) && $row['body_show_tooltips'] == 'yes'){
											$body_inline_tippy_js ='jQuery( document ).ready(function() {
											"use strict";
												if(typeof tippy === "function"){
													tippy( "#'.esc_attr($uniqid).'" , {
														arrowType : "'.esc_attr($tooltip_arrowtype).'",
														duration : ['.esc_attr($tooltip_duration_in).','.esc_attr($tooltip_duration_out).'],
														trigger : "'.esc_attr($tooltip_trigger).'",
														appendTo: document.querySelector("#'.esc_attr($uniqid).'")
													});
												}
											});';
											echo wp_print_inline_script_tag($body_inline_tippy_js);
										}
								} else {
									if ( $counter > 1 && $counter < $row_count ) {
										// Break into new row.
										++$data_entry_col;
										?>
										</tr><tr data-entry="<?php echo esc_attr($data_entry_col); ?>" <?php echo $this->get_render_attribute_string( 'plus_table_row' ); ?>>
									<?php
									} elseif ( 1 === $counter && false === $this->table_first_row() ) {
										$data_entry_col = 1;
										?>
										<tr data-entry="<?php echo esc_attr($data_entry_col); ?>" <?php echo $this->get_render_attribute_string( 'plus_table_row' ); ?>>
									<?php
									}
									$cell_counter_c = 0;
								}
								$rowi++;
								$counter++;
								$cell_inline_count++;
							}
						}
						?>
					</tbody>
				</table>
				
			</div>
			<?php } ?>
			<?php
			$html = ob_get_clean();
			
			echo $html;
			
			$css_rule = '<style>';
			if(!empty($cell_align_head_desktop)){				
				$css_rule .='#plus-table-id-' .esc_attr($widget_id).' th,#plus-table-id-' .esc_attr($widget_id).' th .plus-table__text{ ';			
					if($cell_align_head_desktop == 'left'){
						$css_rule .='margin:0 auto;text-align:left;margin-left:0;';
					}
					if($cell_align_head_desktop == 'center'){
						$css_rule .='margin:0 auto;text-align:center;';
					}
					if($cell_align_head_desktop == 'right'){
						$css_rule .='margin:0 auto;text-align:right;margin-right:0;';
					}
				$css_rule .='}';
			}
			if(!empty($cell_align_head_tablet)){
				$css_rule .='@media (max-width:1024px){#plus-table-id-' .esc_attr($widget_id).' th,#plus-table-id-' .esc_attr($widget_id).' th .plus-table__text{';
				
					if($cell_align_head_tablet=='left'){
						$css_rule .='margin:0 auto;text-align:left;margin-left:0;';
					}
					if($cell_align_head_tablet=='center'){
						$css_rule .='margin:0 auto;text-align:center;';
					}
					if($cell_align_head_tablet=='right'){
						$css_rule .='margin:0 auto;text-align:right;margin-right:0;';
					}			
				$css_rule .='}}';
			}
			if(!empty($cell_align_head_mobile)){
				$css_rule .='@media (max-width:767px){#plus-table-id-' .esc_attr($widget_id).' th,#plus-table-id-' .esc_attr($widget_id).' th .plus-table__text{';
				
					if($cell_align_head_mobile=='left'){
						$css_rule .='margin:0 auto;text-align:left;margin-left:0;';
					}
					if($cell_align_head_mobile=='center'){
						$css_rule .='margin:0 auto;text-align:center;';
					}
					if($cell_align_head_mobile=='right'){
						$css_rule .='margin:0 auto;text-align:right;margin-right:0;';
					}
				$css_rule .='}}';
			}
			$css_rule .='</style>';
			echo $css_rule;
	}
	/**
	 * Function to identify if it is a table first row or not.
	 *
	 * If yes returns false no returns true.
	 *
	 * @access protected
	 */
	protected function table_first_row() {

		$settings = $this->get_settings_for_display();

		if ( 'row' === $settings['table_content'][0]['content_type'] ) {
			return false;
		}

		return true;
	}
    protected function content_template() {
	
    }
}