@finos/legend-cube-builder 0.0.3 → 0.0.4
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.
- package/README.md +52 -19
- package/docs/adding-an-operation.md +102 -13
- package/docs/hosting.md +82 -4
- package/docs/testing.md +114 -9
- package/lib/__lib__/LegendCubeCommand.d.ts +2 -1
- package/lib/__lib__/LegendCubeCommand.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeCommand.js +5 -0
- package/lib/__lib__/LegendCubeCommand.js.map +1 -1
- package/lib/__lib__/LegendCubeDataProductLabels.d.ts +45 -0
- package/lib/__lib__/LegendCubeDataProductLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeDataProductLabels.js +60 -0
- package/lib/__lib__/LegendCubeDataProductLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeDirectConnectionLabels.d.ts +56 -0
- package/lib/__lib__/LegendCubeDirectConnectionLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeDirectConnectionLabels.js +76 -0
- package/lib/__lib__/LegendCubeDirectConnectionLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeHelpText.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeHelpText.js +12 -2
- package/lib/__lib__/LegendCubeHelpText.js.map +1 -1
- package/lib/__lib__/LegendCubeIngestLabels.d.ts +25 -0
- package/lib/__lib__/LegendCubeIngestLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeIngestLabels.js +29 -0
- package/lib/__lib__/LegendCubeIngestLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeLabels.d.ts +76 -3
- package/lib/__lib__/LegendCubeLabels.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeLabels.js +102 -4
- package/lib/__lib__/LegendCubeLabels.js.map +1 -1
- package/lib/__lib__/LegendCubeProjectLabels.d.ts +22 -0
- package/lib/__lib__/LegendCubeProjectLabels.d.ts.map +1 -0
- package/lib/__lib__/LegendCubeProjectLabels.js +23 -0
- package/lib/__lib__/LegendCubeProjectLabels.js.map +1 -0
- package/lib/__lib__/LegendCubeTesting.d.ts +1 -0
- package/lib/__lib__/LegendCubeTesting.d.ts.map +1 -1
- package/lib/__lib__/LegendCubeTesting.js +1 -0
- package/lib/__lib__/LegendCubeTesting.js.map +1 -1
- package/lib/__test-utils__/CubeCanvasTestUtils.d.ts.map +1 -1
- package/lib/__test-utils__/CubeCanvasTestUtils.js +1 -1
- package/lib/__test-utils__/CubeCanvasTestUtils.js.map +1 -1
- package/lib/__test-utils__/CubeConnectionTestSupport.d.ts +22 -0
- package/lib/__test-utils__/CubeConnectionTestSupport.d.ts.map +1 -0
- package/lib/__test-utils__/CubeConnectionTestSupport.js +30 -0
- package/lib/__test-utils__/CubeConnectionTestSupport.js.map +1 -0
- package/lib/__test-utils__/CubeDirectConnectionFixtures.d.ts +31 -0
- package/lib/__test-utils__/CubeDirectConnectionFixtures.d.ts.map +1 -0
- package/lib/__test-utils__/CubeDirectConnectionFixtures.js +63 -0
- package/lib/__test-utils__/CubeDirectConnectionFixtures.js.map +1 -0
- package/lib/__test-utils__/CubeEngineTestSupport.d.ts +12 -0
- package/lib/__test-utils__/CubeEngineTestSupport.d.ts.map +1 -1
- package/lib/__test-utils__/CubeEngineTestSupport.js +21 -0
- package/lib/__test-utils__/CubeEngineTestSupport.js.map +1 -1
- package/lib/__test-utils__/CubeExpressionTestUtils.d.ts +37 -0
- package/lib/__test-utils__/CubeExpressionTestUtils.d.ts.map +1 -0
- package/lib/__test-utils__/CubeExpressionTestUtils.js +83 -0
- package/lib/__test-utils__/CubeExpressionTestUtils.js.map +1 -0
- package/lib/__test-utils__/CubeOperationsTestUtils.d.ts +25 -0
- package/lib/__test-utils__/CubeOperationsTestUtils.d.ts.map +1 -1
- package/lib/__test-utils__/CubeOperationsTestUtils.js +56 -10
- package/lib/__test-utils__/CubeOperationsTestUtils.js.map +1 -1
- package/lib/__test-utils__/CubePageTestUtils.d.ts +12 -0
- package/lib/__test-utils__/CubePageTestUtils.d.ts.map +1 -1
- package/lib/__test-utils__/CubePageTestUtils.js +25 -1
- package/lib/__test-utils__/CubePageTestUtils.js.map +1 -1
- package/lib/__test-utils__/CubeTestApplication.d.ts +5 -1
- package/lib/__test-utils__/CubeTestApplication.d.ts.map +1 -1
- package/lib/__test-utils__/CubeTestApplication.js +9 -1
- package/lib/__test-utils__/CubeTestApplication.js.map +1 -1
- package/lib/__test-utils__/FakeCubeConnectionExplorer.d.ts +33 -0
- package/lib/__test-utils__/FakeCubeConnectionExplorer.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeConnectionExplorer.js +67 -0
- package/lib/__test-utils__/FakeCubeConnectionExplorer.js.map +1 -0
- package/lib/__test-utils__/FakeCubeDataProductCatalog.d.ts +45 -0
- package/lib/__test-utils__/FakeCubeDataProductCatalog.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeDataProductCatalog.js +137 -0
- package/lib/__test-utils__/FakeCubeDataProductCatalog.js.map +1 -0
- package/lib/__test-utils__/FakeCubeEngine.d.ts +2 -0
- package/lib/__test-utils__/FakeCubeEngine.d.ts.map +1 -1
- package/lib/__test-utils__/FakeCubeEngine.js +14 -1
- package/lib/__test-utils__/FakeCubeEngine.js.map +1 -1
- package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts +35 -0
- package/lib/__test-utils__/FakeCubeIngestCatalog.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeIngestCatalog.js +107 -0
- package/lib/__test-utils__/FakeCubeIngestCatalog.js.map +1 -0
- package/lib/__test-utils__/FakeCubeProjectCatalog.d.ts +30 -0
- package/lib/__test-utils__/FakeCubeProjectCatalog.d.ts.map +1 -0
- package/lib/__test-utils__/FakeCubeProjectCatalog.js +64 -0
- package/lib/__test-utils__/FakeCubeProjectCatalog.js.map +1 -0
- package/lib/components/CubeAddItems.d.ts +35 -0
- package/lib/components/CubeAddItems.d.ts.map +1 -0
- package/lib/components/CubeAddItems.js +82 -0
- package/lib/components/CubeAddItems.js.map +1 -0
- package/lib/components/CubeEditor.d.ts +5 -1
- package/lib/components/CubeEditor.d.ts.map +1 -1
- package/lib/components/CubeEditor.js +33 -13
- package/lib/components/CubeEditor.js.map +1 -1
- package/lib/components/CubeEntrySourceBanner.d.ts +23 -0
- package/lib/components/CubeEntrySourceBanner.d.ts.map +1 -0
- package/lib/components/CubeEntrySourceBanner.js +32 -0
- package/lib/components/CubeEntrySourceBanner.js.map +1 -0
- package/lib/components/CubeNodeIcon.d.ts.map +1 -1
- package/lib/components/CubeNodeIcon.js +8 -1
- package/lib/components/CubeNodeIcon.js.map +1 -1
- package/lib/components/CubeSchemaColumnsTable.d.ts +21 -0
- package/lib/components/CubeSchemaColumnsTable.d.ts.map +1 -0
- package/lib/components/CubeSchemaColumnsTable.js +6 -0
- package/lib/components/CubeSchemaColumnsTable.js.map +1 -0
- package/lib/components/canvas/CubeCanvas.d.ts +4 -3
- package/lib/components/canvas/CubeCanvas.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvas.js +31 -12
- package/lib/components/canvas/CubeCanvas.js.map +1 -1
- package/lib/components/canvas/CubeCanvasContextMenu.d.ts +8 -4
- package/lib/components/canvas/CubeCanvasContextMenu.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasContextMenu.js +19 -9
- package/lib/components/canvas/CubeCanvasContextMenu.js.map +1 -1
- package/lib/components/canvas/CubeCanvasDnd.d.ts +7 -5
- package/lib/components/canvas/CubeCanvasDnd.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasDnd.js +14 -9
- package/lib/components/canvas/CubeCanvasDnd.js.map +1 -1
- package/lib/components/canvas/CubeCanvasElements.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasElements.js +6 -3
- package/lib/components/canvas/CubeCanvasElements.js.map +1 -1
- package/lib/components/canvas/CubeCanvasNode.d.ts.map +1 -1
- package/lib/components/canvas/CubeCanvasNode.js +30 -20
- package/lib/components/canvas/CubeCanvasNode.js.map +1 -1
- package/lib/components/canvas/CubeCanvasNodeFocus.d.ts +22 -0
- package/lib/components/canvas/CubeCanvasNodeFocus.d.ts.map +1 -0
- package/lib/components/canvas/CubeCanvasNodeFocus.js +31 -0
- package/lib/components/canvas/CubeCanvasNodeFocus.js.map +1 -0
- package/lib/components/canvas/CubeNodeEditorAnchor.d.ts +44 -0
- package/lib/components/canvas/CubeNodeEditorAnchor.d.ts.map +1 -0
- package/lib/components/canvas/CubeNodeEditorAnchor.js +51 -0
- package/lib/components/canvas/CubeNodeEditorAnchor.js.map +1 -0
- package/lib/components/editors/CubeAggregationRowEditor.d.ts +48 -0
- package/lib/components/editors/CubeAggregationRowEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeAggregationRowEditor.js +72 -0
- package/lib/components/editors/CubeAggregationRowEditor.js.map +1 -0
- package/lib/components/editors/CubeColumnChecklist.d.ts +42 -0
- package/lib/components/editors/CubeColumnChecklist.d.ts.map +1 -0
- package/lib/components/editors/CubeColumnChecklist.js +41 -0
- package/lib/components/editors/CubeColumnChecklist.js.map +1 -0
- package/lib/components/editors/CubeConcatEditor.d.ts +33 -0
- package/lib/components/editors/CubeConcatEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeConcatEditor.js +147 -0
- package/lib/components/editors/CubeConcatEditor.js.map +1 -0
- package/lib/components/editors/CubeDataProductSourceEditor.d.ts +25 -0
- package/lib/components/editors/CubeDataProductSourceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeDataProductSourceEditor.js +53 -0
- package/lib/components/editors/CubeDataProductSourceEditor.js.map +1 -0
- package/lib/components/editors/CubeDifferenceEditor.d.ts +25 -0
- package/lib/components/editors/CubeDifferenceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeDifferenceEditor.js +29 -0
- package/lib/components/editors/CubeDifferenceEditor.js.map +1 -0
- package/lib/components/editors/CubeExtendEditor.d.ts +25 -0
- package/lib/components/editors/CubeExtendEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeExtendEditor.js +86 -0
- package/lib/components/editors/CubeExtendEditor.js.map +1 -0
- package/lib/components/editors/CubeFilterEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeFilterEditor.js +3 -3
- package/lib/components/editors/CubeFilterEditor.js.map +1 -1
- package/lib/components/editors/CubeGroupEditor.d.ts +28 -0
- package/lib/components/editors/CubeGroupEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeGroupEditor.js +70 -0
- package/lib/components/editors/CubeGroupEditor.js.map +1 -0
- package/lib/components/editors/CubeIngestSourceEditor.d.ts +26 -0
- package/lib/components/editors/CubeIngestSourceEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeIngestSourceEditor.js +47 -0
- package/lib/components/editors/CubeIngestSourceEditor.js.map +1 -0
- package/lib/components/editors/CubeJoinEditor.d.ts +2 -4
- package/lib/components/editors/CubeJoinEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeJoinEditor.js +7 -37
- package/lib/components/editors/CubeJoinEditor.js.map +1 -1
- package/lib/components/editors/CubeJoinKeyRows.d.ts +34 -0
- package/lib/components/editors/CubeJoinKeyRows.d.ts.map +1 -0
- package/lib/components/editors/CubeJoinKeyRows.js +65 -0
- package/lib/components/editors/CubeJoinKeyRows.js.map +1 -0
- package/lib/components/editors/CubeNodeEditorPanel.d.ts +7 -5
- package/lib/components/editors/CubeNodeEditorPanel.d.ts.map +1 -1
- package/lib/components/editors/CubeNodeEditorPanel.js +51 -13
- package/lib/components/editors/CubeNodeEditorPanel.js.map +1 -1
- package/lib/components/editors/CubeNodeEditorPopper.d.ts +40 -0
- package/lib/components/editors/CubeNodeEditorPopper.d.ts.map +1 -0
- package/lib/components/editors/CubeNodeEditorPopper.js +125 -0
- package/lib/components/editors/CubeNodeEditorPopper.js.map +1 -0
- package/lib/components/editors/CubeNodeEditorRegistry.d.ts.map +1 -1
- package/lib/components/editors/CubeNodeEditorRegistry.js +15 -1
- package/lib/components/editors/CubeNodeEditorRegistry.js.map +1 -1
- package/lib/components/editors/CubePartitionEditor.d.ts +30 -0
- package/lib/components/editors/CubePartitionEditor.d.ts.map +1 -0
- package/lib/components/editors/CubePartitionEditor.js +93 -0
- package/lib/components/editors/CubePartitionEditor.js.map +1 -0
- package/lib/components/editors/CubeRenameEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeRenameEditor.js +6 -4
- package/lib/components/editors/CubeRenameEditor.js.map +1 -1
- package/lib/components/editors/CubeRestrictEditor.js +1 -1
- package/lib/components/editors/CubeRestrictEditor.js.map +1 -1
- package/lib/components/editors/CubeSortEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeSortEditor.js +10 -37
- package/lib/components/editors/CubeSortEditor.js.map +1 -1
- package/lib/components/editors/CubeSortRowEditor.d.ts +47 -0
- package/lib/components/editors/CubeSortRowEditor.d.ts.map +1 -0
- package/lib/components/editors/CubeSortRowEditor.js +62 -0
- package/lib/components/editors/CubeSortRowEditor.js.map +1 -0
- package/lib/components/editors/CubeSourceEditor.d.ts.map +1 -1
- package/lib/components/editors/CubeSourceEditor.js +18 -5
- package/lib/components/editors/CubeSourceEditor.js.map +1 -1
- package/lib/components/editors/CubeWarehouseControl.d.ts +30 -0
- package/lib/components/editors/CubeWarehouseControl.d.ts.map +1 -0
- package/lib/components/editors/CubeWarehouseControl.js +44 -0
- package/lib/components/editors/CubeWarehouseControl.js.map +1 -0
- package/lib/components/editors/useCubeNodeEditorDismiss.d.ts +31 -0
- package/lib/components/editors/useCubeNodeEditorDismiss.d.ts.map +1 -0
- package/lib/components/editors/useCubeNodeEditorDismiss.js +83 -0
- package/lib/components/editors/useCubeNodeEditorDismiss.js.map +1 -0
- package/lib/components/examples/CubeExamplesDialog.d.ts +26 -0
- package/lib/components/examples/CubeExamplesDialog.d.ts.map +1 -0
- package/lib/components/examples/CubeExamplesDialog.js +68 -0
- package/lib/components/examples/CubeExamplesDialog.js.map +1 -0
- package/lib/components/grid/CubeGridRegion.d.ts.map +1 -1
- package/lib/components/grid/CubeGridRegion.js +19 -8
- package/lib/components/grid/CubeGridRegion.js.map +1 -1
- package/lib/components/grid/CubeGridValues.d.ts +16 -0
- package/lib/components/grid/CubeGridValues.d.ts.map +1 -1
- package/lib/components/grid/CubeGridValues.js +44 -0
- package/lib/components/grid/CubeGridValues.js.map +1 -1
- package/lib/components/grid/CubeResultGrid.d.ts.map +1 -1
- package/lib/components/grid/CubeResultGrid.js +14 -2
- package/lib/components/grid/CubeResultGrid.js.map +1 -1
- package/lib/components/palette/CubePalette.d.ts.map +1 -1
- package/lib/components/palette/CubePalette.js +23 -12
- package/lib/components/palette/CubePalette.js.map +1 -1
- package/lib/components/source-picker/CubeDataProductTab.d.ts +27 -0
- package/lib/components/source-picker/CubeDataProductTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeDataProductTab.js +102 -0
- package/lib/components/source-picker/CubeDataProductTab.js.map +1 -0
- package/lib/components/source-picker/CubeDirectConnectionTab.d.ts +27 -0
- package/lib/components/source-picker/CubeDirectConnectionTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeDirectConnectionTab.js +87 -0
- package/lib/components/source-picker/CubeDirectConnectionTab.js.map +1 -0
- package/lib/components/source-picker/CubeIngestTab.d.ts +28 -0
- package/lib/components/source-picker/CubeIngestTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeIngestTab.js +66 -0
- package/lib/components/source-picker/CubeIngestTab.js.map +1 -0
- package/lib/components/source-picker/CubeInlineModelTab.d.ts +37 -0
- package/lib/components/source-picker/CubeInlineModelTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeInlineModelTab.js +71 -0
- package/lib/components/source-picker/CubeInlineModelTab.js.map +1 -0
- package/lib/components/source-picker/CubePickerStep.d.ts +27 -0
- package/lib/components/source-picker/CubePickerStep.d.ts.map +1 -0
- package/lib/components/source-picker/CubePickerStep.js +23 -0
- package/lib/components/source-picker/CubePickerStep.js.map +1 -0
- package/lib/components/source-picker/CubeProjectTab.d.ts +27 -0
- package/lib/components/source-picker/CubeProjectTab.d.ts.map +1 -0
- package/lib/components/source-picker/CubeProjectTab.js +50 -0
- package/lib/components/source-picker/CubeProjectTab.js.map +1 -0
- package/lib/components/source-picker/CubeSourcePicker.d.ts +6 -0
- package/lib/components/source-picker/CubeSourcePicker.d.ts.map +1 -1
- package/lib/components/source-picker/CubeSourcePicker.js +20 -58
- package/lib/components/source-picker/CubeSourcePicker.js.map +1 -1
- package/lib/components/spec-transfer/CubeSpecTransferDialog.js +1 -1
- package/lib/components/spec-transfer/CubeSpecTransferDialog.js.map +1 -1
- package/lib/graph-manager/CubeConnectionExplorer.d.ts +90 -0
- package/lib/graph-manager/CubeConnectionExplorer.d.ts.map +1 -0
- package/lib/graph-manager/CubeConnectionExplorer.js +34 -0
- package/lib/graph-manager/CubeConnectionExplorer.js.map +1 -0
- package/lib/graph-manager/CubeDataProduct.d.ts +66 -0
- package/lib/graph-manager/CubeDataProduct.d.ts.map +1 -0
- package/lib/graph-manager/CubeDataProduct.js +102 -0
- package/lib/graph-manager/CubeDataProduct.js.map +1 -0
- package/lib/graph-manager/CubeDataProductCatalog.d.ts +167 -0
- package/lib/graph-manager/CubeDataProductCatalog.d.ts.map +1 -0
- package/lib/graph-manager/CubeDataProductCatalog.js +116 -0
- package/lib/graph-manager/CubeDataProductCatalog.js.map +1 -0
- package/lib/graph-manager/CubeDirectConnection.d.ts +38 -0
- package/lib/graph-manager/CubeDirectConnection.d.ts.map +1 -0
- package/lib/graph-manager/CubeDirectConnection.js +48 -0
- package/lib/graph-manager/CubeDirectConnection.js.map +1 -0
- package/lib/graph-manager/CubeEngine.d.ts +37 -2
- package/lib/graph-manager/CubeEngine.d.ts.map +1 -1
- package/lib/graph-manager/CubeEngine.js +4 -1
- package/lib/graph-manager/CubeEngine.js.map +1 -1
- package/lib/graph-manager/CubeIngest.d.ts +50 -0
- package/lib/graph-manager/CubeIngest.d.ts.map +1 -0
- package/lib/graph-manager/CubeIngest.js +88 -0
- package/lib/graph-manager/CubeIngest.js.map +1 -0
- package/lib/graph-manager/CubeIngestCatalog.d.ts +116 -0
- package/lib/graph-manager/CubeIngestCatalog.d.ts.map +1 -0
- package/lib/graph-manager/CubeIngestCatalog.js +80 -0
- package/lib/graph-manager/CubeIngestCatalog.js.map +1 -0
- package/lib/graph-manager/CubeLakehouseEnvironment.d.ts +26 -0
- package/lib/graph-manager/CubeLakehouseEnvironment.d.ts.map +1 -0
- package/lib/graph-manager/CubeLakehouseEnvironment.js +17 -0
- package/lib/graph-manager/CubeLakehouseEnvironment.js.map +1 -0
- package/lib/graph-manager/CubeProject.d.ts +41 -0
- package/lib/graph-manager/CubeProject.d.ts.map +1 -0
- package/lib/graph-manager/CubeProject.js +84 -0
- package/lib/graph-manager/CubeProject.js.map +1 -0
- package/lib/graph-manager/CubeProjectCatalog.d.ts +35 -0
- package/lib/graph-manager/CubeProjectCatalog.d.ts.map +1 -0
- package/lib/graph-manager/CubeProjectCatalog.js +17 -0
- package/lib/graph-manager/CubeProjectCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts +63 -1
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js +50 -1
- package/lib/graph-manager/protocol/pure/CubeEngineBuilder.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.d.ts +44 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.js +192 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts +29 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js +84 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.d.ts +41 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.js +246 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.d.ts +43 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.js +112 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeDirectModel.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js +30 -4
- package/lib/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.d.ts +23 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.js +68 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeExpression.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts +30 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js +140 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts +62 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js +119 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeIngestModel.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.d.ts +33 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.js +94 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js +63 -4
- package/lib/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.d.ts +67 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.js +238 -0
- package/lib/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts +34 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js +64 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.d.ts +104 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.js +484 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts +97 -3
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js +585 -20
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.js.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.d.ts +69 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.js +270 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts +35 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js +91 -0
- package/lib/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.d.ts +25 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.js +47 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.d.ts +28 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.js +310 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.d.ts +33 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.d.ts.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.js +188 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.js.map +1 -0
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts +1 -1
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.d.ts.map +1 -1
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js +27 -1
- package/lib/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.js.map +1 -1
- package/lib/index.css +2 -2
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +11 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +10 -1
- package/lib/index.js.map +1 -1
- package/lib/stores/CubeAddPlacement.d.ts +32 -0
- package/lib/stores/CubeAddPlacement.d.ts.map +1 -0
- package/lib/stores/CubeAddPlacement.js +40 -0
- package/lib/stores/CubeAddPlacement.js.map +1 -0
- package/lib/stores/CubeDataProductRecheck.d.ts +27 -0
- package/lib/stores/CubeDataProductRecheck.d.ts.map +1 -0
- package/lib/stores/CubeDataProductRecheck.js +54 -0
- package/lib/stores/CubeDataProductRecheck.js.map +1 -0
- package/lib/stores/CubeDataProductRuntimeState.d.ts +88 -0
- package/lib/stores/CubeDataProductRuntimeState.d.ts.map +1 -0
- package/lib/stores/CubeDataProductRuntimeState.js +190 -0
- package/lib/stores/CubeDataProductRuntimeState.js.map +1 -0
- package/lib/stores/CubeDataProductWarehouse.d.ts +19 -0
- package/lib/stores/CubeDataProductWarehouse.d.ts.map +1 -0
- package/lib/stores/CubeDataProductWarehouse.js +25 -0
- package/lib/stores/CubeDataProductWarehouse.js.map +1 -0
- package/lib/stores/CubeEditorState.d.ts +100 -16
- package/lib/stores/CubeEditorState.d.ts.map +1 -1
- package/lib/stores/CubeEditorState.js +347 -47
- package/lib/stores/CubeEditorState.js.map +1 -1
- package/lib/stores/CubeEntrySource.d.ts +78 -0
- package/lib/stores/CubeEntrySource.d.ts.map +1 -0
- package/lib/stores/CubeEntrySource.js +200 -0
- package/lib/stores/CubeEntrySource.js.map +1 -0
- package/lib/stores/CubeExamples.d.ts +43 -0
- package/lib/stores/CubeExamples.d.ts.map +1 -0
- package/lib/stores/CubeExamples.js +296 -0
- package/lib/stores/CubeExamples.js.map +1 -0
- package/lib/stores/CubeExamplesState.d.ts +45 -0
- package/lib/stores/CubeExamplesState.d.ts.map +1 -0
- package/lib/stores/CubeExamplesState.js +81 -0
- package/lib/stores/CubeExamplesState.js.map +1 -0
- package/lib/stores/CubeExecutionState.d.ts +6 -2
- package/lib/stores/CubeExecutionState.d.ts.map +1 -1
- package/lib/stores/CubeExecutionState.js +15 -5
- package/lib/stores/CubeExecutionState.js.map +1 -1
- package/lib/stores/CubeExtendTyping.d.ts +72 -0
- package/lib/stores/CubeExtendTyping.d.ts.map +1 -0
- package/lib/stores/CubeExtendTyping.js +176 -0
- package/lib/stores/CubeExtendTyping.js.map +1 -0
- package/lib/stores/CubeGridQuickActions.d.ts +14 -6
- package/lib/stores/CubeGridQuickActions.d.ts.map +1 -1
- package/lib/stores/CubeGridQuickActions.js +53 -15
- package/lib/stores/CubeGridQuickActions.js.map +1 -1
- package/lib/stores/CubeHost.d.ts +32 -1
- package/lib/stores/CubeHost.d.ts.map +1 -1
- package/lib/stores/CubeHost.js +21 -1
- package/lib/stores/CubeHost.js.map +1 -1
- package/lib/stores/CubeIngestRecheck.d.ts +26 -0
- package/lib/stores/CubeIngestRecheck.d.ts.map +1 -0
- package/lib/stores/CubeIngestRecheck.js +53 -0
- package/lib/stores/CubeIngestRecheck.js.map +1 -0
- package/lib/stores/CubeNodeEditorState.d.ts +101 -5
- package/lib/stores/CubeNodeEditorState.d.ts.map +1 -1
- package/lib/stores/CubeNodeEditorState.js +221 -10
- package/lib/stores/CubeNodeEditorState.js.map +1 -1
- package/lib/stores/CubeShowPureState.d.ts +5 -2
- package/lib/stores/CubeShowPureState.d.ts.map +1 -1
- package/lib/stores/CubeShowPureState.js +7 -4
- package/lib/stores/CubeShowPureState.js.map +1 -1
- package/lib/stores/CubeSourcePickerState.d.ts +54 -65
- package/lib/stores/CubeSourcePickerState.d.ts.map +1 -1
- package/lib/stores/CubeSourcePickerState.js +155 -276
- package/lib/stores/CubeSourcePickerState.js.map +1 -1
- package/lib/stores/CubeSpecTransferState.d.ts +2 -2
- package/lib/stores/CubeSpecTransferState.js +2 -2
- package/lib/stores/LocalModelCatalog.d.ts +2 -0
- package/lib/stores/LocalModelCatalog.d.ts.map +1 -1
- package/lib/stores/LocalModelCatalog.js +17 -3
- package/lib/stores/LocalModelCatalog.js.map +1 -1
- package/lib/stores/editors/CubeAggregationRows.d.ts +80 -0
- package/lib/stores/editors/CubeAggregationRows.d.ts.map +1 -0
- package/lib/stores/editors/CubeAggregationRows.js +164 -0
- package/lib/stores/editors/CubeAggregationRows.js.map +1 -0
- package/lib/stores/editors/CubeConcatDraft.d.ts +30 -0
- package/lib/stores/editors/CubeConcatDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeConcatDraft.js +44 -0
- package/lib/stores/editors/CubeConcatDraft.js.map +1 -0
- package/lib/stores/editors/CubeDifferenceDraft.d.ts +49 -0
- package/lib/stores/editors/CubeDifferenceDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeDifferenceDraft.js +111 -0
- package/lib/stores/editors/CubeDifferenceDraft.js.map +1 -0
- package/lib/stores/editors/CubeExtendDraft.d.ts +110 -0
- package/lib/stores/editors/CubeExtendDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeExtendDraft.js +359 -0
- package/lib/stores/editors/CubeExtendDraft.js.map +1 -0
- package/lib/stores/editors/CubeGroupDraft.d.ts +61 -0
- package/lib/stores/editors/CubeGroupDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubeGroupDraft.js +106 -0
- package/lib/stores/editors/CubeGroupDraft.js.map +1 -0
- package/lib/stores/editors/CubeJoinDraft.d.ts +9 -10
- package/lib/stores/editors/CubeJoinDraft.d.ts.map +1 -1
- package/lib/stores/editors/CubeJoinDraft.js +92 -21
- package/lib/stores/editors/CubeJoinDraft.js.map +1 -1
- package/lib/stores/editors/CubeJoinKeyPairs.d.ts +38 -0
- package/lib/stores/editors/CubeJoinKeyPairs.d.ts.map +1 -0
- package/lib/stores/editors/CubeJoinKeyPairs.js +33 -0
- package/lib/stores/editors/CubeJoinKeyPairs.js.map +1 -0
- package/lib/stores/editors/CubeNodeDraft.d.ts +20 -6
- package/lib/stores/editors/CubeNodeDraft.d.ts.map +1 -1
- package/lib/stores/editors/CubeNodeDraft.js +23 -5
- package/lib/stores/editors/CubeNodeDraft.js.map +1 -1
- package/lib/stores/editors/CubeNodeDraftRegistry.d.ts.map +1 -1
- package/lib/stores/editors/CubeNodeDraftRegistry.js +20 -1
- package/lib/stores/editors/CubeNodeDraftRegistry.js.map +1 -1
- package/lib/stores/editors/CubePartitionDraft.d.ts +70 -0
- package/lib/stores/editors/CubePartitionDraft.d.ts.map +1 -0
- package/lib/stores/editors/CubePartitionDraft.js +154 -0
- package/lib/stores/editors/CubePartitionDraft.js.map +1 -0
- package/lib/stores/editors/CubeSortDraft.d.ts +2 -10
- package/lib/stores/editors/CubeSortDraft.d.ts.map +1 -1
- package/lib/stores/editors/CubeSortDraft.js +9 -35
- package/lib/stores/editors/CubeSortDraft.js.map +1 -1
- package/lib/stores/editors/CubeSortRows.d.ts +34 -0
- package/lib/stores/editors/CubeSortRows.d.ts.map +1 -0
- package/lib/stores/editors/CubeSortRows.js +50 -0
- package/lib/stores/editors/CubeSortRows.js.map +1 -0
- package/lib/stores/fixtures/CubeNorthwindModel.d.ts +7 -0
- package/lib/stores/fixtures/CubeNorthwindModel.d.ts.map +1 -1
- package/lib/stores/fixtures/CubeNorthwindModel.js +99 -87
- package/lib/stores/fixtures/CubeNorthwindModel.js.map +1 -1
- package/lib/stores/fixtures/CubeSampleSql.d.ts +34 -0
- package/lib/stores/fixtures/CubeSampleSql.d.ts.map +1 -0
- package/lib/stores/fixtures/CubeSampleSql.js +64 -0
- package/lib/stores/fixtures/CubeSampleSql.js.map +1 -0
- package/lib/stores/fixtures/CubeSportsModel.d.ts +27 -0
- package/lib/stores/fixtures/CubeSportsModel.d.ts.map +1 -0
- package/lib/stores/fixtures/CubeSportsModel.js +158 -0
- package/lib/stores/fixtures/CubeSportsModel.js.map +1 -0
- package/lib/stores/fixtures/CubeTradesModel.d.ts +29 -0
- package/lib/stores/fixtures/CubeTradesModel.d.ts.map +1 -0
- package/lib/stores/fixtures/CubeTradesModel.js +197 -0
- package/lib/stores/fixtures/CubeTradesModel.js.map +1 -0
- package/lib/stores/source-picker/CubeCsvSetupSql.d.ts +71 -0
- package/lib/stores/source-picker/CubeCsvSetupSql.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeCsvSetupSql.js +392 -0
- package/lib/stores/source-picker/CubeCsvSetupSql.js.map +1 -0
- package/lib/stores/source-picker/CubeDataProductTabState.d.ts +186 -0
- package/lib/stores/source-picker/CubeDataProductTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeDataProductTabState.js +681 -0
- package/lib/stores/source-picker/CubeDataProductTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts +140 -0
- package/lib/stores/source-picker/CubeDirectConnectionTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeDirectConnectionTabState.js +516 -0
- package/lib/stores/source-picker/CubeDirectConnectionTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeIngestTabState.d.ts +114 -0
- package/lib/stores/source-picker/CubeIngestTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeIngestTabState.js +455 -0
- package/lib/stores/source-picker/CubeIngestTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeInlineModelTabState.d.ts +107 -0
- package/lib/stores/source-picker/CubeInlineModelTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeInlineModelTabState.js +347 -0
- package/lib/stores/source-picker/CubeInlineModelTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeProjectTabState.d.ts +62 -0
- package/lib/stores/source-picker/CubeProjectTabState.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeProjectTabState.js +181 -0
- package/lib/stores/source-picker/CubeProjectTabState.js.map +1 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.d.ts +48 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.d.ts.map +1 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.js +24 -0
- package/lib/stores/source-picker/CubeSourcePickerTab.js.map +1 -0
- package/package.json +10 -6
- package/src/__lib__/LegendCubeCommand.ts +5 -0
- package/src/__lib__/LegendCubeDataProductLabels.ts +91 -0
- package/src/__lib__/LegendCubeDirectConnectionLabels.ts +111 -0
- package/src/__lib__/LegendCubeHelpText.ts +25 -1
- package/src/__lib__/LegendCubeIngestLabels.ts +40 -0
- package/src/__lib__/LegendCubeLabels.ts +162 -4
- package/src/__lib__/LegendCubeProjectLabels.ts +25 -0
- package/src/__lib__/LegendCubeTesting.ts +1 -0
- package/src/__test-utils__/CubeCanvasTestUtils.ts +1 -1
- package/src/__test-utils__/CubeConnectionTestSupport.ts +45 -0
- package/src/__test-utils__/CubeDirectConnectionFixtures.ts +70 -0
- package/src/__test-utils__/CubeEngineTestSupport.ts +38 -0
- package/src/__test-utils__/CubeExpressionTestUtils.ts +119 -0
- package/src/__test-utils__/CubeOperationsTestUtils.ts +93 -18
- package/src/__test-utils__/CubePageTestUtils.tsx +35 -0
- package/src/__test-utils__/CubeTestApplication.ts +21 -2
- package/src/__test-utils__/FakeCubeConnectionExplorer.ts +111 -0
- package/src/__test-utils__/FakeCubeDataProductCatalog.ts +227 -0
- package/src/__test-utils__/FakeCubeEngine.ts +25 -1
- package/src/__test-utils__/FakeCubeIngestCatalog.ts +180 -0
- package/src/__test-utils__/FakeCubeProjectCatalog.ts +89 -0
- package/src/components/CubeAddItems.tsx +179 -0
- package/src/components/CubeEditor.tsx +73 -44
- package/src/components/CubeEntrySourceBanner.tsx +64 -0
- package/src/components/CubeNodeIcon.tsx +13 -0
- package/src/components/CubeSchemaColumnsTable.tsx +49 -0
- package/src/components/canvas/CubeCanvas.tsx +49 -14
- package/src/components/canvas/CubeCanvasContextMenu.tsx +31 -30
- package/src/components/canvas/CubeCanvasDnd.ts +16 -9
- package/src/components/canvas/CubeCanvasElements.ts +8 -2
- package/src/components/canvas/CubeCanvasNode.tsx +61 -43
- package/src/components/canvas/CubeCanvasNodeFocus.ts +37 -0
- package/src/components/canvas/CubeNodeEditorAnchor.ts +82 -0
- package/src/components/editors/CubeAggregationRowEditor.tsx +224 -0
- package/src/components/editors/CubeColumnChecklist.tsx +130 -0
- package/src/components/editors/CubeConcatEditor.tsx +374 -0
- package/src/components/editors/CubeDataProductSourceEditor.tsx +134 -0
- package/src/components/editors/CubeDifferenceEditor.tsx +87 -0
- package/src/components/editors/CubeExtendEditor.tsx +271 -0
- package/src/components/editors/CubeFilterEditor.tsx +7 -0
- package/src/components/editors/CubeGroupEditor.tsx +135 -0
- package/src/components/editors/CubeIngestSourceEditor.tsx +104 -0
- package/src/components/editors/CubeJoinEditor.tsx +12 -132
- package/src/components/editors/CubeJoinKeyRows.tsx +183 -0
- package/src/components/editors/CubeNodeEditorPanel.tsx +91 -28
- package/src/components/editors/CubeNodeEditorPopper.tsx +183 -0
- package/src/components/editors/CubeNodeEditorRegistry.ts +21 -0
- package/src/components/editors/CubePartitionEditor.tsx +208 -0
- package/src/components/editors/CubeRenameEditor.tsx +10 -5
- package/src/components/editors/CubeRestrictEditor.tsx +1 -1
- package/src/components/editors/CubeSortEditor.tsx +20 -142
- package/src/components/editors/CubeSortRowEditor.tsx +176 -0
- package/src/components/editors/CubeSourceEditor.tsx +42 -30
- package/src/components/editors/CubeWarehouseControl.tsx +113 -0
- package/src/components/editors/useCubeNodeEditorDismiss.ts +103 -0
- package/src/components/examples/CubeExamplesDialog.tsx +199 -0
- package/src/components/grid/CubeGridRegion.tsx +48 -10
- package/src/components/grid/CubeGridValues.ts +55 -0
- package/src/components/grid/CubeResultGrid.tsx +24 -8
- package/src/components/palette/CubePalette.tsx +33 -15
- package/src/components/source-picker/CubeDataProductTab.tsx +392 -0
- package/src/components/source-picker/CubeDirectConnectionTab.tsx +340 -0
- package/src/components/source-picker/CubeIngestTab.tsx +232 -0
- package/src/components/source-picker/CubeInlineModelTab.tsx +191 -0
- package/src/components/source-picker/CubePickerStep.tsx +49 -0
- package/src/components/source-picker/CubeProjectTab.tsx +114 -0
- package/src/components/source-picker/CubeSourcePicker.tsx +62 -227
- package/src/components/spec-transfer/CubeSpecTransferDialog.tsx +1 -1
- package/src/graph-manager/CubeConnectionExplorer.ts +106 -0
- package/src/graph-manager/CubeDataProduct.ts +150 -0
- package/src/graph-manager/CubeDataProductCatalog.ts +245 -0
- package/src/graph-manager/CubeDirectConnection.ts +67 -0
- package/src/graph-manager/CubeEngine.ts +43 -1
- package/src/graph-manager/CubeIngest.ts +144 -0
- package/src/graph-manager/CubeIngestCatalog.ts +169 -0
- package/src/graph-manager/CubeLakehouseEnvironment.ts +27 -0
- package/src/graph-manager/CubeProject.ts +117 -0
- package/src/graph-manager/CubeProjectCatalog.ts +40 -0
- package/src/graph-manager/protocol/pure/CubeEngineBuilder.ts +145 -1
- package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductArtifact.ts +251 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeDataProductModel.ts +101 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeDirectConnection.ts +339 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeDirectModel.ts +151 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeEngineErrors.ts +45 -4
- package/src/graph-manager/protocol/pure/v1/V1_CubeExpression.ts +89 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeIngestDefinition.ts +201 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeIngestModel.ts +183 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeLakehouseEnvironmentResolver.ts +141 -0
- package/src/graph-manager/protocol/pure/v1/V1_CubeLambdaSerializer.ts +84 -4
- package/src/graph-manager/protocol/pure/v1/V1_CubeSchemaExploration.ts +361 -0
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeConnectionExplorer.ts +116 -0
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeDataProductCatalog.ts +744 -0
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeEngine.ts +967 -24
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeIngestCatalog.ts +459 -0
- package/src/graph-manager/protocol/pure/v1/V1_LegendCubeProjectCatalog.ts +147 -0
- package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeConnectionExplorerTestUtils.ts +61 -0
- package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductFixtures.ts +337 -0
- package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeDataProductSearchFixtures.ts +206 -0
- package/src/graph-manager/protocol/pure/v1/__test-utils__/V1_CubeEngineTestUtils.ts +42 -1
- package/src/index.ts +20 -0
- package/src/stores/CubeAddPlacement.ts +67 -0
- package/src/stores/CubeDataProductRecheck.ts +93 -0
- package/src/stores/CubeDataProductRuntimeState.ts +256 -0
- package/src/stores/CubeDataProductWarehouse.ts +40 -0
- package/src/stores/CubeEditorState.ts +511 -63
- package/src/stores/CubeEntrySource.ts +278 -0
- package/src/stores/CubeExamples.ts +457 -0
- package/src/stores/CubeExamplesState.ts +108 -0
- package/src/stores/CubeExecutionState.ts +24 -5
- package/src/stores/CubeExtendTyping.ts +291 -0
- package/src/stores/CubeGridQuickActions.ts +69 -14
- package/src/stores/CubeHost.ts +71 -1
- package/src/stores/CubeIngestRecheck.ts +92 -0
- package/src/stores/CubeNodeEditorState.ts +278 -9
- package/src/stores/CubeShowPureState.ts +7 -4
- package/src/stores/CubeSourcePickerState.ts +160 -330
- package/src/stores/CubeSpecTransferState.ts +2 -2
- package/src/stores/LocalModelCatalog.ts +22 -3
- package/src/stores/editors/CubeAggregationRows.ts +299 -0
- package/src/stores/editors/CubeConcatDraft.ts +49 -0
- package/src/stores/editors/CubeDifferenceDraft.ts +147 -0
- package/src/stores/editors/CubeExtendDraft.ts +532 -0
- package/src/stores/editors/CubeGroupDraft.ts +145 -0
- package/src/stores/editors/CubeJoinDraft.ts +130 -41
- package/src/stores/editors/CubeJoinKeyPairs.ts +68 -0
- package/src/stores/editors/CubeNodeDraft.ts +26 -6
- package/src/stores/editors/CubeNodeDraftRegistry.ts +25 -0
- package/src/stores/editors/CubePartitionDraft.ts +214 -0
- package/src/stores/editors/CubeSortDraft.ts +17 -54
- package/src/stores/editors/CubeSortRows.ts +84 -0
- package/src/stores/fixtures/CubeNorthwindModel.ts +103 -88
- package/src/stores/fixtures/CubeSampleSql.ts +85 -0
- package/src/stores/fixtures/CubeSportsModel.ts +182 -0
- package/src/stores/fixtures/CubeTradesModel.ts +241 -0
- package/src/stores/source-picker/CubeCsvSetupSql.ts +444 -0
- package/src/stores/source-picker/CubeDataProductTabState.ts +839 -0
- package/src/stores/source-picker/CubeDirectConnectionTabState.ts +647 -0
- package/src/stores/source-picker/CubeIngestTabState.ts +551 -0
- package/src/stores/source-picker/CubeInlineModelTabState.ts +448 -0
- package/src/stores/source-picker/CubeProjectTabState.ts +218 -0
- package/src/stores/source-picker/CubeSourcePickerTab.ts +50 -0
- package/tsconfig.json +89 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CubeSortEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeSortEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"CubeSortEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeSortEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAOvE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,WAAoB,mBAAmB;;CA+ChE,CAAC"}
|
|
@@ -14,29 +14,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
-
import {
|
|
18
|
-
import { isSortableType, isSortDirection, MESSAGE_CANNOT_HAVE_DUPLICATES, SORT_DIRECTION_DESCRIPTIONS, SORT_DIRECTIONS, validateSortKey, } from '@finos/legend-cube';
|
|
17
|
+
import { isSortableType } from '@finos/legend-cube';
|
|
19
18
|
import { guaranteeType } from '@finos/legend-shared';
|
|
20
19
|
import { observer } from 'mobx-react-lite';
|
|
21
|
-
import {
|
|
22
|
-
import { CubeSortDraft
|
|
20
|
+
import { READ_ONLY_CUBE_TITLE } from '../../__lib__/LegendCubeLabels.js';
|
|
21
|
+
import { CubeSortDraft } from '../../stores/editors/CubeSortDraft.js';
|
|
23
22
|
import { CubeButton } from '../CubeButton.js';
|
|
24
|
-
import {
|
|
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
|
-
});
|
|
23
|
+
import { CubeSortRowEditor, getSortRowProblems, getTakenSortColumns, } from './CubeSortRowEditor.js';
|
|
40
24
|
/**
|
|
41
25
|
* The Sort editor (spec §17.6: an ordered list of column and direction rows,
|
|
42
26
|
* added, removed and reordered). The first row sorts first. A column that
|
|
@@ -49,24 +33,13 @@ export const CubeSortEditor = observer((props) => {
|
|
|
49
33
|
const draft = guaranteeType(props.draft, CubeSortDraft);
|
|
50
34
|
const [schema] = props.inputSchemas;
|
|
51
35
|
const { rows } = draft;
|
|
52
|
-
|
|
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
|
-
});
|
|
36
|
+
const problems = getSortRowProblems(rows, schema);
|
|
64
37
|
const sortable = schema.columns.filter((column) => isSortableType(column.type));
|
|
65
38
|
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",
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
39
|
+
return (_jsxs("div", { className: "flex flex-col gap-2 text-base", children: [_jsx("ul", { "aria-label": "Sort columns", children: rows.map((row, index) => (_jsx(CubeSortRowEditor, { row: row, position: index + 1, count: rows.length, schema: schema, takenColumns: getTakenSortColumns(rows, row), problem: problems[index], readOnly: readOnly, onColumn: (column) => draft.setColumn(row.key, column), onDirection: (direction) => draft.setDirection(row.key, direction), onMove: (offset) => draft.moveRow(row.key, offset), onRemove: () => draft.removeRow(row.key) }, row.key))) }), _jsx("div", { children: _jsx(CubeButton, { title: readOnly
|
|
40
|
+
? READ_ONLY_CUBE_TITLE
|
|
41
|
+
: canAddRow
|
|
42
|
+
? 'Add a column to sort by'
|
|
43
|
+
: 'Every column that can be sorted already has a row', disabled: !canAddRow, onClick: () => draft.addRow(), children: "Add sort column" }) })] }));
|
|
71
44
|
});
|
|
72
45
|
//# sourceMappingURL=CubeSortEditor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CubeSortEditor.js","sourceRoot":"","sources":["../../../src/components/editors/CubeSortEditor.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"CubeSortEditor.js","sourceRoot":"","sources":["../../../src/components/editors/CubeSortEditor.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,cAAc,EAAe,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,KAA0B,EAAE,EAAE;IACpE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACxD,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,YAAwB,CAAC;IAChD,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACvB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAChD,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAC5B,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC7D,OAAO,CACL,eAAK,SAAS,EAAC,+BAA+B,aAC5C,2BAAe,cAAc,YAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CACxB,KAAC,iBAAiB,IAEhB,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,KAAK,GAAG,CAAC,EACnB,KAAK,EAAE,IAAI,CAAC,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,mBAAmB,CAAC,IAAI,EAAE,GAAG,CAAC,EAC5C,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,EACtD,WAAW,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,EAClE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,EAClD,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAXnC,GAAG,CAAC,GAAG,CAYZ,CACH,CAAC,GACC,EACL,wBACE,KAAC,UAAU,IACT,KAAK,EACH,QAAQ;wBACN,CAAC,CAAC,oBAAoB;wBACtB,CAAC,CAAC,SAAS;4BACT,CAAC,CAAC,yBAAyB;4BAC3B,CAAC,CAAC,mDAAmD,EAE3D,QAAQ,EAAE,CAAC,SAAS,EACpB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,gCAGlB,GACT,IACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
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, type SortDirection } from '@finos/legend-cube';
|
|
17
|
+
import type { CubeSortRow } from '../../stores/editors/CubeSortRows.js';
|
|
18
|
+
/**
|
|
19
|
+
* Each sort row's first problem, as the node will judge it: its key
|
|
20
|
+
* (`validateSortKey`), then a column an earlier row has; a blank row has none
|
|
21
|
+
*/
|
|
22
|
+
export declare const getSortRowProblems: (rows: readonly CubeSortRow[], schema: Schema) => (string | undefined)[];
|
|
23
|
+
/** The columns of the other rows, which a row can't take */
|
|
24
|
+
export declare const getTakenSortColumns: (rows: readonly CubeSortRow[], row: CubeSortRow) => ReadonlySet<string>;
|
|
25
|
+
/**
|
|
26
|
+
* One sort row (a Sort's, PLAN §11.4; a Partition's window, §11.6): its
|
|
27
|
+
* column, its direction, buttons that move it up or down and remove it, then
|
|
28
|
+
* its first problem. A column that can't be sorted, or that another row has,
|
|
29
|
+
* can't be picked.
|
|
30
|
+
*/
|
|
31
|
+
export declare const CubeSortRowEditor: ((props: {
|
|
32
|
+
row: CubeSortRow;
|
|
33
|
+
position: number;
|
|
34
|
+
count: number;
|
|
35
|
+
schema: Schema;
|
|
36
|
+
/** The columns of the other rows, which this row can't take */
|
|
37
|
+
takenColumns: ReadonlySet<string>;
|
|
38
|
+
problem: string | undefined;
|
|
39
|
+
readOnly: boolean;
|
|
40
|
+
onColumn: (column: string) => void;
|
|
41
|
+
onDirection: (direction: SortDirection) => void;
|
|
42
|
+
onMove: (offset: -1 | 1) => void;
|
|
43
|
+
onRemove: () => void;
|
|
44
|
+
}) => import("react/jsx-runtime").JSX.Element) & {
|
|
45
|
+
displayName: string;
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=CubeSortRowEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeSortRowEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeSortRowEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAIL,KAAK,MAAM,EAIX,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAMxE;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,MAAM,SAAS,WAAW,EAAE,EAC5B,QAAQ,MAAM,KACb,CAAC,MAAM,GAAG,SAAS,CAAC,EAanB,CAAC;AAEL,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,GAC9B,MAAM,SAAS,WAAW,EAAE,EAC5B,KAAK,WAAW,KACf,WAAW,CAAC,MAAM,CAKlB,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,WACpB;IACN,GAAG,EAAE,WAAW,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAChD,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IACjC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;;CAsFF,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
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 { observer } from 'mobx-react-lite';
|
|
20
|
+
import { CUBE_SORT_COLUMN_DISABLED_REASON } from '../../__lib__/LegendCubeLabels.js';
|
|
21
|
+
import { CubeColumnPicker } from './CubeColumnPicker.js';
|
|
22
|
+
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)]';
|
|
23
|
+
/**
|
|
24
|
+
* Each sort row's first problem, as the node will judge it: its key
|
|
25
|
+
* (`validateSortKey`), then a column an earlier row has; a blank row has none
|
|
26
|
+
*/
|
|
27
|
+
export const getSortRowProblems = (rows, schema) => rows.map((row, index) => {
|
|
28
|
+
if (!row.column) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
const errors = [];
|
|
32
|
+
validateSortKey(row, schema, errors);
|
|
33
|
+
return (errors[0] ??
|
|
34
|
+
(rows.slice(0, index).some(({ column }) => column === row.column)
|
|
35
|
+
? MESSAGE_CANNOT_HAVE_DUPLICATES('Sort columns')
|
|
36
|
+
: undefined));
|
|
37
|
+
});
|
|
38
|
+
/** The columns of the other rows, which a row can't take */
|
|
39
|
+
export const getTakenSortColumns = (rows, row) => new Set(rows
|
|
40
|
+
.filter((other) => other.key !== row.key && other.column)
|
|
41
|
+
.map(({ column }) => column));
|
|
42
|
+
/**
|
|
43
|
+
* One sort row (a Sort's, PLAN §11.4; a Partition's window, §11.6): its
|
|
44
|
+
* column, its direction, buttons that move it up or down and remove it, then
|
|
45
|
+
* its first problem. A column that can't be sorted, or that another row has,
|
|
46
|
+
* can't be picked.
|
|
47
|
+
*/
|
|
48
|
+
export const CubeSortRowEditor = observer((props) => {
|
|
49
|
+
const { row, position, count, schema, takenColumns, problem, readOnly, onColumn, onDirection, onMove, onRemove, } = props;
|
|
50
|
+
const isColumnDisabled = (column) => !isSortableType(column.type)
|
|
51
|
+
? CUBE_SORT_COLUMN_DISABLED_REASON.NOT_SORTABLE
|
|
52
|
+
: takenColumns.has(column.name)
|
|
53
|
+
? CUBE_SORT_COLUMN_DISABLED_REASON.TAKEN
|
|
54
|
+
: undefined;
|
|
55
|
+
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: onColumn }), _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) => {
|
|
56
|
+
const direction = event.target.value;
|
|
57
|
+
if (isSortDirection(direction)) {
|
|
58
|
+
onDirection(direction);
|
|
59
|
+
}
|
|
60
|
+
}, 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: () => onMove(-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: () => onMove(1), children: _jsx(ArrowDownIcon, {}) }), _jsx("button", { className: ROW_BUTTON_CLASS, "aria-label": `Remove sort column ${position}`, title: "Remove this sort column", disabled: readOnly, onClick: onRemove, children: _jsx(TimesIcon, {}) })] }), problem && (_jsx("div", { className: "text-sm text-[var(--color-status-error)]", children: problem }))] }));
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=CubeSortRowEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeSortRowEditor.js","sourceRoot":"","sources":["../../../src/components/editors/CubeSortRowEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CubeSourceEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeSourceEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"CubeSourceEditor.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeSourceEditor.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAmBH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,WAAoB,mBAAmB;;CA6ElE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
3
|
* Copyright (c) 2026-present, Goldman Sachs
|
|
4
4
|
*
|
|
@@ -19,9 +19,12 @@ import { getRelationalDisplayName, RelationalTableSource, } from '@finos/legend-
|
|
|
19
19
|
import { guaranteeType } from '@finos/legend-shared';
|
|
20
20
|
import { flowResult } from 'mobx';
|
|
21
21
|
import { observer } from 'mobx-react-lite';
|
|
22
|
-
import {
|
|
22
|
+
import { CUBE_DIRECT_CONNECTION_FALLBACK_LABEL, getCubeConnectionSummaryLabel, } from '../../__lib__/LegendCubeDirectConnectionLabels.js';
|
|
23
|
+
import { CUBE_PENDING_LABEL } from '../../__lib__/LegendCubeLabels.js';
|
|
24
|
+
import { getCubeDirectConnection } from '../../graph-manager/CubeDirectConnection.js';
|
|
25
|
+
import { getCubeProjectCoordinates } from '../../graph-manager/CubeProject.js';
|
|
23
26
|
import { CubeButton } from '../CubeButton.js';
|
|
24
|
-
import {
|
|
27
|
+
import { CubeSchemaColumnsTable } from '../CubeSchemaColumnsTable.js';
|
|
25
28
|
/**
|
|
26
29
|
* A table source (spec §17.6): where it reads from, its columns as the engine
|
|
27
30
|
* typed them, and Refresh, which types the table again. Nothing here is
|
|
@@ -32,9 +35,19 @@ export const CubeSourceEditor = observer((props) => {
|
|
|
32
35
|
const source = guaranteeType(props.draft.original, RelationalTableSource);
|
|
33
36
|
const refreshing = editorState.isPendingSource(source);
|
|
34
37
|
const { resolution } = source;
|
|
35
|
-
|
|
38
|
+
// a direct cube's tables all belong to a Database Cube builds: its
|
|
39
|
+
// connection says where they come from (PLAN §6.8)
|
|
40
|
+
const model = editorState.document.context?.model;
|
|
41
|
+
const connection = model ? getCubeDirectConnection(model) : undefined;
|
|
42
|
+
const description = connection &&
|
|
43
|
+
editorState.host.connectionExplorer?.describeConnection(connection);
|
|
44
|
+
// a project cube's tables come from its project at the saved version (PLAN §6.3)
|
|
45
|
+
const project = model ? getCubeProjectCoordinates(model) : undefined;
|
|
46
|
+
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: [connection ? (_jsxs(_Fragment, { children: [_jsx("dt", { className: "text-[var(--color-text-secondary)]", children: "Connection" }), _jsx("dd", { className: "min-w-0 break-words", children: description?.supported
|
|
47
|
+
? getCubeConnectionSummaryLabel(description.summary)
|
|
48
|
+
: CUBE_DIRECT_CONNECTION_FALLBACK_LABEL })] })) : (_jsxs(_Fragment, { children: [project && (_jsxs(_Fragment, { children: [_jsx("dt", { className: "text-[var(--color-text-secondary)]", children: "Project" }), _jsxs("dd", { className: "min-w-0 break-all", children: [project.groupId, ":", project.artifactId] }), _jsx("dt", { className: "text-[var(--color-text-secondary)]", children: "Version" }), _jsx("dd", { children: project.versionId })] })), _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
49
|
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' ? (
|
|
50
|
+
}, 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' ? (_jsx(CubeSchemaColumnsTable, { schema: resolution.schema })) : (_jsx("div", { className: "text-base text-[var(--color-text-secondary)]", children: resolution.kind === 'failed'
|
|
38
51
|
? resolution.message
|
|
39
52
|
: 'The table has not been typed yet.' }))] }));
|
|
40
53
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CubeSourceEditor.js","sourceRoot":"","sources":["../../../src/components/editors/CubeSourceEditor.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"CubeSourceEditor.js","sourceRoot":"","sources":["../../../src/components/editors/CubeSourceEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
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 CubeDataProductRuntimeState } from '../../stores/CubeDataProductRuntimeState.js';
|
|
17
|
+
/**
|
|
18
|
+
* The warehouse a lakehouse cube runs on, edited in place: Apply, Enter, or
|
|
19
|
+
* closing the node editor, runs the cube on another one, as one undo step. Text typed but not
|
|
20
|
+
* applied belongs to the cube's context it was typed on; once the context
|
|
21
|
+
* changes, e.g. on Undo, the control shows the cube's warehouse again.
|
|
22
|
+
* Below it, after a run the warehouse failed, what to do about it
|
|
23
|
+
*/
|
|
24
|
+
export declare const CubeWarehouseControl: ((props: {
|
|
25
|
+
runtime: CubeDataProductRuntimeState;
|
|
26
|
+
readOnly: boolean;
|
|
27
|
+
}) => import("react/jsx-runtime").JSX.Element) & {
|
|
28
|
+
displayName: string;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=CubeWarehouseControl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeWarehouseControl.d.ts","sourceRoot":"","sources":["../../../src/components/editors/CubeWarehouseControl.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,6CAA6C,CAAC;AAGrD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,WACvB;IAAE,OAAO,EAAE,2BAA2B,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE;;CA0EpE,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { observer } from 'mobx-react-lite';
|
|
3
|
+
import { useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { CUBE_WAREHOUSE_APPLY_TITLE, getCubeWarehouseErrorHint, } from '../../__lib__/LegendCubeDataProductLabels.js';
|
|
5
|
+
import { READ_ONLY_CUBE_TITLE } from '../../__lib__/LegendCubeLabels.js';
|
|
6
|
+
import { CubeDataProductRunErrorKind, } from '../../stores/CubeDataProductRuntimeState.js';
|
|
7
|
+
import { CubeButton } from '../CubeButton.js';
|
|
8
|
+
/**
|
|
9
|
+
* The warehouse a lakehouse cube runs on, edited in place: Apply, Enter, or
|
|
10
|
+
* closing the node editor, runs the cube on another one, as one undo step. Text typed but not
|
|
11
|
+
* applied belongs to the cube's context it was typed on; once the context
|
|
12
|
+
* changes, e.g. on Undo, the control shows the cube's warehouse again.
|
|
13
|
+
* Below it, after a run the warehouse failed, what to do about it
|
|
14
|
+
*/
|
|
15
|
+
export const CubeWarehouseControl = observer((props) => {
|
|
16
|
+
const { runtime, readOnly } = props;
|
|
17
|
+
const { context } = runtime.editorState.document;
|
|
18
|
+
const current = runtime.effectiveWarehouse ?? '';
|
|
19
|
+
const [draft, setDraft] = useState();
|
|
20
|
+
const text = draft !== undefined && draft.context === context ? draft.text : current;
|
|
21
|
+
const disabled = readOnly || !runtime.canEditWarehouse;
|
|
22
|
+
const canApply = !disabled && text.trim().length > 0 && text.trim() !== current;
|
|
23
|
+
const apply = () => {
|
|
24
|
+
if (canApply && runtime.setWarehouse(text)) {
|
|
25
|
+
setDraft(undefined);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
// closing the node editor applies, as for every edit (PLAN §11.8),
|
|
29
|
+
// without remembering it for the viewer's next cubes: Undo takes it back
|
|
30
|
+
const latest = useRef({ text, canApply });
|
|
31
|
+
latest.current = { text, canApply };
|
|
32
|
+
useEffect(() => runtime.editorState.nodeEditor.addFlusher(() => {
|
|
33
|
+
if (latest.current.canApply &&
|
|
34
|
+
runtime.setWarehouse(latest.current.text, { remember: false })) {
|
|
35
|
+
setDraft(undefined);
|
|
36
|
+
}
|
|
37
|
+
}, { isPending: () => latest.current.canApply }), [runtime]);
|
|
38
|
+
return (_jsxs(_Fragment, { children: [_jsxs("span", { className: "flex min-w-0 items-center gap-1", children: [_jsx("input", { className: "h-6 min-w-0 flex-1 rounded-sm border border-[var(--color-border-default)] bg-[var(--color-bg-input)] px-1 text-base text-[var(--color-text-primary)] disabled:text-[var(--color-text-secondary)]", "aria-label": "Warehouse", spellCheck: false, disabled: disabled, title: readOnly ? READ_ONLY_CUBE_TITLE : undefined, value: text, onChange: (event) => setDraft({ context, text: event.target.value }), onKeyDown: (event) => {
|
|
39
|
+
if (event.key === 'Enter') {
|
|
40
|
+
apply();
|
|
41
|
+
}
|
|
42
|
+
} }), _jsx(CubeButton, { title: readOnly ? READ_ONLY_CUBE_TITLE : CUBE_WAREHOUSE_APPLY_TITLE, disabled: !canApply, onClick: apply, children: "Apply" })] }), runtime.runErrorKind === CubeDataProductRunErrorKind.WAREHOUSE && (_jsx("span", { className: "mt-1 block text-sm text-[var(--color-status-error)]", role: "alert", children: getCubeWarehouseErrorHint(current, runtime.canEditWarehouse) }))] }));
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=CubeWarehouseControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeWarehouseControl.js","sourceRoot":"","sources":["../../../src/components/editors/CubeWarehouseControl.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
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 { CubeEditorState } from '../../stores/CubeEditorState.js';
|
|
17
|
+
/** Whether a press on the target, outside the editor, closes it */
|
|
18
|
+
export declare const isCubeNodeEditorDismissedBy: (target: EventTarget | null, editor: Element | null) => boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Closes the floating node editor, applying its edits, on a press of the
|
|
21
|
+
* main button outside it, or on Escape (PLAN §11.8, spec §17.5). A press
|
|
22
|
+
* closes it as it goes down, before the click, so a button pressed outside
|
|
23
|
+
* (Execute, Undo) acts on the applied edits. Nothing closes it while a Cube
|
|
24
|
+
* dialog is open or something opened from it holds it; an Escape a field or
|
|
25
|
+
* a dialog already used is theirs, and so is one in the results grid's menu.
|
|
26
|
+
* A surface opened from the editor and shown elsewhere (a portal) must be
|
|
27
|
+
* one of MUI's layers, or hold the editor open (`nodeEditor.holdOpen()`),
|
|
28
|
+
* or a press in it closes the editor.
|
|
29
|
+
*/
|
|
30
|
+
export declare const useCubeNodeEditorDismiss: (editorState: CubeEditorState, editorRef: React.RefObject<Element | null>) => void;
|
|
31
|
+
//# sourceMappingURL=useCubeNodeEditorDismiss.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCubeNodeEditorDismiss.d.ts","sourceRoot":"","sources":["../../../src/components/editors/useCubeNodeEditorDismiss.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAkBvE,mEAAmE;AACnE,eAAO,MAAM,2BAA2B,GACtC,QAAQ,WAAW,GAAG,IAAI,EAC1B,QAAQ,OAAO,GAAG,IAAI,KACrB,OAGkC,CAAC;AAEtC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,GACnC,aAAa,eAAe,EAC5B,WAAW,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,KACzC,IA4CF,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
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 { useEffect } from 'react';
|
|
17
|
+
import { returnFocusToCubeCanvasNode } from '../canvas/CubeCanvasNodeFocus.js';
|
|
18
|
+
/**
|
|
19
|
+
* What a press outside the floating editor leaves alone (PLAN §11.8):
|
|
20
|
+
* a node, whose click applies and opens it or selects it; the canvas's
|
|
21
|
+
* background, controls and minimap, so panning or zooming keeps the editor
|
|
22
|
+
* (a plain click on the background closes it, through the canvas); the
|
|
23
|
+
* splitter above the results, as the editor follows its node when the
|
|
24
|
+
* canvas is resized; and MUI's layers, where a dropdown, menu or dialog
|
|
25
|
+
* opened from the editor lives.
|
|
26
|
+
*/
|
|
27
|
+
const LEFT_ALONE = '.react-flow__node, .react-flow__pane, .react-flow__controls, .react-flow__minimap, .reflex-splitter, .MuiModal-root, .MuiPopover-root, .MuiPopper-root';
|
|
28
|
+
/** An Escape there is the results grid's, e.g. closing its menu */
|
|
29
|
+
const GRID_LAYERS = '.ag-popup, .ag-menu';
|
|
30
|
+
/** Whether a press on the target, outside the editor, closes it */
|
|
31
|
+
export const isCubeNodeEditorDismissedBy = (target, editor) => target instanceof Element &&
|
|
32
|
+
!editor?.contains(target) &&
|
|
33
|
+
target.closest(LEFT_ALONE) === null;
|
|
34
|
+
/**
|
|
35
|
+
* Closes the floating node editor, applying its edits, on a press of the
|
|
36
|
+
* main button outside it, or on Escape (PLAN §11.8, spec §17.5). A press
|
|
37
|
+
* closes it as it goes down, before the click, so a button pressed outside
|
|
38
|
+
* (Execute, Undo) acts on the applied edits. Nothing closes it while a Cube
|
|
39
|
+
* dialog is open or something opened from it holds it; an Escape a field or
|
|
40
|
+
* a dialog already used is theirs, and so is one in the results grid's menu.
|
|
41
|
+
* A surface opened from the editor and shown elsewhere (a portal) must be
|
|
42
|
+
* one of MUI's layers, or hold the editor open (`nodeEditor.holdOpen()`),
|
|
43
|
+
* or a press in it closes the editor.
|
|
44
|
+
*/
|
|
45
|
+
export const useCubeNodeEditorDismiss = (editorState, editorRef) => {
|
|
46
|
+
const isOpen = editorState.nodeEditor.nodeId !== undefined;
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (!isOpen) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
const canDismiss = () => !editorState.isDialogOpen && !editorState.nodeEditor.isHeld;
|
|
52
|
+
const onPointerDown = (event) => {
|
|
53
|
+
if (event.button === 0 &&
|
|
54
|
+
// on macOS, Ctrl with the main button is a right-click
|
|
55
|
+
!event.ctrlKey &&
|
|
56
|
+
canDismiss() &&
|
|
57
|
+
isCubeNodeEditorDismissedBy(event.target, editorRef.current)) {
|
|
58
|
+
editorState.nodeEditor.finish();
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const onKeyDown = (event) => {
|
|
62
|
+
if (event.key === 'Escape' &&
|
|
63
|
+
!event.defaultPrevented &&
|
|
64
|
+
!(event.target instanceof Element &&
|
|
65
|
+
event.target.closest(GRID_LAYERS) !== null) &&
|
|
66
|
+
canDismiss()) {
|
|
67
|
+
const { nodeId } = editorState.nodeEditor;
|
|
68
|
+
const focused = document.activeElement;
|
|
69
|
+
if (editorState.nodeEditor.finish() && nodeId !== undefined) {
|
|
70
|
+
returnFocusToCubeCanvasNode(nodeId, editorRef.current, focused);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
// capturing, so a press that something else stops still closes it
|
|
75
|
+
document.addEventListener('pointerdown', onPointerDown, true);
|
|
76
|
+
document.addEventListener('keydown', onKeyDown);
|
|
77
|
+
return () => {
|
|
78
|
+
document.removeEventListener('pointerdown', onPointerDown, true);
|
|
79
|
+
document.removeEventListener('keydown', onKeyDown);
|
|
80
|
+
};
|
|
81
|
+
}, [editorState, editorRef, isOpen]);
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=useCubeNodeEditorDismiss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCubeNodeEditorDismiss.js","sourceRoot":"","sources":["../../../src/components/editors/useCubeNodeEditorDismiss.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E;;;;;;;;GAQG;AACH,MAAM,UAAU,GACd,wJAAwJ,CAAC;AAE3J,mEAAmE;AACnE,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAE1C,mEAAmE;AACnE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,MAA0B,EAC1B,MAAsB,EACb,EAAE,CACX,MAAM,YAAY,OAAO;IACzB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;IACzB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;AAEtC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,WAA4B,EAC5B,SAA0C,EACpC,EAAE;IACR,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC;IAC3D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,UAAU,GAAG,GAAY,EAAE,CAC/B,CAAC,WAAW,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;QAC9D,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAQ,EAAE;YAClD,IACE,KAAK,CAAC,MAAM,KAAK,CAAC;gBAClB,uDAAuD;gBACvD,CAAC,KAAK,CAAC,OAAO;gBACd,UAAU,EAAE;gBACZ,2BAA2B,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAC5D,CAAC;gBACD,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAClC,CAAC;QACH,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAQ,EAAE;YAC/C,IACE,KAAK,CAAC,GAAG,KAAK,QAAQ;gBACtB,CAAC,KAAK,CAAC,gBAAgB;gBACvB,CAAC,CACC,KAAK,CAAC,MAAM,YAAY,OAAO;oBAC/B,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAC3C;gBACD,UAAU,EAAE,EACZ,CAAC;gBACD,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC;gBAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;gBACvC,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC5D,2BAA2B,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QACF,kEAAkE;QAClE,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QAC9D,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAChD,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;YACjE,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACrD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AACvC,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 { CubeEditorState } from '../../stores/CubeEditorState.js';
|
|
17
|
+
/**
|
|
18
|
+
* The Examples dialog (PLAN §6.9): a row per sample dataset, its card first,
|
|
19
|
+
* then its example cubes. Either replaces the cube, and Undo brings it back.
|
|
20
|
+
*/
|
|
21
|
+
export declare const CubeExamplesDialog: ((props: {
|
|
22
|
+
editorState: CubeEditorState;
|
|
23
|
+
}) => import("react/jsx-runtime").JSX.Element) & {
|
|
24
|
+
displayName: string;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=CubeExamplesDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CubeExamplesDialog.d.ts","sourceRoot":"","sources":["../../../src/components/examples/CubeExamplesDialog.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAiBH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAkHvE;;;GAGG;AACH,eAAO,MAAM,kBAAkB,WACrB;IAAE,WAAW,EAAE,eAAe,CAAA;CAAE;;CAgDzC,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
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 { ChartIcon, ChevronRightIcon, Dialog, Modal, ModalBody, ModalFooter, ModalFooterButton, ModalHeader, ShoppingCartIcon, TrophyIcon, } from '@finos/legend-art';
|
|
18
|
+
import { flowResult } from 'mobx';
|
|
19
|
+
import { observer } from 'mobx-react-lite';
|
|
20
|
+
import { Fragment, useMemo } from 'react';
|
|
21
|
+
import { CubeNodeIcon } from '../CubeNodeIcon.js';
|
|
22
|
+
/** Each dataset's icon, by dataset id */
|
|
23
|
+
const DATASET_ICONS = {
|
|
24
|
+
northwind: ShoppingCartIcon,
|
|
25
|
+
sports: TrophyIcon,
|
|
26
|
+
trades: ChartIcon,
|
|
27
|
+
};
|
|
28
|
+
const DatasetIcon = (props) => {
|
|
29
|
+
const Icon = DATASET_ICONS[props.dataset] ?? ChartIcon;
|
|
30
|
+
return _jsx(Icon, { className: props.className });
|
|
31
|
+
};
|
|
32
|
+
const CARD = 'flex h-full w-full flex-col gap-1 rounded-sm border border-[var(--color-border-default)] bg-[var(--color-bg-panel)] p-3 text-left hover:border-[var(--color-accent)] hover:bg-[var(--color-bg-hover)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--color-accent)]';
|
|
33
|
+
/** A dataset: starts a new cube on its model */
|
|
34
|
+
const DatasetCard = observer((props) => {
|
|
35
|
+
const { editorState, dataset } = props;
|
|
36
|
+
return (_jsxs("button", { type: "button", className: `${CARD} border-l-4 border-l-[var(--color-accent)]`, title: `Start a new cube on ${dataset.name}, from its first table`, onClick: () => editorState.examples.startOnDataset(dataset), children: [_jsxs("span", { className: "flex items-center gap-2 text-lg font-medium text-[var(--color-text-primary)]", children: [_jsx(DatasetIcon, { dataset: dataset.id, className: "shrink-0 text-xl text-[var(--color-accent)]" }), dataset.name] }), _jsx("span", { className: "text-base text-[var(--color-text-secondary)]", children: dataset.description }), _jsx("span", { className: "mt-auto pt-1 text-sm text-[var(--color-text-muted)]", children: dataset.tables.join(' · ') }), _jsx("span", { className: "text-sm text-[var(--color-accent)]", children: "Start a new cube \u2192" })] }));
|
|
37
|
+
});
|
|
38
|
+
/** An example cube: opens in place of the cube and runs */
|
|
39
|
+
const ExampleCard = observer((props) => {
|
|
40
|
+
const { editorState, example } = props;
|
|
41
|
+
const { registry } = editorState;
|
|
42
|
+
// the example's nodes, in order, as their icons
|
|
43
|
+
const steps = useMemo(() => example
|
|
44
|
+
.createDocument()
|
|
45
|
+
.query.nodes.map((node) => registry.get(node.type))
|
|
46
|
+
.filter((definition) => definition !== undefined)
|
|
47
|
+
.map((definition) => ({
|
|
48
|
+
icon: definition.icon,
|
|
49
|
+
label: definition.label,
|
|
50
|
+
})), [example, registry]);
|
|
51
|
+
return (_jsxs("button", { type: "button", className: CARD, title: `Open ${example.name}: it replaces this cube and runs`, onClick: () => {
|
|
52
|
+
flowResult(editorState.examples.openExample(example)).catch(editorState.host.applicationStore.alertUnhandledError);
|
|
53
|
+
}, children: [_jsxs("span", { className: "flex items-center gap-2 text-base font-medium text-[var(--color-text-primary)]", children: [_jsx(DatasetIcon, { dataset: example.dataset, className: "shrink-0 text-[var(--color-text-secondary)]" }), example.name] }), _jsx("span", { className: "text-sm text-[var(--color-text-secondary)]", children: example.description }), _jsx("span", { className: "mt-auto flex flex-wrap items-center gap-1 pt-2 text-[var(--color-text-muted)]", "aria-label": `Steps: ${steps.map((step) => step.label).join(', ')}`, children: steps.map((step, index) => (
|
|
54
|
+
// eslint-disable-next-line react/no-array-index-key
|
|
55
|
+
_jsxs(Fragment, { children: [index > 0 && _jsx(ChevronRightIcon, { className: "text-xs" }), _jsx("span", { title: step.label, children: _jsx(CubeNodeIcon, { icon: step.icon }) })] }, index))) })] }));
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* The Examples dialog (PLAN §6.9): a row per sample dataset, its card first,
|
|
59
|
+
* then its example cubes. Either replaces the cube, and Undo brings it back.
|
|
60
|
+
*/
|
|
61
|
+
export const CubeExamplesDialog = observer((props) => {
|
|
62
|
+
const { editorState } = props;
|
|
63
|
+
const { examples } = editorState;
|
|
64
|
+
const { applicationStore } = editorState.host;
|
|
65
|
+
const darkMode = !applicationStore.layoutService.TEMPORARY__isLightColorThemeEnabled;
|
|
66
|
+
return (_jsx(Dialog, { open: examples.isOpen, onClose: () => examples.close(), children: _jsxs(Modal, { darkMode: darkMode, className: "w-[960px] max-w-full", children: [_jsx(ModalHeader, { children: _jsx("div", { className: "modal__title", children: "Examples" }) }), _jsxs(ModalBody, { children: [_jsx("div", { className: "mb-3 text-base text-[var(--color-text-secondary)]", children: "Sample data to explore. Open an example cube, or start a new cube on a dataset. Either replaces this cube: Undo brings it back." }), _jsx("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-3", "aria-label": "Examples", children: examples.datasets.map((dataset) => (_jsxs(Fragment, { children: [_jsx(DatasetCard, { editorState: editorState, dataset: dataset }), examples.examplesOf(dataset).map((example) => (_jsx(ExampleCard, { editorState: editorState, example: example }, example.id)))] }, dataset.id))) })] }), _jsx(ModalFooter, { children: _jsx(ModalFooterButton, { darkMode: darkMode, formatText: false, type: "secondary", text: "Close", onClick: () => examples.close() }) })] }) }));
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=CubeExamplesDialog.js.map
|