import type { ChakraProps } from '@invoke-ai/ui-library';
import { Flex, FormControl, FormLabel, ListItem, OrderedList, Spinner, Text } from '@invoke-ai/ui-library';
import { useAppSelector } from 'app/store/storeHooks';
import { IAINoContentFallback } from 'common/components/IAIImageFallback';
import { InformationalPopover } from 'common/components/InformationalPopover/InformationalPopover';
import ScrollableContent from 'common/components/OverlayScrollbars/ScrollableContent';
import {
selectDynamicPromptsIsError,
selectDynamicPromptsIsLoading,
selectDynamicPromptsParsingError,
selectDynamicPromptsPrompts,
} from 'features/dynamicPrompts/store/dynamicPromptsSlice';
import { memo, useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import { PiWarningCircleBold } from 'react-icons/pi';
const listItemStyles: ChakraProps['sx'] = {
'&::marker': { color: 'base.500' },
};
const ParamDynamicPromptsPreview = () => {
const { t } = useTranslation();
const parsingError = useAppSelector(selectDynamicPromptsParsingError);
const isError = useAppSelector(selectDynamicPromptsIsError);
const isLoading = useAppSelector(selectDynamicPromptsIsLoading);
const prompts = useAppSelector(selectDynamicPromptsPrompts);
const label = useMemo(() => {
let _label = `${t('dynamicPrompts.promptsPreview')} (${prompts.length})`;
if (parsingError) {
_label += ` - ${parsingError}`;
}
return _label;
}, [parsingError, prompts.length, t]);
if (isError) {
return (
);
}
return (
{label}
{prompts.map((prompt, i) => (
{prompt}
))}
{isLoading && (
)}
);
};
export default memo(ParamDynamicPromptsPreview);