UNPKG

sankyy

Version:

<a href="https://nivo.rocks"><img alt="nivo" src="https://raw.githubusercontent.com/plouc/nivo/master/nivo.png" width="216" height="68"/></a>

3 lines (2 loc) 20.9 kB
"use strict";var e=require("react"),n=require("lodash/uniq.js"),o=require("@nivo/core"),t=require("@nivo/legends"),r=require("d3-sankey"),i=require("@nivo/text"),a=require("@nivo/tooltip"),l=require("react/jsx-runtime"),s=require("lodash/cloneDeep.js"),d=require("@nivo/theming"),c=require("@nivo/colors"),u=require("@react-spring/web"),h=require("d3-shape");function v(){return v=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var o=arguments[n];for(var t in o)({}).hasOwnProperty.call(o,t)&&(e[t]=o[t])}return e},v.apply(null,arguments)}function f(e,n){if(null==e)return{};var o={};for(var t in e)if({}.hasOwnProperty.call(e,t)){if(-1!==n.indexOf(t))continue;o[t]=e[t]}return o}var p={container:{display:"flex",alignItems:"center"},sourceChip:{marginRight:7},targetChip:{marginLeft:7,marginRight:7}},y={center:r.sankeyCenter,justify:r.sankeyJustify,start:r.sankeyLeft,end:r.sankeyRight},g=Object.keys(y),k=function(e){return y[e]},m={layout:"horizontal",align:"center",sort:"auto",colors:{scheme:"nivo"},nodeOpacity:.75,nodeHoverOpacity:1,nodeHoverOthersOpacity:.15,nodeThickness:12,nodeSpacing:12,nodeInnerPadding:0,nodeBorderWidth:1,nodeBorderColor:{from:"color",modifiers:[["darker",.5]]},nodeBorderRadius:0,linkOpacity:.25,linkHoverOpacity:.6,linkHoverOthersOpacity:.15,linkContract:0,linkBlendMode:"multiply",enableLinkGradient:!1,enableLabels:!0,label:"id",labelPosition:"inside",labelPadding:9,labelOrientation:"horizontal",labelTextColor:{from:"color",modifiers:[["darker",.8]]},labelComponent:i.Text,isInteractive:!0,nodeTooltip:function(e){var n=e.node;return l.jsx(a.BasicTooltip,{id:n.label,enableChip:!0,color:n.color})},linkTooltip:function(e){var n=e.link;return l.jsx(a.BasicTooltip,{id:l.jsxs("span",{style:p.container,children:[l.jsx(a.Chip,{color:n.source.color,style:p.sourceChip}),l.jsx("strong",{children:n.source.label})," > ",l.jsx("strong",{children:n.target.label}),l.jsx(a.Chip,{color:n.target.color,style:p.targetChip}),l.jsx("strong",{children:n.formattedValue})]})})},legends:[],layers:["links","nodes","labels","legends"],role:"img",animate:!0,motionConfig:"gentle"},x=function(e){return e.id},C=function(n){var t=n.data,i=n.valueFormat,a=n.layout,l=n.width,u=n.height,h=n.sort,v=n.align,f=n.colors,p=n.nodeThickness,y=n.nodeSpacing,g=n.nodeInnerPadding,m=n.nodeBorderColor,C=n.label,b=n.labelTextColor,O=n.nodePositions,M=e.useState(null),L=M[0],j=M[1],E=e.useState(null),w=E[0],P=E[1],T=e.useMemo((function(){if("auto"!==h)return"input"===h?null:"ascending"===h?function(e,n){return e.value-n.value}:"descending"===h?function(e,n){return n.value-e.value}:h}),[h]),I="input"===h?null:void 0,B=e.useMemo((function(){return"function"==typeof v?v:k(v)}),[v]),N=d.useTheme(),H=c.useOrdinalColorScale(f,"id"),S=c.useInheritedColor(m,N),W=o.usePropertyAccessor(C),z=c.useInheritedColor(b,N),F=o.useValueFormatter(i),R=e.useMemo((function(){return function(e){var n=e.data,o=e.formatValue,t=e.layout,i=e.alignFunction,a=e.sortFunction,l=e.linkSortMode,d=e.nodeThickness,c=e.nodeSpacing,u=e.nodeInnerPadding,h=e.width,v=e.height,f=e.getColor,p=e.getLabel,y=e.nodePositions,g=r.sankey().nodeAlign(i).nodeSort(a).linkSort(l).nodeWidth(d).nodePadding(c).size("horizontal"===t?[h,v]:[v,h]).nodeId(x),k=s(n);g(k);var m=new Map;k.nodes.forEach((function(e){var n=e.depth;m.has(n)||m.set(n,[]),m.get(n).push(e)}));for(var C=Array.from(m.keys()).sort((function(e,n){return e-n})),b=function(){var e=m.get(C[O-1]),n=m.get(C[O]);if(!e||!n)return 1;var o=Math.max.apply(Math,e.map((function(e){return"horizontal"===t?e.y1:e.x1}))),r=function(e){return e.sourceLinks.length>0&&e.targetLinks.length>0},i=n.filter(r).sort((function(e,n){return"horizontal"===t?e.y0-n.y0:e.x0-n.x0})),a=n.filter((function(e){return!r(e)})),l=a.length?Math.max.apply(Math,a.map((function(e){return"horizontal"===t?e.y1:e.x1}))):0;if(i.length){var s=Math.max(o,l)+30,d=[].concat(i).sort((function(e,n){return"horizontal"===t?n.y1-e.y1:n.x1-e.x1})),c=s;d.forEach((function(e){var n="horizontal"===t?e.y1-e.y0:e.x1-e.x0,o=c-n,r=o-("horizontal"===t?e.y0:e.x0);"horizontal"===t?(e.y0+=r,e.y1+=r,e.y+=r):(e.x0+=r,e.x1+=r,e.x+=r),c=o-30}))}},O=1;O<C.length;O++)b();k.nodes.forEach((function(e){if(y){var n=y[e.id];n&&(void 0!==n.x&&(e.manualX=n.x),void 0!==n.y&&(e.manualY=n.y))}if(e.color=f(e),e.label=p(e),e.formattedValue=o(e.value),"manualX"in e&&void 0!==e.manualX){var r=e.x1-e.x0;e.x0=e.manualX,e.x1=e.manualX+r}if("manualY"in e&&void 0!==e.manualY){var i=e.y1-e.y0;e.y0=e.manualY,e.y1=e.manualY+i}if("horizontal"===t)e.x=e.x0+u,e.y=e.y0,e.width=Math.max(e.x1-e.x0-2*u,0),e.height=Math.max(e.y1-e.y0,0);else{e.x=e.y0,e.y=e.x0+u,e.width=Math.max(e.y1-e.y0,0),e.height=Math.max(e.x1-e.x0-2*u,0);var a=e.x0,l=e.x1;e.x0=e.y0,e.x1=e.y1,e.y0=a,e.y1=l}})),k.links.forEach((function(e){e.formattedValue=o(e.value),e.color=e.source.color,e.thickness=e.width}));var M=Math.max.apply(Math,k.nodes.map((function(e){return e.depth})));return k.nodes.forEach((function(e){if("horizontal"===t){var n=0;(0===e.depth?[].concat(e.sourceLinks).sort((function(e,n){return(e.target.depth===M?0:1)-(n.target.depth===M?0:1)})):e.sourceLinks).forEach((function(o){o.pos0=e.y0+n+o.thickness/2,n+=o.thickness}));var o=0;e.targetLinks.forEach((function(n){n.pos1=e.y0+o+n.thickness/2,o+=n.thickness}))}else{var r=0;e.sourceLinks.forEach((function(n){n.pos0=e.x0+r+n.thickness/2,r+=n.thickness}));var i=0;e.targetLinks.forEach((function(n){n.pos1=e.x0+i+n.thickness/2,i+=n.thickness}))}})),k}({data:t,formatValue:F,layout:a,alignFunction:B,sortFunction:T,linkSortMode:I,nodeThickness:p,nodeSpacing:y,nodeInnerPadding:g,width:l,height:u,getColor:H,getLabel:W,nodePositions:O})}),[t,F,a,B,T,I,p,y,g,l,u,H,W,O]),q=R.nodes,D=R.links,X=e.useMemo((function(){return q.map((function(e){return{id:e.id,label:e.label,color:e.color}}))}),[q]);return{nodes:q,links:D,legendData:X,getNodeBorderColor:S,currentNode:L,setCurrentNode:j,currentLink:w,setCurrentLink:P,getLabelTextColor:z}},b=function(n){var t=n.node,r=n.x,i=n.y,s=n.width,d=n.height,c=n.color,h=n.opacity,v=n.borderWidth,f=n.borderColor,p=n.borderRadius,y=n.setCurrent,g=n.isInteractive,k=n.onClick,m=n.tooltip,x=o.useMotionConfig(),C=x.animate,b=x.config,O=u.useSpring({x:r,y:i,width:s,height:d,opacity:h,color:c,config:b,immediate:!C}),M=a.useTooltip(),L=M.showTooltipFromEvent,j=M.hideTooltip,E=e.useCallback((function(n){y(t),L(e.createElement(m,{node:t}),n,"left")}),[y,t,L,m]),w=e.useCallback((function(n){L(e.createElement(m,{node:t}),n,"left")}),[L,t,m]),P=e.useCallback((function(){y(null),j()}),[y,j]),T=e.useCallback((function(e){null==k||k(t,e)}),[k,t]);return l.jsx(u.animated.rect,{x:O.x,y:O.y,rx:p,ry:p,width:O.width.to((function(e){return Math.max(e,0)})),height:O.height.to((function(e){return Math.max(e,0)})),fill:O.color,fillOpacity:O.opacity,strokeWidth:v,stroke:f,strokeOpacity:h,onMouseEnter:g?E:void 0,onMouseMove:g?w:void 0,onMouseLeave:g?P:void 0,onClick:g?T:void 0})},O=function(e){var n=e.nodes,o=e.nodeOpacity,t=e.nodeHoverOpacity,r=e.nodeHoverOthersOpacity,i=e.borderWidth,a=e.getBorderColor,s=e.borderRadius,d=e.setCurrentNode,c=e.currentNode,u=e.currentLink,h=e.isCurrentNode,v=e.isInteractive,f=e.onClick,p=e.tooltip,y=function(e){return c||u?h(e)?t:r:o};return l.jsx(l.Fragment,{children:n.map((function(e){return l.jsx(b,{node:e,x:e.x,y:e.y,width:e.width,height:e.height,color:e.color,opacity:y(e),borderWidth:i,borderColor:a(e),borderRadius:s,setCurrent:d,isInteractive:v,onClick:f,tooltip:p},e.id)}))})},M=function(e){var n,o=e.id,t=e.layout,r=e.startColor,i=e.endColor;return n="horizontal"===t?{x1:"0%",x2:"100%",y1:"0%",y2:"0%"}:{x1:"0%",x2:"0%",y1:"0%",y2:"100%"},l.jsxs("linearGradient",v({id:o,spreadMethod:"pad"},n,{children:[l.jsx("stop",{offset:"0%",stopColor:r}),l.jsx("stop",{offset:"100%",stopColor:i})]}))},L=function(n){var t=n.link,r=n.layout,i=n.path,s=n.color,d=n.opacity,c=n.blendMode,h=n.enableGradient,v=n.setCurrent,f=n.tooltip,p=n.isInteractive,y=n.onClick,g=t.source.id+"."+t.target.id+"."+t.index,k=o.useMotionConfig(),m=k.animate,x=k.config,C=o.useAnimatedPath(i),b=u.useSpring({color:s,opacity:d,config:x,immediate:!m}),O=a.useTooltip(),L=O.showTooltipFromEvent,j=O.hideTooltip,E=e.useCallback((function(n){v(t),L(e.createElement(f,{link:t}),n,"left")}),[v,t,L,f]),w=e.useCallback((function(n){L(e.createElement(f,{link:t}),n,"left")}),[L,t,f]),P=e.useCallback((function(){v(null),j()}),[v,j]),T=e.useCallback((function(e){null==y||y(t,e)}),[y,t]);return l.jsxs(l.Fragment,{children:[h&&l.jsx(M,{id:g,layout:r,startColor:t.startColor||t.source.color,endColor:t.endColor||t.target.color}),l.jsx(u.animated.path,{fill:h?'url("#'+encodeURI(g)+'")':b.color,d:C,fillOpacity:b.opacity,onMouseEnter:p?E:void 0,onMouseMove:p?w:void 0,onMouseLeave:p?P:void 0,onClick:p?T:void 0,style:{mixBlendMode:c}})]})},j=function(n){var o=n.links,t=n.layout,r=n.linkOpacity,i=n.linkHoverOpacity,a=n.linkHoverOthersOpacity,s=n.linkContract,d=n.linkBlendMode,c=n.enableLinkGradient,u=n.setCurrentLink,v=n.currentLink,f=n.currentNode,p=n.isCurrentLink,y=n.isInteractive,g=n.onClick,k=n.tooltip,m=function(e){return f||v?p(e)?i:a:r},x=e.useMemo((function(){return"horizontal"===t?(e=h.line().curve(h.curveMonotoneX),function(n,o){var t=Math.max(1,n.thickness-2*o)/2,r=.12*(n.target.x0-n.source.x1),i=[[n.source.x1,n.pos0-t],[n.source.x1+r,n.pos0-t],[n.target.x0-r,n.pos1-t],[n.target.x0,n.pos1-t],[n.target.x0,n.pos1+t],[n.target.x0-r,n.pos1+t],[n.source.x1+r,n.pos0+t],[n.source.x1,n.pos0+t],[n.source.x1,n.pos0-t]];return e(i)+"Z"}):function(){var e=h.line().curve(h.curveMonotoneY);return function(n,o){var t=Math.max(1,n.thickness-2*o)/2,r=.12*(n.target.y0-n.source.y1),i=[[n.pos0+t,n.source.y1],[n.pos0+t,n.source.y1+r],[n.pos1+t,n.target.y0-r],[n.pos1+t,n.target.y0],[n.pos1-t,n.target.y0],[n.pos1-t,n.target.y0-r],[n.pos0-t,n.source.y1+r],[n.pos0-t,n.source.y1],[n.pos0+t,n.source.y1]];return e(i)+"Z"}}();var e}),[t]);return l.jsx(l.Fragment,{children:o.map((function(e){return l.jsx(L,{link:e,layout:t,path:x(e,s),color:e.color,opacity:m(e),blendMode:d,enableGradient:c,setCurrent:u,isInteractive:y,onClick:g,tooltip:k},e.source.id+"."+e.target.id+"."+e.index)}))})},E=function(e){var n=e.nodes,t=e.layout,r=e.width,i=e.height,a=e.labelPosition,s=e.labelPadding,c=e.labelOrientation,h=e.getLabelTextColor,f=e.labelComponent,p=d.useTheme(),y="vertical"===c?-90:0,g=n.map((function(e){var n,o,l;return"horizontal"===t?(o=e.y+e.height/2,e.x<r/2?"inside"===a?(n=e.x1+s,l="vertical"===c?"middle":"start"):(n=e.x-s,l="vertical"===c?"middle":"end"):"inside"===a?(n=e.x-s,l="vertical"===c?"middle":"end"):(n=e.x1+s,l="vertical"===c?"middle":"start")):"vertical"===t&&(n=e.x+e.width/2,e.y<i/2?"inside"===a?(o=e.y1+s,l="vertical"===c?"end":"middle"):(o=e.y-s,l="vertical"===c?"start":"middle"):"inside"===a?(o=e.y-s,l="vertical"===c?"start":"middle"):(o=e.y1+s,l="vertical"===c?"end":"middle")),{id:e.id,label:e.label,x:n,y:o,textAnchor:l,color:h(e)}})),k=o.useMotionConfig(),m=k.animate,x=k.config,C=u.useSprings(g.length,g.map((function(e){return{transform:"translate("+e.x+", "+e.y+") rotate("+y+")",color:e.color,config:x,immediate:!m}})));return l.jsx(l.Fragment,{children:C.map((function(e,o){var t=g[o];return l.jsx(f,{dominantBaseline:"central",textAnchor:t.textAnchor,transform:e.transform,style:v({},p.labels.text,{fill:e.color,pointerEvents:"none"}),node:n[o],children:t.label},t.id)}))})},w=["isInteractive","animate","motionConfig","theme","renderWrapper"],P=function(r){var i=r.data,a=r.valueFormat,s=r.layout,d=void 0===s?m.layout:s,c=r.sort,u=void 0===c?m.sort:c,h=r.align,f=void 0===h?m.align:h,p=r.width,y=r.height,g=r.margin,k=r.colors,x=void 0===k?m.colors:k,b=r.nodeThickness,M=void 0===b?m.nodeThickness:b,L=r.nodeSpacing,w=void 0===L?m.nodeThickness:L,P=r.nodeInnerPadding,T=void 0===P?m.nodeInnerPadding:P,I=r.nodePositions,B=r.nodeBorderColor,N=void 0===B?m.nodeBorderColor:B,H=r.nodeOpacity,S=void 0===H?m.nodeOpacity:H,W=r.nodeHoverOpacity,z=void 0===W?m.nodeHoverOpacity:W,F=r.nodeHoverOthersOpacity,R=void 0===F?m.nodeHoverOthersOpacity:F,q=r.nodeBorderWidth,D=void 0===q?m.nodeBorderWidth:q,X=r.nodeBorderRadius,Y=void 0===X?m.nodeBorderRadius:X,A=r.linkOpacity,G=void 0===A?m.linkOpacity:A,V=r.linkHoverOpacity,Z=void 0===V?m.linkHoverOpacity:V,J=r.linkHoverOthersOpacity,K=void 0===J?m.linkHoverOthersOpacity:J,U=r.linkContract,Q=void 0===U?m.linkContract:U,$=r.linkBlendMode,_=void 0===$?m.linkBlendMode:$,ee=r.enableLinkGradient,ne=void 0===ee?m.enableLinkGradient:ee,oe=r.enableLabels,te=void 0===oe?m.enableLabels:oe,re=r.labelComponent,ie=void 0===re?m.labelComponent:re,ae=r.labelPosition,le=void 0===ae?m.labelPosition:ae,se=r.labelPadding,de=void 0===se?m.labelPadding:se,ce=r.labelOrientation,ue=void 0===ce?m.labelOrientation:ce,he=r.label,ve=void 0===he?m.label:he,fe=r.labelTextColor,pe=void 0===fe?m.labelTextColor:fe,ye=r.nodeTooltip,ge=void 0===ye?m.nodeTooltip:ye,ke=r.linkTooltip,me=void 0===ke?m.linkTooltip:ke,xe=r.isInteractive,Ce=void 0===xe?m.isInteractive:xe,be=r.onClick,Oe=r.legends,Me=void 0===Oe?m.legends:Oe,Le=r.layers,je=void 0===Le?m.layers:Le,Ee=r.role,we=void 0===Ee?m.role:Ee,Pe=r.ariaLabel,Te=r.ariaLabelledBy,Ie=r.ariaDescribedBy,Be=o.useDimensions(p,y,g),Ne=Be.margin,He=Be.innerWidth,Se=Be.innerHeight,We=Be.outerWidth,ze=Be.outerHeight,Fe=C({data:i,valueFormat:a,layout:d,width:He,height:Se,sort:u,align:f,colors:x,nodeThickness:M,nodeSpacing:w,nodeInnerPadding:T,nodePositions:I,nodeBorderColor:N,label:ve,labelTextColor:pe}),Re=Fe.nodes,qe=Fe.links,De=Fe.legendData,Xe=Fe.getNodeBorderColor,Ye=Fe.currentNode,Ae=Fe.setCurrentNode,Ge=Fe.currentLink,Ve=Fe.setCurrentLink,Ze=Fe.getLabelTextColor,Je=e.useMemo((function(){var e=function(){return!1},o=function(){return!1};if(Ge&&(e=function(e){var n=e.id;return n===Ge.source.id||n===Ge.target.id},o=function(e){var n=e.source,o=e.target;return n.id===Ge.source.id&&o.id===Ge.target.id}),Ye){var t=[Ye.id];qe.filter((function(e){var n=e.source,o=e.target;return n.id===Ye.id||o.id===Ye.id})).forEach((function(e){var n=e.source,o=e.target;t.push(n.id),t.push(o.id)})),t=n(t),e=function(e){var n=e.id;return t.includes(n)},o=function(e){var n=e.source,o=e.target;return n.id===Ye.id||o.id===Ye.id}}return{isCurrentNode:e,isCurrentLink:o}}),[Ge,Ye,qe]),Ke=Je.isCurrentNode,Ue=Je.isCurrentLink,Qe=e.useMemo((function(){return{links:qe,nodes:Re,margin:Ne,width:p,height:y,outerWidth:We,outerHeight:ze,currentNode:Ye,isCurrentNode:Ke,setCurrentNode:Ae,currentLink:Ge,isCurrentLink:Ue,setCurrentLink:Ve,isInteractive:Ce}}),[qe,Re,Ne,p,y,We,ze,Ye,Ke,Ae,Ge,Ue,Ve,Ce]),$e={links:null,nodes:null,labels:null,legends:null};return je.includes("links")&&($e.links=l.jsx(j,{links:qe,layout:d,linkContract:Q,linkOpacity:G,linkHoverOpacity:Z,linkHoverOthersOpacity:K,linkBlendMode:_,enableLinkGradient:ne,setCurrentLink:Ve,currentNode:Ye,currentLink:Ge,isCurrentLink:Ue,isInteractive:Ce,onClick:be,tooltip:me},"links")),je.includes("nodes")&&($e.nodes=l.jsx(O,{nodes:Re,nodeOpacity:S,nodeHoverOpacity:z,nodeHoverOthersOpacity:R,borderWidth:D,borderRadius:Y,getBorderColor:Xe,setCurrentNode:Ae,currentNode:Ye,currentLink:Ge,isCurrentNode:Ke,isInteractive:Ce,onClick:be,tooltip:ge},"nodes")),je.includes("labels")&&te&&($e.labels=l.jsx(E,{nodes:Re,layout:d,width:He,height:Se,labelPosition:le,labelPadding:de,labelOrientation:ue,getLabelTextColor:Ze,labelComponent:ie},"labels")),je.includes("legends")&&($e.legends=l.jsx(e.Fragment,{children:Me.map((function(e,n){return l.jsx(t.BoxLegendSvg,v({},e,{containerWidth:He,containerHeight:Se,data:De}),"legend"+n)}))},"legends")),l.jsx(o.SvgWrapper,{width:We,height:ze,margin:Ne,role:we,ariaLabel:Pe,ariaLabelledBy:Te,ariaDescribedBy:Ie,children:je.map((function(n,o){var t;return"function"==typeof n?l.jsx(e.Fragment,{children:e.createElement(n,Qe)},o):null!=(t=null==$e?void 0:$e[n])?t:null}))})},T=function(e){var n=e.isInteractive,t=void 0===n?m.isInteractive:n,r=e.animate,i=void 0===r?m.animate:r,a=e.motionConfig,s=void 0===a?m.motionConfig:a,d=e.theme,c=e.renderWrapper,u=f(e,w);return l.jsx(o.Container,{animate:i,isInteractive:t,motionConfig:s,renderWrapper:c,theme:d,children:l.jsx(P,v({isInteractive:t},u))})},I=["onNodeDrag","onNodeDragEnd","layers","initialNodePositions"],B=e.forwardRef((function(n,o){var t=n.onNodeDrag,r=n.onNodeDragEnd,i=n.layers,a=n.initialNodePositions,s=f(n,I),d=e.useMemo((function(){return null!=a?a:{}}),[a]),c=e.useState(d),u=c[0],h=c[1],p=e.useRef(!1),y=e.useRef(null),g=e.useRef(!1);e.useEffect((function(){p.current||h((function(e){var n=Object.keys(e),o=Object.keys(d);return n.length===o.length&&n.every((function(n){var o=e[n],t=d[n];return(null==o?void 0:o.x)===(null==t?void 0:t.x)&&(null==o?void 0:o.y)===(null==t?void 0:t.y)}))?e:d}))}),[d]),e.useImperativeHandle(o,(function(){return{resetNodePositions:function(){p.current=!1,h(a||d||{})}}}));var k,m,x=e.useCallback((function(e){var n=e.nodes,o=e.isCurrentNode;g.current||(g.current=!0);var i=function(e){if(y.current){var n=y.current,o=n.nodeId,r=n.startClientX,i=n.startClientY,a=n.startX,l=n.startY,s=e.clientX-r,d=e.clientY-i,c=a+s,u=l+d;h((function(e){var n;return v({},e,((n={})[o]={x:c,y:u},n))})),null==t||t(o,c,u)}},a=function(){var e,n;if(y.current){var o=y.current.nodeId;y.current=null,window.removeEventListener("mousemove",i),window.removeEventListener("mouseup",a);var t=u[o];null==r||r(o,null!=(e=null==t?void 0:t.x)?e:0,null!=(n=null==t?void 0:t.y)?n:0)}};return l.jsx(l.Fragment,{children:n.map((function(e){var n,t,r,d,c=o(e);return l.jsx("g",{transform:"translate("+e.x+","+e.y+")",style:{cursor:"move"},onMouseDown:function(n){var o,t,r,l;n.stopPropagation(),y.current={nodeId:String(e.id),startClientX:n.clientX,startClientY:n.clientY,startX:null!=(o=null==(t=u[e.id])?void 0:t.x)?o:e.x,startY:null!=(r=null==(l=u[e.id])?void 0:l.y)?r:e.y},p.current=!0,window.addEventListener("mousemove",i),window.addEventListener("mouseup",a)},children:l.jsx("rect",{width:e.width,height:e.height,fill:e.color,opacity:c?null!=(n=s.nodeHoverOpacity)?n:1:null!=(t=s.nodeOpacity)?t:1,stroke:e.color,strokeWidth:null!=(r=s.nodeBorderWidth)?r:0,rx:null!=(d=s.nodeBorderRadius)?d:0})},e.id)}))})}),[u,t,r,s.nodeHoverOpacity,s.nodeOpacity,s.nodeBorderRadius,s.nodeBorderWidth]),C=-1!==(m=(k=null!=i?i:["links","nodes","labels","legends"]).indexOf("nodes"))?[].concat(k.slice(0,m),[x],k.slice(m+1)):[].concat(k,[x]);return l.jsx(T,v({},s,{layers:C,nodePositions:u}))}));exports.DraggableSankey=B,exports.ResponsiveSankey=function(e){return l.jsx(o.ResponsiveWrapper,{children:function(n){var o=n.width,t=n.height;return l.jsx(T,v({width:o,height:t},e))}})},exports.Sankey=T,exports.calculateOptimalNodePositions=function(e,n){var o=n.width,t=n.height,i=n.layout,a=void 0===i?m.layout:i,l=n.nodeThickness,d=void 0===l?m.nodeThickness:l,c=n.nodeSpacing,u=void 0===c?m.nodeSpacing:c,h=n.align,v=void 0===h?m.align:h,f=n.collisionGap,p=void 0===f?4:f,y=n.staggerGap,g=void 0===y?12:y,x=r.sankey().nodeWidth(d).nodePadding(u).size("horizontal"===a?[o,t]:[t,o]).nodeAlign(k(v)).nodeId((function(e){return e.id})),C=s(e);x(C);var b={};C.nodes.forEach((function(e){b[e.depth]=b[e.depth]||[],b[e.depth].push(e)})),Object.values(b).forEach((function(e){e.sort((function(e,n){return e.y0-n.y0}));var n=0;e.forEach((function(e){0!==n&&(e.y0+=n,e.y1+=n),e.sourceLinks.length>0&&e.targetLinks.length>0&&(n+=g)}))})),C.links.forEach((function(e){e.thickness=e.width})),C.nodes.forEach((function(e){if("horizontal"===a){var n=0;e.sourceLinks.forEach((function(o){o.pos0=e.y0+n+o.thickness/2,n+=o.thickness}));var o=0;e.targetLinks.forEach((function(n){n.pos1=e.y0+o+n.thickness/2,o+=n.thickness}))}else{var t=0;e.sourceLinks.forEach((function(n){n.pos0=e.x0+t+n.thickness/2,t+=n.thickness}));var r=0;e.targetLinks.forEach((function(n){n.pos1=e.x0+r+n.thickness/2,r+=n.thickness}))}})),C.links.forEach((function(e){if(!(Math.abs(e.target.depth-e.source.depth)<=1)){var n=e.thickness/2,o=Math.min(e.pos0-n,e.pos1-n),t=Math.max(e.pos0+n,e.pos1+n),r=Math.min(e.source.depth,e.target.depth),i=Math.max(e.source.depth,e.target.depth);C.nodes.forEach((function(e){if(!(e.depth<=r||e.depth>=i)){var n=e.y1+p<o,a=e.y0-p>t;if(!(n||a)){var l=t-e.y0+p;e.y0+=l,e.y1+=l}}}))}})),Object.values(b).forEach((function(e){e.sort((function(e,n){return e.y0-n.y0}));for(var n=1;n<e.length;n++){var o=e[n-1],t=e[n],r=o.y1+u;if(t.y0<r){var i=r-t.y0;t.y0+=i,t.y1+=i}}}));var O=Math.max.apply(Math,C.nodes.map((function(e){return e.y1})));if(O>t-300){var M=O-t;C.nodes.forEach((function(e){e.y0-=M,e.y1-=M}))}var L=Math.min.apply(Math,C.nodes.map((function(e){return e.y0})));L<0&&C.nodes.forEach((function(e){e.y0-=L,e.y1-=L}));var j={};return C.nodes.forEach((function(e){var n=Number.isFinite(e.y0)?e.y0:0;j[e.id]={y:n}})),j},exports.sankeyAlignmentFromProp=k,exports.sankeyAlignmentPropKeys=g,exports.sankeyAlignmentPropMapping=y,exports.svgDefaultProps=m; //# sourceMappingURL=nivo-sankey.cjs.js.map