<?php
/**
 * Elementor shortcode block.
 *
 * @since      2.2.5
 * @package     smart-post-show-pro
 * @subpackage  smart-post-show-pro/admin
 */

use SmartPostShow\Blocks\Helper;

/**
 * Smart_Post_Show_Pro_Element_Shortcode_Addons
 */
class Smart_Post_Show_Pro_Element_Shortcode_Addons {
	/**
	 * Instance
	 *
	 * @since 2.2.5
	 *
	 * @access private
	 * @static
	 *
	 * @var Smart_Post_Show_Pro_Element_Shortcode_Addons The single instance of the class.
	 */
	private static $_instance = null;

	/**
	 * Script and style suffix
	 *
	 * @since 2.0.0
	 * @access protected
	 * @var string
	 */
	protected $suffix;

	/**
	 * Instance
	 *
	 * Ensures only one instance of the class is loaded or can be loaded.
	 *
	 * @since 2.2.5
	 *
	 * @access public
	 * @static
	 *
	 * @return Elementor_Test_Extension An instance of the class.
	 */
	public static function instance() {

		if ( is_null( self::$_instance ) ) {
			self::$_instance = new self();
		}
		return self::$_instance;
	}

	/**
	 * Constructor
	 *
	 * @since 2.2.5
	 *
	 * @access public
	 */
	public function __construct() {
		$this->suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) || ( defined( 'WP_DEBUG' ) && WP_DEBUG ) ? '' : '.min';
		$this->on_plugins_loaded();
		add_action( 'elementor/preview/enqueue_scripts', array( $this, 'smart_post_show_pro_addons_enqueue_scripts' ) );
		add_action( 'elementor/preview/enqueue_styles', array( $this, 'smart_post_show_pro_addons_enqueue_styles' ) );
		add_action( 'elementor/editor/before_enqueue_scripts', array( $this, 'smart_post_show_pro_addons_icon' ) );
	}

	/**
	 * Elementor block icon.
	 *
	 * @since    2.2.5
	 * @return void
	 */
	public function smart_post_show_pro_addons_icon() {
		wp_enqueue_style( 'smart_post_show_pro_elementor_addons_icon', SP_PCP_URL . 'admin/css/fontello.min.css', array(), SP_PCP_VERSION, 'all' );
	}

	/**
	 * Register the JavaScript for the elementor block area.
	 *
	 * @since    2.2.5
	 */
	public function smart_post_show_pro_addons_enqueue_scripts() {

		/**
		 * This function is provided for demonstration purposes only.
		 *
		 * An instance of this class should be passed to the run() function
		 * defined in Smart_Post_Show_Pro_Loader as all of the hooks are defined
		 * in that particular class.
		 *
		 * The Smart_Post_Show_Pro_Loader will then create the relationship
		 * between the defined hooks and the functions defined in this
		 * class.
		 */

		wp_enqueue_script( 'pcp_swiper' );
		wp_enqueue_script( 'pcp_isotope' );
		wp_enqueue_script( 'pcp_bxslider' );
		wp_enqueue_script( 'pcp_popup' );
		wp_enqueue_script( 'pcp_lazy' );
		wp_enqueue_script( 'pcp_script' );
		wp_enqueue_script( 'jquery-ui-accordion' );
		wp_enqueue_script( 'sp_smart_post_builder_script' );
	}
	/**
	 * Enqueue stylesheets for the in editor side of the site.
	 *
	 * @since    2.0.0
	 */
	public function smart_post_show_pro_addons_enqueue_styles() {
			wp_enqueue_style( 'pcp-font-awesome' );
			wp_enqueue_style( 'pcp_swiper' );
			wp_enqueue_style( 'pcp-bxslider' );
			wp_enqueue_style( 'pcp-likes' );
			wp_enqueue_style( 'pcp-popup' );
			wp_enqueue_style( 'pcp_fonttello_icon' );
			wp_enqueue_style( 'pcp-style' );
	}

	/**
	 * On Plugins Loaded
	 *
	 * Checks if Elementor has loaded, and performs some compatibility checks.
	 * If All checks pass, inits the plugin.
	 *
	 * Fired by `plugins_loaded` action hook.
	 *
	 * @since 2.2.5
	 *
	 * @access public
	 */
	public function on_plugins_loaded() {
		add_action( 'elementor/init', array( $this, 'init' ) );
	}

	/**
	 * Initialize the plugin
	 *
	 * Load the plugin only after Elementor (and other plugins) are loaded.
	 * Load the files required to run the plugin.
	 *
	 * Fired by `plugins_loaded` action hook.
	 *
	 * @since 2.2.5
	 *
	 * @access public
	 */
	public function init() {
		// Add Plugin actions.
		add_action( 'elementor/widgets/register', array( $this, 'init_widgets' ) );
	}

	/**
	 * Init Widgets
	 *
	 * Include widgets files and register them
	 *
	 * @since 2.2.5
	 *
	 * @access public
	 */
	public function init_widgets() {
		// Register widget.
		require_once SP_PCP_PATH . 'admin/ElementAddons/Smart_Post_Show_Shortcode_Widget.php';
		\Elementor\Plugin::instance()->widgets_manager->register( new Smart_Post_Show_Shortcode_Widget() );

		$integration_options = Helper::get_integration_options();

		$elementor_integration = $integration_options['elementor'] ?? false;

		if ( $elementor_integration ) {
			require_once SP_PCP_PATH . 'admin/ElementAddons/Smart_Post_Show_Template_Widget.php';
			\Elementor\Plugin::instance()->widgets_manager->register( new Smart_Post_Show_Template_Widget() );
		}
	}
}

Smart_Post_Show_Pro_Element_Shortcode_Addons::instance();
