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.
- package/README.md +757 -342
- package/changes.md +11 -0
- package/dist/src/app/charts/Chart.d.ts +116 -87
- package/dist/src/app/charts/Chart.js +96 -101
- package/dist/src/app/charts/Chart.js.map +1 -1
- package/dist/src/app/charts/axes/AxesState.d.ts +64 -0
- package/dist/src/app/charts/axes/AxesState.js +97 -0
- package/dist/src/app/charts/axes/AxesState.js.map +1 -0
- package/dist/src/app/charts/axes/AxesState.test.js +30 -0
- package/dist/src/app/charts/axes/AxesState.test.js.map +1 -0
- package/dist/src/app/charts/axes/AxisInterval.d.ts +92 -0
- package/dist/src/app/charts/axes/AxisInterval.js +126 -0
- package/dist/src/app/charts/axes/AxisInterval.js.map +1 -0
- package/dist/src/app/charts/axes/AxisInterval.test.js +120 -0
- package/dist/src/app/charts/axes/AxisInterval.test.js.map +1 -0
- package/dist/src/app/charts/axes/BaseAxisRange.d.ts +83 -0
- package/dist/src/app/charts/axes/BaseAxisRange.js +58 -0
- package/dist/src/app/charts/axes/BaseAxisRange.js.map +1 -0
- package/dist/src/app/charts/axes/ContinuousAxis.d.ts +22 -0
- package/dist/src/app/charts/axes/ContinuousAxis.js +96 -0
- package/dist/src/app/charts/axes/ContinuousAxis.js.map +1 -0
- package/dist/src/app/charts/axes/ContinuousAxisRange.d.ts +59 -0
- package/dist/src/app/charts/axes/ContinuousAxisRange.js +84 -0
- package/dist/src/app/charts/axes/ContinuousAxisRange.js.map +1 -0
- package/dist/src/app/charts/axes/ContinuousAxisRange.test.js +47 -0
- package/dist/src/app/charts/axes/ContinuousAxisRange.test.js.map +1 -0
- package/dist/src/app/charts/axes/OrdinalAxis.d.ts +23 -0
- package/dist/src/app/charts/axes/OrdinalAxis.js +124 -0
- package/dist/src/app/charts/axes/OrdinalAxis.js.map +1 -0
- package/dist/src/app/charts/axes/OrdinalAxisRange.d.ts +69 -0
- package/dist/src/app/charts/axes/OrdinalAxisRange.js +100 -0
- package/dist/src/app/charts/axes/OrdinalAxisRange.js.map +1 -0
- package/dist/src/app/charts/axes/OrdinalAxisRange.test.js +48 -0
- package/dist/src/app/charts/axes/OrdinalAxisRange.test.js.map +1 -0
- package/dist/src/app/charts/axes/axes.d.ts +391 -0
- package/dist/src/app/charts/axes/axes.js +1046 -0
- package/dist/src/app/charts/axes/axes.js.map +1 -0
- package/dist/src/app/charts/d3types.d.ts +10 -10
- package/dist/src/app/charts/filters/regexFilter.d.ts +9 -0
- package/dist/src/app/charts/filters/regexFilter.js +18 -0
- package/dist/src/app/charts/filters/regexFilter.js.map +1 -0
- package/dist/src/app/charts/filters/regexFilter.test.d.ts +1 -0
- package/dist/src/app/charts/filters/regexFilter.test.js +11 -0
- package/dist/src/app/charts/filters/regexFilter.test.js.map +1 -0
- package/dist/src/app/charts/hooks/useAxes.d.ts +144 -0
- package/dist/src/app/charts/hooks/useAxes.js +187 -0
- package/dist/src/app/charts/hooks/useAxes.js.map +1 -0
- package/dist/src/app/charts/hooks/useChart.d.ts +30 -201
- package/dist/src/app/charts/hooks/useChart.js +33 -134
- package/dist/src/app/charts/hooks/useChart.js.map +1 -1
- package/dist/src/app/charts/hooks/useDataObservable.d.ts +74 -0
- package/dist/src/app/charts/hooks/useDataObservable.js +76 -0
- package/dist/src/app/charts/hooks/useDataObservable.js.map +1 -0
- package/dist/src/app/charts/hooks/useInitialData.d.ts +38 -0
- package/dist/src/app/charts/hooks/useInitialData.js +29 -0
- package/dist/src/app/charts/hooks/useInitialData.js.map +1 -0
- package/dist/src/app/charts/hooks/useMouse.d.ts +53 -0
- package/dist/src/app/charts/hooks/useMouse.js +65 -0
- package/dist/src/app/charts/hooks/useMouse.js.map +1 -0
- package/dist/src/app/charts/hooks/usePlotDimensions.d.ts +34 -0
- package/dist/src/app/charts/hooks/usePlotDimensions.js +73 -0
- package/dist/src/app/charts/hooks/usePlotDimensions.js.map +1 -0
- package/dist/src/app/charts/hooks/useTooltip.d.ts +64 -0
- package/dist/src/app/charts/hooks/useTooltip.js +52 -0
- package/dist/src/app/charts/hooks/useTooltip.js.map +1 -0
- package/dist/src/app/charts/observables/ChartData.d.ts +23 -0
- package/dist/src/app/charts/observables/ChartData.js +20 -0
- package/dist/src/app/charts/observables/ChartData.js.map +1 -0
- package/dist/src/app/charts/observables/iterates.d.ts +52 -0
- package/dist/src/app/charts/observables/iterates.js +121 -0
- package/dist/src/app/charts/observables/iterates.js.map +1 -0
- package/dist/src/app/charts/observables/iterates.test.d.ts +1 -0
- package/dist/src/app/charts/observables/iterates.test.js +180 -0
- package/dist/src/app/charts/observables/iterates.test.js.map +1 -0
- package/dist/src/app/charts/observables/ordinals.d.ts +75 -0
- package/dist/src/app/charts/observables/ordinals.js +141 -0
- package/dist/src/app/charts/observables/ordinals.js.map +1 -0
- package/dist/src/app/charts/observables/ordinals.test.d.ts +1 -0
- package/dist/src/app/charts/observables/ordinals.test.js +102 -0
- package/dist/src/app/charts/observables/ordinals.test.js.map +1 -0
- package/dist/src/app/charts/plots/BarPlot.d.ts +81 -0
- package/dist/src/app/charts/plots/BarPlot.js +557 -0
- package/dist/src/app/charts/plots/BarPlot.js.map +1 -0
- package/dist/src/app/charts/plots/PoincarePlot.d.ts +78 -0
- package/dist/src/app/charts/plots/PoincarePlot.js +504 -0
- package/dist/src/app/charts/plots/PoincarePlot.js.map +1 -0
- package/dist/src/app/charts/{RasterPlot.d.ts → plots/RasterPlot.d.ts} +1 -1
- package/dist/src/app/charts/{RasterPlot.js → plots/RasterPlot.js} +152 -133
- package/dist/src/app/charts/plots/RasterPlot.js.map +1 -0
- package/dist/src/app/charts/{ScatterPlot.d.ts → plots/ScatterPlot.d.ts} +10 -8
- package/dist/src/app/charts/plots/ScatterPlot.js +379 -0
- package/dist/src/app/charts/plots/ScatterPlot.js.map +1 -0
- package/dist/src/app/charts/{plot.d.ts → plots/plot.d.ts} +12 -14
- package/dist/src/app/charts/{plot.js → plots/plot.js} +19 -17
- package/dist/src/app/charts/plots/plot.js.map +1 -0
- package/dist/src/app/charts/series/baseSeries.d.ts +38 -0
- package/dist/src/app/charts/series/baseSeries.js +36 -0
- package/dist/src/app/charts/series/baseSeries.js.map +1 -0
- package/dist/src/app/charts/series/datumSeries.test.d.ts +1 -0
- package/dist/src/app/charts/series/datumSeries.test.js +50 -0
- package/dist/src/app/charts/series/datumSeries.test.js.map +1 -0
- package/dist/src/app/charts/series/iterateSeries.d.ts +42 -0
- package/dist/src/app/charts/series/iterateSeries.js +34 -0
- package/dist/src/app/charts/series/iterateSeries.js.map +1 -0
- package/dist/src/app/charts/series/ordinalSeries.d.ts +54 -0
- package/dist/src/app/charts/series/ordinalSeries.js +98 -0
- package/dist/src/app/charts/series/ordinalSeries.js.map +1 -0
- package/dist/src/app/charts/series/timeSeries.d.ts +30 -0
- package/dist/src/app/charts/series/timeSeries.js +19 -0
- package/dist/src/app/charts/series/timeSeries.js.map +1 -0
- package/dist/src/app/charts/{chartData.d.ts → series/timeSeriesChartData.d.ts} +11 -6
- package/dist/src/app/charts/series/timeSeriesChartData.js +32 -0
- package/dist/src/app/charts/series/timeSeriesChartData.js.map +1 -0
- package/dist/src/app/charts/styling/barPlotStyle.d.ts +41 -0
- package/dist/src/app/charts/styling/barPlotStyle.js +84 -0
- package/dist/src/app/charts/styling/barPlotStyle.js.map +1 -0
- package/dist/src/app/charts/{margins.d.ts → styling/margins.d.ts} +7 -5
- package/dist/src/app/charts/{margins.js → styling/margins.js} +19 -9
- package/dist/src/app/charts/styling/margins.js.map +1 -0
- package/dist/src/app/charts/styling/margins.test.d.ts +1 -0
- package/dist/src/app/charts/styling/margins.test.js +19 -0
- package/dist/src/app/charts/styling/margins.test.js.map +1 -0
- package/dist/src/app/charts/styling/svgStyle.d.ts +76 -0
- package/dist/src/app/charts/styling/svgStyle.js +84 -0
- package/dist/src/app/charts/styling/svgStyle.js.map +1 -0
- package/dist/src/app/charts/subscriptions/subscription.test.d.ts +1 -0
- package/dist/src/app/charts/subscriptions/subscription.test.js +395 -0
- package/dist/src/app/charts/subscriptions/subscription.test.js.map +1 -0
- package/dist/src/app/charts/subscriptions/subscriptions.d.ts +100 -0
- package/dist/src/app/charts/subscriptions/subscriptions.js +449 -0
- package/dist/src/app/charts/subscriptions/subscriptions.js.map +1 -0
- package/dist/src/app/charts/tooltips/BarPlotTooltipContent.d.ts +90 -0
- package/dist/src/app/charts/tooltips/BarPlotTooltipContent.js +302 -0
- package/dist/src/app/charts/tooltips/BarPlotTooltipContent.js.map +1 -0
- package/dist/src/app/charts/tooltips/PoincarePlotTooltipContent.d.ts +100 -0
- package/dist/src/app/charts/tooltips/PoincarePlotTooltipContent.js +190 -0
- package/dist/src/app/charts/tooltips/PoincarePlotTooltipContent.js.map +1 -0
- package/dist/src/app/charts/{RasterPlotTooltipContent.js → tooltips/RasterPlotTooltipContent.js} +40 -44
- package/dist/src/app/charts/tooltips/RasterPlotTooltipContent.js.map +1 -0
- package/dist/src/app/charts/tooltips/ScatterPlotTooltipContent.js +154 -0
- package/dist/src/app/charts/tooltips/ScatterPlotTooltipContent.js.map +1 -0
- package/dist/src/app/charts/{Tooltip.d.ts → tooltips/Tooltip.d.ts} +4 -2
- package/dist/src/app/charts/{Tooltip.js → tooltips/Tooltip.js} +23 -28
- package/dist/src/app/charts/tooltips/Tooltip.js.map +1 -0
- package/dist/src/app/charts/{tooltipUtils.d.ts → tooltips/tooltipUtils.d.ts} +11 -6
- package/dist/src/app/charts/{tooltipUtils.js → tooltips/tooltipUtils.js} +33 -17
- package/dist/src/app/charts/tooltips/tooltipUtils.js.map +1 -0
- package/dist/src/app/charts/{Tracker.d.ts → trackers/Tracker.d.ts} +6 -5
- package/dist/src/app/charts/trackers/Tracker.js +60 -0
- package/dist/src/app/charts/trackers/Tracker.js.map +1 -0
- package/dist/src/app/charts/{trackerUtils.d.ts → trackers/trackerUtils.d.ts} +13 -8
- package/dist/src/app/charts/trackers/trackerUtils.js +359 -0
- package/dist/src/app/charts/trackers/trackerUtils.js.map +1 -0
- package/dist/src/app/charts/utils.d.ts +22 -32
- package/dist/src/app/charts/utils.js +36 -37
- package/dist/src/app/charts/utils.js.map +1 -1
- package/dist/src/index.d.ts +48 -15
- package/dist/src/index.js +71 -15
- package/dist/src/index.js.map +1 -1
- package/package.json +30 -20
- package/src/app/charts/Chart.tsx +334 -0
- package/src/app/charts/axes/AxesState.test.ts +34 -0
- package/src/app/charts/axes/AxesState.ts +112 -0
- package/src/app/charts/axes/AxisInterval.test.ts +143 -0
- package/src/app/charts/axes/AxisInterval.ts +139 -0
- package/src/app/charts/axes/BaseAxisRange.ts +113 -0
- package/src/app/charts/axes/ContinuousAxis.tsx +192 -0
- package/src/app/charts/axes/ContinuousAxisRange.test.ts +55 -0
- package/src/app/charts/axes/ContinuousAxisRange.ts +96 -0
- package/src/app/charts/axes/OrdinalAxis.tsx +223 -0
- package/src/app/charts/axes/OrdinalAxisRange.test.ts +55 -0
- package/src/app/charts/axes/OrdinalAxisRange.ts +112 -0
- package/src/app/charts/axes/axes.ts +1569 -0
- package/src/app/charts/d3types.ts +16 -0
- package/src/app/charts/filters/regexFilter.test.ts +13 -0
- package/src/app/charts/filters/regexFilter.ts +17 -0
- package/src/app/charts/hooks/useAxes.tsx +341 -0
- package/src/app/charts/hooks/useChart.tsx +159 -0
- package/src/app/charts/hooks/useDataObservable.tsx +175 -0
- package/src/app/charts/hooks/useInitialData.tsx +65 -0
- package/src/app/charts/hooks/useMouse.tsx +125 -0
- package/src/app/charts/hooks/usePlotDimensions.tsx +120 -0
- package/src/app/charts/hooks/useTooltip.tsx +112 -0
- package/src/app/charts/observables/ChartData.ts +31 -0
- package/src/app/charts/observables/iterates.test.ts +201 -0
- package/src/app/charts/observables/iterates.ts +203 -0
- package/src/app/charts/observables/ordinals.test.ts +135 -0
- package/src/app/charts/observables/ordinals.ts +248 -0
- package/src/app/charts/plots/BarPlot.tsx +1088 -0
- package/src/app/charts/plots/PoincarePlot.tsx +832 -0
- package/src/app/charts/plots/RasterPlot.tsx +676 -0
- package/src/app/charts/plots/ScatterPlot.tsx +653 -0
- package/src/app/charts/plots/plot.ts +75 -0
- package/src/app/charts/series/baseSeries.ts +52 -0
- package/src/app/charts/series/datumSeries.test.ts +60 -0
- package/src/app/charts/series/iterateSeries.ts +56 -0
- package/src/app/charts/series/ordinalSeries.ts +164 -0
- package/src/app/charts/series/timeSeries.ts +40 -0
- package/src/app/charts/series/timeSeriesChartData.ts +68 -0
- package/src/app/charts/styling/barPlotStyle.ts +126 -0
- package/src/app/charts/styling/margins.test.ts +22 -0
- package/src/app/charts/styling/margins.ts +58 -0
- package/src/app/charts/styling/svgStyle.ts +118 -0
- package/src/app/charts/subscriptions/subscription.test.ts +499 -0
- package/src/app/charts/subscriptions/subscriptions.ts +635 -0
- package/src/app/charts/tooltips/BarPlotTooltipContent.tsx +440 -0
- package/src/app/charts/tooltips/PoincarePlotTooltipContent.tsx +352 -0
- package/src/app/charts/tooltips/RasterPlotTooltipContent.tsx +274 -0
- package/src/app/charts/tooltips/ScatterPlotTooltipContent.tsx +319 -0
- package/src/app/charts/tooltips/Tooltip.tsx +148 -0
- package/src/app/charts/tooltips/tooltipUtils.ts +216 -0
- package/src/app/charts/trackers/Tracker.tsx +129 -0
- package/src/app/charts/trackers/trackerUtils.ts +494 -0
- package/src/app/charts/utils.ts +109 -0
- package/dist/src/app/charts/CategoryAxis.d.ts +0 -20
- package/dist/src/app/charts/CategoryAxis.js +0 -112
- package/dist/src/app/charts/CategoryAxis.js.map +0 -1
- package/dist/src/app/charts/ContinuousAxis.d.ts +0 -16
- package/dist/src/app/charts/ContinuousAxis.js +0 -186
- package/dist/src/app/charts/ContinuousAxis.js.map +0 -1
- package/dist/src/app/charts/RasterPlot.js.map +0 -1
- package/dist/src/app/charts/RasterPlotTooltipContent.js.map +0 -1
- package/dist/src/app/charts/ScatterPlot.js +0 -351
- package/dist/src/app/charts/ScatterPlot.js.map +0 -1
- package/dist/src/app/charts/ScatterPlotTooltipContent.js +0 -163
- package/dist/src/app/charts/ScatterPlotTooltipContent.js.map +0 -1
- package/dist/src/app/charts/Tooltip.js.map +0 -1
- package/dist/src/app/charts/Tracker.js +0 -65
- package/dist/src/app/charts/Tracker.js.map +0 -1
- package/dist/src/app/charts/axes.d.ts +0 -132
- package/dist/src/app/charts/axes.js +0 -265
- package/dist/src/app/charts/axes.js.map +0 -1
- package/dist/src/app/charts/chartData.js +0 -32
- package/dist/src/app/charts/chartData.js.map +0 -1
- package/dist/src/app/charts/continuousAxisRangeFor.d.ts +0 -20
- package/dist/src/app/charts/continuousAxisRangeFor.js +0 -68
- package/dist/src/app/charts/continuousAxisRangeFor.js.map +0 -1
- package/dist/src/app/charts/datumSeries.d.ts +0 -59
- package/dist/src/app/charts/datumSeries.js +0 -55
- package/dist/src/app/charts/datumSeries.js.map +0 -1
- package/dist/src/app/charts/datumSeries.test.js +0 -50
- package/dist/src/app/charts/datumSeries.test.js.map +0 -1
- package/dist/src/app/charts/hooks/AxesState.d.ts +0 -37
- package/dist/src/app/charts/hooks/AxesState.js +0 -44
- package/dist/src/app/charts/hooks/AxesState.js.map +0 -1
- package/dist/src/app/charts/margins.js.map +0 -1
- package/dist/src/app/charts/margins.test.js +0 -14
- package/dist/src/app/charts/margins.test.js.map +0 -1
- package/dist/src/app/charts/plot.js.map +0 -1
- package/dist/src/app/charts/regexFilter.d.ts +0 -9
- package/dist/src/app/charts/regexFilter.js +0 -17
- package/dist/src/app/charts/regexFilter.js.map +0 -1
- package/dist/src/app/charts/regexFilter.test.js +0 -11
- package/dist/src/app/charts/regexFilter.test.js.map +0 -1
- package/dist/src/app/charts/subscriptions.d.ts +0 -43
- package/dist/src/app/charts/subscriptions.js +0 -213
- package/dist/src/app/charts/subscriptions.js.map +0 -1
- package/dist/src/app/charts/svgStyle.d.ts +0 -27
- package/dist/src/app/charts/svgStyle.js +0 -32
- package/dist/src/app/charts/svgStyle.js.map +0 -1
- package/dist/src/app/charts/timeRange.test.js +0 -54
- package/dist/src/app/charts/timeRange.test.js.map +0 -1
- package/dist/src/app/charts/tooltipUtils.js.map +0 -1
- package/dist/src/app/charts/trackerUtils.js +0 -130
- package/dist/src/app/charts/trackerUtils.js.map +0 -1
- /package/dist/src/app/charts/{datumSeries.test.d.ts → axes/AxesState.test.d.ts} +0 -0
- /package/dist/src/app/charts/{margins.test.d.ts → axes/AxisInterval.test.d.ts} +0 -0
- /package/dist/src/app/charts/{regexFilter.test.d.ts → axes/ContinuousAxisRange.test.d.ts} +0 -0
- /package/dist/src/app/charts/{timeRange.test.d.ts → axes/OrdinalAxisRange.test.d.ts} +0 -0
- /package/dist/src/app/charts/{RasterPlotTooltipContent.d.ts → tooltips/RasterPlotTooltipContent.d.ts} +0 -0
- /package/dist/src/app/charts/{ScatterPlotTooltipContent.d.ts → tooltips/ScatterPlotTooltipContent.d.ts} +0 -0
package/dist/src/index.d.ts
CHANGED
|
@@ -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 {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export { ContinuousAxis,
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
14
|
-
export
|
|
15
|
-
export {
|
|
16
|
-
export
|
|
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 {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export {
|
|
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
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,
|
|
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.
|
|
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
|
|
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
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"@
|
|
38
|
-
"@
|
|
39
|
-
"@
|
|
40
|
-
"@types/
|
|
41
|
-
"@types/
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
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
|
+
})
|