UNPKG

threed-ai

Version:

'threed-ai' supporting Vite, Next, Nuxt, as a functioning, low-dependency app, a package supporting monorepos of workspaces that utilize 'ThreeJS, WebGL, React, TypeScript <r3Fiber>, GraphQL'.

44 lines (38 loc) 1.06 kB
import { Canvas } from '@react-three/fiber' import { OrbitControls, Preload } from '@react-three/drei' import useStore from '~/stores/store' import { useEffect, useRef } from 'react' const LControl = () => { const dom = useStore((state) => state.dom) const control = useRef(null) useEffect(() => { if (control.current) { const domElement = dom.current const originalTouchAction = domElement.style['touch-action'] domElement.style['touch-action'] = 'none' return () => { domElement.style['touch-action'] = originalTouchAction } } }, [dom, control]) // @ts-ignore return <OrbitControls ref={control} domElement={dom.current} /> } const LCanvas = ({ children }) => { const dom = useStore((state) => state.dom) return ( <Canvas mode='concurrent' style={{ position: 'absolute', top: 0, }} onCreated={(state) => state.events.connect(dom.current)} > <LControl /> <Preload all /> {children} </Canvas> ) } export default LCanvas