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