UNPKG

highcharts

Version:
11 lines 6.01 kB
/** * Highcharts JS v12.5.0 (2026-01-12) * @module highcharts/modules/broken-axis * @requires highcharts * * (c) 2009-2026 Highsoft AS * Author: Torstein Honsi * * A commercial license may be required depending on use. * See www.highcharts.com/license */import*as e from"../highcharts.js";var t,i={};i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);let s=e.default;var r=i.n(s);let n=e.default.StackItem;var o=i.n(n);let{addEvent:a,find:l,fireEvent:f,isArray:h,isNumber:k,pick:c}=r();!function(e){function t(){void 0!==this.brokenAxis&&this.brokenAxis.setBreaks(this.options.breaks,!1)}function i(){Object.keys(this.options.breaks?.[0]||{}).length&&(this.options.ordinal=!1)}function s(){let e=this.brokenAxis;if(e?.hasBreaks){let t=this.tickPositions,i=this.tickPositions.info,s=[];for(let i=0;i<t.length;i++)e.isInAnyBreak(t[i])||s.push(t[i]);this.tickPositions=s,this.tickPositions.info=i}}function r(){this.brokenAxis||(this.brokenAxis=new b(this))}function n(){let{isDirty:e,options:{connectNulls:t},points:i,xAxis:s,yAxis:r}=this;if(e){let e=i.length;for(;e--;){let n=i[e],o=(null!==n.y||!1!==t)&&(s?.brokenAxis?.isInAnyBreak(n.x,!0)||r?.brokenAxis?.isInAnyBreak(n.y,!0));n.visible=!o&&!1!==n.options.visible}}}function u(){this.drawBreaks(this.xAxis,["x"]),this.drawBreaks(this.yAxis,c(this.pointArrayMap,["y"]))}function p(e,t){let i,s,r,n=this,o=n.points;if(e?.brokenAxis?.hasBreaks){let a=e.brokenAxis;t.forEach(function(t){i=a?.breakArray||[],s=e.isXAxis?e.min:c(n.options.threshold,e.min),o.forEach(function(n){r=n["stack"+t.toUpperCase()]??n[t],i.forEach(function(t){if(k(s)&&k(r)){let i="";s<t.from&&r>t.to||s>t.from&&r<t.from?i="pointBreak":(s<t.from&&r>t.from&&r<t.to||s>t.from&&r>t.to&&r<t.from)&&(i="pointInBreak"),i&&f(e,i,{point:n,brk:t})}})})})}}function m(){let e=this.currentDataGrouping,t=e?.gapSize,i=this.points.slice(),s=this.yAxis,r=this.options.gapSize,n=i.length-1;if(r&&n>0){let e,a;for("value"!==this.options.gapUnit&&(r*=this.basePointRange),t&&t>r&&t>=this.basePointRange&&(r=t);n--;)if(a&&!1!==a.visible||(a=i[n+1]),e=i[n],!1!==a.visible&&!1!==e.visible){if(a.x-e.x>r){let t=(e.x+a.x)/2;i.splice(n+1,0,{isNull:!0,x:t}),s.stacking&&this.options.stacking&&((s.stacking.stacks[this.stackKey][t]=new(o())(s,s.options.stackLabels,!1,t,this.stack??"")).total=0)}a=e}}return this.getGraphPath(i)}e.compose=function(e,o){if(!e.keepProps.includes("brokenAxis")){e.keepProps.push("brokenAxis"),a(e,"init",r),a(e,"afterInit",t),a(e,"afterSetTickPositions",s),a(e,"afterSetOptions",i);let l=o.prototype;l.drawBreaks=p,l.gappedPath=m,a(o,"afterGeneratePoints",n),a(o,"afterRender",u)}return e};class b{static isInBreak(e,t){let i=e.repeat||1/0,s=e.from,r=e.to-e.from,n=t>=s?(t-s)%i:i-(s-t)%i;return e.inclusive?n<=r:n<r&&0!==n}static lin2Val(e){let t=this.min||0,i=this.brokenAxis,s=i?.breakArray;if(!s?.length||!k(e))return e;let r=e;if(e>t)for(let e of s)if(e.from>r)break;else e.to<=r&&e.to>t?r+=e.len:b.isInBreak(e,r)&&(r+=e.len);else if(e<t)for(let e of s)if(e.from>t)break;else e.from>=r&&e.from<t?r-=e.len:b.isInBreak(e,r)&&(r-=e.len);return r}static val2Lin(e){let t=this.min||0,i=this.brokenAxis,s=i?.breakArray;if(!s?.length||!k(e))return e;let r=e;if(e>t){for(let i of s)if(i.to<=e&&i.to>t)r-=i.len;else if(i.from>e)break;else if(b.isInBreak(i,e)){r-=e-i.from;break}}else if(e<t){for(let i of s)if(i.from>=e&&i.from<t)r+=i.len;else if(i.from>t)break;else if(b.isInBreak(i,e)){r+=i.to-e;break}}return r}constructor(e){this.axis=e}findBreakAt(e,t){return l(t,function(t){return t.from<e&&e<t.to})}isInAnyBreak(e,t){let i=this.axis,s=i.options.breaks||[],r=s.length,n,o,a;if(r&&k(e)){for(;r--;)b.isInBreak(s[r],e)&&(n=!0,o||(o=c(s[r].showPoints,!i.isXAxis)));a=n&&t?n&&!o:n}return a}setBreaks(e,t){let i=this,s=i.axis,r=s.chart.time,n=h(e)&&!!Object.keys(e?.[0]||{}).length;s.isDirty=(i.hasBreaks??!1)!==n,i.hasBreaks=n,e?.forEach(e=>{e.from=r.parse(e.from)||0,e.to=r.parse(e.to)||0}),e!==s.options.breaks&&(s.options.breaks=s.userOptions.breaks=e),s.forceRedraw=!0,s.series.forEach(function(e){e.isDirty=!0}),n||s.val2lin!==b.val2Lin||(delete s.val2lin,delete s.lin2val),n&&(s.userOptions.ordinal=!1,s.lin2val=b.lin2Val,s.val2lin=b.val2Lin,s.setExtremes=function(e,t,r,n,o){if(i.hasBreaks&&!s.treeGrid?.tree){let s,r=this.brokenAxis.breakArray||[];for(;s=i.findBreakAt(e,r);)e=s.to;for(;s=i.findBreakAt(t,r);)t=s.from;t<e&&(t=e)}s.constructor.prototype.setExtremes.call(this,e,t,r,n,o)},s.setAxisTranslation=function(){if(s.constructor.prototype.setAxisTranslation.call(this),i.unitLength=void 0,i.hasBreaks){let e=s.options.breaks||[],t=[],r=[],n=s.pointRangePadding??0,o=0,a,l,h=s.userMin??s.min,c=s.userMax??s.max,u=s.dataMin??h,p=s.dataMax??c,m,x;k(s.threshold)&&(u=Math.min(u??s.threshold,s.threshold),p=Math.max(p??s.threshold,s.threshold)),s.treeGrid?.tree||e.forEach(function(e){l=e.repeat||1/0,k(h)&&k(c)&&(b.isInBreak(e,h)&&(h+=e.to%l-h%l),b.isInBreak(e,c)&&(c-=c%l-e.from%l))}),k(u)&&k(p)&&e.forEach(function(e){for(m=e.from,l=e.repeat||1/0;m-l>u;)m-=l;for(;m<u;)m+=l;for(x=m;x<p;x+=l)t.push({value:x,move:"in"}),t.push({value:x+e.to-e.from,move:"out",size:e.breakSize})}),t.sort(function(e,t){return e.value===t.value?("in"!==e.move)-("in"!==t.move):e.value-t.value}),a=0,m=u,t.forEach(e=>{1===(a+="in"===e.move?1:-1)&&"in"===e.move&&(m=e.value),0===a&&k(m)&&(r.push({from:m,to:e.value,len:e.value-m-(e.size||0)}),k(h)&&k(c)&&m<c&&e.value>h&&(o+=e.value-m-(e.size||0)))}),i.breakArray=r,k(h)&&k(c)&&k(s.min)&&(i.unitLength=c-h-o+n,f(s,"afterBreaks"),s.staticScale?s.transA=s.staticScale:i.unitLength&&(s.transA*=(c-s.min+n)/i.unitLength),n&&(s.minPixelPadding=s.transA*(s.minPointOffset||0)),s.min=h,s.max=c)}}),c(t,!0)&&s.chart.redraw()}}e.Additions=b}(t||(t={}));let u=t,p=r();p.BrokenAxis=p.BrokenAxis||u,p.BrokenAxis.compose(p.Axis,p.Series);let m=r();export{m as default};