@finos/legend-application-studio 18.1.0 → 19.1.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 (349) 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.d.ts.map +1 -1
  35. package/lib/components/editor/edit-panel/FunctionEditor.js +33 -7
  36. package/lib/components/editor/edit-panel/FunctionEditor.js.map +1 -1
  37. package/lib/components/editor/edit-panel/GrammarTextEditor.d.ts.map +1 -1
  38. package/lib/components/editor/edit-panel/GrammarTextEditor.js +4 -16
  39. package/lib/components/editor/edit-panel/GrammarTextEditor.js.map +1 -1
  40. package/lib/components/editor/edit-panel/ModelImporter.d.ts.map +1 -1
  41. package/lib/components/editor/edit-panel/ModelImporter.js +6 -32
  42. package/lib/components/editor/edit-panel/ModelImporter.js.map +1 -1
  43. package/lib/components/editor/edit-panel/connection-editor/DatabaseBuilder.js +2 -3
  44. package/lib/components/editor/edit-panel/connection-editor/DatabaseBuilder.js.map +1 -1
  45. package/lib/components/editor/edit-panel/connection-editor/RelationalDatabaseConnectionEditor.d.ts.map +1 -1
  46. package/lib/components/editor/edit-panel/connection-editor/RelationalDatabaseConnectionEditor.js +14 -15
  47. package/lib/components/editor/edit-panel/connection-editor/RelationalDatabaseConnectionEditor.js.map +1 -1
  48. package/lib/components/editor/edit-panel/connection-editor/post-processor-editor/MapperPostProcessorEditor.d.ts.map +1 -1
  49. package/lib/components/editor/edit-panel/connection-editor/post-processor-editor/MapperPostProcessorEditor.js +12 -6
  50. package/lib/components/editor/edit-panel/connection-editor/post-processor-editor/MapperPostProcessorEditor.js.map +1 -1
  51. package/lib/components/editor/edit-panel/data-editor/DataElementEditor.d.ts.map +1 -1
  52. package/lib/components/editor/edit-panel/data-editor/DataElementEditor.js +3 -3
  53. package/lib/components/editor/edit-panel/data-editor/DataElementEditor.js.map +1 -1
  54. package/lib/components/editor/edit-panel/data-editor/EmbeddedDataEditor.d.ts.map +1 -1
  55. package/lib/components/editor/edit-panel/data-editor/EmbeddedDataEditor.js +3 -4
  56. package/lib/components/editor/edit-panel/data-editor/EmbeddedDataEditor.js.map +1 -1
  57. package/lib/components/editor/edit-panel/data-editor/RelationalCSVDataEditor.d.ts.map +1 -1
  58. package/lib/components/editor/edit-panel/data-editor/RelationalCSVDataEditor.js +7 -8
  59. package/lib/components/editor/edit-panel/data-editor/RelationalCSVDataEditor.js.map +1 -1
  60. package/lib/components/editor/edit-panel/diff-editor/EntityChangeConflictEditor.d.ts.map +1 -1
  61. package/lib/components/editor/edit-panel/diff-editor/EntityChangeConflictEditor.js +3 -3
  62. package/lib/components/editor/edit-panel/diff-editor/EntityChangeConflictEditor.js.map +1 -1
  63. package/lib/components/editor/edit-panel/element-generation-editor/ElementGenerationEditor.d.ts.map +1 -1
  64. package/lib/components/editor/edit-panel/element-generation-editor/ElementGenerationEditor.js +4 -5
  65. package/lib/components/editor/edit-panel/element-generation-editor/ElementGenerationEditor.js.map +1 -1
  66. package/lib/components/editor/edit-panel/element-generation-editor/ElementNativeView.js +2 -3
  67. package/lib/components/editor/edit-panel/element-generation-editor/ElementNativeView.js.map +1 -1
  68. package/lib/components/editor/edit-panel/element-generation-editor/FileGenerationEditor.d.ts.map +1 -1
  69. package/lib/components/editor/edit-panel/element-generation-editor/FileGenerationEditor.js +2 -3
  70. package/lib/components/editor/edit-panel/element-generation-editor/FileGenerationEditor.js.map +1 -1
  71. package/lib/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_SchemaSetElementEditor.d.ts.map +1 -1
  72. package/lib/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_SchemaSetElementEditor.js +2 -3
  73. package/lib/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_SchemaSetElementEditor.js.map +1 -1
  74. package/lib/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_SchemaSetModelGenerationEditor.d.ts.map +1 -1
  75. package/lib/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_SchemaSetModelGenerationEditor.js +2 -3
  76. package/lib/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_SchemaSetModelGenerationEditor.js.map +1 -1
  77. package/lib/components/editor/edit-panel/mapping-editor/FlatDataPropertyMappingEditor.js +3 -3
  78. package/lib/components/editor/edit-panel/mapping-editor/FlatDataPropertyMappingEditor.js.map +1 -1
  79. package/lib/components/editor/edit-panel/mapping-editor/InstanceSetImplementationEditor.d.ts.map +1 -1
  80. package/lib/components/editor/edit-panel/mapping-editor/InstanceSetImplementationEditor.js +5 -9
  81. package/lib/components/editor/edit-panel/mapping-editor/InstanceSetImplementationEditor.js.map +1 -1
  82. package/lib/components/editor/edit-panel/mapping-editor/MappingExecutionBuilder.d.ts.map +1 -1
  83. package/lib/components/editor/edit-panel/mapping-editor/MappingExecutionBuilder.js +12 -15
  84. package/lib/components/editor/edit-panel/mapping-editor/MappingExecutionBuilder.js.map +1 -1
  85. package/lib/components/editor/edit-panel/mapping-editor/MappingTestEditor.d.ts.map +1 -1
  86. package/lib/components/editor/edit-panel/mapping-editor/MappingTestEditor.js +9 -12
  87. package/lib/components/editor/edit-panel/mapping-editor/MappingTestEditor.js.map +1 -1
  88. package/lib/components/editor/edit-panel/mapping-editor/NewMappingElementModal.d.ts.map +1 -1
  89. package/lib/components/editor/edit-panel/mapping-editor/NewMappingElementModal.js +4 -5
  90. package/lib/components/editor/edit-panel/mapping-editor/NewMappingElementModal.js.map +1 -1
  91. package/lib/components/editor/edit-panel/mapping-editor/PurePropertyMappingEditor.js +4 -4
  92. package/lib/components/editor/edit-panel/mapping-editor/PurePropertyMappingEditor.js.map +1 -1
  93. package/lib/components/editor/edit-panel/mapping-editor/relational/RelationalPropertyMappingEditor.js +4 -4
  94. package/lib/components/editor/edit-panel/mapping-editor/relational/RelationalPropertyMappingEditor.js.map +1 -1
  95. package/lib/components/editor/edit-panel/project-configuration-editor/ProjectConfigurationEditor.d.ts.map +1 -1
  96. package/lib/components/editor/edit-panel/project-configuration-editor/ProjectConfigurationEditor.js +17 -41
  97. package/lib/components/editor/edit-panel/project-configuration-editor/ProjectConfigurationEditor.js.map +1 -1
  98. package/lib/components/editor/edit-panel/service-editor/NewServiceModal.d.ts.map +1 -1
  99. package/lib/components/editor/edit-panel/service-editor/NewServiceModal.js +4 -5
  100. package/lib/components/editor/edit-panel/service-editor/NewServiceModal.js.map +1 -1
  101. package/lib/components/editor/edit-panel/service-editor/ServiceExecutionEditor.js +16 -16
  102. package/lib/components/editor/edit-panel/service-editor/ServiceExecutionEditor.js.map +1 -1
  103. package/lib/components/editor/edit-panel/service-editor/ServiceExecutionQueryEditor.d.ts.map +1 -1
  104. package/lib/components/editor/edit-panel/service-editor/ServiceExecutionQueryEditor.js +6 -7
  105. package/lib/components/editor/edit-panel/service-editor/ServiceExecutionQueryEditor.js.map +1 -1
  106. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestDataEditor.js +9 -9
  107. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestDataEditor.js.map +1 -1
  108. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestableEditor.js +5 -5
  109. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestableEditor.js.map +1 -1
  110. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestsEditor.d.ts.map +1 -1
  111. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestsEditor.js +4 -2
  112. package/lib/components/editor/edit-panel/service-editor/testable/ServiceTestsEditor.js.map +1 -1
  113. package/lib/components/editor/edit-panel/testable/TestAssertionEditor.d.ts.map +1 -1
  114. package/lib/components/editor/edit-panel/testable/TestAssertionEditor.js +2 -3
  115. package/lib/components/editor/edit-panel/testable/TestAssertionEditor.js.map +1 -1
  116. package/lib/components/editor/edit-panel/uml-editor/AssociationEditor.d.ts.map +1 -1
  117. package/lib/components/editor/edit-panel/uml-editor/AssociationEditor.js +7 -5
  118. package/lib/components/editor/edit-panel/uml-editor/AssociationEditor.js.map +1 -1
  119. package/lib/components/editor/edit-panel/uml-editor/ClassEditor.d.ts.map +1 -1
  120. package/lib/components/editor/edit-panel/uml-editor/ClassEditor.js +12 -8
  121. package/lib/components/editor/edit-panel/uml-editor/ClassEditor.js.map +1 -1
  122. package/lib/components/editor/edit-panel/uml-editor/EnumerationEditor.d.ts.map +1 -1
  123. package/lib/components/editor/edit-panel/uml-editor/EnumerationEditor.js +7 -5
  124. package/lib/components/editor/edit-panel/uml-editor/EnumerationEditor.js.map +1 -1
  125. package/lib/components/editor/side-bar/CreateNewElementModal.d.ts.map +1 -1
  126. package/lib/components/editor/side-bar/CreateNewElementModal.js +4 -5
  127. package/lib/components/editor/side-bar/CreateNewElementModal.js.map +1 -1
  128. package/lib/components/editor/side-bar/Explorer.d.ts.map +1 -1
  129. package/lib/components/editor/side-bar/Explorer.js +21 -12
  130. package/lib/components/editor/side-bar/Explorer.js.map +1 -1
  131. package/lib/components/editor/side-bar/WorkflowManager.js +3 -5
  132. package/lib/components/editor/side-bar/WorkflowManager.js.map +1 -1
  133. package/lib/components/editor/side-bar/WorkspaceReview.d.ts.map +1 -1
  134. package/lib/components/editor/side-bar/WorkspaceReview.js +5 -32
  135. package/lib/components/editor/side-bar/WorkspaceReview.js.map +1 -1
  136. package/lib/components/editor/side-bar/WorkspaceUpdater.d.ts.map +1 -1
  137. package/lib/components/editor/side-bar/WorkspaceUpdater.js +2 -26
  138. package/lib/components/editor/side-bar/WorkspaceUpdater.js.map +1 -1
  139. package/lib/components/editor/side-bar/testable/GlobalTestRunner.d.ts.map +1 -1
  140. package/lib/components/editor/side-bar/testable/GlobalTestRunner.js +3 -4
  141. package/lib/components/editor/side-bar/testable/GlobalTestRunner.js.map +1 -1
  142. package/lib/components/project-viewer/ProjectViewer.d.ts.map +1 -1
  143. package/lib/components/project-viewer/ProjectViewer.js +19 -33
  144. package/lib/components/project-viewer/ProjectViewer.js.map +1 -1
  145. package/lib/components/shared/DiffView.d.ts.map +1 -1
  146. package/lib/components/shared/DiffView.js +4 -19
  147. package/lib/components/shared/DiffView.js.map +1 -1
  148. package/lib/components/workspace-review/WorkspaceReview.d.ts.map +1 -1
  149. package/lib/components/workspace-review/WorkspaceReview.js +8 -6
  150. package/lib/components/workspace-review/WorkspaceReview.js.map +1 -1
  151. package/lib/components/workspace-review/WorkspaceReviewPanel.d.ts.map +1 -1
  152. package/lib/components/workspace-review/WorkspaceReviewPanel.js +2 -2
  153. package/lib/components/workspace-review/WorkspaceReviewPanel.js.map +1 -1
  154. package/lib/components/workspace-review/WorkspaceReviewSideBar.js +1 -1
  155. package/lib/components/workspace-review/WorkspaceReviewSideBar.js.map +1 -1
  156. package/lib/components/workspace-setup/CreateProjectModal.d.ts.map +1 -1
  157. package/lib/components/workspace-setup/CreateProjectModal.js +10 -6
  158. package/lib/components/workspace-setup/CreateProjectModal.js.map +1 -1
  159. package/lib/components/workspace-setup/CreateWorkspaceModal.d.ts.map +1 -1
  160. package/lib/components/workspace-setup/CreateWorkspaceModal.js +4 -5
  161. package/lib/components/workspace-setup/CreateWorkspaceModal.js.map +1 -1
  162. package/lib/components/workspace-setup/WorkspaceSetup.d.ts.map +1 -1
  163. package/lib/components/workspace-setup/WorkspaceSetup.js +4 -1
  164. package/lib/components/workspace-setup/WorkspaceSetup.js.map +1 -1
  165. package/lib/index.css +2 -2
  166. package/lib/index.css.map +1 -1
  167. package/lib/index.d.ts +0 -1
  168. package/lib/index.d.ts.map +1 -1
  169. package/lib/index.js +0 -1
  170. package/lib/index.js.map +1 -1
  171. package/lib/package.json +5 -7
  172. package/lib/stores/EditorConfig.d.ts +0 -28
  173. package/lib/stores/EditorConfig.d.ts.map +1 -1
  174. package/lib/stores/EditorConfig.js +0 -29
  175. package/lib/stores/EditorConfig.js.map +1 -1
  176. package/lib/stores/EditorGraphState.d.ts.map +1 -1
  177. package/lib/stores/EditorGraphState.js +8 -8
  178. package/lib/stores/EditorGraphState.js.map +1 -1
  179. package/lib/stores/EditorSDLCState.d.ts.map +1 -1
  180. package/lib/stores/EditorSDLCState.js +4 -2
  181. package/lib/stores/EditorSDLCState.js.map +1 -1
  182. package/lib/stores/EditorStore.d.ts +27 -30
  183. package/lib/stores/EditorStore.d.ts.map +1 -1
  184. package/lib/stores/EditorStore.js +183 -146
  185. package/lib/stores/EditorStore.js.map +1 -1
  186. package/lib/stores/EmbeddedQueryBuilderState.d.ts +1 -1
  187. package/lib/stores/EmbeddedQueryBuilderState.d.ts.map +1 -1
  188. package/lib/stores/EmbeddedQueryBuilderState.js +7 -8
  189. package/lib/stores/EmbeddedQueryBuilderState.js.map +1 -1
  190. package/lib/stores/LegendStudioBaseStore.d.ts +1 -1
  191. package/lib/stores/LegendStudioBaseStore.d.ts.map +1 -1
  192. package/lib/stores/LegendStudioBaseStore.js +25 -17
  193. package/lib/stores/LegendStudioBaseStore.js.map +1 -1
  194. package/lib/stores/LegendStudioCommand.d.ts +32 -0
  195. package/lib/stores/LegendStudioCommand.d.ts.map +1 -0
  196. package/lib/stores/LegendStudioCommand.js +81 -0
  197. package/lib/stores/LegendStudioCommand.js.map +1 -0
  198. package/lib/stores/LegendStudioRouter.d.ts +15 -15
  199. package/lib/stores/LegendStudioRouter.d.ts.map +1 -1
  200. package/lib/stores/LegendStudioRouter.js +37 -24
  201. package/lib/stores/LegendStudioRouter.js.map +1 -1
  202. package/lib/stores/editor-state/GraphGenerationState.d.ts.map +1 -1
  203. package/lib/stores/editor-state/GraphGenerationState.js +2 -3
  204. package/lib/stores/editor-state/GraphGenerationState.js.map +1 -1
  205. package/lib/stores/editor-state/ModelImporterState.d.ts.map +1 -1
  206. package/lib/stores/editor-state/ModelImporterState.js +21 -21
  207. package/lib/stores/editor-state/ModelImporterState.js.map +1 -1
  208. package/lib/stores/editor-state/ProjectConfigurationEditorState.js +2 -2
  209. package/lib/stores/editor-state/ProjectConfigurationEditorState.js.map +1 -1
  210. package/lib/stores/editor-state/element-editor-state/mapping/MappingExecutionState.d.ts.map +1 -1
  211. package/lib/stores/editor-state/element-editor-state/mapping/MappingExecutionState.js +1 -3
  212. package/lib/stores/editor-state/element-editor-state/mapping/MappingExecutionState.js.map +1 -1
  213. package/lib/stores/editor-state/element-editor-state/service/ServiceRegistrationState.d.ts.map +1 -1
  214. package/lib/stores/editor-state/element-editor-state/service/ServiceRegistrationState.js +1 -3
  215. package/lib/stores/editor-state/element-editor-state/service/ServiceRegistrationState.js.map +1 -1
  216. package/lib/stores/editor-state/element-editor-state/testable/TestAssertionState.d.ts.map +1 -1
  217. package/lib/stores/editor-state/element-editor-state/testable/TestAssertionState.js +2 -2
  218. package/lib/stores/editor-state/element-editor-state/testable/TestAssertionState.js.map +1 -1
  219. package/lib/stores/project-viewer/ProjectViewerStore.d.ts +2 -4
  220. package/lib/stores/project-viewer/ProjectViewerStore.d.ts.map +1 -1
  221. package/lib/stores/project-viewer/ProjectViewerStore.js +45 -44
  222. package/lib/stores/project-viewer/ProjectViewerStore.js.map +1 -1
  223. package/lib/stores/shared/MockDataUtils.d.ts.map +1 -1
  224. package/lib/stores/shared/MockDataUtils.js +3 -4
  225. package/lib/stores/shared/MockDataUtils.js.map +1 -1
  226. package/lib/stores/shared/PackageTreeUtils.d.ts +1 -0
  227. package/lib/stores/shared/PackageTreeUtils.d.ts.map +1 -1
  228. package/lib/stores/shared/PackageTreeUtils.js +5 -2
  229. package/lib/stores/shared/PackageTreeUtils.js.map +1 -1
  230. package/lib/stores/shared/testable/TestableUtils.d.ts.map +1 -1
  231. package/lib/stores/shared/testable/TestableUtils.js +6 -6
  232. package/lib/stores/shared/testable/TestableUtils.js.map +1 -1
  233. package/lib/stores/sidebar-state/LocalChangesState.d.ts +1 -0
  234. package/lib/stores/sidebar-state/LocalChangesState.d.ts.map +1 -1
  235. package/lib/stores/sidebar-state/LocalChangesState.js +42 -25
  236. package/lib/stores/sidebar-state/LocalChangesState.js.map +1 -1
  237. package/lib/stores/sidebar-state/ProjectOverviewState.d.ts.map +1 -1
  238. package/lib/stores/sidebar-state/ProjectOverviewState.js +3 -2
  239. package/lib/stores/sidebar-state/ProjectOverviewState.js.map +1 -1
  240. package/lib/stores/sidebar-state/WorkspaceReviewState.d.ts.map +1 -1
  241. package/lib/stores/sidebar-state/WorkspaceReviewState.js +10 -10
  242. package/lib/stores/sidebar-state/WorkspaceReviewState.js.map +1 -1
  243. package/lib/stores/sidebar-state/WorkspaceSyncState.d.ts.map +1 -1
  244. package/lib/stores/sidebar-state/WorkspaceSyncState.js +6 -8
  245. package/lib/stores/sidebar-state/WorkspaceSyncState.js.map +1 -1
  246. package/lib/stores/sidebar-state/WorkspaceUpdateConflictResolutionState.d.ts.map +1 -1
  247. package/lib/stores/sidebar-state/WorkspaceUpdateConflictResolutionState.js +20 -17
  248. package/lib/stores/sidebar-state/WorkspaceUpdateConflictResolutionState.js.map +1 -1
  249. package/lib/stores/sidebar-state/WorkspaceUpdaterState.d.ts.map +1 -1
  250. package/lib/stores/sidebar-state/WorkspaceUpdaterState.js +8 -7
  251. package/lib/stores/sidebar-state/WorkspaceUpdaterState.js.map +1 -1
  252. package/lib/stores/workspace-setup/WorkspaceSetupStore.js +6 -6
  253. package/lib/stores/workspace-setup/WorkspaceSetupStore.js.map +1 -1
  254. package/package.json +14 -16
  255. package/src/application/LegendStudio.tsx +3 -9
  256. package/src/components/Core_LegendStudioApplicationPlugin.tsx +9 -0
  257. package/src/components/EditorComponentTestUtils.tsx +8 -2
  258. package/src/components/LegendStudioApplication.tsx +28 -8
  259. package/src/components/editor/ActivityBar.tsx +35 -73
  260. package/src/components/editor/Editor.tsx +135 -172
  261. package/src/components/editor/StatusBar.tsx +16 -13
  262. package/src/components/editor/aux-panel/AuxiliaryPanel.tsx +1 -1
  263. package/src/components/editor/command-center/ProjectSearchCommand.tsx +12 -16
  264. package/src/components/editor/edit-panel/EditPanel.tsx +14 -22
  265. package/src/components/editor/edit-panel/FileGenerationViewer.tsx +9 -11
  266. package/src/components/editor/edit-panel/FunctionEditor.tsx +51 -5
  267. package/src/components/editor/edit-panel/GrammarTextEditor.tsx +2 -18
  268. package/src/components/editor/edit-panel/ModelImporter.tsx +10 -38
  269. package/src/components/editor/edit-panel/connection-editor/DatabaseBuilder.tsx +2 -2
  270. package/src/components/editor/edit-panel/connection-editor/RelationalDatabaseConnectionEditor.tsx +32 -33
  271. package/src/components/editor/edit-panel/connection-editor/post-processor-editor/MapperPostProcessorEditor.tsx +28 -23
  272. package/src/components/editor/edit-panel/data-editor/DataElementEditor.tsx +8 -9
  273. package/src/components/editor/edit-panel/data-editor/EmbeddedDataEditor.tsx +8 -10
  274. package/src/components/editor/edit-panel/data-editor/RelationalCSVDataEditor.tsx +7 -8
  275. package/src/components/editor/edit-panel/diff-editor/EntityChangeConflictEditor.tsx +2 -2
  276. package/src/components/editor/edit-panel/element-generation-editor/ElementGenerationEditor.tsx +9 -5
  277. package/src/components/editor/edit-panel/element-generation-editor/ElementNativeView.tsx +2 -2
  278. package/src/components/editor/edit-panel/element-generation-editor/FileGenerationEditor.tsx +5 -3
  279. package/src/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_SchemaSetElementEditor.tsx +2 -3
  280. package/src/components/editor/edit-panel/external-format-editor/DSL_ExternalFormat_SchemaSetModelGenerationEditor.tsx +2 -3
  281. package/src/components/editor/edit-panel/mapping-editor/FlatDataPropertyMappingEditor.tsx +3 -3
  282. package/src/components/editor/edit-panel/mapping-editor/InstanceSetImplementationEditor.tsx +5 -9
  283. package/src/components/editor/edit-panel/mapping-editor/MappingExecutionBuilder.tsx +23 -27
  284. package/src/components/editor/edit-panel/mapping-editor/MappingTestEditor.tsx +20 -24
  285. package/src/components/editor/edit-panel/mapping-editor/NewMappingElementModal.tsx +4 -5
  286. package/src/components/editor/edit-panel/mapping-editor/PurePropertyMappingEditor.tsx +4 -4
  287. package/src/components/editor/edit-panel/mapping-editor/relational/RelationalPropertyMappingEditor.tsx +4 -4
  288. package/src/components/editor/edit-panel/project-configuration-editor/ProjectConfigurationEditor.tsx +57 -75
  289. package/src/components/editor/edit-panel/service-editor/NewServiceModal.tsx +7 -5
  290. package/src/components/editor/edit-panel/service-editor/ServiceExecutionEditor.tsx +16 -16
  291. package/src/components/editor/edit-panel/service-editor/ServiceExecutionQueryEditor.tsx +15 -14
  292. package/src/components/editor/edit-panel/service-editor/testable/ServiceTestDataEditor.tsx +9 -9
  293. package/src/components/editor/edit-panel/service-editor/testable/ServiceTestableEditor.tsx +5 -5
  294. package/src/components/editor/edit-panel/service-editor/testable/ServiceTestsEditor.tsx +4 -2
  295. package/src/components/editor/edit-panel/testable/TestAssertionEditor.tsx +2 -3
  296. package/src/components/editor/edit-panel/uml-editor/AssociationEditor.tsx +12 -5
  297. package/src/components/editor/edit-panel/uml-editor/ClassEditor.tsx +17 -11
  298. package/src/components/editor/edit-panel/uml-editor/EnumerationEditor.tsx +14 -5
  299. package/src/components/editor/side-bar/CreateNewElementModal.tsx +4 -5
  300. package/src/components/editor/side-bar/Explorer.tsx +60 -39
  301. package/src/components/editor/side-bar/WorkflowManager.tsx +3 -3
  302. package/src/components/editor/side-bar/WorkspaceReview.tsx +5 -35
  303. package/src/components/editor/side-bar/WorkspaceUpdater.tsx +2 -31
  304. package/src/components/editor/side-bar/testable/GlobalTestRunner.tsx +3 -4
  305. package/src/components/project-viewer/ProjectViewer.tsx +65 -78
  306. package/src/components/shared/DiffView.tsx +3 -22
  307. package/src/components/workspace-review/WorkspaceReview.tsx +26 -16
  308. package/src/components/workspace-review/WorkspaceReviewPanel.tsx +5 -9
  309. package/src/components/workspace-review/WorkspaceReviewSideBar.tsx +1 -1
  310. package/src/components/workspace-setup/CreateProjectModal.tsx +14 -10
  311. package/src/components/workspace-setup/CreateWorkspaceModal.tsx +6 -5
  312. package/src/components/workspace-setup/WorkspaceSetup.tsx +6 -1
  313. package/src/index.ts +0 -1
  314. package/src/stores/EditorConfig.ts +0 -30
  315. package/src/stores/EditorGraphState.ts +9 -8
  316. package/src/stores/EditorSDLCState.ts +4 -2
  317. package/src/stores/EditorStore.ts +231 -245
  318. package/src/stores/EmbeddedQueryBuilderState.ts +14 -9
  319. package/src/stores/LegendStudioBaseStore.ts +33 -24
  320. package/src/stores/LegendStudioCommand.ts +83 -0
  321. package/src/stores/LegendStudioRouter.ts +50 -41
  322. package/src/stores/editor-state/GraphGenerationState.ts +3 -2
  323. package/src/stores/editor-state/ModelImporterState.ts +35 -23
  324. package/src/stores/editor-state/ProjectConfigurationEditorState.ts +2 -2
  325. package/src/stores/editor-state/element-editor-state/mapping/MappingExecutionState.ts +1 -3
  326. package/src/stores/editor-state/element-editor-state/service/ServiceRegistrationState.ts +1 -3
  327. package/src/stores/editor-state/element-editor-state/testable/TestAssertionState.ts +2 -1
  328. package/src/stores/project-viewer/ProjectViewerStore.ts +65 -59
  329. package/src/stores/shared/MockDataUtils.ts +4 -3
  330. package/src/stores/shared/PackageTreeUtils.ts +10 -1
  331. package/src/stores/shared/testable/TestableUtils.ts +6 -5
  332. package/src/stores/sidebar-state/LocalChangesState.ts +50 -36
  333. package/src/stores/sidebar-state/ProjectOverviewState.ts +4 -2
  334. package/src/stores/sidebar-state/WorkspaceReviewState.ts +11 -10
  335. package/src/stores/sidebar-state/WorkspaceSyncState.ts +6 -8
  336. package/src/stores/sidebar-state/WorkspaceUpdateConflictResolutionState.ts +20 -17
  337. package/src/stores/sidebar-state/WorkspaceUpdaterState.ts +8 -7
  338. package/src/stores/workspace-setup/WorkspaceSetupStore.ts +6 -6
  339. package/tsconfig.json +1 -2
  340. package/lib/components/shared/StudioLambdaEditor.d.ts +0 -41
  341. package/lib/components/shared/StudioLambdaEditor.d.ts.map +0 -1
  342. package/lib/components/shared/StudioLambdaEditor.js +0 -53
  343. package/lib/components/shared/StudioLambdaEditor.js.map +0 -1
  344. package/lib/components/shared/StudioTextInputEditor.d.ts +0 -28
  345. package/lib/components/shared/StudioTextInputEditor.d.ts.map +0 -1
  346. package/lib/components/shared/StudioTextInputEditor.js +0 -36
  347. package/lib/components/shared/StudioTextInputEditor.js.map +0 -1
  348. package/src/components/shared/StudioLambdaEditor.tsx +0 -146
  349. package/src/components/shared/StudioTextInputEditor.tsx +0 -83
