@finos/legend-application-studio 28.21.45 → 28.21.47

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 (209) hide show
  1. package/lib/__lib__/LegendStudioEvent.d.ts +63 -1
  2. package/lib/__lib__/LegendStudioEvent.d.ts.map +1 -1
  3. package/lib/__lib__/LegendStudioEvent.js +90 -0
  4. package/lib/__lib__/LegendStudioEvent.js.map +1 -1
  5. package/lib/__lib__/LegendStudioTelemetryHelper.d.ts +655 -1
  6. package/lib/__lib__/LegendStudioTelemetryHelper.d.ts.map +1 -1
  7. package/lib/__lib__/LegendStudioTelemetryHelper.js +709 -1
  8. package/lib/__lib__/LegendStudioTelemetryHelper.js.map +1 -1
  9. package/lib/components/editor/editor-group/LegendAISuggestTelemetryHooks.d.ts +30 -0
  10. package/lib/components/editor/editor-group/LegendAISuggestTelemetryHooks.d.ts.map +1 -0
  11. package/lib/components/editor/editor-group/LegendAISuggestTelemetryHooks.js +43 -0
  12. package/lib/components/editor/editor-group/LegendAISuggestTelemetryHooks.js.map +1 -0
  13. package/lib/components/editor/editor-group/RuntimeEditor.d.ts +4 -3
  14. package/lib/components/editor/editor-group/RuntimeEditor.d.ts.map +1 -1
  15. package/lib/components/editor/editor-group/RuntimeEditor.js +90 -36
  16. package/lib/components/editor/editor-group/RuntimeEditor.js.map +1 -1
  17. package/lib/components/editor/editor-group/dataProduct/DataProductEditor.d.ts.map +1 -1
  18. package/lib/components/editor/editor-group/dataProduct/DataProductEditor.js +154 -35
  19. package/lib/components/editor/editor-group/dataProduct/DataProductEditor.js.map +1 -1
  20. package/lib/components/editor/editor-group/dataProduct/DataProductQueryBuilderHelper.d.ts.map +1 -1
  21. package/lib/components/editor/editor-group/dataProduct/DataProductQueryBuilderHelper.js +4 -6
  22. package/lib/components/editor/editor-group/dataProduct/DataProductQueryBuilderHelper.js.map +1 -1
  23. package/lib/components/editor/editor-group/service-editor/ServiceEditor.d.ts.map +1 -1
  24. package/lib/components/editor/editor-group/service-editor/ServiceEditor.js +31 -7
  25. package/lib/components/editor/editor-group/service-editor/ServiceEditor.js.map +1 -1
  26. package/lib/components/editor/editor-group/service-editor/testable/ServiceTestDataEditor.d.ts.map +1 -1
  27. package/lib/components/editor/editor-group/service-editor/testable/ServiceTestDataEditor.js +4 -8
  28. package/lib/components/editor/editor-group/service-editor/testable/ServiceTestDataEditor.js.map +1 -1
  29. package/lib/components/editor/side-bar/WorkflowManager.d.ts.map +1 -1
  30. package/lib/components/editor/side-bar/WorkflowManager.js +15 -0
  31. package/lib/components/editor/side-bar/WorkflowManager.js.map +1 -1
  32. package/lib/index.css +1 -1
  33. package/lib/index.d.ts +3 -1
  34. package/lib/index.d.ts.map +1 -1
  35. package/lib/index.js +3 -1
  36. package/lib/index.js.map +1 -1
  37. package/lib/package.json +1 -1
  38. package/lib/stores/editor/EditorGraphState.d.ts.map +1 -1
  39. package/lib/stores/editor/EditorGraphState.js +17 -1
  40. package/lib/stores/editor/EditorGraphState.js.map +1 -1
  41. package/lib/stores/editor/EditorStore.d.ts +2 -0
  42. package/lib/stores/editor/EditorStore.d.ts.map +1 -1
  43. package/lib/stores/editor/EditorStore.js +12 -0
  44. package/lib/stores/editor/EditorStore.js.map +1 -1
  45. package/lib/stores/editor/EditorTabManagerState.d.ts +18 -1
  46. package/lib/stores/editor/EditorTabManagerState.d.ts.map +1 -1
  47. package/lib/stores/editor/EditorTabManagerState.js +90 -1
  48. package/lib/stores/editor/EditorTabManagerState.js.map +1 -1
  49. package/lib/stores/editor/EditorTabTelemetryHelper.d.ts +31 -0
  50. package/lib/stores/editor/EditorTabTelemetryHelper.d.ts.map +1 -0
  51. package/lib/stores/editor/EditorTabTelemetryHelper.js +55 -0
  52. package/lib/stores/editor/EditorTabTelemetryHelper.js.map +1 -0
  53. package/lib/stores/editor/GraphEditFormModeState.d.ts.map +1 -1
  54. package/lib/stores/editor/GraphEditFormModeState.js +22 -1
  55. package/lib/stores/editor/GraphEditFormModeState.js.map +1 -1
  56. package/lib/stores/editor/LegendAISuggestTelemetry.d.ts +143 -0
  57. package/lib/stores/editor/LegendAISuggestTelemetry.d.ts.map +1 -0
  58. package/lib/stores/editor/LegendAISuggestTelemetry.js +376 -0
  59. package/lib/stores/editor/LegendAISuggestTelemetry.js.map +1 -0
  60. package/lib/stores/editor/LegendSQLStudioPlaygroundState.js +3 -3
  61. package/lib/stores/editor/LegendSQLStudioPlaygroundState.js.map +1 -1
  62. package/lib/stores/editor/editor-state/GraphGenerationState.d.ts +14 -3
  63. package/lib/stores/editor/editor-state/GraphGenerationState.d.ts.map +1 -1
  64. package/lib/stores/editor/editor-state/GraphGenerationState.js +42 -5
  65. package/lib/stores/editor/editor-state/GraphGenerationState.js.map +1 -1
  66. package/lib/stores/editor/editor-state/ModelImporterState.d.ts.map +1 -1
  67. package/lib/stores/editor/editor-state/ModelImporterState.js +2 -1
  68. package/lib/stores/editor/editor-state/ModelImporterState.js.map +1 -1
  69. package/lib/stores/editor/editor-state/element-editor-state/ElementExternalFormatGenerationState.d.ts.map +1 -1
  70. package/lib/stores/editor/editor-state/element-editor-state/ElementExternalFormatGenerationState.js +14 -0
  71. package/lib/stores/editor/editor-state/element-editor-state/ElementExternalFormatGenerationState.js.map +1 -1
  72. package/lib/stores/editor/editor-state/element-editor-state/RuntimeEditorState.d.ts +35 -6
  73. package/lib/stores/editor/editor-state/element-editor-state/RuntimeEditorState.d.ts.map +1 -1
  74. package/lib/stores/editor/editor-state/element-editor-state/RuntimeEditorState.js +74 -29
  75. package/lib/stores/editor/editor-state/element-editor-state/RuntimeEditorState.js.map +1 -1
  76. package/lib/stores/editor/editor-state/element-editor-state/availability/testable/AvailabilityTestableState.d.ts +5 -0
  77. package/lib/stores/editor/editor-state/element-editor-state/availability/testable/AvailabilityTestableState.d.ts.map +1 -1
  78. package/lib/stores/editor/editor-state/element-editor-state/availability/testable/AvailabilityTestableState.js +13 -0
  79. package/lib/stores/editor/editor-state/element-editor-state/availability/testable/AvailabilityTestableState.js.map +1 -1
  80. package/lib/stores/editor/editor-state/element-editor-state/connection/DatabaseBuilderState.d.ts +1 -0
  81. package/lib/stores/editor/editor-state/element-editor-state/connection/DatabaseBuilderState.d.ts.map +1 -1
  82. package/lib/stores/editor/editor-state/element-editor-state/connection/DatabaseBuilderState.js +5 -5
  83. package/lib/stores/editor/editor-state/element-editor-state/connection/DatabaseBuilderState.js.map +1 -1
  84. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.d.ts +12 -0
  85. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.d.ts.map +1 -1
  86. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js +60 -14
  87. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.js.map +1 -1
  88. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/testable/DataProductTestableState.d.ts +5 -0
  89. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/testable/DataProductTestableState.d.ts.map +1 -1
  90. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/testable/DataProductTestableState.js +13 -0
  91. package/lib/stores/editor/editor-state/element-editor-state/dataProduct/testable/DataProductTestableState.js.map +1 -1
  92. package/lib/stores/editor/editor-state/element-editor-state/function-activator/testable/FunctionTestableState.d.ts +7 -0
  93. package/lib/stores/editor/editor-state/element-editor-state/function-activator/testable/FunctionTestableState.d.ts.map +1 -1
  94. package/lib/stores/editor/editor-state/element-editor-state/function-activator/testable/FunctionTestableState.js +21 -2
  95. package/lib/stores/editor/editor-state/element-editor-state/function-activator/testable/FunctionTestableState.js.map +1 -1
  96. package/lib/stores/editor/editor-state/element-editor-state/ingest/IngestTestableState.d.ts +5 -0
  97. package/lib/stores/editor/editor-state/element-editor-state/ingest/IngestTestableState.d.ts.map +1 -1
  98. package/lib/stores/editor/editor-state/element-editor-state/ingest/IngestTestableState.js +13 -0
  99. package/lib/stores/editor/editor-state/element-editor-state/ingest/IngestTestableState.js.map +1 -1
  100. package/lib/stores/editor/editor-state/element-editor-state/mapping/testable/MappingTestableState.d.ts +7 -0
  101. package/lib/stores/editor/editor-state/element-editor-state/mapping/testable/MappingTestableState.d.ts.map +1 -1
  102. package/lib/stores/editor/editor-state/element-editor-state/mapping/testable/MappingTestableState.js +34 -0
  103. package/lib/stores/editor/editor-state/element-editor-state/mapping/testable/MappingTestableState.js.map +1 -1
  104. package/lib/stores/editor/editor-state/element-editor-state/service/ServiceRegistrationState.d.ts.map +1 -1
  105. package/lib/stores/editor/editor-state/element-editor-state/service/ServiceRegistrationState.js +48 -0
  106. package/lib/stores/editor/editor-state/element-editor-state/service/ServiceRegistrationState.js.map +1 -1
  107. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestDataState.d.ts +1 -1
  108. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestDataState.d.ts.map +1 -1
  109. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestDataState.js +5 -11
  110. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestDataState.js.map +1 -1
  111. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestEditorState.d.ts +3 -0
  112. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestEditorState.d.ts.map +1 -1
  113. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestEditorState.js +7 -0
  114. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestEditorState.js.map +1 -1
  115. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestableState.d.ts.map +1 -1
  116. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestableState.js +46 -17
  117. package/lib/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestableState.js.map +1 -1
  118. package/lib/stores/editor/editor-state/element-editor-state/testable/TestableEditorState.d.ts +7 -0
  119. package/lib/stores/editor/editor-state/element-editor-state/testable/TestableEditorState.d.ts.map +1 -1
  120. package/lib/stores/editor/editor-state/element-editor-state/testable/TestableEditorState.js +110 -16
  121. package/lib/stores/editor/editor-state/element-editor-state/testable/TestableEditorState.js.map +1 -1
  122. package/lib/stores/editor/editor-state/project-configuration-editor-state/ProjectConfigurationEditorState.d.ts +2 -1
  123. package/lib/stores/editor/editor-state/project-configuration-editor-state/ProjectConfigurationEditorState.d.ts.map +1 -1
  124. package/lib/stores/editor/editor-state/project-configuration-editor-state/ProjectConfigurationEditorState.js +10 -4
  125. package/lib/stores/editor/editor-state/project-configuration-editor-state/ProjectConfigurationEditorState.js.map +1 -1
  126. package/lib/stores/editor/sidebar-state/BulkServiceRegistrationState.d.ts.map +1 -1
  127. package/lib/stores/editor/sidebar-state/BulkServiceRegistrationState.js +40 -1
  128. package/lib/stores/editor/sidebar-state/BulkServiceRegistrationState.js.map +1 -1
  129. package/lib/stores/editor/sidebar-state/LocalChangesState.d.ts.map +1 -1
  130. package/lib/stores/editor/sidebar-state/LocalChangesState.js +1 -0
  131. package/lib/stores/editor/sidebar-state/LocalChangesState.js.map +1 -1
  132. package/lib/stores/editor/sidebar-state/ProjectOverviewState.d.ts.map +1 -1
  133. package/lib/stores/editor/sidebar-state/ProjectOverviewState.js +51 -0
  134. package/lib/stores/editor/sidebar-state/ProjectOverviewState.js.map +1 -1
  135. package/lib/stores/editor/sidebar-state/WorkflowManagerState.d.ts +14 -0
  136. package/lib/stores/editor/sidebar-state/WorkflowManagerState.d.ts.map +1 -1
  137. package/lib/stores/editor/sidebar-state/WorkflowManagerState.js +132 -27
  138. package/lib/stores/editor/sidebar-state/WorkflowManagerState.js.map +1 -1
  139. package/lib/stores/editor/sidebar-state/WorkspaceReviewState.d.ts.map +1 -1
  140. package/lib/stores/editor/sidebar-state/WorkspaceReviewState.js +41 -0
  141. package/lib/stores/editor/sidebar-state/WorkspaceReviewState.js.map +1 -1
  142. package/lib/stores/editor/sidebar-state/testable/GlobalTestRunnerState.d.ts.map +1 -1
  143. package/lib/stores/editor/sidebar-state/testable/GlobalTestRunnerState.js +71 -9
  144. package/lib/stores/editor/sidebar-state/testable/GlobalTestRunnerState.js.map +1 -1
  145. package/lib/stores/editor/utils/MockDataUtils.d.ts +12 -2
  146. package/lib/stores/editor/utils/MockDataUtils.d.ts.map +1 -1
  147. package/lib/stores/editor/utils/MockDataUtils.js +28 -28
  148. package/lib/stores/editor/utils/MockDataUtils.js.map +1 -1
  149. package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.d.ts +2 -0
  150. package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.d.ts.map +1 -1
  151. package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.js +13 -0
  152. package/lib/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.js.map +1 -1
  153. package/lib/stores/graph-modifier/DSL_LakehouseRuntime_GraphModifierHelper.d.ts +20 -2
  154. package/lib/stores/graph-modifier/DSL_LakehouseRuntime_GraphModifierHelper.d.ts.map +1 -1
  155. package/lib/stores/graph-modifier/DSL_LakehouseRuntime_GraphModifierHelper.js +38 -4
  156. package/lib/stores/graph-modifier/DSL_LakehouseRuntime_GraphModifierHelper.js.map +1 -1
  157. package/lib/stores/project-reviewer/ProjectReviewerStore.d.ts.map +1 -1
  158. package/lib/stores/project-reviewer/ProjectReviewerStore.js +45 -0
  159. package/lib/stores/project-reviewer/ProjectReviewerStore.js.map +1 -1
  160. package/lib/stores/workspace-setup/WorkspaceSetupStore.d.ts.map +1 -1
  161. package/lib/stores/workspace-setup/WorkspaceSetupStore.js +48 -4
  162. package/lib/stores/workspace-setup/WorkspaceSetupStore.js.map +1 -1
  163. package/package.json +9 -9
  164. package/src/__lib__/LegendStudioEvent.ts +102 -0
  165. package/src/__lib__/LegendStudioTelemetryHelper.ts +1769 -311
  166. package/src/components/editor/editor-group/LegendAISuggestTelemetryHooks.ts +57 -0
  167. package/src/components/editor/editor-group/RuntimeEditor.tsx +282 -132
  168. package/src/components/editor/editor-group/dataProduct/DataProductEditor.tsx +293 -106
  169. package/src/components/editor/editor-group/dataProduct/DataProductQueryBuilderHelper.ts +3 -13
  170. package/src/components/editor/editor-group/service-editor/ServiceEditor.tsx +41 -23
  171. package/src/components/editor/editor-group/service-editor/testable/ServiceTestDataEditor.tsx +5 -11
  172. package/src/components/editor/side-bar/WorkflowManager.tsx +24 -0
  173. package/src/index.ts +17 -1
  174. package/src/stores/editor/EditorGraphState.ts +30 -1
  175. package/src/stores/editor/EditorStore.ts +22 -0
  176. package/src/stores/editor/EditorTabManagerState.ts +128 -1
  177. package/src/stores/editor/EditorTabTelemetryHelper.ts +70 -0
  178. package/src/stores/editor/GraphEditFormModeState.ts +35 -1
  179. package/src/stores/editor/LegendAISuggestTelemetry.ts +592 -0
  180. package/src/stores/editor/LegendSQLStudioPlaygroundState.ts +3 -3
  181. package/src/stores/editor/editor-state/GraphGenerationState.ts +68 -9
  182. package/src/stores/editor/editor-state/ModelImporterState.ts +2 -0
  183. package/src/stores/editor/editor-state/element-editor-state/ElementExternalFormatGenerationState.ts +30 -0
  184. package/src/stores/editor/editor-state/element-editor-state/RuntimeEditorState.ts +92 -31
  185. package/src/stores/editor/editor-state/element-editor-state/availability/testable/AvailabilityTestableState.ts +17 -0
  186. package/src/stores/editor/editor-state/element-editor-state/connection/DatabaseBuilderState.ts +6 -6
  187. package/src/stores/editor/editor-state/element-editor-state/dataProduct/DataProductEditorState.ts +75 -17
  188. package/src/stores/editor/editor-state/element-editor-state/dataProduct/testable/DataProductTestableState.ts +17 -0
  189. package/src/stores/editor/editor-state/element-editor-state/function-activator/testable/FunctionTestableState.ts +27 -2
  190. package/src/stores/editor/editor-state/element-editor-state/ingest/IngestTestableState.ts +17 -0
  191. package/src/stores/editor/editor-state/element-editor-state/mapping/testable/MappingTestableState.ts +57 -0
  192. package/src/stores/editor/editor-state/element-editor-state/service/ServiceRegistrationState.ts +74 -0
  193. package/src/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestDataState.ts +22 -21
  194. package/src/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestEditorState.ts +9 -0
  195. package/src/stores/editor/editor-state/element-editor-state/service/testable/ServiceTestableState.ts +78 -21
  196. package/src/stores/editor/editor-state/element-editor-state/testable/TestableEditorState.ts +205 -18
  197. package/src/stores/editor/editor-state/project-configuration-editor-state/ProjectConfigurationEditorState.ts +38 -3
  198. package/src/stores/editor/sidebar-state/BulkServiceRegistrationState.ts +71 -1
  199. package/src/stores/editor/sidebar-state/LocalChangesState.ts +4 -0
  200. package/src/stores/editor/sidebar-state/ProjectOverviewState.ts +114 -0
  201. package/src/stores/editor/sidebar-state/WorkflowManagerState.ts +250 -29
  202. package/src/stores/editor/sidebar-state/WorkspaceReviewState.ts +84 -0
  203. package/src/stores/editor/sidebar-state/testable/GlobalTestRunnerState.ts +124 -17
  204. package/src/stores/editor/utils/MockDataUtils.ts +33 -32
  205. package/src/stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.ts +18 -0
  206. package/src/stores/graph-modifier/DSL_LakehouseRuntime_GraphModifierHelper.ts +62 -7
  207. package/src/stores/project-reviewer/ProjectReviewerStore.ts +97 -0
  208. package/src/stores/workspace-setup/WorkspaceSetupStore.ts +87 -4
  209. package/tsconfig.json +3 -0
