@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.
Files changed (142) hide show
  1. package/CHANGELOG.md +7 -78
  2. package/esm/package.json +3 -0
  3. package/lib/axis/arrow.js +19 -55
  4. package/lib/axis/arrow.js.map +1 -1
  5. package/lib/axis/axes.js +103 -193
  6. package/lib/axis/axes.js.map +1 -1
  7. package/lib/axis/index.js +1 -6
  8. package/lib/axis/index.js.map +1 -1
  9. package/lib/bg.js +21 -49
  10. package/lib/bg.js.map +1 -1
  11. package/lib/container/actions.js +2 -8
  12. package/lib/container/actions.js.map +1 -1
  13. package/lib/container/index.js +14 -60
  14. package/lib/container/index.js.map +1 -1
  15. package/lib/container/marks.js +1 -6
  16. package/lib/container/marks.js.map +1 -1
  17. package/lib/container/middleware.js +2 -8
  18. package/lib/container/middleware.js.map +1 -1
  19. package/lib/container/reducer.js +1 -8
  20. package/lib/container/reducer.js.map +1 -1
  21. package/lib/coordinates-label.js +23 -55
  22. package/lib/coordinates-label.js.map +1 -1
  23. package/lib/graph-with-controls.js +129 -203
  24. package/lib/graph-with-controls.js.map +1 -1
  25. package/lib/graph.js +61 -126
  26. package/lib/graph.js.map +1 -1
  27. package/lib/grid-setup.js +168 -224
  28. package/lib/grid-setup.js.map +1 -1
  29. package/lib/grid.js +29 -74
  30. package/lib/grid.js.map +1 -1
  31. package/lib/index.js +1 -12
  32. package/lib/index.js.map +1 -1
  33. package/lib/labels.js +84 -184
  34. package/lib/labels.js.map +1 -1
  35. package/lib/mark-label.js +39 -88
  36. package/lib/mark-label.js.map +1 -1
  37. package/lib/toggle-bar.js +155 -243
  38. package/lib/toggle-bar.js.map +1 -1
  39. package/lib/tool-menu.js +93 -200
  40. package/lib/tool-menu.js.map +1 -1
  41. package/lib/tools/index.js +2 -7
  42. package/lib/tools/index.js.map +1 -1
  43. package/lib/tools/line/component.js +48 -62
  44. package/lib/tools/line/component.js.map +1 -1
  45. package/lib/tools/line/index.js +1 -6
  46. package/lib/tools/line/index.js.map +1 -1
  47. package/lib/tools/polygon/component.js +76 -173
  48. package/lib/tools/polygon/component.js.map +1 -1
  49. package/lib/tools/polygon/index.js +6 -23
  50. package/lib/tools/polygon/index.js.map +1 -1
  51. package/lib/tools/polygon/line.js +48 -85
  52. package/lib/tools/polygon/line.js.map +1 -1
  53. package/lib/tools/polygon/polygon.js +62 -102
  54. package/lib/tools/polygon/polygon.js.map +1 -1
  55. package/lib/tools/shared/arrow-head.js +7 -20
  56. package/lib/tools/shared/arrow-head.js.map +1 -1
  57. package/lib/tools/shared/line/index.js +89 -185
  58. package/lib/tools/shared/line/index.js.map +1 -1
  59. package/lib/tools/shared/line/line-path.js +71 -95
  60. package/lib/tools/shared/line/line-path.js.map +1 -1
  61. package/lib/tools/shared/line/with-root-edge.js +22 -56
  62. package/lib/tools/shared/line/with-root-edge.js.map +1 -1
  63. package/lib/tools/shared/point/arrow-point.js +18 -45
  64. package/lib/tools/shared/point/arrow-point.js.map +1 -1
  65. package/lib/tools/shared/point/arrow.js +16 -42
  66. package/lib/tools/shared/point/arrow.js.map +1 -1
  67. package/lib/tools/shared/point/base-point.js +44 -58
  68. package/lib/tools/shared/point/base-point.js.map +1 -1
  69. package/lib/tools/shared/point/index.js +38 -52
  70. package/lib/tools/shared/point/index.js.map +1 -1
  71. package/lib/tools/shared/styles.js +8 -31
  72. package/lib/tools/shared/styles.js.map +1 -1
  73. package/lib/tools/shared/types.js +1 -5
  74. package/lib/tools/shared/types.js.map +1 -1
  75. package/lib/undo-redo.js +27 -67
  76. package/lib/undo-redo.js.map +1 -1
  77. package/lib/use-debounce.js +4 -11
  78. package/lib/use-debounce.js.map +1 -1
  79. package/lib/utils.js +56 -131
  80. package/lib/utils.js.map +1 -1
  81. package/package.json +34 -23
  82. package/src/__tests__/graph-with-controls.test.jsx +23 -10
  83. package/src/__tests__/graph.test.jsx +36 -171
  84. package/src/__tests__/grid.test.jsx +9 -6
  85. package/src/__tests__/labels.test.jsx +11 -8
  86. package/src/__tests__/mark-label.test.jsx +15 -17
  87. package/src/__tests__/toggle-bar.test.jsx +46 -17
  88. package/src/__tests__/tool-menu.test.jsx +12 -8
  89. package/src/__tests__/undo-redo.test.jsx +9 -8
  90. package/src/__tests__/utils.js +3 -0
  91. package/src/axis/__tests__/arrow.test.jsx +21 -17
  92. package/src/axis/__tests__/axes.test.jsx +117 -155
  93. package/src/axis/arrow.jsx +7 -12
  94. package/src/axis/axes.jsx +41 -51
  95. package/src/coordinates-label.jsx +13 -18
  96. package/src/graph-with-controls.jsx +90 -93
  97. package/src/grid-setup.jsx +210 -206
  98. package/src/grid.jsx +2 -4
  99. package/src/labels.jsx +83 -124
  100. package/src/mark-label.jsx +14 -25
  101. package/src/toggle-bar.jsx +135 -163
  102. package/src/tool-menu.jsx +136 -195
  103. package/src/tools/line/__tests__/component.test.jsx +7 -7
  104. package/src/tools/line/component.jsx +29 -29
  105. package/src/tools/polygon/__tests__/component.test.jsx +13 -152
  106. package/src/tools/polygon/__tests__/line.test.jsx +7 -9
  107. package/src/tools/polygon/__tests__/polygon.test.jsx +8 -8
  108. package/src/tools/polygon/component.jsx +2 -4
  109. package/src/tools/polygon/line.jsx +26 -24
  110. package/src/tools/polygon/polygon.jsx +35 -40
  111. package/src/tools/shared/__tests__/arrow-head.test.jsx +16 -17
  112. package/src/tools/shared/line/__tests__/index.test.jsx +26 -163
  113. package/src/tools/shared/line/__tests__/line-path.test.jsx +9 -9
  114. package/src/tools/shared/line/__tests__/with-root-edge.test.jsx +14 -24
  115. package/src/tools/shared/line/index.jsx +3 -3
  116. package/src/tools/shared/line/line-path.jsx +51 -48
  117. package/src/tools/shared/line/with-root-edge.jsx +1 -1
  118. package/src/tools/shared/point/__tests__/arrow-point.test.jsx +15 -11
  119. package/src/tools/shared/point/__tests__/base-point.test.jsx +14 -11
  120. package/src/tools/shared/point/base-point.jsx +33 -6
  121. package/src/tools/shared/point/index.jsx +30 -32
  122. package/src/undo-redo.jsx +16 -24
  123. package/src/__tests__/__snapshots__/graph-with-controls.test.jsx.snap +0 -114
  124. package/src/__tests__/__snapshots__/graph.test.jsx.snap +0 -213
  125. package/src/__tests__/__snapshots__/grid.test.jsx.snap +0 -54
  126. package/src/__tests__/__snapshots__/labels.test.jsx.snap +0 -30
  127. package/src/__tests__/__snapshots__/mark-label.test.jsx.snap +0 -37
  128. package/src/__tests__/__snapshots__/toggle-bar.test.jsx.snap +0 -7
  129. package/src/__tests__/__snapshots__/tool-menu.test.jsx.snap +0 -35
  130. package/src/__tests__/__snapshots__/undo-redo.test.jsx.snap +0 -15
  131. package/src/axis/__tests__/__snapshots__/arrow.test.jsx.snap +0 -33
  132. package/src/axis/__tests__/__snapshots__/axes.test.jsx.snap +0 -122
  133. package/src/tools/line/__tests__/__snapshots__/component.test.jsx.snap +0 -20
  134. package/src/tools/polygon/__tests__/__snapshots__/component.test.jsx.snap +0 -94
  135. package/src/tools/polygon/__tests__/__snapshots__/line.test.jsx.snap +0 -44
  136. package/src/tools/polygon/__tests__/__snapshots__/polygon.test.jsx.snap +0 -53
  137. package/src/tools/shared/__tests__/__snapshots__/arrow-head.test.jsx.snap +0 -32
  138. package/src/tools/shared/line/__tests__/__snapshots__/index.test.jsx.snap +0 -360
  139. package/src/tools/shared/line/__tests__/__snapshots__/line-path.test.jsx.snap +0 -57
  140. package/src/tools/shared/line/__tests__/__snapshots__/with-root-edge.test.jsx.snap +0 -63
  141. package/src/tools/shared/point/__tests__/__snapshots__/arrow-point.test.jsx.snap +0 -55
  142. 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
