Seasonal changes!
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 1a80597..e4b24b9 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -4,6 +4,7 @@
"Captchas",
"Carrington",
"Cavendon",
+ "Clicksmas",
"Customise",
"RSMV",
"Statethis",
@@ -27,6 +28,7 @@
"slowmode",
"softban",
"svgr",
+ "tsparticles",
"unban",
"viewas"
]
diff --git a/Components/Header.js b/Components/Header.js
index b89c0e0..f526591 100644
--- a/Components/Header.js
+++ b/Components/Header.js
@@ -34,76 +34,6 @@
function Header(props) {
const keys = Object.keys(props.effects ?? {});
- const changingSubtextEffect = keys.includes("changingSubtext");
- const typedEffect = keys.includes("type") || changingSubtextEffect;
-
-
- const [ clickTotal, setClickTotal ] = React.useState(0);
- const [ currText, setCurrentText ] = React.useState(typedEffect ? "" : (props.subtext ?? ""));
- const [ hasRendered, setHasRendered ] = React.useState(false);
-
- function typeText(currentText, toType) {
- let count = 0;
- let interval = setInterval(() => {
- setCurrentText(currentText + toType.substring(0, count));
- count++;
- if (count > toType.length) {
- clearInterval(interval);
- }
- }, props.effects.type ?? 50);
- return currentText + toType
- }
-
- function unTypeText(currentText, amount) {
- let count = 0;
- const permanentText = currentText.slice(0, currentText.length - amount);
- let toRemove = currentText.slice(currentText.length - amount, currentText.length);
- let interval = setInterval(() => {
- toRemove = toRemove.slice(0, toRemove.length - 1);
- setCurrentText(permanentText + toRemove);
- count++;
- if (count >= amount) {
- clearInterval(interval);
- }
- }, 500 / amount);
- return permanentText;
- }
-
- function startAnimations() {
- setHasRendered(true);
- if (!changingSubtextEffect && typedEffect) return typeText("", props.subtext);
- if (changingSubtextEffect && typedEffect) {
- let lastPicked = -1;
- function selectNextString() {
- if (Math.floor(Math.random() * 100) === 0) {
- return props.effects.changingSubtext.rare[Math.floor(Math.random() * props.effects.changingSubtext.rare.length)];
- }
- let selectedIndex = lastPicked
- while (selectedIndex === lastPicked) {
- selectedIndex = Math.floor(Math.random() * props.effects.changingSubtext.common.length);
- }
- lastPicked = selectedIndex;
- return props.effects.changingSubtext.common[selectedIndex];
- }
- let nextString = selectNextString();
- let currentText = typeText("", props.subtext + nextString);
- setTimeout(() => {
- function next() {
- setTimeout(() => {
- setTimeout(() => {
- nextString = selectNextString();
- currentText = typeText(currentText, nextString);
- }, 1000);
- currentText = unTypeText(currentText, nextString.length);
- }, 4000);
- }
- next()
- setInterval(() => {
- next()
- }, 5000);
- }, 3000);
- }
- }
const { reward: reward, isAnimating: isAnimating } = useReward('headerConfetti', 'confetti', {
elementSize: 10,
@@ -128,6 +58,7 @@
const all = positive.concat(negative)
const [imagesPreloaded, setImagesPreloaded] = useState(false)
+ const [clickTotal, setClickTotal] = useState(0)
useEffect(() => {
let isCancelled = false
async function effect() {
@@ -175,8 +106,6 @@
}
}
- if (!hasRendered) startAnimations();
-
return (
<div className={Styles.header} style={{
margin: "0",
@@ -222,8 +151,7 @@
<h1 className={Styles.title}>{props.name}</h1>
</div>
<div className={Styles.textBar}>
- <p className={Styles.subtext + " " + (props.buttons.length ? Styles.subtextExtra : null)}>{currText}</p>
- { typedEffect ? <div className={Styles.typedEffect} /> : <></> }
+ <p className={Styles.subtext + " " + (props.buttons.length ? Styles.subtextExtra : null)}>{props.subtext}</p>
</div>
<a href="#skipNav" id="skipNav" style={{display: "none"}} />
{ props.buttons.length ?
diff --git a/Components/NavBar.js b/Components/NavBar.js
index 6ea02c9..0b81c84 100644
--- a/Components/NavBar.js
+++ b/Components/NavBar.js
@@ -1,6 +1,7 @@
import React, { Component } from "react";
import Styles from '../styles/Components/navbar.module.css';
import ThemeChangeButton from './ThemeChangeButton';
+import { getSeason } from '../pages/api/season';
class Divider extends Component {
render() {
@@ -18,17 +19,18 @@
}
render() {
+ const season = getSeason().filePath;
return (
<div className={Styles.cutoffContainer}>
<div className={Styles.container + " " + (this.props.subBar ? Styles.slideUp : null)}>
<a href="#skipNav" className={Styles.skipNav}>Skip navigation</a>
<a className={Styles.icon} href="/"><img alt="Clicks" className={Styles.icon} src="https://assets.clicks.codes/web/logos/clicks.svg" /></a>
<Divider />
- <a className={Styles.icon} href="/gps"><img alt="GPS" className={Styles.icon} src="https://assets.clicks.codes/bots/gps/circle.svg" /></a>
- <a className={Styles.icon} href="/rsm"><img alt="RSM" className={Styles.icon} src="https://assets.clicks.codes/bots/rsm/circle.svg" /></a>
- {/* <a className={Styles.icon} href="/nucleus#"><img alt="Nucleus" className={Styles.icon} src="https://assets.clicks.codes/bots/nucleus/circle.svg" /></a> */}
- <a className={Styles.icon} href="/clicksforms"><img alt="ClicksForms" className={Styles.icon} src="https://assets.clicks.codes/bots/clicksforms/circle.svg" /></a>
- <a className={Styles.icon} href="/hooky"><img alt="Hooky" className={Styles.icon} src="https://assets.clicks.codes/bots/hooky/circle.svg" /></a>
+ <a className={Styles.icon} href="/gps"><img alt="GPS" className={Styles.icon} src={`https://assets.clicks.codes/bots/gps/${season}.svg`} /></a>
+ <a className={Styles.icon} href="/rsm"><img alt="RSM" className={Styles.icon} src={`https://assets.clicks.codes/bots/rsm/${season}.svg`} /></a>
+ {/* <a className={Styles.icon} href="/nucleus#"><img alt="Nucleus" className={Styles.icon} src={`https://assets.clicks.codes/bots/nucleus/${season}.svg`} /></a> */}
+ <a className={Styles.icon} href="/clicksforms"><img alt="ClicksForms" className={Styles.icon} src={`https://assets.clicks.codes/bots/clicksforms/${season}.svg`} /></a>
+ <a className={Styles.icon} href="/hooky"><img alt="Hooky" className={Styles.icon} src={`https://assets.clicks.codes/bots/hooky/${season}.svg`} /></a>
<Divider />
<ThemeChangeButton/>
</div>
diff --git a/package.json b/package.json
index 107f685..400bd8d 100644
--- a/package.json
+++ b/package.json
@@ -31,10 +31,12 @@
"react-indiana-drag-scroll": "^2.1.0",
"react-redux": "^7.2.4",
"react-rewards": "^2.0.3",
+ "react-snowfall": "^1.2.1",
"react-tiny-popover": "^7.0.1",
"redux": "^4.1.1",
"redux-thunk": "^2.3.0",
- "theme-ui": "^0.12.0"
+ "theme-ui": "^0.12.0",
+ "tsparticles": "^2.5.3"
},
"devDependencies": {
"eslint": "7.32.0",
diff --git a/pages/_app.js b/pages/_app.js
index a94db64..d571c96 100644
--- a/pages/_app.js
+++ b/pages/_app.js
@@ -3,6 +3,8 @@
import { ThemeProvider } from 'theme-ui';
import React from 'react';
import Styles from '../styles/globals.module.css';
+import { getSeason } from './api/season';
+import Christmas from '../Components/overlays/christmas';
const theme = {
config: {
@@ -77,6 +79,15 @@
showSubBar(<p className={Styles.message}>{text}</p>, 5, positioning);
}
+ const season = getSeason();
+ let Overlay = <></>;
+ switch (season.season) {
+ case "christmas": {
+ Overlay = <Christmas />;
+ break;
+ }
+ }
+
return <>
<ThemeProvider theme={theme}>
<NavBar
@@ -92,7 +103,12 @@
showSubBar={showSubBar}
hideSubBar={hideSubBar}
showMessage={showMessage}
+ season={season}
+ randomSeed={new Date().getMinutes() / 60} // FIXME: Janky hack mate
/>
+ <div className={Styles.container} style={{
+ pointerEvents: "none",
+ }}>{Overlay}</div>
<div className={Styles.container} />
</ThemeProvider>
</>
diff --git a/pages/index.js b/pages/index.js
index dbd1779..b7738ab 100644
--- a/pages/index.js
+++ b/pages/index.js
@@ -2,14 +2,40 @@
import Header from '../Components/Header';
import { AutoLayout, Panel, Title, Subtitle, Text, Divider } from '../Components/Panels';
-const duplicate = (arr, numberOfRepetitions) => arr.flatMap(i => Array.from({ length: numberOfRepetitions }).fill(i));
export default function Home(props) {
+ let subtexts = []
+ switch (props.season.season) {
+ case "christmas": {
+ subtexts = [
+ "Merry Christmas!",
+ "Happy Holidays!",
+ "Season's Greetings!",
+ "Merry Clicksmas!",
+ ]
+ break;
+ }
+ case "halloween": {
+ subtexts = [
+ "Happy Halloween!",
+ "Trick or Treat!",
+ "boo"
+ ]
+ }
+ default: {
+ subtexts = [
+ "Creating projects that click"
+ ];
+ }
+ }
+
+ let currentSubtext = subtexts[Math.floor(props.randomSeed * subtexts.length)];
+
return (
<>
<Header
name="Clicks"
- subtext="We develop "
+ subtext={currentSubtext}
customImage="https://assets.clicks.codes/web/logos/clicks.svg"
embedImage="https://assets.clicks.codes/web/logos/clicks.png"
gradient={["6576CC", "4B5899"]}
@@ -18,11 +44,6 @@
index={true}
fullscreen={true}
showSubBar={props.showSubBar}
- effects={{ type: 50, changingSubtext: {
- common: [
- "websites", "Discord bots", "utilities", "APIs"
- ], rare: ["overly complicated header animations"]
- }}}
/>
<AutoLayout>
<Panel halfSize={false}>
diff --git a/styles/Components/header.module.css b/styles/Components/header.module.css
index 1c2e3f3..17d1ee4 100644
--- a/styles/Components/header.module.css
+++ b/styles/Components/header.module.css
@@ -165,22 +165,3 @@
margin-bottom: 0px;
margin-top: 25px;
}
-
-.typedEffect {
- animation: blink-caret 1s ease-in-out infinite;
- border-right: 0.08em solid var(--theme-ui-colors-text);
- margin-left: 5px;
- background-color: var(--theme-ui-colors-text);
- height: 1.5em;
- width: 2px;
-}
-
-@keyframes blink-caret {
- from,
- to {
- opacity: 0%;
- }
- 50% {
- opacity: 100%;
- }
-}
\ No newline at end of file
diff --git a/styles/Components/navbar.module.css b/styles/Components/navbar.module.css
index 2329643..394cba2 100644
--- a/styles/Components/navbar.module.css
+++ b/styles/Components/navbar.module.css
@@ -4,6 +4,7 @@
margin: 0;
padding: 0;
user-select: none;
+ border-radius: 100vw;
}
.themeChangeIcon {
diff --git a/yarn.lock b/yarn.lock
index 6a8d724..76b9242 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -4528,6 +4528,11 @@
resolved "https://registry.yarnpkg.com/react-fade-in/-/react-fade-in-2.0.1.tgz#b4bcd7dac63d6857ebcd68facbff2f5f9616278f"
integrity sha512-oqS/WT4znaXEHmL+yo0IDUDY7uC9K4RP35j1SdRUEBspR09B2iIC0i8oJ28tPOr6Ez/L2aktF9p89j+DbsTVNw==
+react-fast-compare@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
+ integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
+
react-fast-marquee@^1.3.1:
version "1.3.5"
resolved "https://registry.yarnpkg.com/react-fast-marquee/-/react-fast-marquee-1.3.5.tgz#e53995027102fbec92da90606d7ca89703db9903"
@@ -4581,6 +4586,13 @@
resolved "https://registry.yarnpkg.com/react-rewards/-/react-rewards-2.0.4.tgz#617f6c1bb591f74bb0e0455cc6ff355ee6d36665"
integrity sha512-Lw7gIhD8yPDzC6boaVmcXwuTHRLSLAdqB3kZc+29YWvdHWsuc3fdAZlxI8Cm8fvD8fhP+3JkZBtzX224czw15w==
+react-snowfall@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/react-snowfall/-/react-snowfall-1.2.1.tgz#68cab6a1d05aa7c3211bce96a3a97977ca7dc57f"
+ integrity sha512-d2UR3nDq3F0DJGaTfJ0QNbBo76UZHtT9wHFj+ePxAl4FgSxWBhxB/Bjn06f5iDBwhgwiZ7CZmv3lwfNvjo6a+w==
+ dependencies:
+ react-fast-compare "^3.2.0"
+
react-tiny-popover@^7.0.1:
version "7.2.0"
resolved "https://registry.yarnpkg.com/react-tiny-popover/-/react-tiny-popover-7.2.0.tgz#e6277620efea6acea9c47efbfe5dcb473a552e99"
@@ -5076,6 +5088,338 @@
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e"
integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==
+tsparticles-engine@^2.5.2:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/tsparticles-engine/-/tsparticles-engine-2.5.2.tgz#1772e857c452af806602ab0f33c90338d109f8b8"
+ integrity sha512-P2m1E/EIlvEnH9l7OEIpeKXxSn1ThNhWSp6zeRYvH/DntJpI5Oqa/AMrjum15rUzBkMDgRo7XFO4LqRWs8iB/Q==
+
+tsparticles-interaction-external-attract@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-attract/-/tsparticles-interaction-external-attract-2.5.3.tgz#18554439696ee04bb0c40afe893afcaee791ec67"
+ integrity sha512-W9w8ztCLjFK8ADROTpCBepyotTfwZdRqU6FMe0W0KU3Lj4GpR53dN7tk/YUuLtZut1DRFNH0SUh6IIuW4Oq2oQ==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-bounce@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-bounce/-/tsparticles-interaction-external-bounce-2.5.3.tgz#5acc056d69711f05203056112d00b4bb568f0cd5"
+ integrity sha512-z/3e8KSTm5n6kIU9KRpSr+XLz8ARDV4XuFqtDcRZBp0CXWcb2GVuuUQvHXhir1KPM3VzlHjHK8wxzqaE6TRfaw==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-bubble@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-bubble/-/tsparticles-interaction-external-bubble-2.5.3.tgz#16e081b18be1cfa2560970292f7ee01ec82cdddf"
+ integrity sha512-cAXvn5ScwEku1e01CzWFMMGogvDkY/O/FnMr3kFvxztY3BeeSuj3RIwd+INp5U0L0D88hue0kL0BEIfPQLbfCA==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-connect@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-connect/-/tsparticles-interaction-external-connect-2.5.3.tgz#c2cea19c60abd7658937266e3b530a73227a7f04"
+ integrity sha512-KOcNNxb4MxmDeTfnNawWtn72YaILjTvpN5zSNXRDDiYLJ9dFAuoU8jfXxTyb5EGtF6PNkU9er0KX2aA3hQNM1w==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-grab@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-grab/-/tsparticles-interaction-external-grab-2.5.3.tgz#8f6c7628c7cd59837bfbd6599151dbbd8b62e121"
+ integrity sha512-bVTdB8lojJsd+9Pm2kGuQQa9VrIq+hITn2lBQ2YVzlF+vJ4a02Nvw07PHKlnmu+EJDmMwlGmu5z1oAFaWaRGMA==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-pause@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-pause/-/tsparticles-interaction-external-pause-2.5.3.tgz#bde967da09fa0a6eafaf973ab09a3678b2b40174"
+ integrity sha512-LPNcYCmo9/PoHdyTb+8nmZxvbtknYdqnjs70fYIngL4pNvdq8KwO38Z1anh7rBIVvHOlpm2w7NnwO3jeOnYOVQ==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-push@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-push/-/tsparticles-interaction-external-push-2.5.3.tgz#eaababd0f71f20e56f39520a783f280a85b98d80"
+ integrity sha512-5vfDVR9ciAGORVszq8ciqE6HYmpciDS2zom2++apHLvxM1AAQJKh/zRy3W3hl2qQ5aEvb67t/iaRiglTtQD2qA==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-remove@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-remove/-/tsparticles-interaction-external-remove-2.5.3.tgz#2fd951732aa6a66f2fa2de801fa65bb557baed21"
+ integrity sha512-+goJgwiTHR6OFmuHZjqI7wO+VFeH8GObJEZzvRLzAZ1jRDZquc/Lm7bMLnQjKOS+pA44tLrZB4ErFT1/+VH1dg==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-repulse@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-repulse/-/tsparticles-interaction-external-repulse-2.5.3.tgz#3db55dd2170c92c100407d1e8b101640454d4214"
+ integrity sha512-6o/Xk8oTB/oGAlp291f8HllRvb5P7Qs6Z35imJ+hmLBuxXpu++TRbBJl9AyTuzhkaiX46cy765q79K4Nf71tTQ==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-slow@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-slow/-/tsparticles-interaction-external-slow-2.5.3.tgz#47216b262686aa9cadedbf4d1fb8a3e8075199ca"
+ integrity sha512-nWDtU2q3gLccu9CafmONAVJFA9gMvAJ26Uf7+jiqWPAG0R3p/oL8INZDyIwKtxd+OFkE6QwBWe1BJovOUjJfZw==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-external-trail@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-interaction-external-trail/-/tsparticles-interaction-external-trail-2.5.3.tgz#10410f65c929f1a3561baab46cf97bddb909662a"
+ integrity sha512-Z0PuHPjgNHTUOHGSyM31dls03Brq1//6qrSfMu4zmVcfyb9wVZN2UeTd0OjqNLiz7gsBVdFWinRVe20EcOPYIQ==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-particles-attract@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-interaction-particles-attract/-/tsparticles-interaction-particles-attract-2.5.3.tgz#d764c564a825cac61685bc78ea30cc872728cdc5"
+ integrity sha512-vACi7Zdx3LtqFNbapCxylNuj/T52lhc8xN2vTq2oGMEm0f8JjBqrsfXYzvN7cpVVg4hQDiBWwWgAftQEwAHkJQ==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-particles-collisions@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-interaction-particles-collisions/-/tsparticles-interaction-particles-collisions-2.5.3.tgz#641ec461256be2600172b2f6a5266537c94319b4"
+ integrity sha512-KhlWgrMr8GD0rkj75yhhEZkvr56DJxIlk57YZfBHrYvpLVUyYDXO7iv5mVAPG7qtfxfMwggEXZSpCxbH5bfhbA==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-interaction-particles-links@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-interaction-particles-links/-/tsparticles-interaction-particles-links-2.5.3.tgz#03f80105ec1e4f49fa7f877f89f79c5d45d80c2f"
+ integrity sha512-aT43l+90HV81IKuNPgVKUU/1aMwC6aVYQeqRwyUi1WMoW2n0JUuM/k2ifqEUsfNuoXOfedU9HRXk4+iXnKd0SQ==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-move-base@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-move-base/-/tsparticles-move-base-2.5.3.tgz#e0a735972a078348a4903c2740f5a09a8be9b91d"
+ integrity sha512-YOpTua9TfBoU6dmK6VdvVgXIpb2iU8PuA3lL+p/Qe6VLqGx4XgSt27pD63Qa5p7lFZTCxa4cnE+DcHFVSRWG1Q==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-move-parallax@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-move-parallax/-/tsparticles-move-parallax-2.5.3.tgz#c37143119779824738c45d09866f638bb08d3fe1"
+ integrity sha512-l9vgLZrdR9WIaiJ8lH7Nq2h60zg4/w+X/pvp76CWce3S7ochW3s5r/J9dnNJOSyHUEvs42s76yOdZA1apkFHvw==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-particles.js@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-particles.js/-/tsparticles-particles.js-2.5.3.tgz#df7c777721a7da2841a578f88cabc47c7467b3cd"
+ integrity sha512-nksab+qsfpz+gA/qXqpiQJYaMznPh52FY77kdcttVUKj2b5vQLjMq2avewREKnsWJYqDl5LohekbEMXDznS2wQ==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-plugin-absorbers@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-plugin-absorbers/-/tsparticles-plugin-absorbers-2.5.3.tgz#7d1164f37f09be4e5fffbb2b4448c096991f182b"
+ integrity sha512-sN0Utyd62vMXr46Pko/0ncRbhTLUfkFNpY4x8Z7eCnkX4WnWkVMrcwT3ib7wn56/rtxn8rzWYCIquaioU8oOEQ==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-plugin-easing-quad@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-plugin-easing-quad/-/tsparticles-plugin-easing-quad-2.5.3.tgz#1244cea271c3b28fb56c0d76c4a8ac0cdce63439"
+ integrity sha512-rGhPbL4mJrQkziYu5wpcKtdDqj3srfvcWqfm6D3NBjdveWm5Q6o/fA8hlkNXuBPCIIpQG4cfwQYx8nc5BEtwgA==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-plugin-emitters@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-plugin-emitters/-/tsparticles-plugin-emitters-2.5.3.tgz#a05815f74aa56111764d4df5bc30b82d845732ea"
+ integrity sha512-yF1qiGJu99EIG40nTLVGwV6JEgpB9NGCynd6chvqby7A01AWoqpaUaQ7AdyblcjpPq2WYkyMhJWdeNEk6YblFQ==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-shape-circle@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-shape-circle/-/tsparticles-shape-circle-2.5.3.tgz#1df7c5f43b26566734a2d7de6e0065a3c93b2fa9"
+ integrity sha512-D8zbbC/eaqaOjd3MjhmbkmMQ+uH97RKNJL3YyZ743s1YowCGPK4c6N5NUdVNqljWHn15ALpq0NV/GzY5oGVTNw==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-shape-image@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-shape-image/-/tsparticles-shape-image-2.5.3.tgz#faf004a839cfb9fd7f467f00e5cb856029b5b4c1"
+ integrity sha512-hdSxxkTXlEC2vn1Hi//GDZNqIGCVyuRfoTmE8ex3hj9NA0YhZoBcmr+4kmFDfJRBvtvumIQk4V1JVruHgoVnuw==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-shape-line@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-shape-line/-/tsparticles-shape-line-2.5.3.tgz#fbf1fe2361ee605fd06450a7522f1d31ab97db0d"
+ integrity sha512-ee+mA40mTfvbpetU0ohmsiZ1ClY7OCFwcAEfNlfTJc7BGUVQuvEN47RHR9UtL4k3REu9JNKr6J2EIuUOgRwwLw==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-shape-polygon@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-shape-polygon/-/tsparticles-shape-polygon-2.5.3.tgz#08b3d280946db84839a9005277cacf38f807ada3"
+ integrity sha512-1w+6nke5LvKd/jEwCgj8QKDIi5qFLjm54Dg1fH4S1jhEtNAM25o28Law0JGfZeernmBWqaxBj5pV9BJGeqqfcw==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-shape-square@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-shape-square/-/tsparticles-shape-square-2.5.3.tgz#43888f4df268a959b0a2185b278d08a4ec4f9430"
+ integrity sha512-LXS6UJJx0gCB7kS8kJb4N01owMnIwYkUaN5eVcN5h0b8Hc2cX+E962yImR2ZN+Hcq4P9lb7qXGj7SsAAa054WQ==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-shape-star@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-shape-star/-/tsparticles-shape-star-2.5.3.tgz#d499ff380c37b5fce776347f3e1c5849f3430ef2"
+ integrity sha512-/xvEP8XQ1TWcKBGMA0vTyu7EW/dcOz3jaOzgtAN3MvKgu9AQDiT02HUNW92QIUmqLStlCPAttf37eUss+JGTVw==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-shape-text@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-shape-text/-/tsparticles-shape-text-2.5.3.tgz#5dbc92a3ce7729bc07dea30c499e9d6e0d8b0d4a"
+ integrity sha512-d6/xZVhBTAVtnMOH8K9nCamgfiO10M2q67rAUDTUVTscYES996jQYsTeDfg43IIO7eruXBH80LZVLt1MBZJ3DA==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-slim@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-slim/-/tsparticles-slim-2.5.3.tgz#82634757ae64826248af929108fcddc9c86fba13"
+ integrity sha512-t44w8lrajWIOp2P14G9Hfp32v+EzpjjB4402jsbVHRyaQdm3vlgrtqA1H/2qQGdJHkl24lUZXNlLqX4fSoBZbg==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+ tsparticles-interaction-external-attract "^2.5.3"
+ tsparticles-interaction-external-bounce "^2.5.3"
+ tsparticles-interaction-external-bubble "^2.5.3"
+ tsparticles-interaction-external-connect "^2.5.3"
+ tsparticles-interaction-external-grab "^2.5.3"
+ tsparticles-interaction-external-pause "^2.5.3"
+ tsparticles-interaction-external-push "^2.5.3"
+ tsparticles-interaction-external-remove "^2.5.3"
+ tsparticles-interaction-external-repulse "^2.5.3"
+ tsparticles-interaction-external-slow "^2.5.3"
+ tsparticles-interaction-particles-attract "^2.5.3"
+ tsparticles-interaction-particles-collisions "^2.5.3"
+ tsparticles-interaction-particles-links "^2.5.3"
+ tsparticles-move-base "^2.5.3"
+ tsparticles-move-parallax "^2.5.3"
+ tsparticles-particles.js "^2.5.3"
+ tsparticles-plugin-easing-quad "^2.5.3"
+ tsparticles-shape-circle "^2.5.3"
+ tsparticles-shape-image "^2.5.3"
+ tsparticles-shape-line "^2.5.3"
+ tsparticles-shape-polygon "^2.5.3"
+ tsparticles-shape-square "^2.5.3"
+ tsparticles-shape-star "^2.5.3"
+ tsparticles-shape-text "^2.5.3"
+ tsparticles-updater-angle "^2.5.3"
+ tsparticles-updater-color "^2.5.3"
+ tsparticles-updater-life "^2.5.3"
+ tsparticles-updater-opacity "^2.5.3"
+ tsparticles-updater-out-modes "^2.5.3"
+ tsparticles-updater-size "^2.5.3"
+ tsparticles-updater-stroke-color "^2.5.3"
+
+tsparticles-updater-angle@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-updater-angle/-/tsparticles-updater-angle-2.5.3.tgz#91a6ce3fa715d2ad44034f4debf82e1df4715c9f"
+ integrity sha512-2oQYSV5PC0FWnwRswcUZjXAeuHa8QQw0dK3NnyxG52PuyJorxGz38t8/INrPMxaNDA8LvSHO+CzYFi9CzQvXbg==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-updater-color@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-updater-color/-/tsparticles-updater-color-2.5.3.tgz#93da0ab8d81643b6646c95ec1b0a721c55fe4582"
+ integrity sha512-eNmyfkzk7AfghCLwCewt+480LAfK5uX2D5jnQC/Vo5VNxco1P0clGTx61g9pc3vVzUV1e5NEj6Gw1tCSb8f+nw==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-updater-destroy@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-updater-destroy/-/tsparticles-updater-destroy-2.5.3.tgz#f41e0209b8b1ddf71741623b6ce2ef1f135ff38a"
+ integrity sha512-2G6haBy5PqpNmnOLVeUzmm82zjfx8YmSwu9qZ5nUEPLNDQCDkAN4u6mffrkZRajY0u/KmwTTaajIVK0ExIR9aw==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-updater-life@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-updater-life/-/tsparticles-updater-life-2.5.3.tgz#68ae7b0d56825466aaf173f863bce990c4da702c"
+ integrity sha512-smK9iuNRPmK9rr74X9xzx9LPpVaSbRY+uri7/lI9NLvoi5b1PtYImYSIQGiXrPfFZ2/KL+MApddVnwqI/8MHqw==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-updater-opacity@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-updater-opacity/-/tsparticles-updater-opacity-2.5.3.tgz#4f54110b1c12520e7655c01a62834fa61bde1f0b"
+ integrity sha512-1tLJYDq1uQM7sNn8QPO8s2yPTRAJONCxyETWl9SAc6ghTX0qrebcla3pGRBWMT0g0cIJb4qIsO9Nyaq9RYf0iQ==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-updater-out-modes@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-updater-out-modes/-/tsparticles-updater-out-modes-2.5.3.tgz#3fb366bec4aebb08755d673d72d7b1d30f434cd3"
+ integrity sha512-KyhA2YNA3j7TFv2lOwZN9JXuR5z1/N7fUmaFTVJGooI6Bf7WvTFaDFp0gvufrBSd4CqDwsQITqDOwV2J1sGDEQ==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-updater-roll@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-updater-roll/-/tsparticles-updater-roll-2.5.3.tgz#ff21b29fbfc77d3fede95f7474256bf931109ed1"
+ integrity sha512-jkiGkFW7s7TJBqfsiC4ZU0/gR/YCAeOkHAIIuHcVy4soM2rf0P2NKKzZxYMxSIyGQrCG0Hxw0GEGlLV5UiqK2w==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-updater-size@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-updater-size/-/tsparticles-updater-size-2.5.3.tgz#9c7ba5beb52462f993b559b6884e8922b5c4726a"
+ integrity sha512-kU1qyP8NKQd5XhAc2jp/VLn2AxakM+HFKozlzHIp8DPy+INW5lpgswo2Cc5e1ZXQCdOMQlQFn6cNCbct24kKcQ==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-updater-stroke-color@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-updater-stroke-color/-/tsparticles-updater-stroke-color-2.5.3.tgz#888088fc9a56788309d3ab4bf74730066611fcd2"
+ integrity sha512-XONraSFtepvtEqJXQWQSV+KOEWill9HtwVju8CsFgS/NtJYlYKfpSEbv41r7pWRhZRaFZN/BbOnMfwHCdLuBHw==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-updater-tilt@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-updater-tilt/-/tsparticles-updater-tilt-2.5.3.tgz#cb52b4f8898aae2ddcb0cc333b5b9390f9ab0d73"
+ integrity sha512-Njt3aR+WtYiuvaLWnJOsL6NGDfVAfMrVzzOGrrf7X4TZKpk4HMMYcxOQFbvBQnoQZhenq3/TJh09Xx44AX7Rag==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-updater-twinkle@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-updater-twinkle/-/tsparticles-updater-twinkle-2.5.3.tgz#ae8e30b19d5cc0830b60ce5a8298a395a3fa067f"
+ integrity sha512-YvfRIf00stfTqttQL5IZ5yHaVufR7XnXxPk+GZ9bLzw5SGoUD+EyLlKVoP6L9gbY6O3I6c64ZKrKmBWMoYWxDg==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles-updater-wobble@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles-updater-wobble/-/tsparticles-updater-wobble-2.5.3.tgz#7d8801c238f8693f5ea67c09768e4649f2dadf3b"
+ integrity sha512-uB4VdZU1Ha7T8ZtOe0SAdnrVVkoCCDeb/BIUTGp7nF1/fVlv57v7iI54GmbYE9Aabljc2KOvEaaiYPO+iBJqgA==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+
+tsparticles@^2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tsparticles/-/tsparticles-2.5.3.tgz#670ad90fc3f92c7c2c44dc5fc78ae62483688755"
+ integrity sha512-qp3WdOKLQsZUgR11biq5mK5njmD6bhDcK2XpsLenj0oNvz6A/lHn8fv9KgWmLka6sBBHwTpAPpnFGBII5GMaqA==
+ dependencies:
+ tsparticles-engine "^2.5.2"
+ tsparticles-interaction-external-trail "^2.5.3"
+ tsparticles-plugin-absorbers "^2.5.3"
+ tsparticles-plugin-emitters "^2.5.3"
+ tsparticles-slim "^2.5.3"
+ tsparticles-updater-destroy "^2.5.3"
+ tsparticles-updater-roll "^2.5.3"
+ tsparticles-updater-tilt "^2.5.3"
+ tsparticles-updater-twinkle "^2.5.3"
+ tsparticles-updater-wobble "^2.5.3"
+
tsutils@^3.21.0:
version "3.21.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"