<?php
class AIOC_PricingCarousel extends ET_Builder_Module {

	public $slug       = 'aioc_pricing_carousel';
	public $child_slug = 'aioc_pricing_carousel_item';
	public $vb_support = 'on';

	protected $module_credits = array(
		'module_uri' => 'https://diviextended.com/product/all-in-one-carousel-for-divi',
		'author'     => 'Elicus',
		'author_uri' => 'https://elicus.com',
	);

	public function init() {
		$this->name             = esc_html__( 'DE Pricing Carousel', 'all-in-one-carousel-for-divi' );
		$this->child_item_text  = esc_html__( 'Pricing', 'all-in-one-carousel-for-divi' );
		$this->main_css_element = '%%order_class%%';
	}


	public function get_settings_modal_toggles() {
		return array(
			'general'  => array(
				'toggles' => array(
					'main_content' => array(
						'title'    => esc_html__( 'Settings', 'divi-plus' ),
						'priority' => 1,
					),
					'slider_settings' => array(
						'title'       => esc_html__( 'Slider', 'all-in-one-carousel-for-divi' ),
						'sub_toggles' => array(
							'general'    => array(
								'name' => 'General',
							),
							'navigation' => array(
								'name' => 'Navigation',
							),
							'content'    => array(
								'name' => 'Content',
							),
						),
						'tabbed_subtoggles' => true,
					),
				),
			),
			'advanced' => array(
				'toggles' => array(
					'global_alignment' => array(
						'title' => esc_html__( 'Global Alignment', 'all-in-one-carousel-for-divi' ),
					),
					'heading_settings' => array(
						'title'       => esc_html__( 'Heading', 'all-in-one-carousel-for-divi' ),
						'sub_toggles' => array(
							'general'  => array(
								'name' => 'General',
							),
							'title'    => array(
								'name' => 'Title',
							),
							'subtitle' => array(
								'name' => 'Subtitle',
							),
						),
						'tabbed_subtoggles' => true,
					),
					'price_settings' => array(
						'title'        => esc_html__( 'Price', 'all-in-one-carousel-for-divi' ),
						'sub_toggles'  => array(
							'general'  => array(
								'name' => 'General',
							),
							'price'    => array(
								'name' => 'Price',
							),
							'currency' => array(
								'name' => 'Currency',
							),
							'per'      => array(
								'name' => 'Frequency',
							),
						),
						'tabbed_subtoggles' => true,
					),
					'element_settings' => array(
						'title'       => esc_html__( 'Elements', 'all-in-one-carousel-for-divi' ),
						'sub_toggles' => array(
							'general' => array(
								'name' => 'General',
							),
							'element' => array(
								'name' => 'Element',
							),
						),
						'tabbed_subtoggles' => true,
					),
					'content_settings' => array(
						'title'       => esc_html__( 'Content', 'all-in-one-carousel-for-divi' ),
						'sub_toggles' => array(
							'general' => array(
								'name' => 'General',
							),
							'content' => array(
								'name' => 'List',
							),
							'excluded_text' => array(
								'name' => 'Excluded List',
							),
						),
						'tabbed_subtoggles' => true,
					),
					'bullet_settings' => array(
						'title'             => esc_html__( 'Bullet', 'all-in-one-carousel-for-divi' ),
						'sub_toggles'       => array(
							'all_bullets'     => array(
								'name' => 'All Bullets',
							),
							'exclude_bullets' => array(
								'name' => 'Excluded Bullets',
							),
						),
						'tabbed_subtoggles' => true,
					),
					'ribbon' => array(
						'title' => esc_html__( 'Ribbon', 'all-in-one-carousel-for-divi' ),
					),
					'coverflow_settings' => array(
						'title' => esc_html__( 'Coverflow', 'all-in-one-carousel-for-divi' ),
					),
					'arrow_settings' => array(
						'title'             => esc_html__( 'Arrow', 'all-in-one-carousel-for-divi' ),
						'sub_toggles'       => array(
							'general'     => array(
								'name' => 'General',
							),
							'left_arrow'  => array(
								'name' => 'Left',
							),
							'right_arrow' => array(
								'name' => 'Right',
							),
						),
						'tabbed_subtoggles' => true,
					),
					'pagination_styles'  => array(
						'title' => esc_html__( 'Pagination', 'all-in-one-carousel-for-divi' ),
					),
				),
			),
		);
	}

	public function get_advanced_fields_config() {
		return array(
			'fonts' => array(
				'title' => array(
					'label'     => esc_html__( 'Title', 'all-in-one-carousel-for-divi' ),
					'font_size' => array(
						'default'        => '',
						'range_settings' => array(
							'min'  => '1',
							'max'  => '100',
							'step' => '1',
						),
						'validate_unit'  => true,
					),
					'line_height' => array(
						'default_on_front' => '1.2em',
						'range_settings'   => array(
							'min'  => '0.1',
							'max'  => '10',
							'step' => '0.1',
						),
					),
					'letter_spacing' => array(
						'default_on_front' => '',
						'range_settings'   => array(
							'min'  => '0',
							'max'  => '10',
							'step' => '1',
						),
						'validate_unit'    => true,
					),
					'header_level'   => array(
						'default' => 'h4',
					),
					'css'            => array(
						'main'      => "{$this->main_css_element} .aioc_slide_title",
						'important' => 'all',
					),
					'tab_slug'       => 'advanced',
					'toggle_slug'    => 'heading_settings',
					'sub_toggle'     => 'title',
				),
				'subtitle' => array(
					'label'     => esc_html__( 'Subtitle', 'all-in-one-carousel-for-divi' ),
					'font_size' => array(
						'default'        => '16px',
						'range_settings' => array(
							'min'  => '1',
							'max'  => '100',
							'step' => '1',
						),
						'validate_unit'  => true,
					),
					'line_height' => array(
						'default_on_front' => '1.2em',
						'range_settings'   => array(
							'min'  => '0.1',
							'max'  => '10',
							'step' => '0.1',
						),
					),
					'letter_spacing' => array(
						'default_on_front' => '0px',
						'range_settings'   => array(
							'min'  => '0',
							'max'  => '10',
							'step' => '1',
						),
						'validate_unit'    => true,
					),
					'css' => array(
						'main'      => "{$this->main_css_element} .aioc_slide_subtitle",
						'important' => 'all',
					),
					'tab_slug'       => 'advanced',
					'toggle_slug'    => 'heading_settings',
					'sub_toggle'     => 'subtitle',
				),
				'content' => array(
					'label'     => esc_html__( 'List', 'all-in-one-carousel-for-divi' ),
					'font_size' => array(
						'default'        => '14px',
						'range_settings' => array(
							'min'  => '1',
							'max'  => '100',
							'step' => '1',
						),
						'validate_unit'  => true,
					),
					'line_height' => array(
						'default'        => '1.5em',
						'range_settings' => array(
							'min'  => '0.1',
							'max'  => '10',
							'step' => '0.1',
						),
					),
					'letter_spacing' => array(
						'default'        => '0px',
						'range_settings' => array(
							'min'  => '0',
							'max'  => '10',
							'step' => '1',
						),
						'validate_unit'  => true,
					),
					'css' => array(
						'main'      => "{$this->main_css_element} .aioc_pricing_content, {$this->main_css_element} .aioc_pricing_content li",
						'important' => 'all',
					),
					'tab_slug'    => 'advanced',
					'toggle_slug' => 'content_settings',
					'sub_toggle'  => 'content',
				),
				'excluded_text' => array(
					'label'     => esc_html__( 'Excluded List', 'all-in-one-carousel-for-divi' ),
					'font_size' => array(
						'default'        => '14px',
						'range_settings' => array(
							'min'  => '1',
							'max'  => '100',
							'step' => '1',
						),
						'validate_unit'  => true,
					),
					'line_height' => array(
						'default'        => '1.5em',
						'range_settings' => array(
							'min'  => '0.1',
							'max'  => '10',
							'step' => '0.1',
						),
					),
					'letter_spacing' => array(
						'default'        => '0px',
						'range_settings' => array(
							'min'  => '0',
							'max'  => '10',
							'step' => '1',
						),
						'validate_unit'  => true,
					),
					'css'            => array(
						'main'      => "{$this->main_css_element} .aioc_pricing_content ul li.aioc_not_available",
						'important' => 'all',
					),
					'tab_slug'       => 'advanced',
					'toggle_slug'    => 'content_settings',
					'sub_toggle'     => 'excluded_text',
				),
				'ribbon' => array(
					'label'     => esc_html__( 'Ribbon', 'all-in-one-carousel-for-divi' ),
					'font_size' => array(
						'default'        => '16px',
						'range_settings' => array(
							'min'  => '1',
							'max'  => '100',
							'step' => '1',
						),
						'validate_unit'  => true,
					),
					'line_height' => array(
						'default_on_front' => '1.2em',
						'range_settings'   => array(
							'min'  => '0.1',
							'max'  => '10',
							'step' => '0.1',
						),
					),
					'letter_spacing' => array(
						'default_on_front' => '',
						'range_settings'   => array(
							'min'  => '0',
							'max'  => '10',
							'step' => '1',
						),
						'validate_unit'    => true,
					),
					'css' => array(
						'main'      => "{$this->main_css_element} .aioc_slide_ribbon",
						'important' => 'all',
					),
					'hide_text_align' => true,
					'tab_slug'        => 'advanced',
					'toggle_slug'     => 'ribbon',
				),
				'price' => array(
					'label'     => esc_html__( 'Price', 'all-in-one-carousel-for-divi' ),
					'font_size' => array(
						'default'        => '60px',
						'range_settings' => array(
							'min'  => '1',
							'max'  => '100',
							'step' => '1',
						),
						'validate_unit'  => true,
					),
					'line_height' => array(
						'default_on_front' => '1.2em',
						'range_settings'   => array(
							'min'  => '0.1',
							'max'  => '10',
							'step' => '0.1',
						),
					),
					'letter_spacing' => array(
						'default_on_front' => '',
						'range_settings'   => array(
							'min'  => '0',
							'max'  => '10',
							'step' => '1',
						),
						'validate_unit'    => true,
					),
					'css' => array(
						'main'      => "{$this->main_css_element} .aioc_slide_price",
						'important' => 'all',
					),
					'hide_text_align' => true,
					'tab_slug'        => 'advanced',
					'toggle_slug'     => 'price_settings',
					'sub_toggle'      => 'price',
				),
				'currency' => array(
					'label'     => esc_html__( 'Currency', 'all-in-one-carousel-for-divi' ),
					'font_size' => array(
						'default'        => '16px',
						'range_settings' => array(
							'min'  => '1',
							'max'  => '100',
							'step' => '1',
						),
						'validate_unit'  => true,
					),
					'line_height' => array(
						'default_on_front' => '1.2em',
						'range_settings'   => array(
							'min'  => '0.1',
							'max'  => '10',
							'step' => '0.1',
						),
					),
					'letter_spacing'  => array(
						'default_on_front' => '',
						'range_settings'   => array(
							'min'  => '0',
							'max'  => '10',
							'step' => '1',
						),
						'validate_unit' => true,
					),
					'css' => array(
						'main'      => "{$this->main_css_element} .aioc_slide_currency_sign",
						'important' => 'all',
					),
					'hide_text_align' => true,
					'tab_slug'        => 'advanced',
					'toggle_slug'     => 'price_settings',
					'sub_toggle'      => 'currency',
				),
				'per' => array(
					'label'     => esc_html__( 'Frequency', 'all-in-one-carousel-for-divi' ),
					'font_size' => array(
						'default'        => '16px',
						'range_settings' => array(
							'min'  => '1',
							'max'  => '100',
							'step' => '1',
						),
						'validate_unit'  => true,
					),
					'line_height' => array(
						'default_on_front' => '1.2em',
						'range_settings'   => array(
							'min'  => '0.1',
							'max'  => '10',
							'step' => '0.1',
						),
					),
					'letter_spacing' => array(
						'default_on_front' => '',
						'range_settings'   => array(
							'min'  => '0',
							'max'  => '10',
							'step' => '1',
						),
						'validate_unit' => true,
					),
					'css' => array(
						'main'      => "{$this->main_css_element} .aioc_slide_frequency",
						'important' => 'all',
					),
					'hide_text_align' => true,
					'tab_slug'        => 'advanced',
					'toggle_slug'     => 'price_settings',
					'sub_toggle'      => 'per',
				),
			),
			'slider_margin_padding' => array(
				'heading' => array(
					'margin_padding' => array(
						'css' => array(
							'margin'    => '%%order_class%% .aioc_pricing_heading',
							'padding'   => '%%order_class%% .aioc_pricing_heading',
							'important' => 'all',
						),
					),
				),
				'price' => array(
					'margin_padding' => array(
						'css' => array(
							'margin'    => '%%order_class%% .aioc_pricing_content_top',
							'padding'   => '%%order_class%% .aioc_pricing_content_top',
							'important' => 'all',
						),
					),
				),
				'elements' => array(
					'margin_padding' => array(
						'css' => array(
							'margin'    => false,
							'padding'   => '%%order_class%% .aioc_pricing_elements',
							'important' => 'all',
						),
					),
				),
				'content' => array(
					'margin_padding' => array(
						'css' => array(
							'margin'    => false,
							'padding'   => '%%order_class%% .aioc_pricing_content',
							'important' => 'all',
						),
					),
				),
				'slider_container' => array(
					'margin_padding' => array(
						'css' => array(
							'use_margin' => false,
							'padding'    => "{$this->main_css_element} .swiper-container",
							'important'  => 'all',
						),
					),
				),
				'arrows' => array(
					'margin_padding' => array(
						'css' => array(
							'use_margin' => false,
							'padding'    => "{$this->main_css_element} .aioc_swiper_navigation .swiper-button-next, {$this->main_css_element} .aioc_swiper_navigation .swiper-button-prev",
							'important'  => 'all',
						),
					),
				),
			),
			'margin_padding' => array(
				'css' => array(
					'main'      => $this->main_css_element,
					'important' => 'all',
				),
			),
			'max_width' => array(
				'default' => array(
					'css' => array(
						'main'             => '%%order_class%%',
						'module_alignment' => '%%order_class%%',
					),
				),
			),
			'height' => array(
				'default' => array(
					'css' => array(
						'main' => '%%order_class%%',
					),
				),
			),
			'borders' => array(
				'price'   => array(
					'css' => array(
						'main' => array(
							'border_radii'  => '%%order_class%% .layout3 .aioc_pricing_content_top .aioc_price_wrapper',
							'border_styles' => '%%order_class%% .layout3 .aioc_pricing_content_top .aioc_price_wrapper',
						),
					),
					'depends_on'      => array( 'select_layout' ),
					'depends_show_if' => 'layout3',
					'option_category' => 'border',
					'tab_slug'        => 'advanced',
					'toggle_slug'     => 'price_settings',
					'sub_toggle'      => 'general',
				),
				'default' => array(
					'css' => array(
						'main' => array(
							'border_radii'  => $this->main_css_element,
							'border_styles' => $this->main_css_element,
						),
					),
				),
			),
			'box_shadow' => array(
				'default' => array(
					'css' => array(
						'main'      => $this->main_css_element,
						'important' => 'all',
					),
				),
			),
			'background' => array(
				'css' => array(
					'main' => $this->main_css_element,
				),
			),
			'text'         => false,
			'text_shadow'  => false,
			'filters'      => false,
			'link_options' => false,
		);
	}

