stream-charts 1.0.1 → 1.1.1

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 (271) hide show
  1. package/README.md +757 -342
  2. package/changes.md +11 -0
  3. package/dist/src/app/charts/Chart.d.ts +116 -87
  4. package/dist/src/app/charts/Chart.js +96 -101
  5. package/dist/src/app/charts/Chart.js.map +1 -1
  6. package/dist/src/app/charts/axes/AxesState.d.ts +64 -0
  7. package/dist/src/app/charts/axes/AxesState.js +97 -0
  8. package/dist/src/app/charts/axes/AxesState.js.map +1 -0
  9. package/dist/src/app/charts/axes/AxesState.test.js +30 -0
  10. package/dist/src/app/charts/axes/AxesState.test.js.map +1 -0
  11. package/dist/src/app/charts/axes/AxisInterval.d.ts +92 -0
  12. package/dist/src/app/charts/axes/AxisInterval.js +126 -0
  13. package/dist/src/app/charts/axes/AxisInterval.js.map +1 -0
  14. package/dist/src/app/charts/axes/AxisInterval.test.js +120 -0
  15. package/dist/src/app/charts/axes/AxisInterval.test.js.map +1 -0
  16. package/dist/src/app/charts/axes/BaseAxisRange.d.ts +83 -0
  17. package/dist/src/app/charts/axes/BaseAxisRange.js +58 -0
  18. package/dist/src/app/charts/axes/BaseAxisRange.js.map +1 -0
  19. package/dist/src/app/charts/axes/ContinuousAxis.d.ts +22 -0
  20. package/dist/src/app/charts/axes/ContinuousAxis.js +96 -0
  21. package/dist/src/app/charts/axes/ContinuousAxis.js.map +1 -0
  22. package/dist/src/app/charts/axes/ContinuousAxisRange.d.ts +59 -0
  23. package/dist/src/app/charts/axes/ContinuousAxisRange.js +84 -0
  24. package/dist/src/app/charts/axes/ContinuousAxisRange.js.map +1 -0
  25. package/dist/src/app/charts/axes/ContinuousAxisRange.test.js +47 -0
  26. package/dist/src/app/charts/axes/ContinuousAxisRange.test.js.map +1 -0
  27. package/dist/src/app/charts/axes/OrdinalAxis.d.ts +23 -0
  28. package/dist/src/app/charts/axes/OrdinalAxis.js +124 -0
  29. package/dist/src/app/charts/axes/OrdinalAxis.js.map +1 -0
  30. package/dist/src/app/charts/axes/OrdinalAxisRange.d.ts +69 -0
  31. package/dist/src/app/charts/axes/OrdinalAxisRange.js +100 -0
  32. package/dist/src/app/charts/axes/OrdinalAxisRange.js.map +1 -0
  33. package/dist/src/app/charts/axes/OrdinalAxisRange.test.js +48 -0
  34. package/dist/src/app/charts/axes/OrdinalAxisRange.test.js.map +1 -0
  35. package/dist/src/app/charts/axes/axes.d.ts +391 -0
  36. package/dist/src/app/charts/axes/axes.js +1046 -0
  37. package/dist/src/app/charts/axes/axes.js.map +1 -0
  38. package/dist/src/app/charts/d3types.d.ts +10 -10
  39. package/dist/src/app/charts/filters/regexFilter.d.ts +9 -0
  40. package/dist/src/app/charts/filters/regexFilter.js +18 -0
  41. package/dist/src/app/charts/filters/regexFilter.js.map +1 -0
  42. package/dist/src/app/charts/filters/regexFilter.test.d.ts +1 -0
  43. package/dist/src/app/charts/filters/regexFilter.test.js +11 -0
  44. package/dist/src/app/charts/filters/regexFilter.test.js.map +1 -0
  45. package/dist/src/app/charts/hooks/useAxes.d.ts +144 -0
  46. package/dist/src/app/charts/hooks/useAxes.js +187 -0
  47. package/dist/src/app/charts/hooks/useAxes.js.map +1 -0
  48. package/dist/src/app/charts/hooks/useChart.d.ts +30 -201
  49. package/dist/src/app/charts/hooks/useChart.js +33 -134
  50. package/dist/src/app/charts/hooks/useChart.js.map +1 -1
  51. package/dist/src/app/charts/hooks/useDataObservable.d.ts +74 -0
  52. package/dist/src/app/charts/hooks/useDataObservable.js +76 -0
  53. package/dist/src/app/charts/hooks/useDataObservable.js.map +1 -0
  54. package/dist/src/app/charts/hooks/useInitialData.d.ts +38 -0
  55. package/dist/src/app/charts/hooks/useInitialData.js +29 -0
  56. package/dist/src/app/charts/hooks/useInitialData.js.map +1 -0
  57. package/dist/src/app/charts/hooks/useMouse.d.ts +53 -0
  58. package/dist/src/app/charts/hooks/useMouse.js +65 -0
  59. package/dist/src/app/charts/hooks/useMouse.js.map +1 -0
  60. package/dist/src/app/charts/hooks/usePlotDimensions.d.ts +34 -0
  61. package/dist/src/app/charts/hooks/usePlotDimensions.js +73 -0
  62. package/dist/src/app/charts/hooks/usePlotDimensions.js.map +1 -0
  63. package/dist/src/app/charts/hooks/useTooltip.d.ts +64 -0
  64. package/dist/src/app/charts/hooks/useTooltip.js +52 -0
  65. package/dist/src/app/charts/hooks/useTooltip.js.map +1 -0
  66. package/dist/src/app/charts/observables/ChartData.d.ts +23 -0
  67. package/dist/src/app/charts/observables/ChartData.js +20 -0
  68. package/dist/src/app/charts/observables/ChartData.js.map +1 -0
  69. package/dist/src/app/charts/observables/iterates.d.ts +52 -0
  70. package/dist/src/app/charts/observables/iterates.js +121 -0
  71. package/dist/src/app/charts/observables/iterates.js.map +1 -0
  72. package/dist/src/app/charts/observables/iterates.test.d.ts +1 -0
  73. package/dist/src/app/charts/observables/iterates.test.js +180 -0
  74. package/dist/src/app/charts/observables/iterates.test.js.map +1 -0
  75. package/dist/src/app/charts/observables/ordinals.d.ts +75 -0
  76. package/dist/src/app/charts/observables/ordinals.js +141 -0
  77. package/dist/src/app/charts/observables/ordinals.js.map +1 -0
  78. package/dist/src/app/charts/observables/ordinals.test.d.ts +1 -0
  79. package/dist/src/app/charts/observables/ordinals.test.js +102 -0
  80. package/dist/src/app/charts/observables/ordinals.test.js.map +1 -0
  81. package/dist/src/app/charts/plots/BarPlot.d.ts +81 -0
  82. package/dist/src/app/charts/plots/BarPlot.js +557 -0
  83. package/dist/src/app/charts/plots/BarPlot.js.map +1 -0
  84. package/dist/src/app/charts/plots/PoincarePlot.d.ts +78 -0
  85. package/dist/src/app/charts/plots/PoincarePlot.js +504 -0
  86. package/dist/src/app/charts/plots/PoincarePlot.js.map +1 -0
  87. package/dist/src/app/charts/{RasterPlot.d.ts → plots/RasterPlot.d.ts} +1 -1
  88. package/dist/src/app/charts/{RasterPlot.js → plots/RasterPlot.js} +152 -133
  89. package/dist/src/app/charts/plots/RasterPlot.js.map +1 -0
  90. package/dist/src/app/charts/{ScatterPlot.d.ts → plots/ScatterPlot.d.ts} +10 -8
  91. package/dist/src/app/charts/plots/ScatterPlot.js +379 -0
  92. package/dist/src/app/charts/plots/ScatterPlot.js.map +1 -0
  93. package/dist/src/app/charts/{plot.d.ts → plots/plot.d.ts} +12 -14
  94. package/dist/src/app/charts/{plot.js → plots/plot.js} +19 -17
  95. package/dist/src/app/charts/plots/plot.js.map +1 -0
  96. package/dist/src/app/charts/series/baseSeries.d.ts +38 -0
  97. package/dist/src/app/charts/series/baseSeries.js +36 -0
  98. package/dist/src/app/charts/series/baseSeries.js.map +1 -0
  99. package/dist/src/app/charts/series/datumSeries.test.d.ts +1 -0
  100. package/dist/src/app/charts/series/datumSeries.test.js +50 -0
  101. package/dist/src/app/charts/series/datumSeries.test.js.map +1 -0
  102. package/dist/src/app/charts/series/iterateSeries.d.ts +42 -0
  103. package/dist/src/app/charts/series/iterateSeries.js +34 -0
  104. package/dist/src/app/charts/series/iterateSeries.js.map +1 -0
  105. package/dist/src/app/charts/series/ordinalSeries.d.ts +54 -0
  106. package/dist/src/app/charts/series/ordinalSeries.js +98 -0
  107. package/dist/src/app/charts/series/ordinalSeries.js.map +1 -0
  108. package/dist/src/app/charts/series/timeSeries.d.ts +30 -0
  109. package/dist/src/app/charts/series/timeSeries.js +19 -0
  110. package/dist/src/app/charts/series/timeSeries.js.map +1 -0
  111. package/dist/src/app/charts/{chartData.d.ts → series/timeSeriesChartData.d.ts} +11 -6
  112. package/dist/src/app/charts/series/timeSeriesChartData.js +32 -0
  113. package/dist/src/app/charts/series/timeSeriesChartData.js.map +1 -0
  114. package/dist/src/app/charts/styling/barPlotStyle.d.ts +41 -0
  115. package/dist/src/app/charts/styling/barPlotStyle.js +84 -0
  116. package/dist/src/app/charts/styling/barPlotStyle.js.map +1 -0
  117. package/dist/src/app/charts/{margins.d.ts → styling/margins.d.ts} +7 -5
  118. package/dist/src/app/charts/{margins.js → styling/margins.js} +19 -9
  119. package/dist/src/app/charts/styling/margins.js.map +1 -0
  120. package/dist/src/app/charts/styling/margins.test.d.ts +1 -0
  121. package/dist/src/app/charts/styling/margins.test.js +19 -0
  122. package/dist/src/app/charts/styling/margins.test.js.map +1 -0
  123. package/dist/src/app/charts/styling/svgStyle.d.ts +76 -0
  124. package/dist/src/app/charts/styling/svgStyle.js +84 -0
  125. package/dist/src/app/charts/styling/svgStyle.js.map +1 -0
  126. package/dist/src/app/charts/subscriptions/subscription.test.d.ts +1 -0
  127. package/dist/src/app/charts/subscriptions/subscription.test.js +395 -0
  128. package/dist/src/app/charts/subscriptions/subscription.test.js.map +1 -0
  129. package/dist/src/app/charts/subscriptions/subscriptions.d.ts +100 -0
  130. package/dist/src/app/charts/subscriptions/subscriptions.js +449 -0
  131. package/dist/src/app/charts/subscriptions/subscriptions.js.map +1 -0
  132. package/dist/src/app/charts/tooltips/BarPlotTooltipContent.d.ts +90 -0
  133. package/dist/src/app/charts/tooltips/BarPlotTooltipContent.js +302 -0
  134. package/dist/src/app/charts/tooltips/BarPlotTooltipContent.js.map +1 -0
  135. package/dist/src/app/charts/tooltips/PoincarePlotTooltipContent.d.ts +100 -0
  136. package/dist/src/app/charts/tooltips/PoincarePlotTooltipContent.js +190 -0
  137. package/dist/src/app/charts/tooltips/PoincarePlotTooltipContent.js.map +1 -0
  138. package/dist/src/app/charts/{RasterPlotTooltipContent.js → tooltips/RasterPlotTooltipContent.js} +40 -44
  139. package/dist/src/app/charts/tooltips/RasterPlotTooltipContent.js.map +1 -0
  140. package/dist/src/app/charts/tooltips/ScatterPlotTooltipContent.js +154 -0
  141. package/dist/src/app/charts/tooltips/ScatterPlotTooltipContent.js.map +1 -0
  142. package/dist/src/app/charts/{Tooltip.d.ts → tooltips/Tooltip.d.ts} +4 -2
  143. package/dist/src/app/charts/{Tooltip.js → tooltips/Tooltip.js} +23 -28
  144. package/dist/src/app/charts/tooltips/Tooltip.js.map +1 -0
  145. package/dist/src/app/charts/{tooltipUtils.d.ts → tooltips/tooltipUtils.d.ts} +11 -6
  146. package/dist/src/app/charts/{tooltipUtils.js → tooltips/tooltipUtils.js} +33 -17
  147. package/dist/src/app/charts/tooltips/tooltipUtils.js.map +1 -0
  148. package/dist/src/app/charts/{Tracker.d.ts → trackers/Tracker.d.ts} +6 -5
  149. package/dist/src/app/charts/trackers/Tracker.js +60 -0
  150. package/dist/src/app/charts/trackers/Tracker.js.map +1 -0
  151. package/dist/src/app/charts/{trackerUtils.d.ts → trackers/trackerUtils.d.ts} +13 -8
  152. package/dist/src/app/charts/trackers/trackerUtils.js +359 -0
  153. package/dist/src/app/charts/trackers/trackerUtils.js.map +1 -0
  154. package/dist/src/app/charts/utils.d.ts +22 -32
  155. package/dist/src/app/charts/utils.js +36 -37
  156. package/dist/src/app/charts/utils.js.map +1 -1
  157. package/dist/src/index.d.ts +48 -15
  158. package/dist/src/index.js +71 -15
  159. package/dist/src/index.js.map +1 -1
  160. package/package.json +30 -20
  161. package/src/app/charts/Chart.tsx +334 -0
  162. package/src/app/charts/axes/AxesState.test.ts +34 -0
  163. package/src/app/charts/axes/AxesState.ts +112 -0
  164. package/src/app/charts/axes/AxisInterval.test.ts +143 -0
  165. package/src/app/charts/axes/AxisInterval.ts +139 -0
  166. package/src/app/charts/axes/BaseAxisRange.ts +113 -0
  167. package/src/app/charts/axes/ContinuousAxis.tsx +192 -0
  168. package/src/app/charts/axes/ContinuousAxisRange.test.ts +55 -0
  169. package/src/app/charts/axes/ContinuousAxisRange.ts +96 -0
  170. package/src/app/charts/axes/OrdinalAxis.tsx +223 -0
  171. package/src/app/charts/axes/OrdinalAxisRange.test.ts +55 -0
  172. package/src/app/charts/axes/OrdinalAxisRange.ts +112 -0
  173. package/src/app/charts/axes/axes.ts +1569 -0
  174. package/src/app/charts/d3types.ts +16 -0
  175. package/src/app/charts/filters/regexFilter.test.ts +13 -0
  176. package/src/app/charts/filters/regexFilter.ts +17 -0
  177. package/src/app/charts/hooks/useAxes.tsx +341 -0
  178. package/src/app/charts/hooks/useChart.tsx +159 -0
  179. package/src/app/charts/hooks/useDataObservable.tsx +175 -0
  180. package/src/app/charts/hooks/useInitialData.tsx +65 -0
  181. package/src/app/charts/hooks/useMouse.tsx +125 -0
  182. package/src/app/charts/hooks/usePlotDimensions.tsx +120 -0
  183. package/src/app/charts/hooks/useTooltip.tsx +112 -0
  184. package/src/app/charts/observables/ChartData.ts +31 -0
  185. package/src/app/charts/observables/iterates.test.ts +201 -0
  186. package/src/app/charts/observables/iterates.ts +203 -0
  187. package/src/app/charts/observables/ordinals.test.ts +135 -0
  188. package/src/app/charts/observables/ordinals.ts +248 -0
  189. package/src/app/charts/plots/BarPlot.tsx +1088 -0
  190. package/src/app/charts/plots/PoincarePlot.tsx +832 -0
  191. package/src/app/charts/plots/RasterPlot.tsx +676 -0
  192. package/src/app/charts/plots/ScatterPlot.tsx +653 -0
  193. package/src/app/charts/plots/plot.ts +75 -0
  194. package/src/app/charts/series/baseSeries.ts +52 -0
  195. package/src/app/charts/series/datumSeries.test.ts +60 -0
  196. package/src/app/charts/series/iterateSeries.ts +56 -0
  197. package/src/app/charts/series/ordinalSeries.ts +164 -0
  198. package/src/app/charts/series/timeSeries.ts +40 -0
  199. package/src/app/charts/series/timeSeriesChartData.ts +68 -0
  200. package/src/app/charts/styling/barPlotStyle.ts +126 -0
  201. package/src/app/charts/styling/margins.test.ts +22 -0
  202. package/src/app/charts/styling/margins.ts +58 -0
  203. package/src/app/charts/styling/svgStyle.ts +118 -0
  204. package/src/app/charts/subscriptions/subscription.test.ts +499 -0
  205. package/src/app/charts/subscriptions/subscriptions.ts +635 -0
  206. package/src/app/charts/tooltips/BarPlotTooltipContent.tsx +440 -0
  207. package/src/app/charts/tooltips/PoincarePlotTooltipContent.tsx +352 -0
  208. package/src/app/charts/tooltips/RasterPlotTooltipContent.tsx +274 -0
  209. package/src/app/charts/tooltips/ScatterPlotTooltipContent.tsx +319 -0
  210. package/src/app/charts/tooltips/Tooltip.tsx +148 -0
  211. package/src/app/charts/tooltips/tooltipUtils.ts +216 -0
  212. package/src/app/charts/trackers/Tracker.tsx +129 -0
  213. package/src/app/charts/trackers/trackerUtils.ts +494 -0
  214. package/src/app/charts/utils.ts +109 -0
  215. package/dist/src/app/charts/CategoryAxis.d.ts +0 -20
  216. package/dist/src/app/charts/CategoryAxis.js +0 -112
  217. package/dist/src/app/charts/CategoryAxis.js.map +0 -1
  218. package/dist/src/app/charts/ContinuousAxis.d.ts +0 -16
  219. package/dist/src/app/charts/ContinuousAxis.js +0 -186
  220. package/dist/src/app/charts/ContinuousAxis.js.map +0 -1
  221. package/dist/src/app/charts/RasterPlot.js.map +0 -1
  222. package/dist/src/app/charts/RasterPlotTooltipContent.js.map +0 -1
  223. package/dist/src/app/charts/ScatterPlot.js +0 -351
  224. package/dist/src/app/charts/ScatterPlot.js.map +0 -1
  225. package/dist/src/app/charts/ScatterPlotTooltipContent.js +0 -163
  226. package/dist/src/app/charts/ScatterPlotTooltipContent.js.map +0 -1
  227. package/dist/src/app/charts/Tooltip.js.map +0 -1
  228. package/dist/src/app/charts/Tracker.js +0 -65
  229. package/dist/src/app/charts/Tracker.js.map +0 -1
  230. package/dist/src/app/charts/axes.d.ts +0 -132
  231. package/dist/src/app/charts/axes.js +0 -265
  232. package/dist/src/app/charts/axes.js.map +0 -1
  233. package/dist/src/app/charts/chartData.js +0 -32
  234. package/dist/src/app/charts/chartData.js.map +0 -1
  235. package/dist/src/app/charts/continuousAxisRangeFor.d.ts +0 -20
  236. package/dist/src/app/charts/continuousAxisRangeFor.js +0 -68
  237. package/dist/src/app/charts/continuousAxisRangeFor.js.map +0 -1
  238. package/dist/src/app/charts/datumSeries.d.ts +0 -59
  239. package/dist/src/app/charts/datumSeries.js +0 -55
  240. package/dist/src/app/charts/datumSeries.js.map +0 -1
  241. package/dist/src/app/charts/datumSeries.test.js +0 -50
  242. package/dist/src/app/charts/datumSeries.test.js.map +0 -1
  243. package/dist/src/app/charts/hooks/AxesState.d.ts +0 -37
  244. package/dist/src/app/charts/hooks/AxesState.js +0 -44
  245. package/dist/src/app/charts/hooks/AxesState.js.map +0 -1
  246. package/dist/src/app/charts/margins.js.map +0 -1
  247. package/dist/src/app/charts/margins.test.js +0 -14
  248. package/dist/src/app/charts/margins.test.js.map +0 -1
  249. package/dist/src/app/charts/plot.js.map +0 -1
  250. package/dist/src/app/charts/regexFilter.d.ts +0 -9
  251. package/dist/src/app/charts/regexFilter.js +0 -17
  252. package/dist/src/app/charts/regexFilter.js.map +0 -1
  253. package/dist/src/app/charts/regexFilter.test.js +0 -11
  254. package/dist/src/app/charts/regexFilter.test.js.map +0 -1
  255. package/dist/src/app/charts/subscriptions.d.ts +0 -43
  256. package/dist/src/app/charts/subscriptions.js +0 -213
  257. package/dist/src/app/charts/subscriptions.js.map +0 -1
  258. package/dist/src/app/charts/svgStyle.d.ts +0 -27
  259. package/dist/src/app/charts/svgStyle.js +0 -32
  260. package/dist/src/app/charts/svgStyle.js.map +0 -1
  261. package/dist/src/app/charts/timeRange.test.js +0 -54
  262. package/dist/src/app/charts/timeRange.test.js.map +0 -1
  263. package/dist/src/app/charts/tooltipUtils.js.map +0 -1
  264. package/dist/src/app/charts/trackerUtils.js +0 -130
  265. package/dist/src/app/charts/trackerUtils.js.map +0 -1
  266. /package/dist/src/app/charts/{datumSeries.test.d.ts → axes/AxesState.test.d.ts} +0 -0
  267. /package/dist/src/app/charts/{margins.test.d.ts → axes/AxisInterval.test.d.ts} +0 -0
  268. /package/dist/src/app/charts/{regexFilter.test.d.ts → axes/ContinuousAxisRange.test.d.ts} +0 -0
  269. /package/dist/src/app/charts/{timeRange.test.d.ts → axes/OrdinalAxisRange.test.d.ts} +0 -0
  270. /package/dist/src/app/charts/{RasterPlotTooltipContent.d.ts → tooltips/RasterPlotTooltipContent.d.ts} +0 -0
  271. /package/dist/src/app/charts/{ScatterPlotTooltipContent.d.ts → tooltips/ScatterPlotTooltipContent.d.ts} +0 -0
