@tradingaction/core 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/LICENSE +24 -0
  2. package/README.md +5 -0
  3. package/lib/CanvasContainer.d.ts +19 -0
  4. package/lib/CanvasContainer.js +28 -0
  5. package/lib/CanvasContainer.js.map +1 -0
  6. package/lib/Chart.d.ts +32 -0
  7. package/lib/Chart.js +57 -0
  8. package/lib/Chart.js.map +1 -0
  9. package/lib/ChartCanvas.d.ts +235 -0
  10. package/lib/ChartCanvas.js +810 -0
  11. package/lib/ChartCanvas.js.map +1 -0
  12. package/lib/EventCapture.d.ts +131 -0
  13. package/lib/EventCapture.js +489 -0
  14. package/lib/EventCapture.js.map +1 -0
  15. package/lib/GenericChartComponent.d.ts +21 -0
  16. package/lib/GenericChartComponent.js +75 -0
  17. package/lib/GenericChartComponent.js.map +1 -0
  18. package/lib/GenericComponent.d.ts +81 -0
  19. package/lib/GenericComponent.js +355 -0
  20. package/lib/GenericComponent.js.map +1 -0
  21. package/lib/MoreProps.d.ts +16 -0
  22. package/lib/MoreProps.js +2 -0
  23. package/lib/MoreProps.js.map +1 -0
  24. package/lib/index.d.ts +7 -0
  25. package/lib/index.js +8 -0
  26. package/lib/index.js.map +1 -0
  27. package/lib/useEvent.d.ts +1 -0
  28. package/lib/useEvent.js +13 -0
  29. package/lib/useEvent.js.map +1 -0
  30. package/lib/utils/ChartDataUtil.d.ts +49 -0
  31. package/lib/utils/ChartDataUtil.js +205 -0
  32. package/lib/utils/ChartDataUtil.js.map +1 -0
  33. package/lib/utils/PureComponent.d.ts +4 -0
  34. package/lib/utils/PureComponent.js +10 -0
  35. package/lib/utils/PureComponent.js.map +1 -0
  36. package/lib/utils/accumulatingWindow.d.ts +15 -0
  37. package/lib/utils/accumulatingWindow.js +98 -0
  38. package/lib/utils/accumulatingWindow.js.map +1 -0
  39. package/lib/utils/barWidth.d.ts +15 -0
  40. package/lib/utils/barWidth.js +27 -0
  41. package/lib/utils/barWidth.js.map +1 -0
  42. package/lib/utils/closestItem.d.ts +5 -0
  43. package/lib/utils/closestItem.js +45 -0
  44. package/lib/utils/closestItem.js.map +1 -0
  45. package/lib/utils/evaluator.d.ts +7 -0
  46. package/lib/utils/evaluator.js +94 -0
  47. package/lib/utils/evaluator.js.map +1 -0
  48. package/lib/utils/identity.d.ts +1 -0
  49. package/lib/utils/identity.js +2 -0
  50. package/lib/utils/identity.js.map +1 -0
  51. package/lib/utils/index.d.ts +46 -0
  52. package/lib/utils/index.js +126 -0
  53. package/lib/utils/index.js.map +1 -0
  54. package/lib/utils/noop.d.ts +1 -0
  55. package/lib/utils/noop.js +3 -0
  56. package/lib/utils/noop.js.map +1 -0
  57. package/lib/utils/shallowEqual.d.ts +1 -0
  58. package/lib/utils/shallowEqual.js +22 -0
  59. package/lib/utils/shallowEqual.js.map +1 -0
  60. package/lib/utils/slidingWindow.d.ts +19 -0
  61. package/lib/utils/slidingWindow.js +109 -0
  62. package/lib/utils/slidingWindow.js.map +1 -0
  63. package/lib/utils/strokeDasharray.d.ts +3 -0
  64. package/lib/utils/strokeDasharray.js +37 -0
  65. package/lib/utils/strokeDasharray.js.map +1 -0
  66. package/lib/utils/zipper.d.ts +7 -0
  67. package/lib/utils/zipper.js +36 -0
  68. package/lib/utils/zipper.js.map +1 -0
  69. package/lib/zoom/index.d.ts +1 -0
  70. package/lib/zoom/index.js +2 -0
  71. package/lib/zoom/index.js.map +1 -0
  72. package/lib/zoom/zoomBehavior.d.ts +10 -0
  73. package/lib/zoom/zoomBehavior.js +18 -0
  74. package/lib/zoom/zoomBehavior.js.map +1 -0
  75. package/package.json +52 -0
  76. package/src/CanvasContainer.tsx +44 -0
  77. package/src/Chart.tsx +114 -0
  78. package/src/ChartCanvas.tsx +1336 -0
  79. package/src/EventCapture.tsx +709 -0
  80. package/src/GenericChartComponent.tsx +98 -0
  81. package/src/GenericComponent.tsx +454 -0
  82. package/src/MoreProps.ts +17 -0
  83. package/src/index.ts +7 -0
  84. package/src/useEvent.ts +14 -0
  85. package/src/utils/ChartDataUtil.ts +297 -0
  86. package/src/utils/PureComponent.tsx +12 -0
  87. package/src/utils/accumulatingWindow.ts +118 -0
  88. package/src/utils/barWidth.ts +44 -0
  89. package/src/utils/closestItem.ts +60 -0
  90. package/src/utils/evaluator.ts +163 -0
  91. package/src/utils/identity.ts +1 -0
  92. package/src/utils/index.ts +153 -0
  93. package/src/utils/noop.ts +2 -0
  94. package/src/utils/shallowEqual.ts +25 -0
  95. package/src/utils/slidingWindow.ts +140 -0
  96. package/src/utils/strokeDasharray.ts +52 -0
  97. package/src/utils/zipper.ts +45 -0
  98. package/src/zoom/index.ts +1 -0
  99. package/src/zoom/zoomBehavior.ts +34 -0
