-
Notifications
You must be signed in to change notification settings - Fork 2.5k
/
Copy pathCanvasLayersPanelContent.tsx
38 lines (35 loc) · 1.46 KB
/
CanvasLayersPanelContent.tsx
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
import { Divider, Flex } from '@invoke-ai/ui-library';
import { useAppSelector } from 'app/store/storeHooks';
import { useFocusRegion, useIsRegionFocused } from 'common/hooks/focus';
import { CanvasAddEntityButtons } from 'features/controlLayers/components/CanvasAddEntityButtons';
import { CanvasEntityList } from 'features/controlLayers/components/CanvasEntityList/CanvasEntityList';
import { EntityListSelectedEntityActionBar } from 'features/controlLayers/components/CanvasEntityList/EntityListSelectedEntityActionBar';
import { selectHasEntities } from 'features/controlLayers/store/selectors';
import { memo, useRef } from 'react';
export const CanvasLayersPanelContent = memo(() => {
const hasEntities = useAppSelector(selectHasEntities);
const layersPanelFocusRef = useRef<HTMLDivElement>(null);
useFocusRegion('layers', layersPanelFocusRef);
const isRegionFocused = useIsRegionFocused('layers');
return (
<Flex
ref={layersPanelFocusRef}
flexDir="column"
gap={2}
w="full"
h="full"
borderWidth={1}
borderColor={isRegionFocused ? 'blue.300' : 'transparent'}
borderRadius="base"
p={2}
marginTop={-1}
transition="border-color 0.1s"
>
<EntityListSelectedEntityActionBar />
<Divider py={0} borderColor="base.600" />
{!hasEntities && <CanvasAddEntityButtons />}
{hasEntities && <CanvasEntityList />}
</Flex>
);
});
CanvasLayersPanelContent.displayName = 'CanvasLayersPanelContent';