Files
InvokeAI/invokeai/frontend/web/src/features/controlLayers/components/common/CanvasEntityHeader.tsx
psychedelicious 52a19ceac3 feat(ui): ip adapter -> reference image (internal state)
We are renaming "IP Adapter" to "Reference Image".

- Update all internal state
- Update all components
2024-09-16 15:10:17 +03:00

70 lines
2.1 KiB
TypeScript

import type { FlexProps } from '@invoke-ai/ui-library';
import { ContextMenu, Flex, MenuList } from '@invoke-ai/ui-library';
import { ControlLayerMenuItems } from 'features/controlLayers/components/ControlLayer/ControlLayerMenuItems';
import { InpaintMaskMenuItems } from 'features/controlLayers/components/InpaintMask/InpaintMaskMenuItems';
import { IPAdapterMenuItems } from 'features/controlLayers/components/IPAdapter/IPAdapterMenuItems';
import { RasterLayerMenuItems } from 'features/controlLayers/components/RasterLayer/RasterLayerMenuItems';
import { RegionalGuidanceMenuItems } from 'features/controlLayers/components/RegionalGuidance/RegionalGuidanceMenuItems';
import { useEntityIdentifierContext } from 'features/controlLayers/contexts/EntityIdentifierContext';
import { memo, useCallback } from 'react';
import { assert } from 'tsafe';
export const CanvasEntityHeader = memo(({ children, ...rest }: FlexProps) => {
const entityIdentifier = useEntityIdentifierContext();
const renderMenu = useCallback(() => {
if (entityIdentifier.type === 'regional_guidance') {
return (
<MenuList>
<RegionalGuidanceMenuItems />
</MenuList>
);
}
if (entityIdentifier.type === 'inpaint_mask') {
return (
<MenuList>
<InpaintMaskMenuItems />
</MenuList>
);
}
if (entityIdentifier.type === 'raster_layer') {
return (
<MenuList>
<RasterLayerMenuItems />
</MenuList>
);
}
if (entityIdentifier.type === 'control_layer') {
return (
<MenuList>
<ControlLayerMenuItems />
</MenuList>
);
}
if (entityIdentifier.type === 'reference_image') {
return (
<MenuList>
<IPAdapterMenuItems />
</MenuList>
);
}
assert(false, 'Unhandled entity type');
}, [entityIdentifier]);
return (
<ContextMenu renderMenu={renderMenu}>
{(ref) => (
<Flex ref={ref} gap={2} alignItems="center" p={2} {...rest}>
{children}
</Flex>
)}
</ContextMenu>
);
});
CanvasEntityHeader.displayName = 'CanvasEntityHeader';