@finos/legend-extension-dsl-data-space-studio
Version:
Legend extension for Data Space DSL - Studio
249 lines • 9.82 kB
JavaScript
import { jsx as _jsx } 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 packageJson from '../../package.json' with { type: 'json' };
import { LegendStudioApplicationPlugin, PACKAGEABLE_ELEMENT_GROUP_BY_CATEGORY, } from '@finos/legend-application-studio';
import {} from '@finos/legend-graph';
import { DataSpace, observe_DataSpace, } from '@finos/legend-extension-dsl-data-space/graph';
import { DSL_DATA_SPACE_LEGEND_STUDIO_APPLICATION_NAVIGATION_CONTEXT_KEY, DSL_DATA_SPACE_LEGEND_STUDIO_DOCUMENTATION_KEY, } from '../__lib__/DSL_DataSpace_LegendStudioDocumentation.js';
import { DataSpacePreviewState } from '../stores/DataSpacePreviewState.js';
import { SIMPLE_DATA_SPACE_SNIPPET } from '../__lib__/DSL_DataSpace_LegendStudioCodeSnippet.js';
import { DATA_SPACE_STUDIO_ROUTE_PATTERN, DataSpaceIcon, } from '@finos/legend-extension-dsl-data-space/application';
import { DataSpaceTemplateQueryPromotionReviewer } from './DataSpaceTemplateQueryPromoteReview.js';
import { DataSpaceQueryAction } from './DataSpaceQueryAction.js';
import { DataSpacePreviewAction, DataSpacePreviewDialog, } from './DataSpacePreviewAction.js';
import { DataSpaceEditorState } from '../stores/DataSpaceEditorState.js';
import { DataSpaceEditor } from './DataSpaceEditor.js';
import { NewDataProductDriverEditor } from './DSL_NewDataProductEditor.js';
import { NewDataProductDriver } from './DSL_DataProduct_ElementDriver.js';
const DATA_SPACE_ELEMENT_TYPE = 'DATA PRODUCT';
const DATA_SPACE_ELEMENT_PROJECT_EXPLORER_DND_TYPE = 'PROJECT_EXPLORER_DATA_SPACE';
const PURE_GRAMMAR_DATA_SPACE_PARSER_NAME = 'DataSpace';
const PURE_GRAMMAR_DATA_SPACE_ELEMENT_TYPE_LABEL = 'DataSpace';
export class DSL_DataSpace_LegendStudioApplicationPlugin extends LegendStudioApplicationPlugin {
constructor() {
super(packageJson.extensions.applicationStudioPlugin, packageJson.version);
}
getExtraRequiredDocumentationKeys() {
return [
DSL_DATA_SPACE_LEGEND_STUDIO_DOCUMENTATION_KEY.CONCEPT_ELEMENT_DATA_SPACE,
DSL_DATA_SPACE_LEGEND_STUDIO_DOCUMENTATION_KEY.GRAMMAR_PARSER,
];
}
getExtraApplicationPageEntries() {
return [
{
key: 'promote-as-curated-template-query-page',
addressPatterns: [
DATA_SPACE_STUDIO_ROUTE_PATTERN.PROMOTE_TEMPLATE_QUERY,
],
renderer: () => _jsx(DataSpaceTemplateQueryPromotionReviewer, {}),
},
];
}
getExtraExplorerContextMenuItemRendererConfigurations() {
return [
{
key: 'data-space-query',
renderer: (editorStore, element) => {
if (element instanceof DataSpace) {
return _jsx(DataSpaceQueryAction, { dataSpace: element });
}
return undefined;
},
},
{
key: 'data-space-preview',
renderer: (editorStore, element) => {
if (element instanceof DataSpace) {
return _jsx(DataSpacePreviewAction, { dataSpace: element });
}
return undefined;
},
},
];
}
getExtraEditorExtensionStateBuilders() {
return [(editorStore) => new DataSpacePreviewState(editorStore)];
}
getExtraEditorExtensionComponentRendererConfigurations() {
return [
{
key: 'data-space-preview',
renderer: (editorStore) => _jsx(DataSpacePreviewDialog, {}),
},
];
}
getExtraAccessEventLoggingApplicationContextKeys() {
return [
DSL_DATA_SPACE_LEGEND_STUDIO_APPLICATION_NAVIGATION_CONTEXT_KEY.DATA_SPACE_EDITOR,
];
}
getExtraPureGrammarKeywords() {
return [PURE_GRAMMAR_DATA_SPACE_ELEMENT_TYPE_LABEL];
}
getExtraSupportedElementTypes() {
return [DATA_SPACE_ELEMENT_TYPE];
}
getExtraSupportedElementTypesWithCategory() {
const elementTypesWithCategoryMap = new Map();
elementTypesWithCategoryMap.set(PACKAGEABLE_ELEMENT_GROUP_BY_CATEGORY.QUERY, [DATA_SPACE_ELEMENT_TYPE]);
return elementTypesWithCategoryMap;
}
getExtraElementClassifiers() {
return [
(element) => {
if (element instanceof DataSpace) {
return DATA_SPACE_ELEMENT_TYPE;
}
return undefined;
},
];
}
getExtraElementIconGetters() {
return [
(type) => {
if (type === DATA_SPACE_ELEMENT_TYPE) {
return _jsx(DataSpaceIcon, {});
}
return undefined;
},
];
}
getExtraNewElementFromStateCreators() {
return [
(type, name, state) => {
if (type === DATA_SPACE_ELEMENT_TYPE) {
return state
.getNewElementDriver(NewDataProductDriver)
.createElement(name);
}
return undefined;
},
];
}
getExtraNewElementDriverEditorRenderers() {
return [
(type) => {
if (type === DATA_SPACE_ELEMENT_TYPE) {
return _jsx(NewDataProductDriverEditor, {});
}
return undefined;
},
];
}
getExtraNewElementDriverCreators() {
return [
(editorStore, type) => {
if (type === DATA_SPACE_ELEMENT_TYPE) {
return new NewDataProductDriver(editorStore);
}
return undefined;
},
];
}
getExtraElementEditorRenderers() {
return [
(editorState) => {
if (editorState instanceof DataSpaceEditorState) {
return _jsx(DataSpaceEditor, {}, editorState.uuid);
}
return undefined;
},
];
}
getExtraElementEditorStateCreators() {
return [
(editorStore, element) => {
if (element instanceof DataSpace) {
// return new UnsupportedElementEditorState(editorStore, element);
return new DataSpaceEditorState(editorStore, element);
}
return undefined;
},
];
}
getExtraElementObservers() {
return [
(element) => {
if (element instanceof DataSpace) {
return observe_DataSpace(element);
}
return undefined;
},
];
}
getExtraDragElementClassifiers() {
return [
(element) => {
if (element instanceof DataSpace) {
return DATA_SPACE_ELEMENT_PROJECT_EXPLORER_DND_TYPE;
}
return undefined;
},
];
}
getExtraPureGrammarTextEditorDragElementTypes() {
return [DATA_SPACE_ELEMENT_PROJECT_EXPLORER_DND_TYPE];
}
getExtraPureGrammarParserElementDocumentationGetters() {
return [
(editorStore, parserKeyword, elementKeyword) => {
if (parserKeyword === PURE_GRAMMAR_DATA_SPACE_PARSER_NAME) {
if (elementKeyword === PURE_GRAMMAR_DATA_SPACE_ELEMENT_TYPE_LABEL) {
return editorStore.applicationStore.documentationService.getDocEntry(DSL_DATA_SPACE_LEGEND_STUDIO_DOCUMENTATION_KEY.CONCEPT_ELEMENT_DATA_SPACE);
}
}
return undefined;
},
];
}
getExtraPureGrammarParserDocumentationGetters() {
return [
(editorStore, parserKeyword) => {
if (parserKeyword === PURE_GRAMMAR_DATA_SPACE_PARSER_NAME) {
return editorStore.applicationStore.documentationService.getDocEntry(DSL_DATA_SPACE_LEGEND_STUDIO_DOCUMENTATION_KEY.GRAMMAR_PARSER);
}
return undefined;
},
];
}
getExtraPureGrammarParserKeywordSuggestionGetters() {
return [
(editorStore) => [
{
text: PURE_GRAMMAR_DATA_SPACE_PARSER_NAME,
description: `(dsl)`,
documentation: editorStore.applicationStore.documentationService.getDocEntry(DSL_DATA_SPACE_LEGEND_STUDIO_DOCUMENTATION_KEY.GRAMMAR_PARSER),
insertText: PURE_GRAMMAR_DATA_SPACE_PARSER_NAME,
},
],
];
}
getExtraPureGrammarParserElementSnippetSuggestionsGetters() {
return [
(editorStore, parserKeyword) => parserKeyword === PURE_GRAMMAR_DATA_SPACE_PARSER_NAME
? [
{
text: PURE_GRAMMAR_DATA_SPACE_ELEMENT_TYPE_LABEL,
insertText: SIMPLE_DATA_SPACE_SNIPPET,
},
]
: undefined,
];
}
}
//# sourceMappingURL=DSL_DataSpace_LegendStudioApplicationPlugin.js.map