@data-ui/radial-chart
Version:
A package for radial-axis visualizations https://williaster.github.io/data-ui
1 lines • 1.62 kB
JavaScript
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)}import{Group}from"@vx/group";import PropTypes from"prop-types";import React from"react";import{WithTooltip,withTooltipPropTypes}from"@data-ui/shared";export var propTypes=_extends({},withTooltipPropTypes,{ariaLabel:PropTypes.string.isRequired,children:PropTypes.node.isRequired,width:PropTypes.number.isRequired,height:PropTypes.number.isRequired,margin:PropTypes.shape({top:PropTypes.number,right:PropTypes.number,bottom:PropTypes.number,left:PropTypes.number}),renderTooltip:PropTypes.func});var defaultProps={margin:{top:10,left:10,right:10,bottom:10},renderTooltip:null},MIN_SIZE=10;export default function RadialChart(a){var b=a.renderTooltip;if(b)return React.createElement(WithTooltip,{renderTooltip:b},React.createElement(RadialChart,_extends({},a,{renderTooltip:null})));var c=a.ariaLabel,d=a.children,e=a.width,f=a.height,g=a.margin,h=a.onMouseMove,i=a.onMouseLeave,j=_extends({},defaultProps.margin,g),k=e-j.left-j.right,l=f-j.top-j.bottom,m=Math.min(k,l)/2;return k<MIN_SIZE||l<MIN_SIZE?null:React.createElement("svg",{"aria-label":c,role:"img",width:e,height:f},React.createElement(Group,{top:f/2-j.top,left:e/2+g.left},React.Children.map(d,function(a){return React.cloneElement(a,{onMouseMove:a.props.onMouseMove||h,onMouseLeave:a.props.onMouseLeave||i,radius:m})})))}RadialChart.propTypes=propTypes,RadialChart.defaultProps=defaultProps,RadialChart.displayName="RadialChart";