stream-charts 1.2.1 → 2.0.0

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 (463) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +809 -1022
  3. package/changes.md +36 -0
  4. package/dist/app/charts/Chart.d.ts +35 -139
  5. package/dist/app/charts/Chart.d.ts.map +1 -0
  6. package/dist/app/charts/Chart.js +74 -65
  7. package/dist/app/charts/Chart.js.map +1 -1
  8. package/dist/app/charts/axes/AxesState.d.ts +26 -18
  9. package/dist/app/charts/axes/AxesState.d.ts.map +1 -0
  10. package/dist/app/charts/axes/AxesState.js +26 -24
  11. package/dist/app/charts/axes/AxesState.js.map +1 -1
  12. package/dist/app/charts/axes/AxisInterval.d.ts +44 -26
  13. package/dist/app/charts/axes/AxisInterval.d.ts.map +1 -0
  14. package/dist/app/charts/axes/AxisInterval.js +48 -29
  15. package/dist/app/charts/axes/AxisInterval.js.map +1 -1
  16. package/dist/app/charts/axes/BaseAxisRange.d.ts +46 -22
  17. package/dist/app/charts/axes/BaseAxisRange.d.ts.map +1 -0
  18. package/dist/app/charts/axes/BaseAxisRange.js +17 -12
  19. package/dist/app/charts/axes/BaseAxisRange.js.map +1 -1
  20. package/dist/app/charts/axes/ContinuousAxis.d.ts +47 -6
  21. package/dist/app/charts/axes/ContinuousAxis.d.ts.map +1 -0
  22. package/dist/app/charts/axes/ContinuousAxis.js +160 -27
  23. package/dist/app/charts/axes/ContinuousAxis.js.map +1 -1
  24. package/dist/app/charts/axes/ContinuousAxisRange.d.ts +29 -10
  25. package/dist/app/charts/axes/ContinuousAxisRange.d.ts.map +1 -0
  26. package/dist/app/charts/axes/ContinuousAxisRange.js +29 -11
  27. package/dist/app/charts/axes/ContinuousAxisRange.js.map +1 -1
  28. package/dist/app/charts/axes/EmptyAxis.d.ts +5 -2
  29. package/dist/app/charts/axes/EmptyAxis.d.ts.map +1 -0
  30. package/dist/app/charts/axes/EmptyAxis.js +30 -9
  31. package/dist/app/charts/axes/EmptyAxis.js.map +1 -1
  32. package/dist/app/charts/axes/OrdinalAxis.d.ts +5 -3
  33. package/dist/app/charts/axes/OrdinalAxis.d.ts.map +1 -0
  34. package/dist/app/charts/axes/OrdinalAxis.js +39 -16
  35. package/dist/app/charts/axes/OrdinalAxis.js.map +1 -1
  36. package/dist/app/charts/axes/OrdinalAxisRange.d.ts +76 -13
  37. package/dist/app/charts/axes/OrdinalAxisRange.d.ts.map +1 -0
  38. package/dist/app/charts/axes/OrdinalAxisRange.js +95 -16
  39. package/dist/app/charts/axes/OrdinalAxisRange.js.map +1 -1
  40. package/dist/app/charts/axes/autoScale.d.ts +111 -0
  41. package/dist/app/charts/axes/autoScale.d.ts.map +1 -0
  42. package/dist/app/charts/axes/autoScale.js +188 -0
  43. package/dist/app/charts/axes/autoScale.js.map +1 -0
  44. package/dist/app/charts/axes/axes.d.ts +273 -150
  45. package/dist/app/charts/axes/axes.d.ts.map +1 -0
  46. package/dist/app/charts/axes/axes.js +808 -583
  47. package/dist/app/charts/axes/axes.js.map +1 -1
  48. package/dist/app/charts/d3types.d.ts +40 -11
  49. package/dist/app/charts/d3types.d.ts.map +1 -0
  50. package/dist/app/charts/d3types.js +3 -0
  51. package/dist/app/charts/d3types.js.map +1 -1
  52. package/dist/app/charts/datasources/StreamingDataSource.d.ts +149 -0
  53. package/dist/app/charts/datasources/StreamingDataSource.d.ts.map +1 -0
  54. package/dist/app/charts/datasources/StreamingDataSource.js +110 -0
  55. package/dist/app/charts/datasources/StreamingDataSource.js.map +1 -0
  56. package/dist/app/charts/datasources/iteratesDataSource.d.ts +73 -0
  57. package/dist/app/charts/datasources/iteratesDataSource.d.ts.map +1 -0
  58. package/dist/app/charts/datasources/iteratesDataSource.js +87 -0
  59. package/dist/app/charts/datasources/iteratesDataSource.js.map +1 -0
  60. package/dist/app/charts/datasources/ordinalDataSource.d.ts +75 -0
  61. package/dist/app/charts/datasources/ordinalDataSource.d.ts.map +1 -0
  62. package/dist/app/charts/datasources/ordinalDataSource.js +135 -0
  63. package/dist/app/charts/datasources/ordinalDataSource.js.map +1 -0
  64. package/dist/app/charts/datasources/outlierDataSource.d.ts +53 -0
  65. package/dist/app/charts/datasources/outlierDataSource.d.ts.map +1 -0
  66. package/dist/app/charts/datasources/outlierDataSource.js +57 -0
  67. package/dist/app/charts/datasources/outlierDataSource.js.map +1 -0
  68. package/dist/app/charts/datasources/timeSeriesDataSource.d.ts +77 -0
  69. package/dist/app/charts/datasources/timeSeriesDataSource.d.ts.map +1 -0
  70. package/dist/app/charts/datasources/timeSeriesDataSource.js +85 -0
  71. package/dist/app/charts/datasources/timeSeriesDataSource.js.map +1 -0
  72. package/dist/app/charts/filters/regexFilter.d.ts +31 -4
  73. package/dist/app/charts/filters/regexFilter.d.ts.map +1 -0
  74. package/dist/app/charts/filters/regexFilter.js +38 -4
  75. package/dist/app/charts/filters/regexFilter.js.map +1 -1
  76. package/dist/app/charts/hooks/AxesProvider.d.ts +21 -0
  77. package/dist/app/charts/hooks/AxesProvider.d.ts.map +1 -0
  78. package/dist/app/charts/hooks/AxesProvider.js +213 -0
  79. package/dist/app/charts/hooks/AxesProvider.js.map +1 -0
  80. package/dist/app/charts/hooks/CanvasSurfaceProvider.d.ts +25 -0
  81. package/dist/app/charts/hooks/CanvasSurfaceProvider.d.ts.map +1 -0
  82. package/dist/app/charts/hooks/CanvasSurfaceProvider.js +76 -0
  83. package/dist/app/charts/hooks/CanvasSurfaceProvider.js.map +1 -0
  84. package/dist/app/charts/hooks/ChartProvider.d.ts +40 -0
  85. package/dist/app/charts/hooks/ChartProvider.d.ts.map +1 -0
  86. package/dist/app/charts/hooks/ChartProvider.js +33 -0
  87. package/dist/app/charts/hooks/ChartProvider.js.map +1 -0
  88. package/dist/app/charts/hooks/InteractionProvider.d.ts +23 -0
  89. package/dist/app/charts/hooks/InteractionProvider.d.ts.map +1 -0
  90. package/dist/app/charts/hooks/InteractionProvider.js +60 -0
  91. package/dist/app/charts/hooks/InteractionProvider.js.map +1 -0
  92. package/dist/app/charts/hooks/PlotDimensionsProvider.d.ts +16 -0
  93. package/dist/app/charts/hooks/PlotDimensionsProvider.d.ts.map +1 -0
  94. package/dist/app/charts/hooks/PlotDimensionsProvider.js +76 -0
  95. package/dist/app/charts/hooks/PlotDimensionsProvider.js.map +1 -0
  96. package/dist/app/charts/hooks/defaultAxesValues.d.ts +11 -0
  97. package/dist/app/charts/hooks/defaultAxesValues.d.ts.map +1 -0
  98. package/dist/app/charts/hooks/defaultAxesValues.js +36 -0
  99. package/dist/app/charts/hooks/defaultAxesValues.js.map +1 -0
  100. package/dist/app/charts/hooks/defaultMouseValues.d.ts +9 -0
  101. package/dist/app/charts/hooks/defaultMouseValues.d.ts.map +1 -0
  102. package/dist/app/charts/hooks/defaultMouseValues.js +23 -0
  103. package/dist/app/charts/hooks/defaultMouseValues.js.map +1 -0
  104. package/dist/app/charts/hooks/defaultPlotDimensions.d.ts +13 -0
  105. package/dist/app/charts/hooks/defaultPlotDimensions.d.ts.map +1 -0
  106. package/dist/app/charts/hooks/defaultPlotDimensions.js +23 -0
  107. package/dist/app/charts/hooks/defaultPlotDimensions.js.map +1 -0
  108. package/dist/app/charts/hooks/defaultTooltipValues.d.ts +9 -0
  109. package/dist/app/charts/hooks/defaultTooltipValues.d.ts.map +1 -0
  110. package/dist/app/charts/hooks/defaultTooltipValues.js +21 -0
  111. package/dist/app/charts/hooks/defaultTooltipValues.js.map +1 -0
  112. package/dist/app/charts/hooks/defaultUseChartValues.d.ts +14 -0
  113. package/dist/app/charts/hooks/defaultUseChartValues.d.ts.map +1 -0
  114. package/dist/app/charts/hooks/defaultUseChartValues.js +30 -0
  115. package/dist/app/charts/hooks/defaultUseChartValues.js.map +1 -0
  116. package/dist/app/charts/hooks/useAxes.d.ts +49 -36
  117. package/dist/app/charts/hooks/useAxes.d.ts.map +1 -0
  118. package/dist/app/charts/hooks/useAxes.js +16 -176
  119. package/dist/app/charts/hooks/useAxes.js.map +1 -1
  120. package/dist/app/charts/hooks/useCanvasSurface.d.ts +25 -0
  121. package/dist/app/charts/hooks/useCanvasSurface.d.ts.map +1 -0
  122. package/dist/app/charts/hooks/useCanvasSurface.js +18 -0
  123. package/dist/app/charts/hooks/useCanvasSurface.js.map +1 -0
  124. package/dist/app/charts/hooks/useChart.d.ts +30 -44
  125. package/dist/app/charts/hooks/useChart.d.ts.map +1 -0
  126. package/dist/app/charts/hooks/useChart.js +26 -48
  127. package/dist/app/charts/hooks/useChart.js.map +1 -1
  128. package/dist/app/charts/hooks/useDataSource.d.ts +68 -0
  129. package/dist/app/charts/hooks/useDataSource.d.ts.map +1 -0
  130. package/dist/app/charts/hooks/useDataSource.js +63 -0
  131. package/dist/app/charts/hooks/useDataSource.js.map +1 -0
  132. package/dist/app/charts/hooks/useHoveredSeries.d.ts +25 -0
  133. package/dist/app/charts/hooks/useHoveredSeries.d.ts.map +1 -0
  134. package/dist/app/charts/hooks/useHoveredSeries.js +15 -0
  135. package/dist/app/charts/hooks/useHoveredSeries.js.map +1 -0
  136. package/dist/app/charts/hooks/useMouse.d.ts +46 -22
  137. package/dist/app/charts/hooks/useMouse.d.ts.map +1 -0
  138. package/dist/app/charts/hooks/useMouse.js +12 -56
  139. package/dist/app/charts/hooks/useMouse.js.map +1 -1
  140. package/dist/app/charts/hooks/usePlotDimensions.d.ts +25 -13
  141. package/dist/app/charts/hooks/usePlotDimensions.d.ts.map +1 -0
  142. package/dist/app/charts/hooks/usePlotDimensions.js +6 -62
  143. package/dist/app/charts/hooks/usePlotDimensions.js.map +1 -1
  144. package/dist/app/charts/hooks/useTooltip.d.ts +24 -26
  145. package/dist/app/charts/hooks/useTooltip.d.ts.map +1 -0
  146. package/dist/app/charts/hooks/useTooltip.js +12 -42
  147. package/dist/app/charts/hooks/useTooltip.js.map +1 -1
  148. package/dist/app/charts/index.d.ts +66 -0
  149. package/dist/app/charts/index.d.ts.map +1 -0
  150. package/dist/app/charts/index.js +87 -0
  151. package/dist/app/charts/index.js.map +1 -0
  152. package/dist/app/charts/legends/Legend.d.ts +33 -12
  153. package/dist/app/charts/legends/Legend.d.ts.map +1 -0
  154. package/dist/app/charts/legends/Legend.js +138 -379
  155. package/dist/app/charts/legends/Legend.js.map +1 -1
  156. package/dist/app/charts/legends/constants.d.ts +19 -0
  157. package/dist/app/charts/legends/constants.d.ts.map +1 -0
  158. package/dist/app/charts/legends/constants.js +34 -0
  159. package/dist/app/charts/legends/constants.js.map +1 -0
  160. package/dist/app/charts/observables/ChartData.d.ts +1 -0
  161. package/dist/app/charts/observables/ChartData.d.ts.map +1 -0
  162. package/dist/app/charts/observables/iterates.d.ts +13 -7
  163. package/dist/app/charts/observables/iterates.d.ts.map +1 -0
  164. package/dist/app/charts/observables/iterates.js +42 -9
  165. package/dist/app/charts/observables/iterates.js.map +1 -1
  166. package/dist/app/charts/observables/ordinals.d.ts +70 -12
  167. package/dist/app/charts/observables/ordinals.d.ts.map +1 -0
  168. package/dist/app/charts/observables/ordinals.js +127 -48
  169. package/dist/app/charts/observables/ordinals.js.map +1 -1
  170. package/dist/app/charts/observables/outliers.d.ts +18 -0
  171. package/dist/app/charts/observables/outliers.d.ts.map +1 -0
  172. package/dist/app/charts/observables/outliers.js +2 -0
  173. package/dist/app/charts/observables/outliers.js.map +1 -0
  174. package/dist/app/charts/plots/BarPlot.d.ts +87 -13
  175. package/dist/app/charts/plots/BarPlot.d.ts.map +1 -0
  176. package/dist/app/charts/plots/BarPlot.js +603 -356
  177. package/dist/app/charts/plots/BarPlot.js.map +1 -1
  178. package/dist/app/charts/plots/OutlierPlot.d.ts +123 -0
  179. package/dist/app/charts/plots/OutlierPlot.d.ts.map +1 -0
  180. package/dist/app/charts/plots/OutlierPlot.js +430 -0
  181. package/dist/app/charts/plots/OutlierPlot.js.map +1 -0
  182. package/dist/app/charts/plots/PoincarePlot.d.ts +92 -14
  183. package/dist/app/charts/plots/PoincarePlot.d.ts.map +1 -0
  184. package/dist/app/charts/plots/PoincarePlot.js +523 -364
  185. package/dist/app/charts/plots/PoincarePlot.js.map +1 -1
  186. package/dist/app/charts/plots/RasterPlot.d.ts +31 -10
  187. package/dist/app/charts/plots/RasterPlot.d.ts.map +1 -0
  188. package/dist/app/charts/plots/RasterPlot.js +198 -306
  189. package/dist/app/charts/plots/RasterPlot.js.map +1 -1
  190. package/dist/app/charts/plots/ScatterPlot.d.ts +77 -21
  191. package/dist/app/charts/plots/ScatterPlot.d.ts.map +1 -0
  192. package/dist/app/charts/plots/ScatterPlot.js +359 -302
  193. package/dist/app/charts/plots/ScatterPlot.js.map +1 -1
  194. package/dist/app/charts/plots/autoScaleYAxes.d.ts +43 -0
  195. package/dist/app/charts/plots/autoScaleYAxes.d.ts.map +1 -0
  196. package/dist/app/charts/plots/autoScaleYAxes.js +71 -0
  197. package/dist/app/charts/plots/autoScaleYAxes.js.map +1 -0
  198. package/dist/app/charts/plots/colorizedLine.d.ts +61 -0
  199. package/dist/app/charts/plots/colorizedLine.d.ts.map +1 -0
  200. package/dist/app/charts/plots/colorizedLine.js +157 -0
  201. package/dist/app/charts/plots/colorizedLine.js.map +1 -0
  202. package/dist/app/charts/plots/constants.d.ts +7 -0
  203. package/dist/app/charts/plots/constants.d.ts.map +1 -0
  204. package/dist/app/charts/plots/constants.js +11 -0
  205. package/dist/app/charts/plots/constants.js.map +1 -0
  206. package/dist/app/charts/plots/hitTesting.d.ts +88 -0
  207. package/dist/app/charts/plots/hitTesting.d.ts.map +1 -0
  208. package/dist/app/charts/plots/hitTesting.js +136 -0
  209. package/dist/app/charts/plots/hitTesting.js.map +1 -0
  210. package/dist/app/charts/plots/plot.d.ts +52 -16
  211. package/dist/app/charts/plots/plot.d.ts.map +1 -0
  212. package/dist/app/charts/plots/plot.js +108 -35
  213. package/dist/app/charts/plots/plot.js.map +1 -1
  214. package/dist/app/charts/plots/useCanvasZoomPan.d.ts +119 -0
  215. package/dist/app/charts/plots/useCanvasZoomPan.d.ts.map +1 -0
  216. package/dist/app/charts/plots/useCanvasZoomPan.js +113 -0
  217. package/dist/app/charts/plots/useCanvasZoomPan.js.map +1 -0
  218. package/dist/app/charts/plots/useStreamingTimeAxes.d.ts +103 -0
  219. package/dist/app/charts/plots/useStreamingTimeAxes.d.ts.map +1 -0
  220. package/dist/app/charts/plots/useStreamingTimeAxes.js +257 -0
  221. package/dist/app/charts/plots/useStreamingTimeAxes.js.map +1 -0
  222. package/dist/app/charts/series/baseSeries.d.ts +60 -8
  223. package/dist/app/charts/series/baseSeries.d.ts.map +1 -0
  224. package/dist/app/charts/series/baseSeries.js +53 -8
  225. package/dist/app/charts/series/baseSeries.js.map +1 -1
  226. package/dist/app/charts/series/iterateSeries.d.ts +9 -8
  227. package/dist/app/charts/series/iterateSeries.d.ts.map +1 -0
  228. package/dist/app/charts/series/iterateSeries.js +7 -7
  229. package/dist/app/charts/series/iterateSeries.js.map +1 -1
  230. package/dist/app/charts/series/ordinalSeries.d.ts +27 -13
  231. package/dist/app/charts/series/ordinalSeries.d.ts.map +1 -0
  232. package/dist/app/charts/series/ordinalSeries.js +29 -15
  233. package/dist/app/charts/series/ordinalSeries.js.map +1 -1
  234. package/dist/app/charts/series/outlierSeries.d.ts +142 -0
  235. package/dist/app/charts/series/outlierSeries.d.ts.map +1 -0
  236. package/dist/app/charts/series/outlierSeries.js +82 -0
  237. package/dist/app/charts/series/outlierSeries.js.map +1 -0
  238. package/dist/app/charts/series/timeSeries.d.ts +13 -9
  239. package/dist/app/charts/series/timeSeries.d.ts.map +1 -0
  240. package/dist/app/charts/series/timeSeries.js +6 -3
  241. package/dist/app/charts/series/timeSeries.js.map +1 -1
  242. package/dist/app/charts/series/timeSeriesChartData.d.ts +18 -10
  243. package/dist/app/charts/series/timeSeriesChartData.d.ts.map +1 -0
  244. package/dist/app/charts/series/timeSeriesChartData.js +28 -14
  245. package/dist/app/charts/series/timeSeriesChartData.js.map +1 -1
  246. package/dist/app/charts/styling/barPlotStyle.d.ts +46 -2
  247. package/dist/app/charts/styling/barPlotStyle.d.ts.map +1 -0
  248. package/dist/app/charts/styling/barPlotStyle.js +37 -3
  249. package/dist/app/charts/styling/barPlotStyle.js.map +1 -1
  250. package/dist/app/charts/styling/canvasStyle.d.ts +53 -0
  251. package/dist/app/charts/styling/canvasStyle.d.ts.map +1 -0
  252. package/dist/app/charts/styling/canvasStyle.js +71 -0
  253. package/dist/app/charts/styling/canvasStyle.js.map +1 -0
  254. package/dist/app/charts/styling/margins.d.ts +21 -2
  255. package/dist/app/charts/styling/margins.d.ts.map +1 -0
  256. package/dist/app/charts/styling/margins.js +25 -4
  257. package/dist/app/charts/styling/margins.js.map +1 -1
  258. package/dist/app/charts/styling/svgStyle.d.ts +10 -56
  259. package/dist/app/charts/styling/svgStyle.d.ts.map +1 -0
  260. package/dist/app/charts/styling/svgStyle.js +3 -78
  261. package/dist/app/charts/styling/svgStyle.js.map +1 -1
  262. package/dist/app/charts/subscriptions/viewDrivers.d.ts +124 -0
  263. package/dist/app/charts/subscriptions/viewDrivers.d.ts.map +1 -0
  264. package/dist/app/charts/subscriptions/viewDrivers.js +338 -0
  265. package/dist/app/charts/subscriptions/viewDrivers.js.map +1 -0
  266. package/dist/app/charts/tooltips/BarPlotTooltipContent.d.ts +12 -78
  267. package/dist/app/charts/tooltips/BarPlotTooltipContent.d.ts.map +1 -0
  268. package/dist/app/charts/tooltips/BarPlotTooltipContent.js +65 -257
  269. package/dist/app/charts/tooltips/BarPlotTooltipContent.js.map +1 -1
  270. package/dist/app/charts/tooltips/DefaultOutlierTooltipContent.d.ts +9 -0
  271. package/dist/app/charts/tooltips/DefaultOutlierTooltipContent.d.ts.map +1 -0
  272. package/dist/app/charts/tooltips/DefaultOutlierTooltipContent.js +16 -0
  273. package/dist/app/charts/tooltips/DefaultOutlierTooltipContent.js.map +1 -0
  274. package/dist/app/charts/tooltips/OutlierPlotTooltipContent.d.ts +30 -0
  275. package/dist/app/charts/tooltips/OutlierPlotTooltipContent.d.ts.map +1 -0
  276. package/dist/app/charts/tooltips/OutlierPlotTooltipContent.js +26 -0
  277. package/dist/app/charts/tooltips/OutlierPlotTooltipContent.js.map +1 -0
  278. package/dist/app/charts/tooltips/PoincarePlotTooltipContent.d.ts +22 -72
  279. package/dist/app/charts/tooltips/PoincarePlotTooltipContent.d.ts.map +1 -0
  280. package/dist/app/charts/tooltips/PoincarePlotTooltipContent.js +104 -171
  281. package/dist/app/charts/tooltips/PoincarePlotTooltipContent.js.map +1 -1
  282. package/dist/app/charts/tooltips/RasterPlotTooltipContent.d.ts +32 -8
  283. package/dist/app/charts/tooltips/RasterPlotTooltipContent.d.ts.map +1 -0
  284. package/dist/app/charts/tooltips/RasterPlotTooltipContent.js +62 -115
  285. package/dist/app/charts/tooltips/RasterPlotTooltipContent.js.map +1 -1
  286. package/dist/app/charts/tooltips/ScatterPlotTooltipContent.d.ts +39 -12
  287. package/dist/app/charts/tooltips/ScatterPlotTooltipContent.d.ts.map +1 -0
  288. package/dist/app/charts/tooltips/ScatterPlotTooltipContent.js +162 -134
  289. package/dist/app/charts/tooltips/ScatterPlotTooltipContent.js.map +1 -1
  290. package/dist/app/charts/tooltips/Tooltip.d.ts +27 -32
  291. package/dist/app/charts/tooltips/Tooltip.d.ts.map +1 -0
  292. package/dist/app/charts/tooltips/Tooltip.js +37 -81
  293. package/dist/app/charts/tooltips/Tooltip.js.map +1 -1
  294. package/dist/app/charts/tooltips/TooltipContent.d.ts +81 -0
  295. package/dist/app/charts/tooltips/TooltipContent.d.ts.map +1 -0
  296. package/dist/app/charts/tooltips/TooltipContent.js +99 -0
  297. package/dist/app/charts/tooltips/TooltipContent.js.map +1 -0
  298. package/dist/app/charts/tooltips/tooltipUtils.d.ts +186 -36
  299. package/dist/app/charts/tooltips/tooltipUtils.d.ts.map +1 -0
  300. package/dist/app/charts/tooltips/tooltipUtils.js +277 -48
  301. package/dist/app/charts/tooltips/tooltipUtils.js.map +1 -1
  302. package/dist/app/charts/tooltips/useOutlierTooltip.d.ts +59 -0
  303. package/dist/app/charts/tooltips/useOutlierTooltip.d.ts.map +1 -0
  304. package/dist/app/charts/tooltips/useOutlierTooltip.js +16 -0
  305. package/dist/app/charts/tooltips/useOutlierTooltip.js.map +1 -0
  306. package/dist/app/charts/tooltips/useTooltipPlacement.d.ts +51 -0
  307. package/dist/app/charts/tooltips/useTooltipPlacement.d.ts.map +1 -0
  308. package/dist/app/charts/tooltips/useTooltipPlacement.js +52 -0
  309. package/dist/app/charts/tooltips/useTooltipPlacement.js.map +1 -0
  310. package/dist/app/charts/tooltips/useTooltipStyle.d.ts +11 -0
  311. package/dist/app/charts/tooltips/useTooltipStyle.d.ts.map +1 -0
  312. package/dist/app/charts/tooltips/useTooltipStyle.js +14 -0
  313. package/dist/app/charts/tooltips/useTooltipStyle.js.map +1 -0
  314. package/dist/app/charts/trackers/Tracker.d.ts +22 -6
  315. package/dist/app/charts/trackers/Tracker.d.ts.map +1 -0
  316. package/dist/app/charts/trackers/Tracker.js +36 -22
  317. package/dist/app/charts/trackers/Tracker.js.map +1 -1
  318. package/dist/app/charts/trackers/trackerUtils.d.ts +40 -18
  319. package/dist/app/charts/trackers/trackerUtils.d.ts.map +1 -0
  320. package/dist/app/charts/trackers/trackerUtils.js +213 -300
  321. package/dist/app/charts/trackers/trackerUtils.js.map +1 -1
  322. package/dist/app/charts/utils.d.ts +72 -33
  323. package/dist/app/charts/utils.d.ts.map +1 -0
  324. package/dist/app/charts/utils.js +87 -42
  325. package/dist/app/charts/utils.js.map +1 -1
  326. package/dist/index.d.ts +2 -45
  327. package/dist/index.d.ts.map +1 -0
  328. package/dist/index.js +2 -72
  329. package/dist/index.js.map +1 -1
  330. package/package.json +87 -46
  331. package/src/app/charts/Chart.tsx +132 -168
  332. package/src/app/charts/axes/AxesState.ts +27 -29
  333. package/src/app/charts/axes/AxisInterval.ts +57 -32
  334. package/src/app/charts/axes/BaseAxisRange.ts +47 -27
  335. package/src/app/charts/axes/ContinuousAxis.tsx +235 -39
  336. package/src/app/charts/axes/ContinuousAxisRange.ts +29 -11
  337. package/src/app/charts/axes/EmptyAxis.tsx +52 -17
  338. package/src/app/charts/axes/OrdinalAxis.tsx +54 -28
  339. package/src/app/charts/axes/OrdinalAxisRange.ts +96 -16
  340. package/src/app/charts/axes/autoScale.ts +244 -0
  341. package/src/app/charts/axes/axes.ts +954 -735
  342. package/src/app/charts/d3types.ts +42 -13
  343. package/src/app/charts/datasources/StreamingDataSource.ts +214 -0
  344. package/src/app/charts/datasources/iteratesDataSource.ts +122 -0
  345. package/src/app/charts/datasources/ordinalDataSource.ts +205 -0
  346. package/src/app/charts/datasources/outlierDataSource.ts +90 -0
  347. package/src/app/charts/datasources/timeSeriesDataSource.ts +133 -0
  348. package/src/app/charts/filters/regexFilter.ts +45 -5
  349. package/src/app/charts/hooks/AxesProvider.tsx +301 -0
  350. package/src/app/charts/hooks/CanvasSurfaceProvider.tsx +117 -0
  351. package/src/app/charts/hooks/ChartProvider.tsx +79 -0
  352. package/src/app/charts/hooks/InteractionProvider.tsx +88 -0
  353. package/src/app/charts/hooks/PlotDimensionsProvider.tsx +109 -0
  354. package/src/app/charts/hooks/defaultAxesValues.ts +40 -0
  355. package/src/app/charts/hooks/defaultMouseValues.ts +24 -0
  356. package/src/app/charts/hooks/defaultPlotDimensions.ts +27 -0
  357. package/src/app/charts/hooks/defaultTooltipValues.tsx +23 -0
  358. package/src/app/charts/hooks/defaultUseChartValues.tsx +36 -0
  359. package/src/app/charts/hooks/useAxes.tsx +60 -228
  360. package/src/app/charts/hooks/useCanvasSurface.tsx +35 -0
  361. package/src/app/charts/hooks/useChart.tsx +47 -106
  362. package/src/app/charts/hooks/useDataSource.tsx +106 -0
  363. package/src/app/charts/hooks/useHoveredSeries.tsx +33 -0
  364. package/src/app/charts/hooks/useMouse.tsx +58 -82
  365. package/src/app/charts/hooks/usePlotDimensions.tsx +25 -89
  366. package/src/app/charts/hooks/useTooltip.tsx +32 -63
  367. package/src/app/charts/index.ts +213 -0
  368. package/src/app/charts/legends/Legend.tsx +198 -479
  369. package/src/app/charts/legends/constants.ts +37 -0
  370. package/src/app/charts/observables/iterates.ts +32 -12
  371. package/src/app/charts/observables/ordinals.ts +141 -67
  372. package/src/app/charts/observables/outliers.ts +20 -0
  373. package/src/app/charts/plots/BarPlot.tsx +784 -666
  374. package/src/app/charts/plots/OutlierPlot.tsx +685 -0
  375. package/src/app/charts/plots/PoincarePlot.tsx +707 -489
  376. package/src/app/charts/plots/RasterPlot.tsx +253 -445
  377. package/src/app/charts/plots/ScatterPlot.tsx +480 -463
  378. package/src/app/charts/plots/autoScaleYAxes.ts +102 -0
  379. package/src/app/charts/plots/colorizedLine.ts +185 -0
  380. package/src/app/charts/plots/constants.ts +16 -0
  381. package/src/app/charts/plots/hitTesting.ts +198 -0
  382. package/src/app/charts/plots/plot.ts +138 -44
  383. package/src/app/charts/plots/useCanvasZoomPan.ts +240 -0
  384. package/src/app/charts/plots/useStreamingTimeAxes.ts +384 -0
  385. package/src/app/charts/series/baseSeries.ts +81 -14
  386. package/src/app/charts/series/iterateSeries.ts +8 -8
  387. package/src/app/charts/series/ordinalSeries.ts +35 -20
  388. package/src/app/charts/series/outlierSeries.ts +188 -0
  389. package/src/app/charts/series/timeSeries.ts +14 -12
  390. package/src/app/charts/series/timeSeriesChartData.ts +31 -17
  391. package/src/app/charts/styling/barPlotStyle.ts +48 -5
  392. package/src/app/charts/styling/canvasStyle.ts +86 -0
  393. package/src/app/charts/styling/margins.ts +28 -4
  394. package/src/app/charts/styling/svgStyle.ts +10 -91
  395. package/src/app/charts/subscriptions/viewDrivers.ts +447 -0
  396. package/src/app/charts/tooltips/BarPlotTooltipContent.tsx +156 -380
  397. package/src/app/charts/tooltips/DefaultOutlierTooltipContent.tsx +40 -0
  398. package/src/app/charts/tooltips/OutlierPlotTooltipContent.tsx +67 -0
  399. package/src/app/charts/tooltips/PoincarePlotTooltipContent.tsx +229 -292
  400. package/src/app/charts/tooltips/RasterPlotTooltipContent.tsx +164 -217
  401. package/src/app/charts/tooltips/ScatterPlotTooltipContent.tsx +373 -236
  402. package/src/app/charts/tooltips/Tooltip.tsx +58 -124
  403. package/src/app/charts/tooltips/TooltipContent.tsx +177 -0
  404. package/src/app/charts/tooltips/tooltipUtils.ts +359 -61
  405. package/src/app/charts/tooltips/useOutlierTooltip.tsx +68 -0
  406. package/src/app/charts/tooltips/useTooltipPlacement.ts +86 -0
  407. package/src/app/charts/tooltips/useTooltipStyle.ts +15 -0
  408. package/src/app/charts/trackers/Tracker.tsx +68 -33
  409. package/src/app/charts/trackers/trackerUtils.ts +263 -376
  410. package/src/app/charts/utils.ts +90 -48
  411. package/src/index.ts +2 -322
  412. package/dist/app/charts/axes/AxesState.test.d.ts +0 -1
  413. package/dist/app/charts/axes/AxesState.test.js +0 -30
  414. package/dist/app/charts/axes/AxesState.test.js.map +0 -1
  415. package/dist/app/charts/axes/AxisInterval.test.d.ts +0 -1
  416. package/dist/app/charts/axes/AxisInterval.test.js +0 -120
  417. package/dist/app/charts/axes/AxisInterval.test.js.map +0 -1
  418. package/dist/app/charts/axes/ContinuousAxisRange.test.d.ts +0 -1
  419. package/dist/app/charts/axes/ContinuousAxisRange.test.js +0 -47
  420. package/dist/app/charts/axes/ContinuousAxisRange.test.js.map +0 -1
  421. package/dist/app/charts/axes/OrdinalAxisRange.test.d.ts +0 -1
  422. package/dist/app/charts/axes/OrdinalAxisRange.test.js +0 -48
  423. package/dist/app/charts/axes/OrdinalAxisRange.test.js.map +0 -1
  424. package/dist/app/charts/filters/regexFilter.test.d.ts +0 -1
  425. package/dist/app/charts/filters/regexFilter.test.js +0 -11
  426. package/dist/app/charts/filters/regexFilter.test.js.map +0 -1
  427. package/dist/app/charts/hooks/useDataObservable.d.ts +0 -72
  428. package/dist/app/charts/hooks/useDataObservable.js +0 -74
  429. package/dist/app/charts/hooks/useDataObservable.js.map +0 -1
  430. package/dist/app/charts/hooks/useInitialData.d.ts +0 -36
  431. package/dist/app/charts/hooks/useInitialData.js +0 -28
  432. package/dist/app/charts/hooks/useInitialData.js.map +0 -1
  433. package/dist/app/charts/observables/iterates.test.d.ts +0 -1
  434. package/dist/app/charts/observables/iterates.test.js +0 -180
  435. package/dist/app/charts/observables/iterates.test.js.map +0 -1
  436. package/dist/app/charts/observables/ordinals.test.d.ts +0 -1
  437. package/dist/app/charts/observables/ordinals.test.js +0 -102
  438. package/dist/app/charts/observables/ordinals.test.js.map +0 -1
  439. package/dist/app/charts/series/datumSeries.test.d.ts +0 -1
  440. package/dist/app/charts/series/datumSeries.test.js +0 -50
  441. package/dist/app/charts/series/datumSeries.test.js.map +0 -1
  442. package/dist/app/charts/styling/margins.test.d.ts +0 -1
  443. package/dist/app/charts/styling/margins.test.js +0 -19
  444. package/dist/app/charts/styling/margins.test.js.map +0 -1
  445. package/dist/app/charts/subscriptions/subscription.test.d.ts +0 -1
  446. package/dist/app/charts/subscriptions/subscription.test.js +0 -395
  447. package/dist/app/charts/subscriptions/subscription.test.js.map +0 -1
  448. package/dist/app/charts/subscriptions/subscriptions.d.ts +0 -100
  449. package/dist/app/charts/subscriptions/subscriptions.js +0 -449
  450. package/dist/app/charts/subscriptions/subscriptions.js.map +0 -1
  451. package/src/app/charts/axes/AxesState.test.ts +0 -34
  452. package/src/app/charts/axes/AxisInterval.test.ts +0 -143
  453. package/src/app/charts/axes/ContinuousAxisRange.test.ts +0 -55
  454. package/src/app/charts/axes/OrdinalAxisRange.test.ts +0 -55
  455. package/src/app/charts/filters/regexFilter.test.ts +0 -13
  456. package/src/app/charts/hooks/useDataObservable.tsx +0 -170
  457. package/src/app/charts/hooks/useInitialData.tsx +0 -64
  458. package/src/app/charts/observables/iterates.test.ts +0 -201
  459. package/src/app/charts/observables/ordinals.test.ts +0 -135
  460. package/src/app/charts/series/datumSeries.test.ts +0 -60
  461. package/src/app/charts/styling/margins.test.ts +0 -22
  462. package/src/app/charts/subscriptions/subscription.test.ts +0 -499
  463. package/src/app/charts/subscriptions/subscriptions.ts +0 -635
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { TooltipContent } from "./TooltipContent";
3
+ import { DefaultOutlierTooltipContent } from "./DefaultOutlierTooltipContent";
4
+ import { UseOutlierTooltip } from "./useOutlierTooltip";
5
+ /**
6
+ * The tooltip content for an {@link OutlierPlot}: when the mouse is over a band, or an outlier,
7
+ * shows the series' name, the outlier (if any), the band, the probabilities of a point being in
8
+ * and outside the band, and the number of points in the band. Put it inside a {@link Tooltip}.
9
+ *
10
+ * To lay the content out yourself, put your own component inside this one: it gets what the
11
+ * tooltip shows, its style, and the formatters, from {@link useOutlierTooltip}.
12
+ * @param props The style, the formatters, and the (optional) custom content
13
+ * @return The tooltip's box (a portal), or `null` when no band or outlier is hovered
14
+ */
15
+ export function OutlierPlotTooltipContent(props) {
16
+ const { style, children, datumFormatter = (x, y) => `(${x}, ${y})`, bandFormatter = (lower, upper) => `Band: ${lower} ⭢ ${upper}`, measureFormatter = (innerProb, outerProb) => `Points have a ${(innerProb * 100).toFixed(1)}% probability of being in this band, and a ${(outerProb * 100).toFixed(1)}% probability of being outside this band`, } = props;
17
+ // (a description given as lines is shown one per line)
18
+ const measureDescription = (innerProb, outerProb) => {
19
+ const description = measureFormatter(innerProb, outerProb);
20
+ return Array.isArray(description) ?
21
+ _jsx(_Fragment, { children: description.map((line, index) => _jsx("div", { children: line }, index)) }) :
22
+ description;
23
+ };
24
+ return (_jsx(TooltipContent, { style: style, boxStyle: { lineHeight: 1.6 }, capture: (seriesName, _time, { metadata }) => ({ ...metadata, seriesName }), children: (tooltipContent, tooltipStyle) => _jsx(UseOutlierTooltip.Provider, { value: { tooltipContent, tooltipStyle, datumFormatter, bandFormatter, measureFormatter: measureDescription }, children: children !== null && children !== void 0 ? children : _jsx(DefaultOutlierTooltipContent, {}) }) }));
25
+ }
26
+ //# sourceMappingURL=OutlierPlotTooltipContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutlierPlotTooltipContent.js","sourceRoot":"","sources":["../../../../src/app/charts/tooltips/OutlierPlotTooltipContent.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAG/C,OAAO,EAAC,4BAA4B,EAAC,MAAM,gCAAgC,CAAA;AAC3E,OAAO,EAAgE,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AAkBpH;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAY;IAClD,MAAM,EACF,KAAK,EACL,QAAQ,EACR,cAAc,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EACzD,aAAa,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE,CAAC,SAAS,KAAK,MAAM,KAAK,EAAE,EAC7E,gBAAgB,GAAG,CAAC,SAAiB,EAAE,SAAiB,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,8CAA8C,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,0CAA0C,GACjO,GAAG,KAAK,CAAA;IAET,uDAAuD;IACvD,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAE,SAAiB,EAAwB,EAAE;QACtF,MAAM,WAAW,GAAG,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAC1D,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;YAC/B,4BAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,wBAAkB,IAAI,IAAZ,KAAK,CAAc,CAAC,GAAI,CAAC,CAAC;YACxE,WAAW,CAAA;IACnB,CAAC,CAAA;IAED,OAAO,CACH,KAAC,cAAc,IACX,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAC3B,OAAO,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,EAAC,QAAQ,EAAC,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,QAAQ,EAAE,UAAU,EAAC,CAAC,YAEtE,CAAC,cAAc,EAAE,YAAY,EAAE,EAAE,CAC9B,KAAC,iBAAiB,CAAC,QAAQ,IACvB,KAAK,EAAE,EAAC,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAC,YAEzG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,KAAC,4BAA4B,KAAE,GACnB,GAEpB,CACpB,CAAA;AACL,CAAC"}
@@ -1,68 +1,17 @@
1
- import { TooltipStyle } from "./tooltipUtils";
2
- /**
3
- # Want to write your own tooltip-content component?
4
-
5
- Here's how to write your own tooltip-content component.
6
-
7
- To create your own tooltip content `<MyTooltipContent/>` you must do the following:
8
- 1. Create a react component for your tooltip content (see for example, {@link PoincarePlotTooltipContent}
9
- as a reference.
10
- 2. Use the {@link useChart} hook to get the {@link registerTooltipContentProvider} registration function.
11
- 3. When your tooltip content component (`<MyTooltipContent/>`) mounts, use the {@link registerTooltipContentProvider}
12
- function to register your tooltip content provider.
13
- 4. When the chart dimensions, margin, container, etc, change, register your tooltip content provider
14
- again (you can register as many times as you like because it only uses the last content provider
15
- registered).
16
-
17
- That's it! A few more details are below.
18
-
19
- The {@link registerTooltipContentProvider} function from the {@link useChart} hook allows you to register
20
- one tooltip content provider. A second call to this function will cause the {@link useChart} hook to drop
21
- the first one in favor of the second one.
22
-
23
- The {@link registerTooltipContentProvider} function from the {@link useChart} hook accepts a higher-order
24
- function that allowing a closure on content/chart-specific data. Specifically, you must hand the
25
- {@link registerTooltipContentProvider} a function of the form:
26
-
27
- `(seriesName: string, time: number, series: TimeSeries, mouseCoords: [x: number, y: number]) => TooltipDimensions`
28
-
29
- Your function to add that actual content will be what this function calls whenever d3 fires a mouse-over
30
- event on one you the time-series in the chart.
31
-
32
- The code snippet below is from the `useEffect` call in the {@link PoincarePlotTooltipContent}.
33
- Note that the first four arguments to the {@link addTooltipContent} function are those provided by the {@link useChart} hook
34
- when a d3 mouse-over event occurs on one of your series. The additional six arguments are from the closure formed
35
- on the variables in your component. The `chartId`, `container`, `margin`, and `plotDimensions` are from the
36
- {@link useChart} hook called by the {@link PoincarePlotTooltipContent} component. The last two
37
- arguments, `defaultTooltipStyle` and `options` are specific to the {@link PoincarePlotTooltipContent}.
38
- For example, the `options` property is set by the caller of the {@link PoincarePlotTooltipContent}
39
- component.
40
-
41
- ```ts
42
- // register the tooltip content provider function with the chart hook (useChart) so that
43
- // it is visible to all children of the Chart (i.e. the <Tooltip>).
44
- registerTooltipContentProvider(
45
- (seriesName: string, time: number, series: TimeSeries, mouseCoords: [x: number, y: number]) =>
46
- addTooltipContent(
47
- seriesName, time, series, mouseCoords,
48
- chartId, container, margin, plotDimensions,
49
- defaultTooltipStyle, options
50
- )
51
- )
52
- ```
53
-
54
- This pattern allows you to supplement that `useChart` mouse-over callback with information specific to your component.
55
-
56
- */
1
+ import type { ReactElement } from "react";
2
+ import { type TooltipStyle } from "./tooltipUtils";
57
3
  /**
58
4
  * Properties for rendering the tooltip content. The properties are applied as
59
5
  * shown below.
60
6
  * ```
61
7
  * series name
62
- * beforeHeader afterHeader deltaHeader
63
- * xLabel xValueFormatter xValueFormatter xChangeFormatter
64
- * yLabel yValueFormatter yValueFormatter yChangeFormatter
8
+ * f[n-1](x) f[n](x) f[n+1](x)
9
+ * xLabel xValueFormatter xValueFormatter xValueFormatter
10
+ * yLabel yValueFormatter yValueFormatter yValueFormatter
65
11
  * ```
12
+ * The column headers are always the `f[i](x)` form, built from the hovered point's index: the
13
+ * `nMinusLagHeader`, `nHeader`, and `nPlusLagHeader` properties, and the `xChangeFormatter` and
14
+ * `yChangeFormatter` properties, are accepted, but not (yet) used.
66
15
  */
