@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.
Files changed (252) hide show
  1. package/CHANGELOG.md +6 -76
  2. package/lib/__tests__/graph-with-controls.test.js +226 -0
  3. package/lib/__tests__/graph.test.js +187 -0
  4. package/lib/__tests__/grid.test.js +29 -0
  5. package/lib/__tests__/labels.test.js +61 -0
  6. package/lib/__tests__/mark-label.test.js +133 -0
  7. package/lib/__tests__/toggle-bar.test.js +150 -0
  8. package/lib/__tests__/tool-menu.test.js +101 -0
  9. package/lib/__tests__/undo-redo.test.js +31 -0
  10. package/lib/__tests__/use-debounce.test.js +24 -0
  11. package/lib/__tests__/utils.js +70 -0
  12. package/lib/__tests__/utils.test.js +123 -0
  13. package/lib/axis/__tests__/arrow.test.js +60 -0
  14. package/lib/axis/__tests__/axes.test.js +195 -0
  15. package/lib/axis/arrow.js +20 -56
  16. package/lib/axis/arrow.js.map +1 -1
  17. package/lib/axis/axes.js +107 -195
  18. package/lib/axis/axes.js.map +1 -1
  19. package/lib/axis/index.js +2 -7
  20. package/lib/axis/index.js.map +1 -1
  21. package/lib/bg.js +22 -50
  22. package/lib/bg.js.map +1 -1
  23. package/lib/container/actions.js +3 -9
  24. package/lib/container/actions.js.map +1 -1
  25. package/lib/container/index.js +15 -60
  26. package/lib/container/index.js.map +1 -1
  27. package/lib/container/marks.js +2 -7
  28. package/lib/container/marks.js.map +1 -1
  29. package/lib/container/middleware.js +3 -9
  30. package/lib/container/middleware.js.map +1 -1
  31. package/lib/container/reducer.js +2 -9
  32. package/lib/container/reducer.js.map +1 -1
  33. package/lib/coordinates-label.js +25 -55
  34. package/lib/coordinates-label.js.map +1 -1
  35. package/lib/graph-with-controls.js +121 -185
  36. package/lib/graph-with-controls.js.map +1 -1
  37. package/lib/graph.js +60 -117
  38. package/lib/graph.js.map +1 -1
  39. package/lib/grid-setup.js +169 -225
  40. package/lib/grid-setup.js.map +1 -1
  41. package/lib/grid.js +30 -75
  42. package/lib/grid.js.map +1 -1
  43. package/lib/index.js +2 -14
  44. package/lib/index.js.map +1 -1
  45. package/lib/key-legend.js +41 -86
  46. package/lib/key-legend.js.map +1 -1
  47. package/lib/label-svg-icon.js +2 -8
  48. package/lib/label-svg-icon.js.map +1 -1
  49. package/lib/labels.js +66 -122
  50. package/lib/labels.js.map +1 -1
  51. package/lib/mark-label.js +121 -164
  52. package/lib/mark-label.js.map +1 -1
  53. package/lib/toggle-bar.js +156 -244
  54. package/lib/toggle-bar.js.map +1 -1
  55. package/lib/tool-menu.js +17 -51
  56. package/lib/tool-menu.js.map +1 -1
  57. package/lib/tools/absolute/__tests__/component.test.js +67 -0
  58. package/lib/tools/absolute/component.js +5 -11
  59. package/lib/tools/absolute/component.js.map +1 -1
  60. package/lib/tools/absolute/index.js +4 -17
  61. package/lib/tools/absolute/index.js.map +1 -1
  62. package/lib/tools/circle/__tests__/bg-circle.test.js +33 -0
  63. package/lib/tools/circle/__tests__/component.test.js +68 -0
  64. package/lib/tools/circle/bg-circle.js +43 -93
  65. package/lib/tools/circle/bg-circle.js.map +1 -1
  66. package/lib/tools/circle/component.js +79 -166
  67. package/lib/tools/circle/component.js.map +1 -1
  68. package/lib/tools/circle/index.js +4 -14
  69. package/lib/tools/circle/index.js.map +1 -1
  70. package/lib/tools/exponential/__tests__/component.test.js +66 -0
  71. package/lib/tools/exponential/component.js +5 -11
  72. package/lib/tools/exponential/component.js.map +1 -1
  73. package/lib/tools/exponential/index.js +4 -19
  74. package/lib/tools/exponential/index.js.map +1 -1
  75. package/lib/tools/index.js +4 -17
  76. package/lib/tools/index.js.map +1 -1
  77. package/lib/tools/line/__tests__/component.test.js +45 -0
  78. package/lib/tools/line/component.js +28 -49
  79. package/lib/tools/line/component.js.map +1 -1
  80. package/lib/tools/line/index.js +2 -7
  81. package/lib/tools/line/index.js.map +1 -1
  82. package/lib/tools/parabola/__tests__/component.test.js +66 -0
  83. package/lib/tools/parabola/component.js +5 -11
  84. package/lib/tools/parabola/component.js.map +1 -1
  85. package/lib/tools/parabola/index.js +4 -17
  86. package/lib/tools/parabola/index.js.map +1 -1
  87. package/lib/tools/point/__tests__/component.test.js +50 -0
  88. package/lib/tools/point/component.js +25 -72
  89. package/lib/tools/point/component.js.map +1 -1
  90. package/lib/tools/point/index.js +4 -12
  91. package/lib/tools/point/index.js.map +1 -1
  92. package/lib/tools/polygon/__tests__/component.test.js +85 -0
  93. package/lib/tools/polygon/__tests__/index.test.js +92 -0
  94. package/lib/tools/polygon/__tests__/line.test.js +29 -0
  95. package/lib/tools/polygon/__tests__/polygon.test.js +59 -0
  96. package/lib/tools/polygon/component.js +84 -185
  97. package/lib/tools/polygon/component.js.map +1 -1
  98. package/lib/tools/polygon/index.js +7 -24
  99. package/lib/tools/polygon/index.js.map +1 -1
  100. package/lib/tools/polygon/line.js +49 -92
  101. package/lib/tools/polygon/line.js.map +1 -1
  102. package/lib/tools/polygon/polygon.js +66 -99
  103. package/lib/tools/polygon/polygon.js.map +1 -1
  104. package/lib/tools/ray/__tests__/component.test.js +35 -0
  105. package/lib/tools/ray/component.js +42 -61
  106. package/lib/tools/ray/component.js.map +1 -1
  107. package/lib/tools/ray/index.js +2 -7
  108. package/lib/tools/ray/index.js.map +1 -1
  109. package/lib/tools/segment/__tests__/component.test.js +35 -0
  110. package/lib/tools/segment/component.js +26 -44
  111. package/lib/tools/segment/component.js.map +1 -1
  112. package/lib/tools/segment/index.js +2 -7
  113. package/lib/tools/segment/index.js.map +1 -1
  114. package/lib/tools/shared/__tests__/arrow-head.test.js +45 -0
  115. package/lib/tools/shared/arrow-head.js +70 -29
  116. package/lib/tools/shared/arrow-head.js.map +1 -1
  117. package/lib/tools/shared/icons/CorrectSVG.js +13 -9
  118. package/lib/tools/shared/icons/CorrectSVG.js.map +1 -1
  119. package/lib/tools/shared/icons/IncorrectSVG.js +13 -9
  120. package/lib/tools/shared/icons/IncorrectSVG.js.map +1 -1
  121. package/lib/tools/shared/icons/MissingSVG.js +13 -9
  122. package/lib/tools/shared/icons/MissingSVG.js.map +1 -1
  123. package/lib/tools/shared/line/__tests__/index.test.js +124 -0
  124. package/lib/tools/shared/line/__tests__/line-path.test.js +62 -0
  125. package/lib/tools/shared/line/__tests__/with-root-edge.test.js +91 -0
  126. package/lib/tools/shared/line/index.js +141 -194
  127. package/lib/tools/shared/line/index.js.map +1 -1
  128. package/lib/tools/shared/line/line-path.js +71 -102
  129. package/lib/tools/shared/line/line-path.js.map +1 -1
  130. package/lib/tools/shared/line/with-root-edge.js +23 -57
  131. package/lib/tools/shared/line/with-root-edge.js.map +1 -1
  132. package/lib/tools/shared/point/__tests__/arrow-point.test.js +127 -0
  133. package/lib/tools/shared/point/__tests__/base-point.test.js +122 -0
  134. package/lib/tools/shared/point/arrow-point.js +22 -63
  135. package/lib/tools/shared/point/arrow-point.js.map +1 -1
  136. package/lib/tools/shared/point/arrow.js +24 -53
  137. package/lib/tools/shared/point/arrow.js.map +1 -1
  138. package/lib/tools/shared/point/base-point.js +55 -73
  139. package/lib/tools/shared/point/base-point.js.map +1 -1
  140. package/lib/tools/shared/point/index.js +23 -58
  141. package/lib/tools/shared/point/index.js.map +1 -1
  142. package/lib/tools/shared/styles.js +11 -39
  143. package/lib/tools/shared/styles.js.map +1 -1
  144. package/lib/tools/shared/types.js +3 -10
  145. package/lib/tools/shared/types.js.map +1 -1
  146. package/lib/tools/sine/__tests__/component.test.js +72 -0
  147. package/lib/tools/sine/component.js +9 -20
  148. package/lib/tools/sine/component.js.map +1 -1
  149. package/lib/tools/sine/index.js +4 -17
  150. package/lib/tools/sine/index.js.map +1 -1
  151. package/lib/tools/vector/__tests__/component.test.js +32 -0
  152. package/lib/tools/vector/component.js +25 -45
  153. package/lib/tools/vector/component.js.map +1 -1
  154. package/lib/tools/vector/index.js +2 -7
  155. package/lib/tools/vector/index.js.map +1 -1
  156. package/lib/undo-redo.js +30 -70
  157. package/lib/undo-redo.js.map +1 -1
  158. package/lib/use-debounce.js +5 -12
  159. package/lib/use-debounce.js.map +1 -1
  160. package/lib/utils.js +52 -129
  161. package/lib/utils.js.map +1 -1
  162. package/package.json +25 -29
  163. package/src/__tests__/graph-with-controls.test.jsx +28 -11
  164. package/src/__tests__/graph.test.jsx +104 -168
  165. package/src/__tests__/grid.test.jsx +8 -6
  166. package/src/__tests__/labels.test.jsx +25 -8
  167. package/src/__tests__/mark-label.test.jsx +12 -17
  168. package/src/__tests__/toggle-bar.test.jsx +92 -17
  169. package/src/__tests__/tool-menu.test.jsx +61 -12
  170. package/src/__tests__/undo-redo.test.jsx +7 -8
  171. package/src/__tests__/utils.js +3 -0
  172. package/src/axis/__tests__/arrow.test.jsx +16 -17
  173. package/src/axis/__tests__/axes.test.jsx +118 -122
  174. package/src/axis/arrow.jsx +7 -12
  175. package/src/axis/axes.jsx +45 -55
  176. package/src/coordinates-label.jsx +14 -18
  177. package/src/graph-with-controls.jsx +52 -59
  178. package/src/grid-setup.jsx +210 -206
  179. package/src/grid.jsx +2 -4
  180. package/src/key-legend.jsx +52 -56
  181. package/src/labels.jsx +23 -30
  182. package/src/mark-label.jsx +92 -81
  183. package/src/toggle-bar.jsx +135 -164
  184. package/src/tool-menu.jsx +1 -1
  185. package/src/tools/circle/__tests__/bg-circle.test.jsx +7 -9
  186. package/src/tools/circle/__tests__/component.test.jsx +17 -189
  187. package/src/tools/circle/bg-circle.jsx +20 -28
  188. package/src/tools/circle/component.jsx +28 -63
  189. package/src/tools/line/__tests__/component.test.jsx +7 -7
  190. package/src/tools/line/component.jsx +22 -15
  191. package/src/tools/point/__tests__/component.test.jsx +18 -43
  192. package/src/tools/point/component.jsx +1 -1
  193. package/src/tools/polygon/__tests__/component.test.jsx +18 -162
  194. package/src/tools/polygon/__tests__/line.test.jsx +7 -10
  195. package/src/tools/polygon/__tests__/polygon.test.jsx +7 -8
  196. package/src/tools/polygon/component.jsx +3 -4
  197. package/src/tools/polygon/line.jsx +30 -33
  198. package/src/tools/polygon/polygon.jsx +52 -45
  199. package/src/tools/ray/__tests__/component.test.jsx +7 -8
  200. package/src/tools/ray/component.jsx +38 -25
  201. package/src/tools/segment/__tests__/component.test.jsx +7 -8
  202. package/src/tools/segment/component.jsx +19 -18
  203. package/src/tools/shared/__tests__/arrow-head.test.jsx +14 -17
  204. package/src/tools/shared/arrow-head.jsx +60 -7
  205. package/src/tools/shared/icons/CorrectSVG.jsx +10 -0
  206. package/src/tools/shared/icons/IncorrectSVG.jsx +10 -0
  207. package/src/tools/shared/icons/MissingSVG.jsx +10 -0
  208. package/src/tools/shared/line/__tests__/index.test.jsx +19 -165
  209. package/src/tools/shared/line/__tests__/line-path.test.jsx +8 -8
  210. package/src/tools/shared/line/__tests__/with-root-edge.test.jsx +22 -22
  211. package/src/tools/shared/line/index.jsx +52 -7
  212. package/src/tools/shared/line/line-path.jsx +55 -59
  213. package/src/tools/shared/line/with-root-edge.jsx +1 -1
  214. package/src/tools/shared/point/__tests__/arrow-point.test.jsx +15 -11
  215. package/src/tools/shared/point/__tests__/base-point.test.jsx +14 -11
  216. package/src/tools/shared/point/arrow-point.jsx +10 -24
  217. package/src/tools/shared/point/arrow.jsx +5 -11
  218. package/src/tools/shared/point/base-point.jsx +42 -19
  219. package/src/tools/shared/point/index.jsx +27 -44
  220. package/src/tools/vector/__tests__/component.test.jsx +7 -8
  221. package/src/tools/vector/component.jsx +11 -16
  222. package/src/undo-redo.jsx +19 -21
  223. package/esm/index.css +0 -847
  224. package/esm/index.js +0 -239949
  225. package/esm/index.js.map +0 -1
  226. package/esm/package.json +0 -3
  227. package/src/__tests__/__snapshots__/graph-with-controls.test.jsx.snap +0 -237
  228. package/src/__tests__/__snapshots__/graph.test.jsx.snap +0 -211
  229. package/src/__tests__/__snapshots__/grid.test.jsx.snap +0 -54
  230. package/src/__tests__/__snapshots__/labels.test.jsx.snap +0 -30
  231. package/src/__tests__/__snapshots__/mark-label.test.jsx.snap +0 -45
  232. package/src/__tests__/__snapshots__/toggle-bar.test.jsx.snap +0 -7
  233. package/src/__tests__/__snapshots__/tool-menu.test.jsx.snap +0 -13
  234. package/src/__tests__/__snapshots__/undo-redo.test.jsx.snap +0 -14
  235. package/src/axis/__tests__/__snapshots__/arrow.test.jsx.snap +0 -33
  236. package/src/axis/__tests__/__snapshots__/axes.test.jsx.snap +0 -122
  237. package/src/tools/circle/__tests__/__snapshots__/bg-circle.test.jsx.snap +0 -46
  238. package/src/tools/circle/__tests__/__snapshots__/component.test.jsx.snap +0 -293
  239. package/src/tools/line/__tests__/__snapshots__/component.test.jsx.snap +0 -20
  240. package/src/tools/point/__tests__/__snapshots__/component.test.jsx.snap +0 -40
  241. package/src/tools/polygon/__tests__/__snapshots__/component.test.jsx.snap +0 -415
  242. package/src/tools/polygon/__tests__/__snapshots__/line.test.jsx.snap +0 -45
  243. package/src/tools/polygon/__tests__/__snapshots__/polygon.test.jsx.snap +0 -52
  244. package/src/tools/ray/__tests__/__snapshots__/component.test.jsx.snap +0 -23
  245. package/src/tools/segment/__tests__/__snapshots__/component.test.jsx.snap +0 -14
  246. package/src/tools/shared/__tests__/__snapshots__/arrow-head.test.jsx.snap +0 -27
  247. package/src/tools/shared/line/__tests__/__snapshots__/index.test.jsx.snap +0 -360
  248. package/src/tools/shared/line/__tests__/__snapshots__/line-path.test.jsx.snap +0 -58
  249. package/src/tools/shared/line/__tests__/__snapshots__/with-root-edge.test.jsx.snap +0 -63
  250. package/src/tools/shared/point/__tests__/__snapshots__/arrow-point.test.jsx.snap +0 -56
  251. package/src/tools/shared/point/__tests__/__snapshots__/base-point.test.jsx.snap +0 -44
  252. 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
