@pie-lib/graphing-solution-set 2.20.0 → 2.22.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 (85) hide show
  1. package/CHANGELOG.md +6 -10
  2. package/lib/axis/arrow.js +115 -0
  3. package/lib/axis/arrow.js.map +1 -0
  4. package/lib/axis/axes.js +415 -0
  5. package/lib/axis/axes.js.map +1 -0
  6. package/lib/axis/index.js +26 -0
  7. package/lib/axis/index.js.map +1 -0
  8. package/lib/bg.js +139 -0
  9. package/lib/bg.js.map +1 -0
  10. package/lib/container/actions.js +24 -0
  11. package/lib/container/actions.js.map +1 -0
  12. package/lib/container/index.js +166 -0
  13. package/lib/container/index.js.map +1 -0
  14. package/lib/container/marks.js +27 -0
  15. package/lib/container/marks.js.map +1 -0
  16. package/lib/container/middleware.js +25 -0
  17. package/lib/container/middleware.js.map +1 -0
  18. package/lib/container/reducer.js +25 -0
  19. package/lib/container/reducer.js.map +1 -0
  20. package/lib/coordinates-label.js +109 -0
  21. package/lib/coordinates-label.js.map +1 -0
  22. package/lib/graph-with-controls.js +372 -0
  23. package/lib/graph-with-controls.js.map +1 -0
  24. package/lib/graph.js +419 -0
  25. package/lib/graph.js.map +1 -0
  26. package/lib/grid-setup.js +462 -0
  27. package/lib/grid-setup.js.map +1 -0
  28. package/lib/grid.js +176 -0
  29. package/lib/grid.js.map +1 -0
  30. package/lib/index.js +51 -0
  31. package/lib/index.js.map +1 -0
  32. package/lib/labels.js +299 -0
  33. package/lib/labels.js.map +1 -0
  34. package/lib/mark-label.js +208 -0
  35. package/lib/mark-label.js.map +1 -0
  36. package/lib/toggle-bar.js +336 -0
  37. package/lib/toggle-bar.js.map +1 -0
  38. package/lib/tool-menu.js +325 -0
  39. package/lib/tool-menu.js.map +1 -0
  40. package/lib/tools/index.js +29 -0
  41. package/lib/tools/index.js.map +1 -0
  42. package/lib/tools/line/component.js +106 -0
  43. package/lib/tools/line/component.js.map +1 -0
  44. package/lib/tools/line/index.js +16 -0
  45. package/lib/tools/line/index.js.map +1 -0
  46. package/lib/tools/polygon/component.js +457 -0
  47. package/lib/tools/polygon/component.js.map +1 -0
  48. package/lib/tools/polygon/index.js +106 -0
  49. package/lib/tools/polygon/index.js.map +1 -0
  50. package/lib/tools/polygon/line.js +151 -0
  51. package/lib/tools/polygon/line.js.map +1 -0
  52. package/lib/tools/polygon/polygon.js +171 -0
  53. package/lib/tools/polygon/polygon.js.map +1 -0
  54. package/lib/tools/shared/arrow-head.js +75 -0
  55. package/lib/tools/shared/arrow-head.js.map +1 -0
  56. package/lib/tools/shared/line/index.js +637 -0
  57. package/lib/tools/shared/line/index.js.map +1 -0
  58. package/lib/tools/shared/line/line-path.js +145 -0
  59. package/lib/tools/shared/line/line-path.js.map +1 -0
  60. package/lib/tools/shared/line/with-root-edge.js +155 -0
  61. package/lib/tools/shared/line/with-root-edge.js.map +1 -0
  62. package/lib/tools/shared/point/arrow-point.js +113 -0
  63. package/lib/tools/shared/point/arrow-point.js.map +1 -0
  64. package/lib/tools/shared/point/arrow.js +96 -0
  65. package/lib/tools/shared/point/arrow.js.map +1 -0
  66. package/lib/tools/shared/point/base-point.js +151 -0
  67. package/lib/tools/shared/point/base-point.js.map +1 -0
  68. package/lib/tools/shared/point/index.js +94 -0
  69. package/lib/tools/shared/point/index.js.map +1 -0
  70. package/lib/tools/shared/styles.js +49 -0
  71. package/lib/tools/shared/styles.js.map +1 -0
  72. package/lib/tools/shared/types.js +19 -0
  73. package/lib/tools/shared/types.js.map +1 -0
  74. package/lib/undo-redo.js +107 -0
  75. package/lib/undo-redo.js.map +1 -0
  76. package/lib/use-debounce.js +32 -0
  77. package/lib/use-debounce.js.map +1 -0
  78. package/lib/utils.js +314 -0
  79. package/lib/utils.js.map +1 -0
  80. package/package.json +9 -9
  81. package/src/__tests__/graph-with-controls.test.jsx +1 -1
  82. package/src/__tests__/graph.test.jsx +1 -1
  83. package/src/tools/line/__tests__/component.test.jsx +2 -2
  84. package/src/tools/shared/point/__tests__/arrow-point.test.jsx +2 -2
  85. package/src/tools/shared/point/__tests__/base-point.test.jsx +2 -2
