/home/awneajlw/www/wp-content/plugins/radiantthemes-addons/class-plugin.php
<?php
/**
 * Include files for Elementor widgets
 *
 * @package RadiantThemes
 */

namespace RadiantthemesAddons;

/**
 * Class Plugin
 *
 * Main Plugin class
 *
 * @since 1.2.0
 */
class Plugin {

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

	/**
	 * Instance
	 *
	 * Ensures only one instance of the class is loaded or can be loaded.
	 *
	 * @since 1.2.0
	 * @access public
	 *
	 * @return Plugin An instance of the class.
	 */
	public static function instance() {
		if ( is_null( self::$_instance ) ) {
			self::$_instance = new self();
		}
		return self::$_instance;
	}

	/**
	 * Function widget_scripts
	 *
	 * Load required plugin core files.
	 *
	 * @since 1.2.0
	 * @access public
	 */
	public function widget_scripts() {
		// ADD RADIANTTHEMES CORE JS.
		wp_register_script(
			'radiantthemes-addons-core',
			plugins_url( '/assets/js/radiantthemes-addons-core.js', __FILE__ ),
			[ 'jquery' ],
			time(),
			true
		);

		// ADD RADIANTTHEMES CUSTOM JS.
		wp_register_script(
			'radiantthemes-addons-custom',
			plugins_url( '/assets/js/radiantthemes-addons-custom.js', __FILE__ ),
			[ 'jquery', 'radiantthemes-addons-core' ],
			time(),
			true
		);

		wp_register_script(
			'radiant-accordion',
			plugins_url( '/assets/js/accordion.js', __FILE__ ),
			[ 'jquery', 'radiantthemes-addons-core' ],
			time(),
			true
		);

		wp_register_script(
			'baguetteBox.min',
			plugins_url( '/assets/js/baguetteBox.min.js', __FILE__ ),
			[ 'jquery' ],
			time(),
			true
		);
		wp_register_script(
			'radiant-image-gallery-proper',
			plugins_url( '/assets/js/popper.min.js', __FILE__ ),
			[ 'jquery' ],
			time(),
			true
		);

		wp_register_script(
			'radiant-image-gallery',
			plugins_url( '/assets/js/image-gallery.js', __FILE__ ),
			[ 'jquery', 'radiantthemes-addons-core' ],
			time(),
			true
		);

		wp_register_script(
			'radiantthemes-testimonial',
			plugins_url( '/assets/js/testimonial.js', __FILE__ ),
			[ 'jquery', 'radiantthemes-addons-core' ],
			time(),
			true
		);

		wp_register_script(
			'radiantthemes-portfolio',
			plugins_url( '/assets/js/portfolio.js', __FILE__ ),
			[ 'jquery', 'radiantthemes-addons-core' ],
			time(),
			true
		);

                wp_register_script(
			'radiantthemes-case-studies-isotope',
			plugins_url( '/assets/js/case-studies-isotope.js', __FILE__ ),
			[ 'jquery', 'radiantthemes-addons-core' ],
			time(),
			true
		);

		wp_register_script(
			'radiantthemes-client',
			plugins_url( '/assets/js/client.js', __FILE__ ),
			[ 'jquery', 'radiantthemes-addons-core' ],
			time(),
			true
		);

		wp_register_script(
			'radiantthemes-blog',
			plugins_url( '/assets/js/blog.js', __FILE__ ),
			[ 'jquery', 'radiantthemes-addons-core' ],
			time(),
			true
		);

		wp_register_script(
			'radiantthemes-team',
			plugins_url( '/assets/js/team.js', __FILE__ ),
			[ 'jquery', 'radiantthemes-addons-core' ],
			time(),
			true
		);

		wp_register_script(
			'radiantthemes-popup-video',
			plugins_url( '/assets/js/popup-video.js', __FILE__ ),
			[ 'jquery', 'radiantthemes-addons-core' ],
			time(),
			true
		);

		wp_register_script(
			'radiantthemes-flip-box',
			plugins_url( '/assets/js/flip-box.js', __FILE__ ),
			[ 'jquery', 'radiantthemes-addons-core' ],
			time(),
			true
		);

		wp_register_script(
			'radiantthemes-timeline',
			plugins_url( '/assets/js/timeline.js', __FILE__ ),
			[ 'jquery', 'radiantthemes-addons-core' ],
			time(),
			true
		);

		wp_register_script(
			'radiantthemes-appear-progressbar',
			plugins_url( '/assets/js/jquery.appear.min.js', __FILE__ ),
			[],
			time(),
			true
		);

		wp_register_script(
			'radiantthemes-progressbar',
			plugins_url( '/assets/js/progressbar.js', __FILE__ ),
			[ 'jquery', 'bootstrap', 'radiantthemes-appear-progressbar' ],
			time(),
			true
		);

		wp_register_script(
			'radiantthemes-case-studies-slider',
			plugins_url( '/assets/js/case-studies-slider.js', __FILE__ ),
			[ 'jquery', 'radiantthemes-addons-core' ],
			time(),
			true
		);

		wp_register_script(
			'radiantthemes-slider',
			plugins_url( '/assets/js/slider.js', __FILE__ ),
			[ 'jquery', 'radiantthemes-addons-core' ],
			time(),
			true
		);

		wp_register_script(
			'radiantthemes-typewriter',
			plugins_url( '/assets/js/typewriter.js', __FILE__ ),
			[ 'jquery', 'radiantthemes-addons-core' ],
			time(),
			true
		);

		wp_register_script(
			'radiantthemes-countdown',
			plugins_url( '/assets/js/countdown.js', __FILE__ ),
			[ 'jquery', 'radiantthemes-addons-core' ],
			time(),
			true
		);

		wp_register_script(
			'radiantthemes-tabs',
			plugins_url( '/assets/js/tab.js', __FILE__ ),
			[ 'jquery', 'radiantthemes-addons-core' ],
			time(),
			true
		);

		wp_register_script(
			'radiantthemes-object-reveal',
			plugins_url( '/assets/js/aos.js', __FILE__ ),
			[ 'jquery', 'bootstrap' ],
			time(),
			true
		);

	}

