/* * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors * * SPDX-License-Identifier: EPL-2.0 */ import CancelIcon from '@mui/icons-material/Cancel'; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import { observer } from 'mobx-react-lite'; import AnimatedButton from './AnimatedButton'; import type EditorStore from './EditorStore'; const GENERATE_LABEL = 'Generate'; const GenerateButton = observer(function GenerateButton({ editorStore, hideWarnings, }: { editorStore: EditorStore | undefined; hideWarnings?: boolean | undefined; }): JSX.Element { if (editorStore === undefined) { return ( Loading… ); } const { analyzing, errorCount, warningCount, semanticsError } = editorStore.delayedErrors; if (analyzing) { return ( Analyzing… ); } if (semanticsError !== undefined && editorStore.opened) { return ( } sx={(theme) => ({ '&.Mui-disabled': { color: `${theme.palette.error.main} !important`, }, })} > Analysis error ); } const diagnostics: string[] = []; if (errorCount > 0) { diagnostics.push(`${errorCount} error${errorCount === 1 ? '' : 's'}`); } if (!(hideWarnings ?? false) && warningCount > 0) { diagnostics.push(`${warningCount} warning${warningCount === 1 ? '' : 's'}`); } const summary = diagnostics.join(' and '); if (errorCount > 0) { return ( editorStore.nextDiagnostic()} color="error" startIcon={} > {summary} ); } return ( 0 ? 'warning' : 'primary'} startIcon={} > {summary === '' ? GENERATE_LABEL : `${GENERATE_LABEL} (${summary})`} ); }); GenerateButton.defaultProps = { hideWarnings: false, }; export default GenerateButton;