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