67
16
  export interface Props {
68
17
  xLabel: string;
@@ -77,22 +26,23 @@ export interface Props {
77
26
  style?: Partial<TooltipStyle>;
78
27
  }
79
28
  /**
80
- * Adds tooltip content as a table. The columns of the table are the "label", the value before
81
- * the mouse cursor, then value after the mouse cursor, and the difference between the two values.
82
- * The rows of the table are x-values for the first row, and the y-values for the second row.
83
- * The table has the following form.
29
+ * Adds tooltip content as a table. The columns of the table are the previous, current, and next
30
+ * iterate (relative to the hovered point). The rows of the table are the time values for the
31
+ * first row, and the iterate values (each point's `f[n+1](x)`) for the second row. Below the
32
+ * table, as wide as it, a sparkline of the series' values over time -- the 60 points around the
33
+ * hovered point -- with the hovered point marked.
84
34
  * ```
85
35
  * series name
86
- * previous current next
87
- * time x_tb x_ta x_ta - x_tb
88
- * value y_tb y_ta y_ta - y_tb
36
+ * f[n-1](x) f[n](x) f[n+1](x)
37
+ * t (ms) t_p t_c t_n
38
+ * value v_p v_c v_n
39
+ * value over time
40
+ * sparkline
89
41
  * ```
90
42
  *
91
- * Registers the tooltip-content provider with the `ChartContext` so that when d3 fires a mouse-over
92
- * event on a series. The content provider is returns the {@link addTooltipContent} function
93
- * when called. And when called the {@link addTooltipContent} function adds the actual tooltip
94
- * content to the SVG element.
43
+ * Built on {@link TooltipContent}; put it inside a {@link Tooltip}.
95
44
  * @param props The properties describing the tooltip content
96
- * @return null
45
+ * @return The tooltip's portal, or `null` when nothing is being hovered
97
46
  */
98
- export declare function PoincarePlotTooltipContent(props: Props): null;
47
+ export declare function PoincarePlotTooltipContent(props: Props): ReactElement | null;
48
+ //# sourceMappingURL=PoincarePlotTooltipContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PoincarePlotTooltipContent.d.ts","sourceRoot":"","sources":["../../../../src/app/charts/tooltips/PoincarePlotTooltipContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,YAAY,EAAC,MAAM,OAAO,CAAC;AAEvD,OAAO,EAAsC,KAAK,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAOtF;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,KAAK;IAElB,MAAM,EAAE,MAAM,CAAA;IAEd,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAC3C,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAC3C,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9D,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9D,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAChC;AAgCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,GAAG,IAAI,CAyB5E"}
@@ -1,189 +1,122 @@
1
- import { createTable, TableData, TableFormatter, TableStyler } from "svg-table";
2
- import { defaultTooltipStyle, findPointAndNeighbors, tooltipX, tooltipY } from "./tooltipUtils";
3
- import { formatTime, formatTimeChange, formatValue, formatValueChange } from "../utils";
4
- import { useEffect, useMemo } from "react";
5
- import { useChart } from "../hooks/useChart";
6
- import { usePlotDimensions } from "../hooks/usePlotDimensions";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useLayoutEffect, useState, useRef } from "react";
3
+ import { findPointAndNeighbors, sparklineFor } from "./tooltipUtils";
4
+ import { TooltipContent } from "./TooltipContent";
5
+ import { formatTime, formatValue } from "../utils";
7
6
  import { emptyIterateDatum } from "../series/iterateSeries";
