Skip to content

Commit a62a4d8

Browse files
committed
animation fix
1 parent b8ef7f1 commit a62a4d8

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

src/App.jsx

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { useState, useCallback } from "react";
12
import Nav from "./components/Nav";
23
import Jumbotron from "./components/Jumbotron";
34
import Description from "./components/Description";
@@ -11,10 +12,15 @@ import WebgiViewer from "./components/WebgiViewer";
1112
import Loader from "./components/Loader";
1213

1314
function App() {
15+
const [loading, setLoading] = useState(true);
16+
17+
const handleViewerReady = useCallback(() => {
18+
setLoading(false);
19+
}, []);
1420

1521
return (
1622
<div className="App">
17-
<Loader />
23+
{loading && <Loader />}
1824
<Nav />
1925
<Jumbotron />
2026
<FirstPlant />
@@ -24,7 +30,7 @@ function App() {
2430
<ThirdPlant />
2531
<About />
2632
<Footer />
27-
<WebgiViewer />
33+
<WebgiViewer onViewerReady={handleViewerReady} />
2834
</div>
2935
);
3036
}

src/components/Loader.jsx

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
1-
import React from 'react';
1+
import React, { useEffect } from 'react';
22
import AnimatedLogo from '../assets/images/animated-logo.gif';
33

44

55
const Loader = () => {
6+
useEffect(() => {
7+
const timer = setTimeout(() => {
8+
document.querySelector('.loader').style.display = 'none';
9+
}, 5000);
10+
11+
return () => clearTimeout(timer);
12+
}, []);
13+
614
return (
715
<div className='loader'>
816
<img className='logo' src={AnimatedLogo} alt="butterfly logo" />

src/components/WebgiViewer.jsx

+3-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { scrollAnimation } from "../lib/scroll-animation";
2121

2222
gsap.registerPlugin(ScrollTrigger);
2323

24-
const WebgiViewer = () => {
24+
const WebgiViewer = ({ onViewerReady }) => {
2525
const canvasRef = useRef(null);
2626
const isMobile = window.innerWidth < 768;
2727
const isTablet =
@@ -95,7 +95,8 @@ const WebgiViewer = () => {
9595
}
9696
});
9797
memoizedScrollAnimation(position, target, onUpdate, viewer, isTablet);
98-
}, []);
98+
onViewerReady();
99+
}, [onViewerReady]);
99100

100101
useEffect(() => {
101102
setupViewer();

0 commit comments

Comments
 (0)