@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.
Files changed (69) hide show
  1. package/CHANGELOG.md +0 -92
  2. package/lib/__tests__/bg.test.js +282 -0
  3. package/lib/__tests__/coordinates-label.test.js +276 -0
  4. package/lib/__tests__/graph-with-controls.test.js +275 -0
  5. package/lib/__tests__/graph.test.js +927 -0
  6. package/lib/__tests__/grid-setup.test.js +729 -0
  7. package/lib/__tests__/grid.test.js +29 -0
  8. package/lib/__tests__/key-legend.test.js +321 -0
  9. package/lib/__tests__/label-svg-icon.test.js +373 -0
  10. package/lib/__tests__/labels.test.js +61 -0
  11. package/lib/__tests__/mark-label.test.js +133 -0
  12. package/lib/__tests__/toggle-bar.test.js +197 -0
  13. package/lib/__tests__/tool-menu.test.js +151 -0
  14. package/lib/__tests__/undo-redo.test.js +31 -0
  15. package/lib/__tests__/use-debounce.test.js +24 -0
  16. package/lib/__tests__/utils.js +70 -0
  17. package/lib/__tests__/utils.test.js +123 -0
  18. package/lib/axis/__tests__/arrow.test.js +60 -0
  19. package/lib/axis/__tests__/axes.test.js +195 -0
  20. package/lib/container/__tests__/actions.test.js +108 -0
  21. package/lib/container/__tests__/index.test.js +503 -0
  22. package/lib/container/__tests__/marks.test.js +259 -0
  23. package/lib/container/__tests__/middleware.test.js +244 -0
  24. package/lib/container/__tests__/reducer.test.js +450 -0
  25. package/lib/mark-label.js +7 -197
  26. package/lib/mark-label.js.map +1 -1
  27. package/lib/tools/absolute/__tests__/component.test.js +65 -0
  28. package/lib/tools/circle/__tests__/bg-circle.test.js +33 -0
  29. package/lib/tools/circle/__tests__/component.test.js +615 -0
  30. package/lib/tools/circle/__tests__/index.test.js +576 -0
  31. package/lib/tools/circle/component.js +3 -34
  32. package/lib/tools/circle/component.js.map +1 -1
  33. package/lib/tools/exponential/__tests__/component.test.js +64 -0
  34. package/lib/tools/exponential/__tests__/index.test.js +828 -0
  35. package/lib/tools/line/__tests__/component.test.js +45 -0
  36. package/lib/tools/parabola/__tests__/component.test.js +64 -0
  37. package/lib/tools/parabola/__tests__/index.test.js +564 -0
  38. package/lib/tools/point/__tests__/component.test.js +434 -0
  39. package/lib/tools/point/__tests__/index.test.js +262 -0
  40. package/lib/tools/point/component.js +8 -29
  41. package/lib/tools/point/component.js.map +1 -1
  42. package/lib/tools/polygon/__tests__/component.test.js +485 -0
  43. package/lib/tools/polygon/__tests__/index.test.js +303 -0
  44. package/lib/tools/polygon/__tests__/line.test.js +50 -0
  45. package/lib/tools/polygon/__tests__/polygon.test.js +85 -0
  46. package/lib/tools/polygon/component.js +6 -31
  47. package/lib/tools/polygon/component.js.map +1 -1
  48. package/lib/tools/ray/__tests__/component.test.js +35 -0
  49. package/lib/tools/segment/__tests__/component.test.js +35 -0
  50. package/lib/tools/shared/__tests__/arrow-head.test.js +45 -0
  51. package/lib/tools/shared/line/__tests__/index.test.js +124 -0
  52. package/lib/tools/shared/line/__tests__/line-path.test.js +62 -0
  53. package/lib/tools/shared/line/__tests__/with-root-edge.test.js +90 -0
  54. package/lib/tools/shared/line/index.js +3 -34
  55. package/lib/tools/shared/line/index.js.map +1 -1
  56. package/lib/tools/shared/point/__tests__/arrow-point.test.js +127 -0
  57. package/lib/tools/shared/point/__tests__/base-point.test.js +122 -0
  58. package/lib/tools/sine/__tests__/component.test.js +72 -0
  59. package/lib/tools/vector/__tests__/component.test.js +32 -0
  60. package/package.json +17 -17
  61. package/src/__tests__/graph.test.jsx +1 -76
  62. package/src/__tests__/mark-label.test.jsx +1 -375
  63. package/src/mark-label.jsx +8 -209
  64. package/src/tools/circle/component.jsx +3 -26
  65. package/src/tools/point/__tests__/component.test.jsx +1 -127
  66. package/src/tools/point/component.jsx +8 -21
  67. package/src/tools/polygon/component.jsx +6 -24
  68. package/src/tools/shared/line/index.jsx +3 -26
  69. package/LICENSE.md +0 -5
