@sqlrooms/mosaic 0.29.0-rc.2 → 0.29.0-rc.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.
Files changed (454) hide show
  1. package/README.md +209 -0
  2. package/dist/MosaicChartBuilder.d.ts +44 -13
  3. package/dist/MosaicChartBuilder.d.ts.map +1 -1
  4. package/dist/MosaicChartBuilder.js +22 -30
  5. package/dist/MosaicChartBuilder.js.map +1 -1
  6. package/dist/MosaicSlice.d.ts +28 -10
  7. package/dist/MosaicSlice.d.ts.map +1 -1
  8. package/dist/MosaicSlice.js +77 -11
  9. package/dist/MosaicSlice.js.map +1 -1
  10. package/dist/ResponsivePlot.d.ts +23 -0
  11. package/dist/ResponsivePlot.d.ts.map +1 -0
  12. package/dist/ResponsivePlot.js +43 -0
  13. package/dist/ResponsivePlot.js.map +1 -0
  14. package/dist/VgPlotChart.d.ts +18 -2
  15. package/dist/VgPlotChart.d.ts.map +1 -1
  16. package/dist/VgPlotChart.js +112 -26
  17. package/dist/VgPlotChart.js.map +1 -1
  18. package/dist/boxplot/BoxPlotClient.d.ts +58 -0
  19. package/dist/boxplot/BoxPlotClient.d.ts.map +1 -0
  20. package/dist/boxplot/BoxPlotClient.js +264 -0
  21. package/dist/boxplot/BoxPlotClient.js.map +1 -0
  22. package/dist/chart/MosaicDashboardChart.d.ts +14 -0
  23. package/dist/chart/MosaicDashboardChart.d.ts.map +1 -0
  24. package/dist/chart/MosaicDashboardChart.js +21 -0
  25. package/dist/chart/MosaicDashboardChart.js.map +1 -0
  26. package/dist/chart/MosaicDashboardChartContent.d.ts +16 -0
  27. package/dist/chart/MosaicDashboardChartContent.d.ts.map +1 -0
  28. package/dist/chart/MosaicDashboardChartContent.js +18 -0
  29. package/dist/chart/MosaicDashboardChartContent.js.map +1 -0
  30. package/dist/chart/MosaicDashboardChartHeaderActions.d.ts +4 -0
  31. package/dist/chart/MosaicDashboardChartHeaderActions.d.ts.map +1 -0
  32. package/dist/chart/MosaicDashboardChartHeaderActions.js +16 -0
  33. package/dist/chart/MosaicDashboardChartHeaderActions.js.map +1 -0
  34. package/dist/chart/MosaicDashboardChartRenderer.d.ts +3 -0
  35. package/dist/chart/MosaicDashboardChartRenderer.d.ts.map +1 -0
  36. package/dist/chart/MosaicDashboardChartRenderer.js +31 -0
  37. package/dist/chart/MosaicDashboardChartRenderer.js.map +1 -0
  38. package/dist/chart/MosaicDashboardComponentChart.d.ts +14 -0
  39. package/dist/chart/MosaicDashboardComponentChart.d.ts.map +1 -0
  40. package/dist/chart/MosaicDashboardComponentChart.js +11 -0
  41. package/dist/chart/MosaicDashboardComponentChart.js.map +1 -0
  42. package/dist/chart/MosaicDashboardVgPlotChart.d.ts +10 -0
  43. package/dist/chart/MosaicDashboardVgPlotChart.d.ts.map +1 -0
  44. package/dist/chart/MosaicDashboardVgPlotChart.js +10 -0
  45. package/dist/chart/MosaicDashboardVgPlotChart.js.map +1 -0
  46. package/dist/chart/MosaicDashboardVgPlotError.d.ts +8 -0
  47. package/dist/chart/MosaicDashboardVgPlotError.d.ts.map +1 -0
  48. package/dist/chart/MosaicDashboardVgPlotError.js +11 -0
  49. package/dist/chart/MosaicDashboardVgPlotError.js.map +1 -0
  50. package/dist/chart/chart-settings/ChartSettings.d.ts +44 -0
  51. package/dist/chart/chart-settings/ChartSettings.d.ts.map +1 -0
  52. package/dist/chart/chart-settings/ChartSettings.js +71 -0
  53. package/dist/chart/chart-settings/ChartSettings.js.map +1 -0
  54. package/dist/chart/chart-settings/ChartSettingsContent.d.ts +13 -0
  55. package/dist/chart/chart-settings/ChartSettingsContent.d.ts.map +1 -0
  56. package/dist/chart/chart-settings/ChartSettingsContent.js +18 -0
  57. package/dist/chart/chart-settings/ChartSettingsContent.js.map +1 -0
  58. package/dist/chart/chart-settings/ChartSettingsContext.d.ts +27 -0
  59. package/dist/chart/chart-settings/ChartSettingsContext.d.ts.map +1 -0
  60. package/dist/chart/chart-settings/ChartSettingsContext.js +35 -0
  61. package/dist/chart/chart-settings/ChartSettingsContext.js.map +1 -0
  62. package/dist/chart/chart-settings/ChartSettingsPanel.d.ts +14 -0
  63. package/dist/chart/chart-settings/ChartSettingsPanel.d.ts.map +1 -0
  64. package/dist/chart/chart-settings/ChartSettingsPanel.js +17 -0
  65. package/dist/chart/chart-settings/ChartSettingsPanel.js.map +1 -0
  66. package/dist/chart/chart-settings/ChartSpecViewerPanel.d.ts +9 -0
  67. package/dist/chart/chart-settings/ChartSpecViewerPanel.d.ts.map +1 -0
  68. package/dist/chart/chart-settings/ChartSpecViewerPanel.js +11 -0
  69. package/dist/chart/chart-settings/ChartSpecViewerPanel.js.map +1 -0
  70. package/dist/chart/chart-settings/ChartTypeSelector.d.ts +9 -0
  71. package/dist/chart/chart-settings/ChartTypeSelector.d.ts.map +1 -0
  72. package/dist/chart/chart-settings/ChartTypeSelector.js +16 -0
  73. package/dist/chart/chart-settings/ChartTypeSelector.js.map +1 -0
  74. package/dist/chart/chart-settings/useTableColumns.d.ts +3 -0
  75. package/dist/chart/chart-settings/useTableColumns.d.ts.map +1 -0
  76. package/dist/chart/chart-settings/useTableColumns.js +12 -0
  77. package/dist/chart/chart-settings/useTableColumns.js.map +1 -0
  78. package/dist/chart/useBrushSelectionParams.d.ts +3 -0
  79. package/dist/chart/useBrushSelectionParams.d.ts.map +1 -0
  80. package/dist/chart/useBrushSelectionParams.js +16 -0
  81. package/dist/chart/useBrushSelectionParams.js.map +1 -0
  82. package/dist/chart/useChartRetainer.d.ts +3 -0
  83. package/dist/chart/useChartRetainer.d.ts.map +1 -0
  84. package/dist/chart/useChartRetainer.js +11 -0
  85. package/dist/chart/useChartRetainer.js.map +1 -0
  86. package/dist/chart/useGenerateSpec.d.ts +13 -0
  87. package/dist/chart/useGenerateSpec.d.ts.map +1 -0
  88. package/dist/chart/useGenerateSpec.js +32 -0
  89. package/dist/chart/useGenerateSpec.js.map +1 -0
  90. package/dist/chart-builders/AggregationSelector.d.ts +11 -0
  91. package/dist/chart-builders/AggregationSelector.d.ts.map +1 -0
  92. package/dist/chart-builders/AggregationSelector.js +9 -0
  93. package/dist/chart-builders/AggregationSelector.js.map +1 -0
  94. package/dist/chart-builders/ChartBuilderActions.d.ts +6 -0
  95. package/dist/chart-builders/ChartBuilderActions.d.ts.map +1 -0
  96. package/dist/chart-builders/ChartBuilderActions.js +36 -0
  97. package/dist/chart-builders/ChartBuilderActions.js.map +1 -0
  98. package/dist/chart-builders/ChartBuilderContent.d.ts +12 -12
  99. package/dist/chart-builders/ChartBuilderContent.d.ts.map +1 -1
  100. package/dist/chart-builders/ChartBuilderContent.js +21 -52
  101. package/dist/chart-builders/ChartBuilderContent.js.map +1 -1
  102. package/dist/chart-builders/ChartBuilderContext.d.ts +8 -4
  103. package/dist/chart-builders/ChartBuilderContext.d.ts.map +1 -1
  104. package/dist/chart-builders/ChartBuilderContext.js +5 -0
  105. package/dist/chart-builders/ChartBuilderContext.js.map +1 -1
  106. package/dist/chart-builders/ChartBuilderDialog.d.ts +30 -8
  107. package/dist/chart-builders/ChartBuilderDialog.d.ts.map +1 -1
  108. package/dist/chart-builders/ChartBuilderDialog.js +25 -10
  109. package/dist/chart-builders/ChartBuilderDialog.js.map +1 -1
  110. package/dist/chart-builders/ChartBuilderFields.d.ts +6 -0
  111. package/dist/chart-builders/ChartBuilderFields.d.ts.map +1 -0
  112. package/dist/chart-builders/ChartBuilderFields.js +39 -0
  113. package/dist/chart-builders/ChartBuilderFields.js.map +1 -0
  114. package/dist/chart-builders/ChartBuilderRoot.d.ts +25 -0
  115. package/dist/chart-builders/ChartBuilderRoot.d.ts.map +1 -0
  116. package/dist/chart-builders/ChartBuilderRoot.js +42 -0
  117. package/dist/chart-builders/ChartBuilderRoot.js.map +1 -0
  118. package/dist/chart-builders/ChartBuilderTypeGrid.d.ts +7 -0
  119. package/dist/chart-builders/ChartBuilderTypeGrid.d.ts.map +1 -0
  120. package/dist/chart-builders/ChartBuilderTypeGrid.js +23 -0
  121. package/dist/chart-builders/ChartBuilderTypeGrid.js.map +1 -0
  122. package/dist/chart-builders/ColumnSelector.d.ts +15 -0
  123. package/dist/chart-builders/ColumnSelector.d.ts.map +1 -0
  124. package/dist/chart-builders/ColumnSelector.js +31 -0
  125. package/dist/chart-builders/ColumnSelector.js.map +1 -0
  126. package/dist/chart-builders/Field.d.ts +11 -0
  127. package/dist/chart-builders/Field.d.ts.map +1 -0
  128. package/dist/chart-builders/Field.js +9 -0
  129. package/dist/chart-builders/Field.js.map +1 -0
  130. package/dist/chart-builders/FieldSelectorInput.d.ts +2 -1
  131. package/dist/chart-builders/FieldSelectorInput.d.ts.map +1 -1
  132. package/dist/chart-builders/FieldSelectorInput.js +5 -5
  133. package/dist/chart-builders/FieldSelectorInput.js.map +1 -1
  134. package/dist/chart-builders/MultiFieldSelector.d.ts +14 -0
  135. package/dist/chart-builders/MultiFieldSelector.d.ts.map +1 -0
  136. package/dist/chart-builders/MultiFieldSelector.js +53 -0
  137. package/dist/chart-builders/MultiFieldSelector.js.map +1 -0
  138. package/dist/chart-builders/TemporalGranularitySelector.d.ts +10 -0
  139. package/dist/chart-builders/TemporalGranularitySelector.d.ts.map +1 -0
  140. package/dist/chart-builders/TemporalGranularitySelector.js +37 -0
  141. package/dist/chart-builders/TemporalGranularitySelector.js.map +1 -0
  142. package/dist/chart-builders/chartSpecTitle.d.ts +3 -4
  143. package/dist/chart-builders/chartSpecTitle.d.ts.map +1 -1
  144. package/dist/chart-builders/chartSpecTitle.js +3 -5
  145. package/dist/chart-builders/chartSpecTitle.js.map +1 -1
  146. package/dist/chart-builders/chartTypeUtils.d.ts +13 -0
  147. package/dist/chart-builders/chartTypeUtils.d.ts.map +1 -0
  148. package/dist/chart-builders/chartTypeUtils.js +47 -0
  149. package/dist/chart-builders/chartTypeUtils.js.map +1 -0
  150. package/dist/chart-builders/constants.d.ts +12 -0
  151. package/dist/chart-builders/constants.d.ts.map +1 -0
  152. package/dist/chart-builders/constants.js +47 -0
  153. package/dist/chart-builders/constants.js.map +1 -0
  154. package/dist/chart-builders/createChartBuilderStore.d.ts +11 -0
  155. package/dist/chart-builders/createChartBuilderStore.d.ts.map +1 -0
  156. package/dist/chart-builders/createChartBuilderStore.js +26 -0
  157. package/dist/chart-builders/createChartBuilderStore.js.map +1 -0
  158. package/dist/chart-types/base-types.d.ts +148 -0
  159. package/dist/chart-types/base-types.d.ts.map +1 -0
  160. package/dist/chart-types/base-types.js +11 -0
  161. package/dist/chart-types/base-types.js.map +1 -0
  162. package/dist/chart-types/box-plot/BoxPlotSettings.d.ts +3 -0
  163. package/dist/chart-types/box-plot/BoxPlotSettings.d.ts.map +1 -0
  164. package/dist/chart-types/box-plot/BoxPlotSettings.js +9 -0
  165. package/dist/chart-types/box-plot/BoxPlotSettings.js.map +1 -0
  166. package/dist/chart-types/box-plot/definition.d.ts +4 -0
  167. package/dist/chart-types/box-plot/definition.d.ts.map +1 -0
  168. package/dist/chart-types/box-plot/definition.js +19 -0
  169. package/dist/chart-types/box-plot/definition.js.map +1 -0
  170. package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.d.ts +18 -0
  171. package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.d.ts.map +1 -0
  172. package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.js +28 -0
  173. package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.js.map +1 -0
  174. package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.d.ts +9 -0
  175. package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.d.ts.map +1 -0
  176. package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js +115 -0
  177. package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js.map +1 -0
  178. package/dist/chart-types/box-plot/renderer/constants.d.ts +24 -0
  179. package/dist/chart-types/box-plot/renderer/constants.d.ts.map +1 -0
  180. package/dist/chart-types/box-plot/renderer/constants.js +17 -0
  181. package/dist/chart-types/box-plot/renderer/constants.js.map +1 -0
  182. package/dist/chart-types/box-plot/renderer/plot.d.ts +14 -0
  183. package/dist/chart-types/box-plot/renderer/plot.d.ts.map +1 -0
  184. package/dist/chart-types/box-plot/renderer/plot.js +91 -0
  185. package/dist/chart-types/box-plot/renderer/plot.js.map +1 -0
  186. package/dist/chart-types/box-plot/renderer/useBoxPlotClient.d.ts +14 -0
  187. package/dist/chart-types/box-plot/renderer/useBoxPlotClient.d.ts.map +1 -0
  188. package/dist/chart-types/box-plot/renderer/useBoxPlotClient.js +45 -0
  189. package/dist/chart-types/box-plot/renderer/useBoxPlotClient.js.map +1 -0
  190. package/dist/chart-types/box-plot/renderer/utils.d.ts +6 -0
  191. package/dist/chart-types/box-plot/renderer/utils.d.ts.map +1 -0
  192. package/dist/chart-types/box-plot/renderer/utils.js +34 -0
  193. package/dist/chart-types/box-plot/renderer/utils.js.map +1 -0
  194. package/dist/chart-types/box-plot/schema.d.ts +16 -0
  195. package/dist/chart-types/box-plot/schema.d.ts.map +1 -0
  196. package/dist/chart-types/box-plot/schema.js +11 -0
  197. package/dist/chart-types/box-plot/schema.js.map +1 -0
  198. package/dist/chart-types/box-plot/tool.d.ts +44 -0
  199. package/dist/chart-types/box-plot/tool.d.ts.map +1 -0
  200. package/dist/chart-types/box-plot/tool.js +59 -0
  201. package/dist/chart-types/box-plot/tool.js.map +1 -0
  202. package/dist/chart-types/bubble-chart/BubbleChartSettings.d.ts +3 -0
  203. package/dist/chart-types/bubble-chart/BubbleChartSettings.d.ts.map +1 -0
  204. package/dist/chart-types/bubble-chart/BubbleChartSettings.js +9 -0
  205. package/dist/chart-types/bubble-chart/BubbleChartSettings.js.map +1 -0
  206. package/dist/chart-types/bubble-chart/definition.d.ts +4 -0
  207. package/dist/chart-types/bubble-chart/definition.d.ts.map +1 -0
  208. package/dist/chart-types/bubble-chart/definition.js +19 -0
  209. package/dist/chart-types/bubble-chart/definition.js.map +1 -0
  210. package/dist/chart-types/bubble-chart/schema.d.ts +18 -0
  211. package/dist/chart-types/bubble-chart/schema.d.ts.map +1 -0
  212. package/dist/chart-types/bubble-chart/schema.js +15 -0
  213. package/dist/chart-types/bubble-chart/schema.js.map +1 -0
  214. package/dist/chart-types/bubble-chart/spec.d.ts +4 -0
  215. package/dist/chart-types/bubble-chart/spec.d.ts.map +1 -0
  216. package/dist/chart-types/bubble-chart/spec.js +31 -0
  217. package/dist/chart-types/bubble-chart/spec.js.map +1 -0
  218. package/dist/chart-types/bubble-chart/tool.d.ts +46 -0
  219. package/dist/chart-types/bubble-chart/tool.d.ts.map +1 -0
  220. package/dist/chart-types/bubble-chart/tool.js +58 -0
  221. package/dist/chart-types/bubble-chart/tool.js.map +1 -0
  222. package/dist/chart-types/chart-config.d.ts +92 -0
  223. package/dist/chart-types/chart-config.d.ts.map +1 -0
  224. package/dist/chart-types/chart-config.js +47 -0
  225. package/dist/chart-types/chart-config.js.map +1 -0
  226. package/dist/chart-types/count-plot/CountPlotSettings.d.ts +3 -0
  227. package/dist/chart-types/count-plot/CountPlotSettings.d.ts.map +1 -0
  228. package/dist/chart-types/count-plot/CountPlotSettings.js +9 -0
  229. package/dist/chart-types/count-plot/CountPlotSettings.js.map +1 -0
  230. package/dist/chart-types/count-plot/definition.d.ts +4 -0
  231. package/dist/chart-types/count-plot/definition.d.ts.map +1 -0
  232. package/dist/chart-types/count-plot/definition.js +19 -0
  233. package/dist/chart-types/count-plot/definition.js.map +1 -0
  234. package/dist/chart-types/count-plot/schema.d.ts +14 -0
  235. package/dist/chart-types/count-plot/schema.d.ts.map +1 -0
  236. package/dist/chart-types/count-plot/schema.js +13 -0
  237. package/dist/chart-types/count-plot/schema.js.map +1 -0
  238. package/dist/chart-types/count-plot/spec.d.ts +4 -0
  239. package/dist/chart-types/count-plot/spec.d.ts.map +1 -0
  240. package/dist/chart-types/count-plot/spec.js +49 -0
  241. package/dist/chart-types/count-plot/spec.js.map +1 -0
  242. package/dist/chart-types/count-plot/tool.d.ts +42 -0
  243. package/dist/chart-types/count-plot/tool.d.ts.map +1 -0
  244. package/dist/chart-types/count-plot/tool.js +55 -0
  245. package/dist/chart-types/count-plot/tool.js.map +1 -0
  246. package/dist/chart-types/custom-spec/CustomSpecSettings.d.ts +7 -0
  247. package/dist/chart-types/custom-spec/CustomSpecSettings.d.ts.map +1 -0
  248. package/dist/chart-types/custom-spec/CustomSpecSettings.js +30 -0
  249. package/dist/chart-types/custom-spec/CustomSpecSettings.js.map +1 -0
  250. package/dist/chart-types/custom-spec/definition.d.ts +4 -0
  251. package/dist/chart-types/custom-spec/definition.d.ts.map +1 -0
  252. package/dist/chart-types/custom-spec/definition.js +17 -0
  253. package/dist/chart-types/custom-spec/definition.js.map +1 -0
  254. package/dist/chart-types/custom-spec/schema.d.ts +14 -0
  255. package/dist/chart-types/custom-spec/schema.d.ts.map +1 -0
  256. package/dist/chart-types/custom-spec/schema.js +10 -0
  257. package/dist/chart-types/custom-spec/schema.js.map +1 -0
  258. package/dist/chart-types/custom-spec/spec.d.ts +4 -0
  259. package/dist/chart-types/custom-spec/spec.d.ts.map +1 -0
  260. package/dist/chart-types/custom-spec/spec.js +24 -0
  261. package/dist/chart-types/custom-spec/spec.js.map +1 -0
  262. package/dist/chart-types/errors.d.ts +23 -0
  263. package/dist/chart-types/errors.d.ts.map +1 -0
  264. package/dist/chart-types/errors.js +26 -0
  265. package/dist/chart-types/errors.js.map +1 -0
  266. package/dist/chart-types/heatmap/HeatmapSettings.d.ts +3 -0
  267. package/dist/chart-types/heatmap/HeatmapSettings.d.ts.map +1 -0
  268. package/dist/chart-types/heatmap/HeatmapSettings.js +9 -0
  269. package/dist/chart-types/heatmap/HeatmapSettings.js.map +1 -0
  270. package/dist/chart-types/heatmap/definition.d.ts +4 -0
  271. package/dist/chart-types/heatmap/definition.d.ts.map +1 -0
  272. package/dist/chart-types/heatmap/definition.js +19 -0
  273. package/dist/chart-types/heatmap/definition.js.map +1 -0
  274. package/dist/chart-types/heatmap/schema.d.ts +16 -0
  275. package/dist/chart-types/heatmap/schema.d.ts.map +1 -0
  276. package/dist/chart-types/heatmap/schema.js +11 -0
  277. package/dist/chart-types/heatmap/schema.js.map +1 -0
  278. package/dist/chart-types/heatmap/spec.d.ts +4 -0
  279. package/dist/chart-types/heatmap/spec.d.ts.map +1 -0
  280. package/dist/chart-types/heatmap/spec.js +32 -0
  281. package/dist/chart-types/heatmap/spec.js.map +1 -0
  282. package/dist/chart-types/heatmap/tool.d.ts +44 -0
  283. package/dist/chart-types/heatmap/tool.d.ts.map +1 -0
  284. package/dist/chart-types/heatmap/tool.js +59 -0
  285. package/dist/chart-types/heatmap/tool.js.map +1 -0
  286. package/dist/chart-types/histogram/HistogramSettings.d.ts +3 -0
  287. package/dist/chart-types/histogram/HistogramSettings.d.ts.map +1 -0
  288. package/dist/chart-types/histogram/HistogramSettings.js +9 -0
  289. package/dist/chart-types/histogram/HistogramSettings.js.map +1 -0
  290. package/dist/chart-types/histogram/definition.d.ts +4 -0
  291. package/dist/chart-types/histogram/definition.d.ts.map +1 -0
  292. package/dist/chart-types/histogram/definition.js +19 -0
  293. package/dist/chart-types/histogram/definition.js.map +1 -0
  294. package/dist/chart-types/histogram/schema.d.ts +14 -0
  295. package/dist/chart-types/histogram/schema.d.ts.map +1 -0
  296. package/dist/chart-types/histogram/schema.js +13 -0
  297. package/dist/chart-types/histogram/schema.js.map +1 -0
  298. package/dist/chart-types/histogram/spec.d.ts +4 -0
  299. package/dist/chart-types/histogram/spec.d.ts.map +1 -0
  300. package/dist/chart-types/histogram/spec.js +36 -0
  301. package/dist/chart-types/histogram/spec.js.map +1 -0
  302. package/dist/chart-types/histogram/tool.d.ts +42 -0
  303. package/dist/chart-types/histogram/tool.d.ts.map +1 -0
  304. package/dist/chart-types/histogram/tool.js +55 -0
  305. package/dist/chart-types/histogram/tool.js.map +1 -0
  306. package/dist/chart-types/index.d.ts +115 -0
  307. package/dist/chart-types/index.d.ts.map +1 -0
  308. package/dist/chart-types/index.js +100 -0
  309. package/dist/chart-types/index.js.map +1 -0
  310. package/dist/chart-types/line-chart/LineChartSettings.d.ts +7 -0
  311. package/dist/chart-types/line-chart/LineChartSettings.d.ts.map +1 -0
  312. package/dist/chart-types/line-chart/LineChartSettings.js +22 -0
  313. package/dist/chart-types/line-chart/LineChartSettings.js.map +1 -0
  314. package/dist/chart-types/line-chart/definition.d.ts +4 -0
  315. package/dist/chart-types/line-chart/definition.d.ts.map +1 -0
  316. package/dist/chart-types/line-chart/definition.js +19 -0
  317. package/dist/chart-types/line-chart/definition.js.map +1 -0
  318. package/dist/chart-types/line-chart/schema.d.ts +83 -0
  319. package/dist/chart-types/line-chart/schema.d.ts.map +1 -0
  320. package/dist/chart-types/line-chart/schema.js +39 -0
  321. package/dist/chart-types/line-chart/schema.js.map +1 -0
  322. package/dist/chart-types/line-chart/spec.d.ts +4 -0
  323. package/dist/chart-types/line-chart/spec.d.ts.map +1 -0
  324. package/dist/chart-types/line-chart/spec.js +91 -0
  325. package/dist/chart-types/line-chart/spec.js.map +1 -0
  326. package/dist/chart-types/line-chart/tool.d.ts +68 -0
  327. package/dist/chart-types/line-chart/tool.d.ts.map +1 -0
  328. package/dist/chart-types/line-chart/tool.js +66 -0
  329. package/dist/chart-types/line-chart/tool.js.map +1 -0
  330. package/dist/chart-types/tool-schemas.d.ts +8 -0
  331. package/dist/chart-types/tool-schemas.d.ts.map +1 -0
  332. package/dist/chart-types/tool-schemas.js +18 -0
  333. package/dist/chart-types/tool-schemas.js.map +1 -0
  334. package/dist/chart-types/tool-types.d.ts +26 -0
  335. package/dist/chart-types/tool-types.d.ts.map +1 -0
  336. package/dist/chart-types/tool-types.js +2 -0
  337. package/dist/chart-types/tool-types.js.map +1 -0
  338. package/dist/chart-types/tool-validation.d.ts +3 -0
  339. package/dist/chart-types/tool-validation.d.ts.map +1 -0
  340. package/dist/chart-types/tool-validation.js +11 -0
  341. package/dist/chart-types/tool-validation.js.map +1 -0
  342. package/dist/chart-types/useChartTypeDefinition.d.ts +3 -0
  343. package/dist/chart-types/useChartTypeDefinition.d.ts.map +1 -0
  344. package/dist/chart-types/useChartTypeDefinition.js +8 -0
  345. package/dist/chart-types/useChartTypeDefinition.js.map +1 -0
  346. package/dist/dashboard/DashboardPanelErrorBoundary.d.ts +17 -0
  347. package/dist/dashboard/DashboardPanelErrorBoundary.d.ts.map +1 -0
  348. package/dist/dashboard/DashboardPanelErrorBoundary.js +21 -0
  349. package/dist/dashboard/DashboardPanelErrorBoundary.js.map +1 -0
  350. package/dist/dashboard/MosaicDashboard.d.ts +2 -4
  351. package/dist/dashboard/MosaicDashboard.d.ts.map +1 -1
  352. package/dist/dashboard/MosaicDashboard.js +38 -19
  353. package/dist/dashboard/MosaicDashboard.js.map +1 -1
  354. package/dist/dashboard/MosaicDashboardContext.d.ts +1 -0
  355. package/dist/dashboard/MosaicDashboardContext.d.ts.map +1 -1
  356. package/dist/dashboard/MosaicDashboardContext.js.map +1 -1
  357. package/dist/dashboard/MosaicDashboardEmptyState.d.ts +2 -0
  358. package/dist/dashboard/MosaicDashboardEmptyState.d.ts.map +1 -0
  359. package/dist/dashboard/MosaicDashboardEmptyState.js +50 -0
  360. package/dist/dashboard/MosaicDashboardEmptyState.js.map +1 -0
  361. package/dist/dashboard/MosaicDashboardPanel.d.ts +3 -0
  362. package/dist/dashboard/MosaicDashboardPanel.d.ts.map +1 -0
  363. package/dist/dashboard/MosaicDashboardPanel.js +26 -0
  364. package/dist/dashboard/MosaicDashboardPanel.js.map +1 -0
  365. package/dist/dashboard/MosaicDashboardPanelDragOverlay.d.ts +8 -0
  366. package/dist/dashboard/MosaicDashboardPanelDragOverlay.d.ts.map +1 -0
  367. package/dist/dashboard/MosaicDashboardPanelDragOverlay.js +17 -0
  368. package/dist/dashboard/MosaicDashboardPanelDragOverlay.js.map +1 -0
  369. package/dist/dashboard/MosaicDashboardPanelHeader.d.ts +13 -0
  370. package/dist/dashboard/MosaicDashboardPanelHeader.d.ts.map +1 -0
  371. package/dist/dashboard/MosaicDashboardPanelHeader.js +30 -0
  372. package/dist/dashboard/MosaicDashboardPanelHeader.js.map +1 -0
  373. package/dist/dashboard/MosaicDashboardPanelLayout.d.ts +10 -0
  374. package/dist/dashboard/MosaicDashboardPanelLayout.d.ts.map +1 -0
  375. package/dist/dashboard/MosaicDashboardPanelLayout.js +46 -0
  376. package/dist/dashboard/MosaicDashboardPanelLayout.js.map +1 -0
  377. package/dist/dashboard/MosaicDashboardPanels.d.ts +2 -0
  378. package/dist/dashboard/MosaicDashboardPanels.d.ts.map +1 -0
  379. package/dist/dashboard/MosaicDashboardPanels.js +53 -0
  380. package/dist/dashboard/MosaicDashboardPanels.js.map +1 -0
  381. package/dist/dashboard/MosaicDashboardSlice.d.ts +607 -27
  382. package/dist/dashboard/MosaicDashboardSlice.d.ts.map +1 -1
  383. package/dist/dashboard/MosaicDashboardSlice.js +525 -93
  384. package/dist/dashboard/MosaicDashboardSlice.js.map +1 -1
  385. package/dist/dashboard/MosaicDashboardToolbar.d.ts.map +1 -1
  386. package/dist/dashboard/MosaicDashboardToolbar.js +74 -7
  387. package/dist/dashboard/MosaicDashboardToolbar.js.map +1 -1
  388. package/dist/dashboard/defaultPanelRenderers.d.ts +3 -0
  389. package/dist/dashboard/defaultPanelRenderers.d.ts.map +1 -0
  390. package/dist/dashboard/defaultPanelRenderers.js +13 -0
  391. package/dist/dashboard/defaultPanelRenderers.js.map +1 -0
  392. package/dist/dashboard/utils.d.ts +3 -0
  393. package/dist/dashboard/utils.d.ts.map +1 -0
  394. package/dist/dashboard/utils.js +16 -0
  395. package/dist/dashboard/utils.js.map +1 -0
  396. package/dist/editor/MosaicChartDisplay.d.ts.map +1 -1
  397. package/dist/editor/MosaicChartDisplay.js +6 -1
  398. package/dist/editor/MosaicChartDisplay.js.map +1 -1
  399. package/dist/index.d.ts +28 -5
  400. package/dist/index.d.ts.map +1 -1
  401. package/dist/index.js +20 -3
  402. package/dist/index.js.map +1 -1
  403. package/dist/profiler/MosaicDashboardProfilerPanelRenderer.d.ts +3 -0
  404. package/dist/profiler/MosaicDashboardProfilerPanelRenderer.d.ts.map +1 -0
  405. package/dist/profiler/MosaicDashboardProfilerPanelRenderer.js +32 -0
  406. package/dist/profiler/MosaicDashboardProfilerPanelRenderer.js.map +1 -0
  407. package/dist/profiler/useMosaicProfiler.d.ts.map +1 -1
  408. package/dist/profiler/useMosaicProfiler.js.map +1 -1
  409. package/dist/tableInterop.js.map +1 -1
  410. package/dist/text/MosaicDashboardTextRenderer.d.ts +3 -0
  411. package/dist/text/MosaicDashboardTextRenderer.d.ts.map +1 -0
  412. package/dist/text/MosaicDashboardTextRenderer.js +46 -0
  413. package/dist/text/MosaicDashboardTextRenderer.js.map +1 -0
  414. package/dist/useMosaicClient.d.ts +4 -15
  415. package/dist/useMosaicClient.d.ts.map +1 -1
  416. package/dist/useMosaicClient.js +10 -4
  417. package/dist/useMosaicClient.js.map +1 -1
  418. package/package.json +40 -31
  419. package/dist/chart-builders/builders.d.ts +0 -7
  420. package/dist/chart-builders/builders.d.ts.map +0 -1
  421. package/dist/chart-builders/builders.js +0 -280
  422. package/dist/chart-builders/builders.js.map +0 -1
  423. package/dist/chart-builders/createMosaicChartTool.d.ts +0 -45
  424. package/dist/chart-builders/createMosaicChartTool.d.ts.map +0 -1
  425. package/dist/chart-builders/createMosaicChartTool.js +0 -109
  426. package/dist/chart-builders/createMosaicChartTool.js.map +0 -1
  427. package/dist/chart-builders/describeChartSpecs.d.ts +0 -7
  428. package/dist/chart-builders/describeChartSpecs.d.ts.map +0 -1
  429. package/dist/chart-builders/describeChartSpecs.js +0 -38
  430. package/dist/chart-builders/describeChartSpecs.js.map +0 -1
  431. package/dist/chart-builders/types.d.ts +0 -40
  432. package/dist/chart-builders/types.d.ts.map +0 -1
  433. package/dist/chart-builders/types.js +0 -2
  434. package/dist/chart-builders/types.js.map +0 -1
  435. package/dist/dashboard/MosaicDashboardChartPanel.d.ts +0 -3
  436. package/dist/dashboard/MosaicDashboardChartPanel.d.ts.map +0 -1
  437. package/dist/dashboard/MosaicDashboardChartPanel.js +0 -49
  438. package/dist/dashboard/MosaicDashboardChartPanel.js.map +0 -1
  439. package/dist/dashboard/MosaicDashboardCharts.d.ts +0 -3
  440. package/dist/dashboard/MosaicDashboardCharts.d.ts.map +0 -1
  441. package/dist/dashboard/MosaicDashboardCharts.js +0 -45
  442. package/dist/dashboard/MosaicDashboardCharts.js.map +0 -1
  443. package/dist/dashboard/MosaicDashboardProfiler.d.ts +0 -3
  444. package/dist/dashboard/MosaicDashboardProfiler.d.ts.map +0 -1
  445. package/dist/dashboard/MosaicDashboardProfiler.js +0 -21
  446. package/dist/dashboard/MosaicDashboardProfiler.js.map +0 -1
  447. package/dist/dashboard/VgPlotSpecPopoverEditor.d.ts +0 -8
  448. package/dist/dashboard/VgPlotSpecPopoverEditor.d.ts.map +0 -1
  449. package/dist/dashboard/VgPlotSpecPopoverEditor.js +0 -40
  450. package/dist/dashboard/VgPlotSpecPopoverEditor.js.map +0 -1
  451. package/dist/use-mosaic.d.ts +0 -11
  452. package/dist/use-mosaic.d.ts.map +0 -1
  453. package/dist/use-mosaic.js +0 -42
  454. package/dist/use-mosaic.js.map +0 -1
