1;(function($) { 2 'use strict'; 3 $(window).on( 'elementor/frontend/init', function() { 4 5 6 var GlobalJSLoad = function() { 7 8 /*----------- 07. Global Slider ----------*/ 9 $(".th-carousel").each(function () { 10 var themeSlide = $(this); 11 12 // Collect Data 13 function d(data) { 14 return themeSlide.data(data); 15 } 16 17 // Custom Arrow Button 18 var prevButton = 19 '<button type="button" class="slick-prev"><i class="' + 20 d("prev-arrow") + 21 '"></i></button>', 22 nextButton = 23 '<button type="button" class="slick-next"><i class="' + 24 d("next-arrow") + 25 '"></i></button>'; 26 27 // Function For Custom Arrow Btn 28 $("[data-slick-next]").each(function () { 29 $(this).on("click", function (e) { 30 e.preventDefault(); 31 $($(this).data("slick-next")).slick("slickNext"); 32 }); 33 }); 34 35 $("[data-slick-prev]").each(function () { 36 $(this).on("click", function (e) { 37 e.preventDefault(); 38 $($(this).data("slick-prev")).slick("slickPrev"); 39 }); 40 }); 41 42 // Check for arrow wrapper 43 if (d("arrows") == true) { 44 if (!themeSlide.closest(".arrow-wrap").length) { 45 themeSlide.closest(".container").parent().addClass("arrow-wrap"); 46 } 47 } 48 49 themeSlide.not('.slick-initialized').slick({ 50 dots: d("dots") ? true : false, 51 fade: d("fade") ? true : false, 52 arrows: d("arrows") ? true : false, 53 speed: d("speed") ? d("speed") : 1000, 54 asNavFor: d("asnavfor") ? d("asnavfor") : false, 55 autoplay: d("autoplay") == false ? false : true, 56 infinite: d("infinite") == false ? false : true, 57 slidesToShow: d("slide-show") ? d("slide-show") : 1, 58 adaptiveHeight: d("adaptive-height") ? true : false, 59 centerMode: d("center-mode") ? true : false, 60 autoplaySpeed: d("autoplay-speed") ? d("autoplay-speed") : 8000, 61 centerPadding: d("center-padding") ? d("center-padding") : "0", 62 focusOnSelect: d("focuson-select") == false ? false : true, 63 pauseOnFocus: d("pauseon-focus") ? true : false, 64 pauseOnHover: d("pauseon-hover") ? true : false, 65 variableWidth: d("variable-width") ? true : false, 66 vertical: d("vertical") ? true : false, 67 verticalSwiping: d("vertical") ? true : false, 68 swipeToSlide: (d('swipetoslide') ? true : false), 69 prevArrow: d("prev-arrow") 70 ? prevButton 71 : '<button type="button" class="slick-prev"><i class="far fa-arrow-left"></i></button>', 72 nextArrow: d("next-arrow") 73 ? nextButton 74 : '<button type="button" class="slick-next"><i class="far fa-arrow-right"></i></button>', 75 rtl: $("html").attr("dir") == "rtl" ? true : false, 76 responsive: [ 77 { 78 breakpoint: 1600, 79 settings: { 80 arrows: d("xl-arrows") ? true : false, 81 dots: d("xl-dots") ? true : false, 82 slidesToShow: d("xl-slide-show") 83 ? d("xl-slide-show") 84 : d("slide-show"), 85 centerMode: d("xl-center-mode") ? true : false, 86 centerPadding: "0", 87 }, 88 }, 89 { 90 breakpoint: 1400, 91 settings: { 92 arrows: d("ml-arrows") ? true : false, 93 dots: d("ml-dots") ? true : false, 94 slidesToShow: d("ml-slide-show") 95 ? d("ml-slide-show") 96 : d("slide-show"), 97 centerMode: d("ml-center-mode") ? true : false, 98 centerPadding: 0, 99 }, 100 }, 101 { 102 breakpoint: 1200, 103 settings: { 104 arrows: d("lg-arrows") ? true : false, 105 dots: d("lg-dots") ? true : false, 106 slidesToShow: d("lg-slide-show") 107 ? d("lg-slide-show") 108 : d("slide-show"), 109 centerMode: d("lg-center-mode") 110 ? d("lg-center-mode") 111 : false, 112 centerPadding: 0, 113 }, 114 }, 115 { 116 breakpoint: 992, 117 settings: { 118 arrows: d("md-arrows") ? true : false, 119 dots: d("md-dots") ? true : false, 120 slidesToShow: d("md-slide-show") 121 ? d("md-slide-show") 122 : 1, 123 centerMode: d("md-center-mode") 124 ? d("md-center-mode") 125 : false, 126 centerPadding: 0, 127 }, 128 }, 129 { 130 breakpoint: 768, 131 settings: { 132 arrows: d("sm-arrows") ? true : false, 133 dots: d("sm-dots") ? true : false, 134 slidesToShow: d("sm-slide-show") 135 ? d("sm-slide-show") 136 : 1, 137 centerMode: d("sm-center-mode") 138 ? d("sm-center-mode") 139 : false, 140 centerPadding: 0, 141 }, 142 }, 143 { 144 breakpoint: 576, 145 settings: { 146 arrows: d("xs-arrows") ? true : false, 147 dots: d("xs-dots") ? true : false, 148 slidesToShow: d("xs-slide-show") 149 ? d("xs-slide-show") 150 : 1, 151 centerMode: d("xs-center-mode") 152 ? d("xs-center-mode") 153 : false, 154 centerPadding: 0, 155 }, 156 }, 157 // You can unslick at a given breakpoint now by adding: 158 // settings: "unslick" 159 // instead of a settings object 160 ], 161 }); 162 }); 163 164 $.fn.thTab = function (options) { 165 var opt = $.extend( 166 { 167 sliderTab: false, 168 tabButton: "button", 169 }, 170 options 171 ); 172 173 $(this).each(function () { 174 var $menu = $(this); 175 var $button = $menu.find(opt.tabButton); 176 177 // Append indicator 178 $menu.append('<span class="indicator"></span>');
179 var $line = $menu.find(".indicator"); 180 181 // On Click Button Class Remove and indecator postion set 182 $button.on("click", function (e) { 183 e.preventDefault(); 184 var cBtn = $(this); 185 cBtn.addClass("active").siblings().removeClass("active"); 186 if (opt.sliderTab) { 187 $(slider).slick("slickGoTo", cBtn.data("slide-go-to")); 188 } else { 189 linePos(); 190 } 191 }); 192 193 // Work With slider 194 if (opt.sliderTab) { 195 var slider = $menu.data("asnavfor"); // select slider 196 197 // Select All button and set attribute 198 var i = 0; 199 $button.each(function () { 200 var slideBtn = $(this); 201 slideBtn.attr("data-slide-go-to", i); 202 i++; 203 204 // Active Slide On load > Actived Button 205 if (slideBtn.hasClass("active")) { 206 $(slider).slick( 207 "slickGoTo", 208 slideBtn.data("slide-go-to") 209 ); 210 } 211 212 // Change Indicator On slide Change 213 $(slider).on( 214 "beforeChange", 215 function (event, slick, currentSlide, nextSlide) { 216 $menu 217 .find( 218 opt.tabButton + 219 '[data-slide-go-to="' + 220 nextSlide + 221 '"]' 222 ) 223 .addClass("active") 224 .siblings() 225 .removeClass("active"); 226 linePos(); 227 } 228 ); 229 }); 230 } 231 232 // Indicator Position 233 function linePos() { 234 var $btnActive = $menu.find(opt.tabButton + ".active"), 235 $height = $btnActive.css("height"), 236 $width = $btnActive.css("width"), 237 $top = $btnActive.position().top + "px", 238 $left = $btnActive.position().left + "px"; 239 240 $line.get(0).style.setProperty("--height-set", $height); 241 $line.get(0).style.setProperty("--width-set", $width); 242 $line.get(0).style.setProperty("--pos-y", $top); 243 $line.get(0).style.setProperty("--pos-x", $left); 244 245 if ( 246 $($button).first().position().left == 247 $btnActive.position().left 248 ) { 249 $line 250 .addClass("start") 251 .removeClass("center") 252 .removeClass("end"); 253 } else if ( 254 $($button).last().position().left == 255 $btnActive.position().left 256 ) { 257 $line 258 .addClass("end") 259 .removeClass("center") 260 .removeClass("start"); 261 } else { 262 $line 263 .addClass("center") 264 .removeClass("start") 265 .removeClass("end"); 266 } 267 } 268 linePos(); 269 }); 270 }; 271 272 if ($(".hero-slider-indicator").length) { 273 $(".hero-slider-indicator").thTab({ 274 sliderTab: true, 275 tabButton: ".indicator-btn", 276 }); 277 } 278 279 if ($(".testi-thumb6-indicator").length) { 280 $(".testi-thumb6-indicator").thTab({ 281 sliderTab: true, 282 tabButton: ".testi-indicator-btn", 283 }); 284 } 285 286 if ($("[data-bg-src]").length > 0) { 287 $("[data-bg-src]").each(function () { 288 var src = $(this).attr("data-bg-src"); 289 $(this).css("background-image", "url(" + src + ")"); 290 $(this).removeAttr("data-bg-src").addClass("background-image"); 291 }); 292 } 293 294 if ($('[data-bg-color]').length > 0) { 295 $('[data-bg-color]').each(function () { 296 var color = $(this).attr('data-bg-color'); 297 $(this).css('background-color', color); 298 $(this).removeAttr('data-bg-color'); 299 }); 300 }; 301 302 if ($('[data-mask-src]').length > 0) { 303 $('[data-mask-src]').each(function () { 304 var mask = $(this).attr('data-mask-src'); 305 $(this).css({ 306 'mask-image': 'url(' + mask + ')',
307 '-webkit-mask-image': 'url(' + mask + ')' 308 }); 309 $(this).addClass('bg-mask'); 310 $(this).removeAttr('data-mask-src'); 311 }); 312 }; 313 314 315 /*----------- 08. Custom Animaiton For Slider ----------*/ 316 $('[data-ani-duration]').each(function () { 317 var durationTime = $(this).data('ani-duration'); 318 $(this).css('animation-duration', durationTime); 319 }); 320 321 $('[data-ani-delay]').each(function () { 322 var delayTime = $(this).data('ani-delay'); 323 $(this).css('animation-delay', delayTime); 324 }); 325 326 $('[data-ani]').each(function () { 327 var animaionName = $(this).data('ani'); 328 $(this).addClass(animaionName); 329 $('.slick-current [data-ani]').addClass('th-animated'); 330 }); 331 332 $('.th-carousel').on('afterChange', function (event, slick, currentSlide, nextSlide) { 333 $(slick.$slides).find('[data-ani]').removeClass('th-animated'); 334 $(slick.$slides[currentSlide]).find('[data-ani]').addClass('th-animated'); 335 }); 336 337 338 $.fn.shapeMockup = function () { 339 var $shape = $(this); 340 $shape.each(function() { 341 var $currentShape = $(this), 342 shapeTop = $currentShape.data('top'), 343 shapeRight = $currentShape.data('right'), 344 shapeBottom = $currentShape.data('bottom'), 345 shapeLeft = $currentShape.data('left'); 346 $currentShape.css({ 347 top: shapeTop, 348 right: shapeRight, 349 bottom: shapeBottom, 350 left: shapeLeft, 351 }).removeAttr('data-top') 352 .removeAttr('data-right') 353 .removeAttr('data-bottom') 354 .removeAttr('data-left') 355 .closest('.elementor-widget , .elementor-widget-wrap, .elementor-widget-container').css('position', 'static') 356 .closest('section').addClass('shape-mockup-wrap'); 357 }); 358 }; 359 360 if ($('.shape-mockup')) { 361 $('.shape-mockup').shapeMockup(); 362 } 363 364 365 $('.progress-bar').waypoint(function() { 366 $('.progress-bar').css({ 367 animation: "animate-positive 1.8s", 368 opacity: "1" 369 }); 370 }, { offset: '75%' }); 371 372 /************lettering js***********/ 373 function injector(t, splitter, klass, after) { 374 var a = t.text().split(splitter), inject = ''; 375 if (a.length) { 376 $(a).each(function(i, item) { 377 inject += '<span class="'+klass+(i+1)+'">'+item+'</span>'+after; 378 }); 379 t.empty().append(inject); 380 } 381 } 382 383 var methods = { 384 init : function() { 385 386 return this.each(function() { 387 injector($(this), '', 'char', ''); 388 }); 389 390 }, 391 392 words : function() { 393 394 return this.each(function() { 395 injector($(this), ' ', 'word', ' '); 396 }); 397 398 }, 399 400 lines : function() { 401 402 return this.each(function() { 403 var r = "eefec303079ad17405c889e092e105b0"; 404 // Because it's hard to split a <br/> tag consistently across browsers, 405 // (*ahem* IE *ahem*), we replaces all <br/> instances with an md5 hash 406 // (of the word "split"). If you're trying to use this plugin on that 407 // md5 hash string, it will fail because you're being ridiculous. 408 injector($(this).children("br").replaceWith(r).end(), r, 'line', ''); 409 }); 410 411 } 412 }; 413 414 $.fn.lettering = function( method ) { 415 // Method calling logic 416 if ( method && methods[method] ) { 417 return methods[ method ].apply( this, [].slice.call( arguments, 1 )); 418 } else if ( method === 'letters' || ! method ) { 419 return methods.init.apply( this, [].slice.call( arguments, 0 ) ); // always pass an array 420 } 421 $.error( 'Method ' + method + ' does not exist on jQuery.lettering' ); 422 return this; 423 }; 424 425 $(".about-title-anime").lettering(); 426 427 428 /*----------- 14. Filter ----------*/ 429 430 $(".filter-active").imagesLoaded(function () { 431 var $filter = ".filter-active", 432 $filterItem = ".filter-item",
433 $filterMenu = ".filter-menu-active"; 434 435 if ($($filter).length > 0) { 436 var $grid = $($filter).isotope({ 437 itemSelector: $filterItem, 438 filter: "*", 439 masonry: { 440 // use outer width of grid-sizer for columnWidth 441 columnWidth: 1, 442 }, 443 }); 444 445 // filter items on button click 446 $($filterMenu).on("click", "button", function () { 447 var filterValue = $(this).attr("data-filter"); 448 $grid.isotope({ 449 filter: filterValue, 450 }); 451 }); 452 453 // Menu Active Class 454 $($filterMenu).on("click", "button", function (event) { 455 event.preventDefault(); 456 $(this).addClass("active"); 457 $(this).siblings(".active").removeClass("active"); 458 }); 459 } 460 }); 461 462 $(".masonary-active").imagesLoaded(function () { 463 var $filter = ".masonary-active", 464 $filterItem = ".filter-item"; 465 466 if ($($filter).length > 0) { 467 $($filter).isotope({ 468 itemSelector: $filterItem, 469 filter: "*", 470 masonry: { 471 // use outer width of grid-sizer for columnWidth 472 columnWidth: 1, 473 }, 474 }); 475 } 476 }); 477 478 479 480 481 482 483 484 }; 485 486 elementorFrontend.hooks.addAction('frontend/element_ready/global', GlobalJSLoad); 487 488 489 490 491 492 493 494 }); 495}(jQuery));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.