@@ -0,0 +1,262 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _index = require("../index");
5
+ var _component = _interopRequireDefault(require("../component"));
6
+ describe('point tool', function () {
7
+ var pointTool;
8
+ beforeEach(function () {
9
+ pointTool = (0, _index.tool)();
10
+ });
11
+ describe('tool structure', function () {
12
+ it('returns an object with required properties', function () {
13
+ expect(pointTool).toHaveProperty('label', 'Point');
14
+ expect(pointTool).toHaveProperty('type', 'point');
15
+ expect(pointTool).toHaveProperty('Component', _component["default"]);
16
+ expect(pointTool).toHaveProperty('addPoint');
17
+ });
18
+ it('has correct label', function () {
19
+ expect(pointTool.label).toBe('Point');
20
+ });
21
+ it('has correct type', function () {
22
+ expect(pointTool.type).toBe('point');
23
+ });
24
+ it('uses Point component', function () {
25
+ expect(pointTool.Component).toBe(_component["default"]);
26
+ });
27
+ it('does not have complete method', function () {
28
+ expect(pointTool.complete).toBeUndefined();
29
+ });
30
+ });
31
+ describe('addPoint', function () {
32
+ it('creates a point mark from coordinates', function () {
33
+ var point = {
34
+ x: 1,
35
+ y: 2
36
+ };
37
+ var result = pointTool.addPoint(point);
38
+ expect(result).toEqual({
39
+ type: 'point',
40
+ x: 1,
41
+ y: 2
42
+ });
43
+ });
44
+ it('creates point with integer coordinates', function () {
45
+ var point = {
46
+ x: 5,
47
+ y: 10
48
+ };
49
+ var result = pointTool.addPoint(point);
50
+ expect(result).toEqual({
51
+ type: 'point',
52
+ x: 5,
53
+ y: 10
54
+ });
55
+ });
56
+ it('creates point with decimal coordinates', function () {
57
+ var point = {
58
+ x: 1.5,
59
+ y: 2.75
60
+ };
61
+ var result = pointTool.addPoint(point);
62
+ expect(result).toEqual({
63
+ type: 'point',
64
+ x: 1.5,
65
+ y: 2.75
66
+ });
67
+ });
68
+ it('creates point with negative coordinates', function () {
69
+ var point = {
70
+ x: -3,
71
+ y: -7
72
+ };
73
+ var result = pointTool.addPoint(point);
74
+ expect(result).toEqual({
75
+ type: 'point',
76
+ x: -3,
77
+ y: -7
78
+ });
79
+ });
80
+ it('creates point with zero coordinates', function () {
81
+ var point = {
82
+ x: 0,
83
+ y: 0
84
+ };
85
+ var result = pointTool.addPoint(point);
86
+ expect(result).toEqual({
87
+ type: 'point',
88
+ x: 0,
89
+ y: 0
90
+ });
91
+ });
92
+ it('creates point at origin', function () {
93
+ var result = pointTool.addPoint({
94
+ x: 0,
95
+ y: 0
96
+ });
97
+ expect(result.x).toBe(0);
98
+ expect(result.y).toBe(0);
99
+ });
100
+ it('spreads all point properties', function () {
101
+ var point = {
102
+ x: 1,
103
+ y: 2,
104
+ label: 'A',
105
+ color: 'red'
106
+ };
107
+ var result = pointTool.addPoint(point);
108
+ expect(result).toEqual({
109
+ type: 'point',
110
+ x: 1,
111
+ y: 2,
112
+ label: 'A',
113
+ color: 'red'
114
+ });
115
+ });
116
+ it('preserves additional properties from point object', function () {
117
+ var point = {
118
+ x: 3,
119
+ y: 4,
120
+ id: 'point-1',
121
+ fill: 'blue',
122
+ stroke: 'black'
123
+ };
124
+ var result = pointTool.addPoint(point);
125
+ expect(result.type).toBe('point');
126
+ expect(result.x).toBe(3);
127
+ expect(result.y).toBe(4);
128
+ expect(result.id).toBe('point-1');
129
+ expect(result.fill).toBe('blue');
130
+ expect(result.stroke).toBe('black');
131
+ });
132
+ it('ignores existing mark parameter', function () {
133
+ var point = {
134
+ x: 1,
135
+ y: 2
136
+ };
137
+ var existingMark = {
138
+ type: 'point',
139
+ x: 5,
140
+ y: 5
141
+ };
142
+ var result = pointTool.addPoint(point, existingMark);
143
+
144
+ // Point tool always creates new mark, ignoring existing
145
+ expect(result).toEqual({
146
+ type: 'point',
147
+ x: 1,
148
+ y: 2
149
+ });
150
+ });
151
+ it('creates new point even with same coordinates', function () {
152
+ var point = {
153
+ x: 1,
154
+ y: 2
155
+ };
156
+ var result1 = pointTool.addPoint(point);
157
+ var result2 = pointTool.addPoint(point);
158
+ expect(result1).toEqual(result2);
159
+ expect(result1).not.toBe(result2); // Different object references
160
+ });
161
+ it('handles very large coordinates', function () {
162
+ var point = {
163
+ x: 1000000,
164
+ y: -1000000
165
+ };
166
+ var result = pointTool.addPoint(point);
167
+ expect(result.x).toBe(1000000);
168
+ expect(result.y).toBe(-1000000);
169
+ });
170
+ it('handles very small coordinates', function () {
171
+ var point = {
172
+ x: 0.0001,
173
+ y: 0.0002
174
+ };
175
+ var result = pointTool.addPoint(point);
176
+ expect(result.x).toBe(0.0001);
177
+ expect(result.y).toBe(0.0002);
178
+ });
179
+ });
180
+ describe('edge cases', function () {
181
+ it('handles point with only x coordinate', function () {
182
+ var point = {
183
+ x: 5
184
+ };
185
+ var result = pointTool.addPoint(point);
186
+ expect(result.type).toBe('point');
187
+ expect(result.x).toBe(5);
188
+ expect(result.y).toBeUndefined();
189
+ });
190
+ it('handles point with only y coordinate', function () {
191
+ var point = {
192
+ y: 5
193
+ };
194
+ var result = pointTool.addPoint(point);
195
+ expect(result.type).toBe('point');
196
+ expect(result.x).toBeUndefined();
197
+ expect(result.y).toBe(5);
198
+ });
199
+ it('handles empty point object', function () {
200
+ var point = {};
201
+ var result = pointTool.addPoint(point);
202
+ expect(result).toEqual({
203
+ type: 'point'
204
+ });
205
+ });
206
+ it('handles NaN coordinates', function () {
207
+ var point = {
208
+ x: NaN,
209
+ y: NaN
210
+ };
211
+ var result = pointTool.addPoint(point);
212
+ expect(result.type).toBe('point');
213
+ expect(Number.isNaN(result.x)).toBe(true);
214
+ expect(Number.isNaN(result.y)).toBe(true);
215
+ });
216
+ it('handles Infinity coordinates', function () {
217
+ var point = {
218
+ x: Infinity,
219
+ y: -Infinity
220
+ };
221
+ var result = pointTool.addPoint(point);
222
+ expect(result.x).toBe(Infinity);
223
+ expect(result.y).toBe(-Infinity);
224
+ });
225
+ });
226
+ describe('multiple points', function () {
227
+ it('creates multiple distinct points', function () {
228
+ var points = [{
229
+ x: 1,
230
+ y: 1
231
+ }, {
232
+ x: 2,
233
+ y: 2
234
+ }, {
235
+ x: 3,
236
+ y: 3
237
+ }];
238
+ var results = points.map(function (p) {
239
+ return pointTool.addPoint(p);
240
+ });
241
+ expect(results).toHaveLength(3);
242
+ results.forEach(function (result, i) {
243
+ expect(result.type).toBe('point');
244
+ expect(result.x).toBe(points[i].x);
245
+ expect(result.y).toBe(points[i].y);
246
+ });
247
+ });
248
+ it('each point is independent', function () {
249
+ var point1 = pointTool.addPoint({
250
+ x: 1,
251
+ y: 1
252
+ });
253
+ var point2 = pointTool.addPoint({
254
+ x: 2,
255
+ y: 2
256
+ });
257
+ point1.label = 'A';
258
+ expect(point2.label).toBeUndefined();
259
+ });
260
+ });
261
+ });
262
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW5kZXgiLCJyZXF1aXJlIiwiX2NvbXBvbmVudCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJkZXNjcmliZSIsInBvaW50VG9vbCIsImJlZm9yZUVhY2giLCJ0b29sIiwiaXQiLCJleHBlY3QiLCJ0b0hhdmVQcm9wZXJ0eSIsIlBvaW50IiwibGFiZWwiLCJ0b0JlIiwidHlwZSIsIkNvbXBvbmVudCIsImNvbXBsZXRlIiwidG9CZVVuZGVmaW5lZCIsInBvaW50IiwieCIsInkiLCJyZXN1bHQiLCJhZGRQb2ludCIsInRvRXF1YWwiLCJjb2xvciIsImlkIiwiZmlsbCIsInN0cm9rZSIsImV4aXN0aW5nTWFyayIsInJlc3VsdDEiLCJyZXN1bHQyIiwibm90IiwiTmFOIiwiTnVtYmVyIiwiaXNOYU4iLCJJbmZpbml0eSIsInBvaW50cyIsInJlc3VsdHMiLCJtYXAiLCJwIiwidG9IYXZlTGVuZ3RoIiwiZm9yRWFjaCIsImkiLCJwb2ludDEiLCJwb2ludDIiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdG9vbHMvcG9pbnQvX190ZXN0c19fL2luZGV4LnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9vbCB9IGZyb20gJy4uL2luZGV4JztcbmltcG9ydCBQb2ludCBmcm9tICcuLi9jb21wb25lbnQnO1xuXG5kZXNjcmliZSgncG9pbnQgdG9vbCcsICgpID0+IHtcbiAgbGV0IHBvaW50VG9vbDtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBwb2ludFRvb2wgPSB0b29sKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd0b29sIHN0cnVjdHVyZScsICgpID0+IHtcbiAgICBpdCgncmV0dXJucyBhbiBvYmplY3Qgd2l0aCByZXF1aXJlZCBwcm9wZXJ0aWVzJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHBvaW50VG9vbCkudG9IYXZlUHJvcGVydHkoJ2xhYmVsJywgJ1BvaW50Jyk7XG4gICAgICBleHBlY3QocG9pbnRUb29sKS50b0hhdmVQcm9wZXJ0eSgndHlwZScsICdwb2ludCcpO1xuICAgICAgZXhwZWN0KHBvaW50VG9vbCkudG9IYXZlUHJvcGVydHkoJ0NvbXBvbmVudCcsIFBvaW50KTtcbiAgICAgIGV4cGVjdChwb2ludFRvb2wpLnRvSGF2ZVByb3BlcnR5KCdhZGRQb2ludCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhcyBjb3JyZWN0IGxhYmVsJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHBvaW50VG9vbC5sYWJlbCkudG9CZSgnUG9pbnQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYXMgY29ycmVjdCB0eXBlJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHBvaW50VG9vbC50eXBlKS50b0JlKCdwb2ludCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3VzZXMgUG9pbnQgY29tcG9uZW50JywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHBvaW50VG9vbC5Db21wb25lbnQpLnRvQmUoUG9pbnQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2RvZXMgbm90IGhhdmUgY29tcGxldGUgbWV0aG9kJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHBvaW50VG9vbC5jb21wbGV0ZSkudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYWRkUG9pbnQnLCAoKSA9PiB7XG4gICAgaXQoJ2NyZWF0ZXMgYSBwb2ludCBtYXJrIGZyb20gY29vcmRpbmF0ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwb2ludCA9IHsgeDogMSwgeTogMiB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcG9pbnRUb29sLmFkZFBvaW50KHBvaW50KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7XG4gICAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICAgIHg6IDEsXG4gICAgICAgIHk6IDIsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdjcmVhdGVzIHBvaW50IHdpdGggaW50ZWdlciBjb29yZGluYXRlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHBvaW50ID0geyB4OiA1LCB5OiAxMCB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcG9pbnRUb29sLmFkZFBvaW50KHBvaW50KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7XG4gICAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICAgIHg6IDUsXG4gICAgICAgIHk6IDEwLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnY3JlYXRlcyBwb2ludCB3aXRoIGRlY2ltYWwgY29vcmRpbmF0ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwb2ludCA9IHsgeDogMS41LCB5OiAyLjc1IH07XG4gICAgICBjb25zdCByZXN1bHQgPSBwb2ludFRvb2wuYWRkUG9pbnQocG9pbnQpO1xuXG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICAgICAgdHlwZTogJ3BvaW50JyxcbiAgICAgICAgeDogMS41LFxuICAgICAgICB5OiAyLjc1LFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnY3JlYXRlcyBwb2ludCB3aXRoIG5lZ2F0aXZlIGNvb3JkaW5hdGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgcG9pbnQgPSB7IHg6IC0zLCB5OiAtNyB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcG9pbnRUb29sLmFkZFBvaW50KHBvaW50KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7XG4gICAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICAgIHg6IC0zLFxuICAgICAgICB5OiAtNyxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NyZWF0ZXMgcG9pbnQgd2l0aCB6ZXJvIGNvb3JkaW5hdGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgcG9pbnQgPSB7IHg6IDAsIHk6IDAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBvaW50VG9vbC5hZGRQb2ludChwb2ludCk7XG5cbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnY3JlYXRlcyBwb2ludCBhdCBvcmlnaW4nLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBwb2ludFRvb2wuYWRkUG9pbnQoeyB4OiAwLCB5OiAwIH0pO1xuXG4gICAgICBleHBlY3QocmVzdWx0LngpLnRvQmUoMCk7XG4gICAgICBleHBlY3QocmVzdWx0LnkpLnRvQmUoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc3ByZWFkcyBhbGwgcG9pbnQgcHJvcGVydGllcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHBvaW50ID0geyB4OiAxLCB5OiAyLCBsYWJlbDogJ0EnLCBjb2xvcjogJ3JlZCcgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBvaW50VG9vbC5hZGRQb2ludChwb2ludCk7XG5cbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICB4OiAxLFxuICAgICAgICB5OiAyLFxuICAgICAgICBsYWJlbDogJ0EnLFxuICAgICAgICBjb2xvcjogJ3JlZCcsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdwcmVzZXJ2ZXMgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGZyb20gcG9pbnQgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgcG9pbnQgPSB7XG4gICAgICAgIHg6IDMsXG4gICAgICAgIHk6IDQsXG4gICAgICAgIGlkOiAncG9pbnQtMScsXG4gICAgICAgIGZpbGw6ICdibHVlJyxcbiAgICAgICAgc3Ryb2tlOiAnYmxhY2snLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBvaW50VG9vbC5hZGRQb2ludChwb2ludCk7XG5cbiAgICAgIGV4cGVjdChyZXN1bHQudHlwZSkudG9CZSgncG9pbnQnKTtcbiAgICAgIGV4cGVjdChyZXN1bHQueCkudG9CZSgzKTtcbiAgICAgIGV4cGVjdChyZXN1bHQueSkudG9CZSg0KTtcbiAgICAgIGV4cGVjdChyZXN1bHQuaWQpLnRvQmUoJ3BvaW50LTEnKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuZmlsbCkudG9CZSgnYmx1ZScpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5zdHJva2UpLnRvQmUoJ2JsYWNrJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnaWdub3JlcyBleGlzdGluZyBtYXJrIHBhcmFtZXRlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IHBvaW50ID0geyB4OiAxLCB5OiAyIH07XG4gICAgICBjb25zdCBleGlzdGluZ01hcmsgPSB7IHR5cGU6ICdwb2ludCcsIHg6IDUsIHk6IDUgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBvaW50VG9vbC5hZGRQb2ludChwb2ludCwgZXhpc3RpbmdNYXJrKTtcblxuICAgICAgLy8gUG9pbnQgdG9vbCBhbHdheXMgY3JlYXRlcyBuZXcgbWFyaywgaWdub3JpbmcgZXhpc3RpbmdcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgICB4OiAxLFxuICAgICAgICB5OiAyLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnY3JlYXRlcyBuZXcgcG9pbnQgZXZlbiB3aXRoIHNhbWUgY29vcmRpbmF0ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwb2ludCA9IHsgeDogMSwgeTogMiB9O1xuICAgICAgY29uc3QgcmVzdWx0MSA9IHBvaW50VG9vbC5hZGRQb2ludChwb2ludCk7XG4gICAgICBjb25zdCByZXN1bHQyID0gcG9pbnRUb29sLmFkZFBvaW50KHBvaW50KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdDEpLnRvRXF1YWwocmVzdWx0Mik7XG4gICAgICBleHBlY3QocmVzdWx0MSkubm90LnRvQmUocmVzdWx0Mik7IC8vIERpZmZlcmVudCBvYmplY3QgcmVmZXJlbmNlc1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgdmVyeSBsYXJnZSBjb29yZGluYXRlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHBvaW50ID0geyB4OiAxMDAwMDAwLCB5OiAtMTAwMDAwMCB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcG9pbnRUb29sLmFkZFBvaW50KHBvaW50KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdC54KS50b0JlKDEwMDAwMDApO1xuICAgICAgZXhwZWN0KHJlc3VsdC55KS50b0JlKC0xMDAwMDAwKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVzIHZlcnkgc21hbGwgY29vcmRpbmF0ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwb2ludCA9IHsgeDogMC4wMDAxLCB5OiAwLjAwMDIgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBvaW50VG9vbC5hZGRQb2ludChwb2ludCk7XG5cbiAgICAgIGV4cGVjdChyZXN1bHQueCkudG9CZSgwLjAwMDEpO1xuICAgICAgZXhwZWN0KHJlc3VsdC55KS50b0JlKDAuMDAwMik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdlZGdlIGNhc2VzJywgKCkgPT4ge1xuICAgIGl0KCdoYW5kbGVzIHBvaW50IHdpdGggb25seSB4IGNvb3JkaW5hdGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwb2ludCA9IHsgeDogNSB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gcG9pbnRUb29sLmFkZFBvaW50KHBvaW50KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdC50eXBlKS50b0JlKCdwb2ludCcpO1xuICAgICAgZXhwZWN0KHJlc3VsdC54KS50b0JlKDUpO1xuICAgICAgZXhwZWN0KHJlc3VsdC55KS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlcyBwb2ludCB3aXRoIG9ubHkgeSBjb29yZGluYXRlJywgKCkgPT4ge1xuICAgICAgY29uc3QgcG9pbnQgPSB7IHk6IDUgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBvaW50VG9vbC5hZGRQb2ludChwb2ludCk7XG5cbiAgICAgIGV4cGVjdChyZXN1bHQudHlwZSkudG9CZSgncG9pbnQnKTtcbiAgICAgIGV4cGVjdChyZXN1bHQueCkudG9CZVVuZGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJlc3VsdC55KS50b0JlKDUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgZW1wdHkgcG9pbnQgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgcG9pbnQgPSB7fTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBvaW50VG9vbC5hZGRQb2ludChwb2ludCk7XG5cbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgICAgICB0eXBlOiAncG9pbnQnLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlcyBOYU4gY29vcmRpbmF0ZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwb2ludCA9IHsgeDogTmFOLCB5OiBOYU4gfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBvaW50VG9vbC5hZGRQb2ludChwb2ludCk7XG5cbiAgICAgIGV4cGVjdChyZXN1bHQudHlwZSkudG9CZSgncG9pbnQnKTtcbiAgICAgIGV4cGVjdChOdW1iZXIuaXNOYU4ocmVzdWx0LngpKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KE51bWJlci5pc05hTihyZXN1bHQueSkpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlcyBJbmZpbml0eSBjb29yZGluYXRlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHBvaW50ID0geyB4OiBJbmZpbml0eSwgeTogLUluZmluaXR5IH07XG4gICAgICBjb25zdCByZXN1bHQgPSBwb2ludFRvb2wuYWRkUG9pbnQocG9pbnQpO1xuXG4gICAgICBleHBlY3QocmVzdWx0LngpLnRvQmUoSW5maW5pdHkpO1xuICAgICAgZXhwZWN0KHJlc3VsdC55KS50b0JlKC1JbmZpbml0eSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdtdWx0aXBsZSBwb2ludHMnLCAoKSA9PiB7XG4gICAgaXQoJ2NyZWF0ZXMgbXVsdGlwbGUgZGlzdGluY3QgcG9pbnRzJywgKCkgPT4ge1xuICAgICAgY29uc3QgcG9pbnRzID0gW1xuICAgICAgICB7IHg6IDEsIHk6IDEgfSxcbiAgICAgICAgeyB4OiAyLCB5OiAyIH0sXG4gICAgICAgIHsgeDogMywgeTogMyB9LFxuICAgICAgXTtcblxuICAgICAgY29uc3QgcmVzdWx0cyA9IHBvaW50cy5tYXAoKHApID0+IHBvaW50VG9vbC5hZGRQb2ludChwKSk7XG5cbiAgICAgIGV4cGVjdChyZXN1bHRzKS50b0hhdmVMZW5ndGgoMyk7XG4gICAgICByZXN1bHRzLmZvckVhY2goKHJlc3VsdCwgaSkgPT4ge1xuICAgICAgICBleHBlY3QocmVzdWx0LnR5cGUpLnRvQmUoJ3BvaW50Jyk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQueCkudG9CZShwb2ludHNbaV0ueCk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQueSkudG9CZShwb2ludHNbaV0ueSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdlYWNoIHBvaW50IGlzIGluZGVwZW5kZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgcG9pbnQxID0gcG9pbnRUb29sLmFkZFBvaW50KHsgeDogMSwgeTogMSB9KTtcbiAgICAgIGNvbnN0IHBvaW50MiA9IHBvaW50VG9vbC5hZGRQb2ludCh7IHg6IDIsIHk6IDIgfSk7XG5cbiAgICAgIHBvaW50MS5sYWJlbCA9ICdBJztcbiAgICAgIGV4cGVjdChwb2ludDIubGFiZWwpLnRvQmVVbmRlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBRUFHLFFBQVEsQ0FBQyxZQUFZLEVBQUUsWUFBTTtFQUMzQixJQUFJQyxTQUFTO0VBRWJDLFVBQVUsQ0FBQyxZQUFNO0lBQ2ZELFNBQVMsR0FBRyxJQUFB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
@@ -28,7 +28,6 @@ var Point = exports.Point = /*#__PURE__*/function (_React$Component) {
28
28
  var _this;
29
29
  (0, _classCallCheck2["default"])(this, Point);
30
30
  _this = _callSuper(this, Point, [props]);
31
- // which label is being edited, null if none - a point only has the one
32
31
  (0, _defineProperty2["default"])(_this, "move", function (p) {
33
32
  var mark = _objectSpread(_objectSpread({}, _this.state.mark), p);
34
33
  _this.setState({
@@ -74,13 +73,6 @@ var Point = exports.Point = /*#__PURE__*/function (_React$Component) {
74
73
  onChange(_this.props.mark, update);
75
74
  });
76
75
  });
77
- (0, _defineProperty2["default"])(_this, "stopEditingLabel", function () {
78
- if (_this.state.editingLabel !== null) {
79
- _this.setState({
80
- editingLabel: null
81
- });
82
- }
83
- });
84
76
  (0, _defineProperty2["default"])(_this, "clickPoint", function () {
85
77
  var _this$props2 = _this.props,
86
78
  labelModeEnabled = _this$props2.labelModeEnabled,
@@ -98,29 +90,19 @@ var Point = exports.Point = /*#__PURE__*/function (_React$Component) {
98
90
  label: ''
99
91
  }, mark));
100
92
 
101
- // MarkLabel focuses itself once it is rendered - it also holds on to the focus if the model
102
- // that comes back from the host (api save) remounts the input.
103
- _this.setState({
104
- editingLabel: 'label'
105
- });
93
+ // MarkLabel is only rendered after the parent re-renders with the new label prop,
94
+ // so we defer focus until after that render cycle completes.
95
+ setTimeout(function () {
96
+ if (_this.input) {
97
+ _this.input.focus();
98
+ }
99
+ }, 0);
106
100
  });
