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