	/**
	 * Function widget_styles
	 *
	 * Load required plugin core files.
	 *
	 * @since 1.2.0
	 * @access public
	 */
	public function widget_styles() {
		// ADD ICOFONT CSS.
		// ADD RADIANTTHEMES CORE CSS.
		wp_register_style(
			'radiantthemes-addons-core',
			plugins_url( '/assets/css/radiantthemes-addons-core.css', __FILE__ ),
			[],
			time()
		);
		wp_enqueue_style( 'radiantthemes-addons-core' );

		// ADD RADIANTTHEMES CORE CSS.
		wp_register_style(
			'radiantthemes-custom-fonts',
			plugins_url( '/assets/css/radiantthemes-custom-fonts.css', __FILE__ ),
			[],
			time()
		);
		wp_enqueue_style( 'radiantthemes-custom-fonts' );

		wp_register_style(
			'aos',
			plugins_url( '/assets/css/aos.css', __FILE__ ),
			[],
			time(),
			'all'
		);

		wp_register_style(
			'radiantthemes-addons-custom',
			plugins_url( '/assets/css/radiantthemes-addons-custom.css', __FILE__ ),
			array(),
			time(),
			'all'
		);
		wp_enqueue_style( 'radiantthemes-addons-custom' );

		wp_register_style(
			'baguetteBox.min',
			plugins_url( '/assets/css/baguetteBox.min.css', __FILE__ ),
			[],
			time(),
			'all'
		);

		wp_register_style(
			'image-gallery-style',
			plugins_url( '/assets/css/image-gallery-style.css', __FILE__ ),
			[],
			time(),
			'all'
		);

		wp_register_style(
			'radiantthemes-datetimepicker',
			plugins_url( '/admin/css/bootstrap-datetimepicker-admin.css', __FILE__ ),
			[],
			time(),
			'all'
		);
	}

