HEX
Server: LiteSpeed
System: Linux bq-e808 5.14.0-503.23.2.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Feb 12 05:52:18 EST 2025 x86_64
User: memecom (1010)
PHP: 8.2.27
Disabled: NONE
Upload Files
File: /home/memecom/domains/me3me.com/public_html/wp-content/plugins/widgets-supply/register-widgets.php
<?php

namespace WidgetsSupply;

class Widgets_Supply_Widgets{
  public function __construct(){
    if (get_option('activate_widgets_supply') == true) {
      $this->init();
    }
  }
  public function init(){
    // Register widgets
    add_action( 'elementor/widgets/register', [$this, 'register_widgets'] );

    // Register categories
    add_action( 'elementor/elements/categories_registered', function( $elements_manager ) {
        $elements_manager->add_category(
            'widgets-supply-texts',
            [
                'title' => __( 'Widgets Supply - Texts', 'widgets-supply' ),
            ]
        );
        $elements_manager->add_category(
            'widgets-supply-buttons',
            [
                'title' => __( 'Widgets Supply - Buttons', 'widgets-supply' ),
            ]
        );
        $elements_manager->add_category(
            'widgets-supply-menus',
            [
                'title' => __( 'Widgets Supply - Menus', 'widgets-supply' ),
            ]
        );
        $elements_manager->add_category(
            'widgets-supply-sliders',
            [
                'title' => __( 'Widgets Supply - Sliders', 'widgets-supply' ),
            ]
        );
        $elements_manager->add_category(
          'widgets-supply-medias',
          [
              'title' => __( 'Widgets Supply - Medias', 'widgets-supply' ),
          ]
      );
      $elements_manager->add_category(
        'widgets-supply-cursors',
        [
            'title' => __( 'Widgets Supply - Cursors', 'widgets-supply' ),
        ]
      );
        $elements_manager->add_category(
            'widgets-supply-backgrounds',
            [
                'title' => __( 'Widgets Supply - Backgrounds', 'widgets-supply' ),
            ]
        );
        $elements_manager->add_category(
            'widgets-supply-cores',
            [
                'title' => __( 'Widgets Supply - Cores', 'widgets-supply' ),
            ]
        );
    });
  }
  public function register_widgets( $widgets_manager ) {
    //Register widgets in loop using pair: [folder-name - option-name]

    $enabledBlocks = [
      /*Texts*/
      'read_more' => 'ws_read_more_enable', //gutenberg nestable
      'link_preview' => 'ws_link_preview_enable', //gutenberg nestable
      'proximity_hover' => 'ws_proximity_hover_enable',
      'dynamic_copyright' => 'ws_dynamic_copyright_enable',
      'looping_lines' => 'ws_looping_lines_enable',
      'looping_lines_v2' => 'ws_looping_lines_v2_enable',
      'looping_lines_v3' => 'ws_looping_lines_v3_enable',
      'blur_reveal' => 'ws_blur_reveal_enable',
      'blur_reading' => 'ws_blur_reading_enable',
      'scroll_reading' => 'ws_scroll_reading_enable',
      'blade_reveal' => 'ws_blade_reveal_enable',
      'letter_launcher' => 'ws_letter_launcher_enable',
      'text_shimmer' => 'ws_text_shimmer_enable',
      'underline_hover' => 'ws_underline_hover_enable',
      'highlight_hover' => 'ws_highlight_hover_enable',
      'twist_reveal' => 'ws_twist_reveal_enable',
      'typed' => 'ws_typed_enable',
      'arc_title' => 'ws_arc_title_enable',
      'mask_hover' => 'ws_mask_hover_enable', //elementor & gutenberg nestable
      'fluid_gradient' => 'ws_fluid_gradient_enable',
      'swap_hover' => 'ws_swap_hover_enable',
      '3d_swap_hover' => 'ws_3d_swap_hover_enable',
      'blended_hover' => 'ws_blended_hover_enable',
      'decode_hover' => 'ws_decode_hover_enable',
      'decode_reveal' => 'ws_decode_reveal_enable',
      'scroll_gradient' => 'ws_scroll_gradient_enable',
      'scribble_reveal' => 'ws_scribble_reveal_enable',
      'counter' => 'ws_counter_enable',
      'highlight' => 'ws_highlight_enable',

      /*Buttons*/
      'marquee_button' => 'ws_marquee_button_enable',
      'marquee_button_v2' => 'ws_marquee_button_v2_enable',
      'glowing_button' => 'ws_glowing_button_enable',
      'crystal_button' => 'ws_crystal_button_enable',
      'prism_button' => 'ws_prism_button_enable',
      'prism_button_v2' => 'ws_prism_button_v2_enable',
      'mask_button' => 'ws_mask_button_enable',
      'anyside_button' => 'ws_anyside_button_enable',
      'modal_button' => 'ws_modal_button_enable',
      'shiny_button' => 'ws_shiny_button_enable',
      'rainbow_button' => 'ws_rainbow_button_enable',
      'strip_button' => 'ws_strip_button_enable',
      'stripes_button' => 'ws_stripes_button_enable',
      'pixels_button' => 'ws_pixels_button_enable',
      'reel_button' => 'ws_reel_button_enable',
      'blurry_button' => 'ws_blurry_button_enable',
      'flip_flop_button' => 'ws_flip_flop_button_enable',
      'flip_flop_button_v2' => 'ws_flip_flop_button_v2_enable',
      'flip_flop_button_v3' => 'ws_flip_flop_button_v3_enable',
      'dot_button' => 'ws_dot_button_enable',
      'dot_button_v2' => 'ws_dot_button_v2_enable',
      'dot_button_v3' => 'ws_dot_button_v3_enable',
      'arrow_button' => 'ws_arrow_button_enable',
      'arrow_button_v2' => 'ws_arrow_button_v2_enable',
      'arrow_button_v3' => 'ws_arrow_button_v3_enable',
      'arrow_button_v4' => 'ws_arrow_button_v4_enable',
      'arrow_button_v5' => 'ws_arrow_button_v5_enable',
      'arrow_button_v6' => 'ws_arrow_button_v6_enable',
      'arrow_button_v7' => 'ws_arrow_button_v7_enable',
      'arrow_button_v8' => 'ws_arrow_button_v8_enable',
      'ripple_button' => 'ws_ripple_button_enable',
      'ripple_button_v2' => 'ws_ripple_button_v2_enable',
      'ripple_button_v3' => 'ws_ripple_button_v3_enable',
      'ripple_button_v4' => 'ws_ripple_button_v4_enable',
      'ripple_button_v5' => 'ws_ripple_button_v5_enable',
      'ripple_button_v6' => 'ws_ripple_button_v6_enable',
      'ripple_button_v7' => 'ws_ripple_button_v7_enable',
      'bubbles_button' => 'ws_bubbles_button_enable',
      'squeezy_button' => 'ws_squeezy_button_enable',
      'nudge_button' => 'ws_nudge_button_enable', //elementor & gutenberg nestable

      /*Menus*/
      'gooey_nav' => 'ws_gooey_nav_enable',
      'focus_nav' => 'ws_focus_nav_enable',
      'dock' => 'ws_dock_enable',
      'morphing_nav' => 'ws_morphing_nav_enable',
      'burger' => 'ws_burger_enable',
      'drawer' => 'ws_drawer_enable', //elementor & gutenberg nestable
      'offcanvas_menu' => 'ws_offcanvas_menu_enable', //elementor & gutenberg nestable
      'dropdown' => 'ws_dropdown_enable', //elementor & gutenberg nestable
      'expanding_menu' => 'ws_expanding_menu_enable', //elementor & gutenberg nestable
      'expanding_nav' => 'ws_expanding_nav_enable',
      'overlay_menu' => 'ws_overlay_menu_enable', //elementor & gutenberg nestable
      'sticky_header' => 'ws_sticky_header_enable', //elementor & gutenberg nestable
      'dynamic_island' => 'ws_dynamic_island_enable', //elementor & gutenberg nestable

      /*Medias*/
      'lightbox' => 'ws_lightbox_enable',
      'parallax' => 'ws_parallax_enable',
      'image_reveal' => 'ws_image_reveal_enable',
      'image_reveal_v2' => 'ws_image_reveal_v2_enable',
      'image_reveal_v3' => 'ws_image_reveal_v3_enable',
      'image_reveal_v4' => 'ws_image_reveal_v4_enable',
      'scrolling_gallery' => 'ws_scrolling_gallery_enable',
      'video_tabs' => 'ws_video_tabs_enable',
      'before_after_image' => 'ws_before_after_image_enable',
      'image_hotspots' => 'ws_image_hotspots_enable',

      /*Cursors*/
      'cursor' => 'ws_cursor_enable',
      'designer_cursor' => 'ws_designer_cursor_enable',
      'cursor_slide' => 'ws_cursor_slide_enable',
      'cursor_trail' => 'ws_cursor_trail_enable', //elementor & gutenberg nestable
      'crosshair' => 'ws_crosshair_enable', //elementor & gutenberg nestable

      /*Sliders*/
      'parallax_slider' => 'ws_parallax_slider_enable',
      'infinite_slider' => 'ws_infinite_slider_enable',
      'thumbnail_slider' => 'ws_thumbnail_slider_enable',
      'stories' => 'ws_stories_enable',

      /*Backgrounds*/
      'spotlight' => 'ws_spotlight_enable',
      'spotlight_v2' => 'ws_spotlight_v2_enable',
      'grainy' => 'ws_grainy_enable',
      'particles' => 'ws_particles_enable',
      'physics' => 'ws_physics_enable',
      'interactive_lines' => 'ws_interactive_lines_enable',
      'interactive_lines_v2' => 'ws_interactive_lines_v2_enable',
      'interactive_lines_v3' => 'ws_interactive_lines_v3_enable',
      'interactive_lines_v4' => 'ws_interactive_lines_v4_enable',
      'tiles' => 'ws_tiles_enable',
      'gradiently' => 'ws_gradiently_enable',
      'border_beam' => 'ws_border_beam_enable',
      'fluids' => 'ws_fluids_enable',
      'scrolling_background' => 'ws_scrolling_background_enable',
      'overlay_shadows' => 'ws_overlay_shadows_enable',

      /*Cores*/
      'audio_player' => 'ws_audio_player_enable',
      'interactive_divider' => 'ws_interactive_divider_enable',
      'qr_code' => 'ws_qr_code_enable',
      'motion_divider' => 'ws_motion_divider_enable',
      'tippy' => 'ws_tippy_enable',
      'glitchy' => 'ws_glitchy_enable',
      'notification' => 'ws_notification_enable',
      'toolteam' => 'ws_toolteam_enable',
      'back_to_top' => 'ws_back_to_top_enable',
      'scrollbar' => 'ws_scrollbar_enable',
      'smooth_scroll' => 'ws_smooth_scroll_enable',
      'progress_bar' => 'ws_progress_bar_enable',
      'progress_bar_v2' => 'ws_progress_bar_v2_enable',
      'sticky_footer' => 'ws_sticky_footer_enable',
      'expanders' => 'ws_expanders_enable',

      'codepen' => 'ws_codepen_enable',
      'sharer' => 'ws_sharer_enable',
      'lottie' => 'ws_lottie_enable',
      'spinner' => 'ws_spinner_enable',

      'click_and_copy' => 'ws_click_and_copy_enable', //elementor & gutenberg nestable
      'vertical_marquee' => 'ws_vertical_marquee_enable', //elementor & gutenberg nestable
      'distorsion_tabs' => 'ws_distorsion_tabs_enable', //elementor & gutenberg nestable
      'pixels_shimmer_card' => 'ws_pixels_shimmer_card_enable', //elementor & gutenberg nestable
      'ws_observer' => 'ws_observer_enable', //elementor & gutenberg nestable
      'tabs' => 'ws_tabs_enable', //elementor & gutenberg nestable
      'flipbox' => 'ws_flipbox_enable', //elementor & gutenberg nestable
      'horizontal_marquee' => 'ws_horizontal_marquee_enable', //elementor & gutenberg nestable
      'looping_tabs' => 'ws_looping_tabs_enable', //elementor & gutenberg nestable
      'inverted_corner' => 'ws_inverted_corner_enable', //elementor & gutenberg nestable
      'decode_card' => 'ws_decode_card_enable', //elementor & gutenberg nestable
    ];

    foreach ($enabledBlocks as $widget => $option) {
      if (get_option($option) == 'true') {
        //Register widget file
        require_once( WIDGETSSUPPLY_PLUGIN_DIR . 'widgets/' . $widget . '/' . $widget . '.php' );
        $class_name = 'Elementor_WS_' . $widget . '_Widget';
        $widgets_manager->register( new $class_name() );

        //Register widget CSS
        $css_file = WIDGETSSUPPLY_PLUGIN_DIR . 'widgets/' . $widget . '/' . $widget . '.css';
        if (file_exists($css_file)) {
          wp_register_style(
            'ws-' . $widget . '-style',
            plugins_url( 'widgets/' . $widget . '/' . $widget . '.css', __FILE__ )
          );
        }
        
        //Register widget JS
        $js_file = WIDGETSSUPPLY_PLUGIN_DIR . 'widgets/' . $widget . '/' . $widget . '.js';
        if (file_exists($js_file)) {
          // Special dependencies for scrollbar widget
          $dependencies = [ 'jquery' ];
          if ($widget === 'scrollbar') {
            $dependencies[] = 'ws-overlayscrollbars-script';
          }
          // Special dependencies for horizontal_marquee widget
          if ($widget === 'horizontal_marquee') {
            $dependencies[] = 'ws-reeller';
            $dependencies[] = 'ws-gsap';
            $dependencies[] = 'ws-gsap-scrolltrigger';
          }
          // Special dependencies for click_and_copy widget
          if ($widget === 'click_and_copy') {
            $dependencies[] = 'ws-popper-script';
            $dependencies[] = 'ws-tippy-library-script';
          }
          // Special dependencies for parallax_hover widget
          if ($widget === 'parallax_hover') {
            $dependencies[] = 'ws-atropos';
          }
          // Special dependencies for expanding_menu widget
          if ($widget === 'expanding_menu') {
            $dependencies[] = 'ws-gsap';
          }
          // Special dependencies for physics widget
          if ($widget === 'physics') {
            $dependencies[] = 'ws-matterjs-library';
            $dependencies[] = 'ws-gsap';
            $dependencies[] = 'ws-gsap-scrolltrigger';
          }
          // Special dependencies for looping_lines_v3 widget
          if ($widget === 'looping_lines_v3') {
            $dependencies[] = 'ws-gsap';
          }
          
          wp_register_script(
            'ws-' . $widget . '-script',
            plugins_url( 'widgets/' . $widget . '/' . $widget . '.js', __FILE__ ),
            $dependencies, // dependencies
            false,
            true // load in footer
          );
        }
        
        // Register additional init script for cursor widget
        if ($widget === 'cursor') {
          $init_file = WIDGETSSUPPLY_PLUGIN_DIR . 'widgets/cursor/cursor_init.js';
          if (file_exists($init_file)) {
            wp_register_script(
              'ws-cursor-init-script',
              plugins_url( 'widgets/cursor/cursor_init.js', __FILE__ ),
              [ 'jquery', 'ws-cursor-script', 'ws-mouse-follower-script' ],
              false,
              true
            );
          }
        }
      }
    }

    //Load global libraries
    wp_enqueue_script(
      'ws-gsap',
      plugins_url( 'libraries/ws_gsap.min.js', __FILE__ ),
      [],
      false,
      true
    );
    wp_enqueue_script(
      'ws-gsap-scrolltrigger',
      plugins_url( 'libraries/ws_scrolltrigger.min.js', __FILE__ ),
      [ 'ws-gsap' ],
      false,
      true
    );
    wp_enqueue_script(
      'ws-gsap-splittext',
      plugins_url( 'libraries/ws_splittext.min.js', __FILE__ ),
      [ 'ws-gsap' ],
      false,
      true
    );
    wp_enqueue_script(
      'ws-gsap-scrollto',
      plugins_url( 'libraries/ws_gsap_scroll_to.min.js', __FILE__ ),
      [ 'ws-gsap' ],
      false,
      true
    );
    
    // Register Lightgallery libraries (not enqueue, just register for dependencies)
    wp_register_script(
      'ws-lightgallery',
      plugins_url( 'libraries/lightgallery/lightgallery.min.js', __FILE__ ),
      [],
      false,
      true
    );
    wp_register_script(
      'ws-lightgallery-autoplay',
      plugins_url( 'libraries/lightgallery/lightgallery-autoplay.min.js', __FILE__ ),
      [ 'ws-lightgallery' ],
      false,
      true
    );
    wp_register_script(
      'ws-lightgallery-fullscreen',
      plugins_url( 'libraries/lightgallery/lightgallery-fullscreen.min.js', __FILE__ ),
      [ 'ws-lightgallery' ],
      false,
      true
    );
    wp_register_script(
      'ws-lightgallery-rotate',
      plugins_url( 'libraries/lightgallery/lightgallery-rotate.min.js', __FILE__ ),
      [ 'ws-lightgallery' ],
      false,
      true
    );
    wp_register_script(
      'ws-lightgallery-thumbnail',
      plugins_url( 'libraries/lightgallery/lightgallery-thumbnail.min.js', __FILE__ ),
      [ 'ws-lightgallery' ],
      false,
      true
    );
    wp_register_script(
      'ws-lightgallery-zoom',
      plugins_url( 'libraries/lightgallery/lightgallery-zoom.min.js', __FILE__ ),
      [ 'ws-lightgallery' ],
      false,
      true
    );

    //Register QR Code library for QR code widget
    wp_register_script(
      'ws-qr-code-library',
      'https://unpkg.com/@bitjson/qr-code@1.0.2/dist/qr-code.js',
      [],
      '1.0.2',
      true
    );
    
    // Register Mouse Follower library for cursor widget
    wp_register_script(
      'ws-mouse-follower-script',
      plugins_url( 'libraries/ws_mouse_follower.min.js', __FILE__ ),
      [ 'ws-gsap' ],
      false,
      true
    );
    
    // Register Howler.js library for audio player widget
    wp_register_script(
      'ws-howler-script',
      plugins_url( 'libraries/ws_howler.min.js', __FILE__ ),
      [],
      false,
      true
    );
    
    // Register Codepen library for codepen widget
    wp_register_script(
      'ws-codepen-library',
      plugins_url( 'libraries/ws_codepen.min.js', __FILE__ ),
      [],
      false,
      true
    );
    
    // Register Sharer library for sharer widget
    wp_register_script(
      'ws-sharer-library',
      plugins_url( 'libraries/ws_sharer.min.js', __FILE__ ),
      [],
      false,
      true
    );
    
    // Register Lottie libraries for lottie widget
    wp_register_script(
      'ws-lottie-player',
      plugins_url( 'libraries/ws_lottie-player.min.js', __FILE__ ),
      [],
      false,
      true
    );
    wp_register_script(
      'ws-lottie-interactivity',
      plugins_url( 'libraries/ws_lottie-interactivity.min.js', __FILE__ ),
      [],
      false,
      true
    );
    
    // Register Motion Path and Draw SVG plugins for spinner widget
    wp_register_script(
      'ws-motion-path-plugin',
      plugins_url( 'libraries/ws_motion_path_plugin.min.js', __FILE__ ),
      [ 'ws-gsap' ],
      false,
      true
    );
    wp_register_script(
      'ws-draw-svg-plugin',
      plugins_url( 'libraries/ws_draw_svg_plugin.min.js', __FILE__ ),
      [ 'ws-gsap' ],
      false,
      true
    );
    
    // Register PowerGlitch library for glitchy widget
    wp_register_script(
      'ws-powerglitch-library',
      plugins_url( 'libraries/ws_powerglitch.min.js', __FILE__ ),
      [],
      false,
      true
    );
    
    // Register Atropos libraries for parallax hover widget
    wp_register_style(
      'ws-atropos-style',
      plugins_url( 'libraries/ws_atropos.min.css', __FILE__ ),
      [],
      false
    );
    wp_register_script(
      'ws-atropos',
      plugins_url( 'libraries/ws_atropos.min.js', __FILE__ ),
      [],
      false,
      true
    );
    
    // Register Tippy libraries for tippy widget
    wp_register_script(
      'ws-popper-script',
      plugins_url( 'libraries/tippy/ws_popper.min.js', __FILE__ ),
      [],
      false,
      true
    );
    wp_register_script(
      'ws-tippy-library-script',
      plugins_url( 'libraries/tippy/ws_tippy.min.js', __FILE__ ),
      ['ws-popper-script'],
      false,
      true
    );
    
    // Register Tippy animation styles
    wp_register_style(
      'ws-tippy-scale-style',
      plugins_url( 'libraries/tippy/ws_scale.min.css', __FILE__ )
    );
    wp_register_style(
      'ws-tippy-shiftaway-style',
      plugins_url( 'libraries/tippy/ws_shiftaway.min.css', __FILE__ )
    );
    wp_register_style(
      'ws-tippy-shifttoward-style',
      plugins_url( 'libraries/tippy/ws_shifttoward.min.css', __FILE__ )
    );
    wp_register_style(
      'ws-tippy-perspective-style',
      plugins_url( 'libraries/tippy/ws_perspective.min.css', __FILE__ )
    );
    
    // Register OverlayScrollbars libraries for scrollbar widget
    wp_register_style(
      'ws-overlayscrollbars-style',
      plugins_url( 'libraries/ws_overlayscrollbars.min.css', __FILE__ )
    );
    wp_register_script(
      'ws-overlayscrollbars-script',
      plugins_url( 'libraries/ws_overlayscrollbars.min.js', __FILE__ ),
      [],
      false,
      true
    );
    
    // Register Lenis library for smooth scroll widget
    wp_register_script(
      'ws-lenis',
      plugins_url( 'libraries/ws_lenis.min.js', __FILE__ ),
      [],
      false,
      true
    );
    
    // Register GSAP ScrollSmoother for smooth scroll widget
    wp_register_script(
      'ws-gsap-scrollsmoother',
      plugins_url( 'libraries/ws_scroll_smoother.min.js', __FILE__ ),
      [ 'ws-gsap', 'ws-gsap-scrolltrigger' ],
      false,
      true
    );
    
    // Register GSAP as standalone for compatibility
    wp_register_script(
      'gsap',
      plugins_url( 'libraries/ws_gsap.min.js', __FILE__ ),
      [],
      false,
      true
    );
    
    // Register GSAP ScrollTrigger as standalone for compatibility
    wp_register_script(
      'gsap-scrolltrigger',
      plugins_url( 'libraries/ws_scrolltrigger.min.js', __FILE__ ),
      [ 'gsap' ],
      false,
      true
    );
    
    // Register GSAP ScrollTo as standalone for compatibility
    wp_register_script(
      'gsap-scrollto',
      plugins_url( 'libraries/ws_gsap_scroll_to.min.js', __FILE__ ),
      [ 'gsap' ],
      false,
      true
    );
    
    // Register Veloxi library for dock widget
    wp_register_script(
      'ws-veloxi',
      plugins_url( 'libraries/ws_veloxi.min.js', __FILE__ ),
      [],
      false,
      true
    );
    
    // Register Three.js library for gradiently widget
    wp_register_script(
      'ws-three',
      plugins_url( 'libraries/ws_three.min.js', __FILE__ ),
      [],
      false,
      true
    );
    
    // Register Gradiently library for gradiently widget
    wp_register_script(
      'ws-gradiently-library',
      plugins_url( 'libraries/ws_gradiently.min.js', __FILE__ ),
      [ 'ws-three' ],
      false,
      true
    );
    
    // Register Particles.js library for particles widget
    wp_register_script(
      'ws-particles-library',
      plugins_url( 'libraries/ws_particles_library.min.js', __FILE__ ),
      [],
      false,
      true
    );
    
    // Register Reeller library for marquee widgets
    wp_register_script(
      'ws-reeller',
      plugins_url( 'libraries/ws_reeller.min.js', __FILE__ ),
      [],
      false,
      true
    );
    
    // Register Matter.js library for physics widget
    wp_register_script(
      'ws-matterjs-library',
      plugins_url( 'libraries/ws_matterjs_library.min.js', __FILE__ ),
      [],
      false,
      true
    );
    
  }
}