@@ -25,8 +25,8 @@ 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';
28
- import { DataProductEmbeddedImageIcon, DataProductLibraryIcon, Email, LakehouseTargetEnv, StereotypeExplicitReference, V1_DataProduct, V1_DataProductIconLibraryId, V1_PureGraphManager, V1_RemoteEngine, validate_PureExecutionMapping, InternalDataProductType, ExternalDataProductType, DataProductLink, observer_DataProductLink, Region, DeliveryFrequency, AppDirOwner, AppDirNode, observe_AppDirOwner, observe_AppDirNode, AppDirLevel, } from '@finos/legend-graph';
29
- import { accessPoint_setClassification, accessPoint_setReproducible, accessPointGroup_setDescription, accessPointGroup_setName, dataProduct_setDescription, dataProduct_setIcon, dataProduct_setSupportInfoIfAbsent, dataProduct_setTitle, supportInfo_addEmail, supportInfo_deleteEmail, supportInfo_setDocumentationUrl, supportInfo_setFaqUrl, supportInfo_setLinkLabel, supportInfo_setSupportUrl, supportInfo_setWebsite, dataProduct_setType, expertise_setDescription, expertise_addId, expertise_deleteId, supportInfo_deleteExpertise, externalType_setLinkURL, externalType_setLinkLabel, accessPointGroup_setTitle, accessPoint_setDescription, accessPoint_setTitle, dataProduct_setOperationalMetadataIfAbsent, operationalMetadata_deleteCoverageRegion, operationalMetadata_addCoverageRegion, operationalMetadata_setUpdateFrequency, dataProduct_setOwner, appDirOwner_setProduction, appDirOwner_setProdParallel, appDirNode_setAppDirId, } from '../../../../stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.js';
28
+ import { DataProduct, DataProductEmbeddedImageIcon, DataProductLibraryIcon, Email, LakehouseTargetEnv, StereotypeExplicitReference, V1_DataProduct, V1_DataProductIconLibraryId, V1_PureGraphManager, V1_RemoteEngine, validate_PureExecutionMapping, InternalDataProductType, ExternalDataProductType, DataProductLink, observer_DataProductLink, Region, DeliveryFrequency, AppDirOwner, AppDirNode, observe_AppDirOwner, observe_AppDirNode, AppDirLevel, } from '@finos/legend-graph';
29
+ import { accessPoint_setClassification, accessPoint_setReproducible, accessPointGroup_addTarget, accessPointGroup_deleteTarget, accessPointGroup_setDescription, accessPointGroup_setName, dataProduct_setDescription, dataProduct_setIcon, dataProduct_setSupportInfoIfAbsent, dataProduct_setTitle, supportInfo_addEmail, supportInfo_deleteEmail, supportInfo_setDocumentationUrl, supportInfo_setFaqUrl, supportInfo_setLinkLabel, supportInfo_setSupportUrl, supportInfo_setWebsite, dataProduct_setType, expertise_setDescription, expertise_addId, expertise_deleteId, supportInfo_deleteExpertise, externalType_setLinkURL, externalType_setLinkLabel, accessPointGroup_setTitle, accessPoint_setDescription, accessPoint_setTitle, dataProduct_setOperationalMetadataIfAbsent, operationalMetadata_deleteCoverageRegion, operationalMetadata_addCoverageRegion, operationalMetadata_setUpdateFrequency, dataProduct_setOwner, appDirOwner_setProduction, appDirOwner_setProdParallel, appDirNode_setAppDirId, } from '../../../../stores/graph-modifier/DSL_DataProduct_GraphModifierHelper.js';
30
30
  import { LEGEND_STUDIO_TEST_ID } from '../../../../__lib__/LegendStudioTesting.js';
