@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,28 +1,36 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Button, cn } from '@sqlrooms/ui';
3
- import { useMemo } from 'react';
3
+ import { useCallback, useMemo } from 'react';
4
4
  import { useChartBuilderContext, useChartBuilderStore, } from './ChartBuilderContext';
5
5
  import { buildChartTypeTitle, canCreateChartFromType } from './chartTypeUtils';
6
6
  export const ChartBuilderActions = ({ className, }) => {
7
- const { columns, onCreateChart, tableName, templates } = useChartBuilderContext();
7
+ const { onCreateChart, templates } = useChartBuilderContext();
8
8
  const selectedTemplateId = useChartBuilderStore((state) => state.selectedTemplateId);
9
9
  const fieldValues = useChartBuilderStore((state) => state.fieldValues);
10
10
  const reset = useChartBuilderStore((state) => state.reset);
11
11
  const selectedTemplate = useMemo(() => templates.find((template) => template.id === selectedTemplateId), [templates, selectedTemplateId]);
12
- const canCreate = canCreateChartFromType(selectedTemplate, fieldValues, columns);
13
- if (!selectedTemplate)
12
+ const canCreate = canCreateChartFromType(selectedTemplate, fieldValues);
13
+ const handleCreateChart = useCallback(() => {
14
+ if (!selectedTemplate || !canCreate || !selectedTemplateId) {
15
+ return;
16
+ }
17
+ const title = buildChartTypeTitle(selectedTemplate, fieldValues);
18
+ onCreateChart(title, {
19
+ chartType: selectedTemplateId,
20
+ settings: fieldValues,
21
+ });
22
+ reset();
23
+ }, [
24
+ selectedTemplate,
25
+ canCreate,
26
+ selectedTemplateId,
27
+ fieldValues,
28
+ onCreateChart,
29
+ reset,
30
+ ]);
31
+ if (!selectedTemplate) {
14
32
  return null;
15
- return (_jsxs("div", { className: cn('flex items-center justify-end gap-2', className), children: [_jsx(Button, { variant: "outline", size: "sm", onClick: reset, children: "Back" }), _jsx(Button, { size: "sm", onClick: () => {
16
- if (!selectedTemplate || !canCreate || !selectedTemplateId)
17
- return;
18
- const spec = selectedTemplate.createSpec(tableName, fieldValues);
19
- const title = buildChartTypeTitle(selectedTemplate, fieldValues);
20
- onCreateChart(title, {
21
- chartType: selectedTemplateId,
22
- settings: fieldValues,
23
- vgplot: spec,
24
- });
25
- reset();
26
- }, disabled: !canCreate, children: "Create" })] }));
33
+ }
34
+ return (_jsxs("div", { className: cn('flex items-center justify-end gap-2', className), children: [_jsx(Button, { variant: "outline", size: "sm", onClick: reset, children: "Back" }), _jsx(Button, { size: "sm", onClick: handleCreateChart, disabled: !canCreate, children: "Create" })] }));
27
35
  };
28
36
  //# sourceMappingURL=ChartBuilderActions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartBuilderActions.js","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderActions.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAE,EAAE,EAAC,MAAM,cAAc,CAAC;AACxC,OAAc,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,mBAAmB,EAAE,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AAM7E,MAAM,CAAC,MAAM,mBAAmB,GAAuC,CAAC,EACtE,SAAS,GACV,EAAE,EAAE;IACH,MAAM,EAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAC,GAClD,sBAAsB,EAAE,CAAC;IAC3B,MAAM,kBAAkB,GAAG,oBAAoB,CAC7C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACpC,CAAC;IACF,MAAM,WAAW,GAAG,oBAAoB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,oBAAoB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAE3D,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,kBAAkB,CAAC,EACtE,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAChC,CAAC;IAEF,MAAM,SAAS,GAAG,sBAAsB,CACtC,gBAAgB,EAChB,WAAW,EACX,OAAO,CACR,CAAC;IAEF,IAAI,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAEnC,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,qCAAqC,EAAE,SAAS,CAAC,aAClE,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,KAAK,qBAEzC,EACT,KAAC,MAAM,IACL,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,CAAC,gBAAgB,IAAI,CAAC,SAAS,IAAI,CAAC,kBAAkB;wBAAE,OAAO;oBACnE,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;oBACjE,MAAM,KAAK,GAAG,mBAAmB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;oBACjE,aAAa,CAAC,KAAK,EAAE;wBACnB,SAAS,EAAE,kBAAkB;wBAC7B,QAAQ,EAAE,WAAW;wBACrB,MAAM,EAAE,IAAI;qBACb,CAAC,CAAC;oBACH,KAAK,EAAE,CAAC;gBACV,CAAC,EACD,QAAQ,EAAE,CAAC,SAAS,uBAGb,IACL,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {Button, cn} from '@sqlrooms/ui';\nimport React, {useMemo} from 'react';\nimport {\n useChartBuilderContext,\n useChartBuilderStore,\n} from './ChartBuilderContext';\nimport {buildChartTypeTitle, canCreateChartFromType} from './chartTypeUtils';\n\nexport interface ChartBuilderActionsProps {\n className?: string;\n}\n\nexport const ChartBuilderActions: React.FC<ChartBuilderActionsProps> = ({\n className,\n}) => {\n const {columns, onCreateChart, tableName, templates} =\n useChartBuilderContext();\n const selectedTemplateId = useChartBuilderStore(\n (state) => state.selectedTemplateId,\n );\n const fieldValues = useChartBuilderStore((state) => state.fieldValues);\n const reset = useChartBuilderStore((state) => state.reset);\n\n const selectedTemplate = useMemo(\n () => templates.find((template) => template.id === selectedTemplateId),\n [templates, selectedTemplateId],\n );\n\n const canCreate = canCreateChartFromType(\n selectedTemplate,\n fieldValues,\n columns,\n );\n\n if (!selectedTemplate) return null;\n\n return (\n <div className={cn('flex items-center justify-end gap-2', className)}>\n <Button variant=\"outline\" size=\"sm\" onClick={reset}>\n Back\n </Button>\n <Button\n size=\"sm\"\n onClick={() => {\n if (!selectedTemplate || !canCreate || !selectedTemplateId) return;\n const spec = selectedTemplate.createSpec(tableName, fieldValues);\n const title = buildChartTypeTitle(selectedTemplate, fieldValues);\n onCreateChart(title, {\n chartType: selectedTemplateId,\n settings: fieldValues,\n vgplot: spec,\n });\n reset();\n }}\n disabled={!canCreate}\n >\n Create\n </Button>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"ChartBuilderActions.js","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderActions.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAE,EAAE,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EAAK,WAAW,EAAE,OAAO,EAAC,MAAM,OAAO,CAAC;AAC/C,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,mBAAmB,EAAE,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AAO7E,MAAM,CAAC,MAAM,mBAAmB,GAAiC,CAAC,EAChE,SAAS,GACV,EAAE,EAAE;IACH,MAAM,EAAC,aAAa,EAAE,SAAS,EAAC,GAAG,sBAAsB,EAAE,CAAC;IAC5D,MAAM,kBAAkB,GAAG,oBAAoB,CAC7C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACpC,CAAC;IACF,MAAM,WAAW,GAAG,oBAAoB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,oBAAoB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAE3D,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,kBAAkB,CAAC,EACtE,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAChC,CAAC;IAEF,MAAM,SAAS,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAExE,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;QACzC,IAAI,CAAC,gBAAgB,IAAI,CAAC,SAAS,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,mBAAmB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;QACjE,aAAa,CAAC,KAAK,EAAE;YACnB,SAAS,EAAE,kBAAkB;YAC7B,QAAQ,EAAE,WAAW;SACP,CAAC,CAAC;QAClB,KAAK,EAAE,CAAC;IACV,CAAC,EAAE;QACD,gBAAgB;QAChB,SAAS;QACT,kBAAkB;QAClB,WAAW;QACX,aAAa;QACb,KAAK;KACN,CAAC,CAAC;IAEH,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,qCAAqC,EAAE,SAAS,CAAC,aAClE,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,KAAK,qBAEzC,EACT,KAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,SAAS,uBAEzD,IACL,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {Button, cn} from '@sqlrooms/ui';\nimport {FC, useCallback, useMemo} from 'react';\nimport {\n useChartBuilderContext,\n useChartBuilderStore,\n} from './ChartBuilderContext';\nimport {buildChartTypeTitle, canCreateChartFromType} from './chartTypeUtils';\nimport type {ChartConfig} from '../chart-types';\n\nexport interface ChartBuilderActionsProps {\n className?: string;\n}\n\nexport const ChartBuilderActions: FC<ChartBuilderActionsProps> = ({\n className,\n}) => {\n const {onCreateChart, templates} = useChartBuilderContext();\n const selectedTemplateId = useChartBuilderStore(\n (state) => state.selectedTemplateId,\n );\n const fieldValues = useChartBuilderStore((state) => state.fieldValues);\n const reset = useChartBuilderStore((state) => state.reset);\n\n const selectedTemplate = useMemo(\n () => templates.find((template) => template.id === selectedTemplateId),\n [templates, selectedTemplateId],\n );\n\n const canCreate = canCreateChartFromType(selectedTemplate, fieldValues);\n\n const handleCreateChart = useCallback(() => {\n if (!selectedTemplate || !canCreate || !selectedTemplateId) {\n return;\n }\n\n const title = buildChartTypeTitle(selectedTemplate, fieldValues);\n onCreateChart(title, {\n chartType: selectedTemplateId,\n settings: fieldValues,\n } as ChartConfig);\n reset();\n }, [\n selectedTemplate,\n canCreate,\n selectedTemplateId,\n fieldValues,\n onCreateChart,\n reset,\n ]);\n\n if (!selectedTemplate) {\n return null;\n }\n\n return (\n <div className={cn('flex items-center justify-end gap-2', className)}>\n <Button variant=\"outline\" size=\"sm\" onClick={reset}>\n Back\n </Button>\n <Button size=\"sm\" onClick={handleCreateChart} disabled={!canCreate}>\n Create\n </Button>\n </div>\n );\n};\n"]}
