NEWONE1 / invokeai /frontend /web /src /features /gallery /components /ImageContextMenu /ImageMenuItemLoadWorkflow.tsx
| import { MenuItem } from '@invoke-ai/ui-library'; | |
| import { useStore } from '@nanostores/react'; | |
| import { SpinnerIcon } from 'features/gallery/components/ImageContextMenu/SpinnerIcon'; | |
| import { useImageDTOContext } from 'features/gallery/contexts/ImageDTOContext'; | |
| import { $hasTemplates } from 'features/nodes/store/nodesSlice'; | |
| import { useGetAndLoadEmbeddedWorkflow } from 'features/workflowLibrary/hooks/useGetAndLoadEmbeddedWorkflow'; | |
| import { memo, useCallback } from 'react'; | |
| import { useTranslation } from 'react-i18next'; | |
| import { PiFlowArrowBold } from 'react-icons/pi'; | |
| export const ImageMenuItemLoadWorkflow = memo(() => { | |
| const { t } = useTranslation(); | |
| const imageDTO = useImageDTOContext(); | |
| const [getAndLoadEmbeddedWorkflow, { isLoading }] = useGetAndLoadEmbeddedWorkflow(); | |
| const hasTemplates = useStore($hasTemplates); | |
| const onClick = useCallback(() => { | |
| getAndLoadEmbeddedWorkflow(imageDTO.image_name); | |
| }, [getAndLoadEmbeddedWorkflow, imageDTO.image_name]); | |
| return ( | |
| <MenuItem | |
| icon={isLoading ? <SpinnerIcon /> : <PiFlowArrowBold />} | |
| onClickCapture={onClick} | |
| isDisabled={!imageDTO.has_workflow || !hasTemplates} | |
| > | |
| {t('nodes.loadWorkflow')} | |
| </MenuItem> | |
| ); | |
| }); | |
| ImageMenuItemLoadWorkflow.displayName = 'ImageMenuItemLoadWorkflow'; | |