import {useMemo, useState} from 'react'; import classNames from 'classnames'; import Preloader from './components/Preloader'; import {DEFAULT_VIEWER_OPTIONS} from './constants'; import {useClasses, useClientSize} from './hooks'; import {ViewerProps} from './types'; import UniversalScene from './UniversalScene'; import ViewerContext from './ViewerContext'; import './Viewer.scss'; const Viewer = (props: ViewerProps) => { const { animationRunner, className = '', dispatchers, object3D, onSceneReady, options, } = props; const {clientSize, mountingPoint, threeRoot} = useClientSize(); const [isLoading, setIsLoading] = useState(false); const classes = useClasses(className); const content = useMemo(() => { const isMounted = clientSize.clientWidth > 1; return isMounted? : }, [clientSize]); const threeRootClassnames = classNames({ 'three-root': true, 'loading': isLoading, }); return (
{content}
); }; export default Viewer;