a swathe of updates

This commit is contained in:
luxumbra
2022-04-22 12:22:41 +01:00
parent 4f89e9c359
commit 220a90c670
46 changed files with 1284 additions and 440 deletions

View File

@@ -1,4 +1,5 @@
const plugins = require('next-compose-plugins')
const withImages = require('next-images');
// const withOptimizedImages = require('next-optimized-images');
const withBundleAnalyzer = require('@next/bundle-analyzer')({
enabled: process.env.ANALYZE === 'true',
@@ -46,6 +47,22 @@ if (process.env.EXPORT !== 'true') {
defaultLocale: 'en-US',
}
}
// module.exports = withImages({
// images: {
// loader: "custom",
// path: "/public/",
// imageSizes: [16, 32, 48, 64, 96, 128, 256, 384],
// deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
// nextImageExportOptimizer: {
// imageFolderPath: "public",
// exportFolderPath: "out",
// quality: 75,
// },
// },
// env: {
// storePicturesInWEBP: true,
// },
// })
module.exports = plugins(
[
@@ -79,7 +96,7 @@ module.exports = plugins(
},
},
],
// withOptimizedImages,
// withImages,
withBundleAnalyzer,
],
nextConfig

View File

@@ -15,7 +15,7 @@
"prettier": "prettier -l \"./src/**/*.{js,jsx,md}\"",
"dev": "next dev",
"build": "next build",
"export": "EXPORT=true next build && EXPORT=true next export",
"export": "EXPORT=true next build && EXPORT=true next export && EXPORT=true next-image-export-optimizer",
"analyze": "ANALYZE=true next build",
"start": "next start",
"fleek:deploy": "EXPORT=true next build && EXPORT=true next export && fleek site:deploy"
@@ -33,6 +33,7 @@
"@react-three/postprocessing": "^2.3.2",
"@widgetbot/react-embed": "^1.4.0",
"babel-plugin-glsl": "^1.0.0",
"cloudinary-build-url": "^0.2.4",
"framer-motion": "4.1.17",
"global": "^4.4.0",
"glsl-random": "^0.0.5",
@@ -43,6 +44,8 @@
"leva": "^0.9.23",
"lil-gui": "^0.11.0",
"next": "^12.1.4",
"next-image-export-optimizer": "^0.9.5",
"next-images": "^1.8.4",
"next-optimized-images": "^2.6.2",
"next-seo": "^5.4.0",
"react": "^18.0.0",

View File

@@ -74,74 +74,74 @@
<stop offset="1" stop-color="#FF22CF"/>
</linearGradient>
<linearGradient id="paint9_linear" x1="144.24" y1="249.503" x2="144.24" y2="37.9967" gradientUnits="userSpaceOnUse">
<stop stop-color="#04468B"/>
<stop offset="0.1742" stop-color="#0561A3"/>
<stop offset="0.5126" stop-color="#0791CE"/>
<stop offset="0.772" stop-color="#09AEE8"/>
<stop offset="0.9194" stop-color="#09B9F2"/>
<stop stop-color="#C433FF"/>
<stop offset="0.1742" stop-color="#D72EF0"/>
<stop offset="0.5126" stop-color="#F425D8"/>
<stop offset="0.772" stop-color="#FF22CF"/>
<stop offset="0.9194" stop-color="#FF22CF"/>
</linearGradient>
<linearGradient id="paint10_linear" x1="172.568" y1="249.503" x2="172.568" y2="37.9966" gradientUnits="userSpaceOnUse">
<stop stop-color="#04468B"/>
<stop offset="0.1742" stop-color="#0561A3"/>
<stop offset="0.5126" stop-color="#0791CE"/>
<stop offset="0.772" stop-color="#09AEE8"/>
<stop offset="0.9194" stop-color="#09B9F2"/>
<stop stop-color="#C433FF"/>
<stop offset="0.1742" stop-color="#D72EF0"/>
<stop offset="0.5126" stop-color="#F425D8"/>
<stop offset="0.772" stop-color="#FF22CF"/>
<stop offset="0.9194" stop-color="#FF22CF"/>
</linearGradient>
<linearGradient id="paint11_linear" x1="84.6012" y1="249.502" x2="84.6012" y2="37.9964" gradientUnits="userSpaceOnUse">
<stop stop-color="#04468B"/>
<stop offset="0.1742" stop-color="#0561A3"/>
<stop offset="0.5126" stop-color="#0791CE"/>
<stop offset="0.772" stop-color="#09AEE8"/>
<stop offset="0.9194" stop-color="#09B9F2"/>
<stop stop-color="#C433FF"/>
<stop offset="0.1742" stop-color="#D72EF0"/>
<stop offset="0.5126" stop-color="#F425D8"/>
<stop offset="0.772" stop-color="#FF22CF"/>
<stop offset="0.9194" stop-color="#FF22CF"/>
</linearGradient>
<linearGradient id="paint12_linear" x1="96.446" y1="249.502" x2="96.446" y2="37.9961" gradientUnits="userSpaceOnUse">
<stop stop-color="#04468B"/>
<stop offset="0.1742" stop-color="#0561A3"/>
<stop offset="0.5126" stop-color="#0791CE"/>
<stop offset="0.772" stop-color="#09AEE8"/>
<stop offset="0.9194" stop-color="#09B9F2"/>
<stop stop-color="#C433FF"/>
<stop offset="0.1742" stop-color="#D72EF0"/>
<stop offset="0.5126" stop-color="#F425D8"/>
<stop offset="0.772" stop-color="#FF22CF"/>
<stop offset="0.9194" stop-color="#FF22CF"/>
</linearGradient>
<linearGradient id="paint13_linear" x1="184.837" y1="249.503" x2="184.837" y2="37.9968" gradientUnits="userSpaceOnUse">
<stop stop-color="#04468B"/>
<stop offset="0.1742" stop-color="#0561A3"/>
<stop offset="0.5126" stop-color="#0791CE"/>
<stop offset="0.772" stop-color="#09AEE8"/>
<stop offset="0.9194" stop-color="#09B9F2"/>
<stop stop-color="#C433FF"/>
<stop offset="0.1742" stop-color="#D72EF0"/>
<stop offset="0.5126" stop-color="#F425D8"/>
<stop offset="0.772" stop-color="#FF22CF"/>
<stop offset="0.9194" stop-color="#FF22CF"/>
</linearGradient>
<linearGradient id="paint14_linear" x1="139.626" y1="249.502" x2="139.626" y2="37.9963" gradientUnits="userSpaceOnUse">
<stop stop-color="#04468B"/>
<stop offset="0.1742" stop-color="#0561A3"/>
<stop offset="0.5126" stop-color="#0791CE"/>
<stop offset="0.772" stop-color="#09AEE8"/>
<stop offset="0.9194" stop-color="#09B9F2"/>
<stop stop-color="#C433FF"/>
<stop offset="0.1742" stop-color="#D72EF0"/>
<stop offset="0.5126" stop-color="#F425D8"/>
<stop offset="0.772" stop-color="#FF22CF"/>
<stop offset="0.9194" stop-color="#FF22CF"/>
</linearGradient>
<linearGradient id="paint15_linear" x1="85.3726" y1="249.502" x2="85.3726" y2="37.9968" gradientUnits="userSpaceOnUse">
<stop stop-color="#04468B"/>
<stop offset="0.1742" stop-color="#0561A3"/>
<stop offset="0.5126" stop-color="#0791CE"/>
<stop offset="0.772" stop-color="#09AEE8"/>
<stop offset="0.9194" stop-color="#09B9F2"/>
<stop stop-color="#C433FF"/>
<stop offset="0.1742" stop-color="#D72EF0"/>
<stop offset="0.5126" stop-color="#F425D8"/>
<stop offset="0.772" stop-color="#FF22CF"/>
<stop offset="0.9194" stop-color="#FF22CF"/>
</linearGradient>
<linearGradient id="paint16_linear" x1="111.293" y1="249.502" x2="111.293" y2="37.9968" gradientUnits="userSpaceOnUse">
<stop stop-color="#04468B"/>
<stop offset="0.1742" stop-color="#0561A3"/>
<stop offset="0.5126" stop-color="#0791CE"/>
<stop offset="0.772" stop-color="#09AEE8"/>
<stop offset="0.9194" stop-color="#09B9F2"/>
<stop stop-color="#C433FF"/>
<stop offset="0.1742" stop-color="#D72EF0"/>
<stop offset="0.5126" stop-color="#F425D8"/>
<stop offset="0.772" stop-color="#FF22CF"/>
<stop offset="0.9194" stop-color="#FF22CF"/>
</linearGradient>
<linearGradient id="paint17_linear" x1="212.09" y1="249.502" x2="212.09" y2="37.9968" gradientUnits="userSpaceOnUse">
<stop stop-color="#04468B"/>
<stop offset="0.1742" stop-color="#0561A3"/>
<stop offset="0.5126" stop-color="#0791CE"/>
<stop offset="0.772" stop-color="#09AEE8"/>
<stop offset="0.9194" stop-color="#09B9F2"/>
<stop stop-color="#C433FF"/>
<stop offset="0.1742" stop-color="#D72EF0"/>
<stop offset="0.5126" stop-color="#F425D8"/>
<stop offset="0.772" stop-color="#FF22CF"/>
<stop offset="0.9194" stop-color="#FF22CF"/>
</linearGradient>
<linearGradient id="paint18_linear" x1="145.853" y1="249.502" x2="145.853" y2="37.9967" gradientUnits="userSpaceOnUse">
<stop stop-color="#04468B"/>
<stop offset="0.1742" stop-color="#0561A3"/>
<stop offset="0.5126" stop-color="#0791CE"/>
<stop offset="0.772" stop-color="#09AEE8"/>
<stop offset="0.9194" stop-color="#09B9F2"/>
<stop stop-color="#C433FF"/>
<stop offset="0.1742" stop-color="#D72EF0"/>
<stop offset="0.5126" stop-color="#F425D8"/>
<stop offset="0.772" stop-color="#FF22CF"/>
<stop offset="0.9194" stop-color="#FF22CF"/>
</linearGradient>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 761 KiB

After

Width:  |  Height:  |  Size: 119 KiB

View File

