@finos/legend-cube-builder 0.0.5 → 0.0.6

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 (245) hide show
  1. package/docs/adding-an-operation.md +4 -2
  2. package/docs/demo/README.md +1 -1
  3. package/docs/hosting.md +40 -9
  4. package/lib/__lib__/LegendCubeHelpText.d.ts.map +1 -1
  5. package/lib/__lib__/LegendCubeHelpText.js +3 -1
  6. package/lib/__lib__/LegendCubeHelpText.js.map +1 -1
  7. package/lib/__lib__/LegendCubeLabels.d.ts +34 -5
  8. package/lib/__lib__/LegendCubeLabels.d.ts.map +1 -1
  9. package/lib/__lib__/LegendCubeLabels.js +45 -8
  10. package/lib/__lib__/LegendCubeLabels.js.map +1 -1
  11. package/lib/__lib__/LegendCubeNavigation.d.ts +23 -0
  12. package/lib/__lib__/LegendCubeNavigation.d.ts.map +1 -0
  13. package/lib/__lib__/LegendCubeNavigation.js +33 -0
  14. package/lib/__lib__/LegendCubeNavigation.js.map +1 -0
  15. package/lib/__lib__/LegendCubeTesting.d.ts +3 -1
  16. package/lib/__lib__/LegendCubeTesting.d.ts.map +1 -1
  17. package/lib/__lib__/LegendCubeTesting.js +2 -0
  18. package/lib/__lib__/LegendCubeTesting.js.map +1 -1
  19. package/lib/__lib__/LegendCubeTour.d.ts +62 -0
  20. package/lib/__lib__/LegendCubeTour.d.ts.map +1 -0
  21. package/lib/__lib__/LegendCubeTour.js +149 -0
  22. package/lib/__lib__/LegendCubeTour.js.map +1 -0
  23. package/lib/__test-utils__/CubeExampleTestUtils.d.ts +34 -0
  24. package/lib/__test-utils__/CubeExampleTestUtils.d.ts.map +1 -0
  25. package/lib/__test-utils__/CubeExampleTestUtils.js +72 -0
  26. package/lib/__test-utils__/CubeExampleTestUtils.js.map +1 -0
  27. package/lib/__test-utils__/CubeVariantTestUtils.d.ts +16 -0
  28. package/lib/__test-utils__/CubeVariantTestUtils.d.ts.map +1 -0
  29. package/lib/__test-utils__/CubeVariantTestUtils.js +66 -0
  30. package/lib/__test-utils__/CubeVariantTestUtils.js.map +1 -0
  31. package/lib/components/CubeAddItems.d.ts.map +1 -1
  32. package/lib/components/CubeAddItems.js +2 -1
  33. package/lib/components/CubeAddItems.js.map +1 -1
  34. package/lib/components/CubeEditor.d.ts.map +1 -1
  35. package/lib/components/CubeEditor.js +11 -5
  36. package/lib/components/CubeEditor.js.map +1 -1
  37. package/lib/components/CubeFileMenu.d.ts.map +1 -1
  38. package/lib/components/CubeFileMenu.js +2 -1
  39. package/lib/components/CubeFileMenu.js.map +1 -1
  40. package/lib/components/CubeNodeIcon.d.ts.map +1 -1
  41. package/lib/components/CubeNodeIcon.js +2 -1
  42. package/lib/components/CubeNodeIcon.js.map +1 -1
  43. package/lib/components/canvas/CubeCanvas.d.ts.map +1 -1
  44. package/lib/components/canvas/CubeCanvas.js +3 -2
  45. package/lib/components/canvas/CubeCanvas.js.map +1 -1
  46. package/lib/components/canvas/CubeCanvasNode.d.ts.map +1 -1
  47. package/lib/components/canvas/CubeCanvasNode.js +4 -1
  48. package/lib/components/canvas/CubeCanvasNode.js.map +1 -1
  49. package/lib/components/dev-settings/CubeDevSettings.d.ts +2 -2
  50. package/lib/components/dev-settings/CubeDevSettings.d.ts.map +1 -1
  51. package/lib/components/dev-settings/CubeDevSettings.js +12 -8
  52. package/lib/components/dev-settings/CubeDevSettings.js.map +1 -1
  53. package/lib/components/editors/CubeColumnPicker.d.ts.map +1 -1
  54. package/lib/components/editors/CubeColumnPicker.js +3 -1
  55. package/lib/components/editors/CubeColumnPicker.js.map +1 -1
  56. package/lib/components/editors/CubeExplodeEditor.d.ts +26 -0
  57. package/lib/components/editors/CubeExplodeEditor.d.ts.map +1 -0
  58. package/lib/components/editors/CubeExplodeEditor.js +61 -0
  59. package/lib/components/editors/CubeExplodeEditor.js.map +1 -0
  60. package/lib/components/editors/CubeExpressionFilterEditor.d.ts.map +1 -1
  61. package/lib/components/editors/CubeExpressionFilterEditor.js +8 -5
  62. package/lib/components/editors/CubeExpressionFilterEditor.js.map +1 -1
  63. package/lib/components/editors/CubeExtendEditor.d.ts +0 -2
  64. package/lib/components/editors/CubeExtendEditor.d.ts.map +1 -1
  65. package/lib/components/editors/CubeExtendEditor.js +12 -11
  66. package/lib/components/editors/CubeExtendEditor.js.map +1 -1
  67. package/lib/components/editors/CubeJsonFieldsTree.d.ts +46 -0
  68. package/lib/components/editors/CubeJsonFieldsTree.d.ts.map +1 -0
  69. package/lib/components/editors/CubeJsonFieldsTree.js +93 -0
  70. package/lib/components/editors/CubeJsonFieldsTree.js.map +1 -0
  71. package/lib/components/editors/CubeNodeEditorRegistry.d.ts.map +1 -1
  72. package/lib/components/editors/CubeNodeEditorRegistry.js +3 -1
  73. package/lib/components/editors/CubeNodeEditorRegistry.js.map +1 -1
  74. package/lib/components/grid/CubeGridRegion.d.ts.map +1 -1
  75. package/lib/components/grid/CubeGridRegion.js +5 -4
  76. package/lib/components/grid/CubeGridRegion.js.map +1 -1
  77. package/lib/components/grid/CubeGridValues.d.ts +5 -3
  78. package/lib/components/grid/CubeGridValues.d.ts.map +1 -1
  79. package/lib/components/grid/CubeGridValues.js +8 -3
  80. package/lib/components/grid/CubeGridValues.js.map +1 -1
  81. package/lib/components/grid/CubeJsonExplorerDialog.d.ts +27 -0
  82. package/lib/components/grid/CubeJsonExplorerDialog.d.ts.map +1 -0
  83. package/lib/components/grid/CubeJsonExplorerDialog.js +102 -0
  84. package/lib/components/grid/CubeJsonExplorerDialog.js.map +1 -0
  85. package/lib/components/grid/CubeJsonViewerDialog.d.ts +27 -0
  86. package/lib/components/grid/CubeJsonViewerDialog.d.ts.map +1 -0
  87. package/lib/components/grid/CubeJsonViewerDialog.js +68 -0
  88. package/lib/components/grid/CubeJsonViewerDialog.js.map +1 -0
  89. package/lib/components/grid/CubeResultGrid.d.ts +15 -3
  90. package/lib/components/grid/CubeResultGrid.d.ts.map +1 -1
  91. package/lib/components/grid/CubeResultGrid.js +95 -3
  92. package/lib/components/grid/CubeResultGrid.js.map +1 -1
  93. package/lib/components/grid/CubeServerSideGrid.d.ts.map +1 -1
  94. package/lib/components/grid/CubeServerSideGrid.js +4 -2
  95. package/lib/components/grid/CubeServerSideGrid.js.map +1 -1
  96. package/lib/components/palette/CubePalette.d.ts.map +1 -1
  97. package/lib/components/palette/CubePalette.js +4 -1
  98. package/lib/components/palette/CubePalette.js.map +1 -1
  99. package/lib/components/source-picker/CubeIngestTab.d.ts +2 -2
  100. package/lib/components/source-picker/CubeIngestTab.d.ts.map +1 -1
  101. package/lib/components/source-picker/CubeIngestTab.js +19 -13
  102. package/lib/components/source-picker/CubeIngestTab.js.map +1 -1
  103. package/lib/components/tour/CubeTour.d.ts +36 -0
  104. package/lib/components/tour/CubeTour.d.ts.map +1 -0
  105. package/lib/components/tour/CubeTour.js +183 -0
  106. package/lib/components/tour/CubeTour.js.map +1 -0
  107. package/lib/index.css +1 -1
  108. package/lib/index.d.ts +1 -0
  109. package/lib/index.d.ts.map +1 -1
  110. package/lib/index.js +1 -0
  111. package/lib/index.js.map +1 -1
  112. package/lib/stores/CubeEditorState.d.ts +17 -1
  113. package/lib/stores/CubeEditorState.d.ts.map +1 -1
  114. package/lib/stores/CubeEditorState.js +35 -5
  115. package/lib/stores/CubeEditorState.js.map +1 -1
  116. package/lib/stores/CubeExamples.d.ts.map +1 -1
  117. package/lib/stores/CubeExamples.js +101 -4
  118. package/lib/stores/CubeExamples.js.map +1 -1
  119. package/lib/stores/CubeExamplesState.d.ts.map +1 -1
  120. package/lib/stores/CubeExamplesState.js +4 -1
  121. package/lib/stores/CubeExamplesState.js.map +1 -1
  122. package/lib/stores/CubeGridQuickActions.d.ts +7 -0
  123. package/lib/stores/CubeGridQuickActions.d.ts.map +1 -1
  124. package/lib/stores/CubeGridQuickActions.js +20 -11
  125. package/lib/stores/CubeGridQuickActions.js.map +1 -1
  126. package/lib/stores/CubePureText.d.ts +20 -0
  127. package/lib/stores/CubePureText.d.ts.map +1 -0
  128. package/lib/stores/CubePureText.js +24 -0
  129. package/lib/stores/CubePureText.js.map +1 -0
  130. package/lib/stores/CubeTourState.d.ts +49 -0
  131. package/lib/stores/CubeTourState.d.ts.map +1 -0
  132. package/lib/stores/CubeTourState.js +92 -0
  133. package/lib/stores/CubeTourState.js.map +1 -0
  134. package/lib/stores/LegendCubeHost.d.ts +88 -0
  135. package/lib/stores/LegendCubeHost.d.ts.map +1 -0
  136. package/lib/stores/LegendCubeHost.js +149 -0
  137. package/lib/stores/LegendCubeHost.js.map +1 -0
  138. package/lib/stores/editors/CubeExplodeDraft.d.ts +87 -0
  139. package/lib/stores/editors/CubeExplodeDraft.d.ts.map +1 -0
  140. package/lib/stores/editors/CubeExplodeDraft.js +221 -0
  141. package/lib/stores/editors/CubeExplodeDraft.js.map +1 -0
  142. package/lib/stores/editors/CubeExpressionFilterDraft.d.ts +3 -0
  143. package/lib/stores/editors/CubeExpressionFilterDraft.d.ts.map +1 -1
  144. package/lib/stores/editors/CubeExpressionFilterDraft.js +4 -0
  145. package/lib/stores/editors/CubeExpressionFilterDraft.js.map +1 -1
  146. package/lib/stores/editors/CubeExtendDraft.d.ts +9 -0
  147. package/lib/stores/editors/CubeExtendDraft.d.ts.map +1 -1
  148. package/lib/stores/editors/CubeExtendDraft.js +26 -0
  149. package/lib/stores/editors/CubeExtendDraft.js.map +1 -1
  150. package/lib/stores/editors/CubeNodeDraftRegistry.d.ts.map +1 -1
  151. package/lib/stores/editors/CubeNodeDraftRegistry.js +6 -1
  152. package/lib/stores/editors/CubeNodeDraftRegistry.js.map +1 -1
  153. package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts +1 -0
  154. package/lib/stores/fixtures/CubeSalesDuckDbModel.d.ts.map +1 -1
  155. package/lib/stores/fixtures/CubeSalesDuckDbModel.js +8 -2
  156. package/lib/stores/fixtures/CubeSalesDuckDbModel.js.map +1 -1
  157. package/lib/stores/source-picker/CubeIngestTabState.d.ts +48 -14
  158. package/lib/stores/source-picker/CubeIngestTabState.d.ts.map +1 -1
  159. package/lib/stores/source-picker/CubeIngestTabState.js +159 -62
  160. package/lib/stores/source-picker/CubeIngestTabState.js.map +1 -1
  161. package/lib/stores/variant/CubeJson.d.ts +48 -0
  162. package/lib/stores/variant/CubeJson.d.ts.map +1 -0
  163. package/lib/stores/variant/CubeJson.js +207 -0
  164. package/lib/stores/variant/CubeJson.js.map +1 -0
  165. package/lib/stores/variant/CubeJsonExplorerState.d.ts +88 -0
  166. package/lib/stores/variant/CubeJsonExplorerState.d.ts.map +1 -0
  167. package/lib/stores/variant/CubeJsonExplorerState.js +297 -0
  168. package/lib/stores/variant/CubeJsonExplorerState.js.map +1 -0
  169. package/lib/stores/variant/CubeJsonFieldsState.d.ts +83 -0
  170. package/lib/stores/variant/CubeJsonFieldsState.d.ts.map +1 -0
  171. package/lib/stores/variant/CubeJsonFieldsState.js +207 -0
  172. package/lib/stores/variant/CubeJsonFieldsState.js.map +1 -0
  173. package/lib/stores/variant/CubeJsonOffers.d.ts +76 -0
  174. package/lib/stores/variant/CubeJsonOffers.d.ts.map +1 -0
  175. package/lib/stores/variant/CubeJsonOffers.js +250 -0
  176. package/lib/stores/variant/CubeJsonOffers.js.map +1 -0
  177. package/lib/stores/variant/CubeJsonParse.d.ts +28 -0
  178. package/lib/stores/variant/CubeJsonParse.d.ts.map +1 -0
  179. package/lib/stores/variant/CubeJsonParse.js +53 -0
  180. package/lib/stores/variant/CubeJsonParse.js.map +1 -0
  181. package/lib/stores/variant/CubeJsonSampling.d.ts +41 -0
  182. package/lib/stores/variant/CubeJsonSampling.d.ts.map +1 -0
  183. package/lib/stores/variant/CubeJsonSampling.js +59 -0
  184. package/lib/stores/variant/CubeJsonSampling.js.map +1 -0
  185. package/lib/stores/variant/CubeJsonShape.d.ts +87 -0
  186. package/lib/stores/variant/CubeJsonShape.d.ts.map +1 -0
  187. package/lib/stores/variant/CubeJsonShape.js +209 -0
  188. package/lib/stores/variant/CubeJsonShape.js.map +1 -0
  189. package/lib/stores/variant/CubeJsonViewerState.d.ts +33 -0
  190. package/lib/stores/variant/CubeJsonViewerState.d.ts.map +1 -0
  191. package/lib/stores/variant/CubeJsonViewerState.js +53 -0
  192. package/lib/stores/variant/CubeJsonViewerState.js.map +1 -0
  193. package/package.json +2 -2
  194. package/src/__lib__/LegendCubeHelpText.ts +4 -0
  195. package/src/__lib__/LegendCubeLabels.ts +60 -8
  196. package/src/__lib__/LegendCubeNavigation.ts +48 -0
  197. package/src/__lib__/LegendCubeTesting.ts +2 -0
  198. package/src/__lib__/LegendCubeTour.ts +173 -0
  199. package/src/__test-utils__/CubeExampleTestUtils.ts +119 -0
  200. package/src/__test-utils__/CubeVariantTestUtils.ts +103 -0
  201. package/src/components/CubeAddItems.tsx +2 -0
  202. package/src/components/CubeEditor.tsx +15 -0
  203. package/src/components/CubeFileMenu.tsx +2 -0
  204. package/src/components/CubeNodeIcon.tsx +2 -0
  205. package/src/components/canvas/CubeCanvas.tsx +17 -1
  206. package/src/components/canvas/CubeCanvasNode.tsx +7 -0
  207. package/src/components/dev-settings/CubeDevSettings.tsx +17 -2
  208. package/src/components/editors/CubeColumnPicker.tsx +3 -0
  209. package/src/components/editors/CubeExplodeEditor.tsx +207 -0
  210. package/src/components/editors/CubeExpressionFilterEditor.tsx +25 -8
  211. package/src/components/editors/CubeExtendEditor.tsx +32 -19
  212. package/src/components/editors/CubeJsonFieldsTree.tsx +316 -0
  213. package/src/components/editors/CubeNodeEditorRegistry.ts +3 -0
  214. package/src/components/grid/CubeGridRegion.tsx +21 -3
  215. package/src/components/grid/CubeGridValues.ts +8 -3
  216. package/src/components/grid/CubeJsonExplorerDialog.tsx +304 -0
  217. package/src/components/grid/CubeJsonViewerDialog.tsx +190 -0
  218. package/src/components/grid/CubeResultGrid.tsx +144 -2
  219. package/src/components/grid/CubeServerSideGrid.tsx +13 -0
  220. package/src/components/palette/CubePalette.tsx +9 -0
  221. package/src/components/source-picker/CubeIngestTab.tsx +62 -30
  222. package/src/components/tour/CubeTour.tsx +317 -0
  223. package/src/index.ts +7 -0
  224. package/src/stores/CubeEditorState.ts +36 -5
  225. package/src/stores/CubeExamples.ts +120 -2
  226. package/src/stores/CubeExamplesState.ts +9 -1
  227. package/src/stores/CubeGridQuickActions.ts +23 -12
  228. package/src/stores/CubePureText.ts +28 -0
  229. package/src/stores/CubeTourState.ts +116 -0
  230. package/src/stores/LegendCubeHost.ts +243 -0
  231. package/src/stores/editors/CubeExplodeDraft.ts +272 -0
  232. package/src/stores/editors/CubeExpressionFilterDraft.ts +4 -0
  233. package/src/stores/editors/CubeExtendDraft.ts +29 -0
  234. package/src/stores/editors/CubeNodeDraftRegistry.ts +7 -0
  235. package/src/stores/fixtures/CubeSalesDuckDbModel.ts +8 -2
  236. package/src/stores/source-picker/CubeIngestTabState.ts +253 -102
  237. package/src/stores/variant/CubeJson.ts +229 -0
  238. package/src/stores/variant/CubeJsonExplorerState.ts +378 -0
  239. package/src/stores/variant/CubeJsonFieldsState.ts +252 -0
  240. package/src/stores/variant/CubeJsonOffers.ts +359 -0
  241. package/src/stores/variant/CubeJsonParse.ts +75 -0
  242. package/src/stores/variant/CubeJsonSampling.ts +90 -0
  243. package/src/stores/variant/CubeJsonShape.ts +279 -0
  244. package/src/stores/variant/CubeJsonViewerState.ts +59 -0
  245. package/tsconfig.json +22 -1