- var bounds = _plot.utils.bounds;
25
- exports.bounds = bounds;
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
- }; //TODO: This can be removed?
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
- } // return only ticks that are inside the min-max interval
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
- }; // findLongestWord is also used in plot
79
-
80
-
81
- exports.countWords = countWords;
53
+ };
82
54
 
83
- var findLongestWord = function findLongestWord(label) {
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
- }; // amountToIncreaseWidth is also used in plot
89
-
90
-
91
- exports.findLongestWord = findLongestWord;
61
+ };
92
62
 
93
- var amountToIncreaseWidth = function amountToIncreaseWidth(longestWord) {
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
- max = axis.max,
193
- step = axis.step;
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
- range = graphProps.range,
201
- _graphProps$size = graphProps.size,
202
- width = _graphProps$size.width,
203
- height = _graphProps$size.height; // 14 is the default width of a point
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
- range = graphProps.range,
213
- _graphProps$size2 = graphProps.size,
214
- width = _graphProps$size2.width,
215
- height = _graphProps$size2.height;
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); // 15 is the distance required for the arrow to extend the graph
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
- }; // check colliniarity of 3 points (source: https://www.geeksforgeeks.org/program-check-three-points-collinear/)
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
- }; // 2 lines are overlapping if all 4 points are collinear
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
- building = mark.building;
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
- to = mark.to;
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
- } // Iterate through each object in the arrays
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]; // Check if the objects have the same number of properties
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
- } // Iterate through each property in the objects
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
- } // If all objects are equal, the arrays are the same
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.0+f60e2119",
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-ui/core": "^3.8.3",
21
- "@material-ui/icons": "^3.0.2",
22
- "@pie-lib/drag": "^2.22.3-next.0+f60e2119",
23
- "@pie-lib/editable-html": "^11.21.3-next.0+f60e2119",
24
- "@pie-lib/graphing-utils": "^1.21.1",
25
- "@pie-lib/plot": "^2.27.3-next.0+f60e2119",
26
- "@pie-lib/render-ui": "^4.35.3-next.0+f60e2119",
27
- "@pie-lib/tools": "^0.29.1",
28
- "@pie-lib/translator": "^2.23.1",
29
- "@vx/axis": "^0.0.189",
30
- "@vx/clip-path": "^0.0.189",
31
- "@vx/curve": "^0.0.189",
32
- "@vx/event": "^0.0.189",
33
- "@vx/grid": "^0.0.189",
34
- "@vx/group": "^0.0.183",
35
- "@vx/point": "^0.0.189",
36
- "@vx/shape": "^0.0.189",
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": "^16.8.1",
45
- "react-dom": "^16.9.0",
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": "^16.8.1"
56
+ "react": "^18.2.0"
54
57
  },
55
- "gitHead": "f60e2119a935158e52eb23ce81969dc5b75b1db8",
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 { shallow } from 'enzyme';
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 wrapper = (extras, opts) => {
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('snapshot', () => {
126
- it('renders', () => {
127
- w = wrapper();
128
- expect(w).toMatchSnapshot();
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
  });