package/README.md CHANGED
@@ -41,6 +41,36 @@ export const {roomStore, useRoomStore} = createRoomStore<RoomState>(
41
41
  );
42
42
  ```
43
43
 
44
+ Mosaic's pre-aggregation optimization creates `preagg_*` cache tables lazily
45
+ when users interact with cross-filtered selections. By default Mosaic writes
46
+ those tables to the persistent `mosaic` schema. If the DuckDB database is a user
47
+ project file, point pre-aggregates at an attached cache database or disable them:
48
+
49
+ ```tsx
50
+ const mosaicCacheDatabase = '__sqlrooms_mosaic_cache';
51
+
52
+ const connector = createWebSocketDuckDbConnector({
53
+ initializationQuery: [
54
+ `ATTACH IF NOT EXISTS ':memory:' AS ${mosaicCacheDatabase}`,
55
+ `CREATE SCHEMA IF NOT EXISTS ${mosaicCacheDatabase}.mosaic`,
56
+ ].join('; '),
57
+ });
58
+
59
+ export const {roomStore, useRoomStore} = createRoomStore<RoomState>(
60
+ (set, get, store) => ({
61
+ // ... db slice using connector
62
+ ...createMosaicSlice({
63
+ preagg: {
64
+ schema: `${mosaicCacheDatabase}.mosaic`,
65
+ },
66
+ })(set, get, store),
67
+ }),
68
+ );
69
+ ```
70
+
71
+ Set `preagg.enabled` to `false` when you prefer to avoid pre-aggregate tables
72
+ entirely.
73
+
44
74
  The Mosaic connection is automatically initialized when the DuckDB connector is ready. You can check the connection status:
45
75
 
46
76
  ```tsx
