@finos/legend-cube-builder 0.0.0-stage → 0.0.3

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 (379) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +64 -2
  3. package/docs/adding-an-operation.md +92 -0
  4. package/docs/hosting.md +79 -0
  5. package/docs/testing.md +83 -0
  6. package/lib/__lib__/LegendCubeCommand.d.ts +26 -0
  7. package/lib/__lib__/LegendCubeCommand.d.ts.map +1 -0
  8. package/lib/__lib__/LegendCubeCommand.js +40 -0
  9. package/lib/__lib__/LegendCubeCommand.js.map +1 -0
  10. package/lib/__lib__/LegendCubeHelpText.d.ts +19 -0
  11. package/lib/__lib__/LegendCubeHelpText.d.ts.map +1 -0
  12. package/lib/__lib__/LegendCubeHelpText.js +35 -0
  13. package/lib/__lib__/LegendCubeHelpText.js.map +1 -0
  14. package/lib/__lib__/LegendCubeLabels.d.ts +87 -0
  15. package/lib/__lib__/LegendCubeLabels.d.ts.map +1 -0
  16. package/lib/__lib__/LegendCubeLabels.js +128 -0
  17. package/lib/__lib__/LegendCubeLabels.js.map +1 -0
  18. package/lib/__lib__/LegendCubeTesting.d.ts +33 -0
  19. package/lib/__lib__/LegendCubeTesting.d.ts.map +1 -0
  20. package/lib/__lib__/LegendCubeTesting.js +34 -0
  21. package/lib/__lib__/LegendCubeTesting.js.map +1 -0
  22. package/lib/__test-utils__/CubeCanvasTestUtils.d.ts +24 -0
  23. package/lib/__test-utils__/CubeCanvasTestUtils.d.ts.map +1 -0
  24. package/lib/__test-utils__/CubeCanvasTestUtils.js +37 -0
  25. package/lib/__test-utils__/CubeCanvasTestUtils.js.map +1 -0
  26. package/lib/__test-utils__/CubeEngineTestSupport.d.ts +47 -0
  27. package/lib/__test-utils__/CubeEngineTestSupport.d.ts.map +1 -0
  28. package/lib/__test-utils__/CubeEngineTestSupport.js +106 -0
  29. package/lib/__test-utils__/CubeEngineTestSupport.js.map +1 -0
  30. package/lib/__test-utils__/CubeNorthwindTestQueries.d.ts +31 -0
  31. package/lib/__test-utils__/CubeNorthwindTestQueries.d.ts.map +1 -0
  32. package/lib/__test-utils__/CubeNorthwindTestQueries.js +102 -0
  33. package/lib/__test-utils__/CubeNorthwindTestQueries.js.map +1 -0
  34. package/lib/__test-utils__/CubeOperationsTestUtils.d.ts +42 -0
  35. package/lib/__test-utils__/CubeOperationsTestUtils.d.ts.map +1 -0
  36. package/lib/__test-utils__/CubeOperationsTestUtils.js +92 -0
  37. package/lib/__test-utils__/CubeOperationsTestUtils.js.map +1 -0
  38. package/lib/__test-utils__/CubePageTestUtils.d.ts +33 -0
  39. package/lib/__test-utils__/CubePageTestUtils.d.ts.map +1 -0
  40. package/lib/__test-utils__/CubePageTestUtils.js +68 -0
  41. package/lib/__test-utils__/CubePageTestUtils.js.map +1 -0
  42. package/lib/__test-utils__/CubeTestApplication.d.ts +30 -0
  43. package/lib/__test-utils__/CubeTestApplication.d.ts.map +1 -0
  44. package/lib/__test-utils__/CubeTestApplication.js +57 -0
  45. package/lib/__test-utils__/CubeTestApplication.js.map +1 -0
  46. package/lib/__test-utils__/FakeCubeEngine.d.ts +41 -0
  47. package/lib/__test-utils__/FakeCubeEngine.d.ts.map +1 -0
  48. package/lib/__test-utils__/FakeCubeEngine.js +91 -0
  49. package/lib/__test-utils__/FakeCubeEngine.js.map +1 -0
  50. package/lib/components/CubeButton.d.ts +20 -0
  51. package/lib/components/CubeButton.d.ts.map +1 -0
  52. package/lib/components/CubeButton.js +24 -0
  53. package/lib/components/CubeButton.js.map +1 -0
  54. package/lib/components/CubeEditor.d.ts +31 -0
  55. package/lib/components/CubeEditor.d.ts.map +1 -0
  56. package/lib/components/CubeEditor.js +90 -0
  57. package/lib/components/CubeEditor.js.map +1 -0
  58. package/lib/components/CubeNodeIcon.d.ts +23 -0
  59. package/lib/components/CubeNodeIcon.d.ts.map +1 -0
  60. package/lib/components/CubeNodeIcon.js +42 -0
  61. package/lib/components/CubeNodeIcon.js.map +1 -0
  62. package/lib/components/canvas/CubeCanvas.d.ts +37 -0
  63. package/lib/components/canvas/CubeCanvas.d.ts.map +1 -0
  64. package/lib/components/canvas/CubeCanvas.js +137 -0
  65. package/lib/components/canvas/CubeCanvas.js.map +1 -0
  66. package/lib/components/canvas/CubeCanvasContext.d.ts +19 -0
  67. package/lib/components/canvas/CubeCanvasContext.d.ts.map +1 -0
  68. package/lib/components/canvas/CubeCanvasContext.js +22 -0
  69. package/lib/components/canvas/CubeCanvasContext.js.map +1 -0
  70. package/lib/components/canvas/CubeCanvasContextMenu.d.ts +28 -0
  71. package/lib/components/canvas/CubeCanvasContextMenu.d.ts.map +1 -0
  72. package/lib/components/canvas/CubeCanvasContextMenu.js +35 -0
  73. package/lib/components/canvas/CubeCanvasContextMenu.js.map +1 -0
  74. package/lib/components/canvas/CubeCanvasDnd.d.ts +43 -0
  75. package/lib/components/canvas/CubeCanvasDnd.d.ts.map +1 -0
  76. package/lib/components/canvas/CubeCanvasDnd.js +51 -0
  77. package/lib/components/canvas/CubeCanvasDnd.js.map +1 -0
  78. package/lib/components/canvas/CubeCanvasEdge.d.ts +24 -0
  79. package/lib/components/canvas/CubeCanvasEdge.d.ts.map +1 -0
  80. package/lib/components/canvas/CubeCanvasEdge.js +33 -0
  81. package/lib/components/canvas/CubeCanvasEdge.js.map +1 -0
  82. package/lib/components/canvas/CubeCanvasElements.d.ts +66 -0
  83. package/lib/components/canvas/CubeCanvasElements.d.ts.map +1 -0
  84. package/lib/components/canvas/CubeCanvasElements.js +97 -0
  85. package/lib/components/canvas/CubeCanvasElements.js.map +1 -0
  86. package/lib/components/canvas/CubeCanvasLayout.d.ts +32 -0
  87. package/lib/components/canvas/CubeCanvasLayout.d.ts.map +1 -0
  88. package/lib/components/canvas/CubeCanvasLayout.js +63 -0
  89. package/lib/components/canvas/CubeCanvasLayout.js.map +1 -0
  90. package/lib/components/canvas/CubeCanvasNode.d.ts +29 -0
  91. package/lib/components/canvas/CubeCanvasNode.d.ts.map +1 -0
  92. package/lib/components/canvas/CubeCanvasNode.js +75 -0
  93. package/lib/components/canvas/CubeCanvasNode.js.map +1 -0
  94. package/lib/components/editors/CubeColumnPicker.d.ts +47 -0
  95. package/lib/components/editors/CubeColumnPicker.d.ts.map +1 -0
  96. package/lib/components/editors/CubeColumnPicker.js +56 -0
  97. package/lib/components/editors/CubeColumnPicker.js.map +1 -0
  98. package/lib/components/editors/CubeDistinctEditor.d.ts +23 -0
  99. package/lib/components/editors/CubeDistinctEditor.d.ts.map +1 -0
  100. package/lib/components/editors/CubeDistinctEditor.js +24 -0
  101. package/lib/components/editors/CubeDistinctEditor.js.map +1 -0
  102. package/lib/components/editors/CubeFilterEditor.d.ts +26 -0
  103. package/lib/components/editors/CubeFilterEditor.d.ts.map +1 -0
  104. package/lib/components/editors/CubeFilterEditor.js +90 -0
  105. package/lib/components/editors/CubeFilterEditor.js.map +1 -0
  106. package/lib/components/editors/CubeIntegerField.d.ts +29 -0
  107. package/lib/components/editors/CubeIntegerField.d.ts.map +1 -0
  108. package/lib/components/editors/CubeIntegerField.js +30 -0
  109. package/lib/components/editors/CubeIntegerField.js.map +1 -0
  110. package/lib/components/editors/CubeJoinEditor.d.ts +26 -0
  111. package/lib/components/editors/CubeJoinEditor.d.ts.map +1 -0
  112. package/lib/components/editors/CubeJoinEditor.js +84 -0
  113. package/lib/components/editors/CubeJoinEditor.js.map +1 -0
  114. package/lib/components/editors/CubeNodeEditorPanel.d.ts +29 -0
  115. package/lib/components/editors/CubeNodeEditorPanel.d.ts.map +1 -0
  116. package/lib/components/editors/CubeNodeEditorPanel.js +72 -0
  117. package/lib/components/editors/CubeNodeEditorPanel.js.map +1 -0
  118. package/lib/components/editors/CubeNodeEditorRegistry.d.ts +44 -0
  119. package/lib/components/editors/CubeNodeEditorRegistry.d.ts.map +1 -0
  120. package/lib/components/editors/CubeNodeEditorRegistry.js +43 -0
  121. package/lib/components/editors/CubeNodeEditorRegistry.js.map +1 -0
  122. package/lib/components/editors/CubeRenameEditor.d.ts +26 -0
  123. package/lib/components/editors/CubeRenameEditor.d.ts.map +1 -0
  124. package/lib/components/editors/CubeRenameEditor.js +58 -0
  125. package/lib/components/editors/CubeRenameEditor.js.map +1 -0
  126. package/lib/components/editors/CubeRestrictEditor.d.ts +26 -0
  127. package/lib/components/editors/CubeRestrictEditor.d.ts.map +1 -0
  128. package/lib/components/editors/CubeRestrictEditor.js +23 -0
  129. package/lib/components/editors/CubeRestrictEditor.js.map +1 -0
  130. package/lib/components/editors/CubeRowCountEditor.d.ts +25 -0
  131. package/lib/components/editors/CubeRowCountEditor.d.ts.map +1 -0
  132. package/lib/components/editors/CubeRowCountEditor.js +38 -0
  133. package/lib/components/editors/CubeRowCountEditor.js.map +1 -0
  134. package/lib/components/editors/CubeSliceEditor.d.ts +25 -0
  135. package/lib/components/editors/CubeSliceEditor.d.ts.map +1 -0
  136. package/lib/components/editors/CubeSliceEditor.js +40 -0
  137. package/lib/components/editors/CubeSliceEditor.js.map +1 -0
  138. package/lib/components/editors/CubeSortEditor.d.ts +27 -0
  139. package/lib/components/editors/CubeSortEditor.d.ts.map +1 -0
  140. package/lib/components/editors/CubeSortEditor.js +72 -0
  141. package/lib/components/editors/CubeSortEditor.js.map +1 -0
  142. package/lib/components/editors/CubeSourceEditor.d.ts +25 -0
  143. package/lib/components/editors/CubeSourceEditor.d.ts.map +1 -0
  144. package/lib/components/editors/CubeSourceEditor.js +41 -0
  145. package/lib/components/editors/CubeSourceEditor.js.map +1 -0
  146. package/lib/components/editors/CubeValueEditor.d.ts +40 -0
  147. package/lib/components/editors/CubeValueEditor.d.ts.map +1 -0
  148. package/lib/components/editors/CubeValueEditor.js +178 -0
  149. package/lib/components/editors/CubeValueEditor.js.map +1 -0
  150. package/lib/components/grid/CubeGridRegion.d.ts +23 -0
  151. package/lib/components/grid/CubeGridRegion.d.ts.map +1 -0
  152. package/lib/components/grid/CubeGridRegion.js +94 -0
  153. package/lib/components/grid/CubeGridRegion.js.map +1 -0
  154. package/lib/components/grid/CubeGridValues.d.ts +25 -0
  155. package/lib/components/grid/CubeGridValues.d.ts.map +1 -0
  156. package/lib/components/grid/CubeGridValues.js +95 -0
  157. package/lib/components/grid/CubeGridValues.js.map +1 -0
  158. package/lib/components/grid/CubeResultGrid.d.ts +39 -0
  159. package/lib/components/grid/CubeResultGrid.d.ts.map +1 -0
  160. package/lib/components/grid/CubeResultGrid.js +86 -0
  161. package/lib/components/grid/CubeResultGrid.js.map +1 -0
  162. package/lib/components/palette/CubePalette.d.ts +29 -0
  163. package/lib/components/palette/CubePalette.d.ts.map +1 -0
  164. package/lib/components/palette/CubePalette.js +73 -0
  165. package/lib/components/palette/CubePalette.js.map +1 -0
  166. package/lib/components/show-pure/CubeShowPureDialog.d.ts +23 -0
  167. package/lib/components/show-pure/CubeShowPureDialog.d.ts.map +1 -0
  168. package/lib/components/show-pure/CubeShowPureDialog.js +37 -0
  169. package/lib/components/show-pure/CubeShowPureDialog.js.map +1 -0
  170. package/lib/components/source-picker/CubeSourcePicker.d.ts +22 -0
  171. package/lib/components/source-picker/CubeSourcePicker.d.ts.map +1 -0
  172. package/lib/components/source-picker/CubeSourcePicker.js +89 -0
  173. package/lib/components/source-picker/CubeSourcePicker.js.map +1 -0
  174. package/lib/components/spec-transfer/CubeSpecTransferDialog.d.ts +26 -0
  175. package/lib/components/spec-transfer/CubeSpecTransferDialog.d.ts.map +1 -0
  176. package/lib/components/spec-transfer/CubeSpecTransferDialog.js +45 -0
  177. package/lib/components/spec-transfer/CubeSpecTransferDialog.js.map +1 -0
  178. package/lib/graph-manager/CubeEngine.d.ts +128 -0
  179. package/lib/graph-manager/CubeEngine.d.ts.map +1 -0
  180. package/lib/graph-manager/CubeEngine.js +61 -0
  181. package/lib/graph-manager/CubeEngine.js.map +1 -0
  182. package/lib/graph-manager/CubeModelOutlineHelper.d.ts +33 -0
  183. package/lib/graph-manager/CubeModelOutlineHelper.d.ts.map +1 -0
  184. package/lib/graph-manager/CubeModelOutlineHelper.js +45 -0
  185. package/lib/graph-manager/CubeModelOutlineHelper.js.map +1 -0
  186. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts +26 -0
  187. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts.map +1 -0
  188. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js +22 -0
  189. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js.map +1 -0
  190. package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.d.ts +27 -0
  191. package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.d.ts.map +1 -0
  192. package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js +76 -0
  193. package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js.map +1 -0
  194. package/lib/graph-manager/protocol/pure/v1/V1_CubeExecutionResultReader.d.ts +27 -0
  195. package/lib/graph-manager/protocol/pure/v1/V1_CubeExecutionResultReader.d.ts.map +1 -0
  196. package/lib/graph-manager/protocol/pure/v1/V1_CubeExecutionResultReader.js +82 -0
  197. package/lib/graph-manager/protocol/pure/v1/V1_CubeExecutionResultReader.js.map +1 -0
  198. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.d.ts +32 -0
  199. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.d.ts.map +1 -0
  200. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js +195 -0
  201. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js.map +1 -0
  202. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts +20 -0
  203. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts.map +1 -0
  204. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js +174 -0
  205. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js.map +1 -0
  206. package/lib/graph-manager/protocol/pure/v1/V1_CubeRelationTypeAdapter.d.ts +24 -0
  207. package/lib/graph-manager/protocol/pure/v1/V1_CubeRelationTypeAdapter.d.ts.map +1 -0
  208. package/lib/graph-manager/protocol/pure/v1/V1_CubeRelationTypeAdapter.js +43 -0
  209. package/lib/graph-manager/protocol/pure/v1/V1_CubeRelationTypeAdapter.js.map +1 -0
  210. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts +45 -0
  211. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts.map +1 -0
  212. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js +171 -0
  213. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js.map +1 -0
  214. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts +22 -0
  215. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts.map +1 -0
  216. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js +79 -0
  217. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js.map +1 -0
  218. package/lib/index.css +17 -0
  219. package/lib/index.css.map +1 -0
  220. package/lib/index.d.ts +25 -0
  221. package/lib/index.d.ts.map +1 -0
  222. package/lib/index.js +24 -0
  223. package/lib/index.js.map +1 -0
  224. package/lib/stores/CubeEditorState.d.ts +236 -0
  225. package/lib/stores/CubeEditorState.d.ts.map +1 -0
  226. package/lib/stores/CubeEditorState.js +632 -0
  227. package/lib/stores/CubeEditorState.js.map +1 -0
  228. package/lib/stores/CubeExecutionState.d.ts +67 -0
  229. package/lib/stores/CubeExecutionState.d.ts.map +1 -0
  230. package/lib/stores/CubeExecutionState.js +212 -0
  231. package/lib/stores/CubeExecutionState.js.map +1 -0
  232. package/lib/stores/CubeGridQuickActions.d.ts +40 -0
  233. package/lib/stores/CubeGridQuickActions.d.ts.map +1 -0
  234. package/lib/stores/CubeGridQuickActions.js +86 -0
  235. package/lib/stores/CubeGridQuickActions.js.map +1 -0
  236. package/lib/stores/CubeHost.d.ts +31 -0
  237. package/lib/stores/CubeHost.d.ts.map +1 -0
  238. package/lib/stores/CubeHost.js +17 -0
  239. package/lib/stores/CubeHost.js.map +1 -0
  240. package/lib/stores/CubeNodeEditorState.d.ts +103 -0
  241. package/lib/stores/CubeNodeEditorState.d.ts.map +1 -0
  242. package/lib/stores/CubeNodeEditorState.js +262 -0
  243. package/lib/stores/CubeNodeEditorState.js.map +1 -0
  244. package/lib/stores/CubeShowPureState.d.ts +41 -0
  245. package/lib/stores/CubeShowPureState.d.ts.map +1 -0
  246. package/lib/stores/CubeShowPureState.js +100 -0
  247. package/lib/stores/CubeShowPureState.js.map +1 -0
  248. package/lib/stores/CubeSourcePickerState.d.ts +98 -0
  249. package/lib/stores/CubeSourcePickerState.d.ts.map +1 -0
  250. package/lib/stores/CubeSourcePickerState.js +334 -0
  251. package/lib/stores/CubeSourcePickerState.js.map +1 -0
  252. package/lib/stores/CubeSpecTransferState.d.ts +60 -0
  253. package/lib/stores/CubeSpecTransferState.d.ts.map +1 -0
  254. package/lib/stores/CubeSpecTransferState.js +167 -0
  255. package/lib/stores/CubeSpecTransferState.js.map +1 -0
  256. package/lib/stores/LocalModelCatalog.d.ts +37 -0
  257. package/lib/stores/LocalModelCatalog.d.ts.map +1 -0
  258. package/lib/stores/LocalModelCatalog.js +49 -0
  259. package/lib/stores/LocalModelCatalog.js.map +1 -0
  260. package/lib/stores/editors/CubeFilterDraft.d.ts +61 -0
  261. package/lib/stores/editors/CubeFilterDraft.d.ts.map +1 -0
  262. package/lib/stores/editors/CubeFilterDraft.js +186 -0
  263. package/lib/stores/editors/CubeFilterDraft.js.map +1 -0
  264. package/lib/stores/editors/CubeIntegerText.d.ts +24 -0
  265. package/lib/stores/editors/CubeIntegerText.d.ts.map +1 -0
  266. package/lib/stores/editors/CubeIntegerText.js +33 -0
  267. package/lib/stores/editors/CubeIntegerText.js.map +1 -0
  268. package/lib/stores/editors/CubeJoinDraft.d.ts +71 -0
  269. package/lib/stores/editors/CubeJoinDraft.d.ts.map +1 -0
  270. package/lib/stores/editors/CubeJoinDraft.js +145 -0
  271. package/lib/stores/editors/CubeJoinDraft.js.map +1 -0
  272. package/lib/stores/editors/CubeNodeDraft.d.ts +38 -0
  273. package/lib/stores/editors/CubeNodeDraft.d.ts.map +1 -0
  274. package/lib/stores/editors/CubeNodeDraft.js +35 -0
  275. package/lib/stores/editors/CubeNodeDraft.js.map +1 -0
  276. package/lib/stores/editors/CubeNodeDraftRegistry.d.ts +35 -0
  277. package/lib/stores/editors/CubeNodeDraftRegistry.d.ts.map +1 -0
  278. package/lib/stores/editors/CubeNodeDraftRegistry.js +55 -0
  279. package/lib/stores/editors/CubeNodeDraftRegistry.js.map +1 -0
  280. package/lib/stores/editors/CubeRenameDraft.d.ts +44 -0
  281. package/lib/stores/editors/CubeRenameDraft.d.ts.map +1 -0
  282. package/lib/stores/editors/CubeRenameDraft.js +79 -0
  283. package/lib/stores/editors/CubeRenameDraft.js.map +1 -0
  284. package/lib/stores/editors/CubeRestrictDraft.d.ts +37 -0
  285. package/lib/stores/editors/CubeRestrictDraft.d.ts.map +1 -0
  286. package/lib/stores/editors/CubeRestrictDraft.js +73 -0
  287. package/lib/stores/editors/CubeRestrictDraft.js.map +1 -0
  288. package/lib/stores/editors/CubeRowCountDraft.d.ts +42 -0
  289. package/lib/stores/editors/CubeRowCountDraft.d.ts.map +1 -0
  290. package/lib/stores/editors/CubeRowCountDraft.js +55 -0
  291. package/lib/stores/editors/CubeRowCountDraft.js.map +1 -0
  292. package/lib/stores/editors/CubeSliceDraft.d.ts +42 -0
  293. package/lib/stores/editors/CubeSliceDraft.d.ts.map +1 -0
  294. package/lib/stores/editors/CubeSliceDraft.js +72 -0
  295. package/lib/stores/editors/CubeSliceDraft.js.map +1 -0
  296. package/lib/stores/editors/CubeSortDraft.d.ts +49 -0
  297. package/lib/stores/editors/CubeSortDraft.d.ts.map +1 -0
  298. package/lib/stores/editors/CubeSortDraft.js +99 -0
  299. package/lib/stores/editors/CubeSortDraft.js.map +1 -0
  300. package/lib/stores/fixtures/CubeNorthwindModel.d.ts +23 -0
  301. package/lib/stores/fixtures/CubeNorthwindModel.d.ts.map +1 -0
  302. package/lib/stores/fixtures/CubeNorthwindModel.js +338 -0
  303. package/lib/stores/fixtures/CubeNorthwindModel.js.map +1 -0
  304. package/package.json +81 -3
  305. package/src/__lib__/LegendCubeCommand.ts +44 -0
  306. package/src/__lib__/LegendCubeHelpText.ts +58 -0
  307. package/src/__lib__/LegendCubeLabels.ts +171 -0
  308. package/src/__lib__/LegendCubeTesting.ts +33 -0
  309. package/src/__test-utils__/CubeCanvasTestUtils.ts +53 -0
  310. package/src/__test-utils__/CubeEngineTestSupport.ts +172 -0
  311. package/src/__test-utils__/CubeNorthwindTestQueries.ts +165 -0
  312. package/src/__test-utils__/CubeOperationsTestUtils.ts +177 -0
  313. package/src/__test-utils__/CubePageTestUtils.tsx +96 -0
  314. package/src/__test-utils__/CubeTestApplication.ts +82 -0
  315. package/src/__test-utils__/FakeCubeEngine.ts +145 -0
  316. package/src/components/CubeButton.tsx +35 -0
  317. package/src/components/CubeEditor.tsx +239 -0
  318. package/src/components/CubeNodeIcon.tsx +64 -0
  319. package/src/components/canvas/CubeCanvas.tsx +262 -0
  320. package/src/components/canvas/CubeCanvasContext.ts +31 -0
  321. package/src/components/canvas/CubeCanvasContextMenu.tsx +89 -0
  322. package/src/components/canvas/CubeCanvasDnd.ts +82 -0
  323. package/src/components/canvas/CubeCanvasEdge.tsx +57 -0
  324. package/src/components/canvas/CubeCanvasElements.ts +153 -0
  325. package/src/components/canvas/CubeCanvasLayout.ts +88 -0
  326. package/src/components/canvas/CubeCanvasNode.tsx +149 -0
  327. package/src/components/editors/CubeColumnPicker.tsx +138 -0
  328. package/src/components/editors/CubeDistinctEditor.tsx +28 -0
  329. package/src/components/editors/CubeFilterEditor.tsx +309 -0
  330. package/src/components/editors/CubeIntegerField.tsx +51 -0
  331. package/src/components/editors/CubeJoinEditor.tsx +247 -0
  332. package/src/components/editors/CubeNodeEditorPanel.tsx +215 -0
  333. package/src/components/editors/CubeNodeEditorRegistry.ts +81 -0
  334. package/src/components/editors/CubeRenameEditor.tsx +143 -0
  335. package/src/components/editors/CubeRestrictEditor.tsx +103 -0
  336. package/src/components/editors/CubeRowCountEditor.tsx +53 -0
  337. package/src/components/editors/CubeSliceEditor.tsx +69 -0
  338. package/src/components/editors/CubeSortEditor.tsx +206 -0
  339. package/src/components/editors/CubeSourceEditor.tsx +106 -0
  340. package/src/components/editors/CubeValueEditor.tsx +333 -0
  341. package/src/components/grid/CubeGridRegion.tsx +275 -0
  342. package/src/components/grid/CubeGridValues.ts +125 -0
  343. package/src/components/grid/CubeResultGrid.tsx +138 -0
  344. package/src/components/palette/CubePalette.tsx +177 -0
  345. package/src/components/show-pure/CubeShowPureDialog.tsx +101 -0
  346. package/src/components/source-picker/CubeSourcePicker.tsx +304 -0
  347. package/src/components/spec-transfer/CubeSpecTransferDialog.tsx +157 -0
  348. package/src/graph-manager/CubeEngine.ts +169 -0
  349. package/src/graph-manager/CubeModelOutlineHelper.ts +58 -0
  350. package/src/graph-manager/protocol/pure/CubeEngineBuilder.ts +34 -0
  351. package/src/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.ts +109 -0
  352. package/src/graph-manager/protocol/pure/v1/V1_CubeExecutionResultReader.ts +115 -0
  353. package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.ts +257 -0
  354. package/src/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.ts +243 -0
  355. package/src/graph-manager/protocol/pure/v1/V1_CubeRelationTypeAdapter.ts +58 -0
  356. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.ts +278 -0
  357. package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.ts +127 -0
  358. package/src/index.ts +41 -0
  359. package/src/stores/CubeEditorState.ts +807 -0
  360. package/src/stores/CubeExecutionState.ts +288 -0
  361. package/src/stores/CubeGridQuickActions.ts +129 -0
  362. package/src/stores/CubeHost.ts +32 -0
  363. package/src/stores/CubeNodeEditorState.ts +324 -0
  364. package/src/stores/CubeShowPureState.ts +118 -0
  365. package/src/stores/CubeSourcePickerState.ts +426 -0
  366. package/src/stores/CubeSpecTransferState.ts +198 -0
  367. package/src/stores/LocalModelCatalog.ts +70 -0
  368. package/src/stores/editors/CubeFilterDraft.ts +241 -0
  369. package/src/stores/editors/CubeIntegerText.ts +34 -0
  370. package/src/stores/editors/CubeJoinDraft.ts +224 -0
  371. package/src/stores/editors/CubeNodeDraft.ts +46 -0
  372. package/src/stores/editors/CubeNodeDraftRegistry.ts +83 -0
  373. package/src/stores/editors/CubeRenameDraft.ts +110 -0
  374. package/src/stores/editors/CubeRestrictDraft.ts +83 -0
  375. package/src/stores/editors/CubeRowCountDraft.ts +69 -0
  376. package/src/stores/editors/CubeSliceDraft.ts +87 -0
  377. package/src/stores/editors/CubeSortDraft.ts +135 -0
  378. package/src/stores/fixtures/CubeNorthwindModel.ts +355 -0
  379. package/tsconfig.json +133 -0
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Copyright (c) 2026-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { type Schema } from '@finos/legend-cube';
17
+ import type { CubeEditorState } from '../../stores/CubeEditorState.js';
18
+ import type { CubeNodeDraft } from '../../stores/editors/CubeNodeDraft.js';
19
+ /**
20
+ * What the panel gives a node type's editor (PLAN §7.4). Edits go to the
21
+ * draft, which the panel's Apply stores; an action on the document goes
22
+ * through `editorState.nodeEditor` (e.g. `swapInputs`), which applies the
23
+ * draft first, so the panel never loses its edits under a replaced node.
24
+ */
25
+ export interface CubeNodeEditorProps {
26
+ readonly editorState: CubeEditorState;
27
+ /** The node's draft, made by its type's factory in `CUBE_NODE_DRAFT_FACTORIES` */
28
+ readonly draft: CubeNodeDraft;
29
+ /**
30
+ * The schemas of the node's inputs, in port order, e.g. a Join's Left then
31
+ * Right. All are there: the panel shows the upstream error instead of the
32
+ * editor while an input is missing or invalid.
33
+ */
34
+ readonly inputSchemas: readonly Schema[];
35
+ /** The cube was saved by a newer version: show, don't edit */
36
+ readonly readOnly: boolean;
37
+ }
38
+ /**
39
+ * The editor of each node type, by type. A type without one shows its
40
+ * description; a type with one either has a draft factory in
41
+ * `CUBE_NODE_DRAFT_FACTORIES` or edits nothing (a source).
42
+ */
43
+ export declare const CUBE_NODE_EDITORS: ReadonlyMap<string, React.FC<CubeNodeEditorProps>>;
44
+ //# sourceMappingURL=CubeNodeEditorRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeNodeEditorRegistry.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeNodeEditorRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EASL,KAAK,MAAM,EAGZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAW3E;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IACtC,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CACzC,MAAM,EACN,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAY7B,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Copyright (c) 2026-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Distinct, Drop, Filter, Join, Limit, RelationalTableSource, Rename, Restrict, Slice, Sort, } from '@finos/legend-cube';
17
+ import { CubeDistinctEditor } from './CubeDistinctEditor.js';
18
+ import { CubeFilterEditor } from './CubeFilterEditor.js';
19
+ import { CubeJoinEditor } from './CubeJoinEditor.js';
20
+ import { CubeRenameEditor } from './CubeRenameEditor.js';
21
+ import { CubeRestrictEditor } from './CubeRestrictEditor.js';
22
+ import { CubeRowCountEditor } from './CubeRowCountEditor.js';
23
+ import { CubeSliceEditor } from './CubeSliceEditor.js';
24
+ import { CubeSortEditor } from './CubeSortEditor.js';
25
+ import { CubeSourceEditor } from './CubeSourceEditor.js';
26
+ /**
27
+ * The editor of each node type, by type. A type without one shows its
28
+ * description; a type with one either has a draft factory in
29
+ * `CUBE_NODE_DRAFT_FACTORIES` or edits nothing (a source).
30
+ */
31
+ export const CUBE_NODE_EDITORS = new Map([
32
+ [RelationalTableSource.TYPE, CubeSourceEditor],
33
+ [Sort.TYPE, CubeSortEditor],
34
+ [Filter.TYPE, CubeFilterEditor],
35
+ [Restrict.TYPE, CubeRestrictEditor],
36
+ [Rename.TYPE, CubeRenameEditor],
37
+ [Distinct.TYPE, CubeDistinctEditor],
38
+ [Join.TYPE, CubeJoinEditor],
39
+ [Drop.TYPE, CubeRowCountEditor],
40
+ [Limit.TYPE, CubeRowCountEditor],
41
+ [Slice.TYPE, CubeSliceEditor],
42
+ ]);
43
+ //# sourceMappingURL=CubeNodeEditorRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeNodeEditorRegistry.js","sourceRoot":"","sources":["../../../src/components/editors/CubeNodeEditorRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,qBAAqB,EACrB,MAAM,EACN,QAAQ,EAER,KAAK,EACL,IAAI,GACL,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAsBzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAG1B,IAAI,GAAG,CAAwC;IACjD,CAAC,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAC9C,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;IAC3B,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAC/B,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IACnC,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAC/B,CAAC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IACnC,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;IAC3B,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAC/B,CAAC,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAChC,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC;CAC9B,CAAC,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Copyright (c) 2026-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import type { CubeNodeEditorProps } from './CubeNodeEditorRegistry.js';
17
+ /**
18
+ * The Rename editor (spec §17.6): rows of an old column, picked from the
19
+ * input, and its new name, typed. Each row shows its first problem, as the
20
+ * node checks it, and the rule for new names stays shown under the rows. The
21
+ * rows scroll on their own, so the editor fits wherever it is shown.
22
+ */
23
+ export declare const CubeRenameEditor: ((props: CubeNodeEditorProps) => import("react/jsx-runtime").JSX.Element) & {
24
+ displayName: string;
25
+ };
26
+ //# sourceMappingURL=CubeRenameEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeRenameEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeRenameEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAaH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AA2DvE;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,WAAoB,mBAAmB;;CAkDlE,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright (c) 2026-present, Goldman Sachs
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { clsx, TimesIcon } from '@finos/legend-art';
18
+ import { validateRenameMapping } from '@finos/legend-cube';
19
+ import { guaranteeType } from '@finos/legend-shared';
20
+ import { observer } from 'mobx-react-lite';
21
+ import { COLUMN_NAME_RULES_HINT } from '../../__lib__/LegendCubeLabels.js';
22
+ import { CubeRenameDraft, } from '../../stores/editors/CubeRenameDraft.js';
23
+ import { CubeButton } from '../CubeButton.js';
24
+ import { CubeColumnPicker } from './CubeColumnPicker.js';
25
+ const CubeRenameRowEditor = observer((props) => {
26
+ const { draft, row, position, schema, problem, readOnly } = props;
27
+ return (_jsxs("li", { className: "flex flex-col gap-1 border-b border-[var(--color-border-subtle)] py-1", children: [_jsxs("div", { className: "grid grid-cols-[1fr_auto_1fr_auto] items-center gap-1", children: [_jsx(CubeColumnPicker, { label: `Old column ${position}`, schema: schema, value: row.from, disabled: readOnly, onChange: (name) => draft.setFrom(row.key, name) }), _jsx("span", { className: "text-[var(--color-text-secondary)]", children: "\u2192" }), _jsx("input", { "aria-label": `New column name ${position}`, "aria-invalid": problem !== undefined, title: problem, className: clsx('h-6 min-w-0 rounded-sm border bg-[var(--color-bg-input)] px-1 text-base', problem
28
+ ? 'border-[var(--color-status-error)]'
29
+ : 'border-[var(--color-border-default)]'), type: "text", spellCheck: false, value: row.to, disabled: readOnly, onChange: (event) => draft.setTo(row.key, event.target.value) }), _jsx("button", { className: "flex h-6 w-6 items-center justify-center text-[var(--color-text-secondary)] hover:text-[var(--color-text-primary)] disabled:text-[var(--color-text-disabled)]", "aria-label": `Remove rename ${position}`, title: "Remove this rename", disabled: readOnly, onClick: () => draft.removeRow(row.key), children: _jsx(TimesIcon, {}) })] }), problem && (_jsx("div", { className: "text-sm text-[var(--color-status-error)]", children: problem }))] }));
30
+ });
31
+ /**
32
+ * The Rename editor (spec §17.6): rows of an old column, picked from the
33
+ * input, and its new name, typed. Each row shows its first problem, as the
34
+ * node checks it, and the rule for new names stays shown under the rows. The
35
+ * rows scroll on their own, so the editor fits wherever it is shown.
36
+ */
37
+ export const CubeRenameEditor = observer((props) => {
38
+ const { readOnly } = props;
39
+ const draft = guaranteeType(props.draft, CubeRenameDraft);
40
+ const [schema] = props.inputSchemas;
41
+ const { mappings } = draft;
42
+ // a row's problem, as the node will judge it; a blank row has none
43
+ let mappingIndex = 0;
44
+ const problems = draft.rows.map((row) => {
45
+ if (!row.from && !row.to) {
46
+ return undefined;
47
+ }
48
+ const errors = [];
49
+ validateRenameMapping(mappings, mappingIndex, schema, errors);
50
+ mappingIndex += 1;
51
+ return errors[0];
52
+ });
53
+ const canAddRow = !readOnly && draft.rows.length < schema.columns.length;
54
+ return (_jsxs("div", { className: "flex flex-col gap-2 text-base", children: [_jsx("ul", { "aria-label": "Column renames", className: "max-h-80 overflow-auto", children: draft.rows.map((row, index) => (_jsx(CubeRenameRowEditor, { draft: draft, row: row, position: index + 1, schema: schema, problem: problems[index], readOnly: readOnly }, row.key))) }), _jsx("div", { children: _jsx(CubeButton, { title: canAddRow
55
+ ? 'Add a column to rename'
56
+ : 'Every column of the input already has a row', disabled: !canAddRow, onClick: () => draft.addRow(), children: "Add column to rename" }) }), _jsx("div", { className: "text-sm text-[var(--color-text-secondary)]", children: COLUMN_NAME_RULES_HINT })] }));
57
+ });
58
+ //# sourceMappingURL=CubeRenameEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeRenameEditor.js","sourceRoot":"","sources":["../../../src/components/editors/CubeRenameEditor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Copyright (c) 2026-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import type { CubeNodeEditorProps } from './CubeNodeEditorRegistry.js';
17
+ /**
18
+ * The Restrict editor (spec §17.6): the input's columns, in its order, each
19
+ * ticked to keep it. A saved column the input doesn't have stays listed, last
20
+ * and ticked, until it is unticked. The list scrolls on its own, so the
21
+ * editor fits wherever it is shown.
22
+ */
23
+ export declare const CubeRestrictEditor: ((props: CubeNodeEditorProps) => import("react/jsx-runtime").JSX.Element) & {
24
+ displayName: string;
25
+ };
26
+ //# sourceMappingURL=CubeRestrictEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeRestrictEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeRestrictEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAIvE;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,WAAoB,mBAAmB;;CAqEpE,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { guaranteeType } from '@finos/legend-shared';
3
+ import { observer } from 'mobx-react-lite';
4
+ import { getColumnTypeLabel } from '../../__lib__/LegendCubeLabels.js';
5
+ import { CubeRestrictDraft } from '../../stores/editors/CubeRestrictDraft.js';
6
+ import { CubeButton } from '../CubeButton.js';
7
+ import { CubeColumnTypeIcon } from './CubeColumnPicker.js';
8
+ const KEEP = 'Columns to keep';
9
+ /**
10
+ * The Restrict editor (spec §17.6): the input's columns, in its order, each
11
+ * ticked to keep it. A saved column the input doesn't have stays listed, last
12
+ * and ticked, until it is unticked. The list scrolls on its own, so the
13
+ * editor fits wherever it is shown.
14
+ */
15
+ export const CubeRestrictEditor = observer((props) => {
16
+ const { readOnly } = props;
17
+ const draft = guaranteeType(props.draft, CubeRestrictDraft);
18
+ const [schema] = props.inputSchemas;
19
+ // each once, though a saved restrict may repeat one (validation reports it)
20
+ const missing = Array.from(new Set(draft.columns.filter((name) => !schema.lookup(name))));
21
+ return (_jsxs("div", { className: "flex flex-col gap-2 text-base", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { children: KEEP }), _jsx("span", { className: "flex-1" }), _jsx(CubeButton, { title: "Keep every column of the input", disabled: readOnly, onClick: () => draft.selectAll(schema), children: "All" }), _jsx(CubeButton, { title: "Untick every column", disabled: readOnly, onClick: () => draft.clear(), children: "None" })] }), _jsxs("ul", { "aria-label": KEEP, className: "max-h-80 overflow-auto rounded-sm border border-[var(--color-border-subtle)]", children: [schema.columns.map((column) => (_jsx("li", { children: _jsxs("label", { className: "flex items-center gap-2 px-1 py-0.5", children: [_jsx("input", { type: "checkbox", checked: draft.columns.includes(column.name), disabled: readOnly, onChange: () => draft.toggleColumn(column.name, schema) }), _jsx(CubeColumnTypeIcon, { type: column.type, className: "text-[var(--color-text-secondary)]" }), _jsx("span", { className: "min-w-0 truncate", children: column.name }), _jsx("span", { className: "shrink-0 text-sm text-[var(--color-text-muted)]", children: getColumnTypeLabel(column) })] }) }, column.name))), missing.map((name) => (_jsx("li", { children: _jsxs("label", { className: "flex items-center gap-2 px-1 py-0.5 text-[var(--color-status-error)]", children: [_jsx("input", { type: "checkbox", checked: true, disabled: readOnly, onChange: () => draft.toggleColumn(name, schema) }), _jsx("span", { className: "min-w-0 truncate", children: name || '(blank)' }), _jsx("span", { className: "shrink-0 text-sm", children: "(not in the input)" })] }) }, `missing:${name}`)))] })] }));
22
+ });
23
+ //# sourceMappingURL=CubeRestrictEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeRestrictEditor.js","sourceRoot":"","sources":["../../../src/components/editors/CubeRestrictEditor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Copyright (c) 2026-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import type { CubeNodeEditorProps } from './CubeNodeEditorRegistry.js';
17
+ /**
18
+ * The editor of a node whose one setting is a number of rows, a Limit or a
19
+ * Drop (spec §17.6: one integer field). Clearing the field leaves the size empty,
20
+ * which the panel reports; it never falls back to the default.
21
+ */
22
+ export declare const CubeRowCountEditor: ((props: CubeNodeEditorProps) => import("react/jsx-runtime").JSX.Element) & {
23
+ displayName: string;
24
+ };
25
+ //# sourceMappingURL=CubeRowCountEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeRowCountEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeRowCountEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAQvE;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,WAAoB,mBAAmB;;CAkBpE,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright (c) 2026-present, Goldman Sachs
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { Drop, isPositiveWholeNumber, Limit } from '@finos/legend-cube';
18
+ import { guaranteeType } from '@finos/legend-shared';
19
+ import { observer } from 'mobx-react-lite';
20
+ import { CubeRowCountDraft } from '../../stores/editors/CubeRowCountDraft.js';
21
+ import { CubeIntegerField } from './CubeIntegerField.js';
22
+ /** The field's label for each node type the editor serves */
23
+ const ROW_COUNT_LABELS = {
24
+ [Drop.TYPE]: 'Rows to drop',
25
+ [Limit.TYPE]: 'Rows to keep',
26
+ };
27
+ /**
28
+ * The editor of a node whose one setting is a number of rows, a Limit or a
29
+ * Drop (spec §17.6: one integer field). Clearing the field leaves the size empty,
30
+ * which the panel reports; it never falls back to the default.
31
+ */
32
+ export const CubeRowCountEditor = observer((props) => {
33
+ const { readOnly } = props;
34
+ const draft = guaranteeType(props.draft, CubeRowCountDraft);
35
+ const label = ROW_COUNT_LABELS[draft.original.type] ?? 'Rows';
36
+ return (_jsx("div", { className: "flex flex-col gap-2 text-base", children: _jsxs("label", { className: "flex items-center gap-2", children: [_jsx("span", { children: label }), _jsx(CubeIntegerField, { label: label, text: draft.sizeText, invalid: !isPositiveWholeNumber(draft.size), disabled: readOnly, onChange: (text) => draft.setSizeText(text) })] }) }));
37
+ });
38
+ //# sourceMappingURL=CubeRowCountEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeRowCountEditor.js","sourceRoot":"","sources":["../../../src/components/editors/CubeRowCountEditor.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,6DAA6D;AAC7D,MAAM,gBAAgB,GAAqC;IACzD,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,cAAc;IAC3B,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,cAAc;CAC7B,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,CAAC,KAA0B,EAAE,EAAE;IACxE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;IAC9D,OAAO,CACL,cAAK,SAAS,EAAC,+BAA+B,YAC5C,iBAAO,SAAS,EAAC,yBAAyB,aACxC,yBAAO,KAAK,GAAQ,EACpB,KAAC,gBAAgB,IACf,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,KAAK,CAAC,QAAQ,EACpB,OAAO,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,EAC3C,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAC3C,IACI,GACJ,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Copyright (c) 2026-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import type { CubeNodeEditorProps } from './CubeNodeEditorRegistry.js';
17
+ /**
18
+ * The Slice editor (spec §17.6): the start and stop row indexes, counting
19
+ * from 0, the start row kept and the stop row not (D5). A cleared field
20
+ * leaves its bound empty, which the panel reports.
21
+ */
22
+ export declare const CubeSliceEditor: ((props: CubeNodeEditorProps) => import("react/jsx-runtime").JSX.Element) & {
23
+ displayName: string;
24
+ };
25
+ //# sourceMappingURL=CubeSliceEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeSliceEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeSliceEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAKvE;;;;GAIG;AACH,eAAO,MAAM,eAAe,WAAoB,mBAAmB;;CAoCjE,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright (c) 2026-present, Goldman Sachs
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { isRowIndex } from '@finos/legend-cube';
18
+ import { guaranteeType } from '@finos/legend-shared';
19
+ import { observer } from 'mobx-react-lite';
20
+ import { SLICE_RANGE_HINT } from '../../__lib__/LegendCubeLabels.js';
21
+ import { CubeSliceDraft } from '../../stores/editors/CubeSliceDraft.js';
22
+ import { CubeIntegerField } from './CubeIntegerField.js';
23
+ const START = 'Start row index';
24
+ const STOP = 'Stop row index';
25
+ /**
26
+ * The Slice editor (spec §17.6): the start and stop row indexes, counting
27
+ * from 0, the start row kept and the stop row not (D5). A cleared field
28
+ * leaves its bound empty, which the panel reports.
29
+ */
30
+ export const CubeSliceEditor = observer((props) => {
31
+ const { readOnly } = props;
32
+ const draft = guaranteeType(props.draft, CubeSliceDraft);
33
+ const { start, stop } = draft;
34
+ const validStart = isRowIndex(start);
35
+ const validStop = isRowIndex(stop);
36
+ // the stop is marked when it doesn't come after the start, too
37
+ const outOfOrder = validStart && validStop && start >= stop;
38
+ return (_jsxs("div", { className: "flex flex-col gap-2 text-base", children: [_jsxs("label", { className: "flex items-center gap-2", children: [_jsx("span", { className: "w-28", children: START }), _jsx(CubeIntegerField, { label: START, text: draft.startText, invalid: !validStart, disabled: readOnly, onChange: (text) => draft.setStartText(text) })] }), _jsxs("label", { className: "flex items-center gap-2", children: [_jsx("span", { className: "w-28", children: STOP }), _jsx(CubeIntegerField, { label: STOP, text: draft.stopText, invalid: !validStop || outOfOrder, disabled: readOnly, onChange: (text) => draft.setStopText(text) })] }), _jsx("div", { className: "text-sm text-[var(--color-text-secondary)]", children: SLICE_RANGE_HINT })] }));
39
+ });
40
+ //# sourceMappingURL=CubeSliceEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeSliceEditor.js","sourceRoot":"","sources":["../../../src/components/editors/CubeSliceEditor.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,MAAM,KAAK,GAAG,iBAAiB,CAAC;AAChC,MAAM,IAAI,GAAG,gBAAgB,CAAC;AAE9B;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC,CAAC,KAA0B,EAAE,EAAE;IACrE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACzD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAC9B,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,+DAA+D;IAC/D,MAAM,UAAU,GACd,UAAU,IAAI,SAAS,IAAK,KAAgB,IAAK,IAAe,CAAC;IACnE,OAAO,CACL,eAAK,SAAS,EAAC,+BAA+B,aAC5C,iBAAO,SAAS,EAAC,yBAAyB,aACxC,eAAM,SAAS,EAAC,MAAM,YAAE,KAAK,GAAQ,EACrC,KAAC,gBAAgB,IACf,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,KAAK,CAAC,SAAS,EACrB,OAAO,EAAE,CAAC,UAAU,EACpB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAC5C,IACI,EACR,iBAAO,SAAS,EAAC,yBAAyB,aACxC,eAAM,SAAS,EAAC,MAAM,YAAE,IAAI,GAAQ,EACpC,KAAC,gBAAgB,IACf,KAAK,EAAE,IAAI,EACX,IAAI,EAAE,KAAK,CAAC,QAAQ,EACpB,OAAO,EAAE,CAAC,SAAS,IAAI,UAAU,EACjC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAC3C,IACI,EACR,cAAK,SAAS,EAAC,4CAA4C,YACxD,gBAAgB,GACb,IACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Copyright (c) 2026-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import type { CubeNodeEditorProps } from './CubeNodeEditorRegistry.js';
17
+ /**
18
+ * The Sort editor (spec §17.6: an ordered list of column and direction rows,
19
+ * added, removed and reordered). The first row sorts first. A column that
20
+ * can't be sorted, or that another row has, can't be picked; a saved one
21
+ * stays shown with its problem. The rows scroll on their own, so the editor
22
+ * fits wherever it is shown.
23
+ */
24
+ export declare const CubeSortEditor: ((props: CubeNodeEditorProps) => import("react/jsx-runtime").JSX.Element) & {
25
+ displayName: string;
26
+ };
27
+ //# sourceMappingURL=CubeSortEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeSortEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeSortEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAsBH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAqGvE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,WAAoB,mBAAmB;;CA6DhE,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright (c) 2026-present, Goldman Sachs
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { ArrowDownIcon, ArrowUpIcon, TimesIcon } from '@finos/legend-art';
18
+ import { isSortableType, isSortDirection, MESSAGE_CANNOT_HAVE_DUPLICATES, SORT_DIRECTION_DESCRIPTIONS, SORT_DIRECTIONS, validateSortKey, } from '@finos/legend-cube';
19
+ import { guaranteeType } from '@finos/legend-shared';
20
+ import { observer } from 'mobx-react-lite';
21
+ import { CUBE_SORT_COLUMN_DISABLED_REASON } from '../../__lib__/LegendCubeLabels.js';
22
+ import { CubeSortDraft, } from '../../stores/editors/CubeSortDraft.js';
23
+ import { CubeButton } from '../CubeButton.js';
24
+ import { CubeColumnPicker } from './CubeColumnPicker.js';
25
+ const ROW_BUTTON_CLASS = 'flex h-6 w-6 items-center justify-center text-[var(--color-text-secondary)] hover:text-[var(--color-text-primary)] disabled:text-[var(--color-text-disabled)]';
26
+ const CubeSortRowEditor = observer((props) => {
27
+ const { draft, row, position, count, schema, takenColumns, problem, readOnly, } = props;
28
+ const isColumnDisabled = (column) => !isSortableType(column.type)
29
+ ? CUBE_SORT_COLUMN_DISABLED_REASON.NOT_SORTABLE
30
+ : takenColumns.has(column.name)
31
+ ? CUBE_SORT_COLUMN_DISABLED_REASON.TAKEN
32
+ : undefined;
33
+ return (_jsxs("li", { className: "flex flex-col gap-1 border-b border-[var(--color-border-subtle)] py-1", children: [_jsxs("div", { className: "grid grid-cols-[1fr_auto_auto_auto_auto] items-center gap-1", children: [_jsx(CubeColumnPicker, { label: `Sort column ${position}`, schema: schema, value: row.column, disabled: readOnly, invalid: problem !== undefined, isColumnDisabled: isColumnDisabled, onChange: (name) => draft.setColumn(row.key, name) }), _jsx("select", { "aria-label": `Sort direction ${position}`, className: "h-6 rounded-sm border border-[var(--color-border-default)] bg-[var(--color-bg-input)] px-1 text-base", value: row.direction, disabled: readOnly, onChange: (event) => {
34
+ const direction = event.target.value;
35
+ if (isSortDirection(direction)) {
36
+ draft.setDirection(row.key, direction);
37
+ }
38
+ }, children: SORT_DIRECTIONS.map((direction) => (_jsx("option", { value: direction, children: SORT_DIRECTION_DESCRIPTIONS[direction] }, direction))) }), _jsx("button", { className: ROW_BUTTON_CLASS, "aria-label": `Move sort column ${position} up`, title: "Sort by this column before the one above", disabled: readOnly || position === 1, onClick: () => draft.moveRow(row.key, -1), children: _jsx(ArrowUpIcon, {}) }), _jsx("button", { className: ROW_BUTTON_CLASS, "aria-label": `Move sort column ${position} down`, title: "Sort by this column after the one below", disabled: readOnly || position === count, onClick: () => draft.moveRow(row.key, 1), children: _jsx(ArrowDownIcon, {}) }), _jsx("button", { className: ROW_BUTTON_CLASS, "aria-label": `Remove sort column ${position}`, title: "Remove this sort column", disabled: readOnly, onClick: () => draft.removeRow(row.key), children: _jsx(TimesIcon, {}) })] }), problem && (_jsx("div", { className: "text-sm text-[var(--color-status-error)]", children: problem }))] }));
39
+ });
40
+ /**
41
+ * The Sort editor (spec §17.6: an ordered list of column and direction rows,
42
+ * added, removed and reordered). The first row sorts first. A column that
43
+ * can't be sorted, or that another row has, can't be picked; a saved one
44
+ * stays shown with its problem. The rows scroll on their own, so the editor
45
+ * fits wherever it is shown.
46
+ */
47
+ export const CubeSortEditor = observer((props) => {
48
+ const { readOnly } = props;
49
+ const draft = guaranteeType(props.draft, CubeSortDraft);
50
+ const [schema] = props.inputSchemas;
51
+ const { rows } = draft;
52
+ // a row's problem, as the node will judge it; a blank row has none
53
+ const problems = rows.map((row, index) => {
54
+ if (!row.column) {
55
+ return undefined;
56
+ }
57
+ const errors = [];
58
+ validateSortKey(row, schema, errors);
59
+ return (errors[0] ??
60
+ (rows.slice(0, index).some(({ column }) => column === row.column)
61
+ ? MESSAGE_CANNOT_HAVE_DUPLICATES('Sort columns')
62
+ : undefined));
63
+ });
64
+ const sortable = schema.columns.filter((column) => isSortableType(column.type));
65
+ const canAddRow = !readOnly && rows.length < sortable.length;
66
+ return (_jsxs("div", { className: "flex flex-col gap-2 text-base", children: [_jsx("ul", { "aria-label": "Sort columns", className: "max-h-80 overflow-auto", children: rows.map((row, index) => (_jsx(CubeSortRowEditor, { draft: draft, row: row, position: index + 1, count: rows.length, schema: schema, takenColumns: new Set(rows
67
+ .filter((other) => other.key !== row.key && other.column)
68
+ .map(({ column }) => column)), problem: problems[index], readOnly: readOnly }, row.key))) }), _jsx("div", { children: _jsx(CubeButton, { title: canAddRow
69
+ ? 'Add a column to sort by'
70
+ : 'Every column that can be sorted already has a row', disabled: !canAddRow, onClick: () => draft.addRow(), children: "Add sort column" }) })] }));
71
+ });
72
+ //# sourceMappingURL=CubeSortEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeSortEditor.js","sourceRoot":"","sources":["../../../src/components/editors/CubeSortEditor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Copyright (c) 2026-present, Goldman Sachs
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import type { CubeNodeEditorProps } from './CubeNodeEditorRegistry.js';
17
+ /**
18
+ * A table source (spec §17.6): where it reads from, its columns as the engine
19
+ * typed them, and Refresh, which types the table again. Nothing here is
20
+ * edited, so a refresh is no undo step.
21
+ */
22
+ export declare const CubeSourceEditor: ((props: CubeNodeEditorProps) => import("react/jsx-runtime").JSX.Element) & {
23
+ displayName: string;
24
+ };
25
+ //# sourceMappingURL=CubeSourceEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeSourceEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeSourceEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgBH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,WAAoB,mBAAmB;;CAoElE,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright (c) 2026-present, Goldman Sachs
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { PanelLoadingIndicator } from '@finos/legend-art';
18
+ import { getRelationalDisplayName, RelationalTableSource, } from '@finos/legend-cube';
19
+ import { guaranteeType } from '@finos/legend-shared';
20
+ import { flowResult } from 'mobx';
21
+ import { observer } from 'mobx-react-lite';
22
+ import { CUBE_PENDING_LABEL, getColumnTypeLabel, } from '../../__lib__/LegendCubeLabels.js';
23
+ import { CubeButton } from '../CubeButton.js';
24
+ import { CubeColumnTypeIcon } from './CubeColumnPicker.js';
25
+ /**
26
+ * A table source (spec §17.6): where it reads from, its columns as the engine
27
+ * typed them, and Refresh, which types the table again. Nothing here is
28
+ * edited, so a refresh is no undo step.
29
+ */
30
+ export const CubeSourceEditor = observer((props) => {
31
+ const { editorState } = props;
32
+ const source = guaranteeType(props.draft.original, RelationalTableSource);
33
+ const refreshing = editorState.isPendingSource(source);
34
+ const { resolution } = source;
35
+ return (_jsxs("div", { className: "relative flex flex-col gap-2", children: [_jsxs("dl", { className: "grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-base", children: [_jsx("dt", { className: "text-[var(--color-text-secondary)]", children: "Database" }), _jsx("dd", { className: "min-w-0 break-all", children: source.database }), _jsx("dt", { className: "text-[var(--color-text-secondary)]", children: "Schema" }), _jsx("dd", { children: getRelationalDisplayName(source.schema) }), _jsx("dt", { className: "text-[var(--color-text-secondary)]", children: "Table" }), _jsx("dd", { children: getRelationalDisplayName(source.table) })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(CubeButton, { title: "Type the table again with the engine, e.g. after its columns changed", disabled: refreshing, onClick: () => {
36
+ flowResult(editorState.refreshSource(source.id)).catch(editorState.host.applicationStore.alertUnhandledError);
37
+ }, children: "Refresh" }), refreshing && (_jsx("span", { className: "text-base text-[var(--color-text-secondary)]", children: CUBE_PENDING_LABEL.REFRESHING_SOURCE }))] }), _jsx(PanelLoadingIndicator, { isLoading: refreshing }), resolution.kind === 'resolved' ? (_jsxs("table", { className: "w-full text-base", "aria-label": "Columns", children: [_jsx("thead", { children: _jsxs("tr", { className: "text-left text-[var(--color-text-secondary)]", children: [_jsx("th", { className: "font-normal", children: "Column" }), _jsx("th", { className: "font-normal", children: "Type" })] }) }), _jsx("tbody", { children: resolution.schema.columns.map((column) => (_jsxs("tr", { children: [_jsx("td", { className: "break-all pr-2", children: column.name }), _jsx("td", { title: column.type.fullName, children: _jsxs("span", { className: "flex items-center gap-1", children: [_jsx(CubeColumnTypeIcon, { type: column.type, className: "text-[var(--color-text-secondary)]" }), getColumnTypeLabel(column)] }) })] }, column.name))) })] })) : (_jsx("div", { className: "text-base text-[var(--color-text-secondary)]", children: resolution.kind === 'failed'
38
+ ? resolution.message
39
+ : 'The table has not been typed yet.' }))] }));
40
+ });
41
+ //# sourceMappingURL=CubeSourceEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeSourceEditor.js","sourceRoot":"","sources":["../../../src/components/editors/CubeSourceEditor.tsx"],"names":[],"mappings":"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"}