@@ -0,0 +1,637 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.styles = exports.lineToolComponent = exports.lineTool = exports.lineBase = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
26
+ var _react = _interopRequireDefault(require("react"));
27
+
28
+ var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
29
+
30
+ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
31
+
32
+ var _point = require("../point");
33
+
34
+ var _plot = require("@pie-lib/plot");
35
+
36
+ var _propTypes = _interopRequireDefault(require("prop-types"));
37
+
38
+ var _styles = require("../styles");
39
+
40
+ var _reactDom = _interopRequireDefault(require("react-dom"));
41
+
42
+ var _markLabel = _interopRequireDefault(require("../../../mark-label"));
43
+
44
+ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
45
+
46
+ var _renderUi = require("@pie-lib/render-ui");
47
+
48
+ var _utils = require("../../../utils");
49
+
50
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
51
+
52
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
53
+
54
+ 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; }
55
+
56
+ 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; }
57
+
58
+ var lineTool = function lineTool(type, Component) {
59
+ return function () {
60
+ return {
61
+ type: type,
62
+ Component: Component,
63
+ addPoint: function addPoint(point, mark) {
64
+ if (mark && (0, _utils.equalPoints)(mark.root, point)) {
65
+ return mark;
66
+ }
67
+
68
+ if (!mark) {
69
+ return {
70
+ type: type,
71
+ building: true,
72
+ from: point
73
+ };
74
+ }
75
+
76
+ if ((0, _utils.equalPoints)(point, mark.from)) {
77
+ return _objectSpread({}, mark);
78
+ }
79
+
80
+ return _objectSpread(_objectSpread({}, mark), {}, {
81
+ building: false,
82
+ to: point
83
+ });
84
+ }
85
+ };
86
+ };
87
+ };
88
+
89
+ exports.lineTool = lineTool;
90
+
91
+ var lineToolComponent = function lineToolComponent(Component) {
92
+ var _class;
93
+
94
+ return _class = /*#__PURE__*/function (_React$Component) {
95
+ (0, _inherits2["default"])(LineToolComponent, _React$Component);
96
+
97
+ var _super = _createSuper(LineToolComponent);
98
+
99
+ function LineToolComponent(props) {
100
+ var _this;
101
+
102
+ (0, _classCallCheck2["default"])(this, LineToolComponent);
103
+ _this = _super.call(this, props);
104
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "startDrag", function () {
105
+ return _this.setState({
106
+ mark: _objectSpread({}, _this.props.mark)
107
+ });
108
+ });
109
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "stopDrag", function () {
110
+ var _this$props = _this.props,
111
+ onChange = _this$props.onChange,
112
+ mark = _this$props.mark;
113
+
114
+ var update = _objectSpread({}, _this.state.mark);
115
+
116
+ _this.setState({
117
+ mark: undefined
118
+ }, function () {
119
+ var type = update.type;
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
+ }
125
+
126
+ if (!(0, _isEqual["default"])(mark, update) && !shouldNotChange) {
127
+ onChange(mark, update);
128
+ }
129
+ });
130
+ });
131
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeMark", function (_ref) {
132
+ var from = _ref.from,
133
+ to = _ref.to,
134
+ middle = _ref.middle;
135
+
136
+ var mark = _objectSpread(_objectSpread({}, _this.state.mark), {}, {
137
+ from: from,
138
+ to: to
139
+ });
140
+
141
+ if (middle) {
142
+ mark = _objectSpread(_objectSpread({}, mark), {}, {
143
+ middle: middle
144
+ });
145
+ }
146
+
147
+ _this.setState({
148
+ mark: mark
149
+ });
150
+ });
151
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeMarkProps", function (_ref2) {
152
+ var from = _ref2.from,
153
+ to = _ref2.to,
154
+ middle = _ref2.middle;
155
+ var _this$props2 = _this.props,
156
+ onChange = _this$props2.onChange,
157
+ mark = _this$props2.mark;
158
+
159
+ var update = _objectSpread(_objectSpread({}, mark), _this.state.mark);
160
+
161
+ if (from) {
162
+ update = _objectSpread(_objectSpread({}, update), {}, {
163
+ from: from
164
+ });
165
+ }
166
+
167
+ if (to) {
168
+ update = _objectSpread(_objectSpread({}, update), {}, {
169
+ to: to
170
+ });
171
+ }
172
+
173
+ if (middle) {
174
+ update = _objectSpread(_objectSpread({}, update), {}, {
175
+ middle: middle
176
+ });
177
+ }
178
+
179
+ if (!(0, _isEqual["default"])(mark, update)) {
180
+ onChange(mark, update);
181
+ }
182
+ });
183
+ _this.state = {};
184
+ return _this;
185
+ }
186
+
187
+ (0, _createClass2["default"])(LineToolComponent, [{
188
+ key: "render",
189
+ value: function render() {
190
+ var _this$props3 = this.props,
191
+ graphProps = _this$props3.graphProps,
192
+ onClick = _this$props3.onClick,
193
+ labelNode = _this$props3.labelNode,
194
+ labelModeEnabled = _this$props3.labelModeEnabled,
195
+ coordinatesOnHover = _this$props3.coordinatesOnHover,
196
+ gssLineData = _this$props3.gssLineData;
197
+ var mark = this.state.mark ? this.state.mark : this.props.mark;
198
+ var from = (0, _cloneDeep["default"])(mark.from);
199
+ var to = (0, _cloneDeep["default"])(mark.to);
200
+ var middle = (0, _cloneDeep["default"])(mark.middle); // SET DISABLED
201
+ // if it's a background mark, we need to force disable it
202
+
203
+ if (from && mark.isBackground) {
204
+ from.disabled = true;
205
+ }
206
+
207
+ if (to && mark.isBackground) {
208
+ to.disabled = true;
209
+ }
210
+
211
+ if (middle && mark.isBackground) {
212
+ middle.disabled = true;
213
+ }
214
+
215
+ return /*#__PURE__*/_react["default"].createElement(Component, {
216
+ disabled: mark.disabled,
217
+ coordinatesOnHover: coordinatesOnHover,
218
+ correctness: mark.correctness,
219
+ from: from,
220
+ to: to,
221
+ middle: middle,
222
+ graphProps: graphProps,
223
+ fill: mark && mark.fill,
224
+ gssLineData: gssLineData,
225
+ onChange: this.changeMark,
226
+ changeMarkProps: this.changeMarkProps,
227
+ onClick: onClick,
228
+ onDragStart: this.startDrag,
229
+ onDragStop: this.stopDrag,
230
+ labelNode: labelNode,
231
+ labelModeEnabled: labelModeEnabled
232
+ });
233
+ }
234
+ }]);
235
+ return LineToolComponent;
236
+ }(_react["default"].Component), (0, _defineProperty2["default"])(_class, "propTypes", _objectSpread(_objectSpread({}, _plot.types.ToolPropTypeFields), {}, {
237
+ graphProps: _plot.types.GraphPropsType.isRequired
238
+ })), _class;
239
+ };
240
+
241
+ exports.lineToolComponent = lineToolComponent;
242
+
243
+ var dragOpts = function dragOpts() {
244
+ return {
245
+ bounds: function bounds(props, _ref3) {
246
+ var domain = _ref3.domain,
247
+ range = _ref3.range;
248
+
249
+ var area = _plot.utils.lineToArea(props.from, props.to);
250
+
251
+ return _plot.utils.bounds(area, domain, range);
252
+ },
253
+ anchorPoint: function anchorPoint(props) {
254
+ var from = props.from;
255
+ return from;
256
+ },
257
+ fromDelta: function fromDelta(props, delta) {
258
+ var from = props.from,
259
+ to = props.to;
260
+ return {
261
+ from: _plot.utils.point(from).add(_plot.utils.point(delta)),
262
+ to: _plot.utils.point(to).add(_plot.utils.point(delta))
263
+ };
264
+ }
265
+ };
266
+ };
267
+
268
+ var lineBase = function lineBase(Comp, opts) {
269
+ var DraggableComp = (0, _plot.gridDraggable)(dragOpts())(Comp);
270
+ var FromPoint = opts && opts.from ? opts.from : _point.BasePoint;
271
+ var ToPoint = opts && opts.to ? opts.to : _point.BasePoint;
272
+
273
+ var LineBase = /*#__PURE__*/function (_React$Component2) {
274
+ (0, _inherits2["default"])(LineBase, _React$Component2);
275
+
276
+ var _super2 = _createSuper(LineBase);
277
+
278
+ function LineBase() {
279
+ var _this2;
280
+
281
+ (0, _classCallCheck2["default"])(this, LineBase);
282
+
283
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
284
+ args[_key] = arguments[_key];
285
+ }
286
+
287
+ _this2 = _super2.call.apply(_super2, [this].concat(args));
288
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onChangePoint", function (point) {
289
+ var _this2$props = _this2.props,
290
+ middle = _this2$props.middle,
291
+ onChange = _this2$props.onChange;
292
+ var from = point.from,
293
+ to = point.to; // because point.from.label and point.to.label can be different
294
+
295
+ if (!(0, _utils.equalPoints)(from, to)) {
296
+ if (middle) {
297
+ point.middle = _objectSpread(_objectSpread({}, middle), (0, _utils.getMiddleOfTwoPoints)(from, to));
298
+ }
299
+
300
+ onChange(point);
301
+ }
302
+ });
303
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "dragComp", function (_ref4) {
304
+ var draggedFrom = _ref4.from,
305
+ draggedTo = _ref4.to;
306
+ var _this2$props2 = _this2.props,
307
+ from = _this2$props2.from,
308
+ to = _this2$props2.to,
309
+ onChange = _this2$props2.onChange,
310
+ middle = _this2$props2.middle;
311
+
312
+ if (from.label) {
313
+ draggedFrom.label = from.label;
314
+ }
315
+
316
+ if (to.label) {
317
+ draggedTo.label = to.label;
318
+ }
319
+
320
+ var updated = {
321
+ from: draggedFrom,
322
+ to: draggedTo
323
+ };
324
+
325
+ if (middle) {
326
+ updated.middle = _objectSpread(_objectSpread({}, middle), (0, _utils.getMiddleOfTwoPoints)(draggedFrom, draggedTo));
327
+ }
328
+
329
+ onChange(updated);
330
+ });
331
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "dragFrom", function (draggedFrom) {
332
+ var _this2$props3 = _this2.props,
333
+ from = _this2$props3.from,
334
+ to = _this2$props3.to;
335
+
336
+ if (from.label) {
337
+ draggedFrom.label = from.label;
338
+ }
339
+
340
+ if (!(0, _utils.equalPoints)(draggedFrom, to)) {
341
+ _this2.onChangePoint({
342
+ from: draggedFrom,
343
+ to: to
344
+ });
345
+ }
346
+ });
347
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "dragTo", function (draggedTo) {
348
+ var _this2$props4 = _this2.props,
349
+ from = _this2$props4.from,
350
+ to = _this2$props4.to;
351
+
352
+ if (to.label) {
353
+ draggedTo.label = to.label;
354
+ }
355
+
356
+ if (!(0, _utils.equalPoints)(from, draggedTo)) {
357
+ _this2.onChangePoint({
358
+ from: from,
359
+ to: draggedTo
360
+ });
361
+ }
362
+ });
363
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "labelChange", function (point, type) {
364
+ var changeMarkProps = _this2.props.changeMarkProps;
365
+
366
+ var update = _objectSpread({}, point);
367
+
368
+ if (!point.label || (0, _isEmpty["default"])(point.label)) {
369
+ delete update.label;
370
+ }
371
+
372
+ changeMarkProps((0, _defineProperty2["default"])({}, type, update));
373
+ });
374
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "clickPoint", function (point, type, data) {
375
+ var _this2$props5 = _this2.props,
376
+ changeMarkProps = _this2$props5.changeMarkProps,
377
+ disabled = _this2$props5.disabled,
378
+ from = _this2$props5.from,
379
+ to = _this2$props5.to,
380
+ labelModeEnabled = _this2$props5.labelModeEnabled,
381
+ onClick = _this2$props5.onClick;
382
+
383
+ if (!labelModeEnabled) {
384
+ onClick(point || data);
385
+ return;
386
+ }
387
+
388
+ if (disabled) {
389
+ return;
390
+ }
391
+
392
+ if (type === 'middle' && !point && from && to) {
393
+ point = _objectSpread(_objectSpread({}, point), (0, _utils.getMiddleOfTwoPoints)(from, to));
394
+ }
395
+
396
+ changeMarkProps((0, _defineProperty2["default"])({
397
+ from: from,
398
+ to: to
399
+ }, type, _objectSpread({
400
+ label: ''
401
+ }, point)));
402
+
403
+ if (_this2.input[type]) {
404
+ _this2.input[type].focus();
405
+ }
406
+ });
407
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "input", {});
408
+ return _this2;
409
+ }
410
+
411
+ (0, _createClass2["default"])(LineBase, [{
412
+ key: "render",
413
+ value: function render() {
414
+ var _this3 = this;
415
+
416
+ var _this$props4 = this.props,
417
+ coordinatesOnHover = _this$props4.coordinatesOnHover,
418
+ graphProps = _this$props4.graphProps,
419
+ fill = _this$props4.fill,
420
+ gssLineData = _this$props4.gssLineData,
421
+ onDragStart = _this$props4.onDragStart,
422
+ onDragStop = _this$props4.onDragStop,
423
+ from = _this$props4.from,
424
+ to = _this$props4.to,
425
+ middle = _this$props4.middle,
426
+ disabled = _this$props4.disabled,
427
+ correctness = _this$props4.correctness,
428
+ onClick = _this$props4.onClick,
429
+ labelNode = _this$props4.labelNode,
430
+ labelModeEnabled = _this$props4.labelModeEnabled;
431
+ var common = {
432
+ graphProps: graphProps,
433
+ fill: fill,
434
+ onDragStart: onDragStart,
435
+ onDragStop: onDragStop,
436
+ disabled: disabled,
437
+ correctness: correctness,
438
+ onClick: onClick
439
+ };
440
+
441
+ if (gssLineData && gssLineData.selectedTool === 'solutionSet') {
442
+ //removing dragging option for line if solution set is clicked.
443
+ common = {
444
+ graphProps: graphProps,
445
+ fill: fill,
446
+ disabled: disabled,
447
+ correctness: correctness,
448
+ onClick: onClick
449
+ };
450
+ }
451
+
452
+ var angle = to ? _plot.trig.toDegrees(_plot.trig.angle(from, to)) : 0;
453
+ var fromLabelNode = null;
454
+ var toLabelNode = null;
455
+ var lineLabelNode = null;
456
+
457
+ if (labelNode) {
458
+ if (from && from.hasOwnProperty('label')) {
459
+ fromLabelNode = /*#__PURE__*/_reactDom["default"].createPortal( /*#__PURE__*/_react["default"].createElement(_markLabel["default"], {
460
+ inputRef: function inputRef(r) {
461
+ return _this3.input.from = r;
462
+ },
463
+ disabled: !labelModeEnabled,
464
+ mark: from,
465
+ graphProps: graphProps,
466
+ onChange: function onChange(label) {
467
+ return _this3.labelChange(_objectSpread(_objectSpread({}, from), {}, {
468
+ label: label
469
+ }), 'from');
470
+ }
471
+ }), labelNode);
472
+ }
473
+
474
+ if (to && to.hasOwnProperty('label')) {
475
+ toLabelNode = /*#__PURE__*/_reactDom["default"].createPortal( /*#__PURE__*/_react["default"].createElement(_markLabel["default"], {
476
+ inputRef: function inputRef(r) {
477
+ return _this3.input.to = r;
478
+ },
479
+ disabled: !labelModeEnabled,
480
+ mark: to,
481
+ graphProps: graphProps,
482
+ onChange: function onChange(label) {
483
+ return _this3.labelChange(_objectSpread(_objectSpread({}, to), {}, {
484
+ label: label
485
+ }), 'to');
486
+ }
487
+ }), labelNode);
488
+ }
489
+
490
+ if (middle && middle.hasOwnProperty('label')) {
491
+ lineLabelNode = /*#__PURE__*/_reactDom["default"].createPortal( /*#__PURE__*/_react["default"].createElement(_markLabel["default"], {
492
+ inputRef: function inputRef(r) {
493
+ return _this3.input.middle = r;
494
+ },
495
+ disabled: !labelModeEnabled,
496
+ mark: middle,
497
+ graphProps: graphProps,
498
+ onChange: function onChange(label) {
499
+ return _this3.labelChange(_objectSpread(_objectSpread({}, middle), {}, {
500
+ label: label
501
+ }), 'middle');
502
+ }
503
+ }), labelNode);
504
+ }
505
+ }
506
+
507
+ if (gssLineData && gssLineData.selectedTool === 'solutionSet') {
508
+ //removing dragging feature of line and point if solution set is true.
509
+ return /*#__PURE__*/_react["default"].createElement("g", null, to && /*#__PURE__*/_react["default"].createElement(DraggableComp, (0, _extends2["default"])({
510
+ from: from,
511
+ to: to,
512
+ middle: middle
513
+ }, common)), lineLabelNode, /*#__PURE__*/_react["default"].createElement(FromPoint, (0, _extends2["default"])({
514
+ x: from.x,
515
+ y: from.y,
516
+ labelNode: labelNode,
517
+ coordinatesOnHover: coordinatesOnHover
518
+ }, common)), fromLabelNode, to && /*#__PURE__*/_react["default"].createElement(ToPoint, (0, _extends2["default"])({
519
+ x: to.x,
520
+ y: to.y,
521
+ angle: angle //angle + 45}
522
+ ,
523
+ labelNode: labelNode,
524
+ coordinatesOnHover: coordinatesOnHover
525
+ }, common)), toLabelNode);
526
+ } else {
527
+ return /*#__PURE__*/_react["default"].createElement("g", null, to && /*#__PURE__*/_react["default"].createElement(DraggableComp, (0, _extends2["default"])({
528
+ from: from,
529
+ to: to,
530
+ middle: middle,
531
+ onDrag: this.dragComp
532
+ }, common, {
533
+ onClick: function onClick(data) {
534
+ return _this3.clickPoint(middle, 'middle', data);
535
+ }
536
+ })), lineLabelNode, /*#__PURE__*/_react["default"].createElement(FromPoint, (0, _extends2["default"])({
537
+ x: from.x,
538
+ y: from.y,
539
+ labelNode: labelNode,
540
+ coordinatesOnHover: coordinatesOnHover,
541
+ onDrag: this.dragFrom
542
+ }, common, {
543
+ onClick: function onClick(data) {
544
+ return _this3.clickPoint(from, 'from', data);
545
+ }
546
+ })), fromLabelNode, to && /*#__PURE__*/_react["default"].createElement(ToPoint, (0, _extends2["default"])({
547
+ x: to.x,
548
+ y: to.y,
549
+ angle: angle //angle + 45}
550
+ ,
551
+ labelNode: labelNode,
552
+ coordinatesOnHover: coordinatesOnHover,
553
+ onDrag: this.dragTo
554
+ }, common, {
555
+ onClick: function onClick(data) {
556
+ return _this3.clickPoint(to, 'to', data);
557
+ }
558
+ })), toLabelNode);
559
+ }
560
+ }
561
+ }]);
562
+ return LineBase;
563
+ }(_react["default"].Component);
564
+
565
+ (0, _defineProperty2["default"])(LineBase, "propTypes", {
566
+ coordinatesOnHover: _propTypes["default"].bool,
567
+ graphProps: _plot.types.GraphPropsType,
568
+ from: _plot.types.PointType,
569
+ to: _plot.types.PointType,
570
+ middle: _plot.types.PointType,
571
+ onChange: _propTypes["default"].func,
572
+ onDragStart: _propTypes["default"].func,
573
+ onDragStop: _propTypes["default"].func,
574
+ onClick: _propTypes["default"].func,
575
+ correctness: _propTypes["default"].string,
576
+ fill: _propTypes["default"].string,
577
+ gssLineData: _propTypes["default"].object,
578
+ disabled: _propTypes["default"].bool,
579
+ labelNode: _propTypes["default"].object,
580
+ labelModeEnabled: _propTypes["default"].bool,
581
+ changeMarkProps: _propTypes["default"].func
582
+ });
583
+ return LineBase;
584
+ };
585
+
586
+ exports.lineBase = lineBase;
587
+ var styles = {
588
+ line: function line() {
589
+ return {
590
+ fill: 'transparent',
591
+ stroke: _renderUi.color.defaults.BLACK,
592
+ strokeWidth: 4,
593
+ transition: 'stroke 200ms ease-in, stroke-width 200ms ease-in',
594
+ '&:hover': {
595
+ strokeWidth: 6,
596
+ stroke: _renderUi.color.defaults.BLACK
597
+ }
598
+ };
599
+ },
600
+ dashedLine: function dashedLine() {
601
+ return {
602
+ fill: 'transparent',
603
+ stroke: _renderUi.color.defaults.BLACK,
604
+ strokeWidth: 4,
605
+ transition: 'stroke 200ms ease-in, stroke-width 200ms ease-in',
606
+ '&:hover': {
607
+ strokeWidth: 6,
608
+ stroke: _renderUi.color.defaults.BLACK
609
+ },
610
+ strokeDasharray: '3,3'
611
+ };
612
+ },
613
+ arrow: function arrow() {
614
+ return {
615
+ fill: _renderUi.color.defaults.SECONDARY
616
+ };
617
+ },
618
+ disabledArrow: function disabledArrow() {
619
+ return _objectSpread({}, (0, _styles.disabled)());
620
+ },
621
+ disabled: function disabled() {
622
+ return _objectSpread(_objectSpread({}, (0, _styles.disabled)('stroke')), {}, {
623
+ strokeWidth: 2
624
+ });
625
+ },
626
+ correct: function correct(theme, key) {
627
+ return _objectSpread({}, (0, _styles.correct)(key));
628
+ },
629
+ incorrect: function incorrect(theme, key) {
630
+ return _objectSpread({}, (0, _styles.incorrect)(key));
631
+ },
632
+ missing: function missing(theme, key) {
633
+ return _objectSpread({}, (0, _styles.missing)(key));
634
+ }
635
+ };
636
+ exports.styles = styles;
637
+ //# sourceMappingURL=index.js.map