@@ -137,6 +167,185 @@ For the common case, prefer the compound `MosaicProfiler` API. `useMosaicProfile
137
167
  is still available when you need direct access to the profiler state for custom
138
168
  layout, sizing, or advanced composition.
139
169
 
170
+ ### Mosaic Dashboard Panels
171
+
172
+ `MosaicDashboard` is a compound dashboard surface backed by generic dashboard
173
+ panels instead of a chart-only list. Configure supported panel renderers and
174
+ runtime add-panel actions when creating the dashboard slice.
175
+
176
+ ```tsx
177
+ import {
178
+ createDefaultMosaicDashboardPanelRenderers,
179
+ createMosaicDashboardProfilerPanelConfig,
180
+ createMosaicDashboardChartPanelConfig,
181
+ createMosaicDashboardSlice,
182
+ MosaicDashboard,
183
+ } from '@sqlrooms/mosaic';
184
+
185
+ const dashboardSlice = createMosaicDashboardSlice({
186
+ panelRenderers: createDefaultMosaicDashboardPanelRenderers(),
187
+ // Optional: pass chartTypes/chartBuilders to customize Add Chart.
188
+ // Optional: pass addPanelActions to add app-specific menu entries.
189
+ });
190
+
191
+ function Dashboard() {
192
+ return <MosaicDashboard dashboardId="main" />;
193
+ }
194
+
195
+ function addProfiler(store: RoomStore) {
196
+ store.getState().mosaicDashboard.addPanel(
197
+ 'main',
198
+ createMosaicDashboardProfilerPanelConfig({
199
+ source: {tableName: 'earthquakes'},
200
+ }),
201
+ );
202
+ }
203
+
204
+ function addBoxPlotChart(store: RoomStore) {
205
+ store.getState().mosaicDashboard.addPanel(
206
+ 'main',
207
+ createMosaicDashboardChartPanelConfig('Magnitude by Region', {
208
+ chartType: 'box-plot',
209
+ settings: {
210
+ x: 'region',
211
+ y: 'magnitude',
212
+ },
213
+ }),
214
+ );
215
+ }
216
+ ```
217
+
218
+ Dashboards have a creation-time `layoutType` of either `dock` or `grid`.
219
+ Existing persisted dashboards default to `dock`; pass `'grid'` to
220
+ `createDashboard(title, 'grid')` or `ensureDashboard(id, title, 'grid')` when
221
+ creating a dashboard that should use the scrollable grid renderer. Re-ensuring
222
+ an existing dashboard does not convert between layout types.
223
+
224
+ Dashboard panel sources may specify a `tableName` or trusted `sqlQuery`; when a
225
+ panel omits a source it falls back to the dashboard selected table. Panel renderer
226
+ definitions and chart builder definitions are runtime-only and intentionally
227
+ live outside persisted dashboard config.
228
+
229
+ ### AI Chart Tools
230
+
231
+ `createChartTools` generates assistant tools for the built-in chart types. The
232
+ injected `ChartToolDeps.resolveResources(params, context)` callback receives the
233
+ tool execution context as its second argument. Client apps should prefer
234
+ execution-scoped context, such as a captured AI run context, over live UI state
235
+ when resolving implicit dashboard targets. Explicit `params.artifactId` should
236
+ still take precedence.
237
+
238
+ ```ts
239
+ import {
240
+ createChartTools,
241
+ createDefaultChartTypes,
242
+ type ChartToolDeps,
243
+ } from '@sqlrooms/mosaic';
244
+
245
+ const deps: ChartToolDeps = {
246
+ resolveResources: (params, context) => {
247
+ const sessionId = context?.sessionId;
248
+ const runContext = context?.aiRunContext;
249
+ const contextArtifactId = getDashboardArtifactIdFromRunContext(
250
+ runContext,
251
+ sessionId,
252
+ );
253
+
254
+ // Prefer execution-scoped context over live UI state for implicit targets.
255
+ // Explicit tool input still wins over anything derived from context.
256
+ const artifactId =
257
+ params.artifactId ??
258
+ contextArtifactId ??
259
+ getCurrentDashboardArtifactId();
260
+ const tableName = params.tableName ?? getSelectedTableName(artifactId);
261
+
262
+ return {
263
+ artifactId,
264
+ tableName,
265
+ columns: getTableColumns(tableName),
266
+ };
267
+ },
268
+ createChart: ({artifactId, tableName, title, config}) =>
269
+ addChartPanel({artifactId, tableName, title, config}),
270
+ };
271
+
272
+ const chartTools = createChartTools(
273
+ createDefaultChartTypes({includeCustomSpec: false}),
274
+ deps,
275
+ );
276
+ ```
277
+
278
+ ### Box Plot Chart Type
279
+
280
+ The built-in Box Plot chart type (`'box-plot'`) is a specialized chart that uses
281
+ a custom renderer instead of Vega-Lite. It calculates quartiles, whiskers, and
282
+ outliers directly in DuckDB using SQL queries, then renders them with Observable
283
+ Plot primitives. This approach provides better performance and more accurate
284
+ statistical calculations than Observable Plot's built-in `boxY` mark.
285
+
286
+ Box plots support:
287
+
288
+ - Grouped box plots by categorical variable (x-axis)
289
+ - Y-axis brushing for interactive filtering
290
+ - Cross-filtering integration with other dashboard charts
291
+ - Custom quartile calculation using DuckDB's `quantile_cont` function
292
+
293
+ The renderer is modular and organized in the `chart-types/box-plot/renderer/`
294
+ directory with separate concerns:
295
+
296
+ - **BoxPlotPanelRenderer.tsx** - Main React component with drag interactions
297
+ - **BoxPlotClient.ts** - Mosaic client for SQL-based data queries
298
+ - **plot.ts** - Observable Plot rendering logic
299
+ - **utils.ts** - Statistical calculations and coordinate transformations
300
+ - **constants.ts** - Theme colors and layout constants
301
+
302
+ ### Chart Builder Compound Components
303
+
304
+ The chart builder UI can be used as a compound component API for flexible composition:
305
+
306
+ ```tsx
307
+ import {
308
+ ChartBuilderRoot,
309
+ ChartBuilderTrigger,
310
+ ChartBuilderDialogContent,
311
+ ChartBuilderContent,
312
+ } from '@sqlrooms/mosaic';
313
+
314
+ function MyDashboard() {
315
+ const columns = [...]; // Your table columns
316
+
317
+ return (
318
+ <ChartBuilderRoot
319
+ tableName="earthquakes"
320
+ columns={columns}
321
+ onCreateChart={(spec, title) => {
322
+ // Handle chart creation
323
+ }}
324
+ onCreateChartOutput={(output, title) => {
325
+ // Optional: handle non-spec outputs such as dashboard panel chart types.
326
+ }}
327
+ >
328
+ <ChartBuilderTrigger />
329
+ <ChartBuilderDialogContent>
330
+ <ChartBuilderContent />
331
+ </ChartBuilderDialogContent>
332
+ </ChartBuilderRoot>
333
+ );
334
+ }
335
+ ```
336
+
337
+ Available compound components:
338
+
339
+ - `ChartBuilderRoot` - Context provider and dialog wrapper
340
+ - `ChartBuilderTrigger` - Button to open the dialog
341
+ - `ChartBuilderDialogContent` - Dialog content wrapper
342
+ - `ChartBuilderContent` - Main chart builder UI (type grid + fields + actions)
343
+ - `ChartBuilderTypeGrid` - Chart type selector grid
344
+ - `ChartBuilderFields` - Field selector inputs
345
+ - `ChartBuilderActions` - Back/Create buttons
346
+
347
+ For simpler use cases, the legacy `ChartBuilderDialog` component is still available but deprecated.
348
+
140
349
  ### Working with Selections
141
350
 
142
351
  Selections enable cross-filtering between multiple visualizations. You can get or create a named selection from the store:
@@ -1,32 +1,63 @@
1
+ import type { ReactElement } from 'react';
2
+ import { ChartBuilderActions } from './chart-builders/ChartBuilderActions';
3
+ import { ChartBuilderContent } from './chart-builders/ChartBuilderContent';
4
+ import { ChartBuilderDialog, ChartBuilderDialogContent, ChartBuilderTrigger } from './chart-builders/ChartBuilderDialog';
5
+ import { ChartBuilderRoot, type ChartBuilderRootProps } from './chart-builders/ChartBuilderRoot';
6
+ import { ChartBuilderFields } from './chart-builders/ChartBuilderFields';
7
+ import { ChartBuilderTypeGrid } from './chart-builders/ChartBuilderTypeGrid';
8
+ import { FieldSelectorInput } from './chart-builders/FieldSelectorInput';
1
9
  /**
2
10
  * Compound component for building Mosaic charts from templates.
3
11
  *
4
- * Use `MosaicChartBuilder.Content` for an inline builder, or
5
- * `MosaicChartBuilder.Dialog` for a dialog-wrapped version.
12
+ * Use `<MosaicChartBuilder>` as the root; it provides context and wraps a
13
+ * Radix Dialog.
6
14
  *
7
- * @example Inline usage
15
+ * @example Compound usage (recommended)
8
16
  * ```tsx
