@pie-lib/graphing 4.0.23 → 4.0.24-beta.10
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 +0 -92
- package/lib/__tests__/bg.test.js +282 -0
- package/lib/__tests__/coordinates-label.test.js +276 -0
- package/lib/__tests__/graph-with-controls.test.js +275 -0
- package/lib/__tests__/graph.test.js +927 -0
- package/lib/__tests__/grid-setup.test.js +729 -0
- package/lib/__tests__/grid.test.js +29 -0
- package/lib/__tests__/key-legend.test.js +321 -0
- package/lib/__tests__/label-svg-icon.test.js +373 -0
- package/lib/__tests__/labels.test.js +61 -0
- package/lib/__tests__/mark-label.test.js +133 -0
- package/lib/__tests__/toggle-bar.test.js +197 -0
- package/lib/__tests__/tool-menu.test.js +151 -0
- package/lib/__tests__/undo-redo.test.js +31 -0
- package/lib/__tests__/use-debounce.test.js +24 -0
- package/lib/__tests__/utils.js +70 -0
- package/lib/__tests__/utils.test.js +123 -0
- package/lib/axis/__tests__/arrow.test.js +60 -0
- package/lib/axis/__tests__/axes.test.js +195 -0
- package/lib/container/__tests__/actions.test.js +108 -0
- package/lib/container/__tests__/index.test.js +503 -0
- package/lib/container/__tests__/marks.test.js +259 -0
- package/lib/container/__tests__/middleware.test.js +244 -0
- package/lib/container/__tests__/reducer.test.js +450 -0
- package/lib/mark-label.js +7 -197
- package/lib/mark-label.js.map +1 -1
- package/lib/tools/absolute/__tests__/component.test.js +65 -0
- package/lib/tools/circle/__tests__/bg-circle.test.js +33 -0
- package/lib/tools/circle/__tests__/component.test.js +615 -0
- package/lib/tools/circle/__tests__/index.test.js +576 -0
- package/lib/tools/circle/component.js +3 -34
- package/lib/tools/circle/component.js.map +1 -1
- package/lib/tools/exponential/__tests__/component.test.js +64 -0
- package/lib/tools/exponential/__tests__/index.test.js +828 -0
- package/lib/tools/line/__tests__/component.test.js +45 -0
- package/lib/tools/parabola/__tests__/component.test.js +64 -0
- package/lib/tools/parabola/__tests__/index.test.js +564 -0
- package/lib/tools/point/__tests__/component.test.js +434 -0
- package/lib/tools/point/__tests__/index.test.js +262 -0
- package/lib/tools/point/component.js +8 -29
- package/lib/tools/point/component.js.map +1 -1
- package/lib/tools/polygon/__tests__/component.test.js +485 -0
- package/lib/tools/polygon/__tests__/index.test.js +303 -0
- package/lib/tools/polygon/__tests__/line.test.js +50 -0
- package/lib/tools/polygon/__tests__/polygon.test.js +85 -0
- package/lib/tools/polygon/component.js +6 -31
- package/lib/tools/polygon/component.js.map +1 -1
- package/lib/tools/ray/__tests__/component.test.js +35 -0
- package/lib/tools/segment/__tests__/component.test.js +35 -0
- package/lib/tools/shared/__tests__/arrow-head.test.js +45 -0
- package/lib/tools/shared/line/__tests__/index.test.js +124 -0
- package/lib/tools/shared/line/__tests__/line-path.test.js +62 -0
- package/lib/tools/shared/line/__tests__/with-root-edge.test.js +90 -0
- package/lib/tools/shared/line/index.js +3 -34
- package/lib/tools/shared/line/index.js.map +1 -1
- package/lib/tools/shared/point/__tests__/arrow-point.test.js +127 -0
- package/lib/tools/shared/point/__tests__/base-point.test.js +122 -0
- package/lib/tools/sine/__tests__/component.test.js +72 -0
- package/lib/tools/vector/__tests__/component.test.js +32 -0
- package/package.json +17 -17
- package/src/__tests__/graph.test.jsx +1 -76
- package/src/__tests__/mark-label.test.jsx +1 -375
- package/src/mark-label.jsx +8 -209
- package/src/tools/circle/component.jsx +3 -26
- package/src/tools/point/__tests__/component.test.jsx +1 -127
- package/src/tools/point/component.jsx +8 -21
- package/src/tools/polygon/component.jsx +6 -24
- package/src/tools/shared/line/index.jsx +3 -26
- package/LICENSE.md +0 -5
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
5
|
+
var _index = require("../index");
|
|
6
|
+
var _component = _interopRequireDefault(require("../component"));
|
|
7
|
+
var xy = function xy(x, y) {
|
|
8
|
+
return {
|
|
9
|
+
x: x,
|
|
10
|
+
y: y
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Test suite for polygon tool
|
|
16
|
+
*
|
|
17
|
+
* Note: equalPoints() uses roundNumber() which rounds to 4 decimal places.
|
|
18
|
+
* - Values like 1.0001 and 1.0002 are considered DIFFERENT (round to 1.0001 and 1.0002)
|
|
19
|
+
* - Values like 1.00001 and 1.00002 are considered EQUAL (both round to 1.0000)
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
describe('polygon', function () {
|
|
23
|
+
describe('addPointToArray', function () {
|
|
24
|
+
var assertAddPoint = function assertAddPoint(point, arr, expected) {
|
|
25
|
+
it("returns expected result when adding point to array", function () {
|
|
26
|
+
var result = (0, _index.addPointToArray)(point, arr);
|
|
27
|
+
expect(result).toEqual(expected);
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
assertAddPoint(xy(0, 0), [], {
|
|
31
|
+
closed: false,
|
|
32
|
+
points: [xy(0, 0)]
|
|
33
|
+
});
|
|
34
|
+
assertAddPoint(xy(0, 0), [xy(0, 0)], {
|
|
35
|
+
closed: false,
|
|
36
|
+
points: [xy(0, 0)]
|
|
37
|
+
});
|
|
38
|
+
assertAddPoint(xy(1, 1), [xy(0, 0)], {
|
|
39
|
+
closed: false,
|
|
40
|
+
points: [xy(0, 0), xy(1, 1)]
|
|
41
|
+
});
|
|
42
|
+
it('handles undefined array', function () {
|
|
43
|
+
var result = (0, _index.addPointToArray)(xy(1, 2), undefined);
|
|
44
|
+
expect(result).toEqual({
|
|
45
|
+
points: [xy(1, 2)],
|
|
46
|
+
closed: false
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
it('handles null array', function () {
|
|
50
|
+
var result = (0, _index.addPointToArray)(xy(1, 2), null);
|
|
51
|
+
expect(result).toEqual({
|
|
52
|
+
points: [xy(1, 2)],
|
|
53
|
+
closed: false
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
it('closes polygon when clicking first point', function () {
|
|
57
|
+
var firstPoint = xy(1, 2);
|
|
58
|
+
var points = [firstPoint, xy(3, 4), xy(5, 6)];
|
|
59
|
+
var result = (0, _index.addPointToArray)(firstPoint, points);
|
|
60
|
+
expect(result).toEqual({
|
|
61
|
+
points: points,
|
|
62
|
+
closed: true
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
it('does not add duplicate point in middle', function () {
|
|
66
|
+
var points = [xy(1, 2), xy(3, 4), xy(5, 6)];
|
|
67
|
+
var result = (0, _index.addPointToArray)(points[1], points);
|
|
68
|
+
expect(result).toEqual({
|
|
69
|
+
points: points,
|
|
70
|
+
closed: false
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
it('adds new point to array with 2+ points', function () {
|
|
74
|
+
var points = [xy(0, 0), xy(1, 1)];
|
|
75
|
+
var newPoint = xy(2, 2);
|
|
76
|
+
var result = (0, _index.addPointToArray)(newPoint, points);
|
|
77
|
+
expect(result).toEqual({
|
|
78
|
+
points: [].concat(points, [newPoint]),
|
|
79
|
+
closed: false
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
it('handles points within rounding tolerance', function () {
|
|
83
|
+
// roundNumber rounds to 4 decimal places
|
|
84
|
+
// 1.0001 and 1.0002 round to different values after toFixed(4)
|
|
85
|
+
var firstPoint = xy(1.0001, 2.0001);
|
|
86
|
+
var closePoint = xy(1.0002, 2.0002);
|
|
87
|
+
var result = (0, _index.addPointToArray)(closePoint, [firstPoint]);
|
|
88
|
+
|
|
89
|
+
// Since they round to different values, both points are added
|
|
90
|
+
expect(result).toEqual({
|
|
91
|
+
points: [firstPoint, closePoint],
|
|
92
|
+
closed: false
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
it('handles points that round to exactly the same value', function () {
|
|
96
|
+
// Points that round to exactly the same value after toFixed(4)
|
|
97
|
+
var firstPoint = xy(1.0001, 2.0001);
|
|
98
|
+
var samePoint = xy(1.0001, 2.0001);
|
|
99
|
+
var result = (0, _index.addPointToArray)(samePoint, [firstPoint]);
|
|
100
|
+
|
|
101
|
+
// Since they round to the same value, point is not added
|
|
102
|
+
expect(result).toEqual({
|
|
103
|
+
points: [firstPoint],
|
|
104
|
+
closed: false
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
describe('tool', function () {
|
|
110
|
+
var t;
|
|
111
|
+
beforeEach(function () {
|
|
112
|
+
t = (0, _index.tool)();
|
|
113
|
+
});
|
|
114
|
+
describe('tool structure', function () {
|
|
115
|
+
it('creates polygon type', function () {
|
|
116
|
+
expect(t.type).toEqual('polygon');
|
|
117
|
+
});
|
|
118
|
+
it('has Component property', function () {
|
|
119
|
+
expect(t.Component).toBe(_component["default"]);
|
|
120
|
+
});
|
|
121
|
+
it('has complete method', function () {
|
|
122
|
+
expect((0, _typeof2["default"])(t.complete)).toBe('function');
|
|
123
|
+
});
|
|
124
|
+
it('has addPoint method', function () {
|
|
125
|
+
expect((0, _typeof2["default"])(t.addPoint)).toBe('function');
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
describe('complete', function () {
|
|
129
|
+
it('closes polygon', function () {
|
|
130
|
+
expect(t.complete()).toEqual({
|
|
131
|
+
building: false,
|
|
132
|
+
closed: true
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
it('marks polygon as not building', function () {
|
|
136
|
+
var mark = {
|
|
137
|
+
type: 'polygon',
|
|
138
|
+
points: [xy(1, 2), xy(3, 4)],
|
|
139
|
+
closed: false,
|
|
140
|
+
building: true
|
|
141
|
+
};
|
|
142
|
+
var result = t.complete(null, mark);
|
|
143
|
+
expect(result.building).toBe(false);
|
|
144
|
+
});
|
|
145
|
+
it('marks polygon as closed', function () {
|
|
146
|
+
var mark = {
|
|
147
|
+
type: 'polygon',
|
|
148
|
+
points: [xy(1, 2), xy(3, 4)],
|
|
149
|
+
closed: false,
|
|
150
|
+
building: true
|
|
151
|
+
};
|
|
152
|
+
var result = t.complete(null, mark);
|
|
153
|
+
expect(result.closed).toBe(true);
|
|
154
|
+
});
|
|
155
|
+
it('preserves other mark properties', function () {
|
|
156
|
+
var mark = {
|
|
157
|
+
type: 'polygon',
|
|
158
|
+
points: [xy(1, 2)],
|
|
159
|
+
closed: false,
|
|
160
|
+
building: true,
|
|
161
|
+
label: 'Test',
|
|
162
|
+
color: 'red'
|
|
163
|
+
};
|
|
164
|
+
var result = t.complete(null, mark);
|
|
165
|
+
expect(result.label).toBe('Test');
|
|
166
|
+
expect(result.color).toBe('red');
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
describe('addPoint', function () {
|
|
170
|
+
it('creates new polygon with first point', function () {
|
|
171
|
+
var mark = t.addPoint({
|
|
172
|
+
x: 0,
|
|
173
|
+
y: 0
|
|
174
|
+
});
|
|
175
|
+
expect(mark).toEqual({
|
|
176
|
+
type: 'polygon',
|
|
177
|
+
points: [{
|
|
178
|
+
x: 0,
|
|
179
|
+
y: 0
|
|
180
|
+
}],
|
|
181
|
+
closed: false,
|
|
182
|
+
building: true
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
it('adds second point to existing mark', function () {
|
|
186
|
+
var mark = t.addPoint({
|
|
187
|
+
x: 0,
|
|
188
|
+
y: 0
|
|
189
|
+
}, {
|
|
190
|
+
points: [{
|
|
191
|
+
x: 1,
|
|
192
|
+
y: 1
|
|
193
|
+
}]
|
|
194
|
+
});
|
|
195
|
+
expect(mark).toEqual({
|
|
196
|
+
building: true,
|
|
197
|
+
closed: false,
|
|
198
|
+
points: [{
|
|
199
|
+
x: 1,
|
|
200
|
+
y: 1
|
|
201
|
+
}, {
|
|
202
|
+
x: 0,
|
|
203
|
+
y: 0
|
|
204
|
+
}]
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
it('creates mark with building flag true', function () {
|
|
208
|
+
var mark = t.addPoint(xy(1, 2));
|
|
209
|
+
expect(mark.building).toBe(true);
|
|
210
|
+
});
|
|
211
|
+
it('creates mark with closed flag false', function () {
|
|
212
|
+
var mark = t.addPoint(xy(1, 2));
|
|
213
|
+
expect(mark.closed).toBe(false);
|
|
214
|
+
});
|
|
215
|
+
it('adds multiple points sequentially', function () {
|
|
216
|
+
var mark = t.addPoint(xy(0, 0));
|
|
217
|
+
mark = t.addPoint(xy(1, 1), mark);
|
|
218
|
+
mark = t.addPoint(xy(2, 2), mark);
|
|
219
|
+
expect(mark.points).toHaveLength(3);
|
|
220
|
+
expect(mark.points).toEqual([xy(0, 0), xy(1, 1), xy(2, 2)]);
|
|
221
|
+
});
|
|
222
|
+
it('closes polygon when clicking first point', function () {
|
|
223
|
+
var firstPoint = xy(1, 2);
|
|
224
|
+
var mark = t.addPoint(firstPoint);
|
|
225
|
+
mark = t.addPoint(xy(3, 4), mark);
|
|
226
|
+
mark = t.addPoint(xy(5, 6), mark);
|
|
227
|
+
mark = t.addPoint(firstPoint, mark);
|
|
228
|
+
expect(mark.closed).toBe(true);
|
|
229
|
+
expect(mark.building).toBe(false);
|
|
230
|
+
});
|
|
231
|
+
it('does not add duplicate points', function () {
|
|
232
|
+
var point = xy(1, 2);
|
|
233
|
+
var mark = t.addPoint(point);
|
|
234
|
+
mark = t.addPoint(xy(3, 4), mark);
|
|
235
|
+
// Adding the first point again would close it
|
|
236
|
+
// Let's add it one more time after closing to test duplicate handling
|
|
237
|
+
mark = t.addPoint(point, mark);
|
|
238
|
+
|
|
239
|
+
// When we add the first point to a polygon with 2+ points, it closes
|
|
240
|
+
expect(mark.points).toHaveLength(2);
|
|
241
|
+
expect(mark.closed).toBe(true);
|
|
242
|
+
expect(mark.building).toBe(false);
|
|
243
|
+
});
|
|
244
|
+
it('does not add duplicate non-first points', function () {
|
|
245
|
+
var firstPoint = xy(1, 2);
|
|
246
|
+
var secondPoint = xy(3, 4);
|
|
247
|
+
var mark = t.addPoint(firstPoint);
|
|
248
|
+
mark = t.addPoint(secondPoint, mark);
|
|
249
|
+
mark = t.addPoint(xy(5, 6), mark);
|
|
250
|
+
// Try to add the second point again (not the first point)
|
|
251
|
+
mark = t.addPoint(secondPoint, mark);
|
|
252
|
+
|
|
253
|
+
// Should not add the duplicate point
|
|
254
|
+
expect(mark.points).toHaveLength(3);
|
|
255
|
+
expect(mark.points).toEqual([firstPoint, secondPoint, xy(5, 6)]);
|
|
256
|
+
expect(mark.closed).toBe(false);
|
|
257
|
+
});
|
|
258
|
+
it('preserves mark properties when adding points', function () {
|
|
259
|
+
var mark = {
|
|
260
|
+
type: 'polygon',
|
|
261
|
+
points: [xy(1, 2)],
|
|
262
|
+
closed: false,
|
|
263
|
+
building: true,
|
|
264
|
+
label: 'My Shape'
|
|
265
|
+
};
|
|
266
|
+
var result = t.addPoint(xy(3, 4), mark);
|
|
267
|
+
expect(result.label).toBe('My Shape');
|
|
268
|
+
});
|
|
269
|
+
});
|
|
270
|
+
describe('integration scenarios', function () {
|
|
271
|
+
it('creates complete triangle', function () {
|
|
272
|
+
var p1 = xy(0, 0);
|
|
273
|
+
var p2 = xy(1, 0);
|
|
274
|
+
var p3 = xy(0.5, 1);
|
|
275
|
+
var mark = t.addPoint(p1);
|
|
276
|
+
mark = t.addPoint(p2, mark);
|
|
277
|
+
mark = t.addPoint(p3, mark);
|
|
278
|
+
mark = t.addPoint(p1, mark);
|
|
279
|
+
expect(mark.points).toEqual([p1, p2, p3]);
|
|
280
|
+
expect(mark.closed).toBe(true);
|
|
281
|
+
expect(mark.building).toBe(false);
|
|
282
|
+
});
|
|
283
|
+
it('creates complete square', function () {
|
|
284
|
+
var points = [xy(0, 0), xy(1, 0), xy(1, 1), xy(0, 1)];
|
|
285
|
+
var mark = t.addPoint(points[0]);
|
|
286
|
+
points.slice(1).forEach(function (p) {
|
|
287
|
+
mark = t.addPoint(p, mark);
|
|
288
|
+
});
|
|
289
|
+
mark = t.addPoint(points[0], mark);
|
|
290
|
+
expect(mark.points).toEqual(points);
|
|
291
|
+
expect(mark.closed).toBe(true);
|
|
292
|
+
});
|
|
293
|
+
it('can force complete without closing', function () {
|
|
294
|
+
var mark = t.addPoint(xy(0, 0));
|
|
295
|
+
mark = t.addPoint(xy(1, 1), mark);
|
|
296
|
+
mark = t.complete(null, mark);
|
|
297
|
+
expect(mark.closed).toBe(true);
|
|
298
|
+
expect(mark.building).toBe(false);
|
|
299
|
+
expect(mark.points).toHaveLength(2);
|
|
300
|
+
});
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW5kZXgiLCJyZXF1aXJlIiwiX2NvbXBvbmVudCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJ4eSIsIngiLCJ5IiwiZGVzY3JpYmUiLCJhc3NlcnRBZGRQb2ludCIsInBvaW50IiwiYXJyIiwiZXhwZWN0ZWQiLCJpdCIsInJlc3VsdCIsImFkZFBvaW50VG9BcnJheSIsImV4cGVjdCIsInRvRXF1YWwiLCJjbG9zZWQiLCJwb2ludHMiLCJ1bmRlZmluZWQiLCJmaXJzdFBvaW50IiwibmV3UG9pbnQiLCJjb25jYXQiLCJjbG9zZVBvaW50Iiwic2FtZVBvaW50IiwidCIsImJlZm9yZUVhY2giLCJ0b29sIiwidHlwZSIsIkNvbXBvbmVudCIsInRvQmUiLCJQb2x5Z29uIiwiX3R5cGVvZjIiLCJjb21wbGV0ZSIsImFkZFBvaW50IiwiYnVpbGRpbmciLCJtYXJrIiwibGFiZWwiLCJjb2xvciIsInRvSGF2ZUxlbmd0aCIsInNlY29uZFBvaW50IiwicDEiLCJwMiIsInAzIiwic2xpY2UiLCJmb3JFYWNoIiwicCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29scy9wb2x5Z29uL19fdGVzdHNfXy9pbmRleC50ZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFkZFBvaW50VG9BcnJheSwgdG9vbCB9IGZyb20gJy4uL2luZGV4JztcbmltcG9ydCBQb2x5Z29uIGZyb20gJy4uL2NvbXBvbmVudCc7XG5cbmNvbnN0IHh5ID0gKHgsIHkpID0+ICh7IHgsIHkgfSk7XG5cbi8qKlxuICogVGVzdCBzdWl0ZSBmb3IgcG9seWdvbiB0b29sXG4gKlxuICogTm90ZTogZXF1YWxQb2ludHMoKSB1c2VzIHJvdW5kTnVtYmVyKCkgd2hpY2ggcm91bmRzIHRvIDQgZGVjaW1hbCBwbGFjZXMuXG4gKiAtIFZhbHVlcyBsaWtlIDEuMDAwMSBhbmQgMS4wMDAyIGFyZSBjb25zaWRlcmVkIERJRkZFUkVOVCAocm91bmQgdG8gMS4wMDAxIGFuZCAxLjAwMDIpXG4gKiAtIFZhbHVlcyBsaWtlIDEuMDAwMDEgYW5kIDEuMDAwMDIgYXJlIGNvbnNpZGVyZWQgRVFVQUwgKGJvdGggcm91bmQgdG8gMS4wMDAwKVxuICovXG5cbmRlc2NyaWJlKCdwb2x5Z29uJywgKCkgPT4ge1xuICBkZXNjcmliZSgnYWRkUG9pbnRUb0FycmF5JywgKCkgPT4ge1xuICAgIGNvbnN0IGFzc2VydEFkZFBvaW50ID0gKHBvaW50LCBhcnIsIGV4cGVjdGVkKSA9PiB7XG4gICAgICBpdChgcmV0dXJucyBleHBlY3RlZCByZXN1bHQgd2hlbiBhZGRpbmcgcG9pbnQgdG8gYXJyYXlgLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGFkZFBvaW50VG9BcnJheShwb2ludCwgYXJyKTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgYXNzZXJ0QWRkUG9pbnQoeHkoMCwgMCksIFtdLCB7IGNsb3NlZDogZmFsc2UsIHBvaW50czogW3h5KDAsIDApXSB9KTtcbiAgICBhc3NlcnRBZGRQb2ludCh4eSgwLCAwKSwgW3h5KDAsIDApXSwgeyBjbG9zZWQ6IGZhbHNlLCBwb2ludHM6IFt4eSgwLCAwKV0gfSk7XG4gICAgYXNzZXJ0QWRkUG9pbnQoeHkoMSwgMSksIFt4eSgwLCAwKV0sIHtcbiAgICAgIGNsb3NlZDogZmFsc2UsXG4gICAgICBwb2ludHM6IFt4eSgwLCAwKSwgeHkoMSwgMSldLFxuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgdW5kZWZpbmVkIGFycmF5JywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYWRkUG9pbnRUb0FycmF5KHh5KDEsIDIpLCB1bmRlZmluZWQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7IHBvaW50czogW3h5KDEsIDIpXSwgY2xvc2VkOiBmYWxzZSB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVzIG51bGwgYXJyYXknLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhZGRQb2ludFRvQXJyYXkoeHkoMSwgMiksIG51bGwpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7IHBvaW50czogW3h5KDEsIDIpXSwgY2xvc2VkOiBmYWxzZSB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdjbG9zZXMgcG9seWdvbiB3aGVuIGNsaWNraW5nIGZpcnN0IHBvaW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgZmlyc3RQb2ludCA9IHh5KDEsIDIpO1xuICAgICAgY29uc3QgcG9pbnRzID0gW2ZpcnN0UG9pbnQsIHh5KDMsIDQpLCB4eSg1LCA2KV07XG4gICAgICBjb25zdCByZXN1bHQgPSBhZGRQb2ludFRvQXJyYXkoZmlyc3RQb2ludCwgcG9pbnRzKTtcblxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7IHBvaW50cywgY2xvc2VkOiB0cnVlIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IGFkZCBkdXBsaWNhdGUgcG9pbnQgaW4gbWlkZGxlJywgKCkgPT4ge1xuICAgICAgY29uc3QgcG9pbnRzID0gW3h5KDEsIDIpLCB4eSgzLCA0KSwgeHkoNSwgNildO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYWRkUG9pbnRUb0FycmF5KHBvaW50c1sxXSwgcG9pbnRzKTtcblxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7IHBvaW50cywgY2xvc2VkOiBmYWxzZSB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdhZGRzIG5ldyBwb2ludCB0byBhcnJheSB3aXRoIDIrIHBvaW50cycsICgpID0+IHtcbiAgICAgIGNvbnN0IHBvaW50cyA9IFt4eSgwLCAwKSwgeHkoMSwgMSldO1xuICAgICAgY29uc3QgbmV3UG9pbnQgPSB4eSgyLCAyKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGFkZFBvaW50VG9BcnJheShuZXdQb2ludCwgcG9pbnRzKTtcblxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7XG4gICAgICAgIHBvaW50czogWy4uLnBvaW50cywgbmV3UG9pbnRdLFxuICAgICAgICBjbG9zZWQ6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlcyBwb2ludHMgd2l0aGluIHJvdW5kaW5nIHRvbGVyYW5jZScsICgpID0+IHtcbiAgICAgIC8vIHJvdW5kTnVtYmVyIHJvdW5kcyB0byA0IGRlY2ltYWwgcGxhY2VzXG4gICAgICAvLyAxLjAwMDEgYW5kIDEuMDAwMiByb3VuZCB0byBkaWZmZXJlbnQgdmFsdWVzIGFmdGVyIHRvRml4ZWQoNClcbiAgICAgIGNvbnN0IGZpcnN0UG9pbnQgPSB4eSgxLjAwMDEsIDIuMDAwMSk7XG4gICAgICBjb25zdCBjbG9zZVBvaW50ID0geHkoMS4wMDAyLCAyLjAwMDIpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYWRkUG9pbnRUb0FycmF5KGNsb3NlUG9pbnQsIFtmaXJzdFBvaW50XSk7XG5cbiAgICAgIC8vIFNpbmNlIHRoZXkgcm91bmQgdG8gZGlmZmVyZW50IHZhbHVlcywgYm90aCBwb2ludHMgYXJlIGFkZGVkXG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsgcG9pbnRzOiBbZmlyc3RQb2ludCwgY2xvc2VQb2ludF0sIGNsb3NlZDogZmFsc2UgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlcyBwb2ludHMgdGhhdCByb3VuZCB0byBleGFjdGx5IHRoZSBzYW1lIHZhbHVlJywgKCkgPT4ge1xuICAgICAgLy8gUG9pbnRzIHRoYXQgcm91bmQgdG8gZXhhY3RseSB0aGUgc2FtZSB2YWx1ZSBhZnRlciB0b0ZpeGVkKDQpXG4gICAgICBjb25zdCBmaXJzdFBvaW50ID0geHkoMS4wMDAxLCAyLjAwMDEpO1xuICAgICAgY29uc3Qgc2FtZVBvaW50ID0geHkoMS4wMDAxLCAyLjAwMDEpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYWRkUG9pbnRUb0FycmF5KHNhbWVQb2ludCwgW2ZpcnN0UG9pbnRdKTtcblxuICAgICAgLy8gU2luY2UgdGhleSByb3VuZCB0byB0aGUgc2FtZSB2YWx1ZSwgcG9pbnQgaXMgbm90IGFkZGVkXG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsgcG9pbnRzOiBbZmlyc3RQb2ludF0sIGNsb3NlZDogZmFsc2UgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCd0b29sJywgKCkgPT4ge1xuICBsZXQgdDtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICB0ID0gdG9vbCgpO1xuICB9KTtcblxuICBkZXNjcmliZSgndG9vbCBzdHJ1Y3R1cmUnLCAoKSA9PiB7XG4gICAgaXQoJ2NyZWF0ZXMgcG9seWdvbiB0eXBlJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHQudHlwZSkudG9FcXVhbCgncG9seWdvbicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhcyBDb21wb25lbnQgcHJvcGVydHknLCAoKSA9PiB7XG4gICAgICBleHBlY3QodC5Db21wb25lbnQpLnRvQmUoUG9seWdvbik7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIGNvbXBsZXRlIG1ldGhvZCcsICgpID0+IHtcbiAgICAgIGV4cGVjdCh0eXBlb2YgdC5jb21wbGV0ZSkudG9CZSgnZnVuY3Rpb24nKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYXMgYWRkUG9pbnQgbWV0aG9kJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHR5cGVvZiB0LmFkZFBvaW50KS50b0JlKCdmdW5jdGlvbicpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY29tcGxldGUnLCAoKSA9PiB7XG4gICAgaXQoJ2Nsb3NlcyBwb2x5Z29uJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHQuY29tcGxldGUoKSkudG9FcXVhbCh7IGJ1aWxkaW5nOiBmYWxzZSwgY2xvc2VkOiB0cnVlIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ21hcmtzIHBvbHlnb24gYXMgbm90IGJ1aWxkaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWFyayA9IHtcbiAgICAgICAgdHlwZTogJ3BvbHlnb24nLFxuICAgICAgICBwb2ludHM6IFt4eSgxLCAyKSwgeHkoMywgNCldLFxuICAgICAgICBjbG9zZWQ6IGZhbHNlLFxuICAgICAgICBidWlsZGluZzogdHJ1ZSxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXN1bHQgPSB0LmNvbXBsZXRlKG51bGwsIG1hcmspO1xuXG4gICAgICBleHBlY3QocmVzdWx0LmJ1aWxkaW5nKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdtYXJrcyBwb2x5Z29uIGFzIGNsb3NlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmsgPSB7XG4gICAgICAgIHR5cGU6ICdwb2x5Z29uJyxcbiAgICAgICAgcG9pbnRzOiBbeHkoMSwgMiksIHh5KDMsIDQpXSxcbiAgICAgICAgY2xvc2VkOiBmYWxzZSxcbiAgICAgICAgYnVpbGRpbmc6IHRydWUsXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gdC5jb21wbGV0ZShudWxsLCBtYXJrKTtcblxuICAgICAgZXhwZWN0KHJlc3VsdC5jbG9zZWQpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgncHJlc2VydmVzIG90aGVyIG1hcmsgcHJvcGVydGllcycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmsgPSB7XG4gICAgICAgIHR5cGU6ICdwb2x5Z29uJyxcbiAgICAgICAgcG9pbnRzOiBbeHkoMSwgMildLFxuICAgICAgICBjbG9zZWQ6IGZhbHNlLFxuICAgICAgICBidWlsZGluZzogdHJ1ZSxcbiAgICAgICAgbGFiZWw6ICdUZXN0JyxcbiAgICAgICAgY29sb3I6ICdyZWQnLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHQuY29tcGxldGUobnVsbCwgbWFyayk7XG5cbiAgICAgIGV4cGVjdChyZXN1bHQubGFiZWwpLnRvQmUoJ1Rlc3QnKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuY29sb3IpLnRvQmUoJ3JlZCcpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYWRkUG9pbnQnLCAoKSA9PiB7XG4gICAgaXQoJ2NyZWF0ZXMgbmV3IHBvbHlnb24gd2l0aCBmaXJzdCBwb2ludCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmsgPSB0LmFkZFBvaW50KHsgeDogMCwgeTogMCB9KTtcbiAgICAgIGV4cGVjdChtYXJrKS50b0VxdWFsKHtcbiAgICAgICAgdHlwZTogJ3BvbHlnb24nLFxuICAgICAgICBwb2ludHM6IFt7IHg6IDAsIHk6IDAgfV0sXG4gICAgICAgIGNsb3NlZDogZmFsc2UsXG4gICAgICAgIGJ1aWxkaW5nOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnYWRkcyBzZWNvbmQgcG9pbnQgdG8gZXhpc3RpbmcgbWFyaycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hcmsgPSB0LmFkZFBvaW50KHsgeDogMCwgeTogMCB9LCB7IHBvaW50czogW3sgeDogMSwgeTogMSB9XSB9KTtcbiAgICAgIGV4cGVjdChtYXJrKS50b0VxdWFsKHtcbiAgICAgICAgYnVpbGRpbmc6IHRydWUsXG4gICAgICAgIGNsb3NlZDogZmFsc2UsXG4gICAgICAgIHBvaW50czogW1xuICAgICAgICAgIHsgeDogMSwgeTogMSB9LFxuICAgICAgICAgIHsgeDogMCwgeTogMCB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnY3JlYXRlcyBtYXJrIHdpdGggYnVpbGRpbmcgZmxhZyB0cnVlJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWFyayA9IHQuYWRkUG9pbnQoeHkoMSwgMikpO1xuICAgICAgZXhwZWN0KG1hcmsuYnVpbGRpbmcpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnY3JlYXRlcyBtYXJrIHdpdGggY2xvc2VkIGZsYWcgZmFsc2UnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtYXJrID0gdC5hZGRQb2ludCh4eSgxLCAyKSk7XG4gICAgICBleHBlY3QobWFyay5jbG9zZWQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FkZHMgbXVsdGlwbGUgcG9pbnRzIHNlcXVlbnRpYWxseScsICgpID0+IHtcbiAgICAgIGxldCBtYXJrID0gdC5hZGRQb2ludCh4eSgwLCAwKSk7XG4gICAgICBtYXJrID0gdC5hZGRQb2ludCh4eSgxLCAxKSwgbWFyayk7XG4gICAgICBtYXJrID0gdC5hZGRQb2ludCh4eSgyLCAyKSwgbWFyayk7XG5cbiAgICAgIGV4cGVjdChtYXJrLnBvaW50cykudG9IYXZlTGVuZ3RoKDMpO1xuICAgICAgZXhwZWN0KG1hcmsucG9pbnRzKS50b0VxdWFsKFt4eSgwLCAwKSwgeHkoMSwgMSksIHh5KDIsIDIpXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnY2xvc2VzIHBvbHlnb24gd2hlbiBjbGlja2luZyBmaXJzdCBwb2ludCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGZpcnN0UG9pbnQgPSB4eSgxLCAyKTtcbiAgICAgIGxldCBtYXJrID0gdC5hZGRQb2ludChmaXJzdFBvaW50KTtcbiAgICAgIG1hcmsgPSB0LmFkZFBvaW50KHh5KDMsIDQpLCBtYXJrKTtcbiAgICAgIG1hcmsgPSB0LmFkZFBvaW50KHh5KDUsIDYpLCBtYXJrKTtcbiAgICAgIG1hcmsgPSB0LmFkZFBvaW50KGZpcnN0UG9pbnQsIG1hcmspO1xuXG4gICAgICBleHBlY3QobWFyay5jbG9zZWQpLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3QobWFyay5idWlsZGluZykudG9CZShmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgYWRkIGR1cGxpY2F0ZSBwb2ludHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwb2ludCA9IHh5KDEsIDIpO1xuICAgICAgbGV0IG1hcmsgPSB0LmFkZFBvaW50KHBvaW50KTtcbiAgICAgIG1hcmsgPSB0LmFkZFBvaW50KHh5KDMsIDQpLCBtYXJrKTtcbiAgICAgIC8vIEFkZGluZyB0aGUgZmlyc3QgcG9pbnQgYWdhaW4gd291bGQgY2xvc2UgaXRcbiAgICAgIC8vIExldCdzIGFkZCBpdCBvbmUgbW9yZSB0aW1lIGFmdGVyIGNsb3NpbmcgdG8gdGVzdCBkdXBsaWNhdGUgaGFuZGxpbmdcbiAgICAgIG1hcmsgPSB0LmFkZFBvaW50KHBvaW50LCBtYXJrKTtcblxuICAgICAgLy8gV2hlbiB3ZSBhZGQgdGhlIGZpcnN0IHBvaW50IHRvIGEgcG9seWdvbiB3aXRoIDIrIHBvaW50cywgaXQgY2xvc2VzXG4gICAgICBleHBlY3QobWFyay5wb2ludHMpLnRvSGF2ZUxlbmd0aCgyKTtcbiAgICAgIGV4cGVjdChtYXJrLmNsb3NlZCkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdChtYXJrLmJ1aWxkaW5nKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdkb2VzIG5vdCBhZGQgZHVwbGljYXRlIG5vbi1maXJzdCBwb2ludHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBmaXJzdFBvaW50ID0geHkoMSwgMik7XG4gICAgICBjb25zdCBzZWNvbmRQb2ludCA9IHh5KDMsIDQpO1xuICAgICAgbGV0IG1hcmsgPSB0LmFkZFBvaW50KGZpcnN0UG9pbnQpO1xuICAgICAgbWFyayA9IHQuYWRkUG9pbnQoc2Vjb25kUG9pbnQsIG1hcmspO1xuICAgICAgbWFyayA9IHQuYWRkUG9pbnQoeHkoNSwgNiksIG1hcmspO1xuICAgICAgLy8gVHJ5IHRvIGFkZCB0aGUgc2Vjb25kIHBvaW50IGFnYWluIChub3QgdGhlIGZpcnN0IHBvaW50KVxuICAgICAgbWFyayA9IHQuYWRkUG9pbnQoc2Vjb25kUG9pbnQsIG1hcmspO1xuXG4gICAgICAvLyBTaG91bGQgbm90IGFkZCB0aGUgZHVwbGljYXRlIHBvaW50XG4gICAgICBleHBlY3QobWFyay5wb2ludHMpLnRvSGF2ZUxlbmd0aCgzKTtcbiAgICAgIGV4cGVjdChtYXJrLnBvaW50cykudG9FcXVhbChbZmlyc3RQb2ludCwgc2Vjb25kUG9pbnQsIHh5KDUsIDYpXSk7XG4gICAgICBleHBlY3QobWFyay5jbG9zZWQpLnRvQmUoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3ByZXNlcnZlcyBtYXJrIHByb3BlcnRpZXMgd2hlbiBhZGRpbmcgcG9pbnRzJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWFyayA9IHtcbiAgICAgICAgdHlwZTogJ3BvbHlnb24nLFxuICAgICAgICBwb2ludHM6IFt4eSgxLCAyKV0sXG4gICAgICAgIGNsb3NlZDogZmFsc2UsXG4gICAgICAgIGJ1aWxkaW5nOiB0cnVlLFxuICAgICAgICBsYWJlbDogJ015IFNoYXBlJyxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHQuYWRkUG9pbnQoeHkoMywgNCksIG1hcmspO1xuICAgICAgZXhwZWN0KHJlc3VsdC5sYWJlbCkudG9CZSgnTXkgU2hhcGUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2ludGVncmF0aW9uIHNjZW5hcmlvcycsICgpID0+IHtcbiAgICBpdCgnY3JlYXRlcyBjb21wbGV0ZSB0cmlhbmdsZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHAxID0geHkoMCwgMCk7XG4gICAgICBjb25zdCBwMiA9IHh5KDEsIDApO1xuICAgICAgY29uc3QgcDMgPSB4eSgwLjUsIDEpO1xuXG4gICAgICBsZXQgbWFyayA9IHQuYWRkUG9pbnQocDEpO1xuICAgICAgbWFyayA9IHQuYWRkUG9pbnQocDIsIG1hcmspO1xuICAgICAgbWFyayA9IHQuYWRkUG9pbnQocDMsIG1hcmspO1xuICAgICAgbWFyayA9IHQuYWRkUG9pbnQocDEsIG1hcmspO1xuXG4gICAgICBleHBlY3QobWFyay5wb2ludHMpLnRvRXF1YWwoW3AxLCBwMiwgcDNdKTtcbiAgICAgIGV4cGVjdChtYXJrLmNsb3NlZCkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdChtYXJrLmJ1aWxkaW5nKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdjcmVhdGVzIGNvbXBsZXRlIHNxdWFyZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHBvaW50cyA9IFt4eSgwLCAwKSwgeHkoMSwgMCksIHh5KDEsIDEpLCB4eSgwLCAxKV07XG5cbiAgICAgIGxldCBtYXJrID0gdC5hZGRQb2ludChwb2ludHNbMF0pO1xuICAgICAgcG9pbnRzLnNsaWNlKDEpLmZvckVhY2goKHApID0+IHtcbiAgICAgICAgbWFyayA9IHQuYWRkUG9pbnQocCwgbWFyayk7XG4gICAgICB9KTtcbiAgICAgIG1hcmsgPSB0LmFkZFBvaW50KHBvaW50c1swXSwgbWFyayk7XG5cbiAgICAgIGV4cGVjdChtYXJrLnBvaW50cykudG9FcXVhbChwb2ludHMpO1xuICAgICAgZXhwZWN0KG1hcmsuY2xvc2VkKS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NhbiBmb3JjZSBjb21wbGV0ZSB3aXRob3V0IGNsb3NpbmcnLCAoKSA9PiB7XG4gICAgICBsZXQgbWFyayA9IHQuYWRkUG9pbnQoeHkoMCwgMCkpO1xuICAgICAgbWFyayA9IHQuYWRkUG9pbnQoeHkoMSwgMSksIG1hcmspO1xuICAgICAgbWFyayA9IHQuY29tcGxldGUobnVsbCwgbWFyayk7XG5cbiAgICAgIGV4cGVjdChtYXJrLmNsb3NlZCkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdChtYXJrLmJ1aWxkaW5nKS50b0JlKGZhbHNlKTtcbiAgICAgIGV4cGVjdChtYXJrLnBvaW50cykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBTUcsRUFBRSxHQUFHLFNBQUxBLEVBQUVBLENBQUlDLENBQUMsRUFBRUMsQ0FBQztFQUFBLE9BQU07SUFBRUQsQ0FBQyxFQUFEQSxDQUFDO0lBQUVDLENBQUMsRUFBREE7RUFBRSxDQUFDO0FBQUEsQ0FBQzs7QUFFL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsWUFBTTtFQUN4QkEsUUFBUSxDQUFDLGlCQUFpQixFQUFFLFlBQU07SUFDaEMs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
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
5
|
+
var _testUtils = require("@pie-lib/test-utils");
|
|
6
|
+
var _react = _interopRequireDefault(require("react"));
|
|
7
|
+
var _line = require("../line");
|
|
8
|
+
var _utils = require("../../../__tests__/utils");
|
|
9
|
+
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; }
|
|
10
|
+
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; }
|
|
11
|
+
describe('Line', function () {
|
|
12
|
+
var renderComponent = function renderComponent(extras) {
|
|
13
|
+
var defaults = {
|
|
14
|
+
classes: {},
|
|
15
|
+
className: 'className',
|
|
16
|
+
graphProps: (0, _utils.graphProps)()
|
|
17
|
+
};
|
|
18
|
+
var props = _objectSpread(_objectSpread({}, defaults), extras);
|
|
19
|
+
return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_line.Line, props));
|
|
20
|
+
};
|
|
21
|
+
describe('rendering', function () {
|
|
22
|
+
it('renders without crashing', function () {
|
|
23
|
+
var _renderComponent = renderComponent(),
|
|
24
|
+
container = _renderComponent.container;
|
|
25
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
26
|
+
});
|
|
27
|
+
it('renders with from and to points', function () {
|
|
28
|
+
var _renderComponent2 = renderComponent({
|
|
29
|
+
from: {
|
|
30
|
+
x: 0,
|
|
31
|
+
y: 0
|
|
32
|
+
},
|
|
33
|
+
to: {
|
|
34
|
+
x: 5,
|
|
35
|
+
y: 5
|
|
36
|
+
}
|
|
37
|
+
}),
|
|
38
|
+
container = _renderComponent2.container;
|
|
39
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
40
|
+
});
|
|
41
|
+
it('renders with className', function () {
|
|
42
|
+
var _renderComponent3 = renderComponent({
|
|
43
|
+
className: 'custom-line'
|
|
44
|
+
}),
|
|
45
|
+
container = _renderComponent3.container;
|
|
46
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGVzdFV0aWxzIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbGluZSIsIl91dGlscyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiZGVzY3JpYmUiLCJyZW5kZXJDb21wb25lbnQiLCJleHRyYXMiLCJkZWZhdWx0cyIsImNsYXNzZXMiLCJjbGFzc05hbWUiLCJncmFwaFByb3BzIiwicHJvcHMiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwiTGluZSIsIml0IiwiX3JlbmRlckNvbXBvbmVudCIsImNvbnRhaW5lciIsImV4cGVjdCIsImZpcnN0Q2hpbGQiLCJ0b0JlSW5UaGVEb2N1bWVudCIsIl9yZW5kZXJDb21wb25lbnQyIiwiZnJvbSIsIngiLCJ5IiwidG8iLCJfcmVuZGVyQ29tcG9uZW50MyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29scy9wb2x5Z29uL19fdGVzdHNfXy9saW5lLnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciB9IGZyb20gJ0BwaWUtbGliL3Rlc3QtdXRpbHMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IExpbmUgfSBmcm9tICcuLi9saW5lJztcbmltcG9ydCB7IGdyYXBoUHJvcHMgfSBmcm9tICcuLi8uLi8uLi9fX3Rlc3RzX18vdXRpbHMnO1xuXG5kZXNjcmliZSgnTGluZScsICgpID0+IHtcbiAgY29uc3QgcmVuZGVyQ29tcG9uZW50ID0gKGV4dHJhcykgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgY2xhc3Nlczoge30sXG4gICAgICBjbGFzc05hbWU6ICdjbGFzc05hbWUnLFxuICAgICAgZ3JhcGhQcm9wczogZ3JhcGhQcm9wcygpLFxuICAgIH07XG4gICAgY29uc3QgcHJvcHMgPSB7IC4uLmRlZmF1bHRzLCAuLi5leHRyYXMgfTtcbiAgICByZXR1cm4gcmVuZGVyKDxMaW5lIHsuLi5wcm9wc30gLz4pO1xuICB9O1xuICBkZXNjcmliZSgncmVuZGVyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGhvdXQgY3Jhc2hpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KCk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGZyb20gYW5kIHRvIHBvaW50cycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDb21wb25lbnQoe1xuICAgICAgICBmcm9tOiB7IHg6IDAsIHk6IDAgfSxcbiAgICAgICAgdG86IHsgeDogNSwgeTogNSB9LFxuICAgICAgfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGNsYXNzTmFtZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDb21wb25lbnQoeyBjbGFzc05hbWU6ICdjdXN0b20tbGluZScgfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxJ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
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
5
|
+
var _testUtils = require("@pie-lib/test-utils");
|
|
6
|
+
var _react = _interopRequireDefault(require("react"));
|
|
7
|
+
var _polygon = require("../polygon");
|
|
8
|
+
var _utils = require("../../../__tests__/utils");
|
|
9
|
+
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; }
|
|
10
|
+
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; }
|
|
11
|
+
var xy = function xy(x, y) {
|
|
12
|
+
return {
|
|
13
|
+
x: x,
|
|
14
|
+
y: y
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
describe('Polygon', function () {
|
|
18
|
+
var renderComponent = function renderComponent(extras) {
|
|
19
|
+
var defaults = {
|
|
20
|
+
classes: {},
|
|
21
|
+
className: 'className',
|
|
22
|
+
graphProps: (0, _utils.graphProps)(),
|
|
23
|
+
closed: false
|
|
24
|
+
};
|
|
25
|
+
var props = _objectSpread(_objectSpread({}, defaults), extras);
|
|
26
|
+
return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_polygon.Polygon, props));
|
|
27
|
+
};
|
|
28
|
+
describe('rendering', function () {
|
|
29
|
+
it('renders without crashing', function () {
|
|
30
|
+
var _renderComponent = renderComponent({
|
|
31
|
+
points: [{
|
|
32
|
+
x: 1,
|
|
33
|
+
y: 1
|
|
34
|
+
}]
|
|
35
|
+
}),
|
|
36
|
+
container = _renderComponent.container;
|
|
37
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
38
|
+
});
|
|
39
|
+
it('renders multiple points', function () {
|
|
40
|
+
var points = [xy(0, 0), xy(1, 1), xy(2, 0)];
|
|
41
|
+
var _renderComponent2 = renderComponent({
|
|
42
|
+
points: points
|
|
43
|
+
}),
|
|
44
|
+
container = _renderComponent2.container;
|
|
45
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
46
|
+
});
|
|
47
|
+
it('renders closed polygon', function () {
|
|
48
|
+
var points = [xy(0, 0), xy(1, 1), xy(2, 0)];
|
|
49
|
+
var _renderComponent3 = renderComponent({
|
|
50
|
+
points: points,
|
|
51
|
+
closed: true
|
|
52
|
+
}),
|
|
53
|
+
container = _renderComponent3.container;
|
|
54
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
55
|
+
});
|
|
56
|
+
it('renders open polygon', function () {
|
|
57
|
+
var points = [xy(0, 0), xy(1, 1)];
|
|
58
|
+
var _renderComponent4 = renderComponent({
|
|
59
|
+
points: points,
|
|
60
|
+
closed: false
|
|
61
|
+
}),
|
|
62
|
+
container = _renderComponent4.container;
|
|
63
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
describe('getPointString', function () {
|
|
68
|
+
var assertString = function assertString(arr, expected) {
|
|
69
|
+
it('creates: ', function () {
|
|
70
|
+
var result = (0, _polygon.getPointString)(arr, {
|
|
71
|
+
x: jest.fn(function (n) {
|
|
72
|
+
return n;
|
|
73
|
+
}),
|
|
74
|
+
y: jest.fn(function (n) {
|
|
75
|
+
return n;
|
|
76
|
+
})
|
|
77
|
+
});
|
|
78
|
+
expect(result).toEqual(expected);
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
assertString([xy(1, 1)], '1,1');
|
|
82
|
+
assertString([xy(1, 1), xy(2, 1)], '1,1 2,1');
|
|
83
|
+
assertString([xy(1, 1), xy(2, 1), xy(4, 4)], '1,1 2,1 4,4');
|
|
84
|
+
});
|
|
85
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGVzdFV0aWxzIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcG9seWdvbiIsIl91dGlscyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwieHkiLCJ4IiwieSIsImRlc2NyaWJlIiwicmVuZGVyQ29tcG9uZW50IiwiZXh0cmFzIiwiZGVmYXVsdHMiLCJjbGFzc2VzIiwiY2xhc3NOYW1lIiwiZ3JhcGhQcm9wcyIsImNsb3NlZCIsInByb3BzIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsIlBvbHlnb24iLCJpdCIsIl9yZW5kZXJDb21wb25lbnQiLCJwb2ludHMiLCJjb250YWluZXIiLCJleHBlY3QiLCJmaXJzdENoaWxkIiwidG9CZUluVGhlRG9jdW1lbnQiLCJfcmVuZGVyQ29tcG9uZW50MiIsIl9yZW5kZXJDb21wb25lbnQzIiwiX3JlbmRlckNvbXBvbmVudDQiLCJhc3NlcnRTdHJpbmciLCJhcnIiLCJleHBlY3RlZCIsInJlc3VsdCIsImdldFBvaW50U3RyaW5nIiwiamVzdCIsImZuIiwibiIsInRvRXF1YWwiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdG9vbHMvcG9seWdvbi9fX3Rlc3RzX18vcG9seWdvbi50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIgfSBmcm9tICdAcGllLWxpYi90ZXN0LXV0aWxzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBnZXRQb2ludFN0cmluZywgUG9seWdvbiB9IGZyb20gJy4uL3BvbHlnb24nO1xuaW1wb3J0IHsgZ3JhcGhQcm9wcyB9IGZyb20gJy4uLy4uLy4uL19fdGVzdHNfXy91dGlscyc7XG5cbmNvbnN0IHh5ID0gKHgsIHkpID0+ICh7IHgsIHkgfSk7XG5cbmRlc2NyaWJlKCdQb2x5Z29uJywgKCkgPT4ge1xuICBjb25zdCByZW5kZXJDb21wb25lbnQgPSAoZXh0cmFzKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIGNsYXNzTmFtZTogJ2NsYXNzTmFtZScsXG4gICAgICBncmFwaFByb3BzOiBncmFwaFByb3BzKCksXG4gICAgICBjbG9zZWQ6IGZhbHNlLFxuICAgIH07XG4gICAgY29uc3QgcHJvcHMgPSB7IC4uLmRlZmF1bHRzLCAuLi5leHRyYXMgfTtcbiAgICByZXR1cm4gcmVuZGVyKDxQb2x5Z29uIHsuLi5wcm9wc30gLz4pO1xuICB9O1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgd2l0aG91dCBjcmFzaGluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDb21wb25lbnQoeyBwb2ludHM6IFt7IHg6IDEsIHk6IDEgfV0gfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBtdWx0aXBsZSBwb2ludHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwb2ludHMgPSBbeHkoMCwgMCksIHh5KDEsIDEpLCB4eSgyLCAwKV07XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KHsgcG9pbnRzIH0pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgY2xvc2VkIHBvbHlnb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCBwb2ludHMgPSBbeHkoMCwgMCksIHh5KDEsIDEpLCB4eSgyLCAwKV07XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KHsgcG9pbnRzLCBjbG9zZWQ6IHRydWUgfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBvcGVuIHBvbHlnb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCBwb2ludHMgPSBbeHkoMCwgMCksIHh5KDEsIDEpXTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDb21wb25lbnQoeyBwb2ludHMsIGNsb3NlZDogZmFsc2UgfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdnZXRQb2ludFN0cmluZycsICgpID0+IHtcbiAgY29uc3QgYXNzZXJ0U3RyaW5nID0gKGFyciwgZXhwZWN0ZWQpID0+IHtcbiAgICBpdCgnY3JlYXRlczogJywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0UG9pbnRTdHJpbmcoYXJyLCB7XG4gICAgICAgIHg6IGplc3QuZm4oKG4pID0+IG4pLFxuICAgICAgICB5OiBqZXN0LmZuKChuKSA9PiBuKSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICB9KTtcbiAgfTtcblxuICBhc3NlcnRTdHJpbmcoW3h5KDEsIDEpXSwgJzEsMScpO1xuICBhc3NlcnRTdHJpbmcoW3h5KDEsIDEpLCB4eSgyLCAxKV0sICcxLDEgMiwxJyk7XG4gIGFzc2VydFN0cmluZyhbeHkoMSwgMSksIHh5KDIsIDEpLCB4eSg0LCA0KV0sICcxLDEgMiwxIDQsNCcpO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFKLE9BQUE7QUFBc0QsU0FBQUssUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxRQUFBZSxnQkFBQSxhQUFBaEIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBRSxNQUFBLENBQUFjLHlCQUFBLEdBQUFkLE1BQUEsQ0FBQWUsZ0JBQUEsQ0FBQWxCLENBQUEsRUFBQUcsTUFBQSxDQUFBYyx5QkFBQSxDQUFBZixDQUFBLEtBQUFILE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxDQUFBLEdBQUFhLE9BQUEsV0FBQWQsQ0FBQSxJQUFBRSxNQUFBLENBQUFnQixjQUFBLENBQUFuQixDQUFBLEVBQUFDLENBQUEsRUFBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBTixDQUFBLEVBQUFELENBQUEsaUJBQUFELENBQUE7QUFFdEQsSUFBTW9CLEVBQUUsR0FBRyxTQUFMQSxFQUFFQSxDQUFJQyxDQUFDLEVBQUVDLENBQUM7RUFBQSxPQUFNO0lBQUVELENBQUMsRUFBREEsQ0FBQztJQUFFQyxDQUFDLEVBQURBO0VBQUUsQ0FBQztBQUFBLENBQUM7QUFFL0JDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsWUFBTTtFQUN4QixJQUFNQyxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUlDLE1BQU0sRUFBSztJQUNsQyxJQUFNQyxRQUFRLEdBQUc7TUFDZkMsT0FBTyxFQUFFLENBQUMsQ0FBQztNQUNYQyxTQUFTLEVBQUUsV0FBVztNQUN0QkMsVUFBVSxFQUFFLElBQUFBLGlCQUFVLEVBQUMsQ0FBQztNQUN4QkMsTUFBTSxFQUFFO0lBQ1YsQ0FBQztJQUNELElBQU1DLEtBQUssR0FBQW5CLGFBQUEsQ0FBQUEsYUFBQSxLQUFRYyxRQUFRLEdBQUtELE1BQU0sQ0FBRTtJQUN4QyxPQUFPLElBQUFPLGlCQUFNLGVBQUNyQyxNQUFBLFlBQUFzQyxhQUFBLENBQUNwQyxRQUFBLENBQUFxQyxPQUFPLEVBQUtILEtBQVEsQ0FBQyxDQUFDO0VBQ3ZDLENBQUM7RUFFRFIsUUFBUSxDQUFDLFdBQVcsRUFBRSxZQUFNO0lBQzFCWSxFQUFFLENBQUMsMEJBQTBCLEVBQUUsWUFBTTtNQUNuQyxJQUFBQyxnQkFBQSxHQUFzQlosZUFBZSxDQUFDO1VBQUVhLE1BQU0sRUFBRSxDQUFDO1lBQUVoQixDQUFDLEVBQUUsQ0FBQztZQUFFQyxDQUFDLEVBQUU7VUFBRSxDQUFDO1FBQUUsQ0FBQyxDQUFDO1FBQTNEZ0IsU0FBUyxHQUFBRixnQkFBQSxDQUFURSxTQUFTO01BQ2pCQyxNQUFNLENBQUNELFNBQVMsQ0FBQ0UsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0lBRUZOLEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSxZQUFNO01BQ2xDLElBQU1FLE1BQU0sR0FBRyxDQUFDakIsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRUEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRUEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztNQUM3QyxJQUFBc0IsaUJBQUEsR0FBc0JsQixlQUFlLENBQUM7VUFBRWEsTUFBTSxFQUFOQTtRQUFPLENBQUMsQ0FBQztRQUF6Q0MsU0FBUyxHQUFBSSxpQkFBQSxDQUFUSixTQUFTO01BQ2pCQyxNQUFNLENBQUNELFNBQVMsQ0FBQ0UsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0lBRUZOLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRSxZQUFNO01BQ2pDLElBQU1FLE1BQU0sR0FBRyxDQUFDakIsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRUEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRUEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztNQUM3QyxJQUFBdUIsaUJBQUEsR0FBc0JuQixlQUFlLENBQUM7VUFBRWEsTUFBTSxFQUFOQSxNQUFNO1VBQUVQLE1BQU0sRUFBRTtRQUFLLENBQUMsQ0FBQztRQUF2RFEsU0FBUyxHQUFBSyxpQkFBQSxDQUFUTCxTQUFTO01BQ2pCQyxNQUFNLENBQUNELFNBQVMsQ0FBQ0UsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0lBRUZOLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxZQUFNO01BQy9CLElBQU1FLE1BQU0sR0FBRyxDQUFDakIsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRUEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztNQUNuQyxJQUFBd0IsaUJBQUEsR0FBc0JwQixlQUFlLENBQUM7VUFBRWEsTUFBTSxFQUFOQSxNQUFNO1VBQUVQLE1BQU0sRUFBRTtRQUFNLENBQUMsQ0FBQztRQUF4RFEsU0FBUyxHQUFBTSxpQkFBQSxDQUFUTixTQUFTO01BQ2pCQyxNQUFNLENBQUNELFNBQVMsQ0FBQ0UsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUZsQixRQUFRLENBQUMsZ0JBQWdCLEVBQUUsWUFBTTtFQUMvQixJQUFNc0IsWUFBWSxHQUFHLFNBQWZBLFlBQVlBLENBQUlDLEdBQUcsRUFBRUMsUUFBUSxFQUFLO0lBQ3RDWixFQUFFLENBQUMsV0FBVyxFQUFFLFlBQU07TUFDcEIsSUFBTWEsTUFBTSxHQUFHLElBQUFDLHVCQUFjLEVBQUNILEdBQUcsRUFBRTtRQUNqQ3pCLENBQUMsRUFBRTZCLElBQUksQ0FBQ0MsRUFBRSxDQUFDLFVBQUNDLENBQUM7VUFBQSxPQUFLQSxDQUFDO1FBQUEsRUFBQztRQUNwQjlCLENBQUMsRUFBRTRCLElBQUksQ0FBQ0MsRUFBRSxDQUFDLFVBQUNDLENBQUM7VUFBQSxPQUFLQSxDQUFDO1FBQUE7TUFDckIsQ0FBQyxDQUFDO01BRUZiLE1BQU0sQ0FBQ1MsTUFBTSxDQUFDLENBQUNLLE9BQU8sQ0FBQ04sUUFBUSxDQUFDO0lBQ2xDLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFREYsWUFBWSxDQUFDLENBQUN6QixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO0VBQy9CeUIsWUFBWSxDQUFDLENBQUN6QixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFQSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDO0VBQzdDeUIsWUFBWSxDQUFDLENBQUN6QixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFQSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFQSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDO0FBQzdELENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -90,10 +90,6 @@ var RawBaseComponent = exports.RawBaseComponent = /*#__PURE__*/function (_React$
|
|
|
90
90
|
args[_key2] = arguments[_key2];
|
|
91
91
|
}
|
|
92
92
|
_this = _callSuper(this, RawBaseComponent, [].concat(args));
|
|
93
|
-
// index of the point whose label is edited (points.length for the polygon label), null if none
|
|
94
|
-
(0, _defineProperty2["default"])(_this, "state", {
|
|
95
|
-
editingLabel: null
|
|
96
|
-
});
|
|
97
93
|
(0, _defineProperty2["default"])(_this, "dragPoint", function (index, from, to) {
|
|
98
94
|
log('[dragPoint] from, to:', from, to);
|
|
99
95
|
var _this$props = _this.props,
|
|
@@ -157,13 +153,6 @@ var RawBaseComponent = exports.RawBaseComponent = /*#__PURE__*/function (_React$
|
|
|
157
153
|
update.splice(index, 1, updatedPoint);
|
|
158
154
|
onChangeProps(update);
|
|
159
155
|
});
|
|
160
|
-
(0, _defineProperty2["default"])(_this, "stopEditingLabel", function () {
|
|
161
|
-
if (_this.state.editingLabel !== null) {
|
|
162
|
-
_this.setState({
|
|
163
|
-
editingLabel: null
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
156
|
(0, _defineProperty2["default"])(_this, "clickPoint", function (point, index, data) {
|
|
168
157
|
var _this$props4 = _this.props,
|
|
169
158
|
closed = _this$props4.closed,
|
|
@@ -197,11 +186,12 @@ var RawBaseComponent = exports.RawBaseComponent = /*#__PURE__*/function (_React$
|
|
|
197
186
|
onSetMiddleLabel(strippedMiddle, strippedPoints);
|
|
198
187
|
}
|
|
199
188
|
|
|
200
|
-
//
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
189
|
+
// defer the focus() call with setTimeout to allow the re-render to complete first.
|
|
190
|
+
setTimeout(function () {
|
|
191
|
+
if (_this.input[index]) {
|
|
192
|
+
_this.input[index].focus();
|
|
193
|
+
}
|
|
194
|
+
}, 0);
|
|
205
195
|
return;
|
|
206
196
|
}
|
|
207
197
|
if (isToolActive && !closed && index === 0) {
|
|
@@ -216,16 +206,6 @@ var RawBaseComponent = exports.RawBaseComponent = /*#__PURE__*/function (_React$
|
|
|
216
206
|
}
|
|
217
207
|
(0, _inherits2["default"])(RawBaseComponent, _React$Component);
|
|
218
208
|
return (0, _createClass2["default"])(RawBaseComponent, [{
|
|
219
|
-
key: "componentDidUpdate",
|
|
220
|
-
value: function componentDidUpdate(prevProps) {
|
|
221
|
-
// leaving label mode closes any label that is still being edited
|
|
222
|
-
if (prevProps.labelModeEnabled && !this.props.labelModeEnabled && this.state.editingLabel !== null) {
|
|
223
|
-
this.setState({
|
|
224
|
-
editingLabel: null
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}, {
|
|
229
209
|
key: "render",
|
|
230
210
|
value: function render() {
|
|
231
211
|
var _this2 = this;
|
|
@@ -242,7 +222,6 @@ var RawBaseComponent = exports.RawBaseComponent = /*#__PURE__*/function (_React$
|
|
|
242
222
|
middle = _this$props5.middle,
|
|
243
223
|
labelNode = _this$props5.labelNode,
|
|
244
224
|
labelModeEnabled = _this$props5.labelModeEnabled;
|
|
245
|
-
var editingLabel = this.state.editingLabel;
|
|
246
225
|
var lines = buildLines(points, closed);
|
|
247
226
|
var common = {
|
|
248
227
|
onDragStart: onDragStart,
|
|
@@ -258,11 +237,9 @@ var RawBaseComponent = exports.RawBaseComponent = /*#__PURE__*/function (_React$
|
|
|
258
237
|
inputRef: function inputRef(r) {
|
|
259
238
|
return _this2.input[polygonLabelIndex] = r;
|
|
260
239
|
},
|
|
261
|
-
autoFocus: editingLabel === polygonLabelIndex,
|
|
262
240
|
disabled: disabled || !labelModeEnabled,
|
|
263
241
|
mark: middle,
|
|
264
242
|
graphProps: graphProps,
|
|
265
|
-
onBlur: this.stopEditingLabel,
|
|
266
243
|
onChange: function onChange(label) {
|
|
267
244
|
return onChangeLabelProps(_objectSpread(_objectSpread({}, middle), {}, {
|
|
268
245
|
label: label
|
|
@@ -303,11 +280,9 @@ var RawBaseComponent = exports.RawBaseComponent = /*#__PURE__*/function (_React$
|
|
|
303
280
|
inputRef: function inputRef(r) {
|
|
304
281
|
return _this2.input[index] = r;
|
|
305
282
|
},
|
|
306
|
-
autoFocus: editingLabel === index,
|
|
307
283
|
disabled: disabled || !labelModeEnabled,
|
|
308
284
|
mark: p,
|
|
309
285
|
graphProps: graphProps,
|
|
310
|
-
onBlur: _this2.stopEditingLabel,
|
|
311
286
|
onChange: function onChange(label) {
|
|
312
287
|
return _this2.labelChange(_objectSpread(_objectSpread({}, p), {}, {
|
|
313
288
|
label: label
|