@sqlrooms/mosaic 0.29.0-rc.6 → 0.29.0-rc.8

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 (1090) hide show
  1. package/LICENSE.md +2 -1
  2. package/README.md +182 -19
  3. package/dist/MosaicChart.d.ts +6 -6
  4. package/dist/MosaicChart.d.ts.map +1 -1
  5. package/dist/MosaicChart.js +6 -6
  6. package/dist/MosaicChart.js.map +1 -1
  7. package/dist/MosaicChartBuilder.d.ts +1 -1
  8. package/dist/MosaicChartBuilder.d.ts.map +1 -1
  9. package/dist/MosaicChartBuilder.js +1 -1
  10. package/dist/MosaicChartBuilder.js.map +1 -1
  11. package/dist/MosaicColorLegend.d.ts.map +1 -1
  12. package/dist/MosaicColorLegend.js +0 -1
  13. package/dist/MosaicColorLegend.js.map +1 -1
  14. package/dist/MosaicSlice.d.ts +1 -0
  15. package/dist/MosaicSlice.d.ts.map +1 -1
  16. package/dist/MosaicSlice.js.map +1 -1
  17. package/dist/VgPlotChart.d.ts.map +1 -1
  18. package/dist/VgPlotChart.js +15 -6
  19. package/dist/VgPlotChart.js.map +1 -1
  20. package/dist/ai/ai.d.ts +108 -0
  21. package/dist/ai/ai.d.ts.map +1 -0
  22. package/dist/ai/ai.js +461 -0
  23. package/dist/ai/ai.js.map +1 -0
  24. package/dist/ai/data-table-explorer-tool.d.ts +40 -0
  25. package/dist/ai/data-table-explorer-tool.d.ts.map +1 -0
  26. package/dist/ai/data-table-explorer-tool.js +75 -0
  27. package/dist/ai/data-table-explorer-tool.js.map +1 -0
  28. package/dist/ai/list-panels-tool.d.ts +35 -0
  29. package/dist/ai/list-panels-tool.d.ts.map +1 -0
  30. package/dist/ai/list-panels-tool.js.map +1 -0
  31. package/dist/ai/remove-panel-tool.d.ts +31 -0
  32. package/dist/ai/remove-panel-tool.d.ts.map +1 -0
  33. package/dist/ai/remove-panel-tool.js.map +1 -0
  34. package/dist/ai/tool-helpers.d.ts +34 -0
  35. package/dist/ai/tool-helpers.d.ts.map +1 -0
  36. package/dist/ai/tool-helpers.js +93 -0
  37. package/dist/ai/tool-helpers.js.map +1 -0
  38. package/dist/ai/tool-schemas.d.ts.map +1 -0
  39. package/dist/ai/tool-schemas.js.map +1 -0
  40. package/dist/ai/tool-types.d.ts +26 -0
  41. package/dist/ai/tool-types.d.ts.map +1 -0
  42. package/dist/ai/tool-types.js.map +1 -0
  43. package/dist/ai/tool-validation.d.ts +3 -0
  44. package/dist/ai/tool-validation.d.ts.map +1 -0
  45. package/dist/ai/tool-validation.js.map +1 -0
  46. package/dist/ai.d.ts +2 -99
  47. package/dist/ai.d.ts.map +1 -1
  48. package/dist/ai.js +2 -441
  49. package/dist/ai.js.map +1 -1
  50. package/dist/chart-builders/ChartBuilderActions.js.map +1 -1
  51. package/dist/chart-builders/ChartBuilderContent.d.ts +2 -2
  52. package/dist/chart-builders/ChartBuilderContent.d.ts.map +1 -1
  53. package/dist/chart-builders/ChartBuilderContent.js.map +1 -1
  54. package/dist/chart-builders/ChartBuilderContext.d.ts +2 -2
  55. package/dist/chart-builders/ChartBuilderContext.d.ts.map +1 -1
  56. package/dist/chart-builders/ChartBuilderContext.js.map +1 -1
  57. package/dist/chart-builders/ChartBuilderDialog.d.ts +2 -2
  58. package/dist/chart-builders/ChartBuilderDialog.d.ts.map +1 -1
  59. package/dist/chart-builders/ChartBuilderDialog.js.map +1 -1
  60. package/dist/chart-builders/ChartBuilderFields.js +2 -2
  61. package/dist/chart-builders/ChartBuilderFields.js.map +1 -1
  62. package/dist/chart-builders/ChartBuilderRoot.d.ts +2 -2
  63. package/dist/chart-builders/ChartBuilderRoot.d.ts.map +1 -1
  64. package/dist/chart-builders/ChartBuilderRoot.js.map +1 -1
  65. package/dist/chart-builders/chartSpecTitle.d.ts +1 -1
  66. package/dist/chart-builders/chartSpecTitle.d.ts.map +1 -1
  67. package/dist/chart-builders/chartSpecTitle.js.map +1 -1
  68. package/dist/chart-builders/chartTypeUtils.d.ts +1 -2
  69. package/dist/chart-builders/chartTypeUtils.d.ts.map +1 -1
  70. package/dist/chart-builders/chartTypeUtils.js +0 -1
  71. package/dist/chart-builders/chartTypeUtils.js.map +1 -1
  72. package/dist/chart-builders/createChartBuilderStore.d.ts +1 -1
  73. package/dist/chart-builders/createChartBuilderStore.d.ts.map +1 -1
  74. package/dist/chart-builders/createChartBuilderStore.js.map +1 -1
  75. package/dist/charts/MosaicChart.d.ts +14 -0
  76. package/dist/charts/MosaicChart.d.ts.map +1 -0
  77. package/dist/charts/MosaicChart.js +13 -0
  78. package/dist/charts/MosaicChart.js.map +1 -0
  79. package/dist/charts/MosaicChartError.d.ts +14 -0
  80. package/dist/charts/MosaicChartError.d.ts.map +1 -0
  81. package/dist/charts/MosaicChartError.js +31 -0
  82. package/dist/charts/MosaicChartError.js.map +1 -0
  83. package/dist/charts/MosaicChartRuntimeIssuePanel.d.ts +7 -0
  84. package/dist/charts/MosaicChartRuntimeIssuePanel.d.ts.map +1 -0
  85. package/dist/charts/MosaicChartRuntimeIssuePanel.js +10 -0
  86. package/dist/charts/MosaicChartRuntimeIssuePanel.js.map +1 -0
  87. package/dist/charts/MosaicChartSettingsButton.d.ts +15 -0
  88. package/dist/charts/MosaicChartSettingsButton.d.ts.map +1 -0
  89. package/dist/charts/MosaicChartSettingsButton.js +7 -0
  90. package/dist/charts/MosaicChartSettingsButton.js.map +1 -0
  91. package/dist/charts/MosaicChartSettingsPanel.d.ts +11 -0
  92. package/dist/charts/MosaicChartSettingsPanel.d.ts.map +1 -0
  93. package/dist/charts/MosaicChartSettingsPanel.js +21 -0
  94. package/dist/charts/MosaicChartSettingsPanel.js.map +1 -0
  95. package/dist/charts/MosaicChartView.d.ts +15 -0
  96. package/dist/charts/MosaicChartView.d.ts.map +1 -0
  97. package/dist/charts/MosaicChartView.js +69 -0
  98. package/dist/charts/MosaicChartView.js.map +1 -0
  99. package/dist/charts/addChartPanelAction.d.ts.map +1 -0
  100. package/dist/charts/addChartPanelAction.js.map +1 -0
  101. package/dist/charts/chart-settings/MosaicChartSettings.d.ts +43 -0
  102. package/dist/charts/chart-settings/MosaicChartSettings.d.ts.map +1 -0
  103. package/dist/charts/chart-settings/MosaicChartSettings.js +74 -0
  104. package/dist/charts/chart-settings/MosaicChartSettings.js.map +1 -0
  105. package/dist/charts/chart-settings/MosaicChartSettingsContent.d.ts +13 -0
  106. package/dist/charts/chart-settings/MosaicChartSettingsContent.d.ts.map +1 -0
  107. package/dist/charts/chart-settings/MosaicChartSettingsContent.js +18 -0
  108. package/dist/charts/chart-settings/MosaicChartSettingsContent.js.map +1 -0
  109. package/dist/charts/chart-settings/MosaicChartSettingsContext.d.ts +24 -0
  110. package/dist/charts/chart-settings/MosaicChartSettingsContext.d.ts.map +1 -0
  111. package/dist/charts/chart-settings/MosaicChartSettingsContext.js +34 -0
  112. package/dist/charts/chart-settings/MosaicChartSettingsContext.js.map +1 -0
  113. package/dist/charts/chart-settings/MosaicChartSettingsPanel.d.ts +14 -0
  114. package/dist/charts/chart-settings/MosaicChartSettingsPanel.d.ts.map +1 -0
  115. package/dist/charts/chart-settings/MosaicChartSettingsPanel.js +17 -0
  116. package/dist/charts/chart-settings/MosaicChartSettingsPanel.js.map +1 -0
  117. package/dist/charts/chart-settings/MosaicChartSpecViewerPanel.d.ts +9 -0
  118. package/dist/charts/chart-settings/MosaicChartSpecViewerPanel.d.ts.map +1 -0
  119. package/dist/charts/chart-settings/MosaicChartSpecViewerPanel.js +11 -0
  120. package/dist/charts/chart-settings/MosaicChartSpecViewerPanel.js.map +1 -0
  121. package/dist/charts/chart-settings/MosaicChartTypeSelector.d.ts +9 -0
  122. package/dist/charts/chart-settings/MosaicChartTypeSelector.d.ts.map +1 -0
  123. package/dist/charts/chart-settings/MosaicChartTypeSelector.js +23 -0
  124. package/dist/charts/chart-settings/MosaicChartTypeSelector.js.map +1 -0
  125. package/dist/charts/chart-types/base-types.d.ts +179 -0
  126. package/dist/charts/chart-types/base-types.d.ts.map +1 -0
  127. package/dist/charts/chart-types/base-types.js +14 -0
  128. package/dist/charts/chart-types/base-types.js.map +1 -0
  129. package/dist/charts/chart-types/box-plot/BoxPlotSettings.d.ts.map +1 -0
  130. package/dist/charts/chart-types/box-plot/BoxPlotSettings.js +9 -0
  131. package/dist/charts/chart-types/box-plot/BoxPlotSettings.js.map +1 -0
  132. package/dist/charts/chart-types/box-plot/definition.d.ts.map +1 -0
  133. package/dist/charts/chart-types/box-plot/definition.js +24 -0
  134. package/dist/charts/chart-types/box-plot/definition.js.map +1 -0
  135. package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.d.ts +67 -0
  136. package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.d.ts.map +1 -0
  137. package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.js +281 -0
  138. package/dist/charts/chart-types/box-plot/renderer/BoxPlotClient.js.map +1 -0
  139. package/dist/charts/chart-types/box-plot/renderer/BoxPlotErrorBoundary.d.ts.map +1 -0
  140. package/dist/charts/chart-types/box-plot/renderer/BoxPlotErrorBoundary.js.map +1 -0
  141. package/dist/charts/chart-types/box-plot/renderer/BoxPlotPanelRenderer.d.ts.map +1 -0
  142. package/dist/charts/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js +118 -0
  143. package/dist/charts/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js.map +1 -0
  144. package/dist/charts/chart-types/box-plot/renderer/constants.d.ts +24 -0
  145. package/dist/charts/chart-types/box-plot/renderer/constants.d.ts.map +1 -0
  146. package/dist/charts/chart-types/box-plot/renderer/constants.js.map +1 -0
  147. package/dist/charts/chart-types/box-plot/renderer/plot.d.ts +14 -0
  148. package/dist/charts/chart-types/box-plot/renderer/plot.d.ts.map +1 -0
  149. package/dist/charts/chart-types/box-plot/renderer/plot.js.map +1 -0
  150. package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.d.ts +18 -0
  151. package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.d.ts.map +1 -0
  152. package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.js +63 -0
  153. package/dist/charts/chart-types/box-plot/renderer/useBoxPlotClient.js.map +1 -0
  154. package/dist/charts/chart-types/box-plot/renderer/utils.d.ts +6 -0
  155. package/dist/charts/chart-types/box-plot/renderer/utils.d.ts.map +1 -0
  156. package/dist/charts/chart-types/box-plot/renderer/utils.js.map +1 -0
  157. package/dist/charts/chart-types/box-plot/schema.d.ts +21 -0
  158. package/dist/charts/chart-types/box-plot/schema.d.ts.map +1 -0
  159. package/dist/charts/chart-types/box-plot/schema.js +16 -0
  160. package/dist/charts/chart-types/box-plot/schema.js.map +1 -0
  161. package/dist/charts/chart-types/box-plot/tool.d.ts +40 -0
  162. package/dist/charts/chart-types/box-plot/tool.d.ts.map +1 -0
  163. package/dist/charts/chart-types/box-plot/tool.js +67 -0
  164. package/dist/charts/chart-types/box-plot/tool.js.map +1 -0
  165. package/dist/charts/chart-types/chart-config.d.ts +140 -0
  166. package/dist/charts/chart-types/chart-config.d.ts.map +1 -0
  167. package/dist/charts/chart-types/chart-config.js +41 -0
  168. package/dist/charts/chart-types/chart-config.js.map +1 -0
  169. package/dist/charts/chart-types/count-plot/CountPlotSettings.d.ts.map +1 -0
  170. package/dist/charts/chart-types/count-plot/CountPlotSettings.js +9 -0
  171. package/dist/charts/chart-types/count-plot/CountPlotSettings.js.map +1 -0
  172. package/dist/charts/chart-types/count-plot/definition.d.ts.map +1 -0
  173. package/dist/charts/chart-types/count-plot/definition.js +19 -0
  174. package/dist/charts/chart-types/count-plot/definition.js.map +1 -0
  175. package/dist/charts/chart-types/count-plot/schema.d.ts.map +1 -0
  176. package/dist/charts/chart-types/count-plot/schema.js.map +1 -0
  177. package/dist/charts/chart-types/count-plot/spec.d.ts +5 -0
  178. package/dist/charts/chart-types/count-plot/spec.d.ts.map +1 -0
  179. package/dist/charts/chart-types/count-plot/spec.js +80 -0
  180. package/dist/charts/chart-types/count-plot/spec.js.map +1 -0
  181. package/dist/charts/chart-types/count-plot/tool.d.ts.map +1 -0
  182. package/dist/charts/chart-types/count-plot/tool.js +63 -0
  183. package/dist/charts/chart-types/count-plot/tool.js.map +1 -0
  184. package/dist/charts/chart-types/createChartTools.d.ts +17 -0
  185. package/dist/charts/chart-types/createChartTools.d.ts.map +1 -0
  186. package/dist/charts/chart-types/createChartTools.js +24 -0
  187. package/dist/charts/chart-types/createChartTools.js.map +1 -0
  188. package/dist/charts/chart-types/createDefaultChartTypes.d.ts +12 -0
  189. package/dist/charts/chart-types/createDefaultChartTypes.d.ts.map +1 -0
  190. package/dist/charts/chart-types/createDefaultChartTypes.js +30 -0
  191. package/dist/charts/chart-types/createDefaultChartTypes.js.map +1 -0
  192. package/dist/charts/chart-types/custom-spec/CustomSpecSettings.d.ts.map +1 -0
  193. package/dist/charts/chart-types/custom-spec/CustomSpecSettings.js +30 -0
  194. package/dist/charts/chart-types/custom-spec/CustomSpecSettings.js.map +1 -0
  195. package/dist/charts/chart-types/custom-spec/definition.d.ts.map +1 -0
  196. package/dist/charts/chart-types/custom-spec/definition.js +22 -0
  197. package/dist/charts/chart-types/custom-spec/definition.js.map +1 -0
  198. package/dist/charts/chart-types/custom-spec/schema.d.ts.map +1 -0
  199. package/dist/charts/chart-types/custom-spec/schema.js.map +1 -0
  200. package/dist/charts/chart-types/custom-spec/spec.d.ts +5 -0
  201. package/dist/charts/chart-types/custom-spec/spec.d.ts.map +1 -0
  202. package/dist/charts/chart-types/custom-spec/spec.js +28 -0
  203. package/dist/charts/chart-types/custom-spec/spec.js.map +1 -0
  204. package/dist/charts/chart-types/data-policy-schema.d.ts.map +1 -0
  205. package/dist/charts/chart-types/data-policy-schema.js.map +1 -0
  206. package/dist/charts/chart-types/errors.d.ts +32 -0
  207. package/dist/charts/chart-types/errors.d.ts.map +1 -0
  208. package/dist/charts/chart-types/errors.js +48 -0
  209. package/dist/charts/chart-types/errors.js.map +1 -0
  210. package/dist/charts/chart-types/heatmap/HeatmapSettings.d.ts.map +1 -0
  211. package/dist/charts/chart-types/heatmap/HeatmapSettings.js +9 -0
  212. package/dist/charts/chart-types/heatmap/HeatmapSettings.js.map +1 -0
  213. package/dist/charts/chart-types/heatmap/definition.d.ts.map +1 -0
  214. package/dist/charts/chart-types/heatmap/definition.js +19 -0
  215. package/dist/charts/chart-types/heatmap/definition.js.map +1 -0
  216. package/dist/charts/chart-types/heatmap/schema.d.ts.map +1 -0
  217. package/dist/charts/chart-types/heatmap/schema.js.map +1 -0
  218. package/dist/charts/chart-types/heatmap/spec.d.ts +5 -0
  219. package/dist/charts/chart-types/heatmap/spec.d.ts.map +1 -0
  220. package/dist/charts/chart-types/heatmap/spec.js +64 -0
  221. package/dist/charts/chart-types/heatmap/spec.js.map +1 -0
  222. package/dist/charts/chart-types/heatmap/tool.d.ts.map +1 -0
  223. package/dist/charts/chart-types/heatmap/tool.js +67 -0
  224. package/dist/charts/chart-types/heatmap/tool.js.map +1 -0
  225. package/dist/charts/chart-types/histogram/HistogramSettings.d.ts.map +1 -0
  226. package/dist/charts/chart-types/histogram/HistogramSettings.js +13 -0
  227. package/dist/charts/chart-types/histogram/HistogramSettings.js.map +1 -0
  228. package/dist/charts/chart-types/histogram/definition.d.ts.map +1 -0
  229. package/dist/charts/chart-types/histogram/definition.js +19 -0
  230. package/dist/charts/chart-types/histogram/definition.js.map +1 -0
  231. package/dist/charts/chart-types/histogram/schema.d.ts +26 -0
  232. package/dist/charts/chart-types/histogram/schema.d.ts.map +1 -0
  233. package/dist/charts/chart-types/histogram/schema.js +27 -0
  234. package/dist/charts/chart-types/histogram/schema.js.map +1 -0
  235. package/dist/charts/chart-types/histogram/spec.d.ts +5 -0
  236. package/dist/charts/chart-types/histogram/spec.d.ts.map +1 -0
  237. package/dist/charts/chart-types/histogram/spec.js +60 -0
  238. package/dist/charts/chart-types/histogram/spec.js.map +1 -0
  239. package/dist/charts/chart-types/histogram/tool.d.ts +42 -0
  240. package/dist/charts/chart-types/histogram/tool.d.ts.map +1 -0
  241. package/dist/charts/chart-types/histogram/tool.js +65 -0
  242. package/dist/charts/chart-types/histogram/tool.js.map +1 -0
  243. package/dist/charts/chart-types/index.d.ts +42 -0
  244. package/dist/charts/chart-types/index.d.ts.map +1 -0
  245. package/dist/charts/chart-types/index.js +53 -0
  246. package/dist/charts/chart-types/index.js.map +1 -0
  247. package/dist/charts/chart-types/line-chart/LineChartSettings.d.ts.map +1 -0
  248. package/dist/charts/chart-types/line-chart/LineChartSettings.js +15 -0
  249. package/dist/charts/chart-types/line-chart/LineChartSettings.js.map +1 -0
  250. package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.d.ts +7 -0
  251. package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.d.ts.map +1 -0
  252. package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.js +22 -0
  253. package/dist/charts/chart-types/line-chart/LineChartXFieldSelector.js.map +1 -0
  254. package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.d.ts +7 -0
  255. package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.d.ts.map +1 -0
  256. package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.js +42 -0
  257. package/dist/charts/chart-types/line-chart/LineChartYFieldsSelector.js.map +1 -0
  258. package/dist/charts/chart-types/line-chart/definition.d.ts.map +1 -0
  259. package/dist/charts/chart-types/line-chart/definition.js +26 -0
  260. package/dist/charts/chart-types/line-chart/definition.js.map +1 -0
  261. package/dist/charts/chart-types/line-chart/schema.d.ts +72 -0
  262. package/dist/charts/chart-types/line-chart/schema.d.ts.map +1 -0
  263. package/dist/charts/chart-types/line-chart/schema.js +34 -0
  264. package/dist/charts/chart-types/line-chart/schema.js.map +1 -0
  265. package/dist/charts/chart-types/line-chart/spec.d.ts +5 -0
  266. package/dist/charts/chart-types/line-chart/spec.d.ts.map +1 -0
  267. package/dist/charts/chart-types/line-chart/spec.js +123 -0
  268. package/dist/charts/chart-types/line-chart/spec.js.map +1 -0
  269. package/dist/charts/chart-types/line-chart/tool.d.ts +66 -0
  270. package/dist/charts/chart-types/line-chart/tool.d.ts.map +1 -0
  271. package/dist/charts/chart-types/line-chart/tool.js +75 -0
  272. package/dist/charts/chart-types/line-chart/tool.js.map +1 -0
  273. package/dist/charts/chart-types/line-chart/utils.d.ts +7 -0
  274. package/dist/charts/chart-types/line-chart/utils.d.ts.map +1 -0
  275. package/dist/charts/chart-types/line-chart/utils.js +17 -0
  276. package/dist/charts/chart-types/line-chart/utils.js.map +1 -0
  277. package/dist/charts/chart-types/mosaicChartTypes.d.ts +103 -0
  278. package/dist/charts/chart-types/mosaicChartTypes.d.ts.map +1 -0
  279. package/dist/charts/chart-types/mosaicChartTypes.js +20 -0
  280. package/dist/charts/chart-types/mosaicChartTypes.js.map +1 -0
  281. package/dist/charts/chart-types/scatter-plot/ScatterPlotSettings.d.ts +3 -0
  282. package/dist/charts/chart-types/scatter-plot/ScatterPlotSettings.d.ts.map +1 -0
  283. package/dist/charts/chart-types/scatter-plot/ScatterPlotSettings.js +9 -0
  284. package/dist/charts/chart-types/scatter-plot/ScatterPlotSettings.js.map +1 -0
  285. package/dist/charts/chart-types/scatter-plot/definition.d.ts +4 -0
  286. package/dist/charts/chart-types/scatter-plot/definition.d.ts.map +1 -0
  287. package/dist/charts/chart-types/scatter-plot/definition.js +24 -0
  288. package/dist/charts/chart-types/scatter-plot/definition.js.map +1 -0
  289. package/dist/charts/chart-types/scatter-plot/schema.d.ts +23 -0
  290. package/dist/charts/chart-types/scatter-plot/schema.d.ts.map +1 -0
  291. package/dist/charts/chart-types/scatter-plot/schema.js +17 -0
  292. package/dist/charts/chart-types/scatter-plot/schema.js.map +1 -0
  293. package/dist/charts/chart-types/scatter-plot/spec.d.ts +5 -0
  294. package/dist/charts/chart-types/scatter-plot/spec.d.ts.map +1 -0
  295. package/dist/charts/chart-types/scatter-plot/spec.js +81 -0
  296. package/dist/charts/chart-types/scatter-plot/spec.js.map +1 -0
  297. package/dist/charts/chart-types/scatter-plot/tool.d.ts +42 -0
  298. package/dist/charts/chart-types/scatter-plot/tool.d.ts.map +1 -0
  299. package/dist/charts/chart-types/scatter-plot/tool.js +70 -0
  300. package/dist/charts/chart-types/scatter-plot/tool.js.map +1 -0
  301. package/dist/charts/dashboard/MosaicDashboardChartHeaderActions.d.ts +4 -0
  302. package/dist/charts/dashboard/MosaicDashboardChartHeaderActions.d.ts.map +1 -0
  303. package/dist/charts/dashboard/MosaicDashboardChartHeaderActions.js +23 -0
  304. package/dist/charts/dashboard/MosaicDashboardChartHeaderActions.js.map +1 -0
  305. package/dist/charts/dashboard/MosaicDashboardChartRenderer.d.ts +4 -0
  306. package/dist/charts/dashboard/MosaicDashboardChartRenderer.d.ts.map +1 -0
  307. package/dist/charts/dashboard/MosaicDashboardChartRenderer.js +23 -0
  308. package/dist/charts/dashboard/MosaicDashboardChartRenderer.js.map +1 -0
  309. package/dist/charts/useBrushSelectionParams.d.ts +3 -0
  310. package/dist/charts/useBrushSelectionParams.d.ts.map +1 -0
  311. package/dist/charts/useBrushSelectionParams.js +16 -0
  312. package/dist/charts/useBrushSelectionParams.js.map +1 -0
  313. package/dist/charts/useChartDataPolicy.d.ts +5 -0
  314. package/dist/charts/useChartDataPolicy.d.ts.map +1 -0
  315. package/dist/charts/useChartDataPolicy.js +18 -0
  316. package/dist/charts/useChartDataPolicy.js.map +1 -0
  317. package/dist/charts/useChartPanelClients.d.ts +8 -0
  318. package/dist/charts/useChartPanelClients.d.ts.map +1 -0
  319. package/dist/charts/useChartPanelClients.js +22 -0
  320. package/dist/charts/useChartPanelClients.js.map +1 -0
  321. package/dist/charts/useChartRetainer.d.ts +4 -0
  322. package/dist/charts/useChartRetainer.d.ts.map +1 -0
  323. package/dist/charts/useChartRetainer.js +18 -0
  324. package/dist/charts/useChartRetainer.js.map +1 -0
  325. package/dist/charts/useChartTypeDefinition.d.ts +3 -0
  326. package/dist/charts/useChartTypeDefinition.d.ts.map +1 -0
  327. package/dist/charts/useChartTypeDefinition.js.map +1 -0
  328. package/dist/charts/useMosaicChartRenderContext.d.ts +20 -0
  329. package/dist/charts/useMosaicChartRenderContext.d.ts.map +1 -0
  330. package/dist/charts/useMosaicChartRenderContext.js +63 -0
  331. package/dist/charts/useMosaicChartRenderContext.js.map +1 -0
  332. package/dist/charts/useParseChartConfig.d.ts +12 -0
  333. package/dist/charts/useParseChartConfig.d.ts.map +1 -0
  334. package/dist/charts/useParseChartConfig.js +28 -0
  335. package/dist/charts/useParseChartConfig.js.map +1 -0
  336. package/dist/charts/useRuntimeIssueReporter.d.ts +7 -0
  337. package/dist/charts/useRuntimeIssueReporter.d.ts.map +1 -0
  338. package/dist/charts/useRuntimeIssueReporter.js +19 -0
  339. package/dist/charts/useRuntimeIssueReporter.js.map +1 -0
  340. package/dist/charts/worksheet/ChartBlockHeader.d.ts +15 -0
  341. package/dist/charts/worksheet/ChartBlockHeader.d.ts.map +1 -0
  342. package/dist/charts/worksheet/ChartBlockHeader.js +10 -0
  343. package/dist/charts/worksheet/ChartBlockHeader.js.map +1 -0
  344. package/dist/charts/worksheet/ChartBlockRenderer.d.ts +4 -0
  345. package/dist/charts/worksheet/ChartBlockRenderer.d.ts.map +1 -0
  346. package/dist/charts/worksheet/ChartBlockRenderer.js +37 -0
  347. package/dist/charts/worksheet/ChartBlockRenderer.js.map +1 -0
  348. package/dist/charts/worksheet/ChartSelectorEmptyState.d.ts +15 -0
  349. package/dist/charts/worksheet/ChartSelectorEmptyState.d.ts.map +1 -0
  350. package/dist/charts/worksheet/ChartSelectorEmptyState.js +10 -0
  351. package/dist/charts/worksheet/ChartSelectorEmptyState.js.map +1 -0
  352. package/dist/column-types-utils.d.ts +12 -0
  353. package/dist/column-types-utils.d.ts.map +1 -0
  354. package/dist/column-types-utils.js +55 -0
  355. package/dist/column-types-utils.js.map +1 -0
  356. package/dist/components/AggregationSelector.d.ts +11 -0
  357. package/dist/components/AggregationSelector.d.ts.map +1 -0
  358. package/dist/components/AggregationSelector.js +16 -0
  359. package/dist/components/AggregationSelector.js.map +1 -0
  360. package/dist/components/BlockCaptionEditor.d.ts +20 -0
  361. package/dist/components/BlockCaptionEditor.d.ts.map +1 -0
  362. package/dist/components/BlockCaptionEditor.js +15 -0
  363. package/dist/components/BlockCaptionEditor.js.map +1 -0
  364. package/dist/components/ColorSelector.d.ts +12 -0
  365. package/dist/components/ColorSelector.d.ts.map +1 -0
  366. package/dist/components/ColorSelector.js +14 -0
  367. package/dist/components/ColorSelector.js.map +1 -0
  368. package/dist/components/ColumnSelector.d.ts +14 -0
  369. package/dist/components/ColumnSelector.d.ts.map +1 -0
  370. package/dist/components/ColumnSelector.js +30 -0
  371. package/dist/components/ColumnSelector.js.map +1 -0
  372. package/dist/components/ColumnsContext.d.ts +11 -0
  373. package/dist/components/ColumnsContext.d.ts.map +1 -0
  374. package/dist/components/ColumnsContext.js +15 -0
  375. package/dist/components/ColumnsContext.js.map +1 -0
  376. package/dist/components/Combobox.d.ts +45 -0
  377. package/dist/components/Combobox.d.ts.map +1 -0
  378. package/dist/components/Combobox.js +58 -0
  379. package/dist/components/Combobox.js.map +1 -0
  380. package/dist/components/DataTableSelector.d.ts +22 -0
  381. package/dist/components/DataTableSelector.d.ts.map +1 -0
  382. package/dist/components/DataTableSelector.js +66 -0
  383. package/dist/components/DataTableSelector.js.map +1 -0
  384. package/dist/components/Field.d.ts.map +1 -0
  385. package/dist/components/Field.js.map +1 -0
  386. package/dist/components/FieldSelectorInput.d.ts +15 -0
  387. package/dist/components/FieldSelectorInput.d.ts.map +1 -0
  388. package/dist/components/FieldSelectorInput.js +14 -0
  389. package/dist/components/FieldSelectorInput.js.map +1 -0
  390. package/dist/components/MultiFieldSelector.d.ts +17 -0
  391. package/dist/components/MultiFieldSelector.d.ts.map +1 -0
  392. package/dist/components/MultiFieldSelector.js +44 -0
  393. package/dist/components/MultiFieldSelector.js.map +1 -0
  394. package/dist/components/TableSelector.d.ts.map +1 -0
  395. package/dist/components/TableSelector.js +23 -0
  396. package/dist/components/TableSelector.js.map +1 -0
  397. package/dist/components/TemporalGranularitySelector.d.ts +10 -0
  398. package/dist/components/TemporalGranularitySelector.d.ts.map +1 -0
  399. package/dist/components/TemporalGranularitySelector.js +41 -0
  400. package/dist/components/TemporalGranularitySelector.js.map +1 -0
  401. package/dist/components/useCombobox.d.ts +23 -0
  402. package/dist/components/useCombobox.d.ts.map +1 -0
  403. package/dist/components/useCombobox.js +26 -0
  404. package/dist/components/useCombobox.js.map +1 -0
  405. package/dist/constants/chart-colors.d.ts +3 -0
  406. package/dist/constants/chart-colors.d.ts.map +1 -0
  407. package/dist/constants/chart-colors.js +5 -0
  408. package/dist/constants/chart-colors.js.map +1 -0
  409. package/dist/dashboard/DefaultMosaicDashboardBlock.d.ts +5 -0
  410. package/dist/dashboard/DefaultMosaicDashboardBlock.d.ts.map +1 -0
  411. package/dist/dashboard/DefaultMosaicDashboardBlock.js +6 -0
  412. package/dist/dashboard/DefaultMosaicDashboardBlock.js.map +1 -0
  413. package/dist/dashboard/MosaicDashboard.d.ts +2 -5
  414. package/dist/dashboard/MosaicDashboard.d.ts.map +1 -1
  415. package/dist/dashboard/MosaicDashboard.js +4 -6
  416. package/dist/dashboard/MosaicDashboard.js.map +1 -1
  417. package/dist/dashboard/MosaicDashboardContext.d.ts +0 -2
  418. package/dist/dashboard/MosaicDashboardContext.d.ts.map +1 -1
  419. package/dist/dashboard/MosaicDashboardContext.js.map +1 -1
  420. package/dist/dashboard/MosaicDashboardSlice.d.ts +52 -79
  421. package/dist/dashboard/MosaicDashboardSlice.d.ts.map +1 -1
  422. package/dist/dashboard/MosaicDashboardSlice.js +102 -52
  423. package/dist/dashboard/MosaicDashboardSlice.js.map +1 -1
  424. package/dist/dashboard/action-types.d.ts +1 -1
  425. package/dist/dashboard/action-types.d.ts.map +1 -1
  426. package/dist/dashboard/action-types.js.map +1 -1
  427. package/dist/dashboard/components/ResetFiltersButton.d.ts +14 -0
  428. package/dist/dashboard/components/ResetFiltersButton.d.ts.map +1 -0
  429. package/dist/dashboard/components/ResetFiltersButton.js +15 -0
  430. package/dist/dashboard/components/ResetFiltersButton.js.map +1 -0
  431. package/dist/dashboard/core-types.d.ts +2 -8
  432. package/dist/dashboard/core-types.d.ts.map +1 -1
  433. package/dist/dashboard/core-types.js +2 -8
  434. package/dist/dashboard/core-types.js.map +1 -1
  435. package/dist/dashboard/createDefaultMosaicDashboardPanelRenderers.d.ts +3 -0
  436. package/dist/dashboard/createDefaultMosaicDashboardPanelRenderers.d.ts.map +1 -0
  437. package/dist/dashboard/createDefaultMosaicDashboardPanelRenderers.js +11 -0
  438. package/dist/dashboard/createDefaultMosaicDashboardPanelRenderers.js.map +1 -0
  439. package/dist/dashboard/createMosaicDashboardBlockDefinition.d.ts +12 -0
  440. package/dist/dashboard/createMosaicDashboardBlockDefinition.d.ts.map +1 -0
  441. package/dist/dashboard/createMosaicDashboardBlockDefinition.js +32 -0
  442. package/dist/dashboard/createMosaicDashboardBlockDefinition.js.map +1 -0
  443. package/dist/dashboard/dashboard-types.d.ts +21 -57
  444. package/dist/dashboard/dashboard-types.d.ts.map +1 -1
  445. package/dist/dashboard/dashboard-types.js +7 -15
  446. package/dist/dashboard/dashboard-types.js.map +1 -1
  447. package/dist/dashboard/defaultPanelActions.d.ts.map +1 -1
  448. package/dist/dashboard/defaultPanelActions.js +3 -5
  449. package/dist/dashboard/defaultPanelActions.js.map +1 -1
  450. package/dist/dashboard/hooks/useDashboardResetFilters.d.ts +14 -0
  451. package/dist/dashboard/hooks/useDashboardResetFilters.d.ts.map +1 -0
  452. package/dist/dashboard/hooks/useDashboardResetFilters.js +39 -0
  453. package/dist/dashboard/hooks/useDashboardResetFilters.js.map +1 -0
  454. package/dist/dashboard/hooks/usePanelResetFilters.d.ts +16 -0
  455. package/dist/dashboard/hooks/usePanelResetFilters.d.ts.map +1 -0
  456. package/dist/dashboard/hooks/usePanelResetFilters.js +47 -0
  457. package/dist/dashboard/hooks/usePanelResetFilters.js.map +1 -0
  458. package/dist/dashboard/panel/MosaicDashboardPanel.d.ts.map +1 -0
  459. package/dist/dashboard/panel/MosaicDashboardPanel.js +23 -0
  460. package/dist/dashboard/panel/MosaicDashboardPanel.js.map +1 -0
  461. package/dist/dashboard/panel/MosaicDashboardPanelDragOverlay.d.ts.map +1 -0
  462. package/dist/dashboard/panel/MosaicDashboardPanelDragOverlay.js +17 -0
  463. package/dist/dashboard/panel/MosaicDashboardPanelDragOverlay.js.map +1 -0
  464. package/dist/dashboard/panel/MosaicDashboardPanelErrorBoundary.d.ts +17 -0
  465. package/dist/dashboard/panel/MosaicDashboardPanelErrorBoundary.d.ts.map +1 -0
  466. package/dist/dashboard/panel/MosaicDashboardPanelErrorBoundary.js +21 -0
  467. package/dist/dashboard/panel/MosaicDashboardPanelErrorBoundary.js.map +1 -0
  468. package/dist/dashboard/panel/MosaicDashboardPanelHeader.d.ts +13 -0
  469. package/dist/dashboard/panel/MosaicDashboardPanelHeader.d.ts.map +1 -0
  470. package/dist/dashboard/panel/MosaicDashboardPanelHeader.js +30 -0
  471. package/dist/dashboard/panel/MosaicDashboardPanelHeader.js.map +1 -0
  472. package/dist/dashboard/panel/MosaicDashboardPanelLayout.d.ts.map +1 -0
  473. package/dist/dashboard/panel/MosaicDashboardPanelLayout.js.map +1 -0
  474. package/dist/dashboard/panel/MosaicDashboardPanels.d.ts.map +1 -0
  475. package/dist/dashboard/panel/MosaicDashboardPanels.js +63 -0
  476. package/dist/dashboard/panel/MosaicDashboardPanels.js.map +1 -0
  477. package/dist/dashboard/toolbar/MosaicDashboardAddPanelDropdown.d.ts.map +1 -1
  478. package/dist/dashboard/toolbar/MosaicDashboardAddPanelDropdown.js +3 -3
  479. package/dist/dashboard/toolbar/MosaicDashboardAddPanelDropdown.js.map +1 -1
  480. package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.d.ts +7 -0
  481. package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.d.ts.map +1 -0
  482. package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.js +18 -0
  483. package/dist/dashboard/toolbar/MosaicDashboardDataTableSelector.js.map +1 -0
  484. package/dist/dashboard/toolbar/MosaicDashboardResetFiltersButton.d.ts.map +1 -1
  485. package/dist/dashboard/toolbar/MosaicDashboardResetFiltersButton.js +4 -32
  486. package/dist/dashboard/toolbar/MosaicDashboardResetFiltersButton.js.map +1 -1
  487. package/dist/dashboard/toolbar/MosaicDashboardToolbar.d.ts +2 -2
  488. package/dist/dashboard/toolbar/MosaicDashboardToolbar.d.ts.map +1 -1
  489. package/dist/dashboard/toolbar/MosaicDashboardToolbar.js +15 -4
  490. package/dist/dashboard/toolbar/MosaicDashboardToolbar.js.map +1 -1
  491. package/dist/dashboard/useMosaicDashboardAddPanelActionContext.js +1 -1
  492. package/dist/dashboard/useMosaicDashboardAddPanelActionContext.js.map +1 -1
  493. package/dist/dashboard/usePanelClientRegistration.d.ts +7 -0
  494. package/dist/dashboard/usePanelClientRegistration.d.ts.map +1 -0
  495. package/dist/dashboard/usePanelClientRegistration.js +30 -0
  496. package/dist/dashboard/usePanelClientRegistration.js.map +1 -0
  497. package/dist/dashboard/usePanelClients.d.ts +7 -0
  498. package/dist/dashboard/usePanelClients.d.ts.map +1 -0
  499. package/dist/dashboard/usePanelClients.js +13 -0
  500. package/dist/dashboard/usePanelClients.js.map +1 -0
  501. package/dist/dashboard/useSelectedOrFirstTable.js +1 -1
  502. package/dist/dashboard/useSelectedOrFirstTable.js.map +1 -1
  503. package/dist/data-table-explorer/DataTableExplorer.d.ts +39 -0
  504. package/dist/data-table-explorer/DataTableExplorer.d.ts.map +1 -0
  505. package/dist/data-table-explorer/DataTableExplorer.js +67 -0
  506. package/dist/data-table-explorer/DataTableExplorer.js.map +1 -0
  507. package/dist/data-table-explorer/DataTableExplorerCategoryClient.d.ts +50 -0
  508. package/dist/data-table-explorer/DataTableExplorerCategoryClient.d.ts.map +1 -0
  509. package/dist/data-table-explorer/DataTableExplorerCategoryClient.js +122 -0
  510. package/dist/data-table-explorer/DataTableExplorerCategoryClient.js.map +1 -0
  511. package/dist/data-table-explorer/DataTableExplorerCountClient.d.ts +28 -0
  512. package/dist/data-table-explorer/DataTableExplorerCountClient.d.ts.map +1 -0
  513. package/dist/data-table-explorer/DataTableExplorerCountClient.js +51 -0
  514. package/dist/data-table-explorer/DataTableExplorerCountClient.js.map +1 -0
  515. package/dist/data-table-explorer/DataTableExplorerHeader.d.ts +7 -0
  516. package/dist/data-table-explorer/DataTableExplorerHeader.d.ts.map +1 -0
  517. package/dist/data-table-explorer/DataTableExplorerHeader.js +195 -0
  518. package/dist/data-table-explorer/DataTableExplorerHeader.js.map +1 -0
  519. package/dist/data-table-explorer/DataTableExplorerHistogramClient.d.ts +69 -0
  520. package/dist/data-table-explorer/DataTableExplorerHistogramClient.d.ts.map +1 -0
  521. package/dist/data-table-explorer/DataTableExplorerHistogramClient.js +179 -0
  522. package/dist/data-table-explorer/DataTableExplorerHistogramClient.js.map +1 -0
  523. package/dist/data-table-explorer/DataTableExplorerPageClient.d.ts +37 -0
  524. package/dist/data-table-explorer/DataTableExplorerPageClient.d.ts.map +1 -0
  525. package/dist/data-table-explorer/DataTableExplorerPageClient.js +65 -0
  526. package/dist/data-table-explorer/DataTableExplorerPageClient.js.map +1 -0
  527. package/dist/data-table-explorer/DataTableExplorerRows.d.ts +9 -0
  528. package/dist/data-table-explorer/DataTableExplorerRows.d.ts.map +1 -0
  529. package/dist/data-table-explorer/DataTableExplorerRows.js +65 -0
  530. package/dist/data-table-explorer/DataTableExplorerRows.js.map +1 -0
  531. package/dist/data-table-explorer/DataTableExplorerStatusBar.d.ts +9 -0
  532. package/dist/data-table-explorer/DataTableExplorerStatusBar.d.ts.map +1 -0
  533. package/dist/data-table-explorer/DataTableExplorerStatusBar.js +28 -0
  534. package/dist/data-table-explorer/DataTableExplorerStatusBar.js.map +1 -0
  535. package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.d.ts +24 -0
  536. package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.d.ts.map +1 -0
  537. package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.js +51 -0
  538. package/dist/data-table-explorer/DataTableExplorerUnsupportedSummaryClient.js.map +1 -0
  539. package/dist/data-table-explorer/addDataTableExplorerPanelAction.d.ts +3 -0
  540. package/dist/data-table-explorer/addDataTableExplorerPanelAction.d.ts.map +1 -0
  541. package/dist/data-table-explorer/addDataTableExplorerPanelAction.js +9 -0
  542. package/dist/data-table-explorer/addDataTableExplorerPanelAction.js.map +1 -0
  543. package/dist/data-table-explorer/createDataTableExplorerStore.d.ts +49 -0
  544. package/dist/data-table-explorer/createDataTableExplorerStore.d.ts.map +1 -0
  545. package/dist/data-table-explorer/createDataTableExplorerStore.js +132 -0
  546. package/dist/data-table-explorer/createDataTableExplorerStore.js.map +1 -0
  547. package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.d.ts +4 -0
  548. package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.d.ts.map +1 -0
  549. package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.js +13 -0
  550. package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerHeaderActions.js.map +1 -0
  551. package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.d.ts +4 -0
  552. package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.d.ts.map +1 -0
  553. package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.js +43 -0
  554. package/dist/data-table-explorer/dashboard/MosaicDashboardDataTableExplorerPanelRenderer.js.map +1 -0
  555. package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.d.ts +13 -0
  556. package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.d.ts.map +1 -0
  557. package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.js +32 -0
  558. package/dist/data-table-explorer/dashboard/useDataTableExplorerPanelClients.js.map +1 -0
  559. package/dist/data-table-explorer/dataTableExplorerController.d.ts +68 -0
  560. package/dist/data-table-explorer/dataTableExplorerController.d.ts.map +1 -0
  561. package/dist/data-table-explorer/dataTableExplorerController.js +130 -0
  562. package/dist/data-table-explorer/dataTableExplorerController.js.map +1 -0
  563. package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.d.ts +12 -0
  564. package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.d.ts.map +1 -0
  565. package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.js +19 -0
  566. package/dist/data-table-explorer/hooks/useDataTableExplorerColumns.js.map +1 -0
  567. package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.d.ts +30 -0
  568. package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.d.ts.map +1 -0
  569. package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.js +120 -0
  570. package/dist/data-table-explorer/hooks/useDataTableExplorerLifecycles.js.map +1 -0
  571. package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.d.ts +28 -0
  572. package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.d.ts.map +1 -0
  573. package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.js +40 -0
  574. package/dist/data-table-explorer/hooks/useDataTableExplorerQueryState.js.map +1 -0
  575. package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.d.ts +13 -0
  576. package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.d.ts.map +1 -0
  577. package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.js +40 -0
  578. package/dist/data-table-explorer/hooks/useDataTableExplorerSelection.js.map +1 -0
  579. package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.d.ts +18 -0
  580. package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.d.ts.map +1 -0
  581. package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.js +23 -0
  582. package/dist/data-table-explorer/hooks/useDataTableExplorerStatus.js.map +1 -0
  583. package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.d.ts +27 -0
  584. package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.d.ts.map +1 -0
  585. package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.js +28 -0
  586. package/dist/data-table-explorer/hooks/useDataTableExplorerStoreState.js.map +1 -0
  587. package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.d.ts +15 -0
  588. package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.d.ts.map +1 -0
  589. package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.js +21 -0
  590. package/dist/data-table-explorer/hooks/useDataTableExplorerVisiblePage.js.map +1 -0
  591. package/dist/data-table-explorer/layout.d.ts +11 -0
  592. package/dist/data-table-explorer/layout.d.ts.map +1 -0
  593. package/dist/data-table-explorer/layout.js +23 -0
  594. package/dist/data-table-explorer/layout.js.map +1 -0
  595. package/dist/data-table-explorer/types.d.ts +90 -0
  596. package/dist/data-table-explorer/types.d.ts.map +1 -0
  597. package/dist/data-table-explorer/types.js.map +1 -0
  598. package/dist/data-table-explorer/useDataTableExplorer.d.ts +7 -0
  599. package/dist/data-table-explorer/useDataTableExplorer.d.ts.map +1 -0
  600. package/dist/data-table-explorer/useDataTableExplorer.js +95 -0
  601. package/dist/data-table-explorer/useDataTableExplorer.js.map +1 -0
  602. package/dist/data-table-explorer/utils.d.ts +61 -0
  603. package/dist/data-table-explorer/utils.d.ts.map +1 -0
  604. package/dist/data-table-explorer/utils.js +349 -0
  605. package/dist/data-table-explorer/utils.js.map +1 -0
  606. package/dist/data-table-explorer/worksheet/DataTableBlockHeader.d.ts +12 -0
  607. package/dist/data-table-explorer/worksheet/DataTableBlockHeader.d.ts.map +1 -0
  608. package/dist/data-table-explorer/worksheet/DataTableBlockHeader.js +9 -0
  609. package/dist/data-table-explorer/worksheet/DataTableBlockHeader.js.map +1 -0
  610. package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.d.ts +4 -0
  611. package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.d.ts.map +1 -0
  612. package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.js +35 -0
  613. package/dist/data-table-explorer/worksheet/DataTableBlockRenderer.js.map +1 -0
  614. package/dist/editor/MosaicChartContainer.d.ts +4 -4
  615. package/dist/editor/MosaicChartContainer.js +4 -4
  616. package/dist/editor/MosaicChartContainer.js.map +1 -1
  617. package/dist/hooks/useTablesWithColumns.d.ts.map +1 -0
  618. package/dist/hooks/useTablesWithColumns.js +13 -0
  619. package/dist/hooks/useTablesWithColumns.js.map +1 -0
  620. package/dist/index.d.ts +46 -32
  621. package/dist/index.d.ts.map +1 -1
  622. package/dist/index.js +41 -27
  623. package/dist/index.js.map +1 -1
  624. package/dist/schemas/common.d.ts +20 -0
  625. package/dist/schemas/common.d.ts.map +1 -0
  626. package/dist/schemas/common.js +15 -0
  627. package/dist/schemas/common.js.map +1 -0
  628. package/dist/schemas/index.d.ts +2 -0
  629. package/dist/schemas/index.d.ts.map +1 -0
  630. package/dist/schemas/index.js +2 -0
  631. package/dist/schemas/index.js.map +1 -0
  632. package/dist/useVgPlotChartRender.d.ts.map +1 -1
  633. package/dist/useVgPlotChartRender.js +142 -31
  634. package/dist/useVgPlotChartRender.js.map +1 -1
  635. package/dist/useVgPlotChartRetention.d.ts +11 -0
  636. package/dist/useVgPlotChartRetention.d.ts.map +1 -1
  637. package/dist/useVgPlotChartRetention.js.map +1 -1
  638. package/package.json +14 -13
  639. package/dist/boxplot/BoxPlotClient.d.ts +0 -65
  640. package/dist/boxplot/BoxPlotClient.d.ts.map +0 -1
  641. package/dist/boxplot/BoxPlotClient.js +0 -286
  642. package/dist/boxplot/BoxPlotClient.js.map +0 -1
  643. package/dist/chart/ChartRuntimeIssuePanel.d.ts +0 -7
  644. package/dist/chart/ChartRuntimeIssuePanel.d.ts.map +0 -1
  645. package/dist/chart/ChartRuntimeIssuePanel.js +0 -10
  646. package/dist/chart/ChartRuntimeIssuePanel.js.map +0 -1
  647. package/dist/chart/MosaicDashboardChart.d.ts +0 -14
  648. package/dist/chart/MosaicDashboardChart.d.ts.map +0 -1
  649. package/dist/chart/MosaicDashboardChart.js +0 -21
  650. package/dist/chart/MosaicDashboardChart.js.map +0 -1
  651. package/dist/chart/MosaicDashboardChartContent.d.ts +0 -16
  652. package/dist/chart/MosaicDashboardChartContent.d.ts.map +0 -1
  653. package/dist/chart/MosaicDashboardChartContent.js +0 -45
  654. package/dist/chart/MosaicDashboardChartContent.js.map +0 -1
  655. package/dist/chart/MosaicDashboardChartHeaderActions.d.ts +0 -4
  656. package/dist/chart/MosaicDashboardChartHeaderActions.d.ts.map +0 -1
  657. package/dist/chart/MosaicDashboardChartHeaderActions.js +0 -16
  658. package/dist/chart/MosaicDashboardChartHeaderActions.js.map +0 -1
  659. package/dist/chart/MosaicDashboardChartRenderer.d.ts +0 -4
  660. package/dist/chart/MosaicDashboardChartRenderer.d.ts.map +0 -1
  661. package/dist/chart/MosaicDashboardChartRenderer.js +0 -31
  662. package/dist/chart/MosaicDashboardChartRenderer.js.map +0 -1
  663. package/dist/chart/MosaicDashboardComponentChart.d.ts +0 -18
  664. package/dist/chart/MosaicDashboardComponentChart.d.ts.map +0 -1
  665. package/dist/chart/MosaicDashboardComponentChart.js +0 -14
  666. package/dist/chart/MosaicDashboardComponentChart.js.map +0 -1
  667. package/dist/chart/MosaicDashboardVgPlotChart.d.ts +0 -14
  668. package/dist/chart/MosaicDashboardVgPlotChart.d.ts.map +0 -1
  669. package/dist/chart/MosaicDashboardVgPlotChart.js +0 -10
  670. package/dist/chart/MosaicDashboardVgPlotChart.js.map +0 -1
  671. package/dist/chart/MosaicDashboardVgPlotError.d.ts +0 -8
  672. package/dist/chart/MosaicDashboardVgPlotError.d.ts.map +0 -1
  673. package/dist/chart/MosaicDashboardVgPlotError.js +0 -11
  674. package/dist/chart/MosaicDashboardVgPlotError.js.map +0 -1
  675. package/dist/chart/addChartPanelAction.d.ts.map +0 -1
  676. package/dist/chart/addChartPanelAction.js.map +0 -1
  677. package/dist/chart/chart-settings/ChartSettings.d.ts +0 -44
  678. package/dist/chart/chart-settings/ChartSettings.d.ts.map +0 -1
  679. package/dist/chart/chart-settings/ChartSettings.js +0 -74
  680. package/dist/chart/chart-settings/ChartSettings.js.map +0 -1
  681. package/dist/chart/chart-settings/ChartSettingsContent.d.ts +0 -13
  682. package/dist/chart/chart-settings/ChartSettingsContent.d.ts.map +0 -1
  683. package/dist/chart/chart-settings/ChartSettingsContent.js +0 -18
  684. package/dist/chart/chart-settings/ChartSettingsContent.js.map +0 -1
  685. package/dist/chart/chart-settings/ChartSettingsContext.d.ts +0 -25
  686. package/dist/chart/chart-settings/ChartSettingsContext.d.ts.map +0 -1
  687. package/dist/chart/chart-settings/ChartSettingsContext.js +0 -34
  688. package/dist/chart/chart-settings/ChartSettingsContext.js.map +0 -1
  689. package/dist/chart/chart-settings/ChartSettingsPanel.d.ts +0 -14
  690. package/dist/chart/chart-settings/ChartSettingsPanel.d.ts.map +0 -1
  691. package/dist/chart/chart-settings/ChartSettingsPanel.js +0 -17
  692. package/dist/chart/chart-settings/ChartSettingsPanel.js.map +0 -1
  693. package/dist/chart/chart-settings/ChartSpecViewerPanel.d.ts +0 -9
  694. package/dist/chart/chart-settings/ChartSpecViewerPanel.d.ts.map +0 -1
  695. package/dist/chart/chart-settings/ChartSpecViewerPanel.js +0 -11
  696. package/dist/chart/chart-settings/ChartSpecViewerPanel.js.map +0 -1
  697. package/dist/chart/chart-settings/ChartTypeSelector.d.ts +0 -9
  698. package/dist/chart/chart-settings/ChartTypeSelector.d.ts.map +0 -1
  699. package/dist/chart/chart-settings/ChartTypeSelector.js +0 -16
  700. package/dist/chart/chart-settings/ChartTypeSelector.js.map +0 -1
  701. package/dist/chart/chart-settings/useTableColumns.d.ts +0 -3
  702. package/dist/chart/chart-settings/useTableColumns.d.ts.map +0 -1
  703. package/dist/chart/chart-settings/useTableColumns.js +0 -12
  704. package/dist/chart/chart-settings/useTableColumns.js.map +0 -1
  705. package/dist/chart/useBrushSelectionParams.d.ts +0 -3
  706. package/dist/chart/useBrushSelectionParams.d.ts.map +0 -1
  707. package/dist/chart/useBrushSelectionParams.js +0 -16
  708. package/dist/chart/useBrushSelectionParams.js.map +0 -1
  709. package/dist/chart/useChartRetainer.d.ts +0 -3
  710. package/dist/chart/useChartRetainer.d.ts.map +0 -1
  711. package/dist/chart/useChartRetainer.js +0 -11
  712. package/dist/chart/useChartRetainer.js.map +0 -1
  713. package/dist/chart/useGenerateSpec.d.ts +0 -13
  714. package/dist/chart/useGenerateSpec.d.ts.map +0 -1
  715. package/dist/chart/useGenerateSpec.js +0 -32
  716. package/dist/chart/useGenerateSpec.js.map +0 -1
  717. package/dist/chart-builders/AggregationSelector.d.ts +0 -11
  718. package/dist/chart-builders/AggregationSelector.d.ts.map +0 -1
  719. package/dist/chart-builders/AggregationSelector.js +0 -9
  720. package/dist/chart-builders/AggregationSelector.js.map +0 -1
  721. package/dist/chart-builders/ColumnSelector.d.ts +0 -13
  722. package/dist/chart-builders/ColumnSelector.d.ts.map +0 -1
  723. package/dist/chart-builders/ColumnSelector.js +0 -30
  724. package/dist/chart-builders/ColumnSelector.js.map +0 -1
  725. package/dist/chart-builders/ColumnsContext.d.ts +0 -13
  726. package/dist/chart-builders/ColumnsContext.d.ts.map +0 -1
  727. package/dist/chart-builders/ColumnsContext.js +0 -15
  728. package/dist/chart-builders/ColumnsContext.js.map +0 -1
  729. package/dist/chart-builders/Field.d.ts.map +0 -1
  730. package/dist/chart-builders/Field.js.map +0 -1
  731. package/dist/chart-builders/FieldSelectorInput.d.ts +0 -14
  732. package/dist/chart-builders/FieldSelectorInput.d.ts.map +0 -1
  733. package/dist/chart-builders/FieldSelectorInput.js +0 -19
  734. package/dist/chart-builders/FieldSelectorInput.js.map +0 -1
  735. package/dist/chart-builders/MultiFieldSelector.d.ts +0 -14
  736. package/dist/chart-builders/MultiFieldSelector.d.ts.map +0 -1
  737. package/dist/chart-builders/MultiFieldSelector.js +0 -53
  738. package/dist/chart-builders/MultiFieldSelector.js.map +0 -1
  739. package/dist/chart-builders/TableSelector.d.ts.map +0 -1
  740. package/dist/chart-builders/TableSelector.js +0 -23
  741. package/dist/chart-builders/TableSelector.js.map +0 -1
  742. package/dist/chart-builders/TemporalGranularitySelector.d.ts +0 -10
  743. package/dist/chart-builders/TemporalGranularitySelector.d.ts.map +0 -1
  744. package/dist/chart-builders/TemporalGranularitySelector.js +0 -37
  745. package/dist/chart-builders/TemporalGranularitySelector.js.map +0 -1
  746. package/dist/chart-builders/constants.d.ts +0 -12
  747. package/dist/chart-builders/constants.d.ts.map +0 -1
  748. package/dist/chart-builders/constants.js +0 -47
  749. package/dist/chart-builders/constants.js.map +0 -1
  750. package/dist/chart-types/base-types.d.ts +0 -168
  751. package/dist/chart-types/base-types.d.ts.map +0 -1
  752. package/dist/chart-types/base-types.js +0 -11
  753. package/dist/chart-types/base-types.js.map +0 -1
  754. package/dist/chart-types/box-plot/BoxPlotSettings.d.ts.map +0 -1
  755. package/dist/chart-types/box-plot/BoxPlotSettings.js +0 -9
  756. package/dist/chart-types/box-plot/BoxPlotSettings.js.map +0 -1
  757. package/dist/chart-types/box-plot/definition.d.ts.map +0 -1
  758. package/dist/chart-types/box-plot/definition.js +0 -24
  759. package/dist/chart-types/box-plot/definition.js.map +0 -1
  760. package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.d.ts.map +0 -1
  761. package/dist/chart-types/box-plot/renderer/BoxPlotErrorBoundary.js.map +0 -1
  762. package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.d.ts.map +0 -1
  763. package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js +0 -118
  764. package/dist/chart-types/box-plot/renderer/BoxPlotPanelRenderer.js.map +0 -1
  765. package/dist/chart-types/box-plot/renderer/constants.d.ts +0 -24
  766. package/dist/chart-types/box-plot/renderer/constants.d.ts.map +0 -1
  767. package/dist/chart-types/box-plot/renderer/constants.js.map +0 -1
  768. package/dist/chart-types/box-plot/renderer/plot.d.ts +0 -14
  769. package/dist/chart-types/box-plot/renderer/plot.d.ts.map +0 -1
  770. package/dist/chart-types/box-plot/renderer/plot.js.map +0 -1
  771. package/dist/chart-types/box-plot/renderer/useBoxPlotClient.d.ts +0 -18
  772. package/dist/chart-types/box-plot/renderer/useBoxPlotClient.d.ts.map +0 -1
  773. package/dist/chart-types/box-plot/renderer/useBoxPlotClient.js +0 -56
  774. package/dist/chart-types/box-plot/renderer/useBoxPlotClient.js.map +0 -1
  775. package/dist/chart-types/box-plot/renderer/utils.d.ts +0 -6
  776. package/dist/chart-types/box-plot/renderer/utils.d.ts.map +0 -1
  777. package/dist/chart-types/box-plot/renderer/utils.js.map +0 -1
  778. package/dist/chart-types/box-plot/schema.d.ts +0 -21
  779. package/dist/chart-types/box-plot/schema.d.ts.map +0 -1
  780. package/dist/chart-types/box-plot/schema.js +0 -13
  781. package/dist/chart-types/box-plot/schema.js.map +0 -1
  782. package/dist/chart-types/box-plot/tool.d.ts +0 -40
  783. package/dist/chart-types/box-plot/tool.d.ts.map +0 -1
  784. package/dist/chart-types/box-plot/tool.js +0 -67
  785. package/dist/chart-types/box-plot/tool.js.map +0 -1
  786. package/dist/chart-types/bubble-chart/BubbleChartSettings.d.ts +0 -3
  787. package/dist/chart-types/bubble-chart/BubbleChartSettings.d.ts.map +0 -1
  788. package/dist/chart-types/bubble-chart/BubbleChartSettings.js +0 -9
  789. package/dist/chart-types/bubble-chart/BubbleChartSettings.js.map +0 -1
  790. package/dist/chart-types/bubble-chart/definition.d.ts +0 -4
  791. package/dist/chart-types/bubble-chart/definition.d.ts.map +0 -1
  792. package/dist/chart-types/bubble-chart/definition.js +0 -24
  793. package/dist/chart-types/bubble-chart/definition.js.map +0 -1
  794. package/dist/chart-types/bubble-chart/schema.d.ts +0 -23
  795. package/dist/chart-types/bubble-chart/schema.d.ts.map +0 -1
  796. package/dist/chart-types/bubble-chart/schema.js +0 -17
  797. package/dist/chart-types/bubble-chart/schema.js.map +0 -1
  798. package/dist/chart-types/bubble-chart/spec.d.ts +0 -4
  799. package/dist/chart-types/bubble-chart/spec.d.ts.map +0 -1
  800. package/dist/chart-types/bubble-chart/spec.js +0 -31
  801. package/dist/chart-types/bubble-chart/spec.js.map +0 -1
  802. package/dist/chart-types/bubble-chart/tool.d.ts +0 -42
  803. package/dist/chart-types/bubble-chart/tool.d.ts.map +0 -1
  804. package/dist/chart-types/bubble-chart/tool.js +0 -66
  805. package/dist/chart-types/bubble-chart/tool.js.map +0 -1
  806. package/dist/chart-types/chart-config.d.ts +0 -138
  807. package/dist/chart-types/chart-config.d.ts.map +0 -1
  808. package/dist/chart-types/chart-config.js +0 -49
  809. package/dist/chart-types/chart-config.js.map +0 -1
  810. package/dist/chart-types/count-plot/CountPlotSettings.d.ts.map +0 -1
  811. package/dist/chart-types/count-plot/CountPlotSettings.js +0 -9
  812. package/dist/chart-types/count-plot/CountPlotSettings.js.map +0 -1
  813. package/dist/chart-types/count-plot/definition.d.ts.map +0 -1
  814. package/dist/chart-types/count-plot/definition.js +0 -19
  815. package/dist/chart-types/count-plot/definition.js.map +0 -1
  816. package/dist/chart-types/count-plot/schema.d.ts.map +0 -1
  817. package/dist/chart-types/count-plot/schema.js.map +0 -1
  818. package/dist/chart-types/count-plot/spec.d.ts +0 -4
  819. package/dist/chart-types/count-plot/spec.d.ts.map +0 -1
  820. package/dist/chart-types/count-plot/spec.js +0 -49
  821. package/dist/chart-types/count-plot/spec.js.map +0 -1
  822. package/dist/chart-types/count-plot/tool.d.ts.map +0 -1
  823. package/dist/chart-types/count-plot/tool.js +0 -63
  824. package/dist/chart-types/count-plot/tool.js.map +0 -1
  825. package/dist/chart-types/custom-spec/CustomSpecSettings.d.ts.map +0 -1
  826. package/dist/chart-types/custom-spec/CustomSpecSettings.js +0 -30
  827. package/dist/chart-types/custom-spec/CustomSpecSettings.js.map +0 -1
  828. package/dist/chart-types/custom-spec/definition.d.ts.map +0 -1
  829. package/dist/chart-types/custom-spec/definition.js +0 -22
  830. package/dist/chart-types/custom-spec/definition.js.map +0 -1
  831. package/dist/chart-types/custom-spec/schema.d.ts.map +0 -1
  832. package/dist/chart-types/custom-spec/schema.js.map +0 -1
  833. package/dist/chart-types/custom-spec/spec.d.ts +0 -4
  834. package/dist/chart-types/custom-spec/spec.d.ts.map +0 -1
  835. package/dist/chart-types/custom-spec/spec.js +0 -24
  836. package/dist/chart-types/custom-spec/spec.js.map +0 -1
  837. package/dist/chart-types/data-policy-schema.d.ts.map +0 -1
  838. package/dist/chart-types/data-policy-schema.js.map +0 -1
  839. package/dist/chart-types/errors.d.ts +0 -23
  840. package/dist/chart-types/errors.d.ts.map +0 -1
  841. package/dist/chart-types/errors.js +0 -26
  842. package/dist/chart-types/errors.js.map +0 -1
  843. package/dist/chart-types/heatmap/HeatmapSettings.d.ts.map +0 -1
  844. package/dist/chart-types/heatmap/HeatmapSettings.js +0 -9
  845. package/dist/chart-types/heatmap/HeatmapSettings.js.map +0 -1
  846. package/dist/chart-types/heatmap/definition.d.ts.map +0 -1
  847. package/dist/chart-types/heatmap/definition.js +0 -19
  848. package/dist/chart-types/heatmap/definition.js.map +0 -1
  849. package/dist/chart-types/heatmap/schema.d.ts.map +0 -1
  850. package/dist/chart-types/heatmap/schema.js.map +0 -1
  851. package/dist/chart-types/heatmap/spec.d.ts +0 -4
  852. package/dist/chart-types/heatmap/spec.d.ts.map +0 -1
  853. package/dist/chart-types/heatmap/spec.js +0 -32
  854. package/dist/chart-types/heatmap/spec.js.map +0 -1
  855. package/dist/chart-types/heatmap/tool.d.ts.map +0 -1
  856. package/dist/chart-types/heatmap/tool.js +0 -67
  857. package/dist/chart-types/heatmap/tool.js.map +0 -1
  858. package/dist/chart-types/histogram/HistogramSettings.d.ts.map +0 -1
  859. package/dist/chart-types/histogram/HistogramSettings.js +0 -11
  860. package/dist/chart-types/histogram/HistogramSettings.js.map +0 -1
  861. package/dist/chart-types/histogram/definition.d.ts.map +0 -1
  862. package/dist/chart-types/histogram/definition.js +0 -19
  863. package/dist/chart-types/histogram/definition.js.map +0 -1
  864. package/dist/chart-types/histogram/schema.d.ts +0 -24
  865. package/dist/chart-types/histogram/schema.d.ts.map +0 -1
  866. package/dist/chart-types/histogram/schema.js +0 -26
  867. package/dist/chart-types/histogram/schema.js.map +0 -1
  868. package/dist/chart-types/histogram/spec.d.ts +0 -4
  869. package/dist/chart-types/histogram/spec.d.ts.map +0 -1
  870. package/dist/chart-types/histogram/spec.js +0 -37
  871. package/dist/chart-types/histogram/spec.js.map +0 -1
  872. package/dist/chart-types/histogram/tool.d.ts +0 -40
  873. package/dist/chart-types/histogram/tool.d.ts.map +0 -1
  874. package/dist/chart-types/histogram/tool.js +0 -65
  875. package/dist/chart-types/histogram/tool.js.map +0 -1
  876. package/dist/chart-types/index.d.ts +0 -157
  877. package/dist/chart-types/index.d.ts.map +0 -1
  878. package/dist/chart-types/index.js +0 -106
  879. package/dist/chart-types/index.js.map +0 -1
  880. package/dist/chart-types/line-chart/LineChartSettings.d.ts.map +0 -1
  881. package/dist/chart-types/line-chart/LineChartSettings.js +0 -24
  882. package/dist/chart-types/line-chart/LineChartSettings.js.map +0 -1
  883. package/dist/chart-types/line-chart/definition.d.ts.map +0 -1
  884. package/dist/chart-types/line-chart/definition.js +0 -26
  885. package/dist/chart-types/line-chart/definition.js.map +0 -1
  886. package/dist/chart-types/line-chart/schema.d.ts +0 -88
  887. package/dist/chart-types/line-chart/schema.d.ts.map +0 -1
  888. package/dist/chart-types/line-chart/schema.js +0 -41
  889. package/dist/chart-types/line-chart/schema.js.map +0 -1
  890. package/dist/chart-types/line-chart/spec.d.ts +0 -4
  891. package/dist/chart-types/line-chart/spec.d.ts.map +0 -1
  892. package/dist/chart-types/line-chart/spec.js +0 -91
  893. package/dist/chart-types/line-chart/spec.js.map +0 -1
  894. package/dist/chart-types/line-chart/tool.d.ts +0 -64
  895. package/dist/chart-types/line-chart/tool.d.ts.map +0 -1
  896. package/dist/chart-types/line-chart/tool.js +0 -74
  897. package/dist/chart-types/line-chart/tool.js.map +0 -1
  898. package/dist/chart-types/list-panels-tool.d.ts +0 -35
  899. package/dist/chart-types/list-panels-tool.d.ts.map +0 -1
  900. package/dist/chart-types/list-panels-tool.js.map +0 -1
  901. package/dist/chart-types/profiler-tool.d.ts +0 -40
  902. package/dist/chart-types/profiler-tool.d.ts.map +0 -1
  903. package/dist/chart-types/profiler-tool.js +0 -73
  904. package/dist/chart-types/profiler-tool.js.map +0 -1
  905. package/dist/chart-types/remove-panel-tool.d.ts +0 -31
  906. package/dist/chart-types/remove-panel-tool.d.ts.map +0 -1
  907. package/dist/chart-types/remove-panel-tool.js.map +0 -1
  908. package/dist/chart-types/text-panel-tool.d.ts +0 -42
  909. package/dist/chart-types/text-panel-tool.d.ts.map +0 -1
  910. package/dist/chart-types/text-panel-tool.js +0 -71
  911. package/dist/chart-types/text-panel-tool.js.map +0 -1
  912. package/dist/chart-types/tool-helpers.d.ts +0 -44
  913. package/dist/chart-types/tool-helpers.d.ts.map +0 -1
  914. package/dist/chart-types/tool-helpers.js +0 -129
  915. package/dist/chart-types/tool-helpers.js.map +0 -1
  916. package/dist/chart-types/tool-schemas.d.ts.map +0 -1
  917. package/dist/chart-types/tool-schemas.js.map +0 -1
  918. package/dist/chart-types/tool-types.d.ts +0 -26
  919. package/dist/chart-types/tool-types.d.ts.map +0 -1
  920. package/dist/chart-types/tool-types.js.map +0 -1
  921. package/dist/chart-types/tool-validation.d.ts +0 -3
  922. package/dist/chart-types/tool-validation.d.ts.map +0 -1
  923. package/dist/chart-types/tool-validation.js.map +0 -1
  924. package/dist/chart-types/useChartTypeDefinition.d.ts +0 -3
  925. package/dist/chart-types/useChartTypeDefinition.d.ts.map +0 -1
  926. package/dist/chart-types/useChartTypeDefinition.js.map +0 -1
  927. package/dist/dashboard/DashboardPanelErrorBoundary.d.ts +0 -17
  928. package/dist/dashboard/DashboardPanelErrorBoundary.d.ts.map +0 -1
  929. package/dist/dashboard/DashboardPanelErrorBoundary.js +0 -21
  930. package/dist/dashboard/DashboardPanelErrorBoundary.js.map +0 -1
  931. package/dist/dashboard/MosaicDashboardEmptyState.d.ts +0 -2
  932. package/dist/dashboard/MosaicDashboardEmptyState.d.ts.map +0 -1
  933. package/dist/dashboard/MosaicDashboardEmptyState.js +0 -14
  934. package/dist/dashboard/MosaicDashboardEmptyState.js.map +0 -1
  935. package/dist/dashboard/MosaicDashboardPanel.d.ts.map +0 -1
  936. package/dist/dashboard/MosaicDashboardPanel.js +0 -23
  937. package/dist/dashboard/MosaicDashboardPanel.js.map +0 -1
  938. package/dist/dashboard/MosaicDashboardPanelDragOverlay.d.ts.map +0 -1
  939. package/dist/dashboard/MosaicDashboardPanelDragOverlay.js +0 -17
  940. package/dist/dashboard/MosaicDashboardPanelDragOverlay.js.map +0 -1
  941. package/dist/dashboard/MosaicDashboardPanelHeader.d.ts +0 -13
  942. package/dist/dashboard/MosaicDashboardPanelHeader.d.ts.map +0 -1
  943. package/dist/dashboard/MosaicDashboardPanelHeader.js +0 -30
  944. package/dist/dashboard/MosaicDashboardPanelHeader.js.map +0 -1
  945. package/dist/dashboard/MosaicDashboardPanelLayout.d.ts.map +0 -1
  946. package/dist/dashboard/MosaicDashboardPanelLayout.js.map +0 -1
  947. package/dist/dashboard/MosaicDashboardPanels.d.ts.map +0 -1
  948. package/dist/dashboard/MosaicDashboardPanels.js +0 -54
  949. package/dist/dashboard/MosaicDashboardPanels.js.map +0 -1
  950. package/dist/dashboard/defaultPanelRenderers.d.ts +0 -3
  951. package/dist/dashboard/defaultPanelRenderers.d.ts.map +0 -1
  952. package/dist/dashboard/defaultPanelRenderers.js +0 -13
  953. package/dist/dashboard/defaultPanelRenderers.js.map +0 -1
  954. package/dist/dashboard/initial-state/BuildDashboardManuallyPanel.d.ts +0 -6
  955. package/dist/dashboard/initial-state/BuildDashboardManuallyPanel.d.ts.map +0 -1
  956. package/dist/dashboard/initial-state/BuildDashboardManuallyPanel.js +0 -46
  957. package/dist/dashboard/initial-state/BuildDashboardManuallyPanel.js.map +0 -1
  958. package/dist/dashboard/initial-state/BuildDashboardWithAIPanel.d.ts +0 -7
  959. package/dist/dashboard/initial-state/BuildDashboardWithAIPanel.d.ts.map +0 -1
  960. package/dist/dashboard/initial-state/BuildDashboardWithAIPanel.js +0 -29
  961. package/dist/dashboard/initial-state/BuildDashboardWithAIPanel.js.map +0 -1
  962. package/dist/dashboard/initial-state/MosaicDashboardInitialState.d.ts +0 -6
  963. package/dist/dashboard/initial-state/MosaicDashboardInitialState.d.ts.map +0 -1
  964. package/dist/dashboard/initial-state/MosaicDashboardInitialState.js +0 -9
  965. package/dist/dashboard/initial-state/MosaicDashboardInitialState.js.map +0 -1
  966. package/dist/dashboard/useTablesWithColumns.d.ts.map +0 -1
  967. package/dist/dashboard/useTablesWithColumns.js +0 -13
  968. package/dist/dashboard/useTablesWithColumns.js.map +0 -1
  969. package/dist/profiler/MosaicDashboardProfilerPanelRenderer.d.ts +0 -4
  970. package/dist/profiler/MosaicDashboardProfilerPanelRenderer.d.ts.map +0 -1
  971. package/dist/profiler/MosaicDashboardProfilerPanelRenderer.js +0 -32
  972. package/dist/profiler/MosaicDashboardProfilerPanelRenderer.js.map +0 -1
  973. package/dist/profiler/MosaicProfiler.d.ts +0 -32
  974. package/dist/profiler/MosaicProfiler.d.ts.map +0 -1
  975. package/dist/profiler/MosaicProfiler.js +0 -57
  976. package/dist/profiler/MosaicProfiler.js.map +0 -1
  977. package/dist/profiler/MosaicProfilerHeader.d.ts +0 -7
  978. package/dist/profiler/MosaicProfilerHeader.d.ts.map +0 -1
  979. package/dist/profiler/MosaicProfilerHeader.js +0 -196
  980. package/dist/profiler/MosaicProfilerHeader.js.map +0 -1
  981. package/dist/profiler/MosaicProfilerRows.d.ts +0 -9
  982. package/dist/profiler/MosaicProfilerRows.d.ts.map +0 -1
  983. package/dist/profiler/MosaicProfilerRows.js +0 -65
  984. package/dist/profiler/MosaicProfilerRows.js.map +0 -1
  985. package/dist/profiler/MosaicProfilerStatusBar.d.ts +0 -9
  986. package/dist/profiler/MosaicProfilerStatusBar.d.ts.map +0 -1
  987. package/dist/profiler/MosaicProfilerStatusBar.js +0 -28
  988. package/dist/profiler/MosaicProfilerStatusBar.js.map +0 -1
  989. package/dist/profiler/ProfilerCategoryClient.d.ts +0 -50
  990. package/dist/profiler/ProfilerCategoryClient.d.ts.map +0 -1
  991. package/dist/profiler/ProfilerCategoryClient.js +0 -121
  992. package/dist/profiler/ProfilerCategoryClient.js.map +0 -1
  993. package/dist/profiler/ProfilerCountClient.d.ts +0 -28
  994. package/dist/profiler/ProfilerCountClient.d.ts.map +0 -1
  995. package/dist/profiler/ProfilerCountClient.js +0 -51
  996. package/dist/profiler/ProfilerCountClient.js.map +0 -1
  997. package/dist/profiler/ProfilerHistogramClient.d.ts +0 -69
  998. package/dist/profiler/ProfilerHistogramClient.d.ts.map +0 -1
  999. package/dist/profiler/ProfilerHistogramClient.js +0 -179
  1000. package/dist/profiler/ProfilerHistogramClient.js.map +0 -1
  1001. package/dist/profiler/ProfilerPageClient.d.ts +0 -37
  1002. package/dist/profiler/ProfilerPageClient.d.ts.map +0 -1
  1003. package/dist/profiler/ProfilerPageClient.js +0 -65
  1004. package/dist/profiler/ProfilerPageClient.js.map +0 -1
  1005. package/dist/profiler/ProfilerUnsupportedSummaryClient.d.ts +0 -24
  1006. package/dist/profiler/ProfilerUnsupportedSummaryClient.d.ts.map +0 -1
  1007. package/dist/profiler/ProfilerUnsupportedSummaryClient.js +0 -51
  1008. package/dist/profiler/ProfilerUnsupportedSummaryClient.js.map +0 -1
  1009. package/dist/profiler/addProfilerPanelAction.d.ts +0 -3
  1010. package/dist/profiler/addProfilerPanelAction.d.ts.map +0 -1
  1011. package/dist/profiler/addProfilerPanelAction.js +0 -9
  1012. package/dist/profiler/addProfilerPanelAction.js.map +0 -1
  1013. package/dist/profiler/createProfilerStore.d.ts +0 -45
  1014. package/dist/profiler/createProfilerStore.d.ts.map +0 -1
  1015. package/dist/profiler/createProfilerStore.js +0 -120
  1016. package/dist/profiler/createProfilerStore.js.map +0 -1
  1017. package/dist/profiler/layout.d.ts +0 -7
  1018. package/dist/profiler/layout.d.ts.map +0 -1
  1019. package/dist/profiler/layout.js +0 -13
  1020. package/dist/profiler/layout.js.map +0 -1
  1021. package/dist/profiler/profilerController.d.ts +0 -64
  1022. package/dist/profiler/profilerController.d.ts.map +0 -1
  1023. package/dist/profiler/profilerController.js +0 -123
  1024. package/dist/profiler/profilerController.js.map +0 -1
  1025. package/dist/profiler/types.d.ts +0 -86
  1026. package/dist/profiler/types.d.ts.map +0 -1
  1027. package/dist/profiler/types.js.map +0 -1
  1028. package/dist/profiler/useMosaicProfiler.d.ts +0 -7
  1029. package/dist/profiler/useMosaicProfiler.d.ts.map +0 -1
  1030. package/dist/profiler/useMosaicProfiler.js +0 -339
  1031. package/dist/profiler/useMosaicProfiler.js.map +0 -1
  1032. package/dist/profiler/utils.d.ts +0 -61
  1033. package/dist/profiler/utils.d.ts.map +0 -1
  1034. package/dist/profiler/utils.js +0 -347
  1035. package/dist/profiler/utils.js.map +0 -1
  1036. package/dist/text/MosaicDashboardTextRenderer.d.ts +0 -4
  1037. package/dist/text/MosaicDashboardTextRenderer.d.ts.map +0 -1
  1038. package/dist/text/MosaicDashboardTextRenderer.js +0 -46
  1039. package/dist/text/MosaicDashboardTextRenderer.js.map +0 -1
  1040. package/dist/text/addTextPanelAction.d.ts +0 -3
  1041. package/dist/text/addTextPanelAction.d.ts.map +0 -1
  1042. package/dist/text/addTextPanelAction.js +0 -9
  1043. package/dist/text/addTextPanelAction.js.map +0 -1
  1044. /package/dist/{chart-types → ai}/list-panels-tool.js +0 -0
  1045. /package/dist/{chart-types → ai}/remove-panel-tool.js +0 -0
  1046. /package/dist/{chart-types → ai}/tool-schemas.d.ts +0 -0
  1047. /package/dist/{chart-types → ai}/tool-schemas.js +0 -0
  1048. /package/dist/{chart-types → ai}/tool-types.js +0 -0
  1049. /package/dist/{chart-types → ai}/tool-validation.js +0 -0
  1050. /package/dist/{chart → charts}/addChartPanelAction.d.ts +0 -0
  1051. /package/dist/{chart → charts}/addChartPanelAction.js +0 -0
  1052. /package/dist/{chart-types → charts/chart-types}/box-plot/BoxPlotSettings.d.ts +0 -0
  1053. /package/dist/{chart-types → charts/chart-types}/box-plot/definition.d.ts +0 -0
  1054. /package/dist/{chart-types → charts/chart-types}/box-plot/renderer/BoxPlotErrorBoundary.d.ts +0 -0
  1055. /package/dist/{chart-types → charts/chart-types}/box-plot/renderer/BoxPlotErrorBoundary.js +0 -0
  1056. /package/dist/{chart-types → charts/chart-types}/box-plot/renderer/BoxPlotPanelRenderer.d.ts +0 -0
  1057. /package/dist/{chart-types → charts/chart-types}/box-plot/renderer/constants.js +0 -0
  1058. /package/dist/{chart-types → charts/chart-types}/box-plot/renderer/plot.js +0 -0
  1059. /package/dist/{chart-types → charts/chart-types}/box-plot/renderer/utils.js +0 -0
  1060. /package/dist/{chart-types → charts/chart-types}/count-plot/CountPlotSettings.d.ts +0 -0
  1061. /package/dist/{chart-types → charts/chart-types}/count-plot/definition.d.ts +0 -0
  1062. /package/dist/{chart-types → charts/chart-types}/count-plot/schema.d.ts +0 -0
  1063. /package/dist/{chart-types → charts/chart-types}/count-plot/schema.js +0 -0
  1064. /package/dist/{chart-types → charts/chart-types}/count-plot/tool.d.ts +0 -0
  1065. /package/dist/{chart-types → charts/chart-types}/custom-spec/CustomSpecSettings.d.ts +0 -0
  1066. /package/dist/{chart-types → charts/chart-types}/custom-spec/definition.d.ts +0 -0
  1067. /package/dist/{chart-types → charts/chart-types}/custom-spec/schema.d.ts +0 -0
  1068. /package/dist/{chart-types → charts/chart-types}/custom-spec/schema.js +0 -0
  1069. /package/dist/{chart-types → charts/chart-types}/data-policy-schema.d.ts +0 -0
  1070. /package/dist/{chart-types → charts/chart-types}/data-policy-schema.js +0 -0
  1071. /package/dist/{chart-types → charts/chart-types}/heatmap/HeatmapSettings.d.ts +0 -0
  1072. /package/dist/{chart-types → charts/chart-types}/heatmap/definition.d.ts +0 -0
  1073. /package/dist/{chart-types → charts/chart-types}/heatmap/schema.d.ts +0 -0
  1074. /package/dist/{chart-types → charts/chart-types}/heatmap/schema.js +0 -0
  1075. /package/dist/{chart-types → charts/chart-types}/heatmap/tool.d.ts +0 -0
  1076. /package/dist/{chart-types → charts/chart-types}/histogram/HistogramSettings.d.ts +0 -0
  1077. /package/dist/{chart-types → charts/chart-types}/histogram/definition.d.ts +0 -0
  1078. /package/dist/{chart-types → charts/chart-types}/line-chart/LineChartSettings.d.ts +0 -0
  1079. /package/dist/{chart-types → charts/chart-types}/line-chart/definition.d.ts +0 -0
  1080. /package/dist/{chart-types → charts}/useChartTypeDefinition.js +0 -0
  1081. /package/dist/{chart-builders → components}/Field.d.ts +0 -0
  1082. /package/dist/{chart-builders → components}/Field.js +0 -0
  1083. /package/dist/{chart-builders → components}/TableSelector.d.ts +0 -0
  1084. /package/dist/dashboard/{MosaicDashboardPanel.d.ts → panel/MosaicDashboardPanel.d.ts} +0 -0
  1085. /package/dist/dashboard/{MosaicDashboardPanelDragOverlay.d.ts → panel/MosaicDashboardPanelDragOverlay.d.ts} +0 -0
  1086. /package/dist/dashboard/{MosaicDashboardPanelLayout.d.ts → panel/MosaicDashboardPanelLayout.d.ts} +0 -0
  1087. /package/dist/dashboard/{MosaicDashboardPanelLayout.js → panel/MosaicDashboardPanelLayout.js} +0 -0
  1088. /package/dist/dashboard/{MosaicDashboardPanels.d.ts → panel/MosaicDashboardPanels.d.ts} +0 -0
  1089. /package/dist/{profiler → data-table-explorer}/types.js +0 -0
  1090. /package/dist/{dashboard → hooks}/useTablesWithColumns.d.ts +0 -0