@@ -1,16 +1,49 @@
1
- export { seriesFrom, emptySeries, seriesFromTuples, emptySeriesFor, datumOf, Datum, Series, PixelDatum } from './app/charts/datumSeries';
2
- export { emptyChartData, ChartData, initialChartData } from './app/charts/chartData';
3
- export { regexFilter } from './app/charts/regexFilter';
4
1
  export { Chart } from './app/charts/Chart';
5
- export { RasterPlot } from "./app/charts/RasterPlot";
6
- export { ScatterPlot } from "./app/charts/ScatterPlot";
7
- export { defaultMargin, useChart } from "./app/charts/hooks/useChart";
8
- export { AxisLocation, defaultLineStyle, Axes, SeriesLineStyle, ZoomResult, AxesLabelFont } from "./app/charts/axes";
9
- export { ContinuousAxis, addContinuousNumericXAxis, addContinuousNumericYAxis } from "./app/charts/ContinuousAxis";
10
- export { CategoryAxis } from "./app/charts/CategoryAxis";
11
- export { assignAxes, createPlotContainer, setClipPath, AxesAssignment, Range, TimeSeries } from "./app/charts/plot";
12
- export { Tracker, TrackerLabelLocation, TrackerAxisUpdate, TrackerAxisInfo } from "./app/charts/Tracker";
13
- export { Tooltip } from "./app/charts/Tooltip";
14
- export { RasterPlotTooltipContent } from "./app/charts/RasterPlotTooltipContent";
15
- export { ScatterPlotTooltipContent } from "./app/charts/ScatterPlotTooltipContent";
16
- export { formatNumber, formatTime, formatValue, formatChange, noop, formatValueChange, formatTimeChange, minMaxOf, minMaxYFor } from "./app/charts/utils";
2
+ export { type AxisElementSelection, type SvgSelection, type GSelection, type LineSelection, type TextSelection, type RadialMagnifierSelection, type BarMagnifierSelection, type MagnifierTextSelection, type TrackerSelection } from './app/charts/d3types';
3
+ export { noop, mouseInPlotAreaFor, textWidthOf, textDimensions, formatNumber, formatTime, formatValue, formatChange, formatTimeChange, formatValueChange, minMaxOf } from './app/charts/utils';
4
+ export { type AxisTickStyle, defaultAxisTickStyle, type AxesFont, defaultAxesFont, type SeriesStyle, type SeriesLineStyle, defaultLineStyle, type BaseAxis, type ContinuousNumericAxis, type OrdinalStringAxis, AxisLocation, addOrdinalStringAxis, labelIdFor, type ZoomResult, calculateOrdinalConstrainedZoomFor, calculateConstrainedZoomFor, ordinalAxisZoomHandler, axesZoomHandler, calculatePanFor, panHandler, panHandler2D, axesForSeriesGen, continuousAxisRanges, continuousAxisIntervals, continuousRange } from './app/charts/axes/axes';
5
+ export { AxisInterval } from './app/charts/axes/AxisInterval';
6
+ export { ContinuousAxis, } from './app/charts/axes/ContinuousAxis';
7
+ export { type ContinuousAxisRange, } from './app/charts/axes/ContinuousAxisRange';
8
+ export { OrdinalAxis } from './app/charts/axes/OrdinalAxis';
9
+ export { regexFilter } from './app/charts/filters/regexFilter';
10
+ export { type AxesState, } from './app/charts/axes/AxesState';
11
+ export * from './app/charts/hooks/useAxes';
12
+ export { useAxes, type UseAxesValues, defaultAxesValues } from './app/charts/hooks/useAxes';
13
+ export * from './app/charts/hooks/useChart';
14
+ export { useChart, type NoTooltipMetadata, } from './app/charts/hooks/useChart';
15
+ export * from './app/charts/hooks/useDataObservable';
16
+ export { useDataObservable, } from './app/charts/hooks/useDataObservable';
17
+ export * from './app/charts/hooks/useInitialData';
18
+ export { useInitialData, } from './app/charts/hooks/useInitialData';
19
+ export * from './app/charts/hooks/useMouse';
20
+ export { useMouse, type UseMouseValues, defaultMouseValues, } from './app/charts/hooks/useMouse';
21
+ export {} from './app/charts/hooks/usePlotDimensions';
22
+ export { usePlotDimensions, type UsePlotDimensionsValues, defaultPlotDimensions, defaultMargin } from './app/charts/hooks/usePlotDimensions';
23
+ export {} from './app/charts/hooks/useTooltip';
24
+ export { useTooltip, type UseTooltipValues, defaultTooltipValues, type TooltipData } from './app/charts/hooks/useTooltip';
25
+ export { type ChartData, defaultChartData, copyChartData } from './app/charts/observables/ChartData';
26
+ export { type IterateChartData, copyIterateDataFrom, iteratesObservable } from './app/charts/observables/iterates';
27
+ export { ordinalsObservable, type OrdinalChartData, type OrdinalStats, defaultOrdinalStats, type OrdinalValueStats, defaultOrdinalValueStats, type OrdinalDatumExtremum, initialMinValueDatum, initialMaxValueDatum, initialMinTimeDatum, initialMaxTimeDatum, valueStatusDatumOfDefault, isDefaultValueStatsDatum, copyOrdinalDataFrom, copyOrdinalStats, copyOrdinalValueStats, copyValueStatsForSeries, copyOrdinalDatumExtremum, } from './app/charts/observables/ordinals';
28
+ export { type Series, createPlotContainer, type AxesAssignment, setClipPathG, assignAxes } from './app/charts/plots/plot';
29
+ export { BarPlot } from './app/charts/plots/BarPlot';
30
+ export { NoCurveFactory, PoincarePlot } from './app/charts/plots/PoincarePlot';
31
+ export { RasterPlot } from './app/charts/plots/RasterPlot';
32
+ export { ScatterPlot } from './app/charts/plots/ScatterPlot';
33
+ export { type BaseSeries, seriesFrom, emptySeries, emptySeriesFor } from './app/charts/series/baseSeries';
34
+ export { type IterateDatum, emptyIterateDatum, iterateDatumOf, nonEmptyIterateDatum, type IterateSeries, iterateSeriesFromTuples, } from './app/charts/series/iterateSeries';
35
+ export { type OrdinalDatum, emptyOrdinalDatum, copyOrdinalDatum, ordinalDatumOf, nonEmptyOrdinalDatum, type OrdinalSeries, ordinateSeriesFromTuples, initialOrdinalChartData, } from './app/charts/series/ordinalSeries';
36
+ export { type Datum, datumOf, emptyDatum, type TimeSeries, timeSeriesFromTuples, type PixelDatum } from './app/charts/series/timeSeries';
37
+ export { type TimeSeriesChartData, emptyTimeSeriesChartData, initialTimeSeriesChartData, } from './app/charts/series/timeSeriesChartData';
38
+ export { type BarSeriesStyle, type BarStyle, type LineStyle, defaultBarSeriesStyle, defaultMinMaxBarStyle, defaultWindowedMinMaxBarStyle, defaultWindowedMeanValueLineStyle, defaultValueLineStyle, defaultMeanValueLineStyle } from './app/charts/styling/barPlotStyle';
39
+ export { type Margin, noMargins, type Dimensions, plotDimensionsFrom, containerDimensionsFrom } from './app/charts/styling/margins';
40
+ export { type SvgStyle, initialSvgStyle, grabWidth, grabHeight, type SvgStrokeStyle, STROKE_COLOR, STROKE_WIDTH, STROKE_OPACITY, updateSvgStrokeColor, updateSvgStrokeWidth, updateSvgStrokeOpacity, applyStrokeStylesTo, type SvgFillStyle, updateSvgFillColor, updateSvgFillOpacity, applyFillStylesTo } from './app/charts/styling/svgStyle';
41
+ export { TimeWindowBehavior, subscriptionTimeSeriesFor, subscriptionTimeSeriesWithCadenceFor, subscriptionIteratesFor, type WindowedOrdinalStats, subscriptionOrdinalXFor } from './app/charts/subscriptions/subscriptions';
42
+ export { BarPlotTooltipContent } from './app/charts/tooltips/BarPlotTooltipContent';
43
+ export { PoincarePlotTooltipContent } from './app/charts/tooltips/PoincarePlotTooltipContent';
44
+ export { RasterPlotTooltipContent } from './app/charts/tooltips/RasterPlotTooltipContent';
45
+ export { ScatterPlotTooltipContent } from './app/charts/tooltips/ScatterPlotTooltipContent';
46
+ export { Tooltip } from './app/charts/tooltips/Tooltip';
47
+ export { type TooltipStyle, defaultTooltipStyle, type TooltipDimensions, removeTooltip, tooltipX, tooltipY, categoryTooltipY, boundingPoints, findPointAndNeighbors } from './app/charts/tooltips/tooltipUtils';
48
+ export { type TrackerAxisInfo, type TrackerAxisUpdate, TrackerLabelLocation, Tracker, } from './app/charts/trackers/Tracker';
49
+ export { type TrackerLabelFont, defaultTrackerLabelFont, type TrackerStyle, defaultTrackerStyle, trackerControlInstance, removeTrackerControl, } from './app/charts/trackers/trackerUtils';
package/dist/src/index.js CHANGED
@@ -1,17 +1,73 @@
1
- export { seriesFrom, emptySeries, seriesFromTuples, emptySeriesFor, datumOf } from './app/charts/datumSeries';
2
- export { emptyChartData, initialChartData } from './app/charts/chartData';
3
- export { regexFilter } from './app/charts/regexFilter';
4
1
  export { Chart } from './app/charts/Chart';
