UNPKG

highcharts

Version:
15 lines 9.84 kB
/** * Highcharts JS v13.0.1 (2026-08-17) * Organization chart series type * @module highcharts/modules/organization * @requires highcharts * @requires highcharts/modules/sankey * * (c) 2019-2026 Highsoft AS * Author: Torstein Hønsi * * A commercial license may be required depending on use, * see www.highcharts.com/license */import*as t from"../highcharts.js";let e={};e.n=t=>{let i=t&&t.__esModule?()=>t.default:()=>t;return e.d(i,{a:i}),i},e.d=(t,i)=>{if(Array.isArray(i))for(var s=0;s<i.length;){var n=i[s++],r=i[s++];e.o(t,n)?0===r&&s++:0===r?Object.defineProperty(t,n,{enumerable:!0,value:i[s++]}):Object.defineProperty(t,n,{enumerable:!0,get:r})}else 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 s,n=e.n(i);let r=t.default.SeriesRegistry;var a=e.n(r);let{sankey:{prototype:{pointClass:o}}}=a().seriesTypes,h=class extends o{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(!(0,i.defined)(t.options.column)&&0!==t.linksTo.length&&e&&"hanging"===e.options.layout){let s=-1,n;t.options.layout=(0,i.pick)(t.options.layout,"hanging"),t.hangsFrom=e,(0,i.find)(e.linksFrom,(e,i)=>{let n=e.toNode===t;return n&&(s=i),n});for(let i=0;i<e.linksFrom.length;++i)(n=e.linksFrom[i]).toNode.id===t.id?i=e.linksFrom.length:s+=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)+s}}};function l(t,e){let i=[];for(let s=0;s<t.length;s++){let n=t[s][1],r=t[s][2];if("number"==typeof n&&"number"==typeof r)if(0===s)i.push(["M",n,r]);else if(s===t.length-1)i.push(["L",n,r]);else if(e){let a=t[s-1],o=t[s+1];if(a&&o){let t=a[1],s=a[2],h=o[1],l=o[2];if("number"==typeof t&&"number"==typeof h&&"number"==typeof s&&"number"==typeof l&&t!==h&&s!==l){let a=t<h?1:-1,o=s<l?1:-1;i.push(["L",n-a*Math.min(Math.abs(n-t),e),r-o*Math.min(Math.abs(r-s),e)],["C",n,r,n,r,n+a*Math.min(Math.abs(n-h),e),r+o*Math.min(Math.abs(r-l),e)])}}}else i.push(["L",n,r])}return i}let d=t.default.SVGElement;var p=e.n(d);let{composed:g,deg2rad:u}=n(),{sankey:c}=a().seriesTypes;s=p(),(0,i.pushUnique)(g,"TextPath")&&((0,i.addEvent)(s,"afterGetBBox",function(t){let e=t.bBox,i=this.element?.querySelector("textPath");if(i){let t=[],{b:s,h:n}=this.renderer.fontMetrics(this.element),r=n-s,a=RegExp('(<tspan>|<tspan(?!\\sclass="highcharts-br")[^>]*>|<\\/tspan>)',"g"),o=i.innerHTML.replace(a,"").split(/<tspan class="highcharts-br"[^>]*>/),h=o.length,l=(t,e)=>{let{x:n,y:a}=e,o=(i.getRotationOfChar(t)-90)*u,h=Math.cos(o),l=Math.sin(o);return[[n-r*h,a-r*l],[n+s*h,a+s*l]]};for(let e=0,s=0;s<h;s++){let n=o[s].length;for(let r=0;r<n;r+=5)try{let n=e+r+s,[a,o]=l(n,i.getStartPositionOfChar(n));0===r?(t.push(o),t.push(a)):(0===s&&t.unshift(o),s===h-1&&t.push(a))}catch{break}e+=n-1;try{let n=e+s,r=i.getEndPositionOfChar(n),[a,o]=l(n,r);t.unshift(o),t.unshift(a)}catch{break}}t.length&&t.push(t[0].slice()),e.polygon=t}return e}),(0,i.addEvent)(s,"beforeAddingDataLabel",function(t){let e=t.labelOptions,i=t.point,s=e[i.formatPrefix+"TextPath"]||e.textPath;s&&!e.useHTML&&(this.setTextPath(i.getDataLabelPath?.(this)||i.graphic,s),i.dataLabelPath&&!s.enabled&&(i.dataLabelPath=i.dataLabelPath.destroy()))}),s.prototype.setTextPath=s.prototype.setTextPath??function(t,e){let s=this.renderer.url,n=this.text||this,r=n.textPath,{attributes:a,enabled:o}=(0,i.merge)({enabled:!0,attributes:{dy:-5,startOffset:"50%",textAnchor:"middle"}},e);if(t=t||r&&r.path,r?.undo(),t&&o){let e=(0,i.addEvent)(n,"afterModifyTree",e=>{if(t&&o){let r=t.attr("id");r||t.attr("id",r=(0,i.uniqueKey)());let o={x:0,y:0};(0,i.defined)(a.dx)&&(o.dx=a.dx,delete a.dx),(0,i.defined)(a.dy)&&(o.dy=a.dy,delete a.dy),n.attr(o),this.attr({transform:""}),this.box&&(this.box=this.box.destroy());let h=e.nodes.slice(0);e.nodes.length=0,e.nodes[0]={tagName:"textPath",attributes:(0,i.extend)(a,{"text-anchor":a.textAnchor,href:`${s}#${r}`}),children:h}}});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});class f extends c{alignDataLabel(t,e,s){let n=t.shapeArgs,r=e.text;if(s.useHTML&&n){let t=(0,i.splat)(this.options.dataLabels.padding||0),s=this.options.borderWidth||0,a=s+2*t[3%t.length],o=s+2*t[0%t.length],h=n.width||0,l=n.height||0;this.chart.inverted&&(h=l,l=n.width||0),h-=a,l-=o,r.foreignObject?.attr({x:0,y:0,width:h,height:l}),(0,i.css)(r.element.parentNode,{width:h+"px",height:l+"px"}),(0,i.css)(r.element,{left:0,top:0,width:"100%",height:"100%",overflow:"hidden"}),e.getBBox=()=>({width:h,height:l,x:0,y:0}),e.width=h,e.height=l}super.alignDataLabel.apply(this,arguments)}createNode(t){let e=super.createNode.call(this,t);return e.getSum=()=>1,e}pointAttribs(t,e){let s=c.prototype.pointAttribs.call(this,t,e),n=t.isNode?t.level:t.fromNode.level,r=this.mapOptionsToLevel[n||0]||{},a=t.options,o=r.states?.[e||"normal"]||{},h=o.borderRadius??a.borderRadius??r.borderRadius??this.options.borderRadius,l=o.linkColor??a.linkColor??r.linkColor??this.options.linkColor??o.link?.color??a.link?.color??r.link?.color??this.options.link?.color,d=o.linkLineWidth??a.linkLineWidth??r.linkLineWidth??this.options.linkLineWidth??o.link?.lineWidth??a.link?.lineWidth??r.link?.lineWidth??this.options.link?.lineWidth,p=o.linkOpacity??a.linkOpacity??r.linkOpacity??this.options.linkOpacity??o.link?.linkOpacity??a.link?.linkOpacity??r.link?.linkOpacity??this.options.link?.linkOpacity;return t.isNode?(0,i.isNumber)(h)&&(s.r=h):(s.stroke=l,s["stroke-width"]=d,s.opacity=p,delete s.fill),s}translateLink(t){let{chart:e,options:s}=this,n=t.fromNode,r=t.toNode,a=s.linkLineWidth??s.link.lineWidth??0,o=s.link.offset??.5,h=t.options.link?.type??s.link.type;if(n.shapeArgs&&r.shapeArgs){let d=s.hangingIndent||0,p="right"===s.hangingSide,g=r.options.offset,u=/%$/.test(g)&&parseInt(g,10),c=e.inverted,f=(0,i.crisp)((n.shapeArgs.x||0)+(n.shapeArgs.width||0),a),y=(0,i.crisp)((n.shapeArgs.y||0)+(n.shapeArgs.height||0)/2,a),m=(0,i.crisp)(r.shapeArgs.x||0,a),b=(0,i.crisp)((r.shapeArgs.y||0)+(r.shapeArgs.height||0)/2,a),x;if(c&&(f-=n.shapeArgs.width||0,m+=r.shapeArgs.width||0),x=this.colDistance?(0,i.crisp)(m+(c?1:-1)*(this.colDistance-this.nodeWidth)/2,a):(0,i.crisp)((m+f)/2,a),u&&(u>=50||u<=-50)&&(x=m=(0,i.crisp)(m+(c?-.5:.5)*(r.shapeArgs.width||0),a),b=r.shapeArgs.y||0,u>0&&(b+=r.shapeArgs.height||0)),r.hangsFrom===n&&(e.inverted?(y=p?(0,i.crisp)((n.shapeArgs.y||0)+d/2,a):(0,i.crisp)((n.shapeArgs.y||0)+(n.shapeArgs.height||0)-d/2,a),b=p?(r.shapeArgs.y||0)+d/2:(r.shapeArgs.y||0)+(r.shapeArgs.height||0)):y=(0,i.crisp)((n.shapeArgs.y||0)+d/2,a),x=m=(0,i.crisp)((r.shapeArgs.x||0)+(r.shapeArgs.width||0)/2,a)),t.plotX=x,t.plotY=(y+b)/2,t.shapeType="path","straight"===h)t.shapeArgs={d:[["M",f,y],["L",m,b]]};else if("curved"===h){let e=Math.abs(m-f)*o*(c?-1:1);t.shapeArgs={d:[["M",f,y],["C",f+e,y,m-e,b,m,b]]}}else t.shapeArgs={d:l([["M",f,y],["L",x,y],["L",x,b],["L",m,b]],s.linkRadius??s.link.radius)};t.dlBox={x:(f+m)/2,y:(y+b)/2,height:a,width:0}}}translateNode(t,e){super.translateNode(t,e);let s=this.chart,n=this.options,r=Math.max(Math.round(t.getSum()*this.translationFactor),n.minLinkWidth||0),a="right"===n.hangingSide,o=n.hangingIndent||0,h=n.hangingIndentTranslation,l=n.minNodeLength||10,d=Math.round(this.nodeWidth),p=t.shapeArgs,g=s.inverted?-1:1,u=t.hangsFrom;if(u)if("cumulative"===h)for(p.height-=o,s.inverted&&!a&&(p.y-=g*o);u;)p.y+=(a?1:g)*o,u=u.hangsFrom;else if("shrink"===h)for(;u&&p.height>o+l;)p.height-=o,(!s.inverted||a)&&(p.y+=o),u=u.hangsFrom;else p.height-=o,(!s.inverted||a)&&(p.y+=o);t.nodeHeight=s.inverted?p.width:p.height,t.shapeArgs&&!t.hangsFrom&&(t.shapeArgs=(0,i.merge)(t.shapeArgs,{x:(t.shapeArgs.x||0)+d/2-(t.shapeArgs.width||0)/2,y:(t.shapeArgs.y||0)+r/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=(0,i.merge)(t.options.dataLabels,{useHTML:!1});super.drawDataLabels()}}f.defaultOptions=(0,i.merge)(c.defaultOptions,{borderColor:"var(--highcharts-neutral-color-60)",borderRadius:3,link:{color:"var(--highcharts-neutral-color-60)",lineWidth:1,radius:10,type:"orthogonal"},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 s(t){return Object.keys(t).reduce(function(e,i){return e+i+":"+t[i]+";"},'style="')+'"'}let{description:n,image:r,title:a}=this.point;r&&(e["max-width"]="30%",i.width="70%"),this.series.chart.renderer.forExport&&(t.display="block",i.position="absolute",i.left=r?"30%":0,i.top=0);let o="<div "+s(t)+">";return r&&(o+='<img src="'+r+'" '+s(e)+">"),o+="<div "+s(i)+">",this.point.name&&(o+="<h4 "+s({margin:0})+">"+this.point.name+"</h4>"),a?o+="<p "+s({margin:0})+">"+a+"</p>":o+=`<p aria-hidden="true" style="line-height:0;margin:1px;font-size:1px;opacity:0" >.</p>`,n&&(o+="<p "+s({opacity:.75,margin:"5px"})+">"+n+"</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}"}}),(0,i.extend)(f.prototype,{pointClass:h}),a().registerSeriesType("organization",f);let y=n();export{y as default};