@pie-lib/graphing 2.17.0 → 2.18.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 (147) hide show
  1. package/CHANGELOG.md +13 -65
  2. package/package.json +9 -8
  3. package/src/axis/axes.jsx +1 -1
  4. package/src/coordinates-label.jsx +1 -1
  5. package/src/graph-with-controls.jsx +1 -1
  6. package/src/grid-setup.jsx +1 -1
  7. package/src/key-legend.jsx +1 -1
  8. package/src/labels.jsx +1 -1
  9. package/src/mark-label.jsx +1 -1
  10. package/src/toggle-bar.jsx +1 -1
  11. package/src/tools/circle/bg-circle.jsx +1 -1
  12. package/src/tools/circle/component.jsx +1 -1
  13. package/src/tools/polygon/line.jsx +1 -1
  14. package/src/tools/polygon/polygon.jsx +1 -1
  15. package/src/tools/shared/line/index.jsx +1 -1
  16. package/src/tools/shared/line/line-path.jsx +1 -1
  17. package/src/tools/shared/point/index.jsx +1 -1
  18. package/src/tools/shared/styles.js +1 -1
  19. package/src/tools/sine/__tests__/component.test.jsx +1 -1
  20. package/src/undo-redo.jsx +1 -1
  21. package/lib/axis/arrow.js +0 -115
  22. package/lib/axis/arrow.js.map +0 -1
  23. package/lib/axis/axes.js +0 -415
  24. package/lib/axis/axes.js.map +0 -1
  25. package/lib/axis/index.js +0 -26
  26. package/lib/axis/index.js.map +0 -1
  27. package/lib/bg.js +0 -139
  28. package/lib/bg.js.map +0 -1
  29. package/lib/container/actions.js +0 -24
  30. package/lib/container/actions.js.map +0 -1
  31. package/lib/container/index.js +0 -163
  32. package/lib/container/index.js.map +0 -1
  33. package/lib/container/marks.js +0 -27
  34. package/lib/container/marks.js.map +0 -1
  35. package/lib/container/middleware.js +0 -25
  36. package/lib/container/middleware.js.map +0 -1
  37. package/lib/container/reducer.js +0 -25
  38. package/lib/container/reducer.js.map +0 -1
  39. package/lib/coordinates-label.js +0 -109
  40. package/lib/coordinates-label.js.map +0 -1
  41. package/lib/graph-with-controls.js +0 -359
  42. package/lib/graph-with-controls.js.map +0 -1
  43. package/lib/graph.js +0 -371
  44. package/lib/graph.js.map +0 -1
  45. package/lib/grid-setup.js +0 -462
  46. package/lib/grid-setup.js.map +0 -1
  47. package/lib/grid.js +0 -176
  48. package/lib/grid.js.map +0 -1
  49. package/lib/index.js +0 -59
  50. package/lib/index.js.map +0 -1
  51. package/lib/key-legend.js +0 -246
  52. package/lib/key-legend.js.map +0 -1
  53. package/lib/label-svg-icon.js +0 -56
  54. package/lib/label-svg-icon.js.map +0 -1
  55. package/lib/labels.js +0 -299
  56. package/lib/labels.js.map +0 -1
  57. package/lib/mark-label.js +0 -321
  58. package/lib/mark-label.js.map +0 -1
  59. package/lib/shared/index.js +0 -136
  60. package/lib/toggle-bar.js +0 -336
  61. package/lib/toggle-bar.js.map +0 -1
  62. package/lib/tool-menu.js +0 -112
  63. package/lib/tool-menu.js.map +0 -1
  64. package/lib/tools/absolute/component.js +0 -35
  65. package/lib/tools/absolute/component.js.map +0 -1
  66. package/lib/tools/absolute/index.js +0 -63
  67. package/lib/tools/absolute/index.js.map +0 -1
  68. package/lib/tools/circle/bg-circle.js +0 -173
  69. package/lib/tools/circle/bg-circle.js.map +0 -1
  70. package/lib/tools/circle/component.js +0 -406
  71. package/lib/tools/circle/component.js.map +0 -1
  72. package/lib/tools/circle/index.js +0 -51
  73. package/lib/tools/circle/index.js.map +0 -1
  74. package/lib/tools/exponential/component.js +0 -34
  75. package/lib/tools/exponential/component.js.map +0 -1
  76. package/lib/tools/exponential/index.js +0 -71
  77. package/lib/tools/exponential/index.js.map +0 -1
  78. package/lib/tools/index.js +0 -99
  79. package/lib/tools/index.js.map +0 -1
  80. package/lib/tools/line/component.js +0 -103
  81. package/lib/tools/line/component.js.map +0 -1
  82. package/lib/tools/line/index.js +0 -16
  83. package/lib/tools/line/index.js.map +0 -1
  84. package/lib/tools/parabola/component.js +0 -34
  85. package/lib/tools/parabola/component.js.map +0 -1
  86. package/lib/tools/parabola/index.js +0 -63
  87. package/lib/tools/parabola/index.js.map +0 -1
  88. package/lib/tools/point/component.js +0 -186
  89. package/lib/tools/point/component.js.map +0 -1
  90. package/lib/tools/point/index.js +0 -32
  91. package/lib/tools/point/index.js.map +0 -1
  92. package/lib/tools/polygon/component.js +0 -518
  93. package/lib/tools/polygon/component.js.map +0 -1
  94. package/lib/tools/polygon/index.js +0 -106
  95. package/lib/tools/polygon/index.js.map +0 -1
  96. package/lib/tools/polygon/line.js +0 -157
  97. package/lib/tools/polygon/line.js.map +0 -1
  98. package/lib/tools/polygon/polygon.js +0 -165
  99. package/lib/tools/polygon/polygon.js.map +0 -1
  100. package/lib/tools/ray/component.js +0 -102
  101. package/lib/tools/ray/component.js.map +0 -1
  102. package/lib/tools/ray/index.js +0 -16
  103. package/lib/tools/ray/index.js.map +0 -1
  104. package/lib/tools/segment/component.js +0 -75
  105. package/lib/tools/segment/component.js.map +0 -1
  106. package/lib/tools/segment/index.js +0 -16
  107. package/lib/tools/segment/index.js.map +0 -1
  108. package/lib/tools/shared/arrow-head.js +0 -70
  109. package/lib/tools/shared/arrow-head.js.map +0 -1
  110. package/lib/tools/shared/icons/CorrectSVG.js +0 -36
  111. package/lib/tools/shared/icons/CorrectSVG.js.map +0 -1
  112. package/lib/tools/shared/icons/IncorrectSVG.js +0 -36
  113. package/lib/tools/shared/icons/IncorrectSVG.js.map +0 -1
  114. package/lib/tools/shared/icons/MissingSVG.js +0 -35
  115. package/lib/tools/shared/icons/MissingSVG.js.map +0 -1
  116. package/lib/tools/shared/line/index.js +0 -599
  117. package/lib/tools/shared/line/index.js.map +0 -1
  118. package/lib/tools/shared/line/line-path.js +0 -151
  119. package/lib/tools/shared/line/line-path.js.map +0 -1
  120. package/lib/tools/shared/line/with-root-edge.js +0 -155
  121. package/lib/tools/shared/line/with-root-edge.js.map +0 -1
  122. package/lib/tools/shared/point/arrow-point.js +0 -113
  123. package/lib/tools/shared/point/arrow-point.js.map +0 -1
  124. package/lib/tools/shared/point/arrow.js +0 -96
  125. package/lib/tools/shared/point/arrow.js.map +0 -1
  126. package/lib/tools/shared/point/base-point.js +0 -175
  127. package/lib/tools/shared/point/base-point.js.map +0 -1
  128. package/lib/tools/shared/point/index.js +0 -97
  129. package/lib/tools/shared/point/index.js.map +0 -1
  130. package/lib/tools/shared/styles.js +0 -58
  131. package/lib/tools/shared/styles.js.map +0 -1
  132. package/lib/tools/shared/types.js +0 -23
  133. package/lib/tools/shared/types.js.map +0 -1
  134. package/lib/tools/sine/component.js +0 -51
  135. package/lib/tools/sine/component.js.map +0 -1
  136. package/lib/tools/sine/index.js +0 -63
  137. package/lib/tools/sine/index.js.map +0 -1
  138. package/lib/tools/vector/component.js +0 -88
  139. package/lib/tools/vector/component.js.map +0 -1
  140. package/lib/tools/vector/index.js +0 -16
  141. package/lib/tools/vector/index.js.map +0 -1
  142. package/lib/undo-redo.js +0 -123
  143. package/lib/undo-redo.js.map +0 -1
  144. package/lib/use-debounce.js +0 -32
  145. package/lib/use-debounce.js.map +0 -1
  146. package/lib/utils.js +0 -307
  147. package/lib/utils.js.map +0 -1
