@sqlrooms/mosaic 0.29.0-rc.7 → 0.29.0-rc.9

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 (572) hide show
  1. package/LICENSE.md +2 -1
  2. package/README.md +179 -35
  3. package/dist/MosaicSlice.d.ts +1 -0
  4. package/dist/MosaicSlice.d.ts.map +1 -1
  5. package/dist/MosaicSlice.js.map +1 -1
  6. package/dist/VgPlotChart.d.ts.map +1 -1
  7. package/dist/VgPlotChart.js +9 -3
  8. package/dist/VgPlotChart.js.map +1 -1
  9. package/dist/ai/agentIntent.d.ts +5 -0
  10. package/dist/ai/agentIntent.d.ts.map +1 -0
  11. package/dist/ai/agentIntent.js +8 -0
  12. package/dist/ai/agentIntent.js.map +1 -0
  13. package/dist/ai/block-document/constants.d.ts +9 -0
  14. package/dist/ai/block-document/constants.d.ts.map +1 -0
  15. package/dist/ai/block-document/constants.js +9 -0
  16. package/dist/ai/block-document/constants.js.map +1 -0
  17. package/dist/ai/block-document/createAddMosaicDashboardBlockTool.d.ts +48 -0
  18. package/dist/ai/block-document/createAddMosaicDashboardBlockTool.d.ts.map +1 -0
  19. package/dist/ai/block-document/createAddMosaicDashboardBlockTool.js +59 -0
  20. package/dist/ai/block-document/createAddMosaicDashboardBlockTool.js.map +1 -0
  21. package/dist/ai/block-document/createBlockDocumentChartTools.d.ts +19 -0
  22. package/dist/ai/block-document/createBlockDocumentChartTools.d.ts.map +1 -0
  23. package/dist/ai/block-document/createBlockDocumentChartTools.js +37 -0
  24. package/dist/ai/block-document/createBlockDocumentChartTools.js.map +1 -0
  25. package/dist/ai/block-document/createBlockDocumentDataTableExplorerTool.d.ts +32 -0
  26. package/dist/ai/block-document/createBlockDocumentDataTableExplorerTool.d.ts.map +1 -0
  27. package/dist/ai/block-document/createBlockDocumentDataTableExplorerTool.js +37 -0
  28. package/dist/ai/block-document/createBlockDocumentDataTableExplorerTool.js.map +1 -0
  29. package/dist/ai/constants.d.ts +3 -0
  30. package/dist/ai/constants.d.ts.map +1 -0
  31. package/dist/ai/constants.js +3 -0
  32. package/dist/ai/constants.js.map +1 -0
  33. package/dist/ai/createDataTableExplorerTool.d.ts +69 -0
  34. package/dist/ai/createDataTableExplorerTool.d.ts.map +1 -0
  35. package/dist/ai/createDataTableExplorerTool.js +68 -0
  36. package/dist/ai/createDataTableExplorerTool.js.map +1 -0
  37. package/dist/ai/dashboard/constants.d.ts +6 -0
  38. package/dist/ai/dashboard/constants.d.ts.map +1 -0
  39. package/dist/ai/dashboard/constants.js +6 -0
  40. package/dist/ai/dashboard/constants.js.map +1 -0
  41. package/dist/ai/dashboard/createDashboardAgentTool.d.ts +17 -0
  42. package/dist/ai/dashboard/createDashboardAgentTool.d.ts.map +1 -0
  43. package/dist/ai/dashboard/createDashboardAgentTool.js +205 -0
  44. package/dist/ai/dashboard/createDashboardAgentTool.js.map +1 -0
  45. package/dist/ai/dashboard/createDashboardAiAdapter.d.ts +14 -0
  46. package/dist/ai/dashboard/createDashboardAiAdapter.d.ts.map +1 -0
  47. package/dist/ai/dashboard/createDashboardAiAdapter.js +75 -0
  48. package/dist/ai/dashboard/createDashboardAiAdapter.js.map +1 -0
  49. package/dist/ai/dashboard/createDashboardAiTools.d.ts +26 -0
  50. package/dist/ai/dashboard/createDashboardAiTools.d.ts.map +1 -0
  51. package/dist/ai/dashboard/createDashboardAiTools.js +40 -0
  52. package/dist/ai/dashboard/createDashboardAiTools.js.map +1 -0
  53. package/dist/ai/dashboard/createDashboardChartTools.d.ts +27 -0
  54. package/dist/ai/dashboard/createDashboardChartTools.d.ts.map +1 -0
  55. package/dist/ai/dashboard/createDashboardChartTools.js +55 -0
  56. package/dist/ai/dashboard/createDashboardChartTools.js.map +1 -0
  57. package/dist/ai/dashboard/createDashboardDataTableExplorerTool.d.ts +23 -0
  58. package/dist/ai/dashboard/createDashboardDataTableExplorerTool.d.ts.map +1 -0
  59. package/dist/ai/dashboard/createDashboardDataTableExplorerTool.js +29 -0
  60. package/dist/ai/dashboard/createDashboardDataTableExplorerTool.js.map +1 -0
  61. package/dist/ai/dashboard/createListDashboardPanelsTool.d.ts +28 -0
  62. package/dist/ai/dashboard/createListDashboardPanelsTool.d.ts.map +1 -0
  63. package/dist/ai/dashboard/createListDashboardPanelsTool.js +54 -0
  64. package/dist/ai/dashboard/createListDashboardPanelsTool.js.map +1 -0
  65. package/dist/ai/dashboard/dashboard-types.d.ts +59 -0
  66. package/dist/ai/dashboard/dashboard-types.d.ts.map +1 -0
  67. package/dist/ai/dashboard/dashboard-types.js +2 -0
  68. package/dist/ai/dashboard/dashboard-types.js.map +1 -0
  69. package/dist/ai/database-types.d.ts +12 -0
  70. package/dist/ai/database-types.d.ts.map +1 -0
  71. package/dist/ai/database-types.js +2 -0
  72. package/dist/ai/database-types.js.map +1 -0
  73. package/dist/ai/errors.d.ts +8 -0
  74. package/dist/ai/errors.d.ts.map +1 -0
  75. package/dist/ai/errors.js +11 -0
  76. package/dist/ai/errors.js.map +1 -0
  77. package/dist/ai/tool-helpers.d.ts +28 -29
  78. package/dist/ai/tool-helpers.d.ts.map +1 -1
  79. package/dist/ai/tool-helpers.js +38 -76
  80. package/dist/ai/tool-helpers.js.map +1 -1
  81. package/dist/ai/tool-schemas.d.ts +9 -4
  82. package/dist/ai/tool-schemas.d.ts.map +1 -1
  83. package/dist/ai/tool-schemas.js +12 -12
  84. package/dist/ai/tool-schemas.js.map +1 -1
  85. package/dist/ai/tool-types.d.ts +19 -1
  86. package/dist/ai/tool-types.d.ts.map +1 -1
  87. package/dist/ai/tool-types.js.map +1 -1
  88. package/dist/ai/types.d.ts +64 -0
  89. package/dist/ai/types.d.ts.map +1 -0
  90. package/dist/ai/types.js +2 -0
  91. package/dist/ai/types.js.map +1 -0
  92. package/dist/ai.d.ts +16 -2
  93. package/dist/ai.d.ts.map +1 -1
  94. package/dist/ai.js +14 -5
  95. package/dist/ai.js.map +1 -1
  96. package/dist/charts/MosaicChart.d.ts +3 -1
  97. package/dist/charts/MosaicChart.d.ts.map +1 -1
  98. package/dist/charts/MosaicChart.js +2 -2
  99. package/dist/charts/MosaicChart.js.map +1 -1
  100. package/dist/charts/MosaicChartError.d.ts +8 -2
  101. package/dist/charts/MosaicChartError.d.ts.map +1 -1
  102. package/dist/charts/MosaicChartError.js +29 -3
  103. package/dist/charts/MosaicChartError.js.map +1 -1
  104. package/dist/charts/MosaicChartSettingsButton.d.ts +15 -0
  105. package/dist/charts/MosaicChartSettingsButton.d.ts.map +1 -0
  106. package/dist/charts/MosaicChartSettingsButton.js +7 -0
  107. package/dist/charts/MosaicChartSettingsButton.js.map +1 -0
  108. package/dist/charts/MosaicChartView.d.ts +2 -0
  109. package/dist/charts/MosaicChartView.d.ts.map +1 -1
  110. package/dist/charts/MosaicChartView.js +19 -7
  111. package/dist/charts/MosaicChartView.js.map +1 -1
  112. package/dist/charts/chart-settings/MosaicChartSettings.d.ts.map +1 -1
  113. package/dist/charts/chart-settings/MosaicChartSettings.js +3 -3
  114. package/dist/charts/chart-settings/MosaicChartSettings.js.map +1 -1
  115. package/dist/charts/chart-settings/MosaicChartSettingsPanel.js +1 -1
  116. package/dist/charts/chart-settings/MosaicChartSettingsPanel.js.map +1 -1
  117. package/dist/charts/chart-settings/MosaicChartSpecViewerPanel.d.ts.map +1 -1
  118. package/dist/charts/chart-settings/MosaicChartSpecViewerPanel.js +2 -1
  119. package/dist/charts/chart-settings/MosaicChartSpecViewerPanel.js.map +1 -1
  120. package/dist/charts/chart-settings/MosaicChartTypeSelector.d.ts.map +1 -1
  121. package/dist/charts/chart-settings/MosaicChartTypeSelector.js +3 -3
  122. package/dist/charts/chart-settings/MosaicChartTypeSelector.js.map +1 -1
  123. package/dist/charts/chart-types/base-types.d.ts +40 -25
  124. package/dist/charts/chart-types/base-types.d.ts.map +1 -1
  125. package/dist/charts/chart-types/base-types.js +5 -0
  126. package/dist/charts/chart-types/base-types.js.map +1 -1
  127. package/dist/charts/chart-types/box-plot/definition.d.ts.map +1 -1
  128. package/dist/charts/chart-types/box-plot/definition.js +1 -0
  129. package/dist/charts/chart-types/box-plot/definition.js.map +1 -1
  130. package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.d.ts +37 -3
  131. package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.d.ts.map +1 -1
  132. package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.js +28 -13
  133. package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.js.map +1 -1
  134. package/dist/charts/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js +2 -2
  135. package/dist/charts/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js.map +1 -1
  136. package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.d.ts +12 -1
  137. package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.d.ts.map +1 -1
  138. package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.js +13 -3
  139. package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.js.map +1 -1
  140. package/dist/charts/chart-types/box-plot/tool.d.ts +20 -24
  141. package/dist/charts/chart-types/box-plot/tool.d.ts.map +1 -1
  142. package/dist/charts/chart-types/box-plot/tool.js +25 -33
  143. package/dist/charts/chart-types/box-plot/tool.js.map +1 -1
  144. package/dist/charts/chart-types/box-plot/validation.d.ts +9 -0
  145. package/dist/charts/chart-types/box-plot/validation.d.ts.map +1 -0
  146. package/dist/charts/chart-types/box-plot/validation.js +32 -0
  147. package/dist/charts/chart-types/box-plot/validation.js.map +1 -0
  148. package/dist/charts/chart-types/chart-config.d.ts +3 -1
  149. package/dist/charts/chart-types/chart-config.d.ts.map +1 -1
  150. package/dist/charts/chart-types/chart-config.js +2 -2
  151. package/dist/charts/chart-types/chart-config.js.map +1 -1
  152. package/dist/charts/chart-types/column-types.d.ts +8 -0
  153. package/dist/charts/chart-types/column-types.d.ts.map +1 -0
  154. package/dist/charts/chart-types/column-types.js +2 -0
  155. package/dist/charts/chart-types/column-types.js.map +1 -0
  156. package/dist/charts/chart-types/count-plot/definition.d.ts.map +1 -1
  157. package/dist/charts/chart-types/count-plot/definition.js +1 -0
  158. package/dist/charts/chart-types/count-plot/definition.js.map +1 -1
  159. package/dist/charts/chart-types/count-plot/spec.d.ts +2 -1
  160. package/dist/charts/chart-types/count-plot/spec.d.ts.map +1 -1
  161. package/dist/charts/chart-types/count-plot/spec.js +47 -34
  162. package/dist/charts/chart-types/count-plot/spec.js.map +1 -1
  163. package/dist/charts/chart-types/count-plot/tool.d.ts +19 -24
  164. package/dist/charts/chart-types/count-plot/tool.d.ts.map +1 -1
  165. package/dist/charts/chart-types/count-plot/tool.js +26 -33
  166. package/dist/charts/chart-types/count-plot/tool.js.map +1 -1
  167. package/dist/charts/chart-types/count-plot/validation.d.ts +8 -0
  168. package/dist/charts/chart-types/count-plot/validation.d.ts.map +1 -0
  169. package/dist/charts/chart-types/count-plot/validation.js +20 -0
  170. package/dist/charts/chart-types/count-plot/validation.js.map +1 -0
  171. package/dist/charts/chart-types/createChartInstructions.d.ts +3 -0
  172. package/dist/charts/chart-types/createChartInstructions.d.ts.map +1 -0
  173. package/dist/charts/chart-types/createChartInstructions.js +12 -0
  174. package/dist/charts/chart-types/createChartInstructions.js.map +1 -0
  175. package/dist/charts/chart-types/createChartTools.d.ts +15 -9
  176. package/dist/charts/chart-types/createChartTools.d.ts.map +1 -1
  177. package/dist/charts/chart-types/createChartTools.js +16 -10
  178. package/dist/charts/chart-types/createChartTools.js.map +1 -1
  179. package/dist/charts/chart-types/createDefaultChartTypes.js +2 -2
  180. package/dist/charts/chart-types/createDefaultChartTypes.js.map +1 -1
  181. package/dist/charts/chart-types/custom-spec/definition.d.ts.map +1 -1
  182. package/dist/charts/chart-types/custom-spec/definition.js +1 -0
  183. package/dist/charts/chart-types/custom-spec/definition.js.map +1 -1
  184. package/dist/charts/chart-types/custom-spec/spec.d.ts +2 -1
  185. package/dist/charts/chart-types/custom-spec/spec.d.ts.map +1 -1
  186. package/dist/charts/chart-types/custom-spec/spec.js +16 -12
  187. package/dist/charts/chart-types/custom-spec/spec.js.map +1 -1
  188. package/dist/charts/chart-types/errors.d.ts +35 -0
  189. package/dist/charts/chart-types/errors.d.ts.map +1 -1
  190. package/dist/charts/chart-types/errors.js +56 -0
  191. package/dist/charts/chart-types/errors.js.map +1 -1
  192. package/dist/charts/chart-types/heatmap/definition.d.ts.map +1 -1
  193. package/dist/charts/chart-types/heatmap/definition.js +1 -0
  194. package/dist/charts/chart-types/heatmap/definition.js.map +1 -1
  195. package/dist/charts/chart-types/heatmap/spec.d.ts +2 -1
  196. package/dist/charts/chart-types/heatmap/spec.d.ts.map +1 -1
  197. package/dist/charts/chart-types/heatmap/spec.js +21 -21
  198. package/dist/charts/chart-types/heatmap/spec.js.map +1 -1
  199. package/dist/charts/chart-types/heatmap/tool.d.ts +20 -24
  200. package/dist/charts/chart-types/heatmap/tool.d.ts.map +1 -1
  201. package/dist/charts/chart-types/heatmap/tool.js +27 -37
  202. package/dist/charts/chart-types/heatmap/tool.js.map +1 -1
  203. package/dist/charts/chart-types/heatmap/validation.d.ts +9 -0
  204. package/dist/charts/chart-types/heatmap/validation.d.ts.map +1 -0
  205. package/dist/charts/chart-types/heatmap/validation.js +34 -0
  206. package/dist/charts/chart-types/heatmap/validation.js.map +1 -0
  207. package/dist/charts/chart-types/histogram/HistogramSettings.d.ts.map +1 -1
  208. package/dist/charts/chart-types/histogram/HistogramSettings.js +3 -1
  209. package/dist/charts/chart-types/histogram/HistogramSettings.js.map +1 -1
  210. package/dist/charts/chart-types/histogram/definition.d.ts.map +1 -1
  211. package/dist/charts/chart-types/histogram/definition.js +1 -0
  212. package/dist/charts/chart-types/histogram/definition.js.map +1 -1
  213. package/dist/charts/chart-types/histogram/schema.d.ts +2 -0
  214. package/dist/charts/chart-types/histogram/schema.d.ts.map +1 -1
  215. package/dist/charts/chart-types/histogram/schema.js +1 -0
  216. package/dist/charts/chart-types/histogram/schema.js.map +1 -1
  217. package/dist/charts/chart-types/histogram/spec.d.ts +2 -1
  218. package/dist/charts/chart-types/histogram/spec.d.ts.map +1 -1
  219. package/dist/charts/chart-types/histogram/spec.js +31 -28
  220. package/dist/charts/chart-types/histogram/spec.js.map +1 -1
  221. package/dist/charts/chart-types/histogram/tool.d.ts +39 -24
  222. package/dist/charts/chart-types/histogram/tool.d.ts.map +1 -1
  223. package/dist/charts/chart-types/histogram/tool.js +39 -33
  224. package/dist/charts/chart-types/histogram/tool.js.map +1 -1
  225. package/dist/charts/chart-types/histogram/validation.d.ts +9 -0
  226. package/dist/charts/chart-types/histogram/validation.d.ts.map +1 -0
  227. package/dist/charts/chart-types/histogram/validation.js +22 -0
  228. package/dist/charts/chart-types/histogram/validation.js.map +1 -0
  229. package/dist/charts/chart-types/index.d.ts +5 -11
  230. package/dist/charts/chart-types/index.d.ts.map +1 -1
  231. package/dist/charts/chart-types/index.js +6 -12
  232. package/dist/charts/chart-types/index.js.map +1 -1
  233. package/dist/charts/chart-types/line-chart/LineChartSettings.d.ts.map +1 -1
  234. package/dist/charts/chart-types/line-chart/LineChartSettings.js +4 -13
  235. package/dist/charts/chart-types/line-chart/LineChartSettings.js.map +1 -1
  236. package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.d.ts +7 -0
  237. package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.d.ts.map +1 -0
  238. package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.js +22 -0
  239. package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.js.map +1 -0
  240. package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.d.ts +7 -0
  241. package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.d.ts.map +1 -0
  242. package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.js +42 -0
  243. package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.js.map +1 -0
  244. package/dist/charts/chart-types/line-chart/definition.d.ts.map +1 -1
  245. package/dist/charts/chart-types/line-chart/definition.js +1 -0
  246. package/dist/charts/chart-types/line-chart/definition.js.map +1 -1
  247. package/dist/charts/chart-types/line-chart/schema.d.ts +2 -0
  248. package/dist/charts/chart-types/line-chart/schema.d.ts.map +1 -1
  249. package/dist/charts/chart-types/line-chart/schema.js +5 -0
  250. package/dist/charts/chart-types/line-chart/schema.js.map +1 -1
  251. package/dist/charts/chart-types/line-chart/spec.d.ts +2 -1
  252. package/dist/charts/chart-types/line-chart/spec.d.ts.map +1 -1
  253. package/dist/charts/chart-types/line-chart/spec.js +56 -65
  254. package/dist/charts/chart-types/line-chart/spec.js.map +1 -1
  255. package/dist/charts/chart-types/line-chart/tool.d.ts +28 -24
  256. package/dist/charts/chart-types/line-chart/tool.d.ts.map +1 -1
  257. package/dist/charts/chart-types/line-chart/tool.js +27 -39
  258. package/dist/charts/chart-types/line-chart/tool.js.map +1 -1
  259. package/dist/charts/chart-types/line-chart/utils.d.ts +7 -0
  260. package/dist/charts/chart-types/line-chart/utils.d.ts.map +1 -0
  261. package/dist/charts/chart-types/line-chart/utils.js +17 -0
  262. package/dist/charts/chart-types/line-chart/utils.js.map +1 -0
  263. package/dist/charts/chart-types/line-chart/validation.d.ts +16 -0
  264. package/dist/charts/chart-types/line-chart/validation.d.ts.map +1 -0
  265. package/dist/charts/chart-types/line-chart/validation.js +43 -0
  266. package/dist/charts/chart-types/line-chart/validation.js.map +1 -0
  267. package/dist/charts/chart-types/mosaicChartTypes.d.ts +4 -2
  268. package/dist/charts/chart-types/mosaicChartTypes.d.ts.map +1 -1
  269. package/dist/charts/chart-types/mosaicChartTypes.js +2 -2
  270. package/dist/charts/chart-types/mosaicChartTypes.js.map +1 -1
  271. package/dist/charts/chart-types/resolveChartTypes.d.ts +3 -0
  272. package/dist/charts/chart-types/resolveChartTypes.d.ts.map +1 -0
  273. package/dist/charts/chart-types/resolveChartTypes.js +8 -0
  274. package/dist/charts/chart-types/resolveChartTypes.js.map +1 -0
  275. package/dist/charts/chart-types/scatter-plot/ScatterPlotSettings.d.ts +3 -0
  276. package/dist/charts/chart-types/scatter-plot/ScatterPlotSettings.d.ts.map +1 -0
  277. package/dist/charts/chart-types/{bubble-chart/BubbleChartSettings.js → scatter-plot/ScatterPlotSettings.js} +4 -4
  278. package/dist/charts/chart-types/scatter-plot/ScatterPlotSettings.js.map +1 -0
  279. package/dist/charts/chart-types/scatter-plot/definition.d.ts +4 -0
  280. package/dist/charts/chart-types/scatter-plot/definition.d.ts.map +1 -0
  281. package/dist/charts/chart-types/scatter-plot/definition.js +25 -0
  282. package/dist/charts/chart-types/scatter-plot/definition.js.map +1 -0
  283. package/dist/charts/chart-types/{bubble-chart → scatter-plot}/schema.d.ts +5 -5
  284. package/dist/charts/chart-types/scatter-plot/schema.d.ts.map +1 -0
  285. package/dist/charts/chart-types/{bubble-chart → scatter-plot}/schema.js +5 -5
  286. package/dist/charts/chart-types/scatter-plot/schema.js.map +1 -0
  287. package/dist/charts/chart-types/scatter-plot/spec.d.ts +5 -0
  288. package/dist/charts/chart-types/scatter-plot/spec.d.ts.map +1 -0
  289. package/dist/charts/chart-types/scatter-plot/spec.js +37 -0
  290. package/dist/charts/chart-types/scatter-plot/spec.js.map +1 -0
  291. package/dist/charts/chart-types/scatter-plot/tool.d.ts +39 -0
  292. package/dist/charts/chart-types/scatter-plot/tool.d.ts.map +1 -0
  293. package/dist/charts/chart-types/scatter-plot/tool.js +57 -0
  294. package/dist/charts/chart-types/scatter-plot/tool.js.map +1 -0
  295. package/dist/charts/chart-types/scatter-plot/validation.d.ts +13 -0
  296. package/dist/charts/chart-types/scatter-plot/validation.d.ts.map +1 -0
  297. package/dist/charts/chart-types/scatter-plot/validation.js +52 -0
  298. package/dist/charts/chart-types/scatter-plot/validation.js.map +1 -0
  299. package/dist/charts/chart-types/tool-types.d.ts +43 -0
  300. package/dist/charts/chart-types/tool-types.d.ts.map +1 -0
  301. package/dist/charts/chart-types/tool-types.js +2 -0
  302. package/dist/charts/chart-types/tool-types.js.map +1 -0
  303. package/dist/charts/chart-types/utils.d.ts +3 -0
  304. package/dist/charts/chart-types/utils.d.ts.map +1 -0
  305. package/dist/charts/chart-types/utils.js +4 -0
  306. package/dist/charts/chart-types/utils.js.map +1 -0
  307. package/dist/charts/dashboard/MosaicDashboardChartHeaderActions.d.ts.map +1 -1
  308. package/dist/charts/dashboard/MosaicDashboardChartHeaderActions.js +12 -5
  309. package/dist/charts/dashboard/MosaicDashboardChartHeaderActions.js.map +1 -1
  310. package/dist/charts/dashboard/MosaicDashboardChartRenderer.d.ts.map +1 -1
  311. package/dist/charts/dashboard/MosaicDashboardChartRenderer.js +6 -4
  312. package/dist/charts/dashboard/MosaicDashboardChartRenderer.js.map +1 -1
  313. package/dist/charts/useChartDataPolicy.d.ts.map +1 -1
  314. package/dist/charts/useChartDataPolicy.js +2 -1
  315. package/dist/charts/useChartDataPolicy.js.map +1 -1
  316. package/dist/charts/useChartPanelClients.d.ts +8 -0
  317. package/dist/charts/useChartPanelClients.d.ts.map +1 -0
  318. package/dist/charts/useChartPanelClients.js +22 -0
  319. package/dist/charts/useChartPanelClients.js.map +1 -0
  320. package/dist/charts/useMosaicChartRenderContext.d.ts +2 -3
  321. package/dist/charts/useMosaicChartRenderContext.d.ts.map +1 -1
  322. package/dist/charts/useMosaicChartRenderContext.js +15 -15
  323. package/dist/charts/useMosaicChartRenderContext.js.map +1 -1
  324. package/dist/charts/worksheet/ChartBlockHeader.d.ts.map +1 -1
  325. package/dist/charts/worksheet/ChartBlockHeader.js +4 -3
  326. package/dist/charts/worksheet/ChartBlockHeader.js.map +1 -1
  327. package/dist/charts/worksheet/ChartBlockRenderer.d.ts.map +1 -1
  328. package/dist/charts/worksheet/ChartBlockRenderer.js +3 -13
  329. package/dist/charts/worksheet/ChartBlockRenderer.js.map +1 -1
  330. package/dist/column-types-utils.d.ts.map +1 -1
  331. package/dist/column-types-utils.js +12 -4
  332. package/dist/column-types-utils.js.map +1 -1
  333. package/dist/components/AggregationSelector.d.ts.map +1 -1
  334. package/dist/components/AggregationSelector.js +9 -2
  335. package/dist/components/AggregationSelector.js.map +1 -1
  336. package/dist/components/BlockCaptionEditor.d.ts +20 -0
  337. package/dist/components/BlockCaptionEditor.d.ts.map +1 -0
  338. package/dist/components/BlockCaptionEditor.js +15 -0
  339. package/dist/components/BlockCaptionEditor.js.map +1 -0
  340. package/dist/components/ColorSelector.d.ts +12 -0
  341. package/dist/components/ColorSelector.d.ts.map +1 -0
  342. package/dist/components/ColorSelector.js +13 -0
  343. package/dist/components/ColorSelector.js.map +1 -0
  344. package/dist/components/ColumnSelector.d.ts +1 -0
  345. package/dist/components/ColumnSelector.d.ts.map +1 -1
  346. package/dist/components/ColumnSelector.js +2 -2
  347. package/dist/components/ColumnSelector.js.map +1 -1
  348. package/dist/components/FieldSelectorInput.d.ts +1 -0
  349. package/dist/components/FieldSelectorInput.d.ts.map +1 -1
  350. package/dist/components/FieldSelectorInput.js +4 -9
  351. package/dist/components/FieldSelectorInput.js.map +1 -1
  352. package/dist/components/MultiFieldSelector.d.ts +4 -1
  353. package/dist/components/MultiFieldSelector.d.ts.map +1 -1
  354. package/dist/components/MultiFieldSelector.js +4 -13
  355. package/dist/components/MultiFieldSelector.js.map +1 -1
  356. package/dist/components/TemporalGranularitySelector.d.ts.map +1 -1
  357. package/dist/components/TemporalGranularitySelector.js +13 -9
  358. package/dist/components/TemporalGranularitySelector.js.map +1 -1
  359. package/dist/constants/chart-colors.d.ts +3 -0
  360. package/dist/constants/chart-colors.d.ts.map +1 -0
  361. package/dist/constants/chart-colors.js +5 -0
  362. package/dist/constants/chart-colors.js.map +1 -0
  363. package/dist/dashboard/DefaultMosaicDashboardBlock.d.ts +2 -1
  364. package/dist/dashboard/DefaultMosaicDashboardBlock.d.ts.map +1 -1
  365. package/dist/dashboard/DefaultMosaicDashboardBlock.js +1 -1
  366. package/dist/dashboard/DefaultMosaicDashboardBlock.js.map +1 -1
  367. package/dist/dashboard/MosaicDashboardCommands.d.ts +19 -0
  368. package/dist/dashboard/MosaicDashboardCommands.d.ts.map +1 -0
  369. package/dist/dashboard/MosaicDashboardCommands.js +226 -0
  370. package/dist/dashboard/MosaicDashboardCommands.js.map +1 -0
  371. package/dist/dashboard/MosaicDashboardSlice.d.ts +22 -4
  372. package/dist/dashboard/MosaicDashboardSlice.d.ts.map +1 -1
  373. package/dist/dashboard/MosaicDashboardSlice.js +55 -0
  374. package/dist/dashboard/MosaicDashboardSlice.js.map +1 -1
  375. package/dist/dashboard/components/ResetFiltersButton.d.ts +14 -0
  376. package/dist/dashboard/components/ResetFiltersButton.d.ts.map +1 -0
  377. package/dist/dashboard/components/ResetFiltersButton.js +15 -0
  378. package/dist/dashboard/components/ResetFiltersButton.js.map +1 -0
  379. package/dist/dashboard/dashboard-types.d.ts +9 -3
  380. package/dist/dashboard/dashboard-types.d.ts.map +1 -1
  381. package/dist/dashboard/dashboard-types.js.map +1 -1
  382. package/dist/dashboard/hooks/useDashboardResetFilters.d.ts +14 -0
  383. package/dist/dashboard/hooks/useDashboardResetFilters.d.ts.map +1 -0
  384. package/dist/dashboard/hooks/useDashboardResetFilters.js +39 -0
  385. package/dist/dashboard/hooks/useDashboardResetFilters.js.map +1 -0
  386. package/dist/dashboard/hooks/usePanelResetFilters.d.ts +16 -0
  387. package/dist/dashboard/hooks/usePanelResetFilters.d.ts.map +1 -0
  388. package/dist/dashboard/hooks/usePanelResetFilters.js +47 -0
  389. package/dist/dashboard/hooks/usePanelResetFilters.js.map +1 -0
  390. package/dist/dashboard/panel/MosaicDashboardPanel.d.ts.map +1 -1
  391. package/dist/dashboard/panel/MosaicDashboardPanel.js +1 -1
  392. package/dist/dashboard/panel/MosaicDashboardPanel.js.map +1 -1
  393. package/dist/dashboard/panel/MosaicDashboardPanelLayout.d.ts.map +1 -1
  394. package/dist/dashboard/panel/MosaicDashboardPanelLayout.js +3 -3
  395. package/dist/dashboard/panel/MosaicDashboardPanelLayout.js.map +1 -1
  396. package/dist/dashboard/panel/MosaicDashboardPanels.d.ts.map +1 -1
  397. package/dist/dashboard/panel/MosaicDashboardPanels.js +4 -2
  398. package/dist/dashboard/panel/MosaicDashboardPanels.js.map +1 -1
  399. package/dist/dashboard/toolbar/MosaicDashboardAddPanelDropdown.d.ts.map +1 -1
  400. package/dist/dashboard/toolbar/MosaicDashboardAddPanelDropdown.js +3 -3
  401. package/dist/dashboard/toolbar/MosaicDashboardAddPanelDropdown.js.map +1 -1
  402. package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.d.ts +7 -0
  403. package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.d.ts.map +1 -0
  404. package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.js +18 -0
  405. package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.js.map +1 -0
  406. package/dist/dashboard/toolbar/MosaicDashboardResetFiltersButton.d.ts.map +1 -1
  407. package/dist/dashboard/toolbar/MosaicDashboardResetFiltersButton.js +4 -32
  408. package/dist/dashboard/toolbar/MosaicDashboardResetFiltersButton.js.map +1 -1
  409. package/dist/dashboard/toolbar/MosaicDashboardToolbar.d.ts +2 -2
  410. package/dist/dashboard/toolbar/MosaicDashboardToolbar.d.ts.map +1 -1
  411. package/dist/dashboard/toolbar/MosaicDashboardToolbar.js +14 -10
  412. package/dist/dashboard/toolbar/MosaicDashboardToolbar.js.map +1 -1
  413. package/dist/dashboard/usePanelClientRegistration.d.ts +7 -0
  414. package/dist/dashboard/usePanelClientRegistration.d.ts.map +1 -0
  415. package/dist/dashboard/usePanelClientRegistration.js +30 -0
  416. package/dist/dashboard/usePanelClientRegistration.js.map +1 -0
  417. package/dist/dashboard/usePanelClients.d.ts +7 -0
  418. package/dist/dashboard/usePanelClients.d.ts.map +1 -0
  419. package/dist/dashboard/usePanelClients.js +13 -0
  420. package/dist/dashboard/usePanelClients.js.map +1 -0
  421. package/dist/dashboard/useSelectedOrFirstTable.d.ts +1 -1
  422. package/dist/dashboard/useSelectedOrFirstTable.d.ts.map +1 -1
  423. package/dist/dashboard/useSelectedOrFirstTable.js +10 -8
  424. package/dist/dashboard/useSelectedOrFirstTable.js.map +1 -1
  425. package/dist/data-table-explorer/DataTableExplorer.d.ts +4 -2
  426. package/dist/data-table-explorer/DataTableExplorer.d.ts.map +1 -1
  427. package/dist/data-table-explorer/DataTableExplorer.js +4 -4
  428. package/dist/data-table-explorer/DataTableExplorer.js.map +1 -1
  429. package/dist/data-table-explorer/DataTableExplorerCategoryClient.d.ts +3 -2
  430. package/dist/data-table-explorer/DataTableExplorerCategoryClient.d.ts.map +1 -1
  431. package/dist/data-table-explorer/DataTableExplorerCategoryClient.js +4 -3
  432. package/dist/data-table-explorer/DataTableExplorerCategoryClient.js.map +1 -1
  433. package/dist/data-table-explorer/DataTableExplorerCountClient.d.ts +3 -1
  434. package/dist/data-table-explorer/DataTableExplorerCountClient.d.ts.map +1 -1
  435. package/dist/data-table-explorer/DataTableExplorerCountClient.js +3 -3
  436. package/dist/data-table-explorer/DataTableExplorerCountClient.js.map +1 -1
  437. package/dist/data-table-explorer/DataTableExplorerHistogramClient.d.ts +3 -2
  438. package/dist/data-table-explorer/DataTableExplorerHistogramClient.d.ts.map +1 -1
  439. package/dist/data-table-explorer/DataTableExplorerHistogramClient.js +4 -4
  440. package/dist/data-table-explorer/DataTableExplorerHistogramClient.js.map +1 -1
  441. package/dist/data-table-explorer/DataTableExplorerPageClient.d.ts +3 -1
  442. package/dist/data-table-explorer/DataTableExplorerPageClient.d.ts.map +1 -1
  443. package/dist/data-table-explorer/DataTableExplorerPageClient.js +3 -1
  444. package/dist/data-table-explorer/DataTableExplorerPageClient.js.map +1 -1
  445. package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.d.ts +3 -2
  446. package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.d.ts.map +1 -1
  447. package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.js +3 -3
  448. package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.js.map +1 -1
  449. package/dist/data-table-explorer/createDataTableExplorerStore.d.ts +3 -0
  450. package/dist/data-table-explorer/createDataTableExplorerStore.d.ts.map +1 -1
  451. package/dist/data-table-explorer/createDataTableExplorerStore.js +6 -0
  452. package/dist/data-table-explorer/createDataTableExplorerStore.js.map +1 -1
  453. package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.d.ts +4 -0
  454. package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.d.ts.map +1 -0
  455. package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.js +13 -0
  456. package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.js.map +1 -0
  457. package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.d.ts.map +1 -1
  458. package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.js +26 -8
  459. package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.js.map +1 -1
  460. package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.d.ts +13 -0
  461. package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.d.ts.map +1 -0
  462. package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.js +32 -0
  463. package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.js.map +1 -0
  464. package/dist/data-table-explorer/dataTableExplorerController.d.ts +63 -3
  465. package/dist/data-table-explorer/dataTableExplorerController.d.ts.map +1 -1
  466. package/dist/data-table-explorer/dataTableExplorerController.js +73 -10
  467. package/dist/data-table-explorer/dataTableExplorerController.js.map +1 -1
  468. package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.d.ts +12 -0
  469. package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.d.ts.map +1 -0
  470. package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.js +19 -0
  471. package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.js.map +1 -0
  472. package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.d.ts +52 -0
  473. package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.d.ts.map +1 -0
  474. package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.js +153 -0
  475. package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.js.map +1 -0
  476. package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.d.ts +42 -0
  477. package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.d.ts.map +1 -0
  478. package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.js +43 -0
  479. package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.js.map +1 -0
  480. package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.d.ts +13 -0
  481. package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.d.ts.map +1 -0
  482. package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.js +40 -0
  483. package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.js.map +1 -0
  484. package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.d.ts +18 -0
  485. package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.d.ts.map +1 -0
  486. package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.js +23 -0
  487. package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.js.map +1 -0
  488. package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.d.ts +27 -0
  489. package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.d.ts.map +1 -0
  490. package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.js +28 -0
  491. package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.js.map +1 -0
  492. package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.d.ts +15 -0
  493. package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.d.ts.map +1 -0
  494. package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.js +21 -0
  495. package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.js.map +1 -0
  496. package/dist/data-table-explorer/types.d.ts +16 -3
  497. package/dist/data-table-explorer/types.d.ts.map +1 -1
  498. package/dist/data-table-explorer/types.js.map +1 -1
  499. package/dist/data-table-explorer/useDataTableExplorer.d.ts.map +1 -1
  500. package/dist/data-table-explorer/useDataTableExplorer.js +20 -279
  501. package/dist/data-table-explorer/useDataTableExplorer.js.map +1 -1
  502. package/dist/data-table-explorer/utils.d.ts +64 -6
  503. package/dist/data-table-explorer/utils.d.ts.map +1 -1
  504. package/dist/data-table-explorer/utils.js +58 -0
  505. package/dist/data-table-explorer/utils.js.map +1 -1
  506. package/dist/data-table-explorer/worksheet/DataTableBlockHeader.d.ts +1 -0
  507. package/dist/data-table-explorer/worksheet/DataTableBlockHeader.d.ts.map +1 -1
  508. package/dist/data-table-explorer/worksheet/DataTableBlockHeader.js +4 -2
  509. package/dist/data-table-explorer/worksheet/DataTableBlockHeader.js.map +1 -1
  510. package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.d.ts.map +1 -1
  511. package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.js +4 -4
  512. package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.js.map +1 -1
  513. package/dist/index.d.ts +55 -31
  514. package/dist/index.d.ts.map +1 -1
  515. package/dist/index.js +86 -26
  516. package/dist/index.js.map +1 -1
  517. package/dist/mosaicTableReference.d.ts +59 -0
  518. package/dist/mosaicTableReference.d.ts.map +1 -0
  519. package/dist/mosaicTableReference.js +68 -0
  520. package/dist/mosaicTableReference.js.map +1 -0
  521. package/dist/useVgPlotChartRender.d.ts.map +1 -1
  522. package/dist/useVgPlotChartRender.js +151 -25
  523. package/dist/useVgPlotChartRender.js.map +1 -1
  524. package/dist/useVgPlotChartRetention.d.ts +11 -0
  525. package/dist/useVgPlotChartRetention.d.ts.map +1 -1
  526. package/dist/useVgPlotChartRetention.js.map +1 -1
  527. package/dist/utils/table-lookup.d.ts +7 -0
  528. package/dist/utils/table-lookup.d.ts.map +1 -0
  529. package/dist/utils/table-lookup.js +10 -0
  530. package/dist/utils/table-lookup.js.map +1 -0
  531. package/package.json +14 -14
  532. package/dist/ai/ai.d.ts +0 -103
  533. package/dist/ai/ai.d.ts.map +0 -1
  534. package/dist/ai/ai.js +0 -419
  535. package/dist/ai/ai.js.map +0 -1
  536. package/dist/ai/data-table-explorer-tool.d.ts +0 -40
  537. package/dist/ai/data-table-explorer-tool.d.ts.map +0 -1
  538. package/dist/ai/data-table-explorer-tool.js +0 -75
  539. package/dist/ai/data-table-explorer-tool.js.map +0 -1
  540. package/dist/ai/list-panels-tool.d.ts +0 -35
  541. package/dist/ai/list-panels-tool.d.ts.map +0 -1
  542. package/dist/ai/list-panels-tool.js +0 -66
  543. package/dist/ai/list-panels-tool.js.map +0 -1
  544. package/dist/ai/remove-panel-tool.d.ts +0 -31
  545. package/dist/ai/remove-panel-tool.d.ts.map +0 -1
  546. package/dist/ai/remove-panel-tool.js +0 -55
  547. package/dist/ai/remove-panel-tool.js.map +0 -1
  548. package/dist/ai/tool-validation.d.ts +0 -3
  549. package/dist/ai/tool-validation.d.ts.map +0 -1
  550. package/dist/ai/tool-validation.js +0 -11
  551. package/dist/ai/tool-validation.js.map +0 -1
  552. package/dist/charts/chart-types/bubble-chart/BubbleChartSettings.d.ts +0 -3
  553. package/dist/charts/chart-types/bubble-chart/BubbleChartSettings.d.ts.map +0 -1
  554. package/dist/charts/chart-types/bubble-chart/BubbleChartSettings.js.map +0 -1
  555. package/dist/charts/chart-types/bubble-chart/definition.d.ts +0 -4
  556. package/dist/charts/chart-types/bubble-chart/definition.d.ts.map +0 -1
  557. package/dist/charts/chart-types/bubble-chart/definition.js +0 -24
  558. package/dist/charts/chart-types/bubble-chart/definition.js.map +0 -1
  559. package/dist/charts/chart-types/bubble-chart/schema.d.ts.map +0 -1
  560. package/dist/charts/chart-types/bubble-chart/schema.js.map +0 -1
  561. package/dist/charts/chart-types/bubble-chart/spec.d.ts +0 -4
  562. package/dist/charts/chart-types/bubble-chart/spec.d.ts.map +0 -1
  563. package/dist/charts/chart-types/bubble-chart/spec.js +0 -31
  564. package/dist/charts/chart-types/bubble-chart/spec.js.map +0 -1
  565. package/dist/charts/chart-types/bubble-chart/tool.d.ts +0 -42
  566. package/dist/charts/chart-types/bubble-chart/tool.d.ts.map +0 -1
  567. package/dist/charts/chart-types/bubble-chart/tool.js +0 -66
  568. package/dist/charts/chart-types/bubble-chart/tool.js.map +0 -1
  569. package/dist/hooks/useDataTable.d.ts +0 -3
  570. package/dist/hooks/useDataTable.d.ts.map +0 -1
  571. package/dist/hooks/useDataTable.js +0 -28
  572. package/dist/hooks/useDataTable.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import type { FieldInfo } from '@uwdata/mosaic-core';
