import { ChevronUpIcon } from '@chakra-ui/icons'; import { Box, Flex } from '@chakra-ui/react'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { InvControl } from 'common/components/InvControl/InvControl'; import { InvIconButton } from 'common/components/InvIconButton/InvIconButton'; import { InvSwitch } from 'common/components/InvSwitch/wrapper'; import { useControlAdapterIsEnabled } from 'features/controlAdapters/hooks/useControlAdapterIsEnabled'; import { useControlAdapterType } from 'features/controlAdapters/hooks/useControlAdapterType'; import { controlAdapterDuplicated, controlAdapterIsEnabledChanged, controlAdapterRemoved, } from 'features/controlAdapters/store/controlAdaptersSlice'; import { activeTabNameSelector } from 'features/ui/store/uiSelectors'; import type { ChangeEvent } from 'react'; import { memo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { FaCopy, FaTrash } from 'react-icons/fa'; import { useToggle } from 'react-use'; import ControlAdapterImagePreview from './ControlAdapterImagePreview'; import ControlAdapterProcessorComponent from './ControlAdapterProcessorComponent'; import ControlAdapterShouldAutoConfig from './ControlAdapterShouldAutoConfig'; import ControlNetCanvasImageImports from './imports/ControlNetCanvasImageImports'; import { ParamControlAdapterBeginEnd } from './parameters/ParamControlAdapterBeginEnd'; import ParamControlAdapterControlMode from './parameters/ParamControlAdapterControlMode'; import ParamControlAdapterModel from './parameters/ParamControlAdapterModel'; import ParamControlAdapterProcessorSelect from './parameters/ParamControlAdapterProcessorSelect'; import ParamControlAdapterResizeMode from './parameters/ParamControlAdapterResizeMode'; import ParamControlAdapterWeight from './parameters/ParamControlAdapterWeight'; const ControlAdapterConfig = (props: { id: string; number: number }) => { const { id, number } = props; const controlAdapterType = useControlAdapterType(id); const dispatch = useAppDispatch(); const { t } = useTranslation(); const activeTabName = useAppSelector(activeTabNameSelector); const isEnabled = useControlAdapterIsEnabled(id); const [isExpanded, toggleIsExpanded] = useToggle(false); const handleDelete = useCallback(() => { dispatch(controlAdapterRemoved({ id })); }, [id, dispatch]); const handleDuplicate = useCallback(() => { dispatch(controlAdapterDuplicated(id)); }, [id, dispatch]); const handleToggleIsEnabled = useCallback( (e: ChangeEvent) => { dispatch( controlAdapterIsEnabledChanged({ id, isEnabled: e.target.checked, }) ); }, [id, dispatch] ); if (!controlAdapterType) { return null; } return ( {activeTabName === 'unifiedCanvas' && ( )} } /> } /> } /> {!isExpanded && ( )} {isExpanded && ( <> )} ); }; export default memo(ControlAdapterConfig);