package/LICENSE.md CHANGED
@@ -1,6 +1,7 @@
1
1
  MIT License
2
2
 
3
- Copyright 2025 SQLRooms Contributors
3
+ Copyright 2024-2026 SQLRooms Contributors
4
+ Copyright Vis.gl contributors
4
5
 
5
6
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
7
 
package/README.md CHANGED
@@ -132,40 +132,45 @@ The hook accepts the following options:
132
132
  - `queryResult` - Optional callback when query results are received
133
133
  - `enabled` - Whether to automatically connect when mosaic is ready (default: `true`)
134
134
 
135
- ### Mosaic Profiler Primitives
135
+ ### Data Table Explorer Primitives
136
136
 
137
- The profiler primitives let you build a Quake-style cross-filtered table with
138
- per-column summaries on top of `MosaicSlice`.
137
+ The Data Table Explorer primitives let you build a Quake-style cross-filtered
138
+ table with per-column summaries on top of `MosaicSlice`.
139
139
 
140
140
  ```tsx
141
- import {MosaicProfiler} from '@sqlrooms/mosaic';
141
+ import {DataTableExplorer} from '@sqlrooms/mosaic';
142
142
  import {ScrollArea} from '@sqlrooms/ui';
143
143
  import {useMemo} from 'react';
144
144
  import {useRoomStore} from './store';
145
145
 
146
- function EarthquakeProfiler() {
146
+ function EarthquakeExplorer() {
147
147
  const mosaic = useRoomStore((state) => state.mosaic);
148
148
  const brush = useMemo(() => mosaic.getSelection('brush'), [mosaic]);
149
149
 
150
150
  return (
151
- <MosaicProfiler tableName="earthquakes" selection={brush} pageSize={25}>
151
+ <DataTableExplorer tableName="earthquakes" selection={brush} pageSize={25}>
152
152
  <div className="flex min-h-0 flex-col border">
153
153
  <ScrollArea className="min-h-0 flex-1">
154
- <MosaicProfiler.Table>
155
- <MosaicProfiler.Header />
156
- <MosaicProfiler.Rows />
157
- </MosaicProfiler.Table>
154
+ <DataTableExplorer.Table>
155
+ <DataTableExplorer.Header />
156
+ <DataTableExplorer.Rows />
157
+ </DataTableExplorer.Table>
158
158
  </ScrollArea>
159
- <MosaicProfiler.StatusBar />
159
+ <DataTableExplorer.StatusBar />
160
160
  </div>
161
- </MosaicProfiler>
161
+ </DataTableExplorer>
162
162
  );
163
163
  }
164
164
  ```