31
31
  import { LEGEND_STUDIO_APPLICATION_NAVIGATION_CONTEXT_KEY } from '../../../../__lib__/LegendStudioApplicationNavigationContext.js';
32
32
  import { ActionAlertActionType, ActionAlertType, useApplicationNavigationContext, } from '@finos/legend-application';
@@ -35,7 +35,8 @@ import { annotatedElement_addStereotype, annotatedElement_deleteStereotype, } fr
35
35
  import { buildElementOption, } from '@finos/legend-lego/graph-editor';
36
36
  import { DataProductViewerState, ProductViewer, } from '@finos/legend-extension-dsl-data-product';
37
37
  import { RelationElementSampleValuesEditor } from '../data-editor/RelationElementSampleValuesEditor.js';
38
- import { LegendStudioTelemetryHelper } from '../../../../__lib__/LegendStudioTelemetryHelper.js';
38
+ import { LEGENDAI_SUGGEST_MATCH_STRATEGY, LEGENDAI_SUGGEST_STAGE, LEGENDAI_SUGGEST_SURFACE, } from '../../../../__lib__/LegendStudioTelemetryHelper.js';
39
+ import { useLegendAISuggestTelemetry } from '../LegendAISuggestTelemetryHooks.js';
39
40
  import { LEGEND_STUDIO_DOCUMENTATION_KEY } from '../../../../__lib__/LegendStudioDocumentation.js';