@@ -1,599 +0,0 @@
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 _index = require("./../../../shared/index");
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
- limitLabeling = _this$props3.limitLabeling;
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
- onChange: this.changeMark,
224
- changeMarkProps: this.changeMarkProps,
225
- onClick: onClick,
226
- onDragStart: this.startDrag,
227
- onDragStop: this.stopDrag,
228
- labelNode: labelNode,
229
- labelModeEnabled: labelModeEnabled,
230
- limitLabeling: limitLabeling
231
- });
232
- }
233
- }]);
234
- return LineToolComponent;
235
- }(_react["default"].Component), (0, _defineProperty2["default"])(_class, "propTypes", _objectSpread(_objectSpread({}, _plot.types.ToolPropTypeFields), {}, {
236
- graphProps: _plot.types.GraphPropsType.isRequired
237
- })), _class;
238
- };
239
-
240
- exports.lineToolComponent = lineToolComponent;
241
-
242
- var dragOpts = function dragOpts() {
243
- return {
244
- bounds: function bounds(props, _ref3) {
245
- var domain = _ref3.domain,
246
- range = _ref3.range;
247
-
248
- var area = _plot.utils.lineToArea(props.from, props.to);
249
-
250
- return _plot.utils.bounds(area, domain, range);
251
- },
252
- anchorPoint: function anchorPoint(props) {
253
- var from = props.from;
254
- return from;
255
- },
256
- fromDelta: function fromDelta(props, delta) {
257
- var from = props.from,
258
- to = props.to;
259
- return {
260
- from: _plot.utils.point(from).add(_plot.utils.point(delta)),
261
- to: _plot.utils.point(to).add(_plot.utils.point(delta))
262
- };
263
- }
264
- };
265
- };
266
-
267
- var lineBase = function lineBase(Comp, opts) {
268
- var DraggableComp = (0, _plot.gridDraggable)(dragOpts())(Comp);
269
- var FromPoint = opts && opts.from ? opts.from : _point.BasePoint;
270
- var ToPoint = opts && opts.to ? opts.to : _point.BasePoint;
271
-
272
- var LineBase = /*#__PURE__*/function (_React$Component2) {
273
- (0, _inherits2["default"])(LineBase, _React$Component2);
274
-
275
- var _super2 = _createSuper(LineBase);
276
-
277
- function LineBase() {
278
- var _this2;
279
-
280
- (0, _classCallCheck2["default"])(this, LineBase);
281
-
282
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
283
- args[_key] = arguments[_key];
284
- }
285
-
286
- _this2 = _super2.call.apply(_super2, [this].concat(args));
287
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "onChangePoint", function (point) {
288
- var _this2$props = _this2.props,
289
- middle = _this2$props.middle,
290
- onChange = _this2$props.onChange;
291
- var from = point.from,
292
- to = point.to; // because point.from.label and point.to.label can be different
293
-
294
- if (!(0, _utils.equalPoints)(from, to)) {
295
- if (middle) {
296
- point.middle = _objectSpread(_objectSpread({}, middle), (0, _utils.getMiddleOfTwoPoints)(from, to));
297
- }
298
-
299
- onChange(point);
300
- }
301
- });
302
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "dragComp", function (_ref4) {
303
- var draggedFrom = _ref4.from,
304
- draggedTo = _ref4.to;
305
- var _this2$props2 = _this2.props,
306
- from = _this2$props2.from,
307
- to = _this2$props2.to,
308
- onChange = _this2$props2.onChange,
309
- middle = _this2$props2.middle;
310
-
311
- if (from.label) {
312
- draggedFrom.label = from.label;
313
- }
314
-
315
- if (to.label) {
316
- draggedTo.label = to.label;
317
- }
318
-
319
- var updated = {
320
- from: draggedFrom,
321
- to: draggedTo
322
- };
323
-
324
- if (middle) {
325
- updated.middle = _objectSpread(_objectSpread({}, middle), (0, _utils.getMiddleOfTwoPoints)(draggedFrom, draggedTo));
326
- }
327
-
328
- onChange(updated);
329
- });
330
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "dragFrom", function (draggedFrom) {
331
- var _this2$props3 = _this2.props,
332
- from = _this2$props3.from,
333
- to = _this2$props3.to;
334
-
335
- if (from.label) {
336
- draggedFrom.label = from.label;
337
- }
338
-
339
- if (!(0, _utils.equalPoints)(draggedFrom, to)) {
340
- _this2.onChangePoint({
341
- from: draggedFrom,
342
- to: to
343
- });
344
- }
345
- });
346
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "dragTo", function (draggedTo) {
347
- var _this2$props4 = _this2.props,
348
- from = _this2$props4.from,
349
- to = _this2$props4.to;
350
-
351
- if (to.label) {
352
- draggedTo.label = to.label;
353
- }
354
-
355
- if (!(0, _utils.equalPoints)(from, draggedTo)) {
356
- _this2.onChangePoint({
357
- from: from,
358
- to: draggedTo
359
- });
360
- }
361
- });
362
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "labelChange", function (point, type) {
363
- var changeMarkProps = _this2.props.changeMarkProps;
364
-
365
- var update = _objectSpread({}, point);
366
-
367
- if (!point.label || (0, _isEmpty["default"])(point.label)) {
368
- delete update.label;
369
- }
370
-
371
- changeMarkProps((0, _defineProperty2["default"])({}, type, update));
372
- });
373
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "clickPoint", function (point, type, data) {
374
- var _this2$props5 = _this2.props,
375
- changeMarkProps = _this2$props5.changeMarkProps,
376
- disabled = _this2$props5.disabled,
377
- from = _this2$props5.from,
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
- }
396
-
397
- if (type === 'middle' && !point && from && to) {
398
- point = _objectSpread(_objectSpread({}, point), (0, _utils.getMiddleOfTwoPoints)(from, to));
399
- }
400
-
401
- changeMarkProps((0, _defineProperty2["default"])({
402
- from: from,
403
- to: to
404
- }, type, _objectSpread({
405
- label: ''
406
- }, point)));
407
-
408
- if (_this2.input[type]) {
409
- _this2.input[type].focus();
410
- }
411
- });
412
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), "input", {});
413
- return _this2;
414
- }
415
-
416
- (0, _createClass2["default"])(LineBase, [{
417
- key: "render",
418
- value: function render() {
419
- var _this3 = this;
420
-
421
- var _this$props4 = this.props,
422
- coordinatesOnHover = _this$props4.coordinatesOnHover,
423
- graphProps = _this$props4.graphProps,
424
- onDragStart = _this$props4.onDragStart,
425
- onDragStop = _this$props4.onDragStop,
426
- from = _this$props4.from,
427
- to = _this$props4.to,
428
- middle = _this$props4.middle,
429
- disabled = _this$props4.disabled,
430
- correctness = _this$props4.correctness,
431
- onClick = _this$props4.onClick,
432
- labelNode = _this$props4.labelNode,
433
- labelModeEnabled = _this$props4.labelModeEnabled;
434
- var common = {
435
- graphProps: graphProps,
436
- onDragStart: onDragStart,
437
- onDragStop: onDragStop,
438
- disabled: disabled,
439
- correctness: correctness,
440
- onClick: onClick
441
- };
442
- var angle = to ? _plot.trig.toDegrees(_plot.trig.angle(from, to)) : 0;
443
- var fromLabelNode = null;
444
- var toLabelNode = null;
445
- var lineLabelNode = null;
446
-
447
- if (labelNode) {
448
- if (from && from.hasOwnProperty('label')) {
449
- fromLabelNode = /*#__PURE__*/_reactDom["default"].createPortal( /*#__PURE__*/_react["default"].createElement(_markLabel["default"], {
450
- inputRef: function inputRef(r) {
451
- return _this3.input.from = r;
452
- },
453
- disabled: !labelModeEnabled,
454
- mark: from,
455
- graphProps: graphProps,
456
- onChange: function onChange(label) {
457
- return _this3.labelChange(_objectSpread(_objectSpread({}, from), {}, {
458
- label: label
459
- }), 'from');
460
- }
461
- }), labelNode);
462
- }
463
-
464
- if (to && to.hasOwnProperty('label')) {
465
- toLabelNode = /*#__PURE__*/_reactDom["default"].createPortal( /*#__PURE__*/_react["default"].createElement(_markLabel["default"], {
466
- inputRef: function inputRef(r) {
467
- return _this3.input.to = r;
468
- },
469
- disabled: !labelModeEnabled,
470
- mark: to,
471
- graphProps: graphProps,
472
- onChange: function onChange(label) {
473
- return _this3.labelChange(_objectSpread(_objectSpread({}, to), {}, {
474
- label: label
475
- }), 'to');
476
- }
477
- }), labelNode);
478
- }
479
-
480
- if (middle && middle.hasOwnProperty('label')) {
481
- lineLabelNode = /*#__PURE__*/_reactDom["default"].createPortal( /*#__PURE__*/_react["default"].createElement(_markLabel["default"], {
482
- inputRef: function inputRef(r) {
483
- return _this3.input.middle = r;
484
- },
485
- disabled: !labelModeEnabled,
486
- mark: middle,
487
- graphProps: graphProps,
488
- onChange: function onChange(label) {
489
- return _this3.labelChange(_objectSpread(_objectSpread({}, middle), {}, {
490
- label: label
491
- }), 'middle');
492
- }
493
- }), labelNode);
494
- }
495
- }
496
-
497
- return /*#__PURE__*/_react["default"].createElement("g", null, to && /*#__PURE__*/_react["default"].createElement(DraggableComp, (0, _extends2["default"])({
498
- from: from,
499
- to: to,
500
- middle: middle,
501
- onDrag: this.dragComp
502
- }, common, {
503
- onClick: function onClick(data) {
504
- return _this3.clickPoint(middle, 'middle', data);
505
- }
506
- })), lineLabelNode, /*#__PURE__*/_react["default"].createElement(FromPoint, (0, _extends2["default"])({
507
- x: from.x,
508
- y: from.y,
509
- labelNode: labelNode,
510
- coordinatesOnHover: coordinatesOnHover,
511
- onDrag: this.dragFrom
512
- }, common, {
513
- onClick: function onClick(data) {
514
- return _this3.clickPoint(from, 'from', data);
515
- }
516
- })), fromLabelNode, to && /*#__PURE__*/_react["default"].createElement(ToPoint, (0, _extends2["default"])({
517
- x: to.x,
518
- y: to.y,
519
- angle: angle //angle + 45}
520
- ,
521
- labelNode: labelNode,
522
- coordinatesOnHover: coordinatesOnHover,
523
- onDrag: this.dragTo
524
- }, common, {
525
- onClick: function onClick(data) {
526
- return _this3.clickPoint(to, 'to', data);
527
- }
528
- })), toLabelNode);
529
- }
530
- }]);
531
- return LineBase;
532
- }(_react["default"].Component);
533
-
534
- (0, _defineProperty2["default"])(LineBase, "propTypes", {
535
- coordinatesOnHover: _propTypes["default"].bool,
536
- graphProps: _plot.types.GraphPropsType,
537
- from: _plot.types.PointType,
538
- to: _plot.types.PointType,
539
- middle: _plot.types.PointType,
540
- onChange: _propTypes["default"].func,
541
- onDragStart: _propTypes["default"].func,
542
- onDragStop: _propTypes["default"].func,
543
- onClick: _propTypes["default"].func,
544
- correctness: _propTypes["default"].string,
545
- disabled: _propTypes["default"].bool,
546
- labelNode: _propTypes["default"].object,
547
- labelModeEnabled: _propTypes["default"].bool,
548
- changeMarkProps: _propTypes["default"].func
549
- });
550
- return LineBase;
551
- };
552
-
553
- exports.lineBase = lineBase;
554
- var styles = {
555
- line: function line() {
556
- return {
557
- fill: 'transparent',
558
- stroke: _index.color.defaults.BLACK,
559
- strokeWidth: 3,
560
- transition: 'stroke 200ms ease-in, stroke-width 200ms ease-in',
561
- '&:hover': {
562
- strokeWidth: 6,
563
- stroke: _index.color.defaults.PRIMARY_DARK
564
- }
565
- };
566
- },
567
- arrow: function arrow() {
568
- return {
569
- fill: _index.color.defaults.BLACK
570
- };
571
- },
572
- disabledArrow: function disabledArrow() {
573
- return _objectSpread({}, (0, _styles.disabledSecondary)());
574
- },
575
- disabledSecondary: function disabledSecondary() {
576
- return _objectSpread(_objectSpread({}, (0, _styles.disabledSecondary)('stroke')), {}, {
577
- strokeWidth: 2
578
- });
579
- },
580
- disabled: function disabled() {
581
- return _objectSpread(_objectSpread({}, (0, _styles.disabled)('stroke')), {}, {
582
- strokeWidth: 2
583
- });
584
- },
585
- correct: function correct(theme, key) {
586
- return _objectSpread({}, (0, _styles.correct)(key));
587
- },
588
- incorrect: function incorrect(theme, key) {
589
- return _objectSpread({}, (0, _styles.incorrect)(key));
590
- },
591
- missing: function missing(theme, key) {
592
- return _objectSpread(_objectSpread({}, (0, _styles.missing)(key)), {}, {
593
- strokeWidth: 1,
594
- strokeDasharray: '4 3'
595
- });
596
- }
597
- };
598
- exports.styles = styles;
599
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/tools/shared/line/index.jsx"],"names":["lineTool","type","Component","addPoint","point","mark","root","building","from","to","lineToolComponent","props","setState","onChange","update","state","undefined","shouldNotChange","y","middle","graphProps","onClick","labelNode","labelModeEnabled","coordinatesOnHover","limitLabeling","isBackground","disabled","correctness","changeMark","changeMarkProps","startDrag","stopDrag","React","types","ToolPropTypeFields","GraphPropsType","isRequired","dragOpts","bounds","domain","range","area","utils","lineToArea","anchorPoint","fromDelta","delta","add","lineBase","Comp","opts","DraggableComp","FromPoint","BasePoint","ToPoint","LineBase","draggedFrom","draggedTo","label","updated","onChangePoint","data","input","focus","onDragStart","onDragStop","common","angle","trig","toDegrees","fromLabelNode","toLabelNode","lineLabelNode","hasOwnProperty","ReactDOM","createPortal","r","labelChange","dragComp","clickPoint","x","dragFrom","dragTo","PropTypes","bool","PointType","func","string","object","styles","line","fill","stroke","color","defaults","BLACK","strokeWidth","transition","PRIMARY_DARK","arrow","disabledArrow","disabledSecondary","correct","theme","key","incorrect","missing","strokeDasharray"],"mappings":"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","sourcesContent":["import React from 'react';\nimport isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { BasePoint } from '../point';\nimport { types, utils, gridDraggable, trig } from '@pie-lib/plot';\nimport PropTypes from 'prop-types';\nimport { disabled, disabledSecondary, correct, incorrect, missing } from '../styles';\nimport ReactDOM from 'react-dom';\nimport MarkLabel from '../../../mark-label';\nimport isEmpty from 'lodash/isEmpty';\nimport { color } from '../../../../../render-ui/src/index';\nimport { getMiddleOfTwoPoints, equalPoints, sameAxes } from '../../../utils';\n\nexport const lineTool = (type, Component) => () => ({\n type,\n Component,\n addPoint: (point, mark) => {\n if (mark && equalPoints(mark.root, point)) {\n return mark;\n }\n\n if (!mark) {\n return {\n type,\n building: true,\n from: point,\n };\n }\n\n if (equalPoints(point, mark.from)) {\n return { ...mark };\n }\n\n return { ...mark, building: false, to: point };\n },\n});\n\nexport const lineToolComponent = (Component) => {\n return class LineToolComponent extends React.Component {\n static propTypes = {\n ...types.ToolPropTypeFields,\n graphProps: types.GraphPropsType.isRequired,\n };\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n startDrag = () => this.setState({ mark: { ...this.props.mark } });\n\n stopDrag = () => {\n const { onChange, mark } = this.props;\n const update = { ...this.state.mark };\n\n this.setState({ mark: undefined }, () => {\n const { type } = update;\n let shouldNotChange =\n type &&\n (type === 'parabola' || type === 'sine' || type === 'absolute' || type === 'exponential') &&\n sameAxes(update.from, update.to);\n if (!shouldNotChange && type && type === 'exponential' && update.from && update.to) {\n shouldNotChange = update.from.y === 0 || update.to.y === 0 || update.from.y * update.to.y < 0;\n }\n if (!isEqual(mark, update) && !shouldNotChange) {\n onChange(mark, update);\n }\n });\n };\n\n changeMark = ({ from, to, middle }) => {\n let mark = { ...this.state.mark, from, to };\n\n if (middle) {\n mark = { ...mark, middle };\n }\n\n this.setState({ mark });\n };\n\n changeMarkProps = ({ from, to, middle }) => {\n const { onChange, mark } = this.props;\n let update = { ...mark, ...this.state.mark };\n\n if (from) {\n update = { ...update, from };\n }\n\n if (to) {\n update = { ...update, to };\n }\n\n if (middle) {\n update = { ...update, middle };\n }\n\n if (!isEqual(mark, update)) {\n onChange(mark, update);\n }\n };\n\n render() {\n const { graphProps, onClick, labelNode, labelModeEnabled, coordinatesOnHover, limitLabeling } = this.props;\n const mark = this.state.mark ? this.state.mark : this.props.mark;\n\n const from = cloneDeep(mark.from);\n const to = cloneDeep(mark.to);\n const middle = cloneDeep(mark.middle);\n\n // SET DISABLED\n // if it's a background mark, we need to force disable it\n if (from && mark.isBackground) {\n from.disabled = true;\n }\n\n if (to && mark.isBackground) {\n to.disabled = true;\n }\n\n if (middle && mark.isBackground) {\n middle.disabled = true;\n }\n\n return (\n <Component\n disabled={mark.disabled}\n coordinatesOnHover={coordinatesOnHover}\n correctness={mark.correctness}\n from={from}\n to={to}\n middle={middle}\n graphProps={graphProps}\n onChange={this.changeMark}\n changeMarkProps={this.changeMarkProps}\n onClick={onClick}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n labelNode={labelNode}\n labelModeEnabled={labelModeEnabled}\n limitLabeling={limitLabeling}\n />\n );\n }\n };\n};\n\nconst dragOpts = () => ({\n bounds: (props, { domain, range }) => {\n const area = utils.lineToArea(props.from, props.to);\n return utils.bounds(area, domain, range);\n },\n anchorPoint: (props) => {\n const { from } = props;\n return from;\n },\n fromDelta: (props, delta) => {\n const { from, to } = props;\n return {\n from: utils.point(from).add(utils.point(delta)),\n to: utils.point(to).add(utils.point(delta)),\n };\n },\n});\n\nexport const lineBase = (Comp, opts) => {\n const DraggableComp = gridDraggable(dragOpts())(Comp);\n\n const FromPoint = opts && opts.from ? opts.from : BasePoint;\n const ToPoint = opts && opts.to ? opts.to : BasePoint;\n\n class LineBase extends React.Component {\n static propTypes = {\n coordinatesOnHover: PropTypes.bool,\n graphProps: types.GraphPropsType,\n from: types.PointType,\n to: types.PointType,\n middle: types.PointType,\n onChange: PropTypes.func,\n onDragStart: PropTypes.func,\n onDragStop: PropTypes.func,\n onClick: PropTypes.func,\n correctness: PropTypes.string,\n disabled: PropTypes.bool,\n labelNode: PropTypes.object,\n labelModeEnabled: PropTypes.bool,\n changeMarkProps: PropTypes.func,\n };\n\n onChangePoint = (point) => {\n const { middle, onChange } = this.props;\n const { from, to } = point;\n\n // because point.from.label and point.to.label can be different\n if (!equalPoints(from, to)) {\n if (middle) {\n point.middle = { ...middle, ...getMiddleOfTwoPoints(from, to) };\n }\n\n onChange(point);\n }\n };\n\n dragComp = ({ from: draggedFrom, to: draggedTo }) => {\n const { from, to, onChange, middle } = this.props;\n\n if (from.label) {\n draggedFrom.label = from.label;\n }\n\n if (to.label) {\n draggedTo.label = to.label;\n }\n\n const updated = { from: draggedFrom, to: draggedTo };\n\n if (middle) {\n updated.middle = { ...middle, ...getMiddleOfTwoPoints(draggedFrom, draggedTo) };\n }\n\n onChange(updated);\n };\n\n dragFrom = (draggedFrom) => {\n const { from, to } = this.props;\n\n if (from.label) {\n draggedFrom.label = from.label;\n }\n\n if (!equalPoints(draggedFrom, to)) {\n this.onChangePoint({ from: draggedFrom, to: to });\n }\n };\n\n dragTo = (draggedTo) => {\n const { from, to } = this.props;\n\n if (to.label) {\n draggedTo.label = to.label;\n }\n\n if (!equalPoints(from, draggedTo)) {\n this.onChangePoint({ from: from, to: draggedTo });\n }\n };\n\n labelChange = (point, type) => {\n const { changeMarkProps } = this.props;\n const update = { ...point };\n\n if (!point.label || isEmpty(point.label)) {\n delete update.label;\n }\n\n changeMarkProps({ [type]: update });\n };\n\n clickPoint = (point, type, data) => {\n const { changeMarkProps, disabled, from, to, labelModeEnabled, limitLabeling, onClick } = this.props;\n\n if (!labelModeEnabled) {\n onClick(point || data);\n return;\n }\n\n if (disabled) {\n return;\n }\n\n // limit labeling the points of the line\n if (limitLabeling) {\n return;\n }\n\n if (type === 'middle' && !point && from && to) {\n point = { ...point, ...getMiddleOfTwoPoints(from, to) };\n }\n\n changeMarkProps({ from, to, [type]: { label: '', ...point } });\n\n if (this.input[type]) {\n this.input[type].focus();\n }\n };\n\n // IMPORTANT, do not remove\n input = {};\n\n render() {\n const {\n coordinatesOnHover,\n graphProps,\n onDragStart,\n onDragStop,\n from,\n to,\n middle,\n disabled,\n correctness,\n onClick,\n labelNode,\n labelModeEnabled,\n } = this.props;\n const common = { graphProps, onDragStart, onDragStop, disabled, correctness, onClick };\n const angle = to ? trig.toDegrees(trig.angle(from, to)) : 0;\n\n let fromLabelNode = null;\n let toLabelNode = null;\n let lineLabelNode = null;\n\n if (labelNode) {\n if (from && from.hasOwnProperty('label')) {\n fromLabelNode = ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input.from = r)}\n disabled={!labelModeEnabled}\n mark={from}\n graphProps={graphProps}\n onChange={(label) => this.labelChange({ ...from, label }, 'from')}\n />,\n labelNode,\n );\n }\n\n if (to && to.hasOwnProperty('label')) {\n toLabelNode = ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input.to = r)}\n disabled={!labelModeEnabled}\n mark={to}\n graphProps={graphProps}\n onChange={(label) => this.labelChange({ ...to, label }, 'to')}\n />,\n labelNode,\n );\n }\n\n if (middle && middle.hasOwnProperty('label')) {\n lineLabelNode = ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input.middle = r)}\n disabled={!labelModeEnabled}\n mark={middle}\n graphProps={graphProps}\n onChange={(label) => this.labelChange({ ...middle, label }, 'middle')}\n />,\n labelNode,\n );\n }\n }\n\n return (\n <g>\n {to && (\n <DraggableComp\n from={from}\n to={to}\n middle={middle}\n onDrag={this.dragComp}\n {...common}\n onClick={(data) => this.clickPoint(middle, 'middle', data)}\n />\n )}\n {lineLabelNode}\n\n <FromPoint\n x={from.x}\n y={from.y}\n labelNode={labelNode}\n coordinatesOnHover={coordinatesOnHover}\n onDrag={this.dragFrom}\n {...common}\n onClick={(data) => this.clickPoint(from, 'from', data)}\n />\n {fromLabelNode}\n\n {to && (\n <ToPoint\n x={to.x}\n y={to.y}\n angle={angle} //angle + 45}\n labelNode={labelNode}\n coordinatesOnHover={coordinatesOnHover}\n onDrag={this.dragTo}\n {...common}\n onClick={(data) => this.clickPoint(to, 'to', data)}\n />\n )}\n {toLabelNode}\n </g>\n );\n }\n }\n\n return LineBase;\n};\n\nexport const styles = {\n line: () => ({\n fill: 'transparent',\n stroke: color.defaults.BLACK,\n strokeWidth: 3,\n transition: 'stroke 200ms ease-in, stroke-width 200ms ease-in',\n '&:hover': {\n strokeWidth: 6,\n stroke: color.defaults.PRIMARY_DARK,\n },\n }),\n arrow: () => ({\n fill: color.defaults.BLACK,\n }),\n disabledArrow: () => ({\n ...disabledSecondary(),\n }),\n disabledSecondary: () => ({\n ...disabledSecondary('stroke'),\n strokeWidth: 2,\n }),\n disabled: () => ({\n ...disabled('stroke'),\n strokeWidth: 2,\n }),\n correct: (theme, key) => ({\n ...correct(key),\n }),\n incorrect: (theme, key) => ({\n ...incorrect(key),\n }),\n missing: (theme, key) => ({\n ...missing(key),\n strokeWidth: 1,\n strokeDasharray: '4 3',\n }),\n};\n"],"file":"index.js"}