165
165
 
166
- For the common case, prefer the compound `MosaicProfiler` API. `useMosaicProfiler`
167
- is still available when you need direct access to the profiler state for custom
168
- layout, sizing, or advanced composition.
166
+ For the common case, prefer the compound `DataTableExplorer` API.
167
+ `useDataTableExplorer` is still available when you need direct access to the
168
+ explorer state for custom layout, sizing, or advanced composition.
169
+
170
+ `DataTableBlockRenderer` wraps the same explorer UI as a stateful block
171
+ renderer for `@sqlrooms/documents` block documents. Register it with a
172
+ host-provided stateful block type such as `data-table` when a document or
173
+ worksheet surface should embed an interactive Data Table Explorer directly.
169
174
 
170
175
  ### Mosaic Dashboard Panels
171
176
 
@@ -176,7 +181,7 @@ runtime add-panel actions when creating the dashboard slice.
176
181
  ```tsx
177
182
  import {
178
183
  createDefaultMosaicDashboardPanelRenderers,
179
- createMosaicDashboardProfilerPanelConfig,
184
+ createMosaicDashboardDataTableExplorerPanelConfig,
180
185
  createMosaicDashboardChartPanelConfig,
181
186
  createMosaicDashboardSlice,
182
187
  MosaicDashboard,
@@ -192,10 +197,10 @@ function Dashboard() {
192
197
  return <MosaicDashboard dashboardId="main" />;
193
198
  }
194
199
 
195
- function addProfiler(store: RoomStore) {
200
+ function addDataTableExplorer(store: RoomStore) {
196
201
  store.getState().mosaicDashboard.addPanel(
197
202
  'main',
198
- createMosaicDashboardProfilerPanelConfig({
203
+ createMosaicDashboardDataTableExplorerPanelConfig({
199
204
  source: {tableName: 'earthquakes'},
200
205
  }),
201
206
  );
@@ -226,10 +231,129 @@ panel omits a source it falls back to the dashboard selected table. Panel render
226
231
  definitions and chart builder definitions are runtime-only and intentionally
227
232
  live outside persisted dashboard config.
228
233
 
234
+ ### Reset Filters
235
+
236
+ The package provides hooks and components for resetting cross-filter selections at both dashboard and panel levels:
237
+
238
+ #### Dashboard-Level Reset
239
+
240
+ Use `useDashboardResetFilters` to track and reset all filters for a dashboard:
241
+
242
+ ```tsx
243
+ import {useDashboardResetFilters} from '@sqlrooms/mosaic';
244
+
245
+ function DashboardToolbar({dashboardId}: {dashboardId: string}) {
246
+ const {hasActiveFilters, reset} = useDashboardResetFilters({dashboardId});
247
+
248
+ return (
249
+ <button onClick={reset} disabled={!hasActiveFilters}>
250
+ Reset All Filters
251
+ </button>
252
+ );
253
+ }
254
+ ```
255
+
256
+ The hook returns:
257
+
258
+ - `hasActiveFilters` - Boolean indicating whether any filters are active
259
+ - `reset` - Function to clear all filters for the dashboard
260
+
261
+ #### Panel-Level Reset
262
+
263
+ Use `usePanelResetFilters` to track and reset only the filters originating from a specific panel:
264
+
265
+ ```tsx
266
+ import {
267
+ usePanelResetFilters,
268
+ usePanelClients,
269
+ ResetFiltersButton,
270
+ } from '@sqlrooms/mosaic';
271
+
272
+ function ChartPanelHeader({
273
+ dashboardId,
274
+ panelId,
275
+ selectionName,
276
+ }: {
277
+ dashboardId: string;
278
+ panelId: string;
279
+ selectionName: string;
280
+ }) {
281
+ const panelClients = usePanelClients(dashboardId, panelId);
282
+ const {hasActiveFilters, reset} = usePanelResetFilters({
283
+ panelClients,
284
+ selectionName,
285
+ });
286
+
287
+ return (
288
+ <div className="panel-header">
289
+ <h3>My Chart</h3>
290
+ <ResetFiltersButton disabled={!hasActiveFilters} onClick={reset} />
291
+ </div>
292
+ );
293
+ }
294
+ ```
295
+
296
+ Panel-level reset requires registering the panel's Mosaic clients. Use `usePanelClientRegistration` in your panel renderer:
297
+
298
+ ```tsx
299
+ import {usePanelClientRegistration} from '@sqlrooms/mosaic';
300
+
301
+ function ChartPanelRenderer({dashboardId, panelId}: PanelProps) {
302
+ const {client} = useMosaicClient({
303
+ selectionName: 'brush',
304
+ query: /* ... */,
305
+ });
306
+
307
+ // Register this client so the panel reset button can track its filters
308
+ usePanelClientRegistration(dashboardId, panelId, [client]);
309
+
310
+ return <VgPlotChart /* ... */ />;
311
+ }
312
+ ```
313
+
314
+ #### Reset Filters Button Component
315
+
316
+ The `ResetFiltersButton` is a pre-styled UI component:
317
+
318
+ ```tsx
319
+ import {ResetFiltersButton} from '@sqlrooms/mosaic';
320
+
321
+ <ResetFiltersButton
322
+ disabled={!hasActiveFilters}
323
+ onClick={reset}
324
+ tooltip="Reset filters" // optional
325
+ className="custom-class" // optional
326
+ />;
327
+ ```
328
+
329
+ ### Dashboard Stateful Block Adapter
330
+
331
+ `createMosaicDashboardBlockDefinition` exposes Mosaic dashboards as stateful
332
+ block implementations. This lets host packages render the same dashboard
333
+ implementation either inside a block host or through an artifact shell created
334
+ with `@sqlrooms/artifacts`.
335
+
336
+ ```tsx
337
+ import {createArtifactTypeFromStatefulBlock} from '@sqlrooms/artifacts';
338
+ import {createMosaicDashboardBlockDefinition} from '@sqlrooms/mosaic';
339
+
340
+ const dashboardBlockDefinition = createMosaicDashboardBlockDefinition({
341
+ render: DashboardArtifact,
342
+ });
343
+
344
+ export const dashboardArtifactType = createArtifactTypeFromStatefulBlock(
345
+ dashboardBlockDefinition,
346
+ );
347
+ ```
348
+
349
+ The adapter preserves existing dashboard state in
350
+ `mosaicDashboard.config.dashboardsById` and delegates lifecycle work to the
351
+ dashboard slice.
352
+
229
353
  ### Dashboard AI Tools
230
354
 
231
355
  `@sqlrooms/mosaic` provides reusable assistant tools for dashboard authoring,
232
- including chart tools, profiler/text panel tools, panel management tools, and an
356
+ including chart tools, Data Table Explorer/text panel tools, panel management tools, and an
233
357
  optional exploratory `dashboard_agent`. Client apps supply a small adapter that
234
358
  maps Mosaic's generic dashboard operations to their store, artifact model, table
235
359
  metadata, and AI run context. When an AI run context is present, implicit
@@ -350,6 +474,45 @@ Available compound components:
350
474
 
351
475
  For simpler use cases, the legacy `ChartBuilderDialog` component is still available but deprecated.
352
476
 
477
+ ### Combobox Component
478
+
479
+ The package provides a reusable compound `Combobox` component for building searchable select dropdowns. This component is used internally by chart settings fields like `AggregationSelector`, `FieldSelectorInput`, and `TemporalGranularitySelector`.
480
+
481
+ ```tsx
482
+ import {Combobox} from '@sqlrooms/mosaic';
483
+
484
+ function MySelector() {
485
+ const [value, setValue] = useState('');
486
+
487
+ return (
488
+ <Combobox value={value} onChange={setValue}>
489
+ <Combobox.Trigger placeholder="Select option..." />
490
+ <Combobox.Content>
491
+ <Combobox.Search placeholder="Search..." />
492
+ <Combobox.Empty>No results found.</Combobox.Empty>
493
+ <Combobox.List>
494
+ <Combobox.Item value="option1">Option 1</Combobox.Item>
495
+ <Combobox.Item value="option2">Option 2</Combobox.Item>
496
+ <Combobox.Item value="option3">Option 3</Combobox.Item>
497
+ </Combobox.List>
498
+ </Combobox.Content>
499
+ </Combobox>
500
+ );
501
+ }
502
+ ```
503
+
504
+ Available compound components:
505
+
506
+ - `Combobox` (root) - Manages state and provides context
507
+ - `Combobox.Trigger` - Button to open the dropdown
508
+ - `Combobox.Content` - Popover content wrapper
509
+ - `Combobox.Search` - Search input field
510
+ - `Combobox.Empty` - Empty state message
511
+ - `Combobox.List` - Items container
512
+ - `Combobox.Item` - Individual selectable item
513
+
514
+ For advanced use cases, the underlying `useCombobox` hook is also exported.
515
+
353
516
  ### Working with Selections
354
517
 
355
518
  Selections enable cross-filtering between multiple visualizations. You can get or create a named selection from the store:
@@ -3,14 +3,14 @@
3
3
  *
4
4
  * @example
5
5
  * ```tsx