	/**
	 * Include Widgets files
	 *
	 * Load widgets files
	 *
	 * @since 1.2.0
	 * @access private
	 */
	private function include_widgets_files() {
		require_once __DIR__ . '/widgets/custom-heading/class-radiantthemes-style-custom-heading.php';
		require_once __DIR__ . '/widgets/accordion/class-radiantthemes-style-accordion.php';
		require_once __DIR__ . '/widgets/blog/class-radiantthemes-style-blog.php';
		require_once __DIR__ . '/widgets/calltoaction/class-radiantthemes-style-calltoaction.php';
		require_once __DIR__ . '/widgets/client/class-radiantthemes-style-client.php';
		require_once __DIR__ . '/widgets/contact-box/class-radiantthemes-style-contact-box.php';
		require_once __DIR__ . '/widgets/course/class-radiantthemes-style-course.php';
		require_once __DIR__ . '/widgets/custom-button/class-radiantthemes-style-custom-button.php';
		require_once __DIR__ . '/widgets/fancy-text-box/class-radiantthemes-style-fancy-text-box.php';
		require_once __DIR__ . '/widgets/flip-box/class-radiantthemes-style-flip-box.php';
		require_once __DIR__ . '/widgets/highlight-box/class-radiantthemes-style-highlight-box.php';
		require_once __DIR__ . '/widgets/image-gallery/class-radiantthemes-style-image-gallery.php';
		require_once __DIR__ . '/widgets/popup-video/class-radiantthemes-style-popup-video.php';
		require_once __DIR__ . '/widgets/portfolio/class-radiantthemes-style-portfolio.php';
		require_once __DIR__ . '/widgets/progressbar/class-radiantthemes-style-progressbar.php';
		require_once __DIR__ . '/widgets/price-table/class-elementor-price-table.php';
		require_once __DIR__ . '/widgets/separator/class-radiantthemes-style-separator.php';
		require_once __DIR__ . '/widgets/team/class-radiantthemes-style-team.php';
		require_once __DIR__ . '/widgets/testimonial/class-radiantthemes-style-testimonial.php';
		require_once __DIR__ . '/widgets/timeline/class-radiantthemes-style-timeline.php';
		require_once __DIR__ . '/widgets/case-studies-slider/class-radiantthemes-case-studies-slider.php';
		require_once __DIR__ . '/widgets/case-studies/class-radiantthemes-case-studies.php';
		require_once __DIR__ . '/widgets/slider/class-radiantthemes-style-slider.php';
		require_once __DIR__ . '/widgets/alert-box/class-radiantthemes-style-alert.php';
		require_once __DIR__ . '/widgets/blob/class-radiantthemes-style-blob.php';
		require_once __DIR__ . '/widgets/beforeafter/class-radiantthemes-style-beforeafter.php';
		require_once __DIR__ . '/widgets/typewriter-text/class-radiantthemes-style-typewriter-text.php';
		require_once __DIR__ . '/widgets/countdown/class-radiantthemes-style-countdown.php';
		require_once __DIR__ . '/widgets/tabs/class-radiantthemes-style-tabs.php';
		require_once __DIR__ . '/widgets/list/class-radiantthemes-style-list.php';
		require_once __DIR__ . '/widgets/animated-link/class-radiantthemes-style-animated-link.php';
		require_once __DIR__ . '/widgets/blockquote/class-radiantthemes-style-blockquote.php';
		require_once __DIR__ . '/widgets/ihover/class-radiantthemes-style-ihover.php';
		require_once __DIR__ . '/widgets/dropcap/class-radiantthemes-style-dropcap.php';
		require_once __DIR__ . '/widgets/object-reveal/class-radiantthemes-style-object-reveal.php';
	}

