mirror of
https://github.com/invoke-ai/InvokeAI.git
synced 2026-04-23 03:00:31 -04:00
feat(ui): add filter button next to control adapter model
This commit is contained in:
committed by
Kent Keirsey
parent
9f06a9b03c
commit
cfb538bdc2
@@ -1,4 +1,4 @@
|
|||||||
import { Flex } from '@invoke-ai/ui-library';
|
import { Flex, IconButton } from '@invoke-ai/ui-library';
|
||||||
import { createMemoizedAppSelector } from 'app/store/createMemoizedSelector';
|
import { createMemoizedAppSelector } from 'app/store/createMemoizedSelector';
|
||||||
import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
|
import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
|
||||||
import { BeginEndStepPct } from 'features/controlLayers/components/common/BeginEndStepPct';
|
import { BeginEndStepPct } from 'features/controlLayers/components/common/BeginEndStepPct';
|
||||||
@@ -6,6 +6,7 @@ import { Weight } from 'features/controlLayers/components/common/Weight';
|
|||||||
import { ControlLayerControlAdapterControlMode } from 'features/controlLayers/components/ControlLayer/ControlLayerControlAdapterControlMode';
|
import { ControlLayerControlAdapterControlMode } from 'features/controlLayers/components/ControlLayer/ControlLayerControlAdapterControlMode';
|
||||||
import { ControlLayerControlAdapterModel } from 'features/controlLayers/components/ControlLayer/ControlLayerControlAdapterModel';
|
import { ControlLayerControlAdapterModel } from 'features/controlLayers/components/ControlLayer/ControlLayerControlAdapterModel';
|
||||||
import { useEntityIdentifierContext } from 'features/controlLayers/contexts/EntityIdentifierContext';
|
import { useEntityIdentifierContext } from 'features/controlLayers/contexts/EntityIdentifierContext';
|
||||||
|
import { useEntityFilter } from 'features/controlLayers/hooks/useEntityFilter';
|
||||||
import {
|
import {
|
||||||
controlLayerBeginEndStepPctChanged,
|
controlLayerBeginEndStepPctChanged,
|
||||||
controlLayerControlModeChanged,
|
controlLayerControlModeChanged,
|
||||||
@@ -15,6 +16,8 @@ import {
|
|||||||
import { selectCanvasSlice, selectEntityOrThrow } from 'features/controlLayers/store/selectors';
|
import { selectCanvasSlice, selectEntityOrThrow } from 'features/controlLayers/store/selectors';
|
||||||
import type { CanvasEntityIdentifier, ControlModeV2 } from 'features/controlLayers/store/types';
|
import type { CanvasEntityIdentifier, ControlModeV2 } from 'features/controlLayers/store/types';
|
||||||
import { memo, useCallback, useMemo } from 'react';
|
import { memo, useCallback, useMemo } from 'react';
|
||||||
|
import { useTranslation } from 'react-i18next';
|
||||||
|
import { PiShootingStarBold } from 'react-icons/pi';
|
||||||
import type { ControlNetModelConfig, T2IAdapterModelConfig } from 'services/api/types';
|
import type { ControlNetModelConfig, T2IAdapterModelConfig } from 'services/api/types';
|
||||||
|
|
||||||
const useControlLayerControlAdapter = (entityIdentifier: CanvasEntityIdentifier<'control_layer'>) => {
|
const useControlLayerControlAdapter = (entityIdentifier: CanvasEntityIdentifier<'control_layer'>) => {
|
||||||
@@ -31,9 +34,11 @@ const useControlLayerControlAdapter = (entityIdentifier: CanvasEntityIdentifier<
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const ControlLayerControlAdapter = memo(() => {
|
export const ControlLayerControlAdapter = memo(() => {
|
||||||
|
const { t } = useTranslation();
|
||||||
const dispatch = useAppDispatch();
|
const dispatch = useAppDispatch();
|
||||||
const entityIdentifier = useEntityIdentifierContext('control_layer');
|
const entityIdentifier = useEntityIdentifierContext('control_layer');
|
||||||
const controlAdapter = useControlLayerControlAdapter(entityIdentifier);
|
const controlAdapter = useControlLayerControlAdapter(entityIdentifier);
|
||||||
|
const filter = useEntityFilter(entityIdentifier);
|
||||||
|
|
||||||
const onChangeBeginEndStepPct = useCallback(
|
const onChangeBeginEndStepPct = useCallback(
|
||||||
(beginEndStepPct: [number, number]) => {
|
(beginEndStepPct: [number, number]) => {
|
||||||
@@ -65,7 +70,17 @@ export const ControlLayerControlAdapter = memo(() => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Flex flexDir="column" gap={3} position="relative" w="full">
|
<Flex flexDir="column" gap={3} position="relative" w="full">
|
||||||
<ControlLayerControlAdapterModel modelKey={controlAdapter.model?.key ?? null} onChange={onChangeModel} />
|
<Flex w="full" gap={2}>
|
||||||
|
<ControlLayerControlAdapterModel modelKey={controlAdapter.model?.key ?? null} onChange={onChangeModel} />
|
||||||
|
<IconButton
|
||||||
|
onClick={filter.start}
|
||||||
|
isDisabled={filter.isDisabled}
|
||||||
|
variant="ghost"
|
||||||
|
aria-label={t('controlLayers.filter.filter')}
|
||||||
|
tooltip={t('controlLayers.filter.filter')}
|
||||||
|
icon={<PiShootingStarBold />}
|
||||||
|
/>
|
||||||
|
</Flex>
|
||||||
<Weight weight={controlAdapter.weight} onChange={onChangeWeight} />
|
<Weight weight={controlAdapter.weight} onChange={onChangeWeight} />
|
||||||
<BeginEndStepPct beginEndStepPct={controlAdapter.beginEndStepPct} onChange={onChangeBeginEndStepPct} />
|
<BeginEndStepPct beginEndStepPct={controlAdapter.beginEndStepPct} onChange={onChangeBeginEndStepPct} />
|
||||||
{controlAdapter.type === 'controlnet' && (
|
{controlAdapter.type === 'controlnet' && (
|
||||||
|
|||||||
Reference in New Issue
Block a user