@@ -1,18 +1,16 @@
1
1
  import React from 'react';
2
- import type { VgPlotChartConfig } from '../chart-types';
2
+ import type { ChartConfig } from '../chart-types';
3
3
  import { type ChartBuilderRootProps } from './ChartBuilderRoot';
4
- import type { ChartBuilderColumn, ChartBuilderTemplate, ChartTypeDefinition } from './types';
4
+ import type { ChartBuilderColumn, ChartTypeDefinition } from '../chart-types/base-types';
5
5
  type StandaloneChartBuilderContentProps = {
6
6
  /** Table name to use in generated specs */
7
7
  tableName: string;
8
8
  /** Available columns for field selectors */
9
9
  columns: ChartBuilderColumn[];
10
10
  /** Callback when a chart spec is created */
11
- onCreateChart: (title: string, config: VgPlotChartConfig) => void;
12
- /** Preferred shared chart-type customization surface */
11
+ onCreateChart: (title: string, config: ChartConfig) => void;
12
+ /** Optional chart types to show (defaults to all registered types) */
13
13
  chartTypes?: ChartTypeDefinition[];
14
- /** Backward-compatible UI template customization surface */
15
- builders?: ChartBuilderTemplate[];
16
14
  /** Custom class name */
17
15
  className?: string;
18
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ChartBuilderContent.d.ts","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderContent.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAItD,OAAO,EAAmB,KAAK,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;AAEhF,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB,KAAK,kCAAkC,GAAG;IACxC,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,4CAA4C;IAC5C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClE,wDAAwD;IACxD,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACnC,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAClC,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC5C,IAAI,CAAC,qBAAqB,EAAE,UAAU,CAAC,CACxC,GACC,IAAI,CAAC,kCAAkC,EAAE,WAAW,CAAC,CAAC;AAoBxD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAalE,CAAC"}
1
+ {"version":3,"file":"ChartBuilderContent.d.ts","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderContent.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAIhD,OAAO,EAAmB,KAAK,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;AAEhF,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAEnC,KAAK,kCAAkC,GAAG;IACxC,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,4CAA4C;IAC5C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IAC5D,sEAAsE;IACtE,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACnC,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC5C,IAAI,CAAC,qBAAqB,EAAE,UAAU,CAAC,CACxC,GACC,IAAI,CAAC,kCAAkC,EAAE,WAAW,CAAC,CAAC;AAoBxD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAalE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChartBuilderContent.js","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderContent.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,cAAc,CAAC;AAGhC,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAC,sBAAsB,EAAC,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,gBAAgB,EAA6B,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AA2B5D,SAAS,iBAAiB,CACxB,KAA+B;IAE/B,OAAO,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,uBAAuB,CAAC,EAAC,SAAS,EAAuB;IAChE,sBAAsB,EAAE,CAAC;IAEzB,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,aAClD,KAAC,oBAAoB,KAAG,EACxB,KAAC,kBAAkB,KAAG,EACtB,KAAC,mBAAmB,KAAG,IACnB,CACP,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAuC,CACrE,KAAK,EACL,EAAE;IACF,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,EAAC,SAAS,EAAE,GAAG,SAAS,EAAC,GAAG,KAAK,CAAC;QACxC,OAAO,CACL,KAAC,gBAAgB,OAAK,SAAS,YAC7B,KAAC,uBAAuB,IAAC,SAAS,EAAE,SAAS,GAAI,GAChC,CACpB,CAAC;IACJ,CAAC;IAED,OAAO,KAAC,uBAAuB,IAAC,SAAS,EAAE,KAAK,CAAC,SAAS,GAAI,CAAC;AACjE,CAAC,CAAC","sourcesContent":["import {cn} from '@sqlrooms/ui';\nimport React from 'react';\nimport type {VgPlotChartConfig} from '../chart-types';\nimport {ChartBuilderActions} from './ChartBuilderActions';\nimport {useChartBuilderContext} from './ChartBuilderContext';\nimport {ChartBuilderFields} from './ChartBuilderFields';\nimport {ChartBuilderRoot, type ChartBuilderRootProps} from './ChartBuilderRoot';\nimport {ChartBuilderTypeGrid} from './ChartBuilderTypeGrid';\nimport type {\n ChartBuilderColumn,\n ChartBuilderTemplate,\n ChartTypeDefinition,\n} from './types';\n\ntype StandaloneChartBuilderContentProps = {\n /** Table name to use in generated specs */\n tableName: string;\n /** Available columns for field selectors */\n columns: ChartBuilderColumn[];\n /** Callback when a chart spec is created */\n onCreateChart: (title: string, config: VgPlotChartConfig) => void;\n /** Preferred shared chart-type customization surface */\n chartTypes?: ChartTypeDefinition[];\n /** Backward-compatible UI template customization surface */\n builders?: ChartBuilderTemplate[];\n /** Custom class name */\n className?: string;\n};\n\nexport type ChartBuilderContentProps = Partial<\n Omit<ChartBuilderRootProps, 'children'>\n> &\n Pick<StandaloneChartBuilderContentProps, 'className'>;\n\nfunction isStandaloneProps(\n props: ChartBuilderContentProps,\n): props is StandaloneChartBuilderContentProps {\n return Boolean(props.tableName && props.columns && props.onCreateChart);\n}\n\nfunction ChartBuilderContentBody({className}: {className?: string}) {\n useChartBuilderContext();\n\n return (\n <div className={cn('flex flex-col gap-2', className)}>\n <ChartBuilderTypeGrid />\n <ChartBuilderFields />\n <ChartBuilderActions />\n </div>\n );\n}\n\n/**\n * Standalone chart builder UI for creating Mosaic charts from templates.\n *\n * Can be used directly with props, or inside `<MosaicChartBuilder>` where it\n * consumes the surrounding builder context.\n */\nexport const ChartBuilderContent: React.FC<ChartBuilderContentProps> = (\n props,\n) => {\n if (isStandaloneProps(props)) {\n const {className, ...rootProps} = props;\n return (\n <ChartBuilderRoot {...rootProps}>\n <ChartBuilderContentBody className={className} />\n </ChartBuilderRoot>\n );\n }\n\n return <ChartBuilderContentBody className={props.className} />;\n};\n"]}
1
+ {"version":3,"file":"ChartBuilderContent.js","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderContent.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,cAAc,CAAC;AAGhC,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAC,sBAAsB,EAAC,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,gBAAgB,EAA6B,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAwB5D,SAAS,iBAAiB,CACxB,KAA+B;IAE/B,OAAO,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,uBAAuB,CAAC,EAAC,SAAS,EAAuB;IAChE,sBAAsB,EAAE,CAAC;IAEzB,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,aAClD,KAAC,oBAAoB,KAAG,EACxB,KAAC,kBAAkB,KAAG,EACtB,KAAC,mBAAmB,KAAG,IACnB,CACP,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAuC,CACrE,KAAK,EACL,EAAE;IACF,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,EAAC,SAAS,EAAE,GAAG,SAAS,EAAC,GAAG,KAAK,CAAC;QACxC,OAAO,CACL,KAAC,gBAAgB,OAAK,SAAS,YAC7B,KAAC,uBAAuB,IAAC,SAAS,EAAE,SAAS,GAAI,GAChC,CACpB,CAAC;IACJ,CAAC;IAED,OAAO,KAAC,uBAAuB,IAAC,SAAS,EAAE,KAAK,CAAC,SAAS,GAAI,CAAC;AACjE,CAAC,CAAC","sourcesContent":["import {cn} from '@sqlrooms/ui';\nimport React from 'react';\nimport type {ChartConfig} from '../chart-types';\nimport {ChartBuilderActions} from './ChartBuilderActions';\nimport {useChartBuilderContext} from './ChartBuilderContext';\nimport {ChartBuilderFields} from './ChartBuilderFields';\nimport {ChartBuilderRoot, type ChartBuilderRootProps} from './ChartBuilderRoot';\nimport {ChartBuilderTypeGrid} from './ChartBuilderTypeGrid';\nimport type {\n ChartBuilderColumn,\n ChartTypeDefinition,\n} from '../chart-types/base-types';\n\ntype StandaloneChartBuilderContentProps = {\n /** Table name to use in generated specs */\n tableName: string;\n /** Available columns for field selectors */\n columns: ChartBuilderColumn[];\n /** Callback when a chart spec is created */\n onCreateChart: (title: string, config: ChartConfig) => void;\n /** Optional chart types to show (defaults to all registered types) */\n chartTypes?: ChartTypeDefinition[];\n /** Custom class name */\n className?: string;\n};\n\nexport type ChartBuilderContentProps = Partial<\n Omit<ChartBuilderRootProps, 'children'>\n> &\n Pick<StandaloneChartBuilderContentProps, 'className'>;\n\nfunction isStandaloneProps(\n props: ChartBuilderContentProps,\n): props is StandaloneChartBuilderContentProps {\n return Boolean(props.tableName && props.columns && props.onCreateChart);\n}\n\nfunction ChartBuilderContentBody({className}: {className?: string}) {\n useChartBuilderContext();\n\n return (\n <div className={cn('flex flex-col gap-2', className)}>\n <ChartBuilderTypeGrid />\n <ChartBuilderFields />\n <ChartBuilderActions />\n </div>\n );\n}\n\n/**\n * Standalone chart builder UI for creating Mosaic charts from templates.\n *\n * Can be used directly with props, or inside `<MosaicChartBuilder>` where it\n * consumes the surrounding builder context.\n */\nexport const ChartBuilderContent: React.FC<ChartBuilderContentProps> = (\n props,\n) => {\n if (isStandaloneProps(props)) {\n const {className, ...rootProps} = props;\n return (\n <ChartBuilderRoot {...rootProps}>\n <ChartBuilderContentBody className={className} />\n </ChartBuilderRoot>\n );\n }\n\n return <ChartBuilderContentBody className={props.className} />;\n};\n"]}
@@ -1,13 +1,12 @@
1
- import type { VgPlotChartConfig } from '../chart-types';
1
+ import type { ChartConfig } from '../chart-types';
2
2
  import type { ChartBuilderStore, ChartBuilderStoreState } from './createChartBuilderStore';
3
- import type { ChartBuilderColumn, ChartBuilderTemplate, ChartTypeDefinition } from './types';
3
+ import type { ChartBuilderColumn, ChartTypeDefinition } from '../chart-types/base-types';
4
4
  export type ChartBuilderContextValue = {
5
5
  tableName: string;
6
6
  columns: ChartBuilderColumn[];
7
- onCreateChart: (title: string, config: VgPlotChartConfig) => void;
8
- templates: ChartBuilderTemplate[];
9
- availableChartTypes: ChartTypeDefinition[];
10
- availableTemplates: ChartBuilderTemplate[];
7
+ onCreateChart: (title: string, config: ChartConfig) => void;
8
+ templates: ChartTypeDefinition[];
9
+ availableTemplates: ChartTypeDefinition[];
11
10
  store: ChartBuilderStore;
12
11
  };
13
12
  export declare const ChartBuilderContext: import("react").Context<ChartBuilderContextValue | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"ChartBuilderContext.d.ts","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EACV,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClE,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;IAC3C,kBAAkB,EAAE,oBAAoB,EAAE,CAAC;IAC3C,KAAK,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,0DACsB,CAAC;AAEvD,wBAAgB,sBAAsB,IAAI,wBAAwB,CAQjE;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,CAAC,GAC7C,CAAC,CAGH"}