	/**
	 * Register Widgets
	 *
	 * Register new Elementor widgets.
	 *
	 * @since 1.2.0
	 * @access public
	 */
	public function register_widgets() {
		// Its is now safe to include Widgets files.
		$this->include_widgets_files();

		// Accordion.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Accordion() );
		// Alert.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Alert() );
		// Animated Link.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Animated_Link() );
		// Before After.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Beforeafter() );
		// Blob.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Blob() );
		// Blockquote.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Blockquote() );
		// Blog.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Blog() );
		// Call to Action.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Calltoaction() );
		// Case Studies.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_style_Case_Studies() );
		// Case Studies Slider.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_style_Case_Studies_Slider() );
		// Client.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Client() );
		// Contact Box.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Contact_Box() );
		// Countdown.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Countdown() );
		// Course.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Course() );
		// Custom Button.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Custom_Button() );
		// Custom Heading.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Custom_Heading() );
		// Dropcap.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Dropcap() );
		// Fancy Text Box.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Fancy_Text_Box() );
		// Flip Box.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Flip_Box() );
		// Highlight Box.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Highlight_Box() );
		// Ihover.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_ihover() );
		// Image Gallery.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\RadiantThemes_Style_Image_Gallery() );
		// List.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_List() );
		// Object Reveal.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Object_Reveal() );
		// Popup Video.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Popup_Video() );
		// Portfolio.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Portfolio() );
		// Progressbar.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Progressbar() );
		// Pricing Table.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Pricing_Table() );
		// Separator.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Separator() );
		// Slider.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Slider() );
		// Tabs.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Tabs() );
		// Team.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Team() );
		// Testimonial.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Testimonial() );
		// Timeline.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\RadiantThemes_Style_Timeline() );
		// Typewriter Text.
		\Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Widgets\Radiantthemes_Style_Typewriter_Text() );
	}

	/**
	 *  Plugin class constructor
	 *
	 * Register plugin action hooks and filters
	 *
	 * @since 1.2.0
	 * @access public
	 */
	public function __construct() {

		/**
		 * Add Font Group
		 */
		add_filter(
			'elementor/fonts/groups',
			function( $font_groups ) {
				$font_groups['custom_fonts'] = esc_html__( 'Custom Fonts' );
				return $font_groups;
			}
		);

		/**
		 * Add Group Fonts
		 */
		add_filter(
			'elementor/fonts/additional_fonts',
			function( $additional_fonts ) {
				$theme_options = get_option( 'codz_theme_option' );
				for ( $i = 1; $i <= 50; $i++ ) {
					if ( ! empty( $theme_options[ 'webfontName' . $i ] ) ) {
						$additional_fonts[] = $theme_options[ 'webfontName' . $i ];
					}
				}

				foreach ( $additional_fonts as $value ) {
					$additional_fonts[ $value ] = 'custom_fonts';
				}

				return $additional_fonts;
			}
		);

		// Register widget scripts.
		add_action( 'elementor/frontend/after_register_scripts', [ $this, 'widget_scripts' ] );

		// Register widget styles.
		add_action( 'elementor/frontend/after_enqueue_styles', [ $this, 'widget_styles' ] );

		// Register widgets.
		add_action( 'elementor/widgets/widgets_registered', [ $this, 'register_widgets' ] );

		// Enqueue styles and scripts in Elementor Editor.
		add_action(
			'elementor/preview/enqueue_styles',
			function() {

				// ADD RADIANTTHEMES CORE CSS.
				wp_enqueue_style(
					'radiantthemes-addons-core',
					plugins_url( '/assets/css/radiantthemes-addons-core.css', __FILE__ ),
					[],
					time()
				);

				// ADD RADIANTTHEMES CORE CSS.
				wp_enqueue_style(
					'radiantthemes-custom-fonts',
					plugins_url( '/assets/css/radiantthemes-custom-fonts.css', __FILE__ ),
					[],
					time()
				);

				wp_enqueue_style(
					'elementor-preview-style',
					plugins_url( '/assets/css/radiantthemes-addons-custom.css', __FILE__ ),
					[],
					time(),
					'all'
				);

				wp_enqueue_style(
					'baguetteBox.min',
					plugins_url( '/assets/css/baguetteBox.min.css', __FILE__ ),
					[],
					time(),
					'all'
				);

				wp_enqueue_style(
					'image-gallery-style',
					plugins_url( '/assets/css/image-gallery-style.css', __FILE__ ),
					[],
					time(),
					'all'
				);
				wp_enqueue_style(
					'radiantthemes-datetimepicker',
					plugins_url( '/admin/css/bootstrap-datetimepicker-admin.css', __FILE__ ),
					[],
					time(),
					'all'
				);
			}
		);
	}
}

// Instantiate Plugin Class.
Plugin::instance();
/**
 * Load scripts for frontend
 *
 * @return void
 */