UNPKG

highcharts

Version:
13 lines 3.52 kB
/** * Highcharts JS v13.0.1 (2026-08-17) * @module highcharts/modules/variable-pie * @requires highcharts * * Variable Pie module for Highcharts * * (c) 2010-2026 Highsoft AS * Author: Grzegorz Blachliński * * 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 a=0;a<i.length;){var r=i[a++],n=i[a++];e.o(t,r)?0===n&&a++:0===n?Object.defineProperty(t,r,{enumerable:!0,value:i[a++]}):Object.defineProperty(t,r,{enumerable:!0,get:n})}else for(var r in i)e.o(i,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:i[r]})},e.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);let i=t.default;var a=e.n(i);let r=t.default.SeriesRegistry;var n=e.n(r);let{pie:s}=n().seriesTypes;class l extends s{calculateExtremes(){let t,e,a=this.chart,r=a.plotWidth,n=a.plotHeight,s=this.options,l=2*(s.slicedOffset||0),o=[...this.getColumn("z",!1,!0)],h=Math.min(r,n)-l,p={},d=this.center||this.getCenter();for(let t of["minPointSize","maxPointSize"]){let e=s[t],i=/%$/.test(e);e=parseInt(e,10),p[t]=i?h*e/100:2*e}this.minPxSize=d[3]+p.minPointSize,this.maxPxSize=(0,i.clamp)(d[2],d[3]+p.minPointSize,p.maxPointSize),o.length&&(t=(0,i.pick)(s.zMin,(0,i.arrayMin)(o.filter(this.zValEval))),e=(0,i.pick)(s.zMax,(0,i.arrayMax)(o.filter(this.zValEval))),this.getRadii(t,e,this.minPxSize,this.maxPxSize))}getRadii(t,e,i,a){let r,n,s,l=[...this.getColumn("z",!1,!0)],o=[],h="radius"!==this.options.sizeBy,p=e-t;for(let d=0;d<l.length;d++)(n=this.zValEval(l[d])?l[d]:t)<=t?s=i/2:n>=e?s=a/2:(r=p>0?(n-t)/p:.5,h&&(r=Math.sqrt(r)),s=Math.ceil(i+r*(a-i))/2),o.push(s);this.radii=o}redraw(){this.center=null,super.redraw()}getDataLabelPosition(t,e){let{center:i,options:a}=this,r=t.angle||0,n=this.radii[t.index],s=i[0]+Math.cos(r)*n,l=i[1]+Math.sin(r)*n,o=Math.min((a.slicedOffset||0)+(a.borderWidth||0),e/5);return{distance:e,natural:{x:s+Math.cos(r)*e,y:l+Math.sin(r)*e},computed:{},alignment:t.half?"right":"left",connectorPosition:{breakAt:{x:s+Math.cos(r)*o,y:l+Math.sin(r)*o},touchingSliceAt:{x:s,y:l}}}}translate(t){this.generatePoints();let e=this.options,a=e.slicedOffset,r=e.startAngle||0,n=Math.PI/180*(r-90),s=Math.PI/180*((0,i.pick)(e.endAngle,r+360)-90),l=s-n,o=this.points,h=e.ignoreHiddenPoint,p=0,d,c,M,u,f,g,m;this.startAngleRad=n,this.endAngleRad=s,this.calculateExtremes(),t||(this.center=t=this.getCenter());for(let e=0;e<o.length;e++)g=o[e],m=this.radii[e],d=n+p*l,(!h||g.visible)&&(p+=g.percentage/100),c=n+p*l,g.shapeType="arc",g.shapeArgs={x:t[0],y:t[1],r:m,innerR:t[3]/2,start:Math.round(1e3*d)/1e3,end:Math.round(1e3*c)/1e3},(M=(c+d)/2)>1.5*Math.PI?M-=2*Math.PI:M<-Math.PI/2&&(M+=2*Math.PI),g.slicedTranslation={translateX:Math.round(Math.cos(M)*a),translateY:Math.round(Math.sin(M)*a)},u=Math.cos(M)*t[2]/2,f=Math.sin(M)*t[2]/2,g.tooltipPos=[t[0]+.7*u,t[1]+.7*f],g.half=+(M<-Math.PI/2||M>Math.PI/2),g.angle=M;(0,i.fireEvent)(this,"afterTranslate")}zValEval(t){return!("number"!=typeof t||isNaN(t))||null}}l.defaultOptions=(0,i.merge)(s.defaultOptions,{minPointSize:"10%",maxPointSize:"100%",zMin:void 0,zMax:void 0,sizeBy:"area",tooltip:{pointFormat:'<span style="color:{point.color}">●</span> {series.name}<br/>Value: {point.y}<br/>Size: {point.z}<br/>'}}),(0,i.extend)(l.prototype,{pointArrayMap:["y","z"],parallelArrays:["x","y","z"]}),n().registerSeriesType("variablepie",l);let o=a();export{o as default};