8
- import { DataFrame } from "data-frame-ts";
7
+ // the height of the tooltip's sparkline (of the series' values over time); it's as wide as the
8
+ // tooltip's content (at least this wide)
9
+ const SPARKLINE_HEIGHT = 36;
10
+ const MIN_SPARKLINE_WIDTH = 120;
11
+ // the number of points (around the hovered point) the sparkline shows
12
+ const SPARKLINE_POINTS = 60;
9
13
  /**
10
- * Adds tooltip content as a table. The columns of the table are the "label", the value before
11
- * the mouse cursor, then value after the mouse cursor, and the difference between the two values.
12
- * The rows of the table are x-values for the first row, and the y-values for the second row.
13
- * The table has the following form.
14
+ * Adds tooltip content as a table. The columns of the table are the previous, current, and next
15
+ * iterate (relative to the hovered point). The rows of the table are the time values for the
16
+ * first row, and the iterate values (each point's `f[n+1](x)`) for the second row. Below the
17
+ * table, as wide as it, a sparkline of the series' values over time -- the 60 points around the
18
+ * hovered point -- with the hovered point marked.
14
19
  * ```
15
20
  * series name
16
- * previous current next
17
- * time x_tb x_ta x_ta - x_tb
18
- * value y_tb y_ta y_ta - y_tb
21
+ * f[n-1](x) f[n](x) f[n+1](x)
22
+ * t (ms) t_p t_c t_n
23
+ * value v_p v_c v_n
24
+ * value over time
25
+ * sparkline
19
26
  * ```
20
27
  *
21
- * Registers the tooltip-content provider with the `ChartContext` so that when d3 fires a mouse-over
22
- * event on a series. The content provider is returns the {@link addTooltipContent} function
23
- * when called. And when called the {@link addTooltipContent} function adds the actual tooltip
24
- * content to the SVG element.
28
+ * Built on {@link TooltipContent}; put it inside a {@link Tooltip}.
25
29
  * @param props The properties describing the tooltip content
26
- * @return null
30
+ * @return The tooltip's portal, or `null` when nothing is being hovered
27
31
  */
