<?php

namespace MasterAddons\Inc\Controls;

use Elementor\Group_Control_Base;
use Elementor\Controls_Manager;
use \Elementor\Core\Kits\Documents\Tabs\Global_Colors;

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

/**
 * Author Name: Liton Arefin
 * Author URL: https://jeweltheme.com
 * Custom transition group control
 * Date: 10/12/19
 */

class MA_Group_Control_Transition extends Group_Control_Base
{

	protected static $fields;
	private static $_instance = null;

	public static function instance()
	{
		if (is_null(self::$_instance)) {
			self::$_instance = new self();
		}
		return self::$_instance;
	}

	public function __construct()
	{
		add_action('elementor/init', [$this, 'init'], 0);
	}

	public function init()
	{
		add_action('elementor/controls/controls_registered', [$this, 'register_controls']);
	}

	public function register_controls()
	{
		// Register control
		\Elementor\Plugin::instance()->controls_manager->add_group_control('ma-el-transition', new self());
	}


	public static function get_type()
	{
		return 'jltma-transitions';
	}

	public static function get_easings()
	{
		return [
			'linear' 		=> esc_html__('Linear', 'master-addons' ),
			'ease-in' 		=> esc_html__('Ease In', 'master-addons' ),
			'ease-out' 		=> esc_html__('Ease Out', 'master-addons' ),
			'ease-in-out' 	=> esc_html__('Ease In Out', 'master-addons' )
		];
	}



	protected function init_fields()
	{
		$controls = [];

		$controls['property'] = [
			'label'			=> _x('Property', 'Transition Control', 'master-addons' ),
			'type' 			=> Controls_Manager::SELECT,
			'default' 		=> 'all',
			'options'		=> [
				'all'		=> esc_html__('All', 'master-addons' ),
			],
			'selectors' => [
				'{{SELECTOR}}' => 'transition-property: {{VALUE}}',
			],
		];

		$controls['easing'] = [
			'label'			=> _x('Easing', 'Transition Control', 'master-addons' ),
			'type' 			=> Controls_Manager::SELECT,
			'default' 		=> 'linear',
			'options'		=> self::get_easings(),
			'selectors' => [
				'{{SELECTOR}}' => 'transition-timing-function: {{VALUE}}'
			],
		];

		$controls['duration'] = [
			'label'			=> _x('Duration', 'Transition Control', 'master-addons' ),
			'type' 			=> Controls_Manager::NUMBER,
			'default' 		=> 0.3,
			'min' 			=> 0.05,
			'max' 			=> 2,
			'step' 			=> 0.05,
			'selectors' 	=> [
				'{{SELECTOR}}' => 'transition-duration: {{VALUE}}s;',
			],
			'separator' 	=> 'after',
		];

		return $controls;
	}


	protected function prepare_fields($fields)
	{

		array_walk(
			$fields,
			function (&$field, $field_name) {

				if (in_array($field_name, ['transition', 'popover_toggle'])) {
					return;
				}

				$field['condition']['transition'] = 'custom';
			}
		);

		return parent::prepare_fields($fields);
	}


	protected function get_default_options()
	{
		return [
			'popover' => [
				'starter_name' 	=> 'transition',
				'starter_title' => _x('Transition', 'Transition Control', 'master-addons' ),
			],
		];
	}
}
