@sqlrooms/mosaic 0.29.0-rc.3 → 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 (472) hide show
  1. package/README.md +90 -1
  2. package/dist/MosaicChartBuilder.d.ts +0 -4
  3. package/dist/MosaicChartBuilder.d.ts.map +1 -1
  4. package/dist/MosaicChartBuilder.js +0 -6
  5. package/dist/MosaicChartBuilder.js.map +1 -1
  6. package/dist/MosaicSlice.d.ts +17 -10
  7. package/dist/MosaicSlice.d.ts.map +1 -1
  8. package/dist/MosaicSlice.js +4 -1
  9. package/dist/MosaicSlice.js.map +1 -1
  10. package/dist/boxplot/BoxPlotClient.d.ts +58 -0
  11. package/dist/boxplot/BoxPlotClient.d.ts.map +1 -0
  12. package/dist/boxplot/BoxPlotClient.js +264 -0
  13. package/dist/boxplot/BoxPlotClient.js.map +1 -0
  14. package/dist/chart/MosaicDashboardChart.d.ts +14 -0
  15. package/dist/chart/MosaicDashboardChart.d.ts.map +1 -0
  16. package/dist/chart/MosaicDashboardChart.js +21 -0
  17. package/dist/chart/MosaicDashboardChart.js.map +1 -0
  18. package/dist/chart/MosaicDashboardChartContent.d.ts +16 -0
  19. package/dist/chart/MosaicDashboardChartContent.d.ts.map +1 -0
  20. package/dist/chart/MosaicDashboardChartContent.js +18 -0
  21. package/dist/chart/MosaicDashboardChartContent.js.map +1 -0
  22. package/dist/chart/MosaicDashboardChartHeaderActions.d.ts +4 -0
  23. package/dist/chart/MosaicDashboardChartHeaderActions.d.ts.map +1 -0
  24. package/dist/chart/MosaicDashboardChartHeaderActions.js +16 -0
  25. package/dist/chart/MosaicDashboardChartHeaderActions.js.map +1 -0
  26. package/dist/chart/MosaicDashboardChartRenderer.d.ts +3 -0
  27. package/dist/chart/MosaicDashboardChartRenderer.d.ts.map +1 -0
  28. package/dist/chart/MosaicDashboardChartRenderer.js +31 -0
  29. package/dist/chart/MosaicDashboardChartRenderer.js.map +1 -0
  30. package/dist/chart/MosaicDashboardComponentChart.d.ts +14 -0
  31. package/dist/chart/MosaicDashboardComponentChart.d.ts.map +1 -0
  32. package/dist/chart/MosaicDashboardComponentChart.js +11 -0
  33. package/dist/chart/MosaicDashboardComponentChart.js.map +1 -0
  34. package/dist/chart/MosaicDashboardVgPlotChart.d.ts +10 -0
  35. package/dist/chart/MosaicDashboardVgPlotChart.d.ts.map +1 -0
  36. package/dist/chart/MosaicDashboardVgPlotChart.js +10 -0
  37. package/dist/chart/MosaicDashboardVgPlotChart.js.map +1 -0
  38. package/dist/chart/MosaicDashboardVgPlotError.d.ts +8 -0
  39. package/dist/chart/MosaicDashboardVgPlotError.d.ts.map +1 -0
  40. package/dist/chart/MosaicDashboardVgPlotError.js +11 -0
  41. package/dist/chart/MosaicDashboardVgPlotError.js.map +1 -0
  42. package/dist/{dashboard → chart}/chart-settings/ChartSettings.d.ts +12 -7
  43. package/dist/chart/chart-settings/ChartSettings.d.ts.map +1 -0
  44. package/dist/chart/chart-settings/ChartSettings.js +71 -0
  45. package/dist/chart/chart-settings/ChartSettings.js.map +1 -0
  46. package/dist/chart/chart-settings/ChartSettingsContent.d.ts +13 -0
  47. package/dist/chart/chart-settings/ChartSettingsContent.d.ts.map +1 -0
  48. package/dist/chart/chart-settings/ChartSettingsContent.js +18 -0
  49. package/dist/chart/chart-settings/ChartSettingsContent.js.map +1 -0
  50. package/dist/chart/chart-settings/ChartSettingsContext.d.ts +27 -0
  51. package/dist/chart/chart-settings/ChartSettingsContext.d.ts.map +1 -0
  52. package/dist/chart/chart-settings/ChartSettingsContext.js +35 -0
  53. package/dist/chart/chart-settings/ChartSettingsContext.js.map +1 -0
  54. package/dist/chart/chart-settings/ChartSettingsPanel.d.ts +14 -0
  55. package/dist/chart/chart-settings/ChartSettingsPanel.d.ts.map +1 -0
  56. package/dist/chart/chart-settings/ChartSettingsPanel.js +17 -0
  57. package/dist/chart/chart-settings/ChartSettingsPanel.js.map +1 -0
  58. package/dist/chart/chart-settings/ChartSpecViewerPanel.d.ts +9 -0
  59. package/dist/chart/chart-settings/ChartSpecViewerPanel.d.ts.map +1 -0
  60. package/dist/chart/chart-settings/ChartSpecViewerPanel.js +11 -0
  61. package/dist/chart/chart-settings/ChartSpecViewerPanel.js.map +1 -0
  62. package/dist/chart/chart-settings/ChartTypeSelector.d.ts +9 -0
  63. package/dist/chart/chart-settings/ChartTypeSelector.d.ts.map +1 -0
  64. package/dist/chart/chart-settings/ChartTypeSelector.js +16 -0
  65. package/dist/chart/chart-settings/ChartTypeSelector.js.map +1 -0
  66. package/dist/chart/chart-settings/useTableColumns.d.ts.map +1 -0
  67. package/dist/{dashboard → chart}/chart-settings/useTableColumns.js +1 -1
  68. package/dist/chart/chart-settings/useTableColumns.js.map +1 -0
  69. package/dist/chart/useBrushSelectionParams.d.ts +3 -0
  70. package/dist/chart/useBrushSelectionParams.d.ts.map +1 -0
  71. package/dist/chart/useBrushSelectionParams.js +16 -0
  72. package/dist/chart/useBrushSelectionParams.js.map +1 -0
  73. package/dist/chart/useChartRetainer.d.ts +3 -0
  74. package/dist/chart/useChartRetainer.d.ts.map +1 -0
  75. package/dist/chart/useChartRetainer.js +11 -0
  76. package/dist/chart/useChartRetainer.js.map +1 -0
  77. package/dist/chart/useGenerateSpec.d.ts +13 -0
  78. package/dist/chart/useGenerateSpec.d.ts.map +1 -0
  79. package/dist/chart/useGenerateSpec.js +32 -0
  80. package/dist/chart/useGenerateSpec.js.map +1 -0
  81. package/dist/chart-builders/AggregationSelector.d.ts +11 -0
  82. package/dist/chart-builders/AggregationSelector.d.ts.map +1 -0
  83. package/dist/chart-builders/AggregationSelector.js +9 -0
  84. package/dist/chart-builders/AggregationSelector.js.map +1 -0
  85. package/dist/chart-builders/ChartBuilderActions.d.ts +2 -2
  86. package/dist/chart-builders/ChartBuilderActions.d.ts.map +1 -1
  87. package/dist/chart-builders/ChartBuilderActions.js +24 -16
  88. package/dist/chart-builders/ChartBuilderActions.js.map +1 -1
  89. package/dist/chart-builders/ChartBuilderContent.d.ts +4 -6
  90. package/dist/chart-builders/ChartBuilderContent.d.ts.map +1 -1
  91. package/dist/chart-builders/ChartBuilderContent.js.map +1 -1
  92. package/dist/chart-builders/ChartBuilderContext.d.ts +5 -6
  93. package/dist/chart-builders/ChartBuilderContext.d.ts.map +1 -1
  94. package/dist/chart-builders/ChartBuilderContext.js.map +1 -1
  95. package/dist/chart-builders/ChartBuilderDialog.d.ts +7 -10
  96. package/dist/chart-builders/ChartBuilderDialog.d.ts.map +1 -1
  97. package/dist/chart-builders/ChartBuilderDialog.js +1 -1
  98. package/dist/chart-builders/ChartBuilderDialog.js.map +1 -1
  99. package/dist/chart-builders/ChartBuilderFields.d.ts +2 -2
  100. package/dist/chart-builders/ChartBuilderFields.d.ts.map +1 -1
  101. package/dist/chart-builders/ChartBuilderFields.js +28 -14
  102. package/dist/chart-builders/ChartBuilderFields.js.map +1 -1
  103. package/dist/chart-builders/ChartBuilderRoot.d.ts +4 -6
  104. package/dist/chart-builders/ChartBuilderRoot.d.ts.map +1 -1
  105. package/dist/chart-builders/ChartBuilderRoot.js +9 -28
  106. package/dist/chart-builders/ChartBuilderRoot.js.map +1 -1
  107. package/dist/chart-builders/ColumnSelector.d.ts +15 -0
  108. package/dist/chart-builders/ColumnSelector.d.ts.map +1 -0
  109. package/dist/chart-builders/ColumnSelector.js +31 -0
  110. package/dist/chart-builders/ColumnSelector.js.map +1 -0
  111. package/dist/chart-builders/Field.d.ts +11 -0
  112. package/dist/chart-builders/Field.d.ts.map +1 -0
  113. package/dist/chart-builders/Field.js +9 -0
  114. package/dist/chart-builders/Field.js.map +1 -0
  115. package/dist/chart-builders/FieldSelectorInput.d.ts +2 -1
  116. package/dist/chart-builders/FieldSelectorInput.d.ts.map +1 -1
  117. package/dist/chart-builders/FieldSelectorInput.js +5 -5
  118. package/dist/chart-builders/FieldSelectorInput.js.map +1 -1
  119. package/dist/chart-builders/MultiFieldSelector.d.ts +14 -0
  120. package/dist/chart-builders/MultiFieldSelector.d.ts.map +1 -0
  121. package/dist/chart-builders/MultiFieldSelector.js +53 -0
  122. package/dist/chart-builders/MultiFieldSelector.js.map +1 -0
  123. package/dist/chart-builders/TemporalGranularitySelector.d.ts +10 -0
  124. package/dist/chart-builders/TemporalGranularitySelector.d.ts.map +1 -0
  125. package/dist/chart-builders/TemporalGranularitySelector.js +37 -0
  126. package/dist/chart-builders/TemporalGranularitySelector.js.map +1 -0
  127. package/dist/chart-builders/chartSpecTitle.d.ts +1 -1
  128. package/dist/chart-builders/chartSpecTitle.d.ts.map +1 -1
  129. package/dist/chart-builders/chartSpecTitle.js.map +1 -1
  130. package/dist/chart-builders/chartTypeUtils.d.ts +5 -9
  131. package/dist/chart-builders/chartTypeUtils.d.ts.map +1 -1
  132. package/dist/chart-builders/chartTypeUtils.js +24 -32
  133. package/dist/chart-builders/chartTypeUtils.js.map +1 -1
  134. package/dist/chart-builders/constants.d.ts +5 -0
  135. package/dist/chart-builders/constants.d.ts.map +1 -1
  136. package/dist/chart-builders/constants.js +13 -0
  137. package/dist/chart-builders/constants.js.map +1 -1
  138. package/dist/chart-builders/createChartBuilderStore.d.ts +5 -5
  139. package/dist/chart-builders/createChartBuilderStore.d.ts.map +1 -1
  140. package/dist/chart-builders/createChartBuilderStore.js.map +1 -1
  141. package/dist/chart-types/base-types.d.ts +112 -18
  142. package/dist/chart-types/base-types.d.ts.map +1 -1
  143. package/dist/chart-types/base-types.js +6 -1
  144. package/dist/chart-types/base-types.js.map +1 -1
  145. package/dist/chart-types/box-plot/BoxPlotSettings.d.ts +3 -0
  146. package/dist/chart-types/box-plot/BoxPlotSettings.d.ts.map +1 -0
  147. package/dist/chart-types/box-plot/BoxPlotSettings.js +9 -0
  148. package/dist/chart-types/box-plot/BoxPlotSettings.js.map +1 -0
  149. package/dist/chart-types/box-plot/definition.d.ts +3 -3
  150. package/dist/chart-types/box-plot/definition.d.ts.map +1 -1
  151. package/dist/chart-types/box-plot/definition.js +10 -36
  152. package/dist/chart-types/box-plot/definition.js.map +1 -1
  153. package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.d.ts +18 -0
  154. package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.d.ts.map +1 -0
  155. package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.js +28 -0
  156. package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.js.map +1 -0
  157. package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.d.ts +9 -0
  158. package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.d.ts.map +1 -0
  159. package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js +115 -0
  160. package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js.map +1 -0
  161. package/dist/chart-types/box-plot/renderer/constants.d.ts +24 -0
  162. package/dist/chart-types/box-plot/renderer/constants.d.ts.map +1 -0
  163. package/dist/chart-types/box-plot/renderer/constants.js +17 -0
  164. package/dist/chart-types/box-plot/renderer/constants.js.map +1 -0
  165. package/dist/chart-types/box-plot/renderer/plot.d.ts +14 -0
  166. package/dist/chart-types/box-plot/renderer/plot.d.ts.map +1 -0
  167. package/dist/chart-types/box-plot/renderer/plot.js +91 -0
  168. package/dist/chart-types/box-plot/renderer/plot.js.map +1 -0
  169. package/dist/chart-types/box-plot/renderer/useBoxPlotClient.d.ts +14 -0
  170. package/dist/chart-types/box-plot/renderer/useBoxPlotClient.d.ts.map +1 -0
  171. package/dist/chart-types/box-plot/renderer/useBoxPlotClient.js +45 -0
  172. package/dist/chart-types/box-plot/renderer/useBoxPlotClient.js.map +1 -0
  173. package/dist/chart-types/box-plot/renderer/utils.d.ts +6 -0
  174. package/dist/chart-types/box-plot/renderer/utils.d.ts.map +1 -0
  175. package/dist/chart-types/box-plot/renderer/utils.js +34 -0
  176. package/dist/chart-types/box-plot/renderer/utils.js.map +1 -0
  177. package/dist/chart-types/box-plot/schema.d.ts +4 -5
  178. package/dist/chart-types/box-plot/schema.d.ts.map +1 -1
  179. package/dist/chart-types/box-plot/schema.js +2 -3
  180. package/dist/chart-types/box-plot/schema.js.map +1 -1
  181. package/dist/chart-types/box-plot/tool.d.ts +44 -0
  182. package/dist/chart-types/box-plot/tool.d.ts.map +1 -0
  183. package/dist/chart-types/box-plot/tool.js +59 -0
  184. package/dist/chart-types/box-plot/tool.js.map +1 -0
  185. package/dist/chart-types/bubble-chart/BubbleChartSettings.d.ts +3 -0
  186. package/dist/chart-types/bubble-chart/BubbleChartSettings.d.ts.map +1 -0
  187. package/dist/chart-types/bubble-chart/BubbleChartSettings.js +9 -0
  188. package/dist/chart-types/bubble-chart/BubbleChartSettings.js.map +1 -0
  189. package/dist/chart-types/bubble-chart/definition.d.ts +3 -3
  190. package/dist/chart-types/bubble-chart/definition.d.ts.map +1 -1
  191. package/dist/chart-types/bubble-chart/definition.js +10 -39
  192. package/dist/chart-types/bubble-chart/definition.js.map +1 -1
  193. package/dist/chart-types/bubble-chart/schema.d.ts +2 -1
  194. package/dist/chart-types/bubble-chart/schema.d.ts.map +1 -1
  195. package/dist/chart-types/bubble-chart/schema.js +6 -3
  196. package/dist/chart-types/bubble-chart/schema.js.map +1 -1
  197. package/dist/chart-types/bubble-chart/spec.d.ts +4 -0
  198. package/dist/chart-types/bubble-chart/spec.d.ts.map +1 -0
  199. package/dist/chart-types/bubble-chart/spec.js +31 -0
  200. package/dist/chart-types/bubble-chart/spec.js.map +1 -0
  201. package/dist/chart-types/bubble-chart/tool.d.ts +46 -0
  202. package/dist/chart-types/bubble-chart/tool.d.ts.map +1 -0
  203. package/dist/chart-types/bubble-chart/tool.js +58 -0
  204. package/dist/chart-types/bubble-chart/tool.js.map +1 -0
  205. package/dist/chart-types/chart-config.d.ts +92 -0
  206. package/dist/chart-types/chart-config.d.ts.map +1 -0
  207. package/dist/chart-types/chart-config.js +47 -0
  208. package/dist/chart-types/chart-config.js.map +1 -0
  209. package/dist/chart-types/count-plot/CountPlotSettings.d.ts +3 -0
  210. package/dist/chart-types/count-plot/CountPlotSettings.d.ts.map +1 -0
  211. package/dist/chart-types/count-plot/CountPlotSettings.js +9 -0
  212. package/dist/chart-types/count-plot/CountPlotSettings.js.map +1 -0
  213. package/dist/chart-types/count-plot/definition.d.ts +3 -3
  214. package/dist/chart-types/count-plot/definition.d.ts.map +1 -1
  215. package/dist/chart-types/count-plot/definition.js +10 -41
  216. package/dist/chart-types/count-plot/definition.js.map +1 -1
  217. package/dist/chart-types/count-plot/schema.d.ts +0 -1
  218. package/dist/chart-types/count-plot/schema.d.ts.map +1 -1
  219. package/dist/chart-types/count-plot/schema.js +4 -2
  220. package/dist/chart-types/count-plot/schema.js.map +1 -1
  221. package/dist/chart-types/count-plot/spec.d.ts +4 -0
  222. package/dist/chart-types/count-plot/spec.d.ts.map +1 -0
  223. package/dist/chart-types/count-plot/spec.js +49 -0
  224. package/dist/chart-types/count-plot/spec.js.map +1 -0
  225. package/dist/chart-types/count-plot/tool.d.ts +42 -0
  226. package/dist/chart-types/count-plot/tool.d.ts.map +1 -0
  227. package/dist/chart-types/count-plot/tool.js +55 -0
  228. package/dist/chart-types/count-plot/tool.js.map +1 -0
  229. package/dist/chart-types/custom-spec/CustomSpecSettings.d.ts +7 -0
  230. package/dist/chart-types/custom-spec/CustomSpecSettings.d.ts.map +1 -0
  231. package/dist/chart-types/custom-spec/CustomSpecSettings.js +30 -0
  232. package/dist/chart-types/custom-spec/CustomSpecSettings.js.map +1 -0
  233. package/dist/chart-types/custom-spec/definition.d.ts +3 -3
  234. package/dist/chart-types/custom-spec/definition.d.ts.map +1 -1
  235. package/dist/chart-types/custom-spec/definition.js +8 -19
  236. package/dist/chart-types/custom-spec/definition.js.map +1 -1
  237. package/dist/chart-types/custom-spec/schema.d.ts +6 -3
  238. package/dist/chart-types/custom-spec/schema.d.ts.map +1 -1
  239. package/dist/chart-types/custom-spec/schema.js +3 -2
  240. package/dist/chart-types/custom-spec/schema.js.map +1 -1
  241. package/dist/chart-types/custom-spec/spec.d.ts +4 -0
  242. package/dist/chart-types/custom-spec/spec.d.ts.map +1 -0
  243. package/dist/chart-types/custom-spec/spec.js +24 -0
  244. package/dist/chart-types/custom-spec/spec.js.map +1 -0
  245. package/dist/chart-types/errors.d.ts +23 -0
  246. package/dist/chart-types/errors.d.ts.map +1 -0
  247. package/dist/chart-types/errors.js +26 -0
  248. package/dist/chart-types/errors.js.map +1 -0
  249. package/dist/chart-types/heatmap/HeatmapSettings.d.ts +3 -0
  250. package/dist/chart-types/heatmap/HeatmapSettings.d.ts.map +1 -0
  251. package/dist/chart-types/heatmap/HeatmapSettings.js +9 -0
  252. package/dist/chart-types/heatmap/HeatmapSettings.js.map +1 -0
  253. package/dist/chart-types/heatmap/definition.d.ts +3 -3
  254. package/dist/chart-types/heatmap/definition.d.ts.map +1 -1
  255. package/dist/chart-types/heatmap/definition.js +10 -40
  256. package/dist/chart-types/heatmap/definition.js.map +1 -1
  257. package/dist/chart-types/heatmap/schema.d.ts +0 -1
  258. package/dist/chart-types/heatmap/schema.d.ts.map +1 -1
  259. package/dist/chart-types/heatmap/schema.js +2 -3
  260. package/dist/chart-types/heatmap/schema.js.map +1 -1
  261. package/dist/chart-types/heatmap/spec.d.ts +4 -0
  262. package/dist/chart-types/heatmap/spec.d.ts.map +1 -0
  263. package/dist/chart-types/heatmap/spec.js +32 -0
  264. package/dist/chart-types/heatmap/spec.js.map +1 -0
  265. package/dist/chart-types/heatmap/tool.d.ts +44 -0
  266. package/dist/chart-types/heatmap/tool.d.ts.map +1 -0
  267. package/dist/chart-types/heatmap/tool.js +59 -0
  268. package/dist/chart-types/heatmap/tool.js.map +1 -0
  269. package/dist/chart-types/histogram/HistogramSettings.d.ts +3 -0
  270. package/dist/chart-types/histogram/HistogramSettings.d.ts.map +1 -0
  271. package/dist/chart-types/histogram/HistogramSettings.js +9 -0
  272. package/dist/chart-types/histogram/HistogramSettings.js.map +1 -0
  273. package/dist/chart-types/histogram/definition.d.ts +3 -3
  274. package/dist/chart-types/histogram/definition.d.ts.map +1 -1
  275. package/dist/chart-types/histogram/definition.js +10 -40
  276. package/dist/chart-types/histogram/definition.js.map +1 -1
  277. package/dist/chart-types/histogram/schema.d.ts +0 -1
  278. package/dist/chart-types/histogram/schema.d.ts.map +1 -1
  279. package/dist/chart-types/histogram/schema.js +4 -2
  280. package/dist/chart-types/histogram/schema.js.map +1 -1
  281. package/dist/chart-types/histogram/spec.d.ts +4 -0
  282. package/dist/chart-types/histogram/spec.d.ts.map +1 -0
  283. package/dist/chart-types/histogram/spec.js +36 -0
  284. package/dist/chart-types/histogram/spec.js.map +1 -0
  285. package/dist/chart-types/histogram/tool.d.ts +42 -0
  286. package/dist/chart-types/histogram/tool.d.ts.map +1 -0
  287. package/dist/chart-types/histogram/tool.js +55 -0
  288. package/dist/chart-types/histogram/tool.js.map +1 -0
  289. package/dist/chart-types/index.d.ts +102 -96
  290. package/dist/chart-types/index.d.ts.map +1 -1
  291. package/dist/chart-types/index.js +71 -41
  292. package/dist/chart-types/index.js.map +1 -1
  293. package/dist/chart-types/line-chart/LineChartSettings.d.ts +7 -0
  294. package/dist/chart-types/line-chart/LineChartSettings.d.ts.map +1 -0
  295. package/dist/chart-types/line-chart/LineChartSettings.js +22 -0
  296. package/dist/chart-types/line-chart/LineChartSettings.js.map +1 -0
  297. package/dist/chart-types/line-chart/definition.d.ts +3 -3
  298. package/dist/chart-types/line-chart/definition.d.ts.map +1 -1
  299. package/dist/chart-types/line-chart/definition.js +10 -37
  300. package/dist/chart-types/line-chart/definition.js.map +1 -1
  301. package/dist/chart-types/line-chart/schema.d.ts +69 -3
  302. package/dist/chart-types/line-chart/schema.d.ts.map +1 -1
  303. package/dist/chart-types/line-chart/schema.js +30 -3
  304. package/dist/chart-types/line-chart/schema.js.map +1 -1
  305. package/dist/chart-types/line-chart/spec.d.ts +4 -0
  306. package/dist/chart-types/line-chart/spec.d.ts.map +1 -0
  307. package/dist/chart-types/line-chart/spec.js +91 -0
  308. package/dist/chart-types/line-chart/spec.js.map +1 -0
  309. package/dist/chart-types/line-chart/tool.d.ts +68 -0
  310. package/dist/chart-types/line-chart/tool.d.ts.map +1 -0
  311. package/dist/chart-types/line-chart/tool.js +66 -0
  312. package/dist/chart-types/line-chart/tool.js.map +1 -0
  313. package/dist/chart-types/tool-schemas.d.ts +8 -0
  314. package/dist/chart-types/tool-schemas.d.ts.map +1 -0
  315. package/dist/chart-types/tool-schemas.js +18 -0
  316. package/dist/chart-types/tool-schemas.js.map +1 -0
  317. package/dist/chart-types/tool-types.d.ts +26 -0
  318. package/dist/chart-types/tool-types.d.ts.map +1 -0
  319. package/dist/chart-types/tool-types.js +2 -0
  320. package/dist/chart-types/tool-types.js.map +1 -0
  321. package/dist/chart-types/tool-validation.d.ts +3 -0
  322. package/dist/chart-types/tool-validation.d.ts.map +1 -0
  323. package/dist/chart-types/tool-validation.js +11 -0
  324. package/dist/chart-types/tool-validation.js.map +1 -0
  325. package/dist/chart-types/useChartTypeDefinition.d.ts +3 -0
  326. package/dist/chart-types/useChartTypeDefinition.d.ts.map +1 -0
  327. package/dist/chart-types/useChartTypeDefinition.js +8 -0
  328. package/dist/chart-types/useChartTypeDefinition.js.map +1 -0
  329. package/dist/dashboard/MosaicDashboard.d.ts.map +1 -1
  330. package/dist/dashboard/MosaicDashboard.js +7 -11
  331. package/dist/dashboard/MosaicDashboard.js.map +1 -1
  332. package/dist/dashboard/MosaicDashboardEmptyState.d.ts +2 -0
  333. package/dist/dashboard/MosaicDashboardEmptyState.d.ts.map +1 -0
  334. package/dist/dashboard/MosaicDashboardEmptyState.js +50 -0
  335. package/dist/dashboard/MosaicDashboardEmptyState.js.map +1 -0
  336. package/dist/dashboard/MosaicDashboardPanelLayout.d.ts.map +1 -1
  337. package/dist/dashboard/MosaicDashboardPanelLayout.js +23 -2
  338. package/dist/dashboard/MosaicDashboardPanelLayout.js.map +1 -1
  339. package/dist/dashboard/MosaicDashboardPanels.d.ts.map +1 -1
  340. package/dist/dashboard/MosaicDashboardPanels.js +2 -1
  341. package/dist/dashboard/MosaicDashboardPanels.js.map +1 -1
  342. package/dist/dashboard/MosaicDashboardSlice.d.ts +212 -87
  343. package/dist/dashboard/MosaicDashboardSlice.d.ts.map +1 -1
  344. package/dist/dashboard/MosaicDashboardSlice.js +65 -18
  345. package/dist/dashboard/MosaicDashboardSlice.js.map +1 -1
  346. package/dist/dashboard/MosaicDashboardToolbar.d.ts.map +1 -1
  347. package/dist/dashboard/MosaicDashboardToolbar.js +9 -4
  348. package/dist/dashboard/MosaicDashboardToolbar.js.map +1 -1
  349. package/dist/dashboard/defaultPanelRenderers.d.ts.map +1 -1
  350. package/dist/dashboard/defaultPanelRenderers.js +6 -4
  351. package/dist/dashboard/defaultPanelRenderers.js.map +1 -1
  352. package/dist/dashboard/utils.d.ts +3 -0
  353. package/dist/dashboard/utils.d.ts.map +1 -0
  354. package/dist/dashboard/utils.js +16 -0
  355. package/dist/dashboard/utils.js.map +1 -0
  356. package/dist/index.d.ts +6 -9
  357. package/dist/index.d.ts.map +1 -1
  358. package/dist/index.js +5 -7
  359. package/dist/index.js.map +1 -1
  360. package/dist/{dashboard → profiler}/MosaicDashboardProfilerPanelRenderer.d.ts +1 -1
  361. package/dist/profiler/MosaicDashboardProfilerPanelRenderer.d.ts.map +1 -0
  362. package/dist/{dashboard → profiler}/MosaicDashboardProfilerPanelRenderer.js +2 -2
  363. package/dist/profiler/MosaicDashboardProfilerPanelRenderer.js.map +1 -0
  364. package/dist/text/MosaicDashboardTextRenderer.d.ts +3 -0
  365. package/dist/text/MosaicDashboardTextRenderer.d.ts.map +1 -0
  366. package/dist/text/MosaicDashboardTextRenderer.js +46 -0
  367. package/dist/text/MosaicDashboardTextRenderer.js.map +1 -0
  368. package/package.json +38 -35
  369. package/dist/chart-builders/builders.d.ts +0 -34
  370. package/dist/chart-builders/builders.d.ts.map +0 -1
  371. package/dist/chart-builders/builders.js +0 -51
  372. package/dist/chart-builders/builders.js.map +0 -1
  373. package/dist/chart-builders/describeChartSpecs.d.ts +0 -9
  374. package/dist/chart-builders/describeChartSpecs.d.ts.map +0 -1
  375. package/dist/chart-builders/describeChartSpecs.js +0 -41
  376. package/dist/chart-builders/describeChartSpecs.js.map +0 -1
  377. package/dist/chart-builders/hooks/useChartFieldForm.d.ts +0 -13
  378. package/dist/chart-builders/hooks/useChartFieldForm.d.ts.map +0 -1
  379. package/dist/chart-builders/hooks/useChartFieldForm.js +0 -12
  380. package/dist/chart-builders/hooks/useChartFieldForm.js.map +0 -1
  381. package/dist/chart-builders/types.d.ts +0 -23
  382. package/dist/chart-builders/types.d.ts.map +0 -1
  383. package/dist/chart-builders/types.js +0 -17
  384. package/dist/chart-builders/types.js.map +0 -1
  385. package/dist/chart-types/box-plot/index.d.ts +0 -3
  386. package/dist/chart-types/box-plot/index.d.ts.map +0 -1
  387. package/dist/chart-types/box-plot/index.js +0 -3
  388. package/dist/chart-types/box-plot/index.js.map +0 -1
  389. package/dist/chart-types/bubble-chart/index.d.ts +0 -3
  390. package/dist/chart-types/bubble-chart/index.d.ts.map +0 -1
  391. package/dist/chart-types/bubble-chart/index.js +0 -3
  392. package/dist/chart-types/bubble-chart/index.js.map +0 -1
  393. package/dist/chart-types/count-plot/index.d.ts +0 -3
  394. package/dist/chart-types/count-plot/index.d.ts.map +0 -1
  395. package/dist/chart-types/count-plot/index.js +0 -3
  396. package/dist/chart-types/count-plot/index.js.map +0 -1
  397. package/dist/chart-types/custom-spec/index.d.ts +0 -3
  398. package/dist/chart-types/custom-spec/index.d.ts.map +0 -1
  399. package/dist/chart-types/custom-spec/index.js +0 -3
  400. package/dist/chart-types/custom-spec/index.js.map +0 -1
  401. package/dist/chart-types/ecdf/definition.d.ts +0 -4
  402. package/dist/chart-types/ecdf/definition.d.ts.map +0 -1
  403. package/dist/chart-types/ecdf/definition.js +0 -47
  404. package/dist/chart-types/ecdf/definition.js.map +0 -1
  405. package/dist/chart-types/ecdf/index.d.ts +0 -3
  406. package/dist/chart-types/ecdf/index.d.ts.map +0 -1
  407. package/dist/chart-types/ecdf/index.js +0 -3
  408. package/dist/chart-types/ecdf/index.js.map +0 -1
  409. package/dist/chart-types/ecdf/schema.d.ts +0 -15
  410. package/dist/chart-types/ecdf/schema.d.ts.map +0 -1
  411. package/dist/chart-types/ecdf/schema.js +0 -11
  412. package/dist/chart-types/ecdf/schema.js.map +0 -1
  413. package/dist/chart-types/heatmap/index.d.ts +0 -3
  414. package/dist/chart-types/heatmap/index.d.ts.map +0 -1
  415. package/dist/chart-types/heatmap/index.js +0 -3
  416. package/dist/chart-types/heatmap/index.js.map +0 -1
  417. package/dist/chart-types/histogram/index.d.ts +0 -3
  418. package/dist/chart-types/histogram/index.d.ts.map +0 -1
  419. package/dist/chart-types/histogram/index.js +0 -3
  420. package/dist/chart-types/histogram/index.js.map +0 -1
  421. package/dist/chart-types/line-chart/index.d.ts +0 -3
  422. package/dist/chart-types/line-chart/index.d.ts.map +0 -1
  423. package/dist/chart-types/line-chart/index.js +0 -3
  424. package/dist/chart-types/line-chart/index.js.map +0 -1
  425. package/dist/chart-types/registry.d.ts +0 -5
  426. package/dist/chart-types/registry.d.ts.map +0 -1
  427. package/dist/chart-types/registry.js +0 -28
  428. package/dist/chart-types/registry.js.map +0 -1
  429. package/dist/dashboard/MosaicDashboardProfilerPanelRenderer.d.ts.map +0 -1
  430. package/dist/dashboard/MosaicDashboardProfilerPanelRenderer.js.map +0 -1
  431. package/dist/dashboard/MosaicDashboardVgPlotHeaderActions.d.ts +0 -4
  432. package/dist/dashboard/MosaicDashboardVgPlotHeaderActions.d.ts.map +0 -1
  433. package/dist/dashboard/MosaicDashboardVgPlotHeaderActions.js +0 -29
  434. package/dist/dashboard/MosaicDashboardVgPlotHeaderActions.js.map +0 -1
  435. package/dist/dashboard/MosaicDashboardVgPlotPanelRenderer.d.ts +0 -3
  436. package/dist/dashboard/MosaicDashboardVgPlotPanelRenderer.d.ts.map +0 -1
  437. package/dist/dashboard/MosaicDashboardVgPlotPanelRenderer.js +0 -68
  438. package/dist/dashboard/MosaicDashboardVgPlotPanelRenderer.js.map +0 -1
  439. package/dist/dashboard/VgPlotSpecPopoverEditor.d.ts +0 -8
  440. package/dist/dashboard/VgPlotSpecPopoverEditor.d.ts.map +0 -1
  441. package/dist/dashboard/VgPlotSpecPopoverEditor.js +0 -40
  442. package/dist/dashboard/VgPlotSpecPopoverEditor.js.map +0 -1
  443. package/dist/dashboard/chart-settings/ChartSettings.d.ts.map +0 -1
  444. package/dist/dashboard/chart-settings/ChartSettings.js +0 -90
  445. package/dist/dashboard/chart-settings/ChartSettings.js.map +0 -1
  446. package/dist/dashboard/chart-settings/ChartSettingsContext.d.ts +0 -20
  447. package/dist/dashboard/chart-settings/ChartSettingsContext.d.ts.map +0 -1
  448. package/dist/dashboard/chart-settings/ChartSettingsContext.js +0 -14
  449. package/dist/dashboard/chart-settings/ChartSettingsContext.js.map +0 -1
  450. package/dist/dashboard/chart-settings/ChartSettingsPanel.d.ts +0 -11
  451. package/dist/dashboard/chart-settings/ChartSettingsPanel.d.ts.map +0 -1
  452. package/dist/dashboard/chart-settings/ChartSettingsPanel.js +0 -8
  453. package/dist/dashboard/chart-settings/ChartSettingsPanel.js.map +0 -1
  454. package/dist/dashboard/chart-settings/ChartTypeSelector.d.ts +0 -11
  455. package/dist/dashboard/chart-settings/ChartTypeSelector.d.ts.map +0 -1
  456. package/dist/dashboard/chart-settings/ChartTypeSelector.js +0 -17
  457. package/dist/dashboard/chart-settings/ChartTypeSelector.js.map +0 -1
  458. package/dist/dashboard/chart-settings/DynamicChartSettings.d.ts +0 -11
  459. package/dist/dashboard/chart-settings/DynamicChartSettings.d.ts.map +0 -1
  460. package/dist/dashboard/chart-settings/DynamicChartSettings.js +0 -19
  461. package/dist/dashboard/chart-settings/DynamicChartSettings.js.map +0 -1
  462. package/dist/dashboard/chart-settings/index.d.ts +0 -6
  463. package/dist/dashboard/chart-settings/index.d.ts.map +0 -1
  464. package/dist/dashboard/chart-settings/index.js +0 -6
  465. package/dist/dashboard/chart-settings/index.js.map +0 -1
  466. package/dist/dashboard/chart-settings/useTableColumns.d.ts.map +0 -1
  467. package/dist/dashboard/chart-settings/useTableColumns.js.map +0 -1
  468. package/dist/dashboard/generateMosaicChartSpec.d.ts +0 -15
  469. package/dist/dashboard/generateMosaicChartSpec.d.ts.map +0 -1
  470. package/dist/dashboard/generateMosaicChartSpec.js +0 -30
  471. package/dist/dashboard/generateMosaicChartSpec.js.map +0 -1
  472. /package/dist/{dashboard → chart}/chart-settings/useTableColumns.d.ts +0 -0
