1"use strict"; 2function _typeof(o){ "@babel/helpers - typeof"; return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator ? function (o){ return typeof o; }:function (o){ return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype ? "symbol":typeof o; }, _typeof(o); } 3window.Happy=window.Happy||{}; 4(function ($, Happy, w){ 5var $window=$(w); 6$(function (){ 7var $container=$('.ha-fsb-container'); 8if($container.length > 0){ 9if(window.history&&window.history.pushState){ 10ha_manage_fsb(); 11} 12; 13$(document.body).on("added_to_cart", function (event, fragments, cart_hash, $button){ 14ha_manage_fsb(); 15}); 16$(document.body).on("removed_from_cart", function (event, fragments, cart_hash, $button){ 17ha_manage_fsb(); 18}); 19} 20function ha_manage_fsb(){ 21$.ajax({ 22url: HappyProLocalize.ajax_url, 23type: "POST", 24data: { 25action: "ha_get_cart_subtotal_action", 26security: HappyProLocalize.nonce 27}, 28success: function success(response){ 29var $data=JSON.parse(response); 30var $subTotalAmount=$data.subTotalAmount; 31if($data.status=='true'&&$subTotalAmount >=0){ 32var $container=$('.ha-fsb-container'); 33var $elem=$container.find('.ha-fsb-size'); 34var $settings=$container.data('fsb_settings'); 35if($settings!=undefined){ 36var $aimationSpeed=$settings.hasOwnProperty('ha_fsb_animation_speed') ? $settings.ha_fsb_animation_speed:15; 37var $progressType=$settings.hasOwnProperty('progress_type') ? $settings.progress_type:'percent'; 38var $currencySymbol=$settings.hasOwnProperty('currencySymbol')&&$progressType=='percent' ? '%':$settings.currencySymbol; 39var $targetAmount=$settings.hasOwnProperty('target_amount') ? $settings.target_amount:0; 40var $totalPercent=0; 41if(parseFloat($subTotalAmount) >=parseFloat($targetAmount)){ 42$totalPercent=100; 43}else{ 44if(parseFloat($targetAmount)==0){ 45$totalPercent=0; 46}else{ 47$totalPercent=parseFloat($subTotalAmount) * 100 / parseFloat($targetAmount); 48}} 49$totalPercent=parseFloat(Math.round($totalPercent)) >=100 ? 100:parseFloat(Math.round($totalPercent)); 50var $progressText=$progressType=='percent' ? $totalPercent:$subTotalAmount; 51var defaultWidth=$(window).width() <=768 ? 12:5; 52if($totalPercent > 0){ 53$elem.text($progressText + $currencySymbol); 54$elem.css({ 55'width': $totalPercent + "%", 56'transition': 'width ' + $aimationSpeed + 'ms ease-in-out' 57}); 58} 59fsbMessageControl($totalPercent); 60if($progressText <=0){ 61$elem.css('width', +defaultWidth + "%"); 62$elem.text('0' + $currencySymbol); 63}} 64}}, 65error: function error(_error){}}); 66} 67; 68function fsbMessageControl(){ 69var totalPercent=arguments.length > 0&&arguments[0]!==undefined ? arguments[0]:null; 70var fsbContainer=$('.ha-fsb-container'); 71var settings=fsbContainer.data('fsb_settings'); 72if(fsbContainer&&settings){ 73if(totalPercent >=100){ 74$('.ha-fsb-inner-content').html(settings.fsb_success_message); 75}else{ 76$('.ha-fsb-inner-content').html(settings.announcement); 77}} 78} 79; 80function log(event, item, level){ 81$(document).on(event, item, level); 82} 83var e; 84e=$(".ha-menu-container"); 85$(e).each(function (){ 86var button=$(this); 87if("yes"!=button.attr("ha-dom-added")){ 88if(0===button.parents(".elementor-widget-ha-nav-menu").length){ 89button.parents(".ha-wid-con").addClass("ha_menu_responsive_tablet"); 90} 91button.attr("ha-dom-added", "yes"); 92}}); 93/* 94$(".ha-dropdown-has > a").on("click", function(event){ 95if(!$(this).parents(".ha-navbar-nav, .ha-vertical-navbar-nav").hasClass("submenu-click-on-icon")||$(event.target).hasClass("ha-submenu-indicator-wrap")){ 96event.preventDefault(); 97var $oElemDragged=$(this).parent().find(">.ha-dropdown, >.ha-megamenu-panel"); 98$oElemDragged.find(".ha-dropdown-open").removeClass("ha-dropdown-open"); 99if($oElemDragged.hasClass("ha-dropdown-open")){ 100$oElemDragged.removeClass("ha-dropdown-open"); 101}else{ 102$oElemDragged.addClass("ha-dropdown-open"); 103}} 104});*/ 105$(".ha-dropdown-has > a").on("click", function (event){ 106var dropdownHref=$(this).attr("href"); 107if(dropdownHref==="#"||typeof dropdownHref==="undefined"){ 108event.preventDefault(); 109var $oElemDragged=$(this).parent().find(">.ha-dropdown, >.ha-megamenu-panel"); 110$oElemDragged.find(".ha-dropdown-open").removeClass("ha-dropdown-open"); 111if($oElemDragged.hasClass("ha-dropdown-open")){ 112$oElemDragged.removeClass("ha-dropdown-open"); 113}else{ 114$oElemDragged.addClass("ha-dropdown-open"); 115}}else{ 116if(!$(this).parents(".ha-navbar-nav, .ha-vertical-navbar-nav").hasClass("submenu-click-on-icon")||$(event.target).hasClass("ha-submenu-indicator-wrap")){ 117event.preventDefault(); 118var $oElemDragged=$(this).parent().find(">.ha-dropdown, >.ha-megamenu-panel"); 119$oElemDragged.find(".ha-dropdown-open").removeClass("ha-dropdown-open"); 120if($oElemDragged.hasClass("ha-dropdown-open")){ 121$oElemDragged.removeClass("ha-dropdown-open"); 122}else{ 123$oElemDragged.addClass("ha-dropdown-open"); 124}} 125}}); 126$(".ha-navbar-nav li a").on("click", function (event){ 127if(!$(this).attr("href")&&"ha-submenu-indicator-wrap"==event.target.className){ 128var thirdItem=$(this); 129var lnk=thirdItem.get(0); 130var oldUrl=lnk.href; 131var sepor=oldUrl.indexOf("#"); 132var s=thirdItem.parents(".ha-menu-container").hasClass("ha-nav-menu-one-page-yes"); 133if(-1!==sepor&&oldUrl.length > 1&&s && lnk.pathname==window.location.pathname){ 134event.preventDefault(); 135thirdItem.parents(".ha-wid-con").find(".ha-menu-close").trigger("click"); 136}} 137}); 138}); 139function debounce(func, wait, immediate){ 140var timeout; 141return function (){ 142var context=this, 143args=arguments; 144var later=function later(){ 145timeout=null;
146if(!immediate) func.apply(context, args); 147}; 148var callNow=immediate&&!timeout; 149clearTimeout(timeout); 150timeout=setTimeout(later, wait); 151if(callNow) func.apply(context, args); 152};} 153$window.on("elementor/frontend/init", function (){ 154if(typeof haDisplayCondition!="undefined"&&haDisplayCondition.status=="true"){ 155var HappyLocalTimeZone=new Date().toString().match(/([A-Z]+[\+-][0-9]+.*)/)[1]; 156var ha_secure=document.location.protocol==="https:" ? "secure":""; 157document.cookie="HappyLocalTimeZone=" + HappyLocalTimeZone + ";SameSite=Strict;" + ha_secure; 158}else{ 159var now=new Date(); 160now.setTime(now.getTime() - 1000 * 3600); 161document.cookie="HappyLocalTimeZone=;expires=" + now.toUTCString() + ";"; 162} 163if(typeof haDisplayConditionInitialLoad!="undefined"&&haDisplayConditionInitialLoad.status==true){ 164if(typeof haDisplayConditionInitialLoad.date!="undefined"&&haDisplayConditionInitialLoad.date!=""){ 165var ha_secure=document.location.protocol==="https:" ? "secure":""; 166document.cookie=haDisplayConditionInitialLoad.name_1 + "=" + haDisplayConditionInitialLoad.value_1 + ";expires=" + haDisplayConditionInitialLoad.date + ";" + ha_secure; 167document.cookie=haDisplayConditionInitialLoad.name + "=" + haDisplayConditionInitialLoad.value + ";expires=" + haDisplayConditionInitialLoad.date + ";" + ha_secure; 168}else{ 169var ha_secure=document.location.protocol==="https:" ? "secure":""; 170document.cookie=haDisplayConditionInitialLoad.name_1 + "=" + haDisplayConditionInitialLoad.value_1 + ";" + ha_secure; 171document.cookie=haDisplayConditionInitialLoad.name + "=" + haDisplayConditionInitialLoad.value + ";" + ha_secure; 172}} 173var CountDown=function CountDown($scope){ 174var $item=$scope.find(".ha-countdown"); 175var $countdown_item=$item.find(".ha-countdown-item"); 176var $end_action=$item.data("end-action"); 177var $redirect_link=$item.data("redirect-link"); 178var $end_action_div=$item.find(".ha-countdown-end-action"); 179var $editor_mode_on=$scope.hasClass("elementor-element-edit-mode"); 180$item.countdown({ 181end: function end(){ 182if(("message"===$end_action||"img"===$end_action)&&$end_action_div!==undefined){ 183$countdown_item.css("display", "none"); 184$end_action_div.css("display", "block"); 185}else if("url"===$end_action&&$redirect_link!==undefined&&$editor_mode_on!==true){ 186window.location.replace($redirect_link); 187}} 188}); 189}; 190var SliderBase=elementorModules.frontend.handlers.Base.extend({ 191onInit: function onInit(){ 192elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments); 193this.run(); 194}, 195getDefaultSettings: function getDefaultSettings(){ 196return { 197selectors: { 198container: ".ha-slider-container" 199}};}, 200getDefaultElements: function getDefaultElements(){ 201var selectors=this.getSettings("selectors"); 202return { 203$container: this.$element.find(selectors.container) 204};}, 205getReadySettings: function getReadySettings(){ 206var $this=this; 207var slidesPerView=parseInt(this.getElementSettings("slides_per_view"))||1; 208if(this.getElementSettings("thumbs_navigation")=="yes"){ 209var selectorThumbs=this.elements.$container.find(".ha-slider-gallery-thumbs"); 210var haGallaryThumbs=new HaSwiper(selectorThumbs[0], { 211spaceBetween: this.getElementSettings("space_between_thumbs"), 212freeMode: true, 213watchSlidesVisibility: true, 214watchSlidesProgress: true 215}); 216} 217var tempEffect=this.getElementSettings("effect"); 218if(tempEffect=='cube'){ 219tempEffect=false; 220} 221var settings={ 222direction: this.getElementSettings("slider_direction"), 223slidesPerView: slidesPerView||1, 224spaceBetween: parseInt(this.getElementSettings("space_between_slides"))||0, 225loop: !!(this.getElementSettings("infinity_loop")||false), 226speed: parseInt(this.getElementSettings("effect_speed")), 227effect: this.getElementSettings("slider_type")=="multiple" ? this.getElementSettings("effect_multiple"):tempEffect, 228ha_animation: this.getElementSettings("slider_content_animation"), 229sliderType: this.getElementSettings("slider_type") 230}; 231if(this.getElementSettings("effect")=="flip"){ 232settings.flipEffect={ 233limitRotation: true, 234slideShadows: true 235};} 236if(this.getElementSettings("effect_multiple")=="coverflow"){ 237settings.coverflowEffect={ 238rotate: 50, 239stretch: 0, 240depth: 100, 241modifier: 1, 242slideShadows: true 243};} 244if(this.getElementSettings("slider_type")=="multiple"){ 245var bpObj={ 246desktop: { 247slidesPerView: slidesPerView||1, 248spaceBetween: parseInt(this.getElementSettings("space_between_slides"))||0 249}}; 250var breakpoints=elementorFrontend.config.responsive.breakpoints; 251$.each(breakpoints, function (idx, val){ 252if(val.is_enabled){ 253bpObj[idx]={ 254screenSize: val.value, 255slidesPerView: parseInt($this.getElementSettings("slides_per_view_" + idx))||slidesPerView, 256spaceBetween: parseInt($this.getElementSettings("space_between_slides_" + idx))||0 257};}}); 258settings.customBreakpoints=bpObj; 259settings.customMultiple=true; 260} 261if(this.getElementSettings("autoplay")=="yes"){ 262settings.autoplay={ 263delay: this.getElementSettings("autoplay_speed"), 264disableOnInteraction: false, 265stopOnLastSlide: !(this.getElementSettings("infinity_loop")||false) 266};}
267if(this.getElementSettings("arrow_navigation")=="yes"){ 268var selectorNext=this.elements.$container.find(".ha-slider-next"); 269var selectorPrev=this.elements.$container.find(".ha-slider-prev"); 270settings.navigation={ 271nextEl: selectorNext[0], 272prevEl: selectorPrev[0] 273};} 274if(this.getElementSettings("pagination_type")=="dots"){ 275var selectorPagi=this.elements.$container.find(".ha-slider-pagination"); 276settings.pagination={ 277el: selectorPagi[0], 278clickable: true 279};} 280if(this.getElementSettings("pagination_type")=="progressbar"){ 281var selectorPagi=this.elements.$container.find(".ha-slider-pagination"); 282settings.pagination={ 283el: selectorPagi[0], 284clickable: true, 285type: "progressbar" 286};} 287if(this.getElementSettings("pagination_type")=="numbers"){ 288var selectorPagi=this.elements.$container.find(".ha-slider-pagination"); 289settings.pagination={ 290el: selectorPagi[0], 291clickable: true, 292type: this.getElementSettings("number_pagination_type"), 293renderBullet: function renderBullet(index, className){ 294return '<span class="' + className + '">' + (index + 1) + "</span>"; 295}, 296renderFraction: function renderFraction(currentClass, totalClass){ 297return '<span class="' + currentClass + '"></span>' + "<span>/</span>" + '<span class="' + totalClass + '"></span>'; 298}};} 299if(this.getElementSettings("scroll_bar")=="yes"){ 300var selectorScroll=this.elements.$container.find(".ha-slider-scrollbar"); 301settings.scrollbar={ 302el: selectorScroll[0], 303hide: this.getElementSettings("scroll_bar_visibility")=="true", 304draggable: true 305};} 306if(this.getElementSettings("thumbs_navigation")=="yes"){ 307settings.thumbs={ 308swiper: haGallaryThumbs 309};} 310return $.extend({}, settings); 311}, 312run: function run(){ 313var elContainer=this.elements.$container; 314var slider=elContainer.find(".ha-slider-container"); 315var readySettings=this.getReadySettings(); 316var sliderObj=new HaSwiper(slider[0], readySettings); 317if(readySettings.customMultiple){ 318$(window).on('resize', function (){ 319var mode=$('body').attr('data-elementor-device-mode'); 320sliderObj.params.slidesPerView=readySettings.customBreakpoints[mode].slidesPerView; 321sliderObj.params.spaceBetween=readySettings.customBreakpoints[mode].spaceBetween; 322sliderObj.update(); 323}).resize(); 324} 325sliderObj.on("slideChange", function (){ 326if(readySettings.sliderType=="multiple"){ 327return; 328} 329var aI=sliderObj.activeIndex; 330var elSlide=elContainer.find(".ha-slider-slide"); 331var elSlideContent=elContainer.find(".ha-slider-content"); 332var currentSlide=elSlideContent.eq(aI); 333currentSlide.hide(); 334if(currentSlide.length <=0){} 335setTimeout(function (){ 336currentSlide.show(); 337}, readySettings.speed); 338elSlide.eq(aI).find(".elementor-invisible, .animated").each(function (e, t){ 339var i=$(this).data("settings"); 340if(i&&(i._animation||i.animation)){ 341var n=i._animation_delay ? i._animation_delay:0, 342a=i._animation||i.animation; 343$(this).removeClass("elementor-invisible"); 344$(this).addClass(a + " animated"); 345}}); 346}); 347sliderObj.on("transitionEnd", function (){ 348var aI=sliderObj.activeIndex; 349var elSlide=elContainer.find(".ha-slider-slide"); 350var elSlideContent=elContainer.find(".ha-slider-content"); 351var currentSlide=elSlideContent.eq(aI); 352setTimeout(function (){ 353elSlide.eq(aI).find(".animated").each(function (e, t){ 354var i=$(this).data("settings"); 355if(i&&(i._animation||i.animation)){ 356var n=i._animation_delay ? i._animation_delay:0, 357a=i._animation||i.animation; 358$(this).removeClass(a); 359}}); 360}, readySettings.speed); 361}); 362}}); 363var CarouselBase=elementorModules.frontend.handlers.Base.extend({ 364onInit: function onInit(){ 365elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments); 366this.run(); 367}, 368getDefaultSettings: function getDefaultSettings(){ 369return { 370selectors: { 371container: ".ha-carousel-container" 372}, 373arrows: false, 374dots: false, 375checkVisible: false, 376infinite: true, 377slidesToShow: 3, 378rows: 0, 379prevArrow: '<button type="button" class="slick-prev"><i class="fa fa-chevron-left"></i></button>', 380nextArrow: '<button type="button" class="slick-next"><i class="fa fa-chevron-right"></i></button>' 381};}, 382getDefaultElements: function getDefaultElements(){ 383var selectors=this.getSettings("selectors"); 384return { 385$container: this.findElement(selectors.container) 386};}, 387onElementChange: function onElementChange(){ 388this.elements.$container.slick("unslick"); 389this.run(); 390}, 391getReadySettings: function getReadySettings(){ 392var $rtl=$('html[dir="rtl"]').length==1||$('body').hasClass('rtl'); 393if('yes'==this.getElementSettings('vertical')){ 394$rtl=false; 395} 396var settings={ 397infinite: !!this.getElementSettings("loop"), 398autoplay: !!this.getElementSettings("autoplay"), 399autoplaySpeed: this.getElementSettings("autoplay_speed"), 400speed: this.getElementSettings("animation_speed"), 401centerMode: !!this.getElementSettings("center"), 402vertical: !!this.getElementSettings("vertical"), 403rtl: $rtl 404}; 405switch (this.getElementSettings("navigation")){ 406case "arrow": 407settings.arrows=true; 408break; 409case "dots": 410settings.dots=true; 411break; 412case "both": 413settings.arrows=true; 414settings.dots=true; 415break; 416} 417var slides_to_scroll = !!this.getElementSettings('slides_to_scroll'); 418settings.slidesToShow=parseInt(this.getElementSettings("slides_to_show"))||1;
419settings.slidesToScroll=slides_to_scroll ? parseInt(this.getElementSettings('slides_to_show'))||1:1; 420settings.responsive=[{ 421breakpoint: elementorFrontend.config.breakpoints.lg, 422settings: { 423slidesToShow: parseInt(this.getElementSettings("slides_to_show_tablet"))||settings.slidesToShow, 424slidesToScroll: slides_to_scroll ? parseInt(this.getElementSettings('slides_to_show_tablet'))||settings.slidesToShow:1 425}}, { 426breakpoint: elementorFrontend.config.breakpoints.md, 427settings: { 428slidesToShow: parseInt(this.getElementSettings("slides_to_show_mobile"))||parseInt(this.getElementSettings("slides_to_show_tablet"))||settings.slidesToShow, 429slidesToScroll: slides_to_scroll ? parseInt(this.getElementSettings('slides_to_show_mobile'))||parseInt(this.getElementSettings('slides_to_show_tablet'))||settings.slidesToShow:1 430}}]; 431return $.extend({}, this.getSettings(), settings); 432}, 433run: function run(){ 434this.elements.$container.slick(this.getReadySettings()); 435}}); 436var SourceCode=function SourceCode($scope){ 437var $item=$scope.find('.ha-source-code'); 438var $lng_type=$item.data('lng-type'); 439var $after_copy_text=$item.data('after-copy'); 440var $code=$item.find('code.language-' + $lng_type); 441var $copy_btn=$scope.find('.ha-copy-code-button'); 442$copy_btn.on('click', function (){ 443var $temp=$("<textarea>"); 444$(this).append($temp); 445$temp.val($code.text()).select(); 446document.execCommand ("copy"); 447$temp.remove(); 448if($after_copy_text.length){ 449$(this).text($after_copy_text); 450}}); 451if($lng_type!==undefined&&$code!==undefined){ 452Prism.highlightElement($code.get(0)); 453}}; 454var AnimatedText=function AnimatedText($scope){ 455var $item=$scope.find(".cd-headline"), 456$animationDelay=$item.data("animation-delay"); 457happyAnimatedText({ 458selector: $item, 459animationDelay: $animationDelay 460}); 461}; 462var InstagramFeed=function InstagramFeed($scope){ 463var button=$scope.find(".ha-insta-load-more"); 464var instagram_wrap=$scope.find(".ha-insta-default"); 465button.on("click", function (e){ 466e.preventDefault(); 467var $self=$(this), 468query_settings=$self.data("settings"), 469total=$self.data("total"), 470items=$scope.find(".ha-insta-item").length; 471$.ajax({ 472url: HappyProLocalize.ajax_url, 473type: "POST", 474data: { 475action: "ha_instagram_feed_action", 476security: HappyProLocalize.nonce, 477query_settings: query_settings, 478loaded_item: items 479}, 480success: function success(response){ 481if(total > items){ 482$(response).appendTo(instagram_wrap); 483}else{ 484$self.text("All Loaded").addClass("loaded"); 485setTimeout(function (){ 486$self.css({ 487display: "none" 488}); 489}, 800); 490}}, 491error: function error(_error2){}}); 492}); 493}; 494var ScrollingImage=elementorModules.frontend.handlers.Base.extend({ 495onInit: function onInit(){ 496elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments); 497this.wrapper=this.$element.find(".ha-scrolling-image-wrapper"); 498this.run(); 499}, 500onElementChange: function onElementChange(){ 501this.run(); 502}, 503run: function run(){ 504var container_height=this.wrapper.innerHeight(), 505container_width=this.wrapper.innerWidth(), 506image_align=this.wrapper.data("align"), 507scroll_direction=this.wrapper.data("scroll-direction"), 508items=this.wrapper.find(".ha-scrolling-image-container"), 509single_image_box=items.find(".ha-scrolling-image-item"), 510scroll="scroll" + image_align + scroll_direction + parseInt(container_height) + parseInt(container_width), 511duration=this.wrapper.data("duration"), 512direction="normal", 513horizontal_align_width=10, 514vertical_align_height=10; 515var start={ 516transform: "translateY(" + container_height + "px)" 517}, 518end={ 519transform: "translateY(-101%)" 520}; 521if("bottom"===scroll_direction||"right"===scroll_direction){ 522direction="reverse"; 523} 524if("ha-horizontal"===image_align){ 525start={ 526transform: "translateX(" + container_width + "px)" 527}; 528end={ 529transform: "translateX(-101%)" 530}; 531single_image_box.each(function (){ 532horizontal_align_width +=$(this).outerWidth(true); 533}); 534items.css({ 535width: horizontal_align_width, 536display: "flex" 537}); 538items.find("img").css({ 539"max-width": "100%" 540}); 541single_image_box.css({ 542display: "inline-flex" 543}); 544} 545if("ha-vertical"===image_align){ 546single_image_box.each(function (){ 547vertical_align_height +=$(this).outerHeight(true); 548}); 549} 550$.keyframe.define([{ 551name: scroll, 552"0%": start, 553"100%": end 554}]); 555items.playKeyframe({ 556name: scroll, 557duration: duration.toString() + "ms", 558timingFunction: "linear", 559delay: "0s", 560iterationCount: "infinite", 561direction: direction, 562fillMode: "none", 563complete: function complete(){}}); 564if(this.$element.hasClass("ha-scrolling-image-hover-pause--yes")){ 565items.find(".ha-scrolling-image-item").on('mouseover mouseleave', function (e){ 566var $this=$(this); 567if(e.type==='mouseover'){ 568items.pauseKeyframe(); 569}else if(e.type==='mouseleave'){ 570items.resumeKeyframe(); 571}}); 572}} 573}); 574var PricingTableToolTip=function PricingTableToolTip($scope){ 575var tooltip_area=$scope.find(".ha-pricing-table-feature-tooltip"); 576tooltip_area.on({ 577mouseenter: function mouseenter(e){ 578var $this=$(this), 579direction=$this[0].getBoundingClientRect(), 580tooltip=$this.find(".ha-pricing-table-feature-tooltip-text"), 581tooltipW=tooltip.outerWidth(true), 582tooltipH=tooltip.outerHeight(true), 583W_width=$(window).width(), 584W_height=$(window).height(); 585tooltip.css({ 586left: "0", 587right: "auto", 588top: "calc(100% + 1px)", 589bottom: "auto" 590});
591if(W_width - direction.left < tooltipW&&direction.right < tooltipW){ 592tooltip.css({ 593left: "calc(50% - (" + tooltipW + "px/2))" 594}); 595}else if(W_width - direction.left < tooltipW){ 596tooltip.css({ 597left: "auto", 598right: "0" 599}); 600} 601if(W_height - direction.bottom < tooltipH){ 602tooltip.css({ 603top: "auto", 604bottom: "calc(100% + 1px)" 605}); 606}} 607}); 608}; 609var TabHandlerBase=elementorModules.frontend.handlers.Base.extend({ 610$activeContent: null, 611getDefaultSettings: function getDefaultSettings(){ 612return { 613selectors: { 614tabTitle: ".ha-tab__title", 615tabContent: ".ha-tab__content" 616}, 617classes: { 618active: "ha-tab--active" 619}, 620showTabFn: "show", 621hideTabFn: "hide", 622toggleSelf: false, 623hidePrevious: true, 624autoExpand: true 625};}, 626getDefaultElements: function getDefaultElements(){ 627var selectors=this.getSettings("selectors"); 628return { 629$tabTitles: this.findElement(selectors.tabTitle), 630$tabContents: this.findElement(selectors.tabContent) 631};}, 632activateDefaultTab: function activateDefaultTab(){ 633var settings=this.getSettings(); 634if(!settings.autoExpand||"editor"===settings.autoExpand&&!this.isEdit){ 635return; 636} 637var defaultActiveTab=this.getEditSettings("activeItemIndex")||1, 638originalToggleMethods={ 639showTabFn: settings.showTabFn, 640hideTabFn: settings.hideTabFn 641}; 642this.setSettings({ 643showTabFn: "show", 644hideTabFn: "hide" 645}); 646this.changeActiveTab(defaultActiveTab); 647this.setSettings(originalToggleMethods); 648}, 649deactivateActiveTab: function deactivateActiveTab(tabIndex){ 650var settings=this.getSettings(), 651activeClass=settings.classes.active, 652activeFilter=tabIndex ? '[data-tab="' + tabIndex + '"]':"." + activeClass, 653$activeTitle=this.elements.$tabTitles.filter(activeFilter), 654$activeContent=this.elements.$tabContents.filter(activeFilter); 655$activeTitle.add($activeContent).removeClass(activeClass); 656$activeContent[settings.hideTabFn](); 657}, 658activateTab: function activateTab(tabIndex){ 659var settings=this.getSettings(), 660activeClass=settings.classes.active, 661$requestedTitle=this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]'), 662$requestedContent=this.elements.$tabContents.filter('[data-tab="' + tabIndex + '"]'); 663$requestedTitle.add($requestedContent).addClass(activeClass); 664$requestedContent[settings.showTabFn](); 665}, 666isActiveTab: function isActiveTab(tabIndex){ 667return this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]').hasClass(this.getSettings("classes.active")); 668}, 669bindEvents: function bindEvents(){ 670var _this=this; 671this.elements.$tabTitles.on({ 672keydown: function keydown(event){ 673if("Enter"===event.key){ 674if('A'==event.currentTarget.tagName&&event.currentTarget.classList.contains('ha-tab__title')){ 675return; 676} 677event.preventDefault(); 678_this.changeActiveTab(event.currentTarget.getAttribute("data-tab")); 679}}, 680click: function click(event){ 681if('A'==event.currentTarget.tagName&&event.currentTarget.classList.contains('ha-tab__title')){ 682return; 683} 684event.preventDefault(); 685_this.changeActiveTab(event.currentTarget.getAttribute("data-tab")); 686if(/iPhone/i.test(navigator.userAgent)){ 687$("body,html,document").scrollTop($(this).offset().top); 688}} 689}); 690this.smoothScrollTabs(); 691}, 692onInit: function onInit(){ 693elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments); 694this.activateDefaultTab(); 695this.smoothScrollTabs(); 696}, 697onEditSettingsChange: function onEditSettingsChange(propertyName){ 698if("activeItemIndex"===propertyName){ 699this.activateDefaultTab(); 700}}, 701changeActiveTab: function changeActiveTab(tabIndex){ 702var isActiveTab=this.isActiveTab(tabIndex), 703settings=this.getSettings(); 704if((settings.toggleSelf||!isActiveTab)&&settings.hidePrevious){ 705this.deactivateActiveTab(); 706} 707if(!settings.hidePrevious&&isActiveTab){ 708this.deactivateActiveTab(tabIndex); 709} 710if(!isActiveTab){ 711this.activateTab(tabIndex); 712} 713$(document).trigger("ha_TabHandlerBase_changed"); 714$(window).trigger("resize"); 715}, 716smoothScrollTabs: function smoothScrollTabs(){ 717var that=this; 718var tabTitles=this.$element.find('.ha-tabs__nav .ha-tab__title'); 719$(window).on("resize", function (){ 720if(window.innerWidth <=768){ 721tabTitles.each(function (){ 722$(this).on('click', function (){ 723var container=that.$element.find('.ha-tabs__nav')[0]; 724if(container){ 725var containerRect=container.getBoundingClientRect(); 726var itemRect=this.getBoundingClientRect(); 727var scrollPosition=container.scrollLeft + (itemRect.left - containerRect.left) - containerRect.width / 2 + itemRect.width / 2; 728container.scrollTo({ 729left: scrollPosition, 730behavior: 'smooth' 731}); 732}}); 733}); 734}}).trigger("resize"); 735}}); 736var TimeLine=function TimeLine($scope){ 737var T_ID=$scope.data("id"); 738var timeline=$scope.find(".ha-timeline-wrap"); 739var dataScroll=timeline.data("scroll"); 740var timeline_block=timeline.find(".ha-timeline-block"); 741var event="scroll.timelineScroll" + T_ID + " resize.timelineScroll" + T_ID; 742function scroll_tree(){ 743timeline_block.each(function (){ 744var block_height=$(this).outerHeight(true); 745var $offsetTop=$(this).offset().top; 746var window_middle_p=$window.scrollTop() + $window.height() / 2; 747if($offsetTop < window_middle_p){ 748$(this).addClass("ha-timeline-scroll-tree"); 749}else{ 750$(this).removeClass("ha-timeline-scroll-tree"); 751} 752var scroll_tree_wrap=$(this).find(".ha-timeline-tree-inner"); 753var scroll_height=$window.scrollTop() - scroll_tree_wrap.offset().top + $window.outerHeight() / 2; 754if($offsetTop < window_middle_p&&timeline_block.hasClass("ha-timeline-scroll-tree")){ 755if(block_height > scroll_height){ 756scroll_tree_wrap.css({ 757height: scroll_height * 1.5 + "px" 758}); 759}else{ 760scroll_tree_wrap.css({ 761height: block_height * 1.2 + "px" 762}); 763}}else{ 764scroll_tree_wrap.css("height", "0px"); 765}}); 766} 767if("yes"===dataScroll){ 768scroll_tree(); 769$window.on(event, scroll_tree); 770}else{ 771$window.off(event); 772}}; 773var HotSpots=elementorModules.frontend.handlers.Base.extend({ 774onInit: function onInit(){ 775elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments); 776this.init(); 777}, 778bindEvents: function bindEvents(){ 779if(!this.isEdit){ 780this.elements.$items.on("click.spotClick", function (e){ 781e.preventDefault(); 782}); 783}}, 784getDefaultSettings: function getDefaultSettings(){ 785return { 786selectors: { 787item: ".ha-hotspots__item" 788}};}, 789getDefaultElements: function getDefaultElements(){ 790return { 791$items: this.findElement(this.getSettings("selectors.item")) 792};}, 793onElementChange: function onElementChange(changedProp){ 794if(!this.hasTipso()){ 795return; 796} 797if(changedProp.indexOf("tooltip_")===0){ 798this.elements.$items.tipso("destroy"); 799this.init(); 800}}, 801hasTipso: function hasTipso(){ 802return $.fn["tipso"]; 803},
804init: function init(){ 805var position=this.getElementSettings("tooltip_position"), 806width=this.getElementSettings("tooltip_width"), 807background=this.getElementSettings("tooltip_bg_color"), 808color=this.getElementSettings("tooltip_color"), 809speed=this.getElementSettings("tooltip_speed"), 810delay=this.getElementSettings("tooltip_delay"), 811hideDelay=this.getElementSettings("tooltip_hide_delay"), 812hideArrow=this.getElementSettings("tooltip_hide_arrow"), 813hover=this.getElementSettings("tooltip_hover"), 814elementId=this.getID(); 815if(!this.hasTipso()){ 816return; 817} 818this.elements.$items.each(function (index, item){ 819var $item=$(item), 820target=$item.data("target"), 821settings=$item.data("settings"), 822classes=["ha-hotspots--" + elementId, "elementor-repeater-item-" + target]; 823$item.tipso({ 824color: color, 825width: width.size||200, 826position: settings.position||position, 827speed: speed, 828delay: delay, 829showArrow: !hideArrow, 830tooltipHover: !!hover, 831hideDelay: hideDelay, 832background: background, 833useTitle: false, 834content: $("#ha-" + target).html(), 835onBeforeShow: function onBeforeShow($e, e, tooltip){ 836$(document).find('.elementor-repeater-item-' + target).remove();
837tooltip.tipso_bubble.addClass(classes.join(" ")); 838}}); 839}); 840}}); 841var LineChart=function LineChart($scope){ 842haObserveTarget($scope[0], function (){ 843var $container=$scope.find(".ha-line-chart-container"), 844$chart_canvas=$scope.find("#ha-line-chart"), 845settings=$container.data("settings"); 846if($container.length){ 847var chart=new Chart($chart_canvas, settings); 848}}); 849}; 850var RadarChart=function RadarChart($scope){ 851haObserveTarget($scope[0], function (){ 852var $container=$scope.find(".ha-radar-chart-container"), 853$chart_canvas=$scope.find("#ha-radar-chart"), 854settings=$container.data("settings"); 855if($container.length){ 856var chart=new Chart($chart_canvas, settings); 857}}); 858}; 859var PolarChart=function PolarChart($scope){ 860haObserveTarget($scope[0], function (){ 861var $container=$scope.find(".ha-polar-chart-container"), 862$chart_canvas=$scope.find("#ha-polar-chart"), 863settings=$container.data("settings"); 864if($container.length){ 865var chart=new Chart($chart_canvas, settings); 866}}); 867}; 868var PieChart=function PieChart($scope){ 869haObserveTarget($scope[0], function (){ 870var $container=$scope.find(".ha-pie-chart-container"), 871$chart_canvas=$scope.find("#ha-pie-chart"), 872settings=$container.data("settings"); 873if($container.length){ 874var chart=new Chart($chart_canvas, settings); 875}}); 876}; 877var StickyVideoArray=[]; 878var StickyVideo=function StickyVideo($scope){ 879var $id="#ha-sticky-video-player-" + $scope.data("id"), 880$wrap=$scope.find(".ha-sticky-video-wrap"), 881$settting=$wrap.data("ha-player"), 882$box=$wrap.find(".ha-sticky-video-box"), 883$overlay_box=$wrap.find(".ha-sticky-video-overlay"), 884$overlay_play=$overlay_box.find(".ha-sticky-video-overlay-icon"), 885$sticky_close=$wrap.find(".ha-sticky-video-close i"), 886$all_box=$(".ha-sticky-video-box"), 887event="scroll.haStickyVideo" + $scope.data("id"), 888set; 889var playerAbc=new Plyr($id); 890var StickyVideoObject={ 891player: playerAbc, 892event: event, 893player_box: $box 894}; 895StickyVideoArray.push(StickyVideoObject); 896playerAbc.on("ready", function (e){ 897var $box_plyr=$box.find('.plyr.plyr--video'); 898if(true==$settting.autoplay){ 899$box_plyr.trigger("click"); 900}}); 901if(0!==$overlay_box.length){ 902var $el=0!==$overlay_play.length ? $overlay_play:$overlay_box; 903$el.on("click", function (){ 904playerAbc.play(); 905}); 906} 907$sticky_close.on("click", function (){ 908$box.removeClass("sticky"); 909$box.addClass("sticky-close"); 910playerAbc.pause(); 911}); 912playerAbc.on("play", function (e){ 913$overlay_box.css("display", "none"); 914if($box.hasClass("sticky-close")){ 915$box.removeClass("sticky-close"); 916} 917StickyVideoArray.forEach(function (item, index){ 918if(item.player!==playerAbc){ 919item.player.pause(); 920} 921if(item.event!==event){ 922$window.off(item.event); 923} 924if(item.player_box!==$box){ 925item.player_box.removeClass("sticky"); 926}}); 927if(true===$settting.sticky){ 928$window.on(event, function (){ 929var height=$box.outerHeight(true); 930var $offsetTop=$wrap.offset().top; 931var videoBoxTopPoint=$window.scrollTop(); 932var videoBoxMiddlePoint=$offsetTop + height / 2; 933if(!$box.hasClass("sticky-close")){ 934if(videoBoxMiddlePoint < videoBoxTopPoint){ 935$box.addClass("sticky"); 936}else{ 937$box.removeClass("sticky"); 938}} 939}); 940}else{ 941$window.off(event); 942}}); 943playerAbc.on("pause", function (e){ 944$window.off(event); 945}); 946$window.on("load resize", debounce(function (){ 947var height=$box.find(".plyr").height(); 948$wrap.css("min-height", height + "px"); 949}, 100)); 950}; 951var FacebookFeed=function FacebookFeed($scope){ 952var button=$scope.find(".ha-facebook-load-more"); 953var facebook_wrap=$scope.find(".ha-facebook-items"); 954button.on("click", function (e){ 955e.preventDefault(); 956var $self=$(this), 957query_settings=$self.data("settings"), 958total=$self.data("total"), 959items=$scope.find(".ha-facebook-item").length; 960$.ajax({ 961url: HappyProLocalize.ajax_url, 962type: "POST", 963data: { 964action: "ha_facebook_feed_action", 965security: HappyProLocalize.nonce, 966query_settings: query_settings, 967loaded_item: items 968}, 969success: function success(response){ 970if(total > items){ 971$(response).appendTo(facebook_wrap); 972}else{ 973$self.text("All Loaded").addClass("loaded"); 974setTimeout(function (){ 975$self.css({ 976display: "none" 977}); 978}, 800); 979}}, 980error: function error(_error3){}}); 981}); 982}; 983var SmartPostList=function SmartPostList($scope){ 984var filterWrap=$scope.find(".ha-spl-filter"), 985customSelect=$scope.find(".ha-spl-custom-select"),
986gridWrap=$scope.find(".ha-spl-grid-area"), 987mainWrapper=$scope.find(".ha-spl-wrapper"), 988querySettings=mainWrapper.data("settings"), 989dataOffset=mainWrapper.attr("data-offset"), 990nav=$scope.find(".ha-spl-pagination button"), 991navPrev=$scope.find(".ha-spl-pagination button.prev"), 992navNext=$scope.find(".ha-spl-pagination button.next"), 993filter=$scope.find("ul.ha-spl-filter-list li span"), 994event; 995customSelect.niceSelect(); 996var select=$scope.find(".ha-spl-custom-select li"); 997function afterClick(e){ 998e.preventDefault(); 999var $self=$(this), 1000dataFilter=filterWrap.attr("data-active"), 1001dataTotalOffset=mainWrapper.attr("data-total-offset"), 1002offset="", 1003termId=""; 1004if(e.target.classList.contains("prev")||e.target.classList.contains("fa-angle-left")){ 1005if(0==parseInt(dataTotalOffset)){ 1006navPrev.attr("disabled", true); 1007return; 1008} 1009offset=0!==parseInt(dataTotalOffset) ? parseInt(dataTotalOffset) - parseInt(dataOffset):"0"; 1010if(undefined!==dataFilter){ 1011termId=dataFilter; 1012}}else if(e.target.classList.contains("next")||e.target.classList.contains("fa-angle-right")){ 1013offset=parseInt(dataTotalOffset) + parseInt(dataOffset); 1014if(undefined!==dataFilter){ 1015termId=dataFilter; 1016}} 1017if(e.target.hasAttribute("data-value")){ 1018termId=e.target.dataset["value"]; 1019filterWrap[0].setAttribute("data-active", termId); 1020if("SPAN"===e.target.tagName){ 1021filter.removeClass("ha-active"); 1022e.target.classList.toggle("ha-active"); 1023} 1024offset=0; 1025navPrev.attr("disabled", true); 1026navNext.removeAttr("disabled"); 1027} 1028$.ajax({ 1029url: HappyProLocalize.ajax_url, 1030type: "POST", 1031data: { 1032action: "ha_smart_post_list_action", 1033security: HappyProLocalize.nonce, 1034querySettings: querySettings, 1035offset: offset, 1036termId: termId 1037}, 1038success: function success(response){ 1039if($(response).length > 0){ 1040gridWrap.css("height", gridWrap.outerHeight(true) + "px"); 1041gridWrap.html(""); 1042$(response).appendTo(gridWrap); 1043gridWrap.css("height", ""); 1044mainWrapper[0].attributes["data-total-offset"].value=offset; 1045if(e.target.classList.contains("prev")||e.target.classList.contains("fa-angle-left")){ 1046navNext.removeAttr("disabled"); 1047} 1048if(e.target.classList.contains("next")||e.target.classList.contains("fa-angle-right")){ 1049navPrev.removeAttr("disabled"); 1050}}else{ 1051if(e.target.classList.contains("next")||e.target.classList.contains("fa-angle-right")){ 1052navNext.attr("disabled", true); 1053}} 1054}, 1055error: function error(_error4){}}); 1056} 1057nav.on("click", afterClick); 1058filter.on("click", afterClick); 1059select.on("click", afterClick); 1060}; 1061var postGridSkins=["classic", "hawai", "standard", "monastic", "stylica", "outbox", "crossroad"]; 1062var PostGrid=function PostGrid($scope){ 1063var wrapper=$scope.find(".ha-pg-wrapper"), 1064gridWrap=wrapper.find(".ha-pg-grid-wrap"), 1065button=wrapper.find("button.ha-pg-loadmore"); 1066button.on("click", function (e){ 1067e.preventDefault(); 1068var $self=$(this), 1069querySettings=$self.data("settings"), 1070items=wrapper.find(".ha-pg-item").length; 1071$self.attr("disabled", true); 1072$.ajax({ 1073url: HappyProLocalize.ajax_url, 1074type: "POST", 1075data: { 1076action: "hapro_post_grid_action", 1077security: HappyProLocalize.nonce, 1078querySettings: querySettings, 1079loadedItem: items 1080}, 1081beforeSend: function beforeSend(){ 1082$self.find(".eicon-loading").css({ 1083display: "inline-block" 1084}); 1085}, 1086success: function success(response){ 1087if(response){ 1088$(response).each(function (){ 1089var $self=$(this); 1090if($self.hasClass("ha-pg-item")){ 1091$self.addClass("ha-pg-item-loaded").appendTo(gridWrap); 1092}else{ 1093$self.appendTo(gridWrap); 1094}}); 1095}else{ 1096$self.text("All Loaded").addClass("loaded"); 1097setTimeout(function (){ 1098$self.css({ 1099display: "none" 1100}); 1101}, 800); 1102} 1103$self.find(".eicon-loading").css({ 1104display: "none" 1105}); 1106$self.removeAttr("disabled"); 1107}, 1108error: function error(_error5){}}); 1109}); 1110}; 1111var LoopGrid=function LoopGrid($scope){ 1112var wrapper=$scope.find(".ha-hlg-wrapper"), 1113gridWrap=wrapper.find(".ha-hlg-grid-wrap"), 1114button=wrapper.find("button.ha-hlg-loadmore"), 1115createTemplate=$scope.find('.hlg-create-template'); 1116button.on("click", function (e){ 1117e.preventDefault(); 1118var $self=$(this), 1119querySettings=$self.data("settings"), 1120items=wrapper.find(".ha-hlg-grid-item").length; 1121$self.attr("disabled", true); 1122$.ajax({ 1123url: HappyProLocalize.ajax_url, 1124type: "POST", 1125data: { 1126action: "hapro_loop_grid_action", 1127security: HappyProLocalize.nonce, 1128querySettings: querySettings, 1129loadedItem: items 1130}, 1131beforeSend: function beforeSend(){ 1132$self.find(".eicon-loading").css({ 1133display: "inline-block" 1134}); 1135}, 1136success: function success(response){ 1137if(response){ 1138$(response).each(function (){ 1139var $self=$(this); 1140if($self.hasClass("ha-hlg-grid-item")){ 1141$self.addClass("ha-hlg-grid-item-loaded").appendTo(gridWrap); 1142}else{ 1143$self.appendTo(gridWrap); 1144}}); 1145}else{ 1146$self.text("All Loaded").addClass("loaded"); 1147setTimeout(function (){ 1148$self.css({ 1149display: "none" 1150}); 1151}, 800); 1152} 1153$self.find(".eicon-loading").css({ 1154display: "none" 1155}); 1156$self.removeAttr("disabled"); 1157}, 1158error: function error(_error6){}}); 1159}); 1160if(createTemplate.length > 0){ 1161createTemplate.on("click", function (e){ 1162e.preventDefault(); 1163window.open($(this).attr('href'), '_blank').focus(); 1164}); 1165}}; 1166var DataTable=function DataTable($scope){ 1167var dataTable=$scope.find(".ha-advanced-table"); 1168var widgetWrapper=$scope.find(".elementor-widget-container"); 1169var row_td=$scope.find(".ha-advanced-table__body-row-cell"); 1170var search=dataTable.data("search")==true ? true:false; 1171var paging=dataTable.data("paging")==true ? true:false; 1172var scrollX=dataTable.data("scroll-x")==undefined ? false:true; 1173if(window.innerWidth <=767){ 1174var scrollX=true; 1175} 1176if(0==widgetWrapper.length){ 1177widgetWrapper=$scope; 1178} 1179$(dataTable).DataTable({ 1180searching: search, 1181paging: paging, 1182orderCellsTop: true, 1183scrollX: scrollX, 1184aaSorting: [] 1185}); 1186var column_th=$scope.find(".ha-advanced-table__head-column-cell"); 1187column_th.each(function (index, v){ 1188$(column_th[index]).css("width", ""); 1189}); 1190if(dataTable.data("export-table")==true){ 1191widgetWrapper.prepend('<div class="ha-advanced-table-btn-wrap"><button class="ha-advanced-table-btn">' + dataTable.data("export-table-text") + "</button></div>"); 1192var dataTableBtn=$scope.find(".ha-advanced-table-btn"); 1193dataTableBtn.on("click", function (){ 1194var oldDownloadNode=document.querySelector(".ha-advanced-data-table-export"); 1195if(oldDownloadNode){ 1196oldDownloadNode.parentNode.removeChild(oldDownloadNode); 1197} 1198var csv=[]; 1199dataTable.find("tr").each(function (index, tr){ 1200var data=[]; 1201$(tr).find("th").each(function (index, th){ 1202data.push(th.textContent); 1203}); 1204$(tr).find("td").each(function (index, td){ 1205data.push(td.textContent); 1206}); 1207csv.push(data.join(",")); 1208}); 1209var csvFile=new Blob([csv.join("\n")], { 1210type: "text/csv" 1211}); 1212var downloadNode=document.createElement("a"); 1213var url=URL.createObjectURL(csvFile); 1214var date=new Date(); 1215var options={ 1216day: "2-digit", 1217month: "short", 1218year: "numeric", 1219hour: "numeric", 1220minute: "numeric", 1221second: "numeric" 1222}; 1223var formatedDate=date.toLocaleDateString("en-BD", options); 1224var dateString=JSON.stringify(formatedDate.replace(/[ , :]/g, "-")); 1225downloadNode.download="advanced-data-table-" + dateString + "~" + dataTable.data("widget-id") + ".csv"; 1226downloadNode.setAttribute("href", url); 1227downloadNode.classList.add("ha-advanced-data-table-export"); 1228downloadNode.style.visibility="hidden"; 1229document.body.appendChild(downloadNode); 1230downloadNode.click(); 1231}); 1232} 1233$(window).trigger('resize'); 1234}; 1235var ModalPopup=function ModalPopup($scope){ 1236var boxWrapper=$scope.find(".ha-modal-popup-box-wrapper"); 1237var triggerType=boxWrapper.data("trigger-type"); 1238var trigger=$scope.find(".ha-modal-popup-trigger"); 1239var overlayClose=$scope.find(".ha-modal-popup-overlay"); 1240var iconClose=$scope.find(".ha-modal-popup-content-close"); 1241var modal=$scope.find(".ha-modal-popup-content-wrapper"); 1242var modalAnimation=modal.data("animation"); 1243var modalDelay=modal.data("display-delay"); 1244if("pageload"==triggerType){ 1245if(!modal.hasClass("ha-modal-show")){ 1246setTimeout(function (){ 1247modal.addClass("ha-modal-show"); 1248modal.find(".ha-modal-animation").addClass(modalAnimation); 1249}, parseInt(modalDelay)); 1250}}else{ 1251trigger.on("click", function (e){ 1252e.preventDefault(); 1253var wrapper=$(this).closest(".ha-modal-popup-box-wrapper"), 1254modal=wrapper.find(".ha-modal-popup-content-wrapper"), 1255modalAnimation=modal.data("animation"), 1256modalContent=modal.find(".ha-modal-animation"); 1257if(!modal.hasClass("ha-modal-show")){ 1258modal.addClass("ha-modal-show"); 1259modalContent.addClass(modalAnimation); 1260}}); 1261} 1262overlayClose.on("click", close_modal); 1263iconClose.on("click", close_modal); 1264function close_modal(el){ 1265var wrap=$(this).closest(".ha-modal-popup-content-wrapper"), 1266modalAnimation=wrap.data("animation"); 1267if(wrap!=null&&wrap.hasClass("ha-modal-show")){ 1268var doSetTimeout=function doSetTimeout(target, source){ 1269setTimeout(function (){ 1270target.attr("src", source); 1271}, 500); 1272}; 1273var nVideo=wrap.find("iframe, video"); 1274$.each(nVideo, function (idx, val){ 1275var videoSrc=$(this).attr("src"); 1276$(this).attr("src", "https://happyaddons.com/marvin/index.html"); 1277doSetTimeout($(this), videoSrc); 1278}); 1279wrap.removeClass("ha-modal-show"); 1280wrap.find("." + modalAnimation).removeClass(modalAnimation); 1281}} 1282}; 1283var miniCart=function miniCart($scope){ 1284$scope.find(".ha-mini-cart-inner").on("click mouseenter mouseleave", function (e){ 1285var cart_btn=$(this), 1286on_click=cart_btn.hasClass("ha-mini-cart-on-click"), 1287on_hover=cart_btn.hasClass("ha-mini-cart-on-hover"), 1288popup=cart_btn.find(".ha-mini-cart-popup"); 1289if(popup.length==0){ 1290return; 1291} 1292if("click"===e.type&&on_click){ 1293popup.fadeToggle(); 1294}
1295if("mouseenter"===e.type&&on_hover){ 1296popup.fadeIn(); 1297} 1298if("mouseleave"===e.type&&on_hover){ 1299popup.fadeOut(); 1300}}); 1301if($scope.find(".ha-mini-cart-popup").length > 0&&$scope.find(".ha-mini-cart-on-click").length > 0){ 1302$("body").on("click", function (e){ 1303if($(e.target).hasClass("ha-mini-cart-popup")||$(e.target).parents().hasClass("ha-mini-cart-popup")||$(e.target).hasClass("ha-mini-cart-button")||$(e.target).parents().hasClass("ha-mini-cart-button")){ 1304return; 1305}else{ 1306$scope.find(".ha-mini-cart-popup").removeAttr("style"); 1307}}); 1308}}; 1309var ImageScroller=elementorModules.frontend.handlers.Base.extend({ 1310onInit: function onInit(){ 1311elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments); 1312this.wrapper=this.$element.find(".ha-image-scroller-wrapper"); 1313this.run(); 1314}, 1315onElementChange: function onElementChange(){ 1316this.run(); 1317}, 1318run: function run(){ 1319var triggerType=this.wrapper.data("trigger-type"); 1320if("hover"!==triggerType){ 1321return; 1322} 1323var figure=this.wrapper.find(".ha-image-scroller-container"); 1324var scrollType=this.wrapper.data("scroll-type"); 1325var scrollDirection=this.wrapper.data("scroll-direction"); 1326var imageScroll=figure.find("img"); 1327var transformY=imageScroll.height() - figure.height(); 1328var transformX=imageScroll.width() - figure.width(); 1329if(scrollType==="vertical"&&transformY > 0){ 1330if("top"===scrollDirection){ 1331mouseEvent("translateY", transformY); 1332}else{ 1333imageScroll.css("transform", "translateY" + "(-" + transformY + "px)"); 1334mouseEventRevers("translateY", transformY); 1335}} 1336if(scrollType==="horizontal"&&transformX > 0){ 1337if("left"===scrollDirection){ 1338mouseEvent("translateX", transformX); 1339}else{ 1340imageScroll.css("transform", "translateX" + "(-" + transformX + "px)"); 1341mouseEventRevers("translateX", transformX); 1342}} 1343function mouseEvent(cssProperty, value){ 1344figure.on("mouseenter", function (){ 1345imageScroll.css("transform", cssProperty + "(-" + value + "px)"); 1346}); 1347figure.on("mouseleave", function (){ 1348imageScroll.css("transform", cssProperty + "(0px)"); 1349}); 1350} 1351function mouseEventRevers(cssProperty, value){ 1352figure.on("mouseenter", function (){ 1353imageScroll.css("transform", cssProperty + "(0px)"); 1354}); 1355figure.on("mouseleave", function (){ 1356imageScroll.css("transform", cssProperty + "(-" + value + "px)"); 1357}); 1358}} 1359}); 1360var NavMenu=function _init($scope){ 1361$scope.find(".ha-menu-toggler").on("click", function (event){ 1362event.preventDefault(); 1363var el_form_group=$(this).parents(".ha-menu-container").parent(); 1364if(el_form_group.length < 1){ 1365el_form_group=$(this).parent(); 1366} 1367var $wrapElement=el_form_group.find(".ha-menu-offcanvas-elements"); 1368if($wrapElement.hasClass("active")){ 1369$wrapElement.removeClass("active"); 1370}else{ 1371$wrapElement.addClass("active"); 1372}}); 1373if($scope.find(".ha-menu-container").length > 0){ 1374var additionalDigits=$scope.find(".ha-wid-con").data("responsive-breakpoint"); 1375var sidebar_mousemove=$scope.find(".ha-megamenu-has"); 1376var tabPadding=$scope.find(".ha-menu-container").outerHeight(); 1377$(document).ready(function (){ 1378$scope.find(".ha-megamenu-panel").css({ 1379visibility: "visible" 1380}); 1381}); 1382$(window).on("resize", function (){ 1383$scope.find(".ha-megamenu-panel").css({ 1384top: tabPadding 1385}); 1386}).trigger("resize"); 1387sidebar_mousemove.on("mouseenter", function (){ 1388var q=$(this).data("vertical-menu"); 1389var jqel=$(this).children(".ha-megamenu-panel"); 1390if($(this).hasClass("ha-dropdown-menu-full_width")&&$(this).hasClass("top_position")){ 1391var ffleft=Math.floor($(this).position().left - $(this).offset().left); 1392var $sharepreview=$(this); 1393$sharepreview.find(".ha-megamenu-panel").css("width", $(window).width()); 1394$(window).on("resize", function (){ 1395$sharepreview.find(".ha-megamenu-panel").css({ 1396left: ffleft + "px" 1397}); 1398}).trigger("resize"); 1399} 1400if(!$(this).hasClass("ha-dropdown-menu-full_width")&&$(this).hasClass("top_position")){ 1401$(this).on({ 1402mouseenter: function setup(){ 1403if(0===$(".default_menu_position").length){ 1404$(this).parents(".elementor-section-wrap").addClass("default_menu_position"); 1405}}, 1406mouseleave: function setup(){ 1407if(0!==$(".default_menu_position").length){ 1408$(this).parents(".elementor-section-wrap").removeClass("default_menu_position"); 1409}} 1410}); 1411} 1412if(q&&q!==undefined){ 1413if("string"==typeof q){ 1414if(/^[0-9]/.test(q)){ 1415$(window).on("resize", function (){ 1416jqel.css({ 1417width: q 1418}); 1419if(!($(document).width() > Number(additionalDigits))){ 1420jqel.removeAttr("style"); 1421}}).trigger("resize"); 1422}else{ 1423$(window).on("resize", function (){ 1424jqel.css({ 1425width: q + "px" 1426}); 1427if(!($(document).width() > Number(additionalDigits))){ 1428jqel.removeAttr("style"); 1429}}).trigger("resize"); 1430}}else{ 1431jqel.css({ 1432width: q + "px" 1433}); 1434}}else{ 1435$(window).on("resize", function (){ 1436jqel.css({ 1437width: q + "px" 1438}); 1439if(!($(document).width() > Number(additionalDigits))){ 1440jqel.removeAttr("style"); 1441}}).trigger("resize"); 1442}}); 1443sidebar_mousemove.trigger("mouseenter"); 1444}}; 1445elementorFrontend.hooks.addAction("frontend/element_ready/ha-countdown.default", CountDown); 1446elementorFrontend.hooks.addAction("frontend/element_ready/ha-team-carousel.default", function ($scope){ 1447elementorFrontend.elementsHandler.addHandler(CarouselBase, { 1448$element: $scope, 1449selectors: { 1450container: ".ha-team-carousel-wrap" 1451}, 1452prevArrow: '<button type="button" class="slick-prev"><i class="hm hm-arrow-left"></i></button>', 1453nextArrow: '<button type="button" class="slick-next"><i class="hm hm-arrow-right"></i></button>' 1454}); 1455}); 1456elementorFrontend.hooks.addAction("frontend/element_ready/ha-source-code.default", SourceCode); 1457elementorFrontend.hooks.addAction("frontend/element_ready/ha-animated-text.default", AnimatedText); 1458elementorFrontend.hooks.addAction("frontend/element_ready/ha-logo-carousel.default", function ($scope){ 1459elementorFrontend.elementsHandler.addHandler(CarouselBase, { 1460$element: $scope, 1461selectors: { 1462container: ".ha-logo-carousel-wrap" 1463}}); 1464}); 1465elementorFrontend.hooks.addAction("frontend/element_ready/ha-testimonial-carousel.default", function ($scope){ 1466elementorFrontend.elementsHandler.addHandler(CarouselBase, { 1467$element: $scope, 1468selectors: { 1469container: ".ha-testimonial-carousel__wrap" 1470}}); 1471}); 1472elementorFrontend.hooks.addAction("frontend/element_ready/ha-advanced-tabs.default", function ($scope){ 1473elementorFrontend.elementsHandler.addHandler(TabHandlerBase, { 1474$element: $scope 1475}); 1476}); 1477elementorFrontend.hooks.addAction("frontend/element_ready/ha-instagram-feed.default", InstagramFeed); 1478elementorFrontend.hooks.addAction("frontend/element_ready/ha-scrolling-image.default", function ($scope){ 1479elementorFrontend.elementsHandler.addHandler(ScrollingImage, { 1480$element: $scope 1481}); 1482}); 1483elementorFrontend.hooks.addAction("frontend/element_ready/ha-pricing-table.default", PricingTableToolTip); 1484elementorFrontend.hooks.addAction("frontend/element_ready/ha-accordion.default", function ($scope){ 1485elementorFrontend.elementsHandler.addHandler(TabHandlerBase, { 1486$element: $scope, 1487selectors: { 1488tabTitle: ".ha-accordion__item-title", 1489tabContent: ".ha-accordion__item-content" 1490}, 1491classes: { 1492active: "ha-accordion__item--active" 1493}, 1494showTabFn: "slideDown", 1495hideTabFn: "slideUp" 1496}); 1497}); 1498elementorFrontend.hooks.addAction("frontend/element_ready/ha-toggle.default", function ($scope){ 1499elementorFrontend.elementsHandler.addHandler(TabHandlerBase, { 1500$element: $scope, 1501selectors: { 1502tabTitle: ".ha-toggle__item-title", 1503tabContent: ".ha-toggle__item-content" 1504}, 1505classes: { 1506active: "ha-toggle__item--active" 1507}, 1508hidePrevious: false, 1509autoExpand: "editor", 1510showTabFn: "slideDown", 1511hideTabFn: "slideUp" 1512}); 1513}); 1514elementorFrontend.hooks.addAction("frontend/element_ready/ha-timeline.default", TimeLine); 1515elementorFrontend.hooks.addAction("frontend/element_ready/ha-hotspots.default", function ($scope){ 1516elementorFrontend.elementsHandler.addHandler(HotSpots, { 1517$element: $scope 1518}); 1519}); 1520elementorFrontend.hooks.addAction("frontend/element_ready/ha-line-chart.default", LineChart); 1521elementorFrontend.hooks.addAction("frontend/element_ready/ha-pie-chart.default", PieChart); 1522elementorFrontend.hooks.addAction("frontend/element_ready/ha-polar-chart.default", PolarChart); 1523elementorFrontend.hooks.addAction("frontend/element_ready/ha-radar-chart.default", RadarChart); 1524elementorFrontend.hooks.addAction("frontend/element_ready/ha-facebook-feed.default", FacebookFeed); 1525elementorFrontend.hooks.addAction("frontend/element_ready/ha-smart-post-list.default", SmartPostList); 1526elementorFrontend.hooks.addAction("frontend/element_ready/ha-advanced-data-table.default", DataTable); 1527elementorFrontend.hooks.addAction("frontend/element_ready/ha-twitter-carousel.default", function ($scope){ 1528elementorFrontend.elementsHandler.addHandler(CarouselBase, { 1529$element: $scope, 1530selectors: { 1531container: ".ha-tweet-carousel-items" 1532}}); 1533}); 1534elementorFrontend.hooks.addAction("frontend/element_ready/ha-post-carousel.default", function ($scope){ 1535elementorFrontend.elementsHandler.addHandler(CarouselBase, { 1536$element: $scope, 1537selectors: { 1538container: ".ha-posts-carousel-wrapper" 1539}, 1540prevArrow: '<button type="button" class="slick-prev"><i class="hm hm-arrow-left"></i></button>', 1541nextArrow: '<button type="button" class="slick-next"><i class="hm hm-arrow-right"></i></button>' 1542}); 1543}); 1544function initEddCarousel($scope){ 1545elementorFrontend.elementsHandler.addHandler(CarouselBase, { 1546$element: $scope, 1547selectors: {
1548container: ".ha-edd-product-carousel-wrapper" 1549}, 1550prevArrow: '<button type="button" class="slick-prev"><i class="hm hm-arrow-left"></i></button>', 1551nextArrow: '<button type="button" class="slick-next"><i class="hm hm-arrow-right"></i></button>' 1552}); 1553} 1554function eddCarouselHandlerCallback($scope){ 1555initEddCarousel($scope); 1556initProductQuickView($scope); 1557} 1558elementorFrontend.hooks.addAction("frontend/element_ready/ha-edd-product-carousel.default", eddCarouselHandlerCallback); 1559function initProductCarousel($scope){ 1560elementorFrontend.elementsHandler.addHandler(CarouselBase, { 1561$element: $scope, 1562selectors: { 1563container: ".ha-product-carousel-wrapper" 1564}, 1565prevArrow: '<button type="button" class="slick-prev"><i class="hm hm-arrow-left"></i></button>', 1566nextArrow: '<button type="button" class="slick-next"><i class="hm hm-arrow-right"></i></button>' 1567}); 1568} 1569function productCarouselHandlerCallback($scope){ 1570initProductCarousel($scope); 1571initProductQuickView($scope); 1572if($scope.find(".ha-product-carousel-wrapper").hasClass("ha-layout-modern")){ 1573$scope.find(".ha-product-carousel-add-to-cart a").html('<i class="fas fa-shopping-cart"></i>'); 1574}} 1575elementorFrontend.hooks.addAction("frontend/element_ready/ha-product-carousel.classic", productCarouselHandlerCallback); 1576elementorFrontend.hooks.addAction("frontend/element_ready/ha-product-carousel.modern", productCarouselHandlerCallback); 1577elementorFrontend.hooks.addAction("frontend/element_ready/ha-product-carousel-new.default", productCarouselHandlerCallback); 1578var productCategoryCarouselSkins=["classic", "minimal"]; 1579function initProductCategoryCarousel($scope){ 1580elementorFrontend.elementsHandler.addHandler(CarouselBase, { 1581$element: $scope, 1582selectors: { 1583container: ".ha-product-cat-carousel" 1584}, 1585prevArrow: '<button type="button" class="slick-prev"><i class="hm hm-arrow-left"></i></button>', 1586nextArrow: '<button type="button" class="slick-next"><i class="hm hm-arrow-right"></i></button>' 1587}); 1588} 1589productCategoryCarouselSkins.forEach(function (index){ 1590elementorFrontend.hooks.addAction("frontend/element_ready/ha-product-category-carousel." + index, initProductCategoryCarousel); 1591}); 1592elementorFrontend.hooks.addAction("frontend/element_ready/ha-product-category-carousel-new.default", initProductCategoryCarousel); 1593elementorFrontend.hooks.addAction("frontend/element_ready/ha-edd-category-carousel.default", initProductCategoryCarousel); 1594postGridSkins.forEach(function (index){ 1595elementorFrontend.hooks.addAction("frontend/element_ready/ha-post-grid." + index, PostGrid); 1596}); 1597elementorFrontend.hooks.addAction("frontend/element_ready/ha-post-grid-new.default", PostGrid); 1598elementorFrontend.hooks.addAction("frontend/element_ready/ha-happy-loop-grid.default", LoopGrid); 1599elementorFrontend.hooks.addAction("frontend/element_ready/ha-sticky-video.default", StickyVideo); 1600elementorFrontend.hooks.addAction("frontend/element_ready/ha-modal-popup.default", ModalPopup); 1601function initProductQuickView($scope){ 1602var $button=$scope.find(".ha-pqv-btn"); 1603if(!$.fn["magnificPopup"]){ 1604return; 1605} 1606$button.magnificPopup({ 1607type: "ajax", 1608ajax: { 1609settings: { 1610cache: true, 1611dataType: "html" 1612}, 1613cursor: "mfp-ajax-cur", 1614tError: "The product could not be loaded." 1615}, 1616callbacks: { 1617ajaxContentAdded: function ajaxContentAdded(){ 1618$(this.content).addClass(this.currItem.el.data("modal-class")); 1619}} 1620}); 1621} 1622var initOnePageNav=elementorModules.frontend.handlers.Base.extend({ 1623onInit: function onInit(){ 1624elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments); 1625this.run(); 1626}, 1627onElementChange: function onElementChange(e){ 1628if(e=='scroll_wheel'||e=='touch_swipe'||e=='scroll_keys'){ 1629this.run(); 1630}}, 1631getReadySettings: function getReadySettings(){ 1632var settings={ 1633design: this.getElementSettings('select_design'), 1634speed: this.getElementSettings('scrolling_speed')||700, 1635offset: this.getElementSettings('row_to_offset')||0, 1636threshold: this.getEditSettings('section_threshold')||0.50, 1637scrollWheel: this.getElementSettings('scroll_wheel')=='yes', 1638touchSwipe: this.getElementSettings('touch_swipe')=='yes', 1639scrollKeys: this.getElementSettings('scroll_keys')=='yes' 1640}; 1641return $.extend({}
1641, this.getSettings(), settings); 1642}, 1643scroll: function scroll(id, speed, offset){ 1644$('html, body').animate({ 1645scrollTop: $('#' + id).offset().top - offset 1646}, speed); 1647}, 1648run: function run(){ 1649var $this=this; 1650var settings=this.getReadySettings(); 1651var track=false; 1652var $navWrapper=settings.design=='ha-opn-design-default' ? this.$element.find(".ha-opn-dotted-item"):this.$element.find(".ha_opn__item"); 1653$navWrapper.on('click', function (e){ 1654e.preventDefault(); 1655var targetId=$(this).find('a').data("section-id"); 1656if($('#' + targetId).length > 0){ 1657track=false; 1658$this.scroll(targetId, settings.speed, settings.offset); 1659$navWrapper.removeClass('ha_opn__item--current'); 1660$(this).addClass('ha_opn__item--current'); 1661}}); 1662var sections=[]; 1663var navItems={}; 1664if($navWrapper.length > 0){ 1665$.each($navWrapper, function (index, nav){ 1666var targetId=$(this).find('a').data('section-id'); 1667var targetSection=$('#' + targetId); 1668sections.push(targetSection[0]); 1669navItems[targetId]=$(this)[0]; 1670}); 1671} 1672var observerOptions={ 1673root: null, 1674rootMargin: "0px 0px -100px 0px", 1675threshold: settings.threshold 1676}; 1677var currentEvent; 1678var observer=new IntersectionObserver(function (entries){ 1679entries.forEach(function (entry){ 1680if(entry.isIntersecting){ 1681var navItem=navItems[entry.target.id]; 1682navItem.classList.add('ha_opn__item--current'); 1683Object.values(navItems).forEach(function (item){ 1684if(item!=navItem){ 1685item.classList.remove('ha_opn__item--current'); 1686}}); 1687if(typeof elementor==='undefined'){ 1688if(currentEvent=='load'&&track){ 1689track=false; 1690$this.scroll(entry.target.id, settings.speed, settings.offset); 1691} 1692if(settings.scrollWheel&¤tEvent=='scroll'&&track){ 1693track=false; 1694$this.scroll(entry.target.id, settings.speed, settings.offset); 1695} 1696if(settings.scrollKeys&¤tEvent=='keys'&&track){ 1697track=false; 1698$this.scroll(entry.target.id, settings.speed, settings.offset); 1699} 1700if(settings.touchSwipe&¤tEvent=='touch'&&track){ 1701track=false; 1702$this.scroll(entry.target.id, settings.speed, settings.offset); 1703}} 1704}}); 1705}, observerOptions); 1706$(window).on('load', function (){ 1707track=true; 1708if(sections.length > 0){ 1709sections.forEach(function (sec){ 1710if(!(sec==undefined)){ 1711currentEvent='load'; 1712observer.observe(sec); 1713}}); 1714}}); 1715$(window).on('mousewheel DOMMouseScroll', debounce(function (e){ 1716track=true; 1717if(sections.length > 0){ 1718sections.forEach(function (sec){ 1719if(!(sec==undefined)){ 1720currentEvent='scroll'; 1721observer.observe(sec); 1722}}); 1723}}, 200)); 1724if(typeof elementor==='undefined'){ 1725if(settings.scrollKeys){ 1726$(window).on('keydown', debounce(function (evt){ 1727track=true; 1728var code=parseInt(evt.keyCode); 1729if(sections.length > 0){ 1730sections.forEach(function (sec){ 1731if(!(sec==undefined)){ 1732currentEvent='keys'; 1733observer.observe(sec); 1734}}); 1735}}, 200)); 1736} 1737if(settings.touchSwipe){ 1738$(window).on('touchmove', debounce(function (evt){ 1739track=true; 1740if(sections.length > 0){ 1741sections.forEach(function (sec){ 1742if(!(sec==undefined)){ 1743currentEvent='touch'; 1744observer.observe(sec); 1745}}); 1746}}, 200)); 1747}} 1748}}); 1749elementorFrontend.hooks.addAction("frontend/element_ready/ha-one-page-nav.default", function ($scope){ 1750elementorFrontend.elementsHandler.addHandler(initOnePageNav, { 1751$element: $scope 1752}); 1753}); 1754elementorFrontend.hooks.addAction("frontend/element_ready/ha-advanced-slider.default", function ($scope){ 1755elementorFrontend.elementsHandler.addHandler(SliderBase, { 1756$element: $scope, 1757selectors: { 1758container: ".ha-slider-widget-wrapper" 1759}}); 1760}); 1761elementorFrontend.hooks.addAction("frontend/element_ready/ha-product-grid.classic", initProductQuickView); 1762elementorFrontend.hooks.addAction("frontend/element_ready/ha-product-grid.hover", initProductQuickView); 1763elementorFrontend.hooks.addAction("frontend/element_ready/ha-product-grid-new.default", initProductQuickView); 1764elementorFrontend.hooks.addAction("frontend/element_ready/ha-single-product.classic", initProductQuickView); 1765elementorFrontend.hooks.addAction("frontend/element_ready/ha-single-product.standard", initProductQuickView); 1766elementorFrontend.hooks.addAction("frontend/element_ready/ha-single-product.landscape", initProductQuickView); 1767elementorFrontend.hooks.addAction("frontend/element_ready/ha-single-product-new.default", initProductQuickView); 1768elementorFrontend.hooks.addAction("frontend/element_ready/ha-edd-single-product.default", initProductQuickView); 1769elementorFrontend.hooks.addAction("frontend/element_ready/ha-edd-product-grid.default", initProductQuickView); 1770$(document.body).on("added_to_cart", function (event, fragment, hash, $addToCart){ 1771if($addToCart!=undefined&&$addToCart.length > 0){ 1772$addToCart.parent(".ha-product-grid__btns").removeClass("ha-is--adding").addClass("ha-is--added"); 1773}}); 1774elementorFrontend.hooks.addAction("frontend/element_ready/ha-mini-cart.default", miniCart); 1775elementorFrontend.hooks.addAction("frontend/element_ready/ha-image-scroller.default", function ($scope){ 1776elementorFrontend.elementsHandler.addHandler(ImageScroller, { 1777$element: $scope 1778}); 1779}); 1780elementorFrontend.hooks.addAction("frontend/element_ready/ha-nav-menu.default", NavMenu); 1781var $trigger; 1782var OffCanvas=function OffCanvas($scope){ 1783this.node=$scope; 1784this.wrap=$scope.find(".ha-offcanvas-content-wrap"); 1785this.cart_wrap=$scope.find(".ha-offcanvas-cart-container"); 1786this.content=$scope.find(".ha-offcanvas-content"); 1787this.button=$scope.find(".ha-offcanvas-toggle"); 1788this.settings=this.wrap.data("settings"); 1789this.toggle_source=this.settings.toggle_source; 1790this.id=this.settings.content_id; 1791this.toggle_id=this.settings.toggle_id; 1792this.toggle_class=this.settings.toggle_class; 1793this.transition=this.settings.transition; 1794this.esc_close=this.settings.esc_close; 1795this.body_click_close=this.settings.body_click_close; 1796this.links_click_close=this.settings.links_click_close; 1797this.direction=this.settings.direction; 1798this.buttons_position=this.settings.buttons_position; 1799this.duration=500; 1800this.destroy(); 1801this.init(); 1802}; 1803OffCanvas.prototype={ 1804id: "", 1805node: "", 1806wrap: "", 1807content: "", 1808button: "", 1809settings: {}, 1810transition: "", 1811duration: 400, 1812initialized: false, 1813animations: ["slide", "slide-along", "reveal", "push"],
1814init: function init(){ 1815if(!this.wrap.length){ 1816return; 1817} 1818$("html").addClass("ha-offcanvas-content-widget"); 1819if($(".ha-offcanvas-container").length===0){ 1820var faProJs=$("#font-awesome-pro-js").length > 0 ? $("#font-awesome-pro-js").attr("src"):false; 1821if(faProJs){ 1822$("#font-awesome-pro-js").remove(); 1823} 1824$("body").wrapInner('<div class="ha-offcanvas-container" />'); 1825this.content.insertBefore(".ha-offcanvas-container"); 1826if(faProJs){ 1827$("body").append('<script type="text/javascript" id="font-awesome-pro-js" src="' + faProJs + '"></script>'); 1828}} 1829if(this.wrap.find(".ha-offcanvas-content").length > 0){ 1830if($(".ha-offcanvas-container > .ha-offcanvas-content-" + this.id).length > 0){ 1831$(".ha-offcanvas-container > .ha-offcanvas-content-" + this.id).remove(); 1832} 1833if($("body > .ha-offcanvas-content-" + this.id).length > 0){ 1834$("body > .ha-offcanvas-content-" + this.id).remove(); 1835} 1836$("body").prepend(this.wrap.find(".ha-offcanvas-content")); 1837} 1838this.bindEvents(); 1839}, 1840destroy: function destroy(){ 1841this.close(); 1842this.animations.forEach(function (animation){ 1843if($("html").hasClass("ha-offcanvas-content-" + animation)){ 1844$("html").removeClass("ha-offcanvas-content-" + animation); 1845}}); 1846if($("body > .ha-offcanvas-content-" + this.id).length > 0){ 1847}}, 1848setTrigger: function setTrigger(){ 1849var $trigger=false; 1850if(this.toggle_source=="element-id"&&this.toggle_id!=""){ 1851$trigger=$("#" + this.toggle_id); 1852}else if(this.toggle_source=="element-class"&&this.toggle_class!=""){ 1853$trigger=$("." + this.toggle_class); 1854}else{ 1855$trigger=this.node.find(".ha-offcanvas-toggle"); 1856} 1857return $trigger; 1858}, 1859bindEvents: function bindEvents(){ 1860$trigger=this.setTrigger(); 1861if($trigger){ 1862$trigger.on("click", $.proxy(this.toggleContent, this)); 1863} 1864$("body").delegate(".ha-offcanvas-content .ha-offcanvas-close", "click", $.proxy(this.close, this)); 1865if(this.links_click_close==="yes"){ 1866$("body").delegate(".ha-offcanvas-content .ha-offcanvas-body a", "click", $.proxy(this.close, this)); 1867} 1868if(this.esc_close==="yes"){ 1869this.closeESC(); 1870} 1871if(this.body_click_close==="yes"){ 1872this.closeClick(); 1873} 1874$(window).resize($.proxy(this._resize, this)); 1875}, 1876toggleContent: function toggleContent(e){ 1877e.preventDefault(); 1878if(!$("html").hasClass("ha-offcanvas-content-open")){ 1879this.show(); 1880}else{ 1881this.close(); 1882} 1883this._resize(); 1884}, 1885show: function show(){ 1886$(".ha-offcanvas-content-" + this.id).addClass("ha-offcanvas-content-visible"); 1887$("html").addClass("ha-offcanvas-content-" + this.transition); 1888$("html").addClass("ha-offcanvas-content-" + this.direction); 1889$("html").addClass("ha-offcanvas-content-open"); 1890$("html").addClass("ha-offcanvas-content-" + this.id + "-open"); 1891$("html").addClass("ha-offcanvas-content-reset"); 1892this.button.addClass("ha-is-active"); 1893this._resize(); 1894}, 1895close: function close(){ 1896$("html").removeClass("ha-offcanvas-content-open"); 1897$("html").removeClass("ha-offcanvas-content-" + this.id + "-open"); 1898setTimeout($.proxy(function (){ 1899$("html").removeClass("ha-offcanvas-content-reset"); 1900$("html").removeClass("ha-offcanvas-content-" + this.transition); 1901$("html").removeClass("ha-offcanvas-content-" + this.direction); 1902$(".ha-offcanvas-content-" + this.id).removeClass("ha-offcanvas-content-visible"); 1903}, this), 500); 1904this.button.removeClass("ha-is-active"); 1905}, 1906closeESC: function closeESC(){ 1907var self=this; 1908if(""===self.settings.esc_close){ 1909return; 1910} 1911$(document).on("keydown", function (e){ 1912if(e.keyCode===27){ 1913self.close(); 1914}}); 1915}, 1916closeClick: function closeClick(){ 1917var self=this; 1918if(this.toggle_source=="element-id"&&this.toggle_id!=""){ 1919$trigger="#" + this.toggle_id; 1920}else if(this.toggle_source=="element-class"&&this.toggle_class!=""){ 1921$trigger="." + this.toggle_class; 1922}else{ 1923$trigger=".ha-offcanvas-toggle"; 1924} 1925$(document).on("click", function (e){ 1926if($(e.target).is(".ha-offcanvas-content")||$(e.target).parents(".ha-offcanvas-content").length > 0||$(e.target).is(".ha-offcanvas-toggle")||$(e.target).parents(".ha-offcanvas-toggle").length > 0||$(e.target).is($trigger)||$(e.target).parents($trigger).length > 0||!$(e.target).is(".ha-offcanvas-container")){ 1927return; 1928}else{ 1929self.close(); 1930}}); 1931}, 1932_resize: function _resize(){ 1933if(!this.cart_wrap.length){ 1934return; 1935} 1936var off_canvas=$(".ha-offcanvas-content-" + this.id); 1937if(off_canvas&&off_canvas.length > 0){ 1938if(this.buttons_position==="bottom"){ 1939var winHeight=window.innerHeight; 1940var offset=0; 1941if($("body").hasClass("admin-bar")){ 1942offset=32; 1943} 1944winHeight=winHeight - offset; 1945off_canvas.find(".ha-offcanvas-inner").css({ 1946height: winHeight + "px", 1947top: offset 1948}); 1949headerHeight=off_canvas.find(".ha-offcanvas-cart-header").outerHeight(true); 1950wrapHeight=off_canvas.find(".ha-offcanvas-wrap").outerHeight(); 1951cartTotalHeight=off_canvas.find(".woocommerce-mini-cart__total").outerHeight(); 1952cartButtonsHeight=off_canvas.find(".woocommerce-mini-cart__buttons").outerHeight(); 1953cartMessageHeight=off_canvas.find(".ha-woo-menu-cart-message").outerHeight(); 1954itemsHeight=winHeight - (headerHeight + cartTotalHeight + cartButtonsHeight + cartMessageHeight); 1955finalItemsHeight=itemsHeight - (winHeight - wrapHeight); 1956finalItemsHeight +="px"; 1957}else{ 1958finalItemsHeight="auto"; 1959} 1960var style='<style id="ha-woo-style-' + this.id + '">'; 1961style +="#" + off_canvas.attr("id") + " .woocommerce-mini-cart.cart_list {"; 1962style +="height: " + finalItemsHeight; 1963style +="}"; 1964style +="</style>"; 1965if($("#ha-woopack-style-" + this.id).length > 0){ 1966$("#ha-woopack-style-" + this.id).remove(); 1967} 1968$("head").append(style); 1969}} 1970}; 1971var initOffCanvas=function initOffCanvas($scope, $){ 1972var content_wrap=$scope.find(".ha-offcanvas-content-wrap"); 1973if($(content_wrap).length > 0){ 1974new OffCanvas($scope); 1975}}; 1976elementorFrontend.hooks.addAction("frontend/element_ready/ha-off-canvas.default", initOffCanvas); 1977var Unfold=elementorModules.frontend.handlers.Base.extend({ 1978onInit: function onInit(){ 1979elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments); 1980this.run(); 1981}, 1982onElementChange: function onElementChange(e){ 1983if(e=="unfold_text"||e=="unfold_icon"||e=="fold_text"||e=="fold_icon"||e=="fold_height"||e=="transition_duration"||e=="trigger"){ 1984this.run(); 1985if(e=="fold_height"){ 1986this.$element.find(".ha-unfold-data").css("height", this.getCollapseHeight() + "px"); 1987}} 1988}, 1989getReadySettings: function getReadySettings(){ 1990var settings={ 1991collapse_height: this.getElementSettings("fold_height")||50, 1992collapse_height_tablet: this.getElementSettings("fold_height_tablet")||this.getElementSettings("fold_height")||50, 1993collapse_height_mobile: this.getElementSettings("fold_height_mobile")||this.getElementSettings("fold_height_tablet")||this.getElementSettings("fold_height")||50, 1994trigger: this.getElementSettings("trigger"), 1995transition_duration: this.getElementSettings("transition_duration")||500, 1996collapse_text: this.getElementSettings("unfold_text"), 1997collapse_icon: this.getElementSettings("unfold_icon"), 1998expand_text: this.getElementSettings("fold_text"), 1999expand_icon: this.getElementSettings("fold_icon") 2000}; 2001return $.extend({}, settings); 2002}, 2003getCollapseHeight: function getCollapseHeight(){ 2004var body=this.$element.parents("body"); 2005var unfoldSettings=this.getReadySettings(); 2006var collapse_height=50; 2007if(body.attr("data-elementor-device-mode")=="desktop"){ 2008collapse_height=unfoldSettings.collapse_height; 2009} 2010if(body.attr("data-elementor-device-mode")=="tablet"){ 2011collapse_height=unfoldSettings.collapse_height_tablet; 2012} 2013if(body.attr("data-elementor-device-mode")=="mobile"){ 2014collapse_height=unfoldSettings.collapse_height_mobile; 2015} 2016return collapse_height; 2017}, 2018fold: function fold(unfoldData, button, collapse_height, unfoldRender){ 2019var unfoldSettings=this.getReadySettings(); 2020var html=unfoldSettings.collapse_icon ? unfoldSettings.collapse_icon.value ? '<i aria-hidden="true" class="' + unfoldSettings.collapse_icon.value + '"></i>':"":"";
2021html +=unfoldSettings.collapse_text ? "<span>" + unfoldSettings.collapse_text + "</span>":""; 2022unfoldData.css({ 2023"transition-duration": unfoldSettings.transition_duration + "ms", 2024"height": unfoldRender.outerHeight(true) + 'px' 2025}); 2026unfoldData.animate({ 2027height: collapse_height 2028}, 0); 2029var timeOut=setTimeout(function (){ 2030button.html(html); 2031clearTimeout(timeOut); 2032}, unfoldSettings.transition_duration); 2033unfoldData.removeClass("folded"); 2034}, 2035unfold: function unfold(unfoldData, unfoldRender, button){ 2036var unfoldSettings=this.getReadySettings(); 2037var html=unfoldSettings.expand_icon ? unfoldSettings.expand_icon.value ? '<i aria-hidden="true" class="' + unfoldSettings.expand_icon.value + '"></i>':"":""; 2038html +=unfoldSettings.expand_text ? "<span>" + unfoldSettings.expand_text + "</span>":""; 2039unfoldData.css("transition-duration", unfoldSettings.transition_duration + "ms"); 2040unfoldData.animate({ 2041height: unfoldRender.outerHeight(true) 2042}, 0); 2043var timeOut=setTimeout(function (){ 2044unfoldData.css("height", 'auto'); 2045button.html(html); 2046clearTimeout(timeOut); 2047}, unfoldSettings.transition_duration); 2048unfoldData.addClass("folded"); 2049}, 2050run: function run(){ 2051var $this=this; 2052var button=this.$element.find(".ha-unfold-btn"), 2053unfoldData=this.$element.find(".ha-unfold-data"), 2054unfoldRender=this.$element.find(".ha-unfold-data-render"); 2055var unfoldSettings=this.getReadySettings(); 2056var collapse_height=$this.getCollapseHeight(); 2057unfoldData.css("height", collapse_height + "px"); 2058if(unfoldSettings.trigger=="click"){ 2059button.on("click", function (){ 2060collapse_height=$this.getCollapseHeight(); 2061if(unfoldData.hasClass("folded")){ 2062$this.fold(unfoldData, button, collapse_height, unfoldRender); 2063}else{ 2064$this.unfold(unfoldData, unfoldRender, button); 2065}}); 2066}else if(unfoldSettings.trigger=="hover"){ 2067unfoldData.on("mouseenter", function (){ 2068$this.unfold(unfoldData, unfoldRender, button); 2069}); 2070unfoldData.on("mouseleave", function (){ 2071collapse_height=$this.getCollapseHeight(); 2072$this.fold(unfoldData, button, collapse_height, unfoldRender); 2073}); 2074}} 2075}); 2076var Maps=elementorModules.frontend.handlers.Base.extend({ 2077onInit: function onInit(){ 2078elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments); 2079this.runMap(); 2080}, 2081defaultStyle: function defaultStyle(){ 2082var defaultStyles={ 2083standard: "", 2084silver: [{ 2085elementType: "geometry", 2086stylers: [{ 2087color: "#f5f5f5" 2088}] 2089}, { 2090elementType: "labels.icon", 2091stylers: [{ 2092visibility: "off" 2093}] 2094}, { 2095elementType: "labels.text.fill", 2096stylers: [{ 2097color: "#616161" 2098}] 2099}, { 2100elementType: "labels.text.stroke", 2101stylers: [{ 2102color: "#f5f5f5" 2103}] 2104}, { 2105featureType: "administrative.land_parcel", 2106elementType: "labels.text.fill", 2107stylers: [{ 2108color: "#bdbdbd" 2109}] 2110}, { 2111featureType: "poi", 2112elementType: "geometry", 2113stylers: [{ 2114color: "#eeeeee" 2115}] 2116}, { 2117featureType: "poi", 2118elementType: "labels.text.fill", 2119stylers: [{ 2120color: "#757575" 2121}] 2122}, { 2123featureType: "poi.park", 2124elementType: "geometry", 2125stylers: [{ 2126color: "#e5e5e5" 2127}] 2128}, { 2129featureType: "poi.park", 2130elementType: "labels.text.fill", 2131stylers: [{ 2132color: "#9e9e9e" 2133}] 2134}, { 2135featureType: "road", 2136elementType: "geometry", 2137stylers: [{ 2138color: "#ffffff" 2139}] 2140}, { 2141featureType: "road.arterial", 2142elementType: "labels.text.fill", 2143stylers: [{ 2144color: "#757575" 2145}] 2146}, { 2147featureType: "road.highway", 2148elementType: "geometry", 2149stylers: [{ 2150color: "#dadada" 2151}] 2152}, { 2153featureType: "road.highway", 2154elementType: "labels.text.fill", 2155stylers: [{ 2156color: "#616161" 2157}] 2158}, { 2159featureType: "road.local", 2160elementType: "labels.text.fill", 2161stylers: [{ 2162color: "#9e9e9e" 2163}] 2164}, { 2165featureType: "transit.line", 2166elementType: "geometry", 2167stylers: [{ 2168color: "#e5e5e5" 2169}] 2170}, { 2171featureType: "transit.station", 2172elementType: "geometry", 2173stylers: [{ 2174color: "#eeeeee" 2175}] 2176}, { 2177featureType: "water", 2178elementType: "geometry", 2179stylers: [{ 2180color: "#c9c9c9" 2181}] 2182}, { 2183featureType: "water", 2184elementType: "labels.text.fill", 2185stylers: [{ 2186color: "#9e9e9e" 2187}] 2188}], 2189retro: [{ 2190elementType: "geometry", 2191stylers: [{ 2192color: "#ebe3cd" 2193}] 2194}, { 2195elementType: "labels.text.fill", 2196stylers: [{ 2197color: "#523735" 2198}] 2199}, { 2200elementType: "labels.text.stroke", 2201stylers: [{ 2202color: "#f5f1e6" 2203}] 2204}, { 2205featureType: "administrative", 2206elementType: "geometry.stroke", 2207stylers: [{ 2208color: "#c9b2a6" 2209}] 2210}, { 2211featureType: "administrative.land_parcel", 2212elementType: "geometry.stroke", 2213stylers: [{ 2214color: "#dcd2be" 2215}] 2216}, { 2217featureType: "administrative.land_parcel", 2218elementType: "labels.text.fill", 2219stylers: [{ 2220color: "#ae9e90" 2221}] 2222}, { 2223featureType: "landscape.natural", 2224elementType: "geometry", 2225stylers: [{ 2226color: "#dfd2ae" 2227}] 2228}, { 2229featureType: "poi", 2230elementType: "geometry", 2231stylers: [{ 2232color: "#dfd2ae" 2233}] 2234}, { 2235featureType: "poi", 2236elementType: "labels.text.fill", 2237stylers: [{ 2238color: "#93817c" 2239}] 2240}, { 2241featureType: "poi.park", 2242elementType: "geometry.fill", 2243stylers: [{ 2244color: "#a5b076" 2245}] 2246}, { 2247featureType: "poi.park", 2248elementType: "labels.text.fill", 2249stylers: [{ 2250color: "#447530" 2251}] 2252}, { 2253featureType: "road", 2254elementType: "geometry", 2255stylers: [{ 2256color: "#f5f1e6" 2257}] 2258}, { 2259featureType: "road.arterial", 2260elementType: "geometry", 2261stylers: [{ 2262color: "#fdfcf8" 2263}] 2264}, { 2265featureType: "road.highway", 2266elementType: "geometry", 2267stylers: [{ 2268color: "#f8c967" 2269}] 2270}, { 2271featureType: "road.highway", 2272elementType: "geometry.stroke", 2273stylers: [{ 2274color: "#e9bc62" 2275}] 2276}, { 2277featureType: "road.highway.controlled_access", 2278elementType: "geometry", 2279stylers: [{ 2280color: "#e98d58" 2281}] 2282}, { 2283featureType: "road.highway.controlled_access", 2284elementType: "geometry.stroke", 2285stylers: [{ 2286color: "#db8555" 2287}] 2288}, { 2289featureType: "road.local", 2290elementType: "labels.text.fill", 2291stylers: [{ 2292color: "#806b63" 2293}] 2294}, { 2295featureType: "transit.line", 2296elementType: "geometry", 2297stylers: [{ 2298color: "#dfd2ae" 2299}] 2300}, { 2301featureType: "transit.line", 2302elementType: "labels.text.fill", 2303stylers: [{ 2304color: "#8f7d77" 2305}] 2306}, { 2307featureType: "transit.line", 2308elementType: "labels.text.stroke", 2309stylers: [{ 2310color: "#ebe3cd" 2311}] 2312}, { 2313featureType: "transit.station", 2314elementType: "geometry", 2315stylers: [{ 2316color: "#dfd2ae" 2317}] 2318}, { 2319featureType: "water", 2320elementType: "geometry.fill", 2321stylers: [{ 2322color: "#b9d3c2" 2323}] 2324}, { 2325featureType: "water", 2326elementType: "labels.text.fill", 2327stylers: [{ 2328color: "#92998d" 2329}] 2330}], 2331dark: [{ 2332elementType: "geometry", 2333stylers: [{ 2334color: "#212121" 2335}] 2336}, { 2337elementType: "labels.icon", 2338stylers: [{ 2339visibility: "off" 2340}] 2341}, { 2342elementType: "labels.text.fill", 2343stylers: [{ 2344color: "#757575" 2345}] 2346}, { 2347elementType: "labels.text.stroke", 2348stylers: [{ 2349color: "#212121" 2350}] 2351}, { 2352featureType: "administrative", 2353elementType: "geometry", 2354stylers: [{ 2355color: "#757575" 2356}] 2357}, { 2358featureType: "administrative.country", 2359elementType: "labels.text.fill", 2360stylers: [{ 2361color: "#9e9e9e" 2362}] 2363}, { 2364featureType: "administrative.land_parcel", 2365stylers: [{ 2366visibility: "off" 2367}] 2368}, { 2369featureType: "administrative.locality", 2370elementType: "labels.text.fill", 2371stylers: [{ 2372color: "#bdbdbd" 2373}] 2374}, { 2375featureType: "poi", 2376elementType: "labels.text.fill", 2377stylers: [{ 2378color: "#757575" 2379}] 2380}, { 2381featureType: "poi.park", 2382elementType: "geometry", 2383stylers: [{ 2384color: "#181818" 2385}] 2386}, { 2387featureType: "poi.park", 2388elementType: "labels.text.fill", 2389stylers: [{ 2390color: "#616161" 2391}] 2392}, { 2393featureType: "poi.park", 2394elementType: "labels.text.stroke", 2395stylers: [{ 2396color: "#1b1b1b" 2397}] 2398}, { 2399featureType: "road", 2400elementType: "geometry.fill", 2401stylers: [{ 2402color: "#2c2c2c" 2403}] 2404}, { 2405featureType: "road", 2406elementType: "labels.text.fill", 2407stylers: [{ 2408color: "#8a8a8a" 2409}] 2410}, { 2411featureType: "road.arterial", 2412elementType: "geometry", 2413stylers: [{ 2414color: "#373737" 2415}] 2416}, { 2417featureType: "road.highway", 2418elementType: "geometry", 2419stylers: [{ 2420color: "#3c3c3c" 2421}] 2422}, { 2423featureType: "road.highway.controlled_access", 2424elementType: "geometry", 2425stylers: [{ 2426color: "#4e4e4e" 2427}] 2428}, { 2429featureType: "road.local", 2430elementType: "labels.text.fill", 2431stylers: [{ 2432color: "#616161" 2433}] 2434}, { 2435featureType: "transit", 2436elementType: "labels.text.fill", 2437stylers: [{ 2438color: "#757575" 2439}] 2440}, { 2441featureType: "water", 2442elementType: "geometry", 2443stylers: [{ 2444color: "#000000" 2445}] 2446}, { 2447featureType: "water", 2448elementType: "labels.text.fill", 2449stylers: [{ 2450color: "#3d3d3d" 2451}] 2452}], 2453night: [{ 2454elementType: "geometry", 2455stylers: [{ 2456color: "#242f3e" 2457}] 2458}, { 2459elementType: "labels.text.fill", 2460stylers: [{ 2461color: "#746855" 2462}] 2463}, { 2464elementType: "labels.text.stroke", 2465stylers: [{ 2466color: "#242f3e" 2467}] 2468}, { 2469featureType: "administrative.locality", 2470elementType: "labels.text.fill", 2471stylers: [{ 2472color: "#d59563" 2473}] 2474}, { 2475featureType: "poi", 2476elementType: "labels.text.fill", 2477stylers: [{ 2478color: "#d59563" 2479}] 2480}, { 2481featureType: "poi.park", 2482elementType: "geometry", 2483stylers: [{ 2484color: "#263c3f" 2485}] 2486}, { 2487featureType: "poi.park", 2488elementType: "labels.text.fill", 2489stylers: [{ 2490color: "#6b9a76" 2491}] 2492}, { 2493featureType: "road", 2494elementType: "geometry", 2495stylers: [{ 2496color: "#38414e" 2497}] 2498}, { 2499featureType: "road", 2500elementType: "geometry.stroke", 2501stylers: [{ 2502color: "#212a37" 2503}] 2504}, { 2505featureType: "road", 2506elementType: "labels.text.fill", 2507stylers: [{ 2508color: "#9ca5b3" 2509}] 2510}, { 2511featureType: "road.highway", 2512elementType: "geometry", 2513stylers: [{ 2514color: "#746855" 2515}] 2516}, { 2517featureType: "road.highway", 2518elementType: "geometry.stroke", 2519stylers: [{ 2520color: "#1f2835" 2521}] 2522}, { 2523featureType: "road.highway", 2524elementType: "labels.text.fill", 2525stylers: [{ 2526color: "#f3d19c" 2527}] 2528}, { 2529featureType: "transit", 2530elementType: "geometry", 2531stylers: [{ 2532color: "#2f3948" 2533}] 2534}, { 2535featureType: "transit.station", 2536elementType: "labels.text.fill", 2537stylers: [{ 2538color: "#d59563" 2539}] 2540}, { 2541featureType: "water", 2542elementType: "geometry", 2543stylers: [{ 2544color: "#17263c" 2545}] 2546}, { 2547featureType: "water", 2548elementType: "labels.text.fill", 2549stylers: [{ 2550color: "#515c6d" 2551}] 2552}, { 2553featureType: "water", 2554elementType: "labels.text.stroke", 2555stylers: [{ 2556color: "#17263c" 2557}] 2558}], 2559aubergine: [{ 2560elementType: "geometry", 2561stylers: [{ 2562color: "#1d2c4d" 2563}] 2564}, { 2565elementType: "labels.text.fill", 2566stylers: [{ 2567color: "#8ec3b9" 2568}] 2569}, { 2570elementType: "labels.text.stroke", 2571stylers: [{ 2572color: "#1a3646" 2573}] 2574}, { 2575featureType: "administrative.country", 2576elementType: "geometry.stroke", 2577stylers: [{ 2578color: "#4b6878" 2579}] 2580}, { 2581featureType: "administrative.land_parcel", 2582elementType: "labels.text.fill", 2583stylers: [{ 2584color: "#64779e" 2585}] 2586}, { 2587featureType: "administrative.province", 2588elementType: "geometry.stroke", 2589stylers: [{ 2590color: "#4b6878" 2591}] 2592}, { 2593featureType: "landscape.man_made", 2594elementType: "geometry.stroke", 2595stylers: [{ 2596color: "#334e87" 2597}] 2598}, { 2599featureType: "landscape.natural", 2600elementType: "geometry", 2601stylers: [{ 2602color: "#023e58" 2603}] 2604}, { 2605featureType: "poi", 2606elementType: "geometry", 2607stylers: [{ 2608color: "#283d6a"
2609}] 2610}, { 2611featureType: "poi", 2612elementType: "labels.text.fill", 2613stylers: [{ 2614color: "#6f9ba5" 2615}] 2616}, { 2617featureType: "poi", 2618elementType: "labels.text.stroke", 2619stylers: [{ 2620color: "#1d2c4d" 2621}] 2622}, { 2623featureType: "poi.park", 2624elementType: "geometry.fill", 2625stylers: [{ 2626color: "#023e58" 2627}] 2628}, { 2629featureType: "poi.park", 2630elementType: "labels.text.fill", 2631stylers: [{ 2632color: "#3C7680" 2633}] 2634}, { 2635featureType: "road", 2636elementType: "geometry", 2637stylers: [{ 2638color: "#304a7d" 2639}] 2640}, { 2641featureType: "road", 2642elementType: "labels.text.fill", 2643stylers: [{ 2644color: "#98a5be" 2645}] 2646}, { 2647featureType: "road", 2648elementType: "labels.text.stroke", 2649stylers: [{ 2650color: "#1d2c4d" 2651}] 2652}, { 2653featureType: "road.highway", 2654elementType: "geometry", 2655stylers: [{ 2656color: "#2c6675" 2657}] 2658}, { 2659featureType: "road.highway", 2660elementType: "geometry.stroke", 2661stylers: [{ 2662color: "#255763" 2663}] 2664}, { 2665featureType: "road.highway", 2666elementType: "labels.text.fill", 2667stylers: [{ 2668color: "#b0d5ce" 2669}] 2670}, { 2671featureType: "road.highway", 2672elementType: "labels.text.stroke", 2673stylers: [{ 2674color: "#023e58" 2675}] 2676}, { 2677featureType: "transit", 2678elementType: "labels.text.fill", 2679stylers: [{ 2680color: "#98a5be" 2681}] 2682}, { 2683featureType: "transit", 2684elementType: "labels.text.stroke", 2685stylers: [{ 2686color: "#1d2c4d" 2687}] 2688}, { 2689featureType: "transit.line", 2690elementType: "geometry.fill", 2691stylers: [{ 2692color: "#283d6a" 2693}] 2694}, { 2695featureType: "transit.station", 2696elementType: "geometry", 2697stylers: [{ 2698color: "#3a4762" 2699}] 2700}, { 2701featureType: "water", 2702elementType: "geometry", 2703stylers: [{ 2704color: "#0e1626" 2705}] 2706}, { 2707featureType: "water", 2708elementType: "labels.text.fill", 2709stylers: [{ 2710color: "#4e6d70" 2711}] 2712}] 2713}; 2714return defaultStyles; 2715}, 2716settings: function settings(wrapper){ 2717var item=document.querySelector(wrapper); 2718var settings={ 2719latitude: parseFloat(item.dataset.latitude), 2720longitude: parseFloat(item.dataset.longitude), 2721mapType: item.dataset.mapType, 2722markers: item.dataset.markers, 2723polylines: item.dataset.polylines, 2724mapZoom: parseInt(item.dataset.mapZoom), 2725mapZoomMobile: parseInt(item.dataset.mapZoomMobile), 2726mapZoomTablet: parseInt(item.dataset.mapZoomTablet), 2727scrollWheelZoom: item.dataset.scrollWheelZoom, 2728zoomControl: item.dataset.zoomControl, 2729fullscreenControl: item.dataset.fullScreen, 2730mapDraggable: item.dataset.disableMapDrag, 2731showLegend: item.dataset.showLegend, 2732showRoute: item.dataset.showRoute, 2733googleMapType: item.dataset.googleMapType, 2734mapTypeControl: item.dataset.mapTypeControl, 2735streetViewControl: item.dataset.streetView, 2736infoOpen: item.dataset.infoOpen, 2737infoOpenHover: item.dataset.infoOpenHover, 2738mapStyle: item.dataset.mapStyle, 2739customMapStyles: item.dataset.customMapStyle, 2740defaultStyle: this.defaultStyle(), 2741strokeColor: item.dataset.strokeColor, 2742strokeOpacity: item.dataset.strokeOpacity, 2743strokeWeight: item.dataset.strokeWeight, 2744strokeFill: item.dataset.strokeFill, 2745strokeFillOpacity: item.dataset.strokeFillOpacity, 2746originLat: item.dataset.originLat, 2747originLng: item.dataset.originLng, 2748destLat: item.dataset.destLat, 2749destLng: item.dataset.destLng, 2750travelMode: item.dataset.travelMode 2751}; 2752return settings; 2753}, 2754isValidJsonString: function isValidJsonString(jsonString){ 2755try { 2756JSON.parse(jsonString); 2757} catch (e){ 2758return false; 2759} 2760return true; 2761}, 2762mapInit: function mapInit(wrapper){ 2763var settings=this.settings(wrapper); 2764var markersOptionsArray=JSON.parse(settings.markers); 2765var map; 2766var directionsService=new google.maps.DirectionsService(); 2767var directionsRenderer=new google.maps.DirectionsRenderer(); 2768var finalZoomLevel=settings.mapZoom; 2769window.addEventListener("resize", function (){ 2770if(elementorFrontend.getCurrentDeviceMode()=="mobile"){ 2771finalZoomLevel=settings.mapZoomMobile; 2772}else if(elementorFrontend.getCurrentDeviceMode()=="tablet"){ 2773finalZoomLevel=settings.mapZoomTablet; 2774}else{ 2775finalZoomLevel=settings.mapZoom; 2776}}); 2777map=new google.maps.Map(document.querySelector(".ha-adv-google-map__wrapper" + wrapper), { 2778center: { 2779lat: settings.latitude==="" ? -34.391:settings.latitude, 2780lng: settings.longitude==="" ? 150.644:settings.longitude 2781}, 2782zoom: finalZoomLevel, 2783mapTypeId: settings.mapType, 2784zoomControl: settings.zoomControl==="yes", 2785mapTypeControl: settings.mapTypeControl==="yes", 2786fullscreenControl: settings.fullscreenControl==="yes", 2787streetViewControl: settings.streetViewControl==="yes", 2788gestureHandling: settings.scrollWheelZoom==="yes" ? "greedy":"cooperative", 2789draggable: settings.mapDraggable!=="yes", 2790styles: settings.mapStyle!=="custom" ? settings.defaultStyle[settings.mapStyle]:!this.isValidJsonString(settings.customMapStyles) ? "":JSON.parse(settings.customMapStyles) 2791}); 2792if(settings.mapDraggable==="yes"){ 2793map.setOptions({ 2794draggableCursor: "default" 2795}); 2796} 2797markersOptionsArray.forEach(function (option){ 2798var marker=new google.maps.Marker({ 2799icon: option.pin_icon.url==="" ? "":{ 2800url: option.pin_icon.url, 2801scaledSize: new google.maps.Size(option.rectangular_image==="yes" ? +option.rectangular_pin_size_width.size:+option.square_pin_size.size, option.rectangular_image==="yes" ? +option.rectangular_pin_size_height.size:+option.square_pin_size.size) 2802}, 2803map: map, 2804position: { 2805lat: +option.pin_latitude, 2806lng: +option.pin_longitude 2807}}); 2808var infoWindow=new google.maps.InfoWindow({ 2809content: '<div class="ha-adv-google-map__marker-wrapper">' + '<div class="ha-adv-google-map__marker-title-wrapper">' + '<div class="ha-adv-google-map__marker-title" style="display: inline-block">' + option.pin_item_title + "</div>" + "</div>" + '<div class="ha-adv-google-map__marker-description-wrapper">' + '<div class="ha-adv-google-map__marker-description">' + option.pin_item_description + "</div>" + "</div>" + "</div>" 2810}); 2811if(settings.infoOpen==="yes"){ 2812infoWindow.open(map, marker); 2813}
2814if(settings.infoOpenHover==="yes"){ 2815marker.addListener("mouseover", function (e){ 2816infoWindow.open(map, marker); 2817}); 2818marker.addListener("mouseout", function (e){ 2819var timeOut=setTimeout(function (){ 2820infoWindow.close(); 2821clearTimeout(timeOut); 2822}, 1000); 2823}); 2824}else{ 2825marker.addListener("click", function (){ 2826infoWindow.open(map, marker); 2827}); 2828}}); 2829if(settings.showLegend==="yes"){ 2830var legend=document.querySelector(wrapper).nextElementSibling; 2831map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(legend); 2832} 2833if(settings.googleMapType=="polyline"){ 2834var polylines_data=JSON.parse(settings.polylines); 2835var polylines_arr=[]; 2836polylines_data.forEach(function (polyline){ 2837polylines_arr.push({ 2838lat: parseFloat(polyline.ha_gmap_polyline_lat), 2839lng: parseFloat(polyline.ha_gmap_polyline_lng) 2840}); 2841}); 2842var polyLinePath=JSON.parse(JSON.stringify(polylines_arr)); 2843var polyPath=new google.maps.Polyline({ 2844path: polyLinePath, 2845strokeColor: settings.strokeColor, 2846strokeOpacity: settings.strokeOpacity, 2847strokeWeight: settings.strokeWeight 2848}); 2849polyPath.setMap(map); 2850} 2851if(settings.googleMapType=="polygon"){ 2852var polylines_data=JSON.parse(settings.polylines); 2853var polylines_arr=[]; 2854polylines_data.forEach(function (polyline){ 2855polylines_arr.push({ 2856lat: parseFloat(polyline.ha_gmap_polyline_lat), 2857lng: parseFloat(polyline.ha_gmap_polyline_lng) 2858}); 2859}); 2860var polyLinePath=JSON.parse(JSON.stringify(polylines_arr)); 2861var polygon=new google.maps.Polygon({ 2862path: polyLinePath, 2863strokeColor: settings.strokeColor, 2864strokeOpacity: settings.strokeOpacity, 2865strokeWeight: settings.strokeWeight, 2866fillColor: settings.strokeFill, 2867fillOpacity: settings.strokeFillOpacity 2868}); 2869polygon.setMap(map); 2870} 2871if(settings.googleMapType=="routes"){ 2872this.routeDraw(directionsService, directionsRenderer, settings); 2873directionsRenderer.setMap(map); 2874} 2875google.maps.event.addDomListener(window, "resize", function (){ 2876var center=map.getCenter(); 2877google.maps.event.trigger(map, "resize"); 2878map.setCenter(center); 2879map.setZoom(finalZoomLevel); 2880}); 2881}, 2882routeDraw: function routeDraw(directionsService, directionsRenderer, settings){ 2883var start=settings.originLat + "," + settings.originLng; 2884var end=settings.destLat + "," + settings.destLng; 2885directionsService.route({ 2886origin: { 2887query: start 2888}, 2889destination: { 2890query: end 2891}, 2892travelMode: settings.travelMode.toUpperCase() 2893}, function (response, status){ 2894if(status==="OK"){ 2895directionsRenderer.setDirections(response); 2896}else{}}); 2897}, 2898runMap: function runMap(){ 2899var gmaper=document.querySelectorAll(".ha-adv-google-map__wrapper"); 2900for (var i=0; i < gmaper.length; i++){ 2901gmaper[i].classList.add("ha-adv-google-map__wrapper--item" + i); 2902this.mapInit(".ha-adv-google-map__wrapper--item" + i); 2903}} 2904}); 2905elementorFrontend.hooks.addAction("frontend/element_ready/ha-google-map.default", function ($scope){ 2906elementorFrontend.elementsHandler.addHandler(Maps, { 2907$element: $scope, 2908selectors: { 2909container: ".ha-adv-google-map__wrapper" 2910}}); 2911}); 2912elementorFrontend.hooks.addAction("frontend/element_ready/ha-unfold.default", function ($scope){ 2913elementorFrontend.elementsHandler.addHandler(Unfold, { 2914$element: $scope 2915}); 2916}); 2917var EddCart=function EddCart($scope){ 2918var optionEL=$scope.find('.ha-edd-table-wrap'); 2919var settings=optionEL.data('options'); 2920var removeEl=$scope.find('.edd-remove-from-cart'); 2921if(settings.cart_btn_type=='icon'){ 2922removeEl.html("<i class=\"".concat(settings.icon.value, "\"></i>")); 2923}else{ 2924removeEl.text(settings.btn_text); 2925}}; 2926elementorFrontend.hooks.addAction('frontend/element_ready/ha-edd-cart.default', EddCart); 2927var EddCheckout=function EddCheckout($scope){ 2928var optionEL=$scope.find('.ha-edd-table-wrap'); 2929var settings=optionEL.data('options'); 2930var removeEl=$scope.find('.edd_cart_remove_item_btn'); 2931if(settings.cart_btn_type=='icon'){ 2932removeEl.html("<i class=\"".concat(settings.icon.value, "\"></i>")); 2933}else{ 2934removeEl.text(settings.btn_text); 2935}}; 2936elementorFrontend.hooks.addAction('frontend/element_ready/ha-edd-checkout.default', EddCheckout); 2937var EddAjaxBtn=function EddAjaxBtn($scope){ 2938var btn=$scope.find(".ha_edd_ajax_btn"); 2939btn.on('click', function (event){ 2940event.preventDefault(); 2941var $self=$(this), 2942download_id=$self.data('download-id'), 2943nonce=$self.data('nonce'); 2944$.ajax({ 2945url: HappyProLocalize.ajax_url, 2946type: "POST", 2947data: { 2948action: "ha_edd_ajax_add_to_cart_link", 2949security: HappyProLocalize.nonce, 2950download_id: download_id 2951}, 2952success: function success(response){ 2953if(response.success==true){ 2954$self.html("<i class=\"fas fa-cart-plus\"></i>"); 2955}} 2956}); 2957}); 2958}; 2959elementorFrontend.hooks.addAction('frontend/element_ready/ha-edd-product-grid.default', EddAjaxBtn); 2960elementorFrontend.hooks.addAction('frontend/element_ready/ha-edd-product-carou
2960sel.default', EddAjaxBtn); 2961elementorFrontend.hooks.addAction('frontend/element_ready/ha-edd-single-product.default', EddAjaxBtn); 2962var Image_Swap=function Image_Swap($scope){ 2963var element=$scope.find('.ha-image-swap-wrapper'); 2964var trigger_type=element.data('trigger'); 2965var status; 2966if(trigger_type==='click'){ 2967element.on('click', element, function (){ 2968var self=$(this); 2969var click=self.attr('data-click'); 2970if('inactive'==click){ 2971status='active'; 2972}else{ 2973status='inactive'; 2974} 2975self.attr('data-click', status); 2976var first_img=self.find('.img_swap_first'); 2977var second_img=self.find('.img_swap_second'); 2978}); 2979} 2980var elm=$scope.find('.ha-image-swap-ctn'); 2981var elm_img=$scope.find('.ha-image-swap-item'); 2982var trigger=elm.data('trigger'); 2983if(elm.length > 0){ 2984$('.ha-image-swap-ctn').on('click', '.ha-image-swap-item', function (e){ 2985var elem=$(this); 2986var parent=elem.parent('.ha-image-swap-insider'); 2987var firstChild=parent.children('.ha-image-swap-item:first-of-type'); 2988var secondChild=parent.children('.ha-image-swap-item:nth-of-type(2)'); 2989if(!elem.is(':first-child')){ 2990parent.addClass('changed'); 2991setTimeout(function (){ 2992firstChild.remove(); 2993parent.append(firstChild); 2994parent.removeClass('changed'); 2995}, 400); 2996}}); 2997}}; 2998var FlipBox=function FlipBox($scope){ 2999var ha_flip_box_back=sessionStorage.getItem('haFlipBoxBack'); 3000if(elementorFrontend.isEditMode()&&ha_flip_box_back&&'yes'==ha_flip_box_back){ 3001$scope.find('.ha-flip-box-inner').addClass('flip-styling flip'); 3002} 3003var element=$scope.find('.ha-flip-box-inner'); 3004element.on('mouseenter mouseleave touchstart', function (e){ 3005if(elementorFrontend.isEditMode()&&$(this).hasClass('flip-styling')){ 3006return; 3007} 3008if(('mouseenter'==e.type||'touchstart'==e.type)&&!$(this).hasClass('flip')){ 3009$(this).addClass('flip'); 3010}else if(('mouseleave'==e.type||'touchstart'==e.type)&&$(this).hasClass('flip')){ 3011$(this).removeClass('flip'); 3012}else if('touchstart'==e.type&&$(this).hasClass('flip')){ 3013$(this).removeClass('flip'); 3014}}); 3015}; 3016elementorFrontend.hooks.addAction('frontend/element_ready/ha-image-swap.default', Image_Swap); 3017var FreeShippingBar=function FreeShippingBar($scope){ 3018var $fsbContainer=$scope.find('.ha-fsb-container'); 3019if($fsbContainer){ 3020var $settings=$fsbContainer.data('fsb_settings'); 3021if($settings!=undefined){ 3022var $aimationSpeed=$settings.hasOwnProperty('ha_fsb_animation_speed') ? $settings.ha_fsb_animation_speed:15; 3023var $achivePercent=$settings.hasOwnProperty('achive_percent') ? $settings.achive_percent:0; 3024var $progressType=$settings.hasOwnProperty('progress_type') ? $settings.progress_type:'percent'; 3025var $currencySymbol=$settings.hasOwnProperty('currencySymbol')&&$progressType=='percent' ? '%':$settings.currencySymbol; 3026var $cartTotal=$settings.hasOwnProperty('cart_total') ? $settings.cart_total:0; 3027var $totalPercent=parseFloat(Math.round($achivePercent)) >=100 ? 100:parseFloat(Math.round($achivePercent)); 3028var $progressText=$progressType=='percent' ? $totalPercent:$cartTotal; 3029var $elem=$fsbContainer.find('.ha-fsb-size'); 3030$elem.text($progressText + $currencySymbol); 3031var defaultWidth=$(window).width() <=768 ? 12:5; 3032$totalPercent > 0 ? $elem.css({ 3033'width': $totalPercent + "%", 3034'transition': 'width ' + $aimationSpeed + 'ms ease-in-out' 3035}):$elem.css('width', +defaultWidth + "%"); 3036}} 3037}; 3038elementorFrontend.hooks.addAction('frontend/element_ready/ha-shipping-bar.default', FreeShippingBar); 3039$('.fsb-close-icon').on('click', function (){ 3040document.cookie="ha_close_fsb=yes;path=/"; 3041$('.ha-fsb-container').hide(); 3042}); 3043elementorFrontend.hooks.addAction('frontend/element_ready/ha-flip-box.default', FlipBox); 3044var HaRemoteCarousel=function HaRemoteCarousel($scope){ 3045var $rcContainer=$scope.find('.ha-remote-carousel-container'); 3046if($rcContainer){ 3047var $rcBtn=$($rcContainer).find('.ha-custom-nav-remote-carousel'); 3048if($rcBtn){ 3049var $prevSliderIndex=0; 3050var $slides_to_show=0; 3051var $ha_show_thumbnail=$($rcBtn).parent().data('show_thumbnail'); 3052var $ha_rc_unique_id=$($rcBtn).parent().data('ha_rc_id'); 3053var $haRcSelector=$ha_rc_unique_id ? $('[data-ha_rcc_uid="' + $ha_rc_unique_id + '"]'):''; 3054if($ha_show_thumbnail&&$ha_show_thumbnail=='yes'){ 3055$haRcSelector.on('init', function (event, slick, currentSlide){ 3056var $dataSettingsSelector=$haRcSelector.parent().parent(); 3057var $dataSettings=$dataSettingsSelector.data('settings'); 3058$slides_to_show=typeof $dataSettings==="undefined" ? $slides_to_show:$dataSettings.slides_to_show; 3059$prevSliderIndex=(currentSlide ? currentSlide:0) - 1; 3060var $nextIndex=parseInt($slides_to_show) + parseInt($prevSliderIndex) + 1; 3061var $nextItem=$haRcSelector.find('[data-slick-index="' + $nextIndex + '"]'); 3062var $nextImg=$nextItem.find('img').attr('src'); 3063var $prevItem=$haRcSelector.find('[data-slick-index="' + $prevSliderIndex + '"]');
3064var $prevImg=$prevItem.find('img').attr('src'); 3065var $nextBtn=$rcContainer.find('.ha-remote-carousel-btn-next'); 3066var $prevBtn=$rcContainer.find('.ha-remote-carousel-btn-prev'); 3067$nextBtn.css({ 3068'background-image': 'url(' + $nextImg + ')', 3069'background-position': 'center' 3070}); 3071$prevBtn.css({ 3072'background-image': 'url(' + $prevImg + ')', 3073'background-position': 'center' 3074}); 3075}); 3076$haRcSelector.trigger('init'); 3077$($rcBtn).on("click", function (e){ 3078e.preventDefault(); 3079$haRcSelector.on('afterChange', function (event, slick, currentSlideIndex){ 3080var $dataSettingsSelector=$haRcSelector.parent().parent(); 3081var $dataSettings=$dataSettingsSelector.data('settings'); 3082var $slides_to_show=$dataSettings ? $dataSettings.slides_to_show:currentSlideIndex; 3083$prevSliderIndex=parseInt(currentSlideIndex - 1); 3084var $nextIndex=parseInt($slides_to_show) + parseInt($prevSliderIndex) + 1; 3085var $nextItem=$haRcSelector.find('[data-slick-index="' + $nextIndex + '"]'); 3086var $nextImg=$nextItem.find('img').attr('src'); 3087var $prevItem=$haRcSelector.find('[data-slick-index="' + $prevSliderIndex + '"]'); 3088var $prevImg=$prevItem.find('img').attr('src'); 3089var $nextBtn=$rcContainer.find('.ha-remote-carousel-btn-next'); 3090var $prevBtn=$rcContainer.find('.ha-remote-carousel-btn-prev'); 3091if($nextBtn){ 3092$nextBtn.css({ 3093'background-image': 'url(' + $nextImg + ')', 3094'background-position': 'center' 3095}); 3096} 3097if($prevBtn){ 3098$prevBtn.css({ 3099'background-image': 'url(' + $prevImg + ')', 3100'background-position': 'center' 3101}); 3102}}); 3103if($(this).data("ha_rc_nav")=='ha_rc_next_btn'){ 3104$haRcSelector.slick("slickNext"); 3105}else if($(this).data("ha_rc_nav")=='ha_rc_prev_btn'){ 3106$haRcSelector.slick("slickPrev"); 3107}}); 3108}else{ 3109$($rcBtn).on("click", function (e){ 3110e.preventDefault(); 3111if($(this).data("ha_rc_nav")=='ha_rc_next_btn'){ 3112$haRcSelector.slick("slickNext"); 3113}else if($(this).data("ha_rc_nav")=='ha_rc_prev_btn'){ 3114$haRcSelector.slick("slickPrev"); 3115}}); 3116}} 3117}}; 3118elementorFrontend.hooks.addAction('frontend/element_ready/ha-remote-carousel.default', HaRemoteCarousel); 3119var HaTOC=elementorModules.frontend.handlers.Base.extend({ 3120getDefaultSettings: function getDefaultSettings(){ 3121var elementSettings=this.getElementSettings(), 3122listWrapperTag="numbers"===elementSettings.marker_view ? "ol":"ul"; 3123return { 3124selectors: { 3125widgetContainer: ".ha-toc-wrapper", 3126container: '.elementor:not([data-elementor-type="header"]):not([data-elementor-type="footer"])', 3127expandButton: ".ha-toc__header", 3128collapseButton: ".ha-toc__header", 3129body: ".ha-toc__body", 3130headerTitle: ".ha-toc__header-title", 3131scrollTop: ".ha-toc__scroll-to-top--container" 3132}, 3133classes: { 3134anchor: "ha-toc-menu-anchor", 3135listWrapper: "ha-toc__list-wrapper", 3136listItem: "ha-toc__list-item", 3137listTextWrapper: "ha-toc__list-item-text-wrapper", 3138firstLevelListItem: "ha-toc__top-level", 3139listItemText: "ha-toc__list-item-text", 3140activeItem: "ha-toc-item-active", 3141headingAnchor: "ha-toc__heading-anchor", 3142collapsed: "ha-toc--collapsed" 3143}, 3144listWrapperTag: listWrapperTag 3145};}, 3146getDefaultElements: function getDefaultElements(){ 3147var settings=this.getSettings(), 3148elementSettings=this.getElementSettings(); 3149return { 3150$pageContainer: jQuery(elementSettings.container||settings.selectors.container), 3151$widgetContainer: this.$element.find(settings.selectors.widgetContainer), 3152$expandButton: this.$element.find(settings.selectors.expandButton), 3153$collapseButton: this.$element.find(settings.selectors.collapseButton), 3154$tocBody: this.$element.find(settings.selectors.body), 3155$listItems: this.$element.find("." + settings.classes.listItem), 3156$scrollTop: this.$element.find(settings.selectors.scrollTop) 3157};}, 3158bindEvents: function bindEvents(){ 3159var $self=this; 3160var elementSettings=this.getElementSettings(); 3161if(elementSettings.minimize_box){ 3162this.elements.$expandButton.on("click", function (){ 3163if(!$($self.$element).hasClass($self.getSettings("classes.collapsed"))){ 3164return $self.collapseBox(); 3165}else{ 3166return $self.expandBox(); 3167}}); 3168} 3169if(elementSettings.collapse_subitems){ 3170this.elements.$listItems.hover(function (event){ 3171return jQuery(event.target).slideToggle(); 3172}); 3173} 3174if(elementSettings.sticky_toc_toggle){ 3175elementorFrontend.elements.$window.on("resize", this.handleStickyToc); 3176} 3177if(elementSettings.scroll_to_top_toggle){ 3178this.elements.$scrollTop.on("click", function (){ 3179$self.scrollToTop(); 3180}); 3181}}, 3182getHeadings: function getHeadings(){ 3183var elementSettings=this.getElementSettings(), 3184tags=elementSettings.headings_by_tags.join(","), 3185selectors=this.getSettings("selectors"), 3186excludedSelectors=elementSettings.exclude_headings_by_selector;
3187return this.elements.$pageContainer.find(tags).not(selectors.headerTitle).filter(function (index, heading){ 3188return !jQuery(heading).closest(excludedSelectors).length; 3189}); 3190}, 3191addAnchorsBeforeHeadings: function addAnchorsBeforeHeadings(){ 3192var $this=this; 3193var classes=this.getSettings("classes"); 3194this.elements.$headings.before(function (index){ 3195var anchorLink=$this.getHeadingAnchorLink(index, classes); 3196return '<span id="' + anchorLink + '" class="' + classes.anchor + ' "></span>'; 3197}); 3198}, 3199activateItem: function activateItem($listItem){ 3200var classes=this.getSettings("classes"); 3201this.deactivateActiveItem($listItem); 3202$listItem.addClass(classes.activeItem); 3203this.$activeItem=$listItem; 3204if(!this.getElementSettings("sticky_toc_toggle")){ 3205return; 3206} 3207if(!this.getElementSettings("collapse_subitems")){ 3208return; 3209} 3210var $activeList=void 0; 3211if($listItem.hasClass(classes.firstLevelListItem)){ 3212$activeList=$listItem.parent().next(); 3213}else{ 3214$activeList=$listItem.parents("." + classes.listWrapper).eq(-2); 3215} 3216if(!$activeList.length){ 3217delete this.$activeList; 3218return; 3219} 3220this.$activeList=$activeList; 3221this.$activeList.stop().slideDown(); 3222}, 3223deactivateActiveItem: function deactivateActiveItem($activeToBe){ 3224if(!this.$activeItem||this.$activeItem.is($activeToBe)){ 3225return; 3226} 3227var _getSettings=this.getSettings(), 3228classes=_getSettings.classes; 3229this.$activeItem.removeClass(classes.activeItem); 3230if(this.$activeList&&(!$activeToBe||!this.$activeList[0].contains($activeToBe[0]))){ 3231this.$activeList.slideUp(); 3232}}, 3233followAnchor: function followAnchor($element, index){ 3234var $self=this; 3235var anchorSelector=$element[0].hash; 3236var $anchor=void 0; 3237try { 3238$anchor=jQuery(decodeURIComponent(anchorSelector)); 3239} catch (e){ 3240return; 3241} 3242if(0===index){ 3243haObserveTarget($anchor[0], function (direction){ 3244if($self.itemClicked){ 3245return; 3246} 3247if("down"===direction){ 3248$self.activateItem($element); 3249}else{ 3250$self.deactivateActiveItem(); 3251}}); 3252} 3253haObserveTarget($anchor[0], function (direction){ 3254if($self.itemClicked){ 3255return; 3256} 3257if("down"===direction){ 3258$self.activateItem($self.$listItemTexts.eq(index + 1)); 3259}else{ 3260$self.activateItem($element); 3261}}); 3262}, 3263followAnchors: function followAnchors(){ 3264var $self=this; 3265this.$listItemTexts.each(function (index, element){ 3266return $self.followAnchor(jQuery(element), index); 3267}); 3268}, 3269setOffset: function setOffset($listItem){ 3270var $this=this; 3271var settings=this.getSettings(); 3272var list=this.$element.find("." + settings.classes.listItem); 3273var offset=this.getCurrentDeviceSetting("scroll_offset"); 3274list.each(function (){ 3275$('a', this).on('click', function (e){ 3276e.preventDefault(); 3277var hash=this.hash; 3278$('html, body').animate({ 3279scrollTop: $(hash).offset().top - parseInt(offset.size) 3280}, 800); 3281}); 3282}); 3283}, 3284populateTOC: function populateTOC(){ 3285var $self=this; 3286this.listItemPointer=0; 3287var elementSettings=this.getElementSettings(); 3288if(elementSettings.custom_style=='yes'){ 3289this.elements.$widgetContainer.html(this.createSideDot()); 3290}else{ 3291if(elementSettings.hierarchical_view){ 3292this.createNestedList(); 3293}else{ 3294this.createFlatList(); 3295}} 3296this.$listItemTexts=this.$element.find(".ha-toc__list-item-text"); 3297this.$listItemTexts.on("click", this.onListItemClick.bind(this)); 3298if(!elementorFrontend.isEditMode()){ 3299this.followAnchors(); 3300} 3301$(window).on('scroll', function (){ 3302if("window_top"===elementSettings.scroll_to_top_option){ 3303if($(window).scrollTop() > 0){ 3304$self.elements.$scrollTop.show(); 3305}else{ 3306$self.elements.$scrollTop.hide(); 3307}}else{ 3308var $id=$self.getID().parents('.elementor-element'); 3309if($id.offset().top >=$(window).scrollTop()){ 3310$self.elements.$scrollTop.hide(); 3311}else{ 3312$self.elements.$scrollTop.show(); 3313}} 3314}); 3315}, 3316createNestedList: function createNestedList(){ 3317var $self=this; 3318this.headingsData.forEach(function (heading, index){ 3319heading.level=0; 3320for (var i=index - 1; i >=0; i--){ 3321var currentOrderedItem=$self.headingsData[i]; 3322if(currentOrderedItem.tag <=heading.tag){ 3323heading.level=currentOrderedItem.level; 3324if(currentOrderedItem.tag < heading.tag){ 3325heading.level++; 3326} 3327break; 3328}} 3329}); 3330this.elements.$tocBody.html(this.getNestedLevel(0)); 3331}, 3332createFlatList: function createFlatList(){ 3333this.elements.$tocBody.html(this.getNestedLevel()); 3334}, 3335createSideDot: function createSideDot(level){ 3336var settings=this.getSettings(), 3337elementSettings=this.getElementSettings(), 3338icon=this.getElementSettings("icon"), 3339htmlul=''; 3340if(elementSettings.custom_style=='yes'){ 3341htmlul +="<div class=\"".concat(elementSettings.custom_style_list, "\">\n <div class=\"hm-toc \">\n <ul class=\"hm-toc-items\" style=\"list-style: none;\">\n <li>");
3342if(elementSettings.custom_style_list=='hm-toc-slide-style'){ 3343htmlul +="<".concat(elementSettings.html_tag, " class=\"hm-toc-title\"><span>").concat(elementSettings.widget_title, "<span></").concat(elementSettings.html_tag, ">"); 3344}else{ 3345htmlul +="<".concat(elementSettings.html_tag, " class=\"hm-toc-title\">").concat(elementSettings.widget_title, "</").concat(elementSettings.html_tag, ">"); 3346} 3347htmlul +="<".concat(settings.listWrapperTag, " class=\"hm-toc-items-inner\">"); 3348for (var i=0; i < this.headingsData.length; i++){ 3349var list=''; 3350var currentItemDot=this.headingsData[i]; 3351if(level > currentItemDot.level){ 3352break; 3353} 3354var listItemTextClasses=settings.classes.listItemText; 3355if(0===currentItemDot.level){ 3356listItemTextClasses +=" " + settings.classes.firstLevelListItem; 3357} 3358if(level===currentItemDot.level){ 3359list +="<li class=\"hm-toc-entry ".concat(settings.classes.listItem, "\">"); 3360if('bullets'===elementSettings.marker_view&&icon&&elementSettings.custom_style_list=='hm-toc-slide-style'){ 3361list +="<i class=\"".concat(icon.value, "\"></i>"); 3362} 3363list +="<a href=\"#".concat(currentItemDot.anchorLink, "\" class=\"").concat(listItemTextClasses, "\"><span>").concat(currentItemDot.text, "</span></a>"); 3364list +="</li>"; 3365} 3366htmlul +=list; 3367} 3368htmlul +="</".concat(settings.listWrapperTag, ">"); 3369htmlul +="</li>\n </ul>"; 3370} 3371return htmlul; 3372}, 3373getNestedLevel: function getNestedLevel(level){ 3374var settings=this.getSettings(), 3375elementSettings=this.getElementSettings(), 3376icon=this.getElementSettings("icon"); 3377var html=''; 3378html +="<" + settings.listWrapperTag + ' class="' + settings.classes.listWrapper + '">'; 3379while (this.listItemPointer < this.headingsData.length){ 3380var currentItem=this.headingsData[this.listItemPointer]; 3381var listItemTextClasses=settings.classes.listItemText; 3382if(0===currentItem.level){ 3383listItemTextClasses +=" " + settings.classes.firstLevelListItem; 3384} 3385if(level > currentItem.level){ 3386break; 3387} 3388if(level===currentItem.level){ 3389html +='<li class="' + settings.classes.listItem + " " + "level-" + level + '">'; 3390html +='<div class="' + settings.classes.listTextWrapper + '">'; 3391var liContent='<a href="#' + currentItem.anchorLink + '" class="' + listItemTextClasses + '">' + currentItem.text + "</a>"; 3392if("bullets"===elementSettings.marker_view&&icon){ 3393liContent='<i class="' + icon.value + '"></i>' + liContent; 3394} 3395html +=liContent; 3396html +="</div>"; 3397this.listItemPointer++; 3398var nextItem=this.headingsData[this.listItemPointer]; 3399if(nextItem&&level < nextItem.level){ 3400html +=this.getNestedLevel(nextItem.level); 3401} 3402html +="</li>"; 3403}} 3404html +="</" + settings.listWrapperTag + ">"; 3405return html; 3406}, 3407handleNoHeadingsFound: function handleNoHeadingsFound(){ 3408var _messages='No headings were found on this page.'; 3409if(elementorFrontend.isEditMode()){ 3410return this.elements.$tocBody.html(_messages); 3411}}, 3412collapseOnInit: function collapseOnInit(){ 3413var $self=this; 3414var minimizedOn=this.getElementSettings("minimized_on"), 3415currentDeviceMode=elementorFrontend.getCurrentDeviceMode(); 3416if(""!==minimizedOn&&"array"!==typeof minimizedOn){ 3417minimizedOn=[minimizedOn]; 3418} 3419if(0!==minimizedOn.length&&"object"===_typeof(minimizedOn)){ 3420minimizedOn.forEach(function (value){ 3421if("desktop"===value[0]&&"desktop"==currentDeviceMode&&$(window).width() < elementorFrontend.config.breakpoints.xxl||"tablet"===value[0]&&"tablet"===currentDeviceMode&&$(window).width() < elementorFrontend.config.breakpoints.lg||"mobile"===value[0]&&"mobile"===currentDeviceMode&&$(window).width() < elementorFrontend.config.breakpoints.md){ 3422$self.collapseBox(); 3423}}); 3424}}, 3425getHeadingAnchorLink: function getHeadingAnchorLink(index, classes){ 3426var headingID=this.elements.$headings[index].id, 3427wrapperID=this.elements.$headings[index].closest('.elementor-widget').id; 3428var anchorLink=''; 3429if(headingID){ 3430anchorLink=headingID; 3431}else if(wrapperID){ 3432anchorLink=wrapperID; 3433} 3434if(headingID||wrapperID){ 3435jQuery(this.elements.$headings[index]).data('hasOwnID', true); 3436}else{ 3437anchorLink="".concat(classes.headingAnchor, "-").concat(index); 3438} 3439return anchorLink; 3440}, 3441setHeadingsData: function setHeadingsData(){ 3442var $this=this; 3443this.headingsData=[]; 3444var classes=this.getSettings("classes"); 3445this.elements.$headings.each(function (index, element){ 3446var anchorLink=$this.getHeadingAnchorLink(index, classes); 3447$this.headingsData.push({ 3448tag: +element.nodeName.slice(1), 3449text: element.textContent, 3450anchorLink: anchorLink 3451}); 3452}); 3453}, 3454run: function run(){ 3455var elementSettings=this.getElementSettings(); 3456this.elements.$headings=this.getHeadings(); 3457if(!this.elements.$headings.length){ 3458return this.handleNoHeadingsFound(); 3459} 3460this.setHeadingsData(); 3461if(!elementorFrontend.isEditMode()){ 3462this.addAnchorsBeforeHeadings(); 3463} 3464this.populateTOC(); 3465if(elementSettings.minimize_box){ 3466this.collapseOnInit(); 3467} 3468if(elementSettings.sticky_toc_toggle){ 3469this.handleStickyToc(); 3470} 3471if(""!==elementSettings.scroll_offset.size){ 3472this.setOffset(); 3473}}, 3474expandBox: function expandBox(){ 3475var boxHeight=this.getCurrentDeviceSetting("min_height"); 3476this.$element.removeClass(this.getSettings("classes.collapsed")); 3477this.elements.$tocBody.slideDown(); 3478this.elements.$widgetContainer.css("min-height", boxHeight.size + boxHeight.unit); 3479},
3480collapseBox: function collapseBox(){ 3481this.$element.addClass(this.getSettings("classes.collapsed")); 3482this.elements.$tocBody.slideUp(); 3483this.elements.$widgetContainer.css("min-height", "0px"); 3484}, 3485onInit: function onInit(){ 3486var $self=this; 3487this.initElements(); 3488this.bindEvents(); 3489jQuery(document).ready(function (){ 3490$self.run(); 3491}); 3492}, 3493onListItemClick: function onListItemClick(event){ 3494var $self=this; 3495this.itemClicked=true; 3496setTimeout(function (){ 3497return $self.itemClicked=false; 3498}, 2000); 3499var $clickedItem=jQuery(event.target), 3500$list=$clickedItem.parent().next(), 3501collapseNestedList=this.getElementSettings("collapse_subitems"); 3502if("SPAN"==$clickedItem[0].tagName&&'yes'==this.getElementSettings("custom_style")){ 3503$clickedItem=jQuery(event.currentTarget); 3504} 3505var listIsActive=void 0; 3506if(collapseNestedList&&$clickedItem.hasClass(this.getSettings("classes.firstLevelListItem"))){ 3507if($list.is(":visible")){ 3508listIsActive=true; 3509}} 3510this.activateItem($clickedItem); 3511if(collapseNestedList&&listIsActive){ 3512$list.slideUp(); 3513}}, 3514handleStickyToc: function handleStickyToc(){ 3515var elementSettings=this.getElementSettings(); 3516var currentDeviceMode=elementorFrontend.getCurrentDeviceMode(); 3517var $devices=elementSettings.sticky_toc_disable_on; 3518var target=this.getID(); 3519var type=elementSettings.sticky_toc_type; 3520if("in-place"===type){ 3521var parentWidth=target.parent().parent().outerWidth(); 3522target.css("width", parentWidth); 3523}else if("custom-position"===type){ 3524var parentWidth=target.parent().parent().outerWidth(); 3525target.css("width", parentWidth); 3526} 3527if(-1==$.inArray(currentDeviceMode, $devices)){ 3528target.removeClass('floating-toc'); 3529$(window).off('scroll', this.stickyScroll); 3530return; 3531} 3532$(window).on('scroll', $.proxy(this.stickyScroll, this)); 3533}, 3534stickyScroll: function stickyScroll(){ 3535var target=this.getID(); 3536var elementSettings=this.getElementSettings(); 3537var item=document.querySelector(".ha-table-of-contents"); 3538var bound, tocHeight; 3539bound=item.getBoundingClientRect(); 3540tocHeight=target.outerHeight(); 3541if(target.hasClass("floating-toc")){ 3542target.parent().parent().css("height", tocHeight); 3543}else{ 3544target.parent().parent().css("height", ''); 3545} 3546if(bound.y + bound.height / 2 < 0){ 3547if(target.hasClass('floating-toc')){ 3548return; 3549} 3550target.addClass("floating-toc"); 3551}else{ 3552if(!target.hasClass('floating-toc')){ 3553return; 3554} 3555target.removeClass("floating-toc"); 3556}}, 3557scrollToTop: function scrollToTop(){ 3558var $self=this; 3559var scrollTo=this.getElementSettings("scroll_to_top_option"); 3560if("window_top"===scrollTo){ 3561$("html, body").animate({ 3562scrollTop: 0 3563}, 250); 3564}else{ 3565var $id=this.getID().parents('.ha-table-of-contents'); 3566$("html, body").animate({ 3567scrollTop: $($id).offset().top - 60 3568}, 1000); 3569}}, 3570getID: function getID(){ 3571return $("#ha-toc-" + this.$element[0].attributes["data-id"].nodeValue); 3572}}); 3573elementorFrontend.hooks.addAction("frontend/element_ready/ha-table-of-contents.default", function ($scope){ 3574elementorFrontend.elementsHandler.addHandler(HaTOC, { 3575$element: $scope 3576}); 3577}); 3578var HaCreativeSlider=function HaCreativeSlider($scope){ 3579var $rcContainer=$scope.find('.ha-creative-slider-container'); 3580if($rcContainer){ 3581var $haCsWidth=$(window).width(); 3582var $haCsNextSelector=parseInt($haCsWidth) <=767 ? $rcContainer.find('.ha_cs_mobile_next'):$rcContainer.find('.ha_cc_next_wrapper'); 3583var $haCsPrevSelector=parseInt($haCsWidth) <=767 ? $rcContainer.find('.ha_cs_mobile_prev'):$rcContainer.find('.ha_cc_prev_wrapper'); 3584var csTextItemDelay=parseInt($haCsWidth) <=767 ? 40:30; 3585var csImageItemDelay=40; 3586var csPrevItemsOwl=$rcContainer.find('.ha_cc_prev_items'); 3587var csTextItemsOwl=$rcContainer.find('.ha_cc_text_items'); 3588var csImageItemsOwl=$rcContainer.find('.ha_cc_inner_image_items'); 3589var csNextItemsOwl=$rcContainer.find('.ha_cc_next_items'); 3590var csPrevNavOptions={ 3591loop: true, 3592dots: false, 3593nav: false, 3594items: 1, 3595autoplay: false, 3596smartSpeed: 500, 3597touchDrag: false, 3598mouseDrag: false, 3599rewind: true, 3600startPosition: -1 3601}; 3602var csNextNavOptions={ 3603loop: true, 3604dots: false, 3605nav: false, 3606items: 1, 3607autoplay: false, 3608smartSpeed: 500, 3609touchDrag: false, 3610mouseDrag: false, 3611rewind: true, 3612startPosition: 1 3613}; 3614var csGeneralOptions={ 3615loop: true, 3616dots: false, 3617nav: false, 3618items: 1, 3619autoplay: false, 3620smartSpeed: 1000, 3621touchDrag: false, 3622mouseDrag: false, 3623singleItem: true, 3624animateOut: 'fadeOutRight', 3625animateIn: 'fadeInLeft', 3626rewind: true 3627};} 3628csPrevItemsOwl.owlCarousel(csPrevNavOptions); 3629csNextItemsOwl.owlCarousel(csNextNavOptions); 3630csTextItemsOwl.owlCarousel(csGeneralOptions); 3631csImageItemsOwl.owlCarousel(csGeneralOptions); 3632window.parent.addEventListener('message', function (e){ 3633if('ha_cs_reinit'==e.data){ 3634csTextItemsOwl.owlCarousel('refresh'); 3635csImageItemsOwl.owlCarousel('refresh'); 3636}}); 3637$($haCsPrevSelector).click(function (e){ 3638e.preventDefault(); 3639csPrevItemsOwl.trigger('prev.owl.carousel'); 3640csNextItemsOwl.trigger('prev.owl.carousel'); 3641setTimeout(function (){ 3642csTextItemsOwl.trigger('prev.owl.carousel'); 3643}, csTextItemDelay); 3644setTimeout(function (){ 3645csImageItemsOwl.trigger('prev.owl.carousel'); 3646}, csTextItemDelay + csImageItemDelay); 3647}); 3648$($haCsNextSelector).click(function (e){ 3649e.preventDefault(); 3650csPrevItemsOwl.trigger('next.owl.carousel'); 3651csNextItemsOwl.trigger('next.owl.carousel'); 3652setTimeout(function (){ 3653csTextItemsOwl.trigger('next.owl.carousel'); 3654}, csTextItemDelay); 3655setTimeout(function (){ 3656csImageItemsOwl.trigger('next.owl.carousel'); 3657}, csTextItemDelay + csImageItemDelay); 3658}); 3659}; 3660elementorFrontend.hooks.addAction('frontend/element_ready/ha-creative-slider.default', HaCreativeSlider); 3661var AdvancedComparisonTable=function AdvancedComparisonTable($scope){ 3662var nav=$scope.find('ul.ha-adct-table-responsive-nav'); 3663var rows=$scope.find(".ha-adct-row, .ha-adct-child-row"); 3664var collapse=$scope.find(".ha-adct-collapse-icon-wrap"); 3665var pos=2; 3666nav.on("click", "li", function (){ 3667var pos=$(this).index() + 2; 3668rows.find(".ha-adct-column:not(:eq(0))").hide(); 3669$scope.find(".ha-adct-column:nth-child(" + pos + ")").css("display", "flex"); 3670nav.find("li").removeClass("active"); 3671$(this).addClass("active"); 3672}); 3673collapse.on("click", function (){ 3674var row_wrap=$(this).closest('.ha-adct-row-wrap'); 3675$(this).toggleClass('open'); 3676row_wrap.find('.ha-adct-child-row-wrap').slideToggle("slow"); 3677}); 3678var mode=$('body').attr('data-elementor-device-mode'); 3679var w_width=$(window).outerWidth(true); 3680function hideAndShowColumn(mode){ 3681if('tablet'==mode||'mobile_extra'==mode||'mobile'==mode){ 3682rows.find(".ha-adct-column:not(:eq(0))").hide(); 3683$scope.find(".ha-adct-column:nth-child(" + pos + ")").css("display", "flex"); 3684}else{ 3685rows.find(".ha-adct-column").removeAttr("style"); 3686}} 3687; 3688hideAndShowColumn(mode); 3689$(window).on('resize', function (e){ 3690var mode=$('body').attr('data-elementor-device-mode'); 3691var w_resize_width=$(window).outerWidth(true); 3692if(w_width!=w_resize_width){ 3693w_width=w_resize_width; 3694hideAndShowColumn(mode); 3695}}); 3696}; 3697elementorFrontend.hooks.addAction('frontend/element_ready/ha-advanced-comparison-table.default', AdvancedComparisonTable); 3698var TitleTips=function TitleTips($scope){ 3699var element=$scope.find('.ha-flip-box-inner'); 3700var items=$scope.find('.ha-title-tips-hover li > a'); 3701var rect=$scope.find('.ha-title-tips-hover')[0].getBoundingClientRect(); 3702if($scope.find('.ha-title-tips-hover').hasClass('swap')){ 3703var wrapper=$scope.find('.ha-title-tips-hover'); 3704var anchor_item=$scope.find('.ha-title-tips-hover-item.have-image'); 3705var figure=$scope.find('figure'); 3706var Work={ 3707_register: { 3708hover: { 3709active: !1, 3710currentX: 0, 3711currentY: 0, 3712targetX: 0, 3713targetY: 0 3714}}, 3715_init: function _init(){ 3716this._base(), this._events(); 3717}, 3718_base: function _base(){ 3719figure.find('img').each(function (){ 3720var item=$(this); 3721item.attr("height_ratio", item.height()); 3722}); 3723requestAnimationFrame(function (){ 3724Work._interaction.hover.move_image(); 3725}); 3726}, 3727_events: function _events(){ 3728anchor_item.on("mouseenter", "a", function (){ 3729Work._interaction.hover.image($(this)); 3730}); 3731anchor_item.on("mouseleave", "a", function (){ 3732Work._interaction.hover.leave(); 3733}); 3734anchor_item.on("mousemove", "a", function (e){ 3735Work._interaction.hover.move(e); 3736}); 3737}, 3738_functions: { 3739round: function round(e, t){ 3740var t=void 0===t ? 100:Math.pow(10, t); 3741return Math.round(e * t) / t; 3742}}, 3743_interaction: { 3744hover: { 3745image: function image(e){ 3746e.parents("li").addClass("active").removeClass("not-selected").siblings().removeClass("active").addClass("not-selected"); 3747if(!Work._register.hover.visible&&(Work._register.hover.currentX||Work._register.hover.currentY)){ 3748Work._register.hover.visible = !0; 3749figure.addClass("visible"); 3750} 3751var $img=figure.find('img[data-filter-id="' + e.attr("data-filter-id") + '"]'); 3752$img.addClass("active").siblings(".active").removeClass("active").addClass("was-active"); 3753figure.get()[0].style.setProperty("--height_ratio", $img.attr("height_ratio") + 'px'); 3754clearTimeout(figure.prop("leave")); 3755clearTimeout(figure.prop("animate")); 3756figure.addClass("animate").prop("animate", setTimeout(function (){ 3757figure.removeClass("animate").find("img.was-active").removeClass("was-active"); 3758}, 400)); 3759}, 3760leave: function leave(){ 3761anchor_item.removeClass("active not-selected"); 3762clearTimeout(figure.prop("leave")); 3763clearTimeout(figure.prop("active")); 3764figure.prop("leave", setTimeout(function (){ 3765Work._register.hover.visible=false; 3766figure.removeClass("visible"); 3767}, 1)); 3768figure.prop("active", setTimeout(function (){ 3769Work._register.hover.active = !1; 3770}, 2e3)); 3771}, 3772move: function move(e){ 3773var currentReact=e.currentTarget.getBoundingClientRect(); 3774var currentWrapperReact=wrapper.get()[0].getBoundingClientRect(); 3775var targetMiddle=currentReact.top + currentReact.height / 2; 3776Work._register.hover.active||(Work._register.hover.active = !0, requestAnimationFrame(function (){ 3777Work._interaction.hover.move_image(); 3778}), clearTimeout(figure.prop("active")), figure.prop("active", setTimeout(function (){ 3779Work._register.hover.active = !1; 3780}, 2e3))); 3781var s=0; 3782var targetItem=anchor_item.find('a').offset().left - 40; 3783if($scope.hasClass('ha_title_tips_img_pos--left')){ 3784Work._register.hover.targetX=-(figure.width() + 10); 3785}else{ 3786Work._register.hover.targetX=currentReact.width + 10; 3787} 3788Work._register.hover.targetY=e.pageY - (currentWrapperReact.top + window.scrollY); 3789if(!Work._register.hover.visible&&(Work._register.hover.currentX||Work._register.hover.currentY)){ 3790Work._register.hover.visible=true; 3791figure.addClass("visible"); 3792}}, 3793move_image: function move_image(){ 3794if(figure.length){ 3795Work._register.hover.currentX +=(Work._register.hover.targetX - Work._register.hover.currentX) * 0.09; 3796Work._register.hover.currentY +=(Work._register.hover.targetY - Work._register.hover.currentY) * 0.09; 3797figure.get()[0].style.transform=" translate3d(\n\t\t\t\t\t\t\t\t\t\t".concat(Work._functions.round(Work._register.hover.currentX), "px,\n\t\t\t\t\t\t\t\t\t\t").concat(Work._functions.round(Work._register.hover.currentY), "px, 0px\n\t\t\t\t\t\t\t\t\t)"); 3798if(Work._register.hover.active){ 3799requestAnimationFrame(function (){ 3800Work._interaction.hover.move_image(); 3801}); 3802}} 3803}} 3804}}; 3805Work._init(); 3806}}; 3807elementorFrontend.hooks.addAction('frontend/element_ready/ha-title-tips.default', TitleTips); 3808var LoopTabBase=elementorModules.frontend.handlers.Base.extend({ 3809onInit: function onInit(){ 3810var _this2=this; 3811elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments); 3812this.wrapper=this.$element.find('.ha-loop-tab-wrapper'); 3813this._pillAnim=null; 3814this._animating=false; 3815this._uid='ha_loop_tab_' + this.getUniqueHandlerID(); 3816this._initialized=false; 3817this._wasVisible=false; 3818this._observer=null; 3819this._self=this; 3820this.run(); 3821$(document).on('ha_TabHandlerBase_changed.' + this._uid, function (){ 3822setTimeout(function (){ 3823_this2._initialized=false; 3824if(_this2.$element.hasClass('ha-loop-tab-loaded')){ 3825return; 3826} 3827_this2.run(); 3828}, 200); 3829}); 3830this._startVisibilityObserver(); 3831}, 3832getUniqueHandlerID: function getUniqueHandlerID(){ 3833return 'ha_loop_tab_' + this.$element.data('id') + '_' + Math.random().toString(36).substr(2, 9); 3834}, 3835onDestroy: function onDestroy(){ 3836$(document).off('.' + this._uid); 3837if(this._resizeHandler){ 3838window.removeEventListener('resize', this._resizeHandler); 3839this._resizeHandler=null; 3840} 3841if(this._pillAnim){ 3842this._pillAnim.cancel(); 3843this._pillAnim=null; 3844} 3845if(this._observer){ 3846this._observer.disconnect(); 3847this._observer=null; 3848}}, 3849onElementChange: debounce(function (changedProp){ 3850var $keys=['tab_action', 'tab_transition_delay', 'tab_nav_item_width', 'tab_nav_item_height', 'tab_nav_item_border_radius', 'tab_nav_item_stroke_width']; 3851if($keys.indexOf(changedProp)!==-1){ 3852this._initialized=false; 3853this.run(); 3854}}, 300), 3855_startVisibilityObserver: function _startVisibilityObserver(){ 3856var _this3=this; 3857if(this._observer){ 3858this._observer.disconnect(); 3859} 3860var el=this.$element[0]; 3861var isVisible=function isVisible(){ 3862return !!(el.offsetWidth||el.offsetHeight||el.getClientRects().length); 3863}; 3864this._wasVisible=isVisible(); 3865this._observer=new MutationObserver(function (){ 3866var nowVisible=isVisible(); 3867if(nowVisible&&!_this3._wasVisible){ 3868_this3._wasVisible=true; 3869_this3._initialized=false; 3870if(_this3._pillAnim){ 3871_this3._pillAnim.cancel(); 3872_this3._pillAnim=null; 3873_this3._animating=false; 3874} 3875setTimeout(function (){ 3876_this3.run(); 3877}, 100); 3878}else if(!nowVisible){ 3879_this3._wasVisible=false; 3880}}); 3881var ancestor=el.parentElement; 3882while (ancestor&&ancestor!==document.body){ 3883this._observer.observe(ancestor, { 3884attributes: true, 3885attributeFilter: ['class', 'style', 'hidden'] 3886}); 3887ancestor=ancestor.parentElement; 3888}}, 3889getReadySettings: function getReadySettings(){ 3890var settings={}; 3891var tab_action=this.getElementSettings('tab_action'); 3892if(tab_action) settings.tab_action=tab_action; 3893var tab_transition_delay=this.getElementSettings('tab_transition_delay'); 3894if(tab_transition_delay) settings.tab_transition_delay=tab_transition_delay; 3895var item_width=elementorFrontend.getCurrentDeviceMode()==='mobile' ? this.getElementSettings('tab_nav_item_width_mobile'):this.getElementSettings('tab_nav_item_width'); 3896if(item_width) settings.item_width=item_width['size']; 3897var item_height=this.getElementSettings('tab_nav_item_height'); 3898if(item_height) settings.item_height=item_height['size']; 3899var stroke_ry=elementorFrontend.getCurrentDeviceMode()==='mobile' ? this.getElementSettings('tab_nav_item_border_radius_mobile'):this.getElementSettings('tab_nav_item_border_radius'); 3900if(stroke_ry) settings.stroke_ry=stroke_ry['size']; 3901var stroke_width=this.getElementSettings('tab_nav_item_stroke_width'); 3902if(stroke_width) settings.stroke_width=stroke_width['size']; 3903return $.extend({}
3903, this.getSettings(), settings); 3904}, 3905run: function run(){ 3906var _this4=this; 3907if(this.$element.hasClass('ha-loop-tab-loaded')&&this._initialized){ 3908console.log('Loop Tab already initialized, skipping run.'); 3909return; 3910} 3911this._initialized=true; 3912this.$element.addClass('ha-loop-tab-loaded'); 3913console.log('run.'); 3914if(this._pillAnim){ 3915this._pillAnim.cancel(); 3916this._pillAnim=null; 3917} 3918this._animating=false; 3919if(this._resizeHandler){ 3920window.removeEventListener('resize', this._resizeHandler); 3921this._resizeHandler=null; 3922} 3923this.wrapper.find('.tab-border').each(function (){ 3924this.style.visibility='hidden'; 3925this.style.strokeDasharray=''; 3926this.style.strokeDashoffset=''; 3927}); 3928var settings=this.getReadySettings(); 3929var currentIndex=0; 3930var isHovered=false; 3931var nextIndex=1; 3932var animationInProgress=false; 3933var pillBorderAnim=undefined; 3934var hoverMode=settings.tab_action==='on_hover'; 3935var $wrapper=this.wrapper; 3936var tabs=$wrapper.find('.ha-loop-tab-nav-item'); 3937var contents=$wrapper.find('.ha-loop-tab_content'); 3938var animationTime=settings.tab_transition_delay||8000; 3939var itemWidth=settings.item_width||280; 3940var itemHeight=settings.item_height&&settings.item_height >=45 ? settings.item_height:settings.item_height ? 45:65; 3941var maxRY=parseFloat(itemHeight / 2); 3942var strokeRY=settings.stroke_ry >=maxRY ? maxRY:settings.stroke_ry; 3943var strokeWidth=settings.stroke_width||2; 3944var parentElement=this.$element.closest('.e-parent'); 3945var syncAnimRefs=function syncAnimRefs(anim, inProgress){ 3946pillBorderAnim=anim; 3947animationInProgress=inProgress; 3948_this4._pillAnim=anim; 3949_this4._animating=inProgress; 3950}; 3951if(parentElement.length > 0){ 3952parentElement.css({ 3953position: 'relative', 3954overflow: 'inherit' 3955}); 3956parentElement.find('.ha-loop-tab-bgcontainer').remove(); 3957tabs.each(function (idx, tab){ 3958var bgColor=$(tab).attr('container-bgcolors'); 3959var parsedColor=''; 3960try { 3961parsedColor=JSON.parse(bgColor); 3962} catch (e){} 3963parentElement.append("<div class=\"ha-loop-tab-bgcontainer ha-loop-tab-bgcontainer-".concat(idx, "\" style=\"background:").concat(parsedColor, ";\"></div>")); 3964}); 3965parentElement.find('.ha-loop-tab-bgcontainer-0').addClass('ha-loop-tab-active-bg'); 3966} 3967var handleSweepTouchEvents=function handleSweepTouchEvents(){ 3968var startX=0; 3969var currentX=0; 3970var isSwiping=false; 3971var contentsWrapper=$wrapper.find('.ha-loop-tab-contents')[0]; 3972if(contentsWrapper){ 3973contentsWrapper.addEventListener('touchstart', function (e){ 3974if(!e.touches||e.touches.length!==1) return; 3975startX=e.touches[0].clientX; 3976currentX=startX; 3977isSwiping=true; 3978}, { 3979passive: true 3980}); 3981contentsWrapper.addEventListener('touchmove', function (e){ 3982if(!isSwiping) return; 3983currentX=e.touches[0].clientX; 3984}, { 3985passive: true 3986}); 3987contentsWrapper.addEventListener('touchend', function (){ 3988if(!isSwiping) return; 3989isSwiping=false; 3990var deltaX=startX - currentX; 3991var threshold=60; 3992if(deltaX > threshold){ 3993$(tabs[(currentIndex + 1) % tabs.length]).trigger('click'); 3994} 3995if(deltaX < -threshold){ 3996$(tabs[(currentIndex - 1 + tabs.length) % tabs.length]).trigger('click'); 3997}}); 3998}}; 3999this._resizeHandler=function (){ 4000hoverMode=window.innerWidth <=767 ? false:settings.tab_action==='on_hover'; 4001}; 4002window.addEventListener('resize', this._resizeHandler); 4003if(window.innerWidth <=767){ 4004hoverMode=false; 4005handleSweepTouchEvents(); 4006}else{ 4007hoverMode=settings.tab_action==='on_hover'; 4008} 4009var handleAnimationEnd=function handleAnimationEnd(targetIndex){ 4010return function (){ 4011if(!animationInProgress) return; 4012syncAnimRefs(null, false); 4013var previousTab=$(tabs[currentIndex]); 4014var prevBorder=previousTab.find('.tab-border')[0]; 4015if(prevBorder){ 4016previousTab.find('.tab-border').css({ 4017visibility: 'hidden', 4018strokeDashoffset: prevBorder.getTotalLength ? prevBorder.getTotalLength():0 4019}); 4020} 4021activateTab(targetIndex); 4022$(tabs[targetIndex]).find('.tab-border').css({ 4023visibility: 'hidden' 4024}); 4025smoothScrollTabs(tabs[targetIndex]); 4026parentElement.find('.ha-loop-tab-bgcontainer').removeClass('ha-loop-tab-active-bg'); 4027parentElement.find(".ha-loop-tab-bgcontainer-".concat(targetIndex)).addClass('ha-loop-tab-active-bg'); 4028requestAnimationFrame(function (){ 4029startSvgAnimation((targetIndex + 1) % tabs.length); 4030}); 4031};}; 4032var startSvgAnimation=function startSvgAnimation(index){ 4033var _svgElement$viewBox; 4034if(hoverMode||animationInProgress) return; 4035tabs.removeClass('filling'); 4036var $nextTab=$(tabs[index]); 4037var svgElement=$nextTab.find('.tab-svg')[0]; 4038if(!svgElement) return; 4039if(window.innerWidth <=767){ 4040svgElement.setAttribute('width', itemWidth); 4041svgElement.setAttribute('height', 55); 4042svgElement.setAttribute('viewBox', "0 0 ".concat(itemWidth, " 55")); 4043svgElement.style.width=itemWidth + 'px'; 4044svgElement.style.height=55 + 'px'; 4045}else{ 4046svgElement.setAttribute('width', itemWidth); 4047svgElement.setAttribute('height', itemHeight + 2); 4048svgElement.setAttribute('viewBox', "0 0 ".concat(itemWidth, " ").concat(itemHeight)); 4049svgElement.style.height=itemHeight + 2 + 'px'; 4050} 4051var borderElement=$nextTab.find('.tab-border')[0]; 4052if(!borderElement) return; 4053$nextTab.find('.tab-border').css('visibility', 'visible');
4054var bboxWidth=borderElement.getBBox().width||((_svgElement$viewBox=svgElement.viewBox)===null||_svgElement$viewBox===void 0||(_svgElement$viewBox=_svgElement$viewBox.baseVal)===null||_svgElement$viewBox===void 0 ? void 0:_svgElement$viewBox.width)||itemWidth; 4055if(bboxWidth!==0){ 4056if(window.innerWidth <=767){ 4057strokeWidth=2; 4058borderElement.style.width=itemWidth - 3 + 'px'; 4059borderElement.style.height=52 + 'px'; 4060borderElement.style.x=1; 4061borderElement.style.y=1; 4062borderElement.setAttribute('x', 1); 4063borderElement.setAttribute('y', 1); 4064borderElement.setAttribute('rx', strokeRY); 4065borderElement.setAttribute('ry', strokeRY); 4066borderElement.style.rx=strokeRY; 4067borderElement.style.ry=strokeRY; 4068}else{ 4069if(strokeWidth > 4){ 4070borderElement.setAttribute('x', 3); 4071borderElement.setAttribute('y', 3); 4072}else if(strokeWidth > 2){ 4073borderElement.setAttribute('x', 2); 4074borderElement.setAttribute('y', 2); 4075}else{ 4076borderElement.setAttribute('x', 1); 4077borderElement.setAttribute('y', 1); 4078} 4079borderElement.setAttribute('rx', strokeRY); 4080borderElement.setAttribute('ry', strokeRY); 4081borderElement.style.rx=strokeRY; 4082borderElement.style.ry=strokeRY; 4083if(strokeWidth > 4){ 4084borderElement.style.width=itemWidth - strokeWidth + 'px'; 4085borderElement.style.height=itemHeight - strokeWidth + 'px'; 4086borderElement.style.x=3; 4087borderElement.style.y=3; 4088}else if(strokeWidth > 2){ 4089borderElement.style.width=itemWidth - 1 - strokeWidth + 'px'; 4090borderElement.style.height=itemHeight - 2 + 'px'; 4091borderElement.style.x=2; 4092}else{ 4093borderElement.style.width=itemWidth - 2 + 'px'; 4094borderElement.style.height=itemHeight - 2 + 'px'; 4095borderElement.style.x=1; 4096borderElement.style.y=1; 4097}} 4098var length; 4099try { 4100length=borderElement.getTotalLength() + 5; 4101if(length <=5){ 4102var _w=parseFloat(borderElement.style.width)||itemWidth - 2; 4103var h=parseFloat(borderElement.style.height)||itemHeight - 2; 4104length=2 * (_w + h) + 5; 4105}} catch (e){ 4106var _w2=parseFloat(borderElement.style.width)||itemWidth - 2; 4107var _h=parseFloat(borderElement.style.height)||itemHeight - 2; 4108length=2 * (_w2 + _h) + 5; 4109} 4110borderElement.style.strokeDasharray=length.toString(); 4111borderElement.style.strokeDashoffset=length.toString(); 4112var anim=borderElement.animate([{ 4113strokeDashoffset: length, 4114strokeWidth: strokeWidth 4115}, { 4116strokeDashoffset: 0, 4117strokeWidth: strokeWidth, 4118offset: 0.98, 4119easing: 'cubic-bezier(0.11, 0, 0.5, 0)' 4120}, { 4121strokeDashoffset: 0, 4122strokeWidth: strokeWidth, 4123easing: 'ease-out' 4124}], { 4125duration: animationTime, 4126delay: 0, 4127fill: 'forwards' 4128}); 4129syncAnimRefs(anim, true); 4130} 4131if(!pillBorderAnim) return; 4132pillBorderAnim.onfinish=handleAnimationEnd(index); 4133$nextTab.addClass('filling'); 4134nextIndex=index; 4135}; 4136var activateTab=function activateTab(index){ 4137currentIndex=index; 4138tabs.removeClass('active'); 4139contents.removeClass('active'); 4140$(tabs[index]).addClass('active'); 4141$(contents[index]).addClass('active'); 4142}; 4143tabs.off('mouseenter mouseleave').hover(function (){ 4144if(window.innerWidth <=767) return; 4145if(hoverMode){ 4146var index=$(this).index(); 4147activateTab(index); 4148parentElement.find('.ha-loop-tab-bgcontainer').removeClass('ha-loop-tab-active-bg'); 4149parentElement.find(".ha-loop-tab-bgcontainer-".concat(index)).addClass('ha-loop-tab-active-bg'); 4150return; 4151} 4152isHovered=true; 4153var $thisTab=$(this); 4154if($thisTab.hasClass('filling')&&animationInProgress&&pillBorderAnim){ 4155pillBorderAnim.pause(); 4156}}, function (){ 4157if(window.innerWidth <=767) return; 4158if(hoverMode) return; 4159isHovered=false; 4160var $thisTab=$(this); 4161if($thisTab.hasClass('filling')&&animationInProgress&&pillBorderAnim){ 4162pillBorderAnim.play(); 4163}}); 4164tabs.off('click').on('click', function (e){ 4165var clickedTab=$(e.currentTarget); 4166var clickedIndex=clickedTab.index(); 4167if(clickedIndex===currentIndex) return; 4168if(animationInProgress&&pillBorderAnim){ 4169pillBorderAnim.cancel(); 4170syncAnimRefs(null, false); 4171} 4172tabs.find('.tab-border').css({ 4173visibility: 'hidden', 4174strokeDashoffset: function strokeDashoffset(){ 4175try { 4176return this.getTotalLength(); 4177} catch (e){ 4178return 0; 4179}} 4180}); 4181activateTab(clickedIndex); 4182parentElement.find('.ha-loop-tab-bgcontainer').removeClass('ha-loop-tab-active-bg'); 4183parentElement.find(".ha-loop-tab-bgcontainer-".concat(clickedIndex)).addClass('ha-loop-tab-active-bg'); 4184setTimeout(function (){ 4185startSvgAnimation((clickedIndex + 1) % tabs.length); 4186}, 200); 4187smoothScrollTabs(e.currentTarget); 4188}); 4189tabs.dblclick(function (){ 4190if(window.innerWidth > 767) return; 4191if(animationInProgress&&pillBorderAnim){ 4192pillBorderAnim.cancel(); 4193syncAnimRefs(null, false); 4194}}); 4195var smoothScrollTabs=function smoothScrollTabs(clickedTab){ 4196if(window.innerWidth > 767) return; 4197var container=$wrapper.find('.ha-loop-tab-nav')[0]; 4198if(!container) return; 4199var containerRect=container.getBoundingClientRect(); 4200var itemRect=clickedTab.getBoundingClientRect(); 4201var scrollPosition=container.scrollLeft + (itemRect.left - containerRect.left) - containerRect.width / 3 + itemRect.width / 3; 4202container.scrollTo({ 4203left: scrollPosition, 4204behavior: 'smooth' 4205}); 4206}; 4207activateTab(0); 4208startSvgAnimation(1); 4209}}); 4210elementorFrontend.hooks.addAction("frontend/element_ready/ha-loop-tab.default", function ($scope){ 4211elementorFrontend.elementsHandler.addHandler(LoopTabBase, { 4212$element: $scope 4213}); 4214}); 4215var MultiScroll=function MultiScroll($scope){ 4216var wrap=$scope.find(".ha-multi-scroll-wrap"); 4217var wrap_inner=$scope.find(".ha-multi-scroll-inner"); 4218var multi_id=$scope.data("id"); 4219var multiscroll=$scope.find(".ha-multi-scroll-inner-" + multi_id); 4220var is_editor=$scope.hasClass("elementor-element-edit-mode"); 4221var options=wrap.data("settings"); 4222var device_mode=$("body").attr("data-elementor-device-mode"); 4223var $left_sections=$scope.find('.ms-left .ms-section'); 4224var $right_sections=$scope.find('.ms-right .ms-section'); 4225if(is_editor){ 4226$(document).find('#multiscroll-nav').remove(); 4227try { 4228$.fn.multiscroll.destroy(); 4229} catch (err){ 4230console.log(err); 4231}} 4232var $settings={ 4233loopBottom: options.loopBottom, 4234loopTop: options.loopTop, 4235anchors: options.anchors, 4236navigation: options.dots, 4237navigationTooltips: options.dotsTooltips, 4238navigationPosition: options.dotsPosition + ' ' + options.dotsVertical, 4239normalScrollElements: null, 4240menu: options.menu, 4241leftWidth: options.leftWidth, 4242rightWidth: options.rightWidth, 4243navigationInject: wrap_inner, 4244paddingTop: 0, 4245paddingBottom: 0 4246}; 4247multiscroll.multiscroll($settings); 4248function check_device(device_mode){ 4249if(device_mode.includes("tablet")||device_mode.includes("mobile")){ 4250$.fn.multiscroll.destroy(); 4251$('html, body').css({ 4252'overflow': 'visible', 4253'height': 'auto' 4254}); 4255}else{ 4256$.fn.multiscroll.build(); 4257$('html, body').css({ 4258'overflow': 'hidden', 4259'height': '100%' 4260}); 4261}} 4262check_device(device_mode); 4263if(is_editor&&options.menu){ 4264$(options.menu).on('click', 'a', function (e){ 4265e.preventDefault(); 4266var target=$(this).parent().attr('data-menuanchor'); 4267$.fn.multiscroll.moveTo(target); 4268}); 4269} 4270$(window).on("resize", function (){ 4271var device_mode=$("body").attr("data-elementor-device-mode"); 4272check_device(device_mode); 4273}); 4274}; 4275elementorFrontend.hooks.addAction("frontend/element_ready/ha-multi-scroll.default", MultiScroll); 4276var ScrollSequence=function ScrollSequence($scope){ 4277var get_ID=sessionStorage.getItem('haScrollSequenceChangeApply'); 4278if(get_ID&&get_ID==$scope.data('id')){ 4279$scope.trigger("click"); 4280$("body,html,document").scrollTop($scope.offset().top); 4281sessionStorage.removeItem('haScrollSequenceChangeApply'); 4282} 4283var element=$scope.find('.ha-scroll-sequence-wrap'); 4284if(!element.length) return; 4285var settings=element.data('settings'), 4286canvas_wrap=element.find('.ha-scroll-sequence-canvas-wrap'), 4287is_editor=$scope.hasClass("elementor-element-edit-mode"), 4288apply_to=settings.apply_to, 4289target_wrap='.ha-scroll-sequence-canvas--' + settings.widget_id + ' .ha-scroll-sequence-canvas-wrap-inner', 4290image_links=[], 4291folder_path='', 4292name_prefix='', 4293number_format=1, 4294image_type='jpg', 4295total_image=0, 4296parent_wrapper, 4297contid, 4298containerSS; 4299if("gallery"==settings.image_source){ 4300image_links=settings.images; 4301}else if("server"==settings.image_source){ 4302folder_path=settings.images, name_prefix=settings.name_prefix, number_format=settings.number_format, image_type=sett
4302ings.image_type, total_image=settings.total_image, image_links=createImageLink(folder_path, name_prefix, number_format, image_type, total_image); 4303} 4304canvas_wrap.remove(); 4305if('body'==apply_to){ 4306parent_wrapper=$(document).find('body'); 4307containerSS="body"; 4308}else if('container'==apply_to){ 4309parent_wrapper=$scope.closest('.e-con'); 4310contid=parent_wrapper.data('id'); 4311containerSS=".elementor-element-" + contid; 4312}else if('section'==apply_to){ 4313parent_wrapper=$scope.closest('.elementor-section'); 4314contid=parent_wrapper.data('id'); 4315containerSS=".elementor-element-" + contid; 4316}else if('column'==apply_to){ 4317parent_wrapper=$scope.closest('.elementor-column'); 4318if(parent_wrapper){ 4319contid=parent_wrapper.data('id'); 4320containerSS=".elementor-element-" + contid; 4321}} 4322if(is_editor){ 4323try { 4324parent_wrapper.find('.ha-scroll-sequence-canvas-wrap').remove(); 4325} catch (err){ 4326console.log(err); 4327}} 4328parent_wrapper.prepend(canvas_wrap); 4329$(target_wrap).HappySequencer({ 4330links: image_links, 4331count: total_image 4332}, function (){ 4333}); 4334function createImageLink(folder_path, name_prefix, number_format, image_type, total_image){ 4335var imgGallery=[]; 4336if(!isNaN(number_format)&&folder_path!==''&&total_image&&['jpg', 'png', 'webp'].includes(image_type)){ 4337for (var i=1; i <=total_image; i++){ 4338var paddedNumber=i.toString().padStart(number_format, '0'); 4339var imgUrl="".concat(folder_path, "/").concat(name_prefix).concat(paddedNumber, ".").concat(image_type); 4340imgGallery.push(imgUrl); 4341}} 4342return imgGallery; 4343}}; 4344elementorFrontend.hooks.addAction('frontend/element_ready/ha-scroll-sequence.default', ScrollSequence); 4345var ScrollTabs=function ScrollTabs($scope){ 4346content_1(); 4347function content_1(){ 4348var contentwrap=arguments.length > 0&&arguments[0]!==undefined ? arguments[0]:'.ha-scroll-tab-content-wrapper'; 4349var navItems=arguments.length > 1&&arguments[1]!==undefined ? arguments[1]:'.ha-scroll-tab-nav-item'; 4350var $contentWrapper=$scope.find('.ha-scroll-tab-content-wrapper'); 4351var totalInnerSection=$contentWrapper.find('.ha-scroll-tab-content-section').length; 4352var $navItems=$scope.find('.ha-scroll-tab-nav-item'); 4353var sectionHeight=$contentWrapper.height(); 4354var isScrolling=false; 4355var isAnimating=false; 4356var animDuration=10; 4357var debounceTime=200; 4358$navItems.on('click', debounce(function (){ 4359var sectionIndex=parseInt($(this).data('section')); 4360scrollToSection(sectionIndex); 4361}, debounceTime)); 4362function scrollToSection(sectionIndex){ 4363isScrolling=true; 4364isAnimating=true; 4365var targetScroll=sectionIndex * sectionHeight; 4366$contentWrapper.animate({ 4367scrollTop: targetScroll 4368}, animDuration, function (){ 4369isScrolling=false; 4370isAnimating=false; 4371updateActiveStates(sectionIndex); 4372}); 4373} 4374function getCurrentSection(deltaY, target){ 4375var sectionIndex=null; 4376if(deltaY < 0){ 4377if(target.hasClass('ha-scroll-tab-content-section')){ 4378sectionIndex=parseInt(target.data('section')); 4379}else if(target.closest('.ha-scroll-tab-content-section').length > 0){ 4380sectionIndex=parseInt(target.closest('.ha-scroll-tab-content-section').data('section')); 4381}}else if(deltaY > 0){ 4382if(target.hasClass('ha-scroll-tab-content-section')){ 4383sectionIndex=parseInt(target.data('section')); 4384}else if(target.closest('.ha-scroll-tab-content-section').length > 0){ 4385sectionIndex=parseInt(target.closest('.ha-scroll-tab-content-section').data('section')); 4386}} 4387return sectionIndex; 4388} 4389function updateActiveStates(activeIndex){ 4390if(!isAnimating){ 4391$navItems.removeClass('active'); 4392$navItems.filter("[data-section=\"".concat(activeIndex, "\"]")).addClass('active'); 4393}} 4394$contentWrapper.on('scroll', debounce(function (){ 4395if(isScrolling||isAnimating) return; 4396var scrollTop=$(this).scrollTop(); 4397var currentSection=Math.round(scrollTop / sectionHeight); 4398if(false==isAnimating){ 4399isAnimating=true; 4400var targetScroll=currentSection * sectionHeight; 4401$contentWrapper.animate({ 4402scrollTop: targetScroll 4403}, animDuration, function (){ 4404isAnimating=false; 4405updateActiveStates(currentSection); 4406}); 4407} 4408if(false==isAnimating){ 4409updateActiveStates(currentSection); 4410}}, debounceTime)); 4411$contentWrapper.on('wheel', debounce(function (e){ 4412var scrollTop=$(this).scrollTop(); 4413var currentSection=Math.round(scrollTop / sectionHeight); 4414var delta=e.originalEvent.deltaY; 4415var maxScroll=$contentWrapper[0].scrollHeight - $contentWrapper.height(); 4416var present=getCurrentSection(delta, $(e.target)); 4417if(scrollTop <=0&&delta < 0){ 4418return; 4419} 4420if(scrollTop >=maxScroll&&delta > 0){ 4421return; 4422} 4423e.preventDefault(); 4424var targetSection=currentSection; 4425if(e.originalEvent.deltaY < 0){ 4426targetSection=0==present ? 0:present - 1; 4427}else if(e.originalEvent.deltaY > 0){ 4428targetSection=totalInnerSection - 0==present ? present:present + 1; 4429}
4430if(targetSection!==currentSection&&false==isAnimating){ 4431scrollToSection(targetSection); 4432}}, debounceTime)); 4433$(document).on('wheel', debounce(function (e){ 4434var $target=$(e.target); 4435if($target.closest('.ha-scroll-tab-content-wrapper').length > 0){ 4436return; 4437}}, debounceTime)); 4438}}; 4439elementorFrontend.hooks.addAction('frontend/element_ready/ha-scroll-tabs.default', ScrollTabs); 4440var advancedPricingTable=function advancedPricingTable($scope){ 4441var currentIndex=0; 4442var table=$scope.find('.ha-adv-pricing-table-wrap'); 4443var data=table.data('price-settings'); 4444var tiers=data; 4445function advancePrice(priceContainer, items){ 4446contentManage(priceContainer, items, 0); 4447priceContainer.find('.ha-adv-pricing-table-slider-dot').on('click', function (){ 4448var index=priceContainer.find('.ha-adv-pricing-table-slider-dot').index(this); 4449contentManage(priceContainer, items, index); 4450var sliderContainer=priceContainer.find('.ha-adv-pricing-table-slider-container.style-1'); 4451if(0 < sliderContainer.length){ 4452sliderControl(sliderContainer, items, index); 4453}}); 4454var $style_1=priceContainer.find('.ha-adv-pricing-table-slider-container.style-1'); 4455if(0 < $style_1.length){ 4456$style_1.find('input[type="range"]').on('input', function (e){ 4457var value=parseInt($(this).val()); 4458contentManage(priceContainer, items, value); 4459sliderControl($style_1, items, value); 4460}); 4461} 4462var $style_2=priceContainer.find('.ha-adv-pricing-table-slider-container.style-2 input[type="range"]'); 4463if(0 < $style_2.length){ 4464$style_2.rangeslider({ 4465polyfill: false, 4466onInit: function onInit(){ 4467var range=''; 4468var $ruler=$('<div class="rangeslider__ruler" />'); 4469var step=1; 4470var i=this.min; 4471while (i <=this.max){ 4472range +=i + ' '; 4473i=i + step; 4474} 4475$ruler[0].innerHTML=range; 4476this.$range.prepend($ruler); 4477}, 4478onSlide: function onSlide(position, value){ 4479contentManage(priceContainer, items, value); 4480}}); 4481} 4482var $style_3=priceContainer.find('.ha-adv-pricing-table-slider-container.style-3'); 4483if(0 < $style_3.length){ 4484$style_3.find('input[type="range"]').on('input', function (e){ 4485var value=parseInt($(this).val()); 4486contentManage(priceContainer, items, value); 4487simpleSliderControl($style_3, items, value); 4488}); 4489} 4490var $style_4=priceContainer.find('.ha-adv-pricing-table-slider-container.style-4'); 4491if(0 < $style_4.length){ 4492$style_4.find('input[type="range"]').on('input', function (e){ 4493var value=parseInt($(this).val()); 4494contentManage(priceContainer, items, value); 4495simpleSliderControl($style_4, items, value); 4496}); 4497} 4498var $style_5=priceContainer.find('.ha-adv-pricing-table-slider-container.style-5'); 4499if(0 < $style_5.length){ 4500$style_5.find('input[type="range"]').on('input', function (e){ 4501var value=parseInt($(this).val()); 4502contentManage(priceContainer, items, value); 4503simpleSliderControl($style_5, items, value); 4504}); 4505}} 4506function contentManage(priceContainer, items, index){ 4507var tier=items[index]; 4508priceContainer.find('[data-plan-name]').text(tier.plan_name); 4509var priceDisplay=priceContainer.find('.ha-adv-pricing-table-price-display'); 4510priceDisplay.find('[data-currency]').text(tier.symbol); 4511var price=priceDisplay.find('.ha-adv-pricing-table-current-price'); 4512price.find('[data-price]').text(tier.price); 4513if(index > currentIndex){ 4514priceDisplay.css('animation', "haAdvPricingTableLetterroll cubic-bezier(0.4, 0, 0.2, 1) 0.5s"); 4515currentIndex=index; 4516} 4517if(index < currentIndex){ 4518priceDisplay.css('animation', 'haAdvPricingTableBackroll cubic-bezier(0.4, 0, 0.2, 1) 0.5s'); 4519currentIndex=index; 4520} 4521var t=setTimeout(function (){ 4522priceDisplay.removeAttr('style'); 4523clearTimeout(t); 4524}, 500); 4525priceContainer.find('[data-price-period]').text(tier.period); 4526if(tier.plan_related_text){ 4527var plan_related="<span>".concat(tier.plan_related_text, "</span>"); 4528if(tier.plan_related_icon){ 4529plan_related="<i class=\"".concat(tier.plan_related_icon, "\"></i>") + plan_related; 4530} 4531priceContainer.find('[data-savings]').html(plan_related); 4532priceContainer.find('[data-savings]').css('display', ''); 4533}else{ 4534priceContainer.find('[data-savings]').css('display', 'none'); 4535} 4536priceContainer.find('[data-cta-button]').text(tier.button_text); 4537priceContainer.find('[data-cta-button]').attr(tier.button_attr); 4538var originalPriceEl=priceContainer.find('.ha-adv-pricing-table-original-price'); 4539if(tier.original_price){ 4540originalPriceEl.css('display', ''); 4541originalPriceEl.find('[data-original-price]').text("".concat(tier.original_price)); 4542}else{ 4543originalPriceEl.css('display', 'none'); 4544} 4545var featuresEle=priceContainer.find('[data-features]'); 4546var features_list=''; 4547tier.features_desc.forEach(function (element){ 4548features_list +="<li>"; 4549if(element.icon){ 4550features_list +="<i class=\"".concat(element.icon, "\"></i>"); 4551} 4552if(element.feature&&!element.tooltip){ 4553features_list +="<div class=\"ha-adv-pricing-table-feature-text\">".concat(element.feature, "</div>"); 4554} 4555if(element.tooltip){ 4556features_list +="<div class=\"ha-adv-pricing-table-feature-text ha-adv-pricing-table-feature-tooltip\">".concat(element.feature, "<span class=\"ha-adv-pricing-table-feature-tooltip-text\">").concat(element.tooltip, "</span></div>"); 4557} 4558features_list +="</li>"; 4559}); 4560featuresEle.html("<ul>".concat(features_list, "</ul>")); 4561} 4562function sliderControl(sliderContainer, items, index){ 4563var sliderTrack=sliderContainer.find('.ha-adv-pricing-table-slider-track'); 4564var sliderThumb=sliderContainer.find('.ha-adv-pricing-table-slider-thumb'); 4565var sliderDots=sliderContainer.find('.ha-adv-pricing-table-slider-dots-container'); 4566var trackWidth=sliderTrack.outerWidth(); 4567var thumbWidth=sliderThumb.outerWidth(); 4568var percentage=index / (items.length - 1) * 100; 4569var position=percentage / 100 * (trackWidth - thumbWidth); 4570var withoutPointertrackWidth=trackWidth - 24; 4571var width=withoutPointertrackWidth / (items.length - 1) * index; 4572if(100==percentage){ 4573sliderThumb.css('width', "calc(".concat(width, "px + 24px")); 4574}else if(0==percentage){ 4575sliderThumb.css('width', "calc(24px)"); 4576}else{ 4577sliderThumb.css('width', "calc(".concat(width, "px + 24px")); 4578} 4579sliderDots.find('.ha-adv-pricing-table-slider-dot').each(function (i){ 4580$(this).toggleClass('active', i===index); 4581}); 4582} 4583function simpleSliderControl(sliderContainer, items, index){ 4584var rangeWrap=sliderContainer.find('.ha-adv-pricing-table-slider-range-wrap'); 4585var sliderThumb=sliderContainer.find('.ha-adv-pricing-table-slider-range-thumb'); 4586var dotsContainer=sliderContainer.find('.ha-adv-pricing-table-slider-dots-container'); 4587var rangerThumb=20; 4588if(sliderContainer.hasClass('style-4')){ 4589rangerThumb=24; 4590} 4591var rangeWrapWidth=rangeWrap.outerWidth(); 4592var thumbWidth=sliderThumb.outerWidth(); 4593var percentage=index / (items.length - 1) * 100; 4594var withoutPointertrackWidth=rangeWrapWidth - rangerThumb; 4595var width=withoutPointertrackWidth / (items.length - 1) * index; 4596if(100==percentage){ 4597sliderThumb.css('width', "calc(".concat(width, "px + ").concat(rangerThumb, "px")); 4598}else if(0==percentage){ 4599sliderThumb.css('width', "calc(".concat(rangerThumb, "px)")); 4600}else{ 4601sliderThumb.css('width', "calc(".concat(width, "px + ").concat(rangerThumb, "px")); 4602} 4603dotsContainer.find('div').each(function (i){ 4604$(this).toggleClass('active', i===index); 4605}); 4606} 4607advancePrice(table, tiers); 4608}; 4609elementorFrontend.hooks.addAction('frontend/element_ready/ha-advanced-pricing-table.default', advancedPricingTable); 4610var SuperButton=function SuperButton($scope){ 4611if(elementorFrontend.isEditMode()){ 4612return; 4613} 4614var $btn_wrap=$scope.find('.ha-super-btn-stl-10'); 4615if($btn_wrap.length > 0){ 4616var $btn=$btn_wrap.find('button'); 4617$btn.on('click', function (e){ 4618e.preventDefault(); 4619$btn_wrap.toggleClass("open"); 4620}); 4621$(document).on('click', function (e){ 4622if(e.target.closest(".ha-super-btn-stl-10")){ 4623return; 4624} 4625if($btn_wrap.hasClass("open")){ 4626$btn_wrap.removeClass("open"); 4627}}); 4628$(window).on('scroll', function (){ 4629if($btn_wrap.hasClass("open")){ 4630$btn_wrap.removeClass("open"); 4631}}); 4632}}; 4633elementorFrontend.hooks.addAction('frontend/element_ready/ha-super-button.default', SuperButton); 4634var AdvancedSearchWidget=function AdvancedSearchWidget($scope){ 4635var $wrap=$scope.find(".ha-advanced-search-advanced-search-wrap"); 4636if(!$wrap.length) return; 4637var widgetId=$wrap.attr("id")||"ha-advanced-search-advanced-search-" + Math.random().toString(16).slice(2); 4638if(!$wrap.attr("id")){ 4639$wrap.attr("id", widgetId); 4640} 4641var ns=".haAdvSearch." + widgetId; 4642if($wrap.data("haAdvSearchInit")) return; 4643$wrap.data("haAdvSearchInit", true); 4644var $searchBox=$scope.find(".ha_advanced_search_search_box"); 4645var $input=$scope.find(".ha_advanced_search_search_input"); 4646var $button=$scope.find(".ha_advanced_search_search_button"); 4647var $clearButton=$scope.find(".ha_advanced_search_clear_button"); 4648var $clearButtonL4=$scope.find(".ha_advanced_search_clear_button_l4"); 4649var $resultsContainer=$scope.find(".ha_advanced_search_results_container"); 4650var $resultsList=$scope.find(".ha_advanced_search_results_list"); 4651var $resultsFooter=$scope.find(".ha_advanced_search_results_footer"); 4652var $layout3Root=$scope.closest(".ha-advanced-search-search-layout-layout-3"); 4653if(!$layout3Root.length&&$scope.hasClass("ha-advanced-search-search-layout-layout-3")){ 4654$layout3Root=$scope; 4655} 4656var isLayout3=$layout3Root.length > 0||$scope.find(".ha_advanced_search_layout3_shell").length > 0; 4657var $layout4Root=$scope.closest(".ha-advanced-search-search-layout-layout-4"); 4658if(!$layout4Root.length&&$scope.hasClass("ha-advanced-search-search-layout-layout-4")){ 4659$layout4Root=$scope; 4660} 4661var isLayout4 = !isLayout3&&($layout4Root.length > 0||$scope.find(".ha_advanced_search_layout4_shell").length > 0); 4662var isLayout2 = !isLayout3&&!isLayout4&&$scope.find(".ha_advanced_search_results-container").length > 0; 4663var $searchTermDisplay=$scope.find('[id^="ha-advanced-search-search-term-display-"]'); 4664var $categorySelect=$scope.find(".ha_advanced_search_category_select"); 4665var $tagSelect=$scope.find(".ha_advanced_search_tag_select"); 4666var $popularKeywords=$scope.find(".ha-advanced-search-keyword, .ha_advanced_search_layout3_popular_item"); 4667var $layout3Shell=$scope.find(".ha_advanced_search_layout3_shell"); 4668var $layout3Trigger=$scope.find(".ha_advanced_search_search-trigger"); 4669var $layout3InitialInput=$scope.find(".ha_advanced_search_search-input-initial"); 4670var $layout3Close=$scope.find(".ha_advanced_search_search-close"); 4671var $layout3Curtain=$scope.find(".ha_advanced_search_curtain"); 4672var $layout3ResultsBlock=$scope.find(".ha_advanced_search_layout3_results_block"); 4673var $layout3PopularBlock=$scope.find(".ha_advanced_search_layout3_popular_search"); 4674var layout3ClosedAt=0; 4675var $layout4Shell=$scope.find(".ha_advanced_search_layout4_shell"); 4676var $layout4Trigger=$layout4Shell.find(".ha_advanced_search_search-trigger"); 4677var $layout4InitialInput=$layout4Shell.find(".ha_advanced_search_search-input-initial"); 4678var $layout4Panel=$layout4Shell.find(".ha_advanced_search_search-panel"); 4679var $layout4Close=$layout4Shell.find(".ha_advanced_search_search-close"); 4680var $layout4InputHolder=$layout4Shell.find(".ha_advanced_search_search-input-holder"); 4681var $layout4ResultCount=$layout4Shell.find('[id^="ha-advanced-search-result-count-"]'); 4682var $dateSelect=$scope.find(".ha_advanced_search_date_select"); 4683var $dateRangeWrap=$scope.find(".ha_advanced_search_date_range"); 4684var $dateFrom=$scope.find(".ha_advanced_search_date_from"); 4685var $dateTo=$scope.find(".ha_advanced_search_date_to"); 4686var $dateIcons=$scope.find(".ha_advanced_search_date_icon"); 4687var dateMode="all"; 4688var dateFromVal=""; 4689var dateToVal=""; 4690var layout3SuppressCloseUntil=0; 4691function suppressLayout3Close(ms){ 4692layout3SuppressCloseUntil=Date.now() + (ms||800); 4693} 4694function isLayout3CloseSuppressed(){ 4695return Date.now() < layout3SuppressCloseUntil; 4696} 4697$(document).off(ns); 4698$scope.off(ns); 4699$resultsContainer.off(ns); 4700$input.off(ns); 4701$button.off(ns); 4702$clearButton.off(ns); 4703$clearButtonL4.off(ns); 4704$categorySelect.off(ns); 4705$tagSelect.off(ns); 4706$popularKeywords.off(ns); 4707$searchBox.off(ns); 4708$dateSelect.off(ns); 4709$dateFrom.off(ns); 4710$dateTo.off(ns); 4711$dateRangeWrap.off(ns); 4712$dateIcons.off(ns); 4713var searchTerm=""; 4714var currentPage=1; 4715var totalPages=1; 4716var searchTimeout=null; 4717var isLoadingAll=false; 4718var selectedCategory=""; 4719var selectedTag=""; 4720var selectedPageId=""; 4721var lastTrackedTerm=""; 4722var lastTrackedAt=0; 4723var justCleared=false; 4724var justClearedTimer=null; 4725var settings={ 4726postTypes: JSON.parse($wrap.attr("data-post-types")||'["post","page"]'), 4727initialResultsCount: parseInt($wrap.attr("data-initial-results-count"), 10)||5, 4728showContentImage: $wrap.attr("data-show-content-image")==="true", 4729notFoundText: $wrap.attr("data-not-found-text")||"No results found", 4730loadMoreText: $wrap.attr("data-load-more-text")||"Load More" 4731}; 4732var pageHasTags=$wrap.attr("data-page-has-tags")==="true"; 4733var showDateFilter=$wrap.attr("data-show-date-filter")==="true"; 4734function showResults(){ 4735if($dateRangeWrap.length) $dateRangeWrap.hide(); 4736$resultsContainer.addClass("ha_advanced_search_visible"); 4737} 4738function hideResults(){ 4739$resultsContainer.removeClass("ha_advanced_search_visible"); 4740} 4741function showLayout3Popular(){ 4742if(!isLayout3) return; 4743if(!$layout3PopularBlock.length) return; 4744$resultsContainer.addClass("ha_advanced_search_visible"); 4745$layout3PopularBlock.show(); 4746$layout3ResultsBlock.hide(); 4747$resultsFooter.hide(); 4748}
4749function showLayout3ResultsPanel(){ 4750if(!isLayout3) return; 4751if(!$layout3ResultsBlock.length) return; 4752$resultsContainer.addClass("ha_advanced_search_visible"); 4753$layout3PopularBlock.hide(); 4754$layout3ResultsBlock.show(); 4755$resultsFooter.show(); 4756} 4757function openLayout3Search(){ 4758if(!isLayout3||!$layout3Shell.length) return; 4759var $container=$layout3Shell.find('.ha_advanced_search_search-container'); 4760var rect=$layout3Shell.get(0).getBoundingClientRect(); 4761var offsetTop=rect.top; 4762$container.css({ 4763position: 'fixed', 4764top: offsetTop + 'px', 4765width: '100vw', 4766left: '0', 4767'z-index': '9999' 4768}); 4769document.body.style.overflow='hidden'; 4770$layout3Root.addClass("ha_advanced_search_search-active"); 4771$scope.addClass("ha_advanced_search_search-active"); 4772if(document.activeElement!==$input.get(0)){ 4773setTimeout(function (){ 4774var _$input$get; 4775(_$input$get=$input.get(0))===null||_$input$get===void 0||_$input$get.focus(); 4776searchTerm=($input.val()||"").trim(); 4777if(searchTimeout) clearTimeout(searchTimeout); 4778searchTimeout=setTimeout(function (){ 4779if(searchTerm.length >=2) performSearch();else resetResultsUI(); 4780}, 300); 4781}, 120); 4782}else{ 4783searchTerm=($input.val()||"").trim(); 4784if(searchTimeout) clearTimeout(searchTimeout); 4785searchTimeout=setTimeout(function (){ 4786if(searchTerm.length >=2) performSearch();else resetResultsUI(); 4787}, 300); 4788}} 4789function closeLayout3Search(){ 4790if(!isLayout3||!$layout3Shell.length) return; 4791document.body.style.overflow='visible'; 4792$layout3Root.removeClass("ha_advanced_search_search-active"); 4793$scope.removeClass("ha_advanced_search_search-active"); 4794} 4795function openLayout4Search(){ 4796if(!isLayout4||!$layout4Panel.length) return; 4797$layout4Panel.addClass("opened"); 4798$layout4Root.addClass("ha_advanced_search_search-active"); 4799$scope.addClass("ha_advanced_search_search-active"); 4800setTimeout(function (){ 4801$input.trigger("focus"); 4802}, 80); 4803} 4804function closeLayout4Search(){ 4805if(!isLayout4||!$layout4Panel.length) return; 4806$layout4Panel.removeClass("opened"); 4807$layout4Root.removeClass("ha_advanced_search_search-active"); 4808$scope.removeClass("ha_advanced_search_search-active"); 4809$layout4InputHolder.removeClass("has-value"); 4810$input.val(""); 4811resetResultsUI(); 4812} 4813function updateLayout4ResultCount(count){ 4814if(!isLayout4||!$layout4ResultCount.length) return; 4815var safeCount=parseInt(count, 10); 4816if(isNaN(safeCount)||safeCount < 0) safeCount=0; 4817$layout4ResultCount.text(String(safeCount)); 4818} 4819function showDateRange(){ 4820hideResults(); 4821$dateRangeWrap.show(); 4822} 4823function hideDateRange(){ 4824$dateRangeWrap.hide(); 4825} 4826function updateViewAllVisibility(){ 4827var $viewAll=$scope.find(".ha_advanced_search_results_footer"); 4828if(!$viewAll.length) return; 4829var shouldShow=totalPages > 1&¤tPage < totalPages&&!isLoadingAll; 4830if(shouldShow) $viewAll.show();else $viewAll.hide(); 4831} 4832function clearResultsList(){ 4833if(isLayout2){ 4834$resultsContainer.find(".ha_advanced_search_result-item, .ha_advanced_search_result_item, .ha_advanced_search_no_results").remove(); 4835}else{ 4836$resultsList.empty(); 4837}} 4838function resetResultsUI(){ 4839hideResults(); 4840clearResultsList(); 4841totalPages=1; 4842currentPage=1; 4843isLoadingAll=false; 4844updateLayout4ResultCount(0); 4845updateViewAllVisibility(); 4846if(isLayout3&&($layout3Root.hasClass("ha_advanced_search_search-active")||$scope.hasClass("ha_advanced_search_search-active"))){ 4847showLayout3Popular(); 4848}} 4849function toggleLayout3ResultsHeading(showHeading){ 4850if(!isLayout3) return; 4851var $heading=$resultsContainer.find(".ha_advanced_search_search-results > h3").first(); 4852if(!$heading.length) return; 4853if(showHeading) $heading.show();else $heading.hide(); 4854} 4855function searchIfReady(){ 4856if(searchTerm&&searchTerm.length >=2){ 4857resetResultsUI(); 4858performSearch(); 4859}else{ 4860resetResultsUI(); 4861}} 4862function trackKeyword(keyword){ 4863keyword=(keyword||"").trim(); 4864if(!keyword) return; 4865if(keyword.length < 2) return; 4866var now=Date.now(); 4867if(keyword===lastTrackedTerm&&now - lastTrackedAt < 15000) return; 4868lastTrackedTerm=keyword; 4869lastTrackedAt=now; 4870$.ajax({ 4871url: HappyProLocalize.ajax_url, 4872type: "POST", 4873dataType: "json", 4874data: { 4875action: "ha_advanced_search_track_keyword", 4876nonce: HappyProLocalize.nonce, 4877keyword: keyword 4878}}); 4879} 4880function buildAjaxData(page){ 4881var data={ 4882action: "ha_advanced_search", 4883nonce: HappyProLocalize.nonce, 4884search_term: searchTerm, 4885post_types: settings.postTypes, 4886page: page, 4887initial_results_count: settings.initialResultsCount, 4888show_content_image: settings.showContentImage, 4889date_mode: dateMode 4890}; 4891if(dateMode==="custom"){
4892data.date_from=dateFromVal; 4893data.date_to=dateToVal; 4894} 4895if(selectedPageId){ 4896data.page_id=selectedPageId; 4897return data; 4898} 4899if(selectedCategory) data.category=selectedCategory; 4900if(selectedTag) data.tag=selectedTag; 4901return data; 4902} 4903function fetchResults(page){ 4904return $.ajax({ 4905url: HappyProLocalize.ajax_url, 4906type: "POST", 4907dataType: "json", 4908data: buildAjaxData(page) 4909}); 4910} 4911function renderResultItem(result){ 4912var isMedia=result.post_type&&String(result.post_type).toLowerCase()==="media"||result.mime_type||result.media_url; 4913var displayTitle=isMedia ? result.media_name||result.media_url||result.title:result.title; 4914var linkUrl=isMedia&&result.media_url ? result.media_url:result.permalink; 4915var itemHtml=""; 4916if(isLayout2){ 4917var excerptText = !isMedia&&result.excerpt ? result.excerpt:""; 4918var iconHtml=result.image ? "<img src=\"".concat(result.image, "\" alt=\"").concat(displayTitle, "\" style=\"width: 100%; height: 100%; object-fit: cover; border-radius: 0.5rem;\" />"):"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"></circle><polyline points=\"21 15 16 10 5 21\"></polyline></svg>"; 4919itemHtml="\n\t\t\t\t<div class=\"ha_advanced_search_result_item ha_advanced_search_result-item\" data-url=\"".concat(linkUrl, "\" data-target=\"").concat(isMedia ? "_blank":"_self", "\">\n\t\t\t\t\t<div class=\"ha_advanced_search_result-img\">").concat(iconHtml, "</div>\n\t\t\t\t\t<div class=\"ha_advanced_search_result-info\">\n\t\t\t\t\t\t<h3>").concat(displayTitle, "</h3>\n\t\t\t\t\t\t").concat(excerptText ? "<p>".concat(excerptText, "</p>"):"", "\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t"); 4920}else if(isLayout3){ 4921itemHtml="\n\t\t\t\t<a href=\"".concat(linkUrl, "\" class=\"ha_advanced_search_result_item ha_advanced_search_result-item\" ").concat(isMedia ? 'target="_blank"':"", ">\n\t\t\t\t\t<h3 class=\"ha_advanced_search_result-title\">").concat(displayTitle, "</h3>\n\t\t\t\t</a>\n\t\t\t"); 4922}else if(isLayout4){ 4923var imageHtml=result.image ? "<img src=\"".concat(result.image, "\" alt=\"").concat(displayTitle, "\" />"):"<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"></circle><polyline points=\"21 15 16 10 5 21\"></polyline></svg>"; 4924itemHtml="\n\t\t\t\t<a href=\"".concat(linkUrl, "\" class=\"ha_advanced_search_search-panel-item ha_advanced_search_result_item\" ").concat(isMedia ? 'target="_blank"':"", ">\n\t\t\t\t\t<div class=\"ha_advanced_search_image-box\">").concat(imageHtml, "</div>\n\t\t\t\t\t<div class=\"ha_advanced_search_text-holder\">\n\t\t\t\t\t\t<strong class=\"ha_advanced_search_result-title\">").concat(displayTitle, "</strong>\n\t\t\t\t\t\t<span class=\"ha_advanced_search_result-subtitle\">").concat(isMedia ? "Media File":result.post_type||"", "</span>\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t"); 4925}else{ 4926itemHtml="\n\t\t\t\t<a href=\"".concat(linkUrl, "\" class=\"ha_advanced_search_result_item\" ").concat(isMedia ? 'target="_blank"':"", ">\n\t\t\t\t\t").concat(result.image ? "<div class=\"ha_advanced_search_result_icon_wrapper\"><img src=\"".concat(result.image, "\" alt=\"").concat(displayTitle, "\" style=\"width: 100%; height: 100%; object-fit: cover; border-radius: 0.5rem;\" /></div>"):"<div class=\"ha_advanced_search_result_icon_wrapper\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect><circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"></circle><polyline points=\"21 15 16 10 5 21\"></polyline></svg></div>", "\n\t\t\t\t\t<div class=\"ha_advanced_search_result_content\">\n\t\t\t\t\t\t<div class=\"ha_advanced_search_result_name\" title=\"").concat(displayTitle, "\">").concat(displayTitle, "</div>\n\t\t\t\t\t\t<div class=\"ha_advanced_search_result_category\">").concat(isMedia ? "Media File":result.post_type||"", "</div>\n\t\t\t\t\t\t").concat(!isMedia&&result.excerpt ? "<div class=\"ha_advanced_search_result_excerpt\">".concat(result.excerpt, "</div>"):"", "\n\t\t\t\t\t</div>\n\t\t\t\t</a>\n\t\t\t"); 4927} 4928$resultsList.append(itemHtml); 4929} 4930function onSearchSuccess(response){ 4931if(!response||!response.success) return; 4932var results=response.data&&response.data.results ? response.data.results:[]; 4933var pages=response.data&&typeof response.data.pages!=="undefined" ? response.data.pages:1; 4934totalPages=parseInt(pages, 10)||1; 4935currentPage=1; 4936isLoadingAll=false; 4937clearResultsList(); 4938if(results.length > 0){
4939results.forEach(function (result){ 4940renderResultItem(result); 4941}); 4942updateLayout4ResultCount(response.data.found); 4943showLayout3ResultsPanel(); 4944toggleLayout3ResultsHeading(true); 4945if(isLayout2&&$resultsFooter.length){ 4946$resultsFooter.appendTo($resultsContainer); 4947} 4948showResults(); 4949var $viewAllLink=$scope.find(".ha_advanced_search_view_all_link"); 4950if($viewAllLink.length){ 4951var searchUrl=new URL(window.location.href); 4952searchUrl.searchParams.set("s", searchTerm); 4953if(selectedPageId){ 4954searchUrl.searchParams.set("page_id", selectedPageId); 4955searchUrl.searchParams["delete"]("category"); 4956searchUrl.searchParams["delete"]("tag"); 4957}else{ 4958if(selectedCategory) searchUrl.searchParams.set("category", selectedCategory);else searchUrl.searchParams["delete"]("category"); 4959if(selectedTag) searchUrl.searchParams.set("tag", selectedTag);else searchUrl.searchParams["delete"]("tag"); 4960searchUrl.searchParams["delete"]("page_id"); 4961} 4962searchUrl.searchParams.set("date_mode", dateMode); 4963if(dateMode==="custom"){ 4964if(dateFromVal) searchUrl.searchParams.set("date_from", dateFromVal);else searchUrl.searchParams["delete"]("date_from"); 4965if(dateToVal) searchUrl.searchParams.set("date_to", dateToVal);else searchUrl.searchParams["delete"]("date_to"); 4966}else{ 4967searchUrl.searchParams["delete"]("date_from"); 4968searchUrl.searchParams["delete"]("date_to"); 4969} 4970$viewAllLink.attr("href", searchUrl.toString()); 4971} 4972updateViewAllVisibility(); 4973}else{ 4974if(isLayout2){ 4975$resultsFooter.before("<div class=\"ha_advanced_search_no_results\">".concat(settings.notFoundText, "</div>")); 4976}else{ 4977$resultsList.html("<div class=\"ha_advanced_search_no_results\">".concat(settings.notFoundText, "</div>")); 4978} 4979showLayout3ResultsPanel(); 4980toggleLayout3ResultsHeading(false); 4981updateLayout4ResultCount(0); 4982showResults(); 4983totalPages=1; 4984updateViewAllVisibility(); 4985}} 4986function onSearchError(xhr, status, error){ 4987console.error("Search error:", error); 4988$resultsList.html("<div class=\"ha_advanced_search_no_results\">".concat(HappyProLocalize.strings&&HappyProLocalize.strings.no_results ? HappyProLocalize.strings.no_results:"No results found", "</div>")); 4989showLayout3ResultsPanel(); 4990toggleLayout3ResultsHeading(false); 4991updateLayout4ResultCount(0); 4992totalPages=1; 4993updateViewAllVisibility(); 4994} 4995function onSearchComplete(){ 4996$button.prop("disabled", false); 4997if(document.activeElement!==$input.get(0)&&$input.is(":visible")){ 4998setTimeout(function (){ 4999var _$input$get2; 5000(_$input$get2=$input.get(0))===null||_$input$get2===void 0||_$input$get2.focus(); 5001var val=$input.val(); 5002if($input.get(0).setSelectionRange){ 5003$input.get(0).setSelectionRange(val.length, val.length); 5004}}, 50); 5005}} 5006function performSearch(){ 5007if(!searchTerm) return; 5008$button.prop("disabled", true); 5009$searchTermDisplay.text(searchTerm); 5010currentPage=1; 5011isLoadingAll=false; 5012fetchResults(currentPage).done(onSearchSuccess).fail(onSearchError).always(onSearchComplete); 5013trackKeyword(searchTerm); 5014} 5015function loadAllPages($link){ 5016if(!searchTerm){ 5017searchTerm=($input.val()||"").trim(); 5018} 5019if(!searchTerm&&$link&&$link.length){ 5020try { 5021var linkUrl=new URL($link.attr("href"), window.location.href); 5022searchTerm=(linkUrl.searchParams.get("s")||"").trim(); 5023} catch (err){}} 5024if(!searchTerm) return; 5025if(totalPages <=1) return; 5026if(isLoadingAll) return; 5027isLoadingAll=true; 5028if($link&&$link.length){ 5029$link.addClass("ha_advanced_search_is_loading").attr("aria-disabled", "true"); 5030} 5031var _loadNext=function loadNext(){ 5032var nextPage=currentPage + 1; 5033if(nextPage > totalPages){ 5034isLoadingAll=false; 5035if($link&&$link.length){ 5036$link.removeClass("ha_advanced_search_is_loading").removeAttr("aria-disabled"); 5037} 5038updateViewAllVisibility(); 5039return; 5040} 5041fetchResults(nextPage).done(function (response){ 5042if(response&&response.success&&response.data&&Array.isArray(response.data.results)){ 5043response.data.results.forEach(function (result){ 5044renderResultItem(result); 5045}); 5046if(isLayout4){ 5047updateLayout4ResultCount($resultsList.find(".ha_advanced_search_result_item").length); 5048} 5049if(typeof response.data.pages!=="undefined"){ 5050totalPages=parseInt(response.data.pages, 10)||totalPages; 5051}} 5052}).always(function (){ 5053currentPage=nextPage; 5054_loadNext(); 5055}); 5056}; 5057_loadNext(); 5058} 5059function setJustCleared(){ 5060justCleared=true; 5061if(justClearedTimer) clearTimeout(justClearedTimer); 5062justClearedTimer=setTimeout(function (){ 5063justCleared=false; 5064}, 300); 5065} 5066$input.on("input" + ns, function (e){ 5067searchTerm=$(e.currentTarget).val().trim(); 5068if(searchTerm.length > 0){ 5069if(isLayout4){ 5070$clearButtonL4.addClass("ha_advanced_search_visible is-visible").css("display", "flex"); 5071$('.ha_advanced_search_layout4_hidden_search_button').hide(); 5072}else{ 5073$clearButton.show(); 5074}}else{ 5075if(isLayout4){ 5076$clearButtonL4.removeClass("ha_advanced_search_visible is-visible").hide(); 5077$('.ha_advanced_search_layout4_hidden_search_button').show(); 5078updateLayout4ResultCount(0); 5079}else{ 5080$clearButton.hide(); 5081}} 5082if(searchTimeout) clearTimeout(searchTimeout); 5083if(isLayout4){ 5084$layout4InputHolder.toggleClass("has-value", searchTerm.length > 0); 5085} 5086searchTimeout=setTimeout(function (){ 5087if(searchTerm.length >=2) performSearch();else resetResultsUI(); 5088}, 300); 5089}); 5090$input.on("keypress" + ns, function (e){ 5091if(e.which===13){ 5092e.preventDefault(); 5093if(!isLayout3&&!isLayout4){ 5094$scope.find(".ha_advanced_search_search_button").first().trigger("click"); 5095return; 5096} 5097performSearch(); 5098}}); 5099if(isLayout3){ 5100$layout3Trigger.on("click" + ns, function (e){ 5101if(Date.now() - layout3ClosedAt < 250) return; 5102e.preventDefault(); 5103e.stopPropagation(); 5104openLayout3Search(); 5105console.log("trigger 3 clicked"); 5106}); 5107$layout3InitialInput.on("focus" + ns + " click" + ns, function (e){ 5108if(Date.now() - layout3ClosedAt < 250) return; 5109e.preventDefault(); 5110e.stopPropagation(); 5111openLayout3Search(); 5112}); 5113$layout3Close.on("click" + ns, function (e){ 5114e.preventDefault(); 5115e.stopPropagation(); 5116layout3ClosedAt=Date.now(); 5117closeLayout3Search(); 5118hideResults(); 5119if(document.activeElement) $(document.activeElement).trigger("blur"); 5120}); 5121$layout3Curtain.on("click" + ns, function (){ 5122layout3ClosedAt=Date.now(); 5123closeLayout3Search(); 5124hideResults(); 5125}); 5126$input.on("focus" + ns, function (){
5127if(Date.now() - layout3ClosedAt < 250) return; 5128openLayout3Search(); 5129}); 5130if(!searchTerm||searchTerm.length < 2){ 5131showLayout3Popular(); 5132} 5133$(document).on("keydown" + ns, function (e){ 5134if(e.key==="Escape"||e.keyCode===27){ 5135layout3ClosedAt=Date.now(); 5136closeLayout3Search(); 5137hideResults(); 5138hideDateRange(); 5139}}); 5140$categorySelect.off("pointerdown" + ns + " mousedown" + ns + " touchstart" + ns + " focus" + ns + " click" + ns).on("pointerdown" + ns + " mousedown" + ns + " touchstart" + ns + " focus" + ns + " click" + ns, function (e){ 5141suppressLayout3Close(1200); 5142e.stopPropagation(); 5143}); 5144$categorySelect.off("blur" + ns).on("blur" + ns, function (){ 5145suppressLayout3Close(250); 5146}); 5147$scope.find(".ha_advanced_search_search-category-container").off("pointerdown" + ns + " mousedown" + ns + " click" + ns).on("pointerdown" + ns + " mousedown" + ns + " click" + ns, function (e){ 5148suppressLayout3Close(1200); 5149e.stopPropagation(); 5150}); 5151} 5152if(isLayout4){ 5153$layout4Trigger.on("click" + ns, function (e){ 5154e.preventDefault(); 5155e.stopPropagation(); 5156openLayout4Search(); 5157}); 5158$layout4InitialInput.on("focus" + ns + " click" + ns, function (e){ 5159e.preventDefault(); 5160e.stopPropagation(); 5161openLayout4Search(); 5162}); 5163$layout4Close.on("click" + ns, function (e){ 5164e.preventDefault(); 5165e.stopPropagation(); 5166closeLayout4Search(); 5167hideResults(); 5168}); 5169$(document).on("keydown" + ns, function (e){ 5170if(e.key==="Escape"||e.keyCode===27){ 5171closeLayout4Search(); 5172hideResults(); 5173}}); 5174} 5175var clearEvt=window.PointerEvent ? "pointerdown":"mousedown touchstart"; 5176var clearEvtNs=clearEvt.split(" ").map(function (ev){ 5177return ev + ns; 5178}).join(" "); 5179function handleClearButton($btn){ 5180var isLayout4=arguments.length > 1&&arguments[1]!==undefined ? arguments[1]:false; 5181$btn.off(clearEvtNs).on(clearEvtNs, function (e){ 5182e.preventDefault(); 5183e.stopPropagation(); 5184e.stopImmediatePropagation(); 5185setJustCleared(); 5186$input.val(""); 5187searchTerm=""; 5188currentPage=1; 5189totalPages=1; 5190isLoadingAll=false; 5191selectedCategory=""; 5192selectedTag=""; 5193selectedPageId=""; 5194if($categorySelect.length) $categorySelect.val("all"); 5195if($tagSelect&&$tagSelect.length) $tagSelect.val("all"); 5196dateMode="all"; 5197dateFromVal=""; 5198dateToVal=""; 5199if($dateSelect.length) $dateSelect.val("all"); 5200hideDateRange(); 5201if($dateFrom.length) $dateFrom.val(""); 5202if($dateTo.length) $dateTo.val(""); 5203resetResultsUI(); 5204if(isLayout4){ 5205$btn.removeClass("ha_advanced_search_visible is-visible").hide(); 5206updateLayout4ResultCount(0); 5207}else{ 5208$btn.hide(); 5209}}); 5210} 5211handleClearButton($clearButton, false); 5212handleClearButton($clearButtonL4, true); 5213$categorySelect.on("change" + ns, function (e){ 5214var val=$(e.currentTarget).val()||"all"; 5215selectedCategory=""; 5216selectedPageId=""; 5217if(val==="all"){ 5218}else if(val.indexOf("cat:")===0){ 5219selectedCategory=val.replace("cat:", ""); 5220}else if(val.indexOf("page:")===0){ 5221selectedPageId=val.replace("page:", ""); 5222if(!pageHasTags){ 5223selectedTag=""; 5224if($tagSelect.length) $tagSelect.val("all"); 5225}} 5226searchIfReady(); 5227}); 5228$tagSelect.on("change" + ns, function (){ 5229var val=$(this).val()||"all"; 5230selectedTag=val!=="all" ? val:""; 5231searchIfReady(); 5232}); 5233$popularKeywords.on("click" + ns, function (e){ 5234e.preventDefault(); 5235var keyword=$(e.currentTarget).attr("data-keyword")||$(e.currentTarget).text().trim(); 5236if(!keyword) return; 5237$input.val(keyword); 5238searchTerm=keyword; 5239$clearButton.show(); 5240searchIfReady(); 5241}); 5242$input.on("focusin" + ns, function (){ 5243if(isLayout3) return; 5244if(justCleared) return; 5245if($dateRangeWrap.length&&$dateRangeWrap.is(":visible")) return; 5246if(searchTerm&&searchTerm.length >=2&&$resultsList.children().length > 0){ 5247showResults(); 5248}}); 5249$scope.on("click" + ns, ".ha_advanced_search_view_all_link", function (e){ 5250if(e.ctrlKey||e.metaKey||e.shiftKey||e.altKey) return; 5251e.preventDefault(); 5252console.log("View all clicked - loading all pages"); 5253loadAllPages($(this)); 5254}); 5255if(isLayout2){ 5256$resultsContainer.on("click" + ns, ".ha_advanced_search_result-item", function (){ 5257var url=$(this).attr("data-url"); 5258var target=$(this).attr("data-target")||"_self"; 5259if(!url) return; 5260if(target==="_blank") window.open(url, "_blank");else window.location.href=url; 5261}); 5262} 5263function isCustomDateReady(){ 5264return dateMode!=="custom"||dateFromVal&&dateToVal; 5265} 5266if(showDateFilter){ 5267$dateSelect.off("change" + ns).on("change" + ns, function (){ 5268dateMode=$(this).val()||"all";
5269hideResults(); 5270if(dateMode==="custom"){ 5271dateFromVal=""; 5272dateToVal=""; 5273if($dateFrom.length) $dateFrom.val(""); 5274if($dateTo.length) $dateTo.val(""); 5275showDateRange(); 5276return; 5277} 5278hideDateRange(); 5279dateFromVal=""; 5280dateToVal=""; 5281if($dateFrom.length) $dateFrom.val(""); 5282if($dateTo.length) $dateTo.val(""); 5283searchIfReady(); 5284}); 5285$dateFrom.off("change" + ns).on("change" + ns, function (){ 5286dateFromVal=$(this).val()||""; 5287if(dateMode==="custom"){ 5288hideResults(); 5289if(isCustomDateReady()){ 5290hideDateRange(); 5291searchIfReady(); 5292} 5293return; 5294} 5295searchIfReady(); 5296}); 5297$dateTo.off("change" + ns).on("change" + ns, function (){ 5298dateToVal=$(this).val()||""; 5299if(dateMode==="custom"){ 5300hideResults(); 5301if(isCustomDateReady()){ 5302hideDateRange(); 5303searchIfReady(); 5304} 5305return; 5306} 5307searchIfReady(); 5308}); 5309$dateSelect.off("click" + ns + " focus" + ns).on("click" + ns + " focus" + ns, function (e){ 5310e.stopPropagation(); 5311var v=$(this).val()||"all"; 5312if(v==="custom") showDateRange(); 5313}); 5314$dateRangeWrap.on("click" + ns, function (e){ 5315e.stopPropagation(); 5316}); 5317$dateSelect.on("click" + ns, function (e){ 5318e.stopPropagation(); 5319}); 5320} 5321$(document).off("pointerdown" + ns + ".dateRange").on("pointerdown" + ns + ".dateRange", function (e){ 5322var $t=$(e.target); 5323var insideDateUi=$t.closest("#" + widgetId).length&&($t.closest($dateRangeWrap).length||$t.closest($dateSelect).length||$t.closest(".ha_advanced_search_date_input_wrap").length||$t.closest(".ha_advanced_search_date_icon").length||$t.is(".ha_advanced_search_date_from, .ha_advanced_search_date_to")); 5324var insideWidget=$t.closest("#" + widgetId).length; 5325if(insideWidget&&!insideDateUi&&$dateRangeWrap.is(":visible")){ 5326hideDateRange(); 5327}}); 5328$(document).on("click" + ns, function (e){ 5329var $t=$(e.target); 5330if(isLayout3){ 5331if($t.closest("#" + widgetId + " .ha_advanced_search_search-container").length||$t.closest("#" + widgetId + " .ha_advanced_search_results_container").length||$t.closest("#" + widgetId + " .ha_advanced_search_results_footer").length||$t.closest("#" + widgetId + " .ha_advanced_search_search-category-container").length||$t.is(".ha_advanced_search_category_select, .ha_advanced_search_search-category-select")||$categorySelect.length&&document.activeElement===$categorySelect[0]){ 5332return; 5333} 5334if(!$t.closest("#" + widgetId).length){ 5335layout3ClosedAt=Date.now(); 5336closeLayout3Search(); 5337hideResults(); 5338hideDateRange(); 5339} 5340return; 5341} 5342if(!$t.closest("#" + widgetId).length){ 5343if(isLayout4){ 5344closeLayout4Search(); 5345} 5346hideResults(); 5347hideDateRange(); 5348}}); 5349$dateFrom.on("pointerdown" + ns, function (){ 5350if(this.showPicker){ 5351try { 5352this.showPicker(); 5353} catch (e){}} 5354}); 5355$dateTo.on("pointerdown" + ns, function (){ 5356if(this.showPicker){ 5357try { 5358this.showPicker(); 5359} catch (e){}} 5360}); 5361$dateIcons.on("pointerdown" + ns, function (e){ 5362e.preventDefault(); 5363e.stopPropagation(); 5364var $inp=$(this).siblings("input")[0]; 5365if(!$inp) return; 5366$inp.focus(); 5367if($inp.showPicker){ 5368try { 5369$inp.showPicker(); 5370} catch (err){}}else{ 5371$inp.click(); 5372}}); 5373$(document).off("click" + ns, "#" + widgetId + " .ha_advanced_search_search_button").on("click" + ns, "#" + widgetId + " .ha_advanced_search_search_button", function (e){ 5374e.preventDefault(); 5375var $widget=$(this).closest(".ha-advanced-search-advanced-search-wrap"); 5376var s=($widget.find(".ha_advanced_search_search_input").val()||"").trim(); 5377var emptySearchText=$widget.data("empty-search-text")||"Please enter a search term"; 5378if(!s){ 5379$widget.find(".ha_advanced_search_search_input").focus().addClass("ha_advanced_search_input_error"); 5380showButtonTooltip($widget.find(".ha_advanced_search_search_button"), emptySearchText); 5381return; 5382} 5383var rawCategory=$widget.find(".ha_advanced_search_category_select").val()||"all"; 5384var pageId=""; 5385if(rawCategory.indexOf("page:")===0){ 5386pageId=rawCategory.replace("page:", ""); 5387} 5388var date_mode=$widget.find(".ha_advanced_search_date_select").val()||"all"; 5389var date_from=""; 5390var date_to=""; 5391if(date_mode==="custom"){ 5392date_from=$widget.find(".ha_advanced_search_date_from").val()||""; 5393date_to=$widget.find(".ha_advanced_search_date_to").val()||""; 5394} 5395var post_types=$widget.data("post-types")||["post", "page"]; 5396if(!Array.isArray(post_types)){ 5397try { 5398post_types=JSON.parse(post_types); 5399} catch (err){ 5400post_types=["post", "page"]; 5401}} 5402var initialResultsCount=parseInt($widget.data("initial-results-count"), 10)||6; 5403var params=[]; 5404params.push("s=" + encodeURIComponent(s)); 5405params.push("advs=" + encodeURIComponent(s)); 5406params.push("post_type=" + post_types.map(function (pt){ 5407return encodeURIComponent(pt); 5408}).join(",")); 5409params.push("initial_results_count=" + encodeURIComponent(initialResultsCount)); 5410params.push("per_page=" + encodeURIComponent(initialResultsCount)); 5411if(rawCategory&&rawCategory!=="all"){ 5412params.push("category=" + encodeURIComponent(rawCategory)); 5413} 5414if(pageId){ 5415params.push("page_id=" + encodeURIComponent(pageId)); 5416} 5417if(date_mode){ 5418params.push("date_mode=" + encodeURIComponent(date_mode)); 5419} 5420if(date_from){ 5421params.push("date_from=" + encodeURIComponent(date_from)); 5422} 5423if(date_to){ 5424params.push("date_to=" + encodeURIComponent(date_to)); 5425} 5426var siteBase="/"; 5427if(typeof HappyProLocalize!=="undefined"&&HappyProLocalize.ajax_url){ 5428siteBase=HappyProLocalize.ajax_url.replace(/\/wp-admin\/admin-ajax\.php.*$/, "/"); 5429} 5430var url=siteBase + "?" + params.join("&"); 5431window.open(url, "_blank"); 5432}); 5433function showButtonTooltip($button, text){ 5434$button.find(".ha_advanced_search_btn_tooltip").remove(); 5435var tooltip=$('<span class="ha_advanced_search_btn_tooltip">
5435' + text + "</span>"); 5436$button.append(tooltip); 5437setTimeout(function (){ 5438tooltip.addClass("ha_advanced_search_show_tooltip"); 5439}, 10); 5440setTimeout(function (){ 5441tooltip.removeClass("ha_advanced_search_show_tooltip"); 5442setTimeout(function (){ 5443tooltip.remove(); 5444}, 200); 5445}, 2500); 5446}}; 5447elementorFrontend.hooks.addAction("frontend/element_ready/ha-advanced-search.default", AdvancedSearchWidget); 5448}); 5449})(jQuery, Happy, window);
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.