This commit is contained in:
2025-08-12 13:37:07 +05:45
commit 38bd3bc786
1371 changed files with 139674 additions and 0 deletions

469
assets/js/main.js Normal file
View File

@@ -0,0 +1,469 @@
(function ($) {
'use strict';
/*=============================================
= Preloader =
=============================================*/
function preloader() {
$('#preloader').delay(0).fadeOut();
}
/*=============================================
= Offcanvas Menu =
=============================================*/
function offcanvasMenu() {
$('.menu-tigger').on('click', function () {
$('.offCanvas__info, .offCanvas__overly').addClass('active');
return false;
});
$('.menu-close, .offCanvas__overly').on('click', function () {
$('.offCanvas__info, .offCanvas__overly').removeClass('active');
});
}
/*=============================================
= Data Background =
=============================================*/
function dataBackground() {
$('[data-background]').each(function () {
$(this).css('background-image', 'url(' + $(this).attr('data-background') + ')');
});
}
/*=============================================
= Go to top =
=============================================*/
function progressPageLoad() {
var progressWrap = document.querySelector('.btn-scroll-top');
if (progressWrap != null) {
var progressPath = document.querySelector('.btn-scroll-top path');
var pathLength = progressPath.getTotalLength();
var offset = 50;
progressPath.style.transition = progressPath.style.WebkitTransition = 'none';
progressPath.style.strokeDasharray = pathLength + ' ' + pathLength;
progressPath.style.strokeDashoffset = pathLength;
progressPath.getBoundingClientRect();
progressPath.style.transition = progressPath.style.WebkitTransition = 'stroke-dashoffset 10ms linear';
window.addEventListener('scroll', function (event) {
var scroll = document.body.scrollTop || document.documentElement.scrollTop;
var height = document.documentElement.scrollHeight - document.documentElement.clientHeight;
var progress = pathLength - (scroll * pathLength) / height;
progressPath.style.strokeDashoffset = progress;
var scrollElementPos = document.body.scrollTop || document.documentElement.scrollTop;
if (scrollElementPos >= offset) {
progressWrap.classList.add('active-progress');
} else {
progressWrap.classList.remove('active-progress');
}
});
progressWrap.addEventListener('click', function (e) {
e.preventDefault();
window.scroll({
top: 0,
left: 0,
behavior: 'smooth',
});
});
}
}
/*=============================================
= Aos Active =
=============================================*/
function aosAnimation() {
AOS.init({
duration: 1000,
mirror: true,
once: true,
disable: 'mobile',
});
}
/*=============================================
= counterState =
=============================================*/
function counterState() {
var counters = document.querySelectorAll('.counter');
counters.forEach(function (counter) {
var countTo = counter.getAttribute('data-count');
var countNum = parseInt(counter.textContent);
var duration = 4000;
var stepDuration = duration / Math.abs(countTo - countNum);
var increment = countTo > countNum ? 1 : -1;
var timer = setInterval(function () {
countNum += increment;
counter.textContent = countNum;
if (countNum == countTo) {
clearInterval(timer);
//alert('finished');
}
}, stepDuration);
});
}
/*=============================================
= Magnific Popup =
=============================================*/
function magnificPopup() {
$('.popup-image').magnificPopup({
type: 'image',
gallery: {
enabled: true,
},
});
/* magnificPopup video view */
$('.popup-video').magnificPopup({
type: 'iframe',
});
}
/*=============================================
= Wow Active =
=============================================*/
function wowAnimation() {
var wow = new WOW({
boxClass: 'wow',
animateClass: 'animated',
offset: 0,
mobile: false,
live: true,
});
wow.init();
}
/*=============================================
= Masonary Active =
=============================================*/
function masonryFillter() {
$('.masonary-active').imagesLoaded(function () {
var $filter = '.masonary-active',
$filterItem = '.filter-item',
$filterMenu = '.filter-menu-active';
if ($($filter).length > 0) {
var $grid = $($filter).isotope({
itemSelector: $filterItem,
filter: '*',
masonry: {
// use outer width of grid-sizer for columnWidth
// columnWidth: 1,
columnWidth: '.grid-sizer',
},
});
// filter items on button click
$($filterMenu).on('click', 'button', function () {
var filterValue = $(this).attr('data-filter');
$grid.isotope({
filter: filterValue,
});
});
// Menu Active Class
$($filterMenu).on('click', 'button', function (event) {
event.preventDefault();
$(this).addClass('active');
$(this).siblings('.active').removeClass('active');
});
}
});
}
function customSwiper() {
const sliderone = new Swiper('.slider-one', {
slidesPerView: 2,
spaceBetween: 20,
slidesPerGroup: 1,
centeredSlides: false,
loop: true,
autoplay: {
delay: 4000,
},
breakpoints: {
1200: {
slidesPerView: 2,
},
992: {
slidesPerView: 2,
},
768: {
slidesPerView: 2,
},
576: {
slidesPerView: 1,
},
0: {
slidesPerView: 1,
},
},
});
const slidertwo = new Swiper('.slider-two', {
slidesPerView: 1,
// spaceBetween: 20,
slidesPerGroup: 1,
centeredSlides: false,
loop: true,
autoplay: {
delay: 4000,
},
pagination: {
el: '.swiper-pagination',
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
});
const slider1 = new Swiper('.slider-1', {
slidesPerView: 3,
spaceBetween: 20,
slidesPerGroup: 1,
centeredSlides: false,
loop: true,
autoplay: {
delay: 4000,
},
breakpoints: {
1200: {
slidesPerView: 3,
},
992: {
slidesPerView: 3,
},
768: {
slidesPerView: 2,
},
576: {
slidesPerView: 1,
},
0: {
slidesPerView: 1,
},
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
pagination: {
el: '.swiper-pagination',
},
});
const slider2 = new Swiper('.slider-2', {
slidesPerView: 4,
spaceBetween: 30,
slidesPerGroup: 1,
centeredSlides: false,
loop: true,
autoplay: {
delay: 4000,
},
breakpoints: {
1200: {
slidesPerView: 4,
},
992: {
slidesPerView: 3,
},
768: {
slidesPerView: 2,
},
576: {
slidesPerView: 1,
},
0: {
slidesPerView: 1,
},
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
on: {
afterInit: function () {
// set padding left slide
var leftPadding = 0;
var swipperRoot = $('.swipper-root');
if (swipperRoot.length > 0) {
leftPadding = swipperRoot.offset().left;
}
if ($('.box-swiper-padding').length > 0) {
$('.box-swiper-padding').css('padding-left', leftPadding + 'px');
}
},
},
});
const slider5 = new Swiper('.slider-5', {
slidesPerView: 5,
spaceBetween: 30,
slidesPerGroup: 1,
centeredSlides: false,
loop: true,
autoplay: {
delay: 4000,
},
breakpoints: {
1200: {
slidesPerView: 5,
},
992: {
slidesPerView: 4,
},
768: {
slidesPerView: 3,
},
576: {
slidesPerView: 2,
},
0: {
slidesPerView: 1,
},
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
on: {
afterInit: function () {
// set padding left slide
var leftPadding = 0;
var swipperRoot = $('.swipper-root');
if (swipperRoot.length > 0) {
leftPadding = swipperRoot.offset().left;
}
if ($('.box-swiper-padding').length > 0) {
$('.box-swiper-padding').css('padding-left', leftPadding + 'px');
}
},
},
});
}
function carauselScroll() {
$('.carouselTicker-left').each(function () {
$(this).carouselTicker({
direction: 'prev',
speed: 1,
delay: 30,
});
});
$('.carouselTicker-right').each(function () {
$(this).carouselTicker({
direction: 'next',
speed: 1,
delay: 30,
});
});
}
function odometerCounter() {
if ($('.odometer').length > 0) {
$('.odometer').appear(function (e) {
var odo = $('.odometer');
odo.each(function () {
var countNumber = $(this).attr('data-count');
$(this).html(countNumber);
});
});
}
}
$('.change-price-plan li a').on('click', function (e) {
e.preventDefault();
$('.change-price-plan li a').removeClass('active');
$(this).addClass('active');
var type = $(this).attr('data-type');
if (type == 'monthly') {
$('.text-price-standard').html('49');
$('.text-type-standard').html('/ month');
$('.text-price-business').html('69');
$('.text-type-business').html('/ month');
$('.text-price-enterprise').html('99');
$('.text-type-enterprise').html('/ month');
} else {
$('.text-price-standard').html('441');
$('.text-type-standard').html('/ year');
$('.text-price-business').html('621');
$('.text-type-business').html('/ year');
$('.text-price-enterprise').html('891');
$('.text-type-enterprise').html('/ year');
}
});
function inputFocus() {
$('input')
.focus(function () {
$(this).closest('div.input-group').addClass('focus');
})
.blur(function () {
$(this).closest('div.input-group').removeClass('focus');
});
$('textarea')
.focus(function () {
$(this).closest('div.input-group').addClass('focus');
})
.blur(function () {
$(this).closest('div.input-group').removeClass('focus');
});
$('select')
.focus(function () {
$(this).closest('div.input-group').addClass('focus');
})
.blur(function () {
$(this).closest('div.input-group').removeClass('focus');
});
}
function mobileHeaderActive() {
var navbarTrigger = $('.burger-icon'),
navCanvas = $('.burger-icon-2'),
closeCanvas = $('.close-canvas'),
endTrigger = $('.mobile-menu-close'),
container = $('.mobile-header-active'),
containerCanvas = $('.sidebar-canvas-wrapper'),
wrapper4 = $('body');
wrapper4.prepend('<div class="body-overlay-1"></div>');
navbarTrigger.on('click', function (e) {
navbarTrigger.toggleClass('burger-close');
e.preventDefault();
container.toggleClass('sidebar-visible');
wrapper4.toggleClass('mobile-menu-active');
});
endTrigger.on('click', function () {
container.removeClass('sidebar-visible');
wrapper4.removeClass('mobile-menu-active');
});
var $offCanvasNav = $('.mobile-menu'),
$offCanvasNavSubMenu = $offCanvasNav.find('.sub-menu');
/*Add Toggle Button With Off Canvas Sub Menu*/
$offCanvasNavSubMenu.parent().prepend('<span class="menu-expand"><i class="arrow-small-down"></i></span>');
/*Close Off Canvas Sub Menu*/
$offCanvasNavSubMenu.slideUp();
/*Category Sub Menu Toggle*/
$offCanvasNav.on('click', 'li a, li .menu-expand', function (e) {
var $this = $(this);
if (
$this
.parent()
.attr('class')
.match(/\b(menu-item-has-children|has-children|has-sub-menu)\b/) &&
($this.attr('href') === '#' || $this.hasClass('menu-expand'))
) {
e.preventDefault();
if ($this.siblings('ul:visible').length) {
$this.parent('li').removeClass('active');
$this.siblings('ul').slideUp();
} else {
$this.parent('li').addClass('active');
$this.closest('li').siblings('li').removeClass('active').find('li').removeClass('active');
$this.closest('li').siblings('li').find('ul:visible').slideUp();
$this.siblings('ul').slideDown();
}
}
});
}
/*=============================================
= Page Load =
=============================================*/
$(window).on('load', function () {
preloader();
progressPageLoad();
offcanvasMenu();
dataBackground();
aosAnimation();
counterState();
customSwiper();
magnificPopup();
wowAnimation();
carauselScroll();
odometerCounter();
masonryFillter();
inputFocus();
mobileHeaderActive();
});
})(jQuery);

10
assets/js/vendors/ScrollToPlugin.min.js vendored Normal file
View File

@@ -0,0 +1,10 @@
/*!
* ScrollToPlugin 3.12.0
* https://greensock.com
*
* @license Copyright 2023, GreenSock. All rights reserved.
* Subject to the terms at https://greensock.com/standard-license or for Club GreenSock members, the agreement issued with that membership.
* @author: Jack Doyle, jack@greensock.com
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).window=e.window||{})}(this,function(e){"use strict";function l(){return"undefined"!=typeof window}function m(){return f||l()&&(f=window.gsap)&&f.registerPlugin&&f}function n(e){return"string"==typeof e}function o(e){return"function"==typeof e}function p(e,t){var o="x"===t?"Width":"Height",n="scroll"+o,l="client"+o;return e===T||e===i||e===c?Math.max(i[n],c[n])-(T["inner"+o]||i[l]||c[l]):e[n]-e["offset"+o]}function q(e,t){var o="scroll"+("x"===t?"Left":"Top");return e===T&&(null!=e.pageXOffset?o="page"+t.toUpperCase()+"Offset":e=null!=i[o]?i:c),function(){return e[o]}}function s(e,t){if(!(e=y(e)[0])||!e.getBoundingClientRect)return console.warn("scrollTo target doesn't exist. Using 0")||{x:0,y:0};var o=e.getBoundingClientRect(),n=!t||t===T||t===c,l=n?{top:i.clientTop-(T.pageYOffset||i.scrollTop||c.scrollTop||0),left:i.clientLeft-(T.pageXOffset||i.scrollLeft||c.scrollLeft||0)}:t.getBoundingClientRect(),r={x:o.left-l.left,y:o.top-l.top};return!n&&t&&(r.x+=q(t,"x")(),r.y+=q(t,"y")()),r}function t(e,t,o,l,r){return isNaN(e)||"object"==typeof e?n(e)&&"="===e.charAt(1)?parseFloat(e.substr(2))*("-"===e.charAt(0)?-1:1)+l-r:"max"===e?p(t,o)-r:Math.min(p(t,o),s(e,t)[o]-r):parseFloat(e)-r}function u(){f=m(),l()&&f&&"undefined"!=typeof document&&document.body&&(T=window,c=document.body,i=document.documentElement,y=f.utils.toArray,f.config({autoKillThreshold:7}),v=f.config(),a=1)}var f,a,T,i,c,y,v,h,r={version:"3.12.0",name:"scrollTo",rawVars:1,register:function register(e){f=e,u()},init:function init(e,l,r,s,i){a||u();var p=this,c=f.getProperty(e,"scrollSnapType");p.isWin=e===T,p.target=e,p.tween=r,l=function _clean(e,t,l,r){if(o(e)&&(e=e(t,l,r)),"object"!=typeof e)return n(e)&&"max"!==e&&"="!==e.charAt(1)?{x:e,y:e}:{y:e};if(e.nodeType)return{y:e,x:e};var s,i={};for(s in e)i[s]="onAutoKill"!==s&&o(e[s])?e[s](t,l,r):e[s];return i}(l,s,e,i),p.vars=l,p.autoKill=!!l.autoKill,p.getX=q(e,"x"),p.getY=q(e,"y"),p.x=p.xPrev=p.getX(),p.y=p.yPrev=p.getY(),h=h||f.core.globals().ScrollTrigger,"smooth"===f.getProperty(e,"scrollBehavior")&&f.set(e,{scrollBehavior:"auto"}),c&&"none"!==c&&(p.snap=1,p.snapInline=e.style.scrollSnapType,e.style.scrollSnapType="none"),null!=l.x?(p.add(p,"x",p.x,t(l.x,e,"x",p.x,l.offsetX||0),s,i),p._props.push("scrollTo_x")):p.skipX=1,null!=l.y?(p.add(p,"y",p.y,t(l.y,e,"y",p.y,l.offsetY||0),s,i),p._props.push("scrollTo_y")):p.skipY=1},render:function render(e,t){for(var o,n,l,r,s,i=t._pt,c=t.target,u=t.tween,f=t.autoKill,a=t.xPrev,y=t.yPrev,d=t.isWin,g=t.snap,x=t.snapInline;i;)i.r(e,i.d),i=i._next;o=d||!t.skipX?t.getX():a,l=(n=d||!t.skipY?t.getY():y)-y,r=o-a,s=v.autoKillThreshold,t.x<0&&(t.x=0),t.y<0&&(t.y=0),f&&(!t.skipX&&(s<r||r<-s)&&o<p(c,"x")&&(t.skipX=1),!t.skipY&&(s<l||l<-s)&&n<p(c,"y")&&(t.skipY=1),t.skipX&&t.skipY&&(u.kill(),t.vars.onAutoKill&&t.vars.onAutoKill.apply(u,t.vars.onAutoKillParams||[]))),d?T.scrollTo(t.skipX?o:t.x,t.skipY?n:t.y):(t.skipY||(c.scrollTop=t.y),t.skipX||(c.scrollLeft=t.x)),!g||1!==e&&0!==e||(n=c.scrollTop,o=c.scrollLeft,x?c.style.scrollSnapType=x:c.style.removeProperty("scroll-snap-type"),c.scrollTop=n+1,c.scrollLeft=o+1,c.scrollTop=n,c.scrollLeft=o),t.xPrev=t.x,t.yPrev=t.y,h&&h.update()},kill:function kill(e){var t="scrollTo"===e;!t&&"scrollTo_x"!==e||(this.skipX=1),!t&&"scrollTo_y"!==e||(this.skipY=1)}};r.max=p,r.getOffset=s,r.buildGetter=q,m()&&f.registerPlugin(r),e.ScrollToPlugin=r,e.default=r;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}});

10
assets/js/vendors/ScrollTrigger.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1
assets/js/vendors/aos.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

56
assets/js/vendors/bouncing-blob.js vendored Normal file
View File

@@ -0,0 +1,56 @@
const MIN_SPEED = 1.5;
const MAX_SPEED = 2.5;
function randomNumber(min, max) {
return Math.random() * (max - min) + min;
}
class Blob {
constructor(el) {
this.el = el;
const boundingRect = this.el.getBoundingClientRect();
this.size = boundingRect.width;
this.initialX = randomNumber(0, window.innerWidth - this.size);
this.initialY = randomNumber(0, window.innerHeight - this.size);
this.el.style.top = `${this.initialY}px`;
this.el.style.left = `${this.initialX}px`;
this.vx = randomNumber(MIN_SPEED, MAX_SPEED) * (Math.random() > 0.5 ? 1 : -1);
this.vy = randomNumber(MIN_SPEED, MAX_SPEED) * (Math.random() > 0.5 ? 1 : -1);
this.x = this.initialX;
this.y = this.initialY;
}
update() {
this.x += this.vx;
this.y += this.vy;
if (this.x >= window.innerWidth - this.size) {
this.x = window.innerWidth - this.size;
this.vx *= -1;
}
if (this.y >= window.innerHeight - this.size) {
this.y = window.innerHeight - this.size;
this.vy *= -1;
}
if (this.x <= 0) {
this.x = 0;
this.vx *= -1;
}
if (this.y <= 0) {
this.y = 0;
this.vy *= -1;
}
}
move() {
this.el.style.transform = `translate(${this.x - this.initialX}px, ${this.y - this.initialY}px)`;
}
}
function initBlobs() {
const blobEls = document.querySelectorAll('.bouncing-blob');
const blobs = Array.from(blobEls).map((blobEl) => new Blob(blobEl));
function update() {
requestAnimationFrame(update);
blobs.forEach((blob) => {
blob.update();
blob.move();
});
}
requestAnimationFrame(update);
}
initBlobs();

42
assets/js/vendors/color-modes.js vendored Normal file
View File

@@ -0,0 +1,42 @@
"use strict";
document.addEventListener("DOMContentLoaded", function () {
// Get all dark-light switchers
var switchers = document.querySelectorAll(".dark-light-switcher");
// Function to update icons and theme
function updateTheme(isDarkMode) {
switchers.forEach(function (switcher) {
var darkIcon = switcher.querySelector(".bi-sun-fill");
var lightIcon = switcher.querySelector(".bi-moon-stars-fill");
if (isDarkMode) {
lightIcon.style.display = "none";
darkIcon.style.display = "block";
} else {
lightIcon.style.display = "block";
darkIcon.style.display = "none";
}
});
document.documentElement.setAttribute("data-bs-theme", isDarkMode ? "dark" : "light");
}
// Retrieve stored theme and update the theme on page load
var storedTheme = localStorage.getItem("theme");
var isDarkMode = storedTheme === "dark";
updateTheme(isDarkMode);
// Add event listeners to all switchers
switchers.forEach(function (switcher) {
switcher.addEventListener("click", function () {
var currentTheme = localStorage.getItem("theme");
var isDarkMode = currentTheme === "dark";
// Toggle theme
var newTheme = isDarkMode ? "light" : "dark";
localStorage.setItem("theme", newTheme);
updateTheme(newTheme === "dark");
});
});
});

464
assets/js/vendors/gsap-custom.js vendored Normal file
View File

@@ -0,0 +1,464 @@
(function ($) {
('use strict');
// Detect mobile device (Do not remove!!!)
var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Nokia|Opera Mini/i.test(navigator.userAgent) ? true : false;
if (isMobile) {
$('body').addClass('is-mobile');
}
var tl = gsap.timeline();
var $pageAppear = $('.appear');
if ($pageAppear.length) {
tl.from(
$pageAppear,
{
duration: 2,
y: 40,
autoAlpha: 0,
stagger: 0.3,
ease: Expo.easeOut,
clearProps: 'all',
},
1.5,
);
}
//PARALLAX ITEM
$('.parallax-item').wrap('<div class="parallax-item-wrap"></div>');
const itemWraps = document.querySelectorAll('.parallax-item-wrap');
const calcValue = (value, inputMax, inputMin, outputMax, outputMin) => {
const percent = (value - inputMin) / (inputMax - inputMin);
const output = percent * (outputMax - outputMin) + outputMin;
return output;
};
itemWraps.forEach(function (itemWrap) {
const item = itemWrap.querySelector('.parallax-item');
itemWrap.addEventListener('mousemove', function (e) {
const mouseX = e.clientX;
const mouseY = e.clientY;
const rect = itemWrap.getBoundingClientRect();
const offsetX = rect.left + rect.width / 2;
const offsetY = rect.top + rect.height / 2;
const deltaX = mouseX - offsetX;
const deltaY = mouseY - offsetY;
const percentX = deltaX / (itemWrap.clientWidth / 2);
const percentY = deltaY / (itemWrap.clientHeight / 2);
TweenMax.to(item, 0.5, {
x: calcValue(percentX, 1, -1, 20, -20),
y: calcValue(percentY, 1, -1, 20, -20),
rotationX: calcValue(percentY, 1, -1, 5, -5),
rotationY: calcValue(percentX, 1, -1, -5, 5),
ease: Power1.easeOut,
});
});
itemWrap.addEventListener('mouseleave', function (e) {
TweenMax.to(item, 0.5, {
x: 0,
y: 0,
rotationX: 0,
rotationY: 0,
ease: Power1.easeOut,
});
});
});
//GSAP scrollTrigger
gsap.registerPlugin(ScrollTrigger);
let animationRotate = document.querySelectorAll('.animation-rotate');
animationRotate.forEach((animationRotate) => {
gsap.to(animationRotate, {
duration: 2,
rotation: 360,
ease: 'linear',
repeat: -1,
});
});
let scrollRotate = document.querySelectorAll('.scroll-rotate');
scrollRotate.forEach((scrollRotate) => {
gsap.to(scrollRotate, {
scrollTrigger: {
trigger: scrollRotate,
scrub: 2,
},
rotation: 720,
});
});
let scrollMoveRight = document.querySelectorAll('.scroll-move-right');
scrollMoveRight.forEach((scrollMoveRight) => {
gsap.to(scrollMoveRight, {
x: 500,
duration: 1.5,
scrollTrigger: {
trigger: scrollMoveRight,
start: 'top 30%',
scrub: 2,
},
});
});
let scrollMoveLeft = document.querySelectorAll('.scroll-move-left');
scrollMoveLeft.forEach((scrollMoveLeft) => {
gsap.to(scrollMoveLeft, {
x: -500,
duration: 1.5,
scrollTrigger: {
trigger: scrollMoveLeft,
start: 'top 30%',
scrub: 2,
},
});
});
let scrollMoveRight2 = document.querySelectorAll('.scroll-move-right2');
scrollMoveRight2.forEach((scrollMoveRight2) => {
gsap.to(scrollMoveRight2, {
x: 800,
duration: 1.5,
scrollTrigger: {
trigger: scrollMoveRight2,
start: 'top 80%',
scrub: 2,
},
});
});
let scrollMoveLeft2 = document.querySelectorAll('.scroll-move-left2');
scrollMoveLeft2.forEach((scrollMoveLeft2) => {
gsap.to(scrollMoveLeft2, {
x: -400,
duration: 1.5,
scrollTrigger: {
trigger: scrollMoveLeft2,
start: 'top 100%',
scrub: 2,
},
});
});
let scrollMoveUp = document.querySelectorAll('.scroll-move-up');
scrollMoveUp.forEach((scrollMoveUp) => {
gsap.to(scrollMoveUp, {
y: -400,
duration: 1.5,
scrollTrigger: {
trigger: scrollMoveUp,
start: 'top 20%',
scrub: 2,
},
});
});
let growUp = document.querySelectorAll('.grow-up');
growUp.forEach((growUp) => {
gsap.fromTo(
growUp,
{
autoAlpha: 0.5,
scale: 0.7,
},
{
autoAlpha: 1,
duration: 2,
scale: 1,
scrollTrigger: {
trigger: growUp,
start: 'top 90%',
},
stagger: 0.2,
},
);
});
let scrollZoomIn = document.querySelectorAll('.scroll-zoom-in');
scrollZoomIn.forEach((scrollZoomIn) => {
gsap.to(scrollZoomIn, {
scrollTrigger: {
trigger: scrollZoomIn,
start: 'top 10%',
scrub: 2,
},
scale: 1.2,
});
});
let scrollZoomIn2 = document.querySelectorAll('.scroll-zoom-in-2');
scrollZoomIn2.forEach((scrollZoomIn2) => {
gsap.to(scrollZoomIn2, {
scrollTrigger: {
trigger: scrollZoomIn2,
start: 'top 90%',
scrub: 2,
},
scale: 1,
});
});
let scrollZoomOut = document.querySelectorAll('.scroll-zoom-out');
scrollZoomOut.forEach((scrollZoomOut) => {
gsap.to(scrollZoomOut, {
scrollTrigger: {
trigger: scrollZoomOut,
start: 'top 5%',
scrub: 2,
},
scale: 0.5,
});
});
$('.scoll-reduce-border-radius').each(function () {
$(this).wrap('<div class="scoll-reduce-border-wraper"></div>');
});
let reduceBorderRadius = document.querySelectorAll('.scoll-reduce-border-wraper');
reduceBorderRadius.forEach((reduceBorderRadius) => {
gsap.to(reduceBorderRadius, {
scrollTrigger: {
trigger: reduceBorderRadius,
start: 'top 98%',
end: 'top 50%',
duration: 0,
scrub: 2,
},
borderRadius: '0',
});
});
let revealContainers = document.querySelectorAll('.reveal-img');
revealContainers.forEach((revealContainers) => {
let image = revealContainers.querySelector('img');
let tl4 = gsap.timeline({
scrollTrigger: {
trigger: revealContainers,
toggleActions: 'restart none none reset',
},
});
tl4.set(revealContainers, { autoAlpha: 1 });
tl4.from(revealContainers, 1.5, {
xPercent: -100,
ease: Power2.out,
});
tl4.from(image, 1.5, {
xPercent: 100,
scale: 1.3,
delay: -1.5,
ease: Power2.out,
});
});
//TEXT-UP
if ($(window).width() > 500) {
$('.text-up').each(function () {
$(this).wrap('<div class="reveal-text-cover"><div class="reveal-text"></div></div>');
});
}
const revealTexts = document.querySelectorAll('.reveal-text');
revealTexts.forEach((revealText) => {
gsap.set(revealText, { y: 120, opacity: 0 });
gsap.to(revealText, {
duration: 1,
y: 0,
opacity: 1,
ease: Power3.easeOut,
scrollTrigger: {
trigger: revealText,
start: 'top 80%',
end: 'top 20%',
toggleActions: 'play none none reverse',
},
});
});
//FADEIN-UP
const fadeInUp = document.querySelectorAll('.fadeInUp');
fadeInUp.forEach((fadeInUp) => {
gsap.fromTo(
fadeInUp,
{
opacity: 0,
scale: 0.8,
y: 150,
},
{
opacity: 1,
duration: 1.5,
scale: 1,
y: 0,
},
);
});
let scrollMoveUp2 = document.querySelectorAll('.scroll-move-up-2');
scrollMoveUp2.forEach((scrollMoveUp2) => {
gsap.to(scrollMoveUp2, {
y: -100,
duration: 1.5,
scrollTrigger: {
trigger: scrollMoveUp2,
start: 'top 70%',
scrub: 2,
},
});
});
let scrollMoveUp3 = document.querySelectorAll('.scroll-move-up-3');
scrollMoveUp3.forEach((scrollMoveUp3) => {
gsap.to(scrollMoveUp3, {
y: -80,
duration: 2,
scrollTrigger: {
trigger: scrollMoveUp3,
start: 'top 70%',
scrub: 2,
},
});
});
//FILLTER BUTTON
let btnTags = document.querySelectorAll('.btn-tags.btn-filter');
btnTags.forEach((btnTags) => {
gsap.from(btnTags, {
duration: 2,
scale: 0.8,
opacity: 0,
delay: 0,
stagger: 0.2,
ease: 'elastic',
force3D: true,
scrollTrigger: {
trigger: btnTags,
start: 'top 80%',
},
});
});
function numberWithCommas(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
}
// Image parallax
// ===============
var imageParallax = document.querySelectorAll('.parallax-image');
if (imageParallax.length > 0) {
$('.parallax-image').each(function () {
// Add wrap <div>.
$(this).wrap('<div class="parallax-image-wrap"><div class="parallax-image-inner"></div></div>');
// Add overflow hidden.
$('.parallax-image-wrap').css({ overflow: 'hidden' });
var $animImageParallax = $(this);
var $aipWrap = $animImageParallax.parents('.parallax-image-wrap');
var $aipInner = $aipWrap.find('.parallax-image-inner');
let tl_ImageParallax = gsap.timeline({
scrollTrigger: {
trigger: $aipWrap,
start: 'top bottom',
end: 'bottom top',
scrub: true,
onEnter: () => animImgParallaxRefresh(),
},
});
tl_ImageParallax.to($animImageParallax, { yPercent: 30, ease: 'none' });
function animImgParallaxRefresh() {
tl_ImageParallax.scrollTrigger.refresh();
}
// Zoom in
let tl_aipZoomIn = gsap.timeline({
scrollTrigger: {
trigger: $aipWrap,
start: 'top 99%',
},
});
tl_aipZoomIn.from($aipInner, { duration: 1.5, autoAlpha: 0, scale: 1.2, ease: Power2.easeOut, clearProps: 'all' });
});
}
// SHOW IMAGE WHEN HOVER DIV
const imageHoverShow = gsap.utils.toArray('.image-show-item');
imageHoverShow.forEach((target) => {
const image = target.querySelector('.project__img');
const tlImageShow = gsap.timeline();
tlImageShow
.fromTo(
image,
{
autoAlpha: 0,
duration: 1,
clipPath: 'polygon(0 0, 100% 0, 100% 0, 0 0)',
},
{
autoAlpha: 1,
clipPath: 'polygon(0 0, 100% 0, 100% 100%, 0 100%)',
},
'>-0.5',
)
.pause();
target.anim = tlImageShow.play().reversed(true);
target.addEventListener('mouseenter', animateImg);
target.addEventListener('mouseleave', animateImg);
target.addEventListener('mousemove', (e) => {
let xpos = e.offsetX;
let ypos = e.offsetY;
const tlImageShow = gsap.timeline();
tlImageShow.to(image, { x: xpos, y: ypos });
});
});
function animateImg() {
this.anim.reversed(!this.anim.reversed());
}
ScrollTrigger.refresh();
//growup-image
var imageZoomIn = $('.img-zoom-in');
if (imageZoomIn.length > 0) {
gsap.from(imageZoomIn, 2, {
scale: 0,
ease: 'power3.inOut',
delay: 0,
});
}
//image mark
var imageMark = $('.image-mark');
if (imageMark.length > 0) {
gsap.from(imageMark, 2, {
width: '100%',
ease: 'power3.inOut',
delay: 0.5,
});
}
//image mark
if (!isMobile) {
let imageMarkScroll = document.querySelectorAll('.image-mark-scroll');
imageMarkScroll.forEach((imageMarkScroll) => {
gsap.to(imageMarkScroll, {
width: 0,
ease: 'power3.inOut',
duration: 1,
scrollTrigger: {
trigger: imageMarkScroll,
start: 'top 90%',
},
});
});
} else {
$('.image-mark-scroll').remove();
}
$('.text-opacity').each(function () {
var words = $(this).text().split(' ');
var total = words.length;
$(this).empty();
for (index = 0; index < total; index++) {
$(this).append($('<span /> ').text(words[index] + ' '));
}
});
var TextOpacity = gsap.utils.toArray('.text-opacity');
TextOpacity.forEach(function (TextOpacity) {
var spanOpacity = TextOpacity.querySelectorAll('span');
gsap.to(spanOpacity, {
scrollTrigger: {
trigger: TextOpacity,
start: 'top 85%',
end: () => `+=${TextOpacity.offsetHeight}`,
scrub: 1,
},
duration: 1,
opacity: 1,
stagger: 0.5,
ease: Linear.easeNone,
});
});
//Horizontal Scroll
if (!isMobile) {
let horizontalItem = document.querySelectorAll('.horizontal-item');
let sectionsRail = document.querySelectorAll('.horizontal-rail');
sectionsRail.forEach((sectionsRail) => {
gsap.to(sectionsRail, {
xPercent: -100 * (horizontalItem.length - 1),
ease: 'none',
scrollTrigger: {
trigger: '.horizontal-wrap',
pin: '.horizontal-wrap',
scrub: true,
start: 'top top',
end: () => `+=${sectionsRail.offsetWidth}`,
},
});
});
}
//END
})(jQuery);

10
assets/js/vendors/gsap.min.js vendored Normal file

File diff suppressed because one or more lines are too long

7
assets/js/vendors/headhesive.min.js vendored Normal file
View File

@@ -0,0 +1,7 @@
/*!
* Headhesive.js v1.2.3 - An on-demand sticky header
* Author: Copyright (c) Mark Goodyear <@markgdyr> <http://markgoodyear.com>
* Url: http://markgoodyear.com/labs/headhesive
* License: MIT
*/
!function(t,e){"function"==typeof define&&define.amd?define([],function(){return e()}):"object"==typeof exports?module.exports=e():t.Headhesive=e()}(this,function(){"use strict";var t=function(e,s){for(var o in s)s.hasOwnProperty(o)&&(e[o]="object"==typeof s[o]?t(e[o],s[o]):s[o]);return e},e=function(t,e){var s,o,i,n=Date.now||function(){return(new Date).getTime()},l=null,c=0,r=function(){c=n(),l=null,i=t.apply(s,o),s=o=null};return function(){var f=n(),h=e-(f-c);return s=this,o=arguments,0>=h?(clearTimeout(l),l=null,c=f,i=t.apply(s,o),s=o=null):l||(l=setTimeout(r,h)),i}},s=function(){return void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop},o=function(t,e){for(var s=0,o=t.offsetHeight;t;)s+=t.offsetTop,t=t.offsetParent;return"bottom"===e&&(s+=o),s},i=function(e,s){"querySelector"in document&&"addEventListener"in window&&(this.visible=!1,this.options={offset:300,offsetSide:"top",classes:{clone:"headhesive",stick:"headhesive--stick",unstick:"headhesive--unstick"},throttle:250,onInit:function(){},onStick:function(){},onUnstick:function(){},onDestroy:function(){}},this.elem="string"==typeof e?document.querySelector(e):e,this.options=t(this.options,s),this.init())};return i.prototype={constructor:i,init:function(){if(this.clonedElem=this.elem.cloneNode(!0),this.clonedElem.className+=" "+this.options.classes.clone,document.body.insertBefore(this.clonedElem,document.body.firstChild),"number"==typeof this.options.offset)this.scrollOffset=this.options.offset;else{if("string"!=typeof this.options.offset)throw new Error("Invalid offset: "+this.options.offset);this._setScrollOffset()}this._throttleUpdate=e(this.update.bind(this),this.options.throttle),this._throttleScrollOffset=e(this._setScrollOffset.bind(this),this.options.throttle),window.addEventListener("scroll",this._throttleUpdate,!1),window.addEventListener("resize",this._throttleScrollOffset,!1),this.options.onInit.call(this)},_setScrollOffset:function(){"string"==typeof this.options.offset&&(this.scrollOffset=o(document.querySelector(this.options.offset),this.options.offsetSide))},destroy:function(){document.body.removeChild(this.clonedElem),window.removeEventListener("scroll",this._throttleUpdate),window.removeEventListener("resize",this._throttleScrollOffset),this.options.onDestroy.call(this)},stick:function(){this.visible||(this.clonedElem.className=this.clonedElem.className.replace(new RegExp("(^|\\s)*"+this.options.classes.unstick+"(\\s|$)*","g"),""),this.clonedElem.className+=" "+this.options.classes.stick,this.visible=!0,this.options.onStick.call(this))},unstick:function(){this.visible&&(this.clonedElem.className=this.clonedElem.className.replace(new RegExp("(^|\\s)*"+this.options.classes.stick+"(\\s|$)*","g"),""),this.clonedElem.className+=" "+this.options.classes.unstick,this.visible=!1,this.options.onUnstick.call(this))},update:function(){s()>this.scrollOffset?this.stick():this.unstick()}},i});

File diff suppressed because one or more lines are too long

12
assets/js/vendors/isotope.pkgd.min.js vendored Normal file

File diff suppressed because one or more lines are too long

2
assets/js/vendors/jquery-3.7.1.min.js vendored Normal file

File diff suppressed because one or more lines are too long

152
assets/js/vendors/jquery.appear.js vendored Normal file
View File

@@ -0,0 +1,152 @@
/*
* jQuery.appear
* https://github.com/bas2k/jquery.appear/
* http://code.google.com/p/jquery-appear/
* http://bas2k.ru/
*
* Copyright (c) 2009 Michael Hixson
* Copyright (c) 2012-2014 Alexander Brovikov
* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
*/
(function ($) {
$.fn.appear = function (fn, options) {
var settings = $.extend({
//arbitrary data to pass to fn
data: undefined,
//call fn only on the first appear?
one: true,
// X & Y accuracy
accX: 0,
accY: 0
}, options);
return this.each(function () {
var t = $(this);
//whether the element is currently visible
t.appeared = false;
if (!fn) {
//trigger the custom event
t.trigger('appear', settings.data);
return;
}
var w = $(window);
//fires the appear event when appropriate
var check = function () {
//is the element hidden?
if (!t.is(':visible')) {
//it became hidden
t.appeared = false;
return;
}
//is the element inside the visible window?
var a = w.scrollLeft();
var b = w.scrollTop();
var o = t.offset();
var x = o.left;
var y = o.top;
var ax = settings.accX;
var ay = settings.accY;
var th = t.height();
var wh = w.height();
var tw = t.width();
var ww = w.width();
if (y + th + ay >= b &&
y <= b + wh + ay &&
x + tw + ax >= a &&
x <= a + ww + ax) {
//trigger the custom event
if (!t.appeared) t.trigger('appear', settings.data);
} else {
//it scrolled out of view
t.appeared = false;
}
};
//create a modified fn with some additional logic
var modifiedFn = function () {
//mark the element as visible
t.appeared = true;
//is this supposed to happen only once?
if (settings.one) {
//remove the check
w.unbind('scroll', check);
var i = $.inArray(check, $.fn.appear.checks);
if (i >= 0) $.fn.appear.checks.splice(i, 1);
}
//trigger the original fn
fn.apply(this, arguments);
};
//bind the modified fn to the element
if (settings.one) t.one('appear', settings.data, modifiedFn);
else t.bind('appear', settings.data, modifiedFn);
//check whenever the window scrolls
w.scroll(check);
//check whenever the dom changes
$.fn.appear.checks.push(check);
//check now
(check)();
});
};
//keep a queue of appearance checks
$.extend($.fn.appear, {
checks: [],
timeout: null,
//process the queue
checkAll: function () {
var length = $.fn.appear.checks.length;
if (length > 0) while (length--) ($.fn.appear.checks[length])();
},
//check the queue asynchronously
run: function () {
if ($.fn.appear.timeout) clearTimeout($.fn.appear.timeout);
$.fn.appear.timeout = setTimeout($.fn.appear.checkAll, 20);
}
});
//run checks when these methods are called
$.each(['append', 'prepend', 'after', 'before', 'attr',
'removeAttr', 'addClass', 'removeClass', 'toggleClass',
'remove', 'css', 'show', 'hide'], function (i, n) {
var old = $.fn[n];
if (old) {
$.fn[n] = function () {
var r = old.apply(this, arguments);
$.fn.appear.run();
return r;
}
}
});
})(jQuery);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

80
assets/js/vendors/smart-stick-nav.js vendored Normal file
View File

@@ -0,0 +1,80 @@
/* -------------------------------------
Smart sticky
-------------------------------------- */
(function (document, window, index) {
'use strict';
var elSelector = '.navbar',
element = document.querySelector(elSelector);
if (!element) return true;
var elHeight = 0,
elTop = 0,
dHeight = 0,
wHeight = 0,
wScrollCurrent = 0,
wScrollBefore = 0,
wScrollDiff = 0;
window.addEventListener('scroll', function () {
elHeight = element.offsetHeight;
dHeight = document.body.offsetHeight;
wHeight = window.innerHeight;
wScrollCurrent = window.pageYOffset;
wScrollDiff = wScrollBefore - wScrollCurrent;
elTop = parseInt(window.getComputedStyle(element).getPropertyValue('top')) + wScrollDiff;
if (wScrollCurrent <= 0)
// scrolled to the very top; element sticks to the top
element.style.top = '0px';
else if (wScrollDiff > 0)
// scrolled up; element slides in
element.style.top = (elTop > 0 ? 0 : elTop) + 'px';
else if (wScrollDiff < 0) {
// scrolled down
if (wScrollCurrent + wHeight >= dHeight - elHeight)
// scrolled to the very bottom; element slides in
element.style.top = ((elTop = wScrollCurrent + wHeight - dHeight) < 0 ? elTop : 0) + 'px';
// scrolled down; element slides out
else element.style.top = (Math.abs(elTop) > elHeight ? -elHeight : elTop) + 'px';
}
wScrollBefore = wScrollCurrent;
});
})(document, window, 0);
(function (document, window, index) {
'use strict';
var elSelector = '.navbar',
element = document.querySelector(elSelector);
if (!element) return true;
var elHeight = 0,
elTop = 0,
dHeight = 0,
wHeight = 0,
wScrollCurrent = 0,
wScrollBefore = 0,
wScrollDiff = 0;
window.addEventListener('scroll', function () {
elHeight = element.offsetHeight;
dHeight = document.body.offsetHeight;
wHeight = window.innerHeight;
wScrollCurrent = window.pageYOffset;
wScrollDiff = wScrollBefore - wScrollCurrent;
elTop = parseInt(window.getComputedStyle(element).getPropertyValue('top')) + wScrollDiff;
if (wScrollCurrent <= 0) {
// scrolled to the very top; element sticks to the top
element.style.top = '0px';
element.style.position = 'relative';
$('.navbar').removeClass('navbar-stick');
} else if (wScrollDiff > 0) {
// scrolled up; element slides in
element.style.top = (elTop > 0 ? 0 : elTop) + 'px';
element.style.position = 'fixed';
element.style.width = '100%';
$('.navbar').addClass('navbar-stick');
} else if (wScrollDiff < 0) {
// scrolled down
if (wScrollCurrent + wHeight >= dHeight - elHeight)
// scrolled to the very bottom; element slides in
element.style.top = ((elTop = wScrollCurrent + wHeight - dHeight) < 0 ? elTop : 0) + 'px';
// scrolled down; element slides out
else element.style.top = (Math.abs(elTop) > elHeight ? -elHeight : elTop) + 'px';
}
wScrollBefore = wScrollCurrent;
});
})(document, window, 0);

14
assets/js/vendors/swiper-bundle.min.js vendored Normal file

File diff suppressed because one or more lines are too long

2
assets/js/vendors/wow.min.js vendored Normal file

File diff suppressed because one or more lines are too long