40
41
  export var AP_GROUP_MODAL_ERRORS;
41
42
  (function (AP_GROUP_MODAL_ERRORS) {
@@ -171,6 +172,10 @@ export const LakehouseDataProductAccessPointEditor = observer((props) => {
171
172
  setIsHoveringTitle(false);
172
173
  };
173
174
  const updateAccessPointTargetEnvironment = action((targetEnvironment) => {
175
+ if (targetEnvironment !== undefined &&
176
+ groupState.value.targets?.length) {
177
+ groupState.value.targets = undefined;
178
+ }
174
179
  accessPoint.targetEnvironment = targetEnvironment;
175
180
  });
176
181
  const debugPlanGeneration = editorStore.applicationStore.guardUnhandledError(() => flowResult(accessPointState.generateArtifact()));
@@ -286,7 +291,7 @@ export const LakehouseDataProductAccessPointEditor = observer((props) => {
286
291
  }
287
292
  : undefined;
288
293
  })(), deleteConfirmMessage: `Are you sure you want to delete sample values for Access Point ${accessPointState.accessPoint.id}?`, onAdd: () => flowResult(accessPointState.createAndaddRelationElement()), onDelete: () => accessPointState.deleteRelationElement() }), editorStore.applicationStore.config.options
289
- .dataProductConfig && (_jsx(AccessPointClassification, { accessPoint: accessPoint, groupState: groupState })), _jsxs("div", { className: clsx('access-point-editor__type'), title: 'Change target environment', children: [_jsx("div", { className: "access-point-editor__type__label", children: accessPoint.targetEnvironment }), _jsx(ControlledDropdownMenu, { className: "access-point-editor__dropdown", content: _jsx(MenuContent, { children: Object.values(LakehouseTargetEnv).map((environment) => (_jsx(MenuContentItem, { className: "btn__dropdown-combo__option", onClick: () => updateAccessPointTargetEnvironment(environment), children: environment }, environment))) }), menuProps: {
294
+ .dataProductConfig && (_jsx(AccessPointClassification, { accessPoint: accessPoint, groupState: groupState })), _jsxs("div", { className: clsx('access-point-editor__type'), title: 'Change target environment', children: [_jsx("div", { className: "access-point-editor__type__label", children: accessPoint.targetEnvironment }), _jsx(ControlledDropdownMenu, { className: "access-point-editor__dropdown", content: _jsxs(MenuContent, { children: [_jsx(MenuContentItem, { className: "btn__dropdown-combo__option", title: "Clear", onClick: () => updateAccessPointTargetEnvironment(undefined), children: ' ' }), Object.values(LakehouseTargetEnv).map((environment) => (_jsx(MenuContentItem, { className: "btn__dropdown-combo__option", onClick: () => updateAccessPointTargetEnvironment(environment), children: environment }, environment)))] }), menuProps: {
290
295
  anchorOrigin: {
291
296
  vertical: 'bottom',
292
297
  horizontal: 'right',
@@ -376,6 +381,27 @@ const ModelAccessPointGroupEditor = observer((props) => {
376
381
  }, tabIndex: -1, title: "See mapping", disabled: Boolean(isMappingEmpty), children: _jsx(LongArrowRightIcon, {}) })] })] }));
377
382
  });
378
383
  const AccessPointLoadingSentinel = (props) => _jsx("div", { ref: props.ref, className: "access-point-editor__sentinel" });
384
+ /**
385
+ * Finds the suggested metadata for an access point group: by group name
386
+ * first, falling back to the group's position in the product.
387
+ */
388
+ const matchAccessPointGroupSuggestion = (suggestion, groupId, groupIndex) => {
389
+ const groupMeta = suggestion.access_point_groups.find((g) => g.name === groupId) ??
390
+ suggestion.access_point_groups[groupIndex];
391
+ const accessPointMetas = suggestion.access_points.filter((ap) => ap.group === (groupMeta?.name ?? groupId));
392
+ return { groupMeta, accessPointMetas };
393
+ };
394
+ /**
395
+ * Flattens the access point group fields a LegendAI suggestion writes so the
396
+ * applied value can be compared with what is eventually pushed.
397
+ */
398
+ const serializeAccessPointGroupAppliedFields = (group, accessPointCount) => [
399
+ group.title ?? '',
400
+ group.description ?? '',
401
+ ...group.accessPoints
402
+ .slice(0, accessPointCount)
403
+ .flatMap((ap) => [ap.id, ap.title ?? '', ap.description ?? '']),
404
+ ].join('\n');
379
405
  const AccessPointGroupEditor = observer((props) => {
380
406
  const { groupState, isReadOnly } = props;
381
407
  const editorStore = useEditorStore();
@@ -460,6 +486,26 @@ const AccessPointGroupEditor = observer((props) => {
460
486
  const updateGroupTitle = (val) => {
461
487
  accessPointGroup_setTitle(groupState.value, val);
462
488
  };
489
+ const getTargetEnvironmentOptions = () => {
490
+ const existingTargets = groupState.value.targets ?? [];
491
+ return Object.values(LakehouseTargetEnv)
492
+ .filter((target) => !existingTargets.includes(target))
493
+ .map((target) => ({
494
+ label: target,
495
+ value: target,
496
+ }));
497
+ };
498
+ const handleAddTargetEnvironment = action((val) => {
499
+ if (val) {
500
+ accessPointGroup_addTarget(groupState.value, val.value);
501
+ lakehouseAccessPointStates.forEach((accessPointState) => {
502
+ accessPointState.accessPoint.targetEnvironment = undefined;
503
+ });
504
+ }
505
+ });
506
+ const handleRemoveTargetEnvironment = (target) => {
507
+ accessPointGroup_deleteTarget(groupState.value, target);
508
+ };
463
509
  // AI suggestion for APG
464
510
  const legendAIUrl = editorStore.applicationStore.config.legendAIUrl;
465
511
  const aiDocSuggester = legendAIUrl
@@ -468,24 +514,56 @@ const AccessPointGroupEditor = observer((props) => {
468
514
  .map((p) => p.getExtraDataProductDocumentationAISuggester?.bind(p))
469
515
  .find(Boolean)
470
516
  : undefined;
517
+ const aiSuggestTelemetry = useLegendAISuggestTelemetry(editorStore, {
518
+ surface: LEGENDAI_SUGGEST_SURFACE.DATA_PRODUCT,
519
+ elementPath: productEditorState.product.path,
520
+ accessPointGroupId: groupState.value.id,
521
+ }, { legendAIUrl, available: Boolean(aiDocSuggester), isReadOnly });
471
522
  const suggestWithAI = async () => {
472
523
  if (!aiDocSuggester || !legendAIUrl) {
473
524
  return;
474
525
  }
475
- LegendStudioTelemetryHelper.logEvent_DataProductLegendAISuggestLaunched(editorStore.applicationStore.telemetryService, productEditorState.product.path, editorStore.editorMode.getSourceInfo());
526
+ const request = aiSuggestTelemetry.launch({
527
+ existingText: groupState.value.description,
528
+ accessPointCount: groupState.value.accessPoints.length,
529
+ });
476
530
  setIsSuggestingWithAI(true);
477
531
  setAISuggestion(undefined);
532
+ let stage = LEGENDAI_SUGGEST_STAGE.SERIALIZE;
478
533
  try {
479
534
  const definitions = await editorStore.graphManagerState.graphManager.graphToPureCode(editorStore.graphManagerState.graph);
535
+ stage = LEGENDAI_SUGGEST_STAGE.REQUEST;
480
536
  const product = productEditorState.product;
481
537
  const suggestion = await aiDocSuggester({ definitions, data_product_name: product.path }, legendAIUrl);
538
+ const { groupMeta, accessPointMetas } = matchAccessPointGroupSuggestion(suggestion, groupState.value.id, productEditorState.accessPointGroupStates.indexOf(groupState));
539
+ const shouldShow = aiSuggestTelemetry.succeed(request, {
540
+ // the response is structured, so measure the parts shown for this group
541
+ suggestionText: [
542
+ groupMeta?.title,
543
+ groupMeta?.description,
544
+ ...accessPointMetas.flatMap((ap) => [
545
+ ap.name,
546
+ ap.title,
547
+ ap.description,
548
+ ]),
549
+ ]
550
+ .filter(Boolean)
551
+ .join('\n'),
552
+ definitionsLength: definitions.length,
553
+ currentText: groupState.value.description,
554
+ confidence: groupMeta?.confidence,
555
+ accessPointSuggestionCount: accessPointMetas.length,
556
+ });
557
+ if (!shouldShow) {
558
+ editorStore.applicationStore.notificationService.notifyWarning(`LegendAI did not return a suggestion for access point group '${groupState.value.id}'`);
559
+ }
482
560
  runInAction(() => {
483
- setAISuggestion(suggestion);
561
+ setAISuggestion(shouldShow ? suggestion : undefined);
484
562
  });
485
563
  }
486
564
  catch (error) {
487
565
  assertErrorThrown(error);
488
- LegendStudioTelemetryHelper.logEvent_DataProductLegendAISuggestFailure(editorStore.applicationStore.telemetryService, productEditorState.product.path, error.message, editorStore.editorMode.getSourceInfo());
566
+ aiSuggestTelemetry.fail(request, error, stage);
489
567
  if (error instanceof NetworkClientError &&
490
568
  (error.response.status === HttpStatus.UNAUTHORIZED ||
491
569
  error.response.status === HttpStatus.FORBIDDEN)) {
@@ -506,37 +584,77 @@ const AccessPointGroupEditor = observer((props) => {
506
584
  if (!aiSuggestion) {
507
585
  return;
508
586
  }
509
- LegendStudioTelemetryHelper.logEvent_DataProductLegendAISuggestApplied(editorStore.applicationStore.telemetryService, productEditorState.product.path, editorStore.editorMode.getSourceInfo());
587
+ const group = groupState.value;
588
+ const existingText = group.description;
510
589
  // Find matching group in the response
511
- const gIdx = productEditorState.accessPointGroupStates.indexOf(groupState);
512
- const groupMeta = aiSuggestion.access_point_groups.find((g) => g.name === groupState.value.id) ?? aiSuggestion.access_point_groups[gIdx];
590
+ const { groupMeta, accessPointMetas: apMetas } = matchAccessPointGroupSuggestion(aiSuggestion, group.id, productEditorState.accessPointGroupStates.indexOf(groupState));
591
+ const matchStrategy = !groupMeta
592
+ ? LEGENDAI_SUGGEST_MATCH_STRATEGY.NONE
593
+ : groupMeta.name === group.id
594
+ ? LEGENDAI_SUGGEST_MATCH_STRATEGY.NAME
595
+ : LEGENDAI_SUGGEST_MATCH_STRATEGY.INDEX;
513
596
  if (groupMeta) {
514
- accessPointGroup_setTitle(groupState.value, groupMeta.title);
515
- accessPointGroup_setDescription(groupState.value, groupMeta.description);
597
+ accessPointGroup_setTitle(group, groupMeta.title);
598
+ accessPointGroup_setDescription(group, groupMeta.description);
516
599
  }
517
600
  // Apply access point metadata for this group
518
- const apMetas = aiSuggestion.access_points.filter((ap) => ap.group === (groupMeta?.name ?? groupState.value.id));
519
- for (let j = 0; j < apMetas.length && j < groupState.value.accessPoints.length; j++) {
601
+ const accessPointsUpdated = Math.min(apMetas.length, group.accessPoints.length);
602
+ let accessPointsRenamed = 0;
603
+ let namesSanitized = 0;
604
+ for (let j = 0; j < accessPointsUpdated; j++) {
520
605
  const apMeta = apMetas[j];
521
- const ap = groupState.value.accessPoints[j];
606
+ const ap = group.accessPoints[j];
522
607
  // Convert suggested name to valid identifier (alphanumeric + underscore)
523
608
  const sanitizedName = apMeta.name.replace(/[^0-9a-zA-Z_]/g, '_');
609
+ if (sanitizedName !== apMeta.name) {
610
+ namesSanitized++;
611
+ }
524
612
  if (sanitizedName) {
613
+ if (ap.id !== sanitizedName) {
614
+ accessPointsRenamed++;
615
+ }
525
616
  ap.id = sanitizedName;
526
617
  }
527
618
  accessPoint_setTitle(ap, apMeta.title);
528
619
  accessPoint_setDescription(ap, apMeta.description);
529
620
  }
621
+ const productPath = productEditorState.product.path;
622
+ const groupId = group.id;
623
+ aiSuggestTelemetry.apply({
624
+ existingText,
625
+ appliedText: groupMeta || accessPointsUpdated
626
+ ? serializeAccessPointGroupAppliedFields(group, accessPointsUpdated)
627
+ : '',
628
+ readCurrentText: (store) => {
629
+ const element = store.graphManagerState.graph.getNullableElement(productPath);
630
+ const currentGroup = element instanceof DataProduct
631
+ ? element.accessPointGroups.find((g) => g.id === groupId)
632
+ : undefined;
633
+ return currentGroup
634
+ ? {
635
+ found: true,
636
+ text: serializeAccessPointGroupAppliedFields(currentGroup, accessPointsUpdated),
637
+ }
638
+ : { found: false };
639
+ },
640
+ dataProduct: {
641
+ matchStrategy,
642
+ accessPointsUpdated,
643
+ accessPointsRenamed,
644
+ namesSanitized,
645
+ accessPointCountMismatch: apMetas.length !== group.accessPoints.length,
646
+ },
647
+ });
530
648
  setAISuggestion(undefined);
531
649
  };
532
650
  const discardAISuggestion = () => {
533
- LegendStudioTelemetryHelper.logEvent_DataProductLegendAISuggestDiscarded(editorStore.applicationStore.telemetryService, productEditorState.product.path, editorStore.editorMode.getSourceInfo());
651
+ aiSuggestTelemetry.discard();
534
652
  setAISuggestion(undefined);
535
653
  };
536
654
  // Computed AI suggestion for current group
537
- const groupIndex = productEditorState.accessPointGroupStates.indexOf(groupState);
538
- const aiGroupMeta = aiSuggestion?.access_point_groups.find((g) => g.name === groupState.value.id) ?? aiSuggestion?.access_point_groups[groupIndex];
539
- const aiAccessPointMetas = aiSuggestion?.access_points.filter((ap) => ap.group === (aiGroupMeta?.name ?? groupState.value.id));
655
+ const { groupMeta: aiGroupMeta, accessPointMetas: aiAccessPointMetas } = aiSuggestion
656
+ ? matchAccessPointGroupSuggestion(aiSuggestion, groupState.value.id, productEditorState.accessPointGroupStates.indexOf(groupState))
657
+ : { groupMeta: undefined, accessPointMetas: undefined };
540
658
  const handleRemoveAccessPointGroup = () => {
541
659
  editorStore.applicationStore.alertService.setActionAlertInfo({
542
660
  message: groupState instanceof ModelAccessPointGroupState
@@ -584,7 +702,8 @@ const AccessPointGroupEditor = observer((props) => {
584
702
  overflow: 'hidden',
585
703
  padding: '0.25rem',
586
704
  height: 'auto',
587
- } })) : (_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."] })), _jsxs("div", { style: { gap: '1rem', display: 'flex', flexDirection: 'column' }, children: [lakehouseAccessPointStates
705
+ } })) : (_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 }))] }), _jsxs("div", { className: "data-product-editor__operational-input data-product-editor__apg-targets-input", children: [_jsx("div", { className: "panel__content__form__section__header__label", style: { justifyContent: 'space-between', width: '45rem' }, children: "Target Environments" }), _jsx("div", { className: "panel__content__form__section__header__prompt", children: "Select where this Data Product will be deployed." }), _jsx("div", { className: "panel__content__form__section__list__id-list", children: groupState.value.targets?.map((target) => (_jsxs("div", { className: "panel__content__form__section__list__item", children: [target, _jsx("button", { className: "panel__content__form__section__list__item__remove-btn", disabled: isReadOnly, onClick: () => handleRemoveTargetEnvironment(target), tabIndex: -1, title: "Remove Target Environment", children: _jsx(TimesIcon, {}) })] }, target))) }), _jsx(CustomSelectorInput, { className: "panel__content__form__section__dropdown", options: getTargetEnvironmentOptions(), onChange: handleAddTargetEnvironment, placeholder: 'Add Target Environment...', darkMode: !productEditorState.editorStore.applicationStore.layoutService
706
+ .TEMPORARY__isLightColorThemeEnabled, disabled: isReadOnly })] }), 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."] })), _jsxs("div", { style: { gap: '1rem', display: 'flex', flexDirection: 'column' }, children: [lakehouseAccessPointStates
588
707
  .slice(0, renderedCount)
589
708
  .map((apState, idx) => (_jsx(LakehouseDataProductAccessPointEditor, { isReadOnly: isReadOnly, accessPointState: apState, aiSuggestionMeta: aiAccessPointMetas?.[idx] }, apState.uuid))), accessPointCount > renderedCount && (_jsx(AccessPointLoadingSentinel, { ref: accessPointsSentinelRef }))] })] }))] }));