1
+ {"version":3,"file":"ChartBuilderContext.d.ts","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderContext.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EACV,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IAC5D,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,kBAAkB,EAAE,mBAAmB,EAAE,CAAC;IAC1C,KAAK,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,0DACsB,CAAC;AAEvD,wBAAgB,sBAAsB,IAAI,wBAAwB,CAQjE;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,CAAC,GAC7C,CAAC,CAGH"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChartBuilderContext.js","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,UAAU,EAAC,MAAM,OAAO,CAAC;AAChD,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AAsBjC,MAAM,CAAC,MAAM,mBAAmB,GAC9B,aAAa,CAAkC,IAAI,CAAC,CAAC;AAEvD,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,QAA8C;IAE9C,MAAM,EAAC,KAAK,EAAC,GAAG,sBAAsB,EAAE,CAAC;IACzC,OAAO,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC","sourcesContent":["import {createContext, useContext} from 'react';\nimport {useStore} from 'zustand';\nimport type {VgPlotChartConfig} from '../chart-types';\nimport type {\n ChartBuilderStore,\n ChartBuilderStoreState,\n} from './createChartBuilderStore';\nimport type {\n ChartBuilderColumn,\n ChartBuilderTemplate,\n ChartTypeDefinition,\n} from './types';\n\nexport type ChartBuilderContextValue = {\n tableName: string;\n columns: ChartBuilderColumn[];\n onCreateChart: (title: string, config: VgPlotChartConfig) => void;\n templates: ChartBuilderTemplate[];\n availableChartTypes: ChartTypeDefinition[];\n availableTemplates: ChartBuilderTemplate[];\n store: ChartBuilderStore;\n};\n\nexport const ChartBuilderContext =\n createContext<ChartBuilderContextValue | null>(null);\n\nexport function useChartBuilderContext(): ChartBuilderContextValue {\n const ctx = useContext(ChartBuilderContext);\n if (!ctx) {\n throw new Error(\n 'ChartBuilder compound components must be rendered inside <MosaicChartBuilder>.',\n );\n }\n return ctx;\n}\n\nexport function useChartBuilderStore<T>(\n selector: (state: ChartBuilderStoreState) => T,\n): T {\n const {store} = useChartBuilderContext();\n return useStore(store, selector);\n}\n"]}
1
+ {"version":3,"file":"ChartBuilderContext.js","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,UAAU,EAAC,MAAM,OAAO,CAAC;AAChD,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AAoBjC,MAAM,CAAC,MAAM,mBAAmB,GAC9B,aAAa,CAAkC,IAAI,CAAC,CAAC;AAEvD,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,QAA8C;IAE9C,MAAM,EAAC,KAAK,EAAC,GAAG,sBAAsB,EAAE,CAAC;IACzC,OAAO,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACnC,CAAC","sourcesContent":["import {createContext, useContext} from 'react';\nimport {useStore} from 'zustand';\nimport type {ChartConfig} from '../chart-types';\nimport type {\n ChartBuilderStore,\n ChartBuilderStoreState,\n} from './createChartBuilderStore';\nimport type {\n ChartBuilderColumn,\n ChartTypeDefinition,\n} from '../chart-types/base-types';\n\nexport type ChartBuilderContextValue = {\n tableName: string;\n columns: ChartBuilderColumn[];\n onCreateChart: (title: string, config: ChartConfig) => void;\n templates: ChartTypeDefinition[];\n availableTemplates: ChartTypeDefinition[];\n store: ChartBuilderStore;\n};\n\nexport const ChartBuilderContext =\n createContext<ChartBuilderContextValue | null>(null);\n\nexport function useChartBuilderContext(): ChartBuilderContextValue {\n const ctx = useContext(ChartBuilderContext);\n if (!ctx) {\n throw new Error(\n 'ChartBuilder compound components must be rendered inside <MosaicChartBuilder>.',\n );\n }\n return ctx;\n}\n\nexport function useChartBuilderStore<T>(\n selector: (state: ChartBuilderStoreState) => T,\n): T {\n const {store} = useChartBuilderContext();\n return useStore(store, selector);\n}\n"]}
@@ -1,17 +1,16 @@
1
1
  import { type ButtonProps } from '@sqlrooms/ui';
2
- import React from 'react';
3
- import type { VgPlotChartConfig } from '../chart-types';
4
- import type { ChartBuilderColumn, ChartBuilderTemplate, ChartTypeDefinition } from './types';
2
+ import React, { PropsWithChildren } from 'react';
3
+ import type { ChartConfig } from '../chart-types';
4
+ import type { ChartBuilderColumn, ChartTypeDefinition } from '../chart-types/base-types';
5
5
  export type ChartBuilderTriggerProps = ButtonProps;
6
6
  export declare const ChartBuilderTrigger: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
7
- export interface ChartBuilderDialogContentProps {
7
+ export type ChartBuilderDialogContentProps = PropsWithChildren<{
8
8
  /** Override dialog title (default "Add Chart") */
9
9
  title?: string;
10
10
  /** Override dialog description */
11
11
  description?: string;
12
12
  className?: string;
13
- children?: React.ReactNode;
14
- }
13
+ }>;
15
14
  /**
16
15
  * The dialog content pane that renders the chart-builder steps.
17
16
  * Must be rendered inside `<MosaicChartBuilder>`.
@@ -27,11 +26,9 @@ export interface ChartBuilderDialogProps {
27
26
  /** Available columns for field selectors */
28
27
  columns: ChartBuilderColumn[];
29
28
  /** Callback when a chart spec is created */
30
- onCreateChart: (title: string, config: VgPlotChartConfig) => void;
31
- /** Preferred shared chart-type customization surface */
29
+ onCreateChart: (title: string, config: ChartConfig) => void;
30
+ /** Optional chart types to show (defaults to all registered types) */
32
31
  chartTypes?: ChartTypeDefinition[];
33
- /** Backward-compatible UI template customization surface */
34
- builders?: ChartBuilderTemplate[];
35
32
  }
36
33
  /**
37
34
  * Dialog wrapper for the chart builder (legacy API).
@@ -1 +1 @@
1
- {"version":3,"file":"ChartBuilderDialog.d.ts","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAMjB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAGtD,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAAC;AAEnD,eAAO,MAAM,mBAAmB,uFAgB9B,CAAC;AAGH,MAAM,WAAW,8BAA8B;IAC7C,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAC9C,8BAA8B,CAgB/B,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,iCAAiC;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,8CAA8C;IAC9C,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,4CAA4C;IAC5C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClE,wDAAwD;IACxD,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACnC,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACnC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAoBhE,CAAC"}
1
+ {"version":3,"file":"ChartBuilderDialog.d.ts","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAMjB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,EAAC,iBAAiB,EAAC,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAGhD,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAAC;AAEnD,eAAO,MAAM,mBAAmB,uFAgB9B,CAAC;AAGH,MAAM,MAAM,8BAA8B,GAAG,iBAAiB,CAAC;IAC7D,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAC9C,8BAA8B,CAgB/B,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,iCAAiC;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,8CAA8C;IAC9C,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,4CAA4C;IAC5C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IAC5D,sEAAsE;IACtE,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACpC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAkBhE,CAAC"}
@@ -26,5 +26,5 @@ export const ChartBuilderDialogContent = ({ title = 'Add Chart', description = '
26
26
  * </MosaicChartBuilder>
27
27
  * ```
28
28
  */
