some improvements. checking in for the day.

This commit is contained in:
luxumbra
2022-04-18 04:04:51 +01:00
parent 3c393831de
commit 76d55d47ad
15 changed files with 1008 additions and 128 deletions

View File

@@ -29,12 +29,14 @@
"@fleekhq/fleek-cli": "^0.1.8",
"@react-three/drei": "^9.2.0",
"@react-three/fiber": "^8.0.10",
"@react-three/postprocessing": "^2.3.2",
"@widgetbot/react-embed": "^1.4.0",
"babel-plugin-glsl": "^1.0.0",
"framer-motion": "4.1.17",
"global": "^4.4.0",
"glsl-random": "^0.0.5",
"gsap": "^3.5.1",
"leva": "^0.9.23",
"lil-gui": "^0.11.0",
"next": "^12.1.4",
"react": "^18.0.0",

View File

@@ -3,8 +3,8 @@ import React, { useRef, useState, useMemo } from "react";
import { useFrame, useLoader } from "@react-three/fiber";
import * as THREE from "three";
import babyOctoGif from "../../static/assets/textures/baby_octo_alpha_0001.png";
import babyOctoAlpha from "../../static/assets/textures/baby_octo_alpha_map.png";
import babyOctoGif from "@/static/assets/textures/baby_octo_alpha_0001.png";
import babyOctoAlpha from "@/static/assets/textures/baby_octo_alpha_map.png";
export const OctoEasterEggR3F = (props) => {
const mesh = useRef();
@@ -15,9 +15,9 @@ export const OctoEasterEggR3F = (props) => {
const texture = useMemo(() => textureLoader.load(babyOctoGif),[textureLoader]);
const alphaTexture = useMemo(() => textureLoader.load(babyOctoAlpha), [textureLoader]);
// alphaTexture.minFilter = THREE.NearestFilter;
// alphaTexture.magFilter = THREE.NearestFilter;
// alphaTexture.generateMipmaps = true;
alphaTexture.minFilter = THREE.NearestFilter;
alphaTexture.magFilter = THREE.NearestFilter;
alphaTexture.generateMipmaps = true;
useFrame(() => {
const elapsedTime = clock.getElapsedTime();

View File

@@ -0,0 +1,288 @@
import * as THREE from 'three'
import React, { Suspense, useRef, forwardRef, useState, useEffect } from 'react'
import { Canvas, useFrame, useThree } from '@react-three/fiber'
import { EffectComposer, DepthOfField } from '@react-three/postprocessing'
import { useControls, folder } from 'leva'
import { CanvasLoader } from '@/components/canvas/Loader'
function Galaxy({ dof, parameters, nucleus = false, helper = false, effects = false, ...props }) {
const group = useRef();
const particles = useRef()
//const [movement] = useState(() => new THREE.Vector3())
const [temp] = useState(() => new THREE.Vector3())
const [focus] = useState(() => new THREE.Vector3())
// const { animationRef } = props
useEffect(() => {
generateGalaxy()
// console.log(animationRef);
})
useFrame((state, delta) => {
//dof.current.target = focus.lerp(particles.current.position, 0.05)
//movement.lerp(temp.set(state.mouse.x, state.mouse.y * 0.2, 0), 0.2)
if (dof.current) {
dof.current.circleOfConfusionMaterial.uniforms.focusDistance.value = parameters.focusDistance
dof.current.circleOfConfusionMaterial.uniforms.focalLength.value = parameters.focalLength
dof.current.resolution.height = parameters.height
dof.current.resolution.width = parameters.width
dof.current.target = new THREE.Vector3(parameters.focusX, parameters.focusY, parameters.focusZ)
dof.current.blendMode.opacity.value = parameters.opacity
}
})
const generateGalaxy = () => {
const positions = new Float32Array(parameters.count * 3)
const colors = new Float32Array(parameters.count * 3)
const colorInside = new THREE.Color(parameters.insideColor)
const colorOutside = new THREE.Color(parameters.outsideColor)
const sections = 6;
const objectsDistance = 4;
// Type 1
if (parameters.type === 1) {
for (let i = 0; i < parameters.count; i++) {
const i3 = i * 3
const radius = Math.random() * parameters.radius
const spinAngle = radius * parameters.spin
const branchAngle = (i % parameters.branches) / parameters.branches * Math.PI * 2
const randomX = Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
const randomY = Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
const randomZ = Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
positions[i3 + 0] = Math.cos(branchAngle + spinAngle) * radius + randomX
positions[i3 + 1] = Math.sin(spinAngle + radius) * (radius - Math.PI * 2)
positions[i3 + 2] = Math.sin(branchAngle + spinAngle) * radius + randomZ
const mixedColor = colorInside.clone()
mixedColor.lerp(colorOutside, radius / parameters.radius * 1.1)
colors[i3 + 0] = mixedColor.r
colors[i3 + 1] = mixedColor.g
colors[i3 + 2] = mixedColor.b
if (i < 20) {
console.log(i, branchAngle)
}
}
} else if (parameters.type === 2) {
for (let i = 0; i < parameters.count; i++) {
const i3 = i * 3
const radius = Math.random() * parameters.radius
const spinAngle = radius * parameters.spin
const branchAngle = (i % parameters.branches) / parameters.branches * Math.PI * 2
const randomX = Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
const randomY = Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
const randomZ = Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
positions[i3 + 0] = Math.cos(branchAngle + spinAngle) * radius + randomX
positions[i3 + 1] = (Math.PI * 0.12) * radius + randomY
positions[i3 + 2] = Math.sin(branchAngle + spinAngle) * radius + randomZ
const mixedColor = colorInside.clone()
mixedColor.lerp(colorOutside, radius / parameters.radius * 1.1)
colors[i3 + 0] = mixedColor.r
colors[i3 + 1] = mixedColor.g
colors[i3 + 2] = mixedColor.b
if (i < 20) {
console.log(i, branchAngle)
}
}
} else if (parameters.type === 3) {
for (let i = 0; i < parameters.count; i++) {
const i3 = i * 3
const radius = Math.random() * parameters.radius
const spinAngle = radius * parameters.spin
const branchAngle = (i % parameters.branches) / parameters.branches * Math.PI * 2
const randomX = Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
const randomY = Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
const randomZ = Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
positions[i3 + 0] = Math.cos(branchAngle + spinAngle) * radius + randomX
positions[i3 + 1] = Math.cos(spinAngle + radius) * radius + randomY
positions[i3 + 2] = Math.sin(branchAngle + spinAngle) * radius + randomZ
const mixedColor = colorInside.clone()
mixedColor.lerp(colorOutside, radius / parameters.radius * 1.05)
colors[i3 + 0] = mixedColor.r
colors[i3 + 1] = mixedColor.g
colors[i3 + 2] = mixedColor.b
if (i < 20) {
console.log(i, branchAngle)
}
}
} else if (parameters.type === 4) {
for (let i = 0; i < parameters.count; i++) {
const i3 = i * 3
const radius = Math.random() * parameters.radius
const spinAngle = radius * parameters.spin
const branchAngle = (i % parameters.branches) / parameters.branches * Math.PI * 2
const randomX = Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
const randomY = Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
const randomZ = Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
positions[i3 + 0] = Math.cos(branchAngle + spinAngle) * radius + randomX
positions[i3 + 1] = Math.sin(branchAngle - spinAngle) * radius + randomY
positions[i3 + 2] = Math.sin(branchAngle + spinAngle) * radius + randomZ
const mixedColor = colorInside.clone()
mixedColor.lerp(colorOutside, radius / parameters.radius * 1.5)
colors[i3 + 0] = mixedColor.r
colors[i3 + 1] = mixedColor.g
colors[i3 + 2] = mixedColor.b
if (i < 20) {
console.log(i, branchAngle)
}
}
} else if (parameters.type === 5) {
for (let i = 0; i < parameters.count; i++) {
const i3 = i * 3
const radius = Math.random() * parameters.radius
const spinAngle = radius * parameters.spin
const branchAngle = (i % parameters.branches) / parameters.branches * Math.PI * 2
const randomX = Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
const randomY = Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
const randomZ = Math.pow(Math.random(), parameters.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
positions[i3 + 0] = (Math.random() - 0.5) * 10;
positions[i3 + 1] =
objectsDistance * 0.8 -
Math.random() * objectsDistance * (sections.length * 2);
positions[i3 + 2] = (Math.random() - 0.5) * 10;
const mixedColor = colorInside.clone()
mixedColor.lerp(colorOutside, radius / parameters.radius * 1.5)
colors[i3 + 0] = mixedColor.r
colors[i3 + 1] = mixedColor.g
colors[i3 + 2] = mixedColor.b
if (i < 20) {
console.log(i, branchAngle)
}
}
}
particles.current.geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3))
particles.current.geometry.setAttribute('color', new THREE.BufferAttribute(colors, 3))
}
return (
<>
<Suspense fallback={<CanvasLoader />}>
<group ref={group} {...props}>
<points ref={particles}>
<bufferGeometry />
<pointsMaterial size={parameters.size} sizeAttenuation={true} depthWrite={true} vertexColors={true} blending={THREE.AdditiveBlending} />
</points>
{nucleus && (
<Nucleus size={0.125} />
)}
{helper && (
<axesHelper args={[2, 2, 2]} />
)}
</group>
</Suspense>
{/* {effects && (
// <Effects ref={dof} />
)} */}
</>
)
}
export default Galaxy
//function BlackHoleNucleus({ size }) {
// const meshRef = useRef();
//
// return (
// <mesh ref={meshRef} scale={[size, size, size]} position={[0, 0, 0]}>
// <sphereBufferGeometry
// attach="geometry"
// args={[0.5, 32, 32, 0, 6.4, 0, 6.3]}
// />
// <meshBasicMaterial attach="material" color="#000" />
// </mesh>
// );
//}
export const galaxyColors = {
inside: '#462080',
outside: '#FF61E6'
}
export const galaxy2Colors = {
inside: '#462080',
outside: '#7C56FF'
}
export const galaxy3Colors = {
inside: '#76EBF2',
outside: '#7C56FF'
}
export const galaxy4Colors = {
inside: '#462080',
outside: '#7C56FF'
}
export function Nucleus({ size }) {
const nucleusRef = useRef()
const color = new THREE.Color()
color.setHSL(Math.random(), 0.7, Math.random() * 0.2 + 0.05)
return (
<mesh ref={nucleusRef} position={[0, 0, 0]} scale={[size, size, size]} layers={THREE.BLOOM_SCENE}>
<sphereBufferGeometry attach="geometry" args={[0.5, 32, 32, 0, 6.4, 0, 6.3]} />
<meshBasicMaterial attach="material" color={'#fff'} />
</mesh>
)
//const geometry = new THREE.IcosahedronGeometry( 1, 15 );
// for ( let i = 0; i < 50; i ++ ) {
// const color = new THREE.Color();
// color.setHSL( Math.random(), 0.7, Math.random() * 0.2 + 0.05 );
// const material = new THREE.MeshBasicMaterial( { color: color } );
// const sphere = new THREE.Mesh( geometry, material );
// sphere.position.normalize().multiplyScalar( Math.random() * 4.0 + 2.0 );
// sphere.scale.setScalar( Math.random() * Math.random() + 0.5 );
// scene.add( sphere );
// if ( Math.random() < 0.25 ) sphere.layers.enable( BLOOM_SCENE );
// }
}
// 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

@@ -0,0 +1,19 @@
import React, {useRef} from "react";
import { Text } from "@react-three/drei";
export const CanvasLoader = () => {
const group = useRef(null);
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>
);
};

View File

@@ -9,12 +9,13 @@ import { useOnScreen } from "@/utils/hooks";
export default function LuxVox(props) {
const router = useStore((s) => s.router)
const group = useRef(null);
const [hovered, setHover] = useState(false)
const { nodes, materials } = useGLTF("/assets/models/lux-vox.glb");
const { route } = props
const clock = new THREE.Clock();
let previousTime = 0;
useFrame(() => {
const elapsedTime = clock.getElapsedTime();
const deltaTime = elapsedTime - previousTime;
@@ -23,7 +24,7 @@ export default function LuxVox(props) {
if (group.current) {
// group.current.position.x = -3.5 + Math.sin(elapsedTime * 0.9) * Math.PI * 0.05;
// group.current.position.y = -1.5 - Math.cos(elapsedTime * 0.1) * Math.PI * 0.5;
group.current.rotation.y = -elapsedTime * 0.6;
// group.current.rotation.y = -elapsedTime * 0.6;
}
})
return (
@@ -34,6 +35,9 @@ export default function LuxVox(props) {
geometry={nodes.lux.geometry}
material={materials.palette}
rotation={[Math.PI / 2, 0, 0]}
onClick={() => router.push(route)}
onPointerOver={(e) => setHover(true)}
onPointerOut={(e) => setHover(false)}
/>
</group>
);

View File

@@ -0,0 +1,76 @@
import React, { Suspense, useEffect, useMemo, useRef, useState } from "react";
import { useFrame, useLoader } from '@react-three/fiber'
import { TextureLoader } from 'three/src/loaders/TextureLoader'
import { useGLTF, useTexture } from "@react-three/drei";
import * as THREE from "three";
import gsap from "gsap";
import useStore from '@/helpers/store'
import SeedLogo from "@/static/assets/textures/particles/seed_logo.png";
// import BabyOctoImg from "../static/assets/textures/baby_octo_alpha_0001.png";
// import BabyOctoAlpha from "../static/assets/textures/baby_octo_alpha_map.png";
export const starfieldParams = {
count: 35000,
size: 0.01
}
export default function Starfield({ parameters, ...props }) {
const group = useRef();
const particles = useRef();
const clock = new THREE.Clock();
let previousTime = 0;
const sections = 6;
const objectsDistance = 4;
const particleTextures = useTexture({
map: '/assets/textures/particles/seed_logo.png'
})
useEffect(() => {
console.log(parameters);
generateStarfield();
});
function generateStarfield() {
const positions = new Float32Array(parameters.count * 3);
const colors = new Float32Array(parameters.count * 3);
for (let i = 0; i < parameters.count; i++) {
const i3 = i * 3;
positions[i3 + 0] = (Math.random() - 0.5) * 10;
positions[i3 + 1] =
objectsDistance * 0.8 -
Math.random() * objectsDistance * (sections.length * 2);
positions[i3 + 2] = (Math.random() - 0.5) * 10;
}
// if (particles.current) {
console.log('pc:', particles);
particles.current.geometry.setAttribute('position', new THREE.BufferAttribute(positions, 3))
particles.current.geometry.setAttribute('color', new THREE.BufferAttribute(colors, 3))
// }
}
// useFrame(() => {
// const elapsedTime = clock.getElapsedTime();
// const deltaTime = elapsedTime - previousTime;
// previousTime = elapsedTime;
// // if (group.current) {
// // // group.current.position.x = -3.5 + Math.sin(elapsedTime * 0.9) * Math.PI * 0.05;
// // // group.current.position.y = -1.5 - Math.cos(elapsedTime * 0.1) * Math.PI * 0.5;
// // // group.current.rotation.y = elapsedTime * 0.6;
// // }
// })
return (
// <Suspense fallback={null}>
// <group ref={group} {...props}>
<points ref={particles}>
<bufferGeometry attach="geometry" />
<pointsMaterial attach="material" size={parameters.size} {...particleTextures} sizeAttenuation={true} depthWrite={true} vertexColors={true} blending={THREE.AdditiveBlending} />
</points>
// </group>
// </Suspense>
);
}

View File

@@ -1,65 +0,0 @@
import { Box } from '@chakra-ui/react';
import React, { useRef, useState, useMemo } from "react";
import { useFrame, useLoader } from "@react-three/fiber";
import * as THREE from "three";
import babyOctoGif from "../../static/assets/textures/baby_octo_alpha_0001.png";
import babyOctoAlpha from "../../static/assets/textures/baby_octo_alpha_map.png";
export const StarfieldR3F = (props) => {
const mesh = useRef();
const particlesCount = 35000;
const positions = new Float32Array(particlesCount * 3);
const objectsDistance = 4;
/**
* Colors
*/
const count = 20;
const colors = new Float32Array(count * 3);
for (let i = 0; i < count * 3; i++) {
// positions[i] = (Math.random() - 0.5) * 10
colors[i] = Math.random();
}
for (let i = 0; i < particlesCount; i++) {
const i3 = i * 3;
positions[i3 + 0] = (Math.random() - 0.5) * 40;
positions[i3 + 1] =
objectsDistance * 0.8 -
Math.random() * objectsDistance * (sections.length * 2);
positions[i3 + 2] = (Math.random() - 0.5) * 40;
}
const particlesGeometry = new THREE.BufferGeometry();
particlesGeometry.setAttribute(
"position",
new THREE.BufferAttribute(positions, 3)
);
// Material
const particlesMaterial = new THREE.PointsMaterial({
map: planeColorTexture,
alphaMap: planeAlphaTexture,
// color: parameters.particleColor,
transparent: true,
sizeAttenuation: true,
size: 0.03,
});
// Points
const particles = new THREE.Points(particlesGeometry, particlesMaterial);
return (
<point
{...props}
ref={mesh}
name="Starfield"
>
<bufferGeometry attach="geometry" position={new THREE.BufferAttribute(positions, 3)} />
</point>
)
};

View File

@@ -40,7 +40,15 @@ export const galaxy1Params = {
randomnessPower: 8,
insideColor: galaxyColors.inside,
outsideColor: galaxyColors.outside,
type: 1
type: 1,
opacity: 1,
focusDistance: 0.05,
focalLength: 0.05,
width: 480,
height: 480,
focusX: 0,
focusY: 0,
focusZ: 0,
}
export const galaxy2Params = {
count: 2000000,
@@ -52,7 +60,15 @@ export const galaxy2Params = {
randomnessPower: 8,
insideColor: galaxy2Colors.inside,
outsideColor: galaxy2Colors.outside,
type: 2
type: 2,
opacity: 1,
focusDistance: 0.05,
focalLength: 0.05,
width: 480,
height: 480,
focusX: 0,
focusY: 0,
focusZ: 0,
}
// gui.addColor(galaxy2Params, 'insideColor').onFinishChange()
@@ -66,7 +82,15 @@ export const galaxy3Params = {
randomnessPower: 20,
insideColor: galaxy3Colors.inside,
outsideColor: galaxy3Colors.outside,
type: 3
type: 3,
opacity: 1,
focusDistance: 0.05,
focalLength: 0.05,
width: 480,
height: 480,
focusX: 0,
focusY: 0,
focusZ: 0,
}
export const galaxy4Params = {
@@ -79,9 +103,37 @@ export const galaxy4Params = {
randomnessPower: 20,
insideColor: galaxy4Colors.inside,
outsideColor: galaxy4Colors.outside,
type: 4
type: 4,
opacity: 1,
focusDistance: 0.05,
focalLength: 0.05,
width: 480,
height: 480,
focusX: 0,
focusY: 0,
focusZ: 0,
}
export const galaxy5Params = {
count: 35000,
size: 0.03,
radius: 5,
branches: 8,
spin: 5,
randomness: 4,
randomnessPower: 20,
insideColor: galaxy4Colors.inside,
outsideColor: galaxy4Colors.outside,
type: 3,
opacity: 1,
focusDistance: 0.05,
focalLength: 0.05,
width: 480,
height: 480,
focusX: 0,
focusY: 0,
focusZ: 0,
}
let geometry = null
let material = null
let points = null
@@ -129,7 +181,7 @@ export const generateGalaxy = (params) => {
if (i < 20) {
console.log(i, branchAngle)
console.log(params.type, i, branchAngle)
}
}
} else if (params.type === 2) {
@@ -156,7 +208,7 @@ export const generateGalaxy = (params) => {
if (i < 20) {
console.log(i, branchAngle)
console.log(params.type, i, branchAngle)
}
}
@@ -184,7 +236,7 @@ export const generateGalaxy = (params) => {
if (i < 20) {
console.log(i, branchAngle)
console.log(params.type, i, branchAngle)
}
}
} else if (params.type === 4) {
@@ -198,7 +250,7 @@ export const generateGalaxy = (params) => {
const randomY = Math.pow(Math.random(), params.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
const randomZ = Math.pow(Math.random(), params.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
positions[i3 + 0] = Math.cos(branchAngle + spinAngle) * radius + randomX
positions[i3 + 0] = Math.cos(branchAngle + spinAngle) * radius + randomX
positions[i3 + 1] = Math.sin(branchAngle - spinAngle) * radius + randomY
positions[i3 + 2] = Math.sin(branchAngle + spinAngle) * radius + randomZ
@@ -211,7 +263,34 @@ export const generateGalaxy = (params) => {
if (i < 20) {
console.log(i, branchAngle)
console.log(params.type, i, branchAngle)
}
}
} else if (params.type === 5) {
for (let i = 0; i < params.count; i++) {
const i3 = i * 3
const radius = Math.random() * params.radius
const spinAngle = radius * params.spin
const branchAngle = (i % params.branches) / params.branches * Math.PI * 2
const randomX = Math.pow(Math.random(), params.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
const randomY = Math.pow(Math.random(), params.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
const randomZ = Math.pow(Math.random(), params.randomnessPower) * (Math.random() < 0.5 ? 1 : -1)
positions[i3 + 0] = Math.cos(branchAngle + spinAngle) * radius + randomX
positions[i3 + 1] = Math.sin(branchAngle - spinAngle) * radius + randomY
positions[i3 + 2] = Math.sin(branchAngle + spinAngle) * radius + randomZ
const mixedColor = colorInside.clone()
mixedColor.lerp(colorOutside, radius / params.radius * 1.5)
colors[i3 + 0] = mixedColor.r
colors[i3 + 1] = mixedColor.g
colors[i3 + 2] = mixedColor.b
if (i < 20) {
console.log(params.type, i, branchAngle)
}
}
}

View File

@@ -10,7 +10,7 @@ import {
galaxy2Params,
galaxy3Params,
galaxy4Params,
} from "./galaxies";
} from "../canvas/galaxies";
// import { OctoA } from './models/Octopus'
// import NomadModel from "./models/CarbonNomad";
import SeedLogo from "../img/assets/textures/particles/seed_logo.png";

View File

@@ -0,0 +1,5 @@
import { Box } from "@chakra-ui/react";
export const DOMLoader = () => {
return <Box position="absolute" bg="black" color="white" top={0} left={0} width="100vw" height="100vh" d="flex" alignContent="center" textAlign="center" zIndex={5000}><Box as="p">Loading...</Box></Box>;
};

View File

@@ -1,9 +1,12 @@
import React, { Suspense } from 'react'
import { Box } from '@chakra-ui/react'
import Script from 'next/script'
import { DOMLoader } from '@/components/dom/Loader'
export function AirtableSpeakerInstance () {
return (
<Suspense fallback={<Loader />}>
<Suspense fallback={<DOMLoader />}>
<Script src="https://static.airtable.com/js/embed/embed_snippet_v1.js"></Script>
<iframe title="Apply to MetaFest2 as a speaker" className="airtable-embed airtable-dynamic-height" src="https://airtable.com/embed/shrisi7iurIB56wNu?backgroundColor=blue" frameBorder="0" onmousewheel="" width="100%" height="3185" style={{background: 'transparent', border: '0'}}></iframe>
</Suspense>
@@ -12,7 +15,7 @@ export function AirtableSpeakerInstance () {
export function AirtableContributorInstance () {
return (
<Suspense fallback={<Loader />}>
<Suspense fallback={<DOMLoader />}>
<Script src="https://static.airtable.com/js/embed/embed_snippet_v1.js"></Script>
<iframe title="Apply to MetaFest2 as a contributor" className="airtable-embed airtable-dynamic-height" src="https://airtable.com/embed/shrIOyCiJ7QfGMt7Z?backgroundColor=blue" frameBorder="0" onmousewheel="" width="100%" height="3185" style={{background: 'transparent', border: '0'}}></iframe>
</Suspense>
@@ -21,7 +24,7 @@ export function AirtableContributorInstance () {
export function AirtablePerformerInstance () {
return (
<Suspense fallback={<Loader />}>
<Suspense fallback={<DOMLoader />}>
<Script src="https://static.airtable.com/js/embed/embed_snippet_v1.js"></Script>
<iframe title="Apply to MetaFest2 as a performer" className="airtable-embed airtable-dynamic-height" src="https://airtable.com/embed/shrfobHN1ngXRZ3EQ?backgroundColor=blue" frameBorder="0" onmousewheel="" width="100%" height="3185" style={{background: 'transparent', border: '0'}}></iframe>
</Suspense>
@@ -30,13 +33,10 @@ export function AirtablePerformerInstance () {
export function AirtableSponsorInstance () {
return (
<Suspense fallback={<Loader />}>
<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>
</Suspense>
)
}
export const Loader = () => {
return <Box position="absolute" top={0} left={0} width="100vw" height="100vh" d="flex" alignContent="center" textAlign="center">Loading...</Box>;
};

View File

@@ -11,7 +11,7 @@ import { Suspense, useEffect, useRef } from 'react'
// const { OctoEasterEggR3F } = dynamic(() => import('@/components/canvas/EasterEgg.r3f'), {
// ssr: false,
// })
import { OctoEasterEggR3F } from '@/components/canvas/EasterEgg.r3f';
import {CanvasLoader} from '@/components/canvas/Loader'
const LControl = () => {
const dom = useStore((state) => state.dom)
@@ -33,6 +33,8 @@ const LCanvas = ({ children }) => {
return (
<Canvas
mode='concurrent'
linear
// flat
style={{
position: 'fixed',
top: 0,
@@ -45,9 +47,9 @@ const LCanvas = ({ children }) => {
>
{/* <LControl /> */}
<Preload all />
<Suspense fallback={<OctoEasterEggR3F />}>
<Suspense fallback={<CanvasLoader />}>
{children}
</Suspense>
</Suspense>
</Canvas>
)
}

View File

@@ -1,4 +1,4 @@
import { PerspectiveCamera } from '@react-three/drei'
import { PerspectiveCamera, Stats } from '@react-three/drei'
import React, { useEffect, useMemo, useRef, forwardRef } from "react";
import * as THREE from "three";
import { useFrame, extend } from '@react-three/fiber'
@@ -11,17 +11,27 @@ import {
ArtistMusashi,
} from "@/components/dom/cv-artists";
import {
galaxy1Params,
galaxy2Params,
galaxy3Params,
galaxy4Params,
galaxy5Params,
} from '@/components/canvas/galaxies';
import { Effects, Nucleus } from "@/components/canvas/Galaxy";
const NomadVox = dynamic(() => import('@/components/canvas/Nomad'), {
ssr: false,
})
const LuxVox = dynamic(() => import('@/components/canvas/Lux'), {
ssr: false,
})
const JetsetterVox = dynamic(() => import('@/components/canvas/Jetsetter'), {
ssr: false,
})
const Galaxy = dynamic(() => import('@/components/canvas/Galaxy'), {
ssr: false,
})
export const objectsDistance = 4;
export const R3FSceneSection = ({ name, count, children }) => {
@@ -48,7 +58,9 @@ const DOM = () => {
const R3F = () => {
const camera = useRef({ x: 0, y: 0 });
const cameraGroup = useRef({ x: 0, y: 0 });
const dof = useRef(null);
const rimLight = useRef({ x: 0, y: 0 });
const rimLight2 = useRef({ x: 0, y: 0 });
const scrollY = useRef(0)
const sizes = useRef({ width: 0, height: 0 })
const cursor = useRef({ x: 0, y: 0 })
@@ -96,7 +108,7 @@ const R3F = () => {
const newSection = Math.round(scrollY.current / sizes.current.height);
if (newSection !== currentSection) {
currentSection = newSection;
console.log(currentSection);
console.log('Current section: ', currentSection);
}
});
@@ -128,12 +140,14 @@ const R3F = () => {
// camera.updateMatrixWorld();
// Animate camera
camera.current.position.y = (-scrollY.current / sizes.current.height) * objectsDistance;
rimLight.current.position.y = (-scrollY.current / sizes.current.height) * objectsDistance;
cameraGroup.current.position.x +=
(parallaxX - cameraGroup.current.position.x) * 5 * deltaTime;
cameraGroup.current.position.y +=
(parallaxY - cameraGroup.current.position.y) * 5 * deltaTime;
cameraGroup.current.position.x +=
(parallaxX - cameraGroup.current.position.x) * 5 * deltaTime;
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;
// rimLight.current.position.x +=
// (parallaxX - rimLight.current.position.x) ;
// rimLight.current.position.y =
@@ -151,27 +165,47 @@ const R3F = () => {
width={6}
height={2}
intensity={5}
color="pink"
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={rimLight2}
width={6}
height={2}
intensity={5}
color="pink"
position={[-1.6, -1, 0.5]}
rotation={[0, 0, 0]}
castShadow
/>
<Stats />
</group>
<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}>
{/* <group position={[5, 0, 3]} rotation={[0, 0.1, 0]}>
<directionalLight
intensity={0.3}
decay={2}
color="cyan"
rotation={[0, 0, 0]}
<Galaxy
dof={dof}
parameters={galaxy5Params}
nucleus={true}
// effects={true}
position={[1, -0.4, -3]}
rotation={[-Math.PI / 0.51, Math.PI / 4.5, 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]} />
@@ -231,7 +265,6 @@ export const artists = [
];
function RimLight({ brightness, color, camPos }) {
console.log('ref', camPos);
return (
<rectAreaLight
width={4}

View File

@@ -1,8 +1,10 @@
import React, { useEffect, useMemo, useRef } from "react";
import React, { createRef, useEffect, useMemo, useRef } from "react";
import * as THREE from "three";
import { useFrame, extend } from '@react-three/fiber'
import { PerspectiveCamera } from '@react-three/drei'
import { PerspectiveCamera, Stats } from '@react-three/drei'
import dynamic from 'next/dynamic'
import {
HomeSection,
ScheduleSection,
@@ -14,9 +16,16 @@ import {
} from "@/components/dom/page-sections";
import useStore from '@/helpers/store'
import {
galaxy1Params,
galaxy2Params,
galaxy3Params,
galaxy4Params,
galaxy5Params,
} from '@/components/canvas/galaxies';
import { OctoEasterEggR3F } from '@/components/canvas/EasterEgg.r3f';
import { Effects, Nucleus } from "@/components/canvas/Galaxy";
import { starfieldParams } from "@/components/canvas/Starfield";
// Dynamic import is used to prevent a payload when the website start that will include threejs r3f etc..
@@ -37,6 +46,12 @@ const LuxVox = dynamic(() => import('@/components/canvas/Lux'), {
const JetsetterVox = dynamic(() => import('@/components/canvas/Jetsetter'), {
ssr: false,
})
const Starfield = dynamic(() => import('@/components/canvas/Starfield'), {
ssr: false,
})
const Galaxy = dynamic(() => import('@/components/canvas/Galaxy'), {
ssr: false,
})
// dom components goes here
const DOM = () => {
@@ -63,8 +78,15 @@ export const R3FSceneSection = ({ name, count, children }) => {
// canvas components goes here
const R3F = () => {
const dof1 = useRef(null);
const dof2 = useRef(null);
const dof3 = useRef(null);
const dof4 = useRef(null);
const galaxy1Anim = useRef(null);
const galaxy1Group = useRef(null);
const camera = useRef({ x: 0, y: 0 });
const cameraGroup = useRef({ x: 0, y: 0 });
const rimLight = useRef({ x: 0, y: 0 });
const scrollY = useRef(0)
const sizes = useRef({ width: 0, height: 0 })
const cursor = useRef({ x: 0, y: 0 })
@@ -114,7 +136,7 @@ const R3F = () => {
const newSection = Math.round(scrollY.current / sizes.current.height);
if (newSection !== currentSection) {
currentSection = newSection;
console.log(currentSection);
console.log('Current section:', currentSection);
}
});
@@ -151,6 +173,16 @@ const R3F = () => {
cameraGroup.current.position.y +=
(parallaxY - cameraGroup.current.position.y) * 5 * deltaTime;
rimLight.current.position.y = (-scrollY.current / sizes.current.height) * objectsDistance;
// console.log('dof1', dof1.current);
// dof1.current.position.y = -scrollY * 0.0005;
// // galaxy1.rotation.y += (parallaxX - cameraGroup.position.x) * 2 * deltaTime
// dof1.current.rotation.z = scrollY * 0.0004;
// dof1.current.rotation.x = -elapsedTime * 0.006;
if(galaxy1Group.current) {
galaxy1Group.current.rotation.z = scrollY * 0.0004;
galaxy1Group.current.rotation.x = -elapsedTime * 0.006;
}
// console.log('camg', camera.current.position);
});
@@ -158,19 +190,39 @@ const R3F = () => {
return (
<>
<group ref={cameraGroup}>
<PerspectiveCamera ref={camera} makeDefault position={[0, 0, 6]} />
<PerspectiveCamera ref={camera} makeDefault aspect={sizes.width / sizes.height} position={[0, 0, 6]}/>
<rectAreaLight
ref={rimLight}
width={6}
height={2}
intensity={6}
color="pink"
position={[0, 0, 1.5]}
rotation={[0, 0, 0]}
castShadow
/>
<Galaxy dof={dof3} parameters={galaxy5Params} nucleus={true} helper={true} position={[0,0,-20]} />
<Stats />
</group>
<R3FSceneSection name="SectionOne" count={0}>
<LuxVox route='/cv' position={[1, -1, -2]} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
<Galaxy dof={dof1} parameters={galaxy1Params} position={[6, 0, -13]} rotation={[4.18, 4.15, 4.75]} />
</R3FSceneSection>
<R3FSceneSection name="SectionTwo" count={1}>
<NomadVox route='/cv' position={[1, -0.4, 2]} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
<R3FSceneSection name="SectionTwo" count={2}>
<Galaxy dof={dof2} parameters={galaxy2Params} position={[6, 0, -13]} />
<LuxVox route='/cv#artist-luxumbra' position={[2.5, -2, -1]} />
</R3FSceneSection>
<R3FSceneSection name="SectionTwo" count={4}>
<JetsetterVox route='/cv' position={[1, -2.4, 2]} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
<NomadVox route='/cv' position={[2, -1, -0.8]} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
</R3FSceneSection>
<R3FSceneSection name="SectionSeven" count={6}>
<Shader />
<JetsetterVox route='/cv' position={[0, -1.8, 0]} rotation={[-Math.PI / 0.51, Math.PI / 4.5, 0]} />
{/* <Shader /> */}
<OctoEasterEggR3F position={[0, 0, 0]} />
</R3FSceneSection>
</>

395
yarn.lock
View File

@@ -2081,6 +2081,205 @@
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.5.tgz#db5a11bf66bdab39569719555b0f76e138d7bd64"
integrity sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==
"@radix-ui/popper@0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@radix-ui/popper/-/popper-0.1.0.tgz#c387a38f31b7799e1ea0d2bb1ca0c91c2931b063"
integrity sha512-uzYeElL3w7SeNMuQpXiFlBhTT+JyaNMCwDfjKkrzugEcYrf5n52PHqncNdQPUtR42hJh8V9FsqyEDbDxkeNjJQ==
dependencies:
"@babel/runtime" "^7.13.10"
csstype "^3.0.4"
"@radix-ui/primitive@0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-0.1.0.tgz#6206b97d379994f0d1929809db035733b337e543"
integrity sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-arrow@0.1.3":
version "0.1.3"
resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-0.1.3.tgz#17f86eab216c48aff17b13b811569a9bbabaa44d"
integrity sha512-9x1gRYdlUD5OUwY7L+M+4FY/YltDSsrNSj8QXGPbxZxL5ghWXB/4lhyIGccCwk/e8ggfmQYv9SRNmn3LavPo3A==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-primitive" "0.1.3"
"@radix-ui/react-compose-refs@0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-0.1.0.tgz#cff6e780a0f73778b976acff2c2a5b6551caab95"
integrity sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-context@0.1.1":
version "0.1.1"
resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-0.1.1.tgz#06996829ea124d9a1bc1dbe3e51f33588fab0875"
integrity sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-id@0.1.4":
version "0.1.4"
resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-0.1.4.tgz#4cd6126e6ac8a43ebe6d52948a068b797cc9ad71"
integrity sha512-/hq5m/D0ZfJWOS7TLF+G0l08KDRs87LBE46JkAvgKkg1fW4jkucx9At9D9vauIPSbdNmww5kXEp566hMlA8eXA==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-use-layout-effect" "0.1.0"
"@radix-ui/react-popper@0.1.3":
version "0.1.3"
resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-0.1.3.tgz#a93bdd72845566007e5f3868caddd62318bb781e"
integrity sha512-2OV2YaJv7iTZexJY3HJ7B6Fs1A/3JXd3fRGU4JY0guACfGMD1C/jSgds505MKQOTiHE/quI6j3/q8yfzFjJR9g==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/popper" "0.1.0"
"@radix-ui/react-arrow" "0.1.3"
"@radix-ui/react-compose-refs" "0.1.0"
"@radix-ui/react-context" "0.1.1"
"@radix-ui/react-primitive" "0.1.3"
"@radix-ui/react-use-rect" "0.1.1"
"@radix-ui/react-use-size" "0.1.0"
"@radix-ui/rect" "0.1.1"
"@radix-ui/react-portal@0.1.3":
version "0.1.3"
resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-0.1.3.tgz#56826e789b3d4e37983f6d23666e3f1b1b9ee358"
integrity sha512-DrV+sPYLs0HhmX5/b7yRT6nLM9Nl6FtQe2KUG+46kiCOKQ+0XzNMO5hmeQtyq0mRf/qlC02rFu6OMsWpIqVsJg==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-primitive" "0.1.3"
"@radix-ui/react-use-layout-effect" "0.1.0"
"@radix-ui/react-portal@^0.1.3":
version "0.1.4"
resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-0.1.4.tgz#17bdce3d7f1a9a0b35cb5e935ab8bc562441a7d2"
integrity sha512-MO0wRy2eYRTZ/CyOri9NANCAtAtq89DEtg90gicaTlkCfdqCLEBsLb+/q66BZQTr3xX/Vq01nnVfc/TkCqoqvw==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-primitive" "0.1.4"
"@radix-ui/react-use-layout-effect" "0.1.0"
"@radix-ui/react-presence@0.1.1":
version "0.1.1"
resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-0.1.1.tgz#2088dec6f4f8042f83dd2d6bf9e8ef09dadbbc15"
integrity sha512-LsL+NcWDpFUAYCmXeH02o4pgqcSLpwxP84UIjCtpIKrsPe2vLuhcp79KC/jZJeXz+of2lUpMAxpM+eCpxFZtlg==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-compose-refs" "0.1.0"
"@radix-ui/react-use-layout-effect" "0.1.0"
"@radix-ui/react-primitive@0.1.3":
version "0.1.3"
resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-0.1.3.tgz#585c35ef2ec06bab0ea9e0fc5c916e556661b881"
integrity sha512-fcyADaaAx2jdqEDLsTs6aX50S3L1c9K9CC6XMpJpuXFJCU4n9PGTFDZRtY2gAoXXoRCPIBsklCopSmGb6SsDjQ==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-slot" "0.1.2"
"@radix-ui/react-primitive@0.1.4":
version "0.1.4"
resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-0.1.4.tgz#6c233cf08b0cb87fecd107e9efecb3f21861edc1"
integrity sha512-6gSl2IidySupIMJFjYnDIkIWRyQdbu/AHK7rbICPani+LW4b0XdxBXc46og/iZvuwW8pjCS8I2SadIerv84xYA==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-slot" "0.1.2"
"@radix-ui/react-slot@0.1.2":
version "0.1.2"
resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-0.1.2.tgz#e6f7ad9caa8ce81cc8d532c854c56f9b8b6307c8"
integrity sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-compose-refs" "0.1.0"
"@radix-ui/react-tooltip@0.1.6":
version "0.1.6"
resolved "https://registry.yarnpkg.com/@radix-ui/react-tooltip/-/react-tooltip-0.1.6.tgz#46a3e385e004aaebd16ecaa1da7d1af70ba3bb45"
integrity sha512-0uaRpRmTCQo5yMUkDpv4LEDnaQDoeLXcNNhZonCZdbZBQ7ntvjURIWIigq1/pXZp0UX7oPpFzsXD9jUp8JT0WA==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/primitive" "0.1.0"
"@radix-ui/react-compose-refs" "0.1.0"
"@radix-ui/react-context" "0.1.1"
"@radix-ui/react-id" "0.1.4"
"@radix-ui/react-popper" "0.1.3"
"@radix-ui/react-portal" "0.1.3"
"@radix-ui/react-presence" "0.1.1"
"@radix-ui/react-primitive" "0.1.3"
"@radix-ui/react-slot" "0.1.2"
"@radix-ui/react-use-controllable-state" "0.1.0"
"@radix-ui/react-use-escape-keydown" "0.1.0"
"@radix-ui/react-use-previous" "0.1.0"
"@radix-ui/react-use-rect" "0.1.1"
"@radix-ui/react-visually-hidden" "0.1.3"
"@radix-ui/react-use-callback-ref@0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-0.1.0.tgz#934b6e123330f5b3a6b116460e6662cbc663493f"
integrity sha512-Va041McOFFl+aV+sejvl0BS2aeHx86ND9X/rVFmEFQKTXCp6xgUK0NGUAGcgBlIjnJSbMYPGEk1xKSSlVcN2Aw==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-use-controllable-state@0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-0.1.0.tgz#4fced164acfc69a4e34fb9d193afdab973a55de1"
integrity sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-use-callback-ref" "0.1.0"
"@radix-ui/react-use-escape-keydown@0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-0.1.0.tgz#dc80cb3753e9d1bd992adbad9a149fb6ea941874"
integrity sha512-tDLZbTGFmvXaazUXXv8kYbiCcbAE8yKgng9s95d8fCO+Eundv0Jngbn/hKPhDDs4jj9ChwRX5cDDnlaN+ugYYQ==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-use-callback-ref" "0.1.0"
"@radix-ui/react-use-layout-effect@0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-0.1.0.tgz#ebf71bd6d2825de8f1fbb984abf2293823f0f223"
integrity sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-use-previous@0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@radix-ui/react-use-previous/-/react-use-previous-0.1.0.tgz#fed880d41187d0fdd1e19c4588402765f342777e"
integrity sha512-0fxNc33rYnCzDMPSiSnfS8YklnxQo8WqbAQXPAgIaaA1jRu2qFB916PL4qCIW+avcAAqFD38vWhqDqcVmBharA==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-use-rect@0.1.1":
version "0.1.1"
resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-0.1.1.tgz#6c15384beee59c086e75b89a7e66f3d2e583a856"
integrity sha512-kHNNXAsP3/PeszEmM/nxBBS9Jbo93sO+xuMTcRfwzXsmxT5gDXQzAiKbZQ0EecCPtJIzqvr7dlaQi/aP1PKYqQ==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/rect" "0.1.1"
"@radix-ui/react-use-size@0.1.0":
version "0.1.0"
resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-0.1.0.tgz#dc49295d646f5d3f570943dbb88bd94fc7db7daf"
integrity sha512-TcZAsR+BYI46w/RbaSFCRACl+Jh6mDqhu6GS2r0iuJpIVrj8atff7qtTjmMmfGtEDNEjhl7DxN3pr1nTS/oruQ==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-visually-hidden@0.1.3":
version "0.1.3"
resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-0.1.3.tgz#406a2f1e2f2cf27e5b85a29dc3aca718e695acaf"
integrity sha512-dPU6ZR2WQ/W9qv7E1Y8/I8ymqG+8sViU6dQQ6sfr2/8yGr0I4mmI7ywTnqXaE+YS9gHLEZHdQcEqTNESg6YfdQ==
dependencies:
"@babel/runtime" "^7.13.10"
"@radix-ui/react-primitive" "0.1.3"
"@radix-ui/rect@0.1.1":
version "0.1.1"
resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-0.1.1.tgz#95b5ba51f469bea6b1b841e2d427e17e37d38419"
integrity sha512-g3hnE/UcOg7REdewduRPAK88EPuLZtaq7sA9ouu8S+YEtnyFRI16jgv6GZYe3VMoQLL1T171ebmEPtDjyxWLzw==
dependencies:
"@babel/runtime" "^7.13.10"
"@reach/alert@0.13.2":
version "0.13.2"
resolved "https://registry.yarnpkg.com/@reach/alert/-/alert-0.13.2.tgz#71c4a848d51341f1d6d9eaae060975391c224870"
@@ -2191,6 +2390,15 @@
suspend-react "^0.0.8"
zustand "^3.7.1"
"@react-three/postprocessing@^2.3.2":
version "2.3.2"
resolved "https://registry.yarnpkg.com/@react-three/postprocessing/-/postprocessing-2.3.2.tgz#14ffc56b0153d2cbcb6615ae5a943d6786c5b868"
integrity sha512-e1veVao9XR3BP/J6OdvbR7yQq7d3lpOQuKvSQJ9LWLhPziBzHeRazU63cIwf5Dh4qy0TuxswmgWKxRn8Sxp79Q==
dependencies:
postprocessing "6.26.3"
react-merge-refs "^1.1.0"
three-stdlib "^2.8.11"
"@rollup/plugin-node-resolve@^7.1.1":
version "7.1.3"
resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca"
@@ -2224,6 +2432,11 @@
resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.0.tgz#7f698254aadf921e48dda8c0a6b304026b8a9323"
integrity sha512-JLo+Y592QzIE+q7Dl2pMUtt4q8SKYI5jDrZxrozEQxnGVOyYE+GWK9eLkwTaeN9DDctlaRAQ3TBmzZ1qdLE30A==
"@stitches/react@1.2.6":
version "1.2.6"
resolved "https://registry.yarnpkg.com/@stitches/react/-/react-1.2.6.tgz#61f2a3d1110334ecd33bcb7463650127d42470cb"
integrity sha512-gRVITYj8W4jJmoiVxWDv72yCvd12VvtUUAnTzs07EqmtvGCVgKZu3Dx0x5KVCcb0b6tfgvvNH2L84YrzdM4Mag==
"@surma/rollup-plugin-off-main-thread@^1.1.1":
version "1.4.2"
resolved "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58"
@@ -2411,6 +2624,11 @@
"@typescript-eslint/types" "5.5.0"
eslint-visitor-keys "^3.0.0"
"@use-gesture/core@10.2.11":
version "10.2.11"
resolved "https://registry.yarnpkg.com/@use-gesture/core/-/core-10.2.11.tgz#914c36f190bcf452500d11a11fc294fe56e5dc2f"
integrity sha512-5YeVrT9prf9UeaAO+2fIuiKdZ01uVBvVsjG79berGZPTHVkz01eFX2ODWJG05uQTqmRw6olz1J80yt6qcGPdvA==
"@use-gesture/core@10.2.4":
version "10.2.4"
resolved "https://registry.npmjs.org/@use-gesture/core/-/core-10.2.4.tgz#139370223174b0589bd4b4f8ac7c0beb6ba64ba2"
@@ -2423,11 +2641,25 @@
dependencies:
"@use-gesture/core" "10.2.4"
"@use-gesture/react@^10.2.5":
version "10.2.11"
resolved "https://registry.yarnpkg.com/@use-gesture/react/-/react-10.2.11.tgz#f23776050aeaee3b18f80df9cd2b765229bbfa66"
integrity sha512-yATjHv6ZNe9Jar1YtJvcb6KxwpcGGW/X8FEUY6xo2mDxHkP7dCsnhZZm7I+giGlrJKBMvpVBARsbUhwQP6v6nA==
dependencies:
"@use-gesture/core" "10.2.11"
"@webgpu/glslang@^0.0.15":
version "0.0.15"
resolved "https://registry.npmjs.org/@webgpu/glslang/-/glslang-0.0.15.tgz#f5ccaf6015241e6175f4b90906b053f88483d1f2"
integrity sha512-niT+Prh3Aff8Uf1MVBVUsaNjFj9rJAKDXuoHIKiQbB+6IUP/3J3JIhBNyZ7lDhytvXxw6ppgnwKZdDJ08UMj4Q==
"@welldone-software/why-did-you-render@^6.2.3":
version "6.2.3"
resolved "https://registry.yarnpkg.com/@welldone-software/why-did-you-render/-/why-did-you-render-6.2.3.tgz#cdd5e27cf25b7e767c1c0b0e8808f67d3f6be833"
integrity sha512-FQgi90jvC9uw2aALlonJfqaWOvU5UUBBVvdAnS2iryXwCc4YJkKsPJY5Y/LzaND3OIyk8XGUn1vTRn6hcem28Q==
dependencies:
lodash "^4"
"@widgetbot/embed-api@^1.1.3":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@widgetbot/embed-api/-/embed-api-1.1.3.tgz#c7fd8069d7ce2ec7740d8bf4140c786c636fb3d6"
@@ -2676,6 +2908,11 @@ assert-plus@1.0.0, assert-plus@^1.0.0:
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
assign-symbols@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
ast-types-flow@^0.0.7:
version "0.0.7"
resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
@@ -2706,6 +2943,11 @@ atomically@^1.7.0:
resolved "https://registry.yarnpkg.com/atomically/-/atomically-1.7.0.tgz#c07a0458432ea6dbc9a3506fffa424b48bccaafe"
integrity sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==
attr-accept@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b"
integrity sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==
autoprefixer@^10.4.2:
version "10.4.2"
resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz#25e1df09a31a9fba5c40b578936b90d35c9d4d3b"
@@ -3348,6 +3590,11 @@ color-name@~1.1.4:
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
colord@^2.9.2:
version "2.9.2"
resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1"
integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==
colors@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
@@ -3580,7 +3827,7 @@ csstype@3.0.9:
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.9.tgz#6410af31b26bd0520933d02cbc64fce9ce3fbf0b"
integrity sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==
csstype@^3.0.2:
csstype@^3.0.2, csstype@^3.0.4:
version "3.0.11"
resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33"
integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw==
@@ -3669,6 +3916,11 @@ delimit-stream@0.1.0:
resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b"
integrity sha1-m4MZR3wOX4rrPONXrjBfwl6hzSs=
dequal@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.2.tgz#85ca22025e3a87e65ef75a7a437b35284a7e319d"
integrity sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==
detect-gpu@^4.0.14:
version "4.0.17"
resolved "https://registry.npmjs.org/detect-gpu/-/detect-gpu-4.0.17.tgz#e65a14f327e1be78c6861e1224d9b96843120629"
@@ -4395,6 +4647,21 @@ execa@^5.0.0:
signal-exit "^3.0.3"
strip-final-newline "^2.0.0"
extend-shallow@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
dependencies:
is-extendable "^0.1.0"
extend-shallow@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
dependencies:
assign-symbols "^1.0.0"
is-extendable "^1.0.1"
extend@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
@@ -4555,6 +4822,13 @@ file-loader@^6.2.0:
loader-utils "^2.0.0"
schema-utils "^3.0.0"
file-selector@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-0.4.0.tgz#59ec4f27aa5baf0841e9c6385c8386bef4d18b17"
integrity sha512-iACCiXeMYOvZqlF1kTiYINzgepRBymz1wwjiuup9u9nayhb6g4fSwiyJ/6adli+EPwrWtpgQAh2PoS7HukEGEg==
dependencies:
tslib "^2.0.3"
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
@@ -4653,6 +4927,11 @@ follow-redirects@^1.14.0:
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7"
integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==
for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
foreach@^2.0.5:
version "2.0.5"
resolved "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
@@ -4826,6 +5105,11 @@ get-symbol-description@^1.0.0:
call-bind "^1.0.2"
get-intrinsic "^1.1.1"
get-value@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
getpass@^0.1.1:
version "0.1.7"
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
@@ -5629,6 +5913,18 @@ is-electron@^2.2.0:
resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.1.tgz#751b1dd8a74907422faa5c35aaa0cf66d98086e9"
integrity sha512-r8EEQQsqT+Gn0aXFx7lTFygYQhILLCB+wn0WCDL5LZRINeLH/Rvw1j2oKodELLXYNImQ3CRlVsY8wW4cGOsyuw==
is-extendable@^0.1.0, is-extendable@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
is-extendable@^1.0.0, is-extendable@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
dependencies:
is-plain-object "^2.0.4"
is-extglob@^2.1.0, is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
@@ -5719,6 +6015,13 @@ is-plain-obj@^2.0.0, is-plain-obj@^2.1.0:
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
is-plain-object@^2.0.3, is-plain-object@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
dependencies:
isobject "^3.0.1"
is-regex@^1.1.4:
version "1.1.4"
resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
@@ -5835,6 +6138,11 @@ iso-url@^1.0.0:
resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811"
integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==
isobject@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
@@ -6102,6 +6410,24 @@ language-tags@^1.0.5:
dependencies:
language-subtag-registry "~0.3.2"
leva@^0.9.23:
version "0.9.23"
resolved "https://registry.yarnpkg.com/leva/-/leva-0.9.23.tgz#5703ad3d9827c744848c8559fd121f1811ba9d77"
integrity sha512-J4prV5f6wolrr1AMqxd4Gyf02/e538pH/R1hPShZI8Pmw2bx0BpP2103i7btQGlczUIHefrQwGYIr2NLGXOouQ==
dependencies:
"@radix-ui/react-portal" "^0.1.3"
"@radix-ui/react-tooltip" "0.1.6"
"@stitches/react" "1.2.6"
"@use-gesture/react" "^10.2.5"
"@welldone-software/why-did-you-render" "^6.2.3"
colord "^2.9.2"
dequal "^2.0.2"
merge-value "^1.0.0"
react-colorful "^5.5.1"
react-dropzone "^12.0.0"
v8n "^1.3.3"
zustand "^3.6.9"
levn@^0.3.0, levn@~0.3.0:
version "0.3.0"
resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
@@ -6221,7 +6547,7 @@ lodash.templatesettings@^4.0.0:
dependencies:
lodash._reinterpolate "^3.0.0"
lodash@4.17.21, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.3.0:
lodash@4.17.21, lodash@^4, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.3.0:
version "4.17.21"
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -6311,6 +6637,16 @@ merge-stream@^2.0.0:
resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
merge-value@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/merge-value/-/merge-value-1.0.0.tgz#d28f8d41c0b37426e032d1059a0d0343302de502"
integrity sha512-fJMmvat4NeKz63Uv9iHWcPDjCWcCkoiRoajRTEO8hlhUC6rwaHg0QCF9hBOTjZmm4JuglPckPSTtcuJL5kp0TQ==
dependencies:
get-value "^2.0.6"
is-extendable "^1.0.0"
mixin-deep "^1.2.0"
set-value "^2.0.0"
merge2@^1.3.0, merge2@^1.4.1:
version "1.4.1"
resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
@@ -6440,6 +6776,14 @@ mixed-map@^0.1.0:
resolved "https://registry.yarnpkg.com/mixed-map/-/mixed-map-0.1.2.tgz#c5e9ca532229328172085ff23f0e0fd8555c85e1"
integrity sha512-ZdPeXAL5AZCkNBETgXLm4EOHFpXtPEXrqmd6YBvatyY24x3f/i2nYSVw/F3gk78TxX5/ogm+yAxFrS713ZhsFg==
mixin-deep@^1.2.0:
version "1.3.2"
resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
dependencies:
for-in "^1.0.2"
is-extendable "^1.0.1"
mkdirp@^0.5.1:
version "0.5.5"
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
@@ -7143,6 +7487,11 @@ postcss@^8.4.12:
picocolors "^1.0.0"
source-map-js "^1.0.2"
postprocessing@6.26.3:
version "6.26.3"
resolved "https://registry.yarnpkg.com/postprocessing/-/postprocessing-6.26.3.tgz#456922499e13e02352b3b6b14881ca8186e8a96a"
integrity sha512-f9VMDQSLngrdJByPjza4pNHZWoEnGFdxj6GsgqGd2+RM3PYFTCZapgpX9W/FspRUg6Is38vkUfjvLxWyfBHbhQ==
potpack@^1.0.1:
version "1.0.2"
resolved "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz#23b99e64eb74f5741ffe7656b5b5c4ddce8dfc14"
@@ -7197,7 +7546,7 @@ prop-types@^15.6.0, prop-types@^15.7.2:
object-assign "^4.1.1"
react-is "^16.8.1"
prop-types@^15.6.2:
prop-types@^15.6.2, prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
@@ -7293,6 +7642,11 @@ react-clientside-effect@^1.2.5:
dependencies:
"@babel/runtime" "^7.12.13"
react-colorful@^5.5.1:
version "5.5.1"
resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.5.1.tgz#29d9c4e496f2ca784dd2bb5053a3a4340cfaf784"
integrity sha512-M1TJH2X3RXEt12sWkpa6hLc/bbYS0H6F4rIqjQZ+RxNBstpY67d9TrFXtqdZwhpmBXcCwEi7stKqFue3ZRkiOg==
react-composer@^5.0.2:
version "5.0.2"
resolved "https://registry.npmjs.org/react-composer/-/react-composer-5.0.2.tgz#131cb53326abb07363795ad3abb0dc4a3005ee05"
@@ -7308,6 +7662,15 @@ react-dom@^18.0.0:
loose-envify "^1.1.0"
scheduler "^0.21.0"
react-dropzone@^12.0.0:
version "12.0.5"
resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-12.0.5.tgz#f9b557484a8afd6267f670f96a770ddd3948838b"
integrity sha512-zUjZigD0VJ91CSm9T1h7ErxFReBLaa9sjS2dUL0+inb0RROZpSJTNDHPY1rrBES5V2NXhF8v0kghmaHc81BMFg==
dependencies:
attr-accept "^2.2.2"
file-selector "^0.4.0"
prop-types "^15.8.1"
react-fast-compare@3.2.0, react-fast-compare@^3.1.1:
version "3.2.0"
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
@@ -7866,6 +8229,16 @@ set-blocking@^2.0.0:
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
set-value@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
dependencies:
extend-shallow "^2.0.1"
is-extendable "^0.1.1"
is-plain-object "^2.0.3"
split-string "^3.0.1"
setimmediate@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
@@ -8010,6 +8383,13 @@ sourcemap-codec@^1.4.4:
resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
split-string@^3.0.1:
version "3.1.0"
resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
dependencies:
extend-shallow "^3.0.0"
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
@@ -8353,7 +8733,7 @@ three-mesh-bvh@^0.5.7:
resolved "https://registry.npmjs.org/three-mesh-bvh/-/three-mesh-bvh-0.5.8.tgz#d8882625c0d5b07e86e0c2ad3cff2091e3650af8"
integrity sha512-aw1hGGKP91WC98vDh+M7yGczwnmmtbcCwDjsh7hls076S91GuSfWbCoym3GK64uR0BhySlV5mEitCKQu3o7srg==
three-stdlib@^2.8.12, three-stdlib@^2.9.1:
three-stdlib@^2.8.11, three-stdlib@^2.8.12, three-stdlib@^2.9.1:
version "2.9.1"
resolved "https://registry.npmjs.org/three-stdlib/-/three-stdlib-2.9.1.tgz#300abf6cf12ab388e515fd8572217288dffe4736"
integrity sha512-e+Hyd47ssVTy2UzUfmaccB7m30qITVMdvGs/QypeGdJa3uwhw1zR9jO/ce61S65Omiy/oGDMWG8dJIZxyQ7u8w==
@@ -8702,6 +9082,11 @@ v8-compile-cache@^2.0.3:
resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
v8n@^1.3.3:
version "1.4.0"
resolved "https://registry.yarnpkg.com/v8n/-/v8n-1.4.0.tgz#80c2ae2a6f42a24f658b552fb95e507d8ee5b6e5"
integrity sha512-LzBuh0AYyuTdfsaSG7iabfPQPTggbd/G19fxgcq/QFkdvznB4bYICfbDYBrzqaobASNt0hK/ti4ykwLksvZEbA==
varint@^5.0.0, varint@^5.0.2, varint@~5.0.0:
version "5.0.2"
resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4"
@@ -9121,7 +9506,7 @@ zustand@^3.5.13:
resolved "https://registry.npmjs.org/zustand/-/zustand-3.6.6.tgz#3b7473a15813f7af9784233abd052c3b4560bbcc"
integrity sha512-y4755cIzJHQFEHgTQ5cHrlHdmXMxm5N3DU05Q27yT6rK4lKs2336t5IsAz5q9/GRaoEz6o8SiCOPDhZd5BnneA==
zustand@^3.7.1, zustand@^3.7.2:
zustand@^3.6.9, zustand@^3.7.1, zustand@^3.7.2:
version "3.7.2"
resolved "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz#7b44c4f4a5bfd7a8296a3957b13e1c346f42514d"
integrity sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==