import type { SystemStyleObject } from '@invoke-ai/ui-library'; import { Flex, IconButton, Text } from '@invoke-ai/ui-library'; import { createSelector } from '@reduxjs/toolkit'; import { useAppDispatch, useAppSelector } from 'app/store/storeHooks'; import { useRefImageEntity } from 'features/controlLayers/components/RefImage/useRefImageEntity'; import { useRefImageIdContext } from 'features/controlLayers/contexts/RefImageIdContext'; import { refImageDeleted, refImageIsEnabledToggled, selectRefImageEntityIds, } from 'features/controlLayers/store/refImagesSlice'; import { memo, useCallback, useMemo } from 'react'; import { PiCircleBold, PiCircleFill, PiTrashBold } from 'react-icons/pi'; const textSx: SystemStyleObject = { color: 'base.300', '&[data-is-error="true"]': { color: 'error.300', }, }; export const RefImageHeader = memo(() => { const dispatch = useAppDispatch(); const id = useRefImageIdContext(); const selectRefImageNumber = useMemo( () => createSelector(selectRefImageEntityIds, (ids) => ids.indexOf(id) + 1), [id] ); const refImageNumber = useAppSelector(selectRefImageNumber); const entity = useRefImageEntity(id); const deleteRefImage = useCallback(() => { dispatch(refImageDeleted({ id })); }, [dispatch, id]); const toggleIsEnabled = useCallback(() => { dispatch(refImageIsEnabledToggled({ id })); }, [dispatch, id]); return ( Reference Image #{refImageNumber} {!entity.isEnabled && ( Disabled )} : } /> } colorScheme="error" /> ); }); RefImageHeader.displayName = 'RefImageHeader';