29
- export const ChartBuilderDialog = ({ open, onOpenChange, tableName, columns, onCreateChart, chartTypes, builders, }) => (_jsx(ChartBuilderRoot, { open: open, onOpenChange: onOpenChange, tableName: tableName, columns: columns, onCreateChart: onCreateChart, chartTypes: chartTypes, builders: builders, children: _jsx(ChartBuilderDialogContent, {}) }));
29
+ export const ChartBuilderDialog = ({ open, onOpenChange, tableName, columns, onCreateChart, chartTypes, }) => (_jsx(ChartBuilderRoot, { open: open, onOpenChange: onOpenChange, tableName: tableName, columns: columns, onCreateChart: onCreateChart, chartTypes: chartTypes, children: _jsx(ChartBuilderDialogContent, {}) }));
30
30
  //# sourceMappingURL=ChartBuilderDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartBuilderDialog.js","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,MAAM,EAEN,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,IAAI,EAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AASpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,UAAU,CAGjD,CAAC,EAAC,QAAQ,EAAE,GAAG,KAAK,EAAC,EAAE,GAAG,EAAE,EAAE;IAC9B,OAAO,CACL,KAAC,aAAa,IAAC,OAAO,kBACpB,KAAC,MAAM,IAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,KAAK,KAAK,YACpD,QAAQ,IAAI,CACX,8BACE,KAAC,IAAI,IAAC,SAAS,EAAC,cAAc,GAAG,iBAEhC,CACJ,GACM,GACK,CACjB,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,mBAAmB,CAAC,WAAW,GAAG,qBAAqB,CAAC;AAWxD;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAElC,CAAC,EACH,KAAK,GAAG,WAAW,EACnB,WAAW,GAAG,gCAAgC,EAC9C,SAAS,EACT,QAAQ,GACT,EAAE,EAAE;IACH,OAAO,CACL,MAAC,aAAa,IAAC,SAAS,EAAE,SAAS,IAAI,aAAa,aAClD,MAAC,YAAY,eACX,KAAC,WAAW,cAAE,KAAK,GAAe,EAClC,KAAC,iBAAiB,cAAE,WAAW,GAAqB,IACvC,EACd,QAAQ,IAAI,KAAC,mBAAmB,KAAG,IACtB,CACjB,CAAC;AACJ,CAAC,CAAC;AAmBF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EACpE,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,aAAa,EACb,UAAU,EACV,QAAQ,GACT,EAAE,EAAE,CAAC,CACJ,KAAC,gBAAgB,IACf,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,YAElB,KAAC,yBAAyB,KAAG,GACZ,CACpB,CAAC","sourcesContent":["import {\n Button,\n type ButtonProps,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from '@sqlrooms/ui';\nimport {Plus} from 'lucide-react';\nimport React from 'react';\nimport type {VgPlotChartConfig} from '../chart-types';\nimport {ChartBuilderContent} from './ChartBuilderContent';\nimport {ChartBuilderRoot} from './ChartBuilderRoot';\nimport type {\n ChartBuilderColumn,\n ChartBuilderTemplate,\n ChartTypeDefinition,\n} from './types';\n\nexport type ChartBuilderTriggerProps = ButtonProps;\n\nexport const ChartBuilderTrigger = React.forwardRef<\n HTMLButtonElement,\n ChartBuilderTriggerProps\n>(({children, ...props}, ref) => {\n return (\n <DialogTrigger asChild>\n <Button ref={ref} variant=\"outline\" size=\"sm\" {...props}>\n {children ?? (\n <>\n <Plus className=\"mr-1 h-4 w-4\" />\n Add Chart\n </>\n )}\n </Button>\n </DialogTrigger>\n );\n});\nChartBuilderTrigger.displayName = 'ChartBuilderTrigger';\n\nexport interface ChartBuilderDialogContentProps {\n /** Override dialog title (default \"Add Chart\") */\n title?: string;\n /** Override dialog description */\n description?: string;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * The dialog content pane that renders the chart-builder steps.\n * Must be rendered inside `<MosaicChartBuilder>`.\n */\nexport const ChartBuilderDialogContent: React.FC<\n ChartBuilderDialogContentProps\n> = ({\n title = 'Add Chart',\n description = 'Select a chart type to create.',\n className,\n children,\n}) => {\n return (\n <DialogContent className={className ?? 'sm:max-w-lg'}>\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n {children ?? <ChartBuilderContent />}\n </DialogContent>\n );\n};\n\nexport interface ChartBuilderDialogProps {\n /** Whether the dialog is open */\n open: boolean;\n /** Callback when dialog open state changes */\n onOpenChange: (open: boolean) => void;\n /** Table name to use in generated specs */\n tableName: string;\n /** Available columns for field selectors */\n columns: ChartBuilderColumn[];\n /** Callback when a chart spec is created */\n onCreateChart: (title: string, config: VgPlotChartConfig) => void;\n /** Preferred shared chart-type customization surface */\n chartTypes?: ChartTypeDefinition[];\n /** Backward-compatible UI template customization surface */\n builders?: ChartBuilderTemplate[];\n}\n\n/**\n * Dialog wrapper for the chart builder (legacy API).\n *\n * @deprecated Prefer the compound form:\n * ```tsx\n * <MosaicChartBuilder tableName={…} columns={…} onCreateChart={…}>\n * <MosaicChartBuilder.Trigger />\n * <MosaicChartBuilder.Dialog />\n * </MosaicChartBuilder>\n * ```\n */\nexport const ChartBuilderDialog: React.FC<ChartBuilderDialogProps> = ({\n open,\n onOpenChange,\n tableName,\n columns,\n onCreateChart,\n chartTypes,\n builders,\n}) => (\n <ChartBuilderRoot\n open={open}\n onOpenChange={onOpenChange}\n tableName={tableName}\n columns={columns}\n onCreateChart={onCreateChart}\n chartTypes={chartTypes}\n builders={builders}\n >\n <ChartBuilderDialogContent />\n </ChartBuilderRoot>\n);\n"]}
1
+ {"version":3,"file":"ChartBuilderDialog.js","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,MAAM,EAEN,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,IAAI,EAAC,MAAM,cAAc,CAAC;AAClC,OAAO,KAA0B,MAAM,OAAO,CAAC;AAE/C,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AAQpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,UAAU,CAGjD,CAAC,EAAC,QAAQ,EAAE,GAAG,KAAK,EAAC,EAAE,GAAG,EAAE,EAAE;IAC9B,OAAO,CACL,KAAC,aAAa,IAAC,OAAO,kBACpB,KAAC,MAAM,IAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,KAAK,KAAK,YACpD,QAAQ,IAAI,CACX,8BACE,KAAC,IAAI,IAAC,SAAS,EAAC,cAAc,GAAG,iBAEhC,CACJ,GACM,GACK,CACjB,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,mBAAmB,CAAC,WAAW,GAAG,qBAAqB,CAAC;AAUxD;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAElC,CAAC,EACH,KAAK,GAAG,WAAW,EACnB,WAAW,GAAG,gCAAgC,EAC9C,SAAS,EACT,QAAQ,GACT,EAAE,EAAE;IACH,OAAO,CACL,MAAC,aAAa,IAAC,SAAS,EAAE,SAAS,IAAI,aAAa,aAClD,MAAC,YAAY,eACX,KAAC,WAAW,cAAE,KAAK,GAAe,EAClC,KAAC,iBAAiB,cAAE,WAAW,GAAqB,IACvC,EACd,QAAQ,IAAI,KAAC,mBAAmB,KAAG,IACtB,CACjB,CAAC;AACJ,CAAC,CAAC;AAiBF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EACpE,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,OAAO,EACP,aAAa,EACb,UAAU,GACX,EAAE,EAAE,CAAC,CACJ,KAAC,gBAAgB,IACf,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,YAEtB,KAAC,yBAAyB,KAAG,GACZ,CACpB,CAAC","sourcesContent":["import {\n Button,\n type ButtonProps,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from '@sqlrooms/ui';\nimport {Plus} from 'lucide-react';\nimport React, {PropsWithChildren} from 'react';\nimport type {ChartConfig} from '../chart-types';\nimport {ChartBuilderContent} from './ChartBuilderContent';\nimport {ChartBuilderRoot} from './ChartBuilderRoot';\nimport type {\n ChartBuilderColumn,\n ChartTypeDefinition,\n} from '../chart-types/base-types';\n\nexport type ChartBuilderTriggerProps = ButtonProps;\n\nexport const ChartBuilderTrigger = React.forwardRef<\n HTMLButtonElement,\n ChartBuilderTriggerProps\n>(({children, ...props}, ref) => {\n return (\n <DialogTrigger asChild>\n <Button ref={ref} variant=\"outline\" size=\"sm\" {...props}>\n {children ?? (\n <>\n <Plus className=\"mr-1 h-4 w-4\" />\n Add Chart\n </>\n )}\n </Button>\n </DialogTrigger>\n );\n});\nChartBuilderTrigger.displayName = 'ChartBuilderTrigger';\n\nexport type ChartBuilderDialogContentProps = PropsWithChildren<{\n /** Override dialog title (default \"Add Chart\") */\n title?: string;\n /** Override dialog description */\n description?: string;\n className?: string;\n}>;\n\n/**\n * The dialog content pane that renders the chart-builder steps.\n * Must be rendered inside `<MosaicChartBuilder>`.\n */\nexport const ChartBuilderDialogContent: React.FC<\n ChartBuilderDialogContentProps\n> = ({\n title = 'Add Chart',\n description = 'Select a chart type to create.',\n className,\n children,\n}) => {\n return (\n <DialogContent className={className ?? 'sm:max-w-lg'}>\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n {children ?? <ChartBuilderContent />}\n </DialogContent>\n );\n};\n\nexport interface ChartBuilderDialogProps {\n /** Whether the dialog is open */\n open: boolean;\n /** Callback when dialog open state changes */\n onOpenChange: (open: boolean) => void;\n /** Table name to use in generated specs */\n tableName: string;\n /** Available columns for field selectors */\n columns: ChartBuilderColumn[];\n /** Callback when a chart spec is created */\n onCreateChart: (title: string, config: ChartConfig) => void;\n /** Optional chart types to show (defaults to all registered types) */\n chartTypes?: ChartTypeDefinition[];\n}\n\n/**\n * Dialog wrapper for the chart builder (legacy API).\n *\n * @deprecated Prefer the compound form:\n * ```tsx\n * <MosaicChartBuilder tableName={…} columns={…} onCreateChart={…}>\n * <MosaicChartBuilder.Trigger />\n * <MosaicChartBuilder.Dialog />\n * </MosaicChartBuilder>\n * ```\n */\nexport const ChartBuilderDialog: React.FC<ChartBuilderDialogProps> = ({\n open,\n onOpenChange,\n tableName,\n columns,\n onCreateChart,\n chartTypes,\n}) => (\n <ChartBuilderRoot\n open={open}\n onOpenChange={onOpenChange}\n tableName={tableName}\n columns={columns}\n onCreateChart={onCreateChart}\n chartTypes={chartTypes}\n >\n <ChartBuilderDialogContent />\n </ChartBuilderRoot>\n);\n"]}
@@ -1,6 +1,6 @@
1
- import React from 'react';
1
+ import { FC } from 'react';
2
2
  export interface ChartBuilderFieldsProps {
3
3
  className?: string;
4
4
  }