9
- * <MosaicChartBuilder.Content
17
+ * <MosaicChartBuilder
10
18
  * tableName="my_table"
11
19
  * columns={columns}
12
20
  * onCreateChart={handleCreate}
13
- * />
21
+ * >
22
+ * <MosaicChartBuilder.Trigger />
23
+ * <MosaicChartBuilder.Dialog />
24
+ * </MosaicChartBuilder>
14
25
  * ```
15
26
  *
16
- * @example Dialog usage
27
+ * @example Custom trigger button
17
28
  * ```tsx
18
- * <MosaicChartBuilder.Dialog
19
- * open={isOpen}
20
- * onOpenChange={setOpen}
29
+ * <MosaicChartBuilder
30
+ * tableName="my_table"
31
+ * columns={columns}
32
+ * onCreateChart={handleCreate}
33
+ * >
34
+ * <MosaicChartBuilder.Trigger variant="ghost" size="icon">
35
+ * <PlusIcon />
36
+ * </MosaicChartBuilder.Trigger>
37
+ * <MosaicChartBuilder.Dialog />
38
+ * </MosaicChartBuilder>
39
+ * ```
40
+ *
41
+ * @example Inline builder (no dialog)
42
+ * ```tsx
43
+ * <MosaicChartBuilder.Content
21
44
  * tableName="my_table"
