@finos/legend-cube-builder 0.0.4 → 0.0.5

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 (609) hide show
  1. package/README.md +9 -3
  2. package/docs/adding-an-operation.md +22 -12
  3. package/docs/demo/DEMO-FAST-NOTES.md +67 -0
  4. package/docs/demo/README.md +102 -0
  5. package/docs/demo/specs/duckdb-sales-pivot.cube.json +110 -0
  6. package/docs/demo/specs/trades-desks-1-joined.cube.json +123 -0
  7. package/docs/demo/specs/trades-desks-2-grouped.cube.json +140 -0
  8. package/docs/demo/specs/trades-desks-3-ranked.cube.json +158 -0
  9. package/docs/demo/specs/trades-desks-4-extended.cube.json +208 -0
  10. package/docs/demo/specs/trades-desks-5-final.cube.json +248 -0
  11. package/docs/hosting.md +50 -3
  12. package/docs/testing.md +32 -0
  13. package/lib/__lib__/LegendCubeCommand.d.ts +2 -0
  14. package/lib/__lib__/LegendCubeCommand.d.ts.map +1 -1
  15. package/lib/__lib__/LegendCubeCommand.js +7 -0
  16. package/lib/__lib__/LegendCubeCommand.js.map +1 -1
  17. package/lib/__lib__/LegendCubeFunctionLabels.d.ts +29 -0
  18. package/lib/__lib__/LegendCubeFunctionLabels.d.ts.map +1 -0
  19. package/lib/__lib__/LegendCubeFunctionLabels.js +31 -0
  20. package/lib/__lib__/LegendCubeFunctionLabels.js.map +1 -0
  21. package/lib/__lib__/LegendCubeHelpText.d.ts +5 -1
  22. package/lib/__lib__/LegendCubeHelpText.d.ts.map +1 -1
  23. package/lib/__lib__/LegendCubeHelpText.js +14 -2
  24. package/lib/__lib__/LegendCubeHelpText.js.map +1 -1
  25. package/lib/__lib__/LegendCubeLabels.d.ts +100 -8
  26. package/lib/__lib__/LegendCubeLabels.d.ts.map +1 -1
  27. package/lib/__lib__/LegendCubeLabels.js +129 -14
  28. package/lib/__lib__/LegendCubeLabels.js.map +1 -1
  29. package/lib/__lib__/LegendCubeProjectSourceLabels.d.ts +26 -0
  30. package/lib/__lib__/LegendCubeProjectSourceLabels.d.ts.map +1 -0
  31. package/lib/__lib__/LegendCubeProjectSourceLabels.js +26 -0
  32. package/lib/__lib__/LegendCubeProjectSourceLabels.js.map +1 -0
  33. package/lib/__lib__/LegendCubeServiceLabels.d.ts +27 -0
  34. package/lib/__lib__/LegendCubeServiceLabels.d.ts.map +1 -0
  35. package/lib/__lib__/LegendCubeServiceLabels.js +32 -0
  36. package/lib/__lib__/LegendCubeServiceLabels.js.map +1 -0
  37. package/lib/__lib__/LegendCubeTesting.d.ts +7 -0
  38. package/lib/__lib__/LegendCubeTesting.d.ts.map +1 -1
  39. package/lib/__lib__/LegendCubeTesting.js +7 -0
  40. package/lib/__lib__/LegendCubeTesting.js.map +1 -1
  41. package/lib/__test-utils__/CubeEngineTestSupport.d.ts +1 -1
  42. package/lib/__test-utils__/CubeEngineTestSupport.d.ts.map +1 -1
  43. package/lib/__test-utils__/CubeEngineTestSupport.js +2 -2
  44. package/lib/__test-utils__/CubeEngineTestSupport.js.map +1 -1
  45. package/lib/__test-utils__/CubeExpressionTestUtils.d.ts +8 -1
  46. package/lib/__test-utils__/CubeExpressionTestUtils.d.ts.map +1 -1
  47. package/lib/__test-utils__/CubeExpressionTestUtils.js +20 -3
  48. package/lib/__test-utils__/CubeExpressionTestUtils.js.map +1 -1
  49. package/lib/__test-utils__/CubeFunctionTestOutline.d.ts +26 -0
  50. package/lib/__test-utils__/CubeFunctionTestOutline.d.ts.map +1 -0
  51. package/lib/__test-utils__/CubeFunctionTestOutline.js +56 -0
  52. package/lib/__test-utils__/CubeFunctionTestOutline.js.map +1 -0
  53. package/lib/__test-utils__/CubeLambdaCorpus.d.ts +36 -0
  54. package/lib/__test-utils__/CubeLambdaCorpus.d.ts.map +1 -0
  55. package/lib/__test-utils__/CubeLambdaCorpus.js +83 -0
  56. package/lib/__test-utils__/CubeLambdaCorpus.js.map +1 -0
  57. package/lib/__test-utils__/CubePageTestUtils.d.ts +6 -0
  58. package/lib/__test-utils__/CubePageTestUtils.d.ts.map +1 -1
  59. package/lib/__test-utils__/CubePageTestUtils.js +21 -0
  60. package/lib/__test-utils__/CubePageTestUtils.js.map +1 -1
  61. package/lib/__test-utils__/CubeTestApplication.d.ts +9 -0
  62. package/lib/__test-utils__/CubeTestApplication.d.ts.map +1 -1
  63. package/lib/__test-utils__/CubeTestApplication.js +16 -0
  64. package/lib/__test-utils__/CubeTestApplication.js.map +1 -1
  65. package/lib/__test-utils__/FakeCubeEngine.d.ts +5 -0
  66. package/lib/__test-utils__/FakeCubeEngine.d.ts.map +1 -1
  67. package/lib/__test-utils__/FakeCubeEngine.js +17 -0
  68. package/lib/__test-utils__/FakeCubeEngine.js.map +1 -1
  69. package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts +7 -1
  70. package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts.map +1 -1
  71. package/lib/__test-utils__/FakeCubeIngestCatalog.js +16 -0
  72. package/lib/__test-utils__/FakeCubeIngestCatalog.js.map +1 -1
  73. package/lib/__test-utils__/FakeCubeServiceCatalog.d.ts +26 -0
  74. package/lib/__test-utils__/FakeCubeServiceCatalog.d.ts.map +1 -0
  75. package/lib/__test-utils__/FakeCubeServiceCatalog.js +40 -0
  76. package/lib/__test-utils__/FakeCubeServiceCatalog.js.map +1 -0
  77. package/lib/components/CubeAddItems.d.ts.map +1 -1
  78. package/lib/components/CubeAddItems.js +9 -6
  79. package/lib/components/CubeAddItems.js.map +1 -1
  80. package/lib/components/CubeDialogTheme.d.ts +25 -0
  81. package/lib/components/CubeDialogTheme.d.ts.map +1 -0
  82. package/lib/components/CubeDialogTheme.js +25 -0
  83. package/lib/components/CubeDialogTheme.js.map +1 -0
  84. package/lib/components/CubeEditor.d.ts +12 -1
  85. package/lib/components/CubeEditor.d.ts.map +1 -1
  86. package/lib/components/CubeEditor.js +16 -14
  87. package/lib/components/CubeEditor.js.map +1 -1
  88. package/lib/components/CubeFileMenu.d.ts +28 -0
  89. package/lib/components/CubeFileMenu.d.ts.map +1 -0
  90. package/lib/components/CubeFileMenu.js +77 -0
  91. package/lib/components/CubeFileMenu.js.map +1 -0
  92. package/lib/components/CubeLambdaImportBanner.d.ts +26 -0
  93. package/lib/components/CubeLambdaImportBanner.d.ts.map +1 -0
  94. package/lib/components/CubeLambdaImportBanner.js +47 -0
  95. package/lib/components/CubeLambdaImportBanner.js.map +1 -0
  96. package/lib/components/CubeNodeIcon.d.ts.map +1 -1
  97. package/lib/components/CubeNodeIcon.js +5 -1
  98. package/lib/components/CubeNodeIcon.js.map +1 -1
  99. package/lib/components/CubeSchemaColumnsTable.d.ts.map +1 -1
  100. package/lib/components/CubeSchemaColumnsTable.js +2 -2
  101. package/lib/components/CubeSchemaColumnsTable.js.map +1 -1
  102. package/lib/components/canvas/CubeCanvas.d.ts.map +1 -1
  103. package/lib/components/canvas/CubeCanvas.js +38 -5
  104. package/lib/components/canvas/CubeCanvas.js.map +1 -1
  105. package/lib/components/canvas/CubeCanvasContextMenu.d.ts.map +1 -1
  106. package/lib/components/canvas/CubeCanvasContextMenu.js +2 -1
  107. package/lib/components/canvas/CubeCanvasContextMenu.js.map +1 -1
  108. package/lib/components/canvas/CubeCanvasElements.d.ts +18 -1
  109. package/lib/components/canvas/CubeCanvasElements.d.ts.map +1 -1
  110. package/lib/components/canvas/CubeCanvasElements.js +58 -3
  111. package/lib/components/canvas/CubeCanvasElements.js.map +1 -1
  112. package/lib/components/canvas/CubeCanvasLayout.js +1 -1
  113. package/lib/components/canvas/CubeCanvasNode.d.ts.map +1 -1
  114. package/lib/components/canvas/CubeCanvasNode.js +8 -4
  115. package/lib/components/canvas/CubeCanvasNode.js.map +1 -1
  116. package/lib/components/dev-settings/CubeDevSettings.d.ts +35 -0
  117. package/lib/components/dev-settings/CubeDevSettings.d.ts.map +1 -0
  118. package/lib/components/dev-settings/CubeDevSettings.js +50 -0
  119. package/lib/components/dev-settings/CubeDevSettings.js.map +1 -0
  120. package/lib/components/editors/CubeColumnChecklist.d.ts.map +1 -1
  121. package/lib/components/editors/CubeColumnChecklist.js +2 -2
  122. package/lib/components/editors/CubeColumnChecklist.js.map +1 -1
  123. package/lib/components/editors/CubeColumnPicker.d.ts.map +1 -1
  124. package/lib/components/editors/CubeColumnPicker.js +3 -3
  125. package/lib/components/editors/CubeColumnPicker.js.map +1 -1
  126. package/lib/components/editors/CubeConcatEditor.js +2 -2
  127. package/lib/components/editors/CubeConcatEditor.js.map +1 -1
  128. package/lib/components/editors/CubeExpressionFilterEditor.d.ts +25 -0
  129. package/lib/components/editors/CubeExpressionFilterEditor.d.ts.map +1 -0
  130. package/lib/components/editors/CubeExpressionFilterEditor.js +83 -0
  131. package/lib/components/editors/CubeExpressionFilterEditor.js.map +1 -0
  132. package/lib/components/editors/CubeExtendEditor.d.ts +2 -0
  133. package/lib/components/editors/CubeExtendEditor.d.ts.map +1 -1
  134. package/lib/components/editors/CubeExtendEditor.js +3 -3
  135. package/lib/components/editors/CubeExtendEditor.js.map +1 -1
  136. package/lib/components/editors/CubeFilterEditor.d.ts.map +1 -1
  137. package/lib/components/editors/CubeFilterEditor.js +13 -2
  138. package/lib/components/editors/CubeFilterEditor.js.map +1 -1
  139. package/lib/components/editors/CubeFunctionSourceEditor.d.ts +25 -0
  140. package/lib/components/editors/CubeFunctionSourceEditor.d.ts.map +1 -0
  141. package/lib/components/editors/CubeFunctionSourceEditor.js +55 -0
  142. package/lib/components/editors/CubeFunctionSourceEditor.js.map +1 -0
  143. package/lib/components/editors/CubeJoinEditor.d.ts.map +1 -1
  144. package/lib/components/editors/CubeJoinEditor.js +16 -4
  145. package/lib/components/editors/CubeJoinEditor.js.map +1 -1
  146. package/lib/components/editors/CubeNodeEditorPanel.d.ts.map +1 -1
  147. package/lib/components/editors/CubeNodeEditorPanel.js +18 -8
  148. package/lib/components/editors/CubeNodeEditorPanel.js.map +1 -1
  149. package/lib/components/editors/CubeNodeEditorPopper.d.ts +5 -1
  150. package/lib/components/editors/CubeNodeEditorPopper.d.ts.map +1 -1
  151. package/lib/components/editors/CubeNodeEditorPopper.js +10 -2
  152. package/lib/components/editors/CubeNodeEditorPopper.js.map +1 -1
  153. package/lib/components/editors/CubeNodeEditorRegistry.d.ts.map +1 -1
  154. package/lib/components/editors/CubeNodeEditorRegistry.js +9 -1
  155. package/lib/components/editors/CubeNodeEditorRegistry.js.map +1 -1
  156. package/lib/components/editors/CubePivotEditor.d.ts +26 -0
  157. package/lib/components/editors/CubePivotEditor.d.ts.map +1 -0
  158. package/lib/components/editors/CubePivotEditor.js +93 -0
  159. package/lib/components/editors/CubePivotEditor.js.map +1 -0
  160. package/lib/components/editors/CubeRestrictEditor.d.ts.map +1 -1
  161. package/lib/components/editors/CubeRestrictEditor.js +2 -2
  162. package/lib/components/editors/CubeRestrictEditor.js.map +1 -1
  163. package/lib/components/editors/CubeServiceSourceEditor.d.ts +25 -0
  164. package/lib/components/editors/CubeServiceSourceEditor.d.ts.map +1 -0
  165. package/lib/components/editors/CubeServiceSourceEditor.js +41 -0
  166. package/lib/components/editors/CubeServiceSourceEditor.js.map +1 -0
  167. package/lib/components/grid/CubeColumnFormatDialog.d.ts +28 -0
  168. package/lib/components/grid/CubeColumnFormatDialog.d.ts.map +1 -0
  169. package/lib/components/grid/CubeColumnFormatDialog.js +94 -0
  170. package/lib/components/grid/CubeColumnFormatDialog.js.map +1 -0
  171. package/lib/components/grid/CubeDrilldownBar.d.ts +37 -0
  172. package/lib/components/grid/CubeDrilldownBar.d.ts.map +1 -0
  173. package/lib/components/grid/CubeDrilldownBar.js +77 -0
  174. package/lib/components/grid/CubeDrilldownBar.js.map +1 -0
  175. package/lib/components/grid/CubeGridRegion.d.ts.map +1 -1
  176. package/lib/components/grid/CubeGridRegion.js +40 -26
  177. package/lib/components/grid/CubeGridRegion.js.map +1 -1
  178. package/lib/components/grid/CubeGridValues.d.ts +31 -1
  179. package/lib/components/grid/CubeGridValues.d.ts.map +1 -1
  180. package/lib/components/grid/CubeGridValues.js +108 -1
  181. package/lib/components/grid/CubeGridValues.js.map +1 -1
  182. package/lib/components/grid/CubeResultGrid.d.ts +68 -5
  183. package/lib/components/grid/CubeResultGrid.d.ts.map +1 -1
  184. package/lib/components/grid/CubeResultGrid.js +308 -35
  185. package/lib/components/grid/CubeResultGrid.js.map +1 -1
  186. package/lib/components/grid/CubeRunStatsPanel.d.ts +28 -0
  187. package/lib/components/grid/CubeRunStatsPanel.d.ts.map +1 -0
  188. package/lib/components/grid/CubeRunStatsPanel.js +61 -0
  189. package/lib/components/grid/CubeRunStatsPanel.js.map +1 -0
  190. package/lib/components/grid/CubeServerSideGrid.d.ts +36 -0
  191. package/lib/components/grid/CubeServerSideGrid.d.ts.map +1 -0
  192. package/lib/components/grid/CubeServerSideGrid.js +114 -0
  193. package/lib/components/grid/CubeServerSideGrid.js.map +1 -0
  194. package/lib/components/grid/CubeSqlDialog.d.ts +24 -0
  195. package/lib/components/grid/CubeSqlDialog.d.ts.map +1 -0
  196. package/lib/components/grid/CubeSqlDialog.js +39 -0
  197. package/lib/components/grid/CubeSqlDialog.js.map +1 -0
  198. package/lib/components/grid/CubeSqlFormat.d.ts +20 -0
  199. package/lib/components/grid/CubeSqlFormat.d.ts.map +1 -0
  200. package/lib/components/grid/CubeSqlFormat.js +32 -0
  201. package/lib/components/grid/CubeSqlFormat.js.map +1 -0
  202. package/lib/components/palette/CubePalette.d.ts.map +1 -1
  203. package/lib/components/palette/CubePalette.js +32 -13
  204. package/lib/components/palette/CubePalette.js.map +1 -1
  205. package/lib/components/show-pure/CubeShowPureDialog.d.ts +4 -1
  206. package/lib/components/show-pure/CubeShowPureDialog.d.ts.map +1 -1
  207. package/lib/components/show-pure/CubeShowPureDialog.js +8 -4
  208. package/lib/components/show-pure/CubeShowPureDialog.js.map +1 -1
  209. package/lib/components/source-picker/CubeDataProductTab.d.ts.map +1 -1
  210. package/lib/components/source-picker/CubeDataProductTab.js +37 -16
  211. package/lib/components/source-picker/CubeDataProductTab.js.map +1 -1
  212. package/lib/components/source-picker/CubeDirectConnectionTab.d.ts.map +1 -1
  213. package/lib/components/source-picker/CubeDirectConnectionTab.js +6 -4
  214. package/lib/components/source-picker/CubeDirectConnectionTab.js.map +1 -1
  215. package/lib/components/source-picker/CubeFunctionSteps.d.ts +36 -0
  216. package/lib/components/source-picker/CubeFunctionSteps.d.ts.map +1 -0
  217. package/lib/components/source-picker/CubeFunctionSteps.js +76 -0
  218. package/lib/components/source-picker/CubeFunctionSteps.js.map +1 -0
  219. package/lib/components/source-picker/CubeIngestTab.d.ts.map +1 -1
  220. package/lib/components/source-picker/CubeIngestTab.js +39 -16
  221. package/lib/components/source-picker/CubeIngestTab.js.map +1 -1
  222. package/lib/components/source-picker/CubeInlineModelTab.d.ts +3 -2
  223. package/lib/components/source-picker/CubeInlineModelTab.d.ts.map +1 -1
  224. package/lib/components/source-picker/CubeInlineModelTab.js +23 -13
  225. package/lib/components/source-picker/CubeInlineModelTab.js.map +1 -1
  226. package/lib/components/source-picker/CubePickerListItem.d.ts +47 -0
  227. package/lib/components/source-picker/CubePickerListItem.d.ts.map +1 -0
  228. package/lib/components/source-picker/CubePickerListItem.js +62 -0
  229. package/lib/components/source-picker/CubePickerListItem.js.map +1 -0
  230. package/lib/components/source-picker/CubeProjectTab.d.ts +4 -3
  231. package/lib/components/source-picker/CubeProjectTab.d.ts.map +1 -1
  232. package/lib/components/source-picker/CubeProjectTab.js +7 -4
  233. package/lib/components/source-picker/CubeProjectTab.js.map +1 -1
  234. package/lib/components/source-picker/CubeServiceTab.d.ts +27 -0
  235. package/lib/components/source-picker/CubeServiceTab.d.ts.map +1 -0
  236. package/lib/components/source-picker/CubeServiceTab.js +36 -0
  237. package/lib/components/source-picker/CubeServiceTab.js.map +1 -0
  238. package/lib/components/source-picker/CubeSourcePicker.d.ts.map +1 -1
  239. package/lib/components/source-picker/CubeSourcePicker.js +16 -3
  240. package/lib/components/source-picker/CubeSourcePicker.js.map +1 -1
  241. package/lib/components/source-picker/CubeTablePreview.d.ts +29 -0
  242. package/lib/components/source-picker/CubeTablePreview.d.ts.map +1 -0
  243. package/lib/components/source-picker/CubeTablePreview.js +10 -0
  244. package/lib/components/source-picker/CubeTablePreview.js.map +1 -0
  245. package/lib/components/spec-transfer/CubeImportPureDialog.d.ts +27 -0
  246. package/lib/components/spec-transfer/CubeImportPureDialog.d.ts.map +1 -0
  247. package/lib/components/spec-transfer/CubeImportPureDialog.js +38 -0
  248. package/lib/components/spec-transfer/CubeImportPureDialog.js.map +1 -0
  249. package/lib/components/spec-transfer/CubeSpecTransferDialog.d.ts.map +1 -1
  250. package/lib/components/spec-transfer/CubeSpecTransferDialog.js +9 -3
  251. package/lib/components/spec-transfer/CubeSpecTransferDialog.js.map +1 -1
  252. package/lib/graph-manager/CubeDataProductCatalog.d.ts +10 -0
  253. package/lib/graph-manager/CubeDataProductCatalog.d.ts.map +1 -1
  254. package/lib/graph-manager/CubeDataProductCatalog.js.map +1 -1
  255. package/lib/graph-manager/CubeEngine.d.ts +46 -1
  256. package/lib/graph-manager/CubeEngine.d.ts.map +1 -1
  257. package/lib/graph-manager/CubeEngine.js.map +1 -1
  258. package/lib/graph-manager/CubeEngineClientSettings.d.ts +43 -0
  259. package/lib/graph-manager/CubeEngineClientSettings.d.ts.map +1 -0
  260. package/lib/graph-manager/CubeEngineClientSettings.js +51 -0
  261. package/lib/graph-manager/CubeEngineClientSettings.js.map +1 -0
  262. package/lib/graph-manager/CubeIngest.d.ts +5 -0
  263. package/lib/graph-manager/CubeIngest.d.ts.map +1 -1
  264. package/lib/graph-manager/CubeIngest.js +10 -0
  265. package/lib/graph-manager/CubeIngest.js.map +1 -1
  266. package/lib/graph-manager/CubeIngestCatalog.d.ts +26 -0
  267. package/lib/graph-manager/CubeIngestCatalog.d.ts.map +1 -1
  268. package/lib/graph-manager/CubeIngestCatalog.js +6 -0
  269. package/lib/graph-manager/CubeIngestCatalog.js.map +1 -1
  270. package/lib/graph-manager/CubeLakehouseRuntime.d.ts +29 -0
  271. package/lib/graph-manager/CubeLakehouseRuntime.d.ts.map +1 -0
  272. package/lib/graph-manager/CubeLakehouseRuntime.js +40 -0
  273. package/lib/graph-manager/CubeLakehouseRuntime.js.map +1 -0
  274. package/lib/graph-manager/CubeProjectCatalog.d.ts +3 -3
  275. package/lib/graph-manager/CubeService.d.ts +20 -0
  276. package/lib/graph-manager/CubeService.d.ts.map +1 -0
  277. package/lib/graph-manager/CubeService.js +22 -0
  278. package/lib/graph-manager/CubeService.js.map +1 -0
  279. package/lib/graph-manager/CubeServiceCatalog.d.ts +31 -0
  280. package/lib/graph-manager/CubeServiceCatalog.d.ts.map +1 -0
  281. package/lib/graph-manager/CubeServiceCatalog.js +17 -0
  282. package/lib/graph-manager/CubeServiceCatalog.js.map +1 -0
  283. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts +52 -5
  284. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts.map +1 -1
  285. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js +63 -5
  286. package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js.map +1 -1
  287. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts +9 -6
  288. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts.map +1 -1
  289. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js +12 -8
  290. package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js.map +1 -1
  291. package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.d.ts +30 -0
  292. package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.d.ts.map +1 -0
  293. package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.js +229 -0
  294. package/lib/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.js.map +1 -0
  295. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts.map +1 -1
  296. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js +18 -9
  297. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js.map +1 -1
  298. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts +4 -9
  299. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts.map +1 -1
  300. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js +2 -1
  301. package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js.map +1 -1
  302. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.d.ts +34 -0
  303. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.d.ts.map +1 -0
  304. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.js +332 -0
  305. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.js.map +1 -0
  306. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.d.ts.map +1 -1
  307. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js +49 -10
  308. package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js.map +1 -1
  309. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts +1 -1
  310. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.d.ts.map +1 -1
  311. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js +3 -1
  312. package/lib/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.js.map +1 -1
  313. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts +2 -1
  314. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts.map +1 -1
  315. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js +2 -1
  316. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js.map +1 -1
  317. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts +18 -0
  318. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts.map +1 -1
  319. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js +74 -6
  320. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js.map +1 -1
  321. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts.map +1 -1
  322. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js +7 -4
  323. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js.map +1 -1
  324. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.d.ts +31 -0
  325. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.d.ts.map +1 -0
  326. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.js +69 -0
  327. package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.js.map +1 -0
  328. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts.map +1 -1
  329. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js +6 -2
  330. package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js.map +1 -1
  331. package/lib/index.css +2 -2
  332. package/lib/index.css.map +1 -1
  333. package/lib/index.d.ts +12 -3
  334. package/lib/index.d.ts.map +1 -1
  335. package/lib/index.js +10 -1
  336. package/lib/index.js.map +1 -1
  337. package/lib/stores/CubeAddPlacement.d.ts +10 -3
  338. package/lib/stores/CubeAddPlacement.d.ts.map +1 -1
  339. package/lib/stores/CubeAddPlacement.js +16 -5
  340. package/lib/stores/CubeAddPlacement.js.map +1 -1
  341. package/lib/stores/CubeDevSettingsState.d.ts +47 -0
  342. package/lib/stores/CubeDevSettingsState.d.ts.map +1 -0
  343. package/lib/stores/CubeDevSettingsState.js +99 -0
  344. package/lib/stores/CubeDevSettingsState.js.map +1 -0
  345. package/lib/stores/CubeEditorState.d.ts +173 -43
  346. package/lib/stores/CubeEditorState.d.ts.map +1 -1
  347. package/lib/stores/CubeEditorState.js +498 -113
  348. package/lib/stores/CubeEditorState.js.map +1 -1
  349. package/lib/stores/CubeEngineChecks.d.ts +59 -0
  350. package/lib/stores/CubeEngineChecks.d.ts.map +1 -0
  351. package/lib/stores/CubeEngineChecks.js +100 -0
  352. package/lib/stores/CubeEngineChecks.js.map +1 -0
  353. package/lib/stores/CubeExamples.d.ts.map +1 -1
  354. package/lib/stores/CubeExamples.js +39 -2
  355. package/lib/stores/CubeExamples.js.map +1 -1
  356. package/lib/stores/CubeExamplesState.d.ts +1 -1
  357. package/lib/stores/CubeExamplesState.d.ts.map +1 -1
  358. package/lib/stores/CubeExamplesState.js +2 -2
  359. package/lib/stores/CubeExamplesState.js.map +1 -1
  360. package/lib/stores/CubeExecutionState.d.ts.map +1 -1
  361. package/lib/stores/CubeExecutionState.js +24 -33
  362. package/lib/stores/CubeExecutionState.js.map +1 -1
  363. package/lib/stores/CubeExportState.d.ts +41 -0
  364. package/lib/stores/CubeExportState.d.ts.map +1 -0
  365. package/lib/stores/CubeExportState.js +134 -0
  366. package/lib/stores/CubeExportState.js.map +1 -0
  367. package/lib/stores/CubeExpressionFilterCheck.d.ts +51 -0
  368. package/lib/stores/CubeExpressionFilterCheck.d.ts.map +1 -0
  369. package/lib/stores/CubeExpressionFilterCheck.js +134 -0
  370. package/lib/stores/CubeExpressionFilterCheck.js.map +1 -0
  371. package/lib/stores/CubeExtendTyping.d.ts +6 -14
  372. package/lib/stores/CubeExtendTyping.d.ts.map +1 -1
  373. package/lib/stores/CubeExtendTyping.js +6 -33
  374. package/lib/stores/CubeExtendTyping.js.map +1 -1
  375. package/lib/stores/CubeFunctionRecheck.d.ts +30 -0
  376. package/lib/stores/CubeFunctionRecheck.d.ts.map +1 -0
  377. package/lib/stores/CubeFunctionRecheck.js +67 -0
  378. package/lib/stores/CubeFunctionRecheck.js.map +1 -0
  379. package/lib/stores/CubeGridFetcher.d.ts +75 -0
  380. package/lib/stores/CubeGridFetcher.d.ts.map +1 -0
  381. package/lib/stores/CubeGridFetcher.js +197 -0
  382. package/lib/stores/CubeGridFetcher.js.map +1 -0
  383. package/lib/stores/CubeGridQuickActions.d.ts +18 -6
  384. package/lib/stores/CubeGridQuickActions.d.ts.map +1 -1
  385. package/lib/stores/CubeGridQuickActions.js +32 -12
  386. package/lib/stores/CubeGridQuickActions.js.map +1 -1
  387. package/lib/stores/CubeGridState.d.ts +136 -0
  388. package/lib/stores/CubeGridState.d.ts.map +1 -0
  389. package/lib/stores/CubeGridState.js +317 -0
  390. package/lib/stores/CubeGridState.js.map +1 -0
  391. package/lib/stores/CubeHost.d.ts +42 -0
  392. package/lib/stores/CubeHost.d.ts.map +1 -1
  393. package/lib/stores/CubeHost.js +4 -0
  394. package/lib/stores/CubeHost.js.map +1 -1
  395. package/lib/stores/CubeLambdaImportState.d.ts +118 -0
  396. package/lib/stores/CubeLambdaImportState.d.ts.map +1 -0
  397. package/lib/stores/CubeLambdaImportState.js +302 -0
  398. package/lib/stores/CubeLambdaImportState.js.map +1 -0
  399. package/lib/stores/CubeLambdaSources.d.ts +45 -0
  400. package/lib/stores/CubeLambdaSources.d.ts.map +1 -0
  401. package/lib/stores/CubeLambdaSources.js +261 -0
  402. package/lib/stores/CubeLambdaSources.js.map +1 -0
  403. package/lib/stores/CubeQueryRun.d.ts +59 -0
  404. package/lib/stores/CubeQueryRun.d.ts.map +1 -0
  405. package/lib/stores/CubeQueryRun.js +101 -0
  406. package/lib/stores/CubeQueryRun.js.map +1 -0
  407. package/lib/stores/CubeRunStatsState.d.ts +61 -0
  408. package/lib/stores/CubeRunStatsState.d.ts.map +1 -0
  409. package/lib/stores/CubeRunStatsState.js +54 -0
  410. package/lib/stores/CubeRunStatsState.js.map +1 -0
  411. package/lib/stores/CubeRunningStepLambda.d.ts +25 -0
  412. package/lib/stores/CubeRunningStepLambda.d.ts.map +1 -0
  413. package/lib/stores/CubeRunningStepLambda.js +45 -0
  414. package/lib/stores/CubeRunningStepLambda.js.map +1 -0
  415. package/lib/stores/CubeServiceRecheck.d.ts +29 -0
  416. package/lib/stores/CubeServiceRecheck.d.ts.map +1 -0
  417. package/lib/stores/CubeServiceRecheck.js +33 -0
  418. package/lib/stores/CubeServiceRecheck.js.map +1 -0
  419. package/lib/stores/CubeShowPureState.d.ts +14 -1
  420. package/lib/stores/CubeShowPureState.d.ts.map +1 -1
  421. package/lib/stores/CubeShowPureState.js +41 -11
  422. package/lib/stores/CubeShowPureState.js.map +1 -1
  423. package/lib/stores/CubeSourcePickerState.d.ts +20 -4
  424. package/lib/stores/CubeSourcePickerState.d.ts.map +1 -1
  425. package/lib/stores/CubeSourcePickerState.js +75 -14
  426. package/lib/stores/CubeSourcePickerState.js.map +1 -1
  427. package/lib/stores/LocalModelCatalog.d.ts.map +1 -1
  428. package/lib/stores/LocalModelCatalog.js +3 -1
  429. package/lib/stores/LocalModelCatalog.js.map +1 -1
  430. package/lib/stores/editors/CubeExpressionFilterDraft.d.ts +91 -0
  431. package/lib/stores/editors/CubeExpressionFilterDraft.d.ts.map +1 -0
  432. package/lib/stores/editors/CubeExpressionFilterDraft.js +254 -0
  433. package/lib/stores/editors/CubeExpressionFilterDraft.js.map +1 -0
  434. package/lib/stores/editors/CubeFunctionDraft.d.ts +34 -0
  435. package/lib/stores/editors/CubeFunctionDraft.d.ts.map +1 -0
  436. package/lib/stores/editors/CubeFunctionDraft.js +69 -0
  437. package/lib/stores/editors/CubeFunctionDraft.js.map +1 -0
  438. package/lib/stores/editors/CubeNodeDraftRegistry.d.ts +4 -2
  439. package/lib/stores/editors/CubeNodeDraftRegistry.d.ts.map +1 -1
  440. package/lib/stores/editors/CubeNodeDraftRegistry.js +20 -3
  441. package/lib/stores/editors/CubeNodeDraftRegistry.js.map +1 -1
  442. package/lib/stores/editors/CubePivotDraft.d.ts +93 -0
  443. package/lib/stores/editors/CubePivotDraft.d.ts.map +1 -0
  444. package/lib/stores/editors/CubePivotDraft.js +267 -0
  445. package/lib/stores/editors/CubePivotDraft.js.map +1 -0
  446. package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts +26 -0
  447. package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts.map +1 -0
  448. package/lib/stores/fixtures/CubeSalesDuckDbModel.js +46 -0
  449. package/lib/stores/fixtures/CubeSalesDuckDbModel.js.map +1 -0
  450. package/lib/stores/fixtures/CubeTradesModel.d.ts +4 -0
  451. package/lib/stores/fixtures/CubeTradesModel.d.ts.map +1 -1
  452. package/lib/stores/fixtures/CubeTradesModel.js +31 -1
  453. package/lib/stores/fixtures/CubeTradesModel.js.map +1 -1
  454. package/lib/stores/source-picker/CubeDataProductTabState.d.ts +34 -5
  455. package/lib/stores/source-picker/CubeDataProductTabState.d.ts.map +1 -1
  456. package/lib/stores/source-picker/CubeDataProductTabState.js +111 -26
  457. package/lib/stores/source-picker/CubeDataProductTabState.js.map +1 -1
  458. package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts +25 -2
  459. package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts.map +1 -1
  460. package/lib/stores/source-picker/CubeDirectConnectionTabState.js +183 -31
  461. package/lib/stores/source-picker/CubeDirectConnectionTabState.js.map +1 -1
  462. package/lib/stores/source-picker/CubeIngestTabState.d.ts +22 -9
  463. package/lib/stores/source-picker/CubeIngestTabState.d.ts.map +1 -1
  464. package/lib/stores/source-picker/CubeIngestTabState.js +84 -29
  465. package/lib/stores/source-picker/CubeIngestTabState.js.map +1 -1
  466. package/lib/stores/source-picker/CubeInlineModelTabState.d.ts +100 -4
  467. package/lib/stores/source-picker/CubeInlineModelTabState.d.ts.map +1 -1
  468. package/lib/stores/source-picker/CubeInlineModelTabState.js +415 -28
  469. package/lib/stores/source-picker/CubeInlineModelTabState.js.map +1 -1
  470. package/lib/stores/source-picker/CubeProjectTabState.d.ts +18 -3
  471. package/lib/stores/source-picker/CubeProjectTabState.d.ts.map +1 -1
  472. package/lib/stores/source-picker/CubeProjectTabState.js +26 -1
  473. package/lib/stores/source-picker/CubeProjectTabState.js.map +1 -1
  474. package/lib/stores/source-picker/CubeServiceTabState.d.ts +74 -0
  475. package/lib/stores/source-picker/CubeServiceTabState.d.ts.map +1 -0
  476. package/lib/stores/source-picker/CubeServiceTabState.js +216 -0
  477. package/lib/stores/source-picker/CubeServiceTabState.js.map +1 -0
  478. package/lib/stores/source-picker/CubeSourcePickerTab.d.ts +15 -3
  479. package/lib/stores/source-picker/CubeSourcePickerTab.d.ts.map +1 -1
  480. package/lib/stores/source-picker/CubeSourcePickerTab.js +21 -0
  481. package/lib/stores/source-picker/CubeSourcePickerTab.js.map +1 -1
  482. package/package.json +10 -9
  483. package/src/__lib__/LegendCubeCommand.ts +7 -0
  484. package/src/__lib__/LegendCubeFunctionLabels.ts +41 -0
  485. package/src/__lib__/LegendCubeHelpText.ts +23 -1
  486. package/src/__lib__/LegendCubeLabels.ts +170 -13
  487. package/src/__lib__/LegendCubeProjectSourceLabels.ts +26 -0
  488. package/src/__lib__/LegendCubeServiceLabels.ts +41 -0
  489. package/src/__lib__/LegendCubeTesting.ts +7 -0
  490. package/src/__test-utils__/CubeEngineTestSupport.ts +2 -1
  491. package/src/__test-utils__/CubeExpressionTestUtils.ts +29 -2
  492. package/src/__test-utils__/CubeFunctionTestOutline.ts +78 -0
  493. package/src/__test-utils__/CubeLambdaCorpus.ts +137 -0
  494. package/src/__test-utils__/CubePageTestUtils.tsx +34 -0
  495. package/src/__test-utils__/CubeTestApplication.ts +25 -0
  496. package/src/__test-utils__/FakeCubeEngine.ts +27 -0
  497. package/src/__test-utils__/FakeCubeIngestCatalog.ts +18 -0
  498. package/src/__test-utils__/FakeCubeServiceCatalog.ts +57 -0
  499. package/src/components/CubeAddItems.tsx +13 -6
  500. package/src/components/CubeDialogTheme.ts +25 -0
  501. package/src/components/CubeEditor.tsx +155 -129
  502. package/src/components/CubeFileMenu.tsx +127 -0
  503. package/src/components/CubeLambdaImportBanner.tsx +97 -0
  504. package/src/components/CubeNodeIcon.tsx +7 -0
  505. package/src/components/CubeSchemaColumnsTable.tsx +7 -2
  506. package/src/components/canvas/CubeCanvas.tsx +52 -13
  507. package/src/components/canvas/CubeCanvasContextMenu.tsx +33 -2
  508. package/src/components/canvas/CubeCanvasElements.ts +76 -3
  509. package/src/components/canvas/CubeCanvasLayout.ts +1 -1
  510. package/src/components/canvas/CubeCanvasNode.tsx +30 -3
  511. package/src/components/dev-settings/CubeDevSettings.tsx +154 -0
  512. package/src/components/editors/CubeColumnChecklist.tsx +8 -2
  513. package/src/components/editors/CubeColumnPicker.tsx +6 -3
  514. package/src/components/editors/CubeConcatEditor.tsx +2 -2
  515. package/src/components/editors/CubeExpressionFilterEditor.tsx +193 -0
  516. package/src/components/editors/CubeExtendEditor.tsx +3 -3
  517. package/src/components/editors/CubeFilterEditor.tsx +13 -1
  518. package/src/components/editors/CubeFunctionSourceEditor.tsx +140 -0
  519. package/src/components/editors/CubeJoinEditor.tsx +23 -4
  520. package/src/components/editors/CubeNodeEditorPanel.tsx +22 -10
  521. package/src/components/editors/CubeNodeEditorPopper.tsx +9 -1
  522. package/src/components/editors/CubeNodeEditorRegistry.ts +12 -0
  523. package/src/components/editors/CubePivotEditor.tsx +277 -0
  524. package/src/components/editors/CubeRestrictEditor.tsx +8 -2
  525. package/src/components/editors/CubeServiceSourceEditor.tsx +77 -0
  526. package/src/components/grid/CubeColumnFormatDialog.tsx +289 -0
  527. package/src/components/grid/CubeDrilldownBar.tsx +219 -0
  528. package/src/components/grid/CubeGridRegion.tsx +170 -54
  529. package/src/components/grid/CubeGridValues.ts +146 -1
  530. package/src/components/grid/CubeResultGrid.tsx +443 -41
  531. package/src/components/grid/CubeRunStatsPanel.tsx +156 -0
  532. package/src/components/grid/CubeServerSideGrid.tsx +200 -0
  533. package/src/components/grid/CubeSqlDialog.tsx +90 -0
  534. package/src/components/grid/CubeSqlFormat.ts +37 -0
  535. package/src/components/palette/CubePalette.tsx +45 -12
  536. package/src/components/show-pure/CubeShowPureDialog.tsx +19 -5
  537. package/src/components/source-picker/CubeDataProductTab.tsx +169 -75
  538. package/src/components/source-picker/CubeDirectConnectionTab.tsx +42 -30
  539. package/src/components/source-picker/CubeFunctionSteps.tsx +244 -0
  540. package/src/components/source-picker/CubeIngestTab.tsx +159 -79
  541. package/src/components/source-picker/CubeInlineModelTab.tsx +110 -81
  542. package/src/components/source-picker/CubePickerListItem.tsx +118 -0
  543. package/src/components/source-picker/CubeProjectTab.tsx +6 -3
  544. package/src/components/source-picker/CubeServiceTab.tsx +151 -0
  545. package/src/components/source-picker/CubeSourcePicker.tsx +54 -18
  546. package/src/components/source-picker/CubeTablePreview.tsx +49 -0
  547. package/src/components/spec-transfer/CubeImportPureDialog.tsx +122 -0
  548. package/src/components/spec-transfer/CubeSpecTransferDialog.tsx +21 -8
  549. package/src/graph-manager/CubeDataProductCatalog.ts +11 -0
  550. package/src/graph-manager/CubeEngine.ts +51 -1
  551. package/src/graph-manager/CubeEngineClientSettings.ts +64 -0
  552. package/src/graph-manager/CubeIngest.ts +15 -0
  553. package/src/graph-manager/CubeIngestCatalog.ts +33 -0
  554. package/src/graph-manager/CubeLakehouseRuntime.ts +43 -0
  555. package/src/graph-manager/CubeProjectCatalog.ts +3 -3
  556. package/src/graph-manager/CubeService.ts +29 -0
  557. package/src/graph-manager/CubeServiceCatalog.ts +35 -0
  558. package/src/graph-manager/protocol/pure/CubeEngineBuilder.ts +115 -5
  559. package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.ts +13 -7
  560. package/src/graph-manager/protocol/pure/v1/V1_CubeFunctionOutlineBuilder.ts +312 -0
  561. package/src/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.ts +35 -9
  562. package/src/graph-manager/protocol/pure/v1/V1_CubeIngestModel.ts +6 -15
  563. package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaReader.ts +471 -0
  564. package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.ts +70 -15
  565. package/src/graph-manager/protocol/pure/v1/V1_CubeModelOutlineBuilder.ts +3 -1
  566. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.ts +7 -1
  567. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.ts +122 -7
  568. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.ts +9 -4
  569. package/src/graph-manager/protocol/pure/v1/V1_LegendCubeServiceCatalog.ts +92 -0
  570. package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.ts +6 -1
  571. package/src/index.ts +32 -2
  572. package/src/stores/CubeAddPlacement.ts +25 -5
  573. package/src/stores/CubeDevSettingsState.ts +117 -0
  574. package/src/stores/CubeEditorState.ts +687 -197
  575. package/src/stores/CubeEngineChecks.ts +240 -0
  576. package/src/stores/CubeExamples.ts +70 -1
  577. package/src/stores/CubeExamplesState.ts +4 -2
  578. package/src/stores/CubeExecutionState.ts +26 -57
  579. package/src/stores/CubeExportState.ts +196 -0
  580. package/src/stores/CubeExpressionFilterCheck.ts +218 -0
  581. package/src/stores/CubeExtendTyping.ts +6 -46
  582. package/src/stores/CubeFunctionRecheck.ts +97 -0
  583. package/src/stores/CubeGridFetcher.ts +302 -0
  584. package/src/stores/CubeGridQuickActions.ts +33 -11
  585. package/src/stores/CubeGridState.ts +450 -0
  586. package/src/stores/CubeHost.ts +48 -0
  587. package/src/stores/CubeLambdaImportState.ts +434 -0
  588. package/src/stores/CubeLambdaSources.ts +390 -0
  589. package/src/stores/CubeQueryRun.ts +169 -0
  590. package/src/stores/CubeRunStatsState.ts +91 -0
  591. package/src/stores/CubeRunningStepLambda.ts +62 -0
  592. package/src/stores/CubeServiceRecheck.ts +53 -0
  593. package/src/stores/CubeShowPureState.ts +51 -12
  594. package/src/stores/CubeSourcePickerState.ts +89 -13
  595. package/src/stores/LocalModelCatalog.ts +6 -1
  596. package/src/stores/editors/CubeExpressionFilterDraft.ts +385 -0
  597. package/src/stores/editors/CubeFunctionDraft.ts +92 -0
  598. package/src/stores/editors/CubeNodeDraftRegistry.ts +27 -2
  599. package/src/stores/editors/CubePivotDraft.ts +355 -0
  600. package/src/stores/fixtures/CubeSalesDuckDbModel.ts +54 -0
  601. package/src/stores/fixtures/CubeTradesModel.ts +36 -1
  602. package/src/stores/source-picker/CubeDataProductTabState.ts +162 -35
  603. package/src/stores/source-picker/CubeDirectConnectionTabState.ts +246 -47
  604. package/src/stores/source-picker/CubeIngestTabState.ts +112 -38
  605. package/src/stores/source-picker/CubeInlineModelTabState.ts +514 -34
  606. package/src/stores/source-picker/CubeProjectTabState.ts +35 -3
  607. package/src/stores/source-picker/CubeServiceTabState.ts +288 -0
  608. package/src/stores/source-picker/CubeSourcePickerTab.ts +31 -2
  609. package/tsconfig.json +50 -0
