@finos/legend-application-studio 18.1.0 → 19.0.0

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 (343) hide show
  1. package/lib/application/LegendStudio.d.ts.map +1 -1
  2. package/lib/application/LegendStudio.js +3 -9
  3. package/lib/application/LegendStudio.js.map +1 -1
  4. package/lib/components/Core_LegendStudioApplicationPlugin.d.ts +2 -1
  5. package/lib/components/Core_LegendStudioApplicationPlugin.d.ts.map +1 -1
  6. package/lib/components/Core_LegendStudioApplicationPlugin.js +5 -1
  7. package/lib/components/Core_LegendStudioApplicationPlugin.js.map +1 -1
  8. package/lib/components/EditorComponentTestUtils.d.ts.map +1 -1
  9. package/lib/components/EditorComponentTestUtils.js +3 -3
  10. package/lib/components/EditorComponentTestUtils.js.map +1 -1
  11. package/lib/components/LegendStudioApplication.d.ts.map +1 -1
  12. package/lib/components/LegendStudioApplication.js +11 -8
  13. package/lib/components/LegendStudioApplication.js.map +1 -1
  14. package/lib/components/editor/ActivityBar.d.ts.map +1 -1
  15. package/lib/components/editor/ActivityBar.js +13 -18
  16. package/lib/components/editor/ActivityBar.js.map +1 -1
  17. package/lib/components/editor/Editor.d.ts.map +1 -1
  18. package/lib/components/editor/Editor.js +58 -95
  19. package/lib/components/editor/Editor.js.map +1 -1
  20. package/lib/components/editor/StatusBar.d.ts.map +1 -1
  21. package/lib/components/editor/StatusBar.js +4 -6
  22. package/lib/components/editor/StatusBar.js.map +1 -1
  23. package/lib/components/editor/aux-panel/AuxiliaryPanel.js +1 -1
  24. package/lib/components/editor/aux-panel/AuxiliaryPanel.js.map +1 -1
  25. package/lib/components/editor/command-center/ProjectSearchCommand.d.ts.map +1 -1
  26. package/lib/components/editor/command-center/ProjectSearchCommand.js +1 -1
  27. package/lib/components/editor/command-center/ProjectSearchCommand.js.map +1 -1
  28. package/lib/components/editor/edit-panel/EditPanel.d.ts.map +1 -1
  29. package/lib/components/editor/edit-panel/EditPanel.js +5 -5
  30. package/lib/components/editor/edit-panel/EditPanel.js.map +1 -1
  31. package/lib/components/editor/edit-panel/FileGenerationViewer.d.ts.map +1 -1
  32. package/lib/components/editor/edit-panel/FileGenerationViewer.js +2 -2
  33. package/lib/components/editor/edit-panel/FileGenerationViewer.js.map +1 -1
  34. package/lib/components/editor/edit-panel/FunctionEditor.js +2 -2
  35. package/lib/components/editor/edit-panel/FunctionEditor.js.map +1 -1
  36. package/lib/components/editor/edit-panel/GrammarTextEditor.d.ts.map +1 -1
  37. package/lib/components/editor/edit-panel/GrammarTextEditor.js +4 -16
  38. package/lib/components/editor/edit-panel/GrammarTextEditor.js.map +1 -1
  39. package/lib/components/editor/edit-panel/ModelImporter.d.ts.map +1 -1
  40. package/lib/components/editor/edit-panel/ModelImporter.js +6 -32
  41. package/lib/components/editor/edit-panel/ModelImporter.js.map +1 -1
  42. package/lib/components/editor/edit-panel/connection-editor/DatabaseBuilder.js +2 -3
  43. package/lib/components/editor/edit-panel/connection-editor/DatabaseBuilder.js.map +1 -1
  44. package/lib/components/editor/edit-panel/connection-editor/RelationalDatabaseConnectionEditor.d.ts.map +1 -1
  45. package/lib/components/editor/edit-panel/connection-editor/RelationalDatabaseConnectionEditor.js +14 -15
  46. package/lib/components/editor/edit-panel/connection-editor/RelationalDatabaseConnectionEditor.js.map +1 -1
  47. package/lib/components/editor/edit-panel/connection-editor/post-processor-editor/MapperPostProcessorEditor.d.ts.map +1 -1
  48. package/lib/components/editor/edit-panel/connection-editor/post-processor-editor/MapperPostProcessorEditor.js +12 -6
  49. package/lib/components/editor/edit-panel/connection-editor/post-processor-editor/MapperPostProcessorEditor.js.map +1 -1
  50. package/lib/components/editor/edit-panel/data-editor/DataElementEditor.d.ts.map +1 -1
  51. package/lib/components/editor/edit-panel/data-editor/DataElementEditor.js +3 -3
  52. package/lib/components/editor/edit-panel/data-editor/DataElementEditor.js.map +1 -1
  53. package/lib/components/editor/edit-panel/data-editor/EmbeddedDataEditor.d.ts.map +1 -1
  54. package/lib/components/editor/edit-panel/data-editor/EmbeddedDataEditor.js +3 -4
  55. package/lib/components/editor/edit-panel/data-editor/EmbeddedDataEditor.js.map +1 -1
  56. package/lib/components/editor/edit-panel/data-editor/RelationalCSVDataEditor.d.ts.map +1 -1
  57. package/lib/components/editor/edit-panel/data-editor/RelationalCSVDataEditor.js +7 -8
  58. package/lib/components/editor/edit-panel/data-editor/RelationalCSVDataEditor.js.map +1 -1
  59. package/lib/components/editor/edit-panel/diff-editor/EntityChangeConflictEditor.d.ts.map +1 -1
  60. package/lib/components/editor/edit-panel/diff-editor/EntityChangeConflictEditor.js +3 -3
  61. package/lib/components/editor/edit-panel/diff-editor/EntityChangeConflictEditor.js.map +1 -1
  62. package/lib/components/editor/edit-panel/element-generation-editor/ElementGenerationEditor.d.ts.map +1 -1
  63. package/lib/components/editor/edit-panel/element-generation-editor/ElementGenerationEditor.js +4 -5
  64. package/lib/components/editor/edit-panel/element-generation-editor/ElementGenerationEditor.js.map +1 -1
  65. package/lib/components/editor/edit-panel/element-generation-editor/ElementNativeView.js +2 -3
  66. package/lib/components/editor/edit-panel/element-generation-editor/ElementNativeView.js.map +1 -1
  67. package/lib/components/editor/edit-panel/element-generation-editor/FileGenerationEditor.d.ts.map +1 -1
  68. package/lib/components/editor/edit-panel/element-generation-editor/FileGenerationEditor.js +2 -3
  69. package/lib/components/editor/edit-panel/element-generation-editor/FileGenerationEditor.js.map +1 -1
  70. package/lib/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_SchemaSetElementEditor.d.ts.map +1 -1
  71. package/lib/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_SchemaSetElementEditor.js +2 -3
  72. package/lib/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_SchemaSetElementEditor.js.map +1 -1
  73. package/lib/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_SchemaSetModelGenerationEditor.d.ts.map +1 -1
  74. package/lib/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_SchemaSetModelGenerationEditor.js +2 -3
  75. package/lib/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_SchemaSetModelGenerationEditor.js.map +1 -1
  76. package/lib/components/editor/edit-panel/mapping-editor/FlatDataPropertyMappingEditor.js +3 -3
  77. package/lib/components/editor/edit-panel/mapping-editor/FlatDataPropertyMappingEditor.js.map +1 -1
  78. package/lib/components/editor/edit-panel/mapping-editor/InstanceSetImplementationEditor.d.ts.map +1 -1
  79. package/lib/components/editor/edit-panel/mapping-editor/InstanceSetImplementationEditor.js +5 -9
  80. package/lib/components/editor/edit-panel/mapping-editor/InstanceSetImplementationEditor.js.map +1 -1
  81. package/lib/components/editor/edit-panel/mapping-editor/MappingExecutionBuilder.d.ts.map +1 -1
  82. package/lib/components/editor/edit-panel/mapping-editor/MappingExecutionBuilder.js +12 -15
  83. package/lib/components/editor/edit-panel/mapping-editor/MappingExecutionBuilder.js.map +1 -1
  84. package/lib/components/editor/edit-panel/mapping-editor/MappingTestEditor.d.ts.map +1 -1
  85. package/lib/components/editor/edit-panel/mapping-editor/MappingTestEditor.js +9 -12
  86. package/lib/components/editor/edit-panel/mapping-editor/MappingTestEditor.js.map +1 -1
  87. package/lib/components/editor/edit-panel/mapping-editor/NewMappingElementModal.d.ts.map +1 -1
  88. package/lib/components/editor/edit-panel/mapping-editor/NewMappingElementModal.js +4 -5
  89. package/lib/components/editor/edit-panel/mapping-editor/NewMappingElementModal.js.map +1 -1
  90. package/lib/components/editor/edit-panel/mapping-editor/PurePropertyMappingEditor.js +4 -4
  91. package/lib/components/editor/edit-panel/mapping-editor/PurePropertyMappingEditor.js.map +1 -1
  92. package/lib/components/editor/edit-panel/mapping-editor/relational/RelationalPropertyMappingEditor.js +4 -4
  93. package/lib/components/editor/edit-panel/mapping-editor/relational/RelationalPropertyMappingEditor.js.map +1 -1
  94. package/lib/components/editor/edit-panel/project-configuration-editor/ProjectConfigurationEditor.d.ts.map +1 -1
  95. package/lib/components/editor/edit-panel/project-configuration-editor/ProjectConfigurationEditor.js +17 -41
  96. package/lib/components/editor/edit-panel/project-configuration-editor/ProjectConfigurationEditor.js.map +1 -1
  97. package/lib/components/editor/edit-panel/service-editor/NewServiceModal.d.ts.map +1 -1
  98. package/lib/components/editor/edit-panel/service-editor/NewServiceModal.js +4 -5
  99. package/lib/components/editor/edit-panel/service-editor/NewServiceModal.js.map +1 -1
  100. package/lib/components/editor/edit-panel/service-editor/ServiceExecutionEditor.js +16 -16
  101. package/lib/components/editor/edit-panel/service-editor/ServiceExecutionEditor.js.map +1 -1
  102. package/lib/components/editor/edit-panel/service-editor/ServiceExecutionQueryEditor.d.ts.map +1 -1
  103. package/lib/components/editor/edit-panel/service-editor/ServiceExecutionQueryEditor.js +6 -7
  104. package/lib/components/editor/edit-panel/service-editor/ServiceExecutionQueryEditor.js.map +1 -1
  105. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestDataEditor.js +9 -9
  106. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestDataEditor.js.map +1 -1
  107. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestableEditor.js +5 -5
  108. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestableEditor.js.map +1 -1
  109. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestsEditor.d.ts.map +1 -1
  110. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestsEditor.js +4 -2
  111. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestsEditor.js.map +1 -1
  112. package/lib/components/editor/edit-panel/testable/TestAssertionEditor.d.ts.map +1 -1
  113. package/lib/components/editor/edit-panel/testable/TestAssertionEditor.js +2 -3
  114. package/lib/components/editor/edit-panel/testable/TestAssertionEditor.js.map +1 -1
  115. package/lib/components/editor/edit-panel/uml-editor/AssociationEditor.d.ts.map +1 -1
  116. package/lib/components/editor/edit-panel/uml-editor/AssociationEditor.js +7 -5
  117. package/lib/components/editor/edit-panel/uml-editor/AssociationEditor.js.map +1 -1
  118. package/lib/components/editor/edit-panel/uml-editor/ClassEditor.d.ts.map +1 -1
  119. package/lib/components/editor/edit-panel/uml-editor/ClassEditor.js +12 -8
  120. package/lib/components/editor/edit-panel/uml-editor/ClassEditor.js.map +1 -1
  121. package/lib/components/editor/edit-panel/uml-editor/EnumerationEditor.d.ts.map +1 -1
  122. package/lib/components/editor/edit-panel/uml-editor/EnumerationEditor.js +7 -5
  123. package/lib/components/editor/edit-panel/uml-editor/EnumerationEditor.js.map +1 -1
  124. package/lib/components/editor/side-bar/CreateNewElementModal.d.ts.map +1 -1
  125. package/lib/components/editor/side-bar/CreateNewElementModal.js +4 -5
  126. package/lib/components/editor/side-bar/CreateNewElementModal.js.map +1 -1
  127. package/lib/components/editor/side-bar/Explorer.d.ts.map +1 -1
  128. package/lib/components/editor/side-bar/Explorer.js +10 -7
  129. package/lib/components/editor/side-bar/Explorer.js.map +1 -1
  130. package/lib/components/editor/side-bar/WorkflowManager.js +3 -5
  131. package/lib/components/editor/side-bar/WorkflowManager.js.map +1 -1
  132. package/lib/components/editor/side-bar/WorkspaceReview.d.ts.map +1 -1
  133. package/lib/components/editor/side-bar/WorkspaceReview.js +5 -32
  134. package/lib/components/editor/side-bar/WorkspaceReview.js.map +1 -1
  135. package/lib/components/editor/side-bar/WorkspaceUpdater.d.ts.map +1 -1
  136. package/lib/components/editor/side-bar/WorkspaceUpdater.js +2 -26
  137. package/lib/components/editor/side-bar/WorkspaceUpdater.js.map +1 -1
  138. package/lib/components/editor/side-bar/testable/GlobalTestRunner.d.ts.map +1 -1
  139. package/lib/components/editor/side-bar/testable/GlobalTestRunner.js +3 -4
  140. package/lib/components/editor/side-bar/testable/GlobalTestRunner.js.map +1 -1
  141. package/lib/components/project-viewer/ProjectViewer.d.ts.map +1 -1
  142. package/lib/components/project-viewer/ProjectViewer.js +19 -33
  143. package/lib/components/project-viewer/ProjectViewer.js.map +1 -1
  144. package/lib/components/shared/DiffView.d.ts.map +1 -1
  145. package/lib/components/shared/DiffView.js +4 -19
  146. package/lib/components/shared/DiffView.js.map +1 -1
  147. package/lib/components/workspace-review/WorkspaceReview.d.ts.map +1 -1
  148. package/lib/components/workspace-review/WorkspaceReview.js +8 -6
  149. package/lib/components/workspace-review/WorkspaceReview.js.map +1 -1
  150. package/lib/components/workspace-review/WorkspaceReviewPanel.d.ts.map +1 -1
  151. package/lib/components/workspace-review/WorkspaceReviewPanel.js +2 -2
  152. package/lib/components/workspace-review/WorkspaceReviewPanel.js.map +1 -1
  153. package/lib/components/workspace-review/WorkspaceReviewSideBar.js +1 -1
  154. package/lib/components/workspace-review/WorkspaceReviewSideBar.js.map +1 -1
  155. package/lib/components/workspace-setup/CreateProjectModal.d.ts.map +1 -1
  156. package/lib/components/workspace-setup/CreateProjectModal.js +10 -6
  157. package/lib/components/workspace-setup/CreateProjectModal.js.map +1 -1
  158. package/lib/components/workspace-setup/CreateWorkspaceModal.d.ts.map +1 -1
  159. package/lib/components/workspace-setup/CreateWorkspaceModal.js +4 -5
  160. package/lib/components/workspace-setup/CreateWorkspaceModal.js.map +1 -1
  161. package/lib/components/workspace-setup/WorkspaceSetup.d.ts.map +1 -1
  162. package/lib/components/workspace-setup/WorkspaceSetup.js +4 -1
  163. package/lib/components/workspace-setup/WorkspaceSetup.js.map +1 -1
  164. package/lib/index.css +2 -2
  165. package/lib/index.css.map +1 -1
  166. package/lib/index.d.ts +0 -1
  167. package/lib/index.d.ts.map +1 -1
  168. package/lib/index.js +0 -1
  169. package/lib/index.js.map +1 -1
  170. package/lib/package.json +5 -7
  171. package/lib/stores/EditorConfig.d.ts +0 -28
  172. package/lib/stores/EditorConfig.d.ts.map +1 -1
  173. package/lib/stores/EditorConfig.js +0 -29
  174. package/lib/stores/EditorConfig.js.map +1 -1
  175. package/lib/stores/EditorGraphState.d.ts.map +1 -1
  176. package/lib/stores/EditorGraphState.js +8 -8
  177. package/lib/stores/EditorGraphState.js.map +1 -1
  178. package/lib/stores/EditorSDLCState.d.ts.map +1 -1
  179. package/lib/stores/EditorSDLCState.js +4 -2
  180. package/lib/stores/EditorSDLCState.js.map +1 -1
  181. package/lib/stores/EditorStore.d.ts +27 -30
  182. package/lib/stores/EditorStore.d.ts.map +1 -1
  183. package/lib/stores/EditorStore.js +183 -146
  184. package/lib/stores/EditorStore.js.map +1 -1
  185. package/lib/stores/EmbeddedQueryBuilderState.d.ts +1 -1
  186. package/lib/stores/EmbeddedQueryBuilderState.d.ts.map +1 -1
  187. package/lib/stores/EmbeddedQueryBuilderState.js +7 -8
  188. package/lib/stores/EmbeddedQueryBuilderState.js.map +1 -1
  189. package/lib/stores/LegendStudioBaseStore.d.ts +1 -1
  190. package/lib/stores/LegendStudioBaseStore.d.ts.map +1 -1
  191. package/lib/stores/LegendStudioBaseStore.js +25 -17
  192. package/lib/stores/LegendStudioBaseStore.js.map +1 -1
  193. package/lib/stores/LegendStudioCommand.d.ts +32 -0
  194. package/lib/stores/LegendStudioCommand.d.ts.map +1 -0
  195. package/lib/stores/LegendStudioCommand.js +81 -0
  196. package/lib/stores/LegendStudioCommand.js.map +1 -0
  197. package/lib/stores/LegendStudioRouter.d.ts +15 -15
  198. package/lib/stores/LegendStudioRouter.d.ts.map +1 -1
  199. package/lib/stores/LegendStudioRouter.js +37 -24
  200. package/lib/stores/LegendStudioRouter.js.map +1 -1
  201. package/lib/stores/editor-state/GraphGenerationState.d.ts.map +1 -1
  202. package/lib/stores/editor-state/GraphGenerationState.js +2 -3
  203. package/lib/stores/editor-state/GraphGenerationState.js.map +1 -1
  204. package/lib/stores/editor-state/ModelImporterState.d.ts.map +1 -1
  205. package/lib/stores/editor-state/ModelImporterState.js +21 -21
  206. package/lib/stores/editor-state/ModelImporterState.js.map +1 -1
  207. package/lib/stores/editor-state/ProjectConfigurationEditorState.js +2 -2
  208. package/lib/stores/editor-state/ProjectConfigurationEditorState.js.map +1 -1
  209. package/lib/stores/editor-state/element-editor-state/mapping/MappingExecutionState.d.ts.map +1 -1
  210. package/lib/stores/editor-state/element-editor-state/mapping/MappingExecutionState.js +1 -3
  211. package/lib/stores/editor-state/element-editor-state/mapping/MappingExecutionState.js.map +1 -1
  212. package/lib/stores/editor-state/element-editor-state/service/ServiceRegistrationState.d.ts.map +1 -1
  213. package/lib/stores/editor-state/element-editor-state/service/ServiceRegistrationState.js +1 -3
  214. package/lib/stores/editor-state/element-editor-state/service/ServiceRegistrationState.js.map +1 -1
  215. package/lib/stores/editor-state/element-editor-state/testable/TestAssertionState.d.ts.map +1 -1
  216. package/lib/stores/editor-state/element-editor-state/testable/TestAssertionState.js +2 -2
  217. package/lib/stores/editor-state/element-editor-state/testable/TestAssertionState.js.map +1 -1
  218. package/lib/stores/project-viewer/ProjectViewerStore.d.ts +2 -4
  219. package/lib/stores/project-viewer/ProjectViewerStore.d.ts.map +1 -1
  220. package/lib/stores/project-viewer/ProjectViewerStore.js +45 -44
  221. package/lib/stores/project-viewer/ProjectViewerStore.js.map +1 -1
  222. package/lib/stores/shared/MockDataUtils.d.ts.map +1 -1
  223. package/lib/stores/shared/MockDataUtils.js +3 -4
  224. package/lib/stores/shared/MockDataUtils.js.map +1 -1
  225. package/lib/stores/shared/testable/TestableUtils.d.ts.map +1 -1
  226. package/lib/stores/shared/testable/TestableUtils.js +6 -6
  227. package/lib/stores/shared/testable/TestableUtils.js.map +1 -1
  228. package/lib/stores/sidebar-state/LocalChangesState.d.ts +1 -0
  229. package/lib/stores/sidebar-state/LocalChangesState.d.ts.map +1 -1
  230. package/lib/stores/sidebar-state/LocalChangesState.js +28 -10
  231. package/lib/stores/sidebar-state/LocalChangesState.js.map +1 -1
  232. package/lib/stores/sidebar-state/ProjectOverviewState.d.ts.map +1 -1
  233. package/lib/stores/sidebar-state/ProjectOverviewState.js +3 -2
  234. package/lib/stores/sidebar-state/ProjectOverviewState.js.map +1 -1
  235. package/lib/stores/sidebar-state/WorkspaceReviewState.d.ts.map +1 -1
  236. package/lib/stores/sidebar-state/WorkspaceReviewState.js +10 -10
  237. package/lib/stores/sidebar-state/WorkspaceReviewState.js.map +1 -1
  238. package/lib/stores/sidebar-state/WorkspaceSyncState.d.ts.map +1 -1
  239. package/lib/stores/sidebar-state/WorkspaceSyncState.js +6 -8
  240. package/lib/stores/sidebar-state/WorkspaceSyncState.js.map +1 -1
  241. package/lib/stores/sidebar-state/WorkspaceUpdateConflictResolutionState.d.ts.map +1 -1
  242. package/lib/stores/sidebar-state/WorkspaceUpdateConflictResolutionState.js +20 -17
  243. package/lib/stores/sidebar-state/WorkspaceUpdateConflictResolutionState.js.map +1 -1
  244. package/lib/stores/sidebar-state/WorkspaceUpdaterState.d.ts.map +1 -1
  245. package/lib/stores/sidebar-state/WorkspaceUpdaterState.js +8 -7
  246. package/lib/stores/sidebar-state/WorkspaceUpdaterState.js.map +1 -1
  247. package/lib/stores/workspace-setup/WorkspaceSetupStore.js +6 -6
  248. package/lib/stores/workspace-setup/WorkspaceSetupStore.js.map +1 -1
  249. package/package.json +14 -16
  250. package/src/application/LegendStudio.tsx +3 -9
  251. package/src/components/Core_LegendStudioApplicationPlugin.tsx +9 -0
  252. package/src/components/EditorComponentTestUtils.tsx +8 -2
  253. package/src/components/LegendStudioApplication.tsx +28 -8
  254. package/src/components/editor/ActivityBar.tsx +35 -73
  255. package/src/components/editor/Editor.tsx +135 -172
  256. package/src/components/editor/StatusBar.tsx +16 -13
  257. package/src/components/editor/aux-panel/AuxiliaryPanel.tsx +1 -1
  258. package/src/components/editor/command-center/ProjectSearchCommand.tsx +12 -16
  259. package/src/components/editor/edit-panel/EditPanel.tsx +14 -22
  260. package/src/components/editor/edit-panel/FileGenerationViewer.tsx +9 -11
  261. package/src/components/editor/edit-panel/FunctionEditor.tsx +2 -2
  262. package/src/components/editor/edit-panel/GrammarTextEditor.tsx +2 -18
  263. package/src/components/editor/edit-panel/ModelImporter.tsx +10 -38
  264. package/src/components/editor/edit-panel/connection-editor/DatabaseBuilder.tsx +2 -2
  265. package/src/components/editor/edit-panel/connection-editor/RelationalDatabaseConnectionEditor.tsx +32 -33
  266. package/src/components/editor/edit-panel/connection-editor/post-processor-editor/MapperPostProcessorEditor.tsx +28 -23
  267. package/src/components/editor/edit-panel/data-editor/DataElementEditor.tsx +8 -9
  268. package/src/components/editor/edit-panel/data-editor/EmbeddedDataEditor.tsx +8 -10
  269. package/src/components/editor/edit-panel/data-editor/RelationalCSVDataEditor.tsx +7 -8
  270. package/src/components/editor/edit-panel/diff-editor/EntityChangeConflictEditor.tsx +2 -2
  271. package/src/components/editor/edit-panel/element-generation-editor/ElementGenerationEditor.tsx +9 -5
  272. package/src/components/editor/edit-panel/element-generation-editor/ElementNativeView.tsx +2 -2
  273. package/src/components/editor/edit-panel/element-generation-editor/FileGenerationEditor.tsx +5 -3
  274. package/src/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_SchemaSetElementEditor.tsx +2 -3
  275. package/src/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_SchemaSetModelGenerationEditor.tsx +2 -3
  276. package/src/components/editor/edit-panel/mapping-editor/FlatDataPropertyMappingEditor.tsx +3 -3
  277. package/src/components/editor/edit-panel/mapping-editor/InstanceSetImplementationEditor.tsx +5 -9
  278. package/src/components/editor/edit-panel/mapping-editor/MappingExecutionBuilder.tsx +23 -27
  279. package/src/components/editor/edit-panel/mapping-editor/MappingTestEditor.tsx +20 -24
  280. package/src/components/editor/edit-panel/mapping-editor/NewMappingElementModal.tsx +4 -5
  281. package/src/components/editor/edit-panel/mapping-editor/PurePropertyMappingEditor.tsx +4 -4
  282. package/src/components/editor/edit-panel/mapping-editor/relational/RelationalPropertyMappingEditor.tsx +4 -4
  283. package/src/components/editor/edit-panel/project-configuration-editor/ProjectConfigurationEditor.tsx +57 -75
  284. package/src/components/editor/edit-panel/service-editor/NewServiceModal.tsx +7 -5
  285. package/src/components/editor/edit-panel/service-editor/ServiceExecutionEditor.tsx +16 -16
  286. package/src/components/editor/edit-panel/service-editor/ServiceExecutionQueryEditor.tsx +15 -14
  287. package/src/components/editor/edit-panel/service-editor/testable/ServiceTestDataEditor.tsx +9 -9
  288. package/src/components/editor/edit-panel/service-editor/testable/ServiceTestableEditor.tsx +5 -5
  289. package/src/components/editor/edit-panel/service-editor/testable/ServiceTestsEditor.tsx +4 -2
  290. package/src/components/editor/edit-panel/testable/TestAssertionEditor.tsx +2 -3
  291. package/src/components/editor/edit-panel/uml-editor/AssociationEditor.tsx +12 -5
  292. package/src/components/editor/edit-panel/uml-editor/ClassEditor.tsx +17 -11
  293. package/src/components/editor/edit-panel/uml-editor/EnumerationEditor.tsx +14 -5
  294. package/src/components/editor/side-bar/CreateNewElementModal.tsx +4 -5
  295. package/src/components/editor/side-bar/Explorer.tsx +31 -32
  296. package/src/components/editor/side-bar/WorkflowManager.tsx +3 -3
  297. package/src/components/editor/side-bar/WorkspaceReview.tsx +5 -35
  298. package/src/components/editor/side-bar/WorkspaceUpdater.tsx +2 -31
  299. package/src/components/editor/side-bar/testable/GlobalTestRunner.tsx +3 -4
  300. package/src/components/project-viewer/ProjectViewer.tsx +65 -78
  301. package/src/components/shared/DiffView.tsx +3 -22
  302. package/src/components/workspace-review/WorkspaceReview.tsx +26 -16
  303. package/src/components/workspace-review/WorkspaceReviewPanel.tsx +5 -9
  304. package/src/components/workspace-review/WorkspaceReviewSideBar.tsx +1 -1
  305. package/src/components/workspace-setup/CreateProjectModal.tsx +14 -10
  306. package/src/components/workspace-setup/CreateWorkspaceModal.tsx +6 -5
  307. package/src/components/workspace-setup/WorkspaceSetup.tsx +6 -1
  308. package/src/index.ts +0 -1
  309. package/src/stores/EditorConfig.ts +0 -30
  310. package/src/stores/EditorGraphState.ts +9 -8
  311. package/src/stores/EditorSDLCState.ts +4 -2
  312. package/src/stores/EditorStore.ts +231 -245
  313. package/src/stores/EmbeddedQueryBuilderState.ts +14 -9
  314. package/src/stores/LegendStudioBaseStore.ts +33 -24
  315. package/src/stores/LegendStudioCommand.ts +83 -0
  316. package/src/stores/LegendStudioRouter.ts +50 -41
  317. package/src/stores/editor-state/GraphGenerationState.ts +3 -2
  318. package/src/stores/editor-state/ModelImporterState.ts +35 -23
  319. package/src/stores/editor-state/ProjectConfigurationEditorState.ts +2 -2
  320. package/src/stores/editor-state/element-editor-state/mapping/MappingExecutionState.ts +1 -3
  321. package/src/stores/editor-state/element-editor-state/service/ServiceRegistrationState.ts +1 -3
  322. package/src/stores/editor-state/element-editor-state/testable/TestAssertionState.ts +2 -1
  323. package/src/stores/project-viewer/ProjectViewerStore.ts +65 -59
  324. package/src/stores/shared/MockDataUtils.ts +4 -3
  325. package/src/stores/shared/testable/TestableUtils.ts +6 -5
  326. package/src/stores/sidebar-state/LocalChangesState.ts +29 -9
  327. package/src/stores/sidebar-state/ProjectOverviewState.ts +4 -2
  328. package/src/stores/sidebar-state/WorkspaceReviewState.ts +11 -10
  329. package/src/stores/sidebar-state/WorkspaceSyncState.ts +6 -8
  330. package/src/stores/sidebar-state/WorkspaceUpdateConflictResolutionState.ts +20 -17
  331. package/src/stores/sidebar-state/WorkspaceUpdaterState.ts +8 -7
  332. package/src/stores/workspace-setup/WorkspaceSetupStore.ts +6 -6
  333. package/tsconfig.json +1 -2
  334. package/lib/components/shared/StudioLambdaEditor.d.ts +0 -41
  335. package/lib/components/shared/StudioLambdaEditor.d.ts.map +0 -1
  336. package/lib/components/shared/StudioLambdaEditor.js +0 -53
  337. package/lib/components/shared/StudioLambdaEditor.js.map +0 -1
  338. package/lib/components/shared/StudioTextInputEditor.d.ts +0 -28
  339. package/lib/components/shared/StudioTextInputEditor.d.ts.map +0 -1
  340. package/lib/components/shared/StudioTextInputEditor.js +0 -36
  341. package/lib/components/shared/StudioTextInputEditor.js.map +0 -1
  342. package/src/components/shared/StudioLambdaEditor.tsx +0 -146
  343. package/src/components/shared/StudioTextInputEditor.tsx +0 -83