22
45
  * columns={columns}
23
46
  * onCreateChart={handleCreate}
24
47
  * />
25
48
  * ```
26
49
  */
27
- export declare const MosaicChartBuilder: {
28
- readonly Content: import("react").FC<import(".").ChartBuilderContentProps>;
29
- readonly Dialog: import("react").FC<import(".").ChartBuilderDialogProps>;
30
- readonly FieldSelector: import("react").FC<import(".").FieldSelectorInputProps>;
50
+ type MosaicChartBuilderCompoundComponent = ((props: ChartBuilderRootProps) => ReactElement) & {
51
+ Root: typeof ChartBuilderRoot;
52
+ Trigger: typeof ChartBuilderTrigger;
53
+ Dialog: typeof ChartBuilderDialogContent;
54
+ Content: typeof ChartBuilderContent;
55
+ TypeGrid: typeof ChartBuilderTypeGrid;
56
+ Fields: typeof ChartBuilderFields;
57
+ Actions: typeof ChartBuilderActions;
58
+ FieldSelector: typeof FieldSelectorInput;
59
+ LegacyDialog: typeof ChartBuilderDialog;
31
60
  };
61
+ export declare const MosaicChartBuilder: MosaicChartBuilderCompoundComponent;
62
+ export {};
32
63
  //# sourceMappingURL=MosaicChartBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MosaicChartBuilder.d.ts","sourceRoot":"","sources":["../src/MosaicChartBuilder.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,kBAAkB;;;;CAIrB,CAAC"}
1
+ {"version":3,"file":"MosaicChartBuilder.d.ts","sourceRoot":"","sources":["../src/MosaicChartBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,OAAO,CAAC;AACxC,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC3B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAC,oBAAoB,EAAC,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,KAAK,mCAAmC,GAAG,CAAC,CAC1C,KAAK,EAAE,qBAAqB,KACzB,YAAY,CAAC,GAAG;IACnB,IAAI,EAAE,OAAO,gBAAgB,CAAC;IAC9B,OAAO,EAAE,OAAO,mBAAmB,CAAC;IACpC,MAAM,EAAE,OAAO,yBAAyB,CAAC;IACzC,OAAO,EAAE,OAAO,mBAAmB,CAAC;IACpC,QAAQ,EAAE,OAAO,oBAAoB,CAAC;IACtC,MAAM,EAAE,OAAO,kBAAkB,CAAC;IAClC,OAAO,EAAE,OAAO,mBAAmB,CAAC;IACpC,aAAa,EAAE,OAAO,kBAAkB,CAAC;IACzC,YAAY,EAAE,OAAO,kBAAkB,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,mCAsB9B,CAAC"}
@@ -1,35 +1,27 @@
1
+ import { ChartBuilderActions } from './chart-builders/ChartBuilderActions';
1
2
  import { ChartBuilderContent } from './chart-builders/ChartBuilderContent';
2
- import { ChartBuilderDialog } from './chart-builders/ChartBuilderDialog';
3
+ import { ChartBuilderDialog, ChartBuilderDialogContent, ChartBuilderTrigger, } from './chart-builders/ChartBuilderDialog';
4
+ import { ChartBuilderRoot, } from './chart-builders/ChartBuilderRoot';
5
+ import { ChartBuilderFields } from './chart-builders/ChartBuilderFields';
6
+ import { ChartBuilderTypeGrid } from './chart-builders/ChartBuilderTypeGrid';
3
7
  import { FieldSelectorInput } from './chart-builders/FieldSelectorInput';
4
- /**
5
- * Compound component for building Mosaic charts from templates.
6
- *
7
- * Use `MosaicChartBuilder.Content` for an inline builder, or
8
- * `MosaicChartBuilder.Dialog` for a dialog-wrapped version.
9
- *
10
- * @example Inline usage
11
- * ```tsx
12
- * <MosaicChartBuilder.Content
13
- * tableName="my_table"
14
- * columns={columns}
15
- * onCreateChart={handleCreate}
16
- * />
17
- * ```
18
- *
19
- * @example Dialog usage
20
- * ```tsx
21
- * <MosaicChartBuilder.Dialog
22
- * open={isOpen}
23
- * onOpenChange={setOpen}
24
- * tableName="my_table"
25
- * columns={columns}
26
- * onCreateChart={handleCreate}
27
- * />
28
- * ```
29
- */
30
- export const MosaicChartBuilder = {
8
+ export const MosaicChartBuilder = Object.assign(ChartBuilderRoot, {
9
+ Root: ChartBuilderRoot,
10
+ /** Default trigger button; customize via ButtonProps or children. */
11
+ Trigger: ChartBuilderTrigger,
12
+ /** Dialog content pane with chart-builder steps. */
13
+ Dialog: ChartBuilderDialogContent,
14
+ /** Standalone builder UI (no dialog wrapper). */
31
15
  Content: ChartBuilderContent,
32
- Dialog: ChartBuilderDialog,
16
+ /** Built-in chart-type picker grid. */
17
+ TypeGrid: ChartBuilderTypeGrid,
18
+ /** Field selectors for the currently selected chart type. */
19
+ Fields: ChartBuilderFields,
20
+ /** Back/Create actions for the current chart type selection. */
21
+ Actions: ChartBuilderActions,
22
+ /** Field selector primitive. */
33
23
  FieldSelector: FieldSelectorInput,
34
- };
24
+ /** Legacy one-shot dialog (backward-compatible). */
25
+ LegacyDialog: ChartBuilderDialog,
26
+ });
35
27
  //# sourceMappingURL=MosaicChartBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MosaicChartBuilder.js","sourceRoot":"","sources":["../src/MosaicChartBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,OAAO,EAAE,mBAAmB;IAC5B,MAAM,EAAE,kBAAkB;IAC1B,aAAa,EAAE,kBAAkB;CACzB,CAAC","sourcesContent":["import {ChartBuilderContent} from './chart-builders/ChartBuilderContent';\nimport {ChartBuilderDialog} from './chart-builders/ChartBuilderDialog';\nimport {FieldSelectorInput} from './chart-builders/FieldSelectorInput';\n\n/**\n * Compound component for building Mosaic charts from templates.\n *\n * Use `MosaicChartBuilder.Content` for an inline builder, or\n * `MosaicChartBuilder.Dialog` for a dialog-wrapped version.\n *\n * @example Inline usage\n * ```tsx\n * <MosaicChartBuilder.Content\n * tableName=\"my_table\"\n * columns={columns}\n * onCreateChart={handleCreate}\n * />\n * ```\n *\n * @example Dialog usage\n * ```tsx\n * <MosaicChartBuilder.Dialog\n * open={isOpen}\n * onOpenChange={setOpen}\n * tableName=\"my_table\"\n * columns={columns}\n * onCreateChart={handleCreate}\n * />\n * ```\n */\nexport const MosaicChartBuilder = {\n Content: ChartBuilderContent,\n Dialog: ChartBuilderDialog,\n FieldSelector: FieldSelectorInput,\n} as const;\n"]}