@@ -1,10 +1,11 @@
1
1
  import React from 'react';
2
- import { ChartBuilderColumn, ChartBuilderField } from './types';
2
+ import { ChartBuilderColumn, ChartBuilderField } from '../chart-types/base-types';
3
3
  export interface FieldSelectorInputProps {
4
4
  field: ChartBuilderField;
5
5
  columns: ChartBuilderColumn[];
6
6
  value: string | undefined;
7
7
  onChange: (value: string) => void;
8
+ placeholder?: string;
8
9
  }
9
10
  /**
10
11
  * A searchable dropdown selector for choosing a table column for a chart builder field.
@@ -1 +1 @@
1
- {"version":3,"file":"FieldSelectorInput.d.ts","sourceRoot":"","sources":["../../src/chart-builders/FieldSelectorInput.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAiB,MAAM,OAAO,CAAC;AACtC,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,iBAAiB,CAAC;IACzB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAkFhE,CAAC"}
1
+ {"version":3,"file":"FieldSelectorInput.d.ts","sourceRoot":"","sources":["../../src/chart-builders/FieldSelectorInput.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAiB,MAAM,OAAO,CAAC;AACtC,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAEhF,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,iBAAiB,CAAC;IACzB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA+EhE,CAAC"}
@@ -5,15 +5,15 @@ import { useState } from 'react';
5
5
  /**
6
6
  * A searchable dropdown selector for choosing a table column for a chart builder field.
7
7
  */