@@ -26,7 +26,10 @@ import type { CubeDocument } from '@finos/legend-cube';
26
26
  import { flowResult } from 'mobx';
27
27
  import { observer } from 'mobx-react-lite';
28
28
  import { useEffect, useState } from 'react';
29
- import { UNDO_SHORTCUT_LABEL } from '../__lib__/LegendCubeCommand.js';
29
+ import {
30
+ REDO_SHORTCUT_LABEL,
31
+ UNDO_SHORTCUT_LABEL,
32
+ } from '../__lib__/LegendCubeCommand.js';
30
33
  import {
31
34
  CUBE_PENDING_LABEL,
32
35
  formatDisabledReasons,
@@ -39,17 +42,22 @@ import {
39
42
  type CubeEntrySource,
40
43
  CubeEntrySourceState,
41
44
  } from '../stores/CubeEntrySource.js';
42
- import type { CubeHost } from '../stores/CubeHost.js';
45
+ import type { CubeInitialLambda } from '../stores/CubeLambdaImportState.js';
46
+ import { type CubeHost, isCubeSampleDataOffered } from '../stores/CubeHost.js';
43
47
  import { CubeAddItemsMenu } from './CubeAddItems.js';
44
48
  import { CubeButton } from './CubeButton.js';
45
49
  import { CubeCanvas } from './canvas/CubeCanvas.js';
46
50
  import { CubeEntrySourceBanner } from './CubeEntrySourceBanner.js';
51
+ import { CubeLambdaImportBanner } from './CubeLambdaImportBanner.js';
47
52
  import { CubeGridRegion } from './grid/CubeGridRegion.js';
48
53
  import { CubePalette } from './palette/CubePalette.js';
54
+ import { CubeDevSettingsDialog } from './dev-settings/CubeDevSettings.js';
49
55
  import { CubeShowPureDialog } from './show-pure/CubeShowPureDialog.js';
50
56
  import { CubeExamplesDialog } from './examples/CubeExamplesDialog.js';
57
+ import { CubeFileMenu } from './CubeFileMenu.js';
51
58
  import { CubeSourcePicker } from './source-picker/CubeSourcePicker.js';
52
59
  import { CubeSpecTransferDialog } from './spec-transfer/CubeSpecTransferDialog.js';
60
+ import { CubeImportPureDialog } from './spec-transfer/CubeImportPureDialog.js';
53
61
 
54
62
  /** The graph never takes more of the window's height than this, so the results stay in view (spec §17.3) */
55
63
  const MAX_GRAPH_SHARE_OF_WINDOW = 0.6;
@@ -65,142 +73,144 @@ const useMaxGraphHeight = (): number => {
65
73
  return Math.round(windowHeight * MAX_GRAPH_SHARE_OF_WINDOW);
66
74
  };
67
75
 
76
+ /** The buttons a host adds to the header, given the page's state */
77
+ export type CubeHeaderActions = (
78
+ editorState: CubeEditorState,
79
+ ) => React.ReactNode;
80
+
68
81
  /**
69
82
  * The graph region's header, above the graph and the results: the cube's
70
83
  * name, its actions, its pending and read-only notes, and its dialogs. It
71
84
  * stays when the graph is hidden; its buttons wrap when the page is narrow.
72
85
  */
73
- const CubeGraphHeader = observer((props: { editorState: CubeEditorState }) => {
74
- const { editorState } = props;
75
- const { readOnly } = editorState;
76
- const { showGraph } = editorState.document.meta.presentation;
77
- return (
78
- <div
79
- className="flex shrink-0 flex-col bg-[var(--color-bg-panel)]"
80
- data-testid={LEGEND_CUBE_TEST_ID.GRAPH_REGION}
81
- >
82
- <div className="flex min-h-8 shrink-0 flex-wrap items-center gap-2 border-b border-[var(--color-border-default)] bg-[var(--color-bg-panel-header)] px-2 py-1">
83
- <span className="min-w-24 flex-1 truncate text-lg font-medium">
84
- {editorState.document.name ?? UNSAVED_CUBE_NAME}
85
- </span>
86
- {editorState.isResolvingSources && (
87
- <span className="shrink-0 text-base text-[var(--color-text-secondary)]">
88
- {CUBE_PENDING_LABEL.RESOLVING_SOURCE}
89
- </span>
90
- )}
91
- {editorState.isTypingExtends && (
92
- <span className="shrink-0 text-base text-[var(--color-text-secondary)]">
93
- {CUBE_PENDING_LABEL.TYPING_COLUMNS}
86
+ const CubeGraphHeader = observer(
87
+ (props: {
88
+ editorState: CubeEditorState;
89
+ headerActions?: CubeHeaderActions | undefined;
90
+ }) => {
91
+ const { editorState, headerActions } = props;
92
+ const { readOnly } = editorState;
93
+ const { showGraph } = editorState.document.meta.presentation;
94
+ return (
95
+ <div
96
+ className="flex shrink-0 flex-col bg-[var(--color-bg-panel)]"
97
+ data-testid={LEGEND_CUBE_TEST_ID.GRAPH_REGION}
98
+ >
99
+ <div className="flex min-h-8 shrink-0 flex-wrap items-center gap-2 border-b border-[var(--color-border-default)] bg-[var(--color-bg-panel-header)] px-2 py-1">
100
+ <span className="min-w-24 flex-1 truncate text-lg font-medium">
101
+ {editorState.document.name ?? UNSAVED_CUBE_NAME}
94
102
  </span>
95
- )}
96
- <CubeAddItemsMenu editorState={editorState} />
97
- <CubeButton
98
- title="Open an example cube, or start one on sample data"
99
- onClick={() => editorState.examples.open()}
100
- >
101
- Examples
102
- </CubeButton>
103
- <CubeButton
104
- title={
105
- readOnly
106
- ? READ_ONLY_CUBE_TITLE
107
- : `Undo the last change (${UNDO_SHORTCUT_LABEL})`
108
- }
109
- disabled={!editorState.canUndo && !editorState.hasEditsToApply}
110
- onClick={() => editorState.undoEdited()}
111
- >
112
- Undo
113
- </CubeButton>
114
- <CubeButton
115
- title={
116
- editorState.execution.canExecute
117
- ? 'Show the Pure query that Execute runs'
118
- : formatDisabledReasons(editorState.execution.disabledReasons)
119
- }
120
- disabled={!editorState.execution.canExecute}
121
- onClick={() => {
122
- // what it shows includes the node editor's edits, as Execute runs them
123
- if (!editorState.nodeEditor.finishApplied()) {
124
- return;
103
+ {editorState.isResolvingSources && (
104
+ <span className="shrink-0 text-base text-[var(--color-text-secondary)]">
105
+ {CUBE_PENDING_LABEL.RESOLVING_SOURCE}
106
+ </span>
107
+ )}
108
+ {editorState.isCheckingExpressions && (
109
+ <span className="shrink-0 text-base text-[var(--color-text-secondary)]">
110
+ {CUBE_PENDING_LABEL.CHECKING_EXPRESSIONS}
111
+ </span>
112
+ )}
113
+ <CubeFileMenu editorState={editorState} />
114
+ <CubeAddItemsMenu editorState={editorState} />
115
+ {isCubeSampleDataOffered(editorState.host) && (
116
+ <CubeButton
117
+ title="Open an example cube, or start one on sample data"
118
+ onClick={() => editorState.examples.open()}
119
+ >
120
+ Examples
121
+ </CubeButton>
122
+ )}
123
+ <CubeButton
124
+ title={
125
+ readOnly
126
+ ? READ_ONLY_CUBE_TITLE
127
+ : `Undo the last change (${UNDO_SHORTCUT_LABEL})`
125
128
  }
126
- flowResult(editorState.showPure.open()).catch(
127
- editorState.host.applicationStore.alertUnhandledError,
128
- );
129
- }}
130
- >
131
- Show Pure
132
- </CubeButton>
133
- <CubeButton
134
- title={
135
- readOnly
136
- ? READ_ONLY_CUBE_TITLE
137
- : "Show the cube's spec, to copy or download"
138
- }
139
- disabled={readOnly}
140
- onClick={() => {
141
- if (editorState.nodeEditor.finishApplied()) {
142
- editorState.specTransfer.openExport();
129
+ disabled={!editorState.canUndo && !editorState.hasEditsToApply}
130
+ onClick={() => editorState.undoEdited()}
131
+ >
132
+ Undo
133
+ </CubeButton>
134
+ <CubeButton
135
+ title={`Redo the last change undone (${REDO_SHORTCUT_LABEL})`}
136
+ disabled={!editorState.canRedo}
137
+ onClick={() => editorState.redoEdited()}
138
+ >
139
+ Redo
140
+ </CubeButton>
141
+ <CubeButton
142
+ title={
143
+ editorState.execution.canExecute
144
+ ? 'Show the Pure query that Execute runs'
145
+ : formatDisabledReasons(editorState.execution.disabledReasons)
143
146
  }
144
- }}
145
- >
146
- Export
147
- </CubeButton>
148
- <CubeButton
149
- title="Open a cube from its spec, in place of this one"
150
- onClick={() => editorState.specTransfer.openImport()}
151
- >
152
- Import
153
- </CubeButton>
154
- <CubeButton
155
- title={
156
- showGraph
157
- ? 'Hide the graph, leaving more room for the results'
158
- : 'Show the graph'
159
- }
160
- onClick={() => {
161
- // the floating editor goes with the graph, applying its edits
162
- if (!showGraph || editorState.nodeEditor.finish()) {
163
- editorState.setShowGraph(!showGraph);
147
+ disabled={!editorState.execution.canExecute}
148
+ onClick={() => {
149
+ // what it shows includes the node editor's edits, as Execute runs them
150
+ if (!editorState.nodeEditor.finishApplied()) {
151
+ return;
152
+ }
153
+ flowResult(editorState.showPure.open()).catch(
154
+ editorState.host.applicationStore.alertUnhandledError,
155
+ );
156
+ }}
157
+ >
158
+ Show Pure
159
+ </CubeButton>
160
+ <CubeButton
161
+ title={
162
+ showGraph
163
+ ? 'Hide the graph, leaving more room for the results'
164
+ : 'Show the graph'
164
165
  }
165
- }}
166
- >
167
- {showGraph ? 'Hide graph' : 'Show graph'}
168
- </CubeButton>
169
- </div>
170
- <PanelLoadingIndicator
171
- isLoading={
172
- editorState.isResolvingSources || editorState.isTypingExtends
173
- }
174
- />
175
- {readOnly && (
176
- <div
177
- className="shrink-0 border-b border-[var(--color-border-default)] bg-[var(--color-status-warn-bg)] px-2 py-1 text-base text-[var(--color-status-warn)]"
178
- role="status"
179
- >
180
- {READ_ONLY_CUBE_TITLE}. You can view and run it.
181
- </div>
182
- )}
183
- {editorState.nodeEditor.notice && (
184
- <div
185
- className="flex shrink-0 items-center gap-2 border-b border-[var(--color-border-default)] bg-[var(--color-status-warn-bg)] px-2 py-1 text-base text-[var(--color-status-warn)]"
186
- role="status"
187
- data-testid={LEGEND_CUBE_TEST_ID.EDITOR_NOTICE}
188
- >
189
- <span className="min-w-0 flex-1">
190
- {editorState.nodeEditor.notice}
191
- </span>
192
- <CubeButton onClick={() => editorState.nodeEditor.dismissNotice()}>
193
- Dismiss
166
+ onClick={() => {
167
+ // the floating editor goes with the graph, applying its edits
168
+ if (!showGraph || editorState.nodeEditor.finish()) {
169
+ editorState.setShowGraph(!showGraph);
170
+ }
171
+ }}
172
+ >
173
+ {showGraph ? 'Hide graph' : 'Show graph'}
194
174
  </CubeButton>
175
+ {headerActions?.(editorState)}
195
176
  </div>
196
- )}
197
- <CubeSourcePicker editorState={editorState} />
198
- <CubeExamplesDialog editorState={editorState} />
199
- <CubeSpecTransferDialog editorState={editorState} />
200
- <CubeShowPureDialog editorState={editorState} />
201
- </div>
202
- );
203
- });
177
+ <PanelLoadingIndicator
178
+ isLoading={
179
+ editorState.isResolvingSources || editorState.isCheckingExpressions
180
+ }
181
+ />
182
+ {readOnly && (
183
+ <div
184
+ className="shrink-0 border-b border-[var(--color-border-default)] bg-[var(--color-status-warn-bg)] px-2 py-1 text-base text-[var(--color-status-warn)]"
185
+ role="status"
186
+ >
187
+ {READ_ONLY_CUBE_TITLE}. You can view and run it.
188
+ </div>
189
+ )}
190
+ {editorState.nodeEditor.notice && (
191
+ <div
192
+ className="flex shrink-0 items-center gap-2 border-b border-[var(--color-border-default)] bg-[var(--color-status-warn-bg)] px-2 py-1 text-base text-[var(--color-status-warn)]"
193
+ role="status"
194
+ data-testid={LEGEND_CUBE_TEST_ID.EDITOR_NOTICE}
195
+ >
196
+ <span className="min-w-0 flex-1">
197
+ {editorState.nodeEditor.notice}
198
+ </span>
199
+ <CubeButton onClick={() => editorState.nodeEditor.dismissNotice()}>
200
+ Dismiss
201
+ </CubeButton>
202
+ </div>
203
+ )}
204
+ <CubeSourcePicker editorState={editorState} />
205
+ <CubeExamplesDialog editorState={editorState} />
206
+ <CubeSpecTransferDialog editorState={editorState} />
207
+ <CubeImportPureDialog editorState={editorState} />
208
+ <CubeShowPureDialog editorState={editorState} />
209
+ <CubeDevSettingsDialog editorState={editorState} />
210
+ </div>
211
+ );
212
+ },
213
+ );
204
214
 
205
215
  /**
206
216
  * The Legend Cube page: the query above, its results below, both always
@@ -216,19 +226,31 @@ export const CubeEditor = observer(
216
226
  initialDocument?: CubeDocument | undefined;
217
227
  /** A source a link asks the page to start with, on an empty cube (spec §17.15) */
218
228
  initialSource?: CubeEntrySource | undefined;
229
+ /**
230
+ * A lambda the host opens the page on, read into the cube (Import Pure,
231
+ * PLAN §11.18), e.g. Studio's materialized view to edit
232
+ */
233
+ initialLambda?: CubeInitialLambda | undefined;
234
+ /** The host's own buttons, at the end of the header, e.g. Studio's Add MatView */
235
+ headerActions?: CubeHeaderActions | undefined;
219
236
  }) => {
220
237
  const [editorState] = useState(
221
238
  () => new CubeEditorState(props.host, props.initialDocument),
222
239
  );
223
240
  useEffect(() => () => editorState.dispose(), [editorState]);
224
241
  const [entry] = useState(() => new CubeEntrySourceState(editorState));
225
- const { initialSource } = props;
242
+ const { initialSource, initialLambda } = props;
226
243
  useEffect(() => {
227
244
  if (initialSource) {
228
245
  flowResult(entry.open(initialSource)).catch(
229
246
  editorState.host.applicationStore.alertUnhandledError,
230
247
  );
231
248
  }
249
+ if (initialLambda) {
250
+ flowResult(editorState.lambdaImport.open(initialLambda)).catch(
251
+ editorState.host.applicationStore.alertUnhandledError,
252
+ );
253
+ }
232
254
  // only as the page opens
233
255
  // eslint-disable-next-line react-hooks/exhaustive-deps
234
256
  }, []);
@@ -246,8 +268,12 @@ export const CubeEditor = observer(
246
268
  >
247
269
  <CubePalette editorState={editorState} />
248
270
  <div className="flex h-full min-w-0 flex-1 flex-col">
249
- <CubeGraphHeader editorState={editorState} />
271
+ <CubeGraphHeader
272
+ editorState={editorState}
273
+ headerActions={props.headerActions}
274
+ />
250
275
  <CubeEntrySourceBanner entry={entry} />
276
+ <CubeLambdaImportBanner lambdaImport={editorState.lambdaImport} />
251
277
  <ResizablePanelGroup orientation="horizontal">
252
278
  <ResizablePanel
253
279
  {...graphPanel.collapsiblePanel}
@@ -0,0 +1,127 @@
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
+
17
+ import {
18
+ CaretDownIcon,
19
+ clsx,
20
+ DropdownMenu,
21
+ DropdownMenuItem,
22
+ useDropdownMenu,
23
+ } from '@finos/legend-art';
24
+ import { observer } from 'mobx-react-lite';
25
+ import { READ_ONLY_CUBE_TITLE } from '../__lib__/LegendCubeLabels.js';
26
+ import type { CubeEditorState } from '../stores/CubeEditorState.js';
27
+
28
+ interface CubeFileMenuItem {
29
+ readonly label: string;
30
+ readonly title: string;
31
+ readonly disabled: boolean;
32
+ readonly run: () => void;
33
+ }
34
+
35
+ /**
36
+ * 'Cube ▾' in the graph's header (the review of the demo, 2026-10-13): what
37
+ * acts on the cube as a whole, New, Import, Import Pure and Export, under one button, so
38
+ * the header keeps the actions used while building. A disabled item says why
39
+ * on hover.
40
+ */
41
+ export const CubeFileMenu = observer(
42
+ (props: { editorState: CubeEditorState }) => {
43
+ const { editorState } = props;
44
+ const { readOnly } = editorState;
45
+ const [openMenu, closeMenu, menuProps, isOpen] = useDropdownMenu();
46
+ const items: CubeFileMenuItem[] = [
47
+ {
48
+ label: 'New',
49
+ title: editorState.isEmptyCube
50
+ ? 'This cube is new already'
51
+ : 'Start a new, empty cube in place of this one (Undo brings it back)',
52
+ disabled: editorState.isEmptyCube,
53
+ run: () => editorState.startNewCube(),
54
+ },
55
+ {
56
+ label: 'Import',
57
+ title: 'Open a cube from its spec, in place of this one',
58
+ disabled: false,
59
+ run: () => editorState.specTransfer.openImport(),
60
+ },
61
+ {
62
+ label: 'Import Pure',
63
+ title: 'Read a Pure query into steps, in place of this cube',
64
+ disabled: false,
65
+ run: () => editorState.lambdaImport.openDialog(),
66
+ },
67
+ {
68
+ label: 'Export',
69
+ title: readOnly
70
+ ? READ_ONLY_CUBE_TITLE
71
+ : "Show the cube's spec, to copy or download",
72
+ disabled: readOnly,
73
+ run: () => {
74
+ if (editorState.nodeEditor.finishApplied()) {
75
+ editorState.specTransfer.openExport();
76
+ }
77
+ },
78
+ },
79
+ ];
80
+ return (
81
+ <>
82
+ <button
83
+ type="button"
84
+ className="flex h-6 shrink-0 items-center gap-1 rounded-sm border border-[var(--color-border-default)] bg-[var(--color-bg-elevated)] px-2 text-base text-[var(--color-text-primary)] enabled:cursor-pointer enabled:hover:bg-[var(--color-bg-hover)]"
85
+ title="New, Import, Import Pure and Export"
86
+ aria-haspopup="menu"
87
+ aria-expanded={isOpen}
88
+ onClick={openMenu}
89
+ >
90
+ Cube
91
+ <CaretDownIcon aria-hidden={true} />
92
+ </button>
93
+ <DropdownMenu
94
+ {...menuProps}
95
+ menuProps={{
96
+ elevation: 7,
97
+ slotProps: {
98
+ root: { slotProps: { backdrop: { invisible: true } } },
99
+ list: { disabledItemsFocusable: true },
100
+ },
101
+ }}
102
+ >
103
+ {items.map((item) => (
104
+ <DropdownMenuItem
105
+ key={item.label}
106
+ className={clsx(
107
+ 'px-2 text-base',
108
+ item.disabled && '!cursor-not-allowed opacity-50',
109
+ )}
110
+ // not MUI's disabled, which takes the pointer away: the reason shows on hover
111
+ aria-disabled={item.disabled}
112
+ title={item.title}
113
+ onClick={() => {
114
+ if (!item.disabled) {
115
+ closeMenu();
116
+ item.run();
117
+ }
118
+ }}
119
+ >
120
+ {item.label}
121
+ </DropdownMenuItem>
122
+ ))}
123
+ </DropdownMenu>
124
+ </>
125
+ );
126
+ },
127
+ );
@@ -0,0 +1,97 @@
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
+
17
+ import { observer } from 'mobx-react-lite';
18
+ import { LEGEND_CUBE_TEST_ID } from '../__lib__/LegendCubeTesting.js';
19
+ import {
20
+ CUBE_LAMBDA_IMPORT_MESSAGE,
21
+ CubeLambdaFidelity,
22
+ type CubeLambdaImportState,
23
+ } from '../stores/CubeLambdaImportState.js';
24
+ import { CubeButton } from './CubeButton.js';
25
+
26
+ /**
27
+ * The lambda the page opened on (PLAN §11.18), in the graph region: while it
28
+ * is read, why it couldn't be, or that Cube writes it another way
29
+ */
30
+ export const CubeLambdaImportBanner = observer(
31
+ (props: { lambdaImport: CubeLambdaImportState }) => {
32
+ const { lambdaImport } = props;
33
+ const { label = 'the query', error, fidelity, notes } = lambdaImport;
34
+ if (lambdaImport.isReading) {
35
+ return (
36
+ <div
37
+ className="shrink-0 border-b border-[var(--color-border-default)] px-2 py-1 text-base text-[var(--color-text-secondary)]"
38
+ role="status"
39
+ >
40
+ {CUBE_LAMBDA_IMPORT_MESSAGE.READING(label)}
41
+ </div>
42
+ );
43
+ }
44
+ if (error !== undefined) {
45
+ return (
46
+ <div
47
+ className="flex shrink-0 items-start gap-2 border-b border-[var(--color-border-default)] bg-[var(--color-status-error-bg)] px-2 py-1 text-base text-[var(--color-status-error)]"
48
+ role="alert"
49
+ data-testid={LEGEND_CUBE_TEST_ID.LAMBDA_IMPORT}
50
+ >
51
+ <span className="min-w-0 flex-1 break-words">
52
+ <span className="font-medium">
53
+ {CUBE_LAMBDA_IMPORT_MESSAGE.CANT_READ(label)}:
54
+ </span>{' '}
55
+ {error.message}
56
+ {error.detail !== undefined && (
57
+ <details>
58
+ <summary className="cursor-pointer">Details</summary>
59
+ <pre className="whitespace-pre-wrap text-sm">
60
+ {error.detail}
61
+ </pre>
62
+ </details>
63
+ )}
64
+ </span>
65
+ <CubeButton onClick={() => lambdaImport.dismiss()}>
66
+ Dismiss
67
+ </CubeButton>
68
+ </div>
69
+ );
70
+ }
71
+ const warnings = [
72
+ ...(fidelity === CubeLambdaFidelity.REWRITTEN
73
+ ? [CUBE_LAMBDA_IMPORT_MESSAGE.REWRITTEN(label)]
74
+ : fidelity === CubeLambdaFidelity.UNCHECKED
75
+ ? [CUBE_LAMBDA_IMPORT_MESSAGE.UNCHECKED(label)]
76
+ : []),
77
+ ...notes,
78
+ ];
79
+ if (!warnings.length) {
80
+ return null;
81
+ }
82
+ return (
83
+ <div
84
+ className="flex shrink-0 items-start gap-2 border-b border-[var(--color-border-default)] bg-[var(--color-status-warn-bg)] px-2 py-1 text-base text-[var(--color-text-primary)]"
85
+ role="status"
86
+ data-testid={LEGEND_CUBE_TEST_ID.LAMBDA_IMPORT}
87
+ >
88
+ <span className="min-w-0 flex-1 break-words">
89
+ {warnings.map((warning) => (
90
+ <div key={warning}>{warning}</div>
91
+ ))}
92
+ </span>
93
+ <CubeButton onClick={() => lambdaImport.dismiss()}>Dismiss</CubeButton>
94
+ </div>
95
+ );
96
+ },
97
+ );
@@ -20,16 +20,19 @@ import {
20
20
  AlignTopIcon,
21
21
  ArrowsJoinIcon,
22
22
  CalculatorIcon,
23
+ CodeIcon,
23
24
  CompareIcon,
24
25
  CompressIcon,
25
26
  DataCubeIcon,
26
27
  DatabaseImportIcon,
27
28
  clsx,
28
29
  FilterIcon,
30
+ FunctionIcon,
29
31
  LayerGroupIcon,
30
32
  PackageIcon,
31
33
  PencilIcon,
32
34
  QuestionSquareIcon,
35
+ RobotIcon,
33
36
  SigmaIcon,
34
37
  SortIcon,
35
38
  TableIcon,
@@ -40,9 +43,12 @@ const NODE_ICONS: Readonly<
40
43
  Record<string, React.FC<{ className?: string; title?: string }>>
41
44
  > = {
42
45
  table: TableIcon,
46
+ function: CodeIcon,
43
47
  dataProduct: PackageIcon,
44
48
  ingest: DatabaseImportIcon,
49
+ service: RobotIcon,
45
50
  filter: FilterIcon,
51
+ expressionFilter: FunctionIcon,
46
52
  join: ArrowsJoinIcon,
47
53
  concat: LayerGroupIcon,
48
54
  difference: CompareIcon,
@@ -53,6 +59,7 @@ const NODE_ICONS: Readonly<
53
59
  distinct: CompressIcon,
54
60
  restrict: DataCubeIcon.TableColumns,
55
61
  group: DataCubeIcon.TableGroupBy,
62
+ pivot: DataCubeIcon.TablePivot,
56
63
  partition: SigmaIcon,
57
64
  rename: PencilIcon,
58
65
  sort: SortIcon,
@@ -15,7 +15,10 @@
15
15
  */
16
16
 
17
17
  import type { Schema } from '@finos/legend-cube';
18
- import { getColumnTypeLabel } from '../__lib__/LegendCubeLabels.js';
18
+ import {
19
+ getColumnTypeLabel,
20
+ getExactColumnTypeLabel,
21
+ } from '../__lib__/LegendCubeLabels.js';
19
22
  import { CubeColumnTypeIcon } from './editors/CubeColumnPicker.js';
20
23
 
21
24
  /** A source's columns, with their precise types and whether they can be empty */
@@ -33,7 +36,9 @@ export const CubeSchemaColumnsTable: React.FC<{ schema: Schema }> = ({
33
36
  {schema.columns.map((column) => (
34
37
  <tr key={column.name}>
35
38
  <td className="break-all pr-2">{column.name}</td>
36
- <td title={column.type.fullName}>
39
+ <td
40
+ title={`${getExactColumnTypeLabel(column)} (${column.type.fullName})`}
41
+ >
37
42
  <span className="flex items-center gap-1">
38
43
  <CubeColumnTypeIcon
39
44
  type={column.type}