@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,439 @@
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.iterator.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.reflect.construct.js");
12
+ require("core-js/modules/es.string.iterator.js");
13
+ require("core-js/modules/es.weak-map.js");
14
+ require("core-js/modules/web.dom-collections.iterator.js");
15
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
16
+ var _typeof = require("@babel/runtime/helpers/typeof");
17
+ Object.defineProperty(exports, "__esModule", {
18
+ value: true
19
+ });
20
+ exports.swap = exports["default"] = exports.buildLines = exports.RawBaseComponent = exports.BaseComponent = void 0;
21
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
22
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
23
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
24
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
25
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
26
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
27
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
28
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
29
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
30
+ require("core-js/modules/es.array.concat.js");
31
+ require("core-js/modules/es.array.find.js");
32
+ require("core-js/modules/es.array.for-each.js");
33
+ require("core-js/modules/es.array.map.js");
34
+ require("core-js/modules/es.array.reduce.js");
35
+ require("core-js/modules/es.array.splice.js");
36
+ require("core-js/modules/es.function.bind.js");
37
+ require("core-js/modules/es.number.is-finite.js");
38
+ require("core-js/modules/es.object.to-string.js");
39
+ require("core-js/modules/web.dom-collections.for-each.js");
40
+ var _react = _interopRequireDefault(require("react"));
41
+ var _propTypes = _interopRequireDefault(require("prop-types"));
42
+ var _types = require("../shared/types");
43
+ var _point = require("../shared/point");
44
+ var _chunk = _interopRequireDefault(require("lodash/chunk"));
45
+ var _initial = _interopRequireDefault(require("lodash/initial"));
46
+ var _debug = _interopRequireDefault(require("debug"));
47
+ var _line = _interopRequireDefault(require("./line"));
48
+ var _polygon = _interopRequireWildcard(require("./polygon"));
49
+ var _plot = require("@pie-lib/plot");
50
+ var _invariant = _interopRequireDefault(require("invariant"));
51
+ var _reactDom = _interopRequireDefault(require("react-dom"));
52
+ var _markLabel = _interopRequireDefault(require("../../mark-label"));
53
+ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
54
+ var _utils = require("../../utils");
55
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
56
+ 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)); }
57
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
58
+ 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; }
59
+ 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; }
60
+ var log = (0, _debug["default"])('pie-lib:graphing:polygon');
61
+ var buildLines = exports.buildLines = function buildLines(points, closed) {
62
+ var expanded = points.reduce(function (acc, p, index) {
63
+ acc.push(_objectSpread(_objectSpread({}, p), {}, {
64
+ index: index
65
+ }));
66
+ var isLast = index === points.length - 1;
67
+ var next = isLast ? 0 : index + 1;
68
+ acc.push(_objectSpread(_objectSpread({}, points[next]), {}, {
69
+ index: next
70
+ }));
71
+ return acc;
72
+ }, []);
73
+ var all = (0, _chunk["default"])(expanded, 2).map(function (_ref) {
74
+ var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
75
+ from = _ref2[0],
76
+ to = _ref2[1];
77
+ return {
78
+ from: from,
79
+ to: to
80
+ };
81
+ });
82
+ return closed ? all : (0, _initial["default"])(all);
83
+ };
84
+ var swap = exports.swap = function swap(arr) {
85
+ for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
86
+ rest[_key - 1] = arguments[_key];
87
+ }
88
+ var pairs = (0, _chunk["default"])(rest, 2);
89
+ return pairs.reduce(function (acc, pr) {
90
+ if (pr.length === 2) {
91
+ var _pr = (0, _slicedToArray2["default"])(pr, 2),
92
+ e = _pr[0],
93
+ replacement = _pr[1];
94
+ (0, _invariant["default"])(Number.isFinite(e.index), 'Index must be defined');
95
+ var index = e.index;
96
+ // const i = acc.findIndex(pt => pt.x === e.x && pt.y === e.y);
97
+
98
+ if (index >= 0) {
99
+ acc.splice(index, 1, replacement);
100
+ return acc;
101
+ } else {
102
+ return acc;
103
+ }
104
+ } else {
105
+ return acc;
106
+ }
107
+ }, (0, _toConsumableArray2["default"])(arr));
108
+ };
109
+ var RawBaseComponent = exports.RawBaseComponent = /*#__PURE__*/function (_React$Component) {
110
+ function RawBaseComponent() {
111
+ var _this;
112
+ (0, _classCallCheck2["default"])(this, RawBaseComponent);
113
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
114
+ args[_key2] = arguments[_key2];
115
+ }
116
+ _this = _callSuper(this, RawBaseComponent, [].concat(args));
117
+ (0, _defineProperty2["default"])(_this, "dragPoint", function (index, from, to) {
118
+ log('[dragPoint] from, to:', from, to);
119
+ var _this$props = _this.props,
120
+ onChange = _this$props.onChange,
121
+ points = _this$props.points;
122
+ var update = (0, _toConsumableArray2["default"])(points);
123
+ var overlapPoint = !!(points || []).find(function (p) {
124
+ return (0, _utils.equalPoints)(p, to);
125
+ });
126
+ if ((0, _utils.equalPoints)(from, to) || overlapPoint) {
127
+ return;
128
+ }
129
+ if (points[index].label) {
130
+ to.label = points[index].label;
131
+ }
132
+ update.splice(index, 1, to);
133
+ onChange(update);
134
+ });
135
+ (0, _defineProperty2["default"])(_this, "dragLine", function (existing, next) {
136
+ log('[dragLine]: ', existing, next);
137
+ var onChange = _this.props.onChange;
138
+ if (existing.from.label) {
139
+ next.from.label = existing.from.label;
140
+ }
141
+ if (existing.to.label) {
142
+ next.to.label = existing.to.label;
143
+ }
144
+ var points = swap(_this.props.points, existing.from, next.from, existing.to, next.to);
145
+ onChange(points);
146
+ });
147
+ (0, _defineProperty2["default"])(_this, "dragPoly", function (existing, next) {
148
+ log('[dragPoly] ', existing, next);
149
+ var onChange = _this.props.onChange;
150
+ next.forEach(function (point, index) {
151
+ if (existing[index].label) {
152
+ next[index].label = existing[index].label;
153
+ }
154
+ });
155
+ onChange(next);
156
+ });
157
+ (0, _defineProperty2["default"])(_this, "close", function () {
158
+ var _this$props2 = _this.props,
159
+ points = _this$props2.points,
160
+ onClosePolygon = _this$props2.onClosePolygon;
161
+ log('[close] ...');
162
+ if (points.length >= 3) {
163
+ onClosePolygon();
164
+ } else {
165
+ log('[close] - nope');
166
+ }
167
+ });
168
+ (0, _defineProperty2["default"])(_this, "labelChange", function (point, index) {
169
+ var _this$props3 = _this.props,
170
+ points = _this$props3.points,
171
+ onChangeProps = _this$props3.onChangeProps;
172
+ var updatedPoint = _objectSpread({}, point);
173
+ if (!point.label || (0, _isEmpty["default"])(point.label)) {
174
+ delete updatedPoint.label;
175
+ }
176
+ var update = (0, _toConsumableArray2["default"])(points);
177
+ update.splice(index, 1, updatedPoint);
178
+ onChangeProps(update);
179
+ });
180
+ (0, _defineProperty2["default"])(_this, "clickPoint", function (point, index, data) {
181
+ var _this$props4 = _this.props,
182
+ closed = _this$props4.closed,
183
+ disabled = _this$props4.disabled,
184
+ onClick = _this$props4.onClick,
185
+ isToolActive = _this$props4.isToolActive,
186
+ labelModeEnabled = _this$props4.labelModeEnabled,
187
+ limitLabeling = _this$props4.limitLabeling,
188
+ onChangeProps = _this$props4.onChangeProps,
189
+ onChangeLabelProps = _this$props4.onChangeLabelProps,
190
+ points = _this$props4.points;
191
+ if (labelModeEnabled) {
192
+ // limit labeling the points of the polygon
193
+ if (disabled || limitLabeling) {
194
+ return;
195
+ }
196
+ if (points && index === points.length) {
197
+ var _getRightestPoints = (0, _utils.getRightestPoints)(points),
198
+ a = _getRightestPoints.a,
199
+ b = _getRightestPoints.b;
200
+ var middle = _objectSpread(_objectSpread({
201
+ label: ''
202
+ }, point), (0, _utils.getMiddleOfTwoPoints)(a, b));
203
+ onChangeLabelProps(middle);
204
+ } else {
205
+ var update = (0, _toConsumableArray2["default"])(points);
206
+ update.splice(index, 1, _objectSpread({
207
+ label: ''
208
+ }, point));
209
+ onChangeProps(update);
210
+ }
211
+ if (_this.input[index]) {
212
+ _this.input[index].focus();
213
+ }
214
+ return;
215
+ }
216
+ if (isToolActive && !closed && index === 0) {
217
+ _this.close();
218
+ return;
219
+ }
220
+ onClick(point || data);
221
+ });
222
+ // IMPORTANT, do not remove
223
+ (0, _defineProperty2["default"])(_this, "input", {});
224
+ return _this;
225
+ }
226
+ (0, _inherits2["default"])(RawBaseComponent, _React$Component);
227
+ return (0, _createClass2["default"])(RawBaseComponent, [{
228
+ key: "render",
229
+ value: function render() {
230
+ var _this2 = this;
231
+ var _this$props5 = this.props,
232
+ closed = _this$props5.closed,
233
+ coordinatesOnHover = _this$props5.coordinatesOnHover,
234
+ correctness = _this$props5.correctness,
235
+ disabled = _this$props5.disabled,
236
+ graphProps = _this$props5.graphProps,
237
+ onChangeLabelProps = _this$props5.onChangeLabelProps,
238
+ onDragStart = _this$props5.onDragStart,
239
+ onDragStop = _this$props5.onDragStop,
240
+ points = _this$props5.points,
241
+ middle = _this$props5.middle,
242
+ labelNode = _this$props5.labelNode,
243
+ labelModeEnabled = _this$props5.labelModeEnabled;
244
+ var lines = buildLines(points, closed);
245
+ var common = {
246
+ onDragStart: onDragStart,
247
+ onDragStop: onDragStop,
248
+ graphProps: graphProps,
249
+ disabled: disabled,
250
+ correctness: correctness
251
+ };
252
+ var polygonLabelIndex = points && points.length || 0;
253
+ var polygonLabelNode = null;
254
+ if (labelNode && middle && Object.prototype.hasOwnProperty.call(middle, 'label')) {
255
+ polygonLabelNode = /*#__PURE__*/_reactDom["default"].createPortal(/*#__PURE__*/_react["default"].createElement(_markLabel["default"], {
256
+ inputRef: function inputRef(r) {
257
+ return _this2.input[polygonLabelIndex] = r;
258
+ },
259
+ disabled: !labelModeEnabled,
260
+ mark: middle,
261
+ graphProps: graphProps,
262
+ onChange: function onChange(label) {
263
+ return onChangeLabelProps(_objectSpread(_objectSpread({}, middle), {}, {
264
+ label: label
265
+ }));
266
+ }
267
+ }), labelNode);
268
+ }
269
+ return /*#__PURE__*/_react["default"].createElement("g", null, closed ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_polygon["default"], (0, _extends2["default"])({
270
+ points: points,
271
+ onDrag: this.dragPoly.bind(this, points),
272
+ closed: closed
273
+ }, common, {
274
+ onClick: this.clickPoint.bind(this, middle, polygonLabelIndex)
275
+ })), polygonLabelNode) : /*#__PURE__*/_react["default"].createElement(_polygon.Polygon, {
276
+ points: points,
277
+ graphProps: graphProps,
278
+ closed: closed
279
+ }), (lines || []).map(function (l, index) {
280
+ return /*#__PURE__*/_react["default"].createElement(_line["default"], (0, _extends2["default"])({
281
+ key: "line-".concat(index),
282
+ from: l.from,
283
+ to: l.to,
284
+ onDrag: _this2.dragLine.bind(_this2, l)
285
+ }, common, {
286
+ onClick: _this2.clickPoint.bind(_this2, middle, polygonLabelIndex)
287
+ }));
288
+ }), (points || []).map(function (p, index) {
289
+ return [/*#__PURE__*/_react["default"].createElement(_point.BasePoint, (0, _extends2["default"])({
290
+ key: "point-".concat(index),
291
+ coordinatesOnHover: coordinatesOnHover,
292
+ labelNode: labelNode,
293
+ x: p.x,
294
+ y: p.y,
295
+ onDrag: _this2.dragPoint.bind(_this2, index, p)
296
+ }, common, {
297
+ onClick: _this2.clickPoint.bind(_this2, p, index)
298
+ })), labelNode && Object.prototype.hasOwnProperty.call(p, 'label') ? /*#__PURE__*/_reactDom["default"].createPortal(/*#__PURE__*/_react["default"].createElement(_markLabel["default"], {
299
+ inputRef: function inputRef(r) {
300
+ return _this2.input[index] = r;
301
+ },
302
+ disabled: !labelModeEnabled,
303
+ mark: p,
304
+ graphProps: graphProps,
305
+ onChange: function onChange(label) {
306
+ return _this2.labelChange(_objectSpread(_objectSpread({}, p), {}, {
307
+ label: label
308
+ }), index);
309
+ }
310
+ }), labelNode) : null];
311
+ }));
312
+ }
313
+ }]);
314
+ }(_react["default"].Component);
315
+ (0, _defineProperty2["default"])(RawBaseComponent, "propTypes", {
316
+ classes: _propTypes["default"].object,
317
+ className: _propTypes["default"].string,
318
+ disabled: _propTypes["default"].bool,
319
+ correctness: _propTypes["default"].string,
320
+ points: _propTypes["default"].arrayOf(_plot.types.PointType),
321
+ closed: _propTypes["default"].bool,
322
+ coordinatesOnHover: _propTypes["default"].bool,
323
+ onChange: _propTypes["default"].func.isRequired,
324
+ onClosePolygon: _propTypes["default"].func.isRequired,
325
+ onDragStart: _propTypes["default"].func,
326
+ onDragStop: _propTypes["default"].func,
327
+ onClick: _propTypes["default"].func,
328
+ graphProps: _plot.types.GraphPropsType.isRequired,
329
+ isToolActive: _propTypes["default"].bool,
330
+ middle: _propTypes["default"].object,
331
+ labelNode: _propTypes["default"].object,
332
+ labelModeEnabled: _propTypes["default"].bool,
333
+ limitLabeling: _propTypes["default"].bool,
334
+ onChangeLabelProps: _propTypes["default"].func,
335
+ onChangeProps: _propTypes["default"].func
336
+ });
337
+ (0, _defineProperty2["default"])(RawBaseComponent, "defaultProps", {
338
+ points: []
339
+ });
340
+ var BaseComponent = exports.BaseComponent = RawBaseComponent;
341
+ var Component = exports["default"] = /*#__PURE__*/function (_React$Component2) {
342
+ function Component(props) {
343
+ var _this3;
344
+ (0, _classCallCheck2["default"])(this, Component);
345
+ _this3 = _callSuper(this, Component, [props]);
346
+ (0, _defineProperty2["default"])(_this3, "change", function (points) {
347
+ var middle = _this3.props.mark.middle;
348
+ var mark = _objectSpread(_objectSpread({}, _this3.state.mark), {}, {
349
+ points: points
350
+ });
351
+ if (middle) {
352
+ var _getRightestPoints2 = (0, _utils.getRightestPoints)(points),
353
+ a = _getRightestPoints2.a,
354
+ b = _getRightestPoints2.b;
355
+ mark.middle = _objectSpread(_objectSpread({}, middle), (0, _utils.getMiddleOfTwoPoints)(a, b));
356
+ }
357
+ _this3.setState({
358
+ mark: mark
359
+ });
360
+ });
361
+ (0, _defineProperty2["default"])(_this3, "changeProps", function (points) {
362
+ var mark = _objectSpread(_objectSpread({}, _this3.props.mark), {}, {
363
+ points: points
364
+ });
365
+ _this3.props.onChange(_this3.props.mark, mark);
366
+ });
367
+ (0, _defineProperty2["default"])(_this3, "changeLabelProps", function (point) {
368
+ var _this3$props = _this3.props,
369
+ mark = _this3$props.mark,
370
+ onChange = _this3$props.onChange;
371
+ var middle = _objectSpread(_objectSpread({}, mark.middle), point);
372
+ onChange(mark, _objectSpread(_objectSpread({}, mark), {}, {
373
+ middle: middle
374
+ }));
375
+ });
376
+ (0, _defineProperty2["default"])(_this3, "closePolygon", function () {
377
+ log('[closePolygon] ...');
378
+ var _this3$props2 = _this3.props,
379
+ onComplete = _this3$props2.onComplete,
380
+ mark = _this3$props2.mark;
381
+ var update = _objectSpread(_objectSpread({}, mark), {}, {
382
+ closed: true
383
+ });
384
+ onComplete(mark, update);
385
+ });
386
+ (0, _defineProperty2["default"])(_this3, "dragStart", function () {
387
+ return _this3.setState({
388
+ mark: _this3.props.mark
389
+ });
390
+ });
391
+ (0, _defineProperty2["default"])(_this3, "dragStop", function () {
392
+ var onChange = _this3.props.onChange;
393
+ var m = _objectSpread({}, _this3.state.mark);
394
+ _this3.setState({
395
+ mark: undefined
396
+ }, function () {
397
+ onChange(_this3.props.mark, m);
398
+ });
399
+ });
400
+ _this3.state = {};
401
+ return _this3;
402
+ }
403
+ (0, _inherits2["default"])(Component, _React$Component2);
404
+ return (0, _createClass2["default"])(Component, [{
405
+ key: "render",
406
+ value: function render() {
407
+ var _this$props6 = this.props,
408
+ coordinatesOnHover = _this$props6.coordinatesOnHover,
409
+ mark = _this$props6.mark,
410
+ graphProps = _this$props6.graphProps,
411
+ onClick = _this$props6.onClick,
412
+ isToolActive = _this$props6.isToolActive,
413
+ labelNode = _this$props6.labelNode,
414
+ labelModeEnabled = _this$props6.labelModeEnabled,
415
+ limitLabeling = _this$props6.limitLabeling;
416
+ var stateMark = this.state.mark;
417
+ return /*#__PURE__*/_react["default"].createElement(BaseComponent, (0, _extends2["default"])({}, stateMark || mark, {
418
+ coordinatesOnHover: coordinatesOnHover,
419
+ onChange: this.change,
420
+ onChangeLabelProps: this.changeLabelProps,
421
+ onChangeProps: this.changeProps,
422
+ onClosePolygon: this.closePolygon,
423
+ onDragStart: this.dragStart,
424
+ onDragStop: this.dragStop,
425
+ onClick: onClick,
426
+ graphProps: graphProps,
427
+ isToolActive: isToolActive,
428
+ labelNode: labelNode,
429
+ labelModeEnabled: labelModeEnabled,
430
+ limitLabeling: limitLabeling
431
+ }));
432
+ }
433
+ }]);
434
+ }(_react["default"].Component);
435
+ (0, _defineProperty2["default"])(Component, "propTypes", _objectSpread(_objectSpread({}, _types.ToolPropTypeFields), {}, {
436
+ graphProps: _plot.types.GraphPropsType.isRequired
437
+ }));
438
+ (0, _defineProperty2["default"])(Component, "defaultProps", {});
439
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","names":["_react","_interopRequireDefault","require","_propTypes","_types","_point","_chunk","_initial","_debug","_line","_polygon","_interopRequireWildcard","_plot","_invariant","_reactDom","_markLabel","_isEmpty","_utils","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","log","debug","buildLines","exports","points","closed","expanded","reduce","acc","p","index","isLast","next","all","chunk","map","_ref","_ref2","_slicedToArray2","from","to","initial","swap","arr","_len","rest","Array","_key","pairs","pr","_pr","replacement","invariant","Number","isFinite","splice","_toConsumableArray2","RawBaseComponent","_React$Component","_this","_classCallCheck2","_len2","args","_key2","concat","_this$props","props","onChange","update","overlapPoint","find","equalPoints","label","existing","point","_this$props2","onClosePolygon","_this$props3","onChangeProps","updatedPoint","isEmpty","data","_this$props4","disabled","onClick","isToolActive","labelModeEnabled","limitLabeling","onChangeLabelProps","_getRightestPoints","getRightestPoints","a","b","middle","getMiddleOfTwoPoints","input","focus","close","_inherits2","_createClass2","key","value","render","_this2","_this$props5","coordinatesOnHover","correctness","graphProps","onDragStart","onDragStop","labelNode","lines","common","polygonLabelIndex","polygonLabelNode","ReactDOM","createPortal","createElement","inputRef","mark","Fragment","_extends2","onDrag","dragPoly","bind","clickPoint","Polygon","l","dragLine","BasePoint","x","y","dragPoint","labelChange","React","Component","classes","PropTypes","object","className","string","bool","arrayOf","types","PointType","func","isRequired","GraphPropsType","BaseComponent","_React$Component2","_this3","state","_getRightestPoints2","setState","_this3$props","_this3$props2","onComplete","m","undefined","_this$props6","stateMark","change","changeLabelProps","changeProps","closePolygon","dragStart","dragStop","ToolPropTypeFields"],"sources":["../../../src/tools/polygon/component.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { ToolPropTypeFields } from '../shared/types';\nimport { BasePoint } from '../shared/point';\nimport chunk from 'lodash/chunk';\nimport initial from 'lodash/initial';\nimport debug from 'debug';\nimport Line from './line';\nimport DraggablePolygon, { Polygon } from './polygon';\nimport { types } from '@pie-lib/plot';\nimport invariant from 'invariant';\nimport ReactDOM from 'react-dom';\nimport MarkLabel from '../../mark-label';\nimport isEmpty from 'lodash/isEmpty';\nimport { getMiddleOfTwoPoints, getRightestPoints, equalPoints } from '../../utils';\n\nconst log = debug('pie-lib:graphing:polygon');\n\nexport const buildLines = (points, closed) => {\n const expanded = points.reduce((acc, p, index) => {\n acc.push({ ...p, index });\n\n const isLast = index === points.length - 1;\n const next = isLast ? 0 : index + 1;\n\n acc.push({ ...points[next], index: next });\n\n return acc;\n }, []);\n\n const all = chunk(expanded, 2).map(([from, to]) => {\n return { from, to };\n });\n\n return closed ? all : initial(all);\n};\n\nexport const swap = (arr, ...rest) => {\n const pairs = chunk(rest, 2);\n\n return pairs.reduce(\n (acc, pr) => {\n if (pr.length === 2) {\n let [e, replacement] = pr;\n\n invariant(Number.isFinite(e.index), 'Index must be defined');\n\n const index = e.index;\n // const i = acc.findIndex(pt => pt.x === e.x && pt.y === e.y);\n\n if (index >= 0) {\n acc.splice(index, 1, replacement);\n\n return acc;\n } else {\n return acc;\n }\n } else {\n return acc;\n }\n },\n [...arr],\n );\n};\n\nexport class RawBaseComponent extends React.Component {\n static propTypes = {\n classes: PropTypes.object,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n correctness: PropTypes.string,\n points: PropTypes.arrayOf(types.PointType),\n closed: PropTypes.bool,\n coordinatesOnHover: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onClosePolygon: PropTypes.func.isRequired,\n onDragStart: PropTypes.func,\n onDragStop: PropTypes.func,\n onClick: PropTypes.func,\n graphProps: types.GraphPropsType.isRequired,\n isToolActive: PropTypes.bool,\n middle: PropTypes.object,\n labelNode: PropTypes.object,\n labelModeEnabled: PropTypes.bool,\n limitLabeling: PropTypes.bool,\n onChangeLabelProps: PropTypes.func,\n onChangeProps: PropTypes.func,\n };\n\n static defaultProps = {\n points: [],\n };\n\n dragPoint = (index, from, to) => {\n log('[dragPoint] from, to:', from, to);\n const { onChange, points } = this.props;\n const update = [...points];\n const overlapPoint = !!(points || []).find((p) => equalPoints(p, to));\n\n if (equalPoints(from, to) || overlapPoint) {\n return;\n }\n\n if (points[index].label) {\n to.label = points[index].label;\n }\n\n update.splice(index, 1, to);\n onChange(update);\n };\n\n dragLine = (existing, next) => {\n log('[dragLine]: ', existing, next);\n const { onChange } = this.props;\n\n if (existing.from.label) {\n next.from.label = existing.from.label;\n }\n\n if (existing.to.label) {\n next.to.label = existing.to.label;\n }\n\n const points = swap(this.props.points, existing.from, next.from, existing.to, next.to);\n onChange(points);\n };\n\n dragPoly = (existing, next) => {\n log('[dragPoly] ', existing, next);\n const { onChange } = this.props;\n\n next.forEach((point, index) => {\n if (existing[index].label) {\n next[index].label = existing[index].label;\n }\n });\n\n onChange(next);\n };\n\n close = () => {\n const { points, onClosePolygon } = this.props;\n log('[close] ...');\n\n if (points.length >= 3) {\n onClosePolygon();\n } else {\n log('[close] - nope');\n }\n };\n\n labelChange = (point, index) => {\n const { points, onChangeProps } = this.props;\n const updatedPoint = { ...point };\n\n if (!point.label || isEmpty(point.label)) {\n delete updatedPoint.label;\n }\n\n const update = [...points];\n\n update.splice(index, 1, updatedPoint);\n onChangeProps(update);\n };\n\n clickPoint = (point, index, data) => {\n const {\n closed,\n disabled,\n onClick,\n isToolActive,\n labelModeEnabled,\n limitLabeling,\n onChangeProps,\n onChangeLabelProps,\n points,\n } = this.props;\n\n if (labelModeEnabled) {\n // limit labeling the points of the polygon\n if (disabled || limitLabeling) {\n return;\n }\n\n if (points && index === points.length) {\n const { a, b } = getRightestPoints(points);\n const middle = { label: '', ...point, ...getMiddleOfTwoPoints(a, b) };\n\n onChangeLabelProps(middle);\n } else {\n const update = [...points];\n\n update.splice(index, 1, { label: '', ...point });\n onChangeProps(update);\n }\n\n if (this.input[index]) {\n this.input[index].focus();\n }\n\n return;\n }\n\n if (isToolActive && !closed && index === 0) {\n this.close();\n return;\n }\n\n onClick(point || data);\n };\n\n // IMPORTANT, do not remove\n input = {};\n\n render() {\n const {\n closed,\n coordinatesOnHover,\n correctness,\n disabled,\n graphProps,\n onChangeLabelProps,\n onDragStart,\n onDragStop,\n points,\n middle,\n labelNode,\n labelModeEnabled,\n } = this.props;\n const lines = buildLines(points, closed);\n const common = { onDragStart, onDragStop, graphProps, disabled, correctness };\n const polygonLabelIndex = (points && points.length) || 0;\n let polygonLabelNode = null;\n\n if (labelNode && middle && Object.prototype.hasOwnProperty.call(middle, 'label')) {\n polygonLabelNode = ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input[polygonLabelIndex] = r)}\n disabled={!labelModeEnabled}\n mark={middle}\n graphProps={graphProps}\n onChange={(label) => onChangeLabelProps({ ...middle, label })}\n />,\n labelNode,\n );\n }\n\n return (\n <g>\n {closed ? (\n <React.Fragment>\n <DraggablePolygon\n points={points}\n onDrag={this.dragPoly.bind(this, points)}\n closed={closed}\n {...common}\n onClick={this.clickPoint.bind(this, middle, polygonLabelIndex)}\n />\n {polygonLabelNode}\n </React.Fragment>\n ) : (\n <Polygon points={points} graphProps={graphProps} closed={closed} />\n )}\n {(lines || []).map((l, index) => (\n <Line\n key={`line-${index}`}\n from={l.from}\n to={l.to}\n onDrag={this.dragLine.bind(this, l)}\n {...common}\n onClick={this.clickPoint.bind(this, middle, polygonLabelIndex)}\n />\n ))}\n\n {(points || []).map((p, index) => {\n return [\n <BasePoint\n key={`point-${index}`}\n coordinatesOnHover={coordinatesOnHover}\n labelNode={labelNode}\n x={p.x}\n y={p.y}\n onDrag={this.dragPoint.bind(this, index, p)}\n {...common}\n onClick={this.clickPoint.bind(this, p, index)}\n />,\n labelNode && Object.prototype.hasOwnProperty.call(p, 'label')\n ? ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input[index] = r)}\n disabled={!labelModeEnabled}\n mark={p}\n graphProps={graphProps}\n onChange={(label) => this.labelChange({ ...p, label }, index)}\n />,\n labelNode,\n )\n : null,\n ];\n })}\n </g>\n );\n }\n}\n\nexport const BaseComponent = RawBaseComponent;\n\nexport default class Component extends React.Component {\n static propTypes = {\n ...ToolPropTypeFields,\n graphProps: types.GraphPropsType.isRequired,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n change = (points) => {\n const {\n mark: { middle },\n } = this.props;\n const mark = { ...this.state.mark, points };\n\n if (middle) {\n const { a, b } = getRightestPoints(points);\n\n mark.middle = { ...middle, ...getMiddleOfTwoPoints(a, b) };\n }\n\n this.setState({ mark });\n };\n\n changeProps = (points) => {\n const mark = { ...this.props.mark, points };\n\n this.props.onChange(this.props.mark, mark);\n };\n\n changeLabelProps = (point) => {\n const { mark, onChange } = this.props;\n const middle = { ...mark.middle, ...point };\n\n onChange(mark, { ...mark, middle });\n };\n\n closePolygon = () => {\n log('[closePolygon] ...');\n const { onComplete, mark } = this.props;\n const update = { ...mark, closed: true };\n\n onComplete(mark, update);\n };\n\n dragStart = () => this.setState({ mark: this.props.mark });\n\n dragStop = () => {\n const { onChange } = this.props;\n const m = { ...this.state.mark };\n\n this.setState({ mark: undefined }, () => {\n onChange(this.props.mark, m);\n });\n };\n\n render() {\n const {\n coordinatesOnHover,\n mark,\n graphProps,\n onClick,\n isToolActive,\n labelNode,\n labelModeEnabled,\n limitLabeling,\n } = this.props;\n const { mark: stateMark } = this.state;\n\n return (\n <BaseComponent\n {...(stateMark || mark)}\n coordinatesOnHover={coordinatesOnHover}\n onChange={this.change}\n onChangeLabelProps={this.changeLabelProps}\n onChangeProps={this.changeProps}\n onClosePolygon={this.closePolygon}\n onDragStart={this.dragStart}\n onDragStop={this.dragStop}\n onClick={onClick}\n graphProps={graphProps}\n isToolActive={isToolActive}\n labelNode={labelNode}\n labelModeEnabled={labelModeEnabled}\n limitLabeling={limitLabeling}\n />\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,101 @@
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/web.dom-collections.for-each.js");
12
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
13
+ Object.defineProperty(exports, "__esModule", {
14
+ value: true
15
+ });
16
+ exports.tool = exports.addPointToArray = void 0;
17
+ require("core-js/modules/es.array.concat.js");
18
+ require("core-js/modules/es.array.find.js");
19
+ require("core-js/modules/es.object.to-string.js");
20
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
22
+ var _component = _interopRequireDefault(require("./component"));
23
+ var _utils = require("../../utils");
24
+ 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; }
25
+ 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; }
26
+ var addPointToArray = exports.addPointToArray = function addPointToArray(point, arr) {
27
+ arr = arr || [];
28
+ if (arr.length === 0) {
29
+ return {
30
+ points: [point],
31
+ closed: false
32
+ };
33
+ } else if (arr.length === 1) {
34
+ if ((0, _utils.equalPoints)(point, arr[0])) {
35
+ return {
36
+ points: arr,
37
+ closed: false
38
+ };
39
+ } else {
40
+ return {
41
+ points: [].concat((0, _toConsumableArray2["default"])(arr), [point]),
42
+ closed: false
43
+ };
44
+ }
45
+ } else if (arr.length >= 2) {
46
+ var closed = (0, _utils.equalPoints)(point, arr[0]);
47
+ if (closed) {
48
+ return {
49
+ points: arr,
50
+ closed: closed
51
+ };
52
+ } else {
53
+ var hasPoint = !!arr.find(function (p) {
54
+ return (0, _utils.equalPoints)(p, point);
55
+ });
56
+ if (hasPoint) {
57
+ return {
58
+ points: arr,
59
+ closed: false
60
+ };
61
+ } else {
62
+ return {
63
+ points: [].concat((0, _toConsumableArray2["default"])(arr), [point]),
64
+ closed: false
65
+ };
66
+ }
67
+ }
68
+ }
69
+ };
70
+ var tool = exports.tool = function tool() {
71
+ return {
72
+ type: 'polygon',
73
+ Component: _component["default"],
74
+ complete: function complete(data, mark) {
75
+ return _objectSpread(_objectSpread({}, mark), {}, {
76
+ building: false,
77
+ closed: true
78
+ });
79
+ },
80
+ addPoint: function addPoint(point, mark) {
81
+ if (!mark) {
82
+ return {
83
+ type: 'polygon',
84
+ points: [point],
85
+ closed: false,
86
+ building: true
87
+ };
88
+ } else {
89
+ var _addPointToArray = addPointToArray(point, mark.points),
90
+ closed = _addPointToArray.closed,
91
+ points = _addPointToArray.points;
92
+ return _objectSpread(_objectSpread({}, mark), {}, {
93
+ closed: closed,
94
+ points: points,
95
+ building: !closed
96
+ });
97
+ }
98
+ }
99
+ };
100
+ };
101
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_component","_interopRequireDefault","require","_utils","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","addPointToArray","exports","point","arr","points","closed","equalPoints","concat","_toConsumableArray2","hasPoint","find","p","tool","type","Component","Polygon","complete","data","mark","building","addPoint","_addPointToArray"],"sources":["../../../src/tools/polygon/index.js"],"sourcesContent":["import Polygon from './component';\nimport { equalPoints } from '../../utils';\n\nexport const addPointToArray = (point, arr) => {\n arr = arr || [];\n\n if (arr.length === 0) {\n return { points: [point], closed: false };\n } else if (arr.length === 1) {\n if (equalPoints(point, arr[0])) {\n return { points: arr, closed: false };\n } else {\n return { points: [...arr, point], closed: false };\n }\n } else if (arr.length >= 2) {\n const closed = equalPoints(point, arr[0]);\n\n if (closed) {\n return { points: arr, closed };\n } else {\n const hasPoint = !!arr.find((p) => equalPoints(p, point));\n\n if (hasPoint) {\n return { points: arr, closed: false };\n } else {\n return { points: [...arr, point], closed: false };\n }\n }\n }\n};\n\nexport const tool = () => ({\n type: 'polygon',\n Component: Polygon,\n complete: (data, mark) => {\n return { ...mark, building: false, closed: true };\n },\n addPoint: (point, mark) => {\n if (!mark) {\n return {\n type: 'polygon',\n points: [point],\n closed: false,\n building: true,\n };\n } else {\n const { closed, points } = addPointToArray(point, mark.points);\n\n return { ...mark, closed, points, building: !closed };\n }\n },\n});\n"],"mappings":"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","ignoreList":[]}