<?php
/**
 * Implements the compatibility for the Elementor plugin in FitNote theme.
 *
 * @package    FitNote
 * @since      FitNote 1.0.0
 */

use elementor\widgets\FitNote_Elementor_Global_Widgets_Title;
use elementor\widgets\FitNote_Elementor_Widgets_Block_1;
use elementor\widgets\FitNote_Elementor_Widgets_Block_2;
use elementor\widgets\FitNote_Elementor_Widgets_Block_3;
use elementor\widgets\FitNote_Elementor_Widgets_Block_4;
use elementor\widgets\FitNote_Elementor_Widgets_Block_5;
use elementor\widgets\FitNote_Elementor_Widgets_Grid_1;
use elementor\widgets\FitNote_Elementor_Widgets_Grid_2;
use elementor\widgets\FitNote_Elementor_Widgets_Grid_3;
use elementor\widgets\FitNote_Elementor_Widgets_Grid_4;
use elementor\widgets\FitNote_Elementor_Widgets_Grid_5;

/**
 * Load the FitNote Elementor widgets file and registers it
 */
if ( ! function_exists( 'fitnote_elementor_widgets_registered' ) ) :

	/**
	 * Load and register the required Elementor widgets file.
	 *
	 * @param Elementor\Widgets_Manager $widgets_manager The widgets manager instance.
	 *
	 * @since FitNote 1.0.0
	 */
	function fitnote_elementor_widgets_registered( $widgets_manager ) {

		// Require the Widget Base class.
		require get_template_directory()  . '/inc/compatibility/elementor/widgets/class-fitnote-elementor-widget-base.php';

		// Require the files.
		// 1. Block Widgets.
		require get_template_directory()  . '/inc/compatibility/elementor/widgets/fitnote-elementor-widgets-block-1.php';
		require get_template_directory()  . '/inc/compatibility/elementor/widgets/fitnote-elementor-widgets-block-2.php';
        require get_template_directory()  . '/inc/compatibility/elementor/widgets/fitnote-elementor-widgets-block-3.php';
		require get_template_directory()  . '/inc/compatibility/elementor/widgets/fitnote-elementor-widgets-block-4.php';
		require get_template_directory()  . '/inc/compatibility/elementor/widgets/fitnote-elementor-widgets-block-5.php';

		// 2. Grid Widgets.
		require get_template_directory()  . '/inc/compatibility/elementor/widgets/fitnote-elementor-widgets-grid-1.php';
		require get_template_directory()  . '/inc/compatibility/elementor/widgets/fitnote-elementor-widgets-grid-2.php';
		require get_template_directory()  . '/inc/compatibility/elementor/widgets/fitnote-elementor-widgets-grid-3.php';
		require get_template_directory()  . '/inc/compatibility/elementor/widgets/fitnote-elementor-widgets-grid-4.php';
		require get_template_directory()  . '/inc/compatibility/elementor/widgets/fitnote-elementor-widgets-grid-5.php';

		// 3. Global Widgets.
		require get_template_directory()  . '/inc/compatibility/elementor/widgets/fitnote-elementor-global-widgets-title.php';

		// Register the widgets
		// 1. Block Widgets.
		$widgets_manager->register_widget_type( new FitNote_Elementor_Widgets_Block_1() );
		$widgets_manager->register_widget_type( new FitNote_Elementor_Widgets_Block_2() );
        $widgets_manager->register_widget_type( new FitNote_Elementor_Widgets_Block_3() );
		$widgets_manager->register_widget_type( new FitNote_Elementor_Widgets_Block_4() );
		$widgets_manager->register_widget_type( new FitNote_Elementor_Widgets_Block_5() );

		// 2. Grid Widgets.
		$widgets_manager->register_widget_type( new FitNote_Elementor_Widgets_Grid_1() );
		$widgets_manager->register_widget_type( new FitNote_Elementor_Widgets_Grid_2() );
		$widgets_manager->register_widget_type( new FitNote_Elementor_Widgets_Grid_3() );
		$widgets_manager->register_widget_type( new FitNote_Elementor_Widgets_Grid_4() );
		$widgets_manager->register_widget_type( new FitNote_Elementor_Widgets_Grid_5() );

		// 3. Global Widgets.
		$widgets_manager->register_widget_type( new FitNote_Elementor_Global_Widgets_Title() );

	}

endif;

add_action( 'elementor/widgets/widgets_registered', 'fitnote_elementor_widgets_registered' );

if ( ! function_exists( 'fitnote_elementor_category' ) ) :

	/**
	 * Add the Elementor category for use in FitNote widgets as separator.
	 *
	 * @since FitNote 1.0.0
	 */
	function fitnote_elementor_category() {

		// Register widget block category for Elementor section.
		\Elementor\Plugin::instance()->elements_manager->add_category(
			'fitnote-widget-blocks',
			array(
				'title' => esc_html__( 'FitNote Widget Blocks', 'fitnote' ),
			),
			1
		);

		// Register widget grid category for Elementor section.
		\Elementor\Plugin::instance()->elements_manager->add_category(
			'fitnote-widget-grid',
			array(
				'title' => esc_html__( 'FitNote Widget Grid', 'fitnote' ),
			),
			1
		);

		// Register widget global category for Elementor section.
		\Elementor\Plugin::instance()->elements_manager->add_category(
			'fitnote-widget-global',
			array(
				'title' => esc_html__( 'FitNote Global Widgets', 'fitnote' ),
			),
			1
		);
	}

endif;

add_action( 'elementor/init', 'fitnote_elementor_category' );

if ( ! function_exists( 'fitnote_elementor_enqueue_style' ) ) :

	/**
	 * Enqueue the styles for use within Elementor only.
	 *
	 * @since FitNote 1.0.0
	 */
	function fitnote_elementor_enqueue_style() {

        $suffix = (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) ? '' : '.min';

        $file_name = is_rtl() ? 'elementor-rtl' . $suffix . '.css' : 'elementor' . $suffix . '.css';

        wp_enqueue_style(
            'fitnote-elementor',
            get_template_directory_uri() . '/inc/compatibility/elementor/assets/css/' . $file_name,
            array(),
            FITNOTE_VERSION
        );

	}

endif;

add_action( 'elementor/frontend/after_enqueue_styles', 'fitnote_elementor_enqueue_style' );