590
709
  });
@@ -899,12 +1018,12 @@ const HomeTab = observer((props) => {
899
1018
  resize: 'vertical',
900
1019
  maxHeight: '100%',
901
1020
  maxWidth: '100%',
902
- } })] }), _jsxs("div", { className: "panel__content__form__section", children: [_jsx("div", { className: "panel__content__form__section__header__label", style: { justifyContent: 'space-between', width: '45rem' }, children: "Data Product Type" }), _jsx("div", { className: "panel__content__form__section__header__prompt", children: "Select if this Data Product is Internal or External" }), _jsx("div", { className: "panel__content__form__section__list__new-item__input", children: _jsx(CustomSelectorInput, { options: DATA_PRODUCT_TYPE_OPTIONS, onChange: handleDataProductTypeChange, value: product.type instanceof InternalDataProductType
903
- ? DATA_PRODUCT_TYPE_OPTIONS.find((option) => option.value === DATA_PRODUCT_TYPE.INTERNAL)
904
- : product.type instanceof ExternalDataProductType
905
- ? DATA_PRODUCT_TYPE_OPTIONS.find((option) => option.value === DATA_PRODUCT_TYPE.EXTERNAL)
906
- : null, darkMode: !dataProductEditorState.editorStore.applicationStore
907
- .layoutService.TEMPORARY__isLightColorThemeEnabled }) }), product.type instanceof ExternalDataProductType && (_jsxs("div", { className: "data-product-editor__external-link", children: [_jsx("div", { className: "panel__content__form__section__header__prompt", children: "External Link" }), _jsx("textarea", { className: "input input-group__input panel__content__form__section__input input--dark input--small", spellCheck: false, disabled: isReadOnly, placeholder: "External URL", value: product.type.link.url, onChange: handleExternalURLChange, style: {
1021
+ } })] }), _jsxs("div", { className: "panel__content__form__section", children: [_jsx("div", { className: "panel__content__form__section__header__label", style: { justifyContent: 'space-between', width: '45rem' }, children: "Data Product Type" }), _jsx("div", { className: "panel__content__form__section__header__prompt", children: "Select if this Data Product is Internal or External" }), _jsx(CustomSelectorInput, { className: "panel__content__form__section__dropdown", options: DATA_PRODUCT_TYPE_OPTIONS, onChange: handleDataProductTypeChange, value: product.type instanceof InternalDataProductType
1022
+ ? DATA_PRODUCT_TYPE_OPTIONS.find((option) => option.value === DATA_PRODUCT_TYPE.INTERNAL)
1023
+ : product.type instanceof ExternalDataProductType
1024
+ ? DATA_PRODUCT_TYPE_OPTIONS.find((option) => option.value === DATA_PRODUCT_TYPE.EXTERNAL)
1025
+ : null, darkMode: !dataProductEditorState.editorStore.applicationStore
1026
+ .layoutService.TEMPORARY__isLightColorThemeEnabled }), product.type instanceof ExternalDataProductType && (_jsxs("div", { className: "data-product-editor__external-link", children: [_jsx("div", { className: "panel__content__form__section__header__prompt", children: "External Link" }), _jsx("textarea", { className: "input input-group__input panel__content__form__section__input input--dark input--small", spellCheck: false, disabled: isReadOnly, placeholder: "External URL", value: product.type.link.url, onChange: handleExternalURLChange, style: {
908
1027
  resize: 'none',
909
1028
  padding: '0.25rem 0.5rem',
910
1029
  } }), _jsx("textarea", { className: "input input-group__input panel__content__form__section__input input--dark input--small", spellCheck: false, disabled: isReadOnly, placeholder: "External Link Label", value: product.type.link.label ?? '', onChange: handleExternalLabelChange, style: {
@@ -1099,15 +1218,15 @@ const OperationalTab = observer((props) => {
1099
1218
  operationalMetadata_setUpdateFrequency(product.operationalMetadata, val.value);
1100
1219
  }
1101
1220
  };
1102
- return (_jsxs("div", { children: [_jsx("div", { className: "panel__content__form__section__header__label", style: { paddingLeft: '1rem' }, children: "Operational Metadata" }), _jsx("div", { className: "panel__content__form__section__header__prompt", style: { paddingLeft: '1rem' }, children: "Configure operational metadata for this Data Product." }), _jsxs("div", { className: "data-product-editor__operational-input", children: [_jsx("div", { className: "panel__content__form__section__header__label", style: { justifyContent: 'space-between', width: '45rem' }, children: "Coverage Regions" }), _jsx("div", { className: "panel__content__form__section__header__prompt", children: "Select the regions this Data Product covers." }), _jsx("div", { className: "panel__content__form__section__list__id-list", children: product.operationalMetadata?.coverageRegions?.map((region) => (_jsxs("div", { className: "panel__content__form__section__list__item", children: [region, _jsx("button", { className: "panel__content__form__section__list__item__remove-btn", disabled: dataProductEditorState.isReadOnly, onClick: () => handleRemoveRegion(region), tabIndex: -1, title: "Remove Region", children: _jsx(TimesIcon, {}) })] }, region))) }), _jsx("div", { className: "panel__content__form__section__list__new-item__input", children: _jsx(CustomSelectorInput, { options: getCoverageRegionOptions(), onChange: handleAddRegion, placeholder: CHOOSE_REGION, darkMode: true, disabled: isReadOnly }) })] }), _jsxs("div", { className: "data-product-editor__operational-input", children: [_jsx("div", { className: "panel__content__form__section__header__label", style: { justifyContent: 'space-between', width: '45rem' }, children: "Update Frequency" }), _jsx("div", { className: "panel__content__form__section__header__prompt", children: "Select the update frequency of this Data Product." }), _jsx("div", { className: "panel__content__form__section__list__new-item__input", children: _jsx(CustomSelectorInput, { options: Object.values(DeliveryFrequency).map((frequency) => ({
1103
- label: frequency,
1104
- value: frequency,
1105
- })), onChange: handleUpdateFrequencyChange, value: product.operationalMetadata?.updateFrequency
1106
- ? {
1107
- label: product.operationalMetadata.updateFrequency,
1108
- value: product.operationalMetadata.updateFrequency,
1109
- }
1110
- : null, placeholder: "Select update frequency...", darkMode: true, disabled: isReadOnly }) })] })] }));
1221
+ return (_jsxs("div", { children: [_jsx("div", { className: "panel__content__form__section__header__label", style: { paddingLeft: '1rem' }, children: "Operational Metadata" }), _jsx("div", { className: "panel__content__form__section__header__prompt", style: { paddingLeft: '1rem' }, children: "Configure operational metadata for this Data Product." }), _jsxs("div", { className: "data-product-editor__operational-input", children: [_jsx("div", { className: "panel__content__form__section__header__label", style: { justifyContent: 'space-between', width: '45rem' }, children: "Coverage Regions" }), _jsx("div", { className: "panel__content__form__section__header__prompt", children: "Select the regions this Data Product covers." }), _jsx("div", { className: "panel__content__form__section__list__id-list", children: product.operationalMetadata?.coverageRegions?.map((region) => (_jsxs("div", { className: "panel__content__form__section__list__item", children: [region, _jsx("button", { className: "panel__content__form__section__list__item__remove-btn", disabled: dataProductEditorState.isReadOnly, onClick: () => handleRemoveRegion(region), tabIndex: -1, title: "Remove Region", children: _jsx(TimesIcon, {}) })] }, region))) }), _jsx(CustomSelectorInput, { className: "panel__content__form__section__dropdown", options: getCoverageRegionOptions(), onChange: handleAddRegion, placeholder: CHOOSE_REGION, darkMode: true, disabled: isReadOnly })] }), _jsxs("div", { className: "data-product-editor__operational-input", children: [_jsx("div", { className: "panel__content__form__section__header__label", style: { justifyContent: 'space-between', width: '45rem' }, children: "Update Frequency" }), _jsx("div", { className: "panel__content__form__section__header__prompt", children: "Select the update frequency of this Data Product." }), _jsx(CustomSelectorInput, { className: "panel__content__form__section__dropdown", options: Object.values(DeliveryFrequency).map((frequency) => ({
1222
+ label: frequency,
1223
+ value: frequency,
1224
+ })), onChange: handleUpdateFrequencyChange, value: product.operationalMetadata?.updateFrequency
1225
+ ? {
1226
+ label: product.operationalMetadata.updateFrequency,
1227
+ value: product.operationalMetadata.updateFrequency,
1228
+ }
1229
+ : null, placeholder: "Select update frequency...", darkMode: true, disabled: isReadOnly })] })] }));
1111
1230
  });
1112
1231
  export const DataProductEditor = observer(() => {
1113
1232
  const editorStore = useEditorStore();