@finos/legend-application-studio 28.21.12 → 28.21.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/editor/ActivityBar.d.ts +13 -0
- package/lib/components/editor/ActivityBar.d.ts.map +1 -1
- package/lib/components/editor/ActivityBar.js +36 -15
- package/lib/components/editor/ActivityBar.js.map +1 -1
- package/lib/components/editor/editor-group/dataProduct/DataProductEditor.d.ts +2 -0
- package/lib/components/editor/editor-group/dataProduct/DataProductEditor.d.ts.map +1 -1
- package/lib/components/editor/editor-group/dataProduct/DataProductEditor.js +81 -19
- package/lib/components/editor/editor-group/dataProduct/DataProductEditor.js.map +1 -1
- package/lib/components/editor/editor-group/service-editor/ServiceEditor.d.ts.map +1 -1
- package/lib/components/editor/editor-group/service-editor/ServiceEditor.js +4 -1
- package/lib/components/editor/editor-group/service-editor/ServiceEditor.js.map +1 -1
- package/lib/components/workspace-setup/WorkspaceSetup.d.ts.map +1 -1
- package/lib/components/workspace-setup/WorkspaceSetup.js +20 -3
- package/lib/components/workspace-setup/WorkspaceSetup.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/package.json +1 -1
- package/lib/stores/extensions/DSL_DataProduct_LegendStudioApplicationPlugin_Extension.d.ts +61 -0
- package/lib/stores/extensions/DSL_DataProduct_LegendStudioApplicationPlugin_Extension.d.ts.map +1 -0
- package/lib/stores/extensions/DSL_DataProduct_LegendStudioApplicationPlugin_Extension.js +17 -0
- package/lib/stores/extensions/DSL_DataProduct_LegendStudioApplicationPlugin_Extension.js.map +1 -0
- package/lib/stores/extensions/DSL_Service_LegendStudioApplicationPlugin_Extension.d.ts +2 -2
- package/lib/stores/extensions/DSL_Service_LegendStudioApplicationPlugin_Extension.d.ts.map +1 -1
- package/lib/stores/workspace-setup/WorkspaceSetupStore.d.ts.map +1 -1
- package/lib/stores/workspace-setup/WorkspaceSetupStore.js +6 -2
- package/lib/stores/workspace-setup/WorkspaceSetupStore.js.map +1 -1
- package/package.json +12 -12
- package/src/components/editor/ActivityBar.tsx +61 -38
- package/src/components/editor/editor-group/dataProduct/DataProductEditor.tsx +207 -29
- package/src/components/editor/editor-group/service-editor/ServiceEditor.tsx +5 -1
- package/src/components/workspace-setup/WorkspaceSetup.tsx +27 -2
- package/src/index.ts +1 -0
- package/src/stores/extensions/DSL_DataProduct_LegendStudioApplicationPlugin_Extension.ts +77 -0
- package/src/stores/extensions/DSL_Service_LegendStudioApplicationPlugin_Extension.ts +1 -2
- package/src/stores/workspace-setup/WorkspaceSetupStore.ts +5 -0
- package/tsconfig.json +1 -0
|
@@ -13,6 +13,19 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
+
/**
|
|
17
|
+
* One-click toggle between the default dark and default light color themes,
|
|
18
|
+
* surfaced directly in the activity bar so users don't have to dig through the
|
|
19
|
+
* Settings menu to flip themes.
|
|
20
|
+
*
|
|
21
|
+
* The toggle only renders when both themes are actually exposed in the current
|
|
22
|
+
* environment (i.e. it respects the same `STUDIO_SUPPORTED_COLOR_THEMES` /
|
|
23
|
+
* `NonProductionFeatureFlag` gating as the Settings menu picker). This keeps
|
|
24
|
+
* the in-progress light theme hidden in production until it's stabilized.
|
|
25
|
+
*/
|
|
26
|
+
export declare const ColorThemeToggle: (() => import("react/jsx-runtime").JSX.Element | null) & {
|
|
27
|
+
displayName: string;
|
|
28
|
+
};
|
|
16
29
|
export declare const ActivityBarMenu: React.FC<{
|
|
17
30
|
openShowcasePanel?: () => void;
|
|
18
31
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityBar.d.ts","sourceRoot":"","sources":["../../../src/components/editor/ActivityBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"ActivityBar.d.ts","sourceRoot":"","sources":["../../../src/components/editor/ActivityBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA6GH;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB;;CA8C3B,CAAC;AAEH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC,CAiGA,CAAC;AAEF,eAAO,MAAM,WAAW;;CAuUtB,CAAC"}
|
|
@@ -17,7 +17,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
17
17
|
import { observer } from 'mobx-react-lite';
|
|
18
18
|
import { ACTIVITY_MODE, EDITOR_MODE, PANEL_MODE, USER_JOURNEYS, } from '../../stores/editor/EditorConfig.js';
|
|
19
19
|
import { LEGEND_STUDIO_TEST_ID } from '../../__lib__/LegendStudioTesting.js';
|
|
20
|
-
import { clsx,
|
|
20
|
+
import { clsx, ControlledDropdownMenu, RepoIcon, MenuContent, MenuContentItem, MenuContentItemBlankIcon, MenuContentItemLabel, GitPullRequestIcon, GitMergeIcon, CloudDownloadIcon, CogIcon, CodeBranchIcon, EmptyClockIcon, WrenchIcon, FileTrayIcon, MenuIcon, MenuContentDivider, FlaskIcon, RobotIcon, WorkflowIcon, ReadMeIcon, DevIcon, MoonIcon, SunIcon, } from '@finos/legend-art';
|
|
21
21
|
import { useEditorStore } from './EditorStoreProvider.js';
|
|
22
22
|
import { forwardRef, useEffect, useState } from 'react';
|
|
23
23
|
import { LEGEND_APPLICATION_COLOR_THEME, ReleaseLogManager, ReleaseNotesManager, VIRTUAL_ASSISTANT_TAB, } from '@finos/legend-application';
|
|
@@ -52,23 +52,11 @@ import { toggleShowcasePanel } from './ShowcaseSideBar.js';
|
|
|
52
52
|
import { useAuth } from 'react-oidc-context';
|
|
53
53
|
const SettingsMenu = observer(forwardRef(function SettingsMenu(props, ref) {
|
|
54
54
|
const editorStore = useEditorStore();
|
|
55
|
-
const applicationStore = useLegendStudioApplicationStore();
|
|
56
|
-
const { layoutService } = applicationStore;
|
|
57
55
|
const showDeveloperTool = () => {
|
|
58
56
|
editorStore.panelGroupDisplayState.open();
|
|
59
57
|
editorStore.setActivePanelMode(PANEL_MODE.DEV_TOOL);
|
|
60
58
|
};
|
|
61
|
-
|
|
62
|
-
layoutService.setColorTheme(key, { persist: true });
|
|
63
|
-
};
|
|
64
|
-
// Non-production themes (e.g. the in-progress light theme) are only exposed
|
|
65
|
-
// when the `NonProductionFeatureFlag` config option is on.
|
|
66
|
-
const showNonProductionThemes = applicationStore.config.options.NonProductionFeatureFlag;
|
|
67
|
-
return (_jsxs(MenuContent, { ref: ref, className: "activity-bar__setting__menu", children: [_jsxs(MenuContentItem, { onClick: showDeveloperTool, children: [_jsx(MenuContentItemBlankIcon, {}), _jsx(MenuContentItemLabel, { children: "Show Developer Tool" })] }), _jsx(MenuContentDivider, {}), _jsxs(MenuContentItem, { disabled: true, children: [_jsx(MenuContentItemBlankIcon, {}), _jsx(MenuContentItemLabel, { children: "Color Theme" })] }), layoutService.availableColorThemes
|
|
68
|
-
.filter((theme) => STUDIO_SUPPORTED_COLOR_THEMES.has(theme.key) &&
|
|
69
|
-
(showNonProductionThemes ||
|
|
70
|
-
!STUDIO_NON_PRODUCTION_COLOR_THEMES.has(theme.key)))
|
|
71
|
-
.map((theme) => (_jsxs(MenuContentItem, { onClick: () => selectColorTheme(theme.key), children: [theme.key === layoutService.currentColorTheme.key ? (_jsx(MenuContentItemIcon, { children: _jsx(CheckIcon, {}) })) : (_jsx(MenuContentItemBlankIcon, {})), _jsx(MenuContentItemLabel, { children: theme.name })] }, theme.key)))] }));
|
|
59
|
+
return (_jsx(MenuContent, { ref: ref, className: "activity-bar__setting__menu", children: _jsxs(MenuContentItem, { onClick: showDeveloperTool, children: [_jsx(MenuContentItemBlankIcon, {}), _jsx(MenuContentItemLabel, { children: "Show Developer Tool" })] }) }));
|
|
72
60
|
}));
|
|
73
61
|
const useOptionalAuth = () => {
|
|
74
62
|
try {
|
|
@@ -78,6 +66,39 @@ const useOptionalAuth = () => {
|
|
|
78
66
|
return undefined;
|
|
79
67
|
}
|
|
80
68
|
};
|
|
69
|
+
/**
|
|
70
|
+
* One-click toggle between the default dark and default light color themes,
|
|
71
|
+
* surfaced directly in the activity bar so users don't have to dig through the
|
|
72
|
+
* Settings menu to flip themes.
|
|
73
|
+
*
|
|
74
|
+
* The toggle only renders when both themes are actually exposed in the current
|
|
75
|
+
* environment (i.e. it respects the same `STUDIO_SUPPORTED_COLOR_THEMES` /
|
|
76
|
+
* `NonProductionFeatureFlag` gating as the Settings menu picker). This keeps
|
|
77
|
+
* the in-progress light theme hidden in production until it's stabilized.
|
|
78
|
+
*/
|
|
79
|
+
export const ColorThemeToggle = observer(() => {
|
|
80
|
+
const applicationStore = useLegendStudioApplicationStore();
|
|
81
|
+
const { layoutService } = applicationStore;
|
|
82
|
+
const showNonProductionThemes = applicationStore.config.options.NonProductionFeatureFlag;
|
|
83
|
+
const exposedThemeKeys = new Set(layoutService.availableColorThemes
|
|
84
|
+
.filter((theme) => STUDIO_SUPPORTED_COLOR_THEMES.has(theme.key) &&
|
|
85
|
+
(showNonProductionThemes ||
|
|
86
|
+
!STUDIO_NON_PRODUCTION_COLOR_THEMES.has(theme.key)))
|
|
87
|
+
.map((theme) => theme.key));
|
|
88
|
+
// Only show the toggle when both endpoints of the dark<->light flip are
|
|
89
|
+
// actually available; otherwise it would be a no-op control.
|
|
90
|
+
if (!exposedThemeKeys.has(LEGEND_APPLICATION_COLOR_THEME.DEFAULT_DARK) ||
|
|
91
|
+
!exposedThemeKeys.has(LEGEND_APPLICATION_COLOR_THEME.DEFAULT_LIGHT)) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
const isLight = layoutService.TEMPORARY__isLightColorThemeEnabled;
|
|
95
|
+
const toggleTheme = () => {
|
|
96
|
+
layoutService.setColorTheme(isLight
|
|
97
|
+
? LEGEND_APPLICATION_COLOR_THEME.DEFAULT_DARK
|
|
98
|
+
: LEGEND_APPLICATION_COLOR_THEME.DEFAULT_LIGHT, { persist: true });
|
|
99
|
+
};
|
|
100
|
+
return (_jsx("button", { className: "activity-bar__item", onClick: toggleTheme, tabIndex: -1, title: isLight ? 'Switch to dark theme' : 'Switch to light theme', children: isLight ? _jsx(MoonIcon, {}) : _jsx(SunIcon, {}) }));
|
|
101
|
+
});
|
|
81
102
|
export const ActivityBarMenu = ({ openShowcasePanel }) => {
|
|
82
103
|
const applicationStore = useLegendStudioApplicationStore();
|
|
83
104
|
const auth = useOptionalAuth();
|
|
@@ -259,7 +280,7 @@ export const ActivityBar = observer(() => {
|
|
|
259
280
|
}), onClick: changeActivity(activity.mode), tabIndex: -1, title: activity.title, children: activity.icon }, activity.mode))), Boolean(extraActivities.length) && _jsx(MenuContentDivider, {}), extraActivities.map((activity) => (_jsx("button", { className: clsx('activity-bar__item', {
|
|
260
281
|
'activity-bar__item--active': editorStore.sideBarDisplayState.isOpen &&
|
|
261
282
|
editorStore.activeActivity === activity.mode,
|
|
262
|
-
}), onClick: changeActivity(activity.mode), tabIndex: -1, title: activity.title, children: activity.icon }, activity.mode)))] }), _jsx("button", { className: clsx('activity-bar__item'), onClick: () => openShowcasePanel(), tabIndex: -1, title: 'Open Showcases', children: _jsx(ReadMeIcon, {}) }), _jsx(ControlledDropdownMenu, { className: "activity-bar__item", title: "Settings", content: _jsx(SettingsMenu, {}), menuProps: {
|
|
283
|
+
}), onClick: changeActivity(activity.mode), tabIndex: -1, title: activity.title, children: activity.icon }, activity.mode)))] }), _jsx("button", { className: clsx('activity-bar__item'), onClick: () => openShowcasePanel(), tabIndex: -1, title: 'Open Showcases', children: _jsx(ReadMeIcon, {}) }), _jsx(ColorThemeToggle, {}), _jsx(ControlledDropdownMenu, { className: "activity-bar__item", title: "Settings", content: _jsx(SettingsMenu, {}), menuProps: {
|
|
263
284
|
anchorOrigin: { vertical: 'bottom', horizontal: 'right' },
|
|
264
285
|
transformOrigin: { vertical: 'bottom', horizontal: 'left' },
|
|
265
286
|
elevation: 7,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityBar.js","sourceRoot":"","sources":["../../../src/components/editor/ActivityBar.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ActivityBar.js","sourceRoot":"","sources":["../../../src/components/editor/ActivityBar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { type AccessPointGroupState, type AccessPointState, LakehouseAccessPointState, ModelAccessPointGroupState } from '../../../../stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js';
|
|
17
|
+
import type { AccessPointMeta } from '../../../../stores/extensions/DSL_DataProduct_LegendStudioApplicationPlugin_Extension.js';
|
|
17
18
|
export declare enum AP_GROUP_MODAL_ERRORS {
|
|
18
19
|
GROUP_NAME_EMPTY = "Group Name is empty",
|
|
19
20
|
GROUP_NAME_EXISTS = "Group Name already exists",
|
|
@@ -32,6 +33,7 @@ export type APGDragSource = {
|
|
|
32
33
|
export declare const LakehouseDataProductAccessPointEditor: ((props: {
|
|
33
34
|
accessPointState: LakehouseAccessPointState;
|
|
34
35
|
isReadOnly: boolean;
|
|
36
|
+
aiSuggestionMeta?: AccessPointMeta | undefined;
|
|
35
37
|
}) => import("react/jsx-runtime").JSX.Element) & {
|
|
36
38
|
displayName: string;
|
|
37
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataProductEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/editor/editor-group/dataProduct/DataProductEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EAIrB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,mGAAmG,CAAC;AAmL3G,oBAAY,qBAAqB;IAC/B,gBAAgB,wBAAwB;IACxC,iBAAiB,8BAA8B;IAC/C,uBAAuB,+BAA+B;IACtD,aAAa,+BAA+B;IAC5C,cAAc,qCAAqC;IACnD,oBAAoB,sCAAsC;CAC3D;AAED,eAAO,MAAM,qBAAqB,+DAC4B,CAAC;AAK/D,MAAM,MAAM,qBAAqB,GAAG;IAClC,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,qBAAqB,CAAC;CACnC,CAAC;
|
|
1
|
+
{"version":3,"file":"DataProductEditor.d.ts","sourceRoot":"","sources":["../../../../../src/components/editor/editor-group/dataProduct/DataProductEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EAIrB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,mGAAmG,CAAC;AAmL3G,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,0FAA0F,CAAC;AAElG,oBAAY,qBAAqB;IAC/B,gBAAgB,wBAAwB;IACxC,iBAAiB,8BAA8B;IAC/C,uBAAuB,+BAA+B;IACtD,aAAa,+BAA+B;IAC5C,cAAc,qCAAqC;IACnD,oBAAoB,sCAAsC;CAC3D;AAED,eAAO,MAAM,qBAAqB,+DAC4B,CAAC;AAK/D,MAAM,MAAM,qBAAqB,GAAG;IAClC,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,qBAAqB,CAAC;CACnC,CAAC;AAgeF,eAAO,MAAM,qCAAqC,WACxC;IACN,gBAAgB,EAAE,yBAAyB,CAAC;IAC5C,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CAChD;;CAokBF,CAAC;AA0FF,eAAO,MAAM,wBAAwB,WAC3B;IAAE,UAAU,EAAE,0BAA0B,CAAA;CAAE;;CAuKnD,CAAC;AAEF,eAAO,MAAM,sBAAsB,WACzB;IAAE,UAAU,EAAE,0BAA0B,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE;;CAkGxE,CAAC;AAm1DF,eAAO,MAAM,iBAAiB;;CAsK5B,CAAC"}
|
|
@@ -17,11 +17,11 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
17
17
|
import { observer } from 'mobx-react-lite';
|
|
18
18
|
import { useEditorStore } from '../../EditorStoreProvider.js';
|
|
19
19
|
import { DATA_PRODUCT_TAB, DATA_PRODUCT_TYPE, DataProductEditorState, LakehouseAccessPointState, ModelAccessPointGroupState, } from '../../../../stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js';
|
|
20
|
-
import { BugIcon, BuildingIcon, CaretDownIcon, Checkbox, CloseEyeIcon, clsx, compressImage, ControlledDropdownMenu, CustomSelectorInput, Dialog, DragPreviewLayer, ErrorWarnIcon, EyeIcon, GroupWorkIcon, HomeIcon, IconSelectorGrid, IconSelectorIcons, InfoCircleIcon, ListEditor, LockIcon, MenuContent, MenuContentItem, Modal, ModalBody, ModalFooter, ModalFooterButton, ModalHeader, ModalTitle, PanelContent, PanelDnDEntry, PanelEntryDragHandle, PanelFormTextField, PanelHeader, PanelHeaderActionItem, PanelHeaderActions, PencilEditIcon, PlusIcon, QuestionCircleIcon, ResizablePanel, ResizablePanelGroup, ResizablePanelSplitter, Switch, TimesIcon, Tooltip, UploadIcon, useDragPreviewLayer, WarningIcon, LongArrowRightIcon, PURE_MappingIcon, GitBranchIcon, ListIcon, PanelLoadingIndicator, GearSuggestIcon, FlaskIcon, } from '@finos/legend-art';
|
|
20
|
+
import { BugIcon, BuildingIcon, CaretDownIcon, Checkbox, CloseEyeIcon, clsx, compressImage, ControlledDropdownMenu, CustomSelectorInput, Dialog, DragPreviewLayer, ErrorWarnIcon, EyeIcon, GroupWorkIcon, HomeIcon, IconSelectorGrid, IconSelectorIcons, InfoCircleIcon, ListEditor, LockIcon, MenuContent, MenuContentItem, Modal, ModalBody, ModalFooter, ModalFooterButton, ModalHeader, ModalTitle, PanelContent, PanelDnDEntry, PanelEntryDragHandle, PanelFormTextField, PanelHeader, PanelHeaderActionItem, PanelHeaderActions, PencilEditIcon, PlusIcon, QuestionCircleIcon, ResizablePanel, ResizablePanelGroup, ResizablePanelSplitter, Switch, TimesIcon, Tooltip, UploadIcon, useDragPreviewLayer, WarningIcon, LongArrowRightIcon, PURE_MappingIcon, GitBranchIcon, ListIcon, PanelLoadingIndicator, GearSuggestIcon, FlaskIcon, SparkleIcon, } from '@finos/legend-art';
|
|
21
21
|
import { useCallback, useEffect, useLayoutEffect, useRef, useState, } from 'react';
|
|
22
22
|
import { assertErrorThrown, filterByType, guaranteeNonNullable, guaranteeType, isNonNullable, UserSearchService, } from '@finos/legend-shared';
|
|
23
23
|
import { AccessorQueryBuilderState, getCompatibleRuntimesFromAccessorOwner, InlineLambdaEditor, LineageViewer, QueryBuilderActionConfig, QueryBuilderAdvancedWorkflowState, } from '@finos/legend-query-builder';
|
|
24
|
-
import { action, autorun, flowResult } from 'mobx';
|
|
24
|
+
import { action, autorun, flowResult, runInAction } from 'mobx';
|
|
25
25
|
import { DataProductTestableEditor } from './testable/DataProductTestableEditor.js';
|
|
26
26
|
import { CODE_EDITOR_LANGUAGE } from '@finos/legend-code-editor';
|
|
27
27
|
import { CodeEditor } from '@finos/legend-lego/code-editor';
|
|
@@ -55,7 +55,7 @@ const hoverIcon = () => {
|
|
|
55
55
|
return (_jsx("div", { "data-testid": LEGEND_STUDIO_TEST_ID.HOVER_EDIT_ICON, children: _jsx(PencilEditIcon, {}) }));
|
|
56
56
|
};
|
|
57
57
|
const AccessPointTitle = observer((props) => {
|
|
58
|
-
const { accessPointState } = props;
|
|
58
|
+
const { accessPointState, aiSuggestionMeta } = props;
|
|
59
59
|
const accessPoint = accessPointState.accessPoint;
|
|
60
60
|
const [editingName, setEditingName] = useState(accessPoint.id === newNamePlaceholder);
|
|
61
61
|
const handleNameEdit = () => setEditingName(true);
|
|
@@ -73,11 +73,11 @@ const AccessPointTitle = observer((props) => {
|
|
|
73
73
|
accessPoint.id = event.target.value;
|
|
74
74
|
}
|
|
75
75
|
});
|
|
76
|
-
return editingName ? (_jsx("textarea", { className: "access-point-editor__name", spellCheck: false, value: accessPoint.id, onChange: updateAccessPointName, placeholder: 'Access Point Name', onBlur: handleNameBlur, style: {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
76
|
+
return (_jsxs("div", { style: { flex: '1 1 auto', minWidth: 0 }, children: [editingName ? (_jsx("textarea", { className: "access-point-editor__name", spellCheck: false, value: accessPoint.id, onChange: updateAccessPointName, placeholder: 'Access Point Name', onBlur: handleNameBlur, style: {
|
|
77
|
+
borderColor: accessPoint.id === newNamePlaceholder
|
|
78
|
+
? 'var(--color-red-300)'
|
|
79
|
+
: 'transparent',
|
|
80
|
+
} })) : (_jsx("div", { className: "access-point-editor__name__label", onClick: handleNameEdit, title: "Click to edit access point name", children: accessPoint.id })), aiSuggestionMeta && (_jsx("div", { className: "data-product-editor__ai-suggestion-inline", children: aiSuggestionMeta.name }))] }));
|
|
81
81
|
});
|
|
82
82
|
const AccessPointClassification = observer((props) => {
|
|
83
83
|
const { accessPoint, groupState } = props;
|
|
@@ -243,7 +243,7 @@ const SampleValuesEditorModal = observer((props) => {
|
|
|
243
243
|
}, children: _jsx(RelationElementEditor, { relationElementState: accessPointState.relationElementState, isReadOnly: isReadOnly, hideColumnDefinitions: true }) }) }))] })) }) }), _jsxs(ModalFooter, { children: [dataElementPath === undefined && (_jsx(ModalFooterButton, { title: "Delete sample values", onClick: handleDeleteSampleValues, text: "Delete", type: "secondary", disabled: isReadOnly })), _jsx(ModalFooterButton, { title: "Close sample values editor", onClick: closeModal, text: "Close", type: "secondary" })] })] }) }));
|
|
244
244
|
});
|
|
245
245
|
export const LakehouseDataProductAccessPointEditor = observer((props) => {
|
|
246
|
-
const { accessPointState } = props;
|
|
246
|
+
const { accessPointState, aiSuggestionMeta } = props;
|
|
247
247
|
const editorStore = useEditorStore();
|
|
248
248
|
const accessPoint = accessPointState.accessPoint;
|
|
249
249
|
const groupState = accessPointState.state;
|
|
@@ -379,7 +379,7 @@ export const LakehouseDataProductAccessPointEditor = observer((props) => {
|
|
|
379
379
|
});
|
|
380
380
|
return (_jsx(PanelDnDEntry, { ref: ref, placeholder: _jsx("div", { className: "dnd__placeholder--light" }), showPlaceholder: isBeingDragged, children: _jsxs("div", { className: clsx('access-point-editor', {
|
|
381
381
|
backdrop__element: propertyHasParserError,
|
|
382
|
-
}), children: [_jsx(PanelEntryDragHandle, { dragSourceConnector: ref, isDragging: isBeingDragged, title: 'Drag this Access Point to another group', className: "access-point-editor__dnd-handle" }), _jsxs("div", { style: { flex: 1 }, children: [_jsxs("div", { className: "access-point-editor__metadata", children: [_jsx(AccessPointTitle, { accessPointState: accessPointState }), _jsxs("div", { className: "access-point-editor__info", children: [_jsxs("div", { className: "access-point-editor__reproducible", children: [_jsx(Checkbox, { disabled: groupState.state.isReadOnly, checked: accessPoint.reproducible ?? false, onChange: () => accessPoint_setReproducible(accessPoint, !accessPoint.reproducible), size: "small", style: { padding: 0, margin: 0 } }), _jsx(Tooltip, { title: _jsx("div", { style: {
|
|
382
|
+
}), children: [_jsx(PanelEntryDragHandle, { dragSourceConnector: ref, isDragging: isBeingDragged, title: 'Drag this Access Point to another group', className: "access-point-editor__dnd-handle" }), _jsxs("div", { style: { flex: 1 }, children: [_jsxs("div", { className: "access-point-editor__metadata", children: [_jsx(AccessPointTitle, { accessPointState: accessPointState, aiSuggestionMeta: aiSuggestionMeta }), _jsxs("div", { className: "access-point-editor__info", children: [_jsxs("div", { className: "access-point-editor__reproducible", children: [_jsx(Checkbox, { disabled: groupState.state.isReadOnly, checked: accessPoint.reproducible ?? false, onChange: () => accessPoint_setReproducible(accessPoint, !accessPoint.reproducible), size: "small", style: { padding: 0, margin: 0 } }), _jsx(Tooltip, { title: _jsx("div", { style: {
|
|
383
383
|
maxWidth: '400px',
|
|
384
384
|
whiteSpace: 'normal',
|
|
385
385
|
wordWrap: 'break-word',
|
|
@@ -431,13 +431,13 @@ export const LakehouseDataProductAccessPointEditor = observer((props) => {
|
|
|
431
431
|
}, children: _jsx(ListIcon, {}) }) })] })] }), editingTitle ? (_jsx("textarea", { className: "access-point-editor__name", spellCheck: false, value: accessPoint.title, onChange: (event) => accessPoint_setTitle(accessPoint, event.target.value), placeholder: 'Access Point Title', onBlur: handleTitleBlur, style: {
|
|
432
432
|
borderColor: 'transparent',
|
|
433
433
|
margin: '0.5rem',
|
|
434
|
-
} })) : (_jsxs("div", { onClick: handleTitleEdit, title: "Click to edit access point title", className: "access-point-editor__description-container", children: [accessPoint.title ? (_jsx(HoverTextArea, { text: accessPoint.title, handleMouseOver: handleMouseOverTitle, handleMouseOut: handleMouseOutTitle, className: "access-point-editor__title" })) : (_jsxs("div", { className: "access-point-editor__group-container__description--warning", onMouseOver: handleMouseOverTitle, onMouseOut: handleMouseOutTitle, style: { fontSize: '15px' }, children: [_jsx(ErrorWarnIcon, {}), "Provide a title for this Access Point"] })), isHoveringTitle && hoverIcon()] })), editingDescription ? (_jsx("textarea", { className: "panel__content__form__section__input", spellCheck: false, value: accessPoint.description ?? '', onChange: (event) => accessPoint_setDescription(accessPoint, event.target.value), placeholder: "Access Point description", onBlur: handleDescriptionBlur, style: {
|
|
434
|
+
} })) : (_jsxs("div", { onClick: handleTitleEdit, title: "Click to edit access point title", className: "access-point-editor__description-container", children: [accessPoint.title ? (_jsx(HoverTextArea, { text: accessPoint.title, handleMouseOver: handleMouseOverTitle, handleMouseOut: handleMouseOutTitle, className: "access-point-editor__title" })) : (_jsxs("div", { className: "access-point-editor__group-container__description--warning", onMouseOver: handleMouseOverTitle, onMouseOut: handleMouseOutTitle, style: { fontSize: '15px' }, children: [_jsx(ErrorWarnIcon, {}), "Provide a title for this Access Point"] })), isHoveringTitle && hoverIcon()] })), aiSuggestionMeta && (_jsx("div", { className: "data-product-editor__ai-suggestion-inline", children: aiSuggestionMeta.title })), editingDescription ? (_jsx("textarea", { className: "panel__content__form__section__input", spellCheck: false, value: accessPoint.description ?? '', onChange: (event) => accessPoint_setDescription(accessPoint, event.target.value), placeholder: "Access Point description", onBlur: handleDescriptionBlur, style: {
|
|
435
435
|
resize: 'vertical',
|
|
436
436
|
padding: '0.25rem',
|
|
437
437
|
marginLeft: '0.5rem',
|
|
438
438
|
marginTop: '0.5rem',
|
|
439
439
|
height: 'auto',
|
|
440
|
-
} })) : (_jsxs("div", { onClick: handleDescriptionEdit, title: "Click to edit access point description", className: "access-point-editor__description-container", children: [accessPoint.description ? (_jsx(HoverTextArea, { text: accessPoint.description, handleMouseOver: handleMouseOverDesc, handleMouseOut: handleMouseOutDesc })) : (_jsxs("div", { className: "access-point-editor__group-container__description--warning", onMouseOver: handleMouseOverDesc, onMouseOut: handleMouseOutDesc, children: [_jsx(ErrorWarnIcon, {}), AP_EMPTY_DESC_WARNING] })), isHoveringDesc && hoverIcon()] })), _jsx("div", { className: "access-point-editor__content", children: _jsx("div", { className: "access-point-editor__generic-entry", children: _jsx("div", { className: "access-point-editor__entry__container", children: _jsxs("div", { className: "access-point-editor__entry", children: [_jsxs("button", { className: "access-point-editor__query-builder-btn", onClick: editLambdaInQueryBuilder, disabled: props.isReadOnly, title: "Edit lambda with query builder", children: [_jsx(PencilEditIcon, {}), _jsx("span", { children: "Query Builder" })] }), _jsx(InlineLambdaEditor, { className: 'access-point-editor__lambda-editor', disabled: lambdaEditorState.val.state.state
|
|
440
|
+
} })) : (_jsxs("div", { onClick: handleDescriptionEdit, title: "Click to edit access point description", className: "access-point-editor__description-container", children: [accessPoint.description ? (_jsx(HoverTextArea, { text: accessPoint.description, handleMouseOver: handleMouseOverDesc, handleMouseOut: handleMouseOutDesc })) : (_jsxs("div", { className: "access-point-editor__group-container__description--warning", onMouseOver: handleMouseOverDesc, onMouseOut: handleMouseOutDesc, children: [_jsx(ErrorWarnIcon, {}), AP_EMPTY_DESC_WARNING] })), isHoveringDesc && hoverIcon()] })), aiSuggestionMeta && (_jsx("div", { className: "data-product-editor__ai-suggestion-inline", children: aiSuggestionMeta.description })), _jsx("div", { className: "access-point-editor__content", children: _jsx("div", { className: "access-point-editor__generic-entry", children: _jsx("div", { className: "access-point-editor__entry__container", children: _jsxs("div", { className: "access-point-editor__entry", children: [_jsxs("button", { className: "access-point-editor__query-builder-btn", onClick: editLambdaInQueryBuilder, disabled: props.isReadOnly, title: "Edit lambda with query builder", children: [_jsx(PencilEditIcon, {}), _jsx("span", { children: "Query Builder" })] }), _jsx(InlineLambdaEditor, { className: 'access-point-editor__lambda-editor', disabled: lambdaEditorState.val.state.state
|
|
441
441
|
.isConvertingTransformLambdaObjects, lambdaEditorState: lambdaEditorState, forceBackdrop: Boolean(lambdaEditorState.parserError), onEditorBlur: handleEditorBlur })] }) }) }) }), _jsx(LineageViewer, { lineageState: accessPointState.lineageState })] }), _jsx("button", { className: "access-point-editor__generic-entry__remove-btn", onClick: () => {
|
|
442
442
|
handleRemoveAccessPoint();
|
|
443
443
|
}, tabIndex: -1, title: "Remove", children: _jsx(TimesIcon, {}) }), accessPointState.artifactGenerationContent && (_jsx(AccessPointGenerationViewer, { accessPointState: accessPointState, generationOutput: accessPointState.artifactGenerationContent })), accessPointState.showSampleValuesModal && (_jsx(SampleValuesEditorModal, { accessPointState: accessPointState, isReadOnly: props.isReadOnly }))] }) }));
|
|
@@ -588,6 +588,8 @@ const AccessPointGroupEditor = observer((props) => {
|
|
|
588
588
|
const [isHoveringName, setIsHoveringName] = useState(false);
|
|
589
589
|
const [editingTitle, setEditingTitle] = useState(false);
|
|
590
590
|
const [isHoveringTitle, setIsHoveringTitle] = useState(false);
|
|
591
|
+
const [isSuggestingWithAI, setIsSuggestingWithAI] = useState(false);
|
|
592
|
+
const [aiSuggestion, setAISuggestion] = useState(undefined);
|
|
591
593
|
const handleDescriptionEdit = () => setEditingDescription(true);
|
|
592
594
|
const handleDescriptionBlur = () => {
|
|
593
595
|
setEditingDescription(false);
|
|
@@ -634,6 +636,64 @@ const AccessPointGroupEditor = observer((props) => {
|
|
|
634
636
|
const updateGroupTitle = (val) => {
|
|
635
637
|
accessPointGroup_setTitle(groupState.value, val);
|
|
636
638
|
};
|
|
639
|
+
// AI suggestion for APG
|
|
640
|
+
const legendAIUrl = editorStore.applicationStore.config.legendAIUrl;
|
|
641
|
+
const aiDocSuggester = legendAIUrl
|
|
642
|
+
? editorStore.pluginManager
|
|
643
|
+
.getApplicationPlugins()
|
|
644
|
+
.map((p) => p.getExtraDataProductDocumentationAISuggester?.bind(p))
|
|
645
|
+
.find(Boolean)
|
|
646
|
+
: undefined;
|
|
647
|
+
const suggestWithAI = async () => {
|
|
648
|
+
if (!aiDocSuggester || !legendAIUrl) {
|
|
649
|
+
return;
|
|
650
|
+
}
|
|
651
|
+
setIsSuggestingWithAI(true);
|
|
652
|
+
setAISuggestion(undefined);
|
|
653
|
+
try {
|
|
654
|
+
const definitions = await editorStore.graphManagerState.graphManager.graphToPureCode(editorStore.graphManagerState.graph);
|
|
655
|
+
const product = productEditorState.product;
|
|
656
|
+
const suggestion = await aiDocSuggester({ definitions, data_product_name: product.path }, legendAIUrl);
|
|
657
|
+
runInAction(() => {
|
|
658
|
+
setAISuggestion(suggestion);
|
|
659
|
+
});
|
|
660
|
+
}
|
|
661
|
+
finally {
|
|
662
|
+
runInAction(() => {
|
|
663
|
+
setIsSuggestingWithAI(false);
|
|
664
|
+
});
|
|
665
|
+
}
|
|
666
|
+
};
|
|
667
|
+
const applyAISuggestion = () => {
|
|
668
|
+
if (!aiSuggestion) {
|
|
669
|
+
return;
|
|
670
|
+
}
|
|
671
|
+
// Find matching group in the response
|
|
672
|
+
const gIdx = productEditorState.accessPointGroupStates.indexOf(groupState);
|
|
673
|
+
const groupMeta = aiSuggestion.access_point_groups.find((g) => g.name === groupState.value.id) ?? aiSuggestion.access_point_groups[gIdx];
|
|
674
|
+
if (groupMeta) {
|
|
675
|
+
accessPointGroup_setTitle(groupState.value, groupMeta.title);
|
|
676
|
+
accessPointGroup_setDescription(groupState.value, groupMeta.description);
|
|
677
|
+
}
|
|
678
|
+
// Apply access point metadata for this group
|
|
679
|
+
const apMetas = aiSuggestion.access_points.filter((ap) => ap.group === (groupMeta?.name ?? groupState.value.id));
|
|
680
|
+
for (let j = 0; j < apMetas.length && j < groupState.value.accessPoints.length; j++) {
|
|
681
|
+
const apMeta = apMetas[j];
|
|
682
|
+
const ap = groupState.value.accessPoints[j];
|
|
683
|
+
// Convert suggested name to valid identifier (alphanumeric + underscore)
|
|
684
|
+
const sanitizedName = apMeta.name.replace(/[^0-9a-zA-Z_]/g, '_');
|
|
685
|
+
if (sanitizedName) {
|
|
686
|
+
ap.id = sanitizedName;
|
|
687
|
+
}
|
|
688
|
+
accessPoint_setTitle(ap, apMeta.title);
|
|
689
|
+
accessPoint_setDescription(ap, apMeta.description);
|
|
690
|
+
}
|
|
691
|
+
setAISuggestion(undefined);
|
|
692
|
+
};
|
|
693
|
+
// Computed AI suggestion for current group
|
|
694
|
+
const groupIndex = productEditorState.accessPointGroupStates.indexOf(groupState);
|
|
695
|
+
const aiGroupMeta = aiSuggestion?.access_point_groups.find((g) => g.name === groupState.value.id) ?? aiSuggestion?.access_point_groups[groupIndex];
|
|
696
|
+
const aiAccessPointMetas = aiSuggestion?.access_points.filter((ap) => ap.group === (aiGroupMeta?.name ?? groupState.value.id));
|
|
637
697
|
const handleRemoveAccessPointGroup = () => {
|
|
638
698
|
editorStore.applicationStore.alertService.setActionAlertInfo({
|
|
639
699
|
message: groupState instanceof ModelAccessPointGroupState
|
|
@@ -669,18 +729,20 @@ const AccessPointGroupEditor = observer((props) => {
|
|
|
669
729
|
borderWidth: 'thin',
|
|
670
730
|
} })) : (_jsxs("div", { onClick: handleNameEdit, title: "Click to edit group name", className: "access-point-editor__group-container__name", children: [_jsx(HoverTextArea, { text: groupState.value.id, handleMouseOver: handleMouseOverName, handleMouseOut: handleMouseOutName, className: "access-point-editor__group-container__name" }), isHoveringName && hoverIcon()] })), _jsx("button", { className: "access-point-editor__generic-entry__remove-btn--group", onClick: () => {
|
|
671
731
|
handleRemoveAccessPointGroup();
|
|
672
|
-
}, tabIndex: -1, title: "Remove Access Point Group", children: _jsx(TimesIcon, {}) })] }), _jsx("div", { className: "
|
|
732
|
+
}, tabIndex: -1, title: "Remove Access Point Group", children: _jsx(TimesIcon, {}) })] }), aiDocSuggester && (_jsxs("div", { style: { padding: '0.25rem 0.5rem' }, children: [_jsx(PanelLoadingIndicator, { isLoading: isSuggestingWithAI }), aiSuggestion ? (_jsxs("div", { className: "data-product-editor__ai-suggestion__actions", children: [_jsx("button", { className: "btn btn--dark data-product-editor__ai-suggestion__apply-btn", onClick: applyAISuggestion, title: "Apply AI-generated title, description, and access point metadata for this group", children: "Apply" }), _jsx("button", { className: "btn data-product-editor__ai-suggestion__dismiss-btn", onClick: () => setAISuggestion(undefined), children: "Dismiss" }), _jsxs("span", { className: "data-product-editor__ai-suggestion-badge", children: [_jsx(SparkleIcon, {}), "AI Suggestion"] })] })) : (_jsxs("button", { className: "data-product-editor__ai-suggest-btn", onClick: () => {
|
|
733
|
+
suggestWithAI().catch(editorStore.applicationStore.alertUnhandledError);
|
|
734
|
+
}, disabled: isSuggestingWithAI || isReadOnly, title: "Use AI to suggest title and descriptions for this access point group", children: [_jsx(SparkleIcon, {}), _jsx("span", { children: isSuggestingWithAI ? 'Suggesting...' : 'Suggest with AI' })] }))] })), _jsx("div", { className: "access-point-editor__group-container__name-editor", children: editingTitle ? (_jsx("textarea", { className: "panel__content__form__section__input", spellCheck: false, value: groupState.value.title, onChange: (event) => updateGroupTitle(event.target.value), placeholder: "Access Point Group Title", onBlur: handleTitleBlur, style: {
|
|
673
735
|
overflow: 'hidden',
|
|
674
736
|
resize: 'none',
|
|
675
737
|
padding: '0.25rem',
|
|
676
738
|
margin: '0.5rem 0.5rem 0.5rem 0rem',
|
|
677
|
-
} })) : (_jsxs("div", { onClick: handleTitleEdit, title: "Click to edit group title", className: "access-point-editor__group-container__description", children: [groupState.value.title ? (_jsx(HoverTextArea, { text: groupState.value.title, handleMouseOver: handleMouseOverTitle, handleMouseOut: handleMouseOutTitle, className: "access-point-editor__group-container__title" })) : (_jsxs("div", { className: "access-point-editor__group-container__description--warning", onMouseOver: handleMouseOverTitle, onMouseOut: handleMouseOutTitle, style: { fontSize: '15px' }, children: [_jsx(ErrorWarnIcon, {}), "Provide a title for this Access Point Group"] })), isHoveringTitle && hoverIcon()] })) }), _jsx("div", { className: "access-point-editor__group-container__description-editor", children: editingDescription ? (_jsx("textarea", { className: "panel__content__form__section__input", spellCheck: false, value: groupState.value.description ?? '', onChange: (event) => updateGroupDescription(event.target.value), placeholder: "Provide a description for this Access Point Group", onBlur: handleDescriptionBlur, style: {
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
739
|
+
} })) : (_jsxs("div", { onClick: handleTitleEdit, title: "Click to edit group title", className: "access-point-editor__group-container__description", children: [groupState.value.title ? (_jsx(HoverTextArea, { text: groupState.value.title, handleMouseOver: handleMouseOverTitle, handleMouseOut: handleMouseOutTitle, className: "access-point-editor__group-container__title" })) : (_jsxs("div", { className: "access-point-editor__group-container__description--warning", onMouseOver: handleMouseOverTitle, onMouseOut: handleMouseOutTitle, style: { fontSize: '15px' }, children: [_jsx(ErrorWarnIcon, {}), "Provide a title for this Access Point Group"] })), isHoveringTitle && hoverIcon()] })) }), aiGroupMeta && (_jsx("div", { className: "data-product-editor__ai-suggestion-inline", children: aiGroupMeta.title })), _jsxs("div", { className: "access-point-editor__group-container__description-editor", children: [editingDescription ? (_jsx("textarea", { className: "panel__content__form__section__input", spellCheck: false, value: groupState.value.description ?? '', onChange: (event) => updateGroupDescription(event.target.value), placeholder: "Provide a description for this Access Point Group", onBlur: handleDescriptionBlur, style: {
|
|
740
|
+
overflow: 'hidden',
|
|
741
|
+
padding: '0.25rem',
|
|
742
|
+
height: 'auto',
|
|
743
|
+
} })) : (_jsxs("div", { onClick: handleDescriptionEdit, title: "Click to edit group description", className: "access-point-editor__description-container", children: [groupState.value.description ? (_jsx(HoverTextArea, { text: groupState.value.description, handleMouseOver: handleMouseOverDescription, handleMouseOut: handleMouseOutDescription, className: "access-point-editor__group-container__description" })) : (_jsxs("div", { className: "access-point-editor__group-container__description--warning", onMouseOver: handleMouseOverDescription, onMouseOut: handleMouseOutDescription, children: [_jsx(ErrorWarnIcon, {}), "Users request access at the access point group level. Click here to add a meaningful description to guide users."] })), isHoveringDescription && hoverIcon()] })), aiGroupMeta && (_jsx("div", { className: "data-product-editor__ai-suggestion-inline", children: aiGroupMeta.description }))] }), editorStore.applicationStore.config.options.dataProductConfig && (_jsx(AccessPointGroupPublicToggle, { groupState: groupState })), groupState instanceof ModelAccessPointGroupState ? (_jsx(ModelAccessPointGroupEditor, { groupState: groupState, isReadOnly: isReadOnly })) : (_jsxs(_Fragment, { children: [_jsxs(PanelHeader, { className: "panel__header--access-point", children: [_jsx("div", { className: "panel__header__title", children: "Access Points" }), _jsx(PanelHeaderActions, { children: _jsx(PanelHeaderActionItem, { className: "panel__header__action", onClick: handleAddAccessPoint, title: "Create new access point", children: _jsx(PlusIcon, {}) }) })] }), groupState.accessPointStates.length === 0 && (_jsxs("div", { className: "access-point-editor__group-container__description--warning", style: { color: 'var(--color-red-300)' }, children: [_jsx(WarningIcon, {}), "This group needs at least one access point defined."] })), _jsx("div", { style: { gap: '1rem', display: 'flex', flexDirection: 'column' }, children: groupState.accessPointStates
|
|
682
744
|
.filter(filterByType(LakehouseAccessPointState))
|
|
683
|
-
.map((apState) => (_jsx(LakehouseDataProductAccessPointEditor, { isReadOnly: isReadOnly, accessPointState: apState }, apState.uuid))) })] }))] }));
|
|
745
|
+
.map((apState, idx) => (_jsx(LakehouseDataProductAccessPointEditor, { isReadOnly: isReadOnly, accessPointState: apState, aiSuggestionMeta: aiAccessPointMetas?.[idx] }, apState.uuid))) })] }))] }));
|
|
684
746
|
});
|
|
685
747
|
const GroupTabRenderer = observer((props) => {
|
|
686
748
|
const { group, dataProductEditorState } = props;
|