28
32
  export function PoincarePlotTooltipContent(props) {
29
- const { chartId, container, tooltip } = useChart();
30
- const { registerTooltipContentProvider } = tooltip;
31
- const { margin, plotDimensions, } = usePlotDimensions();
32
- const { xLabel, yLabel, nMinusLagHeader = ' f[n-1](x)', nHeader = ' f[n](x) ', nPlusLagHeader = ' f[n+1](x)', xValueFormatter = formatTime, yValueFormatter = formatValue, xChangeFormatter = formatTimeChange, yChangeFormatter = formatValueChange, style, } = props;
33
- const tooltipStyle = useMemo(() => (Object.assign(Object.assign({}, defaultTooltipStyle), style)), [style]);
34
- // register the tooltip content provider, which when called on mouse-enter-series events
35
- // will render the tooltip container and then the tooltip content. recall that the
36
- // tooltip content is generated in this plot (because this is the plot that holds all the
37
- // information needed to render it), and the container for the content is rendered by
38
- // the <Tooltip>, which this knows nothing about.
39
- //
40
- // the 'registration function accepts a function of the form (seriesName, time, series) => TooltipDimensions.
41
- // and that function has a closure on the content-specific information needed to add the
42
- // actual content
43
- useEffect(() => {
44
- if (container) {
45
- // register the tooltip content provider function with the chart hook (useChart) so that
46
- // it is visible to all children of the Chart (i.e. the <Tooltip>).
47
- registerTooltipContentProvider((seriesName, time, tooltipData, mouseCoords) => addTooltipContent(seriesName, time, tooltipData, mouseCoords, chartId, container, margin, plotDimensions, tooltipStyle));
48
- }
49
- }, [
50
- chartId, container, margin, plotDimensions, registerTooltipContentProvider,
51
- xLabel, xChangeFormatter, xValueFormatter,
52
- yLabel, yChangeFormatter, yValueFormatter,
53
- nMinusLagHeader, nHeader, nPlusLagHeader,
54
- tooltipStyle
55
- ]);
56
- return null;
33
+ const { xLabel, yLabel,
34
+ // (the `nMinusLagHeader`, `nHeader`, and `nPlusLagHeader` properties aren't used: the
35
+ // column headers are always the `f[i](x)` form, built from the point's index)
36
+ xValueFormatter = formatTime, yValueFormatter = formatValue, style, } = props;
37
+ return (_jsx(TooltipContent, { style: style, capture: (seriesName, time, tooltipData) => captureTooltipContent(seriesName, time, tooltipData, { xLabel, yLabel, xValueFormatter, yValueFormatter }), children: (tooltipContent, tooltipStyle) => _jsx(PoincareTooltipBody, { tooltipContent: tooltipContent, tooltipStyle: tooltipStyle }, tooltipContent.hoveredTime) }));
57
38
  }