	public function get_fields() {
		return array(
			'slide_effect' => array(
				'label'           => esc_html__( 'Carousel Effect', 'all-in-one-carousel-for-divi' ),
				'type'            => 'select',
				'option_category' => 'layout',
				'options'         => array(
					'slide'     => esc_html__( 'Slide', 'all-in-one-carousel-for-divi' ),
					'cube'      => esc_html__( 'Cube', 'all-in-one-carousel-for-divi' ),
					'coverflow' => esc_html__( 'Coverflow', 'all-in-one-carousel-for-divi' ),
					'flip'      => esc_html__( 'Flip', 'all-in-one-carousel-for-divi' ),
				),
				'default'         => 'slide',
				'tab_slug'        => 'general',
				'toggle_slug'     => 'slider_settings',
				'sub_toggle'      => 'general',
				'description'     => esc_html__( 'Here you can choose the slide animation effect.', 'all-in-one-carousel-for-divi' ),
			),
			'cards_per_slide' => array(
				'label'            => esc_html__( 'Slides Per View', 'all-in-one-carousel-for-divi' ),
				'type'             => 'select',
				'option_category'  => 'layout',
				'options'          => array(
					'1'  => esc_html__( '1', 'all-in-one-carousel-for-divi' ),
					'2'  => esc_html__( '2', 'all-in-one-carousel-for-divi' ),
					'3'  => esc_html__( '3', 'all-in-one-carousel-for-divi' ),
					'4'  => esc_html__( '4', 'all-in-one-carousel-for-divi' ),
					'5'  => esc_html__( '5', 'all-in-one-carousel-for-divi' ),
					'6'  => esc_html__( '6', 'all-in-one-carousel-for-divi' ),
					'7'  => esc_html__( '7', 'all-in-one-carousel-for-divi' ),
					'8'  => esc_html__( '8', 'all-in-one-carousel-for-divi' ),
					'9'  => esc_html__( '9', 'all-in-one-carousel-for-divi' ),
					'10' => esc_html__( '10', 'all-in-one-carousel-for-divi' ),
					'11' => esc_html__( '11', 'all-in-one-carousel-for-divi' ),
					'12' => esc_html__( '12', 'all-in-one-carousel-for-divi' ),
					'13' => esc_html__( '13', 'all-in-one-carousel-for-divi' ),
					'14' => esc_html__( '14', 'all-in-one-carousel-for-divi' ),
					'15' => esc_html__( '15', 'all-in-one-carousel-for-divi' ),
				),
				'default'          => '3',
				'default_on_front' => '3',
				'mobile_options'   => true,
				'show_if'          => array(
					'slide_effect' => array( 'slide', 'coverflow' ),
				),
				'tab_slug'         => 'general',
				'toggle_slug'      => 'slider_settings',
				'sub_toggle'       => 'general',
				'description'      => esc_html__( 'Here you can choose the number of cards to display per slide.', 'all-in-one-carousel-for-divi' ),
			),
			'slides_per_group' => array(
				'label'           => esc_html__( 'Slides Per Group', 'all-in-one-carousel-for-divi' ),
				'type'            => 'select',
				'option_category' => 'layout',
				'options'         => array(
					'1'  => esc_html__( '1', 'all-in-one-carousel-for-divi' ),
					'2'  => esc_html__( '2', 'all-in-one-carousel-for-divi' ),
					'3'  => esc_html__( '3', 'all-in-one-carousel-for-divi' ),
					'4'  => esc_html__( '4', 'all-in-one-carousel-for-divi' ),
					'5'  => esc_html__( '5', 'all-in-one-carousel-for-divi' ),
					'6'  => esc_html__( '6', 'all-in-one-carousel-for-divi' ),
					'7'  => esc_html__( '7', 'all-in-one-carousel-for-divi' ),
					'8'  => esc_html__( '8', 'all-in-one-carousel-for-divi' ),
					'9'  => esc_html__( '9', 'all-in-one-carousel-for-divi' ),
					'10' => esc_html__( '10', 'all-in-one-carousel-for-divi' ),
					'11' => esc_html__( '11', 'all-in-one-carousel-for-divi' ),
					'12' => esc_html__( '12', 'all-in-one-carousel-for-divi' ),
					'13' => esc_html__( '13', 'all-in-one-carousel-for-divi' ),
					'14' => esc_html__( '14', 'all-in-one-carousel-for-divi' ),
					'15' => esc_html__( '15', 'all-in-one-carousel-for-divi' ),
				),
				'default'         => '1',
				'mobile_options'  => true,
				'show_if'         => array(
					'slide_effect' => array( 'slide', 'coverflow' ),
				),
				'tab_slug'        => 'general',
				'toggle_slug'     => 'slider_settings',
				'sub_toggle'      => 'general',
				'description'     => esc_html__( 'Here you can choose the number of slides per group to slide by.', 'all-in-one-carousel-for-divi' ),
			),
			'space_between_slides' => array(
				'label'           => esc_html__( 'Space between Slides', 'all-in-one-carousel-for-divi' ),
				'type'            => 'range',
				'option_category' => 'layout',
				'range_settings'  => array(
					'min'  => '10',
					'max'  => '100',
					'step' => '1',
				),
				'show_if'         => array(
					'slide_effect' => array( 'slide', 'coverflow' ),
				),
				'fixed_unit'      => 'px',
				'default'         => '20px',
				'mobile_options'  => true,
				'tab_slug'        => 'general',
				'toggle_slug'     => 'slider_settings',
				'sub_toggle'      => 'general',
				'description'     => esc_html__( 'Move the slider or input the value to increse or decrease the space between slides.', 'all-in-one-carousel-for-divi' ),
			),
			'slider_loop' => array(
				'label'           => esc_html__( 'Enable Loop', 'all-in-one-carousel-for-divi' ),
				'type'            => 'yes_no_button',
				'option_category' => 'configuration',
				'options'         => array(
					'on'  => esc_html__( 'Yes', 'all-in-one-carousel-for-divi' ),
					'off' => esc_html__( 'No', 'all-in-one-carousel-for-divi' ),
				),
				'default'         => 'on',
				'tab_slug'        => 'general',
				'toggle_slug'     => 'slider_settings',
				'sub_toggle'      => 'general',
				'description'     => esc_html__( 'Here you can enable loop for the slides.', 'all-in-one-carousel-for-divi' ),
			),
			'autoplay' => array(
				'label'           => esc_html__( 'Autoplay', 'all-in-one-carousel-for-divi' ),
				'type'            => 'yes_no_button',
				'option_category' => 'configuration',
				'options'         => array(
					'on'  => esc_html__( 'Yes', 'all-in-one-carousel-for-divi' ),
					'off' => esc_html__( 'No', 'all-in-one-carousel-for-divi' ),
				),
				'default'         => 'on',
				'tab_slug'        => 'general',
				'toggle_slug'     => 'slider_settings',
				'sub_toggle'      => 'general',
				'description'     => esc_html__( 'This controls the auto play of the card carousel.', 'all-in-one-carousel-for-divi' ),
			),
			'enable_linear_transition'	=> array(
				'label'           => esc_html__( 'Enable Linear Transition', 'all-in-one-carousel-for-divi' ),
				'type'            => 'yes_no_button',
				'option_category' => 'configuration',
				'options'         => array(
					'on'  => esc_html__( 'Yes', 'all-in-one-carousel-for-divi' ),
					'off' => esc_html__( 'No', 'all-in-one-carousel-for-divi' ),
				),
				'default'         => 'off',
				'tab_slug'        => 'general',
				'toggle_slug'     => 'slider_settings',
				'sub_toggle'	  => 'general',
				'description'     => esc_html__( 'Here you can choose whether or not to enable linear transition between slides.', 'all-in-one-carousel-for-divi' ),
			),
			'autoplay_speed' => array(
				'label'           => esc_html__( 'Autoplay Delay', 'all-in-one-carousel-for-divi' ),
				'type'            => 'text',
				'option_category' => 'configuration',
				'default'         => '3000',
				'show_if'         => array(
					'autoplay' => 'on',
				),
				'tab_slug'        => 'general',
				'toggle_slug'     => 'slider_settings',
				'sub_toggle'      => 'general',
				'description'     => esc_html__( 'This controls the time of the slide before the transition.', 'all-in-one-carousel-for-divi' ),
			),
			'pause_on_hover' => array(
				'label'           => esc_html__( 'Pause On Hover', 'all-in-one-carousel-for-divi' ),
				'type'            => 'yes_no_button',
				'option_category' => 'configuration',
				'options'         => array(
					'on'  => esc_html__( 'Yes', 'all-in-one-carousel-for-divi' ),
					'off' => esc_html__( 'No', 'all-in-one-carousel-for-divi' ),
				),
				'default'         => 'on',
				'show_if'         => array(
					'autoplay' => 'on',
				),
				'tab_slug'        => 'general',
				'toggle_slug'     => 'slider_settings',
				'sub_toggle'      => 'general',
				'description'     => esc_html__( 'Control for pausing slides on mouse hover.', 'all-in-one-carousel-for-divi' ),
			),
			'transition_duration' => array(
				'label'           => esc_html__( 'Transition Duration', 'all-in-one-carousel-for-divi' ),
				'type'            => 'text',
				'option_category' => 'configuration',
				'default'         => '1000',
				'tab_slug'        => 'general',
				'toggle_slug'     => 'slider_settings',
				'sub_toggle'      => 'general',
				'description'     => esc_html__( 'Here you can specify the duration of transition for each slide in miliseconds.', 'all-in-one-carousel-for-divi' ),
			),
			'slide_center_mode' => array(
				'label'            => esc_html__( 'Slide Center Mode', 'all-in-one-carousel-for-divi' ),
				'type'             => 'yes_no_button',
				'option_category'  => 'configuration',
				'options'          => array(
					'on'  => esc_html__( 'Yes', 'all-in-one-carousel-for-divi' ),
					'off' => esc_html__( 'No', 'all-in-one-carousel-for-divi' ),
				),
				'show_if'          => array(
					'slide_effect' => array( 'slide' ),
				),
				'default'          => 'off',
				'default_on_front' => 'off',
				'tab_slug'         => 'general',
				'toggle_slug'      => 'slider_settings',
				'sub_toggle'       => 'general',
				'description'      => esc_html__( 'Whether or not to enable slide center mode.', 'all-in-one-carousel-for-divi' ),
			),
			'equalize_slides_height' => array(
				'label'            => esc_html__( 'Equalize Slides Height', 'all-in-one-carousel-for-divi' ),
				'type'             => 'yes_no_button',
				'option_category'  => 'configuration',
				'options'          => array(
					'on'  => esc_html__( 'Yes', 'all-in-one-carousel-for-divi' ),
					'off' => esc_html__( 'No', 'all-in-one-carousel-for-divi' ),
				),
				'default'          => 'off',
				'default_on_front' => 'off',
				'tab_slug'         => 'general',
				'toggle_slug'      => 'slider_settings',
				'sub_toggle'       => 'general',
				'description'      => esc_html__( 'Choose whether or not equalize slides height.', 'all-in-one-carousel-for-divi' ),
			),
			'show_arrow' => array(
				'label'            => esc_html__( 'Show Arrows', 'all-in-one-carousel-for-divi' ),
				'type'             => 'yes_no_button',
				'option_category'  => 'configuration',
				'options'          => array(
					'on'  => esc_html__( 'Yes', 'all-in-one-carousel-for-divi' ),
					'off' => esc_html__( 'No', 'all-in-one-carousel-for-divi' ),
				),
				'default'          => 'off',
				'default_on_front' => 'off',
				'tab_slug'         => 'general',
				'toggle_slug'      => 'slider_settings',
				'sub_toggle'       => 'navigation',
				'description'      => esc_html__( 'Choose whether or not the previous & next arrows should be visible.', 'all-in-one-carousel-for-divi' ),
			),
			'show_arrow_on_hover' => array(
				'label'            => esc_html__( 'Show Arrows On Hover', 'all-in-one-carousel-for-divi' ),
				'type'             => 'yes_no_button',
				'option_category'  => 'configuration',
				'options'          => array(
					'on'  => esc_html__( 'Yes', 'all-in-one-carousel-for-divi' ),
					'off' => esc_html__( 'No', 'all-in-one-carousel-for-divi' ),
				),
				'show_if'          => array(
					'show_arrow' => 'on',
				),
				'default'          => 'off',
				'default_on_front' => 'off',
				'tab_slug'         => 'general',
				'toggle_slug'      => 'slider_settings',
				'sub_toggle'       => 'navigation',
				'description'      => esc_html__( 'Choose whether or not the previous and next arrows should be visible.', 'all-in-one-carousel-for-divi' ),
			),
			'arrows_position' => array(
				'label'           => esc_html__( 'Arrows Position', 'all-in-one-carousel-for-divi' ),
				'type'            => 'select',
				'option_category' => 'layout',
				'options'         => array(
					'inside'               => esc_html__( 'Inside', 'all-in-one-carousel-for-divi' ),
					'outside'              => esc_html__( 'Outside', 'all-in-one-carousel-for-divi' ),
					'top_left'             => esc_html__( 'Top Left', 'all-in-one-carousel-for-divi' ),
					'top_right'            => esc_html__( 'Top Right', 'all-in-one-carousel-for-divi' ),
					'top_center'           => esc_html__( 'Top Center', 'all-in-one-carousel-for-divi' ),
					'bottom_left'          => esc_html__( 'Bottom Left', 'all-in-one-carousel-for-divi' ),
					'inside_bottom_left'   => esc_html__( 'Inside Bottom Left', 'all-in-one-carousel-for-divi' ),
					'bottom_right'         => esc_html__( 'Bottom Right', 'all-in-one-carousel-for-divi' ),
					'inside_bottom_right'  => esc_html__( 'Inside Bottom Right', 'all-in-one-carousel-for-divi' ),
					'bottom_center'        => esc_html__( 'Bottom Center', 'all-in-one-carousel-for-divi' ),
					'inside_bottom_center' => esc_html__( 'Inside Bottom Center', 'all-in-one-carousel-for-divi' ),
				),
				'default'         => 'inside',
				'mobile_options'  => true,
				'show_if'         => array(
					'show_arrow' => 'on',
				),
				'tab_slug'        => 'general',
				'toggle_slug'     => 'slider_settings',
				'sub_toggle'      => 'navigation',
				'description'     => esc_html__( 'Here you can choose the arrows position.', 'all-in-one-carousel-for-divi' ),
			),
			'show_control_dot' => array(
				'label'            => esc_html__( 'Show Dots Pagination', 'all-in-one-carousel-for-divi' ),
				'type'             => 'yes_no_button',
				'option_category'  => 'configuration',
				'options'          => array(
					'on'  => esc_html__( 'Yes', 'all-in-one-carousel-for-divi' ),
					'off' => esc_html__( 'No', 'all-in-one-carousel-for-divi' ),
				),
				'default'          => 'off',
				'default_on_front' => 'off',
				'tab_slug'         => 'general',
				'toggle_slug'      => 'slider_settings',
				'sub_toggle'       => 'navigation',
				'description'      => esc_html__( 'This setting will turn on and off the pagination of the slider.', 'all-in-one-carousel-for-divi' ),
			),
			'control_dot_style' => array(
				'label'           => esc_html__( 'Dots Pagination Style', 'all-in-one-carousel-for-divi' ),
				'type'            => 'select',
				'option_category' => 'layout',
				'options'         => array(
					'solid_dot'       => esc_html__( 'Solid Dot', 'all-in-one-carousel-for-divi' ),
					'transparent_dot' => esc_html__( 'Transparent Dot', 'all-in-one-carousel-for-divi' ),
					'stretched_dot'   => esc_html__( 'Stretched Dot', 'all-in-one-carousel-for-divi' ),
					'line'            => esc_html__( 'Line', 'all-in-one-carousel-for-divi' ),
					'rounded_line'    => esc_html__( 'Rounded Line', 'all-in-one-carousel-for-divi' ),
					'square_dot'      => esc_html__( 'Squared Dot', 'all-in-one-carousel-for-divi' ),
					'number_dot'      => esc_html__( 'Number Dot', 'all-in-one-carousel-for-divi' ),
				),
				'show_if'         => array(
					'show_control_dot' => 'on',
				),
				'default'         => 'solid_dot',
				'tab_slug'        => 'general',
				'toggle_slug'     => 'slider_settings',
				'sub_toggle'      => 'navigation',
				'description'     => esc_html__( 'control dot style', 'all-in-one-carousel-for-divi' ),
			),
			'enable_dynamic_dots' => array(
				'label'           => esc_html__( 'Enable Dynamic Dots', 'all-in-one-carousel-for-divi' ),
				'type'            => 'yes_no_button',
				'option_category' => 'configuration',
				'options'         => array(
					'on'  => esc_html__( 'Yes', 'all-in-one-carousel-for-divi' ),
					'off' => esc_html__( 'No', 'all-in-one-carousel-for-divi' ),
				),
				'default'         => 'off',
				'show_if'         => array(
					'show_control_dot'  => 'on',
					'control_dot_style' => array(
						'solid_dot',
						'transparent_dot',
						'square_dot',
						'number_dot',
					),
				),
				'tab_slug'        => 'general',
				'toggle_slug'     => 'slider_settings',
				'sub_toggle'      => 'navigation',
				'description'     => esc_html__( 'This setting will turn on and off the dynamic pagination of the slider.', 'all-in-one-carousel-for-divi' ),
			),
			'select_layout' => array(
				'label'            => esc_html__( 'Select Layout', 'all-in-one-carousel-for-divi' ),
				'type'             => 'select',
				'option_category'  => 'layout',
				'options'          => array(
					'layout1' => esc_html__( 'Layout 1', 'all-in-one-carousel-for-divi' ),
					'layout2' => esc_html__( 'Layout 2', 'all-in-one-carousel-for-divi' ),
					'layout3' => esc_html__( 'Layout 3', 'all-in-one-carousel-for-divi' ),
				),
				'affects'          => array(
					'border_radii_price',
				),
				'default'          => 'layout1',
				'default_on_front' => 'layout1',
				'tab_slug'         => 'general',
				'toggle_slug'      => 'slider_settings',
				'sub_toggle'       => 'content',
				'description'      => esc_html__( 'Here you can select the slider layout.', 'all-in-one-carousel-for-divi' ),
			),
			'global_align' => array(
				'label'            => esc_html__( 'Global Alignment', 'all-in-one-carousel-for-divi' ),
				'type'             => 'text_align',
				'option_category'  => 'layout',
				'options'          => et_builder_get_text_orientation_options( array( 'justified' ) ),
				'default'          => 'center',
				'default_on_front' => 'center',
				'tab_slug'         => 'advanced',
				'toggle_slug'      => 'global_alignment',
				'description'      => esc_html__( 'Here you can choose global alignment.', 'all-in-one-carousel-for-divi' ),
				'options_icon'     => 'module_align',
			),
			'enable_coverflow_shadow' => array(
				'label'           => esc_html__( 'Enable Slide Shadow', 'all-in-one-carousel-for-divi' ),
				'type'            => 'yes_no_button',
				'option_category' => 'configuration',
				'options'         => array(
					'on'  => esc_html__( 'Yes', 'all-in-one-carousel-for-divi' ),
					'off' => esc_html__( 'No', 'all-in-one-carousel-for-divi' ),
				),
				'default'         => 'off',
				'show_if'         => array(
					'slide_effect' => 'coverflow',
				),
				'tab_slug'        => 'advanced',
				'toggle_slug'     => 'coverflow_settings',
				'description'     => esc_html__( 'Enable Slide Shadow For Coverflow Effect.', 'all-in-one-carousel-for-divi' ),
			),
			'coverflow_shadow_color' => array(
				'label'        => esc_html__( 'Shadow Color', 'all-in-one-carousel-for-divi' ),
				'type'         => 'color-alpha',
				'custom_color' => true,
				'show_if'      => array(
					'slide_effect'            => 'coverflow',
					'enable_coverflow_shadow' => 'on',
				),
				'default'      => '#ccc',
				'tab_slug'     => 'advanced',
				'toggle_slug'  => 'coverflow_settings',
				'description'  => esc_html__( 'Here you can select color for the Shadow.', 'all-in-one-carousel-for-divi' ),
			),
			'coverflow_rotate' => array(
				'label'           => esc_html__( 'Coverflow Rotate', 'all-in-one-carousel-for-divi' ),
				'type'            => 'range',
				'option_category' => 'font_option',
				'range_settings'  => array(
					'min'  => '1',
					'max'  => '360',
					'step' => '1',
				),
				'unitless'        => true,
				'show_if'         => array(
					'slide_effect' => 'coverflow',
				),
				'default'         => '40',
				'mobile_options'  => true,
				'tab_slug'        => 'advanced',
				'toggle_slug'     => 'coverflow_settings',
				'description'     => esc_html__( 'Coverflow Rotate Slide.', 'all-in-one-carousel-for-divi' ),
			),
			'coverflow_depth' => array(
				'label'           => esc_html__( 'Coverflow Depth', 'all-in-one-carousel-for-divi' ),
				'type'            => 'range',
				'option_category' => 'font_option',
				'range_settings'  => array(
					'min'  => '1',
					'max'  => '1000',
					'step' => '1',
				),
				'unitless'        => true,
				'show_if'         => array(
					'slide_effect' => 'coverflow',
				),
				'default'         => '100',
				'mobile_options'  => true,
				'tab_slug'        => 'advanced',
				'toggle_slug'     => 'coverflow_settings',
				'description'     => esc_html__( 'Coverflow Depth Slide.', 'all-in-one-carousel-for-divi' ),
			),
			'arrows_custom_padding' => array(
				'label'            => esc_html__( 'Arrows Padding', 'all-in-one-carousel-for-divi' ),
				'type'             => 'custom_padding',
				'option_category'  => 'layout',
				'show_if'          => array(
					'show_arrow' => 'on',
				),
				'default'          => '5px|10px|5px|10px|true|true',
				'default_on_front' => '5px|10px|5px|10px|true|true',
				'mobile_options'   => true,
				'hover'            => false,
				'tab_slug'         => 'advanced',
				'toggle_slug'      => 'arrow_settings',
				'sub_toggle'       => 'general',
				'description'      => esc_html__( 'Padding adds extra space to the inside of the element, increasing the distance between the edge of the element and its inner contents.', 'all-in-one-carousel-for-divi' ),
			),
			'space_between_arrows' => array(
				'label'           => esc_html__( 'Space between Arrows', 'all-in-one-carousel-for-divi' ),
				'type'            => 'range',
				'option_category' => 'layout',
				'range_settings'  => array(
					'min'  => '0',
					'max'  => '100',
					'step' => '1',
				),
				'show_if_not'     => array(
					'arrows_position' => array( 'inside', 'outside' ),
				),
				'fixed_unit'      => 'px',
				'default'         => '15px',
				'tab_slug'        => 'advanced',
				'toggle_slug'     => 'arrow_settings',
				'sub_toggle'      => 'general',
				'description'     => esc_html__( 'Move the slider or input the value to increse or decrease the space between arrows.', 'all-in-one-carousel-for-divi' ),
			),
			'arrow_font_size' => array(
				'label'           => esc_html__( 'Arrow Font Size', 'all-in-one-carousel-for-divi' ),
				'type'            => 'range',
				'option_category' => 'layout',
				'range_settings'  => array(
					'min'  => '10',
					'max'  => '100',
					'step' => '1',
				),
				'show_if'         => array(
					'show_arrow' => 'on',
				),
				'mobile_options'  => true,
				'default'         => '24px',
				'tab_slug'        => 'advanced',
				'toggle_slug'     => 'arrow_settings',
				'sub_toggle'      => 'general',
				'description'     => esc_html__( 'Here you can choose the arrow font size.', 'all-in-one-carousel-for-divi' ),
			),
			'arrow_color' => array(
				'label'        => esc_html__( 'Arrow Color', 'all-in-one-carousel-for-divi' ),
				'type'         => 'color-alpha',
				'custom_color' => true,
				'show_if'      => array(
					'show_arrow' => 'on',
				),
				'tab_slug'     => 'advanced',
				'toggle_slug'  => 'arrow_settings',
				'sub_toggle'   => 'general',
				'description'  => esc_html__( 'Here you can define color for the arrow', 'all-in-one-carousel-for-divi' ),
			),
			'arrow_background_color' => array(
				'label'        => esc_html__( 'Arrow Background', 'all-in-one-carousel-for-divi' ),
				'type'         => 'color-alpha',
				'custom_color' => true,
				'show_if'      => array(
					'show_arrow' => 'on',
				),
				'hover'        => 'tabs',
				'tab_slug'     => 'advanced',
				'toggle_slug'  => 'arrow_settings',
				'sub_toggle'   => 'general',
				'description'  => esc_html__( 'Here you can choose a custom color to be used for the shape background of arrows.', 'all-in-one-carousel-for-divi' ),
			),
			'arrow_background_border_size' => array(
				'label'           => esc_html__( 'Arrow Background Border', 'all-in-one-carousel-for-divi' ),
				'type'            => 'range',
				'option_category' => 'layout',
				'range_settings'  => array(
					'min'  => '1',
					'max'  => '10',
					'step' => '1',
				),
				'show_if'         => array(
					'show_arrow' => 'on',
				),
				'default'         => '0px',
				'tab_slug'        => 'advanced',
				'toggle_slug'     => 'arrow_settings',
				'sub_toggle'      => 'general',
				'description'     => esc_html__( 'Move the slider or input the value to increase or decrease the border size of the arrow background.', 'all-in-one-carousel-for-divi' ),
			),
			'arrow_background_border_color' => array(
				'label'        => esc_html__( 'Arrow Background Border Color', 'all-in-one-carousel-for-divi' ),
				'type'         => 'color-alpha',
				'custom_color' => true,
				'show_if'      => array(
					'show_arrow' => 'on',
				),
				'hover'        => 'tabs',
				'tab_slug'     => 'advanced',
				'toggle_slug'  => 'arrow_settings',
				'sub_toggle'   => 'general',
				'description'  => esc_html__( 'Here you can choose a custom color to be used for the arrow border', 'all-in-one-carousel-for-divi' ),
			),
			'arrows_border_radius' => array(
				'label'       => esc_html__( 'Border Radius', 'all-in-one-carousel-for-divi' ),
				'type'        => 'border-radius',
				'default'     => 'on||||',
				'show_if'     => array(
					'show_arrow' => 'on',
				),
				'tab_slug'    => 'advanced',
				'toggle_slug' => 'arrow_settings',
				'sub_toggle'  => 'general',
			),
			'previous_slide_arrow' => array(
				'label'           => esc_html__( 'Previous Arrow', 'all-in-one-carousel-for-divi' ),
				'type'            => 'select_icon',
				'option_category' => 'basic_option',
				'class'           => array(
					'et-pb-font-icon',
				),
				'show_if'         => array(
					'show_arrow' => 'on',
				),
				'tab_slug'        => 'advanced',
				'toggle_slug'     => 'arrow_settings',
				'sub_toggle'      => 'left_arrow',
				'description'     => esc_html__( 'Here you can select the icon to be used for the previous slide navigation.', 'all-in-one-carousel-for-divi' ),
			),
			'next_slide_arrow' => array(
				'label'           => esc_html__( 'Next Arrow', 'all-in-one-carousel-for-divi' ),
				'type'            => 'select_icon',
				'option_category' => 'basic_option',
				'class'           => array(
					'et-pb-font-icon',
				),
				'show_if'         => array(
					'show_arrow' => 'on',
				),
				'tab_slug'        => 'advanced',
				'toggle_slug'     => 'arrow_settings',
				'sub_toggle'      => 'right_arrow',
				'description'     => esc_html__( 'Here you can select the icon to be used for the next slide navigation.', 'all-in-one-carousel-for-divi' ),
			),
			'control_dot_active_color' => array(
				'label'        => esc_html__( 'Active Dot Pagination Color', 'all-in-one-carousel-for-divi' ),
				'type'         => 'color-alpha',
				'custom_color' => true,
				'show_if'      => array(
					'show_control_dot' => 'on',
				),
				'default'      => '#000000',
				'tab_slug'     => 'advanced',
				'toggle_slug'  => 'pagination_styles',
				'description'  => esc_html__( 'Here you can define color for the active pagination item.', 'all-in-one-carousel-for-divi' ),
			),
			'control_dot_inactive_color' => array(
				'label'        => esc_html__( 'Inactive Dot Pagination Color', 'all-in-one-carousel-for-divi' ),
				'type'         => 'color-alpha',
				'custom_color' => true,
				'show_if'      => array(
					'show_control_dot' => 'on',
				),
				'default'      => '#bbbbbb',
				'tab_slug'     => 'advanced',
				'toggle_slug'  => 'pagination_styles',
				'description'  => esc_html__( 'Here you can define color for the inactive pagination item.', 'all-in-one-carousel-for-divi' ),
			),
			'number_dot_text_color' => array(
				'label'        	   => esc_html__( 'Number Dot Color', 'all-in-one-carousel-for-divi' ),
				'type'         	   => 'color-alpha',
				'custom_color'     => true,
				'show_if'      	   => array(
					'show_control_dot'  => 'on',
					'control_dot_style' => 'number_dot',
				),
				'default'      	   => '#ffffff',
				'tab_slug'     	   => 'advanced',
				'toggle_slug'  	   => 'pagination_styles',
				'description'  	   => esc_html__( 'Here you can define color for the number of pagination item.', 'all-in-one-carousel-for-divi' ),
			),
			'elements_align' => array(
				'label'            => esc_html__( 'Elements Alignment', 'all-in-one-carousel-for-divi' ),
				'type'             => 'text_align',
				'option_category'  => 'layout',
				'options'          => et_builder_get_text_orientation_options( array( 'justified' ) ),
				'default_on_front' => '',
				'tab_slug'         => 'advanced',
				'toggle_slug'      => 'element_settings',
				'sub_toggle'       => 'general',
				'description'      => esc_html__( 'Here you can choose global alignment.', 'all-in-one-carousel-for-divi' ),
				'options_icon'     => 'module_align',
			),
			'elements_custom_padding' => array(
				'label'            => esc_html__( 'Element Area Padding', 'all-in-one-carousel-for-divi' ),
				'type'             => 'custom_padding',
				'option_category'  => 'layout',
				'mobile_options'   => true,
				'hover'            => false,
				'default'          => '20px|20px||20px|true|true',
				'default_on_front' => '20px|20px||20px|true|true',
				'tab_slug'         => 'advanced',
				'toggle_slug'      => 'element_settings',
				'sub_toggle'       => 'general',
				'description'      => esc_html__( 'Padding adds extra space to the inside of the element, increasing the distance between the edge of the element and its inner contents.', 'all-in-one-carousel-for-divi' ),
			),
			'icon_font_size' => array(
				'label'            => esc_html__( 'Icon Font Size', 'all-in-one-carousel-for-divi' ),
				'type'             => 'range',
				'option_category'  => 'font_option',
				'range_settings'   => array(
					'min'  => '1',
					'max'  => '120',
					'step' => '1',
				),
				'default_on_front' => '50px',
				'mobile_options'   => true,
				'tab_slug'         => 'advanced',
				'toggle_slug'      => 'element_settings',
				'sub_toggle'       => 'element',
				'description'      => esc_html__( 'Control the size of the icon by increasing or decreasing the font size.', 'all-in-one-carousel-for-divi' ),
			),
			'icon_color' => array(
				'label'          => esc_html__( 'Icon Color', 'all-in-one-carousel-for-divi' ),
				'type'           => 'color-alpha',
				'hover'          => 'tabs',
				'mobile_options' => true,
				'tab_slug'       => 'advanced',
				'toggle_slug'    => 'element_settings',
				'sub_toggle'     => 'element',
				'description'    => esc_html__( 'Here you can define a custom color for your icon.', 'all-in-one-carousel-for-divi' ),
			),
			'image_width' => array(
				'label'            => esc_html__( 'Image Width', 'all-in-one-carousel-for-divi' ),
				'description'      => esc_html__( 'Adjust the image width within the slide.', 'all-in-one-carousel-for-divi' ),
				'type'             => 'range',
				'option_category'  => 'layout',
				'default'          => '100%',
				'default_on_front' => '100%',
				'default_unit'     => '%',
				'allowed_units'    => array( '%', 'em', 'rem', 'px', 'cm', 'mm', 'in', 'pt', 'pc', 'ex', 'vh', 'vw' ),
				'range_settings'   => array(
					'min'  => '1',
					'max'  => '100',
					'step' => '1',
				),
				'mobile_options'   => true,
				'sticky'           => true,
				'tab_slug'         => 'advanced',
				'toggle_slug'      => 'element_settings',
				'sub_toggle'       => 'element',
			),
			'bullet_spacing' => array(
				'label'            => esc_html__( 'Bullet Spacing', 'all-in-one-carousel-for-divi' ),
				'type'             => 'range',
				'option_category'  => 'font_option',
				'range_settings'   => array(
					'min'  => '1',
					'max'  => '120',
					'step' => '1',
				),
				'default'          => '0px',
				'default_on_front' => '0px',
				'mobile_options'   => true,
				'tab_slug'         => 'advanced',
				'toggle_slug'      => 'bullet_settings',
				'sub_toggle'       => 'all_bullets',
				'description'      => esc_html__( 'Control the spacing between icon and list .', 'all-in-one-carousel-for-divi' ),
			),
			'bullet_color' => array(
				'label'          => esc_html__( 'Bullet Color', 'all-in-one-carousel-for-divi' ),
				'description'    => esc_html__( "Pick a color to use for the bullets that appear next to each list item within the pricing table's feature area.", 'all-in-one-carousel-for-divi' ),
				'type'           => 'color-alpha',
				'custom_color'   => true,
				'hover'          => 'tabs',
				'mobile_options' => true,
				'sticky'         => true,
				'tab_slug'       => 'advanced',
				'toggle_slug'    => 'bullet_settings',
				'sub_toggle'     => 'all_bullets',
			),
			'exclude_bullet_color' => array(
				'label'          => esc_html__( 'Excluded Bullet Color', 'all-in-one-carousel-for-divi' ),
				'description'    => esc_html__( "Pick a color to use for the excluded bullets that appear next to each list item within the pricing table's feature area.", 'all-in-one-carousel-for-divi' ),
				'type'           => 'color-alpha',
				'custom_color'   => true,
				'hover'          => 'tabs',
				'mobile_options' => true,
				'sticky'         => true,
				'tab_slug'       => 'advanced',
				'toggle_slug'    => 'bullet_settings',
				'sub_toggle'     => 'exclude_bullets',
			),
			'price_align' => array(
				'label'           => esc_html__( 'Price Alignment', 'all-in-one-carousel-for-divi' ),
				'type'            => 'text_align',
				'option_category' => 'layout',
				'options'         => et_builder_get_text_orientation_options( array( 'justified' ) ),
				'tab_slug'        => 'advanced',
				'toggle_slug'     => 'price_settings',
				'sub_toggle'      => 'general',
				'description'     => esc_html__( 'Here you can choose the price alignment.', 'all-in-one-carousel-for-divi' ),
				'options_icon'    => 'module_align',
			),
			'price_custom_padding' => array(
				'label'            => esc_html__( 'Price Padding', 'all-in-one-carousel-for-divi' ),
				'type'             => 'custom_padding',
				'option_category'  => 'layout',
				'mobile_options'   => true,
				'hover'            => false,
				'default'          => '20px|20px|20px|20px|true|true',
				'default_on_front' => '20px|20px|20px|20px|true|true',
				'tab_slug'         => 'advanced',
				'toggle_slug'      => 'price_settings',
				'sub_toggle'       => 'general',
				'description'      => esc_html__( 'Padding adds extra space to the inside of the element, increasing the distance between the edge of the element and its inner contents.', 'all-in-one-carousel-for-divi' ),
			),
			'display_in_stack' => array(
				'label'           => esc_html__( 'Display in Stack', 'all-in-one-carousel-for-divi' ),
				'type'            => 'yes_no_button',
				'option_category' => 'configuration',
				'options'         => array(
					'off' => esc_html__( 'No', 'all-in-one-carousel-for-divi' ),
					'on'  => esc_html__( 'Yes', 'all-in-one-carousel-for-divi' ),
				),
				'default'         => 'off',
				'show_if_not'     => array(
					'select_layout' => array( 'layout3' ),
				),
				'tab_slug'        => 'advanced',
				'toggle_slug'     => 'price_settings',
				'sub_toggle'      => 'general',
				'description'     => esc_html__( 'To display price text in stack enable this setting.', 'all-in-one-carousel-for-divi' ),
			),
			'price_background_color' => array(
				'label'          => esc_html__( 'Pricing Area Background Color', 'all-in-one-carousel-for-divi' ),
				'description'    => esc_html__( 'Pick a color to use for the background area that appears behind the pricing text.', 'all-in-one-carousel-for-divi' ),
				'type'           => 'color-alpha',
				'custom_color'   => true,
				'priority'       => 5,
				'hover'          => 'tabs',
				'mobile_options' => true,
				'sticky'         => true,
				'tab_slug'       => 'advanced',
				'toggle_slug'    => 'price_settings',
				'sub_toggle'     => 'general',
			),
			'price_circle_color' => array(
				'label'          => esc_html__( 'Pricing Circle Background Color', 'all-in-one-carousel-for-divi' ),
				'description'    => esc_html__( 'Pick a color to use for the background area that appears behind the pricing circle.', 'all-in-one-carousel-for-divi' ),
				'type'           => 'color-alpha',
				'custom_color'   => true,
				'priority'       => 6,
				'hover'          => 'tabs',
				'mobile_options' => true,
				'sticky'         => true,
				'show_if'        => array(
					'select_layout' => array( 'layout3' ),
				),
				'tab_slug'       => 'advanced',
				'toggle_slug'    => 'price_settings',
				'sub_toggle'     => 'general',
			),
			'price_border_color' => array(
				'label'          => esc_html__( 'Price Separator Color', 'all-in-one-carousel-for-divi' ),
				'type'           => 'color-alpha',
				'custom_color'   => true,
				'hover'          => 'tabs',
				'mobile_options' => true,
				'sticky'         => true,
				'tab_slug'       => 'advanced',
				'toggle_slug'    => 'price_settings',
				'sub_toggle'     => 'general',
				'description'    => esc_html__( 'Here you can select price border bottom color.', 'all-in-one-carousel-for-divi' ),
			),
			'heading_custom_padding' => array(
				'label'            => esc_html__( 'Heading Area Padding', 'all-in-one-carousel-for-divi' ),
				'type'             => 'custom_padding',
				'option_category'  => 'layout',
				'mobile_options'   => true,
				'hover'            => false,
				'default'          => '20px|20px|20px|20px|true|true',
				'default_on_front' => '20px|20px|20px|20px|true|true',
				'tab_slug'         => 'advanced',
				'toggle_slug'      => 'heading_settings',
				'sub_toggle'       => 'general',
				'description'      => esc_html__( 'Padding adds extra space to the inside of the element, increasing the distance between the edge of the element and its inner contents.', 'all-in-one-carousel-for-divi' ),
			),
			'heading_background_color' => array(
				'label'            => esc_html__( 'Heading Area Background', 'all-in-one-carousel-for-divi' ),
				'type'             => 'color-alpha',
				'custom_color'     => true,
				'hover'            => 'tabs',
				'default'          => '#bebebe',
				'default_on_front' => '#bebebe',
				'tab_slug'         => 'advanced',
				'toggle_slug'      => 'heading_settings',
				'sub_toggle'       => 'general',
				'description'      => esc_html__( 'Here you can choose a custom color to be used for the header background.', 'all-in-one-carousel-for-divi' ),
			),
			'heading_border_color' => array(
				'label'          => esc_html__( 'Heading Separator Color', 'all-in-one-carousel-for-divi' ),
				'type'           => 'color-alpha',
				'custom_color'   => true,
				'hover'          => 'tabs',
				'mobile_options' => true,
				'sticky'         => true,
				'tab_slug'       => 'advanced',
				'toggle_slug'    => 'heading_settings',
				'sub_toggle'     => 'general',
				'description'    => esc_html__( 'Here you can select heading border bottom color.', 'all-in-one-carousel-for-divi' ),
			),
			'enable_list_separator' => array(
				'label'           => esc_html__( 'Enable List Separator', 'all-in-one-carousel-for-divi' ),
				'type'            => 'yes_no_button',
				'option_category' => 'configuration',
				'options'         => array(
					'off' => esc_html__( 'No', 'all-in-one-carousel-for-divi' ),
					'on'  => esc_html__( 'Yes', 'all-in-one-carousel-for-divi' ),
				),
				'default'         => 'off',
				'tab_slug'        => 'advanced',
				'toggle_slug'     => 'content_settings',
				'sub_toggle'      => 'general',
				'description'     => esc_html__( 'Enable/Disable separator after each list.', 'all-in-one-carousel-for-divi' ),
			),
			'list_separator_color' => array(
				'label'            => esc_html__( 'List Separator Color', 'all-in-one-carousel-for-divi' ),
				'type'             => 'color-alpha',
				'custom_color'     => true,
				'hover'            => 'tabs',
				'mobile_options'   => true,
				'sticky'           => true,
				'default'          => '#dddddd',
				'default_on_front' => '#dddddd',
				'show_if'          => array(
					'enable_list_separator' => 'on',
				),
				'tab_slug'         => 'advanced',
				'toggle_slug'      => 'content_settings',
				'sub_toggle'       => 'general',
				'description'      => esc_html__( 'Here you can select list separator color.', 'all-in-one-carousel-for-divi' ),
			),
			'ribbon_bg_color' => array(
				'label'          => esc_html__( 'Ribbon Background Color', 'all-in-one-carousel-for-divi' ),
				'type'           => 'color-alpha',
				'custom_color'   => true,
				'hover'          => 'tabs',
				'mobile_options' => true,
				'sticky'         => true,
				'tab_slug'       => 'advanced',
				'toggle_slug'    => 'ribbon',
				'description'    => esc_html__( 'Here you can select ribbon background color.', 'all-in-one-carousel-for-divi' ),
			),
			'content_custom_padding' => array(
				'label'            => esc_html__( 'Content Area Padding', 'all-in-one-carousel-for-divi' ),
				'type'             => 'custom_padding',
				'option_category'  => 'layout',
				'mobile_options'   => true,
				'hover'            => false,
				'default'          => '||||true|true',
				'default_on_front' => '||||true|true',
				'tab_slug'         => 'advanced',
				'toggle_slug'      => 'content_settings',
				'sub_toggle'       => 'general',
				'description'      => esc_html__( 'Padding adds extra space to the inside of the element, increasing the distance between the edge of the element and its inner contents.', 'all-in-one-carousel-for-divi' ),
			),
			'slider_container_custom_padding' => array(
				'label'            => esc_html__( 'Slider Container Padding', 'all-in-one-carousel-for-divi' ),
				'type'             => 'custom_padding',
				'option_category'  => 'layout',
				'mobile_options'   => true,
				'hover'            => false,
				'default'          => '',
				'default_on_front' => '',
				'tab_slug'         => 'advanced',
				'toggle_slug'      => 'margin_padding',
				'description'      => esc_html__( 'Padding adds extra space to the inside of the element, increasing the distance between the edge of the element and its inner contents.', 'all-in-one-carousel-for-divi' ),
			),
		);
	}

