blob: 04747fbbe1fe7eb5bb4d9bc205b7c1ed24ec735d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
import React, { ReactElement } from "react";
import styles from "./Marquee.module.css";
import Marquee from "./Marquee";
export interface MarqueeLink {
title: string;
url: string;
}
interface Props {
links: MarqueeLink[]
}
const getRandomDelayBetween = (start: number, end: number) => `${Math.random() * (end - start) + start}s`;
const getTopFromIndex = (index: number, n: number) => `calc((100% - 50px) * (${index} / ${n - 1}))`;
const getRandomAnimationName = () => Math.random() > 0.5 ? "right" : "left";
const Marquees = ({ links }: Props): ReactElement => {
return (
<div className={styles.marqueeContainer}>
{ links.map((link, idx) => (
<Marquee
key={idx}
url={link.url}
text={link.title}
delayShorthand={getRandomDelayBetween(0, 9)}
topShorthand={getTopFromIndex(idx, links.length)}
direction={getRandomAnimationName()}
/>
))}
</div>
);
};
export default Marquees;
|