@@ -11,8 +11,10 @@ the icon name the node's definition gives. Join and Filter are the examples to f
11
11
  (`CubePartitionEditor`, `CubePartitionDraft`), Difference for a two-input editor sharing Join's key rows
12
12
  (`CubeDifferenceEditor`, `CubeDifferenceDraft`), Extend for an editor that asks the engine before Apply
13
13
  (`CubeExtendEditor`, `CubeExtendDraft`), Filter by Expression for one condition the engine checks
14
- (`CubeExpressionFilterEditor`, `CubeExpressionFilterDraft`), and Pivot for an editor that loads values from the engine
15
- through `runCubeQuery` (`CubePivotEditor`, `CubePivotDraft`). A node type a database can't run is greyed, with the
14
+ (`CubeExpressionFilterEditor`, `CubeExpressionFilterDraft`), Pivot for an editor that loads values from the engine
15
+ through `runCubeQuery` (`CubePivotEditor`, `CubePivotDraft`), and Explode Array for one that reads a sample of a column
16
+ after the node's input, as Explore JSON does (`readCubeJsonSample`), greying its button with the database's reason
17
+ (`CubeExplodeEditor`, `CubeExplodeDraft`; PLAN §11.20). A node type a database can't run is greyed, with the
16
18
  reason, in the palette and the Add menus (`getCubeAddDatabaseProblem` in `CubeAddPlacement.ts`): nothing to add for a
