@nivo/arcs
Version:
3 lines (2 loc) • 15.2 kB
JavaScript
;var e=require("@react-spring/web"),n=require("@nivo/theming"),t=require("@nivo/text"),r=require("react/jsx-runtime"),o=require("react"),i=require("@nivo/core"),a=require("@nivo/colors"),u=require("d3-shape");function s(){return s=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)({}).hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},s.apply(null,arguments)}var l={pointerEvents:"none"},d=function(o){var i=o.label,a=o.style,u=n.useTheme();return r.jsx(e.animated.g,{transform:a.transform,opacity:a.progress,style:l,children:r.jsx(t.Text,{textAnchor:"middle",dominantBaseline:"central",style:s({},u.labels.text,{fill:a.textColor}),children:i})})},c=function(e){var n=e%(2*Math.PI);return n<0&&(n+=2*Math.PI),n},f=function(e,n){return e.filter((function(e){return Math.abs(i.radiansToDegrees(e.arc.endAngle-e.arc.startAngle))>=n}))},g=function(e,n,t,r,o){return["A",e,e,0,n,t,r,o].join(" ")},p={startAngle:{enter:function(e){return s({},e,{endAngle:e.startAngle})},update:function(e){return e},leave:function(e){return s({},e,{startAngle:e.endAngle})}},middleAngle:{enter:function(e){var n=e.startAngle+(e.endAngle-e.startAngle)/2;return s({},e,{startAngle:n,endAngle:n})},update:function(e){return e},leave:function(e){var n=e.startAngle+(e.endAngle-e.startAngle)/2;return s({},e,{startAngle:n,endAngle:n})}},endAngle:{enter:function(e){return s({},e,{startAngle:e.endAngle})},update:function(e){return e},leave:function(e){return s({},e,{endAngle:e.startAngle})}},innerRadius:{enter:function(e){return s({},e,{outerRadius:e.innerRadius})},update:function(e){return e},leave:function(e){return s({},e,{innerRadius:e.outerRadius})}},centerRadius:{enter:function(e){var n=e.innerRadius+(e.outerRadius-e.innerRadius)/2;return s({},e,{innerRadius:n,outerRadius:n})},update:function(e){return e},leave:function(e){var n=e.innerRadius+(e.outerRadius-e.innerRadius)/2;return s({},e,{innerRadius:n,outerRadius:n})}},outerRadius:{enter:function(e){return s({},e,{innerRadius:e.outerRadius})},update:function(e){return e},leave:function(e){return s({},e,{outerRadius:e.innerRadius})}},pushIn:{enter:function(e){return s({},e,{innerRadius:e.innerRadius-e.outerRadius+e.innerRadius,outerRadius:e.innerRadius})},update:function(e){return e},leave:function(e){return s({},e,{innerRadius:e.outerRadius,outerRadius:e.outerRadius+e.outerRadius-e.innerRadius})}},pushOut:{enter:function(e){return s({},e,{innerRadius:e.outerRadius,outerRadius:e.outerRadius+e.outerRadius-e.innerRadius})},update:function(e){return e},leave:function(e){return s({},e,{innerRadius:e.innerRadius-e.outerRadius+e.innerRadius,outerRadius:e.innerRadius})}}},A=function(e,n){return o.useMemo((function(){var t=p[e];return{enter:function(e){return s({progress:0},t.enter(e.arc),n?n.enter(e):{})},update:function(e){return s({progress:1},t.update(e.arc),n?n.update(e):{})},leave:function(e){return s({progress:0},t.leave(e.arc),n?n.leave(e):{})}}}),[e,n])},x=function(e,n){var t=i.midAngle(e)-Math.PI/2,r=e.innerRadius+(e.outerRadius-e.innerRadius)*n;return i.positionFromAngle(t,r)},h=function(n){return function(t,r,o,i){return e.to([t,r,o,i],(function(e,t,r,o){var i=x({startAngle:e,endAngle:t,innerRadius:r,outerRadius:o},n);return"translate("+i.x+","+i.y+")"}))}},v=function(n,t,r,o){void 0===t&&(t=.5),void 0===r&&(r="innerRadius");var a=i.useMotionConfig(),u=a.animate,s=a.config,l=A(r,o);return{transition:e.useTransition(n,{keys:function(e){return e.id},initial:l.update,from:l.enter,enter:l.update,update:l.update,leave:l.leave,config:s,immediate:!u}),interpolate:h(t)}},R=function(e){var n=e.data,t=e.offset,r=void 0===t?.5:t,i=e.skipAngle,a=void 0===i?0:i,u=e.computeExtraProps,l=void 0===u?function(){return{}}:u;return o.useMemo((function(){return f(n,a).map((function(e){var n=x(e.arc,r);return s({},l(e),{x:n.x,y:n.y,data:e})}))}),[n,r,a,l])},m=d,C=function(o){var i=o.label,a=o.style,u=n.useTheme();return r.jsxs(e.animated.g,{opacity:a.opacity,children:[r.jsx(e.animated.path,{fill:"none",stroke:a.linkColor,strokeWidth:a.thickness,d:a.path}),r.jsx(t.Text,{transform:a.textPosition,textAnchor:a.textAnchor,dominantBaseline:"central",style:s({},u.labels.text,{fill:a.textColor}),children:i})]})},y=function(e){var n=c(e.startAngle+(e.endAngle-e.startAngle)/2-Math.PI/2);return n<Math.PI/2||n>1.5*Math.PI?"start":"end"},M=function(e,n,t,r){var o,a,u=c(e.startAngle+(e.endAngle-e.startAngle)/2-Math.PI/2),s=i.positionFromAngle(u,e.outerRadius+n),l=i.positionFromAngle(u,e.outerRadius+n+t);return u<Math.PI/2||u>1.5*Math.PI?(o="after",a={x:l.x+r,y:l.y}):(o="before",a={x:l.x-r,y:l.y}),{side:o,points:[s,l,a]}},k=u.line().x((function(e){return e.x})).y((function(e){return e.y})),L=function(n,t,r,o,i,a,u){return e.to([n,t,r,o,i,a,u],(function(e,n,t,r,o,i,a){var u=M({startAngle:e,endAngle:n,innerRadius:t,outerRadius:r},o,i,a).points;return k(u)}))},b=function(n,t,r,o){return e.to([n,t,r,o],(function(e,n,t,r){return y({startAngle:e,endAngle:n,innerRadius:t,outerRadius:r})}))},T=function(n,t,r,o,i,a,u,s){return e.to([n,t,r,o,i,a,u,s],(function(e,n,t,r,o,i,a,u){var s=M({startAngle:e,endAngle:n,innerRadius:t,outerRadius:r},o,i,a),l=s.points,d=s.side,c=l[2];return"before"===d?c.x-=u:c.x+=u,"translate("+c.x+","+c.y+")"}))},P=function(t){var r=t.data,u=t.offset,s=void 0===u?0:u,l=t.diagonalLength,d=t.straightLength,c=t.skipAngle,g=void 0===c?0:c,p=t.textOffset,A=t.linkColor,x=t.textColor,h=i.useMotionConfig(),v=h.animate,R=h.config,m=n.useTheme(),C=a.useInheritedColor(A,m),y=a.useInheritedColor(x,m),M=function(e,n){return o.useMemo((function(){return f(e,n)}),[e,n])}(r,g),k=function(e){var n=e.offset,t=e.diagonalLength,r=e.straightLength,i=e.textOffset,a=e.getLinkColor,u=e.getTextColor;return o.useMemo((function(){return{enter:function(e){return{startAngle:e.arc.startAngle,endAngle:e.arc.endAngle,innerRadius:e.arc.innerRadius,outerRadius:e.arc.outerRadius,offset:n,diagonalLength:0,straightLength:0,textOffset:i,linkColor:a(e),textColor:u(e),opacity:0}},update:function(e){return{startAngle:e.arc.startAngle,endAngle:e.arc.endAngle,innerRadius:e.arc.innerRadius,outerRadius:e.arc.outerRadius,offset:n,diagonalLength:t,straightLength:r,textOffset:i,linkColor:a(e),textColor:u(e),opacity:1}},leave:function(e){return{startAngle:e.arc.startAngle,endAngle:e.arc.endAngle,innerRadius:e.arc.innerRadius,outerRadius:e.arc.outerRadius,offset:n,diagonalLength:0,straightLength:0,textOffset:i,linkColor:a(e),textColor:u(e),opacity:0}}}}),[t,r,i,a,u,n])}({offset:s,diagonalLength:l,straightLength:d,textOffset:p,getLinkColor:C,getTextColor:y});return{transition:e.useTransition(M,{keys:function(e){return e.id},initial:k.update,from:k.enter,enter:k.update,update:k.update,leave:k.leave,config:R,immediate:!v}),interpolateLink:L,interpolateTextAnchor:b,interpolateTextPosition:T}},I=function(e){var n=e.data,t=e.skipAngle,r=void 0===t?0:t,a=e.offset,u=void 0===a?.5:a,l=e.diagonalLength,d=e.straightLength,c=e.computeExtraProps,f=void 0===c?function(){return{}}:c,g=o.useMemo((function(){return n.filter((function(e){return Math.abs(i.radiansToDegrees(e.arc.endAngle-e.arc.startAngle))>=r})).map((function(e){return s({},M(e.arc,u,l,d),{data:e})}))}),[n,r,u,l,d]);return o.useMemo((function(){return g.map((function(e){return s({},f(e),e)}))}),[g,f])},O=C,j=["animated"],E=function(n){var t=n.datum,i=n.style,a=n.onClick,u=n.onMouseEnter,s=n.onMouseMove,l=n.onMouseLeave,d=o.useCallback((function(e){return null==a?void 0:a(t,e)}),[a,t]),c=o.useCallback((function(e){return null==u?void 0:u(t,e)}),[u,t]),f=o.useCallback((function(e){return null==s?void 0:s(t,e)}),[s,t]),g=o.useCallback((function(e){return null==l?void 0:l(t,e)}),[l,t]);return r.jsx(e.animated.path,{d:i.path,opacity:i.opacity,fill:t.fill||i.color,stroke:i.borderColor,strokeWidth:i.borderWidth,onClick:a?d:void 0,onMouseEnter:u?c:void 0,onMouseMove:s?f:void 0,onMouseLeave:l?g:void 0,"data-testid":"arc."+t.id})},F=function(n,t,r,o,i){return e.to([n,t,r,o],(function(e,n,t,r){return i({startAngle:e,endAngle:n,innerRadius:Math.max(0,t),outerRadius:Math.max(0,r)})}))},q=function(n,t,r){void 0===t&&(t="innerRadius");var o=i.useMotionConfig(),a=o.animate,u=o.config,s=A(t,r);return{transition:e.useTransition(n,{keys:function(e){return e.id},initial:s.update,from:s.enter,enter:s.update,update:s.update,leave:s.leave,config:u,immediate:!a}),interpolate:F}},w=function(e,n,t,r,o,a){var u=i.getDistance(o,a,e,n);return u<t&&u>r};exports.ArcLabelComponent=m,exports.ArcLabelsLayer=function(e){var t=e.center,u=e.data,s=e.transitionMode,l=e.label,c=e.radiusOffset,f=e.skipAngle,g=e.skipRadius,p=e.textColor,A=e.component,x=void 0===A?d:A,h=i.usePropertyAccessor(l),R=n.useTheme(),m=a.useInheritedColor(p,R),C=o.useMemo((function(){return u.filter((function(e){var n=Math.abs(i.radiansToDegrees(e.arc.endAngle-e.arc.startAngle)),t=Math.abs(e.arc.outerRadius-e.arc.innerRadius);return n>=f&&t>=g}))}),[u,f,g]),y=v(C,c,s),M=y.transition,k=y.interpolate,L=x;return r.jsx("g",{transform:"translate("+t[0]+","+t[1]+")",children:M((function(e,n){return o.createElement(L,{key:n.id,datum:n,label:h(n),style:{progress:e.progress,transform:k(e.startAngle,e.endAngle,e.innerRadius,e.outerRadius),textColor:m(n)}})}))})},exports.ArcLine=function(n){var t=n.animated,o=function(e,n){if(null==e)return{};var t={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==n.indexOf(r))continue;t[r]=e[r]}return t}(n,j);return r.jsx(e.animated.path,s({d:e.to([t.radius,t.startAngle,t.endAngle],(function(e,n,t){return function(e,n,t){var r=Math.min(n,t),o=Math.max(n,t),a=i.positionFromAngle(i.degreesToRadians(o),e),u=i.positionFromAngle(i.degreesToRadians(r),e);if(o-r>=360){var s=i.positionFromAngle(i.degreesToRadians(r+180),e);return["M "+a.x+" "+a.y,g(e,1,1,s.x,s.y),"M "+a.x+" "+a.y,g(e,1,0,s.x,s.y)].join(" ")}var l=o-r<=180?0:1;return["M "+a.x+" "+a.y,g(e,l,0,u.x,u.y)].join(" ")}(e,n,t)}))},o))},exports.ArcLinkLabelComponent=O,exports.ArcLinkLabelsLayer=function(e){var n=e.center,t=e.data,a=e.label,u=e.skipAngle,l=e.offset,d=e.diagonalLength,c=e.straightLength,f=e.strokeWidth,g=e.textOffset,p=e.textColor,A=e.linkColor,x=e.component,h=void 0===x?C:x,v=i.usePropertyAccessor(a),R=P({data:t,skipAngle:u,offset:l,diagonalLength:d,straightLength:c,textOffset:g,linkColor:A,textColor:p}),m=R.transition,y=R.interpolateLink,M=R.interpolateTextAnchor,k=R.interpolateTextPosition,L=h;return r.jsx("g",{transform:"translate("+n[0]+","+n[1]+")",children:m((function(e,n){return o.createElement(L,{key:n.id,datum:n,label:v(n),style:s({},e,{thickness:f,path:y(e.startAngle,e.endAngle,e.innerRadius,e.outerRadius,e.offset,e.diagonalLength,e.straightLength),textAnchor:M(e.startAngle,e.endAngle,e.innerRadius,e.outerRadius),textPosition:k(e.startAngle,e.endAngle,e.innerRadius,e.outerRadius,e.offset,e.diagonalLength,e.straightLength,e.textOffset)})})}))})},exports.ArcShape=E,exports.ArcsLayer=function(e){var t=e.center,i=e.data,u=e.arcGenerator,l=e.borderWidth,d=e.borderColor,c=e.onClick,f=e.onMouseEnter,g=e.onMouseMove,p=e.onMouseLeave,A=e.transitionMode,x=e.component,h=void 0===x?E:x,v=n.useTheme(),R=a.useInheritedColor(d,v),m=q(i,A,{enter:function(e){return{opacity:0,color:e.color,borderColor:R(e)}},update:function(e){return{opacity:1,color:e.color,borderColor:R(e)}},leave:function(e){return{opacity:0,color:e.color,borderColor:R(e)}}}),C=m.transition,y=m.interpolate,M=h;return r.jsx("g",{transform:"translate("+t[0]+","+t[1]+")",children:C((function(e,n){return o.createElement(M,{key:n.id,datum:n,style:s({},e,{borderWidth:l,path:y(e.startAngle,e.endAngle,e.innerRadius,e.outerRadius,u)}),onClick:c,onMouseEnter:f,onMouseMove:g,onMouseLeave:p})}))})},exports.arcTransitionModeById=p,exports.arcTransitionModes=["startAngle","middleAngle","endAngle","innerRadius","centerRadius","outerRadius","pushIn","pushOut"],exports.computeArcBoundingBox=function(e,n,t,r,o,a){void 0===a&&(a=!0);var u=[],s=i.positionFromAngle(i.degreesToRadians(r),t);u.push([s.x,s.y]);var l=i.positionFromAngle(i.degreesToRadians(o),t);u.push([l.x,l.y]);for(var d=Math.round(Math.min(r,o));d<=Math.round(Math.max(r,o));d++)if(d%90==0){var c=i.positionFromAngle(i.degreesToRadians(d),t);u.push([c.x,c.y])}u=u.map((function(t){var r=t[0],o=t[1];return[e+r,n+o]})),a&&u.push([e,n]);var f=u.map((function(e){return e[0]})),g=u.map((function(e){return e[1]})),p=Math.min.apply(Math,f),A=Math.max.apply(Math,f),x=Math.min.apply(Math,g);return{points:u,x:p,y:x,width:A-p,height:Math.max.apply(Math,g)-x}},exports.computeArcCenter=x,exports.computeArcLink=M,exports.computeArcLinkTextAnchor=y,exports.drawCanvasArcLabels=function(e,n,r){t.setCanvasFont(e,r.labels.text),e.textAlign="center",e.textBaseline="middle",n.forEach((function(n){t.drawCanvasText(e,s({},r.labels.text,{fill:n.textColor}),String(n.label),n.x,n.y)}))},exports.drawCanvasArcLinkLabels=function(e,n,r,o){e.textBaseline="middle",t.setCanvasFont(e,r.labels.text),n.forEach((function(n){e.textAlign=i.textPropsByEngine.canvas.align[n.textAnchor],t.drawCanvasText(e,s({},r.labels.text,{fill:n.textColor}),String(n.label),n.x,n.y),e.beginPath(),e.strokeStyle=n.linkColor,e.lineWidth=o,n.points.forEach((function(n,t){0===t?e.moveTo(n.x,n.y):e.lineTo(n.x,n.y)})),e.stroke()}))},exports.findArcUnderCursor=function(e,n,t,r,o,a,u){if(w(e,n,t,r,a,u)){var s=i.getAngle(a,u,e,n);return o.find((function(e){var n=e.startAngle,t=e.endAngle;return s>=n&&s<t}))}},exports.interpolateArc=F,exports.interpolateArcCenter=h,exports.isCursorInRing=w,exports.useAnimatedArc=function(n,t){var r=i.useMotionConfig(),o=r.animate,a=r.config,u=e.useSpring({startAngle:n.arc.startAngle,endAngle:n.arc.endAngle,innerRadius:n.arc.innerRadius,outerRadius:n.arc.outerRadius,config:a,immediate:!o});return s({},u,{path:F(u.startAngle,u.endAngle,u.innerRadius,u.outerRadius,t)})},exports.useArcCenters=R,exports.useArcCentersTransition=v,exports.useArcGenerator=function(e){var n=void 0===e?{}:e,t=n.cornerRadius,r=void 0===t?0:t,i=n.padAngle,a=void 0===i?0:i;return o.useMemo((function(){return u.arc().innerRadius((function(e){return e.innerRadius})).outerRadius((function(e){return e.outerRadius})).cornerRadius(r).padAngle(a)}),[r,a])},exports.useArcLabels=function(e){var t=e.data,r=e.offset,u=e.skipAngle,s=e.label,l=e.textColor,d=i.usePropertyAccessor(s),c=n.useTheme(),f=a.useInheritedColor(l,c),g=o.useCallback((function(e){return{label:d(e),textColor:f(e)}}),[d,f]);return R({data:t,offset:r,skipAngle:u,computeExtraProps:g})},exports.useArcLinkLabels=function(e){var t=e.data,r=e.skipAngle,u=e.offset,l=e.diagonalLength,d=e.straightLength,c=e.textOffset,f=void 0===c?0:c,g=e.label,p=e.linkColor,A=e.textColor,x=i.usePropertyAccessor(g),h=n.useTheme(),v=a.useInheritedColor(p,h),R=a.useInheritedColor(A,h),m=o.useCallback((function(e){var n,t={x:e.points[2].x,y:e.points[2].y};return"before"===e.side?(t.x-=f,n="end"):(t.x+=f,n="start"),s({},t,{label:x(e.data),linkColor:v(e.data),textAnchor:n,textColor:R(e.data)})}),[x,v,R,f]);return I({data:t,skipAngle:r,offset:u,diagonalLength:l,straightLength:d,computeExtraProps:m})},exports.useArcLinkLabelsTransition=P,exports.useArcLinks=I,exports.useArcTransitionMode=A,exports.useArcsTransition=q;
//# sourceMappingURL=nivo-arcs.cjs.js.map