@@ -464,10 +464,6 @@ export const CreateNewElementModal = observer(() => {
464
464
  newElementState.setName('');
465
465
  elementNameInputRef.current?.focus();
466
466
  };
467
- const handleSubmit = (event: React.FormEvent<HTMLFormElement>): void => {
468
- event.preventDefault();
469
- save();
470
- };
471
467
 
472
468
  if (!newElementState.showModal) {
473
469
  return null;
@@ -484,7 +480,10 @@ export const CreateNewElementModal = observer(() => {
484
480
  >
485
481
  <form
486
482
  data-testid={LEGEND_STUDIO_TEST_ID.NEW_ELEMENT_MODAL}
487
- onSubmit={handleSubmit}
483
+ onSubmit={(event) => {
484
+ event.preventDefault();
485
+ save();
486
+ }}
488
487
  className="modal modal--dark search-modal"
489
488
  >
490
489
  <div className="modal__title">
@@ -76,6 +76,7 @@ import {
76
76
  isDependencyElement,
77
77
  isElementReadOnly,
78
78
  Class,
79
+ isMainGraphElement,
79
80
  } from '@finos/legend-graph';
80
81
  import { useApplicationStore } from '@finos/legend-application';
81
82
  import { PACKAGEABLE_ELEMENT_TYPE } from '../../../stores/shared/ModelClassifierUtils.js';
@@ -98,8 +99,16 @@ const ElementRenamer = observer(() => {
98
99
  element instanceof Package || path.includes(ELEMENT_PATH_DELIMITER);
99
100
  const isValidElementPath =
100
101
  (element instanceof Package && isValidPath(path)) || isValidFullPath(path);
101
- const existingElement =
102
- editorStore.graphManagerState.graph.getNullableElement(path, true);
102
+ let existingElement = editorStore.graphManagerState.graph.getNullableElement(
103
+ path,
104
+ true,
105
+ );
106
+ existingElement =
107
+ existingElement instanceof Package
108
+ ? isMainGraphElement(existingElement)
109
+ ? existingElement
110
+ : undefined
111
+ : existingElement;
103
112
  const isElementUnique = !existingElement || existingElement === element;
104
113
  const elementRenameValidationErrorMessage = !isElementPathNonEmpty
105
114
  ? `Element path cannot be empty`
@@ -713,36 +722,26 @@ const ProjectExplorerActionPanel = observer((props: { disabled: boolean }) => {
713
722
  <FileImportIcon />
714
723
  </button>
715
724
  )}
716
- <DropdownMenu
717
- disabled={
718
- disabled ||
719
- isInGrammarMode ||
720
- (selectedTreeNode &&
721
- isElementReadOnly(selectedTreeNode.packageableElement))
722
- }
723
- content={<ExplorerDropdownMenu />}
724
- menuProps={{
725
- anchorOrigin: { vertical: 'bottom', horizontal: 'left' },
726
- transformOrigin: { vertical: 'top', horizontal: 'left' },
727
- elevation: 7,
728
- }}
729
- >
730
- {!editorStore.isInViewerMode && (
731
- <button
732
- disabled={
733
- disabled ||
734
- isInGrammarMode ||
735
- (selectedTreeNode &&
736
- isElementReadOnly(selectedTreeNode.packageableElement))
737
- }
738
- className="panel__header__action"
739
- tabIndex={-1}
740
- title="New Element... (Ctrl + Shift + N)"
741
- >
742
- <PlusIcon />
743
- </button>
744
- )}
745
- </DropdownMenu>
725
+ {!editorStore.isInViewerMode && (
726
+ <DropdownMenu
727
+ className="panel__header__action"
728
+ title="New Element... (Ctrl + Shift + N)"
729
+ disabled={
730
+ disabled ||
731
+ isInGrammarMode ||
732
+ (selectedTreeNode &&
733
+ isElementReadOnly(selectedTreeNode.packageableElement))
734
+ }
735
+ content={<ExplorerDropdownMenu />}
736
+ menuProps={{
737
+ anchorOrigin: { vertical: 'bottom', horizontal: 'left' },
738
+ transformOrigin: { vertical: 'top', horizontal: 'left' },
739
+ elevation: 7,
740
+ }}
741
+ >
742
+ <PlusIcon />
743
+ </DropdownMenu>
744
+ )}
746
745
  <button
747
746
  className="panel__header__action"
748
747
  disabled={disabled}
@@ -37,12 +37,12 @@ import {
37
37
  BanIcon,
38
38
  PanelContent,
39
39
  } from '@finos/legend-art';
40
- import { formatDistanceToNow } from 'date-fns';
41
40
  import { LEGEND_STUDIO_TEST_ID } from '../../LegendStudioTestID.js';
42
41
  import { flowResult } from 'mobx';
43
42
  import { WorkflowJobStatus, WorkflowStatus } from '@finos/legend-server-sdlc';
44
43
  import {
45
44
  EDITOR_LANGUAGE,
45
+ TextInputEditor,
46
46
  useApplicationStore,
47
47
  } from '@finos/legend-application';
48
48
  import {
@@ -54,11 +54,11 @@ import {
54
54
  WorkflowTreeNodeData,
55
55
  } from '../../../stores/sidebar-state/WorkflowManagerState.js';
56
56
  import {
57
+ formatDistanceToNow,
57
58
  guaranteeNonNullable,
58
59
  guaranteeType,
59
60
  isNonNullable,
60
61
  } from '@finos/legend-shared';
61
- import { StudioTextInputEditor } from '../../shared/StudioTextInputEditor.js';
62
62
 
63
63
  const getWorkflowStatusIcon = (
64
64
  workflowStatus: WorkflowStatus,
@@ -231,7 +231,7 @@ const WorkflowJobLogsViewer = observer(
231
231
  </div>
232
232
  </div>
233
233
  <div className="modal__body">
234
- <StudioTextInputEditor
234
+ <TextInputEditor
235
235
  inputValue={logs}
236
236
  isReadOnly={true}
237
237
  language={EDITOR_LANGUAGE.TEXT}
@@ -30,18 +30,14 @@ import {
30
30
  PanelContent,
31
31
  } from '@finos/legend-art';
32
32
  import { ACTIVITY_MODE } from '../../../stores/EditorConfig.js';
33
- import { formatDistanceToNow } from 'date-fns';
34
33
  import { generateReviewRoute } from '../../../stores/LegendStudioRouter.js';
35
34
  import { LEGEND_STUDIO_TEST_ID } from '../../LegendStudioTestID.js';
36
35
  import { flowResult } from 'mobx';
37
36
  import type { EntityDiff } from '@finos/legend-server-sdlc';
38
37
  import { entityDiffSorter } from '../../../stores/EditorSDLCState.js';
39
38
  import { useEditorStore } from '../EditorStoreProvider.js';
40
- import {
41
- ActionAlertType,
42
- ActionAlertActionType,
43
- } from '@finos/legend-application';
44
39
  import { useLegendStudioApplicationStore } from '../../LegendStudioBaseStoreProvider.js';
40
+ import { formatDistanceToNow } from '@finos/legend-shared';
45
41
 
46
42
  export const WorkspaceReviewDiffs = observer(() => {
47
43
  const editorStore = useEditorStore();
@@ -134,38 +130,12 @@ export const WorkspaceReview = observer(() => {
134
130
  };
135
131
  const commitReview = (): void => {
136
132
  if (workspaceReview && !isDispatchingAction) {
137
- const commit = (): void => {
133
+ editorStore.localChangesState.alertUnsavedChanges((): void => {
138
134
  workspaceReviewState.setReviewTitle('');
139
135
  flowResult(
140
136
  workspaceReviewState.commitWorkspaceReview(workspaceReview),
141
137
  ).catch(applicationStore.alertUnhandledError);
142
- };
143
- if (editorStore.localChangesState.hasUnpushedChanges) {
144
- editorStore.setActionAlertInfo({
145
- message: 'You have unpushed changes',
146
- prompt:
147
- 'This action will discard these changes and refresh the application',
148
- type: ActionAlertType.CAUTION,
149
- onEnter: (): void => editorStore.setBlockGlobalHotkeys(true),
150
- onClose: (): void => editorStore.setBlockGlobalHotkeys(false),
151
- actions: [
152
- {
153
- label: 'Proceed to commit review',
154
- type: ActionAlertActionType.PROCEED_WITH_CAUTION,
155
- handler: (): void => {
156
- commit();
157
- },
158
- },
159
- {
160
- label: 'Abort',
161
- type: ActionAlertActionType.PROCEED,
162
- default: true,
163
- },
164
- ],
165
- });
166
- } else {
167
- commit();
168
- }
138
+ });
169
139
  }
170
140
  };
171
141
  const createReview = (): void => {
@@ -239,8 +209,8 @@ export const WorkspaceReview = observer(() => {
239
209
  <>
240
210
  <form
241
211
  className="workspace-review__title"
242
- onSubmit={(e): void => {
243
- e.preventDefault();
212
+ onSubmit={(event) => {
213
+ event.preventDefault();
244
214
  }}
245
215
  >
246
216
  <div className="workspace-review__title__content">
@@ -41,10 +41,6 @@ import type {
41
41
  } from '@finos/legend-server-sdlc';
42
42
  import { entityDiffSorter } from '../../../stores/EditorSDLCState.js';
43
43
  import { useEditorStore } from '../EditorStoreProvider.js';
44
- import {
45
- ActionAlertType,
46
- ActionAlertActionType,
47
- } from '@finos/legend-application';
48
44
  import { useLegendStudioApplicationStore } from '../../LegendStudioBaseStoreProvider.js';
49
45
 
50
46
  export const WorkspaceUpdater = observer(() => {
@@ -55,36 +51,11 @@ export const WorkspaceUpdater = observer(() => {
55
51
  const workspaceUpdaterState = editorStore.workspaceUpdaterState;
56
52
  // Actions
57
53
  const updateWorkspace = (): void => {
58
- if (editorStore.localChangesState.hasUnpushedChanges) {
59
- editorStore.setActionAlertInfo({
60
- message: 'You have unpushed changes',
61
- prompt:
62
- 'This action will discard these changes and refresh the application',
63
- type: ActionAlertType.CAUTION,
64
- onEnter: (): void => editorStore.setBlockGlobalHotkeys(true),
65
- onClose: (): void => editorStore.setBlockGlobalHotkeys(false),
66
- actions: [
67
- {
68
- label: 'Proceed to update workspace',
69
- type: ActionAlertActionType.PROCEED_WITH_CAUTION,
70
- handler: (): void => {
71
- flowResult(workspaceUpdaterState.updateWorkspace()).catch(
72
- applicationStore.alertUnhandledError,
73
- );
74
- },
75
- },
76
- {
77
- label: 'Abort',
78
- type: ActionAlertActionType.PROCEED,
79
- default: true,
80
- },
81
- ],
82
- });
83
- } else {
54
+ editorStore.localChangesState.alertUnsavedChanges((): void => {
84
55
  flowResult(workspaceUpdaterState.updateWorkspace()).catch(
85
56
  applicationStore.alertUnhandledError,
86
57
  );
87
- }
58
+ });
88
59
  };
89
60
  const refreshWorkspaceUpdater = applicationStore.guardUnhandledError(() =>
90
61
  flowResult(workspaceUpdaterState.refreshWorkspaceUpdater()),
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { EDITOR_LANGUAGE } from '@finos/legend-application';
17
+ import { EDITOR_LANGUAGE, TextInputEditor } from '@finos/legend-application';
18
18
  import {
19
19
  type TreeData,
20
20
  type TreeNodeContainerProps,
@@ -62,7 +62,6 @@ import {
62
62
  import { LEGEND_STUDIO_TEST_ID } from '../../../LegendStudioTestID.js';
63
63
  import { TextDiffView } from '../../../shared/DiffView.js';
64
64
  import { getElementTypeIcon } from '../../../shared/ElementIconUtils.js';
65
- import { StudioTextInputEditor } from '../../../shared/StudioTextInputEditor.js';
66
65
  import { useEditorStore } from '../../EditorStoreProvider.js';
67
66
 
68
67
  export const getTestableResultIcon = (
@@ -169,7 +168,7 @@ const TestFailViewer = observer(
169
168
  </div>
170
169
  <div className="modal__body">
171
170
  {failure instanceof TestError && (
172
- <StudioTextInputEditor
171
+ <TextInputEditor
173
172
  inputValue={failure.error}
174
173
  isReadOnly={true}
175
174
  language={EDITOR_LANGUAGE.TEXT}
@@ -185,7 +184,7 @@ const TestFailViewer = observer(
185
184
  )}
186
185
  {failure instanceof AssertFail &&
187
186
  !(failure instanceof EqualToJsonAssertFail) && (
188
- <StudioTextInputEditor
187
+ <TextInputEditor
189
188
  inputValue={failure.message ?? ''}
190
189
  isReadOnly={true}
191
190
  language={EDITOR_LANGUAGE.TEXT}
@@ -19,18 +19,14 @@ import { observer } from 'mobx-react-lite';
19
19
  import { EditPanel } from '../editor/edit-panel/EditPanel.js';
20
20
  import { GrammarTextEditor } from '../editor/edit-panel/GrammarTextEditor.js';
21
21
  import { LEGEND_STUDIO_TEST_ID } from '../LegendStudioTestID.js';
22
- import {
23
- ACTIVITY_MODE,
24
- LEGEND_STUDIO_HOTKEY,
25
- LEGEND_STUDIO_HOTKEY_MAP,
26
- } from '../../stores/EditorConfig.js';
22
+ import { ACTIVITY_MODE } from '../../stores/EditorConfig.js';
27
23
  import {
28
24
  type ResizablePanelHandlerProps,
29
25
  clsx,
30
26
  ResizablePanel,
31
27
  ResizablePanelGroup,
32
28
  ResizablePanelSplitter,
33
- getControlledResizablePanelProps,
29
+ getCollapsiblePanelGroupProps,
34
30
  RepoIcon,
35
31
  CodeBranchIcon,
36
32
  HackerIcon,
@@ -40,7 +36,6 @@ import {
40
36
  useResizeDetector,
41
37
  } from '@finos/legend-art';
42
38
  import { isNonNullable } from '@finos/legend-shared';
43
- import { GlobalHotKeys } from 'react-hotkeys';
44
39
  import {
45
40
  useProjectViewerStore,
46
41
  withProjectViewerStore,
@@ -55,7 +50,11 @@ import {
55
50
  useEditorStore,
56
51
  withEditorStore,
57
52
  } from '../editor/EditorStoreProvider.js';
58
- import { useApplicationStore, useParams } from '@finos/legend-application';
53
+ import {
54
+ useApplicationStore,
55
+ useCommands,
56
+ useParams,
57
+ } from '@finos/legend-application';
59
58
  import {
60
59
  ActivityBarMenu,
61
60
  type ActivityDisplay,
@@ -63,7 +62,10 @@ import {
63
62
  import { Explorer } from '../editor/side-bar/Explorer.js';
64
63
  import { ProjectOverview } from '../editor/side-bar/ProjectOverview.js';
65
64
  import { WorkflowManager } from '../editor/side-bar/WorkflowManager.js';
66
- import { useLegendStudioApplicationStore } from '../LegendStudioBaseStoreProvider.js';
65
+ import {
66
+ useLegendStudioApplicationStore,
67
+ useLegendStudioBaseStore,
68
+ } from '../LegendStudioBaseStoreProvider.js';
67
69
  import { EmbeddedQueryBuilder } from '../EmbeddedQueryBuilder.js';
68
70
 
69
71
  const ProjectViewerStatusBar = observer(() => {
@@ -113,8 +115,10 @@ const ProjectViewerStatusBar = observer(() => {
113
115
  title="Go back to workspace setup using the specified project"
114
116
  tabIndex={-1}
115
117
  onClick={(): void =>
116
- applicationStore.navigator.goToLocation(
117
- generateSetupRoute(projectId),
118
+ applicationStore.navigator.visitAddress(
119
+ applicationStore.navigator.generateAddress(
120
+ generateSetupRoute(projectId),
121
+ ),
118
122
  )
119
123
  }
120
124
  >
@@ -169,7 +173,7 @@ const ProjectViewerStatusBar = observer(() => {
169
173
 
170
174
  const ProjectViewerSideBar = observer(() => {
171
175
  const viewerStore = useProjectViewerStore();
172
- const editorStore = viewerStore.editorStore;
176
+ const editorStore = useEditorStore();
173
177
  const renderSideBar = (): React.ReactNode => {
174
178
  switch (editorStore.activeActivity) {
175
179
  case ACTIVITY_MODE.EXPLORER:
@@ -195,7 +199,9 @@ const ProjectViewerSideBar = observer(() => {
195
199
 
196
200
  const ProjectViewerActivityBar = observer(() => {
197
201
  const viewerStore = useProjectViewerStore();
198
- const editorStore = viewerStore.editorStore;
202
+ const baseStore = useLegendStudioBaseStore();
203
+ const editorStore = useEditorStore();
204
+
199
205
  const changeActivity =
200
206
  (activity: ACTIVITY_MODE): (() => void) =>
201
207
  (): void =>
@@ -207,7 +213,7 @@ const ProjectViewerActivityBar = observer(() => {
207
213
  title: 'Explorer (Ctrl + Shift + X)',
208
214
  icon: <FileTrayIcon />,
209
215
  },
210
- !editorStore.isInConflictResolutionMode && {
216
+ baseStore.isSDLCAuthorized !== undefined && {
211
217
  mode: ACTIVITY_MODE.PROJECT_OVERVIEW,
212
218
  title: 'Project',
213
219
  icon: (
@@ -256,14 +262,7 @@ export const ProjectViewer = withEditorStore(
256
262
  const viewerStore = useProjectViewerStore();
257
263
  const editorStore = useEditorStore();
258
264
  const applicationStore = useApplicationStore();
259
- const allowOpeningElement =
260
- editorStore.sdlcState.currentProject &&
261
- editorStore.graphManagerState.graphBuildState.hasSucceeded;
262
- const resizeSideBar = (handleProps: ResizablePanelHandlerProps): void =>
263
- editorStore.sideBarDisplayState.setSize(
264
- (handleProps.domElement as HTMLDivElement).getBoundingClientRect()
265
- .width,
266
- );
265
+
267
266
  // Extensions
268
267
  const extraEditorExtensionComponents = editorStore.pluginManager
269
268
  .getApplicationPlugins()
@@ -276,40 +275,31 @@ export const ProjectViewer = withEditorStore(
276
275
  .map((config) => (
277
276
  <Fragment key={config.key}>{config.renderer(editorStore)}</Fragment>
278
277
  ));
279
- // Resize
280
- const { ref, width, height } = useResizeDetector<HTMLDivElement>();
281
- // Hotkeys
282
- const keyMap = {
283
- [LEGEND_STUDIO_HOTKEY.OPEN_ELEMENT]: [
284
- LEGEND_STUDIO_HOTKEY_MAP.OPEN_ELEMENT,
285
- ],
286
- [LEGEND_STUDIO_HOTKEY.TOGGLE_TEXT_MODE]: [
287
- LEGEND_STUDIO_HOTKEY_MAP.TOGGLE_TEXT_MODE,
288
- ],
289
- };
290
- const handlers = {
291
- [LEGEND_STUDIO_HOTKEY.OPEN_ELEMENT]:
292
- editorStore.createGlobalHotKeyAction(() =>
293
- editorStore.searchElementCommandState.open(),
294
- ),
295
- [LEGEND_STUDIO_HOTKEY.TOGGLE_TEXT_MODE]:
296
- editorStore.createGlobalHotKeyAction(() => {
297
- flowResult(editorStore.toggleTextMode()).catch(
298
- applicationStore.alertUnhandledError,
299
- );
300
- }),
301
- };
302
278
 
279
+ // layout
280
+ const resizeSideBar = (handleProps: ResizablePanelHandlerProps): void =>
281
+ editorStore.sideBarDisplayState.setSize(
282
+ (handleProps.domElement as HTMLDivElement).getBoundingClientRect()
283
+ .width,
284
+ );
285
+ const sideBarCollapsiblePanelGroupProps = getCollapsiblePanelGroupProps(
286
+ editorStore.sideBarDisplayState.size === 0,
287
+ {
288
+ onStopResize: resizeSideBar,
289
+ size: editorStore.sideBarDisplayState.size,
290
+ },
291
+ );
292
+ const { ref, width, height } = useResizeDetector<HTMLDivElement>();
303
293
  useEffect(() => {
304
294
  if (ref.current) {
305
295
  editorStore.auxPanelDisplayState.setMaxSize(ref.current.offsetHeight);
306
296
  }
307
297
  }, [ref, editorStore, width, height]);
308
298
 
299
+ // initialize
309
300
  useEffect(() => {
310
301
  viewerStore.internalizeEntityPath(params);
311
302
  }, [viewerStore, params]);
312
-
313
303
  // NOTE: since we internalize the entity path in the route, we should not re-initialize the graph
314
304
  // on the second call when we remove entity path from the route
315
305
  useEffect(() => {
@@ -318,43 +308,40 @@ export const ProjectViewer = withEditorStore(
318
308
  );
319
309
  }, [applicationStore, viewerStore, params]);
320
310
 
311
+ useCommands(editorStore);
312
+
321
313
  return (
322
314
  <div className="app__page">
323
315
  <div className="editor viewer">
324
- <GlobalHotKeys keyMap={keyMap} handlers={handlers}>
325
- <div className="editor__body">
326
- <ProjectViewerActivityBar />
327
- <div ref={ref} className="editor__content-container">
328
- <div className="editor__content">
329
- <ResizablePanelGroup orientation="vertical">
330
- <ResizablePanel
331
- {...getControlledResizablePanelProps(
332
- editorStore.sideBarDisplayState.size === 0,
333
- {
334
- onStopResize: resizeSideBar,
335
- size: editorStore.sideBarDisplayState.size,
336
- },
337
- )}
338
- direction={1}
339
- >
340
- <ProjectViewerSideBar />
341
- </ResizablePanel>
342
- <ResizablePanelSplitter />
343
- <ResizablePanel minSize={300}>
344
- {editorStore.isInFormMode && <EditPanel />}
345
- {editorStore.isInGrammarTextMode && (
346
- <GrammarTextEditor />
347
- )}
348
- </ResizablePanel>
349
- </ResizablePanelGroup>
350
- </div>
316
+ <div className="editor__body">
317
+ <ProjectViewerActivityBar />
318
+ <div ref={ref} className="editor__content-container">
319
+ <div className="editor__content">
320
+ <ResizablePanelGroup orientation="vertical">
321
+ <ResizablePanel
322
+ {...sideBarCollapsiblePanelGroupProps.collapsiblePanel}
323
+ direction={1}
324
+ >
325
+ <ProjectViewerSideBar />
326
+ </ResizablePanel>
327
+ <ResizablePanelSplitter />
328
+ <ResizablePanel
329
+ {...sideBarCollapsiblePanelGroupProps.remainingPanel}
330
+ minSize={300}
331
+ >
332
+ {editorStore.isInFormMode && <EditPanel />}
333
+ {editorStore.isInGrammarTextMode && <GrammarTextEditor />}
334
+ </ResizablePanel>
335
+ </ResizablePanelGroup>
351
336
  </div>
352
337
  </div>
353
- {allowOpeningElement && <ProjectSearchCommand />}
354
- <ProjectViewerStatusBar />
355
- <EmbeddedQueryBuilder />
356
- {extraEditorExtensionComponents}
357
- </GlobalHotKeys>
338
+ </div>
339
+ {editorStore.graphManagerState.graphBuildState.hasSucceeded && (
340
+ <ProjectSearchCommand />
341
+ )}
342
+ <ProjectViewerStatusBar />
343
+ <EmbeddedQueryBuilder />
344
+ {extraEditorExtensionComponents}
358
345
  </div>
359
346
  </div>
360
347
  );
@@ -16,16 +16,16 @@
16
16
 
17
17
  import { useEffect, useState, useRef } from 'react';
18
18
  import { observer } from 'mobx-react-lite';
19
- import { editor as monacoEditorAPI, KeyCode } from 'monaco-editor';
19
+ import { editor as monacoEditorAPI } from 'monaco-editor';
20
20
  import {
21
21
  EDITOR_THEME,
22
22
  EDITOR_LANGUAGE,
23
23
  TAB_SIZE,
24
24
  useApplicationStore,
25
+ createPassThroughOnKeyHandler,
25
26
  } from '@finos/legend-application';
26
27
  import {
27
28
  disposeDiffEditor,
28
- disableEditorHotKeys,
29
29
  baseTextEditorSettings,
30
30
  useResizeDetector,
31
31
  } from '@finos/legend-art';
@@ -35,7 +35,6 @@ import {
35
35
  tryToFormatJSONString,
36
36
  tryToFormatLosslessJSONString,
37
37
  } from '@finos/legend-shared';
38
- import { flowResult } from 'mobx';
39
38
  import { useEditorStore } from '../editor/EditorStoreProvider.js';
40
39
 
41
40
  export const TextDiffView = observer(
@@ -69,25 +68,7 @@ export const TextDiffView = observer(
69
68
  theme: EDITOR_THEME.LEGEND,
70
69
  readOnly: true,
71
70
  });
72
- _editor.getOriginalEditor().onKeyDown((event) => {
73
- if (event.keyCode === KeyCode.F8) {
74
- event.preventDefault();
75
- event.stopPropagation();
76
- flowResult(editorStore.toggleTextMode()).catch(
77
- applicationStore.alertUnhandledError,
78
- );
79
- }
80
- });
81
- _editor.getModifiedEditor().onKeyDown((event) => {
82
- if (event.keyCode === KeyCode.F8) {
83
- event.preventDefault();
84
- event.stopPropagation();
85
- flowResult(editorStore.toggleTextMode()).catch(
86
- applicationStore.alertUnhandledError,
87
- );
88
- }
89
- });
90
- disableEditorHotKeys(_editor);
71
+ _editor.getOriginalEditor().onKeyDown(createPassThroughOnKeyHandler());
91
72
  setEditor(_editor);
92
73
  }
93
74
  }, [applicationStore, editorStore, editor]);
@@ -25,7 +25,7 @@ import { WorkspaceReviewPanel } from './WorkspaceReviewPanel.js';
25
25
  import { ACTIVITY_MODE } from '../../stores/EditorConfig.js';
26
26
  import {
27
27
  type ResizablePanelHandlerProps,
28
- getControlledResizablePanelProps,
28
+ getCollapsiblePanelGroupProps,
29
29
  clsx,
30
30
  PanelLoadingIndicator,
31
31
  ResizablePanel,
@@ -84,8 +84,10 @@ const WorkspaceReviewStatusBar = observer(() => {
84
84
  title="Go back to workspace setup using the specified project"
85
85
  tabIndex={-1}
86
86
  onClick={(): void =>
87
- applicationStore.navigator.goToLocation(
88
- generateSetupRoute(reviewStore.projectId),
87
+ applicationStore.navigator.visitAddress(
88
+ applicationStore.navigator.generateAddress(
89
+ generateSetupRoute(reviewStore.projectId),
90
+ ),
89
91
  )
90
92
  }
91
93
  >
@@ -97,11 +99,13 @@ const WorkspaceReviewStatusBar = observer(() => {
97
99
  title="Go back to workspace setup using the specified workspace"
98
100
  tabIndex={-1}
99
101
  onClick={(): void =>
100
- applicationStore.navigator.goToLocation(
101
- generateSetupRoute(
102
- reviewStore.projectId,
103
- review.workspaceId,
104
- review.workspaceType,
102
+ applicationStore.navigator.visitAddress(
103
+ applicationStore.navigator.generateAddress(
104
+ generateSetupRoute(
105
+ reviewStore.projectId,
106
+ review.workspaceId,
107
+ review.workspaceType,
108
+ ),
105
109
  ),
106
110
  )
107
111
  }
@@ -148,10 +152,19 @@ const WorkspaceReviewExplorer = observer(() => {
148
152
  const reviewStore = useWorkspaceReviewStore();
149
153
  const editorStore = useEditorStore();
150
154
  const applicationStore = useApplicationStore();
155
+
156
+ // layout
151
157
  const resizeSideBar = (handleProps: ResizablePanelHandlerProps): void =>
152
158
  editorStore.sideBarDisplayState.setSize(
153
159
  (handleProps.domElement as HTMLDivElement).getBoundingClientRect().width,
154
160
  );
161
+ const sideBarCollapsiblePanelGroupProps = getCollapsiblePanelGroupProps(
162
+ editorStore.sideBarDisplayState.size === 0,
163
+ {
164
+ onStopResize: resizeSideBar,
165
+ size: editorStore.sideBarDisplayState.size,
166
+ },
167
+ );
155
168
 
156
169
  useEffect(() => {
157
170
  flowResult(reviewStore.fetchReviewComparison()).catch(
@@ -162,19 +175,16 @@ const WorkspaceReviewExplorer = observer(() => {
162
175
  return (
163
176
  <ResizablePanelGroup orientation="vertical">
164
177
  <ResizablePanel
165
- {...getControlledResizablePanelProps(
166
- editorStore.sideBarDisplayState.size === 0,
167
- {
168
- onStopResize: resizeSideBar,
169
- size: editorStore.sideBarDisplayState.size,
170
- },
171
- )}
178
+ {...sideBarCollapsiblePanelGroupProps.collapsiblePanel}
172
179
  direction={1}
173
180
  >
174
181
  <WorkspaceReviewSideBar />
175
182
  </ResizablePanel>
176
183
  <ResizablePanelSplitter />
177
- <ResizablePanel minSize={300}>
184
+ <ResizablePanel
185
+ {...sideBarCollapsiblePanelGroupProps.remainingPanel}
186
+ minSize={300}
187
+ >
178
188
  <WorkspaceReviewPanel />
179
189
  </ResizablePanel>
180
190
  </ResizablePanelGroup>