@pie-lib/graphing 2.14.22-next.0 → 2.16.0-beta.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 (259) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/NEXT.CHANGELOG.json +1 -0
  3. package/lib/__tests__/graph-with-controls.test.js +215 -0
  4. package/lib/__tests__/graph.test.js +290 -0
  5. package/lib/__tests__/grid.test.js +40 -0
  6. package/lib/__tests__/labels.test.js +59 -0
  7. package/lib/__tests__/mark-label.test.js +154 -0
  8. package/lib/__tests__/toggle-bar.test.js +54 -0
  9. package/lib/__tests__/tool-menu.test.js +43 -0
  10. package/lib/__tests__/undo-redo.test.js +42 -0
  11. package/lib/__tests__/use-debounce.test.js +28 -0
  12. package/lib/__tests__/utils.js +72 -0
  13. package/lib/__tests__/utils.test.js +133 -0
  14. package/lib/axis/__tests__/arrow.test.js +68 -0
  15. package/lib/axis/__tests__/axes.test.js +214 -0
  16. package/lib/axis/arrow.js +1 -1
  17. package/lib/axis/axes.js +6 -6
  18. package/lib/axis/index.js +1 -1
  19. package/lib/bg.js +1 -1
  20. package/lib/container/actions.js +1 -1
  21. package/lib/container/index.js +2 -5
  22. package/lib/container/marks.js +1 -1
  23. package/lib/container/middleware.js +1 -1
  24. package/lib/container/reducer.js +1 -1
  25. package/lib/coordinates-label.js +6 -4
  26. package/lib/graph-with-controls.js +9 -16
  27. package/lib/graph.js +30 -13
  28. package/lib/grid-setup.js +1 -1
  29. package/lib/grid.js +7 -15
  30. package/lib/index.js +9 -1
  31. package/lib/key-legend.js +246 -0
  32. package/lib/label-svg-icon.js +56 -0
  33. package/lib/labels.js +3 -2
  34. package/lib/mark-label.js +168 -57
  35. package/lib/toggle-bar.js +4 -5
  36. package/lib/tool-menu.js +3 -23
  37. package/lib/tools/absolute/__tests__/component.test.js +74 -0
  38. package/lib/tools/absolute/component.js +35 -0
  39. package/lib/tools/absolute/index.js +63 -0
  40. package/lib/tools/circle/__tests__/bg-circle.test.js +46 -0
  41. package/lib/tools/circle/__tests__/component.test.js +259 -0
  42. package/lib/tools/circle/bg-circle.js +5 -4
  43. package/lib/tools/circle/component.js +35 -16
  44. package/lib/tools/circle/index.js +1 -1
  45. package/lib/tools/exponential/__tests__/component.test.js +73 -0
  46. package/lib/tools/exponential/component.js +34 -0
  47. package/lib/tools/exponential/index.js +71 -0
  48. package/lib/tools/index.js +27 -7
  49. package/lib/tools/line/__tests__/component.test.js +56 -0
  50. package/lib/tools/line/component.js +3 -2
  51. package/lib/tools/line/index.js +1 -1
  52. package/lib/tools/parabola/__tests__/component.test.js +73 -0
  53. package/lib/tools/parabola/component.js +7 -6
  54. package/lib/tools/parabola/index.js +1 -1
  55. package/lib/tools/point/__tests__/component.test.js +97 -0
  56. package/lib/tools/point/component.js +15 -10
  57. package/lib/tools/point/index.js +1 -1
  58. package/lib/tools/polygon/__tests__/component.test.js +255 -0
  59. package/lib/tools/polygon/__tests__/index.test.js +95 -0
  60. package/lib/tools/polygon/__tests__/line.test.js +43 -0
  61. package/lib/tools/polygon/__tests__/polygon.test.js +73 -0
  62. package/lib/tools/polygon/component.js +26 -13
  63. package/lib/tools/polygon/index.js +1 -1
  64. package/lib/tools/polygon/line.js +13 -7
  65. package/lib/tools/polygon/polygon.js +7 -4
  66. package/lib/tools/ray/__tests__/component.test.js +48 -0
  67. package/lib/tools/ray/component.js +3 -2
  68. package/lib/tools/ray/index.js +1 -1
  69. package/lib/tools/segment/__tests__/component.test.js +48 -0
  70. package/lib/tools/segment/component.js +3 -2
  71. package/lib/tools/segment/index.js +1 -1
  72. package/lib/tools/shared/__tests__/arrow-head.test.js +62 -0
  73. package/lib/tools/shared/arrow-head.js +1 -1
  74. package/lib/tools/shared/icons/CorrectSVG.js +36 -0
  75. package/lib/tools/shared/icons/IncorrectSVG.js +36 -0
  76. package/lib/tools/shared/icons/MissingSVG.js +35 -0
  77. package/lib/tools/shared/line/__tests__/index.test.js +301 -0
  78. package/lib/tools/shared/line/__tests__/line-path.test.js +78 -0
  79. package/lib/tools/shared/line/__tests__/with-root-edge.test.js +122 -0
  80. package/lib/tools/shared/line/index.js +52 -20
  81. package/lib/tools/shared/line/line-path.js +14 -8
  82. package/lib/tools/shared/line/with-root-edge.js +20 -9
  83. package/lib/tools/shared/point/__tests__/arrow-point.test.js +137 -0
  84. package/lib/tools/shared/point/__tests__/base-point.test.js +134 -0
  85. package/lib/tools/shared/point/arrow-point.js +2 -2
  86. package/lib/tools/shared/point/arrow.js +2 -2
  87. package/lib/tools/shared/point/base-point.js +44 -8
  88. package/lib/tools/shared/point/index.js +5 -2
  89. package/lib/tools/shared/styles.js +17 -8
  90. package/lib/tools/shared/types.js +1 -1
  91. package/lib/tools/sine/__tests__/component.test.js +81 -0
  92. package/lib/tools/sine/component.js +14 -5
  93. package/lib/tools/sine/index.js +1 -1
  94. package/lib/tools/vector/__tests__/component.test.js +45 -0
  95. package/lib/tools/vector/component.js +3 -2
  96. package/lib/tools/vector/index.js +1 -1
  97. package/lib/undo-redo.js +1 -2
  98. package/lib/use-debounce.js +1 -1
  99. package/lib/utils.js +2 -2
  100. package/package.json +7 -7
  101. package/src/__tests__/__snapshots__/graph-with-controls.test.jsx.snap +237 -0
  102. package/src/__tests__/__snapshots__/graph.test.jsx.snap +211 -0
  103. package/src/__tests__/__snapshots__/grid.test.jsx.snap +54 -0
  104. package/src/__tests__/__snapshots__/labels.test.jsx.snap +30 -0
  105. package/src/__tests__/__snapshots__/mark-label.test.jsx.snap +45 -0
  106. package/src/__tests__/__snapshots__/toggle-bar.test.jsx.snap +7 -0
  107. package/src/__tests__/__snapshots__/tool-menu.test.jsx.snap +13 -0
  108. package/src/__tests__/__snapshots__/undo-redo.test.jsx.snap +14 -0
  109. package/src/__tests__/graph-with-controls.test.jsx +147 -0
  110. package/src/__tests__/graph.test.jsx +230 -0
  111. package/src/__tests__/grid.test.jsx +20 -0
  112. package/src/__tests__/labels.test.jsx +38 -0
  113. package/src/__tests__/mark-label.test.jsx +68 -0
  114. package/src/__tests__/toggle-bar.test.jsx +36 -0
  115. package/src/__tests__/tool-menu.test.jsx +29 -0
  116. package/src/__tests__/undo-redo.test.jsx +25 -0
  117. package/src/__tests__/use-debounce.test.js +21 -0
  118. package/src/__tests__/utils.js +38 -0
  119. package/src/__tests__/utils.test.js +151 -0
  120. package/src/axis/__tests__/__snapshots__/arrow.test.jsx.snap +33 -0
  121. package/src/axis/__tests__/__snapshots__/axes.test.jsx.snap +122 -0
  122. package/src/axis/__tests__/arrow.test.jsx +39 -0
  123. package/src/axis/__tests__/axes.test.jsx +220 -0
  124. package/src/axis/axes.jsx +5 -5
  125. package/src/container/index.jsx +2 -4
  126. package/src/coordinates-label.jsx +4 -3
  127. package/src/graph-with-controls.jsx +8 -10
  128. package/src/graph.jsx +22 -10
  129. package/src/grid-setup.jsx +9 -6
  130. package/src/grid.jsx +8 -10
  131. package/src/index.js +2 -2
  132. package/src/key-legend.jsx +115 -0
  133. package/src/label-svg-icon.jsx +39 -0
  134. package/src/labels.jsx +2 -1
  135. package/src/mark-label.jsx +149 -52
  136. package/src/toggle-bar.jsx +1 -2
  137. package/src/tool-menu.jsx +3 -26
  138. package/src/tools/absolute/__tests__/component.test.jsx +54 -0
  139. package/src/tools/absolute/component.jsx +23 -0
  140. package/src/tools/absolute/index.js +31 -0
  141. package/src/tools/circle/__tests__/__snapshots__/bg-circle.test.jsx.snap +46 -0
  142. package/src/tools/circle/__tests__/__snapshots__/component.test.jsx.snap +293 -0
  143. package/src/tools/circle/__tests__/bg-circle.test.jsx +28 -0
  144. package/src/tools/circle/__tests__/component.test.jsx +228 -0
  145. package/src/tools/circle/bg-circle.jsx +5 -4
  146. package/src/tools/circle/component.jsx +22 -8
  147. package/src/tools/exponential/__tests__/component.test.jsx +54 -0
  148. package/src/tools/exponential/component.jsx +23 -0
  149. package/src/tools/exponential/index.js +39 -0
  150. package/src/tools/index.js +38 -5
  151. package/src/tools/line/__tests__/__snapshots__/component.test.jsx.snap +20 -0
  152. package/src/tools/line/__tests__/component.test.jsx +36 -0
  153. package/src/tools/line/component.jsx +2 -1
  154. package/src/tools/parabola/__tests__/component.test.jsx +49 -0
  155. package/src/tools/parabola/component.jsx +7 -6
  156. package/src/tools/point/__tests__/__snapshots__/component.test.jsx.snap +40 -0
  157. package/src/tools/point/__tests__/component.test.jsx +66 -0
  158. package/src/tools/point/component.jsx +12 -6
  159. package/src/tools/polygon/__tests__/__snapshots__/component.test.jsx.snap +415 -0
  160. package/src/tools/polygon/__tests__/__snapshots__/line.test.jsx.snap +45 -0
  161. package/src/tools/polygon/__tests__/__snapshots__/polygon.test.jsx.snap +52 -0
  162. package/src/tools/polygon/__tests__/component.test.jsx +226 -0
  163. package/src/tools/polygon/__tests__/index.test.js +65 -0
  164. package/src/tools/polygon/__tests__/line.test.jsx +25 -0
  165. package/src/tools/polygon/__tests__/polygon.test.jsx +44 -0
  166. package/src/tools/polygon/component.jsx +39 -11
  167. package/src/tools/polygon/line.jsx +15 -7
  168. package/src/tools/polygon/polygon.jsx +7 -3
  169. package/src/tools/ray/__tests__/__snapshots__/component.test.jsx.snap +23 -0
  170. package/src/tools/ray/__tests__/component.test.jsx +29 -0
  171. package/src/tools/ray/component.jsx +2 -1
  172. package/src/tools/segment/__tests__/__snapshots__/component.test.jsx.snap +14 -0
  173. package/src/tools/segment/__tests__/component.test.jsx +28 -0
  174. package/src/tools/segment/component.jsx +2 -1
  175. package/src/tools/shared/__tests__/__snapshots__/arrow-head.test.jsx.snap +27 -0
  176. package/src/tools/shared/__tests__/arrow-head.test.jsx +34 -0
  177. package/src/tools/shared/icons/CorrectSVG.jsx +22 -0
  178. package/src/tools/shared/icons/IncorrectSVG.jsx +20 -0
  179. package/src/tools/shared/icons/MissingSVG.jsx +21 -0
  180. package/src/tools/shared/line/__tests__/__snapshots__/index.test.jsx.snap +360 -0
  181. package/src/tools/shared/line/__tests__/__snapshots__/line-path.test.jsx.snap +58 -0
  182. package/src/tools/shared/line/__tests__/__snapshots__/with-root-edge.test.jsx.snap +63 -0
  183. package/src/tools/shared/line/__tests__/index.test.jsx +255 -0
  184. package/src/tools/shared/line/__tests__/line-path.test.jsx +53 -0
  185. package/src/tools/shared/line/__tests__/with-root-edge.test.jsx +73 -0
  186. package/src/tools/shared/line/index.jsx +39 -13
  187. package/src/tools/shared/line/line-path.jsx +18 -7
  188. package/src/tools/shared/line/with-root-edge.jsx +10 -3
  189. package/src/tools/shared/point/__tests__/__snapshots__/arrow-point.test.jsx.snap +56 -0
  190. package/src/tools/shared/point/__tests__/__snapshots__/base-point.test.jsx.snap +44 -0
  191. package/src/tools/shared/point/__tests__/arrow-point.test.jsx +87 -0
  192. package/src/tools/shared/point/__tests__/base-point.test.jsx +84 -0
  193. package/src/tools/shared/point/arrow-point.jsx +4 -1
  194. package/src/tools/shared/point/arrow.jsx +4 -1
  195. package/src/tools/shared/point/base-point.jsx +28 -3
  196. package/src/tools/shared/point/index.jsx +7 -2
  197. package/src/tools/shared/styles.js +8 -3
  198. package/src/tools/sine/__tests__/component.test.jsx +51 -0
  199. package/src/tools/sine/component.jsx +7 -7
  200. package/src/tools/vector/__tests__/__snapshots__/component.test.jsx.snap +12 -0
  201. package/src/tools/vector/__tests__/component.test.jsx +26 -0
  202. package/src/tools/vector/component.jsx +2 -1
  203. package/src/undo-redo.jsx +0 -1
  204. package/src/utils.js +1 -1
  205. package/legacy.png +0 -0
  206. package/lib/axis/arrow.js.map +0 -1
  207. package/lib/axis/axes.js.map +0 -1
  208. package/lib/axis/index.js.map +0 -1
  209. package/lib/bg.js.map +0 -1
  210. package/lib/container/actions.js.map +0 -1
  211. package/lib/container/index.js.map +0 -1
  212. package/lib/container/marks.js.map +0 -1
  213. package/lib/container/middleware.js.map +0 -1
  214. package/lib/container/reducer.js.map +0 -1
  215. package/lib/coordinates-label.js.map +0 -1
  216. package/lib/graph-with-controls.js.map +0 -1
  217. package/lib/graph.js.map +0 -1
  218. package/lib/grid-setup.js.map +0 -1
  219. package/lib/grid.js.map +0 -1
  220. package/lib/index.js.map +0 -1
  221. package/lib/labels.js.map +0 -1
  222. package/lib/mark-label.js.map +0 -1
  223. package/lib/toggle-bar.js.map +0 -1
  224. package/lib/tool-menu.js.map +0 -1
  225. package/lib/tools/circle/bg-circle.js.map +0 -1
  226. package/lib/tools/circle/component.js.map +0 -1
  227. package/lib/tools/circle/index.js.map +0 -1
  228. package/lib/tools/index.js.map +0 -1
  229. package/lib/tools/line/component.js.map +0 -1
  230. package/lib/tools/line/index.js.map +0 -1
  231. package/lib/tools/parabola/component.js.map +0 -1
  232. package/lib/tools/parabola/index.js.map +0 -1
  233. package/lib/tools/point/component.js.map +0 -1
  234. package/lib/tools/point/index.js.map +0 -1
  235. package/lib/tools/polygon/component.js.map +0 -1
  236. package/lib/tools/polygon/index.js.map +0 -1
  237. package/lib/tools/polygon/line.js.map +0 -1
  238. package/lib/tools/polygon/polygon.js.map +0 -1
  239. package/lib/tools/ray/component.js.map +0 -1
  240. package/lib/tools/ray/index.js.map +0 -1
  241. package/lib/tools/segment/component.js.map +0 -1
  242. package/lib/tools/segment/index.js.map +0 -1
  243. package/lib/tools/shared/arrow-head.js.map +0 -1
  244. package/lib/tools/shared/line/index.js.map +0 -1
  245. package/lib/tools/shared/line/line-path.js.map +0 -1
  246. package/lib/tools/shared/line/with-root-edge.js.map +0 -1
  247. package/lib/tools/shared/point/arrow-point.js.map +0 -1
  248. package/lib/tools/shared/point/arrow.js.map +0 -1
  249. package/lib/tools/shared/point/base-point.js.map +0 -1
  250. package/lib/tools/shared/point/index.js.map +0 -1
  251. package/lib/tools/shared/styles.js.map +0 -1
  252. package/lib/tools/shared/types.js.map +0 -1
  253. package/lib/tools/sine/component.js.map +0 -1
  254. package/lib/tools/sine/index.js.map +0 -1
  255. package/lib/tools/vector/component.js.map +0 -1
  256. package/lib/tools/vector/index.js.map +0 -1
  257. package/lib/undo-redo.js.map +0 -1
  258. package/lib/use-debounce.js.map +0 -1
  259. package/lib/utils.js.map +0 -1
