@semcore/chart
Version:
Semrush Chart Component
94 lines (93 loc) • 3.85 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _recharts = require("recharts");
var _generateCategoricalChart = _interopRequireDefault(require("recharts/lib/chart/generateCategoricalChart"));
var _PolarUtils = require("recharts/lib/util/PolarUtils");
var _ReactUtils = require("recharts/lib/util/ReactUtils");
var _Tooltip = require("../../Tooltip");
var generateCategoricalChart = function generateCategoricalChart(params) {
var ReactComponent = (0, _generateCategoricalChart["default"])(params);
ReactComponent.prototype.renderTooltip = function () {
var children = this.props.children;
var tooltipItem = (0, _ReactUtils.findChildByType)(children, _Tooltip.Tooltip);
var displayedData = this.constructor.getDisplayedData(this.props, this.state);
if (!tooltipItem) {
return null;
}
var _this$state = this.state,
isTooltipActive = _this$state.isTooltipActive,
activeCoordinate = _this$state.activeCoordinate,
activePayload = _this$state.activePayload,
offset = _this$state.offset;
var payload = [];
if (isTooltipActive) {
var dataKey = activePayload[0].dataKey;
var commonValue = displayedData.reduce(function (acc, item) {
acc += item[dataKey];
return acc;
}, 0);
payload = activePayload.map(function (item) {
return (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, Object.keys(item).reduce(function (acc, name) {
if (name === 'payload') {
return (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, acc), item[name]);
}
return (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, acc), {}, (0, _defineProperty2["default"])({}, name, item[name]));
}, {})), {}, {
percent: item[item.dataKey] / commonValue * 100
});
});
}
return /*#__PURE__*/_react["default"].cloneElement(tooltipItem, {
viewBox: (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, offset), {}, {
x: offset.left,
y: offset.top
}),
active: isTooltipActive,
payload: payload,
coordinate: activeCoordinate
});
};
return ReactComponent;
};
var _default = generateCategoricalChart({
chartName: 'PieChart',
GraphicalChild: _recharts.Pie,
eventType: 'item',
legendContent: 'children',
axisComponents: [{
axisType: 'angleAxis',
AxisComp: _recharts.PolarAngleAxis
}, {
axisType: 'radiusAxis',
AxisComp: _recharts.PolarRadiusAxis
}],
formatAxisMap: _PolarUtils.formatAxisMap,
defaultProps: {
layout: 'centric',
startAngle: 0,
endAngle: 360,
cx: '50%',
cy: '50%',
innerRadius: 0,
outerRadius: '80%'
},
propTypes: {
layout: _propTypes["default"].oneOf(['centric']),
startAngle: _propTypes["default"].number,
endAngle: _propTypes["default"].number,
cx: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]),
cy: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]),
innerRadius: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]),
outerRadius: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string])
}
});
exports["default"] = _default;
//# sourceMappingURL=PieChart.js.map