6
- * <MosaicChart.Container spec={mySpec} onSpecChange={save}>
7
- * <MosaicChart.Display />
8
- * <MosaicChart.SpecEditor />
9
- * <MosaicChart.Actions />
10
- * </MosaicChart.Container>
6
+ * <MosaicSpecChart.Container spec={mySpec} onSpecChange={save}>
7
+ * <MosaicSpecChart.Display />
8
+ * <MosaicSpecChart.SpecEditor />
9
+ * <MosaicSpecChart.Actions />
10
+ * </MosaicSpecChart.Container>
11
11
  * ```
12
12
  */
13
- export declare const MosaicChart: {
13
+ export declare const MosaicSpecChart: {
14
14
  readonly Container: import("react").FC<import(".").MosaicChartContainerProps>;
15
15
  readonly Display: import("react").FC<import(".").MosaicChartDisplayProps>;
16
16
  readonly SpecEditor: import("react").FC<import(".").MosaicSpecEditorPanelProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"MosaicChart.d.ts","sourceRoot":"","sources":["../src/MosaicChart.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW;;;;;;CAMd,CAAC"}
1
+ {"version":3,"file":"MosaicChart.d.ts","sourceRoot":"","sources":["../src/MosaicChart.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC"}
@@ -8,14 +8,14 @@ import { MosaicCodeMirrorEditor } from './editor/MosaicCodeMirrorEditor';
8
8
  *
9
9
  * @example
10
10
  * ```tsx
