@data-ui/radial-chart
Version:
A package for radial-axis visualizations https://williaster.github.io/data-ui
7 lines • 4.48 kB
JavaScript
"use strict";exports.__esModule=!0,exports.default=ArcSeries;var _shape=require("@vx/shape"),_react=_interopRequireDefault(require("react")),_propTypes=_interopRequireDefault(require("prop-types")),_ArcLabel=_interopRequireDefault(require("../label/ArcLabel")),_callOrValue=_interopRequireDefault(require("../util/callOrValue")),_fillScaleFactory=require("../util/fillScaleFactory");function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function _extends(){return _extends=Object.assign||function(a){for(var b,c=1;c<arguments.length;c++)for(var d in b=arguments[c],b)Object.prototype.hasOwnProperty.call(b,d)&&(a[d]=b[d]);return a},_extends.apply(this,arguments)}function _objectWithoutPropertiesLoose(a,b){if(null==a)return{};var c,d,e={},f=Object.keys(a);for(d=0;d<f.length;d++)c=f[d],0<=b.indexOf(c)||(e[c]=a[c]);return e}var grayScale=(0,_fillScaleFactory.singleHueScaleFactory)(),propTypes={data:_propTypes.default.arrayOf(_propTypes.default.shape({label:_propTypes.default.string})).isRequired,pieValue:_propTypes.default.func.isRequired,// (d) => pie value
pieSort:_propTypes.default.func,radius:_propTypes.default.number,// likely passed by parent
innerRadius:_propTypes.default.oneOfType([_propTypes.default.func,_propTypes.default.number]),// (radius) => num
outerRadius:_propTypes.default.oneOfType([_propTypes.default.func,_propTypes.default.number]),// (radius) => num
labelRadius:_propTypes.default.oneOfType([_propTypes.default.func,_propTypes.default.number]),// (radius) => num
labelComponent:_propTypes.default.oneOfType([_propTypes.default.func,_propTypes.default.element]),label:_propTypes.default.func,// (arc) => node
stroke:_propTypes.default.oneOfType([_propTypes.default.func,_propTypes.default.string]),strokeWidth:_propTypes.default.oneOfType([_propTypes.default.func,_propTypes.default.number]),fill:_propTypes.default.oneOfType([_propTypes.default.func,_propTypes.default.string]),fillOpacity:_propTypes.default.oneOfType([_propTypes.default.func,_propTypes.default.number]),padAngle:_propTypes.default.oneOfType([_propTypes.default.func,_propTypes.default.number]),padRadius:_propTypes.default.oneOfType([_propTypes.default.func,_propTypes.default.number]),cornerRadius:_propTypes.default.oneOfType([_propTypes.default.func,_propTypes.default.number]),onMouseMove:_propTypes.default.func,onMouseLeave:_propTypes.default.func},INNER_RADIUS_FRACTION=.5,OUTER_RADIUS_FRACTION=.9,LABEL_RADIUS_FRACTION=.75,MIN_ANGLE_FOR_LABEL=.1,defaultProps={radius:300,pieSort:null,innerRadius:function b(a){return a*INNER_RADIUS_FRACTION},outerRadius:function b(a){return a*OUTER_RADIUS_FRACTION},labelRadius:function b(a){return a*LABEL_RADIUS_FRACTION},cornerRadius:3,fill:function b(a){return a.data&&a.data.label?grayScale(a.data.label):"#dddddd"},fillOpacity:1,stroke:"#ffffff",strokeWidth:1,labelComponent:_react.default.createElement(_ArcLabel.default,null),label:null,padAngle:null,padRadius:null,onMouseMove:null,onMouseLeave:null};function ArcSeries(a){var b=a.data,c=a.radius,d=a.pieValue,e=a.pieSort,f=a.innerRadius,g=a.outerRadius,h=a.labelRadius,i=a.fill,j=a.fillOpacity,k=a.cornerRadius,l=a.padAngle,m=a.padRadius,n=a.stroke,o=a.strokeWidth,p=a.label,q=a.labelComponent,r=a.onMouseMove,s=a.onMouseLeave,t=_objectWithoutPropertiesLoose(a,["data","radius","pieValue","pieSort","innerRadius","outerRadius","labelRadius","fill","fillOpacity","cornerRadius","padAngle","padRadius","stroke","strokeWidth","label","labelComponent","onMouseMove","onMouseLeave"]);return _react.default.createElement("g",null,_react.default.createElement(_shape.Arc,_extends({data:b,pieValue:d,pieSort:e,outerRadius:(0,_callOrValue.default)(g,c),innerRadius:(0,_callOrValue.default)(f,c),fill:i,fillOpacity:j,stroke:n,strokeWidth:o,cornerRadius:k,padAngle:l,padRadius:m,onMouseMove:s&&function(a){return function(c){var d=Math.abs(a.startAngle-a.endAngle)/(2*Math.PI);r({event:c,data:b,datum:a.data,fraction:d})}},onMouseLeave:s&&function(){return function(){s()}}},t,{centroid:null})),p&&q&&_react.default.createElement(_shape.Arc,{data:b,pieValue:d,pieSort:e,outerRadius:(0,_callOrValue.default)(h,c),innerRadius:(0,_callOrValue.default)(h,c),fill:"none",fillOpacity:0,stroke:"none",strokeWidth:0,centroid:function f(a,b){var c=a[0],d=a[1],e=p(b);return b.endAngle-b.startAngle<MIN_ANGLE_FOR_LABEL||!e?null:_react.default.cloneElement(q,{x:c,y:d,arc:b},e)}}))}ArcSeries.propTypes=propTypes,ArcSeries.defaultProps=defaultProps,ArcSeries.displayName="ArcSeries";