@@ -117,7 +117,11 @@ var lineToolComponent = function lineToolComponent(Component) {
117
117
  mark: undefined
118
118
  }, function () {
119
119
  var type = update.type;
120
- var shouldNotChange = type && (type === 'parabola' || type === 'sine') && (0, _utils.sameAxes)(update.from, update.to);
120
+ var shouldNotChange = type && (type === 'parabola' || type === 'sine' || type === 'absolute' || type === 'exponential') && (0, _utils.sameAxes)(update.from, update.to);
121
+
122
+ if (!shouldNotChange && type && type === 'exponential' && update.from && update.to) {
123
+ shouldNotChange = update.from.y === 0 || update.to.y === 0 || update.from.y * update.to.y < 0;
124
+ }
121
125
 
122
126
  if (!(0, _isEqual["default"])(mark, update) && !shouldNotChange) {
123
127
  onChange(mark, update);
@@ -188,7 +192,8 @@ var lineToolComponent = function lineToolComponent(Component) {
188
192
  onClick = _this$props3.onClick,
189
193
  labelNode = _this$props3.labelNode,
190
194
  labelModeEnabled = _this$props3.labelModeEnabled,
191
- coordinatesOnHover = _this$props3.coordinatesOnHover;
195
+ coordinatesOnHover = _this$props3.coordinatesOnHover,
196
+ limitLabeling = _this$props3.limitLabeling;
192
197
  var mark = this.state.mark ? this.state.mark : this.props.mark;
193
198
  var from = (0, _cloneDeep["default"])(mark.from);
194
199
  var to = (0, _cloneDeep["default"])(mark.to);
@@ -221,7 +226,8 @@ var lineToolComponent = function lineToolComponent(Component) {
221
226
  onDragStart: this.startDrag,
222
227
  onDragStop: this.stopDrag,
223
228
  labelNode: labelNode,
224
- labelModeEnabled: labelModeEnabled
229
+ labelModeEnabled: labelModeEnabled,
230
+ limitLabeling: limitLabeling
225
231
  });
226
232
  }
227
233
  }]);
@@ -364,11 +370,29 @@ var lineBase = function lineBase(Comp, opts) {
364
370
 
365
371
  changeMarkProps((0, _defineProperty2["default"])({}, type, update));
366
372
  });
367
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "clickPoint", function (point, type) {
373
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "clickPoint", function (point, type, data) {
368
374
  var _this2$props5 = _this2.props,
369
375
  changeMarkProps = _this2$props5.changeMarkProps,
376
+ disabled = _this2$props5.disabled,
370
377
  from = _this2$props5.from,
371
- to = _this2$props5.to;
378
+ to = _this2$props5.to,
379
+ labelModeEnabled = _this2$props5.labelModeEnabled,
380
+ limitLabeling = _this2$props5.limitLabeling,
381
+ onClick = _this2$props5.onClick;
382
+
383
+ if (!labelModeEnabled) {
384
+ onClick(point || data);
385
+ return;
386
+ }
387
+
388
+ if (disabled) {
389
+ return;
390
+ } // limit labeling the points of the line
391
+
392
+
393
+ if (limitLabeling) {
394
+ return;
395
+ }
372
396
 
373
397
  if (type === 'middle' && !point && from && to) {
374
398
  point = _objectSpread(_objectSpread({}, point), (0, _utils.getMiddleOfTwoPoints)(from, to));
@@ -476,9 +500,9 @@ var lineBase = function lineBase(Comp, opts) {
476
500
  middle: middle,
477
501
  onDrag: this.dragComp
478
502
  }, common, {
479
- onClick: labelModeEnabled ? function () {
480
- return _this3.clickPoint(middle, 'middle');
481
- } : common.onClick
503
+ onClick: function onClick(data) {
504
+ return _this3.clickPoint(middle, 'middle', data);
505
+ }
482
506
  })), lineLabelNode, /*#__PURE__*/_react["default"].createElement(FromPoint, (0, _extends2["default"])({
483
507
  x: from.x,
484
508
  y: from.y,
@@ -486,9 +510,9 @@ var lineBase = function lineBase(Comp, opts) {
486
510
  coordinatesOnHover: coordinatesOnHover,
487
511
  onDrag: this.dragFrom
488
512
  }, common, {
489
- onClick: labelModeEnabled ? function () {
490
- return _this3.clickPoint(from, 'from');
491
- } : common.onClick
513
+ onClick: function onClick(data) {
514
+ return _this3.clickPoint(from, 'from', data);
515
+ }
492
516
  })), fromLabelNode, to && /*#__PURE__*/_react["default"].createElement(ToPoint, (0, _extends2["default"])({
493
517
  x: to.x,
494
518
  y: to.y,
@@ -498,9 +522,9 @@ var lineBase = function lineBase(Comp, opts) {
498
522
  coordinatesOnHover: coordinatesOnHover,
499
523
  onDrag: this.dragTo
500
524
  }, common, {
501
- onClick: labelModeEnabled ? function () {
502
- return _this3.clickPoint(to, 'to');
503
- } : common.onClick
525
+ onClick: function onClick(data) {
526
+ return _this3.clickPoint(to, 'to', data);
527
+ }
504
528
  })), toLabelNode);
505
529
  }
506
530
  }]);