5
- export declare const ChartBuilderFields: React.FC<ChartBuilderFieldsProps>;
5
+ export declare const ChartBuilderFields: FC<ChartBuilderFieldsProps>;
6
6
  //# sourceMappingURL=ChartBuilderFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartBuilderFields.d.ts","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderFields.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA8ChE,CAAC"}
1
+ {"version":3,"file":"ChartBuilderFields.d.ts","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderFields.tsx"],"names":[],"mappings":"AACA,OAAO,EAAC,EAAE,EAAuB,MAAM,OAAO,CAAC;AAQ/C,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,uBAAuB,CAyD1D,CAAC"}
@@ -1,25 +1,39 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { cn } from '@sqlrooms/ui';
3
- import React from 'react';
3
+ import { useCallback, useMemo } from 'react';
4
4
  import { useChartBuilderContext, useChartBuilderStore, } from './ChartBuilderContext';
5
- import { FieldSelectorInput } from './FieldSelectorInput';
6
- import { useChartFieldForm } from './hooks/useChartFieldForm';
5
+ import { ChartSettingsProvider } from '../chart/chart-settings/ChartSettingsContext';
7
6
  export const ChartBuilderFields = ({ className, }) => {
8
7
  const { columns, templates } = useChartBuilderContext();
9
- const selectedTemplateId = useChartBuilderStore((state) => state.selectedTemplateId);
8
+ const chartTypeDefinitionId = useChartBuilderStore((state) => state.selectedTemplateId);
10
9
  const fieldValues = useChartBuilderStore((state) => state.fieldValues);
11
10
  const setFieldValue = useChartBuilderStore((state) => state.setFieldValue);
12
- const selectedTemplate = React.useMemo(() => templates.find((template) => template.id === selectedTemplateId), [templates, selectedTemplateId]);
13
- const { fields, handleFieldChange } = useChartFieldForm({
14
- fields: selectedTemplate?.fields || [],
15
- values: fieldValues,
16
- onChange: (key, value) => setFieldValue(key, value),
17
- });
18
- if (!selectedTemplate)
11
+ const chartTypeDefinition = useMemo(() => templates.find((template) => template.id === chartTypeDefinitionId), [templates, chartTypeDefinitionId]);
12
+ const handleChange = useCallback((config) => {
13
+ // Update all changed values from settings
14
+ Object.entries(config.settings).forEach(([key, value]) => {
15
+ if (fieldValues[key] !== value) {
16
+ setFieldValue(key, value);
17
+ }
18
+ });
19
+ }, [fieldValues, setFieldValue]);
20
+ // Create a config object for the context
21
+ const config = useMemo(() => {
22
+ if (!chartTypeDefinition) {
23
+ return {
24
+ chartType: 'histogram',
25
+ settings: {},
26
+ };
27
+ }
28
+ return {
29
+ chartType: chartTypeDefinition.id,
30
+ settings: fieldValues,
31
+ };
32
+ }, [chartTypeDefinition, fieldValues]);
33
+ if (!chartTypeDefinition) {
19
34
  return null;
20
- if (fields.length === 0) {
21
- return (_jsx("p", { className: cn('text-muted-foreground py-2 text-sm', className), children: "This chart type has no configurable fields. A starter spec will be created that you can edit manually." }));
22
35
  }
23
- return (_jsx("div", { className: cn('flex flex-col gap-4 py-2', className), children: fields.map((field) => (_jsx(FieldSelectorInput, { field: field, columns: columns, value: fieldValues[field.key], onChange: (value) => handleFieldChange(field.key, value) }, field.key))) }));
36
+ const SettingsComponent = chartTypeDefinition.settingsComponent;
37
+ return (_jsx("div", { className: cn('flex flex-col gap-4 py-2', className), children: _jsx(ChartSettingsProvider, { config: config, columns: columns, onChange: handleChange, children: _jsx(SettingsComponent, {}) }) }));
24
38
  };
25
39
  //# sourceMappingURL=ChartBuilderFields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartBuilderFields.js","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderFields.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,cAAc,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AAM5D,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EACpE,SAAS,GACV,EAAE,EAAE;IACH,MAAM,EAAC,OAAO,EAAE,SAAS,EAAC,GAAG,sBAAsB,EAAE,CAAC;IACtD,MAAM,kBAAkB,GAAG,oBAAoB,CAC7C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACpC,CAAC;IACF,MAAM,WAAW,GAAG,oBAAoB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACvE,MAAM,aAAa,GAAG,oBAAoB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAE3E,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CACpC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,kBAAkB,CAAC,EACtE,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAChC,CAAC;IAEF,MAAM,EAAC,MAAM,EAAE,iBAAiB,EAAC,GAAG,iBAAiB,CAAC;QACpD,MAAM,EAAE,gBAAgB,EAAE,MAAM,IAAI,EAAE;QACtC,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,CAAC,GAAW,EAAE,KAAc,EAAE,EAAE,CACxC,aAAa,CAAC,GAAG,EAAE,KAAe,CAAC;KACtC,CAAC,CAAC;IAEH,IAAI,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAEnC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CACL,YAAG,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,uHAG7D,CACL,CAAC;IACJ,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,0BAA0B,EAAE,SAAS,CAAC,YACtD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,KAAC,kBAAkB,IAEjB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAJnD,KAAK,CAAC,GAAG,CAKd,CACH,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {cn} from '@sqlrooms/ui';\nimport React from 'react';\nimport {\n useChartBuilderContext,\n useChartBuilderStore,\n} from './ChartBuilderContext';\nimport {FieldSelectorInput} from './FieldSelectorInput';\nimport {useChartFieldForm} from './hooks/useChartFieldForm';\n\nexport interface ChartBuilderFieldsProps {\n className?: string;\n}\n\nexport const ChartBuilderFields: React.FC<ChartBuilderFieldsProps> = ({\n className,\n}) => {\n const {columns, templates} = useChartBuilderContext();\n const selectedTemplateId = useChartBuilderStore(\n (state) => state.selectedTemplateId,\n );\n const fieldValues = useChartBuilderStore((state) => state.fieldValues);\n const setFieldValue = useChartBuilderStore((state) => state.setFieldValue);\n\n const selectedTemplate = React.useMemo(\n () => templates.find((template) => template.id === selectedTemplateId),\n [templates, selectedTemplateId],\n );\n\n const {fields, handleFieldChange} = useChartFieldForm({\n fields: selectedTemplate?.fields || [],\n values: fieldValues,\n onChange: (key: string, value: unknown) =>\n setFieldValue(key, value as string),\n });\n\n if (!selectedTemplate) return null;\n\n if (fields.length === 0) {\n return (\n <p className={cn('text-muted-foreground py-2 text-sm', className)}>\n This chart type has no configurable fields. A starter spec will be\n created that you can edit manually.\n </p>\n );\n }\n\n return (\n <div className={cn('flex flex-col gap-4 py-2', className)}>\n {fields.map((field) => (\n <FieldSelectorInput\n key={field.key}\n field={field}\n columns={columns}\n value={fieldValues[field.key]}\n onChange={(value) => handleFieldChange(field.key, value)}\n />\n ))}\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"ChartBuilderFields.js","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderFields.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,EAAE,EAAC,MAAM,cAAc,CAAC;AAChC,OAAO,EAAK,WAAW,EAAE,OAAO,EAAC,MAAM,OAAO,CAAC;AAC/C,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,qBAAqB,EAAC,MAAM,8CAA8C,CAAC;AAOnF,MAAM,CAAC,MAAM,kBAAkB,GAAgC,CAAC,EAC9D,SAAS,GACV,EAAE,EAAE;IACH,MAAM,EAAC,OAAO,EAAE,SAAS,EAAC,GAAG,sBAAsB,EAAE,CAAC;IACtD,MAAM,qBAAqB,GAAG,oBAAoB,CAChD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACpC,CAAC;IACF,MAAM,WAAW,GAAG,oBAAoB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACvE,MAAM,aAAa,GAAG,oBAAoB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAE3E,MAAM,mBAAmB,GAAG,OAAO,CACjC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,qBAAqB,CAAC,EACzE,CAAC,SAAS,EAAE,qBAAqB,CAAC,CACnC,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,MAAmB,EAAE,EAAE;QACtB,0CAA0C;QAC1C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YACvD,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC/B,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,EACD,CAAC,WAAW,EAAE,aAAa,CAAC,CAC7B,CAAC;IAEF,yCAAyC;IACzC,MAAM,MAAM,GAAgB,OAAO,CAAC,GAAG,EAAE;QACvC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,OAAO;gBACL,SAAS,EAAE,WAAW;gBACtB,QAAQ,EAAE,EAAE;aACb,CAAC;QACJ,CAAC;QACD,OAAO;YACL,SAAS,EAAE,mBAAmB,CAAC,EAAE;YACjC,QAAQ,EAAE,WAAW;SACP,CAAC;IACnB,CAAC,EAAE,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC,CAAC;IAEvC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC;IAChE,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,0BAA0B,EAAE,SAAS,CAAC,YACvD,KAAC,qBAAqB,IACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,YAAY,YAEtB,KAAC,iBAAiB,KAAG,GACC,GACpB,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {cn} from '@sqlrooms/ui';\nimport {FC, useCallback, useMemo} from 'react';\nimport {\n useChartBuilderContext,\n useChartBuilderStore,\n} from './ChartBuilderContext';\nimport {ChartSettingsProvider} from '../chart/chart-settings/ChartSettingsContext';\nimport type {ChartConfig} from '../chart-types';\n\nexport interface ChartBuilderFieldsProps {\n className?: string;\n}\n\nexport const ChartBuilderFields: FC<ChartBuilderFieldsProps> = ({\n className,\n}) => {\n const {columns, templates} = useChartBuilderContext();\n const chartTypeDefinitionId = useChartBuilderStore(\n (state) => state.selectedTemplateId,\n );\n const fieldValues = useChartBuilderStore((state) => state.fieldValues);\n const setFieldValue = useChartBuilderStore((state) => state.setFieldValue);\n\n const chartTypeDefinition = useMemo(\n () => templates.find((template) => template.id === chartTypeDefinitionId),\n [templates, chartTypeDefinitionId],\n );\n\n const handleChange = useCallback(\n (config: ChartConfig) => {\n // Update all changed values from settings\n Object.entries(config.settings).forEach(([key, value]) => {\n if (fieldValues[key] !== value) {\n setFieldValue(key, value);\n }\n });\n },\n [fieldValues, setFieldValue],\n );\n\n // Create a config object for the context\n const config: ChartConfig = useMemo(() => {\n if (!chartTypeDefinition) {\n return {\n chartType: 'histogram',\n settings: {},\n };\n }\n return {\n chartType: chartTypeDefinition.id,\n settings: fieldValues,\n } as ChartConfig;\n }, [chartTypeDefinition, fieldValues]);\n\n if (!chartTypeDefinition) {\n return null;\n }\n\n const SettingsComponent = chartTypeDefinition.settingsComponent;\n return (\n <div className={cn('flex flex-col gap-4 py-2', className)}>\n <ChartSettingsProvider\n config={config}\n columns={columns}\n onChange={handleChange}\n >\n <SettingsComponent />\n </ChartSettingsProvider>\n </div>\n );\n};\n"]}
@@ -1,17 +1,15 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
- import type { VgPlotChartConfig } from '../chart-types';
3
- import type { ChartBuilderColumn, ChartBuilderTemplate, ChartTypeDefinition } from './types';
2
+ import type { ChartConfig } from '../chart-types';
3
+ import type { ChartBuilderColumn, ChartTypeDefinition } from '../chart-types/base-types';
4
4
  export type ChartBuilderRootProps = PropsWithChildren<{
5
5
  /** Table name to use in generated specs */
6
6
  tableName: string;
7
7
  /** Available columns for field selectors */
8
8
  columns: ChartBuilderColumn[];
9
9
  /** Callback when a chart spec is created */
10
- onCreateChart: (title: string, metadata: VgPlotChartConfig) => void;
11
- /** Preferred shared chart-type customization surface */
10
+ onCreateChart: (title: string, metadata: ChartConfig) => void;
11
+ /** Optional chart types to show (defaults to an empty array) */
12
12
  chartTypes?: ChartTypeDefinition[];
13
- /** Backward-compatible UI template customization surface */
14
- builders?: ChartBuilderTemplate[];
15
13
  /** Controlled open state */
16
14
  open?: boolean;
17
15
  /** Callback when open state changes */
@@ -1 +1 @@
1
- {"version":3,"file":"ChartBuilderRoot.d.ts","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderRoot.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EACZ,iBAAiB,EAKlB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAQtD,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;IACpD,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,4CAA4C;IAC5C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACpE,wDAAwD;IACxD,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACnC,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAClC,4BAA4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uCAAuC;IACvC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC,CAAC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAyF5D,CAAC"}
1
+ {"version":3,"file":"ChartBuilderRoot.d.ts","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderRoot.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EACZ,iBAAiB,EAKlB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAGhD,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;IACpD,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,4CAA4C;IAC5C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9D,gEAAgE;IAChE,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACnC,4BAA4B;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uCAAuC;IACvC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC,CAAC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA+D5D,CAAC"}
@@ -1,40 +1,30 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Dialog } from '@sqlrooms/ui';
3
3
  import { useCallback, useEffect, useMemo, useState, } from 'react';
4
- import { createChartBuilderTemplates, createDefaultChartBuilders, } from './builders';
5
4
  import { ChartBuilderContext } from './ChartBuilderContext';
6
5
  import { createChartBuilderStore } from './createChartBuilderStore';
7
- import { getAvailableChartTypes } from './chartTypeUtils';
8
6
  /**
9
7
  * Compound-component root that provides shared chart-builder state via context
10
8
  * and renders a Radix `Dialog`.
11
9
  *
12
10
  * Supports both controlled (`open`/`onOpenChange`) and uncontrolled usage.
13
11
  */
14
- export const ChartBuilderRoot = ({ tableName, columns, onCreateChart, chartTypes, builders, open, onOpenChange, children, }) => {
12
+ export const ChartBuilderRoot = ({ tableName, columns, onCreateChart, chartTypes, open, onOpenChange, children, }) => {
15
13
  const [uncontrolledOpen, setUncontrolledOpen] = useState(false);
16
14
  const [store] = useState(() => createChartBuilderStore());
17
15
  const isControlled = open !== undefined;
18
16
  const resolvedOpen = isControlled ? open : uncontrolledOpen;
19
17
  const resolvedOnOpenChange = useMemo(() => (isControlled ? (onOpenChange ?? (() => { })) : setUncontrolledOpen), [isControlled, onOpenChange]);
20
- const resolvedTemplates = useMemo(() => {
21
- if (chartTypes) {
22
- return createChartBuilderTemplates(chartTypes);
23
- }
24
- if (builders) {
25
- return builders;
26
- }
27
- return createDefaultChartBuilders();
28
- }, [builders, chartTypes]);
29
- const availableChartTypes = useMemo(() => getAvailableChartTypes(resolvedTemplates, columns), [columns, resolvedTemplates]);
30
- const availableTemplates = useMemo(() => resolvedTemplates.filter((template) => availableChartTypes.some((chartType) => chartType.id === template.id)), [availableChartTypes, resolvedTemplates]);
18
+ // All resolved chart types are available by default
19
+ // (Filtering by schema compatibility was removed in favour of runtime validation)
20
+ const availableChartTypes = useMemo(() => chartTypes ?? [], [chartTypes]);
31
21
  useEffect(() => {
32
22
  const { selectedTemplateId, reset } = store.getState();
33
23
  if (selectedTemplateId &&
34
- !availableTemplates.some((template) => template.id === selectedTemplateId)) {
24
+ !availableChartTypes.some((template) => template.id === selectedTemplateId)) {
35
25
  reset();
36
26
  }
37
- }, [availableTemplates, store]);
27
+ }, [availableChartTypes, store]);
38
28
  const handleCreateChart = useCallback((title, config) => {
39
29
  onCreateChart(title, config);
40
30
  resolvedOnOpenChange(false);
@@ -43,19 +33,10 @@ export const ChartBuilderRoot = ({ tableName, columns, onCreateChart, chartTypes
43
33
  tableName,
44
34
  columns,
45
35
  onCreateChart: handleCreateChart,
46
- templates: resolvedTemplates,
47
- availableChartTypes,
48
- availableTemplates,
36
+ templates: availableChartTypes,
37
+ availableTemplates: availableChartTypes, // TODO: why we need both templates and availableTemplates? can we remove one of them?
49
38
  store,
50
- }), [
51
- availableChartTypes,
52
- availableTemplates,
53
- columns,
54
- handleCreateChart,
55
- resolvedTemplates,
56
- store,
57
- tableName,
58
- ]);
39
+ }), [availableChartTypes, columns, handleCreateChart, store, tableName]);
59
40
  return (_jsx(ChartBuilderContext.Provider, { value: ctx, children: _jsx(Dialog, { open: resolvedOpen, onOpenChange: resolvedOnOpenChange, children: children }) }));
