@pie-lib/graphing 3.1.0-next.2 → 3.1.0-next.26

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