import { Suspense, lazy } from 'react' import { Mosaic, MosaicWindow } from 'react-mosaic-component' import { useIdeContext } from 'src/helpers/hooks/useIdeContext' import IdeConsole from 'src/components/IdeConsole' import 'react-mosaic-component/react-mosaic-component.css' import EditorMenu from 'src/components/EditorMenu/EditorMenu' import PanelToolbar from 'src/components/PanelToolbar/PanelToolbar' import { use3dViewerResize } from 'src/helpers/hooks/use3dViewerResize' const IdeEditor = lazy(() => import('src/components/IdeEditor/IdeEditor')) import IdeViewer from 'src/components/IdeViewer/IdeViewer' const SmallLoadingPing = (
. . . loading
) export const BigLoadingPing = (
) const ELEMENT_MAP = { Editor: ( ), Viewer: , Console: , } const TOOLBAR_MAP = { Editor: () => (
), Viewer: (thunkDispatch) => (
thunkDispatch((dispatch) => dispatch({ type: 'settingsButtonClicked', payload: ['Settings', 'viewer'], }) ) } />
), Console: (thunkDispatch) => (
thunkDispatch((dispatch) => dispatch({ type: 'settingsButtonClicked', payload: ['Settings', 'console'], }) ) } />
), } const IdeContainer = () => { const { viewerDomRef, handleViewerSizeUpdate } = use3dViewerResize() const { state, thunkDispatch } = useIdeContext() return (
{ return ( TOOLBAR_MAP[id](thunkDispatch)} className={`${id.toLowerCase()} ${id.toLowerCase()}-tile`} > {id === 'Viewer' ? (
{ELEMENT_MAP[id]}
) : ( ELEMENT_MAP[id] )}
) }} value={state.layout} onChange={(newLayout) => thunkDispatch({ type: 'setLayout', payload: { message: newLayout } }) } onRelease={handleViewerSizeUpdate} />
) } export default IdeContainer