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 && }
);
};