1
+ {"version":3,"file":"MosaicChartBuilder.js","sourceRoot":"","sources":["../src/MosaicChartBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,gBAAgB,GAEjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAC,oBAAoB,EAAC,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AA0DvE,MAAM,CAAC,MAAM,kBAAkB,GAC7B,MAAM,CAAC,MAAM,CACX,gBAAkE,EAClE;IACE,IAAI,EAAE,gBAAgB;IACtB,qEAAqE;IACrE,OAAO,EAAE,mBAAmB;IAC5B,oDAAoD;IACpD,MAAM,EAAE,yBAAyB;IACjC,iDAAiD;IACjD,OAAO,EAAE,mBAAmB;IAC5B,uCAAuC;IACvC,QAAQ,EAAE,oBAAoB;IAC9B,6DAA6D;IAC7D,MAAM,EAAE,kBAAkB;IAC1B,gEAAgE;IAChE,OAAO,EAAE,mBAAmB;IAC5B,gCAAgC;IAChC,aAAa,EAAE,kBAAkB;IACjC,oDAAoD;IACpD,YAAY,EAAE,kBAAkB;CACjC,CACF,CAAC","sourcesContent":["import type {ReactElement} from 'react';\nimport {ChartBuilderActions} from './chart-builders/ChartBuilderActions';\nimport {ChartBuilderContent} from './chart-builders/ChartBuilderContent';\nimport {\n ChartBuilderDialog,\n ChartBuilderDialogContent,\n ChartBuilderTrigger,\n} from './chart-builders/ChartBuilderDialog';\nimport {\n ChartBuilderRoot,\n type ChartBuilderRootProps,\n} from './chart-builders/ChartBuilderRoot';\nimport {ChartBuilderFields} from './chart-builders/ChartBuilderFields';\nimport {ChartBuilderTypeGrid} from './chart-builders/ChartBuilderTypeGrid';\nimport {FieldSelectorInput} from './chart-builders/FieldSelectorInput';\n\n/**\n * Compound component for building Mosaic charts from templates.\n *\n * Use `<MosaicChartBuilder>` as the root; it provides context and wraps a\n * Radix Dialog.\n *\n * @example Compound usage (recommended)\n * ```tsx\n * <MosaicChartBuilder\n * tableName=\"my_table\"\n * columns={columns}\n * onCreateChart={handleCreate}\n * >\n * <MosaicChartBuilder.Trigger />\n * <MosaicChartBuilder.Dialog />\n * </MosaicChartBuilder>\n * ```\n *\n * @example Custom trigger button\n * ```tsx\n * <MosaicChartBuilder\n * tableName=\"my_table\"\n * columns={columns}\n * onCreateChart={handleCreate}\n * >\n * <MosaicChartBuilder.Trigger variant=\"ghost\" size=\"icon\">\n * <PlusIcon />\n * </MosaicChartBuilder.Trigger>\n * <MosaicChartBuilder.Dialog />\n * </MosaicChartBuilder>\n * ```\n *\n * @example Inline builder (no dialog)\n * ```tsx\n * <MosaicChartBuilder.Content\n * tableName=\"my_table\"\n * columns={columns}\n * onCreateChart={handleCreate}\n * />\n * ```\n */\n\ntype MosaicChartBuilderCompoundComponent = ((\n props: ChartBuilderRootProps,\n) => ReactElement) & {\n Root: typeof ChartBuilderRoot;\n Trigger: typeof ChartBuilderTrigger;\n Dialog: typeof ChartBuilderDialogContent;\n Content: typeof ChartBuilderContent;\n TypeGrid: typeof ChartBuilderTypeGrid;\n Fields: typeof ChartBuilderFields;\n Actions: typeof ChartBuilderActions;\n FieldSelector: typeof FieldSelectorInput;\n LegacyDialog: typeof ChartBuilderDialog;\n};\n\nexport const MosaicChartBuilder: MosaicChartBuilderCompoundComponent =\n Object.assign(\n ChartBuilderRoot as (props: ChartBuilderRootProps) => ReactElement,\n {\n Root: ChartBuilderRoot,\n /** Default trigger button; customize via ButtonProps or children. */\n Trigger: ChartBuilderTrigger,\n /** Dialog content pane with chart-builder steps. */\n Dialog: ChartBuilderDialogContent,\n /** Standalone builder UI (no dialog wrapper). */\n Content: ChartBuilderContent,\n /** Built-in chart-type picker grid. */\n TypeGrid: ChartBuilderTypeGrid,\n /** Field selectors for the currently selected chart type. */\n Fields: ChartBuilderFields,\n /** Back/Create actions for the current chart type selection. */\n Actions: ChartBuilderActions,\n /** Field selector primitive. */\n FieldSelector: FieldSelectorInput,\n /** Legacy one-shot dialog (backward-compatible). */\n LegacyDialog: ChartBuilderDialog,\n },\n );\n"]}
@@ -6,6 +6,12 @@ import type { Table as ArrowTable } from 'apache-arrow';
6
6
  import { z } from 'zod';
7
7
  export declare const MosaicSliceConfig: z.ZodObject<{}, z.core.$strip>;
8
8
  export type MosaicSliceConfig = z.infer<typeof MosaicSliceConfig>;
9
+ export type MosaicPreAggregateOptions = {
10
+ /** Database schema/namespace for Mosaic pre-aggregate tables. */
11
+ schema?: string;
12
+ /** Enable or disable Mosaic's pre-aggregation optimization. */
13
+ enabled?: boolean;
14
+ };
9
15
  export type MosaicClientOptions = {
10
16
  /** Unique identifier for this client */
11
17
  id?: string;
@@ -17,6 +23,8 @@ export type MosaicClientOptions = {
17
23
  query: (filter: unknown) => ReturnType<typeof Query.from>;
18
24
  /** Callback when query results are received */
19
25
  queryResult?: (result: ArrowTable) => void;
26
+ /** Callback when query execution fails */
27
+ queryError?: (error: Error) => void;
20
28
  };
21
29
  export type TrackedClient = {
22
30
  id: string;
@@ -24,21 +32,29 @@ export type TrackedClient = {
24
32
  createdAt: number;
25
33
  isLoading: boolean;
26
34
  data: unknown | null;
35
+ error?: Error;
27
36
  selection?: Selection;
28
37
  queryResultCallback?: (result: ArrowTable) => void;
29
38
  };
39
+ export type MosaicIdleConnection = {
40
+ status: 'idle';
41
+ };
42
+ export type MosaicLoadingConnection = {
43
+ status: 'loading';
44
+ };
45
+ export type MosaicReadyConnection = {
46
+ status: 'ready';
47
+ connector?: Connector;
48
+ coordinator: Coordinator;
49
+ };
50
+ export type MosaicErrorConnection = {
51
+ status: 'error';
52
+ error: unknown;
53
+ };
54
+ export type MosaicConnection = MosaicIdleConnection | MosaicLoadingConnection | MosaicReadyConnection | MosaicErrorConnection;
30
55
  export type MosaicSliceState = {
31
56
  mosaic: SliceFunctions & {
32
- connection: {
33
- status: 'idle' | 'loading';
34
- } | {
35
- status: 'ready';
36
- connector?: Connector;
37
- coordinator: Coordinator;
38
- } | {
39
- status: 'error';
40
- error: unknown;
41
- };
57
+ connection: MosaicConnection;
42
58
  config: MosaicSliceConfig;
43
59
  /** Record of registered clients by id */
44
60
  clients: Record<string, TrackedClient>;
@@ -53,6 +69,7 @@ export type MosaicSliceState = {
53
69
  ensureClient: (options: MosaicClientOptions & {
54
70
  id: string;
55
71
  onQueryResult?: (result: ArrowTable) => void;
72
+ onQueryError?: (error: Error) => void;
56
73
  }) => void;
57
74
  /** Disconnect and remove a client by id */
58
75
  destroyClient: (id: string) => void;
@@ -64,6 +81,7 @@ export declare function createDefaultMosaicConfig(props?: Partial<MosaicSliceCon
64
81
  export type CreateMosaicSliceProps = {
65
82
  config?: Partial<MosaicSliceConfig>;
66
83
  coordinator?: Coordinator;
84
+ preagg?: MosaicPreAggregateOptions;
67
85
  };
68
86
  export declare function createMosaicSlice(props?: CreateMosaicSliceProps): import("zustand").StateCreator<MosaicSliceState>;
69
87
  export type DuckDbSliceStateWithMosaic = DuckDbSliceState & MosaicSliceState;
@@ -1 +1 @@
1
- {"version":3,"file":"MosaicSlice.d.ts","sourceRoot":"","sources":["../src/MosaicSlice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MosaicSlice.d.ts","sourceRoot":"","sources":["../src/MosaicSlice.ts"],"names":[],"mappings":"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"}
@@ -27,17 +27,22 @@ export function createMosaicSlice(props = {}) {
27
27
  try {
28
28
  if (props.coordinator) {
29
29
  resolvedCoordinator = props.coordinator;
30
+ applyMosaicPreAggregateOptions(resolvedCoordinator, props.preagg);
30
31
  }
31
32
  else {
32
33
  const dbConnector = await get().db.getConnector();
33
34
  resolvedCoordinator = coordinator();
34
35
  mosaicConnector = isWasmDuckDbConnector(dbConnector)
35
36
  ? await wasmConnector({
36
- // @ts-expect-error - We install a different version of duckdb-wasm
37
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
38
+ // @ts-ignore - We might be using a different version of duckdb-wasm than mosaic expects
37
39
  duckDb: dbConnector.getDb(),
40
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
41
+ // @ts-ignore - same version mismatch
38
42
  connection: dbConnector.getConnection(),
39
43
  })
40
44
  : createDuckDbMosaicConnector(dbConnector);
45
+ applyMosaicPreAggregateOptions(resolvedCoordinator, props.preagg);
41
46
  resolvedCoordinator.databaseConnector(mosaicConnector);
42
47
  }
43
48
  }
@@ -58,6 +63,11 @@ export function createMosaicSlice(props = {}) {
58
63
  async destroy() {
59
64
  get().mosaic.destroyAllClients();
60
65
  },
66
+ setConfig(config) {
67
+ set((state) => produce(state, (draft) => {
68
+ draft.mosaic.config = config;
69
+ }));
70
+ },
61
71
  getSelection(name, type = 'crossfilter') {
62
72
  const existing = get().mosaic.selections[name];
63
73
  if (existing)
@@ -90,16 +100,39 @@ export function createMosaicSlice(props = {}) {
90
100
  if (tracked) {
91
101
  tracked.data = data;
92
102
  tracked.isLoading = false;
103
+ tracked.error = undefined;
93
104
  }
94
105
  }));
95
106
  // Call external callback if provided
96
107
  options.queryResult?.(toArrowClientResult(data));
97
108
  };
109
+ const wrappedQueryPending = () => {
110
+ set((state) => produce(state, (draft) => {
111
+ const tracked = draft.mosaic.clients[id];
112
+ if (tracked) {
113
+ tracked.isLoading = true;
114
+ tracked.error = undefined;
115
+ }
116
+ }));
117
+ };
118
+ const wrappedQueryError = (error) => {
119
+ set((state) => produce(state, (draft) => {
120
+ const tracked = draft.mosaic.clients[id];
121
+ if (tracked) {
122
+ tracked.isLoading = false;
123
+ tracked.error = error;
124
+ }
125
+ }));
126
+ client.enabled = false;
127
+ options.queryError?.(error);
128
+ };
98
129
  const client = makeClient({
99
130
  coordinator: connection.coordinator,
100
131
  selection,
101
132
  query: options.query,
102
133
  queryResult: wrappedQueryResult,
134
+ queryPending: wrappedQueryPending,
135
+ queryError: wrappedQueryError,
103
136
  });
104
137
  set((state) => produce(state, (draft) => {
105
138
  draft.mosaic.clients[id] = {
@@ -108,6 +141,7 @@ export function createMosaicSlice(props = {}) {
108
141
  createdAt: Date.now(),
109
142
  isLoading: true,
110
143
  data: null,
144
+ error: undefined,
111
145
  selection,
112
146
  queryResultCallback: options.queryResult
113
147
  ? (result) => options.queryResult(toArrowClientResult(result))
@@ -145,6 +179,7 @@ export function createMosaicSlice(props = {}) {
145
179
  if (tracked) {
146
180
  tracked.data = data;
147
181
  tracked.isLoading = false;
182
+ tracked.error = undefined;
148
183
  }
149
184
  }));
150
185
  const arrowData = toArrowClientResult(data);
@@ -153,11 +188,34 @@ export function createMosaicSlice(props = {}) {
153
188
  // Also call original queryResult if provided
154
189
  options.queryResult?.(arrowData);
155
190
  };
191
+ const wrappedQueryPending = () => {
192
+ set((state) => produce(state, (draft) => {
193
+ const tracked = draft.mosaic.clients[options.id];
194
+ if (tracked) {
195
+ tracked.isLoading = true;
196
+ tracked.error = undefined;
197
+ }
198
+ }));
199
+ };
200
+ const wrappedQueryError = (error) => {
201
+ set((state) => produce(state, (draft) => {
202
+ const tracked = draft.mosaic.clients[options.id];
203
+ if (tracked) {
204
+ tracked.isLoading = false;
205
+ tracked.error = error;
206
+ }
207
+ }));
208
+ client.enabled = false;
209
+ options.onQueryError?.(error);
210
+ options.queryError?.(error);
211
+ };
156
212
  const client = makeClient({
157
213
  coordinator: connection.coordinator,
158
214
  selection,
159
215
  query: options.query,
160
216
  queryResult: wrappedQueryResult,
217
+ queryPending: wrappedQueryPending,
218
+ queryError: wrappedQueryError,
161
219
  });
162
220
  set((state) => produce(state, (draft) => {
163
221
  draft.mosaic.clients[options.id] = {
@@ -166,6 +224,7 @@ export function createMosaicSlice(props = {}) {
166
224
  createdAt: Date.now(),
167
225
  isLoading: true,
168
226
  data: null,
227
+ error: undefined,
169
228
  selection,
170
229
  queryResultCallback: options.onQueryResult
171
230
  ? (result) => options.onQueryResult(toArrowClientResult(result))
@@ -174,24 +233,20 @@ export function createMosaicSlice(props = {}) {
174
233
  }));
175
234
  },
176
235
  destroyClient(id) {
177
- const { connection, clients } = get().mosaic;
236
+ const { clients } = get().mosaic;
178
237
  const tracked = clients[id];
179
238
  if (!tracked)
180
239
  return;
181
- if (connection.status === 'ready') {
182
- connection.coordinator.disconnect(tracked.client);
183
- }
240
+ tracked.client.destroy();
184
241
  set((state) => produce(state, (draft) => {
185
242
  delete draft.mosaic.clients[id];
186
243
  }));
187
244
  },
188
245
  destroyAllClients() {
189
- const { connection, clients } = get().mosaic;
190
- if (connection.status === 'ready') {
191
- Object.values(clients).forEach((tracked) => {
192
- connection.coordinator.disconnect(tracked.client);
193
- });
194
- }
246
+ const { clients } = get().mosaic;
247
+ Object.values(clients).forEach((tracked) => {
248
+ tracked.client.destroy();
249
+ });
195
250
  set((state) => produce(state, (draft) => {
196
251
  draft.mosaic.clients = {};
197
252
  }));
@@ -199,6 +254,17 @@ export function createMosaicSlice(props = {}) {
199
254
  },
200
255
  }));
201
256
  }
257
+ function applyMosaicPreAggregateOptions(mosaicCoordinator, options) {
258
+ if (!options) {
259
+ return;
260
+ }
261
+ if (options.schema !== undefined) {
262
+ mosaicCoordinator.preaggregator.schema = options.schema;
263
+ }
264
+ if (options.enabled !== undefined) {
265
+ mosaicCoordinator.preaggregator.enabled = options.enabled;
266
+ }
267
+ }
202
268
  export function useStoreWithMosaic(selector) {
203
269
  return useBaseRoomStore((state) => selector(state));
204
270
  }