@finos/legend-application-studio
Version:
Legend Studio application core
42 lines • 3.04 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
/**
* Copyright (c) 2020-present, Goldman Sachs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { observer } from 'mobx-react-lite';
import { PanelList, PanelListItem, clsx, Panel, ErrorIcon, WarningIcon, } from '@finos/legend-art';
import { useEditorStore } from '../EditorStoreProvider.js';
import { CompilationWarning, EngineError } from '@finos/legend-graph';
import { GRAPH_EDITOR_MODE } from '../../../stores/editor/EditorConfig.js';
const ProblemItem = observer((props) => {
const { problem } = props;
const editorStore = useEditorStore();
const isStale = editorStore.graphState.areProblemsStale;
const goToSource = () => editorStore.graphEditorMode.goToProblem(problem);
return (_jsx(PanelListItem, { children: _jsxs("button", { className: clsx([
'panel-group__problem',
{
'panel-group__problem--stale': isStale,
},
]), title: problem.message, onClick: goToSource, children: [problem instanceof EngineError && (_jsx(ErrorIcon, { className: "panel-group__problem__icon panel-group__problem__icon--error" })), problem instanceof CompilationWarning && (_jsx(WarningIcon, { className: "panel-group__problem__icon panel-group__problem__icon--warning" })), _jsx("div", { className: "panel-group__problem__message", children: problem.message }), problem.sourceInformation && (_jsx("div", { className: "panel-group__problem__source", children: editorStore.graphEditorMode.mode ===
GRAPH_EDITOR_MODE.GRAMMAR_TEXT &&
`[Ln ${problem.sourceInformation.startLine}, Col ${problem.sourceInformation.startColumn}]` }))] }) }));
});
export const ProblemsPanel = observer(() => {
const editorStore = useEditorStore();
const problems = editorStore.graphState.problems;
const isStale = editorStore.graphState.areProblemsStale;
return (_jsxs(Panel, { children: [isStale && (_jsx("div", { className: "panel-group__problems__stale-warning", children: "The following result might be stale - please run compilation (F9) to check for the latest problems" })), problems.length === 0 && (_jsx("div", { className: "panel-group__problems__placeholder", children: "No problems have been detected in the workspace." })), problems.length !== 0 && (_jsx(PanelList, { children: problems.map((problem) => (_jsx(ProblemItem, { problem: problem }, problem.uuid))) }))] }));
});
//# sourceMappingURL=ProblemsPanel.js.map