stream-charts 1.0.0 → 1.1.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 (271) hide show
  1. package/README.md +758 -345
  2. package/changes.md +10 -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} +17 -11
  146. package/dist/src/app/charts/{tooltipUtils.js → tooltips/tooltipUtils.js} +52 -25
  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,23 +1,15 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- import { setClipPath } from "./plot";
1
+ import { setClipPathG } from "./plot";
13
2
  import * as d3 from "d3";
14
- import { noop } from "./utils";
15
- import { useChart } from "./hooks/useChart";
3
+ import { noop } from "../utils";
4
+ import { useChart } from "../hooks/useChart";
16
5
  import { useCallback, useEffect, useMemo, useRef } from "react";
17
- import { continuousAxisRangeFor } from "./continuousAxisRangeFor";
18
- import { axesForSeriesGen, defaultLineStyle, panHandler, timeIntervals, timeRanges, zoomHandler } from "./axes";
19
- import { defaultTooltipStyle } from "./tooltipUtils";
20
- import { subscriptionFor, subscriptionWithCadenceFor } from "./subscriptions";
6
+ import { axesForSeriesGen, continuousAxisIntervals, continuousAxisRanges, continuousAxisZoomHandler, defaultLineStyle, panHandler } from "../axes/axes";
7
+ import { subscriptionTimeSeriesFor, subscriptionTimeSeriesWithCadenceFor } from "../subscriptions/subscriptions";
8
+ import { useDataObservable } from "../hooks/useDataObservable";
9
+ import { usePlotDimensions } from "../hooks/usePlotDimensions";
10
+ import { useInitialData } from "../hooks/useInitialData";
11
+ import { Optional } from "result-fn";
12
+ import { ContinuousAxisRange } from "../axes/ContinuousAxisRange";
21
13
  /**
22
14
  * Renders a streaming neuron raster plot for the series in the initial data and those sourced by the
23
15
  * observable specified as a property in the {@link Chart}. This component uses the {@link useChart}
@@ -40,61 +32,78 @@ import { subscriptionFor, subscriptionWithCadenceFor } from "./subscriptions";
40
32
  />
41
33
  */