8
- export const FieldSelectorInput = ({ field, columns, value, onChange, }) => {
8
+ export const FieldSelectorInput = ({ field, columns, value, onChange, placeholder = 'Select...', }) => {
9
9
  const [open, setOpen] = useState(false);
10
10
  const filteredColumns = field.types
11
11
  ? columns.filter((col) => field.types.some((t) => col.type.toUpperCase() === t.toUpperCase()))
12
12
  : columns;
13
13
  const selectedColumn = filteredColumns.find((col) => col.name === value);
14
- return (_jsxs("div", { className: "flex flex-col gap-1", children: [_jsxs("label", { className: "text-xs font-medium", children: [field.label, field.required && _jsx("span", { className: "text-destructive ml-1", children: "*" })] }), _jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", role: "combobox", "aria-expanded": open, className: "h-8 w-full justify-between text-xs font-normal", children: [selectedColumn ? (_jsxs("span", { className: "flex items-center gap-2 truncate", children: [_jsx("span", { className: "truncate", children: selectedColumn.name }), _jsx("span", { className: "text-muted-foreground text-[10px]", children: selectedColumn.type })] })) : (_jsxs("span", { className: "text-muted-foreground", children: ["Select ", field.label.toLowerCase(), "..."] })), _jsx(ChevronsUpDown, { className: "ml-2 h-3.5 w-3.5 shrink-0 opacity-50" })] }) }), _jsx(PopoverContent, { className: "w-[--radix-popover-trigger-width] p-0 text-xs", children: _jsxs(Command, { children: [_jsx(CommandInput, { placeholder: `Search columns...`, className: "text-xs" }), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: "No matching column." }), _jsx(CommandGroup, { children: filteredColumns.map((col) => (_jsxs(CommandItem, { value: col.name, onSelect: (currentValue) => {
15
- onChange(currentValue);
16
- setOpen(false);
17
- }, children: [_jsx(Check, { className: cn('mr-2 h-3.5 w-3.5 shrink-0', value === col.name ? 'opacity-100' : 'opacity-0') }), _jsx("span", { className: "truncate", children: col.name }), _jsx("span", { className: "text-muted-foreground ml-auto text-[10px]", children: col.type })] }, col.name))) })] })] }) })] })] }));
14
+ return (_jsx("div", { className: "@container flex flex-col gap-1", children: _jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { variant: "outline", role: "combobox", "aria-expanded": open, className: "h-8 w-full justify-between text-xs font-normal", children: [selectedColumn ? (_jsxs("span", { className: "flex min-w-0 items-baseline gap-1", children: [_jsx("span", { className: "truncate text-xs", children: selectedColumn.name }), _jsx("span", { className: "text-muted-foreground hidden overflow-hidden text-[8px] whitespace-nowrap @[180px]:inline", children: selectedColumn.type })] })) : (_jsx("span", { className: "text-muted-foreground truncate text-xs", children: placeholder })), _jsx(ChevronsUpDown, { className: "ml-2 h-3.5 w-3.5 shrink-0 opacity-50" })] }) }), _jsx(PopoverContent, { className: "w-[--radix-popover-trigger-width] p-0 text-xs", children: _jsxs(Command, { children: [_jsx(CommandInput, { placeholder: `Search columns...`, className: "text-xs" }), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: "No matching column." }), _jsx(CommandGroup, { children: filteredColumns.map((col) => (_jsxs(CommandItem, { value: col.name, onSelect: (currentValue) => {
15
+ onChange(currentValue);
16
+ setOpen(false);
17
+ }, children: [_jsx(Check, { className: cn('mr-2 h-3.5 w-3.5 shrink-0', value === col.name ? 'opacity-100' : 'opacity-0') }), _jsx("span", { className: "truncate text-xs", children: col.name }), _jsx("span", { className: "text-muted-foreground ml-auto text-[8px]", children: col.type })] }, col.name))) })] })] }) })] }) }));
18
18
  };
