highcharts
Version:
JavaScript charting framework
14 lines • 23.1 kB
JavaScript
/**
* Highcharts JS v13.0.1 (2026-08-17)
* @module highcharts/modules/drilldown
* @requires highcharts
*
* Highcharts Drilldown module
*
* (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 e from"../highcharts.js";let t={};t.n=e=>{let i=e&&e.__esModule?()=>e.default:()=>e;return t.d(i,{a:i}),i},t.d=(e,i)=>{if(Array.isArray(i))for(var o=0;o<i.length;){var r=i[o++],l=i[o++];t.o(e,r)?0===l&&o++:0===l?Object.defineProperty(e,r,{enumerable:!0,value:i[o++]}):Object.defineProperty(e,r,{enumerable:!0,get:l})}else for(var r in i)t.o(i,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:i[r]})},t.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);let i=e.default;var o,r=t.n(i);let l={mainBreadcrumb:"Main"},s=e.default.Templating,{format:n}=t.n(s)(),{composed:a}=r();function d(){if(this.breadcrumbs){let e=this.resetZoomButton&&this.resetZoomButton.getBBox(),t=this.breadcrumbs.options;e&&"right"===t.position.align&&"plotBox"===t.relativeTo&&this.breadcrumbs.alignBreadcrumbsGroup(-e.width-t.buttonSpacing)}}function p(){this.breadcrumbs&&(this.breadcrumbs.destroy(),this.breadcrumbs=void 0)}function h(){let e=this.breadcrumbs;if(e&&!e.options.floating&&e.level){let t=e.options,i=t.buttonTheme,o=(i.height||0)+2*(i.padding||0)+t.buttonSpacing,r=t.position.verticalAlign;"bottom"===r?(this.marginBottom=(this.marginBottom||0)+o,e.yOffset=o):"middle"!==r?(this.plotTop+=o,e.yOffset=-o):e.yOffset=void 0}}function u(){this.breadcrumbs&&this.breadcrumbs.redraw()}function c(e){!0===e.resetSelection&&this.breadcrumbs&&this.breadcrumbs.alignBreadcrumbsGroup()}class m{static compose(e,t){(0,i.pushUnique)(a,"Breadcrumbs")&&((0,i.addEvent)(e,"destroy",p),(0,i.addEvent)(e,"afterShowResetZoom",d),(0,i.addEvent)(e,"getMargins",h),(0,i.addEvent)(e,"redraw",u),(0,i.addEvent)(e,"selection",c),(0,i.extend)(t.lang,l))}constructor(e,t){this.elementList={},this.isDirty=!0,this.level=0,this.list=[];let o=(0,i.merge)(e.options.drilldown&&e.options.drilldown.drillUpButton,m.defaultOptions,e.options.navigation&&e.options.navigation.breadcrumbs,t);this.chart=e,this.options=o||{}}updateProperties(e){this.setList(e),this.setLevel(),this.isDirty=!0}setList(e){this.list=e}setLevel(){this.level=this.list.length&&this.list.length-1}getLevel(){return this.level}getButtonText(e){let t=this.chart,o=this.options,r=t.options.lang,l=(0,i.pick)(o.format,o.showFullPath?"{level.name}":"← {level.name}"),s=r&&(0,i.pick)(r.drillUpText,r.mainBreadcrumb),a=o.formatter&&o.formatter(e)||n(l,{level:e.levelOptions},t)||"";return((0,i.isString)(a)&&!a.length||"← "===a)&&(0,i.defined)(s)&&(a=o.showFullPath?s:"← "+s),a}redraw(){this.isDirty&&this.render(),this.group&&this.group.align(),this.isDirty=!1}render(){let e=this.chart,t=this.options;!this.group&&t&&(this.group=e.renderer.g("breadcrumbs-group").addClass("highcharts-no-tooltip highcharts-breadcrumbs").attr({zIndex:t.zIndex}).add()),t.showFullPath?this.renderFullPathButtons():this.renderSingleButton(),this.alignBreadcrumbsGroup()}renderFullPathButtons(){this.destroySingleButton(),this.resetElementListState(),this.updateListElements(),this.destroyListElements()}renderSingleButton(){let e=this.chart,t=this.list,i=this.options.buttonSpacing;this.destroyListElements();let o=this.group?this.group.getBBox().width:i,r=t[t.length-2];!e.drillUpButton&&this.level>0?e.drillUpButton=this.renderButton(r,o,i):e.drillUpButton&&(this.level>0?this.updateSingleButton():this.destroySingleButton())}alignBreadcrumbsGroup(e){if(this.group){let t=this.options,o=t.buttonTheme,r=t.position,l="chart"===t.relativeTo||"spacingBox"===t.relativeTo?void 0:"plotBox",s=this.group.getBBox(),n=2*(o.padding||0)+t.buttonSpacing;r.width=s.width+n,r.height=s.height+n;let a=(0,i.merge)(r);e&&(a.x+=e),this.options.rtl&&(a.x+=r.width),a.y=(0,i.pick)(a.y,this.yOffset,0),this.group.align(a,!0,l)}}renderButton(e,t,o){let r=this,l=this.chart,s=r.options,n=(0,i.merge)(s.buttonTheme),a=l.renderer.button(r.getButtonText(e),t,o,function(t){let o,l=s.events&&s.events.click;l&&(o=l.call(r,t,e,r)),!1!==o&&(s.showFullPath?t.newLevel=e.level:t.newLevel=r.level-1,(0,i.fireEvent)(r,"up",t))},n).addClass("highcharts-breadcrumbs-button").add(r.group);return l.styledMode||a.attr(s.style),a}renderSeparator(e,t){let i=this.chart,o=this.options.separator,r=i.renderer.label(o.text,e,t,void 0,void 0,void 0,!1).addClass("highcharts-breadcrumbs-separator").add(this.group);return i.styledMode||r.css(o.style),r}update(e){(0,i.merge)(!0,this.options,e),this.destroy(),this.isDirty=!0}updateSingleButton(){let e=this.chart,t=this.list[this.level-1];e.drillUpButton&&e.drillUpButton.attr({text:this.getButtonText(t)})}destroy(){this.destroySingleButton(),this.destroyListElements(!0),this.group&&this.group.destroy(),this.group=void 0}destroyListElements(e){let t=this.elementList;(0,i.objectEach)(t,(i,o)=>{(e||!t[o].updated)&&((i=t[o]).button&&i.button.destroy(),i.separator&&i.separator.destroy(),delete i.button,delete i.separator,delete t[o])}),e&&(this.elementList={})}destroySingleButton(){this.chart.drillUpButton&&(this.chart.drillUpButton.destroy(),this.chart.drillUpButton=void 0)}resetElementListState(){(0,i.objectEach)(this.elementList,e=>{e.updated=!1})}updateListElements(){let e=this.elementList,t=this.options.buttonSpacing,i=this.list,o=this.options.rtl,r=o?-1:1,l=function(e,t){return r*e.getBBox().width+r*t},s=function(e,t,i){e.translate(t-e.getBBox().width,i)},n=this.group?l(this.group,t):t,a,d;for(let p=0,h=i.length;p<h;++p){let u,c,m=p===h-1;e[(d=i[p]).level]?(u=(a=e[d.level]).button,a.separator||m?a.separator&&m&&(a.separator.destroy(),delete a.separator):(n+=r*t,a.separator=this.renderSeparator(n,t),o&&s(a.separator,n,t),n+=l(a.separator,t)),e[d.level].updated=!0):(u=this.renderButton(d,n,t),o&&s(u,n,t),n+=l(u,t),m||(c=this.renderSeparator(n,t),o&&s(c,n,t),n+=l(c,t)),e[d.level]={button:u,separator:c,updated:!0}),u&&u.setState(2*!!m)}}}m.defaultOptions={buttonSpacing:5,buttonTheme:{fill:"none",height:18,padding:2,"stroke-width":0,zIndex:7,states:{select:{fill:"none"}},style:{color:"var(--highcharts-highlight-color-80)"}},floating:!1,format:void 0,relativeTo:"plotBox",rtl:!1,position:{align:"left",verticalAlign:"top",x:0,y:void 0},separator:{text:"/",style:{color:"var(--highcharts-neutral-color-60)",fontSize:"0.8em"}},showFullPath:!0,style:{},useHTML:!1,zIndex:7};let f={activeAxisLabelStyle:{cursor:"pointer",color:"var(--highcharts-highlight-color-100)",fontWeight:"bold",textDecoration:"underline"},activeDataLabelStyle:{cursor:"pointer",color:"var(--highcharts-highlight-color-100)",fontWeight:"bold",textDecoration:"underline"},animation:{duration:500},drillUpButton:{position:{align:"right",x:-10,y:10}},mapZooming:!0};function g(e,t,i,o){e[i?"addClass":"removeClass"]("highcharts-drilldown-point"),o||e.css({cursor:t})}function b(e){let t=this,o=t.chart,{drilldownLevels:r,styledMode:l}=o,s=(0,i.animObject)(o.options.drilldown?.animation),{xAxis:n,yAxis:a}=this;if(!e){let e;r?.forEach(i=>{t.options._ddSeriesId===i.lowerSeriesOptions._ddSeriesId&&(e=i.shapeArgs)&&(e.x=(e.x||0)+(i.plotLeft??n.pos)-n.pos,e.y=(e.y||0)+(i.plotTop??a.pos)-a.pos,l||(e.fill=i.color))}),t.points.forEach(o=>{o.graphic?.attr(e).animate((0,i.extend)(o.shapeArgs,{fill:o.color||t.color}),s)}),this.dataLabelsGroups?.forEach(e=>o.drilldown?.fadeInGroup(e)),delete this.animate}}function w(e){let t=this,o=(0,i.animObject)((t.chart.options.drilldown||{}).animation);t.trackerGroups?.forEach(e=>{"dataLabelsGroup"===e?t.dataLabelsGroups?.forEach(e=>{e?.on("mouseover",()=>{})}):t[e]?.on("mouseover")});let r=t.group,l=r!==t.chart.columnGroup;l&&delete t.group,(this.points||this.data).forEach(s=>{let n=s.graphic,a=e.shapeArgs;if(n&&a){let d=()=>{n.destroy(),r&&l&&(r=r.destroy())};delete s.graphic,t.chart.styledMode||(a.fill=e.color),o.duration?n.animate(a,(0,i.merge)(o,{complete:d})):(n.attr(a),d())}})}function v(e){let t=this,o=t.drilldownLevel,r=(0,i.animObject)(t.chart.options.drilldown?.animation);e||(t.points.forEach(e=>{let t=e.dataLabel;e.graphic&&e.graphic.hide(),t&&(t.hidden="hidden"===t.attr("visibility"),t.hidden||(t.hide(),t.connector?.hide()))}),(0,i.syncTimeout)(()=>{if(t.points){let e=[];t.data.forEach(t=>{e.push(t)}),t.nodes&&(e=e.concat(t.nodes)),e.forEach((e,t)=>{let i=t===(o&&o.pointIndex)?"show":"fadeIn",r=e.dataLabel;e.graphic&&e.visible&&e.graphic[i]("show"===i||void 0),r&&!r.hidden&&(r.fadeIn(),r.connector?.fadeIn())})}},Math.max(r.duration-50,0)),delete this.animate)}function y(e){let t=this,i=t.chart,o=t.group;i&&o&&t.options&&i.options.drilldown?.animation&&(e&&i.mapView?(o.attr({opacity:.01}),i.mapView.allowTransformAnimation=!1,t.options.inactiveOtherPoints=!0,t.options.enableMouseTracking=!1):(o.animate({opacity:1},i.options.drilldown.animation,()=>{t.options&&(t.options.inactiveOtherPoints=!1,t.options.enableMouseTracking=t.userOptions?.enableMouseTracking??!0)}),t.dataLabelsGroups?.forEach(e=>i.drilldown?.fadeInGroup(e))))}function D(){let e=this.chart;e?.mapView&&(e.mapView.allowTransformAnimation=!1),this.options&&(this.options.inactiveOtherPoints=!0)}function x(e){let t=this.chart,i=this.group;t&&i&&(e?(i.attr({opacity:.01}),this.options&&(this.options.inactiveOtherPoints=!0)):(i.animate({opacity:1},(t.options.drilldown||{}).animation),this.dataLabelsGroups?.forEach(e=>t.drilldown?.fadeInGroup(e))))}function S(){return this.drilldown&&!this.unbindDrilldownClick&&(this.unbindDrilldownClick=(0,i.addEvent)(this,"click",B)),this}function E(){let e=this.series,t=e.chart.styledMode;this.drilldown&&e.halo&&"hover"===this.state?g(e.halo,"pointer",!0,t):e.halo&&g(e.halo,"auto",!1,t)}function B(e){let t=this.series;t.xAxis&&!1===(t.chart.options.drilldown||{}).allowPointDrilldown?t.xAxis.drilldownCategory(this.x,e):this.runDrilldown(void 0,void 0,e)}function L(e){let t=e.options||{};t.drilldown&&!this.unbindDrilldownClick?this.unbindDrilldownClick=(0,i.addEvent)(this,"click",B):!t.drilldown&&void 0!==t.drilldown&&this.unbindDrilldownClick&&(this.unbindDrilldownClick=this.unbindDrilldownClick())}function O(){let e=this.chart,t=e.options.drilldown?.activeDataLabelStyle||{},o=e.renderer,r=e.styledMode;for(let e of this.points){let l=(0,i.splat)(e.options.dataLabels)[0]||{},s=e.dlOptions||l.style||{};if(e.drilldown&&e.dataLabel){if("contrast"===t.color&&!r){let t=(0,i.isString)(e.color)&&e.color||(0,i.isString)(this.color)&&this.color;(0,i.isString)(t)&&(s.color=o.getContrast(t))}l&&l.color&&(s.color=l.color),e.dataLabel.addClass("highcharts-drilldown-data-label"),r||e.dataLabel.css(t).css(s)}}}function A(){let e=this.chart.styledMode;for(let t of this.points)t.drilldown&&t.graphic&&g(t.graphic,"pointer",!0,e)}function T(e){let t=this.chart,o=this.points,r=t.drilldownLevels||[],l=r[r.length-1],s=(0,i.animObject)(t.options.drilldown?.animation);if(this.is("item")&&(s.duration=0),this.center){let r=l.shapeArgs||{},n=r.start||0,a=((r.end||0)-n)/this.points.length,d=t.styledMode;if(r.y=(r.y||0)+((l.plotTop??t.plotTop)-t.plotTop)/2,!e){let e,p;for(let t=0,h=o.length;t<h;++t){e=(p=o[t]).shapeArgs||{},d||(r.fill=l.color,e.fill=p.color);let h=(0,i.merge)(r,{start:n+t*a,end:n+(t+1)*a});p.graphic?.attr(h).animate(e,s)}this.dataLabelsGroups?.forEach(e=>t.drilldown?.fadeInGroup(e)),delete this.animate}}}function C(){this.runDrilldown()}function M(e,t,o){let r=this.series,l=r.chart,s=l.options.drilldown||{},n=(s.series||[]).length,a;for(l.ddDupes||(l.ddDupes=[]),l.colorCounter=l.symbolCounter=0;n--&&!a;)s.series&&s.series[n].id===this.drilldown&&this.drilldown&&-1===l.ddDupes.indexOf(this.drilldown)&&(a=s.series[n],l.ddDupes.push(this.drilldown));(0,i.fireEvent)(l,"drilldown",{point:this,seriesOptions:a,category:t,originalEvent:o,points:void 0!==t&&r.xAxis.getDDPoints(t).slice(0)},t=>{let i=t.point.series?.chart,o=t.seriesOptions;i&&o&&(e?i.addSingleSeriesAsDrilldown(t.point,o):i.addSeriesAsDrilldown(t.point,o))})}let P=function(e,t){let o=e.prototype.pointClass,r=o.prototype;if(!r.doDrilldown){let{column:l,map:s,pie:n}=t;if((0,i.addEvent)(o,"afterInit",S),(0,i.addEvent)(o,"afterSetState",E),(0,i.addEvent)(o,"update",L),r.doDrilldown=C,r.runDrilldown=M,(0,i.addEvent)(e,"afterDrawDataLabels",O),(0,i.addEvent)(e,"afterDrawTracker",A),l){let e=l.prototype;e.animateDrilldown=b,e.animateDrillupFrom=w,e.animateDrillupTo=v}if(s){let e=s.prototype;e.animateDrilldown=y,e.animateDrillupFrom=D,e.animateDrillupTo=x}if(n){let e=n.prototype;e.animateDrilldown=T,e.animateDrillupFrom=w,e.animateDrillupTo=v}}},{noop:I}=r(),k=1;function V(e,t){this.getDDPoints(e).forEach(function(o){(0,i.isObject)(o)&&o.series&&o.series.visible&&o.runDrilldown&&o.runDrilldown(!0,e,t)}),this.chart.applyDrilldown()}function G(e){return this.ddPoints&&this.ddPoints[e]||[]}function _(e){let t=[],o=e.drilldownLevels;return o&&o.length&&(t[0]||t.push({level:0,levelOptions:o[0].seriesOptions}),o.forEach(function(e){let o=t[t.length-1];e.levelNumber+1>o.level&&t.push({level:e.levelNumber+1,levelOptions:(0,i.merge)({name:e.lowerSeries.name},e.pointOptions)})})),t}class Z{constructor(e){this.chart=e}addSeriesAsDrilldown(e,t){let o=this.chart||this;if((0,i.fireEvent)(this,"addSeriesAsDrilldown",{seriesOptions:t}),o.mapView){if(e.series.isDrilling=!0,o.series.forEach(e=>{e.options.inactiveOtherPoints=!0,e.dataLabelsGroups?.forEach(e=>e?.destroy()),e.dataLabelsGroups=[],e.points?.forEach(e=>{e.dataLabels&&(e.dataLabels=[])})}),o.options.drilldown&&!o.mapView.projection.hasGeoProjection&&f){let e=(0,i.diffObjects)(o.options.drilldown,f);(0,i.defined)(e.mapZooming)||(o.options.drilldown.mapZooming=!1)}if(o.options.drilldown&&o.options.drilldown.animation&&o.options.drilldown.mapZooming){o.mapView.allowTransformAnimation=!0;let r=(0,i.animObject)(o.options.drilldown.animation);if("boolean"!=typeof r){let i=r.complete,l=function(i){i&&i.applyDrilldown&&o.mapView&&(o.addSingleSeriesAsDrilldown(e,t),o.applyDrilldown(),o.mapView.allowTransformAnimation=!1)};r.complete=function(){i&&i.apply(this,arguments),l.apply(this,arguments)}}e.zoomTo(r)}else o.addSingleSeriesAsDrilldown(e,t),o.applyDrilldown()}else o.addSingleSeriesAsDrilldown(e,t),o.applyDrilldown()}addSingleSeriesAsDrilldown(e,t){let o=this.chart||this,r=e.series,l=r.xAxis,s=r.yAxis,n=l&&o.inverted?s:l,a=l&&o.inverted?l:s,d=o.styledMode?{colorIndex:e.colorIndex??r.colorIndex}:{color:e.color||r.color},p=r.options._levelNumber??0;o.drilldownLevels||(o.drilldownLevels=[]),t=(0,i.extend)((0,i.extend)({_ddSeriesId:k++,_levelNumber:p+1},d),t);let h=[],u=[],c;(c=o.drilldownLevels[o.drilldownLevels.length-1])&&c.levelNumber!==p&&(c=void 0),r.chart.series.forEach(e=>{var t,o;if(e.xAxis===l)if((t=e.options)._ddSeriesId||(t._ddSeriesId=k++),e.options.colorIndex=e.colorIndex,(o=e.options)._levelNumber??(o._levelNumber=p),c)h=c.levelSeries,u=c.levelSeriesOptions;else{h.push(e),e.purgedOptions=(0,i.merge)({_ddSeriesId:e.options._ddSeriesId,_levelNumber:e.options._levelNumber,selected:e.options.selected},e.userOptions);let t=e.dataTable.getColumns();e.purgedOptions.dataTable={columns:t},u.push(e.purgedOptions)}}),l?.names&&(l.names.length=0);let m=o.addSeries(t,!1);m.options._levelNumber=p+1,l&&(l.userMin=l.userMax=void 0,s.userMin=s.userMax=void 0),m.isDrilling=!0;let f=(0,i.extend)({levelNumber:p,seriesOptions:r.options,seriesPurgedOptions:r.purgedOptions,levelSeriesOptions:u,levelSeries:h,shapeArgs:e.shapeArgs,bBox:e.graphic?e.graphic.getBBox():{},color:e.isNull?"rgba(0,0,0,0)":d.color,lowerSeries:m,lowerSeriesOptions:t,plotTop:a?.pos??o.plotTop,plotLeft:n?.pos??o.plotLeft,pointOptions:e.options,pointIndex:e.index,oldExtremes:{xMin:l?.userMin,xMax:l?.userMax,yMin:s?.userMin,yMax:s?.userMax},resetZoomButton:c&&c.levelNumber===p?void 0:o.resetZoomButton},d);o.drilldownLevels.push(f),r.type===m.type&&(m.animate=m.animateDrilldown||I,m.options.animation=!0)}applyDrilldown(){let e,t=this.chart||this,o=t.options.drilldown,r=t.drilldownLevels;r&&r.length>0&&(e=r[r.length-1].levelNumber,t.hasCartesianSeries=r.some(e=>e.lowerSeries?.isCartesian),(t.drilldownLevels||[]).forEach(r=>{t.mapView&&o?.mapZooming&&(t.redraw(),r.lowerSeries.isDrilling=!1,t.mapView.fitToBounds(r.lowerSeries.bounds),r.lowerSeries.isDrilling=!0),r.levelNumber===e&&r.levelSeries.forEach(l=>{let s=l.options?._levelNumber;if(t.mapView){if(l.options&&s===e){let e={};o&&(e=o.animation);let s=(0,i.animObject)(e),n=!1,a=()=>{!n&&(n=!0,l.chart&&(l.group&&(0,i.stop)(l.group),l.dataLabelsGroup&&(0,i.stop)(l.dataLabelsGroup),l.dataLabelsGroups?.forEach(e=>{e&&(0,i.stop)(e)}),l.remove(!1)),r.levelSeries.filter(e=>Object.keys(e).length).length||(t.resetZoomButton&&(t.resetZoomButton.hide(),delete t.resetZoomButton),t.pointer?.reset(),(0,i.fireEvent)(t,"afterDrilldown"),t.mapView&&(t.series.forEach(e=>{e.isDirtyData=!0,e.isDrilling=!1}),t.mapView.fitToBounds(void 0,void 0),t.mapView.allowTransformAnimation=!0),(0,i.fireEvent)(t,"afterApplyDrilldown")))};if(l.group?.element){let t;(t=e=>{let t=e?.element;e&&t&&((0,i.stop)(e),t.setAttribute("opacity","0"),t.setAttribute("visibility","hidden"))})(l.dataLabelsGroup),l.dataLabelsGroups?.forEach(t),l.group.animate({opacity:0},e,a),(0,i.syncTimeout)(a,s.defer+s.duration)}else a()}}else l.options&&s===e&&l.remove(!1)})})),t.mapView||(t.resetZoomButton&&(t.resetZoomButton.hide(),delete t.resetZoomButton),t.pointer?.reset(),(0,i.fireEvent)(t,"afterDrilldown"),t.hasCartesianSeries||t.axes.forEach(e=>{e.destroy(!0),e.init(t,(0,i.merge)(e.userOptions,e.options))}),t.redraw(o?.animation),(0,i.fireEvent)(t,"afterApplyDrilldown"))}drillUp(e){let t=this.chart||this;if(!t.drilldownLevels||0===t.drilldownLevels.length)return;(0,i.fireEvent)(t,"beforeDrillUp");let o=t.drilldownLevels,r=o[o.length-1].levelNumber,l=t.series,s=t.drilldownLevels.length,n=t.options.drilldown||{},a=(e,i)=>{let o;if(l.forEach(t=>{t.options._ddSeriesId===e._ddSeriesId&&(o=t)}),(o=o||t.addSeries(e,!1)).type===i.type&&o.animateDrillupTo&&(o.animate=o.animateDrillupTo),e===u.seriesPurgedOptions)return o},d=e=>{e.remove(!1),t.series.forEach(e=>{e.colorAxis&&(e.isDirtyData=!0),e.options.inactiveOtherPoints=!1,e.group&&e.visible&&e.group.attr({opacity:1})}),t.redraw()},p=o.length,h,u,c;for(t.symbolCounter=t.colorCounter=0;p--;){let m,f;if((u=o[p]).levelNumber===r){if(o.pop(),!(m=u.lowerSeries).chart){for(h=l.length;h--;)if(l[h].options.id===u.lowerSeriesOptions.id&&l[h].options._levelNumber===r+1){m=l[h];break}}m.dataTable.setColumn("x",[]),m.xAxis&&m.xAxis.names&&(0===s||p===s-1)&&(m.xAxis.names.length=0),u.levelSeriesOptions.forEach(e=>{let t=a(e,m);t&&(f=t)}),(0,i.fireEvent)(t,"drillup",{seriesOptions:u.seriesPurgedOptions||u.seriesOptions}),f&&(f.type===m.type&&(f.drilldownLevel=u,f.options.animation=n.animation,m.chart&&m.animateDrillupFrom?.(u)),f.options._levelNumber=r);let g=m;if(t.mapView||g.remove(!1),f?.xAxis&&(c=u.oldExtremes,f.xAxis.setExtremes(c.xMin,c.xMax,!1),f.yAxis.setExtremes(c.yMin,c.yMax,!1)),u.resetZoomButton&&(t.resetZoomButton=u.resetZoomButton),t.mapView){let o=u.levelNumber===r&&e,l=n.animation&&n.mapZooming;o?m.remove(!1):(m.dataLabelsGroups?.forEach(e=>{e?.destroy()}),m.dataLabelsGroups=[],t.mapView&&f&&(l&&(m.isDrilling=!0,f.isDrilling=!0,t.redraw(!1),t.mapView.fitToBounds(m.bounds,void 0,!0,!1)),t.mapView.allowTransformAnimation=!0,(0,i.fireEvent)(t,"afterDrillUp",{seriesOptions:f?f.userOptions:void 0}),l?(t.mapView.setView(void 0,t.mapView.minZoom??1,!0,{complete:function(){Object.prototype.hasOwnProperty.call(this,"complete")&&d(m)}}),f._hasTracking=!1):(t.mapView.allowTransformAnimation=!1,m.group?m.group.animate({opacity:0},n.animation,()=>{d(m),t.mapView&&(t.mapView.allowTransformAnimation=!0)}):(d(m),t.mapView.allowTransformAnimation=!0)),f.isDrilling=!1))}else(0,i.fireEvent)(t,"afterDrillUp")}}t.mapView||e||t.redraw(n.animation),t.ddDupes&&(t.ddDupes.length=0),(0,i.fireEvent)(t,"drillupall")}fadeInGroup(e){let t=(0,i.animObject)(this.chart.options.drilldown?.animation);e&&(e.hide(),(0,i.syncTimeout)(()=>{e?.added&&e.fadeIn()},Math.max(t.duration-50,0)))}update(e,t=!0){let o=this.chart;(0,i.merge)(!0,o.options.drilldown,e),t&&o.redraw()}}!function(e){function t(e){let t=this.chart,i=this.getLevel()-e.newLevel,o=i>1;for(let e=0;e<i;e++)e===i-1&&(o=!1),t.drillUp(o)}function o(){let e=this.options.drilldown,t=e&&e.breadcrumbs;this.breadcrumbs||(this.breadcrumbs=new m(this,t)),this.breadcrumbs.updateProperties(_(this))}function r(){this.breadcrumbs&&this.breadcrumbs.updateProperties(_(this))}function l(){this.drilldown=new Z(this)}function s(){this.resetZoomButton&&(this.resetZoomButton=this.resetZoomButton.destroy())}function n(){this.resetZoomButton&&this.showResetZoom()}function a(){(this.xAxis||[]).forEach(e=>{let t={};e.ddPoints=t,e.series.forEach(e=>{let o=e.getColumn("x"),r=e.points;for(let l=0,s=o.length,n;l<s;l++)if(n=e.dataTable.getRowObject(l),(0,i.defined)(n)&&"number"!=typeof n&&(n=e.pointClass.prototype.optionsToObject.call({series:e},n)).drilldown){t[o[l]]||(t[o[l]]=[]);let i=l-(e.cropStart||0);t[o[l]].push(!r||!(i>=0)||!(i<r.length)||r[i])}}),(0,i.objectEach)(e.ticks,e=>e.drillable())})}function d(e){let t=this.breadcrumbs,i=e.options.drilldown&&e.options.drilldown.breadcrumbs;t&&i&&t.update(i)}function p(e){let t=e.options;t&&void 0===t._levelNumber&&void 0!==this.options._levelNumber&&(t._levelNumber=this.options._levelNumber)}function h(e){this.attr({opacity:.1,visibility:"inherit"}).animate({opacity:this.newOpacity??1},e||{duration:250})}function u(){let e=this.pos,t=this.label,o=this.axis,r="xAxis"===o.coll&&o.getDDPoints,l=r&&o.getDDPoints(e),s=o.chart.styledMode;r&&(t&&l&&l.length?(t.drillable=!0,t.basicStyles||s||(t.basicStyles=(0,i.merge)(t.styles)),t.addClass("highcharts-drilldown-axis-label"),t.removeOnDrillableClick&&(0,i.removeEvent)(t.element,"click"),t.removeOnDrillableClick=(0,i.addEvent)(t.element,"click",function(t){t.preventDefault(),o.drilldownCategory(e,t)}),!s&&o.chart.options.drilldown&&t.css(o.chart.options.drilldown.activeAxisLabelStyle||{})):t&&t.drillable&&t.removeOnDrillableClick&&(s||(t.styles={},t.element.removeAttribute("style"),t.css(t.basicStyles)),t.removeOnDrillableClick(),t.removeClass("highcharts-drilldown-axis-label")))}e.compose=function(e,c,g,b,w,v,y){P(b,w);let D=c.prototype;if(!D.drillUp){let w=v.prototype.Element,x=Z.prototype,S=e.prototype,E=w.prototype,B=y.prototype;S.drilldownCategory=V,S.getDDPoints=G,m.compose(c,g),(0,i.addEvent)(m,"up",t),D.addSeriesAsDrilldown=x.addSeriesAsDrilldown,D.addSingleSeriesAsDrilldown=x.addSingleSeriesAsDrilldown,D.applyDrilldown=x.applyDrilldown,D.drillUp=x.drillUp,(0,i.addEvent)(c,"afterDrilldown",o),(0,i.addEvent)(c,"afterDrillUp",r),(0,i.addEvent)(c,"afterInit",l),(0,i.addEvent)(c,"drillup",s),(0,i.addEvent)(c,"drillupall",n),(0,i.addEvent)(c,"render",a),(0,i.addEvent)(c,"update",d),(0,i.addEvent)(b,"update",p),g.drilldown=f,E.fadeIn=h,B.drillable=u}}}(o||(o={}));let N=o,j=r();j.Breadcrumbs=j.Breadcrumbs||m,N.compose(j.Axis,j.Chart,j.defaultOptions,j.Series,j.seriesTypes,j.SVGRenderer,j.Tick);let U=r();export{U as default};