@@ -30,23 +30,22 @@ export default function BabyEarthVox(props) {
return (
<group ref={group} {...props} dispose={null}>
<group ref={group} {...props} name="BabyEarthVox" dispose={null}>
<mesh
castShadow
receiveShadow
geometry={nodes["voxel-earth"].geometry}
material={materials['palette.003']}
rotation={[Math.PI * 0.5, 0, 0]}
onClick={() => router.push(route)}
// onPointerOver={(e) => setHover(true)}
// onPointerOut={(e) => setHover(false)}
/>
<pointLight
intensity={3}
intensity={6}
distance={3}
decay={2}
color={'0xfff'}
color={'cyan'}
castShadow
/>
</group>

View File

@@ -39,11 +39,6 @@ const OctoEasterEgg = (props) => {
const deltaTime = elapsedTime - previousTime;
previousTime = elapsedTime;
if (mesh.current && animate) {
mesh.current.position.x = -3.5 + Math.sin(elapsedTime * 0.9) * Math.PI * 0.05;
mesh.current.position.y = -1.5 - Math.cos(elapsedTime * 0.1) * Math.PI * 0.5;
mesh.current.rotation.z = -elapsedTime * 0.06;
}
})
if (material.current) {
material.current.map = mapTexture;

View File

@@ -54,12 +54,15 @@ const Galaxy = ({ dof, parameters, nucleus, helper, effects, ...props }) => {
particles.current.position.y = -scrollY * 0.0005;
// galaxy1.rotation.y += (parallaxX - cameraGroup.position.x) * 2 * deltaTime
particles.current.rotation.z = scrollY * 0.0004;
particles.current.rotation.x = -elapsedTime * 0.006;
particles.current.rotation.y = -elapsedTime * 0.006;
} else if (parameters.type === 2) {
particles.current.rotation.y = -elapsedTime * 0.007;
} else if (parameters.type == 3) {
particles.current.position.y = scrollY * 0.0004;
particles.current.rotation.y = Math.cos(elapsedTime * 0.03) * Math.PI * 0.05;
} else if (parameters.type == 4) {
particles.current.position.z = -scrollY * 0.0004;
particles.current.rotation.y = Math.cos(elapsedTime * 0.03) * Math.PI * 0.05;
}
}
@@ -156,7 +159,7 @@ const Galaxy = ({ dof, parameters, nucleus, helper, effects, ...props }) => {
positions[i3 + 2] = Math.sin(branchAngle + spinAngle) * radius + randomZ
const mixedColor = colorInside.clone()
mixedColor.lerp(colorOutside, radius / parameters.radius * 1.05)
mixedColor.lerp(colorOutside, radius / parameters.radius * 2)
colors[i3 + 0] = mixedColor.r
colors[i3 + 1] = mixedColor.g
@@ -228,7 +231,7 @@ const Galaxy = ({ dof, parameters, nucleus, helper, effects, ...props }) => {
particles.current.geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3))
particles.current.geometry.setAttribute('color', new THREE.BufferAttribute(colors, 3))
if (parameters.type === 5) {
if (parameters.type === 3) {
material.current.map = planeColorTexture
material.current.alphaMap = planeAlphaTexture
@@ -237,6 +240,12 @@ const Galaxy = ({ dof, parameters, nucleus, helper, effects, ...props }) => {
material.current.opacity = parameters.opacity
}
// if (parameters.type === 3) {
// material.current.transparent = true
// material.current.sizeAttenuation = true
// material.current.opacity = parameters.opacity
// }
}
return (
@@ -312,17 +321,6 @@ export function Nucleus({ size }) {
// eslint-disable-next-line react/display-name
export const Effects = forwardRef((props, ref) => {
const bokehScale = {
min: 0,
max: 10,
value: 1,
};
return (
<EffectComposer multisampling={0}>
<DepthOfField ref={ref} bokehScale={bokehScale} />
</EffectComposer>
)
})

View File

@@ -25,7 +25,7 @@ export default function HouseholdVox(props) {
}
})
return (
<group ref={group} {...props} dispose={null}>
<group ref={group} {...props} name="Household" dispose={null}>
<mesh
castShadow
receiveShadow

View File

@@ -25,7 +25,7 @@ export default function IndustrialVox(props) {
}
})
return (
<group ref={group} {...props} dispose={null}>
<group ref={group} {...props} name="Industrial" dispose={null}>
<mesh
castShadow
receiveShadow

View File

@@ -1,4 +1,4 @@
import React, { useRef, useState } from "react";
import React, { useCallback, useEffect, useRef, useState } from "react";
import { useFrame } from '@react-three/fiber'
import { useGLTF } from "@react-three/drei";
import * as THREE from "three";
@@ -7,6 +7,7 @@ import useStore from '@/helpers/store'
export default function JetsetterVox(props) {
const router = useStore((s) => s.router)
const [originalPos, setOriginalPos] = useState(null)
const group = useRef();
const [hovered, setHover] = useState(false)
const { nodes, materials } = useGLTF("/assets/models/jetsetter-vox.glb");
@@ -14,38 +15,49 @@ export default function JetsetterVox(props) {
const clock = new THREE.Clock();
let previousTime = 0;
const storeOriginalPos = useCallback((pos) => {
if (originalPos !== null) return;
setOriginalPos(pos)
}, [originalPos, setOriginalPos])
useFrame((state, delta) => {
const elapsedTime = clock.getElapsedTime();
const deltaTime = elapsedTime - previousTime;
previousTime = elapsedTime;
if (group.current && animate && !route) {
// group.current.position.x = -3.5 + Math.sin(elapsedTime * 0.9) * Math.PI * 1;
// group.current.position.y = -1.5 - Math.cos(elapsedTime * 0.1) * Math.PI * 0.5;
// group.current.position.z = -1.5 - Math.cos(elapsedTime * 0.1) * Math.PI * 3;
group.current.rotation.y = elapsedTime * 0.3;
if (group.current && animate) {
group.current.rotation.y = (Math.PI * 0.4) + elapsedTime * 0.03
}
})
// useEffect(() => {
// let z = null;
// if (group.current) {
// storeOriginalPos(group.current.position)
// if (hovered) {
// console.log('origpos', originalPos.z);
// gsap.to(group.current.position, {
// duration: 1.5,
// ease: "power2.inOut",
// z: 1
// })
// }
// console.log(originalPos);
// gsap.to(group.current.position, {
// duration: 1.5,
// ease: "power2.inOut",
// z: 0
// })
// }
// }, [group, hovered, originalPos, storeOriginalPos]);
// gsap
if (group.current && animate === false) {
if (hovered) {
gsap.to(group.current.position, {
duration: 1.5,
ease: "power2.inOut",
z: 1
})
} else {
gsap.to(group.current.position, {
duration: 1.5,
ease: "power2.inOut",
z: 0
})
}
}
return (
<group ref={group} {...props} dispose={null}>
<group ref={group} {...props} name="Jetsetter" dispose={null}>
<mesh
castShadow
receiveShadow

View File

@@ -1,19 +1,52 @@
import React, {useRef} from "react";
import { Text } from "@react-three/drei";
import React, { useEffect, useRef } from "react";
import { Html, useProgress } from "@react-three/drei";
import {
Box,
Text,
} from "@chakra-ui/react";
import gsap from "gsap";
import useStore from '@/helpers/store'
export const CanvasLoader = () => {
const { dom } = useStore();
const group = useRef(null);
const loadingBar = useRef(null);
const { active, progress, errors, item, loaded, total } = useProgress();
let ratioLoaded = loaded / total
useEffect(() => {
if (ratioLoaded < 1) {
console.log(ratioLoaded);
if (loadingBar.current) {
console.log(loadingBar.current);
// loadingBar.current.style.transform = `scaleX(${ratioLoaded})`
}
} else {
// loadingBar.current.style.transform = ''
}
}, [ratioLoaded]);
return (
<group ref={group} position={[0,0,0]}>
<Text
scale={[10, 10, 10]}
color={
"rgb(255, 255, 255)"
}
anchorX="center"
anchorY="middle"
>Loading...</Text>
</group>
<Html center background="linear-gradient(0deg, rgba(41,2,80,1) 0%, rgba(25,0,50,1) 40%)" >
<Box width="100vw" height="100vh" d="flex" flexFlow="column wrap" alignItems="center" justifyContent="center" opacity={ratioLoaded < 1 ? 0.7 : 0} color="#FF61E6" sx={{
transition: 'transform 0.5s ease-in-out, opacity 0.5s ease-in-out'
}}>
<Box d="flex" flexFlow="column wrap" w="100%" textAlign="center">
<Text fontSize="5vw" className="gradient" mb={0}>
{progress.toFixed()}% loaded
</Text>
<Box ref={loadingBar} className="loading-bar" mb={2} height="5px" width="100%" bg="linear-gradient(90.24deg, #79F8FB 0.3%, #9032E6 55.76%, #E839B7 106.78%)" sx={{
opacity: ratioLoaded < 1 ? 0.7 : 0,
transform: ratioLoaded < 1 ? `scaleX(${ratioLoaded})` : 0,
transformOrigin: ratioLoaded < 1 ? 'top left' : 'top right',
transition: 'transform 0.5s ease-in-out, opacity 0.5s ease-in-out'
}} />
<Text fontSize="0.5vw" mt={2}>{item} / {total}</Text>
</Box>
</Box>
</Html>
);
};

View File

@@ -28,7 +28,7 @@ export default function LuxVox(props) {
}
})
return (
<group ref={group} {...props} dispose={null}>
<group ref={group} {...props} name="Lux" dispose={null}>
<mesh
castShadow
receiveShadow

View File

@@ -1,4 +1,4 @@
import React, { useRef, useState } from "react";
import React, { useEffect, useRef, useState } from "react";
import { useFrame } from '@react-three/fiber'
import { useGLTF } from "@react-three/drei";
import * as THREE from "three";
@@ -10,32 +10,23 @@ export default function NomadVox(props) {
const group = useRef();
const [hovered, setHover] = useState(false)
const { nodes, materials } = useGLTF("/assets/models/nomad-vox.glb");
const { route, animate } = props
const clock = new THREE.Clock();
let previousTime = 0;
console.log(animate);
useFrame((state, delta) => {
const elapsedTime = clock.getElapsedTime();
const deltaTime = elapsedTime - previousTime;
previousTime = elapsedTime;
if (group.current && animate) {
group.current.position.y = -1 - Math.cos(elapsedTime * 0.1) * Math.PI * 0.05;
const { route } = props
useEffect(() => {
if (group.current.children) {
console.log(group.current.children);
// group.current.children[0].geometry.computeFaceNormals();
// group.current.children[0].geometry.computeVertextNormals();
// group.current.children[0].geometry.normalsNeedUpdate = true;
// group.current.rotation.y = elapsedTime * 0.03;
group.current.rotation.z = -0.05 - Math.sin(elapsedTime * 0.3) * Math.PI * 0.03;
}
})
}, []);
return (
<group ref={group} {...props} dispose={null}>
<group position={[0.01, 0, -0.01]} rotation={[2, 0.1, 2.13]}>
<directionalLight
intensity={0.5}
color="#FF61E6"
decay={2}
rotation={[-Math.PI / 2, 0, 0]}
/>
</group>
<group
ref={group}
{...props}
name="Nomad"
dispose={null}
>
<mesh
castShadow
receiveShadow
@@ -43,9 +34,6 @@ export default function NomadVox(props) {
material={materials.palette}
rotation={[Math.PI * 0.5, -Math.PI / 0.05, 0]}
onClick={() => router.push(route)}
onPointerOver={(e) => setHover(true)}
onPointerOut={(e) => setHover(false)}
// scale={hovered ? 1.1 : 1}
/>
{/* <axesHelper /> */}
</group>

View File

@@ -23,17 +23,18 @@ export default function OctoPetVox(props) {
group.current.position.y = 4 - Math.cos(elapsedTime * 0.1) * Math.PI * 0.5;
group.current.position.z = -2.5 - Math.cos(elapsedTime * 0.1) * Math.PI * 0.3;
group.current.rotation.y = elapsedTime * 0.005;
group.current.rotation.z = -elapsedTime * 0.05;
// group.current.rotation.z = -elapsedTime * 0.05;
}
})
return (
<group ref={group} {...props} dispose={null}>
<group ref={group} {...props} name="OctoPet" dispose={null}>
<mesh
castShadow
receiveShadow
geometry={nodes["cuteocto-pet"].geometry}
material={materials['palette.004']}
rotation={[Math.PI * 0.5, 0, 0]}
scale={0.5}
onClick={() => router.push(route)}
// onPointerOver={(e) => setHover(true)}
// onPointerOut={(e) => setHover(false)}

View File

@@ -16,7 +16,7 @@ export const galaxyColors = {
outside: '#FF61E6'
}
export const galaxy2Colors = {
inside: '#462080',
inside: '#FF61E6',
outside: '#7C56FF'
}
export const galaxy3Colors = {
@@ -25,18 +25,18 @@ export const galaxy3Colors = {
}
export const galaxy4Colors = {
inside: '#462080',
outside: '#7C56FF'
outside: '#FF61E6'
}
export const galaxy5Colors = {
inside: '#7C56FF',
outside: '#462080'
inside: '#ffffff',
outside: '#FF61E6'
}
/**
* Galaxy
*/
export const galaxy1Params = {
count: 100000,
size: 0.033,
size: 0.03,
radius: 4.86,
branches: 8,
spin: 8,
@@ -61,7 +61,7 @@ export const galaxy2Params = {
branches: 8,
spin: 8,
randomness: 9,
randomnessPower: 1,
randomnessPower: 10,
insideColor: galaxy2Colors.inside,
outsideColor: galaxy2Colors.outside,
type: 2,
@@ -99,16 +99,16 @@ export const galaxy3Params = {
export const galaxy4Params = {
count: 100000,
size: 0.005,
radius: 1,
size: 0.01,
radius: 8,
branches: 8,
spin: 5,
randomness: 4,
randomnessPower: 20,
randomness: 1.5,
randomnessPower: 1,
insideColor: galaxy4Colors.inside,
outsideColor: galaxy4Colors.outside,
type: 4,
opacity: 1,
opacity: 0.5,
focusDistance: 0.05,
focalLength: 0.05,
width: 480,
@@ -119,17 +119,17 @@ export const galaxy4Params = {
}
export const galaxy5Params = {
count: 75000,
size: 0.03,
count: 100000,
size: 0.05,
radius: 35,
branches: 8,
spin: 5,
randomness: 1.7,
randomness: 2.5,
randomnessPower: 10,
insideColor: galaxy5Colors.inside,
outsideColor: galaxy5Colors.outside,
type: 3,
opacity: 0.1,
opacity: 0.5,
focusDistance: 0.05,
focalLength: 0.05,
width: 480,
@@ -232,7 +232,7 @@ export const generateGalaxy = (params) => {
positions[i3 + 2] = Math.sin(branchAngle + spinAngle) * radius + randomZ
const mixedColor = colorInside.clone()
mixedColor.lerp(colorOutside, radius / params.radius * 1.05)
mixedColor.lerp(colorOutside, radius / params.radius * 2)
colors[i3 + 0] = mixedColor.r
colors[i3 + 1] = mixedColor.g

View File

@@ -0,0 +1,65 @@
import React, { useRef, useState } from "react";
import { useFrame } from '@react-three/fiber'
import { useGLTF } from "@react-three/drei";
import * as THREE from "three";
import gsap from "gsap";
import useStore from '@/helpers/store'
export default function ILBVox(props) {
const router = useStore((s) => s.router)
const group = useRef();
const material = useRef();
const [hovered, setHover] = useState(false)
const { nodes, materials } = useGLTF("/assets/models/musashi/ilb.glb");
const { route } = props
const clock = new THREE.Clock();
let previousTime = 0;
useFrame(() => {
const elapsedTime = clock.getElapsedTime();
const deltaTime = elapsedTime - previousTime;
previousTime = elapsedTime;
})
// if (hovered) {
// gsap.to(group.current.position, {
// x: 2,
// y: 0,
// z: 0
// })
// } else {
// gsap.to(group.current.position, {
// x: 0,
// y: 0,
// z: 0
// })
// }
return (
<group ref={group} {...props} dispose={null}>
<mesh
castShadow
receiveShadow
geometry={nodes.ILB.geometry}
material={materials["palette.002"]}
rotation={[Math.PI * 0.5, 0, 0]}
scale={[0.5,0.5,0.5]}
onClick={() => router.push(route)}
onPointerOver={(e) => setHover(true)}
onPointerOut={(e) => setHover(false)}
/>
<pointLight
intensity={0.6}
distance={3}
decay={2}
color={'0xfff'}
castShadow
/>
</group>
);
}
useGLTF.preload("/assets/models/musashi/ilb.glb");

View File

@@ -0,0 +1,73 @@
import React, { useRef, useState } from "react";
import { useFrame } from '@react-three/fiber'
import { useGLTF } from "@react-three/drei";
import * as THREE from "three";
import gsap from "gsap";
import useStore from '@/helpers/store'
export default function ILBVox(props) {
const router = useStore((s) => s.router)
const group = useRef();
const material = useRef();
const [hovered, setHover] = useState(false)
const { nodes, materials } = useGLTF("/assets/models/musashi/moloch-pet-1.glb");
const { route, animate } = props
const clock = new THREE.Clock();
let previousTime = 0;
useFrame(() => {
const elapsedTime = clock.getElapsedTime();
const deltaTime = elapsedTime - previousTime;
previousTime = elapsedTime;
if (group.current && animate) {
group.current.position.x = 1 + Math.sin(elapsedTime * 0.6) * Math.PI * 0.03;
group.current.position.y = -1 - Math.cos(elapsedTime * 0.07) * Math.PI * 0.5;
// group.current.position.z = -0.25 - Math.cos(elapsedTime * 0.1) * Math.PI * 0.3;
group.current.rotation.z = -0.05 - Math.sin(elapsedTime * 0.3) * Math.PI * 0.03;
group.current.rotation.y = elapsedTime * 0.03;
}
})
// if (hovered) {
// gsap.to(group.current.position, {
// x: 2,
// y: 0,
// z: 0
// })
// } else {
// gsap.to(group.current.position, {
// x: 0,
// y: 0,
// z: 0
// })
// }
return (
<group ref={group} {...props} dispose={null}>
<mesh
castShadow
receiveShadow
geometry={nodes.MolochPet1.geometry}
material={materials["palette.003"]}
rotation={[Math.PI * 0.5, 0, 0]}
scale={[0.5,0.5,0.5]}
onClick={() => router.push(route)}
onPointerOver={(e) => setHover(true)}
onPointerOut={(e) => setHover(false)}
/>
<pointLight
intensity={0.6}
distance={3}
decay={2}
color={'0xfff'}
castShadow
/>
</group>
);
}
useGLTF.preload("/assets/models/musashi/moloch-pet-1.glb");

View File

@@ -0,0 +1,53 @@
import React, { useRef, useState } from "react";
import { useFrame } from '@react-three/fiber'
import { useGLTF } from "@react-three/drei";
import * as THREE from "three";
import gsap from "gsap";
import useStore from '@/helpers/store'
export default function RobeVox(props) {
const router = useStore((s) => s.router)
const group = useRef();
const material = useRef();
const [hovered, setHover] = useState(false)
const { nodes, materials } = useGLTF("/assets/models/musashi/robe.glb");
const { route, animate } = props
const clock = new THREE.Clock();
let previousTime = 0;
useFrame(() => {
const elapsedTime = clock.getElapsedTime();
const deltaTime = elapsedTime - previousTime;
previousTime = elapsedTime;
if (group.current && animate) {
}
})
return (
<group ref={group} {...props} name="Robe" dispose={null}>
<mesh
castShadow
receiveShadow
geometry={nodes.Robe.geometry}
material={materials['palette.001']}
rotation={[Math.PI * 0.5, 0, 0]}
onClick={() => router.push(route)}
// onPointerOver={(e) => setHover(true)}
// onPointerOut={(e) => setHover(false)}
/>
<pointLight
intensity={3}
distance={3}
decay={2}
color={'0xfff'}
castShadow
/>
</group>
);
}
useGLTF.preload("/assets/models/musashi/robe.glb");

View File

@@ -0,0 +1,66 @@
import React, { useRef, useState } from "react";
import { useFrame } from '@react-three/fiber'
import { useGLTF } from "@react-three/drei";
import * as THREE from "three";
import gsap from "gsap";
import useStore from '@/helpers/store'
export default function Robe2Vox(props) {
const router = useStore((s) => s.router)
const group = useRef();
const material = useRef();
const [hovered, setHover] = useState(false)
const { nodes, materials } = useGLTF("/assets/models/musashi/robe2.glb");
const { route, animate } = props
const clock = new THREE.Clock();
let previousTime = 0;
useFrame(() => {
const elapsedTime = clock.getElapsedTime();
const deltaTime = elapsedTime - previousTime;
previousTime = elapsedTime;
if (group.current && animate) {
}
})
// if (hovered) {
// gsap.to(group.current.position, {
// x: 2,
// y: 0,
// z: 0
// })
// } else {
// gsap.to(group.current.position, {
// x: 0,
// y: 0,
// z: 0
// })
// }
return (
<group ref={group} {...props} name="Robe2" dispose={null}>
<mesh
castShadow
receiveShadow
geometry={nodes.Robe1.geometry}
material={materials.palette}
rotation={[Math.PI * 0.5, 0, 0]}
onClick={() => router.push(route)}
onPointerOver={(e) => setHover(true)}
onPointerOut={(e) => setHover(false)}
/>
<pointLight
intensity={3}
distance={3}
decay={2}
color={'0xfff'}
castShadow
/>
</group>
);
}
useGLTF.preload("/assets/models/musashi/robe2.glb");

View File

@@ -51,9 +51,9 @@ export function AlphaNotice() {
<span role="img" aria-label="watchful eyes">
👀
</span>{" "}
We&apos;re still working on content, there&apos;s no Web3 connectivity and there
We&apos;re still working on content, there&apos;s no Web3 connectivity (or is there...?) and there
are some bugs. <br /> We&apos;re working to get it
all ship shape for June!
all ship shape ASAP!
</Text>
{/* <Image src={BabyOctoGif} boxSize="35px" objectFit="cover" /> */}
<IconButton

View File

@@ -12,4 +12,5 @@ export const BoxedNextImage = ({ src, alt, ...props }) => (
>
<NextImage {...{ src, alt }} layout="fill" objectFit="contain" />
</Box>
);
);

View File

@@ -125,7 +125,7 @@ export const EasterEgg = () => {
</Button>
</Box>
<Box src={BabyOctoGif} alt="Baby Octo mascot" boxSize={{base: '35px', xl:"100px"}} objectFit="cover" />
<BoxedNextImage src={BabyOctoGif} alt="Baby Octo mascot" boxSize={{base: '35px', xl:"100px"}} objectFit="cover" />
<IconButton
onClick={handleToggle}
colorScheme="ghost"

View File

@@ -28,7 +28,7 @@ export function SiteFooter() {
// transform={{md: `translate3d(0, ${onScreen ? 0 : "70px"}, 0)`}}
opacity={onScreen ? 1 : 0}
transition="transform 0.3s 0.4s ease-in-out, opacity 0.6s 0.3s ease-in"
zIndex={0}
zIndex={1999}
sx={{
a: {
color: "white",

View File

@@ -1,3 +1,4 @@
/* eslint-disable @next/next/no-page-custom-font */
import React from 'react';
import { useRouter } from 'next/router';
import Head from 'next/head';
@@ -34,7 +35,7 @@ export const HeadComponent = (props) => {
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="true" />
<link href="https://fonts.googleapis.com/css2?family=Exo+2:wght@300;500;700&amp;display=swap" rel="stylesheet" />
<link href="https://fonts.googleapis.com/css2?family=Exo+2:wght@400;500;700&amp;display=swap" rel="stylesheet" />
</Head>
);

View File

@@ -11,7 +11,7 @@ import {
useDisclosure,
Stack,
} from "@chakra-ui/react";
import { BiWalletAlt } from 'react-icons/bi'
import { BiWalletAlt, BiJoystick } from 'react-icons/bi'
import { BoxedNextImage } from "@/components/dom/BoxedNextImage";
import { useDisabledGeneralNotify, useOnScreen } from "@/utils/hooks";
@@ -36,7 +36,7 @@ const Links = [
href: "#speakers",
},
{
name: "MetaFest-a-verse",
name: "MetaFest-a-Verse",
href: "#metafest-verse",
},
{
@@ -203,29 +203,45 @@ export function SiteHeader() {
</HStack>
<Flex alignItems="center" justifyContent="end" width={{ base: "25%", md: 'auto' }}>
{screenSize !== 'base' ? (
<Button
variant={"solid"}
colorScheme={"purple"}
<Link
href="https://metagame.wtf"
px={5}
py={2}
color={"white"}
bg="#927CFF"
boxShadow="0 0 10px rgba(0, 0, 0, 0.6)"
size="sm"
mr={0}
onClick={disabledGenNotify}
borderRadius="md"
isExternal
>
Connect
</Button>
Join MetaGame
</Link>
) : (
<Link
href="https://metagame.wtf"
px={0}
py={0}
// color={"white"}
bg="transparent"
boxShadow="0 0 10px rgba(0, 0, 0, 0.6)"
size="sm"
mr={0}
borderRadius="md"
isExternal
>
<IconButton
icon={<BiWalletAlt />}
aria-label="Connect Web3 wallet"
icon={<BiJoystick />}
aria-label="Join MetaGame"
flex={0}
fontSize={{base: '12vmin', lg: "2vmax"}}
colorScheme="ghost"
color="#927CFF"
onClick={disabledGenNotify}
alignSelf="center"
// filter="drop-shadow(0 0 15px #FF61E6)"
/>
</Link>
)}
</Flex>
</Flex>

View File

@@ -28,7 +28,7 @@ export const ArtistLuxumbra = () => {
>
<Box className="__content__body--no-firstof" textAlign="right" mt={6}>
<Text as="h2">luxumbra</Text>
<Text className="gradient">
<Text fontWeight={700}>
Some Voxels by lux.
</Text>
<Text>

View File

@@ -13,7 +13,7 @@ export const ArtistMusashi = ({artist}) => {
return (
<Box
as="section"
id={`artist-${artist}`}
id={`artist-${slug}`}
justifyContent={{base: 'flex-end', lg: 'inherit'}}
>
<Box
@@ -28,7 +28,7 @@ export const ArtistMusashi = ({artist}) => {
>
<Box className="__content__body--no-firstof" textAlign="right" mt={6}>
<Text as="h2">{name}</Text>
<Text className="gradient">
<Text fontWeight={700}>
{strapline}
</Text>
<Text>

View File

@@ -31,11 +31,10 @@ export function AirtablePerformerInstance () {
)
}
export function AirtableSponsorInstance () {
export function AirtableFairInstance () {
return (
<Suspense fallback={<DOMLoader />}>
<Script src="https://static.airtable.com/js/embed/embed_snippet_v1.js"></Script>
<iframe title="Sponsor MetaFest2" className="airtable-embed airtable-dynamic-height" src="https://airtable.com/embed/shr2kuLumbj9Wnka8?backgroundColor=blue" frameBorder="0" onmousewheel="" width="100%" height="3185" style={{background: 'transparent', border: '0'}}></iframe>
<iframe title="MetaFest2 JobFair info" src="https://docs.google.com/document/d/e/2PACX-1vQav5MOP2EOE9NrnpP2AepGfsBl6VsDalt30JyDGaNGAEEaQgwzx7mgjF4nB_h18dKa-5frZDcYOkL7/pub?embedded=true" frameBorder="0" onmousewheel="" width="100%" height="100%" style={{background: 'transparent', border: '0', marginLeft: 'auto', marginRight: 'auto'}}></iframe>
</Suspense>
)
}

View File

@@ -1,5 +1,5 @@
import React, { useState } from 'react'
import { Box } from "@chakra-ui/react";
import { Box, Text } from "@chakra-ui/react";
// import TimezonePicker from 'react-timezone'
import styled from '@emotion/styled'
@@ -15,6 +15,8 @@ const InstanceContainer = styled.div`
function CalendarInstance () {
const [timezone, changeTimezone] = useState('Europe/London')
const [viewTip, setViewTip] = useState(false)
return (
<>
<iframe
@@ -27,9 +29,31 @@ function CalendarInstance () {
border: '0px'
}}
/>
<p style={{ color: '#65CBF6', marginTop: '1rem' }}>
<Box
bg="linear-gradient(90.24deg, #640DFB99 0.3%, rgba(100, 13, 251, 0.9) 80.16%)"
borderRadius="0 8px 8px 0"
boxShadow="0 0 5px rgba(0,0,0,0.6)"
p={2}
w="auto"
maxW="200px"
mt={3}
textAlign="center">
<Text sx={{ color: '#fff', fontWeight: 500}}>
All times are in UTC
</p>
</Text>
</Box>
<Box
bg="linear-gradient(90.24deg, #640DFB99 0.3%, rgba(100, 13, 251, 0.9) 80.16%)"
borderRadius="0 8px 8px 0"
boxShadow="0 0 5px rgba(0,0,0,0.6)"
p={2}
position="fixed"
top="12%"
left={0}
maxW="225px">
<Text fontSize="sm" fontWeight={500}>Google fail. Click &#39;Look for more&#39; to view the calendar dates for MetaFest2. <br />We will improve this UX soon <span role="img" aria-label="trademark"></span></Text>
</Box>
{/* <TimezonePicker
value={timezone}
onChange={picktimezone => changeTimezone(picktimezone)}

View File

@@ -17,14 +17,17 @@ import {
AirtableContributorInstance,
AirtablePerformerInstance,
AirtableSponsorInstance,
AirtableFairInstance,
} from "../integrations/AirtableInstance";
import { useOnScreen } from "@/utils/hooks";
import { BoxedNextImage } from "@/components/dom/BoxedNextImage";
import { BiUserVoice } from 'react-icons/bi';
import SpeakerIcon from "@/static/assets/img/icons/forum.svg"
import ContributorIcon from "@/static/assets/img/icons/players.svg"
import PerformerIcon from "@/static/assets/img/icons/xpearned.svg"
import SponsorIcon from "@/static/assets/img/icons/patrons.svg"
import FairIcon from "@/static/assets/img/icons/welcometometagame.svg"
import { BsFillPinMapFill } from 'react-icons/bs';
export const ApplySection = () => {
@@ -38,7 +41,7 @@ export const ApplySection = () => {
false
);
const [openSponsorApplication, setOpenSponsorApplication] = useState(false);
const [openFairApplication, setOpenFairApplication] = useState(false);
return (
<Box as="section" id="apply" position="relative">
<Box
@@ -139,6 +142,14 @@ export const ApplySection = () => {
call={() =>
setOpenSponsorApplication(!openSponsorApplication)
}
/>
<Feature
icon={FairIcon}
iconBg={"purple.900"}
text={"Job Fair"}
call={() =>
setOpenFairApplication(!openFairApplication)
}
/>
</Stack>
</Stack>
@@ -313,6 +324,47 @@ export const ApplySection = () => {
<AirtableSponsorInstance />
</Box>
</>
)}
{openFairApplication && (
<>
<Button
aria-label="Open the Job Fair application form"
position="absolute"
bottom={{base: 10, md: 20}}
right={6}
colorScheme="pink"
bg="#FF61E6"
boxShadow="0 0 10px rgba(0, 0, 0, 0.6)"
size="sm"
transition="all 0.3s 0.8s ease"
transform={`translateY(${openFairApplication ? 0 : "-70px"})`}
onClick={() => setOpenFairApplication(!openFairApplication)}
zIndex={2005}
>
Close form
</Button>
<Box
ref={ref}
position="absolute"
top="12.5vh"
left={0}
height="75vh"
minH="75vh"
width="100vw"
textAlign="center"
sx={{
bg: "rgba(25,0,50,0.4)",
backdropFilter: "blur(7px)",
}}
boxShadow="0 0 30px rgba(0,0,0,0.8)"
opacity={onScreen ? 1 : 0}
transition="opacity 1.2s 0.8s ease-in-out"
zIndex={2001}
overflowY="scroll"
>
<AirtableFairInstance />
</Box>
</>
)}
</Box>
);
@@ -330,9 +382,9 @@ export const Feature = ({ text, icon, iconBg, call }) => {
rounded={"full"}
// bg={iconBg}
>
<BoxedNextImage src={icon} alt={text} />
<BoxedNextImage src={icon} alt={text} boxSize={{base: '30px', lg: '75px'}} className="gradient" />
</Flex>
<Text fontWeight={500} fontSize={{base: '2.8vmin', md: '1.2vmax'}} flex={1}>
<Text fontWeight={500} fontSize={{base: '4vmin', md: '1.2vmax'}} flex={1}>
{text}
</Text>
<Button onClick={() => call()} colorScheme="pink" bg="#FF61E6" size={responsiveSize} justifySelf="right">

View File

@@ -59,7 +59,7 @@ export const HomeSection = () => {
>
MetaFest2
</Text>
<span className="fest-dates">9th - 23rd JUNE</span>
<span className="fest-dates">9th - 23rd June</span>
</Box>
<Box className="__content__body" maxW={{base: '66vw', lg: 'unset'}}>
<Text as="p" fontWeight={300} mt={-2}>

View File

@@ -74,12 +74,12 @@ export const MetaverseSection = () => {
zIndex={openHQ || openFair ? 0 : 2001}
>
<Box className="__content__body--no-firstof" textAlign="right" mt={6}>
<Text as="h2">MetaFest-a-verse</Text>
<Text as="h2">MetaFest-a-Verse</Text>
<Text className="gradient">
Metafest 2 full dive: MetaFam&apos;s HQ in the Metaverse.
Metafest 2 full dive: The MetaGame HQ
</Text>
<Text>
From scavenger hunts to gigs, come explore our virtual HQ!{" "}
Join us at our HQ and explore the metaverse as we join together in games, scavenger hunts, learning, and other fun events.{" "}
</Text>
<Button colorScheme="ghost" onClick={() => setOpenHQ(!openHQ)}>

View File

@@ -5,6 +5,7 @@ import {
IconButton,
Link,
Text,
Tabs, TabList, TabPanels, Tab, TabPanel, useDisclosure
} from "@chakra-ui/react";
import { CalendarIcon, ExternalLinkIcon } from "@chakra-ui/icons";
import CalendarInstance from "@/components/dom/integrations/CalendarInstance";
@@ -25,6 +26,8 @@ export const ScheduleSection = () => {
id="schedule"
flexFlow="row nowrap"
justifyContent="space-between"
alignItems="flex-start"
pt="10%"
>
{openCal && (
<Button
@@ -72,26 +75,21 @@ export const ScheduleSection = () => {
alignSelf="center"
filter="drop-shadow(0 0 15px #FF61E6)"
/>
<Text flex="1 0 100%" width="100%" alignSelf="flex-end" justifySelf="flex-start" fontWeight={500}>
{/* <Text flex="1 0 100%" width="100%" alignSelf="flex-end" justifySelf="flex-start" fontWeight={500}>
Our community members are busy rn, booking guests &amp; organising
workshops. <br /> Watch this space
<Text as="span" className="gradient2">
...it&apos;s gonna blow your mind!
</Text>
</Text>
</Text> */}
</Box>
<Box className="__content__body">
<Box
d="flex"
alignContent="flex-start"
justifyContent="space-between"
flexFlow="row wrap"
w="100%"
>
{timeBlocks.map((block, i) => <DayBlock key={`dayBlock-${i}`} block={block} />)}
</Box>
{/* {timeBlocks.map((block, i) => <DayBlock key={`dayBlock-${i}`} block={block} />)} */}
<WeekTabs blocks={timeBlocks} />
<Box mt={5}>
<Text>
To enter MetaFest2, you will have to{" "}
@@ -184,29 +182,97 @@ export const ScheduleSection = () => {
};
export const DayBlock = ({ block }) => {
const { dates, title, strapline, description, extra } = block
export const WeekTabs = ({ blocks }) => {
const [tabIndex, setTabIndex] = useState(0);
const week1 = blocks.filter(block => block.week === 1)
const week2 = blocks.filter(block => block.week === 2)
return (
<Tabs
mt={0}
maxW={{ base: 'full', lg: 'full' }}
height="-webkit-fit-content"
defaultIndex={0}
variant="unstyled"
isFitted
onChange={(index) => setTabIndex(index)}
>
<TabList fontSize={{ base: '2.6vmin', lg: '2vmax' }} w="50%" flex="0 0 50%" justifyContent="flex-start" justifyItems="center" borderBottom="none">
<Box p={5} pl={0}>
<Tab
borderBottom={tabIndex === 0 ? "4px solid #640DFB99" : "2px solid transparent"}
>
<Text as="h3" className="gradient2" my={0}>Week One</Text></Tab>
</Box>
<Box p={5} pl={0}>
<Tab borderBottom={tabIndex === 1 ? "4px solid #640DFB99" : "2px solid transparent"}><Text as="h3" className="gradient2" my={0}>Week Two</Text></Tab>
</Box>
</TabList>
<TabPanels>
<TabPanel >
<Box
d="flex"
alignContent="flex-start"
justifyContent="space-between"
flexFlow="row wrap"
w="100%"
opacity={tabIndex === 0 ? 1 : 0}
transform={tabIndex === 0 ? 'translateX(0)' : 'translateX(-200px)'}
transition="transform 0.3s 1s ease-in-out, opacity 0.3s 1.1s ease-in-out"
>
{
week1 && week1.map((day, i) => (
<DayBlock key={i} day={day} />
))
}
</Box>
</TabPanel>
<TabPanel>
<Box
d="flex"
alignContent="flex-start"
justifyContent="space-between"
flexFlow="row wrap"
w="100%"
opacity={tabIndex === 1 ? 1 : 0}
transform={tabIndex === 1 ? 'translateX(0)' : 'translateX(-200px)'}
transition="transform 0.3s 1s ease-in-out, opacity 0.3s 1.1s ease-in-out"
>
{
week2 && week2.map((day, i) => (
<DayBlock key={i} day={day} />
))
}
</Box>
</TabPanel>
</TabPanels>
</Tabs>
)
}
export const DayBlock = ({ day }) => {
const { dates, title, strapline, description, extra } = day
return (
<Box className="time-block"
sx={{
'h3 + p': {
fontSize: { base: "2.6vmin", md: "1vmax" },
},
flex: {
base: '0 0 50%', xl: '0 0 32%'
base: '0 0 49%', xl: '0 0 32%'
},
W: { base: '50%', xl: '32%' }
W: { base: '49%', xl: '32%' }
}}
>
<Box d="inline-block">
<Text as="span" className="fest-dates">
<span>{dates}</span>
</Text>
<Text as="h3" className="gradient2" my={0}>
<Text as="h4" className="gradient2" my={0}>
<span>{title}</span>
</Text>
</Box>
<Text fontSize={{ base: "2.6vmin", md: "1vmax" }} fontWeight={500}>{strapline}</Text>
<Text fontSize={{ base: "2.6vmin", md: "1vmax" }} fontWeight={500} mb={1}>{strapline}</Text>
<Text>{description}</Text>
{!extra && <Text>{extra}</Text>}
</Box>
@@ -215,6 +281,7 @@ export const DayBlock = ({ block }) => {
const timeBlocks = [
{
week: 1,
dates: 'Thursday June 9th',
title: 'Opening Ceremonies!',
strapline: 'Get ready for a jam-packed 2 weeks! 55+ plus speakers, panels, workshops, and more...',
@@ -222,6 +289,7 @@ const timeBlocks = [
extra: `If you missed out last year, I can feel your <span className="gradient">FOMO</span> from here!!`
},
{
week: 1,
dates: 'Friday-Saturday June 10th-11th',
title: 'Tooling Days',
strapline: 'How do you stay organized and productive?',
@@ -229,13 +297,15 @@ const timeBlocks = [
extra: `If you missed out last year, I can feel your <span className="gradient">FOMO</span> from here!!`
},
{
week: 1,
dates: 'Sunday-Monday June 12th-13th',
title: 'Metaverse Days',
strapline: 'Whoa, the MetaVerse, whats that?',
description: 'Theres a lot happening in the MetaVerse. MetaGamers have a presence in Neos, Cryptovoxels, Atlantis World, Decentraland, Aavegotchi Gotchiverse, and more. Come join us and see what weve been building! Learn some new skills to start playing in your MetaVerse of choice. It may be a new trend word, but weve been digging in for than a year. :)',
description: 'Theres a lot happening in the MetaVerse. MetaGamers have a presence in Neos, Cryptovoxels, Atlantis World, Decentraland, Aavegotchi Gotchiverse, and more. Come join us and see what weve been building! Learn some new skills to start playing in your MetaVerse of choice. It may be a new trend word, but weve been digging in for more than a year. :)',
extra: `If you missed out last year, I can feel your <span className="gradient">FOMO</span> from here!!`
},
{
week: 2,
dates: 'Tuesday-Friday June 14th-17th',
title: 'MetaAlliance and Regen Days',
strapline: 'Speakers! Panels! Workshops!',
@@ -243,6 +313,7 @@ const timeBlocks = [
extra: `If you missed out last year, I can feel your <span className="gradient">FOMO</span> from here!!`
},
{
week: 2,
dates: 'Saturday June 18th',
title: 'Tooling Follow-up Presentations',
strapline: 'Well I got this shiny new toolbox, now what?',
@@ -250,13 +321,15 @@ const timeBlocks = [
extra: `If you missed out last year, I can feel your <span className="gradient">FOMO</span> from here!!`
},
{
week: 2,
dates: 'Sunday June 19th',
title: 'Sunday Funday: Live Concerts & Entertainment',
strapline: 'All work and no play, makes Nova swim in circles.',
description: 'Sunday Funday is our weekend day of play and entertainment. Join us for live events in MetaVerse worlds, games, possible Poaps, and more!',
description: 'Sunday Funday is our weekend day of play and entertainment. Join us for live events in MetaVerse worlds, games, possible Poaps, and more!',
extra: `If you missed out last year, I can feel your <span className="gradient">FOMO</span> from here!!`
},
{
week: 2,
dates: 'Monday June 20th',
title: 'DeFi Day',
strapline: 'We know, we could do a whole Fest on just DeFi. But look at how much weve stacked in one day!',
@@ -264,6 +337,7 @@ const timeBlocks = [
extra: `If you missed out last year, I can feel your <span className="gradient">FOMO</span> from here!!`
},
{
week: 2,
dates: 'Tuesday-Wednesday June 21st-22nd',
title: 'Job Fair and Meta-Days',
strapline: 'So, how do I start working in a DAO?',
@@ -271,10 +345,11 @@ const timeBlocks = [
extra: `If you missed out last year, I can feel your <span className="gradient">FOMO</span> from here!!`
},
{
week: 2,
dates: 'Thursday June 23rd',
title: 'Closing Ceremonies and Awards',
strapline: 'Well that was fun! Can we stay here forever??',
description: 'Whoa, so much was covered. How do we wrap this up? Awards! You get an Oprah nft, you get a Octo, you get the point. If you came for the Poap, dont miss this day.',
description: 'Whoa, so much was covered. How do we wrap this up? Awards! You get an Oprah NFT, you get a Octo, you get the point. If you came for the POAP, dont miss this day.',
extra: `If you missed out last year, I can feel your <span className="gradient">FOMO</span> from here!!`
},
]

View File

@@ -33,22 +33,22 @@ export const SpeakersSection = () => {
<Flex alignItems="flex-start" justifyContent="space-between">
<Box flex="0 0 48%" w="48%">
<Text as="h3" className="gradient2">
Metaverse Week
Week One
</Text>
<Text>Want to take part in Metaverse Week?</Text>
<Text>
Find the application forms on the{" "}
<Link href="#schedule">Schedule page</Link>
<Link href="#apply">Applications page</Link>
</Text>
</Box>
<Box flex="0 0 48%" w="48%">
<Text as="h3" className="gradient2">
DAO Week
Week Two
</Text>
<Text>Want to take part in DAO Week?</Text>
<Text>
Find the application forms on the{" "}
<Link href="#schedule">Schedule page</Link>
<Link href="#apply">Applications page</Link>
</Text>
</Box>
</Flex>

View File

@@ -68,7 +68,7 @@ export const WorkshopsSection = () => {
folks to help with <strong className="gradient">Innkeeping</strong>. */}
</Text>
<Text>
Check the <Link href="#schedule">Schedule page</Link> for the
Check the <Link href="#apply">Applications page</Link> for the
contributors application form and as always, you can always{" "}
<Link href="https://discord.gg/invite/metagame" isExternal>
join our Discord

View File

@@ -1,7 +1,7 @@
import dynamic from 'next/dynamic'
import { Canvas } from '@react-three/fiber'
import * as THREE from "three";
import { OrbitControls, Preload } from '@react-three/drei'
import { Environment, OrbitControls, Preload } from '@react-three/drei'
import {
Box
} from '@chakra-ui/react'
@@ -33,7 +33,7 @@ const LCanvas = ({ children }) => {
return (
<Canvas
mode='concurrent'
// shadows
shadow="true"
style={{
position: 'fixed',
top: 0,
@@ -48,6 +48,7 @@ const LCanvas = ({ children }) => {
<Preload all />
<Suspense fallback={<CanvasLoader />}>
{children}
<Environment preset="forest" />
</Suspense>
</Canvas>
)

View File

@@ -1,85 +0,0 @@
import Head from 'next/head'
const titleDefault = 'React Three Next Starter'
const url = 'https://react-three-next.vercel.app/'
const description =
'The easiest and fastest way to create a 3D website using React Three Fiber and NextJS'
const author = 'Author'
const Header = ({ title = titleDefault }) => {
return (
<>
<Head>
{/* Recommended Meta Tags */}
<meta charSet='utf-8' />
<meta name='language' content='english' />
<meta httpEquiv='content-type' content='text/html' />
<meta name='author' content={author} />
<meta name='designer' content={author} />
<meta name='publisher' content={author} />
{/* Search Engine Optimization Meta Tags */}
<title>{title}</title>
<meta name='description' content={description} />
<meta
name='keywords'
content='Software Engineer,Product Manager,Project Manager,Data Scientist,Computer Scientist'
/>
<meta name='robots' content='index,follow' />
<meta name='distribution' content='web' />
{/*
Facebook Open Graph meta tags
documentation: https://developers.facebook.com/docs/sharing/opengraph */}
<meta name='og:title' content={title} />
<meta name='og:type' content='site' />
<meta name='og:url' content={url} />
<meta name='og:image' content={'/icons/share.png'} />
<meta name='og:site_name' content={title} />
<meta name='og:description' content={description} />
<link rel='apple-touch-icon' href='/icons/apple-touch-icon.png' />
<link
rel='apple-touch-icon'
sizes='16x16'
href='/icons/favicon-16x16.png'
/>
<link
rel='apple-touch-icon'
sizes='32x32'
href='/icons/favicon-32x32.png'
/>
<link
rel='apple-touch-icon'
sizes='180x180'
href='/icons/apple-touch-icon.png'
/>
<link rel='manifest' href='/manifest.json' />
<link
rel='mask-icon'
color='#000000'
href='/icons/safari-pinned-tab.svg'
/>
<link rel='apple-touch-startup-image' href='/startup.png' />
{/* Meta Tags for HTML pages on Mobile */}
{/* <meta name="format-detection" content="telephone=yes"/>
<meta name="HandheldFriendly" content="true"/> */}
<meta
name='viewport'
content='width=device-width, minimum-scale=1, initial-scale=1.0'
/>
<meta name='theme-color' content='#000' />
<link rel='shortcut icon' href='/icons/favicon.ico' />
{/*
Twitter Summary card
documentation: https://dev.twitter.com/cards/getting-started
Be sure validate your Twitter card markup on the documentation site. */}
<meta name='twitter:card' content='summary' />
<meta name='twitter:site' content='@onirenaud' />
</Head>
</>
)
}
export default Header

View File

@@ -24,12 +24,26 @@ const theme = extendTheme({
color: "#ffeded",
fontFamily: '"Exo 2", sans-serif',
fontSize: "16px",
fontWeight: 300,
fontWeight: 400,
p: 0,
m: '0 auto',
minH: "100vh",
width: '100%'
width: '100%',
// overflowY: "auto",
'.loading-canvas': {
'.dom-loader': {
opacity: 1,
zIndex: 4000,
}
},
'.dom-loader': {
position: 'fixed',
opacity: 0,
top: 0,
left: 0,
zIndex: -200,
transition: 'all 0.5s ease'
}
},
// "body *": {
// outline: "1px solid red",
@@ -62,6 +76,16 @@ const theme = extendTheme({
fontSize: "4vmax",
fontWeight: 700,
},
'& + .fest-dates': {
fontWeight: 700,
justifyContent: "right",
opacity: 1,
transform: {
base: "translateY(5px)",
lg: "translateY(9px)",
"2xl": "translateY(10px)",
},
}
},
h2: {
color: "#fff",
@@ -86,7 +110,7 @@ const theme = extendTheme({
fontWeight: 500,
},
p: {
fontSize: { base: "2.6vmin", md: ".9vmax" },
fontSize: { base: "2.6vmin", md: ".8vmax" },
textShadow: "0 0 5px rgba(0, 0, 0, 0.6)",
},
section: {
@@ -111,7 +135,7 @@ const theme = extendTheme({
fontSize: { base: "2.6vmin", md: "0.9vmax" },
fontWeight: 500,
"& + p": {
fontWeight: 300,
fontWeight: 400,
},
},
},
@@ -121,9 +145,10 @@ const theme = extendTheme({
display: "inline-block",
background: "linear-gradient(90deg, #FF61E6 -29.22%, #7C56FF 107.53%)",
backgroundClip: "text",
// WebkitTextFillColor: "transparent",
// textFillColor: "transparent",
// filter: "drop-shadow(0 0 5px rgba(0,0,0,0.6))",
WebkitTextFillColor: "transparent",
textFillColor: "transparent",
textShadow: 'unset',
filter: "drop-shadow(0 0 5px rgba(0,0,0,0.6))",
},
".gradient2": {
display: "inline-block",
@@ -134,6 +159,7 @@ const theme = extendTheme({
backgroundClip: "text",
textFillColor: "transparent",
WebkitTextFillColor: "transparent",
textShadow: 'unset',
filter: "drop-shadow(0 0 5px rgba(0,0,0,0.6))",
},
".gradient-cone": {
@@ -146,6 +172,7 @@ const theme = extendTheme({
textFillColor: "transparent",
WebkitTextFillColor: "transparent",
transition: "background 0.3s ease",
textShadow: 'unset',
filter: "drop-shadow(0 0 5px rgba(0,0,0,0.6))",
},
".highlight": {},
@@ -154,8 +181,9 @@ const theme = extendTheme({
width: "100%",
color: "#FF61E6",
fontSize: { base: "2.2vmin", md: "0.7vmax" },
fontWeight: 700,
fontWeight: 500,
justifyContent: "left",
opacity: 0.8,
pr: 0.5,
transform: {
base: "translateY(7px)",

View File

@@ -1,6 +1,7 @@
import { PerspectiveCamera, Stats } from '@react-three/drei'
import React, { useEffect, useMemo, useRef, forwardRef, useLayoutEffect } from "react";
import React, { useEffect, useMemo, useRef, forwardRef, useLayoutEffect, Suspense } from "react";
import * as THREE from "three";
import gsap from "gsap";
import { useFrame, extend } from '@react-three/fiber'
import dynamic from 'next/dynamic'
@@ -19,6 +20,7 @@ import {
galaxy5Params,
} from '@/components/canvas/galaxies';
import { Effects, Nucleus } from "@/components/canvas/Galaxy";
import { CanvasLoader } from '@/components/canvas/Loader';
const NomadVox = dynamic(() => import('@/components/canvas/Nomad'), {
ssr: false,
@@ -44,6 +46,21 @@ const OctoPetVox = dynamic(() => import('@/components/canvas/OctoPet'), {
const Galaxy = dynamic(() => import('@/components/canvas/Galaxy'), {
ssr: false,
})
// Musashi
const Robe = dynamic(() => import('@/components/canvas/musashi/Robe'), {
ssr: false,
})
const Robe2 = dynamic(() => import('@/components/canvas/musashi/Robe2'), {
ssr: false,
})
const ILB = dynamic(() => import('@/components/canvas/musashi/Ilb'), {
ssr: false,
})
const MolochPet1 = dynamic(() => import('@/components/canvas/musashi/MolochPet1'), {
ssr: false,
})
export const objectsDistance = 4;
@@ -88,11 +105,20 @@ const R3F = () => {
const mouse = new THREE.Vector2();
const rayMouse = new THREE.Vector2();
const section = useRef(0);
// Model groups
const musashiGroup = useRef(null);
const ilbRef = useRef(null);
const molochPet1 = useRef(null);
const luxGroup = useRef(null);
/**
* Animate
*/
const clock = new THREE.Clock();
let previousTime = 0;
const isOdd = (num) => !!num % 2;
/**
* Cursor / Mouse
*/
@@ -132,9 +158,108 @@ const R3F = () => {
// camera.current.layers.set(section.current);
console.log('Current section: ', section.current);
if (musashiGroup.current) {
let tl = gsap.timeline();
switch (currentSection) {
// Workshops
case 2:
tl.to(musashiGroup.current.position, {
duration: 1.5,
ease: "power2.inOut",
y: 0,
z: 0,
});
break;
default:
tl.to(musashiGroup.current.position, {
duration: 1.5,
ease: "power2.inOut",
y: -10,
z: 0,
});
break;
}
}
if (luxGroup.current) {
let tl2 = gsap.timeline();
switch (currentSection) {
// Workshops
case 1:
tl2.to(luxGroup.current.position, {
duration: 1.5,
delay: 0.3,
ease: "power2.inOut",
y: 0,
z: 0,
});
break;
default:
tl2.to(luxGroup.current.position, {
duration: 1.5,
delay: 0.3,
ease: "power2.inOut",
y: 0,
z: -10,
});
break;
}
}
}
});
if (musashiGroup.current) {
let tl = gsap.timeline();
switch (section.current) {
// Workshops
case 2:
tl.to(musashiGroup.current.position, {
duration: 1.5,
ease: "power2.inOut",
y: 0,
z: 0,
});
break;
default:
tl.to(musashiGroup.current.position, {
duration: 1.5,
ease: "power2.inOut",
y: -10,
z: 0,
});
break;
}
}
if (luxGroup.current) {
let tl2 = gsap.timeline();
switch (currentSection) {
// Workshops
case 1:
tl2.to(luxGroup.current.position, {
duration: 1.5,
delay: 0.3,
ease: "power2.inOut",
y: 0,
z: 0,
});
break;
default:
tl2.to(luxGroup.current.position, {
duration: 1.5,
delay: 0.3,
ease: "power2.inOut",
y: 0,
z: -10,
});
break;
}
}
// Mouse move
window.addEventListener("mousemove", (event) => {
cursor.current.x = (event.clientX / sizes.current.width) - 0.3;
@@ -146,7 +271,6 @@ const R3F = () => {
// console.log('mousePos', mousePos.current);
rayMousePos.current.x = event.clientX / sizes.current.width;
rayMousePos.current.y = event.clientY / sizes.current.height;
// mouse.position.x = event.clientX / sizes.current.width
// mouse.position.y = event.clientY / sizes.current.height
// console.log('mouse pos', mouse.position);
@@ -172,91 +296,106 @@ const R3F = () => {
cameraGroup.current.position.y +=
(parallaxY - cameraGroup.current.position.y) * 5 * deltaTime;
rimLight.current.position.y = (-scrollY.current / sizes.current.height) * objectsDistance;
rimLight2.current.position.y = (-scrollY.current / sizes.current.height) * objectsDistance;
// rimLight3.current.position.y = (-scrollY.current / sizes.current.height) * objectsDistance;
// rimLight.current.position.x +=
// (parallaxX - rimLight.current.position.x) ;
// rimLight.current.position.y =
// (parallaxY - rimLight.current.position.y);
// rimLight.current.position.y = (-scrollY.current / sizes.current.height) * objectsDistance;
// rimLight2.current.position.y = (-scrollY.current / sizes.current.height) * objectsDistance;
// console.log('camg', rimLight.current.position);
if (ilbRef.current) {
ilbRef.current.position.x = 1 + Math.sin(elapsedTime * 0.8) * Math.PI * 0.03;
ilbRef.current.position.y = 1 - Math.cos(elapsedTime * 0.1) * Math.PI * 0.3;
// group.current.position.z = -0.25 - Math.cos(elapsedTime * 0.1) * Math.PI * 0.3;
// ilbRef.current.rotation.z = -0.5 - Math.sin(elapsedTime * 0.3) * Math.PI * 0.03;
ilbRef.current.rotation.y = -elapsedTime * 0.006;
}
if (molochPet1.current) {
molochPet1.current.position.x = -1 + Math.sin(elapsedTime * 0.6) * Math.PI * 0.03;
molochPet1.current.position.y = 1 + Math.cos(elapsedTime * 0.07) * Math.PI * 0.5;
// group.current.position.z = -0.25 - Math.cos(elapsedTime * 0.1) * Math.PI * 0.3;
molochPet1.current.rotation.z = -0.05 - Math.sin(elapsedTime * 0.3) * Math.PI * 0.03;
// molochPet1.current.rotation.y = elapsedTime * 0.03;
}
if (luxGroup.current) {
luxGroup.current.children.map((child, i) => {
// console.log(child);
if (child.name === 'LuxVoxGroup' || child.name === 'OctoPetGroup' || child.name === 'BabyEarthGroup') {
} else {
// console.log(child.name)
child.position.y = -1.5 - Math.cos(elapsedTime * (0.1)) * Math.PI * (0.05 - i*0.1) ;
child.position.z = isOdd(i) ? -2 : -4;
// group.current.rotation.y = elapsedTime * 0.03;
child.rotation.z = 0.2 - Math.sin(elapsedTime * 0.3) * Math.PI * (0.03 - i * 0.001);
}
})
// console.log(luxGroup.current.children);
}
});
return (
<>
<group ref={cameraGroup}>
<PerspectiveCamera ref={camera} makeDefault position={[0, 0, 6]} />
<rectAreaLight
ref={rimLight}
width={6}
height={2}
intensity={2}
color="#fffccc'"
position={[0, 0, 1.5]}
rotation={[0, 0, 0]}
castShadow
/>
<rectAreaLight
ref={rimLight2}
width={6}
height={2}
intensity={5}
color="blue"
position={[0, 0, 1.5]}
rotation={[0, 0, 0]}
castShadow
/>
<rectAreaLight
ref={rimLight3}
width={1}
height={1}
intensity={2}
color="#76EBF2"
position={[-1.6, -1, 0.5]}
rotation={[0, 0, 0]}
castShadow
/>
<axesHelper />
<Stats />
{/* <Stats /> */}
</group>
<Suspense fallback={<CanvasLoader />}>
<Galaxy
dof={dof}
parameters={galaxy5Params}
nucleus={false} helper={false}
position={[0, -3, -20]} />
position={[0, -3, -10]}
rotation={[Math.PI * 0.3, 0, 0]}
/>
<R3FSceneSection name="SectionOne" count={0} >
{/* <JetsetterVox route='/' position={[1, -2.4, -2]} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} /> */}
</R3FSceneSection>
<R3FSceneSection name="SectionTwo" count={1} >
<LuxVox route='/' position={[-3.5, -1.5, -1.5]} rotation={[-Math.PI / 0.51, Math.PI / 3.25, 0]} />
<OctoPetVox route='/' position={[-3, -2, -2]} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
<BabyEarthVox route='/' animate={true} position={[-2, -1, -0.25]} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
<NomadVox route='/' position={[-1.5, 0, -2]} rotation={[-Math.PI / 0.51, Math.PI / 3.5, 0]} />
<HouseholdVox route='/' position={[2, 2, -4]} rotation={[-Math.PI / 0.55, Math.PI / 3, 0]} />
<JetsetterVox route='/' position={[1, -2.4, -3]} rotation={[-Math.PI / 0.51, Math.PI / 2.75, 0]} />
<IndustrialVox route='/' position={[5, -1.4, -3]} rotation={[-Math.PI / 0.55, Math.PI / 3, 0]} />
<group ref={luxGroup} name="LuxGroup" position={[0, 0, -10]}>
<group name="LuxVoxGroup">
<LuxVox route='/' position={[-3.5, -1.5, -1.5]} rotation={[-Math.PI / 0.51, Math.PI / 3.25, 0]} />
</group>
<group name="OctoPetGroup">
<OctoPetVox route='/' position={[-3, -2, -2]} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
</group>
<group name="BabyEarthGroup">
<BabyEarthVox route='/' animate={true} position={[-2, -1, -0.25]} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
</group>
<group name="NomadGroup">
<NomadVox route='/' position={[-1.5, 0, -2]} rotation={[-Math.PI / 0.51, Math.PI / 3.5, 0]} />
</group>
<group name="HouseholdGroup">
<HouseholdVox route='/' position={[2, 2, -4]} rotation={[-Math.PI / 0.55, Math.PI / 3, 0]} />
</group>
<group name="JetsetterGroup">
<JetsetterVox route='/' position={[1, -2.4, -3]} rotation={[-Math.PI / 0.51, Math.PI / 2.75, 0]} />
</group>
<group name="IndustrialGroup">
<IndustrialVox route='/' position={[5, -1.4, -3]} rotation={[-Math.PI / 0.55, Math.PI / 3, 0]} />
</group>
</group>
</R3FSceneSection>
<R3FSceneSection name="SectionThree" count={2}>
<Galaxy dof={dof} parameters={galaxy2Params} position={[0, -6, -20]} />
{/* <group position={[5, 0, 3]} rotation={[0, 0.1, 0]}>
<directionalLight
intensity={0.3}
decay={2}
color="cyan"
rotation={[0, 0, 0]}
/>
<axesHelper />
</group> */}
{/* <LuxVox route='/' position={[-3, -2, -1]} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
<NomadVox route='/' position={[3, -1.5, -0.5]} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
<JetsetterVox route='/' position={[1, -2.4, -3]} rotation={[-Math.PI / 0.55, Math.PI / 3, 0]} /> */}
</R3FSceneSection>
<group ref={musashiGroup} name="MusashiGroup" position={[0, 0, 0]}>
<Robe route='/' animate={false} position={[-2.25, -2, 0]} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
<Robe2 route='/' animate={false} position={[-2.25, -2, 0]} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
<group ref={ilbRef}>
<ILB position={[2, -2.5, -1]} rotation={[0, 0, 0]} />
</group>
<group ref={molochPet1}>
<MolochPet1 position={[1, -2.5, 0]} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
</group>
</group>
</R3FSceneSection>
</Suspense>
</>
)
}
@@ -293,7 +432,7 @@ export const artists = [
slug: 'musashi',
name: 'Musashi',
strapline: 'Some voxels made by Musashi',
description: 'to follow...',
description: 'Member of MG writers guild and bridgebuilder & cross-pollination extraordinaire',
}
];

View File

@@ -1,7 +1,7 @@
import React, { createRef, useEffect, useLayoutEffect, useMemo, useRef } from "react";
import React, { createRef, Suspense, useEffect, useLayoutEffect, useMemo, useRef } from "react";
import * as THREE from "three";
import { useFrame, useThree, extend } from '@react-three/fiber'
import { PerspectiveCamera, Stats } from '@react-three/drei'
import { PerspectiveCamera, Stats, useProgress } from '@react-three/drei'
import gsap from "gsap";
import dynamic from 'next/dynamic'
@@ -15,7 +15,6 @@ import {
ChatSection,
ApplySection,
} from "@/components/dom/page-sections";
import useStore from '@/helpers/store'
import {
galaxy1Params,
@@ -24,8 +23,7 @@ import {
galaxy4Params,
galaxy5Params,
} from '@/components/canvas/galaxies';
import { CanvasLoader } from "@/components/canvas/Loader";
// Dynamic import is used to prevent a payload when the website start that will include threejs r3f etc..
@@ -74,9 +72,9 @@ export const R3FSceneSection = ({ name, count, children, ...props }) => {
// useLayoutEffect(() => {
// group.current.layers.enable(layers);
// }, [layers])
if (group.current) {
console.log('section grp cur: ', group.current);
}
// if (group.current) {
// console.log('section grp cur: ', group.current);
// }
return (
<group ref={group} name={name} position={[0, -objectsDistance * count, 0]} {...props}>{children}</group>
)
@@ -92,6 +90,9 @@ const R3F = () => {
const dof3 = useRef(null);
const dof4 = useRef(null);
const galaxy1 = useRef(null);
const nomad = useRef(null);
const jetsetter = useRef(null);
const octoEasterEgg = useRef(null);
const camera = useRef();
const cameraGroup = useRef();
const rimLight = useRef({ x: 0, y: 0 });
@@ -237,7 +238,7 @@ const R3F = () => {
gsap.to(cameraGroup.current.position, {
duration: 1.5,
ease: "power2.inOut",
z: -1,
z: -0.2,
});
break;
@@ -296,7 +297,26 @@ const R3F = () => {
cameraGroup.current.position.y +=
(parallaxY - cameraGroup.current.position.y) * 5 * deltaTime;
rimLight.current.position.y = cameraGroup.current.position.y;
// rimLight.current.position.y = (-scrollY.current / sizes.current.height) * objectsDistance;
if (nomad.current) {
nomad.current.position.y = -1.5 - Math.cos(elapsedTime * 0.1) * Math.PI * 0.05;
// group.current.rotation.y = elapsedTime * 0.03;
nomad.current.rotation.z = -0.05 - Math.sin(elapsedTime * 0.3) * Math.PI * 0.03;
}
if (jetsetter.current) {
jetsetter.current.position.y = -1 - Math.cos(elapsedTime * 0.1) * Math.PI * 0.05;
// group.current.rotation.y = elapsedTime * 0.03;
jetsetter.current.rotation.z = -0.05 - Math.sin(elapsedTime * 0.3) * Math.PI * 0.03;
}
if (octoEasterEgg.current) {
octoEasterEgg.current.position.x = -3.5 + Math.sin(elapsedTime * 0.9) * Math.PI * 0.05;
octoEasterEgg.current.position.y = -1.5 - Math.cos(elapsedTime * 0.1) * Math.PI * 0.5;
octoEasterEgg.current.rotation.z = -elapsedTime * 0.06;
}
});
@@ -304,34 +324,20 @@ const R3F = () => {
<>
<group ref={cameraGroup}>
<PerspectiveCamera ref={camera} makeDefault aspect={sizes.width / sizes.height} position={[0, 0, 6]} far={1000} filmGauge={53} />
<rectAreaLight
ref={rimLight}
width={6}
height={2}
intensity={3}
color="pink"
position={[0, 0, 1.5]}
rotation={[0, 0, 0]}
castShadow
/>
<ambientLight
intensity={0.2}
color="pink"
castShadow
/>
<Stats />
{/* <Stats /> */}
</group>
<Suspense fallback={<CanvasLoader />}>
<Galaxy
dof={dof}
parameters={galaxy5Params}
nucleus={false} helper={false}
position={[0, -3, -20]} />
position={[0, -3, -17]} />
<R3FSceneSection name="SectionOne" count={0}>
<OctoEasterEgg animate={true} />
<group ref={octoEasterEgg}>
<OctoEasterEgg/>
</group>
<Galaxy dof={dof} parameters={galaxy1Params} position={[6, 0, -13]} rotation={[4.8, 4.15, 4.75]} />
</R3FSceneSection>
@@ -348,18 +354,25 @@ const R3F = () => {
</R3FSceneSection>
<R3FSceneSection name="SectionFive" count={4}>
<NomadVox animate={true} position={[2, -1, 0.3]} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
<group ref={nomad} receiveShadow>
<NomadVox route='/cv' position={[1.75, 0.5, 0.3]} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
</group>
</R3FSceneSection>
<R3FSceneSection name="SectionSix" count={5}>
<OctoPetVox route='/cv' position={[0, -.8, 0]} animate={true} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
<BabyEarthVox route='/cv' position={[-1.5, -.8, -2]} animate={true} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
<OctoPetVox position={[0, -1.8, 0]} animate={true} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
<BabyEarthVox position={[-1.5, -.8, -2]} animate={true} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
<Galaxy dof={dof} parameters={galaxy3Params} position={[6, -6.5, -15]} />
</R3FSceneSection>
<R3FSceneSection name="SectionSeven" count={6}>
<JetsetterVox route='/cv' animate={false} position={[-2, -1.8, 0]} rotation={[-Math.PI / .1, Math.PI / 6.5, 0]} />
</R3FSceneSection>
<group ref={jetsetter}>
<JetsetterVox animate={true} position={[-2, -1.8, 0]} rotation={[-Math.PI / .1, Math.PI / 6.5, 0]}
/>
</group>
<Galaxy dof={dof} parameters={galaxy4Params} position={[3, -1.5, -2]} />
</R3FSceneSection>
</Suspense>
</>
)
}
@@ -367,7 +380,6 @@ const R3F = () => {
const Page = () => {
return (
<>
<DOM />
{/* @ts-ignore */}
<R3F r3f />

322
yarn.lock
View File

@@ -1523,6 +1523,13 @@
dependencies:
commander "^2.15.1"
"@cld-apis/utils@^0.2.0":
version "0.2.0"
resolved "https://registry.yarnpkg.com/@cld-apis/utils/-/utils-0.2.0.tgz#2a98d77f546bc968b6234959dec804b9953dbb94"
integrity sha512-WBhOZ+wz93G/vsqkfmIBsPYf7FH4i5ZKN3QYlUfg9Ni5A2E09CCfsNG6RUuGeLjDPaFXFbta1rkNf3+2hFlavQ==
dependencies:
snake-case "^3.0.4"
"@ctrl/tinycolor@^3.4.0":
version "3.4.1"
resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz#75b4c27948c81e88ccd3a8902047bcd797f38d32"
@@ -3420,7 +3427,7 @@ any-signal@^2.1.0:
abort-controller "^3.0.0"
native-abort-controller "^1.0.3"
aproba@^1.1.1:
aproba@^1.0.3, aproba@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
@@ -3437,6 +3444,14 @@ archive-type@^4.0.0:
dependencies:
file-type "^4.2.0"
are-we-there-yet@~1.1.2:
version "1.1.7"
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146"
integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==
dependencies:
delegates "^1.0.0"
readable-stream "^2.0.6"
argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
@@ -3848,7 +3863,7 @@ bl@^2.2.1:
readable-stream "^2.3.5"
safe-buffer "^5.1.1"
bl@^4.0.0:
bl@^4.0.0, bl@^4.0.3:
version "4.1.0"
resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
@@ -4308,7 +4323,7 @@ cli-cursor@^3.1.0:
dependencies:
restore-cursor "^3.1.0"
cli-progress@^3.4.0, cli-progress@^3.9.0:
cli-progress@^3.10.0, cli-progress@^3.4.0, cli-progress@^3.9.0:
version "3.10.0"
resolved "https://registry.yarnpkg.com/cli-progress/-/cli-progress-3.10.0.tgz#63fd9d6343c598c93542fdfa3563a8b59887d78a"
integrity sha512-kLORQrhYCAtUPLZxqsAt2YJGOvRdt34+O6jl5cQGb7iF3dM55FQZlTR+rQyIK9JUcO9bBMwZsTlND+3dmFU2Cw==
@@ -4405,6 +4420,13 @@ clone-response@1.0.2:
dependencies:
mimic-response "^1.0.0"
cloudinary-build-url@^0.2.4:
version "0.2.4"
resolved "https://registry.yarnpkg.com/cloudinary-build-url/-/cloudinary-build-url-0.2.4.tgz#465889847cbd846ac36baafcb90e3b6d93e51ee2"
integrity sha512-Wi0aZPHOa90xDCCC4k9eoTVPIm3aWNyycO+rJUXvOyusQqmkPSprHSuJh3s2zNxEtuGj24aCM13iLDpilWMpSw==
dependencies:
"@cld-apis/utils" "^0.2.0"
coa@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
@@ -4414,6 +4436,11 @@ coa@^2.0.2:
chalk "^2.4.1"
q "^1.1.2"
code-point-at@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
collection-visit@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
@@ -4441,11 +4468,27 @@ color-name@1.1.3:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
color-name@~1.1.4:
color-name@^1.0.0, color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
color-string@^1.9.0:
version "1.9.0"
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa"
integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==
dependencies:
color-name "^1.0.0"
simple-swizzle "^0.2.2"
color@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a"
integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==
dependencies:
color-convert "^2.0.1"
color-string "^1.9.0"
colord@^2.9.2:
version "2.9.2"
resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1"
@@ -4543,6 +4586,11 @@ config-chain@^1.1.11:
ini "^1.3.4"
proto-list "~1.2.1"
console-control-strings@^1.0.0, console-control-strings@~1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
console-stream@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44"
@@ -4866,6 +4914,13 @@ decompress-response@^3.2.0, decompress-response@^3.3.0:
dependencies:
mimic-response "^1.0.0"
decompress-response@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
dependencies:
mimic-response "^3.1.0"
decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1"
@@ -4919,6 +4974,11 @@ decompress@^4.0.0, decompress@^4.2.0:
pify "^2.3.0"
strip-dirs "^2.0.0"
deep-extend@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
deep-is@^0.1.3, deep-is@~0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
@@ -4959,6 +5019,11 @@ delayed-stream@~1.0.0:
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
delegates@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
delimit-stream@0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b"
@@ -4976,6 +5041,11 @@ detect-gpu@^4.0.14:
dependencies:
webgl-constants "^1.1.1"
detect-libc@^2.0.0, detect-libc@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd"
integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==
detect-node-es@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493"
@@ -5246,7 +5316,7 @@ encoding@^0.1.13:
dependencies:
iconv-lite "^0.6.2"
end-of-stream@^1.0.0, end-of-stream@^1.1.0:
end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1:
version "1.4.4"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
@@ -5843,6 +5913,11 @@ expand-brackets@^2.1.4:
snapdragon "^0.8.1"
to-regex "^3.0.1"
expand-template@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
ext-list@^2.0.0:
version "2.2.2"
resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37"
@@ -6403,6 +6478,20 @@ fuzzy@^0.1.3:
resolved "https://registry.yarnpkg.com/fuzzy/-/fuzzy-0.1.3.tgz#4c76ec2ff0ac1a36a9dccf9a00df8623078d4ed8"
integrity sha1-THbsL/CsGjap3M+aAN+GIweNTtg=
gauge@~2.7.3:
version "2.7.4"
resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
dependencies:
aproba "^1.0.3"
console-control-strings "^1.0.0"
has-unicode "^2.0.0"
object-assign "^4.1.0"
signal-exit "^3.0.0"
string-width "^1.0.1"
strip-ansi "^3.0.1"
wide-align "^1.1.0"
gensync@^1.0.0-beta.2:
version "1.0.0-beta.2"
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
@@ -6511,6 +6600,11 @@ gifwrap@^0.9.2:
image-q "^4.0.0"
omggif "^1.0.10"
github-from-package@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=
glob-parent@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
@@ -6920,6 +7014,11 @@ has-tostringtag@^1.0.0:
dependencies:
has-symbols "^1.0.2"
has-unicode@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
has-value@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
@@ -7254,7 +7353,7 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1,
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
ini@^1.3.4:
ini@^1.3.4, ini@~1.3.0:
version "1.3.8"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
@@ -7540,6 +7639,11 @@ is-arrayish@^0.2.1:
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
is-arrayish@^0.3.1:
version "0.3.2"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
is-bigint@^1.0.1:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
@@ -7655,6 +7759,13 @@ is-finite@^1.0.0:
resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3"
integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==
is-fullwidth-code-point@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
dependencies:
number-is-nan "^1.0.0"
is-fullwidth-code-point@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
@@ -8734,6 +8845,11 @@ mimic-response@^1.0.0:
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
mimic-response@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
min-document@^2.19.0:
version "2.19.0"
resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
@@ -8765,7 +8881,7 @@ minimatch@^3.0.4, minimatch@^3.1.2:
dependencies:
brace-expansion "^1.1.7"
minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6:
minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6:
version "1.2.6"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
@@ -8814,6 +8930,11 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
version "0.5.3"
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
mkdirp@^0.5.1, mkdirp@~0.5.1:
version "0.5.6"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
@@ -9012,6 +9133,11 @@ nanomatch@^1.2.9:
snapdragon "^0.8.1"
to-regex "^3.0.1"
napi-build-utils@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
native-abort-controller@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/native-abort-controller/-/native-abort-controller-1.0.4.tgz#39920155cc0c18209ff93af5bc90be856143f251"
@@ -9037,6 +9163,22 @@ next-compose-plugins@^2.2.1:
resolved "https://registry.yarnpkg.com/next-compose-plugins/-/next-compose-plugins-2.2.1.tgz#020fc53f275a7e719d62521bef4300fbb6fde5ab"
integrity sha512-OjJ+fV15FXO2uQXQagLD4C0abYErBjyjE0I0FHpOEIB8upw0hg1ldFP6cqHTJBH1cZqy96OeR3u1dJ+Ez2D4Bg==
next-image-export-optimizer@^0.9.5:
version "0.9.5"
resolved "https://registry.yarnpkg.com/next-image-export-optimizer/-/next-image-export-optimizer-0.9.5.tgz#4adc86b155f8145b6d3d52a01992e068bad899ca"
integrity sha512-HmRcxX96RQCL+eOsxR854XAcbBlTZMT0uN9xEZp3kwNge9UE7VIPmycCl6Lg5ZYfaAqxUQxtx+vpCZk2Igu9oQ==
dependencies:
cli-progress "^3.10.0"
sharp "^0.30.1"
next-images@^1.8.4:
version "1.8.4"
resolved "https://registry.yarnpkg.com/next-images/-/next-images-1.8.4.tgz#3b3d4840dae50893fc2a15906266532ec5fa58f0"
integrity sha512-E6JV+aMxeUCh8A+cwn1xgmlh/zINSW4JC/XLNbM+PWQd5LBdfB+m1IDCAfNnGOKMo96kzw+4LsKxnX/Kldw78Q==
dependencies:
file-loader "^6.2.0"
url-loader "^4.1.0"
next-offline@^5.0.5:
version "5.0.5"
resolved "https://registry.yarnpkg.com/next-offline/-/next-offline-5.0.5.tgz#91b2792f92a65e33eee00c9ab0dd1af9b9f71caa"
@@ -9100,11 +9242,23 @@ no-case@^3.0.4:
lower-case "^2.0.2"
tslib "^2.0.3"
node-abi@^3.3.0:
version "3.15.0"
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.15.0.tgz#cd9ac8c58328129b49998cc6fa16aa5506152716"
integrity sha512-Ic6z/j6I9RLm4ov7npo1I48UQr2BEyFCqh6p7S1dhEx9jPO0GPGq/e2Rb7x7DroQrmiVMz/Bw1vJm9sPAl2nxA==
dependencies:
semver "^7.3.5"
node-addon-api@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32"
integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==
node-addon-api@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f"
integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==
node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1:
version "2.6.7"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
@@ -9193,6 +9347,16 @@ npm-run-path@^5.1.0:
dependencies:
path-key "^4.0.0"
npmlog@^4.0.1:
version "4.1.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
dependencies:
are-we-there-yet "~1.1.2"
console-control-strings "~1.1.0"
gauge "~2.7.3"
set-blocking "~2.0.0"
nth-check@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
@@ -9207,6 +9371,11 @@ nth-check@^2.0.1:
dependencies:
boolbase "^1.0.0"
number-is-nan@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
number-to-bn@1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0"
@@ -9881,6 +10050,25 @@ potrace@^2.1.2:
dependencies:
jimp "^0.14.0"
prebuild-install@^7.0.1:
version "7.1.0"
resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.0.tgz#991b6ac16c81591ba40a6d5de93fb33673ac1370"
integrity sha512-CNcMgI1xBypOyGqjp3wOc8AAo1nMhZS3Cwd3iHIxOdAUbb+YxdNuM4Z5iIrZ8RLvOsf3F3bl7b7xGq6DjQoNYA==
dependencies:
detect-libc "^2.0.0"
expand-template "^2.0.3"
github-from-package "0.0.0"
minimist "^1.2.3"
mkdirp-classic "^0.5.3"
napi-build-utils "^1.0.1"
node-abi "^3.3.0"
npmlog "^4.0.1"
pump "^3.0.0"
rc "^1.2.7"
simple-get "^4.0.0"
tar-fs "^2.0.0"
tunnel-agent "^0.6.0"
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
@@ -10070,6 +10258,16 @@ raw-loader@^4.0.2:
loader-utils "^2.0.0"
schema-utils "^3.0.0"
rc@^1.2.7:
version "1.2.8"
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
dependencies:
deep-extend "^0.6.0"
ini "~1.3.0"
minimist "^1.2.0"
strip-json-comments "~2.0.1"
react-clientside-effect@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.5.tgz#e2c4dc3c9ee109f642fac4f5b6e9bf5bcd2219a3"
@@ -10229,7 +10427,7 @@ read-pkg@^1.0.0:
normalize-package-data "^2.3.2"
path-type "^1.0.0"
"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6:
"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
@@ -10767,7 +10965,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7:
version "7.3.7"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==
@@ -10781,7 +10979,7 @@ serialize-javascript@^4.0.0:
dependencies:
randombytes "^2.1.0"
set-blocking@^2.0.0:
set-blocking@^2.0.0, set-blocking@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
@@ -10814,6 +11012,20 @@ shallow-copy@0.0.1:
resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170"
integrity sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=
sharp@^0.30.1:
version "0.30.4"
resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.30.4.tgz#73d9daa63bbc20da189c9328d75d5d395fc8fb73"
integrity sha512-3Onig53Y6lji4NIZo69s14mERXXY/GV++6CzOYx/Rd8bnTwbhFbL09WZd7Ag/CCnA0WxFID8tkY0QReyfL6v0Q==
dependencies:
color "^4.2.3"
detect-libc "^2.0.1"
node-addon-api "^4.3.0"
prebuild-install "^7.0.1"
semver "^7.3.7"
simple-get "^4.0.1"
tar-fs "^2.1.1"
tunnel-agent "^0.6.0"
shebang-command@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
@@ -10859,6 +11071,27 @@ signed-varint@^2.0.1:
dependencies:
varint "~5.0.0"
simple-concat@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
simple-get@^4.0.0, simple-get@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543"
integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==
dependencies:
decompress-response "^6.0.0"
once "^1.3.1"
simple-concat "^1.0.0"
simple-swizzle@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
dependencies:
is-arrayish "^0.3.1"
sirv@^1.0.7:
version "1.0.19"
resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49"
@@ -10887,6 +11120,14 @@ slice-ansi@^2.1.0:
astral-regex "^1.0.0"
is-fullwidth-code-point "^2.0.0"
snake-case@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c"
integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==
dependencies:
dot-case "^3.0.4"
tslib "^2.0.3"
snapdragon-node@^2.0.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
@@ -11121,6 +11362,24 @@ strict-uri-encode@^1.0.0:
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
string-width@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
dependencies:
code-point-at "^1.0.0"
is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0"
"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
dependencies:
emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
string-width@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
@@ -11138,15 +11397,6 @@ string-width@^3.0.0:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^5.1.0"
string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
dependencies:
emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0"
strip-ansi "^6.0.1"
string.prototype.codepointat@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz#004ad44c8afc727527b108cd462b4d971cd469bc"
@@ -11210,7 +11460,7 @@ stringify-object@^3.3.0:
is-obj "^1.0.1"
is-regexp "^1.0.0"
strip-ansi@^3.0.0:
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
@@ -11294,7 +11544,7 @@ strip-indent@^1.0.1:
dependencies:
get-stdin "^4.0.1"
strip-json-comments@^2.0.1:
strip-json-comments@^2.0.1, strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
@@ -11419,6 +11669,16 @@ tapable@^2.0.0:
resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
tar-fs@^2.0.0, tar-fs@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
dependencies:
chownr "^1.1.1"
mkdirp-classic "^0.5.2"
pump "^3.0.0"
tar-stream "^2.1.4"
tar-stream@^1.5.2:
version "1.6.2"
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555"
@@ -11432,6 +11692,17 @@ tar-stream@^1.5.2:
to-buffer "^1.1.1"
xtend "^4.0.0"
tar-stream@^2.1.4:
version "2.2.0"
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
dependencies:
bl "^4.0.3"
end-of-stream "^1.4.1"
fs-constants "^1.0.0"
inherits "^2.0.3"
readable-stream "^3.1.1"
tar@^6.1.0:
version "6.1.11"
resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621"
@@ -11887,7 +12158,7 @@ url-loader@^1.1.2:
mime "^2.0.3"
schema-utils "^1.0.0"
url-loader@^4.1.1:
url-loader@^4.1.0, url-loader@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2"
integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==
@@ -12173,6 +12444,13 @@ which@^2.0.1:
dependencies:
isexe "^2.0.0"
wide-align@^1.1.0:
version "1.1.5"
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3"
integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==
dependencies:
string-width "^1.0.2 || 2 || 3 || 4"
widest-line@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca"