1/* 2 Theme Name: Graptor 3 Theme URI: https://psdtowpwork.com/html/graptor/ 4 Author: nsstheme 5 Author URI: https://themeforest.net/user/nsstheme 6 Description: Graptor - Technology & IT Solutions HTML5 Responsive Template 7 Version: 1.0 8 License: 9 License URI: 10 */ 11 12/*======================================================================= 13 [Table of contents] 14 ========================================================================= 15 1. All Slider 16 2. Popup 17 3. Search Toggle 18 4. Widget Toggle 19 5. Skills 20 6. Funfact 21 7. Back To Top 22 8. Preloader 23 9. Mobile Menu 24 10. Fixed Header 25 11. Contact Form Submission 26 12. Suffle Filter 27 13. Image Transform 28 14. One Page Nav 29 */ 30 31(function ($) { 32 'use strict'; 33 34 35 /*-------------------------------------------------------- 36 / 1. All Slider 37 /----------------------------------------------------------*/ 38 /*--- Hero Silder 01 ---*/ 39 $(window).on('elementor/frontend/init', function() { 40 elementorFrontend.hooks.addAction('frontend/element_ready/nss-hero-slider.default', function($scope, $) { 41 var $wrap = $scope.find('.hero-section'); 42 var $hero_slider1 = $scope.find('.hero-slider-01'); 43 var $hero_slider2 = $scope.find('.hero-slider-02'); 44 45 var autoplay = ($wrap.attr('data-autoplay') == 1 ) ? true : false; 46 var loop = ($wrap.attr('data-loop') == 1 ) ? true : false; 47 var navs = ($wrap.attr('data-nav') == 1 ) ? true : false; 48 var dots = ($wrap.attr('data-dots') == 1 ) ? true : false; 49 50 $hero_slider1.owlCarousel({ 51 autoplay: autoplay, 52 loop: loop, 53 margin: 0, 54 animateOut: 'fadeOut', 55 navText: ['<i class="nss-angle-left2"></i>', '<i class="nss-angle-right2"></i>'], 56 nav: navs, 57 autoplayTimeout: 7000, 58 dots: dots, 59 items: 1 60 }); 61 $hero_slider2.owlCarousel({ 62 autoplay: autoplay, 63 loop: loop, 64 margin: 0, 65 animateOut: 'fadeOut', 66 navText: ['<i class="nss-angle-left2"></i>', '<i class="nss-angle-right2"></i>'], 67 nav: navs, 68 autoplayTimeout: 6000, 69 mouseDrag: false, 70 dots: dots, 71 items: 1 72 }); 73 $('[data-bg-image]').each(function() { 74 var $this = $(this), 75 $image = $this.data('bg-image'); 76 $this.css('background-image', 'url(' + $image + ')'); 77 }); 78 }); 79 }); 80 81 $('[data-bg-image]').each(function() { 82 var $this = $(this), 83 $image = $this.data('bg-image'); 84 $this.css('background-image', 'url(' + $image + ')'); 85 }); 86 87 /*--- Client Silder ---*/ 88 $(window).on('elementor/frontend/init', function() { 89 elementorFrontend.hooks.addAction('frontend/element_ready/nss-brand-logo.default', function($scope, $) { 90 var $wrap = $scope.find('.clslider_wrap'); 91 var $slide = $scope.find('.client-slider'); 92 93 var autoplay = ($wrap.attr('data-autoplay') == 1 ) ? true : false; 94 var loop = ($wrap.attr('data-loop') == 1 ) ? true : false; 95 var nav = ($wrap.attr('data-nav') == 1 ) ? true : false; 96 var dots = ($wrap.attr('data-dots') == 1 ) ? true : false; 97 var gapping = ($wrap.attr('data-gapping')*1 > 0 ) ? $wrap.attr('data-gapping')*1 : 0; 98 99 if($slide.length > 0){ 100 $slide.owlCarousel({ 101 autoplay: autoplay, 102 loop: loop, 103 margin: gapping, 104 nav: nav, 105 navText: ['<i class="nss-arrow-left1"></i>', '<i class="nss-arrow-right1"></i>'], 106 dots: dots, 107 items: 4, 108 smartSpeed: 800, 109 responsiveClass:true, 110 responsive: { 111 0: { 112 items: 1 113 }, 114 600: { 115 items: 2 116 }, 117 768: { 118 items: 3 119 }, 120 1023: { 121 items: 4 122 }, 123 } 124 }); 125 } 126 }); 127 });
128 129 /*--- Testimonial Silder ---*/ 130 $(window).on('elementor/frontend/init', function() { 131 elementorFrontend.hooks.addAction('frontend/element_ready/nss-testimonial.default', function($scope, $) { 132 var $wrap = $scope.find('.testi_wrap'); 133 var testiSlider = $scope.find('.testimonial-slider'); 134 var testiSliders = $scope.find('.testimonial-slider-two'); 135 136 var autoplay = ($wrap.attr('data-autoplay') == 1 ) ? true : false; 137 var loop = ($wrap.attr('data-loop') == 1 ) ? true : false; 138 var nav = ($wrap.attr('data-nav') == 1 ) ? true : false; 139 var dots = ($wrap.attr('data-dots') == 1 ) ? true : false; 140 141 testiSlider.owlCarousel({ 142 loop: loop, 143 margin: 30, 144 autoplay: autoplay, 145 responsiveClass: true, 146 smartSpeed: 600, 147 nav: nav, 148 navText: ['<i class="nss-arrow-left1"></i>', '<i class="nss-arrow-right1"></i>'], 149 dots: dots, 150 items: 3, 151 responsive: { 152 0: { 153 items: 1 154 }, 155 768: { 156 items: 2 157 }, 158 992: { 159 items: 3 160 } 161 } 162 }); 163 testiSliders.owlCarousel({ 164 loop: loop, 165 margin: 30, 166 autoplay: autoplay, 167 responsiveClass: true, 168 smartSpeed: 600, 169 nav: nav, 170 navText: ['<i class="nss-arrow-left1"></i>', '<i class="nss-arrow-right1"></i>'], 171 dots: dots, 172 items: 2, 173 responsive: { 174 0: { 175 items: 1 176 }, 177 992: { 178 items: 2 179 } 180 } 181 }); 182 }); 183 }); 184 185 /*--- Folio Silder ---*/ 186 $(window).on('elementor/frontend/init', function() { 187 elementorFrontend.hooks.addAction('frontend/element_ready/nss-portfolio-slider.default', function($scope, $) { 188 var $wrap = $scope.find('.folio_slider_wrap'); 189 var folioSlider = $scope.find('.folio-slider'); 190 191 var autoplay = ($wrap.attr('data-autoplay') == 1 ) ? true : false; 192 var loop = ($wrap.attr('data-loop') == 1 ) ? true : false; 193 var nav = ($wrap.attr('data-nav') == 1 ) ? true : false; 194 var dots = ($wrap.attr('data-dots') == 1 ) ? true : false; 195 196 folioSlider.owlCarousel({ 197 loop: loop, 198 margin: 30, 199 autoplay: autoplay, 200 responsiveClass: true, 201 smartSpeed: 700, 202 animateIn: 'slideInLeft', 203 animateOut: 'slideOutRight', 204 nav: nav, 205 navText: ['<i class="nss-arrow-left1"></i>', '<i class="nss-arrow-right1"></i>'], 206 items: 4, 207 dots: dots, 208 responsive: { 209 0: { 210 items: 1 211 }, 212 760: { 213 items: 2 214 }, 215 1023: { 216 items: 3 217 }, 218 1600: { 219 items: 4 220 }, 221 } 222 }); 223 }); 224 }); 225 226 /*--- Service Silder ---*/ 227 $( window ).on( 'elementor/frontend/init', function() { 228 elementorFrontend.hooks.addAction( 'frontend/element_ready/nss-service.default', function($scope, $){ 229 var service_slider = $scope.find( '.service-slider' ); 230 if ( ! service_slider.length ) { 231 return; 232 } 233 service_slider.owlCarousel({ 234 loop: false, 235 margin: 30, 236 autoplay: true, 237 responsiveClass: true, 238 dots: false, 239 smartSpeed: 700, 240 animateIn: 'slideInLeft', 241 animateOut: 'slideOutRight', 242 nav: false, 243 items: 4, 244 responsive: { 245 0: { 246 items: 1 247 }, 248 991: { 249 items: 2 250 }, 251 1300: { 252 items: 3 253 }, 254 1600: { 255 items: 4 256 }, 257 } 258 }); 259 }); 260 });
261 262 /*--- Service Silder ---*/ 263 $(window).on('elementor/frontend/init', function() { 264 elementorFrontend.hooks.addAction('frontend/element_ready/nss-team.default', function($scope, $) { 265 var $wrap = $scope.find('.team_slider_wrap'); 266 var teamSlider = $scope.find('.team-slider'); 267 268 var autoplay = ($wrap.attr('data-autoplay') == 1 ) ? true : false; 269 var loop = ($wrap.attr('data-loop') == 1 ) ? true : false; 270 var nav = ($wrap.attr('data-nav') == 1 ) ? true : false; 271 var dots = ($wrap.attr('data-dots') == 1 ) ? true : false; 272 273 teamSlider.owlCarousel({ 274 loop: loop, 275 margin: 25, 276 autoplay: autoplay, 277 responsiveClass: true, 278 smartSpeed: 700, 279 animateIn: 'slideInLeft', 280 animateOut: 'slideOutRight', 281 nav: nav, 282 navText: ['<i class="nss-arrow-left1"></i>', '<i class="nss-arrow-right1"></i>'], 283 items: 4, 284 items: 4, 285 responsive: { 286 0: { 287 items: 1 288 }, 289 760: { 290 items: 2 291 }, 292 991: { 293 items: 3 294 }, 295 1200: { 296 items: 4 297 }, 298 1600: { 299 items: 6 300 }, 301 } 302 }); 303 }); 304 }); 305 306 /*--- Post Silder ---*/ 307 $(window).on('elementor/frontend/init', function() { 308 elementorFrontend.hooks.addAction('frontend/element_ready/nss-post.default', function($scope, $) { 309 var $wrap = $scope.find('.lb_slider_wrap'); 310 var $slide = $scope.find('.lb_slider'); 311 312 var autoplay = ($wrap.attr('data-autoplay') == 1 ) ? true : false; 313 var loop = ($wrap.attr('data-loop') == 1 ) ? true : false; 314 var nav = ($wrap.attr('data-nav') == 1 ) ? true : false; 315 var dots = ($wrap.attr('data-dots') == 1 ) ? true : false; 316 317 if($slide.length > 0){ 318 $slide.owlCarousel({ 319 autoplay: autoplay, 320 loop: loop, 321 margin: 30, 322 nav: nav, 323 navText: ['<i class="nss-arrow-left1"></i>', '<i class="nss-arrow-right1"></i>'], 324 dots: dots, 325 items: 3, 326 responsiveClass:true, 327 responsive: { 328 0: { 329 items: 1, 330 autoWidth: false 331 }, 332 768: { 333 items: 2 334 }, 335 992: { 336 items: 3 337 }, 338 } 339 }); 340 } 341 }); 342 }); 343 344 /*-------------------------------------------------------- 345 / 2. Popup 346 /----------------------------------------------------------*/ 347 $('.popup').lightcase({ 348 transition: 'elastic', 349 showSequenceInfo: false, 350 slideshow: false, 351 swipe: true, 352 showTitle: false, 353 controls: true 354 }); 355 356 /*-------------------------------------------------------------------------- 357 / 3. Search Toggler 358 /------------------------------------------------------------------------*/ 359 $('.btn-search').on('click', function (e) { 360 e.preventDefault(); 361 $('.popup_search_sec').toggleClass('active'); 362 }); 363 $('.popup_search_overlay').on('click', function () { 364 $('.popup_search_sec').removeClass('active'); 365 }); 366 $('.popup_search_form input').on('focus', function(){ 367 $('.popup_search_form').addClass('focused'); 368 }); 369 $('.popup_search_form input').on('blur', function(){ 370 $('.popup_search_form').removeClass('focused'); 371 });
372 373 /*-------------------------------------------------------------------------- 374 / 4. Widget Toggler 375 /------------------------------------------------------------------------*/ 376 $('.navigator').on('click', function (e) { 377 e.preventDefault(); 378 $('.popup_sidebar_sec').toggleClass('active'); 379 }); 380 $('.popup_sidebar_overlay, .widget_closer').on('click', function () { 381 $('.popup_sidebar_sec').removeClass('active'); 382 }); 383 384 /*-------------------------------------------------------- 385 / 5. Skills 386 /--------------------------------------------------------*/ 387 $(window).on('elementor/frontend/init', function() { 388 elementorFrontend.hooks.addAction('frontend/element_ready/nss-skills.default', function($scope, $) { 389 var $wrap = $scope.find('.single_skill'); 390 391 $wrap.appear(); 392 $wrap.on('appear', loadSkills); 393 }); 394 }); 395 var coun = true; 396 function loadSkills() 397 { 398 $(".single_skill").each(function() { 399 var datacount = $(this).attr("data-parcent"); 400 $(".ss_child", this).animate({'width': datacount + '%'}, 3000); 401 if (coun) 402 { 403 $(this).find('span').each(function() { 404 var $this = $(this); 405 $({Counter: 0}).animate({Counter: datacount}, { 406 duration: 2000, 407 easing: 'swing', 408 step: function() { 409 $this.text(Math.ceil(this.Counter) + '%'); 410 } 411 }); 412 }); 413 } 414 }); 415 coun = false; 416 } 417 /*-------------------------------------------------------- 418 / 6. Funfact Count 419 /---------------------------------------------------------*/ 420 var skl = true; 421 $('.timer').appear(); 422 $('.timer').on('appear', function () { 423 if (skl) 424 { 425 $('.timer').each(function () { 426 var $this = $(this); 427 jQuery({Counter: 0}).animate({Counter: $this.attr('data-counter')}, { 428 duration: 3000, 429 easing: 'swing', 430 step: function () { 431 var num = Math.ceil(this.Counter).toString(); 432 $this.html(num); 433 } 434 }); 435 }); 436 skl = false; 437 } 438 }); 439 440 /*-------------------------------------------------------- 441 / 7. Back To Top 442 /----------------------------------------------------------*/ 443 var back = $("#back-to-top"), 444 body = $("body, html"); 445 $(window).on('scroll', function () { 446 if ($(window).scrollTop() > $(window).height()) 447 { 448 back.css({bottom: '20px', opacity: '1', visibility: 'visible'}); 449 } else 450 { 451 back.css({bottom: '-20px', opacity: '0', visibility: 'hidden'}); 452 } 453 }); 454 body.on("click", "#back-to-top", function (e) { 455 e.preventDefault(); 456 body.animate({scrollTop: 0}, 800); 457 return false; 458 }); 459 460 /*-------------------------------------------------------- 461 / 8. Preloader 462 /----------------------------------------------------------*/ 463 $(window).on('load', function () { 464 var preload = $('.preloader'); 465 if (preload.length > 0) { 466 preload.delay(800).fadeOut('slow'); 467 } 468 }); 469 470 /*-------------------------------------------------------- 471 / 9. Mobile Menu 472 /---------------------------------------------------------*/ 473 $(".navbar-toggler").on('click', function () { 474 $(this).toggleClass('active'); 475 }); 476 $(".navbar-nav a").on('click', function () { 477 $(".navbar-toggler").removeClass('active'); 478 }); 479 var subMenu = $(".sub-menu-bar .navbar-nav .sub-menu"); 480 if (subMenu.length) { 481 subMenu.parent('li').children('a').append(function () { 482 return '<span class="submenu-toggler"><i class="nss-arrow-down1"></i></span>'; 483 }); 484 var subMenuToggler = $(".submenu-toggler"); 485 subMenuToggler.on('click', function () { 486 $(this).parent().parent().children(".sub-menu").slideToggle(); 487 return false 488 }); 489 } 490 /*-------------------------------------------------------- 491 / 10. Fixed Header 492 /----------------------------------------------------------*/ 493 $(window).on('scroll', function () { 494 if ($(window).scrollTop() > 40) 495 { 496 $(".head-sticky").addClass('fix-header animated slideInDown'); 497 } else 498 { 499 $(".head-sticky").removeClass('fix-header animated slideInDown'); 500 } 501 });
502 503 /*-------------------------------------------------------- 504 / 12. Suffle Filter 505 /--------------------------------------------------------*/ 506 $(window).on('load', function () { 507 if ($(".shafull-container").length > 0) 508 { 509 var $grid = $('.shafull-container'); 510 $grid.shuffle({ 511 itemSelector: '.shaf-item', 512 sizer: '.shaf-sizer' 513 }); 514 /* reshuffle when user clicks a filter item */ 515 $('.shaf-filter li').on('click', function () { 516 // set active class 517 $('.shaf-filter li').removeClass('active'); 518 $(this).addClass('active'); 519 // get group name from clicked item 520 var groupName = $(this).attr('data-group'); 521 // reshuffle grid 522 $grid.shuffle('shuffle', groupName); 523 }); 524 } 525 }); 526 /*-------------------------------------------------------- 527 / 13. Image Transform 528 /--------------------------------------------------------*/ 529 var o = $(".card"); 530 $("#skewban").on("mousemove", function (t) { 531 var e = -($(window).innerWidth() / 2 - t.pageX) / 40, 532 n = ($(window).innerHeight() / 2 - t.pageY) / 50; 533 o.attr("style","transform: rotateY(" + e +" deg) rotateX(" + n + " deg);-webkit-transform: rotateY(" + e + "deg) rotateX(" + n + "deg);-moz-transform: rotateY(" + e + "deg) rotateX(" + n + "deg)" 534 ); 535 }); 536 537 /*-------------------------------------------------------- 538 / 11. Google Maps 539 /----------------------------------------------------------*/ 540 $(window).on('elementor/frontend/init', function () { 541 elementorFrontend.hooks.addAction('frontend/element_ready/nss-google-map.default', function ($scope, $) { 542 var $gmap = $scope.find('.google_map'); 543 if (!$gmap.length) { 544 return; 545 } 546 $gmap.each(function () { 547 var $this = $(this); 548 var gmapid = $this.attr('id'); 549 var $g_map_this = $('#' + gmapid); 550 551 var marker = $g_map_this.attr('data-marker'); 552 var zoom = parseInt($g_map_this.attr('data-zoom'), 10); 553 var style = parseInt($g_map_this.attr('data-map-style'), 10); 554 555 var coordinates = $g_map_this.attr('data-coordinates'); 556 var coordinates = $.parseJSON(coordinates); 557 var primary_lat = ''; 558 var primary_lon = ''; 559 var i = 1; 560 for (let value of Object.values(coordinates)) { 561 if (i == 1) { 562 primary_lat = value.lati; 563 primary_lon = value.long; 564 } 565 i++; 566 } 567 568 var map; 569 map = new GMaps({ 570 el: '#' + gmapid, 571 lat: primary_lat, 572 lng: primary_lon, 573 scrollwheel: false, 574 zoom: zoom, 575 zoomControl: true, 576 panControl: false, 577 streetViewControl: true, 578 mapTypeControl: true, 579 overviewMapControl: false, 580 clickable: false 581 }); 582 var image = ""; 583 var i = 1; 584 for (let value of Object.values(coordinates)) { 585 if (i == 1) { 586 map.addMarker({ 587 lat: value.lati, 588 lng: value.long, 589 icon: marker, 590 animation: google.maps.Animation.DROP, 591 verticalAlign: "bottom", 592 horizontalAlign: "center", 593 backgroundColor: "#d3cfcf" 594 }); 595 } else { 596 map.addMarker({ 597 lat: value.lati, 598 lng: value.long, 599 icon: marker, 600 animation: google.maps.Animation.DROP, 601 backgroundColor: "#d3cfcf" 602 }); 603 } 604 i++; 605 } 606 if (style != 1) { 607 var styles = [ 608 { 609 "featureType": "road", 610 "stylers": [ 611 {"color": "#9dbb91"} 612 ] 613 }, { 614 "featureType": "water", 615 "stylers": [ 616 {"color": "#aacbd9"} 617 ] 618 }, { 619 "featureType": "landscape", 620 "stylers": [ 621 {"color": "#ebf1e9"} 622 ] 623 }, { 624 "elementType": "labels.text.fill", 625 "stylers": [ 626 {"color": "#2c2c2c"} 627 ] 628 }, { 629 "featureType": "poi", 630 "stylers": [ 631 {"color": "#ceddc8"} 632 ] 633 }, { 634 "elementType": "labels.text", 635 "stylers": [ 636 {"saturation": 1}, 637 {"weight": 0.1}, 638 {"color": "#2c2c2c"} 639 ] 640 } 641 642 ]; 643 map.addStyle({ 644 styledMapName: "Styled Map", 645 styles: styles, 646 mapTypeId: "map_style" 647 }); 648 map.setStyle("map_style"); 649 } 650 }); 651 }); 652 });
653 654})(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.