refactor: moves ui elements into own component

This commit is contained in:
Mark Mankarious
2023-08-28 18:19:20 +01:00
parent cfa87da01a
commit ca91184b6a
2 changed files with 35 additions and 21 deletions

View File

@@ -3,7 +3,6 @@ import { shallow } from 'zustand/shallow';
import { ThemeProvider } from '@mui/material/styles';
import { Box } from '@mui/material';
import { theme } from 'src/styles/theme';
import { ToolMenu } from 'src/components/ToolMenu/ToolMenu';
import {
SceneInput,
IconInput,
@@ -22,10 +21,8 @@ import { LabelContainer } from 'src/components/Nodes/Node/LabelContainer';
import { useWindowUtils } from 'src/hooks/useWindowUtils';
import { sceneInput as sceneValidationSchema } from 'src/validation/scene';
import { EMPTY_SCENE } from 'src/config';
import { ItemControlsManager } from './components/ItemControls/ItemControlsManager';
import { UiStateProvider, useUiStateStore } from './stores/uiStateStore';
import { SceneLayer } from './components/SceneLayer/SceneLayer';
import { DragAndDrop } from './components/DragAndDrop/DragAndDrop';
import { UiOverlay } from 'src/components/UiOverlay/UiOverlay';
import { UiStateProvider, useUiStateStore } from 'src/stores/uiStateStore';
interface Props {
initialData?: InitialData;
@@ -56,15 +53,6 @@ const App = ({
const uiActions = useUiStateStore((state) => {
return state.actions;
});
const disableInteractions = useUiStateStore((state) => {
return state.disableInteractions;
});
const mode = useUiStateStore((state) => {
return state.mode;
});
const mouse = useUiStateStore((state) => {
return state.mouse;
});
useEffect(() => {
uiActions.setZoom(initialData?.zoom ?? 1);
@@ -102,13 +90,7 @@ const App = ({
}}
>
<Renderer />
<ItemControlsManager />
{!disableInteractions && <ToolMenu />}
{mode.type === 'PLACE_ELEMENT' && mode.icon && (
<SceneLayer>
<DragAndDrop icon={mode.icon} tile={mouse.position.tile} />
</SceneLayer>
)}
<UiOverlay />
</Box>
</>
);

View File

@@ -0,0 +1,32 @@
import React from 'react';
import { SceneLayer } from 'src/components/SceneLayer/SceneLayer';
import { DragAndDrop } from 'src/components/DragAndDrop/DragAndDrop';
import { ItemControlsManager } from 'src/components/ItemControls/ItemControlsManager';
import { ToolMenu } from 'src/components/ToolMenu/ToolMenu';
import { useUiStateStore } from 'src/stores/uiStateStore';
export const UiOverlay = () => {
const disableInteractions = useUiStateStore((state) => {
return state.disableInteractions;
});
const mode = useUiStateStore((state) => {
return state.mode;
});
const mouse = useUiStateStore((state) => {
return state.mouse;
});
if (disableInteractions) return null;
return (
<>
<ItemControlsManager />
<ToolMenu />
{mode.type === 'PLACE_ELEMENT' && mode.icon && (
<SceneLayer>
<DragAndDrop icon={mode.icon} tile={mouse.position.tile} />
</SceneLayer>
)}
</>
);
};