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.