Spaces:
Sleeping
Sleeping
File size: 1,422 Bytes
43024e4 4e485bb 43024e4 4e485bb 43024e4 4e485bb 43024e4 4e485bb 43024e4 4e485bb 43024e4 4e485bb 43024e4 4e485bb 43024e4 4e485bb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | import React, { useEffect } from 'react';
import './App.css';
import Toolbar from './components/Toolbar';
import LeftPanel from './components/LeftPanel';
import Viewport from './components/Viewport';
import RightPanel from './components/RightPanel';
import AIPanel from './components/AIPanel';
import Timeline from './components/Timeline';
import { useStudioStore } from './store/useStudioStore';
function App() {
const { addError, mode } = useStudioStore();
useEffect(() => {
const handler = (event: ErrorEvent) => {
if (
event.message.includes('THREE') ||
event.message.includes('WebGL') ||
event.message.includes('fiber') ||
event.message.includes('drei') ||
event.message.includes('Cannot read') ||
event.message.includes('undefined')
) {
addError(event.message +
(event.filename ? ` (${event.filename}:${event.lineno})` : ''));
}
};
window.addEventListener('error', handler);
return () => window.removeEventListener('error', handler);
}, [addError]);
return (
<div className="studio-root">
<Toolbar />
<div className="studio-body">
<LeftPanel />
<div className="studio-center">
<Viewport />
{mode === 'animate' && <Timeline />}
<AIPanel />
</div>
<RightPanel />
</div>
</div>
);
}
export default App; |