@pie-lib/graphing-solution-set 3.1.0-next.0 → 3.1.0-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/package.json +9 -9
  3. package/lib/__tests__/graph-with-controls.test.js +0 -199
  4. package/lib/__tests__/graph.test.js +0 -114
  5. package/lib/__tests__/grid.test.js +0 -29
  6. package/lib/__tests__/labels.test.js +0 -45
  7. package/lib/__tests__/mark-label.test.js +0 -133
  8. package/lib/__tests__/toggle-bar.test.js +0 -89
  9. package/lib/__tests__/tool-menu.test.js +0 -41
  10. package/lib/__tests__/undo-redo.test.js +0 -31
  11. package/lib/__tests__/use-debounce.test.js +0 -24
  12. package/lib/__tests__/utils.js +0 -70
  13. package/lib/__tests__/utils.test.js +0 -123
  14. package/lib/axis/__tests__/arrow.test.js +0 -60
  15. package/lib/axis/__tests__/axes.test.js +0 -162
  16. package/lib/axis/arrow.js +0 -79
  17. package/lib/axis/arrow.js.map +0 -1
  18. package/lib/axis/axes.js +0 -325
  19. package/lib/axis/axes.js.map +0 -1
  20. package/lib/axis/index.js +0 -21
  21. package/lib/axis/index.js.map +0 -1
  22. package/lib/bg.js +0 -111
  23. package/lib/bg.js.map +0 -1
  24. package/lib/container/actions.js +0 -18
  25. package/lib/container/actions.js.map +0 -1
  26. package/lib/container/index.js +0 -120
  27. package/lib/container/index.js.map +0 -1
  28. package/lib/container/marks.js +0 -22
  29. package/lib/container/marks.js.map +0 -1
  30. package/lib/container/middleware.js +0 -19
  31. package/lib/container/middleware.js.map +0 -1
  32. package/lib/container/reducer.js +0 -18
  33. package/lib/container/reducer.js.map +0 -1
  34. package/lib/coordinates-label.js +0 -77
  35. package/lib/coordinates-label.js.map +0 -1
  36. package/lib/graph-with-controls.js +0 -298
  37. package/lib/graph-with-controls.js.map +0 -1
  38. package/lib/graph.js +0 -354
  39. package/lib/graph.js.map +0 -1
  40. package/lib/grid-setup.js +0 -406
  41. package/lib/grid-setup.js.map +0 -1
  42. package/lib/grid.js +0 -131
  43. package/lib/grid.js.map +0 -1
  44. package/lib/index.js +0 -40
  45. package/lib/index.js.map +0 -1
  46. package/lib/labels.js +0 -199
  47. package/lib/labels.js.map +0 -1
  48. package/lib/mark-label.js +0 -159
  49. package/lib/mark-label.js.map +0 -1
  50. package/lib/toggle-bar.js +0 -248
  51. package/lib/toggle-bar.js.map +0 -1
  52. package/lib/tool-menu.js +0 -218
  53. package/lib/tool-menu.js.map +0 -1
  54. package/lib/tools/index.js +0 -24
  55. package/lib/tools/index.js.map +0 -1
  56. package/lib/tools/line/__tests__/component.test.js +0 -45
  57. package/lib/tools/line/component.js +0 -92
  58. package/lib/tools/line/component.js.map +0 -1
  59. package/lib/tools/line/index.js +0 -11
  60. package/lib/tools/line/index.js.map +0 -1
  61. package/lib/tools/polygon/__tests__/component.test.js +0 -81
  62. package/lib/tools/polygon/__tests__/index.test.js +0 -92
  63. package/lib/tools/polygon/__tests__/line.test.js +0 -30
  64. package/lib/tools/polygon/__tests__/polygon.test.js +0 -61
  65. package/lib/tools/polygon/component.js +0 -360
  66. package/lib/tools/polygon/component.js.map +0 -1
  67. package/lib/tools/polygon/index.js +0 -89
  68. package/lib/tools/polygon/index.js.map +0 -1
  69. package/lib/tools/polygon/line.js +0 -114
  70. package/lib/tools/polygon/line.js.map +0 -1
  71. package/lib/tools/polygon/polygon.js +0 -131
  72. package/lib/tools/polygon/polygon.js.map +0 -1
  73. package/lib/tools/shared/__tests__/arrow-head.test.js +0 -45
  74. package/lib/tools/shared/arrow-head.js +0 -62
  75. package/lib/tools/shared/arrow-head.js.map +0 -1
  76. package/lib/tools/shared/line/__tests__/index.test.js +0 -129
  77. package/lib/tools/shared/line/__tests__/line-path.test.js +0 -64
  78. package/lib/tools/shared/line/__tests__/with-root-edge.test.js +0 -83
  79. package/lib/tools/shared/line/index.js +0 -541
  80. package/lib/tools/shared/line/index.js.map +0 -1
  81. package/lib/tools/shared/line/line-path.js +0 -121
  82. package/lib/tools/shared/line/line-path.js.map +0 -1
  83. package/lib/tools/shared/line/with-root-edge.js +0 -121
  84. package/lib/tools/shared/line/with-root-edge.js.map +0 -1
  85. package/lib/tools/shared/point/__tests__/arrow-point.test.js +0 -127
  86. package/lib/tools/shared/point/__tests__/base-point.test.js +0 -122
  87. package/lib/tools/shared/point/arrow-point.js +0 -86
  88. package/lib/tools/shared/point/arrow-point.js.map +0 -1
  89. package/lib/tools/shared/point/arrow.js +0 -70
  90. package/lib/tools/shared/point/arrow.js.map +0 -1
  91. package/lib/tools/shared/point/base-point.js +0 -137
  92. package/lib/tools/shared/point/base-point.js.map +0 -1
  93. package/lib/tools/shared/point/index.js +0 -80
  94. package/lib/tools/shared/point/index.js.map +0 -1
  95. package/lib/tools/shared/styles.js +0 -26
  96. package/lib/tools/shared/styles.js.map +0 -1
  97. package/lib/tools/shared/types.js +0 -15
  98. package/lib/tools/shared/types.js.map +0 -1
  99. package/lib/undo-redo.js +0 -67
  100. package/lib/undo-redo.js.map +0 -1
  101. package/lib/use-debounce.js +0 -25
  102. package/lib/use-debounce.js.map +0 -1
  103. package/lib/utils.js +0 -239
  104. package/lib/utils.js.map +0 -1
