@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.
Files changed (40) hide show
  1. package/lib/components/editor/ActivityBar.d.ts +13 -0
  2. package/lib/components/editor/ActivityBar.d.ts.map +1 -1
  3. package/lib/components/editor/ActivityBar.js +36 -15
  4. package/lib/components/editor/ActivityBar.js.map +1 -1
  5. package/lib/components/editor/editor-group/dataProduct/DataProductEditor.d.ts +2 -0
  6. package/lib/components/editor/editor-group/dataProduct/DataProductEditor.d.ts.map +1 -1
  7. package/lib/components/editor/editor-group/dataProduct/DataProductEditor.js +81 -19
  8. package/lib/components/editor/editor-group/dataProduct/DataProductEditor.js.map +1 -1
  9. package/lib/components/editor/editor-group/service-editor/ServiceEditor.d.ts.map +1 -1
  10. package/lib/components/editor/editor-group/service-editor/ServiceEditor.js +4 -1
  11. package/lib/components/editor/editor-group/service-editor/ServiceEditor.js.map +1 -1
  12. package/lib/components/workspace-setup/WorkspaceSetup.d.ts.map +1 -1
  13. package/lib/components/workspace-setup/WorkspaceSetup.js +20 -3
  14. package/lib/components/workspace-setup/WorkspaceSetup.js.map +1 -1
  15. package/lib/index.css +2 -2
  16. package/lib/index.css.map +1 -1
  17. package/lib/index.d.ts +1 -0
  18. package/lib/index.d.ts.map +1 -1
  19. package/lib/index.js +1 -0
  20. package/lib/index.js.map +1 -1
  21. package/lib/package.json +1 -1
  22. package/lib/stores/extensions/DSL_DataProduct_LegendStudioApplicationPlugin_Extension.d.ts +61 -0
  23. package/lib/stores/extensions/DSL_DataProduct_LegendStudioApplicationPlugin_Extension.d.ts.map +1 -0
  24. package/lib/stores/extensions/DSL_DataProduct_LegendStudioApplicationPlugin_Extension.js +17 -0
  25. package/lib/stores/extensions/DSL_DataProduct_LegendStudioApplicationPlugin_Extension.js.map +1 -0
  26. package/lib/stores/extensions/DSL_Service_LegendStudioApplicationPlugin_Extension.d.ts +2 -2
  27. package/lib/stores/extensions/DSL_Service_LegendStudioApplicationPlugin_Extension.d.ts.map +1 -1
  28. package/lib/stores/workspace-setup/WorkspaceSetupStore.d.ts.map +1 -1
  29. package/lib/stores/workspace-setup/WorkspaceSetupStore.js +6 -2
  30. package/lib/stores/workspace-setup/WorkspaceSetupStore.js.map +1 -1
  31. package/package.json +12 -12
  32. package/src/components/editor/ActivityBar.tsx +61 -38
  33. package/src/components/editor/editor-group/dataProduct/DataProductEditor.tsx +207 -29
  34. package/src/components/editor/editor-group/service-editor/ServiceEditor.tsx +5 -1
  35. package/src/components/workspace-setup/WorkspaceSetup.tsx +27 -2
  36. package/src/index.ts +1 -0
  37. package/src/stores/extensions/DSL_DataProduct_LegendStudioApplicationPlugin_Extension.ts +77 -0
  38. package/src/stores/extensions/DSL_Service_LegendStudioApplicationPlugin_Extension.ts +1 -2
  39. package/src/stores/workspace-setup/WorkspaceSetupStore.ts +5 -0
  40. 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;AAiJH,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC,CAiGA,CAAC;AAEF,eAAO,MAAM,WAAW;;CAsUtB,CAAC"}
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, CheckIcon, ControlledDropdownMenu, RepoIcon, MenuContent, MenuContentItem, MenuContentItemBlankIcon, MenuContentItemIcon, MenuContentItemLabel, GitPullRequestIcon, GitMergeIcon, CloudDownloadIcon, CogIcon, CodeBranchIcon, EmptyClockIcon, WrenchIcon, FileTrayIcon, MenuIcon, MenuContentDivider, FlaskIcon, RobotIcon, WorkflowIcon, ReadMeIcon, DevIcon, } from '@finos/legend-art';
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
- const selectColorTheme = (key) => {
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;AAqdF,eAAO,MAAM,qCAAqC,WACxC;IACN,gBAAgB,EAAE,yBAAyB,CAAC;IAC5C,UAAU,EAAE,OAAO,CAAC;CACrB;;CAujBF,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;AAgsDF,eAAO,MAAM,iBAAiB;;CAsK5B,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
- 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", style: { flex: '1 1 auto' }, children: accessPoint.id }));
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: "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: {
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
- overflow: 'hidden',
679
- padding: '0.25rem',
680
- height: 'auto',
681
- } })) : (_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()] })) }), 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
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;