@gpa-gemstone/react-graph 1.0.23 → 1.0.25
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/lib/AggregatingCircles.d.ts +16 -0
- package/lib/AggregatingCircles.js +173 -0
- package/lib/Circle.d.ts +23 -0
- package/lib/Circle.js +115 -0
- package/lib/GraphContext.d.ts +11 -6
- package/lib/GraphContext.js +7 -2
- package/lib/Legend.js +4 -3
- package/lib/Line.js +5 -22
- package/lib/LineLegend.d.ts +11 -0
- package/lib/LineLegend.js +84 -0
- package/lib/LineWithThreshold.d.ts +2 -8
- package/lib/LineWithThreshold.js +1 -1
- package/lib/LogAxis.js +3 -8
- package/lib/Plot.d.ts +4 -0
- package/lib/Plot.js +141 -87
- package/lib/Series.d.ts +15 -0
- package/lib/Series.js +90 -0
- package/lib/index.d.ts +3 -1
- package/lib/index.js +6 -2
- package/package.json +2 -2
package/lib/Plot.js
CHANGED
|
@@ -61,6 +61,8 @@ var Line_1 = require("./Line");
|
|
|
61
61
|
var Button_1 = require("./Button");
|
|
62
62
|
var HorizontalMarker_1 = require("./HorizontalMarker");
|
|
63
63
|
var VerticalMarker_1 = require("./VerticalMarker");
|
|
64
|
+
var Circle_1 = require("./Circle");
|
|
65
|
+
var AggregatingCircles_1 = require("./AggregatingCircles");
|
|
64
66
|
var SvgStyle = {
|
|
65
67
|
fill: 'none',
|
|
66
68
|
userSelect: 'none',
|
|
@@ -76,33 +78,64 @@ var Plot = function (props) {
|
|
|
76
78
|
Actual plot that will handle Axis etc.
|
|
77
79
|
*/
|
|
78
80
|
var SVGref = React.useRef(null);
|
|
81
|
+
var handlers = React.useRef(new Map());
|
|
79
82
|
var guid = React.useMemo(function () { return (0, helper_functions_1.CreateGuid)(); }, []);
|
|
80
83
|
var _a = __read(React.useState(new Map()), 2), data = _a[0], setData = _a[1];
|
|
81
|
-
var _b = __read(React.useState(
|
|
82
|
-
var _c = __read(React.useState(
|
|
83
|
-
var _d = __read(React.useState(
|
|
84
|
-
var _e = __read(React.useState(
|
|
85
|
-
var _f = __read(React.useState(
|
|
86
|
-
var _g = __read(React.useState(
|
|
87
|
-
var _h = __read(React.useState(
|
|
88
|
-
var _j = __read(React.useState('
|
|
89
|
-
var _k = __read(React.useState(
|
|
90
|
-
var _l = __read(React.useState(
|
|
91
|
-
var _m = __read(React.useState([0, 0]), 2),
|
|
92
|
-
var _o = __read(React.useState(
|
|
93
|
-
var _p = __read(React.useState(10), 2),
|
|
94
|
-
var _q = __read(React.useState(
|
|
95
|
-
var _r = __read(React.useState(5), 2),
|
|
96
|
-
var _s = __read(React.useState(
|
|
97
|
-
var _t = __read(React.useState(0), 2),
|
|
98
|
-
var _u = __read(React.useState(0), 2),
|
|
99
|
-
|
|
84
|
+
var _b = __read(React.useState(props.defaultTdomain), 2), tDomain = _b[0], setTdomain = _b[1];
|
|
85
|
+
var _c = __read(React.useState(0), 2), tOffset = _c[0], setToffset = _c[1];
|
|
86
|
+
var _d = __read(React.useState(1), 2), tScale = _d[0], setTscale = _d[1];
|
|
87
|
+
var _e = __read(React.useState([0, 0]), 2), yDomain = _e[0], setYdomain = _e[1];
|
|
88
|
+
var _f = __read(React.useState(0), 2), yOffset = _f[0], setYoffset = _f[1];
|
|
89
|
+
var _g = __read(React.useState(1), 2), yScale = _g[0], setYscale = _g[1];
|
|
90
|
+
var _h = __read(React.useState('none'), 2), mouseMode = _h[0], setMouseMode = _h[1];
|
|
91
|
+
var _j = __read(React.useState('zoom'), 2), selectedMode = _j[0], setSelectedMode = _j[1];
|
|
92
|
+
var _k = __read(React.useState(false), 2), mouseIn = _k[0], setMouseIn = _k[1];
|
|
93
|
+
var _l = __read(React.useState([0, 0]), 2), mousePosition = _l[0], setMousePosition = _l[1];
|
|
94
|
+
var _m = __read(React.useState([0, 0]), 2), mouseClick = _m[0], setMouseClick = _m[1];
|
|
95
|
+
var _o = __read(React.useState(10), 2), offsetTop = _o[0], setOffsetTop = _o[1];
|
|
96
|
+
var _p = __read(React.useState(10), 2), offsetBottom = _p[0], setOffsetBottom = _p[1];
|
|
97
|
+
var _q = __read(React.useState(5), 2), offsetLeft = _q[0], setOffsetLeft = _q[1];
|
|
98
|
+
var _r = __read(React.useState(5), 2), offsetRight = _r[0], setOffsetRight = _r[1];
|
|
99
|
+
var _s = __read(React.useState(0), 2), heightYFactor = _s[0], setHeightYFactor = _s[1];
|
|
100
|
+
var _t = __read(React.useState(0), 2), heightXLabel = _t[0], setHeightXLabel = _t[1];
|
|
101
|
+
var _u = __read(React.useState(0), 2), heightYLabel = _u[0], setHeightYLabel = _u[1];
|
|
102
|
+
// States for Props to avoid change notification on ref change
|
|
103
|
+
var _v = __read(React.useState(props.defaultTdomain), 2), defaultTdomain = _v[0], setDefaultTdomain = _v[1];
|
|
104
|
+
var _w = __read(React.useState(props.defaultYdomain), 2), defaultYdomain = _w[0], setDefaultYdomain = _w[1];
|
|
105
|
+
var _x = __read(React.useState(0), 2), updateFlag = _x[0], setUpdateFlag = _x[1];
|
|
100
106
|
// Constants
|
|
101
107
|
var SVGHeight = props.height - (props.legend === 'bottom' ? (props.legendHeight !== undefined ? props.legendHeight : 50) : 0);
|
|
102
108
|
var SVGWidth = props.width - (props.legend === 'right' ? (props.legendWidth !== undefined ? props.legendWidth : 100) : 0);
|
|
109
|
+
var zoomMode = props.zoomMode === undefined ? 'AutoValue' : props.zoomMode;
|
|
110
|
+
// enforce T limits
|
|
103
111
|
React.useEffect(function () {
|
|
104
|
-
|
|
112
|
+
if (props.Tmin !== undefined && tDomain[0] < props.Tmin)
|
|
113
|
+
setTdomain(function (t) { var _a; return ([(_a = props.Tmin) !== null && _a !== void 0 ? _a : 0, t[1]]); });
|
|
114
|
+
if (props.Tmax !== undefined && tDomain[1] > props.Tmax)
|
|
115
|
+
setTdomain(function (t) { var _a; return ([t[0], (_a = props.Tmax) !== null && _a !== void 0 ? _a : 0]); });
|
|
116
|
+
}, [tDomain]);
|
|
117
|
+
// enforce Y limits
|
|
118
|
+
React.useEffect(function () {
|
|
119
|
+
if (props.Ymin !== undefined && yDomain[0] < props.Ymin)
|
|
120
|
+
setYdomain(function (y) { var _a; return ([(_a = props.Ymin) !== null && _a !== void 0 ? _a : 0, y[1]]); });
|
|
121
|
+
if (props.Ymax !== undefined && yDomain[1] > props.Ymax)
|
|
122
|
+
setYdomain(function (y) { var _a; return ([y[0], (_a = props.Ymax) !== null && _a !== void 0 ? _a : 0]); });
|
|
123
|
+
}, [yDomain]);
|
|
124
|
+
React.useEffect(function () {
|
|
125
|
+
if (!(0, lodash_1.isEqual)(defaultTdomain, props.defaultTdomain))
|
|
126
|
+
setDefaultTdomain(props.defaultTdomain);
|
|
105
127
|
}, [props.defaultTdomain]);
|
|
128
|
+
React.useEffect(function () {
|
|
129
|
+
if (!(0, lodash_1.isEqual)(defaultYdomain, props.defaultYdomain))
|
|
130
|
+
setDefaultYdomain(props.defaultYdomain);
|
|
131
|
+
}, [props.defaultYdomain]);
|
|
132
|
+
React.useEffect(function () {
|
|
133
|
+
setTdomain(defaultTdomain);
|
|
134
|
+
}, [defaultTdomain]);
|
|
135
|
+
React.useEffect(function () {
|
|
136
|
+
if (defaultYdomain !== undefined && zoomMode !== 'AutoValue')
|
|
137
|
+
setYdomain(defaultYdomain);
|
|
138
|
+
}, [defaultYdomain]);
|
|
106
139
|
// Adjust top and bottom Offset
|
|
107
140
|
React.useEffect(function () {
|
|
108
141
|
var top = heightYFactor + 10;
|
|
@@ -123,51 +156,61 @@ var Plot = function (props) {
|
|
|
123
156
|
}, [heightYLabel]);
|
|
124
157
|
// Adjust Y domain
|
|
125
158
|
React.useEffect(function () {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
159
|
+
if (zoomMode === 'AutoValue') {
|
|
160
|
+
var yMin = Math.min.apply(Math, __spreadArray([], __read(__spreadArray([], __read(data.values()), false).map(function (series) { var _a; return (_a = series.getMin(tDomain)) !== null && _a !== void 0 ? _a : Number.MAX_VALUE; })), false));
|
|
161
|
+
var yMax = Math.max.apply(Math, __spreadArray([], __read(__spreadArray([], __read(data.values()), false).map(function (series) { var _a; return (_a = series.getMax(tDomain)) !== null && _a !== void 0 ? _a : Number.MIN_VALUE; })), false));
|
|
162
|
+
if (!isNaN(yMin) && !isNaN(yMax) && isFinite(yMin) && isFinite(yMax))
|
|
163
|
+
setYdomain([yMin, yMax]);
|
|
164
|
+
}
|
|
130
165
|
}, [tDomain, data]);
|
|
131
166
|
// Adjust x axis
|
|
132
167
|
React.useEffect(function () {
|
|
133
168
|
var dT = tDomain[1] - tDomain[0];
|
|
169
|
+
var dTmin = tDomain[0];
|
|
134
170
|
if (dT === 0)
|
|
135
171
|
return;
|
|
172
|
+
if (props.XAxisType === 'log') {
|
|
173
|
+
dT = Math.log10(tDomain[1]) - Math.log10(tDomain[0]);
|
|
174
|
+
dTmin = Math.log10(tDomain[0]);
|
|
175
|
+
}
|
|
136
176
|
var scale = (SVGWidth - offsetLeft - offsetRight) / dT;
|
|
137
177
|
setTscale(scale);
|
|
138
|
-
setToffset(offsetLeft -
|
|
139
|
-
}, [tDomain, offsetLeft, offsetRight]);
|
|
178
|
+
setToffset(offsetLeft - dTmin * scale);
|
|
179
|
+
}, [tDomain, offsetLeft, offsetRight, props.XAxisType]);
|
|
140
180
|
// Adjust y axis
|
|
141
181
|
React.useEffect(function () {
|
|
142
182
|
var dY = yDomain[1] - yDomain[0];
|
|
143
183
|
var scale = (SVGHeight - offsetTop - offsetBottom) / (dY === 0 ? 0.00001 : dY);
|
|
144
184
|
setYscale(-scale);
|
|
145
|
-
setYoffset(SVGHeight - offsetBottom +
|
|
185
|
+
setYoffset(SVGHeight - offsetBottom + yDomain[0] * scale);
|
|
146
186
|
}, [yDomain, offsetTop, offsetBottom]);
|
|
187
|
+
React.useEffect(function () { setUpdateFlag(function (x) { return x + 1; }); }, [tScale, tOffset, yScale, yOffset]);
|
|
147
188
|
// transforms from pixels into x value. result passed into onClick function
|
|
148
|
-
function XInverseTransform(
|
|
149
|
-
var xT = (
|
|
189
|
+
function XInverseTransform(p) {
|
|
190
|
+
var xT = (p - tOffset) / tScale;
|
|
150
191
|
if (props.XAxisType === 'log')
|
|
151
|
-
xT =
|
|
192
|
+
xT = Math.pow(10, (p - tOffset) / tScale);
|
|
152
193
|
return xT;
|
|
153
194
|
}
|
|
154
195
|
// transforms from pixels into y value. result passed into onClick function
|
|
155
|
-
function YInverseTransform(
|
|
156
|
-
return (
|
|
196
|
+
function YInverseTransform(p) {
|
|
197
|
+
return (p - yOffset) / yScale;
|
|
157
198
|
}
|
|
158
199
|
function Reset() {
|
|
159
|
-
setTdomain(
|
|
200
|
+
setTdomain(defaultTdomain);
|
|
201
|
+
if (defaultYdomain !== undefined && zoomMode !== 'AutoValue')
|
|
202
|
+
setYdomain(defaultYdomain);
|
|
160
203
|
}
|
|
161
|
-
// new X transformation
|
|
162
|
-
function XTransformation(
|
|
163
|
-
var xT =
|
|
204
|
+
// new X transformation from x value into Pixels
|
|
205
|
+
function XTransformation(value) {
|
|
206
|
+
var xT = value * tScale + tOffset;
|
|
164
207
|
if (props.XAxisType === 'log')
|
|
165
|
-
xT =
|
|
208
|
+
xT = Math.log10(value) * tScale + tOffset;
|
|
166
209
|
return xT;
|
|
167
210
|
}
|
|
168
|
-
// new Y transformation
|
|
169
|
-
function YTransformation(
|
|
170
|
-
return
|
|
211
|
+
// new Y transformation from y value into Pixels
|
|
212
|
+
function YTransformation(value) {
|
|
213
|
+
return value * yScale + yOffset;
|
|
171
214
|
}
|
|
172
215
|
function AddData(d) {
|
|
173
216
|
var key = (0, helper_functions_1.CreateGuid)();
|
|
@@ -184,6 +227,8 @@ var Plot = function (props) {
|
|
|
184
227
|
setData(function (fld) {
|
|
185
228
|
var updated = (0, lodash_1.cloneDeep)(fld);
|
|
186
229
|
var series = updated.get(key);
|
|
230
|
+
if (series === undefined)
|
|
231
|
+
return updated;
|
|
187
232
|
series.legend = legend;
|
|
188
233
|
updated.set(key, series);
|
|
189
234
|
return updated;
|
|
@@ -191,14 +236,14 @@ var Plot = function (props) {
|
|
|
191
236
|
}
|
|
192
237
|
function RegisterSelect(handler) {
|
|
193
238
|
var key = (0, helper_functions_1.CreateGuid)();
|
|
194
|
-
|
|
239
|
+
handlers.current.set(key, handler);
|
|
195
240
|
return key;
|
|
196
241
|
}
|
|
197
242
|
function RemoveSelect(key) {
|
|
198
|
-
|
|
243
|
+
handlers.current.delete(key);
|
|
199
244
|
}
|
|
200
245
|
function UpdateSelect(key, handler) {
|
|
201
|
-
|
|
246
|
+
handlers.current.set(key, handler);
|
|
202
247
|
}
|
|
203
248
|
function GetContext() {
|
|
204
249
|
return {
|
|
@@ -210,22 +255,22 @@ var Plot = function (props) {
|
|
|
210
255
|
Data: data,
|
|
211
256
|
XTransformation: XTransformation,
|
|
212
257
|
YTransformation: YTransformation,
|
|
258
|
+
XInverseTransformation: XInverseTransform,
|
|
259
|
+
YInverseTransformation: YInverseTransform,
|
|
213
260
|
AddData: AddData,
|
|
214
261
|
RemoveData: RemoveData,
|
|
215
262
|
UpdateData: UpdateData,
|
|
216
263
|
SetLegend: SetLegend,
|
|
217
264
|
RegisterSelect: RegisterSelect,
|
|
218
265
|
RemoveSelect: RemoveSelect,
|
|
219
|
-
UpdateSelect: UpdateSelect
|
|
266
|
+
UpdateSelect: UpdateSelect,
|
|
267
|
+
UpdateFlag: updateFlag,
|
|
268
|
+
SetXDomain: setTdomain,
|
|
269
|
+
SetYDomain: setYdomain
|
|
220
270
|
};
|
|
221
271
|
}
|
|
222
272
|
function setXHover(x) {
|
|
223
|
-
|
|
224
|
-
if (props.XAxisType === 'log')
|
|
225
|
-
hov = Math.pow(10, XInverseTransform(x));
|
|
226
|
-
else
|
|
227
|
-
hov = XTransformation(x);
|
|
228
|
-
return hov;
|
|
273
|
+
return XInverseTransform(x);
|
|
229
274
|
}
|
|
230
275
|
function handleMouseWheel(evt) {
|
|
231
276
|
if (props.zoom !== undefined && !props.zoom)
|
|
@@ -240,19 +285,34 @@ var Plot = function (props) {
|
|
|
240
285
|
// event.deltaY positive is wheel down or out and negative is wheel up or in
|
|
241
286
|
if (evt.deltaY < 0)
|
|
242
287
|
multiplier = 0.75;
|
|
243
|
-
var
|
|
244
|
-
var
|
|
288
|
+
var x0 = XTransformation(tDomain[0]);
|
|
289
|
+
var x1 = XTransformation(tDomain[1]);
|
|
245
290
|
if (mousePosition[0] < offsetLeft)
|
|
246
|
-
|
|
291
|
+
x1 = multiplier * (x1 - x0) + x0;
|
|
247
292
|
else if (mousePosition[0] > (SVGWidth - offsetRight))
|
|
248
|
-
|
|
293
|
+
x0 = x1 - multiplier * (x1 - x0);
|
|
249
294
|
else {
|
|
250
|
-
var
|
|
251
|
-
|
|
252
|
-
|
|
295
|
+
var Xcenter = mousePosition[0];
|
|
296
|
+
x0 = Xcenter - (Xcenter - x0) * multiplier;
|
|
297
|
+
x1 = Xcenter + (x1 - Xcenter) * multiplier;
|
|
298
|
+
}
|
|
299
|
+
if ((x1 - x0) > 10)
|
|
300
|
+
setTdomain([XInverseTransform(x0), XInverseTransform(x1)]);
|
|
301
|
+
if (zoomMode === 'Rect') {
|
|
302
|
+
var y0 = YTransformation(yDomain[0]);
|
|
303
|
+
var y1 = YTransformation(yDomain[1]);
|
|
304
|
+
if (mousePosition[1] < offsetTop)
|
|
305
|
+
y1 = multiplier * (y1 - y0) + y0;
|
|
306
|
+
else if (mousePosition[1] > (SVGHeight - offsetBottom))
|
|
307
|
+
y0 = y1 - multiplier * (y1 - y0);
|
|
308
|
+
else {
|
|
309
|
+
var Ycenter = mousePosition[1];
|
|
310
|
+
y0 = Ycenter - (Ycenter - y0) * multiplier;
|
|
311
|
+
y1 = Ycenter + (y1 - Ycenter) * multiplier;
|
|
312
|
+
}
|
|
313
|
+
if (Math.abs(y1 - y0) > 10)
|
|
314
|
+
setYdomain([YInverseTransform(y0), YInverseTransform(y1)]);
|
|
253
315
|
}
|
|
254
|
-
if ((t1 - t0) > 10)
|
|
255
|
-
setTdomain([t0, t1]);
|
|
256
316
|
}
|
|
257
317
|
function handleMouseMove(evt) {
|
|
258
318
|
if (SVGref.current == null)
|
|
@@ -261,21 +321,9 @@ var Plot = function (props) {
|
|
|
261
321
|
pt.x = evt.clientX;
|
|
262
322
|
pt.y = evt.clientY;
|
|
263
323
|
var ptTransform = pt.matrixTransform(SVGref.current.getScreenCTM().inverse());
|
|
264
|
-
var dX;
|
|
265
|
-
// Compute delta before getting new Mousposition
|
|
266
|
-
{
|
|
267
|
-
props.XAxisType === 'time' || props.XAxisType === undefined ?
|
|
268
|
-
dX = mousePosition[0] - ptTransform.x :
|
|
269
|
-
dX = Math.log10(mousePosition[0]) - ptTransform.x;
|
|
270
|
-
}
|
|
271
324
|
setMousePosition([ptTransform.x, ptTransform.y]);
|
|
272
325
|
if (mouseMode === 'pan') {
|
|
273
|
-
var dT =
|
|
274
|
-
{
|
|
275
|
-
props.XAxisType === 'time' || props.XAxisType === undefined ?
|
|
276
|
-
dT = dX / tScale :
|
|
277
|
-
dT = dX / ((SVGWidth - offsetLeft - offsetRight) / Math.abs(Math.ceil(Math.log10(tDomain[1])) - Math.floor(Math.log10(tDomain[0]))));
|
|
278
|
-
}
|
|
326
|
+
var dT = XInverseTransform(mousePosition[0]) - XInverseTransform(ptTransform.X);
|
|
279
327
|
setTdomain([tDomain[0] + dT, tDomain[1] + dT]);
|
|
280
328
|
}
|
|
281
329
|
}
|
|
@@ -292,9 +340,9 @@ var Plot = function (props) {
|
|
|
292
340
|
if (selectedMode === 'pan' && (props.pan === undefined || props.pan))
|
|
293
341
|
setMouseMode('pan');
|
|
294
342
|
if (selectedMode === 'select' && props.onSelect !== undefined)
|
|
295
|
-
props.onSelect((ptTransform.x
|
|
296
|
-
if (handlers.size > 0 && selectedMode === 'select')
|
|
297
|
-
handlers.forEach(function (v) { return (v.onClick !== undefined ? v.onClick(XInverseTransform(ptTransform.x), YInverseTransform(ptTransform.y)) : null); });
|
|
343
|
+
props.onSelect(XInverseTransform(ptTransform.x));
|
|
344
|
+
if (handlers.current.size > 0 && selectedMode === 'select')
|
|
345
|
+
handlers.current.forEach(function (v) { return (v.onClick !== undefined ? v.onClick(XInverseTransform(ptTransform.x), YInverseTransform(ptTransform.y)) : null); });
|
|
298
346
|
}
|
|
299
347
|
function handleMouseUp(_) {
|
|
300
348
|
if (mouseMode === 'zoom') {
|
|
@@ -302,20 +350,25 @@ var Plot = function (props) {
|
|
|
302
350
|
setMouseMode('none');
|
|
303
351
|
return;
|
|
304
352
|
}
|
|
305
|
-
var t0_1 = Math.min(mousePosition[0], mouseClick[0])
|
|
306
|
-
var t1_1 = Math.max(mousePosition[0], mouseClick[0])
|
|
307
|
-
setTdomain(function (curr) { return
|
|
353
|
+
var t0_1 = Math.min(XInverseTransform(mousePosition[0]), XInverseTransform(mouseClick[0]));
|
|
354
|
+
var t1_1 = Math.max(XInverseTransform(mousePosition[0]), XInverseTransform(mouseClick[0]));
|
|
355
|
+
setTdomain(function (curr) { return [Math.max(curr[0], t0_1), Math.min(curr[1], t1_1)]; });
|
|
356
|
+
if (zoomMode === 'Rect') {
|
|
357
|
+
var y0_1 = Math.min(YInverseTransform(mousePosition[1]), YInverseTransform(mouseClick[1]));
|
|
358
|
+
var y1_1 = Math.max(YInverseTransform(mousePosition[1]), YInverseTransform(mouseClick[1]));
|
|
359
|
+
setYdomain(function (curr) { return [Math.max(curr[0], y0_1), Math.min(curr[1], y1_1)]; });
|
|
360
|
+
}
|
|
308
361
|
}
|
|
309
362
|
setMouseMode('none');
|
|
310
|
-
if (handlers.size > 0 && selectedMode === 'select')
|
|
311
|
-
handlers.forEach(function (v) { return (v.onRelease !== undefined ? v.onRelease(mousePosition[0]
|
|
363
|
+
if (handlers.current.size > 0 && selectedMode === 'select')
|
|
364
|
+
handlers.current.forEach(function (v) { return (v.onRelease !== undefined ? v.onRelease(XTransformation(mousePosition[0]), YTransformation(mousePosition[1])) : null); });
|
|
312
365
|
}
|
|
313
366
|
function handleMouseOut(_) {
|
|
314
367
|
setMouseIn(false);
|
|
315
368
|
if (mouseMode === 'pan')
|
|
316
369
|
setMouseMode('none');
|
|
317
|
-
if (handlers.size > 0 && selectedMode === 'select')
|
|
318
|
-
handlers.forEach(function (v) { return (v.onPlotLeave !== undefined ? v.onPlotLeave(mousePosition[0]
|
|
370
|
+
if (handlers.current.size > 0 && selectedMode === 'select')
|
|
371
|
+
handlers.current.forEach(function (v) { return (v.onPlotLeave !== undefined ? v.onPlotLeave(XTransformation(mousePosition[0]), YTransformation(mousePosition[1])) : null); });
|
|
319
372
|
}
|
|
320
373
|
function handleMouseIn(_) {
|
|
321
374
|
setMouseIn(true);
|
|
@@ -323,7 +376,7 @@ var Plot = function (props) {
|
|
|
323
376
|
return (React.createElement(GraphContext_1.GraphContext.Provider, { value: GetContext() },
|
|
324
377
|
React.createElement("div", { style: { height: props.height, width: props.width, position: 'relative' } },
|
|
325
378
|
React.createElement("div", { style: { height: SVGHeight, width: SVGWidth, position: 'absolute' }, onWheel: handleMouseWheel, onMouseMove: handleMouseMove, onMouseDown: handleMouseDown, onMouseUp: handleMouseUp, onMouseLeave: handleMouseOut, onMouseEnter: handleMouseIn },
|
|
326
|
-
React.createElement("svg", { ref: SVGref, width: SVGWidth, height: SVGHeight, style: SvgStyle, viewBox: "0 0 " + SVGWidth + " " + SVGHeight },
|
|
379
|
+
React.createElement("svg", { ref: SVGref, width: SVGWidth < 0 ? 0 : SVGWidth, height: SVGHeight < 0 ? 0 : SVGHeight, style: SvgStyle, viewBox: "0 0 " + (SVGWidth < 0 ? 0 : SVGWidth) + " " + (SVGHeight < 0 ? 0 : SVGHeight) },
|
|
327
380
|
props.showBorder !== undefined && props.showBorder ? React.createElement("path", { stroke: 'black', d: "M " + offsetLeft + " " + offsetTop + " H " + (SVGWidth - offsetRight) + " V " + (SVGWidth - offsetBottom) + " H " + offsetLeft + " Z" }) : null,
|
|
328
381
|
props.XAxisType === 'time' || props.XAxisType === undefined ?
|
|
329
382
|
React.createElement(TimeAxis_1.default, { label: props.Tlabel, offsetBottom: offsetBottom, offsetLeft: offsetLeft, offsetRight: offsetRight, width: SVGWidth, height: SVGHeight, setHeight: setHeightXLabel, heightAxis: heightXLabel }) :
|
|
@@ -337,7 +390,8 @@ var Plot = function (props) {
|
|
|
337
390
|
if (!React.isValidElement(element))
|
|
338
391
|
return null;
|
|
339
392
|
if (element.type === Line_1.default || element.type === LineWithThreshold_1.default ||
|
|
340
|
-
element.type === HorizontalMarker_1.default || element.type === VerticalMarker_1.default
|
|
393
|
+
element.type === HorizontalMarker_1.default || element.type === VerticalMarker_1.default
|
|
394
|
+
|| element.type === Circle_1.default || element.type === AggregatingCircles_1.default)
|
|
341
395
|
return element;
|
|
342
396
|
return null;
|
|
343
397
|
}),
|
|
@@ -345,9 +399,9 @@ var Plot = function (props) {
|
|
|
345
399
|
React.createElement("path", { stroke: 'black', style: { strokeWidth: 2, opacity: mouseIn ? 0.8 : 0.0 }, d: "M " + mousePosition[0] + " " + offsetTop + " V " + (SVGHeight - offsetBottom) })
|
|
346
400
|
: null,
|
|
347
401
|
(props.zoom === undefined || props.zoom) && mouseMode === 'zoom' ?
|
|
348
|
-
React.createElement("rect", { fillOpacity: 0.8, fill: 'black', x: Math.min(mouseClick[0], mousePosition[0]), y: offsetTop, width: Math.abs(mouseClick[0] - mousePosition[0]), height: SVGHeight - offsetTop - offsetBottom })
|
|
402
|
+
React.createElement("rect", { fillOpacity: 0.8, fill: 'black', x: Math.min(mouseClick[0], mousePosition[0]), y: zoomMode === 'Rect' ? Math.min(mouseClick[1], mousePosition[1]) : offsetTop, width: Math.abs(mouseClick[0] - mousePosition[0]), height: zoomMode === 'Rect' ? Math.abs(mouseClick[1] - mousePosition[1]) : (SVGHeight - offsetTop - offsetBottom) })
|
|
349
403
|
: null),
|
|
350
|
-
React.createElement(InteractiveButtons_1.default, { showPan: (props.pan === undefined || props.pan), showZoom: props.zoom === undefined || props.zoom, showReset: !(props.pan !== undefined && props.zoom !== undefined && !props.zoom && !props.pan), showSelect: props.onSelect !== undefined || handlers.size > 0, showDownload: props.onDataInspect !== undefined, currentSelection: selectedMode, setSelection: function (s) {
|
|
404
|
+
React.createElement(InteractiveButtons_1.default, { showPan: (props.pan === undefined || props.pan), showZoom: props.zoom === undefined || props.zoom, showReset: !(props.pan !== undefined && props.zoom !== undefined && !props.zoom && !props.pan), showSelect: props.onSelect !== undefined || handlers.current.size > 0, showDownload: props.onDataInspect !== undefined, currentSelection: selectedMode, setSelection: function (s) {
|
|
351
405
|
if (s === "reset")
|
|
352
406
|
Reset();
|
|
353
407
|
else if (s === "download")
|
|
@@ -364,4 +418,4 @@ var Plot = function (props) {
|
|
|
364
418
|
props.legend !== undefined && props.legend !== 'hidden' ? React.createElement(Legend_1.default, { location: props.legend, height: props.legendHeight !== undefined ? props.legendHeight : 50, width: props.legendWidth !== undefined ? props.legendWidth : 100, graphWidth: SVGWidth, graphHeight: SVGHeight }) : null)));
|
|
365
419
|
};
|
|
366
420
|
exports.default = Plot;
|
|
367
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxvdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9QbG90LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEseUdBQXlHO0FBQ3pHLG1CQUFtQjtBQUNuQixFQUFFO0FBQ0YscUVBQXFFO0FBQ3JFLEVBQUU7QUFDRix3R0FBd0c7QUFDeEcsd0dBQXdHO0FBQ3hHLHNHQUFzRztBQUN0Ryx3RkFBd0Y7QUFDeEYsRUFBRTtBQUNGLDBDQUEwQztBQUMxQyxFQUFFO0FBQ0Ysd0dBQXdHO0FBQ3hHLHdHQUF3RztBQUN4Ryw0RUFBNEU7QUFDNUUsRUFBRTtBQUNGLDhCQUE4QjtBQUM5Qix3R0FBd0c7QUFDeEcsMEJBQTBCO0FBQzFCLG1EQUFtRDtBQUNuRCxFQUFFO0FBQ0YseUdBQXlHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHekcsNkJBQStCO0FBQy9CLDJEQUFzRDtBQUN0RCwrQ0FBbUY7QUFDbkYsbUVBQTBEO0FBQzFELGlDQUEyQztBQUMzQyx1Q0FBa0M7QUFDbEMscUNBQWdDO0FBQ2hDLHlDQUFvQztBQUNwQyxtQ0FBOEI7QUFDOUIseURBQW9EO0FBQ3BELCtCQUEwQjtBQUMxQixtQ0FBOEI7QUFDOUIsdURBQWtEO0FBQ2xELG1EQUE4QztBQXlCOUMsSUFBTSxRQUFRLEdBQXdCO0lBQ2xDLElBQUksRUFBRSxNQUFNO0lBQ1osVUFBVSxFQUFFLE1BQU07SUFDbEIsa0JBQWtCLEVBQUUsTUFBTTtJQUMxQixnQkFBZ0IsRUFBRSxNQUFNO0lBQ3hCLGVBQWUsRUFBRSxNQUFNO0lBQ3ZCLGFBQWEsRUFBRSxNQUFNO0lBQ3JCLFlBQVksRUFBRSxNQUFNO0lBQ3BCLGFBQWEsRUFBRSxNQUFNO0NBQ3hCLENBQUM7QUFFRixJQUFNLElBQUksR0FBb0MsVUFBQyxLQUFLO0lBQ2hEOztNQUVFO0lBQ0YsSUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUN2QyxJQUFNLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQU0sT0FBQSxJQUFBLDZCQUFVLEdBQUUsRUFBWixDQUFZLEVBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsSUFBQSxLQUFBLE9BQWtCLEtBQUssQ0FBQyxRQUFRLENBQTJCLElBQUksR0FBRyxFQUF1QixDQUFDLElBQUEsRUFBekYsSUFBSSxRQUFBLEVBQUUsT0FBTyxRQUE0RSxDQUFDO0lBQzNGLElBQUEsS0FBQSxPQUEwQixLQUFLLENBQUMsUUFBUSxDQUF3QixJQUFJLEdBQUcsRUFBcUIsQ0FBQyxJQUFBLEVBQTVGLFFBQVEsUUFBQSxFQUFFLFdBQVcsUUFBdUUsQ0FBQztJQUU5RixJQUFBLEtBQUEsT0FBd0IsS0FBSyxDQUFDLFFBQVEsQ0FBa0IsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFBLEVBQTVFLE9BQU8sUUFBQSxFQUFFLFVBQVUsUUFBeUQsQ0FBQztJQUM5RSxJQUFBLEtBQUEsT0FBd0IsS0FBSyxDQUFDLFFBQVEsQ0FBUyxDQUFDLENBQUMsSUFBQSxFQUFoRCxPQUFPLFFBQUEsRUFBRSxVQUFVLFFBQTZCLENBQUM7SUFDbEQsSUFBQSxLQUFBLE9BQXNCLEtBQUssQ0FBQyxRQUFRLENBQVMsQ0FBQyxDQUFDLElBQUEsRUFBOUMsTUFBTSxRQUFBLEVBQUUsU0FBUyxRQUE2QixDQUFDO0lBRWhELElBQUEsS0FBQSxPQUF3QixLQUFLLENBQUMsUUFBUSxDQUFrQixDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLEVBQTdELE9BQU8sUUFBQSxFQUFFLFVBQVUsUUFBMEMsQ0FBQztJQUMvRCxJQUFBLEtBQUEsT0FBd0IsS0FBSyxDQUFDLFFBQVEsQ0FBUyxDQUFDLENBQUMsSUFBQSxFQUFoRCxPQUFPLFFBQUEsRUFBRSxVQUFVLFFBQTZCLENBQUM7SUFDbEQsSUFBQSxLQUFBLE9BQXNCLEtBQUssQ0FBQyxRQUFRLENBQVMsQ0FBQyxDQUFDLElBQUEsRUFBOUMsTUFBTSxRQUFBLEVBQUUsU0FBUyxRQUE2QixDQUFDO0lBRWhELElBQUEsS0FBQSxPQUE0QixLQUFLLENBQUMsUUFBUSxDQUFxQyxNQUFNLENBQUMsSUFBQSxFQUFyRixTQUFTLFFBQUEsRUFBRSxZQUFZLFFBQThELENBQUM7SUFDdkYsSUFBQSxLQUFBLE9BQWtDLEtBQUssQ0FBQyxRQUFRLENBQTRCLE1BQU0sQ0FBQyxJQUFBLEVBQWxGLFlBQVksUUFBQSxFQUFFLGVBQWUsUUFBcUQsQ0FBQztJQUNwRixJQUFBLEtBQUEsT0FBd0IsS0FBSyxDQUFDLFFBQVEsQ0FBVSxLQUFLLENBQUMsSUFBQSxFQUFyRCxPQUFPLFFBQUEsRUFBRSxVQUFVLFFBQWtDLENBQUM7SUFDdkQsSUFBQSxLQUFBLE9BQW9DLEtBQUssQ0FBQyxRQUFRLENBQW1CLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUEsRUFBM0UsYUFBYSxRQUFBLEVBQUUsZ0JBQWdCLFFBQTRDLENBQUM7SUFDN0UsSUFBQSxLQUFBLE9BQThCLEtBQUssQ0FBQyxRQUFRLENBQW1CLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUEsRUFBckUsVUFBVSxRQUFBLEVBQUUsYUFBYSxRQUE0QyxDQUFDO0lBRXZFLElBQUEsS0FBQSxPQUE0QixLQUFLLENBQUMsUUFBUSxDQUFTLEVBQUUsQ0FBQyxJQUFBLEVBQXJELFNBQVMsUUFBQSxFQUFFLFlBQVksUUFBOEIsQ0FBQztJQUN2RCxJQUFBLEtBQUEsT0FBa0MsS0FBSyxDQUFDLFFBQVEsQ0FBUyxFQUFFLENBQUMsSUFBQSxFQUEzRCxZQUFZLFFBQUEsRUFBRSxlQUFlLFFBQThCLENBQUM7SUFDN0QsSUFBQSxLQUFBLE9BQThCLEtBQUssQ0FBQyxRQUFRLENBQVMsQ0FBQyxDQUFDLElBQUEsRUFBdEQsVUFBVSxRQUFBLEVBQUUsYUFBYSxRQUE2QixDQUFDO0lBQ3hELElBQUEsS0FBQSxPQUFnQyxLQUFLLENBQUMsUUFBUSxDQUFTLENBQUMsQ0FBQyxJQUFBLEVBQXhELFdBQVcsUUFBQSxFQUFFLGNBQWMsUUFBNkIsQ0FBQztJQUUxRCxJQUFBLEtBQUEsT0FBb0MsS0FBSyxDQUFDLFFBQVEsQ0FBUyxDQUFDLENBQUMsSUFBQSxFQUE1RCxhQUFhLFFBQUEsRUFBRSxnQkFBZ0IsUUFBNkIsQ0FBQztJQUM5RCxJQUFBLEtBQUEsT0FBa0MsS0FBSyxDQUFDLFFBQVEsQ0FBUyxDQUFDLENBQUMsSUFBQSxFQUExRCxZQUFZLFFBQUEsRUFBRSxlQUFlLFFBQTZCLENBQUM7SUFDNUQsSUFBQSxLQUFBLE9BQWtDLEtBQUssQ0FBQyxRQUFRLENBQVMsQ0FBQyxDQUFDLElBQUEsRUFBMUQsWUFBWSxRQUFBLEVBQUUsZUFBZSxRQUE2QixDQUFDO0lBRWxFLFlBQVk7SUFDWixJQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksS0FBSyxTQUFTLENBQUEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5SCxJQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUUxSCxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ2QsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNuQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQTtJQUMxQiwrQkFBK0I7SUFDL0IsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNkLElBQU0sR0FBRyxHQUFHLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDL0IsSUFBTSxNQUFNLEdBQUcsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUNqQyxJQUFJLFNBQVMsS0FBSyxHQUFHO1lBQ25CLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLFlBQVksS0FBSyxNQUFNO1lBQ3pCLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDLEVBQUMsQ0FBQyxZQUFZLEVBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQTtJQUUvQiwrQkFBK0I7SUFDL0IsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNkLElBQU0sSUFBSSxHQUFHLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDL0IsSUFBTSxLQUFLLEdBQUksRUFBRSxDQUFDO1FBQ2xCLElBQUksVUFBVSxLQUFLLElBQUk7WUFDckIsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLElBQUksV0FBVyxLQUFLLEtBQUs7WUFDdkIsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFFbkIsa0JBQWtCO0lBQ2xCLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDZixJQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxPQUFSLElBQUksMkJBQVEseUJBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFFLEdBQUcsQ0FBQyxVQUFBLE1BQU0sSUFBSSxPQUFBLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQXRCLENBQXNCLENBQUMsVUFBQyxDQUFDO1FBQ25GLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLE9BQVIsSUFBSSwyQkFBUSx5QkFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQUUsR0FBRyxDQUFDLFVBQUEsTUFBTSxJQUFJLE9BQUEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBdEIsQ0FBc0IsQ0FBQyxVQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQztZQUNoRSxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUUvQixDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUVuQixnQkFBZ0I7SUFDaEIsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNmLElBQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsSUFBSSxFQUFFLEtBQUssQ0FBQztZQUNWLE9BQU87UUFFVCxJQUFNLEtBQUssR0FBRyxDQUFDLFFBQVEsR0FBRyxVQUFVLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXpELFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQixVQUFVLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUUsQ0FBQztJQUMvQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFFdkMsZ0JBQWdCO0lBQ2hCLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDZCxJQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRW5DLElBQU0sS0FBSyxHQUFHLENBQUMsU0FBUyxHQUFHLFNBQVMsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEYsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEIsVUFBVSxDQUFDLFNBQVMsR0FBRyxZQUFZLEdBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDdkYsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBRXZDLDRFQUE0RTtJQUM1RSxTQUFTLGlCQUFpQixDQUFDLENBQVM7UUFDbEMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQ2hDLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxLQUFLO1lBQzNCLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxHQUFHLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxVQUFVLEdBQUcsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9QLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELDJFQUEyRTtJQUMzRSxTQUFTLGlCQUFpQixDQUFDLENBQVM7UUFDbEMsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVMsS0FBSztRQUNWLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELDJEQUEyRDtJQUMzRCxTQUFTLGVBQWUsQ0FBQyxRQUFnQjtRQUN2QyxJQUFJLEVBQUUsR0FBRyxRQUFRLEdBQUcsTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUNyQyxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssS0FBSztZQUMzQixFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxHQUFHLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsR0FBRyxVQUFVLEdBQUcsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMzVSxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCwyREFBMkQ7SUFDM0QsU0FBUyxlQUFlLENBQUMsUUFBZ0I7UUFDdkMsT0FBTyxRQUFRLEdBQUcsTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUNyQyxDQUFDO0lBRUQsU0FBUyxPQUFPLENBQUMsQ0FBYztRQUM3QixJQUFNLEdBQUcsR0FBRyxJQUFBLDZCQUFVLEdBQUUsQ0FBQztRQUN6QixPQUFPLENBQUMsVUFBQyxHQUFHLElBQU8sSUFBTSxPQUFPLEdBQUcsSUFBQSxrQkFBUyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNGLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELFNBQVMsVUFBVSxDQUFDLEdBQVcsRUFBRSxDQUFjO1FBQzdDLE9BQU8sQ0FBQyxVQUFDLEdBQUcsSUFBTyxJQUFNLE9BQU8sR0FBRyxJQUFBLGtCQUFTLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELFNBQVMsVUFBVSxDQUFDLENBQVM7UUFDekIsT0FBTyxDQUFDLFVBQUMsR0FBRyxJQUFPLElBQU0sT0FBTyxHQUFHLElBQUEsa0JBQVMsRUFBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFBO0lBQzNGLENBQUM7SUFFRCxTQUFTLFNBQVMsQ0FBQyxHQUFXLEVBQUUsTUFBNkI7UUFDekQsT0FBTyxDQUFDLFVBQUMsR0FBRztZQUNWLElBQU0sT0FBTyxHQUFHLElBQUEsa0JBQVMsRUFBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixJQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLE1BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU8sQ0FBQyxDQUFDO1lBQzFCLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFNBQVMsY0FBYyxDQUFDLE9BQWtCO1FBQ3hDLElBQU0sR0FBRyxHQUFHLElBQUEsNkJBQVUsR0FBRSxDQUFDO1FBQ3pCLFdBQVcsQ0FBQyxVQUFDLEdBQUcsSUFBTyxJQUFNLE9BQU8sR0FBRyxJQUFBLGtCQUFTLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEcsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsU0FBUyxZQUFZLENBQUMsR0FBVztRQUMvQixXQUFXLENBQUMsVUFBQyxHQUFHLElBQU8sSUFBTSxPQUFPLEdBQUcsSUFBQSxrQkFBUyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUE7SUFDL0YsQ0FBQztJQUVELFNBQVMsWUFBWSxDQUFDLEdBQVcsRUFBQyxPQUFrQjtRQUNsRCxXQUFXLENBQUMsVUFBQyxHQUFHLElBQU8sSUFBTSxPQUFPLEdBQUcsSUFBQSxrQkFBUyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFRCxTQUFTLFVBQVU7UUFDakIsT0FBTztZQUNILE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE1BQU0sRUFBRSxPQUFPLENBQUEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRztZQUNsRCxNQUFNLEVBQUUsT0FBTyxDQUFBLENBQUMsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7WUFDeEQsT0FBTyxFQUFFLE9BQU87WUFDaEIsV0FBVyxFQUFFLFlBQVk7WUFDekIsSUFBSSxFQUFFLElBQUk7WUFDVixlQUFlLGlCQUFBO1lBQ2YsZUFBZSxpQkFBQTtZQUNmLE9BQU8sU0FBQTtZQUNQLFVBQVUsWUFBQTtZQUNWLFVBQVUsWUFBQTtZQUNWLFNBQVMsV0FBQTtZQUNULGNBQWMsZ0JBQUE7WUFDZCxZQUFZLGNBQUE7WUFDWixZQUFZLGNBQUE7U0FDRSxDQUFBO0lBQ3BCLENBQUM7SUFFRCxTQUFTLFNBQVMsQ0FBQyxDQUFTO1FBQzFCLElBQUksR0FBRyxDQUFDO1FBQ1IsSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLEtBQUs7WUFDM0IsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O1lBRXpDLEdBQUcsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxHQUFRO1FBQzVCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUN2QyxPQUFPO1FBQ1gsSUFBSSxDQUFDLENBQUMsWUFBWSxLQUFLLE1BQU0sQ0FBQztZQUMxQixPQUFPO1FBQ1gsSUFBSSxDQUFDLE9BQU87WUFDUixPQUFPO1FBRVgsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUVyQyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFFdEIsNEVBQTRFO1FBQzVFLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQUUsVUFBVSxHQUFHLElBQUksQ0FBQztRQUV0QyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBCLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVU7WUFDN0IsRUFBRSxHQUFHLFVBQVUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDaEMsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDO1lBQ2hELEVBQUUsR0FBRyxFQUFFLEdBQUcsVUFBVSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQ2hDO1lBQ0QsSUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxPQUFPLENBQUM7WUFDcEQsRUFBRSxHQUFHLE9BQU8sR0FBRyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7WUFDM0MsRUFBRSxHQUFHLE9BQU8sR0FBRyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxVQUFVLENBQUM7U0FDOUM7UUFFRCxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUU7WUFDaEIsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVILFNBQVMsZUFBZSxDQUFDLEdBQVE7UUFDL0IsSUFBSSxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUk7WUFDeEIsT0FBTztRQUNULElBQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDNUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQ25CLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUNuQixJQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUVqRixJQUFJLEVBQUUsQ0FBQztRQUNMLGdEQUFnRDtRQUNoRDtZQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUM7Z0JBQzdELEVBQUUsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFBO1NBQ2pEO1FBRUgsZ0JBQWdCLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRTlDLElBQUksU0FBUyxLQUFLLEtBQUssRUFBRTtZQUNyQixJQUFJLEVBQUUsU0FBQSxDQUFDO1lBQ1A7Z0JBQUUsS0FBSyxDQUFDLFNBQVMsS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQztvQkFDN0QsRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQztvQkFDbEIsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxHQUFHLFVBQVUsR0FBRyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUNySTtZQUNELFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDbEQ7SUFDTCxDQUFDO0lBRUQsU0FBUyxlQUFlLENBQUMsR0FBUTtRQUMvQixJQUFJLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSTtZQUN4QixPQUFPO1FBRVAsSUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM1QyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDbkIsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQ25CLElBQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE9BQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQ2hGLGFBQWEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsSUFBSSxZQUFZLEtBQUssTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQztZQUNuRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsSUFBSSxZQUFZLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUNoRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxZQUFZLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssU0FBUztZQUMzRCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRSxNQUFNLENBQUMsQ0FBQTtRQUNuRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLFlBQVksS0FBSyxRQUFRO1lBQ2hELFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBQyxDQUFDLElBQUssT0FBQSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQS9HLENBQStHLENBQUMsQ0FBQztJQUUvSSxDQUFDO0lBRUQsU0FBUyxhQUFhLENBQUMsQ0FBTTtRQUN6QixJQUFJLFNBQVMsS0FBSyxNQUFNLEVBQUU7WUFFdEIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2pELFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDckIsT0FBTzthQUNWO1lBRUQsSUFBTSxJQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLE9BQU8sQ0FBQztZQUN4RSxJQUFNLElBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEdBQUcsT0FBTyxDQUFDO1lBRXhFLFVBQVUsQ0FBQyxVQUFDLElBQUksSUFBSyxPQUFBLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQXhILENBQXdILENBQUMsQ0FBQztTQUNsSjtRQUNELFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVyQixJQUFJLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLFlBQVksS0FBSyxRQUFRO1lBQ2hELFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBQyxDQUFDLElBQUssT0FBQSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEdBQUcsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUF6SCxDQUF5SCxDQUFDLENBQUM7SUFFekosQ0FBQztJQUVELFNBQVMsY0FBYyxDQUFDLENBQU07UUFDMUIsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xCLElBQUksU0FBUyxLQUFLLEtBQUs7WUFDbkIsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXpCLElBQUksUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksWUFBWSxLQUFLLFFBQVE7WUFDaEQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFDLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQTdILENBQTZILENBQUMsQ0FBQztJQUU3SixDQUFDO0lBRUQsU0FBUyxhQUFhLENBQUMsQ0FBTTtRQUN6QixVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELE9BQU8sQ0FDTCxvQkFBQywyQkFBWSxDQUFDLFFBQVEsSUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO1FBQ3RDLDZCQUFLLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7WUFDMUUsNkJBQUssS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsRUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGFBQWE7Z0JBQzFLLDZCQUFLLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQU8sUUFBUSxTQUFJLFNBQVc7b0JBQzFHLEtBQUssQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLDhCQUFPLE1BQU0sRUFBQyxPQUFPLEVBQUMsQ0FBQyxFQUFFLE9BQUssVUFBVSxTQUFJLFNBQVMsWUFBTSxRQUFRLEdBQUUsV0FBVyxhQUFNLFFBQVEsR0FBRyxZQUFZLFlBQU0sVUFBVSxPQUFJLEdBQUksQ0FBQyxDQUFDLENBQUMsSUFBSTtvQkFDaE0sS0FBSyxDQUFDLFNBQVMsS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQzt3QkFDL0Qsb0JBQUMsa0JBQVEsSUFBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsWUFBWSxHQUFHLENBQUMsQ0FBQzt3QkFDMU0sb0JBQUMsaUJBQU8sSUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxZQUFZLEdBQUc7b0JBQ3ZQLG9CQUFDLG1CQUFTLElBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFDMUosS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUNwRyxLQUFLLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHO29CQUM5SDt3QkFDSSxrQ0FBVSxFQUFFLEVBQUUsS0FBSyxHQUFHLElBQUk7NEJBQ3RCLDhCQUFNLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsUUFBTSxVQUFVLFVBQUksU0FBUyxHQUFHLENBQUMsY0FBTyxRQUFRLEdBQUcsV0FBVyxHQUFHLENBQUMsYUFBTSxTQUFTLEdBQUcsWUFBWSxZQUFNLFVBQVUsT0FBSSxHQUFJLENBQ3hKLENBQ1I7b0JBRVAsMkJBQUcsUUFBUSxFQUFFLFVBQVUsR0FBRyxJQUFJLEdBQUcsR0FBRzt3QkFDaEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxVQUFDLE9BQU87NEJBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztnQ0FDOUIsT0FBTyxJQUFJLENBQUM7NEJBQ2hCLElBQUssT0FBbUMsQ0FBQyxJQUFJLEtBQUssY0FBSSxJQUFLLE9BQW1DLENBQUMsSUFBSSxLQUFLLDJCQUFpQjtnQ0FDeEgsT0FBbUMsQ0FBQyxJQUFJLEtBQUssMEJBQWdCLElBQUssT0FBbUMsQ0FBQyxJQUFJLEtBQUssd0JBQWM7Z0NBRTFILE9BQU8sT0FBTyxDQUFDOzRCQUNuQixPQUFPLElBQUksQ0FBQzt3QkFDaEIsQ0FBQyxDQUFDO3dCQUNQLEtBQUssQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQzs0QkFDOUMsOEJBQU0sTUFBTSxFQUFDLE9BQU8sRUFBQyxLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUEsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLE9BQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFJLFNBQVMsWUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFFLEdBQUk7NEJBQ3JKLENBQUMsQ0FBQyxJQUFJO3dCQUNULENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsQ0FBQzs0QkFDL0QsOEJBQU0sV0FBVyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxHQUFHLFNBQVMsR0FBRyxZQUFZLEdBQUk7NEJBQ3RNLENBQUMsQ0FBQyxJQUFJLENBQ1Y7b0JBQ0gsb0JBQUMsNEJBQWtCLElBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUNsRSxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLElBQUksRUFDaEQsU0FBUyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQzlGLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUSxLQUFLLFNBQVMsSUFBSSxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsRUFDN0QsWUFBWSxFQUFFLEtBQUssQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUMvQyxnQkFBZ0IsRUFBRSxZQUFZLEVBQzlCLFlBQVksRUFBRSxVQUFDLENBQUM7NEJBQ2QsSUFBSSxDQUFDLEtBQUssT0FBTztnQ0FBRSxLQUFLLEVBQUUsQ0FBQztpQ0FDdEIsSUFBSSxDQUFDLEtBQUssVUFBVTtnQ0FBRSxLQUFLLENBQUMsYUFBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDOztnQ0FDcEQsZUFBZSxDQUFDLENBQTRCLENBQUMsQ0FBQTt3QkFBQSxDQUFDLEVBQ3JELENBQUMsRUFBRSxRQUFRLEdBQUcsV0FBVyxHQUFHLEVBQUUsRUFDOUIsQ0FBQyxFQUFFLEVBQUUsSUFDSixLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFVBQUMsT0FBTzt3QkFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDOzRCQUM5QixPQUFPLElBQUksQ0FBQzt3QkFDaEIsSUFBSyxPQUFtQyxDQUFDLElBQUksS0FBSyxnQkFBTTs0QkFDcEQsT0FBTyxPQUFPLENBQUM7d0JBQ25CLE9BQU8sSUFBSSxDQUFDO29CQUNoQixDQUFDLENBQUMsQ0FDWSxDQUVyQixDQUNKO1lBQ1AsS0FBSyxDQUFDLE1BQU0sS0FBTSxTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLG9CQUFDLGdCQUFNLElBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxZQUFZLEtBQUssU0FBUyxDQUFBLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLEtBQUssU0FBUyxDQUFBLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxHQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbFIsQ0FDYSxDQUMzQixDQUFBO0FBRUgsQ0FBQyxDQUFBO0FBR0Qsa0JBQWUsSUFBSSxDQUFDIn0=
|
|
421
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxvdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9QbG90LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEseUdBQXlHO0FBQ3pHLG1CQUFtQjtBQUNuQixFQUFFO0FBQ0YscUVBQXFFO0FBQ3JFLEVBQUU7QUFDRix3R0FBd0c7QUFDeEcsd0dBQXdHO0FBQ3hHLHNHQUFzRztBQUN0Ryx3RkFBd0Y7QUFDeEYsRUFBRTtBQUNGLDBDQUEwQztBQUMxQyxFQUFFO0FBQ0Ysd0dBQXdHO0FBQ3hHLHdHQUF3RztBQUN4Ryw0RUFBNEU7QUFDNUUsRUFBRTtBQUNGLDhCQUE4QjtBQUM5Qix3R0FBd0c7QUFDeEcsMEJBQTBCO0FBQzFCLG1EQUFtRDtBQUNuRCxFQUFFO0FBQ0YseUdBQXlHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHekcsNkJBQStCO0FBQy9CLDJEQUFzRDtBQUN0RCwrQ0FBbUY7QUFDbkYsbUVBQTBEO0FBQzFELGlDQUEwQztBQUMxQyx1Q0FBa0M7QUFDbEMscUNBQWdDO0FBQ2hDLHlDQUFvQztBQUNwQyxtQ0FBOEI7QUFDOUIseURBQW9EO0FBQ3BELCtCQUEwQjtBQUMxQixtQ0FBOEI7QUFDOUIsdURBQWtEO0FBQ2xELG1EQUE4QztBQUM5QyxtQ0FBOEI7QUFDOUIsMkRBQXNEO0FBOEJ0RCxJQUFNLFFBQVEsR0FBd0I7SUFDbEMsSUFBSSxFQUFFLE1BQU07SUFDWixVQUFVLEVBQUUsTUFBTTtJQUNsQixrQkFBa0IsRUFBRSxNQUFNO0lBQzFCLGdCQUFnQixFQUFFLE1BQU07SUFDeEIsZUFBZSxFQUFFLE1BQU07SUFDdkIsYUFBYSxFQUFFLE1BQU07SUFDckIsWUFBWSxFQUFFLE1BQU07SUFDcEIsYUFBYSxFQUFFLE1BQU07Q0FDeEIsQ0FBQztBQUVGLElBQU0sSUFBSSxHQUFvQyxVQUFDLEtBQUs7SUFDaEQ7O01BRUU7SUFDRixJQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFNLElBQUksQ0FBQyxD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QUcsWUFBWSxDQUFFLEdBQUk7NEJBQ3JKLENBQUMsQ0FBQyxJQUFJO3dCQUNULENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsQ0FBQzs0QkFDL0QsOEJBQU0sV0FBVyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbEYsQ0FBQyxFQUFFLFFBQVEsS0FBSyxNQUFNLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQzdFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDakQsTUFBTSxFQUFFLFFBQVEsS0FBSyxNQUFNLENBQUEsQ0FBQyxDQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLEdBQUcsWUFBWSxDQUFDLEdBQUk7NEJBQ3RILENBQUMsQ0FBQyxJQUFJLENBQ1Y7b0JBQ0gsb0JBQUMsNEJBQWtCLElBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUNsRSxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLElBQUksRUFDaEQsU0FBUyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQzlGLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUSxLQUFLLFNBQVMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQ3JFLFlBQVksRUFBRSxLQUFLLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFDL0MsZ0JBQWdCLEVBQUUsWUFBWSxFQUM5QixZQUFZLEVBQUUsVUFBQyxDQUFDOzRCQUNkLElBQUksQ0FBQyxLQUFLLE9BQU87Z0NBQUUsS0FBSyxFQUFFLENBQUM7aUNBQ3RCLElBQUksQ0FBQyxLQUFLLFVBQVU7Z0NBQUUsS0FBSyxDQUFDLGFBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQzs7Z0NBQ3BELGVBQWUsQ0FBQyxDQUE0QixDQUFDLENBQUE7d0JBQUEsQ0FBQyxFQUNyRCxDQUFDLEVBQUUsUUFBUSxHQUFHLFdBQVcsR0FBRyxFQUFFLEVBQzlCLENBQUMsRUFBRSxFQUFFLElBQ0osS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxVQUFDLE9BQU87d0JBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQzs0QkFDOUIsT0FBTyxJQUFJLENBQUM7d0JBQ2hCLElBQUssT0FBbUMsQ0FBQyxJQUFJLEtBQUssZ0JBQU07NEJBQ3BELE9BQU8sT0FBTyxDQUFDO3dCQUNuQixPQUFPLElBQUksQ0FBQztvQkFDaEIsQ0FBQyxDQUFDLENBQ1ksQ0FFckIsQ0FDSjtZQUNQLEtBQUssQ0FBQyxNQUFNLEtBQU0sU0FBUyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxvQkFBQyxnQkFBTSxJQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsWUFBWSxLQUFLLFNBQVMsQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxLQUFLLFNBQVMsQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsR0FBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2xSLENBQ2EsQ0FDM0IsQ0FBQTtBQUVILENBQUMsQ0FBQTtBQUdELGtCQUFlLElBQUksQ0FBQyJ9
|
package/lib/Series.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface SeriesProps<T> {
|
|
3
|
+
Label: string;
|
|
4
|
+
XField: keyof T;
|
|
5
|
+
YField: keyof T;
|
|
6
|
+
Type: 'points' | 'line' | 'histogram' | 'stacked';
|
|
7
|
+
Style?: React.SVGProps<SVGCircleElement | SVGRectElement | SVGPathElement>;
|
|
8
|
+
Click?: () => void;
|
|
9
|
+
Color: string;
|
|
10
|
+
Data: T[];
|
|
11
|
+
ShowInitially?: boolean;
|
|
12
|
+
bins?: number;
|
|
13
|
+
}
|
|
14
|
+
declare function Series<T>(props: SeriesProps<T>): JSX.Element;
|
|
15
|
+
export default Series;
|
package/lib/Series.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ******************************************************************************************************
|
|
3
|
+
// Series.tsx - Gbtc
|
|
4
|
+
//
|
|
5
|
+
// Copyright © 2020, Grid Protection Alliance. All Rights Reserved.
|
|
6
|
+
//
|
|
7
|
+
// Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
|
|
8
|
+
// the NOTICE file distributed with this work for additional information regarding copyright ownership.
|
|
9
|
+
// The GPA licenses this file to you under the MIT License (MIT), the "License"; you may not use this
|
|
10
|
+
// file except in compliance with the License. You may obtain a copy of the License at:
|
|
11
|
+
//
|
|
12
|
+
// http://opensource.org/licenses/MIT
|
|
13
|
+
//
|
|
14
|
+
// Unless agreed to in writing, the subject software distributed under the License is distributed on an
|
|
15
|
+
// "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
|
|
16
|
+
// License for the specific language governing permissions and limitations.
|
|
17
|
+
//
|
|
18
|
+
// Code Modification History:
|
|
19
|
+
// ----------------------------------------------------------------------------------------------------
|
|
20
|
+
// 12/31/2020 - Billy Ernest
|
|
21
|
+
// Generated original version of source code.
|
|
22
|
+
//
|
|
23
|
+
// ******************************************************************************************************
|
|
24
|
+
var __assign = (this && this.__assign) || function () {
|
|
25
|
+
__assign = Object.assign || function(t) {
|
|
26
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
27
|
+
s = arguments[i];
|
|
28
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
29
|
+
t[p] = s[p];
|
|
30
|
+
}
|
|
31
|
+
return t;
|
|
32
|
+
};
|
|
33
|
+
return __assign.apply(this, arguments);
|
|
34
|
+
};
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
var react_redux_1 = require("react-redux");
|
|
37
|
+
var React = require("react");
|
|
38
|
+
var d3 = require("d3");
|
|
39
|
+
var XAxis_1 = require("./XAxis");
|
|
40
|
+
var Plot_1 = require("./Plot");
|
|
41
|
+
var LegendSlice_1 = require("./Store/LegendSlice");
|
|
42
|
+
var YAxis_1 = require("./YAxis");
|
|
43
|
+
var YAxisSlice_1 = require("./Store/YAxisSlice");
|
|
44
|
+
var XAxisSlice_1 = require("./Store/XAxisSlice");
|
|
45
|
+
var helper_functions_1 = require("@gpa-gemstone/helper-functions");
|
|
46
|
+
var Helper_1 = require("./Helper");
|
|
47
|
+
function Series(props) {
|
|
48
|
+
/*
|
|
49
|
+
Used to show data on plot.
|
|
50
|
+
*/
|
|
51
|
+
var _a = React.useContext(Plot_1.PlotContext), svgWidth = _a.svgWidth, left = _a.left, right = _a.right, top = _a.top, bottom = _a.bottom, margin = _a.margin;
|
|
52
|
+
var yGuid = React.useContext(YAxis_1.YAxisContext);
|
|
53
|
+
var xGuid = React.useContext(XAxis_1.XAxisContext);
|
|
54
|
+
var dispatch = react_redux_1.useDispatch();
|
|
55
|
+
var series = react_redux_1.useSelector(function (state) { return LegendSlice_1.SelectLegendSeries(state, props.Label); });
|
|
56
|
+
var yAxis = react_redux_1.useSelector(function (state) { return YAxisSlice_1.SelectYAxis(state, yGuid); });
|
|
57
|
+
var xAxis = react_redux_1.useSelector(function (state) { return XAxisSlice_1.SelectXAxis(state, xGuid); });
|
|
58
|
+
React.useEffect(function () {
|
|
59
|
+
if (series === undefined)
|
|
60
|
+
dispatch(LegendSlice_1.Add({ Label: props.Label, Color: props.Color, Show: props.ShowInitially === false ? false : true, Width: helper_functions_1.GetTextWidth("BlinkMacSystemFont", '13px', props.Label) }));
|
|
61
|
+
}, []);
|
|
62
|
+
if (yAxis === undefined || xAxis === undefined)
|
|
63
|
+
return React.createElement(React.Fragment, null);
|
|
64
|
+
var x = Helper_1.GetScale(xAxis.Type, left, right, xAxis.Domain);
|
|
65
|
+
var y = Helper_1.GetScale(yAxis.Type, bottom, top, yAxis.Domain);
|
|
66
|
+
if (series !== undefined ? !series.Show : false) {
|
|
67
|
+
return (React.createElement(React.Fragment, null));
|
|
68
|
+
}
|
|
69
|
+
else if (props.Type === 'points') {
|
|
70
|
+
return (React.createElement(React.Fragment, null, props.Data.filter(function (point) { return point[props.YField] >= yAxis.Domain[0] && point[props.YField] <= yAxis.Domain[1] && point[props.XField] >= xAxis.Domain[0] && point[props.XField] <= xAxis.Domain[1]; }).map(function (point, index) { return React.createElement("circle", __assign({}, props.Style, { key: index, className: "dot", r: 3, cx: (xAxis.Scale ? xAxis.Scale(point[props.XField]) : 0), cy: (yAxis.Scale ? yAxis.Scale(point[props.YField]) : 0), fill: 'blue', style: { cursor: 'pointer' }, onClick: props.Click })); })));
|
|
71
|
+
}
|
|
72
|
+
else if (props.Type === 'line') {
|
|
73
|
+
var linefunc = d3.line().x(function (d) { return x(d[props.XField]); }).y(function (d) { return y(d[props.YField]); });
|
|
74
|
+
return React.createElement("path", __assign({}, props.Style, { d: linefunc(props.Data), stroke: props.Color }));
|
|
75
|
+
}
|
|
76
|
+
else if (props.Type === 'histogram') {
|
|
77
|
+
var histogram = d3.bin().thresholds(function (data, min, max) { var _a; return d3.range((_a = props === null || props === void 0 ? void 0 : props.bins) !== null && _a !== void 0 ? _a : 10).map(function (t) { var _a; return min + (t / ((_a = props === null || props === void 0 ? void 0 : props.bins) !== null && _a !== void 0 ? _a : 10)) * (max - min); }); }).value(function (d) { return d[props.XField]; });
|
|
78
|
+
var bars = histogram(props.Data);
|
|
79
|
+
var length_1 = d3.max(bars, function (bar) { return bar.length; });
|
|
80
|
+
var histY_1 = d3.scaleLinear().range([top, bottom]).domain([0, length_1]);
|
|
81
|
+
return (React.createElement(React.Fragment, null, bars.map(function (bar) { return (React.createElement("rect", __assign({}, props.Style, { x: 0, transform: "translate(" + x(bar.x0) + "," + histY_1(bar.length) + ")", width: x(bar.x1) - x(bar.x0) - 1 }))); })));
|
|
82
|
+
}
|
|
83
|
+
else if (props.Type === 'stacked') {
|
|
84
|
+
return (React.createElement(React.Fragment, null));
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
return (React.createElement(React.Fragment, null));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.default = Series;
|
package/lib/index.d.ts
CHANGED
|
@@ -4,4 +4,6 @@ import LineWithThreshold from './LineWithThreshold';
|
|
|
4
4
|
import HorizontalMarker from './HorizontalMarker';
|
|
5
5
|
import Button from './Button';
|
|
6
6
|
import VerticalMarker from './VerticalMarker';
|
|
7
|
-
|
|
7
|
+
import AggregatingCircles from './AggregatingCircles';
|
|
8
|
+
import Circle from './Circle';
|
|
9
|
+
export { Plot, Line, LineWithThreshold, Button, HorizontalMarker, VerticalMarker, Circle, AggregatingCircles };
|