UNPKG

highcharts

Version:
1 lines 9.08 kB
import*as t from"../highcharts.js";import"./sankey.js";var e={};e.n=t=>{var i=t&&t.__esModule?()=>t.default:()=>t;return e.d(i,{a:i}),i},e.d=(t,i)=>{for(var n in i)e.o(i,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:i[n]})},e.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);let i=t.default;var n=e.n(i);e.d({},{});let s=t.default.SeriesRegistry;var a=e.n(s);let{sankey:{prototype:{pointClass:r}}}=a().seriesTypes,{defined:o,find:h,pick:l}=n(),d=class extends r{constructor(t,e,i){super(t,e,i),this.isNode||(this.dataLabelOnNull=!0,this.formatPrefix="link")}getSum(){return 1}setNodeColumn(){super.setNodeColumn();let t=this,e=t.getFromNode().fromNode;if(!o(t.options.column)&&0!==t.linksTo.length&&e&&"hanging"===e.options.layout){let i=-1,n;t.options.layout=l(t.options.layout,"hanging"),t.hangsFrom=e,h(e.linksFrom,(e,n)=>{let s=e.toNode===t;return s&&(i=n),s});for(let s=0;s<e.linksFrom.length;++s)(n=e.linksFrom[s]).toNode.id===t.id?s=e.linksFrom.length:i+=function t(e){let i=e.linksFrom.length;return e.linksFrom.forEach(e=>{e.id===e.toNode.linksTo[0].id?i+=t(e.toNode):i--}),i}(n.toNode);t.column=(t.column||0)+i}}},p={applyRadius:function(t,e){let i=[];for(let n=0;n<t.length;n++){let s=t[n][1],a=t[n][2];if("number"==typeof s&&"number"==typeof a){if(0===n)i.push(["M",s,a]);else if(n===t.length-1)i.push(["L",s,a]);else if(e){let r=t[n-1],o=t[n+1];if(r&&o){let t=r[1],n=r[2],h=o[1],l=o[2];if("number"==typeof t&&"number"==typeof h&&"number"==typeof n&&"number"==typeof l&&t!==h&&n!==l){let r=t<h?1:-1,o=n<l?1:-1;i.push(["L",s-r*Math.min(Math.abs(s-t),e),a-o*Math.min(Math.abs(a-n),e)],["C",s,a,s,a,s+r*Math.min(Math.abs(s-h),e),a+o*Math.min(Math.abs(a-l),e)])}}}else i.push(["L",s,a])}}return i}},g=t.default.SVGElement;var u=e.n(g);let{deg2rad:f}=n(),{addEvent:c,merge:y,uniqueKey:k,defined:m,extend:b}=n();function x(t,e){e=y(!0,{enabled:!0,attributes:{dy:-5,startOffset:"50%",textAnchor:"middle"}},e);let i=this.renderer.url,n=this.text||this,s=n.textPath,{attributes:a,enabled:r}=e;if(t=t||s&&s.path,s&&s.undo(),t&&r){let e=c(n,"afterModifyTree",e=>{if(t&&r){let s=t.attr("id");s||t.attr("id",s=k());let r={x:0,y:0};m(a.dx)&&(r.dx=a.dx,delete a.dx),m(a.dy)&&(r.dy=a.dy,delete a.dy),n.attr(r),this.attr({transform:""}),this.box&&(this.box=this.box.destroy());let o=e.nodes.slice(0);e.nodes.length=0,e.nodes[0]={tagName:"textPath",attributes:b(a,{"text-anchor":a.textAnchor,href:`${i}#${s}`}),children:o}}});n.textPath={path:t,undo:e}}else n.attr({dx:0,dy:0}),delete n.textPath;return this.added&&(n.textCache="",this.renderer.buildText(n)),this}function A(t){let e=t.bBox,i=this.element?.querySelector("textPath");if(i){let t=[],{b:n,h:s}=this.renderer.fontMetrics(this.element),a=s-n,r=RegExp('(<tspan>|<tspan(?!\\sclass="highcharts-br")[^>]*>|<\\/tspan>)',"g"),o=i.innerHTML.replace(r,"").split(/<tspan class="highcharts-br"[^>]*>/),h=o.length,l=(t,e)=>{let{x:s,y:r}=e,o=(i.getRotationOfChar(t)-90)*f,h=Math.cos(o),l=Math.sin(o);return[[s-a*h,r-a*l],[s+n*h,r+n*l]]};for(let e=0,n=0;n<h;n++){let s=o[n].length;for(let a=0;a<s;a+=5)try{let s=e+a+n,[r,o]=l(s,i.getStartPositionOfChar(s));0===a?(t.push(o),t.push(r)):(0===n&&t.unshift(o),n===h-1&&t.push(r))}catch(t){break}e+=s-1;try{let s=e+n,a=i.getEndPositionOfChar(s),[r,o]=l(s,a);t.unshift(o),t.unshift(r)}catch(t){break}}t.length&&t.push(t[0].slice()),e.polygon=t}return e}function L(t){let e=t.labelOptions,i=t.point,n=e[i.formatPrefix+"TextPath"]||e.textPath;n&&!e.useHTML&&(this.setTextPath(i.getDataLabelPath?.(this)||i.graphic,n),i.dataLabelPath&&!n.enabled&&(i.dataLabelPath=i.dataLabelPath.destroy()))}let{sankey:M}=a().seriesTypes,{css:v,crisp:w,extend:N,isNumber:O,merge:P,pick:T}=n();({compose:function(t){c(t,"afterGetBBox",A),c(t,"beforeAddingDataLabel",L);let e=t.prototype;e.setTextPath||(e.setTextPath=x)}}).compose(u());class W extends M{alignDataLabel(t,e,i){let n=t.shapeArgs,s=e.text;if(i.useHTML&&n){let t=this.options.borderWidth+2*this.options.dataLabels.padding,i=n.width||0,a=n.height||0;this.chart.inverted&&(i=a,a=n.width||0),a-=t,i-=t,s.foreignObject?.attr({x:0,y:0,width:i,height:a}),v(s.element.parentNode,{width:i+"px",height:a+"px"}),v(s.element,{left:0,top:0,width:"100%",height:"100%",overflow:"hidden"}),e.getBBox=()=>({width:i,height:a,x:0,y:0}),e.width=i,e.height=a}super.alignDataLabel.apply(this,arguments)}createNode(t){let e=super.createNode.call(this,t);return e.getSum=()=>1,e}pointAttribs(t,e){let i=M.prototype.pointAttribs.call(this,t,e),n=t.isNode?t.level:t.fromNode.level,s=this.mapOptionsToLevel[n||0]||{},a=t.options,r=s.states&&s.states[e]||{},o=T(r.borderRadius,a.borderRadius,s.borderRadius,this.options.borderRadius),h=T(r.linkColor,a.linkColor,s.linkColor,this.options.linkColor,r.link&&r.link.color,a.link&&a.link.color,s.link&&s.link.color,this.options.link&&this.options.link.color),l=T(r.linkLineWidth,a.linkLineWidth,s.linkLineWidth,this.options.linkLineWidth,r.link&&r.link.lineWidth,a.link&&a.link.lineWidth,s.link&&s.link.lineWidth,this.options.link&&this.options.link.lineWidth),d=T(r.linkOpacity,a.linkOpacity,s.linkOpacity,this.options.linkOpacity,r.link&&r.link.linkOpacity,a.link&&a.link.linkOpacity,s.link&&s.link.linkOpacity,this.options.link&&this.options.link.linkOpacity);return t.isNode?O(o)&&(i.r=o):(i.stroke=h,i["stroke-width"]=l,i.opacity=d,delete i.fill),i}translateLink(t){let e=this.chart,i=this.options,n=t.fromNode,s=t.toNode,a=T(i.linkLineWidth,i.link.lineWidth,0),r=T(i.link.offset,.5),o=T(t.options.link&&t.options.link.type,i.link.type);if(n.shapeArgs&&s.shapeArgs){let h=i.hangingIndent,l="right"===i.hangingSide,d=s.options.offset,g=/%$/.test(d)&&parseInt(d,10),u=e.inverted,f=w((n.shapeArgs.x||0)+(n.shapeArgs.width||0),a),c=w((n.shapeArgs.y||0)+(n.shapeArgs.height||0)/2,a),y=w(s.shapeArgs.x||0,a),k=w((s.shapeArgs.y||0)+(s.shapeArgs.height||0)/2,a),m;if(u&&(f-=n.shapeArgs.width||0,y+=s.shapeArgs.width||0),m=this.colDistance?w(y+(u?1:-1)*(this.colDistance-this.nodeWidth)/2,a):w((y+f)/2,a),g&&(g>=50||g<=-50)&&(m=y=w(y+(u?-.5:.5)*(s.shapeArgs.width||0),a),k=s.shapeArgs.y||0,g>0&&(k+=s.shapeArgs.height||0)),s.hangsFrom===n&&(e.inverted?(c=l?w((n.shapeArgs.y||0)+h/2,a):w((n.shapeArgs.y||0)+(n.shapeArgs.height||0)-h/2,a),k=l?(s.shapeArgs.y||0)+h/2:(s.shapeArgs.y||0)+(s.shapeArgs.height||0)):c=w((n.shapeArgs.y||0)+h/2,a),m=y=w((s.shapeArgs.x||0)+(s.shapeArgs.width||0)/2,a)),t.plotX=m,t.plotY=(c+k)/2,t.shapeType="path","straight"===o)t.shapeArgs={d:[["M",f,c],["L",y,k]]};else if("curved"===o){let e=Math.abs(y-f)*r*(u?-1:1);t.shapeArgs={d:[["M",f,c],["C",f+e,c,y-e,k,y,k]]}}else t.shapeArgs={d:p.applyRadius([["M",f,c],["L",m,c],["L",m,k],["L",y,k]],T(i.linkRadius,i.link.radius))};t.dlBox={x:(f+y)/2,y:(c+k)/2,height:a,width:0}}}translateNode(t,e){super.translateNode(t,e);let i=this.chart,n=this.options,s=Math.max(Math.round(t.getSum()*this.translationFactor),n.minLinkWidth||0),a="right"===n.hangingSide,r=n.hangingIndent||0,o=n.hangingIndentTranslation,h=n.minNodeLength||10,l=Math.round(this.nodeWidth),d=t.shapeArgs,p=i.inverted?-1:1,g=t.hangsFrom;if(g){if("cumulative"===o)for(d.height-=r,i.inverted&&!a&&(d.y-=p*r);g;)d.y+=(a?1:p)*r,g=g.hangsFrom;else if("shrink"===o)for(;g&&d.height>r+h;)d.height-=r,(!i.inverted||a)&&(d.y+=r),g=g.hangsFrom;else d.height-=r,(!i.inverted||a)&&(d.y+=r)}t.nodeHeight=i.inverted?d.width:d.height,t.shapeArgs&&!t.hangsFrom&&(t.shapeArgs=P(t.shapeArgs,{x:(t.shapeArgs.x||0)+l/2-(t.shapeArgs.width||0)/2,y:(t.shapeArgs.y||0)+s/2-(t.shapeArgs.height||0)/2}))}drawDataLabels(){let t=this.options.dataLabels;if(t.linkTextPath&&t.linkTextPath.enabled)for(let t of this.points)t.options.dataLabels=P(t.options.dataLabels,{useHTML:!1});super.drawDataLabels()}}W.defaultOptions=P(M.defaultOptions,{borderColor:"#666666",borderRadius:3,link:{color:"#666666",lineWidth:1,radius:10,type:"default"},borderWidth:1,dataLabels:{nodeFormatter:function(){let t={width:"100%",height:"100%",display:"flex","flex-direction":"row","align-items":"center","justify-content":"center"},e={"max-height":"100%","border-radius":"50%"},i={width:"100%",padding:0,"text-align":"center","white-space":"normal"};function n(t){return Object.keys(t).reduce(function(e,i){return e+i+":"+t[i]+";"},'style="')+'"'}let{description:s,image:a,title:r}=this.point;a&&(e["max-width"]="30%",i.width="70%"),this.series.chart.renderer.forExport&&(t.display="block",i.position="absolute",i.left=a?"30%":0,i.top=0);let o="<div "+n(t)+">";return a&&(o+='<img src="'+a+'" '+n(e)+">"),o+="<div "+n(i)+">",this.point.name&&(o+="<h4 "+n({margin:0})+">"+this.point.name+"</h4>"),r&&(o+="<p "+n({margin:0})+">"+(r||"")+"</p>"),s&&(o+="<p "+n({opacity:.75,margin:"5px"})+">"+s+"</p>"),o+="</div></div>"},style:{fontWeight:"normal",fontSize:"0.9em",textAlign:"left"},useHTML:!0,linkTextPath:{attributes:{startOffset:"95%",textAnchor:"end"}}},hangingIndent:20,hangingIndentTranslation:"inherit",hangingSide:"left",minNodeLength:10,nodeWidth:50,tooltip:{nodeFormat:"{point.name}<br>{point.title}<br>{point.description}"}}),N(W.prototype,{pointClass:d}),a().registerSeriesType("organization",W);let F=n();export{F as default};