/**
 * Highstock JS v12.5.0 (2026-01-12)
 * @module highcharts/modules/pointandfigure
 * @requires highcharts
 * @requires highcharts/modules/stock
 *
 * Point and figure series type for Highcharts Stock
 *
 * (c) 2010-2026 Highsoft AS
 * Author: Kamil Musialowski
 *
 * A commercial license may be required depending on use.
 * See www.highcharts.com/license
 */import*as e from"../highcharts.js";var t,r={};r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var s in t)r.o(t,s)&&!r.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);let s=e.default;var o=r.n(s);let i=e.default.SeriesRegistry;var a=r.n(i);let{seriesTypes:{scatter:{prototype:{pointClass:l}}}}=a(),n=class extends l{resolveMarker(){let e=this.series.options;this.marker=this.options.marker=this.upTrend?e.markerUp:e.marker,this.color=this.options.marker.lineColor}resolveColor(){super.resolveColor(),this.resolveMarker()}getClassName(){return super.getClassName.call(this)+(this.upTrend?" highcharts-point-up":" highcharts-point-down")}},p=e.default.RendererRegistry;var h=r.n(p);let u=[];function d(e,t,r,s){return[["M",e,t],["L",e+r,t+s],["M",e+r,t],["L",e,t+s],["Z"]]}(t||(t={})).compose=function(e){-1===u.indexOf(e)&&(u.push(e),e.prototype.symbols.cross=d);let t=h().getRendererType();u.indexOf(t)&&u.push(t)};let c=t,{composed:f}=o(),{scatter:g,column:{prototype:m}}=a().seriesTypes,{extend:y,merge:b,pushUnique:x,isNumber:k,relativeLength:C}=o();class M extends g{constructor(){super(...arguments),this.allowDG=!1}static compose(e){x(f,"pointandfigure")&&c.compose(e)}init(){super.init.apply(this,arguments),this.pnfDataGroups=[]}getProcessedData(){let e;if(!this.pnfDataGroups)return{modified:this.dataTable.getModified(),cropped:!1,cropStart:0,closestPointRange:1};let t=this.dataTable.getModified(),r=this.options,s=this.getColumn("x",!0),o=this.getColumn("y",!0),i=r.boxSize,a=k(i)?i:C(i,o[0]),l=this.pnfDataGroups,n=a*r.reversalAmount;function p(e,t,r){let s=l[l.length-1],o=t?1:-1,i=Math.floor(o*(e-r)/a);for(let e=1;e<=i;e++){let t=r+a*e*o;s.y.push(t)}}if(this.calculatedBoxSize=a,this.isDirtyData||0===l.length){this.pnfDataGroups.length=0;for(let t=0;t<o.length;t++){let r=s[t],i=o[t],n=o[0];if(i-n>=a){e=!0,l.push({x:r,y:[i],upTrend:e});break}if(n-i>=a){e=!1,l.push({x:r,y:[i],upTrend:e});break}}o.forEach((t,r)=>{let o,i=s[r],h=(o=l[l.length-1].y)[o.length-1];e&&(t-h>=a&&p(t,e,h),h-t>=n&&(e=!1,l.push({x:i,y:[],upTrend:e}),p(t,e,h))),!e&&(h-t>=a&&p(t,e,h),t-h>=n&&(e=!0,l.push({x:i,y:[],upTrend:e}),p(t,e,h)))})}let h=[],u=[],d=[];return l.forEach(e=>{let t=e.x,r=e.upTrend;e.y.forEach(e=>{u.push(t),d.push(e),h.push({x:t,y:e,upTrend:r})})}),t.setColumn("x",u),t.setColumn("y",d),this.pnfDataGroups=l,this.processedData=h,{modified:t,cropped:!1,cropStart:0,closestPointRange:1}}markerAttribs(e){let t=this.options,r={},s=e.pos();return r.width=this.markerWidth,r.height=this.markerHeight,s&&r.width&&r.height&&(r.x=s[0]-Math.round(r.width)/2,r.y=s[1]-Math.round(r.height)/2),t.crisp&&r.x&&(r.x=Math.floor(r.x)),r}translate(){let e=this.getColumnMetrics(),t=this.calculatedBoxSize;this.markerWidth=e.width+e.paddedWidth+e.offset,this.markerHeight=this.yAxis.toPixels(0)-this.yAxis.toPixels(t),super.translate()}}M.defaultOptions=b(g.defaultOptions,{boxSize:"1%",reversalAmount:3,tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b> {series.name}</b><br/>Close: {point.y:.2f}<br/>',headerFormat:""},turboThreshold:0,groupPadding:.2,pointPadding:.1,pointRange:null,dataGrouping:{enabled:!1},markerUp:{symbol:"cross",lineColor:"#00FF00",lineWidth:2},marker:{symbol:"circle",fillColor:"transparent",lineColor:"#FF0000",lineWidth:2},legendSymbol:"lineMarker"}),y(M.prototype,{takeOrdinalPosition:!0,pnfDataGroups:[],getColumnMetrics:m.getColumnMetrics,pointClass:n,sorted:!0}),a().registerSeriesType("pointandfigure",M);let v=o();M.compose(v.Renderer);let D=o();export{D as default};