@sqlrooms/mosaic 0.29.0-rc.2 → 0.29.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/README.md +120 -0
  2. package/dist/MosaicChartBuilder.d.ts +48 -13
  3. package/dist/MosaicChartBuilder.d.ts.map +1 -1
  4. package/dist/MosaicChartBuilder.js +28 -30
  5. package/dist/MosaicChartBuilder.js.map +1 -1
  6. package/dist/MosaicSlice.d.ts +11 -0
  7. package/dist/MosaicSlice.d.ts.map +1 -1
  8. package/dist/MosaicSlice.js +73 -10
  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/chart-builders/ChartBuilderActions.d.ts +6 -0
  19. package/dist/chart-builders/ChartBuilderActions.d.ts.map +1 -0
  20. package/dist/chart-builders/ChartBuilderActions.js +28 -0
  21. package/dist/chart-builders/ChartBuilderActions.js.map +1 -0
  22. package/dist/chart-builders/ChartBuilderContent.d.ts +13 -11
  23. package/dist/chart-builders/ChartBuilderContent.d.ts.map +1 -1
  24. package/dist/chart-builders/ChartBuilderContent.js +21 -52
  25. package/dist/chart-builders/ChartBuilderContent.js.map +1 -1
  26. package/dist/chart-builders/ChartBuilderContext.d.ts +9 -4
  27. package/dist/chart-builders/ChartBuilderContext.d.ts.map +1 -1
  28. package/dist/chart-builders/ChartBuilderContext.js +5 -0
  29. package/dist/chart-builders/ChartBuilderContext.js.map +1 -1
  30. package/dist/chart-builders/ChartBuilderDialog.d.ts +31 -6
  31. package/dist/chart-builders/ChartBuilderDialog.d.ts.map +1 -1
  32. package/dist/chart-builders/ChartBuilderDialog.js +25 -10
  33. package/dist/chart-builders/ChartBuilderDialog.js.map +1 -1
  34. package/dist/chart-builders/ChartBuilderFields.d.ts +6 -0
  35. package/dist/chart-builders/ChartBuilderFields.d.ts.map +1 -0
  36. package/dist/chart-builders/ChartBuilderFields.js +25 -0
  37. package/dist/chart-builders/ChartBuilderFields.js.map +1 -0
  38. package/dist/chart-builders/ChartBuilderRoot.d.ts +27 -0
  39. package/dist/chart-builders/ChartBuilderRoot.d.ts.map +1 -0
  40. package/dist/chart-builders/ChartBuilderRoot.js +61 -0
  41. package/dist/chart-builders/ChartBuilderRoot.js.map +1 -0
  42. package/dist/chart-builders/ChartBuilderTypeGrid.d.ts +7 -0
  43. package/dist/chart-builders/ChartBuilderTypeGrid.d.ts.map +1 -0
  44. package/dist/chart-builders/ChartBuilderTypeGrid.js +23 -0
  45. package/dist/chart-builders/ChartBuilderTypeGrid.js.map +1 -0
  46. package/dist/chart-builders/FieldSelectorInput.d.ts.map +1 -1
  47. package/dist/chart-builders/FieldSelectorInput.js +2 -2
  48. package/dist/chart-builders/FieldSelectorInput.js.map +1 -1
  49. package/dist/chart-builders/builders.d.ts +28 -1
  50. package/dist/chart-builders/builders.d.ts.map +1 -1
  51. package/dist/chart-builders/builders.js +44 -273
  52. package/dist/chart-builders/builders.js.map +1 -1
  53. package/dist/chart-builders/chartSpecTitle.d.ts +3 -4
  54. package/dist/chart-builders/chartSpecTitle.d.ts.map +1 -1
  55. package/dist/chart-builders/chartSpecTitle.js +3 -5
  56. package/dist/chart-builders/chartSpecTitle.js.map +1 -1
  57. package/dist/chart-builders/chartTypeUtils.d.ts +17 -0
  58. package/dist/chart-builders/chartTypeUtils.d.ts.map +1 -0
  59. package/dist/chart-builders/chartTypeUtils.js +55 -0
  60. package/dist/chart-builders/chartTypeUtils.js.map +1 -0
  61. package/dist/chart-builders/constants.d.ts +7 -0
  62. package/dist/chart-builders/constants.d.ts.map +1 -0
  63. package/dist/chart-builders/constants.js +34 -0
  64. package/dist/chart-builders/constants.js.map +1 -0
  65. package/dist/chart-builders/createChartBuilderStore.d.ts +11 -0
  66. package/dist/chart-builders/createChartBuilderStore.d.ts.map +1 -0
  67. package/dist/chart-builders/createChartBuilderStore.js +26 -0
  68. package/dist/chart-builders/createChartBuilderStore.js.map +1 -0
  69. package/dist/chart-builders/describeChartSpecs.d.ts +5 -3
  70. package/dist/chart-builders/describeChartSpecs.d.ts.map +1 -1
  71. package/dist/chart-builders/describeChartSpecs.js +11 -8
  72. package/dist/chart-builders/describeChartSpecs.js.map +1 -1
  73. package/dist/chart-builders/hooks/useChartFieldForm.d.ts +13 -0
  74. package/dist/chart-builders/hooks/useChartFieldForm.d.ts.map +1 -0
  75. package/dist/chart-builders/hooks/useChartFieldForm.js +12 -0
  76. package/dist/chart-builders/hooks/useChartFieldForm.js.map +1 -0
  77. package/dist/chart-builders/types.d.ts +12 -29
  78. package/dist/chart-builders/types.d.ts.map +1 -1
  79. package/dist/chart-builders/types.js +16 -1
  80. package/dist/chart-builders/types.js.map +1 -1
  81. package/dist/chart-types/base-types.d.ts +54 -0
  82. package/dist/chart-types/base-types.d.ts.map +1 -0
  83. package/dist/chart-types/base-types.js +6 -0
  84. package/dist/chart-types/base-types.js.map +1 -0
  85. package/dist/chart-types/box-plot/definition.d.ts +4 -0
  86. package/dist/chart-types/box-plot/definition.d.ts.map +1 -0
  87. package/dist/chart-types/box-plot/definition.js +45 -0
  88. package/dist/chart-types/box-plot/definition.js.map +1 -0
  89. package/dist/chart-types/box-plot/index.d.ts +3 -0
  90. package/dist/chart-types/box-plot/index.d.ts.map +1 -0
  91. package/dist/chart-types/box-plot/index.js +3 -0
  92. package/dist/chart-types/box-plot/index.js.map +1 -0
  93. package/dist/chart-types/box-plot/schema.d.ts +17 -0
  94. package/dist/chart-types/box-plot/schema.d.ts.map +1 -0
  95. package/dist/chart-types/box-plot/schema.js +12 -0
  96. package/dist/chart-types/box-plot/schema.js.map +1 -0
  97. package/dist/chart-types/bubble-chart/definition.d.ts +4 -0
  98. package/dist/chart-types/bubble-chart/definition.d.ts.map +1 -0
  99. package/dist/chart-types/bubble-chart/definition.js +48 -0
  100. package/dist/chart-types/bubble-chart/definition.js.map +1 -0
  101. package/dist/chart-types/bubble-chart/index.d.ts +3 -0
  102. package/dist/chart-types/bubble-chart/index.d.ts.map +1 -0
  103. package/dist/chart-types/bubble-chart/index.js +3 -0
  104. package/dist/chart-types/bubble-chart/index.js.map +1 -0
  105. package/dist/chart-types/bubble-chart/schema.d.ts +17 -0
  106. package/dist/chart-types/bubble-chart/schema.d.ts.map +1 -0
  107. package/dist/chart-types/bubble-chart/schema.js +12 -0
  108. package/dist/chart-types/bubble-chart/schema.js.map +1 -0
  109. package/dist/chart-types/count-plot/definition.d.ts +4 -0
  110. package/dist/chart-types/count-plot/definition.d.ts.map +1 -0
  111. package/dist/chart-types/count-plot/definition.js +50 -0
  112. package/dist/chart-types/count-plot/definition.js.map +1 -0
  113. package/dist/chart-types/count-plot/index.d.ts +3 -0
  114. package/dist/chart-types/count-plot/index.d.ts.map +1 -0
  115. package/dist/chart-types/count-plot/index.js +3 -0
  116. package/dist/chart-types/count-plot/index.js.map +1 -0
  117. package/dist/chart-types/count-plot/schema.d.ts +15 -0
  118. package/dist/chart-types/count-plot/schema.d.ts.map +1 -0
  119. package/dist/chart-types/count-plot/schema.js +11 -0
  120. package/dist/chart-types/count-plot/schema.js.map +1 -0
  121. package/dist/chart-types/custom-spec/definition.d.ts +4 -0
  122. package/dist/chart-types/custom-spec/definition.d.ts.map +1 -0
  123. package/dist/chart-types/custom-spec/definition.js +28 -0
  124. package/dist/chart-types/custom-spec/definition.js.map +1 -0
  125. package/dist/chart-types/custom-spec/index.d.ts +3 -0
  126. package/dist/chart-types/custom-spec/index.d.ts.map +1 -0
  127. package/dist/chart-types/custom-spec/index.js +3 -0
  128. package/dist/chart-types/custom-spec/index.js.map +1 -0
  129. package/dist/chart-types/custom-spec/schema.d.ts +11 -0
  130. package/dist/chart-types/custom-spec/schema.d.ts.map +1 -0
  131. package/dist/chart-types/custom-spec/schema.js +9 -0
  132. package/dist/chart-types/custom-spec/schema.js.map +1 -0
  133. package/dist/chart-types/ecdf/definition.d.ts +4 -0
  134. package/dist/chart-types/ecdf/definition.d.ts.map +1 -0
  135. package/dist/chart-types/ecdf/definition.js +47 -0
  136. package/dist/chart-types/ecdf/definition.js.map +1 -0
  137. package/dist/chart-types/ecdf/index.d.ts +3 -0
  138. package/dist/chart-types/ecdf/index.d.ts.map +1 -0
  139. package/dist/chart-types/ecdf/index.js +3 -0
  140. package/dist/chart-types/ecdf/index.js.map +1 -0
  141. package/dist/chart-types/ecdf/schema.d.ts +15 -0
  142. package/dist/chart-types/ecdf/schema.d.ts.map +1 -0
  143. package/dist/chart-types/ecdf/schema.js +11 -0
  144. package/dist/chart-types/ecdf/schema.js.map +1 -0
  145. package/dist/chart-types/heatmap/definition.d.ts +4 -0
  146. package/dist/chart-types/heatmap/definition.d.ts.map +1 -0
  147. package/dist/chart-types/heatmap/definition.js +49 -0
  148. package/dist/chart-types/heatmap/definition.js.map +1 -0
  149. package/dist/chart-types/heatmap/index.d.ts +3 -0
  150. package/dist/chart-types/heatmap/index.d.ts.map +1 -0
  151. package/dist/chart-types/heatmap/index.js +3 -0
  152. package/dist/chart-types/heatmap/index.js.map +1 -0
  153. package/dist/chart-types/heatmap/schema.d.ts +17 -0
  154. package/dist/chart-types/heatmap/schema.d.ts.map +1 -0
  155. package/dist/chart-types/heatmap/schema.js +12 -0
  156. package/dist/chart-types/heatmap/schema.js.map +1 -0
  157. package/dist/chart-types/histogram/definition.d.ts +4 -0
  158. package/dist/chart-types/histogram/definition.d.ts.map +1 -0
  159. package/dist/chart-types/histogram/definition.js +49 -0
  160. package/dist/chart-types/histogram/definition.js.map +1 -0
  161. package/dist/chart-types/histogram/index.d.ts +3 -0
  162. package/dist/chart-types/histogram/index.d.ts.map +1 -0
  163. package/dist/chart-types/histogram/index.js +3 -0
  164. package/dist/chart-types/histogram/index.js.map +1 -0
  165. package/dist/chart-types/histogram/schema.d.ts +15 -0
  166. package/dist/chart-types/histogram/schema.d.ts.map +1 -0
  167. package/dist/chart-types/histogram/schema.js +11 -0
  168. package/dist/chart-types/histogram/schema.js.map +1 -0
  169. package/dist/chart-types/index.d.ts +109 -0
  170. package/dist/chart-types/index.d.ts.map +1 -0
  171. package/dist/chart-types/index.js +70 -0
  172. package/dist/chart-types/index.js.map +1 -0
  173. package/dist/chart-types/line-chart/definition.d.ts +4 -0
  174. package/dist/chart-types/line-chart/definition.d.ts.map +1 -0
  175. package/dist/chart-types/line-chart/definition.js +46 -0
  176. package/dist/chart-types/line-chart/definition.js.map +1 -0
  177. package/dist/chart-types/line-chart/index.d.ts +3 -0
  178. package/dist/chart-types/line-chart/index.d.ts.map +1 -0
  179. package/dist/chart-types/line-chart/index.js +3 -0
  180. package/dist/chart-types/line-chart/index.js.map +1 -0
  181. package/dist/chart-types/line-chart/schema.d.ts +17 -0
  182. package/dist/chart-types/line-chart/schema.d.ts.map +1 -0
  183. package/dist/chart-types/line-chart/schema.js +12 -0
  184. package/dist/chart-types/line-chart/schema.js.map +1 -0
  185. package/dist/chart-types/registry.d.ts +5 -0
  186. package/dist/chart-types/registry.d.ts.map +1 -0
  187. package/dist/chart-types/registry.js +28 -0
  188. package/dist/chart-types/registry.js.map +1 -0
  189. package/dist/dashboard/DashboardPanelErrorBoundary.d.ts +17 -0
  190. package/dist/dashboard/DashboardPanelErrorBoundary.d.ts.map +1 -0
  191. package/dist/dashboard/DashboardPanelErrorBoundary.js +21 -0
  192. package/dist/dashboard/DashboardPanelErrorBoundary.js.map +1 -0
  193. package/dist/dashboard/MosaicDashboard.d.ts +2 -4
  194. package/dist/dashboard/MosaicDashboard.d.ts.map +1 -1
  195. package/dist/dashboard/MosaicDashboard.js +42 -19
  196. package/dist/dashboard/MosaicDashboard.js.map +1 -1
  197. package/dist/dashboard/MosaicDashboardContext.d.ts +1 -0
  198. package/dist/dashboard/MosaicDashboardContext.d.ts.map +1 -1
  199. package/dist/dashboard/MosaicDashboardContext.js.map +1 -1
  200. package/dist/dashboard/MosaicDashboardPanel.d.ts +3 -0
  201. package/dist/dashboard/MosaicDashboardPanel.d.ts.map +1 -0
  202. package/dist/dashboard/MosaicDashboardPanel.js +26 -0
  203. package/dist/dashboard/MosaicDashboardPanel.js.map +1 -0
  204. package/dist/dashboard/MosaicDashboardPanelDragOverlay.d.ts +8 -0
  205. package/dist/dashboard/MosaicDashboardPanelDragOverlay.d.ts.map +1 -0
  206. package/dist/dashboard/MosaicDashboardPanelDragOverlay.js +17 -0
  207. package/dist/dashboard/MosaicDashboardPanelDragOverlay.js.map +1 -0
  208. package/dist/dashboard/MosaicDashboardPanelHeader.d.ts +13 -0
  209. package/dist/dashboard/MosaicDashboardPanelHeader.d.ts.map +1 -0
  210. package/dist/dashboard/MosaicDashboardPanelHeader.js +30 -0
  211. package/dist/dashboard/MosaicDashboardPanelHeader.js.map +1 -0
  212. package/dist/dashboard/MosaicDashboardPanelLayout.d.ts +10 -0
  213. package/dist/dashboard/MosaicDashboardPanelLayout.d.ts.map +1 -0
  214. package/dist/dashboard/MosaicDashboardPanelLayout.js +25 -0
  215. package/dist/dashboard/MosaicDashboardPanelLayout.js.map +1 -0
  216. package/dist/dashboard/MosaicDashboardPanels.d.ts +2 -0
  217. package/dist/dashboard/MosaicDashboardPanels.d.ts.map +1 -0
  218. package/dist/dashboard/MosaicDashboardPanels.js +52 -0
  219. package/dist/dashboard/MosaicDashboardPanels.js.map +1 -0
  220. package/dist/dashboard/MosaicDashboardProfilerPanelRenderer.d.ts +3 -0
  221. package/dist/dashboard/MosaicDashboardProfilerPanelRenderer.d.ts.map +1 -0
  222. package/dist/dashboard/MosaicDashboardProfilerPanelRenderer.js +32 -0
  223. package/dist/dashboard/MosaicDashboardProfilerPanelRenderer.js.map +1 -0
  224. package/dist/dashboard/MosaicDashboardSlice.d.ts +482 -27
  225. package/dist/dashboard/MosaicDashboardSlice.d.ts.map +1 -1
  226. package/dist/dashboard/MosaicDashboardSlice.js +478 -93
  227. package/dist/dashboard/MosaicDashboardSlice.js.map +1 -1
  228. package/dist/dashboard/MosaicDashboardToolbar.d.ts.map +1 -1
  229. package/dist/dashboard/MosaicDashboardToolbar.js +69 -7
  230. package/dist/dashboard/MosaicDashboardToolbar.js.map +1 -1
  231. package/dist/dashboard/MosaicDashboardVgPlotHeaderActions.d.ts +4 -0
  232. package/dist/dashboard/MosaicDashboardVgPlotHeaderActions.d.ts.map +1 -0
  233. package/dist/dashboard/MosaicDashboardVgPlotHeaderActions.js +29 -0
  234. package/dist/dashboard/MosaicDashboardVgPlotHeaderActions.js.map +1 -0
  235. package/dist/dashboard/MosaicDashboardVgPlotPanelRenderer.d.ts +3 -0
  236. package/dist/dashboard/MosaicDashboardVgPlotPanelRenderer.d.ts.map +1 -0
  237. package/dist/dashboard/MosaicDashboardVgPlotPanelRenderer.js +68 -0
  238. package/dist/dashboard/MosaicDashboardVgPlotPanelRenderer.js.map +1 -0
  239. package/dist/dashboard/VgPlotSpecPopoverEditor.d.ts.map +1 -1
  240. package/dist/dashboard/VgPlotSpecPopoverEditor.js +2 -2
  241. package/dist/dashboard/VgPlotSpecPopoverEditor.js.map +1 -1
  242. package/dist/dashboard/chart-settings/ChartSettings.d.ts +39 -0
  243. package/dist/dashboard/chart-settings/ChartSettings.d.ts.map +1 -0
  244. package/dist/dashboard/chart-settings/ChartSettings.js +90 -0
  245. package/dist/dashboard/chart-settings/ChartSettings.js.map +1 -0
  246. package/dist/dashboard/chart-settings/ChartSettingsContext.d.ts +20 -0
  247. package/dist/dashboard/chart-settings/ChartSettingsContext.d.ts.map +1 -0
  248. package/dist/dashboard/chart-settings/ChartSettingsContext.js +14 -0
  249. package/dist/dashboard/chart-settings/ChartSettingsContext.js.map +1 -0
  250. package/dist/dashboard/chart-settings/ChartSettingsPanel.d.ts +11 -0
  251. package/dist/dashboard/chart-settings/ChartSettingsPanel.d.ts.map +1 -0
  252. package/dist/dashboard/chart-settings/ChartSettingsPanel.js +8 -0
  253. package/dist/dashboard/chart-settings/ChartSettingsPanel.js.map +1 -0
  254. package/dist/dashboard/chart-settings/ChartTypeSelector.d.ts +11 -0
  255. package/dist/dashboard/chart-settings/ChartTypeSelector.d.ts.map +1 -0
  256. package/dist/dashboard/chart-settings/ChartTypeSelector.js +17 -0
  257. package/dist/dashboard/chart-settings/ChartTypeSelector.js.map +1 -0
  258. package/dist/dashboard/chart-settings/DynamicChartSettings.d.ts +11 -0
  259. package/dist/dashboard/chart-settings/DynamicChartSettings.d.ts.map +1 -0
  260. package/dist/dashboard/chart-settings/DynamicChartSettings.js +19 -0
  261. package/dist/dashboard/chart-settings/DynamicChartSettings.js.map +1 -0
  262. package/dist/dashboard/chart-settings/index.d.ts +6 -0
  263. package/dist/dashboard/chart-settings/index.d.ts.map +1 -0
  264. package/dist/dashboard/chart-settings/index.js +6 -0
  265. package/dist/dashboard/chart-settings/index.js.map +1 -0
  266. package/dist/dashboard/chart-settings/useTableColumns.d.ts +3 -0
  267. package/dist/dashboard/chart-settings/useTableColumns.d.ts.map +1 -0
  268. package/dist/dashboard/chart-settings/useTableColumns.js +12 -0
  269. package/dist/dashboard/chart-settings/useTableColumns.js.map +1 -0
  270. package/dist/dashboard/defaultPanelRenderers.d.ts +3 -0
  271. package/dist/dashboard/defaultPanelRenderers.d.ts.map +1 -0
  272. package/dist/dashboard/defaultPanelRenderers.js +11 -0
  273. package/dist/dashboard/defaultPanelRenderers.js.map +1 -0
  274. package/dist/dashboard/generateMosaicChartSpec.d.ts +15 -0
  275. package/dist/dashboard/generateMosaicChartSpec.d.ts.map +1 -0
  276. package/dist/dashboard/generateMosaicChartSpec.js +30 -0
  277. package/dist/dashboard/generateMosaicChartSpec.js.map +1 -0
  278. package/dist/editor/MosaicChartDisplay.d.ts.map +1 -1
  279. package/dist/editor/MosaicChartDisplay.js +6 -1
  280. package/dist/editor/MosaicChartDisplay.js.map +1 -1
  281. package/dist/index.d.ts +31 -5
  282. package/dist/index.d.ts.map +1 -1
  283. package/dist/index.js +21 -2
  284. package/dist/index.js.map +1 -1
  285. package/dist/profiler/useMosaicProfiler.d.ts.map +1 -1
  286. package/dist/profiler/useMosaicProfiler.js.map +1 -1
  287. package/dist/tableInterop.js.map +1 -1
  288. package/dist/useMosaicClient.d.ts +4 -15
  289. package/dist/useMosaicClient.d.ts.map +1 -1
  290. package/dist/useMosaicClient.js +10 -4
  291. package/dist/useMosaicClient.js.map +1 -1
  292. package/package.json +15 -9
  293. package/dist/chart-builders/createMosaicChartTool.d.ts +0 -45
  294. package/dist/chart-builders/createMosaicChartTool.d.ts.map +0 -1
  295. package/dist/chart-builders/createMosaicChartTool.js +0 -109
  296. package/dist/chart-builders/createMosaicChartTool.js.map +0 -1
  297. package/dist/dashboard/MosaicDashboardChartPanel.d.ts +0 -3
  298. package/dist/dashboard/MosaicDashboardChartPanel.d.ts.map +0 -1
  299. package/dist/dashboard/MosaicDashboardChartPanel.js +0 -49
  300. package/dist/dashboard/MosaicDashboardChartPanel.js.map +0 -1
  301. package/dist/dashboard/MosaicDashboardCharts.d.ts +0 -3
  302. package/dist/dashboard/MosaicDashboardCharts.d.ts.map +0 -1
  303. package/dist/dashboard/MosaicDashboardCharts.js +0 -45
  304. package/dist/dashboard/MosaicDashboardCharts.js.map +0 -1
  305. package/dist/dashboard/MosaicDashboardProfiler.d.ts +0 -3
  306. package/dist/dashboard/MosaicDashboardProfiler.d.ts.map +0 -1
  307. package/dist/dashboard/MosaicDashboardProfiler.js +0 -21
  308. package/dist/dashboard/MosaicDashboardProfiler.js.map +0 -1
  309. package/dist/use-mosaic.d.ts +0 -11
  310. package/dist/use-mosaic.d.ts.map +0 -1
  311. package/dist/use-mosaic.js +0 -42
  312. package/dist/use-mosaic.js.map +0 -1
