|
1 | 1 | import { useEffect, useState } from "react"
|
2 |
| -import { motion } from "framer-motion" |
| 2 | +import { Logo } from "./logo" |
3 | 3 | import manifest from "@/data/manifest.json"
|
4 | 4 |
|
| 5 | +let render = 0 |
| 6 | + |
5 | 7 | const clamp = (min: number, num: number, max: number) =>
|
6 | 8 | Math.min(Math.max(num, min), max)
|
7 | 9 |
|
8 |
| -const logoSize = 96 // px |
9 |
| - |
10 |
| -function randomFloat(min: number, max: number): number { |
11 |
| - const randomValue = Math.random() * (max - min) + min |
12 |
| - return Number(randomValue.toFixed(2)) |
13 |
| -} |
14 |
| - |
15 | 10 | function changeScale() {
|
16 | 11 | if (typeof window !== "undefined") {
|
17 | 12 | const width = window.innerWidth
|
@@ -41,41 +36,19 @@ export const LogosMarquee = () => {
|
41 | 36 | return () => window.removeEventListener("resize", handleEvent)
|
42 | 37 | }, [])
|
43 | 38 |
|
| 39 | + render += 1 |
| 40 | + console.log("render", render) |
| 41 | + |
44 | 42 | return (
|
45 | 43 | <div className="absolute top-0 left-0 w-full h-full opacity-30 pointer-events-none">
|
46 |
| - {Object.entries(manifest.providersOAuth) |
47 |
| - .sort(() => Math.random() - 0.5) |
48 |
| - .filter((_, i) => i < logoCount!) |
49 |
| - .map(([id, name]) => ( |
50 |
| - <motion.div |
51 |
| - initial={{ x: `${randomFloat(-10, 80)}vw` }} |
52 |
| - animate={{ x: "100vw" }} |
53 |
| - transition={{ |
54 |
| - delay: randomFloat(-10, 2), |
55 |
| - duration: randomFloat(40, 70), |
56 |
| - ease: "linear", |
57 |
| - repeat: Infinity, |
58 |
| - repeatType: "loop", |
59 |
| - }} |
60 |
| - style={{ |
61 |
| - width: (scale ?? 60) * randomFloat(0.8, 1.2), |
62 |
| - }} |
63 |
| - key={`company-${id}`} |
64 |
| - > |
65 |
| - <motion.img |
66 |
| - src={`/img/providers/${id}.svg`} |
67 |
| - className="opacity-40 animate-orbit grayscale dark:invert" |
68 |
| - style={{ |
69 |
| - // @ts-expect-error |
70 |
| - "--duration": randomFloat(20, 30), |
71 |
| - "--radius": randomFloat(10, 20), |
72 |
| - }} |
73 |
| - width={logoSize} |
74 |
| - height={logoSize} |
75 |
| - alt={`${name} logo`} |
76 |
| - /> |
77 |
| - </motion.div> |
78 |
| - ))} |
| 44 | + {Object.entries(manifest.providersOAuth) |
| 45 | + .sort(() => Math.random() - 0.5) |
| 46 | + .filter((_, i) => i < logoCount!) |
| 47 | + .map(([id, name]) => ( |
| 48 | + <Logo providerId={id} name={name} scale={scale} key={id} |
| 49 | + /> |
| 50 | + ) |
| 51 | + )} |
79 | 52 | </div>
|
80 | 53 | )
|
81 | 54 | }
|
0 commit comments