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