HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/quadcode/frontend/src/js/components/lp/Animation.js
import { gsap, Power1, Power2 } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";

gsap.registerPlugin(ScrollTrigger, Power1);

export const Animation = () => {
  const tl = gsap.timeline();

  tl.to('.header__item', { opacity: 1, duration: 1, stagger: 0.2, ease: Power1.easeOut }, '+=0.5');
  tl.to('.block-hero__title', { x: 0, opacity: 1, duration: 0.4, stagger: 0, ease: Power1.easeOut }, '0.9');
  tl.to('.block-hero__subtitle', { x: 0, opacity: 1, duration: 0.4, stagger: 0, ease: Power1.easeOut }, '1.1');
  tl.to('.block-hero__button', { x: 0, opacity: 1, duration: 0.4, stagger: 0, ease: Power1.easeOut }, '1.3');
  tl.to('.block-hero__item img', { scale: 1, opacity: 1, duration: 0.4, stagger: 0, ease: Power1.easeOut }, '1.3');
  solutionFirst();
  solutionMiddle();
  solutionLast();

  instrumentFirst();
  instrumentMiddle();
  instrumentLast();
}

const solutionFirst = () => {
  const demoItems = document.querySelectorAll('.demo__item');
  const trigger = document.querySelector('.block-solution__first');
  let time = 0.25;

  gsap.to('.block-solution__title', {
    scrollTrigger: trigger,
    y: 0,
    delay: 0.2,
    duration: 0.5,
    opacity: 1,
    ease: Power1.easeOut
  });

  demoItems.forEach(item => {
    gsap.to(item, {
      scrollTrigger: trigger,
      y: 0,
      delay: time,
      duration: 0.5,
      opacity: 1,
      ease: Power2.easeOut
    })
    time += 0.2
  });

  gsap.to('.demo__button', {
    scrollTrigger: trigger,
    y: 0,
    delay: 0.5,
    duration: 0.5,
    opacity: 1,
    ease: Power1.easeOut
  });
}

const solutionMiddle = () => {
  gsap.to('.block-solution__middle', {
    scrollTrigger: '.block-solution__middle',
    y: 0,
    delay: 0.2,
    duration: 0.5,
    opacity: 1,
    ease: Power1.easeOut
  });
}

const solutionLast = () => {
  const trigger = document.querySelector('.block-solution__last');
  const chapterItems = document.querySelectorAll('.side__chapters');
  let time = 0.3;

  gsap.to('.side__title', {
    scrollTrigger: trigger,
    x: 0,
    delay: 0.2,
    duration: 0.5,
    opacity: 1,
    ease: Power1.easeOut
  });

  chapterItems.forEach(item => {
    gsap.to(item, {
      scrollTrigger: trigger,
      x: 0,
      delay: time,
      duration: 0.5,
      opacity: 1,
      ease: Power2.easeOut
    })
    time += 0.1
  });

  gsap.to('.side img', {
    scrollTrigger: trigger,
    scale: 1,
    delay: 0.6,
    duration: 0.5,
    opacity: 1,
    ease: Power1.easeOut
  });
}

const instrumentFirst = () => {
  const trigger = document.querySelector('.block-instrument__first');
  const title = trigger.querySelector('.block-instrument__title');
  const cardItems = trigger.querySelectorAll('.card');
  let time = 0.3;

  gsap.to(title, {
    scrollTrigger: trigger,
    y: 0,
    delay: 0.2,
    duration: 0.5,
    opacity: 1,
    ease: Power1.easeOut
  });

  cardItems.forEach(item => {
    gsap.to(item, {
      scrollTrigger: trigger,
      y: 0,
      delay: time,
      duration: 0.5,
      opacity: 1,
      ease: Power2.easeOut
    })
    time += 0.1
  });

  gsap.to('.block-instrument__button', {
    scrollTrigger: trigger,
    y: 0,
    delay: 0.8,
    duration: 0.5,
    opacity: 1,
    ease: Power1.easeOut
  });
}

const instrumentMiddle = () => {
  gsap.to('.block-instrument__middle img', {
    scrollTrigger: '.block-instrument__middle',
    scale: 1,
    delay: 0.2,
    duration: 0.5,
    opacity: 1,
    ease: Power1.easeOut
  });
}

const instrumentLast = () => {
  const trigger = document.querySelector('.block-instrument__last');
  const title = trigger.querySelector('.block-instrument__title');
  const cardItems = trigger.querySelectorAll('.card');
  let time = 0.3;

  gsap.to(title, {
    scrollTrigger: trigger,
    y: 0,
    delay: 0.2,
    duration: 0.5,
    opacity: 1,
    ease: Power1.easeOut
  });

  cardItems.forEach(item => {
    gsap.to(item, {
      scrollTrigger: trigger,
      y: 0,
      delay: time,
      duration: 0.5,
      opacity: 1,
      ease: Power2.easeOut
    })
    time += 0.1
  });
}