Spaces:
Running
Running
| 'use client'; | |
| import { PresetsType } from '@react-three/drei/helpers/environment-assets'; | |
| import { RefObject, createContext, useContext, useState } from 'react'; | |
| import { RubiksCubeRef } from '@/components/rubiks-cube'; | |
| type ControlContextType = { | |
| showRotationIndicators: boolean; | |
| setShowRotationIndicators: (showRotationIndicators: boolean) => void; | |
| cubeRoughness: number; | |
| setCubeRoughness: (cubeRoughness: number) => void; | |
| cubeSpeed: number; | |
| setCubeSpeed: (cubeSpeed: number) => void; | |
| scrambleLength: number; | |
| setScrambleLength: (scrambleLength: number) => void; | |
| background: PresetsType; | |
| setBackground: (background: PresetsType) => void; | |
| rubiksCubeRef?: RefObject<RubiksCubeRef | null>; | |
| setRubiksCubeRef: (rubiksCubeRef: RefObject<RubiksCubeRef | null>) => void; | |
| }; | |
| export const ControlContext = createContext<ControlContextType>({ | |
| showRotationIndicators: false, | |
| setShowRotationIndicators: () => {}, | |
| cubeRoughness: 0.5, | |
| setCubeRoughness: () => {}, | |
| cubeSpeed: 8, | |
| setCubeSpeed: () => {}, | |
| scrambleLength: 6, | |
| setScrambleLength: () => {}, | |
| background: 'sunset', | |
| setBackground: () => {}, | |
| rubiksCubeRef: undefined, | |
| setRubiksCubeRef: () => {}, | |
| }); | |
| export const useControlContext = () => { | |
| return useContext(ControlContext); | |
| }; | |
| export const ControlProvider = ({ children }: { children: React.ReactNode }) => { | |
| const [showRotationIndicators, setShowRotationIndicators] = useState(false); | |
| const [cubeRoughness, setCubeRoughness] = useState(0.5); | |
| const [cubeSpeed, setCubeSpeed] = useState(8); | |
| const [scrambleLength, setScrambleLength] = useState(6); | |
| const [background, setBackground] = useState<PresetsType>('sunset'); | |
| const [rubiksCubeRef, setRubiksCubeRef] = useState<RefObject<RubiksCubeRef | null> | undefined>(undefined); | |
| return ( | |
| <ControlContext.Provider | |
| value={{ | |
| showRotationIndicators, | |
| setShowRotationIndicators, | |
| cubeRoughness, | |
| setCubeRoughness, | |
| cubeSpeed, | |
| setCubeSpeed, | |
| scrambleLength, | |
| setScrambleLength, | |
| background, | |
| setBackground, | |
| rubiksCubeRef, | |
| setRubiksCubeRef, | |
| }} | |
| > | |
| {children} | |
| </ControlContext.Provider> | |
| ); | |
| }; | |