58
- const dimension = {
59
- width: 60,
60
- defaultWidth: 70,
61
- minWidth: 50,
62
- maxWidth: 100,
63
- height: 15,
64
- defaultHeight: 15,
65
- minHeight: 10,
66
- maxHeight: 50
67
- };
68
39
  /**
69
- * Callback function that adds tooltip content and returns the tooltip width and text height
70
- * @param seriesName The name of the series (i.e. the neuron ID)
71
- * @param time The time (x-coordinate value) corresponding to the mouse location
40
+ * The Poincaré tooltip's content: the series' name, the table of the hovered iterate and its
41
+ * neighbors, and, as wide as the table (or the name, when that's wider), the sparkline of the
42
+ * series' values around the hovered point
43
+ * @param props The captured content, and the tooltip's style
44
+ * @return The tooltip's content
45
+ */
46
+ function PoincareTooltipBody(props) {
47
+ const { tooltipContent, tooltipStyle } = props;
48
+ // the sparkline is as wide as the tooltip's content: its table, or its title when that's wider.
49
+ // Both are measured at their natural widths (rather than the sparkline-stretched width of the
50
+ // tooltip itself), before the tooltip is painted.
51
+ const titleRef = useRef(null);
52
+ const tableRef = useRef(null);
53
+ const [sparklineWidth, setSparklineWidth] = useState(MIN_SPARKLINE_WIDTH);
54
+ useLayoutEffect(() => {
55
+ var _a, _b, _c, _d;
56
+ const contentWidth = Math.max(MIN_SPARKLINE_WIDTH, (_b = (_a = tableRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) !== null && _b !== void 0 ? _b : 0, (_d = (_c = titleRef.current) === null || _c === void 0 ? void 0 : _c.offsetWidth) !== null && _d !== void 0 ? _d : 0);
57
+ if (contentWidth !== sparklineWidth)
58
+ setSparklineWidth(contentWidth);
59
+ }, [tooltipContent, sparklineWidth]);
60
+ const cellStyle = { padding: '1px 8px', textAlign: 'right', border: 'none' };
61
+ const rowLabelStyle = { ...cellStyle, textAlign: 'left', paddingLeft: 0 };
62
+ const headerCellStyle = { ...cellStyle, fontWeight: tooltipStyle.fontWeight + 550 };
63
+ // the "current" (middle) column stands out
64
+ const currentColumnStyle = { ...cellStyle, fontWeight: tooltipStyle.fontWeight + 300 };
65
+ // the series' values around the hovered point, over time, with the hovered point marked (when
66
+ // there are enough values to draw)
67
+ const sparkline = sparklineFor(tooltipContent.sparklineValues, sparklineWidth, SPARKLINE_HEIGHT, 2, undefined, tooltipContent.hoveredTime);
68
+ return _jsxs(_Fragment, { children: [_jsx("div", { ref: titleRef, style: { fontSize: tooltipStyle.fontSize, fontWeight: tooltipStyle.fontWeight, marginBottom: 4, width: 'fit-content' }, children: tooltipContent.seriesName }), _jsxs("table", { ref: tableRef, style: { fontSize: tooltipStyle.fontSize, borderCollapse: 'collapse', border: 'none', width: 'auto' }, children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("td", { style: rowLabelStyle }), _jsx("td", { style: headerCellStyle, children: tooltipContent.prevHeader }), _jsx("td", { style: { ...headerCellStyle, ...currentColumnStyle }, children: tooltipContent.currentHeader }), _jsx("td", { style: headerCellStyle, children: tooltipContent.nextHeader })] }) }), _jsxs("tbody", { children: [_jsxs("tr", { children: [_jsx("td", { style: rowLabelStyle, children: tooltipContent.xLabel }), _jsx("td", { style: cellStyle, children: tooltipContent.xPrev }), _jsx("td", { style: currentColumnStyle, children: tooltipContent.xCurrent }), _jsx("td", { style: cellStyle, children: tooltipContent.xNext })] }), _jsxs("tr", { children: [_jsx("td", { style: rowLabelStyle, children: tooltipContent.yLabel }), _jsx("td", { style: cellStyle, children: tooltipContent.yPrev }), _jsx("td", { style: currentColumnStyle, children: tooltipContent.yCurrent }), _jsx("td", { style: cellStyle, children: tooltipContent.yNext })] })] })] }), sparkline !== undefined && _jsxs(_Fragment, { children: [_jsxs("div", { style: { fontSize: tooltipStyle.fontSize, marginTop: 8 }, children: [tooltipContent.yLabel, " over time"] }), _jsxs("svg", { width: sparklineWidth, height: SPARKLINE_HEIGHT, style: { display: 'block', marginTop: 4 }, "aria-hidden": "true", children: [_jsx("path", { d: sparkline.path, fill: "none", stroke: tooltipStyle.fontColor, strokeWidth: 1, strokeLinejoin: "round", strokeLinecap: "round" }), sparkline.mark !== undefined &&
69
+ _jsx("circle", { cx: sparkline.mark[0], cy: sparkline.mark[1], r: 2.5, fill: tooltipStyle.fontColor })] })] })] });
70
+ }
71
+ /**
72
+ * Captures the data needed to render the tooltip's content: the table (the hovered point, the
73
+ * first point within 0.1 of the plot's time, and its neighbors), and the series' values around
74
+ * the hovered point, over time, for the sparkline
75
+ * @param seriesName The name of the series
76
+ * @param time The time of the hovered point
72
77
  * @param tooltipData The series data and metadata
73
- * @param mouseCoords The coordinates of the mouse when the event was fired (relative to the plot container)
74
- * @param chartId The ID of this chart
75
- * @param container The plot container (SVGSVGElement)
76
- * @param margin The plot margins
77
- * @param tooltipStyle The style properties for the tooltip
78
- * @param plotDimensions The dimensions of the plot
79
- * @return The width and text height of the tooltip content
78
+ * @param options Header labels and value formatters
79
+ * @return The tooltip's content
80
80
  */
