From 735fc276e5c2e28542dba4a24c70f28d7c9c7b37 Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Tue, 1 Jul 2025 14:01:01 +1000 Subject: [PATCH] tidy(ui): clean up focus/layout container --- .../AdvancedSession/AdvancedSession.tsx | 182 ------------------ .../ui/layouts/AutoLayoutPanelContainer.tsx} | 39 +--- 2 files changed, 5 insertions(+), 216 deletions(-) delete mode 100644 invokeai/frontend/web/src/features/controlLayers/components/AdvancedSession/AdvancedSession.tsx rename invokeai/frontend/web/src/{common/components/FocusRegionWrapper.tsx => features/ui/layouts/AutoLayoutPanelContainer.tsx} (51%) diff --git a/invokeai/frontend/web/src/features/controlLayers/components/AdvancedSession/AdvancedSession.tsx b/invokeai/frontend/web/src/features/controlLayers/components/AdvancedSession/AdvancedSession.tsx deleted file mode 100644 index bed3ef2bb6..0000000000 --- a/invokeai/frontend/web/src/features/controlLayers/components/AdvancedSession/AdvancedSession.tsx +++ /dev/null @@ -1,182 +0,0 @@ -import type { SystemStyleObject } from '@invoke-ai/ui-library'; -import { - ContextMenu, - Divider, - Flex, - IconButton, - Menu, - MenuButton, - MenuList, - Tab, - TabList, - TabPanel, - TabPanels, - Tabs, -} from '@invoke-ai/ui-library'; -import { useAppSelector } from 'app/store/storeHooks'; -import { FocusRegionWrapper } from 'common/components/FocusRegionWrapper'; -import { CanvasAlertsInvocationProgress } from 'features/controlLayers/components/CanvasAlerts/CanvasAlertsInvocationProgress'; -import { CanvasAlertsPreserveMask } from 'features/controlLayers/components/CanvasAlerts/CanvasAlertsPreserveMask'; -import { CanvasAlertsSelectedEntityStatus } from 'features/controlLayers/components/CanvasAlerts/CanvasAlertsSelectedEntityStatus'; -import { CanvasContextMenuGlobalMenuItems } from 'features/controlLayers/components/CanvasContextMenu/CanvasContextMenuGlobalMenuItems'; -import { CanvasContextMenuSelectedEntityMenuItems } from 'features/controlLayers/components/CanvasContextMenu/CanvasContextMenuSelectedEntityMenuItems'; -import { CanvasDropArea } from 'features/controlLayers/components/CanvasDropArea'; -import { Filter } from 'features/controlLayers/components/Filters/Filter'; -import { CanvasHUD } from 'features/controlLayers/components/HUD/CanvasHUD'; -import { InvokeCanvasComponent } from 'features/controlLayers/components/InvokeCanvasComponent'; -import { SelectObject } from 'features/controlLayers/components/SelectObject/SelectObject'; -import { CanvasSessionContextProvider } from 'features/controlLayers/components/SimpleSession/context'; -import { GenerateLaunchpadPanel } from 'features/controlLayers/components/SimpleSession/GenerateLaunchpadPanel'; -import { StagingAreaItemsList } from 'features/controlLayers/components/SimpleSession/StagingAreaItemsList'; -import { StagingAreaToolbar } from 'features/controlLayers/components/StagingArea/StagingAreaToolbar'; -import { CanvasToolbar } from 'features/controlLayers/components/Toolbar/CanvasToolbar'; -import { Transform } from 'features/controlLayers/components/Transform/Transform'; -import { CanvasManagerProviderGate } from 'features/controlLayers/contexts/CanvasManagerProviderGate'; -import { selectDynamicGrid, selectShowHUD } from 'features/controlLayers/store/canvasSettingsSlice'; -import { ImageViewer } from 'features/gallery/components/ImageViewer/ImageViewer'; -import { ViewerToolbar } from 'features/gallery/components/ImageViewer/ViewerToolbar'; -import { memo, useCallback } from 'react'; -import { PiDotsThreeOutlineVerticalFill } from 'react-icons/pi'; - -const FOCUS_REGION_STYLES: SystemStyleObject = { - width: 'full', - height: 'full', -}; - -const MenuContent = memo(() => { - return ( - - - - - - - ); -}); -MenuContent.displayName = 'MenuContent'; - -const canvasBgSx = { - position: 'relative', - w: 'full', - h: 'full', - borderRadius: 'base', - overflow: 'hidden', - bg: 'base.900', - '&[data-dynamic-grid="true"]': { - bg: 'base.850', - }, -}; - -export const AdvancedSession = memo(({ id }: { id: string | null }) => { - const dynamicGrid = useAppSelector(selectDynamicGrid); - const showHUD = useAppSelector(selectShowHUD); - - const renderMenu = useCallback(() => { - return ; - }, []); - - return ( - - - Welcome - Workspace - Viewer - - - - - - - - - - - - - renderMenu={renderMenu} withLongPress={false}> - {(ref) => ( - - - - - {showHUD && } - - - - - - - } colorScheme="base" /> - - - - - - )} - - {id !== null && ( - - - - - - - - - - - - - )} - - - - - - - - - - - - - - - - - - - - - - ); -}); -AdvancedSession.displayName = 'AdvancedSession'; diff --git a/invokeai/frontend/web/src/common/components/FocusRegionWrapper.tsx b/invokeai/frontend/web/src/features/ui/layouts/AutoLayoutPanelContainer.tsx similarity index 51% rename from invokeai/frontend/web/src/common/components/FocusRegionWrapper.tsx rename to invokeai/frontend/web/src/features/ui/layouts/AutoLayoutPanelContainer.tsx index 1d0cd0fee9..3a3da6b80c 100644 --- a/invokeai/frontend/web/src/common/components/FocusRegionWrapper.tsx +++ b/invokeai/frontend/web/src/features/ui/layouts/AutoLayoutPanelContainer.tsx @@ -1,18 +1,13 @@ -import { Box, type BoxProps, type SystemStyleObject } from '@invoke-ai/ui-library'; +import { Box, type SystemStyleObject } from '@invoke-ai/ui-library'; import { useAppSelector } from 'app/store/storeHooks'; -import { type FocusRegionName, useFocusRegion, useIsRegionFocused } from 'common/hooks/focus'; +import { useFocusRegion, useIsRegionFocused } from 'common/hooks/focus'; import type { IDockviewPanelProps, IGridviewPanelProps } from 'dockview'; import { selectSystemShouldEnableHighlightFocusedRegions } from 'features/system/store/systemSlice'; import type { PanelParameters } from 'features/ui/layouts/auto-layout-context'; import type { PropsWithChildren } from 'react'; -import { memo, useMemo, useRef } from 'react'; +import { memo, useRef } from 'react'; -interface FocusRegionWrapperProps extends BoxProps { - region: FocusRegionName; - focusOnMount?: boolean; -} - -export const BASE_FOCUS_REGION_STYLES: SystemStyleObject = { +const sx: SystemStyleObject = { position: 'relative', w: 'full', h: 'full', @@ -32,30 +27,6 @@ export const BASE_FOCUS_REGION_STYLES: SystemStyleObject = { }, }; -export const FocusRegionWrapper = memo((props: FocusRegionWrapperProps) => { - const { region, focusOnMount = false, sx: _sx, children, ...boxProps } = props; - - const ref = useRef(null); - - const sx = useMemo(() => ({ ...BASE_FOCUS_REGION_STYLES, ..._sx }), [_sx]); - - const shouldHighlightFocusedRegions = useAppSelector(selectSystemShouldEnableHighlightFocusedRegions); - - const options = useMemo(() => ({ focusOnMount }), [focusOnMount]); - - useFocusRegion(region, ref, options); - const isFocused = useIsRegionFocused(region); - const isHighlighted = isFocused && shouldHighlightFocusedRegions; - - return ( - - {children} - - ); -}); - -FocusRegionWrapper.displayName = 'FocusRegionWrapper'; - export const AutoLayoutPanelContainer = memo( ( props: @@ -71,7 +42,7 @@ export const AutoLayoutPanelContainer = memo( const isHighlighted = isFocused && shouldHighlightFocusedRegions; return ( - + {props.children} );