42
34
  export function RasterPlot(props) {
43
- var _a = useChart(), chartId = _a.chartId, container = _a.container, mainG = _a.mainG, xAxesState = _a.xAxesState, yAxesState = _a.yAxesState, setTimeRangeFor = _a.setTimeRangeFor, plotDimensions = _a.plotDimensions, margin = _a.margin, color = _a.color, seriesStyles = _a.seriesStyles, initialData = _a.initialData, seriesFilter = _a.seriesFilter, setAxisAssignments = _a.setAxisAssignments, seriesObservable = _a.seriesObservable, _b = _a.windowingTime, windowingTime = _b === void 0 ? 100 : _b, shouldSubscribe = _a.shouldSubscribe, _c = _a.onSubscribe, onSubscribe = _c === void 0 ? noop : _c, onUpdateTime = _a.onUpdateTime, onUpdateData = _a.onUpdateData, _d = _a.updateTimeRanges, updateTimeRanges = _d === void 0 ? noop : _d, mouseOverHandlerFor = _a.mouseOverHandlerFor, mouseLeaveHandlerFor = _a.mouseLeaveHandlerFor;
44
- var _e = props.axisAssignments, axisAssignments = _e === void 0 ? new Map() : _e, _f = props.dropDataAfter, dropDataAfter = _f === void 0 ? Infinity : _f, _g = props.panEnabled, panEnabled = _g === void 0 ? false : _g, _h = props.zoomEnabled, zoomEnabled = _h === void 0 ? false : _h, _j = props.zoomKeyModifiersRequired, zoomKeyModifiersRequired = _j === void 0 ? true : _j, withCadenceOf = props.withCadenceOf, _k = props.spikeMargin, spikeMargin = _k === void 0 ? 2 : _k;
45
- // some 'splainin: the dataRef holds on to a copy of the initial data, but, the Series in the array
46
- // are by reference, so the seriesRef, also holds on to the same Series. When the Series in seriesRef
47
- // get appended with new data, it's updating the underlying series, and so the dataRef sees those
48
- // changes as well. The dataRef is used for performance, so that in the updatePlot function we don't
49
- // need to create a temporary array to holds the series data, rather, we can just use the one held in
50
- // the dataRef.
51
- var dataRef = useRef(initialData.slice());
52
- var seriesRef = useRef(new Map(initialData.map(function (series) { return [series.name, series]; })));
35
+ const { chartId, container, mainG, axes, color, seriesStyles, seriesFilter, mouse } = useChart();
36
+ const { xAxesState, yAxesState, setAxisAssignments, setAxisIntervalFor, updateAxisRanges = noop, onUpdateAxesInterval, } = axes;
37
+ const { mouseOverHandlerFor, mouseLeaveHandlerFor } = mouse;
38
+ const { plotDimensions, margin } = usePlotDimensions();
39
+ const { seriesObservable, windowingTime = 100, shouldSubscribe, onSubscribe = noop, onUpdateData, } = useDataObservable();
40
+ const { initialData } = useInitialData();
41
+ const { axisAssignments = new Map(), dropDataAfter = Infinity, panEnabled = false, zoomEnabled = false, zoomKeyModifiersRequired = true, withCadenceOf, spikeMargin = 2, } = props;
42
+ // why do "dataRef" and "seriesRef" both hold on to the same underlying data? for performance.
43
+ //
44
+ // the "dataRef" and "seriesRef" both point to the same underlying data, a collection
45
+ // of series. The series in "dataRef" are bound to the DOM elements through d3. The "seriesRef" series
46
+ // are the ones that are updated as new data is streamed in.
47
+ //
48
+ // the "dataRef" object holds on to a copy of the initial data (which is an array of
49
+ // time-series, e.i. an array of BaseSeries<OrdinalDatum> objects). The slice just creates a copy of
50
+ // the array, but the references to the BaseSeries objects are the same and still point to the same
51
+ // data as the "initialData" array.
52
+ //
53
+ // the "seriesRef" object is a reference to a map (series_name -> BaseSeries<OrdinalDatum>) which is
54
+ // used to update the data in the series. When new data enters, it is appended to one or more series.
55
+ //
56
+ // the series in the "dataRef" object are the ones bound to the DOM elements in d3, and so as these
57
+ // are updated, d3 will update the DOM elements (the elements in this plot).
58
+ const dataRef = useRef(initialData.slice());
59
+ const seriesRef = useRef(new Map(initialData.map(series => [series.name, series])));
53
60
  // map(axis_id -> current_time) -- maps the axis ID to the current time for that axis
54
- var currentTimeRef = useRef(new Map());
55
- useEffect(function () {
56
- currentTimeRef.current = new Map(Array.from(xAxesState.axes.keys()).map(function (id) { return [id, 0]; }));
61
+ const currentTimeRef = useRef(new Map());
62
+ const subscriptionRef = useRef(undefined);
63
+ const isSubscriptionClosed = () => subscriptionRef.current === undefined || subscriptionRef.current.closed;
64
+ const allowTooltipRef = useRef(isSubscriptionClosed());
65
+ useEffect(() => {
66
+ currentTimeRef.current = new Map(Array.from(xAxesState.axes.keys()).map(id => [id, 0]));
57
67
  }, [xAxesState]);
58
68
  // set the axis assignments needed if a tooltip is being used
59
- useEffect(function () {
69
+ useEffect(() => {
60
70
  setAxisAssignments(axisAssignments);
61
71
  }, [axisAssignments, setAxisAssignments]);
62
72
  // calculates the distinct series IDs that cover all the series in the plot
63
- var axesForSeries = useMemo(function () { return axesForSeriesGen(initialData, axisAssignments, xAxesState); }, [initialData, axisAssignments, xAxesState]);
73
+ const axesForSeries = useMemo(() => axesForSeriesGen(initialData, axisAssignments, xAxesState), [initialData, axisAssignments, xAxesState]);
64
74
  // updates the timing using the onUpdateTime and updatePlot references. This and the references
65
75
  // defined above allow the axes' times to be update properly by avoid stale reference to these
66
76
  // functions.
67
- var updateTimingAndPlot = useCallback(function (ranges) {
77
+ const updateTimingAndPlot = useCallback((ranges) => {
68
78
  if (mainG !== null) {
69
79
  onUpdateTimeRef.current(ranges);
70
80
  updatePlotRef.current(ranges, mainG);
71
- if (onUpdateTime) {
72
- setTimeout(function () {
73
- var times = new Map();
74
- ranges.forEach(function (range, name) { return times.set(name, [range.start, range.end]); });
75
- onUpdateTime(times);
81
+ if (onUpdateAxesInterval) {
82
+ setTimeout(() => {
83
+ const times = new Map();
84
+ ranges.forEach((range, name) => times.set(name, range.current));
85
+ onUpdateAxesInterval(times);
76
86
  }, 0);
77
87
  }
78
88
  }
79
- }, [mainG, onUpdateTime]);
89
+ }, [mainG, onUpdateAxesInterval]);
80
90
  // todo find better way
81
91
  // when the initial data changes, then reset the plot. note that the initial data doesn't change
82
92
  // during the normal course of updates from the observable, only when the plot is restarted.
83
- useEffect(function () {
93
+ useEffect(() => {
84
94
  dataRef.current = initialData.slice();
85
- seriesRef.current = new Map(initialData.map(function (series) { return [series.name, series]; }));
86
- currentTimeRef.current = new Map(Array.from(xAxesState.axes.keys()).map(function (id) { return [id, 0]; }));
87
- updateTimingAndPlot(new Map(Array.from(timeRanges(xAxesState.axes).entries())
88
- .map(function (_a) {
89
- var id = _a[0], range = _a[1];
95
+ seriesRef.current = new Map(initialData.map(series => [series.name, series]));
96
+ currentTimeRef.current = new Map(Array.from(xAxesState.axes.keys()).map(id => [id, 0]));
97
+ updateTimingAndPlot(new Map(Array.from(continuousAxisRanges(xAxesState.axes).entries())
98
+ .map(([id, range]) => {
90
99
  // grab the current range, then calculate the minimum time from the initial data, and
91
100
  // set that as the start, and then add the range to it for the end time
92
- var _b = range.original, start = _b[0], end = _b[1];
93
- var minTime = initialData
94
- .filter(function (srs) { var _a; return ((_a = axisAssignments.get(srs.name)) === null || _a === void 0 ? void 0 : _a.xAxis) === id; })
95
- .reduce(function (tMin, series) { return Math.min(tMin, !series.isEmpty() ? series.data[0].time : tMin); }, Infinity);
96
- var startTime = minTime === Infinity ? 0 : minTime;
97
- return [id, continuousAxisRangeFor(startTime, startTime + end - start)];
101
+ const [start, end] = range.original.asTuple();
102
+ const minTime = initialData
103
+ .filter(srs => { var _a; return ((_a = axisAssignments.get(srs.name)) === null || _a === void 0 ? void 0 : _a.xAxis) === id; })
104
+ .reduce((tMin, series) => Math.min(tMin, !series.isEmpty() ? series.data[0].time : tMin), Infinity);
105
+ const startTime = minTime === Infinity ? 0 : minTime;
106
+ return [id, ContinuousAxisRange.from(startTime, startTime + end - start)];
98
107
  })));
99
108
  },
100
109
  // ** not happy about this **
@@ -113,12 +122,12 @@ export function RasterPlot(props) {
113
122
  function yCoordsFn(categorySize, lineWidth, margin) {
114
123
  if (categorySize <= margin)
115
124
  return {
116
- yUpper: function (y) { return y; },
117
- yLower: function (y) { return y + lineWidth; }
125
+ yUpper: y => y,
126
+ yLower: y => y + lineWidth
118
127
  };
119
128
  return {
120
- yUpper: function (y) { return y + margin; },
121
- yLower: function (y) { return y + categorySize - margin; }
129
+ yUpper: y => y + margin,
130
+ yLower: y => y + categorySize - margin
122
131
  };
123
132
  }
124
133
  /**
@@ -128,7 +137,7 @@ export function RasterPlot(props) {
128
137
  * @param series An array of series names
129
138
  * @param ranges A map holding the axis ID and its associated time range
130
139
  */
131
- var onPan = useCallback(function (x, plotDimensions, series, ranges) { return panHandler(axesForSeries, margin, setTimeRangeFor, xAxesState)(x, plotDimensions, series, ranges); }, [axesForSeries, margin, setTimeRangeFor, xAxesState]);
140
+ const onPan = useCallback((x, plotDimensions, ranges) => panHandler(axesForSeries, margin, setAxisIntervalFor, xAxesState)(x, plotDimensions, ranges), [axesForSeries, margin, setAxisIntervalFor, xAxesState]);
132
141
  /**
133
142
  * Called when the user uses the scroll wheel (or scroll gesture) to zoom in or out. Zooms in/out
134
143
  * at the location of the mouse when the scroll wheel or gesture was applied.
@@ -138,79 +147,82 @@ export function RasterPlot(props) {
138
147
  * @param series An array of series names
139
148
  * @param ranges A map holding the axis ID and its associated time-range
140
149
  */
141
- var onZoom = useCallback(function (transform, x, plotDimensions, series, ranges) { return zoomHandler(axesForSeries, margin, setTimeRangeFor, xAxesState)(transform, x, plotDimensions, series, ranges); }, [axesForSeries, margin, setTimeRangeFor, xAxesState]);
150
+ const onZoom = useCallback((transform, x, plotDimensions, ranges) => continuousAxisZoomHandler(axesForSeries, margin, setAxisIntervalFor, xAxesState)(transform, x, plotDimensions, ranges), [axesForSeries, margin, setAxisIntervalFor, xAxesState]);
142
151
  /**
143
152
  * @param timeRanges
144
153
  * @param mainGElem
145
154
  */
146
- var updatePlot = useCallback(function (timeRanges, mainGElem) {
155
+ const updatePlot = useCallback((timeRanges, mainGElem) => {
147
156
  if (container) {
148
157
  // select the svg element bind the data to them
149
- var svg_1 = d3.select(container);
158
+ const svg = d3.select(container);
150
159
  // set up panning
151
160
  if (panEnabled) {
152
- var drag = d3.drag()
153
- .on("start", function () { return d3.select(container).style("cursor", "move"); })
154
- .on("drag", function (event) {
155
- var names = dataRef.current.map(function (series) { return series.name; });
156
- onPan(event.dx, plotDimensions, names, timeRanges);
161
+ const drag = d3.drag()
162
+ .on("start", () => {
163
+ d3.select(container).style("cursor", "move");
164
+ allowTooltipRef.current = false;
165
+ })
166
+ .on("drag", (event) => {
167
+ onPan(event.dx, plotDimensions, timeRanges);
157
168
  // need to update the plot with the new time-ranges
158
169
  updatePlotRef.current(timeRanges, mainGElem);
159
170
  })
160
- .on("end", function () { return d3.select(container).style("cursor", "auto"); });
161
- svg_1.call(drag);
171
+ .on("end", () => {
172
+ d3.select(container).style("cursor", "auto");
173
+ allowTooltipRef.current = isSubscriptionClosed();
174
+ });
175
+ svg.call(drag);
162
176
  }
163
177
  // set up for zooming
164
178
  if (zoomEnabled) {
165
- var zoom = d3.zoom()
166
- .filter(function (event) { return !zoomKeyModifiersRequired || event.shiftKey || event.ctrlKey; })
179
+ const zoom = d3.zoom()
180
+ .filter((event) => !zoomKeyModifiersRequired || event.shiftKey || event.ctrlKey)
167
181
  .scaleExtent([0, 10])
168
182
  .translateExtent([[margin.left, margin.top], [plotDimensions.width, plotDimensions.height]])
169
- .on("zoom", function (event) {
170
- onZoom(event.transform, event.sourceEvent.offsetX - margin.left, plotDimensions, dataRef.current.map(function (series) { return series.name; }), timeRanges);
183
+ .on("zoom", (event) => {
184
+ onZoom(event.transform, event.sourceEvent.offsetX - margin.left, plotDimensions, timeRanges);
171
185
  updatePlotRef.current(timeRanges, mainGElem);
172
186
  });
173
- svg_1.call(zoom);
187
+ svg.call(zoom);
174
188
  }
175
189
  // enter, update, delete the raster data
176
- dataRef.current.forEach(function (series) {
177
- var _a = axesFor(series.name, axisAssignments, xAxesState.axisFor, yAxesState.axisFor), xAxis = _a[0], yAxis = _a[1];
190
+ dataRef.current.forEach(series => {
191
+ const [xAxis, yAxis] = axesFor(series.name, axisAssignments, axisId => xAxesState.axisFor(axisId).getOrUndefined(), axisId => yAxesState.axisFor(axisId).getOrUndefined());
178
192
  // grab the series styles, or the defaults if none exist
179
- var _b = seriesStyles.get(series.name) || __assign(__assign({}, defaultLineStyle), { highlightColor: defaultLineStyle.color }), color = _b.color, lineWidth = _b.lineWidth, _c = _b.margin, spikeLineMargin = _c === void 0 ? spikeMargin : _c;
193
+ const { color, lineWidth, margin: spikeLineMargin = spikeMargin } = seriesStyles.get(series.name) || Object.assign(Object.assign({}, defaultLineStyle()), { highlightColor: defaultLineStyle().color });
180
194
  // only show the data for which the regex filter matches
181
- var plotData = (series.name.match(seriesFilter)) ? series.data : [];
182
- var seriesContainer = svg_1
183
- .select("#" + series.name + "-" + chartId + "-raster")
195
+ const plotData = (series.name.match(seriesFilter)) ? series.data : [];
196
+ const seriesContainer = svg
197
+ .select(`#${series.name}-${chartId}-raster`)
184
198
  .selectAll('line')
185
199
  .data(plotData);
186
200
  //
187
201
  // enter new elements
188
- var _d = yCoordsFn(yAxis.categorySize, lineWidth, spikeLineMargin), yUpper = _d.yUpper, yLower = _d.yLower;
202
+ const { yUpper, yLower } = yCoordsFn(yAxis.scale.bandwidth(), lineWidth, spikeLineMargin);
189
203
  // grab the value (index) associated with the series name (this is a category axis)
190
- var y = yAxis.scale(series.name) || 0;
204
+ const y = yAxis.scale(series.name) || 0;
191
205
  // enter
192
206
  seriesContainer
193
207
  .enter()
194
208
  .append('line')
195
- .attr('x1', function (datum) { return datum.x; })
196
- .attr('x2', function (datum) { return datum.x; })
197
- .attr('y1', function (_) { return yUpper(y); })
198
- .attr('y2', function (_) { return yLower(y); })
209
+ .attr('x1', datum => datum.x)
210
+ .attr('x2', datum => datum.x)
211
+ .attr('y1', _ => yUpper(y))
212
+ .attr('y2', _ => yLower(y))
199
213
  .attr('stroke', color)
200
214
  .attr('stroke-width', lineWidth)
201
215
  .attr('class', 'spikes-lines')
202
- .on("mouseover", function (event, datumArray) {
203
- return handleMouseOverSeries(chartId, container, xAxis, series.name, [datumArray.time, datumArray.value], event, margin, defaultTooltipStyle, seriesStyles, plotDimensions, mouseOverHandlerFor("tooltip-" + chartId));
204
- })
205
- .on("mouseleave", function (event) { return handleMouseLeaveSeries(series.name, event.currentTarget, seriesStyles, mouseLeaveHandlerFor("tooltip-" + chartId)); })
206
- .each(function (datum) { return datum.x = xAxis.scale(datum.time); });
216
+ .on("mouseover", (event, datumArray) => handleMouseOverSeries(container, xAxis, series.name, datumArray, event, margin, seriesStyles, allowTooltipRef.current, mouseOverHandlerFor(`tooltip-${chartId}`)))
217
+ .on("mouseleave", event => handleMouseLeaveSeries(series.name, event.currentTarget, seriesStyles, mouseLeaveHandlerFor(`tooltip-${chartId}`)))
218
+ .each(datum => datum.x = xAxis.scale(datum.time));
207
219
  // update
208
220
  seriesContainer
209
- .each(function (datum) { return datum.x = xAxis.scale(datum.time); })
210
- .attr('x1', function (datum) { return datum.x; })
211
- .attr('x2', function (datum) { return datum.x; })
212
- .attr('y1', function (_) { return yUpper(y); })
213
- .attr('y2', function (_) { return yLower(y); })
221
+ .each(datum => datum.x = xAxis.scale(datum.time))
222
+ .attr('x1', datum => datum.x)
223
+ .attr('x2', datum => datum.x)
224
+ .attr('y1', _ => yUpper(y))
225
+ .attr('y2', _ => yLower(y))
214
226
  .attr('stroke', color);
215
227
  // exit old elements
216
228
  seriesContainer.exit().remove();
@@ -222,60 +234,65 @@ export function RasterPlot(props) {
222
234
  panEnabled,
223
235
  plotDimensions,
224
236
  seriesFilter, seriesStyles,
225
- xAxesState.axisFor, yAxesState.axisFor,
237
+ xAxesState, yAxesState,
226
238
  zoomEnabled, zoomKeyModifiersRequired,
227
239
  spikeMargin
228
240
  ]);
229
241
  // need to keep the function references for use by the subscription, which forms a closure
230
242
  // on them. without the references, the closures become stale, and resizing during streaming
231
243
  // doesn't work properly
232
- var updatePlotRef = useRef(noop);
233
- useEffect(function () {
244
+ const updatePlotRef = useRef(noop);
245
+ useEffect(() => {
234
246
  if (mainG !== null && container !== null) {
235
247
  // when the update plot function doesn't yet exist, then create the container holding the plot
236
- var svg = d3.select(container);
237
- var clipPathId = setClipPath(chartId, svg, plotDimensions, margin);
248
+ const clipPathId = setClipPathG(chartId, mainG, plotDimensions);
238
249
  if (updatePlotRef.current === noop) {
239
250
  mainG
240
251
  .selectAll('g')
241
- .attr("clip-path", "url(#" + clipPathId + ")")
252
+ .attr("clip-path", `url(#${clipPathId})`)
242
253
  .data(dataRef.current)
243
254
  .enter()
244
255
  .append('g')
245
256
  .attr('class', 'spikes-series')
246
- .attr('id', function (series) { return series.name + "-" + chartId + "-raster"; })
247
- .attr('transform', "translate(" + margin.left + ", " + margin.top + ")");
257
+ .attr('id', series => `${series.name}-${chartId}-raster`)
258
+ .attr('transform', `translate(${margin.left}, ${margin.top})`);
248
259
  }
249
260
  else {
250
261
  mainG
251
262
  .selectAll('g')
252
- .attr("clip-path", "url(#" + clipPathId + ")");
263
+ .attr("clip-path", `url(#${clipPathId})`);
253
264
  }
254
265
  updatePlotRef.current = updatePlot;
255
266
  }
256
267
  }, [chartId, container, mainG, margin, plotDimensions, updatePlot]);
257
268
  // grab a reference to the function used to update the time ranges and update that reference
258
269
  // if the function changes (solve for stale closures)
259
- var onUpdateTimeRef = useRef(updateTimeRanges);
260
- useEffect(function () {
261
- onUpdateTimeRef.current = updateTimeRanges;
262
- }, [updateTimeRanges]);
270
+ const onUpdateTimeRef = useRef(updateAxisRanges);
271
+ useEffect(() => {
272
+ onUpdateTimeRef.current = updateAxisRanges;
273
+ }, [updateAxisRanges]);
263
274
  // memoized function for subscribing to the chart-data observable
264
- var subscribe = useCallback(function () {
275
+ const subscribe = useCallback(() => {
265
276
  if (seriesObservable === undefined || mainG === null)
266
277
  return undefined;
267
278
  if (withCadenceOf !== undefined) {
268
- return subscriptionWithCadenceFor(seriesObservable, onSubscribe, windowingTime, axisAssignments, xAxesState, onUpdateData, dropDataAfter, updateTimingAndPlot, seriesRef.current, function (axisId, end) { return currentTimeRef.current.set(axisId, end); }, withCadenceOf);
279
+ return subscriptionTimeSeriesWithCadenceFor(seriesObservable, onSubscribe, windowingTime, axisAssignments, xAxesState, onUpdateData, dropDataAfter, updateTimingAndPlot,
280
+ // as new data flows into the subscription, the subscription
281
+ // updates this map directly (for performance)
282
+ seriesRef.current, (axisId, end) => currentTimeRef.current.set(axisId, end), withCadenceOf);
269
283
  }
270
- return subscriptionFor(seriesObservable, onSubscribe, windowingTime, axisAssignments, xAxesState, onUpdateData, dropDataAfter, updateTimingAndPlot, seriesRef.current, function (axisId, end) { return currentTimeRef.current.set(axisId, end); });
284
+ return subscriptionTimeSeriesFor(seriesObservable, onSubscribe, windowingTime, axisAssignments, xAxesState, onUpdateData, dropDataAfter, updateTimingAndPlot,
285
+ // as new data flows into the subscription, the subscription
286
+ // updates this map directly (for performance)
287
+ seriesRef.current, (axisId, end) => currentTimeRef.current.set(axisId, end));
271
288
  }, [
272
289
  axisAssignments, dropDataAfter, mainG,
273
290
  onSubscribe, onUpdateData,
274
291
  seriesObservable, updateTimingAndPlot, windowingTime, xAxesState,
275
292
  withCadenceOf
276
293
  ]);
277
- var timeRangesRef = useRef(new Map());
278
- useEffect(function () {
294
+ const timeRangesRef = useRef(new Map());
295
+ useEffect(() => {
279
296
  if (container && mainG) {
280
297
  // so this gets a bit complicated. the time-ranges need to be updated whenever the time-ranges
281
298
  // change. for example, as data is streamed in, the times change, and then we need to update the
@@ -286,15 +303,18 @@ export function RasterPlot(props) {
286
303
  if (timeRangesRef.current.size === 0) {
287
304
  // when no time-ranges have yet been created, then create them and hold on to a mutable
288
305
  // reference to them
289
- timeRangesRef.current = timeRanges(xAxesState.axes);
306
+ timeRangesRef.current = continuousAxisRanges(xAxesState.axes);
290
307
  }
291
308
  else {
292
309
  // when the time-ranges already exist, then we want to update the time-ranges for each
293
310
  // existing time-range in a way that maintains the original scale.
294
- var intervals_1 = timeIntervals(xAxesState.axes);
311
+ const intervals = continuousAxisIntervals(xAxesState.axes);
295
312
  timeRangesRef.current
296
- .forEach(function (range, id, rangesMap) {
297
- var _a = intervals_1.get(id) || [NaN, NaN], start = _a[0], end = _a[1];
313
+ .forEach((range, id, rangesMap) => {
314
+ const [start, end] = Optional.ofNullable(intervals.get(id))
315
+ .map(interval => interval.asTuple())
316
+ .getOrThrow(() => new Error(`Unable to retrieve interval for axis; axis_id: ${id}`));
317
+ // .getOrElse([NaN, NaN])
298
318
  if (!isNaN(start) && !isNaN(end)) {
299
319
  // update the reference map with the new (start, end) portion of the range,
300
320
  // while keeping the original scale intact
@@ -309,15 +329,16 @@ export function RasterPlot(props) {
309
329
  // is changed to `true` and we haven't subscribed yet, then subscribe. when the
310
330
  // `shouldSubscribe` is `false` and we had subscribed, then unsubscribe. otherwise,
311
331
  // do nothing.
312
- var subscriptionRef = useRef();
313
- useEffect(function () {
332
+ useEffect(() => {
314
333
  var _a;
315
334
  if (shouldSubscribe && subscriptionRef.current === undefined) {
316
335
  subscriptionRef.current = subscribe();
336
+ allowTooltipRef.current = false;
317
337
  }
318
338
  else if (!shouldSubscribe && subscriptionRef.current !== undefined) {
319
339
  (_a = subscriptionRef.current) === null || _a === void 0 ? void 0 : _a.unsubscribe();
320
340
  subscriptionRef.current = undefined;
341
+ allowTooltipRef.current = true;
321
342
  }
322
343
  }, [shouldSubscribe, subscribe]);
323
344
  return null;
@@ -335,14 +356,14 @@ export function RasterPlot(props) {
335
356
  * the second element.
336
357
  */
337
358
  function axesFor(seriesName, axisAssignments, xAxisFor, yAxisFor) {
338
- var axes = axisAssignments.get(seriesName);
339
- var xAxis = xAxisFor((axes === null || axes === void 0 ? void 0 : axes.xAxis) || "");
340
- var xAxisLinear = xAxis;
359
+ const axes = axisAssignments.get(seriesName);
360
+ const xAxis = xAxisFor((axes === null || axes === void 0 ? void 0 : axes.xAxis) || "");
361
+ const xAxisLinear = xAxis;
341
362
  if (xAxis && !xAxisLinear) {
342
363
  throw Error("Raster plot requires that x-axis be of type LinearAxis");
343
364
  }
344
- var yAxis = yAxisFor((axes === null || axes === void 0 ? void 0 : axes.yAxis) || "");
345
- var yAxisCategory = yAxis;
365
+ const yAxis = yAxisFor((axes === null || axes === void 0 ? void 0 : axes.yAxis) || "");
366
+ const yAxisCategory = yAxis;
346
367
  if (yAxis && !yAxisCategory) {
347
368
  throw Error("Raster plot requires that y-axis be of type CategoryAxis");
348
369
  }
@@ -350,33 +371,31 @@ function axesFor(seriesName, axisAssignments, xAxisFor, yAxisFor) {
350
371
  }
351
372
  /**
352
373
  * Renders a tooltip showing the neuron, spike time, and the spike strength when the mouse hovers over a spike.
353
- * @param chartId The ID of the chart
354
374
  * @param container The chart container
355
375
  * @param xAxis The x-axis
356
376
  * @param seriesName The name of the series (i.e. the neuron ID)
357
377
  * @param selectedDatum The selected datum
358
378
  * @param event The mouse-over series event
359
379
  * @param margin The plot margin
360
- * @param tooltipStyle The tooltip style information
361
380
  * @param seriesStyles The series style information (needed for (un)highlighting)
362
- * @param plotDimensions The dimensions of the plot
381
+ * @param allowTooltip When set to `false` won't show tooltip, even if it is visible (used by pan)
363
382
  * @param mouseOverHandlerFor The handler for the mouse over (registered by the <Tooltip/>)
364
383
  */
365
- function handleMouseOverSeries(chartId, container, xAxis, seriesName, selectedDatum, event, margin, tooltipStyle, seriesStyles, plotDimensions, mouseOverHandlerFor) {
384
+ function handleMouseOverSeries(container, xAxis, seriesName, selectedDatum, event, margin, seriesStyles, allowTooltip, mouseOverHandlerFor) {
366
385
  // grab the time needed for the tooltip ID
367
- var _a = d3.pointer(event, container), x = _a[0], y = _a[1];
368
- var time = Math.round(xAxis.scale.invert(x - margin.left));
369
- var _b = seriesStyles.get(seriesName) || defaultLineStyle, highlightColor = _b.highlightColor, highlightWidth = _b.highlightWidth;
386
+ const [x, y] = d3.pointer(event, container);
387
+ const time = Math.round(xAxis.scale.invert(x - margin.left));
388
+ const { highlightColor, highlightWidth } = seriesStyles.get(seriesName) || defaultLineStyle();
370
389
  // Use d3 to select element, change color and size
371
390
  d3.select(event.currentTarget)
372
391
  .attr('stroke', highlightColor)
373
392
  .attr('stroke-width', highlightWidth);
374
- if (mouseOverHandlerFor) {
393
+ if (mouseOverHandlerFor && allowTooltip) {
375
394
  // the contract for the mouse over handler is for a time-series, but here we only
376
395
  // need one point, the selected datum, and so we convert it into an array of point
377
396
  // (i.e. a time-series). The category tooltip is (and custom ones, must) be
378
397
  // written to expect only the selected point
379
- mouseOverHandlerFor(seriesName, time, [selectedDatum], [x, y]);
398
+ mouseOverHandlerFor(seriesName, time, { series: [selectedDatum], metadata: {} }, [x, y]);
380
399
  }
381
400
  }
382
401
  /**
@@ -387,7 +406,7 @@ function handleMouseOverSeries(chartId, container, xAxis, seriesName, selectedDa
387
406
  * @param mouseLeaverHandlerFor Registered handler for the series when the mouse leaves
388
407
  */
389
408
  function handleMouseLeaveSeries(seriesName, segment, seriesStyles, mouseLeaverHandlerFor) {
390
- var _a = seriesStyles.get(seriesName) || defaultLineStyle, color = _a.color, lineWidth = _a.lineWidth;
409
+ const { color, lineWidth } = seriesStyles.get(seriesName) || defaultLineStyle();
391
410
  d3.select(segment)
392
411
  .attr('stroke', color)
393
412
  .attr('stroke-width', lineWidth);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RasterPlot.js","sourceRoot":"","sources":["../../../../../src/app/charts/plots/RasterPlot.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import * as d3 from "d3";
2
2
  import { AxesAssignment } from "./plot";
3
+ import { TimeWindowBehavior } from "../subscriptions/subscriptions";
3
4
  interface Props {
4
5
  /**
5
6
  * Holds the mapping between a series and the axis it uses (is assigned). The
@@ -39,6 +40,7 @@ interface Props {
39
40
  * to the current time.
40
41
  */
41
42
  withCadenceOf?: number;
43
+ timeWindowBehavior?: TimeWindowBehavior;
42
44
  }
43
45
  /**
44
46
  * Renders a streaming scatter plot for the series in the initial data and those sourced by the
@@ -50,14 +52,14 @@ interface Props {
50
52
  * @constructor
51
53
  * @example
52
54
  <ScatterPlot
53
- interpolation={interpolation}
54
- axisAssignments={new Map([
55
- ['test2', assignAxes("x-axis-2", "y-axis-2")],
56
- ])}
57
- dropDataAfter={10000}
58
- panEnabled={true}
59
- zoomEnabled={true}
60
- zoomKeyModifiersRequired={true}
55
+ interpolation={interpolation}
56
+ axisAssignments={new Map([
57
+ ['test2', assignAxes("x-axis-2", "y-axis-2")],
58
+ ])}
59
+ dropDataAfter={10000}
60
+ panEnabled={true}
61
+ zoomEnabled={true}
62
+ zoomKeyModifiersRequired={true}
61
63
  />
62
64
  */
63
65
  export declare function ScatterPlot(props: Props): null;