UNPKG

highcharts

Version:
11 lines 9.11 kB
/** * Highcharts JS v13.0.1 (2026-08-17) * @module highcharts/modules/series-label * @requires highcharts * * (c) 2009-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 r=t&&t.__esModule?()=>t.default:()=>t;return e.d(r,{a:r}),r},e.d=(t,r)=>{if(Array.isArray(r))for(var o=0;o<r.length;){var a=r[o++],i=r[o++];e.o(t,a)?0===i&&o++:0===i?Object.defineProperty(t,a,{enumerable:!0,value:r[o++]}):Object.defineProperty(t,a,{enumerable:!0,get:i})}else for(var a in r)e.o(r,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:r[a]})},e.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);let r=t.default;var o=e.n(r);let a=t.default.Templating;var i=e.n(a);let n={enabled:!0,connectorAllowed:!1,connectorNeighbourDistance:24,format:void 0,formatter:void 0,minFontSize:null,maxFontSize:null,onArea:null,style:{fontSize:"0.8em",fontWeight:"bold"},useHTML:!1,boxesToAvoid:[]};function h(t,e,r,o,a,i){let n=(i-e)*(r-t)-(o-e)*(a-t);return n>0||!(n<0)}function l(t,e,r,o,a,i,n,l){return h(t,e,a,i,n,l)!==h(r,o,a,i,n,l)&&h(t,e,r,o,a,i)!==h(t,e,r,o,n,l)}let{format:s}=i(),{setOptions:c}=o(),{composed:p}=o(),{boxIntersectLine:d,intersectRect:u}={boxIntersectLine:function(t,e,r,o,a,i,n,h){return l(t,e,t+r,e,a,i,n,h)||l(t+r,e,t+r,e+o,a,i,n,h)||l(t,e+o,t+r,e+o,a,i,n,h)||l(t,e,t,e+o,a,i,n,h)},intersectRect:function(t,e){return!(e.left>t.right||e.right<t.left||e.top>t.bottom||e.bottom<t.top)}};function f(t,e,o,a,i){let n=t.chart,h=t.options.label||{},l=(0,r.pick)(h.onArea,!!t.area),s=l||h.connectorAllowed,c=n.boxesToAvoid,p=Number.MAX_VALUE,f=Number.MAX_VALUE,x,b,m,g,y,X,M;for(X=0;c&&X<c.length;X+=1)if(u(c[X],{left:e,right:e+a.width,top:o,bottom:o+a.height}))return!1;for(X=0;X<n.series.length;X+=1){let r=n.series[X],c=r.interpolatedPoints&&[...r.interpolatedPoints];if(r.visible&&c){let u=n.plotHeight/10;for(let t=n.plotTop;t<=n.plotTop+n.plotHeight;t+=u)c.unshift({chartX:n.plotLeft,chartY:t}),c.push({chartX:n.plotLeft+n.plotWidth,chartY:t});for(M=1;M<c.length;M+=1){if(c[M].chartX>=e-16&&c[M-1].chartX<=e+a.width+16){if(d(e,o,a.width,a.height,c[M-1].chartX,c[M-1].chartY,c[M].chartX,c[M].chartY))return!1;t===r&&!m&&i&&(m=d(e-16,o-16,a.width+32,a.height+32,c[M-1].chartX,c[M-1].chartY,c[M].chartX,c[M].chartY))}(s||m)&&(t!==r||l)&&(p=Math.min(p,(g=e+a.width/2-c[M].chartX)*g+(y=o+a.height/2-c[M].chartY)*y))}if(!l&&s&&t===r&&(i&&!m||p<Math.pow(h.connectorNeighbourDistance||1,2))){for(M=1;M<c.length;M+=1)(x=Math.min(Math.pow(e+a.width/2-c[M].chartX,2)+Math.pow(o+a.height/2-c[M].chartY,2),Math.pow(e-c[M].chartX,2)+Math.pow(o-c[M].chartY,2),Math.pow(e+a.width-c[M].chartX,2)+Math.pow(o-c[M].chartY,2),Math.pow(e+a.width-c[M].chartX,2)+Math.pow(o+a.height-c[M].chartY,2),Math.pow(e-c[M].chartX,2)+Math.pow(o+a.height-c[M].chartY,2)))<f&&(f=x,b=c[M]);m=!0}}}return(!i||!!m)&&{x:e,y:o,weight:p-(b?f:0),connectorPoint:b}}function x(t){if(this.renderer){let e=this,o=(0,r.animObject)(e.renderer.globalAnimation).duration;e.labelSeries=[],e.labelSeriesMaxSum=0,e.seriesLabelTimer&&(0,r.internalClearTimeout)(e.seriesLabelTimer),e.series.forEach(function(a){let i=a.options.label||{},n=a.labelBySeries,h=n&&n.closest,l=a.getColumn("y");i.enabled&&a.visible&&(a.graph||a.area)&&!a.boosted&&e.labelSeries&&(e.labelSeries.push(a),i.minFontSize&&i.maxFontSize&&l.length&&(a.sum=l.reduce((t,e)=>(t||0)+(e||0),0),e.labelSeriesMaxSum=Math.max(e.labelSeriesMaxSum||0,a.sum||0)),"load"===t.type&&(o=Math.max(o,(0,r.animObject)(a.options.animation).duration)),h&&(void 0!==h[0].plotX?n.animate({x:h[0].plotX+h[1],y:h[0].plotY+h[2]}):n.attr({opacity:0})))}),e.seriesLabelTimer=(0,r.syncTimeout)(function(){let t,o;e.series&&e.labelSeries&&(e.boxesToAvoid=[],t=e.labelSeries||[],o=e.boxesToAvoid,e.series.forEach(t=>(t.points||[]).forEach(e=>(e.dataLabels||[]).forEach(e=>{let{width:r,height:a}=e.getBBox(),i=(e.translateX||0)+(t.xAxis?t.xAxis.pos:t.chart.plotLeft),n=(e.translateY||0)+(t.yAxis?t.yAxis.pos:t.chart.plotTop);o.push({left:i,top:n,right:i+r,bottom:n+a})}))),t.forEach(function(t){let e=t.options.label||{};t.interpolatedPoints=function(t){let e,o,a,i,n;if(!t.xAxis&&!t.yAxis)return;let h=t.points,l=[],s=t.graph||t.area,c=s&&s.element,p=t.chart.inverted,d=t.xAxis,u=t.yAxis,f=p?u.pos:d.pos,x=p?d.pos:u.pos,b=p?d.len:u.len,m=p?u.len:d.len,g=t.options.label||{},y=(0,r.pick)(g.onArea,!!t.area),X=u.getThreshold(t.options.threshold),M={},A=p?"chartCenterX":"chartCenterY";function Y(t){let e=Math.round((t.plotX||0)/8)+","+Math.round((t.plotY||0)/8);M[e]||(M[e]=1,l.push(t))}if(t.getPointSpline&&c&&c.getPointAtLength&&!y&&h.length<(t.chart.plotSizeX||0)/16){let t=s.toD&&s.attr("d");for(s.toD&&s.attr({d:s.toD}),a=c.getTotalLength(),e=0;e<a;e+=16){let t=c.getPointAtLength(e),r=p?m-t.y:t.x,o=p?b-t.x:t.y;Y({chartX:f+r,chartY:x+o,plotX:r,plotY:o})}t&&s.attr({d:t});let r=h[h.length-1].pos();Y({chartX:f+(r?.[0]||0),chartY:x+(r?.[1]||0)})}else{let t;for(e=0,a=h.length;e<a;e+=1){let a=h[e],[l,s]=a.pos()||[],{plotHigh:c}=a;if((0,r.isNumber)(l)&&(0,r.isNumber)(s)){let e={plotX:l,plotY:s,chartX:f+l,chartY:x+s};if(y&&(c&&(e.plotY=c,e.chartY=x+c),p?e.chartCenterX=f+m-((c||a.plotY||0)+(0,r.pick)(a.yBottom,X))/2:e.chartCenterY=x+((c||s)+(0,r.pick)(a.yBottom,X))/2),t&&(o=Math.max(Math.abs(e.chartX-t.chartX),Math.abs(e.chartY-t.chartY)))>16&&o<999)for(n=1,i=Math.ceil(o/16);n<i;n+=1)Y({chartX:t.chartX+(e.chartX-t.chartX)*(n/i),chartY:t.chartY+(e.chartY-t.chartY)*(n/i),[A]:(t[A]||0)+((e[A]||0)-(t[A]||0))*(n/i),plotX:(t.plotX||0)+(l-(t.plotX||0))*(n/i),plotY:(t.plotY||0)+(s-(t.plotY||0))*(n/i)});Y(e),t=e}}}return l}(t),o.push(...e.boxesToAvoid||[])}),e.series.forEach(function(t){let o=t.options.label;if(!o||!t.xAxis&&!t.yAxis)return;let a="highcharts-color-"+(0,r.pick)(t.colorIndex,"none"),i=!t.labelBySeries,n=o.minFontSize,h=o.maxFontSize,l=e.inverted,c=l?t.yAxis.pos:t.xAxis.pos,p=l?t.xAxis.pos:t.yAxis.pos,d=e.inverted?t.yAxis.len:t.xAxis.len,u=e.inverted?t.xAxis.len:t.yAxis.len,x=t.interpolatedPoints,b=(0,r.pick)(o.onArea,!!t.area),m=[],g=t.getColumn("x"),y,X,M,A,Y,w,S=t.labelBySeries,v,L,T;function P(t,e,o){let a=Math.max(c,(0,r.pick)(L,-1/0)),i=Math.min(c+d,(0,r.pick)(T,1/0));return t>a&&t<=i-o.width&&e>=p&&e<=p+u-o.height}function E(){S&&(t.labelBySeries=S.destroy())}if(b&&!l&&(v=[t.xAxis.toPixels(g[0]),t.xAxis.toPixels(g[g.length-1])],L=Math.min.apply(Math,v),T=Math.max.apply(Math,v)),t.visible&&!t.boosted&&x){if(!S){var B,C,k;let i=t.name;if("string"==typeof o.format?i=s(o.format,t,e):o.formatter&&(i=o.formatter.call(t,t)),t.labelBySeries=S=e.renderer.label(i,0,0,"connector",0,0,o.useHTML).addClass("highcharts-series-label highcharts-series-label-"+t.index+" "+(t.options.className||"")+" "+a),!e.renderer.styledMode){let a="string"==typeof t.color?t.color:"var(--highcharts-neutral-color-60)";S.css((0,r.extend)({color:b?e.renderer.getContrast(a):a},o.style||{})),S.attr({opacity:+!!e.renderer.forExport,stroke:t.color,"stroke-width":1})}n&&h&&S.css({fontSize:(B=t,C=n,k=h,C+(B.sum||0)/(B.chart.labelSeriesMaxSum||0)*(k-C)+"px")}),S.attr({padding:0,zIndex:3}).add()}for((y=S.getBBox()).width=Math.round(y.width),Y=x.length-1;Y>0;Y-=1)b?P(X=(x[Y].chartCenterX??x[Y].chartX)-y.width/2,M=(x[Y].chartCenterY??x[Y].chartY)-y.height/2,y)&&(w=f(t,X,M,y)):(P(X=x[Y].chartX+3,M=x[Y].chartY-y.height-3,y)&&(w=f(t,X,M,y,!0)),w&&m.push(w),P(X=x[Y].chartX+3,M=x[Y].chartY+3,y)&&(w=f(t,X,M,y,!0)),w&&m.push(w),P(X=x[Y].chartX-y.width-3,M=x[Y].chartY+3,y)&&(w=f(t,X,M,y,!0)),w&&m.push(w),P(X=x[Y].chartX-y.width-3,M=x[Y].chartY-y.height-3,y)&&(w=f(t,X,M,y,!0))),w&&m.push(w);if(o.connectorAllowed&&!m.length&&!b)for(X=c+d-y.width;X>=c;X-=16)for(M=p;M<p+u-y.height;M+=16)(A=f(t,X,M,y,!0))&&m.push(A);if(m.length){m.sort((t,e)=>e.weight-t.weight),w=m[0],(e.boxesToAvoid||[]).push({left:w.x,right:w.x+y.width,top:w.y,bottom:w.y+y.height});let o=Math.sqrt(Math.pow(Math.abs(w.x-(S.x||0)),2)+Math.pow(Math.abs(w.y-(S.y||0)),2));if(o&&t.labelBySeries){let a,n={opacity:+!!e.renderer.forExport,x:w.x,y:w.y},h={opacity:1};o<=10&&(h={x:n.x,y:n.y},n={}),i&&(a=(0,r.animObject)(t.options.animation),a.duration*=.2),t.labelBySeries.attr((0,r.extend)(n,{anchorX:w.connectorPoint&&(w.connectorPoint.plotX||0)+c,anchorY:w.connectorPoint&&(w.connectorPoint.plotY||0)+p})).animate(h,a),t.options.kdNow=!0,t.buildKDTree();let l=t.searchPoint({chartX:w.x,chartY:w.y},!0);l&&(S.closest=[l,w.x-(l.plotX||0),w.y-(l.plotY||0)])}}else E()}else E()}),(0,r.fireEvent)(e,"afterDrawSeriesLabels"))},e.renderer.forExport||!o?0:o)}}function b(t,e,o,a,i){let n=i&&i.anchorX,h=i&&i.anchorY,l,s,c=o/2;return(0,r.isNumber)(n)&&(0,r.isNumber)(h)&&(l=[["M",n,h]],(s=e-h)<0&&(s=-a-s),s<o&&(c=n<t+o/2?s:o-s),h>e+a?l.push(["L",t+c,e+a]):h<e?l.push(["L",t+c,e]):n<t?l.push(["L",t,e+a/2]):n>t+o&&l.push(["L",t+o,e+a/2])),l||[]}let m=o();({compose:function(t,e){(0,r.pushUnique)(p,"SeriesLabel")&&((0,r.addEvent)(t,"load",x),(0,r.addEvent)(t,"redraw",x),e.prototype.symbols.connector=b,c({plotOptions:{series:{label:n}}}))}}).compose(m.Chart,m.SVGRenderer);let g=o();export{g as default};