5
- export { RasterPlot } from "./app/charts/RasterPlot";
6
- export { ScatterPlot } from "./app/charts/ScatterPlot";
7
- export { defaultMargin, useChart } from "./app/charts/hooks/useChart";
8
- export { AxisLocation, defaultLineStyle } from "./app/charts/axes";
9
- export { ContinuousAxis, addContinuousNumericXAxis, addContinuousNumericYAxis } from "./app/charts/ContinuousAxis";
10
- export { CategoryAxis } from "./app/charts/CategoryAxis";
11
- export { assignAxes, createPlotContainer, setClipPath } from "./app/charts/plot";
12
- export { Tracker, TrackerLabelLocation } from "./app/charts/Tracker";
13
- export { Tooltip } from "./app/charts/Tooltip";
14
- export { RasterPlotTooltipContent } from "./app/charts/RasterPlotTooltipContent";
15
- export { ScatterPlotTooltipContent } from "./app/charts/ScatterPlotTooltipContent";
16
- export { formatNumber, formatTime, formatValue, formatChange, noop, formatValueChange, formatTimeChange, minMaxOf, minMaxYFor } from "./app/charts/utils";
2
+ export { noop, mouseInPlotAreaFor, textWidthOf, textDimensions, formatNumber, formatTime, formatValue, formatChange, formatTimeChange, formatValueChange, minMaxOf } from './app/charts/utils';
3
+ //
4
+ // axes
5
+ //
6
+ export { defaultAxisTickStyle, defaultAxesFont, defaultLineStyle, AxisLocation, addOrdinalStringAxis, labelIdFor, calculateOrdinalConstrainedZoomFor, calculateConstrainedZoomFor, ordinalAxisZoomHandler, axesZoomHandler, calculatePanFor, panHandler, panHandler2D, axesForSeriesGen, continuousAxisRanges, continuousAxisIntervals, continuousRange } from './app/charts/axes/axes';
7
+ export { AxisInterval } from './app/charts/axes/AxisInterval';
8
+ export { ContinuousAxis, } from './app/charts/axes/ContinuousAxis';
9
+ export { OrdinalAxis } from './app/charts/axes/OrdinalAxis';
10
+ //
11
+ // filters
12
+ //
13
+ export { regexFilter } from './app/charts/filters/regexFilter';
14
+ export * from './app/charts/hooks/useAxes';
15
+ export { useAxes, defaultAxesValues } from './app/charts/hooks/useAxes';
16
+ export * from './app/charts/hooks/useChart';
17
+ export { useChart, } from './app/charts/hooks/useChart';
18
+ export * from './app/charts/hooks/useDataObservable';
19
+ export { useDataObservable, } from './app/charts/hooks/useDataObservable';
20
+ export * from './app/charts/hooks/useInitialData';
21
+ export { useInitialData, } from './app/charts/hooks/useInitialData';
22
+ export * from './app/charts/hooks/useMouse';
23
+ export { useMouse, defaultMouseValues, } from './app/charts/hooks/useMouse';
24
+ export { usePlotDimensions, defaultPlotDimensions, defaultMargin } from './app/charts/hooks/usePlotDimensions';
25
+ export { useTooltip, defaultTooltipValues } from './app/charts/hooks/useTooltip';
26
+ //
27
+ // observables
28
+ //
29
+ //
30
+ export { defaultChartData, copyChartData } from './app/charts/observables/ChartData';
31
+ export { copyIterateDataFrom, iteratesObservable } from './app/charts/observables/iterates';
32
+ export { ordinalsObservable, defaultOrdinalStats, defaultOrdinalValueStats, initialMinValueDatum, initialMaxValueDatum, initialMinTimeDatum, initialMaxTimeDatum, valueStatusDatumOfDefault, isDefaultValueStatsDatum, copyOrdinalDataFrom, copyOrdinalStats, copyOrdinalValueStats, copyValueStatsForSeries, copyOrdinalDatumExtremum, } from './app/charts/observables/ordinals';
33
+ //
34
+ // plots
35
+ //
36
+ export { createPlotContainer, setClipPathG, assignAxes } from './app/charts/plots/plot';
37
+ export { BarPlot } from './app/charts/plots/BarPlot';
38
+ export { NoCurveFactory, PoincarePlot } from './app/charts/plots/PoincarePlot';
39
+ export { RasterPlot } from './app/charts/plots/RasterPlot';
40
+ export { ScatterPlot } from './app/charts/plots/ScatterPlot';
41
+ //
42
+ // series
43
+ //
44
+ export { seriesFrom, emptySeries, emptySeriesFor } from './app/charts/series/baseSeries';
45
+ export { emptyIterateDatum, iterateDatumOf, nonEmptyIterateDatum, iterateSeriesFromTuples, } from './app/charts/series/iterateSeries';
46
+ export { emptyOrdinalDatum, copyOrdinalDatum, ordinalDatumOf, nonEmptyOrdinalDatum, ordinateSeriesFromTuples, initialOrdinalChartData, } from './app/charts/series/ordinalSeries';
47
+ export { datumOf, emptyDatum, timeSeriesFromTuples } from './app/charts/series/timeSeries';
48
+ export { emptyTimeSeriesChartData, initialTimeSeriesChartData, } from './app/charts/series/timeSeriesChartData';
49
+ //
50
+ // styling
51
+ //
52
+ export { defaultBarSeriesStyle, defaultMinMaxBarStyle, defaultWindowedMinMaxBarStyle, defaultWindowedMeanValueLineStyle, defaultValueLineStyle, defaultMeanValueLineStyle } from './app/charts/styling/barPlotStyle';
53
+ export { noMargins, plotDimensionsFrom, containerDimensionsFrom } from './app/charts/styling/margins';
54
+ export { initialSvgStyle, grabWidth, grabHeight, STROKE_COLOR, STROKE_WIDTH, STROKE_OPACITY, updateSvgStrokeColor, updateSvgStrokeWidth, updateSvgStrokeOpacity, applyStrokeStylesTo, updateSvgFillColor, updateSvgFillOpacity, applyFillStylesTo } from './app/charts/styling/svgStyle';
55
+ //
56
+ // subscriptions
57
+ //
58
+ export { TimeWindowBehavior, subscriptionTimeSeriesFor, subscriptionTimeSeriesWithCadenceFor, subscriptionIteratesFor, subscriptionOrdinalXFor } from './app/charts/subscriptions/subscriptions';
59
+ //
60
+ // tooltips
61
+ //
62
+ export { BarPlotTooltipContent } from './app/charts/tooltips/BarPlotTooltipContent';
63
+ export { PoincarePlotTooltipContent } from './app/charts/tooltips/PoincarePlotTooltipContent';
64
+ export { RasterPlotTooltipContent } from './app/charts/tooltips/RasterPlotTooltipContent';
65
+ export { ScatterPlotTooltipContent } from './app/charts/tooltips/ScatterPlotTooltipContent';
66
+ export { Tooltip } from './app/charts/tooltips/Tooltip';
67
+ export { defaultTooltipStyle, removeTooltip, tooltipX, tooltipY, categoryTooltipY, boundingPoints, findPointAndNeighbors } from './app/charts/tooltips/tooltipUtils';
68
+ //
69
+ // trackers
70
+ //
71
+ export { TrackerLabelLocation, Tracker, } from './app/charts/trackers/Tracker';
72
+ export { defaultTrackerLabelFont, defaultTrackerStyle, trackerControlInstance, removeTrackerControl, } from './app/charts/trackers/trackerUtils';
17
73
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,OAAO,EAIV,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAC,cAAc,EAAa,gBAAgB,EAAC,MAAM,wBAAwB,CAAA;AAClF,OAAO,EAAC,WAAW,EAAC,MAAM,0BAA0B,CAAA;AAEpD,OAAO,EAAC,KAAK,EAAC,MAAM,oBAAoB,CAAA;AACxC,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAC,WAAW,EAAC,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EACH,YAAY,EACZ,gBAAgB,EAKnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,cAAc,EAAE,yBAAyB,EAAE,yBAAyB,EAAC,MAAM,6BAA6B,CAAC;AACjH,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAC,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAoC,MAAM,mBAAmB,CAAC;AAElH,OAAO,EAAC,OAAO,EAAE,oBAAoB,EAAqC,MAAM,sBAAsB,CAAC;AAEvG,OAAO,EAAC,OAAO,EAAC,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAC,wBAAwB,EAAC,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAC,yBAAyB,EAAC,MAAM,wCAAwC,CAAC;AAEjF,OAAO,EACH,YAAY,EACZ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,IAAI,EACJ,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACb,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stream-charts",
3
- "version": "1.0.1",
3
+ "version": "1.1.1",
4
4
  "description": "Charts for steaming data",