2
2
  import { Query } from '@uwdata/mosaic-sql';
3
3
  import * as arrow from 'apache-arrow';
4
- import type { DataTableExplorerBin, DataTableExplorerCategoryBucket, DataTableExplorerPaginationState, DataTableExplorerSorting, DataTableExplorerSummaryState } from './types';
4
+ import type { DataTableExplorerBin, DataTableExplorerCategoryBucket, DataTableExplorerPaginationState, DataTableExplorerSqlTableReference, DataTableExplorerSorting, DataTableExplorerSummaryState } from './types';
5
5
  export type CategoryCountRow = {
6
6
  bucketKind: 'null' | 'unique' | 'value';
7
7
  total: number;
@@ -11,28 +11,86 @@ type QueryWhereInput = Parameters<ReturnType<typeof Query.from>['where']>[0];
11
11
  export declare function isDataTableExplorerHistogramType(type: arrow.DataType): boolean;
12
12
  export declare function isDataTableExplorerUnsupportedSummaryType(type: arrow.DataType): boolean;
13
13
  export declare function getDataTableExplorerValueType(type: arrow.DataType): 'date' | 'number' | 'string';
14
- export declare function buildSchemaQuery(tableName: string, columns?: string[]): ReturnType<typeof Query.from>;
14
+ /**
15
+ * Builds a one-row schema probe query for a dataTableExplorer table.
16
+ *
17
+ * @param tableName Table reference to query. Pass a TableRefNode when the table
18
+ * reference is qualified or contains dotted identifier parts.
19
+ * @param columns Optional list of columns to include; when omitted, the query
20
+ * selects all columns.
21
+ * @returns Mosaic query used to infer Arrow field metadata from the table.
22
+ */
23
+ export declare function buildSchemaQuery(tableName: DataTableExplorerSqlTableReference, columns?: string[]): ReturnType<typeof Query.from>;
15
24
  export declare function fieldInfoToDataTableExplorerField(info: FieldInfo): arrow.Field;
25
+ /**
26
+ * Builds the base dataTableExplorer query before pagination is applied.
27
+ *
28
+ * @param args.columns Optional selected column names; when omitted, all columns
29
+ * are selected.
30
+ * @param args.filter Optional Mosaic where clause or clause array.
31
+ * @param args.sorting Optional sort descriptors applied in order.
32
+ * @param args.tableName Table reference to query. This accepts
33
+ * DataTableExplorerSqlTableReference so callers can pass TableRefNode values
34
+ * that preserve qualified identifier boundaries.
35
+ * @returns Mosaic query with projection, filtering, and sorting applied.
36
+ */
16
37
  export declare function buildDataTableExplorerBaseQuery(args: {
17
38
  columns?: string[];
18
39
  filter?: QueryWhereInput;
19
40
  sorting?: DataTableExplorerSorting;
20
- tableName: string;
41
+ tableName: DataTableExplorerSqlTableReference;
21
42
  }): import("@uwdata/mosaic-sql").SelectQuery;
43
+ /**
44
+ * Applies normalized dataTableExplorer pagination to a base query.
45
+ *
46
+ * @param baseQuery Query returned by buildDataTableExplorerBaseQuery.
47
+ * @param pagination Requested page index and page size.
48
+ * @returns A cloned Mosaic query with limit and offset applied.
49
+ */
22
50
  export declare function buildDataTableExplorerPageQuery(baseQuery: ReturnType<typeof buildDataTableExplorerBaseQuery>, pagination: DataTableExplorerPaginationState): import("@uwdata/mosaic-sql").SelectQuery;
23
51
  export declare function normalizeDataTableExplorerPagination(pagination: Partial<DataTableExplorerPaginationState> | undefined): DataTableExplorerPaginationState;
52
+ /**
53
+ * Builds a row-count query for a dataTableExplorer table.
54
+ *
55
+ * @param args.filter Optional Mosaic where clause or clause array.
56
+ * @param args.tableName Table reference to query. Pass a TableRefNode for
57
+ * qualified references that should not be reparsed from a string.
58
+ * @returns Mosaic query that returns a single count column.
59
+ */
24
60
  export declare function buildCountQuery(args: {
25
61
  filter?: QueryWhereInput;
26
- tableName: string;
62
+ tableName: DataTableExplorerSqlTableReference;
27
63
  }): import("@uwdata/mosaic-sql").SelectQuery;
64
+ /**
65
+ * Builds a distinct-value count query for one dataTableExplorer field.
66
+ *
67
+ * @param args.filter Optional Mosaic where clause or clause array.
68
+ * @param args.fieldName Field whose distinct non-null values should be counted.
69
+ * @param args.tableName Table reference to query. Pass a TableRefNode for
70
+ * qualified references that should not be reparsed from a string.
71
+ * @returns Mosaic query that returns a single distinct count column.
72
+ */
28
73
  export declare function buildDistinctCountQuery(args: {
29
74
  filter?: QueryWhereInput;
30
75
  fieldName: string;
31
- tableName: string;
76
+ tableName: DataTableExplorerSqlTableReference;
32
77
  }): import("@uwdata/mosaic-sql").SelectQuery;
33
78
  export declare function readCountData(data: unknown): number | undefined;
34
79
  export declare function rowsFromQueryResult<T>(data: unknown): T[];
35
- export declare function buildCategorySummaryQuery(tableName: string, fieldName: string, filter?: QueryWhereInput): import("@uwdata/mosaic-sql").SelectQuery;
80
+ /**
81
+ * Builds the category summary query used by dataTableExplorer categorical
82
+ * columns.
83
+ *
84
+ * @param tableName Table reference to query. This accepts
85
+ * DataTableExplorerSqlTableReference so callers can use TableRefNode when
86
+ * identifier boundaries must be preserved.
87
+ * @param fieldName Field to summarize into value, null, unique, and overflow
88
+ * buckets.
89
+ * @param filter Optional Mosaic where clause or clause array.
90
+ * @returns Mosaic query that produces bucket kind, typed value, and total count
91
+ * rows for category summaries.
92
+ */
93
+ export declare function buildCategorySummaryQuery(tableName: DataTableExplorerSqlTableReference, fieldName: string, filter?: QueryWhereInput): import("@uwdata/mosaic-sql").SelectQuery;
36
94
  export declare function splitHistogramBins(rows: Array<{
37
95
  x1: DataTableExplorerBin['x0'] | null;
38
96
  x2: DataTableExplorerBin['x1'] | null;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/data-table-explorer/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/data-table-explorer/utils.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,15 @@ export function getDataTableExplorerValueType(type) {
22
22
  }
23
23
  return 'string';
24
24
  }
25
+ /**
26
+ * Builds a one-row schema probe query for a dataTableExplorer table.
27
+ *
28
+ * @param tableName Table reference to query. Pass a TableRefNode when the table
29
+ * reference is qualified or contains dotted identifier parts.
30
+ * @param columns Optional list of columns to include; when omitted, the query
31
+ * selects all columns.
32
+ * @returns Mosaic query used to infer Arrow field metadata from the table.
33
+ */
25
34
  export function buildSchemaQuery(tableName, columns) {
26
35
  return Query.from(tableName)
27
36
  .select(columns?.length ? columns.map((name) => column(name)) : ['*'])
@@ -62,6 +71,18 @@ function createDataTableExplorerArrowType(sqlType) {
62
71
  export function fieldInfoToDataTableExplorerField(info) {
63
72
  return new arrow.Field(info.column, createDataTableExplorerArrowType(info.sqlType), info.nullable);
64
73
  }
74
+ /**
75
+ * Builds the base dataTableExplorer query before pagination is applied.
76
+ *
77
+ * @param args.columns Optional selected column names; when omitted, all columns
78
+ * are selected.
79
+ * @param args.filter Optional Mosaic where clause or clause array.
80
+ * @param args.sorting Optional sort descriptors applied in order.
81
+ * @param args.tableName Table reference to query. This accepts
82
+ * DataTableExplorerSqlTableReference so callers can pass TableRefNode values
83
+ * that preserve qualified identifier boundaries.
84
+ * @returns Mosaic query with projection, filtering, and sorting applied.
85
+ */
65
86
  export function buildDataTableExplorerBaseQuery(args) {
66
87
  const { columns, filter, sorting, tableName } = args;
67
88
  const query = Query.from(tableName)
@@ -72,6 +93,13 @@ export function buildDataTableExplorerBaseQuery(args) {
72
93
  }
73
94
  return query;
74
95
  }
96
+ /**
97
+ * Applies normalized dataTableExplorer pagination to a base query.
98
+ *
99
+ * @param baseQuery Query returned by buildDataTableExplorerBaseQuery.
100
+ * @param pagination Requested page index and page size.
101
+ * @returns A cloned Mosaic query with limit and offset applied.
102
+ */
75
103
  export function buildDataTableExplorerPageQuery(baseQuery, pagination) {
76
104
  const { pageIndex, pageSize } = normalizeDataTableExplorerPagination(pagination);
77
105
  return baseQuery
@@ -84,11 +112,28 @@ export function normalizeDataTableExplorerPagination(pagination) {
84
112
  const pageIndex = Math.max(0, Math.trunc(Number(pagination?.pageIndex) || 0));
85
113
  return { pageIndex, pageSize };
86
114
  }
115
+ /**
116
+ * Builds a row-count query for a dataTableExplorer table.
117
+ *
118
+ * @param args.filter Optional Mosaic where clause or clause array.
119
+ * @param args.tableName Table reference to query. Pass a TableRefNode for
120
+ * qualified references that should not be reparsed from a string.
121
+ * @returns Mosaic query that returns a single count column.
122
+ */
87
123
  export function buildCountQuery(args) {
88
124
  return Query.from(args.tableName)
89
125
  .select({ count: count() })
90
126
  .where(args.filter ?? []);
91
127
  }
128
+ /**
129
+ * Builds a distinct-value count query for one dataTableExplorer field.
130
+ *
131
+ * @param args.filter Optional Mosaic where clause or clause array.
132
+ * @param args.fieldName Field whose distinct non-null values should be counted.
133
+ * @param args.tableName Table reference to query. Pass a TableRefNode for
134
+ * qualified references that should not be reparsed from a string.
135
+ * @returns Mosaic query that returns a single distinct count column.
136
+ */
92
137
  export function buildDistinctCountQuery(args) {
93
138
  return Query.from(args.tableName)
94
139
  .select({
@@ -117,6 +162,19 @@ export function rowsFromQueryResult(data) {
117
162
  }
118
163
  return Array.from(data.toArray());
119
164
  }
165
+ /**
166
+ * Builds the category summary query used by dataTableExplorer categorical
167
+ * columns.
168
+ *
169
+ * @param tableName Table reference to query. This accepts
170
+ * DataTableExplorerSqlTableReference so callers can use TableRefNode when
171
+ * identifier boundaries must be preserved.
172
+ * @param fieldName Field to summarize into value, null, unique, and overflow
173
+ * buckets.
174
+ * @param filter Optional Mosaic where clause or clause array.
175
+ * @returns Mosaic query that produces bucket kind, typed value, and total count
176
+ * rows for category summaries.
177
+ */
120
178
  export function buildCategorySummaryQuery(tableName, fieldName, filter) {
121
179
  const col = column(fieldName);
122
180
  const counts = Query.from({ source: tableName })
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/data-table-explorer/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type {FieldInfo} from '@uwdata/mosaic-core';\nimport {asc, column, count, desc, Query, sql, sum} from '@uwdata/mosaic-sql';\nimport * as arrow from 'apache-arrow';\nimport type {\n DataTableExplorerBin,\n DataTableExplorerCategoryBucket,\n DataTableExplorerPaginationState,\n DataTableExplorerSorting,\n DataTableExplorerSummaryState,\n} from './types';\n\nexport type CategoryCountRow = {\n bucketKind: 'null' | 'unique' | 'value';\n total: number;\n typedValue: unknown;\n};\n\ntype QueryWhereInput = Parameters<ReturnType<typeof Query.from>['where']>[0];\n\nexport function isDataTableExplorerHistogramType(\n type: arrow.DataType,\n): boolean {\n return (\n arrow.DataType.isDate(type) ||\n arrow.DataType.isTimestamp(type) ||\n arrow.DataType.isDecimal(type) ||\n arrow.DataType.isFloat(type) ||\n arrow.DataType.isInt(type)\n );\n}\n\nexport function isDataTableExplorerUnsupportedSummaryType(\n type: arrow.DataType,\n): boolean {\n return (\n arrow.DataType.isBinary(type) ||\n type.toString().toLowerCase().includes('geometry')\n );\n}\n\nexport function getDataTableExplorerValueType(\n type: arrow.DataType,\n): 'date' | 'number' | 'string' {\n if (arrow.DataType.isDate(type) || arrow.DataType.isTimestamp(type)) {\n return 'date';\n }\n if (\n arrow.DataType.isDecimal(type) ||\n arrow.DataType.isFloat(type) ||\n arrow.DataType.isInt(type)\n ) {\n return 'number';\n }\n return 'string';\n}\n\nexport function buildSchemaQuery(\n tableName: string,\n columns?: string[],\n): ReturnType<typeof Query.from> {\n return Query.from(tableName)\n .select(columns?.length ? columns.map((name) => column(name)) : ['*'])\n .limit(1);\n}\n\nfunction createDataTableExplorerArrowType(sqlType: string): arrow.DataType {\n const type = sqlType.toLowerCase();\n\n if (/^bool(ean)?/.test(type)) {\n return new arrow.Bool();\n }\n\n if (/^date$/.test(type)) {\n return new arrow.DateDay();\n }\n\n if (/^time$|^timestamp|^timestamptz/.test(type)) {\n return new arrow.TimestampMillisecond();\n }\n\n if (\n /^(tinyint|smallint|integer|bigint|hugeint|utinyint|usmallint|uinteger|ubigint|uhugeint)/.test(\n type,\n )\n ) {\n return new arrow.Int64();\n }\n\n if (/^(decimal|numeric)/.test(type)) {\n return new arrow.Decimal(38, 9);\n }\n\n if (/^(double|float|real)/.test(type)) {\n return new arrow.Float64();\n }\n\n if (/^(blob|bytea|binary|varbinary)/.test(type)) {\n return new arrow.Binary();\n }\n\n if (/^geometry/.test(type)) {\n return {\n toString() {\n return sqlType;\n },\n } as arrow.DataType;\n }\n\n return new arrow.Utf8();\n}\n\nexport function fieldInfoToDataTableExplorerField(\n info: FieldInfo,\n): arrow.Field {\n return new arrow.Field(\n info.column,\n createDataTableExplorerArrowType(info.sqlType),\n info.nullable,\n );\n}\n\nexport function buildDataTableExplorerBaseQuery(args: {\n columns?: string[];\n filter?: QueryWhereInput;\n sorting?: DataTableExplorerSorting;\n tableName: string;\n}) {\n const {columns, filter, sorting, tableName} = args;\n const query = Query.from(tableName)\n .select(columns?.length ? columns.map((name) => column(name)) : ['*'])\n .where(filter ?? []);\n\n if (sorting?.length) {\n query.orderby(\n sorting.map((entry) => (entry.desc ? desc(entry.id) : asc(entry.id))),\n );\n }\n\n return query;\n}\n\nexport function buildDataTableExplorerPageQuery(\n baseQuery: ReturnType<typeof buildDataTableExplorerBaseQuery>,\n pagination: DataTableExplorerPaginationState,\n) {\n const {pageIndex, pageSize} =\n normalizeDataTableExplorerPagination(pagination);\n\n return baseQuery\n .clone()\n .limit(pageSize)\n .offset(pageIndex * pageSize);\n}\n\nexport function normalizeDataTableExplorerPagination(\n pagination: Partial<DataTableExplorerPaginationState> | undefined,\n): DataTableExplorerPaginationState {\n const pageSize = Math.min(\n 1000,\n Math.max(1, Math.trunc(Number(pagination?.pageSize) || 0) || 100),\n );\n const pageIndex = Math.max(0, Math.trunc(Number(pagination?.pageIndex) || 0));\n\n return {pageIndex, pageSize};\n}\n\nexport function buildCountQuery(args: {\n filter?: QueryWhereInput;\n tableName: string;\n}) {\n return Query.from(args.tableName)\n .select({count: count()})\n .where(args.filter ?? []);\n}\n\nexport function buildDistinctCountQuery(args: {\n filter?: QueryWhereInput;\n fieldName: string;\n tableName: string;\n}) {\n return Query.from(args.tableName)\n .select({\n count: count(column(args.fieldName)).distinct(),\n })\n .where(args.filter ?? []);\n}\n\nexport function readCountData(data: unknown): number | undefined {\n if (!data || typeof data !== 'object') {\n return undefined;\n }\n\n if ('toArray' in data && typeof data.toArray === 'function') {\n return (data.toArray() as Array<{count?: number}>)[0]?.count;\n }\n\n if ('get' in data && typeof data.get === 'function') {\n return (data.get(0) as {count?: number} | undefined)?.count;\n }\n\n return undefined;\n}\n\nexport function rowsFromQueryResult<T>(data: unknown): T[] {\n if (\n !data ||\n typeof data !== 'object' ||\n !('toArray' in data) ||\n typeof (data as {toArray?: unknown}).toArray !== 'function'\n ) {\n return [];\n }\n\n return Array.from((data as {toArray(): T[]}).toArray());\n}\n\nexport function buildCategorySummaryQuery(\n tableName: string,\n fieldName: string,\n filter?: QueryWhereInput,\n) {\n const col = column(fieldName);\n const counts = Query.from({source: tableName})\n .select({\n bucket_kind: sql`CASE\n WHEN ${col} IS NULL THEN 'null'\n ELSE 'value'\n END`,\n typed_value: col,\n count: count(),\n })\n .groupby([\n sql`CASE\n WHEN ${col} IS NULL THEN 'null'\n ELSE 'value'\n END`,\n col,\n ])\n .where(filter ?? []);\n\n return Query.with({counts})\n .select({\n bucketKind: sql`CASE\n WHEN \"count\" = 1 AND \"bucket_kind\" = 'value' THEN 'unique'\n ELSE \"bucket_kind\"\n END`,\n typedValue: sql`CASE\n WHEN \"count\" = 1 AND \"bucket_kind\" = 'value' THEN NULL\n ELSE \"typed_value\"\n END`,\n total: sum('count'),\n })\n .from('counts')\n .groupby([\n sql`CASE\n WHEN \"count\" = 1 AND \"bucket_kind\" = 'value' THEN 'unique'\n ELSE \"bucket_kind\"\n END`,\n sql`CASE\n WHEN \"count\" = 1 AND \"bucket_kind\" = 'value' THEN NULL\n ELSE \"typed_value\"\n END`,\n ]);\n}\n\nexport function splitHistogramBins(\n rows: Array<{\n x1: DataTableExplorerBin['x0'] | null;\n x2: DataTableExplorerBin['x1'] | null;\n y: number;\n }>,\n) {\n let nullCount = 0;\n const bins: DataTableExplorerBin[] = [];\n\n for (const row of rows) {\n if (row.x1 == null || row.x2 == null) {\n nullCount += row.y;\n continue;\n }\n\n bins.push({\n x0: row.x1,\n x1: row.x2,\n length: row.y,\n });\n }\n\n bins.sort((left, right) => {\n const leftValue = left.x0 instanceof Date ? left.x0.getTime() : left.x0;\n const rightValue = right.x0 instanceof Date ? right.x0.getTime() : right.x0;\n return leftValue - rightValue;\n });\n\n return {bins, nullCount};\n}\n\nexport function buildCategoryBuckets(\n filteredRows: CategoryCountRow[],\n totalRows: CategoryCountRow[],\n categoryLimit: number,\n selectedKey?: string,\n) {\n const totalByKey = new Map(\n totalRows.map((row) => [serializeCategoryBucketKey(row), row.total]),\n );\n const filteredByKey = new Map(\n filteredRows.map((row) => [serializeCategoryBucketKey(row), row.total]),\n );\n\n const baseRows = totalRows\n .filter((row) => row.bucketKind === 'value')\n .slice()\n .sort(\n (left: CategoryCountRow, right: CategoryCountRow) =>\n right.total - left.total,\n );\n\n const visibleRows = baseRows.slice(0, categoryLimit);\n const overflowRows = baseRows.slice(categoryLimit);\n const buckets: DataTableExplorerCategoryBucket[] = visibleRows.map((row) => ({\n filteredCount: filteredByKey.get(serializeCategoryBucketKey(row)) ?? 0,\n key: serializeCategoryBucketKey(row),\n kind: 'value',\n label: String(row.typedValue),\n selectable: true,\n totalCount: row.total,\n }));\n\n const overflowTotalCount = overflowRows.reduce(\n (acc: number, row: CategoryCountRow) => acc + row.total,\n 0,\n );\n const overflowFilteredCount = overflowRows.reduce(\n (acc: number, row: CategoryCountRow) =>\n acc + (filteredByKey.get(serializeCategoryBucketKey(row)) ?? 0),\n 0,\n );\n if (overflowTotalCount > 0) {\n buckets.push({\n filteredCount: overflowFilteredCount,\n key: serializeCategoryBucketKey({\n bucketKind: 'unique',\n typedValue: '__sqlrooms_overflow__',\n }),\n kind: 'overflow',\n label: `${overflowRows.length} more`,\n selectable: false,\n totalCount: overflowTotalCount,\n });\n }\n\n const uniqueKey = serializeCategoryBucketKey({\n bucketKind: 'unique',\n typedValue: null,\n });\n const uniqueTotalCount = totalByKey.get(uniqueKey) ?? 0;\n if (uniqueTotalCount > 0) {\n buckets.push({\n filteredCount: filteredByKey.get(uniqueKey) ?? 0,\n key: uniqueKey,\n kind: 'unique',\n label: 'unique',\n selectable: false,\n totalCount: uniqueTotalCount,\n });\n }\n\n const nullKey = serializeCategoryBucketKey({\n bucketKind: 'null',\n typedValue: null,\n });\n const nullTotalCount = totalByKey.get(nullKey) ?? 0;\n if (nullTotalCount > 0) {\n buckets.push({\n filteredCount: filteredByKey.get(nullKey) ?? 0,\n key: nullKey,\n kind: 'null',\n label: 'null',\n selectable: true,\n totalCount: nullTotalCount,\n });\n }\n\n return {\n bucketCount: filteredRows.length,\n buckets,\n selectedKey,\n };\n}\n\nexport function isSelectableCategoryKey(key: string) {\n const parsedKey = parseCategoryBucketKey(key);\n return (\n parsedKey?.bucketKind !== 'unique' &&\n parsedKey?.typedValue !== '__sqlrooms_overflow__'\n );\n}\n\nexport function categoryKeyToSelectionValue(key?: string) {\n if (key === undefined) return undefined;\n const parsedKey = parseCategoryBucketKey(key);\n if (!parsedKey || parsedKey.bucketKind === 'unique') {\n return undefined;\n }\n return parsedKey.bucketKind === 'null' ? null : parsedKey.typedValue;\n}\n\nfunction normalizeCategoryBucketValue(value: unknown): unknown {\n if (value instanceof Date) {\n return {\n type: 'date',\n value: value.toISOString(),\n };\n }\n if (typeof value === 'bigint') {\n return {\n type: 'bigint',\n value: value.toString(),\n };\n }\n return value;\n}\n\nfunction denormalizeCategoryBucketValue(value: unknown): unknown {\n if (!value || typeof value !== 'object') {\n return value;\n }\n\n if (\n 'type' in value &&\n 'value' in value &&\n value.type === 'date' &&\n typeof value.value === 'string'\n ) {\n return new Date(value.value);\n }\n\n if (\n 'type' in value &&\n 'value' in value &&\n value.type === 'bigint' &&\n typeof value.value === 'string'\n ) {\n return BigInt(value.value);\n }\n\n return value;\n}\n\nexport function serializeCategoryBucketKey(row: {\n bucketKind: CategoryCountRow['bucketKind'];\n typedValue: unknown;\n}) {\n return JSON.stringify([\n row.bucketKind,\n normalizeCategoryBucketValue(row.typedValue),\n ]);\n}\n\nexport function parseCategoryBucketKey(key: string):\n | {\n bucketKind: CategoryCountRow['bucketKind'];\n typedValue: unknown;\n }\n | undefined {\n try {\n const parsed = JSON.parse(key) as [CategoryCountRow['bucketKind'], unknown];\n if (!Array.isArray(parsed) || parsed.length !== 2) {\n return undefined;\n }\n\n return {\n bucketKind: parsed[0],\n typedValue: denormalizeCategoryBucketValue(parsed[1]),\n };\n } catch {\n return undefined;\n }\n}\n\nexport function createEmptySummaryState(\n field: arrow.Field,\n): DataTableExplorerSummaryState {\n if (isDataTableExplorerUnsupportedSummaryType(field.type)) {\n return {\n isLoading: false,\n kind: 'unsupported',\n label: 'No summary',\n };\n }\n\n return isDataTableExplorerHistogramType(field.type)\n ? {\n filteredBins: [],\n filteredNullCount: 0,\n interactor: null,\n isLoading: true,\n kind: 'histogram',\n totalBins: [],\n totalNullCount: 0,\n valueType:\n getDataTableExplorerValueType(field.type) === 'date'\n ? 'date'\n : 'number',\n }\n : {\n bucketCount: 0,\n buckets: [],\n isLoading: true,\n kind: 'category',\n toggleValue: () => {},\n };\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/data-table-explorer/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type {FieldInfo} from '@uwdata/mosaic-core';\nimport {asc, column, count, desc, Query, sql, sum} from '@uwdata/mosaic-sql';\nimport * as arrow from 'apache-arrow';\nimport type {\n DataTableExplorerBin,\n DataTableExplorerCategoryBucket,\n DataTableExplorerPaginationState,\n DataTableExplorerSqlTableReference,\n DataTableExplorerSorting,\n DataTableExplorerSummaryState,\n} from './types';\n\nexport type CategoryCountRow = {\n bucketKind: 'null' | 'unique' | 'value';\n total: number;\n typedValue: unknown;\n};\n\ntype QueryWhereInput = Parameters<ReturnType<typeof Query.from>['where']>[0];\n\nexport function isDataTableExplorerHistogramType(\n type: arrow.DataType,\n): boolean {\n return (\n arrow.DataType.isDate(type) ||\n arrow.DataType.isTimestamp(type) ||\n arrow.DataType.isDecimal(type) ||\n arrow.DataType.isFloat(type) ||\n arrow.DataType.isInt(type)\n );\n}\n\nexport function isDataTableExplorerUnsupportedSummaryType(\n type: arrow.DataType,\n): boolean {\n return (\n arrow.DataType.isBinary(type) ||\n type.toString().toLowerCase().includes('geometry')\n );\n}\n\nexport function getDataTableExplorerValueType(\n type: arrow.DataType,\n): 'date' | 'number' | 'string' {\n if (arrow.DataType.isDate(type) || arrow.DataType.isTimestamp(type)) {\n return 'date';\n }\n if (\n arrow.DataType.isDecimal(type) ||\n arrow.DataType.isFloat(type) ||\n arrow.DataType.isInt(type)\n ) {\n return 'number';\n }\n return 'string';\n}\n\n/**\n * Builds a one-row schema probe query for a dataTableExplorer table.\n *\n * @param tableName Table reference to query. Pass a TableRefNode when the table\n * reference is qualified or contains dotted identifier parts.\n * @param columns Optional list of columns to include; when omitted, the query\n * selects all columns.\n * @returns Mosaic query used to infer Arrow field metadata from the table.\n */\nexport function buildSchemaQuery(\n tableName: DataTableExplorerSqlTableReference,\n columns?: string[],\n): ReturnType<typeof Query.from> {\n return Query.from(tableName)\n .select(columns?.length ? columns.map((name) => column(name)) : ['*'])\n .limit(1);\n}\n\nfunction createDataTableExplorerArrowType(sqlType: string): arrow.DataType {\n const type = sqlType.toLowerCase();\n\n if (/^bool(ean)?/.test(type)) {\n return new arrow.Bool();\n }\n\n if (/^date$/.test(type)) {\n return new arrow.DateDay();\n }\n\n if (/^time$|^timestamp|^timestamptz/.test(type)) {\n return new arrow.TimestampMillisecond();\n }\n\n if (\n /^(tinyint|smallint|integer|bigint|hugeint|utinyint|usmallint|uinteger|ubigint|uhugeint)/.test(\n type,\n )\n ) {\n return new arrow.Int64();\n }\n\n if (/^(decimal|numeric)/.test(type)) {\n return new arrow.Decimal(38, 9);\n }\n\n if (/^(double|float|real)/.test(type)) {\n return new arrow.Float64();\n }\n\n if (/^(blob|bytea|binary|varbinary)/.test(type)) {\n return new arrow.Binary();\n }\n\n if (/^geometry/.test(type)) {\n return {\n toString() {\n return sqlType;\n },\n } as arrow.DataType;\n }\n\n return new arrow.Utf8();\n}\n\nexport function fieldInfoToDataTableExplorerField(\n info: FieldInfo,\n): arrow.Field {\n return new arrow.Field(\n info.column,\n createDataTableExplorerArrowType(info.sqlType),\n info.nullable,\n );\n}\n\n/**\n * Builds the base dataTableExplorer query before pagination is applied.\n *\n * @param args.columns Optional selected column names; when omitted, all columns\n * are selected.\n * @param args.filter Optional Mosaic where clause or clause array.\n * @param args.sorting Optional sort descriptors applied in order.\n * @param args.tableName Table reference to query. This accepts\n * DataTableExplorerSqlTableReference so callers can pass TableRefNode values\n * that preserve qualified identifier boundaries.\n * @returns Mosaic query with projection, filtering, and sorting applied.\n */\nexport function buildDataTableExplorerBaseQuery(args: {\n columns?: string[];\n filter?: QueryWhereInput;\n sorting?: DataTableExplorerSorting;\n tableName: DataTableExplorerSqlTableReference;\n}) {\n const {columns, filter, sorting, tableName} = args;\n const query = Query.from(tableName)\n .select(columns?.length ? columns.map((name) => column(name)) : ['*'])\n .where(filter ?? []);\n\n if (sorting?.length) {\n query.orderby(\n sorting.map((entry) => (entry.desc ? desc(entry.id) : asc(entry.id))),\n );\n }\n\n return query;\n}\n\n/**\n * Applies normalized dataTableExplorer pagination to a base query.\n *\n * @param baseQuery Query returned by buildDataTableExplorerBaseQuery.\n * @param pagination Requested page index and page size.\n * @returns A cloned Mosaic query with limit and offset applied.\n */\nexport function buildDataTableExplorerPageQuery(\n baseQuery: ReturnType<typeof buildDataTableExplorerBaseQuery>,\n pagination: DataTableExplorerPaginationState,\n) {\n const {pageIndex, pageSize} =\n normalizeDataTableExplorerPagination(pagination);\n\n return baseQuery\n .clone()\n .limit(pageSize)\n .offset(pageIndex * pageSize);\n}\n\nexport function normalizeDataTableExplorerPagination(\n pagination: Partial<DataTableExplorerPaginationState> | undefined,\n): DataTableExplorerPaginationState {\n const pageSize = Math.min(\n 1000,\n Math.max(1, Math.trunc(Number(pagination?.pageSize) || 0) || 100),\n );\n const pageIndex = Math.max(0, Math.trunc(Number(pagination?.pageIndex) || 0));\n\n return {pageIndex, pageSize};\n}\n\n/**\n * Builds a row-count query for a dataTableExplorer table.\n *\n * @param args.filter Optional Mosaic where clause or clause array.\n * @param args.tableName Table reference to query. Pass a TableRefNode for\n * qualified references that should not be reparsed from a string.\n * @returns Mosaic query that returns a single count column.\n */\nexport function buildCountQuery(args: {\n filter?: QueryWhereInput;\n tableName: DataTableExplorerSqlTableReference;\n}) {\n return Query.from(args.tableName)\n .select({count: count()})\n .where(args.filter ?? []);\n}\n\n/**\n * Builds a distinct-value count query for one dataTableExplorer field.\n *\n * @param args.filter Optional Mosaic where clause or clause array.\n * @param args.fieldName Field whose distinct non-null values should be counted.\n * @param args.tableName Table reference to query. Pass a TableRefNode for\n * qualified references that should not be reparsed from a string.\n * @returns Mosaic query that returns a single distinct count column.\n */\nexport function buildDistinctCountQuery(args: {\n filter?: QueryWhereInput;\n fieldName: string;\n tableName: DataTableExplorerSqlTableReference;\n}) {\n return Query.from(args.tableName)\n .select({\n count: count(column(args.fieldName)).distinct(),\n })\n .where(args.filter ?? []);\n}\n\nexport function readCountData(data: unknown): number | undefined {\n if (!data || typeof data !== 'object') {\n return undefined;\n }\n\n if ('toArray' in data && typeof data.toArray === 'function') {\n return (data.toArray() as Array<{count?: number}>)[0]?.count;\n }\n\n if ('get' in data && typeof data.get === 'function') {\n return (data.get(0) as {count?: number} | undefined)?.count;\n }\n\n return undefined;\n}\n\nexport function rowsFromQueryResult<T>(data: unknown): T[] {\n if (\n !data ||\n typeof data !== 'object' ||\n !('toArray' in data) ||\n typeof (data as {toArray?: unknown}).toArray !== 'function'\n ) {\n return [];\n }\n\n return Array.from((data as {toArray(): T[]}).toArray());\n}\n\n/**\n * Builds the category summary query used by dataTableExplorer categorical\n * columns.\n *\n * @param tableName Table reference to query. This accepts\n * DataTableExplorerSqlTableReference so callers can use TableRefNode when\n * identifier boundaries must be preserved.\n * @param fieldName Field to summarize into value, null, unique, and overflow\n * buckets.\n * @param filter Optional Mosaic where clause or clause array.\n * @returns Mosaic query that produces bucket kind, typed value, and total count\n * rows for category summaries.\n */\nexport function buildCategorySummaryQuery(\n tableName: DataTableExplorerSqlTableReference,\n fieldName: string,\n filter?: QueryWhereInput,\n) {\n const col = column(fieldName);\n const counts = Query.from({source: tableName})\n .select({\n bucket_kind: sql`CASE\n WHEN ${col} IS NULL THEN 'null'\n ELSE 'value'\n END`,\n typed_value: col,\n count: count(),\n })\n .groupby([\n sql`CASE\n WHEN ${col} IS NULL THEN 'null'\n ELSE 'value'\n END`,\n col,\n ])\n .where(filter ?? []);\n\n return Query.with({counts})\n .select({\n bucketKind: sql`CASE\n WHEN \"count\" = 1 AND \"bucket_kind\" = 'value' THEN 'unique'\n ELSE \"bucket_kind\"\n END`,\n typedValue: sql`CASE\n WHEN \"count\" = 1 AND \"bucket_kind\" = 'value' THEN NULL\n ELSE \"typed_value\"\n END`,\n total: sum('count'),\n })\n .from('counts')\n .groupby([\n sql`CASE\n WHEN \"count\" = 1 AND \"bucket_kind\" = 'value' THEN 'unique'\n ELSE \"bucket_kind\"\n END`,\n sql`CASE\n WHEN \"count\" = 1 AND \"bucket_kind\" = 'value' THEN NULL\n ELSE \"typed_value\"\n END`,\n ]);\n}\n\nexport function splitHistogramBins(\n rows: Array<{\n x1: DataTableExplorerBin['x0'] | null;\n x2: DataTableExplorerBin['x1'] | null;\n y: number;\n }>,\n) {\n let nullCount = 0;\n const bins: DataTableExplorerBin[] = [];\n\n for (const row of rows) {\n if (row.x1 == null || row.x2 == null) {\n nullCount += row.y;\n continue;\n }\n\n bins.push({\n x0: row.x1,\n x1: row.x2,\n length: row.y,\n });\n }\n\n bins.sort((left, right) => {\n const leftValue = left.x0 instanceof Date ? left.x0.getTime() : left.x0;\n const rightValue = right.x0 instanceof Date ? right.x0.getTime() : right.x0;\n return leftValue - rightValue;\n });\n\n return {bins, nullCount};\n}\n\nexport function buildCategoryBuckets(\n filteredRows: CategoryCountRow[],\n totalRows: CategoryCountRow[],\n categoryLimit: number,\n selectedKey?: string,\n) {\n const totalByKey = new Map(\n totalRows.map((row) => [serializeCategoryBucketKey(row), row.total]),\n );\n const filteredByKey = new Map(\n filteredRows.map((row) => [serializeCategoryBucketKey(row), row.total]),\n );\n\n const baseRows = totalRows\n .filter((row) => row.bucketKind === 'value')\n .slice()\n .sort(\n (left: CategoryCountRow, right: CategoryCountRow) =>\n right.total - left.total,\n );\n\n const visibleRows = baseRows.slice(0, categoryLimit);\n const overflowRows = baseRows.slice(categoryLimit);\n const buckets: DataTableExplorerCategoryBucket[] = visibleRows.map((row) => ({\n filteredCount: filteredByKey.get(serializeCategoryBucketKey(row)) ?? 0,\n key: serializeCategoryBucketKey(row),\n kind: 'value',\n label: String(row.typedValue),\n selectable: true,\n totalCount: row.total,\n }));\n\n const overflowTotalCount = overflowRows.reduce(\n (acc: number, row: CategoryCountRow) => acc + row.total,\n 0,\n );\n const overflowFilteredCount = overflowRows.reduce(\n (acc: number, row: CategoryCountRow) =>\n acc + (filteredByKey.get(serializeCategoryBucketKey(row)) ?? 0),\n 0,\n );\n if (overflowTotalCount > 0) {\n buckets.push({\n filteredCount: overflowFilteredCount,\n key: serializeCategoryBucketKey({\n bucketKind: 'unique',\n typedValue: '__sqlrooms_overflow__',\n }),\n kind: 'overflow',\n label: `${overflowRows.length} more`,\n selectable: false,\n totalCount: overflowTotalCount,\n });\n }\n\n const uniqueKey = serializeCategoryBucketKey({\n bucketKind: 'unique',\n typedValue: null,\n });\n const uniqueTotalCount = totalByKey.get(uniqueKey) ?? 0;\n if (uniqueTotalCount > 0) {\n buckets.push({\n filteredCount: filteredByKey.get(uniqueKey) ?? 0,\n key: uniqueKey,\n kind: 'unique',\n label: 'unique',\n selectable: false,\n totalCount: uniqueTotalCount,\n });\n }\n\n const nullKey = serializeCategoryBucketKey({\n bucketKind: 'null',\n typedValue: null,\n });\n const nullTotalCount = totalByKey.get(nullKey) ?? 0;\n if (nullTotalCount > 0) {\n buckets.push({\n filteredCount: filteredByKey.get(nullKey) ?? 0,\n key: nullKey,\n kind: 'null',\n label: 'null',\n selectable: true,\n totalCount: nullTotalCount,\n });\n }\n\n return {\n bucketCount: filteredRows.length,\n buckets,\n selectedKey,\n };\n}\n\nexport function isSelectableCategoryKey(key: string) {\n const parsedKey = parseCategoryBucketKey(key);\n return (\n parsedKey?.bucketKind !== 'unique' &&\n parsedKey?.typedValue !== '__sqlrooms_overflow__'\n );\n}\n\nexport function categoryKeyToSelectionValue(key?: string) {\n if (key === undefined) return undefined;\n const parsedKey = parseCategoryBucketKey(key);\n if (!parsedKey || parsedKey.bucketKind === 'unique') {\n return undefined;\n }\n return parsedKey.bucketKind === 'null' ? null : parsedKey.typedValue;\n}\n\nfunction normalizeCategoryBucketValue(value: unknown): unknown {\n if (value instanceof Date) {\n return {\n type: 'date',\n value: value.toISOString(),\n };\n }\n if (typeof value === 'bigint') {\n return {\n type: 'bigint',\n value: value.toString(),\n };\n }\n return value;\n}\n\nfunction denormalizeCategoryBucketValue(value: unknown): unknown {\n if (!value || typeof value !== 'object') {\n return value;\n }\n\n if (\n 'type' in value &&\n 'value' in value &&\n value.type === 'date' &&\n typeof value.value === 'string'\n ) {\n return new Date(value.value);\n }\n\n if (\n 'type' in value &&\n 'value' in value &&\n value.type === 'bigint' &&\n typeof value.value === 'string'\n ) {\n return BigInt(value.value);\n }\n\n return value;\n}\n\nexport function serializeCategoryBucketKey(row: {\n bucketKind: CategoryCountRow['bucketKind'];\n typedValue: unknown;\n}) {\n return JSON.stringify([\n row.bucketKind,\n normalizeCategoryBucketValue(row.typedValue),\n ]);\n}\n\nexport function parseCategoryBucketKey(key: string):\n | {\n bucketKind: CategoryCountRow['bucketKind'];\n typedValue: unknown;\n }\n | undefined {\n try {\n const parsed = JSON.parse(key) as [CategoryCountRow['bucketKind'], unknown];\n if (!Array.isArray(parsed) || parsed.length !== 2) {\n return undefined;\n }\n\n return {\n bucketKind: parsed[0],\n typedValue: denormalizeCategoryBucketValue(parsed[1]),\n };\n } catch {\n return undefined;\n }\n}\n\nexport function createEmptySummaryState(\n field: arrow.Field,\n): DataTableExplorerSummaryState {\n if (isDataTableExplorerUnsupportedSummaryType(field.type)) {\n return {\n isLoading: false,\n kind: 'unsupported',\n label: 'No summary',\n };\n }\n\n return isDataTableExplorerHistogramType(field.type)\n ? {\n filteredBins: [],\n filteredNullCount: 0,\n interactor: null,\n isLoading: true,\n kind: 'histogram',\n totalBins: [],\n totalNullCount: 0,\n valueType:\n getDataTableExplorerValueType(field.type) === 'date'\n ? 'date'\n : 'number',\n }\n : {\n bucketCount: 0,\n buckets: [],\n isLoading: true,\n kind: 'category',\n toggleValue: () => {},\n };\n}\n"]}
@@ -2,6 +2,7 @@ import type { DataTable } from '@sqlrooms/db';
2
2
  import { FC } from 'react';
3
3
  export type DataTableBlockHeaderProps = {
4
4
  caption?: string;
5
+ onCaptionChange?: (caption: string | undefined) => void;
5
6
  onTableChange: (table: DataTable) => void;
6
7
  readOnly?: boolean;
7
8
  tables: DataTable[];
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableBlockHeader.d.ts","sourceRoot":"","sources":["../../../src/data-table-explorer/worksheet/DataTableBlockHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAC,EAAE,EAAC,MAAM,OAAO,CAAC;AAIzB,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,aAAa,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,yBAAyB,CA0B9D,CAAC"}
1
+ {"version":3,"file":"DataTableBlockHeader.d.ts","sourceRoot":"","sources":["../../../src/data-table-explorer/worksheet/DataTableBlockHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAC,EAAE,EAAC,MAAM,OAAO,CAAC;AAIzB,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACxD,aAAa,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,aAAa,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,yBAAyB,CA6B9D,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { EditableText } from '@sqlrooms/ui';
2
3
  import { DataTableSelector } from '../../components/DataTableSelector';
3
4
  import { DataTableExplorer } from '../DataTableExplorer';
4
- export const DataTableBlockHeader = ({ caption, onTableChange, readOnly, selectedTable, tables, }) => {
5
- return (_jsxs("div", { className: "border-border flex shrink-0 items-center gap-2 border-b px-3 py-2", children: [caption ? (_jsx("div", { className: "min-w-0 flex-1 truncate text-sm font-medium", children: caption })) : (_jsx("div", { className: "flex-1" })), _jsx(DataTableSelector, { className: "w-48", disabled: readOnly || !onTableChange, onChange: onTableChange, tables: tables, value: selectedTable }), _jsx(DataTableExplorer.ResetButton, {})] }));
5
+ export const DataTableBlockHeader = ({ caption, onCaptionChange, onTableChange, readOnly, selectedTable, tables, }) => {
6
+ const tableName = selectedTable.table.table;
7
+ return (_jsxs("div", { className: "border-border flex shrink-0 items-center gap-2 border-b px-3 py-2", children: [_jsx(EditableText, { className: "min-w-0 flex-1 text-sm font-medium", value: caption ?? '', placeholder: tableName || 'Table caption', isReadOnly: readOnly, onChange: (value) => onCaptionChange?.(value || undefined) }), _jsx(DataTableSelector, { className: "w-48", disabled: readOnly || !onTableChange, onChange: onTableChange, tables: tables, value: selectedTable }), _jsx(DataTableExplorer.ResetButton, {})] }));
6
8
  };
7
9
  //# sourceMappingURL=DataTableBlockHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableBlockHeader.js","sourceRoot":"","sources":["../../../src/data-table-explorer/worksheet/DataTableBlockHeader.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAC,iBAAiB,EAAC,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAUvD,MAAM,CAAC,MAAM,oBAAoB,GAAkC,CAAC,EAClE,OAAO,EACP,aAAa,EACb,QAAQ,EACR,aAAa,EACb,MAAM,GACP,EAAE,EAAE;IACH,OAAO,CACL,eAAK,SAAS,EAAC,mEAAmE,aAC/E,OAAO,CAAC,CAAC,CAAC,CACT,cAAK,SAAS,EAAC,6CAA6C,YACzD,OAAO,GACJ,CACP,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,QAAQ,GAAG,CAC3B,EACD,KAAC,iBAAiB,IAChB,SAAS,EAAC,MAAM,EAChB,QAAQ,EAAE,QAAQ,IAAI,CAAC,aAAa,EACpC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GACpB,EACF,KAAC,iBAAiB,CAAC,WAAW,KAAG,IAC7B,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type {DataTable} from '@sqlrooms/db';\nimport {FC} from 'react';\nimport {DataTableSelector} from '../../components/DataTableSelector';\nimport {DataTableExplorer} from '../DataTableExplorer';\n\nexport type DataTableBlockHeaderProps = {\n caption?: string;\n onTableChange: (table: DataTable) => void;\n readOnly?: boolean;\n tables: DataTable[];\n selectedTable: DataTable;\n};\n\nexport const DataTableBlockHeader: FC<DataTableBlockHeaderProps> = ({\n caption,\n onTableChange,\n readOnly,\n selectedTable,\n tables,\n}) => {\n return (\n <div className=\"border-border flex shrink-0 items-center gap-2 border-b px-3 py-2\">\n {caption ? (\n <div className=\"min-w-0 flex-1 truncate text-sm font-medium\">\n {caption}\n </div>\n ) : (\n <div className=\"flex-1\" />\n )}\n <DataTableSelector\n className=\"w-48\"\n disabled={readOnly || !onTableChange}\n onChange={onTableChange}\n tables={tables}\n value={selectedTable}\n />\n <DataTableExplorer.ResetButton />\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"DataTableBlockHeader.js","sourceRoot":"","sources":["../../../src/data-table-explorer/worksheet/DataTableBlockHeader.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAC,iBAAiB,EAAC,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAWvD,MAAM,CAAC,MAAM,oBAAoB,GAAkC,CAAC,EAClE,OAAO,EACP,eAAe,EACf,aAAa,EACb,QAAQ,EACR,aAAa,EACb,MAAM,GACP,EAAE,EAAE;IACH,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;IAE5C,OAAO,CACL,eAAK,SAAS,EAAC,mEAAmE,aAChF,KAAC,YAAY,IACX,SAAS,EAAC,oCAAoC,EAC9C,KAAK,EAAE,OAAO,IAAI,EAAE,EACpB,WAAW,EAAE,SAAS,IAAI,eAAe,EACzC,UAAU,EAAE,QAAQ,EACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,EAAE,CAAC,KAAK,IAAI,SAAS,CAAC,GAC1D,EACF,KAAC,iBAAiB,IAChB,SAAS,EAAC,MAAM,EAChB,QAAQ,EAAE,QAAQ,IAAI,CAAC,aAAa,EACpC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,aAAa,GACpB,EACF,KAAC,iBAAiB,CAAC,WAAW,KAAG,IAC7B,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type {DataTable} from '@sqlrooms/db';\nimport {EditableText} from '@sqlrooms/ui';\nimport {FC} from 'react';\nimport {DataTableSelector} from '../../components/DataTableSelector';\nimport {DataTableExplorer} from '../DataTableExplorer';\n\nexport type DataTableBlockHeaderProps = {\n caption?: string;\n onCaptionChange?: (caption: string | undefined) => void;\n onTableChange: (table: DataTable) => void;\n readOnly?: boolean;\n tables: DataTable[];\n selectedTable: DataTable;\n};\n\nexport const DataTableBlockHeader: FC<DataTableBlockHeaderProps> = ({\n caption,\n onCaptionChange,\n onTableChange,\n readOnly,\n selectedTable,\n tables,\n}) => {\n const tableName = selectedTable.table.table;\n\n return (\n <div className=\"border-border flex shrink-0 items-center gap-2 border-b px-3 py-2\">\n <EditableText\n className=\"min-w-0 flex-1 text-sm font-medium\"\n value={caption ?? ''}\n placeholder={tableName || 'Table caption'}\n isReadOnly={readOnly}\n onChange={(value) => onCaptionChange?.(value || undefined)}\n />\n <DataTableSelector\n className=\"w-48\"\n disabled={readOnly || !onTableChange}\n onChange={onTableChange}\n tables={tables}\n value={selectedTable}\n />\n <DataTableExplorer.ResetButton />\n </div>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableBlockRenderer.d.ts","sourceRoot":"","sources":["../../../src/data-table-explorer/worksheet/DataTableBlockRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,uCAAuC,EAAC,MAAM,qBAAqB,CAAC;AAEjF,OAAO,EAAC,EAAE,EAAc,MAAM,OAAO,CAAC;AAQtC,eAAO,MAAM,sBAAsB,EAAE,EAAE,CACrC,uCAAuC,CAyFxC,CAAC"}
1
+ {"version":3,"file":"DataTableBlockRenderer.d.ts","sourceRoot":"","sources":["../../../src/data-table-explorer/worksheet/DataTableBlockRenderer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,uCAAuC,EAAC,MAAM,qBAAqB,CAAC;AAEjF,OAAO,EAAC,EAAE,EAAc,MAAM,OAAO,CAAC;AAQtC,eAAO,MAAM,sBAAsB,EAAE,EAAE,CACrC,uCAAuC,CA4FxC,CAAC"}
@@ -1,13 +1,13 @@
1
1
  import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { SpinnerPane } from '@sqlrooms/ui';
2
+ import { ScrollArea, ScrollBar, SpinnerPane } from '@sqlrooms/ui';
3
3
  import { useCallback } from 'react';
4
4
  import { useStoreWithMosaic } from '../../MosaicSlice';
5
5
  import { DataTableSelectorEmptyState } from '../../components/DataTableSelector';
6
- import { useDataTable } from '../../hooks/useDataTable';
6
+ import { useDataTable } from '@sqlrooms/db';
7
7
  import { useTablesWithColumns } from '../../hooks/useTablesWithColumns';
8
8
  import { DataTableExplorer } from '../DataTableExplorer';
9
9
  import { DataTableBlockHeader } from './DataTableBlockHeader';
10
- export const DataTableBlockRenderer = ({ blockId, blockInstanceId, blockType, caption, documentId, onTitleChange, readOnly, title, }) => {
10
+ export const DataTableBlockRenderer = ({ blockId, blockInstanceId, blockType, caption, documentId, onCaptionChange, onTitleChange, readOnly, title, }) => {
11
11
  const connection = useStoreWithMosaic((state) => state.mosaic.connection);
12
12
  const tables = useTablesWithColumns();
13
13
  const selectedTable = useDataTable(title);
@@ -30,6 +30,6 @@ export const DataTableBlockRenderer = ({ blockId, blockInstanceId, blockType, ca
30
30
  if (connection.status !== 'ready') {
31
31
  return (_jsx("div", { className: "flex h-full min-h-0 flex-col", children: _jsx("div", { className: "text-muted-foreground flex min-h-0 flex-1 items-center justify-center p-4 text-sm", children: "Mosaic connection is not ready." }) }));
32
32
  }
33
- return (_jsx(DataTableExplorer, { pageSize: 25, selectionName: selectionName, tableName: selectedTable, children: _jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [_jsx(DataTableBlockHeader, { caption: caption, selectedTable: selectedTable, readOnly: readOnly, tables: tables, onTableChange: handleTableChange }), _jsx("div", { className: "min-h-0 flex-1 overflow-auto", children: _jsxs(DataTableExplorer.Table, { children: [_jsx(DataTableExplorer.Header, {}), _jsx(DataTableExplorer.Rows, {})] }) }), _jsx(DataTableExplorer.StatusBar, {})] }) }));
33
+ return (_jsx(DataTableExplorer, { pageSize: 25, selectionName: selectionName, tableName: selectedTable.table, children: _jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [_jsx(DataTableBlockHeader, { caption: caption, onCaptionChange: onCaptionChange, selectedTable: selectedTable, readOnly: readOnly, tables: tables, onTableChange: handleTableChange }), _jsxs(ScrollArea, { className: "min-h-0 flex-1", children: [_jsxs(DataTableExplorer.Table, { children: [_jsx(DataTableExplorer.Header, {}), _jsx(DataTableExplorer.Rows, {})] }), _jsx(ScrollBar, { orientation: "horizontal" })] }), _jsx(DataTableExplorer.StatusBar, {})] }) }));
34
34
  };
35
35
  //# sourceMappingURL=DataTableBlockRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableBlockRenderer.js","sourceRoot":"","sources":["../../../src/data-table-explorer/worksheet/DataTableBlockRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["import type {DataTable} from '@sqlrooms/db';\nimport type {BlockDocumentStatefulBlockRendererProps} from '@sqlrooms/documents';\nimport {SpinnerPane} from '@sqlrooms/ui';\nimport {FC, useCallback} from 'react';\nimport {useStoreWithMosaic} from '../../MosaicSlice';\nimport {DataTableSelectorEmptyState} from '../../components/DataTableSelector';\nimport {useDataTable} from '../../hooks/useDataTable';\nimport {useTablesWithColumns} from '../../hooks/useTablesWithColumns';\nimport {DataTableExplorer} from '../DataTableExplorer';\nimport {DataTableBlockHeader} from './DataTableBlockHeader';\n\nexport const DataTableBlockRenderer: FC<\n BlockDocumentStatefulBlockRendererProps\n> = ({\n blockId,\n blockInstanceId,\n blockType,\n caption,\n documentId,\n onTitleChange,\n readOnly,\n title,\n}) => {\n const connection = useStoreWithMosaic((state) => state.mosaic.connection);\n\n const tables = useTablesWithColumns();\n const selectedTable = useDataTable(title);\n\n const selectionName = `block-document:${documentId}:data-table:${blockId}:brush`;\n const selection = useStoreWithMosaic(\n (state) => state.mosaic.selections[selectionName],\n );\n const getSelection = useStoreWithMosaic((state) => state.mosaic.getSelection);\n const handleTableChange = useCallback(\n (table: DataTable) => {\n (selection ?? getSelection(selectionName, 'crossfilter')).reset();\n onTitleChange?.(table.table.toString());\n },\n [getSelection, onTitleChange, selection, selectionName],\n );\n\n if (!blockInstanceId || blockType !== 'data-table') {\n return (\n <div className=\"text-muted-foreground p-4 text-sm\">\n Unsupported stateful block type: {blockType || 'Unconfigured'}\n </div>\n );\n }\n\n if (!selectedTable) {\n return (\n <DataTableSelectorEmptyState\n disabled={readOnly || !onTitleChange}\n onChange={handleTableChange}\n tables={tables}\n />\n );\n }\n\n if (connection.status === 'loading') {\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n <SpinnerPane className=\"min-h-0 flex-1\" />\n </div>\n );\n }\n\n if (connection.status !== 'ready') {\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n <div className=\"text-muted-foreground flex min-h-0 flex-1 items-center justify-center p-4 text-sm\">\n Mosaic connection is not ready.\n </div>\n </div>\n );\n }\n\n return (\n <DataTableExplorer\n pageSize={25}\n selectionName={selectionName}\n tableName={selectedTable}\n >\n <div className=\"flex h-full min-h-0 flex-col\">\n <DataTableBlockHeader\n caption={caption}\n selectedTable={selectedTable}\n readOnly={readOnly}\n tables={tables}\n onTableChange={handleTableChange}\n />\n <div className=\"min-h-0 flex-1 overflow-auto\">\n <DataTableExplorer.Table>\n <DataTableExplorer.Header />\n <DataTableExplorer.Rows />\n </DataTableExplorer.Table>\n </div>\n <DataTableExplorer.StatusBar />\n </div>\n </DataTableExplorer>\n );\n};\n"]}
1
+ {"version":3,"file":"DataTableBlockRenderer.js","sourceRoot":"","sources":["../../../src/data-table-explorer/worksheet/DataTableBlockRenderer.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAC,UAAU,EAAE,SAAS,EAAE,WAAW,EAAC,MAAM,cAAc,CAAC;AAChE,OAAO,EAAK,WAAW,EAAC,MAAM,OAAO,CAAC;AACtC,OAAO,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAC,2BAA2B,EAAC,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAC,oBAAoB,EAAC,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAC,oBAAoB,EAAC,MAAM,wBAAwB,CAAC;AAE5D,MAAM,CAAC,MAAM,sBAAsB,GAE/B,CAAC,EACH,OAAO,EACP,eAAe,EACf,SAAS,EACT,OAAO,EACP,UAAU,EACV,eAAe,EACf,aAAa,EACb,QAAQ,EACR,KAAK,GACN,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAE1C,MAAM,aAAa,GAAG,kBAAkB,UAAU,eAAe,OAAO,QAAQ,CAAC;IACjF,MAAM,SAAS,GAAG,kBAAkB,CAClC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAClD,CAAC;IACF,MAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC9E,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,KAAgB,EAAE,EAAE;QACnB,CAAC,SAAS,IAAI,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAClE,aAAa,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1C,CAAC,EACD,CAAC,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CACxD,CAAC;IAEF,IAAI,CAAC,eAAe,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QACnD,OAAO,CACL,eAAK,SAAS,EAAC,mCAAmC,kDACd,SAAS,IAAI,cAAc,IACzD,CACP,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CACL,KAAC,2BAA2B,IAC1B,QAAQ,EAAE,QAAQ,IAAI,CAAC,aAAa,EACpC,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,MAAM,GACd,CACH,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,CACL,cAAK,SAAS,EAAC,8BAA8B,YAC3C,KAAC,WAAW,IAAC,SAAS,EAAC,gBAAgB,GAAG,GACtC,CACP,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO,CACL,cAAK,SAAS,EAAC,8BAA8B,YAC3C,cAAK,SAAS,EAAC,mFAAmF,gDAE5F,GACF,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,iBAAiB,IAChB,QAAQ,EAAE,EAAE,EACZ,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,aAAa,CAAC,KAAK,YAE9B,eAAK,SAAS,EAAC,8BAA8B,aAC3C,KAAC,oBAAoB,IACnB,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,iBAAiB,GAChC,EACF,MAAC,UAAU,IAAC,SAAS,EAAC,gBAAgB,aACpC,MAAC,iBAAiB,CAAC,KAAK,eACtB,KAAC,iBAAiB,CAAC,MAAM,KAAG,EAC5B,KAAC,iBAAiB,CAAC,IAAI,KAAG,IACF,EAC1B,KAAC,SAAS,IAAC,WAAW,EAAC,YAAY,GAAG,IAC3B,EACb,KAAC,iBAAiB,CAAC,SAAS,KAAG,IAC3B,GACY,CACrB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type {DataTable} from '@sqlrooms/db';\nimport type {BlockDocumentStatefulBlockRendererProps} from '@sqlrooms/documents';\nimport {ScrollArea, ScrollBar, SpinnerPane} from '@sqlrooms/ui';\nimport {FC, useCallback} from 'react';\nimport {useStoreWithMosaic} from '../../MosaicSlice';\nimport {DataTableSelectorEmptyState} from '../../components/DataTableSelector';\nimport {useDataTable} from '@sqlrooms/db';\nimport {useTablesWithColumns} from '../../hooks/useTablesWithColumns';\nimport {DataTableExplorer} from '../DataTableExplorer';\nimport {DataTableBlockHeader} from './DataTableBlockHeader';\n\nexport const DataTableBlockRenderer: FC<\n BlockDocumentStatefulBlockRendererProps\n> = ({\n blockId,\n blockInstanceId,\n blockType,\n caption,\n documentId,\n onCaptionChange,\n onTitleChange,\n readOnly,\n title,\n}) => {\n const connection = useStoreWithMosaic((state) => state.mosaic.connection);\n\n const tables = useTablesWithColumns();\n const selectedTable = useDataTable(title);\n\n const selectionName = `block-document:${documentId}:data-table:${blockId}:brush`;\n const selection = useStoreWithMosaic(\n (state) => state.mosaic.selections[selectionName],\n );\n const getSelection = useStoreWithMosaic((state) => state.mosaic.getSelection);\n const handleTableChange = useCallback(\n (table: DataTable) => {\n (selection ?? getSelection(selectionName, 'crossfilter')).reset();\n onTitleChange?.(table.table.toString());\n },\n [getSelection, onTitleChange, selection, selectionName],\n );\n\n if (!blockInstanceId || blockType !== 'data-table') {\n return (\n <div className=\"text-muted-foreground p-4 text-sm\">\n Unsupported stateful block type: {blockType || 'Unconfigured'}\n </div>\n );\n }\n\n if (!selectedTable) {\n return (\n <DataTableSelectorEmptyState\n disabled={readOnly || !onTitleChange}\n onChange={handleTableChange}\n tables={tables}\n />\n );\n }\n\n if (connection.status === 'loading') {\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n <SpinnerPane className=\"min-h-0 flex-1\" />\n </div>\n );\n }\n\n if (connection.status !== 'ready') {\n return (\n <div className=\"flex h-full min-h-0 flex-col\">\n <div className=\"text-muted-foreground flex min-h-0 flex-1 items-center justify-center p-4 text-sm\">\n Mosaic connection is not ready.\n </div>\n </div>\n );\n }\n\n return (\n <DataTableExplorer\n pageSize={25}\n selectionName={selectionName}\n tableName={selectedTable.table}\n >\n <div className=\"flex h-full min-h-0 flex-col\">\n <DataTableBlockHeader\n caption={caption}\n onCaptionChange={onCaptionChange}\n selectedTable={selectedTable}\n readOnly={readOnly}\n tables={tables}\n onTableChange={handleTableChange}\n />\n <ScrollArea className=\"min-h-0 flex-1\">\n <DataTableExplorer.Table>\n <DataTableExplorer.Header />\n <DataTableExplorer.Rows />\n </DataTableExplorer.Table>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n <DataTableExplorer.StatusBar />\n </div>\n </DataTableExplorer>\n );\n};\n"]}
package/dist/index.d.ts CHANGED
@@ -7,31 +7,44 @@ export { astToDOM, astToESM, parseSpec } from '@uwdata/mosaic-spec';
7
7
  export type { Spec } from '@uwdata/mosaic-spec';
8
8
  export { asc, column, desc, Query, sql } from '@uwdata/mosaic-sql';
9
9
  export * as vg from '@uwdata/vgplot';
10
+ export { createDefaultMosaicConfig, createMosaicSlice, MosaicSliceConfig, type CreateMosaicSliceProps, type MosaicClientOptions, type MosaicPreAggregateOptions, type MosaicSliceState, type TrackedClient, } from './MosaicSlice';
11
+ export { useMosaicClient, type UseMosaicClientOptions } from './useMosaicClient';
10
12
  export { MosaicDashboard, MosaicDashboardRoot, type MosaicDashboardProps, type MosaicDashboardRootProps, } from './dashboard/MosaicDashboard';
11
13
  export { createMosaicDashboardBlockDefinition, type CreateMosaicDashboardBlockDefinitionOptions, type MosaicDashboardBlockRenderProps, } from './dashboard/createMosaicDashboardBlockDefinition';
12
14
  export { DefaultMosaicDashboardBlock } from './dashboard/DefaultMosaicDashboardBlock';
13
15
  export { useMosaicDashboardContext } from './dashboard/MosaicDashboardContext';
14
16
  export { MosaicDashboardPanelErrorBoundary } from './dashboard/panel/MosaicDashboardPanelErrorBoundary';
17
+ export { MosaicDashboardPanelLayout } from './dashboard/panel/MosaicDashboardPanelLayout';
15
18
  export { createDefaultMosaicDashboardPanelRenderers } from './dashboard/createDefaultMosaicDashboardPanelRenderers';
16
19
  export { defaultAddPanelActions } from './dashboard/defaultPanelActions';
20
+ export { DataTableSelector, DataTableSelectorEmptyState, type DataTableSelectorProps, } from './components/DataTableSelector';
17
21
  export { useSelectedOrFirstTable } from './dashboard/useSelectedOrFirstTable';
18
22
  export { useTablesWithColumns } from './hooks/useTablesWithColumns';
19
- export { MosaicDashboardPanelLayout } from './dashboard/panel/MosaicDashboardPanelLayout';
23
+ export { usePanelClientRegistration } from './dashboard/usePanelClientRegistration';
24
+ export { usePanelClients } from './dashboard/usePanelClients';
25
+ export { usePanelResetFilters, type UsePanelResetFiltersOptions, type UsePanelResetFiltersReturn, } from './dashboard/hooks/usePanelResetFilters';
26
+ export { useDashboardResetFilters, type UseDashboardResetFiltersOptions, type UseDashboardResetFiltersReturn, } from './dashboard/hooks/useDashboardResetFilters';
27
+ export { ResetFiltersButton, type ResetFiltersButtonProps, } from './dashboard/components/ResetFiltersButton';
20
28
  export { addDataTableExplorerPanelAction } from './data-table-explorer/addDataTableExplorerPanelAction';
21
29
  export { addChartPanelAction } from './charts/addChartPanelAction';
30
+ export { createMosaicDashboardCommands, MOSAIC_DASHBOARD_COMMAND_IDS, } from './dashboard/MosaicDashboardCommands';
22
31
  export { createMosaicDashboardDataTableExplorerPanelConfig, createMosaicDashboardChartPanelConfig, createDefaultMosaicDashboardConfig, createMosaicDashboardSlice, getMosaicDashboardDockId, getMosaicDashboardGridId, getMosaicDashboardPanelId, getMosaicDashboardSelectionName, isChartPanelConfig, MOSAIC_DASHBOARD_PANEL, MosaicDashboardSliceConfig, useStoreWithMosaicDashboard, } from './dashboard/MosaicDashboardSlice';
23
32
  export { MOSAIC_DASHBOARD_DATA_TABLE_EXPLORER_PANEL_TYPE, MOSAIC_DASHBOARD_CHART_PANEL_TYPE, MOSAIC_DASHBOARD_CHART_PANEL_TYPE as MOSAIC_DASHBOARD_VGPLOT_PANEL_TYPE, MosaicDashboardEntry, MosaicDashboardPanelConfig, } from './dashboard/dashboard-types';
24
33
  export type { MosaicDashboardAddPanelAction, MosaicDashboardAddPanelActionContext, OnStartDashboard, } from './dashboard/action-types';
25
34
  export type { CreateMosaicDashboardSliceProps, MosaicDashboardPanelRenderer, MosaicDashboardPanelRendererProps, MosaicDashboardSliceConfig as MosaicDashboardSliceConfigType, MosaicDashboardSliceState, MosaicDashboardStoreState, } from './dashboard/MosaicDashboardSlice';
26
35
  export type { MosaicDashboardEntry as MosaicDashboardEntryType, MosaicDashboardPanelConfig as MosaicDashboardPanelConfigType, ChartPanelConfig, } from './dashboard/dashboard-types';
27
36
  export type { MosaicDashboardLayoutType, MosaicDashboardPanelSource, DataTableExplorerPanelConfig, } from './dashboard/core-types';
28
- export { createMosaicColorLegendPlot, MosaicColorLegend, type MosaicColorLegendProps, } from './MosaicColorLegend';
29
- export { createDefaultMosaicConfig, createMosaicSlice, MosaicSliceConfig, type CreateMosaicSliceProps, type MosaicClientOptions, type MosaicPreAggregateOptions, type MosaicSliceState, type TrackedClient, } from './MosaicSlice';
30
- export { DataPointLimitError } from './DataPointLimitError';
31
37
  export { MosaicChartView, type MosaicChartViewProps, } from './charts/MosaicChartView';
38
+ export { MosaicChart } from './charts/MosaicChart';
39
+ export { MosaicSpecChart } from './MosaicChart';
40
+ export { VgPlotChart } from './VgPlotChart';
32
41
  export { MosaicChartSettingsPanel, type MosaicChartSettingsPanelProps, } from './charts/MosaicChartSettingsPanel';
42
+ export { createMosaicColorLegendPlot, MosaicColorLegend, type MosaicColorLegendProps, } from './MosaicColorLegend';
43
+ export { ResponsivePlot, type PlotSize, type ResponsivePlotProps, } from './ResponsivePlot';
33
44
  export { useBrushSelectionParams } from './charts/useBrushSelectionParams';
34
45
  export { useChartRetainer, useChartRetainerByKey, } from './charts/useChartRetainer';
46
+ export { useParseChartConfig } from './charts/useParseChartConfig';
47
+ export { DataPointLimitError } from './DataPointLimitError';
35
48
  export { DEFAULT_CHART_MAX_DATA_POINTS, assertChartDataPolicy, createChartRuntimeIssueFromError, getQueryResultRowCount, resolveChartDataPolicy, type ChartDataPolicy, type ChartDataPolicyOverride, type ChartDataPolicyContext, type ChartRuntimeIssue, type ChartRuntimeIssueContext, type ChartRuntimeIssueReporter, } from './chart-runtime';
36
49
  export { DataTableExplorer, type DataTableExplorerCompoundHeaderProps, type DataTableExplorerCompoundResetButtonProps, type DataTableExplorerCompoundRowsProps, type DataTableExplorerCompoundStatusBarProps, type DataTableExplorerCompoundTableProps, type DataTableExplorerProps, type DataTableExplorerRootProps, } from './data-table-explorer/DataTableExplorer';
37
50
  export { DataTableBlockRenderer } from './data-table-explorer/worksheet/DataTableBlockRenderer';
@@ -39,24 +52,9 @@ export { DataTableExplorerHeader, type DataTableExplorerHeaderProps, } from './d
39
52
  export { DataTableExplorerRows, type DataTableExplorerRowsProps, } from './data-table-explorer/DataTableExplorerRows';
40
53
  export { DataTableExplorerStatusBar, type DataTableExplorerStatusBarProps, } from './data-table-explorer/DataTableExplorerStatusBar';
41
54
  export { useDataTableExplorer } from './data-table-explorer/useDataTableExplorer';
42
- export { ResponsivePlot, type PlotSize, type ResponsivePlotProps, } from './ResponsivePlot';
43
- export { useMosaicClient, type UseMosaicClientOptions } from './useMosaicClient';
44
- export { VgPlotChart } from './VgPlotChart';
45
- export { DASHBOARD_AI_INSTRUCTIONS, MAP_TOOL_KEY, createDashboardAgentTool, createDashboardAiTools, } from './ai/ai';
46
- export type { CreateDashboardAgentToolOptions, CreateDashboardAiToolsOptions, DashboardAgentResult, DashboardAgentRunResult, DashboardAgentToolCall, DashboardAiAdapter, DashboardAiStore, DashboardAiTable, CreateDashboardToolDepsOptions, } from './ai/ai';
47
- export { MosaicSpecChart } from './MosaicChart';
48
- export { MosaicChartBuilder } from './MosaicChartBuilder';
49
- export { useMosaicEditorContext } from './editor/MosaicEditorContext';
50
- export { getCachedMosaicSchema, loadMosaicSchema, preloadMosaicSchema, } from './editor/mosaicSchema';
51
- export { useMosaicChartEditor } from './editor/useMosaicChartEditor';
52
- export type { MosaicChartContainerProps } from './editor/MosaicChartContainer';
53
- export type { MosaicChartDisplayProps } from './editor/MosaicChartDisplay';
54
- export type { MosaicChartEditorActionsProps } from './editor/MosaicChartEditorActions';
55
- export type { MosaicCodeMirrorEditorProps } from './editor/MosaicCodeMirrorEditor';
56
- export type { MosaicSpecEditorPanelProps } from './editor/MosaicSpecEditorPanel';
57
- export type { MosaicEditorActions, MosaicEditorContextValue, MosaicEditorState, OnMosaicSpecChange, UseMosaicChartEditorOptions, UseMosaicChartEditorReturn, } from './editor/types';
58
55
  export { getDataTableExplorerTableWidth, DATA_TABLE_EXPLORER_DEFAULT_COLUMN_WIDTH_PX, DATA_TABLE_EXPLORER_ROW_NUMBER_COLUMN_WIDTH_PX, DATA_TABLE_EXPLORER_UNSUPPORTED_COLUMN_WIDTH_PX, } from './data-table-explorer/layout';
59
- export type { DataTableExplorerCategoryBucket, DataTableExplorerCategorySummary, DataTableExplorerColumnKind, DataTableExplorerColumnState, DataTableExplorerHistogramSummary, DataTableExplorerOptions, DataTableExplorerPaginationState, DataTableExplorerSorting, DataTableExplorerSummaryState, UseDataTableExplorerReturn, } from './data-table-explorer/types';
56
+ export type { DataTableExplorerCategoryBucket, DataTableExplorerCategorySummary, DataTableExplorerColumnKind, DataTableExplorerColumnState, DataTableExplorerHistogramSummary, DataTableExplorerOptions, DataTableExplorerPaginationState, DataTableExplorerSorting, DataTableExplorerSummaryState, DataTableExplorerTableReference, UseDataTableExplorerReturn, } from './data-table-explorer/types';
57
+ export { MosaicChartBuilder } from './MosaicChartBuilder';
60
58
  export type { ChartBuilderActionsProps } from './chart-builders/ChartBuilderActions';
61
59
  export { ChartBuilderActions } from './chart-builders/ChartBuilderActions';
62
60
  export type { ChartBuilderContentProps } from './chart-builders/ChartBuilderContent';
@@ -69,23 +67,49 @@ export type { ChartBuilderRootProps } from './chart-builders/ChartBuilderRoot';
69
67
  export { ChartBuilderRoot } from './chart-builders/ChartBuilderRoot';
70
68
  export type { ChartBuilderFieldsProps } from './chart-builders/ChartBuilderFields';
71
69
  export { ChartBuilderFields } from './chart-builders/ChartBuilderFields';
70
+ export type { ChartBuilderTypeGridProps } from './chart-builders/ChartBuilderTypeGrid';
71
+ export { ChartBuilderTypeGrid } from './chart-builders/ChartBuilderTypeGrid';
72
72
  export { Field } from './components/Field';
73
73
  export { TableSelector } from './components/TableSelector';
74
74
  export { ColumnSelector } from './components/ColumnSelector';
75
75
  export { MultiFieldSelector } from './components/MultiFieldSelector';
76
76
  export { ColumnsProvider, useColumnsContext, type ColumnsContextValue, } from './components/ColumnsContext';
77
- export type { ChartBuilderTypeGridProps } from './chart-builders/ChartBuilderTypeGrid';
78
- export { ChartBuilderTypeGrid } from './chart-builders/ChartBuilderTypeGrid';
77
+ export type { FieldSelectorInputProps } from './components/FieldSelectorInput';
79
78
  export { buildChartTitleForSpec } from './chart-builders/chartSpecTitle';
80
- export { boxPlotChartType, bubbleChartChartType, countPlotChartType, createDefaultChartTypes, customSpecChartType, heatmapChartType, histogramChartType, isSpecChartType, isComponentChartType, lineChartChartType, mosaicChartTypes, ChartConfig, HistogramChartSettings, LineChartSettings, CountPlotChartSettings, BubbleChartSettings, HeatmapChartSettings, BoxPlotChartSettings, BaseChartToolParameters, validateColumnExists, HistogramToolParameters, LineChartToolParameters, CountPlotToolParameters, HeatmapToolParameters, BubbleChartToolParameters, BoxPlotToolParameters, createHistogramAiTool, createLineChartAiTool, createCountPlotAiTool, createHeatmapAiTool, createBubbleChartAiTool, createBoxPlotAiTool, createChartTools, createDataTableExplorerTool, createListPanelsTool, createRemovePanelTool, DataTableExplorerToolParameters, ListPanelsToolParameters, RemovePanelToolParameters, } from './charts/chart-types';
81
- export type { ChartSettings, ChartType, ChartToolExecutionContext, DashboardToolDeps, ResolvedChartResources, CreateChartParams, CreateChartResult, HistogramToolParams, LineChartToolParams, CountPlotToolParams, HeatmapToolParams, BubbleChartToolParams, BoxPlotToolParams, DataTableExplorerToolParams, ListPanelsToolParams, RemovePanelToolParams, } from './charts/chart-types';
82
79
  export { buildChartTypeTitle, canCreateChartFromType, } from './chart-builders/chartTypeUtils';
83
- export { NUMERIC_COLUMN_TYPES, QUANTITATIVE_COLUMN_TYPES, TEMPORAL_COLUMN_TYPES, } from './column-types-utils';
84
- export type { FieldSelectorInputProps } from './components/FieldSelectorInput';
80
+ export { boxPlotChartType, scatterPlotChartType, countPlotChartType, createDefaultChartTypes, customSpecChartType, heatmapChartType, histogramChartType, isSpecChartType, isComponentChartType, lineChartChartType, mosaicChartTypes, ChartConfig, HistogramChartSettings, LineChartSettings, CountPlotChartSettings, ScatterPlotChartSettings, HeatmapChartSettings, BoxPlotChartSettings, } from './charts/chart-types';
85
81
  export type { ChartBuilderColumn, ChartBuilderDashboardPanelOutput, ChartBuilderField, ChartSpec, ChartTypeDefinition, } from './charts/chart-types/base-types';
86
- export { MosaicCodeMirrorEditor } from './editor/MosaicCodeMirrorEditor';
87
- export { MosaicChart } from './charts/MosaicChart';
88
- export { useParseChartConfig } from './charts/useParseChartConfig';
82
+ export type { ChartSettings, ChartType, ChartToolExecutionContext, ChartToolParams, DashboardToolDeps, } from './charts/chart-types';
83
+ export type { ResolvedChartResources, CreateChartParams, CreateChartResult, } from './ai/tool-types';
84
+ export { NUMERIC_COLUMN_TYPES, QUANTITATIVE_COLUMN_TYPES, TEMPORAL_COLUMN_TYPES, } from './column-types-utils';
85
+ export { BaseChartToolInput } from './ai/tool-schemas';
86
+ export { HistogramToolInput, LineChartToolInput, CountPlotToolInput, HeatmapToolInput, ScatterPlotToolInput, BoxPlotToolInput, } from './charts/chart-types';
87
+ export { createHistogramAiTool, createLineChartAiTool, createCountPlotAiTool, createHeatmapAiTool, createScatterPlotAiTool, createBoxPlotAiTool, createChartTools, } from './charts/chart-types';
88
+ export { createDataTableExplorerTool, DataTableExplorerToolInput, } from './ai/createDataTableExplorerTool';
89
+ export { MAP_TOOL_KEY } from './ai/constants';
90
+ export { createDashboardAiTools, type CreateDashboardAiToolsOptions, } from './ai/dashboard/createDashboardAiTools';
91
+ export type { ExtraDashboardAiToolsFactory, ExtraDashboardAiToolsParams, } from './ai/dashboard/dashboard-types';
92
+ export { createDashboardAgentTool } from './ai/dashboard/createDashboardAgentTool';
93
+ export { BLOCK_DOCUMENT_CHART_TOOL_PREFIX, KnownMosaicBlockDocumentTools, } from './ai/block-document/constants';
94
+ export { createAddMosaicDashboardBlockTool, type CreateAddMosaicDashboardBlockToolOptions, } from './ai/block-document/createAddMosaicDashboardBlockTool';
95
+ export { createBlockDocumentChartTools, type CreateBlockDocumentChartToolsParams, } from './ai/block-document/createBlockDocumentChartTools';
96
+ export { createBlockDocumentDataTableExplorerTool, type CreateBlockDocumentDataTableExplorerToolParams, } from './ai/block-document/createBlockDocumentDataTableExplorerTool';
97
+ export type { AiStore, BaseAgentToolOptions, AgentToolCall, AgentRunResult, } from './ai/types';
98
+ export type { DatabaseAiAdapter } from './ai/database-types';
99
+ export type { CreateDashboardAgentToolOptions, DashboardAgentResult, DashboardAiAdapter, } from './ai/dashboard/dashboard-types';
100
+ export { ensurePanel, ensureTable, ensureNoOverride } from './ai/tool-helpers';
101
+ export { AiAgentError } from './ai/errors';
102
+ export type { ToolOutput } from './ai/tool-types';
89
103
  export { ChartBlockRenderer } from './charts/worksheet/ChartBlockRenderer';
90
- export { useDataTable } from './hooks/useDataTable';
104
+ export { MosaicCodeMirrorEditor } from './editor/MosaicCodeMirrorEditor';
105
+ export { useMosaicEditorContext } from './editor/MosaicEditorContext';
106
+ export { getCachedMosaicSchema, loadMosaicSchema, preloadMosaicSchema, } from './editor/mosaicSchema';
107
+ export { useMosaicChartEditor } from './editor/useMosaicChartEditor';
108
+ export type { MosaicChartContainerProps } from './editor/MosaicChartContainer';
109
+ export type { MosaicChartDisplayProps } from './editor/MosaicChartDisplay';
110
+ export type { MosaicChartEditorActionsProps } from './editor/MosaicChartEditorActions';
111
+ export type { MosaicCodeMirrorEditorProps } from './editor/MosaicCodeMirrorEditor';
112
+ export type { MosaicSpecEditorPanelProps } from './editor/MosaicSpecEditorPanel';
113
+ export type { MosaicEditorActions, MosaicEditorContextValue, MosaicEditorState, OnMosaicSpecChange, UseMosaicChartEditorOptions, UseMosaicChartEditorReturn, } from './editor/types';
114
+ export { getTableReference } from './utils/table-lookup';
91
115
  //# sourceMappingURL=index.d.ts.map