19
19
  //# sourceMappingURL=FieldSelectorInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldSelectorInput.js","sourceRoot":"","sources":["../../src/chart-builders/FieldSelectorInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Button,\n cn,\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@sqlrooms/ui';\nimport {Check, ChevronsUpDown} from 'lucide-react';\nimport React, {useState} from 'react';\nimport {ChartBuilderColumn, ChartBuilderField} from './types';\n\nexport interface FieldSelectorInputProps {\n field: ChartBuilderField;\n columns: ChartBuilderColumn[];\n value: string | undefined;\n onChange: (value: string) => void;\n}\n\n/**\n * A searchable dropdown selector for choosing a table column for a chart builder field.\n */\nexport const FieldSelectorInput: React.FC<FieldSelectorInputProps> = ({\n field,\n columns,\n value,\n onChange,\n}) => {\n const [open, setOpen] = useState(false);\n\n const filteredColumns = field.types\n ? columns.filter((col) =>\n field.types!.some((t) => col.type.toUpperCase() === t.toUpperCase()),\n )\n : columns;\n\n const selectedColumn = filteredColumns.find((col) => col.name === value);\n\n return (\n <div className=\"flex flex-col gap-1\">\n <label className=\"text-xs font-medium\">\n {field.label}\n {field.required && <span className=\"text-destructive ml-1\">*</span>}\n </label>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"h-8 w-full justify-between text-xs font-normal\"\n >\n {selectedColumn ? (\n <span className=\"flex items-center gap-2 truncate\">\n <span className=\"truncate\">{selectedColumn.name}</span>\n <span className=\"text-muted-foreground text-[10px]\">\n {selectedColumn.type}\n </span>\n </span>\n ) : (\n <span className=\"text-muted-foreground\">\n Select {field.label.toLowerCase()}...\n </span>\n )}\n <ChevronsUpDown className=\"ml-2 h-3.5 w-3.5 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[--radix-popover-trigger-width] p-0 text-xs\">\n <Command>\n <CommandInput\n placeholder={`Search columns...`}\n className=\"text-xs\"\n />\n <CommandList>\n <CommandEmpty>No matching column.</CommandEmpty>\n <CommandGroup>\n {filteredColumns.map((col) => (\n <CommandItem\n key={col.name}\n value={col.name}\n onSelect={(currentValue) => {\n onChange(currentValue);\n setOpen(false);\n }}\n >\n <Check\n className={cn(\n 'mr-2 h-3.5 w-3.5 shrink-0',\n value === col.name ? 'opacity-100' : 'opacity-0',\n )}\n />\n <span className=\"truncate\">{col.name}</span>\n <span className=\"text-muted-foreground ml-auto text-[10px]\">\n {col.type}\n </span>\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"FieldSelectorInput.js","sourceRoot":"","sources":["../../src/chart-builders/FieldSelectorInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,MAAM,EACN,EAAE,EACF,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,OAAO,EACP,cAAc,EACd,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,KAAK,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;AACnD,OAAc,EAAC,QAAQ,EAAC,MAAM,OAAO,CAAC;AAWtC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EACpE,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,WAAW,GAAG,WAAW,GAC1B,EAAE,EAAE;IACH,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExC,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK;QACjC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CACrB,KAAK,CAAC,KAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CACrE;QACH,CAAC,CAAC,OAAO,CAAC;IAEZ,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;IAEzE,OAAO,CACL,cAAK,SAAS,EAAC,gCAAgC,YAC7C,MAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,aACxC,KAAC,cAAc,IAAC,OAAO,kBACrB,MAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,UAAU,mBACA,IAAI,EACnB,SAAS,EAAC,gDAAgD,aAEzD,cAAc,CAAC,CAAC,CAAC,CAChB,gBAAM,SAAS,EAAC,mCAAmC,aACjD,eAAM,SAAS,EAAC,kBAAkB,YAAE,cAAc,CAAC,IAAI,GAAQ,EAC/D,eAAM,SAAS,EAAC,2FAA2F,YACxG,cAAc,CAAC,IAAI,GACf,IACF,CACR,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,wCAAwC,YACrD,WAAW,GACP,CACR,EACD,KAAC,cAAc,IAAC,SAAS,EAAC,sCAAsC,GAAG,IAC5D,GACM,EACjB,KAAC,cAAc,IAAC,SAAS,EAAC,+CAA+C,YACvE,MAAC,OAAO,eACN,KAAC,YAAY,IACX,WAAW,EAAE,mBAAmB,EAChC,SAAS,EAAC,SAAS,GACnB,EACF,MAAC,WAAW,eACV,KAAC,YAAY,sCAAmC,EAChD,KAAC,YAAY,cACV,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAC5B,MAAC,WAAW,IAEV,KAAK,EAAE,GAAG,CAAC,IAAI,EACf,QAAQ,EAAE,CAAC,YAAY,EAAE,EAAE;gDACzB,QAAQ,CAAC,YAAY,CAAC,CAAC;gDACvB,OAAO,CAAC,KAAK,CAAC,CAAC;4CACjB,CAAC,aAED,KAAC,KAAK,IACJ,SAAS,EAAE,EAAE,CACX,2BAA2B,EAC3B,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CACjD,GACD,EACF,eAAM,SAAS,EAAC,kBAAkB,YAAE,GAAG,CAAC,IAAI,GAAQ,EACpD,eAAM,SAAS,EAAC,0CAA0C,YACvD,GAAG,CAAC,IAAI,GACJ,KAhBF,GAAG,CAAC,IAAI,CAiBD,CACf,CAAC,GACW,IACH,IACN,GACK,IACT,GACN,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {\n Button,\n cn,\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@sqlrooms/ui';\nimport {Check, ChevronsUpDown} from 'lucide-react';\nimport React, {useState} from 'react';\nimport {ChartBuilderColumn, ChartBuilderField} from '../chart-types/base-types';\n\nexport interface FieldSelectorInputProps {\n field: ChartBuilderField;\n columns: ChartBuilderColumn[];\n value: string | undefined;\n onChange: (value: string) => void;\n placeholder?: string;\n}\n\n/**\n * A searchable dropdown selector for choosing a table column for a chart builder field.\n */\nexport const FieldSelectorInput: React.FC<FieldSelectorInputProps> = ({\n field,\n columns,\n value,\n onChange,\n placeholder = 'Select...',\n}) => {\n const [open, setOpen] = useState(false);\n\n const filteredColumns = field.types\n ? columns.filter((col) =>\n field.types!.some((t) => col.type.toUpperCase() === t.toUpperCase()),\n )\n : columns;\n\n const selectedColumn = filteredColumns.find((col) => col.name === value);\n\n return (\n <div className=\"@container flex flex-col gap-1\">\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"h-8 w-full justify-between text-xs font-normal\"\n >\n {selectedColumn ? (\n <span className=\"flex min-w-0 items-baseline gap-1\">\n <span className=\"truncate text-xs\">{selectedColumn.name}</span>\n <span className=\"text-muted-foreground hidden overflow-hidden text-[8px] whitespace-nowrap @[180px]:inline\">\n {selectedColumn.type}\n </span>\n </span>\n ) : (\n <span className=\"text-muted-foreground truncate text-xs\">\n {placeholder}\n </span>\n )}\n <ChevronsUpDown className=\"ml-2 h-3.5 w-3.5 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[--radix-popover-trigger-width] p-0 text-xs\">\n <Command>\n <CommandInput\n placeholder={`Search columns...`}\n className=\"text-xs\"\n />\n <CommandList>\n <CommandEmpty>No matching column.</CommandEmpty>\n <CommandGroup>\n {filteredColumns.map((col) => (\n <CommandItem\n key={col.name}\n value={col.name}\n onSelect={(currentValue) => {\n onChange(currentValue);\n setOpen(false);\n }}\n >\n <Check\n className={cn(\n 'mr-2 h-3.5 w-3.5 shrink-0',\n value === col.name ? 'opacity-100' : 'opacity-0',\n )}\n />\n <span className=\"truncate text-xs\">{col.name}</span>\n <span className=\"text-muted-foreground ml-auto text-[8px]\">\n {col.type}\n </span>\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n );\n};\n"]}