5
5
  "author": "Rob Philipp",
6
6
  "homepage": "https://robphilipp.github.io/stream-charts/",
@@ -9,9 +9,10 @@
9
9
  "main": "dist/src/index.js",
10
10
  "types": "dist/src/index.d.ts",
11
11
  "scripts": {
12
- "test": "jest src/app/charts/*.test.ts",
12
+ "test": "jest src/app/charts/**/*.test.ts*",
13
13
  "build": "tsc",
14
- "prepare": "npm run build"
14
+ "prepare": "npm run build",
15
+ "gen-docs": "npx typedoc src/app/charts/*"
15
16
  },
16
17
  "eslintConfig": {
17
18
  "extends": "react-app"
@@ -29,28 +30,37 @@
29
30
  ]
30
31
  },
31
32
  "devDependencies": {
32
- "d3": "^7.0.3",
33
- "prelude-ts": "^1.0.3",
34
- "react": "^17.0.2",
35
- "react-dom": "^17.0.2",
36
- "rxjs": "^7.3.0",
37
- "@types/d3": "^7.0.0",
38
- "@types/jest": "^27.0.2",
39
- "@types/node": "^16.9.5",
40
- "@types/react": "^17.0.24",
41
- "@types/react-dom": "^17.0.9",
42
- "ts-jest": "^27.0.5",
43
- "ts-loader": "^9.2.6",
44
- "ts-node": "^10.2.1",
45
- "@testing-library/jest-dom": "^5.14.1",
46
- "jest": "^27.2.1",
47
- "typescript": "^4.4.3"
33
+ "@babel/core": "^7.28.4",
34
+ "@babel/preset-env": "^7.28.3",
35
+ "@babel/preset-typescript": "^7.27.1",
36
+ "@jest/globals": "^30.2.0",
37
+ "@testing-library/dom": "^10.4.1",
38
+ "@testing-library/jest-dom": "^6.8.0",
39
+ "@testing-library/react": "^16.3.0",
40
+ "@testing-library/user-event": "^14.6.1",
41
+ "@types/d3": "^7.4.3",
42
+ "@types/jest": "^30.0.0",
43
+ "@types/node": "^24.6.0",
44
+ "@types/react": "^19.1.15",
45
+ "@types/react-dom": "^19.1.9",
46
+ "d3": "^7.9.0",
47
+ "data-frame-ts": "^1.0.3",
48
+ "jest": "^30.2.0",
49
+ "ts-jest": "^29.4.4",
50
+ "jest-util": "^30.2.0",
51
+ "react": "^19.1.1",
52
+ "react-dom": "^19.1.1",
53
+ "result-fn": "^0.5.0",
54
+ "rxjs": "^7.8.2",
55
+ "svg-table": "^0.1.2",
56
+ "typescript": "^5.9.2"
48
57
  },
