@finos/legend-application-studio
Version:
Legend Studio application core
260 lines • 26.9 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } 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 { useEffect, useState } from 'react';
import { observer } from 'mobx-react-lite';
import { clsx, ControlledDropdownMenu, MenuContent, MenuContentItem, PlusIcon, ArrowsAltHIcon, useResizeDetector, GenericTextFileIcon, } from '@finos/legend-art';
import { MappingEditor } from './mapping-editor/MappingEditor.js';
import { UMLEditor } from './uml-editor/UMLEditor.js';
import { MappingEditorState } from '../../../stores/editor/editor-state/element-editor-state/mapping/MappingEditorState.js';
import { UMLEditorState } from '../../../stores/editor/editor-state/element-editor-state/UMLEditorState.js';
import { ElementEditorState, ELEMENT_GENERATION_MODE, ExternalFormatElementGenerationViewModeState, FileGenerationViewModeState, } from '../../../stores/editor/editor-state/element-editor-state/ElementEditorState.js';
import { LEGEND_STUDIO_TEST_ID } from '../../../__lib__/LegendStudioTesting.js';
import { ELEMENT_NATIVE_VIEW_MODE } from '../../../stores/editor/EditorConfig.js';
import { DIFF_VIEW_MODE, EntityDiffViewState, } from '../../../stores/editor/editor-state/entity-diff-editor-state/EntityDiffViewState.js';
import { EntityDiffView } from './diff-editor/EntityDiffView.js';
import { ModelImporter } from './ModelImporter.js';
import { ModelImporterState } from '../../../stores/editor/editor-state/ModelImporterState.js';
import { FunctionEditorState } from '../../../stores/editor/editor-state/element-editor-state/FunctionEditorState.js';
import { ServiceEditorState } from '../../../stores/editor/editor-state/element-editor-state/service/ServiceEditorState.js';
import { ProjectConfigurationEditorState } from '../../../stores/editor/editor-state/project-configuration-editor-state/ProjectConfigurationEditorState.js';
import { ProjectConfigurationEditor } from './project-configuration-editor/ProjectConfigurationEditor.js';
import { ElementGenerationEditor } from './element-generation-editor/ElementGenerationEditor.js';
import { FunctionEditor } from './function-activator/FunctionEditor.js';
import { ElementNativeView } from './element-generation-editor/ElementNativeView.js';
import { ServiceEditor } from './service-editor/ServiceEditor.js';
import { PackageableRuntimeEditor } from './RuntimeEditor.js';
import { PackageableRuntimeEditorState } from '../../../stores/editor/editor-state/element-editor-state/RuntimeEditorState.js';
import { PackageableConnectionEditorState } from '../../../stores/editor/editor-state/element-editor-state/connection/ConnectionEditorState.js';
import { PackageableConnectionEditor } from './connection-editor/ConnectionEditor.js';
import { FileGenerationEditorState } from '../../../stores/editor/editor-state/element-editor-state/FileGenerationEditorState.js';
import { FileGenerationEditor } from './element-generation-editor/FileGenerationEditor.js';
import { EntityChangeConflictEditorState } from '../../../stores/editor/editor-state/entity-diff-editor-state/EntityChangeConflictEditorState.js';
import { EntityChangeConflictEditor } from './diff-editor/EntityChangeConflictEditor.js';
import { UnsupportedElementEditorState } from '../../../stores/editor/editor-state/UnsupportedElementEditorState.js';
import { UnsupportedElementEditor } from './UnsupportedElementEditor.js';
import { getPrettyLabelForRevision } from '../../../stores/editor/editor-state/entity-diff-editor-state/EntityDiffEditorState.js';
import { GenerationSpecificationEditorState } from '../../../stores/editor/editor-state/GenerationSpecificationEditorState.js';
import { GenerationSpecificationEditor } from './GenerationSpecificationEditor.js';
import { ArtifactGenerationViewer } from './ArtifactGenerationViewer.js';
import { useEditorStore } from '../EditorStoreProvider.js';
import { PackageableDataEditorState } from '../../../stores/editor/editor-state/element-editor-state/data/DataEditorState.js';
import { DataElementEditor } from './data-editor/DataElementEditor.js';
import { ElementXTGenerationEditor } from './element-generation-editor/ElementXTGenerationEditor.js';
import { TabManager } from '@finos/legend-lego/application';
import { INTERNAL__UnknownFunctionActivatorEdtiorState } from '../../../stores/editor/editor-state/element-editor-state/function-activator/INTERNAL__UnknownFunctionActivatorEditorState.js';
import { INTERNAL__UnknownFunctionActivatorEdtior } from './function-activator/INTERNAL__UnknownFunctionActivatorEdtior.js';
import { getElementIcon } from '../../ElementIconUtils.js';
import { ArtifactGenerationViewerState } from '../../../stores/editor/editor-state/ArtifactGenerationViewerState.js';
import { QueryConnectionWorflowEditor } from './end-to-end-flow-editor/ConnectionToQueryWorkflowEditor.js';
import { QueryConnectionEndToEndWorkflowEditorState } from '../../../stores/editor/editor-state/end-to-end-workflow-state/QueryConnectionEndToEndWorkflowEditorState.js';
import { SnowflakeAppFunctionActivatorEdtiorState } from '../../../stores/editor/editor-state/element-editor-state/function-activator/SnowflakeAppFunctionActivatorEditorState.js';
import { SnowflakeAppFunctionActivatorEditor } from './function-activator/SnowflakeAppFunctionActivatorEditor.js';
import { SnowflakeM2MUdfFunctionActivatorEdtiorState } from '../../../stores/editor/editor-state/element-editor-state/function-activator/SnowflakeM2MUdfFunctionActivatorEditorState.js';
import { SnowflakeM2MUdfFunctionActivatorEditor } from './function-activator/SnowflakeM2MUdfFunctionActivatorEditor.js';
import { ShowcaseCard, RuleEngagementCard, DocumentationCard, } from '../../workspace-setup/WorkspaceSetup.js';
import { HostedServiceFunctionActivatorEditorState } from '../../../stores/editor/editor-state/element-editor-state/function-activator/HostedServiceFunctionActivatorEditorState.js';
import { HostedServiceFunctionActivatorEditor } from './function-activator/HostedServiceFunctionActivatorEditor.js';
import { DataProductEditorState } from '../../../stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js';
import { DataProductEditor } from './dataProduct/DataProductEditor.js';
import { IngestDefinitionEditorState } from '../../../stores/editor/editor-state/element-editor-state/ingest/IngestDefinitionEditorState.js';
import { IngestDefinitionEditor } from './ingest-editor/IngestDefinitionEditor.js';
import { MemSQLFunctionActivatorEditor, MemSQLFunctionActivatorEdtiorState, } from './EditorGroup.js';
export { MemSQLFunctionActivatorEditorState as MemSQLFunctionActivatorEdtiorState } from '../../../stores/editor/editor-state/element-editor-state/function-activator/MemSQLFunctionActivatorEditorState.js';
export { MemSQLFunctionActivatorEditor } from './function-activator/MemSQLFunctionActivatorEditor.js';
export const ViewerEditorGroupSplashScreen = () => {
const commandListWidth = 300;
const commandListHeight = 50;
const [showCommandList, setShowCommandList] = useState(false);
const { ref, width, height } = useResizeDetector();
useEffect(() => {
setShowCommandList((width ?? 0) > commandListWidth && (height ?? 0) > commandListHeight);
}, [width, height]);
return (_jsx("div", { ref: ref, className: "editor-group__splash-screen", children: _jsx("div", { className: clsx('editor-group__splash-screen__content', {
'editor-group__splash-screen__content--hidden': !showCommandList,
}), children: _jsxs("div", { className: "editor-group__splash-screen__content__item", children: [_jsx("div", { className: "editor-group__splash-screen__content__item__label", children: "Open or Search for an Element" }), _jsxs("div", { className: "editor-group__splash-screen__content__item__hot-keys", children: [_jsx("div", { className: "hotkey__key", children: "Ctrl" }), _jsx("div", { className: "hotkey__plus", children: _jsx(PlusIcon, {}) }), _jsx("div", { className: "hotkey__key", children: "P" })] })] }) }) }));
};
export const EditorGroupSplashScreen = () => {
const commandListWidth = 300;
const commandListHeight = 180;
const [showCommandList, setShowCommandList] = useState(false);
const { ref, width, height } = useResizeDetector();
useEffect(() => {
setShowCommandList((width ?? 0) > commandListWidth && (height ?? 0) > commandListHeight);
}, [width, height]);
return (_jsx("div", { ref: ref, className: "editor-group__splash-screen", children: _jsxs("div", { className: clsx('editor-group__splash-screen__content', {
'editor-group__splash-screen__content--hidden': !showCommandList,
}), children: [_jsx("div", { className: "editor-group__splash-screen__content__cards", children: _jsxs("div", { className: "editor-group__splash-screen__content__cards__container", children: [_jsx(RuleEngagementCard, {}), _jsx(ShowcaseCard, { hideDocumentation: true }), _jsx(DocumentationCard, {})] }) }), _jsx("div", { className: "editor-group__splash-screen__content__divider" }), _jsxs("div", { className: "editor-group__splash-screen__content__actions", children: [_jsx("div", { className: "editor-group__splash-screen__content__header", children: "Essential Keyboard Shortcuts" }), _jsxs("div", { className: "editor-group__splash-screen__content__items", children: [_jsxs("div", { className: "editor-group__splash-screen__content__item", children: [_jsx("div", { className: "editor-group__splash-screen__content__item__label", children: "Open or Search for an Element" }), _jsxs("div", { className: "editor-group__splash-screen__content__item__hot-keys", children: [_jsx("div", { className: "hotkey__key", children: "Ctrl" }), _jsx("div", { className: "hotkey__plus", children: _jsx(PlusIcon, {}) }), _jsx("div", { className: "hotkey__key", children: "P" })] })] }), _jsxs("div", { className: "editor-group__splash-screen__content__item", children: [_jsx("div", { className: "editor-group__splash-screen__content__item__label", children: "Push Local Changes" }), _jsxs("div", { className: "editor-group__splash-screen__content__item__hot-keys", children: [_jsx("div", { className: "hotkey__key", children: "Ctrl" }), _jsx("div", { className: "hotkey__plus", children: _jsx(PlusIcon, {}) }), _jsx("div", { className: "hotkey__key", children: "S" })] })] }), _jsxs("div", { className: "editor-group__splash-screen__content__item", children: [_jsx("div", { className: "editor-group__splash-screen__content__item__label", children: "Open Showcases" }), _jsx("div", { className: "editor-group__splash-screen__content__item__hot-keys", children: _jsx("div", { className: "hotkey__key", children: "F7" }) })] }), _jsxs("div", { className: "editor-group__splash-screen__content__item", children: [_jsx("div", { className: "editor-group__splash-screen__content__item__label", children: "Go To Text Mode" }), _jsx("div", { className: "editor-group__splash-screen__content__item__hot-keys", children: _jsx("div", { className: "hotkey__key", children: "F8" }) })] }), _jsxs("div", { className: "editor-group__splash-screen__content__item", children: [_jsx("div", { className: "editor-group__splash-screen__content__item__label", children: "Compile" }), _jsx("div", { className: "editor-group__splash-screen__content__item__hot-keys", children: _jsx("div", { className: "hotkey__key", children: "F9" }) })] })] })] })] }) }));
};
export const EditorGroup = observer(() => {
const editorStore = useEditorStore();
const currentTabState = editorStore.tabManagerState.currentTab;
const nativeViewModes = currentTabState instanceof ElementEditorState
? Object.values(ELEMENT_NATIVE_VIEW_MODE)
: [];
const externalformatViewModes = currentTabState instanceof ElementEditorState
? editorStore.graphState.graphGenerationState.externalFormatState.externalFormatDescriptions
.filter((f) => f.supportsSchemaGeneration)
.toSorted((a, b) => a.name.localeCompare(b.name))
: [];
const generationViewModes = (currentTabState instanceof ElementEditorState
? editorStore.graphState.graphGenerationState.globalFileGenerationState.fileGenerationConfigurations.toSorted((a, b) => a.label.localeCompare(b.label))
: []).filter((file) => !externalformatViewModes
.map((e) => e.name.toLowerCase())
.includes(file.key.toLowerCase()));
const renderActiveElementTab = () => {
if (currentTabState instanceof ElementEditorState) {
const generationViewState = currentTabState.generationModeState;
if (generationViewState) {
if (generationViewState instanceof FileGenerationViewModeState) {
return (_jsx(ElementGenerationEditor, { elementGenerationState: generationViewState.elementGenerationState, currentElementState: currentTabState }, generationViewState.elementGenerationState.uuid));
}
else if (generationViewState instanceof
ExternalFormatElementGenerationViewModeState) {
return (_jsx(ElementXTGenerationEditor, { elementXTState: generationViewState.generationState, currentElementState: currentTabState }, generationViewState.generationState.uuid));
}
}
switch (currentTabState.editMode) {
case ELEMENT_NATIVE_VIEW_MODE.FORM: {
if (currentTabState instanceof UMLEditorState) {
return _jsx(UMLEditor, {}, currentTabState.uuid);
}
else if (currentTabState instanceof FunctionEditorState) {
return _jsx(FunctionEditor, {}, currentTabState.uuid);
}
else if (currentTabState instanceof MappingEditorState) {
return _jsx(MappingEditor, {}, currentTabState.uuid);
}
else if (currentTabState instanceof IngestDefinitionEditorState) {
return _jsx(IngestDefinitionEditor, {}, currentTabState.uuid);
}
else if (currentTabState instanceof ServiceEditorState) {
return _jsx(ServiceEditor, {}, currentTabState.uuid);
}
else if (currentTabState instanceof DataProductEditorState) {
return _jsx(DataProductEditor, {}, currentTabState.uuid);
}
else if (currentTabState instanceof PackageableRuntimeEditorState) {
return _jsx(PackageableRuntimeEditor, {}, currentTabState.uuid);
}
else if (currentTabState instanceof PackageableConnectionEditorState) {
return _jsx(PackageableConnectionEditor, {}, currentTabState.uuid);
}
else if (currentTabState instanceof FileGenerationEditorState) {
return _jsx(FileGenerationEditor, {}, currentTabState.uuid);
}
else if (currentTabState instanceof PackageableDataEditorState) {
return _jsx(DataElementEditor, {}, currentTabState.uuid);
}
else if (currentTabState instanceof GenerationSpecificationEditorState) {
return _jsx(GenerationSpecificationEditor, {}, currentTabState.uuid);
}
else if (currentTabState instanceof SnowflakeAppFunctionActivatorEdtiorState) {
return (_jsx(SnowflakeAppFunctionActivatorEditor, {}, currentTabState.uuid));
}
else if (currentTabState instanceof
SnowflakeM2MUdfFunctionActivatorEdtiorState) {
return (_jsx(SnowflakeM2MUdfFunctionActivatorEditor, {}, currentTabState.uuid));
}
else if (currentTabState instanceof HostedServiceFunctionActivatorEditorState) {
return (_jsx(HostedServiceFunctionActivatorEditor, {}, currentTabState.uuid));
}
else if (currentTabState instanceof MemSQLFunctionActivatorEdtiorState) {
return _jsx(MemSQLFunctionActivatorEditor, {}, currentTabState.uuid);
}
else if (currentTabState instanceof UnsupportedElementEditorState) {
return _jsx(UnsupportedElementEditor, {}, currentTabState.uuid);
}
else if (currentTabState instanceof
INTERNAL__UnknownFunctionActivatorEdtiorState) {
return (_jsx(INTERNAL__UnknownFunctionActivatorEdtior, {}, currentTabState.uuid));
}
const extraElementEditorCreators = editorStore.pluginManager
.getApplicationPlugins()
.flatMap((plugin) => plugin.getExtraElementEditorRenderers?.() ?? []);
for (const elementEditorCreators of extraElementEditorCreators) {
const elementEditor = elementEditorCreators(currentTabState);
if (elementEditor) {
return elementEditor;
}
}
break;
}
case ELEMENT_NATIVE_VIEW_MODE.JSON:
case ELEMENT_NATIVE_VIEW_MODE.GRAMMAR:
return (_jsx(ElementNativeView, { currentElementState: currentTabState }, currentTabState.uuid));
default:
return null;
}
}
else if (currentTabState instanceof EntityDiffViewState) {
return (_jsx(EntityDiffView, { entityDiffViewState: currentTabState }, currentTabState.uuid));
}
else if (currentTabState instanceof EntityChangeConflictEditorState) {
return (_jsx(EntityChangeConflictEditor, { conflictEditorState: currentTabState }, currentTabState.uuid));
}
else if (currentTabState instanceof ArtifactGenerationViewerState) {
return _jsx(ArtifactGenerationViewer, {}, currentTabState.uuid);
}
else if (currentTabState instanceof ModelImporterState) {
return _jsx(ModelImporter, {});
}
else if (currentTabState instanceof ProjectConfigurationEditorState) {
return _jsx(ProjectConfigurationEditor, {});
}
else if (currentTabState instanceof QueryConnectionEndToEndWorkflowEditorState) {
if (editorStore.globalEndToEndWorkflowState
.queryToConnectionWorkflowEditorState.packageableConnection
?.connectionValue.store) {
return (_jsx(QueryConnectionWorflowEditor, { connectionToQueryWorkflowState: editorStore.globalEndToEndWorkflowState
.queryToConnectionWorkflowEditorState }));
}
else {
editorStore.applicationStore.notificationService.notifyError(`Cannot open query to connection workflow editor because the connection does not have a store`);
return null;
}
}
// TODO: create an editor for unsupported tab
return null;
};
const renderTab = (editorState) => {
if (editorState instanceof EntityDiffViewState) {
return (_jsxs("div", { className: "diff-tab", children: [_jsx("div", { className: "diff-tab__element-icon", children: editorState.element ? ((getElementIcon(editorState.element, editorStore, {
returnEmptyForUnknown: true,
}) ?? _jsx(GenericTextFileIcon, {}))) : (_jsx(GenericTextFileIcon, {})) }), _jsx("div", { className: "diff-tab__element-name", children: editorState.label }), _jsxs("div", { className: "diff-tab__text", children: ["(", getPrettyLabelForRevision(editorState.fromRevision)] }), _jsx("div", { className: "diff-tab__icon", children: _jsx(ArrowsAltHIcon, {}) }), _jsxs("div", { className: "diff-tab__text", children: [getPrettyLabelForRevision(editorState.toRevision), ")"] })] }));
}
else if (editorState instanceof EntityChangeConflictEditorState) {
return (_jsxs("div", { className: "diff-tab", children: [_jsx("div", { className: "diff-tab__element-icon", children: _jsx(GenericTextFileIcon, {}) }), _jsx("div", { className: "diff-tab__element-name", children: editorState.label }), _jsx("div", { className: "diff-tab__text", children: editorState.isReadOnly ? '(Merge Preview)' : '(Merged)' })] }));
}
return (_jsxs("div", { className: "editor-group__header__tab", children: [_jsx("div", { className: "editor-group__header__tab__icon", children: editorState instanceof ElementEditorState ? ((getElementIcon(editorState.element, editorStore, {
returnEmptyForUnknown: true,
}) ?? _jsx(GenericTextFileIcon, {}))) : (_jsx(GenericTextFileIcon, {})) }), _jsx("div", { className: "editor-group__header__tab__label", children: editorState.label }), editorState instanceof ElementEditorState &&
editorStore.tabManagerState.tabs.filter((tab) => tab instanceof ElementEditorState &&
tab.label === editorState.label).length > 1 && (_jsx("div", { className: "editor-group__header__tab__path", children: editorState.element.path }))] }));
};
if (!currentTabState) {
return editorStore.isInViewerMode ? (_jsx(ViewerEditorGroupSplashScreen, {})) : (_jsx(EditorGroupSplashScreen, {}));
}
return (_jsxs("div", { "data-testid": LEGEND_STUDIO_TEST_ID.EDITOR_GROUP, className: "panel editor-group", children: [_jsxs("div", { className: "panel__header editor-group__header", children: [_jsx("div", { "data-testid": LEGEND_STUDIO_TEST_ID.EDITOR_GROUP__HEADER_TABS, className: "editor-group__header__tabs", children: _jsx(TabManager, { tabManagerState: editorStore.tabManagerState, tabRenderer: renderTab }) }), _jsxs("div", { className: "editor-group__header__actions", children: [currentTabState instanceof ElementEditorState && (_jsx(ControlledDropdownMenu, { className: "editor-group__view-mode__type", title: "View as...", content: _jsxs(MenuContent, { "data-testid": LEGEND_STUDIO_TEST_ID.EDITOR_GROUP__ELEMENT_VIEW__OPTIONS, className: "editor-group__view-mode__options editor-group__view-mode__options--with-group", children: [_jsxs("div", { className: "editor-group__view-mode__option__group editor-group__view-mode__option__group--native", children: [_jsx("div", { className: "editor-group__view-mode__option__group__name", children: "native" }), _jsx("div", { className: "editor-group__view-mode__option__group__options", children: nativeViewModes.map((mode) => (_jsx(MenuContentItem, { className: "editor-group__view-mode__option", onClick: () => currentTabState.setEditMode(mode), children: mode }, mode))) })] }), Boolean(externalformatViewModes.length) && (_jsxs(_Fragment, { children: [_jsx("div", { className: "editor-group__view-mode__option__group__separator" }), _jsxs("div", { className: "editor-group__view-mode__option__group editor-group__view-mode__option__group--generation", children: [_jsx("div", { className: "editor-group__view-mode__option__group__name", children: "external format" }), _jsx("div", { className: "editor-group__view-mode__option__group__options", children: externalformatViewModes.map((mode) => (_jsx(MenuContentItem, { className: "editor-group__view-mode__option", onClick: () => currentTabState.changeGenerationModeState(mode.name, ELEMENT_GENERATION_MODE.EXTERNAL_FORMAT), children: mode.name }, mode.name))) })] })] })), Boolean(generationViewModes.length) && (_jsxs(_Fragment, { children: [_jsx("div", { className: "editor-group__view-mode__option__group__separator" }), _jsxs("div", { className: "editor-group__view-mode__option__group editor-group__view-mode__option__group--generation", children: [_jsx("div", { className: "editor-group__view-mode__option__group__name", children: "file" }), _jsx("div", { className: "editor-group__view-mode__option__group__options", children: generationViewModes.map((mode) => (_jsx(MenuContentItem, { className: "editor-group__view-mode__option", disabled: !editorStore.graphState.graphGenerationState.globalFileGenerationState.supportedFileGenerationConfigurationsForCurrentElement.includes(mode), onClick: () => currentTabState.changeGenerationModeState(mode.key, ELEMENT_GENERATION_MODE.FILE_GENERATION), children: mode.label }, mode.key))) })] })] }))] }), menuProps: {
anchorOrigin: { vertical: 'bottom', horizontal: 'right' },
transformOrigin: { vertical: 'top', horizontal: 'right' },
}, children: _jsx("div", { className: "editor-group__view-mode__type__label", children: currentTabState.generationModeState?.label ??
currentTabState.editMode }) })), currentTabState instanceof EntityDiffViewState && (_jsx(ControlledDropdownMenu, { className: "editor-group__view-mode__type", title: "View as...", content: _jsxs(MenuContent, { "data-testid": LEGEND_STUDIO_TEST_ID.EDITOR_GROUP__ELEMENT_VIEW__OPTIONS, className: "editor-group__view-mode__options", children: [_jsx(MenuContentItem, { className: "editor-group__view-mode__option", onClick: () => currentTabState.setDiffMode(DIFF_VIEW_MODE.GRAMMAR), children: DIFF_VIEW_MODE.GRAMMAR }), _jsx(MenuContentItem, { className: "editor-group__view-mode__option", onClick: () => currentTabState.setDiffMode(DIFF_VIEW_MODE.JSON), children: DIFF_VIEW_MODE.JSON })] }), menuProps: {
anchorOrigin: { vertical: 'bottom', horizontal: 'right' },
transformOrigin: { vertical: 'top', horizontal: 'right' },
}, children: _jsx("div", { className: "editor-group__view-mode__type__label", children: currentTabState.diffMode }) }))] })] }), _jsx("div", { className: "panel__content editor-group__content", "data-testid": LEGEND_STUDIO_TEST_ID.EDITOR_GROUP_CONTENT, children: renderActiveElementTab() }, currentTabState.uuid)] }));
});
//# sourceMappingURL=EditorGroup.js.map