PageSourceSearch

https://fusionmap.com/wp-content/themes/zenfy/assets/js/custom.js?ver=1743026962

js fusionmap.com collected 2026-10-01 01:54:14 UTC 24,499 bytes, 1,129 lines download raw bytes

1(function ($) {
2	"use strict";
3
4	var page = 1;
5	var loading = false;
6
7	if ($('#archive-load-more-portfolio').length) {
8
9		$('#archive-load-more-portfolio').on('click', function (e) {
10
11			e.preventDefault();
12
13			if (!loading) {
14				loading = true;
15				page++;
16
17				$(".load-btn").addClass("gif");
18
19				$.ajax({
20					type: 'POST',
21					url: loadmore.ajaxurl,
22					data: {
23						action: 'load_more_portfolio',
24						page: page
25						// Add any additional parameters if needed
26					},
27					success: function (response) {
28						if (response) {
29							if (response.trim() !== 'No data') {
30								$('#portfolio-archive').append(response);
31
32								$(".load-btn").removeClass("gif");
33							} else {
34								$('#archive-load-more-portfolio').hide();
35							}
36						} else {
37							$('#archive-load-more-portfolio').hide();
38						}
39						loading = false;
40					},
41
42				});
43			}
44		});
45	}
46
47
48	if ($('#archive-load-more-case-study').length) {
49
50		$('#archive-load-more-case-study').on('click', function (e) {
51
52			e.preventDefault();
53
54			if (!loading) {
55				loading = true;
56				page++;
57
58				$(".load-btn").addClass("gif");
59
60				$.ajax({
61					type: 'POST',
62					url: loadmore.ajaxurl,
63					data: {
64						action: 'load_more_case',
65						page: page
66						// Add any additional parameters if needed
67					},
68					success: function (response) {
69
70						if (response) {
71							if (response.trim() !== 'No data') {
72								$('#case-archive').append(response);
73
74								$(".load-btn").removeClass("gif");
75							} else {
76								$('#archive-load-more-case-study').hide();
77							}
78						} else {
79							$('#archive-load-more-case-study').hide();
80						}
81						loading = false;
82					},
83
84				});
85			}
86		});
87	}
88
89
90	if ($('#archive-load-more-case-style-one').length) {
91
92		$('#archive-load-more-case-style-one').on('click', function (e) {
93
94			e.preventDefault();
95
96			if (!loading) {
97				loading = true;
98				page++;
99
100				$(".load-btn").addClass("gif");
101
102				$.ajax({
103					type: 'POST',
104					url: loadmore.ajaxurl,
105					data: {
106						action: 'load_more_case_style_one',
107						page: page
108						// Add any additional parameters if needed
109					},
110					success: function (response) {
111						if (response) {
112							if (response.trim() !== 'No data') {
113								$('#case-style-one-archive').append(response);
114
115								$(".load-btn").removeClass("gif");
116							} else {
117								$('#archive-load-more-case-style-one').hide();
118							}
119						} else {
120							$('#archive-load-more-case-style-one').hide();
121						}
122						loading = false;
123					},
124
125				});
126			}
127		});
128	}
129
130
131
132	if ($('#archive-load-more-portfolio-info-flow').length) {
133
134		$('#archive-load-more-portfolio-info-flow').on('click', function (e) {
135
136			e.preventDefault();
137
138			if (!loading) {
139				loading = true;
140				page++;
141
142				$(".load-btn").addClass("gif");
143
144				$.ajax({
145					type: 'POST',
146					url: loadmore.ajaxurl,
147					data: {
148						action: 'load_more_portfolio_info',
149						page: page
150						// Add any additional parameters if needed
151					},
152					success: function (response) {
153						if (response) {
154							if (response.trim() !== 'No data') {
155								$('#portfolio_info_flow').append(response);
156
157								$(".load-btn").removeClass("gif");
158							} else {
159								$('#archive-load-more-portfolio-info-flow').hide();
160							}
161						} else {
162							$('#archive-load-more-portfolio-info-flow').hide();
163						}
164						loading = false;
165					},
166
167				});
168			}
169		});
170	}
171
172
173
174	if ($('#archive-load-more-portfolio-list').length) {
175
176		$('#archive-load-more-portfolio-list').on('click', function (e) {
177
178			e.preventDefault();
179
180			if (!loading) {
181				loading = true;
182				page++;
183
184				$(".load-btn").addClass("gif");
185
186				$.ajax({
187					type: 'POST',
188					url: loadmore.ajaxurl,
189					data: {
190						action: 'load_more_portfolio_list',
191						page: page
192						// Add any additional parameters if needed
193					},
194					success: function (response) {
195						if (response) {
196							if (response.trim() !== 'No data') {
197								$('#portfolio_info_flow').append(response);
198
199								$(".load-btn").removeClass("gif");
200							} else {
201								$('#archive-load-more-portfolio-list').hide();
202							}
203						} else {
204							$('#archive-load-more-portfolio-list').hide();
205						}
206						loading = false;
207					},
208
209
210				});
211			}
212		});
213	}
214
215
216
217	if ($('#archive-load-more-portfolio-masonary').length) {
218
219		$('#archive-load-more-portfolio-masonary').on('click', function (e) {
220
221			e.preventDefault();
222
223			if (!loading) {
224				loading = true;
225				page++;
226
227				$(".load-btn").addClass("gif");
228
229				$.ajax({
230					type: 'POST',
231					url: loadmore.ajaxurl,
232					data: {
233						action: 'load_more_portfolio_masonary',
234						page: page
235						// Add any additional parameters if needed
236					},
237					success: function (response) {
238						if (response) {
239							if (response.trim() !== 'No data') {
240								$('#portfolio_masonary').append(response);
241
242								$(".load-btn").removeClass("gif");
243							} else {
244								$('#archive-load-more-portfolio-masonary').hide();
245							}
246						} else {
247							$('#archive-load-more-portfolio-masonary').hide();
248						}
249						loading = false;
250					},
251
252
253				});
254			}
255		});
256	}
257
258
259
260
261	// Get Device width
262	let device_width = window.innerWidth;
263
264	if ($(window).width() > 1024) {
265		gsap.config({
266			nullTargetWarn: false,
267			trialWarn: false,
268		});
269	};
270	$(document).on('mouseenter mouseleave mousemove', '[data-tooltip-tit]', function (e) {
271		if (e.type === 'mouseenter') {
272			createTooltip($(this));
273		} else if (e.type === 'mouseleave') {
274			removeTooltip();
275		} else if (e.type === 'mousemove') {
276			updateTooltipPosition(e);
277		}
278	});
279	$(document).on({
280		mouseenter: function () {
281			// When mouse enters the element with the attribute 'data-tooltip-sub'
282			// Create a new div with class 'div-tooltip-sub' and set its text content
283			$('<div class="div-tooltip-sub"></div>').text($(this).attr('data-tooltip-sub')).appendTo('.portfolio-info-flow-section').fadeIn();
284		},
285		mouseleave: function () {
286			// When mouse leaves the element
287			// Remove the div with class 'div-tooltip-sub'
288			$('.div-tooltip-sub').remove();
289		},
290		mousemove: function (e) {
291			// When mouse moves over the element
292			// Set the position of the div with class 'div-tooltip-sub' based on mouse coordinates
293			$('.div-tooltip-sub').css({
294				top: e.pageY + (-20),
295				left: e.pageX + 10
296			});
297		}
298	}, '[data-tooltip-sub]');
299
300	function createTooltip(element) {
301		$('<div class="div-tooltip-tit"></div>').text(element.attr('data-tooltip-tit')).appendTo('.portfolio-info-flow-section').fadeIn();
302	}
303
304	function removeTooltip() {
305		$('.div-tooltip-tit').remove();
306	}
307
308	function updateTooltipPosition(e) {
309		$('.div-tooltip-tit').css({
310			top: e.pageY + 13,
311			left: e.pageX + 10
312		});
313	}
314
315
316
317
318	// Horizontal Scrolling
319	if (device_width > 1200) {
320
321		var workflow_section_3 = document.querySelector('.horizontal-scrolling-wrapper');
322		if (workflow_section_3) {
323
324			let duration = 1,
325				sections = gsap.utils.toArray(".single-scroll"),
326				sectionIncrement = duration / (sections.length - 1),
327				tl = gsap.timeline({
328					scrollTrigger: {
329						trigger: ".horizontal-scrolling-wrapper",
330						pin: true,
331						scrub: 1,
332						start: "-80px top",
333						end: "+=5000"
334					}
335				});
336
337			tl.to(sections, {
338				xPercent: -100 * (sections.length - 1),
339				duration: duration,
340				ease: "none"
341			});
342
343			sections.forEach((section, index) => {
344				let tween = gsap.from(section, {
345					opacity: 0,
346					scale: 1,
347					duration: 0.5,
348					force3D: true,
349					paused: true
350				});
351				addSectionCallbacks(tl, {
352					start: sectionIncrement * (index - 0.99),
353					end: sectionIncrement * (index + 0.99),
354					onEnter: () => tween.play(),
355					onLeave: () => tween.reverse(),
356					onEnterBack: () => tween.play(),
357					onLeaveBack: () => tween.reverse()
358				});
359				index || tween.progress(1);
360			});
361
362			function addSectionCallbacks(timeline, {
363				start,
364				end,
365				param,
366				onEnter,
367				onLeave,
368				onEnterBack,
369				onLeaveBack
370			}) {
371				let trackDirection = animation => {
372						let onUpdate = animation.eventCallback("onUpdate"),
373							prevTime = animation.time();
374						animation.direction = animation.reversed() ? -1 : 1;
375						animation.eventCallback("onUpdate", () => {
376							let time = animation.time();
377							if (prevTime !== time) {
378								animation.direction = time < prevTime ? -1 : 1;
379								prevTime = time;
380							}
381							onUpdate && onUpdate.call(animation);
382						});
383					},
384					empty = v => v;
385				timeline.direction || trackDirection(timeline);
386				start >= 0 && timeline.add(() => ((timeline.direction < 0 ? onLeaveBack : onEnter) || empty)(param), start);
387				end <= timeline.duration() && timeline.add(() => ((timeline.direction < 0 ? onEnterBack : onLeave) || empty)(param), end);
388			}
389		}
390	}
391
392	jQuery('.dropdown-icon2').on('click', function () {
393		jQuery(this).toggleClass('active').next('.sub-menu').slideToggle();
394		jQuery(this).parent().siblings().children('.sub-menu').slideUp();
395		jQuery(this).parent().siblings().children('.active').removeClass('active');
396	});
397
398	// Menu Text Animation
399	document.querySelectorAll('.main-menu > li > a').forEach(button => button.innerHTML = '<div class="menu-text"><span>' + button.textContent.split('').join('</span><span>') + '</span></div>');
400
401	setTimeout(() => {
402		var menu_text = document.querySelectorAll(".menu-text span")
403		menu_text.forEach((item) => {
404			var font_sizes = window.getComputedStyle(item, null);
405			let font_size = font_sizes.getPropertyValue("font-size");
406			let size_in_number = parseInt(font_size.replace("px", ""));
407			let new_size = parseInt(size_in_number / 3)
408			new_size = new_size + "px"
409			if (item.innerHTML == " ") {
410				item.style.width = new_size
411			}
412		})
413	}, 1000)
414
415	// FancyBox Js
416	$('.video1').fancybox({
417		buttons: [
418			"close",
419		],
420		loop: false,
421		protect: true,
422	});
423	$('.video4').fancybox({
424		buttons: [
425			"close",
426		],
427		loop: false,
428		protect: true,
429	});
430
431
432	// sidebar
433	$('.sidebar-btn2').on("click", function () {
434		$('.header-sidebar').addClass('slide');
435	});
436	$('.close-btn').on("click", function () {
437		$('.header-sidebar').removeClass('slide');
438	});
439
440	$('.sidebar-btn').on("click", function () {
441		$('.sidebar-menu').addClass('active');
442	});
443	$('.sidebar-menu-close').on("click", function () {
444		$('.sidebar-menu').removeClass('active');
445	});
446
447	jQuery('.dropdown-icon').on('click', function () {
448		// alert()
449		jQuery(this).toggleClass('active').next('ul, .mega-menu').slideToggle();
450		jQuery(this).parent().siblings().children('ul, .mega-menu').slideUp();
451		jQuery(this).parent().siblings().children('.active').removeClass('active');
452	});
453
454	// sticky header
455	window.addEventListener('scroll', function () {
456		const header = document.querySelector('header.header-area');
457		header.classList.toggle("sticky", window.scrollY > 200);
458	});
459
460	//Cart Menu Quantity button toggle
461	$(".qty-btn").on("click", function (e) {
462		e.stopPropagation();
463		// Toggle "active" class for the current quantity button and its related elements
464		$(this).next(".quantity-area").toggleClass("active");
465
466		// Remove "active" class from other quantity buttons and related elements
467		$(".quantity-area")
468			.not($(this).next(".quantity-area"))
469			.removeClass("active");
470	});
471	$(document).on("click", function (e) {
472		if (
473			!$(e.target).closest(".quantity-area")
474			.length
475		) {
476			// Remove "active" class from all quantity buttons and related elements
477			$(".quantity-area").removeClass("active");
478		}
479	});
480
481	//Counter up
482	$('.counter').counterUp({
483		delay: 10,
484		time: 1000
485	});
486
487	// scroll up button
488	document.addEventListener("DOMContentLoaded", function (event) {
489
490		let offset = 50;
491		let circleContainer = document.querySelector(".circle-container");
492		let circlePath = document.querySelector('.circle-container path');
493
494		if (circlePath) {
495			let pathLength = circlePath.getTotalLength();
496			circlePath.style.transition = circlePath.style.WebkitTransition = 'none';
497			circlePath.style.strokeDasharray = pathLength;
498			circlePath.style.strokeDashoffset = pathLength;
499			circlePath.getBoundingClientRect();
500			circlePath.style.transition = circlePath.style.WebkitTransition = 'stroke-dashoffset 10ms linear';
501
502			let updateLoader = () => {
503
504				let scrollTop = window.scrollY;
505				let docHeight = document.body.offsetHeight;
506				let winHeight = window.innerHeight;
507				let height = docHeight - winHeight;
508				let progress = pathLength - (scrollTop * pathLength / height);
509				circlePath.style.strokeDashoffset = progress;
510
511				if (scrollTop > offset) {
512					circleContainer.classList.add("active");
513				} else {
514					circleContainer.classList.remove("active");
515				}
516
517			}
518			circleContainer.onclick = function () {
519				window.scrollTo({
520					top: 0,
521					behavior: 'smooth'
522				});
523			}
524
525			window.onscroll = () => {
526				updateLoader();
527			}
528			updateLoader();
529		}
530
531
532	});
533
534	/* ---------------------------------------------
535		 NiceSelect
536	--------------------------------------------- */
537
538	$('select:not(.country_select,.state_select)').niceSelect();
539
540	//home1-banner-slider
541	var swiper = new Swiper(".banner-img-slider", {
542		slidesPerView: 1,
543		speed: 2500,
544		spaceBetween: 25,
545		effect: 'fade', // Use the fade effect
546		fadeEffect: {
547			crossFade: true, // Enable cross-fade transition
548		},
549		autoplay: {
550			delay: 3000, // Autoplay duration in milliseconds
551			disableOnInteraction: false,
552		},
553		navigation: {
554			nextEl: ".home1-banner-next",
555			prevEl: ".home1-banner-prev",
556		},
557	});
558	var swiper = new Swiper(".portfolio-slider", {
559		slidesPerView: 1,
560		speed: 1500,
561		spaceBetween: 25,
562		loop: true,
563		autoplay: {
564			delay: 2500, // Autoplay duration in milliseconds
565			disableOnInteraction: false,
566		},
567		pagination: {
568			el: ".swiper-pagination",
569			clickable: true,
570		},
571		breakpoints: {
572			280: {
573				slidesPerView: 1,
574			},
575			386: {
576				slidesPerView: 1,
577			},
578			576: {
579				slidesPerView: 1,
580				spaceBetween: 15,
581			},
582			768: {
583				slidesPerView: 2,
584				spaceBetween: 15,
585			},
586			992: {
587				slidesPerView: 3,
588				spaceBetween: 15,
589			},
590			1200: {
591				slidesPerView: 3,
592				spaceBetween: 15,
593			},
594			1400: {
595				slidesPerView: 3,
596			},
597		}
598	});
599	var swiper = new Swiper(".process-slider", {
600		slidesPerView: 1,
601		speed: 1500,
602		spaceBetween: 25,
603		loop: true,
604		navigation: {
605			nextEl: ".process-slider-next",
606			prevEl: ".process-slider-prev",
607		},
608
609		breakpoints: {
610			280: {
611				slidesPerView: 1,
612			},
613			386: {
614				slidesPerView: 1,
615			},
616			576: {
617				slidesPerView: 1,
618				spaceBetween: 15,
619			},
620			768: {
621				slidesPerView: 2,
622				spaceBetween: 15,
623			},
624			992: {
625				slidesPerView: 2,
626				spaceBetween: 20,
627			},
628			1200: {
629				slidesPerView: 3,
630				spaceBetween: 15,
631			},
632			1400: {
633				slidesPerView: 3,
634			},
635		}
636	});
637	var swiper = new Swiper(".case-study-slider", {
638		slidesPerView: 1,
639		speed: 1500,
640		spaceBetween: 30,
641		loop: true,
642		navigation: {
643			nextEl: ".case-study-slider-next",
644			prevEl: ".case-study-slider-prev",
645		},
646
647		breakpoints: {
648			280: {
649				slidesPerView: 1,
650			},
651			386: {
652				slidesPerView: 1,
653			},
654			576: {
655				slidesPerView: 1,
656				spaceBetween: 15,
657			},
658			768: {
659				slidesPerView: 2,
660				spaceBetween: 15,
661			},
662			992: {
663				slidesPerView: 1,
664				spaceBetween: 20,
665			},
666			1200: {
667				slidesPerView: 2,
668				spaceBetween: 15,
669			},
670			1400: {
671				slidesPerView: 2,
672			},
673		}
674	});
675	var swiper = new Swiper(".home1-testimonial-slider", {
676		slidesPerView: 1,
677		speed: 1500,
678		spaceBetween: 30,
679		loop: true,
680		effect: 'fade', // Use the fade effect
681		fadeEffect: {
682			crossFade: true // Enable cross-fade transition
683		},
684		autoplay: {
685			delay: 2500, // Autoplay duration in milliseconds
686			disableOnInteraction: false,
687		},
688		navigation: {
689			nextEl: ".case-study-slider-next",
690			prevEl: ".case-study-slider-prev",
691		},
692
693		breakpoints: {
694			280: {
695				slidesPerView: 1,
696			},
697			386: {
698				slidesPerView: 1,
699			},
700			576: {
701				slidesPerView: 1,
702				spaceBetween: 15,
703			},
704			768: {
705				slidesPerView: 1,
706				spaceBetween: 15,
707			},
708			992: {
709				slidesPerView: 1,
710				spaceBetween: 20,
711			},
712			1200: {
713				slidesPerView: 1,
714				spaceBetween: 15,
715			},
716			1400: {
717				slidesPerView: 1,
718			},
719		}
720	});
721	var swiper = new Swiper(".home2-process-slider", {
722		slidesPerView: 1,
723		speed: 1500,
724		spaceBetween: 30,
725		grabCursor: true,
726		navigation: {
727			nextEl: ".home2-process-next",
728			prevEl: ".home2-process-prev",
729		},
730
731		breakpoints: {
732			280: {
733				slidesPerView: 1,
734			},
735			386: {
736				slidesPerView: 1,
737			},
738			576: {
739				slidesPerView: 2,
740				spaceBetween: 15,
741			},
742			768: {
743				slidesPerView: 2,
744				spaceBetween: 15,
745			},
746			992: {
747				slidesPerView: 3,
748				spaceBetween: 20,
749			},
750			1200: {
751				slidesPerView: 4,
752				spaceBetween: 15,
753			},
754			1400: {
755				slidesPerView: 4,
756			},
757		}
758	});
759	var swiper = new Swiper(".home2-case-study-slider", {
760		slidesPerView: 1,
761		speed: 1500,
762		spaceBetween: 25,
763		loop: true,
764		pagination: {
765			el: ".swiper-pagination",
766			clickable: true,
767		},
768		breakpoints: {
769			280: {
770				slidesPerView: 1,
771			},
772			386: {
773				slidesPerView: 1,
774			},
775			576: {
776				slidesPerView: 1,
777				spaceBetween: 15,
778			},
779			768: {
780				slidesPerView: 2,
781				spaceBetween: 15,
782			},
783			992: {
784				slidesPerView: 3,
785				spaceBetween: 15,
786			},
787			1200: {
788				slidesPerView: 3,
789				spaceBetween: 15,
790			},
791			1400: {
792				slidesPerView: 3,
793			},
794		}
795	});
796	var swiper = new Swiper(".home2-testimonial-slider", {
797		slidesPerView: 1,
798		speed: 1500,
799		spaceBetween: 25,
800		loop: true,
801		effect: 'fade', // Use the fade effect
802		fadeEffect: {
803			crossFade: true // Enable cross-fade transition
804		},
805		autoplay: {
806			delay: 4000, // Autoplay duration in milliseconds
807			disableOnInteraction: false,
808		},
809		navigation: {
810			nextEl: ".next-2",
811			prevEl: ".prev-2",
812		},
813	});
814	var swiper = new Swiper(".home3-testimonial-slider", {
815		slidesPerView: 1,
816		speed: 1500,
817		spaceBetween: 30,
818		pagination: {
819			el: '.franctional-pagi2',
820			type: "fraction",
821		},
822		navigation: {
823			nextEl: ".home3-testimonial-next",
824			prevEl: ".home3-testimonial-prev",
825		},
826		breakpoints: {
827			280: {
828				slidesPerView: 1,
829			},
830			386: {
831				slidesPerView: 1,
832			},
833			576: {
834				slidesPerView: 1,
835				spaceBetween: 15,
836			},
837			768: {
838				slidesPerView: 2,
839				spaceBetween: 15,
840			},
841			992: {
842				slidesPerView: 2,
843				spaceBetween: 20,
844			},
845			1200: {
846				slidesPerView: 3,
847				spaceBetween: 15,
848			},
849			1400: {
850				slidesPerView: 3,
851			},
852		}
853	});
854	var swiper = new Swiper(".home4-teams-slider", {
855		slidesPerView: 1,
856		speed: 1500,
857		spaceBetween: 30,
858		navigation: {
859			nextEl: ".home4-team-slider-next",
860			prevEl: ".home4-team-slider-prev",
861		},
862
863		breakpoints: {
864			280: {
865				slidesPerView: 1,
866			},
867			386: {
868				slidesPerView: 1,
869			},
870			576: {
871				slidesPerView: 2,
872				spaceBetween: 15,
873			},
874			768: {
875				slidesPerView: 2,
876				spaceBetween: 15,
877			},
878			992: {
879				slidesPerView: 3,
880				spaceBetween: 20,
881			},
882			1200: {
883				slidesPerView: 4,
884				spaceBetween: 15,
885			},
886			1400: {
887				slidesPerView: 4,
888			},
889		}
890	});
891	var swiper = new Swiper(".partnership-slider", {
892		slidesPerView: 1,
893		speed: 1500,
894		spaceBetween: 30,
895		grabCursor: true,
896		breakpoints: {
897			280: {
898				slidesPerView: 1,
899			},
900			386: {
901				slidesPerView: 1,
902			},
903			576: {
904				slidesPerView: 2,
905				spaceBetween: 15,
906			},
907			768: {
908				slidesPerView: 2,
909				spaceBetween: 15,
910			},
911			992: {
912				slidesPerView: 3,
913				spaceBetween: 20,
914			},
915			1200: {
916				slidesPerView: 4,
917				spaceBetween: 15,
918			},
919			1400: {
920				slidesPerView: 4,
921			},
922		}
923	});
924	//wow js 
925	jQuery(window).on('load', function () {
926		new WOW().init();
927		window.wow = new WOW({
928			boxClass: 'wow',
929			animateClass: 'animated',
930			offset: 0,
931			mobile: true,
932			live: true,
933			offset: 80
934		})
935		window.wow.init();
936	});
937
938	// ====================
939	// Progrees Bar
940	// ====================
941	var skillPers = document.querySelectorAll(".experience-bar-per");
942
943	skillPers.forEach(function (skillPer) {
944		var per = parseFloat(skillPer.getAttribute("data-per"));
945		skillPer.style.width = per + "%";
946
947		var animatedValue = 0;
948		var startTime = null;
949
950		function animate(timestamp) {
951			if (!startTime) startTime = timestamp;
952			var progress = timestamp - startTime;
953			var stepPercentage = progress / 1000; // Dividing by duration in milliseconds (1000ms = 1s)
954
955			if (stepPercentage < 1) {
956				animatedValue = per * stepPercentage;
957				skillPer.setAttribute("data-per", Math.floor(animatedValue) + "%");
958				requestAnimationFrame(animate);
959			} else {
960				animatedValue = per;
961				skillPer.setAttribute("data-per", Math.floor(animatedValue) + "%");
962			}
963		}
964		requestAnimationFrame(animate);
965	});
966
967	// services Images
968	const serviceImgItem = document.querySelectorAll(".sevices-wrap .single-services ");
969	//console.log(serviceImgItem);
970
971	function followImageCursor(event, serviceImgItem) {
972		const contentBox = serviceImgItem.getBoundingClientRect();
973		const dx = event.clientX - contentBox.x;
974		const dy = event.clientY - contentBox.y;
975		serviceImgItem.children[2].style.transform = `translate(${dx}px, ${dy}px)`;
976	}
977
978	serviceImgItem.forEach((item, i) => {
979		item.addEventListener("mousemove", (event) => {
980			setInterval(followImageCursor(event, item), 100);
981		});
982	});
983
984	const serviceImgItem2 = document.querySelectorAll(".sevices-wrap2 .single-services");
985	//console.log(serviceImgItem2);
986
987	function followImageCursor(event, serviceImgItem2) {
988		const contentBox = serviceImgItem2.getBoundingClientRect();
989		const dx = event.clientX - contentBox.x;
990		const dy = event.clientY - contentBox.y;
991		serviceImgItem2.children[2].style.transform = `translate(${dx}px, ${dy}px) rotate(12deg)`;
992	}
993
994	serviceImgItem2.forEach((item, i) => {
995		item.addEventListener("mousemove", (event) => {
996			setInterval(followImageCursor(event, item), 100);
997		});
998	});
999
1000	// Round Text Animation
1001	const element = document.querySelectorAll(".badge__char");
1002	const step = 360 / element.length;
1003
1004	element.forEach((elem, i) => {
1005		elem.style.setProperty('--char-rotate', (i * step) + 'deg');
1006	})
1007
1008	// Button Bounce animation
1009	let arr1 = gsap.utils.toArray("#btn_wrapper")
1010	let arr2 = gsap.utils.toArray(".btn_wrapper")
1011	const all_buttons = arr1.concat(arr2);
1012	all_buttons.forEach((btn) => {
1013		if (!(btn.classList.contains("banner-btn"))) {
1014			gsap.from(btn, {
1015				scrollTrigger: {
1016					trigger: btn,
1017					start: "top center+=150",
1018					markers: false,
1019				},
1020				opacity: 0,
1021				y: -70,
1022				ease: "bounce",
1023				duration: 1.5,
1024			})
1025		}
1026	})
1027
1028	// Slick Slider
1029	$(".slider").slick({
1030		infinite: true,
1031		centerMode: false,
1032		arrows: false,
1033		dots: false,
1034		autoplay: false,
1035		speed: 800,
1036		slidesToScroll: 1,
1037		vertical: true,
1038		verticalSwiping: true,
1039		slidesToShow: 1,
1040		slidesToScroll: 1,
1041
1042	});
1043
1044	//ticking machine
1045	var percentTime;
1046	var tick;
1047	var time = .5;
1048	var progressBarIndex = 0;
1049
1050	$('.progressBarContainer .progressBar').each(function (index) {
1051		var progress = "<div class='inProgress inProgress" + index + "'></div>";
1052		$(this).html(progress);
1053	});
1054
1055	function startProgressbar() {
1056		resetProgressbar();
1057		percentTime = 0;
1058		tick = setInterval(interval, 10);
1059	}
1060
1061	function interval() {
1062		if (($('.slider .slick-track div[data-slick-index="' + progressBarIndex + '"]').attr("aria-hidden")) === "true") {
1063			progressBarIndex = $('.slider .slick-track div[aria-hidden="false"]').data("slickIndex");
1064			startProgressbar();
1065		} else {
1066			percentTime += 1 / (time + 5);
1067			$('.inProgress' + progressBarIndex).css({
1068				width: percentTime + "%"
1069			});
1070			if (percentTime >= 100) {
1071				$('.single-item').slick('slickNext');
1072				progressBarIndex++;
1073				if (progressBarIndex > 2) {
1074					progressBarIndex = 0;
1075				}
1076				startProgressbar();
1077			}
1078		}
1079	}
1080
1081	function resetProgressbar() {
1082		$('.inProgress').css({
1083			width: 0 + '%'
1084		});
1085		clearInterval(tick);
1086	}
1087	startProgressbar();
1088
1089	//Marquee Text
1090
1091	const marquee = document.querySelector('.marquee_text');
1092	if (marquee) {
1093		$(".marquee_text").marquee({
1094			direction: "left",
1095			duration: 45000,
1096			gap: 50,
1097			delayBeforeStart: 0,
1098			duplicated: true,
1099			startVisible: true,
1100		});
1101	}
1102	const marquee2 = document.querySelector('.marquee_text2');
1103	if (marquee2) {
1104		$(".marquee_text2").marquee({
1105			direction: "left",
1106			duration: 25000,
1107			gap: 50,
1108			delayBeforeStart: 0,
1109			duplicated: true,
1110			startVisible: true,
1111		});
1112	}
1113	/* ---------------------------------------------
1114		Text animation Morphext
1115	--------------------------------------------- */
1116	const text_type = document.querySelector('.text-type');
1117	if (text_type) {
1118		var typing = new Typed(".text-type", {
1119			strings: theme_options.animate_text,
1120			typeSpeed: 120,
1121			backSpeed: 70,
1122			loop: true,
1123		});
1124	}
1125
1126
1127
1128
1129}(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.