File size: 1,170 Bytes
8a37e0a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { FormControl, FormLabel, Switch } from '@invoke-ai/ui-library';
import { useStore } from '@nanostores/react';
import type { CanvasEntityAdapterControlLayer } from 'features/controlLayers/konva/CanvasEntity/CanvasEntityAdapterControlLayer';
import type { CanvasEntityAdapterRasterLayer } from 'features/controlLayers/konva/CanvasEntity/CanvasEntityAdapterRasterLayer';
import { memo, useCallback } from 'react';
import { useTranslation } from 'react-i18next';

export const SelectObjectInvert = memo(
  ({ adapter }: { adapter: CanvasEntityAdapterRasterLayer | CanvasEntityAdapterControlLayer }) => {
    const { t } = useTranslation();
    const invert = useStore(adapter.segmentAnything.$invert);

    const onChange = useCallback(() => {
      adapter.segmentAnything.$invert.set(!adapter.segmentAnything.$invert.get());
    }, [adapter.segmentAnything.$invert]);

    return (
      <FormControl w="min-content">
        <FormLabel m={0}>{t('controlLayers.selectObject.invertSelection')}</FormLabel>
        <Switch size="sm" isChecked={invert} onChange={onChange} />
      </FormControl>
    );
  }
);

SelectObjectInvert.displayName = 'SelectObjectInvert';