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 = (
)
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