@@ -26,7 +26,10 @@ import {
26
26
  MarkdownTextViewer,
27
27
  PanelLoadingIndicator,
28
28
  } from '@finos/legend-art';
29
- import { LEGEND_STUDIO_ROUTE_PATTERN } from '../stores/LegendStudioRouter.js';
29
+ import {
30
+ LEGEND_STUDIO_ROUTE_PATTERN,
31
+ LEGEND_STUDIO_SDLC_BYPASSED_ROUTE_PATTERN,
32
+ } from '../stores/LegendStudioRouter.js';
30
33
  import type { LegendStudioPluginManager } from '../application/LegendStudioPluginManager.js';
31
34
  import { flowResult } from 'mobx';
32
35
  import { SDLCServerClientProvider } from '@finos/legend-server-sdlc';
@@ -120,11 +123,28 @@ export const LegendStudioApplicationRoot = observer(() => {
120
123
 
121
124
  return (
122
125
  <div className="app">
123
- {!baseStore.isSDLCAuthorized && (
126
+ {baseStore.isSDLCAuthorized === false && (
124
127
  <div className="app__page">
125
128
  <PanelLoadingIndicator isLoading={true} />
126
129
  </div>
127
130
  )}
131
+ {baseStore.isSDLCAuthorized === undefined && (
132
+ <>
133
+ <Switch>
134
+ <Route
135
+ exact={true}
136
+ path={[
137
+ LEGEND_STUDIO_SDLC_BYPASSED_ROUTE_PATTERN.VIEW_BY_GAV,
138
+ LEGEND_STUDIO_SDLC_BYPASSED_ROUTE_PATTERN.VIEW_BY_GAV_ENTITY,
139
+ ]}
140
+ component={ProjectViewer}
141
+ />
142
+ <Route>
143
+ <LegendStudioNotFoundRouteScreen />
144
+ </Route>
145
+ </Switch>
146
+ </>
147
+ )}
128
148
  {baseStore.isSDLCAuthorized && (
129
149
  <>
130
150
  {/* TODO: consider moving this to `LegendApplicationComponentFrameworkProvider` */}
@@ -134,8 +154,6 @@ export const LegendStudioApplicationRoot = observer(() => {
134
154
  exact={true}
135
155
  path={[
136
156
  LEGEND_STUDIO_ROUTE_PATTERN.VIEW,
137
- LEGEND_STUDIO_ROUTE_PATTERN.VIEW_BY_GAV,
138
- LEGEND_STUDIO_ROUTE_PATTERN.VIEW_BY_GAV_ENTITY,
139
157
  LEGEND_STUDIO_ROUTE_PATTERN.VIEW_BY_ENTITY,
140
158
  LEGEND_STUDIO_ROUTE_PATTERN.VIEW_BY_REVISION,
141
159
  LEGEND_STUDIO_ROUTE_PATTERN.VIEW_BY_VERSION,
@@ -153,8 +171,10 @@ export const LegendStudioApplicationRoot = observer(() => {
153
171
  exact={true}
154
172
  strict={true}
155
173
  path={[
156
- LEGEND_STUDIO_ROUTE_PATTERN.EDIT_GROUP,
157
- LEGEND_STUDIO_ROUTE_PATTERN.EDIT,
174
+ LEGEND_STUDIO_ROUTE_PATTERN.EDIT_GROUP_WORKSPACE,
175
+ LEGEND_STUDIO_ROUTE_PATTERN.EDIT_GROUP_WORKSPACE_ENTITY,
176
+ LEGEND_STUDIO_ROUTE_PATTERN.EDIT_WORKSPACE,
177
+ LEGEND_STUDIO_ROUTE_PATTERN.EDIT_WORKSPACE_ENTITY,
158
178
  ]}
159
179
  component={Editor}
160
180
  />
@@ -163,8 +183,8 @@ export const LegendStudioApplicationRoot = observer(() => {
163
183
  path={[
164
184
  // root path will lead to setup page (home page)
165
185
  '/',
166
- LEGEND_STUDIO_ROUTE_PATTERN.SETUP,
167
- LEGEND_STUDIO_ROUTE_PATTERN.SETUP_GROUP,
186
+ LEGEND_STUDIO_ROUTE_PATTERN.SETUP_WORKSPACE,
187
+ LEGEND_STUDIO_ROUTE_PATTERN.SETUP_GROUP_WORKSPACE,
168
188
  ]}
169
189
  component={WorkspaceSetup}
170
190
  />
@@ -15,16 +15,14 @@
15
15
  */
16
16
 
17
17
  import { observer } from 'mobx-react-lite';
18
- import { ACTIVITY_MODE } from '../../stores/EditorConfig.js';
18
+ import { ACTIVITY_MODE, AUX_PANEL_MODE } from '../../stores/EditorConfig.js';
19
19
  import { LEGEND_STUDIO_TEST_ID } from '../LegendStudioTestID.js';
20
20
  import {
21
- CheckIcon,
22
21
  clsx,
23
22
  DropdownMenu,
24
23
  RepoIcon,
25
24
  MenuContent,
26
25
  MenuContentItem,
27
- MenuContentItemIcon,
28
26
  MenuContentItemLabel,
29
27
  GitPullRequestIcon,
30
28
  GitMergeIcon,
@@ -48,16 +46,14 @@ import { useLegendStudioApplicationStore } from '../LegendStudioBaseStoreProvide
48
46
  const SettingsMenu = observer(
49
47
  forwardRef<HTMLDivElement, unknown>(function SettingsMenu(props, ref) {
50
48
  const editorStore = useEditorStore();
51
- const toggleDevTool = (): void => {
52
- editorStore.setDevTool(!editorStore.isDevToolEnabled);
49
+ const showDeveloperTool = (): void => {
50
+ editorStore.auxPanelDisplayState.open();
51
+ editorStore.setActiveAuxPanelMode(AUX_PANEL_MODE.DEV_TOOL);
53
52
  };
54
53
 
55
54
  return (
56
55
  <MenuContent ref={ref} className="activity-bar__setting__menu">
57
- <MenuContentItem onClick={toggleDevTool}>
58
- <MenuContentItemIcon>
59
- {editorStore.isDevToolEnabled ? <CheckIcon /> : null}
60
- </MenuContentItemIcon>
56
+ <MenuContentItem onClick={showDeveloperTool}>
61
57
  <MenuContentItemLabel>Show Developer Tool</MenuContentItemLabel>
62
58
  </MenuContentItem>
63
59
  </MenuContent>
@@ -76,10 +72,6 @@ export const ActivityBarMenu: React.FC = () => {
76
72
  const applicationStore = useLegendStudioApplicationStore();
77
73
  const appDocUrl = applicationStore.documentationService.url;
78
74
 
79
- // menu
80
- const [openMenuDropdown, setOpenMenuDropdown] = useState(false);
81
- const showMenuDropdown = (): void => setOpenMenuDropdown(true);
82
- const hideMenuDropdown = (): void => setOpenMenuDropdown(false);
83
75
  // about modal
84
76
  const [openAppInfo, setOpenAppInfo] = useState(false);
85
77
  const showAppInfo = (): void => setOpenAppInfo(true);
@@ -106,58 +98,34 @@ export const ActivityBarMenu: React.FC = () => {
106
98
 
107
99
  return (
108
100
  <>
109
- <DropdownMenu
110
- className={clsx('app__header__action', {
111
- 'menu__trigger--on-menu-open': openMenuDropdown,
112
- })}
113
- onClose={hideMenuDropdown}
114
- menuProps={{
115
- anchorOrigin: { vertical: 'top', horizontal: 'right' },
116
- transformOrigin: { vertical: 'top', horizontal: 'left' },
117
- elevation: 7,
118
- }}
119
- content={
120
- <MenuContent className="app__header__menu">
121
- <MenuContentItem
122
- className="app__header__menu__item"
123
- onClick={showAppInfo}
124
- >
125
- About
126
- </MenuContentItem>
127
- <MenuContentItem
128
- className="app__header__menu__item"
129
- onClick={openHelp}
130
- >
131
- Help...
132
- </MenuContentItem>
133
- <MenuContentItem
134
- className="app__header__menu__item"
135
- disabled={!appDocUrl}
136
- onClick={goToDocumentation}
137
- >
138
- See Documentation
139
- </MenuContentItem>
140
- <MenuContentDivider />
141
- <MenuContentItem
142
- className="app__header__menu__item"
143
- onClick={goToWorkspaceSetup}
144
- >
145
- Back to workspace setup
146
- </MenuContentItem>
147
- </MenuContent>
148
- }
149
- >
150
- <div className="activity-bar__menu">
151
- <button
152
- className="activity-bar__menu-item"
153
- tabIndex={-1}
154
- onClick={showMenuDropdown}
155
- title="Menu"
156
- >
157
- <MenuIcon />
158
- </button>
159
- </div>
160
- </DropdownMenu>
101
+ <div className="activity-bar__menu">
102
+ <DropdownMenu
103
+ className="activity-bar__menu-item"
104
+ menuProps={{
105
+ anchorOrigin: { vertical: 'top', horizontal: 'right' },
106
+ transformOrigin: { vertical: 'top', horizontal: 'left' },
107
+ elevation: 7,
108
+ }}
109
+ content={
110
+ <MenuContent>
111
+ <MenuContentItem onClick={showAppInfo}>About</MenuContentItem>
112
+ <MenuContentItem onClick={openHelp}>Help...</MenuContentItem>
113
+ <MenuContentItem
114
+ disabled={!appDocUrl}
115
+ onClick={goToDocumentation}
116
+ >
117
+ See Documentation
118
+ </MenuContentItem>
119
+ <MenuContentDivider />
120
+ <MenuContentItem onClick={goToWorkspaceSetup}>
121
+ Back to workspace setup
122
+ </MenuContentItem>
123
+ </MenuContent>
124
+ }
125
+ >
126
+ <MenuIcon />
127
+ </DropdownMenu>
128
+ </div>
161
129
  <LegendStudioAppInfo open={openAppInfo} closeModal={hideAppInfo} />
162
130
  </>
163
131
  );
@@ -373,7 +341,7 @@ export const ActivityBar = observer(() => {
373
341
  ))}
374
342
  </div>
375
343
  <DropdownMenu
376
- className="activity-bar__setting"
344
+ className="activity-bar__item"
377
345
  content={<SettingsMenu />}
378
346
  menuProps={{
379
347
  anchorOrigin: { vertical: 'bottom', horizontal: 'right' },
@@ -381,13 +349,7 @@ export const ActivityBar = observer(() => {
381
349
  elevation: 7,
382
350
  }}
383
351
  >
384
- <button
385
- className="activity-bar__item"
386
- tabIndex={-1}
387
- title="Settings..."
388
- >
389
- <CogIcon />
390
- </button>
352
+ <CogIcon />
391
353
  </DropdownMenu>
392
354
  </div>
393
355
  );
@@ -18,8 +18,7 @@ import { Fragment, useEffect } from 'react';
18
18
  import { observer } from 'mobx-react-lite';
19
19
  import {
20
20
  type ResizablePanelHandlerProps,
21
- buildReactHotkeysConfiguration,
22
- getControlledResizablePanelProps,
21
+ getCollapsiblePanelGroupProps,
23
22
  ResizablePanel,
24
23
  ResizablePanelGroup,
25
24
  ResizablePanelSplitter,
@@ -29,22 +28,21 @@ import {
29
28
  import { AuxiliaryPanel } from './aux-panel/AuxiliaryPanel.js';
30
29
  import { SideBar } from './side-bar/SideBar.js';
31
30
  import { EditPanel, EditPanelSplashScreen } from './edit-panel/EditPanel.js';
32
- import { GlobalHotKeys } from 'react-hotkeys';
33
31
  import { GrammarTextEditor } from './edit-panel/GrammarTextEditor.js';
34
32
  import { StatusBar } from './StatusBar.js';
35
33
  import { ActivityBar } from './ActivityBar.js';
36
- import type {
37
- EditorPathParams,
38
- GroupEditorPathParams,
39
- } from '../../stores/LegendStudioRouter.js';
34
+ import type { WorkspaceEditorPathParams } from '../../stores/LegendStudioRouter.js';
40
35
  import { ProjectSearchCommand } from '../editor/command-center/ProjectSearchCommand.js';
41
- import { isNonNullable } from '@finos/legend-shared';
36
+ import { guaranteeNonNullable, isNonNullable } from '@finos/legend-shared';
42
37
  import { flowResult } from 'mobx';
43
38
  import { useEditorStore, withEditorStore } from './EditorStoreProvider.js';
44
39
  import {
45
40
  useApplicationStore,
46
41
  useApplicationNavigationContext,
47
42
  useParams,
43
+ ActionAlertType,
44
+ ActionAlertActionType,
45
+ useCommands,
48
46
  } from '@finos/legend-application';
49
47
  import { WorkspaceType } from '@finos/legend-server-sdlc';
50
48
  import { WorkspaceSyncConflictResolver } from './side-bar/WorkspaceSyncConflictResolver.js';
@@ -53,18 +51,23 @@ import { EmbeddedQueryBuilder } from '../EmbeddedQueryBuilder.js';
53
51
 
54
52
  export const Editor = withEditorStore(
55
53
  observer(() => {
56
- const params = useParams<EditorPathParams | GroupEditorPathParams>();
54
+ const params = useParams<WorkspaceEditorPathParams>();
57
55
  const projectId = params.projectId;
58
- const workspaceType = (params as { groupWorkspaceId: string | undefined })
59
- .groupWorkspaceId
56
+ const workspaceType = params.groupWorkspaceId
60
57
  ? WorkspaceType.GROUP
61
58
  : WorkspaceType.USER;
62
- const workspaceId =
63
- workspaceType === WorkspaceType.GROUP
64
- ? (params as GroupEditorPathParams).groupWorkspaceId
65
- : (params as EditorPathParams).workspaceId;
59
+ const workspaceId = guaranteeNonNullable(
60
+ params.groupWorkspaceId ?? params.workspaceId,
61
+ `Workspace/group workspace ID is not provided`,
62
+ );
66
63
  const editorStore = useEditorStore();
67
64
  const applicationStore = useApplicationStore();
65
+ const editable =
66
+ editorStore.graphManagerState.graphBuildState.hasCompleted &&
67
+ editorStore.isInitialized;
68
+ const isResolvingConflicts =
69
+ editorStore.isInConflictResolutionMode &&
70
+ !editorStore.conflictResolutionState.hasResolvedAllConflicts;
68
71
 
69
72
  // Extensions
70
73
  const extraEditorExtensionComponents = editorStore.pluginManager
@@ -79,7 +82,7 @@ export const Editor = withEditorStore(
79
82
  <Fragment key={config.key}>{config.renderer(editorStore)}</Fragment>
80
83
  ));
81
84
 
82
- // Resize
85
+ // layout
83
86
  const { ref, width, height } = useResizeDetector<HTMLDivElement>();
84
87
  // These create snapping effect on panel resizing
85
88
  const resizeSideBar = (handleProps: ResizablePanelHandlerProps): void =>
@@ -87,12 +90,29 @@ export const Editor = withEditorStore(
87
90
  (handleProps.domElement as HTMLDivElement).getBoundingClientRect()
88
91
  .width,
89
92
  );
90
-
91
93
  const resizeAuxPanel = (handleProps: ResizablePanelHandlerProps): void =>
92
94
  editorStore.auxPanelDisplayState.setSize(
93
95
  (handleProps.domElement as HTMLDivElement).getBoundingClientRect()
94
96
  .height,
95
97
  );
98
+ const sideBarCollapsiblePanelGroupProps = getCollapsiblePanelGroupProps(
99
+ editorStore.sideBarDisplayState.size === 0,
100
+ {
101
+ onStopResize: resizeSideBar,
102
+ size: editorStore.sideBarDisplayState.size,
103
+ },
104
+ );
105
+ const auxCollapsiblePanelGroupProps = getCollapsiblePanelGroupProps(
106
+ editorStore.auxPanelDisplayState.size === 0,
107
+ {
108
+ onStopResize: resizeAuxPanel,
109
+ size: editorStore.auxPanelDisplayState.size,
110
+ },
111
+ );
112
+ const maximizedAuxCollapsiblePanelGroupProps =
113
+ getCollapsiblePanelGroupProps(
114
+ editorStore.auxPanelDisplayState.isMaximized,
115
+ );
96
116
 
97
117
  useEffect(() => {
98
118
  if (ref.current) {
@@ -100,15 +120,10 @@ export const Editor = withEditorStore(
100
120
  }
101
121
  }, [editorStore, ref, height, width]);
102
122
 
103
- // Hotkeys
104
- const [hotkeyMapping, hotkeyHandlers] = buildReactHotkeysConfiguration(
105
- editorStore.hotkeys,
106
- );
107
-
108
- // Cleanup the editor
109
- useEffect(() => (): void => editorStore.cleanUp(), [editorStore]);
110
-
111
- // Initialize the app
123
+ // initialize
124
+ useEffect(() => {
125
+ editorStore.internalizeEntityPath(params);
126
+ }, [editorStore, params]);
112
127
  useEffect(() => {
113
128
  flowResult(
114
129
  editorStore.initialize(projectId, workspaceId, workspaceType),
@@ -116,165 +131,113 @@ export const Editor = withEditorStore(
116
131
  }, [editorStore, applicationStore, projectId, workspaceId, workspaceType]);
117
132
 
118
133
  useEffect(() => {
119
- applicationStore.navigator.blockPlatformNavigation([
120
- (): boolean =>
121
- editorStore.isInConflictResolutionMode ||
122
- editorStore.localChangesState.hasUnpushedChanges,
123
- ]);
134
+ applicationStore.navigator.blockNavigation(
135
+ [
136
+ (): boolean =>
137
+ editorStore.isInConflictResolutionMode ||
138
+ editorStore.localChangesState.hasUnpushedChanges,
139
+ ],
140
+ (onProceed: () => void): void => {
141
+ applicationStore.setActionAlertInfo({
142
+ // TODO?: should we make this message generic like the `BeforeUnloadEvent` message?
143
+ message: editorStore.isInConflictResolutionMode
144
+ ? 'You have not accepted the conflict resolution, the current resolution will be discarded. Leave anyway?'
145
+ : 'You have unpushed changes. Leave anyway?',
146
+ type: ActionAlertType.CAUTION,
147
+ actions: [
148
+ {
149
+ label: 'Leave this page',
150
+ type: ActionAlertActionType.PROCEED_WITH_CAUTION,
151
+ handler: (): void => onProceed(),
152
+ },
153
+ {
154
+ label: 'Stay on this page',
155
+ type: ActionAlertActionType.PROCEED,
156
+ default: true,
157
+ },
158
+ ],
159
+ });
160
+ },
161
+ );
124
162
  return (): void => {
125
- applicationStore.navigator.unblockPlatformNavigation();
163
+ applicationStore.navigator.unblockNavigation();
126
164
  };
127
165
  }, [editorStore, applicationStore]);
128
166
 
129
- // Route Navigation Blocking
130
- // See https://medium.com/@michaelchan_13570/using-react-router-v4-prompt-with-custom-modal-component-ca839f5faf39
131
- // const [blockedLocation, setBlockedLocation] = useState<
132
- // Location | undefined
133
- // >();
134
- // const retryBlockedLocation = useCallback(
135
- // (allowedNavigation: boolean): void => {
136
- // if (allowedNavigation && blockedLocation) {
137
- // applicationStore.navigator.goToLocation(blockedLocation.pathname);
138
- // }
139
- // },
140
- // [blockedLocation, applicationStore],
141
- // );
142
- // // NOTE: we have to use `useStateWithCallback` here because we want to guarantee that we call `history.push(blockedLocation.pathname)`
143
- // // after confirmedAllowNavigation is flipped, otherwise we would end up in the `false` case of handleBlockedNavigation again!
144
- // // Another way to go about this is to use `setTimeout(() => history.push(...), 0)` but it can potentially be more error-prone
145
- // // See https://www.robinwieruch.de/react-usestate-callback
146
- // const [confirmedAllowNavigation, setConfirmedAllowNavigation] =
147
- // useStateWithCallback<boolean>(false, retryBlockedLocation);
148
- // const onNavigationChangeIndicator = Boolean(
149
- // editorStore.changeDetectionState.workspaceLocalLatestRevisionState.changes
150
- // .length,
151
- // );
152
- // const handleRouteNavigationBlocking = (nextLocation: Location): boolean => {
153
- // // NOTE: as long as we're in conflict resolution, we want this block to be present
154
- // const showAlert =
155
- // editorStore.isInConflictResolutionMode ||
156
- // editorStore.hasUnpushedChanges;
157
- // if (
158
- // !editorStore.ignoreNavigationBlocking &&
159
- // !confirmedAllowNavigation &&
160
- // showAlert
161
- // ) {
162
- // editorStore.setActionAlertInfo({
163
- // message: editorStore.isInConflictResolutionMode
164
- // ? 'You have not accepted the conflict resolution, the current resolution will be discarded. Leave anyway?'
165
- // : 'You have unpushed changes. Leave anyway?',
166
- // type: ActionAlertType.CAUTION,
167
- // onEnter: (): void => editorStore.setBlockGlobalHotkeys(true),
168
- // onClose: (): void => editorStore.setBlockGlobalHotkeys(false),
169
- // actions: [
170
- // {
171
- // label: 'Leave this page',
172
- // type: ActionAlertActionType.PROCEED_WITH_CAUTION,
173
- // handler: (): void => setConfirmedAllowNavigation(true),
174
- // },
175
- // {
176
- // label: 'Stay on this page',
177
- // type: ActionAlertActionType.PROCEED,
178
- // default: true,
179
- // handler: (): void => setBlockedLocation(undefined),
180
- // },
181
- // ],
182
- // });
183
- // setBlockedLocation(nextLocation);
184
- // return false;
185
- // }
186
- // // Reset the confirm flag and the blocked location here
187
- // setBlockedLocation(undefined);
188
- // setConfirmedAllowNavigation(false);
189
- // return true;
190
- // };
191
- const editable =
192
- editorStore.graphManagerState.graphBuildState.hasCompleted &&
193
- editorStore.isInitialized;
194
- const isResolvingConflicts =
195
- editorStore.isInConflictResolutionMode &&
196
- !editorStore.conflictResolutionState.hasResolvedAllConflicts;
197
-
198
167
  useApplicationNavigationContext(
199
168
  LEGEND_STUDIO_APPLICATION_NAVIGATION_CONTEXT_KEY.EDITOR,
200
169
  );
201
170
 
171
+ useCommands(editorStore);
172
+
173
+ // Cleanup the editor
174
+ useEffect(() => (): void => editorStore.cleanUp(), [editorStore]);
175
+
202
176
  return (
203
177
  <div className="app__page">
204
178
  <div className="editor">
205
- <GlobalHotKeys
206
- keyMap={hotkeyMapping}
207
- handlers={hotkeyHandlers}
208
- allowChanges={true}
209
- >
210
- <div className="editor__body">
211
- <ActivityBar />
212
- <div ref={ref} className="editor__content-container">
213
- <div className="editor__content">
214
- <ResizablePanelGroup orientation="vertical">
215
- <ResizablePanel
216
- {...getControlledResizablePanelProps(
217
- editorStore.sideBarDisplayState.size === 0,
218
- {
219
- onStopResize: resizeSideBar,
220
- size: editorStore.sideBarDisplayState.size,
221
- },
222
- )}
223
- direction={1}
224
- >
225
- <SideBar />
226
- </ResizablePanel>
227
- <ResizablePanelSplitter />
228
- <ResizablePanel minSize={300}>
229
- <ResizablePanelGroup orientation="horizontal">
230
- <ResizablePanel
231
- {...getControlledResizablePanelProps(
232
- editorStore.auxPanelDisplayState.isMaximized,
233
- )}
234
- >
235
- {(isResolvingConflicts || editable) &&
236
- editorStore.isInFormMode && <EditPanel />}
237
- {editable && editorStore.isInGrammarTextMode && (
238
- <GrammarTextEditor />
239
- )}
240
- {!editable && <EditPanelSplashScreen />}
241
- </ResizablePanel>
242
- <ResizablePanelSplitter>
243
- <ResizablePanelSplitterLine
244
- color={
245
- editorStore.auxPanelDisplayState.isMaximized
246
- ? 'transparent'
247
- : 'var(--color-dark-grey-250)'
248
- }
249
- />
250
- </ResizablePanelSplitter>
251
- <ResizablePanel
252
- {...getControlledResizablePanelProps(
253
- editorStore.auxPanelDisplayState.size === 0,
254
- {
255
- onStopResize: resizeAuxPanel,
256
- size: editorStore.auxPanelDisplayState.size,
257
- },
258
- )}
259
- direction={-1}
260
- >
261
- <AuxiliaryPanel />
262
- </ResizablePanel>
263
- </ResizablePanelGroup>
264
- </ResizablePanel>
265
- </ResizablePanelGroup>
266
- </div>
179
+ <div className="editor__body">
180
+ <ActivityBar />
181
+ <div ref={ref} className="editor__content-container">
182
+ <div className="editor__content">
183
+ <ResizablePanelGroup orientation="vertical">
184
+ <ResizablePanel
185
+ {...sideBarCollapsiblePanelGroupProps.collapsiblePanel}
186
+ direction={1}
187
+ >
188
+ <SideBar />
189
+ </ResizablePanel>
190
+ <ResizablePanelSplitter />
191
+ <ResizablePanel
192
+ {...sideBarCollapsiblePanelGroupProps.remainingPanel}
193
+ minSize={300}
194
+ >
195
+ <ResizablePanelGroup orientation="horizontal">
196
+ <ResizablePanel
197
+ {...maximizedAuxCollapsiblePanelGroupProps.collapsiblePanel}
198
+ {...(editorStore.auxPanelDisplayState.size === 0
199
+ ? auxCollapsiblePanelGroupProps.remainingPanel
200
+ : {})}
201
+ >
202
+ {(isResolvingConflicts || editable) &&
203
+ editorStore.isInFormMode && <EditPanel />}
204
+ {editable && editorStore.isInGrammarTextMode && (
205
+ <GrammarTextEditor />
206
+ )}
207
+ {!editable && <EditPanelSplashScreen />}
208
+ </ResizablePanel>
209
+ <ResizablePanelSplitter>
210
+ <ResizablePanelSplitterLine
211
+ color={
212
+ editorStore.auxPanelDisplayState.isMaximized
213
+ ? 'transparent'
214
+ : 'var(--color-dark-grey-250)'
215
+ }
216
+ />
217
+ </ResizablePanelSplitter>
218
+ <ResizablePanel
219
+ {...auxCollapsiblePanelGroupProps.collapsiblePanel}
220
+ {...(editorStore.auxPanelDisplayState.isMaximized
221
+ ? maximizedAuxCollapsiblePanelGroupProps.remainingPanel
222
+ : {})}
223
+ direction={-1}
224
+ >
225
+ <AuxiliaryPanel />
226
+ </ResizablePanel>
227
+ </ResizablePanelGroup>
228
+ </ResizablePanel>
229
+ </ResizablePanelGroup>
267
230
  </div>
268
231
  </div>
269
- <StatusBar actionsDisabled={!editable} />
270
- {editable && <ProjectSearchCommand />}
271
- {editorStore.localChangesState.workspaceSyncState
272
- .workspaceSyncConflictResolutionState.showModal && (
273
- <WorkspaceSyncConflictResolver />
274
- )}
275
- <EmbeddedQueryBuilder />
276
- {extraEditorExtensionComponents}
277
- </GlobalHotKeys>
232
+ </div>
233
+ <StatusBar actionsDisabled={!editable} />
234
+ {editable && <ProjectSearchCommand />}
235
+ {editorStore.localChangesState.workspaceSyncState
236
+ .workspaceSyncConflictResolutionState.showModal && (
237
+ <WorkspaceSyncConflictResolver />
238
+ )}
239
+ <EmbeddedQueryBuilder />
240
+ {extraEditorExtensionComponents}
278
241
  </div>
279
242
  </div>
280
243
  );