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