17
19
  new type but the core's rule.
18
20
 
@@ -44,7 +44,7 @@ The question: which desk trades most, and how does each rank in its region?
44
44
  **Descending**; function **Rank** named **RANK_IN_REGION**. **Apply**, **F9**: Americas is Commodities 1, Rates 2,
45
45
  Equities Cash 3; Europe is Equity Derivatives 1, Credit 2; Asia is FX 1. _(`trades-desks-3-ranked`.)_
46
46
  5. **Add Items ▾ → Extend Columns**: name **NOTIONAL_MM**, expression `x | $x.TOTAL_NOTIONAL_USD / 1000000`,
47
- **Validate** (_"Float, can be empty"_), **Apply**, **F9**: Commodities 31,102,024.71 → **31.10**.
47
+ **Validate** (_"Float, optional"_), **Apply**, **F9**: Commodities 31,102,024.71 → **31.10**.
48
48
  _(`trades-desks-4-extended`.)_
49
49
  6. **Add Items ▾ → Filter by Expression**: `x | $x.NOTIONAL_MM > 25`, **Validate**, **Apply**, **F9**: **4 desks**
50
50
  (Commodities, Equity Derivatives, FX, Rates), their ranks unchanged. _(`trades-desks-5-final`.)_
package/docs/hosting.md CHANGED
@@ -1,9 +1,16 @@
1
1
  # Hosting the Cube page
2
2
 