@@ -1,7 +1,34 @@
1
- import { ChartBuilderTemplate } from './types';
1
+ import type { ComponentType } from 'react';
2
+ import type { ChartBuilderTemplate, ChartTypeDefinition } from './types';
3
+ export declare function createChartBuilderTemplate(chartType: ChartTypeDefinition, icon?: ComponentType<{
4
+ className?: string;
5
+ }>): ChartBuilderTemplate;
6
+ export declare function createChartBuilderTemplates(chartTypes: ChartTypeDefinition[]): ChartBuilderTemplate[];
7
+ export declare const countPlotBuilder: ChartBuilderTemplate;
8
+ export declare const histogramBuilder: ChartBuilderTemplate;
9
+ export declare const lineChartBuilder: ChartBuilderTemplate;
10
+ export declare const ecdfBuilder: ChartBuilderTemplate;
11
+ export declare const heatmapBuilder: ChartBuilderTemplate;
12
+ export declare const boxPlotBuilder: ChartBuilderTemplate;
13
+ export declare const bubbleChartBuilder: ChartBuilderTemplate;
14
+ export declare const customSpecBuilder: ChartBuilderTemplate;
2
15
  /**
3
16
  * Creates the default set of chart builders.
4
17
  * Call this to get a fresh array that you can extend or filter.
5
18
  */
