PageSourceSearch

https://www.glenwoodsquare.net/wp-content/plugins/cubewp-framework…/frontend/js/cubewp-alerts.js?ver=1.1.30

js glenwoodsquare.net collected 2026-09-24 11:40:14 UTC 41,181 bytes, 958 lines download raw bytes

1jQuery(document).ready(function () {
2    jQuery(document).on("click", ".cwp-alert .cwp-alert-close", function () {
3        var $this = jQuery(this),
4            $parent = $this.closest('.cwp-alert');
5        $parent.slideUp(200, function () {
6            if ($parent.hasClass("cwp-js-alert")) {
7                $parent.hide();
8            } else {
9                $parent.remove();
10            }
11        });
12    });
13
14    jQuery(document).on('click', '.cubewp-modal-trigger', function (event) {
15        event.preventDefault();
16        var $this = jQuery(this),
17            target = jQuery($this.attr('data-cubewp-modal'));
18        if (target.length > 0) {
19            target.addClass('shown').fadeIn();
20        }
21    });
22    jQuery(document).on('click', '.cubewp-modal-close', function (event) {
23        event.preventDefault();
24        var $this = jQuery(this),
25            target = $this.closest('.cubewp-modal');
26        target.removeClass('shown').fadeOut();
27    });
28
29    var view_all_child_terms = jQuery('.cwp-taxonomy-term-child-terms-see-more');
30    if (view_all_child_terms.length > 0) {
31        view_all_child_terms.on('click', function (e) {
32            e.preventDefault();
33            var $this = jQuery(this),
34                more = $this.attr('data-more'),
35                less = $this.attr('data-less'),
36                all_child_terms = $this.closest('.cwp-taxonomy-term-child-terms').find('.cwp-taxonomy-term-child-terms-more');
37            if ($this.hasClass('cwp-viewing-less')) {
38                $this.text(more);
39                $this.removeClass('cwp-viewing-less');
40                all_child_terms.slideUp('hide');
41            } else {
42                $this.text(less);
43                $this.addClass('cwp-viewing-less');
44                all_child_terms.slideDown('show');
45            }
46        });
47    }
48
49});
50
51function cwp_notification_ui(notification_type, notification_content) {
52    var $cwp_alert = jQuery(".cwp-alert.cwp-js-alert"),
53        $alert_class = '',
54        $cwp_alert_content = $cwp_alert.find('.cwp-alert-content');
55    if ($cwp_alert.is(":visible") && $cwp_alert_content.html() === notification_content) {
56        return false;
57    }
58    if ($cwp_alert.is(":visible")) { 
59        $cwp_alert.slideUp(200, function () {
60            if ($cwp_alert.hasClass("cwp-js-alert")) {
61                $cwp_alert.hide();
62            } else {
63                $cwp_alert.remove();
64            }
65        });
66    }
67    if (notification_type === 'success') {
68        $alert_class = 'cwp-alert-success';
69    } else if (notification_type === 'warning') {
70        $alert_class = 'cwp-alert-warning';
71    } else if (notification_type === 'info') {
72        $alert_class = 'cwp-alert-info';
73    } else if (notification_type === 'error') {
74        $alert_class = 'cwp-alert-danger';
75    }
76    $cwp_alert.removeClass("cwp-alert-danger cwp-alert-success cwp-alert-warning cwp-alert-info").addClass($alert_class);
77    $cwp_alert.find('.cwp-alert-heading').text(notification_type + "!");
78    $cwp_alert_content.html(notification_content);
79     $cwp_alert.slideDown();
80    setTimeout(function () {
81        $cwp_alert.slideUp(200, function () {
82            if ($cwp_alert.hasClass("cwp-js-alert")) {
83                $cwp_alert.hide();
84            } else {
85                $cwp_alert.remove();
86            }
87        });
88    }, 3000);
89}
90
91jQuery(document).on('click', '.cwp-post-confirmation-wrap .cwp-confirmation-bottom-bar', function (e) {
92    jQuery('.cwp-post-confirmation').slideToggle(700);
93});
94jQuery(document).on('click', '.cwp-post-confirmation-wrap .cwp-confirmation-bottom-bar', function (e) {
95    jQuery('.cwp-post-confirmation').slideToggle(700);
96});
97jQuery(document).on('click', '.cwp-save-post', function (e) {
98    var thisObj = jQuery(this);
99    var pid = thisObj.data('pid');
100    thisObj.addClass('cubewp-active-ajax');
101    jQuery.ajax({
102        url: cwp_alert_ui_params.ajax_url,
103        type: 'POST',
104        data: 'action=cubewp_save_post&post-id=' + pid + '&nonce=' + cwp_alert_ui_params.nonce,
105        dataType: "json",
106        success: function (response) {
107            cwp_notification_ui(response.type, response.msg);
108            if (typeof response.text != 'undefined' && response.text != '') {
109                thisObj.addClass('cwp-saved-post');
110                thisObj.removeClass('cwp-save-post');
111                thisObj.find('.cwp-saved-text').html(response.text);
112                thisObj.removeClass('cubewp-active-ajax');
113            }
114        }
115    });
116});
117jQuery(document).on('click', '.cwp-saved-post', function (e) {
118    var thisObj = jQuery(this);
119    var pid = thisObj.data('pid');
120    var action = thisObj.data('action');
121    thisObj.addClass('cubewp-active-ajax');
122    jQuery.ajax({
123        url: cwp_alert_ui_params.ajax_url,
124        type: 'POST',
125        data: 'action=cubewp_remove_saved_posts&post-id=' + pid + '&nonce=' + cwp_alert_ui_params.nonce,
126        dataType: "json",
127        success: function (response) {
128            cwp_notification_ui(response.type, response.msg);
129            if (typeof response.text != 'undefined' && response.text != '') {
130                if (action == 'remove') {
131                    thisObj.closest('tr').remove();
132                }
133                thisObj.addClass('cwp-save-post');
134                thisObj.removeClass('cwp-saved-post');
135                thisObj.find('.cwp-saved-text').html(response.text);
136                thisObj.removeClass('cubewp-active-ajax');
137            }
138        }
139    });
140});
141
142/*-------- Mega Menu and Nav Menu --------*/
143// CubeWP Menus JS >>
144jQuery(document).ready(function ($) {
145    jQuery(document).on(
146        "click",
147        ".elementor-cubewp-menu-toggle__icon--open",
148        function () {
149            jQuery(this).next("svg").addClass("active");
150            jQuery(this).removeClass("active");
151            jQuery(this)
152                .closest(".elementor-cubewp-menu-toggle")
153                .next(".elementor-cubewp-nav-menu--dropdown")
154                .addClass("active");
155        }
156    );
157    jQuery(document).on(
158        "click",
159        ".elementor-cubewp-menu-toggle__icon--close",
160        function () {
161            jQuery(this).prev("svg").addClass("active");
162            jQuery(this).removeClass("active");
163            jQuery(this)
164                .closest(".elementor-cubewp-menu-toggle")
165                .next(".elementor-cubewp-nav-menu--dropdown")
166                .removeClass("active");
167        }
168    );
169    jQuery(document).on("click", ".cubwp-menu-desktop.mobile", function () {
170        jQuery(this)
171            .closest(".elementor-widget-container")
172            .find(".cubewp-offcanvas-menus")
173            .addClass("active");
174    });
175    jQuery(document).on("click", ".cubewp-menu-closed", function () {
176        jQuery(this)
177            .closest(".elementor-widget-container")
178            .find(".cubewp-offcanvas-menus")
179            .removeClass("active");
180    });
181
182    $(document).on("click", ".cubewp-mega-menu-item.hover", function (event) {
183        if ($(window).width() <= 1024) {
184            if (!$(event.target).closest(".cubewp-mega-menu-item-dropdown").length) {
185                $(this).toggleClass("active");
186                $(this).closest('.cubewp-mega-menu').toggleClass("active");
187            }
188        }
189    });
190    $(document).on("click", ".close-mega-menu-mobile", function (event) {
191        if ($(window).width() <= 1024) {
192            $('.cubewp-mega-menu-item , .cubewp-mega-menu').removeClass("active");
193        }
194    });
195    jQuery(document).ready(function ($) {
196        // Open the next slide when clicking the trigger
197        $(document).on("click", ".container-next-triger", function () {
198            $(this)
199                .closest(".elementor-element")
200                .next(".container-next-screen")
201                .addClass("active");
202        });
203        // Close the slide when clicking the back button
204        $(document).on("click", ".container-back-slide", function (e) {
205            if ($(window).width() <= 1024) {
206                e.preventDefault();
207                setTimeout(() => {
208                    if ($(this).closest(".container-next-screen").length > 0) {
209                        $(this).closest(".container-next-screen").removeClass("active");
210                    } else {
211                        $(this).closest(".cubewp-mega-menu").removeClass("active");
212                        $(this).closest(".cubewp-mega-menu-item").removeClass("active");
213                    }
214                }, 200);
215            }
216        });
217    });
218
219    // CubeWP Mega menus JS >>
220    jQuery(document).on(
221        "click",
222        ".cubewp-mega-menu .cubewp-mega-menu-item.click",
223        function () {
224            var getID = jQuery(this).data("showid");
225            jQuery(this)
226                .closest(".cubewp-mega-menu")
227                .find(".cubewp-mega-menu-item-dropdown")
228                .removeClass("active");
229            jQuery(this)
230                .closest(".cubewp-mega-menu")
231                .find(".cubewp-mega-menu-item-dropdown")
232                .removeClass("init");
233            jQuery(this)
234                .closest(".cubewp-mega-menu")
235                .find(".cubewp-mega-menu-item.click")
236                .removeClass("active");
237            jQuery("#" + getID).addClass("active");
238            jQuery(document.body).trigger("cubewp_mega_menu_item_loaded");
239            jQuery(this).addClass("active");
240            setTimeout(function () {
241                jQuery("#" + getID).addClass("init");
242            }, 500);
243        }
244    );
245
246    jQuery(document).on(
247        "click",
248        ".cubewp-mega-menu-mobile-button",
249        function () {
250            jQuery(this).next(".cubewp-mega-menu.cubwp-menu-desktop").slideToggle();
251            jQuery(this).toggleClass("active");
252        }
253    );
254
255    function adjustMegaMenuDropdown($this) {
256        var dropdown = $this.find(".cubewp-mega-menu-item-dropdown");
257        if (dropdown.length) {
258            var bodyWidth = jQuery("body").width(); // Get the full width of the body
259            var dropdownOffsetLeft = dropdown.offset().left; // Current left position of the dropdown
260            var bodyOffsetLeft = jQuery("body").offset().left; // Body's left position (should be 0)
261            var difference = dropdownOffsetLeft - bodyOffsetLeft;
262
263            // Adjust the dropdown's width and position to span the entire body width
264            dropdown.css({
265                "left": "-" + difference + "px",
266                "right": "auto",
267                "width": bodyWidth + "px"
268            });
269        }
270    }
271
272    jQuery(document).on("mouseenter", ".cubewp-mega-menu-item", function () {
273        var $this = jQuery(this);
274        adjustMegaMenuDropdown($this);
275    });
276
277    jQuery(document).on("mouseleave", ".cubewp-mega-menu-item", function () {
278        jQuery(this).find(".cubewp-mega-menu-item-dropdown").css({
279            "left": "unset",
280        });
281    });
282
283    setTimeout(function () {
284        if (jQuery(".elementor-cubewp-nav-menu__container").length > 0) {
285            var get_iconsInd = jQuery(".elementor-cubewp-nav-menu__container").data(
286                "icons"
287            );
288            if (typeof get_iconsInd === "string") {
289                get_iconsInd = get_iconsInd.trim().replace(/1$/, "");
290            }
291            jQuery(".elementor-cubewp-nav-menu__container")
292                .find(".menu-item-has-children>a")
293                .append(get_iconsInd);
294        }
295    }, 200);
296});
297
298/*------- CubeWP Post Slider ---------*/
299function initPostSlider($scope, clicked) {
300    var sliders = $scope.find('.cubewp-post-slider');
301    if (!sliders.length) return;
302    sliders.each(function () {
303        var sliderElement = jQuery(this);
304
305        if (sliderElement.hasClass('slick-initialized')) {
306            if (clicked == 'clicked') {
307                sliderElement.slick("unslick");
308                console.log('have slider');
309                sliderElement.addClass('sliderElement');
310            } else {
311                return;
312
313            }
314
315        }
316
317        var isPrevSvg = sliderElement.data('is-prev-svg');
318        var isNextSvg = sliderElement.data('is-next-svg');
319
320        var prevArrowHtml = isPrevSvg ? sliderElement.attr('data-prev-arrow-svg') : sliderElement.data('prev-arrow');
321
322        var nextArrowHtml = isNextSvg ? sliderElement.attr('data-next-arrow-svg') : sliderElement.data('next-arrow');
323
324        var enable_wrapper = sliderElement.data('enable-wrapper');
325        var slidesToShow = sliderElement.data('slides-to-show');
326        var slidesToScroll = sliderElement.data('slides-to-scroll');
327        var slidesToShowTablet = sliderElement.data('slides-to-show-tablet');
328        var slidesToShowTabletPortrait = sliderElement.data('slides-show-tablet-portrait');
329        var slidesToShowMobile = sliderElement.data('slides-to-show-mobile');
330        var slidesToScrollTablet = sliderElement.data('slides-to-scroll-tablet');
331        var slidesToScrollTabletPortrait = sliderElement.data('slides-scroll-tablet-portrait');
332        var slidesToScrollMobile = sliderElement.data('slides-to-scroll-mobile');
333        var autoplay = sliderElement.data('autoplay') === true || sliderElement.data('autoplay') === 'true';
334        var autoplaySpeed = sliderElement.data('autoplay-speed');
335        var Speed = sliderElement.data('speed');
336        var infinite = sliderElement.data('infinite') === true || sliderElement.data('infinite') === 'true';
337        var fade_effect = sliderElement.data('fade') === true || sliderElement.data('fade') === 'true';
338        var variableWidth = sliderElement.data('variable-width') === true || sliderElement.data('variable-width') === 'true';
339        var prevArrowButton, nextArrowButton;
340
341        if (isPrevSvg) {
342            prevArrowButton = '<button type="button" class="slick-prev">' + prevArrowHtml + '</button>';
343        } else {
344            prevArrowButton = '<button type="button" class="slick-prev"><i class="' + prevArrowHtml + '"></i></button>';
345        }
346
347        if (isNextSvg) {
348            nextArrowButton = '<button type="button" class="slick-next">' + nextArrowHtml + '</button>';
349        } else {
350            nextArrowButton = '<button type="button" class="slick-next"><i class="' + nextArrowHtml + '"></i></button>';
351        }
352        var CustomArrows = sliderElement.data('custom-arrows') === true || sliderElement.data('custom-arrows') === 'true';
353        var CustomDots = sliderElement.data('custom-dots') === true || sliderElement.data('custom-dots') === 'true';
354        var enableProgressBar = sliderElement.data('enable-progress-bar') === true || sliderElement.data('enable-progress-bar') === 'true';
355        if(jQuery('body').hasClass('rtl')){
356            var rtl = true;
357        } else {
358            var rtl = false;
359        }
360        sliderElement.slick({
361            slidesToShow: slidesToShow,
362            slidesToScroll: slidesToScroll,
363            autoplay: autoplay,
364            autoplaySpeed: autoplaySpeed,
365            speed: Speed,
366            infinite: infinite,
367            fade: fade_effect,
368            variableWidth: variableWidth,
369            prevArrow: prevArrowButton,
370            nextArrow: nextArrowButton,
371            rtl: rtl,
372            arrows: CustomArrows,
373            dots: CustomDots,
374            responsive: [{
375                    breakpoint: 1025,
376                    settings: {
377                        slidesToShow: slidesToShowTablet,
378                        slidesToScroll: slidesToScrollTablet
379                    }
380                },
381                {
382                    breakpoint: 768,
383                    settings: {
384                        slidesToShow: slidesToShowTabletPortrait,
385                        slidesToScroll: slidesToScrollTabletPortrait
386                    }
387                },
388                {
389                    breakpoint: 481,
390                    settings: {
391                        slidesToShow: slidesToShowMobile,
392                        slidesToScroll: slidesToScrollMobile
393                    }
394                }
395            ]
396        });
397
398        if (enableProgressBar == true) {
399            if (!sliderElement.next('.slick-progress').length) {
400                sliderElement.after(
401                    '<div class="slick-progress"><div class="slick-progress-bar"></div></div>'
402                );
403                var totalSlides = sliderElement.slick("getSlick").slideCount;
404                sliderElement.on("afterChange", function (event, slick, currentSlide) {
405                    var progress = ((currentSlide + 1) / totalSlides) * 100;
406                    sliderElement.next('.slick-progress').find('.slick-progress-bar').css("width", progress + "%");
407                });
408            }
409        }
410        if (enable_wrapper == true) {
411            sliderElement.append('<div class="slick-arrows-wrapper"></div>');
412            sliderElement.find(".slick-prev").appendTo(sliderElement.find(".slick-arrows-wrapper"));
413            sliderElement.find(".slick-dots").appendTo(sliderElement.find(".slick-arrows-wrapper"));
414            sliderElement.find(".slick-next").appendTo(sliderElement.find(".slick-arrows-wrapper"));
415        }
416    });
417    if (clicked == 'clicked') {
418        jQuery(document).trigger("post_slider_initialized", [$scope]);
419    }
420}
421(function ($) {
422    // Expose initPostSlider to a global object if needed outside Elementor's scope
423    if (typeof window.CubeWp === 'undefined') {
424        window.CubeWp = {};
425    }
426    window.CubeWp.initPostSlider = initPostSlider;
427
428    // Hook for Elementor frontend and editor
429    jQuery(window).on('elementor/frontend/init', function () {
430        elementorFrontend.hooks.addAction('frontend/element_ready/cubewp_posts.default', initPostSlider);
431    });
432})(jQuery);
433
434var CubeWpShortcodePostsAjax = {
435    loadPosts: function (containerSelector) {
436        var $container = jQuery(containerSelector);
437        var parameters = $container.data('parameters');
438        if (parameters) {
439            jQuery.ajax({
440                url: cwp_alert_ui_params.ajax_url,
441                type: 'POST',
442                data: {
443                    action: 'cubewp_posts_output',
444                    ...parameters,
445                    load_via_ajax: 'yes'
446                },
447                success: function (response) {
448                    if (response.success) {
449                        $container.replaceWith(response.data.content);
450                        initPostSlider(jQuery(document.body));
451                        jQuery(document.body).trigger('cubewp_posts_loaded');
452                    } else {
453                        $container.html('<div class="cubewp-error-card">Error loading posts.</div>');
454                    }
455                },
456                error: function () {
457                    $container.html('<div class="cubewp-error-card">Failed to load posts.</div>');
458                }
459            });
460        }
461    }
462};
463jQuery(document).on("click", ".vpack-nested-tabs  .e-n-tab-title", function () {
464    var $dataid = jQuery(this).attr('aria-controls');
465    var $sliderContainer = jQuery(this).closest('.elementor-element').find('#' + $dataid);
466    var clicked = 'clicked';
467    if (jQuery(this).hasClass('init-clicked')) {
468        return false;
469    }
470    initPostSlider($sliderContainer, clicked);
471    jQuery(this).addClass('init-clicked');
472});
473
474/* CubeWP Term Slider */
475function initTermSlider($scope, clicked) {
476    var sliders = $scope.find('.cubewp-term-slider');
477    if (!sliders.length) return;
478    sliders.each(function () {
479        var sliderElement = jQuery(this);
480
481        if (sliderElement.hasClass('slick-initialized')) {
482            if (clicked == 'clicked') {
483                sliderElement.slick("unslick");
484                console.log('have slider');
485                sliderElement.addClass('sliderElement');
486            } else {
487                return;
488
489            }
490
491        }
492
493        var sliderDeviceOption = sliderElement.data('slider-device-option');
494
495        var isPrevSvg = sliderElement.data('is-prev-svg');
496        var isNextSvg = sliderElement.data('is-next-svg');
497
498        var prevArrowHtml = isPrevSvg ? sliderElement.attr('data-prev-arrow-svg') : sliderElement.data('prev-arrow');
499
500        var nextArrowHtml = isNextSvg ? sliderElement.attr('data-next-arrow-svg') : sliderElement.data('next-arrow');
501
502        var enable_wrapper = sliderElement.data('enable-wrapper');
503        var slidesToShow = sliderElement.data('slides-to-show');
504        var slidesToScroll = sliderElement.data('slides-to-scroll');
505        var slidesToShowTablet = sliderElement.data('slides-to-show-tablet');
506        var slidesToShowTabletPortrait = sliderElement.data('slides-show-tablet-portrait');
507        var slidesToShowMobile = sliderElement.data('slides-to-show-mobile');
508        var slidesToScrollTablet = sliderElement.data('slides-to-scroll-tablet');
509        var slidesToScrollTabletPortrait = sliderElement.data('slides-scroll-tablet-portrait');
510        var slidesToScrollMobile = sliderElement.data('slides-to-scroll-mobile');
511        var autoplay = sliderElement.data('autoplay') === true || sliderElement.data('autoplay') === 'true';
512        var autoplaySpeed = sliderElement.data('autoplay-speed');
513        var Speed = sliderElement.data('speed');
514        var infinite = sliderElement.data('infinite') === true || sliderElement.data('infinite') === 'true';
515        var fade_effect = sliderElement.data('fade') === true || sliderElement.data('fade') === 'true';
516        var variableWidth = sliderElement.data('variable-width') === true || sliderElement.data('variable-width') === 'true';
517        var draggable = sliderElement.data('draggable') === true || sliderElement.data('draggable') === 'true';
518        var prevArrowButton, nextArrowButton;
519
520        if (isPrevSvg) {
521            prevArrowButton = '<button type="button" class="slick-prev">' + prevArrowHtml + '</button>';
522        } else {
523            prevArrowButton = '<button type="button" class="slick-prev"><i class="' + prevArrowHtml + '"></i></button>';
524        }
525
526        if (isNextSvg) {
527            nextArrowButton = '<button type="button" class="slick-next">' + nextArrowHtml + '</button>';
528        } else {
529            nextArrowButton = '<button type="button" class="slick-next"><i class="' + nextArrowHtml + '"></i></button>';
530        }
531        var CustomArrows = sliderElement.data('custom-arrows') === true || sliderElement.data('custom-arrows') === 'true';
532        var CustomDots = sliderElement.data('custom-dots') === true || sliderElement.data('custom-dots') === 'true';
533        var enableProgressBar = sliderElement.data('enable-progress-bar') === true || sliderElement.data('enable-progress-bar') === 'true';
534
535        // Use real viewport width (jQuery width can be misleading on some mobiles)
536        var viewportWidth = (typeof window !== 'undefined' && window.innerWidth) ? window.innerWidth : $(window).width();
537        var isMobileViewport = (typeof window !== 'undefined' && window.matchMedia) ? window.matchMedia('(max-width: 767px)').matches : (viewportWidth <= 767);
538
539        // If slider is configured as mobile-only, do not initialize it on larger viewports
540        if (sliderDeviceOption === "mobile_only" && !isMobileViewport) {
541            return;
542        }
543
544        if (sliderDeviceOption === "mobile_only" && isMobileViewport) {
545            sliderElement.slick({
546                slidesToShow: slidesToShowMobile,
547                slidesToScroll: slidesToScrollMobile,
548                autoplay: autoplay,
549                autoplaySpeed: autoplaySpeed,
550                speed: Speed,
551                infinite: infinite,
552                fade: fade_effect,
553                variableWidth: variableWidth,
554                prevArrow: prevArrowButton,
555                nextArrow: nextArrowButton,
556                arrows: CustomArrows,
557                dots: CustomDots,
558                draggable: draggable,
559            });
560          }else{
561            sliderElement.slick({
562                slidesToShow: slidesToShow,
563                slidesToScroll: slidesToScroll,
564                autoplay: autoplay,
565                autoplaySpeed: autoplaySpeed,
566                speed: Speed,
567                infinite: infinite,
568                fade: fade_effect,
569                variableWidth: variableWidth,
570                prevArrow: prevArrowButton,
571                nextArrow: nextArrowButton,
572                arrows: CustomArrows,
573                dots: CustomDots,
574                draggable: draggable,
575                responsive: [{
576                        breakpoint: 1025,
577                        settings: {
578                            slidesToShow: slidesToShowTablet,
579                            slidesToScroll: slidesToScrollTablet
580                        }
581                    },
582                    {
583                        breakpoint: 768,
584                        settings: {
585                            slidesToShow: slidesToShowTabletPortrait,
586                            slidesToScroll: slidesToScrollTabletPortrait
587                        }
588                    },
589                    {
590                        breakpoint: 481,
591                        settings: {
592                            slidesToShow: slidesToShowMobile,
593                            slidesToScroll: slidesToScrollMobile
594                        }
595                    }
596                ]
597            });
598          }
599        
600
601        if (enableProgressBar == true) {
602            if (!sliderElement.next('.slick-progress').length) {
603                sliderElement.after(
604                    '<div class="slick-progress"><div class="slick-progress-bar"></div></div>'
605                );
606                var totalSlides = sliderElement.slick("getSlick").slideCount;
607                sliderElement.on("afterChange", function (event, slick, currentSlide) {
608                    var progress = ((currentSlide + 1) / totalSlides) * 100;
609                    sliderElement.next('.slick-progress').find('.slick-progress-bar').css("width", progress + "%");
610                });
611            }
612        }
613        if (enable_wrapper == true) {
614            sliderElement.append('<div class="slick-arrows-wrapper"></div>');
615            sliderElement.find(".slick-prev").appendTo(sliderElement.find(".slick-arrows-wrapper"));
616            sliderElement.find(".slick-dots").appendTo(sliderElement.find(".slick-arrows-wrapper"));
617            sliderElement.find(".slick-next").appendTo(sliderElement.find(".slick-arrows-wrapper"));
618        }
619    });
620    if (clicked == 'clicked') {
621        jQuery(document).trigger("term_slider_initialized", [$scope]);
622    }
623}
624(function ($) {
625    // Expose initTermSlider to a global object if needed outside Elementor's scope
626    if (typeof window.CubeWp === 'undefined') {
627        window.CubeWp = {};
628    }
629    window.CubeWp.initTermSlider = initTermSlider;
630
631    // Hook for Elementor frontend and editor
632    jQuery(window).on('elementor/frontend/init', function () {
633        elementorFrontend.hooks.addAction('frontend/element_ready/cubewp_taxonomy.default', initTermSlider);
634    });
635
636    // Initialize on document ready for frontend (non-Elementor contexts)
637    jQuery(document).ready(function () {
638        initTermSlider(jQuery(document.body));
639    });
640
641    /* CubeWP Post Cards Hover Effects */
642    window.addEventListener('elementor/frontend/init', () => {
643
644        class CubewpHoverHandler extends elementorModules.frontend.handlers.Base {
645
646            onInit() {
647                this.applyHoverStyles();
648            }
649
650            onElementChange(settingName) {
651                const hoverSettings = [
652                    'cwp_hover_animation_direction',
653                    'cwp_hover_translate_distance',
654                    'cwp_hover_transition_duration'
655                ];
656                if (hoverSettings.includes(settingName)) {
657                    this.applyHoverStyles();
658                }
659            }
660
661            applyHoverStyles() {
662                const settings = this.getElementSettings();
663                const direction = settings.cwp_hover_animation_direction || 'none';
664                const visiblity = settings.cwp_hover_visibility || 'default';
665
666                const $el = this.$element;
667                const elementId = this.getID();
668                const $card = $el.closest('.cwp-elementor-post-card, .cwp-elementor-term-card');
669
670                if (!$card.length) return;
671
672                // Remove previous bindings for this specific element only
673                $card.off(`.cubewpHover_${elementId}`);
674
675                if (direction === 'none') {
676                    $el.css({
677                        'transform': '',
678                        'opacity': '',
679                        'transition': ''
680                    });
681                    if (visiblity === 'show') {
682                        $card.on(`mouseenter.cubewpHover_${elementId}`, () => {
683                            $el.css({
684                                'display': 'flex',
685                            });
686                        });
687                        // Hover Out
688                        $card.on(`mouseleave.cubewpHover_${elementId}`, () => {
689                            $el.css({
690                                'display': 'none',
691                            });
692                        });
693                    } else if (visiblity === 'hide') {
694                        $card.on(`mouseenter.cubewpHover_${elementId}`, () => {
695                            $el.css({
696                                'display': 'none',
697                            });
698                        });
699                        // Hover Out
700                        $card.on(`mouseleave.cubewpHover_${elementId}`, () => {
701                            $el.css({
702                                'display': 'flex',
703                            });
704                        });
705                    }
706                    return;
707                }
708
709                const distance = settings.cwp_hover_translate_distance ?.size || 30;
710                const duration = settings.cwp_hover_transition_duration ?.size || 0.3;
711
712                let transform = '';
713                let opacity = '1';
714
715                switch (direction) {
716                    case 'top':
717                        transform = `translateY(-${distance}px)`;
718                        break;
719                    case 'bottom':
720                        transform = `translateY(${distance}px)`;
721                        break;
722                    case 'left':
723                        transform = `translateX(-${distance}px)`;
724                        break;
725                    case 'right':
726                        transform = `translateX(${distance}px)`;
727                        break;
728                    case 'fade':
729                        opacity = '0';
730                        break;
731                    case 'fadeout':
732                        opacity = '1';
733                        break;
734                }
735
736                // Apply base styles
737                $el.css({
738                    'transition': `all ${duration}s ease`,
739                    'transform': transform,
740                    'opacity': opacity
741                });
742
743                // Hover In (applies only for this element)
744                $card.on(`mouseenter.cubewpHover_${elementId}`, () => {
745                    if (direction === 'fadeout') {
746                        // Fade OUT on hover
747                        $el.css({
748                            'opacity': '0',
749                            'transform': 'none',
750                        });
751                    } else {
752                        // All other animations fade/slide IN
753                        $el.css({
754                            'transform': 'none',
755                            'opacity': '1'
756                        });
757                    }
758                });
759
760                // Hover Out
761                $card.on(`mouseleave.cubewpHover_${elementId}`, () => {
762                    if (direction === 'fadeout') {
763                        // Restore visibility when mouse leaves
764                        $el.css({
765                            'opacity': '1',
766                            'transform': transform,
767                        });
768                    } else {
769                        // Return to default (hidden or translated)
770                        $el.css({
771                            'transform': transform,
772                            'opacity': opacity
773                        });
774                    }
775                });
776            }
777        }
778
779        // Apply to container, button, and icon widgets
780        ['container', 'button.default', 'icon.default'].forEach(widget => {
781            elementorFrontend.hooks.addAction(`frontend/element_ready/${widget}`, ($scope) => {
782                elementorFrontend.elementsHandler.addHandler(CubewpHoverHandler, {
783                    $element: $scope
784                });
785            });
786        });
787    });
788
789    window.addEventListener('elementor/frontend/init', () => {
790        elementorFrontend.hooks.addAction('frontend/element_ready/container', function ($scope) {
791            if (elementorFrontend.isEditMode()) {
792                class ContainerHandler extends elementorModules.frontend.handlers.Base {
793                    onInit() {
794                        super.onInit();
795                        const settings = this.getElementSettings();
796                        const cwp_click_enable = settings.cwp_click_enable; 
797                        const cwp_click_apply = settings.cwp_click_apply; 
798                        if (cwp_click_enable == 'yes' && cwp_click_apply == 'custom') { 
799                                $scope.css('display', 'none');
800                            }else{ 
801                                $scope.css('display', '');
802                            }
803                        }
804                    
805                    onElementChange(settingName) {
806                        super.onElementChange?.apply(this, arguments);
807                        const sliderSettings = [
808                            'cwp_click_enable' , 'cwp_click_apply'
809                          ];
810
811                        if (sliderSettings.includes(settingName)) {
812                            this.onInit();
813                        }
814                    }
815                }
816                elementorFrontend.elementsHandler.addHandler(ContainerHandler, {
817                    $element: $scope
818                });
819            }
820        });
821    });
822
823    jQuery(document).ready(function ($) {
824        function cwpRefreshMapsInCard($card) {
825            if (typeof VP_Refresh_Or_Init_Single_Map !== 'function') {
826                return;
827            }
828            setTimeout(function () {
829                $card.find('.vp-cubewp-map-container').each(function () {
830                    VP_Refresh_Or_Init_Single_Map($(this));
831                });
832            }, 100);
833        }
834
835        jQuery(document).on('click', '.cwp-elementor-post-card, .cwp-elementor-term-card', function (event) {
836            var $card = $(this);
837            $card.find('.cwp-click-element[data-cwp-click-enabled="true"]').each(function () {
838                const clickable = $(this);
839                const targetMode = clickable.data('cwp-target-mode');
840                const applyCss = clickable.data('cwp-apply-css');
841                if (targetMode === 'parent' && applyCss) {
842                    clickable.attr('style', function (i, oldStyle) {
843                        return (oldStyle ? oldStyle + '; ' : '') + applyCss;
844                    });
845                }
846            });
847            cwpRefreshMapsInCard($card);
848        });
849
850        jQuery(document).on('click', '.cwp-click-element[data-cwp-click-enabled="true"]', function (event) {
851            const clickable = $(this);
852            const targetMode = clickable.data('cwp-target-mode');
853            const applyCss = clickable.data('cwp-apply-css');
854            if (targetMode === 'current' && applyCss) {
855                clickable.attr('style', function (i, oldStyle) {
856                    return (oldStyle ? oldStyle + '; ' : '') + applyCss;
857                });
858            }
859            cwpRefreshMapsInCard(clickable.closest('.cwp-elementor-post-card, .cwp-elementor-term-card'));
860        });
861
862        jQuery(document).on('click', '.cwp-click-element[data-cwp-click-enabled="true"]', function (event) {
863            const clickable = $(this);
864            const targetMode = clickable.data('cwp-target-class');
865
866
867            var $this_data = $('.cwp-click-element[data-cwp-apply-class="' + targetMode + '"]');
868            var $this_data_remove = $('.cwp-click-element[data-cwp-remove-class="' + targetMode + '"]');
869            if ($this_data.length > 0) {
870                const targetModes = $this_data.data('cwp-target-mode');
871                const dataID = $this_data.data('id');
872                const applyClass = $this_data.data('cwp-apply-class');
873                const applyCss = $this_data.data('cwp-apply-css');
874                if (targetModes === 'custom' && applyClass) {
875                    const card = $(this).closest('.cwp-elementor-post-card, .cwp-elementor-term-card');
876                    const element = card.find('.cwp-click-element[data-id="' + dataID + '"]');
877                    element.removeAttr('style');
878                    element.attr('style', applyCss);
879                    element.find('.vp-cubewp-map-container').addBack('.vp-cubewp-map-container').each(function () {
880                        if (typeof VP_Refresh_Or_Init_Single_Map === 'function') {
881                            VP_Refresh_Or_Init_Single_Map($(this));
882                        } else if (typeof VP_Init_Single_Map === 'function') {
883                            VP_Init_Single_Map($(this));
884                        }
885                    });
886                }
887            }
888            if ($this_data_remove.length > 0) {
889                const targetModes = $this_data_remove.data('cwp-target-mode');
890                const dataID = $this_data_remove.data('id');
891                const removeClass = $this_data_remove.data('cwp-remove-class');
892                const removeCss = $this_data_remove.data('cwp-remove-css');
893                if (targetModes === 'custom' && removeClass && $this_data_remove.length > 0) {
894                    const card = $(this).closest('.cwp-elementor-post-card, .cwp-elementor-term-card');
895                    const element = card.find('.cwp-click-element[data-id="' + dataID + '"]');
896                    element.removeAttr('style');
897                    element.attr('style', removeCss);
898                    element.find('.vp-cubewp-map-container').addBack('.vp-cubewp-map-container').each(function () {
899                        if (typeof VP_Refresh_Or_Init_Single_Map === 'function') {
900                            VP_Refresh_Or_Init_Single_Map($(this));
901                        } else if (typeof VP_Init_Single_Map === 'function') {
902                            VP_Init_Single_Map($(this));
903                        }
904                    });
905                }
906            }
907        })
908    });
909
910    //Grid/List Switcher
911    jQuery(document).on('click', '.cubewp-view-btn', function (e) {
912        e.preventDefault();
913
914        var $btn = jQuery(this);
915        var view = $btn.data('view');
916        var $wrapper = $btn.closest('.cubewp-view-switcher');
917
918        // Active button
919        $wrapper.find('.cubewp-view-btn').removeClass('active');
920        $btn.addClass('active');
921
922        // Apply view class to archive container
923        var $archive = jQuery('.cwp-search-result-output .cwp-grids-container');
924        $archive.removeClass('grid-view list-view').addClass(view + '-view ');
925        if (view === 'list') {
926            cwp_setCookie("cwp_archive_switcher", 'list-view', 30);
927        } else if (view === 'grid') {
928            cwp_setCookie("cwp_archive_switcher", 'grid-view', 30);
929        }
930    });
931    if (jQuery('.cubewp-view-btn.active').length > 0) {
932        if (typeof cwp_search_filters_ajax_content === 'function') {
933            var $btn = jQuery('.cubewp-view-btn.active');
934            var view = $btn.data('view');
935            // Apply view class to archive container
936            var $archive = jQuery('.cwp-search-result-output .cwp-grids-container');
937            $archive.removeClass('grid-view list-view').addClass(view + '-view ');
938            if (view === 'list') {
939                cwp_setCookie("cwp_archive_switcher", 'list-view', 30);
940            } else if (view === 'grid') {
941                cwp_setCookie("cwp_archive_switcher", 'grid-view', 30);
942            }
943        }
944    }
945    if (jQuery('.cwp-search-result-output .cwp-grids-container').length > 0) {
946        if (typeof cwp_search_filters_ajax_content === 'function') {
947            var $btn = jQuery('.cubewp-view-switcher');
948            if(!$btn.length > 0){
949                jQuery('.cwp-search-result-output .cwp-grids-container').removeClass('grid-view list-view').addClass('grid-view');
950            } 
951        }else{
952            var $btn = jQuery('.cubewp-view-switcher');
953            if(!$btn.length > 0){
954                jQuery('.cwp-search-result-output .cwp-grids-container').removeClass('grid-view list-view').addClass('grid-view');
955            }   
956        }
957    }
958})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.