49
58
  "files": [
50
59
  "package.json",
51
60
  "README.md",
52
61
  "changes.md",
53
62
  "dist/src/app/**",
54
- "dist/src/index.*"
63
+ "dist/src/index.*",
64
+ "src/app/charts/**"
55
65
  ]
56
66
  }
@@ -0,0 +1,334 @@
1
+ import {JSX, useEffect, useMemo, useRef} from 'react'
2
+ import {Dimensions, Margin, plotDimensionsFrom} from "./styling/margins";
3
+ import {initialSvgStyle, SvgStyle} from "./styling/svgStyle";
4
+ import {GSelection} from "./d3types";
5
+ import ChartProvider from "./hooks/useChart";
6
+ import PlotDimensionsProvider, {defaultMargin} from "./hooks/usePlotDimensions";
7
+ import * as d3 from "d3";
8
+ import {SeriesStyle} from "./axes/axes";
9
+ import {createPlotContainer} from "./plots/plot";
10
+ import {noop} from "./utils";
11
+ import AxesProvider from "./hooks/useAxes";
12
+ import MouseProvider from "./hooks/useMouse";
13
+ import TooltipProvider from "./hooks/useTooltip";
14
+ import {Observable, Subscription} from "rxjs";
15
+ import DataObservableProvider from './hooks/useDataObservable';
16
+ import {BaseSeries} from "./series/baseSeries";
17
+ import InitialDataProvider from "./hooks/useInitialData";
18
+ import {ChartData} from "./observables/ChartData";
19
+ import {AxisInterval} from "./axes/AxisInterval";
20
+
21
+ const defaultBackground = '#202020';
22
+
23
+ /**
24
+ * @template CD refers to the chart-data that is used by the Observable that has the stream of data.
25
+ * @template D refers to the datum in the data-series
26
+ * @template S refers to the type for the series style
27
+ */
28
+ interface Props<CD, D, S extends SeriesStyle> {
29
+ chartId: number
30
+ /**
31
+ * The width of the chart container
32
+ */
33
+ width: number
34
+ /**
35
+ * The height of the chart container
36
+ */
37
+ height: number
38
+ /**
39
+ * The margin between the edges of the chart container and the axes
40
+ */
41
+ margin?: Partial<Margin>
42
+ /**
43
+ * The base/default color of the chart lines. This can be overridden by the {@link Props.svgStyle} property.
44
+ */
45
+ color?: string
46
+ /**
47
+ * The base/default background color. This can be overridden by the {@link Props.svgStyle} property.
48
+ */
49
+ backgroundColor?: string
50
+ /**
51
+ * Overrides for the SVG style
52
+ */
53
+ svgStyle?: Partial<SvgStyle>
54
+ /**
55
+ * Map holding the series name to the series style associated with that series.
56
+ */
57
+ seriesStyles?: Map<string, S>
58
+
59
+ /*
60
+ | INITIAL DATA
61
+ */
62
+ /**
63
+ * Initial (static) data to plot before subscribing to the {@link TimeSeriesChartData} observable.
64
+ */
65
+ initialData: Array<BaseSeries<D>>
66
+ /**
67
+ * Optional conversion function that converts an array of base-series with datum type D to a
68
+ * descendent of a {@link ChartData} object
69
+ * @param initialData The initial array of series
70
+ */
71
+ asChartData?: (initialData: Array<BaseSeries<D>>) => CD
72
+ /**
73
+ * Regular expression that filters which series to display on the plot. Can be update while streaming
74
+ */
75
+ seriesFilter?: RegExp
76
+
77
+ /*
78
+ | DATA STREAM
79
+ */
80
+ /**
81
+ * {@link TimeSeriesChartData} RxJS `Observable` that feeds the chart data to display (i.e. the data stream).
82
+ */
83
+ seriesObservable?: Observable<CD>
84
+ /**
85
+ * The time-window (in milliseconds) to buffer the incoming data before updating the chart. This is
86
+ * a lever to reduce the lag between real-time and chart-time when a large amount of data is being
87
+ * sourced by the observable. Smaller time-windows result in smoother scrolling, but more updates, and
88
+ * possibly a larger lag.
89
+ */
90
+ windowingTime?: number
91
+ /**
92
+ * When switching to `true` from `false`, subscribes to the {@link seriesObservable}. When switching
93
+ * to `false` from `true`, unsubscribes from the {@link seriesObservable}.
94
+ */
95
+ shouldSubscribe?: boolean
96
+ /**
97
+ * Callback when the chart subscribes to the {@link TimeSeriesChartData} observable
98
+ * @param subscription The RxJS subscription
99
+ */
100
+ onSubscribe?: (subscription: Subscription) => void
101
+ /**
102
+ * Callback when the time range changes. This is generally used by plots where the
103
+ * x-axis starts to scroll as the data streams in past the end of the current time
104
+ * window.
105
+ * @param ranges A function that accepts the ranges, (start, end) associated with
106
+ * each axis in the plot. The ranges argument is a map(axis_id -> (start, end)).
107
+ * Where start and end refer to the range for the axis.
108
+ */
109
+ onUpdateAxesBounds?: (ranges: Map<string, AxisInterval>) => void
110
+ /**
111
+ * Callback for updating the current chart time. This is generally used by plots
112
+ * where the axes do not represent time, but rather some fix values, and the data
113
+ * hold time information
114
+ * @param time The current chart time
115
+ */
116
+ onUpdateChartTime?: (time: number) => void
117
+ /**
118
+ * Callback function that is called when new data arrives to the chart.
119
+ * @param seriesName The name of the series for which new data arrived
120
+ * @param data The new data that arrived in the windowing tine
121
+ * @see UseChartValues.windowingTime
122
+ */
123
+ onUpdateData?: (seriesName: string, data: Array<D>) => void
124
+
125
+ /**
126
+ * The child components of the chart (i.e. the axis, plot, tracker, tooltip)
127
+ */
128
+ children: JSX.Element | Array<JSX.Element>;
129
+ }
130
+
131
+ /**
132
+ * The chart container that holds the axes, plot, tracker, and tooltip. The chart manages the
133
+ * subscription, sets up the {@link useChart} hook via the {@link ChartProvider}.
134
+ * @param props The properties of the chart
135
+ * @template CD Chart data
136
+ * @template D The type of the datum type held in a series
137
+ * @template S The type of the series style
138
+ * @template TM The type of the tooltip metadata (the data about the series). If not specified,
139
+ * defaults to an empty object
140
+ * @constructor
141
+ * @example
142
+ *
143
+
144
+ <Chart
145
+ width={useGridCellWidth()}
146
+ height={useGridCellHeight()}
147
+ margin={{...defaultMargin, top: 60, right: 75, left: 70}}
148
+ color={theme.color}
149
+ backgroundColor={theme.backgroundColor}
150
+ seriesStyles={new Map([
151
+ ['neuron1', {
152
+ ...defaultLineStyle,
153
+ color: 'orange',
154
+ lineWidth: 2,
155
+ highlightColor: 'orange'
156
+ }],
157
+ ['neuron6', {
158
+ ...defaultLineStyle,
159
+ color: theme.name === 'light' ? 'blue' : 'gray',
160
+ lineWidth: 3,
161
+ highlightColor: theme.name === 'light' ? 'blue' : 'gray',
162
+ highlightWidth: 5
163
+ }],
164
+ ])}
165
+ initialData={initialDataRef.current}
166
+ seriesFilter={filter}
167
+ seriesObservable={observableRef.current}
168
+ shouldSubscribe={running}
169
+ onUpdateTime={handleChartTimeUpdate}
170
+ windowingTime={150}
171
+ >
172
+ <ContinuousAxis
173
+ axisId="x-axis-1"
174
+ location={AxisLocation.Bottom}
175
+ domain={[0, 5000]}
176
+ label="t (ms)"
177
+ />
178
+ <CategoryAxis
179
+ axisId="y-axis-1"
180
+ location={AxisLocation.Left}
181
+ categories={initialDataRef.current.map(series => series.name)}
182
+ label="neuron"
183
+ />
184
+ <CategoryAxis
185
+ axisId="y-axis-2"
186
+ location={AxisLocation.Right}
187
+ categories={initialDataRef.current.map(series => series.name)}
188
+ label="neuron"
189
+ />
190
+ <Tracker
191
+ visible={visibility.tracker}
192
+ labelLocation={TrackerLabelLocation.WithMouse}
193
+ style={{color: theme.color}}
194
+ font={{color: theme.color}}
195
+ />
196
+ <Tooltip
197
+ visible={visibility.tooltip}
198
+ style={{
199
+ fontColor: theme.color,
200
+ backgroundColor: theme.backgroundColor,
201
+ borderColor: theme.color,
202
+ backgroundOpacity: 0.9,
203
+ }}
204
+ >
205
+ <RasterPlotTooltipContent
206
+ xFormatter={value => formatNumber(value, " ,.0f") + ' ms'}
207
+ yFormatter={value => formatNumber(value, " ,.1f") + ' mV'}
208
+ />
209
+ </Tooltip>
210
+ <RasterPlot
211
+ spikeMargin={1}
212
+ dropDataAfter={5000}
213
+ panEnabled={true}
214
+ zoomEnabled={true}
215
+ zoomKeyModifiersRequired={true}
216
+ />
217
+ </Chart>
218
+ */
219
+ export function Chart<CD extends ChartData, D, S extends SeriesStyle, TM>(props: Props<CD, D, S>): JSX.Element {
220
+ const {
221
+ chartId,
222
+
223
+ width,
224
+ height,
225
+ color = '#d2933f',
226
+ backgroundColor = defaultBackground,
227
+ seriesStyles = new Map(),
228
+ initialData,
229
+ asChartData,
230
+ seriesFilter = /./,
231
+ seriesObservable,
232
+ windowingTime = 100,
233
+ shouldSubscribe = true,
234
+
235
+ onSubscribe = noop,
236
+ onUpdateAxesBounds = noop,
237
+ onUpdateChartTime = noop,
238
+ onUpdateData = noop,
239
+
240
+ children,
241
+ } = props
242
+
243
+ // override the defaults with the parent's properties, leaving any unset values as the default value
244
+ const margin = {...defaultMargin, ...props.margin}
245
+ const svgStyle = useMemo<SvgStyle>(
246
+ () => ({...initialSvgStyle, ...props.svgStyle, width: props.width, height: props.height}),
247
+ [props.height, props.svgStyle, props.width]
248
+ )
249
+
250
+ // hold a reference to the current width and the plot dimensions
251
+ const plotDimRef = useRef<Dimensions>(plotDimensionsFrom(width, height, margin))
252
+
253
+ // the container that holds the d3 svg element
254
+ const mainGRef = useRef<GSelection | null>(null)
255
+ const containerRef = useRef<SVGSVGElement>(null)
256
+
257
+ // creates the main <g> element for the chart if it doesn't already exist, otherwise
258
+ // updates the svg element with the updated dimensions or style properties
259
+ useEffect(
260
+ () => {
261
+ if (containerRef.current) {
262
+ // create the main SVG element if it doesn't already exist
263
+ if (!mainGRef.current) {
264
+ mainGRef.current = createPlotContainer(chartId, containerRef.current, plotDimRef.current, color)
265
+ }
266
+
267
+ // build up the svg style from the defaults and any svg style object
268
+ // passed in as properties
269
+ const style = Object.getOwnPropertyNames(svgStyle)
270
+ .map(name => `${name}: ${svgStyle[name]}; `)
271
+ .join("")
272
+
273
+ // when the chart "backgroundColor" property is set (i.e. not the default value),
274
+ // then we need add it to the styles, overwriting any color that may have been
275
+ // set in the svg style object
276
+ const background = backgroundColor !== defaultBackground ?
277
+ `background-color: ${backgroundColor}; ` :
278
+ ''
279
+
280
+ // update the dimension and style
281
+ d3.select<SVGSVGElement, any>(containerRef.current)
282
+ .attr('width', width)
283
+ .attr('height', height)
284
+ .attr('style', style + background + ` color: ${color}`)
285
+ }
286
+ },
287
+ [color, backgroundColor, height, svgStyle, width, chartId]
288
+ )
289
+
290
+ return (
291
+ <>
292
+ <svg ref={containerRef}/>
293
+ <PlotDimensionsProvider containerDimensions={{width, height}} margin={margin}>
294
+ <AxesProvider onUpdateAxesInterval={onUpdateAxesBounds}>
295
+ <MouseProvider<D, TM>>
296
+ <TooltipProvider<D, TM>>
297
+ <InitialDataProvider<CD, D>
298
+ initialData={initialData}
299
+ asChartData={asChartData}
300
+ >
301
+ <DataObservableProvider<CD, D>
302
+ seriesObservable={seriesObservable}
303
+ windowingTime={windowingTime}
304
+ shouldSubscribe={shouldSubscribe}
305
+
306
+ onSubscribe={onSubscribe}
307
+ onUpdateData={onUpdateData}
308
+ onUpdateChartTime={onUpdateChartTime}
309
+ >
310
+ <ChartProvider
311
+ chartId={chartId}
312
+ container={containerRef.current}
313
+ mainG={mainGRef.current}
314
+
315
+ color={color}
316
+ backgroundColor={backgroundColor}
317
+ svgStyle={svgStyle}
318
+ seriesStyles={seriesStyles}
319
+ seriesFilter={seriesFilter}
320
+ >
321
+ {
322
+ // the chart elements are the children
323
+ children
324
+ }
325
+ </ChartProvider>
326
+ </DataObservableProvider>
327
+ </InitialDataProvider>
328
+ </TooltipProvider>
329
+ </MouseProvider>
330
+ </AxesProvider>
331
+ </PlotDimensionsProvider>
332
+ </>
333
+ );
334
+ }
@@ -0,0 +1,34 @@
1
+ import {AxesState} from "./AxesState";
2
+ import {AxisLocation, BaseAxis} from "./axes";
3
+ import {AxisElementSelection} from "../d3types";
4
+
5
+ describe('AxesState', () => {
6
+ describe('creating axes-state', () => {
7
+ it('should create an empty axes state', () => {
8
+ expect(AxesState.empty<BaseAxis>().isEmpty()).toBe(true)
9
+ });
10
+
11
+ it('should create an axes state with one axis', () => {
12
+ const axis: BaseAxis = {
13
+ axisId: 'new-axis',
14
+ location: AxisLocation.Bottom,
15
+ selection: undefined as unknown as AxisElementSelection
16
+ }
17
+ const axesState = AxesState.from<BaseAxis>(new Map([['new-added-axis', axis]]));
18
+ expect(axesState.isEmpty()).toBe(false);
19
+ })
20
+
21
+ it('should be able to start with an empty axes state and add to it', () => {
22
+ const axesState = AxesState.empty<BaseAxis>();
23
+ expect(axesState.isEmpty()).toBe(true);
24
+
25
+ const axis: BaseAxis = {
26
+ axisId: 'new-axis',
27
+ location: AxisLocation.Bottom,
28
+ selection: undefined as unknown as AxisElementSelection
29
+ }
30
+ const updatedAxesState = axesState.addAxis(axis, 'new-added-axis');
31
+ expect(updatedAxesState.isEmpty()).toBe(false);
32
+ })
33
+ })
34
+ })