1/* 2* Frontend Script for Elementor 3*/ 4; (function ($) 5{ 6 "use strict"; 7 8 var editMode = false; 9 var isRellax = false; 10 var currentDevice = ''; 11 12 var getElementSettings = function ($element, setting) 13 { 14 15 var elementSettings = {}, 16 modelCID = $element.data('model-cid'); 17 18 if (elementorFrontend.isEditMode() && modelCID) 19 { 20 var settings = elementorFrontend.config.elements.data[modelCID], 21 type = settings.attributes.widgetType || settings.attributes.elType, 22 settingsKeys = elementorFrontend.config.elements.keys[type]; 23 24 if (!settingsKeys) 25 { 26 settingsKeys = elementorFrontend.config.elements.keys[type] = []; 27 28 jQuery.each(settings.controls, function (name, control) 29 { 30 if (control.frontend_available) 31 { 32 settingsKeys.push(name); 33 } 34 }); 35 } 36 37 jQuery.each(settings.getActiveControls(), function (controlKey) 38 { 39 if (-1 !== settingsKeys.indexOf(controlKey)) 40 { 41 elementSettings[controlKey] = settings.attributes[controlKey]; 42 } 43 }); 44 } else 45 { 46 elementSettings = $element.data('settings') || {}; 47 } 48 49 return getItems(elementSettings, setting); 50 51 }; 52 53 var getItems = function (items, itemKey) 54 { 55 if (itemKey) 56 { 57 var keyStack = itemKey.split('.'), 58 currentKey = keyStack.splice(0, 1); 59 60 if (!keyStack.length) 61 { 62 return items[currentKey]; 63 } 64 65 if (!items[currentKey]) 66 { 67 return; 68 } 69 70 return this.getItems(items[currentKey], keyStack.join('.')); 71 } 72 73 return items; 74 }; 75 76 var getUniqueLoopScopeId = function ($scope) 77 { 78 if ($scope.data('jltma-template-widget-id')) 79 { 80 return $scope.data('jltma-template-widget-id'); 81 } 82 return $scope.data('id'); 83 }; 84 85 // IntersectionObserver API integration 86 function jltMAObserveTarget(target, callback) { 87 var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; 88 var observer = new IntersectionObserver(function (entries, observer) { 89 entries.forEach(function (entry) { 90 if (entry.isIntersecting) { 91 callback(entry); 92 } 93 }); 94 }, options); 95 observer.observe(target); 96 } 97 98 function sanitizeTooltipText(text) { 99 const tempDiv = document.createElement('div'); 100 tempDiv.textContent = text; 101 return tempDiv.innerHTML; 102 } 103 104 function stripTags(text) { 105 return text.replace(/<\/?[^>]+(>|$)/g, ''); 106 } 107 108 109 var Master_Addons = { 110 111 animatedProgressbar: function (id, type, value, strokeColor, trailColor, strokeWidth, strokeTrailWidth) 112 { 113 var triggerClass = '.jltma-progress-bar-' + id; 114 if ("line" == type) 115 { 116 new ldBar(triggerClass, { 117 "type": 'stroke', 118 "path": 'M0 10L100 10', 119 "aspect-ratio": 'none', 120 "stroke": strokeColor, 121 "stroke-trail": trailColor, 122 "stroke-width": strokeWidth, 123 "stroke-trail-width": strokeTrailWidth 124 }).set(value); 125 } 126 if ("line-bubble" == type) 127 { 128 new ldBar(triggerClass, { 129 "type": 'stroke', 130 "path": 'M0 10L100 10', 131 "aspect-ratio": 'none', 132 "stroke": strokeColor, 133 "stroke-trail": trailColor, 134 "stroke-width": strokeWidth, 135 "stroke-trail-width": strokeTrailWidth 136 }).set(value); 137 $($('.jltma-progress-bar-' + id).find('.ldBar-label')).animate({ 138 left: value + '%' 139 }, 1000, 'swing'); 140 } 141 if ("circle" == type) 142 { 143 new ldBar(triggerClass, { 144 "type": 'stroke', 145 "path": 'M50 10A40 40 0 0 1 50 90A40 40 0 0 1 50 10', 146 "stroke-dir": 'normal', 147 "stroke": strokeColor, 148 "stroke-trail": trailColor, 149 "stroke-width": strokeWidth,
150 "stroke-trail-width": strokeTrailWidth, 151 }).set(value); 152 } 153 if ("fan" == type) 154 { 155 new ldBar(triggerClass, { 156 "type": 'stroke', 157 "path": 'M10 90A40 40 0 0 1 90 90', 158 "stroke": strokeColor, 159 "stroke-trail": trailColor, 160 "stroke-width": strokeWidth, 161 "stroke-trail-width": strokeTrailWidth, 162 }).set(value); 163 } 164 }, 165 166 167 // Master Addons: Headlines 168 169 MA_Animated_Headlines: function ($scope, $) 170 { 171 try 172 { 173 (function ($) 174 { 175 176 Master_Addons.MA_Animated_Headlines.elementSettings = getElementSettings($scope); 177 178 /*----------- Animated Headlines --------------*/ 179 //set animation timing 180 var $animatedHeaderContainer = $scope.find('.jltma-animated-headline').eq(0), 181 182 animationDelay = Master_Addons.MA_Animated_Headlines.elementSettings.anim_delay ? Master_Addons.MA_Animated_Headlines.elementSettings.anim_delay : 2500, 183 184 //loading bar effect 185 barAnimationDelay = Master_Addons.MA_Animated_Headlines.elementSettings.bar_anim_delay ? Master_Addons.MA_Animated_Headlines.elementSettings.bar_anim_delay : 3800, 186 barWaiting = barAnimationDelay - 3000, //3000 is the duration of the transition on the loading bar - set in the scss/css file 187 188 //letters effect 189 lettersDelay = Master_Addons.MA_Animated_Headlines.elementSettings.letters_anim_delay ? Master_Addons.MA_Animated_Headlines.elementSettings.letters_anim_delay : 50, 190 191 //type effect 192 typeLettersDelay = Master_Addons.MA_Animated_Headlines.elementSettings.type_anim_delay ? Master_Addons.MA_Animated_Headlines.elementSettings.type_anim_delay : 150, 193 selectionDuration = Master_Addons.MA_Animated_Headlines.elementSettings.type_selection_delay ? Master_Addons.MA_Animated_Headlines.elementSettings.type_selection_delay : 500, 194 typeAnimationDelay = selectionDuration + 800, 195 196 //clip effect 197 revealDuration = Master_Addons.MA_Animated_Headlines.elementSettings.clip_reveal_delay ? Master_Addons.MA_Animated_Headlines.elementSettings.clip_reveal_delay : 600, 198 revealAnimationDelay = Master_Addons.MA_Animated_Headlines.elementSettings.clip_anim_duration ? Master_Addons.MA_Animated_Headlines.elementSettings.clip_anim_duration : 1500; 199 200 201 Master_Addons.MA_Animated_Headlines.singleLetters = function ($words) 202 { 203 $words.each(function () 204 { 205 var word = $(this),
206 letters = word.text().trim().split(''), 207 selected = word.hasClass('is-visible'); 208 209 for (var i = 0; i < letters.length; i++) 210 { 211 if (word.parents('.rotate-2').length > 0) { letters[i] = '<em>' + letters[i] + '</em>'; } 212 letters[i] = (selected) ? '<i class="in">' + letters[i] + '</i>' : '<i>' + letters[i] + '</i>'; 213 } 214 var newLetters = letters.join(''); 215 word.html(newLetters).css('opacity', 1); 216 }); 217 } 218 219 // function animateHeadline($headlines) { 220 Master_Addons.MA_Animated_Headlines.animateHeadline = function ($headlines) 221 { 222 223 var duration = animationDelay; 224 225 $headlines.each(function () 226 { 227 var headline = $(this); 228 229 if (headline.hasClass('loading-bar')) 230 { 231 duration = barAnimationDelay; 232 setTimeout(function () { headline.find('.ma-el-words-wrapper').addClass('is-loading') }, barWaiting); 233 } else if (headline.hasClass('clip')) 234 { 235 var spanWrapper = headline.find('.ma-el-words-wrapper'), 236 newWidth = spanWrapper.width() + 10 237 spanWrapper.css('width', newWidth); 238 } else if (!headline.hasClass('type')) 239 { 240 //assign to .ma-el-words-wrapper the width of its longest word 241 var words = headline.find('.ma-el-words-wrapper b'), 242 width = 0; 243 244 words.each(function () 245 { 246 var wordWidth = $(this).width(); 247 if (wordWidth > width) width = wordWidth; 248 }); 249 headline.find('.ma-el-words-wrapper').css('width', width); 250 }; 251 252 //trigger animation 253 setTimeout(function () { Master_Addons.MA_Animated_Headlines.hideWord(headline.find('.is-visible').eq(0)) }, duration); 254 }); 255 } 256 257 258 Master_Addons.MA_Animated_Headlines.hideWord = function ($word) 259 { 260 261 var nextWord = Master_Addons.MA_Animated_Headlines.takeNext($word); 262 263 if ($word.parents('.jltma-animated-headline').hasClass('type')) 264 { 265 var parentSpan = $word.parent('.jltma-words-wrapper'); 266 parentSpan.addClass('selected').removeClass('waiting'); 267 setTimeout(function () 268 { 269 parentSpan.removeClass('selected'); 270 $word.removeClass('is-visible').addClass('is-hidden').children('i').removeClass('in').addClass('out'); 271 }, selectionDuration); 272 setTimeout(function () { Master_Addons.MA_Animated_Headlines.showWord(nextWord, typeLettersDelay) }, typeAnimationDelay); 273 274 } else if ($word.parents('.jltma-animated-headline').hasClass('letters')) 275 { 276 var bool = ($word.children('i').length >= nextWord.children('i').length) ? true : false; 277 Master_Addons.MA_Animated_Headlines.hideLetter($word.find('i').eq(0), $word, bool, lettersDelay); 278 Master_Addons.MA_Animated_Headlines.showLetter(nextWord.find('i').eq(0), nextWord, bool, lettersDelay); 279 280 } else if ($word.parents('.jltma-animated-headline').hasClass('clip')) 281 { 282 $word.parents('.jltma-words-wrapper').animate({ width: '2px' }, revealDuration, function () 283 { 284 Master_Addons.MA_Animated_Headlines.switchWord($word, nextWord); 285 Master_Addons.MA_Animated_Headlines.showWord(nextWord); 286 }); 287 288 } else if ($word.parents('.jltma-animated-headline').hasClass('loading-bar')) 289 { 290 $word.parents('.jltma-words-wrapper').removeClass('is-loading'); 291 Master_Addons.MA_Animated_Headlines.switchWord($word, nextWord); 292 setTimeout(function () { Master_Addons.MA_Animated_Headlines.hideWord(nextWord) }, barAnimationDelay); 293 setTimeout(function () { $word.parents('.jltma-words-wrapper').addClass('is-loading') }, barWaiting); 294 295 } else 296 { 297 Master_Addons.MA_Animated_Headlines.switchWord($word, nextWord); 298 setTimeout(function () { Master_Addons.MA_Animated_Headlines.hideWord(nextWord) }, animationDelay); 299 } 300 } 301 302 Master_Addons.MA_Animated_Headlines.showWord = function ($word, $duration) 303 { 304 if ($word.parents('.jltma-animated-headline').hasClass('type')) 305 { 306 Master_Addons.MA_Animated_Headlines.showLetter($word.find('i').eq(0), $word, false, $duration); 307 $word.addClass('is-visible').removeClass('is-hidden'); 308 309 } else if ($word.parents('.jltma-animated-headline').hasClass('clip')) 310 { 311 $word.parents('.jltma-words-wrapper').animate({ 'width': $word.width() + 10 }, revealDuration, function () 312 { 313 setTimeout(function () { Master_Addons.MA_Animated_Headlines.hideWord($word) }, revealAnimationDelay); 314 }); 315 } 316 } 317 318 Master_Addons.MA_Animated_Headlines.hideLetter = function ($letter, $word, $bool, $duration) 319 { 320 $letter.removeClass('in').addClass('out'); 321 322 if (!$letter.is(':last-child')) 323 { 324 setTimeout(function () { Master_Addons.MA_Animated_Headlines.hideLetter($letter.next(), $word, $bool, $duration); }, $duration); 325 } else if ($bool) 326 { 327 setTimeout(function () { Master_Addons.MA_Animated_Headlines.hideWord(Master_Addons.MA_Animated_Headlines.takeNext($word)) }, animationDelay); 328 } 329 330 if ($letter.is(':last-child') && $('html').hasClass('no-csstransitions')) 331 { 332 var nextWord = Master_Addons.MA_Animated_Headlines.takeNext($word); 333 Master_Addons.MA_Animated_Headlines.switchWord($word, nextWord); 334 } 335 } 336 337 Master_Addons.MA_Animated_Headlines.showLetter = function ($letter, $word, $bool, $duration) 338 { 339 $letter.addClass('in').removeClass('out'); 340 341 if (!$letter.is(':last-child')) 342 { 343 setTimeout(function () { Master_Addons.MA_Animated_Headlines.showLetter($letter.next(), $word, $bool, $duration); }, $duration); 344 } else 345 { 346 if ($word.parents('.jltma-animated-headline').hasClass('type')) { setTimeout(function () { $word.parents('.jltma-words-wrapper').addClass('waiting'); }, 200); } 347 if (!$bool) { setTimeout(function () { Master_Addons.MA_Animated_Headlines.hideWord($word) }, animationDelay) } 348 } 349 } 350 351 Master_Addons.MA_Animated_Headlines.takeNext = function ($word) 352 { 353 return (!$word.is(':last-child')) ? $word.next() : $word.parent().children().eq(0); 354 } 355 356 Master_Addons.MA_Animated_Headlines.takePrev = function ($word) 357 { 358 return (!$word.is(':first-child')) ? $word.prev() : $word.parent().children().last(
358); 359 } 360 361 Master_Addons.MA_Animated_Headlines.switchWord = function ($oldWord, $newWord) 362 { 363 $oldWord.removeClass('is-visible').addClass('is-hidden'); 364 $newWord.removeClass('is-hidden').addClass('is-visible'); 365 } 366 367 Master_Addons.MA_Animated_Headlines.initHeadline = function () 368 { 369 //insert <i> element for each letter of a changing word 370 Master_Addons.MA_Animated_Headlines.singleLetters($('.jltma-animated-headline.letters').find('b')); 371 //initialise headline animation 372 Master_Addons.MA_Animated_Headlines.animateHeadline($('.jltma-animated-headline')); 373 } 374 375 Master_Addons.MA_Animated_Headlines.initHeadline(); 376 377 })(jQuery); 378 } catch (e) 379 { 380 //We can also throw from try block and catch it here 381 // No Error Show 382 } 383 384 }, 385 386 // Master Addons: Accordion 387 MA_Accordion: function ($scope, $) 388 { 389 390 var elementSettings = getElementSettings($scope), 391 $accordionHeader = $scope.find(".jltma-accordion-header"), 392 $accordionType = elementSettings.accordion_type, 393 $accordionSpeed = elementSettings.toggle_speed ? elementSettings.toggle_speed : 300; 394 395 // Open default actived tab 396 $accordionHeader.each(function () 397 { 398 if ($(this).hasClass("active-default")) 399 { 400 $(this).addClass("show active"); 401 $(this).next().slideDown($accordionSpeed); 402 } 403 }); 404 405 // Remove multiple click event for nested accordion 406 $accordionHeader.unbind("click"); 407 408 $accordionHeader.click(function (e) 409 { 410 e.preventDefault(); 411 var $this = $(this); 412 if ($accordionType === "accordion") 413 { 414 if ($this.hasClass("show")) 415 { 416 $this.removeClass("show active"); 417 $this.next().slideUp($accordionSpeed); 418 } else 419 { 420 $this.parent().parent().find(".jltma-accordion-header").removeClass("show active"); 421 $this.parent().parent().find(".jltma-accordion-tab-content").slideUp($accordionSpeed); 422 $this.toggleClass("show active"); 423 $this.next().slideDown($accordionSpeed); 424 } 425 } else 426 { 427 // Toggle type Accordion 428 if ($this.hasClass("show")) 429 { 430 $this.removeClass("show active"); 431 $this.next().slideUp($accordionSpeed); 432 } else 433 { 434 $this.addClass("show active"); 435 $this.next().slideDown($accordionSpeed); 436 } 437 } 438 }); 439 440 }, 441 442 443 444 // Master Addons: Tabs 445 446 MA_Tabs: function ($scope, $) 447 { 448 449 try 450 { 451 (function ($) 452 { 453 454 var $tabsWrapper = $scope.find('[data-tabs]'), 455 $tabEffect = $tabsWrapper.data('tab-effect'); 456 457 458 $tabsWrapper.each(function () 459 { 460 var tab = $(this); 461 var isTabActive = false; 462 var isContentActive = false; 463 464 tab.find('[data-tab]').each(function () 465 { 466 if ($(this).hasClass('active')) 467 { 468 isTabActive = true; 469 } 470 }); 471 tab.find('.jltma--advance-tab-content').each(function () 472 { 473 if ($(this).hasClass('active')) 474 { 475 isContentActive = true; 476 } 477 }); 478 if (!isContentActive) 479 { 480 tab.find('.jltma--advance-tab-content').eq(0).addClass('active'); 481 } 482 483 if ($tabEffect == "hover") 484 { 485 tab.find('[data-tab]').hover(function () 486 { 487 var $data_tab_id = $(this).data('tab-id'); 488 $(this).siblings().removeClass('active'); 489 $(this).addClass('active'); 490 $(this).closest('[data-tabs]').find('.jltma--advance-tab-content').removeClass('active'); 491 $('#' + $data_tab_id).addClass('active'); 492 }); 493 } else 494 { 495 tab.find('[data-tab]').click(function () 496 { 497 var $data_tab_id = $(this).data('tab-id'); 498 $(this).siblings().removeClass('active'); 499 $(this).addClass('active'); 500 $(this).closest('[data-tabs]').find('.jltma--advance-tab-content').removeClass('active'); 501 $('#' + $data_tab_id).addClass('active'); 502 }); 503 } 504 }); 505 506 })(jQuery); 507 } catch (e) 508 { 509 //We can also throw from try block and catch it here 510 // No Error Show 511 } 512 513 514 }, 515 516 517 //Master Addons: Progressbar 518 MA_ProgressBar: function ($scope, $) 519 { 520 var id = $scope.data('id'), 521 $progressBarWrapper = $scope.find('.jltma-progress-bar-' + id), 522 type = $progressBarWrapper.data('type'), 523 value = $progressBarWrapper.data('progress-bar-value'), 524 strokeWidth = $progressBarWrapper.data('progress-bar-stroke-width'),
525 strokeTrailWidth = $progressBarWrapper.data('progress-bar-stroke-trail-width'), 526 color = $progressBarWrapper.data('stroke-color'), 527 trailColor = $progressBarWrapper.data('stroke-trail-color'); 528 Master_Addons.animatedProgressbar(id, type, value, color, trailColor, strokeWidth, strokeTrailWidth); 529 }, 530 531 //Master Addons: Image Hotspot 532 MA_Image_Hotspot: function ($scope, $) 533 { 534 535 var elementSettings = getElementSettings($scope), 536 $ma_hotspot = $scope.find('.jltma-hotspots-container'); 537 538 if (!$ma_hotspot.length) 539 { 540 return; 541 } 542 543 var $tooltip = $ma_hotspot.find('> .jltma-tooltip-item'), 544 widgetID = $scope.data('id'); 545 546 $tooltip.each(function (index) 547 { 548 tippy(this, { 549 allowHTML: false, 550 theme: 'jltma-tippy-' + widgetID 551 }); 552 }); 553 }, 554 555 556 //Master Addons: Pricing Table 557 MA_Pricing_Table: function ($scope, $) 558 { 559 560 var $jltma_pricing_table = $scope.find('.jltma-price-table-details ul'); 561 562 if (!$jltma_pricing_table.length) 563 { 564 return; 565 } 566 567 var $tooltip = $jltma_pricing_table.find('> .jltma-tooltip-item'), 568 widgetID = $scope.data('id'); 569 570 $tooltip.each(function (index) 571 { 572 tippy(this, { 573 allowHTML: false, 574 theme: 'jltma-pricing-table-tippy-' + widgetID, 575 }); 576 }); 577 }, 578 579 580 581 582 // Dynamic Data Tables 583 JLTMA_Data_Table: function ($scope, $) 584 { 585 var a = $scope.find(".jltma-data-table-container"), 586 n = a.data("source"), 587 r = a.data("sourcecsv"); 588 if (1 == a.data("buttons")) var l = "Bfrtip"; 589 else l = "frtip"; 590 if ("custom" == n) 591 { 592 var i = $scope.find("table thead tr th").length; 593 $scope.find("table tbody tr").each(function () 594 { 595 if (e(this).find("td").length < i) 596 { 597 var t = i - e(this).find("td").length; 598 e(this).append(new Array(++t).join("<td></td>")) 599 } 600 }), $scope.find(".jltma-data-table").DataTable({ 601 dom: l, 602 paging: a.data("paging"), 603 pagingType: "numbers", 604 pageLength: a.data("pagelength"), 605 info: a.data("info"), 606 scrollX: !0, 607 searching: a.data("searching"), 608 ordering: a.data("ordering"), 609 buttons: [{ 610 extend: "csvHtml5", 611 text: jltma_data_table_vars.csvHtml5 612 }, { 613 extend: "excelHtml5", 614 text: jltma_data_table_vars.excelHtml5 615 }, { 616 extend: "pdfHtml5", 617 text: jltma_data_table_vars.pdfHtml5 618 }, { 619 extend: "print", 620 text: jltma_data_table_vars.print 621 }], 622 language: { 623 lengthMenu: jltma_data_table_vars.lengthMenu, 624 zeroRecords: jltma_data_table_vars.zeroRecords, 625 info: jltma_data_table_vars.info, 626 infoEmpty: jltma_data_table_vars.infoEmpty, 627 infoFiltered: jltma_data_table_vars.infoFiltered, 628 search: "", 629 searchPlaceholder: jltma_data_table_vars.searchPlaceholder, 630 processing: jltma_data_table_vars.processing 631 } 632 }) 633 } else if ("csv" == n) 634 { 635 ({ 636 init: function (t) 637 { 638 var a = (t = t || {}).csv_path || "", 639 n = $scope.element || $("#table-container"), 640 r = $scope.csv_options || {}, 641 l = $scope.datatables_options || {}, 642 i = $scope.custom_formatting || [], 643 s = {}; 644 $.each(i, function (e, t) 645 { 646 var a = t[0], 647 n = t[1]; 648 s[a] = n 649 }); 650 var d = $('<table class="jltma-data-table cell-border" style="width:100%;visibility:hidden;">'); 651 n.empty().append(d), $.when($.get(a)).then(function (t) 652 { 653 for (var a = e.csv.toArrays(t, r), n = $("<thead></thead>"), i = a[0], o = $("<tr></tr>"), c = 0; c < i.length; c++) o.append($("<th></th>").text(i[c])); 654 n.append(o), d.append(n); 655 for (var m = $("<tbody></tbody>
655"), p = 1; p < a.length; p++) 656 for (var _ = $("<tr></tr>"), g = 0; g < a[p].length; g++) 657 { 658 var b = $("<td></td>"), 659 f = s[g]; 660 f ? b.html(f(a[p][g])) : b.text(a[p][g]), _.append(b), m.append(_) 661 } 662 d.append(m), d.DataTable(l) 663 }) 664 } 665 }).init({ 666 csv_path: r, 667 element: a, 668 datatables_options: { 669 dom: l, 670 paging: a.data("paging"), 671 pagingType: "numbers", 672 pageLength: a.data("pagelength"), 673 info: a.data("info"), 674 scrollX: !0, 675 searching: a.data("searching"), 676 ordering: a.data("ordering"), 677 buttons: [{ 678 extend: "csvHtml5", 679 text: jltma_data_table_vars.csvHtml5 680 }, { 681 extend: "excelHtml5", 682 text: jltma_data_table_vars.excelHtml5 683 }, { 684 extend: "pdfHtml5", 685 text: jltma_data_table_vars.pdfHtml5 686 }, { 687 extend: "print", 688 text: jltma_data_table_vars.print 689 }], 690 language: { 691 lengthMenu: jltma_data_table_vars.lengthMenu, 692 zeroRecords: jltma_data_table_vars.zeroRecords, 693 info: jltma_data_table_vars.info, 694 infoEmpty: jltma_data_table_vars.infoEmpty, 695 infoFiltered: jltma_data_table_vars.infoFiltered, 696 search: "", 697 searchPlaceholder: jltma_data_table_vars.searchPlaceholder, 698 processing: jltma_data_table_vars.processing 699 } 700 } 701 }) 702 } 703 $scope.find(".jltma-data-table").css("visibility", "visible"); 704 }, 705 706 // Dropdown Button 707 JLTMA_Dropdown_Button: function ($scope, $) 708 { 709 710 $scope.find(".jltma-dropdown").hover( 711 function () 712 { 713 $scope.find(".jltma-dd-menu").addClass("jltma-dd-menu-opened"); 714 }, 715 function () 716 { 717 $scope.find(".jltma-dd-menu").removeClass("jltma-dd-menu-opened"); 718 } 719 ); 720 }, 721 722 JLTMA_WC_Add_To_Cart: function ($scope, $) 723 { 724 $(document).on('click', '.ajax_add_to_cart', function (e) 725 { 726 $(this).append('<i class="fa fa-spinner animated rotateIn infinite"></i>'); 727 }); 728 729 $(".jltma-wc-add-to-cart-btn-custom-js").each(function (index) 730 { 731 var custom_css = $(this).attr("data-jltma-wc-add-to-cart-btn-custom-css"); 732 $(custom_css).appendTo("head"); 733 }); 734 }, 735 736 /* Offcanvas Menu */ 737 MA_Offcanvas_Menu: function ($scope, $) 738 { 739 Master_Addons.MA_Offcanvas_Menu.elementSettings = $scope.data('settings'); 740 741 var widgetSelector = 'jltma-offcanvas-menu', 742 getID = $scope.data('id'), 743 getElementSettings = $scope.data('settings'), 744 is_esc_close = getElementSettings.esc_close ? getElementSettings.esc_close : '', 745 classes = { 746 widget: widgetSelector, 747 triggerButton: 'jltma-offcanvas__trigger', 748 offcanvasContent: 'jltma-offcanvas__content', 749 offcanvasContentBody: "".concat(widgetSelector, "__body"), 750 offcanvasContainer: "".concat(widgetSelector, "__container"), 751 offcanvasContainerOverlay: "".concat(widgetSelector, "__container__overlay"), 752 offcanvasWrapper: "".concat(widgetSelector, "__wrapper"), 753 closeButton: "".concat(widgetSelector, "__close"), 754 menuArrow: "".concat(widgetSelector, "__arrow"), 755 menuInner: "".concat(widgetSelector, "__menu-inner"), 756 itemHasChildrenLink: 'menu-item-has-children > a', 757 contentClassPart: 'jltma-offcanvas-content', 758 contentOpenClass: 'jltma-offcanvas-content-open', 759 customContainer: "".concat(widgetSelector, "__custom-container") 760 }, 761 selectors = { 762 widget: ".".concat(classes.widget), 763 triggerButton: ".".concat(classes.triggerButton), 764 offcanvasContent: ".".concat(classes.offcanvasContent), 765 offcanvasContentBody: ".".concat(classes.offcanvasContentBody), 766 offcanvasContainer: ".".concat(classes.offcanvasContainer), 767 offcanvasContainerOverlay: ".".concat(classes.offcanvasContainerOverlay), 768 offcanvasWrapper: ".".concat(classes.offcanvasWrapper), 769 closeButton: ".".concat(classes.closeButton), 770 menuArrow: ".".concat(classes.menuArrow), 771 menuParent: ".".concat(classes.menuInner, " .").concat(classes.itemHasChildrenLink), 772 contentClassPart: ".".concat(classes.contentClassPart), 773 contentOpenClass: ".".concat(classes.contentOpenClass), 774 customContainer: ".".concat(classes.customContainer) 775 }, 776 elements = { 777 $document: jQuery(document), 778 $html: jQuery(document).find('html'), 779 $body: jQuery(document).find('body'), 780 $outsideContainer: jQuery(selectors.offcanvasContainer), 781 $containerOverlay: jQuery(selectors.offcanvasContainerOverlay), 782 $triggerButton: $scope.find(selectors.triggerButton), 783 $offcanvasContent: $scope.find(selectors.offcanvasContent), 784 $offcanvasContentBody: $scope.find(selectors.offcanvasContentBody), 785 $offcanvasContainer: $scope.find(selectors.offcanvasContainer), 786 $offcanvasWrapper: $scope.find(selectors.offcanvasWrapper), 787 $closeButton: $scope.find(selectors.closeButton), 788 $menuParent: $scope.find(selectors.menuParent) 789 }; 790 791 // resetCanvas 792 Master_Addons.MA_Offcanvas_Menu.resetCanvas = function () 793 { 794 var contentId = getID; 795 elements.$html.addClass("".concat(classes.offcanvasContent, "-widget")); 796 797 if (!elements.$outsideContainer.length) 798 { 799 elements.$body.append("<div class=\"".concat(classes.offcanvasContainerOverlay, "\" />")); 800 elements.$body.wrapInner("<div class=\"".concat(classes.offcanvasContainer, "\" />")); 801 elements.$offcanvasContent.insertBefore(selectors.offcanvasContainer); 802 } 803 804 var $wrapperContent = elements.$offcanvasWrapper.find(selectors.offcanvasContent); 805 806 if ($wrapperContent.length) 807 { 808 809 var $containerContent = elements.$outsideContainer.find("> .".concat(classes.contentClassPart, "-").concat(contentId)); 810 811 if ($containerContent.length) 812 { 813 $containerContent.remove(); 814 } 815 816 var $bodyContent = elements.$body.find("> .".concat(classes.contentClassPart, "-").concat(contentId)); 817 818 if ($bodyContent.length) 819 { 820 $bodyContent.remove(); 821 } 822
823 if (elements.$html.hasClass(classes.contentOpenClass)) 824 { 825 $wrapperContent.addClass('active'); 826 } 827 828 elements.$body.prepend($wrapperContent); 829 } 830 } 831 832 833 834 //Master_Addons.MA_Offcanvas_Menu.offcanvasClose 835 Master_Addons.MA_Offcanvas_Menu.offcanvasClose = function () 836 { 837 var openId = elements.$html.data('open-id'); 838 var regex = new RegExp("".concat(classes.contentClassPart, "-.*")); 839 var classList = elements.$html.attr('class').split(/\s+/); 840 841 jQuery("".concat(selectors.contentClassPart, "-").concat(openId)).removeClass('active'); 842 elements.$triggerButton.removeClass('trigger-active'); 843 classList.forEach(function (className) 844 { 845 if (!className.match(regex)) 846 { 847 return; 848 } 849 elements.$html.removeClass(className); 850 }); 851 elements.$html.removeData('open-id'); 852 } 853 854 // containerClick 855 Master_Addons.MA_Offcanvas_Menu.containerClick = function (event) 856 { 857 858 var openId = elements.$html.data('open-id'); 859 860 if (getID !== openId || !getElementSettings.overlay_close) 861 { 862 return; 863 } 864
865 if (!elements.$html.hasClass(classes.contentOpenClass)) 866 { 867 return; 868 } 869 Master_Addons.MA_Offcanvas_Menu.offcanvasClose(); 870 } 871 872 Master_Addons.MA_Offcanvas_Menu.closeESC = function (event) 873 { 874 875 if (27 !== event.keyCode) 876 { 877 return; 878 } 879 Master_Addons.MA_Offcanvas_Menu.offcanvasClose(); 880 $(elements.$triggerButton).removeClass('trigger-active'); 881 } 882 883 884 Master_Addons.MA_Offcanvas_Menu.addLoaderIcon = function () 885 { 886 jQuery(document).find('.jltma-offcanvas__content').addClass('jltma-loading'); 887 } 888 Master_Addons.MA_Offcanvas_Menu.removeLoaderIcon = function () 889 { 890 jQuery(document).find('.jltma-offcanvas__content').removeClass('jltma-loading'); 891 } 892 893 // bindEvents 894 Master_Addons.MA_Offcanvas_Menu.bindEvents = function () 895 { 896 897 elements.$body.on('click', selectors.offcanvasContainerOverlay, Master_Addons.MA_Offcanvas_Menu.containerClick.bind(this)); 898 899 if ('yes' === is_esc_close) 900 { 901 elements.$document.on('keydown', Master_Addons.MA_Offcanvas_Menu.closeESC.bind(this)); 902 } 903 904 elements.$triggerButton.on('click', Master_Addons.MA_Offcanvas_Menu.offcanvasContent.bind(this)); 905 elements.$closeButton.on('click', Master_Addons.MA_Offcanvas_Menu.offcanvasClose.bind(this)); 906 elements.$menuParent.on('click', Master_Addons.MA_Offcanvas_Menu.onParentClick.bind(this)); 907 908 $(elements.$menuParent).on('change', function () 909 { 910 Master_Addons.MA_Offcanvas_Menu.onParentClick.bind($(this)); 911 }); 912 913 $("[data-settings=animation_type]").on('click', function () 914 { 915 Master_Addons.MA_Offcanvas_Menu.changeControl.bind($(this)); 916 }); 917 } 918 919 920 //perfectScrollInit 921 Master_Addons.MA_Offcanvas_Menu.perfectScrollInit = function () 922 { 923 if (!Master_Addons.MA_Offcanvas_Menu.scrollPerfect) 924 { 925 Master_Addons.MA_Offcanvas_Menu.scrollPerfect = new PerfectScrollbar(elements.$offcanvasContentBody.get(0), { 926 wheelSpeed: 0.5, 927 suppressScrollX: true 928 }); 929 return; 930 } 931 932 Master_Addons.MA_Offcanvas_Menu.scrollPerfect.update(); 933 } 934 935 //onEdit 936 Master_Addons.MA_Offcanvas_Menu.onEdit = function () 937 { 938 // elementorFrontend.isEditMode() 939 if (!Master_Addons.MA_Offcanvas_Menu.isEdit) 940 { 941 return; 942 } 943 944 if (undefined === $element.data('opened')) 945 { 946 $element.data('opened', 'false'); 947 } 948 949 elementor.channels.editor.on('section:activated', Master_Addons.MA_Offcanvas_Menu.sectionActivated.bind(this)); 950 } 951 952 953 //sectionActivated 954 Master_Addons.MA_Offcanvas_Menu.sectionActivated = function (sectionName, editor) 955 { 956 var elementsData = elementorFrontend.config.elements.data[this.getModelCID()]; 957 var editedElement = editor.getOption('editedElementView'); 958 959 if (this.getModelCID() !== editor.model.cid || elementsData.get('widgetType') !== editedElement.model.get('widgetType')) 960 { 961 return; 962 } 963 964 if (-1 !== this.sectionsArray.indexOf(sectionName)) 965 { 966 if ('true' === $element.data('opened')) 967 { 968 var editedModel = editor.getOption('model'); 969 Master_Addons.MA_Offcanvas_Menu.offcanvasContent(null, editedModel.get('id')); 970 } 971 972 $element.data('opened', 'true'); 973 974 } else 975 { 976 Master_Addons.MA_Offcanvas_Menu.offcanvasClose(); 977 } 978 } 979 980 //offcanvasContent 981 Master_Addons.MA_Offcanvas_Menu.offcanvasContent = function (event) 982 { 983 var widgetId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; 984 985 var boxPosition = getElementSettings.canvas_position; 986 var offcanvasType = getElementSettings.animation_type; 987 var contentId = getID; 988 989 if (null !== widgetId) 990 { 991 contentId = widgetId; 992 } 993 elements.$triggerButton.addClass('trigger-active'); 994 995 jQuery("".concat(selectors.contentClassPart, "-").concat(contentId)).addClass('active'); 996 elements.$html.addClass("".concat(classes.contentOpenClass)).addClass("".concat(classes.contentOpenClass, "-").concat(contentId)).addClass("".concat(classes.contentClassPart, "-").concat(boxPosition)).addClass("".concat(classes.contentClassPart, "-").concat(offcanvasType)).data('open-id', contentId); 997 } 998 999 1000 //onParentClick 1001 Master_Addons.MA_Offcanvas_Menu.onParentClick = function (event) 1002 { 1003 var $clickedItem = jQuery(event.target); 1004 var noLinkArray = ['', '#'];
1005 var $menuParent = $clickedItem.hasClass(classes.menuArrow) ? $clickedItem.parent() : $clickedItem; 1006 1007 if ($clickedItem.hasClass(classes.menuArrow) || -1 !== noLinkArray.indexOf($clickedItem.attr('href')) || !$menuParent.hasClass('active')) 1008 { 1009 event.preventDefault(); 1010 } 1011 1012 var $menuParentNext = $menuParent.next(); 1013 $menuParent.removeClass('active'); 1014 $menuParentNext.slideUp('normal'); 1015 1016 if ($menuParentNext.is('ul') && !$menuParentNext.is(':visible')) 1017 { 1018 $menuParent.addClass('active'); 1019 $menuParentNext.slideDown('normal'); 1020 } 1021 } 1022 1023 1024 //changeControl 1025 Master_Addons.MA_Offcanvas_Menu.changeControl = function () 1026 { 1027 Master_Addons.MA_Offcanvas_Menu.offcanvasClose(); 1028 } 1029 1030 // onInit 1031 Master_Addons.MA_Offcanvas_Menu.onInit = function () 1032 { 1033 1034 Master_Addons.MA_Offcanvas_Menu.resetCanvas(); 1035 1036 // Master_Addons.MA_Offcanvas_Menu.perfectScrollInit(); 1037 // Master_Addons.MA_Offcanvas_Menu.onEdit(); 1038 Master_Addons.MA_Offcanvas_Menu.bindEvents(); 1039 } 1040 // onInit 1041 1042 return Master_Addons.MA_Offcanvas_Menu.onInit(); 1043 }, 1044 1045 1046 //Master Addons: Image Filter Gallery 1047 MA_Image_Filter_Gallery: function ($scope, $) 1048 { 1049 1050 var elementSettings = getElementSettings($scope), 1051 $jltma_image_filter_gallery_wrapper = $scope.find('.jltma-image-filter-gallery-wrapper').eq(0), 1052 $ma_el_image_filter_gallery_container = $scope.find('.jltma-image-filter-gallery'), 1053 $ma_el_image_filter_gallery_nav = $scope.find('.jltma-image-filter-nav'), 1054 $ma_el_image_filter_gallery_wrapper = $scope.find('.jltma-image-filter-gallery-wrapper'), 1055 $uniqueId = getUniqueLoopScopeId($scope), 1056 $maxtilt = elementSettings.ma_el_image_gallery_max_tilt, 1057 $perspective = elementSettings.ma_el_image_gallery_perspective, 1058 $speed = elementSettings.ma_el_image_gallery_speed, 1059 $axis = elementSettings.ma_el_image_gallery_tilt_axis, 1060 $glare = elementSettings.ma_el_image_gallery_glare, 1061 $overlay_speed = elementSettings.line_location, 1062 $ma_el_image_gallery_tooltip = elementSettings.ma_el_image_gallery_tooltip, 1063 $container = $('.elementor-element-' + $uniqueId + ' .jltma-image-filter-gallery'), 1064 layoutMode = $ma_el_image_filter_gallery_wrapper.hasClass('jltma-masonry-yes') ? 'masonry' : 'fitRows'; 1065 1066 if (!$jltma_image_filter_gallery_wrapper.length) 1067 { 1068 return; 1069 } 1070 1071 if ($ma_el_image_gallery_tooltip == "yes") 1072 { 1073 1074 var $img_filter_gallery = $jltma_image_filter_gallery_wrapper.find('ul.jltma-tooltip'); 1075 1076 if (!$img_filter_gallery.length) 1077 { 1078 return; 1079 } 1080 1081 var $tooltip = $img_filter_gallery.find('> .jltma-tooltip-item'), 1082 widgetID = $scope.data('id'); 1083 1084 $tooltip.each(function (index) 1085 { 1086 tippy(this, { 1087 allowHTML: false, 1088 theme: 'jltma-image-filter-tippy-' + widgetID 1089 }); 1090 }); 1091 } 1092 1093 //Masonry Start 1094 // let container_outerheight = $container.outerHeight(); 1095 var optValues = { 1096 filter: '*', 1097 itemSelector: '.jltma-image-filter-item', 1098 percentPosition: true, 1099 animationOptions: { 1100 duration: 750, 1101 easing: 'linear', 1102 queue: false 1103 } 1104 }; 1105 if (layoutMode === 'fitRows') 1106 { 1107 optValues['layoutMode'] = 'fitRows'; 1108 } 1109 1110 // if(layoutMode === 'masonry'){ 1111 // adata['macolumnWidthsonry'] = '.jltma-image-filter-item'; 1112 // adata['horizontalOrder'] = true; 1113 // }; 1114 1115 // var $grid = $container.isotope(adata); 1116 // $grid.imagesLoaded().progress(function() { 1117 // $grid.isotope('layout'); 1118 // $scope.find('.jltma-image-filter-gallery').css({"min-height":"300px" ,"height" : container_outerheight}); 1119 // }); 1120 1121 if ($.isFunction($.fn.imagesLoaded)) 1122 { 1123 $ma_el_image_filter_gallery_container.imagesLoaded(function () 1124 { 1125 if ($.isFunction($.fn.isotope)) 1126 { 1127 $ma_el_image_filter_gallery_container.isotope(optValues); 1128 } 1129 }); 1130 } 1131 //Masonry End 1132 1133 1134 // Tilt Effect Start 1135 if ($axis === 'x') 1136 { 1137 $axis = 'y'; 1138 } else if ($axis === 'y') 1139 { 1140 $axis = 'x'; 1141 } else 1142 { 1143 $axis = 'both'; 1144 } 1145 1146 if ($glare === 'yes') 1147 { 1148 var $max_glare = elementSettings.ma_el_image_gallery_max_glare; 1149 } 1150 1151 if ($glare === 'yes') 1152 { 1153 $glare = true; 1154 } else 1155 { 1156 $glare = false;
1157 } 1158 1159 if ($scope.find('.jltma-tilt-enable')) 1160 { 1161 var tilt_args = { 1162 maxTilt: $maxtilt, 1163 perspective: $perspective, // Transform perspective, the lower the more extreme the tilt gets. 1164 //easing: "cubic-bezier(.03,.98,.52,.99)", // Easing on enter/exit. 1165 easing: "linear", 1166 scale: 1, // 2 = 200%, 1.5 = 150%, etc.. 1167 speed: $speed, // Speed of the enter/exit transition. 1168 disableAxis: $axis, 1169 transition: true, // Set a transition on enter/exit. 1170 reset: true, // If the tilt effect has to be reset on exit. 1171 glare: $glare, // Enables glare effect 1172 maxGlare: $max_glare // From 0 - 1. 1173 } 1174 1175 $scope.find('.jltma-tilt').tilt(tilt_args); 1176 } 1177 // Tilt Effect End 1178 1179 1180 $ma_el_image_filter_gallery_nav.on('click', 'li', function () 1181 { 1182 $ma_el_image_filter_gallery_nav.find('.active').removeClass('active'); 1183 $(this).addClass('active'); 1184 1185 if ($.isFunction($.fn.isotope)) 1186 { 1187 var selector = $(this).attr('data-filter'); 1188 $ma_el_image_filter_gallery_container.isotope({ 1189 filter: selector, 1190 }); 1191 return false; 1192 } 1193 }); 1194 // $("jltma-fancybox").fancybox({ 1195 $(".elementor-widget.elementor-widget-ma-image-filter-gallery .jltma-fancybox").fancybox({ 1196 protect: true, 1197 animationDuration: 366, 1198 transitionDuration: 366, 1199 transitionEffect: "fade", // Transition effect between slides 1200 animationEffect: "fade", 1201 preventCaptionOverlap: true, 1202 // loop: false, 1203 infobar: false, 1204 buttons: [ 1205 "zoom", 1206 "share", 1207 "slideShow", 1208 "fullScreen", 1209 "download", 1210 "thumbs", 1211 "close" 1212 ], 1213 afterLoad: function (instance, current) 1214 { 1215 var pixelRatio = window.devicePixelRatio || 1; 1216 1217 if (pixelRatio > 1.5) 1218 { 1219 current.width = current.width / pixelRatio; 1220 current.height = current.height / pixelRatio; 1221 } 1222 } 1223 }); 1224 1225 }, 1226 1227 1228 MA_Carousel: function ($swiper, settings) 1229 { 1230 var $slides = $swiper.find('.jltma-swiper__slide'), 1231 1232 elementorBreakpoints = elementorFrontend.config.breakpoints, 1233 1234 swiperInstance = $swiper.data('swiper'), 1235 swiperArgs = { 1236 autoHeight: settings.element.autoHeight || false, 1237 direction: settings.element.direction || settings.default.direction, 1238 effect: settings.element.effect || settings.default.effect, 1239 slidesPerView: settings.default.slidesPerView, 1240 slidesPerColumn: settings.default.slidesPerColumn, 1241 slidesPerColumnFill: 'row', 1242 slidesPerGroup: settings.default.slidesPerGroup, 1243 spaceBetween: settings.default.spaceBetween, 1244 pagination: {}, 1245 navigation: {}, 1246 autoplay: settings.element.autoplay || false, 1247 grabCursor: true, 1248 watchSlidesProgress: true, 1249 watchSlidesVisibility: true, 1250 }; 1251 1252 if (settings.default.breakpoints) 1253 { 1254 swiperArgs.breakpoints = {}; 1255 swiperArgs.breakpoints[elementorBreakpoints.md] = settings.default.breakpoints.tablet; 1256 swiperArgs.breakpoints[elementorBreakpoints.lg] = settings.default.breakpoints.desktop; 1257 } 1258 1259 if (!elementorFrontend.isEditMode()) 1260 { 1261 // Observer messes with free mode 1262 if (!settings.element.freeMode) 1263 { 1264 swiperArgs.observer = true; 1265 swiperArgs.observeParents = true; 1266 swiperArgs.observeSlideChildren = true; 1267 } 1268 } else 1269 { // But we're safe in edit mode 1270 swiperArgs.observer = true; 1271 swiperArgs.observeParents = true; 1272 swiperArgs.observeSlideChildren = true; 1273 } 1274 1275 Master_Addons.MA_Carousel.init = function () 1276 { 1277 if (swiperInstance) 1278 { 1279 Master_Addons.MA_Carousel.destroy(); 1280 return; 1281 } 1282 1283 // Number of columns 1284 if (swiperArgs.breakpoints) 1285 { 1286 if (settings.element.breakpoints.desktop.slidesPerView) 1287 { 1288 swiperArgs.breakpoints[elementorBreakpoints.lg].slidesPerView = settings.stretch ? Math.min($slides.length, +settings.element.breakpoints.desktop.slidesPerView || 3) : +settings.element.breakpoints.desktop.slidesPerView || 3; 1289 } 1290 1291 if (settings.element.breakpoints.tablet.slidesPerView) 1292 { 1293 swiperArgs.breakpoints[ elementorBreakpoints.md ].slidesPerView = settings.stretch ? Math.min( $slides.length, +settings.element.breakpoints.tablet.slidesPerView || 2 ) : +settings.element.breakpoints.tablet.slidesPerView || 2; 1294 } 1295 } 1296 1297 if (settings.element.slidesPerView) 1298 { 1299 swiperArgs.slidesPerView = settings.stretch ? Math.min($slides.length, +settings.element.slidesPerView || 1
1299) : +settings.element.slidesPerView || 1; 1300 } 1301 1302 // Number of slides to scroll 1303 if (swiperArgs.breakpoints) 1304 { 1305 if (settings.element.breakpoints.desktop.slidesPerGroup) { 1306 swiperArgs.breakpoints[elementorBreakpoints.lg].slidesPerGroup = Math.min($slides.length, +settings.element.breakpoints.desktop.slidesPerGroup || 3); 1307 } 1308 1309 if (settings.element.breakpoints.tablet.slidesPerGroup) { 1310 swiperArgs.breakpoints[elementorBreakpoints.md].slidesPerGroup = Math.min($slides.length, +settings.element.breakpoints.tablet.slidesPerGroup || 2); 1311 } 1312 } 1313 1314 if (settings.element.slidesPerGroup) 1315 { 1316 swiperArgs.slidesPerGroup = Math.min($slides.length, +settings.element.slidesPerGroup || 1); 1317 } 1318 1319 // Rows 1320 if (swiperArgs.breakpoints) 1321 { 1322 if (settings.element.breakpoints.desktop.slidesPerColumn) { 1323 swiperArgs.breakpoints[elementorBreakpoints.lg].slidesPerColumn = settings.element.breakpoints.desktop.slidesPerColumn; 1324 } 1325 1326 if (settings.element.breakpoints.tablet.slidesPerColumn) { 1327 swiperArgs.breakpoints[elementorBreakpoints.md].slidesPerColumn = settings.element.breakpoints.tablet.slidesPerColumn; 1328 } 1329 } 1330 1331 if (settings.element.slidesPerColumn) 1332 { 1333 swiperArgs.slidesPerColumn = settings.element.slidesPerColumn; 1334 } 1335 1336 // Column spacing 1337 1338 if (swiperArgs.breakpoints) 1339 { 1340 swiperArgs.breakpoints[elementorBreakpoints.lg].spaceBetween = settings.element.breakpoints.desktop.spaceBetween || 0; 1341 swiperArgs.breakpoints[elementorBreakpoints.md].spaceBetween = settings.element.breakpoints.tablet.spaceBetween || 0; 1342 } 1343 1344 if (settings.element.spaceBetween){ 1345 swiperArgs.spaceBetween = settings.element.spaceBetween || 0; 1346 } 1347 1348 if (settings.element.slidesPerColumnFill) { 1349 swiperArgs.slidesPerColumnFill = settings.element.slidesPerColumnFill; 1350 } 1351 1352 // Arrows and pagination 1353 if (settings.element.arrows) 1354 { 1355 swiperArgs.navigation.disabledClass = 'jltma-swiper__button--disabled'; 1356 1357 var $prevButton = settings.scope.find(settings.element.arrowPrev), 1358 $nextButton = settings.scope.find(settings.element.arrowNext); 1359 1360 if ($prevButton.length && $nextButton.length) 1361 { 1362 1363 var arrowPrev = settings.element.arrowPrev + '-' + settings.id, 1364 arrowNext = settings.element.arrowNext + '-' + settings.id; 1365 1366 $prevButton.addClass(arrowPrev.replace('.', '')); 1367 $nextButton.addClass(arrowNext.replace('.', '')); 1368 1369 swiperArgs.navigation.prevEl = arrowPrev; 1370 swiperArgs.navigation.nextEl = arrowNext; 1371 } 1372 } 1373 1374 if (settings.element.pagination) 1375 { 1376 swiperArgs.pagination.el = '.jltma-swiper__pagination-' + settings.id; 1377 swiperArgs.pagination.type = settings.element.paginationType; 1378 1379 if (settings.element.paginationClickable) 1380 { 1381 swiperArgs.pagination.clickable = true; 1382 } 1383 } 1384 1385 // Loop 1386 if (settings.element.loop) 1387 { 1388 swiperArgs.loop = true; 1389 // swiperArgs.loopedSlides = $slides.length; 1390 } 1391 1392 // Autoplay
1393 if (swiperArgs.autoplay && (settings.element.autoplaySpeed || settings.element.disableOnInteraction)) { 1394 swiperArgs.autoplay = {}; 1395 1396 if (settings.element.autoplaySpeed) { 1397 swiperArgs.autoplay.delay = settings.element.autoplaySpeed; 1398 } 1399 1400 if (settings.element.autoplaySpeed) { 1401 swiperArgs.autoplay.disableOnInteraction = settings.element.disableOnInteraction; 1402 } 1403 } else { 1404 1405 } 1406 1407 // Speed 1408 if (settings.element.speed) 1409 { 1410 swiperArgs.speed = settings.element.speed; 1411 } 1412 1413 // Resistance 1414 if (settings.element.resistance) 1415 { 1416 swiperArgs.resistanceRatio = 1 - settings.element.resistance; 1417 } 1418 1419 // Free Mode 1420 if (settings.element.freeMode) 1421 { 1422 swiperArgs.freeMode = true; 1423 swiperArgs.freeModeSticky = settings.element.freeModeSticky; 1424 swiperArgs.freeModeMomentum = settings.element.freeModeMomentum; 1425 swiperArgs.freeModeMomentumBounce = settings.element.freeModeMomentumBounce; 1426 1427 if (settings.element.freeModeMomentumRatio) 1428 { 1429 swiperArgs.freeModeMomentumRatio = settings.element.freeModeMomentumRatio; 1430 } 1431 1432 if (settings.element.freeModeMomentumVelocityRatio) 1433 { 1434 swiperArgs.freeModeMomentumVelocityRatio = settings.element.freeModeMomentumVelocityRatio; 1435 } 1436 1437 if (settings.element.freeModeMomentumBounceRatio) 1438 { 1439 swiperArgs.freeModeMomentumBounceRatio = settings.element.freeModeMomentumBounceRatio; 1440 } 1441 } 1442 1443 return swiperArgs; 1444 1445 // Conditional asset loading of the Swiper library with backwards compatibility 1446 // since Elementor 3.1 1447 // @link https://developers.elementor.com/experiment-optimized-asset-loading/ 1448 // var swiper; 1449 // if ('undefined' === typeof Swiper) 1450 // { 1451 // const asyncSwiper = elementorFrontend.utils.swiper; 1452 1453 // new asyncSwiper($swiper, swiperArgs).then(function (newSwiperInstance) 1454 // { 1455 // swiper = newSwiperInstance; 1456 // }); 1457 // } else 1458 // { 1459 // swiper = new Swiper($swiper, swiperArgs); 1460 // } 1461 1462 // if (settings.element.stopOnHover) 1463 // { 1464 // $swiper.on('mouseover', function () 1465 // { 1466 // swiper.autoplay.stop(); 1467 // }); 1468 1469 // $swiper.on('mouseout', function () 1470 // { 1471 // swiper.autoplay.start(); 1472 // }); 1473 // } 1474 1475 // if (settings.element.slideChangeTriggerResize) 1476 // { 1477 // swiper.on('slideChange', function () 1478 // { 1479 // $(window).trigger('resize'); 1480 // }); 1481 // } 1482 1483 // $swiper.data('swiper', swiper); 1484 // return swiper; 1485 }; 1486 1487 Master_Addons.MA_Carousel.onAfterInit = function ($swiper, swiper, settings) { 1488 if ('undefined' == typeof settings || 'undefined' == typeof swiper) { 1489 return; 1490 } 1491 1492 if (settings.element.stopOnHover) { 1493 $swiper.on('mouseover', function () { 1494 swiper.autoplay.stop(); 1495 }); 1496 1497 $swiper.on('mouseout', function () { 1498 swiper.autoplay.start(); 1499 }); 1500 } 1501 1502 if (settings.element.slideChangeTriggerResize) { 1503 swiper.on('slideChange', function () { 1504 $(window).trigger('resize'); 1505 }); 1506 } 1507 1508 $swiper.data('swiper', swiper); 1509 }; 1510 1511 1512 return Master_Addons.MA_Carousel.init(); 1513 }, 1514 1515 // Gallery Slider 1516 MA_Gallery_Slider: function ($scope, $) 1517 { 1518 // var swiper = new Swiper(".jltma-gallery-slider__gallery", { 1519 // loop: true, 1520 // spaceBetween: 10, 1521 // slidesPerView: 2, 1522 // freeMode: true, 1523 // watchSlidesProgress: true, 1524 // }); 1525 // var swiper2 = new Swiper(".jltma-gallery-slider__slider", { 1526 // loop: true, 1527 // spaceBetween: 10, 1528 // navigation: { 1529 // nextEl: ".jltma-swiper__button--next", 1530 // prevEl: ".jltma-swiper__button--prev", 1531 // }, 1532 // thumbs: { 1533 // swiper: swiper, 1534 // }, 1535 // }); 1536 // return; 1537 1538 var elementSettings = getElementSettings($scope), 1539 $swiperSlider = $scope.find('.jltma-gallery-slider__slider'), // The main slider area 1540 $swiperCarousel = $scope.find('.jltma-gallery-slider__carousel'), // The main slider area when it is carousel
1541 uniqueId = getUniqueLoopScopeId($scope), 1542 // console.log($scope); 1543 scopeId = $scope.data('id'), 1544 $preview = $scope.find('.jltma-gallery-slider__preview'), 1545 $thumbs = $scope.find('.jltma-swiper__wrapper .jltma-gallery__item'), // Thumbs will be there 1546 $thumbnailsSlider = $scope.find(".jltma-gallery-slider__gallery .jltma-gallery"), // list all thumbs 1547 $thumbtype = elementSettings.jltma_gallery_slider_thumb_type, 1548 $thumbposition = elementSettings.jltma_gallery_slider_preview_position, 1549 $thumbVertical = ($thumbposition == "top" || $thumbposition == "bottom") ? false : true, 1550 1551 start = elementorFrontend.config.is_rtl ? 'right' : 'left', 1552 end = elementorFrontend.config.is_rtl ? 'left' : 'right', 1553 hasCarousel = $swiperCarousel.length, 1554 1555 swiperSlider = null, 1556 swiperCarousel = null, 1557 1558 sliderSettings = { 1559 key : 'slider', 1560 scope : $scope, 1561 id : uniqueId, 1562 element: { 1563 autoHeight : 'yes' === elementSettings.jltma_gallery_slider_adaptive_height ? true : false, 1564 autoplay : 'yes' === elementSettings.jltma_gallery_slider_autoplay ? true : false, 1565 autoplaySpeed : 'yes' === elementSettings.jltma_gallery_slider_autoplay && elementSettings.jltma_gallery_slider_autoplay_speed ? elementSettings.jltma_gallery_slider_autoplay_speed.size: false, 1566 disableOnInteraction: '' !== elementSettings.autoplay_disable_on_interaction, 1567 stopOnHover : 'yes' === elementSettings.jltma_gallery_slider_pause_on_hover, 1568 loop : 'yes' === elementSettings.jltma_gallery_slider_infinite, 1569 arrows : '' !== elementSettings.jltma_gallery_slider_show_arrows, 1570 arrowPrev : '.jltma-arrow--prev', 1571 arrowNext : '.jltma-arrow--next', 1572 effect : elementSettings.jltma_gallery_slider_effect, 1573 speed : elementSettings.speed ? elementSettings.speed.size : 500, 1574 resistance : elementSettings.resistance ? elementSettings.resistance.size : 0.25, 1575 keyboard : { 1576 // enabled: "yes" === slider_data.jltma_slider_keyboard ? true : false 1577 enabled: true 1578 }, 1579 }, 1580 default: { 1581 effect : 'slide', 1582 direction : 'horizontal', 1583 slidesPerView : 1, 1584 slidesPerGroup : 1, 1585 slidesPerColumn: 1, 1586 spaceBetween : 0, 1587 } 1588 }; 1589 1590 // If Carousel 1591 if (hasCarousel) 1592 { 1593 var carouselSettings = { 1594 key : 'carousel', 1595 scope : $scope, 1596 id : uniqueId, 1597 // stretch: 'yes' === elementSettings.thumbnails_stretch, 1598 element: { 1599 direction : elementSettings.carousel_orientation, 1600 arrows : '' !== elementSettings.jltma_gallery_slider_thumb_show_arrows, 1601 arrowPrev : '.jltma-arrow--prev', 1602 arrowNext : '.jltma-arrow--next', 1603 autoHeight : false, 1604 loop : 'yes' === elementSettings.jltma_gallery_slider_thumb_infinite ? true : false, 1605 autoplay : 'yes' === elementSettings.jltma_gallery_slider_thumb_autoplay ? true : false, 1606 autoplaySpeed : 'yes' === elementSettings.jltma_gallery_slider_thumb_autoplay && elementSettings.jltma_gallery_slider_thumb_autoplay_speed ? elementSettings.jltma_gallery_slider_thumb_autoplay_speed.size: false, 1607 stopOnHover : 'yes' === elementSettings.jltma_gallery_slider_thumb_pause_on_hover, 1608 speed : elementSettings.jltma_gallery_slider_thumb_speed ? elementSettings.jltma_gallery_slider_thumb_speed.size : 500, 1609 slidesPerView : elementSettings.jltma_gallery_slider_thumb_items_mobile, 1610 slidesPerColumn: 'vertical' === elementSettings.carousel_orientation ? 1 : elementSettings.carousel_slides_per_column_mobile, 1611 slidesPerGroup : elementSettings.carousel_slides_to_scroll_mobile, 1612 resistance : elementSettings.carousel_resistance ? elementSettings.carousel_resistance.size : 0.15, 1613 spaceBetween : elementSettings.carousel_spacing_mobile ? elementSettings.carousel_spacing_mobile.size : 0, 1614 breakpoints : { 1615 tablet: { 1616 slidesPerView: elementSettings.jltma_gallery_slider_thumb_items_tablet, 1617 slidesPerColumn: 'vertical' === elementSettings.carousel_orientation ? 1 : elementSettings.carousel_slides_per_column_tablet, 1618 slidesPerGroup: elementSettings.carousel_slides_to_scroll_tablet, 1619 spaceBetween: elementSettings.carousel_spacing_tablet ? elementSettings.carousel_spacing_tablet.size : 0, 1620 }, 1621 desktop: { 1622 slidesPerView: elementSettings.jltma_gallery_slider_thumb_items, 1623 slidesPerColumn: 'vertical' === elementSettings.carousel_orientation ? 1 : elementSettings.carousel_slides_per_column, 1624 slidesPerGroup: elementSettings.carousel_slides_to_scroll, 1625 spaceBetween: elementSettings.carousel_spacing ? elementSettings.carousel_spacing.size : 0, 1626 }, 1627 }, 1628 }, 1629 default: { 1630 effect: 'slide', 1631 slidesPerView: 1, 1632 slidesPerGroup: 1, 1633 slidesPerColumn: 1, 1634 spaceBetween: 6, 1635 breakpoints: { 1636 tablet: { 1637 slidesPerView: 2, 1638 slidesPerGroup: 1, 1639 slidesPerColumn: 2, 1640 spaceBetween: 12, 1641 }, 1642 desktop: { 1643 slidesPerView: 3, 1644 slidesPerGroup: 1, 1645 slidesPerColumn: 3, 1646 spaceBetween: 24, 1647 }, 1648 }, 1649 }, 1650 }; 1651 } 1652 1653 1654 Master_Addons.MA_Gallery_Slider.init = function () 1655 { 1656 var sliderArgs = Master_Addons.MA_Carousel( $swiperSlider, sliderSettings ); 1657 1658 if (hasCarousel) { 1659 var carouselArgs = Master_Addons.MA_Carousel($swiperCarousel, carouselSettings); 1660 } 1661 1662 // Master_Addons.MA_Gallery_Slider.onSlideChange(); 1663 // Master_Addons.MA_Gallery_Slider.events(); 1664 1665 1666 if ('undefined' === typeof Swiper) { 1667 const asyncSwiper = elementorFrontend.utils.swiper; 1668 1669 new asyncSwiper($swiperSlider, sliderArgs).then(function (sliderSwiperInstance) { 1670 1671 if (!hasCarousel) { 1672 Master_Addons.MA_Gallery_Slider.initSliders($scope, sliderSwiperInstance, false); 1673 1674 Master_Addons.MA_Carousel.onAfterInit($swiperSlider, sliderSwiperInstance, sliderSettings); 1675 } else { 1676 new asyncSwiper($swiperCarousel, carouselArgs).then(function (carou
1676selSwiperInstance) { 1677 Master_Addons.MA_Gallery_Slider.initSliders($scope, sliderSwiperInstance, carouselSwiperInstance); 1678 1679 Master_Addons.MA_Carousel.onAfterInit($swiperSlider, sliderSwiperInstance, sliderSettings); 1680 Master_Addons.MA_Carousel.onAfterInit($swiperCarousel, carouselSwiperInstance, carouselSettings); 1681 }); 1682 } 1683 }); 1684 1685 } else { 1686 if (hasCarousel) { 1687 var swiper = new Swiper($swiperSlider[1], { 1688 ...carouselArgs, 1689 }); 1690 var swiperSlider = new Swiper($swiperSlider[0], { 1691 ...sliderArgs, 1692 thumbs: { 1693 swiper: swiper, 1694 }, 1695 }); 1696 }else{ 1697 var swiperSlider = new Swiper($swiperSlider[0], { 1698 ...sliderArgs 1699 }); 1700 } 1701 // swiperSlider = new Swiper($swiperSlider, sliderArgs); 1702 1703 if (hasCarousel) { 1704 swiperCarousel = new Swiper($swiperCarousel, carouselArgs); 1705 } 1706 1707 Master_Addons.MA_Gallery_Slider.initSliders($scope, swiperSlider, swiperCarousel); 1708 1709 Master_Addons.MA_Carousel.onAfterInit($swiperSlider, swiperSlider, sliderSettings); 1710 1711 if (hasCarousel) { 1712 Master_Addons.MA_Carousel.onAfterInit($swiperCarousel, swiperCarousel, carouselSettings); 1713 } 1714 } 1715 1716 }; 1717 1718 Master_Addons.MA_Gallery_Slider.getSlider = function () { 1719 return $scope.find('.jltma-gallery-slider__slider'); 1720 }; 1721 1722 1723 Master_Addons.MA_Gallery_Slider.getCarousel = function () { 1724 return $scope.find('.jltma-gallery-slider__carousel'); 1725 }; 1726 1727 1728 Master_Addons.MA_Gallery_Slider.initSliders = function ($scope, swiperSlider, swiperCarousel) { 1729 var data = { 1730 scope: $scope, 1731 slider: swiperSlider, 1732 carousel: swiperCarousel, 1733 }; 1734 1735 Master_Addons.MA_Gallery_Slider.onSlideChange(data); 1736 Master_Addons.MA_Gallery_Slider.events(data); 1737 }; 1738 1739 1740 Master_Addons.MA_Gallery_Slider.events = function ( data ) 1741 { 1742 1743 var $thumbs = data.scope.find('.jltma-gallery__item'); 1744 1745 data.slider.on('slideChange', function (instance) { 1746 Master_Addons.MA_Gallery_Slider.onSlideChange(data); 1747 }); 1748 1749 $thumbs.on('click', function () { 1750 var offset = sliderSettings.element.loop ? 1 : 0; 1751 1752 event.preventDefault(); 1753 data.slider.slideTo($(this).index() + offset); 1754 }); 1755 }; 1756 1757 Master_Addons.MA_Gallery_Slider.onSlideChange = function (data) 1758 { 1759 var activeIndex = sliderSettings.element.loop ? data.slider.realIndex : data.slider.activeIndex; 1760 1761 if (hasCarousel) { 1762 data.carousel.slideTo(activeIndex); 1763 } 1764 1765 var $thumbs = data.scope.find('.jltma-gallery__item'); 1766 1767 $thumbs.removeClass('is--active'); 1768 $thumbs.eq(activeIndex).addClass('is--active'); 1769 1770 }; 1771 1772 Master_Addons.MA_Gallery_Slider.onThumbClicked = function (event) 1773 { 1774 var offset = sliderSettings.element.loop ? 1 : 0; 1775 event.preventDefault(); 1776 swiperSlider.slideTo($(this).index() + offset, 500, true); 1777 }; 1778 1779 Master_Addons.onElementRemove($scope, function () 1780 { 1781 $scope.find('.swiper-container').each(function () { 1782 if ($(this).data('swiper')) { 1783 $(this).data('swiper').destroy(); 1784 } 1785 }); 1786 }); 1787 1788 1789 Master_Addons.MA_Gallery_Slider.init(); 1790 }, 1791 // MA_Gallery_Slider: function ($scope, $) { 1792 // var elementSettings = getElementSettings($scope), 1793 // $swiperSlider = $scope.find('.jltma-gallery-slider__slider'), 1794 // $swiperCarousel = $scope.find('.jltma-gallery-slider__carousel'), 1795 // uniqueId = getUniqueLoopScopeId($scope), 1796 // scopeId = $scope.data('id'), 1797 // $preview = $scope.find('.jltma-gallery-slider__preview'), 1798 // $thumbs = $scope.find('.jltma-swiper__wrapper .jltma-gallery__item'), 1799 // $thumbnailsSlider = $scope.find(".jltma-gallery-slider__gallery .jltma-gallery"), 1800 // $thumbtype = elementSettings.jltma_gallery_slider_thumb_type, 1801 // $thumbposition = elementSettings.jltma_gallery_slider_preview_position, 1802 // $thumbVertical = ($thumbposition == "top" || $thumbposition == "bottom") ? false : true, 1803 // start = elementorFrontend.config.is_rtl ? 'right' : 'left', 1804 // end = elementorFrontend.config.is_rtl ? 'left' : 'right', 1805 // hasCarousel = $swiperCarousel.length, 1806 // swiperSlider = null, 1807 // swiperCarousel = null, 1808 // sliderSettings = { 1809 // key: 'slider', 1810 // scope: $scope, 1811 // id: uniqueId, 1812 // element: { 1813 // autoHeight: 'yes' === elementSettings.jltma_gallery_slider_adaptive_height ? true : false, 1814 // autoplay: 'yes' === elementSettings.jltma_gallery_slider_autoplay ? true : false, 1815 // autoplaySpeed: 'yes' === elementSettings.jltma_gallery_slider_autoplay && elementSettings.jltma_gallery_slider_autoplay_speed ? elementSettings.jltma_gallery_slider_autoplay_speed.size : false, 1816 // disableOnInteraction: '' !== elementSettings.autoplay_disable_on_interaction, 1817 // stopOnHover: 'yes' === elementSettings.jltma_gallery_slider_pause_on_hover, 1818 // loop: 'yes' === elementSettings.jltma_gallery_slider_infinite, 1819 // arrows: '' !== elementSettings.jltma_gallery_slider_show_arrows, 1820 // arrowPrev: '.jltma-arrow--prev', 1821 // arrowNext: '.jltma-arrow--next', 1822 // effect: elementSettings.jltma_gallery_slider_effect, 1823 // speed: elementSettings.speed ? elementSettings.speed.size : 500, 1824 // resistance: elementSettings.resistance ? elementSettings.resistance.size : 0.25, 1825 // keyboard: { 1826 // enabled: true 1827 // }, 1828 // }, 1829 // default: { 1830 // effect: 'slide', 1831 // direction: 'horizontal', 1832 // slidesPerView: 1, 1833 // slidesPerGroup: 1, 1834 // slidesPerColumn: 1, 1835 // spaceBetween: 0, 1836 // } 1837 // }; 1838 1839 // if (hasCarousel) { 1840 // var carouselSettings = { 1841 // key: 'carousel', 1842 // scope: $scope, 1843 // id: uniqueId, 1844 // element: { 1845 // direction: elementSettings.carousel_orientation, 1846 // arrows: '' !== elementSettings.jltma_gallery_slider_thumb_show_arrows, 1847 // arrowPrev: '.jltma-arrow--prev', 1848 // arrowNext: '.jltma-arrow--next', 1849 // autoHeight: false, 1850 // loop: 'yes' === elementSettings.jltma_gallery_slider_thumb_infinite ? true : false, 1851 // autoplay: 'yes' === elementSettings.jltma_gallery_slider_thumb_autoplay ? true : false, 1852 // autoplaySpeed: 'yes' === elementSettings.jltma_gallery_slider_thumb_autoplay && elementSettings.jltma_gallery_slider_thumb_autoplay_speed ? elementSettings.jltma_gallery_slider_thumb_autoplay_speed.size : false, 1853 // stopOnHover: 'yes' === elementSettings.jltma_gallery_slider_thumb_pause_on_hover, 1854 // speed: elementSettings.jltma_gallery_slider_thumb_speed ? elementSettings.jltma_gallery_slider_thumb_speed.size : 500, 1855 // slidesPerView: elementSettings.jltma_gallery_slider_thumb_items_mobile, 1856 // slidesPerColumn: 'vertical' === elementSettings.carousel_orientation ? 1 : elementSettings.carousel_slides_per_column_mobile, 1857 // slidesPerGroup: elementSettings.carousel_slides_to_scroll_mobile, 1858 // resistance: elementSettings.carousel_resistance ? elementSettings.carousel_resistance.size : 0.15, 1859 // spaceBetween: elementSettings.carousel_spacing_mobile ? elementSettings.carousel_spacing_mobile.size : 0, 1860 // breakpoints: { 1861 // tablet: { 1862 // slidesPerView: elementSettings.jltma_gallery_slider_thumb_items_tablet, 1863 // slidesPerColumn: 'vertical' === elementSettings.carousel_orientation ? 1 : elementSettings.carousel_slides_per_column_tablet, 1864 // slidesPerGroup: elementSettings.carousel_slides_to_scroll_tablet, 1865 // spaceBetween: elementSettings.carousel_spacing_tablet ? elementSettings.carousel_spacing_tablet.size : 0, 1866 // }, 1867 // desktop: { 1868 // slidesPerView: elementSettings.jltma_gallery_slider_thumb_items, 1869 // slidesPerColumn: 'vertical' === elementSettings.carousel_orientation ? 1 : elementSettings.carousel_slides_per_column, 1870 // slidesPerGroup: elementSettings.carousel_slides_to_scroll, 1871 // spaceBetween: elementSettings.carousel_spacing ? elementSettings.carousel_spacing.size : 0, 1872 // }, 1873 // }, 1874 // }, 1875 // default: { 1876 // effect: 'slide', 1877 // slidesPerView: 1, 1878 // slidesPerGroup: 1, 1879 // slidesPerColumn: 1, 1880 // spaceBetween: 6, 1881 // breakpoints: { 1882 // tablet: { 1883 // slidesPerView: 2, 1884 // slidesPerGroup: 1, 1885 // slidesPerColumn: 2, 1886 // spaceBetween: 12, 1887 // }, 1888 // desktop: { 1889 // slidesPerView: 3, 1890 // slidesPerGroup: 1, 1891 // slidesPerColumn: 3, 1892 // spaceBetween: 24, 1893 // }, 1894 // }, 1895 // }, 1896 // }; 1897 // } 1898 1899 // Master_Addons.MA_Gallery_Slider.init = function () { 1900 // if ($swiperSlider.length) { 1901 // swiperSlider = Master_Addons.MA_Carousel($swiperSlider, sliderSettings); 1902 // console.log('Swiper Slider Initialized:', swiperSlider); 1903 // } 1904 // if (hasCarousel && $swiperCarousel.length) { 1905 // swiperCarousel = Master_Addons.MA_Carousel($swiperCarousel, carouselSettings); 1906 // console.log('Swiper Carousel Initialized:', swiperCarousel); 1907 // } 1908 // alert("slider ready"); 1909 // Master_Addons.MA_Gallery_Slider.events(); 1910 // Master_Addons.MA_Gallery_Slider.onSlideChange(); 1911 // }; 1912 1913 // Master_Addons.MA_Gallery_Slider.events = function () { 1914 // alert("slider events"); 1915 // if (swiperSlider) { 1916 // swiperSlider.on('slideChange', Master_Addons.MA_Gallery_Slider.onSlideChange); 1917 // } 1918 // if (hasCarousel && swiperCarousel) { 1919 // swiperCarousel.on('slideChange', Master_Addons.MA_Gallery_Slider.onSlideChange); 1920 // } 1921 // $thumbs.on('click', Master_Addons.MA_Gallery_Slider.onThumbClicked); 1922 // }; 1923 1924 // // Master_Addons.MA_Gallery_Slider.onSlideChange = function () { 1925 // // if (hasCarousel && swiperCarousel) { 1926 // // var activeIndex = sliderSettings.element.loop ? swiperCarousel.realIndex : swiperCarousel.activeIndex; 1927 // // swiperCarousel.slideTo(activeIndex, 500, true); 1928 // // } else if (swiperSlider) { 1929 // // var activeIndex = sliderSettings.element.loop ? swiperSlider.realIndex : swiperSlider.activeIndex; 1930 // // swiperSlider.slideTo(activeIndex, 500, false); 1931 // // } 1932 1933 // // $thumbs.removeClass('is--active'); 1934 // // $thumbs.eq(activeIndex).addClass('is--active'); 1935 // // }; 1936 // Master_Addons.MA_Gallery_Slider.onSlideChange = function () { 1937 // alert("slider change"); 1938 // if (hasCarousel && swiperCarousel) { 1939 // var activeIndex = sliderSettings.element.loop ? swiperCarousel.realIndex : swiperCarousel.activeIndex; 1940 // swiperCarousel.slideTo(activeIndex, 500, true); 1941 // } else if (swiperSlider) { 1942 // var activeIndex = sliderSettings.element.loop ? swiperSlider.realIndex : swiperSlider.activeIndex; 1943 // swiperSlider.slideTo(activeIndex, 500, false); 1944 // } 1945 1946 // $thumbs.removeClass('is--active'); 1947 // $thumbs.eq(activeIndex).addClass('is--active'); 1948 // }; 1949 1950 // Master_Addons.MA_Gallery_Slider.onThumbClicked = function (event) { 1951 // event.preventDefault(); 1952 // if (swiperSlider) { 1953 // var offset = sliderSettings.element.loop ? 1 : 0; 1954 // swiperSlider.slideTo($(this).index() + offset, 500, true); 1955 // } 1956 // }; 1957 1958 // Master_Addons.onElementRemove($scope, function () { 1959 // $scope.find('.swiper').each(function () { 1960 // if ($(this).data('swiper')) { 1961 // $(this).data('swiper').destroy(); 1962 // } 1963 // }); 1964 // }); 1965 1966 // $(document).ready(function () { 1967 // Master_Addons.MA_Gallery_Slider.init(); 1968 // }); 1969 // }, 1970 1971 // On Remove Event 1972 onElementRemove: function ($element, callback) 1973 { 1974 if (elementorFrontend.isEditMode()) 1975 { 1976 // Make sure it is destroyed when element is removed in editor mode 1977 elementor.channels.data.on('element:before:remove', function (model) 1978 { 1979 if ($element.data('id') === model.id) 1980 { 1981 callback(); 1982 } 1983 }); 1984 } 1985 }, 1986 1987 //Master Addons: Timeline 1988 MA_Timeline: function ($scope, $) 1989 { 1990 1991 var elementSettings = getElementSettings($scope), 1992 $timeline = $scope.find('.jltma-timeline'), 1993 $swiperSlider = $scope.find('.jltma-timeline-slider'), 1994 $timeline_type = elementSettings.ma_el_timeline_type, 1995 $timeline_layout = elementSettings.ma_el_timeline_design_type, 1996 swiperSlider = null, 1997 timelineArgs = {}, 1998 hasCarousel = $swiperSlider.length, 1999 $uniqueId = getUniqueLoopScopeId($scope);
1999 2000 2001 if ($timeline_layout === 'horizontal') 2002 { 2003 2004 var $carousel = $scope.find('.jltma-timeline-carousel-slider'); 2005 2006 if (!$carousel.length) 2007 { 2008 return; 2009 } 2010 2011 var $carouselContainer = $scope.find('.swiper'), 2012 $settings = $carousel.data('settings'), 2013 Swiper = elementorFrontend.utils.swiper; 2014 2015 initSwiper(); 2016 2017 async function initSwiper() 2018 { 2019 var swiper = await new Swiper($carouselContainer, $settings); 2020 if ($settings.pauseOnHover) 2021 { 2022 $($carouselContainer).hover(function () 2023 { 2024 (this).swiper.autoplay.stop(); 2025 }, function () 2026 { 2027 (this).swiper.autoplay.start(); 2028 }); 2029 } 2030 }; 2031 } 2032 2033 2034 if ($timeline_layout === 'vertical' || $timeline_type === "post") 2035 { 2036 var $timeline = $scope.find('.jltma-timeline'), 2037 timelineArgs = {}; 2038 2039 Master_Addons.MA_Timeline.init = function () 2040 { 2041 if (elementorFrontend.isEditMode()) 2042 { 2043 timelineArgs.scope = window.elementor.$previewContents; 2044 } 2045 2046 if ('undefined' !== typeof elementSettings.line_location && elementSettings.line_location.size) 2047 { 2048 timelineArgs.lineLocation = elementSettings.line_location.size; 2049 } 2050 $timeline.maTimeline(timelineArgs); 2051 }; 2052 Master_Addons.MA_Timeline.init(); 2053 } 2054 2055 }, 2056 2057 2058 //Master Addons: News Ticker 2059 MA_NewsTicker: function ($scope, $) 2060 { 2061 2062 try 2063 { 2064 (function ($) 2065 { 2066 $(window).load(function (e) 2067 { 2068 2069 var newsTickerWrapper = $scope.find(".jltma-news-ticker"), 2070 tickerType = newsTickerWrapper.data('tickertype'), 2071 tickerid = newsTickerWrapper.data('tickerid'), 2072 feedUrl = newsTickerWrapper.data('feedurl'), 2073 feedAnimation = newsTickerWrapper.data('feedanimation'), 2074 limitPosts = newsTickerWrapper.data('limitposts'), 2075 tickerStyleEffect = newsTickerWrapper.data('scroll'), 2076 autoplay = newsTickerWrapper.data('autoplay'), 2077 timer = newsTickerWrapper.data('timer'); 2078 2079 if (tickerType === "content") 2080 { 2081 2082 $("#" + tickerid + "").breakingNews({ 2083 effect: "" + tickerStyleEffect + "", 2084 autoplay: autoplay, 2085 timer: timer, 2086 border: false, 2087 feed: false, 2088 feedlabels: false 2089 }); 2090 } 2091 2092 if (tickerType === "feed") 2093 { 2094 2095 jQuery(function ($) 2096 { 2097 2098 var feed_container = $("#" + tickerid + ' .jltma-ticker-content-inner'); 2099 2100 $(feed_container).rss(feedUrl, 2101 { 2102 // how many entries do you want? 2103 // default: 4 2104 // valid values: any integer 2105 limit: limitPosts, 2106 2107 // want to offset results being displayed? 2108 // default: false 2109 // valid values: any integer 2110 offsetStart: false, // offset start point 2111 offsetEnd: false, // offset end point 2112 2113 // will request the API via https 2114 // default: false 2115 // valid values: false, true 2116 ssl: true, 2117 2118 2119 // which server should be requested for feed parsing 2120 // the server implementation is here: https://github.com/sdepold/feedr
2121 // default: feedrapp.info 2122 // valid values: any string 2123 // host: 'my-own-feedr-instance.com', 2124 2125 2126 // option to seldomly render ads 2127 // ads help covering the costs for the feedrapp server hosting and future improvements 2128 // default: true 2129 // valid values: false, true 2130 support: false, 2131 2132 2133 // formats the date with moment.js (optional) 2134 // default: 'dddd MMM Do' 2135 // valid values: see http://momentjs.com/docs/#/displaying/ 2136 dateFormat: 'MMMM Do, YYYY', 2137 2138 2139 // localizes the date with moment.js (optional) 2140 // default: 'en' 2141 dateLocale: 'de', 2142 2143 2144 // outer template for the html transformation 2145 // default: "<ul>{entries}</ul>" 2146 // valid values: any string 2147 2148 2149 layoutTemplate: '<ul class="jltma-ticker-content-items">{entries}</ul>', 2150 2151 // inner template for each entry 2152 // default: '<li><a href="{url}">[{author}@{date}] {title}</a><br/>{shortBodyPlain}</li>' 2153 // valid values: any string 2154 // entryTemplate: '<p>{title}</p>', 2155 // entryTemplate: '<li><a href="{url}">[{author}@{date}] {title}</a>{teaserImage}{shortBodyPlain}</li>' 2156 entryTemplate: '<li> {teaserImage} <a href="{url}"> {title}</a></li>', 2157 2158 // the effect, which is used to let the entries appear 2159 // default: 'show' 2160 // valid values: 'show', 'slide', 'slideFast', 'slideSynced', 'slideFastSynced' 2161 effect: feedAnimation, 2162 2163 }, function () 2164 { 2165 2166 $("#" + tickerid + "").breakingNews({ 2167 effect: "" + tickerStyleEffect + "", 2168 autoplay: autoplay, 2169 timer: timer 2170 }); 2171 }) 2172 }); 2173 2174 } 2175 2176 }); // End of Window load 2177 2178 })(jQuery); 2179 } catch (e) 2180 { 2181 //We can also throw from try block and catch it here 2182 // No Error Show 2183 } 2184 2185 2186 }, 2187 2188 2189 /* 2190 * Master Addons: MA Blog Posts 2191 */ 2192 2193 MA_Blog: function ($scope, $) 2194 { 2195 var elementSettings = getElementSettings($scope), 2196 uniqueId = getUniqueLoopScopeId($scope), 2197 scopeId = $scope.data('id'), 2198 $swiper = $scope.find('.jltma-swiper__container'), 2199 $thumbs = $scope.find('.jltma-grid__item'), 2200 blogElement = $scope.find(".jltma-blog-wrapper"), 2201 colsNumber = blogElement.data("col"), 2202 carousel = blogElement.data("carousel"), 2203 grid = blogElement.data("grid"); 2204 2205 $scope.find(".jltma-blog-cats-container li a").click(function (e) 2206 { 2207 e.preventDefault(); 2208 2209 $scope 2210 .find(".jltma-blog-cats-container li .active") 2211 .removeClass("active"); 2212 2213 $(this).addClass("active"); 2214 2215 var selector = $(this).attr("data-filter"); 2216 2217 blogElement.isotope({ filter: selector }); 2218 2219 return false;
2220 }); 2221 2222 var masonryBlog = blogElement.hasClass("jltma-blog-masonry"); 2223 2224 if (masonryBlog && !carousel) 2225 { 2226 blogElement.imagesLoaded(function () 2227 { 2228 blogElement.isotope({ 2229 itemSelector: ".jltma-post-outer-container", 2230 percentPosition: true, 2231 animationOptions: { 2232 duration: 750, 2233 easing: "linear", 2234 queue: false 2235 } 2236 }); 2237 }); 2238 } 2239 2240 2241 // Carousel 2242 var $carousel = $scope.find('.jltma-blog-carousel-slider'); 2243 2244 if (!$carousel.length) 2245 { 2246 return; 2247 } 2248 2249 var $carouselContainer = $scope.find('.swiper'), 2250 $settings = $carousel.data('settings'), 2251 Swiper = elementorFrontend.utils.swiper; 2252 2253 initSwiper(); 2254 2255 async function initSwiper() 2256 { 2257 var swiper = await new Swiper($carouselContainer, $settings); 2258 if ($settings.pauseOnHover) 2259 { 2260 $($carouselContainer).hover(function () 2261 { 2262 (this).swiper.autoplay.stop(); 2263 }, function () 2264 { 2265 (this).swiper.autoplay.start(); 2266 }); 2267 } 2268 }; 2269 2270 }, 2271 2272 2273 /**** MA Image Carousel ****/ 2274 MA_Image_Carousel: function ($scope, $) 2275 { 2276 2277 var $carousel = $scope.find('.jltma-image-carousel-slider'); 2278 2279 if (!$carousel.length) 2280 { 2281 return; 2282 } 2283 2284 var $carouselContainer = $scope.find('.swiper'), 2285 $settings = $carousel.data('settings'), 2286 Swiper = elementorFrontend.utils.swiper; 2287 2288 initSwiper(); 2289 2290 async function initSwiper() 2291 { 2292 var swiper = await new Swiper($carouselContainer, $settings); 2293 if ($settings.pauseOnHover) 2294 { 2295 $($carouselContainer).hover(function () 2296 { 2297 (this).swiper.autoplay.stop(); 2298 }, function () 2299 { 2300 (this).swiper.autoplay.start(); 2301 }); 2302 } 2303 }; 2304 }, 2305 2306 /**** MA Logo Slider ****/ 2307 MA_Logo_Slider: function ($scope, $) 2308 { 2309 2310 var $carousel = $scope.find('.jltma-logo-carousel-slider'); 2311 2312 if (!$carousel.length) 2313 { 2314 return; 2315 } 2316 2317 var $carouselContainer = $scope.find('.swiper'), 2318 $settings = $carousel.data('settings'), 2319 Swiper = elementorFrontend.utils.swiper; 2320 2321 initSwiper(); 2322 2323 async function initSwiper() 2324 { 2325 var swiper = await new Swiper($carouselContainer, $settings); 2326 if ($settings.pauseOnHover) 2327 { 2328 $($carouselContainer).hover(function () 2329 { 2330 (this).swiper.autoplay.stop(); 2331 }, function () 2332 { 2333 (this).swiper.autoplay.start(); 2334 }); 2335 } 2336 }; 2337 2338 2339 /** 2340 * Icon click for hover 2341 */ 2342 $carousel.find('.jltma-logo-slider-figure').on('click', '.item-hover-icon', function () 2343 { 2344 var $this = $(this); 2345 $this.toggleClass('hide'); 2346 $this.siblings('.jltma-hover-click').toggleClass('show'); 2347 }); 2348 2349 /** 2350 * Tooltip jS 2351 */ 2352 var $tooltipSelector = $carousel.find('.jltma-logo-slider-item'); 2353 $tooltipSelector.each(function (e) 2354 { 2355 var $currentTooltip = $(this).attr('id'); 2356 if ($currentTooltip) 2357 { 2358 var $dataId = $(this).data('id'); 2359 var $tooltipSettings = $(this).data('tooltip-settings'); 2360 var selector = '#' + $currentTooltip; 2361 var $follow_cursor = $tooltipSettings.follow_cursor; 2362 var placement_cursor; 2363 if ($follow_cursor == 1) 2364 { 2365 placement_cursor = { 2366 followCursor: true, 2367 }; 2368 } else 2369 { 2370 placement_cursor = { 2371 placement: $tooltipSettings.placement, 2372 followCursor: false, 2373 }; 2374 } 2375 2376 2377 var arrowType = false;
2378 if ($tooltipSettings.arrow == 1) 2379 { 2380 if ($tooltipSettings.arrow_type == 'round') 2381 { 2382 arrowType = tippy.roundArrow; 2383 } else 2384 { 2385 arrowType = true; 2386 } 2387 } 2388 2389 tippy(selector, { 2390 content: $tooltipSettings.text, 2391 ...placement_cursor, 2392 animation: $tooltipSettings.animation, 2393 arrow: arrowType, 2394 duration: $tooltipSettings.duration, 2395 delay: $tooltipSettings.delay, 2396 trigger: $tooltipSettings.trigger, // mouseenter,click, manual 2397 // flipOnUpdate: true, 2398 // interactive: true, 2399 offset: [$tooltipSettings.x_offset, $tooltipSettings.y_offset], 2400 zIndex: 999999, 2401 allowHTML: false, 2402 theme: 'jltma-tippy-' + $dataId, 2403 onShow(instance) 2404 { 2405 var tippyPopper = instance.popper; 2406 $(tippyPopper).addClass($dataId); 2407 } 2408 }); 2409 } 2410 }); 2411 }, 2412 2413 2414 2415 /**** MA Team Slider ****/ 2416 MA_TeamSlider: function ($scope, $) 2417 { 2418 2419 var elementSettings = getElementSettings($scope), 2420 uniqueId = getUniqueLoopScopeId($scope), 2421 scopeId = $scope.data('id'), 2422 $teamCarouselWrapper = $scope.find('.jltma-team-carousel-wrapper').eq(0), 2423 $team_preset = $teamCarouselWrapper.data("team-preset"), 2424 $ma_el_team_circle_image_animation = $teamCarouselWrapper.data("ma_el_team_circle_image_animation"); 2425 2426 if ($team_preset == "-content-drawer") 2427 { 2428 2429 try 2430 { 2431 (function ($) 2432 { 2433 2434 $('.gridder').gridderExpander({ 2435 scroll: false, 2436 scrollOffset: 0, 2437 scrollTo: "panel", // panel or listitem 2438 animationSpeed: 400, 2439 animationEasing: "easeInOutExpo", 2440 showNav: true, // Show Navigation 2441 nextText: "<span></span>", // Next button text 2442 prevText: "<span></span>", // Previous button text 2443 closeText: "", // Close button text 2444 onStart: function () 2445 { 2446 //Gridder Inititialized 2447 }, 2448 onContent: function () 2449 { 2450 //Gridder Content Loaded 2451 }, 2452 onClosed: function () 2453 { 2454 //Gridder Closed 2455 } 2456 }); 2457 2458 })(jQuery); 2459 } catch (e) 2460 { 2461 //We can also throw from try block and catch it here 2462 // No Error Show 2463 } 2464 2465 2466 } else { 2467 2468 var $carousel = $scope.find('.jltma-team-carousel-slider'); 2469 2470 if (!$carousel.length) 2471 { 2472 return; 2473 } 2474 2475 var $carouselContainer = $scope.find('.swiper'), 2476 $settings = $carousel.data('settings'), 2477 Swiper = elementorFrontend.utils.swiper; 2478 2479 initSwiper(); 2480 2481 async function initSwiper() 2482 { 2483 var swiper = await new Swiper($carouselContainer, $settings); 2484 if ($settings.pauseOnHover) 2485 { 2486 $($carouselContainer).hover(function () 2487 { 2488 (this).swiper.autoplay.stop(); 2489 }, function () 2490 { 2491 (this).swiper.autoplay.start(); 2492 }); 2493 } 2494 }; 2495 } 2496 2497 // else if ($team_preset == "-circle-animation"){ 2498 // if($ma_el_team_circle_image_animation == "animation_svg_04"){ 2499 // 2500 // } 2501 // } 2502 2503 }, 2504 2505 /**** MA Advanced Image ****/ 2506 MA_Advanced_Image: function ($scope, $) 2507 { 2508 2509 Master_Addons.MA_Advanced_Image.elementSettings = getElementSettings($scope); 2510 2511 $scope.find('.jltma-img-dynamic-dropshadow').each(function () 2512 { 2513 2514 var imgFrame, clonedImg, img; 2515 2516 if (this instanceof jQuery) 2517 { 2518 if (this && this[0]) 2519 { 2520 img = this[0]; 2521 } else 2522 { 2523 return; 2524 } 2525 } else 2526 { 2527 img = this; 2528 } 2529 2530 if (!img.classList.contains('jltma-img-has-shadow')) 2531 { 2532 imgFrame = document.createElement('div'); 2533 clonedImg = img.cloneNode(); 2534 2535 clonedImg.classList.add('jltma-img-dynamic-dropshadow-cloned'); 2536 clonedImg.classList.remove('jltma-img-dynamic-dropshadow'); 2537 img.classList.add('jltma-img-has-shadow'); 2538 imgFrame.classList.add('jltma-img-dynamic-dropshadow-frame'); 2539 2540 img.parentNode.appendChild(imgFrame); 2541 imgFrame.appendChild(img); 2542 imgFrame.appendChild(clonedImg); 2543 } 2544 }); 2545 2546 //Tilt Effect 2547 $scope.find('.jltma-tilt-box').tilt({ 2548 maxTilt: $(this).data('max-tilt'), 2549 easing: 'cubic-bezier(0.23, 1, 0.32, 1)', 2550 speed: $(this).data('time'), 2551 perspective: 2000 2552 }); 2553 }, 2554 2555 /* MA Tooltip */ 2556 MA_Tooltip: function ($scope, $) 2557 { 2558 var elementSettings = getElementSettings($scope), 2559 scopeId = $scope.data('id'),
2560 $currentTooltip = '#jltma-tooltip-' + scopeId, 2561 $jltma_el_tooltip_text = elementSettings.ma_el_tooltip_text ? stripTags(elementSettings.ma_el_tooltip_text) : 'This is the tooltip text', 2562 $jltma_el_tooltip_direction = elementSettings.jltma_tooltip_follow_cursor ? elementSettings.jltma_tooltip_follow_cursor : elementSettings.ma_el_tooltip_direction, 2563 $jltma_tooltip_animation = elementSettings.jltma_tooltip_animation ? elementSettings.jltma_tooltip_animation : '', 2564 $jltma_tooltip_arrow = elementSettings.jltma_tooltip_arrow ? elementSettings.jltma_tooltip_arrow : true, 2565 $jltma_tooltip_duration = elementSettings.jltma_tooltip_duration ? elementSettings.jltma_tooltip_duration : 300, 2566 $jltma_tooltip_delay = elementSettings.jltma_tooltip_delay ? elementSettings.jltma_tooltip_delay : 300, 2567 $jltma_el_tooltip_text_width = elementSettings.ma_el_tooltip_text_width ? elementSettings.ma_el_tooltip_text_width : '200px', 2568 $jltma_tooltip_arrow_type = elementSettings.jltma_tooltip_arrow_type ? elementSettings.jltma_tooltip_arrow_type : 'sharp', 2569 $jltma_tooltip_distance = elementSettings.jltma_tooltip_distance ? elementSettings.jltma_tooltip_distance : 10, 2570 $jltma_tooltip_trigger = elementSettings.jltma_tooltip_trigger ? elementSettings.jltma_tooltip_trigger : 'mouseenter', 2571 $animateFill = elementSettings.jltma_tooltip_animation == "fill" ? true : false; 2572 2573 var $ma_tooltip = $scope.find('.jltma-tooltip'); 2574 2575 if (!$ma_tooltip.length) 2576 { 2577 return; 2578 } 2579 2580 var tooltipConfig = { 2581 content: $jltma_el_tooltip_text, 2582 animation: $jltma_tooltip_animation, 2583 arrow: $jltma_tooltip_arrow, 2584 arrowType: $jltma_tooltip_arrow_type, 2585 duration: $jltma_tooltip_duration, 2586 distance: $jltma_tooltip_distance, 2587 delay: $jltma_tooltip_delay, 2588 size: $jltma_el_tooltip_text_width, 2589 trigger: $jltma_tooltip_trigger, 2590 animateFill: $animateFill, 2591 flipOnUpdate: true, 2592 maxWidth: $jltma_el_tooltip_text_width, 2593 zIndex: 999, 2594 allowHTML: false, 2595 theme: 'jltma-image-filter-tippy-' + scopeId, 2596 interactive: true, 2597 appendTo: 'parent', 2598 onShow(instance) { 2599 var tippyPopper = instance.popper; 2600 jQuery(tippyPopper).attr('data-tippy-popper-id', scopeId); 2601 } 2602 }; 2603 if ($jltma_el_tooltip_direction === "yes") { 2604 tooltipConfig.followCursor = true; // Use followCursor if "yes" 2605 } else { 2606 tooltipConfig.placement = $jltma_el_tooltip_direction; // Use placement if it's not "yes" 2607 } 2608 2609 // Initialize Tippy with the dynamic configuration 2610 tippy($currentTooltip, tooltipConfig); 2611 }, 2612 2613 /**** MA Twitter Slider ****/ 2614 2615 MA_Twitter_Slider: function ($scope, $) 2616 { 2617 2618 var $carousel = $scope.find('.jltma-twitter-carousel-slider'); 2619 2620 if (!$carousel.length) 2621 { 2622 return; 2623 } 2624 2625 var $carouselContainer = $scope.find('.swiper'), 2626 $settings = $carousel.data('settings'), 2627 Swiper = elementorFrontend.utils.swiper; 2628 2629 initSwiper(); 2630 2631 async function initSwiper() 2632 { 2633 var swiper = await new Swiper($carouselContainer, $settings); 2634 if ($settings.pauseOnHover) 2635 { 2636 $($carouselContainer).hover(function () 2637 { 2638 (this).swiper.autoplay.stop(); 2639 }, function () 2640 { 2641 (this).swiper.autoplay.start(); 2642 }); 2643 } 2644 }; 2645 2646 2647 }, 2648 2649 2650 MA_ParticlesBG: function ($scope, $) 2651 { 2652 if ($scope.hasClass('jltma-particle-yes')) 2653 { 2654 let id = $scope.data('id'); 2655 let element_type = $scope.data('element_type'); 2656 let pdata = $scope.data('jltma-particle'); 2657 let pdata_wrapper = $scope.find('.jltma-particle-wrapper').data('ma-el-pdata'); 2658 if (typeof pdata != 'undefined' && pdata != '') 2659 { 2660 if ($scope.find('.ma-el-section-bs').length > 0) 2661 { 2662 $scope.find('.ma-el-section-bs').after('<div class="jltma-particle-wrapper"' + 2663 ' id="jltma-particle-' + id + '"></div>'); 2664 particlesJS('jltma-particle-' + id, pdata); 2665 } else 2666 { 2667 if (element_type == 'column') 2668 { 2669 // $scope.prepend('<div class="jltma-particle-wrapper" id="jltma-particle-' + id + '"></div>'); 2670 2671 $scope.find('.elementor-widget-wrap').prepend('<div class="jltma-particle-wrapper"' + 2672 ' id="jltma-particle-' + id + '"></div>'); 2673 } else 2674 { 2675 $scope.prepend('<div class="jltma-particle-wrapper" id="jltma-particle-' + id + '"></div>'); 2676 } 2677 2678 particlesJS('jltma-particle-' + id, pdata); 2679 } 2680 2681 2682 } else if (typeof pdata_wrapper != 'undefined' && pdata_wrapper != '') 2683 { 2684 $scope.prepend('<div class="jltma-particle-wrapper" id="jltma-particle-'+ id +'"></div>'); 2685 2686 if (element_type == 'column') 2687 { 2688 $scope.find('.elementor-widget-wrap').prepend('<div class="jltma-particle-wrapper"' + 2689 ' id="jltma-particle-' + id + '"></div>'); 2690 } 2691 else 2692 { 2693 $scope.prepend('<div class="jltma-particle-wrapper" id="jltma-particle-' + id + '"></div>'); 2694 } 2695 2696 particlesJS('jltma-particle-' + id, JSON.parse(pdata_wrapper)); 2697 } 2698 2699 } 2700 // 2701 // })(jQuery); 2702 // } catch(e) { 2703 // //We can also throw from try block and catch it here 2704 // // No Error Show 2705 // } 2706 2707 }, 2708 2709 MA_BgSlider: function ($scope, $) 2710 { 2711 var ma_el_slides = [], ma_el_slides_json = [], ma_el_transition, ma_el_animation, ma_el_custom_overlay, ma_el_overlay, ma_el_cover, ma_el_delay, ma_el_timer; 2712 var slider_wrapper = $scope.children('.ma-el-section-bs').children('.ma-el-section-bs-inner'); 2713 2714 if (slider_wrapper && slider_wrapper.data('ma-el-bg-slider')) 2715 { 2716 2717 var slider_images = slider_wrapper.data('ma-el-bg-slider'); 2718 ma_el_transition = slider_wrapper.data('ma-el-bg-slider-transition'); 2719 ma_el_animation = slider_wrapper.data('ma-el-bg-slider-animation');
2720 ma_el_custom_overlay = slider_wrapper.data('ma-el-bg-custom-overlay'); 2721 if (ma_el_custom_overlay == 'yes') 2722 { 2723 ma_el_overlay = jltma_scripts.plugin_url + 'assets/lib/vegas/overlays/' + slider_wrapper.data('ma-el-bg-slider-overlay'); 2724 } else 2725 { 2726 if (slider_wrapper.data('ma-el-bg-slider-overlay')) 2727 { 2728 ma_el_overlay = jltma_scripts.plugin_url + 'assets/lib/vegas/overlays/' + slider_wrapper.data('ma-el-bg-slider-overlay'); 2729 } else 2730 { 2731 ma_el_overlay = jltma_scripts.plugin_url + 'assets/lib/vegas/overlays/' + slider_wrapper.data('ma-el-bg-slider-overlay'); 2732 } 2733 } 2734 2735 ma_el_cover = slider_wrapper.data('ma-el-bg-slider-cover'); 2736 ma_el_delay = slider_wrapper.data('ma-el-bs-slider-delay'); 2737 ma_el_timer = slider_wrapper.data('ma-el-bs-slider-timer'); 2738 2739 if (typeof slider_images != 'undefined') 2740 { 2741 ma_el_slides = slider_images.split(","); 2742 2743 jQuery.each(ma_el_slides, function (key, value) 2744 { 2745 var slide = []; 2746 slide.src = value; 2747 ma_el_slides_json.push(slide); 2748 }); 2749 2750 slider_wrapper.vegas({ 2751 slides: ma_el_slides_json, 2752 transition: ma_el_transition, 2753 animation: ma_el_animation, 2754 overlay: ma_el_overlay, 2755 cover: ma_el_cover, 2756 delay: ma_el_delay, 2757 timer: ma_el_timer, 2758 init: function () 2759 { 2760 if (ma_el_custom_overlay == 'yes') 2761 { 2762 var ob_vegas_overlay = slider_wrapper.children('.vegas-overlay'); 2763 ob_vegas_overlay.css('background-image', ''); 2764 } 2765 } 2766 }); 2767 2768 } 2769 } 2770 }, 2771 2772 MA_AnimatedGradient: function ($scope, $) 2773 { 2774 2775 if ($scope.hasClass('ma-el-animated-gradient-yes')) 2776 { 2777 let id = $scope.data('id'); 2778 let color = $scope.data('color'); 2779 let angle = $scope.data('angle'); 2780 let gradient_color = 'linear-gradient(' + angle + ',' + color + ')'; 2781 let heading = $scope.find('.elementor-heading-title'); 2782 $scope.css('background-image', gradient_color); 2783 2784 if ($scope.hasClass('elementor-element-edit-mode')) 2785 { 2786 color = $scope.find('.animated-gradient').data('color'); 2787 angle = $scope.find('.animated-gradient').data('angle'); 2788 let gradient_color_editor = 'linear-gradient(' + angle + ',' + color + ')'; 2789 $scope.prepend('<div class="animated-gradient" style="background-image : ' + gradient_color_editor + ' "></div>'); 2790 //$scope.find('.animated-gradient').css('background-image', gradient_color_editor); 2791 //$scope.find('.animated-gradient').css('background-color', 'red'); 2792 } 2793 //$scope.css('position', 'relative'); 2794 //$scope.css('background-color', 'black'); 2795 2796 } 2797 2798 }, 2799 2800 2801 MA_Image_Comparison: function ($scope, $) 2802 { 2803 var $jltma_image_comp_wrap = $scope.find('.jltma-image-comparison').eq(0), 2804 $jltma_image_data = $jltma_image_comp_wrap.data('image-comparison-settings'); 2805 2806 $jltma_image_comp_wrap.twentytwenty({ 2807 default_offset_pct: $jltma_image_data.visible_ratio, 2808 orientation: $jltma_image_data.orientation, 2809 before_label: $jltma_image_data.before_label, 2810 after_label: $jltma_image_data.after_label, 2811 move_slider_on_hover: $jltma_image_data.slider_on_hover, 2812 move_with_handle_only: $jltma_image_data.slider_with_handle, 2813 click_to_move: $jltma_image_data.slider_with_click, 2814 no_overlay: $jltma_image_data.no_overlay 2815 }); 2816 }, 2817 2818 MA_BarCharts: function BarChart($scope) { 2819 jltMAObserveTarget($scope[0], function () { 2820 var $container = $scope.find('.jltma-bar-chart-container'),
2821 $chart_canvas = $scope.find('#jltma-bar-chart'), 2822 settings = $container.data('settings'); 2823 if ($container.length) { 2824 new Chart($chart_canvas, settings); 2825 } 2826 }); 2827 }, 2828 2829 MA_PieCharts: function ($scope, $) 2830 { 2831 jltMAObserveTarget($scope[0], function () { 2832 $scope.find('.ma-el-piechart .ma-el-percentage').each(function () { 2833 var track_color = $(this).data('track-color'); 2834 var bar_color = $(this).data('bar-color'); 2835 2836 $(this).easyPieChart({ 2837 animate: 2000, 2838 lineWidth: 10, 2839 barColor: bar_color, 2840 trackColor: track_color, 2841 scaleColor: false, 2842 lineCap: 'square', 2843 size: 220 2844 }); 2845 }); 2846 }); 2847 }, 2848 2849 ProgressBars: function ($scope, $) 2850 { 2851 jltMAObserveTarget($scope[0], function () { 2852 $scope.find('.jltma-stats-bar-content').each(function () { 2853 var dataperc = $(this).data('perc'); 2854 $(this).animate({ "width": dataperc + "%" }, dataperc * 20); 2855 }); 2856 }); 2857 }, 2858 2859 2860 // Toggle Content 2861 MA_Toggle_Content: function ($scope, $) 2862 { 2863 Master_Addons.getElementSettings = getElementSettings($scope); 2864 var $wrapper = $scope.find('.jltma-toggle-content'), 2865 toggleElementArgs = { 2866 active: Master_Addons.getElementSettings.jltma_toggle_content_active_index, 2867 }; 2868 2869 if ('' !== Master_Addons.getElementSettings.jltma_toggle_content_indicator_color) 2870 { 2871 toggleElementArgs.indicatorColor = Master_Addons.getElementSettings.jltma_toggle_content_indicator_color; 2872 } 2873 2874 if (Master_Addons.getElementSettings.jltma_toggle_content_indicator_speed.size) 2875 { 2876 toggleElementArgs.speed = Master_Addons.getElementSettings.jltma_toggle_content_indicator_speed.size; 2877 } 2878 2879 if (elementorFrontend.isEditMode()) 2880 { 2881 toggleElementArgs.watchControls = true; 2882 } 2883 2884 $wrapper.MA_ToggleElement(toggleElementArgs); 2885 }, 2886 2887 2888 // Comment Form reCaptcha 2889 MA_Comment_Form_reCaptcha: function ($scope, $) 2890 { 2891 Master_Addons.getElementSettings = getElementSettings($scope); 2892 var $commentsWrapper = $scope.find(".jltma-comments-wrap"), 2893 $comments_recaptcha_data = $commentsWrapper.data("recaptcha"), 2894 $recaptcha_protected = $commentsWrapper.data("jltma-comment-settings"), 2895 jltma_comment_form; 2896 2897 if ($recaptcha_protected.reCaptchaprotected == "yes") 2898 { 2899 var onloadCallback = function () 2900 { 2901 jltma_comment_form = grecaptcha.render("jltma_comment_form", { 2902 "sitekey": $comments_recaptcha_data.sitekey, 2903 "theme": $comments_recaptcha_data.theme 2904 }); 2905 grecaptcha.reset(jltma_comment_form); 2906 }; 2907 } 2908 2909 }, 2910 2911 2912 // Master Addons: Counter Up 2913 MA_Counter_Up: function ($scope, $) 2914 { 2915 var $counterup = $scope.find(".jltma-counter-up-number"); 2916 2917 if ($.isFunction($.fn.counterUp)) 2918 { 2919 $counterup.counterUp({ 2920 duration: 2000, 2921 delay: 15, 2922 2923 }); 2924 } 2925 }, 2926 2927 2928 // Master Addons: Countdown Timer 2929 MA_CountdownTimer: function ($scope, $) 2930 { 2931 2932 var $countdownWidget = $scope.find(".jltma-widget-countdown"); 2933 $.fn.MasterCountDownTimer = function () 2934 { 2935 var $wrapper = $(this).find(".jltma-countdown-wrapper"), 2936 data = { 2937 year: $wrapper.data("countdown-year"), 2938 month: $wrapper.data("countdown-month"), 2939 day: $wrapper.data("countdown-day"), 2940 hour: $wrapper.data("countdown-hour"), 2941 min: $wrapper.data("countdown-min"), 2942 sec: $wrapper.data("countdown-sec") 2943 }, 2944 2945 targetDate = new Date(data.year, data.month, data.day, data.hour, data.min, data.sec); 2946 var $year = $wrapper.find('.jltma-countdown-year'), 2947 $month = $wrapper.find('.jltma-countdown-month'), 2948 $day = $wrapper.find('.jltma-countdown-day'), 2949 $hour = $wrapper.find('.jltma-countdown-hour'), 2950 $min = $wrapper.find('.jltma-countdown-min'), 2951 $sec = $wrapper.find('.jltma-countdown-sec'); 2952 2953 setInterval(function () 2954 { 2955 var diffTime = (Date.parse(targetDate) - Date.parse(new Date())) / 1000; 2956 2957 if (diffTime < 0) return; 2958 2959 $year.text(Math.floor(diffTime / (31536000))); // 1 year = 3153600 second 2960 $month.text(Math.floor((diffTime / 2592000) % 12)); // 1 month = 2592000 second 2961 $day.text(Math.floor((diffTime / 86400) % 365)); // 1 day = 86400 second 2962 $hour.text(Math.floor((diffTime / 3600) % 24)); // 1 hour = 3600 second 2963 $min.text(Math.floor((diffTime / 60) % 60)); // 1 min = 60 second 2964 $sec.text(Math.floor((diffTime) % 60)); 2965 }, 1e3) 2966 }, $countdownWidget.each(function () 2967 { 2968 $(this).MasterCountDownTimer() 2969 }) 2970 2971 2972 }, 2973 2974 /** 2975 * Fancybox popup 2976 */ 2977 MA_Fancybox_Popup: function ($scope, $) 2978 { 2979 (function ($) 2980 { 2981 if ($.isFunction($.fn.fancybox)) 2982 { 2983 $("[data-fancybox]").fancybox({}); 2984 } 2985 })(jQuery); 2986 }, 2987 2988 /* 2989 * REVEAL 2990 */ 2991 MA_Reveal: function ($scope, $) 2992 { 2993 2994 Master_Addons.MA_Reveal.elementSettings = getElementSettings($scope); 2995 2996 var rev1, 2997 isReveal = false;
2998 2999 Master_Addons.MA_Reveal.revealAction = function () 3000 { 3001 rev1 = new RevealFx(revealistance, { 3002 revealSettings: { 3003 bgcolor: Master_Addons.MA_Reveal.elementSettings.reveal_bgcolor, 3004 direction: Master_Addons.MA_Reveal.elementSettings.reveal_direction, 3005 duration: Number(Master_Addons.MA_Reveal.elementSettings.reveal_speed.size) * 100, 3006 delay: Number(Master_Addons.MA_Reveal.elementSettings.reveal_delay.size) * 100, 3007 onCover: function (contentEl, revealerEl) 3008 { 3009 contentEl.style.opacity = 1; 3010 } 3011 } 3012 }); 3013 } 3014 3015 Master_Addons.MA_Reveal.runReveal = function () 3016 { 3017 rev1.reveal(); 3018 } 3019 3020 if (Master_Addons.MA_Reveal.elementSettings.enabled_reveal) 3021 { 3022 3023 var revealId = '#reveal-' + $scope.data('id'), 3024 revealistance = document.querySelector(revealId); 3025 3026 if (!jQuery(revealId).hasClass('block-revealer')) { 3027 Master_Addons.MA_Reveal.revealAction(); 3028 } 3029 3030 Master_Addons.MA_Reveal.waypointOptions = { 3031 offset: '100%', 3032 triggerOnce: true 3033 }; 3034 3035 jltMAObserveTarget(revealistance, Master_Addons.MA_Reveal.runReveal, Master_Addons.MA_Reveal.waypointOptions); 3036 } 3037 }, 3038 3039 /* 3040 * MA Rellax 3041 */ 3042 MA_Rellax: function ($scope, $) 3043 { 3044 3045 var elementSettings = getElementSettings($scope); 3046 var rellax = null; 3047 3048 $(window).on('resize', function () 3049 { 3050 3051 if (rellax) 3052 { 3053 rellax.destroy(); 3054 if (rellax) 3055 initRellax(); 3056 } 3057 }); 3058 3059 var initRellax = function () 3060 { 3061 if (elementSettings.enabled_rellax) 3062 { 3063 3064 currentDevice = elementorFrontend.getCurrentDeviceMode(); 3065 3066 var setting_speed = 'speed_rellax'; 3067 var value_speed = 0; 3068 3069 if (currentDevice != 'desktop') 3070 { 3071 setting_speed = 'speed_rellax_' + currentDevice; 3072 } 3073 3074 if (eval('elementSettings.' + setting_speed + '.size')) 3075 value_speed = eval('elementSettings.' + setting_speed + '.size'); 3076 3077 3078 var rellaxId = '#rellax-' + $scope.data('id'); 3079 3080 if ($(rellaxId).length) 3081 rellax = new Rellax(rellaxId, { 3082 speed: value_speed 3083 } 3084 ); 3085 isRellax = true; 3086 }; 3087 }; 3088 3089 initRellax(); 3090 3091 }, 3092 3093 MA_Rellax_Final: function (panel, model, view) 3094 { 3095 Master_Addons.getElementSettings = getElementSettings($scope); 3096 var $scope = view.$el; 3097 var scene = $scope.find('#scene'); 3098 }, 3099 3100 3101 // Entrance Animations 3102 MA_Entrance_Animation: function ($scope, $) 3103 { 3104 3105 $scope = $scope || $(this); 3106 3107 var $target = $scope.hasClass('jltma-appear-watch-animation') ? $scope : $scope.find('.jltma-appear-watch-animation'), 3108 hasAnimation = $('body').hasClass('jltma-page-animation'); 3109 3110 if (!$target.length) 3111 { 3112 return; 3113 } 3114 3115 if (hasAnimation) 3116 { 3117 document.body.addEventListener('JltmaPageAnimationDone', function (event) 3118 { 3119 $target.appearl({ 3120 offset: '200px', 3121 insetOffset: '0px' 3122 }).one('appear', function (event, data) 3123 { 3124 this.classList.add('jltma-animated'); 3125 this.classList.add('jltma-animated-once'); 3126 }); 3127 }); 3128 } else 3129 { 3130 $target.appearl({ 3131 offset: '200px', 3132 insetOffset: '0px' 3133 }).one('appear', function (event, data) 3134 { 3135 this.classList.add('jltma-animated'); 3136 this.classList.add('jltma-animated-once'); 3137 }); 3138 } 3139 3140 }, 3141 3142 3143 // Wrapper Link 3144 MA_Wrapper_Link: function ($scope, $) 3145 { 3146 $('body').on('click.onWrapperLink', '[data-jltma-wrapper-link]', function(e) { 3147 var $wrapper = $(this), 3148 data = $wrapper.data("jltma-wrapper-link"), 3149 id = $wrapper.data("id"), 3150 anchor = document.createElement("a"), 3151 anchorReal, 3152 timeout = 100; 3153 anchor.id = "master-addons-wrapper-link-" + id; 3154 anchor.href = data.url; 3155 anchor.target = data.is_external ? "_blank" : "_self"; 3156 anchor.rel = data.nofollow ? "nofollow noreferer" : ""; 3157 anchor.style.display = "none"; 3158 document.body.appendChild(anchor); 3159 anchorReal = document.getElementById(anchor.id); 3160 anchorReal.click(); 3161 3162 timeout = setTimeout(function () { 3163 document.body.removeChild(anchorReal); 3164 clearTimeout(timeout); 3165 }); 3166 }); 3167 }, 3168 3169 /** 3170 * Restrict Content 3171 */ 3172 MA_Restrict_Content_Ajax: function ($scope, $) 3173 { 3174 3175 Master_Addons.getElementSettings = getElementSettings($scope); 3176 3177 var $restrictwrapper = $scope.find('.jltma-restrict-content-wrap').eq(0), 3178 $scopeId = $scope.data('id'), 3179 $restrict_layout = $restrictwrapper.data('restrict-layout-type'), 3180 $restrict_type = $restrictwrapper.data('restrict-type'), 3181 $error_message = $restrictwrapper.data('error-message'), 3182 $rc_ajaxify = $restrictwrapper.data('rc-ajaxify'), 3183 3184 $storageID = 'ma_el_rc_' + $scopeId, 3185 $formID = $scope.find('.jltma-restrict-form').eq(0).data('form-id'), 3186 3187 // Content 3188 $content_div = '#restrict-content-' + $scopeId, 3189 3190 // Popup Settings 3191 $popup = $scope.find('.jltma-restrict-content-popup-content'), 3192 $content_pass = $restrictwrapper.data('content-pass') ? $restrictwrapper.data('content-pass') : '', 3193 $popup_type = $popup.data('popup-type') ? $popup.data('popup-type') : '', 3194 3195 // Restrict Age 3196 $age_wrapper = $scope.find('.jltma-restrict-age-wrapper').eq(0), 3197 3198 $restrict_age = { 3199 min_age: $age_wrapper.data('min-age'), 3200 age_type: $age_wrapper.data('age-type'), 3201 age_title: $age_wrapper.data('age-title'), 3202 age_content: $age_wrapper.data('age-content'), 3203 age_submit: $('#' + $formID).find('button[name="submit"]').val(), 3204 checkbox_msg: $age_wrapper.data('checkbox-msg') ? $age_wrapper.data('checkbox-msg') : "", 3205 empty_bday: $age_wrapper.data('empty-bday') ? $age_wrapper.data('empty-bday') : "", 3206 non_exist_bday: $age_wrapper.data('non-exist-bday') ? $age_wrapper.data('non-exist-bday') : "" 3207 }; 3208 3209 3210 //Check it the user has been accpeted the agreement
3211 if (localStorage.getItem($storageID)) 3212 { 3213 3214 $('.jltma-rc-button').addClass('d-none'); 3215 $('#' + $formID).addClass('d-none'); 3216 $('#jltma-restrict-age-' + $scopeId).removeClass('card'); 3217 $('#jltma-restrict-age-' + $scopeId).removeClass('text-center'); 3218 $('#restrict-content-' + $scopeId).addClass('d-block'); 3219 3220 } else 3221 { 3222 3223 // Dom Selector for Onpage/Popup 3224 if ($restrict_layout == "popup") 3225 { 3226 var dom_selector = '#jltma-rc-modal-' + $scopeId; 3227 } else 3228 { 3229 var dom_selector = '#jltma-restrict-content-' + $scopeId; 3230 } 3231 3232 $(dom_selector).on('click', '.jltma_ra_select', function () 3233 { 3234 var wrap = $(this).closest('.jltma_ra_select_wrap'); 3235 if (!wrap.find('.jltma_ra_options').hasClass('jltma_ra_active')) 3236 { 3237 $('.jltma_ra_options').removeClass('jltma_ra_active'); 3238 wrap.find('.jltma_ra_options').addClass('jltma_ra_active'); 3239 wrap.find('.jltma_ra_options').find('li:contains("' + wrap.find('.jltma_ra_select_val').html() + '")').addClass('jltma_ra_active'); 3240 } 3241 else 3242 { 3243 wrap.find('.jltma_ra_options').removeClass('jltma_ra_active'); 3244 } 3245 }); 3246 3247 $(dom_selector).on('click', '.jltma_ra_options ul li', function () 3248 { 3249 var wrap = $(this).closest('.jltma_ra_select_wrap'); 3250 wrap.find('.jltma_ra_select_val').html($(this).html()); 3251 wrap.find('select').val($(this).attr('data-val')); 3252 wrap.find('.jltma_ra_options').removeClass('jltma_ra_active'); 3253 }); 3254 3255 $(dom_selector).on('mouseover', '.jltma_ra_options ul li', function () 3256 { 3257 if ($('.jltma_ra_options ul li').hasClass('jltma_ra_active')) 3258 { 3259 $('.jltma_ra_options ul li').removeClass('jltma_ra_active'); 3260 } 3261 }); 3262 3263 $(document).click(function (e) 3264 { 3265 if ($(e.target).attr('class') != 'jltma_ra_select' && !$('.jltma_ra_select').find($(e.target)).length) 3266 { 3267 if ($('.jltma_ra_options.jltma_ra_active').length) 3268 { 3269 $('.jltma_ra_options').removeClass('jltma_ra_active'); 3270 } 3271 } 3272 }); 3273 3274 3275 //Onload Fancybox 3276 if ($popup_type == "windowload" || $popup_type == "windowloadfullscreen") 3277 { 3278 $("#ma-el-rc-modal-hidden").fancybox().trigger('click'); 3279 } else 3280 { 3281 $("[data-fancybox]").fancybox({}); 3282 } 3283 3284 $(dom_selector).on('submit', '#' + $formID, function (event) 3285 { 3286 event.preventDefault(); 3287 3288 var form = $(this); 3289 form.find('.jltma_rc_result').remove(); 3290 3291 $.ajax({ 3292 type: "POST", 3293 url: jltma_scripts.ajaxurl, 3294 data: { 3295 action: 'jltma_restrict_content', 3296 fields: form.serialize(), 3297 restrict_type: $restrict_type, 3298 error_message: $error_message, 3299 content_pass: $content_pass, 3300 restrict_age: $restrict_age 3301 }, 3302 cache: false, 3303 success: function (result) 3304 { 3305 3306 try 3307 { 3308 result = jQuery.parseJSON(result); 3309 3310 if (result['result'] == 'success') 3311 { 3312 3313 $('#restrict-content-' + $scopeId).removeClass('d-none').addClass('d-block'); 3314 3315 //Custom Classes add/remove 3316 $('#' + $formID).addClass('d-none'); 3317 $('#jltma-restrict-age-' + $scopeId).removeClass('card'); 3318 $('#jltma-restrict-age-' + $scopeId).removeClass('text-center'); 3319 3320 3321 //Set a cookie to remember the state 3322 localStorage.setItem($storageID, true); 3323 $.fancybox.close(); 3324 3325 $('.jltma-rc-button').addClass('d-none'); 3326 3327 } else if (result['result'] == 'validate') 3328 { 3329 $('#' + $formID + ' ' + '.jltma_rc_submit').after('<div class="jltma_rc_result"><span class="eicon-info-circle-o"></span> ' + result['output'] + '</div>'); 3330 } else 3331 { 3332 throw 0; 3333 } 3334 } 3335 catch (err) 3336 { 3337 $('#' + $formID + ' ' + '.jltma_rc_submit').after('<div class="jltma_rc_result"><span class="eicon-loading"></span> Failed, please try again.</div>'); 3338 } 3339 3340 } 3341 }); // ajax part end 3342 3343 }); // End of Submit Event 3344 3345 3346 } // localstorage 3347 3348 3349 }, 3350 3351 MA_Restrict_Content: function ($scope, $) 3352 { 3353 3354 try 3355 { 3356 (function ($) 3357 { 3358 Master_Addons.getElementSettings = getElementSettings($scope); 3359 3360 var $restrictwrapper = $scope.find('.jltma-restrict-content-wrap').eq(0), 3361 $scopeId = $scope.data('id'), 3362 $restrict_layout = $restrictwrapper.data('restrict-layout-type'), 3363 $restrict_type = $restrictwrapper.data('restrict-type'), 3364 3365 $storageID = 'ma_el_rc', 3366 3367 // Popup Settings 3368 $popup = $scope.find('.jltma-restrict-content-popup-content'), 3369 $content_pass = $restrictwrapper.data('content-pass'), 3370 3371 // Restrict Age 3372 $age_wrapper = $scope.find('.jltma-restrict-age-wrapper').eq(0), 3373 $min_age = $age_wrapper.data('min-age'), 3374 $age_type = $age_wrapper.data('age-type'), 3375 $age_title = $age_wrapper.data('age-title'), 3376 $age_content = $age_wrapper.data('age-content'), 3377 $checkbox_msg = $age_wrapper.data('checkbox-msg'); 3378 3379 Master_Addons.MA_Restrict_Content_Ajax($scope, $); 3380 3381 })(jQuery); 3382 } catch (e) 3383 { 3384 //We can also throw from try block and catch it here 3385 // No Error Show 3386 } 3387 }, 3388 3389 MA_Nav_Menu: function ($scope, $) 3390 { 3391 Master_Addons.getElementSettings = getElementSettings($scope); 3392 3393 var $menuContainer = $scope.find(".jltma-nav-menu-element"), 3394 $menuID = $menuContainer.data("menu-id"), 3395 $menu_type = $menuContainer.data("menu-layout"), 3396 $menu_trigger = $menuContainer.data("menu-trigger"), 3397 $menu_offcanvas = $menuContainer.data("menu-offcanvas"), 3398 $menu_toggletype = $menuContainer.data("menu-toggletype"), 3399 $submenu_animation = $menuContainer.data("menu-animation"), 3400 $menu_container_id = $menuContainer.data("menu-container-id"), 3401 $sticky_type = $menuContainer.data("sticky-type"), 3402 navbar_height = $('#' + $menu_container_id).outerHeight(), 3403 menu_container_selector = $('#' + $menu_container_id); 3404 3405 // refresh window on resize 3406 // $(window).on('resize',function(){location.reload();}); 3407 3408 3409 /* One Page Menu */ 3410 if ($menu_type == "onepage") 3411 { 3412 3413 $(document).on('click', '.jltma-navbar-nav li a', function (e) 3414 { 3415 if ($(this).attr('href')) 3416 { 3417 var self = $(this), 3418 el = self.get(0), 3419 href = el.href, 3420 hasHash = href.indexOf('#'), 3421 enable = self.parents('.jltma-navbar-nav-default').hasClass('jltma-one-page-enabled'); 3422 3423 if (hasHash !== -1 && (href.length > 1) && enable && (el.pathname == window.location.pathname)) 3424 { 3425 e.preventDefault(); 3426 self.parents('.jltma-menu-container').find('.jltma-close').trigger('click'); 3427 } 3428 } 3429 }); 3430 3431 // Mobile Menu close outside clicking 3432 $(document).on('click', function (e) 3433 { 3434 var click = $(e.target), 3435 opened = $(".navbar-collapse").hasClass("show"); 3436 if (opened === true) 3437 { 3438 $(".jltma-one-page-enabled").removeClass('show'); 3439 } 3440 }); 3441 3442 } else 3443 { 3444 3445 3446 // Submenu Hover Animation Effect 3447 var submenu_animate_class = 'animated ' + $submenu_animation, 3448 submenu_selector = $('.jltma-dropdown.jltma-sub-menu'); 3449 $("#" + $menuID + " .jltma-menu-has-children").hover(function () 3450 { 3451 if (submenu_selector.hasClass('fade-up')) 3452 { 3453 submenu_selector.removeClass('fade-up'); 3454 } 3455 if (submenu_selector.hasClass('fade-down')) 3456 { 3457 submenu_selector.removeClass('fade-down'); 3458 } 3459 $('.jltma-dropdown.jltma-sub-menu').addClass($submenu_animation); 3460 }); 3461 3462 3463 3464 /* On Scroll Fixed Navbar */
3465 ///////////////// fixed menu on scroll for Desktop 3466 if ($sticky_type == "fixed-onscroll") 3467 { 3468 if ($(window).width() > 768) 3469 { 3470 $(function () 3471 { 3472 $(window).scroll(function () 3473 { 3474 var scroll = $(window).scrollTop(); 3475 if (scroll >= 10) 3476 { 3477 menu_container_selector.removeClass('' + $menu_container_id + '').addClass("jltma-on-scroll-fixed"); 3478 } else 3479 { 3480 menu_container_selector.removeClass("jltma-on-scroll-fixed").addClass('' + $menu_container_id + ''); 3481 } 3482 }); 3483 }); 3484 } 3485 } 3486 3487 3488 if ($sticky_type == "sticky-top") 3489 { 3490 if ($(window).width() > 768) 3491 { 3492 $(function () 3493 { 3494 $(window).scroll(function () 3495 { 3496 var scroll = $(window).scrollTop(); 3497 if (scroll >= 10) 3498 { 3499 menu_container_selector.removeClass('' + $menu_container_id + '').addClass("sticky-top"); 3500 } else 3501 { 3502 menu_container_selector.removeClass("sticky-top").addClass('' + $menu_container_id + ''); 3503 } 3504 }); 3505 }); 3506 } 3507 } 3508 3509 3510 if ($sticky_type == "smart-scroll") 3511 { 3512 3513 // add padding top to show content behind navbar 3514 $('body').css('padding-top', navbar_height + 'px'); 3515 menu_container_selector.addClass('jltma-smart-scroll'); 3516
3517 //////////////////////// detect scroll top or down 3518 if ($('.jltma-smart-scroll').length > 0) 3519 { // check if element exists 3520 var last_scroll_top = 0; 3521 3522 $(window).on('scroll', function () 3523 { 3524 var scroll_top = $(this).scrollTop(); 3525 if (scroll_top < last_scroll_top) 3526 { 3527 $('.jltma-smart-scroll').removeClass('scrolled-down').addClass('scrolled-up'); 3528 } 3529 else 3530 { 3531 $('.jltma-smart-scroll').removeClass('scrolled-up').addClass('scrolled-down'); 3532 } 3533 last_scroll_top = scroll_top; 3534 }); 3535 } 3536 } 3537 3538 3539 if ($sticky_type == "nav-fixed-top") 3540 { 3541 if ($(window).width() > 768) 3542 { 3543 $(function () 3544 { 3545 // add padding top to show content behind navbar 3546 // $('body').css('padding-top', $('#' + $menu_container_id ).outerHeight() + 'px'); 3547 $('body').css('padding-top', navbar_height + 'px'); 3548 menu_container_selector.addClass('jltma-fixed-top'); 3549 3550 }); 3551 } 3552 } 3553 3554 3555 3556 // Menu Settings Megamenu Trigger Effect 3557 // if ($('.jltma-has-megamenu').hasClass('jltma-megamenu-click')) { 3558 // $('.jltma-megamenu-click').on('click', function (e) { 3559 // e.preventDefault(); 3560 // e.stopPropagation(); 3561 // $(this).toggleClass("show"); 3562 // $('.dropdown-menu.jltma-megamenu').toggleClass("show"); 3563 // }); 3564 // } 3565 // else { 3566 // $('.jltma-has-megamenu').on('hover', function (e) { 3567 // e.preventDefault; 3568 // e.stopPropagation(); 3569 // $(this).toggleClass("show"); 3570 // $('.dropdown-menu.jltma-megamenu').toggleClass("show"); 3571 // }); 3572 // } 3573 3574 3575 if ($menu_toggletype == "toggle") 3576 { 3577 3578 // Menu Toggle 3579 $("#" + $menuID + " .navbar-nav.toggle .jltma-menu-dropdown-toggle").click(function (e) 3580 { 3581 $(this).parents(".dropdown").toggleClass("open"); 3582 e.stopPropagation(); 3583 }); 3584 } 3585 3586 3587 if ($menu_offcanvas == "toggle-bar") 3588 { 3589 $(".jltma-nav-panel .navbar-toggler").on("click", function (e) 3590 { 3591 $('.jltma-burger').toggleClass("jltma-close"); 3592 }); 3593 } 3594 3595 // Off Canvas Menu 3596 if ($menu_offcanvas == "offcanvas" || $menu_offcanvas == "overlay") 3597 { 3598 3599 // /// offcanvas onmobile 3600 $(".jltma-nav-panel .navbar-toggler").on("click", function (e) 3601 { 3602 e.preventDefault(); 3603 e.stopPropagation(); 3604 var offcanvas_id = $(this).attr('data-trigger'); 3605 $(offcanvas_id).toggleClass("show"); 3606 $('body').toggleClass("offcanvas-active"); 3607 $(".jltma-nav-panel ").toggleClass("offcanvas-nav"); 3608 if ($menu_offcanvas == "overlay") 3609 { 3610 $(".jltma-nav-panel ").toggleClass("offcanvas-overlay"); 3611 } 3612 }); 3613 3614 /// Close menu when pressing ESC 3615 $(document).on('keydown', function (event) 3616 { 3617 if (event.keyCode === 27) 3618 { 3619 $(".mobile-offcanvas").removeClass("show"); 3620 3621 $(".desktop-offcanvas").removeClass("show"); 3622 3623 $("body").removeClass("overlay-active"); 3624 } 3625 }); 3626 3627 $(".btn-close, .jltma-nav-panel .offcanvas-nav, .jltma-nav-panel.desktop .jltma-close, .jltma-close").click(function (e) 3628 { 3629 $(".jltma-nav-panel ").removeClass("offcanvas-nav"); 3630 $(".mobile-offcanvas").removeClass("show"); 3631 3632 $(".desktop-offcanvas").removeClass("show"); 3633 3634 $("body").removeClass("offcanvas-active"); 3635 if ($menu_offcanvas == "overlay") 3636 { 3637 $(".jltma-nav-panel ").removeClass("offcanvas-overlay"); 3638 } 3639 }); 3640 } 3641 3642 } 3643 3644 }, 3645 3646 3647 initEvents: function ($scope, $) 3648 { 3649
3650 var mainSearchWrapper = $scope.find('.jltma-search-wrapper').eq(0), 3651 $search_type = mainSearchWrapper.data('search-type'), 3652 mainContainer = $scope.find('.jltma-search-main-wrap'), 3653 openCtrl = document.getElementById('jltma-btn-search'), 3654 closeCtrl = document.getElementById('jltma-btn-search-close'), 3655 searchContainer = $scope.find('.jltma-search'), 3656 inputSearch = searchContainer.find('.jltma-search__input'); 3657 3658 $(openCtrl).on('click', function () 3659 { 3660 mainContainer.addClass('main-wrap--move'); 3661 searchContainer.addClass('search--open'); 3662 setTimeout(function () 3663 { 3664 inputSearch.focus(); 3665 }, 600); 3666 }); 3667 3668 $(closeCtrl).on('click', function () 3669 { 3670 mainContainer.removeClass('main-wrap--move'); 3671 searchContainer.removeClass('search--open'); 3672 inputSearch.blur(); 3673 inputSearch.value = ''; 3674 }); 3675 3676 document.addEventListener('keyup', function (ev) 3677 { 3678 if (ev.keyCode == 27) 3679 { 3680 Master_Addons.closeSearch(); 3681 } 3682 }); 3683 }, 3684 3685 3686 MA_Header_Search: function ($scope, $) 3687 { 3688 $('body').addClass('js'); 3689 Master_Addons.initEvents($scope, $); 3690 } 3691 3692 }; 3693 3694 $(window).on('elementor/frontend/init', function () 3695 { 3696 3697 if (elementorFrontend.isEditMode()) 3698 { 3699 editMode = true; 3700 } 3701 3702 //Global Scripts 3703 elementorFrontend.hooks.addAction('frontend/element_ready/global', Master_Addons.MA_AnimatedGradient); 3704 elementorFrontend.hooks.addAction('frontend/element_ready/global', Master_Addons.MA_BgSlider); 3705 elementorFrontend.hooks.addAction('frontend/element_ready/global', Master_Addons.MA_ParticlesBG); 3706 elementorFrontend.hooks.addAction('frontend/element_ready/global', Master_Addons.MA_Reveal); 3707 elementorFrontend.hooks.addAction('frontend/element_ready/global', Master_Addons.MA_Rellax); 3708 // elementorFrontend.hooks.addAction('frontend/element_ready/global', Master_Addons.MA_Entrance_Animation); 3709 elementorFrontend.hooks.addAction('frontend/element_ready/global', Master_Addons.MA_Wrapper_Link); 3710 3711 3712 //Element Scripts 3713 elementorFrontend.hooks.addAction('frontend/element_ready/ma-headlines.default', Master_Addons.MA_Animated_Headlines); 3714 elementorFrontend.hooks.addAction('frontend/element_ready/ma-advanced-accordion.default', Master_Addons.MA_Accordion); 3715 elementorFrontend.hooks.addAction('frontend/element_ready/ma-tabs.default', Master_Addons.MA_Tabs); 3716 elementorFrontend.hooks.addAction('frontend/element_ready/ma-progressbar.default', Master_Addons.MA_ProgressBar); 3717 elementorFrontend.hooks.addAction('frontend/element_ready/ma-team-members-slider.default', Master_Addons.MA_TeamSlider); 3718 elementorFrontend.hooks.addAction('frontend/element_ready/ma-image-carousel.default', Master_Addons.MA_Image_Carousel); 3719 elementorFrontend.hooks.addAction('frontend/element_ready/ma-blog-post.default', Master_Addons.MA_Blog); 3720 elementorFrontend.hooks.addAction('frontend/element_ready/ma-news-ticker.default', Master_Addons.MA_NewsTicker); 3721 elementorFrontend.hooks.addAction('frontend/element_ready/ma-el-countdown-timer.default', Master_Addons.MA_CountdownTimer); 3722 elementorFrontend.hooks.addAction('frontend/element_ready/jltma-counter-up.default', Master_Addons.MA_Counter_Up); 3723 elementorFrontend.hooks.addAction('frontend/element_ready/ma-piecharts.default', Master_Addons.MA_PieCharts); 3724 elementorFrontend.hooks.addAction('frontend/element_ready/ma-timeline.default', Master_Addons.MA_Timeline); 3725 elementorFrontend.hooks.addAction('frontend/element_ready/ma-image-filter-gallery.default', Master_Addons.MA_Image_Filter_Gallery); 3726 elementorFrontend.hooks.addAction('frontend/element_ready/jltma-gallery-slider.default', Master_Addons.MA_Gallery_Slider); 3727 3728 elementorFrontend.hooks.addAction('frontend/element_ready/ma-el-image-comparison.default', Master_Addons.MA_Image_Comparison); 3729 elementorFrontend.hooks.addAction('frontend/element_ready/jltma-restrict-content.default', Master_Addons.MA_Restrict_Content); 3730 // elementorFrontend.hooks.addAction('frontend/element_ready/ma-navmenu.default', Master_Addons.MA_Nav_Menu); 3731 elementorFrontend.hooks.addAction('frontend/element_ready/ma-search.default', Master_Addons.MA_Header_Search); 3732 elementorFrontend.hooks.addAction('frontend/element_ready/ma-progressbars.default', Master_Addons.ProgressBars); 3733 elementorFrontend.hooks.addAction('frontend/element_ready/jltma-instagram-feed.default', Master_Addons.MA_Instagram_Feed); 3734 elementorFrontend.hooks.addAction('frontend/element_ready/jltma-toggle-content.default', Master_Addons.MA_Toggle_Content); 3735 elementorFrontend.hooks.addAction('frontend/element_ready/jltma-comments.default', Master_Addons.MA_Comment_Form_reCaptcha); 3736 elementorFrontend.hooks.addAction('frontend/element_ready/jltma-logo-slider.default', Master_Addons.MA_Logo_Slider); 3737 elementorFrontend.hooks.addAction('frontend/element_ready/jltma-twitter-slider.default', Master_Addons.MA_Twitter_Slider); 3738 elementorFrontend.hooks.addAction('frontend/element_ready/jltma-advanced-image.default', Master_Addons.MA_Advanced_Image); 3739 elementorFrontend.hooks.addAction('frontend/element_ready/ma-tooltip.default', Master_Addons.MA_Tooltip); 3740 elementorFrontend.hooks.addAction('frontend/element_ready/ma-image-hotspot.default', Master_Addons.MA_Image_Hotspot); 3741 elementorFrontend.hooks.addAction('frontend/element_ready/ma-pricing-table.default', Master_Addons.MA_Pricing_Table); 3742 // elementorFrontend.hooks.addAction('frontend/element_ready/jltma-offcanvas-menu.default', Master_Addons.MA_Offcanvas_Menu); 3743 3744 3745 3746 if (elementorFrontend.isEditMode()) 3747 { 3748 elementorFrontend.hooks.addAction('frontend/element_ready/ma-headlines.default', Master_Addons.MA_Animated_Headlines); 3749 elementorFrontend.hooks.addAction('frontend/element_ready/ma-piecharts.default', Master_Addons.MA_PieCharts); 3750 elementorFrontend.hooks.addAction('frontend/element_ready/ma-progressbars.default', Master_Addons.ProgressBars); 3751 elementorFrontend.hooks.addAction('frontend/element_ready/ma-news-ticker.default', Master_Addons.MA_NewsTicker); 3752 // elementorFrontend.hooks.addAction('frontend/element_ready/ma-image-filter-gallery.default', Master_Addons.MA_Image_Filter_Gallery); 3753 elementorFrontend.hooks.addAction('frontend/element_ready/jltma-gallery-slider.default', Master_Addons.MA_Gallery_Slider); 3754 elementorFrontend.hooks.addAction('frontend/element_ready/jltma-counter-up.default', Master_Addons.MA_Counter_Up); 3755 elementorFrontend.hooks.addAction('frontend/element_ready/ma-tooltip.default', Master_Addons.MA_Tooltip); 3756 } 3757 }); 3758 3759})(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.