3
- A Legend application hosts the page by giving it a `CubeHost` and contributing its shortcuts. Legend Query is the
4
- main host: `LegendQueryCubeHost` (`src/stores/cube/`), and the lazy route and page (`src/components/cube/`) of
5
- `@finos/legend-application-query`. Legend Studio hosts it too, from an ingest definition's editor (see
6
- [Legend Studio](#legend-studio-create-matview)).
3
+ A Legend application hosts the page by giving it a `CubeHost` and contributing its shortcuts. Three applications
4
+ host it today:
5
+
6
+ - **Legend Query**, at `/query/cube`: `LegendQueryCubeHost` (`src/stores/cube/`), and the lazy route and page
7
+ (`src/components/cube/`) of `@finos/legend-application-query`.
8
+ - **Legend Analytics**, at `/analytics/`, an application of its own: `createLegendAnalyticsCubeHost`
9
+ (`src/stores/`) and the page at its root (`src/components/`) of `@finos/legend-application-analytics`, with its
10
+ bootstrap and deployment (PLAN §11.19).
11
+ - **Legend Studio**, from an ingest definition's editor (see [Legend Studio](#legend-studio-create-matview)).
12
+
13
+ Legend Query and Legend Analytics build their hosts on one `LegendCubeHost` (below).
7
14
 
8
15
  ## The host
9
16
 
@@ -19,9 +26,21 @@ interface CubeHost {
19
26
  readonly serviceCatalog?: CubeServiceCatalog | undefined;
20
27
  /** False to leave out the Sample Data tab and the Examples, as Studio does */
21
28
  readonly offersSampleData?: boolean | undefined;
29
+ readonly engineClientSettings?: CubeEngineClientSettings | undefined;
22
30
  }
23
31
  ```
24
32
 
33
+ **A Legend deployment's host:** `new LegendCubeHost(applicationStore, config, parts?)` builds every part below from
34
+ a plain `LegendCubeHostConfig`, the deployment's servers: `engine` (a `CubeEngineConfig`), and `depotServerUrl`,
35
+ `lakehouseContractUrl`, `lakehousePlatformUrl`, `marketplaceServerUrl`, `marketplaceApplicationUrl`,
36
+ `marketplaceProductionParallelUrl`, `enterpriseStereotype` and `getPreferredEnvironment`, each only where the
37
+ deployment has it. It offers each source by the rules below (no lakehouse, no data products; no platform, no ingest
38
+ data sets; no depot, no projects), links data products to the marketplace of their deployment's class, and registers
39
+ every engine client with its `engineClientSettings`, which Dev Settings changes. Tests give an engine, a connection
40
+ explorer or a project catalog as `parts`. Legend Query passes `buildLegendQueryCubeHostConfig`, Legend Analytics
41
+ `buildLegendAnalyticsCubeHostConfig`; a host whose sources are its own builds its parts
42
+ with the functions below instead.
43
+
25
44
  - **The application store** gives the page its commands, user data, clipboard, theme, notifications and alerts, and
26
45
  its telemetry service, which Cube doesn't use yet: it sends no events. Cube keeps no auth or config of its own.
27
46
  - **The engine:** `buildCubeEngine(config, tracerService)` builds Legend's implementation of the `CubeEngine` port.
@@ -65,6 +84,9 @@ interface CubeHost {
65
84
  dialog's Project tab (PLAN §6.3). It reads nothing until the tab opens. Project cubes save the engine's pointer, so
66
85
  the engine must fetch from the same depot. Legend Query builds it from `depot.url`.
67
86
 
87
+ Legend Analytics mounts the page at its root with no flag: deploying the application is the opt-in. Its config takes
88
+ the keys below as Legend Query's does, with `depot` optional too, and only `engine` required.
89
+
68
90
  Legend Query mounts the Cube page at `/query/cube` only where its config turns on non-production features,
69
91
  since Cube is still a proof of concept: `"extensions": { "core": { "NonProductionFeatureFlag": true } }`. Without
70
92
  it, as in production, the address shows nothing. To see it locally, add it to the deployment's
@@ -117,8 +139,8 @@ run.
117
139
 
118
140
  ## Legend Studio: Create MatView
119
141
 
120
- An ingest definition's editor in Studio offers **Create MatView** where `NonProductionFeatureFlag` is on
121
- (`EmbeddedCubeState`, `src/stores/editor/embedded-cube/` of `@finos/legend-application-studio`). The page opens full
142
+ An ingest definition's editor in Studio offers **Create MatView** in every deployment: unlike Legend Query's
143
+ `/query/cube`, it doesn't depend on `NonProductionFeatureFlag` (`EmbeddedCubeState`, `src/stores/editor/embedded-cube/` of `@finos/legend-application-studio`). The page opens full
122
144
  screen over the editor, as the embedded query builder does, with `LegendStudioCubeHost`:
123
145
 
124
146
  - **The project:** `CubeHost.project` (`LegendStudioCubeWorkspace`) says the page reads one project's own sources. The
@@ -139,14 +161,16 @@ screen over the editor, as the embedded query builder does, with `LegendStudioCu
139
161
  which starts as the runtime's.
140
162
  - **Add MatView:** a button the host adds to the header (`headerActions` on `CubeEditor`) takes the step that runs
141
163
  as a lambda with no runtime and no row limit (`buildCubeRunningStepLambda`), asks for a name, a classification of
142
- its data and a primary key among the step's columns (`analysis.schemas` of the selected step), and appends a
164
+ its data and a primary key among the step's columns (`analysis.schemas` of the selected step), but the
165
+ milestoning columns a write mode adds (`LAKE_IN_ID`, `LAKE_DIGEST`, …), and appends a
143
166
  `FunctionSource` data set to the definition. Studio sees it as a local change; Lineage and View SQL work on it.
144
167
  - **Edit MatView:** the button's menu lists the definition's materialized views. Cube opens on one, read back into
145
168
  its steps (`initialLambda` on `CubeEditor`, Import Pure, PLAN §11.18): the host binds its sources as the source
146
169
  dialog would add them, and a banner says when Cube writes the view another way. The header button is then
147
170
  **Save MatView**, which replaces that view's lambda in place, keeping its name, place and other keys, and adding
148
171
  the empty lists the engine reads that it lacks. When the view has no classification of its data, or its primary
149
- key has a column the step no longer has, Save MatView first asks for them again in Add MatView's dialog.
172
+ key has a column the step no longer has or a milestoning one, Save MatView first asks for them again in Add
173
+ MatView's dialog.
150
174
  - **Loading:** Studio loads Cube with the dialog, on its first opening (`React.lazy`), so Cube's code stays out of
151
175
  Studio's main bundle.
152
176
 
@@ -176,6 +200,11 @@ The page registers the commands while it is open: F9 runs the query, and Ctrl+Z
176
200
  scans `../legend-*/src/**/*.tsx`. So Tailwind classes go in `.tsx` files only.
177
201
  - React Flow's stylesheet comes with the canvas. Load the page lazily, as Legend Query does, to keep it and the page's
178
202
  libraries out of the host's main bundle.
203
+ - In the legacy light theme, the legend-art components the page uses (dialogs, menus, form fields, inputs, tooltips,
204
+ notifications) take their light look from the application's own stylesheet: Legend Query's light mode
205
+ (`legend-application-query/style/light-mode.scss`), whose matching rules Legend Analytics copies into
206
+ `legend-application-analytics-bootstrap/style/light-mode.scss`, imported after every other style. A new host
207
+ defaulting to the light theme needs the same.
179
208
 
180
209
  ## The dev loop
181
210
 
@@ -184,7 +213,9 @@ The page registers the commands while it is open: F9 runs the query, and Ctrl+Z
184
213
  (`fixtures/legend-docker-setup/grammar-test-setup/grammar-test-setup-docker-compose.yml`). Check it with
185
214
  `curl -s localhost:6300/api/server/v1/info`.
186
215
  2. Run `yarn build` once: `yarn dev:ts` doesn't build the stylesheets.
187
- 3. Run `yarn dev:ts` and `yarn dev:query`, and open `http://localhost:9001/query/cube`.
216
+ 3. Run `yarn dev:ts` and `yarn dev:query`, and open `http://localhost:9001/query/cube`; or `yarn dev:analytics`, and
217
+ open `http://localhost:9009/analytics/` (run `yarn workspace @finos/legend-application-analytics-deployment setup`
218
+ once for its local config).
188
219
  4. Run `yarn workspace @finos/legend-cube-builder dev:sass` to rebuild the stylesheet as you change it (the root
189
220
  `yarn dev:ts` already rebuilds the TypeScript).
190
221
 
@@ -1 +1 @@
1
- {"version":3,"file":"LegendCubeHelpText.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendCubeHelpText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgCH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA+ChE,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,sEACqC,CAAC;AAEtE,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,SAAS,CAAC;AAEzC,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,kBAAkB,CAAC"}
1
+ {"version":3,"file":"LegendCubeHelpText.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendCubeHelpText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAiCH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkDhE,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,sEACqC,CAAC;AAEtE,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,SAAS,CAAC;AAEzC,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,kBAAkB,CAAC"}
@@ -13,7 +13,7 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { Concat, DataProductAccessPointSource, Difference, IngestDatasetSource, Distinct, Drop, ExpressionFilter, Extend, Filter, FunctionSource, Group, Join, Limit, Partition, Pivot, RelationalTableSource, Rename, Restrict, ServiceSource, Slice, Sort, UnknownNode, } from '@finos/legend-cube';
16
+ import { Concat, DataProductAccessPointSource, Difference, IngestDatasetSource, Distinct, Drop, ExpressionFilter, Explode, Extend, Filter, FunctionSource, Group, Join, Limit, Partition, Pivot, RelationalTableSource, Rename, Restrict, ServiceSource, Slice, Sort, UnknownNode, } from '@finos/legend-cube';
17
17
  // The node editor's help text, verbatim from the original (spec §17.9), but
18
18
  // Slice's, which counts rows from 0 and leaves the stop row out (D5, PLAN
19
19
  // §11.4), and Concat's, which matches columns by position (PLAN §11.5, Q8).
@@ -33,6 +33,8 @@ export const CUBE_NODE_HELP_TEXT = {
33
33
  [Distinct.TYPE]: 'Removes duplicate rows from the previous data set.',
34
34
  [Drop.TYPE]: 'Reduces the number of rows in the previous data set, removing the specified number of rows from the beginning of the data set.',
35
35
  [Extend.TYPE]: 'Extends outgoing data set with new columns produced by expressions.',
36
+ /** Added by Cube: the original has no JSON operations (PLAN §11.20) */
37
+ [Explode.TYPE]: 'Makes a row for each element of an array in a JSON (Variant) column of the previous data set, keeping its columns and adding the element as a new column. A row whose array is empty, or missing, is kept once, with an empty element.',
36
38
  [Filter.TYPE]: 'Reduces the number of rows in the previous data set, keeping only rows matching the specified criteria.',
37
39
  /** Added by Cube: the original has no filter by expression (PLAN §11.11) */
38
40
  [ExpressionFilter.TYPE]: 'Reduces the number of rows in the previous data set, keeping only rows for which the expression is true.',
@@ -1 +1 @@
1
- {"version":3,"file":"LegendCubeHelpText.js","sourceRoot":"","sources":["../../src/__lib__/LegendCubeHelpText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,MAAM,EACN,4BAA4B,EAC5B,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,IAAI,EACJ,gBAAgB,EAChB,MAAM,EACN,MAAM,EACN,cAAc,EACd,KAAK,EACL,IAAI,EACJ,KAAK,EACL,SAAS,EACT,KAAK,EACL,qBAAqB,EACrB,MAAM,EACN,QAAQ,EACR,aAAa,EACb,KAAK,EACL,IAAI,EACJ,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAE5B,4EAA4E;AAC5E,0EAA0E;AAC1E,4EAA4E;AAC5E,uCAAuC;AAEvC,MAAM,CAAC,MAAM,mBAAmB,GAAqC;IACnE,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,8CAA8C;IAC5E,4EAA4E;IAC5E,CAAC,cAAc,CAAC,IAAI,CAAC,EACnB,4GAA4G;IAC9G,yEAAyE;IACzE,CAAC,4BAA4B,CAAC,IAAI,CAAC,EACjC,+DAA+D;IACjE,4EAA4E;IAC5E,CAAC,mBAAmB,CAAC,IAAI,CAAC,EACxB,+DAA+D;IACjE,kGAAkG;IAClG,CAAC,aAAa,CAAC,IAAI,CAAC,EAClB,kFAAkF;IACpF,CAAC,MAAM,CAAC,IAAI,CAAC,EACX,uLAAuL;IACzL,CAAC,UAAU,CAAC,IAAI,CAAC,EACf,2EAA2E;IAC7E,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,oDAAoD;IACrE,CAAC,IAAI,CAAC,IAAI,CAAC,EACT,gIAAgI;IAClI,CAAC,MAAM,CAAC,IAAI,CAAC,EACX,qEAAqE;IACvE,CAAC,MAAM,CAAC,IAAI,CAAC,EACX,yGAAyG;IAC3G,4EAA4E;IAC5E,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACrB,0GAA0G;IAC5G,CAAC,KAAK,CAAC,IAAI,CAAC,EACV,uGAAuG;IACzG,2EAA2E;IAC3E,CAAC,KAAK,CAAC,IAAI,CAAC,EACV,uMAAuM;IACzM,CAAC,IAAI,CAAC,IAAI,CAAC,EACT,oEAAoE;IACtE,CAAC,SAAS,CAAC,IAAI,CAAC,EACd,4FAA4F;IAC9F,CAAC,KAAK,CAAC,IAAI,CAAC,EACV,+HAA+H;IACjI,CAAC,MAAM,CAAC,IAAI,CAAC,EACX,kEAAkE;IACpE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,4DAA4D;IAC7E,CAAC,KAAK,CAAC,IAAI,CAAC,EACV,8JAA8J;IAChK,CAAC,IAAI,CAAC,IAAI,CAAC,EACT,oHAAoH;IACtH,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,sDAAsD;CAC3E,CAAC;AAEF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAC9B,mEAAmE,CAAC;AAEtE,wEAAwE;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAEzC,sEAAsE;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"LegendCubeHelpText.js","sourceRoot":"","sources":["../../src/__lib__/LegendCubeHelpText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,MAAM,EACN,4BAA4B,EAC5B,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,IAAI,EACJ,gBAAgB,EAChB,OAAO,EACP,MAAM,EACN,MAAM,EACN,cAAc,EACd,KAAK,EACL,IAAI,EACJ,KAAK,EACL,SAAS,EACT,KAAK,EACL,qBAAqB,EACrB,MAAM,EACN,QAAQ,EACR,aAAa,EACb,KAAK,EACL,IAAI,EACJ,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAE5B,4EAA4E;AAC5E,0EAA0E;AAC1E,4EAA4E;AAC5E,uCAAuC;AAEvC,MAAM,CAAC,MAAM,mBAAmB,GAAqC;IACnE,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,8CAA8C;IAC5E,4EAA4E;IAC5E,CAAC,cAAc,CAAC,IAAI,CAAC,EACnB,4GAA4G;IAC9G,yEAAyE;IACzE,CAAC,4BAA4B,CAAC,IAAI,CAAC,EACjC,+DAA+D;IACjE,4EAA4E;IAC5E,CAAC,mBAAmB,CAAC,IAAI,CAAC,EACxB,+DAA+D;IACjE,kGAAkG;IAClG,CAAC,aAAa,CAAC,IAAI,CAAC,EAClB,kFAAkF;IACpF,CAAC,MAAM,CAAC,IAAI,CAAC,EACX,uLAAuL;IACzL,CAAC,UAAU,CAAC,IAAI,CAAC,EACf,2EAA2E;IAC7E,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,oDAAoD;IACrE,CAAC,IAAI,CAAC,IAAI,CAAC,EACT,gIAAgI;IAClI,CAAC,MAAM,CAAC,IAAI,CAAC,EACX,qEAAqE;IACvE,uEAAuE;IACvE,CAAC,OAAO,CAAC,IAAI,CAAC,EACZ,wOAAwO;IAC1O,CAAC,MAAM,CAAC,IAAI,CAAC,EACX,yGAAyG;IAC3G,4EAA4E;IAC5E,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACrB,0GAA0G;IAC5G,CAAC,KAAK,CAAC,IAAI,CAAC,EACV,uGAAuG;IACzG,2EAA2E;IAC3E,CAAC,KAAK,CAAC,IAAI,CAAC,EACV,uMAAuM;IACzM,CAAC,IAAI,CAAC,IAAI,CAAC,EACT,oEAAoE;IACtE,CAAC,SAAS,CAAC,IAAI,CAAC,EACd,4FAA4F;IAC9F,CAAC,KAAK,CAAC,IAAI,CAAC,EACV,+HAA+H;IACjI,CAAC,MAAM,CAAC,IAAI,CAAC,EACX,kEAAkE;IACpE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,4DAA4D;IAC7E,CAAC,KAAK,CAAC,IAAI,CAAC,EACV,8JAA8J;IAChK,CAAC,IAAI,CAAC,IAAI,CAAC,EACT,oHAAoH;IACtH,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,sDAAsD;CAC3E,CAAC;AAEF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAC9B,mEAAmE,CAAC;AAEtE,wEAAwE;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAEzC,sEAAsE;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC"}
@@ -80,9 +80,9 @@ export declare const CUBE_TABLE_FLAG_LABELS: Readonly<Record<CubeTableFlag, {
80
80
  export declare const getExactColumnTypeLabel: (column: SchemaColumn) => string;
81
81
  /**
82
82
  * A column's type as the editors show it: the kind of value, and whether it
83
- * can be empty, e.g. `Text, can be empty`; an enumeration, or a type Cube
84
- * doesn't know, by its name. The exact type (`getExactColumnTypeLabel`) is
85
- * on hover.
83
+ * is optional (can be empty), e.g. `Text, optional`; an enumeration, or a
84
+ * type Cube doesn't know, by its name. The exact type
85
+ * (`getExactColumnTypeLabel`) is on hover.
86
86
  */
87
87
  export declare const getColumnTypeLabel: (column: SchemaColumn) => string;
88
88
  /** Why Execute (and Show Pure) can't run, one reason a line, for a tooltip */
@@ -97,6 +97,11 @@ export declare const CUBE_SORT_COLUMN_DISABLED_REASON: {
97
97
  TAKEN: string;
98
98
  };
99
99
  /** Why the grid's quick actions (spec §12.4) can't be used */
100
+ /** Why a Variant cell's Open JSON can't be used (PLAN §11.20) */
101
+ export declare const CUBE_JSON_DISABLED_REASON: {
102
+ NOT_A_ROW: string;
103
+ EMPTY: string;
104
+ };
100
105
  export declare const CUBE_QUICK_ACTION_DISABLED_REASON: {
101
106
  STALE_ROWS: string;
102
107
  RUNNING: string;
@@ -180,6 +185,30 @@ export declare const PIVOT_VALUE_DISABLED_REASON: {
180
185
  };
181
186
  /** What the Pivot editor says (PLAN §11.12) */
182
187
  export declare const PIVOT_EDITOR_NOTES: readonly ["Each picked value becomes a column, named by the value, holding the aggregation of its rows; each combination of the row columns with a picked value becomes a row. Values not picked, and combinations holding only them, are left out.", "Load values lists the pivot column's values, each once, up to 100. An empty value can't be pivoted, nor one that can't name a column; of two values that differ only in case, one can be ticked, as some databases would mix up their columns.", "Pivot runs on Snowflake, Databricks, SingleStore and DuckDB; other databases, such as H2 and Postgres, can't run it."];
188
+ /** Why the Explode Array editor won't pick a column (PLAN §11.20) */
189
+ export declare const EXPLODE_COLUMN_DISABLED_REASON: {
190
+ /** a column of another type than Variant */
191
+ readonly NOT_JSON: "not JSON";
192
+ };
193
+ /** Under the Explode Array editor (PLAN §11.20) */
194
+ export declare const EXPLODE_EDITOR_NOTES: readonly ["One row per element of the array, the other columns repeated on each. A row whose array is empty, or that has none, is kept once, with an empty element.", "Find arrays reads the column's first values, as Explore JSON does, and lists the arrays they hold. Keys can be typed too: none when the column is the array.", "The element is JSON: Explore JSON, in its column menu, makes columns of its fields. Explode Array runs on Snowflake, Databricks, Postgres and DuckDB."];
195
+ /** Explore JSON's one row per element offer, as its tooltip explains it (PLAN §11.20) */
196
+ export declare const CUBE_JSON_EXPLODE_OFFER_TITLE = "Adds an Explode Array node: a row for each element, the element as a new JSON column. One array at a time.";
197
+ /** The tooltips of a Variant column's fields in an expression editor (PLAN §11.20, V.9) */
198
+ export declare const CUBE_JSON_FIELDS_TITLE: {
199
+ readonly OPEN: "Show its fields, read from its first values just before this step: listed in Runs; a field clicked is written into the expression";
200
+ readonly FORMS: "Other forms of the field: counts, lists, the first element, totals, as JSON";
201
+ readonly EXPLODE: "One row per element is a step of its own: add Explode Array from the palette, or from Explore JSON in the grid";
202
+ readonly READ_AGAIN: "Read the column again";
203
+ readonly EVERY_ROW: "Read every value of the column, for the shape of the whole column: listed in Runs, and it can be stopped";
204
+ };
205
+ /** What a Variant column's fields were read from, in an expression editor (PLAN §11.20, V.9) */
206
+ export declare const getCubeJsonFieldsStatus: (sample: {
207
+ readonly rows: number;
208
+ readonly complete: boolean;
209
+ }) => string;
210
+ /** Says that Find arrays found none in the values read (PLAN §11.20) */
211
+ export declare const EXPLODE_NO_ARRAYS_NOTICE = "No array in the values read: type the keys to one.";
183
212
  /** Says that Load values found no value to list (PLAN §11.12) */
184
213
  export declare const PIVOT_NO_VALUES_NOTICE = "The pivot column has no value to list: its rows are all empty, or there are none.";
185
214
  /** Says that the engine has more values than the Pivot editor lists (PLAN §11.12) */
@@ -224,9 +253,9 @@ export declare const EXPRESSION_FILTER_APPLY_DISABLED_REASON: Readonly<{
224
253
  */
225
254
  export declare const EXPRESSION_FILTER_PARENTHESES_HINT = "Put each comparison in parentheses: ($x.A > 1) && ($x.B > 3).";
226
255
  /** What the Filter by Expression editor says about conditions (PLAN §11.11) */
227
- export declare const EXPRESSION_FILTER_EDITOR_NOTES: readonly ["A condition of one row, written as in Query's text mode: x | $x.SHIPPED_DATE > $x.REQUIRED_DATE. The rows for which it is true are kept, in their order.", "Put each comparison in parentheses when you combine them: ($x.A > 1) && ($x.B > 3). In Pure, &&, || and ! bind as tightly as >, <, >= and <=; == binds tighter.", "A column that can be empty, compared directly ($x.A > 6), fails the condition when it is empty and passes its negation. After ->toOne(), an empty value fails both.", "Validate (F10) checks the condition with the engine and plans it for the cube's database.", "startsWith, endsWith and contains can't take a value with a backslash (\\) yet, nor, on DuckDB, one with % or _."];
256
+ export declare const EXPRESSION_FILTER_EDITOR_NOTES: readonly ["A condition of one row, written as in Query's text mode: x | $x.SHIPPED_DATE > $x.REQUIRED_DATE. The rows for which it is true are kept, in their order.", "Put each comparison in parentheses when you combine them: ($x.A > 1) && ($x.B > 3). In Pure, &&, || and ! bind as tightly as >, <, >= and <=; == binds tighter.", "An optional column, compared directly ($x.A > 6), fails the condition when it is empty and passes its negation. After ->toOne(), an empty value fails both.", "Validate (F10) checks the condition with the engine and plans it for the cube's database.", "startsWith, endsWith and contains can't take a value with a backslash (\\) yet, nor, on DuckDB, one with % or _.", "A JSON (Variant) column’s {} opens its fields, read from its first values just before this step: a field clicked is written into the condition."];
228
257
  /** The hint after an engine error on a column that can be empty, in arithmetic (PLAN §11.7) */
229
- export declare const EXTEND_TO_ONE_HINT = "A column that can be empty needs ->toOne() first, such as $x.QTY->toOne() + 1.";
258
+ export declare const EXTEND_TO_ONE_HINT = "An optional column needs ->toOne() first, such as $x.QTY->toOne() + 1.";
230
259
  /** The problem a database refusing an Extend's or a Filter by Expression's plan gives (PLAN §11.7, §11.11) */
231
260
  export declare const getExtendPlanProblem: (databaseType: string | undefined, detail: string) => string;
232
261
  /** Under the Rename editor's rows: the rule for new column names (PLAN §11.4) */
@@ -1 +1 @@
1
- {"version":3,"file":"LegendCubeLabels.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendCubeLabels.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LegendCubeLabels.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendCubeLabels.ts"],"names":[],"mappings":"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"}
@@ -110,11 +110,11 @@ const TYPE_FAMILY_LABELS = {
110
110
  };
111
111
  /**
112
112
  * A column's type as the editors show it: the kind of value, and whether it
113
- * can be empty, e.g. `Text, can be empty`; an enumeration, or a type Cube
114
- * doesn't know, by its name. The exact type (`getExactColumnTypeLabel`) is
115
- * on hover.
113
+ * is optional (can be empty), e.g. `Text, optional`; an enumeration, or a
114
+ * type Cube doesn't know, by its name. The exact type
115
+ * (`getExactColumnTypeLabel`) is on hover.
116
116
  */
117
- export const getColumnTypeLabel = (column) => `${TYPE_FAMILY_LABELS[column.type.family] ?? column.type.displayName}${column.nullable ? ', can be empty' : ''}`;
117
+ export const getColumnTypeLabel = (column) => `${TYPE_FAMILY_LABELS[column.type.family] ?? column.type.displayName}${column.nullable ? ', optional' : ''}`;
118
118
  const listColumns = (columns) => columns.map((column) => column.name).join(', ');
119
119
  /** Why Execute (and Show Pure) can't run, one reason a line, for a tooltip */
120
120
  export const formatDisabledReasons = (reasons) => reasons.map((reason) => `• ${reason}`).join('\n');
@@ -142,6 +142,11 @@ export const CUBE_SORT_COLUMN_DISABLED_REASON = {
142
142
  TAKEN: 'already sorted on',
143
143
  };
144
144
  /** Why the grid's quick actions (spec §12.4) can't be used */
145
+ /** Why a Variant cell's Open JSON can't be used (PLAN §11.20) */
146
+ export const CUBE_JSON_DISABLED_REASON = {
147
+ NOT_A_ROW: "A group row's cell holds no row's document.",
148
+ EMPTY: 'This cell is empty.',
149
+ };
145
150
  export const CUBE_QUICK_ACTION_DISABLED_REASON = {
146
151
  STALE_ROWS: 'Execute again: these rows are from an earlier version of the query.',
147
152
  RUNNING: 'Wait for the run to finish.',
@@ -243,6 +248,36 @@ export const PIVOT_EDITOR_NOTES = [
243
248
  "Load values lists the pivot column's values, each once, up to 100. An empty value can't be pivoted, nor one that can't name a column; of two values that differ only in case, one can be ticked, as some databases would mix up their columns.",
244
249
  "Pivot runs on Snowflake, Databricks, SingleStore and DuckDB; other databases, such as H2 and Postgres, can't run it.",
245
250
  ];
251
+ /** Why the Explode Array editor won't pick a column (PLAN §11.20) */
252
+ export const EXPLODE_COLUMN_DISABLED_REASON = {
253
+ /** a column of another type than Variant */
254
+ NOT_JSON: 'not JSON',
255
+ };
256
+ /** Under the Explode Array editor (PLAN §11.20) */
257
+ export const EXPLODE_EDITOR_NOTES = [
258
+ 'One row per element of the array, the other columns repeated on each. A row whose array is empty, or that has none, is kept once, with an empty element.',
259
+ "Find arrays reads the column's first values, as Explore JSON does, and lists the arrays they hold. Keys can be typed too: none when the column is the array.",
260
+ 'The element is JSON: Explore JSON, in its column menu, makes columns of its fields. Explode Array runs on Snowflake, Databricks, Postgres and DuckDB.',
261
+ ];
262
+ /** Explore JSON's one row per element offer, as its tooltip explains it (PLAN §11.20) */
263
+ export const CUBE_JSON_EXPLODE_OFFER_TITLE = 'Adds an Explode Array node: a row for each element, the element as a new JSON column. One array at a time.';
264
+ /** The tooltips of a Variant column's fields in an expression editor (PLAN §11.20, V.9) */
265
+ export const CUBE_JSON_FIELDS_TITLE = {
266
+ OPEN: 'Show its fields, read from its first values just before this step: listed in Runs; a field clicked is written into the expression',
267
+ FORMS: 'Other forms of the field: counts, lists, the first element, totals, as JSON',
268
+ EXPLODE: 'One row per element is a step of its own: add Explode Array from the palette, or from Explore JSON in the grid',
269
+ READ_AGAIN: 'Read the column again',
270
+ EVERY_ROW: 'Read every value of the column, for the shape of the whole column: listed in Runs, and it can be stopped',
271
+ };
272
+ /** What a Variant column's fields were read from, in an expression editor (PLAN §11.20, V.9) */
273
+ export const getCubeJsonFieldsStatus = (sample) => {
274
+ const count = sample.rows.toLocaleString('en-US');
275
+ return sample.complete
276
+ ? `All ${count} values read, just before this step`
277
+ : `The first ${count} values read, just before this step`;
278
+ };
279
+ /** Says that Find arrays found none in the values read (PLAN §11.20) */
280
+ export const EXPLODE_NO_ARRAYS_NOTICE = 'No array in the values read: type the keys to one.';
246
281
  /** Says that Load values found no value to list (PLAN §11.12) */
247
282
  export const PIVOT_NO_VALUES_NOTICE = 'The pivot column has no value to list: its rows are all empty, or there are none.';
248
283
  /** Says that the engine has more values than the Pivot editor lists (PLAN §11.12) */
@@ -257,7 +292,7 @@ export const PARTITION_EDITOR_NOTES = [
257
292
  "Rank, Dense Rank and Row Number need a sort column. Tied rows share a rank: Rank then skips numbers and Dense Rank doesn't. Row Number numbers every row, and rows tied on this node's sort columns get their numbers in no set order: add a sort column that tells them apart, such as an id, for a stable top N.",
258
293
  'NTile, Percent Rank and Cumulative Distribution need a sort column too. NTile splits each partition into buckets of near-equal size, numbered from 1 in the sort order; Percent Rank and Cumulative Distribution give each row its place in its partition, from 0 to 1.',
259
294
  "Lag and Lead read a column from the row so many rows before or after in the sort order, and are empty at the partition's edges. First and Last read it from the partition's first and last rows, the same on every row. They need a sort column, and rows tied on it may give any of them.",
260
- "On ClickHouse, First and Last skip empty values, and Lag and Lead show a column's default, such as 0, at the partition's edges instead of empty, unless the column can be empty there.",
295
+ "On ClickHouse, First and Last skip empty values, and Lag and Lead show a column's default, such as 0, at the partition's edges instead of empty, unless the column is optional there.",
261
296
  "Their sort columns also make this node's other functions run. For totals over the whole partition, add another Apply Window Functions without sort columns.",
262
297
  'Empty sort values come last when ascending and first when descending on H2; other databases may differ.',
263
298
  "A Sort before this node doesn't order the window: its sort columns do. The rows keep the order they came in.",
@@ -280,8 +315,9 @@ export const DIFFERENCE_EDITOR_NOTES = [
280
315
  /** What the Extend editor says about its expressions (PLAN §11.7) */
281
316
  export const EXTEND_EDITOR_NOTES = [
282
317
  'Write each expression as a lambda of one row, such as x | $x.PRICE * $x.QTY: $x.PRICE reads the column PRICE. A column can use the new columns above it.',
283
- 'A column that can be empty needs ->toOne() before arithmetic, such as $x.QTY->toOne() * 2; an empty value still gives an empty result. Every new column can be empty.',
318
+ 'An optional column needs ->toOne() before arithmetic, such as $x.QTY->toOne() * 2; an empty value still gives an empty result. Every new column is optional.',
284
319
  "Validate (F10) checks the expressions with the engine, types them, and plans them for this cube's database: some functions type, but not every database runs them.",
320
+ 'A JSON (Variant) column’s {} opens its fields, read from its first values just before this step: a field clicked is written into the expression last used, and + column adds it as a new column.',
285
321
  ];
286
322
  /** Why the Extend editor's Apply waits (PLAN §11.7) */
287
323
  export const EXTEND_APPLY_DISABLED_REASON = Object.freeze({
@@ -309,12 +345,13 @@ export const EXPRESSION_FILTER_PARENTHESES_HINT = 'Put each comparison in parent
309
345
  export const EXPRESSION_FILTER_EDITOR_NOTES = [
310
346
  "A condition of one row, written as in Query's text mode: x | $x.SHIPPED_DATE > $x.REQUIRED_DATE. The rows for which it is true are kept, in their order.",
311
347
  'Put each comparison in parentheses when you combine them: ($x.A > 1) && ($x.B > 3). In Pure, &&, || and ! bind as tightly as >, <, >= and <=; == binds tighter.',
312
- 'A column that can be empty, compared directly ($x.A > 6), fails the condition when it is empty and passes its negation. After ->toOne(), an empty value fails both.',
348
+ 'An optional column, compared directly ($x.A > 6), fails the condition when it is empty and passes its negation. After ->toOne(), an empty value fails both.',
313
349
  "Validate (F10) checks the condition with the engine and plans it for the cube's database.",
314
350
  "startsWith, endsWith and contains can't take a value with a backslash (\\) yet, nor, on DuckDB, one with % or _.",
351
+ 'A JSON (Variant) column’s {} opens its fields, read from its first values just before this step: a field clicked is written into the condition.',
315
352
  ];
316
353
  /** The hint after an engine error on a column that can be empty, in arithmetic (PLAN §11.7) */
317
- export const EXTEND_TO_ONE_HINT = 'A column that can be empty needs ->toOne() first, such as $x.QTY->toOne() + 1.';
354
+ export const EXTEND_TO_ONE_HINT = 'An optional column needs ->toOne() first, such as $x.QTY->toOne() + 1.';
318
355
  /** The problem a database refusing an Extend's or a Filter by Expression's plan gives (PLAN §11.7, §11.11) */
319
356
  export const getExtendPlanProblem = (databaseType, detail) => `${databaseType ? `${databaseType} can't run it` : "The database can't run it"}: ${detail}`;
320
357
  /** Under the Rename editor's rows: the rule for new column names (PLAN §11.4) */
@@ -1 +1 @@
1
- {"version":3,"file":"LegendCubeLabels.js","sourceRoot":"","sources":["../../src/__lib__/LegendCubeLabels.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LegendCubeLabels.js","sourceRoot":"","sources":["../../src/__lib__/LegendCubeLabels.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
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
+ * A deployed data product's page in Legend Marketplace, at its access point
18
+ * group when one is given, as Legend Query links to it (PLAN §11.18)
19
+ *
20
+ * @external_application_navigation This depends on Legend Marketplace routing and is hardcoded so it's potentially brittle
21
+ */
22
+ export declare const EXTERNAL_APPLICATION_NAVIGATION__generateCubeMarketplaceDataProductUrl: (marketplaceApplicationUrl: string, dataProductId: string, deploymentId: string, accessPointGroupId?: string | undefined) => string;
23
+ //# sourceMappingURL=LegendCubeNavigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LegendCubeNavigation.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendCubeNavigation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgBH;;;;;GAKG;AACH,eAAO,MAAM,sEAAsE,GAE/E,2BAA2B,MAAM,EACjC,eAAe,MAAM,EACrB,cAAc,MAAM,EACpB,qBAAqB,MAAM,GAAG,SAAS,KACtC,MAKC,CAAC"}
@@ -0,0 +1,33 @@
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
+ * The anchor Legend Marketplace's data product viewer gives an access point
18
+ * group, which it reads from the URL hash on load: as Legend Query writes it
19
+ * (`EXTERNAL_APPLICATION_NAVIGATION__generateMarketplaceDataProductUrl`)
20
+ *
21
+ * @external_application_navigation This depends on Legend Marketplace routing and is hardcoded so it's potentially brittle
22
+ */
23
+ const EXTERNAL_APPLICATION_NAVIGATION__generateCubeAccessPointGroupAnchor = (accessPointGroupId) => encodeURIComponent(`apg-${accessPointGroupId}`.trim().toLowerCase().replace(/\s+/gu, '-'));
24
+ /**
25
+ * A deployed data product's page in Legend Marketplace, at its access point
26
+ * group when one is given, as Legend Query links to it (PLAN §11.18)
27
+ *
28
+ * @external_application_navigation This depends on Legend Marketplace routing and is hardcoded so it's potentially brittle
29
+ */
30
+ export const EXTERNAL_APPLICATION_NAVIGATION__generateCubeMarketplaceDataProductUrl = (marketplaceApplicationUrl, dataProductId, deploymentId, accessPointGroupId) => `${marketplaceApplicationUrl}/dataProduct/deployed/${dataProductId}/${deploymentId}${accessPointGroupId
31
+ ? `#${EXTERNAL_APPLICATION_NAVIGATION__generateCubeAccessPointGroupAnchor(accessPointGroupId)}`
32
+ : ''}`;
33
+ //# sourceMappingURL=LegendCubeNavigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LegendCubeNavigation.js","sourceRoot":"","sources":["../../src/__lib__/LegendCubeNavigation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;;GAMG;AACH,MAAM,mEAAmE,GAAG,CAC1E,kBAA0B,EAClB,EAAE,CACV,kBAAkB,CAChB,OAAO,kBAAkB,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CACvE,CAAC;AAEJ;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sEAAsE,GACjF,CACE,yBAAiC,EACjC,aAAqB,EACrB,YAAoB,EACpB,kBAAuC,EAC/B,EAAE,CACV,GAAG,yBAAyB,yBAAyB,aAAa,IAAI,YAAY,GAChF,kBAAkB;IAChB,CAAC,CAAC,IAAI,mEAAmE,CAAC,kBAAkB,CAAC,EAAE;IAC/F,CAAC,CAAC,EACN,EAAE,CAAC"}
@@ -36,6 +36,8 @@ export declare enum LEGEND_CUBE_TEST_ID {
36
36
  DRILLDOWN_SETTINGS = "legend-cube__drilldown-settings",
37
37
  GRID_TOOLBAR = "legend-cube__grid-toolbar",
38
38
  EXECUTION_ERROR = "legend-cube__execution-error",
39
- SQL_PANEL = "legend-cube__sql-panel"
39
+ SQL_PANEL = "legend-cube__sql-panel",
40
+ JSON_VIEWER = "legend-cube__json-viewer",
41
+ JSON_EXPLORER = "legend-cube__json-explorer"
40
42
  }
41
43
  //# sourceMappingURL=LegendCubeTesting.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LegendCubeTesting.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendCubeTesting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,oBAAY,mBAAmB;IAC7B,kBAAkB,oCAAoC;IACtD,MAAM,wBAAwB;IAC9B,YAAY,8BAA8B;IAC1C,WAAW,6BAA6B;IACxC,MAAM,wBAAwB;IAC9B,WAAW,6BAA6B;IACxC,iBAAiB,mCAAmC;IACpD,OAAO,yBAAyB;IAChC,YAAY,8BAA8B;IAC1C,WAAW,6BAA6B;IACxC,aAAa,+BAA+B;IAC5C,kBAAkB,oCAAoC;IACtD,aAAa,+BAA+B;IAC5C,WAAW,6BAA6B;IACxC,gBAAgB,kCAAkC;IAClD,WAAW,6BAA6B;IACxC,aAAa,+BAA+B;IAC5C,SAAS,2BAA2B;IACpC,aAAa,+BAA+B;IAC5C,kBAAkB,oCAAoC;IACtD,YAAY,8BAA8B;IAC1C,eAAe,iCAAiC;IAChD,SAAS,2BAA2B;CACrC"}
1
+ {"version":3,"file":"LegendCubeTesting.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendCubeTesting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,oBAAY,mBAAmB;IAC7B,kBAAkB,oCAAoC;IACtD,MAAM,wBAAwB;IAC9B,YAAY,8BAA8B;IAC1C,WAAW,6BAA6B;IACxC,MAAM,wBAAwB;IAC9B,WAAW,6BAA6B;IACxC,iBAAiB,mCAAmC;IACpD,OAAO,yBAAyB;IAChC,YAAY,8BAA8B;IAC1C,WAAW,6BAA6B;IACxC,aAAa,+BAA+B;IAC5C,kBAAkB,oCAAoC;IACtD,aAAa,+BAA+B;IAC5C,WAAW,6BAA6B;IACxC,gBAAgB,kCAAkC;IAClD,WAAW,6BAA6B;IACxC,aAAa,+BAA+B;IAC5C,SAAS,2BAA2B;IACpC,aAAa,+BAA+B;IAC5C,kBAAkB,oCAAoC;IACtD,YAAY,8BAA8B;IAC1C,eAAe,iCAAiC;IAChD,SAAS,2BAA2B;IACpC,WAAW,6BAA6B;IACxC,aAAa,+BAA+B;CAC7C"}
@@ -38,5 +38,7 @@ export var LEGEND_CUBE_TEST_ID;
38
38
  LEGEND_CUBE_TEST_ID["GRID_TOOLBAR"] = "legend-cube__grid-toolbar";
39
39
  LEGEND_CUBE_TEST_ID["EXECUTION_ERROR"] = "legend-cube__execution-error";
40
40
  LEGEND_CUBE_TEST_ID["SQL_PANEL"] = "legend-cube__sql-panel";
41
+ LEGEND_CUBE_TEST_ID["JSON_VIEWER"] = "legend-cube__json-viewer";
42
+ LEGEND_CUBE_TEST_ID["JSON_EXPLORER"] = "legend-cube__json-explorer";
41
43
  })(LEGEND_CUBE_TEST_ID || (LEGEND_CUBE_TEST_ID = {}));
42
44
  //# sourceMappingURL=LegendCubeTesting.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LegendCubeTesting.js","sourceRoot":"","sources":["../../src/__lib__/LegendCubeTesting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAN,IAAY,mBAwBX;AAxBD,WAAY,mBAAmB;IAC7B,6EAAsD,CAAA;IACtD,qDAA8B,CAAA;IAC9B,iEAA0C,CAAA;IAC1C,+DAAwC,CAAA;IACxC,qDAA8B,CAAA;IAC9B,+DAAwC,CAAA;IACxC,2EAAoD,CAAA;IACpD,uDAAgC,CAAA;IAChC,iEAA0C,CAAA;IAC1C,+DAAwC,CAAA;IACxC,mEAA4C,CAAA;IAC5C,6EAAsD,CAAA;IACtD,mEAA4C,CAAA;IAC5C,+DAAwC,CAAA;IACxC,yEAAkD,CAAA;IAClD,+DAAwC,CAAA;IACxC,mEAA4C,CAAA;IAC5C,2DAAoC,CAAA;IACpC,mEAA4C,CAAA;IAC5C,6EAAsD,CAAA;IACtD,iEAA0C,CAAA;IAC1C,uEAAgD,CAAA;IAChD,2DAAoC,CAAA;AACtC,CAAC,EAxBW,mBAAmB,KAAnB,mBAAmB,QAwB9B"}
1
+ {"version":3,"file":"LegendCubeTesting.js","sourceRoot":"","sources":["../../src/__lib__/LegendCubeTesting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAN,IAAY,mBA0BX;AA1BD,WAAY,mBAAmB;IAC7B,6EAAsD,CAAA;IACtD,qDAA8B,CAAA;IAC9B,iEAA0C,CAAA;IAC1C,+DAAwC,CAAA;IACxC,qDAA8B,CAAA;IAC9B,+DAAwC,CAAA;IACxC,2EAAoD,CAAA;IACpD,uDAAgC,CAAA;IAChC,iEAA0C,CAAA;IAC1C,+DAAwC,CAAA;IACxC,mEAA4C,CAAA;IAC5C,6EAAsD,CAAA;IACtD,mEAA4C,CAAA;IAC5C,+DAAwC,CAAA;IACxC,yEAAkD,CAAA;IAClD,+DAAwC,CAAA;IACxC,mEAA4C,CAAA;IAC5C,2DAAoC,CAAA;IACpC,mEAA4C,CAAA;IAC5C,6EAAsD,CAAA;IACtD,iEAA0C,CAAA;IAC1C,uEAAgD,CAAA;IAChD,2DAAoC,CAAA;IACpC,+DAAwC,CAAA;IACxC,mEAA4C,CAAA;AAC9C,CAAC,EA1BW,mBAAmB,KAAnB,mBAAmB,QA0B9B"}
@@ -0,0 +1,62 @@
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
+ /** The attribute that marks a control as a tour step's */
17
+ export declare const CUBE_TOUR_ANCHOR_ATTRIBUTE = "data-cube-tour";
18
+ export declare enum CUBE_TOUR_ANCHOR {
19
+ SOURCES = "sources",
20
+ STEPS = "steps",
21
+ CANVAS = "canvas",
22
+ RUNNING_STEP = "running-step",
23
+ EXECUTE = "execute",
24
+ GRID_MODE = "grid-mode",
25
+ RESULTS = "results",
26
+ SHOW_SQL = "show-sql",
27
+ RUNS = "runs",
28
+ CUBE_MENU = "cube-menu",
29
+ ADD_ITEMS = "add-items",
30
+ EXAMPLES = "examples",
31
+ VIEW = "view",
32
+ PAGE_MENU = "page-menu"
33
+ }
34
+ /** The props that mark a control as a tour step's */
35
+ export declare const cubeTourAnchor: (anchor: CUBE_TOUR_ANCHOR) => {
36
+ [CUBE_TOUR_ANCHOR_ATTRIBUTE]: string;
37
+ };
38
+ /** Where a step's card sits beside its controls */
39
+ export type CubeTourPlacement = 'top' | 'bottom' | 'left' | 'right';
40
+ export interface CubeTourStep {
41
+ readonly title: string;
42
+ readonly text: string;
43
+ /** The controls it points at; none for a card in the middle of the page */
44
+ readonly anchor?: CUBE_TOUR_ANCHOR | undefined;
45
+ readonly placement?: CubeTourPlacement | undefined;
46
+ }
47
+ /** The example the tour opens on an empty cube, where examples are offered */
48
+ export declare const CUBE_TOUR_EXAMPLE_ID = "northwind-top-customers";
49
+ export declare const CUBE_EDITOR_TOUR: readonly CubeTourStep[];
50
+ export declare const CUBE_TOUR_LABEL: {
51
+ START: string;
52
+ /** The empty canvas's offer */
53
+ OFFER: string;
54
+ NEXT: string;
55
+ BACK: string;
56
+ DONE: string;
57
+ END: string;
58
+ progress: (step: number, steps: number) => string;
59
+ /** Added to the first step when the tour opened its example */
60
+ EXAMPLE_OPENED: string;
61
+ };
62
+ //# sourceMappingURL=LegendCubeTour.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LegendCubeTour.d.ts","sourceRoot":"","sources":["../../src/__lib__/LegendCubeTour.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAcH,0DAA0D;AAC1D,eAAO,MAAM,0BAA0B,mBAAmB,CAAC;AAE3D,oBAAY,gBAAgB;IAC1B,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,YAAY,iBAAiB;IAC7B,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,SAAS,cAAc;CACxB;AAED,qDAAqD;AACrD,eAAO,MAAM,cAAc,GACzB,QAAQ,gBAAgB,KACvB;IAAE,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAA;CAEvC,CAAC;AAEH,mDAAmD;AACnD,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACpD;AAED,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAE9D,eAAO,MAAM,gBAAgB,EAAE,SAAS,YAAY,EAyFlD,CAAC;AAEH,eAAO,MAAM,eAAe;;IAE1B,+BAA+B;;;;;;qBAMd,MAAM,SAAS,MAAM,KAAG,MAAM;IAC/C,+DAA+D;;CAGhE,CAAC"}