81
- function addTooltipContent(seriesName, time, tooltipData, mouseCoords, chartId, container, margin, plotDimensions, tooltipStyle) {
82
- const [x, y] = mouseCoords;
81
+ function captureTooltipContent(seriesName, time, tooltipData, options) {
83
82
  const { series } = tooltipData;
84
83
  const [lower, point, upper, index] = findPointAndNeighbors(series, time, 0.1, value => value.time, () => emptyIterateDatum);
85
- const defaultBorderElement = {
86
- color: tooltipStyle.borderColor,
87
- radius: 0,
88
- width: 0,
89
- opacity: 0
90
- };
91
- const border = {
92
- top: defaultBorderElement,
93
- bottom: defaultBorderElement,
94
- left: defaultBorderElement,
95
- right: defaultBorderElement,
96
- };
97
- const background = {
98
- color: tooltipStyle.backgroundColor,
99
- opacity: tooltipStyle.backgroundOpacity
100
- };
101
- const font = {
102
- size: tooltipStyle.fontSize,
103
- family: tooltipStyle.fontFamily,
104
- color: tooltipStyle.fontColor,
105
- weight: tooltipStyle.fontWeight
84
+ const { xLabel, yLabel, xValueFormatter, yValueFormatter } = options;
85
+ return {
86
+ seriesName,
87
+ // (the headers are always the f[i](x) form, built from the point's index)
88
+ prevHeader: index > 0 ? `f[${index - 1}](x)` : '- n/a -',
89
+ currentHeader: `f[${index}](x)`,
90
+ nextHeader: index < series.length - 1 ? `f[${index + 1}](x)` : '- n/a -',
91
+ xLabel,
92
+ xPrev: xValueFormatter(lower.time),
93
+ xCurrent: xValueFormatter(point.time),
94
+ xNext: xValueFormatter(upper.time),
95
+ yLabel,
96
+ yPrev: yValueFormatter(lower.iterateN_1),
97
+ yCurrent: yValueFormatter(point.iterateN_1),
98
+ yNext: yValueFormatter(upper.iterateN_1),
99
+ sparklineValues: valuesAround(series, index, SPARKLINE_POINTS),
100
+ hoveredTime: point.time,
106
101
  };
107
- const padding = {
108
- top: tooltipStyle.paddingTop,
109
- bottom: tooltipStyle.paddingBottom,
110
- right: tooltipStyle.paddingRight,
111
- left: tooltipStyle.paddingLeft
112
- };
113
- const currentIterateStyle = {
114
- border,
115
- dimension,
116
- background,
117
- font: Object.assign(Object.assign({}, font), { weight: 550 }),
118
- padding,
119
- alignText: 'right',
120
- verticalAlignText: 'middle'
121
- };
122
- return DataFrame
123
- .from([
124
- [lower.time, point.time, upper.time],
125
- [lower.iterateN_1, point.iterateN_1, upper.iterateN_1]
126
- ])
127
- // create the table data that has the column headers
128
- .flatMap(df => TableData
129
- .fromDataFrame(df)
130
- .withColumnHeader([
131
- index > 0 ? `f[${index - 1}](x)` : '- n/a -',
132
- `f[${index}](x)`,
133
- index < series.length - 1 ? `f[${index + 1}](x)` : '- n/a -'
134
- ])
135
- .flatMap(td => td.withRowHeader(['t (ms)', 'value'])))
136
- // add the dat formatters for the (x, y) values of the iterates
137
- .flatMap(tableData => TableFormatter.fromTableData(tableData)
138
- .addRowFormatter(1, value => formatTime(value, ""))
139
- .flatMap(tf => tf.addRowFormatter(2, value => formatValue(value)))
140
- .flatMap(tf => tf.formatTable()))
141
- .map(tableData => TableStyler.fromTableData(tableData)
142
- .withTableFont(font)
143
- .withPadding(padding)
144
- .withColumnHeaderStyle({
145
- font: Object.assign(Object.assign({}, font), { weight: 650 }),
146
- padding: { top: 0, bottom: 10 },
147
- dimension: Object.assign(Object.assign({}, dimension), { maxHeight: 70 }),
148
- alignText: 'center',
149
- })
150
- .withRowHeaderStyle({
151
- font: Object.assign(Object.assign({}, font), { weight: 650 }),
152
- padding: { left: 0, right: 10 },
153
- dimension: dimension,
154
- alignText: 'center',
155
- })
156
- .withColumnStyles([], {
157
- padding: { left: 10, right: 10 },
158
- alignText: 'right',
159
- })
160
- .withCellStyle(1, 2, currentIterateStyle)
161
- .withCellStyle(2, 2, currentIterateStyle)
162
- .withRowStyles([], {
163
- font,
164
- dimension: Object.assign(Object.assign({}, dimension), { maxHeight: 20 }),
165
- padding: { top: 0, bottom: 0 }
166
- })
167
- .styleTable())
168
- .flatMap(styledTable => createTable(styledTable, container, `t${time}-${seriesName}-header-${chartId}`, tooltipCoordinates))
169
- .map(renderingInfo => {
170
- const { tableX: x, tableY: y, tableWidth: contentWidth, tableHeight: contentHeight } = renderingInfo;
171
- return { x, y, contentWidth, contentHeight };
172
- })
173
- .getOrThrow();
174
- /**
175
- * Calculates the coordinates of the tooltip based on the width and height of the SVG
176
- * table. This is needed because the tooltip needs to be adjusted relative mouse location
177
- * when the mouse coordinates are too close to an edge.
178
- * @param width The SVG table width
179
- * @param height The SVG table height
180
- * @return The updated tooltip coordinates
181
- */
182
- function tooltipCoordinates(width, height) {
183
- return [
184
- tooltipX(x, width, plotDimensions, tooltipStyle, margin),
185
- tooltipY(y, height, plotDimensions, tooltipStyle, margin)
186
- ];
187
- }
102
+ }
103
+ /**
104
+ * The values (each point's `f[n+1](x)`) of (at most) the specified number of points around the
105
+ * hovered point, over time: centered on the hovered point, or shifted to stay within the series
106
+ * when the hovered point is near its start or end
107
+ * @param series The series' iterates, ordered by time
108
+ * @param index The index of the hovered point (or -1, when it wasn't found)
109
+ * @param count The (largest) number of points
110
+ * @return The points' times and values, in order
111
+ */
112
+ function valuesAround(series, index, count) {
113
+ if (index < 0)
114
+ return [];
115
+ const start = Math.max(0, Math.min(index - Math.floor(count / 2), series.length - count));
116
+ const end = Math.min(series.length, start + count);
117
+ const values = [];
118
+ for (let i = start; i < end; i++)
119
+ values.push({ time: series[i].time, value: series[i].iterateN_1 });
120
+ return values;
188
121
  }
189
122
  //# sourceMappingURL=PoincarePlotTooltipContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PoincarePlotTooltipContent.js","sourceRoot":"","sources":["../../../../src/app/charts/tooltips/PoincarePlotTooltipContent.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PoincarePlotTooltipContent.js","sourceRoot":"","sources":["../../../../src/app/charts/tooltips/PoincarePlotTooltipContent.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,14 @@
1
- import { TooltipStyle } from "./tooltipUtils";
1
+ import type { ReactElement } from "react";
2
+ import { type TooltipStyle } from "./tooltipUtils";
3
+ /**
4
+ * Options for displaying the tooltip content. These options are specific to this
5
+ * particular implementation of a tooltip content. The options effect are applied
6
+ * as shown below.
7
+ * ```
8
+ * series name
9
+ * formatters.x(x), formatters.y(y)
10
+ * ```
11
+ */
2
12
  /**
3
13
  * Properties for rendering the tooltip content. The properties are applied as
4
14
  * shown below.
@@ -6,24 +16,38 @@ import { TooltipStyle } from "./tooltipUtils";
6
16
  * series name
7
17
  * xFormatter, yFormatter
8
18
  * ```
19
+ * Below that, the spikes' statistics: the mean value and standard deviation (formatted by
20
+ * `yFormatter`), and the mean time between spikes (formatted by `intervalFormatter`).
9
21
  */
10
22
  export interface Props {
23
+ /** formats the spike's time */
11
24
  xFormatter?: (value: number) => string;
25
+ /** formats the values (the spike's value, and the mean and standard deviation of the values) */
12
26
  yFormatter?: (value: number) => string;
27
+ /**
28
+ * formats the mean time between spikes (a duration, in the times' units). Defaults to the
29
+ * `xFormatter`, so give it its own formatter when the times are formatted as something that isn't
30
+ * a duration, such as the time of day
31
+ */
32
+ intervalFormatter?: (interval: number) => string;
33
+ /** the style of the tooltip */
13
34
  style?: Partial<TooltipStyle>;
14
35
  }
15
36
  /**
16
- * Adds tooltip content that shows the series name and the (time, value) of the selected point.
37
+ * Adds tooltip content that shows the series name, the (time, value) of the selected spike, the
38
+ * statistics of the series' spikes in the window of data the chart holds (their count, the mean
39
+ * and standard deviation of their values, and the mean time between them), and a sparkline of
40
+ * their values over the window, with the selected spike marked.
17
41
  * ```
18
42
  * series name
19
43
  * time, value
44
+ * statistics
45
+ * sparkline
20
46
  * ```
21
47
  *
22
- * Registers the tooltip-content provider with the `ChartContext` so that when d3 fires a mouse-over
23
- * event on a series. The content provider is returns the {@link addTooltipContent} function
24
- * when called. And when called the {@link addTooltipContent} function adds the actual tooltip
25
- * content to the SVG element.
48
+ * Built on {@link TooltipContent}; put it inside a {@link Tooltip}.
26
49
  * @param props The properties describing the tooltip content
27
- * @return null
50
+ * @return The tooltip's portal, or `null` when nothing is being hovered
28
51
  */
29
- export declare function RasterPlotTooltipContent(props: Props): null;
52
+ export declare function RasterPlotTooltipContent(props: Props): ReactElement | null;
53
+ //# sourceMappingURL=RasterPlotTooltipContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RasterPlotTooltipContent.d.ts","sourceRoot":"","sources":["../../../../src/app/charts/tooltips/RasterPlotTooltipContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,OAAO,CAAC;AACxC,OAAO,EAOH,KAAK,YAAY,EAEpB,MAAM,gBAAgB,CAAC;AAUxB;;;;;;;;GAQG;AAQH;;;;;;;;;GASG;AACH,MAAM,WAAW,KAAK;IAClB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACtC,gGAAgG;IAChG,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IACtC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IAChD,+BAA+B;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAChC;AAqBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,GAAG,IAAI,CAmF1E"}