	public function before_render() {
		global $slide_effect;
		$slide_effect = $this->props['slide_effect'];
	}

	public function render( $attrs, $content, $render_slug ) {
		$slide_effect                  = $this->props['slide_effect'];
		$select_layout                 = $this->props['select_layout'];
		$cards_per_slide               = $this->props['cards_per_slide'];
		$slider_loop                   = $this->props['slider_loop'];
		$autoplay                      = $this->props['autoplay'];
		$autoplay_speed                = $this->props['autoplay_speed'];
		$pause_on_hover                = $this->props['pause_on_hover'];
		$transition_duration           = $this->props['transition_duration'];
		$slide_center_mode             = $this->props['slide_center_mode'] === 'on' ? true : 'false';
		$equalize_slides_height        = $this->props['equalize_slides_height'];
		$show_arrow                    = $this->props['show_arrow'];
		$show_arrow_on_hover           = $this->props['show_arrow_on_hover'];
		$arrows_position               = et_pb_responsive_options()->get_property_values( $this->props, 'arrows_position' );
		$arrows_position               = array_filter( $arrows_position );
		$show_control_dot              = $this->props['show_control_dot'];
		$control_dot_style             = $this->props['control_dot_style'];
		$enable_coverflow_shadow       = $this->props['enable_coverflow_shadow'];
		$coverflow_shadow_color        = $this->props['coverflow_shadow_color'];
		$coverflow_rotate              = $this->props['coverflow_rotate'];
		$coverflow_depth               = $this->props['coverflow_depth'];
		$space_between_arrows          = $this->props['space_between_arrows'];
		$arrow_color                   = $this->props['arrow_color'];
		$arrow_color_hover             = $this->get_hover_value( 'arrow_color' );
		$arrow_background_color        = $this->props['arrow_background_color'];
		$arrow_background_color_hover  = $this->get_hover_value( 'arrow_background_color' );
		$arrow_background_border_size  = $this->props['arrow_background_border_size'];
		$arrow_background_border_color = $this->props['arrow_background_border_color'];
		$arrows_border_radius          = explode( '|', $this->props['arrows_border_radius'] );
		$control_dot_active_color      = $this->props['control_dot_active_color'];
		$control_dot_inactive_color    = $this->props['control_dot_inactive_color'];
		$number_dot_text_color         = $this->props['number_dot_text_color'];
		$slide_center_mode             = 'slide' === $this->props['slide_effect'] ? $slide_center_mode : false;
		$price_align                   = $this->props['price_align'];
		$price_border_color            = $this->props['price_border_color'];
		$bullet_spacing                = $this->props['bullet_spacing'];
		$global_align                  = $this->props['global_align'];
		$heading_border_color          = $this->props['heading_border_color'];
		$enable_list_separator         = $this->props['enable_list_separator'];
		$list_separator_color          = $this->props['list_separator_color'];
		$elements_align                = $this->props['elements_align'];
		$display_in_stack              = $this->props['display_in_stack'];
		$ribbon_bg_color               = $this->props['ribbon_bg_color'];

		if ( $this->content && '' !== $this->content ) {

			wp_enqueue_script( 'elicus-swiper-script' );
			wp_enqueue_style( 'elicus-swiper-style' );
			wp_enqueue_style( 'aioc-swiper-style' );

			$carousel  = '<div class="aioc_swiper_wrapper">';
			$carousel .= '<div class="aioc_slide_carousel_layout aioc_swiper_inner_wrap ' . esc_attr( $select_layout ) . '">';
			$carousel .= '<div class="swiper-container">';
			$carousel .= '<div class="swiper-wrapper">';
			$carousel .= et_core_intentionally_unescaped( $this->content, 'html' );
			$carousel .= '</div> <!-- swiper-wrapper -->';
			$carousel .= '</div> <!-- swiper-container -->';

			wp_enqueue_script( 'aioc-pricing-carousel-custom', ALL_IN_ONE_CAROUSEL_FOR_DIVI_PATH . 'includes/modules/PricingCarousel/aioc-pricing-carousel-custom.min.js', array( 'jquery' ), '1.0.0', true );

			if ( 'on' === $show_arrow ) {
				$next = sprintf(
					'<div class="swiper-button-next"%1$s></div>',
					'' !== $this->props['next_slide_arrow'] ?
					sprintf(
						' data-next_slide_arrow="%1$s"',
						esc_attr( et_pb_process_font_icon( $this->props['next_slide_arrow'] ) )
					) :
					''
				);
				$prev = sprintf(
					'<div class="swiper-button-prev"%1$s></div>',
					'' !== $this->props['previous_slide_arrow'] ?
					sprintf(
						' data-previous_slide_arrow="%1$s"',
						esc_attr( et_pb_process_font_icon( $this->props['previous_slide_arrow'] ) )
					) :
					''
				);
				if ( ! empty( $arrows_position ) ) {
					$arrows_position_data = '';
					foreach ( $arrows_position as $device => $value ) {
						$arrows_position_data .= ' data-arrows_' . $device . '="' . $value . '"';
					}
				}
				$carousel .= sprintf(
					'<div class="aioc_swiper_navigation"%3$s>%1$s %2$s</div>',
					$next,
					$prev,
					! empty( $arrows_position ) ? $arrows_position_data : ''
				);
			}
			$carousel .= '</div> <!-- aioc_slide_carousel_layout -->';

			if ( 'on' === $show_control_dot ) {
				$carousel .= sprintf(
					'<div class="aioc_swiper_pagination"><div class="swiper-pagination %1$s"></div></div>',
					esc_attr( $control_dot_style )
				);
			}
			$carousel .= '</div> <!-- aioc_swiper_wrapper -->';

			$script = $this->aioc_render_slider_script();
			$output = $carousel . $script;

			// Slide Center Mode.
			if ( 'on' === $this->props['slide_center_mode'] ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .swiper-slide:not(.swiper-slide-active) .aioc_slide_wrapper',
					'declaration' => 'transition: all 0.4s; transform: scale(0.8);',
				) );
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .swiper-slide.swiper-slide-active .aioc_slide_wrapper',
					'declaration' => 'transition: all 0.4s; transform: scale(1);',
				) );
			}

			// Global Alignment.
			if ( 'left' === $global_align ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_pricing_heading .aioc_slide_title, %%order_class%% .aioc_pricing_heading .aioc_slide_subtitle, %%order_class%% .aioc_pricing_content_top, %%order_class%% .aioc_pricing_elements, %%order_class%% .aioc_pricing_content, %%order_class%% .aioc_pricing_button_wrapper',
					'declaration' => 'text-align: left;',
				) );
			}
			if ( 'center' === $global_align ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_pricing_heading .aioc_slide_title, %%order_class%% .aioc_pricing_heading .aioc_slide_subtitle, %%order_class%% .aioc_pricing_content_top, %%order_class%% .aioc_pricing_elements, %%order_class%% .aioc_pricing_content, %%order_class%% .aioc_pricing_button_wrapper',
					'declaration' => 'text-align: center;',
				) );
			}
			if ( 'right' === $global_align ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_pricing_heading .aioc_slide_title, %%order_class%% .aioc_pricing_heading .aioc_slide_subtitle, %%order_class%% .aioc_pricing_content_top, %%order_class%% .aioc_pricing_elements, %%order_class%% .aioc_pricing_content, %%order_class%% .aioc_pricing_button_wrapper',
					'declaration' => 'text-align: right;',
				) );
			}

			// Header Bg Color.
			$this->generate_styles( array(
				'base_attr_name' => 'heading_background_color',
				'selector'       => '%%order_class%% .aioc_pricing_heading',
				'hover_selector' => '%%order_class%%:hover .aioc_pricing_heading',
				'css_property'   => 'background-color',
				'important'      => true,
				'render_slug'    => $render_slug,
				'type'           => 'color',
			) );

			if ( '' !== $heading_border_color ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_pricing_heading',
					'declaration' => sprintf(
						'border-bottom: 1px solid %1$s !important;',
						esc_attr( $heading_border_color )
					),
				) );
			}

			// Elements Alignment.
			if ( 'left' === $elements_align ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_pricing_elements',
					'declaration' => 'text-align: left;',
				) );
			}
			if ( 'center' === $elements_align ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_pricing_elements',
					'declaration' => 'text-align: center;',
				) );
			}
			if ( 'right' === $elements_align ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_pricing_elements',
					'declaration' => 'text-align: right;',
				) );
			}

			// Image Width.
			if ( isset( $this->props['image_width'] ) && '' !== $this->props['image_width'] ) {
				$this->generate_styles( array(
					'hover'                           => false,
					'base_attr_name'                  => 'image_width',
					'selector'                        => '%%order_class%% .aioc_pricing_elements .aioc_slide_image',
					'sticky_pseudo_selector_location' => 'prefix',
					'css_property'                    => 'width',
					'important'                       => true,
					'render_slug'                     => $render_slug,
					'type'                            => 'range',
				) );
			}

			// Price Bg Color.
			$this->generate_styles( array(
				'base_attr_name' => 'price_background_color',
				'selector'       => '%%order_class%% .aioc_pricing_content_top',
				'hover_selector' => '%%order_class%%:hover .aioc_pricing_content_top',
				'css_property'   => 'background-color',
				'important'      => true,
				'render_slug'    => $render_slug,
				'type'           => 'color',
			) );
			// Price Circle Bg Color.
			$this->generate_styles( array(
				'base_attr_name' => 'price_circle_color',
				'selector'       => '%%order_class%% .aioc_pricing_content_top .aioc_price_wrapper',
				'hover_selector' => '%%order_class%%:hover .aioc_pricing_content_top .aioc_price_wrapper',
				'css_property'   => 'background-color',
				'important'      => true,
				'render_slug'    => $render_slug,
				'type'           => 'color',
			) );

			// Price Alignment.
			if ( 'left' === $price_align ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_pricing_content_top',
					'declaration' => 'text-align: left;',
				) );
			}
			if ( 'center' === $price_align ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_pricing_content_top',
					'declaration' => 'text-align: center;',
				) );
			}
			if ( 'right' === $price_align ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_pricing_content_top',
					'declaration' => 'text-align: right;',
				) );
			}

			if ( '' !== $ribbon_bg_color ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_slide_ribbon',
					'declaration' => sprintf( 'box-shadow: 0 0 0 999px %1$s;', esc_attr( $ribbon_bg_color ) )
				) );
			}

			if ( 'on' === $display_in_stack ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_slide_frequency',
					'declaration' => 'display: inline-block; width: 100%;',
				) );
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_frequency_slash',
					'declaration' => 'display: none;',
				) );
			}

			// Ribbon Bg Color.
			$this->generate_styles( array(
				'base_attr_name' => 'ribbon_bg_color',
				'selector'       => '%%order_class%% .aioc_slide_ribbon',
				'hover_selector' => '%%order_class%%:hover .aioc_slide_ribbon',
				'css_property'   => 'background-color',
				'important'      => true,
				'render_slug'    => esc_attr( $render_slug ),
				'type'           => 'color',
			) );

			$icon_font_size = et_pb_responsive_options()->get_property_values( $this->props, 'icon_font_size' );
			$icon_color     = et_pb_responsive_options()->get_property_values( $this->props, 'icon_color' );
			et_pb_responsive_options()->generate_responsive_css( $icon_font_size, '%%order_class%% .aioc_pricing_carousel_icon', 'font-size', $render_slug, '', 'range' );
			et_pb_responsive_options()->generate_responsive_css( $icon_color, '%%order_class%% .aioc_pricing_carousel_icon', 'color', $render_slug, '', 'color' );
			$icon_color_hover = $this->get_hover_value( 'icon_color' );
			if ( $icon_color_hover ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_pricing_carousel_icon:hover',
					'declaration' => sprintf( 'color: %1$s !important;', esc_attr( $icon_color_hover ) )
				) );
			}

			// Bullets.
			$this->generate_styles( array(
				'hover'                           => false,
				'base_attr_name'                  => 'bullet_spacing',
				'selector'                        => '%%order_class%% .aioc_pricing_content li:before',
				'sticky_pseudo_selector_location' => 'prefix',
				'css_property'                    => 'padding-right',
				'important'                       => true,
				'render_slug'                     => esc_attr( $render_slug ),
				'type'                            => 'range',
			) );
			$this->generate_styles( array(
				'base_attr_name' => 'bullet_color',
				'selector'       => '%%order_class%% .aioc_pricing_content ul li:before',
				'hover_selector' => '%%order_class%% .aioc_pricing_content ul:hover li:before',
				'css_property'   => 'color',
				'render_slug'    => esc_attr( $render_slug ),
				'type'           => 'color',
			) );

			// Price Border color.
			if ( '' !== $price_border_color ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_pricing_content_top',
					'declaration' => sprintf( 'border-bottom: 1px solid %1$s !important;', esc_attr( $price_border_color ) )
				) );
			}

			// List Separator.
			if ( 'on' === $enable_list_separator ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_pricing_content li',
					'declaration' => sprintf( 'border-bottom: 1px solid %1$s;', esc_attr( $list_separator_color ) ),
				) );
			}

			// Excluded Bullet color.
			$this->generate_styles( array(
				'base_attr_name' => 'exclude_bullet_color',
				'selector'       => '%%order_class%% .aioc_pricing_content ul li.aioc_not_available:before',
				'hover_selector' => '%%order_class%% .aioc_pricing_content ul:hover li.aioc_not_available:before',
				'css_property'   => 'color',
				'render_slug'    => esc_attr( $render_slug ),
				'type'           => 'color',
			) );

			// Coverflow CSS.
			if ( 'on' === $enable_coverflow_shadow ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .swiper-container-3d .swiper-slide-shadow-left',
					'declaration' => sprintf( 'background-image: linear-gradient(to left,%1$s,rgba(0,0,0,0)) !important;', esc_attr( $coverflow_shadow_color ) ),
				) );
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .swiper-container-3d .swiper-slide-shadow-right',
					'declaration' => sprintf( 'background-image: linear-gradient(to right,%1$s,rgba(0,0,0,0)) !important;', esc_attr( $coverflow_shadow_color ) ),
				) );
			} else {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .swiper-container-3d .swiper-slide-shadow-left, %%order_class%% .swiper-container-3d .swiper-slide-shadow-right',
					'declaration' => 'background-image: none !important;',
				) );
			}

			// Pagination CSS.
			if ( 'on' === $show_control_dot ) {
				if ( $control_dot_inactive_color ) {
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .swiper-pagination-bullet',
						'declaration' => sprintf( 'background: %1$s !important;', esc_attr( $control_dot_inactive_color ) ),
					) );
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .transparent_dot .swiper-pagination-bullet',
						'declaration' => sprintf( 'border-color: %1$s;', esc_attr( $control_dot_inactive_color ) ),
					) );
				}
				if ( $control_dot_active_color ) {
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .swiper-pagination-bullet.swiper-pagination-bullet-active',
						'declaration' => sprintf( 'background: %1$s !important;', esc_attr( $control_dot_active_color ) ),
					) );
				}
				if ( 'stretched_dot' === $control_dot_style && $transition_duration ) {
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .stretched_dot .swiper-pagination-bullet',
						'declaration' => sprintf( 'transition: all %1$sms ease !important;', intval( $transition_duration ) ),
					) );
				}
				if ( ! empty( $number_dot_text_color ) ) {
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .swiper-pagination-bullet.number-bullet',
						'declaration' => sprintf( 'color: %1$s;', esc_attr( $number_dot_text_color ) ),
					) );
				}
			}

			// Arrow CSS.
			if ( 'on' === $show_arrow ) {
				if ( '' !== $arrows_border_radius ) {
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .swiper-button-next, %%order_class%% .swiper-button-prev',
						'declaration' => sprintf(
							'border-radius: %1$s %2$s %3$s %4$s;',
							$arrows_border_radius[1],
							$arrows_border_radius[2],
							$arrows_border_radius[3],
							$arrows_border_radius[4]
						),
					) );
				}
				if ( isset( $space_between_arrows ) && '' !== $space_between_arrows ) {
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .aioc_swiper_navigation .swiper-button-next',
						'declaration' => sprintf( 'margin-left: %1$s !important;', esc_attr( $space_between_arrows ) ),
					) );
				}
				if ( $arrow_color ) {
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .aioc_swiper_navigation .swiper-button-prev, %%order_class%% .aioc_swiper_navigation .swiper-button-next',
						'declaration' => sprintf( 'color: %1$s !important;', esc_attr( $arrow_color ) ),
					) );
				}
				if ( $arrow_color_hover ) {
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .aioc_swiper_navigation .swiper-button-prev:hover, %%order_class%% .aioc_swiper_navigation .swiper-button-next:hover',
						'declaration' => sprintf( 'color: %1$s !important;', esc_attr( $arrow_color_hover ) ),
					) );
				}

				$arrow_font_size = et_pb_responsive_options()->get_property_values( $this->props, 'arrow_font_size' );
				if ( ! empty( array_filter( $arrow_font_size ) ) ) {
					et_pb_responsive_options()->generate_responsive_css( $arrow_font_size, '%%order_class%% .aioc_swiper_navigation .swiper-button-prev, %%order_class%% .aioc_swiper_navigation .swiper-button-next', 'font-size', $render_slug, '', 'range' );
				}

				if ( '' !== $this->props['next_slide_arrow'] ) {
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .aioc_swiper_navigation .swiper-button-next::after',
						'declaration' => 'display: flex; align-items: center; height: 100%; font-family: "ETmodules"; content: attr(data-next_slide_arrow);',
					) );
				}
				if ( '' !== $this->props['previous_slide_arrow'] ) {
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .aioc_swiper_navigation .swiper-button-prev::after',
						'declaration' => 'display: flex; align-items: center; height: 100%; font-family: "ETmodules"; content: attr(data-previous_slide_arrow);',
					) );
				}

				if ( 'on' === $show_arrow_on_hover ) {
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .aioc_swiper_navigation .swiper-button-prev',
						'declaration' => 'visibility: hidden; opacity: 0; transition: all 300ms ease;',
					) );
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .aioc_swiper_navigation .swiper-button-next',
						'declaration' => 'visibility: hidden; opacity: 0; transition: all 300ms ease;',
					) );
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%%:hover .aioc_swiper_navigation .swiper-button-prev, %%order_class%%:hover .aioc_swiper_navigation .swiper-button-next',
						'declaration' => 'visibility: visible; opacity: 1;',
					) );
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%%:hover .aioc_swiper_navigation .swiper-button-prev.swiper-button-disabled, %%order_class%%:hover .aioc_swiper_navigation .swiper-button-next.swiper-button-disabled',
						'declaration' => 'opacity: 0.35;',
					) );

					// Outside Slider.
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .aioc_arrows_outside .swiper-button-prev',
						'declaration' => 'left: 50px;',
					) );
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .aioc_arrows_outside .swiper-button-next',
						'declaration' => 'right: 50px;',
					) );
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%%:hover .aioc_arrows_outside .swiper-button-prev',
						'declaration' => 'left: 0;',
					) );
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%%:hover .aioc_arrows_outside .swiper-button-next',
						'declaration' => 'right: 0;',
					) );

					// Inside Slider.
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .aioc_arrows_inside .swiper-button-prev',
						'declaration' => 'left: -50px;',
					) );
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .aioc_arrows_inside .swiper-button-next',
						'declaration' => 'right: -50px;',
					) );
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%%:hover .aioc_arrows_inside .swiper-button-prev',
						'declaration' => 'left: 0;',
					) );
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%%:hover .aioc_arrows_inside .swiper-button-next',
						'declaration' => 'right: 0;',
					) );
				}

				if ( '' !== $arrow_background_color ) {
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .aioc_swiper_navigation .swiper-button-prev, %%order_class%% .aioc_swiper_navigation .swiper-button-next',
						'declaration' => sprintf( 'background: %1$s !important;', esc_attr( $arrow_background_color ) ),
					) );
				}
				if ( '' !== $arrow_background_color_hover ) {
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .aioc_swiper_navigation .swiper-button-prev:hover, %%order_class%% .aioc_swiper_navigation .swiper-button-next:hover',
						'declaration' => sprintf( 'background: %1$s !important;', esc_attr( $arrow_background_color_hover ) ),
					) );
				}
				if ( '' !== $arrow_background_border_size ) {
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .aioc_swiper_navigation .swiper-button-prev, %%order_class%% .aioc_swiper_navigation .swiper-button-next',
						'declaration' => sprintf( 'border-width: %1$s;', esc_attr( $arrow_background_border_size ) ),
					) );
				}
				if ( '' !== $arrow_background_border_color ) {
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .aioc_swiper_navigation .swiper-button-prev, %%order_class%% .aioc_swiper_navigation .swiper-button-next',
						'declaration' => sprintf( 'border-color: %1$s;', esc_attr( $arrow_background_border_color ) ),
					) );
				}
				$arrow_background_border_color_hover = $this->get_hover_value( 'arrow_background_border_color' );
				if ( '' !== $arrow_background_border_color_hover ) {
					self::set_style( $render_slug, array(
						'selector'    => '%%order_class%% .aioc_swiper_navigation .swiper-button-prev:hover, %%order_class%% .aioc_swiper_navigation .swiper-button-next:hover',
						'declaration' => sprintf( 'border-color: %1$s;', esc_attr( $arrow_background_border_color_hover ) ),
					) );
				}
			}

			// Equalize Slide Height CSS.
			if ( 'on' === $equalize_slides_height ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_pricing_carousel_item',
					'declaration' => 'height: auto; margin-bottom: 0 !important;',
				) );
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_pricing_carousel_item .et_pb_module_inner, %%order_class%% .aioc_pricing_carousel_item .aioc_slide_wrapper',
					'declaration' => 'height: 100%;',
				) );
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_pricing_carousel_item .aioc_slide_content_wrapper',
					'declaration' => 'display: flex; height: 100%; flex-direction: column;',
				) );
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .aioc_pricing_carousel_item .aioc_pricing_content',
					'declaration' => 'flex-grow: 1;',
				) );
			}

			$enable_linear_transition = $this->props['enable_linear_transition'];
			if ( 'on' === $enable_linear_transition ) {
				self::set_style( $render_slug, array(
					'selector'    => '%%order_class%% .swiper-wrapper',
					'declaration' => 'transition-timing-function : linear !important;',
				) );
			}
			
		} else {
			$output  = '<div class="entry">';
			$output  = '<h1>' . esc_html__( 'No Result Found!', 'all-in-one-carousel-for-divi' ) . '</h1>';
			$output .= '<p>' . esc_html__( 'The carousel you requested could not be found. Try changing your module settings or add some new slides.', 'all-in-one-carousel-for-divi' ) . '</p>';
			$output .= '</div>';
		}

		$this->add_classname( array(
			$this->get_text_orientation_classname(),
		) );

		$fields = array( 'slider_margin_padding' );
		AIOC_Helper::process_advanced_margin_padding_css( $this, $render_slug, $this->margin_padding, $fields );

		return et_core_intentionally_unescaped( $output, 'html' );
	}

	/**
	 * This function dynamically creates script parameters according to the user settings.
	 *
	 * @return string
	 * */
	public function aioc_render_slider_script() {
		$order_class              = $this->get_module_order_class( 'aioc_pricing_carousel' );
		$slide_effect             = esc_attr( $this->props['slide_effect'] );
		$show_arrow               = esc_attr( $this->props['show_arrow'] );
		$autoplay                 = esc_attr( $this->props['autoplay'] );
		$autoplay_speed           = intval( $this->props['autoplay_speed'] );
		$autoplay_speed           = '' !== $autoplay_speed || 0 !== $autoplay_speed ? $autoplay_speed : 3000;
		$transition_duration      = intval( $this->props['transition_duration'] );
		$transition_duration      = '' !== $transition_duration || 0 !== $transition_duration ? $transition_duration : 1000;
		$pause_on_hover           = esc_attr( $this->props['pause_on_hover'] );
		$loop                     = 'on' === esc_attr( $this->props['slider_loop'] ) ? 'true' : 'false';
		$enable_coverflow_shadow  = 'on' === $this->props['enable_coverflow_shadow'] ? 'true' : 'false';
		$coverflow_rotate         = intval( $this->props['coverflow_rotate'] );
		$coverflow_depth          = intval( $this->props['coverflow_depth'] );
		$cards_per_slide          = et_pb_responsive_options()->get_property_values( $this->props, 'cards_per_slide', '', true );
		$space_between_slides     = et_pb_responsive_options()->get_property_values( $this->props, 'space_between_slides', '', true );
		$slides_per_group         = et_pb_responsive_options()->get_property_values( $this->props, 'slides_per_group', '', true );
		$show_control_dot         = esc_attr( $this->props['show_control_dot'] );
		$dynamic_bullets          = 'on' === $this->props['enable_dynamic_dots'] && in_array( $this->props['control_dot_style'], array( 'solid_dot', 'transparent_dot', 'square_dot', 'number_dot' ), true ) ? 'true' : 'false';
		$slide_center_mode        = 'on' === $this->props['slide_center_mode'] ? 'true' : 'false';
		$slide_center_mode        = 'slide' === $slide_effect ? $slide_center_mode : 'false';
		$dots                     = 'false';
		$arrows                   = 'false';
		$autoplaySlides           = 0;
		$cube                     = 'false';
		$coverflow                = 'false';
		$slidesPerGroupSkip       = 0;
		$slidesPerGroupSkipIpad   = 0;
		$slidesPerGroupSkipMobile = 0;
		$slidesPerGroup           = 1;
		$slidesPerGroupIpad       = 1;
		$slidesPerGroupMobile     = 1;

		if ( in_array( $slide_effect, array( 'slide', 'coverflow' ), true ) ) {
			$cards_per_view             = $cards_per_slide['desktop'];
			$cards_per_view_ipad        = '' !== $cards_per_slide['tablet'] ? $cards_per_slide['tablet'] : $cards_per_view;
			$cards_per_view_mobile      = '' !== $cards_per_slide['phone'] ? $cards_per_slide['phone'] : $cards_per_view_ipad;
			$cards_space_between        = $space_between_slides['desktop'];
			$cards_space_between_ipad   = '' !== $space_between_slides['tablet'] ? $space_between_slides['tablet'] : $cards_space_between;
			$cards_space_between_mobile = '' !== $space_between_slides['phone'] ? $space_between_slides['phone'] : $cards_space_between_ipad;
			$slidesPerGroup             = $slides_per_group['desktop'];
			$slidesPerGroupIpad         = '' !== $slides_per_group['tablet'] ? $slides_per_group['tablet'] : $slidesPerGroup;
			$slidesPerGroupMobile       = '' !== $slides_per_group['phone'] ? $slides_per_group['phone'] : $slidesPerGroupIpad;

			if ( $cards_per_view > $slidesPerGroup && 1 !== $slidesPerGroup ) {
				$slidesPerGroupSkip = $cards_per_view - $slidesPerGroup;
			}
			if ( $cards_per_view_ipad > $slidesPerGroupIpad && 1 !== $slidesPerGroupIpad ) {
				$slidesPerGroupSkipIpad = $cards_per_view_ipad - $slidesPerGroupIpad;
			}
			if ( $cards_per_view_mobile > $slidesPerGroupMobile && 1 !== $slidesPerGroupMobile ) {
				$slidesPerGroupSkipMobile = $cards_per_view_mobile - $slidesPerGroupMobile;
			}
		} else {
			$cards_per_view             = 1;
			$cards_per_view_ipad        = 1;
			$cards_per_view_mobile      = 1;
			$cards_space_between        = 0;
			$cards_space_between_ipad   = 0;
			$cards_space_between_mobile = 0;
		}

		if ( 'on' === $show_arrow ) {
			$arrows = "{    
				nextEl: '." . esc_attr( $order_class ) . " .swiper-button-next',
				prevEl: '." . esc_attr( $order_class ) . " .swiper-button-prev',
			}";
		}
		if ( 'on' === $show_control_dot ) {
			$number_dot = 'false';
			if ( 'number_dot' === $this->props['control_dot_style'] ) {
				$number_dot = "function (index, className) {
					return '<span class=\"' + className + ' number-bullet\">' + (index + 1) + ' </span>';
				}";
			}
			$dots = "{
				el: '." . esc_attr( $order_class ) . " .swiper-pagination',
				dynamicBullets: " . $dynamic_bullets . ",
				clickable: true,
				renderBullet: " . $number_dot . ",
			}";
		}
		if ( 'on' === $autoplay ) {
			if ( 'on' === $pause_on_hover ) {
				$autoplaySlides = '{
					delay:' . $autoplay_speed . ',
					disableOnInteraction: true,
				}';
			} else {
				$autoplaySlides = '{
					delay:' . $autoplay_speed . ',
					disableOnInteraction: false,
				}';
			}
		}
		if ( 'cube' === $slide_effect ) {
			$cube = '{
				shadow: false,
				slideShadows: false,
			}';
		}
		if ( 'coverflow' === $slide_effect ) {
			$coverflow = '{
				rotate: ' . $coverflow_rotate . ',
				stretch: 0,
				depth: ' . $coverflow_depth . ',
				modifier: 1,
				slideShadows : ' . $enable_coverflow_shadow . ',
			}';
		}

		$script  = '<script type="text/javascript">';
		$script .= 'jQuery(function($) {';

		$script .= 'var ' . esc_attr( $order_class ) . '_swiper = new Swiper(\'.' . esc_attr( $order_class ) . ' .swiper-container\', {
			slidesPerView: ' . $cards_per_view . ',
			autoplay: ' . $autoplaySlides . ',
			centeredSlides: ' . $slide_center_mode . ',
			spaceBetween: ' . intval( $cards_space_between ) . ',
			slidesPerGroup: ' . $slidesPerGroup . ',
			slidesPerGroupSkip: ' . $slidesPerGroupSkip . ',
			effect: "' . $slide_effect . '",
			cubeEffect: ' . $cube . ',
			coverflowEffect: ' . $coverflow . ',
			speed: ' . $transition_duration . ',
			loop: ' . $loop . ',
			pagination: ' . $dots . ',
			navigation: ' . $arrows . ',
			grabCursor: \'true\',
			observer: true,
			observeParents: true,
			breakpoints: {
				981: {
					slidesPerView: ' . $cards_per_view . ',
					spaceBetween: ' . intval( $cards_space_between ) . ',
					slidesPerGroup: ' . $slidesPerGroup . ',
					slidesPerGroupSkip: ' . $slidesPerGroupSkip . ',
				},
				768: {
					slidesPerView: ' . $cards_per_view_ipad . ',
					spaceBetween: ' . intval( $cards_space_between_ipad ) . ',
					slidesPerGroup: ' . $slidesPerGroupIpad . ',
					slidesPerGroupSkip: ' . $slidesPerGroupSkipIpad . ',
				},
				0: {
					slidesPerView: ' . $cards_per_view_mobile . ',
					spaceBetween: ' . intval( $cards_space_between_mobile ) . ',
					slidesPerGroup: ' . $slidesPerGroupMobile . ',
					slidesPerGroupSkip: ' . $slidesPerGroupSkipMobile . ',
				}
			},
		} );';

		if ( 'on' === $pause_on_hover && 'on' === $autoplay ) {
			$script .= 'jQuery(".' . esc_attr( $order_class ) . ' .swiper-container").on("mouseenter", function(e) {
				if ( typeof ' . esc_attr( $order_class ) . '_swiper.autoplay.stop === "function" ) {
					' . esc_attr( $order_class ) . '_swiper.autoplay.stop();
				}
			});';
			$script .= 'jQuery(".' . esc_attr( $order_class ) . ' .swiper-container").on("mouseleave", function(e) {
				if ( typeof ' . esc_attr( $order_class ) . '_swiper.autoplay.start === "function" ) {
					' . esc_attr( $order_class ) . '_swiper.autoplay.start();
				}
			});';
		}

		if ( 'true' !== $loop ) {
			$script .= esc_attr( $order_class ) . '_swiper.on(\'reachEnd\', function(){
				' . esc_attr( $order_class ) . '_swiper.autoplay = false;
			});';
		}
		$script .= '});</script>';

		return $script;
	}

}

new AIOC_PricingCarousel();
