PageSourceSearch

https://contakts.ai/blog/wp-content/themes/graptor/assets/js/theme.js?ver=7.0.6

js contakts.ai collected 2026-10-05 12:07:00 UTC 24,742 bytes, 654 lines download raw bytes

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.