6
19
  export declare function createDefaultChartBuilders(): ChartBuilderTemplate[];
20
+ /**
21
+ * Named built-in chart templates for cherry-picking and
22
+ * {@link MosaicChartBuilder.chartBuilders}.
23
+ */
24
+ export declare const mosaicChartBuilders: {
25
+ readonly countPlot: ChartBuilderTemplate;
26
+ readonly histogram: ChartBuilderTemplate;
27
+ readonly lineChart: ChartBuilderTemplate;
28
+ readonly ecdf: ChartBuilderTemplate;
29
+ readonly heatmap: ChartBuilderTemplate;
30
+ readonly boxPlot: ChartBuilderTemplate;
31
+ readonly bubbleChart: ChartBuilderTemplate;
32
+ readonly customSpec: ChartBuilderTemplate;
33
+ };
7
34
  //# sourceMappingURL=builders.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/chart-builders/builders.ts"],"names":[],"mappings":"AAWA,OAAO,EAAC,oBAAoB,EAAC,MAAM,SAAS,CAAC;AAyR7C;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,oBAAoB,EAAE,CAWnE"}
1
+ {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/chart-builders/builders.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;AACzC,OAAO,KAAK,EAAC,oBAAoB,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAC;AA4BvE,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,mBAAmB,EAC9B,IAAI,GAAE,aAAa,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAC,CAAuB,GAC9D,oBAAoB,CAKtB;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,mBAAmB,EAAE,GAChC,oBAAoB,EAAE,CAOxB;AAED,eAAO,MAAM,gBAAgB,sBAG5B,CAAC;AACF,eAAO,MAAM,gBAAgB,sBAG5B,CAAC;AACF,eAAO,MAAM,gBAAgB,sBAG5B,CAAC;AACF,eAAO,MAAM,WAAW,sBAGvB,CAAC;AACF,eAAO,MAAM,cAAc,sBAG1B,CAAC;AACF,eAAO,MAAM,cAAc,sBAG1B,CAAC;AACF,eAAO,MAAM,kBAAkB,sBAG9B,CAAC;AACF,eAAO,MAAM,iBAAiB,sBAG7B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,oBAAoB,EAAE,CAEnE;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;CAStB,CAAC"}
@@ -1,280 +1,51 @@
1
- import { AlignHorizontalDistributeCenter, BarChart3, BarChartHorizontal, BubblesIcon, Code, Grid3X3, LineChart, TrendingUp, } from 'lucide-react';
2
- const BG_COLOR = '#f5d9a6';
3
- const FG_COLOR = '#e67f5f';
4
- /**
5
- * Creates a count plot (bar chart with counts) of a field
6
- */
7
- const countPlotBuilder = {
8
- id: 'count-plot',
9
- icon: BarChartHorizontal,
10
- description: 'Create a count plot of a field',
11
- fields: [{ key: 'field', label: 'Field', required: true }],
12
- createSpec: (tableName, { field }) => ({
13
- plot: [
14
- {
15
- mark: 'rectY',
16
- data: { from: tableName },
17
- x: { bin: field, maxbins: 25 },
18
- y: { count: null },
19
- fill: BG_COLOR,
20
- inset: 0.5,
21
- },
22
- {
23
- mark: 'rectY',
24
- data: { from: tableName, filterBy: '$brush' },
25
- x: { bin: field, maxbins: 25 },
26
- y: { count: null },
27
- fill: FG_COLOR,
28
- inset: 0.5,
29
- },
30
- { select: 'intervalX', as: '$brush' },
31
- ],
32
- xLabel: field,
33
- yLabel: null,
34
- yAxis: null,
35
- height: 200,
36
- width: 380,
37
- margins: { left: 0, right: 10, top: 10, bottom: 30 },
38
- params: { brush: { select: 'crossfilter' } },
39
- }),
40
- };
41
- /**
42
- * Creates a histogram with background/filtered overlay
43
- */
44
- const histogramBuilder = {
45
- id: 'histogram',
46
- icon: BarChart3,
47
- description: 'Create a histogram of a field',
48
- fields: [{ key: 'field', label: 'Field', required: true }],
49
- createSpec: (tableName, { field }) => ({
50
- plot: [
51
- {
52
- mark: 'rectY',
53
- data: { from: tableName },
54
- x: { bin: field, maxbins: 40 },
55
- y: { count: null },
56
- fill: BG_COLOR,
57
- inset: 0.5,
58
- },
59
- {
60
- mark: 'rectY',
61
- data: { from: tableName, filterBy: '$brush' },
62
- x: { bin: field, maxbins: 40 },
63
- y: { count: null },
64
- fill: FG_COLOR,
65
- inset: 0.5,
66
- },
67
- { select: 'intervalX', as: '$brush' },
68
- ],
69
- xLabel: field,
70
- yLabel: 'Count',
71
- height: 200,
72
- width: 380,
73
- margins: { left: 40, right: 10, top: 10, bottom: 30 },
74
- params: { brush: { select: 'crossfilter' } },
75
- }),
76
- };
77
- /**
78
- * Creates a line chart of two fields
79
- */
80
- const lineChartBuilder = {
81
- id: 'line-chart',
82
- icon: LineChart,
83
- description: 'Create a line chart of two fields',
84
- fields: [
85
- { key: 'x', label: 'X Field', required: true },
86
- { key: 'y', label: 'Y Field', required: true },
87
- ],
88
- createSpec: (tableName, { x, y }) => ({
89
- plot: [
90
- {
91
- mark: 'lineY',
92
- data: { from: tableName, filterBy: '$brush' },
93
- x,
94
- y,
95
- stroke: FG_COLOR,
96
- },
97
- { select: 'intervalX', as: '$brush' },
98
- ],
99
- xLabel: x,
100
- yLabel: y,
101
- height: 250,
102
- width: 380,
103
- margins: { left: 50, right: 10, top: 10, bottom: 30 },
104
- params: { brush: { select: 'crossfilter' } },
105
- }),
106
- };
107
- /**
108
- * Creates an empirical cumulative distribution (eCDF) chart
109
- */
110
- const ecdfBuilder = {
111
- id: 'ecdf',
112
- icon: TrendingUp,
113
- description: 'Create an eCDF chart of a field',
114
- fields: [{ key: 'field', label: 'Field', required: true }],
115
- createSpec: (tableName, { field }) => ({
116
- plot: [
117
- {
118
- mark: 'areaY',
119
- data: { from: tableName, filterBy: '$brush' },
120
- x: field,
121
- y: { cumulative: field },
122
- fill: FG_COLOR,
123
- fillOpacity: 0.3,
124
- },
125
- {
126
- mark: 'lineY',
127
- data: { from: tableName, filterBy: '$brush' },
128
- x: field,
129
- y: { cumulative: field },
130
- stroke: FG_COLOR,
131
- },
132
- { select: 'intervalX', as: '$brush' },
133
- ],
134
- xLabel: field,
135
- yLabel: 'Cumulative',
136
- height: 250,
137
- width: 380,
138
- margins: { left: 50, right: 10, top: 10, bottom: 30 },
139
- params: { brush: { select: 'crossfilter' } },
140
- }),
141
- };
142
- /**
143
- * Creates a 2D heatmap of two fields
144
- */
145
- const heatmapBuilder = {
146
- id: 'heatmap',
147
- icon: Grid3X3,
148
- description: 'Create a 2D heatmap of two fields',
149
- fields: [
150
- { key: 'x', label: 'X Field', required: true },
151
- { key: 'y', label: 'Y Field', required: true },
152
- ],
153
- createSpec: (tableName, { x, y }) => ({
154
- plot: [
155
- {
156
- mark: 'raster',
157
- data: { from: tableName, filterBy: '$brush' },
158
- x,
159
- y,
160
- fill: 'density',
161
- bandwidth: 0,
162
- pixelSize: 3,
163
- },
164
- { select: 'intervalXY', as: '$brush' },
165
- ],
166
- colorScale: 'sqrt',
167
- colorScheme: 'ylorrd',
168
- xLabel: x,
169
- yLabel: y,
170
- height: 250,
171
- width: 380,
172
- margins: { left: 40, right: 10, top: 15, bottom: 30 },
173
- params: { brush: { select: 'crossfilter' } },
174
- }),
175
- };
176
- /**
177
- * Creates a box plot
178
- */
179
- const boxPlotBuilder = {
180
- id: 'box-plot',
181
- icon: AlignHorizontalDistributeCenter,
182
- description: 'Create a box plot',
183
- fields: [
184
- { key: 'x', label: 'X Field (categorical)', required: true },
185
- { key: 'y', label: 'Y Field (numeric)', required: true },
186
- ],
187
- createSpec: (tableName, { x, y }) => ({
188
- plot: [
189
- {
190
- mark: 'boxY',
191
- data: { from: tableName, filterBy: '$brush' },
192
- x,
193
- y,
194
- fill: FG_COLOR,
195
- },
196
- { select: 'intervalX', as: '$brush' },
197
- ],
198
- xLabel: x,
199
- yLabel: y,
200
- height: 250,
201
- width: 380,
202
- margins: { left: 50, right: 10, top: 10, bottom: 30 },
203
- params: { brush: { select: 'crossfilter' } },
204
- }),
205
- };
206
- /**
207
- * Creates a bubble chart
208
- */
209
- const bubbleChartBuilder = {
210
- id: 'bubble-chart',
211
- icon: BubblesIcon,
212
- description: 'Create a bubble chart',
213
- fields: [
214
- { key: 'x', label: 'X Field', required: true },
215
- { key: 'y', label: 'Y Field', required: true },
216
- ],
217
- createSpec: (tableName, { x, y }) => ({
218
- plot: [
219
- {
220
- mark: 'dot',
221
- data: { from: tableName, filterBy: '$brush' },
222
- x,
223
- y,
224
- fill: FG_COLOR,
225
- fillOpacity: 0.5,
226
- r: 3,
227
- },
228
- { select: 'intervalXY', as: '$brush' },
229
- ],
230
- xLabel: x,
231
- yLabel: y,
232
- height: 250,
233
- width: 380,
234
- margins: { left: 50, right: 10, top: 10, bottom: 30 },
235
- params: { brush: { select: 'crossfilter' } },
236
- }),
237
- };
238
- /**
239
- * Creates a chart with custom spec (empty template)
240
- */
241
- const customSpecBuilder = {
242
- id: 'custom-spec',
243
- icon: Code,
244
- description: 'Create a chart with custom spec',
245
- fields: [],
246
- createSpec: (tableName) => ({
247
- plot: [
248
- {
249
- mark: 'rectY',
250
- data: { from: tableName, filterBy: '$brush' },
251
- x: { bin: 'field_name', maxbins: 25 },
252
- y: { count: null },
253
- fill: 'steelblue',
254
- inset: 0.5,
255
- },
256
- { select: 'intervalX', as: '$brush' },
257
- ],
258
- xLabel: 'field_name',
259
- height: 200,
260
- width: 380,
261
- params: { brush: { select: 'crossfilter' } },
262
- }),
263
- };
1
+ import { AlignHorizontalDistributeCenter, BarChart3, BarChartHorizontal, Workflow as BubblesIcon, ChartNoAxesCombined, Code, Grid3X3, LineChart, TrendingUp, } from 'lucide-react';
2
+ import { boxPlotChartType, bubbleChartChartType, countPlotChartType, createDefaultChartTypes, customSpecChartType, ecdfChartType, heatmapChartType, histogramChartType, lineChartChartType, } from '../chart-types';
3
+ const defaultChartTypeIcons = {
4
+ 'count-plot': BarChartHorizontal,
5
+ histogram: BarChart3,
6
+ 'line-chart': LineChart,
7
+ ecdf: TrendingUp,
8
+ heatmap: Grid3X3,
9
+ 'box-plot': AlignHorizontalDistributeCenter,
10
+ 'bubble-chart': BubblesIcon,
11
+ 'custom-spec': Code,
12
+ };
13
+ export function createChartBuilderTemplate(chartType, icon = ChartNoAxesCombined) {
14
+ return {
15
+ ...chartType,
16
+ icon,
17
+ };
18
+ }
19
+ export function createChartBuilderTemplates(chartTypes) {
20
+ return chartTypes.map((chartType) => createChartBuilderTemplate(chartType, defaultChartTypeIcons[chartType.id] ?? ChartNoAxesCombined));
21
+ }
22
+ export const countPlotBuilder = createChartBuilderTemplate(countPlotChartType, BarChartHorizontal);
23
+ export const histogramBuilder = createChartBuilderTemplate(histogramChartType, BarChart3);
24
+ export const lineChartBuilder = createChartBuilderTemplate(lineChartChartType, LineChart);
25
+ export const ecdfBuilder = createChartBuilderTemplate(ecdfChartType, TrendingUp);
26
+ export const heatmapBuilder = createChartBuilderTemplate(heatmapChartType, Grid3X3);
27
+ export const boxPlotBuilder = createChartBuilderTemplate(boxPlotChartType, AlignHorizontalDistributeCenter);
28
+ export const bubbleChartBuilder = createChartBuilderTemplate(bubbleChartChartType, BubblesIcon);
29
+ export const customSpecBuilder = createChartBuilderTemplate(customSpecChartType, Code);
264
30
  /**
265
31
  * Creates the default set of chart builders.
266
32
  * Call this to get a fresh array that you can extend or filter.
267
33
  */
268
34
  export function createDefaultChartBuilders() {
269
- return [
270
- countPlotBuilder,
271
- histogramBuilder,
272
- lineChartBuilder,
273
- ecdfBuilder,
274
- heatmapBuilder,
275
- boxPlotBuilder,
276
- bubbleChartBuilder,
277
- customSpecBuilder,
278
- ];
35
+ return createChartBuilderTemplates(createDefaultChartTypes());
279
36
  }
37
+ /**
38
+ * Named built-in chart templates for cherry-picking and
39
+ * {@link MosaicChartBuilder.chartBuilders}.
40
+ */
41
+ export const mosaicChartBuilders = {
42
+ countPlot: countPlotBuilder,
43
+ histogram: histogramBuilder,
44
+ lineChart: lineChartBuilder,
45
+ ecdf: ecdfBuilder,
46
+ heatmap: heatmapBuilder,
47
+ boxPlot: boxPlotBuilder,
48
+ bubbleChart: bubbleChartBuilder,
49
+ customSpec: customSpecBuilder,
50
+ };
280
51
  //# sourceMappingURL=builders.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"builders.js","sourceRoot":"","sources":["../../src/chart-builders/builders.ts"],"names":[],"mappings":"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","sourcesContent":["import {Spec} from '@uwdata/mosaic-spec';\nimport {\n AlignHorizontalDistributeCenter,\n BarChart3,\n BarChartHorizontal,\n BubblesIcon,\n Code,\n Grid3X3,\n LineChart,\n TrendingUp,\n} from 'lucide-react';\nimport {ChartBuilderTemplate} from './types';\n\nconst BG_COLOR = '#f5d9a6';\nconst FG_COLOR = '#e67f5f';\n\n/**\n * Creates a count plot (bar chart with counts) of a field\n */\nconst countPlotBuilder: ChartBuilderTemplate = {\n id: 'count-plot',\n icon: BarChartHorizontal,\n description: 'Create a count plot of a field',\n fields: [{key: 'field', label: 'Field', required: true}],\n createSpec: (tableName, {field}): Spec =>\n ({\n plot: [\n {\n mark: 'rectY',\n data: {from: tableName},\n x: {bin: field, maxbins: 25},\n y: {count: null},\n fill: BG_COLOR,\n inset: 0.5,\n },\n {\n mark: 'rectY',\n data: {from: tableName, filterBy: '$brush'},\n x: {bin: field, maxbins: 25},\n y: {count: null},\n fill: FG_COLOR,\n inset: 0.5,\n },\n {select: 'intervalX', as: '$brush'},\n ],\n xLabel: field,\n yLabel: null,\n yAxis: null,\n height: 200,\n width: 380,\n margins: {left: 0, right: 10, top: 10, bottom: 30},\n params: {brush: {select: 'crossfilter'}},\n }) as Spec,\n};\n\n/**\n * Creates a histogram with background/filtered overlay\n */\nconst histogramBuilder: ChartBuilderTemplate = {\n id: 'histogram',\n icon: BarChart3,\n description: 'Create a histogram of a field',\n fields: [{key: 'field', label: 'Field', required: true}],\n createSpec: (tableName, {field}): Spec =>\n ({\n plot: [\n {\n mark: 'rectY',\n data: {from: tableName},\n x: {bin: field, maxbins: 40},\n y: {count: null},\n fill: BG_COLOR,\n inset: 0.5,\n },\n {\n mark: 'rectY',\n data: {from: tableName, filterBy: '$brush'},\n x: {bin: field, maxbins: 40},\n y: {count: null},\n fill: FG_COLOR,\n inset: 0.5,\n },\n {select: 'intervalX', as: '$brush'},\n ],\n xLabel: field,\n yLabel: 'Count',\n height: 200,\n width: 380,\n margins: {left: 40, right: 10, top: 10, bottom: 30},\n params: {brush: {select: 'crossfilter'}},\n }) as Spec,\n};\n\n/**\n * Creates a line chart of two fields\n */\nconst lineChartBuilder: ChartBuilderTemplate = {\n id: 'line-chart',\n icon: LineChart,\n description: 'Create a line chart of two fields',\n fields: [\n {key: 'x', label: 'X Field', required: true},\n {key: 'y', label: 'Y Field', required: true},\n ],\n createSpec: (tableName, {x, y}): Spec =>\n ({\n plot: [\n {\n mark: 'lineY',\n data: {from: tableName, filterBy: '$brush'},\n x,\n y,\n stroke: FG_COLOR,\n },\n {select: 'intervalX', as: '$brush'},\n ],\n xLabel: x,\n yLabel: y,\n height: 250,\n width: 380,\n margins: {left: 50, right: 10, top: 10, bottom: 30},\n params: {brush: {select: 'crossfilter'}},\n }) as Spec,\n};\n\n/**\n * Creates an empirical cumulative distribution (eCDF) chart\n */\nconst ecdfBuilder: ChartBuilderTemplate = {\n id: 'ecdf',\n icon: TrendingUp,\n description: 'Create an eCDF chart of a field',\n fields: [{key: 'field', label: 'Field', required: true}],\n createSpec: (tableName, {field}): Spec =>\n ({\n plot: [\n {\n mark: 'areaY',\n data: {from: tableName, filterBy: '$brush'},\n x: field,\n y: {cumulative: field},\n fill: FG_COLOR,\n fillOpacity: 0.3,\n },\n {\n mark: 'lineY',\n data: {from: tableName, filterBy: '$brush'},\n x: field,\n y: {cumulative: field},\n stroke: FG_COLOR,\n },\n {select: 'intervalX', as: '$brush'},\n ],\n xLabel: field,\n yLabel: 'Cumulative',\n height: 250,\n width: 380,\n margins: {left: 50, right: 10, top: 10, bottom: 30},\n params: {brush: {select: 'crossfilter'}},\n }) as Spec,\n};\n\n/**\n * Creates a 2D heatmap of two fields\n */\nconst heatmapBuilder: ChartBuilderTemplate = {\n id: 'heatmap',\n icon: Grid3X3,\n description: 'Create a 2D heatmap of two fields',\n fields: [\n {key: 'x', label: 'X Field', required: true},\n {key: 'y', label: 'Y Field', required: true},\n ],\n createSpec: (tableName, {x, y}): Spec =>\n ({\n plot: [\n {\n mark: 'raster',\n data: {from: tableName, filterBy: '$brush'},\n x,\n y,\n fill: 'density',\n bandwidth: 0,\n pixelSize: 3,\n },\n {select: 'intervalXY', as: '$brush'},\n ],\n colorScale: 'sqrt',\n colorScheme: 'ylorrd',\n xLabel: x,\n yLabel: y,\n height: 250,\n width: 380,\n margins: {left: 40, right: 10, top: 15, bottom: 30},\n params: {brush: {select: 'crossfilter'}},\n }) as Spec,\n};\n\n/**\n * Creates a box plot\n */\nconst boxPlotBuilder: ChartBuilderTemplate = {\n id: 'box-plot',\n icon: AlignHorizontalDistributeCenter,\n description: 'Create a box plot',\n fields: [\n {key: 'x', label: 'X Field (categorical)', required: true},\n {key: 'y', label: 'Y Field (numeric)', required: true},\n ],\n createSpec: (tableName, {x, y}): Spec =>\n ({\n plot: [\n {\n mark: 'boxY',\n data: {from: tableName, filterBy: '$brush'},\n x,\n y,\n fill: FG_COLOR,\n },\n {select: 'intervalX', as: '$brush'},\n ],\n xLabel: x,\n yLabel: y,\n height: 250,\n width: 380,\n margins: {left: 50, right: 10, top: 10, bottom: 30},\n params: {brush: {select: 'crossfilter'}},\n }) as Spec,\n};\n\n/**\n * Creates a bubble chart\n */\nconst bubbleChartBuilder: ChartBuilderTemplate = {\n id: 'bubble-chart',\n icon: BubblesIcon,\n description: 'Create a bubble chart',\n fields: [\n {key: 'x', label: 'X Field', required: true},\n {key: 'y', label: 'Y Field', required: true},\n ],\n createSpec: (tableName, {x, y}): Spec =>\n ({\n plot: [\n {\n mark: 'dot',\n data: {from: tableName, filterBy: '$brush'},\n x,\n y,\n fill: FG_COLOR,\n fillOpacity: 0.5,\n r: 3,\n },\n {select: 'intervalXY', as: '$brush'},\n ],\n xLabel: x,\n yLabel: y,\n height: 250,\n width: 380,\n margins: {left: 50, right: 10, top: 10, bottom: 30},\n params: {brush: {select: 'crossfilter'}},\n }) as Spec,\n};\n\n/**\n * Creates a chart with custom spec (empty template)\n */\nconst customSpecBuilder: ChartBuilderTemplate = {\n id: 'custom-spec',\n icon: Code,\n description: 'Create a chart with custom spec',\n fields: [],\n createSpec: (tableName): Spec =>\n ({\n plot: [\n {\n mark: 'rectY',\n data: {from: tableName, filterBy: '$brush'},\n x: {bin: 'field_name', maxbins: 25},\n y: {count: null},\n fill: 'steelblue',\n inset: 0.5,\n },\n {select: 'intervalX', as: '$brush'},\n ],\n xLabel: 'field_name',\n height: 200,\n width: 380,\n params: {brush: {select: 'crossfilter'}},\n }) as Spec,\n};\n\n/**\n * Creates the default set of chart builders.\n * Call this to get a fresh array that you can extend or filter.\n */\nexport function createDefaultChartBuilders(): ChartBuilderTemplate[] {\n return [\n countPlotBuilder,\n histogramBuilder,\n lineChartBuilder,\n ecdfBuilder,\n heatmapBuilder,\n boxPlotBuilder,\n bubbleChartBuilder,\n customSpecBuilder,\n ];\n}\n"]}
1
+ {"version":3,"file":"builders.js","sourceRoot":"","sources":["../../src/chart-builders/builders.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,SAAS,EACT,kBAAkB,EAClB,QAAQ,IAAI,WAAW,EACvB,mBAAmB,EACnB,IAAI,EACJ,OAAO,EACP,SAAS,EACT,UAAU,GACX,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,gBAAgB,CAAC;AAExB,MAAM,qBAAqB,GAGvB;IACF,YAAY,EAAE,kBAAkB;IAChC,SAAS,EAAE,SAAS;IACpB,YAAY,EAAE,SAAS;IACvB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,+BAA+B;IAC3C,cAAc,EAAE,WAAW;IAC3B,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF,MAAM,UAAU,0BAA0B,CACxC,SAA8B,EAC9B,OAA4C,mBAAmB;IAE/D,OAAO;QACL,GAAG,SAAS;QACZ,IAAI;KACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,UAAiC;IAEjC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAClC,0BAA0B,CACxB,SAAS,EACT,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,mBAAmB,CAC3D,CACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,0BAA0B,CACxD,kBAAkB,EAClB,kBAAkB,CACnB,CAAC;AACF,MAAM,CAAC,MAAM,gBAAgB,GAAG,0BAA0B,CACxD,kBAAkB,EAClB,SAAS,CACV,CAAC;AACF,MAAM,CAAC,MAAM,gBAAgB,GAAG,0BAA0B,CACxD,kBAAkB,EAClB,SAAS,CACV,CAAC;AACF,MAAM,CAAC,MAAM,WAAW,GAAG,0BAA0B,CACnD,aAAa,EACb,UAAU,CACX,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG,0BAA0B,CACtD,gBAAgB,EAChB,OAAO,CACR,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG,0BAA0B,CACtD,gBAAgB,EAChB,+BAA+B,CAChC,CAAC;AACF,MAAM,CAAC,MAAM,kBAAkB,GAAG,0BAA0B,CAC1D,oBAAoB,EACpB,WAAW,CACZ,CAAC;AACF,MAAM,CAAC,MAAM,iBAAiB,GAAG,0BAA0B,CACzD,mBAAmB,EACnB,IAAI,CACL,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,0BAA0B;IACxC,OAAO,2BAA2B,CAAC,uBAAuB,EAAE,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,gBAAgB;IAC3B,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,cAAc;IACvB,OAAO,EAAE,cAAc;IACvB,WAAW,EAAE,kBAAkB;IAC/B,UAAU,EAAE,iBAAiB;CACrB,CAAC","sourcesContent":["import {\n AlignHorizontalDistributeCenter,\n BarChart3,\n BarChartHorizontal,\n Workflow as BubblesIcon,\n ChartNoAxesCombined,\n Code,\n Grid3X3,\n LineChart,\n TrendingUp,\n} from 'lucide-react';\nimport type {ComponentType} from 'react';\nimport type {ChartBuilderTemplate, ChartTypeDefinition} from './types';\nimport {\n boxPlotChartType,\n bubbleChartChartType,\n countPlotChartType,\n createDefaultChartTypes,\n customSpecChartType,\n ecdfChartType,\n heatmapChartType,\n histogramChartType,\n lineChartChartType,\n mosaicChartTypes,\n} from '../chart-types';\n\nconst defaultChartTypeIcons: Record<\n string,\n ComponentType<{className?: string}>\n> = {\n 'count-plot': BarChartHorizontal,\n histogram: BarChart3,\n 'line-chart': LineChart,\n ecdf: TrendingUp,\n heatmap: Grid3X3,\n 'box-plot': AlignHorizontalDistributeCenter,\n 'bubble-chart': BubblesIcon,\n 'custom-spec': Code,\n};\n\nexport function createChartBuilderTemplate(\n chartType: ChartTypeDefinition,\n icon: ComponentType<{className?: string}> = ChartNoAxesCombined,\n): ChartBuilderTemplate {\n return {\n ...chartType,\n icon,\n };\n}\n\nexport function createChartBuilderTemplates(\n chartTypes: ChartTypeDefinition[],\n): ChartBuilderTemplate[] {\n return chartTypes.map((chartType) =>\n createChartBuilderTemplate(\n chartType,\n defaultChartTypeIcons[chartType.id] ?? ChartNoAxesCombined,\n ),\n );\n}\n\nexport const countPlotBuilder = createChartBuilderTemplate(\n countPlotChartType,\n BarChartHorizontal,\n);\nexport const histogramBuilder = createChartBuilderTemplate(\n histogramChartType,\n BarChart3,\n);\nexport const lineChartBuilder = createChartBuilderTemplate(\n lineChartChartType,\n LineChart,\n);\nexport const ecdfBuilder = createChartBuilderTemplate(\n ecdfChartType,\n TrendingUp,\n);\nexport const heatmapBuilder = createChartBuilderTemplate(\n heatmapChartType,\n Grid3X3,\n);\nexport const boxPlotBuilder = createChartBuilderTemplate(\n boxPlotChartType,\n AlignHorizontalDistributeCenter,\n);\nexport const bubbleChartBuilder = createChartBuilderTemplate(\n bubbleChartChartType,\n BubblesIcon,\n);\nexport const customSpecBuilder = createChartBuilderTemplate(\n customSpecChartType,\n Code,\n);\n\n/**\n * Creates the default set of chart builders.\n * Call this to get a fresh array that you can extend or filter.\n */\nexport function createDefaultChartBuilders(): ChartBuilderTemplate[] {\n return createChartBuilderTemplates(createDefaultChartTypes());\n}\n\n/**\n * Named built-in chart templates for cherry-picking and\n * {@link MosaicChartBuilder.chartBuilders}.\n */\nexport const mosaicChartBuilders = {\n countPlot: countPlotBuilder,\n histogram: histogramBuilder,\n lineChart: lineChartBuilder,\n ecdf: ecdfBuilder,\n heatmap: heatmapBuilder,\n boxPlot: boxPlotBuilder,\n bubbleChart: bubbleChartBuilder,\n customSpec: customSpecBuilder,\n} as const;\n"]}
@@ -1,7 +1,6 @@
1
- import type { ChartSpec } from './types';
1
+ import type { ChartTypeDefinition } from './types';
2
2
  /**
3
- * Human-readable chart title from a spec and selected field values.
4
- * Matches the logic used in {@link ChartBuilderContent}.
3
+ * Human-readable chart title from a chart type and selected field values.
5
4
  */
6
- export declare function buildChartTitleForSpec(spec: Pick<ChartSpec, 'description' | 'fields'>, fieldValues: Record<string, string>): string;
5
+ export declare function buildChartTitleForSpec(spec: Pick<ChartTypeDefinition, 'description' | 'buildTitle'>, fieldValues: Record<string, string>): string;
7
6
  //# sourceMappingURL=chartSpecTitle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chartSpecTitle.d.ts","sourceRoot":"","sources":["../../src/chart-builders/chartSpecTitle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAEvC;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,GAAG,QAAQ,CAAC,EAC/C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,MAAM,CAIR"}
1
+ {"version":3,"file":"chartSpecTitle.d.ts","sourceRoot":"","sources":["../../src/chart-builders/chartSpecTitle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAGjD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,GAAG,YAAY,CAAC,EAC7D,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,MAAM,CAER"}
@@ -1,10 +1,8 @@
1
+ import { buildChartTypeTitle } from './chartTypeUtils';
1
2
  /**
2
- * Human-readable chart title from a spec and selected field values.
3
- * Matches the logic used in {@link ChartBuilderContent}.
3
+ * Human-readable chart title from a chart type and selected field values.
4
4
  */
5
5
  export function buildChartTitleForSpec(spec, fieldValues) {
6
- return spec.fields.length > 0
7
- ? `${spec.description.replace(/^Create (a |an )?/, '')} - ${Object.values(fieldValues).join(', ')}`
8
- : spec.description.replace(/^Create (a |an )?/, '');
6
+ return buildChartTypeTitle(spec, fieldValues);
9
7
  }
10
8
  //# sourceMappingURL=chartSpecTitle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chartSpecTitle.js","sourceRoot":"","sources":["../../src/chart-builders/chartSpecTitle.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAA+C,EAC/C,WAAmC;IAEnC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAC3B,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACnG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC","sourcesContent":["import type {ChartSpec} from './types';\n\n/**\n * Human-readable chart title from a spec and selected field values.\n * Matches the logic used in {@link ChartBuilderContent}.\n */\nexport function buildChartTitleForSpec(\n spec: Pick<ChartSpec, 'description' | 'fields'>,\n fieldValues: Record<string, string>,\n): string {\n return spec.fields.length > 0\n ? `${spec.description.replace(/^Create (a |an )?/, '')} - ${Object.values(fieldValues).join(', ')}`\n : spec.description.replace(/^Create (a |an )?/, '');\n}\n"]}
1
+ {"version":3,"file":"chartSpecTitle.js","sourceRoot":"","sources":["../../src/chart-builders/chartSpecTitle.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAA6D,EAC7D,WAAmC;IAEnC,OAAO,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAChD,CAAC","sourcesContent":["import type {ChartTypeDefinition} from './types';\nimport {buildChartTypeTitle} from './chartTypeUtils';\n\n/**\n * Human-readable chart title from a chart type and selected field values.\n */\nexport function buildChartTitleForSpec(\n spec: Pick<ChartTypeDefinition, 'description' | 'buildTitle'>,\n fieldValues: Record<string, string>,\n): string {\n return buildChartTypeTitle(spec, fieldValues);\n}\n"]}
@@ -0,0 +1,17 @@
1
+ import type { ChartBuilderColumn, ChartBuilderField, ChartTypeDefinition } from './types';
2
+ export { NUMERIC_COLUMN_TYPES, TEMPORAL_COLUMN_TYPES, QUANTITATIVE_COLUMN_TYPES, } from './constants';
3
+ /**
4
+ * Build a default chart title from description and field values
5
+ */
6
+ export declare function buildDefaultChartTitle(description: string, fieldValues: Record<string, string>): string;
7
+ /**
8
+ * Create a title builder function from a description string
9
+ */
10
+ export declare function titleFromDescription(description: string): (fieldValues: Record<string, string>) => string;
11
+ export declare function columnMatchesFieldTypes(column: ChartBuilderColumn, field: Pick<ChartBuilderField, 'types'>): boolean;
12
+ export declare function getCompatibleColumns(columns: ChartBuilderColumn[], field: Pick<ChartBuilderField, 'types'>): ChartBuilderColumn[];
13
+ export declare function isChartTypeAvailable(chartType: ChartTypeDefinition, columns: ChartBuilderColumn[]): boolean;
14
+ export declare function getAvailableChartTypes(chartTypes: ChartTypeDefinition[], columns: ChartBuilderColumn[]): ChartTypeDefinition[];
15
+ export declare function buildChartTypeTitle(chartType: Pick<ChartTypeDefinition, 'description' | 'buildTitle'>, fieldValues: Record<string, string>): string;
16
+ export declare function canCreateChartFromType(chartType: ChartTypeDefinition | null | undefined, fieldValues: Record<string, string>, columns: ChartBuilderColumn[]): boolean;
17
+ //# sourceMappingURL=chartTypeUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartTypeUtils.d.ts","sourceRoot":"","sources":["../../src/chart-builders/chartTypeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,MAAM,CAOR;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,IAC9C,aAAa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAE5C;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,GACtC,OAAO,CAKT;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,kBAAkB,EAAE,EAC7B,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,GACtC,kBAAkB,EAAE,CAEtB;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,mBAAmB,EAC9B,OAAO,EAAE,kBAAkB,EAAE,GAC5B,OAAO,CAQT;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,mBAAmB,EAAE,EACjC,OAAO,EAAE,kBAAkB,EAAE,GAC5B,mBAAmB,EAAE,CAIvB;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,GAAG,YAAY,CAAC,EAClE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,MAAM,CAIR;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,EACjD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,OAAO,EAAE,kBAAkB,EAAE,GAC5B,OAAO,CAWT"}
@@ -0,0 +1,55 @@
1
+ export { NUMERIC_COLUMN_TYPES, TEMPORAL_COLUMN_TYPES, QUANTITATIVE_COLUMN_TYPES, } from './constants';
2
+ /**
3
+ * Build a default chart title from description and field values
4
+ */
5
+ export function buildDefaultChartTitle(description, fieldValues) {
6
+ const baseTitle = description.replace(/^Create (a |an )?/, '');
7
+ const selectedFields = Object.values(fieldValues).filter(Boolean);
8
+ return selectedFields.length > 0
9
+ ? `${baseTitle} - ${selectedFields.join(', ')}`
10
+ : baseTitle;
11
+ }
12
+ /**
13
+ * Create a title builder function from a description string
14
+ */
15
+ export function titleFromDescription(description) {
16
+ return (fieldValues) => buildDefaultChartTitle(description, fieldValues);
17
+ }
18
+ export function columnMatchesFieldTypes(column, field) {
19
+ if (!field.types?.length)
20
+ return true;
21
+ return field.types.some((type) => column.type.toUpperCase() === type.toUpperCase());
22
+ }
23
+ export function getCompatibleColumns(columns, field) {
24
+ return columns.filter((column) => columnMatchesFieldTypes(column, field));
25
+ }
26
+ export function isChartTypeAvailable(chartType, columns) {
27
+ if (chartType.isAvailable) {
28
+ return chartType.isAvailable(columns);
29
+ }
30
+ return chartType.fields
31
+ .filter((field) => field.required !== false)
32
+ .every((field) => getCompatibleColumns(columns, field).length > 0);
33
+ }
34
+ export function getAvailableChartTypes(chartTypes, columns) {
35
+ return chartTypes.filter((chartType) => isChartTypeAvailable(chartType, columns));
36
+ }
37
+ export function buildChartTypeTitle(chartType, fieldValues) {
38
+ return chartType.buildTitle
39
+ ? chartType.buildTitle(fieldValues)
40
+ : buildDefaultChartTitle(chartType.description, fieldValues);
41
+ }
42
+ export function canCreateChartFromType(chartType, fieldValues, columns) {
43
+ if (!chartType)
44
+ return false;
45
+ return chartType.fields
46
+ .filter((field) => field.required !== false)
47
+ .every((field) => {
48
+ const value = fieldValues[field.key];
49
+ if (!value)
50
+ return false;
51
+ const column = columns.find((candidate) => candidate.name === value);
52
+ return Boolean(column && columnMatchesFieldTypes(column, field));
53
+ });
54
+ }
55
+ //# sourceMappingURL=chartTypeUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chartTypeUtils.js","sourceRoot":"","sources":["../../src/chart-builders/chartTypeUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ChartBuilderColumn,\n ChartBuilderField,\n ChartTypeDefinition,\n} from './types';\n\nexport {\n NUMERIC_COLUMN_TYPES,\n TEMPORAL_COLUMN_TYPES,\n QUANTITATIVE_COLUMN_TYPES,\n} from './constants';\n\n/**\n * Build a default chart title from description and field values\n */\nexport function buildDefaultChartTitle(\n description: string,\n fieldValues: Record<string, string>,\n): string {\n const baseTitle = description.replace(/^Create (a |an )?/, '');\n const selectedFields = Object.values(fieldValues).filter(Boolean);\n\n return selectedFields.length > 0\n ? `${baseTitle} - ${selectedFields.join(', ')}`\n : baseTitle;\n}\n\n/**\n * Create a title builder function from a description string\n */\nexport function titleFromDescription(description: string) {\n return (fieldValues: Record<string, string>) =>\n buildDefaultChartTitle(description, fieldValues);\n}\n\nexport function columnMatchesFieldTypes(\n column: ChartBuilderColumn,\n field: Pick<ChartBuilderField, 'types'>,\n): boolean {\n if (!field.types?.length) return true;\n return field.types.some(\n (type) => column.type.toUpperCase() === type.toUpperCase(),\n );\n}\n\nexport function getCompatibleColumns(\n columns: ChartBuilderColumn[],\n field: Pick<ChartBuilderField, 'types'>,\n): ChartBuilderColumn[] {\n return columns.filter((column) => columnMatchesFieldTypes(column, field));\n}\n\nexport function isChartTypeAvailable(\n chartType: ChartTypeDefinition,\n columns: ChartBuilderColumn[],\n): boolean {\n if (chartType.isAvailable) {\n return chartType.isAvailable(columns);\n }\n\n return chartType.fields\n .filter((field) => field.required !== false)\n .every((field) => getCompatibleColumns(columns, field).length > 0);\n}\n\nexport function getAvailableChartTypes(\n chartTypes: ChartTypeDefinition[],\n columns: ChartBuilderColumn[],\n): ChartTypeDefinition[] {\n return chartTypes.filter((chartType) =>\n isChartTypeAvailable(chartType, columns),\n );\n}\n\nexport function buildChartTypeTitle(\n chartType: Pick<ChartTypeDefinition, 'description' | 'buildTitle'>,\n fieldValues: Record<string, string>,\n): string {\n return chartType.buildTitle\n ? chartType.buildTitle(fieldValues)\n : buildDefaultChartTitle(chartType.description, fieldValues);\n}\n\nexport function canCreateChartFromType(\n chartType: ChartTypeDefinition | null | undefined,\n fieldValues: Record<string, string>,\n columns: ChartBuilderColumn[],\n): boolean {\n if (!chartType) return false;\n\n return chartType.fields\n .filter((field) => field.required !== false)\n .every((field) => {\n const value = fieldValues[field.key];\n if (!value) return false;\n const column = columns.find((candidate) => candidate.name === value);\n return Boolean(column && columnMatchesFieldTypes(column, field));\n });\n}\n"]}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Column type constants for chart field type filtering
3
+ */
4
+ export declare const NUMERIC_COLUMN_TYPES: string[];
5
+ export declare const TEMPORAL_COLUMN_TYPES: string[];
6
+ export declare const QUANTITATIVE_COLUMN_TYPES: string[];
7
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/chart-builders/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,oBAAoB,UAgBhC,CAAC;AAEF,eAAO,MAAM,qBAAqB,UAQjC,CAAC;AAEF,eAAO,MAAM,yBAAyB,UAGrC,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Column type constants for chart field type filtering
3
+ */
4
+ export const NUMERIC_COLUMN_TYPES = [
5
+ 'BIGINT',
6
+ 'BIT',
7
+ 'DECIMAL',
8
+ 'DOUBLE',
9
+ 'FLOAT',
10
+ 'HUGEINT',
11
+ 'INTEGER',
12
+ 'REAL',
13
+ 'SMALLINT',
14
+ 'TINYINT',
15
+ 'UBIGINT',
16
+ 'UHUGEINT',
17
+ 'UINTEGER',
18
+ 'USMALLINT',
19
+ 'UTINYINT',
20
+ ];
21
+ export const TEMPORAL_COLUMN_TYPES = [
22
+ 'DATE',
23
+ 'TIME',
24
+ 'TIMESTAMP',
25
+ 'TIMESTAMP_MS',
26
+ 'TIMESTAMP_NS',
27
+ 'TIMESTAMP_S',
28
+ 'TIMESTAMPTZ',
29
+ ];
30
+ export const QUANTITATIVE_COLUMN_TYPES = [
31
+ ...NUMERIC_COLUMN_TYPES,
32
+ ...TEMPORAL_COLUMN_TYPES,
33
+ ];
34
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/chart-builders/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,QAAQ;IACR,KAAK;IACL,SAAS;IACT,QAAQ;IACR,OAAO;IACP,SAAS;IACT,SAAS;IACT,MAAM;IACN,UAAU;IACV,SAAS;IACT,SAAS;IACT,UAAU;IACV,UAAU;IACV,WAAW;IACX,UAAU;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,MAAM;IACN,MAAM;IACN,WAAW;IACX,cAAc;IACd,cAAc;IACd,aAAa;IACb,aAAa;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,GAAG,oBAAoB;IACvB,GAAG,qBAAqB;CACzB,CAAC","sourcesContent":["/**\n * Column type constants for chart field type filtering\n */\n\nexport const NUMERIC_COLUMN_TYPES = [\n 'BIGINT',\n 'BIT',\n 'DECIMAL',\n 'DOUBLE',\n 'FLOAT',\n 'HUGEINT',\n 'INTEGER',\n 'REAL',\n 'SMALLINT',\n 'TINYINT',\n 'UBIGINT',\n 'UHUGEINT',\n 'UINTEGER',\n 'USMALLINT',\n 'UTINYINT',\n];\n\nexport const TEMPORAL_COLUMN_TYPES = [\n 'DATE',\n 'TIME',\n 'TIMESTAMP',\n 'TIMESTAMP_MS',\n 'TIMESTAMP_NS',\n 'TIMESTAMP_S',\n 'TIMESTAMPTZ',\n];\n\nexport const QUANTITATIVE_COLUMN_TYPES = [\n ...NUMERIC_COLUMN_TYPES,\n ...TEMPORAL_COLUMN_TYPES,\n];\n"]}
@@ -0,0 +1,11 @@
1
+ import { VgPlotChartType } from '../chart-types';
2
+ export type ChartBuilderStoreState = {
3
+ selectedTemplateId?: VgPlotChartType;
4
+ fieldValues: Record<string, string>;
5
+ reset: () => void;
6
+ selectTemplate: (templateId: VgPlotChartType) => void;
7
+ setFieldValue: (fieldKey: string, value: string) => void;
8
+ };
9
+ export type ChartBuilderStore = ReturnType<typeof createChartBuilderStore>;
10
+ export declare function createChartBuilderStore(): import("zustand").StoreApi<ChartBuilderStoreState>;
11
+ //# sourceMappingURL=createChartBuilderStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createChartBuilderStore.d.ts","sourceRoot":"","sources":["../../src/chart-builders/createChartBuilderStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAE/C,MAAM,MAAM,sBAAsB,GAAG;IACnC,kBAAkB,CAAC,EAAE,eAAe,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,cAAc,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;IACtD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE3E,wBAAgB,uBAAuB,uDA4BtC"}
@@ -0,0 +1,26 @@
1
+ import { produce } from 'immer';
2
+ import { createStore } from 'zustand/vanilla';
3
+ export function createChartBuilderStore() {
4
+ return createStore((set) => ({
5
+ selectedTemplateId: undefined,
6
+ fieldValues: {},
7
+ reset: () => {
8
+ set((state) => produce(state, (draft) => {
9
+ draft.selectedTemplateId = undefined;
10
+ draft.fieldValues = {};
11
+ }));
12
+ },
13
+ selectTemplate: (templateId) => {
14
+ set((state) => produce(state, (draft) => {
15
+ draft.selectedTemplateId = templateId;
16
+ draft.fieldValues = {};
17
+ }));
18
+ },
19
+ setFieldValue: (fieldKey, value) => {
20
+ set((state) => produce(state, (draft) => {
21
+ draft.fieldValues[fieldKey] = value;
22
+ }));
23
+ },
24
+ }));
25
+ }
26
+ //# sourceMappingURL=createChartBuilderStore.js.map