File: /home/memecom/domains/me3me.pro/public_html/wp-content/plugins/pe-core/pe-elementor.php
<?php
namespace PeElementor;
use Elementor\Core\Base\Module as BaseModule;
use Elementor\Modules\Library\Documents;
use Elementor\Core\DocumentTypes\Post;
use Elementor\Core\Documents_Manager;
/**
* Class Plugin
*
* Main Plugin class
* @since 1.0.0
*/
class Plugin
{
/**
* Instance
*
* @since 1.0.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;
}
/**
* widget_scripts
*
* Load required plugin core files.
*
* @since 1.2.0
* @access public
*/
public function pe_scripts()
{
$option = get_option('pe-redux');
if ($option['pe_three'] == true) {
wp_enqueue_script('pe-three', plugins_url('/assets/js/pe-three.js', __FILE__), ['jquery'], false, ['strategy' => 'defer', 'in_footer' => true,]);
}
if ($option['pe_spline'] == true) {
wp_enqueue_script('pe-spline', plugins_url('/assets/js/pe-spline.iife.js', __FILE__), ['jquery'], false, ['strategy' => 'defer', 'in_footer' => true,]);
}
wp_enqueue_script('pe-text-ans', plugins_url('/assets/js/pe-text-animations.js', __FILE__), ['jquery'], false, ['strategy' => 'defer', 'in_footer' => true,]);
wp_enqueue_script('pe-general-ans', plugins_url('/assets/js/pe-general-animations.js', __FILE__), ['jquery'], false, ['strategy' => 'defer', 'in_footer' => true,]);
wp_enqueue_script('pe-image-ans', plugins_url('/assets/js/pe-image-animations.js', __FILE__), ['jquery'], false, ['strategy' => 'defer', 'in_footer' => true,]);
wp_enqueue_script('pe-video-player', plugins_url('/assets/js/pe-video-player.js', __FILE__), ['jquery'], false, ['strategy' => 'defer', 'in_footer' => true,]);
wp_enqueue_script('pe-forms', plugins_url('/assets/js/pe-forms.js', __FILE__), ['jquery'], false, ['strategy' => 'defer', 'in_footer' => true,]);
wp_enqueue_script('widget-scripts', plugins_url('/assets/js/widget-scripts.js', __FILE__), ['jquery'], false, ['strategy' => 'defer', 'in_footer' => true,]);
wp_localize_script('widget-scripts', 'pe_get_projects', array(
'ajax_url' => admin_url('admin-ajax.php'),
));
wp_localize_script('pe-forms', 'pe_contact_form', array(
'ajax_url' => admin_url('admin-ajax.php'),
));
}
public function pe_editor_styles()
{
wp_register_style('editor-style', plugins_url('assets/css/editor.css', __FILE__));
wp_enqueue_style('editor-style');
}
public function pe_editor_scripts()
{
wp_register_script('editor-script', plugins_url('assets/js/editor.js', __FILE__));
wp_enqueue_script('editor-script');
}
/**
* widget_styles
*
* Load required plugin core files.
*
* @since 1.2.0
* @access public+
*/
public function pe_styles()
{
wp_register_style('widget-styles', plugins_url('assets/css/widget-styles.css', __FILE__));
wp_register_style('widget-rtl-styles', plugins_url('assets/css/widget-rtl-styles.css', __FILE__));
if (is_rtl()) {
wp_enqueue_style('widget-rtl-styles');
} else {
wp_enqueue_style('widget-styles');
}
if (is_plugin_active('woocommerce/woocommerce.php')) {
wp_register_style('woo-widget-styles', plugins_url('assets/css/woo-widget-styles.css', __FILE__));
wp_register_style('woo-widget-rtl-styles', plugins_url('assets/css/woo-widget-rtl-styles.css', __FILE__));
if (is_rtl()) {
wp_enqueue_style('woo-widget-rtl-styles');
} else {
wp_enqueue_style('woo-widget-styles');
}
}
}
public function admin_styles()
{
wp_register_style('pe-admin-styles', plugins_url('assets/css/admin.css', __FILE__));
wp_enqueue_style('pe-admin-styles');
}
/**
* Register Custom Widget Categories
*
* @return void
*/
public function add_elementor_widget_categories($elements_manager)
{
$elements_manager->add_category(
'pe-content',
[
'title' => esc_html__('Content Elements', 'alioth'),
'icon' => 'eicon-plug',
]
);
$elements_manager->add_category(
'pe-showcase',
[
'title' => esc_html__('Showcase Widgets', 'alioth-elementor'),
'icon' => 'eicon-sitemap',
]
);
$elements_manager->add_category(
'pe-dynamic',
[
'title' => esc_html__('Dynamic Elements', 'alioth-elementor'),
'icon' => 'eicon-sitemap',
]
);
$elements_manager->add_category(
'pe-woo',
[
'title' => esc_html__('WooCommerce Elements', 'alioth-elementor'),
'icon' => 'eicon-woocommerce',
]
);
}
/**
* Include Widgets files
*
* Load widgets files
*
* @since 1.2.0
* @access private
*/
private function include_widgets_files()
{
require_once(__DIR__ . '/widgets/circle-text.php');
require_once(__DIR__ . '/widgets/table.php');
require_once(__DIR__ . '/widgets/list.php');
require_once(__DIR__ . '/widgets/marquee.php');
require_once(__DIR__ . '/widgets/icon.php');
require_once(__DIR__ . '/widgets/text-wrapper.php');
require_once(__DIR__ . '/widgets/video.php');
require_once(__DIR__ . '/widgets/slider.php');
require_once(__DIR__ . '/widgets/carousel.php');
require_once(__DIR__ . '/widgets/sc-controls.php');
require_once(__DIR__ . '/widgets/clients.php');
require_once(__DIR__ . '/widgets/single-image.php');
require_once(__DIR__ . '/widgets/accordion.php');
require_once(__DIR__ . '/widgets/testimonials.php');
require_once(__DIR__ . '/widgets/layout-switcher.php');
require_once(__DIR__ . '/widgets/single-post.php');
require_once(__DIR__ . '/widgets/single-project.php');
require_once(__DIR__ . '/widgets/blog-posts.php');
require_once(__DIR__ . '/widgets/button.php');
require_once(__DIR__ . '/widgets/forms.php');
require_once(__DIR__ . '/widgets/team-member.php');
require_once(__DIR__ . '/widgets/timeline.php');
require_once(__DIR__ . '/widgets/template-popup.php');
require_once(__DIR__ . '/widgets/clock.php');
require_once(__DIR__ . '/widgets/draw-svg.php');
require_once(__DIR__ . '/widgets/infosequence.php');
require_once(__DIR__ . '/widgets/loader-transition-element.php');
if (class_exists("Redux")) {
$option = get_option('pe-redux');
if ($option['pe_google_maps_api'] == true) {
require_once(__DIR__ . '/widgets/google-maps.php');
}
if ($option['pe_lotties'] == true) {
require_once(__DIR__ . '/widgets/lottie-player.php');
}
if ($option['pe_three'] == true) {
require_once(__DIR__ . '/widgets/3d-renderer.php');
}
if ($option['pe_spline'] == true) {
require_once(__DIR__ . '/widgets/spline-loader.php');
}
}
require_once(__DIR__ . '/widgets/call-to-action.php');
require_once(__DIR__ . '/widgets/info-box.php');
require_once(__DIR__ . '/widgets/hotspot-image.php');
require_once(__DIR__ . '/widgets/inner-page-navigation.php');
require_once(__DIR__ . '/widgets/fancy-objects.php');
require_once(__DIR__ . '/widgets/social-share.php');
require_once(__DIR__ . '/widgets/interactive-grid.php');
require_once(__DIR__ . '/widgets/archive-title.php');
require_once(__DIR__ . '/widgets/portfolio.php');
require_once(__DIR__ . '/widgets/portfolio-controls.php');
require_once(__DIR__ . '/widgets/portfolio-categories.php');
require_once(__DIR__ . '/widgets/portfolio-search.php');
require_once(__DIR__ . '/widgets/project-media.php');
require_once(__DIR__ . '/widgets/project-field.php');
require_once(__DIR__ . '/widgets/post-field.php');
require_once(__DIR__ . '/widgets/post-media.php');
require_once(__DIR__ . '/widgets/image-gallery.php');
require_once(__DIR__ . '/widgets/site-logo.php');
require_once(__DIR__ . '/widgets/site-navigation.php');
require_once(__DIR__ . '/widgets/nav-menu.php');
require_once(__DIR__ . '/widgets/account.php');
require_once(__DIR__ . '/widgets/number-counter.php');
require_once(__DIR__ . '/widgets/product-cards.php');
require_once(__DIR__ . '/widgets/showcase-rounded.php');
require_once(__DIR__ . '/widgets/showcase-carousel-old.php');
require_once(__DIR__ . '/widgets/showcase-vertical-slider.php');
require_once(__DIR__ . '/widgets/categories-list.php');
require_once(__DIR__ . '/widgets/showcase-vertical-carousel.php');
require_once(__DIR__ . '/widgets/showcase-list.php');
require_once(__DIR__ . '/widgets/showcase-explore.php');
require_once(__DIR__ . '/widgets/showcase-carousel.php');
require_once(__DIR__ . '/widgets/showcase-3d.php');
require_once(__DIR__ . '/widgets/showcase-fullscreen-slideshow.php');
require_once(__DIR__ . '/widgets/showcase-table.php');
require_once(__DIR__ . '/widgets/showcase-void.php');
require_once(__DIR__ . '/widgets/showcase-cards.php');
require_once(__DIR__ . '/widgets/showcase-3d-carousel.php');
require_once(__DIR__ . '/widgets/showcase-rotate.php');
if (class_exists('WooCommerce')) {
require_once(__DIR__ . '/widgets/shopping-cart.php');
require_once(__DIR__ . '/widgets/products-archive.php');
require_once(__DIR__ . '/widgets/single-product.php');
require_once(__DIR__ . '/widgets/product-media.php');
require_once(__DIR__ . '/widgets/product-elements.php');
require_once(__DIR__ . '/widgets/woo-ajax-search.php');
require_once(__DIR__ . '/widgets/cart-block.php');
require_once(__DIR__ . '/widgets/checkout-block.php');
require_once(__DIR__ . '/widgets/login-block.php');
require_once(__DIR__ . '/widgets/account-block.php');
require_once(__DIR__ . '/widgets/reviews.php');
require_once(__DIR__ . '/widgets/compare-table.php');
if (class_exists('YITH_WCWL') || class_exists('YITH_Woocompare')) {
require_once(__DIR__ . '/widgets/pe-yith-widgets.php');
}
}
require_once(__DIR__ . '/widgets/pricing-table.php');
if (defined('WPML_PLUGIN_PATH')) {
require_once(__DIR__ . '/widgets/language-currency-switcher.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();
// Register Widgets
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peCircleText());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peTable());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peList());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peMarquee());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peIcon());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peTextWrapper());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peVideo());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peSlider());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peCarousel());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peScControls());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peClients());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peSingleImage());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peAccordion());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peTestimonials());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peLayoutSwitcher());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peSinglePost());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peSingleProject());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peBlogPosts());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peButton());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peForms());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peTeamMember());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeTimeline());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeTemplatePopup());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peClock());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peDrawSVG());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peInfoSequence());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeLoaderTransitionElement());
if (class_exists("Redux")) {
$option = get_option('pe-redux');
if ($option['pe_google_maps_api'] == true) {
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peGoogleMaps());
}
if ($option['pe_lotties'] == true) {
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeLottie());
}
if ($option['pe_three'] == true) {
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\Pe3DRenderer());
}
if ($option['pe_spline'] == true) {
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peSplineLoader());
}
}
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peCallToAction());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peInfoBox());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeHotspotImage());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeInnerPageNavigation());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peFancyObjects());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peSocialShare());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeInteractiveGrid());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeArchiveTitle());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\pePortfolio());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\pePortfolioControls());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PePortfolioCategories());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PePortfolioSearch());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peProjectMedia());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peProjectField());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\pePostField());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\pePostMedia());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeImageGallery());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peSiteLogo());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peSiteNavigation());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peNavMenu());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peAccount());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeNumberCounter());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peProductCards());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeShowcaseRounded());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeShowcaseCarouselOld());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peshowcaseverticalslider());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeCategoriesList());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeShowcaseFullscreenSlideshow());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeShowcase3D());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeShowcaseCarousel());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peShowcaseExplore());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeShowcaseList());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeShowcaseVerticalCarousel());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeShowcaseTable());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeShowcaseVoid());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeShowcaseCards());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeShowcase3DCarousel());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeShowcaseRotate());
if (class_exists('WooCommerce')) {
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peProductsArchive());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peShoppingCart());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peSingleProduct());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peProductMedia());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peProductElements());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeWooAjaxSearch());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peCartBlock());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peCheckoutBlock());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peLoginBlock());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peAccountBlock());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peReviews());
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PeCompareTable());
if (class_exists('YITH_WCWL') || class_exists('YITH_Woocompare')) {
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peYithWidgets());
}
}
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\PePricingTable());
if (defined('WPML_PLUGIN_PATH')) {
\Elementor\Plugin::instance()->widgets_manager->register(new Widgets\peLanguageCurrencySwitcher());
}
}
public function pe_register_document_type($documents_manager)
{
require_once(__DIR__ . '/inc/template-types/project-hero.php');
require_once(__DIR__ . '/inc/template-types/header.php');
require_once(__DIR__ . '/inc/template-types/footer.php');
require_once(__DIR__ . '/inc/template-types/menu.php');
require_once(__DIR__ . '/inc/template-types/post.php');
require_once(__DIR__ . '/inc/template-types/popup.php');
require_once(__DIR__ . '/inc/template-types/loader-transitions.php');
\Elementor\Plugin::$instance->documents->register_document_type('project-hero', Documents\Project_Hero::get_class_full_name());
\Elementor\Plugin::$instance->documents->register_document_type('pe-header', Documents\Pe_Header::get_class_full_name());
\Elementor\Plugin::$instance->documents->register_document_type('pe-footer', Documents\Pe_Footer::get_class_full_name());
\Elementor\Plugin::$instance->documents->register_document_type('pe-menu', Documents\Pe_Menu::get_class_full_name());
\Elementor\Plugin::$instance->documents->register_document_type('pe-post', Documents\Pe_Post::get_class_full_name());
\Elementor\Plugin::$instance->documents->register_document_type('pe-popup', Documents\Pe_Popup::get_class_full_name());
\Elementor\Plugin::$instance->documents->register_document_type('pe-loader-transitions', Documents\Pe_Loader_Transitions::get_class_full_name());
}
public function register_new_controls($controls_manager)
{
require_once(__DIR__ . '/inc/controls/nested-repeater-control.php');
$controls_manager->register(new \Nested_Repeater_Control());
}
/**
* Plugin class constructor
*
* Register plugin action hooks and filters
*
* @since 1.2.0
* @access public
*/
public function __construct()
{
$isActivated = get_option('is_activated');
if ($isActivated) {
add_action('elementor/frontend/after_register_scripts', [$this, 'pe_scripts']);
add_action('elementor/frontend/after_enqueue_styles', [$this, 'pe_styles']);
add_action('elementor/editor/before_enqueue_styles', [$this, 'pe_editor_styles']);
add_action('elementor/editor/after_enqueue_scripts', [$this, 'pe_editor_scripts']);
add_action('elementor/widgets/register', [$this, 'register_widgets']);
add_action('elementor/documents/register', [$this, 'pe_register_document_type']);
add_action('elementor/elements/categories_registered', [$this, 'add_elementor_widget_categories']);
add_action('elementor/controls/register', [$this, 'register_new_controls']);
}
}
}
Plugin::instance();