@@ -0,0 +1,14 @@
1
+ import { type FC } from 'react';
2
+ import type { YFieldConfig } from '../chart-types/line-chart/schema';
3
+ export interface MultiFieldSelectorProps {
4
+ types?: string[];
5
+ value: YFieldConfig[];
6
+ onChange: (value: YFieldConfig[]) => void;
7
+ showAggregation?: boolean;
8
+ }
9
+ export declare const MultiFieldSelector: FC<MultiFieldSelectorProps> & {
10
+ Numeric: FC<Omit<MultiFieldSelectorProps, "types">>;
11
+ Quantitative: FC<Omit<MultiFieldSelectorProps, "types">>;
12
+ Categorical: FC<Omit<MultiFieldSelectorProps, "types">>;
13
+ };
14
+ //# sourceMappingURL=MultiFieldSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiFieldSelector.d.ts","sourceRoot":"","sources":["../../src/chart-builders/MultiFieldSelector.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,EAAE,EAAC,MAAM,OAAO,CAAC;AAUpD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kCAAkC,CAAC;AAEnE,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAsHD,eAAO,MAAM,kBAAkB;;;;CAI7B,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button } from '@sqlrooms/ui';
3
+ import { Trash2 } from 'lucide-react';
4
+ import { useCallback, useMemo } from 'react';
5
+ import { ColumnSelector } from './ColumnSelector';
6
+ import { AggregationSelector } from './AggregationSelector';
7
+ import { useChartSettingsContext } from '../chart/chart-settings/ChartSettingsContext';
8
+ import { NUMERIC_COLUMN_TYPES, QUANTITATIVE_COLUMN_TYPES, CATEGORICAL_COLUMN_TYPES, } from './constants';
9
+ /**
10
+ * Manages an array of field configurations with add/update/remove logic.
11
+ * Emits the full updated array on every change.
12
+ *
13
+ * Can be used as:
14
+ * - `<MultiFieldSelector types={...} />` - custom types
15
+ * - `<MultiFieldSelector.Numeric />` - numeric types only
16
+ * - `<MultiFieldSelector.Quantitative />` - numeric + temporal
17
+ * - `<MultiFieldSelector.Categorical />` - text/enum types
18
+ */
19
+ const MultiFieldSelectorRoot = ({ types, value, onChange, showAggregation = false, }) => {
20
+ const { columns } = useChartSettingsContext();
21
+ const selectedFieldNames = useMemo(() => value.map((v) => v.field), [value]);
22
+ const availableColumns = useMemo(() => columns.filter((col) => !selectedFieldNames.includes(col.name)), [columns, selectedFieldNames]);
23
+ const handleUpdate = useCallback((index, updates) => {
24
+ const updated = [...value];
25
+ updated[index] = { ...updated[index], ...updates };
26
+ onChange(updated);
27
+ }, [value, onChange]);
28
+ const handleRemove = useCallback((index) => {
29
+ onChange(value.filter((_, i) => i !== index));
30
+ }, [value, onChange]);
31
+ const handleAdd = useCallback((fieldName) => {
32
+ if (fieldName) {
33
+ onChange([...value, { field: fieldName, aggregate: 'sum' }]);
34
+ }
35
+ }, [value, onChange]);
36
+ return (_jsxs("div", { className: "space-y-1", children: [value.map((fieldConfig, index) => {
37
+ const aggregate = fieldConfig.aggregate || 'sum';
38
+ return (_jsxs("div", { className: "grid items-end gap-2", style: {
39
+ gridTemplateColumns: showAggregation
40
+ ? 'minmax(120px, 1fr) 100px 32px'
41
+ : 'minmax(120px, 1fr) 32px',
42
+ }, children: [_jsx(ColumnSelector, { columns: columns, types: types, value: fieldConfig.field, onChange: (newField) => handleUpdate(index, { field: newField }) }), showAggregation && (_jsx(AggregationSelector, { value: aggregate, onChange: (agg) => handleUpdate(index, { aggregate: agg }) })), _jsx(Button, { variant: "ghost", size: "icon", onClick: () => handleRemove(index), className: "h-8 w-8 shrink-0", children: _jsx(Trash2, { className: "text-destructive h-4 w-4" }) })] }, fieldConfig.field));
43
+ }), _jsx(ColumnSelector, { columns: availableColumns, types: types, value: undefined, onChange: handleAdd, placeholder: "Select field..." })] }));
44
+ };
45
+ const Numeric = (props) => (_jsx(MultiFieldSelectorRoot, { ...props, types: NUMERIC_COLUMN_TYPES }));
46
+ const Quantitative = (props) => (_jsx(MultiFieldSelectorRoot, { ...props, types: QUANTITATIVE_COLUMN_TYPES }));
47
+ const Categorical = (props) => (_jsx(MultiFieldSelectorRoot, { ...props, types: CATEGORICAL_COLUMN_TYPES }));
48
+ export const MultiFieldSelector = Object.assign(MultiFieldSelectorRoot, {
49
+ Numeric,
50
+ Quantitative,
51
+ Categorical,
52
+ });
53
+ //# sourceMappingURL=MultiFieldSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiFieldSelector.js","sourceRoot":"","sources":["../../src/chart-builders/MultiFieldSelector.tsx"],"names":[],"mappings":"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","sourcesContent":["import {Button} from '@sqlrooms/ui';\nimport {Trash2} from 'lucide-react';\nimport {useCallback, useMemo, type FC} from 'react';\nimport {ColumnSelector} from './ColumnSelector';\nimport {AggregationSelector} from './AggregationSelector';\nimport type {AggregateFunction} from '../chart-types/line-chart/schema';\nimport {useChartSettingsContext} from '../chart/chart-settings/ChartSettingsContext';\nimport {\n NUMERIC_COLUMN_TYPES,\n QUANTITATIVE_COLUMN_TYPES,\n CATEGORICAL_COLUMN_TYPES,\n} from './constants';\nimport type {YFieldConfig} from '../chart-types/line-chart/schema';\n\nexport interface MultiFieldSelectorProps {\n types?: string[];\n value: YFieldConfig[];\n onChange: (value: YFieldConfig[]) => void;\n showAggregation?: boolean;\n}\n\n/**\n * Manages an array of field configurations with add/update/remove logic.\n * Emits the full updated array on every change.\n *\n * Can be used as:\n * - `<MultiFieldSelector types={...} />` - custom types\n * - `<MultiFieldSelector.Numeric />` - numeric types only\n * - `<MultiFieldSelector.Quantitative />` - numeric + temporal\n * - `<MultiFieldSelector.Categorical />` - text/enum types\n */\nconst MultiFieldSelectorRoot: FC<MultiFieldSelectorProps> = ({\n types,\n value,\n onChange,\n showAggregation = false,\n}) => {\n const {columns} = useChartSettingsContext();\n\n const selectedFieldNames = useMemo(() => value.map((v) => v.field), [value]);\n\n const availableColumns = useMemo(\n () => columns.filter((col) => !selectedFieldNames.includes(col.name)),\n [columns, selectedFieldNames],\n );\n\n const handleUpdate = useCallback(\n (index: number, updates: Partial<(typeof value)[0]>) => {\n const updated = [...value];\n updated[index] = {...updated[index]!, ...updates};\n onChange(updated);\n },\n [value, onChange],\n );\n\n const handleRemove = useCallback(\n (index: number) => {\n onChange(value.filter((_, i) => i !== index));\n },\n [value, onChange],\n );\n\n const handleAdd = useCallback(\n (fieldName: string) => {\n if (fieldName) {\n onChange([...value, {field: fieldName, aggregate: 'sum'}]);\n }\n },\n [value, onChange],\n );\n\n return (\n <div className=\"space-y-1\">\n {value.map((fieldConfig, index) => {\n const aggregate = fieldConfig.aggregate || 'sum';\n\n return (\n <div\n key={fieldConfig.field}\n className=\"grid items-end gap-2\"\n style={{\n gridTemplateColumns: showAggregation\n ? 'minmax(120px, 1fr) 100px 32px'\n : 'minmax(120px, 1fr) 32px',\n }}\n >\n <ColumnSelector\n columns={columns}\n types={types}\n value={fieldConfig.field}\n onChange={(newField) => handleUpdate(index, {field: newField})}\n />\n\n {showAggregation && (\n <AggregationSelector\n value={aggregate}\n onChange={(agg: AggregateFunction) =>\n handleUpdate(index, {aggregate: agg})\n }\n />\n )}\n\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => handleRemove(index)}\n className=\"h-8 w-8 shrink-0\"\n >\n <Trash2 className=\"text-destructive h-4 w-4\" />\n </Button>\n </div>\n );\n })}\n\n <ColumnSelector\n columns={availableColumns}\n types={types}\n value={undefined}\n onChange={handleAdd}\n placeholder=\"Select field...\"\n />\n </div>\n );\n};\n\nconst Numeric: FC<Omit<MultiFieldSelectorProps, 'types'>> = (props) => (\n <MultiFieldSelectorRoot {...props} types={NUMERIC_COLUMN_TYPES} />\n);\n\nconst Quantitative: FC<Omit<MultiFieldSelectorProps, 'types'>> = (props) => (\n <MultiFieldSelectorRoot {...props} types={QUANTITATIVE_COLUMN_TYPES} />\n);\n\nconst Categorical: FC<Omit<MultiFieldSelectorProps, 'types'>> = (props) => (\n <MultiFieldSelectorRoot {...props} types={CATEGORICAL_COLUMN_TYPES} />\n);\n\nexport const MultiFieldSelector = Object.assign(MultiFieldSelectorRoot, {\n Numeric,\n Quantitative,\n Categorical,\n});\n"]}
@@ -0,0 +1,10 @@
1
+ import { type FC } from 'react';
2
+ import { TemporalInterval } from '../chart-types/line-chart/schema';
3
+ interface TemporalGranularitySelectorProps {
4
+ value?: TemporalInterval;
5
+ onChange: (value?: TemporalInterval) => void;
6
+ xFieldType?: string;
7
+ }
8
+ export declare const TemporalGranularitySelector: FC<TemporalGranularitySelectorProps>;
9
+ export {};
10
+ //# sourceMappingURL=TemporalGranularitySelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemporalGranularitySelector.d.ts","sourceRoot":"","sources":["../../src/chart-builders/TemporalGranularitySelector.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,EAAO,MAAM,OAAO,CAAC;AASpC,OAAO,EAAC,gBAAgB,EAAC,MAAM,kCAAkC,CAAC;AAElE,UAAU,gCAAgC;IACxC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAsBD,eAAO,MAAM,2BAA2B,EAAE,EAAE,CAAC,gCAAgC,CAoCzE,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { memo } from 'react';
3
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@sqlrooms/ui';
4
+ import { TEMPORAL_COLUMN_TYPES } from './constants';
5
+ const TEMPORAL_INTERVALS = [
6
+ { value: 'year', label: 'Year' },
7
+ { value: 'quarter', label: 'Quarter' },
8
+ { value: 'month', label: 'Month' },
9
+ { value: 'week', label: 'Week' },
10
+ { value: 'day', label: 'Day' },
11
+ { value: 'hour', label: 'Hour' },
12
+ { value: 'minute', label: 'Minute' },
13
+ { value: 'second', label: 'Second' },
14
+ ];
15
+ const NONE = 'none';
16
+ function isTemporalField(fieldType) {
17
+ if (!fieldType)
18
+ return false;
19
+ return TEMPORAL_COLUMN_TYPES.some((type) => fieldType.toUpperCase() === type.toUpperCase());
20
+ }
21
+ export const TemporalGranularitySelector = memo(({ value, onChange, xFieldType }) => {
22
+ // Only render if X field is temporal
23
+ if (!isTemporalField(xFieldType)) {
24
+ return null;
25
+ }
26
+ const handleValueChange = (newValue) => {
27
+ if (newValue === NONE) {
28
+ onChange(undefined);
29
+ }
30
+ else {
31
+ onChange(newValue);
32
+ }
33
+ };
34
+ return (_jsxs(Select, { value: value || NONE, onValueChange: handleValueChange, children: [_jsx(SelectTrigger, { className: "h-8 text-xs shadow-none", children: _jsx(SelectValue, { placeholder: "None" }) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: NONE, className: "text-xs", children: "None" }), TEMPORAL_INTERVALS.map((interval) => (_jsx(SelectItem, { value: interval.value, className: "text-xs", children: interval.label }, interval.value)))] })] }));
35
+ });
36
+ TemporalGranularitySelector.displayName = 'TemporalGranularitySelector';
37
+ //# sourceMappingURL=TemporalGranularitySelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemporalGranularitySelector.js","sourceRoot":"","sources":["../../src/chart-builders/TemporalGranularitySelector.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAU,IAAI,EAAC,MAAM,OAAO,CAAC;AACpC,OAAO,EACL,MAAM,EACN,aAAa,EACb,UAAU,EACV,aAAa,EACb,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAC;AASlD,MAAM,kBAAkB,GAAG;IACzB,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAC;IAC9B,EAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAC;IACpC,EAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAC;IAChC,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAC;IAC9B,EAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC;IAC5B,EAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAC;IAC9B,EAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAC;IAClC,EAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAC;CAC1B,CAAC;AAEX,MAAM,IAAI,GAAG,MAAM,CAAC;AAEpB,SAAS,eAAe,CAAC,SAAkB;IACzC,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,OAAO,qBAAqB,CAAC,IAAI,CAC/B,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CACzD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,2BAA2B,GACtC,IAAI,CAAC,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAC,EAAE,EAAE;IACrC,qCAAqC;IACrC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,iBAAiB,GAAG,CAAC,QAAwC,EAAE,EAAE;QACrE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,MAAM,IAAC,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,aAAa,EAAE,iBAAiB,aAC5D,KAAC,aAAa,IAAC,SAAS,EAAC,yBAAyB,YAChD,KAAC,WAAW,IAAC,WAAW,EAAC,MAAM,GAAG,GACpB,EAChB,MAAC,aAAa,eACZ,KAAC,UAAU,IAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAC,SAAS,qBAE/B,EACZ,kBAAkB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CACpC,KAAC,UAAU,IAET,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,SAAS,EAAC,SAAS,YAElB,QAAQ,CAAC,KAAK,IAJV,QAAQ,CAAC,KAAK,CAKR,CACd,CAAC,IACY,IACT,CACV,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,2BAA2B,CAAC,WAAW,GAAG,6BAA6B,CAAC","sourcesContent":["import {type FC, memo} from 'react';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@sqlrooms/ui';\nimport {TEMPORAL_COLUMN_TYPES} from './constants';\nimport {TemporalInterval} from '../chart-types/line-chart/schema';\n\ninterface TemporalGranularitySelectorProps {\n value?: TemporalInterval;\n onChange: (value?: TemporalInterval) => void;\n xFieldType?: string;\n}\n\nconst TEMPORAL_INTERVALS = [\n {value: 'year', label: 'Year'},\n {value: 'quarter', label: 'Quarter'},\n {value: 'month', label: 'Month'},\n {value: 'week', label: 'Week'},\n {value: 'day', label: 'Day'},\n {value: 'hour', label: 'Hour'},\n {value: 'minute', label: 'Minute'},\n {value: 'second', label: 'Second'},\n] as const;\n\nconst NONE = 'none';\n\nfunction isTemporalField(fieldType?: string): boolean {\n if (!fieldType) return false;\n return TEMPORAL_COLUMN_TYPES.some(\n (type) => fieldType.toUpperCase() === type.toUpperCase(),\n );\n}\n\nexport const TemporalGranularitySelector: FC<TemporalGranularitySelectorProps> =\n memo(({value, onChange, xFieldType}) => {\n // Only render if X field is temporal\n if (!isTemporalField(xFieldType)) {\n return null;\n }\n\n const handleValueChange = (newValue: TemporalInterval | typeof NONE) => {\n if (newValue === NONE) {\n onChange(undefined);\n } else {\n onChange(newValue);\n }\n };\n\n return (\n <Select value={value || NONE} onValueChange={handleValueChange}>\n <SelectTrigger className=\"h-8 text-xs shadow-none\">\n <SelectValue placeholder=\"None\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={NONE} className=\"text-xs\">\n None\n </SelectItem>\n {TEMPORAL_INTERVALS.map((interval) => (\n <SelectItem\n key={interval.value}\n value={interval.value}\n className=\"text-xs\"\n >\n {interval.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n });\n\nTemporalGranularitySelector.displayName = 'TemporalGranularitySelector';\n"]}
@@ -1,4 +1,4 @@
1
- import type { ChartTypeDefinition } from './types';
1
+ import type { ChartTypeDefinition } from '../chart-types/base-types';
2
2
  /**
3
3
  * Human-readable chart title from a chart type and selected field values.
4
4
  */