107
- _this.state = {
108
- editingLabel: null
109
- };
101
+ _this.state = {};
110
102
  return _this;
111
103
  }
112
104
  (0, _inherits2["default"])(Point, _React$Component);
113
105
  return (0, _createClass2["default"])(Point, [{
114
- key: "componentDidUpdate",
115
- value: function componentDidUpdate(prevProps) {
116
- // leaving label mode closes any label that is still being edited
117
- if (prevProps.labelModeEnabled && !this.props.labelModeEnabled && this.state.editingLabel !== null) {
118
- this.setState({
119
- editingLabel: null
120
- });
121
- }
122
- }
123
- }, {
124
106
  key: "render",
125
107
  value: function render() {
126
108
  var _this2 = this;
@@ -129,7 +111,6 @@ var Point = exports.Point = /*#__PURE__*/function (_React$Component) {
129
111
  graphProps = _this$props3.graphProps,
130
112
  labelNode = _this$props3.labelNode,
131
113
  labelModeEnabled = _this$props3.labelModeEnabled;
132
- var editingLabel = this.state.editingLabel;
133
114
  var mark = this.state.mark ? this.state.mark : this.props.mark;
134
115
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_point.BasePoint, (0, _extends2["default"])({}, mark, {
135
116
  coordinatesOnHover: coordinatesOnHover,
@@ -151,11 +132,9 @@ var Point = exports.Point = /*#__PURE__*/function (_React$Component) {
151
132
  inputRef: function inputRef(r) {
152
133
  return _this2.input = r;
153
134
  },
154
- autoFocus: editingLabel === 'label',
155
135
  disabled: !labelModeEnabled,
156
136
  mark: mark,
157
137
  graphProps: graphProps,
158
- onBlur: this.stopEditingLabel,
159
138
  onChange: this.labelChange
160
139
  }), labelNode));
161
140
  }
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","names":["_react","_interopRequireDefault","require","_point","_types","_plot","_reactDom","_markLabel","_lodashEs","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","call","Point","exports","_React$Component","props","_this","_classCallCheck2","p","mark","state","setState","onDragStart","update","label","_this$props","onChange","onDragStop","undefined","isEqual","isEmpty","editingLabel","_this$props2","labelModeEnabled","onClick","disabled","_inherits2","_createClass2","key","value","componentDidUpdate","prevProps","render","_this2","_this$props3","coordinatesOnHover","graphProps","labelNode","createElement","Fragment","BasePoint","_extends2","onDrag","move","startDrag","stopDrag","clickPoint","onTouchStart","stopPropagation","onTouchEnd","hasOwnProperty","ReactDOM","createPortal","inputRef","input","autoFocus","onBlur","stopEditingLabel","labelChange","React","Component","types","GraphPropsType","isRequired","ToolPropTypeFields","_default"],"sources":["../../../src/tools/point/component.jsx"],"sourcesContent":["import React from 'react';\nimport { BasePoint } from '../shared/point';\nimport { ToolPropTypeFields } from '../shared/types';\nimport { types } from '@pie-lib/plot';\nimport ReactDOM from 'react-dom';\nimport MarkLabel from '../../mark-label';\nimport { isEmpty, isEqual } from 'lodash-es';\n\nexport class Point extends React.Component {\n static propTypes = {\n graphProps: types.GraphPropsType.isRequired,\n ...ToolPropTypeFields,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n // which label is being edited, null if none - a point only has the one\n this.state = { editingLabel: null };\n }\n\n componentDidUpdate(prevProps) {\n // leaving label mode closes any label that is still being edited\n if (prevProps.labelModeEnabled && !this.props.labelModeEnabled && this.state.editingLabel !== null) {\n this.setState({ editingLabel: null });\n }\n }\n\n move = (p) => {\n const mark = { ...this.state.mark, ...p };\n this.setState({ mark });\n };\n\n startDrag = () => {\n const { onDragStart } = this.props;\n const update = { ...this.props.mark };\n\n if (update.label === '') {\n delete update.label;\n }\n this.setState({ mark: update });\n if (onDragStart) onDragStart();\n };\n\n stopDrag = () => {\n const { onChange, onDragStop } = this.props;\n const mark = { ...this.state.mark };\n this.setState({ mark: undefined }, () => {\n if (!isEqual(this.props.mark, mark)) {\n onChange(this.props.mark, mark);\n }\n if (onDragStop) onDragStop();\n });\n };\n\n labelChange = (label) => {\n const { onChange } = this.props;\n const update = { ...this.props.mark, label };\n\n if (!label || isEmpty(label)) {\n delete update.label;\n }\n\n this.setState({ mark: update }, () => {\n onChange(this.props.mark, update);\n });\n };\n\n stopEditingLabel = () => {\n if (this.state.editingLabel !== null) {\n this.setState({ editingLabel: null });\n }\n };\n\n clickPoint = () => {\n const { labelModeEnabled, onChange, onClick, mark } = this.props;\n\n if (!labelModeEnabled) {\n onClick(mark);\n return;\n }\n\n if (mark.disabled) {\n return;\n }\n\n onChange(mark, { label: '', ...mark });\n\n // MarkLabel focuses itself once it is rendered - it also holds on to the focus if the model\n // that comes back from the host (api save) remounts the input.\n this.setState({ editingLabel: 'label' });\n };\n\n render() {\n const { coordinatesOnHover, graphProps, labelNode, labelModeEnabled } = this.props;\n const { editingLabel } = this.state;\n const mark = this.state.mark ? this.state.mark : this.props.mark;\n\n return (\n <React.Fragment>\n <BasePoint\n {...mark}\n coordinatesOnHover={coordinatesOnHover}\n graphProps={graphProps}\n labelNode={labelNode}\n onDrag={this.move}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n onClick={this.clickPoint}\n onTouchStart={(e) => {\n e.stopPropagation();\n this.clickPoint();\n }}\n onTouchEnd={(e) => {\n e.stopPropagation();\n this.clickPoint();\n }}\n />\n {labelNode &&\n Object.prototype.hasOwnProperty.call(mark, 'label') &&\n ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input = r)}\n autoFocus={editingLabel === 'label'}\n disabled={!labelModeEnabled}\n mark={mark}\n graphProps={graphProps}\n onBlur={this.stopEditingLabel}\n onChange={this.labelChange}\n />,\n labelNode,\n )}\n </React.Fragment>\n );\n }\n}\n\nexport default Point;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"component.js","names":["_react","_interopRequireDefault","require","_point","_types","_plot","_reactDom","_markLabel","_lodashEs","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","call","Point","exports","_React$Component","props","_this","_classCallCheck2","p","mark","state","setState","onDragStart","update","label","_this$props","onChange","onDragStop","undefined","isEqual","isEmpty","_this$props2","labelModeEnabled","onClick","disabled","setTimeout","input","focus","_inherits2","_createClass2","key","value","render","_this2","_this$props3","coordinatesOnHover","graphProps","labelNode","createElement","Fragment","BasePoint","_extends2","onDrag","move","startDrag","stopDrag","clickPoint","onTouchStart","stopPropagation","onTouchEnd","hasOwnProperty","ReactDOM","createPortal","inputRef","labelChange","React","Component","types","GraphPropsType","isRequired","ToolPropTypeFields","_default"],"sources":["../../../src/tools/point/component.jsx"],"sourcesContent":["import React from 'react';\nimport { BasePoint } from '../shared/point';\nimport { ToolPropTypeFields } from '../shared/types';\nimport { types } from '@pie-lib/plot';\nimport ReactDOM from 'react-dom';\nimport MarkLabel from '../../mark-label';\nimport { isEmpty, isEqual } from 'lodash-es';\n\nexport class Point extends React.Component {\n static propTypes = {\n graphProps: types.GraphPropsType.isRequired,\n ...ToolPropTypeFields,\n };\n\n static defaultProps = {};\n\n constructor(props) {\n super(props);\n this.state = {};\n }\n\n move = (p) => {\n const mark = { ...this.state.mark, ...p };\n this.setState({ mark });\n };\n\n startDrag = () => {\n const { onDragStart } = this.props;\n const update = { ...this.props.mark };\n\n if (update.label === '') {\n delete update.label;\n }\n this.setState({ mark: update });\n if (onDragStart) onDragStart();\n };\n\n stopDrag = () => {\n const { onChange, onDragStop } = this.props;\n const mark = { ...this.state.mark };\n this.setState({ mark: undefined }, () => {\n if (!isEqual(this.props.mark, mark)) {\n onChange(this.props.mark, mark);\n }\n if (onDragStop) onDragStop();\n });\n };\n\n labelChange = (label) => {\n const { onChange } = this.props;\n const update = { ...this.props.mark, label };\n\n if (!label || isEmpty(label)) {\n delete update.label;\n }\n\n this.setState({ mark: update }, () => {\n onChange(this.props.mark, update);\n });\n };\n\n clickPoint = () => {\n const { labelModeEnabled, onChange, onClick, mark } = this.props;\n\n if (!labelModeEnabled) {\n onClick(mark);\n return;\n }\n\n if (mark.disabled) {\n return;\n }\n\n onChange(mark, { label: '', ...mark });\n\n // MarkLabel is only rendered after the parent re-renders with the new label prop,\n // so we defer focus until after that render cycle completes.\n setTimeout(() => {\n if (this.input) {\n this.input.focus();\n }\n }, 0);\n };\n\n render() {\n const { coordinatesOnHover, graphProps, labelNode, labelModeEnabled } = this.props;\n const mark = this.state.mark ? this.state.mark : this.props.mark;\n\n return (\n <React.Fragment>\n <BasePoint\n {...mark}\n coordinatesOnHover={coordinatesOnHover}\n graphProps={graphProps}\n labelNode={labelNode}\n onDrag={this.move}\n onDragStart={this.startDrag}\n onDragStop={this.stopDrag}\n onClick={this.clickPoint}\n onTouchStart={(e) => {\n e.stopPropagation();\n this.clickPoint();\n }}\n onTouchEnd={(e) => {\n e.stopPropagation();\n this.clickPoint();\n }}\n />\n {labelNode &&\n Object.prototype.hasOwnProperty.call(mark, 'label') &&\n ReactDOM.createPortal(\n <MarkLabel\n inputRef={(r) => (this.input = r)}\n disabled={!labelModeEnabled}\n mark={mark}\n graphProps={graphProps}\n onChange={this.labelChange}\n />,\n labelNode,\n )}\n </React.Fragment>\n );\n }\n}\n\nexport default Point;\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,UAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AAA6C,SAAAO,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,aAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAAA,SAAAoB,WAAAlB,CAAA,EAAAI,CAAA,EAAAN,CAAA,WAAAM,CAAA,OAAAe,gBAAA,aAAAf,CAAA,OAAAgB,2BAAA,aAAApB,CAAA,EAAAqB,yBAAA,KAAAC,OAAA,CAAAC,SAAA,CAAAnB,CAAA,EAAAN,CAAA,YAAAqB,gBAAA,aAAAnB,CAAA,EAAAwB,WAAA,IAAApB,CAAA,CAAAK,KAAA,CAAAT,CAAA,EAAAF,CAAA;AAAA,SAAAuB,0BAAA,cAAArB,CAAA,IAAAyB,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAN,OAAA,CAAAC,SAAA,CAAAE,OAAA,iCAAAzB,CAAA,aAAAqB,yBAAA,YAAAA,0BAAA,aAAArB,CAAA;AAAA,IAEhC6B,KAAK,GAAAC,OAAA,CAAAD,KAAA,0BAAAE,gBAAA;EAQhB,SAAAF,MAAYG,KAAK,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,mBAAAL,KAAA;IACjBI,KAAA,GAAAf,UAAA,OAAAW,KAAA,GAAMG,KAAK;IAAE,IAAAlB,gBAAA,aAAAmB,KAAA,UAIR,UAACE,CAAC,EAAK;MACZ,IAAMC,IAAI,GAAA1B,aAAA,CAAAA,aAAA,KAAQuB,KAAA,CAAKI,KAAK,CAACD,IAAI,GAAKD,CAAC,CAAE;MACzCF,KAAA,CAAKK,QAAQ,CAAC;QAAEF,IAAI,EAAJA;MAAK,CAAC,CAAC;IACzB,CAAC;IAAA,IAAAtB,gBAAA,aAAAmB,KAAA,eAEW,YAAM;MAChB,IAAQM,WAAW,GAAKN,KAAA,CAAKD,KAAK,CAA1BO,WAAW;MACnB,IAAMC,MAAM,GAAA9B,aAAA,KAAQuB,KAAA,CAAKD,KAAK,CAACI,IAAI,CAAE;MAErC,IAAII,MAAM,CAACC,KAAK,KAAK,EAAE,EAAE;QACvB,OAAOD,MAAM,CAACC,KAAK;MACrB;MACAR,KAAA,CAAKK,QAAQ,CAAC;QAAEF,IAAI,EAAEI;MAAO,CAAC,CAAC;MAC/B,IAAID,WAAW,EAAEA,WAAW,CAAC,CAAC;IAChC,CAAC;IAAA,IAAAzB,gBAAA,aAAAmB,KAAA,cAEU,YAAM;MACf,IAAAS,WAAA,GAAiCT,KAAA,CAAKD,KAAK;QAAnCW,QAAQ,GAAAD,WAAA,CAARC,QAAQ;QAAEC,UAAU,GAAAF,WAAA,CAAVE,UAAU;MAC5B,IAAMR,IAAI,GAAA1B,aAAA,KAAQuB,KAAA,CAAKI,KAAK,CAACD,IAAI,CAAE;MACnCH,KAAA,CAAKK,QAAQ,CAAC;QAAEF,IAAI,EAAES;MAAU,CAAC,EAAE,YAAM;QACvC,IAAI,CAAC,IAAAC,iBAAO,EAACb,KAAA,CAAKD,KAAK,CAACI,IAAI,EAAEA,IAAI,CAAC,EAAE;UACnCO,QAAQ,CAACV,KAAA,CAAKD,KAAK,CAACI,IAAI,EAAEA,IAAI,CAAC;QACjC;QACA,IAAIQ,UAAU,EAAEA,UAAU,CAAC,CAAC;MAC9B,CAAC,CAAC;IACJ,CAAC;IAAA,IAAA9B,gBAAA,aAAAmB,KAAA,iBAEa,UAACQ,KAAK,EAAK;MACvB,IAAQE,QAAQ,GAAKV,KAAA,CAAKD,KAAK,CAAvBW,QAAQ;MAChB,IAAMH,MAAM,GAAA9B,aAAA,CAAAA,aAAA,KAAQuB,KAAA,CAAKD,KAAK,CAACI,IAAI;QAAEK,KAAK,EAALA;MAAK,EAAE;MAE5C,IAAI,CAACA,KAAK,IAAI,IAAAM,iBAAO,EAACN,KAAK,CAAC,EAAE;QAC5B,OAAOD,MAAM,CAACC,KAAK;MACrB;MAEAR,KAAA,CAAKK,QAAQ,CAAC;QAAEF,IAAI,EAAEI;MAAO,CAAC,EAAE,YAAM;QACpCG,QAAQ,CAACV,KAAA,CAAKD,KAAK,CAACI,IAAI,EAAEI,MAAM,CAAC;MACnC,CAAC,CAAC;IACJ,CAAC;IAAA,IAAA1B,gBAAA,aAAAmB,KAAA,gBAEY,YAAM;MACjB,IAAAe,YAAA,GAAsDf,KAAA,CAAKD,KAAK;QAAxDiB,gBAAgB,GAAAD,YAAA,CAAhBC,gBAAgB;QAAEN,QAAQ,GAAAK,YAAA,CAARL,QAAQ;QAAEO,OAAO,GAAAF,YAAA,CAAPE,OAAO;QAAEd,IAAI,GAAAY,YAAA,CAAJZ,IAAI;MAEjD,IAAI,CAACa,gBAAgB,EAAE;QACrBC,OAAO,CAACd,IAAI,CAAC;QACb;MACF;MAEA,IAAIA,IAAI,CAACe,QAAQ,EAAE;QACjB;MACF;MAEAR,QAAQ,CAACP,IAAI,EAAA1B,aAAA;QAAI+B,KAAK,EAAE;MAAE,GAAKL,IAAI,CAAE,CAAC;;MAEtC;MACA;MACAgB,UAAU,CAAC,YAAM;QACf,IAAInB,KAAA,CAAKoB,KAAK,EAAE;UACdpB,KAAA,CAAKoB,KAAK,CAACC,KAAK,CAAC,CAAC;QACpB;MACF,CAAC,EAAE,CAAC,CAAC;IACP,CAAC;IAhECrB,KAAA,CAAKI,KAAK,GAAG,CAAC,CAAC;IAAC,OAAAJ,KAAA;EAClB;EAAC,IAAAsB,UAAA,aAAA1B,KAAA,EAAAE,gBAAA;EAAA,WAAAyB,aAAA,aAAA3B,KAAA;IAAA4B,GAAA;IAAAC,KAAA,EAiED,SAAAC,MAAMA,CAAA,EAAG;MAAA,IAAAC,MAAA;MACP,IAAAC,YAAA,GAAwE,IAAI,CAAC7B,KAAK;QAA1E8B,kBAAkB,GAAAD,YAAA,CAAlBC,kBAAkB;QAAEC,UAAU,GAAAF,YAAA,CAAVE,UAAU;QAAEC,SAAS,GAAAH,YAAA,CAATG,SAAS;QAAEf,gBAAgB,GAAAY,YAAA,CAAhBZ,gBAAgB;MACnE,IAAMb,IAAI,GAAG,IAAI,CAACC,KAAK,CAACD,IAAI,GAAG,IAAI,CAACC,KAAK,CAACD,IAAI,GAAG,IAAI,CAACJ,KAAK,CAACI,IAAI;MAEhE,oBACEhD,MAAA,YAAA6E,aAAA,CAAC7E,MAAA,WAAK,CAAC8E,QAAQ,qBACb9E,MAAA,YAAA6E,aAAA,CAAC1E,MAAA,CAAA4E,SAAS,MAAAC,SAAA,iBACJhC,IAAI;QACR0B,kBAAkB,EAAEA,kBAAmB;QACvCC,UAAU,EAAEA,UAAW;QACvBC,SAAS,EAAEA,SAAU;QACrBK,MAAM,EAAE,IAAI,CAACC,IAAK;QAClB/B,WAAW,EAAE,IAAI,CAACgC,SAAU;QAC5B3B,UAAU,EAAE,IAAI,CAAC4B,QAAS;QAC1BtB,OAAO,EAAE,IAAI,CAACuB,UAAW;QACzBC,YAAY,EAAE,SAAdA,YAAYA,CAAG5E,CAAC,EAAK;UACnBA,CAAC,CAAC6E,eAAe,CAAC,CAAC;UACnBf,MAAI,CAACa,UAAU,CAAC,CAAC;QACnB,CAAE;QACFG,UAAU,EAAE,SAAZA,UAAUA,CAAG9E,CAAC,EAAK;UACjBA,CAAC,CAAC6E,eAAe,CAAC,CAAC;UACnBf,MAAI,CAACa,UAAU,CAAC,CAAC;QACnB;MAAE,EACH,CAAC,EACDT,SAAS,IACR/D,MAAM,CAACyB,SAAS,CAACmD,cAAc,CAACjD,IAAI,CAACQ,IAAI,EAAE,OAAO,CAAC,iBACnD0C,oBAAQ,CAACC,YAAY,cACnB3F,MAAA,YAAA6E,aAAA,CAACtE,UAAA,WAAS;QACRqF,QAAQ,EAAE,SAAVA,QAAQA,CAAGjF,CAAC;UAAA,OAAM6D,MAAI,CAACP,KAAK,GAAGtD,CAAC;QAAA,CAAE;QAClCoD,QAAQ,EAAE,CAACF,gBAAiB;QAC5Bb,IAAI,EAAEA,IAAK;QACX2B,UAAU,EAAEA,UAAW;QACvBpB,QAAQ,EAAE,IAAI,CAACsC;MAAY,CAC5B,CAAC,EACFjB,SACF,CACY,CAAC;IAErB;EAAC;AAAA,EAlHwBkB,iBAAK,CAACC,SAAS;AAAA,IAAArE,gBAAA,aAA7Be,KAAK,eAAAnB,aAAA;EAEdqD,UAAU,EAAEqB,WAAK,CAACC,cAAc,CAACC;AAAU,GACxCC,yBAAkB;AAAA,IAAAzE,gBAAA,aAHZe,KAAK,kBAMM,CAAC,CAAC;AAAA,IAAA2D,QAAA,GAAA1D,OAAA,cA+GXD,KAAK","ignoreList":[]}