@@ -531,22 +555,27 @@ var styles = {
531
555
  line: function line() {
532
556
  return {
533
557
  fill: 'transparent',
534
- stroke: _renderUi.color.primaryLight(),
558
+ stroke: _renderUi.color.defaults.BLACK,
535
559
  strokeWidth: 3,
536
560
  transition: 'stroke 200ms ease-in, stroke-width 200ms ease-in',
537
561
  '&:hover': {
538
562
  strokeWidth: 6,
539
- stroke: _renderUi.color.primaryDark()
563
+ stroke: _renderUi.color.defaults.PRIMARY_DARK
540
564
  }
541
565
  };
542
566
  },
543
567
  arrow: function arrow() {
544
568
  return {
545
- fill: _renderUi.color.secondary()
569
+ fill: _renderUi.color.defaults.BLACK
546
570
  };
547
571
  },
548
572
  disabledArrow: function disabledArrow() {
549
- return _objectSpread({}, (0, _styles.disabled)());
573
+ return _objectSpread({}, (0, _styles.disabledSecondary)());
574
+ },
575
+ disabledSecondary: function disabledSecondary() {
576
+ return _objectSpread(_objectSpread({}, (0, _styles.disabledSecondary)('stroke')), {}, {
577
+ strokeWidth: 2
578
+ });
550
579
  },
551
580
  disabled: function disabled() {
552
581
  return _objectSpread(_objectSpread({}, (0, _styles.disabled)('stroke')), {}, {
@@ -560,8 +589,11 @@ var styles = {
560
589
  return _objectSpread({}, (0, _styles.incorrect)(key));
561
590
  },
562
591
  missing: function missing(theme, key) {
563
- return _objectSpread({}, (0, _styles.missing)(key));
592
+ return _objectSpread(_objectSpread({}, (0, _styles.missing)(key)), {}, {
593
+ strokeWidth: 1,
594
+ strokeDasharray: '4 3'
595
+ });
564
596
  }
565
597
  };
566
598
  exports.styles = styles;
567
- //# sourceMappingURL=index.js.map
599
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29scy9zaGFyZWQvbGluZS9pbmRleC5qc3giXSwibmFtZXMiOlsibGluZVRvb2wiLCJ0eXBlIiwiQ29tcG9uZW50IiwiYWRkUG9pbnQiLCJwb2ludCIsIm1hcmsiLCJyb290IiwiYnVpbGRpbmciLCJmcm9tIiwidG8iLCJsaW5lVG9vbENvbXBvbmVudCIsInByb3BzIiwic2V0U3RhdGUiLCJvbkNoYW5nZSIsInVwZGF0ZSIsInN0YXRlIiwidW5kZWZpbmVkIiwic2hvdWxkTm90Q2hhbmdlIiwieSIsIm1pZGRsZSIsImdyYXBoUHJvcHMiLCJvbkNsaWNrIiwibGFiZWxOb2RlIiwibGFiZWxNb2RlRW5hYmxlZCIsImNvb3JkaW5hdGVzT25Ib3ZlciIsImxpbWl0TGFiZWxpbmciLCJpc0JhY2tncm91bmQiLCJkaXNhYmxlZCIsImNvcnJlY3RuZXNzIiwiY2hhbmdlTWFyayIsImNoYW5nZU1hcmtQcm9wcyIsInN0YXJ0RHJhZyIsInN0b3BEcmFnIiwiUmVhY3QiLCJ0eXBlcyIsIlRvb2xQcm9wVHlwZUZpZWxkcyIsIkdyYXBoUHJvcHNUeXBlIiwiaXNSZXF1aXJlZCIsImRyYWdPcHRzIiwiYm91bmRzIiwiZG9tYWluIiwicmFuZ2UiLCJhcmVhIiwidXRpbHMiLCJsaW5lVG9BcmVhIiwiYW5jaG9yUG9pbnQiLCJmcm9tRGVsdGEiLCJkZWx0YSIsImFkZCIsImxpbmVCYXNlIiwiQ29tcCIsIm9wdHMiLCJEcmFnZ2FibGVDb21wIiwiRnJvbVBvaW50IiwiQmFzZVBvaW50IiwiVG9Qb2ludCIsIkxpbmVCYXNlIiwiZHJhZ2dlZEZyb20iLCJkcmFnZ2VkVG8iLCJsYWJlbCIsInVwZGF0ZWQiLCJvbkNoYW5nZVBvaW50IiwiZGF0YSIsImlucHV0IiwiZm9jdXMiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ1N0b3AiLCJjb21tb24iLCJhbmdsZSIsInRyaWciLCJ0b0RlZ3JlZXMiLCJmcm9tTGFiZWxOb2RlIiwidG9MYWJlbE5vZGUiLCJsaW5lTGFiZWxOb2RlIiwiaGFzT3duUHJvcGVydHkiLCJSZWFjdERPTSIsImNyZWF0ZVBvcnRhbCIsInIiLCJsYWJlbENoYW5nZSIsImRyYWdDb21wIiwiY2xpY2tQb2ludCIsIngiLCJkcmFnRnJvbSIsImRyYWdUbyIsIlByb3BUeXBlcyIsImJvb2wiLCJQb2ludFR5cGUiLCJmdW5jIiwic3RyaW5nIiwib2JqZWN0Iiwic3R5bGVzIiwibGluZSIsImZpbGwiLCJzdHJva2UiLCJjb2xvciIsImRlZmF1bHRzIiwiQkxBQ0siLCJzdHJva2VXaWR0aCIsInRyYW5zaXRpb24iLCJQUklNQVJZX0RBUksiLCJhcnJvdyIsImRpc2FibGVkQXJyb3ciLCJkaXNhYmxlZFNlY29uZGFyeSIsImNvcnJlY3QiLCJ0aGVtZSIsImtleSIsImluY29ycmVjdCIsIm1pc3NpbmciLCJzdHJva2VEYXNoYXJyYXkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVPLElBQU1BLFFBQVEsR0FBRyxTQUFYQSxRQUFXLENBQUNDLElBQUQsRUFBT0MsU0FBUDtBQUFBLFNBQXFCO0FBQUEsV0FBTztBQUNsREQsTUFBQUEsSUFBSSxFQUFKQSxJQURrRDtBQUVsREMsTUFBQUEsU0FBUyxFQUFUQSxTQUZrRDtBQUdsREMsTUFBQUEsUUFBUSxFQUFFLGtCQUFDQyxLQUFELEVBQVFDLElBQVIsRUFBaUI7QUFDekIsWUFBSUEsSUFBSSxJQUFJLHdCQUFZQSxJQUFJLENBQUNDLElBQWpCLEVBQXVCRixLQUF2QixDQUFaLEVBQTJDO0FBQ3pDLGlCQUFPQyxJQUFQO0FBQ0Q7O0FBRUQsWUFBSSxDQUFDQSxJQUFMLEVBQVc7QUFDVCxpQkFBTztBQUNMSixZQUFBQSxJQUFJLEVBQUpBLElBREs7QUFFTE0sWUFBQUEsUUFBUSxFQUFFLElBRkw7QUFHTEMsWUFBQUEsSUFBSSxFQUFFSjtB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dUJBQVVBLEdBQVYsQ0FETTtBQUFBLEdBNUJTO0FBK0JwQkUsRUFBQUEsT0FBTyxFQUFFLGlCQUFDSCxLQUFELEVBQVFDLEdBQVI7QUFBQSwyQ0FDSixxQkFBUUEsR0FBUixDQURJO0FBRVBSLE1BQUFBLFdBQVcsRUFBRSxDQUZOO0FBR1BXLE1BQUFBLGVBQWUsRUFBRTtBQUhWO0FBQUE7QUEvQlcsQ0FBZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IHsgQmFzZVBvaW50IH0gZnJvbSAnLi4vcG9pbnQnO1xuaW1wb3J0IHsgdHlwZXMsIHV0aWxzLCBncmlkRHJhZ2dhYmxlLCB0cmlnIH0gZnJvbSAnQHBpZS1saWIvcGxvdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgZGlzYWJsZWQsIGRpc2FibGVkU2Vjb25kYXJ5LCBjb3JyZWN0LCBpbmNvcnJlY3QsIG1pc3NpbmcgfSBmcm9tICcuLi9zdHlsZXMnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgTWFya0xhYmVsIGZyb20gJy4uLy4uLy4uL21hcmstbGFiZWwnO1xuaW1wb3J0IGlzRW1wdHkgZnJvbSAnbG9kYXNoL2lzRW1wdHknO1xuaW1wb3J0IHsgY29sb3IgfSBmcm9tICdAcGllLWxpYi9yZW5kZXItdWknO1xuaW1wb3J0IHsgZ2V0TWlkZGxlT2ZUd29Qb2ludHMsIGVxdWFsUG9pbnRzLCBzYW1lQXhlcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IGxpbmVUb29sID0gKHR5cGUsIENvbXBvbmVudCkgPT4gKCkgPT4gKHtcbiAgdHlwZSxcbiAgQ29tcG9uZW50LFxuICBhZGRQb2ludDogKHBvaW50LCBtYXJrKSA9PiB7XG4gICAgaWYgKG1hcmsgJiYgZXF1YWxQb2ludHMobWFyay5yb290LCBwb2ludCkpIHtcbiAgICAgIHJldHVybiBtYXJrO1xuICAgIH1cblxuICAgIGlmICghbWFyaykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgYnVpbGRpbmc6IHRydWUsXG4gICAgICAgIGZyb206IHBvaW50LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoZXF1YWxQb2ludHMocG9pbnQsIG1hcmsuZnJvbSkpIHtcbiAgICAgIHJldHVybiB7IC4uLm1hcmsgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyAuLi5tYXJrLCBidWlsZGluZzogZmFsc2UsIHRvOiBwb2ludCB9O1xuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBsaW5lVG9vbENvbXBvbmVudCA9IChDb21wb25lbnQpID0+IHtcbiAgcmV0dXJuIGNsYXNzIExpbmVUb29sQ29tcG9uZW50IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgLi4udHlwZXMuVG9vbFByb3BUeXBlRmllbGRzLFxuICAgICAgZ3JhcGhQcm9wczogdHlwZXMuR3JhcGhQcm9wc1R5cGUuaXNSZXF1aXJlZCxcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgIHRoaXMuc3RhdGUgPSB7fTtcbiAgICB9XG5cbiAgICBzdGFydERyYWcgPSAoKSA9PiB0aGlzLnNldFN0YXRlKHsgbWFyazogeyAuLi50aGlzLnByb3BzLm1hcmsgfSB9KTtcblxuICAgIHN0b3BEcmFnID0gKCkgPT4ge1xuICAgICAgY29uc3QgeyBvbkNoYW5nZSwgbWFyayB9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHVwZGF0ZSA9IHsgLi4udGhpcy5zdGF0ZS5tYXJrIH07XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBtYXJrOiB1bmRlZmluZWQgfSwgKCkgPT4ge1xuICAgICAgICBjb25zdCB7IHR5cGUgfSA9IHVwZGF0ZTtcbiAgICAgICAgbGV0IHNob3VsZE5vdENoYW5nZSA9XG4gICAgICAgICAgdHlwZSAmJlxuICAgICAgICAgICh0eXBlID09PSAncGFyYWJvbGEnIHx8IHR5cGUgPT09ICdzaW5lJyB8fCB0eXBlID09PSAnYWJzb2x1dGUnIHx8IHR5cGUgPT09ICdleHBvbmVudGlhbCcpICYmXG4gICAgICAgICAgc2FtZUF4ZXModXBkYXRlLmZyb20sIHVwZGF0ZS50byk7XG4gICAgICAgIGlmICghc2hvdWxkTm90Q2hhbmdlICYmIHR5cGUgJiYgdHlwZSA9PT0gJ2V4cG9uZW50aWFsJyAmJiB1cGRhdGUuZnJvbSAmJiB1cGRhdGUudG8pIHtcbiAgICAgICAgICBzaG91bGROb3RDaGFuZ2UgPSB1cGRhdGUuZnJvbS55ID09PSAwIHx8IHVwZGF0ZS50by55ID09PSAwIHx8IHVwZGF0ZS5mcm9tLnkgKiB1cGRhdGUudG8ueSA8IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0VxdWFsKG1hcmssIHVwZGF0ZSkgJiYgIXNob3VsZE5vdENoYW5nZSkge1xuICAgICAgICAgIG9uQ2hhbmdlKG1hcmssIHVwZGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjaGFuZ2VNYXJrID0gKHsgZnJvbSwgdG8sIG1pZGRsZSB9KSA9PiB7XG4gICAgICBsZXQgbWFyayA9IHsgLi4udGhpcy5zdGF0ZS5tYXJrLCBmcm9tLCB0byB9O1xuXG4gICAgICBpZiAobWlkZGxlKSB7XG4gICAgICAgIG1hcmsgPSB7IC4uLm1hcmssIG1pZGRsZSB9O1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldFN0YXRlKHsgbWFyayB9KTtcbiAgICB9O1xuXG4gICAgY2hhbmdlTWFya1Byb3BzID0gKHsgZnJvbSwgdG8sIG1pZGRsZSB9KSA9PiB7XG4gICAgICBjb25zdCB7IG9uQ2hhbmdlLCBtYXJrIH0gPSB0aGlzLnByb3BzO1xuICAgICAgbGV0IHVwZGF0ZSA9IHsgLi4ubWFyaywgLi4udGhpcy5zdGF0ZS5tYXJrIH07XG5cbiAgICAgIGlmIChmcm9tKSB7XG4gICAgICAgIHVwZGF0ZSA9IHsgLi4udXBkYXRlLCBmcm9tIH07XG4gICAgICB9XG5cbiAgICAgIGlmICh0bykge1xuICAgICAgICB1cGRhdGUgPSB7IC4uLnVwZGF0ZSwgdG8gfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1pZGRsZSkge1xuICAgICAgICB1cGRhdGUgPSB7IC4uLnVwZGF0ZSwgbWlkZGxlIH07XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNFcXVhbChtYXJrLCB1cGRhdGUpKSB7XG4gICAgICAgIG9uQ2hhbmdlKG1hcmssIHVwZGF0ZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHsgZ3JhcGhQcm9wcywgb25DbGljaywgbGFiZWxOb2RlLCBsYWJlbE1vZGVFbmFibGVkLCBjb29yZGluYXRlc09uSG92ZXIsIGxpbWl0TGFiZWxpbmcgfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCBtYXJrID0gdGhpcy5zdGF0ZS5tYXJrID8gdGhpcy5zdGF0ZS5tYXJrIDogdGhpcy5wcm9wcy5tYXJrO1xuXG4gICAgICBjb25zdCBmcm9tID0gY2xvbmVEZWVwKG1hcmsuZnJvbSk7XG4gICAgICBjb25zdCB0byA9IGNsb25lRGVlcChtYXJrLnRvKTtcbiAgICAgIGNvbnN0IG1pZGRsZSA9IGNsb25lRGVlcChtYXJrLm1pZGRsZSk7XG5cbiAgICAgIC8vIFNFVCBESVNBQkxFRFxuICAgICAgLy8gaWYgaXQncyBhIGJhY2tncm91bmQgbWFyaywgd2UgbmVlZCB0byBmb3JjZSBkaXNhYmxlIGl0XG4gICAgICBpZiAoZnJvbSAmJiBtYXJrLmlzQmFja2dyb3VuZCkge1xuICAgICAgICBmcm9tLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRvICYmIG1hcmsuaXNCYWNrZ3JvdW5kKSB7XG4gICAgICAgIHRvLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1pZGRsZSAmJiBtYXJrLmlzQmFja2dyb3VuZCkge1xuICAgICAgICBtaWRkbGUuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Q29tcG9uZW50XG4gICAgICAgICAgZGlzYWJsZWQ9e21hcmsuZGlzYWJsZWR9XG4gICAgICAgICAgY29vcmRpbmF0ZXNPbkhvdmVyPXtjb29yZGluYXRlc09uSG92ZXJ9XG4gICAgICAgICAgY29ycmVjdG5lc3M9e21hcmsuY29ycmVjdG5lc3N9XG4gICAgICAgICAgZnJvbT17ZnJvbX1cbiAgICAgICAgICB0bz17dG99XG4gICAgICAgICAgbWlkZGxlPXttaWRkbGV9XG4gICAgICAgICAgZ3JhcGhQcm9wcz17Z3JhcGhQcm9wc31cbiAgICAgICAgICBvbkNoYW5nZT17dGhpcy5jaGFuZ2VNYXJrfVxuICAgICAgICAgIGNoYW5nZU1hcmtQcm9wcz17dGhpcy5jaGFuZ2VNYXJrUHJvcHN9XG4gICAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgICAgICBvbkRyYWdTdGFydD17dGhpcy5zdGFydERyYWd9XG4gICAgICAgICAgb25EcmFnU3RvcD17dGhpcy5zdG9wRHJhZ31cbiAgICAgICAgICBsYWJlbE5vZGU9e2xhYmVsTm9kZX1cbiAgICAgICAgICBsYWJlbE1vZGVFbmFibGVkPXtsYWJlbE1vZGVFbmFibGVkfVxuICAgICAgICAgIGxpbWl0TGFiZWxpbmc9e2xpbWl0TGFiZWxpbmd9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH1cbiAgfTtcbn07XG5cbmNvbnN0IGRyYWdPcHRzID0gKCkgPT4gKHtcbiAgYm91bmRzOiAocHJvcHMsIHsgZG9tYWluLCByYW5nZSB9KSA9PiB7XG4gICAgY29uc3QgYXJlYSA9IHV0aWxzLmxpbmVUb0FyZWEocHJvcHMuZnJvbSwgcHJvcHMudG8pO1xuICAgIHJldHVybiB1dGlscy5ib3VuZHMoYXJlYSwgZG9tYWluLCByYW5nZSk7XG4gIH0sXG4gIGFuY2hvclBvaW50OiAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGZyb20gfSA9IHByb3BzO1xuICAgIHJldHVybiBmcm9tO1xuICB9LFxuICBmcm9tRGVsdGE6IChwcm9wcywgZGVsdGEpID0+IHtcbiAgICBjb25zdCB7IGZyb20sIHRvIH0gPSBwcm9wcztcbiAgICByZXR1cm4ge1xuICAgICAgZnJvbTogdXRpbHMucG9pbnQoZnJvbSkuYWRkKHV0aWxzLnBvaW50KGRlbHRhKSksXG4gICAgICB0bzogdXRpbHMucG9pbnQodG8pLmFkZCh1dGlscy5wb2ludChkZWx0YSkpLFxuICAgIH07XG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IGxpbmVCYXNlID0gKENvbXAsIG9wdHMpID0+IHtcbiAgY29uc3QgRHJhZ2dhYmxlQ29tcCA9IGdyaWREcmFnZ2FibGUoZHJhZ09wdHMoKSkoQ29tcCk7XG5cbiAgY29uc3QgRnJvbVBvaW50ID0gb3B0cyAmJiBvcHRzLmZyb20gPyBvcHRzLmZyb20gOiBCYXNlUG9pbnQ7XG4gIGNvbnN0IFRvUG9pbnQgPSBvcHRzICYmIG9wdHMudG8gPyBvcHRzLnRvIDogQmFzZVBvaW50O1xuXG4gIGNsYXNzIExpbmVCYXNlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgY29vcmRpbmF0ZXNPbkhvdmVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgIGdyYXBoUHJvcHM6IHR5cGVzLkdyYXBoUHJvcHNUeXBlLFxuICAgICAgZnJvbTogdHlwZXMuUG9pbnRUeXBlLFxuICAgICAgdG86IHR5cGVzLlBvaW50VHlwZSxcbiAgICAgIG1pZGRsZTogdHlwZXMuUG9pbnRUeXBlLFxuICAgICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgb25EcmFnU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgb25EcmFnU3RvcDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIGNvcnJlY3RuZXNzOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgICAgbGFiZWxOb2RlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgbGFiZWxNb2RlRW5hYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBjaGFuZ2VNYXJrUHJvcHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIH07XG5cbiAgICBvbkNoYW5nZVBvaW50ID0gKHBvaW50KSA9PiB7XG4gICAgICBjb25zdCB7IG1pZGRsZSwgb25DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCB7IGZyb20sIHRvIH0gPSBwb2ludDtcblxuICAgICAgLy8gYmVjYXVzZSBwb2ludC5mcm9tLmxhYmVsIGFuZCBwb2ludC50by5sYWJlbCBjYW4gYmUgZGlmZmVyZW50XG4gICAgICBpZiAoIWVxdWFsUG9pbnRzKGZyb20sIHRvKSkge1xuICAgICAgICBpZiAobWlkZGxlKSB7XG4gICAgICAgICAgcG9pbnQubWlkZGxlID0geyAuLi5taWRkbGUsIC4uLmdldE1pZGRsZU9mVHdvUG9pbnRzKGZyb20sIHRvKSB9O1xuICAgICAgICB9XG5cbiAgICAgICAgb25DaGFuZ2UocG9pbnQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBkcmFnQ29tcCA9ICh7IGZyb206IGRyYWdnZWRGcm9tLCB0bzogZHJhZ2dlZFRvIH0pID0+IHtcbiAgICAgIGNvbnN0IHsgZnJvbSwgdG8sIG9uQ2hhbmdlLCBtaWRkbGUgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGlmIChmcm9tLmxhYmVsKSB7XG4gICAgICAgIGRyYWdnZWRGcm9tLmxhYmVsID0gZnJvbS5sYWJlbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRvLmxhYmVsKSB7XG4gICAgICAgIGRyYWdnZWRUby5sYWJlbCA9IHRvLmxhYmVsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB1cGRhdGVkID0geyBmcm9tOiBkcmFnZ2VkRnJvbSwgdG86IGRyYWdnZWRUbyB9O1xuXG4gICAgICBpZiAobWlkZGxlKSB7XG4gICAgICAgIHVwZGF0ZWQubWlkZGxlID0geyAuLi5taWRkbGUsIC4uLmdldE1pZGRsZU9mVHdvUG9pbnRzKGRyYWdnZWRGcm9tLCBkcmFnZ2VkVG8pIH07XG4gICAgICB9XG5cbiAgICAgIG9uQ2hhbmdlKHVwZGF0ZWQpO1xuICAgIH07XG5cbiAgICBkcmFnRnJvbSA9IChkcmFnZ2VkRnJvbSkgPT4ge1xuICAgICAgY29uc3QgeyBmcm9tLCB0byB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgaWYgKGZyb20ubGFiZWwpIHtcbiAgICAgICAgZHJhZ2dlZEZyb20ubGFiZWwgPSBmcm9tLmxhYmVsO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWVxdWFsUG9pbnRzKGRyYWdnZWRGcm9tLCB0bykpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZVBvaW50KHsgZnJvbTogZHJhZ2dlZEZyb20sIHRvOiB0byB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZHJhZ1RvID0gKGRyYWdnZWRUbykgPT4ge1xuICAgICAgY29uc3QgeyBmcm9tLCB0byB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgaWYgKHRvLmxhYmVsKSB7XG4gICAgICAgIGRyYWdnZWRUby5sYWJlbCA9IHRvLmxhYmVsO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWVxdWFsUG9pbnRzKGZyb20sIGRyYWdnZWRUbykpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZVBvaW50KHsgZnJvbTogZnJvbSwgdG86IGRyYWdnZWRUbyB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgbGFiZWxDaGFuZ2UgPSAocG9pbnQsIHR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHsgY2hhbmdlTWFya1Byb3BzIH0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgdXBkYXRlID0geyAuLi5wb2ludCB9O1xuXG4gICAgICBpZiAoIXBvaW50LmxhYmVsIHx8IGlzRW1wdHkocG9pbnQubGFiZWwpKSB7XG4gICAgICAgIGRlbGV0ZSB1cGRhdGUubGFiZWw7XG4gICAgICB9XG5cbiAgICAgIGNoYW5nZU1hcmtQcm9wcyh7IFt0eXBlXTogdXBkYXRlIH0pO1xuICAgIH07XG5cbiAgICBjbGlja1BvaW50ID0gKHBvaW50LCB0eXBlLCBkYXRhKSA9PiB7XG4gICAgICBjb25zdCB7IGNoYW5nZU1hcmtQcm9wcywgZGlzYWJsZWQsIGZyb20sIHRvLCBsYWJlbE1vZGVFbmFibGVkLCBsaW1pdExhYmVsaW5nLCBvbkNsaWNrIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICBpZiAoIWxhYmVsTW9kZUVuYWJsZWQpIHtcbiAgICAgICAgb25DbGljayhwb2ludCB8fCBkYXRhKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBsaW1pdCBsYWJlbGluZyB0aGUgcG9pbnRzIG9mIHRoZSBsaW5lXG4gICAgICBpZiAobGltaXRMYWJlbGluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlID09PSAnbWlkZGxlJyAmJiAhcG9pbnQgJiYgZnJvbSAmJiB0bykge1xuICAgICAgICBwb2ludCA9IHsgLi4ucG9pbnQsIC4uLmdldE1pZGRsZU9mVHdvUG9pbnRzKGZyb20sIHRvKSB9O1xuICAgICAgfVxuXG4gICAgICBjaGFuZ2VNYXJrUHJvcHMoeyBmcm9tLCB0bywgW3R5cGVdOiB7IGxhYmVsOiAnJywgLi4ucG9pbnQgfSB9KTtcblxuICAgICAgaWYgKHRoaXMuaW5wdXRbdHlwZV0pIHtcbiAgICAgICAgdGhpcy5pbnB1dFt0eXBlXS5mb2N1cygpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBJTVBPUlRBTlQsIGRvIG5vdCByZW1vdmVcbiAgICBpbnB1dCA9IHt9O1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBjb29yZGluYXRlc09uSG92ZXIsXG4gICAgICAgIGdyYXBoUHJvcHMsXG4gICAgICAgIG9uRHJhZ1N0YXJ0LFxuICAgICAgICBvbkRyYWdTdG9wLFxuICAgICAgICBmcm9tLFxuICAgICAgICB0byxcbiAgICAgICAgbWlkZGxlLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgY29ycmVjdG5lc3MsXG4gICAgICAgIG9uQ2xpY2ssXG4gICAgICAgIGxhYmVsTm9kZSxcbiAgICAgICAgbGFiZWxNb2RlRW5hYmxlZCxcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgY29tbW9uID0geyBncmFwaFByb3BzLCBvbkRyYWdTdGFydCwgb25EcmFnU3RvcCwgZGlzYWJsZWQsIGNvcnJlY3RuZXNzLCBvbkNsaWNrIH07XG4gICAgICBjb25zdCBhbmdsZSA9IHRvID8gdHJpZy50b0RlZ3JlZXModHJpZy5hbmdsZShmcm9tLCB0bykpIDogMDtcblxuICAgICAgbGV0IGZyb21MYWJlbE5vZGUgPSBudWxsO1xuICAgICAgbGV0IHRvTGFiZWxOb2RlID0gbnVsbDtcbiAgICAgIGxldCBsaW5lTGFiZWxOb2RlID0gbnVsbDtcblxuICAgICAgaWYgKGxhYmVsTm9kZSkge1xuICAgICAgICBpZiAoZnJvbSAmJiBmcm9tLmhhc093blByb3BlcnR5KCdsYWJlbCcpKSB7XG4gICAgICAgICAgZnJvbUxhYmVsTm9kZSA9IFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgICAgICAgIDxNYXJrTGFiZWxcbiAgICAgICAgICAgICAgaW5wdXRSZWY9eyhyKSA9PiAodGhpcy5pbnB1dC5mcm9tID0gcil9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshbGFiZWxNb2RlRW5hYmxlZH1cbiAgICAgICAgICAgICAgbWFyaz17ZnJvbX1cbiAgICAgICAgICAgICAgZ3JhcGhQcm9wcz17Z3JhcGhQcm9wc31cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhsYWJlbCkgPT4gdGhpcy5sYWJlbENoYW5nZSh7IC4uLmZyb20sIGxhYmVsIH0sICdmcm9tJyl9XG4gICAgICAgICAgICAvPixcbiAgICAgICAgICAgIGxhYmVsTm9kZSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRvICYmIHRvLmhhc093blByb3BlcnR5KCdsYWJlbCcpKSB7XG4gICAgICAgICAgdG9MYWJlbE5vZGUgPSBSZWFjdERPTS5jcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICA8TWFya0xhYmVsXG4gICAgICAgICAgICAgIGlucHV0UmVmPXsocikgPT4gKHRoaXMuaW5wdXQudG8gPSByKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFsYWJlbE1vZGVFbmFibGVkfVxuICAgICAgICAgICAgICBtYXJrPXt0b31cbiAgICAgICAgICAgICAgZ3JhcGhQcm9wcz17Z3JhcGhQcm9wc31cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhsYWJlbCkgPT4gdGhpcy5sYWJlbENoYW5nZSh7IC4uLnRvLCBsYWJlbCB9LCAndG8nKX1cbiAgICAgICAgICAgIC8+LFxuICAgICAgICAgICAgbGFiZWxOb2RlLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWlkZGxlICYmIG1pZGRsZS5oYXNPd25Qcm9wZXJ0eSgnbGFiZWwnKSkge1xuICAgICAgICAgIGxpbmVMYWJlbE5vZGUgPSBSZWFjdERPTS5jcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICA8TWFya0xhYmVsXG4gICAgICAgICAgICAgIGlucHV0UmVmPXsocikgPT4gKHRoaXMuaW5wdXQubWlkZGxlID0gcil9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshbGFiZWxNb2RlRW5hYmxlZH1cbiAgICAgICAgICAgICAgbWFyaz17bWlkZGxlfVxuICAgICAgICAgICAgICBncmFwaFByb3BzPXtncmFwaFByb3BzfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGxhYmVsKSA9PiB0aGlzLmxhYmVsQ2hhbmdlKHsgLi4ubWlkZGxlLCBsYWJlbCB9LCAnbWlkZGxlJyl9XG4gICAgICAgICAgICAvPixcbiAgICAgICAgICAgIGxhYmVsTm9kZSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxnPlxuICAgICAgICAgIHt0byAmJiAoXG4gICAgICAgICAgICA8RHJhZ2dhYmxlQ29tcFxuICAgICAgICAgICAgICBmcm9tPXtmcm9tfVxuICAgICAgICAgICAgICB0bz17dG99XG4gICAgICAgICAgICAgIG1pZGRsZT17bWlkZGxlfVxuICAgICAgICAgICAgICBvbkRyYWc9e3RoaXMuZHJhZ0NvbXB9XG4gICAgICAgICAgICAgIHsuLi5jb21tb259XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eyhkYXRhKSA9PiB0aGlzLmNsaWNrUG9pbnQobWlkZGxlLCAnbWlkZGxlJywgZGF0YSl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2xpbmVMYWJlbE5vZGV9XG5cbiAgICAgICAgICA8RnJvbVBvaW50XG4gICAgICAgICAgICB4PXtmcm9tLnh9XG4gICAgICAgICAgICB5PXtmcm9tLnl9XG4gICAgICAgICAgICBsYWJlbE5vZGU9e2xhYmVsTm9kZX1cbiAgICAgICAgICAgIGNvb3JkaW5hdGVzT25Ib3Zlcj17Y29vcmRpbmF0ZXNPbkhvdmVyfVxuICAgICAgICAgICAgb25EcmFnPXt0aGlzLmRyYWdGcm9tfVxuICAgICAgICAgICAgey4uLmNvbW1vbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eyhkYXRhKSA9PiB0aGlzLmNsaWNrUG9pbnQoZnJvbSwgJ2Zyb20nLCBkYXRhKX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtmcm9tTGFiZWxOb2RlfVxuXG4gICAgICAgICAge3RvICYmIChcbiAgICAgICAgICAgIDxUb1BvaW50XG4gICAgICAgICAgICAgIHg9e3RvLnh9XG4gICAgICAgICAgICAgIHk9e3RvLnl9XG4gICAgICAgICAgICAgIGFuZ2xlPXthbmdsZX0gLy9hbmdsZSArIDQ1fVxuICAgICAgICAgICAgICBsYWJlbE5vZGU9e2xhYmVsTm9kZX1cbiAgICAgICAgICAgICAgY29vcmRpbmF0ZXNPbkhvdmVyPXtjb29yZGluYXRlc09uSG92ZXJ9XG4gICAgICAgICAgICAgIG9uRHJhZz17dGhpcy5kcmFnVG99XG4gICAgICAgICAgICAgIHsuLi5jb21tb259XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eyhkYXRhKSA9PiB0aGlzLmNsaWNrUG9pbnQodG8sICd0bycsIGRhdGEpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHt0b0xhYmVsTm9kZX1cbiAgICAgICAgPC9nPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gTGluZUJhc2U7XG59O1xuXG5leHBvcnQgY29uc3Qgc3R5bGVzID0ge1xuICBsaW5lOiAoKSA9PiAoe1xuICAgIGZpbGw6ICd0cmFuc3BhcmVudCcsXG4gICAgc3Ryb2tlOiBjb2xvci5kZWZhdWx0cy5CTEFDSyxcbiAgICBzdHJva2VXaWR0aDogMyxcbiAgICB0cmFuc2l0aW9uOiAnc3Ryb2tlIDIwMG1zIGVhc2UtaW4sIHN0cm9rZS13aWR0aCAyMDBtcyBlYXNlLWluJyxcbiAgICAnJjpob3Zlcic6IHtcbiAgICAgIHN0cm9rZVdpZHRoOiA2LFxuICAgICAgc3Ryb2tlOiBjb2xvci5kZWZhdWx0cy5QUklNQVJZX0RBUkssXG4gICAgfSxcbiAgfSksXG4gIGFycm93OiAoKSA9PiAoe1xuICAgIGZpbGw6IGNvbG9yLmRlZmF1bHRzLkJMQUNLLFxuICB9KSxcbiAgZGlzYWJsZWRBcnJvdzogKCkgPT4gKHtcbiAgICAuLi5kaXNhYmxlZFNlY29uZGFyeSgpLFxuICB9KSxcbiAgZGlzYWJsZWRTZWNvbmRhcnk6ICgpID0+ICh7XG4gICAgLi4uZGlzYWJsZWRTZWNvbmRhcnkoJ3N0cm9rZScpLFxuICAgIHN0cm9rZVdpZHRoOiAyLFxuICB9KSxcbiAgZGlzYWJsZWQ6ICgpID0+ICh7XG4gICAgLi4uZGlzYWJsZWQoJ3N0cm9rZScpLFxuICAgIHN0cm9rZVdpZHRoOiAyLFxuICB9KSxcbiAgY29ycmVjdDogKHRoZW1lLCBrZXkpID0+ICh7XG4gICAgLi4uY29ycmVjdChrZXkpLFxuICB9KSxcbiAgaW5jb3JyZWN0OiAodGhlbWUsIGtleSkgPT4gKHtcbiAgICAuLi5pbmNvcnJlY3Qoa2V5KSxcbiAgfSksXG4gIG1pc3Npbmc6ICh0aGVtZSwga2V5KSA9PiAoe1xuICAgIC4uLm1pc3Npbmcoa2V5KSxcbiAgICBzdHJva2VXaWR0aDogMSxcbiAgICBzdHJva2VEYXNoYXJyYXk6ICc0IDMnLFxuICB9KSxcbn07XG4iXX0=
@@ -84,10 +84,10 @@ var RawLinePath = /*#__PURE__*/function (_React$Component) {
84
84
 
85
85
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(vx.LinePath, (0, _extends2["default"])({
86
86
  data: data,
87
- className: (0, _classnames["default"])(classes.drawLine, disabled && classes.disabled, classes[correctness], className)
87
+ className: (0, _classnames["default"])(classes.drawLine, disabled && classes.disabledSecondary, classes[correctness], className)
88
88
  }, rest)), /*#__PURE__*/_react["default"].createElement(vx.LinePath, (0, _extends2["default"])({
89
89
  data: data,
90
- className: (0, _classnames["default"])(classes.line, isDragging && classes.dragging, disabled && classes.disabled, classes[correctness], className)
90
+ className: (0, _classnames["default"])(classes.line, isDragging && classes.dragging, disabled && classes.disabledSecondary, classes[correctness], className)
91
91
  }, rest)));
92
92
  }
93
93
  }]);