@@ -1 +1 @@
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
+ {"version":3,"file":"chartSpecTitle.d.ts","sourceRoot":"","sources":["../../src/chart-builders/chartSpecTitle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AAGnE;;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 +1 @@
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"]}
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 '../chart-types/base-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"]}
@@ -1,17 +1,13 @@
1
- import type { ChartBuilderColumn, ChartBuilderField, ChartTypeDefinition } from './types';
1
+ import type { ChartTypeDefinition } from '../chart-types/base-types';
2
2
  export { NUMERIC_COLUMN_TYPES, TEMPORAL_COLUMN_TYPES, QUANTITATIVE_COLUMN_TYPES, } from './constants';
3
3
  /**
4
4
  * Build a default chart title from description and field values
5
5
  */
6
- export declare function buildDefaultChartTitle(description: string, fieldValues: Record<string, string>): string;
6
+ export declare function buildDefaultChartTitle(description: string, fieldValues: Record<string, unknown>): string;
7
7
  /**
8
8
  * Create a title builder function from a description string
9
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;
10
+ export declare function titleFromDescription(description: string): (fieldValues: Record<string, unknown>) => string;
11
+ export declare function buildChartTypeTitle(chartType: Pick<ChartTypeDefinition, 'description' | 'buildTitle'>, fieldValues: Record<string, unknown>): string;
12
+ export declare function canCreateChartFromType(chartTypeDefinition: ChartTypeDefinition | null | undefined, fieldValues: Record<string, unknown>): boolean;
17
13
  //# sourceMappingURL=chartTypeUtils.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"chartTypeUtils.d.ts","sourceRoot":"","sources":["../../src/chart-builders/chartTypeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AAcrB;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,MAAM,CAmBR;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,IAC9C,aAAa,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAE7C;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,GAAG,YAAY,CAAC,EAClE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,MAAM,CAIR;AAED,wBAAgB,sBAAsB,CACpC,mBAAmB,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,EAC3D,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,OAAO,CAET"}
@@ -1,10 +1,31 @@
1
1
  export { NUMERIC_COLUMN_TYPES, TEMPORAL_COLUMN_TYPES, QUANTITATIVE_COLUMN_TYPES, } from './constants';
2
+ /**
3
+ * Type guard to check if value has a field property (e.g., YFieldConfig)
4
+ */
5
+ function hasFieldProperty(value) {
6
+ return (typeof value === 'object' &&
7
+ value !== null &&
8
+ 'field' in value &&
9
+ typeof value.field === 'string');
10
+ }
2
11
  /**
3
12
  * Build a default chart title from description and field values
4
13
  */
5
14
  export function buildDefaultChartTitle(description, fieldValues) {
6
15
  const baseTitle = description.replace(/^Create (a |an )?/, '');
7
- const selectedFields = Object.values(fieldValues).filter(Boolean);
16
+ const selectedFields = Object.values(fieldValues)
17
+ .filter(Boolean)
18
+ .map((value) => {
19
+ // Handle array values (e.g., yFields)
20
+ if (Array.isArray(value)) {
21
+ return value
22
+ .map((item) => (hasFieldProperty(item) ? item.field : item))
23
+ .filter(Boolean)
24
+ .join(', ');
25
+ }
26
+ return String(value);
27
+ })
28
+ .filter(Boolean);
8
29
  return selectedFields.length > 0
9
30
  ? `${baseTitle} - ${selectedFields.join(', ')}`
10
31
  : baseTitle;
@@ -15,41 +36,12 @@ export function buildDefaultChartTitle(description, fieldValues) {
15
36
  export function titleFromDescription(description) {
16
37
  return (fieldValues) => buildDefaultChartTitle(description, fieldValues);
17
38
  }
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
39
  export function buildChartTypeTitle(chartType, fieldValues) {
38
40
  return chartType.buildTitle
39
41
  ? chartType.buildTitle(fieldValues)
40
42
  : buildDefaultChartTitle(chartType.description, fieldValues);
41
43
  }
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
- });
44
+ export function canCreateChartFromType(chartTypeDefinition, fieldValues) {
45
+ return chartTypeDefinition?.schema.safeParse(fieldValues)?.success ?? false;
54
46
  }
55
47
  //# sourceMappingURL=chartTypeUtils.js.map
@@ -1 +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"]}
1
+ {"version":3,"file":"chartTypeUtils.js","sourceRoot":"","sources":["../../src/chart-builders/chartTypeUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAChC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAmB,EACnB,WAAoC;IAEpC,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAC/D,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;SAC9C,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,sCAAsC;QACtC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK;iBACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBAC3D,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC;QAC9B,CAAC,CAAC,GAAG,SAAS,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC/C,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,OAAO,CAAC,WAAoC,EAAE,EAAE,CAC9C,sBAAsB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,SAAkE,EAClE,WAAoC;IAEpC,OAAO,SAAS,CAAC,UAAU;QACzB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC;QACnC,CAAC,CAAC,sBAAsB,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,mBAA2D,EAC3D,WAAoC;IAEpC,OAAO,mBAAmB,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,OAAO,IAAI,KAAK,CAAC;AAC9E,CAAC","sourcesContent":["import type {ChartTypeDefinition} from '../chart-types/base-types';\n\nexport {\n NUMERIC_COLUMN_TYPES,\n TEMPORAL_COLUMN_TYPES,\n QUANTITATIVE_COLUMN_TYPES,\n} from './constants';\n\n/**\n * Type guard to check if value has a field property (e.g., YFieldConfig)\n */\nfunction hasFieldProperty(value: unknown): value is {field: string} {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'field' in value &&\n typeof value.field === 'string'\n );\n}\n\n/**\n * Build a default chart title from description and field values\n */\nexport function buildDefaultChartTitle(\n description: string,\n fieldValues: Record<string, unknown>,\n): string {\n const baseTitle = description.replace(/^Create (a |an )?/, '');\n const selectedFields = Object.values(fieldValues)\n .filter(Boolean)\n .map((value) => {\n // Handle array values (e.g., yFields)\n if (Array.isArray(value)) {\n return value\n .map((item) => (hasFieldProperty(item) ? item.field : item))\n .filter(Boolean)\n .join(', ');\n }\n return String(value);\n })\n .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, unknown>) =>\n buildDefaultChartTitle(description, fieldValues);\n}\n\nexport function buildChartTypeTitle(\n chartType: Pick<ChartTypeDefinition, 'description' | 'buildTitle'>,\n fieldValues: Record<string, unknown>,\n): string {\n return chartType.buildTitle\n ? chartType.buildTitle(fieldValues)\n : buildDefaultChartTitle(chartType.description, fieldValues);\n}\n\nexport function canCreateChartFromType(\n chartTypeDefinition: ChartTypeDefinition | null | undefined,\n fieldValues: Record<string, unknown>,\n): boolean {\n return chartTypeDefinition?.schema.safeParse(fieldValues)?.success ?? false;\n}\n"]}
@@ -4,4 +4,9 @@
4
4
  export declare const NUMERIC_COLUMN_TYPES: string[];
5
5
  export declare const TEMPORAL_COLUMN_TYPES: string[];
6
6
  export declare const QUANTITATIVE_COLUMN_TYPES: string[];
7
+ export declare const CATEGORICAL_COLUMN_TYPES: string[];
8
+ export declare function isTemporalType(columnType: string): boolean;
9
+ export declare function isQuantitativeType(columnType: string): boolean;
10
+ export declare function isNumericType(columnType: string): boolean;
11
+ export declare function isCategoricalType(columnType: string): boolean;
7
12
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +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"}
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;AAEF,eAAO,MAAM,wBAAwB,UAAsC,CAAC;AAE5E,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE7D"}
@@ -31,4 +31,17 @@ export const QUANTITATIVE_COLUMN_TYPES = [
31
31
  ...NUMERIC_COLUMN_TYPES,
32
32
  ...TEMPORAL_COLUMN_TYPES,
33
33
  ];
34
+ export const CATEGORICAL_COLUMN_TYPES = ['VARCHAR', 'TEXT', 'BLOB', 'ENUM'];
35
+ export function isTemporalType(columnType) {
36
+ return TEMPORAL_COLUMN_TYPES.includes(columnType);
37
+ }
38
+ export function isQuantitativeType(columnType) {
39
+ return QUANTITATIVE_COLUMN_TYPES.includes(columnType);
40
+ }
41
+ export function isNumericType(columnType) {
42
+ return NUMERIC_COLUMN_TYPES.includes(columnType);
43
+ }
44
+ export function isCategoricalType(columnType) {
45
+ return CATEGORICAL_COLUMN_TYPES.includes(columnType);
46
+ }
34
47
  //# sourceMappingURL=constants.js.map
@@ -1 +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"]}
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;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE5E,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC/C,OAAO,qBAAqB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,OAAO,yBAAyB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,OAAO,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IAClD,OAAO,wBAAwB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACvD,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\nexport const CATEGORICAL_COLUMN_TYPES = ['VARCHAR', 'TEXT', 'BLOB', 'ENUM'];\n\nexport function isTemporalType(columnType: string): boolean {\n return TEMPORAL_COLUMN_TYPES.includes(columnType);\n}\n\nexport function isQuantitativeType(columnType: string): boolean {\n return QUANTITATIVE_COLUMN_TYPES.includes(columnType);\n}\n\nexport function isNumericType(columnType: string): boolean {\n return NUMERIC_COLUMN_TYPES.includes(columnType);\n}\n\nexport function isCategoricalType(columnType: string): boolean {\n return CATEGORICAL_COLUMN_TYPES.includes(columnType);\n}\n"]}
@@ -1,10 +1,10 @@
1
- import { VgPlotChartType } from '../chart-types';
1
+ import { ChartType } from '../chart-types';
2
2
  export type ChartBuilderStoreState = {
3
- selectedTemplateId?: VgPlotChartType;
4
- fieldValues: Record<string, string>;
3
+ selectedTemplateId?: ChartType;
4
+ fieldValues: Record<string, unknown>;
5
5
  reset: () => void;
6
- selectTemplate: (templateId: VgPlotChartType) => void;
7
- setFieldValue: (fieldKey: string, value: string) => void;
6
+ selectTemplate: (templateId: ChartType) => void;
7
+ setFieldValue: (fieldKey: string, value: unknown) => void;
8
8
  };
9
9
  export type ChartBuilderStore = ReturnType<typeof createChartBuilderStore>;
10
10
  export declare function createChartBuilderStore(): import("zustand").StoreApi<ChartBuilderStoreState>;
@@ -1 +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"}
1
+ {"version":3,"file":"createChartBuilderStore.d.ts","sourceRoot":"","sources":["../../src/chart-builders/createChartBuilderStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAEzC,MAAM,MAAM,sBAAsB,GAAG;IACnC,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,cAAc,EAAE,CAAC,UAAU,EAAE,SAAS,KAAK,IAAI,CAAC;IAChD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE3E,wBAAgB,uBAAuB,uDA4BtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createChartBuilderStore.js","sourceRoot":"","sources":["../../src/chart-builders/createChartBuilderStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAa5C,MAAM,UAAU,uBAAuB;IACrC,OAAO,WAAW,CAAyB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnD,kBAAkB,EAAE,SAAS;QAC7B,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,GAAG,EAAE;YACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvB,KAAK,CAAC,kBAAkB,GAAG,SAAS,CAAC;gBACrC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;YACzB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QACD,cAAc,EAAE,CAAC,UAAU,EAAE,EAAE;YAC7B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvB,KAAK,CAAC,kBAAkB,GAAG,UAAU,CAAC;gBACtC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;YACzB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QACD,aAAa,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YACjC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvB,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;YACtC,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;KACF,CAAC,CAAC,CAAC;AACN,CAAC","sourcesContent":["import {produce} from 'immer';\nimport {createStore} from 'zustand/vanilla';\nimport {VgPlotChartType} from '../chart-types';\n\nexport type ChartBuilderStoreState = {\n selectedTemplateId?: VgPlotChartType;\n fieldValues: Record<string, string>;\n reset: () => void;\n selectTemplate: (templateId: VgPlotChartType) => void;\n setFieldValue: (fieldKey: string, value: string) => void;\n};\n\nexport type ChartBuilderStore = ReturnType<typeof createChartBuilderStore>;\n\nexport function createChartBuilderStore() {\n return createStore<ChartBuilderStoreState>((set) => ({\n selectedTemplateId: undefined,\n fieldValues: {},\n reset: () => {\n set((state) =>\n produce(state, (draft) => {\n draft.selectedTemplateId = undefined;\n draft.fieldValues = {};\n }),\n );\n },\n selectTemplate: (templateId) => {\n set((state) =>\n produce(state, (draft) => {\n draft.selectedTemplateId = templateId;\n draft.fieldValues = {};\n }),\n );\n },\n setFieldValue: (fieldKey, value) => {\n set((state) =>\n produce(state, (draft) => {\n draft.fieldValues[fieldKey] = value;\n }),\n );\n },\n }));\n}\n"]}
1
+ {"version":3,"file":"createChartBuilderStore.js","sourceRoot":"","sources":["../../src/chart-builders/createChartBuilderStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAa5C,MAAM,UAAU,uBAAuB;IACrC,OAAO,WAAW,CAAyB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnD,kBAAkB,EAAE,SAAS;QAC7B,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,GAAG,EAAE;YACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvB,KAAK,CAAC,kBAAkB,GAAG,SAAS,CAAC;gBACrC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;YACzB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QACD,cAAc,EAAE,CAAC,UAAU,EAAE,EAAE;YAC7B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvB,KAAK,CAAC,kBAAkB,GAAG,UAAU,CAAC;gBACtC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;YACzB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QACD,aAAa,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;YACjC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvB,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;YACtC,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;KACF,CAAC,CAAC,CAAC;AACN,CAAC","sourcesContent":["import {produce} from 'immer';\nimport {createStore} from 'zustand/vanilla';\nimport {ChartType} from '../chart-types';\n\nexport type ChartBuilderStoreState = {\n selectedTemplateId?: ChartType;\n fieldValues: Record<string, unknown>;\n reset: () => void;\n selectTemplate: (templateId: ChartType) => void;\n setFieldValue: (fieldKey: string, value: unknown) => void;\n};\n\nexport type ChartBuilderStore = ReturnType<typeof createChartBuilderStore>;\n\nexport function createChartBuilderStore() {\n return createStore<ChartBuilderStoreState>((set) => ({\n selectedTemplateId: undefined,\n fieldValues: {},\n reset: () => {\n set((state) =>\n produce(state, (draft) => {\n draft.selectedTemplateId = undefined;\n draft.fieldValues = {};\n }),\n );\n },\n selectTemplate: (templateId) => {\n set((state) =>\n produce(state, (draft) => {\n draft.selectedTemplateId = templateId;\n draft.fieldValues = {};\n }),\n );\n },\n setFieldValue: (fieldKey, value) => {\n set((state) =>\n produce(state, (draft) => {\n draft.fieldValues[fieldKey] = value;\n }),\n );\n },\n }));\n}\n"]}