60
41
  };
61
42
  //# sourceMappingURL=ChartBuilderRoot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartBuilderRoot.js","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderRoot.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AAEpC,OAAc,EAEZ,WAAW,EACX,SAAS,EACT,OAAO,EACP,QAAQ,GACT,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AAwBxD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAoC,CAAC,EAChE,SAAS,EACT,OAAO,EACP,aAAa,EACb,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAI,KAAK,SAAS,CAAC;IACxC,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAE5D,MAAM,oBAAoB,GAAG,OAAO,CAClC,GAAG,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,EACzE,CAAC,YAAY,EAAE,YAAY,CAAC,CAC7B,CAAC;IAEF,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE;QACrC,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,2BAA2B,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,0BAA0B,EAAE,CAAC;IACtC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAE3B,MAAM,mBAAmB,GAAG,OAAO,CACjC,GAAG,EAAE,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,OAAO,CAAC,EACxD,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAC7B,CAAC;IACF,MAAM,kBAAkB,GAAG,OAAO,CAChC,GAAG,EAAE,CACH,iBAAiB,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CACpC,mBAAmB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CACtE,EACH,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CACzC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAC,kBAAkB,EAAE,KAAK,EAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrD,IACE,kBAAkB;YAClB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,kBAAkB,CAAC,EAC1E,CAAC;YACD,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC,CAAC;IAEhC,MAAM,iBAAiB,GACrB,WAAW,CACT,CAAC,KAAa,EAAE,MAAyB,EAAE,EAAE;QAC3C,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7B,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,EACD,CAAC,aAAa,EAAE,oBAAoB,CAAC,CACtC,CAAC;IAEJ,MAAM,GAAG,GAAG,OAAO,CACjB,GAAG,EAAE,CAAC,CAAC;QACL,SAAS;QACT,OAAO;QACP,aAAa,EAAE,iBAAiB;QAChC,SAAS,EAAE,iBAAiB;QAC5B,mBAAmB;QACnB,kBAAkB;QAClB,KAAK;KACN,CAAC,EACF;QACE,mBAAmB;QACnB,kBAAkB;QAClB,OAAO;QACP,iBAAiB;QACjB,iBAAiB;QACjB,KAAK;QACL,SAAS;KACV,CACF,CAAC;IAEF,OAAO,CACL,KAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,GAAG,YACtC,KAAC,MAAM,IAAC,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,YAC3D,QAAQ,GACF,GACoB,CAChC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {Dialog} from '@sqlrooms/ui';\nimport type {Spec} from '@uwdata/mosaic-spec';\nimport React, {\n PropsWithChildren,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport type {VgPlotChartConfig} from '../chart-types';\nimport {\n createChartBuilderTemplates,\n createDefaultChartBuilders,\n} from './builders';\nimport {ChartBuilderContext} from './ChartBuilderContext';\nimport {createChartBuilderStore} from './createChartBuilderStore';\nimport {getAvailableChartTypes} from './chartTypeUtils';\nimport type {\n ChartBuilderColumn,\n ChartBuilderTemplate,\n ChartTypeDefinition,\n} from './types';\n\nexport type ChartBuilderRootProps = PropsWithChildren<{\n /** Table name to use in generated specs */\n tableName: string;\n /** Available columns for field selectors */\n columns: ChartBuilderColumn[];\n /** Callback when a chart spec is created */\n onCreateChart: (title: string, metadata: VgPlotChartConfig) => void;\n /** Preferred shared chart-type customization surface */\n chartTypes?: ChartTypeDefinition[];\n /** Backward-compatible UI template customization surface */\n builders?: ChartBuilderTemplate[];\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n}>;\n\n/**\n * Compound-component root that provides shared chart-builder state via context\n * and renders a Radix `Dialog`.\n *\n * Supports both controlled (`open`/`onOpenChange`) and uncontrolled usage.\n */\nexport const ChartBuilderRoot: React.FC<ChartBuilderRootProps> = ({\n tableName,\n columns,\n onCreateChart,\n chartTypes,\n builders,\n open,\n onOpenChange,\n children,\n}) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const [store] = useState(() => createChartBuilderStore());\n const isControlled = open !== undefined;\n const resolvedOpen = isControlled ? open : uncontrolledOpen;\n\n const resolvedOnOpenChange = useMemo(\n () => (isControlled ? (onOpenChange ?? (() => {})) : setUncontrolledOpen),\n [isControlled, onOpenChange],\n );\n\n const resolvedTemplates = useMemo(() => {\n if (chartTypes) {\n return createChartBuilderTemplates(chartTypes);\n }\n if (builders) {\n return builders;\n }\n return createDefaultChartBuilders();\n }, [builders, chartTypes]);\n\n const availableChartTypes = useMemo(\n () => getAvailableChartTypes(resolvedTemplates, columns),\n [columns, resolvedTemplates],\n );\n const availableTemplates = useMemo(\n () =>\n resolvedTemplates.filter((template) =>\n availableChartTypes.some((chartType) => chartType.id === template.id),\n ),\n [availableChartTypes, resolvedTemplates],\n );\n\n useEffect(() => {\n const {selectedTemplateId, reset} = store.getState();\n if (\n selectedTemplateId &&\n !availableTemplates.some((template) => template.id === selectedTemplateId)\n ) {\n reset();\n }\n }, [availableTemplates, store]);\n\n const handleCreateChart: (title: string, config: VgPlotChartConfig) => void =\n useCallback(\n (title: string, config: VgPlotChartConfig) => {\n onCreateChart(title, config);\n resolvedOnOpenChange(false);\n },\n [onCreateChart, resolvedOnOpenChange],\n );\n\n const ctx = useMemo(\n () => ({\n tableName,\n columns,\n onCreateChart: handleCreateChart,\n templates: resolvedTemplates,\n availableChartTypes,\n availableTemplates,\n store,\n }),\n [\n availableChartTypes,\n availableTemplates,\n columns,\n handleCreateChart,\n resolvedTemplates,\n store,\n tableName,\n ],\n );\n\n return (\n <ChartBuilderContext.Provider value={ctx}>\n <Dialog open={resolvedOpen} onOpenChange={resolvedOnOpenChange}>\n {children}\n </Dialog>\n </ChartBuilderContext.Provider>\n );\n};\n"]}