@@ -113,8 +113,8 @@ exports.RawLinePath = RawLinePath;
113
113
 
114
114
  var dragging = function dragging() {
115
115
  return {
116
- strokeWidth: 7,
117
- stroke: _renderUi.color.secondaryLight()
116
+ strokeWidth: 4,
117
+ stroke: _renderUi.color.defaults.BLACK
118
118
  };
119
119
  };
120
120
 
@@ -123,10 +123,10 @@ var LinePath = (0, _styles.withStyles)(function (theme) {
123
123
  drawLine: {
124
124
  fill: 'none',
125
125
  strokeWidth: 2,
126
- stroke: _renderUi.color.secondaryLight()
126
+ stroke: _renderUi.color.black()
127
127
  },
128
128
  line: {
129
- strokeWidth: 6,
129
+ strokeWidth: 3,
130
130
  fill: 'none',
131
131
  transition: 'stroke-width 200ms ease-in, stroke 200ms ease-in',
132
132
  stroke: 'transparent',
@@ -136,10 +136,16 @@ var LinePath = (0, _styles.withStyles)(function (theme) {
136
136
  disabled: _objectSpread(_objectSpread({}, (0, _styles2.disabled)('stroke')), {}, {
137
137
  strokeWidth: 2
138
138
  }),
139
+ disabledSecondary: _objectSpread(_objectSpread({}, (0, _styles2.disabledSecondary)('stroke')), {}, {
140
+ strokeWidth: 2
141
+ }),
139
142
  correct: _objectSpread({}, (0, _styles2.correct)('stroke')),
140
143
  incorrect: _objectSpread({}, (0, _styles2.incorrect)('stroke')),
141
- missing: _objectSpread({}, (0, _styles2.missing)('stroke'))
144
+ missing: _objectSpread(_objectSpread({}, (0, _styles2.missing)('stroke')), {}, {
145
+ strokeWidth: 1,
146
+ strokeDasharray: '4 3'
147
+ })
142
148
  };
143
149
  })(RawLinePath);
144
150
  exports.LinePath = LinePath;
145
- //# sourceMappingURL=line-path.js.map
151
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29scy9zaGFyZWQvbGluZS9saW5lLXBhdGguanN4Il0sIm5hbWVzIjpbIlJhd0xpbmVQYXRoIiwicHJvcHMiLCJkYXRhIiwiY2xhc3NlcyIsImNsYXNzTmFtZSIsImRpc2FibGVkIiwiY29ycmVjdG5lc3MiLCJmcm9tIiwidG8iLCJncmFwaFByb3BzIiwiaXNEcmFnZ2luZyIsInJlc3QiLCJkcmF3TGluZSIsImRpc2FibGVkU2Vjb25kYXJ5IiwibGluZSIsImRyYWdnaW5nIiwiUmVhY3QiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJvYmplY3QiLCJhcnJheU9mIiwibnVtYmVyIiwidHlwZXMiLCJHcmFwaFByb3BzVHlwZSIsImlzUmVxdWlyZWQiLCJib29sIiwiUG9pbnRUeXBlIiwic3Ryb2tlV2lkdGgiLCJzdHJva2UiLCJjb2xvciIsImRlZmF1bHRzIiwiQkxBQ0siLCJMaW5lUGF0aCIsInRoZW1lIiwiZmlsbCIsImJsYWNrIiwidHJhbnNpdGlvbiIsImNvcnJlY3QiLCJpbmNvcnJlY3QiLCJtaXNzaW5nIiwic3Ryb2tlRGFzaGFycmF5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7OztJQUVhQSxXOzs7Ozs7Ozs7Ozs7V0FrQlgsa0JBQVM7QUFDUDtBQUNBLHdCQUF1RyxLQUFLQyxLQUE1RztBQUFBLFVBQVFDLElBQVIsZUFBUUEsSUFBUjtBQUFBLFVBQWNDLE9BQWQsZUFBY0EsT0FBZDtBQUFBLFVBQXVCQyxTQUF2QixlQUF1QkEsU0FBdkI7QUFBQSxVQUFrQ0MsUUFBbEMsZUFBa0NBLFFBQWxDO0FBQUEsVUFBNENDLFdBQTVDLGVBQTRDQSxXQUE1QztBQUFBLFVBQXlEQyxJQUF6RCxlQUF5REEsSUFBekQ7QUFBQSxVQUErREMsRUFBL0QsZUFBK0RBLEVBQS9EO0FB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Six3QkFBVSxRQUFWLENBREksQ0F6Qm9DO0FBNEI3Q0MsSUFBQUEsT0FBTyxrQ0FDRixzQkFBUSxRQUFSLENBREU7QUFFTFosTUFBQUEsV0FBVyxFQUFFLENBRlI7QUFHTGEsTUFBQUEsZUFBZSxFQUFFO0FBSFo7QUE1QnNDLEdBQVo7QUFBQSxDQUFYLEVBaUNwQnpDLFdBakNvQixDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgeyB0eXBlcyB9IGZyb20gJ0BwaWUtbGliL3Bsb3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBkaXNhYmxlZCwgY29ycmVjdCwgaW5jb3JyZWN0LCBtaXNzaW5nLCBkaXNhYmxlZFNlY29uZGFyeSB9IGZyb20gJy4uL3N0eWxlcyc7XG5pbXBvcnQgKiBhcyB2eCBmcm9tICdAdngvc2hhcGUnO1xuaW1wb3J0IHsgY29sb3IgfSBmcm9tICdAcGllLWxpYi9yZW5kZXItdWknO1xuXG5leHBvcnQgY2xhc3MgUmF3TGluZVBhdGggZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGRhdGE6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5udW1iZXIpKSxcbiAgICBncmFwaFByb3BzOiB0eXBlcy5HcmFwaFByb3BzVHlwZS5pc1JlcXVpcmVkLFxuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjb3JyZWN0bmVzczogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBmcm9tOiB0eXBlcy5Qb2ludFR5cGUsXG4gICAgdG86IHR5cGVzLlBvaW50VHlwZSxcbiAgICBpc0RyYWdnaW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGZyb206IHt9LFxuICAgIHRvOiB7fSxcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbiAgICBjb25zdCB7IGRhdGEsIGNsYXNzZXMsIGNsYXNzTmFtZSwgZGlzYWJsZWQsIGNvcnJlY3RuZXNzLCBmcm9tLCB0bywgZ3JhcGhQcm9wcywgaXNEcmFnZ2luZywgLi4ucmVzdCB9ID0gdGhpcy5wcm9wcztcbiAgICAvKiBlc2xpbnQtZW5hYmxlICovXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICA8dnguTGluZVBhdGhcbiAgICAgICAgICBkYXRhPXtkYXRhfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcbiAgICAgICAgICAgIGNsYXNzZXMuZHJhd0xpbmUsXG4gICAgICAgICAgICBkaXNhYmxlZCAmJiBjbGFzc2VzLmRpc2FibGVkU2Vjb25kYXJ5LFxuICAgICAgICAgICAgY2xhc3Nlc1tjb3JyZWN0bmVzc10sXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgKX1cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAgPHZ4LkxpbmVQYXRoXG4gICAgICAgICAgZGF0YT17ZGF0YX1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICAgICAgICBjbGFzc2VzLmxpbmUsXG4gICAgICAgICAgICBpc0RyYWdnaW5nICYmIGNsYXNzZXMuZHJhZ2dpbmcsXG4gICAgICAgICAgICBkaXNhYmxlZCAmJiBjbGFzc2VzLmRpc2FibGVkU2Vjb25kYXJ5LFxuICAgICAgICAgICAgY2xhc3Nlc1tjb3JyZWN0bmVzc10sXG4gICAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgKX1cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBkcmFnZ2luZyA9ICgpID0+ICh7XG4gIHN0cm9rZVdpZHRoOiA0LFxuICBzdHJva2U6IGNvbG9yLmRlZmF1bHRzLkJMQUNLLFxufSk7XG5cbmV4cG9ydCBjb25zdCBMaW5lUGF0aCA9IHdpdGhTdHlsZXMoKHRoZW1lKSA9PiAoe1xuICBkcmF3TGluZToge1xuICAgIGZpbGw6ICdub25lJyxcbiAgICBzdHJva2VXaWR0aDogMixcbiAgICBzdHJva2U6IGNvbG9yLmJsYWNrKCksXG4gIH0sXG4gIGxpbmU6IHtcbiAgICBzdHJva2VXaWR0aDogMyxcbiAgICBmaWxsOiAnbm9uZScsXG4gICAgdHJhbnNpdGlvbjogJ3N0cm9rZS13aWR0aCAyMDBtcyBlYXNlLWluLCBzdHJva2UgMjAwbXMgZWFzZS1pbicsXG4gICAgc3Ryb2tlOiAndHJhbnNwYXJlbnQnLFxuICAgICcmOmhvdmVyJzogZHJhZ2dpbmcodGhlbWUpLFxuICB9LFxuICBkcmFnZ2luZzogZHJhZ2dpbmcodGhlbWUpLFxuICBkaXNhYmxlZDoge1xuICAgIC4uLmRpc2FibGVkKCdzdHJva2UnKSxcbiAgICBzdHJva2VXaWR0aDogMixcbiAgfSxcbiAgZGlzYWJsZWRTZWNvbmRhcnk6IHtcbiAgICAuLi5kaXNhYmxlZFNlY29uZGFyeSgnc3Ryb2tlJyksXG4gICAgc3Ryb2tlV2lkdGg6IDIsXG4gIH0sXG4gIGNvcnJlY3Q6IHtcbiAgICAuLi5jb3JyZWN0KCdzdHJva2UnKSxcbiAgfSxcbiAgaW5jb3JyZWN0OiB7XG4gICAgLi4uaW5jb3JyZWN0KCdzdHJva2UnKSxcbiAgfSxcbiAgbWlzc2luZzoge1xuICAgIC4uLm1pc3NpbmcoJ3N0cm9rZScpLFxuICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgIHN0cm9rZURhc2hhcnJheTogJzQgMycsXG4gIH0sXG59KSkoUmF3TGluZVBhdGgpO1xuIl19
@@ -19,7 +19,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
19
19
 
20
20
  var _plot = require("@pie-lib/plot");
21
21
 
22
- var _linePath = require("../line/line-path");
22
+ var _linePath = require("./line-path");
23
23
 
24
24
  var _curve = require("@vx/curve");
25
25
 
@@ -99,7 +99,9 @@ var withPointsGenerationLinePath = function withPointsGenerationLinePath(getPoin
99
99
  root: from,
100
100
  edge: to
101
101
  }),
102
- dataPoints = _getPoints.dataPoints;
102
+ dataPoints = _getPoints.dataPoints,
103
+ _getPoints$enableCurv = _getPoints.enableCurve,
104
+ enableCurve = _getPoints$enableCurv === void 0 ? true : _getPoints$enableCurv;
103
105
 
104
106
  var raw = dataPoints.map(function (d) {
105
107
  return [graphProps.scale.x(d.x), graphProps.scale.y(d.y)];
@@ -113,12 +115,21 @@ var withPointsGenerationLinePath = function withPointsGenerationLinePath(getPoin
113
115
  disabled: disabled,
114
116
  correctness: correctness
115
117
  };
116
- return /*#__PURE__*/_react["default"].createElement(_linePath.LinePath, (0, _extends2["default"])({
117
- data: raw,
118
- from: from,
119
- to: to,
120
- curve: _curve.curveMonotoneX
121
- }, common, rest));
118
+
119
+ if (!enableCurve) {
120
+ return /*#__PURE__*/_react["default"].createElement(_linePath.LinePath, (0, _extends2["default"])({
121
+ data: raw,
122
+ from: from,
123
+ to: to
124
+ }, common, rest));
125
+ } else {
126
+ return /*#__PURE__*/_react["default"].createElement(_linePath.LinePath, (0, _extends2["default"])({
127
+ data: raw,
128
+ from: from,
129
+ to: to,
130
+ curve: _curve.curveMonotoneX
131
+ }, common, rest));
132
+ }
122
133
  };
123
134
 
124
135
  LinePathComponent.propTypes = {
@@ -141,4 +152,4 @@ var withRootEdge = function withRootEdge(getPoints) {
141
152
  };
142
153
 
143
154
  exports.withRootEdge = withRootEdge;
144
- //# sourceMappingURL=with-root-edge.js.map
155
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29scy9zaGFyZWQvbGluZS93aXRoLXJvb3QtZWRnZS5qc3giXSwibmFtZXMiOlsidG9Sb290RWRnZSIsIm0iLCJvdXQiLCJyb290IiwiZnJvbSIsImVkZ2UiLCJ0byIsInVuZGVmaW5lZCIsInRvRnJvbVRvIiwicm9vdEVkZ2VUb0Zyb21Ub1dyYXBwZXIiLCJCYXNlQ29tcCIsIldyYXBwZXIiLCJwcm9wcyIsIm1hcmsiLCJvbkNoYW5nZSIsImN1cnJlbnQiLCJuZXh0IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiZnVuYyIsIm9iamVjdCIsInJvb3RFZGdlQ29tcG9uZW50IiwiUm9vdEVkZ2VDb21wIiwiQmFzZUNvbXBvbmVudCIsIndpdGhQb2ludHNHZW5lcmF0aW9uTGluZVBhdGgiLCJnZXRQb2ludHMiLCJMaW5lUGF0aENvbXBvbmVudCIsImdyYXBoUHJvcHMiLCJvbkNsaWNrIiwib25EcmFnU3RhcnQiLCJvbkRyYWdTdG9wIiwiZGlzYWJsZWQiLCJjb3JyZWN0bmVzcyIsInJlc3QiLCJkYXRhUG9pbnRzIiwiZW5hYmxlQ3VydmUiLCJyYXciLCJtYXAiLCJkIiwic2NhbGUiLCJ4IiwieSIsImNvbW1vbiIsImN1cnZlTW9ub3RvbmVYIiwidHlwZXMiLCJHcmFwaFByb3BzVHlwZSIsImlzUmVxdWlyZWQiLCJQb2ludFR5cGUiLCJib29sIiwic3RyaW5nIiwid2l0aFJvb3RFZGdlIiwiTGluZVBhdGhDb21wIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFQSxJQUFNQSxVQUFVLEdBQUcsU0FBYkEsVUFBYSxDQUFDQyxDQUFELEVBQU87QUFDeEIsTUFBTUMsR0FBRyxxQkFBUUQsQ0FBUixDQUFUOztBQUNBQyxFQUFBQSxHQUFHLENBQUNDLElBQUoscUJBQWdCRixDQUFDLENBQUNHLElBQWxCO0FBQ0FGLEVBQUFBLEdBQUcsQ0FBQ0csSUFB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LEVBQVA7QUFDRDtBQUNGLEdBMUJEOztBQTRCQVAsRUFBQUEsaUJBQWlCLENBQUNULFNBQWxCLEdBQThCO0FBQzVCVSxJQUFBQSxVQUFVLEVBQUVpQixZQUFNQyxjQUFOLENBQXFCQyxVQURMO0FBRTVCMUMsSUFBQUEsSUFBSSxFQUFFd0MsWUFBTUcsU0FBTixDQUFnQkQsVUFGTTtBQUc1QnhDLElBQUFBLEVBQUUsRUFBRXNDLFlBQU1HLFNBSGtCO0FBSTVCbkIsSUFBQUEsT0FBTyxFQUFFVixzQkFBVUMsSUFKUztBQUs1QlUsSUFBQUEsV0FBVyxFQUFFWCxzQkFBVUMsSUFMSztBQU01QlcsSUFBQUEsVUFBVSxFQUFFWixzQkFBVUMsSUFOTTtBQU81QkwsSUFBQUEsUUFBUSxFQUFFSSxzQkFBVUMsSUFQUTtBQVE1QlksSUFBQUEsUUFBUSxFQUFFYixzQkFBVThCLElBUlE7QUFTNUJoQixJQUFBQSxXQUFXLEVBQUVkLHNCQUFVK0I7QUFUSyxHQUE5QjtBQVlBLFNBQU92QixpQkFBUDtBQUNELENBMUNEOztBQTRDTyxJQUFNd0IsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQ3pCLFNBQUQsRUFBZTtBQUN6QyxNQUFNMEIsWUFBWSxHQUFHM0IsNEJBQTRCLENBQUNDLFNBQUQsQ0FBakQ7QUFDQSxTQUFPLHFCQUFTMEIsWUFBVCxDQUFQO0FBQ0QsQ0FITSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgdHlwZXMgfSBmcm9tICdAcGllLWxpYi9wbG90JztcbmltcG9ydCB7IExpbmVQYXRoIH0gZnJvbSAnLi9saW5lLXBhdGgnO1xuaW1wb3J0IHsgY3VydmVNb25vdG9uZVggfSBmcm9tICdAdngvY3VydmUnO1xuaW1wb3J0IHsgbGluZUJhc2UsIGxpbmVUb29sQ29tcG9uZW50IH0gZnJvbSAnLi9pbmRleCc7XG5cbmNvbnN0IHRvUm9vdEVkZ2UgPSAobSkgPT4ge1xuICBjb25zdCBvdXQgPSB7IC4uLm0gfTtcbiAgb3V0LnJvb3QgPSB7IC4uLm0uZnJvbSB9O1xuICBvdXQuZWRnZSA9IG0udG8gPyB7IC4uLm0udG8gfSA6IHVuZGVmaW5lZDtcbiAgZGVsZXRlIG91dC5mcm9tO1xuICBkZWxldGUgb3V0LnRvO1xuICByZXR1cm4gb3V0O1xufTtcblxuY29uc3QgdG9Gcm9tVG8gPSAobSkgPT4ge1xuICBjb25zdCBvdXQgPSB7IC4uLm0gfTtcbiAgb3V0LmZyb20gPSB7IC4uLm0ucm9vdCB9O1xuICBvdXQudG8gPSBtLmVkZ2UgPyB7IC4uLm0uZWRnZSB9IDogdW5kZWZpbmVkO1xuICBkZWxldGUgb3V0LnJvb3Q7XG4gIGRlbGV0ZSBvdXQuZWRnZTtcbiAgcmV0dXJuIG91dDtcbn07XG5cbmV4cG9ydCBjb25zdCByb290RWRnZVRvRnJvbVRvV3JhcHBlciA9IChCYXNlQ29tcCkgPT4ge1xuICBjb25zdCBXcmFwcGVyID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgbSA9IHRvRnJvbVRvKHByb3BzLm1hcmspO1xuXG4gICAgY29uc3Qgb25DaGFuZ2UgPSAoY3VycmVudCwgbmV4dCkgPT4ge1xuICAgICAgcHJvcHMub25DaGFuZ2UodG9Sb290RWRnZShjdXJyZW50KSwgdG9Sb290RWRnZShuZXh0KSk7XG4gICAgfTtcblxuICAgIHJldHVybiA8QmFzZUNvbXAgey4uLnByb3BzfSBtYXJrPXttfSBvbkNoYW5nZT17b25DaGFuZ2V9IC8+O1xuICB9O1xuXG4gIFdyYXBwZXIucHJvcFR5cGVzID0ge1xuICAgIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBtYXJrOiBQcm9wVHlwZXMub2JqZWN0LFxuICB9O1xuXG4gIHJldHVybiBXcmFwcGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IHJvb3RFZGdlQ29tcG9uZW50ID0gKFJvb3RFZGdlQ29tcCkgPT4ge1xuICBjb25zdCBCYXNlQ29tcG9uZW50ID0gbGluZVRvb2xDb21wb25lbnQoUm9vdEVkZ2VDb21wKTtcbiAgcmV0dXJuIHJvb3RFZGdlVG9Gcm9tVG9XcmFwcGVyKEJhc2VDb21wb25lbnQpO1xufTtcblxuY29uc3Qgd2l0aFBvaW50c0dlbmVyYXRpb25MaW5lUGF0aCA9IChnZXRQb2ludHMpID0+IHtcbiAgY29uc3QgTGluZVBhdGhDb21wb25lbnQgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGdyYXBoUHJvcHMsIGZyb20sIHRvLCBvbkNsaWNrLCBvbkRyYWdTdGFydCwgb25EcmFnU3RvcCwgb25DaGFuZ2UsIGRpc2FibGVkLCBjb3JyZWN0bmVzcywgLi4ucmVzdCB9ID0gcHJvcHM7XG5cbiAgICBjb25zdCB7IGRhdGFQb2ludHMsIGVuYWJsZUN1cnZlID0gdHJ1ZSB9ID0gZ2V0UG9pbnRzKHtcbiAgICAgIGdyYXBoUHJvcHM6IHByb3BzLmdyYXBoUHJvcHMsXG4gICAgICByb290OiBmcm9tLFxuICAgICAgZWRnZTogdG8sXG4gICAgfSk7XG5cbiAgICBjb25zdCByYXcgPSBkYXRhUG9pbnRzLm1hcCgoZCkgPT4gW2dyYXBoUHJvcHMuc2NhbGUueChkLngpLCBncmFwaFByb3BzLnNjYWxlLnkoZC55KV0pO1xuXG4gICAgY29uc3QgY29tbW9uID0ge1xuICAgICAgb25DbGljayxcbiAgICAgIGdyYXBoUHJvcHMsXG4gICAgICBvbkRyYWdTdGFydCxcbiAgICAgIG9uRHJhZ1N0b3AsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgY29ycmVjdG5lc3MsXG4gICAgfTtcblxuICAgIGlmICghZW5hYmxlQ3VydmUpIHtcbiAgICAgIHJldHVybiA8TGluZVBhdGggZGF0YT17cmF3fSBmcm9tPXtmcm9tfSB0bz17dG99IHsuLi5jb21tb259IHsuLi5yZXN0fSAvPjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDxMaW5lUGF0aCBkYXRhPXtyYXd9IGZyb209e2Zyb219IHRvPXt0b30gY3VydmU9e2N1cnZlTW9ub3RvbmVYfSB7Li4uY29tbW9ufSB7Li4ucmVzdH0gLz47XG4gICAgfVxuICB9O1xuXG4gIExpbmVQYXRoQ29tcG9uZW50LnByb3BUeXBlcyA9IHtcbiAgICBncmFwaFByb3BzOiB0eXBlcy5HcmFwaFByb3BzVHlwZS5pc1JlcXVpcmVkLFxuICAgIGZyb206IHR5cGVzLlBvaW50VHlwZS5pc1JlcXVpcmVkLFxuICAgIHRvOiB0eXBlcy5Qb2ludFR5cGUsXG4gICAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25EcmFnU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uRHJhZ1N0b3A6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgY29ycmVjdG5lc3M6IFByb3BUeXBlcy5zdHJpbmcsXG4gIH07XG5cbiAgcmV0dXJuIExpbmVQYXRoQ29tcG9uZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IHdpdGhSb290RWRnZSA9IChnZXRQb2ludHMpID0+IHtcbiAgY29uc3QgTGluZVBhdGhDb21wID0gd2l0aFBvaW50c0dlbmVyYXRpb25MaW5lUGF0aChnZXRQb2ludHMpO1xuICByZXR1cm4gbGluZUJhc2UoTGluZVBhdGhDb21wKTtcbn07XG4iXX0=
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+
7
+ var _build = require("enzyme/build");
8
+
9
+ var _react = _interopRequireDefault(require("react"));
10
+
11
+ var _index = require("../index");
12
+
13
+ var _utils = require("../../../../__tests__/utils");
14
+
15
+ var _utils2 = require("../../../../utils");
16
+
17
+ var _plot = require("@pie-lib/plot");
18
+
19
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
20
+
21
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
22
+
23
+ var xy = _plot.utils.xy;
24
+ jest.mock('../../../../utils', function () {
25
+ var _jest$requireActual = jest.requireActual('../../../../utils'),
26
+ point = _jest$requireActual.point;
27
+
28
+ return {
29
+ bounds: jest.fn(),
30
+ point: point
31
+ };
32
+ });
33
+ jest.mock('@pie-lib/plot/index', function () {
34
+ var _jest$requireActual2 = jest.requireActual('@pie-lib/plot/index'),
35
+ types = _jest$requireActual2.types,
36
+ utils = _jest$requireActual2.utils;
37
+
38
+ return {
39
+ gridDraggable: jest.fn(function (opts) {
40
+ return function (Comp) {
41
+ return Comp;
42
+ };
43
+ }),
44
+ types: types,
45
+ utils: utils
46
+ };
47
+ });
48
+ describe('ArrowPoint', function () {
49
+ var w;
50
+ var onChange = jest.fn();
51
+
52
+ var wrapper = function wrapper(extras) {
53
+ var defaults = {
54
+ classes: {},
55
+ className: 'className',
56
+ onChange: onChange,
57
+ graphProps: (0, _utils.graphProps)(),
58
+ from: xy(0, 0),
59
+ to: xy(1, 1)
60
+ };
61
+
62
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
63
+
64
+ return (0, _build.shallow)( /*#__PURE__*/_react["default"].createElement(_index.ArrowPoint, props));
65
+ };
66
+
67
+ describe('snapshot', function () {
68
+ it('renders', function () {
69
+ w = wrapper();
70
+ expect(w).toMatchSnapshot();
71
+ });
72
+ });
73
+ describe('gridDraggable options', function () {
74
+ var opts;
75
+ var domain;
76
+ var range;
77
+ beforeEach(function () {
78
+ domain = {
79
+ min: 0,
80
+ max: 1,
81
+ step: 1
82
+ };
83
+ range = {
84
+ min: 0,
85
+ max: 1,
86
+ step: 1
87
+ };
88
+ var w = wrapper();
89
+ opts = _plot.gridDraggable.mock.calls[0][0];
90
+ });
91
+ describe('bounds', function () {
92
+ it('calls utils.bounds with area', function () {
93
+ var result = opts.bounds({
94
+ x: 0,
95
+ y: 0
96
+ }, {
97
+ domain: domain,
98
+ range: range
99
+ });
100
+ expect(_utils2.bounds).toHaveBeenCalledWith({
101
+ left: 0,
102
+ top: 0,
103
+ bottom: 0,
104
+ right: 0
105
+ }, domain, range);
106
+ });
107
+ });
108
+ describe('anchorPoint', function () {
109
+ it('returns x/y', function () {
110
+ var result = opts.anchorPoint({
111
+ x: 0,
112
+ y: 0
113
+ });
114
+ expect(result).toEqual({
115
+ x: 0,
116
+ y: 0
117
+ });
118
+ });
119
+ });
120
+ describe('fromDelta', function () {
121
+ it('returns a new point from the x/y + delta', function () {
122
+ var result = opts.fromDelta({
123
+ x: -1,
124
+ y: 0
125
+ }, {
126
+ x: 1,
127
+ y: 3
128
+ });
129
+ expect(result).toEqual({
130
+ x: 0,
131
+ y: 3
132
+ });
133
+ });
134
+ });
135
+ });
136
+ });
137
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy90b29scy9zaGFyZWQvcG9pbnQvX190ZXN0c19fL2Fycm93LXBvaW50LnRlc3QuanN4Il0sIm5hbWVzIjpbInh5IiwidXRpbHMiLCJqZXN0IiwibW9jayIsInJlcXVpcmVBY3R1YWwiLCJwb2ludCIsImJvdW5kcyIsImZuIiwidHlwZXMiLCJncmlkRHJhZ2dhYmxlIiwib3B0cyIsIkNvbXAiLCJkZXNjcmliZSIsInciLCJvbkNoYW5nZSIsIndyYXBwZXIiLCJleHRyYXMiLCJkZWZhdWx0cyIsImNsYXNzZXMiLCJjbGFzc05hbWUiLCJncmFwaFByb3BzIiwiZnJvbSIsInRvIiwicHJvcHMiLCJpdCIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCIsImRvbWFpbiIsInJhbmdlIiwiYmVmb3JlRWFjaCIsIm1pbiIsIm1heCIsInN0ZXAiLCJjYWxscyIsInJlc3VsdCIsIngiLCJ5IiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJsZWZ0IiwidG9wIiwiYm90dG9tIiwicmlnaHQiLCJhbmNob3JQb2ludCIsInRvRXF1YWwiLCJmcm9tRGVsdGEiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQSxJQUFRQSxFQUFSLEdBQWVDLFdBQWYsQ0FBUUQsRUFBUjtBQUNBRSxJQUFJLENBQUNDLElBQUwsQ0FBVSxtQkFBVixFQUErQixZQUFNO0FBQ25DLDRCQUFrQkQsSUFBSSxDQUFDRSxhQUFMLENBQW1CLG1CQUFuQixDQUFsQjtBQUFBLE1BQVFDLEtBQVIsdUJBQVFBLEtBQVI7O0FBQ0EsU0FBTztBQUNMQyxJQUFBQSxNQUFNLEVBQUVKLElBQUksQ0FBQ0ssRUFBTCxFQURIO0FBRUxGLElBQUFBLEtBQUssRUFBTEE7QUFGSyxHQUFQO0FBSUQsQ0FORDtBQVFBSCxJQUFJLENBQUNDLElBQUwsQ0FBVSxxQkFBVixFQUFpQyxZQUFNO0FBQ3JDLDZCQUF5QkQsSUFBSSxDQUFDRSxhQUFMLENBQW1CLHFCQUFuQixDQUF6QjtBQUFBLE1BQVFJLEtBQVIsd0JBQVFBLEtBQVI7QUFBQSxNQUFlUCxLQUFmLHdCQUFlQSxLQUFmOztBQUNBLFNBQU87QUFDTFEsSUFBQUEsYUFBYSxFQUFFUCxJQUFJLENBQUNLLEVBQUwsQ0FBUSxVQUFDRyxJQUFEO0FBQUEsYUFBVSxVQUFDQyxJQUFEO0FBQUEsZUFBVUEsSUFBVjtBQUFBLE9BQVY7QUFBQSxLQUFSLENBRFY7QUFFTEgsSUFBQUEsS0FBSyxFQUFMQSxLQUZLO0FBR0xQLElBQUFBLEtBQUssRUFBTEE7QUFISyxHQUFQO0FBS0QsQ0FQRDtBQVNBVyxRQUFRLENBQUMsWUFBRCxFQUFlLFlBQU07QUFDM0IsTUFBSUMsQ0FBSjtBQUNBLE1BQUlDLFFBQVEsR0FBR1osSUFBSSxDQUFDSyxFQUFMLEVBQWY7O0FBQ0EsTUFBTVEsT0FBTyxHQUFHLFNBQVZBLE9BQVUsQ0FBQ0MsTUFBRCxFQUFZO0FBQzFCLFFBQU1DLFFBQVEsR0FBRztBQUNmQyxNQUFBQSxPQUFPLEVBQUUsRUFETTtBQUVmQyxNQUFBQSxTQUFTLEVBQUUsV0FGSTtBQUdmTCxNQUFBQSxRQUFRLEVBQVJBLFFBSGU7QUFJZk0sTUFBQUEsVUFBVSxFQUFFLHdCQUpHO0FBS2ZDLE1BQUFBLElBQUksRUFBRXJCLEVBQUUsQ0FBQyxDQUFELEVBQUksQ0FBSixDQUxPO0FBTWZzQixNQUFBQSxFQUFFLEVBQUV0QixFQUFFLENBQUMsQ0FBRCxFQUFJLENBQUo7QUFOUyxLQUFqQjs7QUFRQSxRQUFNdUIsS0FBSyxtQ0FBUU4sUUFBUixHQUFxQkQsTUFBckIsQ0FBWDs7QUFDQSxXQUFPLGtDQUFRLGdDQUFDLGlCQUFELEVBQWdCTyxLQUFoQixDQUFSLENBQVA7QUFDRCxHQVhEOztBQWFBWCxFQUFBQSxRQUFRLENBQUMsVUFBRCxFQUFhLFlBQU07QUFDekJZLElBQUFBLEVBQUUsQ0FBQyxTQUFELEVBQVksWUFBTTtBQUNsQlgsTUFBQUEsQ0FBQyxHQUFHRSxPQUFPLEVBQVg7QUFDQVUsTUFBQUEsTUFBTSxDQUFDWixDQUFELENBQU4sQ0FBVWEsZUFBVjtBQUNELEtBSEMsQ0FBRjtBQUlELEdBTE8sQ0FBUjtBQU1BZCxFQUFBQSxRQUFRLENBQUMsdUJBQUQsRUFBMEIsWUFBTTtBQUN0QyxRQUFJRixJQUFKO0FBQ0EsUUFBSWlCLE1BQUo7QUFDQSxRQUFJQyxLQUFKO0FBQ0FDLElBQUFBLFVBQVUsQ0FBQyxZQUFNO0FBQ2ZGLE1BQUFBLE1BQU0sR0FBRztBQUNQRyxRQUFBQSxHQUFHLEVBQUUsQ0FERTtBQUVQQyxRQUFBQSxHQUFHLEVBQUUsQ0FGRTtBQUdQQyxRQUFBQSxJQUFJLEVBQUU7QUFIQyxPQUFUO0FBS0FKLE1BQUFBLEtBQUssR0FBRztBQUNORSxRQUFBQSxHQUFHLEVBQUUsQ0FEQztBQUVOQyxRQUFBQSxHQUFHLEVBQUUsQ0FGQztBQUdOQyxRQUFBQSxJQUFJLEVBQUU7QUFIQSxPQUFSO0FBS0EsVUFBTW5CLENBQUMsR0FBR0UsT0FBTyxFQUFqQjtBQUNBTCxNQUFBQSxJQUFJLEdBQUdELG9CQUFjTixJQUFkLENBQW1COEIsS0FBbkIsQ0FBeUIsQ0FBekIsRUFBNEIsQ0FBNUIsQ0FBUDtBQUNELEtBYlMsQ0FBVjtBQWVBckIsSUFBQUEsUUFBUSxDQUFDLFFBQUQsRUFBVyxZQUFNO0FBQ3ZCWSxNQUFBQSxFQUFFLENBQUMsOEJBQUQsRUFBaUMsWUFBTTtBQUN2QyxZQUFNVSxNQUFNLEdBQUd4QixJQUFJLENBQUNKLE1BQUwsQ0FBWTtBQUFFNkIsVUFBQUEsQ0FBQyxFQUFFLENBQUw7QUFBUUMsVUFBQUEsQ0FBQyxFQUFFO0FBQVgsU0FBWixFQUE0QjtBQUFFVCxVQUFBQSxNQUFNLEVBQU5BLE1BQUY7QUFBVUMsVUFBQUEsS0FBSyxFQUFMQTtBQUFWLFNBQTVCLENBQWY7QUFDQUgsUUFBQUEsTUFBTSxDQUFDbkIsY0FBRCxDQUFOLENBQWUrQixvQkFBZixDQUFvQztBQUFFQyxVQUFBQSxJQUFJLEVBQUUsQ0FBUjtBQUFXQyxVQUFBQSxHQUFHLEVBQUUsQ0FBaEI7QUFBbUJDLFVBQUFBLE1BQU0sRUFBRSxDQUEzQjtBQUE4QkMsVUFBQUEsS0FBSyxFQUFFO0FBQXJDLFNBQXBDLEVBQThFZCxNQUE5RSxFQUFzRkMsS0FBdEY7QUFDRCxPQUhDLENBQUY7QUFJRCxLQUxPLENBQVI7QUFNQWhCLElBQUFBLFFBQVEsQ0FBQyxhQUFELEVBQWdCLFlBQU07QUFDNUJZLE1BQUFBLEVBQUUsQ0FBQyxhQUFELEVBQWdCLFlBQU07QUFDdEIsWUFBTVUsTUFBTSxHQUFHeEIsSUFBSSxDQUFDZ0MsV0FBTCxDQUFpQjtBQUFFUCxVQUFBQSxDQUFDLEVBQUUsQ0FBTDtBQUFRQyxVQUFBQSxDQUFDLEVBQUU7QUFBWCxTQUFqQixDQUFmO0FBQ0FYLFFBQUFBLE1BQU0sQ0FBQ1MsTUFBRCxDQUFOLENBQWVTLE9BQWYsQ0FBdUI7QUFBRVIsVUFBQUEsQ0FBQyxFQUFFLENBQUw7QUFBUUMsVUFBQUEsQ0FBQyxFQUFFO0FBQVgsU0FBdkI7QUFDRCxPQUhDLENBQUY7QUFJRCxLQUxPLENBQVI7QUFPQXhCLElBQUFBLFFBQVEsQ0FBQyxXQUFELEVBQWMsWUFBTTtBQUMxQlksTUFBQUEsRUFBRSxDQUFDLDBDQUFELEVBQTZDLFlBQU07QUFDbkQsWUFBTVUsTUFBTSxHQUFHeEIsSUFBSSxDQUFDa0MsU0FBTCxDQUFlO0FBQUVULFVBQUFBLENBQUMsRUFBRSxDQUFDLENBQU47QUFBU0MsVUFBQUEsQ0FBQyxFQUFFO0FBQVosU0FBZixFQUFnQztBQUFFRCxVQUFBQSxDQUFDLEVBQUUsQ0FBTDtBQUFRQyxVQUFBQSxDQUFDLEVBQUU7QUFBWCxTQUFoQyxDQUFmO0FBQ0FYLFFBQUFBLE1BQU0sQ0FBQ1MsTUFBRCxDQUFOLENBQWVTLE9BQWYsQ0FBdUI7QUFBRVIsVUFBQUEsQ0FBQyxFQUFFLENBQUw7QUFBUUMsVUFBQUEsQ0FBQyxFQUFFO0FBQVgsU0FBdkI7QUFDRCxPQUhDLENBQUY7QUFJRCxLQUxPLENBQVI7QUFNRCxHQXRDTyxDQUFSO0FBdUNELENBN0RPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lL2J1aWxkJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBBcnJvd1BvaW50IH0gZnJvbSAnLi4vaW5kZXgnO1xuaW1wb3J0IHsgZ3JhcGhQcm9wcyB9IGZyb20gJy4uLy4uLy4uLy4uL19fdGVzdHNfXy91dGlscyc7XG5pbXBvcnQgeyBib3VuZHMgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscyc7XG5pbXBvcnQgeyBncmlkRHJhZ2dhYmxlLCB1dGlscyB9IGZyb20gJ0BwaWUtbGliL3Bsb3QnO1xuXG5jb25zdCB7IHh5IH0gPSB1dGlscztcbmplc3QubW9jaygnLi4vLi4vLi4vLi4vdXRpbHMnLCAoKSA9PiB7XG4gIGNvbnN0IHsgcG9pbnQgfSA9IGplc3QucmVxdWlyZUFjdHVhbCgnLi4vLi4vLi4vLi4vdXRpbHMnKTtcbiAgcmV0dXJuIHtcbiAgICBib3VuZHM6IGplc3QuZm4oKSxcbiAgICBwb2ludCxcbiAgfTtcbn0pO1xuXG5qZXN0Lm1vY2soJ0BwaWUtbGliL3Bsb3QvaW5kZXgnLCAoKSA9PiB7XG4gIGNvbnN0IHsgdHlwZXMsIHV0aWxzIH0gPSBqZXN0LnJlcXVpcmVBY3R1YWwoJ0BwaWUtbGliL3Bsb3QvaW5kZXgnKTtcbiAgcmV0dXJuIHtcbiAgICBncmlkRHJhZ2dhYmxlOiBqZXN0LmZuKChvcHRzKSA9PiAoQ29tcCkgPT4gQ29tcCksXG4gICAgdHlwZXMsXG4gICAgdXRpbHMsXG4gIH07XG59KTtcblxuZGVzY3JpYmUoJ0Fycm93UG9pbnQnLCAoKSA9PiB7XG4gIGxldCB3O1xuICBsZXQgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gIGNvbnN0IHdyYXBwZXIgPSAoZXh0cmFzKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzTmFtZScsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIGdyYXBoUHJvcHM6IGdyYXBoUHJvcHMoKSxcbiAgICAgIGZyb206IHh5KDAsIDApLFxuICAgICAgdG86IHh5KDEsIDEpLFxuICAgIH07XG4gICAgY29uc3QgcHJvcHMgPSB7IC4uLmRlZmF1bHRzLCAuLi5leHRyYXMgfTtcbiAgICByZXR1cm4gc2hhbGxvdyg8QXJyb3dQb2ludCB7Li4ucHJvcHN9IC8+KTtcbiAgfTtcblxuICBkZXNjcmliZSgnc25hcHNob3QnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMnLCAoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcigpO1xuICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuICB9KTtcbiAgZGVzY3JpYmUoJ2dyaWREcmFnZ2FibGUgb3B0aW9ucycsICgpID0+IHtcbiAgICBsZXQgb3B0cztcbiAgICBsZXQgZG9tYWluO1xuICAgIGxldCByYW5nZTtcbiAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgIGRvbWFpbiA9IHtcbiAgICAgICAgbWluOiAwLFxuICAgICAgICBtYXg6IDEsXG4gICAgICAgIHN0ZXA6IDEsXG4gICAgICB9O1xuICAgICAgcmFuZ2UgPSB7XG4gICAgICAgIG1pbjogMCxcbiAgICAgICAgbWF4OiAxLFxuICAgICAgICBzdGVwOiAxLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHcgPSB3cmFwcGVyKCk7XG4gICAgICBvcHRzID0gZ3JpZERyYWdnYWJsZS5tb2NrLmNhbGxzWzBdWzBdO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2JvdW5kcycsICgpID0+IHtcbiAgICAgIGl0KCdjYWxscyB1dGlscy5ib3VuZHMgd2l0aCBhcmVhJywgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBvcHRzLmJvdW5kcyh7IHg6IDAsIHk6IDAgfSwgeyBkb21haW4sIHJhbmdlIH0pO1xuICAgICAgICBleHBlY3QoYm91bmRzKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7IGxlZnQ6IDAsIHRvcDogMCwgYm90dG9tOiAwLCByaWdodDogMCB9LCBkb21haW4sIHJhbmdlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGRlc2NyaWJlKCdhbmNob3JQb2ludCcsICgpID0+IHtcbiAgICAgIGl0KCdyZXR1cm5zIHgveScsICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gb3B0cy5hbmNob3JQb2ludCh7IHg6IDAsIHk6IDAgfSk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoeyB4OiAwLCB5OiAwIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZnJvbURlbHRhJywgKCkgPT4ge1xuICAgICAgaXQoJ3JldHVybnMgYSBuZXcgcG9pbnQgZnJvbSB0aGUgeC95ICsgZGVsdGEnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG9wdHMuZnJvbURlbHRhKHsgeDogLTEsIHk6IDAgfSwgeyB4OiAxLCB5OiAzIH0pO1xuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsgeDogMCwgeTogMyB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19