PageSourceSearch

https://www.ceedia.org/en/wp-content/plugins/master-addons-pro/assets/js/master-addons-scripts.js?ver=1.5.3

js ceedia.org collected 2026-10-08 00:11:17 UTC 114,173 bytes, 2,507 lines download raw bytes

1/*
2* Frontend Script for Elementor
3*/
4; (function ($) {
5    "use strict";
6
7    var editMode = false;
8    var isRellax = false;
9    var currentDevice = '';
10
11
12    var animatedProgressbar = function (id, type, value, strokeColor, trailColor, strokeWidth, strokeTrailWidth) {
13        var triggerClass = '.ma-el-progress-bar-' + id;
14        if ("line" == type) {
15            new ldBar(triggerClass, {
16                "type": 'stroke',
17                "path": 'M0 10L100 10',
18                "aspect-ratio": 'none',
19                "stroke": strokeColor,
20                "stroke-trail": trailColor,
21                "stroke-width": strokeWidth,
22                "stroke-trail-width": strokeTrailWidth
23            }).set(value);
24        }
25        if ("line-bubble" == type) {
26            new ldBar(triggerClass, {
27                "type": 'stroke',
28                "path": 'M0 10L100 10',
29                "aspect-ratio": 'none',
30                "stroke": strokeColor,
31                "stroke-trail": trailColor,
32                "stroke-width": strokeWidth,
33                "stroke-trail-width": strokeTrailWidth
34            }).set(value);
35            $($('.ma-el-progress-bar-' + id).find('.ldBar-label')).animate({
36                left: value + '%'
37            }, 1000, 'swing');
38        }
39        if ("circle" == type) {
40            new ldBar(triggerClass, {
41                "type": 'stroke',
42                "path": 'M50 10A40 40 0 0 1 50 90A40 40 0 0 1 50 10',
43                "stroke-dir": 'normal',
44                "stroke": strokeColor,
45                "stroke-trail": trailColor,
46                "stroke-width": strokeWidth,
47                "stroke-trail-width": strokeTrailWidth,
48            }).set(value);
49        }
50        if ("fan" == type) {
51            new ldBar(triggerClass, {
52                "type": 'stroke',
53                "path": 'M10 90A40 40 0 0 1 90 90',
54                "stroke": strokeColor,
55                "stroke-trail": trailColor,
56                "stroke-width": strokeWidth,
57                "stroke-trail-width": strokeTrailWidth,
58            }).set(value);
59        }
60    };
61
62
63    var getElementSettings = function ($element, setting) {
64
65        var elementSettings = {},
66            modelCID = $element.data('model-cid');
67
68        if (elementorFrontend.isEditMode() && modelCID) {
69            var settings = elementorFrontend.config.elements.data[modelCID],
70                type = settings.attributes.widgetType || settings.attributes.elType,
71                settingsKeys = elementorFrontend.config.elements.keys[type];
72
73            if (!settingsKeys) {
74                settingsKeys = elementorFrontend.config.elements.keys[type] = [];
75
76                jQuery.each(settings.controls, function (name, control) {
77                    if (control.frontend_available) {
78                        settingsKeys.push(name);
79                    }
80                });
81            }
82
83            jQuery.each(settings.getActiveControls(), function (controlKey) {
84                if (-1 !== settingsKeys.indexOf(controlKey)) {
85                    elementSettings[controlKey] = settings.attributes[controlKey];
86                }
87            });
88        } else {
89            elementSettings = $element.data('settings') || {};
90        }
91
92        return getItems(elementSettings, setting);
93
94    };
95
96    var getItems = function (items, itemKey) {
97        if (itemKey) {
98            var keyStack = itemKey.split('.'),
99                currentKey = keyStack.splice(0, 1);
100
101            if (!keyStack.length) {
102                return items[currentKey];
103            }
104
105            if (!items[currentKey]) {
106                return;
107            }
108
109            return this.getItems(items[currentKey], keyStack.join('.'));
110        }
111
112        return items;
113    };
114
115
116
117    var Master_Addons = {
118
119        //
120        //         try {
121        //         (function($) {
122        //
123        //         })(jQuery);
124        // } catch(e) {
125        //         //We can also throw from try block and catch it here
126        //         // No Error Show
127        //     }
128        //
129        // Master Addons: Headlines
130
131        MA_Animated_Headlines: function ($scope, $) {
132            try {
133                (function ($) {
134
135                    Master_Addons.MA_Animated_Headlines.elementSettings    = getElementSettings( $scope );
136
137
138                    /*----------- Animated Headlines --------------*/
139                    //set animation timing
140                    var $animatedHeaderContainer     = $scope.find('.ma-el-animated-headline').eq(0),
141
142                        animationDelay = 2500,
143
144                        //loading bar effect
145                        barAnimationDelay = 3800,
146                        barWaiting = barAnimationDelay - 3000, //3000 is the duration of the transition on the loading bar - set in the scss/css file
147                        
148                        //letters effect
149                        lettersDelay = 50,
150
151                        //type effect
152                        typeLettersDelay = 150,
153                        selectionDuration = 500,
154                        typeAnimationDelay = selectionDuration + 800,
155                        
156                        //clip effect
157                        revealDuration = 600,
158                        revealAnimationDelay = 1500;
159
160                    Master_Addons.MA_Animated_Headlines.singleLetters = function($words) {
161                        $words.each(function(){
162                            var word = $(this),
163                                letters = word.text().trim().split(''),
164                                selected = word.hasClass('is-visible');
165
166                            for( var i=0; i<letters.length; i++){
167                                if(word.parents('.rotate-2').length > 0){ letters[i] = '<em>' + letters[i] + '</em>'; }
168                                letters[i] = (selected) ? '<i class="in">' + letters[i] + '</i>': '<i>' + letters[i] + '</i>';
169                            }
170                            var newLetters = letters.join('');
171                            word.html(newLetters).css('opacity', 1);
172                        });
173                    }
174
175                    // function animateHeadline($headlines) {
176                    Master_Addons.MA_Animated_Headlines.animateHeadline = function($headlines) {
177                        
178                        var duration = animationDelay;
179
180                        $headlines.each(function(){
181                            var headline = $(this);
182
183                            if(headline.hasClass('loading-bar')) {
184                                duration = barAnimationDelay;
185                                setTimeout(function(){ headline.find('.ma-el-words-wrapper').addClass('is-loading') }, barWaiting);
186                            } else if (headline.hasClass('clip')){
187                                var spanWrapper = headline.find('.ma-el-words-wrapper'),
188                                    newWidth = spanWrapper.width() + 10
189                                spanWrapper.css('width', newWidth);
190                            } else if (!headline.hasClass('type') ) {
191                                //assign to .ma-el-words-wrapper the width of its longest word
192                                var words = headline.find('.ma-el-words-wrapper b'),
193                                    width = 0;
194
195                                words.each(function(){
196                                    var wordWidth = $(this).width();
197                                    if (wordWidth > width) width = wordWidth;
198                                });
199                                headline.find('.ma-el-words-wrapper').css('width', width);
200                            };
201
202                            //trigger animation
203                            setTimeout(function(){ Master_Addons.MA_Animated_Headlines.hideWord( headline.find('.is-visible').eq(0) ) }, duration);
204                        });
205                    }
206
207
208                    Master_Addons.MA_Animated_Headlines.hideWord = function($word) {
209
210                        var nextWord = Master_Addons.MA_Animated_Headlines.takeNext($word);
211
212                        if($word.parents('.ma-el-animated-headline').hasClass('type')) {
213                            var parentSpan = $word.parent('.ma-el-words-wrapper');
214                            parentSpan.addClass('selected').removeClass('waiting');
215                            setTimeout(function(){
216                                parentSpan.removeClass('selected');
217                                $word.removeClass('is-visible').addClass('is-hidden').children('i').removeClass('in').addClass('out');
218                            }, selectionDuration);
219                            setTimeout(function(){ Master_Addons.MA_Animated_Headlines.showWord(nextWord, typeLettersDelay) }, typeAnimationDelay);
220
221                        } else if($word.parents('.ma-el-animated-headline').hasClass('letters')) {
222                            var bool = ($word.children('i').length >= nextWord.children('i').length) ? true : false;
223                            Master_Addons.MA_Animated_Headlines.hideLetter($word.find('i').eq(0), $word, bool, lettersDelay);
224                            Master_Addons.MA_Animated_Headlines.showLetter(nextWord.find('i').eq(0), nextWord, bool, lettersDelay);
225
226                        }  else if($word.parents('.ma-el-animated-headline').hasClass('clip')) {
227                            $word.parents('.ma-el-words-wrapper').animate({ width : '2px' }, revealDuration, function(){
228                                Master_Addons.MA_Animated_Headlines.switchWord($word, nextWord);
229                                Master_Addons.MA_Animated_Headlines.showWord(nextWord);
230                            });
231
232                        } else if ($word.parents('.ma-el-animated-headline').hasClass('loading-bar')){
233                            $word.parents('.ma-el-words-wrapper').removeClass('is-loading');
234                            Master_Addons.MA_Animated_Headlines.switchWord($word, nextWord);
235                            setTimeout(function(){ Master_Addons.MA_Animated_Headlines.hideWord(nextWord) }, barAnimationDelay);
236                            setTimeout(function(){ $word.parents('.ma-el-words-wrapper').addClass('is-loading') }, barWaiting);
237
238                        } else {
239                            Master_Addons.MA_Animated_Headlines.switchWord($word, nextWord);
240                            setTimeout(function(){ Master_Addons.MA_Animated_Headlines.hideWord(nextWord) }, animationDelay);
241                        }
242                    }
243
244                    Master_Addons.MA_Animated_Headlines.showWord = function($word, $duration) {
245                        if($word.parents('.ma-el-animated-headline').hasClass('type')) {
246                            Master_Addons.MA_Animated_Headlines.showLetter($word.find('i').eq(0), $word, false, $duration);
247                            $word.addClass('is-visible').removeClass('is-hidden');
248
249                        }  else if($word.parents('.ma-el-animated-headline').hasClass('clip')) {
250                            $word.parents('.ma-el-words-wrapper').animate({ 'width' : $word.width() + 10 }, revealDuration, function(){
251                                setTimeout(function(){ Master_Addons.MA_Animated_Headlines.hideWord($word) }, revealAnimationDelay);
252                            });
253                        }
254                    }
255
256                    Master_Addons.MA_Animated_Headlines.hideLetter = function($letter, $word, $bool, $duration) {
257                        $letter.removeClass('in').addClass('out');
258
259                        if(!$letter.is(':last-child')) {
260                            setTimeout(function(){ Master_Addons.MA_Animated_Headlines.hideLetter($letter.next(), $word, $bool, $duration); }, $duration);
261                        } else if($bool) {
262                            setTimeout(function(){ Master_Addons.MA_Animated_Headlines.hideWord(Master_Addons.MA_Animated_Headlines.takeNext($word)) }, animationDelay);
263                        }
264
265                        if($letter.is(':last-child') && $('html').hasClass('no-csstransitions')) {
266                            var nextWord = Master_Addons.MA_Animated_Headlines.takeNext($word);
267                            Master_Addons.MA_Animated_Headlines.switchWord($word, nextWord);
268                        }
269                    }
270
271                    Master_Addons.MA_Animated_Headlines.showLetter = function($letter, $word, $bool, $duration) {
272                        $letter.addClass('in').removeClass('out');
273
274                        if(!$letter.is(':last-child')) {
275                            setTimeout(function(){ Master_Addons.MA_Animated_Headlines.showLetter($letter.next(), $word, $bool, $duration); }, $duration);
276                        } else {
277                            if($word.parents('.ma-el-animated-headline').hasClass('type')) { setTimeout(function(){ $word.parents('.ma-el-words-wrapper').addClass('waiting'); }, 200);}
278                            if(!$bool) { setTimeout(function(){ Master_Addons.MA_Animated_Headlines.hideWord($word) }, animationDelay) }
279                        }
280                    }
281
282                    Master_Addons.MA_Animated_Headlines.takeNext = function($word) {
283                        return (!$word.is(':last-child')) ? $word.next() : $word.parent().children().eq(0);
284                    }
285
286                    Master_Addons.MA_Animated_Headlines.takePrev = function($word) {
287                        return (!$word.is(':first-child')) ? $word.prev() : $word.parent().children().last(
287);
288                    }
289
290                    Master_Addons.MA_Animated_Headlines.switchWord = function($oldWord, $newWord) {
291                        $oldWord.removeClass('is-visible').addClass('is-hidden');
292                        $newWord.removeClass('is-hidden').addClass('is-visible');
293                    }
294
295                    Master_Addons.MA_Animated_Headlines.initHeadline = function() {
296                        //insert <i> element for each letter of a changing word
297                        Master_Addons.MA_Animated_Headlines.singleLetters($('.ma-el-animated-headline.letters').find('b'));
298                        //initialise headline animation
299                        Master_Addons.MA_Animated_Headlines.animateHeadline($('.ma-el-animated-headline'));
300                    }
301
302                    Master_Addons.MA_Animated_Headlines.initHeadline();
303
304                })(jQuery);
305            } catch (e) {
306                //We can also throw from try block and catch it here
307                // No Error Show
308            }
309
310        },
311
312        // Master Addons: Accordion
313        MA_Accordion: function ($scope, $) {
314
315            var $advanceAccordion = $scope.find(".ma-advanced-accordion"),
316                $accordionHeader = $scope.find(".ma-advanced-accordion-header"),
317                $accordionType = $advanceAccordion.data("accordion-type"),
318                $accordionSpeed = $advanceAccordion.data("toogle-speed");
319
320            // Open default actived tab
321            $accordionHeader.each(function () {
322                if ($(this).hasClass("active-default")) {
323                    $(this).addClass("show active");
324                    $(this)
325                        .next()
326                        .slideDown($accordionSpeed);
327                }
328            });
329
330            // Remove multiple click event for nested accordion
331            $accordionHeader.unbind("click");
332
333            $accordionHeader.click(function (e) {
334                e.preventDefault();
335
336                var $this = $(this);
337
338                if ($accordionType === "accordion") {
339                    if ($this.hasClass("show")) {
340                        $this.removeClass("show active");
341                        $this.next().slideUp($accordionSpeed);
342                    } else {
343                        $this
344                            .parent()
345                            .parent()
346                            .find(".ma-advanced-accordion-header")
347                            .removeClass("show active");
348                        $this
349                            .parent()
350                            .parent()
351                            .find(".ma-accordion-tab-content")
352                            .slideUp($accordionSpeed);
353                        $this.toggleClass("show active");
354                        $this.next().slideDown($accordionSpeed);
355                    }
356                } else {
357
358                    // For acccordion type 'toggle'
359                    if ($this.hasClass("show")) {
360                        $this.removeClass("show active");
361                        $this.next().slideUp($accordionSpeed);
362                    } else {
363                        $this.addClass("show active");
364                        $this.next().slideDown($accordionSpeed);
365                    }
366                }
367            });
368
369        },
370
371
372
373        // Master Addons: Tabs
374
375        MA_Tabs: function ($scope, $) {
376
377            try {
378                (function ($) {
379
380                    var $tabsWrapper    = $scope.find('[data-tabs]'),
381                        $tabEffect      = $tabsWrapper.data('tab-effect');
382
383
384                    $tabsWrapper.each( function() {
385                        var tab = $(this);
386                        var isTabActive = false;
387                        var isContentActive = false;
388
389                        tab.find('[data-tab]').each(function () {
390                            if ($(this).hasClass('active')) {
391                                isTabActive = true;
392                            }
393                        });
394                        tab.find('.ma-el-advance-tab-content').each(function () {
395                            if ($(this).hasClass('active')) {
396                                isContentActive = true;
397                            }
398                        });
399                        if (!isContentActive) {
400                            tab.find('.ma-el-advance-tab-content').eq(0).addClass('active');
401                        }
402                        if (!isTabActive) {
403                            tab.find('[data-tab]').eq(0).addClass('active');
404                        }
405
406                        if( $tabEffect == "hover"){
407                            tab.find('[data-tab]').hover(function() {
408                                var $data_tab_id = $(this).data('tab-id');
409                                $(this).siblings().removeClass('active');
410                                $(this).addClass('active');
411                                $(this).closest('[data-tabs]').find('.ma-el-advance-tab-content').removeClass('active');
412                                $('#' + $data_tab_id).addClass('active');
413                            });
414                        } else{
415                            tab.find('[data-tab]').click(function() {
416                                var $data_tab_id = $(this).data('tab-id');
417                                $(this).siblings().removeClass('active');
418                                $(this).addClass('active');
419                                $(this).closest('[data-tabs]').find('.ma-el-advance-tab-content').removeClass('active');
420                                $('#' + $data_tab_id).addClass('active');
421                            });
422                        }
423
424
425                    });
426
427                })(jQuery);
428            } catch (e) {
429                //We can also throw from try block and catch it here
430                // No Error Show
431            }
432
433
434        },
435
436
437        //Master Addons: Progressbar
438        MA_ProgressBar: function ($scope, $) {
439
440            try {
441                (function ($) {
442
443                    const $progressBarWrapper = $scope.find('[data-progress-bar]').eq(0);
444                    $progressBarWrapper.waypoint(function () {
445                        var element = $(this.element);
446                        var id = element.data('id');
447                        var type = element.data('type');
448                        var value = element.data('progress-bar-value');
449                        var strokeWidth = element.data('progress-bar-stroke-width');
450                        var strokeTrailWidth = element.data('progress-bar-stroke-trail-width');
451                        var color = element.data('stroke-color');
452                        var trailColor = element.data('stroke-trail-color');
453                        animatedProgressbar(id, type, value, color, trailColor, strokeWidth, strokeTrailWidth);
454                        this.destroy();
455                    }, {
456                        offset: 'bottom-in-view'
457                    });
458
459                })(jQuery);
460            } catch (e) {
461                //We can also throw from try block and catch it here
462                // No Error Show
463            }
464
465
466        },
467
468        //Master Addons: Image Filter Gallery
469        MA_Image_Filter_Gallery: function ($scope, $) {
470
471            // var $carousel           = $scope.find('.jltma-gallery-slider__carousel').eq(0),
472            //     $preview            = $scope.find('.jltma-gallery-slider__preview');
473
474            var $ma_el_image_filter_gallery_container   = $scope.find('.ma-el-image-filter-gallery').eq(0),
475                $ma_el_image_filter_gallery_nav         = $scope.find('.ma-el-image-filter-nav');
476
477
478            if ($.isFunction($.fn.imagesLoaded)) {
479                $ma_el_image_filter_gallery_container.imagesLoaded(function () {
480                    if ($.isFunction($.fn.isotope)) {
481                        $ma_el_image_filter_gallery_container.isotope({
482                            filter: '*',
483                            itemSelector: '.ma-el-image-filter-item',
484                        });
485                    }
486                });
487            }
488
489            $ma_el_image_filter_gallery_nav.on('click', 'li', function () {
490                $ma_el_image_filter_gallery_nav.find('.active').removeClass('active');
491                $(this).addClass('active');
492
493                if ($.isFunction($.fn.isotope)) {
494                    var selector = $(this).attr('data-filter');
495                    $ma_el_image_filter_gallery_container.isotope({
496                        filter: selector,
497                    });
498                    return false;
499                }
500            });
501
502
503
504
505            if ($.isFunction($.fn.fancybox)) {
506                $('.ma-el-fancybox').fancybox({
507                    openEffect	: 'none',
508                    closeEffect	: 'none',
509                    afterLoad : function(instance, current) {
510                        var pixelRatio = window.devicePixelRatio || 1;
511
512                        if ( pixelRatio > 1.5 ) {
513                        current.width  = current.width  / pixelRatio;
514                        current.height = current.height / pixelRatio;
515                        }
516                    }
517                });
518            }
519        },
520
521
522
523        // Gallery Slider
524        MA_Gallery_Slider: function($scope, $){
525
526            Master_Addons.MA_Gallery_Slider.elementSettings    = getElementSettings( $scope );
527
528            var $carousel           = $scope.find('.jltma-gallery-slider__carousel').eq(0),
529                $preview            = $scope.find('.jltma-gallery-slider__preview'),
530                $thumbs             = $scope.find('.jltma-gallery .jltma-gallery__item'),
531                $thumbnailsSlider   = $scope.find(".jltma-gallery-slider__gallery .jltma-gallery"),
532                $thumbtype          = Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_thumb_type,
533                $thumbposition      = Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_preview_position,
534                $thumbVertical      = ( $thumbposition == "top" || $thumbposition == "bottom" ) ? false : true,
535
536                start               = elementorFrontend.config.is_rtl ? 'right' : 'left',
537                end                 = elementorFrontend.config.is_rtl ? 'left' : 'right',
538            
539                slickArgs       = {
540                    slidesToShow    : 1,
541                    slidesToScroll  : 1,
542                    cssEase         : "linear",
543                    draggable       : true,
544                    asNavFor        : ($thumbtype == "slide") ? ".jltma-gallery-slider__gallery .jltma-gallery" : "",
545                    adaptiveHeight  : 'yes' === Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_adaptive_height,
546                    autoplay        : 'yes' === Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_autoplay,
547                    autoplaySpeed   : Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_autoplay_speed,
548                    infinite        : 'yes' === Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_infinite,
549                    pauseOnHover    : 'yes' === Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_pause_on_hover,
550                    speed           : Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_speed,
551                    arrows          : 'yes' === Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_show_arrows,
552                    prevArrow       : '<div class="jltma-carousel__arrow jltma-arrow jltma-arrow--prev"><i class="eicon-chevron-' + start + '"></i></div>',
553                    nextArrow       : '<div class="jltma-carousel__arrow jltma-arrow jltma-arrow--next"><i class="eicon-chevron-' + end + '"></i></div>',
554                    dots            : false,
555                    rtl             : 'rtl' === Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_direction,
556                    fade            : 'fade' === Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_effect,
557                }, 
558
559                thumbsArgs       = {
560                    speed             : Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_thumb_speed,
561                    slidesToShow      : Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_thumb_items,
562                    slidesToScroll    : 1,
563                    cssEase           : "linear",
564                    centerMode        : true,
565                    draggable         : false,
566                    vertical          : $thumbVertical,
567                    verticalSwiping   : $thumbVertical,
568                    focusOnSelect     : true,
569                    arrows            : 'yes' === Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_thumb_show_arrows,
570                    autoplay          : 'yes' === Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_thumb_autoplay,
571                    autoplaySpeed     : Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_thumb_autoplay_speed,
572                    pauseOnHover      : 'yes' === Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_thumb_pause_on_hover,
573                    infinite          : 'yes' === Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_thumb_infinite,
574                    asNavFor          : ".jltma-gallery-slider__carousel",
575                    dots              : false,
576                    prevArrow         : '<div class="jltma-carousel__arrow jltma-arrow jltma-arrow--prev"><i class="eicon-chevron-' + start + '"></i></div>',
577                    nextArrow         : '<div class="jltma-carousel__arrow jltma-arrow jltma-arrow--next"><i class="eicon-chevron-' + end + '"></i></div>',
578                    fade              : 'fade' === Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_thumb_effect,
579                    rtl               : 'rtl' === Master_Addons.MA_Gallery_Slider.elementSettings.jltma_gallery_slider_thumb_direction,
580                        responsive        : [
581                            {
582                                breakpoint: 720,
583                                settings: {
584                                    slidesToShow: 4,
585                                    slidesToScroll: 4
586                                }
587                            },
588                            {
589                                breakpoint: 576,
590                                settings: {
591                                    slidesToShow: 3,
592                                    slidesToScroll: 3
593                                }
594                            },
595                            {
596                                breakpoint: 350,
597                                settings: {
598                                    slidesToShow: 2,
599                                    slidesToScroll: 2
600                            }
601                    }
602                ]
603            };
604
605            Master_Addons.MA_Gallery_Slider.events = function() {
606                $carousel.on( 'beforeChange', function ( event, slick, currentSlide, nextSlide ) {
607                    var currentSlide = nextSlide;
608                    $thumbs.removeClass('is--active');
609                    $thumbs.eq( currentSlide ).addClass('is--active');
610                });
611
612                $thumbs.each( function( currentSlide ) {
613                    $(this).on( 'click', function ( e ) {
614                        e.preventDefault();
615                        $carousel.slick( 'slickGoTo', currentSlide );
616                    });
617                });
618            };
619
620            Master_Addons.MA_Gallery_Slider.init = function() {
621
622                $carousel.slick( slickArgs );
623
624                $thumbs.removeClass('is--active');
625                $thumbs.eq( 0 ).addClass('is--active');
626
627                $carousel.slick( 'setPosition' );
628
629                Master_Addons.MA_Gallery_Slider.events();
630
631                if($thumbtype == "slide"){
632                    // Thumbnails Slider options
633                    $thumbnailsSlider.slick( thumbsArgs );
634                }
635
636            };
637
638            Master_Addons.MA_Gallery_Slider.init();
639        },
640
641
642
643        //Master Addons: Timeline
644        MA_Timeline: function ($scope, $) {
645
646            try {
647                (function ($) {
648
649                    var horzTimeline = $scope.find(".ma-el-timeline-slider-inner");
650
651                    $(horzTimeline).slick({
652                        slidesToShow: 3,
653                        slidesToScroll: 1,
654                        autoplay: false,
655                        autoplaySpeed: 2000,
656                        pauseOnHover: false,
657                        adaptiveHeight: true,
658                        // prevArrow: $('.ma-el-blog-timeline-slider-prev'),
659                        // nextArrow: $('.ma-el-blog-timeline-slider-next'),
660                        responsive: [
661                            {
662                                breakpoint: 768,
663                                settings: {
664                                    arrows: false,
665                                    slidesToShow: 2
666                                }
667                            },
668                            {
669                                breakpoint: 480,
670                                settings: {
671                                    arrows: false,
672                                    slidesToShow: 1
673                                }
674                            }
675                        ]
676                    });
677
678
679                })(jQuery);
680            } catch (e) {
681                //We can also throw from try block and catch it here
682                // No Error Show
683            }
684
685
686        },
687
688        // Master Addons: Table of Contents
689        MA_Table_Of_Contents: function ($scope, $) {
690
691            var tableOfContent = $scope.find(".ma-el-table-of-content"),
692                tableDesign = tableOfContent.data('design'),
693                tableDropdownMode = tableOfContent.data('dropdown-mode');
694
695            // var content = $scope.find(".ma-el-table-of-content"),
696            //     headings = content.querySelectorAll('h1, h2, h3, h4, h5, h6, h7'),
697            //     headingMap = {}
698
699            // Array.prototype.forEach.call(headings, function (heading) {
700            //     var id = heading.id ? heading.id : heading.textContent.trim().toLowerCase()
701            //     .split(' ').join('-').replace(/[!@#$%^&*():]/ig, '')
702            //     headingMap[id] = !isNaN(headingMap[id]) ? ++headingMap[id] : 0
703            //     if (headingMap[id]) {
704            //     heading.id = id + '-' + headingMap[id]
705            //     } else {
706            //     heading.id = id
707            //     }
708            // });
709
710            tocbot.init(tableOfContent.data('settings'));
711
712
713            // Offcanvas TOC
714            if (tableDesign == "offcanvas") {
715                $('.ma-el-toggle-button').on('click', function () {
716                    $('body').addClass('show-sidemenu');
717                });
718
719                $('.ma-el-offcanvas-close').on('click', function () {
720                    $('body').removeClass('show-sidemenu');
721                });
722            }
723
724            if (tableDesign == "dropdown") {
725                // Dropdown TOC
726                $('.ma-el-toggle-button').on('click', function () {
727                    $('body').addClass('show-sidemenu');
728                });
729            }
730
731
732
733            // Dopdown on click
734            if (tableDropdownMode === "click") {
735                var ma_el_drop = $('.ma-el-drop').data('ma-el-drop');
736
737                $('.ma-el-drop').removeClass('animated');
738                $('.ma-el-drop').removeClass(ma_el_drop);
739
740                $('.table-of-content-layout-dropdown .ma-el-toggle-button').on('click', function () {
741                    $('body').removeClass('show-sidemenu');
742                    $('.ma-el-drop').toggleClass('animated');
743                    $('.table-of-content-layout-dropdown').toggleClass('show-sidemenu');
744                    $('.ma-el-drop').toggleClass(ma_el_drop);
745                });
746            }
747
748            if (tableDropdownMode === "hover") {
749                $('.ma-el-toggle-button').on('hover', function () {
750                    $('body').addClass('show-sidemenu');
751                });
752            }
753
754
755        },
756
757
758
759
760        //Master Addons: News Ticker
761        MA_NewsTicker: function ($scope, $) {
762
763            try {
764                (function ($) {
765                    $(window).load(function (e) {
766
767                        var newsTickerWrapper = $scope.find(".ma-el-news-ticker"),
768                            tickerType = newsTickerWrapper.data('tickertype'),
769                            tickerid = newsTickerWrapper.data('tickerid'),
770                            feedUrl = newsTickerWrapper.data('feedurl'),
771                            feedAnimation = newsTickerWrapper.data('feedanimation'),
772                            limitPosts = newsTickerWrapper.data('limitposts'),
773                            tickerStyleEffect = newsTickerWrapper.data('scroll'),
774                            autoplay = newsTickerWrapper.data('autoplay'),
775                            timer = newsTickerWrapper.data('timer');
776
777                        if (tickerType === "content") {
778
779                            $("#" + tickerid + "").breakingNews({
780                                effect: "" + tickerStyleEffect + "",
781                                autoplay: autoplay,
782                                timer: timer,
783                                border: false,
784                                feed: false,
785                                feedlabels: false
786                            });
787                        }
788
789                        if (tickerType === "feed") {
790
791                            jQuery(function ($) {
792
793                                var feed_container = $("#" + tickerid + ' .ma-el-ticker-content-inner');
794
795                                $(feed_container).rss(feedUrl,
796                                    {
797                                        // how many entries do you want?
798                                        // default: 4
799                                        // valid values: any integer
800                                        limit: limitPosts,
801
802                                        // want to offset results being displayed?
803                                        // default: false
804                                        // valid values: any integer
805                                        offsetStart: false, // offset start point
806                                        offsetEnd: false, // offset end point
807
808                                        // will request the API via https
809                                        // default: false
810                                        // valid values: false, true
811                                        ssl: true,
812
813
814                                        // which server should be requested for feed parsing
815                                        // the server implementation is here: https://github.com/sdepold/feedr
816                                        // default: feedrapp.info
817                                        // valid values: any string
818                                        // host: 'my-own-feedr-instance.com',
819
820
821                                        // option to seldomly render ads
822                                        // ads help covering the costs for the feedrapp server hosting and future improvements
823                                        // default: true
824                                        // valid values: false, true
825                                        support: false,
826
827
828                                        // formats the date with moment.js (optional)
829                                        // default: 'dddd MMM Do'
830                                        // valid values: see http://momentjs.com/docs/#/displaying/
831                                        dateFormat: 'MMMM Do, YYYY',
832
833
834                                        // localizes the date with moment.js (optional)
835                                        // default: 'en'
836                                        dateLocale: 'de',
837
838
839                                        // outer template for the html transformation
840                                        // default: "<ul>{entries}</ul>"
841                                        // valid values: any string
842
843
844                                        layoutTemplate: '<ul class="ma-el-ticker-content-items">{entries}</ul>',
845
846                                        // inner template for each entry
847                                        // default: '<li><a href="{url}">[{author}@{date}] {title}</a><br/>{shortBodyPlain}</li>'
848                                        // valid values: any string
849                                        // entryTemplate: '<p>{title}</p>',
850                                        // entryTemplate: '<li><a href="{url}">[{author}@{date}] {title}</a>{teaserImage}{shortBodyPlain}</li>'
851                                        entryTemplate: '<li> {teaserImage} <a href="{url}"> {title}</a></li>',
852
853                                        // the effect, which is used to let the entries appear
854                                        // default: 'show'
855                                        // valid values: 'show', 'slide', 'slideFast', 'slideSynced', 'slideFastSynced'
856                                        effect: feedAnimation,
857
858                                    }, function () {
859
860                                        $("#" + tickerid + "").breakingNews({
861                                            effect: "" + tickerStyleEffect + "",
862                                            autoplay: autoplay,
863                                            timer: timer
864                                        });
865                                    })
866                            });
867
868                        }
869
870                    }); // End of Window load
871
872                })(jQuery);
873            } catch (e) {
874                //We can also throw from try block and catch it here
875                // No Error Show
876            }
877
878
879        },
880
881
882        /*
883         * Master Addons: MA Blog Posts
884         */
885
886        MA_Blog: function ($scope, $) {
887            var blogElement = $scope.find(".ma-el-blog-wrapper"),
888                colsNumber = blogElement.data("col"),
889                carousel = blogElement.data("carousel"),
890                grid = blogElement.data("grid");
891
892            $scope.find(".ma-el-blog-cats-container li a").click(function (e) {
893                e.preventDefault();
894
895                $scope
896                    .find(".ma-el-blog-cats-container li .active")
897                    .removeClass("active");
898
899                $(this).addClass("active");
900
901                var selector = $(this).attr("data-filter");
902
903                blogElement.isotope({ filter: selector });
904
905                return false;
906            });
907
908            var masonryBlog = blogElement.hasClass("ma-el-blog-masonry");
909
910            if (masonryBlog && !carousel) {
911                blogElement.imagesLoaded(function () {
912                    blogElement.isotope({
913                        itemSelector: ".ma-el-post-outer-container",
914                        percentPosition: true,
915                        animationOptions: {
916                            duration: 750,
917                            easing: "linear",
918                            queue: false
919                        }
920                    });
921                });
922            }
923
924            if (carousel && grid) {
925
926                var autoPlay = blogElement.data("play"),
927                    speed = blogElement.data("speed"),
928                    fade = blogElement.data("fade"),
929                    arrows = blogElement.data("arrows"),
930                    dots = blogElement.data("dots"),
931                    prevArrow = null,
932                    nextArrow = null;
933
934                if (arrows) {
935                    prevArrow = "<div class='ma-el-team-carousel-prev'><i class='fa fa-angle-left'></i></div>",
936                        nextArrow = "<div class='ma-el-team-carousel-next'><i class='fa fa-angle-right'></i></div>"
937                    // prevArrow   = '<a type="button" data-role="none" class="carousel-arrow carousel-prev" aria-label="Next" role="button" style=""><i class="fas fa-angle-left" aria-hidden="true"></i></a>',
938                    //     nextArrow   = '<a type="button" data-role="none" class="carousel-arrow carousel-next" aria-label="Next" role="button" style=""><i class="fas fa-angle-right" aria-hidden="true"></i></a>';
939                } else {
940                    prevArrow = prevArrow = '';
941                }
942
943                $(blogElement).slick({
944                    infinite: true,
945                    slidesToShow: colsNumber,
946                    slidesToScroll: colsNumber,
947                    responsive: [
948                        {
949                            breakpoint: 769,
950                            settings: {
951                                slidesToShow: 1,
952                                slidesToScroll: 1
953                            }
954                        },
955                        {
956                            breakpoint: 481,
957                            settings: {
958                                slidesToShow: 1,
959                                slidesToScroll: 1
960                            }
961                        }
962                    ],
963                    autoplay: autoPlay,
964                    autoplaySpeed: speed,
965                    nextArrow: nextArrow,
966                    prevArrow: prevArrow,
967                    fade: fade,
968                    draggable: true,
969                    dots: dots,
970                    customPaging: function () {
971                        return (
972                            '<i class="fas fa-circle"></i>'
973                        );
974                    }
975                });
976            }
977        },
978
979
980        /**** MA Image Carousel ****/
981        MA_Image_Carousel: function ($scope, $) {
982
983            try {
984                (function ($) {
985
986                    var $imageCarouselWrapper = $scope.find('.ma-el-image-carousel').eq(0),
987                        $carousel_nav = $imageCarouselWrapper.data("carousel-nav"),
988                        $loop = ($imageCarouselWrapper.data("loop") !== undefined) ? $imageCarouselWrapper.data("loop") : false,
989                        $slidesToShow = $imageCarouselWrapper.data("slidestoshow"),
990                        $slidesToScroll = $imageCarouselWrapper.data("slidestoscroll"),
991                        $autoPlay = ($imageCarouselWrapper.data("autoplay") !== undefined) ? $imageCarouselWrapper.data("autoplay") : false,
992                        $autoplaySpeed = ($imageCarouselWrapper.data("autoplayspeed") !== undefined) ? $imageCarouselWrapper.data("autoplayspeed") : false,
993                        $transitionSpeed = $imageCarouselWrapper.data("speed"),
994                        $pauseOnHover = ($imageCarouselWrapper.data("pauseonhover") !== undefined) ? $imageCarouselWrapper.data("pauseonhover") : false
995
996
997                    // Team Carousel
998                    if ($carousel_nav == "arrows") {
999                        var arrows = true;
1000                        var dots = false;
1001                    } else {
1002                        var arrows = false;
1003                        var dots = true;
1004                    }
1005
1006                    $imageCarouselWrapper.slick({
1007                        infinite: $loop,
1008                        slidesToShow: $slidesToShow,
1009                        slidesToScroll: $slidesToScroll,
1010                        autoplay: $autoPlay,
1011                        autoplaySpeed: $autoplaySpeed,
1012                        speed: $transitionSpeed,
1013                        pauseOnHover: $pauseOnHover,
1014                        dots: dots,
1015                        arrows: arrows,
1016                        prevArrow: "<div class='ma-el-team-carousel-prev'><i class='fa fa-angle-left'></i></div>",
1017                        nextArrow: "<div class='ma-el-team-carousel-next'><i class='fa fa-angle-right'></i></div>",
1018                        rows: 0,
1019                        responsive: [
1020                            {
1021                                breakpoint: 1024,
1022                                settings: {
1023                                    slidesToShow: 3,
1024                                }
1025                            },
1026                            {
1027                                breakpoint: 576,
1028                                settings: {
1029                                    slidesToShow: 2,
1030                                }
1031                            }
1032                        ],
1033                    });
1034
1035                })(jQuery);
1036            } catch (e) {
1037                //We can also throw from try block and catch it here
1038                // No Error Show
1039            }
1040        },
1041
1042
1043        /**** MA Team Slider ****/
1044
1045        MA_TeamSlider: function ($scope, $) {
1046            
1047            Master_Addons.MA_TeamSlider.elementSettings    = getElementSettings( $scope );
1048
1049            var $teamCarouselWrapper = $scope.find('.ma-el-team-members-slider-section').eq(0),
1050                $team_preset = $teamCarouselWrapper.data("team-preset"),
1051                $ma_el_team_circle_image_animation = $teamCarouselWrapper.data("ma_el_team_circle_image_animation");
1052
1053            if ($team_preset == "-content-drawer") {
1054
1055                try {
1056                    (function ($) {
1057
1058                        $('.gridder').gridderExpander({
1059                            scroll: false,
1060                            scrollOffset: 0,
1061                            scrollTo: "panel",                  // panel or listitem
1062                            animationSpeed: 400,
1063                            animationEasing: "easeInOutExpo",
1064                            showNav: true, // Show Navigation
1065                            nextText: "<span></span>", // Next button text
1066                            prevText: "<span></span>", // Previous button text
1067                            closeText: "", // Close button text
1068                            onStart: function () {
1069                                //Gridder Inititialized
1070                            },
1071                            onContent: function () {
1072                                //Gridder Content Loaded
1073                            },
1074                            onClosed: function () {
1075                                //Gridder Closed
1076                            }
1077                        });
1078
1079                    })(jQuery);
1080                } catch (e) {
1081                    //We can also throw from try block and catch it here
1082                    // No Error Show
1083                }
1084
1085
1086            } else {
1087
1088                try {
1089                    (function ($) {
1090
1091                        var $teamCarouselWrapper = $scope.find('.ma-el-team-members-slider-section').eq(0),
1092                            $carousel_nav = $teamCarouselWrapper.data("carousel-nav"),
1093                            $loop = ($teamCarouselWrapper.data("loop") !== undefined) ? $teamCarouselWrapper.data("loop") : false,
1094                            $slidesToShow = $teamCarouselWrapper.data("slidestoshow"),
1095                            $slidesToScroll = $teamCarouselWrapper.data("slidestoscroll"),
1096                            $autoPlay = ($teamCarouselWrapper.data("autoplay") !== undefined) ? $teamCarouselWrapper.data("autoplay") : false,
1097                            $autoplaySpeed = ($teamCarouselWrapper.data("autoplayspeed") !== undefined) ? $teamCarouselWrapper.data("autoplayspeed") : false,
1098                            $transitionSpeed = $teamCarouselWrapper.data("speed"),
1099                            $pauseOnHover = ($teamCarouselWrapper.data("pauseonhover") !== undefined) ? $teamCarouselWrapper.data("pauseonhover") : false
1100
1101
1102                        // Team Carousel
1103                        if ($carousel_nav == "arrows") {
1104                            var arrows = true;
1105                            var dots = false;
1106                        } else {
1107                            var arrows = false;
1108                            var dots = true;
1109                        }
1110
1111                        $teamCarouselWrapper.slick({
1112                            infinite: $loop,
1113                            slidesToShow: $slidesToShow,
1114                            slidesToScroll: $slidesToScroll,
1115                            autoplay: $autoPlay,
1116                            autoplaySpeed: $autoplaySpeed,
1117                            speed: $transitionSpeed,
1118                            mobileFirst:true,
1119                            pauseOnHover: $pauseOnHover,
1120                            dots: dots,
1121                            arrows: arrows,
1122                            prevArrow: "<div class='ma-el-team-carousel-prev'><i class='fa fa-angle-left'></i></div>",
1123                            nextArrow: "<div class='ma-el-team-carousel-next'><i class='fa fa-angle-right'></i></div>",
1124                            rows: 0,
1125                            responsive: [
1126
1127                                {
1128                                    breakpoint: 350,
1129                                    settings: {
1130                                        dots: dots,
1131                                        arrow: arrows,
1132                                        rows:1,
1133                                        slidesToShow: Master_Addons.MA_TeamSlider.elementSettings.ma_el_team_per_view_mobile,
1134                                        slidesToScroll: $slidesToScroll
1135                                    }
1136                                },
1137                                {
1138                                    breakpoint: 576,
1139                                    settings: {
1140                                        dots: dots,
1141                                        arrow: arrows,
1142                                        slidesToShow: Master_Addons.MA_TeamSlider.elementSettings.ma_el_team_per_view_tablet,
1143                                        slidesToScroll: $slidesToScroll
1144                                    }
1145                                },
1146                                {
1147                                    breakpoint: 720,
1148                                    settings: {
1149                                        slidesToShow: $slidesToShow,
1150                                        slidesToScroll: $slidesToScroll,
1151                                        infinite: true,
1152                                        centerMode: false,
1153                                        dots: dots,
1154                                        arrow: arrows
1155                                    }
1156                                },
1157
1158                            ],
1159                        });
1160
1161                    })(jQuery);
1162                } catch (e) {
1163                    //We can also throw from try block and catch it here
1164                    // No Error Show
1165                }
1166
1167            }
1168
1169            // else if ($team_preset == "-circle-animation"){
1170            //     if($ma_el_team_circle_image_animation == "animation_svg_04"){
1171            //
1172            //     }
1173            // }
1174
1175        },
1176
1177
1178        /**** MA Logo Slider ****/
1179
1180        MA_Logo_Slider: function ($scope, $) {
1181            
1182            Master_Addons.MA_Logo_Slider.elementSettings    = getElementSettings( $scope );
1183
1184            var $logSliderWrapper   = $scope.find('.jltma-logo-slider').eq(0),
1185                $logo_slider_nav    = Master_Addons.MA_Logo_Slider.elementSettings.jltma_logo_slider_nav,
1186                // $loop = ($logSliderWrapper.data("loop") !== undefined) ? $logSliderWrapper.data("loop") : false,
1187                $slidesToShow       = Master_Addons.MA_Logo_Slider.elementSettings.jltma_logo_slider_slides_to_show,
1188                start               = elementorFrontend.config.is_rtl ? 'right' : 'left',
1189                end                 = elementorFrontend.config.is_rtl ? 'left' : 'right',                
1190                $slidesToScroll     = Master_Addons.MA_Logo_Slider.elementSettings.jltma_logo_slider_slides_to_scroll;
1191
1192
1193                // Logo Slider Navigation
1194                if ($logo_slider_nav == "arrows") {
1195                    var arrows = true;
1196                    var dots = false;
1197                } else if($logo_slider_nav == "both") {
1198                    var arrows = true;
1199                    var dots = true;                    
1200                } else if($logo_slider_nav == "dots") {
1201                    var arrows = false;
1202                    var dots = true;
1203                }
1204                
1205
1206                var logoSlickArgs       = {
1207
1208                    slidesToShow    : $slidesToShow,
1209                    slidesToScroll  : $slidesToScroll,
1210                    cssEase         : "linear",
1211                    draggable       : false,
1212                    // autoplayspeed
1213                    autoplay        : 'yes' === Master_Addons.MA_Logo_Slider.elementSettings.jltma_logo_slider_autoplay,
1214                    autoplaySpeed   : Master_Addons.MA_Logo_Slider.elementSettings.jltma_logo_slider_autoplay_speed,
1215                    infinite        : 'yes' === Master_Addons.MA_Logo_Slider.elementSettings.jltma_logo_slider_loop,
1216                    pauseOnHover    : 'yes' === Master_Addons.MA_Logo_Slider.elementSettings.jltma_logo_slider_pause,
1217                    speed           : Master_Addons.MA_Logo_Slider.elementSettings.jltma_logo_slider_animation_speed,
1218                    arrows          : arrows,
1219                    centerMode      : Master_Addons.MA_Logo_Slider.elementSettings.jltma_logo_slider_center_mode,
1220                    // centerPadding: '60px',
1221                    prevArrow       : $('.jltma-logo-slider .jltma-slide-prev'),
1222                    nextArrow       : $('.jltma-logo-slider .jltma-slide-next'),
1223                    dots            : true,
1224                    dotsClass       : $('.jltma-logo-slider .jltma-slide-dotnav'),
1225                    appendDots      : $('.jltma-logo-slider .jltma-slide-dotnav'),
1226                    // rtl             : 'rtl' === Master_Addons.MA_Logo_Slider.elementSettings.jltMA_Logo_Slider_direction,
1227                    // fade            : 'fade' === Master_Addons.MA_Logo_Slider.elementSettings.jltma_gallery_slider_effect,
1228                    responsive: [
1229
1230                        {
1231                            breakpoint: 350,
1232                            settings: {
1233                                dots: dots,
1234                                arrow: arrows,
1235                                rows:1,
1236                                slidesToShow: Master_Addons.MA_Logo_Slider.elementSettings.jltma_logo_slider_slides_to_show_mobile,
1237                                slidesToScroll: $slidesToScroll
1238                            }
1239                        },
1240                        {
1241                            breakpoint: 576,
1242                            settings: {
1243                                dots: dots,
1244                                arrow: arrows,
1245                                slidesToShow: Master_Addons.MA_Logo_Slider.elementSettings.jltma_logo_slider_slides_to_show_tablet,
1246                                slidesToScroll: $slidesToScroll
1247                            }
1248                        },
1249                        {
1250                            breakpoint: 720,
1251                            settings: {
1252                                slidesToShow: $slidesToShow,
1253                                slidesToScroll: $slidesToScroll,
1254                                infinite: true,                                    
1255                                dots: dots,
1256                                arrow: arrows
1257                            }
1258                        },
1259
1260                    ],                        
1261            };
1262
1263
1264            $logSliderWrapper.slick( logoSlickArgs );
1265
1266
1267            // $('.jltma-slide-dotnav li a').removeClass('active');
1268            $(".jltma-logo-slider .jltma-slide-dotnav li a").click(function(e){
1269                e.preventDefault();
1270
1271                var slideIndex = $(this).parent().index();
1272                $('.jltma-logo-slider .jltma-slide-dotnav li a.active').removeClass('active');
1273                // $(this).addClass('active');
1274                $logSliderWrapper.slick('slickGoTo', parseInt(slideIndex));
1275            });
1276
1277        },
1278
1279
1280        /**** MA Twitter Slider ****/
1281
1282        MA_Twitter_Slider: function ($scope, $) {
1283            
1284            Master_Addons.MA_Twitter_Slider.elementSettings    = getElementSettings( $scope );
1285
1286            var $TwitterSliderWrapper   = $scope.find('.jltma-twitter-slider .swiper-wrapper').eq(0),
1287                $twitter_slider_nav    = Master_Addons.MA_Twitter_Slider.elementSettings.jltma_ts_navigation,
1288                // $loop = ($TwitterSliderWrapper.data("loop") !== undefined) ? $TwitterSliderWrapper.data("loop") : false,
1289                $slidesToShow       = Master_Addons.MA_Twitter_Slider.elementSettings.jltma_ts_columns,
1290                start               = elementorFrontend.config.is_rtl ? 'right' : 'left',
1291                end                 = elementorFrontend.config.is_rtl ? 'left' : 'right',                
1292                $slidesToScroll     = Master_Addons.MA_Twitter_Slider.elementSettings.jltma_ts_tweet_num;
1293
1294
1295                // Logo Slider Navigation
1296                if ($twitter_slider_nav == "arrows") {
1297                    var arrows = true;
1298                    var dots = false;
1299                } else if($twitter_slider_nav == "both") {
1300                    var arrows = true;
1301                    var dots = true;                    
1302                } else if($twitter_slider_nav == "dots") {
1303                    var arrows = false;
1304                    var dots = true;
1305                }
1306                
1307
1308                var twitterSlickArgs       = {
1309
1310                    slidesToShow    : $slidesToShow,
1311                    slidesToScroll  : $slidesToScroll,
1312                    cssEase         : "linear",
1313                    draggable       : false,
1314                    // autoplayspeed
1315                    autoplay        : 'yes' === Master_Addons.MA_Twitter_Slider.elementSettings.jltma_ts_autoplay,
1316                    autoplaySpeed   : Master_Addons.MA_Twitter_Slider.elementSettings.jltma_ts_autoplay_speed,
1317                    infinite        : 'yes' === Master_Addons.MA_Twitter_Slider.elementSettings.jltma_ts_loop,
1318                    pauseOnHover    : 'yes' === Master_Addons.MA_Twitter_Slider.elementSettings.jltma_ts_pauseonhover,
1319                    speed           : Master_Addons.MA_Twitter_Slider.elementSettings.jltma_ts_speed.size,
1320                    arrows          : true,
1321                    // centerMode      : Master_Addons.MA_Twitter_Slider.elementSettings.jltma_logo_slider_center_mode,
1322                    // centerPadding: '60px',
1323                    prevArrow       : $('.jltma-twitter-slider .jltma-slide-prev'),
1324                    nextArrow       : $('.jltma-twitter-slider .jltma-slide-next'),
1325                    dots            : true,
1326                    dotsClass       : $('.jltma-twitter-slider .jltma-slide-dotnav'),
1327                    appendDots      : $('.jltma-twitter-slider .jltma-slide-dotnav'),
1328                    // rtl             : 'rtl' === Master_Addons.MA_Twitter_Slider.elementSettings.jltMA_Logo_Slider_direction,
1329                    // fade            : 'fade' === Master_Addons.MA_Twitter_Slider.elementSettings.jltma_gallery_slider_effect,
1330                    responsive: [
1331
1332                        {
1333                            breakpoint: 350,
1334                            settings: {
1335                                dots: dots,
1336                                arrow: arrows,
1337                                rows:1,
1338                                slidesToShow: Master_Addons.MA_Twitter_Slider.elementSettings.jltma_ts_columns_mobile,
1339                                slidesToScroll: $slidesToScroll
1340                            }
1341                        },
1342                        {
1343                            breakpoint: 576,
1344                            settings: {
1345                                dots: dots,
1346                                arrow: arrows,
1347                                slidesToShow: Master_Addons.MA_Twitter_Slider.elementSettings.jltma_ts_columns_tablet,
1348                                slidesToScroll: $slidesToScroll
1349                            }
1350                        },
1351                        {
1352                            breakpoint: 720,
1353                            settings: {
1354                                slidesToShow: $slidesToShow,
1355                                slidesToScroll: $slidesToScroll,
1356                                infinite: true,                                    
1357                                dots: dots,
1358                                arrow: arrows
1359                            }
1360                        },
1361
1362                    ],                        
1363            };
1364
1365
1366            $TwitterSliderWrapper.slick( twitterSlickArgs );
1367
1368            $('.jltma-twitter-slider .jltma-slide-dotnav li a').click(function(e){
1369                e.preventDefault();
1370
1371                var slideIndex = $(this).parent().index();
1372                $('.jltma-twitter-slider .jltma-slide-dotnav li a.active').removeClass('active');
1373                $TwitterSliderWrapper.slick('slickGoTo', parseInt(slideIndex));
1374            });
1375
1376        },
1377
1378
1379        MA_ParticlesBG: function ($scope, $) {
1380
1381            // try {
1382            //     (function($scope, $) {
1383
1384            if ($scope.hasClass('ma-el-particle-yes')) {
1385                let id = $scope.data('id');
1386                let element_type = $scope.data('element_type');
1387                let pdata = $scope.data('ma-el-particle');
1388                let pdata_wrapper = $scope.find('.ma-el-particle-wrapper').data('ma-el-pdata');
1389
1390                if (typeof pdata != 'undefined' && pdata != '') {
1391                    if ($scope.find('.ma-el-section-bs').length > 0) {
1392                        $scope.find('.ma-el-section-bs').after('<div class="ma-el-particle-wrapper"' +
1393                            ' id="ma-el-particle-' + id + '"></div>');
1394                        particlesJS('ma-el-particle-' + id, pdata);
1395                    } else {
1396
1397                        if (element_type == 'column') {
1398
1399                            $scope.find('.elementor-column-wrap').prepend('<div class="ma-el-particle-wrapper"' +
1400                                ' id="ma-el-particle-' + id + '"></div>');
1401                        } else {
1402                            $scope.prepend('<div class="ma-el-particle-wrapper" id="ma-el-particle-' + id + '"></div>');
1403                        }
1404
1405                        particlesJS('ma-el-particle-' + id, pdata);
1406                    }
1407
1408
1409                } else if (typeof pdata_wrapper != 'undefined' && pdata_wrapper != '') {
1410
1411                    // $scope.prepend('<div class="ma-el-particle-wrapper" id="ma-el-particle-'+ id +'"></div>');
1412
1413                    if (element_type == 'column') {
1414                        $scope.find('.elementor-column-wrap').prepend('<div class="ma-el-particle-wrapper"' +
1415                            ' id="ma-el-particle-' + id + '"></div>');
1416                    }
1417                    else {
1418                        $scope.prepend('<div class="ma-el-particle-wrapper" id="ma-el-particle-' + id + '"></div>');
1419                    }
1420
1421                    particlesJS('ma-el-particle-' + id, JSON.parse(pdata_wrapper));
1422                }
1423
1424            }
1425            //
1426            //     })(jQuery);
1427            // } catch(e) {
1428            //     //We can also throw from try block and catch it here
1429            //     // No Error Show
1430            // }
1431
1432        },
1433
1434        MA_BgSlider: function ($scope, $) {
1435            var ma_el_slides = [];
1436            var ma_el_slides_json = [];
1437            var ma_el_transition;
1438            var ma_el_animation;
1439            var ma_el_custom_overlay;
1440            var ma_el_overlay;
1441            var ma_el_cover;
1442            var ma_el_delay;
1443            var ma_el_timer;
1444            var slider_wrapper = $scope.children('.ma-el-section-bs').children('.ma-el-section-bs-inner');
1445
1446            if (slider_wrapper && slider_wrapper.data('ma-el-bg-slider')) {
1447
1448                var slider_images = slider_wrapper.data('ma-el-bg-slider');
1449                ma_el_transition = slider_wrapper.data('ma-el-bg-slider-transition');
1450                ma_el_animation = slider_wrapper.data('ma-el-bg-slider-animation');
1451                ma_el_custom_overlay = slider_wrapper.data('ma-el-bg-custom-overlay');
1452                if (ma_el_custom_overlay == 'yes') {
1453                    ma_el_overlay = jltma_scripts.plugin_url + 'assets/lib/vegas/overlays/' + slider_wrapper.data('ma-el-bg-slider-overlay');
1454                } else {
1455                    if (slider_wrapper.data('ma-el-bg-slider-overlay')) {
1456                        ma_el_overlay = jltma_scripts.plugin_url + 'assets/lib/vegas/overlays/' + slider_wrapper.data('ma-el-bg-slider-overlay');
1457                    } else {
1458                        ma_el_overlay = jltma_scripts.plugin_url + 'assets/lib/vegas/overlays/' + slider_wrapper.data('ma-el-bg-slider-overlay');
1459                    }
1460                }
1461
1462                ma_el_cover = slider_wrapper.data('ma-el-bg-slider-cover');
1463                ma_el_delay = slider_wrapper.data('ma-el-bs-slider-delay');
1464                ma_el_timer = slider_wrapper.data('ma-el-bs-slider-timer');
1465
1466                if (typeof slider_images != 'undefined') {
1467                    ma_el_slides = slider_images.split(",");
1468
1469                    jQuery.each(ma_el_slides, function (key, value) {
1470                        var slide = [];
1471                        slide.src = value;
1472                        ma_el_slides_json.push(slide);
1473                    });
1474
1475                    slider_wrapper.vegas({
1476                        slides: ma_el_slides_json,
1477                        transition: ma_el_transition,
1478                        animation: ma_el_animation,
1479                        overlay: ma_el_overlay,
1480                        cover: ma_el_cover,
1481                        delay: ma_el_delay,
1482                        timer: ma_el_timer,
1483                        init: function () {
1484                            if (ma_el_custom_overlay == 'yes') {
1485                                var ob_vegas_overlay = slider_wrapper.children('.vegas-overlay');
1486                                ob_vegas_overlay.css('background-image', '');
1487                            }
1488                        }
1489                    });
1490
1491                }
1492            }
1493        },
1494
1495        MA_AnimatedGradient: function ($scope, $) {
1496
1497            if ($scope.hasClass('ma-el-animated-gradient-yes')) {
1498                let id = $scope.data('id');
1499                let color = $scope.data('color');
1500                let angle = $scope.data('angle');
1501                let gradient_color = 'linear-gradient(' + angle + ',' + color + ')';
1502                let heading = $scope.find('.elementor-heading-title');
1503                $scope.css('background-image', gradient_color);
1504
1505                if ($scope.hasClass('elementor-element-edit-mode')) {
1506                    color = $scope.find('.animated-gradient').data('color');
1507                    angle = $scope.find('.animated-gradient').data('angle');
1508                    let gradient_color_editor = 'linear-gradient(' + angle + ',' + color + ')';
1509                    $scope.prepend('<div class="animated-gradient" style="background-image : ' + gradient_color_editor + ' "></div>');
1510                    //$scope.find('.animated-gradient').css('background-image', gradient_color_editor);
1511                    //$scope.find('.animated-gradient').css('background-color', 'red');
1512                }
1513                //$scope.css('position', 'relative');
1514                //$scope.css('background-color', 'black');
1515
1516            }
1517
1518        },
1519
1520
1521        MA_Image_Comparison: function ($scope, $) {
1522            var $jltma_image_comp_wrap       = $scope.find('.jltma-image-comparison').eq(0),
1523                $jltma_image_data            = $jltma_image_comp_wrap.data('image-comparison-settings');
1524
1525                $jltma_image_comp_wrap.twentytwenty({
1526                    default_offset_pct          : $jltma_image_data.visible_ratio,
1527                    orientation                 : $jltma_image_data.orientation,
1528                    before_label                : $jltma_image_data.before_label,
1529                    after_label                 : $jltma_image_data.after_label,
1530                    move_slider_on_hover        : $jltma_image_data.slider_on_hover,
1531                    move_with_handle_only       : $jltma_image_data.slider_with_handle,
1532                    click_to_move               : $jltma_image_data.slider_with_click,
1533                    no_overlay                  : $jltma_image_data.no_overlay
1534                });
1535        },
1536
1537        MA_PiechartsHandlerOnScroll: function ($scope, $) {
1538
1539            $scope.waypoint(function (direction) {
1540
1541                Master_Addons.MA_PiechartsHandler($(this.element), $);
1542
1543            }, {
1544                offset: (window.innerHeight || document.documentElement.clientHeight) - 100,
1545                triggerOnce: true
1546            });
1547        },
1548
1549        MA_PiechartsHandler: function ($scope, $) {
1550
1551            $scope.find('.ma-el-piechart .ma-el-percentage').each(function () {
1552
1553                var track_color = $(this).data('track-color');
1554                var bar_color = $(this).data('bar-color');
1555
1556                $(this).easyPieChart({
1557                    animate: 2000,
1558                    lineWidth: 10,
1559                    barColor: bar_color,
1560                    trackColor: track_color,
1561                    scaleColor: false,
1562                    lineCap: 'square',
1563                    size: 220
1564
1565                });
1566
1567            });
1568
1569        },
1570
1571        StatsBarHandler: function ($scope, $) {
1572
1573            $scope.find('.ma-el-stats-bar-content').each(function () {
1574
1575                var dataperc = $(this).data('perc');
1576
1577                $(this).animate({ "width": dataperc + "%" }, dataperc * 20);
1578
1579            });
1580
1581        },
1582
1583        StatsBarHandlerOnScroll: function ($scope, $) {
1584
1585            $scope.waypoint(function (direction) {
1586
1587                Master_Addons.StatsBarHandler($(this.element), $);
1588
1589            }, {
1590                offset: (window.innerHeight || document.documentElement.clientHeight) - 150,
1591                triggerOnce: true
1592            });
1593
1594        },
1595
1596        // Instagram Feed
1597        MA_Instagram_Feed: function ($scope, $) {
1598
1599            var $instagramWrapper = $scope.find(".jltma-instagram-feed"),
1600                $insta_data = $instagramWrapper.data("settings"),
1601                $insta_carousel_data = $instagramWrapper.data("slider-settings"),
1602                $insta_lightbox_data = $instagramWrapper.data("lightbox-settings"),
1603                $layout = $insta_data.layout,
1604                $gallery = $(this),
1605                $scope = $(".elementor-element-"+ $insta_data.container_id +"");
1606
1607                // Carousel Layout
1608                if($layout == 'carousel'){
1609
1610                    var $carousel_nav       = $insta_carousel_data.carousel_nav,
1611                        $loop               = ($insta_carousel_data.loop !== undefined) ? $insta_carousel_data.loop : false,
1612                        $slidesToShow       = $insta_carousel_data.slidestoshow,
1613                        $slidesToScroll     = $insta_carousel_data.slidestoscroll,
1614                        $autoPlay           = ( $insta_carousel_data.autoplay !== undefined) ? $insta_carousel_data.autoplay : false,
1615                        $autoplaySpeed      = ($insta_carousel_data.autoplayspeed) ? $insta_carousel_data.autoplayspeed : '2400',
1616                        $transitionSpeed    = $insta_carousel_data.speed,
1617                        $pauseOnHover       = ($insta_carousel_data.pauseonHover !== undefined) ? $insta_carousel_data.pauseonHover : false,
1618                        $direction          = $insta_carousel_data.direction;
1619                        // $adaptiveHeight     = $insta_carousel_data.autoHeight;
1620
1621
1622                    // Instagram Slider Carousel
1623                    if ($carousel_nav == "arrows") {
1624                        var arrows = true;
1625                        var dots = false;
1626                    } else {
1627                        var arrows = false;
1628                        var dots = true;
1629                    }
1630
1631                    $("#jltma-instagram-" + $insta_data.container_id).slick({
1632                        infinite: $loop,
1633                        rtl: $direction,
1634                        slidesToShow: $slidesToShow,
1635                        slidesToScroll: $slidesToScroll,
1636                        autoplay: $autoPlay,
1637                        autoplaySpeed: $autoplaySpeed,
1638                        speed: $transitionSpeed,
1639                        mobileFirst:true,
1640                        pauseOnHover: $pauseOnHover,
1641                        // adaptiveHeight: $adaptiveHeight,
1642                        dots: dots,
1643                        arrows: arrows,
1644                        prevArrow: "<div class='ma-el-team-carousel-prev'><i class='fa fa-angle-left'></i></div>",
1645                        nextArrow: "<div class='ma-el-team-carousel-next'><i class='fa fa-angle-right'></i></div>",
1646                        rows: 0,
1647                        lazyLoad: 'ondemand',
1648                        touchMove: true,
1649                        responsive: [
1650                            {
1651                                breakpoint: 480,
1652                                settings: {
1653                                    dots: dots,
1654                                    arrow: arrows,
1655                                    slidesToShow: 1,
1656                                    rows:1,
1657                                    slidesPerRow:1,
1658                                    slidesToScroll: 1
1659                                }
1660                            },
1661                            {
1662                                breakpoint: 600,
1663                                settings: {
1664                                    dots: dots,
1665                                    arrow: arrows,
1666                                    slidesToShow: 2,
1667                                    slidesToScroll: 2
1668                                }
1669                            },
1670                            {
1671                                breakpoint: 1024,
1672                                settings: {
1673                                    slidesToShow: 3,
1674                                    slidesToScroll: 3,
1675                                    infinite: true,
1676                                    centerMode: false,
1677                                    dots: dots,
1678                                    arrow: arrows
1679                                }
1680                            },
1681                        ],
1682                    });
1683
1684
1685                }
1686
1687
1688                // Masonry Layout
1689                if($layout == 'masonry'){
1690                    var $settings = {
1691                        itemSelector: ".jltma-instafeed-item",
1692                        percentPosition: true,
1693                        masonry: {
1694                            columnWidth: ".jltma-instafeed-item",
1695                        }
1696                    },
1697                    $instagram_gallery = $(".jltma-instafeed-masonry", $scope).isotope($settings);
1698
1699                    // layout gallery, while images are loading
1700                    $instagram_gallery.imagesLoaded().progress(function() {
1701                        $instagram_gallery.isotope("layout");
1702                    });
1703
1704                    $(".jltma-instafeed-item", $gallery).resize(function() {
1705                        $instagram_gallery.isotope("layout");
1706                    });
1707                }
1708
1709
1710                // Lightbox Settings
1711                if( $insta_data.lightbox  == "enabled"){
1712                    if ($.isFunction($.fn.fancybox)) {
1713                        $( "#jltma-instagram-" + $insta_data.container_id + ' .jltma-instafeed-item' ).fancybox({
1714                            protect: $insta_lightbox_data.protect,
1715                            animationDuration: 366,
1716                            transitionDuration: 366,
1717                            transitionEffect: $insta_lightbox_data.transitionEffect, // Transition effect between slides
1718                            animationEffect: $insta_lightbox_data.animationEffect,
1719                            preventCaptionOverlap : $insta_lightbox_data.preventCaptionOverlap,
1720                            // loop: false,
1721                            infobar: false,
1722                            buttons: $insta_lightbox_data.buttons,
1723
1724                            afterLoad : function(instance, current) {
1725                                var pixelRatio = window.devicePixelRatio || 1;
1726
1727                                if ( pixelRatio > 1.5 ) {
1728                                    current.width  = current.width  / pixelRatio;
1729                                    current.height = current.height / pixelRatio;
1730                                }
1731                            }
1732                        });
1733                    }
1734                }
1735
1736        },
1737
1738        // Toggle Content
1739        MA_Toggle_Content: function( $scope, $ ) {
1740            Master_Addons.getElementSettings    = getElementSettings($scope);
1741			var $wrapper 			= $scope.find( '.jltma-toggle-content' ),
1742				toggleElementArgs 	= {
1743					active : Master_Addons.getElementSettings.jltma_toggle_content_active_index,
1744                };
1745
1746            if ( '' !== Master_Addons.getElementSettings.jltma_toggle_content_indicator_color ) {
1747                toggleElementArgs.indicatorColor = Master_Addons.getElementSettings.jltma_toggle_content_indicator_color;
1748            }
1749
1750            if ( Master_Addons.getElementSettings.jltma_toggle_content_indicator_speed.size ) {
1751                toggleElementArgs.speed = Master_Addons.getElementSettings.jltma_toggle_content_indicator_speed.size;
1752            }
1753
1754            if ( elementorFrontend.isEditMode() ) {
1755                toggleElementArgs.watchControls = true;
1756            }
1757
1758            $wrapper.MA_ToggleElement( toggleElementArgs );
1759        },
1760
1761        
1762        // Comment Form reCaptcha
1763        MA_Comment_Form_reCaptcha: function( $scope, $ ) {
1764            Master_Addons.getElementSettings    = getElementSettings($scope);
1765            var $commentsWrapper = $scope.find(".jltma-comments-wrap"),
1766                $comments_recaptcha_data = $commentsWrapper.data("recaptcha"),
1767                $recaptcha_theme = $comments_recaptcha_data.theme,
1768                $recaptcha_sitekey = $comments_recaptcha_data.sitekey,
1769                jltma_comment_form;
1770
1771            var onloadCallback = function() {
1772                jltma_comment_form = grecaptcha.render("jltma_comment_form", {
1773                    "sitekey" : $recaptcha_sitekey,
1774                    "theme" : "light"
1775                });
1776                grecaptcha.reset(jltma_comment_form);
1777            };
1778        },
1779
1780
1781        // Master Addons: Counter Up
1782        MA_Counter_Up: function( $scope, $ ) {
1783            var $counterup = $scope.find(".jltma-counter-up-number");
1784
1785            if ( $.isFunction($.fn.counterUp) ) {
1786                $counterup.counterUp({
1787                    delay: 15,
1788                    time: 2000
1789                });
1790            }
1791        },
1792
1793
1794        // Master Addons: Countdown Timer
1795        MA_CountdownTimer: function ($scope, $) {
1796
1797            var $countdownWidget = $scope.find(".ma-el-widget-countdown");
1798            $.fn.MasterCountDownTimer = function () {
1799                var $wrapper = $(this).find(".ma-el-countdown-wrapper "),
1800                    data = {
1801                        year: $wrapper.data("countdown-year"),
1802                        month: $wrapper.data("countdown-month"),
1803                        day: $wrapper.data("countdown-day"),
1804                        hour: $wrapper.data("countdown-hour"),
1805                        min: $wrapper.data("countdown-min"),
1806                        sec: $wrapper.data("countdown-sec")
1807                    },
1808
1809                    targetDate = new Date(data.year, data.month, data.day, data.hour, data.min, data.sec);
1810                var $year = $wrapper.find('.ma-el-countdown-year'),
1811                    $month = $wrapper.find('.ma-el-countdown-month'),
1812                    $day = $wrapper.find('.ma-el-countdown-day'),
1813                    $hour = $wrapper.find('.ma-el-countdown-hour'),
1814                    $min = $wrapper.find('.ma-el-countdown-min'),
1815                    $sec = $wrapper.find('.ma-el-countdown-sec');
1816
1817                setInterval(function () {
1818                    var diffTime = (Date.parse(targetDate) - Date.parse(new Date())) / 1000;
1819
1820                    if (diffTime < 0) return;
1821
1822                    $year.text(Math.floor(diffTime / (31536000))); // 1 year = 3153600 second
1823                    $month.text(Math.floor((diffTime / 2592000) % 12)); // 1 month = 2592000 second
1824                    $day.text(Math.floor((diffTime / 86400) % 365)); // 1 day = 86400 second
1825                    $hour.text(Math.floor((diffTime / 3600) % 24)); // 1 hour = 3600 second
1826                    $min.text(Math.floor((diffTime / 60) % 60)); // 1 min  = 60 second
1827                    $sec.text(Math.floor((diffTime) % 60));
1828                }, 1e3)
1829            }, $countdownWidget.each(function () {
1830                $(this).MasterCountDownTimer()
1831            })
1832
1833
1834        },
1835
1836        /**
1837         * Fancybox popup
1838         */
1839        MA_Fancybox_Popup: function ($scope, $) {
1840
1841            try {
1842                (function ($) {
1843                    if ($.isFunction($.fn.fancybox)) {
1844                        $("[data-fancybox]").fancybox({});
1845                    }
1846                })(jQuery);
1847            } catch (e) {
1848                //We can also throw from try block and catch it here
1849                // No Error Show
1850            }
1851
1852        },
1853
1854        /*
1855        * REVEAL
1856        */
1857        MA_Reveal: function ($scope, $) {
1858            var isReveal = false;
1859
1860            var elementSettings = getElementSettings($scope);
1861
1862            var rev1;
1863            var revealAction = function () {
1864                rev1 = new RevealFx(revealistance, {
1865                    revealSettings: {
1866                        bgcolor: elementSettings.reveal_bgcolor,
1867                        direction: elementSettings.reveal_direction,
1868                        duration: Number(elementSettings.reveal_speed.size) * 100,
1869                        delay: Number(elementSettings.reveal_delay.size) * 100,
1870                        onCover: function (contentEl, revealerEl) {
1871                            contentEl.style.opacity = 1;
1872                        }
1873                    }
1874                });
1875            }
1876
1877            var runReveal = function () {
1878                rev1.reveal();
1879            }
1880
1881            if (elementSettings.enabled_reveal) {
1882
1883                var revealId = '#reveal-' + $scope.data('id');
1884                var revealistance = document.querySelector(revealId);
1885
1886                revealAction();
1887
1888                var waypointOptions = {
1889                    offset: '100%',
1890                    triggerOnce: true
1891                };
1892                elementorFrontend.waypoint($(revealistance), runReveal, waypointOptions);
1893            }
1894
1895        },
1896
1897        /*
1898        * MA Rellax
1899        */
1900        MA_Rellax: function ($scope, $) {
1901
1902            var elementSettings = getElementSettings($scope);
1903            var rellax = null;
1904
1905            $(window).on('resize', function () {
1906
1907                if (rellax) {
1908                    rellax.destroy();
1909                    if (rellax)
1910                        initRellax();
1911                }
1912            });
1913
1914            var initRellax = function () {
1915                if (elementSettings.enabled_rellax) {
1916
1917                    currentDevice = elementorFrontend.getCurrentDeviceMode();
1918
1919                    var setting_speed = 'speed_rellax';
1920                    var value_speed = 0;
1921
1922                    if (currentDevice != 'desktop') {
1923                        setting_speed = 'speed_rellax_' + currentDevice;
1924                    }
1925
1926                    if (eval('elementSettings.' + setting_speed + '.size'))
1927                        value_speed = eval('elementSettings.' + setting_speed + '.size');
1928
1929
1930                    var rellaxId = '#rellax-' + $scope.data('id');
1931
1932                    if ($(rellaxId).length)
1933                        rellax = new Rellax(rellaxId, {
1934                            speed: value_speed
1935                        }
1936                        );
1937                    isRellax = true;
1938                };
1939            };
1940
1941            initRellax();
1942
1943        },
1944
1945        MA_Rellax_Final: function (panel, model, view) {
1946            Master_Addons.getElementSettings = getElementSettings($scope);
1947            var $scope = view.$el;
1948            var scene = $scope.find('#scene');
1949        },
1950
1951
1952        // Entrance Animations
1953        MA_Entrance_Animation: function ($scope, $) {
1954
1955            $scope = $scope || $(this);
1956
1957            var $target      = $scope.hasClass('jltma-appear-watch-animation') ? $scope: $scope.find('.jltma-appear-watch-animation'),
1958                hasAnimation = $('body').hasClass('jltma-page-animation');
1959
1960            if( ! $target.length ){
1961                return;
1962            }   
1963
1964            if ( hasAnimation ) {
1965                document.body.addEventListener( 'JltmaPageAnimationDone', function(event) { 
1966                    $target.appearl({
1967                        offset: '200px',
1968                        insetOffset:'0px'
1969                    }).one( 'appear', function(event, data) {
1970                        this.classList.add('jltma-animated');
1971                        this.classList.add('jltma-animated-once');
1972                    });
1973                });
1974            } else {
1975                $target.appearl({
1976                    offset: '200px',
1977                    insetOffset:'0px'
1978                }).one( 'appear', function(event, data) {
1979                    this.classList.add('jltma-animated');
1980                    this.classList.add('jltma-animated-once');
1981                });
1982            }
1983        
1984        },
1985
1986        /**
1987         * Restrict Content
1988         */
1989        MA_Restrict_Content_Ajax: function ($scope, $) {
1990
1991            Master_Addons.getElementSettings = getElementSettings($scope);
1992
1993            var $restrictwrapper    = $scope.find('.ma-el-restrict-content-wrap').eq(0),
1994                $scopeId            = $scope.data('id'),
1995                $restrict_layout    = $restrictwrapper.data('restrict-layout-type'),
1996                $restrict_type      = $restrictwrapper.data('restrict-type'),
1997                $error_message      = $restrictwrapper.data('error-message'),
1998                $rc_ajaxify         = $restrictwrapper.data('rc-ajaxify'),
1999
2000                $storageID          = 'ma_el_rc_' + $scopeId,
2001                $formID             = $scope.find('.ma-el-restrict-form').eq(0).data('form-id'),
2002
2003                // Content
2004                $content_div         = '#restrict-content-' + $scopeId,
2005
2006                // Popup Settings
2007                $popup              = $scope.find( '.ma-el-restrict-content-popup-content' ),
2008                $content_pass       = $restrictwrapper.data('content-pass') ? $restrictwrapper.data('content-pass') : '',
2009                $popup_type         = $popup.data('popup-type') ? $popup.data('popup-type') : '',
2010
2011                // Restrict Age
2012                $age_wrapper        = $scope.find('.ma-el-restrict-age-wrapper').eq(0),
2013
2014                $restrict_age       = {
2015                    min_age             : $age_wrapper.data('min-age'),
2016                    age_type            : $age_wrapper.data('age-type'),
2017                    age_title           : $age_wrapper.data('age-title'),
2018                    age_content         : $age_wrapper.data('age-content'),
2019                    age_submit          : $( '#' + $formID ).find('button[name="submit"]').val(),
2020                    checkbox_msg        : $age_wrapper.data('checkbox-msg') ? $age_wrapper.data('checkbox-msg') : "",
2021                    empty_bday          : $age_wrapper.data('empty-bday') ? $age_wrapper.data('empty-bday') : "",
2022                    non_exist_bday      : $age_wrapper.data('non-exist-bday') ? $age_wrapper.data('non-exist-bday') : ""
2023                };
2024
2025
2026                //Check it the user has been accpeted the agreement
2027                if (localStorage.getItem($storageID)) {
2028
2029                    $( '.ma-el-rc-button' ).addClass('d-none');
2030                    $('#' + $formID).addClass('d-none');
2031                    $('#ma-el-restrict-age-' + $scopeId).removeClass('card');
2032                    $('#ma-el-restrict-age-' + $scopeId).removeClass('text-center');
2033                    $('#restrict-content-' + $scopeId).addClass('d-block');
2034
2035                } else{
2036
2037                    // Dom Selector for Onpage/Popup
2038                    if ($restrict_layout == "popup") {
2039                        var dom_selector = '#ma-el-rc-modal-'  + $scopeId;
2040                    } else {
2041                        var dom_selector = '#ma-el-restrict-content-' + $scopeId;
2042                    }
2043
2044                    $( dom_selector ).on( 'click', '.ma_el_ra_select', function() {
2045                        var wrap = $( this ).closest( '.ma_el_ra_select_wrap' );
2046                        if( !wrap.find( '.ma_el_ra_options' ).hasClass( 'ma_el_ra_active' ) ) {
2047                            $( '.ma_el_ra_options' ).removeClass( 'ma_el_ra_active' );
2048                            wrap.find( '.ma_el_ra_options' ).addClass( 'ma_el_ra_active' );
2049                            wrap.find( '.ma_el_ra_options' ).find( 'li:contains("' + wrap.find( '.ma_el_ra_select_val' ).html() + '")' ).addClass( 'ma_el_ra_active' );
2050                        }
2051                        else {
2052                            wrap.find( '.ma_el_ra_options' ).removeClass( 'ma_el_ra_active' );
2053                        }
2054                    });
2055
2056                    $( dom_selector ).on( 'click', '.ma_el_ra_options ul li', function() {
2057                        var wrap = $( this ).closest( '.ma_el_ra_select_wrap' );
2058                        wrap.find( '.ma_el_ra_select_val' ).html( $( this ).html() );
2059                        wrap.find( 'select' ).val( $( this ).attr( 'data-val' ) );
2060                        wrap.find( '.ma_el_ra_options' ).removeClass( 'ma_el_ra_active' );
2061                    });
2062
2063                    $( dom_selector ).on( 'mouseover', '.ma_el_ra_options ul li', function() {
2064                        if ( $( '.ma_el_ra_options ul li' ).hasClass( 'ma_el_ra_active' ) ) {
2065                            $( '.ma_el_ra_options ul li' ).removeClass( 'ma_el_ra_active' );
2066                        }
2067                    });
2068
2069                    $( document ).click( function(e) {
2070                        if( $( e.target ).attr( 'class' ) != 'ma_el_ra_select' && !$( '.ma_el_ra_select' ).find( $( e.target ) ).length ) {
2071                            if( $( '.ma_el_ra_options.ma_el_ra_active' ).length ) {
2072                                $( '.ma_el_ra_options' ).removeClass( 'ma_el_ra_active' );
2073                            }
2074                        }
2075                    });
2076
2077
2078                    //Onload Fancybox
2079                    if( $popup_type == "windowload" || $popup_type=="windowloadfullscreen"){
2080                           $( "#ma-el-rc-modal-hidden" ).fancybox().trigger('click');
2081                    }else{
2082                        $("[data-fancybox]").fancybox({});
2083                    }
2084
2085                    $( dom_selector ).on( 'submit', '#' + $formID , function(event) {
2086                        event.preventDefault();
2087
2088                        var form = $( this );
2089                        form.find( '.ma_el_rc_result' ).remove();
2090
2091                        $.ajax({
2092                            type: "POST",
2093                            url: jltma_scripts.ajaxurl,
2094                            data: {
2095                                action: 'ma_el_restrict_content',
2096                                fields: form.serialize(),
2097                                restrict_type: $restrict_type,
2098                                error_message: $error_message,
2099                                content_pass: $content_pass,
2100                                restrict_age: $restrict_age
2101                            },
2102                            cache: false,
2103                            success: function (result) {
2104
2105                                try {
2106                                    result = jQuery.parseJSON( result );
2107
2108                                    if ( result['result'] == 'success' ) {
2109
2110                                        $('#restrict-content-'+ $scopeId).removeClass('d-none').addClass('d-block');
2111
2112                                        //Custom Classes add/remove
2113                                        $('#' + $formID).addClass('d-none');
2114                                        $('#ma-el-restrict-age-' + $scopeId).removeClass('card');
2115                                        $('#ma-el-restrict-age-' + $scopeId).removeClass('text-center');
2116
2117
2118                                        //Set a cookie to remember the state
2119                                        localStorage.setItem($storageID, true);
2120                                        $.fancybox.close();
2121
2122                                        $('.ma-el-rc-button').addClass('d-none');
2123
2124                                    } else if ( result['result'] == 'validate' ) {
2125                                        $( '#' + $formID + ' ' + '.ma_el_rc_submit' ).after( '<div class="ma_el_rc_result"><span class="eicon-info-circle-o"></span> ' + result['output'] + '</div>' );
2126                                    } else {
2127                                        throw 0;
2128                                    }
2129                                }
2130                                catch(err) {
2131                                    $(  '#' + $formID + ' ' + '.ma_el_rc_submit' ).after( '<div class="ma_el_rc_result"><span class="eicon-loading"></span> Failed, please try again.</div>' );
2132                                }
2133
2134                            }
2135                        }); // ajax part end
2136
2137                    }); // End of Submit Event
2138
2139
2140                } // localstorage
2141
2142
2143        },
2144
2145        MA_Restrict_Content: function ($scope, $) {
2146
2147            try {
2148                (function ($) {
2149                    Master_Addons.getElementSettings = getElementSettings($scope);
2150
2151                    var $restrictwrapper = $scope.find('.ma-el-restrict-content-wrap').eq(0),
2152                        $scopeId = $scope.data('id'),
2153                        $restrict_layout = $restrictwrapper.data('restrict-layout-type'),
2154                        $restrict_type = $restrictwrapper.data('restrict-type'),
2155
2156                        $storageID = 'ma_el_rc',
2157
2158                        // Popup Settings
2159                        $popup = $scope.find('.ma-el-restrict-content-popup-content'),
2160                        $content_pass = $restrictwrapper.data('content-pass'),
2161
2162                        // Restrict Age
2163                        $age_wrapper = $scope.find('.ma-el-restrict-age-wrapper').eq(0),
2164                        $min_age = $age_wrapper.data('min-age'),
2165                        $age_type = $age_wrapper.data('age-type'),
2166                        $age_title = $age_wrapper.data('age-title'),
2167                        $age_content = $age_wrapper.data('age-content'),
2168                        $checkbox_msg = $age_wrapper.data('checkbox-msg');
2169
2170                    Master_Addons.MA_Restrict_Content_Ajax($scope, $);
2171
2172                })(jQuery);
2173            } catch (e) {
2174                //We can also throw from try block and catch it here
2175                // No Error Show
2176            }
2177        },
2178
2179        MA_Nav_Menu: function ($scope, $) {
2180            Master_Addons.getElementSettings = getElementSettings($scope);
2181
2182            var $menuContainer      = $scope.find(".jltma-nav-menu-element"),
2183                $menuID             = $menuContainer.data("menu-id"),
2184                $menu_type          = $menuContainer.data("menu-layout"),
2185                $menu_trigger       = $menuContainer.data("menu-trigger"),
2186                $menu_offcanvas     = $menuContainer.data("menu-offcanvas"),
2187                $menu_toggletype    = $menuContainer.data("menu-toggletype"),
2188                $submenu_animation  = $menuContainer.data("menu-animation"),
2189                $menu_container_id  = $menuContainer.data("menu-container-id"),
2190                $sticky_type = $menuContainer.data("sticky-type"),
2191                navbar_height = $('#' + $menu_container_id).outerHeight(),
2192                menu_container_selector = $('#' + $menu_container_id);
2193
2194            // refresh window on resize
2195            // $(window).on('resize',function(){location.reload();});
2196
2197
2198            /* One Page Menu */
2199            if ($menu_type == "onepage") {
2200
2201                $(document).on('click', '.jltma-navbar-nav li a', function (e) {
2202                    if ($(this).attr('href')) {
2203                        var self = $(this),
2204                            el = self.get(0),
2205                            href = el.href,
2206                            hasHash = href.indexOf('#'),
2207                            enable = self.parents('.jltma-navbar-nav-default').hasClass('jltma-one-page-enabled');
2208
2209                        if (hasHash !== -1 && (href.length > 1) && enable && (el.pathname == window.location.pathname)) {
2210                            e.preventDefault();
2211                            self.parents('.jltma-menu-container').find('.jltma-close').trigger('click');
2212                        }
2213                    }
2214                });
2215
2216                // Mobile Menu close outside clicking
2217                $(document).on('click', function (e) {
2218                    var click = $(e.target),
2219                        opened = $(".navbar-collapse").hasClass("show");
2220                     if(opened === true){
2221                        $(".jltma-one-page-enabled").removeClass('show');
2222                     }
2223                });
2224
2225            } else {
2226
2227
2228                // Submenu Hover Animation Effect
2229                var submenu_animate_class = 'animated ' + $submenu_animation,
2230                    submenu_selector = $('.jltma-dropdown.jltma-sub-menu');
2231                $("#" + $menuID + " .jltma-menu-has-children").hover( function () {
2232                    if (submenu_selector.hasClass('fade-up')) {
2233                        submenu_selector.removeClass('fade-up');
2234                    }
2235                    if (submenu_selector.hasClass('fade-down')) {
2236                        submenu_selector.removeClass('fade-down');
2237                    }
2238                    $('.jltma-dropdown.jltma-sub-menu').addClass( $submenu_animation );
2239                });
2240
2241
2242
2243                /* On Scroll Fixed Navbar */
2244                ///////////////// fixed menu on scroll for Desktop
2245                if ($sticky_type == "fixed-onscroll") {
2246                    if ($(window).width() > 768 ) {
2247                        $(function() {
2248                            $(window).scroll(function() {
2249                                var scroll = $(window).scrollTop();
2250                                if (scroll >= 10) {
2251                                    menu_container_selector.removeClass(''+$menu_container_id +'').addClass("jltma-on-scroll-fixed");
2252                                } else {
2253                                    menu_container_selector.removeClass("jltma-on-scroll-fixed").addClass(''+$menu_container_id +'');
2254                                }
2255                            });
2256                        });
2257                    }
2258                }
2259
2260
2261                if ($sticky_type == "sticky-top") {
2262                    if ($(window).width() > 768 ) {
2263                        $(function() {
2264                            $(window).scroll(function() {
2265                                var scroll = $(window).scrollTop();
2266                                if (scroll >= 10) {
2267                                    menu_container_selector.removeClass(''+$menu_container_id +'').addClass("sticky-top");
2268                                } else {
2269                                    menu_container_selector.removeClass("sticky-top").addClass(''+$menu_container_id +'');
2270                                }
2271                            });
2272                        });
2273                    }
2274                }
2275
2276
2277                if ($sticky_type == "smart-scroll") {
2278
2279                    // add padding top to show content behind navbar
2280                    $('body').css('padding-top', navbar_height + 'px');
2281                        menu_container_selector.addClass('jltma-smart-scroll');
2282
2283                    //////////////////////// detect scroll top or down
2284                    if ($('.jltma-smart-scroll').length > 0) { // check if element exists
2285                        var last_scroll_top = 0;
2286
2287                        $(window).on('scroll', function() {
2288                            var scroll_top = $(this).scrollTop();
2289                            if(scroll_top < last_scroll_top) {
2290                                $('.jltma-smart-scroll').removeClass('scrolled-down').addClass('scrolled-up');
2291                            }
2292                            else {
2293                                $('.jltma-smart-scroll').removeClass('scrolled-up').addClass('scrolled-down');
2294                            }
2295                            last_scroll_top = scroll_top;
2296                        });
2297                    }
2298                }
2299
2300
2301                if ($sticky_type == "nav-fixed-top") {
2302                    if ($(window).width() > 768 ) {
2303                        $(function() {
2304                            // add padding top to show content behind navbar
2305                            // $('body').css('padding-top', $('#' + $menu_container_id ).outerHeight() + 'px');
2306                            $('body').css('padding-top', navbar_height + 'px');
2307                            menu_container_selector.addClass('jltma-fixed-top');
2308
2309                        });
2310                    }
2311                }
2312
2313
2314
2315                // Menu Settings Megamenu Trigger Effect
2316                if ($('.jltma-has-megamenu').hasClass('jltma-megamenu-click')) {
2317                    $('li.jltma-megamenu-click').on('click', function (e) {
2318                        e.preventDefault;
2319                        e.stopPropagation();
2320                        $(this).toggleClass("show");
2321                        $('.dropdown-menu.jltma-megamenu').toggleClass("show");
2322                    });
2323                }
2324                // else {
2325                //     $('.jltma-has-megamenu').on('hover', function (e) {
2326                //         e.preventDefault;
2327                //         e.stopPropagation();
2328                //         $(this).toggleClass("show");
2329                //         $('.dropdown-menu.jltma-megamenu').toggleClass("show");
2330                //     });
2331                // }
2332
2333
2334                if ($menu_toggletype == "toggle") {
2335
2336                    // Menu Toggle
2337                    $("#" + $menuID + " .navbar-nav.toggle .jltma-menu-dropdown-toggle").click(function (e) {
2338                        $(this).parents(".dropdown").toggleClass("open");
2339                        e.stopPropagation();
2340                    });
2341                }
2342
2343
2344                if ($menu_offcanvas == "toggle-bar") {
2345                    $(".jltma-nav-panel .navbar-toggler").on("click", function (e) {
2346                        $('.jltma-burger').toggleClass("jltma-close");
2347                    });
2348                }
2349
2350                // Off Canvas Menu
2351                if ($menu_offcanvas == "offcanvas" || $menu_offcanvas == "overlay") {
2352
2353                    // /// offcanvas onmobile
2354                    $(".jltma-nav-panel .navbar-toggler").on("click", function (e) {
2355                        e.preventDefault();
2356                        e.stopPropagation();
2357                        var offcanvas_id = $(this).attr('data-trigger');
2358                        $(offcanvas_id).toggleClass("show");
2359                        $('body').toggleClass("offcanvas-active");
2360                        $(".jltma-nav-panel ").toggleClass("offcanvas-nav");
2361                        if ($menu_offcanvas == "overlay") {
2362                            $(".jltma-nav-panel ").toggleClass("offcanvas-overlay");
2363                        }
2364                    });
2365
2366                    /// Close menu when pressing ESC
2367                    $(document).on('keydown', function (event) {
2368                        if (event.keyCode === 27) {
2369                            $(".mobile-offcanvas").removeClass("show");
2370
2371                            $(".desktop-offcanvas").removeClass("show");
2372
2373                            $("body").removeClass("overlay-active");
2374                        }
2375                    });
2376
2377                    $(".btn-close, .jltma-nav-panel .offcanvas-nav, .jltma-nav-panel.desktop .jltma-close, .jltma-close").click(function (e) {
2378                        $(".jltma-nav-panel ").removeClass("offcanvas-nav");
2379                        $(".mobile-offcanvas").removeClass("show");
2380
2381                        $(".desktop-offcanvas").removeClass("show");
2382
2383                        $("body").removeClass("offcanvas-active");
2384                        if ($menu_offcanvas == "overlay") {
2385                            $(".jltma-nav-panel ").removeClass("offcanvas-overlay");
2386                        }
2387                    });
2388
2389
2390                }
2391
2392
2393
2394            }
2395
2396
2397
2398
2399
2400
2401        },
2402
2403
2404        initEvents: function ($scope, $) {
2405
2406            var mainSearchWrapper = $scope.find('.ma-el-search-wrapper').eq(0),
2407                $search_type      = mainSearchWrapper.data('search-type'),
2408                mainContainer = $scope.find('.main-wrap'),
2409                openCtrl = document.getElementById('btn-search'),
2410                closeCtrl = document.getElementById('btn-search-close'),
2411                searchContainer = $scope.find('.jltma-search'),
2412                inputSearch = searchContainer.find('.search__input');
2413
2414            $( openCtrl ).on('click', function(){
2415                mainContainer.addClass('main-wrap--move');
2416                searchContainer.addClass('search--open');
2417                setTimeout(function () {
2418                    inputSearch.focus();
2419                }, 600);
2420            });
2421
2422            $( closeCtrl ).on('click', function(){
2423                mainContainer.removeClass('main-wrap--move');
2424                searchContainer.removeClass('search--open');
2425                inputSearch.blur();
2426                inputSearch.value = '';
2427            });
2428
2429            document.addEventListener('keyup', function (ev) {
2430                if (ev.keyCode == 27) {
2431                    Master_Addons.closeSearch();
2432                }
2433            });
2434        },
2435
2436
2437        MA_Header_Search: function ($scope, $) {
2438            $('body').addClass('js');
2439            Master_Addons.initEvents($scope, $);
2440        }
2441
2442
2443    };
2444
2445
2446
2447
2448    $(window).on('elementor/frontend/init', function () {
2449        if (elementorFrontend.isEditMode()) {
2450            editMode = true;
2451        }
2452
2453        //Global Scripts
2454        elementorFrontend.hooks.addAction('frontend/element_ready/global', Master_Addons.MA_AnimatedGradient);
2455        elementorFrontend.hooks.addAction('frontend/element_ready/global', Master_Addons.MA_BgSlider);
2456        elementorFrontend.hooks.addAction('frontend/element_ready/global', Master_Addons.MA_ParticlesBG);
2457        elementorFrontend.hooks.addAction('frontend/element_ready/global', Master_Addons.MA_Reveal);
2458        elementorFrontend.hooks.addAction('frontend/element_ready/global', Master_Addons.MA_Rellax);
2459        elementorFrontend.hooks.addAction('frontend/element_ready/global', Master_Addons.MA_Entrance_Animation);
2460
2461
2462
2463        //Element Scripts
2464        elementorFrontend.hooks.addAction('frontend/element_ready/ma-headlines.default', Master_Addons.MA_Animated_Headlines);
2465        elementorFrontend.hooks.addAction('frontend/element_ready/ma-advanced-accordion.default', Master_Addons.MA_Accordion);
2466        elementorFrontend.hooks.addAction('frontend/element_ready/ma-tabs.default', Master_Addons.MA_Tabs);
2467        elementorFrontend.hooks.addAction('frontend/element_ready/ma-progressbar.default', Master_Addons.MA_ProgressBar);
2468        elementorFrontend.hooks.addAction('frontend/element_ready/ma-team-members-slider.default', Master_Addons.MA_TeamSlider);
2469        elementorFrontend.hooks.addAction('frontend/element_ready/ma-image-carousel.default', Master_Addons.MA_Image_Carousel);
2470        elementorFrontend.hooks.addAction('frontend/element_ready/ma-blog-post.default', Master_Addons.MA_Blog);
2471        elementorFrontend.hooks.addAction('frontend/element_ready/ma-news-ticker.default', Master_Addons.MA_NewsTicker);
2472        elementorFrontend.hooks.addAction('frontend/element_ready/ma-table-of-contents.default', Master_Addons.MA_Table_Of_Contents);
2473        elementorFrontend.hooks.addAction('frontend/element_ready/ma-el-countdown-timer.default', Master_Addons.MA_CountdownTimer);
2474        elementorFrontend.hooks.addAction('frontend/element_ready/jltma-counter-up.default', Master_Addons.MA_Counter_Up);
2475        elementorFrontend.hooks.addAction('frontend/element_ready/ma-piecharts.default', Master_Addons.MA_PiechartsHandler);
2476        elementorFrontend.hooks.addAction('frontend/element_ready/ma-timeline.default', Master_Addons.MA_Timeline);
2477        elementorFrontend.hooks.addAction('frontend/element_ready/ma-image-filter-gallery.default', Master_Addons.MA_Image_Filter_Gallery);
2478        elementorFrontend.hooks.addAction('frontend/element_ready/jltma-gallery-slider.default', Master_Addons.MA_Gallery_Slider);
2479
2480        elementorFrontend.hooks.addAction('frontend/element_ready/ma-el-image-comparison.default', Master_Addons.MA_Image_Comparison);
2481        elementorFrontend.hooks.addAction('frontend/element_ready/ma-el-restr
2481ict-content.default', Master_Addons.MA_Restrict_Content);
2482        elementorFrontend.hooks.addAction('frontend/element_ready/ma-navmenu.default', Master_Addons.MA_Nav_Menu);
2483        elementorFrontend.hooks.addAction('frontend/element_ready/ma-search.default', Master_Addons.MA_Header_Search);
2484        elementorFrontend.hooks.addAction('frontend/element_ready/ma-piecharts.default', Master_Addons.MA_PiechartsHandlerOnScroll);
2485        elementorFrontend.hooks.addAction('frontend/element_ready/ma-progressbars.default', Master_Addons.StatsBarHandlerOnScroll);
2486        elementorFrontend.hooks.addAction('frontend/element_ready/jltma-instagram-feed.default', Master_Addons.MA_Instagram_Feed);
2487        elementorFrontend.hooks.addAction('frontend/element_ready/jltma-toggle-content.default', Master_Addons.MA_Toggle_Content);
2488        elementorFrontend.hooks.addAction('frontend/element_ready/jltma-comments.default', Master_Addons.MA_Comment_Form_reCaptcha);
2489        elementorFrontend.hooks.addAction('frontend/element_ready/jltma-logo-slider.default', Master_Addons.MA_Logo_Slider);
2490        elementorFrontend.hooks.addAction('frontend/element_ready/jltma-twitter-slider.default', Master_Addons.MA_Twitter_Slider);
2491
2492
2493        if (elementorFrontend.isEditMode()) {
2494            elementorFrontend.hooks.addAction('frontend/element_ready/ma-headlines.default', Master_Addons.MA_Animated_Headlines);
2495            elementorFrontend.hooks.addAction('frontend/element_ready/ma-piecharts.default', Master_Addons.MA_PiechartsHandler);
2496            elementorFrontend.hooks.addAction('frontend/element_ready/ma-progressbars.default', Master_Addons.StatsBarHandler);
2497            elementorFrontend.hooks.addAction('frontend/element_ready/ma-news-ticker.default', Master_Addons.MA_NewsTicker);
2498            // elementorFrontend.hooks.addAction('frontend/element_ready/ma-image-filter-gallery.default', Master_Addons.MA_Image_Filter_Gallery);
2499            elementorFrontend.hooks.addAction('frontend/element_ready/jltma-gallery-slider.default', Master_Addons.MA_Gallery_Slider);
2500        }
2501
2502
2503
2504
2505    });
2506
2507})(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.