@gpa-gemstone/react-graph 1.0.61 → 1.0.63
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/Circle.js +2 -2
- package/lib/HeatLegend.js +4 -4
- package/lib/Line.js +3 -3
- package/lib/LineLegend.js +36 -8
- package/lib/Oval.js +2 -2
- package/lib/Plot.d.ts +1 -1
- package/lib/Plot.js +10 -8
- package/lib/PointNode.js +1 -1
- package/lib/TimeAxis.js +11 -9
- package/lib/XValueAxis.d.ts +16 -0
- package/lib/XValueAxis.js +129 -0
- package/lib/YValueAxis.js +196 -0
- package/package.json +3 -3
- package/lib/ValueAxis.js +0 -196
- /package/lib/{ValueAxis.d.ts → YValueAxis.d.ts} +0 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ******************************************************************************************************
|
|
3
|
+
// XValueAxis.tsx - Gbtc
|
|
4
|
+
//
|
|
5
|
+
// Copyright © 2021, 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
|
+
// 10/22/2024 - Preston Crawford
|
|
21
|
+
// Generated original version of source code.
|
|
22
|
+
//
|
|
23
|
+
// ******************************************************************************************************
|
|
24
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
25
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
26
|
+
if (!m) return o;
|
|
27
|
+
var i = m.call(o), r, ar = [], e;
|
|
28
|
+
try {
|
|
29
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
30
|
+
}
|
|
31
|
+
catch (error) { e = { error: error }; }
|
|
32
|
+
finally {
|
|
33
|
+
try {
|
|
34
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
35
|
+
}
|
|
36
|
+
finally { if (e) throw e.error; }
|
|
37
|
+
}
|
|
38
|
+
return ar;
|
|
39
|
+
};
|
|
40
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
41
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
42
|
+
if (ar || !(i in from)) {
|
|
43
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
44
|
+
ar[i] = from[i];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
48
|
+
};
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
var React = require("react");
|
|
51
|
+
var GraphContext_1 = require("./GraphContext");
|
|
52
|
+
var helper_functions_1 = require("@gpa-gemstone/helper-functions");
|
|
53
|
+
function XValueAxis(props) {
|
|
54
|
+
var _a, _b, _c, _d;
|
|
55
|
+
var context = React.useContext(GraphContext_1.GraphContext);
|
|
56
|
+
var _e = __read(React.useState([]), 2), tick = _e[0], setTick = _e[1];
|
|
57
|
+
var _f = __read(React.useState(0), 2), hLabel = _f[0], setHlabel = _f[1];
|
|
58
|
+
var _g = __read(React.useState(0), 2), hAxis = _g[0], setHAxis = _g[1];
|
|
59
|
+
var _h = __read(React.useState(props.label), 2), title = _h[0], setTitle = _h[1];
|
|
60
|
+
var _j = __read(React.useState(0), 2), decimalPlaces = _j[0], setDecimalPlaces = _j[1];
|
|
61
|
+
// Adjust space for X Axis labels
|
|
62
|
+
React.useEffect(function () {
|
|
63
|
+
setHlabel(title != null ? (0, helper_functions_1.GetTextHeight)('Segoe UI', '1em', title) : 0);
|
|
64
|
+
}, [title]);
|
|
65
|
+
// Adjust axis title
|
|
66
|
+
React.useEffect(function () {
|
|
67
|
+
var _a;
|
|
68
|
+
setTitle((_a = props.label) !== null && _a !== void 0 ? _a : '');
|
|
69
|
+
}, [props.label]);
|
|
70
|
+
//Calculate ticks
|
|
71
|
+
React.useEffect(function () {
|
|
72
|
+
var deltaX = context.XDomain[1] - context.XDomain[0];
|
|
73
|
+
if (deltaX === 0)
|
|
74
|
+
return;
|
|
75
|
+
var _a = calculateTickInterval(context.XDomain[0], context.XDomain[1]), tickInterval = _a.tickInterval, decimalPlaces = _a.decimalPlaces;
|
|
76
|
+
var startTick = Math.ceil(context.XDomain[0] / tickInterval) * tickInterval;
|
|
77
|
+
var endTick = context.XDomain[1];
|
|
78
|
+
var newTicks = [];
|
|
79
|
+
for (var t = startTick; t <= endTick; t += tickInterval) {
|
|
80
|
+
newTicks.push(t);
|
|
81
|
+
}
|
|
82
|
+
setTick(newTicks);
|
|
83
|
+
setDecimalPlaces(decimalPlaces);
|
|
84
|
+
}, [context.XDomain]);
|
|
85
|
+
//Adjust spacing for tick labels
|
|
86
|
+
React.useEffect(function () {
|
|
87
|
+
var maxLabelHeight = Math.max.apply(Math, __spreadArray([], __read(tick.map(function (t) { return (0, helper_functions_1.GetTextHeight)('Segoe UI', '1em', formatNumber(t, decimalPlaces)); })), false));
|
|
88
|
+
var dX = (isFinite(maxLabelHeight) ? maxLabelHeight : 0) + 12;
|
|
89
|
+
setHAxis(dX);
|
|
90
|
+
}, [tick, decimalPlaces]);
|
|
91
|
+
//Adjust axis height
|
|
92
|
+
React.useEffect(function () {
|
|
93
|
+
if (hAxis + hLabel !== props.heightAxis)
|
|
94
|
+
props.setHeight(hAxis + hLabel);
|
|
95
|
+
}, [hAxis, hLabel, props.heightAxis]);
|
|
96
|
+
return (React.createElement("g", null,
|
|
97
|
+
React.createElement("path", { stroke: "currentColor", style: { strokeWidth: 1 }, d: "M ".concat(props.offsetLeft - (((_a = props.showLeftMostTick) !== null && _a !== void 0 ? _a : true) ? 0 : 8), " ").concat(props.height - props.offsetBottom, " H ").concat(props.width - props.offsetRight + (((_b = props.showRightMostTick) !== null && _b !== void 0 ? _b : true) ? 0 : 8)) }),
|
|
98
|
+
((_c = props.showLeftMostTick) !== null && _c !== void 0 ? _c : true) ? (React.createElement("path", { stroke: "currentColor", style: { strokeWidth: 1 }, d: "M ".concat(props.offsetLeft, " ").concat(props.height - props.offsetBottom, " v 8") })) : null,
|
|
99
|
+
((_d = props.showRightMostTick) !== null && _d !== void 0 ? _d : true) ? (React.createElement("path", { stroke: "currentColor", style: { strokeWidth: 1 }, d: "M ".concat(props.width - props.offsetRight, " ").concat(props.height - props.offsetBottom, " v 8") })) : null,
|
|
100
|
+
(React.createElement(React.Fragment, null,
|
|
101
|
+
tick.map(function (l, i) { return (React.createElement("path", { key: i, stroke: "currentColor", style: { strokeWidth: 1, transition: 'd 0.5s' }, d: "M ".concat(context.XTransformation(l), " ").concat(props.height - props.offsetBottom + 6, " v -6") })); }),
|
|
102
|
+
tick.map(function (l, i) { return (React.createElement("text", { fill: "currentColor", key: i, style: { fontSize: '1em', textAnchor: 'middle', dominantBaseline: 'hanging', transition: 'x 0.5s, y 0.5s', }, y: props.height - props.offsetBottom + 8, x: context.XTransformation(l) }, formatNumber(l, decimalPlaces))); }))),
|
|
103
|
+
title != null ? (React.createElement("text", { fill: "currentColor", style: { fontSize: '1em', textAnchor: 'middle', dominantBaseline: 'middle' }, x: props.offsetLeft + (props.width - props.offsetLeft - props.offsetRight) / 2, y: props.height - props.offsetBottom + hAxis }, title)) : null));
|
|
104
|
+
}
|
|
105
|
+
//helper functions
|
|
106
|
+
var formatNumber = function (value, decimalPlaces) {
|
|
107
|
+
return value.toFixed(decimalPlaces);
|
|
108
|
+
};
|
|
109
|
+
var calculateTickInterval = function (min, max) {
|
|
110
|
+
var range = max - min;
|
|
111
|
+
var desiredTicks = 7;
|
|
112
|
+
var rawTickInterval = range / desiredTicks;
|
|
113
|
+
var exponent = Math.floor(Math.log10(rawTickInterval));
|
|
114
|
+
var fraction = rawTickInterval / Math.pow(10, exponent);
|
|
115
|
+
var niceFraction;
|
|
116
|
+
if (fraction <= 1)
|
|
117
|
+
niceFraction = 1;
|
|
118
|
+
else if (fraction <= 2)
|
|
119
|
+
niceFraction = 2;
|
|
120
|
+
else if (fraction <= 5)
|
|
121
|
+
niceFraction = 5;
|
|
122
|
+
else
|
|
123
|
+
niceFraction = 10;
|
|
124
|
+
var tickInterval = niceFraction * Math.pow(10, exponent);
|
|
125
|
+
var decimalPlaces = Math.max(0, -Math.floor(Math.log10(tickInterval)));
|
|
126
|
+
return { tickInterval: tickInterval, decimalPlaces: decimalPlaces };
|
|
127
|
+
};
|
|
128
|
+
exports.default = React.memo(XValueAxis);
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWFZhbHVlQXhpcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9YVmFsdWVBeGlzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEseUdBQXlHO0FBQ3pHLHlCQUF5QjtBQUN6QixFQUFFO0FBQ0YscUVBQXFFO0FBQ3JFLEVBQUU7QUFDRix3R0FBd0c7QUFDeEcsd0dBQXdHO0FBQ3hHLHNHQUFzRztBQUN0Ryx3RkFBd0Y7QUFDeEYsRUFBRTtBQUNGLDBDQUEwQztBQUMxQyxFQUFFO0FBQ0Ysd0dBQXdHO0FBQ3hHLHdHQUF3RztBQUN4Ryw0RUFBNEU7QUFDNUUsRUFBRTtBQUNGLDhCQUE4QjtBQUM5Qix3R0FBd0c7QUFDeEcsaUNBQWlDO0FBQ2pDLG1EQUFtRDtBQUNuRCxFQUFFO0FBQ0YseUdBQXlHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFekcsNkJBQStCO0FBQy9CLCtDQUE4QztBQUM5QyxtRUFBK0Q7QUFlL0QsU0FBUyxVQUFVLENBQUMsS0FBYTs7SUFDN0IsSUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQywyQkFBWSxDQUFDLENBQUM7SUFDekMsSUFBQSxLQUFBLE9BQWtCLEtBQUssQ0FBQyxRQUFRLENBQVcsRUFBRSxDQUFDLElBQUEsRUFBN0MsSUFBSSxRQUFBLEVBQUUsT0FBTyxRQUFnQyxDQUFDO0lBQy9DLElBQUEsS0FBQSxPQUFzQixLQUFLLENBQUMsUUFBUSxDQUFTLENBQUMsQ0FBQyxJQUFBLEVBQTlDLE1BQU0sUUFBQSxFQUFFLFNBQVMsUUFBNkIsQ0FBQztJQUNoRCxJQUFBLEtBQUEsT0FBb0IsS0FBSyxDQUFDLFFBQVEsQ0FBUyxDQUFDLENBQUMsSUFBQSxFQUE1QyxLQUFLLFFBQUEsRUFBRSxRQUFRLFFBQTZCLENBQUM7SUFDOUMsSUFBQSxLQUFBLE9BQW9CLEtBQUssQ0FBQyxRQUFRLENBQXFCLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBQSxFQUFsRSxLQUFLLFFBQUEsRUFBRSxR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
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ******************************************************************************************************
|
|
3
|
+
// ValueAxis.tsx - Gbtc
|
|
4
|
+
//
|
|
5
|
+
// Copyright © 2021, 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
|
+
// 03/19/2021 - C. lackner
|
|
21
|
+
// Generated original version of source code.
|
|
22
|
+
//
|
|
23
|
+
// ******************************************************************************************************
|
|
24
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
25
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
26
|
+
if (!m) return o;
|
|
27
|
+
var i = m.call(o), r, ar = [], e;
|
|
28
|
+
try {
|
|
29
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
30
|
+
}
|
|
31
|
+
catch (error) { e = { error: error }; }
|
|
32
|
+
finally {
|
|
33
|
+
try {
|
|
34
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
35
|
+
}
|
|
36
|
+
finally { if (e) throw e.error; }
|
|
37
|
+
}
|
|
38
|
+
return ar;
|
|
39
|
+
};
|
|
40
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
41
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
42
|
+
if (ar || !(i in from)) {
|
|
43
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
44
|
+
ar[i] = from[i];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
48
|
+
};
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
var React = require("react");
|
|
51
|
+
var GraphContext_1 = require("./GraphContext");
|
|
52
|
+
var helper_functions_1 = require("@gpa-gemstone/helper-functions");
|
|
53
|
+
function ValueAxis(props) {
|
|
54
|
+
var context = React.useContext(GraphContext_1.GraphContext);
|
|
55
|
+
var _a = __read(React.useState([]), 2), tick = _a[0], setTick = _a[1];
|
|
56
|
+
var _b = __read(React.useState(0), 2), hLabel = _b[0], setHlabel = _b[1];
|
|
57
|
+
var _c = __read(React.useState(1), 2), ftSizeLabel = _c[0], setFtSizeLabel = _c[1];
|
|
58
|
+
var _d = __read(React.useState(0), 2), hAxis = _d[0], setHAxis = _d[1];
|
|
59
|
+
var _e = __read(React.useState(1), 2), nDigits = _e[0], setNdigits = _e[1];
|
|
60
|
+
var _f = __read(React.useState(1), 2), factor = _f[0], setFactor = _f[1];
|
|
61
|
+
React.useEffect(function () {
|
|
62
|
+
var axis = GraphContext_1.AxisMap.get(props.axis);
|
|
63
|
+
var dY = context.YDomain[axis][1] - context.YDomain[axis][0];
|
|
64
|
+
if (!isFinite(dY) || isNaN(dY)) {
|
|
65
|
+
setTick([]);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
var newTicks;
|
|
69
|
+
if (dY === 0) {
|
|
70
|
+
newTicks = [context.YDomain[axis][0]];
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
var exp = 0;
|
|
74
|
+
while ((dY * Math.pow(10, exp)) < 1) {
|
|
75
|
+
exp = exp + 1;
|
|
76
|
+
}
|
|
77
|
+
while ((dY * Math.pow(10, exp)) > 10) {
|
|
78
|
+
exp = exp - 1;
|
|
79
|
+
}
|
|
80
|
+
var scale = 1.0 / Math.pow(10, exp);
|
|
81
|
+
if (dY * Math.pow(10, exp) < 6 && dY * Math.pow(10, exp) >= 2.5)
|
|
82
|
+
scale = 0.5 / Math.pow(10, exp);
|
|
83
|
+
if (dY * Math.pow(10, exp) < 2.5 && dY * Math.pow(10, exp) >= 1.2)
|
|
84
|
+
scale = 0.2 / Math.pow(10, exp);
|
|
85
|
+
if (dY * Math.pow(10, exp) < 1.2)
|
|
86
|
+
scale = 0.1 / Math.pow(10, exp);
|
|
87
|
+
var offset = Math.floor(context.YDomain[axis][0] / scale) * scale;
|
|
88
|
+
newTicks = [offset + scale];
|
|
89
|
+
while (newTicks[newTicks.length - 1] < (context.YDomain[axis][1] - scale))
|
|
90
|
+
newTicks.push(newTicks[newTicks.length - 1] + scale);
|
|
91
|
+
}
|
|
92
|
+
var expF = 0;
|
|
93
|
+
var Ymax = Math.max(Math.abs(context.YDomain[axis][0]), Math.abs(context.YDomain[axis][1]));
|
|
94
|
+
while ((Ymax * Math.pow(10, expF)) < 1) {
|
|
95
|
+
expF = expF + 1;
|
|
96
|
+
}
|
|
97
|
+
while ((Ymax * Math.pow(10, expF)) > 10) {
|
|
98
|
+
expF = expF - 1;
|
|
99
|
+
}
|
|
100
|
+
expF = Math.sign(expF) * (Math.floor(Math.abs(expF) / 3)) * 3;
|
|
101
|
+
// adjust to avoid same value on axis scenario
|
|
102
|
+
if (dY * Math.pow(10, expF) < 0.1 && dY !== 0)
|
|
103
|
+
expF = expF + 3;
|
|
104
|
+
if (props.useFactor)
|
|
105
|
+
setFactor(Math.pow(10, expF));
|
|
106
|
+
else
|
|
107
|
+
setFactor(1);
|
|
108
|
+
setTick(newTicks);
|
|
109
|
+
}, [context.YDomain, props.useFactor, props.axis]);
|
|
110
|
+
React.useEffect(function () {
|
|
111
|
+
var axis = GraphContext_1.AxisMap.get(props.axis);
|
|
112
|
+
var dY = context.YDomain[axis][1] - context.YDomain[axis][0];
|
|
113
|
+
dY = dY * factor;
|
|
114
|
+
if (dY === 0)
|
|
115
|
+
dY = Math.abs(context.YDomain[axis][0] * factor);
|
|
116
|
+
if (dY >= 15)
|
|
117
|
+
setNdigits(0);
|
|
118
|
+
if (dY < 15 && dY >= 1.5)
|
|
119
|
+
setNdigits(1);
|
|
120
|
+
if (dY < 1.5 && dY >= 0.15)
|
|
121
|
+
setNdigits(2);
|
|
122
|
+
if (dY < 0.15)
|
|
123
|
+
setNdigits(3);
|
|
124
|
+
if (dY < 0.015)
|
|
125
|
+
setNdigits(4);
|
|
126
|
+
if (dY < 0.0015)
|
|
127
|
+
setNdigits(5);
|
|
128
|
+
if (dY === 0)
|
|
129
|
+
setNdigits(2);
|
|
130
|
+
}, [factor, context.YDomain, props.axis]);
|
|
131
|
+
React.useEffect(function () {
|
|
132
|
+
var h = 0;
|
|
133
|
+
if (factor !== 1)
|
|
134
|
+
h = (0, helper_functions_1.GetTextHeight)("Segoe UI", '1em', 'x' + (1 / factor).toString());
|
|
135
|
+
if (h !== props.hFactor)
|
|
136
|
+
props.setHeightFactor(h);
|
|
137
|
+
}, [factor, props.hFactor, props.setHeightFactor]);
|
|
138
|
+
React.useEffect(function () {
|
|
139
|
+
if (props.label === undefined) {
|
|
140
|
+
setHlabel(0);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
var h = (0, helper_functions_1.GetTextHeight)("Segoe UI", ftSizeLabel + 'em', props.label) + 4;
|
|
144
|
+
setHlabel(h);
|
|
145
|
+
}, [props.label, props.height, props.offsetTop, props.offsetBottom, ftSizeLabel]);
|
|
146
|
+
React.useEffect(function () {
|
|
147
|
+
var dY = Math.max.apply(Math, __spreadArray([], __read(tick.map(function (t) { return (0, helper_functions_1.GetTextWidth)("Segoe UI", '1em', (t * factor).toFixed(nDigits)); })), false));
|
|
148
|
+
dY = (isFinite(dY) ? dY : 0) + 8;
|
|
149
|
+
if (dY !== hAxis)
|
|
150
|
+
setHAxis(dY);
|
|
151
|
+
}, [tick, nDigits]);
|
|
152
|
+
React.useEffect(function () {
|
|
153
|
+
if (props.hAxis !== hAxis + hLabel)
|
|
154
|
+
props.setWidthAxis(hAxis + hLabel);
|
|
155
|
+
}, [hAxis, hLabel, props.hAxis]);
|
|
156
|
+
// use effect resets us in case this becomes unmounted
|
|
157
|
+
React.useEffect(function () {
|
|
158
|
+
return function () { return props.setWidthAxis(0); };
|
|
159
|
+
}, []);
|
|
160
|
+
React.useEffect(function () {
|
|
161
|
+
if (props.label === undefined)
|
|
162
|
+
return;
|
|
163
|
+
var h = (0, helper_functions_1.GetTextWidth)("Segoe UI", '1em', props.label);
|
|
164
|
+
var size = 1;
|
|
165
|
+
while (h > props.height && size > 0.1) {
|
|
166
|
+
size = size - 0.1;
|
|
167
|
+
h = (0, helper_functions_1.GetTextWidth)("Segoe UI", size + 'em', props.label);
|
|
168
|
+
}
|
|
169
|
+
if (ftSizeLabel !== size)
|
|
170
|
+
setFtSizeLabel(size);
|
|
171
|
+
}, [props.label, props.height]);
|
|
172
|
+
var leftPosition = React.useMemo(function () {
|
|
173
|
+
if (props.axis === undefined || props.axis === 'left')
|
|
174
|
+
return props.offsetLeft;
|
|
175
|
+
else
|
|
176
|
+
return props.width - props.offsetRight;
|
|
177
|
+
}, [props.offsetLeft, props.offsetRight, props.width, props.axis]);
|
|
178
|
+
var tickDirection = React.useMemo(function () {
|
|
179
|
+
if (props.axis === undefined || props.axis === 'left')
|
|
180
|
+
return -1;
|
|
181
|
+
else
|
|
182
|
+
return 1;
|
|
183
|
+
}, [props.axis]);
|
|
184
|
+
return (React.createElement("g", null,
|
|
185
|
+
React.createElement("path", { stroke: 'currentColor', style: { strokeWidth: 1, transition: 'd 0.5s' }, d: "M ".concat(leftPosition, " ").concat(props.height - props.offsetBottom + 8, " V ").concat(props.offsetTop) }),
|
|
186
|
+
React.createElement("path", { stroke: 'currentColor', style: { strokeWidth: 1, transition: 'd 0.5s' }, d: "M ".concat(leftPosition, " ").concat(props.offsetTop, " h ").concat(tickDirection * 8) }),
|
|
187
|
+
tick.map(function (l, i) { var _a; return React.createElement("path", { key: i, stroke: ((props.axis === undefined || props.axis === 'left') ? 'lightgrey' : 'darkgrey'), strokeOpacity: ((_a = props.showGrid) !== null && _a !== void 0 ? _a : false) ? '0.8' : '0.0', style: { strokeWidth: 1, transition: 'd 0.5s' }, d: "M ".concat(props.offsetLeft, " ").concat(context.YTransformation(l, GraphContext_1.AxisMap.get(props.axis)), " h ").concat(props.width - props.offsetLeft - props.offsetRight) }); }),
|
|
188
|
+
tick.map(function (l, i) { return React.createElement("path", { key: i, stroke: 'currentColor', style: { strokeWidth: 1, transition: 'd 1s' }, d: "M ".concat(leftPosition, " ").concat(context.YTransformation(l, GraphContext_1.AxisMap.get(props.axis)), " h ").concat(tickDirection * 6) }); }),
|
|
189
|
+
tick.map(function (l, i) { return React.createElement("text", { fill: 'currentColor', key: i, style: { fontSize: '1em', textAnchor: (props.axis === undefined || props.axis === 'left') ? 'end' : 'start', transition: 'x 0.5s, y 0.5s' }, dominantBaseline: 'middle', x: leftPosition + tickDirection * 8, y: context.YTransformation(l, GraphContext_1.AxisMap.get(props.axis)) }, (l * factor).toFixed(nDigits)); }),
|
|
190
|
+
props.label !== undefined ? React.createElement("text", { fill: 'currentColor', style: { fontSize: ftSizeLabel + 'em', textAnchor: 'middle' }, dominantBaseline: 'text-bottom', transform: "rotate(".concat(tickDirection * 90, ",").concat(leftPosition + tickDirection * (hAxis + 4), ",").concat((props.offsetTop - props.offsetBottom + props.height) / 2.0, ")"), x: leftPosition + tickDirection * (hAxis + 4), y: (props.offsetTop - props.offsetBottom + props.height) / 2.0 }, props.label) : null,
|
|
191
|
+
factor !== 1 ? React.createElement("text", { fill: 'currentColor', style: { fontSize: '1em' }, x: leftPosition, y: props.offsetTop - 5 },
|
|
192
|
+
"x",
|
|
193
|
+
1 / factor) : null));
|
|
194
|
+
}
|
|
195
|
+
exports.default = React.memo(ValueAxis);
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWVZhbHVlQXhpcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ZVmFsdWVBeGlzLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUMseUdBQXlHO0FBQzFHLHdCQUF3QjtBQUN4QixFQUFFO0FBQ0YscUVBQXFFO0FBQ3JFLEVBQUU7QUFDRix3R0FBd0c7QUFDeEcsd0dBQXdHO0FBQ3hHLHNHQUFzRztBQUN0Ryx3RkFBd0Y7QUFDeEYsRUFBRTtBQUNGLDBDQUEwQztBQUMxQyxFQUFFO0FBQ0Ysd0dBQXdHO0FBQ3hHLHdHQUF3RztBQUN4Ryw0RUFBNEU7QUFDNUUsRUFBRTtBQUNGLDhCQUE4QjtBQUM5Qix3R0FBd0c7QUFDeEcsMkJBQTJCO0FBQzNCLG1EQUFtRDtBQUNuRCxFQUFFO0FBQ0YseUdBQXlHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFekcsNkJBQStCO0FBQy9CLCtDQUFvRTtBQUNwRSxtRUFBMkU7QUFtQjNFLFNBQVMsU0FBUyxDQUFDLEtBQWE7SUFDOUIsSUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQywyQkFBWSxDQUFDLENBQUE7SUFDeEMsSUFBQSxLQUFBLE9BQWlCLEtBQUssQ0FBQyxRQUFRLENBQVcsRUFBRSxDQUFDLElBQUEsRUFBNUMsSUFBSSxRQUFBLEVBQUMsT0FBTyxRQUFnQyxDQUFDO0lBRTlDLElBQUEsS0FBQSxPQUFzQixLQUFLLENBQUMsUUFBUSxDQUFTLENBQUMsQ0FBQyxJQUFBLEVBQTlDLE1BQU0sUUFBQSxFQUFFLFNBQVMsUUFBNkIsQ0FBQztJQUNoRCxJQUFBLEtBQUEsT0FBZ0MsS0FBSyxDQUFDLFFBQVEsQ0FBUyxDQUFDLENBQUMsSUFBQSxFQUF4RCxXQUFXLFFBQUEsRUFBRSxjQUFjLFFBQTZCLENBQUM7SUFDMUQsSUFBQSxLQUFBLE9BQW9CLEtBQUssQ0FBQyxRQUFRLENBQVMsQ0FBQyxDQUFDLElBQUEsRUFBNUMsS0FBSyxRQUFBLEVBQUUsUUFBUSxRQUE2QixD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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gpa-gemstone/react-graph",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.63",
|
|
4
4
|
"description": "Interactive UI Components for GPA products",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
"typescript": "5.5.3"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@gpa-gemstone/gpa-symbols": "0.0.
|
|
49
|
-
"@gpa-gemstone/helper-functions": "0.0.
|
|
48
|
+
"@gpa-gemstone/gpa-symbols": "0.0.44",
|
|
49
|
+
"@gpa-gemstone/helper-functions": "0.0.36",
|
|
50
50
|
"html2canvas": "^1.4.1",
|
|
51
51
|
"lodash": "^4.17.21",
|
|
52
52
|
"moment": "^2.29.4",
|
package/lib/ValueAxis.js
DELETED
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// ******************************************************************************************************
|
|
3
|
-
// ValueAxis.tsx - Gbtc
|
|
4
|
-
//
|
|
5
|
-
// Copyright © 2021, 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
|
-
// 03/19/2021 - C. lackner
|
|
21
|
-
// Generated original version of source code.
|
|
22
|
-
//
|
|
23
|
-
// ******************************************************************************************************
|
|
24
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
25
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
26
|
-
if (!m) return o;
|
|
27
|
-
var i = m.call(o), r, ar = [], e;
|
|
28
|
-
try {
|
|
29
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
30
|
-
}
|
|
31
|
-
catch (error) { e = { error: error }; }
|
|
32
|
-
finally {
|
|
33
|
-
try {
|
|
34
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
35
|
-
}
|
|
36
|
-
finally { if (e) throw e.error; }
|
|
37
|
-
}
|
|
38
|
-
return ar;
|
|
39
|
-
};
|
|
40
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
41
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
42
|
-
if (ar || !(i in from)) {
|
|
43
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
44
|
-
ar[i] = from[i];
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
48
|
-
};
|
|
49
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
-
var React = require("react");
|
|
51
|
-
var GraphContext_1 = require("./GraphContext");
|
|
52
|
-
var helper_functions_1 = require("@gpa-gemstone/helper-functions");
|
|
53
|
-
function ValueAxis(props) {
|
|
54
|
-
var context = React.useContext(GraphContext_1.GraphContext);
|
|
55
|
-
var _a = __read(React.useState([]), 2), tick = _a[0], setTick = _a[1];
|
|
56
|
-
var _b = __read(React.useState(0), 2), hLabel = _b[0], setHlabel = _b[1];
|
|
57
|
-
var _c = __read(React.useState(1), 2), ftSizeLabel = _c[0], setFtSizeLabel = _c[1];
|
|
58
|
-
var _d = __read(React.useState(0), 2), hAxis = _d[0], setHAxis = _d[1];
|
|
59
|
-
var _e = __read(React.useState(1), 2), nDigits = _e[0], setNdigits = _e[1];
|
|
60
|
-
var _f = __read(React.useState(1), 2), factor = _f[0], setFactor = _f[1];
|
|
61
|
-
React.useEffect(function () {
|
|
62
|
-
var axis = GraphContext_1.AxisMap.get(props.axis);
|
|
63
|
-
var dY = context.YDomain[axis][1] - context.YDomain[axis][0];
|
|
64
|
-
if (!isFinite(dY) || isNaN(dY)) {
|
|
65
|
-
setTick([]);
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
var newTicks;
|
|
69
|
-
if (dY === 0) {
|
|
70
|
-
newTicks = [context.YDomain[axis][0]];
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
var exp = 0;
|
|
74
|
-
while ((dY * Math.pow(10, exp)) < 1) {
|
|
75
|
-
exp = exp + 1;
|
|
76
|
-
}
|
|
77
|
-
while ((dY * Math.pow(10, exp)) > 10) {
|
|
78
|
-
exp = exp - 1;
|
|
79
|
-
}
|
|
80
|
-
var scale = 1.0 / Math.pow(10, exp);
|
|
81
|
-
if (dY * Math.pow(10, exp) < 6 && dY * Math.pow(10, exp) >= 2.5)
|
|
82
|
-
scale = 0.5 / Math.pow(10, exp);
|
|
83
|
-
if (dY * Math.pow(10, exp) < 2.5 && dY * Math.pow(10, exp) >= 1.2)
|
|
84
|
-
scale = 0.2 / Math.pow(10, exp);
|
|
85
|
-
if (dY * Math.pow(10, exp) < 1.2)
|
|
86
|
-
scale = 0.1 / Math.pow(10, exp);
|
|
87
|
-
var offset = Math.floor(context.YDomain[axis][0] / scale) * scale;
|
|
88
|
-
newTicks = [offset + scale];
|
|
89
|
-
while (newTicks[newTicks.length - 1] < (context.YDomain[axis][1] - scale))
|
|
90
|
-
newTicks.push(newTicks[newTicks.length - 1] + scale);
|
|
91
|
-
}
|
|
92
|
-
var expF = 0;
|
|
93
|
-
var Ymax = Math.max(Math.abs(context.YDomain[axis][0]), Math.abs(context.YDomain[axis][1]));
|
|
94
|
-
while ((Ymax * Math.pow(10, expF)) < 1) {
|
|
95
|
-
expF = expF + 1;
|
|
96
|
-
}
|
|
97
|
-
while ((Ymax * Math.pow(10, expF)) > 10) {
|
|
98
|
-
expF = expF - 1;
|
|
99
|
-
}
|
|
100
|
-
expF = Math.sign(expF) * (Math.floor(Math.abs(expF) / 3)) * 3;
|
|
101
|
-
// adjust to avoid same value on axis scenario
|
|
102
|
-
if (dY * Math.pow(10, expF) < 0.1 && dY !== 0)
|
|
103
|
-
expF = expF + 3;
|
|
104
|
-
if (props.useFactor)
|
|
105
|
-
setFactor(Math.pow(10, expF));
|
|
106
|
-
else
|
|
107
|
-
setFactor(1);
|
|
108
|
-
setTick(newTicks);
|
|
109
|
-
}, [context.YDomain, props.useFactor, props.axis]);
|
|
110
|
-
React.useEffect(function () {
|
|
111
|
-
var axis = GraphContext_1.AxisMap.get(props.axis);
|
|
112
|
-
var dY = context.YDomain[axis][1] - context.YDomain[axis][0];
|
|
113
|
-
dY = dY * factor;
|
|
114
|
-
if (dY === 0)
|
|
115
|
-
dY = Math.abs(context.YDomain[axis][0] * factor);
|
|
116
|
-
if (dY >= 15)
|
|
117
|
-
setNdigits(0);
|
|
118
|
-
if (dY < 15 && dY >= 1.5)
|
|
119
|
-
setNdigits(1);
|
|
120
|
-
if (dY < 1.5 && dY >= 0.15)
|
|
121
|
-
setNdigits(2);
|
|
122
|
-
if (dY < 0.15)
|
|
123
|
-
setNdigits(3);
|
|
124
|
-
if (dY < 0.015)
|
|
125
|
-
setNdigits(4);
|
|
126
|
-
if (dY < 0.0015)
|
|
127
|
-
setNdigits(5);
|
|
128
|
-
if (dY === 0)
|
|
129
|
-
setNdigits(2);
|
|
130
|
-
}, [factor, context.YDomain, props.axis]);
|
|
131
|
-
React.useEffect(function () {
|
|
132
|
-
var h = 0;
|
|
133
|
-
if (factor !== 1)
|
|
134
|
-
h = (0, helper_functions_1.GetTextHeight)("Segoe UI", '1em', 'x' + (1 / factor).toString());
|
|
135
|
-
if (h !== props.hFactor)
|
|
136
|
-
props.setHeightFactor(h);
|
|
137
|
-
}, [factor, props.hFactor, props.setHeightFactor]);
|
|
138
|
-
React.useEffect(function () {
|
|
139
|
-
if (props.label === undefined) {
|
|
140
|
-
setHlabel(0);
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
var h = (0, helper_functions_1.GetTextHeight)("Segoe UI", ftSizeLabel + 'em', props.label) + 4;
|
|
144
|
-
setHlabel(h);
|
|
145
|
-
}, [props.label, props.height, props.offsetTop, props.offsetBottom, ftSizeLabel]);
|
|
146
|
-
React.useEffect(function () {
|
|
147
|
-
var dY = Math.max.apply(Math, __spreadArray([], __read(tick.map(function (t) { return (0, helper_functions_1.GetTextWidth)("Segoe UI", '1em', (t * factor).toFixed(nDigits)); })), false));
|
|
148
|
-
dY = (isFinite(dY) ? dY : 0) + 8;
|
|
149
|
-
if (dY !== hAxis)
|
|
150
|
-
setHAxis(dY);
|
|
151
|
-
}, [tick, nDigits]);
|
|
152
|
-
React.useEffect(function () {
|
|
153
|
-
if (props.hAxis !== hAxis + hLabel)
|
|
154
|
-
props.setWidthAxis(hAxis + hLabel);
|
|
155
|
-
}, [hAxis, hLabel, props.hAxis]);
|
|
156
|
-
// use effect resets us in case this becomes unmounted
|
|
157
|
-
React.useEffect(function () {
|
|
158
|
-
return function () { return props.setWidthAxis(0); };
|
|
159
|
-
}, []);
|
|
160
|
-
React.useEffect(function () {
|
|
161
|
-
if (props.label === undefined)
|
|
162
|
-
return;
|
|
163
|
-
var h = (0, helper_functions_1.GetTextWidth)("Segoe UI", '1em', props.label);
|
|
164
|
-
var size = 1;
|
|
165
|
-
while (h > props.height && size > 0.1) {
|
|
166
|
-
size = size - 0.1;
|
|
167
|
-
h = (0, helper_functions_1.GetTextWidth)("Segoe UI", size + 'em', props.label);
|
|
168
|
-
}
|
|
169
|
-
if (ftSizeLabel !== size)
|
|
170
|
-
setFtSizeLabel(size);
|
|
171
|
-
}, [props.label, props.height]);
|
|
172
|
-
var leftPosition = React.useMemo(function () {
|
|
173
|
-
if (props.axis === undefined || props.axis === 'left')
|
|
174
|
-
return props.offsetLeft;
|
|
175
|
-
else
|
|
176
|
-
return props.width - props.offsetRight;
|
|
177
|
-
}, [props.offsetLeft, props.offsetRight, props.width, props.axis]);
|
|
178
|
-
var tickDirection = React.useMemo(function () {
|
|
179
|
-
if (props.axis === undefined || props.axis === 'left')
|
|
180
|
-
return -1;
|
|
181
|
-
else
|
|
182
|
-
return 1;
|
|
183
|
-
}, [props.axis]);
|
|
184
|
-
return (React.createElement("g", null,
|
|
185
|
-
React.createElement("path", { stroke: 'black', style: { strokeWidth: 1, transition: 'd 0.5s' }, d: "M ".concat(leftPosition, " ").concat(props.height - props.offsetBottom + 8, " V ").concat(props.offsetTop) }),
|
|
186
|
-
React.createElement("path", { stroke: 'black', style: { strokeWidth: 1, transition: 'd 0.5s' }, d: "M ".concat(leftPosition, " ").concat(props.offsetTop, " h ").concat(tickDirection * 8) }),
|
|
187
|
-
tick.map(function (l, i) { var _a; return React.createElement("path", { key: i, stroke: ((props.axis === undefined || props.axis === 'left') ? 'lightgrey' : 'darkgrey'), strokeOpacity: ((_a = props.showGrid) !== null && _a !== void 0 ? _a : false) ? '0.8' : '0.0', style: { strokeWidth: 1, transition: 'd 0.5s' }, d: "M ".concat(props.offsetLeft, " ").concat(context.YTransformation(l, GraphContext_1.AxisMap.get(props.axis)), " h ").concat(props.width - props.offsetLeft - props.offsetRight) }); }),
|
|
188
|
-
tick.map(function (l, i) { return React.createElement("path", { key: i, stroke: 'black', style: { strokeWidth: 1, transition: 'd 1s' }, d: "M ".concat(leftPosition, " ").concat(context.YTransformation(l, GraphContext_1.AxisMap.get(props.axis)), " h ").concat(tickDirection * 6) }); }),
|
|
189
|
-
tick.map(function (l, i) { return React.createElement("text", { fill: 'black', key: i, style: { fontSize: '1em', textAnchor: (props.axis === undefined || props.axis === 'left') ? 'end' : 'start', transition: 'x 0.5s, y 0.5s' }, dominantBaseline: 'middle', x: leftPosition + tickDirection * 8, y: context.YTransformation(l, GraphContext_1.AxisMap.get(props.axis)) }, (l * factor).toFixed(nDigits)); }),
|
|
190
|
-
props.label !== undefined ? React.createElement("text", { fill: 'black', style: { fontSize: ftSizeLabel + 'em', textAnchor: 'middle' }, dominantBaseline: 'text-bottom', transform: "rotate(".concat(tickDirection * 90, ",").concat(leftPosition + tickDirection * (hAxis + 4), ",").concat((props.offsetTop - props.offsetBottom + props.height) / 2.0, ")"), x: leftPosition + tickDirection * (hAxis + 4), y: (props.offsetTop - props.offsetBottom + props.height) / 2.0 }, props.label) : null,
|
|
191
|
-
factor !== 1 ? React.createElement("text", { fill: 'black', style: { fontSize: '1em' }, x: leftPosition, y: props.offsetTop - 5 },
|
|
192
|
-
"x",
|
|
193
|
-
1 / factor) : null));
|
|
194
|
-
}
|
|
195
|
-
exports.default = React.memo(ValueAxis);
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsdWVBeGlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1ZhbHVlQXhpcy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFDLHlHQUF5RztBQUMxRyx3QkFBd0I7QUFDeEIsRUFBRTtBQUNGLHFFQUFxRTtBQUNyRSxFQUFFO0FBQ0Ysd0dBQXdHO0FBQ3hHLHdHQUF3RztBQUN4RyxzR0FBc0c7QUFDdEcsd0ZBQXdGO0FBQ3hGLEVBQUU7QUFDRiwwQ0FBMEM7QUFDMUMsRUFBRTtBQUNGLHdHQUF3RztBQUN4Ryx3R0FBd0c7QUFDeEcsNEVBQTRFO0FBQzVFLEVBQUU7QUFDRiw4QkFBOEI7QUFDOUIsd0dBQXdHO0FBQ3hHLDJCQUEyQjtBQUMzQixtREFBbUQ7QUFDbkQsRUFBRTtBQUNGLHlHQUF5Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXpHLDZCQUErQjtBQUMvQiwrQ0FBb0U7QUFDcEUsbUVBQTJFO0FBbUIzRSxTQUFTLFNBQVMsQ0FBQyxLQUFhO0lBQzlCLElBQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsMkJBQVksQ0FBQyxDQUFBO0lBQ3hDLElBQUEsS0FBQSxPQUFpQixLQUFLLENBQUMsUUFBUSxDQUFXLEVBQUUsQ0FBQyxJQUFBLEVBQTVDLElBQUksUUFBQSxFQUFDLE9BQU8sUUFBZ0MsQ0FBQztJQUU5QyxJQUFBLEtBQUEsT0FBc0IsS0FBSyxDQUFDLFFBQVEsQ0FBUyxDQUFDLENBQUMsSUFBQSxFQUE5QyxNQUFNLFFBQUEsRUFBRSxTQUFTLFFBQTZCLENBQUM7SUFDaEQsSUFBQSxLQUFBLE9BQWdDLEtBQUssQ0FBQyxRQUFRLENBQVMsQ0FBQyxDQUFDLElBQUEsRUFBeEQsV0FBVyxRQUFBLEVBQUUsY0FBYyxRQUE2QixDQUFDO0lBQzFELElBQUEsS0FBQSxPQUFvQixLQUFLLENBQUMsUUFBUSxDQUFTLENBQUMsQ0FBQyxJQUFBLEVBQTVDLEtBQUssUUFBQSxFQUFFLFFBQVEsUUFBNkIsQ0FB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QUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQ3JFLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNiLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RixPQUFPLENBQUMsSUFBSSxHQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQztRQUNELE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUN0QyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNwQixDQUFDO1FBRUQsSUFBSSxHQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsR0FBRyxDQUFDLENBQUM7UUFFOUQsOENBQThDO1FBQzlDLElBQUksRUFBRSxHQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFD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
|
|
File without changes
|