@pie-lib/graphing 2.14.22-next.0 → 2.15.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -75
- package/NEXT.CHANGELOG.json +1 -0
- package/package.json +14 -7
- package/src/__tests__/__snapshots__/graph-with-controls.test.jsx.snap +237 -0
- package/src/__tests__/__snapshots__/graph.test.jsx.snap +211 -0
- package/src/__tests__/__snapshots__/grid.test.jsx.snap +54 -0
- package/src/__tests__/__snapshots__/labels.test.jsx.snap +30 -0
- package/src/__tests__/__snapshots__/mark-label.test.jsx.snap +45 -0
- package/src/__tests__/__snapshots__/toggle-bar.test.jsx.snap +7 -0
- package/src/__tests__/__snapshots__/tool-menu.test.jsx.snap +13 -0
- package/src/__tests__/__snapshots__/undo-redo.test.jsx.snap +14 -0
- package/src/__tests__/graph-with-controls.test.jsx +147 -0
- package/src/__tests__/graph.test.jsx +230 -0
- package/src/__tests__/grid.test.jsx +20 -0
- package/src/__tests__/labels.test.jsx +38 -0
- package/src/__tests__/mark-label.test.jsx +68 -0
- package/src/__tests__/toggle-bar.test.jsx +36 -0
- package/src/__tests__/tool-menu.test.jsx +29 -0
- package/src/__tests__/undo-redo.test.jsx +25 -0
- package/src/__tests__/use-debounce.test.js +21 -0
- package/src/__tests__/utils.js +38 -0
- package/src/__tests__/utils.test.js +151 -0
- package/src/axis/__tests__/__snapshots__/arrow.test.jsx.snap +33 -0
- package/src/axis/__tests__/__snapshots__/axes.test.jsx.snap +122 -0
- package/src/axis/__tests__/arrow.test.jsx +39 -0
- package/src/axis/__tests__/axes.test.jsx +220 -0
- package/src/axis/axes.jsx +5 -5
- package/src/container/index.jsx +2 -4
- package/src/coordinates-label.jsx +4 -3
- package/src/graph-with-controls.jsx +8 -10
- package/src/graph.jsx +22 -10
- package/src/grid.jsx +8 -10
- package/src/index.js +2 -2
- package/src/key-legend.jsx +145 -0
- package/src/label-svg-icon.jsx +39 -0
- package/src/labels.jsx +2 -1
- package/src/mark-label.jsx +149 -52
- package/src/toggle-bar.jsx +1 -2
- package/src/tool-menu.jsx +3 -26
- package/src/tools/absolute/__tests__/component.test.jsx +54 -0
- package/src/tools/absolute/component.jsx +23 -0
- package/src/tools/absolute/index.js +31 -0
- package/src/tools/circle/__tests__/__snapshots__/bg-circle.test.jsx.snap +46 -0
- package/src/tools/circle/__tests__/__snapshots__/component.test.jsx.snap +293 -0
- package/src/tools/circle/__tests__/bg-circle.test.jsx +28 -0
- package/src/tools/circle/__tests__/component.test.jsx +228 -0
- package/src/tools/circle/bg-circle.jsx +5 -4
- package/src/tools/circle/component.jsx +22 -8
- package/src/tools/exponential/__tests__/component.test.jsx +54 -0
- package/src/tools/exponential/component.jsx +23 -0
- package/src/tools/exponential/index.js +39 -0
- package/src/tools/index.js +38 -5
- package/src/tools/line/__tests__/__snapshots__/component.test.jsx.snap +20 -0
- package/src/tools/line/__tests__/component.test.jsx +36 -0
- package/src/tools/line/component.jsx +2 -1
- package/src/tools/parabola/__tests__/component.test.jsx +49 -0
- package/src/tools/parabola/component.jsx +7 -6
- package/src/tools/point/__tests__/__snapshots__/component.test.jsx.snap +40 -0
- package/src/tools/point/__tests__/component.test.jsx +66 -0
- package/src/tools/point/component.jsx +12 -6
- package/src/tools/polygon/__tests__/__snapshots__/component.test.jsx.snap +415 -0
- package/src/tools/polygon/__tests__/__snapshots__/line.test.jsx.snap +45 -0
- package/src/tools/polygon/__tests__/__snapshots__/polygon.test.jsx.snap +52 -0
- package/src/tools/polygon/__tests__/component.test.jsx +226 -0
- package/src/tools/polygon/__tests__/index.test.js +65 -0
- package/src/tools/polygon/__tests__/line.test.jsx +25 -0
- package/src/tools/polygon/__tests__/polygon.test.jsx +44 -0
- package/src/tools/polygon/component.jsx +39 -11
- package/src/tools/polygon/line.jsx +15 -7
- package/src/tools/polygon/polygon.jsx +7 -3
- package/src/tools/ray/__tests__/__snapshots__/component.test.jsx.snap +23 -0
- package/src/tools/ray/__tests__/component.test.jsx +29 -0
- package/src/tools/ray/component.jsx +2 -1
- package/src/tools/segment/__tests__/__snapshots__/component.test.jsx.snap +14 -0
- package/src/tools/segment/__tests__/component.test.jsx +28 -0
- package/src/tools/segment/component.jsx +2 -1
- package/src/tools/shared/__tests__/__snapshots__/arrow-head.test.jsx.snap +27 -0
- package/src/tools/shared/__tests__/arrow-head.test.jsx +34 -0
- package/src/tools/shared/icons/CorrectSVG.jsx +22 -0
- package/src/tools/shared/icons/IncorrectSVG.jsx +20 -0
- package/src/tools/shared/icons/MissingSVG.jsx +21 -0
- package/src/tools/shared/line/__tests__/__snapshots__/index.test.jsx.snap +360 -0
- package/src/tools/shared/line/__tests__/__snapshots__/line-path.test.jsx.snap +58 -0
- package/src/tools/shared/line/__tests__/__snapshots__/with-root-edge.test.jsx.snap +63 -0
- package/src/tools/shared/line/__tests__/index.test.jsx +255 -0
- package/src/tools/shared/line/__tests__/line-path.test.jsx +53 -0
- package/src/tools/shared/line/__tests__/with-root-edge.test.jsx +73 -0
- package/src/tools/shared/line/index.jsx +39 -13
- package/src/tools/shared/line/line-path.jsx +18 -7
- package/src/tools/shared/line/with-root-edge.jsx +10 -3
- package/src/tools/shared/point/__tests__/__snapshots__/arrow-point.test.jsx.snap +56 -0
- package/src/tools/shared/point/__tests__/__snapshots__/base-point.test.jsx.snap +44 -0
- package/src/tools/shared/point/__tests__/arrow-point.test.jsx +87 -0
- package/src/tools/shared/point/__tests__/base-point.test.jsx +84 -0
- package/src/tools/shared/point/arrow-point.jsx +4 -1
- package/src/tools/shared/point/arrow.jsx +4 -1
- package/src/tools/shared/point/base-point.jsx +28 -3
- package/src/tools/shared/point/index.jsx +7 -2
- package/src/tools/shared/styles.js +8 -3
- package/src/tools/sine/__tests__/component.test.jsx +51 -0
- package/src/tools/sine/component.jsx +7 -7
- package/src/tools/vector/__tests__/__snapshots__/component.test.jsx.snap +12 -0
- package/src/tools/vector/__tests__/component.test.jsx +26 -0
- package/src/tools/vector/component.jsx +2 -1
- package/src/undo-redo.jsx +0 -1
- package/src/utils.js +1 -1
- package/legacy.png +0 -0
- package/lib/axis/arrow.js +0 -115
- package/lib/axis/arrow.js.map +0 -1
- package/lib/axis/axes.js +0 -415
- package/lib/axis/axes.js.map +0 -1
- package/lib/axis/index.js +0 -26
- package/lib/axis/index.js.map +0 -1
- package/lib/bg.js +0 -139
- package/lib/bg.js.map +0 -1
- package/lib/container/actions.js +0 -24
- package/lib/container/actions.js.map +0 -1
- package/lib/container/index.js +0 -166
- package/lib/container/index.js.map +0 -1
- package/lib/container/marks.js +0 -27
- package/lib/container/marks.js.map +0 -1
- package/lib/container/middleware.js +0 -25
- package/lib/container/middleware.js.map +0 -1
- package/lib/container/reducer.js +0 -25
- package/lib/container/reducer.js.map +0 -1
- package/lib/coordinates-label.js +0 -107
- package/lib/coordinates-label.js.map +0 -1
- package/lib/graph-with-controls.js +0 -366
- package/lib/graph-with-controls.js.map +0 -1
- package/lib/graph.js +0 -354
- package/lib/graph.js.map +0 -1
- package/lib/grid-setup.js +0 -462
- package/lib/grid-setup.js.map +0 -1
- package/lib/grid.js +0 -184
- package/lib/grid.js.map +0 -1
- package/lib/index.js +0 -51
- package/lib/index.js.map +0 -1
- package/lib/labels.js +0 -298
- package/lib/labels.js.map +0 -1
- package/lib/mark-label.js +0 -210
- package/lib/mark-label.js.map +0 -1
- package/lib/toggle-bar.js +0 -337
- package/lib/toggle-bar.js.map +0 -1
- package/lib/tool-menu.js +0 -132
- package/lib/tool-menu.js.map +0 -1
- package/lib/tools/circle/bg-circle.js +0 -172
- package/lib/tools/circle/bg-circle.js.map +0 -1
- package/lib/tools/circle/component.js +0 -387
- package/lib/tools/circle/component.js.map +0 -1
- package/lib/tools/circle/index.js +0 -51
- package/lib/tools/circle/index.js.map +0 -1
- package/lib/tools/index.js +0 -79
- package/lib/tools/index.js.map +0 -1
- package/lib/tools/line/component.js +0 -102
- package/lib/tools/line/component.js.map +0 -1
- package/lib/tools/line/index.js +0 -16
- package/lib/tools/line/index.js.map +0 -1
- package/lib/tools/parabola/component.js +0 -33
- package/lib/tools/parabola/component.js.map +0 -1
- package/lib/tools/parabola/index.js +0 -63
- package/lib/tools/parabola/index.js.map +0 -1
- package/lib/tools/point/component.js +0 -181
- package/lib/tools/point/component.js.map +0 -1
- package/lib/tools/point/index.js +0 -32
- package/lib/tools/point/index.js.map +0 -1
- package/lib/tools/polygon/component.js +0 -505
- package/lib/tools/polygon/component.js.map +0 -1
- package/lib/tools/polygon/index.js +0 -106
- package/lib/tools/polygon/index.js.map +0 -1
- package/lib/tools/polygon/line.js +0 -151
- package/lib/tools/polygon/line.js.map +0 -1
- package/lib/tools/polygon/polygon.js +0 -162
- package/lib/tools/polygon/polygon.js.map +0 -1
- package/lib/tools/ray/component.js +0 -101
- package/lib/tools/ray/component.js.map +0 -1
- package/lib/tools/ray/index.js +0 -16
- package/lib/tools/ray/index.js.map +0 -1
- package/lib/tools/segment/component.js +0 -74
- package/lib/tools/segment/component.js.map +0 -1
- package/lib/tools/segment/index.js +0 -16
- package/lib/tools/segment/index.js.map +0 -1
- package/lib/tools/shared/arrow-head.js +0 -70
- package/lib/tools/shared/arrow-head.js.map +0 -1
- package/lib/tools/shared/line/index.js +0 -567
- package/lib/tools/shared/line/index.js.map +0 -1
- package/lib/tools/shared/line/line-path.js +0 -145
- package/lib/tools/shared/line/line-path.js.map +0 -1
- package/lib/tools/shared/line/with-root-edge.js +0 -144
- package/lib/tools/shared/line/with-root-edge.js.map +0 -1
- package/lib/tools/shared/point/arrow-point.js +0 -113
- package/lib/tools/shared/point/arrow-point.js.map +0 -1
- package/lib/tools/shared/point/arrow.js +0 -96
- package/lib/tools/shared/point/arrow.js.map +0 -1
- package/lib/tools/shared/point/base-point.js +0 -139
- package/lib/tools/shared/point/base-point.js.map +0 -1
- package/lib/tools/shared/point/index.js +0 -94
- package/lib/tools/shared/point/index.js.map +0 -1
- package/lib/tools/shared/styles.js +0 -49
- package/lib/tools/shared/styles.js.map +0 -1
- package/lib/tools/shared/types.js +0 -23
- package/lib/tools/shared/types.js.map +0 -1
- package/lib/tools/sine/component.js +0 -42
- package/lib/tools/sine/component.js.map +0 -1
- package/lib/tools/sine/index.js +0 -63
- package/lib/tools/sine/index.js.map +0 -1
- package/lib/tools/vector/component.js +0 -87
- package/lib/tools/vector/component.js.map +0 -1
- package/lib/tools/vector/index.js +0 -16
- package/lib/tools/vector/index.js.map +0 -1
- package/lib/undo-redo.js +0 -124
- package/lib/undo-redo.js.map +0 -1
- package/lib/use-debounce.js +0 -32
- package/lib/use-debounce.js.map +0 -1
- package/lib/utils.js +0 -307
- package/lib/utils.js.map +0 -1
|
@@ -1,505 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
|
-
Object.defineProperty(exports, "__esModule", {
|
|
8
|
-
value: true
|
|
9
|
-
});
|
|
10
|
-
exports.swap = exports["default"] = exports.buildLines = exports.RawBaseComponent = exports.BaseComponent = void 0;
|
|
11
|
-
|
|
12
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
-
|
|
14
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
-
|
|
16
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
-
|
|
18
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
19
|
-
|
|
20
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
21
|
-
|
|
22
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
23
|
-
|
|
24
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
25
|
-
|
|
26
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
27
|
-
|
|
28
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
29
|
-
|
|
30
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
31
|
-
|
|
32
|
-
var _react = _interopRequireDefault(require("react"));
|
|
33
|
-
|
|
34
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
35
|
-
|
|
36
|
-
var _styles = require("@material-ui/core/styles");
|
|
37
|
-
|
|
38
|
-
var _types = require("../shared/types");
|
|
39
|
-
|
|
40
|
-
var _point = require("../shared/point");
|
|
41
|
-
|
|
42
|
-
var _chunk = _interopRequireDefault(require("lodash/chunk"));
|
|
43
|
-
|
|
44
|
-
var _initial = _interopRequireDefault(require("lodash/initial"));
|
|
45
|
-
|
|
46
|
-
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
47
|
-
|
|
48
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
49
|
-
|
|
50
|
-
var _line = _interopRequireDefault(require("./line"));
|
|
51
|
-
|
|
52
|
-
var _polygon = _interopRequireWildcard(require("./polygon"));
|
|
53
|
-
|
|
54
|
-
var _plot = require("@pie-lib/plot");
|
|
55
|
-
|
|
56
|
-
var _invariant = _interopRequireDefault(require("invariant"));
|
|
57
|
-
|
|
58
|
-
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
59
|
-
|
|
60
|
-
var _markLabel = _interopRequireDefault(require("../../mark-label"));
|
|
61
|
-
|
|
62
|
-
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
63
|
-
|
|
64
|
-
var _utils = require("../../utils");
|
|
65
|
-
|
|
66
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
67
|
-
|
|
68
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
69
|
-
|
|
70
|
-
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); }; }
|
|
71
|
-
|
|
72
|
-
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; } }
|
|
73
|
-
|
|
74
|
-
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; }
|
|
75
|
-
|
|
76
|
-
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; }
|
|
77
|
-
|
|
78
|
-
var log = (0, _debug["default"])('pie-lib:graphing:polygon');
|
|
79
|
-
|
|
80
|
-
var buildLines = function buildLines(points, closed) {
|
|
81
|
-
var expanded = points.reduce(function (acc, p, index) {
|
|
82
|
-
acc.push(_objectSpread(_objectSpread({}, p), {}, {
|
|
83
|
-
index: index
|
|
84
|
-
}));
|
|
85
|
-
var isLast = index === points.length - 1;
|
|
86
|
-
var next = isLast ? 0 : index + 1;
|
|
87
|
-
acc.push(_objectSpread(_objectSpread({}, points[next]), {}, {
|
|
88
|
-
index: next
|
|
89
|
-
}));
|
|
90
|
-
return acc;
|
|
91
|
-
}, []);
|
|
92
|
-
var all = (0, _chunk["default"])(expanded, 2).map(function (_ref) {
|
|
93
|
-
var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
|
|
94
|
-
from = _ref2[0],
|
|
95
|
-
to = _ref2[1];
|
|
96
|
-
|
|
97
|
-
return {
|
|
98
|
-
from: from,
|
|
99
|
-
to: to
|
|
100
|
-
};
|
|
101
|
-
});
|
|
102
|
-
return closed ? all : (0, _initial["default"])(all);
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
exports.buildLines = buildLines;
|
|
106
|
-
|
|
107
|
-
var swap = function swap(arr) {
|
|
108
|
-
for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
109
|
-
rest[_key - 1] = arguments[_key];
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
var pairs = (0, _chunk["default"])(rest, 2);
|
|
113
|
-
return pairs.reduce(function (acc, pr) {
|
|
114
|
-
if (pr.length === 2) {
|
|
115
|
-
var _pr = (0, _slicedToArray2["default"])(pr, 2),
|
|
116
|
-
e = _pr[0],
|
|
117
|
-
replacement = _pr[1];
|
|
118
|
-
|
|
119
|
-
(0, _invariant["default"])(Number.isFinite(e.index), 'Index must be defined');
|
|
120
|
-
var index = e.index; // const i = acc.findIndex(pt => pt.x === e.x && pt.y === e.y);
|
|
121
|
-
|
|
122
|
-
if (index >= 0) {
|
|
123
|
-
acc.splice(index, 1, replacement);
|
|
124
|
-
return acc;
|
|
125
|
-
} else {
|
|
126
|
-
return acc;
|
|
127
|
-
}
|
|
128
|
-
} else {
|
|
129
|
-
return acc;
|
|
130
|
-
}
|
|
131
|
-
}, (0, _toConsumableArray2["default"])(arr));
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
exports.swap = swap;
|
|
135
|
-
|
|
136
|
-
var RawBaseComponent = /*#__PURE__*/function (_React$Component) {
|
|
137
|
-
(0, _inherits2["default"])(RawBaseComponent, _React$Component);
|
|
138
|
-
|
|
139
|
-
var _super = _createSuper(RawBaseComponent);
|
|
140
|
-
|
|
141
|
-
function RawBaseComponent() {
|
|
142
|
-
var _this;
|
|
143
|
-
|
|
144
|
-
(0, _classCallCheck2["default"])(this, RawBaseComponent);
|
|
145
|
-
|
|
146
|
-
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
147
|
-
args[_key2] = arguments[_key2];
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
_this = _super.call.apply(_super, [this].concat(args));
|
|
151
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dragPoint", function (index, from, to) {
|
|
152
|
-
log('[dragPoint] from, to:', from, to);
|
|
153
|
-
var _this$props = _this.props,
|
|
154
|
-
onChange = _this$props.onChange,
|
|
155
|
-
points = _this$props.points;
|
|
156
|
-
var update = (0, _toConsumableArray2["default"])(points);
|
|
157
|
-
var overlapPoint = !!(points || []).find(function (p) {
|
|
158
|
-
return (0, _utils.equalPoints)(p, to);
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
if ((0, _utils.equalPoints)(from, to) || overlapPoint) {
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
if (points[index].label) {
|
|
166
|
-
to.label = points[index].label;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
update.splice(index, 1, to);
|
|
170
|
-
onChange(update);
|
|
171
|
-
});
|
|
172
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dragLine", function (existing, next) {
|
|
173
|
-
log('[dragLine]: ', existing, next);
|
|
174
|
-
var onChange = _this.props.onChange;
|
|
175
|
-
|
|
176
|
-
if (existing.from.label) {
|
|
177
|
-
next.from.label = existing.from.label;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
if (existing.to.label) {
|
|
181
|
-
next.to.label = existing.to.label;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
var points = swap(_this.props.points, existing.from, next.from, existing.to, next.to);
|
|
185
|
-
onChange(points);
|
|
186
|
-
});
|
|
187
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "dragPoly", function (existing, next) {
|
|
188
|
-
log('[dragPoly] ', existing, next);
|
|
189
|
-
var onChange = _this.props.onChange;
|
|
190
|
-
next.forEach(function (point, index) {
|
|
191
|
-
if (existing[index].label) {
|
|
192
|
-
next[index].label = existing[index].label;
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
|
-
onChange(next);
|
|
196
|
-
});
|
|
197
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "close", function () {
|
|
198
|
-
var _this$props2 = _this.props,
|
|
199
|
-
points = _this$props2.points,
|
|
200
|
-
onClosePolygon = _this$props2.onClosePolygon;
|
|
201
|
-
log('[close] ...');
|
|
202
|
-
|
|
203
|
-
if (points.length >= 3) {
|
|
204
|
-
onClosePolygon();
|
|
205
|
-
} else {
|
|
206
|
-
log('[close] - nope');
|
|
207
|
-
}
|
|
208
|
-
});
|
|
209
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "labelChange", function (point, index) {
|
|
210
|
-
var _this$props3 = _this.props,
|
|
211
|
-
points = _this$props3.points,
|
|
212
|
-
onChangeProps = _this$props3.onChangeProps;
|
|
213
|
-
|
|
214
|
-
var updatedPoint = _objectSpread({}, point);
|
|
215
|
-
|
|
216
|
-
if (!point.label || (0, _isEmpty["default"])(point.label)) {
|
|
217
|
-
delete updatedPoint.label;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
var update = (0, _toConsumableArray2["default"])(points);
|
|
221
|
-
update.splice(index, 1, updatedPoint);
|
|
222
|
-
onChangeProps(update);
|
|
223
|
-
});
|
|
224
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "clickPoint", function (point, index, data) {
|
|
225
|
-
var _this$props4 = _this.props,
|
|
226
|
-
closed = _this$props4.closed,
|
|
227
|
-
onClick = _this$props4.onClick,
|
|
228
|
-
isToolActive = _this$props4.isToolActive,
|
|
229
|
-
labelModeEnabled = _this$props4.labelModeEnabled,
|
|
230
|
-
onChangeProps = _this$props4.onChangeProps,
|
|
231
|
-
onChangeLabelProps = _this$props4.onChangeLabelProps,
|
|
232
|
-
points = _this$props4.points;
|
|
233
|
-
|
|
234
|
-
if (labelModeEnabled) {
|
|
235
|
-
if (points && index === points.length) {
|
|
236
|
-
var _getRightestPoints = (0, _utils.getRightestPoints)(points),
|
|
237
|
-
a = _getRightestPoints.a,
|
|
238
|
-
b = _getRightestPoints.b;
|
|
239
|
-
|
|
240
|
-
var middle = _objectSpread(_objectSpread({
|
|
241
|
-
label: ''
|
|
242
|
-
}, point), (0, _utils.getMiddleOfTwoPoints)(a, b));
|
|
243
|
-
|
|
244
|
-
onChangeLabelProps(middle);
|
|
245
|
-
} else {
|
|
246
|
-
var update = (0, _toConsumableArray2["default"])(points);
|
|
247
|
-
update.splice(index, 1, _objectSpread({
|
|
248
|
-
label: ''
|
|
249
|
-
}, point));
|
|
250
|
-
onChangeProps(update);
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
if (_this.input[index]) {
|
|
254
|
-
_this.input[index].focus();
|
|
255
|
-
}
|
|
256
|
-
} else {
|
|
257
|
-
if (isToolActive && !closed && index === 0) {
|
|
258
|
-
_this.close();
|
|
259
|
-
} else {
|
|
260
|
-
onClick(data);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "input", {});
|
|
265
|
-
return _this;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
(0, _createClass2["default"])(RawBaseComponent, [{
|
|
269
|
-
key: "render",
|
|
270
|
-
value: function render() {
|
|
271
|
-
var _this2 = this;
|
|
272
|
-
|
|
273
|
-
var _this$props5 = this.props,
|
|
274
|
-
closed = _this$props5.closed,
|
|
275
|
-
coordinatesOnHover = _this$props5.coordinatesOnHover,
|
|
276
|
-
correctness = _this$props5.correctness,
|
|
277
|
-
disabled = _this$props5.disabled,
|
|
278
|
-
graphProps = _this$props5.graphProps,
|
|
279
|
-
onChangeLabelProps = _this$props5.onChangeLabelProps,
|
|
280
|
-
onDragStart = _this$props5.onDragStart,
|
|
281
|
-
onDragStop = _this$props5.onDragStop,
|
|
282
|
-
points = _this$props5.points,
|
|
283
|
-
middle = _this$props5.middle,
|
|
284
|
-
labelNode = _this$props5.labelNode,
|
|
285
|
-
labelModeEnabled = _this$props5.labelModeEnabled;
|
|
286
|
-
var lines = buildLines(points, closed);
|
|
287
|
-
var common = {
|
|
288
|
-
onDragStart: onDragStart,
|
|
289
|
-
onDragStop: onDragStop,
|
|
290
|
-
graphProps: graphProps,
|
|
291
|
-
disabled: disabled,
|
|
292
|
-
correctness: correctness
|
|
293
|
-
};
|
|
294
|
-
var polygonLabelIndex = points && points.length || 0;
|
|
295
|
-
var polygonLabelNode = null;
|
|
296
|
-
|
|
297
|
-
if (labelNode && middle && middle.hasOwnProperty('label')) {
|
|
298
|
-
polygonLabelNode = /*#__PURE__*/_reactDom["default"].createPortal( /*#__PURE__*/_react["default"].createElement(_markLabel["default"], {
|
|
299
|
-
inputRef: function inputRef(r) {
|
|
300
|
-
return _this2.input[polygonLabelIndex] = r;
|
|
301
|
-
},
|
|
302
|
-
disabled: !labelModeEnabled,
|
|
303
|
-
mark: middle,
|
|
304
|
-
graphProps: graphProps,
|
|
305
|
-
onChange: function onChange(label) {
|
|
306
|
-
return onChangeLabelProps(_objectSpread(_objectSpread({}, middle), {}, {
|
|
307
|
-
label: label
|
|
308
|
-
}));
|
|
309
|
-
}
|
|
310
|
-
}), labelNode);
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
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"])({
|
|
314
|
-
points: points,
|
|
315
|
-
onDrag: this.dragPoly.bind(this, points),
|
|
316
|
-
closed: closed
|
|
317
|
-
}, common, {
|
|
318
|
-
onClick: this.clickPoint.bind(this, middle, polygonLabelIndex)
|
|
319
|
-
})), polygonLabelNode) : /*#__PURE__*/_react["default"].createElement(_polygon.Polygon, {
|
|
320
|
-
points: points,
|
|
321
|
-
graphProps: graphProps,
|
|
322
|
-
closed: closed
|
|
323
|
-
}), (lines || []).map(function (l, index) {
|
|
324
|
-
return /*#__PURE__*/_react["default"].createElement(_line["default"], (0, _extends2["default"])({
|
|
325
|
-
key: "line-".concat(index),
|
|
326
|
-
from: l.from,
|
|
327
|
-
to: l.to,
|
|
328
|
-
onDrag: _this2.dragLine.bind(_this2, l)
|
|
329
|
-
}, common, {
|
|
330
|
-
onClick: _this2.clickPoint.bind(_this2, middle, polygonLabelIndex)
|
|
331
|
-
}));
|
|
332
|
-
}), (points || []).map(function (p, index) {
|
|
333
|
-
return [/*#__PURE__*/_react["default"].createElement(_point.BasePoint, (0, _extends2["default"])({
|
|
334
|
-
key: "point-".concat(index),
|
|
335
|
-
coordinatesOnHover: coordinatesOnHover,
|
|
336
|
-
labelNode: labelNode,
|
|
337
|
-
x: p.x,
|
|
338
|
-
y: p.y,
|
|
339
|
-
onDrag: _this2.dragPoint.bind(_this2, index, p),
|
|
340
|
-
onClick: _this2.clickPoint.bind(_this2, p, index)
|
|
341
|
-
}, common)), labelNode && p.hasOwnProperty('label') ? /*#__PURE__*/_reactDom["default"].createPortal( /*#__PURE__*/_react["default"].createElement(_markLabel["default"], {
|
|
342
|
-
inputRef: function inputRef(r) {
|
|
343
|
-
return _this2.input[index] = r;
|
|
344
|
-
},
|
|
345
|
-
disabled: !labelModeEnabled,
|
|
346
|
-
mark: p,
|
|
347
|
-
graphProps: graphProps,
|
|
348
|
-
onChange: function onChange(label) {
|
|
349
|
-
return _this2.labelChange(_objectSpread(_objectSpread({}, p), {}, {
|
|
350
|
-
label: label
|
|
351
|
-
}), index);
|
|
352
|
-
}
|
|
353
|
-
}), labelNode) : null];
|
|
354
|
-
}));
|
|
355
|
-
}
|
|
356
|
-
}]);
|
|
357
|
-
return RawBaseComponent;
|
|
358
|
-
}(_react["default"].Component);
|
|
359
|
-
|
|
360
|
-
exports.RawBaseComponent = RawBaseComponent;
|
|
361
|
-
(0, _defineProperty2["default"])(RawBaseComponent, "propTypes", {
|
|
362
|
-
classes: _propTypes["default"].object,
|
|
363
|
-
className: _propTypes["default"].string,
|
|
364
|
-
disabled: _propTypes["default"].bool,
|
|
365
|
-
correctness: _propTypes["default"].string,
|
|
366
|
-
points: _propTypes["default"].arrayOf(_plot.types.PointType),
|
|
367
|
-
closed: _propTypes["default"].bool,
|
|
368
|
-
coordinatesOnHover: _propTypes["default"].bool,
|
|
369
|
-
onChange: _propTypes["default"].func.isRequired,
|
|
370
|
-
onClosePolygon: _propTypes["default"].func.isRequired,
|
|
371
|
-
onDragStart: _propTypes["default"].func,
|
|
372
|
-
onDragStop: _propTypes["default"].func,
|
|
373
|
-
onClick: _propTypes["default"].func,
|
|
374
|
-
graphProps: _plot.types.GraphPropsType.isRequired,
|
|
375
|
-
isToolActive: _propTypes["default"].bool,
|
|
376
|
-
middle: _propTypes["default"].object,
|
|
377
|
-
labelNode: _propTypes["default"].object,
|
|
378
|
-
labelModeEnabled: _propTypes["default"].bool,
|
|
379
|
-
onChangeLabelProps: _propTypes["default"].func,
|
|
380
|
-
onChangeProps: _propTypes["default"].func
|
|
381
|
-
});
|
|
382
|
-
(0, _defineProperty2["default"])(RawBaseComponent, "defaultProps", {
|
|
383
|
-
points: []
|
|
384
|
-
});
|
|
385
|
-
var BaseComponent = (0, _styles.withStyles)(function () {
|
|
386
|
-
return {};
|
|
387
|
-
})(RawBaseComponent);
|
|
388
|
-
exports.BaseComponent = BaseComponent;
|
|
389
|
-
|
|
390
|
-
var Component = /*#__PURE__*/function (_React$Component2) {
|
|
391
|
-
(0, _inherits2["default"])(Component, _React$Component2);
|
|
392
|
-
|
|
393
|
-
var _super2 = _createSuper(Component);
|
|
394
|
-
|
|
395
|
-
function Component(props) {
|
|
396
|
-
var _this3;
|
|
397
|
-
|
|
398
|
-
(0, _classCallCheck2["default"])(this, Component);
|
|
399
|
-
_this3 = _super2.call(this, props);
|
|
400
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this3), "change", function (points) {
|
|
401
|
-
var middle = _this3.props.mark.middle;
|
|
402
|
-
|
|
403
|
-
var mark = _objectSpread(_objectSpread({}, _this3.state.mark), {}, {
|
|
404
|
-
points: points
|
|
405
|
-
});
|
|
406
|
-
|
|
407
|
-
if (middle) {
|
|
408
|
-
var _getRightestPoints2 = (0, _utils.getRightestPoints)(points),
|
|
409
|
-
a = _getRightestPoints2.a,
|
|
410
|
-
b = _getRightestPoints2.b;
|
|
411
|
-
|
|
412
|
-
mark.middle = _objectSpread(_objectSpread({}, middle), (0, _utils.getMiddleOfTwoPoints)(a, b));
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
_this3.setState({
|
|
416
|
-
mark: mark
|
|
417
|
-
});
|
|
418
|
-
});
|
|
419
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this3), "changeProps", function (points) {
|
|
420
|
-
var mark = _objectSpread(_objectSpread({}, _this3.props.mark), {}, {
|
|
421
|
-
points: points
|
|
422
|
-
});
|
|
423
|
-
|
|
424
|
-
_this3.props.onChange(_this3.props.mark, mark);
|
|
425
|
-
});
|
|
426
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this3), "changeLabelProps", function (point) {
|
|
427
|
-
var _this3$props = _this3.props,
|
|
428
|
-
mark = _this3$props.mark,
|
|
429
|
-
onChange = _this3$props.onChange;
|
|
430
|
-
|
|
431
|
-
var middle = _objectSpread(_objectSpread({}, mark.middle), point);
|
|
432
|
-
|
|
433
|
-
onChange(mark, _objectSpread(_objectSpread({}, mark), {}, {
|
|
434
|
-
middle: middle
|
|
435
|
-
}));
|
|
436
|
-
});
|
|
437
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this3), "closePolygon", function () {
|
|
438
|
-
log('[closePolygon] ...');
|
|
439
|
-
var _this3$props2 = _this3.props,
|
|
440
|
-
onComplete = _this3$props2.onComplete,
|
|
441
|
-
mark = _this3$props2.mark;
|
|
442
|
-
|
|
443
|
-
var update = _objectSpread(_objectSpread({}, mark), {}, {
|
|
444
|
-
closed: true
|
|
445
|
-
});
|
|
446
|
-
|
|
447
|
-
onComplete(mark, update);
|
|
448
|
-
});
|
|
449
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this3), "dragStart", function () {
|
|
450
|
-
return _this3.setState({
|
|
451
|
-
mark: _this3.props.mark
|
|
452
|
-
});
|
|
453
|
-
});
|
|
454
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this3), "dragStop", function () {
|
|
455
|
-
var onChange = _this3.props.onChange;
|
|
456
|
-
|
|
457
|
-
var m = _objectSpread({}, _this3.state.mark);
|
|
458
|
-
|
|
459
|
-
_this3.setState({
|
|
460
|
-
mark: undefined
|
|
461
|
-
}, function () {
|
|
462
|
-
onChange(_this3.props.mark, m);
|
|
463
|
-
});
|
|
464
|
-
});
|
|
465
|
-
_this3.state = {};
|
|
466
|
-
return _this3;
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
(0, _createClass2["default"])(Component, [{
|
|
470
|
-
key: "render",
|
|
471
|
-
value: function render() {
|
|
472
|
-
var _this$props6 = this.props,
|
|
473
|
-
coordinatesOnHover = _this$props6.coordinatesOnHover,
|
|
474
|
-
mark = _this$props6.mark,
|
|
475
|
-
graphProps = _this$props6.graphProps,
|
|
476
|
-
onClick = _this$props6.onClick,
|
|
477
|
-
isToolActive = _this$props6.isToolActive,
|
|
478
|
-
labelNode = _this$props6.labelNode,
|
|
479
|
-
labelModeEnabled = _this$props6.labelModeEnabled;
|
|
480
|
-
var stateMark = this.state.mark;
|
|
481
|
-
return /*#__PURE__*/_react["default"].createElement(BaseComponent, (0, _extends2["default"])({}, stateMark || mark, {
|
|
482
|
-
coordinatesOnHover: coordinatesOnHover,
|
|
483
|
-
onChange: this.change,
|
|
484
|
-
onChangeLabelProps: this.changeLabelProps,
|
|
485
|
-
onChangeProps: this.changeProps,
|
|
486
|
-
onClosePolygon: this.closePolygon,
|
|
487
|
-
onDragStart: this.dragStart,
|
|
488
|
-
onDragStop: this.dragStop,
|
|
489
|
-
onClick: onClick,
|
|
490
|
-
graphProps: graphProps,
|
|
491
|
-
isToolActive: isToolActive,
|
|
492
|
-
labelNode: labelNode,
|
|
493
|
-
labelModeEnabled: labelModeEnabled
|
|
494
|
-
}));
|
|
495
|
-
}
|
|
496
|
-
}]);
|
|
497
|
-
return Component;
|
|
498
|
-
}(_react["default"].Component);
|
|
499
|
-
|
|
500
|
-
exports["default"] = Component;
|
|
501
|
-
(0, _defineProperty2["default"])(Component, "propTypes", _objectSpread(_objectSpread({}, _types.ToolPropTypeFields), {}, {
|
|
502
|
-
graphProps: _plot.types.GraphPropsType.isRequired
|
|
503
|
-
}));
|
|
504
|
-
(0, _defineProperty2["default"])(Component, "defaultProps", {});
|
|
505
|
-
//# sourceMappingURL=component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tools/polygon/component.jsx"],"names":["log","buildLines","points","closed","expanded","reduce","acc","p","index","push","isLast","length","next","all","map","from","to","swap","arr","rest","pairs","pr","e","replacement","Number","isFinite","splice","RawBaseComponent","props","onChange","update","overlapPoint","find","label","existing","forEach","point","onClosePolygon","onChangeProps","updatedPoint","data","onClick","isToolActive","labelModeEnabled","onChangeLabelProps","a","b","middle","input","focus","close","coordinatesOnHover","correctness","disabled","graphProps","onDragStart","onDragStop","labelNode","lines","common","polygonLabelIndex","polygonLabelNode","hasOwnProperty","ReactDOM","createPortal","r","dragPoly","bind","clickPoint","l","dragLine","x","y","dragPoint","labelChange","React","Component","classes","PropTypes","object","className","string","bool","arrayOf","types","PointType","func","isRequired","GraphPropsType","BaseComponent","mark","state","setState","onComplete","m","undefined","stateMark","change","changeLabelProps","changeProps","closePolygon","dragStart","dragStop","ToolPropTypeFields"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;AAEA,IAAMA,GAAG,GAAG,uBAAM,0BAAN,CAAZ;;AAEO,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,MAAD,EAASC,MAAT,EAAoB;AAC5C,MAAMC,QAAQ,GAAGF,MAAM,CAACG,MAAP,CAAc,UAACC,GAAD,EAAMC,CAAN,EAASC,KAAT,EAAmB;AAChDF,IAAAA,GAAG,CAACG,IAAJ,iCAAcF,CAAd;AAAiBC,MAAAA,KAAK,EAALA;AAAjB;AAEA,QAAME,MAAM,GAAGF,KAAK,KAAKN,MAAM,CAACS,MAAP,GAAgB,CAAzC;AACA,QAAMC,IAAI,GAAGF,MAAM,GAAG,CAAH,GAAOF,KAAK,GAAG,CAAlC;AAEAF,IAAAA,GAAG,CAACG,IAAJ,iCAAcP,MAAM,CAACU,IAAD,CAApB;AAA4BJ,MAAAA,KAAK,EAAEI;AAAnC;AAEA,WAAON,GAAP;AACD,GATgB,EASd,EATc,CAAjB;AAWA,MAAMO,GAAG,GAAG,uBAAMT,QAAN,EAAgB,CAAhB,EAAmBU,GAAnB,CAAuB,gBAAgB;AAAA;AAAA,QAAdC,IAAc;AAAA,QAARC,EAAQ;;AACjD,WAAO;AAAED,MAAAA,IAAI,EAAJA,IAAF;AAAQC,MAAAA,EAAE,EAAFA;AAAR,KAAP;AACD,GAFW,CAAZ;AAIA,SAAOb,MAAM,GAAGU,GAAH,GAAS,yBAAQA,GAAR,CAAtB;AACD,CAjBM;;;;AAmBA,IAAMI,IAAI,GAAG,SAAPA,IAAO,CAACC,GAAD,EAAkB;AAAA,oCAATC,IAAS;AAATA,IAAAA,IAAS;AAAA;;AACpC,MAAMC,KAAK,GAAG,uBAAMD,IAAN,EAAY,CAAZ,CAAd;AAEA,SAAOC,KAAK,CAACf,MAAN,CACL,UAACC,GAAD,EAAMe,EAAN,EAAa;AACX,QAAIA,EAAE,CAACV,MAAH,KAAc,CAAlB,EAAqB;AACnB,gDAAuBU,EAAvB;AAAA,UAAKC,CAAL;AAAA,UAAQC,WAAR;;AAEA,iCAAUC,MAAM,CAACC,QAAP,CAAgBH,CAAC,CAACd,KAAlB,CAAV,EAAoC,uBAApC;AAEA,UAAMA,KAAK,GAAGc,CAAC,CAACd,KAAhB,CALmB,CAMnB;;AAEA,UAAIA,KAAK,IAAI,CAAb,EAAgB;AACdF,QAAAA,GAAG,CAACoB,MAAJ,CAAWlB,KAAX,EAAkB,CAAlB,EAAqBe,WAArB;AAEA,eAAOjB,GAAP;AACD,OAJD,MAIO;AACL,eAAOA,GAAP;AACD;AACF,KAfD,MAeO;AACL,aAAOA,GAAP;AACD;AACF,GApBI,sCAqBDY,GArBC,EAAP;AAuBD,CA1BM;;;;IA4BMS,gB;;;;;;;;;;;;;;;kGA2BC,UAACnB,KAAD,EAAQO,IAAR,EAAcC,EAAd,EAAqB;AAC/BhB,MAAAA,GAAG,CAAC,uBAAD,EAA0Be,IAA1B,EAAgCC,EAAhC,CAAH;AACA,wBAA6B,MAAKY,KAAlC;AAAA,UAAQC,QAAR,eAAQA,QAAR;AAAA,UAAkB3B,MAAlB,eAAkBA,MAAlB;AACA,UAAM4B,MAAM,uCAAO5B,MAAP,CAAZ;AACA,UAAM6B,YAAY,GAAG,CAAC,CAAC,CAAC7B,MAAM,IAAI,EAAX,EAAe8B,IAAf,CAAoB,UAACzB,CAAD;AAAA,eAAO,wBAAYA,CAAZ,EAAeS,EAAf,CAAP;AAAA,OAApB,CAAvB;;AAEA,UAAI,wBAAYD,IAAZ,EAAkBC,EAAlB,KAAyBe,YAA7B,EAA2C;AACzC;AACD;;AAED,UAAI7B,MAAM,CAACM,KAAD,CAAN,CAAcyB,KAAlB,EAAyB;AACvBjB,QAAAA,EAAE,CAACiB,KAAH,GAAW/B,MAAM,CAACM,KAAD,CAAN,CAAcyB,KAAzB;AACD;;AAEDH,MAAAA,MAAM,CAACJ,MAAP,CAAclB,KAAd,EAAqB,CAArB,EAAwBQ,EAAxB;AACAa,MAAAA,QAAQ,CAACC,MAAD,CAAR;AACD,K;iGAEU,UAACI,QAAD,EAAWtB,IAAX,EAAoB;AAC7BZ,MAAAA,GAAG,CAAC,cAAD,EAAiBkC,QAAjB,EAA2BtB,IAA3B,CAAH;AACA,UAAQiB,QAAR,GAAqB,MAAKD,KAA1B,CAAQC,QAAR;;AAEA,UAAIK,QAAQ,CAACnB,IAAT,CAAckB,KAAlB,EAAyB;AACvBrB,QAAAA,IAAI,CAACG,IAAL,CAAUkB,KAAV,GAAkBC,QAAQ,CAACnB,IAAT,CAAckB,KAAhC;AACD;;AAED,UAAIC,QAAQ,CAAClB,EAAT,CAAYiB,KAAhB,EAAuB;AACrBrB,QAAAA,IAAI,CAACI,EAAL,CAAQiB,KAAR,GAAgBC,QAAQ,CAAClB,EAAT,CAAYiB,KAA5B;AACD;;AAED,UAAM/B,MAAM,GAAGe,IAAI,CAAC,MAAKW,KAAL,CAAW1B,MAAZ,EAAoBgC,QAAQ,CAACnB,IAA7B,EAAmCH,IAAI,CAACG,IAAxC,EAA8CmB,QAAQ,CAAClB,EAAvD,EAA2DJ,IAAI,CAACI,EAAhE,CAAnB;AACAa,MAAAA,QAAQ,CAAC3B,MAAD,CAAR;AACD,K;iGAEU,UAACgC,QAAD,EAAWtB,IAAX,EAAoB;AAC7BZ,MAAAA,GAAG,CAAC,aAAD,EAAgBkC,QAAhB,EAA0BtB,IAA1B,CAAH;AACA,UAAQiB,QAAR,GAAqB,MAAKD,KAA1B,CAAQC,QAAR;AAEAjB,MAAAA,IAAI,CAACuB,OAAL,CAAa,UAACC,KAAD,EAAQ5B,KAAR,EAAkB;AAC7B,YAAI0B,QAAQ,CAAC1B,KAAD,CAAR,CAAgByB,KAApB,EAA2B;AACzBrB,UAAAA,IAAI,CAACJ,KAAD,CAAJ,CAAYyB,KAAZ,GAAoBC,QAAQ,CAAC1B,KAAD,CAAR,CAAgByB,KAApC;AACD;AACF,OAJD;AAMAJ,MAAAA,QAAQ,CAACjB,IAAD,CAAR;AACD,K;8FAEO,YAAM;AACZ,yBAAmC,MAAKgB,KAAxC;AAAA,UAAQ1B,MAAR,gBAAQA,MAAR;AAAA,UAAgBmC,cAAhB,gBAAgBA,cAAhB;AACArC,MAAAA,GAAG,CAAC,aAAD,CAAH;;AAEA,UAAIE,MAAM,CAACS,MAAP,IAAiB,CAArB,EAAwB;AACtB0B,QAAAA,cAAc;AACf,OAFD,MAEO;AACLrC,QAAAA,GAAG,CAAC,gBAAD,CAAH;AACD;AACF,K;oGAEa,UAACoC,KAAD,EAAQ5B,KAAR,EAAkB;AAC9B,yBAAkC,MAAKoB,KAAvC;AAAA,UAAQ1B,MAAR,gBAAQA,MAAR;AAAA,UAAgBoC,aAAhB,gBAAgBA,aAAhB;;AACA,UAAMC,YAAY,qBAAQH,KAAR,CAAlB;;AAEA,UAAI,CAACA,KAAK,CAACH,KAAP,IAAgB,yBAAQG,KAAK,CAACH,KAAd,CAApB,EAA0C;AACxC,eAAOM,YAAY,CAACN,KAApB;AACD;;AAED,UAAMH,MAAM,uCAAO5B,MAAP,CAAZ;AAEA4B,MAAAA,MAAM,CAACJ,MAAP,CAAclB,KAAd,EAAqB,CAArB,EAAwB+B,YAAxB;AACAD,MAAAA,aAAa,CAACR,MAAD,CAAb;AACD,K;mGAEY,UAACM,KAAD,EAAQ5B,KAAR,EAAegC,IAAf,EAAwB;AACnC,yBAAuG,MAAKZ,KAA5G;AAAA,UAAQzB,MAAR,gBAAQA,MAAR;AAAA,UAAgBsC,OAAhB,gBAAgBA,OAAhB;AAAA,UAAyBC,YAAzB,gBAAyBA,YAAzB;AAAA,UAAuCC,gBAAvC,gBAAuCA,gBAAvC;AAAA,UAAyDL,aAAzD,gBAAyDA,aAAzD;AAAA,UAAwEM,kBAAxE,gBAAwEA,kBAAxE;AAAA,UAA4F1C,MAA5F,gBAA4FA,MAA5F;;AAEA,UAAIyC,gBAAJ,EAAsB;AACpB,YAAIzC,MAAM,IAAIM,KAAK,KAAKN,MAAM,CAACS,MAA/B,EAAuC;AACrC,mCAAiB,8BAAkBT,MAAlB,CAAjB;AAAA,cAAQ2C,CAAR,sBAAQA,CAAR;AAAA,cAAWC,CAAX,sBAAWA,CAAX;;AACA,cAAMC,MAAM;AAAKd,YAAAA,KAAK,EAAE;AAAZ,aAAmBG,KAAnB,GAA6B,iCAAqBS,CAArB,EAAwBC,CAAxB,CAA7B,CAAZ;;AAEAF,UAAAA,kBAAkB,CAACG,MAAD,CAAlB;AACD,SALD,MAKO;AACL,cAAMjB,MAAM,uCAAO5B,MAAP,CAAZ;AAEA4B,UAAAA,MAAM,CAACJ,MAAP,CAAclB,KAAd,EAAqB,CAArB;AAA0ByB,YAAAA,KAAK,EAAE;AAAjC,aAAwCG,KAAxC;AACAE,UAAAA,aAAa,CAACR,MAAD,CAAb;AACD;;AAED,YAAI,MAAKkB,KAAL,CAAWxC,KAAX,CAAJ,EAAuB;AACrB,gBAAKwC,KAAL,CAAWxC,KAAX,EAAkByC,KAAlB;AACD;AACF,OAhBD,MAgBO;AACL,YAAIP,YAAY,IAAI,CAACvC,MAAjB,IAA2BK,KAAK,KAAK,CAAzC,EAA4C;AAC1C,gBAAK0C,KAAL;AACD,SAFD,MAEO;AACLT,UAAAA,OAAO,CAACD,IAAD,CAAP;AACD;AACF;AACF,K;8FAGO,E;;;;;;WAER,kBAAS;AAAA;;AACP,yBAaI,KAAKZ,KAbT;AAAA,UACEzB,MADF,gBACEA,MADF;AAAA,UAEEgD,kBAFF,gBAEEA,kBAFF;AAAA,UAGEC,WAHF,gBAGEA,WAHF;AAAA,UAIEC,QAJF,gBAIEA,QAJF;AAAA,UAKEC,UALF,gBAKEA,UALF;AAAA,UAMEV,kBANF,gBAMEA,kBANF;AAAA,UAOEW,WAPF,gBAOEA,WAPF;AAAA,UAQEC,UARF,gBAQEA,UARF;AAAA,UASEtD,MATF,gBASEA,MATF;AAAA,UAUE6C,MAVF,gBAUEA,MAVF;AAAA,UAWEU,SAXF,gBAWEA,SAXF;AAAA,UAYEd,gBAZF,gBAYEA,gBAZF;AAcA,UAAMe,KAAK,GAAGzD,UAAU,CAACC,MAAD,EAASC,MAAT,CAAxB;AACA,UAAMwD,MAAM,GAAG;AAAEJ,QAAAA,WAAW,EAAXA,WAAF;AAAeC,QAAAA,UAAU,EAAVA,UAAf;AAA2BF,QAAAA,UAAU,EAAVA,UAA3B;AAAuCD,QAAAA,QAAQ,EAARA,QAAvC;AAAiDD,QAAAA,WAAW,EAAXA;AAAjD,OAAf;AACA,UAAMQ,iBAAiB,GAAI1D,MAAM,IAAIA,MAAM,CAACS,MAAlB,IAA6B,CAAvD;AACA,UAAIkD,gBAAgB,GAAG,IAAvB;;AAEA,UAAIJ,SAAS,IAAIV,MAAb,IAAuBA,MAAM,CAACe,cAAP,CAAsB,OAAtB,CAA3B,EAA2D;AACzDD,QAAAA,gBAAgB,gBAAGE,qBAASC,YAAT,eACjB,gCAAC,qBAAD;AACE,UAAA,QAAQ,EAAE,kBAACC,CAAD;AAAA,mBAAQ,MAAI,CAACjB,KAAL,CAAWY,iBAAX,IAAgCK,CAAxC;AAAA,WADZ;AAEE,UAAA,QAAQ,EAAE,CAACtB,gBAFb;AAGE,UAAA,IAAI,EAAEI,MAHR;AAIE,UAAA,UAAU,EAAEO,UAJd;AAKE,UAAA,QAAQ,EAAE,kBAACrB,KAAD;AAAA,mBAAWW,kBAAkB,iCAAMG,MAAN;AAAcd,cAAAA,KAAK,EAALA;AAAd,eAA7B;AAAA;AALZ,UADiB,EAQjBwB,SARiB,CAAnB;AAUD;;AAED,0BACE,2CACGtD,MAAM,gBACL,gCAAC,iBAAD,CAAO,QAAP,qBACE,gCAAC,mBAAD;AACE,QAAA,MAAM,EAAED,MADV;AAEE,QAAA,MAAM,EAAE,KAAKgE,QAAL,CAAcC,IAAd,CAAmB,IAAnB,EAAyBjE,MAAzB,CAFV;AAGE,QAAA,MAAM,EAAEC;AAHV,SAIMwD,MAJN;AAKE,QAAA,OAAO,EAAE,KAAKS,UAAL,CAAgBD,IAAhB,CAAqB,IAArB,EAA2BpB,MAA3B,EAAmCa,iBAAnC;AALX,SADF,EAQGC,gBARH,CADK,gBAYL,gCAAC,gBAAD;AAAS,QAAA,MAAM,EAAE3D,MAAjB;AAAyB,QAAA,UAAU,EAAEoD,UAArC;AAAiD,QAAA,MAAM,EAAEnD;AAAzD,QAbJ,EAeG,CAACuD,KAAK,IAAI,EAAV,EAAc5C,GAAd,CAAkB,UAACuD,CAAD,EAAI7D,KAAJ;AAAA,4BACjB,gCAAC,gBAAD;AACE,UAAA,GAAG,iBAAUA,KAAV,CADL;AAEE,UAAA,IAAI,EAAE6D,CAAC,CAACtD,IAFV;AAGE,UAAA,EAAE,EAAEsD,CAAC,CAACrD,EAHR;AAIE,UAAA,MAAM,EAAE,MAAI,CAACsD,QAAL,CAAcH,IAAd,CAAmB,MAAnB,EAAyBE,CAAzB;AAJV,WAKMV,MALN;AAME,UAAA,OAAO,EAAE,MAAI,CAACS,UAAL,CAAgBD,IAAhB,CAAqB,MAArB,EAA2BpB,MAA3B,EAAmCa,iBAAnC;AANX,WADiB;AAAA,OAAlB,CAfH,EA0BG,CAAC1D,MAAM,IAAI,EAAX,EAAeY,GAAf,CAAmB,UAACP,CAAD,EAAIC,KAAJ,EAAc;AAChC,eAAO,cACL,gCAAC,gBAAD;AACE,UAAA,GAAG,kBAAWA,KAAX,CADL;AAEE,UAAA,kBAAkB,EAAE2C,kBAFtB;AAGE,UAAA,SAAS,EAAEM,SAHb;AAIE,UAAA,CAAC,EAAElD,CAAC,CAACgE,CAJP;AAKE,UAAA,CAAC,EAAEhE,CAAC,CAACiE,CALP;AAME,UAAA,MAAM,EAAE,MAAI,CAACC,SAAL,CAAeN,IAAf,CAAoB,MAApB,EAA0B3D,KAA1B,EAAiCD,CAAjC,CANV;AAOE,UAAA,OAAO,EAAE,MAAI,CAAC6D,UAAL,CAAgBD,IAAhB,CAAqB,MAArB,EAA2B5D,CAA3B,EAA8BC,KAA9B;AAPX,WAQMmD,MARN,EADK,EAWLF,SAAS,IAAIlD,CAAC,CAACuD,cAAF,CAAiB,OAAjB,CAAb,gBACIC,qBAASC,YAAT,eACE,gCAAC,qBAAD;AACE,UAAA,QAAQ,EAAE,kBAACC,CAAD;AAAA,mBAAQ,MAAI,CAACjB,KAAL,CAAWxC,KAAX,IAAoByD,CAA5B;AAAA,WADZ;AAEE,UAAA,QAAQ,EAAE,CAACtB,gBAFb;AAGE,UAAA,IAAI,EAAEpC,CAHR;AAIE,UAAA,UAAU,EAAE+C,UAJd;AAKE,UAAA,QAAQ,EAAE,kBAACrB,KAAD;AAAA,mBAAW,MAAI,CAACyC,WAAL,iCAAsBnE,CAAtB;AAAyB0B,cAAAA,KAAK,EAALA;AAAzB,gBAAkCzB,KAAlC,CAAX;AAAA;AALZ,UADF,EAQEiD,SARF,CADJ,GAWI,IAtBC,CAAP;AAwBD,OAzBA,CA1BH,CADF;AAuDD;;;EA1NmCkB,kBAAMC,S;;;iCAA/BjD,gB,eACQ;AACjBkD,EAAAA,OAAO,EAAEC,sBAAUC,MADF;AAEjBC,EAAAA,SAAS,EAAEF,sBAAUG,MAFJ;AAGjB5B,EAAAA,QAAQ,EAAEyB,sBAAUI,IAHH;AAIjB9B,EAAAA,WAAW,EAAE0B,sBAAUG,MAJN;AAKjB/E,EAAAA,MAAM,EAAE4E,sBAAUK,OAAV,CAAkBC,YAAMC,SAAxB,CALS;AAMjBlF,EAAAA,MAAM,EAAE2E,sBAAUI,IAND;AAOjB/B,EAAAA,kBAAkB,EAAE2B,sBAAUI,IAPb;AAQjBrD,EAAAA,QAAQ,EAAEiD,sBAAUQ,IAAV,CAAeC,UARR;AASjBlD,EAAAA,cAAc,EAAEyC,sBAAUQ,IAAV,CAAeC,UATd;AAUjBhC,EAAAA,WAAW,EAAEuB,sBAAUQ,IAVN;AAWjB9B,EAAAA,UAAU,EAAEsB,sBAAUQ,IAXL;AAYjB7C,EAAAA,OAAO,EAAEqC,sBAAUQ,IAZF;AAajBhC,EAAAA,UAAU,EAAE8B,YAAMI,cAAN,CAAqBD,UAbhB;AAcjB7C,EAAAA,YAAY,EAAEoC,sBAAUI,IAdP;AAejBnC,EAAAA,MAAM,EAAE+B,sBAAUC,MAfD;AAgBjBtB,EAAAA,SAAS,EAAEqB,sBAAUC,MAhBJ;AAiBjBpC,EAAAA,gBAAgB,EAAEmC,sBAAUI,IAjBX;AAkBjBtC,EAAAA,kBAAkB,EAAEkC,sBAAUQ,IAlBb;AAmBjBhD,EAAAA,aAAa,EAAEwC,sBAAUQ;AAnBR,C;iCADR3D,gB,kBAuBW;AACpBzB,EAAAA,MAAM,EAAE;AADY,C;AAsMjB,IAAMuF,aAAa,GAAG,wBAAW;AAAA,SAAO,EAAP;AAAA,CAAX,EAAuB9D,gBAAvB,CAAtB;;;IAEciD,S;;;;;AAQnB,qBAAYhD,KAAZ,EAAmB;AAAA;;AAAA;AACjB,gCAAMA,KAAN;AADiB,gGAKV,UAAC1B,MAAD,EAAY;AACnB,UACU6C,MADV,GAEI,OAAKnB,KAFT,CACE8D,IADF,CACU3C,MADV;;AAGA,UAAM2C,IAAI,mCAAQ,OAAKC,KAAL,CAAWD,IAAnB;AAAyBxF,QAAAA,MAAM,EAANA;AAAzB,QAAV;;AAEA,UAAI6C,MAAJ,EAAY;AACV,kCAAiB,8BAAkB7C,MAAlB,CAAjB;AAAA,YAAQ2C,CAAR,uBAAQA,CAAR;AAAA,YAAWC,CAAX,uBAAWA,CAAX;;AAEA4C,QAAAA,IAAI,CAAC3C,MAAL,mCAAmBA,MAAnB,GAA8B,iCAAqBF,CAArB,EAAwBC,CAAxB,CAA9B;AACD;;AAED,aAAK8C,QAAL,CAAc;AAAEF,QAAAA,IAAI,EAAJA;AAAF,OAAd;AACD,KAlBkB;AAAA,qGAoBL,UAACxF,MAAD,EAAY;AACxB,UAAMwF,IAAI,mCAAQ,OAAK9D,KAAL,CAAW8D,IAAnB;AAAyBxF,QAAAA,MAAM,EAANA;AAAzB,QAAV;;AAEA,aAAK0B,KAAL,CAAWC,QAAX,CAAoB,OAAKD,KAAL,CAAW8D,IAA/B,EAAqCA,IAArC;AACD,KAxBkB;AAAA,0GA0BA,UAACtD,KAAD,EAAW;AAC5B,yBAA2B,OAAKR,KAAhC;AAAA,UAAQ8D,IAAR,gBAAQA,IAAR;AAAA,UAAc7D,QAAd,gBAAcA,QAAd;;AACA,UAAMkB,MAAM,mCAAQ2C,IAAI,CAAC3C,MAAb,GAAwBX,KAAxB,CAAZ;;AAEAP,MAAAA,QAAQ,CAAC6D,IAAD,kCAAYA,IAAZ;AAAkB3C,QAAAA,MAAM,EAANA;AAAlB,SAAR;AACD,KA/BkB;AAAA,sGAiCJ,YAAM;AACnB/C,MAAAA,GAAG,CAAC,oBAAD,CAAH;AACA,0BAA6B,OAAK4B,KAAlC;AAAA,UAAQiE,UAAR,iBAAQA,UAAR;AAAA,UAAoBH,IAApB,iBAAoBA,IAApB;;AACA,UAAM5D,MAAM,mCAAQ4D,IAAR;AAAcvF,QAAAA,MAAM,EAAE;AAAtB,QAAZ;;AAEA0F,MAAAA,UAAU,CAACH,IAAD,EAAO5D,MAAP,CAAV;AACD,KAvCkB;AAAA,mGAyCP;AAAA,aAAM,OAAK8D,QAAL,CAAc;AAAEF,QAAAA,IAAI,EAAE,OAAK9D,KAAL,CAAW8D;AAAnB,OAAd,CAAN;AAAA,KAzCO;AAAA,kGA2CR,YAAM;AACf,UAAQ7D,QAAR,GAAqB,OAAKD,KAA1B,CAAQC,QAAR;;AACA,UAAMiE,CAAC,qBAAQ,OAAKH,KAAL,CAAWD,IAAnB,CAAP;;AAEA,aAAKE,QAAL,CAAc;AAAEF,QAAAA,IAAI,EAAEK;AAAR,OAAd,EAAmC,YAAM;AACvClE,QAAAA,QAAQ,CAAC,OAAKD,KAAL,CAAW8D,IAAZ,EAAkBI,CAAlB,CAAR;AACD,OAFD;AAGD,KAlDkB;AAEjB,WAAKH,KAAL,GAAa,EAAb;AAFiB;AAGlB;;;;WAiDD,kBAAS;AACP,yBAAqG,KAAK/D,KAA1G;AAAA,UAAQuB,kBAAR,gBAAQA,kBAAR;AAAA,UAA4BuC,IAA5B,gBAA4BA,IAA5B;AAAA,UAAkCpC,UAAlC,gBAAkCA,UAAlC;AAAA,UAA8Cb,OAA9C,gBAA8CA,OAA9C;AAAA,UAAuDC,YAAvD,gBAAuDA,YAAvD;AAAA,UAAqEe,SAArE,gBAAqEA,SAArE;AAAA,UAAgFd,gBAAhF,gBAAgFA,gBAAhF;AACA,UAAcqD,SAAd,GAA4B,KAAKL,KAAjC,CAAQD,IAAR;AAEA,0BACE,gCAAC,aAAD,gCACOM,SAAS,IAAIN,IADpB;AAEE,QAAA,kBAAkB,EAAEvC,kBAFtB;AAGE,QAAA,QAAQ,EAAE,KAAK8C,MAHjB;AAIE,QAAA,kBAAkB,EAAE,KAAKC,gBAJ3B;AAKE,QAAA,aAAa,EAAE,KAAKC,WALtB;AAME,QAAA,cAAc,EAAE,KAAKC,YANvB;AAOE,QAAA,WAAW,EAAE,KAAKC,SAPpB;AAQE,QAAA,UAAU,EAAE,KAAKC,QARnB;AASE,QAAA,OAAO,EAAE7D,OATX;AAUE,QAAA,UAAU,EAAEa,UAVd;AAWE,QAAA,YAAY,EAAEZ,YAXhB;AAYE,QAAA,SAAS,EAAEe,SAZb;AAaE,QAAA,gBAAgB,EAAEd;AAbpB,SADF;AAiBD;;;EAjFoCgC,kBAAMC,S;;;iCAAxBA,S,+CAEd2B,yB;AACHjD,EAAAA,UAAU,EAAE8B,YAAMI,cAAN,CAAqBD;;iCAHhBX,S,kBAMG,E","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { ToolPropTypeFields } from '../shared/types';\nimport { BasePoint } from '../shared/point';\nimport chunk from 'lodash/chunk';\nimport initial from 'lodash/initial';\nimport isEqual from 'lodash/isEqual';\nimport debug from 'debug';\nimport Line from './line';\nimport DraggablePolygon, { Polygon } from './polygon';\nimport { types, utils } 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 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 { closed, onClick, isToolActive, labelModeEnabled, onChangeProps, onChangeLabelProps, points } = this.props;\n\n if (labelModeEnabled) {\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 } else {\n if (isToolActive && !closed && index === 0) {\n this.close();\n } else {\n onClick(data);\n }\n }\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 && middle.hasOwnProperty('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 onClick={this.clickPoint.bind(this, p, index)}\n {...common}\n />,\n labelNode && p.hasOwnProperty('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 = withStyles(() => ({}))(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 { coordinatesOnHover, mark, graphProps, onClick, isToolActive, labelNode, labelModeEnabled } = 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 />\n );\n }\n}\n"],"file":"component.js"}
|
|
@@ -1,106 +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.tool = exports.addPointToArray = void 0;
|
|
9
|
-
|
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
-
|
|
14
|
-
var _component = _interopRequireDefault(require("./component"));
|
|
15
|
-
|
|
16
|
-
var _utils = require("../../utils");
|
|
17
|
-
|
|
18
|
-
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; }
|
|
19
|
-
|
|
20
|
-
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; }
|
|
21
|
-
|
|
22
|
-
var addPointToArray = function addPointToArray(point, arr) {
|
|
23
|
-
arr = arr || [];
|
|
24
|
-
|
|
25
|
-
if (arr.length === 0) {
|
|
26
|
-
return {
|
|
27
|
-
points: [point],
|
|
28
|
-
closed: false
|
|
29
|
-
};
|
|
30
|
-
} else if (arr.length === 1) {
|
|
31
|
-
if ((0, _utils.equalPoints)(point, arr[0])) {
|
|
32
|
-
return {
|
|
33
|
-
points: arr,
|
|
34
|
-
closed: false
|
|
35
|
-
};
|
|
36
|
-
} else {
|
|
37
|
-
return {
|
|
38
|
-
points: [].concat((0, _toConsumableArray2["default"])(arr), [point]),
|
|
39
|
-
closed: false
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
} else if (arr.length >= 2) {
|
|
43
|
-
var closed = (0, _utils.equalPoints)(point, arr[0]);
|
|
44
|
-
|
|
45
|
-
if (closed) {
|
|
46
|
-
return {
|
|
47
|
-
points: arr,
|
|
48
|
-
closed: closed
|
|
49
|
-
};
|
|
50
|
-
} else {
|
|
51
|
-
var hasPoint = !!arr.find(function (p) {
|
|
52
|
-
return (0, _utils.equalPoints)(p, point);
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
if (hasPoint) {
|
|
56
|
-
return {
|
|
57
|
-
points: arr,
|
|
58
|
-
closed: false
|
|
59
|
-
};
|
|
60
|
-
} else {
|
|
61
|
-
return {
|
|
62
|
-
points: [].concat((0, _toConsumableArray2["default"])(arr), [point]),
|
|
63
|
-
closed: false
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
exports.addPointToArray = addPointToArray;
|
|
71
|
-
|
|
72
|
-
var tool = function tool() {
|
|
73
|
-
return {
|
|
74
|
-
type: 'polygon',
|
|
75
|
-
Component: _component["default"],
|
|
76
|
-
complete: function complete(data, mark) {
|
|
77
|
-
return _objectSpread(_objectSpread({}, mark), {}, {
|
|
78
|
-
building: false,
|
|
79
|
-
closed: true
|
|
80
|
-
});
|
|
81
|
-
},
|
|
82
|
-
addPoint: function addPoint(point, mark) {
|
|
83
|
-
if (!mark) {
|
|
84
|
-
return {
|
|
85
|
-
type: 'polygon',
|
|
86
|
-
points: [point],
|
|
87
|
-
closed: false,
|
|
88
|
-
building: true
|
|
89
|
-
};
|
|
90
|
-
} else {
|
|
91
|
-
var _addPointToArray = addPointToArray(point, mark.points),
|
|
92
|
-
closed = _addPointToArray.closed,
|
|
93
|
-
points = _addPointToArray.points;
|
|
94
|
-
|
|
95
|
-
return _objectSpread(_objectSpread({}, mark), {}, {
|
|
96
|
-
closed: closed,
|
|
97
|
-
points: points,
|
|
98
|
-
building: !closed
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
exports.tool = tool;
|
|
106
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tools/polygon/index.js"],"names":["addPointToArray","point","arr","length","points","closed","hasPoint","find","p","tool","type","Component","Polygon","complete","data","mark","building","addPoint"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;;;;;AAEO,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAACC,KAAD,EAAQC,GAAR,EAAgB;AAC7CA,EAAAA,GAAG,GAAGA,GAAG,IAAI,EAAb;;AAEA,MAAIA,GAAG,CAACC,MAAJ,KAAe,CAAnB,EAAsB;AACpB,WAAO;AAAEC,MAAAA,MAAM,EAAE,CAACH,KAAD,CAAV;AAAmBI,MAAAA,MAAM,EAAE;AAA3B,KAAP;AACD,GAFD,MAEO,IAAIH,GAAG,CAACC,MAAJ,KAAe,CAAnB,EAAsB;AAC3B,QAAI,wBAAYF,KAAZ,EAAmBC,GAAG,CAAC,CAAD,CAAtB,CAAJ,EAAgC;AAC9B,aAAO;AAAEE,QAAAA,MAAM,EAAEF,GAAV;AAAeG,QAAAA,MAAM,EAAE;AAAvB,OAAP;AACD,KAFD,MAEO;AACL,aAAO;AAAED,QAAAA,MAAM,gDAAMF,GAAN,IAAWD,KAAX,EAAR;AAA2BI,QAAAA,MAAM,EAAE;AAAnC,OAAP;AACD;AACF,GANM,MAMA,IAAIH,GAAG,CAACC,MAAJ,IAAc,CAAlB,EAAqB;AAC1B,QAAME,MAAM,GAAG,wBAAYJ,KAAZ,EAAmBC,GAAG,CAAC,CAAD,CAAtB,CAAf;;AAEA,QAAIG,MAAJ,EAAY;AACV,aAAO;AAAED,QAAAA,MAAM,EAAEF,GAAV;AAAeG,QAAAA,MAAM,EAANA;AAAf,OAAP;AACD,KAFD,MAEO;AACL,UAAMC,QAAQ,GAAG,CAAC,CAACJ,GAAG,CAACK,IAAJ,CAAS,UAACC,CAAD;AAAA,eAAO,wBAAYA,CAAZ,EAAeP,KAAf,CAAP;AAAA,OAAT,CAAnB;;AAEA,UAAIK,QAAJ,EAAc;AACZ,eAAO;AAAEF,UAAAA,MAAM,EAAEF,GAAV;AAAeG,UAAAA,MAAM,EAAE;AAAvB,SAAP;AACD,OAFD,MAEO;AACL,eAAO;AAAED,UAAAA,MAAM,gDAAMF,GAAN,IAAWD,KAAX,EAAR;AAA2BI,UAAAA,MAAM,EAAE;AAAnC,SAAP;AACD;AACF;AACF;AACF,CA1BM;;;;AA4BA,IAAMI,IAAI,GAAG,SAAPA,IAAO;AAAA,SAAO;AACzBC,IAAAA,IAAI,EAAE,SADmB;AAEzBC,IAAAA,SAAS,EAAEC,qBAFc;AAGzBC,IAAAA,QAAQ,EAAE,kBAACC,IAAD,EAAOC,IAAP,EAAgB;AACxB,6CAAYA,IAAZ;AAAkBC,QAAAA,QAAQ,EAAE,KAA5B;AAAmCX,QAAAA,MAAM,EAAE;AAA3C;AACD,KALwB;AAMzBY,IAAAA,QAAQ,EAAE,kBAAChB,KAAD,EAAQc,IAAR,EAAiB;AACzB,UAAI,CAACA,IAAL,EAAW;AACT,eAAO;AACLL,UAAAA,IAAI,EAAE,SADD;AAELN,UAAAA,MAAM,EAAE,CAACH,KAAD,CAFH;AAGLI,UAAAA,MAAM,EAAE,KAHH;AAILW,UAAAA,QAAQ,EAAE;AAJL,SAAP;AAMD,OAPD,MAOO;AACL,+BAA2BhB,eAAe,CAACC,KAAD,EAAQc,IAAI,CAACX,MAAb,CAA1C;AAAA,YAAQC,MAAR,oBAAQA,MAAR;AAAA,YAAgBD,MAAhB,oBAAgBA,MAAhB;;AAEA,+CAAYW,IAAZ;AAAkBV,UAAAA,MAAM,EAANA,MAAlB;AAA0BD,UAAAA,MAAM,EAANA,MAA1B;AAAkCY,UAAAA,QAAQ,EAAE,CAACX;AAA7C;AACD;AACF;AAnBwB,GAAP;AAAA,CAAb","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"],"file":"index.js"}
|