- var tickCount = _plot.utils.tickCount;
25
- exports.tickCount = tickCount;
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
- }; //TODO: This can be removed?
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
- } // return only ticks that are inside the min-max interval
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
- }; // findLongestWord is also used in plot
81
-
82
-
83
- exports.countWords = countWords;
54
+ };
84
55
 
85
- var findLongestWord = function findLongestWord(label) {
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
- }; // amountToIncreaseWidth is also used in plot
91
-
92
-
93
- exports.findLongestWord = findLongestWord;
62
+ };
94
63
 
95
- var amountToIncreaseWidth = function amountToIncreaseWidth(longestWord) {
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
- max = axis.max,
201
- step = axis.step;
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
- range = graphProps.range,
209
- _graphProps$size = graphProps.size,
210
- width = _graphProps$size.width,
211
- height = _graphProps$size.height; // 14 is the default width of a point
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
- range = graphProps.range,
221
- _graphProps$size2 = graphProps.size,
222
- width = _graphProps$size2.width,
223
- height = _graphProps$size2.height;
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); // 15 is the distance required for the arrow to extend the graph
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
- }; // check colliniarity of 3 points (source: https://www.geeksforgeeks.org/program-check-three-points-collinear/)
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
- }; // 2 lines are overlapping if all 4 points are collinear
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
- building = mark.building;
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
- edge = mark.edge;
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
- to = mark.to;
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+IGlzRXF1YWwobSwgb2xkTWFyaykpO1xuXG4gIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICBmaWx0ZXJlZE1hcmtzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICBjb25zdCBkdXBsaWNhdGVkID0gZmlsdGVyZWRNYXJrcy5maW5kKChtKSA9PiB7XG4gICAgaWYgKHR5cGUgPT09ICdjaXJjbGUnIHx8IHR5cGUgPT09ICdwYXJhYm9sYScgfHwgdHlwZSA9PT0gJ3NpbmUnIHx8IHR5cGUgPT09ICdhYnNvbHV0ZScgfHwgdHlwZSA9PT0gJ2V4cG9uZW50aWFsJykge1xuICAgICAgY29uc3QgeyByb290LCBlZGdlIH0gPSBtYXJrO1xuXG4gICAgICByZXR1cm4gKGVxdWFsUG9pbnRzKHJvb3QsIG0ucm9vdCkgJiYgZXF1YWxQb2ludHMoZWRnZSwgbS5lZGdlKSkgfHwgKHR5cGUgPT09ICdjaXJjbGUnICYmIGlzU2FtZUNpcmNsZShtLCBtYXJrKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnbGluZScgfHwgdHlwZSA9PT0gJ3JheScgfHwgdHlwZSA9PT0gJ3NlZ21lbnQnIHx8IHR5cGUgPT09ICd2ZWN0b3InKSB7XG4gICAgICBjb25zdCB7IGZyb20sIHRvIH0gPSBtYXJrO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICAoZXF1YWxQb2ludHMoZnJvbSwgbS5mcm9tKSAmJiBlcXVhbFBvaW50cyh0bywgbS50bykpIHx8XG4gICAgICAgIChlcXVhbFBvaW50cyhmcm9tLCBtLnRvKSAmJiBlcXVhbFBvaW50cyh0bywgbS5mcm9tKSkgfHxcbiAgICAgICAgKHR5cGUgPT09ICdsaW5lJyAmJiBpc1NhbWVMaW5lKG0sIG1hcmspKVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdwb2x5Z29uJykge1xuICAgICAgcmV0dXJuIGlzRXF1YWwoc29ydFBvaW50cyhjbG9uZURlZXAobWFyay5wb2ludHMpKSwgc29ydFBvaW50cyhjbG9uZURlZXAobS5wb2ludHMpKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAncG9pbnQnKSB7XG4gICAgICByZXR1cm4gZXF1YWxQb2ludHMobSwgbWFyayk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gISFkdXBsaWNhdGVkO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFVBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFFBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUVPLElBQU1PLFNBQVMsR0FBQUMsT0FBQSxDQUFBRCxTQUFBLEdBQUdFLFdBQUssQ0FBQ0YsU0FBUztBQUNqQyxJQUFNRyxNQUFNLEdBQUFGLE9BQUEsQ0FBQUUsTUFBQSxHQUFHRCxXQUFLLENBQUNDLE1BQU07QUFDM0IsSUFBTUMsS0FBSyxHQUFBSCxPQUFBLENBQUFHLEtBQUEsR0FBR0YsV0FBSyxDQUFDRSxLQUFLOztBQUVoQztBQUNPLElBQU1DLFdBQVcsR0FBQUosT0FBQSxDQUFBSSxXQUFBLEdBQUcsU0FBZEEsV0FBV0EsQ0FBQTtFQUFBLE9BQVMsQ0FBQztBQUFBO0FBQ2xDO0FBQ08sSUFBTUMsZUFBZSxHQUFBTCxPQUFBLENBQUFLLGVBQUEsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBQTtFQUFBLE9BQVMsQ0FBQztBQUFBO0FBRS9CLElBQU1DLGFBQWEsR0FBQU4sT0FBQSxDQUFBTSxhQUFBLEdBQUcsU0FBaEJBLGFBQWFBLENBQUlDLElBQUksRUFBSztFQUNyQyxJQUFNQyxVQUFVLEdBQUcsRUFBRTtFQUNyQixJQUFJQyxPQUFPLEdBQUcsQ0FBQztFQUVmLE9BQU9BLE9BQU8sSUFBSUYsSUFBSSxDQUFDRyxHQUFHLElBQUlGLFVBQVUsQ0FBQ0csT0FBTyxDQUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDN0RELFVBQVUsQ0FBQ0ksSUFBSSxDQUFDSCxPQUFPLENBQUM7SUFDeEJBLE9BQU8sR0FBR0ksSUFBSSxDQUFDQyxLQUFLLENBQUMsQ0FBQ0wsT0FBTyxHQUFHRixJQUFJLENBQUNRLElBQUksSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLO0VBQzdEO0VBRUFOLE9BQU8sR0FBR0ksSUFBSSxDQUFDQyxLQUFLLENBQUNQLElBQUksQ0FBQ1EsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLEtBQUs7RUFFL0MsT0FBT04sT0FBTyxJQUFJRixJQUFJLENBQUNTLEdBQUcsSUFBSVIsVUFBVSxDQUFDRyxPQUFPLENBQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtJQUM3REQsVUFBVSxDQUFDSSxJQUFJLENBQUNILE9BQU8sQ0FBQztJQUN4QkEsT0FBTyxHQUFHSSxJQUFJLENBQUNDLEtBQUssQ0FBQyxDQUFDTCxPQUFPLEdBQUdGLElBQUksQ0FBQ1EsSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUs7RUFDN0Q7O0VBRUE7RUFDQSxJQUFJUCxVQUFVLEVBQUU7SUFDZCxPQUFPQSxVQUFVLENBQUNTLE1BQU0sQ0FBQyxVQUFDQyxFQUFFO01BQUEsT0FBS0EsRUFBRSxJQUFJWCxJQUFJLENBQUNHLEdBQUcsSUFBSVEsRUFBRSxJQUFJWCxJQUFJLENBQUNTLEdBQUc7SUFBQSxFQUFDO0VBQ3BFO0VBRUEsT0FBTyxFQUFFO0FBQ1gsQ0FBQztBQUVNLElBQU1HLFVBQVUsR0FBQW5CLE9BQUEsQ0FBQW1CLFVBQUEsR0FBRyxTQUFiQSxVQUFVQSxDQUFJQyxLQUFLLEVBQUs7RUFDbkMsSUFBSUEsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFBQyxtQkFBTyxFQUFDRCxLQUFLLENBQUMsRUFBRTtJQUNuQyxPQUFPLENBQUM7RUFDVjtFQUVBLElBQU1FLEtBQUssR0FBR0YsS0FBSyxDQUFDRyxLQUFLLENBQUMsR0FBRyxDQUFDO0VBQzlCLE9BQU9ELEtBQUssQ0FBQ0UsTUFBTTtBQUNyQixDQUFDOztBQUVEO0FBQ08sSUFBTUMsZUFBZSxHQUFBekIsT0FBQSxDQUFBeUIsZUFBQSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFJTCxLQUFLLEVBQUs7RUFDeEMsSUFBSU0sV0FBVyxHQUFHLENBQUNOLEtBQUssSUFBSSxFQUFFLEVBQzNCTyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUN2QkosS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUNWSyxJQUFJLENBQUMsVUFBQ0MsQ0FBQyxFQUFFQyxDQUFDO0lBQUEsT0FBS0EsQ0FBQyxDQUFDTixNQUFNLEdBQUdLLENBQUMsQ0FBQ0wsTUFBTTtFQUFBLEVBQUM7RUFFdEMsT0FBT0UsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDRixNQUFNO0FBQzlCLENBQUM7O0FBRUQ7QUFDTyxJQUFNTyxxQkFBcUIsR0FBQS9CLE9BQUEsQ0FBQStCLHFCQUFBLEdBQUcsU0FBeEJBLHFCQUFxQkEsQ0FBSUwsV0FBVyxFQUFLO0VBQ3BELElBQUksQ0FBQ0EsV0FBVyxFQUFFO0lBQ2hCLE9BQU8sQ0FBQztFQUNWO0VBRUEsT0FBT0EsV0FBVyxHQUFHLEVBQUU7QUFDekIsQ0FBQztBQUVNLElBQU1NLGFBQWEsR0FBQWhDLE9BQUEsQ0FBQWdDLGFBQUEsR0FBRyxTQUFoQkEsYUFBYUEsQ0FBSUMsTUFBTSxFQUFLO0VBQ3ZDLElBQU1DLENBQUMsR0FBRyxJQUFBQyxnQkFBSSxFQUFDRixNQUFNLENBQUM7RUFDdEIsSUFBTUcsSUFBSSxHQUFHO0lBQ1hDLElBQUksRUFBRUgsQ0FBQyxDQUFDSSxDQUFDO0lBQ1RDLEdBQUcsRUFBRUwsQ0FBQyxDQUFDTSxDQUFDO0lBQ1JDLE1BQU0sRUFBRVAsQ0FBQyxDQUFDTSxDQUFDO0lBQ1hFLEtBQUssRUFBRVIsQ0FBQyxDQUFDSTtFQUNYLENBQUM7RUFDRCxPQUFPLElBQUFLLGdCQUFJLEVBQUNWLE1BQU0sQ0FBQyxDQUFDVyxNQUFNLENBQUMsVUFBQ2YsQ0FBQyxFQUFFZ0IsQ0FBQyxFQUFLO0lBQ25DaEIsQ0FBQyxDQUFDUSxJQUFJLEdBQUd4QixJQUFJLENBQUNILEdBQUcsQ0FBQ21CLENBQUMsQ0FBQ1EsSUFBSSxFQUFFUSxDQUFDLENBQUNQLENBQUMsQ0FBQztJQUM5QlQsQ0FBQyxDQUFDVSxHQUFHLEdBQUcxQixJQUFJLENBQUNHLEdBQUcsQ0FBQ2EsQ0FBQyxDQUFDVSxHQUFHLEVBQUVNLENBQUMsQ0FBQ0wsQ0FBQyxDQUFDO0lBQzVCWCxDQUFDLENBQUNZLE1BQU0sR0FBRzVCLElBQUksQ0FBQ0gsR0FBRyxDQUFDbUIsQ0FBQyxDQUFDWSxNQUFNLEVBQUVJLENBQUMsQ0FBQ0wsQ0FBQyxDQUFDO0lBQ2xDWCxDQUFDLENBQUNhLEtBQUssR0FBRzdCLElBQUksQ0FBQ0csR0FBRyxDQUFDYSxDQUFDLENBQUNhLEtBQUssRUFBRUcsQ0FBQyxDQUFDUCxDQUFDLENBQUM7SUFDaEMsT0FBT1QsQ0FBQztFQUNWLENBQUMsRUFBRU8sSUFBSSxDQUFDO0FBQ1YsQ0FBQztBQUVNLElBQU1VLFVBQVUsR0FBQTlDLE9BQUEsQ0FBQThDLFVBQUEsR0FBRyxTQUFiQSxVQUFVQSxDQUFJQyxJQUFJLEVBQUVDLEVBQUU7RUFBQSxPQUFLQyxZQUFZLENBQUNGLElBQUksRUFBRUMsRUFBRSxDQUFDO0FBQUE7QUFFdkQsSUFBTUMsWUFBWSxHQUFBakQsT0FBQSxDQUFBaUQsWUFBQSxHQUFHLFNBQWZBLFlBQVlBLENBQUlwQixDQUFDLEVBQUVDLENBQUMsRUFBSztFQUNwQyxJQUFBb0IscUJBQVMsRUFBQyxDQUFDLENBQUNyQixDQUFDLElBQUksQ0FBQyxDQUFDQyxDQUFDLEVBQUUscUJBQXFCLENBQUM7RUFDNUMsSUFBTU8sSUFBSSxHQUFHeEIsSUFBSSxDQUFDSCxHQUFHLENBQUNtQixDQUFDLENBQUNTLENBQUMsRUFBRVIsQ0FBQyxDQUFDUSxDQUFDLENBQUM7RUFDL0IsSUFBTUMsR0FBRyxHQUFHMUIsSUFBSSxDQUFDRyxHQUFHLENBQUNhLENBQUMsQ0FBQ1csQ0FBQyxFQUFFVixDQUFDLENBQUNVLENBQUMsQ0FBQztFQUM5QixJQUFNQyxNQUFNLEdBQUc1QixJQUFJLENBQUNILEdBQUcsQ0FBQ21CLENBQUMsQ0FBQ1csQ0FBQyxFQUFFVixDQUFDLENBQUNVLENBQUMsQ0FBQztFQUNqQyxJQUFNRSxLQUFLLEdBQUc3QixJQUFJLENBQUNHLEdBQUcsQ0FBQ2EsQ0FBQyxDQUFDUyxDQUFDLEVBQUVSLENBQUMsQ0FBQ1EsQ0FBQyxDQUFDO0VBQ2hDLE9BQU87SUFBRUQsSUFBSSxFQUFKQSxJQUFJO0lBQUVFLEdBQUcsRUFBSEEsR0FBRztJQUFFRSxNQUFNLEVBQU5BLE1BQU07SUFBRUMsS0FBSyxFQUFMQTtFQUFNLENBQUM7QUFDckMsQ0FBQztBQUVNLElBQU1TLGtCQUFrQixHQUFBbkQsT0FBQSxDQUFBbUQsa0JBQUEsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFJQyxVQUFVLEVBQUVDLGNBQWMsRUFBSztFQUNoRSxPQUFPLElBQUFDLG1CQUFPLEVBQUNGLFVBQVUsQ0FBQ0csTUFBTSxFQUFFRixjQUFjLENBQUNFLE1BQU0sQ0FBQyxJQUFJLElBQUFELG1CQUFPLEVBQUNGLFVBQVUsQ0FBQ0ksS0FBSyxFQUFFSCxjQUFjLENBQUNHLEtBQUssQ0FBQztBQUM3RyxDQUFDO0FBRU0sSUFBTUMsaUJBQWlCLEdBQUF6RCxPQUFBLENBQUF5RCxpQkFBQSxHQUFHLFNBQXBCQSxpQkFBaUJBLENBQUl4QixNQUFNLEVBQUs7RUFDM0MsSUFBTXlCLFlBQVksR0FBRyxJQUFBQyxxQkFBUyxFQUFDMUIsTUFBTSxDQUFDO0VBQ3RDeUIsWUFBWSxDQUFDOUIsSUFBSSxDQUFDLFVBQUNDLENBQUMsRUFBRUMsQ0FBQztJQUFBLE9BQUtBLENBQUMsQ0FBQ1EsQ0FBQyxHQUFHVCxDQUFDLENBQUNTLENBQUM7RUFBQSxFQUFDO0VBRXRDLE9BQU87SUFBRVQsQ0FBQyxFQUFFNkIsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUFFNUIsQ0FBQyxFQUFFNEIsWUFBWSxDQUFDLENBQUM7RUFBRSxDQUFDO0FBQ25ELENBQUM7QUFFTSxJQUFNRSxvQkFBb0IsR0FBQTVELE9BQUEsQ0FBQTRELG9CQUFBLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FBSS9CLENBQUMsRUFBRUMsQ0FBQztFQUFBLE9BQU07SUFDN0NRLENBQUMsRUFBRSxDQUFDVCxDQUFDLENBQUNTLENBQUMsR0FBR1IsQ0FBQyxDQUFDUSxDQUFDLElBQUksQ0FBQztJQUNsQkUsQ0FBQyxFQUFFLENBQUNYLENBQUMsQ0FBQ1csQ0FBQyxHQUFHVixDQUFDLENBQUNVLENBQUMsSUFBSTtFQUNuQixDQUFDO0FBQUEsQ0FBQztBQUVLLElBQU1xQixXQUFXLEdBQUE3RCxPQUFBLENBQUE2RCxXQUFBLEdBQUcsU0FBZEEsV0FBV0EsQ0FBSUMsTUFBTTtFQUFBLE9BQUtDLFVBQVUsQ0FBQ0QsTUFBTSxDQUFDRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQTtBQUU3RCxJQUFNQyxRQUFRLEdBQUFqRSxPQUFBLENBQUFpRSxRQUFBLEdBQUcsU0FBWEEsUUFBUUEsQ0FBSUMsRUFBRSxFQUFFQyxFQUFFO0VBQUEsT0FDN0JELEVBQUUsSUFBSUMsRUFBRSxLQUFLTixXQUFXLENBQUNLLEVBQUUsQ0FBQzVCLENBQUMsQ0FBQyxLQUFLdUIsV0FBVyxDQUFDTSxFQUFFLENBQUM3QixDQUFDLENBQUMsSUFBSXVCLFdBQVcsQ0FBQ0ssRUFBRSxDQUFDMUIsQ0FBQyxDQUFDLEtBQUtxQixXQUFXLENBQUNNLEVBQUUsQ0FBQzNCLENBQUMsQ0FBQyxDQUFDO0FBQUE7QUFFM0YsSUFBTTRCLFdBQVcsR0FBQXBFLE9BQUEsQ0FBQW9FLFdBQUEsR0FBRyxTQUFkQSxXQUFXQSxDQUFJRixFQUFFLEVBQUVDLEVBQUU7RUFBQSxPQUNoQ0QsRUFBRSxJQUNGQyxFQUFFLElBQ0YsSUFBQWIsbUJBQU8sRUFDTDtJQUNFaEIsQ0FBQyxFQUFFdUIsV0FBVyxDQUFDSyxFQUFFLENBQUM1QixDQUFDLENBQUM7SUFDcEJFLENBQUMsRUFBRXFCLFdBQVcsQ0FBQ0ssRUFBRSxDQUFDMUIsQ0FBQztFQUNyQixDQUFDLEVBQ0Q7SUFDRUYsQ0FBQyxFQUFFdUIsV0FBVyxDQUFDTSxFQUFFLENBQUM3QixDQUFDLENBQUM7SUFDcEJFLENBQUMsRUFBRXFCLFdBQVcsQ0FBQ00sRUFBRSxDQUFDM0IsQ0FBQztFQUNyQixDQUNGLENBQUM7QUFBQTtBQUVILElBQU02Qix1QkFBdUIsR0FBRyxTQUExQkEsdUJBQXVCQSxDQUFJQyxJQUFJLEVBQUVDLElBQUksRUFBSztFQUM5QyxJQUFRN0QsR0FBRyxHQUFnQjRELElBQUksQ0FBdkI1RCxHQUFHO0lBQUVNLEdBQUcsR0FBV3NELElBQUksQ0FBbEJ0RCxHQUFHO0lBQUVELElBQUksR0FBS3VELElBQUksQ0FBYnZELElBQUk7RUFDdEIsSUFBTXlELFNBQVMsR0FBRyxDQUFDeEQsR0FBRyxHQUFHTixHQUFHLElBQUlLLElBQUk7RUFFcEMsT0FBT3dELElBQUksR0FBR0MsU0FBUztBQUN6QixDQUFDO0FBRU0sSUFBTUMsbUJBQW1CLEdBQUF6RSxPQUFBLENBQUF5RSxtQkFBQSxHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUlyQixVQUFVLEVBQUs7RUFDakQsSUFDRUcsTUFBTSxHQUdKSCxVQUFVLENBSFpHLE1BQU07SUFDTkMsS0FBSyxHQUVISixVQUFVLENBRlpJLEtBQUs7SUFBQWtCLGdCQUFBLEdBRUh0QixVQUFVLENBRFptQixJQUFJO0lBQUlJLEtBQUssR0FBQUQsZ0JBQUEsQ0FBTEMsS0FBSztJQUFFQyxNQUFNLEdBQUFGLGdCQUFBLENBQU5FLE1BQU07O0VBR3ZCO0VBQ0EsT0FBT1AsdUJBQXVCLENBQUNkLE1BQU0sRUFBRW9CLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSU4sdUJBQXVCLENBQUNiLEtBQUssRUFBRW9CLE1BQU0sQ0FBQyxHQUFHLEVBQUU7QUFDbkcsQ0FBQztBQUVNLElBQU1DLHNCQUFzQixHQUFBN0UsT0FBQSxDQUFBNkUsc0JBQUEsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFJekIsVUFBVSxFQUFLO0VBQ3BELElBQ0VHLE1BQU0sR0FHSkgsVUFBVSxDQUhaRyxNQUFNO0lBQ05DLEtBQUssR0FFSEosVUFBVSxDQUZaSSxLQUFLO0lBQUFzQixpQkFBQSxHQUVIMUIsVUFBVSxDQURabUIsSUFBSTtJQUFJSSxLQUFLLEdBQUFHLGlCQUFBLENBQUxILEtBQUs7SUFBRUMsTUFBTSxHQUFBRSxpQkFBQSxDQUFORixNQUFNO0VBRXZCLElBQU1HLG1CQUFtQixHQUFHVix1QkFBdUIsQ0FBQ2QsTUFBTSxFQUFFb0IsS0FBSyxDQUFDO0VBQ2xFLElBQU1LLGtCQUFrQixHQUFHWCx1QkFBdUIsQ0FBQ2IsS0FBSyxFQUFFb0IsTUFBTSxDQUFDOztFQUVqRTtFQUNBLElBQU1LLGFBQWEsR0FBRzFCLE1BQU0sQ0FBQ3hDLElBQUksSUFBSWdFLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztFQUM5RCxJQUFNRyxZQUFZLEdBQUcxQixLQUFLLENBQUN6QyxJQUFJLElBQUlpRSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7RUFFM0QsT0FBTztJQUNMekIsTUFBTSxFQUFFO01BQ043QyxHQUFHLEVBQUU2QyxNQUFNLENBQUM3QyxHQUFHLEdBQUd1RSxhQUFhO01BQy9CakUsR0FBRyxFQUFFdUMsTUFBTSxDQUFDdkMsR0FBRyxHQUFHaUU7SUFDcEIsQ0FBQztJQUNEekIsS0FBSyxFQUFFO01BQ0w5QyxHQUFHLEVBQUU4QyxLQUFLLENBQUM5QyxHQUFHLEdBQUd3RSxZQUFZO01BQzdCbEUsR0FBRyxFQUFFd0MsS0FBSyxDQUFDeEMsR0FBRyxHQUFHa0U7SUFDbkI7RUFDRixDQUFDO0FBQ0gsQ0FBQztBQUVNLElBQU1DLDJCQUEyQixHQUFBbkYsT0FBQSxDQUFBbUYsMkJBQUEsR0FBRyxTQUE5QkEsMkJBQTJCQSxDQUFJdEQsQ0FBQyxFQUFFQyxDQUFDO0VBQUEsT0FBS2pCLElBQUksQ0FBQ3VFLElBQUksQ0FBQyxDQUFDdEQsQ0FBQyxDQUFDUSxDQUFDLEdBQUdULENBQUMsQ0FBQ1MsQ0FBQyxLQUFLUixDQUFDLENBQUNRLENBQUMsR0FBR1QsQ0FBQyxDQUFDUyxDQUFDLENBQUMsR0FBRyxDQUFDUixDQUFDLENBQUNVLENBQUMsR0FBR1gsQ0FBQyxDQUFDVyxDQUFDLEtBQUtWLENBQUMsQ0FBQ1UsQ0FBQyxHQUFHWCxDQUFDLENBQUNXLENBQUMsQ0FBQyxDQUFDO0FBQUE7QUFFckgsSUFBTTZDLFVBQVUsR0FBRyxTQUFiQSxVQUFVQSxDQUFJQyxLQUFLO0VBQUEsT0FBSyxDQUFDQSxLQUFLLElBQUksRUFBRSxFQUFFMUQsSUFBSSxDQUFDLFVBQUNDLENBQUMsRUFBRUMsQ0FBQztJQUFBLE9BQUtELENBQUMsQ0FBQ1MsQ0FBQyxHQUFHUixDQUFDLENBQUNRLENBQUMsSUFBSVQsQ0FBQyxDQUFDVyxDQUFDLEdBQUdWLENBQUMsQ0FBQ1UsQ0FBQztFQUFBLEVBQUM7QUFBQTs7QUFFbEY7QUFDQSxJQUFNK0MsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSTFELENBQUMsRUFBRUMsQ0FBQyxFQUFFMEQsQ0FBQztFQUFBLE9BQUssQ0FBQzNELENBQUMsQ0FBQ1MsQ0FBQyxHQUFHUixDQUFDLENBQUNRLENBQUMsS0FBS2tELENBQUMsQ0FBQ2hELENBQUMsR0FBR1YsQ0FBQyxDQUFDVSxDQUFDLENBQUMsS0FBSyxDQUFDZ0QsQ0FBQyxDQUFDbEQsQ0FBQyxHQUFHUixDQUFDLENBQUNRLENBQUMsS0FBS1QsQ0FBQyxDQUFDVyxDQUFDLEdBQUdWLENBQUMsQ0FBQ1UsQ0FBQyxDQUFDO0FBQUE7O0FBRTlGO0FBQ0EsSUFBTWlELFVBQVUsR0FBRyxTQUFiQSxVQUFVQSxDQUFJQyxLQUFLLEVBQUVDLEtBQUs7RUFBQSxPQUM5QkosaUJBQWlCLENBQUNHLEtBQUssQ0FBQzNDLElBQUksRUFBRTRDLEtBQUssQ0FBQzVDLElBQUksRUFBRTRDLEtBQUssQ0FBQzNDLEVBQUUsQ0FBQyxJQUFJdUMsaUJBQWlCLENBQUNHLEtBQUssQ0FBQzFDLEVBQUUsRUFBRTJDLEtBQUssQ0FBQzVDLElBQUksRUFBRTRDLEtBQUssQ0FBQzNDLEVBQUUsQ0FBQztBQUFBO0FBRTFHLElBQU00QyxZQUFZLEdBQUcsU0FBZkEsWUFBWUEsQ0FBSUYsS0FBSyxFQUFFQyxLQUFLO0VBQUEsT0FDaEN2QixXQUFXLENBQUNzQixLQUFLLENBQUNHLElBQUksRUFBRUYsS0FBSyxDQUFDRSxJQUFJLENBQUMsSUFDbkNWLDJCQUEyQixDQUFDUSxLQUFLLENBQUNFLElBQUksRUFBRUYsS0FBSyxDQUFDRyxJQUFJLENBQUMsS0FBS1gsMkJBQTJCLENBQUNPLEtBQUssQ0FBQ0csSUFBSSxFQUFFSCxLQUFLLENBQUNJLElBQUksQ0FBQztBQUFBO0FBRXRHLElBQU1DLGdCQUFnQixHQUFBL0YsT0FBQSxDQUFBK0YsZ0JBQUEsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFJQyxJQUFJLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFLO0VBQ3hELElBQVFDLElBQUksR0FBZUgsSUFBSSxDQUF2QkcsSUFBSTtJQUFFQyxRQUFRLEdBQUtKLElBQUksQ0FBakJJLFFBQVE7RUFFdEIsSUFBSUEsUUFBUSxFQUFFO0lBQ1osT0FBTyxLQUFLO0VBQ2Q7RUFFQSxJQUFNQyxhQUFhLEdBQUcsQ0FBQ0osS0FBSyxJQUFJLEVBQUUsRUFBRWhGLE1BQU0sQ0FBQyxVQUFDcUYsQ0FBQztJQUFBLE9BQUtBLENBQUMsQ0FBQ0gsSUFBSSxLQUFLQSxJQUFJLElBQUksQ0FBQ0csQ0FBQyxDQUFDRixRQUFRO0VBQUEsRUFBQztFQUNqRixJQUFNRyxLQUFLLEdBQUdGLGFBQWEsQ0FBQ0csU0FBUyxDQUFDLFVBQUNGLENBQUM7SUFBQSxPQUFLLElBQUFoRCxtQkFBTyxFQUFDZ0QsQ0FBQyxFQUFFSixPQUFPLENBQUM7RUFBQSxFQUFDO0VBRWpFLElBQUlLLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtJQUNoQkYsYUFBYSxDQUFDSSxNQUFNLENBQUNGLEtBQUssRUFBRSxDQUFDLENBQUM7RUFDaEM7RUFFQSxJQUFNRyxVQUFVLEdBQUdMLGFBQWEsQ0FBQ00sSUFBSSxDQUFDLFVBQUNMLENBQUMsRUFBSztJQUMzQyxJQUFJSCxJQUFJLEtBQUssUUFBUSxJQUFJQSxJQUFJLEtBQUssVUFBVSxJQUFJQSxJQUFJLEtBQUssTUFBTSxJQUFJQSxJQUFJLEtBQUssVUFBVSxJQUFJQSxJQUFJLEtBQUssYUFBYSxFQUFFO01BQ2hILElBQVFOLElBQUksR0FBV0csSUFBSSxDQUFuQkgsSUFBSTtRQUFFQyxJQUFJLEdBQUtFLElBQUksQ0FBYkYsSUFBSTtNQUVsQixPQUFRMUIsV0FBVyxDQUFDeUIsSUFBSSxFQUFFUyxDQUFDLENBQUNULElBQUksQ0FBQyxJQUFJekIsV0FBVyxDQUFDMEIsSUFBSSxFQUFFUSxDQUFDLENBQUNSLElBQUksQ0FBQyxJQUFNSyxJQUFJLEtBQUssUUFBUSxJQUFJUCxZQUFZLENBQUNVLENBQUMsRUFBRU4sSUFBSSxDQUFFO0lBQ2pILENBQUMsTUFBTSxJQUFJRyxJQUFJLEtBQUssTUFBTSxJQUFJQSxJQUFJLEtBQUssS0FBSyxJQUFJQSxJQUFJLEtBQUssU0FBUyxJQUFJQSxJQUFJLEtBQUssUUFBUSxFQUFFO01BQ3ZGLElBQVFwRCxJQUFJLEdBQVNpRCxJQUFJLENBQWpCakQsSUFBSTtRQUFFQyxFQUFFLEdBQUtnRCxJQUFJLENBQVhoRCxFQUFFO01BRWhCLE9BQ0dvQixXQUFXLENBQUNyQixJQUFJLEVBQUV1RCxDQUFDLENBQUN2RCxJQUFJLENBQUMsSUFBSXFCLFdBQVcsQ0FBQ3BCLEVBQUUsRUFBRXNELENBQUMsQ0FBQ3RELEVBQUUsQ0FBQyxJQUNsRG9CLFdBQVcsQ0FBQ3JCLElBQUksRUFBRXVELENBQUMsQ0FBQ3RELEVBQUUsQ0FBQyxJQUFJb0IsV0FBVyxDQUFDcEIsRUFBRSxFQUFFc0QsQ0FBQyxDQUFDdkQsSUFBSSxDQUFFLElBQ25Eb0QsSUFBSSxLQUFLLE1BQU0sSUFBSVYsVUFBVSxDQUFDYSxDQUFDLEVBQUVOLElBQUksQ0FBRTtJQUU1QyxDQUFDLE1BQU0sSUFBSUcsSUFBSSxLQUFLLFNBQVMsRUFBRTtNQUM3QixPQUFPLElBQUE3QyxtQkFBTyxFQUFDK0IsVUFBVSxDQUFDLElBQUExQixxQkFBUyxFQUFDcUMsSUFBSSxDQUFDL0QsTUFBTSxDQUFDLENBQUMsRUFBRW9ELFVBQVUsQ0FBQyxJQUFBMUIscUJBQVMsRUFBQzJDLENBQUMsQ0FBQ3JFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQyxNQUFNLElBQUlrRSxJQUFJLEtBQUssT0FBTyxFQUFFO01BQzNCLE9BQU8vQixXQUFXLENBQUNrQyxDQUFDLEVBQUVOLElBQUksQ0FBQztJQUM3QjtFQUNGLENBQUMsQ0FBQztFQUVGLE9BQU8sQ0FBQyxDQUFDVSxVQUFVO0FBQ3JCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
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.3-next.2+9ae1017d",
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-ui/core": "^3.8.3",
21
- "@material-ui/icons": "^3.0.2",
22
- "@pie-lib/drag": "^2.22.3-next.2+9ae1017d",
23
- "@pie-lib/editable-html": "^11.21.3-next.2+9ae1017d",
24
- "@pie-lib/graphing-utils": "^1.21.2-next.11+9ae1017d",
25
- "@pie-lib/plot": "^2.27.3-next.2+9ae1017d",
26
- "@pie-lib/render-ui": "^4.35.3-next.2+9ae1017d",
27
- "@pie-lib/translator": "^2.23.2-next.11+9ae1017d",
28
- "@vx/axis": "^0.0.189",
29
- "@vx/clip-path": "^0.0.189",
30
- "@vx/event": "^0.0.189",
31
- "@vx/grid": "^0.0.189",
32
- "@vx/group": "^0.0.183",
33
- "@vx/point": "^0.0.189",
34
- "@vx/shape": "^0.0.189",
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": "^16.8.1",
43
- "react-dom": "^16.9.0",
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": "^16.8.1"
55
+ "react": "^18.2.0"
52
56
  },
53
- "gitHead": "9ae1017d80207591d7570de6d6153fa476f3b18b",
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 { shallow } from 'enzyme';
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: 'line',
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 wrapper = (extras, opts) => {
142
+ const renderComponent = (extras) => {
136
143
  const props = { ...initialProps, ...extras };
137
144
 
138
- return shallow(<GraphWithControls {...props} />, opts);
145
+ return render(<GraphWithControls {...props} />);
139
146
  };
140
147
 
141
- describe('snapshot', () => {
142
- it('renders', () => {
143
- w = wrapper();
144
- expect(w).toMatchSnapshot();
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
  });