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
);
}
}