UNPKG

@finos/legend-studio

Version:
218 lines 11.1 kB
/** * 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. */ /// <reference types="react" resolution-mode="require"/> import type { LegendStudioPluginManager } from '../application/LegendStudioPluginManager.js'; import type { ElementEditorState } from './editor-state/element-editor-state/ElementEditorState.js'; import type { EditorExtensionState, EditorStore } from './EditorStore.js'; import type { NewElementDriver, NewElementState } from './editor/NewElementState.js'; import type { Class, PackageableElement, ModelGenerationConfiguration, Testable } from '@finos/legend-graph'; import { type DocumentationEntry, LegendApplicationPlugin } from '@finos/legend-application'; import type { TestableMetadata } from './sidebar-state/testable/GlobalTestRunnerState.js'; export declare type ExplorerContextMenuItemRendererConfiguration = { key: string; renderer: (editorStore: EditorStore, element: PackageableElement | undefined) => React.ReactNode | undefined; }; export declare type EditorExtensionComponentRendererConfiguration = { key: string; renderer: (editorStore: EditorStore) => React.ReactNode | undefined; }; export declare type EditorExtensionStateCreator = (editorStore: EditorStore) => EditorExtensionState | undefined; export declare type ClassPreviewRenderer = (_class: Class) => React.ReactNode | undefined; export declare type ModelLoaderExtensionConfiguration = { modelGenerationConfig: ModelGenerationConfiguration; allowHardReplace?: boolean; load: (editorStore: EditorStore) => Promise<void>; renderer: (editorStore: EditorStore) => React.ReactNode | undefined; }; export declare type TestableMetadataGetter = (testable: Testable, editorStore: EditorStore) => TestableMetadata | undefined; export declare abstract class LegendStudioApplicationPlugin extends LegendApplicationPlugin { /** * This helps to better type-check for this empty abtract type * See https://github.com/finos/legend-studio/blob/master/docs/technical/typescript-usage.md#understand-typescript-structual-type-system */ private readonly _$nominalTypeBrand; install(pluginManager: LegendStudioPluginManager): void; /** * Get the list of items to be rendered in the explorer context menu. */ getExtraExplorerContextMenuItemRendererConfigurations?(): ExplorerContextMenuItemRendererConfiguration[]; /** * Get the list of creators for editor extension state. * * This is a mechanism to extend the editor store. */ getExtraEditorExtensionStateCreators?(): EditorExtensionStateCreator[]; /** * Get the list of renderers for the preview panel of a class. */ getExtraClassPreviewRenderers?(): ClassPreviewRenderer[]; /** * Get the list of configurations for the renderer of editor extension states. */ getExtraEditorExtensionComponentRendererConfigurations?(): EditorExtensionComponentRendererConfiguration[]; /** * Get the list of extension configurations for model loader. */ getExtraModelLoaderExtensionConfigurations?(): ModelLoaderExtensionConfiguration[]; /** * Get the list of extension for testables */ getExtraTestableMetadata?(): TestableMetadataGetter[]; } export declare type ElementTypeGetter = (metamodel: PackageableElement) => string | undefined; export declare type ElementTypeLabelGetter = (type: string) => string | undefined; export declare type ElementIconGetter = (type: string) => React.ReactNode | undefined; export declare type NewElementFromStateCreator = (type: string, name: string, state: NewElementState) => PackageableElement | undefined; export declare type NewElementDriverCreator = (editorStore: EditorStore, type: string) => NewElementDriver<PackageableElement> | undefined; export declare type NewElementDriverEditorRenderer = (type: string) => React.ReactNode | undefined; export declare type ElementEditorPostCreateAction = (editorStore: EditorStore, element: PackageableElement) => void; export declare type ElementEditorPostRenameAction = (editorStore: EditorStore, element: PackageableElement) => void; export declare type ElementEditorPostDeleteAction = (editorStore: EditorStore, element: PackageableElement) => void; export declare type ElementEditorRenderer = (elementEditorState: ElementEditorState) => React.ReactNode | undefined; export declare type ElementEditorStateCreator = (editorStore: EditorStore, element: PackageableElement) => ElementEditorState | undefined; export declare type ElementProjectExplorerDnDTypeGetter = (element: PackageableElement) => string | undefined; export declare type PureGrammarParserDocumentationGetter = (editorStore: EditorStore, parserKeyword: string) => DocumentationEntry | undefined; export declare type PureGrammarParserElementDocumentationGetter = (editorStore: EditorStore, parserKeyword: string, elementKeyword: string) => DocumentationEntry | undefined; /** * This snippet suggestion is meant for an embedded content of an element * In other words, it is used to construct element snippet suggestions * * Because of that, it is expected that there are text content wrapping around * this snippet, so the first suggestion might not start from index 1. */ export interface ElementEmbeddedContentSnippetSuggestion { /** * Brief description about the suggestion item to enable the users to quickly * differentiate between one suggestions from another */ description?: string | undefined; /** * The snippet text to be embedded in the full snippet suggestion text for the element * * NOTE: The snippet syntax follows that of `monaco-editor` * See https://code.visualstudio.com/docs/editor/userdefinedsnippets#_create-your-own-snippets */ text: string; } /** * This mirrors `monaco-editor` completion item structure * See https://microsoft.github.io/monaco-editor/api/interfaces/monaco.languages.CompletionItem.html */ export interface PureGrammarTextSuggestion { /** * The text label of the suggestion. */ text: string; /** * Brief description about the suggestion item to enable the users to quickly * differentiate between one suggestions from another */ description?: string | undefined; /** * Detailed documentation that explains/elaborates the suggestion item. */ documentation?: DocumentationEntry | undefined; /** * A string or snippet that should be inserted when selecting this suggestion. * * NOTE: The snippet syntax follows that of `monaco-editor` * See https://code.visualstudio.com/docs/editor/userdefinedsnippets#_create-your-own-snippets */ insertText: string; } export declare type PureGrammarParserKeywordSuggestionGetter = (editorStore: EditorStore) => PureGrammarTextSuggestion[]; export declare type PureGrammarParserElementSnippetSuggestionsGetter = (editorStore: EditorStore, parserKeyword: string) => PureGrammarTextSuggestion[] | undefined; /** * Studio plugins for new DSL extension. */ export interface DSL_LegendStudioApplicationPlugin_Extension extends LegendStudioApplicationPlugin { /** * Get the list of the supported packageable element type specifiers. */ getExtraSupportedElementTypes?(): string[]; /** * Get the list of classifiers for a packageable element. */ getExtraElementTypeGetters?(): ElementTypeGetter[]; /** * Get the list of (user-friendly) type labelers for a packageable element. */ getExtraElementTypeLabelGetters?(): ElementTypeLabelGetter[]; /** * Get the list of icon renderers for a packageable element. */ getExtraElementIconGetters?(): ElementIconGetter[]; /** * Get the list of creators for packageable element given the creation state. */ getExtraNewElementFromStateCreators?(): NewElementFromStateCreator[]; /** * Get the list of creators for element creation state driver given the element type specifier. */ getExtraNewElementDriverCreators?(): NewElementDriverCreator[]; /** * Get the list of renderers for the editor for an element creation state driver given the element type specifier. */ getExtraNewElementDriverEditorRenderers?(): NewElementDriverEditorRenderer[]; /** * Get the list of actions to perform after creating a new packageable element. */ getExtraElementEditorPostCreateActions?(): ElementEditorPostCreateAction[]; /** * Get the list of actions to perform after renaming a packageable element. */ getExtraElementEditorPostRenameActions?(): ElementEditorPostRenameAction[]; /** * Get the list of actions to perform after deleting a packageable element. */ getExtraElementEditorPostDeleteActions?(): ElementEditorPostDeleteAction[]; /** * Get the list of renderers for the editor for a packageable element. */ getExtraElementEditorRenderers?(): ElementEditorRenderer[]; /** * Get the list of creators for element editor state. */ getExtraElementEditorStateCreators?(): ElementEditorStateCreator[]; /** * Get the list of the supported drag-and-drop type speficiers. */ getExtraElementProjectExplorerDnDTypeGetters?(): ElementProjectExplorerDnDTypeGetter[]; /** * Get the list of the supported drag-and-drop type speficiers for Pure grammar text editor. */ getExtraPureGrammarTextEditorDnDTypes?(): string[]; /** * Get the list of Pure grammar parser description getters based on parser section keyword * (e.g. ###Pure, ###Mapping, etc.) */ getExtraPureGrammarParserDocumentationGetters?(): PureGrammarParserDocumentationGetter[]; /** * Get the list of Pure grammar element documentation getters based on the value of the * element and the parser keywords (e.g. Class, Enum in ###Pure section) */ getExtraPureGrammarParserElementDocumentationGetters?(): PureGrammarParserElementDocumentationGetter[]; /** * Get the list of Pure grammar parser keyword suggestion getters (e.g. ###Pure, ###Mapping) */ getExtraPureGrammarParserKeywordSuggestionGetters?(): PureGrammarParserKeywordSuggestionGetter[]; /** * Get the list of Pure grammar element suggestion snippet getters based on the parser section * (e.g. Class, Enum in ###Pure) */ getExtraPureGrammarParserElementSnippetSuggestionsGetters?(): PureGrammarParserElementSnippetSuggestionsGetter[]; } //# sourceMappingURL=LegendStudioApplicationPlugin.d.ts.map