import { Flex, FormControl, FormLabel, Tag, TagCloseButton, Text } from '@invoke-ai/ui-library'; import type { LogNamespace } from 'app/logging/logger'; import { zLogNamespace } from 'app/logging/logger'; import { useAppSelector } from 'app/store/storeHooks'; import { logNamespaceToggled, selectSystemLogNamespaces } from 'features/system/store/systemSlice'; import { difference } from 'lodash-es'; import { memo, useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { useDispatch } from 'react-redux'; export const SettingsDeveloperLogNamespaces = memo(() => { const { t } = useTranslation(); const enabledLogNamespaces = useAppSelector(selectSystemLogNamespaces); const disabledLogNamespaces = useMemo( () => difference(zLogNamespace.options, enabledLogNamespaces), [enabledLogNamespaces] ); return ( {t('system.logNamespaces.logNamespaces')} {enabledLogNamespaces.map((namespace) => ( ))} {disabledLogNamespaces.map((namespace) => ( ))} ); }); SettingsDeveloperLogNamespaces.displayName = 'SettingsDeveloperLogNamespaces'; const LogLevelTag = ({ namespace, isEnabled }: { namespace: LogNamespace; isEnabled: boolean }) => { const { t } = useTranslation(); const dispatch = useDispatch(); const onClick = useCallback(() => { dispatch(logNamespaceToggled(namespace)); }, [dispatch, namespace]); return ( {t(`system.logNamespaces.${namespace}`)} {isEnabled && } ); };