@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,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
|
|
102
|
-
//
|
|
103
|
-
|
|
104
|
-
|
|
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":"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","ignoreList":[]}
|