11
- * <MosaicChart.Container spec={mySpec} onSpecChange={save}>
12
- * <MosaicChart.Display />
13
- * <MosaicChart.SpecEditor />
14
- * <MosaicChart.Actions />
15
- * </MosaicChart.Container>
11
+ * <MosaicSpecChart.Container spec={mySpec} onSpecChange={save}>
12
+ * <MosaicSpecChart.Display />
13
+ * <MosaicSpecChart.SpecEditor />
14
+ * <MosaicSpecChart.Actions />
15
+ * </MosaicSpecChart.Container>
16
16
  * ```
17
17
  */
18
- export const MosaicChart = {
18
+ export const MosaicSpecChart = {
19
19
  Container: MosaicChartContainer,
20
20
  Display: MosaicChartDisplay,
21
21
  SpecEditor: MosaicSpecEditorPanel,
@@ -1 +1 @@
1
- {"version":3,"file":"MosaicChart.js","sourceRoot":"","sources":["../src/MosaicChart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAC,qBAAqB,EAAC,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAC,wBAAwB,EAAC,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAC,sBAAsB,EAAC,MAAM,iCAAiC,CAAC;AAEvE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,SAAS,EAAE,oBAAoB;IAC/B,OAAO,EAAE,kBAAkB;IAC3B,UAAU,EAAE,qBAAqB;IACjC,OAAO,EAAE,wBAAwB;IACjC,gBAAgB,EAAE,sBAAsB;CAChC,CAAC","sourcesContent":["import {MosaicChartContainer} from './editor/MosaicChartContainer';\nimport {MosaicChartDisplay} from './editor/MosaicChartDisplay';\nimport {MosaicSpecEditorPanel} from './editor/MosaicSpecEditorPanel';\nimport {MosaicChartEditorActions} from './editor/MosaicChartEditorActions';\nimport {MosaicCodeMirrorEditor} from './editor/MosaicCodeMirrorEditor';\n\n/**\n * Compound component for composable Mosaic chart editing.\n *\n * @example\n * ```tsx\n * <MosaicChart.Container spec={mySpec} onSpecChange={save}>\n * <MosaicChart.Display />\n * <MosaicChart.SpecEditor />\n * <MosaicChart.Actions />\n * </MosaicChart.Container>\n * ```\n */\nexport const MosaicChart = {\n Container: MosaicChartContainer,\n Display: MosaicChartDisplay,\n SpecEditor: MosaicSpecEditorPanel,\n Actions: MosaicChartEditorActions,\n CodeMirrorEditor: MosaicCodeMirrorEditor,\n} as const;\n"]}
1
+ {"version":3,"file":"MosaicChart.js","sourceRoot":"","sources":["../src/MosaicChart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAC,kBAAkB,EAAC,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAC,qBAAqB,EAAC,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAC,wBAAwB,EAAC,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAC,sBAAsB,EAAC,MAAM,iCAAiC,CAAC;AAEvE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,SAAS,EAAE,oBAAoB;IAC/B,OAAO,EAAE,kBAAkB;IAC3B,UAAU,EAAE,qBAAqB;IACjC,OAAO,EAAE,wBAAwB;IACjC,gBAAgB,EAAE,sBAAsB;CAChC,CAAC","sourcesContent":["import {MosaicChartContainer} from './editor/MosaicChartContainer';\nimport {MosaicChartDisplay} from './editor/MosaicChartDisplay';\nimport {MosaicSpecEditorPanel} from './editor/MosaicSpecEditorPanel';\nimport {MosaicChartEditorActions} from './editor/MosaicChartEditorActions';\nimport {MosaicCodeMirrorEditor} from './editor/MosaicCodeMirrorEditor';\n\n/**\n * Compound component for composable Mosaic chart editing.\n *\n * @example\n * ```tsx\n * <MosaicSpecChart.Container spec={mySpec} onSpecChange={save}>\n * <MosaicSpecChart.Display />\n * <MosaicSpecChart.SpecEditor />\n * <MosaicSpecChart.Actions />\n * </MosaicSpecChart.Container>\n * ```\n */\nexport const MosaicSpecChart = {\n Container: MosaicChartContainer,\n Display: MosaicChartDisplay,\n SpecEditor: MosaicSpecEditorPanel,\n Actions: MosaicChartEditorActions,\n CodeMirrorEditor: MosaicCodeMirrorEditor,\n} as const;\n"]}
@@ -5,7 +5,7 @@ import { ChartBuilderDialog, ChartBuilderDialogContent, ChartBuilderTrigger } fr
5
5
  import { ChartBuilderRoot, type ChartBuilderRootProps } from './chart-builders/ChartBuilderRoot';
6
6
  import { ChartBuilderFields } from './chart-builders/ChartBuilderFields';
7
7
  import { ChartBuilderTypeGrid } from './chart-builders/ChartBuilderTypeGrid';
8
- import { FieldSelectorInput } from './chart-builders/FieldSelectorInput';
8
+ import { FieldSelectorInput } from './components/FieldSelectorInput';
9
9
  /**
10
10
  * Compound component for building Mosaic charts from templates.
11
11
  *
@@ -1 +1 @@
1
- {"version":3,"file":"MosaicChartBuilder.d.ts","sourceRoot":"","sources":["../src/MosaicChartBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,OAAO,CAAC;AACxC,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC3B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAC,oBAAoB,EAAC,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,KAAK,mCAAmC,GAAG,CAAC,CAC1C,KAAK,EAAE,qBAAqB,KACzB,YAAY,CAAC,GAAG;IACnB,IAAI,EAAE,OAAO,gBAAgB,CAAC;IAC9B,OAAO,EAAE,OAAO,mBAAmB,CAAC;IACpC,MAAM,EAAE,OAAO,yBAAyB,CAAC;IACzC,OAAO,EAAE,OAAO,mBAAmB,CAAC;IACpC,QAAQ,EAAE,OAAO,oBAAoB,CAAC;IACtC,MAAM,EAAE,OAAO,kBAAkB,CAAC;IAClC,OAAO,EAAE,OAAO,mBAAmB,CAAC;IACpC,aAAa,EAAE,OAAO,kBAAkB,CAAC;IACzC,YAAY,EAAE,OAAO,kBAAkB,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,mCAsB9B,CAAC"}
1
+ {"version":3,"file":"MosaicChartBuilder.d.ts","sourceRoot":"","sources":["../src/MosaicChartBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,OAAO,CAAC;AACxC,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,EAC3B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAC,oBAAoB,EAAC,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,KAAK,mCAAmC,GAAG,CAAC,CAC1C,KAAK,EAAE,qBAAqB,KACzB,YAAY,CAAC,GAAG;IACnB,IAAI,EAAE,OAAO,gBAAgB,CAAC;IAC9B,OAAO,EAAE,OAAO,mBAAmB,CAAC;IACpC,MAAM,EAAE,OAAO,yBAAyB,CAAC;IACzC,OAAO,EAAE,OAAO,mBAAmB,CAAC;IACpC,QAAQ,EAAE,OAAO,oBAAoB,CAAC;IACtC,MAAM,EAAE,OAAO,kBAAkB,CAAC;IAClC,OAAO,EAAE,OAAO,mBAAmB,CAAC;IACpC,aAAa,EAAE,OAAO,kBAAkB,CAAC;IACzC,YAAY,EAAE,OAAO,kBAAkB,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,mCAsB9B,CAAC"}
@@ -4,7 +4,7 @@ import { ChartBuilderDialog, ChartBuilderDialogContent, ChartBuilderTrigger, } f
4
4
  import { ChartBuilderRoot, } from './chart-builders/ChartBuilderRoot';
5
5
  import { ChartBuilderFields } from './chart-builders/ChartBuilderFields';
6
6
  import { ChartBuilderTypeGrid } from './chart-builders/ChartBuilderTypeGrid';
7
- import { FieldSelectorInput } from './chart-builders/FieldSelectorInput';
7
+ import { FieldSelectorInput } from './components/FieldSelectorInput';
8
8
  export const MosaicChartBuilder = Object.assign(ChartBuilderRoot, {
9
9
  Root: ChartBuilderRoot,
10
10
  /** Default trigger button; customize via ButtonProps or children. */
@@ -1 +1 @@
1
- {"version":3,"file":"MosaicChartBuilder.js","sourceRoot":"","sources":["../src/MosaicChartBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,gBAAgB,GAEjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAC,oBAAoB,EAAC,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AA0DvE,MAAM,CAAC,MAAM,kBAAkB,GAC7B,MAAM,CAAC,MAAM,CACX,gBAAkE,EAClE;IACE,IAAI,EAAE,gBAAgB;IACtB,qEAAqE;IACrE,OAAO,EAAE,mBAAmB;IAC5B,oDAAoD;IACpD,MAAM,EAAE,yBAAyB;IACjC,iDAAiD;IACjD,OAAO,EAAE,mBAAmB;IAC5B,uCAAuC;IACvC,QAAQ,EAAE,oBAAoB;IAC9B,6DAA6D;IAC7D,MAAM,EAAE,kBAAkB;IAC1B,gEAAgE;IAChE,OAAO,EAAE,mBAAmB;IAC5B,gCAAgC;IAChC,aAAa,EAAE,kBAAkB;IACjC,oDAAoD;IACpD,YAAY,EAAE,kBAAkB;CACjC,CACF,CAAC","sourcesContent":["import type {ReactElement} from 'react';\nimport {ChartBuilderActions} from './chart-builders/ChartBuilderActions';\nimport {ChartBuilderContent} from './chart-builders/ChartBuilderContent';\nimport {\n ChartBuilderDialog,\n ChartBuilderDialogContent,\n ChartBuilderTrigger,\n} from './chart-builders/ChartBuilderDialog';\nimport {\n ChartBuilderRoot,\n type ChartBuilderRootProps,\n} from './chart-builders/ChartBuilderRoot';\nimport {ChartBuilderFields} from './chart-builders/ChartBuilderFields';\nimport {ChartBuilderTypeGrid} from './chart-builders/ChartBuilderTypeGrid';\nimport {FieldSelectorInput} from './chart-builders/FieldSelectorInput';\n\n/**\n * Compound component for building Mosaic charts from templates.\n *\n * Use `<MosaicChartBuilder>` as the root; it provides context and wraps a\n * Radix Dialog.\n *\n * @example Compound usage (recommended)\n * ```tsx\n * <MosaicChartBuilder\n * tableName=\"my_table\"\n * columns={columns}\n * onCreateChart={handleCreate}\n * >\n * <MosaicChartBuilder.Trigger />\n * <MosaicChartBuilder.Dialog />\n * </MosaicChartBuilder>\n * ```\n *\n * @example Custom trigger button\n * ```tsx\n * <MosaicChartBuilder\n * tableName=\"my_table\"\n * columns={columns}\n * onCreateChart={handleCreate}\n * >\n * <MosaicChartBuilder.Trigger variant=\"ghost\" size=\"icon\">\n * <PlusIcon />\n * </MosaicChartBuilder.Trigger>\n * <MosaicChartBuilder.Dialog />\n * </MosaicChartBuilder>\n * ```\n *\n * @example Inline builder (no dialog)\n * ```tsx\n * <MosaicChartBuilder.Content\n * tableName=\"my_table\"\n * columns={columns}\n * onCreateChart={handleCreate}\n * />\n * ```\n */\n\ntype MosaicChartBuilderCompoundComponent = ((\n props: ChartBuilderRootProps,\n) => ReactElement) & {\n Root: typeof ChartBuilderRoot;\n Trigger: typeof ChartBuilderTrigger;\n Dialog: typeof ChartBuilderDialogContent;\n Content: typeof ChartBuilderContent;\n TypeGrid: typeof ChartBuilderTypeGrid;\n Fields: typeof ChartBuilderFields;\n Actions: typeof ChartBuilderActions;\n FieldSelector: typeof FieldSelectorInput;\n LegacyDialog: typeof ChartBuilderDialog;\n};\n\nexport const MosaicChartBuilder: MosaicChartBuilderCompoundComponent =\n Object.assign(\n ChartBuilderRoot as (props: ChartBuilderRootProps) => ReactElement,\n {\n Root: ChartBuilderRoot,\n /** Default trigger button; customize via ButtonProps or children. */\n Trigger: ChartBuilderTrigger,\n /** Dialog content pane with chart-builder steps. */\n Dialog: ChartBuilderDialogContent,\n /** Standalone builder UI (no dialog wrapper). */\n Content: ChartBuilderContent,\n /** Built-in chart-type picker grid. */\n TypeGrid: ChartBuilderTypeGrid,\n /** Field selectors for the currently selected chart type. */\n Fields: ChartBuilderFields,\n /** Back/Create actions for the current chart type selection. */\n Actions: ChartBuilderActions,\n /** Field selector primitive. */\n FieldSelector: FieldSelectorInput,\n /** Legacy one-shot dialog (backward-compatible). */\n LegacyDialog: ChartBuilderDialog,\n },\n );\n"]}
1
+ {"version":3,"file":"MosaicChartBuilder.js","sourceRoot":"","sources":["../src/MosaicChartBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAC,mBAAmB,EAAC,MAAM,sCAAsC,CAAC;AACzE,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,gBAAgB,GAEjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAC,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAC,oBAAoB,EAAC,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAC,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AA0DnE,MAAM,CAAC,MAAM,kBAAkB,GAC7B,MAAM,CAAC,MAAM,CACX,gBAAkE,EAClE;IACE,IAAI,EAAE,gBAAgB;IACtB,qEAAqE;IACrE,OAAO,EAAE,mBAAmB;IAC5B,oDAAoD;IACpD,MAAM,EAAE,yBAAyB;IACjC,iDAAiD;IACjD,OAAO,EAAE,mBAAmB;IAC5B,uCAAuC;IACvC,QAAQ,EAAE,oBAAoB;IAC9B,6DAA6D;IAC7D,MAAM,EAAE,kBAAkB;IAC1B,gEAAgE;IAChE,OAAO,EAAE,mBAAmB;IAC5B,gCAAgC;IAChC,aAAa,EAAE,kBAAkB;IACjC,oDAAoD;IACpD,YAAY,EAAE,kBAAkB;CACjC,CACF,CAAC","sourcesContent":["import type {ReactElement} from 'react';\nimport {ChartBuilderActions} from './chart-builders/ChartBuilderActions';\nimport {ChartBuilderContent} from './chart-builders/ChartBuilderContent';\nimport {\n ChartBuilderDialog,\n ChartBuilderDialogContent,\n ChartBuilderTrigger,\n} from './chart-builders/ChartBuilderDialog';\nimport {\n ChartBuilderRoot,\n type ChartBuilderRootProps,\n} from './chart-builders/ChartBuilderRoot';\nimport {ChartBuilderFields} from './chart-builders/ChartBuilderFields';\nimport {ChartBuilderTypeGrid} from './chart-builders/ChartBuilderTypeGrid';\nimport {FieldSelectorInput} from './components/FieldSelectorInput';\n\n/**\n * Compound component for building Mosaic charts from templates.\n *\n * Use `<MosaicChartBuilder>` as the root; it provides context and wraps a\n * Radix Dialog.\n *\n * @example Compound usage (recommended)\n * ```tsx\n * <MosaicChartBuilder\n * tableName=\"my_table\"\n * columns={columns}\n * onCreateChart={handleCreate}\n * >\n * <MosaicChartBuilder.Trigger />\n * <MosaicChartBuilder.Dialog />\n * </MosaicChartBuilder>\n * ```\n *\n * @example Custom trigger button\n * ```tsx\n * <MosaicChartBuilder\n * tableName=\"my_table\"\n * columns={columns}\n * onCreateChart={handleCreate}\n * >\n * <MosaicChartBuilder.Trigger variant=\"ghost\" size=\"icon\">\n * <PlusIcon />\n * </MosaicChartBuilder.Trigger>\n * <MosaicChartBuilder.Dialog />\n * </MosaicChartBuilder>\n * ```\n *\n * @example Inline builder (no dialog)\n * ```tsx\n * <MosaicChartBuilder.Content\n * tableName=\"my_table\"\n * columns={columns}\n * onCreateChart={handleCreate}\n * />\n * ```\n */\n\ntype MosaicChartBuilderCompoundComponent = ((\n props: ChartBuilderRootProps,\n) => ReactElement) & {\n Root: typeof ChartBuilderRoot;\n Trigger: typeof ChartBuilderTrigger;\n Dialog: typeof ChartBuilderDialogContent;\n Content: typeof ChartBuilderContent;\n TypeGrid: typeof ChartBuilderTypeGrid;\n Fields: typeof ChartBuilderFields;\n Actions: typeof ChartBuilderActions;\n FieldSelector: typeof FieldSelectorInput;\n LegacyDialog: typeof ChartBuilderDialog;\n};\n\nexport const MosaicChartBuilder: MosaicChartBuilderCompoundComponent =\n Object.assign(\n ChartBuilderRoot as (props: ChartBuilderRootProps) => ReactElement,\n {\n Root: ChartBuilderRoot,\n /** Default trigger button; customize via ButtonProps or children. */\n Trigger: ChartBuilderTrigger,\n /** Dialog content pane with chart-builder steps. */\n Dialog: ChartBuilderDialogContent,\n /** Standalone builder UI (no dialog wrapper). */\n Content: ChartBuilderContent,\n /** Built-in chart-type picker grid. */\n TypeGrid: ChartBuilderTypeGrid,\n /** Field selectors for the currently selected chart type. */\n Fields: ChartBuilderFields,\n /** Back/Create actions for the current chart type selection. */\n Actions: ChartBuilderActions,\n /** Field selector primitive. */\n FieldSelector: FieldSelectorInput,\n /** Legacy one-shot dialog (backward-compatible). */\n LegacyDialog: ChartBuilderDialog,\n },\n );\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MosaicColorLegend.d.ts","sourceRoot":"","sources":["../src/MosaicColorLegend.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAK9C,KAAK,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAEhD,KAAK,kCAAkC,GAAG;IACxC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,kCAAkC,GAAG;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAuDF,wBAAgB,2BAA2B,CAAC,EAC1C,UAAU,EACV,SAAS,EACT,MAAM,EACN,KAAK,EACL,KAAW,EACX,UAAkB,GACnB,EAAE,kCAAkC,OAiDpC;AAED,wBAAgB,iBAAiB,CAAC,EAChC,UAAU,EACV,SAAS,EACT,MAAM,EACN,KAAK,EACL,KAAK,EACL,UAAU,EACV,SAAS,GACV,EAAE,sBAAsB,kDAgDxB"}
1
+ {"version":3,"file":"MosaicColorLegend.d.ts","sourceRoot":"","sources":["../src/MosaicColorLegend.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAK9C,KAAK,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;AAEhD,KAAK,kCAAkC,GAAG;IACxC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,kCAAkC,GAAG;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAuDF,wBAAgB,2BAA2B,CAAC,EAC1C,UAAU,EACV,SAAS,EACT,MAAM,EACN,KAAK,EACL,KAAW,EACX,UAAkB,GACnB,EAAE,kCAAkC,OAiDpC;AAED,wBAAgB,iBAAiB,CAAC,EAChC,UAAU,EACV,SAAS,EACT,MAAM,EACN,KAAK,EACL,KAAK,EACL,UAAU,EACV,SAAS,GACV,EAAE,sBAAsB,kDA+CxB"}
@@ -96,7 +96,6 @@ export function MosaicColorLegend({ colorScale, selection, domain, title, width,
96
96
  width,
97
97
  tickFormat,
98
98
  });
99
- // eslint-disable-next-line react-hooks/preserve-manual-memoization
100
99
  const plot = useMemo(() => createMosaicColorLegendPlot({
101
100
  colorScale,
102
101
  selection,
@@ -1 +1 @@
1
- {"version":3,"file":"MosaicColorLegend.js","sourceRoot":"","sources":["../src/MosaicColorLegend.tsx"],"names":[],"mappings":"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","sourcesContent":["import type {ColorScaleConfig} from '@sqlrooms/color-scales';\nimport {resolveColorLegendTitle} from '@sqlrooms/color-scales';\nimport {cn, getResolvedTheme, useTheme} from '@sqlrooms/ui';\nimport {Selection} from '@uwdata/mosaic-core';\nimport * as vg from '@uwdata/vgplot';\nimport {useMemo} from 'react';\nimport {VgPlotChart} from './VgPlotChart';\n\ntype LegendDomainValue = string | number | Date;\n\ntype CreateMosaicColorLegendPlotOptions = {\n colorScale: ColorScaleConfig;\n selection?: Selection;\n domain?: ReadonlyArray<LegendDomainValue>;\n title?: string;\n width?: number;\n tickFormat?: string;\n};\n\nexport type MosaicColorLegendProps = CreateMosaicColorLegendPlotOptions & {\n className?: string;\n};\n\nfunction isExplicitNumericDomain(\n domain: 'auto' | [number, number] | [number, number, number],\n): domain is [number, number] | [number, number, number] {\n return domain !== 'auto';\n}\n\nfunction resolveLegendDomain(\n colorScale: ColorScaleConfig,\n domain?: ReadonlyArray<LegendDomainValue>,\n) {\n if (\n (colorScale.type === 'sequential' ||\n colorScale.type === 'diverging' ||\n colorScale.type === 'quantize') &&\n isExplicitNumericDomain(colorScale.domain)\n ) {\n return colorScale.domain;\n }\n\n return domain;\n}\n\nfunction getVgColorScaleType(colorScale: ColorScaleConfig) {\n switch (colorScale.type) {\n case 'sequential':\n return 'linear';\n case 'diverging':\n return 'diverging';\n case 'quantize':\n return 'quantize';\n case 'quantile':\n return 'quantile';\n case 'threshold':\n return 'threshold';\n case 'categorical':\n return 'categorical';\n default: {\n const _exhaustive: never = colorScale;\n throw new Error(\n `Unknown color scale type: ${(_exhaustive as ColorScaleConfig).type}`,\n );\n }\n }\n}\n\nfunction supportsInteractiveLegend(colorScale: ColorScaleConfig) {\n return (\n colorScale.type === 'sequential' ||\n colorScale.type === 'diverging' ||\n colorScale.type === 'categorical'\n );\n}\n\nexport function createMosaicColorLegendPlot({\n colorScale,\n selection,\n domain,\n title,\n width = 220,\n tickFormat = '.1f',\n}: CreateMosaicColorLegendPlotOptions) {\n const resolvedDomain = resolveLegendDomain(colorScale, domain);\n const legendTitle = resolveColorLegendTitle(colorScale, title);\n const plotAttributes: Array<(plot: any) => void> = [\n vg.colorScale(getVgColorScaleType(colorScale)),\n vg.colorScheme(colorScale.scheme),\n vg.colorLabel(legendTitle),\n vg.marginTop(0),\n vg.marginRight(0),\n vg.marginBottom(0),\n vg.marginLeft(0),\n ];\n\n if ('clamp' in colorScale && colorScale.clamp !== undefined) {\n plotAttributes.push(vg.colorClamp(colorScale.clamp));\n }\n\n if ('reverse' in colorScale && colorScale.reverse !== undefined) {\n plotAttributes.push(vg.colorReverse(colorScale.reverse));\n }\n\n if (colorScale.type === 'diverging') {\n if (Array.isArray(resolvedDomain) && resolvedDomain.length === 3) {\n plotAttributes.push(\n vg.colorDomain([resolvedDomain[0], resolvedDomain[2]]),\n vg.colorPivot(resolvedDomain[1]),\n );\n } else if (Array.isArray(resolvedDomain) && resolvedDomain.length === 2) {\n plotAttributes.push(vg.colorDomain(resolvedDomain));\n }\n } else if (colorScale.type === 'threshold') {\n plotAttributes.push(vg.colorDomain(colorScale.thresholds));\n } else if (resolvedDomain) {\n plotAttributes.push(vg.colorDomain(resolvedDomain));\n }\n\n if (colorScale.type === 'quantize' || colorScale.type === 'quantile') {\n plotAttributes.push(vg.colorN(colorScale.bins ?? 5));\n }\n\n const backingPlot = vg.plot(...plotAttributes);\n return vg.colorLegend({\n for: backingPlot,\n as: supportsInteractiveLegend(colorScale) ? selection : undefined,\n field: colorScale.field,\n width,\n tickFormat,\n label: legendTitle,\n });\n}\n\nexport function MosaicColorLegend({\n colorScale,\n selection,\n domain,\n title,\n width,\n tickFormat,\n className,\n}: MosaicColorLegendProps) {\n const {theme} = useTheme();\n const resolvedTheme = getResolvedTheme(theme);\n const legendSpecKey = JSON.stringify({\n colorScale,\n domain,\n title,\n width,\n tickFormat,\n });\n\n // eslint-disable-next-line react-hooks/preserve-manual-memoization\n const plot = useMemo(\n () =>\n createMosaicColorLegendPlot({\n colorScale,\n selection,\n domain,\n title,\n width,\n tickFormat,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- deep-equal via serialized key instead of object refs\n [legendSpecKey, selection],\n );\n\n if (!plot) {\n return null;\n }\n\n return (\n <div\n className={cn(\n 'pointer-events-auto rounded-md border px-3 py-2 shadow-lg backdrop-blur-sm',\n 'border-slate-200 bg-white/95 text-slate-900',\n 'dark:border-slate-700 dark:bg-[#1f1d1b]/90 dark:text-slate-100',\n '[&_svg]:block [&_svg]:overflow-visible',\n '[&_svg_line]:stroke-current [&_svg_path]:stroke-current [&_svg_text]:fill-current',\n resolvedTheme === 'dark' &&\n '[&_svg_.domain]:stroke-slate-500 [&_svg_line]:stroke-slate-500',\n resolvedTheme === 'light' &&\n '[&_svg_.domain]:stroke-slate-400 [&_svg_line]:stroke-slate-400',\n className,\n )}\n >\n <VgPlotChart plot={plot} />\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"MosaicColorLegend.js","sourceRoot":"","sources":["../src/MosaicColorLegend.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,uBAAuB,EAAC,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAC,EAAE,EAAE,gBAAgB,EAAE,QAAQ,EAAC,MAAM,cAAc,CAAC;AAE5D,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAiB1C,SAAS,uBAAuB,CAC9B,MAA4D;IAE5D,OAAO,MAAM,KAAK,MAAM,CAAC;AAC3B,CAAC;AAED,SAAS,mBAAmB,CAC1B,UAA4B,EAC5B,MAAyC;IAEzC,IACE,CAAC,UAAU,CAAC,IAAI,KAAK,YAAY;QAC/B,UAAU,CAAC,IAAI,KAAK,WAAW;QAC/B,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC;QACjC,uBAAuB,CAAC,UAAU,CAAC,MAAM,CAAC,EAC1C,CAAC;QACD,OAAO,UAAU,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,UAA4B;IACvD,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,YAAY;YACf,OAAO,QAAQ,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,aAAa;YAChB,OAAO,aAAa,CAAC;QACvB,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,UAAU,CAAC;YACtC,MAAM,IAAI,KAAK,CACb,6BAA8B,WAAgC,CAAC,IAAI,EAAE,CACtE,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,UAA4B;IAC7D,OAAO,CACL,UAAU,CAAC,IAAI,KAAK,YAAY;QAChC,UAAU,CAAC,IAAI,KAAK,WAAW;QAC/B,UAAU,CAAC,IAAI,KAAK,aAAa,CAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,EAC1C,UAAU,EACV,SAAS,EACT,MAAM,EACN,KAAK,EACL,KAAK,GAAG,GAAG,EACX,UAAU,GAAG,KAAK,GACiB;IACnC,MAAM,cAAc,GAAG,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,uBAAuB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC/D,MAAM,cAAc,GAA+B;QACjD,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC9C,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;QACjC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAC1B,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QACf,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACjB,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QAClB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;KACjB,CAAC;IAEF,IAAI,OAAO,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5D,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,SAAS,IAAI,UAAU,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAChE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjE,cAAc,CAAC,IAAI,CACjB,EAAE,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EACtD,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CACjC,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;SAAM,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC3C,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7D,CAAC;SAAM,IAAI,cAAc,EAAE,CAAC;QAC1B,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACrE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IAC/C,OAAO,EAAE,CAAC,WAAW,CAAC;QACpB,GAAG,EAAE,WAAW;QAChB,EAAE,EAAE,yBAAyB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACjE,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,KAAK;QACL,UAAU;QACV,KAAK,EAAE,WAAW;KACnB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAChC,UAAU,EACV,SAAS,EACT,MAAM,EACN,KAAK,EACL,KAAK,EACL,UAAU,EACV,SAAS,GACc;IACvB,MAAM,EAAC,KAAK,EAAC,GAAG,QAAQ,EAAE,CAAC;IAC3B,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;QACnC,UAAU;QACV,MAAM;QACN,KAAK;QACL,KAAK;QACL,UAAU;KACX,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,OAAO,CAClB,GAAG,EAAE,CACH,2BAA2B,CAAC;QAC1B,UAAU;QACV,SAAS;QACT,MAAM;QACN,KAAK;QACL,KAAK;QACL,UAAU;KACX,CAAC;IACJ,+GAA+G;IAC/G,CAAC,aAAa,EAAE,SAAS,CAAC,CAC3B,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,4EAA4E,EAC5E,6CAA6C,EAC7C,gEAAgE,EAChE,wCAAwC,EACxC,mFAAmF,EACnF,aAAa,KAAK,MAAM;YACtB,gEAAgE,EAClE,aAAa,KAAK,OAAO;YACvB,gEAAgE,EAClE,SAAS,CACV,YAED,KAAC,WAAW,IAAC,IAAI,EAAE,IAAI,GAAI,GACvB,CACP,CAAC;AACJ,CAAC","sourcesContent":["import type {ColorScaleConfig} from '@sqlrooms/color-scales';\nimport {resolveColorLegendTitle} from '@sqlrooms/color-scales';\nimport {cn, getResolvedTheme, useTheme} from '@sqlrooms/ui';\nimport {Selection} from '@uwdata/mosaic-core';\nimport * as vg from '@uwdata/vgplot';\nimport {useMemo} from 'react';\nimport {VgPlotChart} from './VgPlotChart';\n\ntype LegendDomainValue = string | number | Date;\n\ntype CreateMosaicColorLegendPlotOptions = {\n colorScale: ColorScaleConfig;\n selection?: Selection;\n domain?: ReadonlyArray<LegendDomainValue>;\n title?: string;\n width?: number;\n tickFormat?: string;\n};\n\nexport type MosaicColorLegendProps = CreateMosaicColorLegendPlotOptions & {\n className?: string;\n};\n\nfunction isExplicitNumericDomain(\n domain: 'auto' | [number, number] | [number, number, number],\n): domain is [number, number] | [number, number, number] {\n return domain !== 'auto';\n}\n\nfunction resolveLegendDomain(\n colorScale: ColorScaleConfig,\n domain?: ReadonlyArray<LegendDomainValue>,\n) {\n if (\n (colorScale.type === 'sequential' ||\n colorScale.type === 'diverging' ||\n colorScale.type === 'quantize') &&\n isExplicitNumericDomain(colorScale.domain)\n ) {\n return colorScale.domain;\n }\n\n return domain;\n}\n\nfunction getVgColorScaleType(colorScale: ColorScaleConfig) {\n switch (colorScale.type) {\n case 'sequential':\n return 'linear';\n case 'diverging':\n return 'diverging';\n case 'quantize':\n return 'quantize';\n case 'quantile':\n return 'quantile';\n case 'threshold':\n return 'threshold';\n case 'categorical':\n return 'categorical';\n default: {\n const _exhaustive: never = colorScale;\n throw new Error(\n `Unknown color scale type: ${(_exhaustive as ColorScaleConfig).type}`,\n );\n }\n }\n}\n\nfunction supportsInteractiveLegend(colorScale: ColorScaleConfig) {\n return (\n colorScale.type === 'sequential' ||\n colorScale.type === 'diverging' ||\n colorScale.type === 'categorical'\n );\n}\n\nexport function createMosaicColorLegendPlot({\n colorScale,\n selection,\n domain,\n title,\n width = 220,\n tickFormat = '.1f',\n}: CreateMosaicColorLegendPlotOptions) {\n const resolvedDomain = resolveLegendDomain(colorScale, domain);\n const legendTitle = resolveColorLegendTitle(colorScale, title);\n const plotAttributes: Array<(plot: any) => void> = [\n vg.colorScale(getVgColorScaleType(colorScale)),\n vg.colorScheme(colorScale.scheme),\n vg.colorLabel(legendTitle),\n vg.marginTop(0),\n vg.marginRight(0),\n vg.marginBottom(0),\n vg.marginLeft(0),\n ];\n\n if ('clamp' in colorScale && colorScale.clamp !== undefined) {\n plotAttributes.push(vg.colorClamp(colorScale.clamp));\n }\n\n if ('reverse' in colorScale && colorScale.reverse !== undefined) {\n plotAttributes.push(vg.colorReverse(colorScale.reverse));\n }\n\n if (colorScale.type === 'diverging') {\n if (Array.isArray(resolvedDomain) && resolvedDomain.length === 3) {\n plotAttributes.push(\n vg.colorDomain([resolvedDomain[0], resolvedDomain[2]]),\n vg.colorPivot(resolvedDomain[1]),\n );\n } else if (Array.isArray(resolvedDomain) && resolvedDomain.length === 2) {\n plotAttributes.push(vg.colorDomain(resolvedDomain));\n }\n } else if (colorScale.type === 'threshold') {\n plotAttributes.push(vg.colorDomain(colorScale.thresholds));\n } else if (resolvedDomain) {\n plotAttributes.push(vg.colorDomain(resolvedDomain));\n }\n\n if (colorScale.type === 'quantize' || colorScale.type === 'quantile') {\n plotAttributes.push(vg.colorN(colorScale.bins ?? 5));\n }\n\n const backingPlot = vg.plot(...plotAttributes);\n return vg.colorLegend({\n for: backingPlot,\n as: supportsInteractiveLegend(colorScale) ? selection : undefined,\n field: colorScale.field,\n width,\n tickFormat,\n label: legendTitle,\n });\n}\n\nexport function MosaicColorLegend({\n colorScale,\n selection,\n domain,\n title,\n width,\n tickFormat,\n className,\n}: MosaicColorLegendProps) {\n const {theme} = useTheme();\n const resolvedTheme = getResolvedTheme(theme);\n const legendSpecKey = JSON.stringify({\n colorScale,\n domain,\n title,\n width,\n tickFormat,\n });\n\n const plot = useMemo(\n () =>\n createMosaicColorLegendPlot({\n colorScale,\n selection,\n domain,\n title,\n width,\n tickFormat,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- deep-equal via serialized key instead of object refs\n [legendSpecKey, selection],\n );\n\n if (!plot) {\n return null;\n }\n\n return (\n <div\n className={cn(\n 'pointer-events-auto rounded-md border px-3 py-2 shadow-lg backdrop-blur-sm',\n 'border-slate-200 bg-white/95 text-slate-900',\n 'dark:border-slate-700 dark:bg-[#1f1d1b]/90 dark:text-slate-100',\n '[&_svg]:block [&_svg]:overflow-visible',\n '[&_svg_line]:stroke-current [&_svg_path]:stroke-current [&_svg_text]:fill-current',\n resolvedTheme === 'dark' &&\n '[&_svg_.domain]:stroke-slate-500 [&_svg_line]:stroke-slate-500',\n resolvedTheme === 'light' &&\n '[&_svg_.domain]:stroke-slate-400 [&_svg_line]:stroke-slate-400',\n className,\n )}\n >\n <VgPlotChart plot={plot} />\n </div>\n );\n}\n"]}
@@ -52,6 +52,7 @@ export type MosaicErrorConnection = {
52
52
  error: unknown;
53
53
  };
54
54
  export type MosaicConnection = MosaicIdleConnection | MosaicLoadingConnection | MosaicReadyConnection | MosaicErrorConnection;
55
+ export type ConnectionStatus = MosaicConnection['status'];
55
56
  export type MosaicSliceState = {
56
57
  mosaic: SliceFunctions & {
57
58
  connection: MosaicConnection;
@@ -1 +1 @@
1
- {"version":3,"file":"MosaicSlice.d.ts","sourceRoot":"","sources":["../src/MosaicSlice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MosaicSlice.d.ts","sourceRoot":"","sources":["../src/MosaicSlice.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MosaicSlice.js","sourceRoot":"","sources":["../src/MosaicSlice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EACL,qBAAqB,GAGtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,WAAW,EACX,gBAAgB,GAEjB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAGL,WAAW,EACX,UAAU,EACV,SAAS,EACT,aAAa,GACd,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EACL,+BAA+B,EAC/B,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAoF9C,MAAM,UAAU,yBAAyB,CACvC,KAAkC;IAElC,OAAO,EAAC,GAAG,KAAK,EAAsB,CAAC;AACzC,CAAC;AAQD,MAAM,UAAU,iBAAiB,CAAC,QAAgC,EAAE;IAClE,OAAO,WAAW,CAGhB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACtB,MAAM,EAAE;YACN,MAAM,EAAE,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC;YAChD,UAAU,EAAE,EAAC,MAAM,EAAE,MAAM,EAAC;YAC5B,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,EAAE;YAEd,KAAK,CAAC,UAAU;gBACd,IAAI,eAAsC,CAAC;gBAC3C,IAAI,mBAAiC,CAAC;gBACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;oBACvB,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC;gBAChD,CAAC,CAAC,CACH,CAAC;gBACF,IAAI,CAAC;oBACH,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;wBACtB,mBAAmB,GAAG,KAAK,CAAC,WAAW,CAAC;wBACxC,8BAA8B,CAAC,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;oBACpE,CAAC;yBAAM,CAAC;wBACN,MAAM,WAAW,GAAG,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;wBAClD,mBAAmB,GAAG,WAAW,EAAE,CAAC;wBACpC,eAAe,GAAG,qBAAqB,CAAC,WAAW,CAAC;4BAClD,CAAC,CAAC,MAAM,aAAa,CAAC;gCAClB,6DAA6D;gCAC7D,wFAAwF;gCACxF,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE;gCAC3B,6DAA6D;gCAC7D,qCAAqC;gCACrC,UAAU,EAAE,WAAW,CAAC,aAAa,EAAE;6BACxC,CAAC;4BACJ,CAAC,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC;wBAC7C,8BAA8B,CAAC,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;wBAClE,mBAAmB,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;oBACzD,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;wBACvB,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,EAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAC,CAAC;oBACrD,CAAC,CAAC,CACH,CAAC;oBACF,MAAM,KAAK,CAAC;gBACd,CAAC;gBACD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;oBACvB,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG;wBACxB,MAAM,EAAE,OAAO;wBACf,SAAS,EAAE,eAAe;wBAC1B,WAAW,EAAE,mBAAmB;qBACjC,CAAC;gBACJ,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;YAED,KAAK,CAAC,OAAO;gBACX,GAAG,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YACnC,CAAC;YAED,SAAS,CAAC,MAAyB;gBACjC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;oBACvB,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;gBAC/B,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;YAED,YAAY,CACV,IAAY,EACZ,OAA2C,aAAa;gBAExD,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC/C,IAAI,QAAQ;oBAAE,OAAO,QAAQ,CAAC;gBAE9B,MAAM,SAAS,GACb,IAAI,KAAK,aAAa;oBACpB,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE;oBACzB,CAAC,CAAC,IAAI,KAAK,QAAQ;wBACjB,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE;wBACpB,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;gBAE1B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;oBACvB,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;gBAC5C,CAAC,CAAC,CACH,CAAC;gBACF,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,YAAY,CAAC,OAA4B;gBACvC,MAAM,EAAC,UAAU,EAAC,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC;gBAClC,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;oBAClC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBACjD,CAAC;gBAED,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAEpC,mCAAmC;gBACnC,MAAM,SAAS,GACb,OAAO,CAAC,SAAS;oBACjB,CAAC,OAAO,CAAC,aAAa;wBACpB,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC;wBAClD,CAAC,CAAC,SAAS,CAAC,CAAC;gBAEjB,oEAAoE;gBACpE,MAAM,kBAAkB,GAAG,CAAC,IAAa,EAAE,EAAE;oBAC3C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;wBACvB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBACzC,IAAI,OAAO,EAAE,CAAC;4BACZ,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;4BACpB,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;4BAC1B,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;wBAC5B,CAAC;oBACH,CAAC,CAAC,CACH,CAAC;oBACF,qCAAqC;oBACrC,OAAO,CAAC,WAAW,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;gBACnD,CAAC,CAAC;gBACF,MAAM,mBAAmB,GAAG,GAAG,EAAE;oBAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;wBACvB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBACzC,IAAI,OAAO,EAAE,CAAC;4BACZ,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;4BACzB,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;wBAC5B,CAAC;oBACH,CAAC,CAAC,CACH,CAAC;gBACJ,CAAC,CAAC;gBACF,MAAM,iBAAiB,GAAG,CAAC,KAAY,EAAE,EAAE;oBACzC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;wBACvB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBACzC,IAAI,OAAO,EAAE,CAAC;4BACZ,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;4BAC1B,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;wBACxB,CAAC;oBACH,CAAC,CAAC,CACH,CAAC;oBACF,4CAA4C;oBAC5C,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;oBACvB,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC,CAAC;gBAEF,MAAM,MAAM,GAAG,UAAU,CAAC;oBACxB,WAAW,EAAE,UAAU,CAAC,WAAW;oBACnC,SAAS;oBACT,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,WAAW,EAAE,kBAAkB;oBAC/B,YAAY,EAAE,mBAAmB;oBACjC,UAAU,EAAE,iBAAiB;iBAC9B,CAAC,CAAC;gBAEH,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;oBACvB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;wBACzB,EAAE;wBACF,MAAM;wBACN,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;wBACrB,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,SAAS;wBAChB,SAAS;wBACT,mBAAmB,EAAE,OAAO,CAAC,WAAW;4BACtC,CAAC,CAAC,CAAC,MAAe,EAAE,EAAE,CAClB,OAAO,CAAC,WAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;4BACrD,CAAC,CAAC,SAAS;qBACd,CAAC;gBACJ,CAAC,CAAC,CACH,CAAC;gBAEF,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,YAAY,CACV,OAIC;gBAED,MAAM,EAAC,UAAU,EAAE,OAAO,EAAC,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC;gBAC3C,IAAI,UAAU,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;oBAClC,OAAO,CAAC,wDAAwD;gBAClE,CAAC;gBAED,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAErC,mCAAmC;gBACnC,MAAM,SAAS,GACb,OAAO,CAAC,SAAS;oBACjB,CAAC,OAAO,CAAC,aAAa;wBACpB,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC;wBAClD,CAAC,CAAC,SAAS,CAAC,CAAC;gBAEjB,+CAA+C;gBAC/C,uEAAuE;gBACvE,sEAAsE;gBACtE,gDAAgD;gBAChD,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBACjD,OAAO,CAAC,oDAAoD;gBAC9D,CAAC;gBAED,oDAAoD;gBACpD,IAAI,QAAQ,EAAE,CAAC;oBACb,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACzC,CAAC;gBAED,gGAAgG;gBAChG,MAAM,kBAAkB,GAAG,CAAC,IAAa,EAAE,EAAE;oBAC3C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;wBACvB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBACjD,IAAI,OAAO,EAAE,CAAC;4BACZ,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;4BACpB,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;4BAC1B,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;wBAC5B,CAAC;oBACH,CAAC,CAAC,CACH,CAAC;oBACF,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;oBAC5C,qCAAqC;oBACrC,OAAO,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC;oBACnC,6CAA6C;oBAC7C,OAAO,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC;gBACnC,CAAC,CAAC;gBACF,MAAM,mBAAmB,GAAG,GAAG,EAAE;oBAC/B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;wBACvB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBACjD,IAAI,OAAO,EAAE,CAAC;4BACZ,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;4BACzB,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;wBAC5B,CAAC;oBACH,CAAC,CAAC,CACH,CAAC;gBACJ,CAAC,CAAC;gBACF,MAAM,iBAAiB,GAAG,CAAC,KAAY,EAAE,EAAE;oBACzC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;wBACvB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBACjD,IAAI,OAAO,EAAE,CAAC;4BACZ,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;4BAC1B,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;wBACxB,CAAC;oBACH,CAAC,CAAC,CACH,CAAC;oBACF,4CAA4C;oBAC5C,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;oBACvB,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC;oBAC9B,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC,CAAC;gBAEF,MAAM,MAAM,GAAG,UAAU,CAAC;oBACxB,WAAW,EAAE,UAAU,CAAC,WAAW;oBACnC,SAAS;oBACT,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,WAAW,EAAE,kBAAkB;oBAC/B,YAAY,EAAE,mBAAmB;oBACjC,UAAU,EAAE,iBAAiB;iBAC9B,CAAC,CAAC;gBAEH,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;oBACvB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;wBACjC,EAAE,EAAE,OAAO,CAAC,EAAE;wBACd,MAAM;wBACN,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;wBACrB,SAAS,EAAE,IAAI;wBACf,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,SAAS;wBAChB,SAAS;wBACT,mBAAmB,EAAE,OAAO,CAAC,aAAa;4BACxC,CAAC,CAAC,CAAC,MAAe,EAAE,EAAE,CAClB,OAAO,CAAC,aAAc,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;4BACvD,CAAC,CAAC,SAAS;qBACd,CAAC;gBACJ,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;YAED,aAAa,CAAC,EAAU;gBACtB,MAAM,EAAC,OAAO,EAAC,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC;gBAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC5B,IAAI,CAAC,OAAO;oBAAE,OAAO;gBAErB,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAEzB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;oBACvB,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAClC,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;YAED,iBAAiB;gBACf,MAAM,EAAC,OAAO,EAAC,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC;gBAC/B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBACzC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC3B,CAAC,CAAC,CAAC;gBAEH,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;oBACvB,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;gBAC5B,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;SACF;KACF,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,8BAA8B,CACrC,iBAA8B,EAC9B,OAAmC;IAEnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,iBAAiB,CAAC,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC1D,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,iBAAiB,CAAC,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAC5D,CAAC;AACH,CAAC;AAID,MAAM,UAAU,kBAAkB,CAChC,QAAkD;IAElD,OAAO,gBAAgB,CAAwB,CAAC,KAAK,EAAE,EAAE,CACvD,QAAQ,CAAC,KAA8C,CAAC,CACzD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,2BAA2B,CAAC,SAA0B;IAC7D,OAAO;QACL,KAAK,EAAE,CAAC,KAAK,EACX,KAA8D,EAC9D,EAAE;YACF,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC;YACxC,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBACzB,MAAM,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACnC,OAAO,SAAgB,CAAC;YAC1B,CAAC;YACD,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,SAAS,CACpC,KAAK,CAAC,GAAG,CACV,CAAC;gBACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAQ,CAAC;YACjC,CAAC;YACD,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;gBAC1B,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpD,OAAO,+BAA+B,CAAC,UAAU,CAAQ,CAAC;YAC5D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,kCAAkC,SAAS,IAAI,CAAC,CAAC;QACnE,CAAC,CAAuB;KACzB,CAAC;AACJ,CAAC","sourcesContent":["import {createId} from '@paralleldrive/cuid2';\nimport {\n isWasmDuckDbConnector,\n type DuckDbConnector,\n type DuckDbSliceState,\n} from '@sqlrooms/duckdb';\nimport {\n BaseRoomStoreState,\n createSlice,\n useBaseRoomStore,\n type SliceFunctions,\n} from '@sqlrooms/room-store';\nimport type {\n ArrowQueryRequest,\n ExecQueryRequest,\n JSONQueryRequest,\n} from '@uwdata/mosaic-core';\nimport {\n Connector,\n Coordinator,\n coordinator,\n makeClient,\n Selection,\n wasmConnector,\n} from '@uwdata/mosaic-core';\nimport {Query} from '@uwdata/mosaic-sql';\nimport type {Table as ArrowTable} from 'apache-arrow';\nimport {produce} from 'immer';\nimport {z} from 'zod';\nimport {\n createMosaicTableFromArrowTable,\n toArrowClientResult,\n} from './tableInterop';\n\nexport const MosaicSliceConfig = z.object({});\nexport type MosaicSliceConfig = z.infer<typeof MosaicSliceConfig>;\n\nexport type MosaicPreAggregateOptions = {\n /** Database schema/namespace for Mosaic pre-aggregate tables. */\n schema?: string;\n /** Enable or disable Mosaic's pre-aggregation optimization. */\n enabled?: boolean;\n};\n\n// Client configuration options\nexport type MosaicClientOptions = {\n /** Unique identifier for this client */\n id?: string;\n /** Selection name for cross-filtering (will create if doesn't exist) */\n selectionName?: string;\n /** The selection to subscribe to for cross-filtering */\n selection?: Selection;\n /** Query builder function that receives the current filter */\n query: (filter: unknown) => ReturnType<typeof Query.from>;\n /** Callback when query results are received */\n queryResult?: (result: ArrowTable) => void;\n /** Callback when query execution fails */\n queryError?: (error: Error) => void;\n};\n\n// Tracked client info\nexport type TrackedClient = {\n id: string;\n client: ReturnType<typeof makeClient>;\n createdAt: number;\n isLoading: boolean;\n data: unknown | null;\n error?: Error;\n selection?: Selection; // Track for change detection\n queryResultCallback?: (result: ArrowTable) => void; // External callback\n};\n\nexport type MosaicIdleConnection = {status: 'idle'};\nexport type MosaicLoadingConnection = {status: 'loading'};\nexport type MosaicReadyConnection = {\n status: 'ready';\n connector?: Connector;\n coordinator: Coordinator;\n};\nexport type MosaicErrorConnection = {status: 'error'; error: unknown};\n\nexport type MosaicConnection =\n | MosaicIdleConnection\n | MosaicLoadingConnection\n | MosaicReadyConnection\n | MosaicErrorConnection;\n\nexport type MosaicSliceState = {\n mosaic: SliceFunctions & {\n connection: MosaicConnection;\n config: MosaicSliceConfig;\n /** Record of registered clients by id */\n clients: Record<string, TrackedClient>;\n /** Named selections for cross-filtering (e.g., 'brush', 'hover') */\n selections: Record<string, Selection>;\n initialize: () => Promise<void>;\n /** Get or create a named selection for cross-filtering */\n getSelection: (\n name: string,\n type?: 'crossfilter' | 'single' | 'union',\n ) => Selection;\n /** Create a mosaic client and register it */\n createClient: (options: MosaicClientOptions) => string;\n /** Ensure a client exists with given options (idempotent - creates or updates as needed) */\n ensureClient: (\n options: MosaicClientOptions & {\n id: string;\n onQueryResult?: (result: ArrowTable) => void;\n onQueryError?: (error: Error) => void;\n },\n ) => void;\n /** Disconnect and remove a client by id */\n destroyClient: (id: string) => void;\n /** Disconnect all clients (useful for cleanup) */\n destroyAllClients: () => void;\n };\n};\n\nexport function createDefaultMosaicConfig(\n props?: Partial<MosaicSliceConfig>,\n): MosaicSliceConfig {\n return {...props} as MosaicSliceConfig;\n}\n\nexport type CreateMosaicSliceProps = {\n config?: Partial<MosaicSliceConfig>;\n coordinator?: Coordinator;\n preagg?: MosaicPreAggregateOptions;\n};\n\nexport function createMosaicSlice(props: CreateMosaicSliceProps = {}) {\n return createSlice<\n MosaicSliceState,\n BaseRoomStoreState & DuckDbSliceState & MosaicSliceState\n >((set, get, store) => ({\n mosaic: {\n config: createDefaultMosaicConfig(props?.config),\n connection: {status: 'idle'},\n clients: {},\n selections: {},\n\n async initialize() {\n let mosaicConnector: Connector | undefined;\n let resolvedCoordinator!: Coordinator;\n set((state) =>\n produce(state, (draft) => {\n draft.mosaic.connection = {status: 'loading'};\n }),\n );\n try {\n if (props.coordinator) {\n resolvedCoordinator = props.coordinator;\n applyMosaicPreAggregateOptions(resolvedCoordinator, props.preagg);\n } else {\n const dbConnector = await get().db.getConnector();\n resolvedCoordinator = coordinator();\n mosaicConnector = isWasmDuckDbConnector(dbConnector)\n ? await wasmConnector({\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore - We might be using a different version of duckdb-wasm than mosaic expects\n duckDb: dbConnector.getDb(),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore - same version mismatch\n connection: dbConnector.getConnection(),\n })\n : createDuckDbMosaicConnector(dbConnector);\n applyMosaicPreAggregateOptions(resolvedCoordinator, props.preagg);\n resolvedCoordinator.databaseConnector(mosaicConnector);\n }\n } catch (error) {\n set((state) =>\n produce(state, (draft) => {\n draft.mosaic.connection = {status: 'error', error};\n }),\n );\n throw error;\n }\n set((state) =>\n produce(state, (draft) => {\n draft.mosaic.connection = {\n status: 'ready',\n connector: mosaicConnector,\n coordinator: resolvedCoordinator,\n };\n }),\n );\n },\n\n async destroy() {\n get().mosaic.destroyAllClients();\n },\n\n setConfig(config: MosaicSliceConfig) {\n set((state) =>\n produce(state, (draft) => {\n draft.mosaic.config = config;\n }),\n );\n },\n\n getSelection(\n name: string,\n type: 'crossfilter' | 'single' | 'union' = 'crossfilter',\n ) {\n const existing = get().mosaic.selections[name];\n if (existing) return existing;\n\n const selection =\n type === 'crossfilter'\n ? Selection.crossfilter()\n : type === 'single'\n ? Selection.single()\n : Selection.union();\n\n set((state) =>\n produce(state, (draft) => {\n draft.mosaic.selections[name] = selection;\n }),\n );\n return selection;\n },\n\n createClient(options: MosaicClientOptions) {\n const {connection} = get().mosaic;\n if (connection.status !== 'ready') {\n throw new Error('Mosaic connection not ready');\n }\n\n const id = options.id ?? createId();\n\n // Determine which selection to use\n const selection =\n options.selection ??\n (options.selectionName\n ? get().mosaic.getSelection(options.selectionName)\n : undefined);\n\n // Wrap queryResult to update store state AND call external callback\n const wrappedQueryResult = (data: unknown) => {\n set((state) =>\n produce(state, (draft) => {\n const tracked = draft.mosaic.clients[id];\n if (tracked) {\n tracked.data = data;\n tracked.isLoading = false;\n tracked.error = undefined;\n }\n }),\n );\n // Call external callback if provided\n options.queryResult?.(toArrowClientResult(data));\n };\n const wrappedQueryPending = () => {\n set((state) =>\n produce(state, (draft) => {\n const tracked = draft.mosaic.clients[id];\n if (tracked) {\n tracked.isLoading = true;\n tracked.error = undefined;\n }\n }),\n );\n };\n const wrappedQueryError = (error: Error) => {\n set((state) =>\n produce(state, (draft) => {\n const tracked = draft.mosaic.clients[id];\n if (tracked) {\n tracked.isLoading = false;\n tracked.error = error;\n }\n }),\n );\n // Disable client to prevent further queries\n client.enabled = false;\n options.queryError?.(error);\n };\n\n const client = makeClient({\n coordinator: connection.coordinator,\n selection,\n query: options.query,\n queryResult: wrappedQueryResult,\n queryPending: wrappedQueryPending,\n queryError: wrappedQueryError,\n });\n\n set((state) =>\n produce(state, (draft) => {\n draft.mosaic.clients[id] = {\n id,\n client,\n createdAt: Date.now(),\n isLoading: true,\n data: null,\n error: undefined,\n selection,\n queryResultCallback: options.queryResult\n ? (result: unknown) =>\n options.queryResult!(toArrowClientResult(result))\n : undefined,\n };\n }),\n );\n\n return id;\n },\n\n ensureClient(\n options: MosaicClientOptions & {\n id: string;\n onQueryResult?: (result: ArrowTable) => void;\n onQueryError?: (error: Error) => void;\n },\n ) {\n const {connection, clients} = get().mosaic;\n if (connection.status !== 'ready') {\n return; // Silently return if not ready - hook will handle retry\n }\n\n const existing = clients[options.id];\n\n // Determine which selection to use\n const selection =\n options.selection ??\n (options.selectionName\n ? get().mosaic.getSelection(options.selectionName)\n : undefined);\n\n // Check if client exists and selection matches\n // Note: If query or callback changes, we recreate the client to ensure\n // the latest versions are used. This is simpler than trying to update\n // the bound queryResult callback in makeClient.\n if (existing && existing.selection === selection) {\n return; // No-op - client already exists with same selection\n }\n\n // If exists but selection changed, destroy it first\n if (existing) {\n get().mosaic.destroyClient(options.id);\n }\n\n // Create new client with wrapped queryResult that calls both store update and external callback\n const wrappedQueryResult = (data: unknown) => {\n set((state) =>\n produce(state, (draft) => {\n const tracked = draft.mosaic.clients[options.id];\n if (tracked) {\n tracked.data = data;\n tracked.isLoading = false;\n tracked.error = undefined;\n }\n }),\n );\n const arrowData = toArrowClientResult(data);\n // Call external callback if provided\n options.onQueryResult?.(arrowData);\n // Also call original queryResult if provided\n options.queryResult?.(arrowData);\n };\n const wrappedQueryPending = () => {\n set((state) =>\n produce(state, (draft) => {\n const tracked = draft.mosaic.clients[options.id];\n if (tracked) {\n tracked.isLoading = true;\n tracked.error = undefined;\n }\n }),\n );\n };\n const wrappedQueryError = (error: Error) => {\n set((state) =>\n produce(state, (draft) => {\n const tracked = draft.mosaic.clients[options.id];\n if (tracked) {\n tracked.isLoading = false;\n tracked.error = error;\n }\n }),\n );\n // Disable client to prevent further queries\n client.enabled = false;\n options.onQueryError?.(error);\n options.queryError?.(error);\n };\n\n const client = makeClient({\n coordinator: connection.coordinator,\n selection,\n query: options.query,\n queryResult: wrappedQueryResult,\n queryPending: wrappedQueryPending,\n queryError: wrappedQueryError,\n });\n\n set((state) =>\n produce(state, (draft) => {\n draft.mosaic.clients[options.id] = {\n id: options.id,\n client,\n createdAt: Date.now(),\n isLoading: true,\n data: null,\n error: undefined,\n selection,\n queryResultCallback: options.onQueryResult\n ? (result: unknown) =>\n options.onQueryResult!(toArrowClientResult(result))\n : undefined,\n };\n }),\n );\n },\n\n destroyClient(id: string) {\n const {clients} = get().mosaic;\n const tracked = clients[id];\n if (!tracked) return;\n\n tracked.client.destroy();\n\n set((state) =>\n produce(state, (draft) => {\n delete draft.mosaic.clients[id];\n }),\n );\n },\n\n destroyAllClients() {\n const {clients} = get().mosaic;\n Object.values(clients).forEach((tracked) => {\n tracked.client.destroy();\n });\n\n set((state) =>\n produce(state, (draft) => {\n draft.mosaic.clients = {};\n }),\n );\n },\n },\n }));\n}\n\nfunction applyMosaicPreAggregateOptions(\n mosaicCoordinator: Coordinator,\n options?: MosaicPreAggregateOptions,\n) {\n if (!options) {\n return;\n }\n if (options.schema !== undefined) {\n mosaicCoordinator.preaggregator.schema = options.schema;\n }\n if (options.enabled !== undefined) {\n mosaicCoordinator.preaggregator.enabled = options.enabled;\n }\n}\n\nexport type DuckDbSliceStateWithMosaic = DuckDbSliceState & MosaicSliceState;\n\nexport function useStoreWithMosaic<T>(\n selector: (state: DuckDbSliceStateWithMosaic) => T,\n): T {\n return useBaseRoomStore<BaseRoomStoreState, T>((state) =>\n selector(state as unknown as DuckDbSliceStateWithMosaic),\n );\n}\n\n/**\n * Adapts a {@link DuckDbConnector} to the Mosaic {@link Connector} interface.\n *\n * For `'arrow'` queries the Apache Arrow table returned by the connector is\n * converted via {@link createMosaicTableFromArrowTable} into a flechette\n * `Table`, which is the shape Mosaic consumers expect (with `.toColumns()`).\n * For `'json'` queries, rows are materialized with {@link Array.from} which\n * may have performance/memory implications for very large result sets.\n * The `as any` casts on the return type are an intentional adapter trade-off\n * to satisfy the polymorphic {@link Connector['query']} signature.\n */\nfunction createDuckDbMosaicConnector(connector: DuckDbConnector): Connector {\n return {\n query: (async (\n query: ArrowQueryRequest | ExecQueryRequest | JSONQueryRequest,\n ) => {\n const queryType = query.type ?? 'arrow';\n if (queryType === 'exec') {\n await connector.execute(query.sql);\n return undefined as any;\n }\n if (queryType === 'json') {\n const rows = await connector.queryJson<Record<string, unknown>>(\n query.sql,\n );\n return Array.from(rows) as any;\n }\n if (queryType === 'arrow') {\n const arrowTable = await connector.query(query.sql);\n return createMosaicTableFromArrowTable(arrowTable) as any;\n }\n throw new Error(`Unsupported Mosaic query type \"${queryType}\".`);\n }) as Connector['query'],\n };\n}\n"]}
1
+ {"version":3,"file":"MosaicSlice.js","sourceRoot":"","sources":["../src/MosaicSlice.ts"],"names":[],"mappings":"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","sourcesContent":["import {createId} from '@paralleldrive/cuid2';\nimport {\n isWasmDuckDbConnector,\n type DuckDbConnector,\n type DuckDbSliceState,\n} from '@sqlrooms/duckdb';\nimport {\n BaseRoomStoreState,\n createSlice,\n useBaseRoomStore,\n type SliceFunctions,\n} from '@sqlrooms/room-store';\nimport type {\n ArrowQueryRequest,\n ExecQueryRequest,\n JSONQueryRequest,\n} from '@uwdata/mosaic-core';\nimport {\n Connector,\n Coordinator,\n coordinator,\n makeClient,\n Selection,\n wasmConnector,\n} from '@uwdata/mosaic-core';\nimport {Query} from '@uwdata/mosaic-sql';\nimport type {Table as ArrowTable} from 'apache-arrow';\nimport {produce} from 'immer';\nimport {z} from 'zod';\nimport {\n createMosaicTableFromArrowTable,\n toArrowClientResult,\n} from './tableInterop';\n\nexport const MosaicSliceConfig = z.object({});\nexport type MosaicSliceConfig = z.infer<typeof MosaicSliceConfig>;\n\nexport type MosaicPreAggregateOptions = {\n /** Database schema/namespace for Mosaic pre-aggregate tables. */\n schema?: string;\n /** Enable or disable Mosaic's pre-aggregation optimization. */\n enabled?: boolean;\n};\n\n// Client configuration options\nexport type MosaicClientOptions = {\n /** Unique identifier for this client */\n id?: string;\n /** Selection name for cross-filtering (will create if doesn't exist) */\n selectionName?: string;\n /** The selection to subscribe to for cross-filtering */\n selection?: Selection;\n /** Query builder function that receives the current filter */\n query: (filter: unknown) => ReturnType<typeof Query.from>;\n /** Callback when query results are received */\n queryResult?: (result: ArrowTable) => void;\n /** Callback when query execution fails */\n queryError?: (error: Error) => void;\n};\n\n// Tracked client info\nexport type TrackedClient = {\n id: string;\n client: ReturnType<typeof makeClient>;\n createdAt: number;\n isLoading: boolean;\n data: unknown | null;\n error?: Error;\n selection?: Selection; // Track for change detection\n queryResultCallback?: (result: ArrowTable) => void; // External callback\n};\n\nexport type MosaicIdleConnection = {status: 'idle'};\nexport type MosaicLoadingConnection = {status: 'loading'};\nexport type MosaicReadyConnection = {\n status: 'ready';\n connector?: Connector;\n coordinator: Coordinator;\n};\nexport type MosaicErrorConnection = {status: 'error'; error: unknown};\n\nexport type MosaicConnection =\n | MosaicIdleConnection\n | MosaicLoadingConnection\n | MosaicReadyConnection\n | MosaicErrorConnection;\n\nexport type ConnectionStatus = MosaicConnection['status'];\n\nexport type MosaicSliceState = {\n mosaic: SliceFunctions & {\n connection: MosaicConnection;\n config: MosaicSliceConfig;\n /** Record of registered clients by id */\n clients: Record<string, TrackedClient>;\n /** Named selections for cross-filtering (e.g., 'brush', 'hover') */\n selections: Record<string, Selection>;\n initialize: () => Promise<void>;\n /** Get or create a named selection for cross-filtering */\n getSelection: (\n name: string,\n type?: 'crossfilter' | 'single' | 'union',\n ) => Selection;\n /** Create a mosaic client and register it */\n createClient: (options: MosaicClientOptions) => string;\n /** Ensure a client exists with given options (idempotent - creates or updates as needed) */\n ensureClient: (\n options: MosaicClientOptions & {\n id: string;\n onQueryResult?: (result: ArrowTable) => void;\n onQueryError?: (error: Error) => void;\n },\n ) => void;\n /** Disconnect and remove a client by id */\n destroyClient: (id: string) => void;\n /** Disconnect all clients (useful for cleanup) */\n destroyAllClients: () => void;\n };\n};\n\nexport function createDefaultMosaicConfig(\n props?: Partial<MosaicSliceConfig>,\n): MosaicSliceConfig {\n return {...props} as MosaicSliceConfig;\n}\n\nexport type CreateMosaicSliceProps = {\n config?: Partial<MosaicSliceConfig>;\n coordinator?: Coordinator;\n preagg?: MosaicPreAggregateOptions;\n};\n\nexport function createMosaicSlice(props: CreateMosaicSliceProps = {}) {\n return createSlice<\n MosaicSliceState,\n BaseRoomStoreState & DuckDbSliceState & MosaicSliceState\n >((set, get, store) => ({\n mosaic: {\n config: createDefaultMosaicConfig(props?.config),\n connection: {status: 'idle'},\n clients: {},\n selections: {},\n\n async initialize() {\n let mosaicConnector: Connector | undefined;\n let resolvedCoordinator!: Coordinator;\n set((state) =>\n produce(state, (draft) => {\n draft.mosaic.connection = {status: 'loading'};\n }),\n );\n try {\n if (props.coordinator) {\n resolvedCoordinator = props.coordinator;\n applyMosaicPreAggregateOptions(resolvedCoordinator, props.preagg);\n } else {\n const dbConnector = await get().db.getConnector();\n resolvedCoordinator = coordinator();\n mosaicConnector = isWasmDuckDbConnector(dbConnector)\n ? await wasmConnector({\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore - We might be using a different version of duckdb-wasm than mosaic expects\n duckDb: dbConnector.getDb(),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore - same version mismatch\n connection: dbConnector.getConnection(),\n })\n : createDuckDbMosaicConnector(dbConnector);\n applyMosaicPreAggregateOptions(resolvedCoordinator, props.preagg);\n resolvedCoordinator.databaseConnector(mosaicConnector);\n }\n } catch (error) {\n set((state) =>\n produce(state, (draft) => {\n draft.mosaic.connection = {status: 'error', error};\n }),\n );\n throw error;\n }\n set((state) =>\n produce(state, (draft) => {\n draft.mosaic.connection = {\n status: 'ready',\n connector: mosaicConnector,\n coordinator: resolvedCoordinator,\n };\n }),\n );\n },\n\n async destroy() {\n get().mosaic.destroyAllClients();\n },\n\n setConfig(config: MosaicSliceConfig) {\n set((state) =>\n produce(state, (draft) => {\n draft.mosaic.config = config;\n }),\n );\n },\n\n getSelection(\n name: string,\n type: 'crossfilter' | 'single' | 'union' = 'crossfilter',\n ) {\n const existing = get().mosaic.selections[name];\n if (existing) return existing;\n\n const selection =\n type === 'crossfilter'\n ? Selection.crossfilter()\n : type === 'single'\n ? Selection.single()\n : Selection.union();\n\n set((state) =>\n produce(state, (draft) => {\n draft.mosaic.selections[name] = selection;\n }),\n );\n return selection;\n },\n\n createClient(options: MosaicClientOptions) {\n const {connection} = get().mosaic;\n if (connection.status !== 'ready') {\n throw new Error('Mosaic connection not ready');\n }\n\n const id = options.id ?? createId();\n\n // Determine which selection to use\n const selection =\n options.selection ??\n (options.selectionName\n ? get().mosaic.getSelection(options.selectionName)\n : undefined);\n\n // Wrap queryResult to update store state AND call external callback\n const wrappedQueryResult = (data: unknown) => {\n set((state) =>\n produce(state, (draft) => {\n const tracked = draft.mosaic.clients[id];\n if (tracked) {\n tracked.data = data;\n tracked.isLoading = false;\n tracked.error = undefined;\n }\n }),\n );\n // Call external callback if provided\n options.queryResult?.(toArrowClientResult(data));\n };\n const wrappedQueryPending = () => {\n set((state) =>\n produce(state, (draft) => {\n const tracked = draft.mosaic.clients[id];\n if (tracked) {\n tracked.isLoading = true;\n tracked.error = undefined;\n }\n }),\n );\n };\n const wrappedQueryError = (error: Error) => {\n set((state) =>\n produce(state, (draft) => {\n const tracked = draft.mosaic.clients[id];\n if (tracked) {\n tracked.isLoading = false;\n tracked.error = error;\n }\n }),\n );\n // Disable client to prevent further queries\n client.enabled = false;\n options.queryError?.(error);\n };\n\n const client = makeClient({\n coordinator: connection.coordinator,\n selection,\n query: options.query,\n queryResult: wrappedQueryResult,\n queryPending: wrappedQueryPending,\n queryError: wrappedQueryError,\n });\n\n set((state) =>\n produce(state, (draft) => {\n draft.mosaic.clients[id] = {\n id,\n client,\n createdAt: Date.now(),\n isLoading: true,\n data: null,\n error: undefined,\n selection,\n queryResultCallback: options.queryResult\n ? (result: unknown) =>\n options.queryResult!(toArrowClientResult(result))\n : undefined,\n };\n }),\n );\n\n return id;\n },\n\n ensureClient(\n options: MosaicClientOptions & {\n id: string;\n onQueryResult?: (result: ArrowTable) => void;\n onQueryError?: (error: Error) => void;\n },\n ) {\n const {connection, clients} = get().mosaic;\n if (connection.status !== 'ready') {\n return; // Silently return if not ready - hook will handle retry\n }\n\n const existing = clients[options.id];\n\n // Determine which selection to use\n const selection =\n options.selection ??\n (options.selectionName\n ? get().mosaic.getSelection(options.selectionName)\n : undefined);\n\n // Check if client exists and selection matches\n // Note: If query or callback changes, we recreate the client to ensure\n // the latest versions are used. This is simpler than trying to update\n // the bound queryResult callback in makeClient.\n if (existing && existing.selection === selection) {\n return; // No-op - client already exists with same selection\n }\n\n // If exists but selection changed, destroy it first\n if (existing) {\n get().mosaic.destroyClient(options.id);\n }\n\n // Create new client with wrapped queryResult that calls both store update and external callback\n const wrappedQueryResult = (data: unknown) => {\n set((state) =>\n produce(state, (draft) => {\n const tracked = draft.mosaic.clients[options.id];\n if (tracked) {\n tracked.data = data;\n tracked.isLoading = false;\n tracked.error = undefined;\n }\n }),\n );\n const arrowData = toArrowClientResult(data);\n // Call external callback if provided\n options.onQueryResult?.(arrowData);\n // Also call original queryResult if provided\n options.queryResult?.(arrowData);\n };\n const wrappedQueryPending = () => {\n set((state) =>\n produce(state, (draft) => {\n const tracked = draft.mosaic.clients[options.id];\n if (tracked) {\n tracked.isLoading = true;\n tracked.error = undefined;\n }\n }),\n );\n };\n const wrappedQueryError = (error: Error) => {\n set((state) =>\n produce(state, (draft) => {\n const tracked = draft.mosaic.clients[options.id];\n if (tracked) {\n tracked.isLoading = false;\n tracked.error = error;\n }\n }),\n );\n // Disable client to prevent further queries\n client.enabled = false;\n options.onQueryError?.(error);\n options.queryError?.(error);\n };\n\n const client = makeClient({\n coordinator: connection.coordinator,\n selection,\n query: options.query,\n queryResult: wrappedQueryResult,\n queryPending: wrappedQueryPending,\n queryError: wrappedQueryError,\n });\n\n set((state) =>\n produce(state, (draft) => {\n draft.mosaic.clients[options.id] = {\n id: options.id,\n client,\n createdAt: Date.now(),\n isLoading: true,\n data: null,\n error: undefined,\n selection,\n queryResultCallback: options.onQueryResult\n ? (result: unknown) =>\n options.onQueryResult!(toArrowClientResult(result))\n : undefined,\n };\n }),\n );\n },\n\n destroyClient(id: string) {\n const {clients} = get().mosaic;\n const tracked = clients[id];\n if (!tracked) return;\n\n tracked.client.destroy();\n\n set((state) =>\n produce(state, (draft) => {\n delete draft.mosaic.clients[id];\n }),\n );\n },\n\n destroyAllClients() {\n const {clients} = get().mosaic;\n Object.values(clients).forEach((tracked) => {\n tracked.client.destroy();\n });\n\n set((state) =>\n produce(state, (draft) => {\n draft.mosaic.clients = {};\n }),\n );\n },\n },\n }));\n}\n\nfunction applyMosaicPreAggregateOptions(\n mosaicCoordinator: Coordinator,\n options?: MosaicPreAggregateOptions,\n) {\n if (!options) {\n return;\n }\n if (options.schema !== undefined) {\n mosaicCoordinator.preaggregator.schema = options.schema;\n }\n if (options.enabled !== undefined) {\n mosaicCoordinator.preaggregator.enabled = options.enabled;\n }\n}\n\nexport type DuckDbSliceStateWithMosaic = DuckDbSliceState & MosaicSliceState;\n\nexport function useStoreWithMosaic<T>(\n selector: (state: DuckDbSliceStateWithMosaic) => T,\n): T {\n return useBaseRoomStore<BaseRoomStoreState, T>((state) =>\n selector(state as unknown as DuckDbSliceStateWithMosaic),\n );\n}\n\n/**\n * Adapts a {@link DuckDbConnector} to the Mosaic {@link Connector} interface.\n *\n * For `'arrow'` queries the Apache Arrow table returned by the connector is\n * converted via {@link createMosaicTableFromArrowTable} into a flechette\n * `Table`, which is the shape Mosaic consumers expect (with `.toColumns()`).\n * For `'json'` queries, rows are materialized with {@link Array.from} which\n * may have performance/memory implications for very large result sets.\n * The `as any` casts on the return type are an intentional adapter trade-off\n * to satisfy the polymorphic {@link Connector['query']} signature.\n */\nfunction createDuckDbMosaicConnector(connector: DuckDbConnector): Connector {\n return {\n query: (async (\n query: ArrowQueryRequest | ExecQueryRequest | JSONQueryRequest,\n ) => {\n const queryType = query.type ?? 'arrow';\n if (queryType === 'exec') {\n await connector.execute(query.sql);\n return undefined as any;\n }\n if (queryType === 'json') {\n const rows = await connector.queryJson<Record<string, unknown>>(\n query.sql,\n );\n return Array.from(rows) as any;\n }\n if (queryType === 'arrow') {\n const arrowTable = await connector.query(query.sql);\n return createMosaicTableFromArrowTable(arrowTable) as any;\n }\n throw new Error(`Unsupported Mosaic query type \"${queryType}\".`);\n }) as Connector['query'],\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"VgPlotChart.d.ts","sourceRoot":"","sources":["../src/VgPlotChart.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,SAAS,EAAC,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAC,IAAI,EAAC,MAAM,qBAAqB,CAAC;AACzC,OAAO,EACL,EAAE,EAOH,MAAM,OAAO,CAAC;AAGf,OAAO,EAGL,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,EACV,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,iBAAiB,CAAC;AAEzB,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,IAAI,CAAC;IACX;;;;;OAKG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IAC7C;;;;OAIG;IACH,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,UAAU,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,mBAAmB,CAAC,EAAE,wBAAwB,CAAC;IAC/C,oBAAoB,CAAC,EAAE,yBAAyB,CAAC;CAClD,CAAC;AACF,KAAK,SAAS,GAAG;IAAC,IAAI,EAAE,WAAW,GAAG,aAAa,CAAA;CAAC,CAAC;AACrD,KAAK,gBAAgB,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,IAAI,SAAS,CAEvE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,IAAI,SAAS,CAEvE;AAGD,YAAY,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAC,0BAA0B,EAAC,MAAM,2BAA2B,CAAC;AACrE,YAAY,EAAC,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AAoBnE;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAuI5C,CAAC"}
1
+ {"version":3,"file":"VgPlotChart.d.ts","sourceRoot":"","sources":["../src/VgPlotChart.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,SAAS,EAAC,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAC,IAAI,EAAC,MAAM,qBAAqB,CAAC;AACzC,OAAO,EACL,EAAE,EAOH,MAAM,OAAO,CAAC;AAGf,OAAO,EAGL,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,EACV,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,iBAAiB,CAAC;AAGzB,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,IAAI,CAAC;IACX;;;;;OAKG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IAC7C;;;;OAIG;IACH,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,UAAU,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,mBAAmB,CAAC,EAAE,wBAAwB,CAAC;IAC/C,oBAAoB,CAAC,EAAE,yBAAyB,CAAC;CAClD,CAAC;AACF,KAAK,SAAS,GAAG;IAAC,IAAI,EAAE,WAAW,GAAG,aAAa,CAAA;CAAC,CAAC;AACrD,KAAK,gBAAgB,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,IAAI,SAAS,CAEvE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,IAAI,SAAS,CAEvE;AAGD,YAAY,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAC,0BAA0B,EAAC,MAAM,2BAA2B,CAAC;AACrE,YAAY,EAAC,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AAoBnE;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAqJ5C,CAAC"}