1
+ {"version":3,"file":"ChartBuilderRoot.js","sourceRoot":"","sources":["../../src/chart-builders/ChartBuilderRoot.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AACpC,OAAc,EAEZ,WAAW,EACX,SAAS,EACT,OAAO,EACP,QAAQ,GACT,MAAM,OAAO,CAAC;AAEf,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAqBlE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAoC,CAAC,EAChE,SAAS,EACT,OAAO,EACP,aAAa,EACb,UAAU,EACV,IAAI,EACJ,YAAY,EACZ,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAI,KAAK,SAAS,CAAC;IACxC,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAE5D,MAAM,oBAAoB,GAAG,OAAO,CAClC,GAAG,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,EACzE,CAAC,YAAY,EAAE,YAAY,CAAC,CAC7B,CAAC;IAEF,oDAAoD;IACpD,kFAAkF;IAClF,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAE1E,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAC,kBAAkB,EAAE,KAAK,EAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrD,IACE,kBAAkB;YAClB,CAAC,mBAAmB,CAAC,IAAI,CACvB,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,kBAAkB,CACjD,EACD,CAAC;YACD,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC,EAAE,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC;IAEjC,MAAM,iBAAiB,GACrB,WAAW,CACT,CAAC,KAAa,EAAE,MAAmB,EAAE,EAAE;QACrC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7B,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,EACD,CAAC,aAAa,EAAE,oBAAoB,CAAC,CACtC,CAAC;IAEJ,MAAM,GAAG,GAAG,OAAO,CACjB,GAAG,EAAE,CAAC,CAAC;QACL,SAAS;QACT,OAAO;QACP,aAAa,EAAE,iBAAiB;QAChC,SAAS,EAAE,mBAAmB;QAC9B,kBAAkB,EAAE,mBAAmB,EAAE,sFAAsF;QAC/H,KAAK;KACN,CAAC,EACF,CAAC,mBAAmB,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,SAAS,CAAC,CACpE,CAAC;IAEF,OAAO,CACL,KAAC,mBAAmB,CAAC,QAAQ,IAAC,KAAK,EAAE,GAAG,YACtC,KAAC,MAAM,IAAC,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,oBAAoB,YAC3D,QAAQ,GACF,GACoB,CAChC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {Dialog} from '@sqlrooms/ui';\nimport React, {\n PropsWithChildren,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport type {ChartConfig} from '../chart-types';\nimport {ChartBuilderContext} from './ChartBuilderContext';\nimport {createChartBuilderStore} from './createChartBuilderStore';\nimport type {\n ChartBuilderColumn,\n ChartTypeDefinition,\n} from '../chart-types/base-types';\n\nexport type ChartBuilderRootProps = PropsWithChildren<{\n /** Table name to use in generated specs */\n tableName: string;\n /** Available columns for field selectors */\n columns: ChartBuilderColumn[];\n /** Callback when a chart spec is created */\n onCreateChart: (title: string, metadata: ChartConfig) => void;\n /** Optional chart types to show (defaults to an empty array) */\n chartTypes?: ChartTypeDefinition[];\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n}>;\n\n/**\n * Compound-component root that provides shared chart-builder state via context\n * and renders a Radix `Dialog`.\n *\n * Supports both controlled (`open`/`onOpenChange`) and uncontrolled usage.\n */\nexport const ChartBuilderRoot: React.FC<ChartBuilderRootProps> = ({\n tableName,\n columns,\n onCreateChart,\n chartTypes,\n open,\n onOpenChange,\n children,\n}) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const [store] = useState(() => createChartBuilderStore());\n const isControlled = open !== undefined;\n const resolvedOpen = isControlled ? open : uncontrolledOpen;\n\n const resolvedOnOpenChange = useMemo(\n () => (isControlled ? (onOpenChange ?? (() => {})) : setUncontrolledOpen),\n [isControlled, onOpenChange],\n );\n\n // All resolved chart types are available by default\n // (Filtering by schema compatibility was removed in favour of runtime validation)\n const availableChartTypes = useMemo(() => chartTypes ?? [], [chartTypes]);\n\n useEffect(() => {\n const {selectedTemplateId, reset} = store.getState();\n if (\n selectedTemplateId &&\n !availableChartTypes.some(\n (template) => template.id === selectedTemplateId,\n )\n ) {\n reset();\n }\n }, [availableChartTypes, store]);\n\n const handleCreateChart: (title: string, config: ChartConfig) => void =\n useCallback(\n (title: string, config: ChartConfig) => {\n onCreateChart(title, config);\n resolvedOnOpenChange(false);\n },\n [onCreateChart, resolvedOnOpenChange],\n );\n\n const ctx = useMemo(\n () => ({\n tableName,\n columns,\n onCreateChart: handleCreateChart,\n templates: availableChartTypes,\n availableTemplates: availableChartTypes, // TODO: why we need both templates and availableTemplates? can we remove one of them?\n store,\n }),\n [availableChartTypes, columns, handleCreateChart, store, tableName],\n );\n\n return (\n <ChartBuilderContext.Provider value={ctx}>\n <Dialog open={resolvedOpen} onOpenChange={resolvedOnOpenChange}>\n {children}\n </Dialog>\n </ChartBuilderContext.Provider>\n );\n};\n"]}
@@ -0,0 +1,15 @@
1
+ import { type FC } from 'react';
2
+ import { TableColumn } from '@sqlrooms/db';
3
+ export interface ColumnSelectorProps {
4
+ types?: string[];
5
+ columns?: TableColumn[];
6
+ value: string | undefined;
7
+ onChange: (value: string) => void;
8
+ placeholder?: string;
9
+ }
10
+ export declare const ColumnSelector: FC<ColumnSelectorProps> & {
11
+ Numeric: FC<Omit<ColumnSelectorProps, "types">>;
12
+ Quantitative: FC<Omit<ColumnSelectorProps, "types">>;
13
+ Categorical: FC<Omit<ColumnSelectorProps, "types">>;
14
+ };
15
+ //# sourceMappingURL=ColumnSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnSelector.d.ts","sourceRoot":"","sources":["../../src/chart-builders/ColumnSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,EAAC,MAAM,OAAO,CAAC;AAQ9B,OAAO,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAEzC,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAgDD,eAAO,MAAM,cAAc;;;;CAIzB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { FieldSelectorInput } from './FieldSelectorInput';
3
+ import { NUMERIC_COLUMN_TYPES, QUANTITATIVE_COLUMN_TYPES, CATEGORICAL_COLUMN_TYPES, } from './constants';
4
+ import { useChartSettingsContext } from '../chart/chart-settings/ChartSettingsContext';
5
+ /**
6
+ * Simplified wrapper around FieldSelectorInput for selecting a table column.
7
+ * Removes the field prop requirement for easier composition.
8
+ *
9
+ * Can be used as:
10
+ * - `<ColumnSelector types={...} />` - custom types
11
+ * - `<ColumnSelector.Numeric />` - numeric types only
12
+ * - `<ColumnSelector.Quantitative />` - numeric + temporal
13
+ * - `<ColumnSelector.Categorical />` - text/enum types
14
+ */
15
+ const ColumnSelectorRoot = ({ types, value, onChange, columns, placeholder, }) => {
16
+ const { columns: contextColumns } = useChartSettingsContext();
17
+ return (_jsx(FieldSelectorInput, { field: {
18
+ key: '',
19
+ label: '',
20
+ types,
21
+ }, columns: columns ?? contextColumns, value: value, onChange: onChange, placeholder: placeholder }));
22
+ };
23
+ const Numeric = (props) => (_jsx(ColumnSelectorRoot, { ...props, types: NUMERIC_COLUMN_TYPES }));
24
+ const Quantitative = (props) => (_jsx(ColumnSelectorRoot, { ...props, types: QUANTITATIVE_COLUMN_TYPES }));
25
+ const Categorical = (props) => (_jsx(ColumnSelectorRoot, { ...props, types: CATEGORICAL_COLUMN_TYPES }));
26
+ export const ColumnSelector = Object.assign(ColumnSelectorRoot, {
27
+ Numeric,
28
+ Quantitative,
29
+ Categorical,
30
+ });
31
+ //# sourceMappingURL=ColumnSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnSelector.js","sourceRoot":"","sources":["../../src/chart-builders/ColumnSelector.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAC,uBAAuB,EAAC,MAAM,8CAA8C,CAAC;AAWrF;;;;;;;;;GASG;AACH,MAAM,kBAAkB,GAA4B,CAAC,EACnD,KAAK,EACL,KAAK,EACL,QAAQ,EACR,OAAO,EACP,WAAW,GACZ,EAAE,EAAE;IACH,MAAM,EAAC,OAAO,EAAE,cAAc,EAAC,GAAG,uBAAuB,EAAE,CAAC;IAE5D,OAAO,CACL,KAAC,kBAAkB,IACjB,KAAK,EAAE;YACL,GAAG,EAAE,EAAE;YACP,KAAK,EAAE,EAAE;YACT,KAAK;SACN,EACD,OAAO,EAAE,OAAO,IAAI,cAAc,EAClC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,GACxB,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,OAAO,GAA2C,CAAC,KAAK,EAAE,EAAE,CAAC,CACjE,KAAC,kBAAkB,OAAK,KAAK,EAAE,KAAK,EAAE,oBAAoB,GAAI,CAC/D,CAAC;AAEF,MAAM,YAAY,GAA2C,CAAC,KAAK,EAAE,EAAE,CAAC,CACtE,KAAC,kBAAkB,OAAK,KAAK,EAAE,KAAK,EAAE,yBAAyB,GAAI,CACpE,CAAC;AAEF,MAAM,WAAW,GAA2C,CAAC,KAAK,EAAE,EAAE,CAAC,CACrE,KAAC,kBAAkB,OAAK,KAAK,EAAE,KAAK,EAAE,wBAAwB,GAAI,CACnE,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE;IAC9D,OAAO;IACP,YAAY;IACZ,WAAW;CACZ,CAAC,CAAC","sourcesContent":["import {type FC} from 'react';\nimport {FieldSelectorInput} from './FieldSelectorInput';\nimport {\n NUMERIC_COLUMN_TYPES,\n QUANTITATIVE_COLUMN_TYPES,\n CATEGORICAL_COLUMN_TYPES,\n} from './constants';\nimport {useChartSettingsContext} from '../chart/chart-settings/ChartSettingsContext';\nimport {TableColumn} from '@sqlrooms/db';\n\nexport interface ColumnSelectorProps {\n types?: string[];\n columns?: TableColumn[];\n value: string | undefined;\n onChange: (value: string) => void;\n placeholder?: string;\n}\n\n/**\n * Simplified wrapper around FieldSelectorInput for selecting a table column.\n * Removes the field prop requirement for easier composition.\n *\n * Can be used as:\n * - `<ColumnSelector types={...} />` - custom types\n * - `<ColumnSelector.Numeric />` - numeric types only\n * - `<ColumnSelector.Quantitative />` - numeric + temporal\n * - `<ColumnSelector.Categorical />` - text/enum types\n */\nconst ColumnSelectorRoot: FC<ColumnSelectorProps> = ({\n types,\n value,\n onChange,\n columns,\n placeholder,\n}) => {\n const {columns: contextColumns} = useChartSettingsContext();\n\n return (\n <FieldSelectorInput\n field={{\n key: '',\n label: '',\n types,\n }}\n columns={columns ?? contextColumns}\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n />\n );\n};\n\nconst Numeric: FC<Omit<ColumnSelectorProps, 'types'>> = (props) => (\n <ColumnSelectorRoot {...props} types={NUMERIC_COLUMN_TYPES} />\n);\n\nconst Quantitative: FC<Omit<ColumnSelectorProps, 'types'>> = (props) => (\n <ColumnSelectorRoot {...props} types={QUANTITATIVE_COLUMN_TYPES} />\n);\n\nconst Categorical: FC<Omit<ColumnSelectorProps, 'types'>> = (props) => (\n <ColumnSelectorRoot {...props} types={CATEGORICAL_COLUMN_TYPES} />\n);\n\nexport const ColumnSelector = Object.assign(ColumnSelectorRoot, {\n Numeric,\n Quantitative,\n Categorical,\n});\n"]}
@@ -0,0 +1,11 @@
1
+ import type { FC, PropsWithChildren } from 'react';
2
+ export type FieldProps = PropsWithChildren<{
3
+ label: string;
4
+ required?: boolean;
5
+ }>;
6
+ /**
7
+ * Layout wrapper that provides a label and grid container for horizontal
8
+ * arrangement of child selectors (e.g., ColumnSelector, TemporalGranularitySelector).
9
+ */
10
+ export declare const Field: FC<FieldProps>;
11
+ //# sourceMappingURL=Field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../src/chart-builders/Field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,EAAE,EAAE,iBAAiB,EAAC,MAAM,OAAO,CAAC;AAEjD,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,UAAU,CAehC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Layout wrapper that provides a label and grid container for horizontal
4
+ * arrangement of child selectors (e.g., ColumnSelector, TemporalGranularitySelector).
5
+ */
6
+ export const Field = ({ label, required, children }) => {
7
+ return (_jsxs("div", { className: "flex flex-col gap-1", children: [_jsxs("label", { className: "text-xs font-medium", children: [label, required && _jsx("span", { className: "text-destructive ml-1", children: "*" })] }), _jsx("div", { className: "grid items-end gap-2", style: { gridTemplateColumns: 'auto' }, children: children })] }));
8
+ };
9
+ //# sourceMappingURL=Field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Field.js","sourceRoot":"","sources":["../../src/chart-builders/Field.tsx"],"names":[],"mappings":";AAOA;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAmB,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAC,EAAE,EAAE;IACnE,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aAClC,iBAAO,SAAS,EAAC,qBAAqB,aACnC,KAAK,EACL,QAAQ,IAAI,eAAM,SAAS,EAAC,uBAAuB,kBAAS,IACvD,EACR,cACE,SAAS,EAAC,sBAAsB,EAChC,KAAK,EAAE,EAAC,mBAAmB,EAAE,MAAM,EAAC,YAEnC,QAAQ,GACL,IACF,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type {FC, PropsWithChildren} from 'react';\n\nexport type FieldProps = PropsWithChildren<{\n label: string;\n required?: boolean;\n}>;\n\n/**\n * Layout wrapper that provides a label and grid container for horizontal\n * arrangement of child selectors (e.g., ColumnSelector, TemporalGranularitySelector).\n */\nexport const Field: FC<FieldProps> = ({label, required, children}) => {\n return (\n <div className=\"flex flex-col gap-1\">\n <label className=\"text-xs font-medium\">\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </label>\n <div\n className=\"grid items-end gap-2\"\n style={{gridTemplateColumns: 'auto'}}\n >\n {children}\n </div>\n </div>\n );\n};\n"]}