victory-pie 36.8.2 → 36.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/victory-pie.js +487 -224
- package/dist/victory-pie.min.js +1 -1
- package/es/helper-methods.d.ts +14 -0
- package/es/helper-methods.js +72 -9
- package/es/index.d.ts +3 -83
- package/es/index.js +2 -2
- package/es/slice.d.ts +62 -0
- package/es/slice.js +3 -6
- package/es/victory-pie.d.ts +117 -0
- package/es/victory-pie.js +106 -83
- package/lib/helper-methods.d.ts +14 -0
- package/lib/helper-methods.js +92 -10
- package/lib/index.d.ts +3 -83
- package/lib/index.js +23 -15
- package/lib/slice.d.ts +62 -0
- package/lib/slice.js +5 -6
- package/lib/victory-pie.d.ts +117 -0
- package/lib/victory-pie.js +109 -88
- package/package.json +3 -3
- package/src/{helper-methods.js → helper-methods.ts} +80 -8
- package/src/index.ts +2 -0
- package/src/{slice.js → slice.tsx} +46 -6
- package/src/victory-pie.tsx +269 -0
- package/src/index.d.ts +0 -83
- package/src/index.js +0 -2
- package/src/victory-pie.js +0 -268
package/es/victory-pie.js
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
import _isNil from "lodash/isNil";
|
|
2
|
+
|
|
3
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
4
|
+
|
|
5
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
6
|
+
|
|
7
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
8
|
+
|
|
9
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
10
|
+
|
|
11
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
12
|
+
|
|
13
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
14
|
+
|
|
1
15
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
2
16
|
|
|
3
17
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
@@ -18,12 +32,10 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
|
|
|
18
32
|
|
|
19
33
|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
20
34
|
|
|
21
|
-
/* eslint no-magic-numbers: ["error", { "ignore": [-1, 0, 1, 2] }]*/
|
|
22
35
|
import React from "react";
|
|
23
|
-
import
|
|
24
|
-
import { addEvents, Helpers, Data, PropTypes as CustomPropTypes, VictoryContainer, VictoryLabel, VictoryTheme, UserProps } from "victory-core";
|
|
25
|
-
import Slice from "./slice";
|
|
36
|
+
import { addEvents, Helpers, Data, LineSegment, VictoryContainer, VictoryLabel, VictoryTheme, UserProps } from "victory-core";
|
|
26
37
|
import { getBaseProps } from "./helper-methods";
|
|
38
|
+
import { Slice } from "./slice";
|
|
27
39
|
var fallbackProps = {
|
|
28
40
|
endAngle: 360,
|
|
29
41
|
height: 400,
|
|
@@ -34,26 +46,98 @@ var fallbackProps = {
|
|
|
34
46
|
width: 400,
|
|
35
47
|
startAngle: 0,
|
|
36
48
|
colorScale: ["#ffffff", "#f0f0f0", "#d9d9d9", "#bdbdbd", "#969696", "#737373", "#525252", "#252525", "#000000"],
|
|
37
|
-
labelPosition: "centroid"
|
|
49
|
+
labelPosition: "centroid",
|
|
50
|
+
labelIndicatorInnerOffset: 15,
|
|
51
|
+
labelIndicatorOuterOffset: 5
|
|
38
52
|
};
|
|
39
53
|
|
|
40
|
-
var
|
|
41
|
-
|
|
54
|
+
var datumHasXandY = function (datum) {
|
|
55
|
+
return !_isNil(datum._x) && !_isNil(datum._y);
|
|
56
|
+
}; // eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
42
57
|
|
|
43
|
-
var _super = _createSuper(VictoryPie);
|
|
44
58
|
|
|
45
|
-
|
|
46
|
-
|
|
59
|
+
var VictoryPieBase = /*#__PURE__*/function (_React$Component) {
|
|
60
|
+
_inherits(VictoryPieBase, _React$Component);
|
|
61
|
+
|
|
62
|
+
var _super = _createSuper(VictoryPieBase);
|
|
63
|
+
|
|
64
|
+
function VictoryPieBase() {
|
|
65
|
+
_classCallCheck(this, VictoryPieBase);
|
|
47
66
|
|
|
48
67
|
return _super.apply(this, arguments);
|
|
49
68
|
}
|
|
50
69
|
|
|
51
|
-
_createClass(
|
|
70
|
+
_createClass(VictoryPieBase, [{
|
|
52
71
|
key: "shouldAnimate",
|
|
53
72
|
value: // Overridden in victory-native
|
|
54
73
|
function shouldAnimate() {
|
|
55
74
|
return Boolean(this.props.animate);
|
|
56
75
|
}
|
|
76
|
+
}, {
|
|
77
|
+
key: "renderComponents",
|
|
78
|
+
value: function renderComponents(props) {
|
|
79
|
+
var _this = this;
|
|
80
|
+
|
|
81
|
+
var shouldRenderDatum = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : datumHasXandY;
|
|
82
|
+
var dataComponent = props.dataComponent,
|
|
83
|
+
labelComponent = props.labelComponent,
|
|
84
|
+
groupComponent = props.groupComponent,
|
|
85
|
+
labelIndicator = props.labelIndicator,
|
|
86
|
+
labelPosition = props.labelPosition;
|
|
87
|
+
|
|
88
|
+
if (!groupComponent) {
|
|
89
|
+
throw new Error("VictoryPie expects a groupComponent prop");
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
var showIndicator = labelIndicator && labelPosition === "centroid";
|
|
93
|
+
var children = [];
|
|
94
|
+
|
|
95
|
+
if (dataComponent) {
|
|
96
|
+
var dataComponents = this.dataKeys.reduce(function (validDataComponents, _dataKey, index) {
|
|
97
|
+
var dataProps = _this.getComponentProps(dataComponent, "data", index);
|
|
98
|
+
|
|
99
|
+
if (shouldRenderDatum(dataProps.datum)) {
|
|
100
|
+
validDataComponents.push( /*#__PURE__*/React.cloneElement(dataComponent, dataProps));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return validDataComponents;
|
|
104
|
+
}, []);
|
|
105
|
+
children.push.apply(children, _toConsumableArray(dataComponents));
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (labelComponent) {
|
|
109
|
+
var labelComponents = this.dataKeys.map(function (_dataKey, index) {
|
|
110
|
+
var labelProps = _this.getComponentProps(labelComponent, "labels", index);
|
|
111
|
+
|
|
112
|
+
if (labelProps.text !== undefined && labelProps.text !== null) {
|
|
113
|
+
return /*#__PURE__*/React.cloneElement(labelComponent, labelProps);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return undefined;
|
|
117
|
+
}).filter(function (comp) {
|
|
118
|
+
return comp !== undefined;
|
|
119
|
+
});
|
|
120
|
+
children.push.apply(children, _toConsumableArray(labelComponents));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (showIndicator && labelIndicator) {
|
|
124
|
+
var labelIndicatorComponent = /*#__PURE__*/React.createElement(LineSegment, null);
|
|
125
|
+
|
|
126
|
+
if (typeof labelIndicator === "object") {
|
|
127
|
+
// pass user provided react component
|
|
128
|
+
labelIndicatorComponent = labelIndicator;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
var labelIndicatorComponents = this.dataKeys.map(function (_dataKey, index) {
|
|
132
|
+
var labelIndicatorProps = _this.getComponentProps(labelIndicatorComponent, "labelIndicators", index);
|
|
133
|
+
|
|
134
|
+
return /*#__PURE__*/React.cloneElement(labelIndicatorComponent, labelIndicatorProps);
|
|
135
|
+
});
|
|
136
|
+
children.push.apply(children, _toConsumableArray(labelIndicatorComponents));
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return this.renderContainer(groupComponent, children);
|
|
140
|
+
}
|
|
57
141
|
}, {
|
|
58
142
|
key: "render",
|
|
59
143
|
value: function render() {
|
|
@@ -65,19 +149,19 @@ var VictoryPie = /*#__PURE__*/function (_React$Component) {
|
|
|
65
149
|
return this.animateComponent(props, animationWhitelist);
|
|
66
150
|
}
|
|
67
151
|
|
|
68
|
-
var children = this.
|
|
152
|
+
var children = this.renderComponents(props);
|
|
69
153
|
var component = props.standalone ? this.renderContainer(props.containerComponent, children) : children;
|
|
70
154
|
return UserProps.withSafeUserProps(component, props);
|
|
71
155
|
}
|
|
72
156
|
}]);
|
|
73
157
|
|
|
74
|
-
return
|
|
158
|
+
return VictoryPieBase;
|
|
75
159
|
}(React.Component);
|
|
76
160
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
161
|
+
VictoryPieBase.animationWhitelist = ["data", "endAngle", "height", "innerRadius", "cornerRadius", "padAngle", "padding", "colorScale", "startAngle", "style", "width"];
|
|
162
|
+
VictoryPieBase.displayName = "VictoryPie";
|
|
163
|
+
VictoryPieBase.role = "pie";
|
|
164
|
+
VictoryPieBase.defaultTransitions = {
|
|
81
165
|
onExit: {
|
|
82
166
|
duration: 500,
|
|
83
167
|
before: function () {
|
|
@@ -103,68 +187,7 @@ VictoryPie.defaultTransitions = {
|
|
|
103
187
|
}
|
|
104
188
|
}
|
|
105
189
|
};
|
|
106
|
-
|
|
107
|
-
animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),
|
|
108
|
-
colorScale: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.oneOf(["grayscale", "qualitative", "heatmap", "warm", "cool", "red", "green", "blue"])]),
|
|
109
|
-
containerComponent: PropTypes.element,
|
|
110
|
-
cornerRadius: PropTypes.oneOfType([CustomPropTypes.nonNegative, PropTypes.func]),
|
|
111
|
-
data: PropTypes.array,
|
|
112
|
-
dataComponent: PropTypes.element,
|
|
113
|
-
disableInlineStyes: PropTypes.bool,
|
|
114
|
-
endAngle: PropTypes.number,
|
|
115
|
-
eventKey: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),
|
|
116
|
-
events: PropTypes.arrayOf(PropTypes.shape({
|
|
117
|
-
target: PropTypes.oneOf(["data", "labels", "parent"]),
|
|
118
|
-
eventKey: PropTypes.oneOfType([PropTypes.array, PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),
|
|
119
|
-
eventHandlers: PropTypes.object
|
|
120
|
-
})),
|
|
121
|
-
externalEventMutations: PropTypes.arrayOf(PropTypes.shape({
|
|
122
|
-
callback: PropTypes.func,
|
|
123
|
-
childName: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
|
|
124
|
-
eventKey: PropTypes.oneOfType([PropTypes.array, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string]),
|
|
125
|
-
mutation: PropTypes.func,
|
|
126
|
-
target: PropTypes.oneOfType([PropTypes.string, PropTypes.array])
|
|
127
|
-
})),
|
|
128
|
-
groupComponent: PropTypes.element,
|
|
129
|
-
height: CustomPropTypes.nonNegative,
|
|
130
|
-
innerRadius: PropTypes.oneOfType([CustomPropTypes.nonNegative, PropTypes.func]),
|
|
131
|
-
labelComponent: PropTypes.element,
|
|
132
|
-
labelPlacement: PropTypes.oneOfType([PropTypes.func, PropTypes.oneOf(["parallel", "perpendicular", "vertical"])]),
|
|
133
|
-
labelPosition: PropTypes.oneOfType([PropTypes.func, PropTypes.oneOf(["startAngle", "centroid", "endAngle"])]),
|
|
134
|
-
labelRadius: PropTypes.oneOfType([CustomPropTypes.nonNegative, PropTypes.func]),
|
|
135
|
-
labels: PropTypes.oneOfType([PropTypes.func, PropTypes.array]),
|
|
136
|
-
name: PropTypes.string,
|
|
137
|
-
origin: PropTypes.shape({
|
|
138
|
-
x: CustomPropTypes.nonNegative,
|
|
139
|
-
y: CustomPropTypes.nonNegative
|
|
140
|
-
}),
|
|
141
|
-
padAngle: PropTypes.oneOfType([CustomPropTypes.nonNegative, PropTypes.func]),
|
|
142
|
-
padding: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({
|
|
143
|
-
top: PropTypes.number,
|
|
144
|
-
bottom: PropTypes.number,
|
|
145
|
-
left: PropTypes.number,
|
|
146
|
-
right: PropTypes.number
|
|
147
|
-
})]),
|
|
148
|
-
radius: PropTypes.oneOfType([CustomPropTypes.nonNegative, PropTypes.func]),
|
|
149
|
-
sharedEvents: PropTypes.shape({
|
|
150
|
-
events: PropTypes.array,
|
|
151
|
-
getEventState: PropTypes.func
|
|
152
|
-
}),
|
|
153
|
-
sortKey: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
|
|
154
|
-
sortOrder: PropTypes.oneOf(["ascending", "descending"]),
|
|
155
|
-
standalone: PropTypes.bool,
|
|
156
|
-
startAngle: PropTypes.number,
|
|
157
|
-
style: PropTypes.shape({
|
|
158
|
-
parent: PropTypes.object,
|
|
159
|
-
data: PropTypes.object,
|
|
160
|
-
labels: PropTypes.object
|
|
161
|
-
}),
|
|
162
|
-
theme: PropTypes.object,
|
|
163
|
-
width: CustomPropTypes.nonNegative,
|
|
164
|
-
x: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
|
|
165
|
-
y: PropTypes.oneOfType([PropTypes.func, CustomPropTypes.allOfType([CustomPropTypes.integer, CustomPropTypes.nonNegative]), PropTypes.string, PropTypes.arrayOf(PropTypes.string)])
|
|
166
|
-
};
|
|
167
|
-
VictoryPie.defaultProps = {
|
|
190
|
+
VictoryPieBase.defaultProps = {
|
|
168
191
|
data: [{
|
|
169
192
|
x: "A",
|
|
170
193
|
y: 1
|
|
@@ -190,10 +213,10 @@ VictoryPie.defaultProps = {
|
|
|
190
213
|
theme: VictoryTheme.grayscale
|
|
191
214
|
};
|
|
192
215
|
|
|
193
|
-
|
|
216
|
+
VictoryPieBase.getBaseProps = function (props) {
|
|
194
217
|
return getBaseProps(props, fallbackProps);
|
|
195
218
|
};
|
|
196
219
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
export
|
|
220
|
+
VictoryPieBase.getData = Data.getData;
|
|
221
|
+
VictoryPieBase.expectedComponents = ["dataComponent", "labelComponent", "groupComponent", "containerComponent", "labelIndicatorComponent"];
|
|
222
|
+
export var VictoryPie = addEvents(VictoryPieBase);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const getXOffsetMultiplayerByAngle: (angle: any) => number;
|
|
2
|
+
export declare const getYOffsetMultiplayerByAngle: (angle: any) => number;
|
|
3
|
+
export declare const getXOffset: (offset: any, angle: any) => number;
|
|
4
|
+
export declare const getYOffset: (offset: any, angle: any) => number;
|
|
5
|
+
export declare const getAverage: (array: any) => number;
|
|
6
|
+
export declare const getLabelIndicatorPropsForLineSegment: (props: any, calculatedValues: any, labelProps: any) => {
|
|
7
|
+
x1: number;
|
|
8
|
+
y1: number;
|
|
9
|
+
x2: number;
|
|
10
|
+
y2: number;
|
|
11
|
+
index: any;
|
|
12
|
+
};
|
|
13
|
+
export declare const getBaseProps: (initialProps: any, fallbackProps: any) => any;
|
|
14
|
+
//# sourceMappingURL=helper-methods.d.ts.map
|
package/lib/helper-methods.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getBaseProps = void 0;
|
|
6
|
+
exports.getYOffsetMultiplayerByAngle = exports.getYOffset = exports.getXOffsetMultiplayerByAngle = exports.getXOffset = exports.getLabelIndicatorPropsForLineSegment = exports.getBaseProps = exports.getAverage = void 0;
|
|
7
7
|
|
|
8
8
|
var _isNil2 = _interopRequireDefault(require("lodash/isNil"));
|
|
9
9
|
|
|
@@ -72,7 +72,7 @@ var getCalculatedValues = function (props) {
|
|
|
72
72
|
|
|
73
73
|
var styleObject = _victoryCore.Helpers.getDefaultStyles(props, "pie");
|
|
74
74
|
|
|
75
|
-
var style = _victoryCore.Helpers.getStyles(props.style, styleObject
|
|
75
|
+
var style = _victoryCore.Helpers.getStyles(props.style, styleObject);
|
|
76
76
|
|
|
77
77
|
var colors = Array.isArray(colorScale) ? colorScale : _victoryCore.Style.getColorScale(colorScale);
|
|
78
78
|
|
|
@@ -118,10 +118,13 @@ var getLabelText = function (props, datum, index) {
|
|
|
118
118
|
return checkForValidText(text);
|
|
119
119
|
};
|
|
120
120
|
|
|
121
|
-
var getLabelArc = function (
|
|
121
|
+
var getLabelArc = function (labelRadius) {
|
|
122
|
+
return d3Shape.arc().outerRadius(labelRadius).innerRadius(labelRadius);
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
var getCalculatedLabelRadius = function (radius, labelRadius, style) {
|
|
122
126
|
var padding = style && style.padding || 0;
|
|
123
|
-
|
|
124
|
-
return d3Shape.arc().outerRadius(arcRadius).innerRadius(arcRadius);
|
|
127
|
+
return labelRadius || radius + padding;
|
|
125
128
|
};
|
|
126
129
|
|
|
127
130
|
var getLabelPosition = function (arc, slice, position) {
|
|
@@ -226,7 +229,8 @@ var getLabelProps = function (text, dataProps, calculatedValues) {
|
|
|
226
229
|
text: text
|
|
227
230
|
}, dataProps));
|
|
228
231
|
|
|
229
|
-
var
|
|
232
|
+
var calculatedLabelRadius = getCalculatedLabelRadius(defaultRadius, labelRadius, evaluatedStyle);
|
|
233
|
+
var labelArc = getLabelArc(calculatedLabelRadius);
|
|
230
234
|
var position = getLabelPosition(labelArc, slice, labelPosition);
|
|
231
235
|
var baseAngle = getBaseLabelAngle(slice, labelPosition, labelStyle);
|
|
232
236
|
var labelAngle = getLabelAngle(baseAngle, labelPlacement);
|
|
@@ -247,7 +251,8 @@ var getLabelProps = function (text, dataProps, calculatedValues) {
|
|
|
247
251
|
y: Math.round(position[1]) + origin.y,
|
|
248
252
|
textAnchor: textAnchor,
|
|
249
253
|
verticalAnchor: verticalAnchor,
|
|
250
|
-
angle: labelAngle
|
|
254
|
+
angle: labelAngle,
|
|
255
|
+
calculatedLabelRadius: calculatedLabelRadius
|
|
251
256
|
};
|
|
252
257
|
|
|
253
258
|
if (!_victoryCore.Helpers.isTooltip(labelComponent)) {
|
|
@@ -258,8 +263,76 @@ var getLabelProps = function (text, dataProps, calculatedValues) {
|
|
|
258
263
|
return (0, _defaults2.default)({}, labelProps, _victoryCore.Helpers.omit(tooltipTheme, ["style"]));
|
|
259
264
|
};
|
|
260
265
|
|
|
261
|
-
var
|
|
262
|
-
|
|
266
|
+
var getXOffsetMultiplayerByAngle = function (angle) {
|
|
267
|
+
return Math.cos(angle - _victoryCore.Helpers.degreesToRadians(90));
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
exports.getXOffsetMultiplayerByAngle = getXOffsetMultiplayerByAngle;
|
|
271
|
+
|
|
272
|
+
var getYOffsetMultiplayerByAngle = function (angle) {
|
|
273
|
+
return Math.sin(angle - _victoryCore.Helpers.degreesToRadians(90));
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
exports.getYOffsetMultiplayerByAngle = getYOffsetMultiplayerByAngle;
|
|
277
|
+
|
|
278
|
+
var getXOffset = function (offset, angle) {
|
|
279
|
+
return offset * getXOffsetMultiplayerByAngle(angle);
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
exports.getXOffset = getXOffset;
|
|
283
|
+
|
|
284
|
+
var getYOffset = function (offset, angle) {
|
|
285
|
+
return offset * getYOffsetMultiplayerByAngle(angle);
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
exports.getYOffset = getYOffset;
|
|
289
|
+
|
|
290
|
+
var getAverage = function (array) {
|
|
291
|
+
return array.reduce(function (acc, cur) {
|
|
292
|
+
return acc + cur;
|
|
293
|
+
}, 0) / array.length;
|
|
294
|
+
};
|
|
295
|
+
|
|
296
|
+
exports.getAverage = getAverage;
|
|
297
|
+
|
|
298
|
+
var getLabelIndicatorPropsForLineSegment = function (props, calculatedValues, labelProps) {
|
|
299
|
+
var innerRadius = props.innerRadius,
|
|
300
|
+
radius = props.radius,
|
|
301
|
+
_props$slice = props.slice,
|
|
302
|
+
startAngle = _props$slice.startAngle,
|
|
303
|
+
endAngle = _props$slice.endAngle,
|
|
304
|
+
labelIndicatorInnerOffset = props.labelIndicatorInnerOffset,
|
|
305
|
+
labelIndicatorOuterOffset = props.labelIndicatorOuterOffset,
|
|
306
|
+
index = props.index;
|
|
307
|
+
var height = calculatedValues.height,
|
|
308
|
+
width = calculatedValues.width;
|
|
309
|
+
var calculatedLabelRadius = labelProps.calculatedLabelRadius; // calculation
|
|
310
|
+
|
|
311
|
+
var middleRadius = getAverage([innerRadius, radius]);
|
|
312
|
+
var midAngle = getAverage([endAngle, startAngle]);
|
|
313
|
+
var centerX = width / 2;
|
|
314
|
+
var centerY = height / 2;
|
|
315
|
+
var innerOffset = middleRadius + labelIndicatorInnerOffset;
|
|
316
|
+
var outerOffset = calculatedLabelRadius - labelIndicatorOuterOffset;
|
|
317
|
+
var x1 = centerX + getXOffset(innerOffset, midAngle);
|
|
318
|
+
var y1 = centerY + getYOffset(innerOffset, midAngle);
|
|
319
|
+
var x2 = centerX + getXOffset(outerOffset, midAngle);
|
|
320
|
+
var y2 = centerY + getYOffset(outerOffset, midAngle);
|
|
321
|
+
var labelIndicatorProps = {
|
|
322
|
+
x1: x1,
|
|
323
|
+
y1: y1,
|
|
324
|
+
x2: x2,
|
|
325
|
+
y2: y2,
|
|
326
|
+
index: index
|
|
327
|
+
};
|
|
328
|
+
return (0, _defaults2.default)({}, labelIndicatorProps);
|
|
329
|
+
};
|
|
330
|
+
|
|
331
|
+
exports.getLabelIndicatorPropsForLineSegment = getLabelIndicatorPropsForLineSegment;
|
|
332
|
+
|
|
333
|
+
var getBaseProps = function (initialProps, fallbackProps) {
|
|
334
|
+
var props = _victoryCore.Helpers.modifyProps(initialProps, fallbackProps, "pie");
|
|
335
|
+
|
|
263
336
|
var calculatedValues = getCalculatedValues(props);
|
|
264
337
|
var slices = calculatedValues.slices,
|
|
265
338
|
style = calculatedValues.style,
|
|
@@ -276,7 +349,8 @@ var getBaseProps = function (props, fallbackProps) {
|
|
|
276
349
|
innerRadius = calculatedValues.innerRadius,
|
|
277
350
|
cornerRadius = calculatedValues.cornerRadius,
|
|
278
351
|
padAngle = calculatedValues.padAngle,
|
|
279
|
-
disableInlineStyles = calculatedValues.disableInlineStyles
|
|
352
|
+
disableInlineStyles = calculatedValues.disableInlineStyles,
|
|
353
|
+
labelIndicator = calculatedValues.labelIndicator;
|
|
280
354
|
var radius = props.radius || defaultRadius;
|
|
281
355
|
var initialChildProps = {
|
|
282
356
|
parent: {
|
|
@@ -317,6 +391,14 @@ var getBaseProps = function (props, fallbackProps) {
|
|
|
317
391
|
var evaluatedText = _victoryCore.Helpers.evaluateProp(text, dataProps);
|
|
318
392
|
|
|
319
393
|
childProps[eventKey].labels = getLabelProps(evaluatedText, (0, _assign2.default)({}, props, dataProps), calculatedValues);
|
|
394
|
+
|
|
395
|
+
if (labelIndicator) {
|
|
396
|
+
var labelProps = childProps[eventKey].labels;
|
|
397
|
+
|
|
398
|
+
if (labelProps.calculatedLabelRadius > radius) {
|
|
399
|
+
childProps[eventKey].labelIndicators = getLabelIndicatorPropsForLineSegment((0, _assign2.default)({}, props, dataProps), calculatedValues, labelProps);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
320
402
|
}
|
|
321
403
|
|
|
322
404
|
return childProps;
|
package/lib/index.d.ts
CHANGED
|
@@ -1,83 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
ColorScalePropType,
|
|
5
|
-
DataGetterPropType,
|
|
6
|
-
EventPropTypeInterface,
|
|
7
|
-
StringOrCallback,
|
|
8
|
-
NumberOrCallback,
|
|
9
|
-
OriginType,
|
|
10
|
-
SliceNumberOrCallback,
|
|
11
|
-
StringOrNumberOrCallback,
|
|
12
|
-
VictoryCommonProps,
|
|
13
|
-
VictoryLabelableProps,
|
|
14
|
-
VictoryMultiLabelableProps,
|
|
15
|
-
VictoryStyleInterface,
|
|
16
|
-
} from "victory-core";
|
|
17
|
-
|
|
18
|
-
export type VictorySliceLabelPositionType =
|
|
19
|
-
| "startAngle"
|
|
20
|
-
| "centroid"
|
|
21
|
-
| "endAngle";
|
|
22
|
-
export type VictorySliceLabelPlacementType =
|
|
23
|
-
| "vertical"
|
|
24
|
-
| "parallel"
|
|
25
|
-
| "perpendicular";
|
|
26
|
-
export type VictorySliceTTargetType = "data" | "labels" | "parent";
|
|
27
|
-
|
|
28
|
-
export interface SliceProps extends VictoryCommonProps {
|
|
29
|
-
ariaLabel?: StringOrCallback;
|
|
30
|
-
cornerRadius?: SliceNumberOrCallback<SliceProps, "cornerRadius">;
|
|
31
|
-
datum?: any;
|
|
32
|
-
innerRadius?: NumberOrCallback;
|
|
33
|
-
padAngle?: SliceNumberOrCallback<SliceProps, "padAngle">;
|
|
34
|
-
pathComponent?: React.ReactElement;
|
|
35
|
-
pathFunction?: (props: SliceProps) => string;
|
|
36
|
-
radius?: SliceNumberOrCallback<SliceProps, "radius">;
|
|
37
|
-
slice?: {
|
|
38
|
-
startAngle?: number;
|
|
39
|
-
endAngle?: number;
|
|
40
|
-
padAngle?: number;
|
|
41
|
-
data?: any[];
|
|
42
|
-
};
|
|
43
|
-
sliceEndAngle?: SliceNumberOrCallback<SliceProps, "sliceEndAngle">;
|
|
44
|
-
sliceStartAngle?: SliceNumberOrCallback<SliceProps, "sliceStartAngle">;
|
|
45
|
-
style?: VictoryStyleInterface;
|
|
46
|
-
tabIndex?: NumberOrCallback;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export class Slice extends React.Component<SliceProps, any> {}
|
|
50
|
-
|
|
51
|
-
export interface VictoryPieProps
|
|
52
|
-
extends Omit<VictoryCommonProps, "polar">,
|
|
53
|
-
VictoryLabelableProps,
|
|
54
|
-
VictoryMultiLabelableProps {
|
|
55
|
-
categories?: CategoryPropType;
|
|
56
|
-
colorScale?: ColorScalePropType;
|
|
57
|
-
cornerRadius?: SliceNumberOrCallback<SliceProps, "cornerRadius">;
|
|
58
|
-
data?: any[];
|
|
59
|
-
dataComponent?: React.ReactElement;
|
|
60
|
-
endAngle?: number;
|
|
61
|
-
events?: EventPropTypeInterface<
|
|
62
|
-
VictorySliceTTargetType,
|
|
63
|
-
StringOrNumberOrCallback | string[] | number[]
|
|
64
|
-
>[];
|
|
65
|
-
eventKey?: StringOrNumberOrCallback;
|
|
66
|
-
innerRadius?: NumberOrCallback;
|
|
67
|
-
labelPlacement?:
|
|
68
|
-
| VictorySliceLabelPlacementType
|
|
69
|
-
| ((props: SliceProps) => VictorySliceLabelPlacementType);
|
|
70
|
-
labelPosition?:
|
|
71
|
-
| VictorySliceLabelPositionType
|
|
72
|
-
| ((props: SliceProps) => VictorySliceLabelPositionType);
|
|
73
|
-
labelRadius?: number | ((props: SliceProps) => number);
|
|
74
|
-
origin?: OriginType;
|
|
75
|
-
padAngle?: NumberOrCallback;
|
|
76
|
-
radius?: NumberOrCallback;
|
|
77
|
-
startAngle?: number;
|
|
78
|
-
style?: VictoryStyleInterface;
|
|
79
|
-
x?: DataGetterPropType;
|
|
80
|
-
y?: DataGetterPropType;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
export class VictoryPie extends React.Component<VictoryPieProps, any> {}
|
|
1
|
+
export * from "./victory-pie";
|
|
2
|
+
export * from "./slice";
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.js
CHANGED
|
@@ -3,21 +3,29 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
Object.defineProperty(exports, "Slice", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function () {
|
|
9
|
-
return _slice.default;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
Object.defineProperty(exports, "VictoryPie", {
|
|
13
|
-
enumerable: true,
|
|
14
|
-
get: function () {
|
|
15
|
-
return _victoryPie.default;
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
6
|
|
|
19
|
-
var _victoryPie =
|
|
7
|
+
var _victoryPie = require("./victory-pie");
|
|
8
|
+
|
|
9
|
+
Object.keys(_victoryPie).forEach(function (key) {
|
|
10
|
+
if (key === "default" || key === "__esModule") return;
|
|
11
|
+
if (key in exports && exports[key] === _victoryPie[key]) return;
|
|
12
|
+
Object.defineProperty(exports, key, {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _victoryPie[key];
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
});
|
|
20
19
|
|
|
21
|
-
var _slice =
|
|
20
|
+
var _slice = require("./slice");
|
|
22
21
|
|
|
23
|
-
function
|
|
22
|
+
Object.keys(_slice).forEach(function (key) {
|
|
23
|
+
if (key === "default" || key === "__esModule") return;
|
|
24
|
+
if (key in exports && exports[key] === _slice[key]) return;
|
|
25
|
+
Object.defineProperty(exports, key, {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function () {
|
|
28
|
+
return _slice[key];
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
});
|
package/lib/slice.d.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
import { NumberOrCallback, SliceNumberOrCallback, StringOrCallback, VictoryCommonProps, VictoryStyleInterface } from "victory-core";
|
|
4
|
+
export declare type VictorySliceLabelPositionType = "startAngle" | "centroid" | "endAngle";
|
|
5
|
+
export declare type VictorySliceLabelPlacementType = "vertical" | "parallel" | "perpendicular";
|
|
6
|
+
export declare type VictorySliceTTargetType = "data" | "labels" | "parent";
|
|
7
|
+
export interface SliceProps extends VictoryCommonProps {
|
|
8
|
+
ariaLabel?: StringOrCallback;
|
|
9
|
+
cornerRadius?: SliceNumberOrCallback<SliceProps, "cornerRadius">;
|
|
10
|
+
datum?: any;
|
|
11
|
+
innerRadius?: NumberOrCallback;
|
|
12
|
+
padAngle?: SliceNumberOrCallback<SliceProps, "padAngle">;
|
|
13
|
+
pathComponent?: React.ReactElement;
|
|
14
|
+
pathFunction?: (props: SliceProps) => string;
|
|
15
|
+
radius?: SliceNumberOrCallback<SliceProps, "radius">;
|
|
16
|
+
slice?: {
|
|
17
|
+
startAngle?: number;
|
|
18
|
+
endAngle?: number;
|
|
19
|
+
padAngle?: number;
|
|
20
|
+
data?: any[];
|
|
21
|
+
};
|
|
22
|
+
sliceEndAngle?: SliceNumberOrCallback<SliceProps, "sliceEndAngle">;
|
|
23
|
+
sliceStartAngle?: SliceNumberOrCallback<SliceProps, "sliceStartAngle">;
|
|
24
|
+
style?: VictoryStyleInterface;
|
|
25
|
+
tabIndex?: NumberOrCallback;
|
|
26
|
+
role?: string;
|
|
27
|
+
shapeRendering?: string;
|
|
28
|
+
}
|
|
29
|
+
export declare const Slice: {
|
|
30
|
+
(initialProps: SliceProps): React.DetailedReactHTMLElement<any, HTMLElement>;
|
|
31
|
+
propTypes: {
|
|
32
|
+
cornerRadius: PropTypes.Requireable<number | ((...args: any[]) => any)>;
|
|
33
|
+
datum: PropTypes.Requireable<object>;
|
|
34
|
+
innerRadius: PropTypes.Requireable<number | ((...args: any[]) => any)>;
|
|
35
|
+
padAngle: PropTypes.Requireable<number | ((...args: any[]) => any)>;
|
|
36
|
+
pathComponent: PropTypes.Requireable<PropTypes.ReactElementLike>;
|
|
37
|
+
pathFunction: PropTypes.Requireable<(...args: any[]) => any>;
|
|
38
|
+
radius: PropTypes.Requireable<number | ((...args: any[]) => any)>;
|
|
39
|
+
slice: PropTypes.Requireable<object>;
|
|
40
|
+
sliceEndAngle: PropTypes.Requireable<number | ((...args: any[]) => any)>;
|
|
41
|
+
sliceStartAngle: PropTypes.Requireable<number | ((...args: any[]) => any)>;
|
|
42
|
+
active?: React.Validator<boolean | null | undefined> | undefined;
|
|
43
|
+
ariaLabel?: React.Validator<StringOrCallback | null | undefined> | undefined;
|
|
44
|
+
className?: React.Validator<string | null | undefined> | undefined;
|
|
45
|
+
clipPath?: React.Validator<string | null | undefined> | undefined;
|
|
46
|
+
data?: React.Validator<any> | undefined;
|
|
47
|
+
desc?: React.Validator<string | Function | null | undefined> | undefined;
|
|
48
|
+
disableInlineStyles?: React.Validator<boolean | null | undefined> | undefined;
|
|
49
|
+
events?: React.Validator<object | null | undefined> | undefined;
|
|
50
|
+
id?: React.Validator<string | number | Function | null | undefined> | undefined;
|
|
51
|
+
index?: React.Validator<string | number | null | undefined> | undefined;
|
|
52
|
+
origin?: React.Validator<import("victory-core").OriginType | null | undefined> | undefined;
|
|
53
|
+
polar?: React.Validator<boolean | null | undefined> | undefined;
|
|
54
|
+
role?: React.Validator<string | null | undefined> | undefined;
|
|
55
|
+
scale?: React.Validator<any> | undefined;
|
|
56
|
+
shapeRendering?: React.Validator<string | null | undefined> | undefined;
|
|
57
|
+
style?: React.Validator<any> | undefined;
|
|
58
|
+
tabIndex?: React.Validator<NumberOrCallback | null | undefined> | undefined;
|
|
59
|
+
transform?: React.Validator<string | null | undefined> | undefined;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=slice.d.ts.map
|
package/lib/slice.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.Slice = void 0;
|
|
7
7
|
|
|
8
8
|
var _assign2 = _interopRequireDefault(require("lodash/assign"));
|
|
9
9
|
|
|
@@ -116,8 +116,8 @@ var defaultProps = {
|
|
|
116
116
|
shapeRendering: "auto"
|
|
117
117
|
};
|
|
118
118
|
|
|
119
|
-
var Slice = function (
|
|
120
|
-
props = evaluateProps(_objectSpread(_objectSpread({}, defaultProps),
|
|
119
|
+
var Slice = function (initialProps) {
|
|
120
|
+
var props = evaluateProps(_objectSpread(_objectSpread({}, defaultProps), initialProps));
|
|
121
121
|
var defaultTransform = props.origin ? "translate(".concat(props.origin.x, ", ").concat(props.origin.y, ")") : undefined;
|
|
122
122
|
return /*#__PURE__*/_react.default.cloneElement(props.pathComponent, _objectSpread(_objectSpread({}, props.events), {}, {
|
|
123
123
|
"aria-label": props.ariaLabel,
|
|
@@ -132,6 +132,7 @@ var Slice = function (props) {
|
|
|
132
132
|
}));
|
|
133
133
|
};
|
|
134
134
|
|
|
135
|
+
exports.Slice = Slice;
|
|
135
136
|
Slice.propTypes = _objectSpread(_objectSpread({}, _victoryCore.CommonProps.primitiveProps), {}, {
|
|
136
137
|
cornerRadius: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.func]),
|
|
137
138
|
datum: _propTypes.default.object,
|
|
@@ -143,6 +144,4 @@ Slice.propTypes = _objectSpread(_objectSpread({}, _victoryCore.CommonProps.primi
|
|
|
143
144
|
slice: _propTypes.default.object,
|
|
144
145
|
sliceEndAngle: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.func]),
|
|
145
146
|
sliceStartAngle: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.func])
|
|
146
|
-
});
|
|
147
|
-
var _default = Slice;
|
|
148
|
-
exports.default = _default;
|
|
147
|
+
});
|