<?php
/**
 * Wrapper Link extension class
 *
 * @package Banana_Addons
 */
namespace Banana_Addons\Elementor\Extensions;

use Elementor\Controls_Manager;
use Elementor\Element_Base;

defined( 'ABSPATH' ) || die();

class Wrapper_Link {

	private static $instance = null;

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

	public static function add_controls_section( Element_Base $element ) {
		$tabs = Controls_Manager::TAB_CONTENT;

		if ( 'section' === $element->get_name() || 'column' === $element->get_name() || 'container' === $element->get_name() ) {
			$tabs = Controls_Manager::TAB_LAYOUT;
		}

		$element->start_controls_section(
			'_section_banae_wrapper_link',
			[
				'label' => __( 'Wrapper Link', 'banana-addons-for-elementor' ),
				'tab' => $tabs,
			]
		);

		$element->add_control(
			'banae_element_link',
			[
				'label' => __( 'Link', 'banana-addons-for-elementor' ),
				'type' => Controls_Manager::URL,
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => 'https://example.com',
			]
		);

		$element->end_controls_section();
	}

	public static function before_section_render( Element_Base $element ) {
		$link_settings = $element->get_settings_for_display( 'banae_element_link' );
		$link_settings['url'] = esc_url( $link_settings['url'] ?? '' );
		unset( $link_settings['custom_attributes'] );

		if ( $link_settings && ! empty( $link_settings['url'] ) ) {
			$element->add_render_attribute(
				'_wrapper',
				[
					'data-banae-element-link' => json_encode( $link_settings ),
					'style' => 'cursor: pointer'
				]
			);
		}
	}
}