@pie-lib/graphing 2.34.3-next.2 → 2.34.4-next.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.
- package/CHANGELOG.md +6 -76
- package/lib/__tests__/graph-with-controls.test.js +226 -0
- package/lib/__tests__/graph.test.js +187 -0
- package/lib/__tests__/grid.test.js +29 -0
- package/lib/__tests__/labels.test.js +61 -0
- package/lib/__tests__/mark-label.test.js +133 -0
- package/lib/__tests__/toggle-bar.test.js +150 -0
- package/lib/__tests__/tool-menu.test.js +101 -0
- package/lib/__tests__/undo-redo.test.js +31 -0
- package/lib/__tests__/use-debounce.test.js +24 -0
- package/lib/__tests__/utils.js +70 -0
- package/lib/__tests__/utils.test.js +123 -0
- package/lib/axis/__tests__/arrow.test.js +60 -0
- package/lib/axis/__tests__/axes.test.js +195 -0
- package/lib/axis/arrow.js +20 -56
- package/lib/axis/arrow.js.map +1 -1
- package/lib/axis/axes.js +107 -195
- package/lib/axis/axes.js.map +1 -1
- package/lib/axis/index.js +2 -7
- package/lib/axis/index.js.map +1 -1
- package/lib/bg.js +22 -50
- package/lib/bg.js.map +1 -1
- package/lib/container/actions.js +3 -9
- package/lib/container/actions.js.map +1 -1
- package/lib/container/index.js +15 -60
- package/lib/container/index.js.map +1 -1
- package/lib/container/marks.js +2 -7
- package/lib/container/marks.js.map +1 -1
- package/lib/container/middleware.js +3 -9
- package/lib/container/middleware.js.map +1 -1
- package/lib/container/reducer.js +2 -9
- package/lib/container/reducer.js.map +1 -1
- package/lib/coordinates-label.js +25 -55
- package/lib/coordinates-label.js.map +1 -1
- package/lib/graph-with-controls.js +121 -185
- package/lib/graph-with-controls.js.map +1 -1
- package/lib/graph.js +60 -117
- package/lib/graph.js.map +1 -1
- package/lib/grid-setup.js +169 -225
- package/lib/grid-setup.js.map +1 -1
- package/lib/grid.js +30 -75
- package/lib/grid.js.map +1 -1
- package/lib/index.js +2 -14
- package/lib/index.js.map +1 -1
- package/lib/key-legend.js +41 -86
- package/lib/key-legend.js.map +1 -1
- package/lib/label-svg-icon.js +2 -8
- package/lib/label-svg-icon.js.map +1 -1
- package/lib/labels.js +66 -122
- package/lib/labels.js.map +1 -1
- package/lib/mark-label.js +121 -164
- package/lib/mark-label.js.map +1 -1
- package/lib/toggle-bar.js +156 -244
- package/lib/toggle-bar.js.map +1 -1
- package/lib/tool-menu.js +17 -51
- package/lib/tool-menu.js.map +1 -1
- package/lib/tools/absolute/__tests__/component.test.js +67 -0
- package/lib/tools/absolute/component.js +5 -11
- package/lib/tools/absolute/component.js.map +1 -1
- package/lib/tools/absolute/index.js +4 -17
- package/lib/tools/absolute/index.js.map +1 -1
- package/lib/tools/circle/__tests__/bg-circle.test.js +33 -0
- package/lib/tools/circle/__tests__/component.test.js +68 -0
- package/lib/tools/circle/bg-circle.js +43 -93
- package/lib/tools/circle/bg-circle.js.map +1 -1
- package/lib/tools/circle/component.js +79 -166
- package/lib/tools/circle/component.js.map +1 -1
- package/lib/tools/circle/index.js +4 -14
- package/lib/tools/circle/index.js.map +1 -1
- package/lib/tools/exponential/__tests__/component.test.js +66 -0
- package/lib/tools/exponential/component.js +5 -11
- package/lib/tools/exponential/component.js.map +1 -1
- package/lib/tools/exponential/index.js +4 -19
- package/lib/tools/exponential/index.js.map +1 -1
- package/lib/tools/index.js +4 -17
- package/lib/tools/index.js.map +1 -1
- package/lib/tools/line/__tests__/component.test.js +45 -0
- package/lib/tools/line/component.js +28 -49
- package/lib/tools/line/component.js.map +1 -1
- package/lib/tools/line/index.js +2 -7
- package/lib/tools/line/index.js.map +1 -1
- package/lib/tools/parabola/__tests__/component.test.js +66 -0
- package/lib/tools/parabola/component.js +5 -11
- package/lib/tools/parabola/component.js.map +1 -1
- package/lib/tools/parabola/index.js +4 -17
- package/lib/tools/parabola/index.js.map +1 -1
- package/lib/tools/point/__tests__/component.test.js +50 -0
- package/lib/tools/point/component.js +25 -72
- package/lib/tools/point/component.js.map +1 -1
- package/lib/tools/point/index.js +4 -12
- package/lib/tools/point/index.js.map +1 -1
- package/lib/tools/polygon/__tests__/component.test.js +85 -0
- package/lib/tools/polygon/__tests__/index.test.js +92 -0
- package/lib/tools/polygon/__tests__/line.test.js +29 -0
- package/lib/tools/polygon/__tests__/polygon.test.js +59 -0
- package/lib/tools/polygon/component.js +84 -185
- package/lib/tools/polygon/component.js.map +1 -1
- package/lib/tools/polygon/index.js +7 -24
- package/lib/tools/polygon/index.js.map +1 -1
- package/lib/tools/polygon/line.js +49 -92
- package/lib/tools/polygon/line.js.map +1 -1
- package/lib/tools/polygon/polygon.js +66 -99
- package/lib/tools/polygon/polygon.js.map +1 -1
- package/lib/tools/ray/__tests__/component.test.js +35 -0
- package/lib/tools/ray/component.js +42 -61
- package/lib/tools/ray/component.js.map +1 -1
- package/lib/tools/ray/index.js +2 -7
- package/lib/tools/ray/index.js.map +1 -1
- package/lib/tools/segment/__tests__/component.test.js +35 -0
- package/lib/tools/segment/component.js +26 -44
- package/lib/tools/segment/component.js.map +1 -1
- package/lib/tools/segment/index.js +2 -7
- package/lib/tools/segment/index.js.map +1 -1
- package/lib/tools/shared/__tests__/arrow-head.test.js +45 -0
- package/lib/tools/shared/arrow-head.js +70 -29
- package/lib/tools/shared/arrow-head.js.map +1 -1
- package/lib/tools/shared/icons/CorrectSVG.js +13 -9
- package/lib/tools/shared/icons/CorrectSVG.js.map +1 -1
- package/lib/tools/shared/icons/IncorrectSVG.js +13 -9
- package/lib/tools/shared/icons/IncorrectSVG.js.map +1 -1
- package/lib/tools/shared/icons/MissingSVG.js +13 -9
- package/lib/tools/shared/icons/MissingSVG.js.map +1 -1
- package/lib/tools/shared/line/__tests__/index.test.js +124 -0
- package/lib/tools/shared/line/__tests__/line-path.test.js +62 -0
- package/lib/tools/shared/line/__tests__/with-root-edge.test.js +91 -0
- package/lib/tools/shared/line/index.js +141 -194
- package/lib/tools/shared/line/index.js.map +1 -1
- package/lib/tools/shared/line/line-path.js +71 -102
- package/lib/tools/shared/line/line-path.js.map +1 -1
- package/lib/tools/shared/line/with-root-edge.js +23 -57
- package/lib/tools/shared/line/with-root-edge.js.map +1 -1
- package/lib/tools/shared/point/__tests__/arrow-point.test.js +127 -0
- package/lib/tools/shared/point/__tests__/base-point.test.js +122 -0
- package/lib/tools/shared/point/arrow-point.js +22 -63
- package/lib/tools/shared/point/arrow-point.js.map +1 -1
- package/lib/tools/shared/point/arrow.js +24 -53
- package/lib/tools/shared/point/arrow.js.map +1 -1
- package/lib/tools/shared/point/base-point.js +55 -73
- package/lib/tools/shared/point/base-point.js.map +1 -1
- package/lib/tools/shared/point/index.js +23 -58
- package/lib/tools/shared/point/index.js.map +1 -1
- package/lib/tools/shared/styles.js +11 -39
- package/lib/tools/shared/styles.js.map +1 -1
- package/lib/tools/shared/types.js +3 -10
- package/lib/tools/shared/types.js.map +1 -1
- package/lib/tools/sine/__tests__/component.test.js +72 -0
- package/lib/tools/sine/component.js +9 -20
- package/lib/tools/sine/component.js.map +1 -1
- package/lib/tools/sine/index.js +4 -17
- package/lib/tools/sine/index.js.map +1 -1
- package/lib/tools/vector/__tests__/component.test.js +32 -0
- package/lib/tools/vector/component.js +25 -45
- package/lib/tools/vector/component.js.map +1 -1
- package/lib/tools/vector/index.js +2 -7
- package/lib/tools/vector/index.js.map +1 -1
- package/lib/undo-redo.js +30 -70
- package/lib/undo-redo.js.map +1 -1
- package/lib/use-debounce.js +5 -12
- package/lib/use-debounce.js.map +1 -1
- package/lib/utils.js +52 -129
- package/lib/utils.js.map +1 -1
- package/package.json +25 -29
- package/src/__tests__/graph-with-controls.test.jsx +28 -11
- package/src/__tests__/graph.test.jsx +104 -168
- package/src/__tests__/grid.test.jsx +8 -6
- package/src/__tests__/labels.test.jsx +25 -8
- package/src/__tests__/mark-label.test.jsx +12 -17
- package/src/__tests__/toggle-bar.test.jsx +92 -17
- package/src/__tests__/tool-menu.test.jsx +61 -12
- package/src/__tests__/undo-redo.test.jsx +7 -8
- package/src/__tests__/utils.js +3 -0
- package/src/axis/__tests__/arrow.test.jsx +16 -17
- package/src/axis/__tests__/axes.test.jsx +118 -122
- package/src/axis/arrow.jsx +7 -12
- package/src/axis/axes.jsx +45 -55
- package/src/coordinates-label.jsx +14 -18
- package/src/graph-with-controls.jsx +52 -59
- package/src/grid-setup.jsx +210 -206
- package/src/grid.jsx +2 -4
- package/src/key-legend.jsx +52 -56
- package/src/labels.jsx +23 -30
- package/src/mark-label.jsx +92 -81
- package/src/toggle-bar.jsx +135 -164
- package/src/tool-menu.jsx +1 -1
- package/src/tools/circle/__tests__/bg-circle.test.jsx +7 -9
- package/src/tools/circle/__tests__/component.test.jsx +17 -189
- package/src/tools/circle/bg-circle.jsx +20 -28
- package/src/tools/circle/component.jsx +28 -63
- package/src/tools/line/__tests__/component.test.jsx +7 -7
- package/src/tools/line/component.jsx +22 -15
- package/src/tools/point/__tests__/component.test.jsx +18 -43
- package/src/tools/point/component.jsx +1 -1
- package/src/tools/polygon/__tests__/component.test.jsx +18 -162
- package/src/tools/polygon/__tests__/line.test.jsx +7 -10
- package/src/tools/polygon/__tests__/polygon.test.jsx +7 -8
- package/src/tools/polygon/component.jsx +3 -4
- package/src/tools/polygon/line.jsx +30 -33
- package/src/tools/polygon/polygon.jsx +52 -45
- package/src/tools/ray/__tests__/component.test.jsx +7 -8
- package/src/tools/ray/component.jsx +38 -25
- package/src/tools/segment/__tests__/component.test.jsx +7 -8
- package/src/tools/segment/component.jsx +19 -18
- package/src/tools/shared/__tests__/arrow-head.test.jsx +14 -17
- package/src/tools/shared/arrow-head.jsx +60 -7
- package/src/tools/shared/icons/CorrectSVG.jsx +10 -0
- package/src/tools/shared/icons/IncorrectSVG.jsx +10 -0
- package/src/tools/shared/icons/MissingSVG.jsx +10 -0
- package/src/tools/shared/line/__tests__/index.test.jsx +19 -165
- package/src/tools/shared/line/__tests__/line-path.test.jsx +8 -8
- package/src/tools/shared/line/__tests__/with-root-edge.test.jsx +22 -22
- package/src/tools/shared/line/index.jsx +52 -7
- package/src/tools/shared/line/line-path.jsx +55 -59
- package/src/tools/shared/line/with-root-edge.jsx +1 -1
- package/src/tools/shared/point/__tests__/arrow-point.test.jsx +15 -11
- package/src/tools/shared/point/__tests__/base-point.test.jsx +14 -11
- package/src/tools/shared/point/arrow-point.jsx +10 -24
- package/src/tools/shared/point/arrow.jsx +5 -11
- package/src/tools/shared/point/base-point.jsx +42 -19
- package/src/tools/shared/point/index.jsx +27 -44
- package/src/tools/vector/__tests__/component.test.jsx +7 -8
- package/src/tools/vector/component.jsx +11 -16
- package/src/undo-redo.jsx +19 -21
- package/esm/index.css +0 -847
- package/esm/index.js +0 -239949
- package/esm/index.js.map +0 -1
- package/esm/package.json +0 -3
- package/src/__tests__/__snapshots__/graph-with-controls.test.jsx.snap +0 -237
- package/src/__tests__/__snapshots__/graph.test.jsx.snap +0 -211
- package/src/__tests__/__snapshots__/grid.test.jsx.snap +0 -54
- package/src/__tests__/__snapshots__/labels.test.jsx.snap +0 -30
- package/src/__tests__/__snapshots__/mark-label.test.jsx.snap +0 -45
- package/src/__tests__/__snapshots__/toggle-bar.test.jsx.snap +0 -7
- package/src/__tests__/__snapshots__/tool-menu.test.jsx.snap +0 -13
- package/src/__tests__/__snapshots__/undo-redo.test.jsx.snap +0 -14
- package/src/axis/__tests__/__snapshots__/arrow.test.jsx.snap +0 -33
- package/src/axis/__tests__/__snapshots__/axes.test.jsx.snap +0 -122
- package/src/tools/circle/__tests__/__snapshots__/bg-circle.test.jsx.snap +0 -46
- package/src/tools/circle/__tests__/__snapshots__/component.test.jsx.snap +0 -293
- package/src/tools/line/__tests__/__snapshots__/component.test.jsx.snap +0 -20
- package/src/tools/point/__tests__/__snapshots__/component.test.jsx.snap +0 -40
- package/src/tools/polygon/__tests__/__snapshots__/component.test.jsx.snap +0 -415
- package/src/tools/polygon/__tests__/__snapshots__/line.test.jsx.snap +0 -45
- package/src/tools/polygon/__tests__/__snapshots__/polygon.test.jsx.snap +0 -52
- package/src/tools/ray/__tests__/__snapshots__/component.test.jsx.snap +0 -23
- package/src/tools/segment/__tests__/__snapshots__/component.test.jsx.snap +0 -14
- package/src/tools/shared/__tests__/__snapshots__/arrow-head.test.jsx.snap +0 -27
- package/src/tools/shared/line/__tests__/__snapshots__/index.test.jsx.snap +0 -360
- package/src/tools/shared/line/__tests__/__snapshots__/line-path.test.jsx.snap +0 -58
- package/src/tools/shared/line/__tests__/__snapshots__/with-root-edge.test.jsx.snap +0 -63
- package/src/tools/shared/point/__tests__/__snapshots__/arrow-point.test.jsx.snap +0 -56
- package/src/tools/shared/point/__tests__/__snapshots__/base-point.test.jsx.snap +0 -44
- package/src/tools/vector/__tests__/__snapshots__/component.test.jsx.snap +0 -12
package/lib/utils.js
CHANGED
|
@@ -1,108 +1,74 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.tickCount = exports.thinnerShapesNeeded = exports.sameAxes = exports.roundNumber = exports.polygonToArea = exports.pointsToArea = exports.point = exports.lineToArea = exports.isDuplicatedMark = exports.isDomainRangeEqual = exports.getTickValues = exports.getRightestPoints = exports.getMiddleOfTwoPoints = exports.getDistanceBetweenTwoPoints = exports.getAngleDeg = exports.getAdjustedGraphLimits = exports.findLongestWord = exports.equalPoints = exports.countWords = exports.bounds = exports.arrowDimensions = exports.amountToIncreaseWidth = void 0;
|
|
9
|
-
|
|
10
8
|
var _head = _interopRequireDefault(require("lodash/head"));
|
|
11
|
-
|
|
12
9
|
var _tail = _interopRequireDefault(require("lodash/tail"));
|
|
13
|
-
|
|
14
10
|
var _plot = require("@pie-lib/plot");
|
|
15
|
-
|
|
16
11
|
var _invariant = _interopRequireDefault(require("invariant"));
|
|
17
|
-
|
|
18
12
|
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
19
|
-
|
|
20
13
|
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
21
|
-
|
|
22
14
|
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
|
|
15
|
+
var tickCount = exports.tickCount = _plot.utils.tickCount;
|
|
16
|
+
var bounds = exports.bounds = _plot.utils.bounds;
|
|
17
|
+
var point = exports.point = _plot.utils.point;
|
|
23
18
|
|
|
24
|
-
|
|
25
|
-
exports.
|
|
26
|
-
var bounds = _plot.utils.bounds;
|
|
27
|
-
exports.bounds = bounds;
|
|
28
|
-
var point = _plot.utils.point; //TODO: This can be removed?
|
|
29
|
-
|
|
30
|
-
exports.point = point;
|
|
31
|
-
|
|
32
|
-
var getAngleDeg = function getAngleDeg() {
|
|
19
|
+
//TODO: This can be removed?
|
|
20
|
+
var getAngleDeg = exports.getAngleDeg = function getAngleDeg() {
|
|
33
21
|
return 0;
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
exports.getAngleDeg = getAngleDeg;
|
|
38
|
-
|
|
39
|
-
var arrowDimensions = function arrowDimensions() {
|
|
22
|
+
};
|
|
23
|
+
//TODO: This can be removed?
|
|
24
|
+
var arrowDimensions = exports.arrowDimensions = function arrowDimensions() {
|
|
40
25
|
return 0;
|
|
41
26
|
};
|
|
42
|
-
|
|
43
|
-
exports.arrowDimensions = arrowDimensions;
|
|
44
|
-
|
|
45
|
-
var getTickValues = function getTickValues(prop) {
|
|
27
|
+
var getTickValues = exports.getTickValues = function getTickValues(prop) {
|
|
46
28
|
var tickValues = [];
|
|
47
29
|
var tickVal = 0;
|
|
48
|
-
|
|
49
30
|
while (tickVal >= prop.min && tickValues.indexOf(tickVal) < 0) {
|
|
50
31
|
tickValues.push(tickVal);
|
|
51
32
|
tickVal = Math.round((tickVal - prop.step) * 10000) / 10000;
|
|
52
33
|
}
|
|
53
|
-
|
|
54
34
|
tickVal = Math.round(prop.step * 10000) / 10000;
|
|
55
|
-
|
|
56
35
|
while (tickVal <= prop.max && tickValues.indexOf(tickVal) < 0) {
|
|
57
36
|
tickValues.push(tickVal);
|
|
58
37
|
tickVal = Math.round((tickVal + prop.step) * 10000) / 10000;
|
|
59
|
-
}
|
|
60
|
-
|
|
38
|
+
}
|
|
61
39
|
|
|
40
|
+
// return only ticks that are inside the min-max interval
|
|
62
41
|
if (tickValues) {
|
|
63
42
|
return tickValues.filter(function (tV) {
|
|
64
43
|
return tV >= prop.min && tV <= prop.max;
|
|
65
44
|
});
|
|
66
45
|
}
|
|
67
|
-
|
|
68
46
|
return [];
|
|
69
47
|
};
|
|
70
|
-
|
|
71
|
-
exports.getTickValues = getTickValues;
|
|
72
|
-
|
|
73
|
-
var countWords = function countWords(label) {
|
|
48
|
+
var countWords = exports.countWords = function countWords(label) {
|
|
74
49
|
if (label == null || (0, _isEmpty["default"])(label)) {
|
|
75
50
|
return 1;
|
|
76
51
|
}
|
|
77
|
-
|
|
78
52
|
var words = label.split(' ');
|
|
79
53
|
return words.length;
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
exports.countWords = countWords;
|
|
54
|
+
};
|
|
84
55
|
|
|
85
|
-
|
|
56
|
+
// findLongestWord is also used in plot
|
|
57
|
+
var findLongestWord = exports.findLongestWord = function findLongestWord(label) {
|
|
86
58
|
var longestWord = (label || '').replace(/<[^>]+>/g, '').split(' ').sort(function (a, b) {
|
|
87
59
|
return b.length - a.length;
|
|
88
60
|
});
|
|
89
61
|
return longestWord[0].length;
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
exports.findLongestWord = findLongestWord;
|
|
62
|
+
};
|
|
94
63
|
|
|
95
|
-
|
|
64
|
+
// amountToIncreaseWidth is also used in plot
|
|
65
|
+
var amountToIncreaseWidth = exports.amountToIncreaseWidth = function amountToIncreaseWidth(longestWord) {
|
|
96
66
|
if (!longestWord) {
|
|
97
67
|
return 0;
|
|
98
68
|
}
|
|
99
|
-
|
|
100
69
|
return longestWord * 10;
|
|
101
70
|
};
|
|
102
|
-
|
|
103
|
-
exports.amountToIncreaseWidth = amountToIncreaseWidth;
|
|
104
|
-
|
|
105
|
-
var polygonToArea = function polygonToArea(points) {
|
|
71
|
+
var polygonToArea = exports.polygonToArea = function polygonToArea(points) {
|
|
106
72
|
var h = (0, _head["default"])(points);
|
|
107
73
|
var area = {
|
|
108
74
|
left: h.x,
|
|
@@ -118,16 +84,10 @@ var polygonToArea = function polygonToArea(points) {
|
|
|
118
84
|
return a;
|
|
119
85
|
}, area);
|
|
120
86
|
};
|
|
121
|
-
|
|
122
|
-
exports.polygonToArea = polygonToArea;
|
|
123
|
-
|
|
124
|
-
var lineToArea = function lineToArea(from, to) {
|
|
87
|
+
var lineToArea = exports.lineToArea = function lineToArea(from, to) {
|
|
125
88
|
return pointsToArea(from, to);
|
|
126
89
|
};
|
|
127
|
-
|
|
128
|
-
exports.lineToArea = lineToArea;
|
|
129
|
-
|
|
130
|
-
var pointsToArea = function pointsToArea(a, b) {
|
|
90
|
+
var pointsToArea = exports.pointsToArea = function pointsToArea(a, b) {
|
|
131
91
|
(0, _invariant["default"])(!!a && !!b, 'a or b is undefined');
|
|
132
92
|
var left = Math.min(a.x, b.x);
|
|
133
93
|
var top = Math.max(a.y, b.y);
|
|
@@ -140,16 +100,10 @@ var pointsToArea = function pointsToArea(a, b) {
|
|
|
140
100
|
right: right
|
|
141
101
|
};
|
|
142
102
|
};
|
|
143
|
-
|
|
144
|
-
exports.pointsToArea = pointsToArea;
|
|
145
|
-
|
|
146
|
-
var isDomainRangeEqual = function isDomainRangeEqual(graphProps, nextGraphProps) {
|
|
103
|
+
var isDomainRangeEqual = exports.isDomainRangeEqual = function isDomainRangeEqual(graphProps, nextGraphProps) {
|
|
147
104
|
return (0, _isEqual["default"])(graphProps.domain, nextGraphProps.domain) && (0, _isEqual["default"])(graphProps.range, nextGraphProps.range);
|
|
148
105
|
};
|
|
149
|
-
|
|
150
|
-
exports.isDomainRangeEqual = isDomainRangeEqual;
|
|
151
|
-
|
|
152
|
-
var getRightestPoints = function getRightestPoints(points) {
|
|
106
|
+
var getRightestPoints = exports.getRightestPoints = function getRightestPoints(points) {
|
|
153
107
|
var sortedPoints = (0, _cloneDeep["default"])(points);
|
|
154
108
|
sortedPoints.sort(function (a, b) {
|
|
155
109
|
return b.x - a.x;
|
|
@@ -159,31 +113,19 @@ var getRightestPoints = function getRightestPoints(points) {
|
|
|
159
113
|
b: sortedPoints[1]
|
|
160
114
|
};
|
|
161
115
|
};
|
|
162
|
-
|
|
163
|
-
exports.getRightestPoints = getRightestPoints;
|
|
164
|
-
|
|
165
|
-
var getMiddleOfTwoPoints = function getMiddleOfTwoPoints(a, b) {
|
|
116
|
+
var getMiddleOfTwoPoints = exports.getMiddleOfTwoPoints = function getMiddleOfTwoPoints(a, b) {
|
|
166
117
|
return {
|
|
167
118
|
x: (a.x + b.x) / 2,
|
|
168
119
|
y: (a.y + b.y) / 2
|
|
169
120
|
};
|
|
170
121
|
};
|
|
171
|
-
|
|
172
|
-
exports.getMiddleOfTwoPoints = getMiddleOfTwoPoints;
|
|
173
|
-
|
|
174
|
-
var roundNumber = function roundNumber(number) {
|
|
122
|
+
var roundNumber = exports.roundNumber = function roundNumber(number) {
|
|
175
123
|
return parseFloat(number.toFixed(4));
|
|
176
124
|
};
|
|
177
|
-
|
|
178
|
-
exports.roundNumber = roundNumber;
|
|
179
|
-
|
|
180
|
-
var sameAxes = function sameAxes(p1, p2) {
|
|
125
|
+
var sameAxes = exports.sameAxes = function sameAxes(p1, p2) {
|
|
181
126
|
return p1 && p2 && (roundNumber(p1.x) === roundNumber(p2.x) || roundNumber(p1.y) === roundNumber(p2.y));
|
|
182
127
|
};
|
|
183
|
-
|
|
184
|
-
exports.sameAxes = sameAxes;
|
|
185
|
-
|
|
186
|
-
var equalPoints = function equalPoints(p1, p2) {
|
|
128
|
+
var equalPoints = exports.equalPoints = function equalPoints(p1, p2) {
|
|
187
129
|
return p1 && p2 && (0, _isEqual["default"])({
|
|
188
130
|
x: roundNumber(p1.x),
|
|
189
131
|
y: roundNumber(p1.y)
|
|
@@ -192,38 +134,33 @@ var equalPoints = function equalPoints(p1, p2) {
|
|
|
192
134
|
y: roundNumber(p2.y)
|
|
193
135
|
});
|
|
194
136
|
};
|
|
195
|
-
|
|
196
|
-
exports.equalPoints = equalPoints;
|
|
197
|
-
|
|
198
137
|
var getDistanceBetweenTicks = function getDistanceBetweenTicks(axis, size) {
|
|
199
138
|
var min = axis.min,
|
|
200
|
-
|
|
201
|
-
|
|
139
|
+
max = axis.max,
|
|
140
|
+
step = axis.step;
|
|
202
141
|
var nbOfTicks = (max - min) / step;
|
|
203
142
|
return size / nbOfTicks;
|
|
204
143
|
};
|
|
205
|
-
|
|
206
|
-
var thinnerShapesNeeded = function thinnerShapesNeeded(graphProps) {
|
|
144
|
+
var thinnerShapesNeeded = exports.thinnerShapesNeeded = function thinnerShapesNeeded(graphProps) {
|
|
207
145
|
var domain = graphProps.domain,
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
146
|
+
range = graphProps.range,
|
|
147
|
+
_graphProps$size = graphProps.size,
|
|
148
|
+
width = _graphProps$size.width,
|
|
149
|
+
height = _graphProps$size.height;
|
|
212
150
|
|
|
151
|
+
// 14 is the default width of a point
|
|
213
152
|
return getDistanceBetweenTicks(domain, width) < 14 || getDistanceBetweenTicks(range, height) < 14;
|
|
214
153
|
};
|
|
215
|
-
|
|
216
|
-
exports.thinnerShapesNeeded = thinnerShapesNeeded;
|
|
217
|
-
|
|
218
|
-
var getAdjustedGraphLimits = function getAdjustedGraphLimits(graphProps) {
|
|
154
|
+
var getAdjustedGraphLimits = exports.getAdjustedGraphLimits = function getAdjustedGraphLimits(graphProps) {
|
|
219
155
|
var domain = graphProps.domain,
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
156
|
+
range = graphProps.range,
|
|
157
|
+
_graphProps$size2 = graphProps.size,
|
|
158
|
+
width = _graphProps$size2.width,
|
|
159
|
+
height = _graphProps$size2.height;
|
|
224
160
|
var domainTicksDistance = getDistanceBetweenTicks(domain, width);
|
|
225
|
-
var rangeTicksDistance = getDistanceBetweenTicks(range, height);
|
|
161
|
+
var rangeTicksDistance = getDistanceBetweenTicks(range, height);
|
|
226
162
|
|
|
163
|
+
// 15 is the distance required for the arrow to extend the graph
|
|
227
164
|
var domainPadding = domain.step / (domainTicksDistance / 15);
|
|
228
165
|
var rangePadding = range.step / (rangeTicksDistance / 15);
|
|
229
166
|
return {
|
|
@@ -237,62 +174,50 @@ var getAdjustedGraphLimits = function getAdjustedGraphLimits(graphProps) {
|
|
|
237
174
|
}
|
|
238
175
|
};
|
|
239
176
|
};
|
|
240
|
-
|
|
241
|
-
exports.getAdjustedGraphLimits = getAdjustedGraphLimits;
|
|
242
|
-
|
|
243
|
-
var getDistanceBetweenTwoPoints = function getDistanceBetweenTwoPoints(a, b) {
|
|
177
|
+
var getDistanceBetweenTwoPoints = exports.getDistanceBetweenTwoPoints = function getDistanceBetweenTwoPoints(a, b) {
|
|
244
178
|
return Math.sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y));
|
|
245
179
|
};
|
|
246
|
-
|
|
247
|
-
exports.getDistanceBetweenTwoPoints = getDistanceBetweenTwoPoints;
|
|
248
|
-
|
|
249
180
|
var sortPoints = function sortPoints(array) {
|
|
250
181
|
return (array || []).sort(function (a, b) {
|
|
251
182
|
return a.x - b.x || a.y - b.y;
|
|
252
183
|
});
|
|
253
|
-
};
|
|
254
|
-
|
|
184
|
+
};
|
|
255
185
|
|
|
186
|
+
// check colliniarity of 3 points (source: https://www.geeksforgeeks.org/program-check-three-points-collinear/)
|
|
256
187
|
var checkCollinearity = function checkCollinearity(a, b, c) {
|
|
257
188
|
return (a.x - b.x) * (c.y - b.y) === (c.x - b.x) * (a.y - b.y);
|
|
258
|
-
};
|
|
259
|
-
|
|
189
|
+
};
|
|
260
190
|
|
|
191
|
+
// 2 lines are overlapping if all 4 points are collinear
|
|
261
192
|
var isSameLine = function isSameLine(markA, markB) {
|
|
262
193
|
return checkCollinearity(markA.from, markB.from, markB.to) && checkCollinearity(markA.to, markB.from, markB.to);
|
|
263
194
|
};
|
|
264
|
-
|
|
265
195
|
var isSameCircle = function isSameCircle(markA, markB) {
|
|
266
196
|
return equalPoints(markA.root, markB.root) && getDistanceBetweenTwoPoints(markB.root, markB.edge) === getDistanceBetweenTwoPoints(markA.root, markA.edge);
|
|
267
197
|
};
|
|
268
|
-
|
|
269
|
-
var isDuplicatedMark = function isDuplicatedMark(mark, marks, oldMark) {
|
|
198
|
+
var isDuplicatedMark = exports.isDuplicatedMark = function isDuplicatedMark(mark, marks, oldMark) {
|
|
270
199
|
var type = mark.type,
|
|
271
|
-
|
|
272
|
-
|
|
200
|
+
building = mark.building;
|
|
273
201
|
if (building) {
|
|
274
202
|
return false;
|
|
275
203
|
}
|
|
276
|
-
|
|
277
204
|
var filteredMarks = (marks || []).filter(function (m) {
|
|
278
205
|
return m.type === type && !m.building;
|
|
279
206
|
});
|
|
280
207
|
var index = filteredMarks.findIndex(function (m) {
|
|
281
208
|
return (0, _isEqual["default"])(m, oldMark);
|
|
282
209
|
});
|
|
283
|
-
|
|
284
210
|
if (index !== -1) {
|
|
285
211
|
filteredMarks.splice(index, 1);
|
|
286
212
|
}
|
|
287
|
-
|
|
288
213
|
var duplicated = filteredMarks.find(function (m) {
|
|
289
214
|
if (type === 'circle' || type === 'parabola' || type === 'sine' || type === 'absolute' || type === 'exponential') {
|
|
290
215
|
var root = mark.root,
|
|
291
|
-
|
|
216
|
+
edge = mark.edge;
|
|
292
217
|
return equalPoints(root, m.root) && equalPoints(edge, m.edge) || type === 'circle' && isSameCircle(m, mark);
|
|
293
218
|
} else if (type === 'line' || type === 'ray' || type === 'segment' || type === 'vector') {
|
|
294
219
|
var from = mark.from,
|
|
295
|
-
|
|
220
|
+
to = mark.to;
|
|
296
221
|
return equalPoints(from, m.from) && equalPoints(to, m.to) || equalPoints(from, m.to) && equalPoints(to, m.from) || type === 'line' && isSameLine(m, mark);
|
|
297
222
|
} else if (type === 'polygon') {
|
|
298
223
|
return (0, _isEqual["default"])(sortPoints((0, _cloneDeep["default"])(mark.points)), sortPoints((0, _cloneDeep["default"])(m.points)));
|
|
@@ -302,6 +227,4 @@ var isDuplicatedMark = function isDuplicatedMark(mark, marks, oldMark) {
|
|
|
302
227
|
});
|
|
303
228
|
return !!duplicated;
|
|
304
229
|
};
|
|
305
|
-
|
|
306
|
-
exports.isDuplicatedMark = isDuplicatedMark;
|
|
307
|
-
//# sourceMappingURL=utils.js.map
|
|
230
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGVhZCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3RhaWwiLCJfcGxvdCIsIl9pbnZhcmlhbnQiLCJfaXNFcXVhbCIsIl9pc0VtcHR5IiwiX2Nsb25lRGVlcCIsInRpY2tDb3VudCIsImV4cG9ydHMiLCJ1dGlscyIsImJvdW5kcyIsInBvaW50IiwiZ2V0QW5nbGVEZWciLCJhcnJvd0RpbWVuc2lvbnMiLCJnZXRUaWNrVmFsdWVzIiwicHJvcCIsInRpY2tWYWx1ZXMiLCJ0aWNrVmFsIiwibWluIiwiaW5kZXhPZiIsInB1c2giLCJNYXRoIiwicm91bmQiLCJzdGVwIiwibWF4IiwiZmlsdGVyIiwidFYiLCJjb3VudFdvcmRzIiwibGFiZWwiLCJpc0VtcHR5Iiwid29yZHMiLCJzcGxpdCIsImxlbmd0aCIsImZpbmRMb25nZXN0V29yZCIsImxvbmdlc3RXb3JkIiwicmVwbGFjZSIsInNvcnQiLCJhIiwiYiIsImFtb3VudFRvSW5jcmVhc2VXaWR0aCIsInBvbHlnb25Ub0FyZWEiLCJwb2ludHMiLCJoIiwiaGVhZCIsImFyZWEiLCJsZWZ0IiwieCIsInRvcCIsInkiLCJib3R0b20iLCJyaWdodCIsInRhaWwiLCJyZWR1Y2UiLCJwIiwibGluZVRvQXJlYSIsImZyb20iLCJ0byIsInBvaW50c1RvQXJlYSIsImludmFyaWFudCIsImlzRG9tYWluUmFuZ2VFcXVhbCIsImdyYXBoUHJvcHMiLCJuZXh0R3JhcGhQcm9wcyIsImlzRXF1YWwiLCJkb21haW4iLCJyYW5nZSIsImdldFJpZ2h0ZXN0UG9pbnRzIiwic29ydGVkUG9pbnRzIiwiY2xvbmVEZWVwIiwiZ2V0TWlkZGxlT2ZUd29Qb2ludHMiLCJyb3VuZE51bWJlciIsIm51bWJlciIsInBhcnNlRmxvYXQiLCJ0b0ZpeGVkIiwic2FtZUF4ZXMiLCJwMSIsInAyIiwiZXF1YWxQb2ludHMiLCJnZXREaXN0YW5jZUJldHdlZW5UaWNrcyIsImF4aXMiLCJzaXplIiwibmJPZlRpY2tzIiwidGhpbm5lclNoYXBlc05lZWRlZCIsIl9ncmFwaFByb3BzJHNpemUiLCJ3aWR0aCIsImhlaWdodCIsImdldEFkanVzdGVkR3JhcGhMaW1pdHMiLCJfZ3JhcGhQcm9wcyRzaXplMiIsImRvbWFpblRpY2tzRGlzdGFuY2UiLCJyYW5nZVRpY2tzRGlzdGFuY2UiLCJkb21haW5QYWRkaW5nIiwicmFuZ2VQYWRkaW5nIiwiZ2V0RGlzdGFuY2VCZXR3ZWVuVHdvUG9pbnRzIiwic3FydCIsInNvcnRQb2ludHMiLCJhcnJheSIsImNoZWNrQ29sbGluZWFyaXR5IiwiYyIsImlzU2FtZUxpbmUiLCJtYXJrQSIsIm1hcmtCIiwiaXNTYW1lQ2lyY2xlIiwicm9vdCIsImVkZ2UiLCJpc0R1cGxpY2F0ZWRNYXJrIiwibWFyayIsIm1hcmtzIiwib2xkTWFyayIsInR5cGUiLCJidWlsZGluZyIsImZpbHRlcmVkTWFya3MiLCJtIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJzcGxpY2UiLCJkdXBsaWNhdGVkIiwiZmluZCJdLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaGVhZCBmcm9tICdsb2Rhc2gvaGVhZCc7XG5pbXBvcnQgdGFpbCBmcm9tICdsb2Rhc2gvdGFpbCc7XG5pbXBvcnQgeyB1dGlscyB9IGZyb20gJ0BwaWUtbGliL3Bsb3QnO1xuaW1wb3J0IGludmFyaWFudCBmcm9tICdpbnZhcmlhbnQnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IGNsb25lRGVlcCBmcm9tICdsb2Rhc2gvY2xvbmVEZWVwJztcblxuZXhwb3J0IGNvbnN0IHRpY2tDb3VudCA9IHV0aWxzLnRpY2tDb3VudDtcbmV4cG9ydCBjb25zdCBib3VuZHMgPSB1dGlscy5ib3VuZHM7XG5leHBvcnQgY29uc3QgcG9pbnQgPSB1dGlscy5wb2ludDtcblxuLy9UT0RPOiBUaGlzIGNhbiBiZSByZW1vdmVkP1xuZXhwb3J0IGNvbnN0IGdldEFuZ2xlRGVnID0gKCkgPT4gMDtcbi8vVE9ETzogVGhpcyBjYW4gYmUgcmVtb3ZlZD9cbmV4cG9ydCBjb25zdCBhcnJvd0RpbWVuc2lvbnMgPSAoKSA9PiAwO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja1ZhbHVlcyA9IChwcm9wKSA9PiB7XG4gIGNvbnN0IHRpY2tWYWx1ZXMgPSBbXTtcbiAgbGV0IHRpY2tWYWwgPSAwO1xuXG4gIHdoaWxlICh0aWNrVmFsID49IHByb3AubWluICYmIHRpY2tWYWx1ZXMuaW5kZXhPZih0aWNrVmFsKSA8IDApIHtcbiAgICB0aWNrVmFsdWVzLnB1c2godGlja1ZhbCk7XG4gICAgdGlja1ZhbCA9IE1hdGgucm91bmQoKHRpY2tWYWwgLSBwcm9wLnN0ZXApICogMTAwMDApIC8gMTAwMDA7XG4gIH1cblxuICB0aWNrVmFsID0gTWF0aC5yb3VuZChwcm9wLnN0ZXAgKiAxMDAwMCkgLyAxMDAwMDtcblxuICB3aGlsZSAodGlja1ZhbCA8PSBwcm9wLm1heCAmJiB0aWNrVmFsdWVzLmluZGV4T2YodGlja1ZhbCkgPCAwKSB7XG4gICAgdGlja1ZhbHVlcy5wdXNoKHRpY2tWYWwpO1xuICAgIHRpY2tWYWwgPSBNYXRoLnJvdW5kKCh0aWNrVmFsICsgcHJvcC5zdGVwKSAqIDEwMDAwKSAvIDEwMDAwO1xuICB9XG5cbiAgLy8gcmV0dXJuIG9ubHkgdGlja3MgdGhhdCBhcmUgaW5zaWRlIHRoZSBtaW4tbWF4IGludGVydmFsXG4gIGlmICh0aWNrVmFsdWVzKSB7XG4gICAgcmV0dXJuIHRpY2tWYWx1ZXMuZmlsdGVyKCh0VikgPT4gdFYgPj0gcHJvcC5taW4gJiYgdFYgPD0gcHJvcC5tYXgpO1xuICB9XG5cbiAgcmV0dXJuIFtdO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvdW50V29yZHMgPSAobGFiZWwpID0+IHtcbiAgaWYgKGxhYmVsID09IG51bGwgfHwgaXNFbXB0eShsYWJlbCkpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNvbnN0IHdvcmRzID0gbGFiZWwuc3BsaXQoJyAnKTtcbiAgcmV0dXJuIHdvcmRzLmxlbmd0aDtcbn07XG5cbi8vIGZpbmRMb25nZXN0V29yZCBpcyBhbHNvIHVzZWQgaW4gcGxvdFxuZXhwb3J0IGNvbnN0IGZpbmRMb25nZXN0V29yZCA9IChsYWJlbCkgPT4ge1xuICBsZXQgbG9uZ2VzdFdvcmQgPSAobGFiZWwgfHwgJycpXG4gICAgLnJlcGxhY2UoLzxbXj5dKz4vZywgJycpXG4gICAgLnNwbGl0KCcgJylcbiAgICAuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCk7XG5cbiAgcmV0dXJuIGxvbmdlc3RXb3JkWzBdLmxlbmd0aDtcbn07XG5cbi8vIGFtb3VudFRvSW5jcmVhc2VXaWR0aCBpcyBhbHNvIHVzZWQgaW4gcGxvdFxuZXhwb3J0IGNvbnN0IGFtb3VudFRvSW5jcmVhc2VXaWR0aCA9IChsb25nZXN0V29yZCkgPT4ge1xuICBpZiAoIWxvbmdlc3RXb3JkKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gbG9uZ2VzdFdvcmQgKiAxMDtcbn07XG5cbmV4cG9ydCBjb25zdCBwb2x5Z29uVG9BcmVhID0gKHBvaW50cykgPT4ge1xuICBjb25zdCBoID0gaGVhZChwb2ludHMpO1xuICBjb25zdCBhcmVhID0ge1xuICAgIGxlZnQ6IGgueCxcbiAgICB0b3A6IGgueSxcbiAgICBib3R0b206IGgueSxcbiAgICByaWdodDogaC54LFxuICB9O1xuICByZXR1cm4gdGFpbChwb2ludHMpLnJlZHVjZSgoYSwgcCkgPT4ge1xuICAgIGEubGVmdCA9IE1hdGgubWluKGEubGVmdCwgcC54KTtcbiAgICBhLnRvcCA9IE1hdGgubWF4KGEudG9wLCBwLnkpO1xuICAgIGEuYm90dG9tID0gTWF0aC5taW4oYS5ib3R0b20sIHAueSk7XG4gICAgYS5yaWdodCA9IE1hdGgubWF4KGEucmlnaHQsIHAueCk7XG4gICAgcmV0dXJuIGE7XG4gIH0sIGFyZWEpO1xufTtcblxuZXhwb3J0IGNvbnN0IGxpbmVUb0FyZWEgPSAoZnJvbSwgdG8pID0+IHBvaW50c1RvQXJlYShmcm9tLCB0byk7XG5cbmV4cG9ydCBjb25zdCBwb2ludHNUb0FyZWEgPSAoYSwgYikgPT4ge1xuICBpbnZhcmlhbnQoISFhICYmICEhYiwgJ2Egb3IgYiBpcyB1bmRlZmluZWQnKTtcbiAgY29uc3QgbGVmdCA9IE1hdGgubWluKGEueCwgYi54KTtcbiAgY29uc3QgdG9wID0gTWF0aC5tYXgoYS55LCBiLnkpO1xuICBjb25zdCBib3R0b20gPSBNYXRoLm1pbihhLnksIGIueSk7XG4gIGNvbnN0IHJpZ2h0ID0gTWF0aC5tYXgoYS54LCBiLngpO1xuICByZXR1cm4geyBsZWZ0LCB0b3AsIGJvdHRvbSwgcmlnaHQgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0RvbWFpblJhbmdlRXF1YWwgPSAoZ3JhcGhQcm9wcywgbmV4dEdyYXBoUHJvcHMpID0+IHtcbiAgcmV0dXJuIGlzRXF1YWwoZ3JhcGhQcm9wcy5kb21haW4sIG5leHRHcmFwaFByb3BzLmRvbWFpbikgJiYgaXNFcXVhbChncmFwaFByb3BzLnJhbmdlLCBuZXh0R3JhcGhQcm9wcy5yYW5nZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmlnaHRlc3RQb2ludHMgPSAocG9pbnRzKSA9PiB7XG4gIGNvbnN0IHNvcnRlZFBvaW50cyA9IGNsb25lRGVlcChwb2ludHMpO1xuICBzb3J0ZWRQb2ludHMuc29ydCgoYSwgYikgPT4gYi54IC0gYS54KTtcblxuICByZXR1cm4geyBhOiBzb3J0ZWRQb2ludHNbMF0sIGI6IHNvcnRlZFBvaW50c1sxXSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1pZGRsZU9mVHdvUG9pbnRzID0gKGEsIGIpID0+ICh7XG4gIHg6IChhLnggKyBiLngpIC8gMixcbiAgeTogKGEueSArIGIueSkgLyAyLFxufSk7XG5cbmV4cG9ydCBjb25zdCByb3VuZE51bWJlciA9IChudW1iZXIpID0+IHBhcnNlRmxvYXQobnVtYmVyLnRvRml4ZWQoNCkpO1xuXG5leHBvcnQgY29uc3Qgc2FtZUF4ZXMgPSAocDEsIHAyKSA9PlxuICBwMSAmJiBwMiAmJiAocm91bmROdW1iZXIocDEueCkgPT09IHJvdW5kTnVtYmVyKHAyLngpIHx8IHJvdW5kTnVtYmVyKHAxLnkpID09PSByb3VuZE51bWJlcihwMi55KSk7XG5cbmV4cG9ydCBjb25zdCBlcXVhbFBvaW50cyA9IChwMSwgcDIpID0+XG4gIHAxICYmXG4gIHAyICYmXG4gIGlzRXF1YWwoXG4gICAge1xuICAgICAgeDogcm91bmROdW1iZXIocDEueCksXG4gICAgICB5OiByb3VuZE51bWJlcihwMS55KSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHg6IHJvdW5kTnVtYmVyKHAyLngpLFxuICAgICAgeTogcm91bmROdW1iZXIocDIueSksXG4gICAgfSxcbiAgKTtcblxuY29uc3QgZ2V0RGlzdGFuY2VCZXR3ZWVuVGlja3MgPSAoYXhpcywgc2l6ZSkgPT4ge1xuICBjb25zdCB7IG1pbiwgbWF4LCBzdGVwIH0gPSBheGlzO1xuICBjb25zdCBuYk9mVGlja3MgPSAobWF4IC0gbWluKSAvIHN0ZXA7XG5cbiAgcmV0dXJuIHNpemUgLyBuYk9mVGlja3M7XG59O1xuXG5leHBvcnQgY29uc3QgdGhpbm5lclNoYXBlc05lZWRlZCA9IChncmFwaFByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBkb21haW4sXG4gICAgcmFuZ2UsXG4gICAgc2l6ZTogeyB3aWR0aCwgaGVpZ2h0IH0sXG4gIH0gPSBncmFwaFByb3BzO1xuXG4gIC8vIDE0IGlzIHRoZSBkZWZhdWx0IHdpZHRoIG9mIGEgcG9pbnRcbiAgcmV0dXJuIGdldERpc3RhbmNlQmV0d2VlblRpY2tzKGRvbWFpbiwgd2lkdGgpIDwgMTQgfHwgZ2V0RGlzdGFuY2VCZXR3ZWVuVGlja3MocmFuZ2UsIGhlaWdodCkgPCAxNDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBZGp1c3RlZEdyYXBoTGltaXRzID0gKGdyYXBoUHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIGRvbWFpbixcbiAgICByYW5nZSxcbiAgICBzaXplOiB7IHdpZHRoLCBoZWlnaHQgfSxcbiAgfSA9IGdyYXBoUHJvcHM7XG4gIGNvbnN0IGRvbWFpblRpY2tzRGlzdGFuY2UgPSBnZXREaXN0YW5jZUJldHdlZW5UaWNrcyhkb21haW4sIHdpZHRoKTtcbiAgY29uc3QgcmFuZ2VUaWNrc0Rpc3RhbmNlID0gZ2V0RGlzdGFuY2VCZXR3ZWVuVGlja3MocmFuZ2UsIGhlaWdodCk7XG5cbiAgLy8gMTUgaXMgdGhlIGRpc3RhbmNlIHJlcXVpcmVkIGZvciB0aGUgYXJyb3cgdG8gZXh0ZW5kIHRoZSBncmFwaFxuICBjb25zdCBkb21haW5QYWRkaW5nID0gZG9tYWluLnN0ZXAgLyAoZG9tYWluVGlja3NEaXN0YW5jZSAvIDE1KTtcbiAgY29uc3QgcmFuZ2VQYWRkaW5nID0gcmFuZ2Uuc3RlcCAvIChyYW5nZVRpY2tzRGlzdGFuY2UgLyAxNSk7XG5cbiAgcmV0dXJuIHtcbiAgICBkb21haW46IHtcbiAgICAgIG1pbjogZG9tYWluLm1pbiAtIGRvbWFpblBhZGRpbmcsXG4gICAgICBtYXg6IGRvbWFpbi5tYXggKyBkb21haW5QYWRkaW5nLFxuICAgIH0sXG4gICAgcmFuZ2U6IHtcbiAgICAgIG1pbjogcmFuZ2UubWluIC0gcmFuZ2VQYWRkaW5nLFxuICAgICAgbWF4OiByYW5nZS5tYXggKyByYW5nZVBhZGRpbmcsXG4gICAgfSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREaXN0YW5jZUJldHdlZW5Ud29Qb2ludHMgPSAoYSwgYikgPT4gTWF0aC5zcXJ0KChiLnggLSBhLngpICogKGIueCAtIGEueCkgKyAoYi55IC0gYS55KSAqIChiLnkgLSBhLnkpKTtcblxuY29uc3Qgc29ydFBvaW50cyA9IChhcnJheSkgPT4gKGFycmF5IHx8IFtdKS5zb3J0KChhLCBiKSA9PiBhLnggLSBiLnggfHwgYS55IC0gYi55KTtcblxuLy8gY2hlY2sgY29sbGluaWFyaXR5IG9mIDMgcG9pbnRzIChzb3VyY2U6IGh0dHBzOi8vd3d3LmdlZWtzZm9yZ2Vla3Mub3JnL3Byb2dyYW0tY2hlY2stdGhyZWUtcG9pbnRzLWNvbGxpbmVhci8pXG5jb25zdCBjaGVja0NvbGxpbmVhcml0eSA9IChhLCBiLCBjKSA9PiAoYS54IC0gYi54KSAqIChjLnkgLSBiLnkpID09PSAoYy54IC0gYi54KSAqIChhLnkgLSBiLnkpO1xuXG4vLyAyIGxpbmVzIGFyZSBvdmVybGFwcGluZyBpZiBhbGwgNCBwb2ludHMgYXJlIGNvbGxpbmVhclxuY29uc3QgaXNTYW1lTGluZSA9IChtYXJrQSwgbWFya0IpID0+XG4gIGNoZWNrQ29sbGluZWFyaXR5KG1hcmtBLmZyb20sIG1hcmtCLmZyb20sIG1hcmtCLnRvKSAmJiBjaGVja0NvbGxpbmVhcml0eShtYXJrQS50bywgbWFya0IuZnJvbSwgbWFya0IudG8pO1xuXG5jb25zdCBpc1NhbWVDaXJjbGUgPSAobWFya0EsIG1hcmtCKSA9PlxuICBlcXVhbFBvaW50cyhtYXJrQS5yb290LCBtYXJrQi5yb290KSAmJlxuICBnZXREaXN0YW5jZUJldHdlZW5Ud29Qb2ludHMobWFya0Iucm9vdCwgbWFya0IuZWRnZSkgPT09IGdldERpc3RhbmNlQmV0d2VlblR3b1BvaW50cyhtYXJrQS5yb290LCBtYXJrQS5lZGdlKTtcblxuZXhwb3J0IGNvbnN0IGlzRHVwbGljYXRlZE1hcmsgPSAobWFyaywgbWFya3MsIG9sZE1hcmspID0+IHtcbiAgY29uc3QgeyB0eXBlLCBidWlsZGluZyB9ID0gbWFyaztcblxuICBpZiAoYnVpbGRpbmcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBmaWx0ZXJlZE1hcmtzID0gKG1hcmtzIHx8IFtdKS5maWx0ZXIoKG0pID0+IG0udHlwZSA9PT0gdHlwZSAmJiAhbS5idWlsZGluZyk7XG4gIGNvbnN0IGluZGV4ID0gZmlsdGVyZWRNYXJrcy5maW5kSW5kZXgoKG0pID0+IGlzRXF1YWwobSwgb2xkTWFyaykpO1xuXG4gIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICBmaWx0ZXJlZE1hcmtzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICBjb25zdCBkdXBsaWNhdGVkID0gZmlsdGVyZWRNYXJrcy5maW5kKChtKSA9PiB7XG4gICAgaWYgKHR5cGUgPT09ICdjaXJjbGUnIHx8IHR5cGUgPT09ICdwYXJhYm9sYScgfHwgdHlwZSA9PT0gJ3NpbmUnIHx8IHR5cGUgPT09ICdhYnNvbHV0ZScgfHwgdHlwZSA9PT0gJ2V4cG9uZW50aWFsJykge1xuICAgICAgY29uc3QgeyByb290LCBlZGdlIH0gPSBtYXJrO1xuXG4gICAgICByZXR1cm4gKGVxdWFsUG9pbnRzKHJvb3QsIG0ucm9vdCkgJiYgZXF1YWxQb2ludHMoZWRnZSwgbS5lZGdlKSkgfHwgKHR5cGUgPT09ICdjaXJjbGUnICYmIGlzU2FtZUNpcmNsZShtLCBtYXJrKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnbGluZScgfHwgdHlwZSA9PT0gJ3JheScgfHwgdHlwZSA9PT0gJ3NlZ21lbnQnIHx8IHR5cGUgPT09ICd2ZWN0b3InKSB7XG4gICAgICBjb25zdCB7IGZyb20sIHRvIH0gPSBtYXJrO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICAoZXF1YWxQb2ludHMoZnJvbSwgbS5mcm9tKSAmJiBlcXVhbFBvaW50cyh0bywgbS50bykpIHx8XG4gICAgICAgIChlcXVhbFBvaW50cyhmcm9tLCBtLnRvKSAmJiBlcXVhbFBvaW50cyh0bywgbS5mcm9tKSkgfHxcbiAgICAgICAgKHR5cGUgPT09ICdsaW5lJyAmJiBpc1NhbWVMaW5lKG0sIG1hcmspKVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdwb2x5Z29uJykge1xuICAgICAgcmV0dXJuIGlzRXF1YWwoc29ydFBvaW50cyhjbG9uZURlZXAobWFyay5wb2ludHMpKSwgc29ydFBvaW50cyhjbG9uZURlZXAobS5wb2ludHMpKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAncG9pbnQnKSB7XG4gICAgICByZXR1cm4gZXF1YWxQb2ludHMobSwgbWFyayk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gISFk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QVFOLElBQUksR0FBV0csSUFBSSxDQUFuQkgsSUFBSTtRQUFFQyxJQUFJLEdBQUtFLElBQUksQ0FBYkYsSUFBSTtNQUVsQixPQUFRMUIsV0FBVyxDQUFDeUIsSUFBSSxFQUFFUyxDQUFDLENBQUNULElBQUksQ0FBQyxJQUFJekIsV0FBVyxDQUFDMEIsSUFBSSxFQUFFUSxDQUFDLENBQUNSLElBQUksQ0FBQyxJQUFNSyxJQUFJLEtBQUssUUFBUSxJQUFJUCxZQUFZLENBQUNVLENBQUMsRUFBRU4sSUFBSSxDQUFFO0lBQ2pILENBQUMsTUFBTSxJQUFJRyxJQUFJLEtBQUssTUFBTSxJQUFJQSxJQUFJLEtBQUssS0FBSyxJQUFJQSxJQUFJLEtBQUssU0FBUyxJQUFJQSxJQUFJLEtBQUssUUFBUSxFQUFFO01BQ3ZGLElBQVFwRCxJQUFJLEdBQVNpRCxJQUFJLENBQWpCakQsSUFBSTtRQUFFQyxFQUFFLEdBQUtnRCxJQUFJLENBQVhoRCxFQUFFO01BRWhCLE9BQ0dvQixXQUFXLENBQUNyQixJQUFJLEVBQUV1RCxDQUFDLENBQUN2RCxJQUFJLENBQUMsSUFBSXFCLFdBQVcsQ0FBQ3BCLEVBQUUsRUFBRXNELENBQUMsQ0FBQ3RELEVBQUUsQ0FBQyxJQUNsRG9CLFdBQVcsQ0FBQ3JCLElBQUksRUFBRXVELENBQUMsQ0FBQ3RELEVBQUUsQ0FBQyxJQUFJb0IsV0FBVyxDQUFDcEIsRUFBRSxFQUFFc0QsQ0FBQyxDQUFDdkQsSUFBSSxDQUFFLElBQ25Eb0QsSUFBSSxLQUFLLE1BQU0sSUFBSVYsVUFBVSxDQUFDYSxDQUFDLEVBQUVOLElBQUksQ0FBRTtJQUU1QyxDQUFDLE1BQU0sSUFBSUcsSUFBSSxLQUFLLFNBQVMsRUFBRTtNQUM3QixPQUFPLElBQUE3QyxtQkFBTyxFQUFDK0IsVUFBVSxDQUFDLElBQUExQixxQkFBUyxFQUFDcUMsSUFBSSxDQUFDL0QsTUFBTSxDQUFDLENBQUMsRUFBRW9ELFVBQVUsQ0FBQyxJQUFBMUIscUJBQVMsRUFBQzJDLENBQUMsQ0FBQ3JFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQyxNQUFNLElBQUlrRSxJQUFJLEtBQUssT0FBTyxFQUFFO01BQzNCLE9BQU8vQixXQUFXLENBQUNrQyxDQUFDLEVBQUVOLElBQUksQ0FBQztJQUM3QjtFQUNGLENBQUMsQ0FBQztFQUVGLE9BQU8sQ0FBQyxDQUFDVSxVQUFVO0FBQ3JCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
package/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.js"],"names":["tickCount","utils","bounds","point","getAngleDeg","arrowDimensions","getTickValues","prop","tickValues","tickVal","min","indexOf","push","Math","round","step","max","filter","tV","countWords","label","words","split","length","findLongestWord","longestWord","replace","sort","a","b","amountToIncreaseWidth","polygonToArea","points","h","area","left","x","top","y","bottom","right","reduce","p","lineToArea","from","to","pointsToArea","isDomainRangeEqual","graphProps","nextGraphProps","domain","range","getRightestPoints","sortedPoints","getMiddleOfTwoPoints","roundNumber","number","parseFloat","toFixed","sameAxes","p1","p2","equalPoints","getDistanceBetweenTicks","axis","size","nbOfTicks","thinnerShapesNeeded","width","height","getAdjustedGraphLimits","domainTicksDistance","rangeTicksDistance","domainPadding","rangePadding","getDistanceBetweenTwoPoints","sqrt","sortPoints","array","checkCollinearity","c","isSameLine","markA","markB","isSameCircle","root","edge","isDuplicatedMark","mark","marks","oldMark","type","building","filteredMarks","m","index","findIndex","splice","duplicated","find"],"mappings":"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","sourcesContent":["import head from 'lodash/head';\nimport tail from 'lodash/tail';\nimport { utils } from '@pie-lib/plot';\nimport invariant from 'invariant';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport cloneDeep from 'lodash/cloneDeep';\n\nexport const tickCount = utils.tickCount;\nexport const bounds = utils.bounds;\nexport const point = utils.point;\n\n//TODO: This can be removed?\nexport const getAngleDeg = () => 0;\n//TODO: This can be removed?\nexport const arrowDimensions = () => 0;\n\nexport const getTickValues = (prop) => {\n const tickValues = [];\n let tickVal = 0;\n\n while (tickVal >= prop.min && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal - prop.step) * 10000) / 10000;\n }\n\n tickVal = Math.round(prop.step * 10000) / 10000;\n\n while (tickVal <= prop.max && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal + prop.step) * 10000) / 10000;\n }\n\n // return only ticks that are inside the min-max interval\n if (tickValues) {\n return tickValues.filter((tV) => tV >= prop.min && tV <= prop.max);\n }\n\n return [];\n};\n\nexport const countWords = (label) => {\n if (label == null || isEmpty(label)) {\n return 1;\n }\n\n const words = label.split(' ');\n return words.length;\n};\n\n// findLongestWord is also used in plot\nexport const findLongestWord = (label) => {\n let longestWord = (label || '')\n .replace(/<[^>]+>/g, '')\n .split(' ')\n .sort((a, b) => b.length - a.length);\n\n return longestWord[0].length;\n};\n\n// amountToIncreaseWidth is also used in plot\nexport const amountToIncreaseWidth = (longestWord) => {\n if (!longestWord) {\n return 0;\n }\n\n return longestWord * 10;\n};\n\nexport const polygonToArea = (points) => {\n const h = head(points);\n const area = {\n left: h.x,\n top: h.y,\n bottom: h.y,\n right: h.x,\n };\n return tail(points).reduce((a, p) => {\n a.left = Math.min(a.left, p.x);\n a.top = Math.max(a.top, p.y);\n a.bottom = Math.min(a.bottom, p.y);\n a.right = Math.max(a.right, p.x);\n return a;\n }, area);\n};\n\nexport const lineToArea = (from, to) => pointsToArea(from, to);\n\nexport const pointsToArea = (a, b) => {\n invariant(!!a && !!b, 'a or b is undefined');\n const left = Math.min(a.x, b.x);\n const top = Math.max(a.y, b.y);\n const bottom = Math.min(a.y, b.y);\n const right = Math.max(a.x, b.x);\n return { left, top, bottom, right };\n};\n\nexport const isDomainRangeEqual = (graphProps, nextGraphProps) => {\n return isEqual(graphProps.domain, nextGraphProps.domain) && isEqual(graphProps.range, nextGraphProps.range);\n};\n\nexport const getRightestPoints = (points) => {\n const sortedPoints = cloneDeep(points);\n sortedPoints.sort((a, b) => b.x - a.x);\n\n return { a: sortedPoints[0], b: sortedPoints[1] };\n};\n\nexport const getMiddleOfTwoPoints = (a, b) => ({\n x: (a.x + b.x) / 2,\n y: (a.y + b.y) / 2,\n});\n\nexport const roundNumber = (number) => parseFloat(number.toFixed(4));\n\nexport const sameAxes = (p1, p2) =>\n p1 && p2 && (roundNumber(p1.x) === roundNumber(p2.x) || roundNumber(p1.y) === roundNumber(p2.y));\n\nexport const equalPoints = (p1, p2) =>\n p1 &&\n p2 &&\n isEqual(\n {\n x: roundNumber(p1.x),\n y: roundNumber(p1.y),\n },\n {\n x: roundNumber(p2.x),\n y: roundNumber(p2.y),\n },\n );\n\nconst getDistanceBetweenTicks = (axis, size) => {\n const { min, max, step } = axis;\n const nbOfTicks = (max - min) / step;\n\n return size / nbOfTicks;\n};\n\nexport const thinnerShapesNeeded = (graphProps) => {\n const {\n domain,\n range,\n size: { width, height },\n } = graphProps;\n\n // 14 is the default width of a point\n return getDistanceBetweenTicks(domain, width) < 14 || getDistanceBetweenTicks(range, height) < 14;\n};\n\nexport const getAdjustedGraphLimits = (graphProps) => {\n const {\n domain,\n range,\n size: { width, height },\n } = graphProps;\n const domainTicksDistance = getDistanceBetweenTicks(domain, width);\n const rangeTicksDistance = getDistanceBetweenTicks(range, height);\n\n // 15 is the distance required for the arrow to extend the graph\n const domainPadding = domain.step / (domainTicksDistance / 15);\n const rangePadding = range.step / (rangeTicksDistance / 15);\n\n return {\n domain: {\n min: domain.min - domainPadding,\n max: domain.max + domainPadding,\n },\n range: {\n min: range.min - rangePadding,\n max: range.max + rangePadding,\n },\n };\n};\n\nexport const getDistanceBetweenTwoPoints = (a, b) => Math.sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y));\n\nconst sortPoints = (array) => (array || []).sort((a, b) => a.x - b.x || a.y - b.y);\n\n// check colliniarity of 3 points (source: https://www.geeksforgeeks.org/program-check-three-points-collinear/)\nconst checkCollinearity = (a, b, c) => (a.x - b.x) * (c.y - b.y) === (c.x - b.x) * (a.y - b.y);\n\n// 2 lines are overlapping if all 4 points are collinear\nconst isSameLine = (markA, markB) =>\n checkCollinearity(markA.from, markB.from, markB.to) && checkCollinearity(markA.to, markB.from, markB.to);\n\nconst isSameCircle = (markA, markB) =>\n equalPoints(markA.root, markB.root) &&\n getDistanceBetweenTwoPoints(markB.root, markB.edge) === getDistanceBetweenTwoPoints(markA.root, markA.edge);\n\nexport const isDuplicatedMark = (mark, marks, oldMark) => {\n const { type, building } = mark;\n\n if (building) {\n return false;\n }\n\n const filteredMarks = (marks || []).filter((m) => m.type === type && !m.building);\n const index = filteredMarks.findIndex((m) => isEqual(m, oldMark));\n\n if (index !== -1) {\n filteredMarks.splice(index, 1);\n }\n\n const duplicated = filteredMarks.find((m) => {\n if (type === 'circle' || type === 'parabola' || type === 'sine' || type === 'absolute' || type === 'exponential') {\n const { root, edge } = mark;\n\n return (equalPoints(root, m.root) && equalPoints(edge, m.edge)) || (type === 'circle' && isSameCircle(m, mark));\n } else if (type === 'line' || type === 'ray' || type === 'segment' || type === 'vector') {\n const { from, to } = mark;\n\n return (\n (equalPoints(from, m.from) && equalPoints(to, m.to)) ||\n (equalPoints(from, m.to) && equalPoints(to, m.from)) ||\n (type === 'line' && isSameLine(m, mark))\n );\n } else if (type === 'polygon') {\n return isEqual(sortPoints(cloneDeep(mark.points)), sortPoints(cloneDeep(m.points)));\n } else if (type === 'point') {\n return equalPoints(m, mark);\n }\n });\n\n return !!duplicated;\n};\n"],"file":"utils.js"}
|
|
1
|
+
{"version":3,"file":"utils.js","names":["_head","_interopRequireDefault","require","_tail","_plot","_invariant","_isEqual","_isEmpty","_cloneDeep","tickCount","exports","utils","bounds","point","getAngleDeg","arrowDimensions","getTickValues","prop","tickValues","tickVal","min","indexOf","push","Math","round","step","max","filter","tV","countWords","label","isEmpty","words","split","length","findLongestWord","longestWord","replace","sort","a","b","amountToIncreaseWidth","polygonToArea","points","h","head","area","left","x","top","y","bottom","right","tail","reduce","p","lineToArea","from","to","pointsToArea","invariant","isDomainRangeEqual","graphProps","nextGraphProps","isEqual","domain","range","getRightestPoints","sortedPoints","cloneDeep","getMiddleOfTwoPoints","roundNumber","number","parseFloat","toFixed","sameAxes","p1","p2","equalPoints","getDistanceBetweenTicks","axis","size","nbOfTicks","thinnerShapesNeeded","_graphProps$size","width","height","getAdjustedGraphLimits","_graphProps$size2","domainTicksDistance","rangeTicksDistance","domainPadding","rangePadding","getDistanceBetweenTwoPoints","sqrt","sortPoints","array","checkCollinearity","c","isSameLine","markA","markB","isSameCircle","root","edge","isDuplicatedMark","mark","marks","oldMark","type","building","filteredMarks","m","index","findIndex","splice","duplicated","find"],"sources":["../src/utils.js"],"sourcesContent":["import head from 'lodash/head';\nimport tail from 'lodash/tail';\nimport { utils } from '@pie-lib/plot';\nimport invariant from 'invariant';\nimport isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\nimport cloneDeep from 'lodash/cloneDeep';\n\nexport const tickCount = utils.tickCount;\nexport const bounds = utils.bounds;\nexport const point = utils.point;\n\n//TODO: This can be removed?\nexport const getAngleDeg = () => 0;\n//TODO: This can be removed?\nexport const arrowDimensions = () => 0;\n\nexport const getTickValues = (prop) => {\n const tickValues = [];\n let tickVal = 0;\n\n while (tickVal >= prop.min && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal - prop.step) * 10000) / 10000;\n }\n\n tickVal = Math.round(prop.step * 10000) / 10000;\n\n while (tickVal <= prop.max && tickValues.indexOf(tickVal) < 0) {\n tickValues.push(tickVal);\n tickVal = Math.round((tickVal + prop.step) * 10000) / 10000;\n }\n\n // return only ticks that are inside the min-max interval\n if (tickValues) {\n return tickValues.filter((tV) => tV >= prop.min && tV <= prop.max);\n }\n\n return [];\n};\n\nexport const countWords = (label) => {\n if (label == null || isEmpty(label)) {\n return 1;\n }\n\n const words = label.split(' ');\n return words.length;\n};\n\n// findLongestWord is also used in plot\nexport const findLongestWord = (label) => {\n let longestWord = (label || '')\n .replace(/<[^>]+>/g, '')\n .split(' ')\n .sort((a, b) => b.length - a.length);\n\n return longestWord[0].length;\n};\n\n// amountToIncreaseWidth is also used in plot\nexport const amountToIncreaseWidth = (longestWord) => {\n if (!longestWord) {\n return 0;\n }\n\n return longestWord * 10;\n};\n\nexport const polygonToArea = (points) => {\n const h = head(points);\n const area = {\n left: h.x,\n top: h.y,\n bottom: h.y,\n right: h.x,\n };\n return tail(points).reduce((a, p) => {\n a.left = Math.min(a.left, p.x);\n a.top = Math.max(a.top, p.y);\n a.bottom = Math.min(a.bottom, p.y);\n a.right = Math.max(a.right, p.x);\n return a;\n }, area);\n};\n\nexport const lineToArea = (from, to) => pointsToArea(from, to);\n\nexport const pointsToArea = (a, b) => {\n invariant(!!a && !!b, 'a or b is undefined');\n const left = Math.min(a.x, b.x);\n const top = Math.max(a.y, b.y);\n const bottom = Math.min(a.y, b.y);\n const right = Math.max(a.x, b.x);\n return { left, top, bottom, right };\n};\n\nexport const isDomainRangeEqual = (graphProps, nextGraphProps) => {\n return isEqual(graphProps.domain, nextGraphProps.domain) && isEqual(graphProps.range, nextGraphProps.range);\n};\n\nexport const getRightestPoints = (points) => {\n const sortedPoints = cloneDeep(points);\n sortedPoints.sort((a, b) => b.x - a.x);\n\n return { a: sortedPoints[0], b: sortedPoints[1] };\n};\n\nexport const getMiddleOfTwoPoints = (a, b) => ({\n x: (a.x + b.x) / 2,\n y: (a.y + b.y) / 2,\n});\n\nexport const roundNumber = (number) => parseFloat(number.toFixed(4));\n\nexport const sameAxes = (p1, p2) =>\n p1 && p2 && (roundNumber(p1.x) === roundNumber(p2.x) || roundNumber(p1.y) === roundNumber(p2.y));\n\nexport const equalPoints = (p1, p2) =>\n p1 &&\n p2 &&\n isEqual(\n {\n x: roundNumber(p1.x),\n y: roundNumber(p1.y),\n },\n {\n x: roundNumber(p2.x),\n y: roundNumber(p2.y),\n },\n );\n\nconst getDistanceBetweenTicks = (axis, size) => {\n const { min, max, step } = axis;\n const nbOfTicks = (max - min) / step;\n\n return size / nbOfTicks;\n};\n\nexport const thinnerShapesNeeded = (graphProps) => {\n const {\n domain,\n range,\n size: { width, height },\n } = graphProps;\n\n // 14 is the default width of a point\n return getDistanceBetweenTicks(domain, width) < 14 || getDistanceBetweenTicks(range, height) < 14;\n};\n\nexport const getAdjustedGraphLimits = (graphProps) => {\n const {\n domain,\n range,\n size: { width, height },\n } = graphProps;\n const domainTicksDistance = getDistanceBetweenTicks(domain, width);\n const rangeTicksDistance = getDistanceBetweenTicks(range, height);\n\n // 15 is the distance required for the arrow to extend the graph\n const domainPadding = domain.step / (domainTicksDistance / 15);\n const rangePadding = range.step / (rangeTicksDistance / 15);\n\n return {\n domain: {\n min: domain.min - domainPadding,\n max: domain.max + domainPadding,\n },\n range: {\n min: range.min - rangePadding,\n max: range.max + rangePadding,\n },\n };\n};\n\nexport const getDistanceBetweenTwoPoints = (a, b) => Math.sqrt((b.x - a.x) * (b.x - a.x) + (b.y - a.y) * (b.y - a.y));\n\nconst sortPoints = (array) => (array || []).sort((a, b) => a.x - b.x || a.y - b.y);\n\n// check colliniarity of 3 points (source: https://www.geeksforgeeks.org/program-check-three-points-collinear/)\nconst checkCollinearity = (a, b, c) => (a.x - b.x) * (c.y - b.y) === (c.x - b.x) * (a.y - b.y);\n\n// 2 lines are overlapping if all 4 points are collinear\nconst isSameLine = (markA, markB) =>\n checkCollinearity(markA.from, markB.from, markB.to) && checkCollinearity(markA.to, markB.from, markB.to);\n\nconst isSameCircle = (markA, markB) =>\n equalPoints(markA.root, markB.root) &&\n getDistanceBetweenTwoPoints(markB.root, markB.edge) === getDistanceBetweenTwoPoints(markA.root, markA.edge);\n\nexport const isDuplicatedMark = (mark, marks, oldMark) => {\n const { type, building } = mark;\n\n if (building) {\n return false;\n }\n\n const filteredMarks = (marks || []).filter((m) => m.type === type && !m.building);\n const index = filteredMarks.findIndex((m) => isEqual(m, oldMark));\n\n if (index !== -1) {\n filteredMarks.splice(index, 1);\n }\n\n const duplicated = filteredMarks.find((m) => {\n if (type === 'circle' || type === 'parabola' || type === 'sine' || type === 'absolute' || type === 'exponential') {\n const { root, edge } = mark;\n\n return (equalPoints(root, m.root) && equalPoints(edge, m.edge)) || (type === 'circle' && isSameCircle(m, mark));\n } else if (type === 'line' || type === 'ray' || type === 'segment' || type === 'vector') {\n const { from, to } = mark;\n\n return (\n (equalPoints(from, m.from) && equalPoints(to, m.to)) ||\n (equalPoints(from, m.to) && equalPoints(to, m.from)) ||\n (type === 'line' && isSameLine(m, mark))\n );\n } else if (type === 'polygon') {\n return isEqual(sortPoints(cloneDeep(mark.points)), sortPoints(cloneDeep(m.points)));\n } else if (type === 'point') {\n return equalPoints(m, mark);\n }\n });\n\n return !!duplicated;\n};\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "2.34.
|
|
6
|
+
"version": "2.34.4-next.0",
|
|
7
7
|
"description": "Graphing components",
|
|
8
8
|
"keywords": [
|
|
9
9
|
"react",
|
|
@@ -16,22 +16,26 @@
|
|
|
16
16
|
"author": "",
|
|
17
17
|
"license": "ISC",
|
|
18
18
|
"dependencies": {
|
|
19
|
+
"@dnd-kit/sortable": "8.0.0",
|
|
20
|
+
"@emotion/react": "^11.14.0",
|
|
21
|
+
"@emotion/style": "^0.8.0",
|
|
19
22
|
"@mapbox/point-geometry": "^0.1.0",
|
|
20
|
-
"@material
|
|
21
|
-
"@material
|
|
22
|
-
"@pie-lib/drag": "
|
|
23
|
-
"@pie-lib/editable-html": "
|
|
24
|
-
"@pie-lib/graphing-utils": "
|
|
25
|
-
"@pie-lib/plot": "
|
|
26
|
-
"@pie-lib/render-ui": "
|
|
27
|
-
"@pie-lib/translator": "
|
|
28
|
-
"@
|
|
29
|
-
"@
|
|
30
|
-
"@
|
|
31
|
-
"@
|
|
32
|
-
"@
|
|
33
|
-
"@
|
|
34
|
-
"@
|
|
23
|
+
"@mui/icons-material": "^7.3.4",
|
|
24
|
+
"@mui/material": "^7.3.4",
|
|
25
|
+
"@pie-lib/drag": "2.22.4-next.0",
|
|
26
|
+
"@pie-lib/editable-html": "11.21.4-next.0",
|
|
27
|
+
"@pie-lib/graphing-utils": "1.21.3-next.0",
|
|
28
|
+
"@pie-lib/plot": "2.27.4-next.0",
|
|
29
|
+
"@pie-lib/render-ui": "4.35.4-next.0",
|
|
30
|
+
"@pie-lib/translator": "2.23.3-next.0",
|
|
31
|
+
"@visx/axis": "^3.0.0",
|
|
32
|
+
"@visx/clip-path": "^3.0.0",
|
|
33
|
+
"@visx/curve": "^3.0.0",
|
|
34
|
+
"@visx/event": "^3.0.0",
|
|
35
|
+
"@visx/grid": "^3.0.0",
|
|
36
|
+
"@visx/group": "^3.0.0",
|
|
37
|
+
"@visx/point": "^3.0.0",
|
|
38
|
+
"@visx/shape": "^3.0.0",
|
|
35
39
|
"classnames": "^2.2.6",
|
|
36
40
|
"d3-scale": "^2.1.2",
|
|
37
41
|
"d3-selection": "^1.3.2",
|
|
@@ -39,8 +43,8 @@
|
|
|
39
43
|
"invariant": "^2.2.4",
|
|
40
44
|
"lodash": "^4.17.11",
|
|
41
45
|
"prop-types": "^15.7.2",
|
|
42
|
-
"react": "^
|
|
43
|
-
"react-dom": "^
|
|
46
|
+
"react": "^18.2.0",
|
|
47
|
+
"react-dom": "^18.2.0",
|
|
44
48
|
"react-draggable": "^3.3.0",
|
|
45
49
|
"react-input-autosize": "^2.2.1",
|
|
46
50
|
"react-redux": "^6.0.0",
|
|
@@ -48,16 +52,8 @@
|
|
|
48
52
|
"redux-undo": "beta"
|
|
49
53
|
},
|
|
50
54
|
"peerDependencies": {
|
|
51
|
-
"react": "^
|
|
55
|
+
"react": "^18.2.0"
|
|
52
56
|
},
|
|
53
|
-
"gitHead": "
|
|
54
|
-
"scripts": {}
|
|
55
|
-
"exports": {
|
|
56
|
-
".": {
|
|
57
|
-
"require": "./lib/index.js",
|
|
58
|
-
"import": "./src/index.js",
|
|
59
|
-
"default": "./lib/index.js"
|
|
60
|
-
},
|
|
61
|
-
"./esm": "./esm/index.js"
|
|
62
|
-
}
|
|
57
|
+
"gitHead": "928c3db234ae564948a0038996edd2c527c02902",
|
|
58
|
+
"scripts": {}
|
|
63
59
|
}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { render } from '@pie-lib/test-utils';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
|
|
4
4
|
import { xy } from './utils';
|
|
5
5
|
|
|
6
|
+
// Mock DragProvider to avoid @dnd-kit React version conflicts
|
|
7
|
+
jest.mock('@pie-lib/drag', () => ({
|
|
8
|
+
DragProvider: ({ children }) => <div data-testid="drag-provider">{children}</div>,
|
|
9
|
+
}));
|
|
10
|
+
|
|
6
11
|
import {
|
|
7
12
|
GraphWithControls,
|
|
8
13
|
setToolbarAvailability,
|
|
@@ -26,11 +31,10 @@ const line = {
|
|
|
26
31
|
from: { x: 0, y: 0 },
|
|
27
32
|
to: { x: 1, y: 1 },
|
|
28
33
|
label: 'Line',
|
|
29
|
-
building: true,
|
|
30
34
|
};
|
|
31
35
|
|
|
32
36
|
const circle = {
|
|
33
|
-
type: '
|
|
37
|
+
type: 'circle',
|
|
34
38
|
edge: { x: 0, y: 0 },
|
|
35
39
|
root: { x: 2, y: 2 },
|
|
36
40
|
};
|
|
@@ -111,13 +115,15 @@ describe('filterByVisibleToolTypes', () => {
|
|
|
111
115
|
});
|
|
112
116
|
|
|
113
117
|
describe('GraphWithControls', () => {
|
|
114
|
-
let w;
|
|
115
118
|
let onChangeMarks = jest.fn();
|
|
116
119
|
|
|
120
|
+
beforeEach(() => {
|
|
121
|
+
onChangeMarks.mockClear();
|
|
122
|
+
});
|
|
123
|
+
|
|
117
124
|
const defaultProps = () => ({
|
|
118
125
|
axesSettings: { includeArrows: true },
|
|
119
126
|
backgroundMarks: [point, line, circle],
|
|
120
|
-
classes: {},
|
|
121
127
|
className: '',
|
|
122
128
|
coordinatesOnHover: false,
|
|
123
129
|
domain: { min: 0, max: 10, step: 1 },
|
|
@@ -129,19 +135,30 @@ describe('GraphWithControls', () => {
|
|
|
129
135
|
size: { width: 500, height: 500 },
|
|
130
136
|
title: 'Title',
|
|
131
137
|
toolbarTools: allTools,
|
|
138
|
+
language: 'en',
|
|
132
139
|
});
|
|
133
140
|
const initialProps = defaultProps();
|
|
134
141
|
|
|
135
|
-
const
|
|
142
|
+
const renderComponent = (extras) => {
|
|
136
143
|
const props = { ...initialProps, ...extras };
|
|
137
144
|
|
|
138
|
-
return
|
|
145
|
+
return render(<GraphWithControls {...props} />);
|
|
139
146
|
};
|
|
140
147
|
|
|
141
|
-
describe('
|
|
142
|
-
it('renders', () => {
|
|
143
|
-
|
|
144
|
-
expect(
|
|
148
|
+
describe('rendering', () => {
|
|
149
|
+
it('renders without crashing', () => {
|
|
150
|
+
const { container } = renderComponent();
|
|
151
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
it('renders ToolMenu with toolbar tools', () => {
|
|
155
|
+
const { container } = renderComponent({ toolbarTools: ['point', 'line'] });
|
|
156
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
it('renders Graph component', () => {
|
|
160
|
+
const { container } = renderComponent();
|
|
161
|
+
expect(container.querySelector('svg')).toBeInTheDocument();
|
|
145
162
|
});
|
|
146
163
|
});
|
|
147
164
|
});
|