@@ -1,360 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.swap = exports["default"] = exports.buildLines = exports.RawBaseComponent = exports.BaseComponent = void 0;
8
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
12
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
13
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
16
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
- var _react = _interopRequireDefault(require("react"));
18
- var _propTypes = _interopRequireDefault(require("prop-types"));
19
- var _types = require("../shared/types");
20
- var _chunk = _interopRequireDefault(require("lodash/chunk"));
21
- var _initial = _interopRequireDefault(require("lodash/initial"));
22
- var _debug = _interopRequireDefault(require("debug"));
23
- var _polygon = _interopRequireDefault(require("./polygon"));
24
- var _plot = require("@pie-lib/plot");
25
- var _invariant = _interopRequireDefault(require("invariant"));
26
- var _reactDom = _interopRequireDefault(require("react-dom"));
27
- var _markLabel = _interopRequireDefault(require("../../mark-label"));
28
- var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
29
- var _utils = require("../../utils");
30
- 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)); }
31
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
32
- 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; }
33
- 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; }
34
- var log = (0, _debug["default"])('pie-lib:graphing-solution-set:polygon');
35
- var buildLines = exports.buildLines = function buildLines(points, closed) {
36
- var expanded = points.reduce(function (acc, p, index) {
37
- acc.push(_objectSpread(_objectSpread({}, p), {}, {
38
- index: index
39
- }));
40
- var isLast = index === points.length - 1;
41
- var next = isLast ? 0 : index + 1;
42
- acc.push(_objectSpread(_objectSpread({}, points[next]), {}, {
43
- index: next
44
- }));
45
- return acc;
46
- }, []);
47
- var all = (0, _chunk["default"])(expanded, 2).map(function (_ref) {
48
- var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
49
- from = _ref2[0],
50
- to = _ref2[1];
51
- return {
52
- from: from,
53
- to: to
54
- };
55
- });
56
- return closed ? all : (0, _initial["default"])(all);
57
- };
58
- var swap = exports.swap = function swap(arr) {
59
- for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
60
- rest[_key - 1] = arguments[_key];
61
- }
62
- var pairs = (0, _chunk["default"])(rest, 2);
63
- return pairs.reduce(function (acc, pr) {
64
- if (pr.length === 2) {
65
- var _pr = (0, _slicedToArray2["default"])(pr, 2),
66
- e = _pr[0],
67
- replacement = _pr[1];
68
- (0, _invariant["default"])(Number.isFinite(e.index), 'Index must be defined');
69
- var index = e.index;
70
- // const i = acc.findIndex(pt => pt.x === e.x && pt.y === e.y);
71
-
72
- if (index >= 0) {
73
- acc.splice(index, 1, replacement);
74
- return acc;
75
- } else {
76
- return acc;
77
- }
78
- } else {
79
- return acc;
80
- }
81
- }, (0, _toConsumableArray2["default"])(arr));
82
- };
83
- var RawBaseComponent = exports.RawBaseComponent = /*#__PURE__*/function (_React$Component) {
84
- function RawBaseComponent() {
85
- var _this;
86
- (0, _classCallCheck2["default"])(this, RawBaseComponent);
87
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
88
- args[_key2] = arguments[_key2];
89
- }
90
- _this = _callSuper(this, RawBaseComponent, [].concat(args));
91
- (0, _defineProperty2["default"])(_this, "dragPoint", function (index, from, to) {
92
- log('[dragPoint] from, to:', from, to);
93
- var _this$props = _this.props,
94
- onChange = _this$props.onChange,
95
- points = _this$props.points;
96
- var update = (0, _toConsumableArray2["default"])(points);
97
- var overlapPoint = !!(points || []).find(function (p) {
98
- return (0, _utils.equalPoints)(p, to);
99
- });
100
- if ((0, _utils.equalPoints)(from, to) || overlapPoint) {
101
- return;
102
- }
103
- if (points[index].label) {
104
- to.label = points[index].label;
105
- }
106
- update.splice(index, 1, to);
107
- onChange(update);
108
- });
109
- (0, _defineProperty2["default"])(_this, "dragLine", function (existing, next) {
110
- log('[dragLine]: ', existing, next);
111
- var onChange = _this.props.onChange;
112
- if (existing.from.label) {
113
- next.from.label = existing.from.label;
114
- }
115
- if (existing.to.label) {
116
- next.to.label = existing.to.label;
117
- }
118
- var points = swap(_this.props.points, existing.from, next.from, existing.to, next.to);
119
- onChange(points);
120
- });
121
- (0, _defineProperty2["default"])(_this, "dragPoly", function (existing, next) {
122
- log('[dragPoly] ', existing, next);
123
- var onChange = _this.props.onChange;
124
- next.forEach(function (point, index) {
125
- if (existing[index].label) {
126
- next[index].label = existing[index].label;
127
- }
128
- });
129
- onChange(next);
130
- });
131
- (0, _defineProperty2["default"])(_this, "close", function () {
132
- var _this$props2 = _this.props,
133
- points = _this$props2.points,
134
- onClosePolygon = _this$props2.onClosePolygon;
135
- log('[close] ...');
136
- if (points.length >= 3) {
137
- onClosePolygon();
138
- } else {
139
- log('[close] - nope');
140
- }
141
- });
142
- (0, _defineProperty2["default"])(_this, "labelChange", function (point, index) {
143
- var _this$props3 = _this.props,
144
- points = _this$props3.points,
145
- onChangeProps = _this$props3.onChangeProps;
146
- var updatedPoint = _objectSpread({}, point);
147
- if (!point.label || (0, _isEmpty["default"])(point.label)) {
148
- delete updatedPoint.label;
149
- }
150
- var update = (0, _toConsumableArray2["default"])(points);
151
- update.splice(index, 1, updatedPoint);
152
- onChangeProps(update);
153
- });
154
- (0, _defineProperty2["default"])(_this, "clickPoint", function (point, index, data) {
155
- var _this$props4 = _this.props,
156
- closed = _this$props4.closed,
157
- disabled = _this$props4.disabled,
158
- onClick = _this$props4.onClick,
159
- isToolActive = _this$props4.isToolActive,
160
- labelModeEnabled = _this$props4.labelModeEnabled,
161
- onChangeProps = _this$props4.onChangeProps,
162
- onChangeLabelProps = _this$props4.onChangeLabelProps,
163
- points = _this$props4.points;
164
- if (labelModeEnabled) {
165
- if (disabled) {
166
- return;
167
- }
168
- if (points && index === points.length) {
169
- var _getRightestPoints = (0, _utils.getRightestPoints)(points),
170
- a = _getRightestPoints.a,
171
- b = _getRightestPoints.b;
172
- var middle = _objectSpread(_objectSpread({
173
- label: ''
174
- }, point), (0, _utils.getMiddleOfTwoPoints)(a, b));
175
- onChangeLabelProps(middle);
176
- } else {
177
- var update = (0, _toConsumableArray2["default"])(points);
178
- update.splice(index, 1, _objectSpread({
179
- label: ''
180
- }, point));
181
- onChangeProps(update);
182
- }
183
- if (_this.input[index]) {
184
- _this.input[index].focus();
185
- }
186
- return;
187
- }
188
- if (isToolActive && !closed && index === 0) {
189
- _this.close();
190
- return;
191
- }
192
- onClick(point || data);
193
- });
194
- // IMPORTANT, do not remove
195
- (0, _defineProperty2["default"])(_this, "input", {});
196
- return _this;
197
- }
198
- (0, _inherits2["default"])(RawBaseComponent, _React$Component);
199
- return (0, _createClass2["default"])(RawBaseComponent, [{
200
- key: "render",
201
- value: function render() {
202
- var _this2 = this;
203
- var _this$props5 = this.props,
204
- closed = _this$props5.closed,
205
- graphProps = _this$props5.graphProps,
206
- onChangeLabelProps = _this$props5.onChangeLabelProps,
207
- points = _this$props5.points,
208
- middle = _this$props5.middle,
209
- labelNode = _this$props5.labelNode,
210
- labelModeEnabled = _this$props5.labelModeEnabled,
211
- _this$props5$isSoluti = _this$props5.isSolution,
212
- isSolution = _this$props5$isSoluti === void 0 ? false : _this$props5$isSoluti;
213
- var polygonLabelIndex = points && points.length || 0;
214
- if (labelNode && middle && Object.prototype.hasOwnProperty.call(middle, 'label')) {
215
- /*#__PURE__*/_reactDom["default"].createPortal(/*#__PURE__*/_react["default"].createElement(_markLabel["default"], {
216
- inputRef: function inputRef(r) {
217
- return _this2.input[polygonLabelIndex] = r;
218
- },
219
- disabled: !labelModeEnabled,
220
- mark: middle,
221
- graphProps: graphProps,
222
- onChange: function onChange(label) {
223
- return onChangeLabelProps(_objectSpread(_objectSpread({}, middle), {}, {
224
- label: label
225
- }));
226
- }
227
- }), labelNode);
228
- }
229
- return /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_polygon["default"], {
230
- points: points,
231
- closed: closed,
232
- isSolution: isSolution,
233
- graphProps: graphProps,
234
- onClick: this.clickPoint.bind(this, middle, polygonLabelIndex)
235
- })));
236
- }
237
- }]);
238
- }(_react["default"].Component);
239
- (0, _defineProperty2["default"])(RawBaseComponent, "propTypes", {
240
- className: _propTypes["default"].string,
241
- disabled: _propTypes["default"].bool,
242
- correctness: _propTypes["default"].string,
243
- points: _propTypes["default"].arrayOf(_plot.types.PointType),
244
- closed: _propTypes["default"].bool,
245
- isSolution: _propTypes["default"].bool,
246
- coordinatesOnHover: _propTypes["default"].bool,
247
- onChange: _propTypes["default"].func.isRequired,
248
- onClosePolygon: _propTypes["default"].func.isRequired,
249
- onDragStart: _propTypes["default"].func,
250
- onDragStop: _propTypes["default"].func,
251
- onClick: _propTypes["default"].func,
252
- graphProps: _plot.types.GraphPropsType.isRequired,
253
- isToolActive: _propTypes["default"].bool,
254
- middle: _propTypes["default"].object,
255
- labelNode: _propTypes["default"].object,
256
- labelModeEnabled: _propTypes["default"].bool,
257
- onChangeLabelProps: _propTypes["default"].func,
258
- onChangeProps: _propTypes["default"].func
259
- });
260
- (0, _defineProperty2["default"])(RawBaseComponent, "defaultProps", {
261
- points: []
262
- });
263
- var BaseComponent = exports.BaseComponent = RawBaseComponent;
264
- var Component = exports["default"] = /*#__PURE__*/function (_React$Component2) {
265
- function Component(props) {
266
- var _this3;
267
- (0, _classCallCheck2["default"])(this, Component);
268
- _this3 = _callSuper(this, Component, [props]);
269
- (0, _defineProperty2["default"])(_this3, "change", function (points) {
270
- var middle = _this3.props.mark.middle;
271
- var mark = _objectSpread(_objectSpread({}, _this3.state.mark), {}, {
272
- points: points
273
- });
274
- if (middle) {
275
- var _getRightestPoints2 = (0, _utils.getRightestPoints)(points),
276
- a = _getRightestPoints2.a,
277
- b = _getRightestPoints2.b;
278
- mark.middle = _objectSpread(_objectSpread({}, middle), (0, _utils.getMiddleOfTwoPoints)(a, b));
279
- }
280
- _this3.setState({
281
- mark: mark
282
- });
283
- });
284
- (0, _defineProperty2["default"])(_this3, "changeProps", function (points) {
285
- var mark = _objectSpread(_objectSpread({}, _this3.props.mark), {}, {
286
- points: points
287
- });
288
- _this3.props.onChange(_this3.props.mark, mark);
289
- });
290
- (0, _defineProperty2["default"])(_this3, "changeLabelProps", function (point) {
291
- var _this3$props = _this3.props,
292
- mark = _this3$props.mark,
293
- onChange = _this3$props.onChange;
294
- var middle = _objectSpread(_objectSpread({}, mark.middle), point);
295
- onChange(mark, _objectSpread(_objectSpread({}, mark), {}, {
296
- middle: middle
297
- }));
298
- });
299
- (0, _defineProperty2["default"])(_this3, "closePolygon", function () {
300
- log('[closePolygon] ...');
301
- var _this3$props2 = _this3.props,
302
- onComplete = _this3$props2.onComplete,
303
- mark = _this3$props2.mark;
304
- var update = _objectSpread(_objectSpread({}, mark), {}, {
305
- closed: true
306
- });
307
- onComplete(mark, update);
308
- });
309
- (0, _defineProperty2["default"])(_this3, "dragStart", function () {
310
- return _this3.setState({
311
- mark: _this3.props.mark
312
- });
313
- });
314
- (0, _defineProperty2["default"])(_this3, "dragStop", function () {
315
- var onChange = _this3.props.onChange;
316
- var m = _objectSpread({}, _this3.state.mark);
317
- _this3.setState({
318
- mark: undefined
319
- }, function () {
320
- onChange(_this3.props.mark, m);
321
- });
322
- });
323
- _this3.state = {};
324
- return _this3;
325
- }
326
- (0, _inherits2["default"])(Component, _React$Component2);
327
- return (0, _createClass2["default"])(Component, [{
328
- key: "render",
329
- value: function render() {
330
- var _this$props6 = this.props,
331
- coordinatesOnHover = _this$props6.coordinatesOnHover,
332
- mark = _this$props6.mark,
333
- graphProps = _this$props6.graphProps,
334
- onClick = _this$props6.onClick,
335
- isToolActive = _this$props6.isToolActive,
336
- labelNode = _this$props6.labelNode,
337
- labelModeEnabled = _this$props6.labelModeEnabled;
338
- var stateMark = this.state.mark;
339
- return /*#__PURE__*/_react["default"].createElement(BaseComponent, (0, _extends2["default"])({}, stateMark || mark, {
340
- coordinatesOnHover: coordinatesOnHover,
341
- onChange: this.change,
342
- onChangeLabelProps: this.changeLabelProps,
343
- onChangeProps: this.changeProps,
344
- onClosePolygon: this.closePolygon,
345
- onDragStart: this.dragStart,
346
- onDragStop: this.dragStop,
347
- onClick: onClick,
348
- graphProps: graphProps,
349
- isToolActive: isToolActive,
350
- labelNode: labelNode,
351
- labelModeEnabled: labelModeEnabled
352
- }));
353
- }
354
- }]);
355
- }(_react["default"].Component);
356
- (0, _defineProperty2["default"])(Component, "propTypes", _objectSpread(_objectSpread({}, _types.ToolPropTypeFields), {}, {
357
- graphProps: _plot.types.GraphPropsType.isRequired
358
- }));
359
- (0, _defineProperty2["default"])(Component, "defaultProps", {});
360
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfdHlwZXMiLCJfY2h1bmsiLCJfaW5pdGlhbCIsIl9kZWJ1ZyIsIl9wb2x5Z29uIiwiX3Bsb3QiLCJfaW52YXJpYW50IiwiX3JlYWN0RG9tIiwiX21hcmtMYWJlbCIsIl9pc0VtcHR5IiwiX3V0aWxzIiwiX2NhbGxTdXBlciIsInQiLCJvIiwiZSIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsImNhbGwiLCJvd25LZXlzIiwiciIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJsb2ciLCJkZWJ1ZyIsImJ1aWxkTGluZXMiLCJleHBvcnRzIiwicG9pbnRzIiwiY2xvc2VkIiwiZXhwYW5kZWQiLCJyZWR1Y2UiLCJhY2MiLCJwIiwiaW5kZXgiLCJpc0xhc3QiLCJuZXh0IiwiYWxsIiwiY2h1bmsiLCJtYXAiLCJfcmVmIiwiX3JlZjIiLCJfc2xpY2VkVG9BcnJheTIiLCJmcm9tIiwidG8iLCJpbml0aWFsIiwic3dhcCIsImFyciIsIl9sZW4iLCJyZXN0IiwiQXJyYXkiLCJfa2V5IiwicGFpcnMiLCJwciIsIl9wciIsInJlcGxhY2VtZW50IiwiaW52YXJpYW50IiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJzcGxpY2UiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiUmF3QmFzZUNvbXBvbmVudCIsIl9SZWFjdCRDb21wb25lbnQiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJfbGVuMiIsImFyZ3MiLCJfa2V5MiIsImNvbmNhdCIsIl90aGlzJHByb3BzIiwicHJvcHMiLCJvbkNoYW5nZSIsInVwZGF0ZSIsIm92ZXJsYXBQb2ludCIsImZpbmQiLCJlcXVhbFBvaW50cyIsImxhYmVsIiwiZXhpc3RpbmciLCJwb2ludCIsIl90aGlzJHByb3BzMiIsIm9uQ2xvc2VQb2x5Z29uIiwiX3RoaXMkcHJvcHMzIiwib25DaGFuZ2VQcm9wcyIsInVwZGF0ZWRQb2ludCIsImlzRW1wdHkiLCJkYXRhIiwiX3RoaXMkcHJvcHM0IiwiZGlzYWJsZWQiLCJvbkNsaWNrIiwiaXNUb29sQWN0aXZlIiwibGFiZWxNb2RlRW5hYmxlZCIsIm9uQ2hhbmdlTGFiZWxQcm9wcyIsIl9nZXRSaWdodGVzdFBvaW50cyIsImdldFJpZ2h0ZXN0UG9pbnRzIiwiYSIsImIiLCJtaWRkbGUiLCJnZXRNaWRkbGVPZlR3b1BvaW50cyIsImlucHV0IiwiZm9jdXMiLCJjbG9zZSIsIl9pbmhlcml0czIiLCJfY3JlYXRlQ2xhc3MyIiwia2V5IiwidmFsdWUiLCJyZW5kZXIiLCJfdGhpczIiLCJfdGhpcyRwcm9wczUiLCJncmFwaFByb3BzIiwibGFiZWxOb2RlIiwiX3RoaXMkcHJvcHM1JGlzU29sdXRpIiwiaXNTb2x1dGlvbiIsInBvbHlnb25MYWJlbEluZGV4IiwiaGFzT3duUHJvcGVydHkiLCJSZWFjdERPTSIsImNyZWF0ZVBvcnRhbCIsImNyZWF0ZUVsZW1lbnQiLCJpbnB1dFJlZiIsIm1hcmsiLCJGcmFnbWVudCIsImNsaWNrUG9pbnQiLCJiaW5kIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjbGFzc05hbWUiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJib29sIiwiY29ycmVjdG5lc3MiLCJhcnJheU9mIiwidHlwZXMiLCJQb2ludFR5cGUiLCJjb29yZGluYXRlc09uSG92ZXIiLCJmdW5jIiwiaXNSZXF1aXJlZCIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnU3RvcCIsIkdyYXBoUHJvcHNUeXBlIiwib2JqZWN0IiwiQmFzZUNvbXBvbmVudCIsIl9SZWFjdCRDb21wb25lbnQyIiwiX3RoaXMzIiwic3RhdGUiLCJfZ2V0UmlnaHRlc3RQb2ludHMyIiwic2V0U3RhdGUiLCJfdGhpczMkcHJvcHMiLCJfdGhpczMkcHJvcHMyIiwib25Db21wbGV0ZSIsIm0iLCJ1bmRlZmluZWQiLCJfdGhpcyRwcm9wczYiLCJzdGF0ZU1hcmsiLCJfZXh0ZW5kczIiLCJjaGFuZ2UiLCJjaGFuZ2VMYWJlbFByb3BzIiwiY2hhbmdlUHJvcHMiLCJjbG9zZVBvbHlnb24iLCJkcmFnU3RhcnQiLCJkcmFnU3RvcCIsIlRvb2xQcm9wVHlwZUZpZWxkcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29scy9wb2x5Z29uL2NvbXBvbmVudC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBUb29sUHJvcFR5cGVGaWVsZHMgfSBmcm9tICcuLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IGNodW5rIGZyb20gJ2xvZGFzaC9jaHVuayc7XG5pbXBvcnQgaW5pdGlhbCBmcm9tICdsb2Rhc2gvaW5pdGlhbCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IERyYWdnYWJsZVBvbHlnb24gZnJvbSAnLi9wb2x5Z29uJztcbmltcG9ydCB7IHR5cGVzIH0gZnJvbSAnQHBpZS1saWIvcGxvdCc7XG5pbXBvcnQgaW52YXJpYW50IGZyb20gJ2ludmFyaWFudCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBNYXJrTGFiZWwgZnJvbSAnLi4vLi4vbWFyay1sYWJlbCc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgeyBnZXRNaWRkbGVPZlR3b1BvaW50cywgZ2V0UmlnaHRlc3RQb2ludHMsIGVxdWFsUG9pbnRzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5jb25zdCBsb2cgPSBkZWJ1ZygncGllLWxpYjpncmFwaGluZy1zb2x1dGlvbi1zZXQ6cG9seWdvbicpO1xuXG5leHBvcnQgY29uc3QgYnVpbGRMaW5lcyA9IChwb2ludHMsIGNsb3NlZCkgPT4ge1xuICBjb25zdCBleHBhbmRlZCA9IHBvaW50cy5yZWR1Y2UoKGFjYywgcCwgaW5kZXgpID0+IHtcbiAgICBhY2MucHVzaCh7IC4uLnAsIGluZGV4IH0pO1xuXG4gICAgY29uc3QgaXNMYXN0ID0gaW5kZXggPT09IHBvaW50cy5sZW5ndGggLSAxO1xuICAgIGNvbnN0IG5leHQgPSBpc0xhc3QgPyAwIDogaW5kZXggKyAxO1xuXG4gICAgYWNjLnB1c2goeyAuLi5wb2ludHNbbmV4dF0sIGluZGV4OiBuZXh0IH0pO1xuXG4gICAgcmV0dXJuIGFjYztcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGFsbCA9IGNodW5rKGV4cGFuZGVkLCAyKS5tYXAoKFtmcm9tLCB0b10pID0+IHtcbiAgICByZXR1cm4geyBmcm9tLCB0byB9O1xuICB9KTtcblxuICByZXR1cm4gY2xvc2VkID8gYWxsIDogaW5pdGlhbChhbGwpO1xufTtcblxuZXhwb3J0IGNvbnN0IHN3YXAgPSAoYXJyLCAuLi5yZXN0KSA9PiB7XG4gIGNvbnN0IHBhaXJzID0gY2h1bmsocmVzdCwgMik7XG5cbiAgcmV0dXJuIHBhaXJzLnJlZHVjZShcbiAgICAoYWNjLCBwcikgPT4ge1xuICAgICAgaWYgKHByLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBsZXQgW2UsIHJlcGxhY2VtZW50XSA9IHByO1xuXG4gICAgICAgIGludmFyaWFudChOdW1iZXIuaXNGaW5pdGUoZS5pbmRleCksICdJbmRleCBtdXN0IGJlIGRlZmluZWQnKTtcblxuICAgICAgICBjb25zdCBpbmRleCA9IGUuaW5kZXg7XG4gICAgICAgIC8vIGNvbnN0IGkgPSBhY2MuZmluZEluZGV4KHB0ID0+IHB0LnggPT09IGUueCAmJiBwdC55ID09PSBlLnkpO1xuXG4gICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgYWNjLnNwbGljZShpbmRleCwgMSwgcmVwbGFjZW1lbnQpO1xuXG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfVxuICAgIH0sXG4gICAgWy4uLmFycl0sXG4gICk7XG59O1xuXG5leHBvcnQgY2xhc3MgUmF3QmFzZUNvbXBvbmVudCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjb3JyZWN0bmVzczogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBwb2ludHM6IFByb3BUeXBlcy5hcnJheU9mKHR5cGVzLlBvaW50VHlwZSksXG4gICAgY2xvc2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpc1NvbHV0aW9uOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjb29yZGluYXRlc09uSG92ZXI6IFByb3BUeXBlcy5ib29sLFxuICAgIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uQ2xvc2VQb2x5Z29uOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uRHJhZ1N0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkRyYWdTdG9wOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBncmFwaFByb3BzOiB0eXBlcy5HcmFwaFByb3BzVHlwZS5pc1JlcXVpcmVkLFxuICAgIGlzVG9vbEFjdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgbWlkZGxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGxhYmVsTm9kZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBsYWJlbE1vZGVFbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBvbkNoYW5nZUxhYmVsUHJvcHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uQ2hhbmdlUHJvcHM6IFByb3BUeXBlcy5mdW5jLFxuICB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgcG9pbnRzOiBbXSxcbiAgfTtcblxuICBkcmFnUG9pbnQgPSAoaW5kZXgsIGZyb20sIHRvKSA9PiB7XG4gICAgbG9nKCdbZHJhZ1BvaW50XSBmcm9tLCB0bzonLCBmcm9tLCB0byk7XG4gICAgY29uc3QgeyBvbkNoYW5nZSwgcG9pbnRzIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHVwZGF0ZSA9IFsuLi5wb2ludHNdO1xuICAgIGNvbnN0IG92ZXJsYXBQb2ludCA9ICEhKHBvaW50cyB8fCBbXSkuZmluZCgocCkgPT4gZXF1YWxQb2ludHMocCwgdG8pKTtcblxuICAgIGlmIChlcXVhbFBvaW50cyhmcm9tLCB0bykgfHwgb3ZlcmxhcFBvaW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHBvaW50c1tpbmRleF0ubGFiZWwpIHtcbiAgICAgIHRvLmxhYmVsID0gcG9pbnRzW2luZGV4XS5sYWJlbDtcbiAgICB9XG5cbiAgICB1cGRhdGUuc3BsaWNlKGluZGV4LCAxLCB0byk7XG4gICAgb25DaGFuZ2UodXBkYXRlKTtcbiAgfTtcblxuICBkcmFnTGluZSA9IChleGlzdGluZywgbmV4dCkgPT4ge1xuICAgIGxvZygnW2RyYWdMaW5lXTogJywgZXhpc3RpbmcsIG5leHQpO1xuICAgIGNvbnN0IHsgb25DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBpZiAoZXhpc3RpbmcuZnJvbS5sYWJlbCkge1xuICAgICAgbmV4dC5mcm9tLmxhYmVsID0gZXhpc3RpbmcuZnJvbS5sYWJlbDtcbiAgICB9XG5cbiAgICBpZiAoZXhpc3RpbmcudG8ubGFiZWwpIHtcbiAgICAgIG5leHQudG8ubGFiZWwgPSBleGlzdGluZy50by5sYWJlbDtcbiAgICB9XG5cbiAgICBjb25zdCBwb2ludHMgPSBzd2FwKHRoaXMucHJvcHMucG9pbnRzLCBleGlzdGluZy5mcm9tLCBuZXh0LmZyb20sIGV4aXN0aW5nLnRvLCBuZXh0LnRvKTtcbiAgICBvbkNoYW5nZShwb2ludHMpO1xuICB9O1xuXG4gIGRyYWdQb2x5ID0gKGV4aXN0aW5nLCBuZXh0KSA9PiB7XG4gICAgbG9nKCdbZHJhZ1BvbHldICcsIGV4aXN0aW5nLCBuZXh0KTtcbiAgICBjb25zdCB7IG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgbmV4dC5mb3JFYWNoKChwb2ludCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChleGlzdGluZ1tpbmRleF0ubGFiZWwpIHtcbiAgICAgICAgbmV4dFtpbmRleF0ubGFiZWwgPSBleGlzdGluZ1tpbmRleF0ubGFiZWw7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBvbkNoYW5nZShuZXh0KTtcbiAgfTtcblxuICBjbG9zZSA9ICgpID0+IHtcbiAgICBjb25zdCB7IHBvaW50cywgb25DbG9zZVBvbHlnb24gfSA9IHRoaXMucHJvcHM7XG4gICAgbG9nKCdbY2xvc2VdIC4uLicpO1xuXG4gICAgaWYgKHBvaW50cy5sZW5ndGggPj0gMykge1xuICAgICAgb25DbG9zZVBvbHlnb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nKCdbY2xvc2VdIC0gbm9wZScpO1xuICAgIH1cbiAgfTtcblxuICBsYWJlbENoYW5nZSA9IChwb2ludCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCB7IHBvaW50cywgb25DaGFuZ2VQcm9wcyB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB1cGRhdGVkUG9pbnQgPSB7IC4uLnBvaW50IH07XG5cbiAgICBpZiAoIXBvaW50LmxhYmVsIHx8IGlzRW1wdHkocG9pbnQubGFiZWwpKSB7XG4gICAgICBkZWxldGUgdXBkYXRlZFBvaW50LmxhYmVsO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZSA9IFsuLi5wb2ludHNdO1xuXG4gICAgdXBkYXRlLnNwbGljZShpbmRleCwgMSwgdXBkYXRlZFBvaW50KTtcbiAgICBvbkNoYW5nZVByb3BzKHVwZGF0ZSk7XG4gIH07XG5cbiAgY2xpY2tQb2ludCA9IChwb2ludCwgaW5kZXgsIGRhdGEpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBjbG9zZWQsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBpc1Rvb2xBY3RpdmUsXG4gICAgICBsYWJlbE1vZGVFbmFibGVkLFxuICAgICAgb25DaGFuZ2VQcm9wcyxcbiAgICAgIG9uQ2hhbmdlTGFiZWxQcm9wcyxcbiAgICAgIHBvaW50cyxcbiAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmIChsYWJlbE1vZGVFbmFibGVkKSB7XG4gICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAocG9pbnRzICYmIGluZGV4ID09PSBwb2ludHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHsgYSwgYiB9ID0gZ2V0UmlnaHRlc3RQb2ludHMocG9pbnRzKTtcbiAgICAgICAgY29uc3QgbWlkZGxlID0geyBsYWJlbDogJycsIC4uLnBvaW50LCAuLi5nZXRNaWRkbGVPZlR3b1BvaW50cyhhLCBiKSB9O1xuXG4gICAgICAgIG9uQ2hhbmdlTGFiZWxQcm9wcyhtaWRkbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdXBkYXRlID0gWy4uLnBvaW50c107XG5cbiAgICAgICAgdXBkYXRlLnNwbGljZShpbmRleCwgMSwgeyBsYWJlbDogJycsIC4uLnBvaW50IH0pO1xuICAgICAgICBvbkNoYW5nZVByb3BzKHVwZGF0ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmlucHV0W2luZGV4XSkge1xuICAgICAgICB0aGlzLmlucHV0W2luZGV4XS5mb2N1cygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzVG9vbEFjdGl2ZSAmJiAhY2xvc2VkICYmIGluZGV4ID09PSAwKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgb25DbGljayhwb2ludCB8fCBkYXRhKTtcbiAgfTtcblxuICAvLyBJTVBPUlRBTlQsIGRvIG5vdCByZW1vdmVcbiAgaW5wdXQgPSB7fTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgY2xvc2VkLFxuICAgICAgZ3JhcGhQcm9wcyxcbiAgICAgIG9uQ2hhbmdlTGFiZWxQcm9wcyxcbiAgICAgIHBvaW50cyxcbiAgICAgIG1pZGRsZSxcbiAgICAgIGxhYmVsTm9kZSxcbiAgICAgIGxhYmVsTW9kZUVuYWJsZWQsXG4gICAgICBpc1NvbHV0aW9uID0gZmFsc2UsXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgcG9seWdvbkxhYmVsSW5kZXggPSAocG9pbnRzICYmIHBvaW50cy5sZW5ndGgpIHx8IDA7XG4gICAgaWYgKGxhYmVsTm9kZSAmJiBtaWRkbGUgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1pZGRsZSwgJ2xhYmVsJykpIHtcbiAgICAgIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgICAgPE1hcmtMYWJlbFxuICAgICAgICAgIGlucHV0UmVmPXsocikgPT4gKHRoaXMuaW5wdXRbcG9seWdvbkxhYmVsSW5kZXhdID0gcil9XG4gICAgICAgICAgZGlzYWJsZWQ9eyFsYWJlbE1vZGVFbmFibGVkfVxuICAgICAgICAgIG1hcms9e21pZGRsZX1cbiAgICAgICAgICBncmFwaFByb3BzPXtncmFwaFByb3BzfVxuICAgICAgICAgIG9uQ2hhbmdlPXsobGFiZWwpID0+IG9uQ2hhbmdlTGFiZWxQcm9wcyh7IC4uLm1pZGRsZSwgbGFiZWwgfSl9XG4gICAgICAgIC8+LFxuICAgICAgICBsYWJlbE5vZGUsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPGc+XG4gICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICA8RHJhZ2dhYmxlUG9seWdvblxuICAgICAgICAgICAgcG9pbnRzPXtwb2ludHN9XG4gICAgICAgICAgICBjbG9zZWQ9e2Nsb3NlZH1cbiAgICAgICAgICAgIGlzU29sdXRpb249e2lzU29sdXRpb259XG4gICAgICAgICAgICBncmFwaFByb3BzPXtncmFwaFByb3BzfVxuICAgICAgICAgICAgb25DbGljaz17dGhpcy5jbGlja1BvaW50LmJpbmQodGhpcywgbWlkZGxlLCBwb2x5Z29uTGFiZWxJbmRleCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgIDwvZz5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBCYXNlQ29tcG9uZW50ID0gUmF3QmFzZUNvbXBvbmVudDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29tcG9uZW50IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAuLi5Ub29sUHJvcFR5cGVGaWVsZHMsXG4gICAgZ3JhcGhQcm9wczogdHlwZXMuR3JhcGhQcm9wc1R5cGUuaXNSZXF1aXJlZCxcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge307XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHt9O1xuICB9XG5cbiAgY2hhbmdlID0gKHBvaW50cykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG1hcms6IHsgbWlkZGxlIH0sXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgbWFyayA9IHsgLi4udGhpcy5zdGF0ZS5tYXJrLCBwb2ludHMgfTtcblxuICAgIGlmIChtaWRkbGUpIHtcbiAgICAgIGNvbnN0IHsgYSwgYiB9ID0gZ2V0UmlnaHRlc3RQb2ludHMocG9pbnRzKTtcblxuICAgICAgbWFyay5taWRkbGUgPSB7IC4uLm1pZGRsZSwgLi4uZ2V0TWlkZGxlT2ZUd29Qb2ludHMoYSwgYikgfTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHsgbWFyayB9KTtcbiAgfTtcblxuICBjaGFuZ2VQcm9wcyA9IChwb2ludHMpID0+IHtcbiAgICBjb25zdCBtYXJrID0geyAuLi50aGlzLnByb3BzLm1hcmssIHBvaW50cyB9O1xuXG4gICAgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLnByb3BzLm1hcmssIG1hcmspO1xuICB9O1xuXG4gIGNoYW5nZUxhYmVsUHJvcHMgPSAocG9pbnQpID0+IHtcbiAgICBjb25zdCB7IG1hcmssIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IG1pZGRsZSA9IHsgLi4ubWFyay5taWRkbGUsIC4uLnBvaW50IH07XG5cbiAgICBvbkNoYW5nZShtYXJrLCB7IC4uLm1hcmssIG1pZGRsZSB9KTtcbiAgfTtcblxuICBjbG9zZVBvbHlnb24gPSAoKSA9PiB7XG4gICAgbG9nKCdbY2xvc2VQb2x5Z29uXSAuLi4nKTtcbiAgICBjb25zdCB7IG9uQ29tcGxldGUsIG1hcmsgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgdXBkYXRlID0geyAuLi5tYXJrLCBjbG9zZWQ6IHRydWUgfTtcblxuICAgIG9uQ29tcGxldGUobWFyaywgdXBkYXRlKTtcbiAgfTtcblxuICBkcmFnU3RhcnQgPSAoKSA9PiB0aGlzLnNldFN0YXRlKHsgbWFyazogdGhpcy5wcm9wcy5tYXJrIH0pO1xuXG4gIGRyYWdTdG9wID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgb25DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgbSA9IHsgLi4udGhpcy5zdGF0ZS5tYXJrIH07XG5cbiAgICB0aGlzLnNldFN0YXRlKHsgbWFyazogdW5kZWZpbmVkIH0sICgpID0+IHtcbiAgICAgIG9uQ2hhbmdlKHRoaXMucHJvcHMubWFyaywgbSk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY29vcmRpbmF0ZXNPbkhvdmVyLCBtYXJrLCBncmFwaFByb3BzLCBvbkNsaWNrLCBpc1Rvb2xBY3RpdmUsIGxhYmVsTm9kZSwgbGFiZWxNb2RlRW5hYmxlZCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IG1hcms6IHN0YXRlTWFyayB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIHJldHVybiAoXG4gICAgICA8QmFzZUNvbXBvbmVudFxuICAgICAgICB7Li4uKHN0YXRlTWFyayB8fCBtYXJrKX1cbiAgICAgICAgY29vcmRpbmF0ZXNPbkhvdmVyPXtjb29yZGluYXRlc09uSG92ZXJ9XG4gICAgICAgIG9uQ2hhbmdlPXt0aGlzLmNoYW5nZX1cbiAgICAgICAgb25DaGFuZ2VMYWJlbFByb3BzPXt0aGlzLmNoYW5nZUxhYmVsUHJvcHN9XG4gICAgICAgIG9uQ2hhbmdlUHJvcHM9e3RoaXMuY2hhbmdlUHJvcHN9XG4gICAgICAgIG9uQ2xvc2VQb2x5Z29uPXt0aGlzLmNsb3NlUG9seWdvbn1cbiAgICAgICAgb25EcmFnU3RhcnQ9e3RoaXMuZHJhZ1N0YXJ0fVxuICAgICAgICBvbkRyYWdTdG9wPXt0aGlzLmRyYWdTdG9wfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBncmFwaFByb3BzPXtncmFwaFByb3BzfVxuICAgICAgICBpc1Rvb2xBY3RpdmU9e2lzVG9vbEFjdGl2ZX1cbiAgICAgICAgbGFiZWxOb2RlPXtsYWJlbE5vZGV9XG4gICAgICAgIGxhYmVsTW9kZUVuYWJsZWQ9e2xhYmVsTW9kZUVuYWJsZWR9XG4gICAgICAvPlxuICAgICk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE1BQUEs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
@@ -1 +0,0 @@
1
- {"version":3,"file":"component.js","names":["_react","_interopRequireDefault","require","_propTypes","_types","_chunk","_initial","_debug","_polygon","_plot","_invariant","_reactDom","_markLabel","_isEmpty","_utils","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","ownKeys","r","Object","keys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","enumerable","push","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","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","onChangeLabelProps","_getRightestPoints","getRightestPoints","a","b","middle","getMiddleOfTwoPoints","input","focus","close","_inherits2","_createClass2","key","value","render","_this2","_this$props5","graphProps","labelNode","_this$props5$isSoluti","isSolution","polygonLabelIndex","hasOwnProperty","ReactDOM","createPortal","createElement","inputRef","mark","Fragment","clickPoint","bind","React","Component","className","PropTypes","string","bool","correctness","arrayOf","types","PointType","coordinatesOnHover","func","isRequired","onDragStart","onDragStop","GraphPropsType","object","BaseComponent","_React$Component2","_this3","state","_getRightestPoints2","setState","_this3$props","_this3$props2","onComplete","m","undefined","_this$props6","stateMark","_extends2","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 chunk from 'lodash/chunk';\nimport initial from 'lodash/initial';\nimport debug from 'debug';\nimport DraggablePolygon 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-solution-set: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 className: PropTypes.string,\n disabled: PropTypes.bool,\n correctness: PropTypes.string,\n points: PropTypes.arrayOf(types.PointType),\n closed: PropTypes.bool,\n isSolution: 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 {\n closed,\n disabled,\n onClick,\n isToolActive,\n labelModeEnabled,\n onChangeProps,\n onChangeLabelProps,\n points,\n } = this.props;\n\n if (labelModeEnabled) {\n if (disabled) {\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 graphProps,\n onChangeLabelProps,\n points,\n middle,\n labelNode,\n labelModeEnabled,\n isSolution = false,\n } = this.props;\n const polygonLabelIndex = (points && points.length) || 0;\n if (labelNode && middle && Object.prototype.hasOwnProperty.call(middle, 'label')) {\n 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 return (\n <g>\n <React.Fragment>\n <DraggablePolygon\n points={points}\n closed={closed}\n isSolution={isSolution}\n graphProps={graphProps}\n onClick={this.clickPoint.bind(this, middle, polygonLabelIndex)}\n />\n </React.Fragment>\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 { 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"],"mappings":"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","ignoreList":[]}
@@ -1,89 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.tool = exports.addPointToArray = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
- var _component = _interopRequireDefault(require("./component"));
11
- var _utils = require("../../utils");
12
- 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; }
13
- 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; }
14
- var addPointToArray = exports.addPointToArray = function addPointToArray(point, arr) {
15
- arr = arr || [];
16
- if (arr.length === 0) {
17
- return {
18
- points: [point],
19
- closed: false
20
- };
21
- } else if (arr.length === 1) {
22
- if ((0, _utils.equalPoints)(point, arr[0])) {
23
- return {
24
- points: arr,
25
- closed: false
26
- };
27
- } else {
28
- return {
29
- points: [].concat((0, _toConsumableArray2["default"])(arr), [point]),
30
- closed: false
31
- };
32
- }
33
- } else if (arr.length >= 2) {
34
- var closed = (0, _utils.equalPoints)(point, arr[0]);
35
- if (closed) {
36
- return {
37
- points: arr,
38
- closed: closed
39
- };
40
- } else {
41
- var hasPoint = !!arr.find(function (p) {
42
- return (0, _utils.equalPoints)(p, point);
43
- });
44
- if (hasPoint) {
45
- return {
46
- points: arr,
47
- closed: false
48
- };
49
- } else {
50
- return {
51
- points: [].concat((0, _toConsumableArray2["default"])(arr), [point]),
52
- closed: false
53
- };
54
- }
55
- }
56
- }
57
- };
58
- var tool = exports.tool = function tool() {
59
- return {
60
- type: 'polygon',
61
- Component: _component["default"],
62
- complete: function complete(data, mark) {
63
- return _objectSpread(_objectSpread({}, mark), {}, {
64
- building: false,
65
- closed: true
66
- });
67
- },
68
- addPoint: function addPoint(point, mark) {
69
- if (!mark) {
70
- return {
71
- type: 'polygon',
72
- points: [point],
73
- closed: false,
74
- building: true
75
- };
76
- } else {
77
- var _addPointToArray = addPointToArray(point, mark.points),
78
- closed = _addPointToArray.closed,
79
- points = _addPointToArray.points;
80
- return _objectSpread(_objectSpread({}, mark), {}, {
81
- closed: closed,
82
- points: points,
83
- building: !closed
84
- });
85
- }
86
- }
87
- };
88
- };
89
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tcG9uZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfdXRpbHMiLCJvd25LZXlzIiwiZSIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsImFkZFBvaW50VG9BcnJheSIsImV4cG9ydHMiLCJwb2ludCIsImFyciIsInBvaW50cyIsImNsb3NlZCIsImVxdWFsUG9pbnRzIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImhhc1BvaW50IiwiZmluZCIsInAiLCJ0b29sIiwidHlwZSIsIkNvbXBvbmVudCIsIlBvbHlnb24iLCJjb21wbGV0ZSIsImRhdGEiLCJtYXJrIiwiYnVpbGRpbmciLCJhZGRQb2ludCIsIl9hZGRQb2ludFRvQXJyYXkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvcG9seWdvbi9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUG9seWdvbiBmcm9tICcuL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBlcXVhbFBvaW50cyB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IGFkZFBvaW50VG9BcnJheSA9IChwb2ludCwgYXJyKSA9PiB7XG4gIGFyciA9IGFyciB8fCBbXTtcblxuICBpZiAoYXJyLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7IHBvaW50czogW3BvaW50XSwgY2xvc2VkOiBmYWxzZSB9O1xuICB9IGVsc2UgaWYgKGFyci5sZW5ndGggPT09IDEpIHtcbiAgICBpZiAoZXF1YWxQb2ludHMocG9pbnQsIGFyclswXSkpIHtcbiAgICAgIHJldHVybiB7IHBvaW50czogYXJyLCBjbG9zZWQ6IGZhbHNlIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IHBvaW50czogWy4uLmFyciwgcG9pbnRdLCBjbG9zZWQ6IGZhbHNlIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKGFyci5sZW5ndGggPj0gMikge1xuICAgIGNvbnN0IGNsb3NlZCA9IGVxdWFsUG9pbnRzKHBvaW50LCBhcnJbMF0pO1xuXG4gICAgaWYgKGNsb3NlZCkge1xuICAgICAgcmV0dXJuIHsgcG9pbnRzOiBhcnIsIGNsb3NlZCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBoYXNQb2ludCA9ICEhYXJyLmZpbmQoKHApID0+IGVxdWFsUG9pbnRzKHAsIHBvaW50KSk7XG5cbiAgICAgIGlmIChoYXNQb2ludCkge1xuICAgICAgICByZXR1cm4geyBwb2ludHM6IGFyciwgY2xvc2VkOiBmYWxzZSB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHsgcG9pbnRzOiBbLi4uYXJyLCBwb2ludF0sIGNsb3NlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0b29sID0gKCkgPT4gKHtcbiAgdHlwZTogJ3BvbHlnb24nLFxuICBDb21wb25lbnQ6IFBvbHlnb24sXG4gIGNvbXBsZXRlOiAoZGF0YSwgbWFyaykgPT4ge1xuICAgIHJldHVybiB7IC4uLm1hcmssIGJ1aWxkaW5nOiBmYWxzZSwgY2xvc2VkOiB0cnVlIH07XG4gIH0sXG4gIGFkZFBvaW50OiAocG9pbnQsIG1hcmspID0+IHtcbiAgICBpZiAoIW1hcmspIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdwb2x5Z29uJyxcbiAgICAgICAgcG9pbnRzOiBbcG9pbnRdLFxuICAgICAgICBjbG9zZWQ6IGZhbHNlLFxuICAgICAgICBidWlsZGluZzogdHJ1ZSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgY2xvc2VkLCBwb2ludHMgfSA9IGFkZFBvaW50VG9BcnJheShwb2ludCwgbWFyay5wb2ludHMpO1xuXG4gICAgICByZXR1cm4geyAuLi5tYXJrLCBjbG9zZWQsIHBvaW50cywgYnVpbGRpbmc6ICFjbG9zZWQgfTtcbiAgICB9XG4gIH0sXG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsSUFBQUEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQTBDLFNBQUFFLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBWixDQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEsQ0FBQVosQ0FBQSxJQUFBWSxTQUFBLENBQUFaLENBQUEsUUFBQUEsQ0FBQSxPQUFBRixPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxPQUFBYSxPQUFBLFdBQUFkLENBQUEsUUFBQWUsZ0JBQUEsYUFBQWhCLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLENBQUFELENBQUEsU0FBQUUsTUFBQSxDQUFBYyx5QkFBQSxHQUFBZCxNQUFBLENBQUFlLGdCQUFBLENBQUFsQixDQUFBLEVB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
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["_component","_interopRequireDefault","require","_utils","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","addPointToArray","exports","point","arr","points","closed","equalPoints","concat","_toConsumableArray2","hasPoint","find","p","tool","type","Component","Polygon","complete","data","mark","building","addPoint","_addPointToArray"],"sources":["../../../src/tools/polygon/index.js"],"sourcesContent":["import Polygon from './component';\nimport { equalPoints } from '../../utils';\n\nexport const addPointToArray = (point, arr) => {\n arr = arr || [];\n\n if (arr.length === 0) {\n return { points: [point], closed: false };\n } else if (arr.length === 1) {\n if (equalPoints(point, arr[0])) {\n return { points: arr, closed: false };\n } else {\n return { points: [...arr, point], closed: false };\n }\n } else if (arr.length >= 2) {\n const closed = equalPoints(point, arr[0]);\n\n if (closed) {\n return { points: arr, closed };\n } else {\n const hasPoint = !!arr.find((p) => equalPoints(p, point));\n\n if (hasPoint) {\n return { points: arr, closed: false };\n } else {\n return { points: [...arr, point], closed: false };\n }\n }\n }\n};\n\nexport const tool = () => ({\n type: 'polygon',\n Component: Polygon,\n complete: (data, mark) => {\n return { ...mark, building: false, closed: true };\n },\n addPoint: (point, mark) => {\n if (!mark) {\n return {\n type: 'polygon',\n points: [point],\n closed: false,\n building: true,\n };\n } else {\n const { closed, points } = addPointToArray(point, mark.points);\n\n return { ...mark, closed, points, building: !closed };\n }\n },\n});\n"],"mappings":"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","ignoreList":[]}