UNPKG

@finos/legend-extension-dsl-data-space-studio

Version:
249 lines 9.82 kB
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