@@ -0,0 +1,205 @@
1
+ import { extent } from "d3-array";
2
+ import { scaleLinear } from "d3-scale";
3
+ import flattenDeep from "lodash.flattendeep";
4
+ import * as React from "react";
5
+ import { functor, getClosestItem, isNotDefined, isObject, last, mapObject, shallowEqual, zipper } from "./index";
6
+ export const ChartDefaultConfig = {
7
+ flipYScale: false,
8
+ id: 0,
9
+ origin: [0, 0],
10
+ padding: 0,
11
+ yPan: true,
12
+ yPanEnabled: false,
13
+ yScale: scaleLinear(),
14
+ };
15
+ export function getChartOrigin(origin, contextWidth, contextHeight) {
16
+ const originCoordinates = typeof origin === "function" ? origin(contextWidth, contextHeight) : origin;
17
+ return originCoordinates;
18
+ }
19
+ export function getDimensions({ width, height }, chartProps) {
20
+ const chartHeight = chartProps.height || height;
21
+ return {
22
+ availableHeight: height,
23
+ width,
24
+ height: chartHeight,
25
+ };
26
+ }
27
+ function values(func) {
28
+ return (d) => {
29
+ const obj = func(d);
30
+ if (isObject(obj)) {
31
+ return mapObject(obj);
32
+ }
33
+ return obj;
34
+ };
35
+ }
36
+ function isArraySize2AndNumber(yExtentsProp) {
37
+ if (Array.isArray(yExtentsProp) && yExtentsProp.length === 2) {
38
+ const [a, b] = yExtentsProp;
39
+ return typeof a === "number" && typeof b === "number";
40
+ }
41
+ return false;
42
+ }
43
+ const isChartProps = (props) => {
44
+ if (props === undefined) {
45
+ return false;
46
+ }
47
+ const chartProps = props;
48
+ if (chartProps.id === undefined) {
49
+ return false;
50
+ }
51
+ return true;
52
+ };
53
+ export function getNewChartConfig(innerDimension, children, existingChartConfig = []) {
54
+ return React.Children.map(children, (each) => {
55
+ if (!each || !isChartProps(each.props)) {
56
+ return undefined;
57
+ }
58
+ const chartProps = Object.assign(Object.assign({}, ChartDefaultConfig), each.props);
59
+ const { id, origin, padding, yExtents: yExtentsProp, yScale: yScaleProp = ChartDefaultConfig.yScale, flipYScale, yExtentsCalculator, } = chartProps;
60
+ const yScale = yScaleProp.copy();
61
+ const { width, height, availableHeight } = getDimensions(innerDimension, chartProps);
62
+ const { yPan } = chartProps;
63
+ let { yPanEnabled } = chartProps;
64
+ const yExtents = yExtentsProp
65
+ ? (Array.isArray(yExtentsProp) ? yExtentsProp : [yExtentsProp]).map(functor)
66
+ : undefined;
67
+ const prevChartConfig = existingChartConfig.find((d) => d.id === id);
68
+ if (isArraySize2AndNumber(yExtentsProp)) {
69
+ if (!!prevChartConfig &&
70
+ prevChartConfig.yPan &&
71
+ prevChartConfig.yPanEnabled &&
72
+ yPan &&
73
+ yPanEnabled &&
74
+ shallowEqual(prevChartConfig.originalYExtentsProp, yExtentsProp)) {
75
+ yScale.domain(prevChartConfig.yScale.domain());
76
+ }
77
+ else {
78
+ const [a, b] = yExtentsProp;
79
+ yScale.domain([a, b]);
80
+ }
81
+ }
82
+ else if (!!prevChartConfig && prevChartConfig.yPanEnabled) {
83
+ if (isArraySize2AndNumber(prevChartConfig.originalYExtentsProp)) {
84
+ // do nothing
85
+ }
86
+ else {
87
+ yScale.domain(prevChartConfig.yScale.domain());
88
+ yPanEnabled = true;
89
+ }
90
+ }
91
+ return {
92
+ id,
93
+ origin: functor(origin)(width, availableHeight),
94
+ padding,
95
+ originalYExtentsProp: yExtentsProp,
96
+ yExtents,
97
+ yExtentsCalculator,
98
+ flipYScale,
99
+ yScale,
100
+ yPan,
101
+ yPanEnabled,
102
+ width,
103
+ height,
104
+ };
105
+ }).filter((each) => each !== undefined);
106
+ }
107
+ export function getCurrentCharts(chartConfig, mouseXY) {
108
+ const currentCharts = chartConfig
109
+ .filter((eachConfig) => {
110
+ const top = eachConfig.origin[1];
111
+ const bottom = top + eachConfig.height;
112
+ return mouseXY[1] > top && mouseXY[1] < bottom;
113
+ })
114
+ .map((config) => config.id);
115
+ return currentCharts;
116
+ }
117
+ function setRange(scale, height, padding, flipYScale) {
118
+ if (scale.rangeRoundPoints || isNotDefined(scale.invert)) {
119
+ if (isNaN(padding)) {
120
+ throw new Error("padding has to be a number for ordinal scale");
121
+ }
122
+ if (scale.rangeRoundPoints) {
123
+ scale.rangeRoundPoints(flipYScale ? [0, height] : [height, 0], padding);
124
+ }
125
+ if (scale.rangeRound) {
126
+ scale.range(flipYScale ? [0, height] : [height, 0]).padding(padding);
127
+ }
128
+ }
129
+ else {
130
+ const { top, bottom } = isNaN(padding) ? padding : { top: padding, bottom: padding };
131
+ scale.range(flipYScale ? [top, height - bottom] : [height - bottom, top]);
132
+ }
133
+ return scale;
134
+ }
135
+ function yDomainFromYExtents(yExtents, yScale, plotData) {
136
+ const yValues = yExtents.map((eachExtent) => plotData.map(values(eachExtent)));
137
+ const allYValues = flattenDeep(yValues);
138
+ const realYDomain = yScale.invert ? extent(allYValues) : [...new Set(allYValues).values()];
139
+ return realYDomain;
140
+ }
141
+ export function getChartConfigWithUpdatedYScales(chartConfig, { plotData, xAccessor, displayXAccessor, fullData }, xDomain, dy, chartsToPan) {
142
+ const yDomains = chartConfig.map(({ yExtentsCalculator, yExtents, yScale }) => {
143
+ const realYDomain = yExtentsCalculator
144
+ ? yExtentsCalculator({ plotData, xDomain, xAccessor, displayXAccessor, fullData })
145
+ : yDomainFromYExtents(yExtents, yScale, plotData);
146
+ const yDomainDY = dy !== undefined
147
+ ? yScale
148
+ .range()
149
+ .map((each) => each - dy)
150
+ .map(yScale.invert)
151
+ : yScale.domain();
152
+ return {
153
+ realYDomain,
154
+ yDomainDY,
155
+ prevYDomain: yScale.domain(),
156
+ };
157
+ });
158
+ const combine = zipper().combine((config, { realYDomain, yDomainDY, prevYDomain }) => {
159
+ const { id, padding, height, yScale, yPan, flipYScale, yPanEnabled = false } = config;
160
+ const another = chartsToPan !== undefined ? chartsToPan.indexOf(id) > -1 : true;
161
+ const domain = yPan && yPanEnabled ? (another ? yDomainDY : prevYDomain) : realYDomain;
162
+ const newYScale = setRange(yScale.copy().domain(domain), height, padding, flipYScale);
163
+ return Object.assign(Object.assign({}, config), { yScale: newYScale, realYDomain });
164
+ });
165
+ const updatedChartConfig = combine(chartConfig, yDomains);
166
+ return updatedChartConfig;
167
+ }
168
+ export function getCurrentItem(xScale, xAccessor, mouseXY, plotData) {
169
+ let xValue;
170
+ let item;
171
+ if (xScale.invert) {
172
+ xValue = xScale.invert(mouseXY[0]);
173
+ item = getClosestItem(plotData, xValue, xAccessor);
174
+ }
175
+ else {
176
+ const dr = xScale
177
+ .range()
178
+ .map((d, idx) => ({ x: Math.abs(d - mouseXY[0]), idx }))
179
+ .reduce((a, b) => (a.x < b.x ? a : b));
180
+ item = dr !== undefined ? plotData[dr.idx] : plotData[0];
181
+ }
182
+ return item;
183
+ }
184
+ export function getXValue(xScale, xAccessor, mouseXY, plotData) {
185
+ let xValue;
186
+ let item;
187
+ if (xScale.invert) {
188
+ xValue = xScale.invert(mouseXY[0]);
189
+ if (xValue > xAccessor(last(plotData))) {
190
+ return Math.round(xValue.valueOf());
191
+ }
192
+ else {
193
+ item = getClosestItem(plotData, xValue, xAccessor);
194
+ }
195
+ }
196
+ else {
197
+ const dr = xScale
198
+ .range()
199
+ .map((d, idx) => ({ x: Math.abs(d - mouseXY[0]), idx }))
200
+ .reduce((a, b) => (a.x < b.x ? a : b));
201
+ item = dr !== undefined ? plotData[dr.idx] : plotData[0];
202
+ }
203
+ return xAccessor(item);
204
+ }
205
+ //# sourceMappingURL=ChartDataUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartDataUtil.js","sourceRoot":"","sources":["../../src/utils/ChartDataUtil.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import * as React from "react";
2
+ export declare class PureComponent<T, S = {}, SS = any> extends React.Component<T, S, SS> {
3
+ shouldComponentUpdate(nextProps: T, nextState: S, nextContext: SS): boolean;
4
+ }
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ import { shallowEqual } from "./shallowEqual";
3
+ export class PureComponent extends React.Component {
4
+ shouldComponentUpdate(nextProps, nextState, nextContext) {
5
+ return (!shallowEqual(this.props, nextProps) ||
6
+ !shallowEqual(this.state, nextState) ||
7
+ !shallowEqual(this.context, nextContext));
8
+ }
9
+ }
10
+ //# sourceMappingURL=PureComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PureComponent.js","sourceRoot":"","sources":["../../src/utils/PureComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,OAAO,aAAmC,SAAQ,KAAK,CAAC,SAAmB;IACtE,qBAAqB,CAAC,SAAY,EAAE,SAAY,EAAE,WAAe;QACpE,OAAO,CACH,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;YACpC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC;YACpC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAC3C,CAAC;IACN,CAAC;CACJ"}
@@ -0,0 +1,15 @@
1
+ interface AccumulatingWindow {
2
+ (data: any[]): any[];
3
+ accumulateTill(): any;
4
+ accumulateTill(x: any): AccumulatingWindow;
5
+ accumulator(): any;
6
+ accumulator(x: any): AccumulatingWindow;
7
+ value(): any;
8
+ value(x: any): AccumulatingWindow;
9
+ discardTillStart(): boolean;
10
+ discardTillStart(x: boolean): AccumulatingWindow;
11
+ discardTillEnd(): boolean;
12
+ discardTillEnd(x: boolean): AccumulatingWindow;
13
+ }
14
+ export default function (): AccumulatingWindow;
15
+ export {};
@@ -0,0 +1,98 @@
1
+ /*
2
+
3
+ Taken from https://github.com/ScottLogic/d3fc/blob/master/src/indicator/algorithm/calculator/slidingWindow.js
4
+
5
+ The MIT License (MIT)
6
+
7
+ Copyright (c) 2014-2015 Scott Logic Ltd.
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the Software is
14
+ furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in
17
+ all copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25
+ THE SOFTWARE.
26
+
27
+ */
28
+ import { identity } from "./identity";
29
+ import { functor } from "./index";
30
+ import { noop } from "./noop";
31
+ export default function () {
32
+ let accumulateTill = functor(false);
33
+ let accumulator = noop;
34
+ let value = identity;
35
+ let discardTillStart = false;
36
+ let discardTillEnd = false;
37
+ const accumulatingWindow = function (data) {
38
+ let accumulatedWindow = discardTillStart ? undefined : [];
39
+ const response = [];
40
+ let accumulatorIdx = 0;
41
+ let i = 0;
42
+ for (i = 0; i < data.length; i++) {
43
+ const d = data[i];
44
+ if (accumulateTill(d, i, accumulatedWindow || [])) {
45
+ if (accumulatedWindow && accumulatedWindow.length > 0) {
46
+ // @ts-ignore
47
+ response.push(accumulator(accumulatedWindow, i, accumulatorIdx++));
48
+ }
49
+ accumulatedWindow = [value(d)];
50
+ }
51
+ else if (accumulatedWindow) {
52
+ accumulatedWindow.push(value(d));
53
+ }
54
+ }
55
+ if (!discardTillEnd) {
56
+ // @ts-ignore
57
+ response.push(accumulator(accumulatedWindow, i, accumulatorIdx));
58
+ }
59
+ return response;
60
+ };
61
+ accumulatingWindow.accumulateTill = function (x) {
62
+ if (!arguments.length) {
63
+ return accumulateTill;
64
+ }
65
+ accumulateTill = functor(x);
66
+ return accumulatingWindow;
67
+ };
68
+ accumulatingWindow.accumulator = function (x) {
69
+ if (!arguments.length) {
70
+ return accumulator;
71
+ }
72
+ accumulator = x;
73
+ return accumulatingWindow;
74
+ };
75
+ accumulatingWindow.value = function (x) {
76
+ if (!arguments.length) {
77
+ return value;
78
+ }
79
+ value = x;
80
+ return accumulatingWindow;
81
+ };
82
+ accumulatingWindow.discardTillStart = function (x) {
83
+ if (!arguments.length) {
84
+ return discardTillStart;
85
+ }
86
+ discardTillStart = x;
87
+ return accumulatingWindow;
88
+ };
89
+ accumulatingWindow.discardTillEnd = function (x) {
90
+ if (!arguments.length) {
91
+ return discardTillEnd;
92
+ }
93
+ discardTillEnd = x;
94
+ return accumulatingWindow;
95
+ };
96
+ return accumulatingWindow;
97
+ }
98
+ //# sourceMappingURL=accumulatingWindow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accumulatingWindow.js","sourceRoot":"","sources":["../../src/utils/accumulatingWindow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { ScaleContinuousNumeric, ScaleTime } from "d3-scale";
2
+ /**
3
+ * Bar width is based on the amount of items in the plot data and the distance between the first and last of those
4
+ * items.
5
+ * @param props the props passed to the series.
6
+ * @param moreProps an object holding the xScale, xAccessor and plotData.
7
+ * @return {number} the bar width.
8
+ */
9
+ export declare const plotDataLengthBarWidth: <T>(props: {
10
+ widthRatio: number;
11
+ }, moreProps: {
12
+ xAccessor: (datum: T) => number | Date;
13
+ xScale: ScaleContinuousNumeric<number, number> | ScaleTime<number, number>;
14
+ plotData: T[];
15
+ }) => number;
@@ -0,0 +1,27 @@
1
+ import { first, last } from ".";
2
+ /**
3
+ * Bar width is based on the amount of items in the plot data and the distance between the first and last of those
4
+ * items.
5
+ * @param props the props passed to the series.
6
+ * @param moreProps an object holding the xScale, xAccessor and plotData.
7
+ * @return {number} the bar width.
8
+ */
9
+ export const plotDataLengthBarWidth = (props, moreProps) => {
10
+ const { widthRatio } = props;
11
+ const { xAccessor, xScale, plotData } = moreProps;
12
+ const [l, r] = xScale.range();
13
+ if (xScale.invert != null) {
14
+ const [dl, dr] = xScale.domain();
15
+ if (typeof dl === "number" && typeof dr === "number") {
16
+ const totalWidth = Math.abs(r - l);
17
+ const width = totalWidth / Math.abs(dl - dr);
18
+ return width * widthRatio;
19
+ }
20
+ const width = xScale(xAccessor(last(plotData))) - xScale(xAccessor(first(plotData)));
21
+ return (width / plotData.length) * widthRatio * 0.7;
22
+ }
23
+ const totalWidth = Math.abs(r - l);
24
+ const width = totalWidth / xScale.domain().length;
25
+ return width * widthRatio;
26
+ };
27
+ //# sourceMappingURL=barWidth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"barWidth.js","sourceRoot":"","sources":["../../src/utils/barWidth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;AAEhC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAClC,KAA6B,EAC7B,SAIC,EACK,EAAE;IACR,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAC7B,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;IAElD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IAE9B,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE;QACvB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;YAClD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAEnC,MAAM,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YAE7C,OAAO,KAAK,GAAG,UAAU,CAAC;SAC7B;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAErF,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,GAAG,CAAC;KACvD;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAEnC,MAAM,KAAK,GAAG,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC;IAElD,OAAO,KAAK,GAAG,UAAU,CAAC;AAC9B,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const getClosestItemIndexes: <T, TAccessor extends number | Date>(array: T[], value: TAccessor, accessor: (item: T) => TAccessor) => {
2
+ left: number;
3
+ right: number;
4
+ };
5
+ export declare const getClosestItem: <T, TAccessor extends number | Date>(array: T[], value: TAccessor, accessor: (item: T) => TAccessor) => T;
@@ -0,0 +1,45 @@
1
+ export const getClosestItemIndexes = (array, value, accessor) => {
2
+ let lo = 0;
3
+ let hi = array.length - 1;
4
+ while (hi - lo > 1) {
5
+ const mid = Math.round((lo + hi) / 2);
6
+ const itemAtMid = array[mid];
7
+ const valueAtMid = accessor(itemAtMid);
8
+ if (valueAtMid <= value) {
9
+ lo = mid;
10
+ }
11
+ else {
12
+ hi = mid;
13
+ }
14
+ }
15
+ const lowItemValue = accessor(array[lo]);
16
+ const highItemValue = accessor(array[hi]);
17
+ // for Date object === does not work, so using the <= in combination with >=
18
+ // the same code works for both dates and numbers
19
+ if ((lowItemValue === null || lowItemValue === void 0 ? void 0 : lowItemValue.valueOf()) === (value === null || value === void 0 ? void 0 : value.valueOf())) {
20
+ hi = lo;
21
+ }
22
+ if ((highItemValue === null || highItemValue === void 0 ? void 0 : highItemValue.valueOf()) === (value === null || value === void 0 ? void 0 : value.valueOf())) {
23
+ lo = hi;
24
+ }
25
+ if (lowItemValue < value && highItemValue < value) {
26
+ lo = hi;
27
+ }
28
+ if (lowItemValue > value && highItemValue > value) {
29
+ hi = lo;
30
+ }
31
+ return { left: lo, right: hi };
32
+ };
33
+ export const getClosestItem = (array, value, accessor) => {
34
+ const { left, right } = getClosestItemIndexes(array, value, accessor);
35
+ if (left === right) {
36
+ return array[left];
37
+ }
38
+ const leftItem = accessor(array[left]);
39
+ const rightItem = accessor(array[right]);
40
+ const closest = Math.abs(leftItem.valueOf() - value.valueOf()) < Math.abs(rightItem.valueOf() - value.valueOf())
41
+ ? array[left]
42
+ : array[right];
43
+ return closest;
44
+ };
45
+ //# sourceMappingURL=closestItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"closestItem.js","sourceRoot":"","sources":["../../src/utils/closestItem.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,KAAU,EACV,KAAgB,EAChB,QAAgC,EAClC,EAAE;IACA,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1B,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,UAAU,IAAI,KAAK,EAAE;YACrB,EAAE,GAAG,GAAG,CAAC;SACZ;aAAM;YACH,EAAE,GAAG,GAAG,CAAC;SACZ;KACJ;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1C,4EAA4E;IAC5E,iDAAiD;IACjD,IAAI,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,EAAE,OAAK,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EAAE,CAAA,EAAE;QAC9C,EAAE,GAAG,EAAE,CAAC;KACX;IACD,IAAI,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,OAAO,EAAE,OAAK,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EAAE,CAAA,EAAE;QAC/C,EAAE,GAAG,EAAE,CAAC;KACX;IAED,IAAI,YAAY,GAAG,KAAK,IAAI,aAAa,GAAG,KAAK,EAAE;QAC/C,EAAE,GAAG,EAAE,CAAC;KACX;IACD,IAAI,YAAY,GAAG,KAAK,IAAI,aAAa,GAAG,KAAK,EAAE;QAC/C,EAAE,GAAG,EAAE,CAAC;KACX;IAED,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC1B,KAAU,EACV,KAAgB,EAChB,QAAgC,EAClC,EAAE;IACA,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtE,IAAI,IAAI,KAAK,KAAK,EAAE;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;KACtB;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAEzC,MAAM,OAAO,GACT,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5F,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACb,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEvB,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ScaleContinuousNumeric, ScaleTime } from "d3-scale";
2
+ export default function ({ xScale, useWholeData, clamp, pointsPerPxThreshold, minPointsPerPxThreshold, flipXScale, }: any): {
3
+ filterData: <T>(data: T[], inputDomain: [number | Date, number | Date], xAccessor: (item: T) => number | Date, initialXScale: ScaleContinuousNumeric<number, number, never> | ScaleTime<number, number, never>, { currentPlotData, currentDomain, fallbackStart, fallbackEnd, ignoreThresholds }?: any) => {
4
+ plotData: T[];
5
+ domain: [number | Date, number | Date];
6
+ };
7
+ };
@@ -0,0 +1,94 @@
1
+ import { max, min } from "d3-array";
2
+ import { getClosestItemIndexes, head, isDefined, isNotDefined, last } from "../utils";
3
+ function getNewEnd(fallbackEnd, xAccessor, initialXScale, start) {
4
+ const { lastItem, lastItemX } = fallbackEnd;
5
+ const lastItemXValue = xAccessor(lastItem);
6
+ const [rangeStart, rangeEnd] = initialXScale.range();
7
+ const newEnd = ((rangeEnd - rangeStart) / (lastItemX.valueOf() - rangeStart)) * (lastItemXValue.valueOf() - start.valueOf()) +
8
+ start.valueOf();
9
+ return newEnd;
10
+ }
11
+ function extentsWrapper(useWholeData, clamp, pointsPerPxThreshold, minPointsPerPxThreshold, flipXScale) {
12
+ function filterData(data, inputDomain, xAccessor, initialXScale, { currentPlotData, currentDomain, fallbackStart, fallbackEnd, ignoreThresholds = false } = {}) {
13
+ if (useWholeData) {
14
+ return { plotData: data, domain: inputDomain };
15
+ }
16
+ let left = head(inputDomain);
17
+ let right = last(inputDomain);
18
+ let clampedDomain = inputDomain;
19
+ let filteredData = getFilteredResponse(data, left, right, xAccessor);
20
+ if (filteredData.length === 1 && fallbackStart !== undefined) {
21
+ left = fallbackStart;
22
+ right = getNewEnd(fallbackEnd, xAccessor, initialXScale, left);
23
+ clampedDomain = [left, right];
24
+ filteredData = getFilteredResponse(data, left, right, xAccessor);
25
+ }
26
+ if (typeof clamp === "function") {
27
+ clampedDomain = clamp(clampedDomain, [xAccessor(head(data)), xAccessor(last(data))]);
28
+ }
29
+ else {
30
+ if (clamp === "left" || clamp === "both" || clamp === true) {
31
+ clampedDomain = [max([left, xAccessor(head(data))]), clampedDomain[1]];
32
+ }
33
+ if (clamp === "right" || clamp === "both" || clamp === true) {
34
+ clampedDomain = [clampedDomain[0], min([right, xAccessor(last(data))])];
35
+ }
36
+ }
37
+ if (clampedDomain !== inputDomain) {
38
+ filteredData = getFilteredResponse(data, clampedDomain[0], clampedDomain[1], xAccessor);
39
+ }
40
+ const realInputDomain = clampedDomain;
41
+ const xScale = initialXScale.copy().domain(realInputDomain);
42
+ let width = Math.floor(xScale(xAccessor(last(filteredData))) - xScale(xAccessor(head(filteredData))));
43
+ // prevent negative width when flipXScale
44
+ if (flipXScale && width < 0) {
45
+ width = width * -1;
46
+ }
47
+ let plotData;
48
+ let domain;
49
+ const chartWidth = last(xScale.range()) - head(xScale.range());
50
+ if ((ignoreThresholds && filteredData.length > 1) ||
51
+ canShowTheseManyPeriods(width, filteredData.length, pointsPerPxThreshold, minPointsPerPxThreshold)) {
52
+ plotData = filteredData;
53
+ domain = realInputDomain;
54
+ }
55
+ else {
56
+ if (chartWidth > showMaxThreshold(width, pointsPerPxThreshold) && isDefined(fallbackEnd)) {
57
+ plotData = filteredData;
58
+ const newEnd = getNewEnd(fallbackEnd, xAccessor, initialXScale, head(realInputDomain));
59
+ domain = [head(realInputDomain), newEnd];
60
+ }
61
+ else {
62
+ plotData =
63
+ currentPlotData !== null && currentPlotData !== void 0 ? currentPlotData : filteredData.slice(filteredData.length - showMax(width, pointsPerPxThreshold));
64
+ domain = currentDomain !== null && currentDomain !== void 0 ? currentDomain : [xAccessor(head(plotData)), xAccessor(last(plotData))];
65
+ }
66
+ }
67
+ return { plotData, domain };
68
+ }
69
+ return { filterData };
70
+ }
71
+ function canShowTheseManyPeriods(width, arrayLength, maxThreshold, minThreshold) {
72
+ const widthAdjustedMinThreshold = showMinThreshold(width, minThreshold);
73
+ const widthAdjustedMaxTheshold = showMaxThreshold(width, maxThreshold);
74
+ return arrayLength >= widthAdjustedMinThreshold && arrayLength < widthAdjustedMaxTheshold;
75
+ }
76
+ function showMinThreshold(width, threshold) {
77
+ return Math.max(1, Math.ceil(width * threshold));
78
+ }
79
+ function showMaxThreshold(width, threshold) {
80
+ return Math.floor(width * threshold);
81
+ }
82
+ function showMax(width, threshold) {
83
+ return Math.floor(showMaxThreshold(width, threshold) * 0.97);
84
+ }
85
+ function getFilteredResponse(data, left, right, xAccessor) {
86
+ const newLeftIndex = getClosestItemIndexes(data, left, xAccessor).left;
87
+ const newRightIndex = getClosestItemIndexes(data, right, xAccessor).right;
88
+ const filteredData = data.slice(newLeftIndex, newRightIndex + 1);
89
+ return filteredData;
90
+ }
91
+ export default function ({ xScale, useWholeData, clamp, pointsPerPxThreshold, minPointsPerPxThreshold, flipXScale, }) {
92
+ return extentsWrapper(useWholeData || isNotDefined(xScale.invert), clamp, pointsPerPxThreshold, minPointsPerPxThreshold, flipXScale);
93
+ }
94
+ //# sourceMappingURL=evaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../src/utils/evaluator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const identity: (d: any) => any;
@@ -0,0 +1,2 @@
1
+ export const identity = (d) => d;
2
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/utils/identity.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,46 @@
1
+ import React from "react";
2
+ export { default as zipper } from "./zipper";
3
+ export { default as slidingWindow } from "./slidingWindow";
4
+ export * from "./closestItem";
5
+ export * from "./identity";
6
+ export * from "./noop";
7
+ export * from "./shallowEqual";
8
+ export { default as accumulatingWindow } from "./accumulatingWindow";
9
+ export * from "./barWidth";
10
+ export * from "./strokeDasharray";
11
+ export * from "./PureComponent";
12
+ export declare const sign: (x: any) => number;
13
+ export declare const path: (loc?: never[]) => (obj: any, defaultValue?: any) => any;
14
+ export declare const functor: (v: any) => any;
15
+ export declare function getClosestValue(inputValue: any, currentValue: any): any;
16
+ export declare function d3Window(node: any): any;
17
+ export declare const MOUSEENTER = "mouseenter.interaction";
18
+ export declare const MOUSELEAVE = "mouseleave.interaction";
19
+ export declare const MOUSEMOVE = "mousemove.pan";
20
+ export declare const MOUSEUP = "mouseup.pan";
21
+ export declare const TOUCHMOVE = "touchmove.pan";
22
+ export declare const TOUCHEND = "touchend.pan touchcancel.pan";
23
+ export declare function getTouchProps(touch: any): {
24
+ pageX: any;
25
+ pageY: any;
26
+ clientX: any;
27
+ clientY: any;
28
+ };
29
+ export declare function head(array: any[], accessor?: any): any;
30
+ export declare const first: typeof head;
31
+ export declare function last(array: any[], accessor?: any): any;
32
+ export declare const isDefined: <T>(d: T) => d is NonNullable<T>;
33
+ export declare function isNotDefined<T>(d: T): boolean;
34
+ export declare function isObject(d: any): boolean;
35
+ export declare function touchPosition(touch: {
36
+ clientX: number;
37
+ clientY: number;
38
+ }, e: React.TouchEvent): [number, number];
39
+ export declare function mousePosition(e: React.MouseEvent, defaultRect?: {
40
+ height: number;
41
+ width: number;
42
+ left: number;
43
+ top: number;
44
+ }): [number, number];
45
+ export declare function clearCanvas(canvasList: CanvasRenderingContext2D[], ratio: number): void;
46
+ export declare function mapObject(object?: {}, iteratee?: (x: any) => any): any[];