katucharts.js 0.2.15 → 0.2.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,6 @@
4
4
  svg { max-width: ${o}px; height: auto; }
5
5
  </style></head><body>${t}</body></html>`),r.close();const s=()=>{try{i.remove()}catch{}},a=i.contentWindow;if(!a){s();return}a.onafterprint=s,setTimeout(()=>{a.focus(),a.print(),setTimeout(s,3e3)},250)}static exportCSV(t,e="chart",i){const r=(i==null?void 0:i.itemDelimiter)??",",o=(i==null?void 0:i.lineDelimiter)??`
6
6
  `,s=(i==null?void 0:i.decimalPoint)??".",a=["Category"];t.forEach(d=>{if(i!=null&&i.columnHeaderFormatter){const p=i.columnHeaderFormatter(d,"y",1);a.push(p===!1?d.name||"Series":p)}else a.push(d.name||"Series")});const l=new Set;for(const d of t)for(const p of d.data)l.add(p.name??p.x??"");const c=d=>{if(d==null)return"";const p=String(d);return s!=="."&&typeof d=="number"?p.replace(".",s):p},h=[];for(const d of l){const p=[String(d)];for(const y of t){const g=y.data.find(m=>(m.name??m.x)===d);p.push((g==null?void 0:g.y)!==void 0&&g.y!==null?c(g.y):"")}h.push(p)}const f=[a.map(d=>Jo(d,r)).join(r),...h.map(d=>d.map(p=>Jo(p,r)).join(r))].join(o),u=new Blob([f],{type:"text/csv;charset=utf-8"});Zt.downloadBlob(u,`${e}.csv`)}static getCSV(t,e){const i=(e==null?void 0:e.itemDelimiter)??",",r=(e==null?void 0:e.lineDelimiter)??`
7
- `,o=(e==null?void 0:e.decimalPoint)??".",s=["Category"];t.forEach(h=>{if(e!=null&&e.columnHeaderFormatter){const f=e.columnHeaderFormatter(h,"y",1);s.push(f===!1?h.name||"Series":f)}else s.push(h.name||"Series")});const a=new Set;for(const h of t)for(const f of h.data)a.add(f.name??f.x??"");const l=h=>{if(h==null)return"";const f=String(h);return o!=="."&&typeof h=="number"?f.replace(".",o):f},c=[];for(const h of a){const f=[String(h)];for(const u of t){const d=u.data.find(p=>(p.name??p.x)===h);f.push((d==null?void 0:d.y)!==void 0&&d.y!==null?l(d.y):"")}c.push(f)}return[s.map(h=>Jo(h,i)).join(i),...c.map(h=>h.map(f=>Jo(f,i)).join(i))].join(r)}static getDataRows(t){const e=["Category"];t.forEach(o=>e.push(o.name||"Series"));const i=new Set;for(const o of t)for(const s of o.data)i.add(s.name??s.x??"");const r=[e];for(const o of i){const s=[o!=null?String(o):""];for(const a of t){const l=a.data.find(c=>(c.name??c.x)===o);s.push((l==null?void 0:l.y)??null)}r.push(s)}return r}static getTable(t,e){const i=Zt.getDataRows(t);if(i.length===0)return"<table></table>";const r=i[0],o=i.slice(1);let s='<table class="katucharts-data-table">';e&&typeof e=="string"&&(s+=`<caption>${Zn(e)}</caption>`),s+="<thead><tr>";for(const a of r)s+=`<th>${Zn(a??"")}</th>`;s+="</tr></thead><tbody>";for(const a of o){s+="<tr>";for(const l of a)s+=`<td>${Zn(l??"")}</td>`;s+="</tr>"}return s+="</tbody></table>",s}static viewDataTable(t,e,i){let r=e.querySelector(".katucharts-data-table-container");if(r)return r.remove(),null;r=document.createElement("div"),r.className="katucharts-data-table-container",Object.assign(r.style,{position:"relative",maxHeight:"300px",overflow:"auto",border:"1px solid #ccc",marginTop:"10px",fontSize:"11px"});const o=Zt.getTable(t,i);r.innerHTML=o;const s=r.querySelector("table");return s&&(Object.assign(s.style,{width:"100%",borderCollapse:"collapse"}),s.querySelectorAll("th, td").forEach(a=>{Object.assign(a.style,{padding:"4px 8px",borderBottom:"1px solid #e6e6e6",textAlign:"left"})}),s.querySelectorAll("th").forEach(a=>{Object.assign(a.style,{backgroundColor:"#f7f7f7",fontWeight:"bold"})})),e.appendChild(r),r}static downloadBlob(t,e){const i=URL.createObjectURL(t),r=document.createElement("a");r.href=i,r.download=e,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(i)}};Zt.INLINE_PROPS=["fill","stroke","stroke-width","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-opacity","fill-opacity","opacity","font-family","font-size","font-weight","font-style","text-anchor","dominant-baseline","text-decoration","visibility","display"],Zt.JSPDF_CDN_URL="https://cdn.jsdelivr.net/npm/jspdf@2.5.2/dist/jspdf.umd.min.js",Zt.jsPDFLoader=null;let ie=Zt;class zv{constructor(t){this.host=t}getSVG(){return this.host.getRenderer().getSerializedSVG()}getInlinedSVG(){const t=this.host.getRenderer(),e=t.getSVGNode();return e?ie.inlineStyles(e):t.getSerializedSVG()}handleExportAction(t){const e=this.host.getOptions(),i=this.getInlinedSVG(),r=e.exporting.filename??"chart",o=e.exporting.scale??2;switch(t){case"downloadPNG":ie.exportPNG(i,r,o).catch(s=>console.warn("KatuCharts: PNG export failed.",s));break;case"downloadJPEG":ie.exportJPEG(i,r,o).catch(s=>console.warn("KatuCharts: JPEG export failed.",s));break;case"downloadSVG":ie.exportSVG(i,r);break;case"downloadPDF":ie.exportPDF(i,r,o).catch(s=>console.warn("KatuCharts: PDF export failed.",s));break;case"downloadCSV":ie.exportCSV(this.getSeriesDataForExport(),r,e.exporting.csv);break;case"downloadXLS":this.exportXLS(r);break;case"viewDataTable":ie.viewDataTable(this.getSeriesDataForExport(),this.host.getContainer(),e.exporting.tableCaption);break;case"viewFullScreen":this.toggleFullScreen();break;case"printChart":this.host.fireEvent("beforePrint"),ie.print(i,e.exporting.printMaxWidth),this.host.fireEvent("afterPrint");break}}toggleFullScreen(){var m;const t=this.host.getContainer();if(!t)return;const e=t.ownerDocument,i=e.defaultView||window;if(e.fullscreenElement===t||e.webkitFullscreenElement===t){e.exitFullscreen?e.exitFullscreen():e.webkitExitFullscreen&&e.webkitExitFullscreen();return}const o=t.style,s={width:o.width,height:o.height,maxWidth:o.maxWidth,maxHeight:o.maxHeight,background:o.background},a=this.host.getOptions().chart.backgroundColor||"#fff";o.background=a,o.width="100vw",o.height="100vh",o.maxWidth="none",o.maxHeight="none",this.host.disconnectResizeObserver();const l=this.host.getViewportSize(),c=()=>{o.width=s.width,o.height=s.height,o.maxWidth=s.maxWidth,o.maxHeight=s.maxHeight,o.background=s.background},h=()=>{this.host.fitToViewport(l.width,l.height)};let f=null;const u=()=>{const x=i.innerWidth,v=i.innerHeight;!x||!v||this.host.fitToViewport(x,v)},d=()=>{e.exitFullscreen?e.exitFullscreen():e.webkitExitFullscreen&&e.webkitExitFullscreen()},p=()=>{i.removeEventListener("resize",u),e.removeEventListener("fullscreenchange",y),e.removeEventListener("webkitfullscreenchange",y)},y=()=>{e.fullscreenElement===t||e.webkitFullscreenElement===t?(f=e.createElement("button"),f.textContent="✕",Object.assign(f.style,{position:"absolute",top:"10px",left:"50%",transform:"translateX(-50%)",zIndex:"10000",width:"32px",height:"32px",border:"none",borderRadius:"50%",background:"rgba(0,0,0,0.4)",color:"#fff",fontSize:"18px",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",lineHeight:"1",padding:"0"}),f.addEventListener("mouseenter",()=>{f&&(f.style.background="rgba(0,0,0,0.7)")}),f.addEventListener("mouseleave",()=>{f&&(f.style.background="rgba(0,0,0,0.4)")}),f.addEventListener("click",d),t.appendChild(f),u(),requestAnimationFrame(u),i.addEventListener("resize",u)):(p(),f&&(f.remove(),f=null),c(),h(),requestAnimationFrame(()=>{this.host.observeResizeObserver(),this.host.fireEvent("exitFullScreen")}))};e.addEventListener("fullscreenchange",y),e.addEventListener("webkitfullscreenchange",y);const g=()=>{p(),c(),this.host.getRenderer().svg.style("width",null).style("height",null),h(),this.host.observeResizeObserver()};try{const x=t.requestFullscreen?t.requestFullscreen():(m=t.webkitRequestFullscreen)==null?void 0:m.call(t);x&&typeof x.catch=="function"&&x.catch(g),this.host.fireEvent("enterFullScreen")}catch{g()}}getSeriesDataForExport(){return this.host.getSeriesInstances().map(t=>({name:t.config.name||`Series ${t.config.index+1}`,data:t.data.map(e=>({x:e.x,y:e.y,name:e.name}))}))}exportXLS(t){const e=ie.getDataRows(this.getSeriesDataForExport());let i='<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:spreadsheet" xmlns="http://www.w3.org/TR/REC-html40"><head><meta charset="utf-8"/></head><body><table>';for(const o of e){i+="<tr>";for(const s of o)i+=`<td>${s??""}</td>`;i+="</tr>"}i+="</table></body></html>";const r=new Blob([i],{type:"application/vnd.ms-excel"});ie.downloadBlob(r,`${t}.xls`)}getCSV(){return ie.getCSV(this.getSeriesDataForExport(),this.host.getOptions().exporting.csv)}getTable(){return ie.getTable(this.getSeriesDataForExport(),this.host.getOptions().exporting.tableCaption)}getDataRows(){return ie.getDataRows(this.getSeriesDataForExport())}exportChart(t){const e={...this.host.getOptions().exporting,...t},i=this.getInlinedSVG(),r=e.filename??"chart",o=e.scale??2;switch(e.type){case"image/jpeg":ie.exportJPEG(i,r,o);break;case"image/svg+xml":ie.exportSVG(i,r);break;case"application/pdf":ie.exportPDF(i,r,o);break;case"image/png":default:ie.exportPNG(i,r,o);break}}print(){this.host.fireEvent("beforePrint");const t=this.getInlinedSVG();ie.print(t,this.host.getOptions().exporting.printMaxWidth),this.host.fireEvent("afterPrint")}optionsToExternal(){const t=this.host.getOptions();return{chart:t.chart,title:t.title,subtitle:t.subtitle,xAxis:t.xAxis,yAxis:t.yAxis,colorAxis:t.colorAxis,series:t.series,tooltip:t.tooltip,legend:t.legend,plotOptions:t.plotOptions,credits:t.credits,colors:t.colors}}}class Bv{constructor(t){this.host=t}updateTooltipCategories(){const t=this.host.getTooltip();if(!t)return;const e=this.host.getXAxes()[0];e&&(e.config.type==="category"||e.config.categories)&&t.setCategories(e.config.categories||[]),t.setDatetimeAxis(!!e&&e.config.type==="datetime")}updateAxesDomains(){const t=Ei,e=this.host.getOptions(),i=this.host.getLayout(),r=this.host.getSeriesInstances(),o=this.host.getXAxes(),s=this.host.getYAxes();for(let a=0;a<o.length;a++){const l=o[a];if(l.config.type==="category"||l.config.categories&&l.config.categories.length>0){const u=r.filter((p,y)=>p.visible&&e.series[y]._xAxisIndex===a&&!t.has(p.config._internalType)),d=(l.config.categories&&l.config.categories.length>0?l.config.categories:null)||(u.length>0?u[0].getCategories():void 0);d&&d.length>0&&l.updateDomain(d);continue}const c=r.filter((u,d)=>u.visible&&e.series[d]._xAxisIndex===a&&!t.has(u.config._internalType));if(c.length===0)continue;let h=1/0,f=-1/0;for(const u of c){const d=u.getDataExtents();h=Math.min(h,d.xMin),f=Math.max(f,d.xMax)}if(isFinite(h)&&isFinite(f)){const u=e.series.filter((p,y)=>{var g;return((g=r[y])==null?void 0:g.visible)&&p._xAxisIndex===a&&!t.has(p._internalType)}),d=this.computeBubbleRadiusPadding(u,i.plotArea.width);l.updateDomain({min:h,max:f,extraMinPadding:d,extraMaxPadding:d})}}for(let a=0;a<s.length;a++){const l=s[a],c=e.series.filter((g,m)=>{var x;return((x=r[m])==null?void 0:x.visible)&&g._yAxisIndex===a&&!t.has(g._internalType)}),h=r.filter((g,m)=>g.visible&&e.series[m]._yAxisIndex===a&&!t.has(g.config._internalType));if(h.length===0)continue;let f=1/0,u=-1/0;const d=new Map;for(let g=0;g<h.length;g++){const m=h[g],x=c[g];if(x!=null&&x.stacking){const v=is(x);d.has(v)||d.set(v,new Map),Hi(m.data,d.get(v))}else{const v=m.getDataExtents();f=Math.min(f,v.yMin),u=Math.max(u,v.yMax)}}const p=c.some(g=>(g==null?void 0:g.stacking)==="percent");p&&(f=0,u=100,l.config.min=0,l.config.max=100);for(const g of d.values())if(!p)for(const m of g.values())f=Math.min(f,0),u=Math.max(u,m);if(c.some(g=>yg.has(g._internalType))&&l.config.min===void 0&&(f=Math.min(f,0),u=Math.max(u,0)),isFinite(f)&&isFinite(u)){const g=this.computeBubbleRadiusPadding(c,i.plotArea.height);l.updateDomain({min:f,max:u,extraMinPadding:g,extraMaxPadding:g})}}}computeBubbleRadiusPadding(t,e){const i=t.filter(s=>s&&s._internalType==="bubble");if(i.length===0||e<=0)return 0;const r=this.host.getLayout().plotArea;let o=0;for(const s of i){const a=s.maxSize;let l;typeof a=="number"?l=a:typeof a=="string"&&a.endsWith("%")?l=Math.min(r.width,r.height)*parseFloat(a)/100/2:l=30,o=Math.max(o,l)}return o/Math.max(e-2*o,1)}renderAxes(){const t=this.host.getAxisGroup(),e=this.host.getLayout();if(t.selectAll("*").remove(),!Bl(this.host.getOptions().series)){for(const i of this.host.getXAxes())i.config.showEmpty===!1&&!this.hasSeriesForAxis(i,!0)||i.render(t,e.plotArea);for(const i of this.host.getYAxes())i.config.showEmpty===!1&&!this.hasSeriesForAxis(i,!1)||i.render(t,e.plotArea);this.setupAxisLabelHover()}}setupAxisLabelHover(){const t=this.host.getXAxes()[0];if(!t)return;const i=this.host.getAxisGroup().select(".katucharts-axis-x");if(i.empty())return;const r=i.selectAll(".tick"),o=this.host.getOptions(),s=this.host.getSeriesInstances(),a=this.host.getYAxes(),l=this.host.getEvents();r.each(function(){const c=st(this),h=c.select("text");if(h.empty())return;const f=h.node().getBBox();c.insert("rect","text").attr("x",f.x-4).attr("y",f.y-2).attr("width",f.width+8).attr("height",f.height+4).attr("fill","transparent").attr("class","katucharts-tick-hitarea")}),r.style("cursor","pointer").on("mouseover",function(c){var y;const h=this.__data__,f=typeof h=="string"?((y=t.config.categories)==null?void 0:y.indexOf(h))??-1:typeof h=="number"?h:-1;if(f<0)return;const u=!!o.chart.inverted,d=t.getPixelForValue(h),p=[];for(const g of s){if(!g.visible)continue;const m=g.data.find(x=>(x.x??0)===f);if(m&&m.y!==null&&m.y!==void 0){const v=a[0].getPixelForValue(m.y??0);p.push({point:m,series:g,plotX:u?v:d,plotY:u?d:v})}}if(p.length>0){const g=p[0];l.emit("point:mouseover",{point:{...g.point,matchingPoints:p},index:f,series:g.series,event:c,plotX:g.plotX,plotY:g.plotY})}for(const g of s){if(!g.visible)continue;const m=g.group;if(!m)continue;m.selectAll(".katucharts-column, .katucharts-bar, .katucharts-marker, .katucharts-bubble, .katucharts-scatter-point").each(function(v){const b=st(this);((v==null?void 0:v.x)??-1)===f?b.attr("filter","brightness(1.15)"):b.transition().duration(100).attr("opacity",.3)})}}).on("mouseout",function(){for(const c of s){if(!c.visible)continue;const h=c.group;h&&h.selectAll(".katucharts-column, .katucharts-bar, .katucharts-marker, .katucharts-bubble, .katucharts-scatter-point").interrupt().attr("opacity",null).attr("filter",null)}l.emit("point:mouseout",{point:{},index:-1,series:null,event:null})})}hasSeriesForAxis(t,e){const i=this.host.getOptions();return this.host.getSeriesInstances().some((r,o)=>{const s=i.series[o],a=e?s._xAxisIndex:s._yAxisIndex;return r.visible&&a===t.config.index})}}class pf{constructor(t,e,i){if(this.stack=[],this.breadcrumbsEl=null,this.container=null,this.config=t,this.events=e,this.container=i||null,this.drilldownMap=new Map,t.series)for(const r of t.series)r.id&&this.drilldownMap.set(r.id,r);this.pointClickHandler=r=>{const o=r.point.drilldown;o&&this.drilldownMap.has(o)&&this.drillDown(o,r)},e.on("point:click",this.pointClickHandler)}addSeriesAsDrilldown(t,e){e.id&&this.drilldownMap.set(e.id,e);const i=t.drilldown||e.id;i&&this.drillDown(i,{point:t,series:{}})}drillDown(t,e){var r,o;const i=this.drilldownMap.get(t);i&&(this.stack.push({seriesOptions:(r=e.series)!=null&&r.config?[e.series.config]:[],title:(o=e.point)==null?void 0:o.name}),this.events.emit("drilldown:drilldown",{point:e.point,seriesOptions:i}),this.updateBreadcrumbs())}drillUp(){const t=this.stack.pop();t&&(this.events.emit("drilldown:drillup",t),this.updateBreadcrumbs())}drillUpToLevel(t){for(;this.stack.length>t;)this.drillUp()}hasLevels(){return this.stack.length>0}getCurrentLevel(){return this.stack.length}get breadcrumbsConfig(){const t=this.config.breadcrumbs;return t&&typeof t=="object"?t:{}}isBreadcrumbsEnabled(){const t=this.config.breadcrumbs;return!(t===!1||t&&typeof t=="object"&&t.enabled===!1)}updateBreadcrumbs(){var u,d,p,y,g,m,x,v;if(!this.container||!this.isBreadcrumbsEnabled())return;const t=this.breadcrumbsConfig,e=t.floating!==!1;if(!this.breadcrumbsEl){this.breadcrumbsEl=document.createElement("div"),this.breadcrumbsEl.className="katucharts-breadcrumbs";const b=t.position||{};e&&getComputedStyle(this.container).position==="static"&&(this.container.style.position="relative"),Object.assign(this.breadcrumbsEl.style,{position:e?"absolute":"relative",display:"flex",alignItems:"center",gap:"6px",padding:"3px 10px",borderRadius:"999px",fontSize:((u=t.style)==null?void 0:u.fontSize)||"12px",fontWeight:((d=t.style)==null?void 0:d.fontWeight)||"500",lineHeight:"1.4",color:((p=t.style)==null?void 0:p.color)||"#1b1a15",background:((y=t.style)==null?void 0:y.background)||"rgba(255,255,255,0.86)",boxShadow:((g=t.style)==null?void 0:g.boxShadow)||"0 1px 3px rgba(27,26,21,0.18)",zIndex:"10",top:e?`${b.y??8}px`:"",left:e?`${b.x??8}px`:"",userSelect:"none"}),this.container.appendChild(this.breadcrumbsEl)}if(this.breadcrumbsEl.innerHTML="",this.stack.length===0){this.breadcrumbsEl.style.display="none";return}this.breadcrumbsEl.style.display="flex";const i=((m=t.style)==null?void 0:m.linkColor)||"#003399",r=((x=t.separator)==null?void 0:x.text)??"/",o=((v=t.separator)==null?void 0:v.style)||{},s=t.showFullPath!==!1,a=t.showBackButton!==!1,l=t.rootText??"Main",c=b=>{const k=document.createElement("span");k.textContent="◀",k.setAttribute("role","button"),k.setAttribute("aria-label","Drill up"),Object.assign(k.style,{cursor:"pointer",color:i,fontSize:"0.8em",lineHeight:"1",transition:"opacity 120ms ease"}),k.addEventListener("mouseenter",()=>{k.style.opacity="0.55"}),k.addEventListener("mouseleave",()=>{k.style.opacity="1"}),k.addEventListener("click",b),this.breadcrumbsEl.appendChild(k)},h=(b,k,M)=>{const P=document.createElement("span");P.textContent=b,M&&(Object.assign(P.style,{cursor:"pointer",color:i,transition:"opacity 120ms ease"}),P.addEventListener("mouseenter",()=>{P.style.textDecoration="underline"}),P.addEventListener("mouseleave",()=>{P.style.textDecoration="none"}),P.addEventListener("click",()=>{var $;($=t.events)!=null&&$.click&&t.events.click.call(this,{level:k}),this.drillUpToLevel(k)})),this.breadcrumbsEl.appendChild(P)},f=()=>{const b=document.createElement("span");b.textContent=r,b.style.opacity="0.55",o.color&&(b.style.color=o.color),this.breadcrumbsEl.appendChild(b)};if(s){a&&c(()=>this.drillUp()),h(l,0,!0);for(let b=0;b<this.stack.length;b++){f();const k=b===this.stack.length-1,M=this.getCrumbLabel(b);h(M,b+1,!k)}}else{c(()=>this.drillUp());const b=document.createElement("span");b.textContent="Back",b.style.cursor="pointer",b.style.color=i,b.addEventListener("click",()=>this.drillUp()),this.breadcrumbsEl.appendChild(b)}}getCrumbLabel(t){const e=this.stack[t],i=this.breadcrumbsConfig;return i.formatter?i.formatter.call({level:t,levelOptions:e}):e.title||`Level ${t+1}`}destroy(){this.events.off("point:click",this.pointClickHandler),this.breadcrumbsEl&&(this.breadcrumbsEl.remove(),this.breadcrumbsEl=null)}}const Ov={passive:!1},Ar={capture:!0,passive:!1};function nc(n){n.stopImmediatePropagation()}function Vi(n){n.preventDefault(),n.stopImmediatePropagation()}function ic(n){var t=n.document.documentElement,e=st(n).on("dragstart.drag",Vi,Ar);"onselectstart"in t?e.on("selectstart.drag",Vi,Ar):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect="none")}function rc(n,t){var e=n.document.documentElement,i=st(n).on("dragstart.drag",null);t&&(i.on("click.drag",Vi,Ar),setTimeout(function(){i.on("click.drag",null)},0)),"onselectstart"in e?i.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}const rs=n=>()=>n;function oc(n,{sourceEvent:t,subject:e,target:i,identifier:r,active:o,x:s,y:a,dx:l,dy:c,dispatch:h}){Object.defineProperties(this,{type:{value:n,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:e,enumerable:!0,configurable:!0},target:{value:i,enumerable:!0,configurable:!0},identifier:{value:r,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:a,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:c,enumerable:!0,configurable:!0},_:{value:h}})}oc.prototype.on=function(){var n=this._.on.apply(this._,arguments);return n===this._?this:n};function Nv(n){return!n.ctrlKey&&!n.button}function Wv(){return this.parentNode}function Hv(n,t){return t??{x:n.x,y:n.y}}function Vv(){return navigator.maxTouchPoints||"ontouchstart"in this}function gf(){var n=Nv,t=Wv,e=Hv,i=Vv,r={},o=Bi("start","drag","end"),s=0,a,l,c,h,f=0;function u(b){b.on("mousedown.drag",d).filter(i).on("touchstart.drag",g).on("touchmove.drag",m,Ov).on("touchend.drag touchcancel.drag",x).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(b,k){if(!(h||!n.call(this,b,k))){var M=v(this,t.call(this,b,k),b,k,"mouse");M&&(st(b.view).on("mousemove.drag",p,Ar).on("mouseup.drag",y,Ar),ic(b.view),nc(b),c=!1,a=b.clientX,l=b.clientY,M("start",b))}}function p(b){if(Vi(b),!c){var k=b.clientX-a,M=b.clientY-l;c=k*k+M*M>f}r.mouse("drag",b)}function y(b){st(b.view).on("mousemove.drag mouseup.drag",null),rc(b.view,c),Vi(b),r.mouse("end",b)}function g(b,k){if(n.call(this,b,k)){var M=b.changedTouches,P=t.call(this,b,k),$=M.length,_,L;for(_=0;_<$;++_)(L=v(this,P,b,k,M[_].identifier,M[_]))&&(nc(b),L("start",b,M[_]))}}function m(b){var k=b.changedTouches,M=k.length,P,$;for(P=0;P<M;++P)($=r[k[P].identifier])&&(Vi(b),$("drag",b,k[P]))}function x(b){var k=b.changedTouches,M=k.length,P,$;for(h&&clearTimeout(h),h=setTimeout(function(){h=null},500),P=0;P<M;++P)($=r[k[P].identifier])&&(nc(b),$("end",b,k[P]))}function v(b,k,M,P,$,_){var L=o.copy(),I=pn(_||M,k),E,C,S;if((S=e.call(b,new oc("beforestart",{sourceEvent:M,target:u,identifier:$,active:s,x:I[0],y:I[1],dx:0,dy:0,dispatch:L}),P))!=null)return E=S.x-I[0]||0,C=S.y-I[1]||0,function w(A,T,F){var D=I,R;switch(A){case"start":r[$]=w,R=s++;break;case"end":delete r[$],--s;case"drag":I=pn(F||T,k),R=s;break}L.call(A,b,new oc(A,{sourceEvent:T,subject:S,target:u,identifier:$,active:R,x:I[0]+E,y:I[1]+C,dx:I[0]-D[0],dy:I[1]-D[1],dispatch:L}),P)}}return u.filter=function(b){return arguments.length?(n=typeof b=="function"?b:rs(!!b),u):n},u.container=function(b){return arguments.length?(t=typeof b=="function"?b:rs(b),u):t},u.subject=function(b){return arguments.length?(e=typeof b=="function"?b:rs(b),u):e},u.touchable=function(b){return arguments.length?(i=typeof b=="function"?b:rs(!!b),u):i},u.on=function(){var b=o.on.apply(o,arguments);return b===o?u:b},u.clickDistance=function(b){return arguments.length?(f=(b=+b)*b,u):Math.sqrt(f)},u}const os=n=>()=>n;function Gv(n,{sourceEvent:t,target:e,transform:i,dispatch:r}){Object.defineProperties(this,{type:{value:n,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},transform:{value:i,enumerable:!0,configurable:!0},_:{value:r}})}function Bn(n,t,e){this.k=n,this.x=t,this.y=e}Bn.prototype={constructor:Bn,scale:function(n){return n===1?this:new Bn(this.k*n,this.x,this.y)},translate:function(n,t){return n===0&t===0?this:new Bn(this.k,this.x+this.k*n,this.y+this.k*t)},apply:function(n){return[n[0]*this.k+this.x,n[1]*this.k+this.y]},applyX:function(n){return n*this.k+this.x},applyY:function(n){return n*this.k+this.y},invert:function(n){return[(n[0]-this.x)/this.k,(n[1]-this.y)/this.k]},invertX:function(n){return(n-this.x)/this.k},invertY:function(n){return(n-this.y)/this.k},rescaleX:function(n){return n.copy().domain(n.range().map(this.invertX,this).map(n.invert,n))},rescaleY:function(n){return n.copy().domain(n.range().map(this.invertY,this).map(n.invert,n))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Sr=new Bn(1,0,0);Bn.prototype;function sc(n){n.stopImmediatePropagation()}function _r(n){n.preventDefault(),n.stopImmediatePropagation()}function Yv(n){return(!n.ctrlKey||n.type==="wheel")&&!n.button}function Xv(){var n=this;return n instanceof SVGElement?(n=n.ownerSVGElement||n,n.hasAttribute("viewBox")?(n=n.viewBox.baseVal,[[n.x,n.y],[n.x+n.width,n.y+n.height]]):[[0,0],[n.width.baseVal.value,n.height.baseVal.value]]):[[0,0],[n.clientWidth,n.clientHeight]]}function mf(){return this.__zoom||Sr}function Uv(n){return-n.deltaY*(n.deltaMode===1?.05:n.deltaMode?1:.002)*(n.ctrlKey?10:1)}function jv(){return navigator.maxTouchPoints||"ontouchstart"in this}function qv(n,t,e){var i=n.invertX(t[0][0])-e[0][0],r=n.invertX(t[1][0])-e[1][0],o=n.invertY(t[0][1])-e[0][1],s=n.invertY(t[1][1])-e[1][1];return n.translate(r>i?(i+r)/2:Math.min(0,i)||Math.max(0,r),s>o?(o+s)/2:Math.min(0,o)||Math.max(0,s))}function yf(){var n=Yv,t=Xv,e=qv,i=Uv,r=jv,o=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],a=250,l=Qy,c=Bi("start","zoom","end"),h,f,u,d=500,p=150,y=0,g=10;function m(S){S.property("__zoom",mf).on("wheel.zoom",$,{passive:!1}).on("mousedown.zoom",_).on("dblclick.zoom",L).filter(r).on("touchstart.zoom",I).on("touchmove.zoom",E).on("touchend.zoom touchcancel.zoom",C).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}m.transform=function(S,w,A,T){var F=S.selection?S.selection():S;F.property("__zoom",mf),S!==F?k(S,w,A,T):F.interrupt().each(function(){M(this,arguments).event(T).start().zoom(null,typeof w=="function"?w.apply(this,arguments):w).end()})},m.scaleBy=function(S,w,A,T){m.scaleTo(S,function(){var F=this.__zoom.k,D=typeof w=="function"?w.apply(this,arguments):w;return F*D},A,T)},m.scaleTo=function(S,w,A,T){m.transform(S,function(){var F=t.apply(this,arguments),D=this.__zoom,R=A==null?b(F):typeof A=="function"?A.apply(this,arguments):A,z=D.invert(R),B=typeof w=="function"?w.apply(this,arguments):w;return e(v(x(D,B),R,z),F,s)},A,T)},m.translateBy=function(S,w,A,T){m.transform(S,function(){return e(this.__zoom.translate(typeof w=="function"?w.apply(this,arguments):w,typeof A=="function"?A.apply(this,arguments):A),t.apply(this,arguments),s)},null,T)},m.translateTo=function(S,w,A,T,F){m.transform(S,function(){var D=t.apply(this,arguments),R=this.__zoom,z=T==null?b(D):typeof T=="function"?T.apply(this,arguments):T;return e(Sr.translate(z[0],z[1]).scale(R.k).translate(typeof w=="function"?-w.apply(this,arguments):-w,typeof A=="function"?-A.apply(this,arguments):-A),D,s)},T,F)};function x(S,w){return w=Math.max(o[0],Math.min(o[1],w)),w===S.k?S:new Bn(w,S.x,S.y)}function v(S,w,A){var T=w[0]-A[0]*S.k,F=w[1]-A[1]*S.k;return T===S.x&&F===S.y?S:new Bn(S.k,T,F)}function b(S){return[(+S[0][0]+ +S[1][0])/2,(+S[0][1]+ +S[1][1])/2]}function k(S,w,A,T){S.on("start.zoom",function(){M(this,arguments).event(T).start()}).on("interrupt.zoom end.zoom",function(){M(this,arguments).event(T).end()}).tween("zoom",function(){var F=this,D=arguments,R=M(F,D).event(T),z=t.apply(F,D),B=A==null?b(z):typeof A=="function"?A.apply(F,D):A,W=Math.max(z[1][0]-z[0][0],z[1][1]-z[0][1]),K=F.__zoom,X=typeof w=="function"?w.apply(F,D):w,q=l(K.invert(B).concat(W/K.k),X.invert(B).concat(W/X.k));return function(N){if(N===1)N=X;else{var H=q(N),Y=W/H[2];N=new Bn(Y,B[0]-H[0]*Y,B[1]-H[1]*Y)}R.zoom(null,N)}})}function M(S,w,A){return!A&&S.__zooming||new P(S,w)}function P(S,w){this.that=S,this.args=w,this.active=0,this.sourceEvent=null,this.extent=t.apply(S,w),this.taps=0}P.prototype={event:function(S){return S&&(this.sourceEvent=S),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(S,w){return this.mouse&&S!=="mouse"&&(this.mouse[1]=w.invert(this.mouse[0])),this.touch0&&S!=="touch"&&(this.touch0[1]=w.invert(this.touch0[0])),this.touch1&&S!=="touch"&&(this.touch1[1]=w.invert(this.touch1[0])),this.that.__zoom=w,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(S){var w=st(this.that).datum();c.call(S,this.that,new Gv(S,{sourceEvent:this.sourceEvent,target:m,transform:this.that.__zoom,dispatch:c}),w)}};function $(S,...w){if(!n.apply(this,arguments))return;var A=M(this,w).event(S),T=this.__zoom,F=Math.max(o[0],Math.min(o[1],T.k*Math.pow(2,i.apply(this,arguments)))),D=pn(S);if(A.wheel)(A.mouse[0][0]!==D[0]||A.mouse[0][1]!==D[1])&&(A.mouse[1]=T.invert(A.mouse[0]=D)),clearTimeout(A.wheel);else{if(T.k===F)return;A.mouse=[D,T.invert(D)],Ni(this),A.start()}_r(S),A.wheel=setTimeout(R,p),A.zoom("mouse",e(v(x(T,F),A.mouse[0],A.mouse[1]),A.extent,s));function R(){A.wheel=null,A.end()}}function _(S,...w){if(u||!n.apply(this,arguments))return;var A=S.currentTarget,T=M(this,w,!0).event(S),F=st(S.view).on("mousemove.zoom",B,!0).on("mouseup.zoom",W,!0),D=pn(S,A),R=S.clientX,z=S.clientY;ic(S.view),sc(S),T.mouse=[D,this.__zoom.invert(D)],Ni(this),T.start();function B(K){if(_r(K),!T.moved){var X=K.clientX-R,q=K.clientY-z;T.moved=X*X+q*q>y}T.event(K).zoom("mouse",e(v(T.that.__zoom,T.mouse[0]=pn(K,A),T.mouse[1]),T.extent,s))}function W(K){F.on("mousemove.zoom mouseup.zoom",null),rc(K.view,T.moved),_r(K),T.event(K).end()}}function L(S,...w){if(n.apply(this,arguments)){var A=this.__zoom,T=pn(S.changedTouches?S.changedTouches[0]:S,this),F=A.invert(T),D=A.k*(S.shiftKey?.5:2),R=e(v(x(A,D),T,F),t.apply(this,w),s);_r(S),a>0?st(this).transition().duration(a).call(k,R,T,S):st(this).call(m.transform,R,T,S)}}function I(S,...w){if(n.apply(this,arguments)){var A=S.touches,T=A.length,F=M(this,w,S.changedTouches.length===T).event(S),D,R,z,B;for(sc(S),R=0;R<T;++R)z=A[R],B=pn(z,this),B=[B,this.__zoom.invert(B),z.identifier],F.touch0?!F.touch1&&F.touch0[2]!==B[2]&&(F.touch1=B,F.taps=0):(F.touch0=B,D=!0,F.taps=1+!!h);h&&(h=clearTimeout(h)),D&&(F.taps<2&&(f=B[0],h=setTimeout(function(){h=null},d)),Ni(this),F.start())}}function E(S,...w){if(this.__zooming){var A=M(this,w).event(S),T=S.changedTouches,F=T.length,D,R,z,B;for(_r(S),D=0;D<F;++D)R=T[D],z=pn(R,this),A.touch0&&A.touch0[2]===R.identifier?A.touch0[0]=z:A.touch1&&A.touch1[2]===R.identifier&&(A.touch1[0]=z);if(R=A.that.__zoom,A.touch1){var W=A.touch0[0],K=A.touch0[1],X=A.touch1[0],q=A.touch1[1],N=(N=X[0]-W[0])*N+(N=X[1]-W[1])*N,H=(H=q[0]-K[0])*H+(H=q[1]-K[1])*H;R=x(R,Math.sqrt(N/H)),z=[(W[0]+X[0])/2,(W[1]+X[1])/2],B=[(K[0]+q[0])/2,(K[1]+q[1])/2]}else if(A.touch0)z=A.touch0[0],B=A.touch0[1];else return;A.zoom("touch",e(v(R,z,B),A.extent,s))}}function C(S,...w){if(this.__zooming){var A=M(this,w).event(S),T=S.changedTouches,F=T.length,D,R;for(sc(S),u&&clearTimeout(u),u=setTimeout(function(){u=null},d),D=0;D<F;++D)R=T[D],A.touch0&&A.touch0[2]===R.identifier?delete A.touch0:A.touch1&&A.touch1[2]===R.identifier&&delete A.touch1;if(A.touch1&&!A.touch0&&(A.touch0=A.touch1,delete A.touch1),A.touch0)A.touch0[1]=this.__zoom.invert(A.touch0[0]);else if(A.end(),A.taps===2&&(R=pn(R,this),Math.hypot(f[0]-R[0],f[1]-R[1])<g)){var z=st(this).on("dblclick.zoom");z&&z.apply(this,arguments)}}}return m.wheelDelta=function(S){return arguments.length?(i=typeof S=="function"?S:os(+S),m):i},m.filter=function(S){return arguments.length?(n=typeof S=="function"?S:os(!!S),m):n},m.touchable=function(S){return arguments.length?(r=typeof S=="function"?S:os(!!S),m):r},m.extent=function(S){return arguments.length?(t=typeof S=="function"?S:os([[+S[0][0],+S[0][1]],[+S[1][0],+S[1][1]]]),m):t},m.scaleExtent=function(S){return arguments.length?(o[0]=+S[0],o[1]=+S[1],m):[o[0],o[1]]},m.translateExtent=function(S){return arguments.length?(s[0][0]=+S[0][0],s[1][0]=+S[1][0],s[0][1]=+S[0][1],s[1][1]=+S[1][1],m):[[s[0][0],s[0][1]],[s[1][0],s[1][1]]]},m.constrain=function(S){return arguments.length?(e=S,m):e},m.duration=function(S){return arguments.length?(a=+S,m):a},m.interpolate=function(S){return arguments.length?(l=S,m):l},m.on=function(){var S=c.on.apply(c,arguments);return S===c?m:S},m.clickDistance=function(S){return arguments.length?(y=(S=+S)*S,m):Math.sqrt(y)},m.tapDistance=function(S){return arguments.length?(g=+S,m):g},m}class xf{constructor(t,e,i,r,o){this.resetButton=null,this.selectionRect=null,this.selectionStart=null,this.resetClickHandler=null;const s=typeof t=="string"?{type:t}:t;this.zoomKey=s.key,this.panKey=s.panKey,this.plotGroup=e;const a=s.panning;typeof a=="object"?(this.panningEnabled=a.enabled!==!1,this.panningType=a.type||s.type):(this.panningEnabled=a===!0,this.panningType=s.type);const l=this.isMouseWheelEnabled(s.mouseWheel),c=this.getMouseWheelSensitivity(s.mouseWheel);this.zoomBehavior=yf().scaleExtent([1,20]).extent([[0,0],[i.width,i.height]]).translateExtent([[0,0],[i.width,i.height]]).on("zoom",f=>{const u=f.transform;o.emit("zoom:changed",{type:s.type,transform:u})});const h=!!s.selectionHandler;this.zoomBehavior.filter(f=>f.type==="wheel"?l:f.type==="mousedown"||f.type==="touchstart"?h?!1:this.zoomKey?this.isKeyPressed(f,this.zoomKey):!0:!0),e.call(this.zoomBehavior),c!==1&&l&&e.on("wheel.zoom",f=>{f.preventDefault();const u=e.node().__zoom||Sr,d=f.deltaY>0?1/(1+.1*c):1+.1*c,p=Math.max(1,Math.min(20,u.k*d));e.transition().duration(100).call(this.zoomBehavior.scaleTo,p)}),s.selectionHandler&&this.setupSelectionZoom(e,i,s,o),this.panningEnabled&&this.panKey&&this.setupPanning(e,i,o),this.resetButton=this.createResetButton(s.resetButton),this.resetClickHandler=()=>{e.transition().duration(300).call(this.zoomBehavior.transform,Sr),this.resetButton.style.display="none"},this.resetButton.addEventListener("click",this.resetClickHandler),r.appendChild(this.resetButton),o.on("zoom:changed",()=>{this.resetButton&&(this.resetButton.style.display="block")})}setupSelectionZoom(t,e,i,r){t.on("mousedown.selection",o=>{if(this.zoomKey&&!this.isKeyPressed(o,this.zoomKey)||this.panKey&&this.isKeyPressed(o,this.panKey))return;const s=t.node().getBoundingClientRect();this.selectionStart={x:o.clientX-s.left,y:o.clientY-s.top};const a=i.selectionMarkerFill||"rgba(51,92,173,0.25)";this.selectionRect=t.append("rect").attr("class","katucharts-selection").attr("fill",a).attr("stroke","#4572a7").attr("stroke-width",1).attr("x",this.selectionStart.x).attr("y",0).attr("width",0).attr("height",e.height)}),t.on("mousemove.selection",o=>{if(!this.selectionStart||!this.selectionRect)return;const s=t.node().getBoundingClientRect(),a=o.clientX-s.left,l=Math.min(this.selectionStart.x,a),c=Math.abs(a-this.selectionStart.x);if(this.selectionRect.attr("x",l).attr("width",c),i.type==="xy"||i.type==="y"){const h=o.clientY-s.top,f=Math.min(this.selectionStart.y,h),u=Math.abs(h-this.selectionStart.y);this.selectionRect.attr("y",f).attr("height",u)}}),t.on("mouseup.selection",o=>{if(!this.selectionStart||!this.selectionRect)return;const s=t.node().getBoundingClientRect(),a=o.clientX-s.left,l=o.clientY-s.top;if(this.selectionRect.remove(),this.selectionRect=null,Math.abs(a-this.selectionStart.x)<5){this.selectionStart=null;return}let c=!1;const h={xAxis:[{min:Math.min(this.selectionStart.x,a),max:Math.max(this.selectionStart.x,a)}],yAxis:[{min:Math.min(this.selectionStart.y,l),max:Math.max(this.selectionStart.y,l)}],originalEvent:o,preventDefault:()=>{c=!0}};i.selectionHandler&&i.selectionHandler(h),c||r.emit("chart:selection",h),this.selectionStart=null})}setupPanning(t,e,i){let r=null,o={x:0,y:0};t.on("mousedown.pan",s=>{!this.panKey||!this.isKeyPressed(s,this.panKey)||(s.preventDefault(),r={x:s.clientX-o.x,y:s.clientY-o.y},t.style("cursor","grabbing"))}),t.on("mousemove.pan",s=>{if(!r)return;let a=s.clientX-r.x,l=s.clientY-r.y;this.panningType==="x"&&(l=0),this.panningType==="y"&&(a=0),o={x:a,y:l},i.emit("zoom:panned",{dx:a,dy:l,type:this.panningType})}),t.on("mouseup.pan",()=>{r&&(r=null,t.style("cursor",""))})}isKeyPressed(t,e){switch(e){case"ctrl":return t.ctrlKey;case"alt":return t.altKey;case"shift":return t.shiftKey;case"meta":return t.metaKey;default:return!0}}isMouseWheelEnabled(t){return t===!0||typeof t=="object"&&t.enabled!==!1}getMouseWheelSensitivity(t){return typeof t=="object"&&t.sensitivity!==void 0?t.sensitivity:1}createResetButton(t){const e=document.createElement("button");e.textContent="Reset zoom";const i=(t==null?void 0:t.theme)||{},r=(t==null?void 0:t.position)||{},o=r.y??5,s=r.x!==void 0?`${r.x}px`:"5px";return Object.assign(e.style,{position:"absolute",top:`${o}px`,right:s,padding:i.padding||"3px 8px",fontSize:i.fontSize||"11px",border:i.border||"1px solid #ccc",borderRadius:i.borderRadius||"3px",backgroundColor:i.backgroundColor||"#f9f9f9",color:i.color||"#333",cursor:"pointer",display:"none",zIndex:"5"}),e}setResetHandler(t){this.resetButton&&(this.resetClickHandler&&this.resetButton.removeEventListener("click",this.resetClickHandler),this.resetClickHandler=t,this.resetButton.addEventListener("click",this.resetClickHandler))}setResetButtonVisible(t){this.resetButton&&(this.resetButton.style.display=t?"block":"none")}resetTransform(){const t=this.plotGroup.node();t&&(t.__zoom=Sr)}destroy(){this.resetButton&&(this.resetClickHandler&&this.resetButton.removeEventListener("click",this.resetClickHandler),this.resetButton.remove())}}class bf{constructor(t){this.lastSeriesCount=0,this.lastPointCounts=[],this.config=t}apply(t,e,i){var s,a;if(this.config.enabled===!1)return;const r=this.config.landmarkVerbosity||"all";t.attr("role","img"),i&&t.attr("aria-label",this.config.description||`Chart: ${i}`);const o="katucharts-desc-"+Math.random().toString(36).slice(2,8);t.append("desc").attr("id",o).text(this.config.description||this.generateDescription(e,i)),t.attr("aria-describedby",o),t.attr("tabindex","0"),t.style("outline","none"),this.renderScreenReaderSections(t,e,i),this.applyLandmarks(t,e,r),((s=this.config.keyboardNavigation)==null?void 0:s.enabled)!==!1&&this.setupKeyboardNav(t,e),(a=this.config.announceNewData)!=null&&a.enabled&&this.setupAnnounceNewData(e)}setupAnnounceNewData(t){var o;const e=((o=this.config.announceNewData)==null?void 0:o.minAnnounceInterval)??5e3;let i=0;this.lastSeriesCount=t.length,this.lastPointCounts=t.map(s=>s.data.length),setInterval(()=>{const s=Date.now();if(s-i<e)return;let a=!1,l="";if(t.length!==this.lastSeriesCount)a=!0,l=`Chart updated. Now showing ${t.length} data series.`;else for(let c=0;c<t.length;c++){const h=t[c].data.length,f=this.lastPointCounts[c]??0;if(h!==f){a=!0;const u=h-f;l=`${t[c].config.name||"Series"} updated with ${Math.abs(u)} ${u>0?"new":"fewer"} point${Math.abs(u)!==1?"s":""}. Total: ${h}.`;break}}a&&(this.announce(l),i=s,this.lastSeriesCount=t.length,this.lastPointCounts=t.map(c=>c.data.length))},Math.max(1e3,e/2))}renderScreenReaderSections(t,e,i){var s;const r=this.config.screenReaderSection,o=(s=t.node())==null?void 0:s.parentElement;if(o){if(r!=null&&r.beforeChartFormat){const a=this.createScreenReaderDiv(this.formatSectionTemplate(r.beforeChartFormat,e,i));o.insertBefore(a,t.node())}if(r!=null&&r.afterChartFormat){const a=this.createScreenReaderDiv(this.formatSectionTemplate(r.afterChartFormat,e,i));o.appendChild(a)}}}createScreenReaderDiv(t){const e=document.createElement("div");return e.className="katucharts-screen-reader-region",e.setAttribute("role","region"),e.setAttribute("aria-label","Chart information"),e.innerHTML=t,Object.assign(e.style,{position:"absolute",width:"1px",height:"1px",overflow:"hidden",clip:"rect(0,0,0,0)",whiteSpace:"nowrap"}),e}formatSectionTemplate(t,e,i){return t.replace("{chartTitle}",Zn(i||"Chart")).replace("{numSeries}",String(e.length)).replace("{seriesList}",e.map(r=>Zn(r.config.name||"Series")).join(", "))}applyLandmarks(t,e,i){if(i==="disabled")return;if(i==="one"){t.attr("role","region");return}t.selectAll(".katucharts-legend").attr("role","region").attr("aria-label","Chart legend");const r=this.config.series,o=(r==null?void 0:r.describeSingleSeries)??!1;e.length===1&&!o||e.forEach((s,a)=>{const l=s.group;if(l){const c=s.config.name||`Series ${a+1}`,h=r==null?void 0:r.descriptionFormat,f=h?h.replace("{name}",c).replace("{index}",String(a)):`${c}, ${s.data.length} data points`;l.attr("role","region").attr("aria-label",f)}})}generateDescription(t,e){const i=[];e&&i.push(`${e}.`),i.push(`Chart with ${t.length} data series.`);for(const r of t){const o=r.config.name||`Series ${r.config.index+1}`,s=r.data.length;i.push(`${o}: ${s} data points.`)}return i.join(" ")}setupKeyboardNav(t,e){let i=0,r=0;t.on("keydown",o=>{const s=e[i];if(s)switch(o.key){case"ArrowRight":o.preventDefault(),r=Math.min(r+1,s.data.length-1),this.announcePoint(s,r);break;case"ArrowLeft":o.preventDefault(),r=Math.max(r-1,0),this.announcePoint(s,r);break;case"ArrowUp":o.preventDefault(),i=Math.max(i-1,0),r=0,this.announceSeries(e[i]);break;case"ArrowDown":o.preventDefault(),i=Math.min(i+1,e.length-1),r=0,this.announceSeries(e[i]);break;case"Enter":case" ":o.preventDefault(),this.announcePoint(s,r);break}})}announcePoint(t,e){var o,s;const i=t.data[e];if(!i)return;let r;(o=this.config.point)!=null&&o.descriptionFormatter?r=this.config.point.descriptionFormatter(i):(s=this.config.point)!=null&&s.valueDescriptionFormat?r=this.config.point.valueDescriptionFormat.replace("{index}",String(e+1)).replace("{value}",String(i.y??"")).replace("{xDescription}",i.name||String(i.x??"")).replace("{point.name}",i.name||"").replace("{point.y}",String(i.y??"")).replace("{point.x}",String(i.x??"")).replace("{series.name}",t.config.name||"Series"):r=`${t.config.name||"Series"}, point ${e+1}: ${i.name?i.name+", ":""}value ${i.y}`,this.announce(r)}announceSeries(t){const e=`${t.config.name||"Series"}, ${t.data.length} points`;this.announce(e)}announce(t){let e=document.getElementById("katucharts-announcer");e||(e=document.createElement("div"),e.id="katucharts-announcer",e.setAttribute("role","status"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","true"),Object.assign(e.style,{position:"absolute",width:"1px",height:"1px",overflow:"hidden",clip:"rect(0,0,0,0)",whiteSpace:"nowrap"}),document.body.appendChild(e)),e.textContent=t}}class Zv{constructor(t){this.host=t,this.drilldown=null,this.zoom=null,this.a11yModule=null,this.origXDomains=[],this.origYDomains=[],this.isBoxZoomed=!1}setup(){this.setupSeriesDimming(),this.setupDrilldown(),this.setupZoom(),this.setupAccessibility()}destroy(){var t,e;(t=this.drilldown)==null||t.destroy(),(e=this.zoom)==null||e.destroy()}setupSeriesDimming(){var s,a,l,c;const t=this.host.getEvents(),e=((c=(l=(a=(s=this.host.getOptions().plotOptions)==null?void 0:s.series)==null?void 0:a.states)==null?void 0:l.inactive)==null?void 0:c.opacity)??.2;let i=null;const r=h=>{var f,u,d,p,y,g,m,x,v,b;i&&(clearTimeout(i),i=null);for(const k of this.host.getSeriesInstances())(u=(f=k.group)==null?void 0:f.interrupt)==null||u.call(f,"seriesDim"),k!==h&&k.visible?(x=(m=(g=(y=(p=(d=k.group)==null?void 0:d.transition)==null?void 0:p.call(d,"seriesDim"))==null?void 0:y.duration)==null?void 0:g.call(y,200))==null?void 0:m.attr)==null||x.call(m,"opacity",e):(b=(v=k.group)==null?void 0:v.attr)==null||b.call(v,"opacity",k.config.opacity??1)},o=()=>{i&&clearTimeout(i),i=setTimeout(()=>{var h,f,u,d,p,y,g,m;for(const x of this.host.getSeriesInstances())(f=(h=x.group)==null?void 0:h.interrupt)==null||f.call(h,"seriesDim"),(m=(g=(y=(p=(d=(u=x.group)==null?void 0:u.transition)==null?void 0:d.call(u,"seriesDim"))==null?void 0:p.duration)==null?void 0:y.call(p,200))==null?void 0:g.attr)==null||m.call(g,"opacity",x.config.opacity??1);i=null},50)};t.on("series:mouseenter",r),t.on("series:mouseleave",o),t.on("legend:itemHover",r),t.on("legend:itemLeave",o)}setupDrilldown(){var c;const e=this.host.getOptions().drilldown;if(!((c=e==null?void 0:e.series)!=null&&c.length))return;const i=this.host.getEvents(),r=this.host.getSeriesGroup();this.drilldown=new pf(e,i,this.host.getContainer());const o=[],s=new qn,a=e.animation,l=typeof a=="object"?a.duration??400:a!==!1?400:0;i.on("drilldown:drilldown",h=>{o.push([...this.host.getOptions().series]),l>0?r.transition().duration(l/2).style("opacity","0").on("end",()=>{this.performDrillSwap(h,s),r.style("opacity","0").transition().duration(l/2).style("opacity","1")}):this.performDrillSwap(h,s),this.host.fireEvent("drilldown",h)}),i.on("drilldown:drillup",()=>{const h=o.pop();h&&this.host.setSeries(h),l>0?r.transition().duration(l/2).style("opacity","0").on("end",()=>{this.host.rebuild(),r.style("opacity","0").transition().duration(l/2).style("opacity","1")}):this.host.rebuild(),this.host.fireEvent("drillup")})}performDrillSwap(t,e){const i=this.host.getOptions(),r=t.seriesOptions,o=e.parse({chart:i.chart,xAxis:i.xAxis,yAxis:i.yAxis,series:[r]});this.host.setSeries(o.series),this.host.rebuild()}setupZoom(){const t=this.host.getOptions(),e=t.chart.zooming||t.chart.zoomType;if(!e)return;const i=typeof e=="string"?e:e.type||"x",r={type:i,key:typeof e=="object"?e.key:void 0,mouseWheel:typeof e=="object"?e.mouseWheel:void 0,resetButton:typeof e=="object"?e.resetButton:void 0,panning:typeof e=="object"?e.panning:void 0,panKey:typeof e=="object"?e.panKey:void 0,pinchType:typeof e=="object"?e.pinchType:void 0,selectionMarkerFill:t.chart.selectionMarkerFill,selectionHandler:s=>this.applyBoxZoom(s,i)},o=this.host.getEvents();t.chart.scrollablePlotArea&&(r.mouseWheel=!1),this.zoom=new xf(r,this.host.getPlotGroup(),this.host.getLayout().plotArea,this.host.getContainer(),o),this.zoom.setResetHandler(()=>this.resetBoxZoom()),o.on("zoom:changed",s=>{var f;const a=s.transform,l=s.type,c=this.host.getLayout().plotArea,h=!this.isBoxZoomed;(l==="x"||l==="xy")&&this.host.getXAxes().forEach((u,d)=>{h&&(this.origXDomains[d]=u.scale.domain());const p=this.origXDomains[d];if(!p||typeof p[0]!="number"||typeof p[1]!="number")return;const y=p[1]-p[0],g=(0-a.x)/a.k,m=(c.width-a.x)/a.k;u.updateDomain({min:p[0]+g/c.width*y,max:p[0]+m/c.width*y})}),(l==="y"||l==="xy")&&this.host.getYAxes().forEach((u,d)=>{h&&(this.origYDomains[d]=u.scale.domain());const p=this.origYDomains[d];if(!p||typeof p[0]!="number"||typeof p[1]!="number")return;const y=p[1]-p[0],g=(0-a.y)/a.k,m=(c.height-a.y)/a.k;u.updateDomain({max:p[1]-g/c.height*y,min:p[1]-m/c.height*y})}),this.isBoxZoomed=!0,(f=this.zoom)==null||f.setResetButtonVisible(!0),this.host.renderAfterZoom()})}applyBoxZoom(t,e){var r;const i=!this.isBoxZoomed;return(e==="x"||e==="xy")&&this.host.getXAxes().forEach((s,a)=>{i&&(this.origXDomains[a]=s.scale.domain());const l=s.getValueForPixel(t.xAxis[0].min),c=s.getValueForPixel(t.xAxis[0].max);l==null||c==null||!Number.isFinite(+l)||!Number.isFinite(+c)||s.updateDomain({min:Math.min(+l,+c),max:Math.max(+l,+c)})}),(e==="y"||e==="xy")&&this.host.getYAxes().forEach((s,a)=>{i&&(this.origYDomains[a]=s.scale.domain());const l=s.getValueForPixel(t.yAxis[0].min),c=s.getValueForPixel(t.yAxis[0].max);l==null||c==null||!Number.isFinite(+l)||!Number.isFinite(+c)||s.updateDomain({min:Math.min(+l,+c),max:Math.max(+l,+c)})}),this.isBoxZoomed=!0,(r=this.zoom)==null||r.setResetButtonVisible(!0),this.host.renderAfterZoom(),this.host.getEvents().emit("chart:afterZoom"),!0}resetBoxZoom(){var t,e;this.isBoxZoomed&&(this.host.getXAxes().forEach((i,r)=>{const o=this.origXDomains[r];o&&i.updateDomain({min:o[0],max:o[1]})}),this.host.getYAxes().forEach((i,r)=>{const o=this.origYDomains[r];o&&i.updateDomain({min:o[0],max:o[1]})}),this.isBoxZoomed=!1,this.origXDomains=[],this.origYDomains=[],(t=this.zoom)==null||t.resetTransform(),(e=this.zoom)==null||e.setResetButtonVisible(!1),this.host.renderAfterZoom(),this.host.getEvents().emit("chart:afterZoom"))}setupAccessibility(){var i;const t=this.host.getOptions(),e=t.accessibility;!e||e.enabled===!1||(this.a11yModule=new bf(e),this.a11yModule.apply(this.host.getRenderer().svg,this.host.getSeriesInstances(),((i=t.title)==null?void 0:i.text)??void 0))}}const ac=n=>()=>n;function Kv(n,{sourceEvent:t,target:e,selection:i,mode:r,dispatch:o}){Object.defineProperties(this,{type:{value:n,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},selection:{value:i,enumerable:!0,configurable:!0},mode:{value:r,enumerable:!0,configurable:!0},_:{value:o}})}function Jv(n){n.stopImmediatePropagation()}function cc(n){n.preventDefault(),n.stopImmediatePropagation()}var vf={name:"drag"},lc={name:"space"},Gi={name:"handle"},Yi={name:"center"};const{abs:wf,max:Me,min:Ae}=Math;function kf(n){return[+n[0],+n[1]]}function Mf(n){return[kf(n[0]),kf(n[1])]}var ss={name:"x",handles:["w","e"].map(uc),input:function(n,t){return n==null?null:[[+n[0],t[0][1]],[+n[1],t[1][1]]]},output:function(n){return n&&[n[0][0],n[1][0]]}},hc={},On={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Af={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},Sf={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},Qv={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},t2={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function uc(n){return{type:n}}function e2(n){return!n.ctrlKey&&!n.button}function n2(){var n=this.ownerSVGElement||this;return n.hasAttribute("viewBox")?(n=n.viewBox.baseVal,[[n.x,n.y],[n.x+n.width,n.y+n.height]]):[[0,0],[n.width.baseVal.value,n.height.baseVal.value]]}function i2(){return navigator.maxTouchPoints||"ontouchstart"in this}function fc(n){for(;!n.__brush;)if(!(n=n.parentNode))return;return n.__brush}function r2(n){return n[0][0]===n[1][0]||n[0][1]===n[1][1]}function o2(){return s2(ss)}function s2(n){var t=n2,e=e2,i=i2,r=!0,o=Bi("start","brush","end"),s=6,a;function l(g){var m=g.property("__brush",y).selectAll(".overlay").data([uc("overlay")]);m.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",On.overlay).merge(m).each(function(){var v=fc(this).extent;st(this).attr("x",v[0][0]).attr("y",v[0][1]).attr("width",v[1][0]-v[0][0]).attr("height",v[1][1]-v[0][1])}),g.selectAll(".selection").data([uc("selection")]).enter().append("rect").attr("class","selection").attr("cursor",On.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var x=g.selectAll(".handle").data(n.handles,function(v){return v.type});x.exit().remove(),x.enter().append("rect").attr("class",function(v){return"handle handle--"+v.type}).attr("cursor",function(v){return On[v.type]}),g.each(c).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",u).filter(i).on("touchstart.brush",u).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}l.move=function(g,m,x){g.tween?g.on("start.brush",function(v){h(this,arguments).beforestart().start(v)}).on("interrupt.brush end.brush",function(v){h(this,arguments).end(v)}).tween("brush",function(){var v=this,b=v.__brush,k=h(v,arguments),M=b.selection,P=n.input(typeof m=="function"?m.apply(this,arguments):m,b.extent),$=ce(M,P);function _(L){b.selection=L===1&&P===null?null:$(L),c.call(v),k.brush()}return M!==null&&P!==null?_:_(1)}):g.each(function(){var v=this,b=arguments,k=v.__brush,M=n.input(typeof m=="function"?m.apply(v,b):m,k.extent),P=h(v,b).beforestart();Ni(v),k.selection=M===null?null:M,c.call(v),P.start(x).brush(x).end(x)})},l.clear=function(g,m){l.move(g,null,m)};function c(){var g=st(this),m=fc(this).selection;m?(g.selectAll(".selection").style("display",null).attr("x",m[0][0]).attr("y",m[0][1]).attr("width",m[1][0]-m[0][0]).attr("height",m[1][1]-m[0][1]),g.selectAll(".handle").style("display",null).attr("x",function(x){return x.type[x.type.length-1]==="e"?m[1][0]-s/2:m[0][0]-s/2}).attr("y",function(x){return x.type[0]==="s"?m[1][1]-s/2:m[0][1]-s/2}).attr("width",function(x){return x.type==="n"||x.type==="s"?m[1][0]-m[0][0]+s:s}).attr("height",function(x){return x.type==="e"||x.type==="w"?m[1][1]-m[0][1]+s:s})):g.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function h(g,m,x){var v=g.__brush.emitter;return v&&(!x||!v.clean)?v:new f(g,m,x)}function f(g,m,x){this.that=g,this.args=m,this.state=g.__brush,this.active=0,this.clean=x}f.prototype={beforestart:function(){return++this.active===1&&(this.state.emitter=this,this.starting=!0),this},start:function(g,m){return this.starting?(this.starting=!1,this.emit("start",g,m)):this.emit("brush",g),this},brush:function(g,m){return this.emit("brush",g,m),this},end:function(g,m){return--this.active===0&&(delete this.state.emitter,this.emit("end",g,m)),this},emit:function(g,m,x){var v=st(this.that).datum();o.call(g,this.that,new Kv(g,{sourceEvent:m,target:l,selection:n.output(this.state.selection),mode:x,dispatch:o}),v)}};function u(g){if(a&&!g.touches||!e.apply(this,arguments))return;var m=this,x=g.target.__data__.type,v=(r&&g.metaKey?x="overlay":x)==="selection"?vf:r&&g.altKey?Yi:Gi,b=n===hc?null:Qv[x],k=n===ss?null:t2[x],M=fc(m),P=M.extent,$=M.selection,_=P[0][0],L,I,E=P[0][1],C,S,w=P[1][0],A,T,F=P[1][1],D,R,z=0,B=0,W,K=b&&k&&r&&g.shiftKey,X,q,N=Array.from(g.touches||[g],ct=>{const it=ct.identifier;return ct=pn(ct,m),ct.point0=ct.slice(),ct.identifier=it,ct});Ni(m);var H=h(m,arguments,!0).beforestart();if(x==="overlay"){$&&(W=!0);const ct=[N[0],N[1]||N[0]];M.selection=$=[[L=n===hc?_:Ae(ct[0][0],ct[1][0]),C=n===ss?E:Ae(ct[0][1],ct[1][1])],[A=n===hc?w:Me(ct[0][0],ct[1][0]),D=n===ss?F:Me(ct[0][1],ct[1][1])]],N.length>1&&nt(g)}else L=$[0][0],C=$[0][1],A=$[1][0],D=$[1][1];I=L,S=C,T=A,R=D;var Y=st(m).attr("pointer-events","none"),G=Y.selectAll(".overlay").attr("cursor",On[x]);if(g.touches)H.moved=O,H.ended=et;else{var Q=st(g.view).on("mousemove.brush",O,!0).on("mouseup.brush",et,!0);r&&Q.on("keydown.brush",ht,!0).on("keyup.brush",ft,!0),ic(g.view)}c.call(m),H.start(g,v.name);function O(ct){for(const it of ct.changedTouches||[ct])for(const U of N)U.identifier===it.identifier&&(U.cur=pn(it,m));if(K&&!X&&!q&&N.length===1){const it=N[0];wf(it.cur[0]-it[0])>wf(it.cur[1]-it[1])?q=!0:X=!0}for(const it of N)it.cur&&(it[0]=it.cur[0],it[1]=it.cur[1]);W=!0,cc(ct),nt(ct)}function nt(ct){const it=N[0],U=it.point0;var at;switch(z=it[0]-U[0],B=it[1]-U[1],v){case lc:case vf:{b&&(z=Me(_-L,Ae(w-A,z)),I=L+z,T=A+z),k&&(B=Me(E-C,Ae(F-D,B)),S=C+B,R=D+B);break}case Gi:{N[1]?(b&&(I=Me(_,Ae(w,N[0][0])),T=Me(_,Ae(w,N[1][0])),b=1),k&&(S=Me(E,Ae(F,N[0][1])),R=Me(E,Ae(F,N[1][1])),k=1)):(b<0?(z=Me(_-L,Ae(w-L,z)),I=L+z,T=A):b>0&&(z=Me(_-A,Ae(w-A,z)),I=L,T=A+z),k<0?(B=Me(E-C,Ae(F-C,B)),S=C+B,R=D):k>0&&(B=Me(E-D,Ae(F-D,B)),S=C,R=D+B));break}case Yi:{b&&(I=Me(_,Ae(w,L-z*b)),T=Me(_,Ae(w,A+z*b))),k&&(S=Me(E,Ae(F,C-B*k)),R=Me(E,Ae(F,D+B*k)));break}}T<I&&(b*=-1,at=L,L=A,A=at,at=I,I=T,T=at,x in Af&&G.attr("cursor",On[x=Af[x]])),R<S&&(k*=-1,at=C,C=D,D=at,at=S,S=R,R=at,x in Sf&&G.attr("cursor",On[x=Sf[x]])),M.selection&&($=M.selection),X&&(I=$[0][0],T=$[1][0]),q&&(S=$[0][1],R=$[1][1]),($[0][0]!==I||$[0][1]!==S||$[1][0]!==T||$[1][1]!==R)&&(M.selection=[[I,S],[T,R]],c.call(m),H.brush(ct,v.name))}function et(ct){if(Jv(ct),ct.touches){if(ct.touches.length)return;a&&clearTimeout(a),a=setTimeout(function(){a=null},500)}else rc(ct.view,W),Q.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);Y.attr("pointer-events","all"),G.attr("cursor",On.overlay),M.selection&&($=M.selection),r2($)&&(M.selection=null,c.call(m)),H.end(ct,v.name)}function ht(ct){switch(ct.keyCode){case 16:{K=b&&k;break}case 18:{v===Gi&&(b&&(A=T-z*b,L=I+z*b),k&&(D=R-B*k,C=S+B*k),v=Yi,nt(ct));break}case 32:{(v===Gi||v===Yi)&&(b<0?A=T-z:b>0&&(L=I-z),k<0?D=R-B:k>0&&(C=S-B),v=lc,G.attr("cursor",On.selection),nt(ct));break}default:return}cc(ct)}function ft(ct){switch(ct.keyCode){case 16:{K&&(X=q=K=!1,nt(ct));break}case 18:{v===Yi&&(b<0?A=T:b>0&&(L=I),k<0?D=R:k>0&&(C=S),v=Gi,nt(ct));break}case 32:{v===lc&&(ct.altKey?(b&&(A=T-z*b,L=I+z*b),k&&(D=R-B*k,C=S+B*k),v=Yi):(b<0?A=T:b>0&&(L=I),k<0?D=R:k>0&&(C=S),v=Gi),G.attr("cursor",On[x]),nt(ct));break}default:return}cc(ct)}}function d(g){h(this,arguments).moved(g)}function p(g){h(this,arguments).ended(g)}function y(){var g=this.__brush||{selection:null};return g.extent=Mf(t.apply(this,arguments)),g.dim=n,g}return l.extent=function(g){return arguments.length?(t=typeof g=="function"?g:ac(Mf(g)),l):t},l.filter=function(g){return arguments.length?(e=typeof g=="function"?g:ac(!!g),l):e},l.touchable=function(g){return arguments.length?(i=typeof g=="function"?g:ac(!!g),l):i},l.handleSize=function(g){return arguments.length?(s=+g,l):s},l.keyModifiers=function(g){return arguments.length?(r=!!g,l):r},l.on=function(){var g=o.on.apply(o,arguments);return g===o?l:g},l}function Dt(n){return function(){return n}}const _f=Math.abs,Se=Math.atan2,wi=Math.cos,a2=Math.max,dc=Math.min,wn=Math.sin,Ie=Math.sqrt,_e=1e-12,Xi=Math.PI,as=Xi/2,Cr=2*Xi;function c2(n){return n>1?0:n<-1?Xi:Math.acos(n)}function Cf(n){return n>=1?as:n<=-1?-as:Math.asin(n)}const pc=Math.PI,gc=2*pc,ki=1e-6,l2=gc-ki;function Pf(n){this._+=n[0];for(let t=1,e=n.length;t<e;++t)this._+=arguments[t]+n[t]}function h2(n){let t=Math.floor(n);if(!(t>=0))throw new Error(`invalid digits: ${n}`);if(t>15)return Pf;const e=10**t;return function(i){this._+=i[0];for(let r=1,o=i.length;r<o;++r)this._+=Math.round(arguments[r]*e)/e+i[r]}}let u2=class{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?Pf:h2(t)}moveTo(t,e){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,e){this._append`L${this._x1=+t},${this._y1=+e}`}quadraticCurveTo(t,e,i,r){this._append`Q${+t},${+e},${this._x1=+i},${this._y1=+r}`}bezierCurveTo(t,e,i,r,o,s){this._append`C${+t},${+e},${+i},${+r},${this._x1=+o},${this._y1=+s}`}arcTo(t,e,i,r,o){if(t=+t,e=+e,i=+i,r=+r,o=+o,o<0)throw new Error(`negative radius: ${o}`);let s=this._x1,a=this._y1,l=i-t,c=r-e,h=s-t,f=a-e,u=h*h+f*f;if(this._x1===null)this._append`M${this._x1=t},${this._y1=e}`;else if(u>ki)if(!(Math.abs(f*l-c*h)>ki)||!o)this._append`L${this._x1=t},${this._y1=e}`;else{let d=i-s,p=r-a,y=l*l+c*c,g=d*d+p*p,m=Math.sqrt(y),x=Math.sqrt(u),v=o*Math.tan((pc-Math.acos((y+u-g)/(2*m*x)))/2),b=v/x,k=v/m;Math.abs(b-1)>ki&&this._append`L${t+b*h},${e+b*f}`,this._append`A${o},${o},0,0,${+(f*d>h*p)},${this._x1=t+k*l},${this._y1=e+k*c}`}}arc(t,e,i,r,o,s){if(t=+t,e=+e,i=+i,s=!!s,i<0)throw new Error(`negative radius: ${i}`);let a=i*Math.cos(r),l=i*Math.sin(r),c=t+a,h=e+l,f=1^s,u=s?r-o:o-r;this._x1===null?this._append`M${c},${h}`:(Math.abs(this._x1-c)>ki||Math.abs(this._y1-h)>ki)&&this._append`L${c},${h}`,i&&(u<0&&(u=u%gc+gc),u>l2?this._append`A${i},${i},0,1,${f},${t-a},${e-l}A${i},${i},0,1,${f},${this._x1=c},${this._y1=h}`:u>ki&&this._append`A${i},${i},0,${+(u>=pc)},${f},${this._x1=t+i*Math.cos(o)},${this._y1=e+i*Math.sin(o)}`)}rect(t,e,i,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${i=+i}v${+r}h${-i}Z`}toString(){return this._}};function Pr(n){let t=3;return n.digits=function(e){if(!arguments.length)return t;if(e==null)t=null;else{const i=Math.floor(e);if(!(i>=0))throw new RangeError(`invalid digits: ${e}`);t=i}return n},()=>new u2(t)}function f2(n){return n.innerRadius}function d2(n){return n.outerRadius}function p2(n){return n.startAngle}function g2(n){return n.endAngle}function m2(n){return n&&n.padAngle}function y2(n,t,e,i,r,o,s,a){var l=e-n,c=i-t,h=s-r,f=a-o,u=f*l-h*c;if(!(u*u<_e))return u=(h*(t-o)-f*(n-r))/u,[n+u*l,t+u*c]}function cs(n,t,e,i,r,o,s){var a=n-e,l=t-i,c=(s?o:-o)/Ie(a*a+l*l),h=c*l,f=-c*a,u=n+h,d=t+f,p=e+h,y=i+f,g=(u+p)/2,m=(d+y)/2,x=p-u,v=y-d,b=x*x+v*v,k=r-o,M=u*y-p*d,P=(v<0?-1:1)*Ie(a2(0,k*k*b-M*M)),$=(M*v-x*P)/b,_=(-M*x-v*P)/b,L=(M*v+x*P)/b,I=(-M*x+v*P)/b,E=$-g,C=_-m,S=L-g,w=I-m;return E*E+C*C>S*S+w*w&&($=L,_=I),{cx:$,cy:_,x01:-h,y01:-f,x11:$*(r/k-1),y11:_*(r/k-1)}}function Ce(){var n=f2,t=d2,e=Dt(0),i=null,r=p2,o=g2,s=m2,a=null,l=Pr(c);function c(){var h,f,u=+n.apply(this,arguments),d=+t.apply(this,arguments),p=r.apply(this,arguments)-as,y=o.apply(this,arguments)-as,g=_f(y-p),m=y>p;if(a||(a=h=l()),d<u&&(f=d,d=u,u=f),!(d>_e))a.moveTo(0,0);else if(g>Cr-_e)a.moveTo(d*wi(p),d*wn(p)),a.arc(0,0,d,p,y,!m),u>_e&&(a.moveTo(u*wi(y),u*wn(y)),a.arc(0,0,u,y,p,m));else{var x=p,v=y,b=p,k=y,M=g,P=g,$=s.apply(this,arguments)/2,_=$>_e&&(i?+i.apply(this,arguments):Ie(u*u+d*d)),L=dc(_f(d-u)/2,+e.apply(this,arguments)),I=L,E=L,C,S;if(_>_e){var w=Cf(_/u*wn($)),A=Cf(_/d*wn($));(M-=w*2)>_e?(w*=m?1:-1,b+=w,k-=w):(M=0,b=k=(p+y)/2),(P-=A*2)>_e?(A*=m?1:-1,x+=A,v-=A):(P=0,x=v=(p+y)/2)}var T=d*wi(x),F=d*wn(x),D=u*wi(k),R=u*wn(k);if(L>_e){var z=d*wi(v),B=d*wn(v),W=u*wi(b),K=u*wn(b),X;if(g<Xi)if(X=y2(T,F,W,K,z,B,D,R)){var q=T-X[0],N=F-X[1],H=z-X[0],Y=B-X[1],G=1/wn(c2((q*H+N*Y)/(Ie(q*q+N*N)*Ie(H*H+Y*Y)))/2),Q=Ie(X[0]*X[0]+X[1]*X[1]);I=dc(L,(u-Q)/(G-1)),E=dc(L,(d-Q)/(G+1))}else I=E=0}P>_e?E>_e?(C=cs(W,K,T,F,d,E,m),S=cs(z,B,D,R,d,E,m),a.moveTo(C.cx+C.x01,C.cy+C.y01),E<L?a.arc(C.cx,C.cy,E,Se(C.y01,C.x01),Se(S.y01,S.x01),!m):(a.arc(C.cx,C.cy,E,Se(C.y01,C.x01),Se(C.y11,C.x11),!m),a.arc(0,0,d,Se(C.cy+C.y11,C.cx+C.x11),Se(S.cy+S.y11,S.cx+S.x11),!m),a.arc(S.cx,S.cy,E,Se(S.y11,S.x11),Se(S.y01,S.x01),!m))):(a.moveTo(T,F),a.arc(0,0,d,x,v,!m)):a.moveTo(T,F),!(u>_e)||!(M>_e)?a.lineTo(D,R):I>_e?(C=cs(D,R,z,B,u,-I,m),S=cs(T,F,W,K,u,-I,m),a.lineTo(C.cx+C.x01,C.cy+C.y01),I<L?a.arc(C.cx,C.cy,I,Se(C.y01,C.x01),Se(S.y01,S.x01),!m):(a.arc(C.cx,C.cy,I,Se(C.y01,C.x01),Se(C.y11,C.x11),!m),a.arc(0,0,u,Se(C.cy+C.y11,C.cx+C.x11),Se(S.cy+S.y11,S.cx+S.x11),m),a.arc(S.cx,S.cy,I,Se(S.y11,S.x11),Se(S.y01,S.x01),!m))):a.arc(0,0,u,k,b,m)}if(a.closePath(),h)return a=null,h+""||null}return c.centroid=function(){var h=(+n.apply(this,arguments)+ +t.apply(this,arguments))/2,f=(+r.apply(this,arguments)+ +o.apply(this,arguments))/2-Xi/2;return[wi(f)*h,wn(f)*h]},c.innerRadius=function(h){return arguments.length?(n=typeof h=="function"?h:Dt(+h),c):n},c.outerRadius=function(h){return arguments.length?(t=typeof h=="function"?h:Dt(+h),c):t},c.cornerRadius=function(h){return arguments.length?(e=typeof h=="function"?h:Dt(+h),c):e},c.padRadius=function(h){return arguments.length?(i=h==null?null:typeof h=="function"?h:Dt(+h),c):i},c.startAngle=function(h){return arguments.length?(r=typeof h=="function"?h:Dt(+h),c):r},c.endAngle=function(h){return arguments.length?(o=typeof h=="function"?h:Dt(+h),c):o},c.padAngle=function(h){return arguments.length?(s=typeof h=="function"?h:Dt(+h),c):s},c.context=function(h){return arguments.length?(a=h??null,c):a},c}var x2=Array.prototype.slice;function mc(n){return typeof n=="object"&&"length"in n?n:Array.from(n)}function Ef(n){this._context=n}Ef.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(n,t){switch(n=+n,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(n,t):this._context.moveTo(n,t);break;case 1:this._point=2;default:this._context.lineTo(n,t);break}}};function Ui(n){return new Ef(n)}function yc(n){return n[0]}function xc(n){return n[1]}function Mi(n,t){var e=Dt(!0),i=null,r=Ui,o=null,s=Pr(a);n=typeof n=="function"?n:n===void 0?yc:Dt(n),t=typeof t=="function"?t:t===void 0?xc:Dt(t);function a(l){var c,h=(l=mc(l)).length,f,u=!1,d;for(i==null&&(o=r(d=s())),c=0;c<=h;++c)!(c<h&&e(f=l[c],c,l))===u&&((u=!u)?o.lineStart():o.lineEnd()),u&&o.point(+n(f,c,l),+t(f,c,l));if(d)return o=null,d+""||null}return a.x=function(l){return arguments.length?(n=typeof l=="function"?l:Dt(+l),a):n},a.y=function(l){return arguments.length?(t=typeof l=="function"?l:Dt(+l),a):t},a.defined=function(l){return arguments.length?(e=typeof l=="function"?l:Dt(!!l),a):e},a.curve=function(l){return arguments.length?(r=l,i!=null&&(o=r(i)),a):r},a.context=function(l){return arguments.length?(l==null?i=o=null:o=r(i=l),a):i},a}function ji(n,t,e){var i=null,r=Dt(!0),o=null,s=Ui,a=null,l=Pr(c);n=typeof n=="function"?n:n===void 0?yc:Dt(+n),t=typeof t=="function"?t:Dt(t===void 0?0:+t),e=typeof e=="function"?e:e===void 0?xc:Dt(+e);function c(f){var u,d,p,y=(f=mc(f)).length,g,m=!1,x,v=new Array(y),b=new Array(y);for(o==null&&(a=s(x=l())),u=0;u<=y;++u){if(!(u<y&&r(g=f[u],u,f))===m)if(m=!m)d=u,a.areaStart(),a.lineStart();else{for(a.lineEnd(),a.lineStart(),p=u-1;p>=d;--p)a.point(v[p],b[p]);a.lineEnd(),a.areaEnd()}m&&(v[u]=+n(g,u,f),b[u]=+t(g,u,f),a.point(i?+i(g,u,f):v[u],e?+e(g,u,f):b[u]))}if(x)return a=null,x+""||null}function h(){return Mi().defined(r).curve(s).context(o)}return c.x=function(f){return arguments.length?(n=typeof f=="function"?f:Dt(+f),i=null,c):n},c.x0=function(f){return arguments.length?(n=typeof f=="function"?f:Dt(+f),c):n},c.x1=function(f){return arguments.length?(i=f==null?null:typeof f=="function"?f:Dt(+f),c):i},c.y=function(f){return arguments.length?(t=typeof f=="function"?f:Dt(+f),e=null,c):t},c.y0=function(f){return arguments.length?(t=typeof f=="function"?f:Dt(+f),c):t},c.y1=function(f){return arguments.length?(e=f==null?null:typeof f=="function"?f:Dt(+f),c):e},c.lineX0=c.lineY0=function(){return h().x(n).y(t)},c.lineY1=function(){return h().x(n).y(e)},c.lineX1=function(){return h().x(i).y(t)},c.defined=function(f){return arguments.length?(r=typeof f=="function"?f:Dt(!!f),c):r},c.curve=function(f){return arguments.length?(s=f,o!=null&&(a=s(o)),c):s},c.context=function(f){return arguments.length?(f==null?o=a=null:a=s(o=f),c):o},c}function b2(n,t){return t<n?-1:t>n?1:t>=n?0:NaN}function v2(n){return n}function w2(){var n=v2,t=b2,e=null,i=Dt(0),r=Dt(Cr),o=Dt(0);function s(a){var l,c=(a=mc(a)).length,h,f,u=0,d=new Array(c),p=new Array(c),y=+i.apply(this,arguments),g=Math.min(Cr,Math.max(-Cr,r.apply(this,arguments)-y)),m,x=Math.min(Math.abs(g)/c,o.apply(this,arguments)),v=x*(g<0?-1:1),b;for(l=0;l<c;++l)(b=p[d[l]=l]=+n(a[l],l,a))>0&&(u+=b);for(t!=null?d.sort(function(k,M){return t(p[k],p[M])}):e!=null&&d.sort(function(k,M){return e(a[k],a[M])}),l=0,f=u?(g-c*v)/u:0;l<c;++l,y=m)h=d[l],b=p[h],m=y+(b>0?b*f:0)+v,p[h]={data:a[h],index:l,value:b,startAngle:y,endAngle:m,padAngle:x};return p}return s.value=function(a){return arguments.length?(n=typeof a=="function"?a:Dt(+a),s):n},s.sortValues=function(a){return arguments.length?(t=a,e=null,s):t},s.sort=function(a){return arguments.length?(e=a,t=null,s):e},s.startAngle=function(a){return arguments.length?(i=typeof a=="function"?a:Dt(+a),s):i},s.endAngle=function(a){return arguments.length?(r=typeof a=="function"?a:Dt(+a),s):r},s.padAngle=function(a){return arguments.length?(o=typeof a=="function"?a:Dt(+a),s):o},s}var Tf=bc(Ui);function $f(n){this._curve=n}$f.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(n,t){this._curve.point(t*Math.sin(n),t*-Math.cos(n))}};function bc(n){function t(e){return new $f(n(e))}return t._curve=n,t}function Er(n){var t=n.curve;return n.angle=n.x,delete n.x,n.radius=n.y,delete n.y,n.curve=function(e){return arguments.length?t(bc(e)):t()._curve},n}function k2(){return Er(Mi().curve(Tf))}function M2(){var n=ji().curve(Tf),t=n.curve,e=n.lineX0,i=n.lineX1,r=n.lineY0,o=n.lineY1;return n.angle=n.x,delete n.x,n.startAngle=n.x0,delete n.x0,n.endAngle=n.x1,delete n.x1,n.radius=n.y,delete n.y,n.innerRadius=n.y0,delete n.y0,n.outerRadius=n.y1,delete n.y1,n.lineStartAngle=function(){return Er(e())},delete n.lineX0,n.lineEndAngle=function(){return Er(i())},delete n.lineX1,n.lineInnerRadius=function(){return Er(r())},delete n.lineY0,n.lineOuterRadius=function(){return Er(o())},delete n.lineY1,n.curve=function(s){return arguments.length?t(bc(s)):t()._curve},n}class Lf{constructor(t,e){this._context=t,this._x=e}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,e){switch(t=+t,e=+e,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,e,t,e):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+e)/2,t,this._y0,t,e);break}}this._x0=t,this._y0=e}}function A2(n){return new Lf(n,!0)}function S2(n){return new Lf(n,!1)}function _2(n){return n.source}function C2(n){return n.target}function If(n){let t=_2,e=C2,i=yc,r=xc,o=null,s=null,a=Pr(l);function l(){let c;const h=x2.call(arguments),f=t.apply(this,h),u=e.apply(this,h);if(o==null&&(s=n(c=a())),s.lineStart(),h[0]=f,s.point(+i.apply(this,h),+r.apply(this,h)),h[0]=u,s.point(+i.apply(this,h),+r.apply(this,h)),s.lineEnd(),c)return s=null,c+""||null}return l.source=function(c){return arguments.length?(t=c,l):t},l.target=function(c){return arguments.length?(e=c,l):e},l.x=function(c){return arguments.length?(i=typeof c=="function"?c:Dt(+c),l):i},l.y=function(c){return arguments.length?(r=typeof c=="function"?c:Dt(+c),l):r},l.context=function(c){return arguments.length?(c==null?o=s=null:s=n(o=c),l):o},l}function P2(){return If(A2)}function E2(){return If(S2)}const Kn={draw(n,t){const e=Ie(t/Xi);n.moveTo(e,0),n.arc(0,0,e,0,Cr)}},vc={draw(n,t){const e=Ie(t/5)/2;n.moveTo(-3*e,-e),n.lineTo(-e,-e),n.lineTo(-e,-3*e),n.lineTo(e,-3*e),n.lineTo(e,-e),n.lineTo(3*e,-e),n.lineTo(3*e,e),n.lineTo(e,e),n.lineTo(e,3*e),n.lineTo(-e,3*e),n.lineTo(-e,e),n.lineTo(-3*e,e),n.closePath()}},Ff=Ie(1/3),T2=Ff*2,wc={draw(n,t){const e=Ie(t/T2),i=e*Ff;n.moveTo(0,-e),n.lineTo(i,0),n.lineTo(0,e),n.lineTo(-i,0),n.closePath()}},kc={draw(n,t){const e=Ie(t),i=-e/2;n.rect(i,i,e,e)}},Mc=Ie(3),Ac={draw(n,t){const e=-Ie(t/(Mc*3));n.moveTo(0,e*2),n.lineTo(-Mc*e,-e),n.lineTo(Mc*e,-e),n.closePath()}},$2=Ie(3),Sc={draw(n,t){const e=Ie(t)*.6824,i=e/2,r=e*$2/2;n.moveTo(0,-e),n.lineTo(r,i),n.lineTo(-r,i),n.closePath()}};function rn(n,t){let e=null,i=Pr(r);n=typeof n=="function"?n:Dt(n||Kn),t=typeof t=="function"?t:Dt(t===void 0?64:+t);function r(){let o;if(e||(e=o=i()),n.apply(this,arguments).draw(e,+t.apply(this,arguments)),o)return e=null,o+""||null}return r.type=function(o){return arguments.length?(n=typeof o=="function"?o:Dt(o),r):n},r.size=function(o){return arguments.length?(t=typeof o=="function"?o:Dt(+o),r):t},r.context=function(o){return arguments.length?(e=o??null,r):e},r}function Df(){}function Rf(n,t,e){n._context.bezierCurveTo(n._x1+n._k*(n._x2-n._x0),n._y1+n._k*(n._y2-n._y0),n._x2+n._k*(n._x1-t),n._y2+n._k*(n._y1-e),n._x2,n._y2)}function _c(n,t){this._context=n,this._k=(1-t)/6}_c.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Rf(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(n,t){switch(n=+n,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(n,t):this._context.moveTo(n,t);break;case 1:this._point=2,this._x1=n,this._y1=t;break;case 2:this._point=3;default:Rf(this,n,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=n,this._y0=this._y1,this._y1=this._y2,this._y2=t}},function n(t){function e(i){return new _c(i,t)}return e.tension=function(i){return n(+i)},e}(0);function L2(n,t,e){var i=n._x1,r=n._y1,o=n._x2,s=n._y2;if(n._l01_a>_e){var a=2*n._l01_2a+3*n._l01_a*n._l12_a+n._l12_2a,l=3*n._l01_a*(n._l01_a+n._l12_a);i=(i*a-n._x0*n._l12_2a+n._x2*n._l01_2a)/l,r=(r*a-n._y0*n._l12_2a+n._y2*n._l01_2a)/l}if(n._l23_a>_e){var c=2*n._l23_2a+3*n._l23_a*n._l12_a+n._l12_2a,h=3*n._l23_a*(n._l23_a+n._l12_a);o=(o*c+n._x1*n._l23_2a-t*n._l12_2a)/h,s=(s*c+n._y1*n._l23_2a-e*n._l12_2a)/h}n._context.bezierCurveTo(i,r,o,s,n._x2,n._y2)}function zf(n,t){this._context=n,this._alpha=t}zf.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(n,t){if(n=+n,t=+t,this._point){var e=this._x2-n,i=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(n,t):this._context.moveTo(n,t);break;case 1:this._point=2;break;case 2:this._point=3;default:L2(this,n,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=n,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const Bf=function n(t){function e(i){return t?new zf(i,t):new _c(i,0)}return e.alpha=function(i){return n(+i)},e}(.5);function Of(n){this._context=n}Of.prototype={areaStart:Df,areaEnd:Df,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(n,t){n=+n,t=+t,this._point?this._context.lineTo(n,t):(this._point=1,this._context.moveTo(n,t))}};function I2(n){return new Of(n)}function ls(n,t){this._context=n,this._t=t}ls.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&this._point===2&&this._context.lineTo(this._x,this._y),(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(n,t){switch(n=+n,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(n,t):this._context.moveTo(n,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(n,t);else{var e=this._x*(1-this._t)+n*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,t)}break}}this._x=n,this._y=t}};function Nf(n){return new ls(n,.5)}function Wf(n){return new ls(n,0)}function Hf(n){return new ls(n,1)}class Vf{constructor(t,e,i,r,o,s){var m;if(this.width=0,this.height=0,this.brush=null,this.brushGroup=null,this.programmatic=!1,this.config=t,this.events=o,!t.enabled){this.group=e.append("g").style("display","none");return}this.height=t.height||40,t.margin;const a=r-this.height-10;this.width=i.width,this.group=e.append("g").attr("class","katucharts-navigator").attr("transform",`translate(${i.x},${a})`);const l=t.maskFill??"rgba(102,133,194,0.3)",c=t.maskInside??!0,h=((m=t.series)==null?void 0:m.color)??"#6699cc",f=t.handles||{},u=f.backgroundColor??"#f2f2f2",d=f.borderColor??"#999999",p=f.enabled!==!1;this.group.append("rect").attr("width",this.width).attr("height",this.height).attr("fill","#f2f2f2").attr("stroke",t.outlineColor||"#cccccc").attr("stroke-width",t.outlineWidth||1),this.renderSeriesLine(s,h);const y=o2().extent([[0,0],[this.width,this.height]]).on("end",x=>{if(this.programmatic||!x.selection)return;const[v,b]=x.selection;o.emit("navigator:brushed",{x0:v/this.width,x1:b/this.width})});this.brush=y;const g=this.group.append("g").attr("class","katucharts-navigator-brush").call(y);this.brushGroup=g,g.selectAll(".selection").attr("fill",c?l:"none").attr("stroke","none"),p?g.selectAll(".handle").attr("fill",u).attr("stroke",d).attr("stroke-width",f.lineWidth??1):g.selectAll(".handle").style("display","none"),t.adaptToUpdatedData!==!1&&o.on("series:dataUpdated",x=>{this.updateSeriesLine(x,h)})}renderSeriesLine(t,e){if(t.length===0)return;const i=[Math.min(...t.map(l=>l.x)),Math.max(...t.map(l=>l.x))],r=[Math.min(...t.map(l=>l.y)),Math.max(...t.map(l=>l.y))],o=ke().domain(i).range([0,this.width]),s=ke().domain(r).range([this.height-2,2]),a=Mi().x(l=>o(l.x)).y(l=>s(l.y));this.group.selectAll(".katucharts-navigator-line").remove(),this.group.append("path").datum(t).attr("class","katucharts-navigator-line").attr("d",a).attr("fill","none").attr("stroke",e).attr("stroke-width",1)}updateSeriesLine(t,e){this.renderSeriesLine(t,e)}setSelection(t,e){if(!(!this.brush||!this.brushGroup)){if(this.programmatic=!0,t<=5e-4&&e>=.9995)this.brush.move(this.brushGroup,null);else{const i=Math.max(0,Math.min(1,t))*this.width,r=Math.max(0,Math.min(1,e))*this.width;this.brush.move(this.brushGroup,[Math.min(i,r),Math.max(i,r)])}this.programmatic=!1}}destroy(){this.group.remove()}}class Gf{constructor(t,e,i){if(this.container=null,this.config=t,this.events=i,!t.enabled)return;this.container=tc("katucharts-range-selector",e),Object.assign(this.container.style,{display:"flex",gap:`${t.buttonSpacing??4}px`,padding:"5px",alignItems:"center",flexWrap:"wrap",fontSize:"12px"}),t.floating&&(this.container.style.position="absolute",this.container.style.zIndex="10"),t.x!==void 0&&(this.container.style.left=`${t.x}px`),t.y!==void 0&&(this.container.style.top=`${t.y}px`);const r=t.buttonPosition||{};r.align==="right"?this.container.style.justifyContent="flex-end":r.align==="center"&&(this.container.style.justifyContent="center");const o=t.buttons||[{type:"month",count:1,text:"1m"},{type:"month",count:3,text:"3m"},{type:"month",count:6,text:"6m"},{type:"ytd",text:"YTD"},{type:"year",count:1,text:"1y"},{type:"all",text:"All"}],s=t.buttonTheme||{},a=t.allButtonsEnabled??!1;if(o.forEach((l,c)=>{const h=document.createElement("button");h.textContent=l.text||l.type||"",h.title=l.title||"";const f=c===(t.selected??0),u=s["states.select.fill"]||s.fill||"#e0e0e0",d=s.fill||"#fff";Object.assign(h.style,{padding:s.padding||"3px 8px",border:`1px solid ${s.stroke||"#ccc"}`,borderRadius:`${s.r??3}px`,backgroundColor:f?u:d,cursor:"pointer",fontSize:s["style.fontSize"]||"11px",fontWeight:s["style.fontWeight"]||"normal",color:s["style.color"]||"#333"}),!a&&!f&&(h.style.opacity="0.8"),h.addEventListener("click",()=>{var p;(p=l.events)!=null&&p.click&&l.events.click.call(l,new Event("click")),this.container.querySelectorAll("button").forEach(y=>{y.style.backgroundColor=d,y.style.opacity=a?"1":"0.8"}),h.style.backgroundColor=u,h.style.opacity="1",i.emit("rangeSelector:selected",{type:l.type,count:l.count,index:c})}),this.container.appendChild(h)}),t.inputEnabled!==!1){const l=t.inputPosition||{},c=document.createElement("div");c.style.display="flex",c.style.alignItems="center",c.style.gap="4px",c.style.marginLeft=l.x!==void 0?`${l.x}px`:"10px";const h=t.inputStyle||{},f=t.inputBoxBorderColor||"#ccc",u=t.inputBoxHeight??22,d=t.inputBoxWidth??90,p=document.createElement("input");p.type="date",Object.assign(p.style,{fontSize:h.fontSize||"11px",border:`1px solid ${f}`,height:`${u}px`,width:`${d}px`,padding:"0 4px",color:h.color||"#333"});const y=document.createElement("input");y.type="date",Object.assign(y.style,{fontSize:h.fontSize||"11px",border:`1px solid ${f}`,height:`${u}px`,width:`${d}px`,padding:"0 4px",color:h.color||"#333"});const g=()=>{p.value&&y.value&&i.emit("rangeSelector:dateRange",{from:new Date(p.value).getTime(),to:new Date(y.value).getTime()})};p.addEventListener("change",g),y.addEventListener("change",g);const m=t.labelStyle||{},x=document.createElement("span");x.textContent=" to ",x.style.fontSize=m.fontSize||"11px",x.style.color=m.color||"#666",c.appendChild(p),c.appendChild(x),c.appendChild(y),this.container.appendChild(c)}}destroy(){this.container&&this.container.remove()}}const F2=[{type:"month",count:1,text:"1m"},{type:"month",count:3,text:"3m"},{type:"month",count:6,text:"6m"},{type:"ytd",text:"YTD"},{type:"year",count:1,text:"1y"},{type:"all",text:"All"}],D2={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5,month:2592e6,year:31536e6};class R2{constructor(t){this.host=t,this.navigator=null,this.rangeSelector=null,this.xMin=0,this.xMax=0}setup(){var a,l;const t=this.host.getOptions(),e=(a=t.navigator)==null?void 0:a.enabled,i=(l=t.rangeSelector)==null?void 0:l.enabled;if(!e&&!i)return;const r=this.getBaseSeriesData();r.length>0&&(this.xMin=r[0].x,this.xMax=r[r.length-1].x);const o=this.host.getEvents(),s=t.rangeSelector;if(i&&(this.rangeSelector=new Gf(s,this.host.getContainer(),o),this.placeRangeSelectorOnTop(),o.on("rangeSelector:selected",c=>this.applyButton(c)),o.on("rangeSelector:dateRange",c=>this.applyXRange(c.from,c.to))),e&&(this.navigator=new Vf(t.navigator,this.host.getSvg(),this.host.getLayout().plotArea,this.host.getChartHeight(),o,r),o.on("navigator:brushed",c=>{const h=this.xMax-this.xMin;this.applyXRange(this.xMin+c.x0*h,this.xMin+c.x1*h)})),i){const c=s.selected;if(c!=null){const h=(s.buttons||F2)[c];h&&this.applyButton(h)}}o.on("chart:afterZoom",()=>{const c=this.host.getXAxes()[0];if(c){const[h,f]=c.scale.domain();this.syncNavigator(+h,+f)}})}getBaseSeriesData(){const t=this.host.getSeriesInstances();return t.length===0?[]:t[0].data.map(i=>({x:i.x??0,y:i.close??i.y??0})).filter(i=>i.y!==null&&i.y!==void 0&&Number.isFinite(i.x))}placeRangeSelectorOnTop(){const t=this.host.getContainer(),e=t.querySelector(".katucharts-range-selector");e&&t.firstChild&&e!==t.firstChild&&t.insertBefore(e,t.firstChild)}applyButton(t){const e=t.type,i=t.count??1;if(e==="all"){this.applyXRange(this.xMin,this.xMax);return}if(e==="ytd"){const o=new Date(this.xMax),s=Date.UTC(o.getUTCFullYear(),0,1);this.applyXRange(Math.max(this.xMin,s),this.xMax);return}const r=D2[e];r&&this.applyXRange(Math.max(this.xMin,this.xMax-i*r),this.xMax)}applyXRange(t,e){if(!(!Number.isFinite(t)||!Number.isFinite(e)||e<=t)){for(const i of this.host.getXAxes())i.updateDomain({min:t,max:e});this.host.rerender(),this.syncNavigator(t,e)}}syncNavigator(t,e){if(!this.navigator)return;const i=this.xMax-this.xMin;i<=0||this.navigator.setSelection((t-this.xMin)/i,(e-this.xMin)/i)}destroy(){var t,e;(t=this.navigator)==null||t.destroy(),(e=this.rangeSelector)==null||e.destroy()}}const Vn=class Vn{constructor(t,e){var h,f;this.xAxes=[],this.yAxes=[],this.seriesInstances=[],this.tooltip=null,this.legend=null,this.crosshair=null,this.credits=null,this.exportButton=null,this.responsiveEngine=null,this.stock=null,this.clipPathId="",this.autoHeight=!1,this.resizeObserver=null,this.isResponsiveUpdate=!1,this.scrollableInner=null,this.scrollableOuterWidth=0,this.scrollableOuterHeight=0,this.useVerticalScroll=!1,this.useHorizontalScroll=!1,this.fixedAxisOverlay=null,this.container=_v(t),this.container.style.position="relative";const i=new qn;this.options=i.parse(e),this.originalUserOptions=ho(e),fv(((h=this.options.time)==null?void 0:h.useUTC)!==!1),this.events=new Gh,this.state=new my(this.options,this.events),this.layoutEngine=new by;const r=rf(this.container,this.getDefaultHeightAspectRatio()),o=this.options.chart.width||r.width||600;let s=this.resolveHeight(this.options.chart.height,r.height);const a=this.options.chart.scrollablePlotArea,l=(a==null?void 0:a.minWidth)&&a.minWidth>o;if(this.autoHeight=this.options.chart.height==null&&!r.heightMeasured,this.chartWidth=l?a.minWidth:o,this.autoHeight){const u=a!=null&&a.minHeight?Math.min(a.minHeight,Vn.MAX_AUTO_HEIGHT):0;s=Math.max(this.fitHeightToContent(s),u)}const c=(a==null?void 0:a.minHeight)&&a.minHeight>s;this.chartHeight=c?a.minHeight:s,this.scrollableOuterWidth=o,this.scrollableOuterHeight=s,this.useVerticalScroll=!!c,this.useHorizontalScroll=!!l,(c||l)&&(this.container.style.position="relative",this.container.querySelectorAll(":scope > [data-katu-scrollable-inner]").forEach(p=>{var y;return(y=p.parentElement)==null?void 0:y.removeChild(p)}),this.container.querySelectorAll(":scope > svg[data-katu-fixed-overlay]").forEach(p=>{var y;return(y=p.parentElement)==null?void 0:y.removeChild(p)}),this.scrollableInner=document.createElement("div"),this.scrollableInner.setAttribute("data-katu-scrollable-inner","1"),this.scrollableInner.style.overflowX=l?"auto":"hidden",this.scrollableInner.style.overflowY=c?"auto":"hidden",this.scrollableInner.style.width=o+"px",this.scrollableInner.style.height=s+"px",this.container.appendChild(this.scrollableInner)),this.setupResponsive(),this.applyInitialResponsiveRules(),this.autoHeight&&!this.useVerticalScroll&&(this.chartHeight=this.fitHeightToContent(this.chartHeight),this.scrollableOuterHeight=this.chartHeight),this.renderer=new ko(this.scrollableInner||this.container,this.chartWidth,this.chartHeight),this.scrollableInner&&this.renderer.svg.style("max-width","none"),this.exporter=new zv({getRenderer:()=>this.renderer,getOptions:()=>this.options,getContainer:()=>this.container,getSeriesInstances:()=>this.seriesInstances,setSize:(u,d)=>this.setSize(u,d),fireEvent:(u,...d)=>this.fireEvent(u,...d),getDefaultHeightAspectRatio:()=>this.getDefaultHeightAspectRatio(),disconnectResizeObserver:()=>{var u;return(u=this.resizeObserver)==null?void 0:u.disconnect()},observeResizeObserver:()=>{var u;return(u=this.resizeObserver)==null?void 0:u.observe(this.container)},getViewportSize:()=>this.getViewportSize(),fitToViewport:(u,d)=>this.fitToViewport(u,d)}),this.axes=new Bv({getOptions:()=>this.options,getLayout:()=>this.layout,getSeriesInstances:()=>this.seriesInstances,getXAxes:()=>this.xAxes,getYAxes:()=>this.yAxes,getAxisGroup:()=>this.axisGroup,getEvents:()=>this.events,getTooltip:()=>this.tooltip}),this.interactions=new Zv({getOptions:()=>this.options,getContainer:()=>this.container,getEvents:()=>this.events,getRenderer:()=>this.renderer,getSeriesGroup:()=>this.seriesGroup,getPlotGroup:()=>this.plotGroup,getLayout:()=>this.layout,getXAxes:()=>this.xAxes,getYAxes:()=>this.yAxes,getSeriesInstances:()=>this.seriesInstances,setSeries:u=>{this.options.series=u},rebuild:()=>{var u;this.seriesInstances.forEach(d=>d.destroy()),this.seriesInstances=[],this.buildAxes(),this.buildSeries(),this.renderAll(),(u=this.credits)==null||u.refresh()},renderAfterZoom:()=>{this.renderAxes(),this.renderSeriesInstances(),this.renderLegend()},fireEvent:(u,...d)=>this.fireEvent(u,...d)}),this.applyChartStyles(),this.computeLayout(),this.createStructuralGroups(),this.buildAxes(),this.buildSeries(),this.renderAll(),(f=this.credits)==null||f.refresh(),(c||l)&&this.createFixedAxisOverlay(),this.options.chart.reflow&&this.setupReflow(),this.interactions.setup(),this.stock=new R2({getOptions:()=>this.options,getContainer:()=>this.container,getEvents:()=>this.events,getSvg:()=>this.renderer.svg,getLayout:()=>this.layout,getChartHeight:()=>this.chartHeight,getXAxes:()=>this.xAxes,getSeriesInstances:()=>this.seriesInstances,rerender:()=>{this.renderAxes(),this.renderSeriesInstances(),this.renderLegend()}}),this.stock.setup(),this.fireEvent("load")}createFixedAxisOverlay(){const t=Rv({container:this.container,renderer:this.renderer,options:this.options,plotGroup:this.plotGroup,layout:this.layout,chartWidth:this.chartWidth,chartHeight:this.chartHeight,scrollableInner:this.scrollableInner,scrollableOuterWidth:this.scrollableOuterWidth,scrollableOuterHeight:this.scrollableOuterHeight,useVerticalScroll:this.useVerticalScroll,useHorizontalScroll:this.useHorizontalScroll,exportButton:this.exportButton,previousOverlay:this.fixedAxisOverlay});t&&(this.fixedAxisOverlay=t)}getDefaultHeightAspectRatio(){var i;const t=((i=this.options)==null?void 0:i.series)||[],e=new Set(t.map(r=>{var o,s;return(r==null?void 0:r.type)||((s=(o=this.options)==null?void 0:o.chart)==null?void 0:s.type)}));return e.has("dependencywheel")||e.has("networkgraph")?1:e.has("treemap")||e.has("sankey")?.3:e.has("pie")||e.has("donut")||e.has("radar")?.6:.5}fitHeightToContent(t){const r=4e3-this.layoutEngine.compute(this.options,this.chartWidth,4e3).plotArea.height,o=Math.max(Vn.MIN_AUTO_PLOT_HEIGHT,this.verticalCategoryCount()*Vn.MIN_CATEGORY_ROW_HEIGHT),s=Math.ceil(r+o);return s<=t?t:Math.min(s,Math.max(t,Vn.MAX_AUTO_HEIGHT))}verticalCategoryCount(){var o;const i=(this.options.series||[]).some(s=>s._internalType==="heatmap")?this.options.yAxis:this.options.chart.inverted?this.options.xAxis:null;if(!i)return 0;let r=0;for(const s of i){const a=((o=s.categories)==null?void 0:o.length)??0;a>r&&(r=a)}return r}resolveHeight(t,e){if(typeof t=="number")return t;if(typeof t=="string"){if(t.endsWith("%"))return parseFloat(t)/100*e;const i=parseFloat(t);if(!isNaN(i)&&i>0)return i}return e||400}applyChartStyles(){const t=this.options.chart.backgroundColor;t&&this.renderer.svg.append("rect").attr("class","katucharts-background").attr("width",this.chartWidth).attr("height",this.chartHeight).attr("fill",t).attr("rx",this.options.chart.borderRadius??0),this.options.chart.borderWidth&&this.renderer.svg.append("rect").attr("class","katucharts-border").attr("width",this.chartWidth).attr("height",this.chartHeight).attr("fill","none").attr("stroke",this.options.chart.borderColor||"#335cad").attr("stroke-width",this.options.chart.borderWidth).attr("rx",this.options.chart.borderRadius??0)}computeLayout(){this.layout=this.layoutEngine.compute(this.options,this.chartWidth,this.chartHeight)}createStructuralGroups(){var a,l,c,h;this.titleGroup=this.renderer.createGroup("katucharts-title-group"),this.renderTitles(),this.plotGroup=this.renderer.createGroup("katucharts-plot-group"),this.plotGroup.attr("transform",`translate(${this.layout.plotArea.x},${this.layout.plotArea.y})`);const t=this.options.chart.plotBackgroundColor;t&&this.plotGroup.append("rect").attr("class","katucharts-plot-background").attr("width",this.layout.plotArea.width).attr("height",this.layout.plotArea.height).attr("fill",t);const e=this.options.chart.plotBorderWidth;e&&this.plotGroup.append("rect").attr("class","katucharts-plot-border").attr("width",this.layout.plotArea.width).attr("height",this.layout.plotArea.height).attr("fill","none").attr("stroke",this.options.chart.plotBorderColor||"#cccccc").attr("stroke-width",e),this.options.chart.plotShadow&&((a=this.plotGroup.node())==null||a.setAttribute("filter","drop-shadow(3px 3px 6px rgba(0,0,0,0.15))")),this.clipPathId=this.renderer.createClipPath(0,0,this.layout.plotArea.width,this.layout.plotArea.height),this.axisGroup=this.renderer.createGroup("katucharts-axis-group",this.plotGroup),this.seriesGroup=this.renderer.createGroup("katucharts-series-group",this.plotGroup),this.stackLabelsGroup=this.renderer.createGroup("katucharts-stack-labels-group",this.plotGroup);const i=this.options.series.some(f=>f.clip===!1||gg.has(f._internalType)),r=this.options.series.some(f=>mg.has(f._internalType));!Bl(this.options.series)&&!i&&(r&&(this.clipPathId=this.renderer.createClipPath(-12,-12,this.layout.plotArea.width+2*12,this.layout.plotArea.height+2*12)),this.seriesGroup.attr("clip-path",`url(#${this.clipPathId})`)),this.tooltip=new es(this.options.tooltip,this.container,this.layout.plotArea,this.events),(l=this.options.tooltip)!=null&&l.shared&&this.tooltip.setSharedPointsProvider(f=>this.collectSharedPointsAt(f)),this.legend=new ns({...this.options.legend,_backgroundColor:this.options.chart.backgroundColor},this.renderer.svg,this.events),this.credits=new $v(this.options.credits,this.renderer.svg,this.chartWidth,this.chartHeight),this.options.exporting.enabled!==!1&&(this.exportButton=new lf(this.options.exporting,this.renderer.svg,this.container,this.chartWidth,this.chartHeight,f=>this.handleExportAction(f)));const o=(c=this.options.xAxis[0])==null?void 0:c.crosshair,s=(h=this.options.yAxis[0])==null?void 0:h.crosshair;(o||s)&&(this.crosshair=new sf(o,s,this.plotGroup,this.layout.plotArea,this.events))}renderTitles(){Dv({titleGroup:this.titleGroup,container:this.container,options:this.options,layout:this.layout,chartWidth:this.chartWidth})}buildAxes(){this.xAxes=this.options.xAxis.map(t=>Qa(t,this.layout.plotArea)),this.yAxes=this.options.yAxis.map(t=>Qa(t,this.layout.plotArea))}buildSeries(){const t=this.options;this.seriesInstances=t.series.map((e,i)=>{const r=e._internalType,o=$t.getType(r);if(!o){console.warn(`KatuCharts: unknown series type "${r}", falling back to line`);const s=$t.getType("line");if(!s)throw new Error("KatuCharts: line series type not registered");return new s(e)}return new o(e)})}collectSharedPointsAt(t){var r;const e=[],i=typeof t=="number"?t:NaN;for(let o=0;o<this.seriesInstances.length;o++){const s=this.seriesInstances[o],a=this.options.series[o];if(!s.visible||a.enableMouseTracking===!1)continue;const l=s.data;if(!l||l.length===0)continue;let c=null,h=1/0;for(const p of l){if(p.x===void 0||p.x===null)continue;const y=Math.abs(p.x-i);y<h&&(h=y,c=p)}if(!c)continue;const f=c.close??c.y??c.high;if(f==null)continue;const u=this.xAxes[a._xAxisIndex]||this.xAxes[0],d=this.yAxes[a._yAxisIndex]||this.yAxes[0];e.push({point:c,plotX:u.getPixelForValue(c.x),plotY:d.getPixelForValue(f),series:{name:a.name??"",color:((r=s.getColor)==null?void 0:r.call(s))??a.color??"#333",config:a}})}return e}renderAll(){this.updateAxesDomains(),this.updateTooltipCategories(),this.renderAxes(),this.renderSeriesInstances(),this.renderStackLabels(),this.raiseplotLineLabels(),this.renderLegend(),this.fireEvent("render")}formatStackLabel(t,e){return e.formatter?e.formatter.call({total:t}):e.format?de(Kt(e.format,{total:t})):this.options.chart.numberFormatter?this.options.chart.numberFormatter(t):Ko(t,0,".",",")}renderStackLabels(){if(this.stackLabelsGroup){this.stackLabelsGroup.selectAll("*").remove();for(let t=0;t<this.yAxes.length;t++){const i=this.yAxes[t].config.stackLabels;if(!(i!=null&&i.enabled))continue;const r=this.seriesInstances.map((a,l)=>({series:a,cfg:this.options.series[l]})).filter(({series:a,cfg:l})=>a.visible&&l._yAxisIndex===t&&(l._internalType==="column"||l._internalType==="bar")&&l.stacking&&l.stacking!=="percent");if(r.length===0)continue;const o=new Map;for(const{series:a,cfg:l}of r){const c=is(l);o.has(c)||o.set(c,{totals:new Map,series:[],type:l._internalType,xAxis:this.xAxes[l._xAxisIndex]||this.xAxes[0],yAxis:this.yAxes[l._yAxisIndex]||this.yAxes[0]});const h=o.get(c);h.series.push(a),Hi(a.data,h.totals)}const s=this.stackLabelsGroup.append("g").attr("class",`katucharts-stack-labels katucharts-stack-labels-axis-${t}`);for(const[a,l]of o){const c=s.append("g").attr("class","katucharts-stack-labels-stack").attr("data-stack-key",a);for(const[h,f]of l.totals.entries()){if(!isFinite(f)||f===0)continue;const u=this.formatStackLabel(f,i),d=l.type==="bar",p=f<0,y=l.xAxis.getPixelForValue(h),g=l.yAxis.getPixelForValue(f),m=d?p?"end":"start":"middle",x=d?"central":p?"hanging":"auto",v=d?g+(p?-6:6):y,b=d?y:g+(p?6:-6),k=v+(i.x??0),M=b+(i.y??0),P=c.append("text").attr("class","katucharts-stack-label").attr("x",k).attr("y",M).attr("text-anchor",i.align==="left"?"start":i.align==="right"?"end":m).text(u);i.verticalAlign==="middle"||d?P.attr("dominant-baseline",x):i.verticalAlign==="bottom"&&P.attr("dominant-baseline","hanging");const $=i.style||{};P.style("fill",$.color??"#000000").style("font-size",$.fontSize??"11px").style("font-weight",$.fontWeight??"bold"),$.textOutline&&P.style("text-shadow",$.textOutline),i.rotation&&P.attr("transform",`rotate(${i.rotation},${k},${M})`)}}}}}raiseplotLineLabels(){const t=this.plotGroup.node();t&&this.axisGroup.selectAll(".katucharts-plot-line-label").each(function(){t.appendChild(this)})}updateTooltipCategories(){this.axes.updateTooltipCategories()}updateAxesDomains(){this.axes.updateAxesDomains()}renderAxes(){this.axes.renderAxes()}renderSeriesInstances(){var h;this.seriesGroup.selectAll("*").remove();const t=new Map,e=new Map;for(const f of this.options.series){const u=f._internalType;t.set(u,(t.get(u)||0)+1),e.set(u,0)}const i=this.options.chart.animation!==!1,r=is,o=new Map,s=new Map,a=new Map,l=new Map;for(let f=0;f<this.options.series.length;f++){const u=this.options.series[f];if(u.stacking){const d=r(u);o.set(d,(o.get(d)||0)+1),a.has(d)||a.set(d,new Map);const p=a.get(d),y=this.seriesInstances[f];y.processData(),Hi(y.data,p)}}const c=new Map;for(let f=0;f<this.options.series.length;f++){const u=this.options.series[f];if(!u.stacking)continue;const d=r(u);c.has(d)||c.set(d,new Map);const p=c.get(d);l.set(f,new Map(p)),Hi(this.seriesInstances[f].data,p)}for(let f=0;f<this.seriesInstances.length;f++){const u=this.seriesInstances[f],d=this.options.series[f],p=this.xAxes[d._xAxisIndex]||this.xAxes[0],y=this.yAxes[d._yAxisIndex]||this.yAxes[0],g=d._internalType,m=e.get(g)||0;e.set(g,m+1);let x;d.stacking&&(x=l.get(f)||new Map);const v={plotArea:this.layout.plotArea,xAxis:p,yAxis:y,colorIndex:f,colors:this.options.colors,events:this.events,chartGroup:this.seriesGroup,plotGroup:this.plotGroup,totalSeriesOfType:d.stacking?o.get(r(d))||1:t.get(g)||1,indexInType:d.stacking?s.get(r(d))||0:m,animate:i&&d.animation!==!1,stackOffsets:x,stackTotals:d.stacking?a.get(r(d)):void 0,allSeries:this.seriesInstances,inverted:!!this.options.chart.inverted,legendConfig:this.options.legend,pane:this.options.pane,backgroundColor:this.options.chart.backgroundColor};if(u.processData(),u.init(v),u.render(),d.stacking){const b=r(d);s.set(b,(s.get(b)||0)+1)}u.setOnVisibilityChange(b=>this.animatedRedraw(b)),(h=d.dataLabels)!=null&&h.enabled&&!dg.has(d._internalType)&&!pg.has(d._internalType)&&ts.render(u.group,u.data,d.dataLabels,p,y,d.name||"")}}renderLegend(){this.legend&&this.legend.render(this.seriesInstances,this.layout.legendArea)}setupReflow(){if(typeof ResizeObserver>"u")return;const t=Cv(()=>this.reflow(),100);this.resizeObserver=new ResizeObserver(t),this.resizeObserver.observe(this.container)}fireEvent(t,...e){var r;this.events.emit(`chart:${t}`,this,...e);const i=(r=this.options.chart.events)==null?void 0:r[t];typeof i=="function"&&i.call(this,...e)}get plotLeft(){return this.layout.plotArea.x}get plotTop(){return this.layout.plotArea.y}get plotWidth(){return this.layout.plotArea.width}get plotHeight(){return this.layout.plotArea.height}get plotRenderer(){const t=this.seriesGroup,e=this.xAxes,i=this.yAxes,r=this.layout.plotArea;return{rect(o,s,a,l){return t.insert("rect",":first-child").attr("x",o).attr("y",s).attr("width",a).attr("height",l)},circle(o,s,a){return t.insert("circle",":first-child").attr("cx",o).attr("cy",s).attr("r",a)},ellipse(o,s,a,l){return t.insert("ellipse",":first-child").attr("cx",o).attr("cy",s).attr("rx",a).attr("ry",l)},path(o){return t.insert("path",":first-child").attr("d",o)},line(o,s,a,l){return t.insert("line",":first-child").attr("x1",o).attr("y1",s).attr("x2",a).attr("y2",l)},text(o,s,a){return t.append("text").attr("x",s).attr("y",a).text(o)},group(o){const s=t.insert("g",":first-child");return o&&s.attr("class",o),s.style("pointer-events","none"),s},get plotArea(){return{x:0,y:0,width:r.width,height:r.height}},get localPlotArea(){return{x:0,y:0,width:r.width,height:r.height}},xAxis:{toPixels(o,s=0){var a;return((a=e[s])==null?void 0:a.getPixelForValue(o))??0}},yAxis:{toPixels(o,s=0){var a;return((a=i[s])==null?void 0:a.getPixelForValue(o))??0}}}}setupResponsive(){var t,e;(e=(t=this.options.responsive)==null?void 0:t.rules)!=null&&e.length&&(this.responsiveEngine=new hf(this.options.responsive))}applyInitialResponsiveRules(){if(!this.responsiveEngine)return;const t=this.responsiveEngine.evaluate(this.chartWidth,this.chartHeight);if(t.changed&&t.matchingIndices.length>0){const e=this.responsiveEngine.getRules();let i=ho(this.originalUserOptions);for(const o of t.matchingIndices)i=he(i,e[o].chartOptions);const r=new qn;this.options=r.parse(i),this.state.updateConfig(this.options)}}addSeries(t,e=!0){this.originalUserOptions.series||(this.originalUserOptions.series=[]),this.originalUserOptions.series.push(t);const o={...new qn().parse({series:[t]}).series[0],index:this.options.series.length};this.state.addSeries(o),this.options=this.state.getConfig();const s=$t.getType(o._internalType)||$t.getType("line");if(!s)throw new Error("KatuCharts: no series type registered");const a=new s(o);return this.seriesInstances.push(a),e&&this.redraw(),a}get(t){const e=this.seriesInstances.find(r=>r.config.id===t);if(e)return e;const i=this.xAxes.find(r=>r.config.id===t);return i||this.yAxes.find(r=>r.config.id===t)}canReuseSeriesInstances(t){return this.seriesInstances.length!==t.series.length?!1:this.seriesInstances.every((e,i)=>{var r;return e.config._internalType===((r=t.series[i])==null?void 0:r._internalType)})}syncSeriesInstances(t){for(let e=0;e<this.seriesInstances.length;e++){const i=this.seriesInstances[e],r={...t.series[e],visible:i.visible};this.options.series[e]=r,i.config=r,i.visible=r.visible!==!1,i.processData()}}update(t,e=!0){var a;this.isResponsiveUpdate||(this.originalUserOptions=he(ho(this.originalUserOptions),t));const i=new qn,r=he(this.optionsToExternal(),t);(a=t.chart)!=null&&a.type&&Array.isArray(r.series)&&r.series.forEach((l,c)=>{var f,u;const h=Array.isArray(t.series)?(f=t.series[c])==null?void 0:f.type:void 0;(u=this.options.series[c])!=null&&u._typeFromChart&&!h&&delete l.type});const o=i.parse(r),s=this.canReuseSeriesInstances(o);if(this.state.updateConfig(o),this.options=this.state.getConfig(),e)if(!s)this.redraw();else{this.buildAxes(),this.syncSeriesInstances(o);try{this.animatedRedraw(300)}catch{this.redraw()}}}animatedRedraw(t=500){this.updateAxesDomains(),this.updateTooltipCategories();for(const c of this.xAxes)c.animateAxis(this.axisGroup,this.layout.plotArea,t);for(const c of this.yAxes)c.animateAxis(this.axisGroup,this.layout.plotArea,t);const e=new Map,i=new Map,r=new Map,o=new Map,s=new Map,a=is,l=new Map;for(const c of this.seriesInstances){if(!c.visible)continue;const h=c.config._internalType;if(e.set(h,(e.get(h)||0)+1),c.config.stacking){const f=a(c.config);r.set(f,(r.get(f)||0)+1),s.has(f)||s.set(f,new Map),l.has(f)||l.set(f,new Map),Hi(c.data,l.get(f))}}for(let c=0;c<this.seriesInstances.length;c++){const h=this.seriesInstances[c];if(!h.visible)continue;const f=this.options.series[c],u=f._internalType,d=i.get(u)||0;i.set(u,d+1);let p,y,g,m;if(f.stacking){const x=a(f);p=r.get(x)||1,y=o.get(x)||0,o.set(x,y+1),g=new Map(s.get(x)),m=l.get(x)}else p=e.get(u)||1,y=d;h.updateContext({xAxis:this.xAxes[f._xAxisIndex]||this.xAxes[0],yAxis:this.yAxes[f._yAxisIndex]||this.yAxes[0],totalSeriesOfType:p,indexInType:y,stackOffsets:g,stackTotals:m}),h.animateUpdate(t),f.stacking&&Hi(h.data,s.get(a(f)))}this.renderStackLabels(),this.renderTitles(),this.renderLegend(),this.fireEvent("render")}redraw(){this.computeLayout(),this.plotGroup.attr("transform",`translate(${this.layout.plotArea.x},${this.layout.plotArea.y})`),this.renderer.updateClipPath(this.clipPathId,0,0,this.layout.plotArea.width,this.layout.plotArea.height),this.buildAxes(),this.seriesInstances.forEach(t=>t.destroy()),this.seriesInstances=[],this.buildSeries(),this.renderAll(),this.tooltip&&this.tooltip.updatePlotArea(this.layout.plotArea),this.renderTitles(),this.fireEvent("redraw")}reflow(){if(this.options.chart.width)return;const t=rf(this.container,this.getDefaultHeightAspectRatio());let e=t.width,i=this.resolveHeight(this.options.chart.height,t.height);const r=this.options.chart.scrollablePlotArea;if(r!=null&&r.minWidth&&r.minWidth>e&&(e=r.minWidth),r!=null&&r.minHeight&&r.minHeight>i&&(i=r.minHeight),this.autoHeight&&!(r!=null&&r.minHeight)){const o=this.chartWidth;this.chartWidth=e,i=this.fitHeightToContent(i),this.chartWidth=o}if(!(e===this.chartWidth&&i===this.chartHeight)){if(this.responsiveEngine){const o=this.responsiveEngine.evaluate(e,i);if(o.changed){const s=this.responsiveEngine.getRules();let a=ho(this.originalUserOptions);for(const l of o.matchingIndices)a=he(a,s[l].chartOptions);this.isResponsiveUpdate=!0,this.update(a,!1),this.isResponsiveUpdate=!1}}this.setSize(e,i)}}setSize(t,e){var i,r;this.chartWidth=t,this.chartHeight=e,this.renderer.setSize(t,e),this.renderer.svg.select(".katucharts-background").attr("width",t).attr("height",e),this.renderer.svg.select(".katucharts-border").attr("width",t).attr("height",e),(i=this.exportButton)==null||i.updatePosition(t,e),(r=this.credits)==null||r.updatePosition(t,e),this.redraw()}getViewportSize(){return this.scrollableInner?{width:this.scrollableOuterWidth,height:this.scrollableOuterHeight}:{width:this.chartWidth,height:this.chartHeight}}fitToViewport(t,e){if(!this.scrollableInner){this.setSize(t,e);return}const i=this.options.chart.scrollablePlotArea;this.scrollableOuterWidth=t,this.scrollableOuterHeight=e,this.scrollableInner.style.width=t+"px",this.scrollableInner.style.height=e+"px";const r=Math.max((i==null?void 0:i.minWidth)||0,t),o=Math.max((i==null?void 0:i.minHeight)||0,e);this.setSize(r,o),this.createFixedAxisOverlay()}setTitle(t,e){t&&(this.options.title=he(this.options.title,t),this.originalUserOptions.title=he(this.originalUserOptions.title||{},t)),e&&(this.options.subtitle=he(this.options.subtitle,e),this.originalUserOptions.subtitle=he(this.originalUserOptions.subtitle||{},e)),this.renderTitles()}addAxis(t,e=!0,i=!0){const r=e?this.options.xAxis:this.options.yAxis,o={...t,index:r.length,isX:e};r.push(o);const s=Qa(o,this.layout.plotArea);return(e?this.xAxes:this.yAxes).push(s),i&&this.redraw(),s}showLoading(t){let e=this.container.querySelector(".katucharts-loading");e||(e=document.createElement("div"),e.className="katucharts-loading",Object.assign(e.style,{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",backgroundColor:"rgba(255,255,255,0.75)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"14px",fontWeight:"bold",color:"#666",zIndex:"20"}),this.container.appendChild(e)),e.textContent=t||"Loading...",e.style.display="flex"}hideLoading(){const t=this.container.querySelector(".katucharts-loading");t&&(t.style.display="none")}destroy(){var i,r,o,s,a,l,c;this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),this.seriesInstances.forEach(h=>h.destroy()),(i=this.tooltip)==null||i.destroy(),(r=this.legend)==null||r.destroy(),(o=this.crosshair)==null||o.destroy(),(s=this.credits)==null||s.destroy(),(a=this.exportButton)==null||a.destroy(),this.interactions.destroy(),(l=this.stock)==null||l.destroy(),(c=this.responsiveEngine)==null||c.reset(),this.events.removeAllListeners(),this.renderer.destroy();const t=this.container.querySelector(".katucharts-loading");t&&t.remove();const e=this.container.querySelector(".katucharts-tooltip");e&&e.remove(),this.container.querySelectorAll(".katucharts-title-html, .katucharts-subtitle-html").forEach(h=>h.remove())}getSVG(){return this.exporter.getSVG()}getSeriesInstances(){return this.seriesInstances}get series(){return this.seriesInstances}getXAxes(){return this.xAxes}getYAxes(){return this.yAxes}handleExportAction(t){this.exporter.handleExportAction(t)}getCSV(){return this.exporter.getCSV()}getTable(){return this.exporter.getTable()}getDataRows(){return this.exporter.getDataRows()}exportChart(t,e){this.exporter.exportChart(t)}print(){this.exporter.print()}optionsToExternal(){return this.exporter.optionsToExternal()}};Vn.MIN_AUTO_PLOT_HEIGHT=160,Vn.MAX_AUTO_HEIGHT=900,Vn.MIN_CATEGORY_ROW_HEIGHT=22;let hs=Vn;const vt=600,Wt=8,Yf=0,Jn=vt+100,Z=300,us=250,pt=Qu,j=Qu,z2=500;function Pe(n,t,e,i){return i>z2?t:t+n*e}const B2={Solid:"none",ShortDash:"6,2",ShortDot:"2,2",ShortDashDot:"6,2,2,2",ShortDashDotDot:"6,2,2,2,2,2",Dot:"2,6",Dash:"8,6",LongDash:"16,6",DashDot:"8,6,2,6",LongDashDot:"16,6,2,6",LongDashDotDot:"16,6,2,6,2,6"};function on(n){return!n||n==="Solid"?"none":B2[n]||"none"}function Xf(n,t){const e=n.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);if(e){const r=Math.min(255,parseInt(e[1],16)+Math.round(255*t)),o=Math.min(255,parseInt(e[2],16)+Math.round(255*t)),s=Math.min(255,parseInt(e[3],16)+Math.round(255*t));return`rgb(${r},${o},${s})`}const i=n.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);if(i){const r=Math.min(255,parseInt(i[1])+Math.round(255*t)),o=Math.min(255,parseInt(i[2])+Math.round(255*t)),s=Math.min(255,parseInt(i[3])+Math.round(255*t));return`rgb(${r},${o},${s})`}return n}class Ut{constructor(t){this.selectedPoints=new Set,this._cachedExtents=null,this.config=t,this.visible=t.visible!==!1,this.data=t._processedData||[]}init(t){this.context=t,this.group=t.chartGroup.append("g").attr("class",`katucharts-series katucharts-series-${this.config._internalType}`).attr("data-series-index",this.config.index),this.config.opacity!==void 0&&this.config.opacity!==1&&this.group.attr("opacity",this.config.opacity),this.config.zIndex!==void 0&&this.group.style("z-index",String(this.config.zIndex)),this.config.className&&this.group.classed(this.config.className,!0),this.config.shadow&&this.applyShadowFilter(),this.visible||this.group.style("display","none"),this.config.allowPointSelect&&this.data.forEach((e,i)=>{e.selected&&this.selectedPoints.add(i)}),this.group.on("mouseenter",()=>{var e,i;(i=(e=this.config.events)==null?void 0:e.mouseOver)==null||i.call(this,new Event("mouseOver")),this.context.events.emit("series:mouseenter",this)}).on("mouseleave",()=>{var e,i;(i=(e=this.config.events)==null?void 0:e.mouseOut)==null||i.call(this,new Event("mouseOut")),this.context.events.emit("series:mouseleave",this)})}setOnVisibilityChange(t){this._onVisibilityChange=t}processData(){this.data=this.config._processedData||[],this._cachedExtents=null}getColor(){return this.config.color||this.context.colors[this.context.colorIndex%this.context.colors.length]}autoLabelColor(t){return Pn(this.context.backgroundColor,t)}labelHalo(){const t=this.labelHaloColor();return`0 0 3px ${t}, 0 0 3px ${t}`}labelHaloColor(){return Pn(this.context.backgroundColor)==="#ffffff"?"rgba(0,0,0,0.85)":"#ffffff"}autoBorderColor(){const t=this.context.backgroundColor;return!t||t==="transparent"||t==="none"?"#ffffff":t}getMultiLegendItems(){return null}getLegendSymbolShape(){return null}getBubbleLegendInfo(){return null}animateUpdate(t){this.group.selectAll("*").remove(),this.render()}updateContext(t){Object.assign(this.context,t)}redraw(){this.group.selectAll("*").remove(),this.render()}setVisible(t,e=!0){var i,r,o,s;this.visible=t,t?(r=(i=this.config.events)==null?void 0:i.show)==null||r.call(this,new Event("show")):(s=(o=this.config.events)==null?void 0:o.hide)==null||s.call(this,new Event("hide")),e&&this._onVisibilityChange?(t?this.group.style("display","").attr("opacity",0).transition().duration(300).attr("opacity",this.config.opacity??1):this.group.transition().duration(300).attr("opacity",0).on("end",()=>{this.group.style("display","none")}),this._onVisibilityChange(500)):this.group.style("display",t?"":"none"),this.context.events.emit("series:visibilityChanged",this,t)}toggleVisible(){this.setVisible(!this.visible)}getDataExtents(){if(this._cachedExtents)return this._cachedExtents;let t=1/0,e=-1/0,i=1/0,r=-1/0;for(const o of this.data)o.x!==void 0&&o.x!==null&&(o.x<t&&(t=o.x),o.x>e&&(e=o.x)),o.y!==void 0&&o.y!==null&&(o.y<i&&(i=o.y),o.y>r&&(r=o.y));return this._cachedExtents={xMin:t,xMax:e,yMin:i,yMax:r},this._cachedExtents}getCategories(){return this.data.filter(t=>t.name!==void 0).map(t=>t.name)}destroy(){var t;(t=this.group)==null||t.remove()}setData(t,e=!0,i=!0){this.data=t,this.config._processedData=t,this._cachedExtents=null,e&&(i?this.animateUpdate(500):this.redraw(),this.context.events.emit("series:dataChanged",this))}addPoint(t,e=!0,i=!1,r=!0){if(this.data.push(t),this.config._processedData=this.data,i&&this.data.length>1)this.data.shift(),this.config._processedData=this.data,this._cachedExtents=null;else if(this._cachedExtents){const o=this._cachedExtents;t.x!==void 0&&t.x!==null&&(t.x<o.xMin&&(o.xMin=t.x),t.x>o.xMax&&(o.xMax=t.x)),t.y!==void 0&&t.y!==null&&(t.y<o.yMin&&(o.yMin=t.y),t.y>o.yMax&&(o.yMax=t.y))}e&&(r?this.animateUpdate(300):this.redraw(),this.context.events.emit("series:dataChanged",this))}addPoints(t,e=!0,i=!1,r=!0){for(const o of t)this.data.push(o);i&&this.data.length>t.length&&this.data.splice(0,t.length),this.config._processedData=this.data,this._cachedExtents=null,e&&(r?this.animateUpdate(300):this.redraw(),this.context.events.emit("series:dataChanged",this))}removePoint(t,e=!0,i=!0){t>=0&&t<this.data.length&&(this.data.splice(t,1),this.config._processedData=this.data,this._cachedExtents=null,e&&(i?this.animateUpdate(300):this.redraw(),this.context.events.emit("series:dataChanged",this)))}updateSeries(t,e=!0){Object.assign(this.config,t),t.data&&(this.config._processedData=t.data,this.data=this.config._processedData,this._cachedExtents=null),e&&this.redraw()}applyBatch(t){for(const e of t.entries)switch(e.type){case"setData":this.data=e.payload,this.config._processedData=this.data;break;case"addPoint":this.data.push(e.payload.point),e.payload.shift&&this.data.length>1&&this.data.shift();break;case"addPoints":for(const i of e.payload.points)this.data.push(i);e.payload.shift&&this.data.splice(0,e.payload.points.length);break;case"removePoint":e.payload.index>=0&&e.payload.index<this.data.length&&this.data.splice(e.payload.index,1);break}this.config._processedData=this.data,this._cachedExtents=null,this.redraw(),this.context.events.emit("series:dataChanged",this)}show(){this.setVisible(!0)}hide(){this.setVisible(!1)}getSelectedPoints(){return Array.from(this.selectedPoints).map(t=>({index:t,point:this.data[t]})).filter(t=>t.point!==void 0)}applyClipPath(){const{plotArea:t}=this.context;this.clipId=`katucharts-clip-${this.config.index}-${Date.now()}`;const e=this.group.select(function(){return this.ownerSVGElement});if(!e.empty()){let i=e.select("defs");i.empty()&&(i=e.append("defs")),i.append("clipPath").attr("id",this.clipId).append("rect").attr("x",0).attr("y",0).attr("width",t.width).attr("height",t.height),this.group.attr("clip-path",`url(#${this.clipId})`)}}applyShadowFilter(){const t=this.config.shadow;if(!t)return;const e=`katucharts-shadow-${this.config.index}-${Date.now()}`,i=this.group.select(function(){return this.ownerSVGElement});if(!i.empty()){let r=i.select("defs");r.empty()&&(r=i.append("defs"));const o=typeof t=="object"?t:{},s=o.offsetX??1,a=o.offsetY??1,l=o.width??3,c=o.opacity??.15;r.append("filter").attr("id",e).append("feDropShadow").attr("dx",s).attr("dy",a).attr("stdDeviation",l).attr("flood-opacity",c),this.group.style("filter",`url(#${e})`)}}applyInactiveState(){var r,o,s,a,l;const t=this.context.allSeries;if(!t||t.length<=1)return;const e=((o=(r=this.config.states)==null?void 0:r.inactive)==null?void 0:o.opacity)??.2,i=((l=(a=(s=this.config.states)==null?void 0:s.inactive)==null?void 0:a.animation)==null?void 0:l.duration)??us;for(const c of t)c!==this&&c.visible&&c.group.transition("inactive").duration(i).ease(j).attr("opacity",e)}clearInactiveState(){var i,r,o,s,a,l;const t=this.context.allSeries;if(!t||t.length<=1)return;const e=((o=(r=(i=this.config.states)==null?void 0:i.normal)==null?void 0:r.animation)==null?void 0:o.duration)??((l=(a=(s=this.config.states)==null?void 0:s.inactive)==null?void 0:a.animation)==null?void 0:l.duration)??us;for(const c of t)c!==this&&c.visible&&c.group.transition("inactive").duration(e).ease(j).attr("opacity",c.config.opacity??1)}emitAfterAnimate(t){var o;const e=!!((o=this.config.events)!=null&&o.afterAnimate),i=typeof this.config.animation=="object"?this.config.animation:null,r=!!(i!=null&&i.complete);(e||r)&&setTimeout(()=>{var s,a,l;(a=(s=this.config.events)==null?void 0:s.afterAnimate)==null||a.call(this,new Event("afterAnimate")),(l=i==null?void 0:i.complete)==null||l.call(i)},t)}renderDataLabels(t,e,i){const r=this.config.dataLabels;if(!(r!=null&&r.enabled))return;this.group.selectAll(".katucharts-data-labels").remove();const o=this.group.append("g").attr("class","katucharts-data-labels");this.getColor(),t.forEach((s,a)=>{var y,g;if(s.y===null||s.y===void 0)return;const l=s.dataLabels,c={...r,...l};let h;if(c.formatter?h=c.formatter.call({point:{...s,index:a},series:this,x:s.x??a,y:s.y,percentage:s._percentage}):c.format?h=de(Kt(c.format,{point:s,series:{name:this.config.name??""},x:s.x,y:s.y,percentage:s._percentage??s.percentage})):h=String(s.y),c.filter){const m=s[c.filter.property??"y"]??0,x=c.filter.operator??">",v=c.filter.value??0;if(!(x===">"?m>v:x==="<"?m<v:x===">="?m>=v:x==="<="?m<=v:x==="=="?m===v:!0))return}const f=e(s,a)+(c.x??0),u=i(s,a)+(c.y??-10),d=o.append("text").attr("x",f).attr("y",u).attr("text-anchor",c.align==="left"?"start":c.align==="right"?"end":"middle").attr("dominant-baseline",c.verticalAlign==="top"?"text-before-edge":c.verticalAlign==="bottom"?"text-after-edge":"central").text(h),p=c.style||{};if(d.style("font-size",p.fontSize??kt).style("font-weight",p.fontWeight??"bold").style("fill",c.color||p.color||this.autoLabelColor()),p.textOutline&&d.style("text-shadow",p.textOutline),c.rotation&&d.attr("transform",`rotate(${c.rotation},${f},${u})`),c.backgroundColor||c.borderWidth){const m=(g=(y=d.node()).getBBox)==null?void 0:g.call(y);if(m){const x=c.padding??5,v=c.borderRadius??0;o.insert("rect",":last-child").attr("x",m.x-x).attr("y",m.y-x).attr("width",m.width+x*2).attr("height",m.height+x*2).attr("rx",v).attr("fill",c.backgroundColor||"none").attr("stroke",c.borderColor||"none").attr("stroke-width",c.borderWidth??0)}}this.context.animate&&c.defer!==!1&&d.attr("opacity",0).transition().delay(Jn+a*Wt).duration(400).ease(pt).attr("opacity",1)})}handlePointSelect(t,e,i,r){var s,a,l,c;if(!this.config.allowPointSelect)return;const o=this.selectedPoints.has(i);if(o){if(((a=(s=e.events)==null?void 0:s.unselect)==null?void 0:a.call(e,r))===!1)return;this.selectedPoints.delete(i),e.selected=!1,this.clearSelectStyle(t)}else{if(((c=(l=e.events)==null?void 0:l.select)==null?void 0:c.call(e,r))===!1)return;this.selectedPoints.add(i),e.selected=!0,this.applySelectStyle(t)}this.context.events.emit("point:select",{point:e,index:i,series:this,selected:!o})}applySelectStyle(t){var i;const e=(i=this.config.states)==null?void 0:i.select;e!=null&&e.color&&t.attr("fill",e.color),e!=null&&e.borderColor&&t.attr("stroke",e.borderColor),(e==null?void 0:e.borderWidth)!==void 0&&t.attr("stroke-width",e.borderWidth)}clearSelectStyle(t){t.attr("fill",null).attr("stroke",null).attr("stroke-width",null)}attachPointEvents(t,e,i){var s;if(this.config.enableMouseTracking===!1)return;const r=e.events||{},o=((s=this.config.point)==null?void 0:s.events)||{};t.on("mouseover",a=>{var l,c;this.context.events.emit("point:mouseover",{point:e,index:i,series:this,event:a,plotX:this.context.xAxis.getPixelForValue(e.x??i),plotY:this.context.yAxis.getPixelForValue(e.y??0)}),(l=r.mouseOver)==null||l.call(e,a),(c=o.mouseOver)==null||c.call(e,a)}).on("mouseout",a=>{var l,c;this.context.events.emit("point:mouseout",{point:e,index:i,series:this,event:a}),(l=r.mouseOut)==null||l.call(e,a),(c=o.mouseOut)==null||c.call(e,a)}).on("click",a=>{var l,c,h,f;this.context.events.emit("point:click",{point:e,index:i,series:this,event:a}),(l=r.click)==null||l.call(e,a),(c=o.click)==null||c.call(e,a),(f=(h=this.config.events)==null?void 0:h.click)==null||f.call(this,a),this.handlePointSelect(t,e,i,a)}),t.style("cursor",this.config.cursor||"pointer")}applyJitter(t,e,i){return i?t+(Math.random()-.5)*i*e:t}}function Cc(n,t){const e=n.length;if(t>=e||t<3)return n;const i=new Array(t);i[0]=n[0],i[t-1]=n[e-1];const r=(e-2)/(t-2);let o=0;for(let s=1;s<t-1;s++){const a=Math.floor((s-1)*r)+1,l=Math.min(Math.floor(s*r)+1,e-1),c=Math.floor(s*r)+1,h=Math.min(Math.floor((s+1)*r)+1,e-1);let f=0,u=0;const d=h-c;for(let x=c;x<h;x++)f+=n[x].x??x,u+=n[x].y??0;d>0&&(f/=d,u/=d);const p=n[o].x??o,y=n[o].y??0;let g=-1,m=a;for(let x=a;x<l;x++){const v=n[x].x??x,b=n[x].y??0,k=Math.abs((p-f)*(b-y)-(p-v)*(u-y));k>g&&(g=k,m=x)}i[s]=n[m],o=m}return i}function O2(n,t){const e=n.length;if(t>=e||t<2)return n;const i=Math.ceil(t/2),r=e/i,o=[];o.push(n[0]);for(let s=0;s<i;s++){const a=Math.floor(s*r),l=Math.min(Math.floor((s+1)*r),e);let c=a,h=a,f=n[a].y??0,u=f;for(let d=a+1;d<l;d++){const p=n[d].y??0;p<f&&(f=p,c=d),p>u&&(u=p,h=d)}c<h?(o.push(n[c]),c!==h&&o.push(n[h])):(o.push(n[h]),c!==h&&o.push(n[c]))}return o[o.length-1]!==n[e-1]&&o.push(n[e-1]),o}const Uf=new WeakMap;function N2(n,t){let e=Uf.get(n);return e||(e=[],Uf.set(n,e),st(n).on("mousemove.hover-shared",i=>{const r=n.querySelector(".katucharts-plot-group");if(!r)return;const o=r.getScreenCTM();if(!o)return;const s=n.createSVGPoint();s.x=i.clientX,s.y=i.clientY;const a=s.matrixTransform(o.inverse()),l=a.x,c=a.y;if(l<0||l>t.width||c<0||c>t.height){for(const d of e)d.currentIdx>=0&&d.hideHover(i);return}let h=null,f=-1,u=1/0;for(const d of e){const p=d.findCandidate(l,c);p&&p.dist<u&&(u=p.dist,f=p.idx,h=d)}for(const d of e)d!==h&&d.currentIdx>=0&&d.hideHover(i);h&&f!==h.currentIdx&&h.showHover(f,i)}),st(n).on("mouseleave.hover-shared",i=>{for(const r of e)r.currentIdx>=0&&r.hideHover(i)}),st(n).on("click.hover-shared",i=>{for(const r of e)if(r.currentIdx>=0){r.handleClick(i);break}})),e}class W2{constructor(t){var a;this.config=t,this.currentIdx=-1;const{group:e,data:i,xAxis:r,plotArea:o}=t;this.validData=i.filter(l=>l.y!==null&&l.y!==void 0),this.xPositions=new Float64Array(this.validData.length);for(let l=0;l<this.validData.length;l++)this.xPositions[l]=r.getPixelForValue(this.validData[l].x??l);this.hoverGroup=e.append("g").attr("class","katucharts-hover-targets"),this.halo=this.hoverGroup.append("circle").attr("r",0).attr("opacity",0).attr("class","katucharts-halo"),this.hoverMarker=this.hoverGroup.append("circle").attr("r",t.markerRadius).attr("opacity",0).attr("class","katucharts-hover-marker").attr("stroke","#fff").attr("stroke-width",1);const s=(a=e.node())==null?void 0:a.ownerSVGElement;s&&N2(s,o).push(this)}findCandidate(t,e){const{yAxis:i}=this.config,r=this.xPositions;if(r.length===0)return null;let o=0,s=r.length-1;for(;o<s;){const h=o+s>>1;r[h]<t?o=h+1:s=h}let a=-1,l=1/0;const c=2;for(let h=Math.max(0,o-c);h<=Math.min(r.length-1,o+c);h++){const f=r[h],u=i.getPixelForValue(this.validData[h].y??0),d=Math.sqrt((f-t)**2+(u-e)**2);d<l&&(l=d,a=h)}return a<0||Math.abs(r[a]-t)>50?null:{idx:a,dist:l}}handleClick(t){var o,s,a,l,c,h,f;if(this.currentIdx<0)return;const{series:e,events:i}=this.config,r=this.validData[this.currentIdx];i.emit("point:click",{point:r,index:this.currentIdx,series:e,event:t}),(s=(o=r.events)==null?void 0:o.click)==null||s.call(r,t),(c=(l=(a=e.config.point)==null?void 0:a.events)==null?void 0:l.click)==null||c.call(r,t),(f=(h=e.config.events)==null?void 0:h.click)==null||f.call(e,t)}showHover(t,e){var x,v,b,k,M;if(t<0||t>=this.validData.length)return;const{series:i,events:r,yAxis:o,haloSize:s,haloOpacity:a,hoverRadius:l,hoverLineWidth:c,pathSelection:h,lineWidthPlus:f,baseLineWidth:u,getColor:d}=this.config,p=this.validData[t],y=this.xPositions[t],g=o.getPixelForValue(p.y??0),m=d(p);this.currentIdx>=0&&this.currentIdx!==t&&r.emit("point:mouseout",{point:this.validData[this.currentIdx],index:this.currentIdx,series:i,event:e}),this.currentIdx=t,this.halo.attr("cx",y).attr("cy",g).attr("fill",m).transition().duration(Z).ease(j).attr("r",s).attr("opacity",a),this.hoverMarker.attr("cx",y).attr("cy",g).attr("fill",m).transition().duration(Z).ease(j).attr("r",l).attr("opacity",1).attr("stroke-width",c),f&&h&&h.transition("hover").duration(Z).ease(j).attr("stroke-width",u+f),r.emit("point:mouseover",{point:p,index:t,series:i,event:e,plotX:y,plotY:g}),(v=(x=p.events)==null?void 0:x.mouseOver)==null||v.call(p,e),(M=(k=(b=i.config.point)==null?void 0:b.events)==null?void 0:k.mouseOver)==null||M.call(p,e)}hideHover(t){var s,a,l,c,h;const{series:e,events:i,pathSelection:r,baseLineWidth:o}=this.config;if(this.currentIdx>=0){const f=this.validData[this.currentIdx];i.emit("point:mouseout",{point:f,index:this.currentIdx,series:e,event:t}),(a=(s=f.events)==null?void 0:s.mouseOut)==null||a.call(f,t),(h=(c=(l=e.config.point)==null?void 0:l.events)==null?void 0:c.mouseOut)==null||h.call(f,t)}this.halo.transition().duration(Z).ease(j).attr("r",0).attr("opacity",0),this.hoverMarker.transition().duration(Z).ease(j).attr("r",this.config.markerRadius).attr("opacity",0),r&&r.transition("hover").duration(Z).ease(j).attr("stroke-width",o),this.currentIdx=-1}findNearest(t){const e=this.xPositions;if(e.length===0)return-1;let i=0,r=e.length-1;for(;i<r;){const o=i+r>>1;e[o]<t?i=o+1:r=o}return i>0&&Math.abs(e[i-1]-t)<Math.abs(e[i]-t)&&(i=i-1),Math.abs(e[i]-t)>30?-1:i}}const H2={circle:Kn,square:kc,diamond:wc,triangle:Ac,"triangle-down":Sc,cross:vc};class jf extends Ut{constructor(t){super(t),this.pathSelection=null}render(){var r;const t=this.getColor(),e=this.getFilteredData(),i=this.context.animate;(r=this.config.zones)!=null&&r.length?this.renderZones(e,t):this.config.negativeColor&&this.config.threshold!==null?this.renderNegativeColor(e,t):this.renderMainLine(e,t,i),this.renderMarkers(e,t,!!i),this.renderHoverTargets(e,t),this.renderDataLabels(e.filter(o=>o.y!==null&&o.y!==void 0),(o,s)=>this.context.xAxis.getPixelForValue(o.x??s),o=>this.context.yAxis.getPixelForValue(o.y??0)),i&&this.emitAfterAnimate(vt+Jn)}renderMainLine(t,e,i){const r=this.buildLineGenerator();this.pathSelection=this.group.append("path").datum(t).attr("d",r).attr("fill","none").attr("stroke",e).attr("stroke-width",this.config.lineWidth??2).attr("stroke-dasharray",on(this.config.dashStyle)).attr("stroke-linecap",this.config.linecap||"round").attr("class","katucharts-line"),i&&this.animateLineEntry(this.pathSelection)}renderNegativeColor(t,e){const i=this.config.threshold??0,r=this.config.negativeColor,o=this.config.lineWidth??2,s=this.config.linecap||"round",a=on(this.config.dashStyle),l=[];let c=[],h=null;for(const f of t){if(f.y===null||f.y===void 0){c.length>0&&(l.push({points:c,negative:h}),c=[],h=null);continue}const u=f.y<i;h!==null&&u!==h&&c.length>0&&(l.push({points:[...c],negative:h}),c=[c[c.length-1]]),h=u,c.push(f)}c.length>0&&l.push({points:c,negative:h});for(const f of l){const u=this.buildLineGenerator();this.group.append("path").datum(f.points).attr("d",u).attr("fill","none").attr("stroke",f.negative?r:e).attr("stroke-width",o).attr("stroke-linecap",s).attr("stroke-dasharray",a).attr("class","katucharts-line katucharts-negative-segment")}}renderZones(t,e){var u,d;const i=this.config.zones,r=this.config.zoneAxis||"y",o=this.config.lineWidth??2,s=this.config.linecap||"round";(u=this.pathSelection)==null||u.remove(),this.pathSelection=null;const a=[...i].sort((p,y)=>(p.value??1/0)-(y.value??1/0)),l=p=>r==="x"?p.x??0:p.y??0,c=t.filter(p=>p.y!==null&&p.y!==void 0),h=a.map(()=>[]),f=[];for(const p of c){const y=l(p);let g=!1;for(let m=0;m<a.length;m++)if(y<(a[m].value??1/0)){h[m].push(p),g=!0;break}g||f.push(p)}for(let p=0;p<a.length;p++)h[p].length!==0&&(p>0&&h[p-1].length>0&&h[p].unshift(h[p-1][h[p-1].length-1]),p<a.length-1&&((d=h[p+1])==null?void 0:d.length)>0?h[p].push(h[p+1][0]):f.length>0&&h[p].push(f[0]));for(let p=0;p<a.length;p++){const y=h[p];if(y.length<2)continue;const g=a[p],m=this.buildLineGenerator();this.group.append("path").datum(y).attr("d",m).attr("fill","none").attr("stroke",g.color||e).attr("stroke-width",o).attr("stroke-linecap",s).attr("stroke-dasharray",on(g.dashStyle||this.config.dashStyle)).attr("class","katucharts-line katucharts-zone")}if(f.length>0){const p=h[h.length-1];if((p==null?void 0:p.length)>0&&f.unshift(p[p.length-1]),f.length>1){const y=this.buildLineGenerator();this.group.append("path").datum(f).attr("d",y).attr("fill","none").attr("stroke",e).attr("stroke-width",o).attr("stroke-linecap",s).attr("stroke-dasharray",on(this.config.dashStyle)).attr("class","katucharts-line katucharts-zone")}}}animateUpdate(t){const e=this.getFilteredData(),i=this.buildLineGenerator(),r=this.getColor();this.pathSelection&&!this.pathSelection.empty()?this.pathSelection.datum(e).transition().duration(t).attr("d",i):(this.group.selectAll(".katucharts-line").remove(),this.renderMainLine(e,r,!1)),this.group.selectAll(".katucharts-markers").remove(),this.group.selectAll(".katucharts-hover-targets").remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.renderMarkers(e,r,!1),this.renderHoverTargets(e,r),this.renderDataLabels(e.filter(o=>o.y!==null&&o.y!==void 0),(o,s)=>this.context.xAxis.getPixelForValue(o.x??s),o=>this.context.yAxis.getPixelForValue(o.y??0))}buildLineGenerator(){const{xAxis:t,yAxis:e}=this.context,i=this.config.connectNulls,r=!!this.context.inverted,o=(l,c)=>typeof l=="number"?c:(l==null?void 0:l.x)??c,s=l=>typeof l=="number"?l:l==null?void 0:l.y,a=Mi().x((l,c)=>r?e.getPixelForValue(s(l)??0):t.getPixelForValue(o(l,c))).y((l,c)=>r?t.getPixelForValue(o(l,c)):e.getPixelForValue(s(l)??0)).curve(this.getCurve());return i||a.defined(l=>{const c=s(l);return c!=null}),a}getFilteredData(){var e;let t;if(this.config.connectNulls?t=this.data.filter(i=>i.y!==null&&i.y!==void 0):t=this.data,(e=this.context)!=null&&e.plotArea){const r=this.context.plotArea.width*4;t.length>r&&(t=Cc(t,Math.floor(r)))}return t}getCurve(){const t=this.config.step;return t==="left"?Hf:t==="center"?Nf:t==="right"?Wf:Ui}animateLineEntry(t){var i,r;const e=((r=(i=t.node())==null?void 0:i.getTotalLength)==null?void 0:r.call(i))||0;if(e>0){const o=typeof this.config.animation=="object"?this.config.animation:{},s=o.duration??vt,a=o.defer??0,l=t.attr("stroke-dasharray");t.attr("stroke-dasharray",`${e} ${e}`).attr("stroke-dashoffset",e).transition().delay(a).duration(s).ease(pt).attr("stroke-dashoffset",0).on("end",()=>{t.attr("stroke-dasharray",l==="none"?null:l)})}}renderMarkers(t,e,i){const r=this.config.marker,o=(r==null?void 0:r.enabledThreshold)??2;if(!((r==null?void 0:r.enabled)===!0||(r==null?void 0:r.enabled)!==!1&&t.length<=o*this.context.plotArea.width/12))return;const{xAxis:a,yAxis:l}=this.context,c=(r==null?void 0:r.radius)??4,h=(r==null?void 0:r.symbol)||"circle",f=this.group.append("g").attr("class","katucharts-markers"),u=t.filter(d=>d.y!==null&&d.y!==void 0);if(h==="circle"){const d=f.selectAll("circle").data(u).join("circle").attr("cx",p=>a.getPixelForValue(p.x??0)).attr("cy",p=>l.getPixelForValue(p.y??0)).attr("fill",(p,y)=>this.getMarkerFill(p,y,r,e)).attr("stroke",(r==null?void 0:r.lineColor)||this.autoBorderColor()).attr("stroke-width",(r==null?void 0:r.lineWidth)??1).attr("class","katucharts-marker");i?d.attr("r",0).transition().delay((p,y)=>Pe(y,Jn,Wt,u.length)).duration(vt).ease(pt).attr("r",p=>{var y;return((y=p.marker)==null?void 0:y.radius)??c}):d.attr("r",p=>{var y;return((y=p.marker)==null?void 0:y.radius)??c})}else{const d=H2[h]||Kn,p=Math.PI*c*c;rn().type(d).size(p);const y=f.selectAll("path").data(u).join("path").attr("transform",g=>`translate(${a.getPixelForValue(g.x??0)},${l.getPixelForValue(g.y??0)})`).attr("fill",(g,m)=>this.getMarkerFill(g,m,r,e)).attr("stroke",(r==null?void 0:r.lineColor)||this.autoBorderColor()).attr("stroke-width",(r==null?void 0:r.lineWidth)??1).attr("class","katucharts-marker");if(i){const g=rn().type(d).size(0);y.attr("d",g).transition().delay((m,x)=>Pe(x,Jn,Wt,u.length)).duration(vt).ease(pt).attr("d",m=>{var v;const x=((v=m.marker)==null?void 0:v.radius)??c;return rn().type(d).size(Math.PI*x*x)()})}else y.attr("d",g=>{var x;const m=((x=g.marker)==null?void 0:x.radius)??c;return rn().type(d).size(Math.PI*m*m)()})}}getMarkerFill(t,e,i,r){var o;return t.color?t.color:(o=t.marker)!=null&&o.fillColor?t.marker.fillColor:i!=null&&i.fillColor?i.fillColor:this.config.negativeColor&&(t.y??0)<(this.config.threshold??0)?this.config.negativeColor:r}renderHoverTargets(t,e){var f,u,d,p,y,g,m,x;if(this.config.enableMouseTracking===!1)return;const i=((f=this.config.marker)==null?void 0:f.radius)??4,r=(d=(u=this.config.marker)==null?void 0:u.states)==null?void 0:d.hover,o=(r==null?void 0:r.radiusPlus)??2,s=(r==null?void 0:r.radius)??i+o,a=(r==null?void 0:r.lineWidthPlus)??1,l=(r==null?void 0:r.lineWidth)??(((p=this.config.marker)==null?void 0:p.lineWidth)??1)+a,c=((g=(y=this.config.states)==null?void 0:y.hover)==null?void 0:g.lineWidthPlus)??1,h=(x=(m=this.config.states)==null?void 0:m.hover)==null?void 0:x.halo;new W2({series:this,group:this.group,data:t,xAxis:this.context.xAxis,yAxis:this.context.yAxis,plotArea:this.context.plotArea,events:this.context.events,haloSize:(h==null?void 0:h.size)??10,haloOpacity:(h==null?void 0:h.opacity)??.25,markerRadius:i,hoverRadius:s,hoverLineWidth:l,cursor:this.config.cursor||"pointer",pathSelection:this.pathSelection,lineWidthPlus:c,baseLineWidth:this.config.lineWidth??2,getColor:v=>v.color||e})}}class V2 extends jf{constructor(t){super(t)}getCurve(){return Bf.alpha(.5)}}const G2={circle:Kn,square:kc,diamond:wc,triangle:Ac,"triangle-down":Sc,cross:vc};class qf extends Ut{constructor(t){super(t),this.isSpline=!1,this.areaPath=null,this.linePath=null,this.negAreaPath=null}render(){var r;const t=this.getColor(),e=this.getFilteredData(),i=this.context.animate;(r=this.config.zones)!=null&&r.length?this.renderZones(e,t):this.config.negativeFillColor||this.config.negativeColor?this.renderWithNegativeColor(e,t,!!i):this.renderMainArea(e,t,!!i),this.renderMarkers(e,t,!!i),this.config.trackByArea?this.renderAreaHoverTargets(e,t):this.renderHoverTargets(e,t),this.renderDataLabels(e.filter(o=>o.y!==null&&o.y!==void 0),(o,s)=>this.context.xAxis.getPixelForValue(o.x??s),o=>this.context.yAxis.getPixelForValue(o.y??0)),i&&this.emitAfterAnimate(vt+Jn)}renderMainArea(t,e,i){const{areaGen:r,lineGen:o}=this.buildGenerators(),s=this.config.lineColor||e;if(this.areaPath=this.group.append("path").datum(t).attr("d",r).attr("fill",this.config.fillColor||e).attr("class","katucharts-area"),this.linePath=this.group.append("path").datum(t).attr("d",o).attr("fill","none").attr("stroke",s).attr("stroke-width",this.config.lineWidth??2).attr("stroke-linecap",this.config.linecap||"round").attr("stroke-dasharray",on(this.config.dashStyle)).attr("class","katucharts-area-line"),i){const l=(typeof this.config.animation=="object"?this.config.animation:{}).duration??vt;this.areaPath.attr("fill-opacity",0).transition().duration(l).ease(pt).attr("fill-opacity",this.config.fillOpacity??.75),this.animateLineEntry(this.linePath)}else this.areaPath.attr("fill-opacity",this.config.fillOpacity??.75)}renderWithNegativeColor(t,e,i){const{xAxis:r,yAxis:o}=this.context,s=this.config.threshold??0,a=o.getPixelForValue(s),l=this.getCurve(),c=this.config.fillOpacity??.75,h=this.config.negativeFillColor||this.config.negativeColor||e,f=this.config.fillColor||e,u=this.config.lineColor||e,d=t.filter(g=>g.y!==null&&g.y!==void 0&&(g.y??0)>=s),p=t.filter(g=>g.y!==null&&g.y!==void 0&&(g.y??0)<s);if(d.length>0){const g=ji().x(m=>r.getPixelForValue(m.x??0)).y0(a).y1(m=>o.getPixelForValue(m.y??0)).curve(l);this.areaPath=this.group.append("path").datum(d).attr("d",g).attr("fill",f).attr("fill-opacity",c).attr("class","katucharts-area katucharts-area-positive")}if(p.length>0){const g=ji().x(m=>r.getPixelForValue(m.x??0)).y0(a).y1(m=>o.getPixelForValue(m.y??0)).curve(l);this.negAreaPath=this.group.append("path").datum(p).attr("d",g).attr("fill",h).attr("fill-opacity",c).attr("class","katucharts-area katucharts-area-negative")}const y=Mi().defined(g=>g.y!==null&&g.y!==void 0).x(g=>r.getPixelForValue(g.x??0)).y(g=>o.getPixelForValue(g.y??0)).curve(l);if(this.linePath=this.group.append("path").datum(t).attr("d",y).attr("fill","none").attr("stroke",u).attr("stroke-width",this.config.lineWidth??2).attr("stroke-linecap",this.config.linecap||"round").attr("stroke-dasharray",on(this.config.dashStyle)).attr("class","katucharts-area-line"),i){const m=(typeof this.config.animation=="object"?this.config.animation:{}).duration??vt;this.areaPath&&this.areaPath.attr("fill-opacity",0).transition().duration(m).ease(pt).attr("fill-opacity",c),this.negAreaPath&&this.negAreaPath.attr("fill-opacity",0).transition().duration(m).ease(pt).attr("fill-opacity",c),this.animateLineEntry(this.linePath)}}renderZones(t,e){const{xAxis:i,yAxis:r}=this.context,o=this.config.zones,s=this.config.zoneAxis||"y",a=this.config.fillOpacity??.75,l=this.config.lineWidth??2,c=this.getCurve(),h=r.getPixelForValue(this.config.threshold??0),f=[...o].sort((g,m)=>(g.value??1/0)-(m.value??1/0)),u=g=>s==="x"?g.x??0:g.y??0,d=t.filter(g=>g.y!==null&&g.y!==void 0);let p=-1/0;const y=(g,m,x,v)=>{if(g.length<2)return;const b=ji().x(M=>i.getPixelForValue(M.x??0)).y0(h).y1(M=>r.getPixelForValue(M.y??0)).curve(c);this.group.append("path").datum(g).attr("d",b).attr("fill",x||m).attr("fill-opacity",a).attr("class","katucharts-area katucharts-zone");const k=Mi().x(M=>i.getPixelForValue(M.x??0)).y(M=>r.getPixelForValue(M.y??0)).curve(c);this.group.append("path").datum(g).attr("d",k).attr("fill","none").attr("stroke",m).attr("stroke-width",l).attr("stroke-dasharray",on(v||this.config.dashStyle)).attr("class","katucharts-area-line katucharts-zone")};for(const g of f){const m=g.value??1/0,x=g.color||e,v=g.fillColor||x,b=[];for(let k=0;k<d.length;k++){const M=u(d[k]);if(M>=p&&M<m)b.length===0&&k>0&&b.push(d[k-1]),b.push(d[k]);else if(M>=m&&b.length>0){b.push(d[k]);break}}y(b,x,v,g.dashStyle),p=m}if(p!==1/0){const g=[];for(let m=0;m<d.length;m++)u(d[m])>=p&&(g.length===0&&m>0&&g.push(d[m-1]),g.push(d[m]));y(g,e,this.config.fillColor)}}getCurve(){if(this.isSpline)return Bf.alpha(.5);const t=this.config.step;return t==="left"?Hf:t==="center"?Nf:t==="right"?Wf:Ui}getFilteredData(){var e;let t;if(this.config.connectNulls?t=this.data.filter(i=>i.y!==null&&i.y!==void 0):t=this.data,(e=this.context)!=null&&e.plotArea){const r=this.context.plotArea.width*4;t.length>r&&(t=Cc(t,Math.floor(r)))}return t}buildGenerators(){const{xAxis:t,yAxis:e}=this.context,i=e.getPixelForValue(this.config.threshold??0),r=this.getCurve(),o=this.context.stackOffsets,s=this.config.stacking,a=this.config.connectNulls,l=u=>!s||!o?u.y??0:(o.get(u.x??0)||0)+(u.y??0),c=u=>!s||!o?this.config.threshold??0:o.get(u.x??0)||0,h=ji().x(u=>t.getPixelForValue(u.x??0)).y0(u=>s?e.getPixelForValue(c(u)):i).y1(u=>e.getPixelForValue(l(u))).curve(r),f=Mi().x(u=>t.getPixelForValue(u.x??0)).y(u=>e.getPixelForValue(l(u))).curve(r);return a||(h.defined(u=>u.y!==null&&u.y!==void 0),f.defined(u=>u.y!==null&&u.y!==void 0)),{areaGen:h,lineGen:f}}animateUpdate(t){const e=this.getFilteredData(),{areaGen:i,lineGen:r}=this.buildGenerators(),o=this.getColor();this.areaPath&&!this.areaPath.empty()&&this.areaPath.datum(e).transition().duration(t).attr("d",i),this.linePath&&!this.linePath.empty()&&this.linePath.datum(e).transition().duration(t).attr("d",r),this.group.selectAll(".katucharts-hover-targets").remove(),this.group.selectAll(".katucharts-markers").remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.renderMarkers(e,o,!1),this.config.trackByArea?this.renderAreaHoverTargets(e,o):this.renderHoverTargets(e,o),this.renderDataLabels(e.filter(s=>s.y!==null&&s.y!==void 0),(s,a)=>this.context.xAxis.getPixelForValue(s.x??a),s=>this.context.yAxis.getPixelForValue(s.y??0))}animateLineEntry(t){var i,r;const e=((r=(i=t.node())==null?void 0:i.getTotalLength)==null?void 0:r.call(i))||0;if(e>0){const o=typeof this.config.animation=="object"?this.config.animation:{},s=o.duration??vt,a=o.defer??0,l=t.attr("stroke-dasharray");t.attr("stroke-dasharray",`${e} ${e}`).attr("stroke-dashoffset",e).transition().delay(a).duration(s).ease(pt).attr("stroke-dashoffset",0).on("end",()=>t.attr("stroke-dasharray",l==="none"?null:l))}}renderMarkers(t,e,i){const r=this.config.marker;if((r==null?void 0:r.enabled)!==!0)return;const{xAxis:o,yAxis:s}=this.context,a=(r==null?void 0:r.radius)??4,l=(r==null?void 0:r.symbol)||"circle",c=this.group.append("g").attr("class","katucharts-markers"),h=t.filter(f=>f.y!==null&&f.y!==void 0);if(l==="circle"){const f=c.selectAll("circle").data(h).join("circle").attr("cx",u=>o.getPixelForValue(u.x??0)).attr("cy",u=>s.getPixelForValue(u.y??0)).attr("fill",u=>u.color||(r==null?void 0:r.fillColor)||e).attr("stroke",(r==null?void 0:r.lineColor)||this.autoBorderColor()).attr("stroke-width",(r==null?void 0:r.lineWidth)??1).attr("class","katucharts-marker");i?f.attr("r",0).transition().delay((u,d)=>Pe(d,Jn,Wt,h.length)).duration(vt).ease(pt).attr("r",u=>{var d;return((d=u.marker)==null?void 0:d.radius)??a}):f.attr("r",u=>{var d;return((d=u.marker)==null?void 0:d.radius)??a})}else{const f=G2[l]||Kn,u=c.selectAll("path").data(h).join("path").attr("transform",d=>`translate(${o.getPixelForValue(d.x??0)},${s.getPixelForValue(d.y??0)})`).attr("fill",d=>d.color||(r==null?void 0:r.fillColor)||e).attr("stroke",(r==null?void 0:r.lineColor)||this.autoBorderColor()).attr("stroke-width",(r==null?void 0:r.lineWidth)??1).attr("class","katucharts-marker");if(i){const d=rn().type(f).size(0);u.attr("d",d).transition().delay((p,y)=>Pe(y,Jn,Wt,h.length)).duration(vt).ease(pt).attr("d",p=>{var g;const y=((g=p.marker)==null?void 0:g.radius)??a;return rn().type(f).size(Math.PI*y*y)()})}else u.attr("d",d=>{var y;const p=((y=d.marker)==null?void 0:y.radius)??a;return rn().type(f).size(Math.PI*p*p)()})}}renderAreaHoverTargets(t,e){if(this.config.enableMouseTracking===!1)return;const{xAxis:i,yAxis:r}=this.context,o=r.getPixelForValue(this.config.threshold??0),s=this.getCurve(),a=ji().x(h=>i.getPixelForValue(h.x??0)).y0(o).y1(h=>r.getPixelForValue(h.y??0)).curve(s),l=t.filter(h=>h.y!==null&&h.y!==void 0);this.group.append("path").datum(l).attr("d",a).attr("fill","transparent").attr("class","katucharts-hover-targets").style("cursor",this.config.cursor||"pointer").on("mousemove",h=>{const[f]=[h.offsetX-(this.context.plotArea.x||0)];let u=0,d=1/0;l.forEach((y,g)=>{const m=i.getPixelForValue(y.x??0),x=Math.abs(m-f);x<d&&(d=x,u=g)});const p=l[u];this.context.events.emit("point:mouseover",{point:p,index:u,series:this,event:h,plotX:i.getPixelForValue(p.x??0),plotY:r.getPixelForValue(p.y??0)})}).on("mouseout",h=>{this.context.events.emit("point:mouseout",{point:l[0],index:0,series:this,event:h})}).on("click",h=>{var y,g,m,x;const[f]=[h.offsetX-(this.context.plotArea.x||0)];let u=0,d=1/0;l.forEach((v,b)=>{const k=i.getPixelForValue(v.x??0),M=Math.abs(k-f);M<d&&(d=M,u=b)});const p=l[u];this.context.events.emit("point:click",{point:p,index:u,series:this,event:h}),(g=(y=p.events)==null?void 0:y.click)==null||g.call(p,h),(x=(m=this.config.events)==null?void 0:m.click)==null||x.call(this,h)})}renderHoverTargets(t,e){var f,u,d,p,y;if(this.config.enableMouseTracking===!1)return;const{xAxis:i,yAxis:r}=this.context,o=this.group.append("g").attr("class","katucharts-hover-targets"),s=((d=(u=(f=this.config.marker)==null?void 0:f.states)==null?void 0:u.hover)==null?void 0:d.radius)??6,a=t.filter(g=>g.y!==null&&g.y!==void 0),l=(y=(p=this.config.states)==null?void 0:p.hover)==null?void 0:y.halo,c=(l==null?void 0:l.size)??10,h=(l==null?void 0:l.opacity)??.25;a.forEach((g,m)=>{const x=i.getPixelForValue(g.x??0),v=r.getPixelForValue(g.y??0),b=o.append("circle").attr("cx",x).attr("cy",v).attr("r",0).attr("fill",g.color||e).attr("opacity",0).attr("class","katucharts-halo"),k=o.append("circle").attr("cx",x).attr("cy",v).attr("r",0).attr("fill",g.color||e).attr("stroke",this.autoBorderColor()).attr("stroke-width",1).attr("class","katucharts-hover-marker");o.append("circle").attr("cx",x).attr("cy",v).attr("r",15).attr("fill","transparent").style("cursor",this.config.cursor||"pointer").on("mouseover",P=>{var $,_,L,I,E;b.transition().duration(Z).ease(j).attr("r",c).attr("opacity",h),k.transition().duration(Z).ease(j).attr("r",s),this.context.events.emit("point:mouseover",{point:g,index:m,series:this,event:P,plotX:x,plotY:v}),(_=($=g.events)==null?void 0:$.mouseOver)==null||_.call(g,P),(E=(I=(L=this.config.point)==null?void 0:L.events)==null?void 0:I.mouseOver)==null||E.call(g,P)}).on("mouseout",P=>{var $,_,L,I,E;b.transition().duration(Z).ease(j).attr("r",0).attr("opacity",0),k.transition().duration(Z).ease(j).attr("r",0),this.context.events.emit("point:mouseout",{point:g,index:m,series:this,event:P}),(_=($=g.events)==null?void 0:$.mouseOut)==null||_.call(g,P),(E=(I=(L=this.config.point)==null?void 0:L.events)==null?void 0:I.mouseOut)==null||E.call(g,P)}).on("click",P=>{var $,_,L,I,E,C,S;this.context.events.emit("point:click",{point:g,index:m,series:this,event:P}),(_=($=g.events)==null?void 0:$.click)==null||_.call(g,P),(E=(I=(L=this.config.point)==null?void 0:L.events)==null?void 0:I.click)==null||E.call(g,P),(S=(C=this.config.events)==null?void 0:C.click)==null||S.call(this,P),this.handlePointSelect(k,g,m,P)})})}}class Y2 extends qf{constructor(){super(...arguments),this.isSpline=!0}}function Pc(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}function X2(n,t,e,i,r,o,s){if(e<=0||i<=0)return`M${n},${t}H${n}V${t}Z`;const a=o?Math.min(r,e/2,i/2):0,l=s?Math.min(r,e/2,i/2):0;return`M${n+a},${t}H${n+e-a}`+(a?`A${a},${a},0,0,1,${n+e},${t+a}`:`L${n+e},${t}`)+`V${t+i-l}`+(l?`A${l},${l},0,0,1,${n+e-l},${t+i}`:`L${n+e},${t+i}`)+`H${n+l}`+(l?`A${l},${l},0,0,1,${n},${t+i-l}`:`L${n},${t+i}`)+`V${t+a}`+(a?`A${a},${a},0,0,1,${n+a},${t}`:`L${n},${t}`)+"Z"}function U2(n,t,e,i,r,o,s){if(e<=0||i<=0)return`M${n},${t}H${n}V${t}Z`;const a=o?Math.min(r,e/2,i/2):0,l=s?Math.min(r,e/2,i/2):0;return`M${n+l},${t}H${n+e-a}`+(a?`A${a},${a},0,0,1,${n+e},${t+a}`:`L${n+e},${t}`)+`V${t+i-a}`+(a?`A${a},${a},0,0,1,${n+e-a},${t+i}`:`L${n+e},${t+i}`)+`H${n+l}`+(l?`A${l},${l},0,0,1,${n},${t+i-l}`:`L${n},${t+i}`)+`V${t+l}`+(l?`A${l},${l},0,0,1,${n+l},${t}`:`L${n},${t}`)+"Z"}class Zf extends Ut{constructor(t){super(t),this.isHorizontal=!1}getEntryDuration(){return(typeof this.config.animation=="object"?this.config.animation:{}).duration??vt}render(){this.group.selectAll(".katucharts-data-labels").remove();const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data,s=this.context.animate,{barWidth:a,barOffset:l,baseline:c}=this.computeBarGeometry(),h=this.config.stacking,f=this.context.stackOffsets,u=h==="percent",d=u?this.context.stackTotals:void 0,p=b=>{const k=b.x??0,M=(f==null?void 0:f.get(k))||0,P=b.y??0;if(u&&d){const $=d.get(k)||1;return(M+P)/$*100}return M+P},y=b=>{const k=b.x??0,M=(f==null?void 0:f.get(k))||0;if(u&&d){const P=d.get(k)||1;return M/P*100}return M};if(h){const b=this.context.stackTotals;for(const k of o){const M=k.x??0;if(b&&(k.total=b.get(M)||0,k.stackTotal=b.get(M)||0),u&&b){const P=b.get(M)||1;k.percentage=(k.y??0)/P*100}}}const g=this.config.minPointLength??0,m=this.config.crisp!==!1,x=Pc(this.config.borderRadius);if(h){const b=this.group.selectAll(".katucharts-column").data(o).join("path").attr("class","katucharts-column").attr("stroke",k=>k.borderColor||this.config.borderColor||"none").attr("stroke-width",k=>k.borderWidth??this.config.borderWidth??0);this.renderStackedBars(b,o,a,l,p,y,r,g,m,!!s,x),this.attachHoverEffects(b,o),this.renderColumnDataLabels(o,a,l,c,p,y),s&&this.emitAfterAnimate(vt+o.length*Wt);return}const v=this.group.selectAll(".katucharts-column").data(o).join("rect").attr("class","katucharts-column").attr("rx",x).attr("stroke",b=>b.borderColor||this.config.borderColor||"none").attr("stroke-width",b=>b.borderWidth??this.config.borderWidth??0);this.isHorizontal?this.renderHorizontalBars(v,o,a,l,c,r,g,m,!!s):this.renderVerticalBars(v,o,a,l,c,r,g,m,!!s),this.attachHoverEffects(v,o),this.renderColumnDataLabels(o,a,l,c,h?p:void 0,h?y:void 0),s&&this.emitAfterAnimate(vt+o.length*Wt)}renderVerticalBars(t,e,i,r,o,s,a,l,c){const{xAxis:h,yAxis:f}=this.context,u=this.config.threshold??0,d=this.config.negativeColor;if(t.attr("x",p=>this.crispCoord(h.getPixelForValue(p.x??0)+r,l)).attr("width",l?Math.round(i):i).attr("fill",(p,y)=>this.getPointColor(p,y,s,d,u)).attr("display",p=>p.y==null?"none":null),c){const p=this.getEntryDuration();t.attr("y",o).attr("height",0).transition().duration(p).ease(pt).delay((y,g)=>Pe(g,0,Wt,e.length)).attr("y",y=>this.getBarY(y,f,o,a)).attr("height",y=>this.getBarHeight(y,f,o,a))}else t.attr("y",p=>this.getBarY(p,f,o,a)).attr("height",p=>this.getBarHeight(p,f,o,a))}renderHorizontalBars(t,e,i,r,o,s,a,l,c){const{xAxis:h,yAxis:f}=this.context,u=this.config.threshold??0,d=this.config.negativeColor;if(t.attr("y",p=>this.crispCoord(h.getPixelForValue(p.x??0)+r,l)).attr("height",l?Math.round(i):i).attr("fill",(p,y)=>this.getPointColor(p,y,s,d,u)).attr("display",p=>p.y==null?"none":null),c){const p=this.getEntryDuration();t.attr("x",o).attr("width",0).transition().duration(p).ease(pt).delay((y,g)=>Pe(g,0,Wt,e.length)).attr("x",y=>{const g=f.getPixelForValue(y.y??0);return Math.min(o,g)}).attr("width",y=>{const g=Math.abs(f.getPixelForValue(y.y??0)-o);return Math.max(g,a)})}else t.attr("x",p=>Math.min(o,f.getPixelForValue(p.y??0))).attr("width",p=>Math.max(Math.abs(f.getPixelForValue(p.y??0)-o),a))}renderStackedBars(t,e,i,r,o,s,a,l,c,h,f){const u=this.context.totalSeriesOfType||1,d=this.context.indexInType||0,p=d===u-1,y=d===0,g=f??0;if(t.attr("fill",(m,x)=>this.getPointColor(m,x,a)),h){const m=this.getEntryDuration();t.each((x,v,b)=>{const k=st(b[v]),M=this.computeStackedStartParams(x,e,i,r,s,c),P=this.computeStackedRectParams(x,e,i,r,o,s,c,l);x._rectParams=P,k.attr("d",this.rectParamsToPath(M,g,p,y)).transition().duration(m).ease(pt).delay(Pe(v,0,Wt,e.length)).attrTween("d",()=>{const $=ce(M.x,P.x),_=ce(M.y,P.y),L=ce(M.w,P.w),I=ce(M.h,P.h);return E=>this.rectParamsToPath({x:$(E),y:_(E),w:L(E),h:I(E)},g,p,y)})})}else t.each((m,x,v)=>{const b=this.computeStackedRectParams(m,e,i,r,o,s,c,l);m._rectParams=b,st(v[x]).attr("d",this.rectParamsToPath(b,g,p,y))})}getBarY(t,e,i,r){const o=e.getPixelForValue(t.y??0),s=Math.min(o,i),a=Math.abs(o-i);return a<r&&(t.y??0)>=(this.config.threshold??0)?s-(r-a):s}getBarHeight(t,e,i,r){return Math.max(Math.abs(e.getPixelForValue(t.y??0)-i),r)}crispCoord(t,e){return e?Math.round(t):t}computeStackedRectParams(t,e,i,r,o,s,a,l){const{xAxis:c,yAxis:h}=this.context;if(this.isHorizontal){const f=this.crispCoord(c.getPixelForValue(t.x??e.indexOf(t))+r,a),u=a?Math.round(i):i,d=Math.min(h.getPixelForValue(o(t)),h.getPixelForValue(s(t))),p=Math.max(Math.abs(h.getPixelForValue(o(t))-h.getPixelForValue(s(t))),l);return{x:d,y:f,w:p,h:u}}else{const f=this.crispCoord(c.getPixelForValue(t.x??0)+r,a),u=a?Math.round(i):i,d=Math.min(h.getPixelForValue(o(t)),h.getPixelForValue(s(t))),p=Math.max(Math.abs(h.getPixelForValue(o(t))-h.getPixelForValue(s(t))),l);return{x:f,y:d,w:u,h:p}}}computeStackedStartParams(t,e,i,r,o,s){const{xAxis:a,yAxis:l}=this.context;if(this.isHorizontal){const c=this.crispCoord(a.getPixelForValue(t.x??e.indexOf(t))+r,s),h=s?Math.round(i):i;return{x:l.getPixelForValue(o(t)),y:c,w:.1,h}}else{const c=this.crispCoord(a.getPixelForValue(t.x??0)+r,s),h=s?Math.round(i):i,f=l.getPixelForValue(o(t));return{x:c,y:f,w:h,h:.1}}}rectParamsToPath(t,e,i,r){return this.isHorizontal?U2(t.x,t.y,t.w,t.h,e,i,r):X2(t.x,t.y,t.w,t.h,e,i,r)}animateUpdate(t){if(this.config.stacking){this.updateStackedBars(t);return}const{xAxis:i,yAxis:r,plotArea:o}=this.context,s=this.getColor(),a=this.data,{barWidth:l,barOffset:c,baseline:h}=this.computeBarGeometry(),f=this.config.minPointLength??0,u=this.config.crisp!==!1,d=this.config.threshold??0,p=this.config.negativeColor,y=this.group.selectAll(".katucharts-column").data(a),g=y.enter().append("rect").attr("class","katucharts-column").attr("rx",Pc(this.config.borderRadius)).attr("fill",(x,v)=>this.getPointColor(x,v,s,p,d)).attr("display",x=>x.y==null?"none":null).attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0);this.isHorizontal||g.attr("x",x=>this.crispCoord(i.getPixelForValue(x.x??0)+c,u)).attr("width",u?Math.round(l):l).attr("y",h).attr("height",0);const m=g.merge(y);m.attr("display",x=>x.y==null?"none":null),this.isHorizontal?m.transition().duration(t).attr("y",x=>this.crispCoord(i.getPixelForValue(x.x??0)+c,u)).attr("height",u?Math.round(l):l).attr("x",x=>Math.min(h,r.getPixelForValue(x.y??0))).attr("width",x=>Math.max(Math.abs(r.getPixelForValue(x.y??0)-h),f)).attr("fill",(x,v)=>this.getPointColor(x,v,s,p,d)):m.transition().duration(t).attr("x",x=>this.crispCoord(i.getPixelForValue(x.x??0)+c,u)).attr("width",u?Math.round(l):l).attr("y",x=>this.getBarY(x,r,h,f)).attr("height",x=>this.getBarHeight(x,r,h,f)).attr("fill",(x,v)=>this.getPointColor(x,v,s,p,d)),y.exit().transition().duration(t).attr("opacity",0).remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.attachHoverEffects(this.group.selectAll(".katucharts-column"),a),this.renderColumnDataLabels(a,l,c,h)}updateStackedBars(t){const{xAxis:e,yAxis:i,plotArea:r}=this.context,o=this.getColor(),s=this.data,{barWidth:a,barOffset:l,baseline:c}=this.computeBarGeometry(),h=this.config.stacking,f=this.context.stackOffsets,u=h==="percent",d=this.config.crisp!==!1,p=Pc(this.config.borderRadius),y=this.config.minPointLength??0,g=u?this.context.stackTotals:void 0,m=_=>{const L=_.x??0,I=(f==null?void 0:f.get(L))||0,E=_.y??0;if(u&&g){const C=g.get(L)||1;return(I+E)/C*100}return I+E},x=_=>{const L=_.x??0,I=(f==null?void 0:f.get(L))||0;if(u&&g){const E=g.get(L)||1;return I/E*100}return I};if(h){const _=this.context.stackTotals;for(const L of s){const I=L.x??0;if(_&&(L.total=_.get(I)||0,L.stackTotal=_.get(I)||0),u&&_){const E=_.get(I)||1;L.percentage=(L.y??0)/E*100}}}const v=this.context.totalSeriesOfType||1,b=this.context.indexInType||0,k=b===v-1,M=b===0,P=p,$=this.group.selectAll(".katucharts-column").data(s);$.each((_,L,I)=>{const E=st(I[L]),C=this.computeStackedRectParams(_,s,a,l,m,x,d,y),S=_._rectParams||C;_._rectParams=C,E.transition().duration(t).attrTween("d",()=>{const w=ce(S.x,C.x),A=ce(S.y,C.y),T=ce(S.w,C.w),F=ce(S.h,C.h);return D=>this.rectParamsToPath({x:w(D),y:A(D),w:T(D),h:F(D)},P,k,M)}).attr("fill",this.getPointColor(_,L,o))}),$.enter().append("path").attr("class","katucharts-column").attr("stroke",_=>_.borderColor||this.config.borderColor||"none").attr("stroke-width",_=>_.borderWidth??this.config.borderWidth??0).attr("fill",(_,L)=>this.getPointColor(_,L,o)).each((_,L,I)=>{const E=this.computeStackedRectParams(_,s,a,l,m,x,d,y);_._rectParams=E,st(I[L]).attr("d",this.rectParamsToPath(E,P,k,M))}),$.exit().transition().duration(t).attr("opacity",0).remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.attachHoverEffects(this.group.selectAll(".katucharts-column"),s),this.renderColumnDataLabels(s,a,l,c,m,x)}computeBarGeometry(){var y,g;const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=!!this.config.stacking,o=r?1:this.config.grouping!==!1&&this.context.totalSeriesOfType||1,s=r?0:this.config.grouping!==!1&&this.context.indexInType||0,a=this.config.groupPadding??.2,l=this.config.pointPadding??.1;let c;if(t instanceof nf)c=t.getBandwidth();else if(this.isHorizontal)c=i.height/Math.max(this.data.length,1);else if(this.config.pointRange!==void 0&&this.config.pointRange>0)c=Math.abs(t.getPixelForValue(this.config.pointRange)-t.getPixelForValue(0));else{const m=this.data;c=m.length>1?Math.abs(t.getPixelForValue(((y=m[1])==null?void 0:y.x)??1)-t.getPixelForValue(((g=m[0])==null?void 0:g.x)??0))*(1-a*2):i.width/Math.max(m.length,1)*(1-a*2)}const h=r?0:a,f=r?0:l;let u;this.config.pointWidth!==void 0?u=this.config.pointWidth:u=c*(1-h*2)/o*(1-f*2),this.config.maxPointWidth!==void 0&&(u=Math.min(u,this.config.maxPointWidth));let d;this.config.centerInCategory?d=-u/2:d=-c*(1-h*2)/2+(u+u*f*2)*s+u*f;const p=e.getPixelForValue(this.config.threshold??0);return{barWidth:u,barOffset:d,baseline:p,groupWidth:c}}getPointColor(t,e,i,r,o){if(t.color)return t.color;if(this.config.colorByPoint){const s=this.config.colors||this.context.colors;return s[e%s.length]}return r&&(t.y??0)<(o??0)?r:i}renderColumnDataLabels(t,e,i,r,o,s){const a=this.config.dataLabels;if(!(a!=null&&a.enabled))return;const{xAxis:l,yAxis:c}=this.context,h=a.inside??!1;this.renderDataLabels(t,f=>{if(this.isHorizontal){const u=c.getPixelForValue(f.y??0);return h?(u+r)/2:u-5}return l.getPixelForValue(f.x??0)+i+e/2},f=>{if(this.isHorizontal)return l.getPixelForValue(f.x??0)+i+e/2;const u=o?c.getPixelForValue(o(f)):c.getPixelForValue(f.y??0);return h?(u+r)/2:u})}attachHoverEffects(t,e){var h,f,u,d,p,y,g,m;if(this.config.enableMouseTracking===!1)return;const{xAxis:i,yAxis:r}=this.context,o=!!this.config.stacking,s=((f=(h=this.config.states)==null?void 0:h.hover)==null?void 0:f.brightness)??(o?.2:.1),a=(d=(u=this.config.states)==null?void 0:u.hover)==null?void 0:d.color,l=(y=(p=this.config.states)==null?void 0:p.hover)==null?void 0:y.borderColor,c=(m=(g=this.config.states)==null?void 0:g.hover)==null?void 0:m.borderWidth;t.style("cursor",this.config.cursor||"pointer").on("mouseover",(x,v)=>{var E,C,S,w,A,T,F;const b=x.currentTarget,k=b.getAttribute("fill")||"";b.setAttribute("data-orig-fill",k);const P=st(b).interrupt("hover").transition("hover").duration(Z).ease(j);if(a?P.style("fill",a):P.style("fill",Xf(k,s)),l&&P.style("stroke",l),c!==void 0&&P.style("stroke-width",String(c)),b.style.filter="drop-shadow(0 1px 3px rgba(0,0,0,0.2))",o){const D=this.context.allSeries;if(D)for(const R of D)R.visible&&((E=R.config)!=null&&E.stacking)&&((C=R.group)==null||C.selectAll(".katucharts-column").filter(function(){return this!==b}).interrupt("stackDim").transition("stackDim").duration(us).ease(j).attr("opacity",.3));b.setAttribute("data-orig-stroke",b.getAttribute("stroke")||""),b.setAttribute("data-orig-stroke-width",b.getAttribute("stroke-width")||""),P.style("stroke","#ffffff").style("stroke-width","2")}const $=e.indexOf(v),_=i.getPixelForValue(v.x??0),L=r.getPixelForValue(v.y??0),I=this.context.inverted;this.context.events.emit("point:mouseover",{point:v,index:$,series:this,event:x,plotX:I?L:_,plotY:I?_:L}),(w=(S=v.events)==null?void 0:S.mouseOver)==null||w.call(v,x),(F=(T=(A=this.config.point)==null?void 0:A.events)==null?void 0:T.mouseOver)==null||F.call(v,x)}).on("mouseout",(x,v)=>{var _,L,I,E,C,S,w;const b=x.currentTarget,k=b.getAttribute("data-orig-fill")||"",P=st(b).interrupt("hover").transition("hover").duration(Z).ease(j);if(P.style("fill",k),b.style.filter="",o){const A=this.context.allSeries;if(A)for(const T of A)T.visible&&((_=T.config)!=null&&_.stacking)&&((L=T.group)==null||L.selectAll(".katucharts-column").interrupt("stackDim").transition("stackDim").duration(us).ease(j).attr("opacity",1));P.style("stroke",b.getAttribute("data-orig-stroke")||"").style("stroke-width",b.getAttribute("data-orig-stroke-width")||"")}else P.style("stroke","").style("stroke-width","");P.on("end",()=>{b.matches(":hover")||(b.style.fill="")});const $=e.indexOf(v);this.context.events.emit("point:mouseout",{point:v,index:$,series:this,event:x}),(E=(I=v.events)==null?void 0:I.mouseOut)==null||E.call(v,x),(w=(S=(C=this.config.point)==null?void 0:C.events)==null?void 0:S.mouseOut)==null||w.call(v,x)}).on("click",(x,v)=>{var P,$,_,L,I,E,C;const b=e.indexOf(v);this.context.events.emit("point:click",{point:v,index:b,series:this,event:x}),($=(P=v.events)==null?void 0:P.click)==null||$.call(v,x),(I=(L=(_=this.config.point)==null?void 0:_.events)==null?void 0:L.click)==null||I.call(v,x),(C=(E=this.config.events)==null?void 0:E.click)==null||C.call(this,x);const k=x.currentTarget,M=st(k);this.handlePointSelect(M,v,b,x)})}}class j2 extends Zf{constructor(){super(...arguments),this.isHorizontal=!0}}const Kf={circle:Kn,square:kc,diamond:wc,triangle:Ac,"triangle-down":Sc,cross:vc},Jf=["circle","diamond","square","triangle","triangle-down"];class q2 extends Ut{constructor(t){t.clip=!1,super(t),this.cachedPositions=[]}resolveMarkerSymbol(){var r;if((r=this.config.marker)!=null&&r.symbol)return this.config.marker.symbol;const e=(this.context.allSeries||[]).filter(o=>o.config._internalType==="scatter");if(e.length<=1)return"circle";const i=e.indexOf(this);return Jf[i%Jf.length]}getLegendSymbolShape(){return this.resolveMarkerSymbol()}render(){var f,u,d,p;const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data.filter(y=>y.y!==null&&y.y!==void 0),s=((f=this.config.marker)==null?void 0:f.radius)??4,a=((p=(d=(u=this.config.marker)==null?void 0:u.states)==null?void 0:d.hover)==null?void 0:p.radius)??s+3,l=this.context.animate,c=this.resolveMarkerSymbol(),h=this.config.jitter;this.cachedPositions=o.map(y=>({cx:this.applyJitter(t.getPixelForValue(y.x??0),i.width,h==null?void 0:h.x),cy:this.applyJitter(e.getPixelForValue(y.y??0),i.height,h==null?void 0:h.y)})),c==="circle"?this.renderCircles(o,r,s,a,!!l):this.renderSymbols(o,r,s,a,c,!!l),this.renderDataLabels(o,(y,g)=>this.cachedPositions[g].cx,(y,g)=>this.cachedPositions[g].cy),l&&this.emitAfterAnimate(vt+o.length*Wt)}animateUpdate(t){var f;const{xAxis:e,yAxis:i,plotArea:r}=this.context,o=this.getColor(),s=this.data.filter(u=>u.y!==null&&u.y!==void 0),a=((f=this.config.marker)==null?void 0:f.radius)??4,l=this.config.jitter;this.cachedPositions=s.map(u=>({cx:this.applyJitter(e.getPixelForValue(u.x??0),r.width,l==null?void 0:l.x),cy:this.applyJitter(i.getPixelForValue(u.y??0),r.height,l==null?void 0:l.y)}));const c=this.resolveMarkerSymbol();if(c==="circle"){const u=this.group.selectAll(".katucharts-scatter-point").data(s);u.exit().transition().duration(t).attr("r",0).remove(),u.enter().append("circle").attr("class","katucharts-scatter-point").attr("r",0).attr("fill",p=>this.getPointFill(p,o)).attr("stroke",p=>{var y,g;return((y=p.marker)==null?void 0:y.lineColor)??((g=this.config.marker)==null?void 0:g.lineColor)??o}).attr("stroke-width",p=>{var y,g;return((y=p.marker)==null?void 0:y.lineWidth)??((g=this.config.marker)==null?void 0:g.lineWidth)??1}).attr("opacity",this.config.opacity??1).merge(u).attr("fill",p=>this.getPointFill(p,o)).attr("stroke",p=>{var y,g;return((y=p.marker)==null?void 0:y.lineColor)??((g=this.config.marker)==null?void 0:g.lineColor)??o}).transition().duration(t).attr("cx",(p,y)=>this.cachedPositions[y].cx).attr("cy",(p,y)=>this.cachedPositions[y].cy).attr("r",p=>{var y;return((y=p.marker)==null?void 0:y.radius)??a})}else{const u=Kf[c]||Kn,d=this.group.selectAll(".katucharts-scatter-point").data(s);d.exit().transition().duration(t).attr("opacity",0).remove(),d.enter().append("path").attr("class","katucharts-scatter-point").attr("fill",y=>this.getPointFill(y,o)).attr("stroke",y=>{var g,m;return((g=y.marker)==null?void 0:g.lineColor)??((m=this.config.marker)==null?void 0:m.lineColor)??o}).attr("stroke-width",y=>{var g,m;return((g=y.marker)==null?void 0:g.lineWidth)??((m=this.config.marker)==null?void 0:m.lineWidth)??1}).attr("opacity",this.config.opacity??1).merge(d).attr("fill",y=>this.getPointFill(y,o)).attr("stroke",y=>{var g,m;return((g=y.marker)==null?void 0:g.lineColor)??((m=this.config.marker)==null?void 0:m.lineColor)??o}).transition().duration(t).attr("transform",(y,g)=>`translate(${this.cachedPositions[g].cx},${this.cachedPositions[g].cy})`).attr("d",y=>{var m;const g=((m=y.marker)==null?void 0:m.radius)??a;return rn().type(u).size(Math.PI*g*g)()})}this.group.selectAll(".katucharts-data-labels").remove(),this.renderDataLabels(s,(u,d)=>this.cachedPositions[d].cx,(u,d)=>this.cachedPositions[d].cy)}getPointFill(t,e){var i,r;return t.color?t.color:(i=t.marker)!=null&&i.fillColor?t.marker.fillColor:(r=this.config.marker)!=null&&r.fillColor?this.config.marker.fillColor:this.config.negativeColor&&(t.y??0)<(this.config.threshold??0)?this.config.negativeColor:e}getEntryDuration(){return(typeof this.config.animation=="object"?this.config.animation:{}).duration??vt}renderCircles(t,e,i,r,o){const s=this.group.selectAll(".katucharts-scatter-point").data(t).join("circle").attr("class","katucharts-scatter-point").attr("cx",(a,l)=>this.cachedPositions[l].cx).attr("cy",(a,l)=>this.cachedPositions[l].cy).attr("fill",a=>this.getPointFill(a,e)).attr("stroke",a=>{var l,c;return((l=a.marker)==null?void 0:l.lineColor)??((c=this.config.marker)==null?void 0:c.lineColor)??e}).attr("stroke-width",a=>{var l,c;return((l=a.marker)==null?void 0:l.lineWidth)??((c=this.config.marker)==null?void 0:c.lineWidth)??1}).attr("opacity",this.config.opacity??1).style("cursor",this.config.cursor||"pointer");o?s.attr("r",0).transition().duration(this.getEntryDuration()).ease(pt).delay((a,l)=>Pe(l,0,Wt,t.length)).attr("r",a=>{var l;return((l=a.marker)==null?void 0:l.radius)??i}):s.attr("r",a=>{var l;return((l=a.marker)==null?void 0:l.radius)??i}),this.attachScatterEvents(s,t,i,r,e,"circle")}renderSymbols(t,e,i,r,o,s){const a=Kf[o]||Kn,l=this.group.selectAll(".katucharts-scatter-point").data(t).join("path").attr("class","katucharts-scatter-point").attr("transform",(h,f)=>`translate(${this.cachedPositions[f].cx},${this.cachedPositions[f].cy})`).attr("fill",h=>this.getPointFill(h,e)).attr("stroke",h=>{var f,u;return((f=h.marker)==null?void 0:f.lineColor)??((u=this.config.marker)==null?void 0:u.lineColor)??e}).attr("stroke-width",h=>{var f,u;return((f=h.marker)==null?void 0:f.lineWidth)??((u=this.config.marker)==null?void 0:u.lineWidth)??1}).attr("opacity",this.config.opacity??1).style("cursor",this.config.cursor||"pointer"),c=h=>{var u;const f=((u=h.marker)==null?void 0:u.radius)??i;return rn().type(a).size(Math.PI*f*f)()};if(s){const h=rn().type(a).size(0);l.attr("d",h).transition().duration(this.getEntryDuration()).ease(pt).delay((f,u)=>Pe(u,0,Wt,t.length)).attr("d",c)}else l.attr("d",c);this.attachScatterEvents(l,t,i,r,e,"symbol",a)}attachScatterEvents(t,e,i,r,o,s,a){var y,g,m,x,v;if(this.config.enableMouseTracking===!1)return;const l=(y=this.config.states)==null?void 0:y.hover,c=(g=l==null?void 0:l.marker)==null?void 0:g.fillColor,h=(v=(x=(m=this.config.marker)==null?void 0:m.states)==null?void 0:x.hover)==null?void 0:v.lineWidth,f=l==null?void 0:l.halo,u=(f==null?void 0:f.size)??10,d=(f==null?void 0:f.opacity)??.25,p=e.map((b,k)=>{var M;return this.group.insert("circle",".katucharts-scatter-point").attr("cx",this.cachedPositions[k].cx).attr("cy",this.cachedPositions[k].cy).attr("r",0).attr("fill",b.color||((M=this.config.marker)==null?void 0:M.fillColor)||o).attr("opacity",0).attr("class","katucharts-halo")});t.on("mouseover",(b,k)=>{var E,C,S,w,A,T,F,D,R,z,B,W,K,X;const M=b.currentTarget,P=e.indexOf(k);P>=0&&p[P]&&p[P].transition("halo").duration(Z).ease(j).attr("r",u).attr("opacity",d);const $=((E=k.marker)==null?void 0:E.radius)??i,_=((w=(S=(C=k.marker)==null?void 0:C.states)==null?void 0:S.hover)==null?void 0:w.radius)??((F=(T=(A=this.config.marker)==null?void 0:A.states)==null?void 0:T.hover)==null?void 0:F.radius)??$+3,I=st(M).interrupt("hover").transition("hover").duration(Z).ease(j);if(s==="circle")I.attr("r",_);else if(a){const q=Math.PI*_*_;I.attr("d",rn().type(a).size(q)())}M.style.filter="drop-shadow(0 1px 4px rgba(0,0,0,0.3))",c&&I.style("fill",c),h!==void 0&&I.style("stroke-width",String(h)),this.context.events.emit("point:mouseover",{point:k,index:P,series:this,event:b,plotX:((D=this.cachedPositions[P])==null?void 0:D.cx)??0,plotY:((R=this.cachedPositions[P])==null?void 0:R.cy)??0}),(B=(z=k.events)==null?void 0:z.mouseOver)==null||B.call(k,b),(X=(K=(W=this.config.point)==null?void 0:W.events)==null?void 0:K.mouseOver)==null||X.call(k,b)}).on("mouseout",(b,k)=>{var I,E,C,S,w,A;const M=b.currentTarget,P=e.indexOf(k);P>=0&&p[P]&&p[P].transition("halo").duration(Z).ease(j).attr("r",0).attr("opacity",0);const $=((I=k.marker)==null?void 0:I.radius)??i,L=st(M).interrupt("hover").transition("hover").duration(Z).ease(j);if(s==="circle")L.attr("r",$);else if(a){const T=Math.PI*$*$;L.attr("d",rn().type(a).size(T)())}M.style.filter="",L.style("fill",null).style("stroke-width",null),this.context.events.emit("point:mouseout",{point:k,index:P,series:this,event:b}),(C=(E=k.events)==null?void 0:E.mouseOut)==null||C.call(k,b),(A=(w=(S=this.config.point)==null?void 0:S.events)==null?void 0:w.mouseOut)==null||A.call(k,b)}).on("click",(b,k)=>{var P,$,_,L,I,E,C;const M=e.indexOf(k);this.context.events.emit("point:click",{point:k,index:M,series:this,event:b}),($=(P=k.events)==null?void 0:P.click)==null||$.call(k,b),(I=(L=(_=this.config.point)==null?void 0:_.events)==null?void 0:L.click)==null||I.call(k,b),(C=(E=this.config.events)==null?void 0:E.click)==null||C.call(this,b),this.handlePointSelect(st(b.currentTarget),k,M,b)})}}class Z2 extends Ut{constructor(t){t.clip=!1,super(t)}render(){const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data.filter(f=>f.y!==null&&f.y!==void 0),s=this.context.animate,a=this.config.jitter,l=this.filterByZThreshold(o);this.buildSizeScale(l);const c=l.map(f=>({cx:this.applyJitter(t.getPixelForValue(f.x??0),i.width,a==null?void 0:a.x),cy:this.applyJitter(e.getPixelForValue(f.y??0),i.height,a==null?void 0:a.y)})),h=this.group.selectAll(".katucharts-bubble").data(l).join("circle").attr("class","katucharts-bubble").attr("cx",(f,u)=>c[u].cx).attr("cy",(f,u)=>c[u].cy).attr("fill",(f,u)=>this.getBubbleFill(f,u,r)).attr("fill-opacity",this.config.fillOpacity??.5).attr("stroke",(f,u)=>this.config.lineColor||this.getBubbleFill(f,u,r)).attr("stroke-width",this.config.lineWidth??1).style("cursor",this.config.cursor||"pointer");if(s){const u=(typeof this.config.animation=="object"?this.config.animation:{}).duration??vt;h.attr("r",0).transition().duration(u).ease(pt).delay((d,p)=>Pe(p,0,Wt,l.length)).attr("r",d=>this.sizeScale(this.getZValue(d)))}else h.attr("r",f=>this.sizeScale(this.getZValue(f)));this.attachBubbleEvents(h,l,c,r),this.renderDataLabels(l,(f,u)=>c[u].cx,(f,u)=>c[u].cy),s&&this.emitAfterAnimate(vt+l.length*Wt)}animateUpdate(t){const{xAxis:e,yAxis:i,plotArea:r}=this.context,o=this.getColor(),s=this.data.filter(u=>u.y!==null&&u.y!==void 0),a=this.filterByZThreshold(s),l=this.config.jitter;this.buildSizeScale(a);const c=a.map(u=>({cx:this.applyJitter(e.getPixelForValue(u.x??0),r.width,l==null?void 0:l.x),cy:this.applyJitter(i.getPixelForValue(u.y??0),r.height,l==null?void 0:l.y)})),h=this.group.selectAll(".katucharts-bubble").data(a);h.exit().transition().duration(t).attr("r",0).remove(),h.enter().append("circle").attr("class","katucharts-bubble").attr("r",0).attr("fill",(u,d)=>this.getBubbleFill(u,d,o)).attr("fill-opacity",this.config.fillOpacity??.5).attr("stroke",(u,d)=>this.config.lineColor||this.getBubbleFill(u,d,o)).attr("stroke-width",this.config.lineWidth??1).merge(h).transition().duration(t).attr("cx",(u,d)=>{var p;return((p=c[d])==null?void 0:p.cx)??0}).attr("cy",(u,d)=>{var p;return((p=c[d])==null?void 0:p.cy)??0}).attr("r",u=>this.sizeScale(this.getZValue(u))).attr("fill",(u,d)=>this.getBubbleFill(u,d,o)),this.group.selectAll(".katucharts-data-labels").remove(),this.renderDataLabels(a,(u,d)=>{var p;return((p=c[d])==null?void 0:p.cx)??0},(u,d)=>{var p;return((p=c[d])==null?void 0:p.cy)??0})}filterByZThreshold(t){const e=this.config.displayNegative!==!1,i=this.config.zThreshold??0;return e?t:t.filter(r=>(r.z??0)>=i)}getZValue(t){const e=t.z??1;return this.config.sizeByAbsoluteValue?Math.abs(e):e}buildSizeScale(t){const e=t.map(l=>this.getZValue(l)),i=this.config.zMin??Math.min(...e,0),r=this.config.zMax??Math.max(...e,1),o=this.parseSize(this.config.minSize,8),s=this.parseSize(this.config.maxSize,30);(this.config.sizeBy||"area")==="width"?this.sizeScale=ke().domain([i,r]).range([o,s]).clamp(!0):this.sizeScale=_x().domain([i,r]).range([o,s]).clamp(!0)}parseSize(t,e){if(t===void 0)return e;if(typeof t=="number")return t;if(typeof t=="string"&&t.endsWith("%")){const i=parseFloat(t)/100;return Math.min(this.context.plotArea.width,this.context.plotArea.height)*i/2}return parseFloat(t)||e}getBubbleFill(t,e,i){if(t.color)return t.color;if(this.config.negativeColor&&(t.z??0)<(this.config.zThreshold??0))return this.config.negativeColor;if(this.config.colorByPoint){const r=this.config.colors||this.context.colors;return r[e%r.length]}return i}attachBubbleEvents(t,e,i,r){var s,a;if(this.config.enableMouseTracking===!1)return;(a=(s=this.config.states)==null?void 0:s.hover)==null||a.brightness;const o=this.config.fillOpacity??.5;t.on("mouseover",(l,c)=>{var d,p,y,g,m,x,v;const h=l.currentTarget,f=this.sizeScale(this.getZValue(c));st(h).interrupt("hover").transition("hover").duration(Z).ease(j).attr("r",f+4).attr("fill-opacity",Math.min(o+.3,1)),h.style.filter="drop-shadow(0 2px 6px rgba(0,0,0,0.3))";const u=e.indexOf(c);this.context.events.emit("point:mouseover",{point:c,index:u,series:this,event:l,plotX:((d=i[u])==null?void 0:d.cx)??0,plotY:((p=i[u])==null?void 0:p.cy)??0}),(g=(y=c.events)==null?void 0:y.mouseOver)==null||g.call(c,l),(v=(x=(m=this.config.point)==null?void 0:m.events)==null?void 0:x.mouseOver)==null||v.call(c,l)}).on("mouseout",(l,c)=>{var u,d,p,y,g;const h=l.currentTarget;st(h).interrupt("hover").transition("hover").duration(Z).ease(j).attr("r",this.sizeScale(this.getZValue(c))).attr("fill-opacity",o),h.style.filter="";const f=e.indexOf(c);this.context.events.emit("point:mouseout",{point:c,index:f,series:this,event:l}),(d=(u=c.events)==null?void 0:u.mouseOut)==null||d.call(c,l),(g=(y=(p=this.config.point)==null?void 0:p.events)==null?void 0:y.mouseOut)==null||g.call(c,l)}).on("click",(l,c)=>{var f,u,d,p,y,g,m;const h=e.indexOf(c);this.context.events.emit("point:click",{point:c,index:h,series:this,event:l}),(u=(f=c.events)==null?void 0:f.click)==null||u.call(c,l),(y=(p=(d=this.config.point)==null?void 0:d.events)==null?void 0:p.click)==null||y.call(c,l),(m=(g=this.config.events)==null?void 0:g.click)==null||m.call(this,l),this.handlePointSelect(st(l.currentTarget),c,h,l)})}getBubbleLegendInfo(){const t=this.filterByZThreshold(this.data.filter(l=>l.y!==null&&l.y!==void 0));if(t.length===0)return null;this.buildSizeScale(t);const e=t.map(l=>this.getZValue(l)),i=this.config.zMin??Math.min(...e),r=this.config.zMax??Math.max(...e);if(!isFinite(i)||!isFinite(r)||r<=0)return null;const o=[r,(i+r)/2,i],s=new Set,a=o.map(l=>Math.round(l)).filter(l=>l>0&&!s.has(l)&&(s.add(l),!0)).map(l=>({value:l,radius:this.sizeScale(l)}));return a.length===0?null:{sizeBy:this.config.sizeBy||"area",color:this.getColor(),ranges:a}}getDataExtents(){let t=1/0,e=-1/0,i=1/0,r=-1/0;for(const l of this.data)l.x!==void 0&&l.x!==null&&(t=Math.min(t,l.x),e=Math.max(e,l.x)),l.y!==void 0&&l.y!==null&&(i=Math.min(i,l.y),r=Math.max(r,l.y));const o=e-t||1,s=r-i||1,a=.08;return t-=o*a,e+=o*a,i-=s*a,r+=s*a,{xMin:t,xMax:e,yMin:i,yMax:r}}}class Qf extends Ut{constructor(t){super(t),this.selectedIndices=new Set,t.showInLegend=!1}dataLabelConfigs(){const t=this.config.dataLabels;return t?(Array.isArray(t)?t:[t]).filter(i=>i&&i.enabled!==!1):[]}init(t){const e=this.dataLabelConfigs().length>0;if(e&&(this.config.clip=!1),super.init(t),e){const i=this.group.select(function(){return this.ownerSVGElement});i.empty()||i.style("overflow","visible")}}render(){var Y,G,Q,O,nt,et,ht,ft,ct,it;const{plotArea:t,colors:e}=this.context,i=this.config.ignoreHiddenPoint!==!1,r=this.data.filter(U=>U.y!==null&&U.y!==void 0&&(U.y??0)>0),o=i?r.filter(U=>U.visible!==!1):r,s=this.context.animate,a=this.dataLabelConfigs().filter(U=>(U.distance??30)>=0),l=a.length>0,c=l?Math.max(...a.map(U=>(U.distance??30)+10)):0,h=this.config.center||["50%","50%"],f=this.resolvePercent(h[0],t.width),u=this.resolvePercent(h[1],t.height),d=t.width-c*2,p=t.height-c,y=Math.min(d,p),g=Math.min(t.width,t.height),m=this.config.size!==void 0&&this.config.size!==null,x=m?this.resolvePercent(this.config.size,g):y,v=this.config.minSize?this.resolvePercent(this.config.minSize,g):0,k=Math.max(l?Math.min(x,y):m?x:g,v)/2,M=this.resolvePercent(this.config.innerSize||0,k*2)/2,P=this.config.depth??0,$=(this.config.startAngle??0)*Math.PI/180,_=this.config.endAngle!==void 0?this.config.endAngle*Math.PI/180:$+2*Math.PI,L=o.reduce((U,at)=>U+(at.y??0),0),I=this.config.fillColor;if(L===0&&I){const U=this.group.append("g").attr("transform",`translate(${f},${u})`),at=Ce().innerRadius(M).outerRadius(k).startAngle($).endAngle(_);U.append("path").attr("d",at({})).attr("fill",I);return}const E=w2().value(U=>U.y??0).sort(null).startAngle($).endAngle(_),C=this.resolveBorderRadius(this.config.borderRadius),S=Ce().innerRadius(M).outerRadius(k).cornerRadius(C),w=this.config.slicedOffset??10,A=Ce().innerRadius(M).outerRadius(k+w*.4).cornerRadius(C),T=E(o),F=_-$;for(const U of T)U.data.percentage=(U.endAngle-U.startAngle)/F*100,U.data.total=L;const D=this.group.append("g").attr("transform",`translate(${f},${u})`);P>0&&this.render3DEffect(D,T,M,k,P);const R=this.config.allowPointSelect===!0;(G=(Y=this.config.states)==null?void 0:Y.hover)==null||G.brightness;const z=(O=(Q=this.config.states)==null?void 0:Q.select)==null?void 0:O.color,B=(et=(nt=this.config.states)==null?void 0:nt.select)==null?void 0:et.borderColor,W=(ft=(ht=this.config.states)==null?void 0:ht.select)==null?void 0:ft.borderWidth,K=((it=(ct=this.config.states)==null?void 0:ct.inactive)==null?void 0:it.opacity)??.4,X=(U,at)=>U.data.color?U.data.color:this.config.colors?this.config.colors[at%this.config.colors.length]:e[at%e.length],q=U=>{const at=(U.startAngle+U.endAngle)/2,xt=w*Math.sin(at),_t=-w*Math.cos(at);return`translate(${xt},${_t})`},N=this,H=D.selectAll(".katucharts-pie-slice").data(T).join("path").attr("class","katucharts-pie-slice").attr("fill",(U,at)=>X(U,at)).attr("stroke",this.config.borderColor||this.autoBorderColor()).attr("stroke-width",this.config.borderWidth??1).attr("opacity",this.config.opacity??1).style("cursor",this.config.cursor||"pointer");H.each(function(U,at){const xt=st(this);(U.data.sliced||N.selectedIndices.has(at))&&xt.attr("transform",q(U))}),s?H.each(function(U,at){const xt=st(this),_t={startAngle:U.startAngle,endAngle:U.startAngle},Mt=ce(_t,U);xt.transition().duration(vt).ease(pt).delay(Yf+at*Wt).attrTween("d",()=>Pt=>S(Mt(Pt)))}):H.attr("d",S),this.config.enableMouseTracking!==!1&&H.on("mouseover",function(U,at){var Gt,Ht,Nt,Jt,re;const xt=st(this),_t=T.indexOf(at);N.selectedIndices.has(_t)||xt.transition("arc").duration(Z).ease(j).attr("d",A(at)),xt.style("filter","drop-shadow(0 2px 6px rgba(0,0,0,0.25))"),H.interrupt("highlight"),H.attr("opacity",N.config.opacity??1),H.filter(Lt=>Lt!==at).transition("highlight").duration(Z).ease(j).attr("opacity",K);const Pt=S.centroid(at);N.context.events.emit("point:mouseover",{point:at.data,index:_t,series:N,event:U,plotX:f+Pt[0],plotY:u+Pt[1]}),(Ht=(Gt=at.data.events)==null?void 0:Gt.mouseOver)==null||Ht.call(at.data,U),(re=(Jt=(Nt=N.config.point)==null?void 0:Nt.events)==null?void 0:Jt.mouseOver)==null||re.call(at.data,U)}).on("mouseout",function(U,at){var Pt,Gt,Ht,Nt,Jt;const xt=st(this),_t=T.indexOf(at);N.selectedIndices.has(_t)||xt.transition("arc").duration(Z).ease(j).attr("d",S(at)),xt.style("filter",""),H.interrupt("highlight"),H.transition("highlight").duration(Z).ease(j).attr("opacity",N.config.opacity??1),N.context.events.emit("point:mouseout",{point:at.data,index:_t,series:N,event:U}),(Gt=(Pt=at.data.events)==null?void 0:Pt.mouseOut)==null||Gt.call(at.data,U),(Jt=(Nt=(Ht=N.config.point)==null?void 0:Ht.events)==null?void 0:Nt.mouseOut)==null||Jt.call(at.data,U)}).on("click",function(U,at){var _t,Mt,Pt,Gt,Ht,Nt,Jt,re,Lt,Qt,pe,Ze,ge,Sn;const xt=T.indexOf(at);R&&(N.selectedIndices.has(xt)?(N.selectedIndices.delete(xt),st(this).transition("slice").duration(Z).ease(j).attr("transform",""),(Mt=(_t=at.data.events)==null?void 0:_t.unselect)==null||Mt.call(at.data,U),(Ht=(Gt=(Pt=N.config.point)==null?void 0:Pt.events)==null?void 0:Gt.unselect)==null||Ht.call(at.data,U)):(N.selectedIndices.add(xt),st(this).transition("slice").duration(Z).ease(j).attr("transform",q(at)),(Jt=(Nt=at.data.events)==null?void 0:Nt.select)==null||Jt.call(at.data,U),(Qt=(Lt=(re=N.config.point)==null?void 0:re.events)==null?void 0:Lt.select)==null||Qt.call(at.data,U)),(z||B||W!==void 0)&&H.each(function(Ge,ze){const hn=st(this);N.selectedIndices.has(ze)?(z&&hn.attr("fill",z),B&&hn.attr("stroke",B),W!==void 0&&hn.attr("stroke-width",W)):(hn.attr("fill",X(Ge,ze)),hn.attr("stroke",N.config.borderColor||N.autoBorderColor()),hn.attr("stroke-width",N.config.borderWidth??1))})),N.context.events.emit("point:click",{point:at.data,index:xt,series:N,event:U}),(Ze=(pe=at.data.events)==null?void 0:pe.click)==null||Ze.call(at.data,U),(Sn=(ge=N.config.events)==null?void 0:ge.click)==null||Sn.call(N,U)});for(const U of this.dataLabelConfigs())this.renderPieLabels(D,T,S,k,_-$,U,f);s&&this.emitAfterAnimate(vt+T.length*Wt)}renderPieLabels(t,e,i,r,o,s,a){var _,L;if(!s||s.enabled===!1)return;const l=this.context.plotArea.width,c=this.context.plotArea.height,h=l/2,f=c/2,u=s.distance??30,d=s.connectorWidth??1,p=s.connectorColor||"#999",y=s.connectorPadding??5;s.softConnector;const g=((_=s.style)==null?void 0:_.fontSize)||kt,m=s.color||((L=s.style)==null?void 0:L.color)||xe,x=s.alignTo,v=u<0,b=be(g),k=b*1.4,M=[],{colors:P}=this.context;if(e.forEach((I,E)=>{const C=I.data.percentage,S=i.centroid(I),w=(I.startAngle+I.endAngle)/2,A=I.data.color||(this.config.colors?this.config.colors[E%this.config.colors.length]:P[E%P.length]),T=r+u;let F=T*Math.sin(w),D=-T*Math.cos(w);(x==="plotEdges"||x==="connectors")&&(F=w<Math.PI?h-5:-(h-5));let R,z;const B={...I.data,color:A};s.formatter?R=s.formatter.call({point:B,series:{name:this.config.name},x:I.data.x,y:I.data.y,percentage:C}):s.format?R=Kt(s.format,{point:B,series:{name:this.config.name}}):R=I.data.name||String(I.data.y);const W=/(?:^|[\s;"'])color\s*:\s*([^;"'>]+)/i.exec(R);W&&(z=ef(W[1],A)),R=de(R),M.push({lx:F,ly:D,text:R,midAngle:w,centroid:S,percentage:C,data:I.data,visible:!0,color:A,inlineColor:z})}),!v&&!s.allowOverlap){const I=M.filter(S=>S.midAngle<Math.PI),E=M.filter(S=>S.midAngle>=Math.PI);this.distribute(I,k,f,h,g),this.distribute(E,k,f,h,g);const C=r+u;for(const S of M){if(!S.visible)continue;const w=Math.max(-C,Math.min(C,S.ly)),A=Math.sqrt(Math.max(0,C*C-w*w)),T=S.midAngle<Math.PI;S.lx=T?Math.max(A,r*.3):-Math.max(A,r*.3);const F=a+S.lx,D=(S.lx>=0?l-F:F)-6;if(D>b&&We(S.text,b)>D){let R=S.text;for(;R.length>1&&We(R+"…",b)>D;)R=R.slice(0,-1);S.text=R.trimEnd()+"…"}}}else if(v&&!s.allowOverlap){const I=[],E=M.filter(C=>C.visible).sort((C,S)=>S.percentage-C.percentage);for(const C of E){const S=We(C.text,b),w=b*1.1,A=C.centroid[0],T=C.centroid[1],F={l:A-S/2,r:A+S/2,t:T-w/2,b:T+w/2};if(I.some(R=>F.l<R.r&&F.r>R.l&&F.t<R.b&&F.b>R.t)){C.visible=!1;continue}I.push(F)}}const $=t.append("g").attr("class","katucharts-pie-labels");M.forEach(I=>{if(!I.visible)return;const{lx:E,ly:C,text:S,midAngle:w,centroid:A,color:T,inlineColor:F}=I,D=w<Math.PI,R=T||p;if(d>0&&u>=0){const W=r+y,K=W*Math.sin(w),X=-W*Math.cos(w),q=s.connectorShape||"fixedOffset";if(q==="straight")$.append("line").attr("class","katucharts-pie-connector").attr("x1",A[0]).attr("y1",A[1]).attr("x2",E).attr("y2",C).attr("stroke",R).attr("stroke-width",d);else if(q==="crookedLine"){const N=s.crookDistance??"70%",H=typeof N=="string"?parseFloat(N)/100:N/u,Y=r+u*H,G=Y*Math.sin(w),Q=-Y*Math.cos(w);$.append("path").attr("class","katucharts-pie-connector").attr("d",`M${A[0]},${A[1]}L${G},${Q}L${E},${C}`).attr("fill","none").attr("stroke",R).attr("stroke-width",d)}else if(typeof q=="function"){const N=q({connectorPosition:{from:A,to:[E,C]},labelDistance:u,labelPosition:[E,C]});$.append("path").attr("class","katucharts-pie-connector").attr("d",N).attr("fill","none").attr("stroke",R).attr("stroke-width",d)}else{const N=r+u*.5,H=N*Math.sin(w),Y=-N*Math.cos(w);$.append("path").attr("class","katucharts-pie-connector").attr("d",`M${K},${X}L${H},${Y}L${E},${C}`).attr("fill","none").attr("stroke",R).attr("stroke-width",d)}}const z=$.append("text").attr("x",(v?A[0]:E)+(s.x??0)).attr("y",(v?A[1]:C)+(s.y??0)).attr("text-anchor",v?"middle":D?"start":"end").attr("dominant-baseline","middle").attr("font-size",g).attr("fill",F||m).style("pointer-events","none").text(S),B=s.style||{};B.fontWeight&&z.attr("font-weight",B.fontWeight),B.fontFamily&&z.attr("font-family",B.fontFamily),B.textOutline&&z.style("text-shadow",B.textOutline)})}distribute(t,e,i,r,o){const s=t.filter(u=>u.visible);if(s.length<=1)return;const a=-(i-5),c=i-5-a,h=s.map(u=>({target:u.ly-a,size:e,rank:u.percentage,pos:0,removed:!1,label:u})),f=e*3;this.distributeBoxes(h,c,f);for(const u of h)u.removed?u.label.visible=!1:u.label.ly=a+u.pos+e/2}distributeBoxes(t,e,i){const r=t.filter(s=>!s.removed);if(r.length===0)return;let o=r.reduce((s,a)=>s+a.size,0);if(o>e){const s=[...r].sort((l,c)=>l.rank-c.rank);let a=0;for(;o>e&&a<s.length;)s[a].removed=!0,o-=s[a].size,a++}for(let s=0;s<=t.length;s++){const a=r.filter(c=>!c.removed);if(a.length<=1)break;a.sort((c,h)=>c.target-h.target);for(let c=0;c<a.length;c++)if(a[c].pos=a[c].target,c>0){const h=a[c-1].pos+a[c-1].size;a[c].pos<h&&(a[c].pos=h)}for(let c=a.length-1;c>=0;c--){const h=c===a.length-1?e-a[c].size:a[c+1].pos-a[c].size;a[c].pos>h&&(a[c].pos=Math.max(0,h))}for(let c=0;c<5;c++)for(let h=0;h<a.length;h++){const f=a[h].pos+(a[h].target-a[h].pos)*.3,u=h>0?a[h-1].pos+a[h-1].size:0,d=h<a.length-1?a[h+1].pos-a[h].size:e-a[h].size;a[h].pos=Math.max(u,Math.min(d,f))}let l=null;for(const c of a)Math.abs(c.pos-c.target)<=i||(!l||c.rank<l.rank)&&(l=c);if(!l)break;l.removed=!0}}render3DEffect(t,e,i,r,o){const{colors:s}=this.context,a=t.insert("g",":first-child").attr("class","katucharts-pie-3d");for(const l of e){const c=e.indexOf(l),h=l.data.color||(this.config.colors?this.config.colors[c%this.config.colors.length]:s[c%s.length]),f=l.startAngle-Math.PI/2,u=l.endAngle-Math.PI/2;if(f>0&&u>0||f<0&&u<0&&f<-Math.PI&&u<-Math.PI)continue;const d=Ce().innerRadius(i).outerRadius(r).startAngle(l.startAngle).endAngle(l.endAngle);a.append("path").attr("d",d({})).attr("fill",h).attr("opacity",.7).attr("transform",`translate(0,${o})`)}}resolvePercent(t,e){return typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:parseFloat(t)||0}resolveBorderRadius(t){return t===void 0?3:typeof t=="number"?t:t.radius??3}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class td extends Ut{constructor(t){super(t)}render(){var p,y;const{plotArea:t,colors:e}=this.context,i=this.data.filter(g=>g.y!==null&&g.y!==void 0),r=this.context.animate,o=t.height*.8,s=o/i.length,a=Math.max(...i.map(g=>g.y??0),1),l=t.width/2,c=t.width*.7,h=c*.15,f=(t.height-o)/2,u=((y=(p=this.config.states)==null?void 0:p.inactive)==null?void 0:y.opacity)??.4,d=[];i.forEach((g,m)=>{var L,I,E;const x=(g.y??0)/a,v=m<i.length-1?(i[m+1].y??0)/a:x*.5,b=h+(c-h)*x,k=h+(c-h)*v,M=f+m*s,P=[`M ${l-b/2} ${M}`,`L ${l+b/2} ${M}`,`L ${l+k/2} ${M+s}`,`L ${l-k/2} ${M+s}`,"Z"].join(" "),$=g.color||e[m%e.length],_=this.group.append("path").attr("d",P).attr("stroke",this.config.borderColor||this.autoBorderColor()).attr("stroke-width",this.config.borderWidth??1).attr("class","katucharts-funnel-segment").style("cursor",this.config.cursor||"pointer");if(d.push(_),r?_.attr("fill",$).attr("opacity",0).transition().duration(vt).ease(pt).delay(Pe(m,0,Wt,i.length)).attr("opacity",1):_.attr("fill",$),(L=this.config.dataLabels)!=null&&L.enabled){const C=this.config.dataLabels,S=((I=C.style)==null?void 0:I.fontSize)||kt,w=C.color||((E=C.style)==null?void 0:E.color)||xe;let A;C.formatter?A=C.formatter.call({point:g,series:{name:this.config.name},x:g.x,y:g.y}):C.format?A=de(Kt(C.format,{point:g,series:{name:this.config.name}})):A=g.name||String(g.y),this.group.append("text").attr("class","katucharts-funnel-label").attr("x",l+(C.x??0)).attr("y",M+s/2+(C.y??0)).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("font-size",S).attr("fill",w).style("pointer-events","none").text(A)}this.config.enableMouseTracking!==!1&&_.on("mouseover",C=>{var S,w;_.transition("move").duration(Z).ease(j).attr("transform","translate(0, -3)").style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.2))"),d.forEach(A=>A.interrupt("highlight")),d.forEach(A=>A.attr("opacity",1)),d.forEach((A,T)=>{T!==m&&A.transition("highlight").duration(Z).ease(j).attr("opacity",u)}),this.context.events.emit("point:mouseover",{point:g,index:m,series:this,event:C,plotX:l,plotY:M+s/2}),(w=(S=g.events)==null?void 0:S.mouseOver)==null||w.call(g,C)}).on("mouseout",C=>{var S,w;_.transition("move").duration(Z).ease(j).attr("transform","").style("filter",""),d.forEach(A=>A.interrupt("highlight")),d.forEach(A=>A.transition("highlight").duration(Z).ease(j).attr("opacity",1)),this.context.events.emit("point:mouseout",{point:g,index:m,series:this,event:C}),(w=(S=g.events)==null?void 0:S.mouseOut)==null||w.call(g,C)}).on("click",C=>{var S,w,A,T;this.context.events.emit("point:click",{point:g,index:m,series:this,event:C}),(w=(S=g.events)==null?void 0:S.click)==null||w.call(g,C),(T=(A=this.config.events)==null?void 0:A.click)==null||T.call(this,C)})})}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class K2 extends td{constructor(t){super(t),this.data=[...t._processedData||[]].reverse()}}function je(n){for(var t=n.length/6|0,e=new Array(t),i=0;i<t;)e[i]="#"+n.slice(i*6,++i*6);return e}const Nn=n=>By(n[n.length-1]);var J2=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(je);const Q2=Nn(J2);var tw=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(je);const ew=Nn(tw);var nw=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(je);const ed=Nn(nw);var iw=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(je);const nd=Nn(iw);var rw=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(je);const ow=Nn(rw);var sw=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(je);const aw=Nn(sw);var cw=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(je);const lw=Nn(cw);var hw=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(je);const uw=Nn(hw);var fw=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(je);const dw=Nn(fw);function fs(n){var t=n.length;return function(e){return n[Math.max(0,Math.min(t-1,Math.floor(e*t)))]}}const pw=fs(je("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));fs(je("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf"));var gw=fs(je("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),mw=fs(je("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function yw(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}class xw extends Ut{constructor(t){super(t),t.showInLegend=!1}render(){var S,w;const{plotArea:t}=this.context,e=this.context.animate,i=this.data,r=this.config.colorAxis||{},o=i.map(A=>A.value??A.z??A.y??0).filter(A=>A!=null),s=r.min??(o.length>0?Math.min(...o):0),a=r.max??(o.length>0?Math.max(...o):1),l=this.config.nullColor??"#e4e4e4",c=((w=(S=this.config.states)==null?void 0:S.inactive)==null?void 0:w.opacity)??.4,h=this.buildColorScale(r,s,a),f=this.config.interpolation===!0,u=this.config.colsize??1,d=this.config.rowsize??1,p=this.config.pointPadding??0,y=this.getUniqueValues("x"),g=this.getUniqueValues("yCategory"),m=y.length>0&&g.length>0,x=m?t.width/y.length:t.width/Math.max(1,Math.ceil((Math.max(...i.map(A=>A.x??0))+u)/u)),v=m?t.height/g.length:t.height/Math.max(1,Math.ceil((Math.max(...i.map(A=>A.y??0))+d)/d)),b=A=>{if(A.color)return A.color;const T=A.value??A.z??A.y;return T==null?l:h(T)},k=A=>m?(typeof A.x=="number"?A.x:0)*x:(A.x??0)/u*x,M=A=>m?(typeof A.yCategory=="number"?A.yCategory:typeof A.y=="number"?A.y:0)*v:(A.y??0)/d*v,P=p*x,$=p*v,_=x*u-(this.config.borderWidth??1),L=v*d-(this.config.borderWidth??1),I=Math.max(1,(m?x-1:_)-P*2),E=Math.max(1,(m?v-1:L)-$*2);if(f){this.renderInterpolated(i,t,h,l,k,M,x,v,b),this.renderHeatmapLabels(i,k,M,x,v,b),this.renderColorAxis(h,s,a);return}const C=this.group.selectAll(".katucharts-heatmap-cell").data(i).join("rect").attr("class","katucharts-heatmap-cell").attr("x",A=>k(A)+P).attr("y",A=>M(A)+$).attr("width",I).attr("height",E).attr("stroke",this.config.borderColor||this.autoBorderColor()).attr("stroke-width",this.config.borderWidth??1).attr("rx",yw(this.config.borderRadius)).style("cursor",this.config.cursor||"pointer");e?C.attr("fill","#fff").transition().duration(600).delay((A,T)=>T*8).attr("fill",A=>b(A)):C.attr("fill",A=>b(A)),this.config.enableMouseTracking!==!1&&C.on("mouseover",(A,T)=>{var W,K,X,q;const F=st(A.currentTarget),D=b(T),R=((K=(W=se(D))==null?void 0:W.brighter(.4))==null?void 0:K.toString())||D;F.interrupt("hover").transition("hover").duration(Z).ease(j).attr("fill",R).attr("stroke","#333").attr("stroke-width",2),F.style("filter","drop-shadow(0 1px 3px rgba(0,0,0,0.3))"),C.interrupt("highlight"),C.attr("opacity",1),C.filter(N=>N!==T).transition("highlight").duration(Z).ease(j).attr("opacity",c);const z=i.indexOf(T),B=T.value??T.z??T.y;this.context.events.emit("point:mouseover",{point:{...T,value:B},index:z,series:this,event:A,plotX:k(T)+x/2,plotY:M(T)+v/2}),(q=(X=T.events)==null?void 0:X.mouseOver)==null||q.call(T,A)}).on("mouseout",(A,T)=>{var R,z;const F=st(A.currentTarget);F.interrupt("hover").transition("hover").duration(Z).ease(j).attr("fill",b(T)).attr("stroke",this.config.borderColor||this.autoBorderColor()).attr("stroke-width",this.config.borderWidth??1),F.style("filter",""),C.interrupt("highlight"),C.transition("highlight").duration(Z).ease(j).attr("opacity",1);const D=i.indexOf(T);this.context.events.emit("point:mouseout",{point:T,index:D,series:this,event:A}),(z=(R=T.events)==null?void 0:R.mouseOut)==null||z.call(T,A)}).on("click",(A,T)=>{var D,R,z,B;const F=i.indexOf(T);this.context.events.emit("point:click",{point:T,index:F,series:this,event:A}),(R=(D=T.events)==null?void 0:D.click)==null||R.call(T,A),(B=(z=this.config.events)==null?void 0:z.click)==null||B.call(this,A)}),this.renderHeatmapLabels(i,k,M,x,v,b),this.renderColorAxis(h,s,a)}renderInterpolated(t,e,i,r,o,s,a,l,c){const h=new Set,f=new Set;for(const $ of t)h.add($.x??0),f.add($.yCategory??$.y??0);const u=Array.from(h).sort(($,_)=>$-_),d=Array.from(f).sort(($,_)=>$-_),p=u.length,y=d.length;if(p===0||y===0)return;const g=new Map;for(const $ of t){const _=$.value??$.z??$.y,L=u.indexOf($.x??0),I=d.indexOf($.yCategory??$.y??0);_!=null&&g.set(`${L},${I}`,_)}const m=Math.round(e.width),x=Math.round(e.height),v=document.createElement("canvas");v.width=m,v.height=x;const b=v.getContext("2d");if(!b)return;const k=b.createImageData(m,x),M=k.data;for(let $=0;$<x;$++)for(let _=0;_<m;_++){const L=_/m*p-.5,I=$/x*y-.5,E=Math.floor(L),C=Math.floor(I),S=L-E,w=I-C,A=(N,H)=>g.get(`${Math.max(0,Math.min(p-1,N))},${Math.max(0,Math.min(y-1,H))}`)??null,T=A(E,C),F=A(E+1,C),D=A(E,C+1),R=A(E+1,C+1),z=[T,F,D,R].filter(N=>N!==null);if(z.length===0){const N=Xe(r),H=($*m+_)*4;M[H]=N.r,M[H+1]=N.g,M[H+2]=N.b,M[H+3]=255;continue}const B=N=>N??z[0],W=B(T)*(1-S)*(1-w)+B(F)*S*(1-w)+B(D)*(1-S)*w+B(R)*S*w,K=i(W),X=Xe(K),q=($*m+_)*4;M[q]=X.r,M[q+1]=X.g,M[q+2]=X.b,M[q+3]=255}b.putImageData(k,0,0);const P=v.toDataURL();this.group.append("image").attr("class","katucharts-heatmap-interpolated").attr("width",e.width).attr("height",e.height).attr("href",P).style("image-rendering","auto")}buildColorScale(t,e,i){const r=t.reversed===!0,o=r?i:e,s=r?e:i;if(t.dataClasses&&t.dataClasses.length>0){const u=t.dataClasses;return d=>{var p;for(const y of u){const g=y.from??-1/0,m=y.to??1/0;if(d>=g&&d<m)return y.color||"#cccccc"}return((p=u[u.length-1])==null?void 0:p.color)||"#cccccc"}}const a=t.type==="logarithmic",l=a?Math.max(o,1e-10):o,c=()=>a?To().domain([l,s]).clamp(!0):ke().domain([o,s]).clamp(!0);if(t.stops&&t.stops.length>=2){const u=t.stops,d=c();return p=>{const y=d(a?Math.max(p,1e-10):p);let g=0;for(;g<u.length-1&&!(y<=u[g+1][0]);g++);const[m,x]=u[g],[v,b]=u[Math.min(g+1,u.length-1)],k=v!==m?(y-m)/(v-m):0;return mi(x,b)(k)}}if(t.minColor&&t.maxColor){const u=mi(t.minColor,t.maxColor),d=c();return p=>u(d(a?Math.max(p,1e-10):p))}const h=r?[i,e]:[e,i],f=zu(ed).domain(h);return u=>f(u)}renderColorAxis(t,e,i){var b,k;const r=this.config.colorAxis||{};if(((b=r.labels)==null?void 0:b.enabled)===!1)return;const{plotArea:o}=this.context,a=(this.context.legendConfig||{}).layout==="vertical",l=this.context.plotGroup||this.group;l.selectAll(".katucharts-color-axis").remove();const c=l.append("g").attr("class","katucharts-color-axis"),h=((k=r.labels)==null?void 0:k.style)||{},f=h.fontSize||kt,u=h.color||this.autoLabelColor(),d=i-e,p=d/6,y=Math.pow(10,Math.floor(Math.log10(p))),g=[1,2,2.5,5,10].find(M=>M*y>=p)*y,m=Math.ceil(e/g)*g,x=[];for(let M=m;M<=i+g*.01;M+=g)x.push(Math.round(M*1e6)/1e6);(x.length===0||x[0]>e)&&x.unshift(e),x[x.length-1]<i&&x.push(i);const v=g>=1?0:g>=.1?1:2;if(r.dataClasses&&r.dataClasses.length>0){const M=r.dataClasses,P=Math.min(o.width*.6,300),$=12,_=(o.width-P)/2,L=o.height+60,I=P/M.length;for(let E=0;E<M.length;E++){const C=M[E];c.append("rect").attr("x",_+E*I).attr("y",L).attr("width",I).attr("height",$).attr("fill",C.color||"#ccc").attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",E===0?2:0).attr("ry",E===0?2:0),C.name&&c.append("text").attr("x",_+E*I+I/2).attr("y",L+$+30).attr("font-size",f).attr("fill",u).attr("text-anchor","middle").text(C.name)}return}if(a){const P=Math.min(o.height*.7,200),$=o.width+20,_=(o.height-P)/2,L=c.append("defs"),I=x.length-1,E=P/I;for(let C=0;C<I;C++){const S=I-1-C,w=`katucharts-heatmap-seg-${Math.random().toString(36).slice(2,8)}`,A=L.append("linearGradient").attr("id",w).attr("x1","0%").attr("y1","0%").attr("x2","0%").attr("y2","100%");A.append("stop").attr("offset","0%").attr("stop-color",t(x[S+1])),A.append("stop").attr("offset","100%").attr("stop-color",t(x[S])),c.append("rect").attr("x",$).attr("y",_+C*E).attr("width",12).attr("height",E+.5).attr("fill",`url(#${w})`).attr("stroke","none")}c.append("rect").attr("x",$).attr("y",_).attr("width",12).attr("height",P).attr("fill","none").attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",2);for(let C=0;C<x.length;C++){const S=_+P-(x[C]-e)/d*P;c.append("line").attr("x1",$+12).attr("y1",S).attr("x2",$+12+4).attr("y2",S).attr("stroke","#999").attr("stroke-width",.5),c.append("text").attr("x",$+12+7).attr("y",S+4).attr("font-size",f).attr("fill",u).attr("text-anchor","start").text(x[C].toFixed(v))}}else{const P=Math.min(o.width*.6,300),$=(o.width-P)/2,_=o.height+60,L=c.append("defs"),I=x.length-1,E=P/I;for(let C=0;C<I;C++){const S=`katucharts-heatmap-seg-${Math.random().toString(36).slice(2,8)}`,w=L.append("linearGradient").attr("id",S).attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");w.append("stop").attr("offset","0%").attr("stop-color",t(x[C])),w.append("stop").attr("offset","100%").attr("stop-color",t(x[C+1])),c.append("rect").attr("x",$+C*E).attr("y",_).attr("width",E+.5).attr("height",12).attr("fill",`url(#${S})`).attr("stroke","none")}c.append("rect").attr("x",$).attr("y",_).attr("width",P).attr("height",12).attr("fill","none").attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",2);for(let C=0;C<x.length;C++){const S=$+(x[C]-e)/d*P;c.append("line").attr("x1",S).attr("y1",_+12+8).attr("x2",S).attr("y2",_+12+16).attr("stroke","#999").attr("stroke-width",.5),c.append("text").attr("x",S).attr("y",_+12+30).attr("font-size",f).attr("fill",u).attr("text-anchor",C===0?"start":C===x.length-1?"end":"middle").text(x[C].toFixed(v))}}}renderHeatmapLabels(t,e,i,r,o,s){var f,u;const a=this.config.dataLabels;if(!(a!=null&&a.enabled))return;const l=a.minCellHeight??20;if(o<l)return;const c=((f=a.style)==null?void 0:f.fontSize)||kt,h=a.color||((u=a.style)==null?void 0:u.color)||void 0;this.group.selectAll(".katucharts-heatmap-label").data(t).join("text").attr("class","katucharts-heatmap-label").attr("x",d=>e(d)+r/2+(a.x??0)).attr("y",d=>i(d)+o/2+(a.y??0)).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("font-size",c).attr("fill",d=>Pn(s(d),h)).style("pointer-events","none").text(d=>{const p=d.value??d.z??d.y;return p==null?a.nullFormatter?a.nullFormatter.call({point:d,series:{name:this.config.name}}):a.nullFormat?a.nullFormat:"":a.formatter?a.formatter.call({point:{...d,value:p},series:{name:this.config.name},x:d.x,y:d.y}):a.format?de(Kt(a.format,{point:{...d,value:p},series:{name:this.config.name},x:d.x,y:d.y,value:p})):String(p)})}getUniqueValues(t){const e=new Set;for(const i of this.data){const r=i[t];r!==void 0&&e.add(r)}return Array.from(e).sort((i,r)=>i-r)}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}function bw(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}class vw extends Ut{constructor(t){super(t)}render(){const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data,s=this.context.animate,{boxWidth:a,boxOffset:l}=this.computeBoxGeometry(),c=this.config.medianColor||null,h=this.config.medianWidth??2,f=on(this.config.medianDashStyle),u=this.config.stemWidth??1,d=on(this.config.stemDashStyle),p=this.config.whiskerWidth??2,y=on(this.config.whiskerDashStyle),g=this.parseWhiskerLength(this.config.whiskerLength,a),m=on(this.config.boxDashStyle),x=this.config.lineWidth??1,b=(typeof this.config.animation=="object"?this.config.animation:{}).duration??vt;for(let k=0;k<o.length;k++){const M=o[k],P=t.getPixelForValue(M.x??k)+l+a/2,$=M.low??0,_=M.q1??M.low??0,L=M.median??M.y??0,I=M.q3??M.high??0,E=M.high??0,C=e.getPixelForValue(($+E)/2),S=M.color||this.getPointColor(k,r),w=this.config.fillColor??"transparent",A=this.config.stemColor||S,T=this.config.whiskerColor||S,F=this.group.append("g").attr("class","katucharts-boxplot-point").style("cursor",this.config.cursor||"pointer"),D=F.append("line").attr("x1",P).attr("x2",P).attr("stroke",A).attr("stroke-width",u).attr("stroke-dasharray",d),R=F.append("line").attr("x1",P).attr("x2",P).attr("stroke",A).attr("stroke-width",u).attr("stroke-dasharray",d),z=F.append("rect").attr("x",P-a/2).attr("width",a).attr("fill",w).attr("stroke",S).attr("stroke-width",x).attr("stroke-dasharray",m).attr("rx",bw(this.config.borderRadius)),B=F.append("line").attr("x1",P-a/2).attr("x2",P+a/2).attr("stroke",c||this.config.lineColor||S).attr("stroke-width",h).attr("stroke-dasharray",f),W=F.append("line").attr("x1",P-g/2).attr("x2",P+g/2).attr("stroke",T).attr("stroke-width",p).attr("stroke-dasharray",y),K=F.append("line").attr("x1",P-g/2).attr("x2",P+g/2).attr("stroke",T).attr("stroke-width",p).attr("stroke-dasharray",y);if(s){const X=Pe(k,0,Wt,o.length),q=b;D.attr("y1",C).attr("y2",C).transition().duration(q).ease(pt).delay(X).attr("y1",e.getPixelForValue($)).attr("y2",e.getPixelForValue(_)),R.attr("y1",C).attr("y2",C).transition().duration(q).ease(pt).delay(X).attr("y1",e.getPixelForValue(I)).attr("y2",e.getPixelForValue(E)),z.attr("y",C).attr("height",0).transition().duration(q).ease(pt).delay(X).attr("y",e.getPixelForValue(I)).attr("height",Math.abs(e.getPixelForValue(_)-e.getPixelForValue(I))),B.attr("y1",C).attr("y2",C).transition().duration(q).ease(pt).delay(X).attr("y1",e.getPixelForValue(L)).attr("y2",e.getPixelForValue(L)),W.attr("y1",C).attr("y2",C).transition().duration(q).ease(pt).delay(X).attr("y1",e.getPixelForValue($)).attr("y2",e.getPixelForValue($)),K.attr("y1",C).attr("y2",C).transition().duration(q).ease(pt).delay(X).attr("y1",e.getPixelForValue(E)).attr("y2",e.getPixelForValue(E))}else D.attr("y1",e.getPixelForValue($)).attr("y2",e.getPixelForValue(_)),R.attr("y1",e.getPixelForValue(I)).attr("y2",e.getPixelForValue(E)),z.attr("y",e.getPixelForValue(I)).attr("height",Math.abs(e.getPixelForValue(_)-e.getPixelForValue(I))),B.attr("y1",e.getPixelForValue(L)).attr("y2",e.getPixelForValue(L)),W.attr("y1",e.getPixelForValue($)).attr("y2",e.getPixelForValue($)),K.attr("y1",e.getPixelForValue(E)).attr("y2",e.getPixelForValue(E));this.attachBoxPointEvents(F,M,k,P,e.getPixelForValue(L),x)}this.renderDataLabels(o,(k,M)=>t.getPixelForValue(k.x??M)+l+a/2,k=>e.getPixelForValue(k.high??k.y??0)),s&&this.emitAfterAnimate(b+o.length*Wt)}animateUpdate(t){const{xAxis:e,yAxis:i}=this.context,r=this.getColor(),o=this.data,{boxWidth:s,boxOffset:a}=this.computeBoxGeometry(),c=this.group.selectAll(".katucharts-boxplot-point").nodes();if(c.length!==o.length){this.group.selectAll("*").remove(),this.render();return}for(let h=0;h<Math.min(c.length,o.length);h++){const f=o[h],u=c[h],d=e.getPixelForValue(f.x??h)+a+s/2,p=f.low??0,y=f.q1??f.low??0,g=f.median??f.y??0,m=f.q3??f.high??0,x=f.high??0,v=f.color||this.getPointColor(h,r),b=this.config.stemColor||v,k=this.config.whiskerColor||v,M=this.config.medianColor||this.config.lineColor||v,P=this.config.fillColor??"transparent",$=u.querySelectorAll("line"),_=u.querySelector("rect");if($[0]&&this.group.select(()=>$[0]).attr("stroke",b).transition().duration(t).attr("x1",d).attr("x2",d).attr("y1",i.getPixelForValue(p)).attr("y2",i.getPixelForValue(y)),$[1]&&this.group.select(()=>$[1]).attr("stroke",b).transition().duration(t).attr("x1",d).attr("x2",d).attr("y1",i.getPixelForValue(m)).attr("y2",i.getPixelForValue(x)),_&&this.group.select(()=>_).attr("stroke",v).attr("fill",P).transition().duration(t).attr("x",d-s/2).attr("y",i.getPixelForValue(m)).attr("height",Math.abs(i.getPixelForValue(y)-i.getPixelForValue(m))),$[2]&&this.group.select(()=>$[2]).attr("stroke",M).transition().duration(t).attr("x1",d-s/2).attr("x2",d+s/2).attr("y1",i.getPixelForValue(g)).attr("y2",i.getPixelForValue(g)),$[3]){const L=this.parseWhiskerLength(this.config.whiskerLength,s);this.group.select(()=>$[3]).attr("stroke",k).transition().duration(t).attr("x1",d-L/2).attr("x2",d+L/2).attr("y1",i.getPixelForValue(p)).attr("y2",i.getPixelForValue(p))}if($[4]){const L=this.parseWhiskerLength(this.config.whiskerLength,s);this.group.select(()=>$[4]).attr("stroke",k).transition().duration(t).attr("x1",d-L/2).attr("x2",d+L/2).attr("y1",i.getPixelForValue(x)).attr("y2",i.getPixelForValue(x))}}this.group.selectAll(".katucharts-data-labels").remove(),this.renderDataLabels(o,(h,f)=>e.getPixelForValue(h.x??f)+a+s/2,h=>i.getPixelForValue(h.high??h.y??0))}computeBoxGeometry(){const{xAxis:t,plotArea:e}=this.context,i=this.data,r=this.config.grouping!==!1&&this.context.totalSeriesOfType||1,o=this.config.grouping!==!1&&this.context.indexInType||0,s=this.config.groupPadding??.2,a=this.config.pointPadding??.1;let l;this.config.pointWidth!==void 0?l=this.config.pointWidth*r*1.5:l=Math.min(200*r,e.width/Math.max(i.length,1));let c;this.config.pointWidth!==void 0?c=this.config.pointWidth:(c=l*(1-s*2)/r*(1-a*2),this.config.maxPointWidth!==void 0&&(c=Math.min(c,this.config.maxPointWidth)),c=Math.min(c,90));const f=-l*(1-s*2)/2+(c+c*a*2)*o+c*a;return{boxWidth:c,boxOffset:f}}getPointColor(t,e){if(this.config.colorByPoint){const i=this.config.colors||this.context.colors;return i[t%i.length]}return e}parseWhiskerLength(t,e){return t===void 0?e*.5:typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?e*(parseFloat(t)/100):parseFloat(t)||e*.5}attachBoxPointEvents(t,e,i,r,o,s){if(this.config.enableMouseTracking===!1)return;const a=()=>this.group.selectAll(".katucharts-boxplot-point");t.on("mouseover",l=>{var h,f,u,d,p;t.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.25))"),t.select("rect").interrupt("hover").transition("hover").duration(Z).ease(j).attr("stroke-width",s+1),a().filter(function(){return this!==t.node()}).interrupt("hover").transition("hover").duration(Z).ease(j).style("opacity",.4),this.context.events.emit("point:mouseover",{point:e,index:i,series:this,event:l,plotX:r,plotY:o}),(f=(h=e.events)==null?void 0:h.mouseOver)==null||f.call(e,l),(p=(d=(u=this.config.point)==null?void 0:u.events)==null?void 0:d.mouseOver)==null||p.call(e,l)}).on("mouseout",l=>{var c,h,f,u,d;t.style("filter",""),t.select("rect").interrupt("hover").transition("hover").duration(Z).ease(j).attr("stroke-width",s),a().interrupt("hover").transition("hover").duration(Z).ease(j).style("opacity",null),this.context.events.emit("point:mouseout",{point:e,index:i,series:this,event:l}),(h=(c=e.events)==null?void 0:c.mouseOut)==null||h.call(e,l),(d=(u=(f=this.config.point)==null?void 0:f.events)==null?void 0:u.mouseOut)==null||d.call(e,l)}).on("click",l=>{var c,h,f,u,d,p,y;this.context.events.emit("point:click",{point:e,index:i,series:this,event:l}),(h=(c=e.events)==null?void 0:c.click)==null||h.call(e,l),(d=(u=(f=this.config.point)==null?void 0:f.events)==null?void 0:u.click)==null||d.call(e,l),(y=(p=this.config.events)==null?void 0:p.click)==null||y.call(this,l)})}getDataExtents(){let t=1/0,e=-1/0,i=1/0,r=-1/0;for(let o=0;o<this.data.length;o++){const s=this.data[o],a=s.x??o;t=Math.min(t,a),e=Math.max(e,a),i=Math.min(i,s.low??s.y??0),r=Math.max(r,s.high??s.y??0)}return{xMin:t,xMax:e,yMin:i,yMax:r}}}function id(){$t.registerType("line",jf),$t.registerType("spline",V2),$t.registerType("area",qf),$t.registerType("areaspline",Y2),$t.registerType("column",Zf),$t.registerType("bar",j2),$t.registerType("scatter",q2),$t.registerType("bubble",Z2),$t.registerType("pie",Qf),$t.registerType("donut",Qf),$t.registerType("heatmap",xw),$t.registerType("boxplot",vw)}function rd(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}class ww extends Ut{constructor(t){super(t),this.processed=[]}render(){const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data,s=this.context.animate,{barWidth:a,barOffset:l}=this.computeBarGeometry();this.processed=this.processWaterfallData(o);const c=this.group.selectAll(".katucharts-waterfall-bar").data(this.processed).join("rect").attr("class","katucharts-waterfall-bar").attr("x",d=>t.getPixelForValue(d.x??0)+l).attr("width",a).attr("rx",rd(this.config.borderRadius)).attr("fill",(d,p)=>this.getBarColor(d,p,r)).attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0).style("cursor",this.config.cursor||"pointer"),h=e.getPixelForValue(0),u=(typeof this.config.animation=="object"?this.config.animation:{}).duration??vt;s?c.attr("y",h).attr("height",0).transition().duration(u).ease(pt).delay((d,p)=>Pe(p,0,Wt,this.processed.length)).attr("y",d=>Math.min(e.getPixelForValue(d._start),e.getPixelForValue(d._end))).attr("height",d=>Math.max(Math.abs(e.getPixelForValue(d._start)-e.getPixelForValue(d._end)),this.config.minPointLength??0)):c.attr("y",d=>Math.min(e.getPixelForValue(d._start),e.getPixelForValue(d._end))).attr("height",d=>Math.max(Math.abs(e.getPixelForValue(d._start)-e.getPixelForValue(d._end)),this.config.minPointLength??0)),this.attachBarEvents(c),this.renderConnectors(a,l,!!s),this.renderDataLabels(this.processed,d=>t.getPixelForValue(d.x??0)+l+a/2,d=>e.getPixelForValue(d._end)),s&&this.emitAfterAnimate(u+o.length*Wt)}animateUpdate(t){const{xAxis:e,yAxis:i}=this.context,r=this.getColor(),{barWidth:o,barOffset:s}=this.computeBarGeometry();this.processed=this.processWaterfallData(this.data);const a=this.group.selectAll(".katucharts-waterfall-bar").data(this.processed);a.exit().transition().duration(t).attr("opacity",0).remove(),a.enter().append("rect").attr("class","katucharts-waterfall-bar").attr("rx",rd(this.config.borderRadius)).attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0).attr("y",i.getPixelForValue(0)).attr("height",0).merge(a).transition().duration(t).attr("x",c=>e.getPixelForValue(c.x??0)+s).attr("width",o).attr("fill",(c,h)=>this.getBarColor(c,h,r)).attr("y",c=>Math.min(i.getPixelForValue(c._start),i.getPixelForValue(c._end))).attr("height",c=>Math.max(Math.abs(i.getPixelForValue(c._start)-i.getPixelForValue(c._end)),this.config.minPointLength??0)),this.group.selectAll(".katucharts-waterfall-connector").remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.renderConnectors(o,s,!1),this.attachBarEvents(this.group.selectAll(".katucharts-waterfall-bar")),this.renderDataLabels(this.processed,c=>e.getPixelForValue(c.x??0)+s+o/2,c=>i.getPixelForValue(c._end))}processWaterfallData(t){let e=0,i=0;return t.map((r,o)=>{const s=!!r.isSum,a=!!r.isIntermediateSum,l=s||a,c=r.y??0;let h,f;return s?(h=0,f=e):a?(h=i,f=e,i=e):(h=e,f=e+c,e+=c),{...r,_start:h,_end:f,_isTotal:l,_isIntermediate:a}})}getBarColor(t,e,i){if(t.color)return t.color;if(this.config.colorByPoint){const o=this.config.colors||this.context.colors;return o[e%o.length]}return t._isIntermediate?this.config.intermediateSumColor||this.config.sumColor||"#434348":t._isTotal?this.config.sumColor||"#434348":(t.y??0)>=0?this.config.upColor||i:this.config.negativeColor||"#f15c80"}computeBarGeometry(){const{xAxis:t,plotArea:e}=this.context,i=this.data,r=this.config.grouping!==!1&&this.context.totalSeriesOfType||1,o=this.config.grouping!==!1&&this.context.indexInType||0,s=this.config.groupPadding??.2,a=this.config.pointPadding??.1;let l;this.config.pointWidth!==void 0?l=this.config.pointWidth*r*1.5:l=e.width/Math.max(i.length,1);let c;this.config.pointWidth!==void 0?c=this.config.pointWidth:c=l*(1-s*2)/r*(1-a*2),this.config.maxPointWidth!==void 0&&(c=Math.min(c,this.config.maxPointWidth));const f=-l*(1-s*2)/2+(c+c*a*2)*o+c*a;return{barWidth:c,barOffset:f}}renderConnectors(t,e,i){const{xAxis:r,yAxis:o}=this.context,s=this.config.lineColor||"#999",a=this.config.lineWidth??1,l=on(this.config.dashStyle||"Dot"),c=this.group.selectAll(".katucharts-waterfall-connector").data(this.processed.slice(0,-1)).join("line").attr("class","katucharts-waterfall-connector").attr("x1",h=>r.getPixelForValue(h.x??0)+e+t).attr("x2",(h,f)=>r.getPixelForValue(this.processed[f+1].x??0)+e).attr("y1",h=>o.getPixelForValue(h._end)).attr("y2",h=>o.getPixelForValue(h._end)).attr("stroke",s).attr("stroke-width",a).attr("stroke-dasharray",l);i&&c.attr("opacity",0).transition().duration(vt).ease(pt).delay((h,f)=>vt+f*Wt).attr("opacity",1)}attachBarEvents(t){if(this.config.enableMouseTracking===!1)return;const{xAxis:e,yAxis:i}=this.context,r=this.processed;t.style("cursor",this.config.cursor||"pointer").on("mouseover",(o,s)=>{var h,f,u,d,p;const a=o.currentTarget,l=a.getAttribute("fill")||"";a.setAttribute("data-orig-fill",l),a.style.filter="drop-shadow(0 2px 4px rgba(0,0,0,0.25))",st(a).interrupt("hover").transition("hover").duration(Z).ease(j).style("fill",Xf(l,.15));const c=r.indexOf(s);this.context.events.emit("point:mouseover",{point:s,index:c,series:this,event:o,plotX:e.getPixelForValue(s.x??0),plotY:i.getPixelForValue(s._end)}),(f=(h=s.events)==null?void 0:h.mouseOver)==null||f.call(s,o),(p=(d=(u=this.config.point)==null?void 0:u.events)==null?void 0:d.mouseOver)==null||p.call(s,o)}).on("mouseout",(o,s)=>{var c,h,f,u,d;const a=o.currentTarget;a.style.filter="",st(a).interrupt("hover").transition("hover").duration(Z).ease(j).style("fill",null);const l=r.indexOf(s);this.context.events.emit("point:mouseout",{point:s,index:l,series:this,event:o}),(h=(c=s.events)==null?void 0:c.mouseOut)==null||h.call(s,o),(d=(u=(f=this.config.point)==null?void 0:f.events)==null?void 0:u.mouseOut)==null||d.call(s,o)}).on("click",(o,s)=>{var l,c,h,f,u,d,p;const a=r.indexOf(s);this.context.events.emit("point:click",{point:s,index:a,series:this,event:o}),(c=(l=s.events)==null?void 0:l.click)==null||c.call(s,o),(u=(f=(h=this.config.point)==null?void 0:h.events)==null?void 0:f.click)==null||u.call(s,o),(p=(d=this.config.events)==null?void 0:d.click)==null||p.call(this,o),this.handlePointSelect(st(o.currentTarget),s,a,o)})}getDataExtents(){let t=1/0,e=-1/0,i=0,r=0,o=0;for(let s=0;s<this.data.length;s++){const a=this.data[s],l=a.x??s;t=Math.min(t,l),e=Math.max(e,l);const c=a.isSum||a.isIntermediateSum,h=a.y??0;c||(o+=h),i=Math.min(i,c?0:Math.min(o-h,o),0),r=Math.max(r,o)}return{xMin:t,xMax:e,yMin:i,yMax:r}}}function kw(n,t){return n.parent===t.parent?1:2}function Mw(n){return n.reduce(Aw,0)/n.length}function Aw(n,t){return n+t.x}function Sw(n){return 1+n.reduce(_w,0)}function _w(n,t){return Math.max(n,t.y)}function Cw(n){for(var t;t=n.children;)n=t[0];return n}function Pw(n){for(var t;t=n.children;)n=t[t.length-1];return n}function Ew(){var n=kw,t=1,e=1,i=!1;function r(o){var s,a=0;o.eachAfter(function(u){var d=u.children;d?(u.x=Mw(d),u.y=Sw(d)):(u.x=s?a+=n(u,s):0,u.y=0,s=u)});var l=Cw(o),c=Pw(o),h=l.x-n(l,c)/2,f=c.x+n(c,l)/2;return o.eachAfter(i?function(u){u.x=(u.x-o.x)*t,u.y=(o.y-u.y)*e}:function(u){u.x=(u.x-h)/(f-h)*t,u.y=(1-(o.y?u.y/o.y:1))*e})}return r.separation=function(o){return arguments.length?(n=o,r):n},r.size=function(o){return arguments.length?(i=!1,t=+o[0],e=+o[1],r):i?null:[t,e]},r.nodeSize=function(o){return arguments.length?(i=!0,t=+o[0],e=+o[1],r):i?[t,e]:null},r}function Tw(n){var t=0,e=n.children,i=e&&e.length;if(!i)t=1;else for(;--i>=0;)t+=e[i].value;n.value=t}function $w(){return this.eachAfter(Tw)}function Lw(n,t){let e=-1;for(const i of this)n.call(t,i,++e,this);return this}function Iw(n,t){for(var e=this,i=[e],r,o,s=-1;e=i.pop();)if(n.call(t,e,++s,this),r=e.children)for(o=r.length-1;o>=0;--o)i.push(r[o]);return this}function Fw(n,t){for(var e=this,i=[e],r=[],o,s,a,l=-1;e=i.pop();)if(r.push(e),o=e.children)for(s=0,a=o.length;s<a;++s)i.push(o[s]);for(;e=r.pop();)n.call(t,e,++l,this);return this}function Dw(n,t){let e=-1;for(const i of this)if(n.call(t,i,++e,this))return i}function Rw(n){return this.eachAfter(function(t){for(var e=+n(t.data)||0,i=t.children,r=i&&i.length;--r>=0;)e+=i[r].value;t.value=e})}function zw(n){return this.eachBefore(function(t){t.children&&t.children.sort(n)})}function Bw(n){for(var t=this,e=Ow(t,n),i=[t];t!==e;)t=t.parent,i.push(t);for(var r=i.length;n!==e;)i.splice(r,0,n),n=n.parent;return i}function Ow(n,t){if(n===t)return n;var e=n.ancestors(),i=t.ancestors(),r=null;for(n=e.pop(),t=i.pop();n===t;)r=n,n=e.pop(),t=i.pop();return r}function Nw(){for(var n=this,t=[n];n=n.parent;)t.push(n);return t}function Ww(){return Array.from(this)}function Hw(){var n=[];return this.eachBefore(function(t){t.children||n.push(t)}),n}function Vw(){var n=this,t=[];return n.each(function(e){e!==n&&t.push({source:e.parent,target:e})}),t}function*Gw(){var n=this,t,e=[n],i,r,o;do for(t=e.reverse(),e=[];n=t.pop();)if(yield n,i=n.children)for(r=0,o=i.length;r<o;++r)e.push(i[r]);while(e.length)}function qi(n,t){n instanceof Map?(n=[void 0,n],t===void 0&&(t=Uw)):t===void 0&&(t=Xw);for(var e=new Zi(n),i,r=[e],o,s,a,l;i=r.pop();)if((s=t(i.data))&&(l=(s=Array.from(s)).length))for(i.children=s,a=l-1;a>=0;--a)r.push(o=s[a]=new Zi(s[a])),o.parent=i,o.depth=i.depth+1;return e.eachBefore(od)}function Yw(){return qi(this).eachBefore(jw)}function Xw(n){return n.children}function Uw(n){return Array.isArray(n)?n[1]:null}function jw(n){n.data.value!==void 0&&(n.value=n.data.value),n.data=n.data.data}function od(n){var t=0;do n.height=t;while((n=n.parent)&&n.height<++t)}function Zi(n){this.data=n,this.depth=this.height=0,this.parent=null}Zi.prototype=qi.prototype={constructor:Zi,count:$w,each:Lw,eachAfter:Fw,eachBefore:Iw,find:Dw,sum:Rw,sort:zw,path:Bw,ancestors:Nw,descendants:Ww,leaves:Hw,links:Vw,copy:Yw,[Symbol.iterator]:Gw};function Ec(n){return n==null?null:sd(n)}function sd(n){if(typeof n!="function")throw new Error;return n}function Tr(){return 0}function $r(n){return function(){return n}}function ad(n){n.x0=Math.round(n.x0),n.y0=Math.round(n.y0),n.x1=Math.round(n.x1),n.y1=Math.round(n.y1)}function ds(n,t,e,i,r){for(var o=n.children,s,a=-1,l=o.length,c=n.value&&(i-t)/n.value;++a<l;)s=o[a],s.y0=e,s.y1=r,s.x0=t,s.x1=t+=s.value*c}function cd(){var n=1,t=1,e=0,i=!1;function r(s){var a=s.height+1;return s.x0=s.y0=e,s.x1=n,s.y1=t/a,s.eachBefore(o(t,a)),i&&s.eachBefore(ad),s}function o(s,a){return function(l){l.children&&ds(l,l.x0,s*(l.depth+1)/a,l.x1,s*(l.depth+2)/a);var c=l.x0,h=l.y0,f=l.x1-e,u=l.y1-e;f<c&&(c=f=(c+f)/2),u<h&&(h=u=(h+u)/2),l.x0=c,l.y0=h,l.x1=f,l.y1=u}}return r.round=function(s){return arguments.length?(i=!!s,r):i},r.size=function(s){return arguments.length?(n=+s[0],t=+s[1],r):[n,t]},r.padding=function(s){return arguments.length?(e=+s,r):e},r}var qw={depth:-1},ld={},Tc={};function Zw(n){return n.id}function Kw(n){return n.parentId}function $c(){var n=Zw,t=Kw,e;function i(r){var o=Array.from(r),s=n,a=t,l,c,h,f,u,d,p,y,g=new Map;if(e!=null){const m=o.map((b,k)=>Jw(e(b,k,r))),x=m.map(hd),v=new Set(m).add("");for(const b of x)v.has(b)||(v.add(b),m.push(b),x.push(hd(b)),o.push(Tc));s=(b,k)=>m[k],a=(b,k)=>x[k]}for(h=0,l=o.length;h<l;++h)c=o[h],d=o[h]=new Zi(c),(p=s(c,h,r))!=null&&(p+="")&&(y=d.id=p,g.set(y,g.has(y)?ld:d)),(p=a(c,h,r))!=null&&(p+="")&&(d.parent=p);for(h=0;h<l;++h)if(d=o[h],p=d.parent){if(u=g.get(p),!u)throw new Error("missing: "+p);if(u===ld)throw new Error("ambiguous: "+p);u.children?u.children.push(d):u.children=[d],d.parent=u}else{if(f)throw new Error("multiple roots");f=d}if(!f)throw new Error("no root");if(e!=null){for(;f.data===Tc&&f.children.length===1;)f=f.children[0],--l;for(let m=o.length-1;m>=0&&(d=o[m],d.data===Tc);--m)d.data=null}if(f.parent=qw,f.eachBefore(function(m){m.depth=m.parent.depth+1,--l}).eachBefore(od),f.parent=null,l>0)throw new Error("cycle");return f}return i.id=function(r){return arguments.length?(n=Ec(r),i):n},i.parentId=function(r){return arguments.length?(t=Ec(r),i):t},i.path=function(r){return arguments.length?(e=Ec(r),i):e},i}function Jw(n){n=`${n}`;let t=n.length;return Lc(n,t-1)&&!Lc(n,t-2)&&(n=n.slice(0,-1)),n[0]==="/"?n:`/${n}`}function hd(n){let t=n.length;if(t<2)return"";for(;--t>1&&!Lc(n,t););return n.slice(0,t)}function Lc(n,t){if(n[t]==="/"){let e=0;for(;t>0&&n[--t]==="\\";)++e;if(!(e&1))return!0}return!1}function Qw(n,t){return n.parent===t.parent?1:2}function Ic(n){var t=n.children;return t?t[0]:n.t}function Fc(n){var t=n.children;return t?t[t.length-1]:n.t}function tk(n,t,e){var i=e/(t.i-n.i);t.c-=i,t.s+=e,n.c+=i,t.z+=e,t.m+=e}function ek(n){for(var t=0,e=0,i=n.children,r=i.length,o;--r>=0;)o=i[r],o.z+=t,o.m+=t,t+=o.s+(e+=o.c)}function nk(n,t,e){return n.a.parent===t.parent?n.a:e}function ps(n,t){this._=n,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=t}ps.prototype=Object.create(Zi.prototype);function ik(n){for(var t=new ps(n,0),e,i=[t],r,o,s,a;e=i.pop();)if(o=e._.children)for(e.children=new Array(a=o.length),s=a-1;s>=0;--s)i.push(r=e.children[s]=new ps(o[s],s)),r.parent=e;return(t.parent=new ps(null,0)).children=[t],t}function rk(){var n=Qw,t=1,e=1,i=null;function r(c){var h=ik(c);if(h.eachAfter(o),h.parent.m=-h.z,h.eachBefore(s),i)c.eachBefore(l);else{var f=c,u=c,d=c;c.eachBefore(function(x){x.x<f.x&&(f=x),x.x>u.x&&(u=x),x.depth>d.depth&&(d=x)});var p=f===u?1:n(f,u)/2,y=p-f.x,g=t/(u.x+p+y),m=e/(d.depth||1);c.eachBefore(function(x){x.x=(x.x+y)*g,x.y=x.depth*m})}return c}function o(c){var h=c.children,f=c.parent.children,u=c.i?f[c.i-1]:null;if(h){ek(c);var d=(h[0].z+h[h.length-1].z)/2;u?(c.z=u.z+n(c._,u._),c.m=c.z-d):c.z=d}else u&&(c.z=u.z+n(c._,u._));c.parent.A=a(c,u,c.parent.A||f[0])}function s(c){c._.x=c.z+c.parent.m,c.m+=c.parent.m}function a(c,h,f){if(h){for(var u=c,d=c,p=h,y=u.parent.children[0],g=u.m,m=d.m,x=p.m,v=y.m,b;p=Fc(p),u=Ic(u),p&&u;)y=Ic(y),d=Fc(d),d.a=c,b=p.z+x-u.z-g+n(p._,u._),b>0&&(tk(nk(p,c,f),c,b),g+=b,m+=b),x+=p.m,g+=u.m,v+=y.m,m+=d.m;p&&!Fc(d)&&(d.t=p,d.m+=x-m),u&&!Ic(y)&&(y.t=u,y.m+=g-v,f=c)}return f}function l(c){c.x*=t,c.y=c.depth*e}return r.separation=function(c){return arguments.length?(n=c,r):n},r.size=function(c){return arguments.length?(i=!1,t=+c[0],e=+c[1],r):i?null:[t,e]},r.nodeSize=function(c){return arguments.length?(i=!0,t=+c[0],e=+c[1],r):i?[t,e]:null},r}function Lr(n,t,e,i,r){for(var o=n.children,s,a=-1,l=o.length,c=n.value&&(r-e)/n.value;++a<l;)s=o[a],s.x0=t,s.x1=i,s.y0=e,s.y1=e+=s.value*c}var ok=(1+Math.sqrt(5))/2;function sk(n,t,e,i,r,o){for(var s=[],a=t.children,l,c,h=0,f=0,u=a.length,d,p,y=t.value,g,m,x,v,b,k,M;h<u;){d=r-e,p=o-i;do g=a[f++].value;while(!g&&f<u);for(m=x=g,k=Math.max(p/d,d/p)/(y*n),M=g*g*k,b=Math.max(x/M,M/m);f<u;++f){if(g+=c=a[f].value,c<m&&(m=c),c>x&&(x=c),M=g*g*k,v=Math.max(x/M,M/m),v>b){g-=c;break}b=v}s.push(l={value:g,dice:d<p,children:a.slice(h,f)}),l.dice?ds(l,e,i,r,y?i+=p*g/y:o):Lr(l,e,i,y?e+=d*g/y:r,o),y-=g,h=f}return s}const gs=function n(t){function e(i,r,o,s,a){sk(t,i,r,o,s,a)}return e.ratio=function(i){return n((i=+i)>1?i:1)},e}(ok);function ak(){var n=gs,t=!1,e=1,i=1,r=[0],o=Tr,s=Tr,a=Tr,l=Tr,c=Tr;function h(u){return u.x0=u.y0=0,u.x1=e,u.y1=i,u.eachBefore(f),r=[0],t&&u.eachBefore(ad),u}function f(u){var d=r[u.depth],p=u.x0+d,y=u.y0+d,g=u.x1-d,m=u.y1-d;g<p&&(p=g=(p+g)/2),m<y&&(y=m=(y+m)/2),u.x0=p,u.y0=y,u.x1=g,u.y1=m,u.children&&(d=r[u.depth+1]=o(u)/2,p+=c(u)-d,y+=s(u)-d,g-=a(u)-d,m-=l(u)-d,g<p&&(p=g=(p+g)/2),m<y&&(y=m=(y+m)/2),n(u,p,y,g,m))}return h.round=function(u){return arguments.length?(t=!!u,h):t},h.size=function(u){return arguments.length?(e=+u[0],i=+u[1],h):[e,i]},h.tile=function(u){return arguments.length?(n=sd(u),h):n},h.padding=function(u){return arguments.length?h.paddingInner(u).paddingOuter(u):h.paddingInner()},h.paddingInner=function(u){return arguments.length?(o=typeof u=="function"?u:$r(+u),h):o},h.paddingOuter=function(u){return arguments.length?h.paddingTop(u).paddingRight(u).paddingBottom(u).paddingLeft(u):h.paddingTop()},h.paddingTop=function(u){return arguments.length?(s=typeof u=="function"?u:$r(+u),h):s},h.paddingRight=function(u){return arguments.length?(a=typeof u=="function"?u:$r(+u),h):a},h.paddingBottom=function(u){return arguments.length?(l=typeof u=="function"?u:$r(+u),h):l},h.paddingLeft=function(u){return arguments.length?(c=typeof u=="function"?u:$r(+u),h):c},h}function ck(n,t,e,i,r){var o=n.children,s,a=o.length,l,c=new Array(a+1);for(c[0]=l=s=0;s<a;++s)c[s+1]=l+=o[s].value;h(0,a,n.value,t,e,i,r);function h(f,u,d,p,y,g,m){if(f>=u-1){var x=o[f];x.x0=p,x.y0=y,x.x1=g,x.y1=m;return}for(var v=c[f],b=d/2+v,k=f+1,M=u-1;k<M;){var P=k+M>>>1;c[P]<b?k=P+1:M=P}b-c[k-1]<c[k]-b&&f+1<k&&--k;var $=c[k]-v,_=d-$;if(g-p>m-y){var L=d?(p*_+g*$)/d:g;h(f,k,$,p,y,L,m),h(k,u,_,L,y,g,m)}else{var I=d?(y*_+m*$)/d:m;h(f,k,$,p,y,g,I),h(k,u,_,p,I,g,m)}}}function Ir(n,t,e,i,r){(n.depth&1?Lr:ds)(n,t,e,i,r)}function lk(n,t,e){return n?n.split(/<br\s*\/?>/i).map(r=>{const o=[],s=/<b(?:\s+style="([^"]*)")?\s*>([\s\S]*?)<\/b>/gi;let a=0,l;for(;(l=s.exec(r))!==null;){if(l.index>a){const d=de(r.slice(a,l.index));d&&o.push({text:d,fontSize:t,fontWeight:e})}const c=l[1]||"",h=c.match(/font-size\s*:\s*([^;"]+)/i),f=c.match(/font-weight\s*:\s*([^;"]+)/i),u=de(l[2]);u&&o.push({text:u,fontSize:h?h[1].trim():t,fontWeight:f?f[1].trim():"bold"}),a=l.index+l[0].length}if(a<r.length){const c=de(r.slice(a));c&&o.push({text:c,fontSize:t,fontWeight:e})}return o}):[]}function hk(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}class uk extends Ut{constructor(t){super(t),this.currentRoot=null}render(){var L,I,E;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.data,o=this.config.levels||[],s=this.config.colorByPoint!==!1,a=this.config.allowTraversingTree===!0||this.config.allowDrillToNode===!0,l=this.config.interactByLeaf??!a,c=this.config.alternateStartingDirection===!0,h=((I=(L=this.config.states)==null?void 0:L.inactive)==null?void 0:I.opacity)??.4,f=this.buildHierarchy(r),u=a&&this.currentRoot?this.currentRoot:f,d={squarify:gs,squarified:gs,binary:ck,dice:ds,slice:Lr,sliceDice:Ir,sliceAndDice:Ir,strip:Lr,stripes:Lr},p=this.config.layoutAlgorithm||"squarified",y=d[p]||gs,g=this.config.layoutStartingDirection||"vertical",m=this.config.opacity??1,x=c||p==="sliceAndDice"||p==="sliceDice"?Ir:y,v=(C,S)=>{var T,F;const w=((T=C.data)==null?void 0:T.sortIndex)??0,A=((F=S.data)==null?void 0:F.sortIndex)??0;return w!==A?w-A:(S.value||0)-(C.value||0)};u.sort(v),ak().size([t.width,t.height]).tile(x).padding(1)(u);const b=a&&!l&&u.children||u.leaves(),k=C=>o.find(S=>S.level===C),P=(((E=this.config.colorAxis)==null?void 0:E.dataClasses)||[]).map(C=>C.color),$=(C,S)=>{var A,T,F,D,R;if(C.data.color)return C.data.color;const w=k(C.depth);if(w!=null&&w.color){const z=w.colorVariation;if((z==null?void 0:z.key)==="brightness"&&((A=C.parent)!=null&&A.children)){const B=C.parent.children,W=B.indexOf(C),K=B.length,X=K>1?-.5+W/(K-1)*(z.to??.5):0,q=ai(((T=se(w.color))==null?void 0:T.toString())||w.color);return q.l=Math.max(.1,Math.min(.95,q.l+X*.3)),q.toString()}return w.color}if(P.length>0)return P[S%P.length];if(s){const z=e[S%e.length],B=C.parent?k(C.parent.depth):void 0;if(((F=B==null?void 0:B.colorVariation)==null?void 0:F.key)==="brightness"){const W=((D=C.parent)==null?void 0:D.children)||[],K=W.indexOf(C),X=W.length,q=B.colorVariation.to??.5,N=X>1?K/(X-1)*q:q*.5,H=ai(((R=se(z))==null?void 0:R.toString())||z);return H.l=Math.max(.1,Math.min(.95,H.l+N*.3)),H.toString()}return z}return this.getColor()},_=this.group.selectAll(".katucharts-treemap-cell").data(b).join("rect").attr("class","katucharts-treemap-cell").attr("x",C=>C.x0).attr("y",C=>C.y0).attr("width",C=>Math.max(0,C.x1-C.x0)).attr("height",C=>Math.max(0,C.y1-C.y0)).attr("fill",(C,S)=>{const w=$(C,S);return C._color=w,w}).attr("stroke",C=>{const S=k(C.depth);return(S==null?void 0:S.borderColor)||this.config.borderColor||this.autoBorderColor()}).attr("stroke-width",C=>{const S=k(C.depth);return(S==null?void 0:S.borderWidth)??this.config.borderWidth??1}).attr("rx",hk(this.config.borderRadius)).style("cursor",this.config.cursor||"pointer");i?_.attr("opacity",0).transition().duration(vt).ease(pt).delay((C,S)=>Pe(S,0,Wt,b.length)).attr("opacity",m):m!==1&&_.attr("opacity",m),this.config.enableMouseTracking!==!1&&_.on("mouseover",(C,S)=>{var R,z,B,W,K,X;const w=st(C.currentTarget),A=w.attr("fill"),T=((z=(R=this.config.states)==null?void 0:R.hover)==null?void 0:z.brightness)??.3,F=((W=(B=se(A))==null?void 0:B.brighter(T))==null?void 0:W.toString())||A;w.transition("fill").duration(Z).ease(j).attr("fill",F),w.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.2))"),_.interrupt("highlight"),_.attr("opacity",1),_.filter(q=>q!==S).transition("highlight").duration(Z).ease(j).attr("opacity",h);const D=b.indexOf(S);this.context.events.emit("point:mouseover",{point:S.data,index:D,series:this,event:C,plotX:(S.x0+S.x1)/2,plotY:(S.y0+S.y1)/2}),(X=(K=S.data.events)==null?void 0:K.mouseOver)==null||X.call(S.data,C)}).on("mouseout",(C,S)=>{var F,D;const w=st(C.currentTarget),A=b.indexOf(S),T=$(S,A);w.transition("fill").duration(Z).ease(j).attr("fill",T),w.style("filter",""),_.interrupt("highlight"),_.transition("highlight").duration(Z).ease(j).attr("opacity",1),this.context.events.emit("point:mouseout",{point:S.data,index:A,series:this,event:C}),(D=(F=S.data.events)==null?void 0:F.mouseOut)==null||D.call(S.data,C)}).on("click",(C,S)=>{var A,T,F,D;const w=b.indexOf(S);if(a&&S.children){this.currentRoot=S,this.group.selectAll("*").remove(),this.render();return}this.context.events.emit("point:click",{point:S.data,index:w,series:this,event:C}),(T=(A=S.data.events)==null?void 0:A.click)==null||T.call(S.data,C),(D=(F=this.config.events)==null?void 0:F.click)==null||D.call(this,C)}),a&&this.currentRoot&&this.currentRoot!==f&&this.renderBreadcrumbs(t,f),this.renderLabels(b,k)}buildHierarchy(t){if(t.some(i=>i.children&&i.children.length>0)){const i=r=>r.map(o=>{const s={...o,value:o.y??o.value??(o.children?0:1)};return s.children&&(s.children=i(s.children)),s});return qi({children:i(t)}).sum(r=>r.children?0:r.value||0)}return qi({children:t.map(i=>({...i,value:i.y??i.value??1}))}).sum(i=>i.value||0)}renderBreadcrumbs(t,e){const i=this.config.breadcrumbs||{},r=i.position||{},o=r.x??0,s=r.y??-20,a=i.separator??" / ",l=i.style||{},c=l.fontSize||"11px",h=l.color||xe,f=[];let u=this.currentRoot;for(;u;)f.unshift(u),u=u.parent;const d=this.group.append("g").attr("class","katucharts-treemap-breadcrumbs").attr("transform",`translate(${o},${s})`);let p=0;f.forEach((y,g)=>{var k,M,P;const m=((k=y.data)==null?void 0:k.name)||(g===0?"Root":`Level ${g}`),x=g===f.length-1,v=d.append("text").attr("x",p).attr("y",0).attr("font-size",c).attr("fill",x?"#999":"#2f7ed8").attr("dominant-baseline","middle").style("cursor",x?"default":"pointer").style("text-decoration",x?"none":"underline").text(m);x||v.on("click",()=>{this.currentRoot=y===e?null:y,this.group.selectAll("*").remove(),this.render()});const b=((P=(M=v.node())==null?void 0:M.getComputedTextLength)==null?void 0:P.call(M))||m.length*7;p+=b,x||(d.append("text").attr("x",p).attr("y",0).attr("font-size",c).attr("fill",h).attr("dominant-baseline","middle").style("pointer-events","none").text(a),p+=a.length*5)})}renderLabels(t,e){var u,d,p;const i=this.config.dataLabels||{};if(!(i.enabled!==!1))return;const o=((u=i.style)==null?void 0:u.fontSize)||kt,s=i.color||((d=i.style)==null?void 0:d.color)||void 0,a=((p=i.style)==null?void 0:p.fontWeight)||"normal",l=i.align||"left",c=i.verticalAlign||"top",h=i.x??4,f=i.y??4;this.group.selectAll(".katucharts-treemap-label").remove(),t.forEach((y,g)=>{const m=e(y.depth),x=m==null?void 0:m.dataLabels;if((x==null?void 0:x.enabled)===!1)return;const v=y.x1-y.x0,b=y.y1-y.y0;if(v<30||b<16)return;let k="";if(i.formatter)k=i.formatter.call({point:y.data,series:{name:this.config.name},x:y.data.x,y:y.data.y??y.data.value});else{const C=i.format||i.pointFormat;C?k=Kt(C,{point:y.data,series:{name:this.config.name},x:y.data.x,y:y.data.y??y.data.value}):k=y.data.name||""}const M=lk(k,o,a);let P;l==="right"?P=y.x1-h:l==="center"?P=(y.x0+y.x1)/2:P=y.x0+h;const $=l==="right"?"end":l==="center"?"middle":"start";let _;c==="bottom"?_=y.y1-f:c==="middle"?_=(y.y0+y.y1)/2:_=y.y0+f;const L=this.group.append("text").attr("class","katucharts-treemap-label").attr("x",P).attr("text-anchor",$).attr("fill",Pn(y._color,s)).style("pointer-events","none");let I=_;M.forEach((C,S)=>{if(C.length===0)return;const w=C.map(T=>be(T.fontSize)),A=Math.max(...w)*1.15;I+=A,C.forEach((T,F)=>{const D=L.append("tspan").attr("font-size",T.fontSize).attr("font-weight",T.fontWeight).text(T.text);F===0&&D.attr("x",P).attr("y",I)})}),this.context.animate&&L.attr("opacity",0).transition().duration(vt).ease(pt).delay(Jn+g*Wt).attr("opacity",1);const E=L.node();if(E)try{const C=E.getBBox();(C.height+f>b||C.width+h>v)&&C.height>b-f&&L.remove()}catch{}})}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class fk extends Ut{constructor(t){super(t),this.currentRoot=null,t.showInLegend=!1}render(){var W,K,X,q,N;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.config.levels||[],o=this.config.allowTraversingTree===!0||this.config.allowDrillToNode===!0,s=this.config.slicedOffset??0,a=((K=(W=this.config.states)==null?void 0:W.inactive)==null?void 0:K.opacity)??.4,l=this.config.center||["50%","50%"],c=this.resolvePercent(l[0],t.width),h=this.resolvePercent(l[1],t.height),f=this.config.size,u=Math.min(t.width,t.height),d=f?this.resolvePercent(f,u)/2-5:u/2-5,p=this.config.startAngle??0,y=this.config.endAngle??360,g=p*Math.PI/180,x=y*Math.PI/180-g,v=(X=this.group.node())==null?void 0:X.parentElement;v&&st(v).attr("clip-path",null);const b=this.buildHierarchy(g,x),k=this.config.rootId;let M=b;o&&this.currentRoot?M=this.currentRoot:k&&b.each(H=>{var Y;((Y=H.data)==null?void 0:Y.id)===k&&(M=H)});const P=this.getMaxDepth(M),$=this.config.levelIsConstant!==!1,_=this.computeRingWidths(d,P,r);this.applyCustomRadii(M,_,$),this.assignColors(M,e,r);const L=this.config.borderRadius!==void 0?this.resolveBorderRadius(this.config.borderRadius):0,I=Ce().startAngle(H=>H.x0).endAngle(H=>H.x1).innerRadius(H=>H._y0).outerRadius(H=>H._y1).padAngle(.005).cornerRadius(L),E=this.group.append("g").attr("transform",`translate(${c},${h})`),C=M.descendants(),S=C[0],w=C.filter(H=>H.depth>0),A=S._y1||S.y1,T=S.data.color||this.getColor()||"#ffffff",F=ai(T),D=F&&!isNaN(F.h)?ai(F.h,F.s*.4,.88).toString():T,R=E.append("circle").attr("r",A).attr("fill",D).attr("stroke","none").style("cursor",o?"pointer":"default");if(o&&this.currentRoot&&this.currentRoot!==b&&(E.select("circle").on("click",()=>{var H;this.currentRoot=((H=this.currentRoot)==null?void 0:H.parent)||null,this.group.selectAll("*").remove(),this.render()}),this.renderBreadcrumbs(b)),this.config.enableMouseTracking!==!1){const H=this,Y="#f0f0f0";R.on("mouseover",function(G){st(this).transition("fill").duration(Z).ease(j).attr("fill",Y),st(this).style("filter","drop-shadow(0 1px 3px rgba(0,0,0,0.15))"),H.context.events.emit("point:mouseover",{point:{...S.data,value:S.value,y:S.value??S.data.value},index:-1,series:H,event:G,plotX:c,plotY:h})}).on("mouseout",function(G){st(this).transition("fill").duration(Z).ease(j).attr("fill",D),st(this).style("filter",""),H.context.events.emit("point:mouseout",{point:{...S.data,value:S.value,y:S.value??S.data.value},index:-1,series:H,event:G})})}if(A>15){const H=this.config.name||((q=S.data)==null?void 0:q.name)||"";if(H){const Y=((N=this.config.dataLabels)==null?void 0:N.style)||{},G=Pn(D,Y.color),Q=Y.textOutline,O=E.append("text").attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",A>35?"13px":"10px").attr("font-weight","bold").attr("fill",G).style("pointer-events","none").text(H);if(Q){const nt=Q.split(/\s+/);O.style("paint-order","stroke fill").attr("stroke",nt.length>=2?nt.slice(1).join(" "):"white").attr("stroke-width",parseFloat(Q)||0).attr("stroke-linejoin","round")}}}const z=E.selectAll(".katucharts-sunburst-arc").data(w).join("path").attr("class","katucharts-sunburst-arc").attr("fill",H=>H._color).attr("stroke",H=>{const Y=r.find(G=>G.level===H.depth);return(Y==null?void 0:Y.borderColor)||H._color}).attr("stroke-width",H=>{const Y=r.find(G=>G.level===H.depth);return Y!=null&&Y.borderColor?(Y==null?void 0:Y.borderWidth)??1:.5}).attr("shape-rendering","geometricPrecision").style("cursor","pointer");s>0&&z.each(function(H){if(H.data.sliced){const Y=(H.x0+H.x1)/2,G=s*Math.sin(Y),Q=-s*Math.cos(Y);st(this).attr("transform",`translate(${G},${Q})`)}}),i?z.each(function(H,Y){const G=st(this),Q={x0:H.x0,x1:H.x0,_y0:H._y0,_y1:H._y1},O={x0:H.x0,x1:H.x1,_y0:H._y0,_y1:H._y1},nt=ce(Q,O);G.transition().duration(vt).ease(pt).delay(Yf+Y*Wt).attrTween("d",()=>et=>I(nt(et)))}):z.attr("d",I);const B=new Set;for(const H of w)H.depth>1&&B.add(H._y0);for(const H of B)E.append("circle").attr("r",H).attr("fill","none").attr("stroke",this.autoBorderColor()).attr("stroke-width",2).style("pointer-events","none");if(this.renderLabels(E,w,r),this.config.enableMouseTracking!==!1){const H=this;z.on("mouseover",function(Y,G){var ht,ft,ct,it;const Q=st(this),O=((ft=(ht=se(G._color))==null?void 0:ht.brighter(.3))==null?void 0:ft.toString())||G._color;Q.transition("fill").duration(Z).ease(j).attr("fill",O),Q.style("filter","drop-shadow(0 1px 3px rgba(0,0,0,0.2))"),z.interrupt("highlight"),z.attr("opacity",1),z.filter(U=>U!==G&&!H.isAncestorOf(U,G)).transition("highlight").duration(Z).ease(j).attr("opacity",a);const nt=w.indexOf(G),et=I.centroid(G);H.context.events.emit("point:mouseover",{point:{...G.data,value:G.value,y:G.value??G.data.value},index:nt,series:H,event:Y,plotX:c+et[0],plotY:h+et[1]}),(it=(ct=G.data.events)==null?void 0:ct.mouseOver)==null||it.call(G.data,Y)}).on("mouseout",function(Y,G){var nt,et;const Q=st(this);Q.transition("fill").duration(Z).ease(j).attr("fill",G._color),Q.style("filter",""),z.interrupt("highlight"),z.transition("highlight").duration(Z).ease(j).attr("opacity",1);const O=w.indexOf(G);H.context.events.emit("point:mouseout",{point:{...G.data,value:G.value,y:G.value??G.data.value},index:O,series:H,event:Y}),(et=(nt=G.data.events)==null?void 0:nt.mouseOut)==null||et.call(G.data,Y)}).on("click",function(Y,G){var O,nt,et,ht;const Q=w.indexOf(G);if(o&&G.children&&G.children.length>0){H.currentRoot=G,cd().size([x,1])(H.currentRoot),g!==0&&H.currentRoot.each(ft=>{ft.x0+=g,ft.x1+=g}),H.group.selectAll("*").remove(),H.render();return}H.context.events.emit("point:click",{point:G.data,index:Q,series:H,event:Y}),(nt=(O=G.data.events)==null?void 0:O.click)==null||nt.call(G.data,Y),(ht=(et=H.config.events)==null?void 0:et.click)==null||ht.call(H,Y)})}}isAncestorOf(t,e){let i=e;for(;i;){if(i===t)return!0;i=i.parent}return!1}buildHierarchy(t=0,e=2*Math.PI){const i=this.data,r=i.length>0&&(i[0].id!==void 0||i[0].parent!==void 0);let o;if(r){const s=i.map(l=>({...l,id:l.id||l.name||String(i.indexOf(l)),parentId:l.parent||null,value:l.y??l.value??void 0}));s.some(l=>!l.parentId||l.parentId==="")?s.forEach(l=>{(!l.parentId||l.parentId==="")&&(l.parentId=null)}):(s.unshift({id:"__root__",parentId:null,name:"Root",value:void 0}),s.forEach(l=>{l.id!=="__root__"&&(!l.parentId||l.parentId==="")&&(l.parentId="__root__")})),o=$c().id(l=>l.id).parentId(l=>l.parentId)(s),o.sum(l=>l.children?0:l.value??0)}else o=qi({children:this.prepareNestedData(i)}).sum(s=>s.children?0:s.value||0);return cd().size([e,1])(o),t!==0&&o.each(s=>{s.x0+=t,s.x1+=t}),o}prepareNestedData(t){return t.map(e=>{const i={...e,value:e.y??e.value??1};return i.children&&(i.children=this.prepareNestedData(i.children)),i})}getMaxDepth(t){let e=0;return t.each(i=>{i.depth>e&&(e=i.depth)}),e}computeRingWidths(t,e,i){const r=[],o=this.config.levelSize;for(let c=0;c<=e;c++){const h=i.find(f=>f.level===c);h!=null&&h.levelSize?r.push({value:h.levelSize.value,unit:h.levelSize.unit}):o!=null&&o.unit&&(o!=null&&o.value)?r.push({value:o.value,unit:o.unit}):r.push({value:1,unit:"weight"})}let s=t;const a=new Array(e+1).fill(0);for(let c=0;c<=e;c++)r[c].unit==="pixels"&&(a[c]=r[c].value,s-=a[c]);for(let c=0;c<=e;c++)r[c].unit==="percentage"&&(a[c]=r[c].value/100*t,s-=a[c]);let l=0;for(let c=0;c<=e;c++)r[c].unit==="weight"&&(l+=r[c].value);if(l>0&&s>0)for(let c=0;c<=e;c++)r[c].unit==="weight"&&(a[c]=r[c].value/l*s);return a}applyCustomRadii(t,e,i=!0){const r=[0];for(let s=0;s<e.length;s++)r.push(r[s]+e[s]);const o=i?0:t.depth;t.each(s=>{const a=s.depth-o;s._y0=r[a]||0,s._y1=r[a+1]||r[r.length-1]})}assignColors(t,e,i){var l;let r=0;t._color=t.data.color||"transparent";const s=((l=i.find(c=>c.colorByPoint))==null?void 0:l.level)??1,a=c=>{if(c.depth===0)c._color=c.data.color||"transparent";else if(c.data.color)c._color=c.data.color;else if(c.depth===s)c._color=e[r++%e.length];else if(c.depth>s&&c.parent){const h=i.find(d=>d.level===c.depth),f=h==null?void 0:h.colorVariation,u=se(c.parent._color);if(u&&(f==null?void 0:f.key)==="brightness"){const d=c.parent.children||[],p=d.indexOf(c),y=d.length,g=y>1?p/(y-1)*f.to:f.to*.5,m=ai(u.toString());m.l=Math.max(.1,Math.min(.95,m.l+g*.3)),c._color=m.toString()}else if(u){const d=c.parent.children||[],p=d.indexOf(c),y=d.length,g=y>1?-.3+p/(y-1)*.6:0;c._color=u.brighter(g).toString()}else c._color=c.parent._color}else c.depth<s&&c.parent&&(c._color=c.parent._color!=="transparent"?c.parent._color:e[r++%e.length]);if(c.children)for(const h of c.children)a(h)};a(t)}renderLabels(t,e,i){var g;const o=this.config.dataLabels,s=(o==null?void 0:o.rotationMode)||"auto",a=(o==null?void 0:o.style)||{},l=a.fontSize||kt,c=a.textOutline,h=o==null?void 0:o.filter,f=m=>{var v,b;const x=i.find(k=>k.level===m.depth);return((b=(v=x==null?void 0:x.dataLabels)==null?void 0:v.style)==null?void 0:b.textOutline)||c},d=((g=i.find(m=>m.colorByPoint))==null?void 0:g.level)??1,p=m=>{let x=m;for(;x.depth>d&&x.parent;)x=x.parent;return x._color},y=m=>{var b,k;const x=i.find(M=>M.level===m.depth),v=((k=(b=x==null?void 0:x.dataLabels)==null?void 0:b.style)==null?void 0:k.color)||a.color;return Pn(p(m),v)};t.selectAll(".katucharts-sunburst-label").data(e).join("text").attr("class","katucharts-sunburst-label").attr("transform",m=>{var I;const x=i.find(E=>E.level===m.depth),v=((I=x==null?void 0:x.dataLabels)==null?void 0:I.rotationMode)||s,b=(m.x0+m.x1)/2,k=(m._y0+m._y1)/2,M=b*180/Math.PI-90,P=b<Math.PI/2||b>Math.PI*3/2,$=b>Math.PI;if(v==="parallel")return`rotate(${M}) translate(${k},0) rotate(${P?90:-90})`;if(v==="perpendicular")return`rotate(${M}) translate(${k},0)${$?" rotate(180)":""}`;const _=m._y1*(m.x1-m.x0),L=m._y1-m._y0;return _>L*2?`rotate(${M}) translate(${k},0) rotate(${P?90:-90})`:`rotate(${M}) translate(${k},0)${$?" rotate(180)":""}`}).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",m=>{var v,b;const x=i.find(k=>k.level===m.depth);return((b=(v=x==null?void 0:x.dataLabels)==null?void 0:v.style)==null?void 0:b.fontSize)||l}).attr("font-weight","bold").attr("fill",m=>y(m)).style("paint-order","stroke fill").attr("stroke",m=>{const x=f(m);if(!x)return"none";const v=x.split(/\s+/);return v.length>=2?v.slice(1).join(" "):"white"}).attr("stroke-width",m=>{const x=f(m);return x&&parseFloat(x)||0}).attr("stroke-linejoin","round").style("pointer-events","none").each(function(m){var B,W,K,X,q;const x=st(this);x.selectAll("tspan").remove();const v=i.find(N=>N.level===m.depth);if(((B=v==null?void 0:v.dataLabels)==null?void 0:B.enabled)===!1)return;const b=((W=v==null?void 0:v.dataLabels)==null?void 0:W.filter)||h,k=m._y1*(m.x1-m.x0),M=m._y0*(m.x1-m.x0),P=m._y1-m._y0;if(b){const N=b.property==="outerArcLength"?k:b.property==="innerArcLength"?M:0;if(b.operator===">"&&N<=b.value||b.operator==="<"&&N>=b.value)return}else if(k<16)return;const $=m.data.name||"",_=((K=v==null?void 0:v.dataLabels)==null?void 0:K.rotationMode)||s,L=_==="parallel"||_==="auto"&&k>P*2,I=L?(k+M)/2:P,E=L?P:(k+M)/2,C=parseFloat(((q=(X=v==null?void 0:v.dataLabels)==null?void 0:X.style)==null?void 0:q.fontSize)||l)||11,S=C*.6,w=Math.max(3,Math.floor(I/S)),A=Math.max(1,Math.floor(E/(C*1.2)));if($.length<=w){x.text($);return}const T=$.split(/[\s_-]+/),F=[];let D="";for(const N of T){const H=D?D+" "+N:N;if(H.length<=w?D=H:(D&&F.push(D),D=N.length>w?N.substring(0,w-1)+"…":N),F.length>=A)break}if(D&&F.length<A&&F.push(D),F.length===0)return;if(F.length>A&&(F.length=A),F.length===A&&D&&!F[F.length-1].endsWith("…")&&T.slice(F.join(" ").split(/[\s]+/).length).length>0){const H=F[F.length-1];H.length+2>w&&(F[F.length-1]=H.substring(0,w-1)+"…")}const z=-(F.length*C*1.2-C*1.2)/2;F.forEach((N,H)=>{x.append("tspan").attr("x",0).attr("dy",H===0?`${z}px`:`${C*1.2}px`).text(N)})})}renderBreadcrumbs(t){const e=this.config.breadcrumbs||{},r=(e.style||{}).fontSize||"11px",o=e.separator??" / ",s=[];let a=this.currentRoot;for(;a;)s.unshift(a),a=a.parent;const l=this.group.append("g").attr("class","katucharts-sunburst-breadcrumbs").attr("transform","translate(0,-15)");let c=0;s.forEach((h,f)=>{var g,m,x;const u=((g=h.data)==null?void 0:g.name)||(f===0?"Root":`Level ${f}`),d=f===s.length-1,p=l.append("text").attr("x",c).attr("y",0).attr("font-size",r).attr("fill",d?"#999":"#2f7ed8").attr("dominant-baseline","middle").style("cursor",d?"default":"pointer").style("text-decoration",d?"none":"underline").text(u);d||p.on("click",()=>{this.currentRoot=h===t?null:h,this.group.selectAll("*").remove(),this.render()});const y=((x=(m=p.node())==null?void 0:m.getComputedTextLength)==null?void 0:x.call(m))||u.length*7;c+=y,d||(l.append("text").attr("x",c).attr("y",0).attr("font-size",r).attr("fill","#666").attr("dominant-baseline","middle").style("pointer-events","none").text(o),c+=o.length*5)})}resolvePercent(t,e){return typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:parseFloat(t)||0}resolveBorderRadius(t){return t===void 0?3:typeof t=="number"?t:t.radius??3}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class dk extends Ut{constructor(t){super(t)}render(){var Y,G,Q;const{plotArea:t}=this.context,e=this.context.animate,i=t.width/2,r=this.config.pane||{},o=r.startAngle??-90,s=r.endAngle??90,a=o*Math.PI/180,l=s*Math.PI/180,c=Math.abs(s-o)<=180,h=c?t.height*.62:t.height/2,f=c?Math.min(t.width/2,h)-20:Math.min(t.width,t.height)/2-20,u=((Y=this.config._yAxis??this.config.yAxis)==null?void 0:Y.min)??this.config.min??0,d=((G=this.config._yAxis??this.config.yAxis)==null?void 0:G.max)??this.config.max??100,p=((Q=this.data[0])==null?void 0:Q.y)??0,y=this.config.wrap!==!1,g=this.config.overshoot??0;let m=p;if(y){const O=d-u;O>0&&(m=u+((p-u)%O+O)%O)}const x=g*Math.PI/180;let b=ke().domain([u,d]).range([a,l]).clamp(!y&&g<=0)(m);if(!y&&g>0){const O=a-x,nt=l+x;b=Math.max(O,Math.min(nt,b))}const k=this.group.append("g").attr("transform",`translate(${i},${h})`);this.renderPaneBackground(k,f,a,l,r);const M=f*.15,P=Ce().innerRadius(f-M).outerRadius(f).startAngle(a).endAngle(l).cornerRadius(M/2);k.append("path").attr("d",P({})).attr("fill","#ddd"),this.renderPlotBands(k,f,a,l,u,d,M),this.renderTickMarks(k,f,a,l,u,d,M);const $=this.config.dial||{},_=this.config.pivot||{},L=$.backgroundColor||"#333",I=$.borderColor||"none",E=$.borderWidth??0,C=$.baseWidth??8,S=$.topWidth??1,w=this.resolvePercent($.radius??"80%",f),A=this.resolvePercent($.rearLength??"15%",f),T=b-Math.PI/2,F=w*Math.cos(T),D=w*Math.sin(T),R=-A*Math.cos(T),z=-A*Math.sin(T),B=T+Math.PI/2,W=C/2,K=S/2,X=[`M${R+W*Math.cos(B)},${z+W*Math.sin(B)}`,`L${F+K*Math.cos(B)},${D+K*Math.sin(B)}`,`L${F-K*Math.cos(B)},${D-K*Math.sin(B)}`,`L${R-W*Math.cos(B)},${z-W*Math.sin(B)}`,"Z"].join(" "),q=k.append("path").attr("fill",L).attr("stroke",I).attr("stroke-width",E).style("filter","drop-shadow(0 1px 2px rgba(0,0,0,0.3))").style("cursor","pointer");if(e){const O=this.buildNeedlePath(a,w,A,C,S);q.attr("d",O).transition().duration(vt).ease(pt).attrTween("d",()=>{const nt=ce(a,b);return et=>this.buildNeedlePath(nt(et),w,A,C,S)})}else q.attr("d",X);if(this.config.enableMouseTracking!==!1){const O=E;q.on("mouseover",nt=>{var et,ht,ft;q.interrupt("hover").transition("hover").duration(Z).ease(j).attr("stroke-width",O+2),q.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.4))"),this.context.events.emit("point:mouseover",{point:this.data[0],index:0,series:this,event:nt,plotX:i,plotY:h}),(ft=(ht=(et=this.data[0])==null?void 0:et.events)==null?void 0:ht.mouseOver)==null||ft.call(this.data[0],nt)}).on("mouseout",nt=>{var et,ht,ft;q.interrupt("hover").transition("hover").duration(Z).ease(j).attr("stroke-width",O),q.style("filter","drop-shadow(0 1px 2px rgba(0,0,0,0.3))"),this.context.events.emit("point:mouseout",{point:this.data[0],index:0,series:this,event:nt}),(ft=(ht=(et=this.data[0])==null?void 0:et.events)==null?void 0:ht.mouseOut)==null||ft.call(this.data[0],nt)}).on("click",nt=>{var et,ht,ft,ct,it;this.context.events.emit("point:click",{point:this.data[0],index:0,series:this,event:nt}),(ft=(ht=(et=this.data[0])==null?void 0:et.events)==null?void 0:ht.click)==null||ft.call(this.data[0],nt),(it=(ct=this.config.events)==null?void 0:ct.click)==null||it.call(this,nt)})}const N=_.radius??10,H=_.borderWidth??2;k.append("circle").attr("r",N).attr("fill",_.backgroundColor||"#666").attr("stroke",_.borderColor||"#fff").attr("stroke-width",H).style("filter","drop-shadow(0 1px 2px rgba(0,0,0,0.2))"),this.renderValueLabel(k,f,p),e&&this.emitAfterAnimate(vt+100)}buildNeedlePath(t,e,i,r,o){const s=t-Math.PI/2,a=e*Math.cos(s),l=e*Math.sin(s),c=-i*Math.cos(s),h=-i*Math.sin(s),f=s+Math.PI/2,u=r/2,d=o/2;return[`M${c+u*Math.cos(f)},${h+u*Math.sin(f)}`,`L${a+d*Math.cos(f)},${l+d*Math.sin(f)}`,`L${a-d*Math.cos(f)},${l-d*Math.sin(f)}`,`L${c-u*Math.cos(f)},${h-u*Math.sin(f)}`,"Z"].join(" ")}renderPaneBackground(t,e,i,r,o){const s=o.background?Array.isArray(o.background)?o.background:[o.background]:[];for(const a of s){const l=this.resolvePercent(a.outerRadius??"100%",e),c=this.resolvePercent(a.innerRadius??"0%",e),h=Ce().innerRadius(c).outerRadius(l).startAngle(i).endAngle(r);t.append("path").attr("d",h({})).attr("fill",a.backgroundColor||"#f2f2f2").attr("stroke",a.borderColor||"#cccccc").attr("stroke-width",a.borderWidth??0)}}renderPlotBands(t,e,i,r,o,s,a){var f;const l=((f=this.config._yAxis??this.config.yAxis)==null?void 0:f.plotBands)||[];if(l.length===0)return;const c=a??e*.15,h=ke().domain([o,s]).range([i,r]);for(const u of l){if(u.from===void 0||u.to===void 0)continue;const d=Ce().innerRadius(e-c).outerRadius(e).startAngle(h(u.from)).endAngle(h(u.to)).cornerRadius(0);t.append("path").attr("d",d({})).attr("fill",u.color||"#e0e0e0").attr("stroke",u.borderColor||"none").attr("stroke-width",u.borderWidth??0)}}renderTickMarks(t,e,i,r,o,s,a){var v,b;const l=(this.config._yAxis??this.config.yAxis)||{},c=l.tickPositions||this.generateTicks(o,s,5),h=l.tickLength??15,f=l.tickWidth??2,u=((v=l.labels)==null?void 0:v.enabled)!==!1,d=((b=l.labels)==null?void 0:b.style)||{},p=d.fontSize||kt,y=d.color||this.autoLabelColor(),g=a??e*.15,m=ke().domain([o,s]).range([i,r]),x=l.minorTickInterval?Math.round((s-o)/l.minorTickInterval):0;if(x>0&&l.minorTickInterval)for(let k=0;k<=x;k++){const M=o+k*l.minorTickInterval;if(M>s)break;const P=m(M)-Math.PI/2,$=e-g+2,_=$-6;t.append("line").attr("x1",_*Math.cos(P)).attr("y1",_*Math.sin(P)).attr("x2",$*Math.cos(P)).attr("y2",$*Math.sin(P)).attr("stroke","#999").attr("stroke-width",1)}for(const k of c){const M=m(k)-Math.PI/2,P=e-g+2,$=P-h;if(t.append("line").attr("x1",$*Math.cos(M)).attr("y1",$*Math.sin(M)).attr("x2",P*Math.cos(M)).attr("y2",P*Math.sin(M)).attr("stroke","#333").attr("stroke-width",f),u){const _=$-10;t.append("text").attr("x",_*Math.cos(M)).attr("y",_*Math.sin(M)).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",p).attr("font-weight","600").attr("fill",y).style("pointer-events","none").text(String(k))}}}generateTicks(t,e,i){const r=(e-t)/i,o=[];for(let s=0;s<=i;s++)o.push(Math.round((t+r*s)*100)/100);return o}renderValueLabel(t,e,i){var c,h,f,u;const r=this.config.dataLabels||{};if(!(r.enabled!==!1))return;const s=((c=r.style)==null?void 0:c.fontSize)||kt,a=r.color||((h=r.style)==null?void 0:h.color)||this.autoLabelColor();let l;r.formatter?l=r.formatter.call({point:this.data[0],series:{name:this.config.name},x:(f=this.data[0])==null?void 0:f.x,y:i}):r.format?l=de(Kt(r.format,{point:this.data[0],series:{name:this.config.name},x:(u=this.data[0])==null?void 0:u.x,y:i})):l=i.toString(),t.append("text").attr("y",e*.25+(r.y??0)).attr("x",r.x??0).attr("text-anchor","middle").attr("font-size",s).attr("font-weight","bold").attr("fill",a).text(l)}resolvePercent(t,e){return typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:parseFloat(t)||0}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class pk extends Ut{constructor(t){super(t)}render(){var k,M,P,$;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=Math.min(t.width,t.height)/2-10,o=t.width/2,s=t.height/2,a=((k=this.config._yAxis??this.config.yAxis)==null?void 0:k.min)??this.config.min??0,l=((M=this.config._yAxis??this.config.yAxis)==null?void 0:M.max)??this.config.max??100,c=this.data.length>1,h=this.config.pane||{},f=(h.startAngle??-135)*Math.PI/180,u=(h.endAngle??135)*Math.PI/180,d=this.config.overshoot??0,p=d*Math.PI/180,y=this.group.append("g").attr("transform",`translate(${o},${s})`),g=this.config.innerRadius??.6,m=this.config.radius??1,x=this.config.rounded??5,v=this.config.linecap||"round",b=((P=this.config._yAxis??this.config.yAxis)==null?void 0:P.stops)||[];if(c){const _=r/(this.data.length+.5),L=_*.1;this.renderPaneBackground(y,r,0,f,u,h),this.data.forEach((I,E)=>{const C=I.radius?this.resolveRadiusValue(I.radius,r):r-E*_,S=I.innerRadius?this.resolveRadiusValue(I.innerRadius,r):C-_+L,w=I.color||e[E%e.length],A=this.config.color;this.config.color=w,this.renderSingleArc(y,I,E,S,C,r,f,u,a,l,d,p,x,v,b,o,s,i),this.config.color=A})}else{const _=this.resolveRadiusValue(g,r),L=this.resolveRadiusValue(m,r);this.renderPaneBackground(y,L,_,f,u,h),this.renderPlotBands(y,L,_,f,u,a,l),this.renderSingleArc(y,this.data[0],0,_,L,r,f,u,a,l,d,p,x,v,b,o,s,i)}this.renderTickMarks(y,r,f,u,a,l),c||this.renderValueLabel(y,(($=this.data[0])==null?void 0:$.y)??0),i&&this.emitAfterAnimate(vt+100)}renderSingleArc(t,e,i,r,o,s,a,l,c,h,f,u,d,p,y,g,m,x){const v=(e==null?void 0:e.y)??0,b=Math.max(0,Math.min(1,(v-c)/(h-c)));let k=a+(l-a)*b;if(f>0&&v>h){const C=(v-h)/(h-c);k=l+Math.min(u,(l-a)*C)}const M=p==="round",P=Ce().innerRadius(r).outerRadius(o).startAngle(a).endAngle(l).cornerRadius(M?(o-r)/2:d);t.append("path").attr("d",P({})).attr("fill","#e0e0e0");const $=M?(o-r)/2:d,_=Ce().innerRadius(r).outerRadius(o).cornerRadius($),L=Ce().innerRadius(r).outerRadius(o+5).cornerRadius($),I=this.resolveArcColor(b,y,e),E=t.append("path").attr("fill",I).style("cursor","pointer");if(x){const C=ce(a,k),S=this;E.transition().duration(vt).ease(pt).attrTween("d",()=>w=>{const A=C(w),T=_.startAngle(a).endAngle(A)({});if(y.length>0){const F=(A-a)/(l-a);E.attr("fill",S.getStopColor(Math.min(1,F),y))}return T})}else E.attr("d",_.startAngle(a).endAngle(k)({}));this.config.enableMouseTracking!==!1&&E.on("mouseover",C=>{var S,w;E.interrupt("hover").transition("hover").duration(Z).ease(j).attr("d",L.startAngle(a).endAngle(k)({})),E.style("filter","drop-shadow(0 2px 6px rgba(0,0,0,0.25))"),this.context.events.emit("point:mouseover",{point:e,index:i,series:this,event:C,plotX:g,plotY:m}),(w=(S=e==null?void 0:e.events)==null?void 0:S.mouseOver)==null||w.call(e,C)}).on("mouseout",C=>{var S,w;E.interrupt("hover").transition("hover").duration(Z).ease(j).attr("d",_.startAngle(a).endAngle(k)({})),E.style("filter",""),this.context.events.emit("point:mouseout",{point:e,index:i,series:this,event:C}),(w=(S=e==null?void 0:e.events)==null?void 0:S.mouseOut)==null||w.call(e,C)}).on("click",C=>{var S,w,A,T;this.context.events.emit("point:click",{point:e,index:i,series:this,event:C}),(w=(S=e==null?void 0:e.events)==null?void 0:S.click)==null||w.call(e,C),(T=(A=this.config.events)==null?void 0:A.click)==null||T.call(this,C)})}resolveArcColor(t,e,i){return i!=null&&i.color?i.color:e.length>=2?this.getStopColor(t,e):this.getColor()}getStopColor(t,e){if(t<=e[0][0])return e[0][1];if(t>=e[e.length-1][0])return e[e.length-1][1];for(let i=0;i<e.length-1;i++)if(t>=e[i][0]&&t<=e[i+1][0]){const r=(t-e[i][0])/(e[i+1][0]-e[i][0]),o=e[i][1],s=e[i+1][1];return ce(o,s)(r)}return e[e.length-1][1]}resolveRadiusValue(t,e){return typeof t=="string"&&t.endsWith("%")?e*parseFloat(t)/100:typeof t=="number"?t<=1?e*t:t:e*.6}renderPaneBackground(t,e,i,r,o,s){const a=s.background?Array.isArray(s.background)?s.background:[s.background]:[];for(const l of a){const c=this.resolvePercent(l.outerRadius??"100%",e),h=this.resolvePercent(l.innerRadius??"0%",e),f=Ce().innerRadius(h).outerRadius(c).startAngle(r).endAngle(o);t.append("path").attr("d",f({})).attr("fill",l.backgroundColor||"#f2f2f2").attr("stroke",l.borderColor||"#cccccc").attr("stroke-width",l.borderWidth??0)}}renderPlotBands(t,e,i,r,o,s,a){var h;const l=((h=this.config._yAxis??this.config.yAxis)==null?void 0:h.plotBands)||[];if(l.length===0)return;const c=ke().domain([s,a]).range([r,o]);for(const f of l){if(f.from===void 0||f.to===void 0)continue;const u=Ce().innerRadius(i).outerRadius(e).startAngle(c(f.from)).endAngle(c(f.to));t.append("path").attr("d",u({})).attr("fill",f.color||"#e0e0e0").attr("stroke",f.borderColor||"none").attr("stroke-width",f.borderWidth??0)}}renderTickMarks(t,e,i,r,o,s){var p,y;const a=(this.config._yAxis??this.config.yAxis)||{},l=a.tickPositions||this.generateTicks(o,s,5),c=((p=a.labels)==null?void 0:p.enabled)!==!1,h=((y=a.labels)==null?void 0:y.style)||{},f=h.fontSize||kt,u=h.color||this.autoLabelColor(),d=ke().domain([o,s]).range([i,r]);for(const g of l){const m=d(g)-Math.PI/2;if(c){const x=e+14;t.append("text").attr("x",x*Math.cos(m)).attr("y",x*Math.sin(m)).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",f).attr("fill",u).style("pointer-events","none").text(String(g))}}}generateTicks(t,e,i){const r=(e-t)/i,o=[];for(let s=0;s<=i;s++)o.push(Math.round((t+r*s)*100)/100);return o}renderValueLabel(t,e){var l,c,h,f;const i=this.config.dataLabels||{};if(!(i.enabled!==!1))return;const o=((l=i.style)==null?void 0:l.fontSize)||kt,s=i.color||((c=i.style)==null?void 0:c.color)||this.autoLabelColor();let a;i.formatter?a=i.formatter.call({point:this.data[0],series:{name:this.config.name},x:(h=this.data[0])==null?void 0:h.x,y:e}):i.format?a=de(Kt(i.format,{point:this.data[0],series:{name:this.config.name},x:(f=this.data[0])==null?void 0:f.x,y:e})):a=e.toString(),t.append("text").attr("y",10+(i.y??0)).attr("x",i.x??0).attr("text-anchor","middle").attr("font-size",o).attr("font-weight","bold").attr("fill",s).text(a)}resolvePercent(t,e){return typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:parseFloat(t)||0}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}const gk=dr("~s");function mk(n){return n===0?"0":n>=1e3?gk(n).replace("G","B"):String(n)}function yk(n){return!Number.isFinite(n)||Math.abs(n)<1e3?String(n):Math.round(n).toString().replace(/\B(?=(\d{3})+(?!\d))/g,".")}function ud(n){if(n<=0)return{ticks:[1],niceMax:1,gridMax:1};const t=n/2,e=Math.pow(10,Math.floor(Math.log10(t))),i=t/e;let r;i<1.5?r=1*e:i<3?r=2*e:i<7?r=5*e:r=10*e;const o=Math.max(r,Math.floor(n/r)*r),s=n*1.15;return{ticks:o>0?[Math.round(o*1e6)/1e6]:[],niceMax:o,gridMax:s}}function fd(n,t,e){const i=e==null?void 0:e.size;let r;typeof i=="string"&&i.trim().endsWith("%")?r=parseFloat(i)/100:typeof i=="number"?r=i>1?i/100:i:r=.85;const o=Math.min(n,t)*r/2;return Math.max(20,o-30)}class dd extends Ut{constructor(t){super(t)}render(){const t=this.resolvePolarSubType();t==="column"?this.renderColumnPolar():this.renderLineAreaPolar(t)}resolvePolarSubType(){const t=this.config.polarType||this.config._polarSubType||"area";return t==="column"||t==="bar"?"column":t==="line"?"line":"area"}renderLineAreaPolar(t){var E,C,S,w,A,T,F,D,R,z;const{plotArea:e}=this.context,i=this.context.animate,r=this.data,o=this.getColor(),s=this.context.pane||this.config.pane,a=fd(e.width,e.height,s),l=e.width/2,c=e.height/2,h=Math.max(...r.map(B=>B.y??0),1),{ticks:f,gridMax:u}=ud(h),d=ke().domain([0,u]).range([0,a]),p=((E=this.config.marker)==null?void 0:E.radius)??4,y=((C=this.config.marker)==null?void 0:C.enabled)!==!1,g=this.config.pointPlacement,m=g==="on"?0:g==="between"?Math.PI/r.length:typeof g=="number"?g*Math.PI/180:0,x=2*Math.PI/r.length,v=this.config.connectEnds!==!1;(w=(S=this.config.states)==null?void 0:S.inactive)==null||w.opacity;const b=this.group.append("g").attr("transform",`translate(${l},${c})`);let k=0,M=1/0;for(let B=0;B<r.length;B++){const W=r[B].y??0;W<M&&(M=W,k=B)}const P=k*x-Math.PI/2;this.renderGrid(b,a,r.length,d,f,P);const $=v?I2:Ui,_=k2().angle((B,W)=>W*x+m).radius(B=>d(B.y??0)).defined(B=>B.y!==null&&B.y!==void 0).curve($),L=r.map(B=>({...B,y:0})),I=b.append("path").datum(r).attr("fill","none").attr("stroke",o).attr("stroke-width",this.config.lineWidth??2);if(t==="area"){const B=M2().angle((K,X)=>X*x+m).innerRadius(0).outerRadius(K=>d(K.y??0)).defined(K=>K.y!==null&&K.y!==void 0).curve($),W=b.append("path").datum(r).attr("fill",this.config.fillColor||o).attr("fill-opacity",this.config.fillOpacity??.3);i?W.attr("d",B(L)||"").transition().duration(vt).ease(pt).attr("d",B(r)||""):W.attr("d",B)}if(i?I.attr("d",_(L)||"").transition().duration(vt).ease(pt).attr("d",_(r)||""):I.attr("d",_),y){const W=Math.max(...r.map(X=>X.y??0),1)*.02,K=b.selectAll(".katucharts-polar-point").data(r).join("circle").attr("class","katucharts-polar-point").attr("cx",(X,q)=>d(X.y??0)*Math.cos(q*x-Math.PI/2+m)).attr("cy",(X,q)=>d(X.y??0)*Math.sin(q*x-Math.PI/2+m)).attr("fill",((A=this.config.marker)==null?void 0:A.fillColor)||o).attr("stroke",((T=this.config.marker)==null?void 0:T.lineColor)||this.autoBorderColor()).attr("stroke-width",((F=this.config.marker)==null?void 0:F.lineWidth)??1).style("display",X=>(X.y??0)<W?"none":null).style("cursor",this.config.cursor||"pointer");if(i?K.attr("r",0).attr("opacity",0).transition().duration(vt).ease(pt).delay((X,q)=>q*Wt).attr("r",p).attr("opacity",1):K.attr("r",p),this.renderPolarDataLabels(b,r,d,x,m),this.config.enableMouseTracking!==!1){const X=((z=(R=(D=this.config.marker)==null?void 0:D.states)==null?void 0:R.hover)==null?void 0:z.radius)??p+3;K.on("mouseover",(q,N)=>{var O,nt;const H=st(q.currentTarget);H.transition("hover").duration(Z).ease(j).attr("r",X),H.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))");const Y=r.indexOf(N),G=d(N.y??0)*Math.cos(Y*x-Math.PI/2+m),Q=d(N.y??0)*Math.sin(Y*x-Math.PI/2+m);this.context.events.emit("point:mouseover",{point:N,index:Y,series:this,event:q,plotX:l+G,plotY:c+Q}),(nt=(O=N.events)==null?void 0:O.mouseOver)==null||nt.call(N,q)}).on("mouseout",(q,N)=>{var G,Q;const H=st(q.currentTarget);H.transition("hover").duration(Z).ease(j).attr("r",p),H.style("filter","");const Y=r.indexOf(N);this.context.events.emit("point:mouseout",{point:N,index:Y,series:this,event:q}),(Q=(G=N.events)==null?void 0:G.mouseOut)==null||Q.call(N,q)}).on("click",(q,N)=>{var Y,G,Q,O;const H=r.indexOf(N);this.context.events.emit("point:click",{point:N,index:H,series:this,event:q}),(G=(Y=N.events)==null?void 0:Y.click)==null||G.call(N,q),(O=(Q=this.config.events)==null?void 0:Q.click)==null||O.call(this,q)})}}}renderColumnPolar(){var E,C;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.data,o=this.getColor(),s=this.context.pane||this.config.pane,a=fd(t.width,t.height,s),l=t.width/2,c=t.height/2,h=Math.max(...r.map(S=>S.y??0),1),{ticks:f,gridMax:u}=ud(h),d=ke().domain([0,u]).range([0,a]),p=2*Math.PI/r.length,y=this.config.pointPlacement,g=y==="on"?0:y==="between"?Math.PI/r.length:typeof y=="number"?y*Math.PI/180:0,m=.02,x=((C=(E=this.config.states)==null?void 0:E.inactive)==null?void 0:C.opacity)??.4,v=this.config.colorByPoint===!0,b=this.config.stacking,k=this.group.append("g").attr("transform",`translate(${l},${c})`);let M=0,P=1/0;for(let S=0;S<r.length;S++){const w=r[S].y??0;w<P&&(P=w,M=S)}const $=M*p-Math.PI/2;this.renderGrid(k,a,r.length,d,f,$);const _=Ce().cornerRadius(2),L=k.selectAll(".katucharts-polar-bar").data(r).join("path").attr("class","katucharts-polar-bar").attr("fill",(S,w)=>S.color||(v?e[w%e.length]:o)).attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0).style("cursor",this.config.cursor||"pointer"),I=this.context.stackOffsets;i?L.each(function(S,w){const A=st(this),T=w*p-Math.PI/2+g+m,F=(w+1)*p-Math.PI/2+g-m,D=b&&I?d(I.get(w)??0):0,R=D+d(S.y??0);A.attr("d",_({innerRadius:D,outerRadius:D,startAngle:T+Math.PI/2,endAngle:F+Math.PI/2})||"").transition().duration(vt).ease(pt).delay(w*Wt).attrTween("d",()=>z=>_({innerRadius:D,outerRadius:D+(R-D)*z,startAngle:T+Math.PI/2,endAngle:F+Math.PI/2})||""),b&&I&&I.set(w,(I.get(w)??0)+(S.y??0))}):L.attr("d",(S,w)=>{const A=w*p-Math.PI/2+g+m,T=(w+1)*p-Math.PI/2+g-m,F=b&&I?d(I.get(w)??0):0,D=F+d(S.y??0);return b&&I&&I.set(w,(I.get(w)??0)+(S.y??0)),_({innerRadius:F,outerRadius:D,startAngle:A+Math.PI/2,endAngle:T+Math.PI/2})||""}),this.config.enableMouseTracking!==!1&&L.on("mouseover",(S,w)=>{var R,z;st(S.currentTarget).style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),L.interrupt("highlight"),L.attr("opacity",1),L.filter(B=>B!==w).transition("highlight").duration(Z).ease(j).attr("opacity",x);const T=r.indexOf(w),F=T*p+p/2-Math.PI/2+g,D=d(w.y??0)/2;this.context.events.emit("point:mouseover",{point:w,index:T,series:this,event:S,plotX:l+D*Math.cos(F),plotY:c+D*Math.sin(F)}),(z=(R=w.events)==null?void 0:R.mouseOver)==null||z.call(w,S)}).on("mouseout",(S,w)=>{var F,D;st(S.currentTarget).style("filter",""),L.interrupt("highlight"),L.transition("highlight").duration(Z).ease(j).attr("opacity",1);const T=r.indexOf(w);this.context.events.emit("point:mouseout",{point:w,index:T,series:this,event:S}),(D=(F=w.events)==null?void 0:F.mouseOut)==null||D.call(w,S)}).on("click",(S,w)=>{var T,F,D,R;const A=r.indexOf(w);this.context.events.emit("point:click",{point:w,index:A,series:this,event:S}),(F=(T=w.events)==null?void 0:T.click)==null||F.call(w,S),(R=(D=this.config.events)==null?void 0:D.click)==null||R.call(this,S)})}renderPolarDataLabels(t,e,i,r,o){var k,M,P;const s=this.config.dataLabels||{};if(s.enabled!==!0)return;const a=((k=s.style)==null?void 0:k.fontSize)||kt,l=((M=s.style)==null?void 0:M.color)||this.autoLabelColor(),c=((P=s.style)==null?void 0:P.fontWeight)||"normal",h=[],f=16,u=6,d=Math.max(...e.map($=>$.y??0),1),p=d*.02,y=d*.5,g=e.map(($,_)=>({d:$,i:_,v:$.y??0})).filter($=>$.d.y!=null&&$.d.y!==0&&$.v>=p),m=g.filter($=>$.v>=y),x=g.filter($=>$.v<y);x.sort(($,_)=>_.v-$.v);const v=x.length>0?x[0]:null,b=v?[...m,v]:m;b.sort(($,_)=>$.i-_.i);for(const{d:$,i:_}of b){const L=_*r-Math.PI/2+o,I=i($.y??0),E=I*Math.cos(L),C=I*Math.sin(L),S=((L+Math.PI/2)*180/Math.PI+360)%360;let w;S>20&&S<160?w="start":S>200&&S<340?w="end":w="middle";let A;S<45||S>315?A="text-after-edge":S>135&&S<225?A="text-before-edge":A="middle";const T=Math.cos(L),F=Math.sin(L),D=E+T*u,R=C+F*u;let z=!1;for(const B of h)if((B.x-D)**2+(B.y-R)**2<f*f){z=!0;break}z||(h.push({x:D,y:R}),t.append("text").attr("class","katucharts-polar-datalabel").attr("x",D).attr("y",R).attr("text-anchor",w).attr("dominant-baseline",A).attr("fill",l).attr("font-size",a).attr("font-weight",c).attr("stroke",this.labelHaloColor()).attr("stroke-width",3).attr("stroke-linejoin","round").attr("paint-order","stroke fill").style("pointer-events","none").text(yk($.y)))}}renderGrid(t,e,i,r,o,s=-Math.PI/2){var h,f,u,d;const l=(this.config.gridLineInterpolation||((h=this.config._yAxis??this.config.yAxis)==null?void 0:h.gridLineInterpolation)||"circle")==="polygon",c=2*Math.PI/i;if(l){const p=[];for(let y=0;y<i;y++){const g=y*c-Math.PI/2;p.push(`${e*Math.cos(g)},${e*Math.sin(g)}`)}t.append("polygon").attr("points",p.join(" ")).attr("fill","none").attr("stroke","#d0d0d0").attr("stroke-width",.8)}else t.append("circle").attr("r",e).attr("fill","none").attr("stroke","#d0d0d0").attr("stroke-width",.8);for(const p of o){const y=r(p);if(l){const x=[];for(let v=0;v<i;v++){const b=v*c-Math.PI/2,k=y*Math.cos(b),M=y*Math.sin(b);x.push(`${k},${M}`)}t.append("polygon").attr("points",x.join(" ")).attr("fill","none").attr("stroke","#e6e6e6").attr("stroke-width",.5)}else t.append("circle").attr("r",y).attr("fill","none").attr("stroke","#e6e6e6").attr("stroke-width",.5);const g=y*Math.cos(s)+5*Math.cos(s+Math.PI/2),m=y*Math.sin(s)+5*Math.sin(s+Math.PI/2);t.append("text").attr("x",g).attr("y",m).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("font-size",kt).attr("fill",this.autoLabelColor()).attr("stroke",this.labelHaloColor()).attr("stroke-width",3).attr("stroke-linejoin","round").attr("paint-order","stroke fill").style("pointer-events","none").text(mk(p))}for(let p=0;p<i;p++){const y=p*c-Math.PI/2;t.append("line").attr("x1",0).attr("y1",0).attr("x2",e*Math.cos(y)).attr("y2",e*Math.sin(y)).attr("stroke","#ccc").attr("stroke-width",.5);const g=(u=(f=this.context.xAxis)==null?void 0:f.config)==null?void 0:u.categories,m=g&&g[p]||((d=this.data[p])==null?void 0:d.name)||`${p}`,x=e+28;t.append("text").attr("x",x*Math.cos(y)).attr("y",x*Math.sin(y)).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("font-size",kt).attr("fill",this.autoLabelColor()).text(m)}}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class xk extends Ut{constructor(t){super(t)}render(){var m,x,v,b;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.config,o=this.data,s=Math.min(40,t.height/Math.max(o.length,1)),a=(t.height-o.length*s)/2,l=((m=this.config.marker)==null?void 0:m.radius)??6,c=(x=this.config.marker)==null?void 0:x.lineColor,h=r.colorByPoint!==!1,f=r.connectorColor??"#ccc",u=r.connectorWidth??r.lineWidth??4,d=this.config.dataLabels||{},p=((v=d.style)==null?void 0:v.fontSize)||kt,y=d.color||((b=d.style)==null?void 0:b.color)||xe,g=[];o.forEach((k,M)=>{const P=a+M*s,$=k.color||(h?e[M%e.length]:r.color||e[0]),_=this.group.append("circle").attr("cx",20).attr("cy",P+s/2).attr("fill",$).style("cursor","pointer");if(c&&_.attr("stroke",c),i?_.attr("r",0).transition().duration(vt).ease(pt).delay(M*Wt).attr("r",l):_.attr("r",l),M<o.length-1){const T=this.group.append("line").attr("x1",20).attr("x2",20).attr("y1",P+s/2+l).attr("y2",P+s+s/2-l).attr("stroke",f).attr("stroke-width",u);i&&T.attr("opacity",0).transition().duration(vt).ease(pt).delay(M*Wt).attr("opacity",1)}const L=k.label||k.name||`Event ${M+1}`,I=this.group.append("text").attr("x",36).attr("y",P+s/2).attr("dy","0.35em").attr("font-size",p).attr("fill",y).style("cursor","pointer").text(L);i&&I.attr("opacity",0).transition().duration(vt).ease(pt).delay(M*Wt).attr("opacity",1);let E=null;const C=k.description;C&&(E=this.group.append("text").attr("x",36).attr("y",P+s/2+14).attr("dy","0.35em").attr("font-size","10px").attr("fill","#777").style("pointer-events","none").text(C),i&&E.attr("opacity",0).transition().duration(vt).ease(pt).delay(M*Wt).attr("opacity",1)),g.push({circle:_,text:I,desc:E});const S=T=>{_.transition("size").duration(Z).ease(j).attr("r",l+3),_.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),I.attr("font-weight","bold"),g.forEach(F=>{F.circle.interrupt("highlight"),F.text.interrupt("highlight"),F.circle.attr("opacity",1),F.text.attr("opacity",1),F.desc&&(F.desc.interrupt("highlight"),F.desc.attr("opacity",1))}),g.forEach((F,D)=>{D!==M&&(F.circle.transition("highlight").duration(Z).ease(j).attr("opacity",.4),F.text.transition("highlight").duration(Z).ease(j).attr("opacity",.4),F.desc&&F.desc.transition("highlight").duration(Z).ease(j).attr("opacity",.4))}),this.context.events.emit("point:mouseover",{point:k,index:M,series:this,event:T,plotX:20,plotY:P+s/2})},w=T=>{_.transition("size").duration(Z).ease(j).attr("r",l),_.style("filter",""),I.attr("font-weight","normal"),g.forEach(F=>{F.circle.interrupt("highlight"),F.text.interrupt("highlight"),F.circle.transition("highlight").duration(Z).ease(j).attr("opacity",1),F.text.transition("highlight").duration(Z).ease(j).attr("opacity",1),F.desc&&(F.desc.interrupt("highlight"),F.desc.transition("highlight").duration(Z).ease(j).attr("opacity",1))}),this.context.events.emit("point:mouseout",{point:k,index:M,series:this,event:T})},A=T=>{this.context.events.emit("point:click",{point:k,index:M,series:this,event:T})};_.on("mouseover",S).on("mouseout",w).on("click",A),I.on("mouseover",S).on("mouseout",w).on("click",A)})}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class bk extends Ut{constructor(t){super(t)}render(){const{xAxis:t,plotArea:e,colors:i}=this.context,r=this.data,o=Math.min(25,e.height/Math.max(r.length,1)*.7),s=e.height/Math.max(r.length,1);r.forEach((a,l)=>{const c=a.start??a.x??0,h=a.end??c+1,f=t.getPixelForValue(c),u=t.getPixelForValue(h),d=l*s+(s-o)/2,p=a.color||i[l%i.length],y=this.group.append("rect").attr("class","katucharts-gantt-bar").attr("x",f).attr("y",d).attr("width",Math.max(1,u-f)).attr("height",o).attr("rx",3).attr("fill",p).attr("stroke","none");this.group.append("text").attr("x",f+4).attr("y",d+o/2).attr("dy","0.35em").attr("font-size","10px").attr("fill","#fff").text(a.name||""),y.style("cursor","pointer"),this.group.selectAll(".katucharts-gantt-bar"),y.on("mouseover",g=>{y.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),y.interrupt("hover").transition("hover").duration(Z).ease(j).attr("stroke","#333").attr("stroke-width",1.5),this.context.events.emit("point:mouseover",{point:a,index:l,series:this,event:g,plotX:(f+u)/2,plotY:d+o/2})}).on("mouseout",g=>{y.style("filter",""),y.interrupt("hover").transition("hover").duration(Z).ease(j).attr("stroke","none").attr("stroke-width",0),this.context.events.emit("point:mouseout",{point:a,index:l,series:this,event:g})}).on("click",g=>{this.context.events.emit("point:click",{point:a,index:l,series:this,event:g})})})}getDataExtents(){let t=1/0,e=-1/0;for(const i of this.data){const r=i.start??i.x??0,o=i.end??r+1;t=Math.min(t,r),e=Math.max(e,o)}return{xMin:t,xMax:e,yMin:0,yMax:0}}}var At=1e-6,pd=1e-12,Bt=Math.PI,te=Bt/2,gd=Bt/4,qe=Bt*2,Fe=180/Bt,ee=Bt/180,Xt=Math.abs,Ki=Math.atan,Wn=Math.atan2,Rt=Math.cos,ms=Math.ceil,md=Math.exp,ys=Math.log,Dc=Math.pow,Tt=Math.sin,sn=Math.sign||function(n){return n>0?1:n<0?-1:0},He=Math.sqrt,Rc=Math.tan;function yd(n){return n>1?0:n<-1?Bt:Math.acos(n)}function an(n){return n>1?te:n<-1?-te:Math.asin(n)}function cn(){}function xs(n,t){n&&bd.hasOwnProperty(n.type)&&bd[n.type](n,t)}var xd={Feature:function(n,t){xs(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,i=-1,r=e.length;++i<r;)xs(e[i].geometry,t)}},bd={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,i=-1,r=e.length;++i<r;)n=e[i],t.point(n[0],n[1],n[2])},LineString:function(n,t){zc(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,i=-1,r=e.length;++i<r;)zc(e[i],t,0)},Polygon:function(n,t){vd(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,i=-1,r=e.length;++i<r;)vd(e[i],t)},GeometryCollection:function(n,t){for(var e=n.geometries,i=-1,r=e.length;++i<r;)xs(e[i],t)}};function zc(n,t,e){var i=-1,r=n.length-e,o;for(t.lineStart();++i<r;)o=n[i],t.point(o[0],o[1],o[2]);t.lineEnd()}function vd(n,t){var e=-1,i=n.length;for(t.polygonStart();++e<i;)zc(n[e],t,1);t.polygonEnd()}function Ji(n,t){n&&xd.hasOwnProperty(n.type)?xd[n.type](n,t):xs(n,t)}function Bc(n){return[Wn(n[1],n[0]),an(n[2])]}function Qi(n){var t=n[0],e=n[1],i=Rt(e);return[i*Rt(t),i*Tt(t),Tt(e)]}function bs(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function vs(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function Oc(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function ws(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function Nc(n){var t=He(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function Wc(n,t){function e(i,r){return i=n(i,r),t(i[0],i[1])}return n.invert&&t.invert&&(e.invert=function(i,r){return i=t.invert(i,r),i&&n.invert(i[0],i[1])}),e}function Hc(n,t){return Xt(n)>Bt&&(n-=Math.round(n/qe)*qe),[n,t]}Hc.invert=Hc;function wd(n,t,e){return(n%=qe)?t||e?Wc(Md(n),Ad(t,e)):Md(n):t||e?Ad(t,e):Hc}function kd(n){return function(t,e){return t+=n,Xt(t)>Bt&&(t-=Math.round(t/qe)*qe),[t,e]}}function Md(n){var t=kd(n);return t.invert=kd(-n),t}function Ad(n,t){var e=Rt(n),i=Tt(n),r=Rt(t),o=Tt(t);function s(a,l){var c=Rt(l),h=Rt(a)*c,f=Tt(a)*c,u=Tt(l),d=u*e+h*i;return[Wn(f*r-d*o,h*e-u*i),an(d*r+f*o)]}return s.invert=function(a,l){var c=Rt(l),h=Rt(a)*c,f=Tt(a)*c,u=Tt(l),d=u*r-f*o;return[Wn(f*r+u*o,h*e+d*i),an(d*e-h*i)]},s}function vk(n){n=wd(n[0]*ee,n[1]*ee,n.length>2?n[2]*ee:0);function t(e){return e=n(e[0]*ee,e[1]*ee),e[0]*=Fe,e[1]*=Fe,e}return t.invert=function(e){return e=n.invert(e[0]*ee,e[1]*ee),e[0]*=Fe,e[1]*=Fe,e},t}function wk(n,t,e,i,r,o){if(e){var s=Rt(t),a=Tt(t),l=i*e;r==null?(r=t+i*qe,o=t-l/2):(r=Sd(s,r),o=Sd(s,o),(i>0?r<o:r>o)&&(r+=i*qe));for(var c,h=r;i>0?h>o:h<o;h-=l)c=Bc([s,-a*Rt(h),-a*Tt(h)]),n.point(c[0],c[1])}}function Sd(n,t){t=Qi(t),t[0]-=n,Nc(t);var e=yd(-t[1]);return((-t[2]<0?-e:e)+qe-At)%qe}function _d(){var n=[],t;return{point:function(e,i,r){t.push([e,i,r])},lineStart:function(){n.push(t=[])},lineEnd:cn,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function ks(n,t){return Xt(n[0]-t[0])<At&&Xt(n[1]-t[1])<At}function Ms(n,t,e,i){this.x=n,this.z=t,this.o=e,this.e=i,this.v=!1,this.n=this.p=null}function Cd(n,t,e,i,r){var o=[],s=[],a,l;if(n.forEach(function(p){if(!((y=p.length-1)<=0)){var y,g=p[0],m=p[y],x;if(ks(g,m)){if(!g[2]&&!m[2]){for(r.lineStart(),a=0;a<y;++a)r.point((g=p[a])[0],g[1]);r.lineEnd();return}m[0]+=2*At}o.push(x=new Ms(g,p,null,!0)),s.push(x.o=new Ms(g,null,x,!1)),o.push(x=new Ms(m,p,null,!1)),s.push(x.o=new Ms(m,null,x,!0))}}),!!o.length){for(s.sort(t),Pd(o),Pd(s),a=0,l=s.length;a<l;++a)s[a].e=e=!e;for(var c=o[0],h,f;;){for(var u=c,d=!0;u.v;)if((u=u.n)===c)return;h=u.z,r.lineStart();do{if(u.v=u.o.v=!0,u.e){if(d)for(a=0,l=h.length;a<l;++a)r.point((f=h[a])[0],f[1]);else i(u.x,u.n.x,1,r);u=u.n}else{if(d)for(h=u.p.z,a=h.length-1;a>=0;--a)r.point((f=h[a])[0],f[1]);else i(u.x,u.p.x,-1,r);u=u.p}u=u.o,h=u.z,d=!d}while(!u.v);r.lineEnd()}}}function Pd(n){if(t=n.length){for(var t,e=0,i=n[0],r;++e<t;)i.n=r=n[e],r.p=i,i=r;i.n=r=n[0],r.p=i}}function Vc(n){return Xt(n[0])<=Bt?n[0]:sn(n[0])*((Xt(n[0])+Bt)%qe-Bt)}function kk(n,t){var e=Vc(t),i=t[1],r=Tt(i),o=[Tt(e),-Rt(e),0],s=0,a=0,l=new di;r===1?i=te+At:r===-1&&(i=-te-At);for(var c=0,h=n.length;c<h;++c)if(u=(f=n[c]).length)for(var f,u,d=f[u-1],p=Vc(d),y=d[1]/2+gd,g=Tt(y),m=Rt(y),x=0;x<u;++x,p=b,g=M,m=P,d=v){var v=f[x],b=Vc(v),k=v[1]/2+gd,M=Tt(k),P=Rt(k),$=b-p,_=$>=0?1:-1,L=_*$,I=L>Bt,E=g*M;if(l.add(Wn(E*_*Tt(L),m*P+E*Rt(L))),s+=I?$+_*qe:$,I^p>=e^b>=e){var C=vs(Qi(d),Qi(v));Nc(C);var S=vs(o,C);Nc(S);var w=(I^$>=0?-1:1)*an(S[2]);(i>w||i===w&&(C[0]||C[1]))&&(a+=I^$>=0?1:-1)}}return(s<-At||s<At&&l<-pd)^a&1}function Ed(n,t,e,i){return function(r){var o=t(r),s=_d(),a=t(s),l=!1,c,h,f,u={point:d,lineStart:y,lineEnd:g,polygonStart:function(){u.point=m,u.lineStart=x,u.lineEnd=v,h=[],c=[]},polygonEnd:function(){u.point=d,u.lineStart=y,u.lineEnd=g,h=qh(h);var b=kk(c,i);h.length?(l||(r.polygonStart(),l=!0),Cd(h,Ak,b,e,r)):b&&(l||(r.polygonStart(),l=!0),r.lineStart(),e(null,null,1,r),r.lineEnd()),l&&(r.polygonEnd(),l=!1),h=c=null},sphere:function(){r.polygonStart(),r.lineStart(),e(null,null,1,r),r.lineEnd(),r.polygonEnd()}};function d(b,k){n(b,k)&&r.point(b,k)}function p(b,k){o.point(b,k)}function y(){u.point=p,o.lineStart()}function g(){u.point=d,o.lineEnd()}function m(b,k){f.push([b,k]),a.point(b,k)}function x(){a.lineStart(),f=[]}function v(){m(f[0][0],f[0][1]),a.lineEnd();var b=a.clean(),k=s.result(),M,P=k.length,$,_,L;if(f.pop(),c.push(f),f=null,!!P){if(b&1){if(_=k[0],($=_.length-1)>0){for(l||(r.polygonStart(),l=!0),r.lineStart(),M=0;M<$;++M)r.point((L=_[M])[0],L[1]);r.lineEnd()}return}P>1&&b&2&&k.push(k.pop().concat(k.shift())),h.push(k.filter(Mk))}}return u}}function Mk(n){return n.length>1}function Ak(n,t){return((n=n.x)[0]<0?n[1]-te-At:te-n[1])-((t=t.x)[0]<0?t[1]-te-At:te-t[1])}const Td=Ed(function(){return!0},Sk,Ck,[-Bt,-te]);function Sk(n){var t=NaN,e=NaN,i=NaN,r;return{lineStart:function(){n.lineStart(),r=1},point:function(o,s){var a=o>0?Bt:-Bt,l=Xt(o-t);Xt(l-Bt)<At?(n.point(t,e=(e+s)/2>0?te:-te),n.point(i,e),n.lineEnd(),n.lineStart(),n.point(a,e),n.point(o,e),r=0):i!==a&&l>=Bt&&(Xt(t-i)<At&&(t-=i*At),Xt(o-a)<At&&(o-=a*At),e=_k(t,e,o,s),n.point(i,e),n.lineEnd(),n.lineStart(),n.point(a,e),r=0),n.point(t=o,e=s),i=a},lineEnd:function(){n.lineEnd(),t=e=NaN},clean:function(){return 2-r}}}function _k(n,t,e,i){var r,o,s=Tt(n-e);return Xt(s)>At?Ki((Tt(t)*(o=Rt(i))*Tt(e)-Tt(i)*(r=Rt(t))*Tt(n))/(r*o*s)):(t+i)/2}function Ck(n,t,e,i){var r;if(n==null)r=e*te,i.point(-Bt,r),i.point(0,r),i.point(Bt,r),i.point(Bt,0),i.point(Bt,-r),i.point(0,-r),i.point(-Bt,-r),i.point(-Bt,0),i.point(-Bt,r);else if(Xt(n[0]-t[0])>At){var o=n[0]<t[0]?Bt:-Bt;r=e*o/2,i.point(-o,r),i.point(0,r),i.point(o,r)}else i.point(t[0],t[1])}function Pk(n){var t=Rt(n),e=2*ee,i=t>0,r=Xt(t)>At;function o(h,f,u,d){wk(d,n,e,u,h,f)}function s(h,f){return Rt(h)*Rt(f)>t}function a(h){var f,u,d,p,y;return{lineStart:function(){p=d=!1,y=1},point:function(g,m){var x=[g,m],v,b=s(g,m),k=i?b?0:c(g,m):b?c(g+(g<0?Bt:-Bt),m):0;if(!f&&(p=d=b)&&h.lineStart(),b!==d&&(v=l(f,x),(!v||ks(f,v)||ks(x,v))&&(x[2]=1)),b!==d)y=0,b?(h.lineStart(),v=l(x,f),h.point(v[0],v[1])):(v=l(f,x),h.point(v[0],v[1],2),h.lineEnd()),f=v;else if(r&&f&&i^b){var M;!(k&u)&&(M=l(x,f,!0))&&(y=0,i?(h.lineStart(),h.point(M[0][0],M[0][1]),h.point(M[1][0],M[1][1]),h.lineEnd()):(h.point(M[1][0],M[1][1]),h.lineEnd(),h.lineStart(),h.point(M[0][0],M[0][1],3)))}b&&(!f||!ks(f,x))&&h.point(x[0],x[1]),f=x,d=b,u=k},lineEnd:function(){d&&h.lineEnd(),f=null},clean:function(){return y|(p&&d)<<1}}}function l(h,f,u){var d=Qi(h),p=Qi(f),y=[1,0,0],g=vs(d,p),m=bs(g,g),x=g[0],v=m-x*x;if(!v)return!u&&h;var b=t*m/v,k=-t*x/v,M=vs(y,g),P=ws(y,b),$=ws(g,k);Oc(P,$);var _=M,L=bs(P,_),I=bs(_,_),E=L*L-I*(bs(P,P)-1);if(!(E<0)){var C=He(E),S=ws(_,(-L-C)/I);if(Oc(S,P),S=Bc(S),!u)return S;var w=h[0],A=f[0],T=h[1],F=f[1],D;A<w&&(D=w,w=A,A=D);var R=A-w,z=Xt(R-Bt)<At,B=z||R<At;if(!z&&F<T&&(D=T,T=F,F=D),B?z?T+F>0^S[1]<(Xt(S[0]-w)<At?T:F):T<=S[1]&&S[1]<=F:R>Bt^(w<=S[0]&&S[0]<=A)){var W=ws(_,(-L+C)/I);return Oc(W,P),[S,Bc(W)]}}}function c(h,f){var u=i?n:Bt-n,d=0;return h<-u?d|=1:h>u&&(d|=2),f<-u?d|=4:f>u&&(d|=8),d}return Ed(s,a,o,i?[0,-n]:[-Bt,n-Bt])}function Ek(n,t,e,i,r,o){var s=n[0],a=n[1],l=t[0],c=t[1],h=0,f=1,u=l-s,d=c-a,p;if(p=e-s,!(!u&&p>0)){if(p/=u,u<0){if(p<h)return;p<f&&(f=p)}else if(u>0){if(p>f)return;p>h&&(h=p)}if(p=r-s,!(!u&&p<0)){if(p/=u,u<0){if(p>f)return;p>h&&(h=p)}else if(u>0){if(p<h)return;p<f&&(f=p)}if(p=i-a,!(!d&&p>0)){if(p/=d,d<0){if(p<h)return;p<f&&(f=p)}else if(d>0){if(p>f)return;p>h&&(h=p)}if(p=o-a,!(!d&&p<0)){if(p/=d,d<0){if(p>f)return;p>h&&(h=p)}else if(d>0){if(p<h)return;p<f&&(f=p)}return h>0&&(n[0]=s+h*u,n[1]=a+h*d),f<1&&(t[0]=s+f*u,t[1]=a+f*d),!0}}}}}var Fr=1e9,As=-Fr;function Tk(n,t,e,i){function r(c,h){return n<=c&&c<=e&&t<=h&&h<=i}function o(c,h,f,u){var d=0,p=0;if(c==null||(d=s(c,f))!==(p=s(h,f))||l(c,h)<0^f>0)do u.point(d===0||d===3?n:e,d>1?i:t);while((d=(d+f+4)%4)!==p);else u.point(h[0],h[1])}function s(c,h){return Xt(c[0]-n)<At?h>0?0:3:Xt(c[0]-e)<At?h>0?2:1:Xt(c[1]-t)<At?h>0?1:0:h>0?3:2}function a(c,h){return l(c.x,h.x)}function l(c,h){var f=s(c,1),u=s(h,1);return f!==u?f-u:f===0?h[1]-c[1]:f===1?c[0]-h[0]:f===2?c[1]-h[1]:h[0]-c[0]}return function(c){var h=c,f=_d(),u,d,p,y,g,m,x,v,b,k,M,P={point:$,lineStart:E,lineEnd:C,polygonStart:L,polygonEnd:I};function $(w,A){r(w,A)&&h.point(w,A)}function _(){for(var w=0,A=0,T=d.length;A<T;++A)for(var F=d[A],D=1,R=F.length,z=F[0],B,W,K=z[0],X=z[1];D<R;++D)B=K,W=X,z=F[D],K=z[0],X=z[1],W<=i?X>i&&(K-B)*(i-W)>(X-W)*(n-B)&&++w:X<=i&&(K-B)*(i-W)<(X-W)*(n-B)&&--w;return w}function L(){h=f,u=[],d=[],M=!0}function I(){var w=_(),A=M&&w,T=(u=qh(u)).length;(A||T)&&(c.polygonStart(),A&&(c.lineStart(),o(null,null,1,c),c.lineEnd()),T&&Cd(u,a,w,o,c),c.polygonEnd()),h=c,u=d=p=null}function E(){P.point=S,d&&d.push(p=[]),k=!0,b=!1,x=v=NaN}function C(){u&&(S(y,g),m&&b&&f.rejoin(),u.push(f.result())),P.point=$,b&&h.lineEnd()}function S(w,A){var T=r(w,A);if(d&&p.push([w,A]),k)y=w,g=A,m=T,k=!1,T&&(h.lineStart(),h.point(w,A));else if(T&&b)h.point(w,A);else{var F=[x=Math.max(As,Math.min(Fr,x)),v=Math.max(As,Math.min(Fr,v))],D=[w=Math.max(As,Math.min(Fr,w)),A=Math.max(As,Math.min(Fr,A))];Ek(F,D,n,t,e,i)?(b||(h.lineStart(),h.point(F[0],F[1])),h.point(D[0],D[1]),T||h.lineEnd(),M=!1):T&&(h.lineStart(),h.point(w,A),M=!1)}x=w,v=A,b=T}return P}}function $d(n,t,e){var i=pi(n,t-At,e).concat(t);return function(r){return i.map(function(o){return[r,o]})}}function Ld(n,t,e){var i=pi(n,t-At,e).concat(t);return function(r){return i.map(function(o){return[o,r]})}}function $k(){var n,t,e,i,r,o,s,a,l=10,c=l,h=90,f=360,u,d,p,y,g=2.5;function m(){return{type:"MultiLineString",coordinates:x()}}function x(){return pi(ms(i/h)*h,e,h).map(p).concat(pi(ms(a/f)*f,s,f).map(y)).concat(pi(ms(t/l)*l,n,l).filter(function(v){return Xt(v%h)>At}).map(u)).concat(pi(ms(o/c)*c,r,c).filter(function(v){return Xt(v%f)>At}).map(d))}return m.lines=function(){return x().map(function(v){return{type:"LineString",coordinates:v}})},m.outline=function(){return{type:"Polygon",coordinates:[p(i).concat(y(s).slice(1),p(e).reverse().slice(1),y(a).reverse().slice(1))]}},m.extent=function(v){return arguments.length?m.extentMajor(v).extentMinor(v):m.extentMinor()},m.extentMajor=function(v){return arguments.length?(i=+v[0][0],e=+v[1][0],a=+v[0][1],s=+v[1][1],i>e&&(v=i,i=e,e=v),a>s&&(v=a,a=s,s=v),m.precision(g)):[[i,a],[e,s]]},m.extentMinor=function(v){return arguments.length?(t=+v[0][0],n=+v[1][0],o=+v[0][1],r=+v[1][1],t>n&&(v=t,t=n,n=v),o>r&&(v=o,o=r,r=v),m.precision(g)):[[t,o],[n,r]]},m.step=function(v){return arguments.length?m.stepMajor(v).stepMinor(v):m.stepMinor()},m.stepMajor=function(v){return arguments.length?(h=+v[0],f=+v[1],m):[h,f]},m.stepMinor=function(v){return arguments.length?(l=+v[0],c=+v[1],m):[l,c]},m.precision=function(v){return arguments.length?(g=+v,u=$d(o,r,90),d=Ld(t,n,g),p=$d(a,s,90),y=Ld(i,e,g),m):g},m.extentMajor([[-180,-90+At],[180,90-At]]).extentMinor([[-180,-80-At],[180,80+At]])}const Gc=n=>n;var Yc=new di,Xc=new di,Id,Fd,Uc,jc,Hn={point:cn,lineStart:cn,lineEnd:cn,polygonStart:function(){Hn.lineStart=Lk,Hn.lineEnd=Fk},polygonEnd:function(){Hn.lineStart=Hn.lineEnd=Hn.point=cn,Yc.add(Xt(Xc)),Xc=new di},result:function(){var n=Yc/2;return Yc=new di,n}};function Lk(){Hn.point=Ik}function Ik(n,t){Hn.point=Dd,Id=Uc=n,Fd=jc=t}function Dd(n,t){Xc.add(jc*n-Uc*t),Uc=n,jc=t}function Fk(){Dd(Id,Fd)}var tr=1/0,Ss=tr,Dr=-tr,_s=Dr,Cs={point:Dk,lineStart:cn,lineEnd:cn,polygonStart:cn,polygonEnd:cn,result:function(){var n=[[tr,Ss],[Dr,_s]];return Dr=_s=-(Ss=tr=1/0),n}};function Dk(n,t){n<tr&&(tr=n),n>Dr&&(Dr=n),t<Ss&&(Ss=t),t>_s&&(_s=t)}var qc=0,Zc=0,Rr=0,Ps=0,Es=0,er=0,Kc=0,Jc=0,zr=0,Rd,zd,kn,Mn,ln={point:Ai,lineStart:Bd,lineEnd:Od,polygonStart:function(){ln.lineStart=Bk,ln.lineEnd=Ok},polygonEnd:function(){ln.point=Ai,ln.lineStart=Bd,ln.lineEnd=Od},result:function(){var n=zr?[Kc/zr,Jc/zr]:er?[Ps/er,Es/er]:Rr?[qc/Rr,Zc/Rr]:[NaN,NaN];return qc=Zc=Rr=Ps=Es=er=Kc=Jc=zr=0,n}};function Ai(n,t){qc+=n,Zc+=t,++Rr}function Bd(){ln.point=Rk}function Rk(n,t){ln.point=zk,Ai(kn=n,Mn=t)}function zk(n,t){var e=n-kn,i=t-Mn,r=He(e*e+i*i);Ps+=r*(kn+n)/2,Es+=r*(Mn+t)/2,er+=r,Ai(kn=n,Mn=t)}function Od(){ln.point=Ai}function Bk(){ln.point=Nk}function Ok(){Nd(Rd,zd)}function Nk(n,t){ln.point=Nd,Ai(Rd=kn=n,zd=Mn=t)}function Nd(n,t){var e=n-kn,i=t-Mn,r=He(e*e+i*i);Ps+=r*(kn+n)/2,Es+=r*(Mn+t)/2,er+=r,r=Mn*n-kn*t,Kc+=r*(kn+n),Jc+=r*(Mn+t),zr+=r*3,Ai(kn=n,Mn=t)}function Wd(n){this._context=n}Wd.prototype={_radius:4.5,pointRadius:function(n){return this._radius=n,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(n,t){switch(this._point){case 0:{this._context.moveTo(n,t),this._point=1;break}case 1:{this._context.lineTo(n,t);break}default:{this._context.moveTo(n+this._radius,t),this._context.arc(n,t,this._radius,0,qe);break}}},result:cn};var Qc=new di,tl,Hd,Vd,Br,Or,Nr={point:cn,lineStart:function(){Nr.point=Wk},lineEnd:function(){tl&&Gd(Hd,Vd),Nr.point=cn},polygonStart:function(){tl=!0},polygonEnd:function(){tl=null},result:function(){var n=+Qc;return Qc=new di,n}};function Wk(n,t){Nr.point=Gd,Hd=Br=n,Vd=Or=t}function Gd(n,t){Br-=n,Or-=t,Qc.add(He(Br*Br+Or*Or)),Br=n,Or=t}let Yd,Ts,Xd,Ud;class jd{constructor(t){this._append=t==null?qd:Hk(t),this._radius=4.5,this._=""}pointRadius(t){return this._radius=+t,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){this._line===0&&(this._+="Z"),this._point=NaN}point(t,e){switch(this._point){case 0:{this._append`M${t},${e}`,this._point=1;break}case 1:{this._append`L${t},${e}`;break}default:{if(this._append`M${t},${e}`,this._radius!==Xd||this._append!==Ts){const i=this._radius,r=this._;this._="",this._append`m0,${i}a${i},${i} 0 1,1 0,${-2*i}a${i},${i} 0 1,1 0,${2*i}z`,Xd=i,Ts=this._append,Ud=this._,this._=r}this._+=Ud;break}}}result(){const t=this._;return this._="",t.length?t:null}}function qd(n){let t=1;this._+=n[0];for(const e=n.length;t<e;++t)this._+=arguments[t]+n[t]}function Hk(n){const t=Math.floor(n);if(!(t>=0))throw new RangeError(`invalid digits: ${n}`);if(t>15)return qd;if(t!==Yd){const e=10**t;Yd=t,Ts=function(r){let o=1;this._+=r[0];for(const s=r.length;o<s;++o)this._+=Math.round(arguments[o]*e)/e+r[o]}}return Ts}function Vk(n,t){let e=3,i=4.5,r,o;function s(a){return a&&(typeof i=="function"&&o.pointRadius(+i.apply(this,arguments)),Ji(a,r(o))),o.result()}return s.area=function(a){return Ji(a,r(Hn)),Hn.result()},s.measure=function(a){return Ji(a,r(Nr)),Nr.result()},s.bounds=function(a){return Ji(a,r(Cs)),Cs.result()},s.centroid=function(a){return Ji(a,r(ln)),ln.result()},s.projection=function(a){return arguments.length?(r=a==null?(n=null,Gc):(n=a).stream,s):n},s.context=function(a){return arguments.length?(o=a==null?(t=null,new jd(e)):new Wd(t=a),typeof i!="function"&&o.pointRadius(i),s):t},s.pointRadius=function(a){return arguments.length?(i=typeof a=="function"?a:(o.pointRadius(+a),+a),s):i},s.digits=function(a){if(!arguments.length)return e;if(a==null)e=null;else{const l=Math.floor(a);if(!(l>=0))throw new RangeError(`invalid digits: ${a}`);e=l}return t===null&&(o=new jd(e)),s},s.projection(n).digits(e).context(t)}function el(n){return function(t){var e=new nl;for(var i in n)e[i]=n[i];return e.stream=t,e}}function nl(){}nl.prototype={constructor:nl,point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function il(n,t,e){var i=n.clipExtent&&n.clipExtent();return n.scale(150).translate([0,0]),i!=null&&n.clipExtent(null),Ji(e,n.stream(Cs)),t(Cs.result()),i!=null&&n.clipExtent(i),n}function rl(n,t,e){return il(n,function(i){var r=t[1][0]-t[0][0],o=t[1][1]-t[0][1],s=Math.min(r/(i[1][0]-i[0][0]),o/(i[1][1]-i[0][1])),a=+t[0][0]+(r-s*(i[1][0]+i[0][0]))/2,l=+t[0][1]+(o-s*(i[1][1]+i[0][1]))/2;n.scale(150*s).translate([a,l])},e)}function Zd(n,t,e){return rl(n,[[0,0],t],e)}function Kd(n,t,e){return il(n,function(i){var r=+t,o=r/(i[1][0]-i[0][0]),s=(r-o*(i[1][0]+i[0][0]))/2,a=-o*i[0][1];n.scale(150*o).translate([s,a])},e)}function Jd(n,t,e){return il(n,function(i){var r=+t,o=r/(i[1][1]-i[0][1]),s=-o*i[0][0],a=(r-o*(i[1][1]+i[0][1]))/2;n.scale(150*o).translate([s,a])},e)}var Qd=16,Gk=Rt(30*ee);function tp(n,t){return+t?Xk(n,t):Yk(n)}function Yk(n){return el({point:function(t,e){t=n(t,e),this.stream.point(t[0],t[1])}})}function Xk(n,t){function e(i,r,o,s,a,l,c,h,f,u,d,p,y,g){var m=c-i,x=h-r,v=m*m+x*x;if(v>4*t&&y--){var b=s+u,k=a+d,M=l+p,P=He(b*b+k*k+M*M),$=an(M/=P),_=Xt(Xt(M)-1)<At||Xt(o-f)<At?(o+f)/2:Wn(k,b),L=n(_,$),I=L[0],E=L[1],C=I-i,S=E-r,w=x*C-m*S;(w*w/v>t||Xt((m*C+x*S)/v-.5)>.3||s*u+a*d+l*p<Gk)&&(e(i,r,o,s,a,l,I,E,_,b/=P,k/=P,M,y,g),g.point(I,E),e(I,E,_,b,k,M,c,h,f,u,d,p,y,g))}}return function(i){var r,o,s,a,l,c,h,f,u,d,p,y,g={point:m,lineStart:x,lineEnd:b,polygonStart:function(){i.polygonStart(),g.lineStart=k},polygonEnd:function(){i.polygonEnd(),g.lineStart=x}};function m($,_){$=n($,_),i.point($[0],$[1])}function x(){f=NaN,g.point=v,i.lineStart()}function v($,_){var L=Qi([$,_]),I=n($,_);e(f,u,h,d,p,y,f=I[0],u=I[1],h=$,d=L[0],p=L[1],y=L[2],Qd,i),i.point(f,u)}function b(){g.point=m,i.lineEnd()}function k(){x(),g.point=M,g.lineEnd=P}function M($,_){v(r=$,_),o=f,s=u,a=d,l=p,c=y,g.point=v}function P(){e(f,u,h,d,p,y,o,s,r,a,l,c,Qd,i),g.lineEnd=b,b()}return g}}var Uk=el({point:function(n,t){this.stream.point(n*ee,t*ee)}});function jk(n){return el({point:function(t,e){var i=n(t,e);return this.stream.point(i[0],i[1])}})}function qk(n,t,e,i,r){function o(s,a){return s*=i,a*=r,[t+n*s,e-n*a]}return o.invert=function(s,a){return[(s-t)/n*i,(e-a)/n*r]},o}function ep(n,t,e,i,r,o){if(!o)return qk(n,t,e,i,r);var s=Rt(o),a=Tt(o),l=s*n,c=a*n,h=s/n,f=a/n,u=(a*e-s*t)/n,d=(a*t+s*e)/n;function p(y,g){return y*=i,g*=r,[l*y-c*g+t,e-c*y-l*g]}return p.invert=function(y,g){return[i*(h*y-f*g+u),r*(d-f*y-h*g)]},p}function An(n){return np(function(){return n})()}function np(n){var t,e=150,i=480,r=250,o=0,s=0,a=0,l=0,c=0,h,f=0,u=1,d=1,p=null,y=Td,g=null,m,x,v,b=Gc,k=.5,M,P,$,_,L;function I(w){return $(w[0]*ee,w[1]*ee)}function E(w){return w=$.invert(w[0],w[1]),w&&[w[0]*Fe,w[1]*Fe]}I.stream=function(w){return _&&L===w?_:_=Uk(jk(h)(y(M(b(L=w)))))},I.preclip=function(w){return arguments.length?(y=w,p=void 0,S()):y},I.postclip=function(w){return arguments.length?(b=w,g=m=x=v=null,S()):b},I.clipAngle=function(w){return arguments.length?(y=+w?Pk(p=w*ee):(p=null,Td),S()):p*Fe},I.clipExtent=function(w){return arguments.length?(b=w==null?(g=m=x=v=null,Gc):Tk(g=+w[0][0],m=+w[0][1],x=+w[1][0],v=+w[1][1]),S()):g==null?null:[[g,m],[x,v]]},I.scale=function(w){return arguments.length?(e=+w,C()):e},I.translate=function(w){return arguments.length?(i=+w[0],r=+w[1],C()):[i,r]},I.center=function(w){return arguments.length?(o=w[0]%360*ee,s=w[1]%360*ee,C()):[o*Fe,s*Fe]},I.rotate=function(w){return arguments.length?(a=w[0]%360*ee,l=w[1]%360*ee,c=w.length>2?w[2]%360*ee:0,C()):[a*Fe,l*Fe,c*Fe]},I.angle=function(w){return arguments.length?(f=w%360*ee,C()):f*Fe},I.reflectX=function(w){return arguments.length?(u=w?-1:1,C()):u<0},I.reflectY=function(w){return arguments.length?(d=w?-1:1,C()):d<0},I.precision=function(w){return arguments.length?(M=tp(P,k=w*w),S()):He(k)},I.fitExtent=function(w,A){return rl(I,w,A)},I.fitSize=function(w,A){return Zd(I,w,A)},I.fitWidth=function(w,A){return Kd(I,w,A)},I.fitHeight=function(w,A){return Jd(I,w,A)};function C(){var w=ep(e,0,0,u,d,f).apply(null,t(o,s)),A=ep(e,i-w[0],r-w[1],u,d,f);return h=wd(a,l,c),P=Wc(t,A),$=Wc(h,P),M=tp(P,k),S()}function S(){return _=L=null,I}return function(){return t=n.apply(this,arguments),I.invert=t.invert&&E,C()}}function ol(n){var t=0,e=Bt/3,i=np(n),r=i(t,e);return r.parallels=function(o){return arguments.length?i(t=o[0]*ee,e=o[1]*ee):[t*Fe,e*Fe]},r}function Zk(n){var t=Rt(n);function e(i,r){return[i*t,Tt(r)/t]}return e.invert=function(i,r){return[i/t,an(r*t)]},e}function Kk(n,t){var e=Tt(n),i=(e+Tt(t))/2;if(Xt(i)<At)return Zk(n);var r=1+e*(2*i-e),o=He(r)/i;function s(a,l){var c=He(r-2*i*Tt(l))/i;return[c*Tt(a*=i),o-c*Rt(a)]}return s.invert=function(a,l){var c=o-l,h=Wn(a,Xt(c))*sn(c);return c*i<0&&(h-=Bt*sn(a)*sn(c)),[h/i,an((r-(a*a+c*c)*i*i)/(2*i))]},s}function $s(){return ol(Kk).scale(155.424).center([0,33.6442])}function ip(){return $s().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function Jk(n){var t=n.length;return{point:function(e,i){for(var r=-1;++r<t;)n[r].point(e,i)},sphere:function(){for(var e=-1;++e<t;)n[e].sphere()},lineStart:function(){for(var e=-1;++e<t;)n[e].lineStart()},lineEnd:function(){for(var e=-1;++e<t;)n[e].lineEnd()},polygonStart:function(){for(var e=-1;++e<t;)n[e].polygonStart()},polygonEnd:function(){for(var e=-1;++e<t;)n[e].polygonEnd()}}}function Qk(){var n,t,e=ip(),i,r=$s().rotate([154,0]).center([-2,58.5]).parallels([55,65]),o,s=$s().rotate([157,0]).center([-3,19.9]).parallels([8,18]),a,l,c={point:function(u,d){l=[u,d]}};function h(u){var d=u[0],p=u[1];return l=null,i.point(d,p),l||(o.point(d,p),l)||(a.point(d,p),l)}h.invert=function(u){var d=e.scale(),p=e.translate(),y=(u[0]-p[0])/d,g=(u[1]-p[1])/d;return(g>=.12&&g<.234&&y>=-.425&&y<-.214?r:g>=.166&&g<.234&&y>=-.214&&y<-.115?s:e).invert(u)},h.stream=function(u){return n&&t===u?n:n=Jk([e.stream(t=u),r.stream(u),s.stream(u)])},h.precision=function(u){return arguments.length?(e.precision(u),r.precision(u),s.precision(u),f()):e.precision()},h.scale=function(u){return arguments.length?(e.scale(u),r.scale(u*.35),s.scale(u),h.translate(e.translate())):e.scale()},h.translate=function(u){if(!arguments.length)return e.translate();var d=e.scale(),p=+u[0],y=+u[1];return i=e.translate(u).clipExtent([[p-.455*d,y-.238*d],[p+.455*d,y+.238*d]]).stream(c),o=r.translate([p-.307*d,y+.201*d]).clipExtent([[p-.425*d+At,y+.12*d+At],[p-.214*d-At,y+.234*d-At]]).stream(c),a=s.translate([p-.205*d,y+.212*d]).clipExtent([[p-.214*d+At,y+.166*d+At],[p-.115*d-At,y+.234*d-At]]).stream(c),f()},h.fitExtent=function(u,d){return rl(h,u,d)},h.fitSize=function(u,d){return Zd(h,u,d)},h.fitWidth=function(u,d){return Kd(h,u,d)},h.fitHeight=function(u,d){return Jd(h,u,d)};function f(){return n=t=null,h}return h.scale(1070)}function rp(n){return function(t,e){var i=Rt(t),r=Rt(e),o=n(i*r);return o===1/0?[2,0]:[o*r*Tt(t),o*Tt(e)]}}function Wr(n){return function(t,e){var i=He(t*t+e*e),r=n(i),o=Tt(r),s=Rt(r);return[Wn(t*o,i*s),an(i&&e*o/i)]}}var op=rp(function(n){return He(2/(1+n))});op.invert=Wr(function(n){return 2*an(n/2)});function tM(){return An(op).scale(124.75).clipAngle(180-.001)}var sp=rp(function(n){return(n=yd(n))&&n/Tt(n)});sp.invert=Wr(function(n){return n});function eM(){return An(sp).scale(79.4188).clipAngle(180-.001)}function Ls(n,t){return[n,ys(Rc((te+t)/2))]}Ls.invert=function(n,t){return[n,2*Ki(md(t))-te]};function ap(){return cp(Ls).scale(961/qe)}function cp(n){var t=An(n),e=t.center,i=t.scale,r=t.translate,o=t.clipExtent,s=null,a,l,c;t.scale=function(f){return arguments.length?(i(f),h()):i()},t.translate=function(f){return arguments.length?(r(f),h()):r()},t.center=function(f){return arguments.length?(e(f),h()):e()},t.clipExtent=function(f){return arguments.length?(f==null?s=a=l=c=null:(s=+f[0][0],a=+f[0][1],l=+f[1][0],c=+f[1][1]),h()):s==null?null:[[s,a],[l,c]]};function h(){var f=Bt*i(),u=t(vk(t.rotate()).invert([0,0]));return o(s==null?[[u[0]-f,u[1]-f],[u[0]+f,u[1]+f]]:n===Ls?[[Math.max(u[0]-f,s),a],[Math.min(u[0]+f,l),c]]:[[s,Math.max(u[1]-f,a)],[l,Math.min(u[1]+f,c)]])}return h()}function Is(n){return Rc((te+n)/2)}function nM(n,t){var e=Rt(n),i=n===t?Tt(n):ys(e/Rt(t))/ys(Is(t)/Is(n)),r=e*Dc(Is(n),i)/i;if(!i)return Ls;function o(s,a){r>0?a<-te+At&&(a=-te+At):a>te-At&&(a=te-At);var l=r/Dc(Is(a),i);return[l*Tt(i*s),r-l*Rt(i*s)]}return o.invert=function(s,a){var l=r-a,c=sn(i)*He(s*s+l*l),h=Wn(s,Xt(l))*sn(l);return l*i<0&&(h-=Bt*sn(s)*sn(l)),[h/i,2*Ki(Dc(r/c,1/i))-te]},o}function iM(){return ol(nM).scale(109.5).parallels([30,30])}function Fs(n,t){return[n,t]}Fs.invert=Fs;function rM(){return An(Fs).scale(152.63)}function oM(n,t){var e=Rt(n),i=n===t?Tt(n):(e-Rt(t))/(t-n),r=e/i+n;if(Xt(i)<At)return Fs;function o(s,a){var l=r-a,c=i*s;return[l*Tt(c),r-l*Rt(c)]}return o.invert=function(s,a){var l=r-a,c=Wn(s,Xt(l))*sn(l);return l*i<0&&(c-=Bt*sn(s)*sn(l)),[c/i,r-sn(i)*He(s*s+l*l)]},o}function sM(){return ol(oM).scale(131.154).center([0,13.9389])}var Hr=1.340264,Vr=-.081106,Gr=893e-6,Yr=.003796,Ds=He(3)/2,aM=12;function lp(n,t){var e=an(Ds*Tt(t)),i=e*e,r=i*i*i;return[n*Rt(e)/(Ds*(Hr+3*Vr*i+r*(7*Gr+9*Yr*i))),e*(Hr+Vr*i+r*(Gr+Yr*i))]}lp.invert=function(n,t){for(var e=t,i=e*e,r=i*i*i,o=0,s,a,l;o<aM&&(a=e*(Hr+Vr*i+r*(Gr+Yr*i))-t,l=Hr+3*Vr*i+r*(7*Gr+9*Yr*i),e-=s=a/l,i=e*e,r=i*i*i,!(Xt(s)<pd));++o);return[Ds*n*(Hr+3*Vr*i+r*(7*Gr+9*Yr*i))/Rt(e),an(Tt(e)/Ds)]};function hp(){return An(lp).scale(177.158)}function up(n,t){var e=Rt(t),i=Rt(n)*e;return[e*Tt(n)/i,Tt(t)/i]}up.invert=Wr(Ki);function cM(){return An(up).scale(144.049).clipAngle(60)}function fp(n,t){var e=t*t,i=e*e;return[n*(.8707-.131979*e+i*(-.013791+i*(.003971*e-.001529*i))),t*(1.007226+e*(.015085+i*(-.044475+.028874*e-.005916*i)))]}fp.invert=function(n,t){var e=t,i=25,r;do{var o=e*e,s=o*o;e-=r=(e*(1.007226+o*(.015085+s*(-.044475+.028874*o-.005916*s)))-t)/(1.007226+o*(.015085*3+s*(-.044475*7+.028874*9*o-.005916*11*s)))}while(Xt(r)>At&&--i>0);return[n/(.8707+(o=e*e)*(-.131979+o*(-.013791+o*o*o*(.003971-.001529*o)))),e]};function sl(){return An(fp).scale(175.295)}function dp(n,t){return[Rt(t)*Tt(n),Tt(t)]}dp.invert=Wr(an);function pp(){return An(dp).scale(249.5).clipAngle(90+At)}function gp(n,t){var e=Rt(t),i=1+Rt(n)*e;return[e*Tt(n)/i,Tt(t)/i]}gp.invert=Wr(function(n){return 2*Ki(n)});function lM(){return An(gp).scale(250).clipAngle(142)}function mp(n,t){return[ys(Rc((te+t)/2)),-n]}mp.invert=function(n,t){return[-t,2*Ki(md(n))-te]};function hM(){var n=cp(mp),t=n.center,e=n.rotate;return n.center=function(i){return arguments.length?t([-i[1],i[0]]):(i=t(),[i[1],-i[0]])},n.rotate=function(i){return arguments.length?e([i[0],i[1],i.length>2?i[2]+90:90]):(i=e(),[i[0],i[1],i[2]-90])},e([0,0,90]).scale(159.155)}function uM(n){return n}function fM(n){if(n==null)return uM;var t,e,i=n.scale[0],r=n.scale[1],o=n.translate[0],s=n.translate[1];return function(a,l){l||(t=e=0);var c=2,h=a.length,f=new Array(h);for(f[0]=(t+=a[0])*i+o,f[1]=(e+=a[1])*r+s;c<h;)f[c]=a[c],++c;return f}}function dM(n,t){for(var e,i=n.length,r=i-t;r<--i;)e=n[r],n[r++]=n[i],n[i]=e}function pM(n,t){return typeof t=="string"&&(t=n.objects[t]),t.type==="GeometryCollection"?{type:"FeatureCollection",features:t.geometries.map(function(e){return yp(n,e)})}:yp(n,t)}function yp(n,t){var e=t.id,i=t.bbox,r=t.properties==null?{}:t.properties,o=gM(n,t);return e==null&&i==null?{type:"Feature",properties:r,geometry:o}:i==null?{type:"Feature",id:e,properties:r,geometry:o}:{type:"Feature",id:e,bbox:i,properties:r,geometry:o}}function gM(n,t){var e=fM(n.transform),i=n.arcs;function r(h,f){f.length&&f.pop();for(var u=i[h<0?~h:h],d=0,p=u.length;d<p;++d)f.push(e(u[d],d));h<0&&dM(f,p)}function o(h){return e(h)}function s(h){for(var f=[],u=0,d=h.length;u<d;++u)r(h[u],f);return f.length<2&&f.push(f[0]),f}function a(h){for(var f=s(h);f.length<4;)f.push(f[0]);return f}function l(h){return h.map(a)}function c(h){var f=h.type,u;switch(f){case"GeometryCollection":return{type:f,geometries:h.geometries.map(c)};case"Point":u=o(h.coordinates);break;case"MultiPoint":u=h.coordinates.map(o);break;case"LineString":u=s(h.arcs);break;case"MultiLineString":u=h.arcs.map(s);break;case"Polygon":u=l(h.arcs);break;case"MultiPolygon":u=h.arcs.map(l);break;default:return null}return{type:f,coordinates:u}}return c(t)}const xp=(n,t)=>[n,1.25*Math.log(Math.tan(Math.PI/4+.4*t))];xp.invert=(n,t)=>[n,2.5*Math.atan(Math.exp(.8*t))-.625*Math.PI];const mM={naturalEarth:sl,naturalEarth1:sl,mercator:ap,orthographic:pp,albers:ip,albersUsa:Qk,equirectangular:rM,equalEarth:hp,conicEqualArea:$s,conicEquidistant:sM,stereographic:lM,transverseMercator:hM,azimuthalEqualArea:tM,azimuthalEquidistant:eM,gnomonic:cM,Orthographic:pp,WebMercator:ap,EqualEarth:hp,LambertConformalConic:iM,Miller:()=>An(xp).scale(108.318)};function yM(n,t){if(n&&n.type==="Topology"&&n.objects){const e=t||(n.objects.countries?"countries":Object.keys(n.objects)[0]),i=pM(n,n.objects[e]);return i.features||[i]}return n.features||n}function al(n,t){var e;return String(n).toLowerCase()==="orthographic"||!!((e=t==null?void 0:t.options3d)!=null&&e.enabled)}function cl(n,t,e,i){var f,u,d;const r=yM(n,i),o={type:"FeatureCollection",features:r},s=(t==null?void 0:t.name)||t||"naturalEarth",l=(mM[s]||sl)(),c=typeof t=="object"?t:{};c.rotation&&((f=l.rotate)==null||f.call(l,c.rotation)),c.center&&((u=l.center)==null||u.call(l,c.center)),c.scale&&((d=l.scale)==null||d.call(l,c.scale)),c.parallels&&l.parallels&&l.parallels(c.parallels),c.scale||l.fitSize([e.width,e.height],o);const h=Vk().projection(l);return{projection:l,pathGen:h,features:r,projName:String(s)}}function ll(n,t){const e=t.width/2,i=t.height/2,r=Math.min(t.width,t.height)/2-10;return n.translate([e,i]).scale(r).clipAngle(90),r}function hl(n){var t;return n?Array.isArray(n)&&n.length>=2&&typeof n[0]=="number"?[n[0],n[1]]:n.lon!=null&&n.lat!=null?[n.lon,n.lat]:(t=n.geometry)!=null&&t.coordinates&&Array.isArray(n.geometry.coordinates)?[n.geometry.coordinates[0],n.geometry.coordinates[1]]:typeof n.x=="number"&&typeof n.y=="number"?[n.x,n.y]:null:null}const xM={blues:nd,reds:uw,greens:ow,oranges:dw,purples:lw,greys:aw,ylOrRd:ed,ylGnBu:ew,rdYlGn:Q2,viridis:pw,plasma:mw,inferno:gw};class bM extends Ut{constructor(t){super(t),this.zoomBehavior=null,this.mapGroup=null,this.featurePaths=null,this.dataMap=new Map,this.globeProjection=null,this.globePathGen=null,this.autoRotateTimer=null}destroy(){this.autoRotateTimer&&(this.autoRotateTimer.stop(),this.autoRotateTimer=null),super.destroy()}render(){var L;const{plotArea:t}=this.context,e=this.config,i=e.mapData;if(!i){this.group.append("text").attr("x",t.width/2).attr("y",t.height/2).attr("text-anchor","middle").attr("fill","#999").text("Map data not provided");return}const{projection:r,pathGen:o,features:s,projName:a}=cl(i,e.projection,t,e.mapDataObject);this.dataMap.clear();const l=e.joinBy||["hc-key","code"],c=Array.isArray(l)?l:[l,l],h=c[0],f=c.length>1?c[1]:c[0];for(const I of this.data){const E=I[f]||I.code||I["hc-key"]||I.name;E&&this.dataMap.set(String(E),I)}const u=e.colorAxis||{},d=this.data.map(I=>I.y??I.value??0).filter(I=>I!=null),p=u.min??(d.length?Math.min(...d):0),y=u.max??(d.length?Math.max(...d):1);if(Array.isArray(u.stops)&&u.stops.length>=2){const I=y-p||1,E=u.stops.map(w=>p+w[0]*I),C=u.stops.map(w=>w[1]),S=ke().domain(E).range(C).clamp(!0);this.colorScale=w=>S(w)}else if(u.minColor&&u.maxColor){const I=mi(u.minColor,u.maxColor),E=this.makeAxisNorm(u,p,y);this.colorScale=C=>I(E(C))}else{const I=u.colorScheme||"blues",E=xM[I]||nd,C=this.makeAxisNorm(u,p,y);this.colorScale=S=>E(C(S))}const g=e.nullColor??"#f0f0f0",m=e.allAreas!==!1,x=e.borderColor??"#cccccc",v=e.borderWidth??.5,b=`katucharts-map-clip-${Math.random().toString(36).slice(2,8)}`;this.group.append("defs").append("clipPath").attr("id",b).append("rect").attr("width",t.width).attr("height",t.height);const M=this.group.append("g").attr("clip-path",`url(#${b})`).attr("class","katucharts-map-clip");this.mapGroup=M.append("g").attr("class","katucharts-map-container katucharts-mapzoom");const P=m?s:s.filter(I=>{const E=this.getFeatureKey(I,h);return this.dataMap.has(E)}),$=this.context.animate;this.featurePaths=this.mapGroup.selectAll(".katucharts-map-feature").data(P).join("path").attr("class","katucharts-map-feature").attr("d",o).attr("stroke",x).attr("stroke-width",v).attr("stroke-linejoin","round").style("cursor","pointer"),$?this.featurePaths.attr("fill",g).attr("fill-opacity",0).transition().duration(vt).ease(pt).attr("fill-opacity",1).attr("fill",I=>this.getFeatureColor(I,h,g)):this.featurePaths.attr("fill",I=>this.getFeatureColor(I,h,g)),this.attachMapHover(h,x,v,g),this.renderMapLabels(o,P,h),u.enabled!==!1&&d.length>0&&this.renderColorAxis(p,y,u),al(a,e)?this.setupGlobeMode(r,o,s,h,g,x,v,e):((L=e.mapNavigation)==null?void 0:L.enabled)!==!1&&this.setupMapNavigation(r,o)}makeAxisNorm(t,e,i){if(t.type==="logarithmic"&&e>0&&i>0){const o=To().domain([e,i]).clamp(!0);return s=>o(Math.max(s,e))}const r=ke().domain([e,i]).clamp(!0);return o=>r(o)}getFeatureKey(t,e){var i,r,o;return String(((i=t.properties)==null?void 0:i[e])||((r=t.properties)==null?void 0:r["hc-key"])||((o=t.properties)==null?void 0:o.name)||t.id||"")}getFeatureColor(t,e,i){const r=this.getFeatureKey(t,e),o=this.dataMap.get(r);if(o){if(o.color)return o.color;const s=o.y??o.value;if(s!=null)return this.colorScale(s)}return i}attachMapHover(t,e,i,r){var h,f,u,d,p,y,g,m;const o=this.config,s=(f=(h=o.states)==null?void 0:h.hover)==null?void 0:f.color,a=((d=(u=o.states)==null?void 0:u.hover)==null?void 0:d.borderColor)??"#333333",l=((y=(p=o.states)==null?void 0:p.hover)==null?void 0:y.borderWidth)??1.5,c=((m=(g=o.states)==null?void 0:g.hover)==null?void 0:m.brightness)??.2;this.featurePaths.on("mouseover",(x,v)=>{var I,E,C;const b=st(x.currentTarget),k=this.getFeatureKey(v,t),M=this.dataMap.get(k),P=b.attr("fill");if(s)b.transition("hover").duration(Z).ease(j).attr("fill",s);else{const S=((E=(I=se(P))==null?void 0:I.brighter(c))==null?void 0:E.toString())||P;b.transition("hover").duration(Z).ease(j).attr("fill",S)}b.attr("stroke",a).attr("stroke-width",l),b.raise(),this.featurePaths.interrupt("highlight"),this.featurePaths.filter(S=>S!==v).transition("highlight").duration(Z).ease(j).attr("opacity",.7);const $=((C=v.properties)==null?void 0:C.name)||k,_=M?{name:M.name??$,y:M.y??M.value,...M}:{name:$},L=x.currentTarget.getBBox();this.context.events.emit("point:mouseover",{point:_,index:0,series:this,event:x,plotX:L.x+L.width/2,plotY:L.y+L.height/2})}).on("mouseout",(x,v)=>{var $;const b=st(x.currentTarget),k=this.getFeatureColor(v,t,r);b.transition("hover").duration(Z).ease(j).attr("fill",k),b.attr("stroke",e).attr("stroke-width",i),this.featurePaths.interrupt("highlight"),this.featurePaths.transition("highlight").duration(Z).ease(j).attr("opacity",1);const M=this.getFeatureKey(v,t),P=this.dataMap.get(M)||{name:(($=v.properties)==null?void 0:$.name)||M};this.context.events.emit("point:mouseout",{point:P,index:0,series:this,event:x})}).on("click",(x,v)=>{var M;const b=this.getFeatureKey(v,t),k=this.dataMap.get(b)||{name:((M=v.properties)==null?void 0:M.name)||b};this.context.events.emit("point:click",{point:k,index:0,series:this,event:x})})}renderMapLabels(t,e,i){var c,h,f;const r=this.config.dataLabels||this.config.dataLabels;if(!(r!=null&&r.enabled))return;const o=((c=r.style)==null?void 0:c.fontSize)||kt,s=this.autoLabelColor(r.color||((h=r.style)==null?void 0:h.color)),a=this.labelHalo(),l=((f=r.filter)==null?void 0:f.property)==="hasData";this.mapGroup.selectAll(".katucharts-map-label").data(e).join("text").attr("class","katucharts-map-label").attr("transform",u=>{const d=t.centroid(u);return isFinite(d[0])?`translate(${d[0]},${d[1]})`:"translate(-9999,-9999)"}).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",o).attr("fill",s).style("pointer-events","none").style("text-shadow",a).text(u=>{var y,g,m,x,v;const d=this.getFeatureKey(u,i),p=this.dataMap.get(d);return l&&!p?"":r.formatter?r.formatter.call({point:p||{name:(y=u.properties)==null?void 0:y.name},series:{name:this.config.name},x:(g=u.properties)==null?void 0:g.name,y:(p==null?void 0:p.y)??(p==null?void 0:p.value)}):r.format?de(Kt(r.format,{point:p||{name:(m=u.properties)==null?void 0:m.name},series:{name:this.config.name},x:(x=u.properties)==null?void 0:x.name,y:(p==null?void 0:p.y)??(p==null?void 0:p.value)})):(p==null?void 0:p.name)||((v=u.properties)==null?void 0:v.name)||""})}renderColorAxis(t,e,i){const{plotArea:r}=this.context,o=i.layout==="horizontal"?"bottom":"right",s=i.labels||{},a=i.title;o==="bottom"?this.renderHorizontalColorAxis(t,e,i,s,a):this.renderVerticalColorAxis(t,e,i,s,a)}renderVerticalColorAxis(t,e,i,r,o){var k,M;const{plotArea:s}=this.context,a=i.width??12,l=i.height??s.height*.5,c=s.width+15,h=(s.height-l)/2,f=60,u=this.group.append("g").attr("class","katucharts-map-color-axis"),d=u.append("defs"),p=`katucharts-map-grad-${Math.random().toString(36).slice(2,8)}`,y=d.append("linearGradient").attr("id",p).attr("x1","0%").attr("y1","100%").attr("x2","0%").attr("y2","0%");for(let P=0;P<=f;P++){const $=P/f,_=t+$*(e-t);y.append("stop").attr("offset",`${$*100}%`).attr("stop-color",this.colorScale(_))}u.append("rect").attr("x",c).attr("y",h).attr("width",a).attr("height",l).attr("fill",`url(#${p})`).attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",2);const g=((k=r.style)==null?void 0:k.fontSize)||kt,m=this.autoLabelColor((M=r.style)==null?void 0:M.color),x=r.formatter,v=P=>x?x.call({value:P}):String(Math.round(P));u.append("text").attr("x",c+a+4).attr("y",h+l).attr("font-size",g).attr("fill",m).attr("dominant-baseline","auto").text(v(t)),u.append("text").attr("x",c+a+4).attr("y",h).attr("font-size",g).attr("fill",m).attr("dominant-baseline","hanging").text(v(e));const b=(t+e)/2;u.append("text").attr("x",c+a+4).attr("y",h+l/2).attr("font-size",g).attr("fill",m).attr("dominant-baseline","middle").text(v(b)),o!=null&&o.text&&u.append("text").attr("x",c+a/2).attr("y",h-8).attr("text-anchor","middle").attr("font-size","10px").attr("fill",this.autoLabelColor()).text(o.text)}renderHorizontalColorAxis(t,e,i,r,o){var b,k;const{plotArea:s}=this.context,a=i.width??s.width*.5,l=i.height??12,c=(s.width-a)/2,h=s.height+25,f=60,u=this.group.append("g").attr("class","katucharts-map-color-axis"),d=u.append("defs"),p=`katucharts-map-grad-${Math.random().toString(36).slice(2,8)}`,y=d.append("linearGradient").attr("id",p).attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");for(let M=0;M<=f;M++){const P=M/f,$=t+P*(e-t);y.append("stop").attr("offset",`${P*100}%`).attr("stop-color",this.colorScale($))}u.append("rect").attr("x",c).attr("y",h).attr("width",a).attr("height",l).attr("fill",`url(#${p})`).attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",2);const g=((b=r.style)==null?void 0:b.fontSize)||kt,m=this.autoLabelColor((k=r.style)==null?void 0:k.color),x=r.formatter,v=M=>x?x.call({value:M}):String(Math.round(M));u.append("text").attr("x",c).attr("y",h+l+12).attr("text-anchor","start").attr("font-size",g).attr("fill",m).text(v(t)),u.append("text").attr("x",c+a).attr("y",h+l+12).attr("text-anchor","end").attr("font-size",g).attr("fill",m).text(v(e)),o!=null&&o.text&&u.append("text").attr("x",c+a/2).attr("y",h-6).attr("text-anchor","middle").attr("font-size","10px").attr("fill",this.autoLabelColor()).text(o.text)}setupMapNavigation(t,e){const{plotArea:i}=this.context,r=this.config.mapNavigation||{},o=r.enableButtons!==!1,s=r.enableMouseWheelZoom!==!1,a=r.enableDoubleClickZoom!==!1,l=r.enableDrag!==!1,c=r.maxZoom??16,h=i.width/2,f=i.height/2;this.zoomBehavior=yf().scaleExtent([1,c]).on("zoom",p=>{this.context.chartGroup.selectAll(".katucharts-mapzoom").attr("transform",p.transform)});const u=this.group.select(".katucharts-map-clip"),d=u.empty()?this.group:u;d.insert("rect",":first-child").attr("width",i.width).attr("height",i.height).attr("fill","none").style("pointer-events","all"),(s||a||l)&&(d.call(this.zoomBehavior),s||d.on("wheel.zoom",null),a||d.on("dblclick.zoom",null),l||(d.on("mousedown.zoom",null),d.on("touchstart.zoom",null))),o&&this.renderNavButtons(d,h,f)}renderNavButtons(t,e,i){var P,$;const{plotArea:r}=this.context,o=this.config.mapNavigation||{},s=o.buttonOptions||{},a=s.theme||{},l=o.buttons||{},c=24,h=4,f=10,u=c*2+h,d=s.align||"left",p=s.verticalAlign||"top",y=(d==="right"?r.width-c-f:f)+(s.x??0),g=(p==="bottom"?r.height-u-f:f)+(s.y??0),m=a.fill||"#ffffff",x=a.stroke||"#e0e0e0",v=a.style&&a.style.color||s.symbolStroke||"#3f3f46",b=this.group.append("g").attr("class","katucharts-map-nav"),k=[e,i],M=(_,L,I)=>{const E=b.append("g").style("cursor","pointer").on("click",I);return E.append("rect").attr("x",y).attr("y",_).attr("width",c).attr("height",c).attr("fill",m).attr("stroke",x).attr("stroke-width",1).attr("rx",4),E.append("text").attr("x",y+c/2).attr("y",_+c/2+1).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size","17px").attr("fill",v).style("user-select","none").text(L),E.on("mouseover",function(){st(this).select("rect").attr("fill","#f5f5f5")}).on("mouseout",function(){st(this).select("rect").attr("fill",m)}),E};M(g,((P=l.zoomIn)==null?void 0:P.text)||"+",()=>{t.transition().duration(300).call(this.zoomBehavior.scaleBy,1.5,k)}),M(g+c+h,(($=l.zoomOut)==null?void 0:$.text)||"−",()=>{t.transition().duration(300).call(this.zoomBehavior.scaleBy,1/1.5,k)})}setupGlobeMode(t,e,i,r,o,s,a,l){const{plotArea:c}=this.context,h=c.width/2,f=c.height/2;this.globeProjection=t,this.globePathGen=e;const u=ll(t,c),d=l.options3d||{},p=d.oceanColor??"#d4f1f9",y=d.atmosphereColor??"rgba(100,180,255,0.15)",g=d.graticule!==!1,m=d.graticuleColor??"#ccc",x=d.graticuleOpacity??.4,v=d.autoRotate!==!1,b=d.rotateSpeed??.3,k=d.shadow!==!1,M=this.mapGroup.append("defs"),P=`katucharts-globe-glow-${Math.random().toString(36).slice(2,8)}`,$=M.append("radialGradient").attr("id",P);if($.append("stop").attr("offset","70%").attr("stop-color",y),$.append("stop").attr("offset","100%").attr("stop-color","rgba(100,180,255,0)"),this.mapGroup.insert("circle",":first-child").attr("cx",h).attr("cy",f).attr("r",u+15).attr("fill",`url(#${P})`).attr("class","katucharts-globe-atmosphere"),k&&this.mapGroup.insert("ellipse",":first-child").attr("cx",h+8).attr("cy",f+u+18).attr("rx",u*.6).attr("ry",8).attr("fill","rgba(0,0,0,0.12)").attr("class","katucharts-globe-shadow"),this.mapGroup.insert("circle",".katucharts-map-feature").attr("cx",h).attr("cy",f).attr("r",u).attr("fill",p).attr("stroke","#999").attr("stroke-width",.5).attr("class","katucharts-globe-ocean"),g){const w=$k().step([15,15]);this.mapGroup.insert("path",".katucharts-map-feature").datum(w()).attr("d",e).attr("fill","none").attr("stroke",m).attr("stroke-width",.3).attr("stroke-opacity",x).attr("class","katucharts-globe-graticule")}this.featurePaths.attr("d",e);const _=`katucharts-globe-spec-${Math.random().toString(36).slice(2,8)}`,L=M.append("radialGradient").attr("id",_).attr("cx","35%").attr("cy","25%");L.append("stop").attr("offset","0%").attr("stop-color","rgba(255,255,255,0.35)"),L.append("stop").attr("offset","50%").attr("stop-color","rgba(255,255,255,0.05)"),L.append("stop").attr("offset","100%").attr("stop-color","rgba(255,255,255,0)"),this.mapGroup.append("circle").attr("cx",h).attr("cy",f).attr("r",u).attr("fill",`url(#${_})`).style("pointer-events","none").attr("class","katucharts-globe-specular");const I=this;let E=null,C=v;const S=gf().on("start",w=>{const A=t.rotate();E=[A[0],A[1],w.x],I.autoRotateTimer&&(C=!0,I.autoRotateTimer.stop(),I.autoRotateTimer=null)}).on("drag",w=>{if(!E)return;const A=.4,T=(w.x-E[2])*A,F=E[0]+T,D=Math.max(-90,Math.min(90,E[1]-(w.y-w.subject.y)*A));t.rotate([F,D]),I.redrawGlobe()}).on("end",()=>{E=null,C&&v&&I.startAutoRotate(t,b)});this.group.call(S),this.group.style("cursor","grab"),this.group.on("wheel",w=>{w.preventDefault();const A=t.scale(),T=w.deltaY>0?.95:1.05,F=Math.max(u*.5,Math.min(u*8,A*T));t.scale(F),I.redrawGlobe()}),v&&this.startAutoRotate(t,b)}startAutoRotate(t,e){const i=this;this.autoRotateTimer&&(this.autoRotateTimer.stop(),this.autoRotateTimer=null);let r=0;this.autoRotateTimer=Uo(o=>{const s=r?Math.min(o-r,64):16;r=o;const a=t.rotate();t.rotate([a[0]+e*(s/16),a[1]]),i.redrawGlobe()})}redrawGlobe(){if(!this.globePathGen||!this.featurePaths||!this.globeProjection)return;const t=this.globeProjection,[e,i]=t.translate(),r=t.scale();this.featurePaths.attr("d",this.globePathGen),this.mapGroup.selectAll(".katucharts-globe-graticule").attr("d",this.globePathGen),this.mapGroup.select(".katucharts-globe-ocean").attr("cx",e).attr("cy",i).attr("r",r),this.mapGroup.select(".katucharts-globe-atmosphere").attr("cx",e).attr("cy",i).attr("r",r+15),this.mapGroup.select(".katucharts-globe-specular").attr("cx",e).attr("cy",i).attr("r",r),this.mapGroup.select(".katucharts-globe-shadow").attr("cx",e+8).attr("cy",i+r+18).attr("rx",r*.6),this.mapGroup.selectAll(".katucharts-map-label").attr("transform",o=>{const s=this.globePathGen.centroid(o);return isFinite(s[0])?`translate(${s[0]},${s[1]})`:"translate(-9999,-9999)"}).attr("display",o=>{const s=this.globePathGen.centroid(o);return isFinite(s[0])?null:"none"})}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class vM extends Ut{constructor(t){super(t)}resolveMapData(){const t=this.config;if(t.mapData)return t.mapData;for(const e of this.context.allSeries||[]){const i=e.config;if(e!==this&&(i!=null&&i.mapData))return i.mapData}return null}render(){var v,b,k;const t=this.config,{plotArea:e}=this.context,i=this.resolveMapData();if(!i)return;const{projection:r,projName:o}=cl(i,t.projection,e,t.mapDataObject);al(o,t)&&ll(r,e);const s=this.group.append("g").attr("class","katucharts-mapzoom katucharts-mappoint-layer"),a=t.marker||{},l=a.enabled!==!1,c=a.radius??5,h=a.lineColor??"#ffffff",f=a.lineWidth??1,u=t.color||this.getColor(),d=this.context.animate,p=t.dataLabels,y=!!(p!=null&&p.enabled),g=this.autoLabelColor((p==null?void 0:p.color)||((v=p==null?void 0:p.style)==null?void 0:v.color)),m=((b=p==null?void 0:p.style)==null?void 0:b.fontSize)||kt,x=((k=p==null?void 0:p.style)==null?void 0:k.fontWeight)||"600";this.data.forEach((M,P)=>{var w;M.name==null&&M.id!=null&&(M.name=M.id);const $=hl(M);if(!$)return;const _=r($);if(!_||!isFinite(_[0])||!isFinite(_[1]))return;const[L,I]=_,E=M.color||u,C=((w=M.marker)==null?void 0:w.radius)??c,S=s.append("g").attr("class","katucharts-mappoint");if(l){const A=S.append("circle").attr("class","katucharts-mappoint-marker").attr("cx",L).attr("cy",I).attr("fill",E).attr("stroke",h).attr("stroke-width",f).style("cursor",t.cursor||"pointer").attr("r",d?0:C);d&&A.transition().duration(vt).delay(P*12).ease(pt).attr("r",C),A.on("mouseover",T=>{var F,D;st(T.currentTarget).transition("hover").duration(Z).ease(j).attr("r",C*1.4),this.context.events.emit("point:mouseover",{point:M,index:P,series:this,event:T,plotX:L,plotY:I}),(D=(F=M.events)==null?void 0:F.mouseOver)==null||D.call(M,T)}).on("mouseout",T=>{var F,D;st(T.currentTarget).transition("hover").duration(Z).ease(j).attr("r",C),this.context.events.emit("point:mouseout",{point:M,index:P,series:this,event:T}),(D=(F=M.events)==null?void 0:F.mouseOut)==null||D.call(M,T)}).on("click",T=>{var F,D,R,z,B,W,K;this.context.events.emit("point:click",{point:M,index:P,series:this,event:T}),(D=(F=M.events)==null?void 0:F.click)==null||D.call(M,T),(B=(z=(R=t.point)==null?void 0:R.events)==null?void 0:z.click)==null||B.call(M,T),(K=(W=t.events)==null?void 0:W.click)==null||K.call(this,T)})}if(y){const A=this.formatLabel(M,P);A&&s.append("text").attr("class","katucharts-mappoint-label").attr("x",L).attr("y",I-C-3).attr("text-anchor","middle").attr("dominant-baseline","auto").attr("font-size",m).attr("font-weight",x).attr("fill",g).style("pointer-events","none").style("text-shadow",this.labelHalo()).text(A)}})}formatLabel(t,e){const i=this.config.dataLabels,r={point:t,series:{name:this.config.name},x:t.id??t.name,y:t.y??t.value};return i!=null&&i.formatter?i.formatter.call(r):i!=null&&i.format?de(Kt(i.format,r)):t.id||t.name||""}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class wM extends Ut{constructor(t){super(t)}resolveMapData(){const t=this.config;if(t.mapData)return t.mapData;for(const e of this.context.allSeries||[]){const i=e.config;if(e!==this&&(i!=null&&i.mapData))return i.mapData}return null}buildIdMap(){const t=new Map;for(const e of this.context.allSeries||[])if(e!==this)for(const i of e.data){const r=hl(i),o=i.id??i.name;o!=null&&r&&t.set(String(o),r)}return t}resolveEndpoint(t,e){return t==null?null:Array.isArray(t)&&typeof t[0]=="number"?[t[0],t[1]]:typeof t=="object"?hl(t):e.get(String(t))||null}render(){var g;const t=this.config,{plotArea:e}=this.context,i=this.resolveMapData();if(!i)return;const{projection:r,projName:o}=cl(i,t.projection,e,t.mapDataObject);al(o,t)&&ll(r,e);const s=this.buildIdMap(),a=this.group.append("g").attr("class","katucharts-mapzoom katucharts-flowmap-layer"),l=t.color||this.getColor(),c=t.fillOpacity??.5,h=t.curveFactor??.3,f=((g=t.markerEnd)==null?void 0:g.enabled)!==!1,u=this.context.animate,d=this.data.map(m=>m.weight??m.y??m.value??1),p=Math.max(...d,1),y=t.width!=null?t.width<=1?t.width*40:t.width:16;this.data.forEach((m,x)=>{const v=m,b=this.resolveEndpoint(v.from,s),k=this.resolveEndpoint(v.to,s);if(!b||!k)return;v.name==null&&typeof v.from=="string"&&typeof v.to=="string"&&(v.name=`${v.from} → ${v.to}`);const M=r(b),P=r(k);if(!M||!P||!isFinite(M[0])||!isFinite(P[0]))return;const $=v.weight??v.y??v.value??1,_=Math.max(2,y*($/p)),L=v.color||l,{d:I,mid:E,tip:C,tipAngle:S}=this.buildFlowPath(M,P,_,h),w=a.append("path").attr("class","katucharts-flowmap-link").attr("d",I).attr("fill",L).attr("fill-opacity",u?0:c).attr("stroke","none").style("cursor",t.cursor||"pointer");if(u&&w.transition().duration(vt).delay(x*30).ease(pt).attr("fill-opacity",c),f){const A=_*1.1+3,T=a.append("path").attr("class","katucharts-flowmap-arrow").attr("d",this.arrowHead(C,S,A)).attr("fill",L).attr("fill-opacity",u?0:c).style("pointer-events","none");u&&T.transition().duration(vt).delay(x*30).ease(pt).attr("fill-opacity",c)}w.on("mouseover",A=>{var T,F;st(A.currentTarget).transition("hover").duration(Z).ease(j).attr("fill-opacity",Math.min(1,c+.3)),this.context.events.emit("point:mouseover",{point:m,index:x,series:this,event:A,plotX:E[0],plotY:E[1]}),(F=(T=v.events)==null?void 0:T.mouseOver)==null||F.call(m,A)}).on("mouseout",A=>{var T,F;st(A.currentTarget).transition("hover").duration(Z).ease(j).attr("fill-opacity",c),this.context.events.emit("point:mouseout",{point:m,index:x,series:this,event:A}),(F=(T=v.events)==null?void 0:T.mouseOut)==null||F.call(m,A)}).on("click",A=>{var T,F,D,R,z,B,W;this.context.events.emit("point:click",{point:m,index:x,series:this,event:A}),(F=(T=v.events)==null?void 0:T.click)==null||F.call(m,A),(z=(R=(D=t.point)==null?void 0:D.events)==null?void 0:R.click)==null||z.call(m,A),(W=(B=t.events)==null?void 0:B.click)==null||W.call(this,A)})})}buildFlowPath(t,e,i,r){const o=e[0]-t[0],s=e[1]-t[1],a=Math.hypot(o,s)||1,l=-s/a,c=o/a,h=[(t[0]+e[0])/2+l*r*a,(t[1]+e[1])/2+c*r*a],f=24,u=Math.max(.6,i*.12),d=i/2,p=[],y=[];let g=t;for(let k=0;k<=f;k++){const M=k/f,P=1-M,$=P*P*t[0]+2*P*M*h[0]+M*M*e[0],_=P*P*t[1]+2*P*M*h[1]+M*M*e[1],L=$-g[0],I=_-g[1],E=Math.hypot(L,I)||1,C=-I/E,S=L/E,w=u+(d-u)*M;p.push([$+C*w,_+S*w]),y.push([$-C*w,_-S*w]),g=[$,_]}const m=.25*t[0]+.5*h[0]+.25*e[0],x=.25*t[1]+.5*h[1]+.25*e[1],v=Math.atan2(e[1]-h[1],e[0]-h[0]);return{d:"M"+p.map(k=>`${k[0].toFixed(2)},${k[1].toFixed(2)}`).join("L")+"L"+y.reverse().map(k=>`${k[0].toFixed(2)},${k[1].toFixed(2)}`).join("L")+"Z",mid:[m,x],tip:e,tipAngle:v}}arrowHead(t,e,i){const r=e,o=r+Math.PI,s=.5,a=[t[0]+Math.cos(r)*i*.6,t[1]+Math.sin(r)*i*.6],l=[t[0]+Math.cos(o+s)*i,t[1]+Math.sin(o+s)*i],c=[t[0]+Math.cos(o-s)*i,t[1]+Math.sin(o-s)*i];return`M${a[0].toFixed(2)},${a[1].toFixed(2)}L${l[0].toFixed(2)},${l[1].toFixed(2)}L${c[0].toFixed(2)},${c[1].toFixed(2)}Z`}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}const bp=["#5b9bd5","#ed7d31","#70ad47","#9e5fa0","#ffc000","#44546a"],kM=/^(.+?)\s+(\([^()]+\))\s*$/,vp=1.15;function wp(n,t,e){for(;n.firstChild;)n.removeChild(n.firstChild);let i;if(t.includes(`
7
+ `,o=(e==null?void 0:e.decimalPoint)??".",s=["Category"];t.forEach(h=>{if(e!=null&&e.columnHeaderFormatter){const f=e.columnHeaderFormatter(h,"y",1);s.push(f===!1?h.name||"Series":f)}else s.push(h.name||"Series")});const a=new Set;for(const h of t)for(const f of h.data)a.add(f.name??f.x??"");const l=h=>{if(h==null)return"";const f=String(h);return o!=="."&&typeof h=="number"?f.replace(".",o):f},c=[];for(const h of a){const f=[String(h)];for(const u of t){const d=u.data.find(p=>(p.name??p.x)===h);f.push((d==null?void 0:d.y)!==void 0&&d.y!==null?l(d.y):"")}c.push(f)}return[s.map(h=>Jo(h,i)).join(i),...c.map(h=>h.map(f=>Jo(f,i)).join(i))].join(r)}static getDataRows(t){const e=["Category"];t.forEach(o=>e.push(o.name||"Series"));const i=new Set;for(const o of t)for(const s of o.data)i.add(s.name??s.x??"");const r=[e];for(const o of i){const s=[o!=null?String(o):""];for(const a of t){const l=a.data.find(c=>(c.name??c.x)===o);s.push((l==null?void 0:l.y)??null)}r.push(s)}return r}static getTable(t,e){const i=Zt.getDataRows(t);if(i.length===0)return"<table></table>";const r=i[0],o=i.slice(1);let s='<table class="katucharts-data-table">';e&&typeof e=="string"&&(s+=`<caption>${Zn(e)}</caption>`),s+="<thead><tr>";for(const a of r)s+=`<th>${Zn(a??"")}</th>`;s+="</tr></thead><tbody>";for(const a of o){s+="<tr>";for(const l of a)s+=`<td>${Zn(l??"")}</td>`;s+="</tr>"}return s+="</tbody></table>",s}static viewDataTable(t,e,i){let r=e.querySelector(".katucharts-data-table-container");if(r)return r.remove(),null;r=document.createElement("div"),r.className="katucharts-data-table-container",Object.assign(r.style,{position:"relative",maxHeight:"300px",overflow:"auto",border:"1px solid #ccc",marginTop:"10px",fontSize:"11px"});const o=Zt.getTable(t,i);r.innerHTML=o;const s=r.querySelector("table");return s&&(Object.assign(s.style,{width:"100%",borderCollapse:"collapse"}),s.querySelectorAll("th, td").forEach(a=>{Object.assign(a.style,{padding:"4px 8px",borderBottom:"1px solid #e6e6e6",textAlign:"left"})}),s.querySelectorAll("th").forEach(a=>{Object.assign(a.style,{backgroundColor:"#f7f7f7",fontWeight:"bold"})})),e.appendChild(r),r}static downloadBlob(t,e){const i=URL.createObjectURL(t),r=document.createElement("a");r.href=i,r.download=e,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(i)}};Zt.INLINE_PROPS=["fill","stroke","stroke-width","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-opacity","fill-opacity","opacity","font-family","font-size","font-weight","font-style","text-anchor","dominant-baseline","text-decoration","visibility","display"],Zt.JSPDF_CDN_URL="https://cdn.jsdelivr.net/npm/jspdf@2.5.2/dist/jspdf.umd.min.js",Zt.jsPDFLoader=null;let ie=Zt;class zv{constructor(t){this.host=t}getSVG(){return this.host.getRenderer().getSerializedSVG()}getInlinedSVG(){const t=this.host.getRenderer(),e=t.getSVGNode();return e?ie.inlineStyles(e):t.getSerializedSVG()}handleExportAction(t){const e=this.host.getOptions(),i=this.getInlinedSVG(),r=e.exporting.filename??"chart",o=e.exporting.scale??2;switch(t){case"downloadPNG":ie.exportPNG(i,r,o).catch(s=>console.warn("KatuCharts: PNG export failed.",s));break;case"downloadJPEG":ie.exportJPEG(i,r,o).catch(s=>console.warn("KatuCharts: JPEG export failed.",s));break;case"downloadSVG":ie.exportSVG(i,r);break;case"downloadPDF":ie.exportPDF(i,r,o).catch(s=>console.warn("KatuCharts: PDF export failed.",s));break;case"downloadCSV":ie.exportCSV(this.getSeriesDataForExport(),r,e.exporting.csv);break;case"downloadXLS":this.exportXLS(r);break;case"viewDataTable":ie.viewDataTable(this.getSeriesDataForExport(),this.host.getContainer(),e.exporting.tableCaption);break;case"viewFullScreen":this.toggleFullScreen();break;case"printChart":this.host.fireEvent("beforePrint"),ie.print(i,e.exporting.printMaxWidth),this.host.fireEvent("afterPrint");break}}toggleFullScreen(){var m;const t=this.host.getContainer();if(!t)return;const e=t.ownerDocument,i=e.defaultView||window;if(e.fullscreenElement===t||e.webkitFullscreenElement===t){e.exitFullscreen?e.exitFullscreen():e.webkitExitFullscreen&&e.webkitExitFullscreen();return}const o=t.style,s={width:o.width,height:o.height,maxWidth:o.maxWidth,maxHeight:o.maxHeight,background:o.background},a=this.host.getOptions().chart.backgroundColor||"#fff";o.background=a,o.width="100vw",o.height="100vh",o.maxWidth="none",o.maxHeight="none",this.host.disconnectResizeObserver();const l=this.host.getViewportSize(),c=()=>{o.width=s.width,o.height=s.height,o.maxWidth=s.maxWidth,o.maxHeight=s.maxHeight,o.background=s.background},h=()=>{this.host.fitToViewport(l.width,l.height)};let f=null;const u=()=>{const x=i.innerWidth,v=i.innerHeight;!x||!v||this.host.fitToViewport(x,v)},d=()=>{e.exitFullscreen?e.exitFullscreen():e.webkitExitFullscreen&&e.webkitExitFullscreen()},p=()=>{i.removeEventListener("resize",u),e.removeEventListener("fullscreenchange",y),e.removeEventListener("webkitfullscreenchange",y)},y=()=>{e.fullscreenElement===t||e.webkitFullscreenElement===t?(f=e.createElement("button"),f.textContent="✕",Object.assign(f.style,{position:"absolute",top:"10px",left:"50%",transform:"translateX(-50%)",zIndex:"10000",width:"32px",height:"32px",border:"none",borderRadius:"50%",background:"rgba(0,0,0,0.4)",color:"#fff",fontSize:"18px",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",lineHeight:"1",padding:"0"}),f.addEventListener("mouseenter",()=>{f&&(f.style.background="rgba(0,0,0,0.7)")}),f.addEventListener("mouseleave",()=>{f&&(f.style.background="rgba(0,0,0,0.4)")}),f.addEventListener("click",d),t.appendChild(f),u(),requestAnimationFrame(u),i.addEventListener("resize",u)):(p(),f&&(f.remove(),f=null),c(),h(),requestAnimationFrame(()=>{this.host.observeResizeObserver(),this.host.fireEvent("exitFullScreen")}))};e.addEventListener("fullscreenchange",y),e.addEventListener("webkitfullscreenchange",y);const g=()=>{p(),c(),this.host.getRenderer().svg.style("width",null).style("height",null),h(),this.host.observeResizeObserver()};try{const x=t.requestFullscreen?t.requestFullscreen():(m=t.webkitRequestFullscreen)==null?void 0:m.call(t);x&&typeof x.catch=="function"&&x.catch(g),this.host.fireEvent("enterFullScreen")}catch{g()}}getSeriesDataForExport(){return this.host.getSeriesInstances().map(t=>({name:t.config.name||`Series ${t.config.index+1}`,data:t.data.map(e=>({x:e.x,y:e.y,name:e.name}))}))}exportXLS(t){const e=ie.getDataRows(this.getSeriesDataForExport());let i='<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:spreadsheet" xmlns="http://www.w3.org/TR/REC-html40"><head><meta charset="utf-8"/></head><body><table>';for(const o of e){i+="<tr>";for(const s of o)i+=`<td>${s??""}</td>`;i+="</tr>"}i+="</table></body></html>";const r=new Blob([i],{type:"application/vnd.ms-excel"});ie.downloadBlob(r,`${t}.xls`)}getCSV(){return ie.getCSV(this.getSeriesDataForExport(),this.host.getOptions().exporting.csv)}getTable(){return ie.getTable(this.getSeriesDataForExport(),this.host.getOptions().exporting.tableCaption)}getDataRows(){return ie.getDataRows(this.getSeriesDataForExport())}exportChart(t){const e={...this.host.getOptions().exporting,...t},i=this.getInlinedSVG(),r=e.filename??"chart",o=e.scale??2;switch(e.type){case"image/jpeg":ie.exportJPEG(i,r,o);break;case"image/svg+xml":ie.exportSVG(i,r);break;case"application/pdf":ie.exportPDF(i,r,o);break;case"image/png":default:ie.exportPNG(i,r,o);break}}print(){this.host.fireEvent("beforePrint");const t=this.getInlinedSVG();ie.print(t,this.host.getOptions().exporting.printMaxWidth),this.host.fireEvent("afterPrint")}optionsToExternal(){const t=this.host.getOptions();return{chart:t.chart,title:t.title,subtitle:t.subtitle,xAxis:t.xAxis,yAxis:t.yAxis,colorAxis:t.colorAxis,series:t.series,tooltip:t.tooltip,legend:t.legend,plotOptions:t.plotOptions,credits:t.credits,colors:t.colors}}}class Bv{constructor(t){this.host=t}updateTooltipCategories(){const t=this.host.getTooltip();if(!t)return;const e=this.host.getXAxes()[0];e&&(e.config.type==="category"||e.config.categories)&&t.setCategories(e.config.categories||[]),t.setDatetimeAxis(!!e&&e.config.type==="datetime")}updateAxesDomains(){const t=Ei,e=this.host.getOptions(),i=this.host.getLayout(),r=this.host.getSeriesInstances(),o=this.host.getXAxes(),s=this.host.getYAxes();for(let a=0;a<o.length;a++){const l=o[a];if(l.config.type==="category"||l.config.categories&&l.config.categories.length>0){const u=r.filter((p,y)=>p.visible&&e.series[y]._xAxisIndex===a&&!t.has(p.config._internalType)),d=(l.config.categories&&l.config.categories.length>0?l.config.categories:null)||(u.length>0?u[0].getCategories():void 0);d&&d.length>0&&l.updateDomain(d);continue}const c=r.filter((u,d)=>u.visible&&e.series[d]._xAxisIndex===a&&!t.has(u.config._internalType));if(c.length===0)continue;let h=1/0,f=-1/0;for(const u of c){const d=u.getDataExtents();h=Math.min(h,d.xMin),f=Math.max(f,d.xMax)}if(isFinite(h)&&isFinite(f)){const u=e.series.filter((p,y)=>{var g;return((g=r[y])==null?void 0:g.visible)&&p._xAxisIndex===a&&!t.has(p._internalType)}),d=this.computeBubbleRadiusPadding(u,i.plotArea.width);l.updateDomain({min:h,max:f,extraMinPadding:d,extraMaxPadding:d})}}for(let a=0;a<s.length;a++){const l=s[a],c=e.series.filter((g,m)=>{var x;return((x=r[m])==null?void 0:x.visible)&&g._yAxisIndex===a&&!t.has(g._internalType)}),h=r.filter((g,m)=>g.visible&&e.series[m]._yAxisIndex===a&&!t.has(g.config._internalType));if(h.length===0)continue;let f=1/0,u=-1/0;const d=new Map;for(let g=0;g<h.length;g++){const m=h[g],x=c[g];if(x!=null&&x.stacking){const v=is(x);d.has(v)||d.set(v,new Map),Hi(m.data,d.get(v))}else{const v=m.getDataExtents();f=Math.min(f,v.yMin),u=Math.max(u,v.yMax)}}const p=c.some(g=>(g==null?void 0:g.stacking)==="percent");p&&(f=0,u=100,l.config.min=0,l.config.max=100);for(const g of d.values())if(!p)for(const m of g.values())f=Math.min(f,0),u=Math.max(u,m);if(c.some(g=>yg.has(g._internalType))&&l.config.min===void 0&&(f=Math.min(f,0),u=Math.max(u,0)),isFinite(f)&&isFinite(u)){const g=this.computeBubbleRadiusPadding(c,i.plotArea.height);l.updateDomain({min:f,max:u,extraMinPadding:g,extraMaxPadding:g})}}}computeBubbleRadiusPadding(t,e){const i=t.filter(s=>s&&s._internalType==="bubble");if(i.length===0||e<=0)return 0;const r=this.host.getLayout().plotArea;let o=0;for(const s of i){const a=s.maxSize;let l;typeof a=="number"?l=a:typeof a=="string"&&a.endsWith("%")?l=Math.min(r.width,r.height)*parseFloat(a)/100/2:l=30,o=Math.max(o,l)}return o/Math.max(e-2*o,1)}renderAxes(){const t=this.host.getAxisGroup(),e=this.host.getLayout();if(t.selectAll("*").remove(),!Bl(this.host.getOptions().series)){for(const i of this.host.getXAxes())i.config.showEmpty===!1&&!this.hasSeriesForAxis(i,!0)||i.render(t,e.plotArea);for(const i of this.host.getYAxes())i.config.showEmpty===!1&&!this.hasSeriesForAxis(i,!1)||i.render(t,e.plotArea);this.setupAxisLabelHover()}}setupAxisLabelHover(){const t=this.host.getXAxes()[0];if(!t)return;const i=this.host.getAxisGroup().select(".katucharts-axis-x");if(i.empty())return;const r=i.selectAll(".tick"),o=this.host.getOptions(),s=this.host.getSeriesInstances(),a=this.host.getYAxes(),l=this.host.getEvents();r.each(function(){const c=st(this),h=c.select("text");if(h.empty())return;const f=h.node().getBBox();c.insert("rect","text").attr("x",f.x-4).attr("y",f.y-2).attr("width",f.width+8).attr("height",f.height+4).attr("fill","transparent").attr("class","katucharts-tick-hitarea")}),r.style("cursor","pointer").on("mouseover",function(c){var y;const h=this.__data__,f=typeof h=="string"?((y=t.config.categories)==null?void 0:y.indexOf(h))??-1:typeof h=="number"?h:-1;if(f<0)return;const u=!!o.chart.inverted,d=t.getPixelForValue(h),p=[];for(const g of s){if(!g.visible)continue;const m=g.data.find(x=>(x.x??0)===f);if(m&&m.y!==null&&m.y!==void 0){const v=a[0].getPixelForValue(m.y??0);p.push({point:m,series:g,plotX:u?v:d,plotY:u?d:v})}}if(p.length>0){const g=p[0];l.emit("point:mouseover",{point:{...g.point,matchingPoints:p},index:f,series:g.series,event:c,plotX:g.plotX,plotY:g.plotY})}for(const g of s){if(!g.visible)continue;const m=g.group;if(!m)continue;m.selectAll(".katucharts-column, .katucharts-bar, .katucharts-marker, .katucharts-bubble, .katucharts-scatter-point").each(function(v){const b=st(this);((v==null?void 0:v.x)??-1)===f?b.attr("filter","brightness(1.15)"):b.transition().duration(100).attr("opacity",.3)})}}).on("mouseout",function(){for(const c of s){if(!c.visible)continue;const h=c.group;h&&h.selectAll(".katucharts-column, .katucharts-bar, .katucharts-marker, .katucharts-bubble, .katucharts-scatter-point").interrupt().attr("opacity",null).attr("filter",null)}l.emit("point:mouseout",{point:{},index:-1,series:null,event:null})})}hasSeriesForAxis(t,e){const i=this.host.getOptions();return this.host.getSeriesInstances().some((r,o)=>{const s=i.series[o],a=e?s._xAxisIndex:s._yAxisIndex;return r.visible&&a===t.config.index})}}class pf{constructor(t,e,i){if(this.stack=[],this.breadcrumbsEl=null,this.container=null,this.config=t,this.events=e,this.container=i||null,this.drilldownMap=new Map,t.series)for(const r of t.series)r.id&&this.drilldownMap.set(r.id,r);this.pointClickHandler=r=>{const o=r.point.drilldown;o&&this.drilldownMap.has(o)&&this.drillDown(o,r)},e.on("point:click",this.pointClickHandler)}addSeriesAsDrilldown(t,e){e.id&&this.drilldownMap.set(e.id,e);const i=t.drilldown||e.id;i&&this.drillDown(i,{point:t,series:{}})}drillDown(t,e){var r,o;const i=this.drilldownMap.get(t);i&&(this.stack.push({seriesOptions:(r=e.series)!=null&&r.config?[e.series.config]:[],title:(o=e.point)==null?void 0:o.name}),this.events.emit("drilldown:drilldown",{point:e.point,seriesOptions:i}),this.updateBreadcrumbs())}drillUp(){const t=this.stack.pop();t&&(this.events.emit("drilldown:drillup",t),this.updateBreadcrumbs())}drillUpToLevel(t){for(;this.stack.length>t;)this.drillUp()}hasLevels(){return this.stack.length>0}getCurrentLevel(){return this.stack.length}get breadcrumbsConfig(){const t=this.config.breadcrumbs;return t&&typeof t=="object"?t:{}}isBreadcrumbsEnabled(){const t=this.config.breadcrumbs;return!(t===!1||t&&typeof t=="object"&&t.enabled===!1)}updateBreadcrumbs(){var u,d,p,y,g,m,x,v;if(!this.container||!this.isBreadcrumbsEnabled())return;const t=this.breadcrumbsConfig,e=t.floating!==!1;if(!this.breadcrumbsEl){this.breadcrumbsEl=document.createElement("div"),this.breadcrumbsEl.className="katucharts-breadcrumbs";const b=t.position||{};e&&getComputedStyle(this.container).position==="static"&&(this.container.style.position="relative"),Object.assign(this.breadcrumbsEl.style,{position:e?"absolute":"relative",display:"flex",alignItems:"center",gap:"6px",padding:"3px 10px",borderRadius:"999px",fontSize:((u=t.style)==null?void 0:u.fontSize)||"12px",fontWeight:((d=t.style)==null?void 0:d.fontWeight)||"500",lineHeight:"1.4",color:((p=t.style)==null?void 0:p.color)||"#1b1a15",background:((y=t.style)==null?void 0:y.background)||"rgba(255,255,255,0.86)",boxShadow:((g=t.style)==null?void 0:g.boxShadow)||"0 1px 3px rgba(27,26,21,0.18)",zIndex:"10",top:e?`${b.y??8}px`:"",left:e?`${b.x??8}px`:"",userSelect:"none"}),this.container.appendChild(this.breadcrumbsEl)}if(this.breadcrumbsEl.innerHTML="",this.stack.length===0){this.breadcrumbsEl.style.display="none";return}this.breadcrumbsEl.style.display="flex";const i=((m=t.style)==null?void 0:m.linkColor)||"#003399",r=((x=t.separator)==null?void 0:x.text)??"/",o=((v=t.separator)==null?void 0:v.style)||{},s=t.showFullPath!==!1,a=t.showBackButton!==!1,l=t.rootText??"Main",c=b=>{const k=document.createElement("span");k.textContent="◀",k.setAttribute("role","button"),k.setAttribute("aria-label","Drill up"),Object.assign(k.style,{cursor:"pointer",color:i,fontSize:"0.8em",lineHeight:"1",transition:"opacity 120ms ease"}),k.addEventListener("mouseenter",()=>{k.style.opacity="0.55"}),k.addEventListener("mouseleave",()=>{k.style.opacity="1"}),k.addEventListener("click",b),this.breadcrumbsEl.appendChild(k)},h=(b,k,M)=>{const P=document.createElement("span");P.textContent=b,M&&(Object.assign(P.style,{cursor:"pointer",color:i,transition:"opacity 120ms ease"}),P.addEventListener("mouseenter",()=>{P.style.textDecoration="underline"}),P.addEventListener("mouseleave",()=>{P.style.textDecoration="none"}),P.addEventListener("click",()=>{var $;($=t.events)!=null&&$.click&&t.events.click.call(this,{level:k}),this.drillUpToLevel(k)})),this.breadcrumbsEl.appendChild(P)},f=()=>{const b=document.createElement("span");b.textContent=r,b.style.opacity="0.55",o.color&&(b.style.color=o.color),this.breadcrumbsEl.appendChild(b)};if(s){a&&c(()=>this.drillUp()),h(l,0,!0);for(let b=0;b<this.stack.length;b++){f();const k=b===this.stack.length-1,M=this.getCrumbLabel(b);h(M,b+1,!k)}}else{c(()=>this.drillUp());const b=document.createElement("span");b.textContent="Back",b.style.cursor="pointer",b.style.color=i,b.addEventListener("click",()=>this.drillUp()),this.breadcrumbsEl.appendChild(b)}}getCrumbLabel(t){const e=this.stack[t],i=this.breadcrumbsConfig;return i.formatter?i.formatter.call({level:t,levelOptions:e}):e.title||`Level ${t+1}`}destroy(){this.events.off("point:click",this.pointClickHandler),this.breadcrumbsEl&&(this.breadcrumbsEl.remove(),this.breadcrumbsEl=null)}}const Ov={passive:!1},Ar={capture:!0,passive:!1};function nc(n){n.stopImmediatePropagation()}function Vi(n){n.preventDefault(),n.stopImmediatePropagation()}function ic(n){var t=n.document.documentElement,e=st(n).on("dragstart.drag",Vi,Ar);"onselectstart"in t?e.on("selectstart.drag",Vi,Ar):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect="none")}function rc(n,t){var e=n.document.documentElement,i=st(n).on("dragstart.drag",null);t&&(i.on("click.drag",Vi,Ar),setTimeout(function(){i.on("click.drag",null)},0)),"onselectstart"in e?i.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}const rs=n=>()=>n;function oc(n,{sourceEvent:t,subject:e,target:i,identifier:r,active:o,x:s,y:a,dx:l,dy:c,dispatch:h}){Object.defineProperties(this,{type:{value:n,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:e,enumerable:!0,configurable:!0},target:{value:i,enumerable:!0,configurable:!0},identifier:{value:r,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:a,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:c,enumerable:!0,configurable:!0},_:{value:h}})}oc.prototype.on=function(){var n=this._.on.apply(this._,arguments);return n===this._?this:n};function Nv(n){return!n.ctrlKey&&!n.button}function Wv(){return this.parentNode}function Hv(n,t){return t??{x:n.x,y:n.y}}function Vv(){return navigator.maxTouchPoints||"ontouchstart"in this}function gf(){var n=Nv,t=Wv,e=Hv,i=Vv,r={},o=Bi("start","drag","end"),s=0,a,l,c,h,f=0;function u(b){b.on("mousedown.drag",d).filter(i).on("touchstart.drag",g).on("touchmove.drag",m,Ov).on("touchend.drag touchcancel.drag",x).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(b,k){if(!(h||!n.call(this,b,k))){var M=v(this,t.call(this,b,k),b,k,"mouse");M&&(st(b.view).on("mousemove.drag",p,Ar).on("mouseup.drag",y,Ar),ic(b.view),nc(b),c=!1,a=b.clientX,l=b.clientY,M("start",b))}}function p(b){if(Vi(b),!c){var k=b.clientX-a,M=b.clientY-l;c=k*k+M*M>f}r.mouse("drag",b)}function y(b){st(b.view).on("mousemove.drag mouseup.drag",null),rc(b.view,c),Vi(b),r.mouse("end",b)}function g(b,k){if(n.call(this,b,k)){var M=b.changedTouches,P=t.call(this,b,k),$=M.length,_,L;for(_=0;_<$;++_)(L=v(this,P,b,k,M[_].identifier,M[_]))&&(nc(b),L("start",b,M[_]))}}function m(b){var k=b.changedTouches,M=k.length,P,$;for(P=0;P<M;++P)($=r[k[P].identifier])&&(Vi(b),$("drag",b,k[P]))}function x(b){var k=b.changedTouches,M=k.length,P,$;for(h&&clearTimeout(h),h=setTimeout(function(){h=null},500),P=0;P<M;++P)($=r[k[P].identifier])&&(nc(b),$("end",b,k[P]))}function v(b,k,M,P,$,_){var L=o.copy(),I=pn(_||M,k),E,C,S;if((S=e.call(b,new oc("beforestart",{sourceEvent:M,target:u,identifier:$,active:s,x:I[0],y:I[1],dx:0,dy:0,dispatch:L}),P))!=null)return E=S.x-I[0]||0,C=S.y-I[1]||0,function w(A,T,F){var D=I,R;switch(A){case"start":r[$]=w,R=s++;break;case"end":delete r[$],--s;case"drag":I=pn(F||T,k),R=s;break}L.call(A,b,new oc(A,{sourceEvent:T,subject:S,target:u,identifier:$,active:R,x:I[0]+E,y:I[1]+C,dx:I[0]-D[0],dy:I[1]-D[1],dispatch:L}),P)}}return u.filter=function(b){return arguments.length?(n=typeof b=="function"?b:rs(!!b),u):n},u.container=function(b){return arguments.length?(t=typeof b=="function"?b:rs(b),u):t},u.subject=function(b){return arguments.length?(e=typeof b=="function"?b:rs(b),u):e},u.touchable=function(b){return arguments.length?(i=typeof b=="function"?b:rs(!!b),u):i},u.on=function(){var b=o.on.apply(o,arguments);return b===o?u:b},u.clickDistance=function(b){return arguments.length?(f=(b=+b)*b,u):Math.sqrt(f)},u}const os=n=>()=>n;function Gv(n,{sourceEvent:t,target:e,transform:i,dispatch:r}){Object.defineProperties(this,{type:{value:n,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},transform:{value:i,enumerable:!0,configurable:!0},_:{value:r}})}function Bn(n,t,e){this.k=n,this.x=t,this.y=e}Bn.prototype={constructor:Bn,scale:function(n){return n===1?this:new Bn(this.k*n,this.x,this.y)},translate:function(n,t){return n===0&t===0?this:new Bn(this.k,this.x+this.k*n,this.y+this.k*t)},apply:function(n){return[n[0]*this.k+this.x,n[1]*this.k+this.y]},applyX:function(n){return n*this.k+this.x},applyY:function(n){return n*this.k+this.y},invert:function(n){return[(n[0]-this.x)/this.k,(n[1]-this.y)/this.k]},invertX:function(n){return(n-this.x)/this.k},invertY:function(n){return(n-this.y)/this.k},rescaleX:function(n){return n.copy().domain(n.range().map(this.invertX,this).map(n.invert,n))},rescaleY:function(n){return n.copy().domain(n.range().map(this.invertY,this).map(n.invert,n))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Sr=new Bn(1,0,0);Bn.prototype;function sc(n){n.stopImmediatePropagation()}function _r(n){n.preventDefault(),n.stopImmediatePropagation()}function Yv(n){return(!n.ctrlKey||n.type==="wheel")&&!n.button}function Xv(){var n=this;return n instanceof SVGElement?(n=n.ownerSVGElement||n,n.hasAttribute("viewBox")?(n=n.viewBox.baseVal,[[n.x,n.y],[n.x+n.width,n.y+n.height]]):[[0,0],[n.width.baseVal.value,n.height.baseVal.value]]):[[0,0],[n.clientWidth,n.clientHeight]]}function mf(){return this.__zoom||Sr}function Uv(n){return-n.deltaY*(n.deltaMode===1?.05:n.deltaMode?1:.002)*(n.ctrlKey?10:1)}function jv(){return navigator.maxTouchPoints||"ontouchstart"in this}function qv(n,t,e){var i=n.invertX(t[0][0])-e[0][0],r=n.invertX(t[1][0])-e[1][0],o=n.invertY(t[0][1])-e[0][1],s=n.invertY(t[1][1])-e[1][1];return n.translate(r>i?(i+r)/2:Math.min(0,i)||Math.max(0,r),s>o?(o+s)/2:Math.min(0,o)||Math.max(0,s))}function yf(){var n=Yv,t=Xv,e=qv,i=Uv,r=jv,o=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],a=250,l=Qy,c=Bi("start","zoom","end"),h,f,u,d=500,p=150,y=0,g=10;function m(S){S.property("__zoom",mf).on("wheel.zoom",$,{passive:!1}).on("mousedown.zoom",_).on("dblclick.zoom",L).filter(r).on("touchstart.zoom",I).on("touchmove.zoom",E).on("touchend.zoom touchcancel.zoom",C).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}m.transform=function(S,w,A,T){var F=S.selection?S.selection():S;F.property("__zoom",mf),S!==F?k(S,w,A,T):F.interrupt().each(function(){M(this,arguments).event(T).start().zoom(null,typeof w=="function"?w.apply(this,arguments):w).end()})},m.scaleBy=function(S,w,A,T){m.scaleTo(S,function(){var F=this.__zoom.k,D=typeof w=="function"?w.apply(this,arguments):w;return F*D},A,T)},m.scaleTo=function(S,w,A,T){m.transform(S,function(){var F=t.apply(this,arguments),D=this.__zoom,R=A==null?b(F):typeof A=="function"?A.apply(this,arguments):A,z=D.invert(R),B=typeof w=="function"?w.apply(this,arguments):w;return e(v(x(D,B),R,z),F,s)},A,T)},m.translateBy=function(S,w,A,T){m.transform(S,function(){return e(this.__zoom.translate(typeof w=="function"?w.apply(this,arguments):w,typeof A=="function"?A.apply(this,arguments):A),t.apply(this,arguments),s)},null,T)},m.translateTo=function(S,w,A,T,F){m.transform(S,function(){var D=t.apply(this,arguments),R=this.__zoom,z=T==null?b(D):typeof T=="function"?T.apply(this,arguments):T;return e(Sr.translate(z[0],z[1]).scale(R.k).translate(typeof w=="function"?-w.apply(this,arguments):-w,typeof A=="function"?-A.apply(this,arguments):-A),D,s)},T,F)};function x(S,w){return w=Math.max(o[0],Math.min(o[1],w)),w===S.k?S:new Bn(w,S.x,S.y)}function v(S,w,A){var T=w[0]-A[0]*S.k,F=w[1]-A[1]*S.k;return T===S.x&&F===S.y?S:new Bn(S.k,T,F)}function b(S){return[(+S[0][0]+ +S[1][0])/2,(+S[0][1]+ +S[1][1])/2]}function k(S,w,A,T){S.on("start.zoom",function(){M(this,arguments).event(T).start()}).on("interrupt.zoom end.zoom",function(){M(this,arguments).event(T).end()}).tween("zoom",function(){var F=this,D=arguments,R=M(F,D).event(T),z=t.apply(F,D),B=A==null?b(z):typeof A=="function"?A.apply(F,D):A,W=Math.max(z[1][0]-z[0][0],z[1][1]-z[0][1]),K=F.__zoom,X=typeof w=="function"?w.apply(F,D):w,q=l(K.invert(B).concat(W/K.k),X.invert(B).concat(W/X.k));return function(N){if(N===1)N=X;else{var H=q(N),Y=W/H[2];N=new Bn(Y,B[0]-H[0]*Y,B[1]-H[1]*Y)}R.zoom(null,N)}})}function M(S,w,A){return!A&&S.__zooming||new P(S,w)}function P(S,w){this.that=S,this.args=w,this.active=0,this.sourceEvent=null,this.extent=t.apply(S,w),this.taps=0}P.prototype={event:function(S){return S&&(this.sourceEvent=S),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(S,w){return this.mouse&&S!=="mouse"&&(this.mouse[1]=w.invert(this.mouse[0])),this.touch0&&S!=="touch"&&(this.touch0[1]=w.invert(this.touch0[0])),this.touch1&&S!=="touch"&&(this.touch1[1]=w.invert(this.touch1[0])),this.that.__zoom=w,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(S){var w=st(this.that).datum();c.call(S,this.that,new Gv(S,{sourceEvent:this.sourceEvent,target:m,transform:this.that.__zoom,dispatch:c}),w)}};function $(S,...w){if(!n.apply(this,arguments))return;var A=M(this,w).event(S),T=this.__zoom,F=Math.max(o[0],Math.min(o[1],T.k*Math.pow(2,i.apply(this,arguments)))),D=pn(S);if(A.wheel)(A.mouse[0][0]!==D[0]||A.mouse[0][1]!==D[1])&&(A.mouse[1]=T.invert(A.mouse[0]=D)),clearTimeout(A.wheel);else{if(T.k===F)return;A.mouse=[D,T.invert(D)],Ni(this),A.start()}_r(S),A.wheel=setTimeout(R,p),A.zoom("mouse",e(v(x(T,F),A.mouse[0],A.mouse[1]),A.extent,s));function R(){A.wheel=null,A.end()}}function _(S,...w){if(u||!n.apply(this,arguments))return;var A=S.currentTarget,T=M(this,w,!0).event(S),F=st(S.view).on("mousemove.zoom",B,!0).on("mouseup.zoom",W,!0),D=pn(S,A),R=S.clientX,z=S.clientY;ic(S.view),sc(S),T.mouse=[D,this.__zoom.invert(D)],Ni(this),T.start();function B(K){if(_r(K),!T.moved){var X=K.clientX-R,q=K.clientY-z;T.moved=X*X+q*q>y}T.event(K).zoom("mouse",e(v(T.that.__zoom,T.mouse[0]=pn(K,A),T.mouse[1]),T.extent,s))}function W(K){F.on("mousemove.zoom mouseup.zoom",null),rc(K.view,T.moved),_r(K),T.event(K).end()}}function L(S,...w){if(n.apply(this,arguments)){var A=this.__zoom,T=pn(S.changedTouches?S.changedTouches[0]:S,this),F=A.invert(T),D=A.k*(S.shiftKey?.5:2),R=e(v(x(A,D),T,F),t.apply(this,w),s);_r(S),a>0?st(this).transition().duration(a).call(k,R,T,S):st(this).call(m.transform,R,T,S)}}function I(S,...w){if(n.apply(this,arguments)){var A=S.touches,T=A.length,F=M(this,w,S.changedTouches.length===T).event(S),D,R,z,B;for(sc(S),R=0;R<T;++R)z=A[R],B=pn(z,this),B=[B,this.__zoom.invert(B),z.identifier],F.touch0?!F.touch1&&F.touch0[2]!==B[2]&&(F.touch1=B,F.taps=0):(F.touch0=B,D=!0,F.taps=1+!!h);h&&(h=clearTimeout(h)),D&&(F.taps<2&&(f=B[0],h=setTimeout(function(){h=null},d)),Ni(this),F.start())}}function E(S,...w){if(this.__zooming){var A=M(this,w).event(S),T=S.changedTouches,F=T.length,D,R,z,B;for(_r(S),D=0;D<F;++D)R=T[D],z=pn(R,this),A.touch0&&A.touch0[2]===R.identifier?A.touch0[0]=z:A.touch1&&A.touch1[2]===R.identifier&&(A.touch1[0]=z);if(R=A.that.__zoom,A.touch1){var W=A.touch0[0],K=A.touch0[1],X=A.touch1[0],q=A.touch1[1],N=(N=X[0]-W[0])*N+(N=X[1]-W[1])*N,H=(H=q[0]-K[0])*H+(H=q[1]-K[1])*H;R=x(R,Math.sqrt(N/H)),z=[(W[0]+X[0])/2,(W[1]+X[1])/2],B=[(K[0]+q[0])/2,(K[1]+q[1])/2]}else if(A.touch0)z=A.touch0[0],B=A.touch0[1];else return;A.zoom("touch",e(v(R,z,B),A.extent,s))}}function C(S,...w){if(this.__zooming){var A=M(this,w).event(S),T=S.changedTouches,F=T.length,D,R;for(sc(S),u&&clearTimeout(u),u=setTimeout(function(){u=null},d),D=0;D<F;++D)R=T[D],A.touch0&&A.touch0[2]===R.identifier?delete A.touch0:A.touch1&&A.touch1[2]===R.identifier&&delete A.touch1;if(A.touch1&&!A.touch0&&(A.touch0=A.touch1,delete A.touch1),A.touch0)A.touch0[1]=this.__zoom.invert(A.touch0[0]);else if(A.end(),A.taps===2&&(R=pn(R,this),Math.hypot(f[0]-R[0],f[1]-R[1])<g)){var z=st(this).on("dblclick.zoom");z&&z.apply(this,arguments)}}}return m.wheelDelta=function(S){return arguments.length?(i=typeof S=="function"?S:os(+S),m):i},m.filter=function(S){return arguments.length?(n=typeof S=="function"?S:os(!!S),m):n},m.touchable=function(S){return arguments.length?(r=typeof S=="function"?S:os(!!S),m):r},m.extent=function(S){return arguments.length?(t=typeof S=="function"?S:os([[+S[0][0],+S[0][1]],[+S[1][0],+S[1][1]]]),m):t},m.scaleExtent=function(S){return arguments.length?(o[0]=+S[0],o[1]=+S[1],m):[o[0],o[1]]},m.translateExtent=function(S){return arguments.length?(s[0][0]=+S[0][0],s[1][0]=+S[1][0],s[0][1]=+S[0][1],s[1][1]=+S[1][1],m):[[s[0][0],s[0][1]],[s[1][0],s[1][1]]]},m.constrain=function(S){return arguments.length?(e=S,m):e},m.duration=function(S){return arguments.length?(a=+S,m):a},m.interpolate=function(S){return arguments.length?(l=S,m):l},m.on=function(){var S=c.on.apply(c,arguments);return S===c?m:S},m.clickDistance=function(S){return arguments.length?(y=(S=+S)*S,m):Math.sqrt(y)},m.tapDistance=function(S){return arguments.length?(g=+S,m):g},m}class xf{constructor(t,e,i,r,o){this.resetButton=null,this.selectionRect=null,this.selectionStart=null,this.resetClickHandler=null;const s=typeof t=="string"?{type:t}:t;this.zoomKey=s.key,this.panKey=s.panKey,this.plotGroup=e;const a=s.panning;typeof a=="object"?(this.panningEnabled=a.enabled!==!1,this.panningType=a.type||s.type):(this.panningEnabled=a===!0,this.panningType=s.type);const l=this.isMouseWheelEnabled(s.mouseWheel),c=this.getMouseWheelSensitivity(s.mouseWheel);this.zoomBehavior=yf().scaleExtent([1,20]).extent([[0,0],[i.width,i.height]]).translateExtent([[0,0],[i.width,i.height]]).on("zoom",f=>{const u=f.transform;o.emit("zoom:changed",{type:s.type,transform:u})});const h=!!s.selectionHandler;this.zoomBehavior.filter(f=>f.type==="wheel"?l:f.type==="mousedown"||f.type==="touchstart"?h?!1:this.zoomKey?this.isKeyPressed(f,this.zoomKey):!0:!0),e.call(this.zoomBehavior),c!==1&&l&&e.on("wheel.zoom",f=>{f.preventDefault();const u=e.node().__zoom||Sr,d=f.deltaY>0?1/(1+.1*c):1+.1*c,p=Math.max(1,Math.min(20,u.k*d));e.transition().duration(100).call(this.zoomBehavior.scaleTo,p)}),s.selectionHandler&&this.setupSelectionZoom(e,i,s,o),this.panningEnabled&&this.panKey&&this.setupPanning(e,i,o),this.resetButton=this.createResetButton(s.resetButton),this.resetClickHandler=()=>{e.transition().duration(300).call(this.zoomBehavior.transform,Sr),this.resetButton.style.display="none"},this.resetButton.addEventListener("click",this.resetClickHandler),r.appendChild(this.resetButton),o.on("zoom:changed",()=>{this.resetButton&&(this.resetButton.style.display="block")})}setupSelectionZoom(t,e,i,r){t.on("mousedown.selection",o=>{if(this.zoomKey&&!this.isKeyPressed(o,this.zoomKey)||this.panKey&&this.isKeyPressed(o,this.panKey))return;const s=t.node().getBoundingClientRect();this.selectionStart={x:o.clientX-s.left,y:o.clientY-s.top};const a=i.selectionMarkerFill||"rgba(51,92,173,0.25)";this.selectionRect=t.append("rect").attr("class","katucharts-selection").attr("fill",a).attr("stroke","#4572a7").attr("stroke-width",1).attr("x",this.selectionStart.x).attr("y",0).attr("width",0).attr("height",e.height)}),t.on("mousemove.selection",o=>{if(!this.selectionStart||!this.selectionRect)return;const s=t.node().getBoundingClientRect(),a=o.clientX-s.left,l=Math.min(this.selectionStart.x,a),c=Math.abs(a-this.selectionStart.x);if(this.selectionRect.attr("x",l).attr("width",c),i.type==="xy"||i.type==="y"){const h=o.clientY-s.top,f=Math.min(this.selectionStart.y,h),u=Math.abs(h-this.selectionStart.y);this.selectionRect.attr("y",f).attr("height",u)}}),t.on("mouseup.selection",o=>{if(!this.selectionStart||!this.selectionRect)return;const s=t.node().getBoundingClientRect(),a=o.clientX-s.left,l=o.clientY-s.top;if(this.selectionRect.remove(),this.selectionRect=null,Math.abs(a-this.selectionStart.x)<5){this.selectionStart=null;return}let c=!1;const h={xAxis:[{min:Math.min(this.selectionStart.x,a),max:Math.max(this.selectionStart.x,a)}],yAxis:[{min:Math.min(this.selectionStart.y,l),max:Math.max(this.selectionStart.y,l)}],originalEvent:o,preventDefault:()=>{c=!0}};i.selectionHandler&&i.selectionHandler(h),c||r.emit("chart:selection",h),this.selectionStart=null})}setupPanning(t,e,i){let r=null,o={x:0,y:0};t.on("mousedown.pan",s=>{!this.panKey||!this.isKeyPressed(s,this.panKey)||(s.preventDefault(),r={x:s.clientX-o.x,y:s.clientY-o.y},t.style("cursor","grabbing"))}),t.on("mousemove.pan",s=>{if(!r)return;let a=s.clientX-r.x,l=s.clientY-r.y;this.panningType==="x"&&(l=0),this.panningType==="y"&&(a=0),o={x:a,y:l},i.emit("zoom:panned",{dx:a,dy:l,type:this.panningType})}),t.on("mouseup.pan",()=>{r&&(r=null,t.style("cursor",""))})}isKeyPressed(t,e){switch(e){case"ctrl":return t.ctrlKey;case"alt":return t.altKey;case"shift":return t.shiftKey;case"meta":return t.metaKey;default:return!0}}isMouseWheelEnabled(t){return t===!0||typeof t=="object"&&t.enabled!==!1}getMouseWheelSensitivity(t){return typeof t=="object"&&t.sensitivity!==void 0?t.sensitivity:1}createResetButton(t){const e=document.createElement("button");e.textContent="Reset zoom";const i=(t==null?void 0:t.theme)||{},r=(t==null?void 0:t.position)||{},o=r.y??5,s=r.x!==void 0?`${r.x}px`:"5px";return Object.assign(e.style,{position:"absolute",top:`${o}px`,right:s,padding:i.padding||"3px 8px",fontSize:i.fontSize||"11px",border:i.border||"1px solid #ccc",borderRadius:i.borderRadius||"3px",backgroundColor:i.backgroundColor||"#f9f9f9",color:i.color||"#333",cursor:"pointer",display:"none",zIndex:"5"}),e}setResetHandler(t){this.resetButton&&(this.resetClickHandler&&this.resetButton.removeEventListener("click",this.resetClickHandler),this.resetClickHandler=t,this.resetButton.addEventListener("click",this.resetClickHandler))}setResetButtonVisible(t){this.resetButton&&(this.resetButton.style.display=t?"block":"none")}resetTransform(){const t=this.plotGroup.node();t&&(t.__zoom=Sr)}destroy(){this.resetButton&&(this.resetClickHandler&&this.resetButton.removeEventListener("click",this.resetClickHandler),this.resetButton.remove())}}class bf{constructor(t){this.lastSeriesCount=0,this.lastPointCounts=[],this.config=t}apply(t,e,i){var s,a;if(this.config.enabled===!1)return;const r=this.config.landmarkVerbosity||"all";t.attr("role","img"),i&&t.attr("aria-label",this.config.description||`Chart: ${i}`);const o="katucharts-desc-"+Math.random().toString(36).slice(2,8);t.append("desc").attr("id",o).text(this.config.description||this.generateDescription(e,i)),t.attr("aria-describedby",o),t.attr("tabindex","0"),t.style("outline","none"),this.renderScreenReaderSections(t,e,i),this.applyLandmarks(t,e,r),((s=this.config.keyboardNavigation)==null?void 0:s.enabled)!==!1&&this.setupKeyboardNav(t,e),(a=this.config.announceNewData)!=null&&a.enabled&&this.setupAnnounceNewData(e)}setupAnnounceNewData(t){var o;const e=((o=this.config.announceNewData)==null?void 0:o.minAnnounceInterval)??5e3;let i=0;this.lastSeriesCount=t.length,this.lastPointCounts=t.map(s=>s.data.length),setInterval(()=>{const s=Date.now();if(s-i<e)return;let a=!1,l="";if(t.length!==this.lastSeriesCount)a=!0,l=`Chart updated. Now showing ${t.length} data series.`;else for(let c=0;c<t.length;c++){const h=t[c].data.length,f=this.lastPointCounts[c]??0;if(h!==f){a=!0;const u=h-f;l=`${t[c].config.name||"Series"} updated with ${Math.abs(u)} ${u>0?"new":"fewer"} point${Math.abs(u)!==1?"s":""}. Total: ${h}.`;break}}a&&(this.announce(l),i=s,this.lastSeriesCount=t.length,this.lastPointCounts=t.map(c=>c.data.length))},Math.max(1e3,e/2))}renderScreenReaderSections(t,e,i){var s;const r=this.config.screenReaderSection,o=(s=t.node())==null?void 0:s.parentElement;if(o){if(r!=null&&r.beforeChartFormat){const a=this.createScreenReaderDiv(this.formatSectionTemplate(r.beforeChartFormat,e,i));o.insertBefore(a,t.node())}if(r!=null&&r.afterChartFormat){const a=this.createScreenReaderDiv(this.formatSectionTemplate(r.afterChartFormat,e,i));o.appendChild(a)}}}createScreenReaderDiv(t){const e=document.createElement("div");return e.className="katucharts-screen-reader-region",e.setAttribute("role","region"),e.setAttribute("aria-label","Chart information"),e.innerHTML=t,Object.assign(e.style,{position:"absolute",width:"1px",height:"1px",overflow:"hidden",clip:"rect(0,0,0,0)",whiteSpace:"nowrap"}),e}formatSectionTemplate(t,e,i){return t.replace("{chartTitle}",Zn(i||"Chart")).replace("{numSeries}",String(e.length)).replace("{seriesList}",e.map(r=>Zn(r.config.name||"Series")).join(", "))}applyLandmarks(t,e,i){if(i==="disabled")return;if(i==="one"){t.attr("role","region");return}t.selectAll(".katucharts-legend").attr("role","region").attr("aria-label","Chart legend");const r=this.config.series,o=(r==null?void 0:r.describeSingleSeries)??!1;e.length===1&&!o||e.forEach((s,a)=>{const l=s.group;if(l){const c=s.config.name||`Series ${a+1}`,h=r==null?void 0:r.descriptionFormat,f=h?h.replace("{name}",c).replace("{index}",String(a)):`${c}, ${s.data.length} data points`;l.attr("role","region").attr("aria-label",f)}})}generateDescription(t,e){const i=[];e&&i.push(`${e}.`),i.push(`Chart with ${t.length} data series.`);for(const r of t){const o=r.config.name||`Series ${r.config.index+1}`,s=r.data.length;i.push(`${o}: ${s} data points.`)}return i.join(" ")}setupKeyboardNav(t,e){let i=0,r=0;t.on("keydown",o=>{const s=e[i];if(s)switch(o.key){case"ArrowRight":o.preventDefault(),r=Math.min(r+1,s.data.length-1),this.announcePoint(s,r);break;case"ArrowLeft":o.preventDefault(),r=Math.max(r-1,0),this.announcePoint(s,r);break;case"ArrowUp":o.preventDefault(),i=Math.max(i-1,0),r=0,this.announceSeries(e[i]);break;case"ArrowDown":o.preventDefault(),i=Math.min(i+1,e.length-1),r=0,this.announceSeries(e[i]);break;case"Enter":case" ":o.preventDefault(),this.announcePoint(s,r);break}})}announcePoint(t,e){var o,s;const i=t.data[e];if(!i)return;let r;(o=this.config.point)!=null&&o.descriptionFormatter?r=this.config.point.descriptionFormatter(i):(s=this.config.point)!=null&&s.valueDescriptionFormat?r=this.config.point.valueDescriptionFormat.replace("{index}",String(e+1)).replace("{value}",String(i.y??"")).replace("{xDescription}",i.name||String(i.x??"")).replace("{point.name}",i.name||"").replace("{point.y}",String(i.y??"")).replace("{point.x}",String(i.x??"")).replace("{series.name}",t.config.name||"Series"):r=`${t.config.name||"Series"}, point ${e+1}: ${i.name?i.name+", ":""}value ${i.y}`,this.announce(r)}announceSeries(t){const e=`${t.config.name||"Series"}, ${t.data.length} points`;this.announce(e)}announce(t){let e=document.getElementById("katucharts-announcer");e||(e=document.createElement("div"),e.id="katucharts-announcer",e.setAttribute("role","status"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","true"),Object.assign(e.style,{position:"absolute",width:"1px",height:"1px",overflow:"hidden",clip:"rect(0,0,0,0)",whiteSpace:"nowrap"}),document.body.appendChild(e)),e.textContent=t}}class Zv{constructor(t){this.host=t,this.drilldown=null,this.zoom=null,this.a11yModule=null,this.origXDomains=[],this.origYDomains=[],this.isBoxZoomed=!1}setup(){this.setupSeriesDimming(),this.setupDrilldown(),this.setupZoom(),this.setupAccessibility()}destroy(){var t,e;(t=this.drilldown)==null||t.destroy(),(e=this.zoom)==null||e.destroy()}setupSeriesDimming(){var s,a,l,c;const t=this.host.getEvents(),e=((c=(l=(a=(s=this.host.getOptions().plotOptions)==null?void 0:s.series)==null?void 0:a.states)==null?void 0:l.inactive)==null?void 0:c.opacity)??.2;let i=null;const r=h=>{var f,u,d,p,y,g,m,x,v,b;i&&(clearTimeout(i),i=null);for(const k of this.host.getSeriesInstances())(u=(f=k.group)==null?void 0:f.interrupt)==null||u.call(f,"seriesDim"),k!==h&&k.visible?(x=(m=(g=(y=(p=(d=k.group)==null?void 0:d.transition)==null?void 0:p.call(d,"seriesDim"))==null?void 0:y.duration)==null?void 0:g.call(y,200))==null?void 0:m.attr)==null||x.call(m,"opacity",e):(b=(v=k.group)==null?void 0:v.attr)==null||b.call(v,"opacity",k.config.opacity??1)},o=()=>{i&&clearTimeout(i),i=setTimeout(()=>{var h,f,u,d,p,y,g,m;for(const x of this.host.getSeriesInstances())(f=(h=x.group)==null?void 0:h.interrupt)==null||f.call(h,"seriesDim"),(m=(g=(y=(p=(d=(u=x.group)==null?void 0:u.transition)==null?void 0:d.call(u,"seriesDim"))==null?void 0:p.duration)==null?void 0:y.call(p,200))==null?void 0:g.attr)==null||m.call(g,"opacity",x.config.opacity??1);i=null},50)};t.on("series:mouseenter",r),t.on("series:mouseleave",o),t.on("legend:itemHover",r),t.on("legend:itemLeave",o)}setupDrilldown(){var c;const e=this.host.getOptions().drilldown;if(!((c=e==null?void 0:e.series)!=null&&c.length))return;const i=this.host.getEvents(),r=this.host.getSeriesGroup();this.drilldown=new pf(e,i,this.host.getContainer());const o=[],s=new qn,a=e.animation,l=typeof a=="object"?a.duration??400:a!==!1?400:0;i.on("drilldown:drilldown",h=>{o.push([...this.host.getOptions().series]),l>0?r.transition().duration(l/2).style("opacity","0").on("end",()=>{this.performDrillSwap(h,s),r.style("opacity","0").transition().duration(l/2).style("opacity","1")}):this.performDrillSwap(h,s),this.host.fireEvent("drilldown",h)}),i.on("drilldown:drillup",()=>{const h=o.pop();h&&this.host.setSeries(h),l>0?r.transition().duration(l/2).style("opacity","0").on("end",()=>{this.host.rebuild(),r.style("opacity","0").transition().duration(l/2).style("opacity","1")}):this.host.rebuild(),this.host.fireEvent("drillup")})}performDrillSwap(t,e){const i=this.host.getOptions(),r=t.seriesOptions,o=e.parse({chart:i.chart,xAxis:i.xAxis,yAxis:i.yAxis,series:[r]});this.host.setSeries(o.series),this.host.rebuild()}setupZoom(){const t=this.host.getOptions(),e=t.chart.zooming||t.chart.zoomType;if(!e)return;const i=typeof e=="string"?e:e.type||"x",r={type:i,key:typeof e=="object"?e.key:void 0,mouseWheel:typeof e=="object"?e.mouseWheel:void 0,resetButton:typeof e=="object"?e.resetButton:void 0,panning:typeof e=="object"?e.panning:void 0,panKey:typeof e=="object"?e.panKey:void 0,pinchType:typeof e=="object"?e.pinchType:void 0,selectionMarkerFill:t.chart.selectionMarkerFill,selectionHandler:s=>this.applyBoxZoom(s,i)},o=this.host.getEvents();t.chart.scrollablePlotArea&&(r.mouseWheel=!1),this.zoom=new xf(r,this.host.getPlotGroup(),this.host.getLayout().plotArea,this.host.getContainer(),o),this.zoom.setResetHandler(()=>this.resetBoxZoom()),o.on("zoom:changed",s=>{var f;const a=s.transform,l=s.type,c=this.host.getLayout().plotArea,h=!this.isBoxZoomed;(l==="x"||l==="xy")&&this.host.getXAxes().forEach((u,d)=>{h&&(this.origXDomains[d]=u.scale.domain());const p=this.origXDomains[d];if(!p||typeof p[0]!="number"||typeof p[1]!="number")return;const y=p[1]-p[0],g=(0-a.x)/a.k,m=(c.width-a.x)/a.k;u.updateDomain({min:p[0]+g/c.width*y,max:p[0]+m/c.width*y})}),(l==="y"||l==="xy")&&this.host.getYAxes().forEach((u,d)=>{h&&(this.origYDomains[d]=u.scale.domain());const p=this.origYDomains[d];if(!p||typeof p[0]!="number"||typeof p[1]!="number")return;const y=p[1]-p[0],g=(0-a.y)/a.k,m=(c.height-a.y)/a.k;u.updateDomain({max:p[1]-g/c.height*y,min:p[1]-m/c.height*y})}),this.isBoxZoomed=!0,(f=this.zoom)==null||f.setResetButtonVisible(!0),this.host.renderAfterZoom()})}applyBoxZoom(t,e){var r;const i=!this.isBoxZoomed;return(e==="x"||e==="xy")&&this.host.getXAxes().forEach((s,a)=>{i&&(this.origXDomains[a]=s.scale.domain());const l=s.getValueForPixel(t.xAxis[0].min),c=s.getValueForPixel(t.xAxis[0].max);l==null||c==null||!Number.isFinite(+l)||!Number.isFinite(+c)||s.updateDomain({min:Math.min(+l,+c),max:Math.max(+l,+c)})}),(e==="y"||e==="xy")&&this.host.getYAxes().forEach((s,a)=>{i&&(this.origYDomains[a]=s.scale.domain());const l=s.getValueForPixel(t.yAxis[0].min),c=s.getValueForPixel(t.yAxis[0].max);l==null||c==null||!Number.isFinite(+l)||!Number.isFinite(+c)||s.updateDomain({min:Math.min(+l,+c),max:Math.max(+l,+c)})}),this.isBoxZoomed=!0,(r=this.zoom)==null||r.setResetButtonVisible(!0),this.host.renderAfterZoom(),this.host.getEvents().emit("chart:afterZoom"),!0}resetBoxZoom(){var t,e;this.isBoxZoomed&&(this.host.getXAxes().forEach((i,r)=>{const o=this.origXDomains[r];o&&i.updateDomain({min:o[0],max:o[1]})}),this.host.getYAxes().forEach((i,r)=>{const o=this.origYDomains[r];o&&i.updateDomain({min:o[0],max:o[1]})}),this.isBoxZoomed=!1,this.origXDomains=[],this.origYDomains=[],(t=this.zoom)==null||t.resetTransform(),(e=this.zoom)==null||e.setResetButtonVisible(!1),this.host.renderAfterZoom(),this.host.getEvents().emit("chart:afterZoom"))}setupAccessibility(){var i;const t=this.host.getOptions(),e=t.accessibility;!e||e.enabled===!1||(this.a11yModule=new bf(e),this.a11yModule.apply(this.host.getRenderer().svg,this.host.getSeriesInstances(),((i=t.title)==null?void 0:i.text)??void 0))}}const ac=n=>()=>n;function Kv(n,{sourceEvent:t,target:e,selection:i,mode:r,dispatch:o}){Object.defineProperties(this,{type:{value:n,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},selection:{value:i,enumerable:!0,configurable:!0},mode:{value:r,enumerable:!0,configurable:!0},_:{value:o}})}function Jv(n){n.stopImmediatePropagation()}function cc(n){n.preventDefault(),n.stopImmediatePropagation()}var vf={name:"drag"},lc={name:"space"},Gi={name:"handle"},Yi={name:"center"};const{abs:wf,max:Me,min:Ae}=Math;function kf(n){return[+n[0],+n[1]]}function Mf(n){return[kf(n[0]),kf(n[1])]}var ss={name:"x",handles:["w","e"].map(uc),input:function(n,t){return n==null?null:[[+n[0],t[0][1]],[+n[1],t[1][1]]]},output:function(n){return n&&[n[0][0],n[1][0]]}},hc={},On={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Af={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},Sf={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},Qv={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},t2={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function uc(n){return{type:n}}function e2(n){return!n.ctrlKey&&!n.button}function n2(){var n=this.ownerSVGElement||this;return n.hasAttribute("viewBox")?(n=n.viewBox.baseVal,[[n.x,n.y],[n.x+n.width,n.y+n.height]]):[[0,0],[n.width.baseVal.value,n.height.baseVal.value]]}function i2(){return navigator.maxTouchPoints||"ontouchstart"in this}function fc(n){for(;!n.__brush;)if(!(n=n.parentNode))return;return n.__brush}function r2(n){return n[0][0]===n[1][0]||n[0][1]===n[1][1]}function o2(){return s2(ss)}function s2(n){var t=n2,e=e2,i=i2,r=!0,o=Bi("start","brush","end"),s=6,a;function l(g){var m=g.property("__brush",y).selectAll(".overlay").data([uc("overlay")]);m.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",On.overlay).merge(m).each(function(){var v=fc(this).extent;st(this).attr("x",v[0][0]).attr("y",v[0][1]).attr("width",v[1][0]-v[0][0]).attr("height",v[1][1]-v[0][1])}),g.selectAll(".selection").data([uc("selection")]).enter().append("rect").attr("class","selection").attr("cursor",On.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var x=g.selectAll(".handle").data(n.handles,function(v){return v.type});x.exit().remove(),x.enter().append("rect").attr("class",function(v){return"handle handle--"+v.type}).attr("cursor",function(v){return On[v.type]}),g.each(c).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",u).filter(i).on("touchstart.brush",u).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}l.move=function(g,m,x){g.tween?g.on("start.brush",function(v){h(this,arguments).beforestart().start(v)}).on("interrupt.brush end.brush",function(v){h(this,arguments).end(v)}).tween("brush",function(){var v=this,b=v.__brush,k=h(v,arguments),M=b.selection,P=n.input(typeof m=="function"?m.apply(this,arguments):m,b.extent),$=ce(M,P);function _(L){b.selection=L===1&&P===null?null:$(L),c.call(v),k.brush()}return M!==null&&P!==null?_:_(1)}):g.each(function(){var v=this,b=arguments,k=v.__brush,M=n.input(typeof m=="function"?m.apply(v,b):m,k.extent),P=h(v,b).beforestart();Ni(v),k.selection=M===null?null:M,c.call(v),P.start(x).brush(x).end(x)})},l.clear=function(g,m){l.move(g,null,m)};function c(){var g=st(this),m=fc(this).selection;m?(g.selectAll(".selection").style("display",null).attr("x",m[0][0]).attr("y",m[0][1]).attr("width",m[1][0]-m[0][0]).attr("height",m[1][1]-m[0][1]),g.selectAll(".handle").style("display",null).attr("x",function(x){return x.type[x.type.length-1]==="e"?m[1][0]-s/2:m[0][0]-s/2}).attr("y",function(x){return x.type[0]==="s"?m[1][1]-s/2:m[0][1]-s/2}).attr("width",function(x){return x.type==="n"||x.type==="s"?m[1][0]-m[0][0]+s:s}).attr("height",function(x){return x.type==="e"||x.type==="w"?m[1][1]-m[0][1]+s:s})):g.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function h(g,m,x){var v=g.__brush.emitter;return v&&(!x||!v.clean)?v:new f(g,m,x)}function f(g,m,x){this.that=g,this.args=m,this.state=g.__brush,this.active=0,this.clean=x}f.prototype={beforestart:function(){return++this.active===1&&(this.state.emitter=this,this.starting=!0),this},start:function(g,m){return this.starting?(this.starting=!1,this.emit("start",g,m)):this.emit("brush",g),this},brush:function(g,m){return this.emit("brush",g,m),this},end:function(g,m){return--this.active===0&&(delete this.state.emitter,this.emit("end",g,m)),this},emit:function(g,m,x){var v=st(this.that).datum();o.call(g,this.that,new Kv(g,{sourceEvent:m,target:l,selection:n.output(this.state.selection),mode:x,dispatch:o}),v)}};function u(g){if(a&&!g.touches||!e.apply(this,arguments))return;var m=this,x=g.target.__data__.type,v=(r&&g.metaKey?x="overlay":x)==="selection"?vf:r&&g.altKey?Yi:Gi,b=n===hc?null:Qv[x],k=n===ss?null:t2[x],M=fc(m),P=M.extent,$=M.selection,_=P[0][0],L,I,E=P[0][1],C,S,w=P[1][0],A,T,F=P[1][1],D,R,z=0,B=0,W,K=b&&k&&r&&g.shiftKey,X,q,N=Array.from(g.touches||[g],ct=>{const it=ct.identifier;return ct=pn(ct,m),ct.point0=ct.slice(),ct.identifier=it,ct});Ni(m);var H=h(m,arguments,!0).beforestart();if(x==="overlay"){$&&(W=!0);const ct=[N[0],N[1]||N[0]];M.selection=$=[[L=n===hc?_:Ae(ct[0][0],ct[1][0]),C=n===ss?E:Ae(ct[0][1],ct[1][1])],[A=n===hc?w:Me(ct[0][0],ct[1][0]),D=n===ss?F:Me(ct[0][1],ct[1][1])]],N.length>1&&nt(g)}else L=$[0][0],C=$[0][1],A=$[1][0],D=$[1][1];I=L,S=C,T=A,R=D;var Y=st(m).attr("pointer-events","none"),G=Y.selectAll(".overlay").attr("cursor",On[x]);if(g.touches)H.moved=O,H.ended=et;else{var Q=st(g.view).on("mousemove.brush",O,!0).on("mouseup.brush",et,!0);r&&Q.on("keydown.brush",ht,!0).on("keyup.brush",ft,!0),ic(g.view)}c.call(m),H.start(g,v.name);function O(ct){for(const it of ct.changedTouches||[ct])for(const U of N)U.identifier===it.identifier&&(U.cur=pn(it,m));if(K&&!X&&!q&&N.length===1){const it=N[0];wf(it.cur[0]-it[0])>wf(it.cur[1]-it[1])?q=!0:X=!0}for(const it of N)it.cur&&(it[0]=it.cur[0],it[1]=it.cur[1]);W=!0,cc(ct),nt(ct)}function nt(ct){const it=N[0],U=it.point0;var at;switch(z=it[0]-U[0],B=it[1]-U[1],v){case lc:case vf:{b&&(z=Me(_-L,Ae(w-A,z)),I=L+z,T=A+z),k&&(B=Me(E-C,Ae(F-D,B)),S=C+B,R=D+B);break}case Gi:{N[1]?(b&&(I=Me(_,Ae(w,N[0][0])),T=Me(_,Ae(w,N[1][0])),b=1),k&&(S=Me(E,Ae(F,N[0][1])),R=Me(E,Ae(F,N[1][1])),k=1)):(b<0?(z=Me(_-L,Ae(w-L,z)),I=L+z,T=A):b>0&&(z=Me(_-A,Ae(w-A,z)),I=L,T=A+z),k<0?(B=Me(E-C,Ae(F-C,B)),S=C+B,R=D):k>0&&(B=Me(E-D,Ae(F-D,B)),S=C,R=D+B));break}case Yi:{b&&(I=Me(_,Ae(w,L-z*b)),T=Me(_,Ae(w,A+z*b))),k&&(S=Me(E,Ae(F,C-B*k)),R=Me(E,Ae(F,D+B*k)));break}}T<I&&(b*=-1,at=L,L=A,A=at,at=I,I=T,T=at,x in Af&&G.attr("cursor",On[x=Af[x]])),R<S&&(k*=-1,at=C,C=D,D=at,at=S,S=R,R=at,x in Sf&&G.attr("cursor",On[x=Sf[x]])),M.selection&&($=M.selection),X&&(I=$[0][0],T=$[1][0]),q&&(S=$[0][1],R=$[1][1]),($[0][0]!==I||$[0][1]!==S||$[1][0]!==T||$[1][1]!==R)&&(M.selection=[[I,S],[T,R]],c.call(m),H.brush(ct,v.name))}function et(ct){if(Jv(ct),ct.touches){if(ct.touches.length)return;a&&clearTimeout(a),a=setTimeout(function(){a=null},500)}else rc(ct.view,W),Q.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);Y.attr("pointer-events","all"),G.attr("cursor",On.overlay),M.selection&&($=M.selection),r2($)&&(M.selection=null,c.call(m)),H.end(ct,v.name)}function ht(ct){switch(ct.keyCode){case 16:{K=b&&k;break}case 18:{v===Gi&&(b&&(A=T-z*b,L=I+z*b),k&&(D=R-B*k,C=S+B*k),v=Yi,nt(ct));break}case 32:{(v===Gi||v===Yi)&&(b<0?A=T-z:b>0&&(L=I-z),k<0?D=R-B:k>0&&(C=S-B),v=lc,G.attr("cursor",On.selection),nt(ct));break}default:return}cc(ct)}function ft(ct){switch(ct.keyCode){case 16:{K&&(X=q=K=!1,nt(ct));break}case 18:{v===Yi&&(b<0?A=T:b>0&&(L=I),k<0?D=R:k>0&&(C=S),v=Gi,nt(ct));break}case 32:{v===lc&&(ct.altKey?(b&&(A=T-z*b,L=I+z*b),k&&(D=R-B*k,C=S+B*k),v=Yi):(b<0?A=T:b>0&&(L=I),k<0?D=R:k>0&&(C=S),v=Gi),G.attr("cursor",On[x]),nt(ct));break}default:return}cc(ct)}}function d(g){h(this,arguments).moved(g)}function p(g){h(this,arguments).ended(g)}function y(){var g=this.__brush||{selection:null};return g.extent=Mf(t.apply(this,arguments)),g.dim=n,g}return l.extent=function(g){return arguments.length?(t=typeof g=="function"?g:ac(Mf(g)),l):t},l.filter=function(g){return arguments.length?(e=typeof g=="function"?g:ac(!!g),l):e},l.touchable=function(g){return arguments.length?(i=typeof g=="function"?g:ac(!!g),l):i},l.handleSize=function(g){return arguments.length?(s=+g,l):s},l.keyModifiers=function(g){return arguments.length?(r=!!g,l):r},l.on=function(){var g=o.on.apply(o,arguments);return g===o?l:g},l}function Dt(n){return function(){return n}}const _f=Math.abs,Se=Math.atan2,wi=Math.cos,a2=Math.max,dc=Math.min,wn=Math.sin,Ie=Math.sqrt,_e=1e-12,Xi=Math.PI,as=Xi/2,Cr=2*Xi;function c2(n){return n>1?0:n<-1?Xi:Math.acos(n)}function Cf(n){return n>=1?as:n<=-1?-as:Math.asin(n)}const pc=Math.PI,gc=2*pc,ki=1e-6,l2=gc-ki;function Pf(n){this._+=n[0];for(let t=1,e=n.length;t<e;++t)this._+=arguments[t]+n[t]}function h2(n){let t=Math.floor(n);if(!(t>=0))throw new Error(`invalid digits: ${n}`);if(t>15)return Pf;const e=10**t;return function(i){this._+=i[0];for(let r=1,o=i.length;r<o;++r)this._+=Math.round(arguments[r]*e)/e+i[r]}}let u2=class{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?Pf:h2(t)}moveTo(t,e){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,e){this._append`L${this._x1=+t},${this._y1=+e}`}quadraticCurveTo(t,e,i,r){this._append`Q${+t},${+e},${this._x1=+i},${this._y1=+r}`}bezierCurveTo(t,e,i,r,o,s){this._append`C${+t},${+e},${+i},${+r},${this._x1=+o},${this._y1=+s}`}arcTo(t,e,i,r,o){if(t=+t,e=+e,i=+i,r=+r,o=+o,o<0)throw new Error(`negative radius: ${o}`);let s=this._x1,a=this._y1,l=i-t,c=r-e,h=s-t,f=a-e,u=h*h+f*f;if(this._x1===null)this._append`M${this._x1=t},${this._y1=e}`;else if(u>ki)if(!(Math.abs(f*l-c*h)>ki)||!o)this._append`L${this._x1=t},${this._y1=e}`;else{let d=i-s,p=r-a,y=l*l+c*c,g=d*d+p*p,m=Math.sqrt(y),x=Math.sqrt(u),v=o*Math.tan((pc-Math.acos((y+u-g)/(2*m*x)))/2),b=v/x,k=v/m;Math.abs(b-1)>ki&&this._append`L${t+b*h},${e+b*f}`,this._append`A${o},${o},0,0,${+(f*d>h*p)},${this._x1=t+k*l},${this._y1=e+k*c}`}}arc(t,e,i,r,o,s){if(t=+t,e=+e,i=+i,s=!!s,i<0)throw new Error(`negative radius: ${i}`);let a=i*Math.cos(r),l=i*Math.sin(r),c=t+a,h=e+l,f=1^s,u=s?r-o:o-r;this._x1===null?this._append`M${c},${h}`:(Math.abs(this._x1-c)>ki||Math.abs(this._y1-h)>ki)&&this._append`L${c},${h}`,i&&(u<0&&(u=u%gc+gc),u>l2?this._append`A${i},${i},0,1,${f},${t-a},${e-l}A${i},${i},0,1,${f},${this._x1=c},${this._y1=h}`:u>ki&&this._append`A${i},${i},0,${+(u>=pc)},${f},${this._x1=t+i*Math.cos(o)},${this._y1=e+i*Math.sin(o)}`)}rect(t,e,i,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${i=+i}v${+r}h${-i}Z`}toString(){return this._}};function Pr(n){let t=3;return n.digits=function(e){if(!arguments.length)return t;if(e==null)t=null;else{const i=Math.floor(e);if(!(i>=0))throw new RangeError(`invalid digits: ${e}`);t=i}return n},()=>new u2(t)}function f2(n){return n.innerRadius}function d2(n){return n.outerRadius}function p2(n){return n.startAngle}function g2(n){return n.endAngle}function m2(n){return n&&n.padAngle}function y2(n,t,e,i,r,o,s,a){var l=e-n,c=i-t,h=s-r,f=a-o,u=f*l-h*c;if(!(u*u<_e))return u=(h*(t-o)-f*(n-r))/u,[n+u*l,t+u*c]}function cs(n,t,e,i,r,o,s){var a=n-e,l=t-i,c=(s?o:-o)/Ie(a*a+l*l),h=c*l,f=-c*a,u=n+h,d=t+f,p=e+h,y=i+f,g=(u+p)/2,m=(d+y)/2,x=p-u,v=y-d,b=x*x+v*v,k=r-o,M=u*y-p*d,P=(v<0?-1:1)*Ie(a2(0,k*k*b-M*M)),$=(M*v-x*P)/b,_=(-M*x-v*P)/b,L=(M*v+x*P)/b,I=(-M*x+v*P)/b,E=$-g,C=_-m,S=L-g,w=I-m;return E*E+C*C>S*S+w*w&&($=L,_=I),{cx:$,cy:_,x01:-h,y01:-f,x11:$*(r/k-1),y11:_*(r/k-1)}}function Ce(){var n=f2,t=d2,e=Dt(0),i=null,r=p2,o=g2,s=m2,a=null,l=Pr(c);function c(){var h,f,u=+n.apply(this,arguments),d=+t.apply(this,arguments),p=r.apply(this,arguments)-as,y=o.apply(this,arguments)-as,g=_f(y-p),m=y>p;if(a||(a=h=l()),d<u&&(f=d,d=u,u=f),!(d>_e))a.moveTo(0,0);else if(g>Cr-_e)a.moveTo(d*wi(p),d*wn(p)),a.arc(0,0,d,p,y,!m),u>_e&&(a.moveTo(u*wi(y),u*wn(y)),a.arc(0,0,u,y,p,m));else{var x=p,v=y,b=p,k=y,M=g,P=g,$=s.apply(this,arguments)/2,_=$>_e&&(i?+i.apply(this,arguments):Ie(u*u+d*d)),L=dc(_f(d-u)/2,+e.apply(this,arguments)),I=L,E=L,C,S;if(_>_e){var w=Cf(_/u*wn($)),A=Cf(_/d*wn($));(M-=w*2)>_e?(w*=m?1:-1,b+=w,k-=w):(M=0,b=k=(p+y)/2),(P-=A*2)>_e?(A*=m?1:-1,x+=A,v-=A):(P=0,x=v=(p+y)/2)}var T=d*wi(x),F=d*wn(x),D=u*wi(k),R=u*wn(k);if(L>_e){var z=d*wi(v),B=d*wn(v),W=u*wi(b),K=u*wn(b),X;if(g<Xi)if(X=y2(T,F,W,K,z,B,D,R)){var q=T-X[0],N=F-X[1],H=z-X[0],Y=B-X[1],G=1/wn(c2((q*H+N*Y)/(Ie(q*q+N*N)*Ie(H*H+Y*Y)))/2),Q=Ie(X[0]*X[0]+X[1]*X[1]);I=dc(L,(u-Q)/(G-1)),E=dc(L,(d-Q)/(G+1))}else I=E=0}P>_e?E>_e?(C=cs(W,K,T,F,d,E,m),S=cs(z,B,D,R,d,E,m),a.moveTo(C.cx+C.x01,C.cy+C.y01),E<L?a.arc(C.cx,C.cy,E,Se(C.y01,C.x01),Se(S.y01,S.x01),!m):(a.arc(C.cx,C.cy,E,Se(C.y01,C.x01),Se(C.y11,C.x11),!m),a.arc(0,0,d,Se(C.cy+C.y11,C.cx+C.x11),Se(S.cy+S.y11,S.cx+S.x11),!m),a.arc(S.cx,S.cy,E,Se(S.y11,S.x11),Se(S.y01,S.x01),!m))):(a.moveTo(T,F),a.arc(0,0,d,x,v,!m)):a.moveTo(T,F),!(u>_e)||!(M>_e)?a.lineTo(D,R):I>_e?(C=cs(D,R,z,B,u,-I,m),S=cs(T,F,W,K,u,-I,m),a.lineTo(C.cx+C.x01,C.cy+C.y01),I<L?a.arc(C.cx,C.cy,I,Se(C.y01,C.x01),Se(S.y01,S.x01),!m):(a.arc(C.cx,C.cy,I,Se(C.y01,C.x01),Se(C.y11,C.x11),!m),a.arc(0,0,u,Se(C.cy+C.y11,C.cx+C.x11),Se(S.cy+S.y11,S.cx+S.x11),m),a.arc(S.cx,S.cy,I,Se(S.y11,S.x11),Se(S.y01,S.x01),!m))):a.arc(0,0,u,k,b,m)}if(a.closePath(),h)return a=null,h+""||null}return c.centroid=function(){var h=(+n.apply(this,arguments)+ +t.apply(this,arguments))/2,f=(+r.apply(this,arguments)+ +o.apply(this,arguments))/2-Xi/2;return[wi(f)*h,wn(f)*h]},c.innerRadius=function(h){return arguments.length?(n=typeof h=="function"?h:Dt(+h),c):n},c.outerRadius=function(h){return arguments.length?(t=typeof h=="function"?h:Dt(+h),c):t},c.cornerRadius=function(h){return arguments.length?(e=typeof h=="function"?h:Dt(+h),c):e},c.padRadius=function(h){return arguments.length?(i=h==null?null:typeof h=="function"?h:Dt(+h),c):i},c.startAngle=function(h){return arguments.length?(r=typeof h=="function"?h:Dt(+h),c):r},c.endAngle=function(h){return arguments.length?(o=typeof h=="function"?h:Dt(+h),c):o},c.padAngle=function(h){return arguments.length?(s=typeof h=="function"?h:Dt(+h),c):s},c.context=function(h){return arguments.length?(a=h??null,c):a},c}var x2=Array.prototype.slice;function mc(n){return typeof n=="object"&&"length"in n?n:Array.from(n)}function Ef(n){this._context=n}Ef.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(n,t){switch(n=+n,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(n,t):this._context.moveTo(n,t);break;case 1:this._point=2;default:this._context.lineTo(n,t);break}}};function Ui(n){return new Ef(n)}function yc(n){return n[0]}function xc(n){return n[1]}function Mi(n,t){var e=Dt(!0),i=null,r=Ui,o=null,s=Pr(a);n=typeof n=="function"?n:n===void 0?yc:Dt(n),t=typeof t=="function"?t:t===void 0?xc:Dt(t);function a(l){var c,h=(l=mc(l)).length,f,u=!1,d;for(i==null&&(o=r(d=s())),c=0;c<=h;++c)!(c<h&&e(f=l[c],c,l))===u&&((u=!u)?o.lineStart():o.lineEnd()),u&&o.point(+n(f,c,l),+t(f,c,l));if(d)return o=null,d+""||null}return a.x=function(l){return arguments.length?(n=typeof l=="function"?l:Dt(+l),a):n},a.y=function(l){return arguments.length?(t=typeof l=="function"?l:Dt(+l),a):t},a.defined=function(l){return arguments.length?(e=typeof l=="function"?l:Dt(!!l),a):e},a.curve=function(l){return arguments.length?(r=l,i!=null&&(o=r(i)),a):r},a.context=function(l){return arguments.length?(l==null?i=o=null:o=r(i=l),a):i},a}function ji(n,t,e){var i=null,r=Dt(!0),o=null,s=Ui,a=null,l=Pr(c);n=typeof n=="function"?n:n===void 0?yc:Dt(+n),t=typeof t=="function"?t:Dt(t===void 0?0:+t),e=typeof e=="function"?e:e===void 0?xc:Dt(+e);function c(f){var u,d,p,y=(f=mc(f)).length,g,m=!1,x,v=new Array(y),b=new Array(y);for(o==null&&(a=s(x=l())),u=0;u<=y;++u){if(!(u<y&&r(g=f[u],u,f))===m)if(m=!m)d=u,a.areaStart(),a.lineStart();else{for(a.lineEnd(),a.lineStart(),p=u-1;p>=d;--p)a.point(v[p],b[p]);a.lineEnd(),a.areaEnd()}m&&(v[u]=+n(g,u,f),b[u]=+t(g,u,f),a.point(i?+i(g,u,f):v[u],e?+e(g,u,f):b[u]))}if(x)return a=null,x+""||null}function h(){return Mi().defined(r).curve(s).context(o)}return c.x=function(f){return arguments.length?(n=typeof f=="function"?f:Dt(+f),i=null,c):n},c.x0=function(f){return arguments.length?(n=typeof f=="function"?f:Dt(+f),c):n},c.x1=function(f){return arguments.length?(i=f==null?null:typeof f=="function"?f:Dt(+f),c):i},c.y=function(f){return arguments.length?(t=typeof f=="function"?f:Dt(+f),e=null,c):t},c.y0=function(f){return arguments.length?(t=typeof f=="function"?f:Dt(+f),c):t},c.y1=function(f){return arguments.length?(e=f==null?null:typeof f=="function"?f:Dt(+f),c):e},c.lineX0=c.lineY0=function(){return h().x(n).y(t)},c.lineY1=function(){return h().x(n).y(e)},c.lineX1=function(){return h().x(i).y(t)},c.defined=function(f){return arguments.length?(r=typeof f=="function"?f:Dt(!!f),c):r},c.curve=function(f){return arguments.length?(s=f,o!=null&&(a=s(o)),c):s},c.context=function(f){return arguments.length?(f==null?o=a=null:a=s(o=f),c):o},c}function b2(n,t){return t<n?-1:t>n?1:t>=n?0:NaN}function v2(n){return n}function w2(){var n=v2,t=b2,e=null,i=Dt(0),r=Dt(Cr),o=Dt(0);function s(a){var l,c=(a=mc(a)).length,h,f,u=0,d=new Array(c),p=new Array(c),y=+i.apply(this,arguments),g=Math.min(Cr,Math.max(-Cr,r.apply(this,arguments)-y)),m,x=Math.min(Math.abs(g)/c,o.apply(this,arguments)),v=x*(g<0?-1:1),b;for(l=0;l<c;++l)(b=p[d[l]=l]=+n(a[l],l,a))>0&&(u+=b);for(t!=null?d.sort(function(k,M){return t(p[k],p[M])}):e!=null&&d.sort(function(k,M){return e(a[k],a[M])}),l=0,f=u?(g-c*v)/u:0;l<c;++l,y=m)h=d[l],b=p[h],m=y+(b>0?b*f:0)+v,p[h]={data:a[h],index:l,value:b,startAngle:y,endAngle:m,padAngle:x};return p}return s.value=function(a){return arguments.length?(n=typeof a=="function"?a:Dt(+a),s):n},s.sortValues=function(a){return arguments.length?(t=a,e=null,s):t},s.sort=function(a){return arguments.length?(e=a,t=null,s):e},s.startAngle=function(a){return arguments.length?(i=typeof a=="function"?a:Dt(+a),s):i},s.endAngle=function(a){return arguments.length?(r=typeof a=="function"?a:Dt(+a),s):r},s.padAngle=function(a){return arguments.length?(o=typeof a=="function"?a:Dt(+a),s):o},s}var Tf=bc(Ui);function $f(n){this._curve=n}$f.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(n,t){this._curve.point(t*Math.sin(n),t*-Math.cos(n))}};function bc(n){function t(e){return new $f(n(e))}return t._curve=n,t}function Er(n){var t=n.curve;return n.angle=n.x,delete n.x,n.radius=n.y,delete n.y,n.curve=function(e){return arguments.length?t(bc(e)):t()._curve},n}function k2(){return Er(Mi().curve(Tf))}function M2(){var n=ji().curve(Tf),t=n.curve,e=n.lineX0,i=n.lineX1,r=n.lineY0,o=n.lineY1;return n.angle=n.x,delete n.x,n.startAngle=n.x0,delete n.x0,n.endAngle=n.x1,delete n.x1,n.radius=n.y,delete n.y,n.innerRadius=n.y0,delete n.y0,n.outerRadius=n.y1,delete n.y1,n.lineStartAngle=function(){return Er(e())},delete n.lineX0,n.lineEndAngle=function(){return Er(i())},delete n.lineX1,n.lineInnerRadius=function(){return Er(r())},delete n.lineY0,n.lineOuterRadius=function(){return Er(o())},delete n.lineY1,n.curve=function(s){return arguments.length?t(bc(s)):t()._curve},n}class Lf{constructor(t,e){this._context=t,this._x=e}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,e){switch(t=+t,e=+e,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,e,t,e):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+e)/2,t,this._y0,t,e);break}}this._x0=t,this._y0=e}}function A2(n){return new Lf(n,!0)}function S2(n){return new Lf(n,!1)}function _2(n){return n.source}function C2(n){return n.target}function If(n){let t=_2,e=C2,i=yc,r=xc,o=null,s=null,a=Pr(l);function l(){let c;const h=x2.call(arguments),f=t.apply(this,h),u=e.apply(this,h);if(o==null&&(s=n(c=a())),s.lineStart(),h[0]=f,s.point(+i.apply(this,h),+r.apply(this,h)),h[0]=u,s.point(+i.apply(this,h),+r.apply(this,h)),s.lineEnd(),c)return s=null,c+""||null}return l.source=function(c){return arguments.length?(t=c,l):t},l.target=function(c){return arguments.length?(e=c,l):e},l.x=function(c){return arguments.length?(i=typeof c=="function"?c:Dt(+c),l):i},l.y=function(c){return arguments.length?(r=typeof c=="function"?c:Dt(+c),l):r},l.context=function(c){return arguments.length?(c==null?o=s=null:s=n(o=c),l):o},l}function P2(){return If(A2)}function E2(){return If(S2)}const Kn={draw(n,t){const e=Ie(t/Xi);n.moveTo(e,0),n.arc(0,0,e,0,Cr)}},vc={draw(n,t){const e=Ie(t/5)/2;n.moveTo(-3*e,-e),n.lineTo(-e,-e),n.lineTo(-e,-3*e),n.lineTo(e,-3*e),n.lineTo(e,-e),n.lineTo(3*e,-e),n.lineTo(3*e,e),n.lineTo(e,e),n.lineTo(e,3*e),n.lineTo(-e,3*e),n.lineTo(-e,e),n.lineTo(-3*e,e),n.closePath()}},Ff=Ie(1/3),T2=Ff*2,wc={draw(n,t){const e=Ie(t/T2),i=e*Ff;n.moveTo(0,-e),n.lineTo(i,0),n.lineTo(0,e),n.lineTo(-i,0),n.closePath()}},kc={draw(n,t){const e=Ie(t),i=-e/2;n.rect(i,i,e,e)}},Mc=Ie(3),Ac={draw(n,t){const e=-Ie(t/(Mc*3));n.moveTo(0,e*2),n.lineTo(-Mc*e,-e),n.lineTo(Mc*e,-e),n.closePath()}},$2=Ie(3),Sc={draw(n,t){const e=Ie(t)*.6824,i=e/2,r=e*$2/2;n.moveTo(0,-e),n.lineTo(r,i),n.lineTo(-r,i),n.closePath()}};function rn(n,t){let e=null,i=Pr(r);n=typeof n=="function"?n:Dt(n||Kn),t=typeof t=="function"?t:Dt(t===void 0?64:+t);function r(){let o;if(e||(e=o=i()),n.apply(this,arguments).draw(e,+t.apply(this,arguments)),o)return e=null,o+""||null}return r.type=function(o){return arguments.length?(n=typeof o=="function"?o:Dt(o),r):n},r.size=function(o){return arguments.length?(t=typeof o=="function"?o:Dt(+o),r):t},r.context=function(o){return arguments.length?(e=o??null,r):e},r}function Df(){}function Rf(n,t,e){n._context.bezierCurveTo(n._x1+n._k*(n._x2-n._x0),n._y1+n._k*(n._y2-n._y0),n._x2+n._k*(n._x1-t),n._y2+n._k*(n._y1-e),n._x2,n._y2)}function _c(n,t){this._context=n,this._k=(1-t)/6}_c.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Rf(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(n,t){switch(n=+n,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(n,t):this._context.moveTo(n,t);break;case 1:this._point=2,this._x1=n,this._y1=t;break;case 2:this._point=3;default:Rf(this,n,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=n,this._y0=this._y1,this._y1=this._y2,this._y2=t}},function n(t){function e(i){return new _c(i,t)}return e.tension=function(i){return n(+i)},e}(0);function L2(n,t,e){var i=n._x1,r=n._y1,o=n._x2,s=n._y2;if(n._l01_a>_e){var a=2*n._l01_2a+3*n._l01_a*n._l12_a+n._l12_2a,l=3*n._l01_a*(n._l01_a+n._l12_a);i=(i*a-n._x0*n._l12_2a+n._x2*n._l01_2a)/l,r=(r*a-n._y0*n._l12_2a+n._y2*n._l01_2a)/l}if(n._l23_a>_e){var c=2*n._l23_2a+3*n._l23_a*n._l12_a+n._l12_2a,h=3*n._l23_a*(n._l23_a+n._l12_a);o=(o*c+n._x1*n._l23_2a-t*n._l12_2a)/h,s=(s*c+n._y1*n._l23_2a-e*n._l12_2a)/h}n._context.bezierCurveTo(i,r,o,s,n._x2,n._y2)}function zf(n,t){this._context=n,this._alpha=t}zf.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(n,t){if(n=+n,t=+t,this._point){var e=this._x2-n,i=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(n,t):this._context.moveTo(n,t);break;case 1:this._point=2;break;case 2:this._point=3;default:L2(this,n,t);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=n,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const Bf=function n(t){function e(i){return t?new zf(i,t):new _c(i,0)}return e.alpha=function(i){return n(+i)},e}(.5);function Of(n){this._context=n}Of.prototype={areaStart:Df,areaEnd:Df,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(n,t){n=+n,t=+t,this._point?this._context.lineTo(n,t):(this._point=1,this._context.moveTo(n,t))}};function I2(n){return new Of(n)}function ls(n,t){this._context=n,this._t=t}ls.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&this._point===2&&this._context.lineTo(this._x,this._y),(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(n,t){switch(n=+n,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(n,t):this._context.moveTo(n,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(n,t);else{var e=this._x*(1-this._t)+n*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,t)}break}}this._x=n,this._y=t}};function Nf(n){return new ls(n,.5)}function Wf(n){return new ls(n,0)}function Hf(n){return new ls(n,1)}class Vf{constructor(t,e,i,r,o,s){var m;if(this.width=0,this.height=0,this.brush=null,this.brushGroup=null,this.programmatic=!1,this.config=t,this.events=o,!t.enabled){this.group=e.append("g").style("display","none");return}this.height=t.height||40,t.margin;const a=r-this.height-10;this.width=i.width,this.group=e.append("g").attr("class","katucharts-navigator").attr("transform",`translate(${i.x},${a})`);const l=t.maskFill??"rgba(102,133,194,0.3)",c=t.maskInside??!0,h=((m=t.series)==null?void 0:m.color)??"#6699cc",f=t.handles||{},u=f.backgroundColor??"#f2f2f2",d=f.borderColor??"#999999",p=f.enabled!==!1;this.group.append("rect").attr("width",this.width).attr("height",this.height).attr("fill","#f2f2f2").attr("stroke",t.outlineColor||"#cccccc").attr("stroke-width",t.outlineWidth||1),this.renderSeriesLine(s,h);const y=o2().extent([[0,0],[this.width,this.height]]).on("end",x=>{if(this.programmatic||!x.selection)return;const[v,b]=x.selection;o.emit("navigator:brushed",{x0:v/this.width,x1:b/this.width})});this.brush=y;const g=this.group.append("g").attr("class","katucharts-navigator-brush").call(y);this.brushGroup=g,g.selectAll(".selection").attr("fill",c?l:"none").attr("stroke","none"),p?g.selectAll(".handle").attr("fill",u).attr("stroke",d).attr("stroke-width",f.lineWidth??1):g.selectAll(".handle").style("display","none"),t.adaptToUpdatedData!==!1&&o.on("series:dataUpdated",x=>{this.updateSeriesLine(x,h)})}renderSeriesLine(t,e){if(t.length===0)return;const i=[Math.min(...t.map(l=>l.x)),Math.max(...t.map(l=>l.x))],r=[Math.min(...t.map(l=>l.y)),Math.max(...t.map(l=>l.y))],o=ke().domain(i).range([0,this.width]),s=ke().domain(r).range([this.height-2,2]),a=Mi().x(l=>o(l.x)).y(l=>s(l.y));this.group.selectAll(".katucharts-navigator-line").remove(),this.group.append("path").datum(t).attr("class","katucharts-navigator-line").attr("d",a).attr("fill","none").attr("stroke",e).attr("stroke-width",1)}updateSeriesLine(t,e){this.renderSeriesLine(t,e)}setSelection(t,e){if(!(!this.brush||!this.brushGroup)){if(this.programmatic=!0,t<=5e-4&&e>=.9995)this.brush.move(this.brushGroup,null);else{const i=Math.max(0,Math.min(1,t))*this.width,r=Math.max(0,Math.min(1,e))*this.width;this.brush.move(this.brushGroup,[Math.min(i,r),Math.max(i,r)])}this.programmatic=!1}}destroy(){this.group.remove()}}class Gf{constructor(t,e,i){if(this.container=null,this.config=t,this.events=i,!t.enabled)return;this.container=tc("katucharts-range-selector",e),Object.assign(this.container.style,{display:"flex",gap:`${t.buttonSpacing??4}px`,padding:"5px",alignItems:"center",flexWrap:"wrap",fontSize:"12px"}),t.floating&&(this.container.style.position="absolute",this.container.style.zIndex="10"),t.x!==void 0&&(this.container.style.left=`${t.x}px`),t.y!==void 0&&(this.container.style.top=`${t.y}px`);const r=t.buttonPosition||{};r.align==="right"?this.container.style.justifyContent="flex-end":r.align==="center"&&(this.container.style.justifyContent="center");const o=t.buttons||[{type:"month",count:1,text:"1m"},{type:"month",count:3,text:"3m"},{type:"month",count:6,text:"6m"},{type:"ytd",text:"YTD"},{type:"year",count:1,text:"1y"},{type:"all",text:"All"}],s=t.buttonTheme||{},a=t.allButtonsEnabled??!1;if(o.forEach((l,c)=>{const h=document.createElement("button");h.textContent=l.text||l.type||"",h.title=l.title||"";const f=c===(t.selected??0),u=s["states.select.fill"]||s.fill||"#e0e0e0",d=s.fill||"#fff";Object.assign(h.style,{padding:s.padding||"3px 8px",border:`1px solid ${s.stroke||"#ccc"}`,borderRadius:`${s.r??3}px`,backgroundColor:f?u:d,cursor:"pointer",fontSize:s["style.fontSize"]||"11px",fontWeight:s["style.fontWeight"]||"normal",color:s["style.color"]||"#333"}),!a&&!f&&(h.style.opacity="0.8"),h.addEventListener("click",()=>{var p;(p=l.events)!=null&&p.click&&l.events.click.call(l,new Event("click")),this.container.querySelectorAll("button").forEach(y=>{y.style.backgroundColor=d,y.style.opacity=a?"1":"0.8"}),h.style.backgroundColor=u,h.style.opacity="1",i.emit("rangeSelector:selected",{type:l.type,count:l.count,index:c})}),this.container.appendChild(h)}),t.inputEnabled!==!1){const l=t.inputPosition||{},c=document.createElement("div");c.style.display="flex",c.style.alignItems="center",c.style.gap="4px",c.style.marginLeft=l.x!==void 0?`${l.x}px`:"10px";const h=t.inputStyle||{},f=t.inputBoxBorderColor||"#ccc",u=t.inputBoxHeight??22,d=t.inputBoxWidth??90,p=document.createElement("input");p.type="date",Object.assign(p.style,{fontSize:h.fontSize||"11px",border:`1px solid ${f}`,height:`${u}px`,width:`${d}px`,padding:"0 4px",color:h.color||"#333"});const y=document.createElement("input");y.type="date",Object.assign(y.style,{fontSize:h.fontSize||"11px",border:`1px solid ${f}`,height:`${u}px`,width:`${d}px`,padding:"0 4px",color:h.color||"#333"});const g=()=>{p.value&&y.value&&i.emit("rangeSelector:dateRange",{from:new Date(p.value).getTime(),to:new Date(y.value).getTime()})};p.addEventListener("change",g),y.addEventListener("change",g);const m=t.labelStyle||{},x=document.createElement("span");x.textContent=" to ",x.style.fontSize=m.fontSize||"11px",x.style.color=m.color||"#666",c.appendChild(p),c.appendChild(x),c.appendChild(y),this.container.appendChild(c)}}destroy(){this.container&&this.container.remove()}}const F2=[{type:"month",count:1,text:"1m"},{type:"month",count:3,text:"3m"},{type:"month",count:6,text:"6m"},{type:"ytd",text:"YTD"},{type:"year",count:1,text:"1y"},{type:"all",text:"All"}],D2={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5,month:2592e6,year:31536e6};class R2{constructor(t){this.host=t,this.navigator=null,this.rangeSelector=null,this.xMin=0,this.xMax=0}setup(){var a,l;const t=this.host.getOptions(),e=(a=t.navigator)==null?void 0:a.enabled,i=(l=t.rangeSelector)==null?void 0:l.enabled;if(!e&&!i)return;const r=this.getBaseSeriesData();r.length>0&&(this.xMin=r[0].x,this.xMax=r[r.length-1].x);const o=this.host.getEvents(),s=t.rangeSelector;if(i&&(this.rangeSelector=new Gf(s,this.host.getContainer(),o),this.placeRangeSelectorOnTop(),o.on("rangeSelector:selected",c=>this.applyButton(c)),o.on("rangeSelector:dateRange",c=>this.applyXRange(c.from,c.to))),e&&(this.navigator=new Vf(t.navigator,this.host.getSvg(),this.host.getLayout().plotArea,this.host.getChartHeight(),o,r),o.on("navigator:brushed",c=>{const h=this.xMax-this.xMin;this.applyXRange(this.xMin+c.x0*h,this.xMin+c.x1*h)})),i){const c=s.selected;if(c!=null){const h=(s.buttons||F2)[c];h&&this.applyButton(h)}}o.on("chart:afterZoom",()=>{const c=this.host.getXAxes()[0];if(c){const[h,f]=c.scale.domain();this.syncNavigator(+h,+f)}})}getBaseSeriesData(){const t=this.host.getSeriesInstances();return t.length===0?[]:t[0].data.map(i=>({x:i.x??0,y:i.close??i.y??0})).filter(i=>i.y!==null&&i.y!==void 0&&Number.isFinite(i.x))}placeRangeSelectorOnTop(){const t=this.host.getContainer(),e=t.querySelector(".katucharts-range-selector");e&&t.firstChild&&e!==t.firstChild&&t.insertBefore(e,t.firstChild)}applyButton(t){const e=t.type,i=t.count??1;if(e==="all"){this.applyXRange(this.xMin,this.xMax);return}if(e==="ytd"){const o=new Date(this.xMax),s=Date.UTC(o.getUTCFullYear(),0,1);this.applyXRange(Math.max(this.xMin,s),this.xMax);return}const r=D2[e];r&&this.applyXRange(Math.max(this.xMin,this.xMax-i*r),this.xMax)}applyXRange(t,e){if(!(!Number.isFinite(t)||!Number.isFinite(e)||e<=t)){for(const i of this.host.getXAxes())i.updateDomain({min:t,max:e});this.host.rerender(),this.syncNavigator(t,e)}}syncNavigator(t,e){if(!this.navigator)return;const i=this.xMax-this.xMin;i<=0||this.navigator.setSelection((t-this.xMin)/i,(e-this.xMin)/i)}destroy(){var t,e;(t=this.navigator)==null||t.destroy(),(e=this.rangeSelector)==null||e.destroy()}}const Vn=class Vn{constructor(t,e){var h,f;this.xAxes=[],this.yAxes=[],this.seriesInstances=[],this.tooltip=null,this.legend=null,this.crosshair=null,this.credits=null,this.exportButton=null,this.responsiveEngine=null,this.stock=null,this.clipPathId="",this.autoHeight=!1,this.resizeObserver=null,this.isResponsiveUpdate=!1,this.scrollableInner=null,this.scrollableOuterWidth=0,this.scrollableOuterHeight=0,this.useVerticalScroll=!1,this.useHorizontalScroll=!1,this.fixedAxisOverlay=null,this.container=_v(t),this.container.style.position="relative";const i=new qn;this.options=i.parse(e),this.originalUserOptions=ho(e),fv(((h=this.options.time)==null?void 0:h.useUTC)!==!1),this.events=new Gh,this.state=new my(this.options,this.events),this.layoutEngine=new by;const r=rf(this.container,this.getDefaultHeightAspectRatio()),o=this.options.chart.width||r.width||600;let s=this.resolveHeight(this.options.chart.height,r.height);const a=this.options.chart.scrollablePlotArea,l=(a==null?void 0:a.minWidth)&&a.minWidth>o;if(this.autoHeight=this.options.chart.height==null&&!r.heightMeasured,this.chartWidth=l?a.minWidth:o,this.autoHeight){const u=a!=null&&a.minHeight?Math.min(a.minHeight,Vn.MAX_AUTO_HEIGHT):0;s=Math.max(this.fitHeightToContent(s),u)}const c=(a==null?void 0:a.minHeight)&&a.minHeight>s;this.chartHeight=c?a.minHeight:s,this.scrollableOuterWidth=o,this.scrollableOuterHeight=s,this.useVerticalScroll=!!c,this.useHorizontalScroll=!!l,(c||l)&&(this.container.style.position="relative",this.container.querySelectorAll(":scope > [data-katu-scrollable-inner]").forEach(p=>{var y;return(y=p.parentElement)==null?void 0:y.removeChild(p)}),this.container.querySelectorAll(":scope > svg[data-katu-fixed-overlay]").forEach(p=>{var y;return(y=p.parentElement)==null?void 0:y.removeChild(p)}),this.scrollableInner=document.createElement("div"),this.scrollableInner.setAttribute("data-katu-scrollable-inner","1"),this.scrollableInner.style.overflowX=l?"auto":"hidden",this.scrollableInner.style.overflowY=c?"auto":"hidden",this.scrollableInner.style.width=o+"px",this.scrollableInner.style.height=s+"px",this.container.appendChild(this.scrollableInner)),this.setupResponsive(),this.applyInitialResponsiveRules(),this.autoHeight&&!this.useVerticalScroll&&(this.chartHeight=this.fitHeightToContent(this.chartHeight),this.scrollableOuterHeight=this.chartHeight),this.renderer=new ko(this.scrollableInner||this.container,this.chartWidth,this.chartHeight),this.scrollableInner&&this.renderer.svg.style("max-width","none"),this.exporter=new zv({getRenderer:()=>this.renderer,getOptions:()=>this.options,getContainer:()=>this.container,getSeriesInstances:()=>this.seriesInstances,setSize:(u,d)=>this.setSize(u,d),fireEvent:(u,...d)=>this.fireEvent(u,...d),getDefaultHeightAspectRatio:()=>this.getDefaultHeightAspectRatio(),disconnectResizeObserver:()=>{var u;return(u=this.resizeObserver)==null?void 0:u.disconnect()},observeResizeObserver:()=>{var u;return(u=this.resizeObserver)==null?void 0:u.observe(this.container)},getViewportSize:()=>this.getViewportSize(),fitToViewport:(u,d)=>this.fitToViewport(u,d)}),this.axes=new Bv({getOptions:()=>this.options,getLayout:()=>this.layout,getSeriesInstances:()=>this.seriesInstances,getXAxes:()=>this.xAxes,getYAxes:()=>this.yAxes,getAxisGroup:()=>this.axisGroup,getEvents:()=>this.events,getTooltip:()=>this.tooltip}),this.interactions=new Zv({getOptions:()=>this.options,getContainer:()=>this.container,getEvents:()=>this.events,getRenderer:()=>this.renderer,getSeriesGroup:()=>this.seriesGroup,getPlotGroup:()=>this.plotGroup,getLayout:()=>this.layout,getXAxes:()=>this.xAxes,getYAxes:()=>this.yAxes,getSeriesInstances:()=>this.seriesInstances,setSeries:u=>{this.options.series=u},rebuild:()=>{var u;this.seriesInstances.forEach(d=>d.destroy()),this.seriesInstances=[],this.buildAxes(),this.buildSeries(),this.renderAll(),(u=this.credits)==null||u.refresh()},renderAfterZoom:()=>{this.renderAxes(),this.renderSeriesInstances(),this.renderLegend()},fireEvent:(u,...d)=>this.fireEvent(u,...d)}),this.applyChartStyles(),this.computeLayout(),this.createStructuralGroups(),this.buildAxes(),this.buildSeries(),this.renderAll(),(f=this.credits)==null||f.refresh(),(c||l)&&this.createFixedAxisOverlay(),this.options.chart.reflow&&this.setupReflow(),this.interactions.setup(),this.stock=new R2({getOptions:()=>this.options,getContainer:()=>this.container,getEvents:()=>this.events,getSvg:()=>this.renderer.svg,getLayout:()=>this.layout,getChartHeight:()=>this.chartHeight,getXAxes:()=>this.xAxes,getSeriesInstances:()=>this.seriesInstances,rerender:()=>{this.renderAxes(),this.renderSeriesInstances(),this.renderLegend()}}),this.stock.setup(),this.fireEvent("load")}createFixedAxisOverlay(){const t=Rv({container:this.container,renderer:this.renderer,options:this.options,plotGroup:this.plotGroup,layout:this.layout,chartWidth:this.chartWidth,chartHeight:this.chartHeight,scrollableInner:this.scrollableInner,scrollableOuterWidth:this.scrollableOuterWidth,scrollableOuterHeight:this.scrollableOuterHeight,useVerticalScroll:this.useVerticalScroll,useHorizontalScroll:this.useHorizontalScroll,exportButton:this.exportButton,previousOverlay:this.fixedAxisOverlay});t&&(this.fixedAxisOverlay=t)}getDefaultHeightAspectRatio(){var i;const t=((i=this.options)==null?void 0:i.series)||[],e=new Set(t.map(r=>{var o,s;return(r==null?void 0:r.type)||((s=(o=this.options)==null?void 0:o.chart)==null?void 0:s.type)}));return e.has("dependencywheel")||e.has("networkgraph")?1:e.has("treemap")||e.has("sankey")?.3:e.has("pie")||e.has("donut")||e.has("radar")?.6:.5}fitHeightToContent(t){const r=4e3-this.layoutEngine.compute(this.options,this.chartWidth,4e3).plotArea.height,o=Math.max(Vn.MIN_AUTO_PLOT_HEIGHT,this.verticalCategoryCount()*Vn.MIN_CATEGORY_ROW_HEIGHT),s=Math.ceil(r+o);return s<=t?t:Math.min(s,Math.max(t,Vn.MAX_AUTO_HEIGHT))}verticalCategoryCount(){var o;const i=(this.options.series||[]).some(s=>s._internalType==="heatmap")?this.options.yAxis:this.options.chart.inverted?this.options.xAxis:null;if(!i)return 0;let r=0;for(const s of i){const a=((o=s.categories)==null?void 0:o.length)??0;a>r&&(r=a)}return r}resolveHeight(t,e){if(typeof t=="number")return t;if(typeof t=="string"){if(t.endsWith("%"))return parseFloat(t)/100*e;const i=parseFloat(t);if(!isNaN(i)&&i>0)return i}return e||400}applyChartStyles(){const t=this.options.chart.backgroundColor;t&&this.renderer.svg.append("rect").attr("class","katucharts-background").attr("width",this.chartWidth).attr("height",this.chartHeight).attr("fill",t).attr("rx",this.options.chart.borderRadius??0),this.options.chart.borderWidth&&this.renderer.svg.append("rect").attr("class","katucharts-border").attr("width",this.chartWidth).attr("height",this.chartHeight).attr("fill","none").attr("stroke",this.options.chart.borderColor||"#335cad").attr("stroke-width",this.options.chart.borderWidth).attr("rx",this.options.chart.borderRadius??0)}computeLayout(){this.layout=this.layoutEngine.compute(this.options,this.chartWidth,this.chartHeight)}createStructuralGroups(){var a,l,c,h;this.titleGroup=this.renderer.createGroup("katucharts-title-group"),this.renderTitles(),this.plotGroup=this.renderer.createGroup("katucharts-plot-group"),this.plotGroup.attr("transform",`translate(${this.layout.plotArea.x},${this.layout.plotArea.y})`);const t=this.options.chart.plotBackgroundColor;t&&this.plotGroup.append("rect").attr("class","katucharts-plot-background").attr("width",this.layout.plotArea.width).attr("height",this.layout.plotArea.height).attr("fill",t);const e=this.options.chart.plotBorderWidth;e&&this.plotGroup.append("rect").attr("class","katucharts-plot-border").attr("width",this.layout.plotArea.width).attr("height",this.layout.plotArea.height).attr("fill","none").attr("stroke",this.options.chart.plotBorderColor||"#cccccc").attr("stroke-width",e),this.options.chart.plotShadow&&((a=this.plotGroup.node())==null||a.setAttribute("filter","drop-shadow(3px 3px 6px rgba(0,0,0,0.15))")),this.clipPathId=this.renderer.createClipPath(0,0,this.layout.plotArea.width,this.layout.plotArea.height),this.axisGroup=this.renderer.createGroup("katucharts-axis-group",this.plotGroup),this.seriesGroup=this.renderer.createGroup("katucharts-series-group",this.plotGroup),this.stackLabelsGroup=this.renderer.createGroup("katucharts-stack-labels-group",this.plotGroup);const i=this.options.series.some(f=>f.clip===!1||gg.has(f._internalType)),r=this.options.series.some(f=>mg.has(f._internalType));!Bl(this.options.series)&&!i&&(r&&(this.clipPathId=this.renderer.createClipPath(-12,-12,this.layout.plotArea.width+2*12,this.layout.plotArea.height+2*12)),this.seriesGroup.attr("clip-path",`url(#${this.clipPathId})`)),this.tooltip=new es(this.options.tooltip,this.container,this.layout.plotArea,this.events),(l=this.options.tooltip)!=null&&l.shared&&this.tooltip.setSharedPointsProvider(f=>this.collectSharedPointsAt(f)),this.legend=new ns({...this.options.legend,_backgroundColor:this.options.chart.backgroundColor},this.renderer.svg,this.events),this.credits=new $v(this.options.credits,this.renderer.svg,this.chartWidth,this.chartHeight),this.options.exporting.enabled!==!1&&(this.exportButton=new lf(this.options.exporting,this.renderer.svg,this.container,this.chartWidth,this.chartHeight,f=>this.handleExportAction(f)));const o=(c=this.options.xAxis[0])==null?void 0:c.crosshair,s=(h=this.options.yAxis[0])==null?void 0:h.crosshair;(o||s)&&(this.crosshair=new sf(o,s,this.plotGroup,this.layout.plotArea,this.events))}renderTitles(){Dv({titleGroup:this.titleGroup,container:this.container,options:this.options,layout:this.layout,chartWidth:this.chartWidth})}buildAxes(){this.xAxes=this.options.xAxis.map(t=>Qa(t,this.layout.plotArea)),this.yAxes=this.options.yAxis.map(t=>Qa(t,this.layout.plotArea))}buildSeries(){const t=this.options;this.seriesInstances=t.series.map((e,i)=>{const r=e._internalType,o=$t.getType(r);if(!o){console.warn(`KatuCharts: unknown series type "${r}", falling back to line`);const s=$t.getType("line");if(!s)throw new Error("KatuCharts: line series type not registered");return new s(e)}return new o(e)})}collectSharedPointsAt(t){var r;const e=[],i=typeof t=="number"?t:NaN;for(let o=0;o<this.seriesInstances.length;o++){const s=this.seriesInstances[o],a=this.options.series[o];if(!s.visible||a.enableMouseTracking===!1)continue;const l=s.data;if(!l||l.length===0)continue;let c=null,h=1/0;for(const p of l){if(p.x===void 0||p.x===null)continue;const y=Math.abs(p.x-i);y<h&&(h=y,c=p)}if(!c)continue;const f=c.close??c.y??c.high;if(f==null)continue;const u=this.xAxes[a._xAxisIndex]||this.xAxes[0],d=this.yAxes[a._yAxisIndex]||this.yAxes[0];e.push({point:c,plotX:u.getPixelForValue(c.x),plotY:d.getPixelForValue(f),series:{name:a.name??"",color:((r=s.getColor)==null?void 0:r.call(s))??a.color??"#333",config:a}})}return e}renderAll(){this.updateAxesDomains(),this.updateTooltipCategories(),this.renderAxes(),this.renderSeriesInstances(),this.renderStackLabels(),this.raiseplotLineLabels(),this.renderLegend(),this.fireEvent("render")}formatStackLabel(t,e){return e.formatter?e.formatter.call({total:t}):e.format?de(Kt(e.format,{total:t})):this.options.chart.numberFormatter?this.options.chart.numberFormatter(t):Ko(t,0,".",",")}renderStackLabels(){if(this.stackLabelsGroup){this.stackLabelsGroup.selectAll("*").remove();for(let t=0;t<this.yAxes.length;t++){const i=this.yAxes[t].config.stackLabels;if(!(i!=null&&i.enabled))continue;const r=this.seriesInstances.map((a,l)=>({series:a,cfg:this.options.series[l]})).filter(({series:a,cfg:l})=>a.visible&&l._yAxisIndex===t&&(l._internalType==="column"||l._internalType==="bar")&&l.stacking&&l.stacking!=="percent");if(r.length===0)continue;const o=new Map;for(const{series:a,cfg:l}of r){const c=is(l);o.has(c)||o.set(c,{totals:new Map,series:[],type:l._internalType,xAxis:this.xAxes[l._xAxisIndex]||this.xAxes[0],yAxis:this.yAxes[l._yAxisIndex]||this.yAxes[0]});const h=o.get(c);h.series.push(a),Hi(a.data,h.totals)}const s=this.stackLabelsGroup.append("g").attr("class",`katucharts-stack-labels katucharts-stack-labels-axis-${t}`);for(const[a,l]of o){const c=s.append("g").attr("class","katucharts-stack-labels-stack").attr("data-stack-key",a);for(const[h,f]of l.totals.entries()){if(!isFinite(f)||f===0)continue;const u=this.formatStackLabel(f,i),d=l.type==="bar",p=f<0,y=l.xAxis.getPixelForValue(h),g=l.yAxis.getPixelForValue(f),m=d?p?"end":"start":"middle",x=d?"central":p?"hanging":"auto",v=d?g+(p?-6:6):y,b=d?y:g+(p?6:-6),k=v+(i.x??0),M=b+(i.y??0),P=c.append("text").attr("class","katucharts-stack-label").attr("x",k).attr("y",M).attr("text-anchor",i.align==="left"?"start":i.align==="right"?"end":m).text(u);i.verticalAlign==="middle"||d?P.attr("dominant-baseline",x):i.verticalAlign==="bottom"&&P.attr("dominant-baseline","hanging");const $=i.style||{};P.style("fill",$.color??"#000000").style("font-size",$.fontSize??"11px").style("font-weight",$.fontWeight??"bold"),$.textOutline&&P.style("text-shadow",$.textOutline),i.rotation&&P.attr("transform",`rotate(${i.rotation},${k},${M})`)}}}}}raiseplotLineLabels(){const t=this.plotGroup.node();t&&this.axisGroup.selectAll(".katucharts-plot-line-label").each(function(){t.appendChild(this)})}updateTooltipCategories(){this.axes.updateTooltipCategories()}updateAxesDomains(){this.axes.updateAxesDomains()}renderAxes(){this.axes.renderAxes()}renderSeriesInstances(){var h;this.seriesGroup.selectAll("*").remove();const t=new Map,e=new Map;for(const f of this.options.series){const u=f._internalType;t.set(u,(t.get(u)||0)+1),e.set(u,0)}const i=this.options.chart.animation!==!1,r=is,o=new Map,s=new Map,a=new Map,l=new Map;for(let f=0;f<this.options.series.length;f++){const u=this.options.series[f];if(u.stacking){const d=r(u);o.set(d,(o.get(d)||0)+1),a.has(d)||a.set(d,new Map);const p=a.get(d),y=this.seriesInstances[f];y.processData(),Hi(y.data,p)}}const c=new Map;for(let f=0;f<this.options.series.length;f++){const u=this.options.series[f];if(!u.stacking)continue;const d=r(u);c.has(d)||c.set(d,new Map);const p=c.get(d);l.set(f,new Map(p)),Hi(this.seriesInstances[f].data,p)}for(let f=0;f<this.seriesInstances.length;f++){const u=this.seriesInstances[f],d=this.options.series[f],p=this.xAxes[d._xAxisIndex]||this.xAxes[0],y=this.yAxes[d._yAxisIndex]||this.yAxes[0],g=d._internalType,m=e.get(g)||0;e.set(g,m+1);let x;d.stacking&&(x=l.get(f)||new Map);const v={plotArea:this.layout.plotArea,xAxis:p,yAxis:y,colorIndex:f,colors:this.options.colors,events:this.events,chartGroup:this.seriesGroup,plotGroup:this.plotGroup,totalSeriesOfType:d.stacking?o.get(r(d))||1:t.get(g)||1,indexInType:d.stacking?s.get(r(d))||0:m,animate:i&&d.animation!==!1,stackOffsets:x,stackTotals:d.stacking?a.get(r(d)):void 0,allSeries:this.seriesInstances,inverted:!!this.options.chart.inverted,legendConfig:this.options.legend,pane:this.options.pane,backgroundColor:this.options.chart.backgroundColor};if(u.processData(),u.init(v),u.render(),d.stacking){const b=r(d);s.set(b,(s.get(b)||0)+1)}u.setOnVisibilityChange(b=>this.animatedRedraw(b)),(h=d.dataLabels)!=null&&h.enabled&&!dg.has(d._internalType)&&!pg.has(d._internalType)&&ts.render(u.group,u.data,d.dataLabels,p,y,d.name||"")}}renderLegend(){this.legend&&this.legend.render(this.seriesInstances,this.layout.legendArea)}setupReflow(){if(typeof ResizeObserver>"u")return;const t=Cv(()=>this.reflow(),100);this.resizeObserver=new ResizeObserver(t),this.resizeObserver.observe(this.container)}fireEvent(t,...e){var r;this.events.emit(`chart:${t}`,this,...e);const i=(r=this.options.chart.events)==null?void 0:r[t];typeof i=="function"&&i.call(this,...e)}get plotLeft(){return this.layout.plotArea.x}get plotTop(){return this.layout.plotArea.y}get plotWidth(){return this.layout.plotArea.width}get plotHeight(){return this.layout.plotArea.height}get plotRenderer(){const t=this.seriesGroup,e=this.xAxes,i=this.yAxes,r=this.layout.plotArea;return{rect(o,s,a,l){return t.insert("rect",":first-child").attr("x",o).attr("y",s).attr("width",a).attr("height",l)},circle(o,s,a){return t.insert("circle",":first-child").attr("cx",o).attr("cy",s).attr("r",a)},ellipse(o,s,a,l){return t.insert("ellipse",":first-child").attr("cx",o).attr("cy",s).attr("rx",a).attr("ry",l)},path(o){return t.insert("path",":first-child").attr("d",o)},line(o,s,a,l){return t.insert("line",":first-child").attr("x1",o).attr("y1",s).attr("x2",a).attr("y2",l)},text(o,s,a){return t.append("text").attr("x",s).attr("y",a).text(o)},group(o){const s=t.insert("g",":first-child");return o&&s.attr("class",o),s.style("pointer-events","none"),s},get plotArea(){return{x:0,y:0,width:r.width,height:r.height}},get localPlotArea(){return{x:0,y:0,width:r.width,height:r.height}},xAxis:{toPixels(o,s=0){var a;return((a=e[s])==null?void 0:a.getPixelForValue(o))??0}},yAxis:{toPixels(o,s=0){var a;return((a=i[s])==null?void 0:a.getPixelForValue(o))??0}}}}setupResponsive(){var t,e;(e=(t=this.options.responsive)==null?void 0:t.rules)!=null&&e.length&&(this.responsiveEngine=new hf(this.options.responsive))}applyInitialResponsiveRules(){if(!this.responsiveEngine)return;const t=this.responsiveEngine.evaluate(this.chartWidth,this.chartHeight);if(t.changed&&t.matchingIndices.length>0){const e=this.responsiveEngine.getRules();let i=ho(this.originalUserOptions);for(const o of t.matchingIndices)i=he(i,e[o].chartOptions);const r=new qn;this.options=r.parse(i),this.state.updateConfig(this.options)}}addSeries(t,e=!0){this.originalUserOptions.series||(this.originalUserOptions.series=[]),this.originalUserOptions.series.push(t);const o={...new qn().parse({series:[t]}).series[0],index:this.options.series.length};this.state.addSeries(o),this.options=this.state.getConfig();const s=$t.getType(o._internalType)||$t.getType("line");if(!s)throw new Error("KatuCharts: no series type registered");const a=new s(o);return this.seriesInstances.push(a),e&&this.redraw(),a}get(t){const e=this.seriesInstances.find(r=>r.config.id===t);if(e)return e;const i=this.xAxes.find(r=>r.config.id===t);return i||this.yAxes.find(r=>r.config.id===t)}canReuseSeriesInstances(t){return this.seriesInstances.length!==t.series.length?!1:this.seriesInstances.every((e,i)=>{var r;return e.config._internalType===((r=t.series[i])==null?void 0:r._internalType)})}syncSeriesInstances(t){for(let e=0;e<this.seriesInstances.length;e++){const i=this.seriesInstances[e],r={...t.series[e],visible:i.visible};this.options.series[e]=r,i.config=r,i.visible=r.visible!==!1,i.processData()}}update(t,e=!0){var a;this.isResponsiveUpdate||(this.originalUserOptions=he(ho(this.originalUserOptions),t));const i=new qn,r=he(this.optionsToExternal(),t);(a=t.chart)!=null&&a.type&&Array.isArray(r.series)&&r.series.forEach((l,c)=>{var f,u;const h=Array.isArray(t.series)?(f=t.series[c])==null?void 0:f.type:void 0;(u=this.options.series[c])!=null&&u._typeFromChart&&!h&&delete l.type});const o=i.parse(r),s=this.canReuseSeriesInstances(o);if(this.state.updateConfig(o),this.options=this.state.getConfig(),e)if(!s)this.redraw();else{this.buildAxes(),this.syncSeriesInstances(o);try{this.animatedRedraw(300)}catch{this.redraw()}}}animatedRedraw(t=500){this.updateAxesDomains(),this.updateTooltipCategories();for(const c of this.xAxes)c.animateAxis(this.axisGroup,this.layout.plotArea,t);for(const c of this.yAxes)c.animateAxis(this.axisGroup,this.layout.plotArea,t);const e=new Map,i=new Map,r=new Map,o=new Map,s=new Map,a=is,l=new Map;for(const c of this.seriesInstances){if(!c.visible)continue;const h=c.config._internalType;if(e.set(h,(e.get(h)||0)+1),c.config.stacking){const f=a(c.config);r.set(f,(r.get(f)||0)+1),s.has(f)||s.set(f,new Map),l.has(f)||l.set(f,new Map),Hi(c.data,l.get(f))}}for(let c=0;c<this.seriesInstances.length;c++){const h=this.seriesInstances[c];if(!h.visible)continue;const f=this.options.series[c],u=f._internalType,d=i.get(u)||0;i.set(u,d+1);let p,y,g,m;if(f.stacking){const x=a(f);p=r.get(x)||1,y=o.get(x)||0,o.set(x,y+1),g=new Map(s.get(x)),m=l.get(x)}else p=e.get(u)||1,y=d;h.updateContext({xAxis:this.xAxes[f._xAxisIndex]||this.xAxes[0],yAxis:this.yAxes[f._yAxisIndex]||this.yAxes[0],totalSeriesOfType:p,indexInType:y,stackOffsets:g,stackTotals:m}),h.animateUpdate(t),f.stacking&&Hi(h.data,s.get(a(f)))}this.renderStackLabels(),this.renderTitles(),this.renderLegend(),this.fireEvent("render")}redraw(){this.computeLayout(),this.plotGroup.attr("transform",`translate(${this.layout.plotArea.x},${this.layout.plotArea.y})`),this.renderer.updateClipPath(this.clipPathId,0,0,this.layout.plotArea.width,this.layout.plotArea.height),this.buildAxes(),this.seriesInstances.forEach(t=>t.destroy()),this.seriesInstances=[],this.buildSeries(),this.renderAll(),this.tooltip&&this.tooltip.updatePlotArea(this.layout.plotArea),this.renderTitles(),this.fireEvent("redraw")}reflow(){if(this.options.chart.width)return;const t=rf(this.container,this.getDefaultHeightAspectRatio());let e=t.width,i=this.resolveHeight(this.options.chart.height,t.height);const r=this.options.chart.scrollablePlotArea;if(r!=null&&r.minWidth&&r.minWidth>e&&(e=r.minWidth),r!=null&&r.minHeight&&r.minHeight>i&&(i=r.minHeight),this.autoHeight&&!(r!=null&&r.minHeight)){const o=this.chartWidth;this.chartWidth=e,i=this.fitHeightToContent(i),this.chartWidth=o}if(!(e===this.chartWidth&&i===this.chartHeight)){if(this.responsiveEngine){const o=this.responsiveEngine.evaluate(e,i);if(o.changed){const s=this.responsiveEngine.getRules();let a=ho(this.originalUserOptions);for(const l of o.matchingIndices)a=he(a,s[l].chartOptions);this.isResponsiveUpdate=!0,this.update(a,!1),this.isResponsiveUpdate=!1}}this.setSize(e,i)}}setSize(t,e){var i,r;this.chartWidth=t,this.chartHeight=e,this.renderer.setSize(t,e),this.renderer.svg.select(".katucharts-background").attr("width",t).attr("height",e),this.renderer.svg.select(".katucharts-border").attr("width",t).attr("height",e),(i=this.exportButton)==null||i.updatePosition(t,e),(r=this.credits)==null||r.updatePosition(t,e),this.redraw()}getViewportSize(){return this.scrollableInner?{width:this.scrollableOuterWidth,height:this.scrollableOuterHeight}:{width:this.chartWidth,height:this.chartHeight}}fitToViewport(t,e){if(!this.scrollableInner){this.setSize(t,e);return}const i=this.options.chart.scrollablePlotArea;this.scrollableOuterWidth=t,this.scrollableOuterHeight=e,this.scrollableInner.style.width=t+"px",this.scrollableInner.style.height=e+"px";const r=Math.max((i==null?void 0:i.minWidth)||0,t),o=Math.max((i==null?void 0:i.minHeight)||0,e);this.setSize(r,o),this.createFixedAxisOverlay()}setTitle(t,e){t&&(this.options.title=he(this.options.title,t),this.originalUserOptions.title=he(this.originalUserOptions.title||{},t)),e&&(this.options.subtitle=he(this.options.subtitle,e),this.originalUserOptions.subtitle=he(this.originalUserOptions.subtitle||{},e)),this.renderTitles()}addAxis(t,e=!0,i=!0){const r=e?this.options.xAxis:this.options.yAxis,o={...t,index:r.length,isX:e};r.push(o);const s=Qa(o,this.layout.plotArea);return(e?this.xAxes:this.yAxes).push(s),i&&this.redraw(),s}showLoading(t){let e=this.container.querySelector(".katucharts-loading");e||(e=document.createElement("div"),e.className="katucharts-loading",Object.assign(e.style,{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",backgroundColor:"rgba(255,255,255,0.75)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"14px",fontWeight:"bold",color:"#666",zIndex:"20"}),this.container.appendChild(e)),e.textContent=t||"Loading...",e.style.display="flex"}hideLoading(){const t=this.container.querySelector(".katucharts-loading");t&&(t.style.display="none")}destroy(){var i,r,o,s,a,l,c;this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),this.seriesInstances.forEach(h=>h.destroy()),(i=this.tooltip)==null||i.destroy(),(r=this.legend)==null||r.destroy(),(o=this.crosshair)==null||o.destroy(),(s=this.credits)==null||s.destroy(),(a=this.exportButton)==null||a.destroy(),this.interactions.destroy(),(l=this.stock)==null||l.destroy(),(c=this.responsiveEngine)==null||c.reset(),this.events.removeAllListeners(),this.renderer.destroy();const t=this.container.querySelector(".katucharts-loading");t&&t.remove();const e=this.container.querySelector(".katucharts-tooltip");e&&e.remove(),this.container.querySelectorAll(".katucharts-title-html, .katucharts-subtitle-html").forEach(h=>h.remove())}getSVG(){return this.exporter.getSVG()}getSeriesInstances(){return this.seriesInstances}get series(){return this.seriesInstances}getXAxes(){return this.xAxes}getYAxes(){return this.yAxes}handleExportAction(t){this.exporter.handleExportAction(t)}getCSV(){return this.exporter.getCSV()}getTable(){return this.exporter.getTable()}getDataRows(){return this.exporter.getDataRows()}exportChart(t,e){this.exporter.exportChart(t)}print(){this.exporter.print()}optionsToExternal(){return this.exporter.optionsToExternal()}};Vn.MIN_AUTO_PLOT_HEIGHT=160,Vn.MAX_AUTO_HEIGHT=450,Vn.MIN_CATEGORY_ROW_HEIGHT=22;let hs=Vn;const vt=600,Wt=8,Yf=0,Jn=vt+100,Z=300,us=250,pt=Qu,j=Qu,z2=500;function Pe(n,t,e,i){return i>z2?t:t+n*e}const B2={Solid:"none",ShortDash:"6,2",ShortDot:"2,2",ShortDashDot:"6,2,2,2",ShortDashDotDot:"6,2,2,2,2,2",Dot:"2,6",Dash:"8,6",LongDash:"16,6",DashDot:"8,6,2,6",LongDashDot:"16,6,2,6",LongDashDotDot:"16,6,2,6,2,6"};function on(n){return!n||n==="Solid"?"none":B2[n]||"none"}function Xf(n,t){const e=n.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);if(e){const r=Math.min(255,parseInt(e[1],16)+Math.round(255*t)),o=Math.min(255,parseInt(e[2],16)+Math.round(255*t)),s=Math.min(255,parseInt(e[3],16)+Math.round(255*t));return`rgb(${r},${o},${s})`}const i=n.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);if(i){const r=Math.min(255,parseInt(i[1])+Math.round(255*t)),o=Math.min(255,parseInt(i[2])+Math.round(255*t)),s=Math.min(255,parseInt(i[3])+Math.round(255*t));return`rgb(${r},${o},${s})`}return n}class Ut{constructor(t){this.selectedPoints=new Set,this._cachedExtents=null,this.config=t,this.visible=t.visible!==!1,this.data=t._processedData||[]}init(t){this.context=t,this.group=t.chartGroup.append("g").attr("class",`katucharts-series katucharts-series-${this.config._internalType}`).attr("data-series-index",this.config.index),this.config.opacity!==void 0&&this.config.opacity!==1&&this.group.attr("opacity",this.config.opacity),this.config.zIndex!==void 0&&this.group.style("z-index",String(this.config.zIndex)),this.config.className&&this.group.classed(this.config.className,!0),this.config.shadow&&this.applyShadowFilter(),this.visible||this.group.style("display","none"),this.config.allowPointSelect&&this.data.forEach((e,i)=>{e.selected&&this.selectedPoints.add(i)}),this.group.on("mouseenter",()=>{var e,i;(i=(e=this.config.events)==null?void 0:e.mouseOver)==null||i.call(this,new Event("mouseOver")),this.context.events.emit("series:mouseenter",this)}).on("mouseleave",()=>{var e,i;(i=(e=this.config.events)==null?void 0:e.mouseOut)==null||i.call(this,new Event("mouseOut")),this.context.events.emit("series:mouseleave",this)})}setOnVisibilityChange(t){this._onVisibilityChange=t}processData(){this.data=this.config._processedData||[],this._cachedExtents=null}getColor(){return this.config.color||this.context.colors[this.context.colorIndex%this.context.colors.length]}autoLabelColor(t){return Pn(this.context.backgroundColor,t)}labelHalo(){const t=this.labelHaloColor();return`0 0 3px ${t}, 0 0 3px ${t}`}labelHaloColor(){return Pn(this.context.backgroundColor)==="#ffffff"?"rgba(0,0,0,0.85)":"#ffffff"}autoBorderColor(){const t=this.context.backgroundColor;return!t||t==="transparent"||t==="none"?"#ffffff":t}getMultiLegendItems(){return null}getLegendSymbolShape(){return null}getBubbleLegendInfo(){return null}animateUpdate(t){this.group.selectAll("*").remove(),this.render()}updateContext(t){Object.assign(this.context,t)}redraw(){this.group.selectAll("*").remove(),this.render()}setVisible(t,e=!0){var i,r,o,s;this.visible=t,t?(r=(i=this.config.events)==null?void 0:i.show)==null||r.call(this,new Event("show")):(s=(o=this.config.events)==null?void 0:o.hide)==null||s.call(this,new Event("hide")),e&&this._onVisibilityChange?(t?this.group.style("display","").attr("opacity",0).transition().duration(300).attr("opacity",this.config.opacity??1):this.group.transition().duration(300).attr("opacity",0).on("end",()=>{this.group.style("display","none")}),this._onVisibilityChange(500)):this.group.style("display",t?"":"none"),this.context.events.emit("series:visibilityChanged",this,t)}toggleVisible(){this.setVisible(!this.visible)}getDataExtents(){if(this._cachedExtents)return this._cachedExtents;let t=1/0,e=-1/0,i=1/0,r=-1/0;for(const o of this.data)o.x!==void 0&&o.x!==null&&(o.x<t&&(t=o.x),o.x>e&&(e=o.x)),o.y!==void 0&&o.y!==null&&(o.y<i&&(i=o.y),o.y>r&&(r=o.y));return this._cachedExtents={xMin:t,xMax:e,yMin:i,yMax:r},this._cachedExtents}getCategories(){return this.data.filter(t=>t.name!==void 0).map(t=>t.name)}destroy(){var t;(t=this.group)==null||t.remove()}setData(t,e=!0,i=!0){this.data=t,this.config._processedData=t,this._cachedExtents=null,e&&(i?this.animateUpdate(500):this.redraw(),this.context.events.emit("series:dataChanged",this))}addPoint(t,e=!0,i=!1,r=!0){if(this.data.push(t),this.config._processedData=this.data,i&&this.data.length>1)this.data.shift(),this.config._processedData=this.data,this._cachedExtents=null;else if(this._cachedExtents){const o=this._cachedExtents;t.x!==void 0&&t.x!==null&&(t.x<o.xMin&&(o.xMin=t.x),t.x>o.xMax&&(o.xMax=t.x)),t.y!==void 0&&t.y!==null&&(t.y<o.yMin&&(o.yMin=t.y),t.y>o.yMax&&(o.yMax=t.y))}e&&(r?this.animateUpdate(300):this.redraw(),this.context.events.emit("series:dataChanged",this))}addPoints(t,e=!0,i=!1,r=!0){for(const o of t)this.data.push(o);i&&this.data.length>t.length&&this.data.splice(0,t.length),this.config._processedData=this.data,this._cachedExtents=null,e&&(r?this.animateUpdate(300):this.redraw(),this.context.events.emit("series:dataChanged",this))}removePoint(t,e=!0,i=!0){t>=0&&t<this.data.length&&(this.data.splice(t,1),this.config._processedData=this.data,this._cachedExtents=null,e&&(i?this.animateUpdate(300):this.redraw(),this.context.events.emit("series:dataChanged",this)))}updateSeries(t,e=!0){Object.assign(this.config,t),t.data&&(this.config._processedData=t.data,this.data=this.config._processedData,this._cachedExtents=null),e&&this.redraw()}applyBatch(t){for(const e of t.entries)switch(e.type){case"setData":this.data=e.payload,this.config._processedData=this.data;break;case"addPoint":this.data.push(e.payload.point),e.payload.shift&&this.data.length>1&&this.data.shift();break;case"addPoints":for(const i of e.payload.points)this.data.push(i);e.payload.shift&&this.data.splice(0,e.payload.points.length);break;case"removePoint":e.payload.index>=0&&e.payload.index<this.data.length&&this.data.splice(e.payload.index,1);break}this.config._processedData=this.data,this._cachedExtents=null,this.redraw(),this.context.events.emit("series:dataChanged",this)}show(){this.setVisible(!0)}hide(){this.setVisible(!1)}getSelectedPoints(){return Array.from(this.selectedPoints).map(t=>({index:t,point:this.data[t]})).filter(t=>t.point!==void 0)}applyClipPath(){const{plotArea:t}=this.context;this.clipId=`katucharts-clip-${this.config.index}-${Date.now()}`;const e=this.group.select(function(){return this.ownerSVGElement});if(!e.empty()){let i=e.select("defs");i.empty()&&(i=e.append("defs")),i.append("clipPath").attr("id",this.clipId).append("rect").attr("x",0).attr("y",0).attr("width",t.width).attr("height",t.height),this.group.attr("clip-path",`url(#${this.clipId})`)}}applyShadowFilter(){const t=this.config.shadow;if(!t)return;const e=`katucharts-shadow-${this.config.index}-${Date.now()}`,i=this.group.select(function(){return this.ownerSVGElement});if(!i.empty()){let r=i.select("defs");r.empty()&&(r=i.append("defs"));const o=typeof t=="object"?t:{},s=o.offsetX??1,a=o.offsetY??1,l=o.width??3,c=o.opacity??.15;r.append("filter").attr("id",e).append("feDropShadow").attr("dx",s).attr("dy",a).attr("stdDeviation",l).attr("flood-opacity",c),this.group.style("filter",`url(#${e})`)}}applyInactiveState(){var r,o,s,a,l;const t=this.context.allSeries;if(!t||t.length<=1)return;const e=((o=(r=this.config.states)==null?void 0:r.inactive)==null?void 0:o.opacity)??.2,i=((l=(a=(s=this.config.states)==null?void 0:s.inactive)==null?void 0:a.animation)==null?void 0:l.duration)??us;for(const c of t)c!==this&&c.visible&&c.group.transition("inactive").duration(i).ease(j).attr("opacity",e)}clearInactiveState(){var i,r,o,s,a,l;const t=this.context.allSeries;if(!t||t.length<=1)return;const e=((o=(r=(i=this.config.states)==null?void 0:i.normal)==null?void 0:r.animation)==null?void 0:o.duration)??((l=(a=(s=this.config.states)==null?void 0:s.inactive)==null?void 0:a.animation)==null?void 0:l.duration)??us;for(const c of t)c!==this&&c.visible&&c.group.transition("inactive").duration(e).ease(j).attr("opacity",c.config.opacity??1)}emitAfterAnimate(t){var o;const e=!!((o=this.config.events)!=null&&o.afterAnimate),i=typeof this.config.animation=="object"?this.config.animation:null,r=!!(i!=null&&i.complete);(e||r)&&setTimeout(()=>{var s,a,l;(a=(s=this.config.events)==null?void 0:s.afterAnimate)==null||a.call(this,new Event("afterAnimate")),(l=i==null?void 0:i.complete)==null||l.call(i)},t)}renderDataLabels(t,e,i){const r=this.config.dataLabels;if(!(r!=null&&r.enabled))return;this.group.selectAll(".katucharts-data-labels").remove();const o=this.group.append("g").attr("class","katucharts-data-labels");this.getColor(),t.forEach((s,a)=>{var y,g;if(s.y===null||s.y===void 0)return;const l=s.dataLabels,c={...r,...l};let h;if(c.formatter?h=c.formatter.call({point:{...s,index:a},series:this,x:s.x??a,y:s.y,percentage:s._percentage}):c.format?h=de(Kt(c.format,{point:s,series:{name:this.config.name??""},x:s.x,y:s.y,percentage:s._percentage??s.percentage})):h=String(s.y),c.filter){const m=s[c.filter.property??"y"]??0,x=c.filter.operator??">",v=c.filter.value??0;if(!(x===">"?m>v:x==="<"?m<v:x===">="?m>=v:x==="<="?m<=v:x==="=="?m===v:!0))return}const f=e(s,a)+(c.x??0),u=i(s,a)+(c.y??-10),d=o.append("text").attr("x",f).attr("y",u).attr("text-anchor",c.align==="left"?"start":c.align==="right"?"end":"middle").attr("dominant-baseline",c.verticalAlign==="top"?"text-before-edge":c.verticalAlign==="bottom"?"text-after-edge":"central").text(h),p=c.style||{};if(d.style("font-size",p.fontSize??kt).style("font-weight",p.fontWeight??"bold").style("fill",c.color||p.color||this.autoLabelColor()),p.textOutline&&d.style("text-shadow",p.textOutline),c.rotation&&d.attr("transform",`rotate(${c.rotation},${f},${u})`),c.backgroundColor||c.borderWidth){const m=(g=(y=d.node()).getBBox)==null?void 0:g.call(y);if(m){const x=c.padding??5,v=c.borderRadius??0;o.insert("rect",":last-child").attr("x",m.x-x).attr("y",m.y-x).attr("width",m.width+x*2).attr("height",m.height+x*2).attr("rx",v).attr("fill",c.backgroundColor||"none").attr("stroke",c.borderColor||"none").attr("stroke-width",c.borderWidth??0)}}this.context.animate&&c.defer!==!1&&d.attr("opacity",0).transition().delay(Jn+a*Wt).duration(400).ease(pt).attr("opacity",1)})}handlePointSelect(t,e,i,r){var s,a,l,c;if(!this.config.allowPointSelect)return;const o=this.selectedPoints.has(i);if(o){if(((a=(s=e.events)==null?void 0:s.unselect)==null?void 0:a.call(e,r))===!1)return;this.selectedPoints.delete(i),e.selected=!1,this.clearSelectStyle(t)}else{if(((c=(l=e.events)==null?void 0:l.select)==null?void 0:c.call(e,r))===!1)return;this.selectedPoints.add(i),e.selected=!0,this.applySelectStyle(t)}this.context.events.emit("point:select",{point:e,index:i,series:this,selected:!o})}applySelectStyle(t){var i;const e=(i=this.config.states)==null?void 0:i.select;e!=null&&e.color&&t.attr("fill",e.color),e!=null&&e.borderColor&&t.attr("stroke",e.borderColor),(e==null?void 0:e.borderWidth)!==void 0&&t.attr("stroke-width",e.borderWidth)}clearSelectStyle(t){t.attr("fill",null).attr("stroke",null).attr("stroke-width",null)}attachPointEvents(t,e,i){var s;if(this.config.enableMouseTracking===!1)return;const r=e.events||{},o=((s=this.config.point)==null?void 0:s.events)||{};t.on("mouseover",a=>{var l,c;this.context.events.emit("point:mouseover",{point:e,index:i,series:this,event:a,plotX:this.context.xAxis.getPixelForValue(e.x??i),plotY:this.context.yAxis.getPixelForValue(e.y??0)}),(l=r.mouseOver)==null||l.call(e,a),(c=o.mouseOver)==null||c.call(e,a)}).on("mouseout",a=>{var l,c;this.context.events.emit("point:mouseout",{point:e,index:i,series:this,event:a}),(l=r.mouseOut)==null||l.call(e,a),(c=o.mouseOut)==null||c.call(e,a)}).on("click",a=>{var l,c,h,f;this.context.events.emit("point:click",{point:e,index:i,series:this,event:a}),(l=r.click)==null||l.call(e,a),(c=o.click)==null||c.call(e,a),(f=(h=this.config.events)==null?void 0:h.click)==null||f.call(this,a),this.handlePointSelect(t,e,i,a)}),t.style("cursor",this.config.cursor||"pointer")}applyJitter(t,e,i){return i?t+(Math.random()-.5)*i*e:t}}function Cc(n,t){const e=n.length;if(t>=e||t<3)return n;const i=new Array(t);i[0]=n[0],i[t-1]=n[e-1];const r=(e-2)/(t-2);let o=0;for(let s=1;s<t-1;s++){const a=Math.floor((s-1)*r)+1,l=Math.min(Math.floor(s*r)+1,e-1),c=Math.floor(s*r)+1,h=Math.min(Math.floor((s+1)*r)+1,e-1);let f=0,u=0;const d=h-c;for(let x=c;x<h;x++)f+=n[x].x??x,u+=n[x].y??0;d>0&&(f/=d,u/=d);const p=n[o].x??o,y=n[o].y??0;let g=-1,m=a;for(let x=a;x<l;x++){const v=n[x].x??x,b=n[x].y??0,k=Math.abs((p-f)*(b-y)-(p-v)*(u-y));k>g&&(g=k,m=x)}i[s]=n[m],o=m}return i}function O2(n,t){const e=n.length;if(t>=e||t<2)return n;const i=Math.ceil(t/2),r=e/i,o=[];o.push(n[0]);for(let s=0;s<i;s++){const a=Math.floor(s*r),l=Math.min(Math.floor((s+1)*r),e);let c=a,h=a,f=n[a].y??0,u=f;for(let d=a+1;d<l;d++){const p=n[d].y??0;p<f&&(f=p,c=d),p>u&&(u=p,h=d)}c<h?(o.push(n[c]),c!==h&&o.push(n[h])):(o.push(n[h]),c!==h&&o.push(n[c]))}return o[o.length-1]!==n[e-1]&&o.push(n[e-1]),o}const Uf=new WeakMap;function N2(n,t){let e=Uf.get(n);return e||(e=[],Uf.set(n,e),st(n).on("mousemove.hover-shared",i=>{const r=n.querySelector(".katucharts-plot-group");if(!r)return;const o=r.getScreenCTM();if(!o)return;const s=n.createSVGPoint();s.x=i.clientX,s.y=i.clientY;const a=s.matrixTransform(o.inverse()),l=a.x,c=a.y;if(l<0||l>t.width||c<0||c>t.height){for(const d of e)d.currentIdx>=0&&d.hideHover(i);return}let h=null,f=-1,u=1/0;for(const d of e){const p=d.findCandidate(l,c);p&&p.dist<u&&(u=p.dist,f=p.idx,h=d)}for(const d of e)d!==h&&d.currentIdx>=0&&d.hideHover(i);h&&f!==h.currentIdx&&h.showHover(f,i)}),st(n).on("mouseleave.hover-shared",i=>{for(const r of e)r.currentIdx>=0&&r.hideHover(i)}),st(n).on("click.hover-shared",i=>{for(const r of e)if(r.currentIdx>=0){r.handleClick(i);break}})),e}class W2{constructor(t){var a;this.config=t,this.currentIdx=-1;const{group:e,data:i,xAxis:r,plotArea:o}=t;this.validData=i.filter(l=>l.y!==null&&l.y!==void 0),this.xPositions=new Float64Array(this.validData.length);for(let l=0;l<this.validData.length;l++)this.xPositions[l]=r.getPixelForValue(this.validData[l].x??l);this.hoverGroup=e.append("g").attr("class","katucharts-hover-targets"),this.halo=this.hoverGroup.append("circle").attr("r",0).attr("opacity",0).attr("class","katucharts-halo"),this.hoverMarker=this.hoverGroup.append("circle").attr("r",t.markerRadius).attr("opacity",0).attr("class","katucharts-hover-marker").attr("stroke","#fff").attr("stroke-width",1);const s=(a=e.node())==null?void 0:a.ownerSVGElement;s&&N2(s,o).push(this)}findCandidate(t,e){const{yAxis:i}=this.config,r=this.xPositions;if(r.length===0)return null;let o=0,s=r.length-1;for(;o<s;){const h=o+s>>1;r[h]<t?o=h+1:s=h}let a=-1,l=1/0;const c=2;for(let h=Math.max(0,o-c);h<=Math.min(r.length-1,o+c);h++){const f=r[h],u=i.getPixelForValue(this.validData[h].y??0),d=Math.sqrt((f-t)**2+(u-e)**2);d<l&&(l=d,a=h)}return a<0||Math.abs(r[a]-t)>50?null:{idx:a,dist:l}}handleClick(t){var o,s,a,l,c,h,f;if(this.currentIdx<0)return;const{series:e,events:i}=this.config,r=this.validData[this.currentIdx];i.emit("point:click",{point:r,index:this.currentIdx,series:e,event:t}),(s=(o=r.events)==null?void 0:o.click)==null||s.call(r,t),(c=(l=(a=e.config.point)==null?void 0:a.events)==null?void 0:l.click)==null||c.call(r,t),(f=(h=e.config.events)==null?void 0:h.click)==null||f.call(e,t)}showHover(t,e){var x,v,b,k,M;if(t<0||t>=this.validData.length)return;const{series:i,events:r,yAxis:o,haloSize:s,haloOpacity:a,hoverRadius:l,hoverLineWidth:c,pathSelection:h,lineWidthPlus:f,baseLineWidth:u,getColor:d}=this.config,p=this.validData[t],y=this.xPositions[t],g=o.getPixelForValue(p.y??0),m=d(p);this.currentIdx>=0&&this.currentIdx!==t&&r.emit("point:mouseout",{point:this.validData[this.currentIdx],index:this.currentIdx,series:i,event:e}),this.currentIdx=t,this.halo.attr("cx",y).attr("cy",g).attr("fill",m).transition().duration(Z).ease(j).attr("r",s).attr("opacity",a),this.hoverMarker.attr("cx",y).attr("cy",g).attr("fill",m).transition().duration(Z).ease(j).attr("r",l).attr("opacity",1).attr("stroke-width",c),f&&h&&h.transition("hover").duration(Z).ease(j).attr("stroke-width",u+f),r.emit("point:mouseover",{point:p,index:t,series:i,event:e,plotX:y,plotY:g}),(v=(x=p.events)==null?void 0:x.mouseOver)==null||v.call(p,e),(M=(k=(b=i.config.point)==null?void 0:b.events)==null?void 0:k.mouseOver)==null||M.call(p,e)}hideHover(t){var s,a,l,c,h;const{series:e,events:i,pathSelection:r,baseLineWidth:o}=this.config;if(this.currentIdx>=0){const f=this.validData[this.currentIdx];i.emit("point:mouseout",{point:f,index:this.currentIdx,series:e,event:t}),(a=(s=f.events)==null?void 0:s.mouseOut)==null||a.call(f,t),(h=(c=(l=e.config.point)==null?void 0:l.events)==null?void 0:c.mouseOut)==null||h.call(f,t)}this.halo.transition().duration(Z).ease(j).attr("r",0).attr("opacity",0),this.hoverMarker.transition().duration(Z).ease(j).attr("r",this.config.markerRadius).attr("opacity",0),r&&r.transition("hover").duration(Z).ease(j).attr("stroke-width",o),this.currentIdx=-1}findNearest(t){const e=this.xPositions;if(e.length===0)return-1;let i=0,r=e.length-1;for(;i<r;){const o=i+r>>1;e[o]<t?i=o+1:r=o}return i>0&&Math.abs(e[i-1]-t)<Math.abs(e[i]-t)&&(i=i-1),Math.abs(e[i]-t)>30?-1:i}}const H2={circle:Kn,square:kc,diamond:wc,triangle:Ac,"triangle-down":Sc,cross:vc};class jf extends Ut{constructor(t){super(t),this.pathSelection=null}render(){var r;const t=this.getColor(),e=this.getFilteredData(),i=this.context.animate;(r=this.config.zones)!=null&&r.length?this.renderZones(e,t):this.config.negativeColor&&this.config.threshold!==null?this.renderNegativeColor(e,t):this.renderMainLine(e,t,i),this.renderMarkers(e,t,!!i),this.renderHoverTargets(e,t),this.renderDataLabels(e.filter(o=>o.y!==null&&o.y!==void 0),(o,s)=>this.context.xAxis.getPixelForValue(o.x??s),o=>this.context.yAxis.getPixelForValue(o.y??0)),i&&this.emitAfterAnimate(vt+Jn)}renderMainLine(t,e,i){const r=this.buildLineGenerator();this.pathSelection=this.group.append("path").datum(t).attr("d",r).attr("fill","none").attr("stroke",e).attr("stroke-width",this.config.lineWidth??2).attr("stroke-dasharray",on(this.config.dashStyle)).attr("stroke-linecap",this.config.linecap||"round").attr("class","katucharts-line"),i&&this.animateLineEntry(this.pathSelection)}renderNegativeColor(t,e){const i=this.config.threshold??0,r=this.config.negativeColor,o=this.config.lineWidth??2,s=this.config.linecap||"round",a=on(this.config.dashStyle),l=[];let c=[],h=null;for(const f of t){if(f.y===null||f.y===void 0){c.length>0&&(l.push({points:c,negative:h}),c=[],h=null);continue}const u=f.y<i;h!==null&&u!==h&&c.length>0&&(l.push({points:[...c],negative:h}),c=[c[c.length-1]]),h=u,c.push(f)}c.length>0&&l.push({points:c,negative:h});for(const f of l){const u=this.buildLineGenerator();this.group.append("path").datum(f.points).attr("d",u).attr("fill","none").attr("stroke",f.negative?r:e).attr("stroke-width",o).attr("stroke-linecap",s).attr("stroke-dasharray",a).attr("class","katucharts-line katucharts-negative-segment")}}renderZones(t,e){var u,d;const i=this.config.zones,r=this.config.zoneAxis||"y",o=this.config.lineWidth??2,s=this.config.linecap||"round";(u=this.pathSelection)==null||u.remove(),this.pathSelection=null;const a=[...i].sort((p,y)=>(p.value??1/0)-(y.value??1/0)),l=p=>r==="x"?p.x??0:p.y??0,c=t.filter(p=>p.y!==null&&p.y!==void 0),h=a.map(()=>[]),f=[];for(const p of c){const y=l(p);let g=!1;for(let m=0;m<a.length;m++)if(y<(a[m].value??1/0)){h[m].push(p),g=!0;break}g||f.push(p)}for(let p=0;p<a.length;p++)h[p].length!==0&&(p>0&&h[p-1].length>0&&h[p].unshift(h[p-1][h[p-1].length-1]),p<a.length-1&&((d=h[p+1])==null?void 0:d.length)>0?h[p].push(h[p+1][0]):f.length>0&&h[p].push(f[0]));for(let p=0;p<a.length;p++){const y=h[p];if(y.length<2)continue;const g=a[p],m=this.buildLineGenerator();this.group.append("path").datum(y).attr("d",m).attr("fill","none").attr("stroke",g.color||e).attr("stroke-width",o).attr("stroke-linecap",s).attr("stroke-dasharray",on(g.dashStyle||this.config.dashStyle)).attr("class","katucharts-line katucharts-zone")}if(f.length>0){const p=h[h.length-1];if((p==null?void 0:p.length)>0&&f.unshift(p[p.length-1]),f.length>1){const y=this.buildLineGenerator();this.group.append("path").datum(f).attr("d",y).attr("fill","none").attr("stroke",e).attr("stroke-width",o).attr("stroke-linecap",s).attr("stroke-dasharray",on(this.config.dashStyle)).attr("class","katucharts-line katucharts-zone")}}}animateUpdate(t){const e=this.getFilteredData(),i=this.buildLineGenerator(),r=this.getColor();this.pathSelection&&!this.pathSelection.empty()?this.pathSelection.datum(e).transition().duration(t).attr("d",i):(this.group.selectAll(".katucharts-line").remove(),this.renderMainLine(e,r,!1)),this.group.selectAll(".katucharts-markers").remove(),this.group.selectAll(".katucharts-hover-targets").remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.renderMarkers(e,r,!1),this.renderHoverTargets(e,r),this.renderDataLabels(e.filter(o=>o.y!==null&&o.y!==void 0),(o,s)=>this.context.xAxis.getPixelForValue(o.x??s),o=>this.context.yAxis.getPixelForValue(o.y??0))}buildLineGenerator(){const{xAxis:t,yAxis:e}=this.context,i=this.config.connectNulls,r=!!this.context.inverted,o=(l,c)=>typeof l=="number"?c:(l==null?void 0:l.x)??c,s=l=>typeof l=="number"?l:l==null?void 0:l.y,a=Mi().x((l,c)=>r?e.getPixelForValue(s(l)??0):t.getPixelForValue(o(l,c))).y((l,c)=>r?t.getPixelForValue(o(l,c)):e.getPixelForValue(s(l)??0)).curve(this.getCurve());return i||a.defined(l=>{const c=s(l);return c!=null}),a}getFilteredData(){var e;let t;if(this.config.connectNulls?t=this.data.filter(i=>i.y!==null&&i.y!==void 0):t=this.data,(e=this.context)!=null&&e.plotArea){const r=this.context.plotArea.width*4;t.length>r&&(t=Cc(t,Math.floor(r)))}return t}getCurve(){const t=this.config.step;return t==="left"?Hf:t==="center"?Nf:t==="right"?Wf:Ui}animateLineEntry(t){var i,r;const e=((r=(i=t.node())==null?void 0:i.getTotalLength)==null?void 0:r.call(i))||0;if(e>0){const o=typeof this.config.animation=="object"?this.config.animation:{},s=o.duration??vt,a=o.defer??0,l=t.attr("stroke-dasharray");t.attr("stroke-dasharray",`${e} ${e}`).attr("stroke-dashoffset",e).transition().delay(a).duration(s).ease(pt).attr("stroke-dashoffset",0).on("end",()=>{t.attr("stroke-dasharray",l==="none"?null:l)})}}renderMarkers(t,e,i){const r=this.config.marker,o=(r==null?void 0:r.enabledThreshold)??2;if(!((r==null?void 0:r.enabled)===!0||(r==null?void 0:r.enabled)!==!1&&t.length<=o*this.context.plotArea.width/12))return;const{xAxis:a,yAxis:l}=this.context,c=(r==null?void 0:r.radius)??4,h=(r==null?void 0:r.symbol)||"circle",f=this.group.append("g").attr("class","katucharts-markers"),u=t.filter(d=>d.y!==null&&d.y!==void 0);if(h==="circle"){const d=f.selectAll("circle").data(u).join("circle").attr("cx",p=>a.getPixelForValue(p.x??0)).attr("cy",p=>l.getPixelForValue(p.y??0)).attr("fill",(p,y)=>this.getMarkerFill(p,y,r,e)).attr("stroke",(r==null?void 0:r.lineColor)||this.autoBorderColor()).attr("stroke-width",(r==null?void 0:r.lineWidth)??1).attr("class","katucharts-marker");i?d.attr("r",0).transition().delay((p,y)=>Pe(y,Jn,Wt,u.length)).duration(vt).ease(pt).attr("r",p=>{var y;return((y=p.marker)==null?void 0:y.radius)??c}):d.attr("r",p=>{var y;return((y=p.marker)==null?void 0:y.radius)??c})}else{const d=H2[h]||Kn,p=Math.PI*c*c;rn().type(d).size(p);const y=f.selectAll("path").data(u).join("path").attr("transform",g=>`translate(${a.getPixelForValue(g.x??0)},${l.getPixelForValue(g.y??0)})`).attr("fill",(g,m)=>this.getMarkerFill(g,m,r,e)).attr("stroke",(r==null?void 0:r.lineColor)||this.autoBorderColor()).attr("stroke-width",(r==null?void 0:r.lineWidth)??1).attr("class","katucharts-marker");if(i){const g=rn().type(d).size(0);y.attr("d",g).transition().delay((m,x)=>Pe(x,Jn,Wt,u.length)).duration(vt).ease(pt).attr("d",m=>{var v;const x=((v=m.marker)==null?void 0:v.radius)??c;return rn().type(d).size(Math.PI*x*x)()})}else y.attr("d",g=>{var x;const m=((x=g.marker)==null?void 0:x.radius)??c;return rn().type(d).size(Math.PI*m*m)()})}}getMarkerFill(t,e,i,r){var o;return t.color?t.color:(o=t.marker)!=null&&o.fillColor?t.marker.fillColor:i!=null&&i.fillColor?i.fillColor:this.config.negativeColor&&(t.y??0)<(this.config.threshold??0)?this.config.negativeColor:r}renderHoverTargets(t,e){var f,u,d,p,y,g,m,x;if(this.config.enableMouseTracking===!1)return;const i=((f=this.config.marker)==null?void 0:f.radius)??4,r=(d=(u=this.config.marker)==null?void 0:u.states)==null?void 0:d.hover,o=(r==null?void 0:r.radiusPlus)??2,s=(r==null?void 0:r.radius)??i+o,a=(r==null?void 0:r.lineWidthPlus)??1,l=(r==null?void 0:r.lineWidth)??(((p=this.config.marker)==null?void 0:p.lineWidth)??1)+a,c=((g=(y=this.config.states)==null?void 0:y.hover)==null?void 0:g.lineWidthPlus)??1,h=(x=(m=this.config.states)==null?void 0:m.hover)==null?void 0:x.halo;new W2({series:this,group:this.group,data:t,xAxis:this.context.xAxis,yAxis:this.context.yAxis,plotArea:this.context.plotArea,events:this.context.events,haloSize:(h==null?void 0:h.size)??10,haloOpacity:(h==null?void 0:h.opacity)??.25,markerRadius:i,hoverRadius:s,hoverLineWidth:l,cursor:this.config.cursor||"pointer",pathSelection:this.pathSelection,lineWidthPlus:c,baseLineWidth:this.config.lineWidth??2,getColor:v=>v.color||e})}}class V2 extends jf{constructor(t){super(t)}getCurve(){return Bf.alpha(.5)}}const G2={circle:Kn,square:kc,diamond:wc,triangle:Ac,"triangle-down":Sc,cross:vc};class qf extends Ut{constructor(t){super(t),this.isSpline=!1,this.areaPath=null,this.linePath=null,this.negAreaPath=null}render(){var r;const t=this.getColor(),e=this.getFilteredData(),i=this.context.animate;(r=this.config.zones)!=null&&r.length?this.renderZones(e,t):this.config.negativeFillColor||this.config.negativeColor?this.renderWithNegativeColor(e,t,!!i):this.renderMainArea(e,t,!!i),this.renderMarkers(e,t,!!i),this.config.trackByArea?this.renderAreaHoverTargets(e,t):this.renderHoverTargets(e,t),this.renderDataLabels(e.filter(o=>o.y!==null&&o.y!==void 0),(o,s)=>this.context.xAxis.getPixelForValue(o.x??s),o=>this.context.yAxis.getPixelForValue(o.y??0)),i&&this.emitAfterAnimate(vt+Jn)}renderMainArea(t,e,i){const{areaGen:r,lineGen:o}=this.buildGenerators(),s=this.config.lineColor||e;if(this.areaPath=this.group.append("path").datum(t).attr("d",r).attr("fill",this.config.fillColor||e).attr("class","katucharts-area"),this.linePath=this.group.append("path").datum(t).attr("d",o).attr("fill","none").attr("stroke",s).attr("stroke-width",this.config.lineWidth??2).attr("stroke-linecap",this.config.linecap||"round").attr("stroke-dasharray",on(this.config.dashStyle)).attr("class","katucharts-area-line"),i){const l=(typeof this.config.animation=="object"?this.config.animation:{}).duration??vt;this.areaPath.attr("fill-opacity",0).transition().duration(l).ease(pt).attr("fill-opacity",this.config.fillOpacity??.75),this.animateLineEntry(this.linePath)}else this.areaPath.attr("fill-opacity",this.config.fillOpacity??.75)}renderWithNegativeColor(t,e,i){const{xAxis:r,yAxis:o}=this.context,s=this.config.threshold??0,a=o.getPixelForValue(s),l=this.getCurve(),c=this.config.fillOpacity??.75,h=this.config.negativeFillColor||this.config.negativeColor||e,f=this.config.fillColor||e,u=this.config.lineColor||e,d=t.filter(g=>g.y!==null&&g.y!==void 0&&(g.y??0)>=s),p=t.filter(g=>g.y!==null&&g.y!==void 0&&(g.y??0)<s);if(d.length>0){const g=ji().x(m=>r.getPixelForValue(m.x??0)).y0(a).y1(m=>o.getPixelForValue(m.y??0)).curve(l);this.areaPath=this.group.append("path").datum(d).attr("d",g).attr("fill",f).attr("fill-opacity",c).attr("class","katucharts-area katucharts-area-positive")}if(p.length>0){const g=ji().x(m=>r.getPixelForValue(m.x??0)).y0(a).y1(m=>o.getPixelForValue(m.y??0)).curve(l);this.negAreaPath=this.group.append("path").datum(p).attr("d",g).attr("fill",h).attr("fill-opacity",c).attr("class","katucharts-area katucharts-area-negative")}const y=Mi().defined(g=>g.y!==null&&g.y!==void 0).x(g=>r.getPixelForValue(g.x??0)).y(g=>o.getPixelForValue(g.y??0)).curve(l);if(this.linePath=this.group.append("path").datum(t).attr("d",y).attr("fill","none").attr("stroke",u).attr("stroke-width",this.config.lineWidth??2).attr("stroke-linecap",this.config.linecap||"round").attr("stroke-dasharray",on(this.config.dashStyle)).attr("class","katucharts-area-line"),i){const m=(typeof this.config.animation=="object"?this.config.animation:{}).duration??vt;this.areaPath&&this.areaPath.attr("fill-opacity",0).transition().duration(m).ease(pt).attr("fill-opacity",c),this.negAreaPath&&this.negAreaPath.attr("fill-opacity",0).transition().duration(m).ease(pt).attr("fill-opacity",c),this.animateLineEntry(this.linePath)}}renderZones(t,e){const{xAxis:i,yAxis:r}=this.context,o=this.config.zones,s=this.config.zoneAxis||"y",a=this.config.fillOpacity??.75,l=this.config.lineWidth??2,c=this.getCurve(),h=r.getPixelForValue(this.config.threshold??0),f=[...o].sort((g,m)=>(g.value??1/0)-(m.value??1/0)),u=g=>s==="x"?g.x??0:g.y??0,d=t.filter(g=>g.y!==null&&g.y!==void 0);let p=-1/0;const y=(g,m,x,v)=>{if(g.length<2)return;const b=ji().x(M=>i.getPixelForValue(M.x??0)).y0(h).y1(M=>r.getPixelForValue(M.y??0)).curve(c);this.group.append("path").datum(g).attr("d",b).attr("fill",x||m).attr("fill-opacity",a).attr("class","katucharts-area katucharts-zone");const k=Mi().x(M=>i.getPixelForValue(M.x??0)).y(M=>r.getPixelForValue(M.y??0)).curve(c);this.group.append("path").datum(g).attr("d",k).attr("fill","none").attr("stroke",m).attr("stroke-width",l).attr("stroke-dasharray",on(v||this.config.dashStyle)).attr("class","katucharts-area-line katucharts-zone")};for(const g of f){const m=g.value??1/0,x=g.color||e,v=g.fillColor||x,b=[];for(let k=0;k<d.length;k++){const M=u(d[k]);if(M>=p&&M<m)b.length===0&&k>0&&b.push(d[k-1]),b.push(d[k]);else if(M>=m&&b.length>0){b.push(d[k]);break}}y(b,x,v,g.dashStyle),p=m}if(p!==1/0){const g=[];for(let m=0;m<d.length;m++)u(d[m])>=p&&(g.length===0&&m>0&&g.push(d[m-1]),g.push(d[m]));y(g,e,this.config.fillColor)}}getCurve(){if(this.isSpline)return Bf.alpha(.5);const t=this.config.step;return t==="left"?Hf:t==="center"?Nf:t==="right"?Wf:Ui}getFilteredData(){var e;let t;if(this.config.connectNulls?t=this.data.filter(i=>i.y!==null&&i.y!==void 0):t=this.data,(e=this.context)!=null&&e.plotArea){const r=this.context.plotArea.width*4;t.length>r&&(t=Cc(t,Math.floor(r)))}return t}buildGenerators(){const{xAxis:t,yAxis:e}=this.context,i=e.getPixelForValue(this.config.threshold??0),r=this.getCurve(),o=this.context.stackOffsets,s=this.config.stacking,a=this.config.connectNulls,l=u=>!s||!o?u.y??0:(o.get(u.x??0)||0)+(u.y??0),c=u=>!s||!o?this.config.threshold??0:o.get(u.x??0)||0,h=ji().x(u=>t.getPixelForValue(u.x??0)).y0(u=>s?e.getPixelForValue(c(u)):i).y1(u=>e.getPixelForValue(l(u))).curve(r),f=Mi().x(u=>t.getPixelForValue(u.x??0)).y(u=>e.getPixelForValue(l(u))).curve(r);return a||(h.defined(u=>u.y!==null&&u.y!==void 0),f.defined(u=>u.y!==null&&u.y!==void 0)),{areaGen:h,lineGen:f}}animateUpdate(t){const e=this.getFilteredData(),{areaGen:i,lineGen:r}=this.buildGenerators(),o=this.getColor();this.areaPath&&!this.areaPath.empty()&&this.areaPath.datum(e).transition().duration(t).attr("d",i),this.linePath&&!this.linePath.empty()&&this.linePath.datum(e).transition().duration(t).attr("d",r),this.group.selectAll(".katucharts-hover-targets").remove(),this.group.selectAll(".katucharts-markers").remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.renderMarkers(e,o,!1),this.config.trackByArea?this.renderAreaHoverTargets(e,o):this.renderHoverTargets(e,o),this.renderDataLabels(e.filter(s=>s.y!==null&&s.y!==void 0),(s,a)=>this.context.xAxis.getPixelForValue(s.x??a),s=>this.context.yAxis.getPixelForValue(s.y??0))}animateLineEntry(t){var i,r;const e=((r=(i=t.node())==null?void 0:i.getTotalLength)==null?void 0:r.call(i))||0;if(e>0){const o=typeof this.config.animation=="object"?this.config.animation:{},s=o.duration??vt,a=o.defer??0,l=t.attr("stroke-dasharray");t.attr("stroke-dasharray",`${e} ${e}`).attr("stroke-dashoffset",e).transition().delay(a).duration(s).ease(pt).attr("stroke-dashoffset",0).on("end",()=>t.attr("stroke-dasharray",l==="none"?null:l))}}renderMarkers(t,e,i){const r=this.config.marker;if((r==null?void 0:r.enabled)!==!0)return;const{xAxis:o,yAxis:s}=this.context,a=(r==null?void 0:r.radius)??4,l=(r==null?void 0:r.symbol)||"circle",c=this.group.append("g").attr("class","katucharts-markers"),h=t.filter(f=>f.y!==null&&f.y!==void 0);if(l==="circle"){const f=c.selectAll("circle").data(h).join("circle").attr("cx",u=>o.getPixelForValue(u.x??0)).attr("cy",u=>s.getPixelForValue(u.y??0)).attr("fill",u=>u.color||(r==null?void 0:r.fillColor)||e).attr("stroke",(r==null?void 0:r.lineColor)||this.autoBorderColor()).attr("stroke-width",(r==null?void 0:r.lineWidth)??1).attr("class","katucharts-marker");i?f.attr("r",0).transition().delay((u,d)=>Pe(d,Jn,Wt,h.length)).duration(vt).ease(pt).attr("r",u=>{var d;return((d=u.marker)==null?void 0:d.radius)??a}):f.attr("r",u=>{var d;return((d=u.marker)==null?void 0:d.radius)??a})}else{const f=G2[l]||Kn,u=c.selectAll("path").data(h).join("path").attr("transform",d=>`translate(${o.getPixelForValue(d.x??0)},${s.getPixelForValue(d.y??0)})`).attr("fill",d=>d.color||(r==null?void 0:r.fillColor)||e).attr("stroke",(r==null?void 0:r.lineColor)||this.autoBorderColor()).attr("stroke-width",(r==null?void 0:r.lineWidth)??1).attr("class","katucharts-marker");if(i){const d=rn().type(f).size(0);u.attr("d",d).transition().delay((p,y)=>Pe(y,Jn,Wt,h.length)).duration(vt).ease(pt).attr("d",p=>{var g;const y=((g=p.marker)==null?void 0:g.radius)??a;return rn().type(f).size(Math.PI*y*y)()})}else u.attr("d",d=>{var y;const p=((y=d.marker)==null?void 0:y.radius)??a;return rn().type(f).size(Math.PI*p*p)()})}}renderAreaHoverTargets(t,e){if(this.config.enableMouseTracking===!1)return;const{xAxis:i,yAxis:r}=this.context,o=r.getPixelForValue(this.config.threshold??0),s=this.getCurve(),a=ji().x(h=>i.getPixelForValue(h.x??0)).y0(o).y1(h=>r.getPixelForValue(h.y??0)).curve(s),l=t.filter(h=>h.y!==null&&h.y!==void 0);this.group.append("path").datum(l).attr("d",a).attr("fill","transparent").attr("class","katucharts-hover-targets").style("cursor",this.config.cursor||"pointer").on("mousemove",h=>{const[f]=[h.offsetX-(this.context.plotArea.x||0)];let u=0,d=1/0;l.forEach((y,g)=>{const m=i.getPixelForValue(y.x??0),x=Math.abs(m-f);x<d&&(d=x,u=g)});const p=l[u];this.context.events.emit("point:mouseover",{point:p,index:u,series:this,event:h,plotX:i.getPixelForValue(p.x??0),plotY:r.getPixelForValue(p.y??0)})}).on("mouseout",h=>{this.context.events.emit("point:mouseout",{point:l[0],index:0,series:this,event:h})}).on("click",h=>{var y,g,m,x;const[f]=[h.offsetX-(this.context.plotArea.x||0)];let u=0,d=1/0;l.forEach((v,b)=>{const k=i.getPixelForValue(v.x??0),M=Math.abs(k-f);M<d&&(d=M,u=b)});const p=l[u];this.context.events.emit("point:click",{point:p,index:u,series:this,event:h}),(g=(y=p.events)==null?void 0:y.click)==null||g.call(p,h),(x=(m=this.config.events)==null?void 0:m.click)==null||x.call(this,h)})}renderHoverTargets(t,e){var f,u,d,p,y;if(this.config.enableMouseTracking===!1)return;const{xAxis:i,yAxis:r}=this.context,o=this.group.append("g").attr("class","katucharts-hover-targets"),s=((d=(u=(f=this.config.marker)==null?void 0:f.states)==null?void 0:u.hover)==null?void 0:d.radius)??6,a=t.filter(g=>g.y!==null&&g.y!==void 0),l=(y=(p=this.config.states)==null?void 0:p.hover)==null?void 0:y.halo,c=(l==null?void 0:l.size)??10,h=(l==null?void 0:l.opacity)??.25;a.forEach((g,m)=>{const x=i.getPixelForValue(g.x??0),v=r.getPixelForValue(g.y??0),b=o.append("circle").attr("cx",x).attr("cy",v).attr("r",0).attr("fill",g.color||e).attr("opacity",0).attr("class","katucharts-halo"),k=o.append("circle").attr("cx",x).attr("cy",v).attr("r",0).attr("fill",g.color||e).attr("stroke",this.autoBorderColor()).attr("stroke-width",1).attr("class","katucharts-hover-marker");o.append("circle").attr("cx",x).attr("cy",v).attr("r",15).attr("fill","transparent").style("cursor",this.config.cursor||"pointer").on("mouseover",P=>{var $,_,L,I,E;b.transition().duration(Z).ease(j).attr("r",c).attr("opacity",h),k.transition().duration(Z).ease(j).attr("r",s),this.context.events.emit("point:mouseover",{point:g,index:m,series:this,event:P,plotX:x,plotY:v}),(_=($=g.events)==null?void 0:$.mouseOver)==null||_.call(g,P),(E=(I=(L=this.config.point)==null?void 0:L.events)==null?void 0:I.mouseOver)==null||E.call(g,P)}).on("mouseout",P=>{var $,_,L,I,E;b.transition().duration(Z).ease(j).attr("r",0).attr("opacity",0),k.transition().duration(Z).ease(j).attr("r",0),this.context.events.emit("point:mouseout",{point:g,index:m,series:this,event:P}),(_=($=g.events)==null?void 0:$.mouseOut)==null||_.call(g,P),(E=(I=(L=this.config.point)==null?void 0:L.events)==null?void 0:I.mouseOut)==null||E.call(g,P)}).on("click",P=>{var $,_,L,I,E,C,S;this.context.events.emit("point:click",{point:g,index:m,series:this,event:P}),(_=($=g.events)==null?void 0:$.click)==null||_.call(g,P),(E=(I=(L=this.config.point)==null?void 0:L.events)==null?void 0:I.click)==null||E.call(g,P),(S=(C=this.config.events)==null?void 0:C.click)==null||S.call(this,P),this.handlePointSelect(k,g,m,P)})})}}class Y2 extends qf{constructor(){super(...arguments),this.isSpline=!0}}function Pc(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}function X2(n,t,e,i,r,o,s){if(e<=0||i<=0)return`M${n},${t}H${n}V${t}Z`;const a=o?Math.min(r,e/2,i/2):0,l=s?Math.min(r,e/2,i/2):0;return`M${n+a},${t}H${n+e-a}`+(a?`A${a},${a},0,0,1,${n+e},${t+a}`:`L${n+e},${t}`)+`V${t+i-l}`+(l?`A${l},${l},0,0,1,${n+e-l},${t+i}`:`L${n+e},${t+i}`)+`H${n+l}`+(l?`A${l},${l},0,0,1,${n},${t+i-l}`:`L${n},${t+i}`)+`V${t+a}`+(a?`A${a},${a},0,0,1,${n+a},${t}`:`L${n},${t}`)+"Z"}function U2(n,t,e,i,r,o,s){if(e<=0||i<=0)return`M${n},${t}H${n}V${t}Z`;const a=o?Math.min(r,e/2,i/2):0,l=s?Math.min(r,e/2,i/2):0;return`M${n+l},${t}H${n+e-a}`+(a?`A${a},${a},0,0,1,${n+e},${t+a}`:`L${n+e},${t}`)+`V${t+i-a}`+(a?`A${a},${a},0,0,1,${n+e-a},${t+i}`:`L${n+e},${t+i}`)+`H${n+l}`+(l?`A${l},${l},0,0,1,${n},${t+i-l}`:`L${n},${t+i}`)+`V${t+l}`+(l?`A${l},${l},0,0,1,${n+l},${t}`:`L${n},${t}`)+"Z"}class Zf extends Ut{constructor(t){super(t),this.isHorizontal=!1}getEntryDuration(){return(typeof this.config.animation=="object"?this.config.animation:{}).duration??vt}render(){this.group.selectAll(".katucharts-data-labels").remove();const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data,s=this.context.animate,{barWidth:a,barOffset:l,baseline:c}=this.computeBarGeometry(),h=this.config.stacking,f=this.context.stackOffsets,u=h==="percent",d=u?this.context.stackTotals:void 0,p=b=>{const k=b.x??0,M=(f==null?void 0:f.get(k))||0,P=b.y??0;if(u&&d){const $=d.get(k)||1;return(M+P)/$*100}return M+P},y=b=>{const k=b.x??0,M=(f==null?void 0:f.get(k))||0;if(u&&d){const P=d.get(k)||1;return M/P*100}return M};if(h){const b=this.context.stackTotals;for(const k of o){const M=k.x??0;if(b&&(k.total=b.get(M)||0,k.stackTotal=b.get(M)||0),u&&b){const P=b.get(M)||1;k.percentage=(k.y??0)/P*100}}}const g=this.config.minPointLength??0,m=this.config.crisp!==!1,x=Pc(this.config.borderRadius);if(h){const b=this.group.selectAll(".katucharts-column").data(o).join("path").attr("class","katucharts-column").attr("stroke",k=>k.borderColor||this.config.borderColor||"none").attr("stroke-width",k=>k.borderWidth??this.config.borderWidth??0);this.renderStackedBars(b,o,a,l,p,y,r,g,m,!!s,x),this.attachHoverEffects(b,o),this.renderColumnDataLabels(o,a,l,c,p,y),s&&this.emitAfterAnimate(vt+o.length*Wt);return}const v=this.group.selectAll(".katucharts-column").data(o).join("rect").attr("class","katucharts-column").attr("rx",x).attr("stroke",b=>b.borderColor||this.config.borderColor||"none").attr("stroke-width",b=>b.borderWidth??this.config.borderWidth??0);this.isHorizontal?this.renderHorizontalBars(v,o,a,l,c,r,g,m,!!s):this.renderVerticalBars(v,o,a,l,c,r,g,m,!!s),this.attachHoverEffects(v,o),this.renderColumnDataLabels(o,a,l,c,h?p:void 0,h?y:void 0),s&&this.emitAfterAnimate(vt+o.length*Wt)}renderVerticalBars(t,e,i,r,o,s,a,l,c){const{xAxis:h,yAxis:f}=this.context,u=this.config.threshold??0,d=this.config.negativeColor;if(t.attr("x",p=>this.crispCoord(h.getPixelForValue(p.x??0)+r,l)).attr("width",l?Math.round(i):i).attr("fill",(p,y)=>this.getPointColor(p,y,s,d,u)).attr("display",p=>p.y==null?"none":null),c){const p=this.getEntryDuration();t.attr("y",o).attr("height",0).transition().duration(p).ease(pt).delay((y,g)=>Pe(g,0,Wt,e.length)).attr("y",y=>this.getBarY(y,f,o,a)).attr("height",y=>this.getBarHeight(y,f,o,a))}else t.attr("y",p=>this.getBarY(p,f,o,a)).attr("height",p=>this.getBarHeight(p,f,o,a))}renderHorizontalBars(t,e,i,r,o,s,a,l,c){const{xAxis:h,yAxis:f}=this.context,u=this.config.threshold??0,d=this.config.negativeColor;if(t.attr("y",p=>this.crispCoord(h.getPixelForValue(p.x??0)+r,l)).attr("height",l?Math.round(i):i).attr("fill",(p,y)=>this.getPointColor(p,y,s,d,u)).attr("display",p=>p.y==null?"none":null),c){const p=this.getEntryDuration();t.attr("x",o).attr("width",0).transition().duration(p).ease(pt).delay((y,g)=>Pe(g,0,Wt,e.length)).attr("x",y=>{const g=f.getPixelForValue(y.y??0);return Math.min(o,g)}).attr("width",y=>{const g=Math.abs(f.getPixelForValue(y.y??0)-o);return Math.max(g,a)})}else t.attr("x",p=>Math.min(o,f.getPixelForValue(p.y??0))).attr("width",p=>Math.max(Math.abs(f.getPixelForValue(p.y??0)-o),a))}renderStackedBars(t,e,i,r,o,s,a,l,c,h,f){const u=this.context.totalSeriesOfType||1,d=this.context.indexInType||0,p=d===u-1,y=d===0,g=f??0;if(t.attr("fill",(m,x)=>this.getPointColor(m,x,a)),h){const m=this.getEntryDuration();t.each((x,v,b)=>{const k=st(b[v]),M=this.computeStackedStartParams(x,e,i,r,s,c),P=this.computeStackedRectParams(x,e,i,r,o,s,c,l);x._rectParams=P,k.attr("d",this.rectParamsToPath(M,g,p,y)).transition().duration(m).ease(pt).delay(Pe(v,0,Wt,e.length)).attrTween("d",()=>{const $=ce(M.x,P.x),_=ce(M.y,P.y),L=ce(M.w,P.w),I=ce(M.h,P.h);return E=>this.rectParamsToPath({x:$(E),y:_(E),w:L(E),h:I(E)},g,p,y)})})}else t.each((m,x,v)=>{const b=this.computeStackedRectParams(m,e,i,r,o,s,c,l);m._rectParams=b,st(v[x]).attr("d",this.rectParamsToPath(b,g,p,y))})}getBarY(t,e,i,r){const o=e.getPixelForValue(t.y??0),s=Math.min(o,i),a=Math.abs(o-i);return a<r&&(t.y??0)>=(this.config.threshold??0)?s-(r-a):s}getBarHeight(t,e,i,r){return Math.max(Math.abs(e.getPixelForValue(t.y??0)-i),r)}crispCoord(t,e){return e?Math.round(t):t}computeStackedRectParams(t,e,i,r,o,s,a,l){const{xAxis:c,yAxis:h}=this.context;if(this.isHorizontal){const f=this.crispCoord(c.getPixelForValue(t.x??e.indexOf(t))+r,a),u=a?Math.round(i):i,d=Math.min(h.getPixelForValue(o(t)),h.getPixelForValue(s(t))),p=Math.max(Math.abs(h.getPixelForValue(o(t))-h.getPixelForValue(s(t))),l);return{x:d,y:f,w:p,h:u}}else{const f=this.crispCoord(c.getPixelForValue(t.x??0)+r,a),u=a?Math.round(i):i,d=Math.min(h.getPixelForValue(o(t)),h.getPixelForValue(s(t))),p=Math.max(Math.abs(h.getPixelForValue(o(t))-h.getPixelForValue(s(t))),l);return{x:f,y:d,w:u,h:p}}}computeStackedStartParams(t,e,i,r,o,s){const{xAxis:a,yAxis:l}=this.context;if(this.isHorizontal){const c=this.crispCoord(a.getPixelForValue(t.x??e.indexOf(t))+r,s),h=s?Math.round(i):i;return{x:l.getPixelForValue(o(t)),y:c,w:.1,h}}else{const c=this.crispCoord(a.getPixelForValue(t.x??0)+r,s),h=s?Math.round(i):i,f=l.getPixelForValue(o(t));return{x:c,y:f,w:h,h:.1}}}rectParamsToPath(t,e,i,r){return this.isHorizontal?U2(t.x,t.y,t.w,t.h,e,i,r):X2(t.x,t.y,t.w,t.h,e,i,r)}animateUpdate(t){if(this.config.stacking){this.updateStackedBars(t);return}const{xAxis:i,yAxis:r,plotArea:o}=this.context,s=this.getColor(),a=this.data,{barWidth:l,barOffset:c,baseline:h}=this.computeBarGeometry(),f=this.config.minPointLength??0,u=this.config.crisp!==!1,d=this.config.threshold??0,p=this.config.negativeColor,y=this.group.selectAll(".katucharts-column").data(a),g=y.enter().append("rect").attr("class","katucharts-column").attr("rx",Pc(this.config.borderRadius)).attr("fill",(x,v)=>this.getPointColor(x,v,s,p,d)).attr("display",x=>x.y==null?"none":null).attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0);this.isHorizontal||g.attr("x",x=>this.crispCoord(i.getPixelForValue(x.x??0)+c,u)).attr("width",u?Math.round(l):l).attr("y",h).attr("height",0);const m=g.merge(y);m.attr("display",x=>x.y==null?"none":null),this.isHorizontal?m.transition().duration(t).attr("y",x=>this.crispCoord(i.getPixelForValue(x.x??0)+c,u)).attr("height",u?Math.round(l):l).attr("x",x=>Math.min(h,r.getPixelForValue(x.y??0))).attr("width",x=>Math.max(Math.abs(r.getPixelForValue(x.y??0)-h),f)).attr("fill",(x,v)=>this.getPointColor(x,v,s,p,d)):m.transition().duration(t).attr("x",x=>this.crispCoord(i.getPixelForValue(x.x??0)+c,u)).attr("width",u?Math.round(l):l).attr("y",x=>this.getBarY(x,r,h,f)).attr("height",x=>this.getBarHeight(x,r,h,f)).attr("fill",(x,v)=>this.getPointColor(x,v,s,p,d)),y.exit().transition().duration(t).attr("opacity",0).remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.attachHoverEffects(this.group.selectAll(".katucharts-column"),a),this.renderColumnDataLabels(a,l,c,h)}updateStackedBars(t){const{xAxis:e,yAxis:i,plotArea:r}=this.context,o=this.getColor(),s=this.data,{barWidth:a,barOffset:l,baseline:c}=this.computeBarGeometry(),h=this.config.stacking,f=this.context.stackOffsets,u=h==="percent",d=this.config.crisp!==!1,p=Pc(this.config.borderRadius),y=this.config.minPointLength??0,g=u?this.context.stackTotals:void 0,m=_=>{const L=_.x??0,I=(f==null?void 0:f.get(L))||0,E=_.y??0;if(u&&g){const C=g.get(L)||1;return(I+E)/C*100}return I+E},x=_=>{const L=_.x??0,I=(f==null?void 0:f.get(L))||0;if(u&&g){const E=g.get(L)||1;return I/E*100}return I};if(h){const _=this.context.stackTotals;for(const L of s){const I=L.x??0;if(_&&(L.total=_.get(I)||0,L.stackTotal=_.get(I)||0),u&&_){const E=_.get(I)||1;L.percentage=(L.y??0)/E*100}}}const v=this.context.totalSeriesOfType||1,b=this.context.indexInType||0,k=b===v-1,M=b===0,P=p,$=this.group.selectAll(".katucharts-column").data(s);$.each((_,L,I)=>{const E=st(I[L]),C=this.computeStackedRectParams(_,s,a,l,m,x,d,y),S=_._rectParams||C;_._rectParams=C,E.transition().duration(t).attrTween("d",()=>{const w=ce(S.x,C.x),A=ce(S.y,C.y),T=ce(S.w,C.w),F=ce(S.h,C.h);return D=>this.rectParamsToPath({x:w(D),y:A(D),w:T(D),h:F(D)},P,k,M)}).attr("fill",this.getPointColor(_,L,o))}),$.enter().append("path").attr("class","katucharts-column").attr("stroke",_=>_.borderColor||this.config.borderColor||"none").attr("stroke-width",_=>_.borderWidth??this.config.borderWidth??0).attr("fill",(_,L)=>this.getPointColor(_,L,o)).each((_,L,I)=>{const E=this.computeStackedRectParams(_,s,a,l,m,x,d,y);_._rectParams=E,st(I[L]).attr("d",this.rectParamsToPath(E,P,k,M))}),$.exit().transition().duration(t).attr("opacity",0).remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.attachHoverEffects(this.group.selectAll(".katucharts-column"),s),this.renderColumnDataLabels(s,a,l,c,m,x)}computeBarGeometry(){var y,g;const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=!!this.config.stacking,o=r?1:this.config.grouping!==!1&&this.context.totalSeriesOfType||1,s=r?0:this.config.grouping!==!1&&this.context.indexInType||0,a=this.config.groupPadding??.2,l=this.config.pointPadding??.1;let c;if(t instanceof nf)c=t.getBandwidth();else if(this.isHorizontal)c=i.height/Math.max(this.data.length,1);else if(this.config.pointRange!==void 0&&this.config.pointRange>0)c=Math.abs(t.getPixelForValue(this.config.pointRange)-t.getPixelForValue(0));else{const m=this.data;c=m.length>1?Math.abs(t.getPixelForValue(((y=m[1])==null?void 0:y.x)??1)-t.getPixelForValue(((g=m[0])==null?void 0:g.x)??0))*(1-a*2):i.width/Math.max(m.length,1)*(1-a*2)}const h=r?0:a,f=r?0:l;let u;this.config.pointWidth!==void 0?u=this.config.pointWidth:u=c*(1-h*2)/o*(1-f*2),this.config.maxPointWidth!==void 0&&(u=Math.min(u,this.config.maxPointWidth));let d;this.config.centerInCategory?d=-u/2:d=-c*(1-h*2)/2+(u+u*f*2)*s+u*f;const p=e.getPixelForValue(this.config.threshold??0);return{barWidth:u,barOffset:d,baseline:p,groupWidth:c}}getPointColor(t,e,i,r,o){if(t.color)return t.color;if(this.config.colorByPoint){const s=this.config.colors||this.context.colors;return s[e%s.length]}return r&&(t.y??0)<(o??0)?r:i}renderColumnDataLabels(t,e,i,r,o,s){const a=this.config.dataLabels;if(!(a!=null&&a.enabled))return;const{xAxis:l,yAxis:c}=this.context,h=a.inside??!1;this.renderDataLabels(t,f=>{if(this.isHorizontal){const u=c.getPixelForValue(f.y??0);return h?(u+r)/2:u-5}return l.getPixelForValue(f.x??0)+i+e/2},f=>{if(this.isHorizontal)return l.getPixelForValue(f.x??0)+i+e/2;const u=o?c.getPixelForValue(o(f)):c.getPixelForValue(f.y??0);return h?(u+r)/2:u})}attachHoverEffects(t,e){var h,f,u,d,p,y,g,m;if(this.config.enableMouseTracking===!1)return;const{xAxis:i,yAxis:r}=this.context,o=!!this.config.stacking,s=((f=(h=this.config.states)==null?void 0:h.hover)==null?void 0:f.brightness)??(o?.2:.1),a=(d=(u=this.config.states)==null?void 0:u.hover)==null?void 0:d.color,l=(y=(p=this.config.states)==null?void 0:p.hover)==null?void 0:y.borderColor,c=(m=(g=this.config.states)==null?void 0:g.hover)==null?void 0:m.borderWidth;t.style("cursor",this.config.cursor||"pointer").on("mouseover",(x,v)=>{var E,C,S,w,A,T,F;const b=x.currentTarget,k=b.getAttribute("fill")||"";b.setAttribute("data-orig-fill",k);const P=st(b).interrupt("hover").transition("hover").duration(Z).ease(j);if(a?P.style("fill",a):P.style("fill",Xf(k,s)),l&&P.style("stroke",l),c!==void 0&&P.style("stroke-width",String(c)),b.style.filter="drop-shadow(0 1px 3px rgba(0,0,0,0.2))",o){const D=this.context.allSeries;if(D)for(const R of D)R.visible&&((E=R.config)!=null&&E.stacking)&&((C=R.group)==null||C.selectAll(".katucharts-column").filter(function(){return this!==b}).interrupt("stackDim").transition("stackDim").duration(us).ease(j).attr("opacity",.3));b.setAttribute("data-orig-stroke",b.getAttribute("stroke")||""),b.setAttribute("data-orig-stroke-width",b.getAttribute("stroke-width")||""),P.style("stroke","#ffffff").style("stroke-width","2")}const $=e.indexOf(v),_=i.getPixelForValue(v.x??0),L=r.getPixelForValue(v.y??0),I=this.context.inverted;this.context.events.emit("point:mouseover",{point:v,index:$,series:this,event:x,plotX:I?L:_,plotY:I?_:L}),(w=(S=v.events)==null?void 0:S.mouseOver)==null||w.call(v,x),(F=(T=(A=this.config.point)==null?void 0:A.events)==null?void 0:T.mouseOver)==null||F.call(v,x)}).on("mouseout",(x,v)=>{var _,L,I,E,C,S,w;const b=x.currentTarget,k=b.getAttribute("data-orig-fill")||"",P=st(b).interrupt("hover").transition("hover").duration(Z).ease(j);if(P.style("fill",k),b.style.filter="",o){const A=this.context.allSeries;if(A)for(const T of A)T.visible&&((_=T.config)!=null&&_.stacking)&&((L=T.group)==null||L.selectAll(".katucharts-column").interrupt("stackDim").transition("stackDim").duration(us).ease(j).attr("opacity",1));P.style("stroke",b.getAttribute("data-orig-stroke")||"").style("stroke-width",b.getAttribute("data-orig-stroke-width")||"")}else P.style("stroke","").style("stroke-width","");P.on("end",()=>{b.matches(":hover")||(b.style.fill="")});const $=e.indexOf(v);this.context.events.emit("point:mouseout",{point:v,index:$,series:this,event:x}),(E=(I=v.events)==null?void 0:I.mouseOut)==null||E.call(v,x),(w=(S=(C=this.config.point)==null?void 0:C.events)==null?void 0:S.mouseOut)==null||w.call(v,x)}).on("click",(x,v)=>{var P,$,_,L,I,E,C;const b=e.indexOf(v);this.context.events.emit("point:click",{point:v,index:b,series:this,event:x}),($=(P=v.events)==null?void 0:P.click)==null||$.call(v,x),(I=(L=(_=this.config.point)==null?void 0:_.events)==null?void 0:L.click)==null||I.call(v,x),(C=(E=this.config.events)==null?void 0:E.click)==null||C.call(this,x);const k=x.currentTarget,M=st(k);this.handlePointSelect(M,v,b,x)})}}class j2 extends Zf{constructor(){super(...arguments),this.isHorizontal=!0}}const Kf={circle:Kn,square:kc,diamond:wc,triangle:Ac,"triangle-down":Sc,cross:vc},Jf=["circle","diamond","square","triangle","triangle-down"];class q2 extends Ut{constructor(t){t.clip=!1,super(t),this.cachedPositions=[]}resolveMarkerSymbol(){var r;if((r=this.config.marker)!=null&&r.symbol)return this.config.marker.symbol;const e=(this.context.allSeries||[]).filter(o=>o.config._internalType==="scatter");if(e.length<=1)return"circle";const i=e.indexOf(this);return Jf[i%Jf.length]}getLegendSymbolShape(){return this.resolveMarkerSymbol()}render(){var f,u,d,p;const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data.filter(y=>y.y!==null&&y.y!==void 0),s=((f=this.config.marker)==null?void 0:f.radius)??4,a=((p=(d=(u=this.config.marker)==null?void 0:u.states)==null?void 0:d.hover)==null?void 0:p.radius)??s+3,l=this.context.animate,c=this.resolveMarkerSymbol(),h=this.config.jitter;this.cachedPositions=o.map(y=>({cx:this.applyJitter(t.getPixelForValue(y.x??0),i.width,h==null?void 0:h.x),cy:this.applyJitter(e.getPixelForValue(y.y??0),i.height,h==null?void 0:h.y)})),c==="circle"?this.renderCircles(o,r,s,a,!!l):this.renderSymbols(o,r,s,a,c,!!l),this.renderDataLabels(o,(y,g)=>this.cachedPositions[g].cx,(y,g)=>this.cachedPositions[g].cy),l&&this.emitAfterAnimate(vt+o.length*Wt)}animateUpdate(t){var f;const{xAxis:e,yAxis:i,plotArea:r}=this.context,o=this.getColor(),s=this.data.filter(u=>u.y!==null&&u.y!==void 0),a=((f=this.config.marker)==null?void 0:f.radius)??4,l=this.config.jitter;this.cachedPositions=s.map(u=>({cx:this.applyJitter(e.getPixelForValue(u.x??0),r.width,l==null?void 0:l.x),cy:this.applyJitter(i.getPixelForValue(u.y??0),r.height,l==null?void 0:l.y)}));const c=this.resolveMarkerSymbol();if(c==="circle"){const u=this.group.selectAll(".katucharts-scatter-point").data(s);u.exit().transition().duration(t).attr("r",0).remove(),u.enter().append("circle").attr("class","katucharts-scatter-point").attr("r",0).attr("fill",p=>this.getPointFill(p,o)).attr("stroke",p=>{var y,g;return((y=p.marker)==null?void 0:y.lineColor)??((g=this.config.marker)==null?void 0:g.lineColor)??o}).attr("stroke-width",p=>{var y,g;return((y=p.marker)==null?void 0:y.lineWidth)??((g=this.config.marker)==null?void 0:g.lineWidth)??1}).attr("opacity",this.config.opacity??1).merge(u).attr("fill",p=>this.getPointFill(p,o)).attr("stroke",p=>{var y,g;return((y=p.marker)==null?void 0:y.lineColor)??((g=this.config.marker)==null?void 0:g.lineColor)??o}).transition().duration(t).attr("cx",(p,y)=>this.cachedPositions[y].cx).attr("cy",(p,y)=>this.cachedPositions[y].cy).attr("r",p=>{var y;return((y=p.marker)==null?void 0:y.radius)??a})}else{const u=Kf[c]||Kn,d=this.group.selectAll(".katucharts-scatter-point").data(s);d.exit().transition().duration(t).attr("opacity",0).remove(),d.enter().append("path").attr("class","katucharts-scatter-point").attr("fill",y=>this.getPointFill(y,o)).attr("stroke",y=>{var g,m;return((g=y.marker)==null?void 0:g.lineColor)??((m=this.config.marker)==null?void 0:m.lineColor)??o}).attr("stroke-width",y=>{var g,m;return((g=y.marker)==null?void 0:g.lineWidth)??((m=this.config.marker)==null?void 0:m.lineWidth)??1}).attr("opacity",this.config.opacity??1).merge(d).attr("fill",y=>this.getPointFill(y,o)).attr("stroke",y=>{var g,m;return((g=y.marker)==null?void 0:g.lineColor)??((m=this.config.marker)==null?void 0:m.lineColor)??o}).transition().duration(t).attr("transform",(y,g)=>`translate(${this.cachedPositions[g].cx},${this.cachedPositions[g].cy})`).attr("d",y=>{var m;const g=((m=y.marker)==null?void 0:m.radius)??a;return rn().type(u).size(Math.PI*g*g)()})}this.group.selectAll(".katucharts-data-labels").remove(),this.renderDataLabels(s,(u,d)=>this.cachedPositions[d].cx,(u,d)=>this.cachedPositions[d].cy)}getPointFill(t,e){var i,r;return t.color?t.color:(i=t.marker)!=null&&i.fillColor?t.marker.fillColor:(r=this.config.marker)!=null&&r.fillColor?this.config.marker.fillColor:this.config.negativeColor&&(t.y??0)<(this.config.threshold??0)?this.config.negativeColor:e}getEntryDuration(){return(typeof this.config.animation=="object"?this.config.animation:{}).duration??vt}renderCircles(t,e,i,r,o){const s=this.group.selectAll(".katucharts-scatter-point").data(t).join("circle").attr("class","katucharts-scatter-point").attr("cx",(a,l)=>this.cachedPositions[l].cx).attr("cy",(a,l)=>this.cachedPositions[l].cy).attr("fill",a=>this.getPointFill(a,e)).attr("stroke",a=>{var l,c;return((l=a.marker)==null?void 0:l.lineColor)??((c=this.config.marker)==null?void 0:c.lineColor)??e}).attr("stroke-width",a=>{var l,c;return((l=a.marker)==null?void 0:l.lineWidth)??((c=this.config.marker)==null?void 0:c.lineWidth)??1}).attr("opacity",this.config.opacity??1).style("cursor",this.config.cursor||"pointer");o?s.attr("r",0).transition().duration(this.getEntryDuration()).ease(pt).delay((a,l)=>Pe(l,0,Wt,t.length)).attr("r",a=>{var l;return((l=a.marker)==null?void 0:l.radius)??i}):s.attr("r",a=>{var l;return((l=a.marker)==null?void 0:l.radius)??i}),this.attachScatterEvents(s,t,i,r,e,"circle")}renderSymbols(t,e,i,r,o,s){const a=Kf[o]||Kn,l=this.group.selectAll(".katucharts-scatter-point").data(t).join("path").attr("class","katucharts-scatter-point").attr("transform",(h,f)=>`translate(${this.cachedPositions[f].cx},${this.cachedPositions[f].cy})`).attr("fill",h=>this.getPointFill(h,e)).attr("stroke",h=>{var f,u;return((f=h.marker)==null?void 0:f.lineColor)??((u=this.config.marker)==null?void 0:u.lineColor)??e}).attr("stroke-width",h=>{var f,u;return((f=h.marker)==null?void 0:f.lineWidth)??((u=this.config.marker)==null?void 0:u.lineWidth)??1}).attr("opacity",this.config.opacity??1).style("cursor",this.config.cursor||"pointer"),c=h=>{var u;const f=((u=h.marker)==null?void 0:u.radius)??i;return rn().type(a).size(Math.PI*f*f)()};if(s){const h=rn().type(a).size(0);l.attr("d",h).transition().duration(this.getEntryDuration()).ease(pt).delay((f,u)=>Pe(u,0,Wt,t.length)).attr("d",c)}else l.attr("d",c);this.attachScatterEvents(l,t,i,r,e,"symbol",a)}attachScatterEvents(t,e,i,r,o,s,a){var y,g,m,x,v;if(this.config.enableMouseTracking===!1)return;const l=(y=this.config.states)==null?void 0:y.hover,c=(g=l==null?void 0:l.marker)==null?void 0:g.fillColor,h=(v=(x=(m=this.config.marker)==null?void 0:m.states)==null?void 0:x.hover)==null?void 0:v.lineWidth,f=l==null?void 0:l.halo,u=(f==null?void 0:f.size)??10,d=(f==null?void 0:f.opacity)??.25,p=e.map((b,k)=>{var M;return this.group.insert("circle",".katucharts-scatter-point").attr("cx",this.cachedPositions[k].cx).attr("cy",this.cachedPositions[k].cy).attr("r",0).attr("fill",b.color||((M=this.config.marker)==null?void 0:M.fillColor)||o).attr("opacity",0).attr("class","katucharts-halo")});t.on("mouseover",(b,k)=>{var E,C,S,w,A,T,F,D,R,z,B,W,K,X;const M=b.currentTarget,P=e.indexOf(k);P>=0&&p[P]&&p[P].transition("halo").duration(Z).ease(j).attr("r",u).attr("opacity",d);const $=((E=k.marker)==null?void 0:E.radius)??i,_=((w=(S=(C=k.marker)==null?void 0:C.states)==null?void 0:S.hover)==null?void 0:w.radius)??((F=(T=(A=this.config.marker)==null?void 0:A.states)==null?void 0:T.hover)==null?void 0:F.radius)??$+3,I=st(M).interrupt("hover").transition("hover").duration(Z).ease(j);if(s==="circle")I.attr("r",_);else if(a){const q=Math.PI*_*_;I.attr("d",rn().type(a).size(q)())}M.style.filter="drop-shadow(0 1px 4px rgba(0,0,0,0.3))",c&&I.style("fill",c),h!==void 0&&I.style("stroke-width",String(h)),this.context.events.emit("point:mouseover",{point:k,index:P,series:this,event:b,plotX:((D=this.cachedPositions[P])==null?void 0:D.cx)??0,plotY:((R=this.cachedPositions[P])==null?void 0:R.cy)??0}),(B=(z=k.events)==null?void 0:z.mouseOver)==null||B.call(k,b),(X=(K=(W=this.config.point)==null?void 0:W.events)==null?void 0:K.mouseOver)==null||X.call(k,b)}).on("mouseout",(b,k)=>{var I,E,C,S,w,A;const M=b.currentTarget,P=e.indexOf(k);P>=0&&p[P]&&p[P].transition("halo").duration(Z).ease(j).attr("r",0).attr("opacity",0);const $=((I=k.marker)==null?void 0:I.radius)??i,L=st(M).interrupt("hover").transition("hover").duration(Z).ease(j);if(s==="circle")L.attr("r",$);else if(a){const T=Math.PI*$*$;L.attr("d",rn().type(a).size(T)())}M.style.filter="",L.style("fill",null).style("stroke-width",null),this.context.events.emit("point:mouseout",{point:k,index:P,series:this,event:b}),(C=(E=k.events)==null?void 0:E.mouseOut)==null||C.call(k,b),(A=(w=(S=this.config.point)==null?void 0:S.events)==null?void 0:w.mouseOut)==null||A.call(k,b)}).on("click",(b,k)=>{var P,$,_,L,I,E,C;const M=e.indexOf(k);this.context.events.emit("point:click",{point:k,index:M,series:this,event:b}),($=(P=k.events)==null?void 0:P.click)==null||$.call(k,b),(I=(L=(_=this.config.point)==null?void 0:_.events)==null?void 0:L.click)==null||I.call(k,b),(C=(E=this.config.events)==null?void 0:E.click)==null||C.call(this,b),this.handlePointSelect(st(b.currentTarget),k,M,b)})}}class Z2 extends Ut{constructor(t){t.clip=!1,super(t)}render(){const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data.filter(f=>f.y!==null&&f.y!==void 0),s=this.context.animate,a=this.config.jitter,l=this.filterByZThreshold(o);this.buildSizeScale(l);const c=l.map(f=>({cx:this.applyJitter(t.getPixelForValue(f.x??0),i.width,a==null?void 0:a.x),cy:this.applyJitter(e.getPixelForValue(f.y??0),i.height,a==null?void 0:a.y)})),h=this.group.selectAll(".katucharts-bubble").data(l).join("circle").attr("class","katucharts-bubble").attr("cx",(f,u)=>c[u].cx).attr("cy",(f,u)=>c[u].cy).attr("fill",(f,u)=>this.getBubbleFill(f,u,r)).attr("fill-opacity",this.config.fillOpacity??.5).attr("stroke",(f,u)=>this.config.lineColor||this.getBubbleFill(f,u,r)).attr("stroke-width",this.config.lineWidth??1).style("cursor",this.config.cursor||"pointer");if(s){const u=(typeof this.config.animation=="object"?this.config.animation:{}).duration??vt;h.attr("r",0).transition().duration(u).ease(pt).delay((d,p)=>Pe(p,0,Wt,l.length)).attr("r",d=>this.sizeScale(this.getZValue(d)))}else h.attr("r",f=>this.sizeScale(this.getZValue(f)));this.attachBubbleEvents(h,l,c,r),this.renderDataLabels(l,(f,u)=>c[u].cx,(f,u)=>c[u].cy),s&&this.emitAfterAnimate(vt+l.length*Wt)}animateUpdate(t){const{xAxis:e,yAxis:i,plotArea:r}=this.context,o=this.getColor(),s=this.data.filter(u=>u.y!==null&&u.y!==void 0),a=this.filterByZThreshold(s),l=this.config.jitter;this.buildSizeScale(a);const c=a.map(u=>({cx:this.applyJitter(e.getPixelForValue(u.x??0),r.width,l==null?void 0:l.x),cy:this.applyJitter(i.getPixelForValue(u.y??0),r.height,l==null?void 0:l.y)})),h=this.group.selectAll(".katucharts-bubble").data(a);h.exit().transition().duration(t).attr("r",0).remove(),h.enter().append("circle").attr("class","katucharts-bubble").attr("r",0).attr("fill",(u,d)=>this.getBubbleFill(u,d,o)).attr("fill-opacity",this.config.fillOpacity??.5).attr("stroke",(u,d)=>this.config.lineColor||this.getBubbleFill(u,d,o)).attr("stroke-width",this.config.lineWidth??1).merge(h).transition().duration(t).attr("cx",(u,d)=>{var p;return((p=c[d])==null?void 0:p.cx)??0}).attr("cy",(u,d)=>{var p;return((p=c[d])==null?void 0:p.cy)??0}).attr("r",u=>this.sizeScale(this.getZValue(u))).attr("fill",(u,d)=>this.getBubbleFill(u,d,o)),this.group.selectAll(".katucharts-data-labels").remove(),this.renderDataLabels(a,(u,d)=>{var p;return((p=c[d])==null?void 0:p.cx)??0},(u,d)=>{var p;return((p=c[d])==null?void 0:p.cy)??0})}filterByZThreshold(t){const e=this.config.displayNegative!==!1,i=this.config.zThreshold??0;return e?t:t.filter(r=>(r.z??0)>=i)}getZValue(t){const e=t.z??1;return this.config.sizeByAbsoluteValue?Math.abs(e):e}buildSizeScale(t){const e=t.map(l=>this.getZValue(l)),i=this.config.zMin??Math.min(...e,0),r=this.config.zMax??Math.max(...e,1),o=this.parseSize(this.config.minSize,8),s=this.parseSize(this.config.maxSize,30);(this.config.sizeBy||"area")==="width"?this.sizeScale=ke().domain([i,r]).range([o,s]).clamp(!0):this.sizeScale=_x().domain([i,r]).range([o,s]).clamp(!0)}parseSize(t,e){if(t===void 0)return e;if(typeof t=="number")return t;if(typeof t=="string"&&t.endsWith("%")){const i=parseFloat(t)/100;return Math.min(this.context.plotArea.width,this.context.plotArea.height)*i/2}return parseFloat(t)||e}getBubbleFill(t,e,i){if(t.color)return t.color;if(this.config.negativeColor&&(t.z??0)<(this.config.zThreshold??0))return this.config.negativeColor;if(this.config.colorByPoint){const r=this.config.colors||this.context.colors;return r[e%r.length]}return i}attachBubbleEvents(t,e,i,r){var s,a;if(this.config.enableMouseTracking===!1)return;(a=(s=this.config.states)==null?void 0:s.hover)==null||a.brightness;const o=this.config.fillOpacity??.5;t.on("mouseover",(l,c)=>{var d,p,y,g,m,x,v;const h=l.currentTarget,f=this.sizeScale(this.getZValue(c));st(h).interrupt("hover").transition("hover").duration(Z).ease(j).attr("r",f+4).attr("fill-opacity",Math.min(o+.3,1)),h.style.filter="drop-shadow(0 2px 6px rgba(0,0,0,0.3))";const u=e.indexOf(c);this.context.events.emit("point:mouseover",{point:c,index:u,series:this,event:l,plotX:((d=i[u])==null?void 0:d.cx)??0,plotY:((p=i[u])==null?void 0:p.cy)??0}),(g=(y=c.events)==null?void 0:y.mouseOver)==null||g.call(c,l),(v=(x=(m=this.config.point)==null?void 0:m.events)==null?void 0:x.mouseOver)==null||v.call(c,l)}).on("mouseout",(l,c)=>{var u,d,p,y,g;const h=l.currentTarget;st(h).interrupt("hover").transition("hover").duration(Z).ease(j).attr("r",this.sizeScale(this.getZValue(c))).attr("fill-opacity",o),h.style.filter="";const f=e.indexOf(c);this.context.events.emit("point:mouseout",{point:c,index:f,series:this,event:l}),(d=(u=c.events)==null?void 0:u.mouseOut)==null||d.call(c,l),(g=(y=(p=this.config.point)==null?void 0:p.events)==null?void 0:y.mouseOut)==null||g.call(c,l)}).on("click",(l,c)=>{var f,u,d,p,y,g,m;const h=e.indexOf(c);this.context.events.emit("point:click",{point:c,index:h,series:this,event:l}),(u=(f=c.events)==null?void 0:f.click)==null||u.call(c,l),(y=(p=(d=this.config.point)==null?void 0:d.events)==null?void 0:p.click)==null||y.call(c,l),(m=(g=this.config.events)==null?void 0:g.click)==null||m.call(this,l),this.handlePointSelect(st(l.currentTarget),c,h,l)})}getBubbleLegendInfo(){const t=this.filterByZThreshold(this.data.filter(l=>l.y!==null&&l.y!==void 0));if(t.length===0)return null;this.buildSizeScale(t);const e=t.map(l=>this.getZValue(l)),i=this.config.zMin??Math.min(...e),r=this.config.zMax??Math.max(...e);if(!isFinite(i)||!isFinite(r)||r<=0)return null;const o=[r,(i+r)/2,i],s=new Set,a=o.map(l=>Math.round(l)).filter(l=>l>0&&!s.has(l)&&(s.add(l),!0)).map(l=>({value:l,radius:this.sizeScale(l)}));return a.length===0?null:{sizeBy:this.config.sizeBy||"area",color:this.getColor(),ranges:a}}getDataExtents(){let t=1/0,e=-1/0,i=1/0,r=-1/0;for(const l of this.data)l.x!==void 0&&l.x!==null&&(t=Math.min(t,l.x),e=Math.max(e,l.x)),l.y!==void 0&&l.y!==null&&(i=Math.min(i,l.y),r=Math.max(r,l.y));const o=e-t||1,s=r-i||1,a=.08;return t-=o*a,e+=o*a,i-=s*a,r+=s*a,{xMin:t,xMax:e,yMin:i,yMax:r}}}class Qf extends Ut{constructor(t){super(t),this.selectedIndices=new Set,t.showInLegend=!1}dataLabelConfigs(){const t=this.config.dataLabels;return t?(Array.isArray(t)?t:[t]).filter(i=>i&&i.enabled!==!1):[]}init(t){const e=this.dataLabelConfigs().length>0;if(e&&(this.config.clip=!1),super.init(t),e){const i=this.group.select(function(){return this.ownerSVGElement});i.empty()||i.style("overflow","visible")}}render(){var Y,G,Q,O,nt,et,ht,ft,ct,it;const{plotArea:t,colors:e}=this.context,i=this.config.ignoreHiddenPoint!==!1,r=this.data.filter(U=>U.y!==null&&U.y!==void 0&&(U.y??0)>0),o=i?r.filter(U=>U.visible!==!1):r,s=this.context.animate,a=this.dataLabelConfigs().filter(U=>(U.distance??30)>=0),l=a.length>0,c=l?Math.max(...a.map(U=>(U.distance??30)+10)):0,h=this.config.center||["50%","50%"],f=this.resolvePercent(h[0],t.width),u=this.resolvePercent(h[1],t.height),d=t.width-c*2,p=t.height-c,y=Math.min(d,p),g=Math.min(t.width,t.height),m=this.config.size!==void 0&&this.config.size!==null,x=m?this.resolvePercent(this.config.size,g):y,v=this.config.minSize?this.resolvePercent(this.config.minSize,g):0,k=Math.max(l?Math.min(x,y):m?x:g,v)/2,M=this.resolvePercent(this.config.innerSize||0,k*2)/2,P=this.config.depth??0,$=(this.config.startAngle??0)*Math.PI/180,_=this.config.endAngle!==void 0?this.config.endAngle*Math.PI/180:$+2*Math.PI,L=o.reduce((U,at)=>U+(at.y??0),0),I=this.config.fillColor;if(L===0&&I){const U=this.group.append("g").attr("transform",`translate(${f},${u})`),at=Ce().innerRadius(M).outerRadius(k).startAngle($).endAngle(_);U.append("path").attr("d",at({})).attr("fill",I);return}const E=w2().value(U=>U.y??0).sort(null).startAngle($).endAngle(_),C=this.resolveBorderRadius(this.config.borderRadius),S=Ce().innerRadius(M).outerRadius(k).cornerRadius(C),w=this.config.slicedOffset??10,A=Ce().innerRadius(M).outerRadius(k+w*.4).cornerRadius(C),T=E(o),F=_-$;for(const U of T)U.data.percentage=(U.endAngle-U.startAngle)/F*100,U.data.total=L;const D=this.group.append("g").attr("transform",`translate(${f},${u})`);P>0&&this.render3DEffect(D,T,M,k,P);const R=this.config.allowPointSelect===!0;(G=(Y=this.config.states)==null?void 0:Y.hover)==null||G.brightness;const z=(O=(Q=this.config.states)==null?void 0:Q.select)==null?void 0:O.color,B=(et=(nt=this.config.states)==null?void 0:nt.select)==null?void 0:et.borderColor,W=(ft=(ht=this.config.states)==null?void 0:ht.select)==null?void 0:ft.borderWidth,K=((it=(ct=this.config.states)==null?void 0:ct.inactive)==null?void 0:it.opacity)??.4,X=(U,at)=>U.data.color?U.data.color:this.config.colors?this.config.colors[at%this.config.colors.length]:e[at%e.length],q=U=>{const at=(U.startAngle+U.endAngle)/2,xt=w*Math.sin(at),_t=-w*Math.cos(at);return`translate(${xt},${_t})`},N=this,H=D.selectAll(".katucharts-pie-slice").data(T).join("path").attr("class","katucharts-pie-slice").attr("fill",(U,at)=>X(U,at)).attr("stroke",this.config.borderColor||this.autoBorderColor()).attr("stroke-width",this.config.borderWidth??1).attr("opacity",this.config.opacity??1).style("cursor",this.config.cursor||"pointer");H.each(function(U,at){const xt=st(this);(U.data.sliced||N.selectedIndices.has(at))&&xt.attr("transform",q(U))}),s?H.each(function(U,at){const xt=st(this),_t={startAngle:U.startAngle,endAngle:U.startAngle},Mt=ce(_t,U);xt.transition().duration(vt).ease(pt).delay(Yf+at*Wt).attrTween("d",()=>Pt=>S(Mt(Pt)))}):H.attr("d",S),this.config.enableMouseTracking!==!1&&H.on("mouseover",function(U,at){var Gt,Ht,Nt,Jt,re;const xt=st(this),_t=T.indexOf(at);N.selectedIndices.has(_t)||xt.transition("arc").duration(Z).ease(j).attr("d",A(at)),xt.style("filter","drop-shadow(0 2px 6px rgba(0,0,0,0.25))"),H.interrupt("highlight"),H.attr("opacity",N.config.opacity??1),H.filter(Lt=>Lt!==at).transition("highlight").duration(Z).ease(j).attr("opacity",K);const Pt=S.centroid(at);N.context.events.emit("point:mouseover",{point:at.data,index:_t,series:N,event:U,plotX:f+Pt[0],plotY:u+Pt[1]}),(Ht=(Gt=at.data.events)==null?void 0:Gt.mouseOver)==null||Ht.call(at.data,U),(re=(Jt=(Nt=N.config.point)==null?void 0:Nt.events)==null?void 0:Jt.mouseOver)==null||re.call(at.data,U)}).on("mouseout",function(U,at){var Pt,Gt,Ht,Nt,Jt;const xt=st(this),_t=T.indexOf(at);N.selectedIndices.has(_t)||xt.transition("arc").duration(Z).ease(j).attr("d",S(at)),xt.style("filter",""),H.interrupt("highlight"),H.transition("highlight").duration(Z).ease(j).attr("opacity",N.config.opacity??1),N.context.events.emit("point:mouseout",{point:at.data,index:_t,series:N,event:U}),(Gt=(Pt=at.data.events)==null?void 0:Pt.mouseOut)==null||Gt.call(at.data,U),(Jt=(Nt=(Ht=N.config.point)==null?void 0:Ht.events)==null?void 0:Nt.mouseOut)==null||Jt.call(at.data,U)}).on("click",function(U,at){var _t,Mt,Pt,Gt,Ht,Nt,Jt,re,Lt,Qt,pe,Ze,ge,Sn;const xt=T.indexOf(at);R&&(N.selectedIndices.has(xt)?(N.selectedIndices.delete(xt),st(this).transition("slice").duration(Z).ease(j).attr("transform",""),(Mt=(_t=at.data.events)==null?void 0:_t.unselect)==null||Mt.call(at.data,U),(Ht=(Gt=(Pt=N.config.point)==null?void 0:Pt.events)==null?void 0:Gt.unselect)==null||Ht.call(at.data,U)):(N.selectedIndices.add(xt),st(this).transition("slice").duration(Z).ease(j).attr("transform",q(at)),(Jt=(Nt=at.data.events)==null?void 0:Nt.select)==null||Jt.call(at.data,U),(Qt=(Lt=(re=N.config.point)==null?void 0:re.events)==null?void 0:Lt.select)==null||Qt.call(at.data,U)),(z||B||W!==void 0)&&H.each(function(Ge,ze){const hn=st(this);N.selectedIndices.has(ze)?(z&&hn.attr("fill",z),B&&hn.attr("stroke",B),W!==void 0&&hn.attr("stroke-width",W)):(hn.attr("fill",X(Ge,ze)),hn.attr("stroke",N.config.borderColor||N.autoBorderColor()),hn.attr("stroke-width",N.config.borderWidth??1))})),N.context.events.emit("point:click",{point:at.data,index:xt,series:N,event:U}),(Ze=(pe=at.data.events)==null?void 0:pe.click)==null||Ze.call(at.data,U),(Sn=(ge=N.config.events)==null?void 0:ge.click)==null||Sn.call(N,U)});for(const U of this.dataLabelConfigs())this.renderPieLabels(D,T,S,k,_-$,U,f);s&&this.emitAfterAnimate(vt+T.length*Wt)}renderPieLabels(t,e,i,r,o,s,a){var _,L;if(!s||s.enabled===!1)return;const l=this.context.plotArea.width,c=this.context.plotArea.height,h=l/2,f=c/2,u=s.distance??30,d=s.connectorWidth??1,p=s.connectorColor||"#999",y=s.connectorPadding??5;s.softConnector;const g=((_=s.style)==null?void 0:_.fontSize)||kt,m=s.color||((L=s.style)==null?void 0:L.color)||xe,x=s.alignTo,v=u<0,b=be(g),k=b*1.4,M=[],{colors:P}=this.context;if(e.forEach((I,E)=>{const C=I.data.percentage,S=i.centroid(I),w=(I.startAngle+I.endAngle)/2,A=I.data.color||(this.config.colors?this.config.colors[E%this.config.colors.length]:P[E%P.length]),T=r+u;let F=T*Math.sin(w),D=-T*Math.cos(w);(x==="plotEdges"||x==="connectors")&&(F=w<Math.PI?h-5:-(h-5));let R,z;const B={...I.data,color:A};s.formatter?R=s.formatter.call({point:B,series:{name:this.config.name},x:I.data.x,y:I.data.y,percentage:C}):s.format?R=Kt(s.format,{point:B,series:{name:this.config.name}}):R=I.data.name||String(I.data.y);const W=/(?:^|[\s;"'])color\s*:\s*([^;"'>]+)/i.exec(R);W&&(z=ef(W[1],A)),R=de(R),M.push({lx:F,ly:D,text:R,midAngle:w,centroid:S,percentage:C,data:I.data,visible:!0,color:A,inlineColor:z})}),!v&&!s.allowOverlap){const I=M.filter(S=>S.midAngle<Math.PI),E=M.filter(S=>S.midAngle>=Math.PI);this.distribute(I,k,f,h,g),this.distribute(E,k,f,h,g);const C=r+u;for(const S of M){if(!S.visible)continue;const w=Math.max(-C,Math.min(C,S.ly)),A=Math.sqrt(Math.max(0,C*C-w*w)),T=S.midAngle<Math.PI;S.lx=T?Math.max(A,r*.3):-Math.max(A,r*.3);const F=a+S.lx,D=(S.lx>=0?l-F:F)-6;if(D>b&&We(S.text,b)>D){let R=S.text;for(;R.length>1&&We(R+"…",b)>D;)R=R.slice(0,-1);S.text=R.trimEnd()+"…"}}}else if(v&&!s.allowOverlap){const I=[],E=M.filter(C=>C.visible).sort((C,S)=>S.percentage-C.percentage);for(const C of E){const S=We(C.text,b),w=b*1.1,A=C.centroid[0],T=C.centroid[1],F={l:A-S/2,r:A+S/2,t:T-w/2,b:T+w/2};if(I.some(R=>F.l<R.r&&F.r>R.l&&F.t<R.b&&F.b>R.t)){C.visible=!1;continue}I.push(F)}}const $=t.append("g").attr("class","katucharts-pie-labels");M.forEach(I=>{if(!I.visible)return;const{lx:E,ly:C,text:S,midAngle:w,centroid:A,color:T,inlineColor:F}=I,D=w<Math.PI,R=T||p;if(d>0&&u>=0){const W=r+y,K=W*Math.sin(w),X=-W*Math.cos(w),q=s.connectorShape||"fixedOffset";if(q==="straight")$.append("line").attr("class","katucharts-pie-connector").attr("x1",A[0]).attr("y1",A[1]).attr("x2",E).attr("y2",C).attr("stroke",R).attr("stroke-width",d);else if(q==="crookedLine"){const N=s.crookDistance??"70%",H=typeof N=="string"?parseFloat(N)/100:N/u,Y=r+u*H,G=Y*Math.sin(w),Q=-Y*Math.cos(w);$.append("path").attr("class","katucharts-pie-connector").attr("d",`M${A[0]},${A[1]}L${G},${Q}L${E},${C}`).attr("fill","none").attr("stroke",R).attr("stroke-width",d)}else if(typeof q=="function"){const N=q({connectorPosition:{from:A,to:[E,C]},labelDistance:u,labelPosition:[E,C]});$.append("path").attr("class","katucharts-pie-connector").attr("d",N).attr("fill","none").attr("stroke",R).attr("stroke-width",d)}else{const N=r+u*.5,H=N*Math.sin(w),Y=-N*Math.cos(w);$.append("path").attr("class","katucharts-pie-connector").attr("d",`M${K},${X}L${H},${Y}L${E},${C}`).attr("fill","none").attr("stroke",R).attr("stroke-width",d)}}const z=$.append("text").attr("x",(v?A[0]:E)+(s.x??0)).attr("y",(v?A[1]:C)+(s.y??0)).attr("text-anchor",v?"middle":D?"start":"end").attr("dominant-baseline","middle").attr("font-size",g).attr("fill",F||m).style("pointer-events","none").text(S),B=s.style||{};B.fontWeight&&z.attr("font-weight",B.fontWeight),B.fontFamily&&z.attr("font-family",B.fontFamily),B.textOutline&&z.style("text-shadow",B.textOutline)})}distribute(t,e,i,r,o){const s=t.filter(u=>u.visible);if(s.length<=1)return;const a=-(i-5),c=i-5-a,h=s.map(u=>({target:u.ly-a,size:e,rank:u.percentage,pos:0,removed:!1,label:u})),f=e*3;this.distributeBoxes(h,c,f);for(const u of h)u.removed?u.label.visible=!1:u.label.ly=a+u.pos+e/2}distributeBoxes(t,e,i){const r=t.filter(s=>!s.removed);if(r.length===0)return;let o=r.reduce((s,a)=>s+a.size,0);if(o>e){const s=[...r].sort((l,c)=>l.rank-c.rank);let a=0;for(;o>e&&a<s.length;)s[a].removed=!0,o-=s[a].size,a++}for(let s=0;s<=t.length;s++){const a=r.filter(c=>!c.removed);if(a.length<=1)break;a.sort((c,h)=>c.target-h.target);for(let c=0;c<a.length;c++)if(a[c].pos=a[c].target,c>0){const h=a[c-1].pos+a[c-1].size;a[c].pos<h&&(a[c].pos=h)}for(let c=a.length-1;c>=0;c--){const h=c===a.length-1?e-a[c].size:a[c+1].pos-a[c].size;a[c].pos>h&&(a[c].pos=Math.max(0,h))}for(let c=0;c<5;c++)for(let h=0;h<a.length;h++){const f=a[h].pos+(a[h].target-a[h].pos)*.3,u=h>0?a[h-1].pos+a[h-1].size:0,d=h<a.length-1?a[h+1].pos-a[h].size:e-a[h].size;a[h].pos=Math.max(u,Math.min(d,f))}let l=null;for(const c of a)Math.abs(c.pos-c.target)<=i||(!l||c.rank<l.rank)&&(l=c);if(!l)break;l.removed=!0}}render3DEffect(t,e,i,r,o){const{colors:s}=this.context,a=t.insert("g",":first-child").attr("class","katucharts-pie-3d");for(const l of e){const c=e.indexOf(l),h=l.data.color||(this.config.colors?this.config.colors[c%this.config.colors.length]:s[c%s.length]),f=l.startAngle-Math.PI/2,u=l.endAngle-Math.PI/2;if(f>0&&u>0||f<0&&u<0&&f<-Math.PI&&u<-Math.PI)continue;const d=Ce().innerRadius(i).outerRadius(r).startAngle(l.startAngle).endAngle(l.endAngle);a.append("path").attr("d",d({})).attr("fill",h).attr("opacity",.7).attr("transform",`translate(0,${o})`)}}resolvePercent(t,e){return typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:parseFloat(t)||0}resolveBorderRadius(t){return t===void 0?3:typeof t=="number"?t:t.radius??3}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class td extends Ut{constructor(t){super(t)}render(){var p,y;const{plotArea:t,colors:e}=this.context,i=this.data.filter(g=>g.y!==null&&g.y!==void 0),r=this.context.animate,o=t.height*.8,s=o/i.length,a=Math.max(...i.map(g=>g.y??0),1),l=t.width/2,c=t.width*.7,h=c*.15,f=(t.height-o)/2,u=((y=(p=this.config.states)==null?void 0:p.inactive)==null?void 0:y.opacity)??.4,d=[];i.forEach((g,m)=>{var L,I,E;const x=(g.y??0)/a,v=m<i.length-1?(i[m+1].y??0)/a:x*.5,b=h+(c-h)*x,k=h+(c-h)*v,M=f+m*s,P=[`M ${l-b/2} ${M}`,`L ${l+b/2} ${M}`,`L ${l+k/2} ${M+s}`,`L ${l-k/2} ${M+s}`,"Z"].join(" "),$=g.color||e[m%e.length],_=this.group.append("path").attr("d",P).attr("stroke",this.config.borderColor||this.autoBorderColor()).attr("stroke-width",this.config.borderWidth??1).attr("class","katucharts-funnel-segment").style("cursor",this.config.cursor||"pointer");if(d.push(_),r?_.attr("fill",$).attr("opacity",0).transition().duration(vt).ease(pt).delay(Pe(m,0,Wt,i.length)).attr("opacity",1):_.attr("fill",$),(L=this.config.dataLabels)!=null&&L.enabled){const C=this.config.dataLabels,S=((I=C.style)==null?void 0:I.fontSize)||kt,w=C.color||((E=C.style)==null?void 0:E.color)||xe;let A;C.formatter?A=C.formatter.call({point:g,series:{name:this.config.name},x:g.x,y:g.y}):C.format?A=de(Kt(C.format,{point:g,series:{name:this.config.name}})):A=g.name||String(g.y),this.group.append("text").attr("class","katucharts-funnel-label").attr("x",l+(C.x??0)).attr("y",M+s/2+(C.y??0)).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("font-size",S).attr("fill",w).style("pointer-events","none").text(A)}this.config.enableMouseTracking!==!1&&_.on("mouseover",C=>{var S,w;_.transition("move").duration(Z).ease(j).attr("transform","translate(0, -3)").style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.2))"),d.forEach(A=>A.interrupt("highlight")),d.forEach(A=>A.attr("opacity",1)),d.forEach((A,T)=>{T!==m&&A.transition("highlight").duration(Z).ease(j).attr("opacity",u)}),this.context.events.emit("point:mouseover",{point:g,index:m,series:this,event:C,plotX:l,plotY:M+s/2}),(w=(S=g.events)==null?void 0:S.mouseOver)==null||w.call(g,C)}).on("mouseout",C=>{var S,w;_.transition("move").duration(Z).ease(j).attr("transform","").style("filter",""),d.forEach(A=>A.interrupt("highlight")),d.forEach(A=>A.transition("highlight").duration(Z).ease(j).attr("opacity",1)),this.context.events.emit("point:mouseout",{point:g,index:m,series:this,event:C}),(w=(S=g.events)==null?void 0:S.mouseOut)==null||w.call(g,C)}).on("click",C=>{var S,w,A,T;this.context.events.emit("point:click",{point:g,index:m,series:this,event:C}),(w=(S=g.events)==null?void 0:S.click)==null||w.call(g,C),(T=(A=this.config.events)==null?void 0:A.click)==null||T.call(this,C)})})}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class K2 extends td{constructor(t){super(t),this.data=[...t._processedData||[]].reverse()}}function je(n){for(var t=n.length/6|0,e=new Array(t),i=0;i<t;)e[i]="#"+n.slice(i*6,++i*6);return e}const Nn=n=>By(n[n.length-1]);var J2=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(je);const Q2=Nn(J2);var tw=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(je);const ew=Nn(tw);var nw=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(je);const ed=Nn(nw);var iw=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(je);const nd=Nn(iw);var rw=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(je);const ow=Nn(rw);var sw=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(je);const aw=Nn(sw);var cw=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(je);const lw=Nn(cw);var hw=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(je);const uw=Nn(hw);var fw=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(je);const dw=Nn(fw);function fs(n){var t=n.length;return function(e){return n[Math.max(0,Math.min(t-1,Math.floor(e*t)))]}}const pw=fs(je("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));fs(je("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf"));var gw=fs(je("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),mw=fs(je("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function yw(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}class xw extends Ut{constructor(t){super(t),t.showInLegend=!1}render(){var S,w;const{plotArea:t}=this.context,e=this.context.animate,i=this.data,r=this.config.colorAxis||{},o=i.map(A=>A.value??A.z??A.y??0).filter(A=>A!=null),s=r.min??(o.length>0?Math.min(...o):0),a=r.max??(o.length>0?Math.max(...o):1),l=this.config.nullColor??"#e4e4e4",c=((w=(S=this.config.states)==null?void 0:S.inactive)==null?void 0:w.opacity)??.4,h=this.buildColorScale(r,s,a),f=this.config.interpolation===!0,u=this.config.colsize??1,d=this.config.rowsize??1,p=this.config.pointPadding??0,y=this.getUniqueValues("x"),g=this.getUniqueValues("yCategory"),m=y.length>0&&g.length>0,x=m?t.width/y.length:t.width/Math.max(1,Math.ceil((Math.max(...i.map(A=>A.x??0))+u)/u)),v=m?t.height/g.length:t.height/Math.max(1,Math.ceil((Math.max(...i.map(A=>A.y??0))+d)/d)),b=A=>{if(A.color)return A.color;const T=A.value??A.z??A.y;return T==null?l:h(T)},k=A=>m?(typeof A.x=="number"?A.x:0)*x:(A.x??0)/u*x,M=A=>m?(typeof A.yCategory=="number"?A.yCategory:typeof A.y=="number"?A.y:0)*v:(A.y??0)/d*v,P=p*x,$=p*v,_=x*u-(this.config.borderWidth??1),L=v*d-(this.config.borderWidth??1),I=Math.max(1,(m?x-1:_)-P*2),E=Math.max(1,(m?v-1:L)-$*2);if(f){this.renderInterpolated(i,t,h,l,k,M,x,v,b),this.renderHeatmapLabels(i,k,M,x,v,b),this.renderColorAxis(h,s,a);return}const C=this.group.selectAll(".katucharts-heatmap-cell").data(i).join("rect").attr("class","katucharts-heatmap-cell").attr("x",A=>k(A)+P).attr("y",A=>M(A)+$).attr("width",I).attr("height",E).attr("stroke",this.config.borderColor||this.autoBorderColor()).attr("stroke-width",this.config.borderWidth??1).attr("rx",yw(this.config.borderRadius)).style("cursor",this.config.cursor||"pointer");e?C.attr("fill","#fff").transition().duration(600).delay((A,T)=>T*8).attr("fill",A=>b(A)):C.attr("fill",A=>b(A)),this.config.enableMouseTracking!==!1&&C.on("mouseover",(A,T)=>{var W,K,X,q;const F=st(A.currentTarget),D=b(T),R=((K=(W=se(D))==null?void 0:W.brighter(.4))==null?void 0:K.toString())||D;F.interrupt("hover").transition("hover").duration(Z).ease(j).attr("fill",R).attr("stroke","#333").attr("stroke-width",2),F.style("filter","drop-shadow(0 1px 3px rgba(0,0,0,0.3))"),C.interrupt("highlight"),C.attr("opacity",1),C.filter(N=>N!==T).transition("highlight").duration(Z).ease(j).attr("opacity",c);const z=i.indexOf(T),B=T.value??T.z??T.y;this.context.events.emit("point:mouseover",{point:{...T,value:B},index:z,series:this,event:A,plotX:k(T)+x/2,plotY:M(T)+v/2}),(q=(X=T.events)==null?void 0:X.mouseOver)==null||q.call(T,A)}).on("mouseout",(A,T)=>{var R,z;const F=st(A.currentTarget);F.interrupt("hover").transition("hover").duration(Z).ease(j).attr("fill",b(T)).attr("stroke",this.config.borderColor||this.autoBorderColor()).attr("stroke-width",this.config.borderWidth??1),F.style("filter",""),C.interrupt("highlight"),C.transition("highlight").duration(Z).ease(j).attr("opacity",1);const D=i.indexOf(T);this.context.events.emit("point:mouseout",{point:T,index:D,series:this,event:A}),(z=(R=T.events)==null?void 0:R.mouseOut)==null||z.call(T,A)}).on("click",(A,T)=>{var D,R,z,B;const F=i.indexOf(T);this.context.events.emit("point:click",{point:T,index:F,series:this,event:A}),(R=(D=T.events)==null?void 0:D.click)==null||R.call(T,A),(B=(z=this.config.events)==null?void 0:z.click)==null||B.call(this,A)}),this.renderHeatmapLabels(i,k,M,x,v,b),this.renderColorAxis(h,s,a)}renderInterpolated(t,e,i,r,o,s,a,l,c){const h=new Set,f=new Set;for(const $ of t)h.add($.x??0),f.add($.yCategory??$.y??0);const u=Array.from(h).sort(($,_)=>$-_),d=Array.from(f).sort(($,_)=>$-_),p=u.length,y=d.length;if(p===0||y===0)return;const g=new Map;for(const $ of t){const _=$.value??$.z??$.y,L=u.indexOf($.x??0),I=d.indexOf($.yCategory??$.y??0);_!=null&&g.set(`${L},${I}`,_)}const m=Math.round(e.width),x=Math.round(e.height),v=document.createElement("canvas");v.width=m,v.height=x;const b=v.getContext("2d");if(!b)return;const k=b.createImageData(m,x),M=k.data;for(let $=0;$<x;$++)for(let _=0;_<m;_++){const L=_/m*p-.5,I=$/x*y-.5,E=Math.floor(L),C=Math.floor(I),S=L-E,w=I-C,A=(N,H)=>g.get(`${Math.max(0,Math.min(p-1,N))},${Math.max(0,Math.min(y-1,H))}`)??null,T=A(E,C),F=A(E+1,C),D=A(E,C+1),R=A(E+1,C+1),z=[T,F,D,R].filter(N=>N!==null);if(z.length===0){const N=Xe(r),H=($*m+_)*4;M[H]=N.r,M[H+1]=N.g,M[H+2]=N.b,M[H+3]=255;continue}const B=N=>N??z[0],W=B(T)*(1-S)*(1-w)+B(F)*S*(1-w)+B(D)*(1-S)*w+B(R)*S*w,K=i(W),X=Xe(K),q=($*m+_)*4;M[q]=X.r,M[q+1]=X.g,M[q+2]=X.b,M[q+3]=255}b.putImageData(k,0,0);const P=v.toDataURL();this.group.append("image").attr("class","katucharts-heatmap-interpolated").attr("width",e.width).attr("height",e.height).attr("href",P).style("image-rendering","auto")}buildColorScale(t,e,i){const r=t.reversed===!0,o=r?i:e,s=r?e:i;if(t.dataClasses&&t.dataClasses.length>0){const u=t.dataClasses;return d=>{var p;for(const y of u){const g=y.from??-1/0,m=y.to??1/0;if(d>=g&&d<m)return y.color||"#cccccc"}return((p=u[u.length-1])==null?void 0:p.color)||"#cccccc"}}const a=t.type==="logarithmic",l=a?Math.max(o,1e-10):o,c=()=>a?To().domain([l,s]).clamp(!0):ke().domain([o,s]).clamp(!0);if(t.stops&&t.stops.length>=2){const u=t.stops,d=c();return p=>{const y=d(a?Math.max(p,1e-10):p);let g=0;for(;g<u.length-1&&!(y<=u[g+1][0]);g++);const[m,x]=u[g],[v,b]=u[Math.min(g+1,u.length-1)],k=v!==m?(y-m)/(v-m):0;return mi(x,b)(k)}}if(t.minColor&&t.maxColor){const u=mi(t.minColor,t.maxColor),d=c();return p=>u(d(a?Math.max(p,1e-10):p))}const h=r?[i,e]:[e,i],f=zu(ed).domain(h);return u=>f(u)}renderColorAxis(t,e,i){var b,k;const r=this.config.colorAxis||{};if(((b=r.labels)==null?void 0:b.enabled)===!1)return;const{plotArea:o}=this.context,a=(this.context.legendConfig||{}).layout==="vertical",l=this.context.plotGroup||this.group;l.selectAll(".katucharts-color-axis").remove();const c=l.append("g").attr("class","katucharts-color-axis"),h=((k=r.labels)==null?void 0:k.style)||{},f=h.fontSize||kt,u=h.color||this.autoLabelColor(),d=i-e,p=d/6,y=Math.pow(10,Math.floor(Math.log10(p))),g=[1,2,2.5,5,10].find(M=>M*y>=p)*y,m=Math.ceil(e/g)*g,x=[];for(let M=m;M<=i+g*.01;M+=g)x.push(Math.round(M*1e6)/1e6);(x.length===0||x[0]>e)&&x.unshift(e),x[x.length-1]<i&&x.push(i);const v=g>=1?0:g>=.1?1:2;if(r.dataClasses&&r.dataClasses.length>0){const M=r.dataClasses,P=Math.min(o.width*.6,300),$=12,_=(o.width-P)/2,L=o.height+60,I=P/M.length;for(let E=0;E<M.length;E++){const C=M[E];c.append("rect").attr("x",_+E*I).attr("y",L).attr("width",I).attr("height",$).attr("fill",C.color||"#ccc").attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",E===0?2:0).attr("ry",E===0?2:0),C.name&&c.append("text").attr("x",_+E*I+I/2).attr("y",L+$+30).attr("font-size",f).attr("fill",u).attr("text-anchor","middle").text(C.name)}return}if(a){const P=Math.min(o.height*.7,200),$=o.width+20,_=(o.height-P)/2,L=c.append("defs"),I=x.length-1,E=P/I;for(let C=0;C<I;C++){const S=I-1-C,w=`katucharts-heatmap-seg-${Math.random().toString(36).slice(2,8)}`,A=L.append("linearGradient").attr("id",w).attr("x1","0%").attr("y1","0%").attr("x2","0%").attr("y2","100%");A.append("stop").attr("offset","0%").attr("stop-color",t(x[S+1])),A.append("stop").attr("offset","100%").attr("stop-color",t(x[S])),c.append("rect").attr("x",$).attr("y",_+C*E).attr("width",12).attr("height",E+.5).attr("fill",`url(#${w})`).attr("stroke","none")}c.append("rect").attr("x",$).attr("y",_).attr("width",12).attr("height",P).attr("fill","none").attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",2);for(let C=0;C<x.length;C++){const S=_+P-(x[C]-e)/d*P;c.append("line").attr("x1",$+12).attr("y1",S).attr("x2",$+12+4).attr("y2",S).attr("stroke","#999").attr("stroke-width",.5),c.append("text").attr("x",$+12+7).attr("y",S+4).attr("font-size",f).attr("fill",u).attr("text-anchor","start").text(x[C].toFixed(v))}}else{const P=Math.min(o.width*.6,300),$=(o.width-P)/2,_=o.height+60,L=c.append("defs"),I=x.length-1,E=P/I;for(let C=0;C<I;C++){const S=`katucharts-heatmap-seg-${Math.random().toString(36).slice(2,8)}`,w=L.append("linearGradient").attr("id",S).attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");w.append("stop").attr("offset","0%").attr("stop-color",t(x[C])),w.append("stop").attr("offset","100%").attr("stop-color",t(x[C+1])),c.append("rect").attr("x",$+C*E).attr("y",_).attr("width",E+.5).attr("height",12).attr("fill",`url(#${S})`).attr("stroke","none")}c.append("rect").attr("x",$).attr("y",_).attr("width",P).attr("height",12).attr("fill","none").attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",2);for(let C=0;C<x.length;C++){const S=$+(x[C]-e)/d*P;c.append("line").attr("x1",S).attr("y1",_+12+8).attr("x2",S).attr("y2",_+12+16).attr("stroke","#999").attr("stroke-width",.5),c.append("text").attr("x",S).attr("y",_+12+30).attr("font-size",f).attr("fill",u).attr("text-anchor",C===0?"start":C===x.length-1?"end":"middle").text(x[C].toFixed(v))}}}renderHeatmapLabels(t,e,i,r,o,s){var f,u;const a=this.config.dataLabels;if(!(a!=null&&a.enabled))return;const l=a.minCellHeight??20;if(o<l)return;const c=((f=a.style)==null?void 0:f.fontSize)||kt,h=a.color||((u=a.style)==null?void 0:u.color)||void 0;this.group.selectAll(".katucharts-heatmap-label").data(t).join("text").attr("class","katucharts-heatmap-label").attr("x",d=>e(d)+r/2+(a.x??0)).attr("y",d=>i(d)+o/2+(a.y??0)).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("font-size",c).attr("fill",d=>Pn(s(d),h)).style("pointer-events","none").text(d=>{const p=d.value??d.z??d.y;return p==null?a.nullFormatter?a.nullFormatter.call({point:d,series:{name:this.config.name}}):a.nullFormat?a.nullFormat:"":a.formatter?a.formatter.call({point:{...d,value:p},series:{name:this.config.name},x:d.x,y:d.y}):a.format?de(Kt(a.format,{point:{...d,value:p},series:{name:this.config.name},x:d.x,y:d.y,value:p})):String(p)})}getUniqueValues(t){const e=new Set;for(const i of this.data){const r=i[t];r!==void 0&&e.add(r)}return Array.from(e).sort((i,r)=>i-r)}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}function bw(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}class vw extends Ut{constructor(t){super(t)}render(){const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data,s=this.context.animate,{boxWidth:a,boxOffset:l}=this.computeBoxGeometry(),c=this.config.medianColor||null,h=this.config.medianWidth??2,f=on(this.config.medianDashStyle),u=this.config.stemWidth??1,d=on(this.config.stemDashStyle),p=this.config.whiskerWidth??2,y=on(this.config.whiskerDashStyle),g=this.parseWhiskerLength(this.config.whiskerLength,a),m=on(this.config.boxDashStyle),x=this.config.lineWidth??1,b=(typeof this.config.animation=="object"?this.config.animation:{}).duration??vt;for(let k=0;k<o.length;k++){const M=o[k],P=t.getPixelForValue(M.x??k)+l+a/2,$=M.low??0,_=M.q1??M.low??0,L=M.median??M.y??0,I=M.q3??M.high??0,E=M.high??0,C=e.getPixelForValue(($+E)/2),S=M.color||this.getPointColor(k,r),w=this.config.fillColor??"transparent",A=this.config.stemColor||S,T=this.config.whiskerColor||S,F=this.group.append("g").attr("class","katucharts-boxplot-point").style("cursor",this.config.cursor||"pointer"),D=F.append("line").attr("x1",P).attr("x2",P).attr("stroke",A).attr("stroke-width",u).attr("stroke-dasharray",d),R=F.append("line").attr("x1",P).attr("x2",P).attr("stroke",A).attr("stroke-width",u).attr("stroke-dasharray",d),z=F.append("rect").attr("x",P-a/2).attr("width",a).attr("fill",w).attr("stroke",S).attr("stroke-width",x).attr("stroke-dasharray",m).attr("rx",bw(this.config.borderRadius)),B=F.append("line").attr("x1",P-a/2).attr("x2",P+a/2).attr("stroke",c||this.config.lineColor||S).attr("stroke-width",h).attr("stroke-dasharray",f),W=F.append("line").attr("x1",P-g/2).attr("x2",P+g/2).attr("stroke",T).attr("stroke-width",p).attr("stroke-dasharray",y),K=F.append("line").attr("x1",P-g/2).attr("x2",P+g/2).attr("stroke",T).attr("stroke-width",p).attr("stroke-dasharray",y);if(s){const X=Pe(k,0,Wt,o.length),q=b;D.attr("y1",C).attr("y2",C).transition().duration(q).ease(pt).delay(X).attr("y1",e.getPixelForValue($)).attr("y2",e.getPixelForValue(_)),R.attr("y1",C).attr("y2",C).transition().duration(q).ease(pt).delay(X).attr("y1",e.getPixelForValue(I)).attr("y2",e.getPixelForValue(E)),z.attr("y",C).attr("height",0).transition().duration(q).ease(pt).delay(X).attr("y",e.getPixelForValue(I)).attr("height",Math.abs(e.getPixelForValue(_)-e.getPixelForValue(I))),B.attr("y1",C).attr("y2",C).transition().duration(q).ease(pt).delay(X).attr("y1",e.getPixelForValue(L)).attr("y2",e.getPixelForValue(L)),W.attr("y1",C).attr("y2",C).transition().duration(q).ease(pt).delay(X).attr("y1",e.getPixelForValue($)).attr("y2",e.getPixelForValue($)),K.attr("y1",C).attr("y2",C).transition().duration(q).ease(pt).delay(X).attr("y1",e.getPixelForValue(E)).attr("y2",e.getPixelForValue(E))}else D.attr("y1",e.getPixelForValue($)).attr("y2",e.getPixelForValue(_)),R.attr("y1",e.getPixelForValue(I)).attr("y2",e.getPixelForValue(E)),z.attr("y",e.getPixelForValue(I)).attr("height",Math.abs(e.getPixelForValue(_)-e.getPixelForValue(I))),B.attr("y1",e.getPixelForValue(L)).attr("y2",e.getPixelForValue(L)),W.attr("y1",e.getPixelForValue($)).attr("y2",e.getPixelForValue($)),K.attr("y1",e.getPixelForValue(E)).attr("y2",e.getPixelForValue(E));this.attachBoxPointEvents(F,M,k,P,e.getPixelForValue(L),x)}this.renderDataLabels(o,(k,M)=>t.getPixelForValue(k.x??M)+l+a/2,k=>e.getPixelForValue(k.high??k.y??0)),s&&this.emitAfterAnimate(b+o.length*Wt)}animateUpdate(t){const{xAxis:e,yAxis:i}=this.context,r=this.getColor(),o=this.data,{boxWidth:s,boxOffset:a}=this.computeBoxGeometry(),c=this.group.selectAll(".katucharts-boxplot-point").nodes();if(c.length!==o.length){this.group.selectAll("*").remove(),this.render();return}for(let h=0;h<Math.min(c.length,o.length);h++){const f=o[h],u=c[h],d=e.getPixelForValue(f.x??h)+a+s/2,p=f.low??0,y=f.q1??f.low??0,g=f.median??f.y??0,m=f.q3??f.high??0,x=f.high??0,v=f.color||this.getPointColor(h,r),b=this.config.stemColor||v,k=this.config.whiskerColor||v,M=this.config.medianColor||this.config.lineColor||v,P=this.config.fillColor??"transparent",$=u.querySelectorAll("line"),_=u.querySelector("rect");if($[0]&&this.group.select(()=>$[0]).attr("stroke",b).transition().duration(t).attr("x1",d).attr("x2",d).attr("y1",i.getPixelForValue(p)).attr("y2",i.getPixelForValue(y)),$[1]&&this.group.select(()=>$[1]).attr("stroke",b).transition().duration(t).attr("x1",d).attr("x2",d).attr("y1",i.getPixelForValue(m)).attr("y2",i.getPixelForValue(x)),_&&this.group.select(()=>_).attr("stroke",v).attr("fill",P).transition().duration(t).attr("x",d-s/2).attr("y",i.getPixelForValue(m)).attr("height",Math.abs(i.getPixelForValue(y)-i.getPixelForValue(m))),$[2]&&this.group.select(()=>$[2]).attr("stroke",M).transition().duration(t).attr("x1",d-s/2).attr("x2",d+s/2).attr("y1",i.getPixelForValue(g)).attr("y2",i.getPixelForValue(g)),$[3]){const L=this.parseWhiskerLength(this.config.whiskerLength,s);this.group.select(()=>$[3]).attr("stroke",k).transition().duration(t).attr("x1",d-L/2).attr("x2",d+L/2).attr("y1",i.getPixelForValue(p)).attr("y2",i.getPixelForValue(p))}if($[4]){const L=this.parseWhiskerLength(this.config.whiskerLength,s);this.group.select(()=>$[4]).attr("stroke",k).transition().duration(t).attr("x1",d-L/2).attr("x2",d+L/2).attr("y1",i.getPixelForValue(x)).attr("y2",i.getPixelForValue(x))}}this.group.selectAll(".katucharts-data-labels").remove(),this.renderDataLabels(o,(h,f)=>e.getPixelForValue(h.x??f)+a+s/2,h=>i.getPixelForValue(h.high??h.y??0))}computeBoxGeometry(){const{xAxis:t,plotArea:e}=this.context,i=this.data,r=this.config.grouping!==!1&&this.context.totalSeriesOfType||1,o=this.config.grouping!==!1&&this.context.indexInType||0,s=this.config.groupPadding??.2,a=this.config.pointPadding??.1;let l;this.config.pointWidth!==void 0?l=this.config.pointWidth*r*1.5:l=Math.min(200*r,e.width/Math.max(i.length,1));let c;this.config.pointWidth!==void 0?c=this.config.pointWidth:(c=l*(1-s*2)/r*(1-a*2),this.config.maxPointWidth!==void 0&&(c=Math.min(c,this.config.maxPointWidth)),c=Math.min(c,90));const f=-l*(1-s*2)/2+(c+c*a*2)*o+c*a;return{boxWidth:c,boxOffset:f}}getPointColor(t,e){if(this.config.colorByPoint){const i=this.config.colors||this.context.colors;return i[t%i.length]}return e}parseWhiskerLength(t,e){return t===void 0?e*.5:typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?e*(parseFloat(t)/100):parseFloat(t)||e*.5}attachBoxPointEvents(t,e,i,r,o,s){if(this.config.enableMouseTracking===!1)return;const a=()=>this.group.selectAll(".katucharts-boxplot-point");t.on("mouseover",l=>{var h,f,u,d,p;t.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.25))"),t.select("rect").interrupt("hover").transition("hover").duration(Z).ease(j).attr("stroke-width",s+1),a().filter(function(){return this!==t.node()}).interrupt("hover").transition("hover").duration(Z).ease(j).style("opacity",.4),this.context.events.emit("point:mouseover",{point:e,index:i,series:this,event:l,plotX:r,plotY:o}),(f=(h=e.events)==null?void 0:h.mouseOver)==null||f.call(e,l),(p=(d=(u=this.config.point)==null?void 0:u.events)==null?void 0:d.mouseOver)==null||p.call(e,l)}).on("mouseout",l=>{var c,h,f,u,d;t.style("filter",""),t.select("rect").interrupt("hover").transition("hover").duration(Z).ease(j).attr("stroke-width",s),a().interrupt("hover").transition("hover").duration(Z).ease(j).style("opacity",null),this.context.events.emit("point:mouseout",{point:e,index:i,series:this,event:l}),(h=(c=e.events)==null?void 0:c.mouseOut)==null||h.call(e,l),(d=(u=(f=this.config.point)==null?void 0:f.events)==null?void 0:u.mouseOut)==null||d.call(e,l)}).on("click",l=>{var c,h,f,u,d,p,y;this.context.events.emit("point:click",{point:e,index:i,series:this,event:l}),(h=(c=e.events)==null?void 0:c.click)==null||h.call(e,l),(d=(u=(f=this.config.point)==null?void 0:f.events)==null?void 0:u.click)==null||d.call(e,l),(y=(p=this.config.events)==null?void 0:p.click)==null||y.call(this,l)})}getDataExtents(){let t=1/0,e=-1/0,i=1/0,r=-1/0;for(let o=0;o<this.data.length;o++){const s=this.data[o],a=s.x??o;t=Math.min(t,a),e=Math.max(e,a),i=Math.min(i,s.low??s.y??0),r=Math.max(r,s.high??s.y??0)}return{xMin:t,xMax:e,yMin:i,yMax:r}}}function id(){$t.registerType("line",jf),$t.registerType("spline",V2),$t.registerType("area",qf),$t.registerType("areaspline",Y2),$t.registerType("column",Zf),$t.registerType("bar",j2),$t.registerType("scatter",q2),$t.registerType("bubble",Z2),$t.registerType("pie",Qf),$t.registerType("donut",Qf),$t.registerType("heatmap",xw),$t.registerType("boxplot",vw)}function rd(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}class ww extends Ut{constructor(t){super(t),this.processed=[]}render(){const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data,s=this.context.animate,{barWidth:a,barOffset:l}=this.computeBarGeometry();this.processed=this.processWaterfallData(o);const c=this.group.selectAll(".katucharts-waterfall-bar").data(this.processed).join("rect").attr("class","katucharts-waterfall-bar").attr("x",d=>t.getPixelForValue(d.x??0)+l).attr("width",a).attr("rx",rd(this.config.borderRadius)).attr("fill",(d,p)=>this.getBarColor(d,p,r)).attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0).style("cursor",this.config.cursor||"pointer"),h=e.getPixelForValue(0),u=(typeof this.config.animation=="object"?this.config.animation:{}).duration??vt;s?c.attr("y",h).attr("height",0).transition().duration(u).ease(pt).delay((d,p)=>Pe(p,0,Wt,this.processed.length)).attr("y",d=>Math.min(e.getPixelForValue(d._start),e.getPixelForValue(d._end))).attr("height",d=>Math.max(Math.abs(e.getPixelForValue(d._start)-e.getPixelForValue(d._end)),this.config.minPointLength??0)):c.attr("y",d=>Math.min(e.getPixelForValue(d._start),e.getPixelForValue(d._end))).attr("height",d=>Math.max(Math.abs(e.getPixelForValue(d._start)-e.getPixelForValue(d._end)),this.config.minPointLength??0)),this.attachBarEvents(c),this.renderConnectors(a,l,!!s),this.renderDataLabels(this.processed,d=>t.getPixelForValue(d.x??0)+l+a/2,d=>e.getPixelForValue(d._end)),s&&this.emitAfterAnimate(u+o.length*Wt)}animateUpdate(t){const{xAxis:e,yAxis:i}=this.context,r=this.getColor(),{barWidth:o,barOffset:s}=this.computeBarGeometry();this.processed=this.processWaterfallData(this.data);const a=this.group.selectAll(".katucharts-waterfall-bar").data(this.processed);a.exit().transition().duration(t).attr("opacity",0).remove(),a.enter().append("rect").attr("class","katucharts-waterfall-bar").attr("rx",rd(this.config.borderRadius)).attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0).attr("y",i.getPixelForValue(0)).attr("height",0).merge(a).transition().duration(t).attr("x",c=>e.getPixelForValue(c.x??0)+s).attr("width",o).attr("fill",(c,h)=>this.getBarColor(c,h,r)).attr("y",c=>Math.min(i.getPixelForValue(c._start),i.getPixelForValue(c._end))).attr("height",c=>Math.max(Math.abs(i.getPixelForValue(c._start)-i.getPixelForValue(c._end)),this.config.minPointLength??0)),this.group.selectAll(".katucharts-waterfall-connector").remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.renderConnectors(o,s,!1),this.attachBarEvents(this.group.selectAll(".katucharts-waterfall-bar")),this.renderDataLabels(this.processed,c=>e.getPixelForValue(c.x??0)+s+o/2,c=>i.getPixelForValue(c._end))}processWaterfallData(t){let e=0,i=0;return t.map((r,o)=>{const s=!!r.isSum,a=!!r.isIntermediateSum,l=s||a,c=r.y??0;let h,f;return s?(h=0,f=e):a?(h=i,f=e,i=e):(h=e,f=e+c,e+=c),{...r,_start:h,_end:f,_isTotal:l,_isIntermediate:a}})}getBarColor(t,e,i){if(t.color)return t.color;if(this.config.colorByPoint){const o=this.config.colors||this.context.colors;return o[e%o.length]}return t._isIntermediate?this.config.intermediateSumColor||this.config.sumColor||"#434348":t._isTotal?this.config.sumColor||"#434348":(t.y??0)>=0?this.config.upColor||i:this.config.negativeColor||"#f15c80"}computeBarGeometry(){const{xAxis:t,plotArea:e}=this.context,i=this.data,r=this.config.grouping!==!1&&this.context.totalSeriesOfType||1,o=this.config.grouping!==!1&&this.context.indexInType||0,s=this.config.groupPadding??.2,a=this.config.pointPadding??.1;let l;this.config.pointWidth!==void 0?l=this.config.pointWidth*r*1.5:l=e.width/Math.max(i.length,1);let c;this.config.pointWidth!==void 0?c=this.config.pointWidth:c=l*(1-s*2)/r*(1-a*2),this.config.maxPointWidth!==void 0&&(c=Math.min(c,this.config.maxPointWidth));const f=-l*(1-s*2)/2+(c+c*a*2)*o+c*a;return{barWidth:c,barOffset:f}}renderConnectors(t,e,i){const{xAxis:r,yAxis:o}=this.context,s=this.config.lineColor||"#999",a=this.config.lineWidth??1,l=on(this.config.dashStyle||"Dot"),c=this.group.selectAll(".katucharts-waterfall-connector").data(this.processed.slice(0,-1)).join("line").attr("class","katucharts-waterfall-connector").attr("x1",h=>r.getPixelForValue(h.x??0)+e+t).attr("x2",(h,f)=>r.getPixelForValue(this.processed[f+1].x??0)+e).attr("y1",h=>o.getPixelForValue(h._end)).attr("y2",h=>o.getPixelForValue(h._end)).attr("stroke",s).attr("stroke-width",a).attr("stroke-dasharray",l);i&&c.attr("opacity",0).transition().duration(vt).ease(pt).delay((h,f)=>vt+f*Wt).attr("opacity",1)}attachBarEvents(t){if(this.config.enableMouseTracking===!1)return;const{xAxis:e,yAxis:i}=this.context,r=this.processed;t.style("cursor",this.config.cursor||"pointer").on("mouseover",(o,s)=>{var h,f,u,d,p;const a=o.currentTarget,l=a.getAttribute("fill")||"";a.setAttribute("data-orig-fill",l),a.style.filter="drop-shadow(0 2px 4px rgba(0,0,0,0.25))",st(a).interrupt("hover").transition("hover").duration(Z).ease(j).style("fill",Xf(l,.15));const c=r.indexOf(s);this.context.events.emit("point:mouseover",{point:s,index:c,series:this,event:o,plotX:e.getPixelForValue(s.x??0),plotY:i.getPixelForValue(s._end)}),(f=(h=s.events)==null?void 0:h.mouseOver)==null||f.call(s,o),(p=(d=(u=this.config.point)==null?void 0:u.events)==null?void 0:d.mouseOver)==null||p.call(s,o)}).on("mouseout",(o,s)=>{var c,h,f,u,d;const a=o.currentTarget;a.style.filter="",st(a).interrupt("hover").transition("hover").duration(Z).ease(j).style("fill",null);const l=r.indexOf(s);this.context.events.emit("point:mouseout",{point:s,index:l,series:this,event:o}),(h=(c=s.events)==null?void 0:c.mouseOut)==null||h.call(s,o),(d=(u=(f=this.config.point)==null?void 0:f.events)==null?void 0:u.mouseOut)==null||d.call(s,o)}).on("click",(o,s)=>{var l,c,h,f,u,d,p;const a=r.indexOf(s);this.context.events.emit("point:click",{point:s,index:a,series:this,event:o}),(c=(l=s.events)==null?void 0:l.click)==null||c.call(s,o),(u=(f=(h=this.config.point)==null?void 0:h.events)==null?void 0:f.click)==null||u.call(s,o),(p=(d=this.config.events)==null?void 0:d.click)==null||p.call(this,o),this.handlePointSelect(st(o.currentTarget),s,a,o)})}getDataExtents(){let t=1/0,e=-1/0,i=0,r=0,o=0;for(let s=0;s<this.data.length;s++){const a=this.data[s],l=a.x??s;t=Math.min(t,l),e=Math.max(e,l);const c=a.isSum||a.isIntermediateSum,h=a.y??0;c||(o+=h),i=Math.min(i,c?0:Math.min(o-h,o),0),r=Math.max(r,o)}return{xMin:t,xMax:e,yMin:i,yMax:r}}}function kw(n,t){return n.parent===t.parent?1:2}function Mw(n){return n.reduce(Aw,0)/n.length}function Aw(n,t){return n+t.x}function Sw(n){return 1+n.reduce(_w,0)}function _w(n,t){return Math.max(n,t.y)}function Cw(n){for(var t;t=n.children;)n=t[0];return n}function Pw(n){for(var t;t=n.children;)n=t[t.length-1];return n}function Ew(){var n=kw,t=1,e=1,i=!1;function r(o){var s,a=0;o.eachAfter(function(u){var d=u.children;d?(u.x=Mw(d),u.y=Sw(d)):(u.x=s?a+=n(u,s):0,u.y=0,s=u)});var l=Cw(o),c=Pw(o),h=l.x-n(l,c)/2,f=c.x+n(c,l)/2;return o.eachAfter(i?function(u){u.x=(u.x-o.x)*t,u.y=(o.y-u.y)*e}:function(u){u.x=(u.x-h)/(f-h)*t,u.y=(1-(o.y?u.y/o.y:1))*e})}return r.separation=function(o){return arguments.length?(n=o,r):n},r.size=function(o){return arguments.length?(i=!1,t=+o[0],e=+o[1],r):i?null:[t,e]},r.nodeSize=function(o){return arguments.length?(i=!0,t=+o[0],e=+o[1],r):i?[t,e]:null},r}function Tw(n){var t=0,e=n.children,i=e&&e.length;if(!i)t=1;else for(;--i>=0;)t+=e[i].value;n.value=t}function $w(){return this.eachAfter(Tw)}function Lw(n,t){let e=-1;for(const i of this)n.call(t,i,++e,this);return this}function Iw(n,t){for(var e=this,i=[e],r,o,s=-1;e=i.pop();)if(n.call(t,e,++s,this),r=e.children)for(o=r.length-1;o>=0;--o)i.push(r[o]);return this}function Fw(n,t){for(var e=this,i=[e],r=[],o,s,a,l=-1;e=i.pop();)if(r.push(e),o=e.children)for(s=0,a=o.length;s<a;++s)i.push(o[s]);for(;e=r.pop();)n.call(t,e,++l,this);return this}function Dw(n,t){let e=-1;for(const i of this)if(n.call(t,i,++e,this))return i}function Rw(n){return this.eachAfter(function(t){for(var e=+n(t.data)||0,i=t.children,r=i&&i.length;--r>=0;)e+=i[r].value;t.value=e})}function zw(n){return this.eachBefore(function(t){t.children&&t.children.sort(n)})}function Bw(n){for(var t=this,e=Ow(t,n),i=[t];t!==e;)t=t.parent,i.push(t);for(var r=i.length;n!==e;)i.splice(r,0,n),n=n.parent;return i}function Ow(n,t){if(n===t)return n;var e=n.ancestors(),i=t.ancestors(),r=null;for(n=e.pop(),t=i.pop();n===t;)r=n,n=e.pop(),t=i.pop();return r}function Nw(){for(var n=this,t=[n];n=n.parent;)t.push(n);return t}function Ww(){return Array.from(this)}function Hw(){var n=[];return this.eachBefore(function(t){t.children||n.push(t)}),n}function Vw(){var n=this,t=[];return n.each(function(e){e!==n&&t.push({source:e.parent,target:e})}),t}function*Gw(){var n=this,t,e=[n],i,r,o;do for(t=e.reverse(),e=[];n=t.pop();)if(yield n,i=n.children)for(r=0,o=i.length;r<o;++r)e.push(i[r]);while(e.length)}function qi(n,t){n instanceof Map?(n=[void 0,n],t===void 0&&(t=Uw)):t===void 0&&(t=Xw);for(var e=new Zi(n),i,r=[e],o,s,a,l;i=r.pop();)if((s=t(i.data))&&(l=(s=Array.from(s)).length))for(i.children=s,a=l-1;a>=0;--a)r.push(o=s[a]=new Zi(s[a])),o.parent=i,o.depth=i.depth+1;return e.eachBefore(od)}function Yw(){return qi(this).eachBefore(jw)}function Xw(n){return n.children}function Uw(n){return Array.isArray(n)?n[1]:null}function jw(n){n.data.value!==void 0&&(n.value=n.data.value),n.data=n.data.data}function od(n){var t=0;do n.height=t;while((n=n.parent)&&n.height<++t)}function Zi(n){this.data=n,this.depth=this.height=0,this.parent=null}Zi.prototype=qi.prototype={constructor:Zi,count:$w,each:Lw,eachAfter:Fw,eachBefore:Iw,find:Dw,sum:Rw,sort:zw,path:Bw,ancestors:Nw,descendants:Ww,leaves:Hw,links:Vw,copy:Yw,[Symbol.iterator]:Gw};function Ec(n){return n==null?null:sd(n)}function sd(n){if(typeof n!="function")throw new Error;return n}function Tr(){return 0}function $r(n){return function(){return n}}function ad(n){n.x0=Math.round(n.x0),n.y0=Math.round(n.y0),n.x1=Math.round(n.x1),n.y1=Math.round(n.y1)}function ds(n,t,e,i,r){for(var o=n.children,s,a=-1,l=o.length,c=n.value&&(i-t)/n.value;++a<l;)s=o[a],s.y0=e,s.y1=r,s.x0=t,s.x1=t+=s.value*c}function cd(){var n=1,t=1,e=0,i=!1;function r(s){var a=s.height+1;return s.x0=s.y0=e,s.x1=n,s.y1=t/a,s.eachBefore(o(t,a)),i&&s.eachBefore(ad),s}function o(s,a){return function(l){l.children&&ds(l,l.x0,s*(l.depth+1)/a,l.x1,s*(l.depth+2)/a);var c=l.x0,h=l.y0,f=l.x1-e,u=l.y1-e;f<c&&(c=f=(c+f)/2),u<h&&(h=u=(h+u)/2),l.x0=c,l.y0=h,l.x1=f,l.y1=u}}return r.round=function(s){return arguments.length?(i=!!s,r):i},r.size=function(s){return arguments.length?(n=+s[0],t=+s[1],r):[n,t]},r.padding=function(s){return arguments.length?(e=+s,r):e},r}var qw={depth:-1},ld={},Tc={};function Zw(n){return n.id}function Kw(n){return n.parentId}function $c(){var n=Zw,t=Kw,e;function i(r){var o=Array.from(r),s=n,a=t,l,c,h,f,u,d,p,y,g=new Map;if(e!=null){const m=o.map((b,k)=>Jw(e(b,k,r))),x=m.map(hd),v=new Set(m).add("");for(const b of x)v.has(b)||(v.add(b),m.push(b),x.push(hd(b)),o.push(Tc));s=(b,k)=>m[k],a=(b,k)=>x[k]}for(h=0,l=o.length;h<l;++h)c=o[h],d=o[h]=new Zi(c),(p=s(c,h,r))!=null&&(p+="")&&(y=d.id=p,g.set(y,g.has(y)?ld:d)),(p=a(c,h,r))!=null&&(p+="")&&(d.parent=p);for(h=0;h<l;++h)if(d=o[h],p=d.parent){if(u=g.get(p),!u)throw new Error("missing: "+p);if(u===ld)throw new Error("ambiguous: "+p);u.children?u.children.push(d):u.children=[d],d.parent=u}else{if(f)throw new Error("multiple roots");f=d}if(!f)throw new Error("no root");if(e!=null){for(;f.data===Tc&&f.children.length===1;)f=f.children[0],--l;for(let m=o.length-1;m>=0&&(d=o[m],d.data===Tc);--m)d.data=null}if(f.parent=qw,f.eachBefore(function(m){m.depth=m.parent.depth+1,--l}).eachBefore(od),f.parent=null,l>0)throw new Error("cycle");return f}return i.id=function(r){return arguments.length?(n=Ec(r),i):n},i.parentId=function(r){return arguments.length?(t=Ec(r),i):t},i.path=function(r){return arguments.length?(e=Ec(r),i):e},i}function Jw(n){n=`${n}`;let t=n.length;return Lc(n,t-1)&&!Lc(n,t-2)&&(n=n.slice(0,-1)),n[0]==="/"?n:`/${n}`}function hd(n){let t=n.length;if(t<2)return"";for(;--t>1&&!Lc(n,t););return n.slice(0,t)}function Lc(n,t){if(n[t]==="/"){let e=0;for(;t>0&&n[--t]==="\\";)++e;if(!(e&1))return!0}return!1}function Qw(n,t){return n.parent===t.parent?1:2}function Ic(n){var t=n.children;return t?t[0]:n.t}function Fc(n){var t=n.children;return t?t[t.length-1]:n.t}function tk(n,t,e){var i=e/(t.i-n.i);t.c-=i,t.s+=e,n.c+=i,t.z+=e,t.m+=e}function ek(n){for(var t=0,e=0,i=n.children,r=i.length,o;--r>=0;)o=i[r],o.z+=t,o.m+=t,t+=o.s+(e+=o.c)}function nk(n,t,e){return n.a.parent===t.parent?n.a:e}function ps(n,t){this._=n,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=t}ps.prototype=Object.create(Zi.prototype);function ik(n){for(var t=new ps(n,0),e,i=[t],r,o,s,a;e=i.pop();)if(o=e._.children)for(e.children=new Array(a=o.length),s=a-1;s>=0;--s)i.push(r=e.children[s]=new ps(o[s],s)),r.parent=e;return(t.parent=new ps(null,0)).children=[t],t}function rk(){var n=Qw,t=1,e=1,i=null;function r(c){var h=ik(c);if(h.eachAfter(o),h.parent.m=-h.z,h.eachBefore(s),i)c.eachBefore(l);else{var f=c,u=c,d=c;c.eachBefore(function(x){x.x<f.x&&(f=x),x.x>u.x&&(u=x),x.depth>d.depth&&(d=x)});var p=f===u?1:n(f,u)/2,y=p-f.x,g=t/(u.x+p+y),m=e/(d.depth||1);c.eachBefore(function(x){x.x=(x.x+y)*g,x.y=x.depth*m})}return c}function o(c){var h=c.children,f=c.parent.children,u=c.i?f[c.i-1]:null;if(h){ek(c);var d=(h[0].z+h[h.length-1].z)/2;u?(c.z=u.z+n(c._,u._),c.m=c.z-d):c.z=d}else u&&(c.z=u.z+n(c._,u._));c.parent.A=a(c,u,c.parent.A||f[0])}function s(c){c._.x=c.z+c.parent.m,c.m+=c.parent.m}function a(c,h,f){if(h){for(var u=c,d=c,p=h,y=u.parent.children[0],g=u.m,m=d.m,x=p.m,v=y.m,b;p=Fc(p),u=Ic(u),p&&u;)y=Ic(y),d=Fc(d),d.a=c,b=p.z+x-u.z-g+n(p._,u._),b>0&&(tk(nk(p,c,f),c,b),g+=b,m+=b),x+=p.m,g+=u.m,v+=y.m,m+=d.m;p&&!Fc(d)&&(d.t=p,d.m+=x-m),u&&!Ic(y)&&(y.t=u,y.m+=g-v,f=c)}return f}function l(c){c.x*=t,c.y=c.depth*e}return r.separation=function(c){return arguments.length?(n=c,r):n},r.size=function(c){return arguments.length?(i=!1,t=+c[0],e=+c[1],r):i?null:[t,e]},r.nodeSize=function(c){return arguments.length?(i=!0,t=+c[0],e=+c[1],r):i?[t,e]:null},r}function Lr(n,t,e,i,r){for(var o=n.children,s,a=-1,l=o.length,c=n.value&&(r-e)/n.value;++a<l;)s=o[a],s.x0=t,s.x1=i,s.y0=e,s.y1=e+=s.value*c}var ok=(1+Math.sqrt(5))/2;function sk(n,t,e,i,r,o){for(var s=[],a=t.children,l,c,h=0,f=0,u=a.length,d,p,y=t.value,g,m,x,v,b,k,M;h<u;){d=r-e,p=o-i;do g=a[f++].value;while(!g&&f<u);for(m=x=g,k=Math.max(p/d,d/p)/(y*n),M=g*g*k,b=Math.max(x/M,M/m);f<u;++f){if(g+=c=a[f].value,c<m&&(m=c),c>x&&(x=c),M=g*g*k,v=Math.max(x/M,M/m),v>b){g-=c;break}b=v}s.push(l={value:g,dice:d<p,children:a.slice(h,f)}),l.dice?ds(l,e,i,r,y?i+=p*g/y:o):Lr(l,e,i,y?e+=d*g/y:r,o),y-=g,h=f}return s}const gs=function n(t){function e(i,r,o,s,a){sk(t,i,r,o,s,a)}return e.ratio=function(i){return n((i=+i)>1?i:1)},e}(ok);function ak(){var n=gs,t=!1,e=1,i=1,r=[0],o=Tr,s=Tr,a=Tr,l=Tr,c=Tr;function h(u){return u.x0=u.y0=0,u.x1=e,u.y1=i,u.eachBefore(f),r=[0],t&&u.eachBefore(ad),u}function f(u){var d=r[u.depth],p=u.x0+d,y=u.y0+d,g=u.x1-d,m=u.y1-d;g<p&&(p=g=(p+g)/2),m<y&&(y=m=(y+m)/2),u.x0=p,u.y0=y,u.x1=g,u.y1=m,u.children&&(d=r[u.depth+1]=o(u)/2,p+=c(u)-d,y+=s(u)-d,g-=a(u)-d,m-=l(u)-d,g<p&&(p=g=(p+g)/2),m<y&&(y=m=(y+m)/2),n(u,p,y,g,m))}return h.round=function(u){return arguments.length?(t=!!u,h):t},h.size=function(u){return arguments.length?(e=+u[0],i=+u[1],h):[e,i]},h.tile=function(u){return arguments.length?(n=sd(u),h):n},h.padding=function(u){return arguments.length?h.paddingInner(u).paddingOuter(u):h.paddingInner()},h.paddingInner=function(u){return arguments.length?(o=typeof u=="function"?u:$r(+u),h):o},h.paddingOuter=function(u){return arguments.length?h.paddingTop(u).paddingRight(u).paddingBottom(u).paddingLeft(u):h.paddingTop()},h.paddingTop=function(u){return arguments.length?(s=typeof u=="function"?u:$r(+u),h):s},h.paddingRight=function(u){return arguments.length?(a=typeof u=="function"?u:$r(+u),h):a},h.paddingBottom=function(u){return arguments.length?(l=typeof u=="function"?u:$r(+u),h):l},h.paddingLeft=function(u){return arguments.length?(c=typeof u=="function"?u:$r(+u),h):c},h}function ck(n,t,e,i,r){var o=n.children,s,a=o.length,l,c=new Array(a+1);for(c[0]=l=s=0;s<a;++s)c[s+1]=l+=o[s].value;h(0,a,n.value,t,e,i,r);function h(f,u,d,p,y,g,m){if(f>=u-1){var x=o[f];x.x0=p,x.y0=y,x.x1=g,x.y1=m;return}for(var v=c[f],b=d/2+v,k=f+1,M=u-1;k<M;){var P=k+M>>>1;c[P]<b?k=P+1:M=P}b-c[k-1]<c[k]-b&&f+1<k&&--k;var $=c[k]-v,_=d-$;if(g-p>m-y){var L=d?(p*_+g*$)/d:g;h(f,k,$,p,y,L,m),h(k,u,_,L,y,g,m)}else{var I=d?(y*_+m*$)/d:m;h(f,k,$,p,y,g,I),h(k,u,_,p,I,g,m)}}}function Ir(n,t,e,i,r){(n.depth&1?Lr:ds)(n,t,e,i,r)}function lk(n,t,e){return n?n.split(/<br\s*\/?>/i).map(r=>{const o=[],s=/<b(?:\s+style="([^"]*)")?\s*>([\s\S]*?)<\/b>/gi;let a=0,l;for(;(l=s.exec(r))!==null;){if(l.index>a){const d=de(r.slice(a,l.index));d&&o.push({text:d,fontSize:t,fontWeight:e})}const c=l[1]||"",h=c.match(/font-size\s*:\s*([^;"]+)/i),f=c.match(/font-weight\s*:\s*([^;"]+)/i),u=de(l[2]);u&&o.push({text:u,fontSize:h?h[1].trim():t,fontWeight:f?f[1].trim():"bold"}),a=l.index+l[0].length}if(a<r.length){const c=de(r.slice(a));c&&o.push({text:c,fontSize:t,fontWeight:e})}return o}):[]}function hk(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}class uk extends Ut{constructor(t){super(t),this.currentRoot=null}render(){var L,I,E;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.data,o=this.config.levels||[],s=this.config.colorByPoint!==!1,a=this.config.allowTraversingTree===!0||this.config.allowDrillToNode===!0,l=this.config.interactByLeaf??!a,c=this.config.alternateStartingDirection===!0,h=((I=(L=this.config.states)==null?void 0:L.inactive)==null?void 0:I.opacity)??.4,f=this.buildHierarchy(r),u=a&&this.currentRoot?this.currentRoot:f,d={squarify:gs,squarified:gs,binary:ck,dice:ds,slice:Lr,sliceDice:Ir,sliceAndDice:Ir,strip:Lr,stripes:Lr},p=this.config.layoutAlgorithm||"squarified",y=d[p]||gs,g=this.config.layoutStartingDirection||"vertical",m=this.config.opacity??1,x=c||p==="sliceAndDice"||p==="sliceDice"?Ir:y,v=(C,S)=>{var T,F;const w=((T=C.data)==null?void 0:T.sortIndex)??0,A=((F=S.data)==null?void 0:F.sortIndex)??0;return w!==A?w-A:(S.value||0)-(C.value||0)};u.sort(v),ak().size([t.width,t.height]).tile(x).padding(1)(u);const b=a&&!l&&u.children||u.leaves(),k=C=>o.find(S=>S.level===C),P=(((E=this.config.colorAxis)==null?void 0:E.dataClasses)||[]).map(C=>C.color),$=(C,S)=>{var A,T,F,D,R;if(C.data.color)return C.data.color;const w=k(C.depth);if(w!=null&&w.color){const z=w.colorVariation;if((z==null?void 0:z.key)==="brightness"&&((A=C.parent)!=null&&A.children)){const B=C.parent.children,W=B.indexOf(C),K=B.length,X=K>1?-.5+W/(K-1)*(z.to??.5):0,q=ai(((T=se(w.color))==null?void 0:T.toString())||w.color);return q.l=Math.max(.1,Math.min(.95,q.l+X*.3)),q.toString()}return w.color}if(P.length>0)return P[S%P.length];if(s){const z=e[S%e.length],B=C.parent?k(C.parent.depth):void 0;if(((F=B==null?void 0:B.colorVariation)==null?void 0:F.key)==="brightness"){const W=((D=C.parent)==null?void 0:D.children)||[],K=W.indexOf(C),X=W.length,q=B.colorVariation.to??.5,N=X>1?K/(X-1)*q:q*.5,H=ai(((R=se(z))==null?void 0:R.toString())||z);return H.l=Math.max(.1,Math.min(.95,H.l+N*.3)),H.toString()}return z}return this.getColor()},_=this.group.selectAll(".katucharts-treemap-cell").data(b).join("rect").attr("class","katucharts-treemap-cell").attr("x",C=>C.x0).attr("y",C=>C.y0).attr("width",C=>Math.max(0,C.x1-C.x0)).attr("height",C=>Math.max(0,C.y1-C.y0)).attr("fill",(C,S)=>{const w=$(C,S);return C._color=w,w}).attr("stroke",C=>{const S=k(C.depth);return(S==null?void 0:S.borderColor)||this.config.borderColor||this.autoBorderColor()}).attr("stroke-width",C=>{const S=k(C.depth);return(S==null?void 0:S.borderWidth)??this.config.borderWidth??1}).attr("rx",hk(this.config.borderRadius)).style("cursor",this.config.cursor||"pointer");i?_.attr("opacity",0).transition().duration(vt).ease(pt).delay((C,S)=>Pe(S,0,Wt,b.length)).attr("opacity",m):m!==1&&_.attr("opacity",m),this.config.enableMouseTracking!==!1&&_.on("mouseover",(C,S)=>{var R,z,B,W,K,X;const w=st(C.currentTarget),A=w.attr("fill"),T=((z=(R=this.config.states)==null?void 0:R.hover)==null?void 0:z.brightness)??.3,F=((W=(B=se(A))==null?void 0:B.brighter(T))==null?void 0:W.toString())||A;w.transition("fill").duration(Z).ease(j).attr("fill",F),w.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.2))"),_.interrupt("highlight"),_.attr("opacity",1),_.filter(q=>q!==S).transition("highlight").duration(Z).ease(j).attr("opacity",h);const D=b.indexOf(S);this.context.events.emit("point:mouseover",{point:S.data,index:D,series:this,event:C,plotX:(S.x0+S.x1)/2,plotY:(S.y0+S.y1)/2}),(X=(K=S.data.events)==null?void 0:K.mouseOver)==null||X.call(S.data,C)}).on("mouseout",(C,S)=>{var F,D;const w=st(C.currentTarget),A=b.indexOf(S),T=$(S,A);w.transition("fill").duration(Z).ease(j).attr("fill",T),w.style("filter",""),_.interrupt("highlight"),_.transition("highlight").duration(Z).ease(j).attr("opacity",1),this.context.events.emit("point:mouseout",{point:S.data,index:A,series:this,event:C}),(D=(F=S.data.events)==null?void 0:F.mouseOut)==null||D.call(S.data,C)}).on("click",(C,S)=>{var A,T,F,D;const w=b.indexOf(S);if(a&&S.children){this.currentRoot=S,this.group.selectAll("*").remove(),this.render();return}this.context.events.emit("point:click",{point:S.data,index:w,series:this,event:C}),(T=(A=S.data.events)==null?void 0:A.click)==null||T.call(S.data,C),(D=(F=this.config.events)==null?void 0:F.click)==null||D.call(this,C)}),a&&this.currentRoot&&this.currentRoot!==f&&this.renderBreadcrumbs(t,f),this.renderLabels(b,k)}buildHierarchy(t){if(t.some(i=>i.children&&i.children.length>0)){const i=r=>r.map(o=>{const s={...o,value:o.y??o.value??(o.children?0:1)};return s.children&&(s.children=i(s.children)),s});return qi({children:i(t)}).sum(r=>r.children?0:r.value||0)}return qi({children:t.map(i=>({...i,value:i.y??i.value??1}))}).sum(i=>i.value||0)}renderBreadcrumbs(t,e){const i=this.config.breadcrumbs||{},r=i.position||{},o=r.x??0,s=r.y??-20,a=i.separator??" / ",l=i.style||{},c=l.fontSize||"11px",h=l.color||xe,f=[];let u=this.currentRoot;for(;u;)f.unshift(u),u=u.parent;const d=this.group.append("g").attr("class","katucharts-treemap-breadcrumbs").attr("transform",`translate(${o},${s})`);let p=0;f.forEach((y,g)=>{var k,M,P;const m=((k=y.data)==null?void 0:k.name)||(g===0?"Root":`Level ${g}`),x=g===f.length-1,v=d.append("text").attr("x",p).attr("y",0).attr("font-size",c).attr("fill",x?"#999":"#2f7ed8").attr("dominant-baseline","middle").style("cursor",x?"default":"pointer").style("text-decoration",x?"none":"underline").text(m);x||v.on("click",()=>{this.currentRoot=y===e?null:y,this.group.selectAll("*").remove(),this.render()});const b=((P=(M=v.node())==null?void 0:M.getComputedTextLength)==null?void 0:P.call(M))||m.length*7;p+=b,x||(d.append("text").attr("x",p).attr("y",0).attr("font-size",c).attr("fill",h).attr("dominant-baseline","middle").style("pointer-events","none").text(a),p+=a.length*5)})}renderLabels(t,e){var u,d,p;const i=this.config.dataLabels||{};if(!(i.enabled!==!1))return;const o=((u=i.style)==null?void 0:u.fontSize)||kt,s=i.color||((d=i.style)==null?void 0:d.color)||void 0,a=((p=i.style)==null?void 0:p.fontWeight)||"normal",l=i.align||"left",c=i.verticalAlign||"top",h=i.x??4,f=i.y??4;this.group.selectAll(".katucharts-treemap-label").remove(),t.forEach((y,g)=>{const m=e(y.depth),x=m==null?void 0:m.dataLabels;if((x==null?void 0:x.enabled)===!1)return;const v=y.x1-y.x0,b=y.y1-y.y0;if(v<30||b<16)return;let k="";if(i.formatter)k=i.formatter.call({point:y.data,series:{name:this.config.name},x:y.data.x,y:y.data.y??y.data.value});else{const C=i.format||i.pointFormat;C?k=Kt(C,{point:y.data,series:{name:this.config.name},x:y.data.x,y:y.data.y??y.data.value}):k=y.data.name||""}const M=lk(k,o,a);let P;l==="right"?P=y.x1-h:l==="center"?P=(y.x0+y.x1)/2:P=y.x0+h;const $=l==="right"?"end":l==="center"?"middle":"start";let _;c==="bottom"?_=y.y1-f:c==="middle"?_=(y.y0+y.y1)/2:_=y.y0+f;const L=this.group.append("text").attr("class","katucharts-treemap-label").attr("x",P).attr("text-anchor",$).attr("fill",Pn(y._color,s)).style("pointer-events","none");let I=_;M.forEach((C,S)=>{if(C.length===0)return;const w=C.map(T=>be(T.fontSize)),A=Math.max(...w)*1.15;I+=A,C.forEach((T,F)=>{const D=L.append("tspan").attr("font-size",T.fontSize).attr("font-weight",T.fontWeight).text(T.text);F===0&&D.attr("x",P).attr("y",I)})}),this.context.animate&&L.attr("opacity",0).transition().duration(vt).ease(pt).delay(Jn+g*Wt).attr("opacity",1);const E=L.node();if(E)try{const C=E.getBBox();(C.height+f>b||C.width+h>v)&&C.height>b-f&&L.remove()}catch{}})}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class fk extends Ut{constructor(t){super(t),this.currentRoot=null,t.showInLegend=!1}render(){var W,K,X,q,N;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.config.levels||[],o=this.config.allowTraversingTree===!0||this.config.allowDrillToNode===!0,s=this.config.slicedOffset??0,a=((K=(W=this.config.states)==null?void 0:W.inactive)==null?void 0:K.opacity)??.4,l=this.config.center||["50%","50%"],c=this.resolvePercent(l[0],t.width),h=this.resolvePercent(l[1],t.height),f=this.config.size,u=Math.min(t.width,t.height),d=f?this.resolvePercent(f,u)/2-5:u/2-5,p=this.config.startAngle??0,y=this.config.endAngle??360,g=p*Math.PI/180,x=y*Math.PI/180-g,v=(X=this.group.node())==null?void 0:X.parentElement;v&&st(v).attr("clip-path",null);const b=this.buildHierarchy(g,x),k=this.config.rootId;let M=b;o&&this.currentRoot?M=this.currentRoot:k&&b.each(H=>{var Y;((Y=H.data)==null?void 0:Y.id)===k&&(M=H)});const P=this.getMaxDepth(M),$=this.config.levelIsConstant!==!1,_=this.computeRingWidths(d,P,r);this.applyCustomRadii(M,_,$),this.assignColors(M,e,r);const L=this.config.borderRadius!==void 0?this.resolveBorderRadius(this.config.borderRadius):0,I=Ce().startAngle(H=>H.x0).endAngle(H=>H.x1).innerRadius(H=>H._y0).outerRadius(H=>H._y1).padAngle(.005).cornerRadius(L),E=this.group.append("g").attr("transform",`translate(${c},${h})`),C=M.descendants(),S=C[0],w=C.filter(H=>H.depth>0),A=S._y1||S.y1,T=S.data.color||this.getColor()||"#ffffff",F=ai(T),D=F&&!isNaN(F.h)?ai(F.h,F.s*.4,.88).toString():T,R=E.append("circle").attr("r",A).attr("fill",D).attr("stroke","none").style("cursor",o?"pointer":"default");if(o&&this.currentRoot&&this.currentRoot!==b&&(E.select("circle").on("click",()=>{var H;this.currentRoot=((H=this.currentRoot)==null?void 0:H.parent)||null,this.group.selectAll("*").remove(),this.render()}),this.renderBreadcrumbs(b)),this.config.enableMouseTracking!==!1){const H=this,Y="#f0f0f0";R.on("mouseover",function(G){st(this).transition("fill").duration(Z).ease(j).attr("fill",Y),st(this).style("filter","drop-shadow(0 1px 3px rgba(0,0,0,0.15))"),H.context.events.emit("point:mouseover",{point:{...S.data,value:S.value,y:S.value??S.data.value},index:-1,series:H,event:G,plotX:c,plotY:h})}).on("mouseout",function(G){st(this).transition("fill").duration(Z).ease(j).attr("fill",D),st(this).style("filter",""),H.context.events.emit("point:mouseout",{point:{...S.data,value:S.value,y:S.value??S.data.value},index:-1,series:H,event:G})})}if(A>15){const H=this.config.name||((q=S.data)==null?void 0:q.name)||"";if(H){const Y=((N=this.config.dataLabels)==null?void 0:N.style)||{},G=Pn(D,Y.color),Q=Y.textOutline,O=E.append("text").attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",A>35?"13px":"10px").attr("font-weight","bold").attr("fill",G).style("pointer-events","none").text(H);if(Q){const nt=Q.split(/\s+/);O.style("paint-order","stroke fill").attr("stroke",nt.length>=2?nt.slice(1).join(" "):"white").attr("stroke-width",parseFloat(Q)||0).attr("stroke-linejoin","round")}}}const z=E.selectAll(".katucharts-sunburst-arc").data(w).join("path").attr("class","katucharts-sunburst-arc").attr("fill",H=>H._color).attr("stroke",H=>{const Y=r.find(G=>G.level===H.depth);return(Y==null?void 0:Y.borderColor)||H._color}).attr("stroke-width",H=>{const Y=r.find(G=>G.level===H.depth);return Y!=null&&Y.borderColor?(Y==null?void 0:Y.borderWidth)??1:.5}).attr("shape-rendering","geometricPrecision").style("cursor","pointer");s>0&&z.each(function(H){if(H.data.sliced){const Y=(H.x0+H.x1)/2,G=s*Math.sin(Y),Q=-s*Math.cos(Y);st(this).attr("transform",`translate(${G},${Q})`)}}),i?z.each(function(H,Y){const G=st(this),Q={x0:H.x0,x1:H.x0,_y0:H._y0,_y1:H._y1},O={x0:H.x0,x1:H.x1,_y0:H._y0,_y1:H._y1},nt=ce(Q,O);G.transition().duration(vt).ease(pt).delay(Yf+Y*Wt).attrTween("d",()=>et=>I(nt(et)))}):z.attr("d",I);const B=new Set;for(const H of w)H.depth>1&&B.add(H._y0);for(const H of B)E.append("circle").attr("r",H).attr("fill","none").attr("stroke",this.autoBorderColor()).attr("stroke-width",2).style("pointer-events","none");if(this.renderLabels(E,w,r),this.config.enableMouseTracking!==!1){const H=this;z.on("mouseover",function(Y,G){var ht,ft,ct,it;const Q=st(this),O=((ft=(ht=se(G._color))==null?void 0:ht.brighter(.3))==null?void 0:ft.toString())||G._color;Q.transition("fill").duration(Z).ease(j).attr("fill",O),Q.style("filter","drop-shadow(0 1px 3px rgba(0,0,0,0.2))"),z.interrupt("highlight"),z.attr("opacity",1),z.filter(U=>U!==G&&!H.isAncestorOf(U,G)).transition("highlight").duration(Z).ease(j).attr("opacity",a);const nt=w.indexOf(G),et=I.centroid(G);H.context.events.emit("point:mouseover",{point:{...G.data,value:G.value,y:G.value??G.data.value},index:nt,series:H,event:Y,plotX:c+et[0],plotY:h+et[1]}),(it=(ct=G.data.events)==null?void 0:ct.mouseOver)==null||it.call(G.data,Y)}).on("mouseout",function(Y,G){var nt,et;const Q=st(this);Q.transition("fill").duration(Z).ease(j).attr("fill",G._color),Q.style("filter",""),z.interrupt("highlight"),z.transition("highlight").duration(Z).ease(j).attr("opacity",1);const O=w.indexOf(G);H.context.events.emit("point:mouseout",{point:{...G.data,value:G.value,y:G.value??G.data.value},index:O,series:H,event:Y}),(et=(nt=G.data.events)==null?void 0:nt.mouseOut)==null||et.call(G.data,Y)}).on("click",function(Y,G){var O,nt,et,ht;const Q=w.indexOf(G);if(o&&G.children&&G.children.length>0){H.currentRoot=G,cd().size([x,1])(H.currentRoot),g!==0&&H.currentRoot.each(ft=>{ft.x0+=g,ft.x1+=g}),H.group.selectAll("*").remove(),H.render();return}H.context.events.emit("point:click",{point:G.data,index:Q,series:H,event:Y}),(nt=(O=G.data.events)==null?void 0:O.click)==null||nt.call(G.data,Y),(ht=(et=H.config.events)==null?void 0:et.click)==null||ht.call(H,Y)})}}isAncestorOf(t,e){let i=e;for(;i;){if(i===t)return!0;i=i.parent}return!1}buildHierarchy(t=0,e=2*Math.PI){const i=this.data,r=i.length>0&&(i[0].id!==void 0||i[0].parent!==void 0);let o;if(r){const s=i.map(l=>({...l,id:l.id||l.name||String(i.indexOf(l)),parentId:l.parent||null,value:l.y??l.value??void 0}));s.some(l=>!l.parentId||l.parentId==="")?s.forEach(l=>{(!l.parentId||l.parentId==="")&&(l.parentId=null)}):(s.unshift({id:"__root__",parentId:null,name:"Root",value:void 0}),s.forEach(l=>{l.id!=="__root__"&&(!l.parentId||l.parentId==="")&&(l.parentId="__root__")})),o=$c().id(l=>l.id).parentId(l=>l.parentId)(s),o.sum(l=>l.children?0:l.value??0)}else o=qi({children:this.prepareNestedData(i)}).sum(s=>s.children?0:s.value||0);return cd().size([e,1])(o),t!==0&&o.each(s=>{s.x0+=t,s.x1+=t}),o}prepareNestedData(t){return t.map(e=>{const i={...e,value:e.y??e.value??1};return i.children&&(i.children=this.prepareNestedData(i.children)),i})}getMaxDepth(t){let e=0;return t.each(i=>{i.depth>e&&(e=i.depth)}),e}computeRingWidths(t,e,i){const r=[],o=this.config.levelSize;for(let c=0;c<=e;c++){const h=i.find(f=>f.level===c);h!=null&&h.levelSize?r.push({value:h.levelSize.value,unit:h.levelSize.unit}):o!=null&&o.unit&&(o!=null&&o.value)?r.push({value:o.value,unit:o.unit}):r.push({value:1,unit:"weight"})}let s=t;const a=new Array(e+1).fill(0);for(let c=0;c<=e;c++)r[c].unit==="pixels"&&(a[c]=r[c].value,s-=a[c]);for(let c=0;c<=e;c++)r[c].unit==="percentage"&&(a[c]=r[c].value/100*t,s-=a[c]);let l=0;for(let c=0;c<=e;c++)r[c].unit==="weight"&&(l+=r[c].value);if(l>0&&s>0)for(let c=0;c<=e;c++)r[c].unit==="weight"&&(a[c]=r[c].value/l*s);return a}applyCustomRadii(t,e,i=!0){const r=[0];for(let s=0;s<e.length;s++)r.push(r[s]+e[s]);const o=i?0:t.depth;t.each(s=>{const a=s.depth-o;s._y0=r[a]||0,s._y1=r[a+1]||r[r.length-1]})}assignColors(t,e,i){var l;let r=0;t._color=t.data.color||"transparent";const s=((l=i.find(c=>c.colorByPoint))==null?void 0:l.level)??1,a=c=>{if(c.depth===0)c._color=c.data.color||"transparent";else if(c.data.color)c._color=c.data.color;else if(c.depth===s)c._color=e[r++%e.length];else if(c.depth>s&&c.parent){const h=i.find(d=>d.level===c.depth),f=h==null?void 0:h.colorVariation,u=se(c.parent._color);if(u&&(f==null?void 0:f.key)==="brightness"){const d=c.parent.children||[],p=d.indexOf(c),y=d.length,g=y>1?p/(y-1)*f.to:f.to*.5,m=ai(u.toString());m.l=Math.max(.1,Math.min(.95,m.l+g*.3)),c._color=m.toString()}else if(u){const d=c.parent.children||[],p=d.indexOf(c),y=d.length,g=y>1?-.3+p/(y-1)*.6:0;c._color=u.brighter(g).toString()}else c._color=c.parent._color}else c.depth<s&&c.parent&&(c._color=c.parent._color!=="transparent"?c.parent._color:e[r++%e.length]);if(c.children)for(const h of c.children)a(h)};a(t)}renderLabels(t,e,i){var g;const o=this.config.dataLabels,s=(o==null?void 0:o.rotationMode)||"auto",a=(o==null?void 0:o.style)||{},l=a.fontSize||kt,c=a.textOutline,h=o==null?void 0:o.filter,f=m=>{var v,b;const x=i.find(k=>k.level===m.depth);return((b=(v=x==null?void 0:x.dataLabels)==null?void 0:v.style)==null?void 0:b.textOutline)||c},d=((g=i.find(m=>m.colorByPoint))==null?void 0:g.level)??1,p=m=>{let x=m;for(;x.depth>d&&x.parent;)x=x.parent;return x._color},y=m=>{var b,k;const x=i.find(M=>M.level===m.depth),v=((k=(b=x==null?void 0:x.dataLabels)==null?void 0:b.style)==null?void 0:k.color)||a.color;return Pn(p(m),v)};t.selectAll(".katucharts-sunburst-label").data(e).join("text").attr("class","katucharts-sunburst-label").attr("transform",m=>{var I;const x=i.find(E=>E.level===m.depth),v=((I=x==null?void 0:x.dataLabels)==null?void 0:I.rotationMode)||s,b=(m.x0+m.x1)/2,k=(m._y0+m._y1)/2,M=b*180/Math.PI-90,P=b<Math.PI/2||b>Math.PI*3/2,$=b>Math.PI;if(v==="parallel")return`rotate(${M}) translate(${k},0) rotate(${P?90:-90})`;if(v==="perpendicular")return`rotate(${M}) translate(${k},0)${$?" rotate(180)":""}`;const _=m._y1*(m.x1-m.x0),L=m._y1-m._y0;return _>L*2?`rotate(${M}) translate(${k},0) rotate(${P?90:-90})`:`rotate(${M}) translate(${k},0)${$?" rotate(180)":""}`}).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",m=>{var v,b;const x=i.find(k=>k.level===m.depth);return((b=(v=x==null?void 0:x.dataLabels)==null?void 0:v.style)==null?void 0:b.fontSize)||l}).attr("font-weight","bold").attr("fill",m=>y(m)).style("paint-order","stroke fill").attr("stroke",m=>{const x=f(m);if(!x)return"none";const v=x.split(/\s+/);return v.length>=2?v.slice(1).join(" "):"white"}).attr("stroke-width",m=>{const x=f(m);return x&&parseFloat(x)||0}).attr("stroke-linejoin","round").style("pointer-events","none").each(function(m){var B,W,K,X,q;const x=st(this);x.selectAll("tspan").remove();const v=i.find(N=>N.level===m.depth);if(((B=v==null?void 0:v.dataLabels)==null?void 0:B.enabled)===!1)return;const b=((W=v==null?void 0:v.dataLabels)==null?void 0:W.filter)||h,k=m._y1*(m.x1-m.x0),M=m._y0*(m.x1-m.x0),P=m._y1-m._y0;if(b){const N=b.property==="outerArcLength"?k:b.property==="innerArcLength"?M:0;if(b.operator===">"&&N<=b.value||b.operator==="<"&&N>=b.value)return}else if(k<16)return;const $=m.data.name||"",_=((K=v==null?void 0:v.dataLabels)==null?void 0:K.rotationMode)||s,L=_==="parallel"||_==="auto"&&k>P*2,I=L?(k+M)/2:P,E=L?P:(k+M)/2,C=parseFloat(((q=(X=v==null?void 0:v.dataLabels)==null?void 0:X.style)==null?void 0:q.fontSize)||l)||11,S=C*.6,w=Math.max(3,Math.floor(I/S)),A=Math.max(1,Math.floor(E/(C*1.2)));if($.length<=w){x.text($);return}const T=$.split(/[\s_-]+/),F=[];let D="";for(const N of T){const H=D?D+" "+N:N;if(H.length<=w?D=H:(D&&F.push(D),D=N.length>w?N.substring(0,w-1)+"…":N),F.length>=A)break}if(D&&F.length<A&&F.push(D),F.length===0)return;if(F.length>A&&(F.length=A),F.length===A&&D&&!F[F.length-1].endsWith("…")&&T.slice(F.join(" ").split(/[\s]+/).length).length>0){const H=F[F.length-1];H.length+2>w&&(F[F.length-1]=H.substring(0,w-1)+"…")}const z=-(F.length*C*1.2-C*1.2)/2;F.forEach((N,H)=>{x.append("tspan").attr("x",0).attr("dy",H===0?`${z}px`:`${C*1.2}px`).text(N)})})}renderBreadcrumbs(t){const e=this.config.breadcrumbs||{},r=(e.style||{}).fontSize||"11px",o=e.separator??" / ",s=[];let a=this.currentRoot;for(;a;)s.unshift(a),a=a.parent;const l=this.group.append("g").attr("class","katucharts-sunburst-breadcrumbs").attr("transform","translate(0,-15)");let c=0;s.forEach((h,f)=>{var g,m,x;const u=((g=h.data)==null?void 0:g.name)||(f===0?"Root":`Level ${f}`),d=f===s.length-1,p=l.append("text").attr("x",c).attr("y",0).attr("font-size",r).attr("fill",d?"#999":"#2f7ed8").attr("dominant-baseline","middle").style("cursor",d?"default":"pointer").style("text-decoration",d?"none":"underline").text(u);d||p.on("click",()=>{this.currentRoot=h===t?null:h,this.group.selectAll("*").remove(),this.render()});const y=((x=(m=p.node())==null?void 0:m.getComputedTextLength)==null?void 0:x.call(m))||u.length*7;c+=y,d||(l.append("text").attr("x",c).attr("y",0).attr("font-size",r).attr("fill","#666").attr("dominant-baseline","middle").style("pointer-events","none").text(o),c+=o.length*5)})}resolvePercent(t,e){return typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:parseFloat(t)||0}resolveBorderRadius(t){return t===void 0?3:typeof t=="number"?t:t.radius??3}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class dk extends Ut{constructor(t){super(t)}render(){var Y,G,Q;const{plotArea:t}=this.context,e=this.context.animate,i=t.width/2,r=this.config.pane||{},o=r.startAngle??-90,s=r.endAngle??90,a=o*Math.PI/180,l=s*Math.PI/180,c=Math.abs(s-o)<=180,h=c?t.height*.62:t.height/2,f=c?Math.min(t.width/2,h)-20:Math.min(t.width,t.height)/2-20,u=((Y=this.config._yAxis??this.config.yAxis)==null?void 0:Y.min)??this.config.min??0,d=((G=this.config._yAxis??this.config.yAxis)==null?void 0:G.max)??this.config.max??100,p=((Q=this.data[0])==null?void 0:Q.y)??0,y=this.config.wrap!==!1,g=this.config.overshoot??0;let m=p;if(y){const O=d-u;O>0&&(m=u+((p-u)%O+O)%O)}const x=g*Math.PI/180;let b=ke().domain([u,d]).range([a,l]).clamp(!y&&g<=0)(m);if(!y&&g>0){const O=a-x,nt=l+x;b=Math.max(O,Math.min(nt,b))}const k=this.group.append("g").attr("transform",`translate(${i},${h})`);this.renderPaneBackground(k,f,a,l,r);const M=f*.15,P=Ce().innerRadius(f-M).outerRadius(f).startAngle(a).endAngle(l).cornerRadius(M/2);k.append("path").attr("d",P({})).attr("fill","#ddd"),this.renderPlotBands(k,f,a,l,u,d,M),this.renderTickMarks(k,f,a,l,u,d,M);const $=this.config.dial||{},_=this.config.pivot||{},L=$.backgroundColor||"#333",I=$.borderColor||"none",E=$.borderWidth??0,C=$.baseWidth??8,S=$.topWidth??1,w=this.resolvePercent($.radius??"80%",f),A=this.resolvePercent($.rearLength??"15%",f),T=b-Math.PI/2,F=w*Math.cos(T),D=w*Math.sin(T),R=-A*Math.cos(T),z=-A*Math.sin(T),B=T+Math.PI/2,W=C/2,K=S/2,X=[`M${R+W*Math.cos(B)},${z+W*Math.sin(B)}`,`L${F+K*Math.cos(B)},${D+K*Math.sin(B)}`,`L${F-K*Math.cos(B)},${D-K*Math.sin(B)}`,`L${R-W*Math.cos(B)},${z-W*Math.sin(B)}`,"Z"].join(" "),q=k.append("path").attr("fill",L).attr("stroke",I).attr("stroke-width",E).style("filter","drop-shadow(0 1px 2px rgba(0,0,0,0.3))").style("cursor","pointer");if(e){const O=this.buildNeedlePath(a,w,A,C,S);q.attr("d",O).transition().duration(vt).ease(pt).attrTween("d",()=>{const nt=ce(a,b);return et=>this.buildNeedlePath(nt(et),w,A,C,S)})}else q.attr("d",X);if(this.config.enableMouseTracking!==!1){const O=E;q.on("mouseover",nt=>{var et,ht,ft;q.interrupt("hover").transition("hover").duration(Z).ease(j).attr("stroke-width",O+2),q.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.4))"),this.context.events.emit("point:mouseover",{point:this.data[0],index:0,series:this,event:nt,plotX:i,plotY:h}),(ft=(ht=(et=this.data[0])==null?void 0:et.events)==null?void 0:ht.mouseOver)==null||ft.call(this.data[0],nt)}).on("mouseout",nt=>{var et,ht,ft;q.interrupt("hover").transition("hover").duration(Z).ease(j).attr("stroke-width",O),q.style("filter","drop-shadow(0 1px 2px rgba(0,0,0,0.3))"),this.context.events.emit("point:mouseout",{point:this.data[0],index:0,series:this,event:nt}),(ft=(ht=(et=this.data[0])==null?void 0:et.events)==null?void 0:ht.mouseOut)==null||ft.call(this.data[0],nt)}).on("click",nt=>{var et,ht,ft,ct,it;this.context.events.emit("point:click",{point:this.data[0],index:0,series:this,event:nt}),(ft=(ht=(et=this.data[0])==null?void 0:et.events)==null?void 0:ht.click)==null||ft.call(this.data[0],nt),(it=(ct=this.config.events)==null?void 0:ct.click)==null||it.call(this,nt)})}const N=_.radius??10,H=_.borderWidth??2;k.append("circle").attr("r",N).attr("fill",_.backgroundColor||"#666").attr("stroke",_.borderColor||"#fff").attr("stroke-width",H).style("filter","drop-shadow(0 1px 2px rgba(0,0,0,0.2))"),this.renderValueLabel(k,f,p),e&&this.emitAfterAnimate(vt+100)}buildNeedlePath(t,e,i,r,o){const s=t-Math.PI/2,a=e*Math.cos(s),l=e*Math.sin(s),c=-i*Math.cos(s),h=-i*Math.sin(s),f=s+Math.PI/2,u=r/2,d=o/2;return[`M${c+u*Math.cos(f)},${h+u*Math.sin(f)}`,`L${a+d*Math.cos(f)},${l+d*Math.sin(f)}`,`L${a-d*Math.cos(f)},${l-d*Math.sin(f)}`,`L${c-u*Math.cos(f)},${h-u*Math.sin(f)}`,"Z"].join(" ")}renderPaneBackground(t,e,i,r,o){const s=o.background?Array.isArray(o.background)?o.background:[o.background]:[];for(const a of s){const l=this.resolvePercent(a.outerRadius??"100%",e),c=this.resolvePercent(a.innerRadius??"0%",e),h=Ce().innerRadius(c).outerRadius(l).startAngle(i).endAngle(r);t.append("path").attr("d",h({})).attr("fill",a.backgroundColor||"#f2f2f2").attr("stroke",a.borderColor||"#cccccc").attr("stroke-width",a.borderWidth??0)}}renderPlotBands(t,e,i,r,o,s,a){var f;const l=((f=this.config._yAxis??this.config.yAxis)==null?void 0:f.plotBands)||[];if(l.length===0)return;const c=a??e*.15,h=ke().domain([o,s]).range([i,r]);for(const u of l){if(u.from===void 0||u.to===void 0)continue;const d=Ce().innerRadius(e-c).outerRadius(e).startAngle(h(u.from)).endAngle(h(u.to)).cornerRadius(0);t.append("path").attr("d",d({})).attr("fill",u.color||"#e0e0e0").attr("stroke",u.borderColor||"none").attr("stroke-width",u.borderWidth??0)}}renderTickMarks(t,e,i,r,o,s,a){var v,b;const l=(this.config._yAxis??this.config.yAxis)||{},c=l.tickPositions||this.generateTicks(o,s,5),h=l.tickLength??15,f=l.tickWidth??2,u=((v=l.labels)==null?void 0:v.enabled)!==!1,d=((b=l.labels)==null?void 0:b.style)||{},p=d.fontSize||kt,y=d.color||this.autoLabelColor(),g=a??e*.15,m=ke().domain([o,s]).range([i,r]),x=l.minorTickInterval?Math.round((s-o)/l.minorTickInterval):0;if(x>0&&l.minorTickInterval)for(let k=0;k<=x;k++){const M=o+k*l.minorTickInterval;if(M>s)break;const P=m(M)-Math.PI/2,$=e-g+2,_=$-6;t.append("line").attr("x1",_*Math.cos(P)).attr("y1",_*Math.sin(P)).attr("x2",$*Math.cos(P)).attr("y2",$*Math.sin(P)).attr("stroke","#999").attr("stroke-width",1)}for(const k of c){const M=m(k)-Math.PI/2,P=e-g+2,$=P-h;if(t.append("line").attr("x1",$*Math.cos(M)).attr("y1",$*Math.sin(M)).attr("x2",P*Math.cos(M)).attr("y2",P*Math.sin(M)).attr("stroke","#333").attr("stroke-width",f),u){const _=$-10;t.append("text").attr("x",_*Math.cos(M)).attr("y",_*Math.sin(M)).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",p).attr("font-weight","600").attr("fill",y).style("pointer-events","none").text(String(k))}}}generateTicks(t,e,i){const r=(e-t)/i,o=[];for(let s=0;s<=i;s++)o.push(Math.round((t+r*s)*100)/100);return o}renderValueLabel(t,e,i){var c,h,f,u;const r=this.config.dataLabels||{};if(!(r.enabled!==!1))return;const s=((c=r.style)==null?void 0:c.fontSize)||kt,a=r.color||((h=r.style)==null?void 0:h.color)||this.autoLabelColor();let l;r.formatter?l=r.formatter.call({point:this.data[0],series:{name:this.config.name},x:(f=this.data[0])==null?void 0:f.x,y:i}):r.format?l=de(Kt(r.format,{point:this.data[0],series:{name:this.config.name},x:(u=this.data[0])==null?void 0:u.x,y:i})):l=i.toString(),t.append("text").attr("y",e*.25+(r.y??0)).attr("x",r.x??0).attr("text-anchor","middle").attr("font-size",s).attr("font-weight","bold").attr("fill",a).text(l)}resolvePercent(t,e){return typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:parseFloat(t)||0}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class pk extends Ut{constructor(t){super(t)}render(){var k,M,P,$;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=Math.min(t.width,t.height)/2-10,o=t.width/2,s=t.height/2,a=((k=this.config._yAxis??this.config.yAxis)==null?void 0:k.min)??this.config.min??0,l=((M=this.config._yAxis??this.config.yAxis)==null?void 0:M.max)??this.config.max??100,c=this.data.length>1,h=this.config.pane||{},f=(h.startAngle??-135)*Math.PI/180,u=(h.endAngle??135)*Math.PI/180,d=this.config.overshoot??0,p=d*Math.PI/180,y=this.group.append("g").attr("transform",`translate(${o},${s})`),g=this.config.innerRadius??.6,m=this.config.radius??1,x=this.config.rounded??5,v=this.config.linecap||"round",b=((P=this.config._yAxis??this.config.yAxis)==null?void 0:P.stops)||[];if(c){const _=r/(this.data.length+.5),L=_*.1;this.renderPaneBackground(y,r,0,f,u,h),this.data.forEach((I,E)=>{const C=I.radius?this.resolveRadiusValue(I.radius,r):r-E*_,S=I.innerRadius?this.resolveRadiusValue(I.innerRadius,r):C-_+L,w=I.color||e[E%e.length],A=this.config.color;this.config.color=w,this.renderSingleArc(y,I,E,S,C,r,f,u,a,l,d,p,x,v,b,o,s,i),this.config.color=A})}else{const _=this.resolveRadiusValue(g,r),L=this.resolveRadiusValue(m,r);this.renderPaneBackground(y,L,_,f,u,h),this.renderPlotBands(y,L,_,f,u,a,l),this.renderSingleArc(y,this.data[0],0,_,L,r,f,u,a,l,d,p,x,v,b,o,s,i)}this.renderTickMarks(y,r,f,u,a,l),c||this.renderValueLabel(y,(($=this.data[0])==null?void 0:$.y)??0),i&&this.emitAfterAnimate(vt+100)}renderSingleArc(t,e,i,r,o,s,a,l,c,h,f,u,d,p,y,g,m,x){const v=(e==null?void 0:e.y)??0,b=Math.max(0,Math.min(1,(v-c)/(h-c)));let k=a+(l-a)*b;if(f>0&&v>h){const C=(v-h)/(h-c);k=l+Math.min(u,(l-a)*C)}const M=p==="round",P=Ce().innerRadius(r).outerRadius(o).startAngle(a).endAngle(l).cornerRadius(M?(o-r)/2:d);t.append("path").attr("d",P({})).attr("fill","#e0e0e0");const $=M?(o-r)/2:d,_=Ce().innerRadius(r).outerRadius(o).cornerRadius($),L=Ce().innerRadius(r).outerRadius(o+5).cornerRadius($),I=this.resolveArcColor(b,y,e),E=t.append("path").attr("fill",I).style("cursor","pointer");if(x){const C=ce(a,k),S=this;E.transition().duration(vt).ease(pt).attrTween("d",()=>w=>{const A=C(w),T=_.startAngle(a).endAngle(A)({});if(y.length>0){const F=(A-a)/(l-a);E.attr("fill",S.getStopColor(Math.min(1,F),y))}return T})}else E.attr("d",_.startAngle(a).endAngle(k)({}));this.config.enableMouseTracking!==!1&&E.on("mouseover",C=>{var S,w;E.interrupt("hover").transition("hover").duration(Z).ease(j).attr("d",L.startAngle(a).endAngle(k)({})),E.style("filter","drop-shadow(0 2px 6px rgba(0,0,0,0.25))"),this.context.events.emit("point:mouseover",{point:e,index:i,series:this,event:C,plotX:g,plotY:m}),(w=(S=e==null?void 0:e.events)==null?void 0:S.mouseOver)==null||w.call(e,C)}).on("mouseout",C=>{var S,w;E.interrupt("hover").transition("hover").duration(Z).ease(j).attr("d",_.startAngle(a).endAngle(k)({})),E.style("filter",""),this.context.events.emit("point:mouseout",{point:e,index:i,series:this,event:C}),(w=(S=e==null?void 0:e.events)==null?void 0:S.mouseOut)==null||w.call(e,C)}).on("click",C=>{var S,w,A,T;this.context.events.emit("point:click",{point:e,index:i,series:this,event:C}),(w=(S=e==null?void 0:e.events)==null?void 0:S.click)==null||w.call(e,C),(T=(A=this.config.events)==null?void 0:A.click)==null||T.call(this,C)})}resolveArcColor(t,e,i){return i!=null&&i.color?i.color:e.length>=2?this.getStopColor(t,e):this.getColor()}getStopColor(t,e){if(t<=e[0][0])return e[0][1];if(t>=e[e.length-1][0])return e[e.length-1][1];for(let i=0;i<e.length-1;i++)if(t>=e[i][0]&&t<=e[i+1][0]){const r=(t-e[i][0])/(e[i+1][0]-e[i][0]),o=e[i][1],s=e[i+1][1];return ce(o,s)(r)}return e[e.length-1][1]}resolveRadiusValue(t,e){return typeof t=="string"&&t.endsWith("%")?e*parseFloat(t)/100:typeof t=="number"?t<=1?e*t:t:e*.6}renderPaneBackground(t,e,i,r,o,s){const a=s.background?Array.isArray(s.background)?s.background:[s.background]:[];for(const l of a){const c=this.resolvePercent(l.outerRadius??"100%",e),h=this.resolvePercent(l.innerRadius??"0%",e),f=Ce().innerRadius(h).outerRadius(c).startAngle(r).endAngle(o);t.append("path").attr("d",f({})).attr("fill",l.backgroundColor||"#f2f2f2").attr("stroke",l.borderColor||"#cccccc").attr("stroke-width",l.borderWidth??0)}}renderPlotBands(t,e,i,r,o,s,a){var h;const l=((h=this.config._yAxis??this.config.yAxis)==null?void 0:h.plotBands)||[];if(l.length===0)return;const c=ke().domain([s,a]).range([r,o]);for(const f of l){if(f.from===void 0||f.to===void 0)continue;const u=Ce().innerRadius(i).outerRadius(e).startAngle(c(f.from)).endAngle(c(f.to));t.append("path").attr("d",u({})).attr("fill",f.color||"#e0e0e0").attr("stroke",f.borderColor||"none").attr("stroke-width",f.borderWidth??0)}}renderTickMarks(t,e,i,r,o,s){var p,y;const a=(this.config._yAxis??this.config.yAxis)||{},l=a.tickPositions||this.generateTicks(o,s,5),c=((p=a.labels)==null?void 0:p.enabled)!==!1,h=((y=a.labels)==null?void 0:y.style)||{},f=h.fontSize||kt,u=h.color||this.autoLabelColor(),d=ke().domain([o,s]).range([i,r]);for(const g of l){const m=d(g)-Math.PI/2;if(c){const x=e+14;t.append("text").attr("x",x*Math.cos(m)).attr("y",x*Math.sin(m)).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",f).attr("fill",u).style("pointer-events","none").text(String(g))}}}generateTicks(t,e,i){const r=(e-t)/i,o=[];for(let s=0;s<=i;s++)o.push(Math.round((t+r*s)*100)/100);return o}renderValueLabel(t,e){var l,c,h,f;const i=this.config.dataLabels||{};if(!(i.enabled!==!1))return;const o=((l=i.style)==null?void 0:l.fontSize)||kt,s=i.color||((c=i.style)==null?void 0:c.color)||this.autoLabelColor();let a;i.formatter?a=i.formatter.call({point:this.data[0],series:{name:this.config.name},x:(h=this.data[0])==null?void 0:h.x,y:e}):i.format?a=de(Kt(i.format,{point:this.data[0],series:{name:this.config.name},x:(f=this.data[0])==null?void 0:f.x,y:e})):a=e.toString(),t.append("text").attr("y",10+(i.y??0)).attr("x",i.x??0).attr("text-anchor","middle").attr("font-size",o).attr("font-weight","bold").attr("fill",s).text(a)}resolvePercent(t,e){return typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:parseFloat(t)||0}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}const gk=dr("~s");function mk(n){return n===0?"0":n>=1e3?gk(n).replace("G","B"):String(n)}function yk(n){return!Number.isFinite(n)||Math.abs(n)<1e3?String(n):Math.round(n).toString().replace(/\B(?=(\d{3})+(?!\d))/g,".")}function ud(n){if(n<=0)return{ticks:[1],niceMax:1,gridMax:1};const t=n/2,e=Math.pow(10,Math.floor(Math.log10(t))),i=t/e;let r;i<1.5?r=1*e:i<3?r=2*e:i<7?r=5*e:r=10*e;const o=Math.max(r,Math.floor(n/r)*r),s=n*1.15;return{ticks:o>0?[Math.round(o*1e6)/1e6]:[],niceMax:o,gridMax:s}}function fd(n,t,e){const i=e==null?void 0:e.size;let r;typeof i=="string"&&i.trim().endsWith("%")?r=parseFloat(i)/100:typeof i=="number"?r=i>1?i/100:i:r=.85;const o=Math.min(n,t)*r/2;return Math.max(20,o-30)}class dd extends Ut{constructor(t){super(t)}render(){const t=this.resolvePolarSubType();t==="column"?this.renderColumnPolar():this.renderLineAreaPolar(t)}resolvePolarSubType(){const t=this.config.polarType||this.config._polarSubType||"area";return t==="column"||t==="bar"?"column":t==="line"?"line":"area"}renderLineAreaPolar(t){var E,C,S,w,A,T,F,D,R,z;const{plotArea:e}=this.context,i=this.context.animate,r=this.data,o=this.getColor(),s=this.context.pane||this.config.pane,a=fd(e.width,e.height,s),l=e.width/2,c=e.height/2,h=Math.max(...r.map(B=>B.y??0),1),{ticks:f,gridMax:u}=ud(h),d=ke().domain([0,u]).range([0,a]),p=((E=this.config.marker)==null?void 0:E.radius)??4,y=((C=this.config.marker)==null?void 0:C.enabled)!==!1,g=this.config.pointPlacement,m=g==="on"?0:g==="between"?Math.PI/r.length:typeof g=="number"?g*Math.PI/180:0,x=2*Math.PI/r.length,v=this.config.connectEnds!==!1;(w=(S=this.config.states)==null?void 0:S.inactive)==null||w.opacity;const b=this.group.append("g").attr("transform",`translate(${l},${c})`);let k=0,M=1/0;for(let B=0;B<r.length;B++){const W=r[B].y??0;W<M&&(M=W,k=B)}const P=k*x-Math.PI/2;this.renderGrid(b,a,r.length,d,f,P);const $=v?I2:Ui,_=k2().angle((B,W)=>W*x+m).radius(B=>d(B.y??0)).defined(B=>B.y!==null&&B.y!==void 0).curve($),L=r.map(B=>({...B,y:0})),I=b.append("path").datum(r).attr("fill","none").attr("stroke",o).attr("stroke-width",this.config.lineWidth??2);if(t==="area"){const B=M2().angle((K,X)=>X*x+m).innerRadius(0).outerRadius(K=>d(K.y??0)).defined(K=>K.y!==null&&K.y!==void 0).curve($),W=b.append("path").datum(r).attr("fill",this.config.fillColor||o).attr("fill-opacity",this.config.fillOpacity??.3);i?W.attr("d",B(L)||"").transition().duration(vt).ease(pt).attr("d",B(r)||""):W.attr("d",B)}if(i?I.attr("d",_(L)||"").transition().duration(vt).ease(pt).attr("d",_(r)||""):I.attr("d",_),y){const W=Math.max(...r.map(X=>X.y??0),1)*.02,K=b.selectAll(".katucharts-polar-point").data(r).join("circle").attr("class","katucharts-polar-point").attr("cx",(X,q)=>d(X.y??0)*Math.cos(q*x-Math.PI/2+m)).attr("cy",(X,q)=>d(X.y??0)*Math.sin(q*x-Math.PI/2+m)).attr("fill",((A=this.config.marker)==null?void 0:A.fillColor)||o).attr("stroke",((T=this.config.marker)==null?void 0:T.lineColor)||this.autoBorderColor()).attr("stroke-width",((F=this.config.marker)==null?void 0:F.lineWidth)??1).style("display",X=>(X.y??0)<W?"none":null).style("cursor",this.config.cursor||"pointer");if(i?K.attr("r",0).attr("opacity",0).transition().duration(vt).ease(pt).delay((X,q)=>q*Wt).attr("r",p).attr("opacity",1):K.attr("r",p),this.renderPolarDataLabels(b,r,d,x,m),this.config.enableMouseTracking!==!1){const X=((z=(R=(D=this.config.marker)==null?void 0:D.states)==null?void 0:R.hover)==null?void 0:z.radius)??p+3;K.on("mouseover",(q,N)=>{var O,nt;const H=st(q.currentTarget);H.transition("hover").duration(Z).ease(j).attr("r",X),H.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))");const Y=r.indexOf(N),G=d(N.y??0)*Math.cos(Y*x-Math.PI/2+m),Q=d(N.y??0)*Math.sin(Y*x-Math.PI/2+m);this.context.events.emit("point:mouseover",{point:N,index:Y,series:this,event:q,plotX:l+G,plotY:c+Q}),(nt=(O=N.events)==null?void 0:O.mouseOver)==null||nt.call(N,q)}).on("mouseout",(q,N)=>{var G,Q;const H=st(q.currentTarget);H.transition("hover").duration(Z).ease(j).attr("r",p),H.style("filter","");const Y=r.indexOf(N);this.context.events.emit("point:mouseout",{point:N,index:Y,series:this,event:q}),(Q=(G=N.events)==null?void 0:G.mouseOut)==null||Q.call(N,q)}).on("click",(q,N)=>{var Y,G,Q,O;const H=r.indexOf(N);this.context.events.emit("point:click",{point:N,index:H,series:this,event:q}),(G=(Y=N.events)==null?void 0:Y.click)==null||G.call(N,q),(O=(Q=this.config.events)==null?void 0:Q.click)==null||O.call(this,q)})}}}renderColumnPolar(){var E,C;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.data,o=this.getColor(),s=this.context.pane||this.config.pane,a=fd(t.width,t.height,s),l=t.width/2,c=t.height/2,h=Math.max(...r.map(S=>S.y??0),1),{ticks:f,gridMax:u}=ud(h),d=ke().domain([0,u]).range([0,a]),p=2*Math.PI/r.length,y=this.config.pointPlacement,g=y==="on"?0:y==="between"?Math.PI/r.length:typeof y=="number"?y*Math.PI/180:0,m=.02,x=((C=(E=this.config.states)==null?void 0:E.inactive)==null?void 0:C.opacity)??.4,v=this.config.colorByPoint===!0,b=this.config.stacking,k=this.group.append("g").attr("transform",`translate(${l},${c})`);let M=0,P=1/0;for(let S=0;S<r.length;S++){const w=r[S].y??0;w<P&&(P=w,M=S)}const $=M*p-Math.PI/2;this.renderGrid(k,a,r.length,d,f,$);const _=Ce().cornerRadius(2),L=k.selectAll(".katucharts-polar-bar").data(r).join("path").attr("class","katucharts-polar-bar").attr("fill",(S,w)=>S.color||(v?e[w%e.length]:o)).attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0).style("cursor",this.config.cursor||"pointer"),I=this.context.stackOffsets;i?L.each(function(S,w){const A=st(this),T=w*p-Math.PI/2+g+m,F=(w+1)*p-Math.PI/2+g-m,D=b&&I?d(I.get(w)??0):0,R=D+d(S.y??0);A.attr("d",_({innerRadius:D,outerRadius:D,startAngle:T+Math.PI/2,endAngle:F+Math.PI/2})||"").transition().duration(vt).ease(pt).delay(w*Wt).attrTween("d",()=>z=>_({innerRadius:D,outerRadius:D+(R-D)*z,startAngle:T+Math.PI/2,endAngle:F+Math.PI/2})||""),b&&I&&I.set(w,(I.get(w)??0)+(S.y??0))}):L.attr("d",(S,w)=>{const A=w*p-Math.PI/2+g+m,T=(w+1)*p-Math.PI/2+g-m,F=b&&I?d(I.get(w)??0):0,D=F+d(S.y??0);return b&&I&&I.set(w,(I.get(w)??0)+(S.y??0)),_({innerRadius:F,outerRadius:D,startAngle:A+Math.PI/2,endAngle:T+Math.PI/2})||""}),this.config.enableMouseTracking!==!1&&L.on("mouseover",(S,w)=>{var R,z;st(S.currentTarget).style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),L.interrupt("highlight"),L.attr("opacity",1),L.filter(B=>B!==w).transition("highlight").duration(Z).ease(j).attr("opacity",x);const T=r.indexOf(w),F=T*p+p/2-Math.PI/2+g,D=d(w.y??0)/2;this.context.events.emit("point:mouseover",{point:w,index:T,series:this,event:S,plotX:l+D*Math.cos(F),plotY:c+D*Math.sin(F)}),(z=(R=w.events)==null?void 0:R.mouseOver)==null||z.call(w,S)}).on("mouseout",(S,w)=>{var F,D;st(S.currentTarget).style("filter",""),L.interrupt("highlight"),L.transition("highlight").duration(Z).ease(j).attr("opacity",1);const T=r.indexOf(w);this.context.events.emit("point:mouseout",{point:w,index:T,series:this,event:S}),(D=(F=w.events)==null?void 0:F.mouseOut)==null||D.call(w,S)}).on("click",(S,w)=>{var T,F,D,R;const A=r.indexOf(w);this.context.events.emit("point:click",{point:w,index:A,series:this,event:S}),(F=(T=w.events)==null?void 0:T.click)==null||F.call(w,S),(R=(D=this.config.events)==null?void 0:D.click)==null||R.call(this,S)})}renderPolarDataLabels(t,e,i,r,o){var k,M,P;const s=this.config.dataLabels||{};if(s.enabled!==!0)return;const a=((k=s.style)==null?void 0:k.fontSize)||kt,l=((M=s.style)==null?void 0:M.color)||this.autoLabelColor(),c=((P=s.style)==null?void 0:P.fontWeight)||"normal",h=[],f=16,u=6,d=Math.max(...e.map($=>$.y??0),1),p=d*.02,y=d*.5,g=e.map(($,_)=>({d:$,i:_,v:$.y??0})).filter($=>$.d.y!=null&&$.d.y!==0&&$.v>=p),m=g.filter($=>$.v>=y),x=g.filter($=>$.v<y);x.sort(($,_)=>_.v-$.v);const v=x.length>0?x[0]:null,b=v?[...m,v]:m;b.sort(($,_)=>$.i-_.i);for(const{d:$,i:_}of b){const L=_*r-Math.PI/2+o,I=i($.y??0),E=I*Math.cos(L),C=I*Math.sin(L),S=((L+Math.PI/2)*180/Math.PI+360)%360;let w;S>20&&S<160?w="start":S>200&&S<340?w="end":w="middle";let A;S<45||S>315?A="text-after-edge":S>135&&S<225?A="text-before-edge":A="middle";const T=Math.cos(L),F=Math.sin(L),D=E+T*u,R=C+F*u;let z=!1;for(const B of h)if((B.x-D)**2+(B.y-R)**2<f*f){z=!0;break}z||(h.push({x:D,y:R}),t.append("text").attr("class","katucharts-polar-datalabel").attr("x",D).attr("y",R).attr("text-anchor",w).attr("dominant-baseline",A).attr("fill",l).attr("font-size",a).attr("font-weight",c).attr("stroke",this.labelHaloColor()).attr("stroke-width",3).attr("stroke-linejoin","round").attr("paint-order","stroke fill").style("pointer-events","none").text(yk($.y)))}}renderGrid(t,e,i,r,o,s=-Math.PI/2){var h,f,u,d;const l=(this.config.gridLineInterpolation||((h=this.config._yAxis??this.config.yAxis)==null?void 0:h.gridLineInterpolation)||"circle")==="polygon",c=2*Math.PI/i;if(l){const p=[];for(let y=0;y<i;y++){const g=y*c-Math.PI/2;p.push(`${e*Math.cos(g)},${e*Math.sin(g)}`)}t.append("polygon").attr("points",p.join(" ")).attr("fill","none").attr("stroke","#d0d0d0").attr("stroke-width",.8)}else t.append("circle").attr("r",e).attr("fill","none").attr("stroke","#d0d0d0").attr("stroke-width",.8);for(const p of o){const y=r(p);if(l){const x=[];for(let v=0;v<i;v++){const b=v*c-Math.PI/2,k=y*Math.cos(b),M=y*Math.sin(b);x.push(`${k},${M}`)}t.append("polygon").attr("points",x.join(" ")).attr("fill","none").attr("stroke","#e6e6e6").attr("stroke-width",.5)}else t.append("circle").attr("r",y).attr("fill","none").attr("stroke","#e6e6e6").attr("stroke-width",.5);const g=y*Math.cos(s)+5*Math.cos(s+Math.PI/2),m=y*Math.sin(s)+5*Math.sin(s+Math.PI/2);t.append("text").attr("x",g).attr("y",m).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("font-size",kt).attr("fill",this.autoLabelColor()).attr("stroke",this.labelHaloColor()).attr("stroke-width",3).attr("stroke-linejoin","round").attr("paint-order","stroke fill").style("pointer-events","none").text(mk(p))}for(let p=0;p<i;p++){const y=p*c-Math.PI/2;t.append("line").attr("x1",0).attr("y1",0).attr("x2",e*Math.cos(y)).attr("y2",e*Math.sin(y)).attr("stroke","#ccc").attr("stroke-width",.5);const g=(u=(f=this.context.xAxis)==null?void 0:f.config)==null?void 0:u.categories,m=g&&g[p]||((d=this.data[p])==null?void 0:d.name)||`${p}`,x=e+28;t.append("text").attr("x",x*Math.cos(y)).attr("y",x*Math.sin(y)).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("font-size",kt).attr("fill",this.autoLabelColor()).text(m)}}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class xk extends Ut{constructor(t){super(t)}render(){var m,x,v,b;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.config,o=this.data,s=Math.min(40,t.height/Math.max(o.length,1)),a=(t.height-o.length*s)/2,l=((m=this.config.marker)==null?void 0:m.radius)??6,c=(x=this.config.marker)==null?void 0:x.lineColor,h=r.colorByPoint!==!1,f=r.connectorColor??"#ccc",u=r.connectorWidth??r.lineWidth??4,d=this.config.dataLabels||{},p=((v=d.style)==null?void 0:v.fontSize)||kt,y=d.color||((b=d.style)==null?void 0:b.color)||xe,g=[];o.forEach((k,M)=>{const P=a+M*s,$=k.color||(h?e[M%e.length]:r.color||e[0]),_=this.group.append("circle").attr("cx",20).attr("cy",P+s/2).attr("fill",$).style("cursor","pointer");if(c&&_.attr("stroke",c),i?_.attr("r",0).transition().duration(vt).ease(pt).delay(M*Wt).attr("r",l):_.attr("r",l),M<o.length-1){const T=this.group.append("line").attr("x1",20).attr("x2",20).attr("y1",P+s/2+l).attr("y2",P+s+s/2-l).attr("stroke",f).attr("stroke-width",u);i&&T.attr("opacity",0).transition().duration(vt).ease(pt).delay(M*Wt).attr("opacity",1)}const L=k.label||k.name||`Event ${M+1}`,I=this.group.append("text").attr("x",36).attr("y",P+s/2).attr("dy","0.35em").attr("font-size",p).attr("fill",y).style("cursor","pointer").text(L);i&&I.attr("opacity",0).transition().duration(vt).ease(pt).delay(M*Wt).attr("opacity",1);let E=null;const C=k.description;C&&(E=this.group.append("text").attr("x",36).attr("y",P+s/2+14).attr("dy","0.35em").attr("font-size","10px").attr("fill","#777").style("pointer-events","none").text(C),i&&E.attr("opacity",0).transition().duration(vt).ease(pt).delay(M*Wt).attr("opacity",1)),g.push({circle:_,text:I,desc:E});const S=T=>{_.transition("size").duration(Z).ease(j).attr("r",l+3),_.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),I.attr("font-weight","bold"),g.forEach(F=>{F.circle.interrupt("highlight"),F.text.interrupt("highlight"),F.circle.attr("opacity",1),F.text.attr("opacity",1),F.desc&&(F.desc.interrupt("highlight"),F.desc.attr("opacity",1))}),g.forEach((F,D)=>{D!==M&&(F.circle.transition("highlight").duration(Z).ease(j).attr("opacity",.4),F.text.transition("highlight").duration(Z).ease(j).attr("opacity",.4),F.desc&&F.desc.transition("highlight").duration(Z).ease(j).attr("opacity",.4))}),this.context.events.emit("point:mouseover",{point:k,index:M,series:this,event:T,plotX:20,plotY:P+s/2})},w=T=>{_.transition("size").duration(Z).ease(j).attr("r",l),_.style("filter",""),I.attr("font-weight","normal"),g.forEach(F=>{F.circle.interrupt("highlight"),F.text.interrupt("highlight"),F.circle.transition("highlight").duration(Z).ease(j).attr("opacity",1),F.text.transition("highlight").duration(Z).ease(j).attr("opacity",1),F.desc&&(F.desc.interrupt("highlight"),F.desc.transition("highlight").duration(Z).ease(j).attr("opacity",1))}),this.context.events.emit("point:mouseout",{point:k,index:M,series:this,event:T})},A=T=>{this.context.events.emit("point:click",{point:k,index:M,series:this,event:T})};_.on("mouseover",S).on("mouseout",w).on("click",A),I.on("mouseover",S).on("mouseout",w).on("click",A)})}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class bk extends Ut{constructor(t){super(t)}render(){const{xAxis:t,plotArea:e,colors:i}=this.context,r=this.data,o=Math.min(25,e.height/Math.max(r.length,1)*.7),s=e.height/Math.max(r.length,1);r.forEach((a,l)=>{const c=a.start??a.x??0,h=a.end??c+1,f=t.getPixelForValue(c),u=t.getPixelForValue(h),d=l*s+(s-o)/2,p=a.color||i[l%i.length],y=this.group.append("rect").attr("class","katucharts-gantt-bar").attr("x",f).attr("y",d).attr("width",Math.max(1,u-f)).attr("height",o).attr("rx",3).attr("fill",p).attr("stroke","none");this.group.append("text").attr("x",f+4).attr("y",d+o/2).attr("dy","0.35em").attr("font-size","10px").attr("fill","#fff").text(a.name||""),y.style("cursor","pointer"),this.group.selectAll(".katucharts-gantt-bar"),y.on("mouseover",g=>{y.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),y.interrupt("hover").transition("hover").duration(Z).ease(j).attr("stroke","#333").attr("stroke-width",1.5),this.context.events.emit("point:mouseover",{point:a,index:l,series:this,event:g,plotX:(f+u)/2,plotY:d+o/2})}).on("mouseout",g=>{y.style("filter",""),y.interrupt("hover").transition("hover").duration(Z).ease(j).attr("stroke","none").attr("stroke-width",0),this.context.events.emit("point:mouseout",{point:a,index:l,series:this,event:g})}).on("click",g=>{this.context.events.emit("point:click",{point:a,index:l,series:this,event:g})})})}getDataExtents(){let t=1/0,e=-1/0;for(const i of this.data){const r=i.start??i.x??0,o=i.end??r+1;t=Math.min(t,r),e=Math.max(e,o)}return{xMin:t,xMax:e,yMin:0,yMax:0}}}var At=1e-6,pd=1e-12,Bt=Math.PI,te=Bt/2,gd=Bt/4,qe=Bt*2,Fe=180/Bt,ee=Bt/180,Xt=Math.abs,Ki=Math.atan,Wn=Math.atan2,Rt=Math.cos,ms=Math.ceil,md=Math.exp,ys=Math.log,Dc=Math.pow,Tt=Math.sin,sn=Math.sign||function(n){return n>0?1:n<0?-1:0},He=Math.sqrt,Rc=Math.tan;function yd(n){return n>1?0:n<-1?Bt:Math.acos(n)}function an(n){return n>1?te:n<-1?-te:Math.asin(n)}function cn(){}function xs(n,t){n&&bd.hasOwnProperty(n.type)&&bd[n.type](n,t)}var xd={Feature:function(n,t){xs(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,i=-1,r=e.length;++i<r;)xs(e[i].geometry,t)}},bd={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,i=-1,r=e.length;++i<r;)n=e[i],t.point(n[0],n[1],n[2])},LineString:function(n,t){zc(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,i=-1,r=e.length;++i<r;)zc(e[i],t,0)},Polygon:function(n,t){vd(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,i=-1,r=e.length;++i<r;)vd(e[i],t)},GeometryCollection:function(n,t){for(var e=n.geometries,i=-1,r=e.length;++i<r;)xs(e[i],t)}};function zc(n,t,e){var i=-1,r=n.length-e,o;for(t.lineStart();++i<r;)o=n[i],t.point(o[0],o[1],o[2]);t.lineEnd()}function vd(n,t){var e=-1,i=n.length;for(t.polygonStart();++e<i;)zc(n[e],t,1);t.polygonEnd()}function Ji(n,t){n&&xd.hasOwnProperty(n.type)?xd[n.type](n,t):xs(n,t)}function Bc(n){return[Wn(n[1],n[0]),an(n[2])]}function Qi(n){var t=n[0],e=n[1],i=Rt(e);return[i*Rt(t),i*Tt(t),Tt(e)]}function bs(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function vs(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function Oc(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function ws(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function Nc(n){var t=He(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function Wc(n,t){function e(i,r){return i=n(i,r),t(i[0],i[1])}return n.invert&&t.invert&&(e.invert=function(i,r){return i=t.invert(i,r),i&&n.invert(i[0],i[1])}),e}function Hc(n,t){return Xt(n)>Bt&&(n-=Math.round(n/qe)*qe),[n,t]}Hc.invert=Hc;function wd(n,t,e){return(n%=qe)?t||e?Wc(Md(n),Ad(t,e)):Md(n):t||e?Ad(t,e):Hc}function kd(n){return function(t,e){return t+=n,Xt(t)>Bt&&(t-=Math.round(t/qe)*qe),[t,e]}}function Md(n){var t=kd(n);return t.invert=kd(-n),t}function Ad(n,t){var e=Rt(n),i=Tt(n),r=Rt(t),o=Tt(t);function s(a,l){var c=Rt(l),h=Rt(a)*c,f=Tt(a)*c,u=Tt(l),d=u*e+h*i;return[Wn(f*r-d*o,h*e-u*i),an(d*r+f*o)]}return s.invert=function(a,l){var c=Rt(l),h=Rt(a)*c,f=Tt(a)*c,u=Tt(l),d=u*r-f*o;return[Wn(f*r+u*o,h*e+d*i),an(d*e-h*i)]},s}function vk(n){n=wd(n[0]*ee,n[1]*ee,n.length>2?n[2]*ee:0);function t(e){return e=n(e[0]*ee,e[1]*ee),e[0]*=Fe,e[1]*=Fe,e}return t.invert=function(e){return e=n.invert(e[0]*ee,e[1]*ee),e[0]*=Fe,e[1]*=Fe,e},t}function wk(n,t,e,i,r,o){if(e){var s=Rt(t),a=Tt(t),l=i*e;r==null?(r=t+i*qe,o=t-l/2):(r=Sd(s,r),o=Sd(s,o),(i>0?r<o:r>o)&&(r+=i*qe));for(var c,h=r;i>0?h>o:h<o;h-=l)c=Bc([s,-a*Rt(h),-a*Tt(h)]),n.point(c[0],c[1])}}function Sd(n,t){t=Qi(t),t[0]-=n,Nc(t);var e=yd(-t[1]);return((-t[2]<0?-e:e)+qe-At)%qe}function _d(){var n=[],t;return{point:function(e,i,r){t.push([e,i,r])},lineStart:function(){n.push(t=[])},lineEnd:cn,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function ks(n,t){return Xt(n[0]-t[0])<At&&Xt(n[1]-t[1])<At}function Ms(n,t,e,i){this.x=n,this.z=t,this.o=e,this.e=i,this.v=!1,this.n=this.p=null}function Cd(n,t,e,i,r){var o=[],s=[],a,l;if(n.forEach(function(p){if(!((y=p.length-1)<=0)){var y,g=p[0],m=p[y],x;if(ks(g,m)){if(!g[2]&&!m[2]){for(r.lineStart(),a=0;a<y;++a)r.point((g=p[a])[0],g[1]);r.lineEnd();return}m[0]+=2*At}o.push(x=new Ms(g,p,null,!0)),s.push(x.o=new Ms(g,null,x,!1)),o.push(x=new Ms(m,p,null,!1)),s.push(x.o=new Ms(m,null,x,!0))}}),!!o.length){for(s.sort(t),Pd(o),Pd(s),a=0,l=s.length;a<l;++a)s[a].e=e=!e;for(var c=o[0],h,f;;){for(var u=c,d=!0;u.v;)if((u=u.n)===c)return;h=u.z,r.lineStart();do{if(u.v=u.o.v=!0,u.e){if(d)for(a=0,l=h.length;a<l;++a)r.point((f=h[a])[0],f[1]);else i(u.x,u.n.x,1,r);u=u.n}else{if(d)for(h=u.p.z,a=h.length-1;a>=0;--a)r.point((f=h[a])[0],f[1]);else i(u.x,u.p.x,-1,r);u=u.p}u=u.o,h=u.z,d=!d}while(!u.v);r.lineEnd()}}}function Pd(n){if(t=n.length){for(var t,e=0,i=n[0],r;++e<t;)i.n=r=n[e],r.p=i,i=r;i.n=r=n[0],r.p=i}}function Vc(n){return Xt(n[0])<=Bt?n[0]:sn(n[0])*((Xt(n[0])+Bt)%qe-Bt)}function kk(n,t){var e=Vc(t),i=t[1],r=Tt(i),o=[Tt(e),-Rt(e),0],s=0,a=0,l=new di;r===1?i=te+At:r===-1&&(i=-te-At);for(var c=0,h=n.length;c<h;++c)if(u=(f=n[c]).length)for(var f,u,d=f[u-1],p=Vc(d),y=d[1]/2+gd,g=Tt(y),m=Rt(y),x=0;x<u;++x,p=b,g=M,m=P,d=v){var v=f[x],b=Vc(v),k=v[1]/2+gd,M=Tt(k),P=Rt(k),$=b-p,_=$>=0?1:-1,L=_*$,I=L>Bt,E=g*M;if(l.add(Wn(E*_*Tt(L),m*P+E*Rt(L))),s+=I?$+_*qe:$,I^p>=e^b>=e){var C=vs(Qi(d),Qi(v));Nc(C);var S=vs(o,C);Nc(S);var w=(I^$>=0?-1:1)*an(S[2]);(i>w||i===w&&(C[0]||C[1]))&&(a+=I^$>=0?1:-1)}}return(s<-At||s<At&&l<-pd)^a&1}function Ed(n,t,e,i){return function(r){var o=t(r),s=_d(),a=t(s),l=!1,c,h,f,u={point:d,lineStart:y,lineEnd:g,polygonStart:function(){u.point=m,u.lineStart=x,u.lineEnd=v,h=[],c=[]},polygonEnd:function(){u.point=d,u.lineStart=y,u.lineEnd=g,h=qh(h);var b=kk(c,i);h.length?(l||(r.polygonStart(),l=!0),Cd(h,Ak,b,e,r)):b&&(l||(r.polygonStart(),l=!0),r.lineStart(),e(null,null,1,r),r.lineEnd()),l&&(r.polygonEnd(),l=!1),h=c=null},sphere:function(){r.polygonStart(),r.lineStart(),e(null,null,1,r),r.lineEnd(),r.polygonEnd()}};function d(b,k){n(b,k)&&r.point(b,k)}function p(b,k){o.point(b,k)}function y(){u.point=p,o.lineStart()}function g(){u.point=d,o.lineEnd()}function m(b,k){f.push([b,k]),a.point(b,k)}function x(){a.lineStart(),f=[]}function v(){m(f[0][0],f[0][1]),a.lineEnd();var b=a.clean(),k=s.result(),M,P=k.length,$,_,L;if(f.pop(),c.push(f),f=null,!!P){if(b&1){if(_=k[0],($=_.length-1)>0){for(l||(r.polygonStart(),l=!0),r.lineStart(),M=0;M<$;++M)r.point((L=_[M])[0],L[1]);r.lineEnd()}return}P>1&&b&2&&k.push(k.pop().concat(k.shift())),h.push(k.filter(Mk))}}return u}}function Mk(n){return n.length>1}function Ak(n,t){return((n=n.x)[0]<0?n[1]-te-At:te-n[1])-((t=t.x)[0]<0?t[1]-te-At:te-t[1])}const Td=Ed(function(){return!0},Sk,Ck,[-Bt,-te]);function Sk(n){var t=NaN,e=NaN,i=NaN,r;return{lineStart:function(){n.lineStart(),r=1},point:function(o,s){var a=o>0?Bt:-Bt,l=Xt(o-t);Xt(l-Bt)<At?(n.point(t,e=(e+s)/2>0?te:-te),n.point(i,e),n.lineEnd(),n.lineStart(),n.point(a,e),n.point(o,e),r=0):i!==a&&l>=Bt&&(Xt(t-i)<At&&(t-=i*At),Xt(o-a)<At&&(o-=a*At),e=_k(t,e,o,s),n.point(i,e),n.lineEnd(),n.lineStart(),n.point(a,e),r=0),n.point(t=o,e=s),i=a},lineEnd:function(){n.lineEnd(),t=e=NaN},clean:function(){return 2-r}}}function _k(n,t,e,i){var r,o,s=Tt(n-e);return Xt(s)>At?Ki((Tt(t)*(o=Rt(i))*Tt(e)-Tt(i)*(r=Rt(t))*Tt(n))/(r*o*s)):(t+i)/2}function Ck(n,t,e,i){var r;if(n==null)r=e*te,i.point(-Bt,r),i.point(0,r),i.point(Bt,r),i.point(Bt,0),i.point(Bt,-r),i.point(0,-r),i.point(-Bt,-r),i.point(-Bt,0),i.point(-Bt,r);else if(Xt(n[0]-t[0])>At){var o=n[0]<t[0]?Bt:-Bt;r=e*o/2,i.point(-o,r),i.point(0,r),i.point(o,r)}else i.point(t[0],t[1])}function Pk(n){var t=Rt(n),e=2*ee,i=t>0,r=Xt(t)>At;function o(h,f,u,d){wk(d,n,e,u,h,f)}function s(h,f){return Rt(h)*Rt(f)>t}function a(h){var f,u,d,p,y;return{lineStart:function(){p=d=!1,y=1},point:function(g,m){var x=[g,m],v,b=s(g,m),k=i?b?0:c(g,m):b?c(g+(g<0?Bt:-Bt),m):0;if(!f&&(p=d=b)&&h.lineStart(),b!==d&&(v=l(f,x),(!v||ks(f,v)||ks(x,v))&&(x[2]=1)),b!==d)y=0,b?(h.lineStart(),v=l(x,f),h.point(v[0],v[1])):(v=l(f,x),h.point(v[0],v[1],2),h.lineEnd()),f=v;else if(r&&f&&i^b){var M;!(k&u)&&(M=l(x,f,!0))&&(y=0,i?(h.lineStart(),h.point(M[0][0],M[0][1]),h.point(M[1][0],M[1][1]),h.lineEnd()):(h.point(M[1][0],M[1][1]),h.lineEnd(),h.lineStart(),h.point(M[0][0],M[0][1],3)))}b&&(!f||!ks(f,x))&&h.point(x[0],x[1]),f=x,d=b,u=k},lineEnd:function(){d&&h.lineEnd(),f=null},clean:function(){return y|(p&&d)<<1}}}function l(h,f,u){var d=Qi(h),p=Qi(f),y=[1,0,0],g=vs(d,p),m=bs(g,g),x=g[0],v=m-x*x;if(!v)return!u&&h;var b=t*m/v,k=-t*x/v,M=vs(y,g),P=ws(y,b),$=ws(g,k);Oc(P,$);var _=M,L=bs(P,_),I=bs(_,_),E=L*L-I*(bs(P,P)-1);if(!(E<0)){var C=He(E),S=ws(_,(-L-C)/I);if(Oc(S,P),S=Bc(S),!u)return S;var w=h[0],A=f[0],T=h[1],F=f[1],D;A<w&&(D=w,w=A,A=D);var R=A-w,z=Xt(R-Bt)<At,B=z||R<At;if(!z&&F<T&&(D=T,T=F,F=D),B?z?T+F>0^S[1]<(Xt(S[0]-w)<At?T:F):T<=S[1]&&S[1]<=F:R>Bt^(w<=S[0]&&S[0]<=A)){var W=ws(_,(-L+C)/I);return Oc(W,P),[S,Bc(W)]}}}function c(h,f){var u=i?n:Bt-n,d=0;return h<-u?d|=1:h>u&&(d|=2),f<-u?d|=4:f>u&&(d|=8),d}return Ed(s,a,o,i?[0,-n]:[-Bt,n-Bt])}function Ek(n,t,e,i,r,o){var s=n[0],a=n[1],l=t[0],c=t[1],h=0,f=1,u=l-s,d=c-a,p;if(p=e-s,!(!u&&p>0)){if(p/=u,u<0){if(p<h)return;p<f&&(f=p)}else if(u>0){if(p>f)return;p>h&&(h=p)}if(p=r-s,!(!u&&p<0)){if(p/=u,u<0){if(p>f)return;p>h&&(h=p)}else if(u>0){if(p<h)return;p<f&&(f=p)}if(p=i-a,!(!d&&p>0)){if(p/=d,d<0){if(p<h)return;p<f&&(f=p)}else if(d>0){if(p>f)return;p>h&&(h=p)}if(p=o-a,!(!d&&p<0)){if(p/=d,d<0){if(p>f)return;p>h&&(h=p)}else if(d>0){if(p<h)return;p<f&&(f=p)}return h>0&&(n[0]=s+h*u,n[1]=a+h*d),f<1&&(t[0]=s+f*u,t[1]=a+f*d),!0}}}}}var Fr=1e9,As=-Fr;function Tk(n,t,e,i){function r(c,h){return n<=c&&c<=e&&t<=h&&h<=i}function o(c,h,f,u){var d=0,p=0;if(c==null||(d=s(c,f))!==(p=s(h,f))||l(c,h)<0^f>0)do u.point(d===0||d===3?n:e,d>1?i:t);while((d=(d+f+4)%4)!==p);else u.point(h[0],h[1])}function s(c,h){return Xt(c[0]-n)<At?h>0?0:3:Xt(c[0]-e)<At?h>0?2:1:Xt(c[1]-t)<At?h>0?1:0:h>0?3:2}function a(c,h){return l(c.x,h.x)}function l(c,h){var f=s(c,1),u=s(h,1);return f!==u?f-u:f===0?h[1]-c[1]:f===1?c[0]-h[0]:f===2?c[1]-h[1]:h[0]-c[0]}return function(c){var h=c,f=_d(),u,d,p,y,g,m,x,v,b,k,M,P={point:$,lineStart:E,lineEnd:C,polygonStart:L,polygonEnd:I};function $(w,A){r(w,A)&&h.point(w,A)}function _(){for(var w=0,A=0,T=d.length;A<T;++A)for(var F=d[A],D=1,R=F.length,z=F[0],B,W,K=z[0],X=z[1];D<R;++D)B=K,W=X,z=F[D],K=z[0],X=z[1],W<=i?X>i&&(K-B)*(i-W)>(X-W)*(n-B)&&++w:X<=i&&(K-B)*(i-W)<(X-W)*(n-B)&&--w;return w}function L(){h=f,u=[],d=[],M=!0}function I(){var w=_(),A=M&&w,T=(u=qh(u)).length;(A||T)&&(c.polygonStart(),A&&(c.lineStart(),o(null,null,1,c),c.lineEnd()),T&&Cd(u,a,w,o,c),c.polygonEnd()),h=c,u=d=p=null}function E(){P.point=S,d&&d.push(p=[]),k=!0,b=!1,x=v=NaN}function C(){u&&(S(y,g),m&&b&&f.rejoin(),u.push(f.result())),P.point=$,b&&h.lineEnd()}function S(w,A){var T=r(w,A);if(d&&p.push([w,A]),k)y=w,g=A,m=T,k=!1,T&&(h.lineStart(),h.point(w,A));else if(T&&b)h.point(w,A);else{var F=[x=Math.max(As,Math.min(Fr,x)),v=Math.max(As,Math.min(Fr,v))],D=[w=Math.max(As,Math.min(Fr,w)),A=Math.max(As,Math.min(Fr,A))];Ek(F,D,n,t,e,i)?(b||(h.lineStart(),h.point(F[0],F[1])),h.point(D[0],D[1]),T||h.lineEnd(),M=!1):T&&(h.lineStart(),h.point(w,A),M=!1)}x=w,v=A,b=T}return P}}function $d(n,t,e){var i=pi(n,t-At,e).concat(t);return function(r){return i.map(function(o){return[r,o]})}}function Ld(n,t,e){var i=pi(n,t-At,e).concat(t);return function(r){return i.map(function(o){return[o,r]})}}function $k(){var n,t,e,i,r,o,s,a,l=10,c=l,h=90,f=360,u,d,p,y,g=2.5;function m(){return{type:"MultiLineString",coordinates:x()}}function x(){return pi(ms(i/h)*h,e,h).map(p).concat(pi(ms(a/f)*f,s,f).map(y)).concat(pi(ms(t/l)*l,n,l).filter(function(v){return Xt(v%h)>At}).map(u)).concat(pi(ms(o/c)*c,r,c).filter(function(v){return Xt(v%f)>At}).map(d))}return m.lines=function(){return x().map(function(v){return{type:"LineString",coordinates:v}})},m.outline=function(){return{type:"Polygon",coordinates:[p(i).concat(y(s).slice(1),p(e).reverse().slice(1),y(a).reverse().slice(1))]}},m.extent=function(v){return arguments.length?m.extentMajor(v).extentMinor(v):m.extentMinor()},m.extentMajor=function(v){return arguments.length?(i=+v[0][0],e=+v[1][0],a=+v[0][1],s=+v[1][1],i>e&&(v=i,i=e,e=v),a>s&&(v=a,a=s,s=v),m.precision(g)):[[i,a],[e,s]]},m.extentMinor=function(v){return arguments.length?(t=+v[0][0],n=+v[1][0],o=+v[0][1],r=+v[1][1],t>n&&(v=t,t=n,n=v),o>r&&(v=o,o=r,r=v),m.precision(g)):[[t,o],[n,r]]},m.step=function(v){return arguments.length?m.stepMajor(v).stepMinor(v):m.stepMinor()},m.stepMajor=function(v){return arguments.length?(h=+v[0],f=+v[1],m):[h,f]},m.stepMinor=function(v){return arguments.length?(l=+v[0],c=+v[1],m):[l,c]},m.precision=function(v){return arguments.length?(g=+v,u=$d(o,r,90),d=Ld(t,n,g),p=$d(a,s,90),y=Ld(i,e,g),m):g},m.extentMajor([[-180,-90+At],[180,90-At]]).extentMinor([[-180,-80-At],[180,80+At]])}const Gc=n=>n;var Yc=new di,Xc=new di,Id,Fd,Uc,jc,Hn={point:cn,lineStart:cn,lineEnd:cn,polygonStart:function(){Hn.lineStart=Lk,Hn.lineEnd=Fk},polygonEnd:function(){Hn.lineStart=Hn.lineEnd=Hn.point=cn,Yc.add(Xt(Xc)),Xc=new di},result:function(){var n=Yc/2;return Yc=new di,n}};function Lk(){Hn.point=Ik}function Ik(n,t){Hn.point=Dd,Id=Uc=n,Fd=jc=t}function Dd(n,t){Xc.add(jc*n-Uc*t),Uc=n,jc=t}function Fk(){Dd(Id,Fd)}var tr=1/0,Ss=tr,Dr=-tr,_s=Dr,Cs={point:Dk,lineStart:cn,lineEnd:cn,polygonStart:cn,polygonEnd:cn,result:function(){var n=[[tr,Ss],[Dr,_s]];return Dr=_s=-(Ss=tr=1/0),n}};function Dk(n,t){n<tr&&(tr=n),n>Dr&&(Dr=n),t<Ss&&(Ss=t),t>_s&&(_s=t)}var qc=0,Zc=0,Rr=0,Ps=0,Es=0,er=0,Kc=0,Jc=0,zr=0,Rd,zd,kn,Mn,ln={point:Ai,lineStart:Bd,lineEnd:Od,polygonStart:function(){ln.lineStart=Bk,ln.lineEnd=Ok},polygonEnd:function(){ln.point=Ai,ln.lineStart=Bd,ln.lineEnd=Od},result:function(){var n=zr?[Kc/zr,Jc/zr]:er?[Ps/er,Es/er]:Rr?[qc/Rr,Zc/Rr]:[NaN,NaN];return qc=Zc=Rr=Ps=Es=er=Kc=Jc=zr=0,n}};function Ai(n,t){qc+=n,Zc+=t,++Rr}function Bd(){ln.point=Rk}function Rk(n,t){ln.point=zk,Ai(kn=n,Mn=t)}function zk(n,t){var e=n-kn,i=t-Mn,r=He(e*e+i*i);Ps+=r*(kn+n)/2,Es+=r*(Mn+t)/2,er+=r,Ai(kn=n,Mn=t)}function Od(){ln.point=Ai}function Bk(){ln.point=Nk}function Ok(){Nd(Rd,zd)}function Nk(n,t){ln.point=Nd,Ai(Rd=kn=n,zd=Mn=t)}function Nd(n,t){var e=n-kn,i=t-Mn,r=He(e*e+i*i);Ps+=r*(kn+n)/2,Es+=r*(Mn+t)/2,er+=r,r=Mn*n-kn*t,Kc+=r*(kn+n),Jc+=r*(Mn+t),zr+=r*3,Ai(kn=n,Mn=t)}function Wd(n){this._context=n}Wd.prototype={_radius:4.5,pointRadius:function(n){return this._radius=n,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(n,t){switch(this._point){case 0:{this._context.moveTo(n,t),this._point=1;break}case 1:{this._context.lineTo(n,t);break}default:{this._context.moveTo(n+this._radius,t),this._context.arc(n,t,this._radius,0,qe);break}}},result:cn};var Qc=new di,tl,Hd,Vd,Br,Or,Nr={point:cn,lineStart:function(){Nr.point=Wk},lineEnd:function(){tl&&Gd(Hd,Vd),Nr.point=cn},polygonStart:function(){tl=!0},polygonEnd:function(){tl=null},result:function(){var n=+Qc;return Qc=new di,n}};function Wk(n,t){Nr.point=Gd,Hd=Br=n,Vd=Or=t}function Gd(n,t){Br-=n,Or-=t,Qc.add(He(Br*Br+Or*Or)),Br=n,Or=t}let Yd,Ts,Xd,Ud;class jd{constructor(t){this._append=t==null?qd:Hk(t),this._radius=4.5,this._=""}pointRadius(t){return this._radius=+t,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){this._line===0&&(this._+="Z"),this._point=NaN}point(t,e){switch(this._point){case 0:{this._append`M${t},${e}`,this._point=1;break}case 1:{this._append`L${t},${e}`;break}default:{if(this._append`M${t},${e}`,this._radius!==Xd||this._append!==Ts){const i=this._radius,r=this._;this._="",this._append`m0,${i}a${i},${i} 0 1,1 0,${-2*i}a${i},${i} 0 1,1 0,${2*i}z`,Xd=i,Ts=this._append,Ud=this._,this._=r}this._+=Ud;break}}}result(){const t=this._;return this._="",t.length?t:null}}function qd(n){let t=1;this._+=n[0];for(const e=n.length;t<e;++t)this._+=arguments[t]+n[t]}function Hk(n){const t=Math.floor(n);if(!(t>=0))throw new RangeError(`invalid digits: ${n}`);if(t>15)return qd;if(t!==Yd){const e=10**t;Yd=t,Ts=function(r){let o=1;this._+=r[0];for(const s=r.length;o<s;++o)this._+=Math.round(arguments[o]*e)/e+r[o]}}return Ts}function Vk(n,t){let e=3,i=4.5,r,o;function s(a){return a&&(typeof i=="function"&&o.pointRadius(+i.apply(this,arguments)),Ji(a,r(o))),o.result()}return s.area=function(a){return Ji(a,r(Hn)),Hn.result()},s.measure=function(a){return Ji(a,r(Nr)),Nr.result()},s.bounds=function(a){return Ji(a,r(Cs)),Cs.result()},s.centroid=function(a){return Ji(a,r(ln)),ln.result()},s.projection=function(a){return arguments.length?(r=a==null?(n=null,Gc):(n=a).stream,s):n},s.context=function(a){return arguments.length?(o=a==null?(t=null,new jd(e)):new Wd(t=a),typeof i!="function"&&o.pointRadius(i),s):t},s.pointRadius=function(a){return arguments.length?(i=typeof a=="function"?a:(o.pointRadius(+a),+a),s):i},s.digits=function(a){if(!arguments.length)return e;if(a==null)e=null;else{const l=Math.floor(a);if(!(l>=0))throw new RangeError(`invalid digits: ${a}`);e=l}return t===null&&(o=new jd(e)),s},s.projection(n).digits(e).context(t)}function el(n){return function(t){var e=new nl;for(var i in n)e[i]=n[i];return e.stream=t,e}}function nl(){}nl.prototype={constructor:nl,point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function il(n,t,e){var i=n.clipExtent&&n.clipExtent();return n.scale(150).translate([0,0]),i!=null&&n.clipExtent(null),Ji(e,n.stream(Cs)),t(Cs.result()),i!=null&&n.clipExtent(i),n}function rl(n,t,e){return il(n,function(i){var r=t[1][0]-t[0][0],o=t[1][1]-t[0][1],s=Math.min(r/(i[1][0]-i[0][0]),o/(i[1][1]-i[0][1])),a=+t[0][0]+(r-s*(i[1][0]+i[0][0]))/2,l=+t[0][1]+(o-s*(i[1][1]+i[0][1]))/2;n.scale(150*s).translate([a,l])},e)}function Zd(n,t,e){return rl(n,[[0,0],t],e)}function Kd(n,t,e){return il(n,function(i){var r=+t,o=r/(i[1][0]-i[0][0]),s=(r-o*(i[1][0]+i[0][0]))/2,a=-o*i[0][1];n.scale(150*o).translate([s,a])},e)}function Jd(n,t,e){return il(n,function(i){var r=+t,o=r/(i[1][1]-i[0][1]),s=-o*i[0][0],a=(r-o*(i[1][1]+i[0][1]))/2;n.scale(150*o).translate([s,a])},e)}var Qd=16,Gk=Rt(30*ee);function tp(n,t){return+t?Xk(n,t):Yk(n)}function Yk(n){return el({point:function(t,e){t=n(t,e),this.stream.point(t[0],t[1])}})}function Xk(n,t){function e(i,r,o,s,a,l,c,h,f,u,d,p,y,g){var m=c-i,x=h-r,v=m*m+x*x;if(v>4*t&&y--){var b=s+u,k=a+d,M=l+p,P=He(b*b+k*k+M*M),$=an(M/=P),_=Xt(Xt(M)-1)<At||Xt(o-f)<At?(o+f)/2:Wn(k,b),L=n(_,$),I=L[0],E=L[1],C=I-i,S=E-r,w=x*C-m*S;(w*w/v>t||Xt((m*C+x*S)/v-.5)>.3||s*u+a*d+l*p<Gk)&&(e(i,r,o,s,a,l,I,E,_,b/=P,k/=P,M,y,g),g.point(I,E),e(I,E,_,b,k,M,c,h,f,u,d,p,y,g))}}return function(i){var r,o,s,a,l,c,h,f,u,d,p,y,g={point:m,lineStart:x,lineEnd:b,polygonStart:function(){i.polygonStart(),g.lineStart=k},polygonEnd:function(){i.polygonEnd(),g.lineStart=x}};function m($,_){$=n($,_),i.point($[0],$[1])}function x(){f=NaN,g.point=v,i.lineStart()}function v($,_){var L=Qi([$,_]),I=n($,_);e(f,u,h,d,p,y,f=I[0],u=I[1],h=$,d=L[0],p=L[1],y=L[2],Qd,i),i.point(f,u)}function b(){g.point=m,i.lineEnd()}function k(){x(),g.point=M,g.lineEnd=P}function M($,_){v(r=$,_),o=f,s=u,a=d,l=p,c=y,g.point=v}function P(){e(f,u,h,d,p,y,o,s,r,a,l,c,Qd,i),g.lineEnd=b,b()}return g}}var Uk=el({point:function(n,t){this.stream.point(n*ee,t*ee)}});function jk(n){return el({point:function(t,e){var i=n(t,e);return this.stream.point(i[0],i[1])}})}function qk(n,t,e,i,r){function o(s,a){return s*=i,a*=r,[t+n*s,e-n*a]}return o.invert=function(s,a){return[(s-t)/n*i,(e-a)/n*r]},o}function ep(n,t,e,i,r,o){if(!o)return qk(n,t,e,i,r);var s=Rt(o),a=Tt(o),l=s*n,c=a*n,h=s/n,f=a/n,u=(a*e-s*t)/n,d=(a*t+s*e)/n;function p(y,g){return y*=i,g*=r,[l*y-c*g+t,e-c*y-l*g]}return p.invert=function(y,g){return[i*(h*y-f*g+u),r*(d-f*y-h*g)]},p}function An(n){return np(function(){return n})()}function np(n){var t,e=150,i=480,r=250,o=0,s=0,a=0,l=0,c=0,h,f=0,u=1,d=1,p=null,y=Td,g=null,m,x,v,b=Gc,k=.5,M,P,$,_,L;function I(w){return $(w[0]*ee,w[1]*ee)}function E(w){return w=$.invert(w[0],w[1]),w&&[w[0]*Fe,w[1]*Fe]}I.stream=function(w){return _&&L===w?_:_=Uk(jk(h)(y(M(b(L=w)))))},I.preclip=function(w){return arguments.length?(y=w,p=void 0,S()):y},I.postclip=function(w){return arguments.length?(b=w,g=m=x=v=null,S()):b},I.clipAngle=function(w){return arguments.length?(y=+w?Pk(p=w*ee):(p=null,Td),S()):p*Fe},I.clipExtent=function(w){return arguments.length?(b=w==null?(g=m=x=v=null,Gc):Tk(g=+w[0][0],m=+w[0][1],x=+w[1][0],v=+w[1][1]),S()):g==null?null:[[g,m],[x,v]]},I.scale=function(w){return arguments.length?(e=+w,C()):e},I.translate=function(w){return arguments.length?(i=+w[0],r=+w[1],C()):[i,r]},I.center=function(w){return arguments.length?(o=w[0]%360*ee,s=w[1]%360*ee,C()):[o*Fe,s*Fe]},I.rotate=function(w){return arguments.length?(a=w[0]%360*ee,l=w[1]%360*ee,c=w.length>2?w[2]%360*ee:0,C()):[a*Fe,l*Fe,c*Fe]},I.angle=function(w){return arguments.length?(f=w%360*ee,C()):f*Fe},I.reflectX=function(w){return arguments.length?(u=w?-1:1,C()):u<0},I.reflectY=function(w){return arguments.length?(d=w?-1:1,C()):d<0},I.precision=function(w){return arguments.length?(M=tp(P,k=w*w),S()):He(k)},I.fitExtent=function(w,A){return rl(I,w,A)},I.fitSize=function(w,A){return Zd(I,w,A)},I.fitWidth=function(w,A){return Kd(I,w,A)},I.fitHeight=function(w,A){return Jd(I,w,A)};function C(){var w=ep(e,0,0,u,d,f).apply(null,t(o,s)),A=ep(e,i-w[0],r-w[1],u,d,f);return h=wd(a,l,c),P=Wc(t,A),$=Wc(h,P),M=tp(P,k),S()}function S(){return _=L=null,I}return function(){return t=n.apply(this,arguments),I.invert=t.invert&&E,C()}}function ol(n){var t=0,e=Bt/3,i=np(n),r=i(t,e);return r.parallels=function(o){return arguments.length?i(t=o[0]*ee,e=o[1]*ee):[t*Fe,e*Fe]},r}function Zk(n){var t=Rt(n);function e(i,r){return[i*t,Tt(r)/t]}return e.invert=function(i,r){return[i/t,an(r*t)]},e}function Kk(n,t){var e=Tt(n),i=(e+Tt(t))/2;if(Xt(i)<At)return Zk(n);var r=1+e*(2*i-e),o=He(r)/i;function s(a,l){var c=He(r-2*i*Tt(l))/i;return[c*Tt(a*=i),o-c*Rt(a)]}return s.invert=function(a,l){var c=o-l,h=Wn(a,Xt(c))*sn(c);return c*i<0&&(h-=Bt*sn(a)*sn(c)),[h/i,an((r-(a*a+c*c)*i*i)/(2*i))]},s}function $s(){return ol(Kk).scale(155.424).center([0,33.6442])}function ip(){return $s().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function Jk(n){var t=n.length;return{point:function(e,i){for(var r=-1;++r<t;)n[r].point(e,i)},sphere:function(){for(var e=-1;++e<t;)n[e].sphere()},lineStart:function(){for(var e=-1;++e<t;)n[e].lineStart()},lineEnd:function(){for(var e=-1;++e<t;)n[e].lineEnd()},polygonStart:function(){for(var e=-1;++e<t;)n[e].polygonStart()},polygonEnd:function(){for(var e=-1;++e<t;)n[e].polygonEnd()}}}function Qk(){var n,t,e=ip(),i,r=$s().rotate([154,0]).center([-2,58.5]).parallels([55,65]),o,s=$s().rotate([157,0]).center([-3,19.9]).parallels([8,18]),a,l,c={point:function(u,d){l=[u,d]}};function h(u){var d=u[0],p=u[1];return l=null,i.point(d,p),l||(o.point(d,p),l)||(a.point(d,p),l)}h.invert=function(u){var d=e.scale(),p=e.translate(),y=(u[0]-p[0])/d,g=(u[1]-p[1])/d;return(g>=.12&&g<.234&&y>=-.425&&y<-.214?r:g>=.166&&g<.234&&y>=-.214&&y<-.115?s:e).invert(u)},h.stream=function(u){return n&&t===u?n:n=Jk([e.stream(t=u),r.stream(u),s.stream(u)])},h.precision=function(u){return arguments.length?(e.precision(u),r.precision(u),s.precision(u),f()):e.precision()},h.scale=function(u){return arguments.length?(e.scale(u),r.scale(u*.35),s.scale(u),h.translate(e.translate())):e.scale()},h.translate=function(u){if(!arguments.length)return e.translate();var d=e.scale(),p=+u[0],y=+u[1];return i=e.translate(u).clipExtent([[p-.455*d,y-.238*d],[p+.455*d,y+.238*d]]).stream(c),o=r.translate([p-.307*d,y+.201*d]).clipExtent([[p-.425*d+At,y+.12*d+At],[p-.214*d-At,y+.234*d-At]]).stream(c),a=s.translate([p-.205*d,y+.212*d]).clipExtent([[p-.214*d+At,y+.166*d+At],[p-.115*d-At,y+.234*d-At]]).stream(c),f()},h.fitExtent=function(u,d){return rl(h,u,d)},h.fitSize=function(u,d){return Zd(h,u,d)},h.fitWidth=function(u,d){return Kd(h,u,d)},h.fitHeight=function(u,d){return Jd(h,u,d)};function f(){return n=t=null,h}return h.scale(1070)}function rp(n){return function(t,e){var i=Rt(t),r=Rt(e),o=n(i*r);return o===1/0?[2,0]:[o*r*Tt(t),o*Tt(e)]}}function Wr(n){return function(t,e){var i=He(t*t+e*e),r=n(i),o=Tt(r),s=Rt(r);return[Wn(t*o,i*s),an(i&&e*o/i)]}}var op=rp(function(n){return He(2/(1+n))});op.invert=Wr(function(n){return 2*an(n/2)});function tM(){return An(op).scale(124.75).clipAngle(180-.001)}var sp=rp(function(n){return(n=yd(n))&&n/Tt(n)});sp.invert=Wr(function(n){return n});function eM(){return An(sp).scale(79.4188).clipAngle(180-.001)}function Ls(n,t){return[n,ys(Rc((te+t)/2))]}Ls.invert=function(n,t){return[n,2*Ki(md(t))-te]};function ap(){return cp(Ls).scale(961/qe)}function cp(n){var t=An(n),e=t.center,i=t.scale,r=t.translate,o=t.clipExtent,s=null,a,l,c;t.scale=function(f){return arguments.length?(i(f),h()):i()},t.translate=function(f){return arguments.length?(r(f),h()):r()},t.center=function(f){return arguments.length?(e(f),h()):e()},t.clipExtent=function(f){return arguments.length?(f==null?s=a=l=c=null:(s=+f[0][0],a=+f[0][1],l=+f[1][0],c=+f[1][1]),h()):s==null?null:[[s,a],[l,c]]};function h(){var f=Bt*i(),u=t(vk(t.rotate()).invert([0,0]));return o(s==null?[[u[0]-f,u[1]-f],[u[0]+f,u[1]+f]]:n===Ls?[[Math.max(u[0]-f,s),a],[Math.min(u[0]+f,l),c]]:[[s,Math.max(u[1]-f,a)],[l,Math.min(u[1]+f,c)]])}return h()}function Is(n){return Rc((te+n)/2)}function nM(n,t){var e=Rt(n),i=n===t?Tt(n):ys(e/Rt(t))/ys(Is(t)/Is(n)),r=e*Dc(Is(n),i)/i;if(!i)return Ls;function o(s,a){r>0?a<-te+At&&(a=-te+At):a>te-At&&(a=te-At);var l=r/Dc(Is(a),i);return[l*Tt(i*s),r-l*Rt(i*s)]}return o.invert=function(s,a){var l=r-a,c=sn(i)*He(s*s+l*l),h=Wn(s,Xt(l))*sn(l);return l*i<0&&(h-=Bt*sn(s)*sn(l)),[h/i,2*Ki(Dc(r/c,1/i))-te]},o}function iM(){return ol(nM).scale(109.5).parallels([30,30])}function Fs(n,t){return[n,t]}Fs.invert=Fs;function rM(){return An(Fs).scale(152.63)}function oM(n,t){var e=Rt(n),i=n===t?Tt(n):(e-Rt(t))/(t-n),r=e/i+n;if(Xt(i)<At)return Fs;function o(s,a){var l=r-a,c=i*s;return[l*Tt(c),r-l*Rt(c)]}return o.invert=function(s,a){var l=r-a,c=Wn(s,Xt(l))*sn(l);return l*i<0&&(c-=Bt*sn(s)*sn(l)),[c/i,r-sn(i)*He(s*s+l*l)]},o}function sM(){return ol(oM).scale(131.154).center([0,13.9389])}var Hr=1.340264,Vr=-.081106,Gr=893e-6,Yr=.003796,Ds=He(3)/2,aM=12;function lp(n,t){var e=an(Ds*Tt(t)),i=e*e,r=i*i*i;return[n*Rt(e)/(Ds*(Hr+3*Vr*i+r*(7*Gr+9*Yr*i))),e*(Hr+Vr*i+r*(Gr+Yr*i))]}lp.invert=function(n,t){for(var e=t,i=e*e,r=i*i*i,o=0,s,a,l;o<aM&&(a=e*(Hr+Vr*i+r*(Gr+Yr*i))-t,l=Hr+3*Vr*i+r*(7*Gr+9*Yr*i),e-=s=a/l,i=e*e,r=i*i*i,!(Xt(s)<pd));++o);return[Ds*n*(Hr+3*Vr*i+r*(7*Gr+9*Yr*i))/Rt(e),an(Tt(e)/Ds)]};function hp(){return An(lp).scale(177.158)}function up(n,t){var e=Rt(t),i=Rt(n)*e;return[e*Tt(n)/i,Tt(t)/i]}up.invert=Wr(Ki);function cM(){return An(up).scale(144.049).clipAngle(60)}function fp(n,t){var e=t*t,i=e*e;return[n*(.8707-.131979*e+i*(-.013791+i*(.003971*e-.001529*i))),t*(1.007226+e*(.015085+i*(-.044475+.028874*e-.005916*i)))]}fp.invert=function(n,t){var e=t,i=25,r;do{var o=e*e,s=o*o;e-=r=(e*(1.007226+o*(.015085+s*(-.044475+.028874*o-.005916*s)))-t)/(1.007226+o*(.015085*3+s*(-.044475*7+.028874*9*o-.005916*11*s)))}while(Xt(r)>At&&--i>0);return[n/(.8707+(o=e*e)*(-.131979+o*(-.013791+o*o*o*(.003971-.001529*o)))),e]};function sl(){return An(fp).scale(175.295)}function dp(n,t){return[Rt(t)*Tt(n),Tt(t)]}dp.invert=Wr(an);function pp(){return An(dp).scale(249.5).clipAngle(90+At)}function gp(n,t){var e=Rt(t),i=1+Rt(n)*e;return[e*Tt(n)/i,Tt(t)/i]}gp.invert=Wr(function(n){return 2*Ki(n)});function lM(){return An(gp).scale(250).clipAngle(142)}function mp(n,t){return[ys(Rc((te+t)/2)),-n]}mp.invert=function(n,t){return[-t,2*Ki(md(n))-te]};function hM(){var n=cp(mp),t=n.center,e=n.rotate;return n.center=function(i){return arguments.length?t([-i[1],i[0]]):(i=t(),[i[1],-i[0]])},n.rotate=function(i){return arguments.length?e([i[0],i[1],i.length>2?i[2]+90:90]):(i=e(),[i[0],i[1],i[2]-90])},e([0,0,90]).scale(159.155)}function uM(n){return n}function fM(n){if(n==null)return uM;var t,e,i=n.scale[0],r=n.scale[1],o=n.translate[0],s=n.translate[1];return function(a,l){l||(t=e=0);var c=2,h=a.length,f=new Array(h);for(f[0]=(t+=a[0])*i+o,f[1]=(e+=a[1])*r+s;c<h;)f[c]=a[c],++c;return f}}function dM(n,t){for(var e,i=n.length,r=i-t;r<--i;)e=n[r],n[r++]=n[i],n[i]=e}function pM(n,t){return typeof t=="string"&&(t=n.objects[t]),t.type==="GeometryCollection"?{type:"FeatureCollection",features:t.geometries.map(function(e){return yp(n,e)})}:yp(n,t)}function yp(n,t){var e=t.id,i=t.bbox,r=t.properties==null?{}:t.properties,o=gM(n,t);return e==null&&i==null?{type:"Feature",properties:r,geometry:o}:i==null?{type:"Feature",id:e,properties:r,geometry:o}:{type:"Feature",id:e,bbox:i,properties:r,geometry:o}}function gM(n,t){var e=fM(n.transform),i=n.arcs;function r(h,f){f.length&&f.pop();for(var u=i[h<0?~h:h],d=0,p=u.length;d<p;++d)f.push(e(u[d],d));h<0&&dM(f,p)}function o(h){return e(h)}function s(h){for(var f=[],u=0,d=h.length;u<d;++u)r(h[u],f);return f.length<2&&f.push(f[0]),f}function a(h){for(var f=s(h);f.length<4;)f.push(f[0]);return f}function l(h){return h.map(a)}function c(h){var f=h.type,u;switch(f){case"GeometryCollection":return{type:f,geometries:h.geometries.map(c)};case"Point":u=o(h.coordinates);break;case"MultiPoint":u=h.coordinates.map(o);break;case"LineString":u=s(h.arcs);break;case"MultiLineString":u=h.arcs.map(s);break;case"Polygon":u=l(h.arcs);break;case"MultiPolygon":u=h.arcs.map(l);break;default:return null}return{type:f,coordinates:u}}return c(t)}const xp=(n,t)=>[n,1.25*Math.log(Math.tan(Math.PI/4+.4*t))];xp.invert=(n,t)=>[n,2.5*Math.atan(Math.exp(.8*t))-.625*Math.PI];const mM={naturalEarth:sl,naturalEarth1:sl,mercator:ap,orthographic:pp,albers:ip,albersUsa:Qk,equirectangular:rM,equalEarth:hp,conicEqualArea:$s,conicEquidistant:sM,stereographic:lM,transverseMercator:hM,azimuthalEqualArea:tM,azimuthalEquidistant:eM,gnomonic:cM,Orthographic:pp,WebMercator:ap,EqualEarth:hp,LambertConformalConic:iM,Miller:()=>An(xp).scale(108.318)};function yM(n,t){if(n&&n.type==="Topology"&&n.objects){const e=t||(n.objects.countries?"countries":Object.keys(n.objects)[0]),i=pM(n,n.objects[e]);return i.features||[i]}return n.features||n}function al(n,t){var e;return String(n).toLowerCase()==="orthographic"||!!((e=t==null?void 0:t.options3d)!=null&&e.enabled)}function cl(n,t,e,i){var f,u,d;const r=yM(n,i),o={type:"FeatureCollection",features:r},s=(t==null?void 0:t.name)||t||"naturalEarth",l=(mM[s]||sl)(),c=typeof t=="object"?t:{};c.rotation&&((f=l.rotate)==null||f.call(l,c.rotation)),c.center&&((u=l.center)==null||u.call(l,c.center)),c.scale&&((d=l.scale)==null||d.call(l,c.scale)),c.parallels&&l.parallels&&l.parallels(c.parallels),c.scale||l.fitSize([e.width,e.height],o);const h=Vk().projection(l);return{projection:l,pathGen:h,features:r,projName:String(s)}}function ll(n,t){const e=t.width/2,i=t.height/2,r=Math.min(t.width,t.height)/2-10;return n.translate([e,i]).scale(r).clipAngle(90),r}function hl(n){var t;return n?Array.isArray(n)&&n.length>=2&&typeof n[0]=="number"?[n[0],n[1]]:n.lon!=null&&n.lat!=null?[n.lon,n.lat]:(t=n.geometry)!=null&&t.coordinates&&Array.isArray(n.geometry.coordinates)?[n.geometry.coordinates[0],n.geometry.coordinates[1]]:typeof n.x=="number"&&typeof n.y=="number"?[n.x,n.y]:null:null}const xM={blues:nd,reds:uw,greens:ow,oranges:dw,purples:lw,greys:aw,ylOrRd:ed,ylGnBu:ew,rdYlGn:Q2,viridis:pw,plasma:mw,inferno:gw};class bM extends Ut{constructor(t){super(t),this.zoomBehavior=null,this.mapGroup=null,this.featurePaths=null,this.dataMap=new Map,this.globeProjection=null,this.globePathGen=null,this.autoRotateTimer=null}destroy(){this.autoRotateTimer&&(this.autoRotateTimer.stop(),this.autoRotateTimer=null),super.destroy()}render(){var L;const{plotArea:t}=this.context,e=this.config,i=e.mapData;if(!i){this.group.append("text").attr("x",t.width/2).attr("y",t.height/2).attr("text-anchor","middle").attr("fill","#999").text("Map data not provided");return}const{projection:r,pathGen:o,features:s,projName:a}=cl(i,e.projection,t,e.mapDataObject);this.dataMap.clear();const l=e.joinBy||["hc-key","code"],c=Array.isArray(l)?l:[l,l],h=c[0],f=c.length>1?c[1]:c[0];for(const I of this.data){const E=I[f]||I.code||I["hc-key"]||I.name;E&&this.dataMap.set(String(E),I)}const u=e.colorAxis||{},d=this.data.map(I=>I.y??I.value??0).filter(I=>I!=null),p=u.min??(d.length?Math.min(...d):0),y=u.max??(d.length?Math.max(...d):1);if(Array.isArray(u.stops)&&u.stops.length>=2){const I=y-p||1,E=u.stops.map(w=>p+w[0]*I),C=u.stops.map(w=>w[1]),S=ke().domain(E).range(C).clamp(!0);this.colorScale=w=>S(w)}else if(u.minColor&&u.maxColor){const I=mi(u.minColor,u.maxColor),E=this.makeAxisNorm(u,p,y);this.colorScale=C=>I(E(C))}else{const I=u.colorScheme||"blues",E=xM[I]||nd,C=this.makeAxisNorm(u,p,y);this.colorScale=S=>E(C(S))}const g=e.nullColor??"#f0f0f0",m=e.allAreas!==!1,x=e.borderColor??"#cccccc",v=e.borderWidth??.5,b=`katucharts-map-clip-${Math.random().toString(36).slice(2,8)}`;this.group.append("defs").append("clipPath").attr("id",b).append("rect").attr("width",t.width).attr("height",t.height);const M=this.group.append("g").attr("clip-path",`url(#${b})`).attr("class","katucharts-map-clip");this.mapGroup=M.append("g").attr("class","katucharts-map-container katucharts-mapzoom");const P=m?s:s.filter(I=>{const E=this.getFeatureKey(I,h);return this.dataMap.has(E)}),$=this.context.animate;this.featurePaths=this.mapGroup.selectAll(".katucharts-map-feature").data(P).join("path").attr("class","katucharts-map-feature").attr("d",o).attr("stroke",x).attr("stroke-width",v).attr("stroke-linejoin","round").style("cursor","pointer"),$?this.featurePaths.attr("fill",g).attr("fill-opacity",0).transition().duration(vt).ease(pt).attr("fill-opacity",1).attr("fill",I=>this.getFeatureColor(I,h,g)):this.featurePaths.attr("fill",I=>this.getFeatureColor(I,h,g)),this.attachMapHover(h,x,v,g),this.renderMapLabels(o,P,h),u.enabled!==!1&&d.length>0&&this.renderColorAxis(p,y,u),al(a,e)?this.setupGlobeMode(r,o,s,h,g,x,v,e):((L=e.mapNavigation)==null?void 0:L.enabled)!==!1&&this.setupMapNavigation(r,o)}makeAxisNorm(t,e,i){if(t.type==="logarithmic"&&e>0&&i>0){const o=To().domain([e,i]).clamp(!0);return s=>o(Math.max(s,e))}const r=ke().domain([e,i]).clamp(!0);return o=>r(o)}getFeatureKey(t,e){var i,r,o;return String(((i=t.properties)==null?void 0:i[e])||((r=t.properties)==null?void 0:r["hc-key"])||((o=t.properties)==null?void 0:o.name)||t.id||"")}getFeatureColor(t,e,i){const r=this.getFeatureKey(t,e),o=this.dataMap.get(r);if(o){if(o.color)return o.color;const s=o.y??o.value;if(s!=null)return this.colorScale(s)}return i}attachMapHover(t,e,i,r){var h,f,u,d,p,y,g,m;const o=this.config,s=(f=(h=o.states)==null?void 0:h.hover)==null?void 0:f.color,a=((d=(u=o.states)==null?void 0:u.hover)==null?void 0:d.borderColor)??"#333333",l=((y=(p=o.states)==null?void 0:p.hover)==null?void 0:y.borderWidth)??1.5,c=((m=(g=o.states)==null?void 0:g.hover)==null?void 0:m.brightness)??.2;this.featurePaths.on("mouseover",(x,v)=>{var I,E,C;const b=st(x.currentTarget),k=this.getFeatureKey(v,t),M=this.dataMap.get(k),P=b.attr("fill");if(s)b.transition("hover").duration(Z).ease(j).attr("fill",s);else{const S=((E=(I=se(P))==null?void 0:I.brighter(c))==null?void 0:E.toString())||P;b.transition("hover").duration(Z).ease(j).attr("fill",S)}b.attr("stroke",a).attr("stroke-width",l),b.raise(),this.featurePaths.interrupt("highlight"),this.featurePaths.filter(S=>S!==v).transition("highlight").duration(Z).ease(j).attr("opacity",.7);const $=((C=v.properties)==null?void 0:C.name)||k,_=M?{name:M.name??$,y:M.y??M.value,...M}:{name:$},L=x.currentTarget.getBBox();this.context.events.emit("point:mouseover",{point:_,index:0,series:this,event:x,plotX:L.x+L.width/2,plotY:L.y+L.height/2})}).on("mouseout",(x,v)=>{var $;const b=st(x.currentTarget),k=this.getFeatureColor(v,t,r);b.transition("hover").duration(Z).ease(j).attr("fill",k),b.attr("stroke",e).attr("stroke-width",i),this.featurePaths.interrupt("highlight"),this.featurePaths.transition("highlight").duration(Z).ease(j).attr("opacity",1);const M=this.getFeatureKey(v,t),P=this.dataMap.get(M)||{name:(($=v.properties)==null?void 0:$.name)||M};this.context.events.emit("point:mouseout",{point:P,index:0,series:this,event:x})}).on("click",(x,v)=>{var M;const b=this.getFeatureKey(v,t),k=this.dataMap.get(b)||{name:((M=v.properties)==null?void 0:M.name)||b};this.context.events.emit("point:click",{point:k,index:0,series:this,event:x})})}renderMapLabels(t,e,i){var c,h,f;const r=this.config.dataLabels||this.config.dataLabels;if(!(r!=null&&r.enabled))return;const o=((c=r.style)==null?void 0:c.fontSize)||kt,s=this.autoLabelColor(r.color||((h=r.style)==null?void 0:h.color)),a=this.labelHalo(),l=((f=r.filter)==null?void 0:f.property)==="hasData";this.mapGroup.selectAll(".katucharts-map-label").data(e).join("text").attr("class","katucharts-map-label").attr("transform",u=>{const d=t.centroid(u);return isFinite(d[0])?`translate(${d[0]},${d[1]})`:"translate(-9999,-9999)"}).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",o).attr("fill",s).style("pointer-events","none").style("text-shadow",a).text(u=>{var y,g,m,x,v;const d=this.getFeatureKey(u,i),p=this.dataMap.get(d);return l&&!p?"":r.formatter?r.formatter.call({point:p||{name:(y=u.properties)==null?void 0:y.name},series:{name:this.config.name},x:(g=u.properties)==null?void 0:g.name,y:(p==null?void 0:p.y)??(p==null?void 0:p.value)}):r.format?de(Kt(r.format,{point:p||{name:(m=u.properties)==null?void 0:m.name},series:{name:this.config.name},x:(x=u.properties)==null?void 0:x.name,y:(p==null?void 0:p.y)??(p==null?void 0:p.value)})):(p==null?void 0:p.name)||((v=u.properties)==null?void 0:v.name)||""})}renderColorAxis(t,e,i){const{plotArea:r}=this.context,o=i.layout==="horizontal"?"bottom":"right",s=i.labels||{},a=i.title;o==="bottom"?this.renderHorizontalColorAxis(t,e,i,s,a):this.renderVerticalColorAxis(t,e,i,s,a)}renderVerticalColorAxis(t,e,i,r,o){var k,M;const{plotArea:s}=this.context,a=i.width??12,l=i.height??s.height*.5,c=s.width+15,h=(s.height-l)/2,f=60,u=this.group.append("g").attr("class","katucharts-map-color-axis"),d=u.append("defs"),p=`katucharts-map-grad-${Math.random().toString(36).slice(2,8)}`,y=d.append("linearGradient").attr("id",p).attr("x1","0%").attr("y1","100%").attr("x2","0%").attr("y2","0%");for(let P=0;P<=f;P++){const $=P/f,_=t+$*(e-t);y.append("stop").attr("offset",`${$*100}%`).attr("stop-color",this.colorScale(_))}u.append("rect").attr("x",c).attr("y",h).attr("width",a).attr("height",l).attr("fill",`url(#${p})`).attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",2);const g=((k=r.style)==null?void 0:k.fontSize)||kt,m=this.autoLabelColor((M=r.style)==null?void 0:M.color),x=r.formatter,v=P=>x?x.call({value:P}):String(Math.round(P));u.append("text").attr("x",c+a+4).attr("y",h+l).attr("font-size",g).attr("fill",m).attr("dominant-baseline","auto").text(v(t)),u.append("text").attr("x",c+a+4).attr("y",h).attr("font-size",g).attr("fill",m).attr("dominant-baseline","hanging").text(v(e));const b=(t+e)/2;u.append("text").attr("x",c+a+4).attr("y",h+l/2).attr("font-size",g).attr("fill",m).attr("dominant-baseline","middle").text(v(b)),o!=null&&o.text&&u.append("text").attr("x",c+a/2).attr("y",h-8).attr("text-anchor","middle").attr("font-size","10px").attr("fill",this.autoLabelColor()).text(o.text)}renderHorizontalColorAxis(t,e,i,r,o){var b,k;const{plotArea:s}=this.context,a=i.width??s.width*.5,l=i.height??12,c=(s.width-a)/2,h=s.height+25,f=60,u=this.group.append("g").attr("class","katucharts-map-color-axis"),d=u.append("defs"),p=`katucharts-map-grad-${Math.random().toString(36).slice(2,8)}`,y=d.append("linearGradient").attr("id",p).attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");for(let M=0;M<=f;M++){const P=M/f,$=t+P*(e-t);y.append("stop").attr("offset",`${P*100}%`).attr("stop-color",this.colorScale($))}u.append("rect").attr("x",c).attr("y",h).attr("width",a).attr("height",l).attr("fill",`url(#${p})`).attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",2);const g=((b=r.style)==null?void 0:b.fontSize)||kt,m=this.autoLabelColor((k=r.style)==null?void 0:k.color),x=r.formatter,v=M=>x?x.call({value:M}):String(Math.round(M));u.append("text").attr("x",c).attr("y",h+l+12).attr("text-anchor","start").attr("font-size",g).attr("fill",m).text(v(t)),u.append("text").attr("x",c+a).attr("y",h+l+12).attr("text-anchor","end").attr("font-size",g).attr("fill",m).text(v(e)),o!=null&&o.text&&u.append("text").attr("x",c+a/2).attr("y",h-6).attr("text-anchor","middle").attr("font-size","10px").attr("fill",this.autoLabelColor()).text(o.text)}setupMapNavigation(t,e){const{plotArea:i}=this.context,r=this.config.mapNavigation||{},o=r.enableButtons!==!1,s=r.enableMouseWheelZoom!==!1,a=r.enableDoubleClickZoom!==!1,l=r.enableDrag!==!1,c=r.maxZoom??16,h=i.width/2,f=i.height/2;this.zoomBehavior=yf().scaleExtent([1,c]).on("zoom",p=>{this.context.chartGroup.selectAll(".katucharts-mapzoom").attr("transform",p.transform)});const u=this.group.select(".katucharts-map-clip"),d=u.empty()?this.group:u;d.insert("rect",":first-child").attr("width",i.width).attr("height",i.height).attr("fill","none").style("pointer-events","all"),(s||a||l)&&(d.call(this.zoomBehavior),s||d.on("wheel.zoom",null),a||d.on("dblclick.zoom",null),l||(d.on("mousedown.zoom",null),d.on("touchstart.zoom",null))),o&&this.renderNavButtons(d,h,f)}renderNavButtons(t,e,i){var P,$;const{plotArea:r}=this.context,o=this.config.mapNavigation||{},s=o.buttonOptions||{},a=s.theme||{},l=o.buttons||{},c=24,h=4,f=10,u=c*2+h,d=s.align||"left",p=s.verticalAlign||"top",y=(d==="right"?r.width-c-f:f)+(s.x??0),g=(p==="bottom"?r.height-u-f:f)+(s.y??0),m=a.fill||"#ffffff",x=a.stroke||"#e0e0e0",v=a.style&&a.style.color||s.symbolStroke||"#3f3f46",b=this.group.append("g").attr("class","katucharts-map-nav"),k=[e,i],M=(_,L,I)=>{const E=b.append("g").style("cursor","pointer").on("click",I);return E.append("rect").attr("x",y).attr("y",_).attr("width",c).attr("height",c).attr("fill",m).attr("stroke",x).attr("stroke-width",1).attr("rx",4),E.append("text").attr("x",y+c/2).attr("y",_+c/2+1).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size","17px").attr("fill",v).style("user-select","none").text(L),E.on("mouseover",function(){st(this).select("rect").attr("fill","#f5f5f5")}).on("mouseout",function(){st(this).select("rect").attr("fill",m)}),E};M(g,((P=l.zoomIn)==null?void 0:P.text)||"+",()=>{t.transition().duration(300).call(this.zoomBehavior.scaleBy,1.5,k)}),M(g+c+h,(($=l.zoomOut)==null?void 0:$.text)||"−",()=>{t.transition().duration(300).call(this.zoomBehavior.scaleBy,1/1.5,k)})}setupGlobeMode(t,e,i,r,o,s,a,l){const{plotArea:c}=this.context,h=c.width/2,f=c.height/2;this.globeProjection=t,this.globePathGen=e;const u=ll(t,c),d=l.options3d||{},p=d.oceanColor??"#d4f1f9",y=d.atmosphereColor??"rgba(100,180,255,0.15)",g=d.graticule!==!1,m=d.graticuleColor??"#ccc",x=d.graticuleOpacity??.4,v=d.autoRotate!==!1,b=d.rotateSpeed??.3,k=d.shadow!==!1,M=this.mapGroup.append("defs"),P=`katucharts-globe-glow-${Math.random().toString(36).slice(2,8)}`,$=M.append("radialGradient").attr("id",P);if($.append("stop").attr("offset","70%").attr("stop-color",y),$.append("stop").attr("offset","100%").attr("stop-color","rgba(100,180,255,0)"),this.mapGroup.insert("circle",":first-child").attr("cx",h).attr("cy",f).attr("r",u+15).attr("fill",`url(#${P})`).attr("class","katucharts-globe-atmosphere"),k&&this.mapGroup.insert("ellipse",":first-child").attr("cx",h+8).attr("cy",f+u+18).attr("rx",u*.6).attr("ry",8).attr("fill","rgba(0,0,0,0.12)").attr("class","katucharts-globe-shadow"),this.mapGroup.insert("circle",".katucharts-map-feature").attr("cx",h).attr("cy",f).attr("r",u).attr("fill",p).attr("stroke","#999").attr("stroke-width",.5).attr("class","katucharts-globe-ocean"),g){const w=$k().step([15,15]);this.mapGroup.insert("path",".katucharts-map-feature").datum(w()).attr("d",e).attr("fill","none").attr("stroke",m).attr("stroke-width",.3).attr("stroke-opacity",x).attr("class","katucharts-globe-graticule")}this.featurePaths.attr("d",e);const _=`katucharts-globe-spec-${Math.random().toString(36).slice(2,8)}`,L=M.append("radialGradient").attr("id",_).attr("cx","35%").attr("cy","25%");L.append("stop").attr("offset","0%").attr("stop-color","rgba(255,255,255,0.35)"),L.append("stop").attr("offset","50%").attr("stop-color","rgba(255,255,255,0.05)"),L.append("stop").attr("offset","100%").attr("stop-color","rgba(255,255,255,0)"),this.mapGroup.append("circle").attr("cx",h).attr("cy",f).attr("r",u).attr("fill",`url(#${_})`).style("pointer-events","none").attr("class","katucharts-globe-specular");const I=this;let E=null,C=v;const S=gf().on("start",w=>{const A=t.rotate();E=[A[0],A[1],w.x],I.autoRotateTimer&&(C=!0,I.autoRotateTimer.stop(),I.autoRotateTimer=null)}).on("drag",w=>{if(!E)return;const A=.4,T=(w.x-E[2])*A,F=E[0]+T,D=Math.max(-90,Math.min(90,E[1]-(w.y-w.subject.y)*A));t.rotate([F,D]),I.redrawGlobe()}).on("end",()=>{E=null,C&&v&&I.startAutoRotate(t,b)});this.group.call(S),this.group.style("cursor","grab"),this.group.on("wheel",w=>{w.preventDefault();const A=t.scale(),T=w.deltaY>0?.95:1.05,F=Math.max(u*.5,Math.min(u*8,A*T));t.scale(F),I.redrawGlobe()}),v&&this.startAutoRotate(t,b)}startAutoRotate(t,e){const i=this;this.autoRotateTimer&&(this.autoRotateTimer.stop(),this.autoRotateTimer=null);let r=0;this.autoRotateTimer=Uo(o=>{const s=r?Math.min(o-r,64):16;r=o;const a=t.rotate();t.rotate([a[0]+e*(s/16),a[1]]),i.redrawGlobe()})}redrawGlobe(){if(!this.globePathGen||!this.featurePaths||!this.globeProjection)return;const t=this.globeProjection,[e,i]=t.translate(),r=t.scale();this.featurePaths.attr("d",this.globePathGen),this.mapGroup.selectAll(".katucharts-globe-graticule").attr("d",this.globePathGen),this.mapGroup.select(".katucharts-globe-ocean").attr("cx",e).attr("cy",i).attr("r",r),this.mapGroup.select(".katucharts-globe-atmosphere").attr("cx",e).attr("cy",i).attr("r",r+15),this.mapGroup.select(".katucharts-globe-specular").attr("cx",e).attr("cy",i).attr("r",r),this.mapGroup.select(".katucharts-globe-shadow").attr("cx",e+8).attr("cy",i+r+18).attr("rx",r*.6),this.mapGroup.selectAll(".katucharts-map-label").attr("transform",o=>{const s=this.globePathGen.centroid(o);return isFinite(s[0])?`translate(${s[0]},${s[1]})`:"translate(-9999,-9999)"}).attr("display",o=>{const s=this.globePathGen.centroid(o);return isFinite(s[0])?null:"none"})}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class vM extends Ut{constructor(t){super(t)}resolveMapData(){const t=this.config;if(t.mapData)return t.mapData;for(const e of this.context.allSeries||[]){const i=e.config;if(e!==this&&(i!=null&&i.mapData))return i.mapData}return null}render(){var v,b,k;const t=this.config,{plotArea:e}=this.context,i=this.resolveMapData();if(!i)return;const{projection:r,projName:o}=cl(i,t.projection,e,t.mapDataObject);al(o,t)&&ll(r,e);const s=this.group.append("g").attr("class","katucharts-mapzoom katucharts-mappoint-layer"),a=t.marker||{},l=a.enabled!==!1,c=a.radius??5,h=a.lineColor??"#ffffff",f=a.lineWidth??1,u=t.color||this.getColor(),d=this.context.animate,p=t.dataLabels,y=!!(p!=null&&p.enabled),g=this.autoLabelColor((p==null?void 0:p.color)||((v=p==null?void 0:p.style)==null?void 0:v.color)),m=((b=p==null?void 0:p.style)==null?void 0:b.fontSize)||kt,x=((k=p==null?void 0:p.style)==null?void 0:k.fontWeight)||"600";this.data.forEach((M,P)=>{var w;M.name==null&&M.id!=null&&(M.name=M.id);const $=hl(M);if(!$)return;const _=r($);if(!_||!isFinite(_[0])||!isFinite(_[1]))return;const[L,I]=_,E=M.color||u,C=((w=M.marker)==null?void 0:w.radius)??c,S=s.append("g").attr("class","katucharts-mappoint");if(l){const A=S.append("circle").attr("class","katucharts-mappoint-marker").attr("cx",L).attr("cy",I).attr("fill",E).attr("stroke",h).attr("stroke-width",f).style("cursor",t.cursor||"pointer").attr("r",d?0:C);d&&A.transition().duration(vt).delay(P*12).ease(pt).attr("r",C),A.on("mouseover",T=>{var F,D;st(T.currentTarget).transition("hover").duration(Z).ease(j).attr("r",C*1.4),this.context.events.emit("point:mouseover",{point:M,index:P,series:this,event:T,plotX:L,plotY:I}),(D=(F=M.events)==null?void 0:F.mouseOver)==null||D.call(M,T)}).on("mouseout",T=>{var F,D;st(T.currentTarget).transition("hover").duration(Z).ease(j).attr("r",C),this.context.events.emit("point:mouseout",{point:M,index:P,series:this,event:T}),(D=(F=M.events)==null?void 0:F.mouseOut)==null||D.call(M,T)}).on("click",T=>{var F,D,R,z,B,W,K;this.context.events.emit("point:click",{point:M,index:P,series:this,event:T}),(D=(F=M.events)==null?void 0:F.click)==null||D.call(M,T),(B=(z=(R=t.point)==null?void 0:R.events)==null?void 0:z.click)==null||B.call(M,T),(K=(W=t.events)==null?void 0:W.click)==null||K.call(this,T)})}if(y){const A=this.formatLabel(M,P);A&&s.append("text").attr("class","katucharts-mappoint-label").attr("x",L).attr("y",I-C-3).attr("text-anchor","middle").attr("dominant-baseline","auto").attr("font-size",m).attr("font-weight",x).attr("fill",g).style("pointer-events","none").style("text-shadow",this.labelHalo()).text(A)}})}formatLabel(t,e){const i=this.config.dataLabels,r={point:t,series:{name:this.config.name},x:t.id??t.name,y:t.y??t.value};return i!=null&&i.formatter?i.formatter.call(r):i!=null&&i.format?de(Kt(i.format,r)):t.id||t.name||""}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class wM extends Ut{constructor(t){super(t)}resolveMapData(){const t=this.config;if(t.mapData)return t.mapData;for(const e of this.context.allSeries||[]){const i=e.config;if(e!==this&&(i!=null&&i.mapData))return i.mapData}return null}buildIdMap(){const t=new Map;for(const e of this.context.allSeries||[])if(e!==this)for(const i of e.data){const r=hl(i),o=i.id??i.name;o!=null&&r&&t.set(String(o),r)}return t}resolveEndpoint(t,e){return t==null?null:Array.isArray(t)&&typeof t[0]=="number"?[t[0],t[1]]:typeof t=="object"?hl(t):e.get(String(t))||null}render(){var g;const t=this.config,{plotArea:e}=this.context,i=this.resolveMapData();if(!i)return;const{projection:r,projName:o}=cl(i,t.projection,e,t.mapDataObject);al(o,t)&&ll(r,e);const s=this.buildIdMap(),a=this.group.append("g").attr("class","katucharts-mapzoom katucharts-flowmap-layer"),l=t.color||this.getColor(),c=t.fillOpacity??.5,h=t.curveFactor??.3,f=((g=t.markerEnd)==null?void 0:g.enabled)!==!1,u=this.context.animate,d=this.data.map(m=>m.weight??m.y??m.value??1),p=Math.max(...d,1),y=t.width!=null?t.width<=1?t.width*40:t.width:16;this.data.forEach((m,x)=>{const v=m,b=this.resolveEndpoint(v.from,s),k=this.resolveEndpoint(v.to,s);if(!b||!k)return;v.name==null&&typeof v.from=="string"&&typeof v.to=="string"&&(v.name=`${v.from} → ${v.to}`);const M=r(b),P=r(k);if(!M||!P||!isFinite(M[0])||!isFinite(P[0]))return;const $=v.weight??v.y??v.value??1,_=Math.max(2,y*($/p)),L=v.color||l,{d:I,mid:E,tip:C,tipAngle:S}=this.buildFlowPath(M,P,_,h),w=a.append("path").attr("class","katucharts-flowmap-link").attr("d",I).attr("fill",L).attr("fill-opacity",u?0:c).attr("stroke","none").style("cursor",t.cursor||"pointer");if(u&&w.transition().duration(vt).delay(x*30).ease(pt).attr("fill-opacity",c),f){const A=_*1.1+3,T=a.append("path").attr("class","katucharts-flowmap-arrow").attr("d",this.arrowHead(C,S,A)).attr("fill",L).attr("fill-opacity",u?0:c).style("pointer-events","none");u&&T.transition().duration(vt).delay(x*30).ease(pt).attr("fill-opacity",c)}w.on("mouseover",A=>{var T,F;st(A.currentTarget).transition("hover").duration(Z).ease(j).attr("fill-opacity",Math.min(1,c+.3)),this.context.events.emit("point:mouseover",{point:m,index:x,series:this,event:A,plotX:E[0],plotY:E[1]}),(F=(T=v.events)==null?void 0:T.mouseOver)==null||F.call(m,A)}).on("mouseout",A=>{var T,F;st(A.currentTarget).transition("hover").duration(Z).ease(j).attr("fill-opacity",c),this.context.events.emit("point:mouseout",{point:m,index:x,series:this,event:A}),(F=(T=v.events)==null?void 0:T.mouseOut)==null||F.call(m,A)}).on("click",A=>{var T,F,D,R,z,B,W;this.context.events.emit("point:click",{point:m,index:x,series:this,event:A}),(F=(T=v.events)==null?void 0:T.click)==null||F.call(m,A),(z=(R=(D=t.point)==null?void 0:D.events)==null?void 0:R.click)==null||z.call(m,A),(W=(B=t.events)==null?void 0:B.click)==null||W.call(this,A)})})}buildFlowPath(t,e,i,r){const o=e[0]-t[0],s=e[1]-t[1],a=Math.hypot(o,s)||1,l=-s/a,c=o/a,h=[(t[0]+e[0])/2+l*r*a,(t[1]+e[1])/2+c*r*a],f=24,u=Math.max(.6,i*.12),d=i/2,p=[],y=[];let g=t;for(let k=0;k<=f;k++){const M=k/f,P=1-M,$=P*P*t[0]+2*P*M*h[0]+M*M*e[0],_=P*P*t[1]+2*P*M*h[1]+M*M*e[1],L=$-g[0],I=_-g[1],E=Math.hypot(L,I)||1,C=-I/E,S=L/E,w=u+(d-u)*M;p.push([$+C*w,_+S*w]),y.push([$-C*w,_-S*w]),g=[$,_]}const m=.25*t[0]+.5*h[0]+.25*e[0],x=.25*t[1]+.5*h[1]+.25*e[1],v=Math.atan2(e[1]-h[1],e[0]-h[0]);return{d:"M"+p.map(k=>`${k[0].toFixed(2)},${k[1].toFixed(2)}`).join("L")+"L"+y.reverse().map(k=>`${k[0].toFixed(2)},${k[1].toFixed(2)}`).join("L")+"Z",mid:[m,x],tip:e,tipAngle:v}}arrowHead(t,e,i){const r=e,o=r+Math.PI,s=.5,a=[t[0]+Math.cos(r)*i*.6,t[1]+Math.sin(r)*i*.6],l=[t[0]+Math.cos(o+s)*i,t[1]+Math.sin(o+s)*i],c=[t[0]+Math.cos(o-s)*i,t[1]+Math.sin(o-s)*i];return`M${a[0].toFixed(2)},${a[1].toFixed(2)}L${l[0].toFixed(2)},${l[1].toFixed(2)}L${c[0].toFixed(2)},${c[1].toFixed(2)}Z`}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}const bp=["#5b9bd5","#ed7d31","#70ad47","#9e5fa0","#ffc000","#44546a"],kM=/^(.+?)\s+(\([^()]+\))\s*$/,vp=1.15;function wp(n,t,e){for(;n.firstChild;)n.removeChild(n.firstChild);let i;if(t.includes(`
8
8
  `))i=t.split(`
9
9
  `);else{const a=t.match(kM);i=a?[a[1],a[2]]:[t]}const r="http://www.w3.org/2000/svg",o=i.length,s=o>1?-((o-1)*vp)/2:0;i.forEach((a,l)=>{const c=document.createElementNS(r,"tspan");c.setAttribute("x",String(e)),c.setAttribute("dy",`${l===0?s:vp}em`),c.textContent=a,n.appendChild(c)})}const MM={Solid:"none",ShortDash:"6,2",ShortDot:"2,2",ShortDashDot:"6,2,2,2",Dot:"2,6",Dash:"8,6",LongDash:"16,6",DashDot:"8,6,2,6",LongDashDot:"16,6,2,6",LongDashDotDot:"16,6,2,6,2,6"};class AM extends Ut{constructor(t){super(t),this.selectedIndices=new Set,t.showInLegend=!1,t.clip=!1}render(){var $;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.data,o=r.filter(_=>{var L;return((L=_.sets)==null?void 0:L.length)===1}),s=r.filter(_=>{var L;return((L=_.sets)==null?void 0:L.length)>=2});if(o.length===0)return;const a=t.width/2,l=t.height/2,c=t.height/2*.92,h=Math.max(...o.map(_=>_.value||_.y||1)),f=this.config.opacity??.25,u=Math.min(1,f+.25),d=.4,p=this.config.borderColor,y=this.config.borderWidth??0,g=this.resolveDashStyle(this.config.borderDashStyle),m=this.config.allowPointSelect===!0,x=new Map;this.layoutSets(o,s,x,a,l,c,h,e,t);const v=Array.from(x.values()),b=[];for(const _ of o){const L=x.get(_.sets[0]);if(!L)continue;let I=L.cx,E=L.cy;const C=v.filter(S=>S.id!==L.id);if(C.length>0){let S=0,w=0;for(const T of C){const F=L.cx-T.cx,D=L.cy-T.cy,R=Math.sqrt(F*F+D*D)||1;S+=F/R,w+=D/R}const A=Math.sqrt(S*S+w*w)||1;I=L.cx+S/A*L.r*.7,E=L.cy+w/A*L.r*.7}b.push({sets:_.sets,value:_.value||_.y||0,name:_.name||_.sets[0],color:_.color||L.color,path:this.circlePath(L.cx,L.cy,L.r),labelX:I,labelY:E,data:_,order:1,key:_.sets.join("_")})}for(const _ of s){if(_.sets.length!==2)continue;const L=x.get(_.sets[0]),I=x.get(_.sets[1]);if(!L||!I)continue;const E=this.lensPath(L,I);if(!E)continue;const C=_.color||this.blendColors(L.color,I.color);b.push({sets:_.sets,value:_.value||_.y||0,name:_.name||`${_.sets.join(" ∩ ")} (${_.value||_.y||0})`,color:C,path:E.path,labelX:E.cx,labelY:E.cy,data:_,order:2,key:[..._.sets].sort().join("_")})}for(const _ of s){if(_.sets.length!==3)continue;const L=_.sets.map(C=>x.get(C)).filter(Boolean);if(L.length<3)continue;const I=this.triIntersectionPath(L[0],L[1],L[2]);if(!I)continue;const E=_.color||this.blendColors(L[0].color,L[1].color,L[2].color);b.push({sets:_.sets,value:_.value||_.y||0,name:_.name||`${_.sets.join(" ∩ ")} (${_.value||_.y||0})`,color:E,path:I.path,labelX:I.cx,labelY:I.cy,data:_,order:3,key:[..._.sets].sort().join("_")})}b.sort((_,L)=>_.order-L.order);const M=((($=this.config.accessibility)==null?void 0:$.point)||{}).descriptionFormatter,P=this.group.selectAll(".katucharts-venn-area").data(b,_=>_.key).join(_=>{const L=_.append("g").attr("class",I=>`katucharts-venn-area katucharts-venn-${I.sets.length===1?"circle-area":"intersection-area"}`).attr("data-venn-sets",I=>I.sets.join("_"));return L.append("path"),L},_=>_,_=>_.remove());P.attr("class",_=>`katucharts-venn-area katucharts-venn-${_.sets.length===1?"circle-area":"intersection-area"}`),P.select("path").attr("d",_=>_.path).attr("fill",_=>_.color).attr("fill-opacity",_=>_.sets.length===1?f:0).attr("stroke",_=>_.sets.length===1?p||_.color:"none").attr("stroke-width",_=>_.sets.length===1?y:0).attr("stroke-dasharray",g).attr("role","img").attr("aria-label",_=>M?M({name:_.name,value:_.value,sets:_.sets}):`${_.name}: ${_.value}`).style("cursor",this.config.cursor||"pointer"),P.sort((_,L)=>_.order-L.order),P.each(function(_){if(_.sets.length>=2){const I=this.querySelector("path");if(I)try{const E=I.getBBox();E.width>0&&E.height>0&&(_.labelX=E.x+E.width/2,_.labelY=E.y+E.height/2)}catch{}}}),i&&P.select("path").attr("opacity",0).transition().duration(vt).ease(pt).delay((_,L)=>L*Wt).attr("opacity",1),this.config.enableMouseTracking!==!1&&this.attachEvents(P,b,f,u,d,m),this.renderLabels(b,i??!1)}resolveDashStyle(t){return t&&MM[t]||"none"}attachEvents(t,e,i,r,o,s){var l,c;(c=(l=this.config.dataLabels)==null?void 0:l.intersections)==null||c.enabled;const a=()=>this.group.selectAll(".katucharts-venn-inter-label");t.on("mouseover",(h,f)=>{var y,g,m;const u=e.indexOf(f),d=f.sets.length>=2;st(h.currentTarget).select("path").transition("hover").duration(Z).ease(j).attr("fill-opacity",d?o:r),d&&a().filter(x=>x.sets.length===f.sets.length&&x.sets.every(v=>f.sets.includes(v))).transition("label").duration(Z).ease(j).attr("opacity",1),this.context.events.emit("point:mouseover",{point:{name:f.name,y:f.value,value:f.value,sets:f.sets},index:u,series:this,event:h,plotX:f.labelX,plotY:f.labelY}),(m=(g=(y=f.data)==null?void 0:y.events)==null?void 0:g.mouseOver)==null||m.call(f.data,h)}).on("mouseout",(h,f)=>{var y,g,m;const u=e.indexOf(f),d=f.sets.length>=2;st(h.currentTarget).select("path").transition("hover").duration(Z).ease(j).attr("fill-opacity",d?0:i),a().filter(function(){return this.__autoHidden===!0}).transition("label").duration(Z).ease(j).attr("opacity",0),this.context.events.emit("point:mouseout",{point:{name:f.name,y:f.value,value:f.value,sets:f.sets},index:u,series:this,event:h}),(m=(g=(y=f.data)==null?void 0:y.events)==null?void 0:g.mouseOut)==null||m.call(f.data,h)}).on("click",(h,f)=>{var p,y,g,m,x,v,b,k,M,P,$,_,L;const u=e.indexOf(f);s&&(this.selectedIndices.has(u)?(this.selectedIndices.delete(u),(g=(y=(p=f.data)==null?void 0:p.events)==null?void 0:y.unselect)==null||g.call(f.data,h)):(this.selectedIndices.add(u),(v=(x=(m=f.data)==null?void 0:m.events)==null?void 0:x.select)==null||v.call(f.data,h))),this.context.events.emit("point:click",{point:{name:f.name,y:f.value,value:f.value,sets:f.sets},index:u,series:this,event:h}),(M=(k=(b=f.data)==null?void 0:b.events)==null?void 0:k.click)==null||M.call(f.data,h),($=(P=this.config.events)==null?void 0:P.click)==null||$.call(this,h);const d=(L=(_=this.config.point)==null?void 0:_.events)==null?void 0:L.click;d&&d.call({...f.data,sets:f.sets,name:f.name,value:f.value},h)})}renderLabels(t,e){var u,d,p,y;const i=this.config.dataLabels||{},r=i.enabled!==!1,o=((u=i.intersections)==null?void 0:u.enabled)!==!1,s=((d=i.style)==null?void 0:d.fontSize)||kt,a=i.color||((p=i.style)==null?void 0:p.color)||xe,l=((y=i.style)==null?void 0:y.fontWeight)||"bold",c=t.filter(g=>g.sets.length===1),h=t.filter(g=>g.sets.length>=2);if(r){const g=this.group.selectAll(".katucharts-venn-set-label").data(c,m=>m.key).join("text").attr("class","katucharts-venn-set-label").attr("x",m=>m.labelX).attr("y",m=>m.labelY).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",s).attr("font-weight",l).attr("fill",a).style("pointer-events","none").style("text-shadow","0 0 4px #fff, 0 0 4px #fff");g.each((m,x,v)=>{const b=i.formatter?i.formatter.call({point:{name:m.name,y:m.value,sets:m.sets},series:{name:this.config.name},x:m.name,y:m.value}):m.name;wp(v[x],String(b??""),m.labelX)}),e&&g.attr("opacity",0).transition().duration(vt).ease(pt).attr("opacity",1)}const f=this.group.selectAll(".katucharts-venn-inter-label").data(h,g=>g.key).join("text").attr("class","katucharts-venn-inter-label").attr("x",g=>g.labelX).attr("y",g=>g.labelY).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",kt).attr("fill",xe).style("pointer-events","none").style("text-shadow","0 0 3px #fff, 0 0 3px #fff").attr("opacity",o?1:0);if(f.each((g,m,x)=>{wp(x[m],g.name,g.labelX)}),o){const g=this.group;f.each(function(m){const x=this,v=g.select(`[data-venn-sets="${m.sets.join("_")}"]`).node(),b=v==null?void 0:v.querySelector("path");if(b)try{const k=x.getBBox(),M=b.getBBox(),P=k.width<=M.width*.95&&k.height<=M.height*.95;x.setAttribute("opacity",P?"1":"0"),x.__autoHidden=!P}catch{}})}}layoutSets(t,e,i,r,o,s,a,l,c){var C,S;const h=t.length,f=t.map(w=>w.sets[0]),u=t.map(w=>s*Math.sqrt((w.value||w.y||1)/a)),d=new Map;for(const w of e){if(((C=w.sets)==null?void 0:C.length)!==2)continue;const[A,T]=w.sets,F=f.indexOf(A),D=f.indexOf(T);if(F<0||D<0)continue;const R=w.value||w.y||0;if(R<=0)d.set(`${F}-${D}`,u[F]+u[D]+5);else{const z=Math.PI*s*s*(R/a);d.set(`${F}-${D}`,this.findDistance(u[F],u[D],z))}}const p=new Array(h),y=new Set,g=new Array(h).fill(0);for(const w of e){if(((S=w.sets)==null?void 0:S.length)!==2)continue;const A=w.value||w.y||0;for(const T of w.sets){const F=f.indexOf(T);F>=0&&(g[F]+=A)}}const m=Array.from({length:h},(w,A)=>A).sort((w,A)=>g[A]-g[w]);p[m[0]]=[0,0],y.add(m[0]);for(let w=1;w<h;w++){const A=m[w];let T=[0,0],F=1/0;const D=[];for(const R of y){const z=R<A?`${R}-${A}`:`${A}-${R}`,B=d.get(z)??(u[R]+u[A])*1.1,[W,K]=p[R];for(let X=0;X<12;X++){const q=2*Math.PI*X/12;D.push([W+B*Math.cos(q),K+B*Math.sin(q)])}}for(const[R,z]of D){let B=0;for(const W of y){const K=W<A?`${W}-${A}`:`${A}-${W}`,X=d.get(K)??(u[W]+u[A])*1.1,q=Math.sqrt((R-p[W][0])**2+(z-p[W][1])**2);B+=(q-X)**2}B<F&&(F=B,T=[R,z])}p[A]=T,y.add(A)}h>=3&&this.optimizePositions(p,u,d,h);let x=1/0,v=-1/0,b=1/0,k=-1/0;for(let w=0;w<h;w++)x=Math.min(x,p[w][0]-u[w]),v=Math.max(v,p[w][0]+u[w]),b=Math.min(b,p[w][1]-u[w]),k=Math.max(k,p[w][1]+u[w]);const M=v-x||1,P=k-b||1,$=c?c.width*.95:s*2,_=c?c.height*.95:s*2,L=Math.min($/M,_/P),I=(x+v)/2,E=(b+k)/2;for(let w=0;w<h;w++){const A=r+(p[w][0]-I)*L,T=o+(p[w][1]-E)*L,F=u[w]*L;i.set(f[w],{id:f[w],cx:A,cy:T,r:F,color:t[w].color||bp[w%bp.length]})}}optimizePositions(t,e,i,r){const o=u=>{let d=0;for(let p=0;p<r;p++)for(let y=p+1;y<r;y++){const g=`${p}-${y}`,m=i.get(g)??(e[p]+e[y])*1.1,x=u[p*2]-u[y*2],v=u[p*2+1]-u[y*2+1],b=Math.sqrt(x*x+v*v);d+=(b-m)**2}return d},s=new Array(r*2);for(let u=0;u<r;u++)s[u*2]=t[u][0],s[u*2+1]=t[u][1];const a=r*2,l=[s.slice()];for(let u=0;u<a;u++){const d=s.slice();d[u]+=e[Math.floor(u/2)]*.3,l.push(d)}const c=l.map(u=>o(u));for(let u=0;u<200;u++){let d=0,p=0;for(let x=1;x<=a;x++)c[x]<c[d]&&(d=x),c[x]>c[p]&&(p=x);if(c[p]-c[d]<.01)break;const y=new Array(a).fill(0);for(let x=0;x<=a;x++)if(x!==p)for(let v=0;v<a;v++)y[v]+=l[x][v];for(let x=0;x<a;x++)y[x]/=a;const g=y.map((x,v)=>2*x-l[p][v]),m=o(g);if(m<c[d]){const x=y.map((b,k)=>3*b-2*l[p][k]),v=o(x);v<m?(l[p]=x,c[p]=v):(l[p]=g,c[p]=m)}else if(m<c[p])l[p]=g,c[p]=m;else{const x=y.map((b,k)=>.5*(b+l[p][k])),v=o(x);if(v<c[p])l[p]=x,c[p]=v;else for(let b=0;b<=a;b++)if(b!==d){for(let k=0;k<a;k++)l[b][k]=.5*(l[d][k]+l[b][k]);c[b]=o(l[b])}}}let h=0;for(let u=1;u<=a;u++)c[u]<c[h]&&(h=u);const f=l[h];for(let u=0;u<r;u++)t[u]=[f[u*2],f[u*2+1]]}circlePath(t,e,i){return`M${t-i},${e}A${i},${i},0,1,1,${t+i},${e}A${i},${i},0,1,1,${t-i},${e}Z`}lensPath(t,e){const i=e.cx-t.cx,r=e.cy-t.cy,o=Math.sqrt(i*i+r*r);if(o>=t.r+e.r)return null;if(o<=Math.abs(t.r-e.r)){const m=t.r<e.r?t:e;return{path:this.circlePath(m.cx,m.cy,m.r),cx:m.cx,cy:m.cy}}const s=(t.r*t.r-e.r*e.r+o*o)/(2*o),a=Math.sqrt(t.r*t.r-s*s),l=t.cx+s*i/o,c=t.cy+s*r/o,h=l+a*r/o,f=c-a*i/o,u=l-a*r/o,d=c+a*i/o,p=s<0?1:0,y=o-s<0?1:0;return{path:`M${h},${f}A${t.r},${t.r},0,${p},1,${u},${d}A${e.r},${e.r},0,${y},1,${h},${f}Z`,cx:l,cy:c}}triIntersectionPath(t,e,i){const r=this.circleIntersectionPoints(t,e),o=this.circleIntersectionPoints(t,i),s=this.circleIntersectionPoints(e,i);if(!r||!o||!s)return null;const l=[...r,...o,...s].filter(u=>this.insideCircle(u,t)&&this.insideCircle(u,e)&&this.insideCircle(u,i));if(l.length<3)return null;const c=l.reduce((u,d)=>u+d[0],0)/l.length,h=l.reduce((u,d)=>u+d[1],0)/l.length;l.sort((u,d)=>Math.atan2(u[1]-h,u[0]-c)-Math.atan2(d[1]-h,d[0]-c));let f=`M${l[0][0]},${l[0][1]}`;for(let u=0;u<l.length;u++){const d=l[u],p=l[(u+1)%l.length],y=this.findArcCircle(d,p,[t,e,i]);y?f+=`A${y.r},${y.r},0,0,1,${p[0]},${p[1]}`:f+=`L${p[0]},${p[1]}`}return f+="Z",{path:f,cx:c,cy:h}}circleIntersectionPoints(t,e){const i=e.cx-t.cx,r=e.cy-t.cy,o=Math.sqrt(i*i+r*r);if(o>=t.r+e.r||o<=Math.abs(t.r-e.r))return null;const s=(t.r*t.r-e.r*e.r+o*o)/(2*o),a=Math.sqrt(Math.max(0,t.r*t.r-s*s)),l=t.cx+s*i/o,c=t.cy+s*r/o;return[[l+a*r/o,c-a*i/o],[l-a*r/o,c+a*i/o]]}insideCircle(t,e){const i=t[0]-e.cx,r=t[1]-e.cy;return i*i+r*r<=(e.r+.5)*(e.r+.5)}findArcCircle(t,e,i){const r=(t[0]+e[0])/2,o=(t[1]+e[1])/2;for(const s of i){const a=Math.sqrt((t[0]-s.cx)**2+(t[1]-s.cy)**2),l=Math.sqrt((e[0]-s.cx)**2+(e[1]-s.cy)**2),c=Math.sqrt((r-s.cx)**2+(o-s.cy)**2);if(Math.abs(a-s.r)<1&&Math.abs(l-s.r)<1&&c<=s.r+1)return s}return null}blendColors(...t){let e=0,i=0,r=0;for(const s of t){const a=Xe(se(s)||s);e+=a.r,i+=a.g,r+=a.b}const o=t.length||1;return Xe(Math.round(e/o*.85),Math.round(i/o*.85),Math.round(r/o*.85)).formatHex()}findDistance(t,e,i){if(i<=0)return t+e+10;const r=Math.PI*Math.min(t,e)**2;if(i>=r)return Math.abs(t-e);let o=Math.abs(t-e),s=t+e;for(let a=0;a<50;a++){const l=(o+s)/2;this.lensArea(t,e,l)>i?o=l:s=l}return(o+s)/2}lensArea(t,e,i){if(i>=t+e)return 0;if(i<=Math.abs(t-e))return Math.PI*Math.min(t,e)**2;const r=(t*t-e*e+i*i)/(2*i),o=t*t-r*r;return o<0?0:t*t*Math.acos(r/t)-r*Math.sqrt(o)+e*e*Math.acos((i-r)/e)-(i-r)*Math.sqrt(e*e-(i-r)*(i-r))}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}function SM(n,t=0){return n===void 0?t:typeof n=="number"?n:n.radius??t}const _M=["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1","#7798bf","#aaeeee","#ff0066","#eeaaee","#55bf3b","#df5353","#7798bf","#aaeeee"];class CM extends Ut{constructor(t){super(t),this.keyframes=[],this.currentFrameIndex=0,this.colorMap=new Map,this.timer=null,this.playing=!1,this.controlsEl=null,this.playBtn=null,this.rangeInput=null,this.rangeLabel=null}processData(){var o;const t=this.config.data;if(!Array.isArray(t))return;this.keyframes=t.filter(s=>s&&s.date&&Array.isArray(s.values));const e=new Set;for(const s of this.keyframes)for(const a of s.values)e.add(a.name);const i=this.config.colors||((o=this.context)==null?void 0:o.colors)||_M;let r=0;for(const s of e)this.colorMap.has(s)||(this.colorMap.set(s,i[r%i.length]),r++)}render(){if(this.keyframes.length===0)return;const{plotArea:t}=this.context,e=this.config,i=40,r=30;this.axisGroup=this.group.append("g").attr("class","katucharts-race-axis").attr("transform",`translate(0,${r})`),this.barsGroup=this.group.append("g").attr("class","katucharts-race-bars").attr("transform",`translate(0,${r+5})`),this.tickerText=this.group.append("text").attr("class","katucharts-race-ticker").attr("x",t.width-10).attr("y",t.height-i-10).attr("text-anchor","end").attr("font-size",e.tickerFontSize||"48px").attr("font-weight","bold").attr("fill",e.tickerColor||"#ddd").style("pointer-events","none"),this.renderControls(),this.currentFrameIndex=0,this.renderFrame(0,!1),e.autoPlay!==!1&&this.play()}renderControls(){var e,i,r;const t=(i=(e=this.group.node())==null?void 0:e.closest("svg"))==null?void 0:i.parentElement;t&&(this.controlsEl=document.createElement("div"),this.controlsEl.style.cssText="position:absolute;bottom:8px;left:12px;right:12px;display:flex;align-items:center;gap:8px;z-index:10;",this.playBtn=document.createElement("button"),this.playBtn.innerHTML=this.pauseIcon(),this.playBtn.style.cssText="width:32px;height:32px;border:none;border-radius:50%;background:#2f7ed8;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;flex-shrink:0;box-shadow:0 1px 3px rgba(0,0,0,0.2);transition:background 0.15s;",this.playBtn.onmouseenter=()=>{this.playBtn&&(this.playBtn.style.background="#1a5fa8")},this.playBtn.onmouseleave=()=>{this.playBtn&&(this.playBtn.style.background="#2f7ed8")},this.playBtn.onclick=()=>{this.playing?this.pause():this.currentFrameIndex>=this.keyframes.length-1?this.restart():this.play()},this.rangeInput=document.createElement("input"),this.rangeInput.type="range",this.rangeInput.min="0",this.rangeInput.max=String(this.keyframes.length-1),this.rangeInput.value="0",this.rangeInput.style.cssText="flex:1;height:4px;cursor:pointer;accent-color:#2f7ed8;",this.rangeInput.oninput=()=>{const o=parseInt(this.rangeInput.value,10),s=this.playing;s&&this.pause(),this.goToFrame(o),s&&this.play()},this.rangeLabel=document.createElement("span"),this.rangeLabel.style.cssText='font-size:11px;color:#666;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-width:30px;text-align:right;flex-shrink:0;',this.rangeLabel.textContent=((r=this.keyframes[0])==null?void 0:r.date)||"",this.controlsEl.appendChild(this.playBtn),this.controlsEl.appendChild(this.rangeInput),this.controlsEl.appendChild(this.rangeLabel),t.appendChild(this.controlsEl))}updateControls(){this.rangeInput&&(this.rangeInput.value=String(this.currentFrameIndex)),this.rangeLabel&&this.keyframes[this.currentFrameIndex]&&(this.rangeLabel.textContent=this.keyframes[this.currentFrameIndex].date),this.playBtn&&(this.playBtn.innerHTML=this.playing?this.pauseIcon():this.playIcon())}playIcon(){return'<svg width="14" height="14" viewBox="0 0 14 14"><polygon points="3,1 12,7 3,13" fill="currentColor"/></svg>'}pauseIcon(){return'<svg width="14" height="14" viewBox="0 0 14 14"><rect x="2" y="1" width="3.5" height="12" rx="0.5" fill="currentColor"/><rect x="8.5" y="1" width="3.5" height="12" rx="0.5" fill="currentColor"/></svg>'}renderFrame(t,e){if(t<0||t>=this.keyframes.length)return;const{plotArea:i}=this.context,r=this.config,o=r.barsToShow??12,s=r.barPadding??.1,a=SM(r.borderRadius,3),l=r.frameDuration??500,c=e?r.transitionDuration??l:0,u=i.height-35-40-20,d=this.keyframes[t],y=[...d.values].sort(($,_)=>_.value-$.value).slice(0,o),g=y.length>0?y[0].value:1;this.valueScale=ke().domain([0,g*1.1]).range([0,i.width-80]),this.renderAxis(c);const m=u/o*(1-s),x=u/o,v=$=>$.name,b=this.barsGroup.selectAll(".katucharts-race-bar").data(y,v),k=b.enter().append("g").attr("class","katucharts-race-bar").attr("transform",($,_)=>`translate(0,${e?u+m:_*x})`).style("opacity",e?0:1);k.append("rect").attr("height",m).attr("rx",a).attr("width",$=>e?0:Math.max(0,this.valueScale($.value))).attr("fill",$=>this.colorMap.get($.name)||"#999"),k.append("text").attr("class","katucharts-race-label").attr("x",6).attr("y",m/2).attr("dy","0.35em").attr("fill","#fff").attr("font-weight","bold").attr("font-size",kt).style("pointer-events","none").text($=>$.name),k.append("text").attr("class","katucharts-race-value").attr("y",m/2).attr("dy","0.35em").attr("fill",xe).attr("font-weight","bold").attr("font-size",kt).style("pointer-events","none").attr("data-value",$=>$.value).attr("x",$=>Math.max(0,this.valueScale($.value))+5).text($=>$.value.toLocaleString());const M=k.merge(b);c>0?(M.transition().duration(c).ease(Mr).attr("transform",($,_)=>`translate(0,${_*x})`).style("opacity",1),M.select("rect").transition().duration(c).ease(Mr).attr("width",$=>Math.max(0,this.valueScale($.value))).attr("fill",$=>this.colorMap.get($.name)||"#999"),M.select(".katucharts-race-value").transition().duration(c).ease(Mr).attr("x",$=>Math.max(0,this.valueScale($.value))+5).tween("text",function($){const _=this,L=parseFloat(_.getAttribute("data-value")||"0"),I=$.value;return E=>{const C=Math.round(L+(I-L)*E);_.textContent=C.toLocaleString(),_.setAttribute("data-value",String(C))}})):(M.attr("transform",($,_)=>`translate(0,${_*x})`).style("opacity",1),M.select("rect").attr("width",$=>Math.max(0,this.valueScale($.value))).attr("fill",$=>this.colorMap.get($.name)||"#999"),M.select(".katucharts-race-value").attr("x",$=>Math.max(0,this.valueScale($.value))+5).attr("data-value",$=>$.value).text($=>$.value.toLocaleString())),M.select(".katucharts-race-label").style("display",$=>this.valueScale($.value)<50?"none":"");const P=b.exit();c>0?P.transition().duration(c).ease(Mr).attr("transform",`translate(0,${u+m})`).style("opacity",0).remove():P.remove(),this.tickerText.text(d.date),this.updateControls(),this.attachBarHoverEffects(M,m)}renderAxis(t){const e=Ha(this.valueScale).ticks(5).tickSize(-this.context.plotArea.height+110).tickFormat(i=>{const r=i;return r>=1e9?(r/1e9).toFixed(1)+"B":r>=1e6?(r/1e6).toFixed(1)+"M":r>=1e3?(r/1e3).toFixed(1)+"K":r.toString()});t>0?this.axisGroup.transition().duration(t).ease(Mr).call(e):this.axisGroup.call(e),this.axisGroup.select(".domain").remove(),this.axisGroup.selectAll(".tick line").attr("stroke","#e0e0e0").attr("stroke-dasharray","2,2"),this.axisGroup.selectAll(".tick text").attr("fill",xe).attr("font-size",kt)}attachBarHoverEffects(t,e){const i=this;t.style("cursor","pointer").on("mouseover",function(r,o){const a=st(this).select("rect"),l=a.attr("fill");a.attr("data-orig-fill",l),a.attr("fill",i.brightenColor(l,.1)),a.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),t.filter(c=>c.name!==o.name).style("opacity","0.5"),i.context.events.emit("point:mouseover",{point:{name:o.name,y:o.value},index:0,series:i,event:r,plotX:i.valueScale(o.value),plotY:0})}).on("mouseout",function(r,o){const a=st(this).select("rect"),l=a.attr("data-orig-fill")||"";a.attr("fill",l),a.style("filter",""),t.style("opacity",""),i.context.events.emit("point:mouseout",{point:{name:o.name,y:o.value},index:0,series:i,event:r})})}play(){if(this.playing)return;this.playing=!0,this.updateControls();const t=this.config,e=t.frameDuration??500;this.timer=setInterval(()=>{if(this.currentFrameIndex++,this.currentFrameIndex>=this.keyframes.length)if(t.loop)this.currentFrameIndex=0;else{this.currentFrameIndex=this.keyframes.length-1,this.pause();return}this.renderFrame(this.currentFrameIndex,!0)},e)}pause(){this.playing=!1,this.timer!==null&&(clearInterval(this.timer),this.timer=null),this.updateControls()}restart(){this.pause(),this.currentFrameIndex=0,this.renderFrame(0,!0),this.play()}goToFrame(t){t<0||t>=this.keyframes.length||(this.currentFrameIndex=t,this.renderFrame(t,!0))}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}destroy(){this.pause(),this.controlsEl&&(this.controlsEl.remove(),this.controlsEl=null),super.destroy()}brightenColor(t,e){const i=t.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);if(i){const r=Math.min(255,parseInt(i[1],16)+Math.round(255*e)),o=Math.min(255,parseInt(i[2],16)+Math.round(255*e)),s=Math.min(255,parseInt(i[3],16)+Math.round(255*e));return`rgb(${r},${o},${s})`}return t}}class PM extends Ut{constructor(t){super(t),t.clip=!1}render(){var _,L,I;const{plotArea:t,colors:e}=this.context,i=this.data||[];if(!i.length)return;const r=this.config.layout==="vertical"?"vertical":"horizontal",o=this.config.link||{},s=((_=this.config.marker)==null?void 0:_.radius)??6,a=o.color||"#cccccc",l=o.lineWidth??1,c=this.config.layoutAlgorithm==="cluster",h=this.config.levels||[],f=this.config.dataLabels||{},u=((L=f.style)==null?void 0:L.fontSize)||kt,d=f.color||((I=f.style)==null?void 0:I.color)||xe,p=this.buildRoot(i);if(!p)return;const y=r==="horizontal"?[t.height,t.width]:[t.width,t.height],g=c?Ew():rk();g.size(y),g(p);const m=E=>r==="horizontal"?E.y:E.x,x=E=>r==="horizontal"?E.x:E.y,v=r==="horizontal"?P2().x(E=>m(E)).y(E=>x(E)):E2().x(E=>m(E)).y(E=>x(E)),b=this.group.append("g").attr("class","katucharts-treegraph"),k=p.descendants(),M=p.links(),P=E=>{const C=h.find(S=>S.level===E);return C!=null&&C.color?C.color:e[E%Math.max(1,e.length)]||"#2f7ed8"};b.append("g").attr("class","katucharts-treegraph-links").selectAll("path").data(M).join("path").attr("d",E=>v(E)).attr("fill","none").attr("stroke",a).attr("stroke-width",l);const $=b.append("g").attr("class","katucharts-treegraph-nodes").selectAll("g").data(k).join("g").attr("transform",E=>`translate(${m(E)},${x(E)})`);$.append("circle").attr("r",s).attr("fill",E=>{var C;return((C=E.data)==null?void 0:C.color)||P(E.depth)}).attr("stroke",this.autoBorderColor()).attr("stroke-width",1),f.enabled!==!1&&$.append("text").attr("dy",r==="horizontal"?"0.32em":s+12).attr("x",r==="horizontal"?E=>E.children?-(s+4):s+4:0).attr("text-anchor",r==="horizontal"?E=>E.children?"end":"start":"middle").attr("font-size",u).attr("fill",d).style("pointer-events","none").text(E=>{var C,S;return((C=E.data)==null?void 0:C.name)??((S=E.data)==null?void 0:S.id)??""}),this.context.animate&&b.attr("opacity",0).transition().duration(vt).ease(pt).attr("opacity",1)}buildRoot(t){if(t.some(o=>o.children&&o.children.length>0))return qi({name:"root",children:t},o=>o.children);const i=t.filter(o=>o.id!==void 0&&o.id!==null);if(!i.length)return null;if(!(i.filter(o=>!o.parent).length<=1)){const o="__katu_treegraph_root__",s=i.map(a=>({...a,parent:a.parent||o}));return s.push({id:o,parent:"",name:""}),$c().id(a=>String(a.id)).parentId(a=>a.parent?String(a.parent):null)(s)}return $c().id(o=>String(o.id)).parentId(o=>o.parent?String(o.parent):null)(i)}getDataExtents(){return{xMin:1/0,xMax:-1/0,yMin:1/0,yMax:-1/0}}}class EM extends Ut{constructor(t){super(t),t.clip=!1}render(){var b,k,M,P,$;const{plotArea:t,colors:e}=this.context,i=this.data||[];if(!i.length)return;const r=this.config.minFontSize??8,o=this.config.maxFontSize??50,s=this.config.rotation||{},a=Array.isArray(s.orientations)?s.orientations:s.from!==void 0&&s.to!==void 0?[s.from,s.to]:[0],l=((k=(b=this.config.dataLabels)==null?void 0:b.style)==null?void 0:k.fontFamily)||"sans-serif",c=((M=this.config.dataLabels)==null?void 0:M.color)||(($=(P=this.config.dataLabels)==null?void 0:P.style)==null?void 0:$.color)||xe,h=[...i].filter(_=>_&&_.name&&typeof _.weight=="number"&&_.weight>0).sort((_,L)=>L.weight-_.weight);if(!h.length)return;const f=h[h.length-1].weight,u=h[0].weight,d=_=>{if(u===f)return(r+o)/2;const L=(_-f)/(u-f);return r+L*(o-r)},p=t.width/2,y=t.height/2,g=[],m=this.group.append("g").attr("class","katucharts-wordcloud"),{measure:x,dispose:v}=this.createMeasurer(m.node(),l);try{h.forEach((_,L)=>{const I=d(_.weight),E=a[L%a.length]??0,C=x(_.name,I),S=C.width,w=C.height,A=this.findSpiralSpot(p,y,S,w,E,g,t.width,t.height);A&&g.push({x:A.x,y:A.y,width:S,height:w,word:_,rotation:E,fontSize:I})})}finally{v()}g.forEach((_,L)=>{const I=_.word.color||e[L%Math.max(1,e.length)]||c;m.append("text").attr("x",_.x).attr("y",_.y).attr("text-anchor","middle").attr("dominant-baseline","central").attr("transform",_.rotation?`rotate(${_.rotation},${_.x},${_.y})`:null).attr("font-size",_.fontSize).attr("font-family",l).attr("fill",I).style("pointer-events","none").text(_.word.name)}),this.context.animate&&m.attr("opacity",0).transition().duration(vt).ease(pt).attr("opacity",1)}createMeasurer(t,e){const i=t.ownerSVGElement||t,o=document.createElementNS("http://www.w3.org/2000/svg","text");return o.setAttribute("visibility","hidden"),o.setAttribute("font-family",e),i.appendChild(o),{measure:(a,l)=>{o.setAttribute("font-size",String(l)),o.textContent=a;try{const c=o.getBBox();return{width:c.width,height:c.height||l}}catch{return{width:a.length*l*.55,height:l}}},dispose:()=>o.remove()}}findSpiralSpot(t,e,i,r,o,s,a,l){const c=o%180!==0,h=c?r:i,f=c?i:r,u=.2,d=4*Math.PI*6;for(let p=0;p<d;p+=u){const y=4*p,g=t+y*Math.cos(p),m=e+y*Math.sin(p);if(g-h/2<0||g+h/2>a||m-f/2<0||m+f/2>l)continue;if(!s.some(v=>{const b=v.rotation%180!==0?v.height:v.width,k=v.rotation%180!==0?v.width:v.height;return Math.abs(g-v.x)<(h+b)/2+2&&Math.abs(m-v.y)<(f+k)/2+2}))return{x:g,y:m}}return null}getDataExtents(){return{xMin:1/0,xMax:-1/0,yMin:1/0,yMax:-1/0}}}function kp(){$t.registerType("waterfall",ww),$t.registerType("funnel",td),$t.registerType("pyramid",K2),$t.registerType("treemap",uk),$t.registerType("sunburst",fk),$t.registerType("gauge",dk),$t.registerType("solidgauge",pk),$t.registerType("polar",dd),$t.registerType("radar",dd),$t.registerType("timeline",xk),$t.registerType("gantt",bk),$t.registerType("map",bM),$t.registerType("mappoint",vM),$t.registerType("flowmap",wM),$t.registerType("venn",AM),$t.registerType("barchartrace",CM),$t.registerType("treegraph",PM),$t.registerType("wordcloud",EM)}class TM extends Ut{constructor(t){super(t),this.selectedIndices=new Set}getCandleStyle(t){const e=t.isUp?t.upLineColor:t.downLineColor;return{fill:t.isUp?t.upColor:t.downColor,stroke:e,wick:e}}getCandleClass(){return"katucharts-candlestick"}render(){var $,_,L,I,E,C,S,w;const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.context.animate,o=this.data,s=this.applyDataGrouping(o),a=this.config.pointRange,l=this.config.groupPadding??.2,c=this.config.pointPadding??.1,h=l+c,f=this.config.maxPointWidth??1/0,u=a?Math.max(1,Math.min(f,i.width/Math.max(1,(($=t.domain)==null?void 0:$[1])-((_=t.domain)==null?void 0:_[0])||s.length)*a*(1-h))):Math.max(1,Math.min(f,i.width/s.length*(1-h))),d=this.config.pointWidth??u,p=this.config.color||"#f45b5b",y=this.config.upColor||"#2f7ed8",g=this.config.lineColor||p,m=this.config.upLineColor||y,x=this.config.lineWidth??1,v=((I=(L=this.config.states)==null?void 0:L.inactive)==null?void 0:I.opacity)??.4,b=this.config.allowPointSelect===!0,k=(C=(E=this.config.states)==null?void 0:E.select)==null?void 0:C.color,M=(w=(S=this.config.states)==null?void 0:S.select)==null?void 0:w.borderColor,P=[];for(let A=0;A<s.length;A++){const T=s[A];if(T.y===null&&T.open===void 0)continue;const F=T.open??T.y??0,D=T.high??F,R=T.low??F,z=T.close??F,B=t.getPixelForValue(T.x??A),W=z>=F,K=this.getCandleStyle({open:F,high:D,low:R,close:z,isUp:W,index:A,data:s,upColor:y,downColor:p,upLineColor:m,downLineColor:g}),X=K.fill,q=K.stroke,N=this.group.append("g").attr("class",this.getCandleClass()).style("cursor",this.config.cursor||"pointer");P.push(N);const H=N.append("line").attr("x1",B).attr("x2",B).attr("stroke",K.wick).attr("stroke-width",x),Y=W?z:F,G=W?F:z,Q=e.getPixelForValue(Y),O=Math.max(1,Math.abs(e.getPixelForValue(G)-e.getPixelForValue(Y))),nt=N.append("rect").attr("x",B-d/2).attr("width",d).attr("stroke",q).attr("stroke-width",x).attr("rx",2);if(r){const et=e.getPixelForValue((D+R)/2),ht=Pe(A,0,Wt,s.length);H.attr("y1",et).attr("y2",et).transition().duration(vt).ease(pt).delay(ht).attr("y1",e.getPixelForValue(D)).attr("y2",e.getPixelForValue(R)),nt.attr("y",et).attr("height",0).attr("fill",X).transition().duration(vt).ease(pt).delay(ht).attr("y",Q).attr("height",O)}else H.attr("y1",e.getPixelForValue(D)).attr("y2",e.getPixelForValue(R)),nt.attr("y",Q).attr("height",O).attr("fill",X);this.config.enableMouseTracking!==!1&&N.on("mouseover",et=>{var ft,ct,it,U;const ht=((ct=(ft=this.config.states)==null?void 0:ft.hover)==null?void 0:ct.lineWidthPlus)??2;N.select("rect").transition("size").duration(Z).ease(j).attr("x",B-d*.7).attr("width",d*1.4),N.select("line").transition("size").duration(Z).ease(j).attr("stroke-width",x+ht),N.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.25))"),P.forEach(at=>at.interrupt("highlight")),P.forEach(at=>at.attr("opacity",1)),P.forEach((at,xt)=>{xt!==A&&at.transition("highlight").duration(Z).ease(j).attr("opacity",v)}),this.context.events.emit("point:mouseover",{point:{...T,open:F,high:D,low:R,close:z},index:A,series:this,event:et,plotX:B,plotY:e.getPixelForValue((D+R)/2)}),(U=(it=T.events)==null?void 0:it.mouseOver)==null||U.call(T,et)}).on("mouseout",et=>{var ht,ft;N.select("rect").transition("size").duration(Z).ease(j).attr("x",B-d/2).attr("width",d),N.select("line").transition("size").duration(Z).ease(j).attr("stroke-width",x),N.style("filter",""),P.forEach(ct=>ct.interrupt("highlight")),P.forEach(ct=>ct.transition("highlight").duration(Z).ease(j).attr("opacity",1)),this.context.events.emit("point:mouseout",{point:T,index:A,series:this,event:et}),(ft=(ht=T.events)==null?void 0:ht.mouseOut)==null||ft.call(T,et)}).on("click",et=>{var ht,ft,ct,it,U,at,xt,_t;b&&(this.selectedIndices.has(A)?(this.selectedIndices.delete(A),N.select("rect").attr("stroke-width",x),(ft=(ht=T.events)==null?void 0:ht.unselect)==null||ft.call(T,et)):(this.selectedIndices.add(A),N.select("rect").attr("stroke",M||"#000").attr("stroke-width",k?2:x+1),k&&N.select("rect").attr("fill",k),(it=(ct=T.events)==null?void 0:ct.select)==null||it.call(T,et))),this.context.events.emit("point:click",{point:T,index:A,series:this,event:et}),(at=(U=T.events)==null?void 0:U.click)==null||at.call(T,et),(_t=(xt=this.config.events)==null?void 0:xt.click)==null||_t.call(this,et)})}this.renderCandlestickLabels(s,t,e)}renderCandlestickLabels(t,e,i){var a,l;const r=this.config.dataLabels;if(!(r!=null&&r.enabled))return;const o=((a=r.style)==null?void 0:a.fontSize)||kt,s=r.color||((l=r.style)==null?void 0:l.color)||xe;t.forEach((c,h)=>{if(c.y===null&&c.open===void 0)return;const f=c.high??c.open??c.y??0,u=e.getPixelForValue(c.x??h),d=i.getPixelForValue(f);let p;r.formatter?p=r.formatter.call({point:c,series:{name:this.config.name},x:c.x,y:c.y}):r.format?p=de(Kt(r.format,{point:c,series:{name:this.config.name},x:c.x,y:c.y})):p=String(c.close??c.y??""),this.group.append("text").attr("class","katucharts-candlestick-label").attr("x",u+(r.x??0)).attr("y",d-6+(r.y??0)).attr("text-anchor","middle").attr("font-size",o).attr("fill",s).style("pointer-events","none").text(p)})}applyDataGrouping(t){const e=this.config.dataGrouping;if(!(e!=null&&e.enabled)||!e.units||t.length===0)return t;const i=e.groupPixelWidth??10,{plotArea:r}=this.context,o=r.width/Math.max(1,t.length);if(o>=i)return t;const s=Math.ceil(i/o),a=[];for(let l=0;l<t.length;l+=s){const c=t.slice(l,l+s);if(c.length===0)continue;const h=c[0].open??c[0].y??0,f=c[c.length-1].close??c[c.length-1].y??0;let u=-1/0,d=1/0;for(const p of c)u=Math.max(u,p.high??p.y??0),d=Math.min(d,p.low??p.y??0);a.push({...c[0],x:c[0].x,open:h,high:u,low:d,close:f,y:f})}return a}getDataExtents(){let t=1/0,e=-1/0,i=1/0,r=-1/0;for(const o of this.data){const s=o.x??0;t=Math.min(t,s),e=Math.max(e,s);const a=o.high??o.y??0,l=o.low??o.y??0;i=Math.min(i,l),r=Math.max(r,a)}return{xMin:t,xMax:e,yMin:i,yMax:r}}}class $M extends Ut{constructor(t){super(t)}render(){var f,u;const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.context.animate,o=this.data,s=Math.max(2,Math.min(10,i.width/o.length*.3)),a=this.config.color||"#f45b5b",l=this.config.upColor||"#2f7ed8",c=((u=(f=this.config.states)==null?void 0:f.inactive)==null?void 0:u.opacity)??.4,h=[];for(let d=0;d<o.length;d++){const p=o[d];if(p.y===null&&p.open===void 0)continue;const y=p.open??p.y??0,g=p.high??y,m=p.low??y,x=p.close??y,v=t.getPixelForValue(p.x??d),b=x>=y?l:a,k=this.group.append("g").attr("class","katucharts-ohlc").style("cursor",this.config.cursor||"pointer");h.push(k),r&&k.attr("opacity",0).transition().duration(vt).ease(pt).delay(Pe(d,0,Wt,o.length)).attr("opacity",1),k.append("line").attr("x1",v).attr("x2",v).attr("y1",e.getPixelForValue(g)).attr("y2",e.getPixelForValue(m)).attr("stroke",b).attr("stroke-width",1.5),k.append("line").attr("x1",v-s).attr("x2",v).attr("y1",e.getPixelForValue(y)).attr("y2",e.getPixelForValue(y)).attr("stroke",b).attr("stroke-width",1.5),k.append("line").attr("x1",v).attr("x2",v+s).attr("y1",e.getPixelForValue(x)).attr("y2",e.getPixelForValue(x)).attr("stroke",b).attr("stroke-width",1.5),this.config.enableMouseTracking!==!1&&k.on("mouseover",M=>{var P,$;k.selectAll("line").interrupt("hover").transition("hover").duration(Z).ease(j).attr("stroke-width",3),k.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.25))"),h.forEach(_=>_.interrupt("highlight")),h.forEach(_=>_.attr("opacity",1)),h.forEach((_,L)=>{L!==d&&_.transition("highlight").duration(Z).ease(j).attr("opacity",c)}),this.context.events.emit("point:mouseover",{point:{...p,open:y,high:g,low:m,close:x},index:d,series:this,event:M,plotX:v,plotY:e.getPixelForValue((g+m)/2)}),($=(P=p.events)==null?void 0:P.mouseOver)==null||$.call(p,M)}).on("mouseout",M=>{var P,$;k.selectAll("line").interrupt("hover").transition("hover").duration(Z).ease(j).attr("stroke-width",1.5),k.style("filter",""),h.forEach(_=>_.interrupt("highlight")),h.forEach(_=>_.transition("highlight").duration(Z).ease(j).attr("opacity",1)),this.context.events.emit("point:mouseout",{point:p,index:d,series:this,event:M}),($=(P=p.events)==null?void 0:P.mouseOut)==null||$.call(p,M)}).on("click",M=>{var P,$,_,L;this.context.events.emit("point:click",{point:p,index:d,series:this,event:M}),($=(P=p.events)==null?void 0:P.click)==null||$.call(p,M),(L=(_=this.config.events)==null?void 0:_.click)==null||L.call(this,M)})}}getDataExtents(){let t=1/0,e=-1/0,i=1/0,r=-1/0;for(const o of this.data){const s=o.x??0;t=Math.min(t,s),e=Math.max(e,s);const a=o.high??o.y??0,l=o.low??o.y??0;i=Math.min(i,l),r=Math.max(r,a)}return{xMin:t,xMax:e,yMin:i,yMax:r}}}function Mp(){$t.registerType("candlestick",TM),$t.registerType("ohlc",$M)}function Ap(n,t){let e;if(t===void 0)for(const i of n)i!=null&&(e<i||e===void 0&&i>=i)&&(e=i);else{let i=-1;for(let r of n)(r=t(r,++i,n))!=null&&(e<r||e===void 0&&r>=r)&&(e=r)}return e}function LM(n,t){let e;if(t===void 0)for(const i of n)i!=null&&(e>i||e===void 0&&i>=i)&&(e=i);else{let i=-1;for(let r of n)(r=t(r,++i,n))!=null&&(e>r||e===void 0&&r>=r)&&(e=r)}return e}function ul(n,t){let e=0;if(t===void 0)for(let i of n)(i=+i)&&(e+=i);else{let i=-1;for(let r of n)(r=+t(r,++i,n))&&(e+=r)}return e}function IM(n){return n.depth}function Sp(n,t){return n.sourceLinks.length?n.depth:t-1}function Rs(n){return function(){return n}}function _p(n,t){return zs(n.source,t.source)||n.index-t.index}function Cp(n,t){return zs(n.target,t.target)||n.index-t.index}function zs(n,t){return n.y0-t.y0}function fl(n){return n.value}function FM(n){return n.index}function DM(n){return n.nodes}function RM(n){return n.links}function Pp(n,t){const e=n.get(t);if(!e)throw new Error("missing: "+t);return e}function Ep({nodes:n}){for(const t of n){let e=t.y0,i=e;for(const r of t.sourceLinks)r.y0=e+r.width/2,e+=r.width;for(const r of t.targetLinks)r.y1=i+r.width/2,i+=r.width}}function zM(){let n=0,t=0,e=1,i=1,r=24,o=8,s,a=FM,l=Sp,c,h,f=DM,u=RM,d=6;function p(){const w={nodes:f.apply(null,arguments),links:u.apply(null,arguments)};return y(w),g(w),m(w),x(w),k(w),Ep(w),w}p.update=function(w){return Ep(w),w},p.nodeId=function(w){return arguments.length?(a=typeof w=="function"?w:Rs(w),p):a},p.nodeAlign=function(w){return arguments.length?(l=typeof w=="function"?w:Rs(w),p):l},p.nodeSort=function(w){return arguments.length?(c=w,p):c},p.nodeWidth=function(w){return arguments.length?(r=+w,p):r},p.nodePadding=function(w){return arguments.length?(o=s=+w,p):o},p.nodes=function(w){return arguments.length?(f=typeof w=="function"?w:Rs(w),p):f},p.links=function(w){return arguments.length?(u=typeof w=="function"?w:Rs(w),p):u},p.linkSort=function(w){return arguments.length?(h=w,p):h},p.size=function(w){return arguments.length?(n=t=0,e=+w[0],i=+w[1],p):[e-n,i-t]},p.extent=function(w){return arguments.length?(n=+w[0][0],e=+w[1][0],t=+w[0][1],i=+w[1][1],p):[[n,t],[e,i]]},p.iterations=function(w){return arguments.length?(d=+w,p):d};function y({nodes:w,links:A}){for(const[F,D]of w.entries())D.index=F,D.sourceLinks=[],D.targetLinks=[];const T=new Map(w.map((F,D)=>[a(F,D,w),F]));for(const[F,D]of A.entries()){D.index=F;let{source:R,target:z}=D;typeof R!="object"&&(R=D.source=Pp(T,R)),typeof z!="object"&&(z=D.target=Pp(T,z)),R.sourceLinks.push(D),z.targetLinks.push(D)}if(h!=null)for(const{sourceLinks:F,targetLinks:D}of w)F.sort(h),D.sort(h)}function g({nodes:w}){for(const A of w)A.value=A.fixedValue===void 0?Math.max(ul(A.sourceLinks,fl),ul(A.targetLinks,fl)):A.fixedValue}function m({nodes:w}){const A=w.length;let T=new Set(w),F=new Set,D=0;for(;T.size;){for(const R of T){R.depth=D;for(const{target:z}of R.sourceLinks)F.add(z)}if(++D>A)throw new Error("circular link");T=F,F=new Set}}function x({nodes:w}){const A=w.length;let T=new Set(w),F=new Set,D=0;for(;T.size;){for(const R of T){R.height=D;for(const{source:z}of R.targetLinks)F.add(z)}if(++D>A)throw new Error("circular link");T=F,F=new Set}}function v({nodes:w}){const A=Ap(w,D=>D.depth)+1,T=(e-n-r)/(A-1),F=new Array(A);for(const D of w){const R=Math.max(0,Math.min(A-1,Math.floor(l.call(null,D,A))));D.layer=R,D.x0=n+R*T,D.x1=D.x0+r,F[R]?F[R].push(D):F[R]=[D]}if(c)for(const D of F)D.sort(c);return F}function b(w){const A=LM(w,T=>(i-t-(T.length-1)*s)/ul(T,fl));for(const T of w){let F=t;for(const D of T){D.y0=F,D.y1=F+D.value*A,F=D.y1+s;for(const R of D.sourceLinks)R.width=R.value*A}F=(i-F+s)/(T.length+1);for(let D=0;D<T.length;++D){const R=T[D];R.y0+=F*(D+1),R.y1+=F*(D+1)}E(T)}}function k(w){const A=v(w);s=Math.min(o,(i-t)/(Ap(A,T=>T.length)-1)),b(A);for(let T=0;T<d;++T){const F=Math.pow(.99,T),D=Math.max(1-F,(T+1)/d);P(A,F,D),M(A,F,D)}}function M(w,A,T){for(let F=1,D=w.length;F<D;++F){const R=w[F];for(const z of R){let B=0,W=0;for(const{source:X,value:q}of z.targetLinks){let N=q*(z.layer-X.layer);B+=C(X,z)*N,W+=N}if(!(W>0))continue;let K=(B/W-z.y0)*A;z.y0+=K,z.y1+=K,I(z)}c===void 0&&R.sort(zs),$(R,T)}}function P(w,A,T){for(let F=w.length,D=F-2;D>=0;--D){const R=w[D];for(const z of R){let B=0,W=0;for(const{target:X,value:q}of z.sourceLinks){let N=q*(X.layer-z.layer);B+=S(z,X)*N,W+=N}if(!(W>0))continue;let K=(B/W-z.y0)*A;z.y0+=K,z.y1+=K,I(z)}c===void 0&&R.sort(zs),$(R,T)}}function $(w,A){const T=w.length>>1,F=w[T];L(w,F.y0-s,T-1,A),_(w,F.y1+s,T+1,A),L(w,i,w.length-1,A),_(w,t,0,A)}function _(w,A,T,F){for(;T<w.length;++T){const D=w[T],R=(A-D.y0)*F;R>1e-6&&(D.y0+=R,D.y1+=R),A=D.y1+s}}function L(w,A,T,F){for(;T>=0;--T){const D=w[T],R=(D.y1-A)*F;R>1e-6&&(D.y0-=R,D.y1-=R),A=D.y0-s}}function I({sourceLinks:w,targetLinks:A}){if(h===void 0){for(const{source:{sourceLinks:T}}of A)T.sort(Cp);for(const{target:{targetLinks:T}}of w)T.sort(_p)}}function E(w){if(h===void 0)for(const{sourceLinks:A,targetLinks:T}of w)A.sort(Cp),T.sort(_p)}function C(w,A){let T=w.y0-(w.sourceLinks.length-1)*s/2;for(const{target:F,width:D}of w.sourceLinks){if(F===A)break;T+=D+s}for(const{source:F,width:D}of A.targetLinks){if(F===w)break;T-=D}return T}function S(w,A){let T=A.y0-(A.targetLinks.length-1)*s/2;for(const{source:F,width:D}of A.targetLinks){if(F===w)break;T+=D+s}for(const{target:F,width:D}of w.sourceLinks){if(F===A)break;T-=D}return T}return p}var dl=Math.PI,pl=2*dl,Si=1e-6,BM=pl-Si;function gl(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Tp(){return new gl}gl.prototype=Tp.prototype={constructor:gl,moveTo:function(n,t){this._+="M"+(this._x0=this._x1=+n)+","+(this._y0=this._y1=+t)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(n,t){this._+="L"+(this._x1=+n)+","+(this._y1=+t)},quadraticCurveTo:function(n,t,e,i){this._+="Q"+ +n+","+ +t+","+(this._x1=+e)+","+(this._y1=+i)},bezierCurveTo:function(n,t,e,i,r,o){this._+="C"+ +n+","+ +t+","+ +e+","+ +i+","+(this._x1=+r)+","+(this._y1=+o)},arcTo:function(n,t,e,i,r){n=+n,t=+t,e=+e,i=+i,r=+r;var o=this._x1,s=this._y1,a=e-n,l=i-t,c=o-n,h=s-t,f=c*c+h*h;if(r<0)throw new Error("negative radius: "+r);if(this._x1===null)this._+="M"+(this._x1=n)+","+(this._y1=t);else if(f>Si)if(!(Math.abs(h*a-l*c)>Si)||!r)this._+="L"+(this._x1=n)+","+(this._y1=t);else{var u=e-o,d=i-s,p=a*a+l*l,y=u*u+d*d,g=Math.sqrt(p),m=Math.sqrt(f),x=r*Math.tan((dl-Math.acos((p+f-y)/(2*g*m)))/2),v=x/m,b=x/g;Math.abs(v-1)>Si&&(this._+="L"+(n+v*c)+","+(t+v*h)),this._+="A"+r+","+r+",0,0,"+ +(h*u>c*d)+","+(this._x1=n+b*a)+","+(this._y1=t+b*l)}},arc:function(n,t,e,i,r,o){n=+n,t=+t,e=+e,o=!!o;var s=e*Math.cos(i),a=e*Math.sin(i),l=n+s,c=t+a,h=1^o,f=o?i-r:r-i;if(e<0)throw new Error("negative radius: "+e);this._x1===null?this._+="M"+l+","+c:(Math.abs(this._x1-l)>Si||Math.abs(this._y1-c)>Si)&&(this._+="L"+l+","+c),e&&(f<0&&(f=f%pl+pl),f>BM?this._+="A"+e+","+e+",0,1,"+h+","+(n-s)+","+(t-a)+"A"+e+","+e+",0,1,"+h+","+(this._x1=l)+","+(this._y1=c):f>Si&&(this._+="A"+e+","+e+",0,"+ +(f>=dl)+","+h+","+(this._x1=n+e*Math.cos(r))+","+(this._y1=t+e*Math.sin(r))))},rect:function(n,t,e,i){this._+="M"+(this._x0=this._x1=+n)+","+(this._y0=this._y1=+t)+"h"+ +e+"v"+ +i+"h"+-e+"Z"},toString:function(){return this._}};function $p(n){return function(){return n}}function OM(n){return n[0]}function NM(n){return n[1]}var WM=Array.prototype.slice;function HM(n){return n.source}function VM(n){return n.target}function GM(n){var t=HM,e=VM,i=OM,r=NM,o=null;function s(){var a,l=WM.call(arguments),c=t.apply(this,l),h=e.apply(this,l);if(o||(o=a=Tp()),n(o,+i.apply(this,(l[0]=c,l)),+r.apply(this,l),+i.apply(this,(l[0]=h,l)),+r.apply(this,l)),a)return o=null,a+""||null}return s.source=function(a){return arguments.length?(t=a,s):t},s.target=function(a){return arguments.length?(e=a,s):e},s.x=function(a){return arguments.length?(i=typeof a=="function"?a:$p(+a),s):i},s.y=function(a){return arguments.length?(r=typeof a=="function"?a:$p(+a),s):r},s.context=function(a){return arguments.length?(o=a??null,s):o},s}function YM(n,t,e,i,r){n.moveTo(t,e),n.bezierCurveTo(t=(t+i)/2,e,t,r,i,r)}function XM(){return GM(YM)}function UM(n){return[n.source.x1,n.y0]}function jM(n){return[n.target.x0,n.y1]}function qM(){return XM().source(UM).target(jM)}const ZM=500,KM=380,JM=280;function QM(n){if(n.endsWith("px"))return parseFloat(n)||12;if(n.endsWith("rem")||n.endsWith("em")){const e=typeof document>"u"?16:parseFloat(getComputedStyle(document.documentElement).fontSize)||16;return(parseFloat(n)||1)*e}const t=parseFloat(n);return Number.isNaN(t)?12:t}class tA extends Ut{getBaseFlowDuration(){return vt*4}constructor(t){super(t)}render(){var Ee,fn,yn,Gn,Kr;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.config,o=this.getBaseFlowDuration();this.group.selectAll("rect, path, text").interrupt("enter").interrupt("highlight");const{nodes:s,links:a}=this.buildGraph();if(s.length===0)return;const l=t.width<ZM,c=t.width<KM,h=t.width<JM,f=r.nodeWidth,u=f==="auto",d=s.map(V=>typeof V.column=="number"&&Number.isFinite(V.column)?Math.max(0,Math.floor(V.column)):null).filter(V=>V!==null),p=d.length>0,y=p?Math.max(...d):0,g=typeof r.nodePadding=="number"?r.nodePadding:l?Math.max(4,Math.min(10,t.height/40)):10,m=r.linkOpacity??.4,x=r.colorByPoint!==!1,v=r.minLinkWidth??1,b=r.borderWidth??0,k=r.borderColor??"none",M=r.levels||[],P=this.config.dataLabels||{},$=P.enabled!==!1,_=((Ee=P.style)==null?void 0:Ee.fontSize)||kt,L=QM(_),I=c?Math.min(L,10):l?Math.min(L,12):L,E=`${I}px`,C=P.color||((fn=P.style)==null?void 0:fn.color)||this.autoLabelColor(),S=I*.62,w=V=>P.formatter?String(P.formatter.call({point:{name:V.name||V.id,y:V.value},series:{name:this.config.name},x:V.name||V.id,y:V.value})??""):String(V.name||V.id||""),A=V=>V.length*S,T=(V,tt,lt=2)=>{if(tt<=0)return"";if(A(V)<=tt)return V;const Ft=Math.floor(tt/S)-1;return Ft<lt?"":Ft>=V.length?V:V.slice(0,Ft)+"…"},F=r.nodeAlignment==="left"?IM:Sp,R=h?5:c?8:l?10:14,z=typeof f=="number"?f:20,B=(V,tt,lt,Ct)=>{const Ft=Math.max(tt+Ct+20,t.width-lt),Oe=zM().nodeId(ye=>ye.id).nodeAlign(F).nodeWidth(Ct).nodePadding(V).extent([[tt,0],[Ft,t.height]]),Te=Oe({nodes:[...s],links:[...a]});for(const ye of Te.nodes)if(ye.x0<tt){const _n=ye.x1-ye.x0;ye.x0=tt,ye.x1=tt+_n}return{gen:Oe,graph:Te}};let W=z;const K=B(g,0,0,W),X=V=>p&&typeof V.column=="number"&&Number.isFinite(V.column)?Math.max(0,Math.floor(V.column)):V.layer??V.depth??0,q=p?y:K.graph.nodes.reduce((V,tt)=>Math.max(V,tt.depth??0),0),N=K.graph.nodes.reduce((V,tt)=>Math.min(V,tt.x0??1/0),1/0),H=p?K.graph.nodes.filter(V=>X(V)===0):K.graph.nodes.filter(V=>(V.x0??1/0)<=N+.5),Y=$?Math.max(0,...H.map(V=>A(w(V)))):0,G=$&&l?Math.min(Math.floor(t.width*.08),Math.max(0,Y*.18)):0,Q=$&&!h,O=0,nt=Math.max(1,t.width-G-O),et=Math.max(q,0);if(et>0){const tt=(nt-et*(h?8:c?10:l?14:18))/(et+1),lt=Math.max(R,Math.min(z,tt));(typeof f!="number"||l)&&(W=lt)}else typeof f!="number"&&(W=Math.max(R,Math.min(z,nt*.5)));const ht=c?Math.max(2,Math.min(8,W*.35)):0,ft=G+ht,ct=O+ht;let{gen:it,graph:U}=B(g,ft,ct,W);const at=new Map;for(const V of U.nodes){const tt=X(V);at.set(tt,(at.get(tt)??0)+1)}const xt=Math.max(1,...at.values());let _t=g;const Mt=typeof r.nodePadding!="number";if($&&Mt&&xt>1){const V=I*1.3;t.height*.82/(xt-1)>=V&&(_t=Math.max(g,V))}if(xt*_t>t.height&&(_t=Math.max(1,t.height/xt)),_t!==g&&({gen:it,graph:U}=B(_t,ft,ct,W)),u){const V=U.nodes.reduce((lt,Ct)=>Math.max(lt,X(Ct)),0),tt=Math.max(R,Math.min(20,nt/((V+1)*3)));it.nodeWidth(tt),U=it({nodes:[...s],links:[...a]})}if(p){const V=Math.max(1,U.nodes[0]?U.nodes[0].x1-U.nodes[0].x0:W);_t=this.applyExplicitColumnLayout(U,it,X,y,ft,Math.max(ft+V,t.width-ct),t.height,_t,V)}else this.reorderNodesByValueDesc(U,it,X,t.height,_t);const Pt=new Map,Gt=new Map;for(const V of U.nodes){const tt=X(V);Pt.has(tt)||Pt.set(tt,[]),Pt.get(tt).push(V)}for(const V of U.links){const tt=X(V.source);Gt.has(tt)||Gt.set(tt,[]),Gt.get(tt).push(V)}const Ht=U.nodes.reduce((V,tt)=>Math.max(V,X(tt)),0),Nt=Math.round(o*.22),Jt=Nt,re=Jt,Lt=Ht*re+Nt+Jt,Qt=r.centerNodes===!0,pe=r.spreadFactor??1;(Qt||pe!==1)&&this.centerAndSpreadNodes(U,it,t.height,pe,_t);const Ze=new Map;for(const V of M)V.level!==void 0&&Ze.set(V.level,V);const ge=V=>{const tt=V.source?X(V.source):void 0,lt=tt!==void 0?Ze.get(tt):void 0;return(lt==null?void 0:lt.linkOpacity)??m},Sn=qM(),ei=V=>{if(!c)return Sn(V);const tt=V.source.x1,lt=V.target.x0,Ct=V.y0,Ft=V.y1,Oe=lt-tt;if(!Number.isFinite(Oe)||!Number.isFinite(Ct)||!Number.isFinite(Ft))return Sn(V);if(Oe<=14)return`M${tt},${Ct}L${lt},${Ft}`;if(Oe<28){const Te=Math.max(2,Oe*.35);return`M${tt},${Ct}C${tt+Te},${Ct} ${lt-Te},${Ft} ${lt},${Ft}`}return Sn(V)},Ge=c,hn=Ge?V=>{const tt=V.source.x1,lt=V.target.x0,Ct=V.y0,Ft=V.y1,Oe=lt-tt,Te=Math.max(v,V.width)/2;if(!Number.isFinite(Oe)||!Number.isFinite(Ct)||!Number.isFinite(Ft))return ei(V);const ye=Ct-Te,_n=Ct+Te,Jr=Ft-Te,ni=Ft+Te,Yn=Math.max(1,Oe*.42);return Oe<=2?[`M${tt},${ye}`,`L${lt},${Jr}`,`L${lt},${ni}`,`L${tt},${_n}`,"Z"].join(""):[`M${tt},${ye}`,`C${tt+Yn},${ye} ${lt-Yn},${Jr} ${lt},${Jr}`,`L${lt},${ni}`,`C${lt-Yn},${ni} ${tt+Yn},${_n} ${tt},${_n}`,"Z"].join("")}:ei,Ke=Ge?"fill-opacity":"stroke-opacity",Je=r.linkColorMode??"from",jr=V=>V.source.color||e[U.nodes.indexOf(V.source)%e.length]||"#aaa",qr=V=>V.target.color||e[U.nodes.indexOf(V.target)%e.length]||"#aaa",Zr=this.group.append("defs"),rt=`katucharts-sankey-clip-${this.config.index}-${Math.random().toString(36).slice(2,8)}`;Zr.append("clipPath").attr("id",rt).append("rect").attr("x",0).attr("y",0).attr("width",t.width).attr("height",t.height);const ot=this.group.append("g").attr("class","katucharts-sankey-clipped-layer").attr("clip-path",`url(#${rt})`),ut=ot.append("g").attr("class","katucharts-sankey-links"),wt=ot.append("g").attr("class","katucharts-sankey-nodes"),yt=ot.append("g").attr("class","katucharts-sankey-link-hitareas");let mt=null;Je==="gradient"&&(mt=Zr);let J=null;const Et=.55,zt=.25,gt=ut.selectAll(".katucharts-sankey-link").data(U.links).join("path").attr("class","katucharts-sankey-link").attr("d",hn).attr("fill",Ge?"#aaa":"none").attr("stroke",Ge?"none":"#aaa").attr("stroke-width",V=>Ge?null:Math.max(v,V.width)).attr("stroke-linecap","butt").style("cursor","pointer");Je==="gradient"&&mt?gt.each(function(V,tt){const lt=`katucharts-sankey-grad-${tt}-${Math.random().toString(36).slice(2,6)}`;mt.append("linearGradient").attr("id",lt).attr("gradientUnits","userSpaceOnUse").attr("x1",V.source.x1).attr("x2",V.target.x0).selectAll("stop").data([{offset:"0%",color:jr(V)},{offset:"100%",color:qr(V)}]).join("stop").attr("offset",Ct=>Ct.offset).attr("stop-color",Ct=>Ct.color),st(this).attr(Ge?"fill":"stroke",`url(#${lt})`)}):Je==="to"?gt.attr(Ge?"fill":"stroke",V=>qr(V)):gt.attr(Ge?"fill":"stroke",V=>jr(V)),i&&!h?l?gt.attr(Ke,0).each(function(V){const tt=X(V.source),Ct=(Gt.get(tt)||[]).indexOf(V),Ft=tt*re+Nt-60+Math.min(Ct*12,60);st(this).transition("enter").duration(Jt).delay(Ft).ease(pt).attr(Ke,ge(V))}):gt.attr(Ke,V=>ge(V)).each(function(V){var _n;const tt=this,lt=((_n=tt.getTotalLength)==null?void 0:_n.call(tt))||0;if(lt===0)return;const Ct=X(V.source),Oe=(Gt.get(Ct)||[]).indexOf(V),ye=Ct*re+Nt-60+Math.min(Oe*12,60);st(this).attr("stroke-dasharray",`${lt} ${lt}`).attr("stroke-dashoffset",lt).transition("enter").duration(Jt).delay(ye).ease(pt).attr("stroke-dashoffset",0).on("end",function(){st(this).attr("stroke-dasharray",null).attr("stroke-dashoffset",null)})}):gt.attr(Ke,V=>ge(V));const jt=(V,tt,lt)=>{const Ct={name:`${lt.source.name} → ${lt.target.name}`,from:lt.source.name,to:lt.target.name,y:lt.value,weight:lt.value,fromNode:{name:lt.source.name,id:lt.source.id},toNode:{name:lt.target.name,id:lt.target.id}};if(V==="mouseover"){this.context.events.emit("point:mouseover",{point:Ct,index:U.links.indexOf(lt),series:this,event:tt,plotX:(lt.source.x1+lt.target.x0)/2,plotY:(lt.y0+lt.y1)/2});return}if(V==="mouseout"){this.context.events.emit("point:mouseout",{point:Ct,index:U.links.indexOf(lt),series:this,event:tt});return}this.context.events.emit("point:click",{point:Ct,index:U.links.indexOf(lt),series:this,event:tt})},Ot=(V,tt)=>{const lt=ge(tt);gt.interrupt("highlight"),Vt.interrupt("highlight"),J==null||J.interrupt("highlight"),gt.attr(Ke,Ct=>Ct===tt?Math.min(lt+.3,1):ge(Ct)),gt.filter(Ct=>Ct!==tt).transition("highlight").duration(Z).ease(j).attr(Ke,lt*.375),Vt.attr("opacity",1),Vt.transition("highlight").duration(Z).ease(j).attr("opacity",Ct=>Ct===tt.source||Ct===tt.target?1:Et),J==null||J.transition("highlight").duration(Z).ease(j).attr("opacity",Ct=>Ct===tt.source||Ct===tt.target?1:zt),jt("mouseover",V,tt)},qt=(V,tt)=>{gt.interrupt("highlight"),Vt.interrupt("highlight"),J==null||J.interrupt("highlight"),gt.transition("highlight").duration(Z).ease(j).attr(Ke,lt=>ge(lt)),Vt.transition("highlight").duration(Z).ease(j).attr("opacity",1),J==null||J.transition("highlight").duration(Z).ease(j).attr("opacity",1),jt("mouseout",V,tt)},ne=(V,tt)=>{jt("click",V,tt)};gt.on("mouseover",Ot).on("mouseout",qt).on("click",ne);const Vt=wt.selectAll(".katucharts-sankey-node").data(U.nodes).join("rect").attr("class","katucharts-sankey-node").attr("x",V=>V.x0).attr("y",V=>V.y0).attr("width",V=>V.x1-V.x0).attr("height",V=>Math.max(1,V.y1-V.y0)).attr("fill",(V,tt)=>{if(V.color)return V.color;const lt=Ze.get(X(V));return lt!=null&&lt.color?lt.color:x?e[tt%e.length]:r.color||e[0]}).attr("stroke",k).attr("stroke-width",b).attr("rx",4).style("cursor","pointer");i&&!h&&Vt.attr("opacity",0).attr("x",V=>V.x0-(c?4:10)).each(function(V){const tt=X(V),Ct=(Pt.get(tt)||[]).indexOf(V),Ft=tt*re+Math.min(Ct*20,80);st(this).transition("enter").duration(Nt).delay(Ft).ease(pt).attr("opacity",1).attr("x",V.x0)});const un=(V,tt)=>{Vt.filter(Ft=>Ft===tt).style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),Vt.interrupt("highlight"),gt.interrupt("highlight"),J==null||J.interrupt("highlight");const lt=new Set([tt]);for(const Ft of U.links)Ft.source===tt?lt.add(Ft.target):Ft.target===tt&&lt.add(Ft.source);Vt.attr("opacity",1),Vt.filter(Ft=>!lt.has(Ft)).transition("highlight").duration(Z).ease(j).attr("opacity",Et),J==null||J.transition("highlight").duration(Z).ease(j).attr("opacity",Ft=>lt.has(Ft)?1:zt),gt.transition("highlight").duration(Z).ease(j).attr(Ke,Ft=>Ft.source===tt||Ft.target===tt?Math.min(ge(Ft)+.3,1):ge(Ft)*.375);const Ct={name:tt.name||tt.id,y:tt.value,sum:tt.value};this.context.events.emit("point:mouseover",{point:Ct,index:U.nodes.indexOf(tt),series:this,event:V,plotX:(tt.x0+tt.x1)/2,plotY:(tt.y0+tt.y1)/2})},Be=(V,tt)=>{Vt.filter(lt=>lt===tt).style("filter",""),Vt.interrupt("highlight"),gt.interrupt("highlight"),J==null||J.interrupt("highlight"),Vt.transition("highlight").duration(Z).ease(j).attr("opacity",1),J==null||J.transition("highlight").duration(Z).ease(j).attr("opacity",1),gt.transition("highlight").duration(Z).ease(j).attr(Ke,lt=>ge(lt)),this.context.events.emit("point:mouseout",{point:{name:tt.name||tt.id,y:tt.value,sum:tt.value},index:U.nodes.indexOf(tt),series:this,event:V})},Ye=(V,tt)=>{this.context.events.emit("point:click",{point:{name:tt.name||tt.id,y:tt.value},index:U.nodes.indexOf(tt),series:this,event:V})};if(Vt.on("mouseover",un).on("mouseout",Be).on("click",Ye),yt.selectAll(".katucharts-sankey-link-hitarea").data(U.links).join("path").attr("class","katucharts-sankey-link-hitarea").attr("d",ei).attr("fill","none").attr("stroke","transparent").attr("stroke-linecap","round").attr("stroke-width",V=>Math.max(16,Math.max(v,V.width)+10)).style("cursor","pointer").on("mouseover",Ot).on("mouseout",qt).on("click",ne),$){const V=this.group.append("g").attr("class","katucharts-sankey-labels"),tt=Math.max(6,I*.6),lt=U.nodes.reduce((dt,It)=>Math.max(dt,It.x0??0),0),Ct=U.nodes.reduce((dt,It)=>Math.min(dt,It.x0??1/0),1/0),Ft=dt=>p?X(dt)===Ht:lt>0&&(dt.x0??0)>=lt-.5,Oe=dt=>p?X(dt)===0:Number.isFinite(Ct)&&(dt.x0??0)<=Ct+.5,Te=dt=>Q&&Ft(dt)||Oe(dt),ye=new Map;for(const dt of U.nodes){const It=dt.y1-dt.y0;if(!Te(dt)&&It<tt){ye.set(dt,"");continue}ye.set(dt,w(dt))}const _n=dt=>Te(dt)?Ft(dt)?"end":"start":"middle",Jr=dt=>Te(dt)?Ft(dt)?dt.x0-4+(P.x??0):dt.x1+4+(P.x??0):(dt.x0+dt.x1)/2+(P.x??0);J=V.selectAll(".katucharts-sankey-label").data(U.nodes).join("text").attr("class","katucharts-sankey-label").attr("x",Jr).attr("y",dt=>(dt.y0+dt.y1)/2+(P.y??0)).attr("dy","0.35em").attr("text-anchor",_n).attr("font-size",E).attr("font-weight",((yn=P.style)==null?void 0:yn.fontWeight)??600).attr("fill",C).attr("paint-order","stroke").attr("stroke",(Gn=P.style)!=null&&Gn.textOutline?null:this.labelHaloColor()).attr("stroke-width",(Kr=P.style)!=null&&Kr.textOutline?null:2).attr("stroke-linejoin","round").style("pointer-events","auto").style("cursor","pointer").on("mouseover",un).on("mouseout",Be).on("click",Ye).text(dt=>ye.get(dt)??"");const ni=new Map,Yn=new Map;for(const dt of U.nodes){const It=X(dt);ni.set(It,Math.min(ni.get(It)??1/0,dt.x0)),Yn.set(It,Math.max(Yn.get(It)??-1/0,dt.x1))}J.each(function(dt){const It=this;let oe=It.textContent;if(!oe)return;const Cn=A(oe);if(Te(dt)){const Gp=X(dt),Yp=I*.75;let to;if(Ft(dt)){const eo=Yn.get(Gp-1),Xp=eo!==void 0?(eo+dt.x0)/2:2;to=dt.x0-4-(Xp+Yp/2)}else{const eo=ni.get(Gp+1);to=(eo!==void 0?(dt.x1+eo)/2:t.width-2)-Yp/2-(dt.x1+4)}if(to<=S){It.textContent="";return}Cn>to&&(oe=T(oe,to,1),It.textContent=oe);return}const Ci=(dt.x0+dt.x1)/2,ii=Ci-Cn/2,ir=Ci+Cn/2;if(ir<=t.width&&ii>=0)return;const Qr=X(dt),GA=ni.get(Qr+1)??t.width,YA=Yn.get(Qr-1)??0,bl=GA-dt.x1-4,vl=dt.x0-YA-4;if(ii<0&&bl>I*1.5){It.setAttribute("text-anchor","start"),It.setAttribute("x",String(dt.x1+2)),Cn>bl&&(It.textContent=T(oe,bl));return}if(ir>t.width&&vl>I*1.5){It.setAttribute("text-anchor","end"),It.setAttribute("x",String(dt.x0-2)),Cn>vl&&(It.textContent=T(oe,vl));return}const Vp=2*Math.min(Ci,t.width-Ci)-4;if(Vp<I*2){It.textContent="";return}It.textContent=T(oe,Vp)});const Wp=[],HA=[...U.nodes].sort((dt,It)=>(It.value??0)-(dt.value??0)),Hp=new Map;J.each(function(dt){Hp.set(dt,this)});const VA=(dt,It)=>dt.left<It.right&&dt.right>It.left&&dt.top<It.bottom&&dt.bottom>It.top;for(const dt of HA){if(P.allowOverlap===!0)break;const It=Hp.get(dt);if(!It||!It.textContent)continue;let oe;try{oe=It.getBBox()}catch{const ii=A(It.textContent||""),ir=Number(It.getAttribute("x")||0),Qr=It.getAttribute("text-anchor");oe={x:Qr==="end"?ir-ii:Qr==="middle"?ir-ii/2:ir,y:Number(It.getAttribute("y")||0)-I/2,width:ii,height:I}}if(oe.width===0&&oe.height===0)continue;const Cn={left:oe.x,right:oe.x+oe.width,top:oe.y,bottom:oe.y+oe.height};if(Wp.some(ii=>VA(ii,Cn))&&P.overflow!=="allow"){It.textContent="";continue}Wp.push(Cn)}i&&!h&&J.attr("opacity",0).each(function(dt){const It=X(dt),Cn=(Pt.get(It)||[]).indexOf(dt),Ci=It*re+Nt-80+Math.min(Cn*20,80);st(this).transition("enter").duration(Nt).delay(Ci).ease(pt).attr("opacity",1)})}i&&this.emitAfterAnimate(h?0:Lt+100)}applyExplicitColumnLayout(t,e,i,r,o,s,a,l,c){var m,x;const h=new Map;for(const v of t.nodes){const b=i(v);v.depth=b,v.layer=b,h.has(b)||h.set(b,[]),h.get(b).push(v)}const f=Array.from(h.entries()).sort((v,b)=>v[0]-b[0]),u=Math.max(1,...f.map(([,v])=>v.length)),d=u>1?Math.min(l,Math.max(1,a/(u-1))):l,y=f.map(([,v])=>v.reduce((b,k)=>b+Math.max(0,k.value??0),0)).filter(v=>v>0).length>0?Math.min(...f.map(([,v])=>{const b=v.reduce((k,M)=>k+Math.max(0,M.value??0),0);return b<=0?1/0:Math.max(1e-4,(a-Math.max(0,v.length-1)*d)/b)})):1,g=r>0?(s-o-c)/r:0;for(const[v,b]of f){const k=b.some(_=>typeof _.offset=="number");b.sort((_,L)=>k?(_.offset??0)-(L.offset??0)||(_.y0??0)-(L.y0??0)||String(_.name??_.id).localeCompare(String(L.name??L.id)):(L.value??0)-(_.value??0)||String(_.name??_.id).localeCompare(String(L.name??L.id)));const M=b.reduce((_,L)=>_+Math.max(1,(L.value??0)*y),0)+Math.max(0,b.length-1)*d;let P=Math.max(0,(a-M)/2);const $=o+v*g;for(const _ of b){const L=Math.max(1,(_.value??0)*y);_.x0=$,_.x1=$+c,_.y0=P,_.y1=P+L,P=_.y1+d}}for(const v of t.links)v.width=Math.max(1e-4,v.value*y);for(const v of t.nodes)(m=v.sourceLinks)==null||m.sort((b,k)=>(b.target.y0??0)-(k.target.y0??0)),(x=v.targetLinks)==null||x.sort((b,k)=>(b.source.y0??0)-(k.source.y0??0));return e.update(t),d}reorderNodesByValueDesc(t,e,i,r,o){var a,l;const s=new Map;for(const c of t.nodes){const h=i(c);s.has(h)||s.set(h,[]),s.get(h).push(c)}for(const[,c]of s){if(c.some(p=>typeof p.offset=="number"))continue;const u=c.reduce((p,y)=>p+(y.y1-y.y0),0)+Math.max(0,c.length-1)*o;c.sort((p,y)=>(y.value??0)-(p.value??0)||String(p.name??p.id).localeCompare(String(y.name??y.id)));let d=Math.max(0,(r-u)/2);for(const p of c){const y=p.y1-p.y0;p.y0=d,p.y1=d+y,d=p.y1+o}}for(const c of t.nodes)(a=c.sourceLinks)==null||a.sort((h,f)=>(h.target.y0??0)-(f.target.y0??0)),(l=c.targetLinks)==null||l.sort((h,f)=>(h.source.y0??0)-(f.source.y0??0));e.update(t)}centerAndSpreadNodes(t,e,i,r,o){const s=new Map;for(const a of t.nodes){const l=a.layer??a.depth??0;s.has(l)||s.set(l,[]),s.get(l).push(a)}for(const[,a]of s){if(a.sort((f,u)=>f.y0-u.y0),r!==1&&a.length>1){const f=a[0].y0,u=a[a.length-1].y1,d=(f+u)/2;for(const p of a){const y=(p.y0+p.y1)/2,g=p.y1-p.y0,m=d+(y-d)*r;p.y0=m-g/2,p.y1=m+g/2}for(let p=1;p<a.length;p++){const y=a[p-1].y1+o-a[p].y0;y>0&&(a[p].y0+=y,a[p].y1+=y)}}const l=a[0].y0,c=a[a.length-1].y1,h=(i-(c-l))/2-l;for(const f of a){const u=f.y1-f.y0,d=f.y0+h;f.y0=Math.max(0,Math.min(i-u,d)),f.y1=f.y0+u}}e.update(t)}buildGraph(){const t=new Map,e=[],i=this.config.nodes||[];for(const r of i)t.set(r.id,{id:r.id,name:r.name||r.id,color:r.color,column:r.column,offset:r.offset});for(const r of this.data){const o=r.from,s=r.to,a=r.y??r.weight??1;o&&s&&(t.has(o)||t.set(o,{id:o,name:o}),t.has(s)||t.set(s,{id:s,name:s}),e.push({source:o,target:s,value:a}))}return{nodes:Array.from(t.values()),links:e}}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}function eA(n,t){var e,i=1;n==null&&(n=0),t==null&&(t=0);function r(){var o,s=e.length,a,l=0,c=0;for(o=0;o<s;++o)a=e[o],l+=a.x,c+=a.y;for(l=(l/s-n)*i,c=(c/s-t)*i,o=0;o<s;++o)a=e[o],a.x-=l,a.y-=c}return r.initialize=function(o){e=o},r.x=function(o){return arguments.length?(n=+o,r):n},r.y=function(o){return arguments.length?(t=+o,r):t},r.strength=function(o){return arguments.length?(i=+o,r):i},r}function nA(n){const t=+this._x.call(null,n),e=+this._y.call(null,n);return Lp(this.cover(t,e),t,e,n)}function Lp(n,t,e,i){if(isNaN(t)||isNaN(e))return n;var r,o=n._root,s={data:i},a=n._x0,l=n._y0,c=n._x1,h=n._y1,f,u,d,p,y,g,m,x;if(!o)return n._root=s,n;for(;o.length;)if((y=t>=(f=(a+c)/2))?a=f:c=f,(g=e>=(u=(l+h)/2))?l=u:h=u,r=o,!(o=o[m=g<<1|y]))return r[m]=s,n;if(d=+n._x.call(null,o.data),p=+n._y.call(null,o.data),t===d&&e===p)return s.next=o,r?r[m]=s:n._root=s,n;do r=r?r[m]=new Array(4):n._root=new Array(4),(y=t>=(f=(a+c)/2))?a=f:c=f,(g=e>=(u=(l+h)/2))?l=u:h=u;while((m=g<<1|y)===(x=(p>=u)<<1|d>=f));return r[x]=o,r[m]=s,n}function iA(n){var t,e,i=n.length,r,o,s=new Array(i),a=new Array(i),l=1/0,c=1/0,h=-1/0,f=-1/0;for(e=0;e<i;++e)isNaN(r=+this._x.call(null,t=n[e]))||isNaN(o=+this._y.call(null,t))||(s[e]=r,a[e]=o,r<l&&(l=r),r>h&&(h=r),o<c&&(c=o),o>f&&(f=o));if(l>h||c>f)return this;for(this.cover(l,c).cover(h,f),e=0;e<i;++e)Lp(this,s[e],a[e],n[e]);return this}function rA(n,t){if(isNaN(n=+n)||isNaN(t=+t))return this;var e=this._x0,i=this._y0,r=this._x1,o=this._y1;if(isNaN(e))r=(e=Math.floor(n))+1,o=(i=Math.floor(t))+1;else{for(var s=r-e||1,a=this._root,l,c;e>n||n>=r||i>t||t>=o;)switch(c=(t<i)<<1|n<e,l=new Array(4),l[c]=a,a=l,s*=2,c){case 0:r=e+s,o=i+s;break;case 1:e=r-s,o=i+s;break;case 2:r=e+s,i=o-s;break;case 3:e=r-s,i=o-s;break}this._root&&this._root.length&&(this._root=a)}return this._x0=e,this._y0=i,this._x1=r,this._y1=o,this}function oA(){var n=[];return this.visit(function(t){if(!t.length)do n.push(t.data);while(t=t.next)}),n}function sA(n){return arguments.length?this.cover(+n[0][0],+n[0][1]).cover(+n[1][0],+n[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function De(n,t,e,i,r){this.node=n,this.x0=t,this.y0=e,this.x1=i,this.y1=r}function aA(n,t,e){var i,r=this._x0,o=this._y0,s,a,l,c,h=this._x1,f=this._y1,u=[],d=this._root,p,y;for(d&&u.push(new De(d,r,o,h,f)),e==null?e=1/0:(r=n-e,o=t-e,h=n+e,f=t+e,e*=e);p=u.pop();)if(!(!(d=p.node)||(s=p.x0)>h||(a=p.y0)>f||(l=p.x1)<r||(c=p.y1)<o))if(d.length){var g=(s+l)/2,m=(a+c)/2;u.push(new De(d[3],g,m,l,c),new De(d[2],s,m,g,c),new De(d[1],g,a,l,m),new De(d[0],s,a,g,m)),(y=(t>=m)<<1|n>=g)&&(p=u[u.length-1],u[u.length-1]=u[u.length-1-y],u[u.length-1-y]=p)}else{var x=n-+this._x.call(null,d.data),v=t-+this._y.call(null,d.data),b=x*x+v*v;if(b<e){var k=Math.sqrt(e=b);r=n-k,o=t-k,h=n+k,f=t+k,i=d.data}}return i}function cA(n){if(isNaN(h=+this._x.call(null,n))||isNaN(f=+this._y.call(null,n)))return this;var t,e=this._root,i,r,o,s=this._x0,a=this._y0,l=this._x1,c=this._y1,h,f,u,d,p,y,g,m;if(!e)return this;if(e.length)for(;;){if((p=h>=(u=(s+l)/2))?s=u:l=u,(y=f>=(d=(a+c)/2))?a=d:c=d,t=e,!(e=e[g=y<<1|p]))return this;if(!e.length)break;(t[g+1&3]||t[g+2&3]||t[g+3&3])&&(i=t,m=g)}for(;e.data!==n;)if(r=e,!(e=e.next))return this;return(o=e.next)&&delete e.next,r?(o?r.next=o:delete r.next,this):t?(o?t[g]=o:delete t[g],(e=t[0]||t[1]||t[2]||t[3])&&e===(t[3]||t[2]||t[1]||t[0])&&!e.length&&(i?i[m]=e:this._root=e),this):(this._root=o,this)}function lA(n){for(var t=0,e=n.length;t<e;++t)this.remove(n[t]);return this}function hA(){return this._root}function uA(){var n=0;return this.visit(function(t){if(!t.length)do++n;while(t=t.next)}),n}function fA(n){var t=[],e,i=this._root,r,o,s,a,l;for(i&&t.push(new De(i,this._x0,this._y0,this._x1,this._y1));e=t.pop();)if(!n(i=e.node,o=e.x0,s=e.y0,a=e.x1,l=e.y1)&&i.length){var c=(o+a)/2,h=(s+l)/2;(r=i[3])&&t.push(new De(r,c,h,a,l)),(r=i[2])&&t.push(new De(r,o,h,c,l)),(r=i[1])&&t.push(new De(r,c,s,a,h)),(r=i[0])&&t.push(new De(r,o,s,c,h))}return this}function dA(n){var t=[],e=[],i;for(this._root&&t.push(new De(this._root,this._x0,this._y0,this._x1,this._y1));i=t.pop();){var r=i.node;if(r.length){var o,s=i.x0,a=i.y0,l=i.x1,c=i.y1,h=(s+l)/2,f=(a+c)/2;(o=r[0])&&t.push(new De(o,s,a,h,f)),(o=r[1])&&t.push(new De(o,h,a,l,f)),(o=r[2])&&t.push(new De(o,s,f,h,c)),(o=r[3])&&t.push(new De(o,h,f,l,c))}e.push(i)}for(;i=e.pop();)n(i.node,i.x0,i.y0,i.x1,i.y1);return this}function pA(n){return n[0]}function gA(n){return arguments.length?(this._x=n,this):this._x}function mA(n){return n[1]}function yA(n){return arguments.length?(this._y=n,this):this._y}function ml(n,t,e){var i=new yl(t??pA,e??mA,NaN,NaN,NaN,NaN);return n==null?i:i.addAll(n)}function yl(n,t,e,i,r,o){this._x=n,this._y=t,this._x0=e,this._y0=i,this._x1=r,this._y1=o,this._root=void 0}function Ip(n){for(var t={data:n.data},e=t;n=n.next;)e=e.next={data:n.data};return t}var Re=ml.prototype=yl.prototype;Re.copy=function(){var n=new yl(this._x,this._y,this._x0,this._y0,this._x1,this._y1),t=this._root,e,i;if(!t)return n;if(!t.length)return n._root=Ip(t),n;for(e=[{source:t,target:n._root=new Array(4)}];t=e.pop();)for(var r=0;r<4;++r)(i=t.source[r])&&(i.length?e.push({source:i,target:t.target[r]=new Array(4)}):t.target[r]=Ip(i));return n},Re.add=nA,Re.addAll=iA,Re.cover=rA,Re.data=oA,Re.extent=sA,Re.find=aA,Re.remove=cA,Re.removeAll=lA,Re.root=hA,Re.size=uA,Re.visit=fA,Re.visitAfter=dA,Re.x=gA,Re.y=yA;function _i(n){return function(){return n}}function Qn(n){return(n()-.5)*1e-6}function xA(n){return n.x+n.vx}function bA(n){return n.y+n.vy}function vA(n){var t,e,i,r=1,o=1;typeof n!="function"&&(n=_i(n==null?1:+n));function s(){for(var c,h=t.length,f,u,d,p,y,g,m=0;m<o;++m)for(f=ml(t,xA,bA).visitAfter(a),c=0;c<h;++c)u=t[c],y=e[u.index],g=y*y,d=u.x+u.vx,p=u.y+u.vy,f.visit(x);function x(v,b,k,M,P){var $=v.data,_=v.r,L=y+_;if($){if($.index>u.index){var I=d-$.x-$.vx,E=p-$.y-$.vy,C=I*I+E*E;C<L*L&&(I===0&&(I=Qn(i),C+=I*I),E===0&&(E=Qn(i),C+=E*E),C=(L-(C=Math.sqrt(C)))/C*r,u.vx+=(I*=C)*(L=(_*=_)/(g+_)),u.vy+=(E*=C)*L,$.vx-=I*(L=1-L),$.vy-=E*L)}return}return b>d+L||M<d-L||k>p+L||P<p-L}}function a(c){if(c.data)return c.r=e[c.data.index];for(var h=c.r=0;h<4;++h)c[h]&&c[h].r>c.r&&(c.r=c[h].r)}function l(){if(t){var c,h=t.length,f;for(e=new Array(h),c=0;c<h;++c)f=t[c],e[f.index]=+n(f,c,t)}}return s.initialize=function(c,h){t=c,i=h,l()},s.iterations=function(c){return arguments.length?(o=+c,s):o},s.strength=function(c){return arguments.length?(r=+c,s):r},s.radius=function(c){return arguments.length?(n=typeof c=="function"?c:_i(+c),l(),s):n},s}function wA(n){return n.index}function Fp(n,t){var e=n.get(t);if(!e)throw new Error("node not found: "+t);return e}function kA(n){var t=wA,e=f,i,r=_i(30),o,s,a,l,c,h=1;n==null&&(n=[]);function f(g){return 1/Math.min(a[g.source.index],a[g.target.index])}function u(g){for(var m=0,x=n.length;m<h;++m)for(var v=0,b,k,M,P,$,_,L;v<x;++v)b=n[v],k=b.source,M=b.target,P=M.x+M.vx-k.x-k.vx||Qn(c),$=M.y+M.vy-k.y-k.vy||Qn(c),_=Math.sqrt(P*P+$*$),_=(_-o[v])/_*g*i[v],P*=_,$*=_,M.vx-=P*(L=l[v]),M.vy-=$*L,k.vx+=P*(L=1-L),k.vy+=$*L}function d(){if(s){var g,m=s.length,x=n.length,v=new Map(s.map((k,M)=>[t(k,M,s),k])),b;for(g=0,a=new Array(m);g<x;++g)b=n[g],b.index=g,typeof b.source!="object"&&(b.source=Fp(v,b.source)),typeof b.target!="object"&&(b.target=Fp(v,b.target)),a[b.source.index]=(a[b.source.index]||0)+1,a[b.target.index]=(a[b.target.index]||0)+1;for(g=0,l=new Array(x);g<x;++g)b=n[g],l[g]=a[b.source.index]/(a[b.source.index]+a[b.target.index]);i=new Array(x),p(),o=new Array(x),y()}}function p(){if(s)for(var g=0,m=n.length;g<m;++g)i[g]=+e(n[g],g,n)}function y(){if(s)for(var g=0,m=n.length;g<m;++g)o[g]=+r(n[g],g,n)}return u.initialize=function(g,m){s=g,c=m,d()},u.links=function(g){return arguments.length?(n=g,d(),u):n},u.id=function(g){return arguments.length?(t=g,u):t},u.iterations=function(g){return arguments.length?(h=+g,u):h},u.strength=function(g){return arguments.length?(e=typeof g=="function"?g:_i(+g),p(),u):e},u.distance=function(g){return arguments.length?(r=typeof g=="function"?g:_i(+g),y(),u):r},u}const MA=1664525,AA=1013904223,Dp=4294967296;function SA(){let n=1;return()=>(n=(MA*n+AA)%Dp)/Dp}function _A(n){return n.x}function CA(n){return n.y}var PA=10,EA=Math.PI*(3-Math.sqrt(5));function TA(n){var t,e=1,i=.001,r=1-Math.pow(i,1/300),o=0,s=.6,a=new Map,l=Uo(f),c=Bi("tick","end"),h=SA();n==null&&(n=[]);function f(){u(),c.call("tick",t),e<i&&(l.stop(),c.call("end",t))}function u(y){var g,m=n.length,x;y===void 0&&(y=1);for(var v=0;v<y;++v)for(e+=(o-e)*r,a.forEach(function(b){b(e)}),g=0;g<m;++g)x=n[g],x.fx==null?x.x+=x.vx*=s:(x.x=x.fx,x.vx=0),x.fy==null?x.y+=x.vy*=s:(x.y=x.fy,x.vy=0);return t}function d(){for(var y=0,g=n.length,m;y<g;++y){if(m=n[y],m.index=y,m.fx!=null&&(m.x=m.fx),m.fy!=null&&(m.y=m.fy),isNaN(m.x)||isNaN(m.y)){var x=PA*Math.sqrt(.5+y),v=y*EA;m.x=x*Math.cos(v),m.y=x*Math.sin(v)}(isNaN(m.vx)||isNaN(m.vy))&&(m.vx=m.vy=0)}}function p(y){return y.initialize&&y.initialize(n,h),y}return d(),t={tick:u,restart:function(){return l.restart(f),t},stop:function(){return l.stop(),t},nodes:function(y){return arguments.length?(n=y,d(),a.forEach(p),t):n},alpha:function(y){return arguments.length?(e=+y,t):e},alphaMin:function(y){return arguments.length?(i=+y,t):i},alphaDecay:function(y){return arguments.length?(r=+y,t):+r},alphaTarget:function(y){return arguments.length?(o=+y,t):o},velocityDecay:function(y){return arguments.length?(s=1-y,t):1-s},randomSource:function(y){return arguments.length?(h=y,a.forEach(p),t):h},force:function(y,g){return arguments.length>1?(g==null?a.delete(y):a.set(y,p(g)),t):a.get(y)},find:function(y,g,m){var x=0,v=n.length,b,k,M,P,$;for(m==null?m=1/0:m*=m,x=0;x<v;++x)P=n[x],b=y-P.x,k=g-P.y,M=b*b+k*k,M<m&&($=P,m=M);return $},on:function(y,g){return arguments.length>1?(c.on(y,g),t):c.on(y)}}}function $A(){var n,t,e,i,r=_i(-30),o,s=1,a=1/0,l=.81;function c(d){var p,y=n.length,g=ml(n,_A,CA).visitAfter(f);for(i=d,p=0;p<y;++p)t=n[p],g.visit(u)}function h(){if(n){var d,p=n.length,y;for(o=new Array(p),d=0;d<p;++d)y=n[d],o[y.index]=+r(y,d,n)}}function f(d){var p=0,y,g,m=0,x,v,b;if(d.length){for(x=v=b=0;b<4;++b)(y=d[b])&&(g=Math.abs(y.value))&&(p+=y.value,m+=g,x+=g*y.x,v+=g*y.y);d.x=x/m,d.y=v/m}else{y=d,y.x=y.data.x,y.y=y.data.y;do p+=o[y.data.index];while(y=y.next)}d.value=p}function u(d,p,y,g){if(!d.value)return!0;var m=d.x-t.x,x=d.y-t.y,v=g-p,b=m*m+x*x;if(v*v/l<b)return b<a&&(m===0&&(m=Qn(e),b+=m*m),x===0&&(x=Qn(e),b+=x*x),b<s&&(b=Math.sqrt(s*b)),t.vx+=m*d.value*i/b,t.vy+=x*d.value*i/b),!0;if(d.length||b>=a)return;(d.data!==t||d.next)&&(m===0&&(m=Qn(e),b+=m*m),x===0&&(x=Qn(e),b+=x*x),b<s&&(b=Math.sqrt(s*b)));do d.data!==t&&(v=o[d.data.index]*i/b,t.vx+=m*v,t.vy+=x*v);while(d=d.next)}return c.initialize=function(d,p){n=d,e=p,h()},c.strength=function(d){return arguments.length?(r=typeof d=="function"?d:_i(+d),h(),c):r},c.distanceMin=function(d){return arguments.length?(s=d*d,c):Math.sqrt(s)},c.distanceMax=function(d){return arguments.length?(a=d*d,c):Math.sqrt(a)},c.theta=function(d){return arguments.length?(l=d*d,c):Math.sqrt(l)},c}class LA extends Ut{constructor(t){super(t),this.simulation=null}render(){var E,C,S;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.config,{nodes:o,links:s}=this.buildGraph();if(o.length===0)return;const a=r.link||{},l=r.layoutAlgorithm||{},c=r.draggable!==!1,h=l.linkLength??a.distance??80,f=a.color??"#999",u=a.width,d=a.dashStyle,p=l.maxIterations??300,y=l.gravitationalConstant??-200,g=l.friction??.9,m=l.maxSpeed??10,x=l.initialPositions,v=l.attractiveForce,b=l.repulsiveForce;if(x==="circle"){const w=t.width/2,A=t.height/2,T=Math.min(t.width,t.height)/3;o.forEach((F,D)=>{const R=2*Math.PI*D/o.length;F.x=w+T*Math.cos(R),F.y=A+T*Math.sin(R)})}else x==="random"?o.forEach(w=>{w.x=Math.random()*t.width,w.y=Math.random()*t.height}):typeof x=="function"&&x(o);const k=Math.sqrt(t.width*t.height/Math.max(o.length,1)),M=kA(s).id(w=>w.id);v?M.distance(w=>v(Math.sqrt((w.source.x-w.target.x)**2+(w.source.y-w.target.y)**2)||1,k)):M.distance(h);const P=$A();b?P.strength(w=>-b(1,k)):P.strength(y),this.simulation=TA(o).force("link",M).force("charge",P).force("center",eA(t.width/2,t.height/2)).force("collide",vA(20)).velocityDecay(1-g).alphaDecay(1-Math.pow(.001,1/p)).stop();for(let w=0;w<p;w++)this.simulation.tick(),o.forEach(A=>{const T=Math.abs(A.vx||0),F=Math.abs(A.vy||0);T>m&&(A.vx=Math.sign(A.vx)*m),F>m&&(A.vy=Math.sign(A.vy)*m)});o.forEach(w=>{var T;const A=((T=w.marker)==null?void 0:T.radius)||10;w.x=Math.max(A+30,Math.min(t.width-A-30,w.x??0)),w.y=Math.max(A+18,Math.min(t.height-A-6,w.y??0))});const $=this.getDashArray(d),_=this.group.selectAll(".katucharts-network-link").data(s).join("line").attr("class","katucharts-network-link").attr("x1",w=>w.source.x).attr("y1",w=>w.source.y).attr("x2",w=>w.target.x).attr("y2",w=>w.target.y).attr("stroke",f).attr("stroke-width",w=>u??Math.sqrt(w.value||1)).attr("stroke-dasharray",$);i?_.attr("stroke-opacity",0).transition().duration(vt).ease(pt).attr("stroke-opacity",.6):_.attr("stroke-opacity",.6);const L=this.group.selectAll(".katucharts-network-node").data(o).join("circle").attr("class","katucharts-network-node").attr("cx",w=>w.x).attr("cy",w=>w.y).attr("fill",(w,A)=>w.color||e[A%e.length]).attr("stroke",this.autoBorderColor()).attr("stroke-width",1.5).style("cursor",c?"grab":"pointer");if(i?L.attr("r",0).transition().duration(vt).ease(pt).attr("r",w=>{var A;return((A=w.marker)==null?void 0:A.radius)||10}):L.attr("r",w=>{var A;return((A=w.marker)==null?void 0:A.radius)||10}),c){const w=gf().on("start",(A,T)=>{st(A.sourceEvent.target).style("cursor","grabbing"),this.simulation&&this.simulation.alphaTarget(.3).restart(),T.fx=T.x,T.fy=T.y}).on("drag",(A,T)=>{T.fx=A.x,T.fy=A.y,T.x=A.x,T.y=A.y,this.updatePositions(L,_,I)}).on("end",(A,T)=>{st(A.sourceEvent.target).style("cursor","grab"),this.simulation&&this.simulation.alphaTarget(0),T.fx=null,T.fy=null});L.call(w)}L.on("mouseover",(w,A)=>{var R;const T=st(w.currentTarget),F=((R=A.marker)==null?void 0:R.radius)||10;T.transition("size").duration(Z).ease(j).attr("r",F+4),T.style("filter","drop-shadow(0 2px 6px rgba(0,0,0,0.3))"),L.interrupt("highlight"),_.interrupt("highlight"),L.attr("opacity",1),_.transition("highlight").duration(Z).ease(j).attr("stroke-opacity",z=>z.source===A||z.target===A?.9:.1).attr("stroke-width",z=>z.source===A||z.target===A?3:u??Math.sqrt(z.value||1)),L.filter(z=>z!==A).transition("highlight").duration(Z).ease(j).attr("opacity",z=>s.some(W=>W.source===A&&W.target===z||W.target===A&&W.source===z)?1:.3);const D=o.indexOf(A);this.context.events.emit("point:mouseover",{point:{name:A.name||A.id},index:D,series:this,event:w,plotX:A.x,plotY:A.y})}).on("mouseout",(w,A)=>{var D;const T=st(w.currentTarget);T.transition("size").duration(Z).ease(j).attr("r",((D=A.marker)==null?void 0:D.radius)||10),T.style("filter",""),L.interrupt("highlight"),_.interrupt("highlight"),_.transition("highlight").duration(Z).ease(j).attr("stroke-opacity",.6).attr("stroke-width",R=>u??Math.sqrt(R.value||1)),L.transition("highlight").duration(Z).ease(j).attr("opacity",1);const F=o.indexOf(A);this.context.events.emit("point:mouseout",{point:{name:A.name||A.id},index:F,series:this,event:w})}).on("click",(w,A)=>{const T=o.indexOf(A);this.context.events.emit("point:click",{point:{name:A.name||A.id},index:T,series:this,event:w})});const I=this.group.selectAll(".katucharts-network-label").data(o).join("text").attr("class","katucharts-network-label").attr("x",w=>w.x).attr("y",w=>w.y-14).attr("text-anchor","middle").attr("font-size",kt).attr("fill",this.autoLabelColor(((E=this.config.dataLabels)==null?void 0:E.color)||((S=(C=this.config.dataLabels)==null?void 0:C.style)==null?void 0:S.color))).style("pointer-events","none").text(w=>w.name||w.id);i&&I.attr("opacity",0).transition().duration(vt).ease(pt).attr("opacity",1)}updatePositions(t,e,i){t.attr("cx",r=>r.x).attr("cy",r=>r.y),e.attr("x1",r=>r.source.x).attr("y1",r=>r.source.y).attr("x2",r=>r.target.x).attr("y2",r=>r.target.y),i.attr("x",r=>r.x).attr("y",r=>r.y-14)}getDashArray(t){return t&&{Solid:"none",ShortDash:"6,2",ShortDot:"2,2",ShortDashDot:"6,2,2,2",Dot:"2,6",Dash:"8,6",LongDash:"16,6",DashDot:"8,6,2,6",LongDashDot:"16,6,2,6",LongDashDotDot:"16,6,2,6,2,6"}[t]||"none"}buildGraph(){const t=new Map,e=[],i=this.config.nodes||[];for(const r of i)t.set(r.id,{...r});for(const r of this.data){const o=r[0]||r.from,s=r[1]||r.to;o&&s&&(t.has(o)||t.set(o,{id:o,name:o}),t.has(s)||t.set(s,{id:s,name:s}),e.push({source:o,target:s,value:r.y??1}))}return{nodes:Array.from(t.values()),links:e}}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}destroy(){this.simulation&&(this.simulation.stop(),this.simulation=null),super.destroy()}}var IA=Math.PI,Rp=IA*2,zp=Math.max;function Bp(n,t){return Array.from({length:t-n},(e,i)=>n+i)}function FA(n){return function(t,e){return n(t.source.value+t.target.value,e.source.value+e.target.value)}}function DA(){return RA(!1)}function RA(n,t){var e=0,i=null,r=null,o=null;function s(a){var l=a.length,c=new Array(l),h=Bp(0,l),f=new Array(l*l),u=new Array(l),d=0,p;a=Float64Array.from({length:l*l},(y,g)=>a[g/l|0][g%l]);for(let y=0;y<l;++y){let g=0;for(let m=0;m<l;++m)g+=a[y*l+m]+n*a[m*l+y];d+=c[y]=g}d=zp(0,Rp-e*l)/d,p=d?e:Rp/l;{let y=0;i&&h.sort((g,m)=>i(c[g],c[m]));for(const g of h){const m=y;{const x=Bp(0,l).filter(v=>a[g*l+v]||a[v*l+g]);r&&x.sort((v,b)=>r(a[g*l+v],a[g*l+b]));for(const v of x){let b;if(g<v?(b=f[g*l+v]||(f[g*l+v]={source:null,target:null}),b.source={index:g,startAngle:y,endAngle:y+=a[g*l+v]*d,value:a[g*l+v]}):(b=f[v*l+g]||(f[v*l+g]={source:null,target:null}),b.target={index:g,startAngle:y,endAngle:y+=a[g*l+v]*d,value:a[g*l+v]},g===v&&(b.source=b.target)),b.source&&b.target&&b.source.value<b.target.value){const k=b.source;b.source=b.target,b.target=k}}u[g]={index:g,startAngle:m,endAngle:y,value:c[g]}}y+=p}}return f=Object.values(f),f.groups=u,o?f.sort(o):f}return s.padAngle=function(a){return arguments.length?(e=zp(0,a),s):e},s.sortGroups=function(a){return arguments.length?(i=a,s):i},s.sortSubgroups=function(a){return arguments.length?(r=a,s):r},s.sortChords=function(a){return arguments.length?(a==null?o=null:(o=FA(a))._=a,s):o&&o._},s}class zA extends Ut{constructor(t){super(t)}render(){var jr,qr,Zr;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.config,o=r.labelType??"max",s=vt*2,a=8,l=Math.round(s*.48),c=12,h=Math.round(l*.65),f=l+8,u=r.nodeWidth??20,d=r.linkOpacity??.5;r.minLinkWidth;const p=(r.startAngle??0)*(Math.PI/180),y=(jr=this.group.node())==null?void 0:jr.parentElement;y&&st(y).attr("clip-path",null);const g=this.group.select(function(){return this.ownerSVGElement});g.empty()||g.style("overflow","visible");const m=r.center||["50%","50%"],x=this.resolvePercent(m[0],t.width),v=this.resolvePercent(m[1],t.height),b=r.size,k=o==="small"?34:70,M=o==="small"?34:24,P=Math.max(80,Math.min(t.width-2*k,t.height-2*M)),$=b?this.resolvePercent(b,P):P,_=Math.max(40,$/2-2),L=_-u,{matrix:I,names:E,nodeColors:C}=this.buildMatrix();if(E.length===0)return;const w=(r.nodePadding??2)/(_>0?_:1),T=DA().padAngle(w).sortSubgroups(null)(I);this.normalizeChordWidths(T),this.sortChordEndpoints(T);const F=Ce().innerRadius(L).outerRadius(_).cornerRadius(3),D=Ce().innerRadius(L).outerRadius(_+4).cornerRadius(3),R=r.curveFactor??.05,z=rt=>{const ot=L,ut=rt.source.startAngle+p-Math.PI/2,wt=rt.source.endAngle+p-Math.PI/2,yt=rt.target.startAngle+p-Math.PI/2,mt=rt.target.endAngle+p-Math.PI/2,J=ot*Math.cos(ut),Et=ot*Math.sin(ut),zt=ot*Math.cos(wt),gt=ot*Math.sin(wt),jt=ot*Math.cos(yt),Ot=ot*Math.sin(yt),qt=ot*Math.cos(mt),ne=ot*Math.sin(mt),Vt=Math.abs(wt-ut)>Math.PI?1:0,un=Math.abs(mt-yt)>Math.PI?1:0;let Be=Math.abs(yt-wt);Be>Math.PI&&(Be=2*Math.PI-Be);const Ye=Be/Math.PI,Ee=ot*Math.max(R,(1-Ye)*(1-Ye)*(1-Ye));let fn=Math.abs(ut-mt);fn>Math.PI&&(fn=2*Math.PI-fn);const yn=fn/Math.PI,Gn=ot*Math.max(R,(1-yn)*(1-yn)*(1-yn));return`M${J},${Et}A${ot},${ot},0,${Vt},1,${zt},${gt}C${Ee*Math.cos(wt)},${Ee*Math.sin(wt)},${Ee*Math.cos(yt)},${Ee*Math.sin(yt)},${jt},${Ot}A${ot},${ot},0,${un},1,${qt},${ne}C${Gn*Math.cos(mt)},${Gn*Math.sin(mt)},${Gn*Math.cos(ut)},${Gn*Math.sin(ut)},${J},${Et}Z`},B=this.group.append("g").attr("transform",`translate(${x},${v})`),W=rt=>C[rt]||e[rt%e.length],K=r.linkColorMode??"from",X=B.append("defs");let q=null;K==="gradient"&&(q=X);const N=rt=>W(K==="to"?rt.target.index:rt.source.index),H=u*2,Y=(rt,ot,ut,wt)=>{const yt=`katucharts-dw-edge-${wt}-${ut}-${Math.random().toString(36).slice(2,6)}`,mt=L*Math.cos(rt),J=L*Math.sin(rt),Et=(L-H)*Math.cos(rt),zt=(L-H)*Math.sin(rt);return X.append("linearGradient").attr("id",yt).attr("gradientUnits","userSpaceOnUse").attr("x1",mt).attr("y1",J).attr("x2",Et).attr("y2",zt).selectAll("stop").data([{offset:"0%",opacity:.7},{offset:"25%",opacity:.2},{offset:"50%",opacity:.05},{offset:"100%",opacity:0}]).join("stop").attr("offset",gt=>gt.offset).attr("stop-color",ot).attr("stop-opacity",gt=>gt.opacity),yt},G=K!=="gradient";let Q,O;if(G){const rt=new Map;for(const wt of T){const yt=N(wt);rt.has(yt)||rt.set(yt,[]),rt.get(yt).push(wt)}const ot=B.append("g").attr("class","katucharts-chord-container");for(const[wt,yt]of rt)ot.append("g").attr("class","katucharts-chord-group").attr("opacity",d).selectAll(".katucharts-chord").data(yt).join("path").attr("class","katucharts-chord").attr("d",J=>z(J)).attr("fill",wt).attr("fill-opacity",1).attr("stroke","none").style("cursor","pointer");Q=ot.selectAll(".katucharts-chord"),O=ot.selectAll(".katucharts-chord-group");const ut=B.append("g").attr("class","katucharts-chord-edges").attr("opacity",d);if(T.forEach((wt,yt)=>{const mt=W(wt.source.index),J=W(wt.target.index);if(mt===J)return;const Et=z(wt),zt=(wt.target.startAngle+wt.target.endAngle)/2+p-Math.PI/2,gt=Y(zt,J,yt,"tgt");ut.append("path").attr("d",Et).attr("fill",`url(#${gt})`).attr("stroke","none").style("pointer-events","none");const jt=(wt.source.startAngle+wt.source.endAngle)/2+p-Math.PI/2,Ot=Y(jt,mt,yt,"src");ut.append("path").attr("d",Et).attr("fill",`url(#${Ot})`).attr("stroke","none").style("pointer-events","none")}),i){ut.attr("opacity",0);const wt=B.append("defs"),yt=Math.round(s*.62);Q.each(function(J,Et){const zt=f+Et*a,gt=`dw-clip-${Et}-${Math.random().toString(36).slice(2,6)}`,jt=J.source.startAngle+p-Math.PI/2,Ot=J.source.endAngle+p-Math.PI/2,qt=J.target.startAngle+p-Math.PI/2,ne=J.target.endAngle+p-Math.PI/2,Vt=(jt+Ot)/2,un=(qt+ne)/2,Be=L*Math.cos(Vt),Ye=L*Math.sin(Vt),Ee=L*Math.cos(un),fn=L*Math.sin(un),yn=Math.atan2(fn-Ye,Ee-Be)*180/Math.PI,Gn=Math.sqrt((Ee-Be)**2+(fn-Ye)**2)+_*2,Kr=wt.append("clipPath").attr("id",gt).attr("clipPathUnits","userSpaceOnUse"),V=Kr.append("rect").attr("transform",`translate(${Be},${Ye}) rotate(${yn})`).attr("x",-_).attr("y",-_).attr("width",0).attr("height",_*2),tt=st(this);tt.attr("clip-path",`url(#${gt})`),V.transition("enter").duration(yt).delay(zt).ease(pt).attr("width",Gn).on("end",function(){tt.attr("clip-path",null),Kr.remove()})});const mt=f+(T.length-1)*a+yt;ut.transition("enter").duration(300).delay(mt).ease(pt).attr("opacity",d)}}else if(Q=B.selectAll(".katucharts-chord").data(T).join("path").attr("class","katucharts-chord").attr("d",rt=>z(rt)).attr("stroke","none").style("cursor","pointer"),Q.each(function(rt,ot){const ut=`katucharts-dw-grad-${ot}-${Math.random().toString(36).slice(2,6)}`,wt=(rt.source.startAngle+rt.source.endAngle)/2+p-Math.PI/2,yt=(rt.target.startAngle+rt.target.endAngle)/2+p-Math.PI/2;q.append("linearGradient").attr("id",ut).attr("gradientUnits","userSpaceOnUse").attr("x1",L*Math.cos(wt)).attr("y1",L*Math.sin(wt)).attr("x2",L*Math.cos(yt)).attr("y2",L*Math.sin(yt)).selectAll("stop").data([{offset:"0%",color:W(rt.source.index)},{offset:"100%",color:W(rt.target.index)}]).join("stop").attr("offset",mt=>mt.offset).attr("stop-color",mt=>mt.color),st(this).attr("fill",`url(#${ut})`)}),i){Q.attr("fill-opacity",d);const rt=B.append("defs"),ot=Math.round(s*.62);Q.each(function(ut,wt){const yt=f+wt*a,mt=`dw-clip-${wt}-${Math.random().toString(36).slice(2,6)}`,J=ut.source.startAngle+p-Math.PI/2,Et=ut.source.endAngle+p-Math.PI/2,zt=ut.target.startAngle+p-Math.PI/2,gt=ut.target.endAngle+p-Math.PI/2,jt=(J+Et)/2,Ot=(zt+gt)/2,qt=L*Math.cos(jt),ne=L*Math.sin(jt),Vt=L*Math.cos(Ot),un=L*Math.sin(Ot),Be=Math.atan2(un-ne,Vt-qt)*180/Math.PI,Ye=Math.sqrt((Vt-qt)**2+(un-ne)**2)+_*2,Ee=rt.append("clipPath").attr("id",mt).attr("clipPathUnits","userSpaceOnUse"),fn=Ee.append("rect").attr("transform",`translate(${qt},${ne}) rotate(${Be})`).attr("x",-_).attr("y",-_).attr("width",0).attr("height",_*2),yn=st(this);yn.attr("clip-path",`url(#${mt})`),fn.transition("enter").duration(ot).delay(yt).ease(pt).attr("width",Ye).on("end",function(){yn.attr("clip-path",null),Ee.remove()})})}else Q.attr("fill-opacity",d);const nt=(rt,ot,ut)=>{const wt=E[ut.source.index],yt=E[ut.target.index],mt={name:`${wt} → ${yt}`,from:wt,to:yt,y:ut.source.value,weight:ut.source.value,fromNode:{name:wt},toNode:{name:yt}};if(rt==="mouseover"){this.context.events.emit("point:mouseover",{point:mt,index:T.indexOf(ut),series:this,event:ot,plotX:ot.offsetX-this.context.plotArea.x,plotY:ot.offsetY-this.context.plotArea.y});return}if(rt==="mouseout"){this.context.events.emit("point:mouseout",{point:mt,index:T.indexOf(ut),series:this,event:ot});return}this.context.events.emit("point:click",{point:mt,index:T.indexOf(ut),series:this,event:ot})},et=(rt,ot)=>{Q.interrupt("highlight"),Mt.interrupt("highlight"),O&&O.interrupt("highlight").attr("opacity",1),Q.transition("highlight").duration(Z).ease(j).attr("fill-opacity",ut=>ut===ot?Math.min(d+.35,1):.05),Mt.attr("opacity",1),Mt.transition("highlight").duration(Z).ease(j).attr("opacity",ut=>ut.index===ot.source.index||ut.index===ot.target.index?1:.3),nt("mouseover",rt,ot)},ht=(rt,ot)=>{Q.interrupt("highlight"),Mt.interrupt("highlight"),O?(O.interrupt("highlight"),O.transition("highlight").duration(Z).ease(j).attr("opacity",d),Q.transition("highlight").duration(Z).ease(j).attr("fill-opacity",1)):Q.transition("highlight").duration(Z).ease(j).attr("fill-opacity",d),Mt.transition("highlight").duration(Z).ease(j).attr("opacity",1),nt("mouseout",rt,ot)},ft=(rt,ot)=>{nt("click",rt,ot)};Q.on("mouseover",et).on("mouseout",ht).on("click",ft);const ct=T.groups.map(rt=>({...rt,startAngle:rt.startAngle+p,endAngle:rt.endAngle+p})),it=rt=>{const ot=Math.PI*2;let ut=rt%ot;return ut<0&&(ut+=ot),ut},U=(rt,ot)=>{const ut=rt.offsetX-this.context.plotArea.x-x,wt=rt.offsetY-this.context.plotArea.y-v,yt=it(Math.atan2(wt,ut)+Math.PI/2),mt=T.filter(Ot=>Ot.source.index===ot.index||Ot.target.index===ot.index);if(mt.length===0)return null;const J=Ot=>Ot.source.index===ot.index?Ot.source:Ot.target,Et=Ot=>{const qt=J(Ot),ne=it(qt.startAngle+p),Vt=it(qt.endAngle+p);return ne<=Vt?yt>=ne&&yt<=Vt:yt>=ne||yt<=Vt},zt=mt.find(Et);if(zt)return zt;let gt=mt[0],jt=1/0;for(const Ot of mt){const qt=J(Ot),ne=it((qt.startAngle+qt.endAngle)/2+p);let Vt=Math.abs(yt-ne);Vt>Math.PI&&(Vt=Math.PI*2-Vt),Vt<jt&&(jt=Vt,gt=Ot)}return gt},at=rt=>{const ot=E[rt.source.index],ut=E[rt.target.index];return{name:`${ot} → ${ut}`,from:ot,to:ut,y:rt.source.value,weight:rt.source.value,fromNode:{name:ot},toNode:{name:ut}}},xt=r.borderColor??this.autoBorderColor(),_t=r.borderWidth??1,Mt=B.selectAll(".katucharts-chord-arc").data(ct).join("path").attr("class","katucharts-chord-arc").attr("fill",rt=>W(rt.index)).attr("stroke",xt).attr("stroke-width",_t).style("cursor","pointer");i?Mt.each(function(rt,ot){const ut=st(this),wt={startAngle:rt.startAngle,endAngle:rt.startAngle},yt=ce(wt,rt);ut.transition("enter").duration(l).delay(ot*c).ease(pt).attrTween("d",()=>mt=>F(yt(mt)))}):Mt.attr("d",F),Mt.on("mouseover",(rt,ot)=>{st(rt.currentTarget).transition("arc").duration(Z).ease(j).attr("d",D(ot)),Q.interrupt("highlight"),Mt.interrupt("highlight"),O&&O.interrupt("highlight").attr("opacity",1),Q.transition("highlight").duration(Z).ease(j).attr("fill-opacity",yt=>yt.source.index===ot.index||yt.target.index===ot.index?Math.min(d+.35,1):.05),Mt.attr("opacity",1),Mt.filter(yt=>yt!==ot).transition("highlight").duration(Z).ease(j).attr("opacity",yt=>T.some(J=>J.source.index===ot.index&&J.target.index===yt.index||J.target.index===ot.index&&J.source.index===yt.index)?1:.3),Je.filter(yt=>yt.index===ot.index).transition("label").duration(Z).ease(j).attr("opacity",1);const wt=U(rt,ot);this.context.events.emit("point:mouseover",{point:wt?at(wt):{name:E[ot.index],y:ot.value,sum:ot.value},index:ot.index,series:this,event:rt,plotX:rt.offsetX-this.context.plotArea.x,plotY:rt.offsetY-this.context.plotArea.y})}).on("mouseout",(rt,ot)=>{st(rt.currentTarget).transition("arc").duration(Z).ease(j).attr("d",F(ot)),Q.interrupt("highlight"),Mt.interrupt("highlight"),O?(O.interrupt("highlight"),O.transition("highlight").duration(Z).ease(j).attr("opacity",d),Q.transition("highlight").duration(Z).ease(j).attr("fill-opacity",1)):Q.transition("highlight").duration(Z).ease(j).attr("fill-opacity",d),Mt.transition("highlight").duration(Z).ease(j).attr("opacity",1),Je.filter(yt=>yt.index===ot.index).transition("label").duration(Z).ease(j).attr("opacity",yt=>hn(yt)?1:0);const wt=U(rt,ot);this.context.events.emit("point:mouseout",{point:wt?at(wt):{name:E[ot.index],y:ot.value,sum:ot.value},index:ot.index,series:this,event:rt})}).on("click",(rt,ot)=>{const ut=U(rt,ot);this.context.events.emit("point:click",{point:ut?at(ut):{name:E[ot.index],y:ot.value,sum:ot.value},index:ot.index,series:this,event:rt})}),B.append("g").attr("class","katucharts-chord-hitareas").selectAll(".katucharts-chord-hitarea").data(T).join("path").attr("class","katucharts-chord-hitarea").attr("d",rt=>z(rt)).attr("fill","#ffffff").attr("fill-opacity",0).attr("stroke","#ffffff").attr("stroke-opacity",0).attr("stroke-width",12).attr("stroke-linejoin","round").style("cursor","pointer").style("pointer-events","all").on("mouseover",et).on("mouseout",ht).on("click",ft);const Pt=this.config.dataLabels||{},Gt=Pt.color||((qr=Pt.style)==null?void 0:qr.color)||xe,Ht=((Zr=Pt.style)==null?void 0:Zr.fontSize)||kt,Nt=be(Ht),Jt=22,re=_+Jt,Lt=Math.max(Nt*1.6,17),Qt="…",pe=We(Qt,Nt,"bold"),Ze=(rt,ot)=>{if(!rt||ot<=pe)return"";if(We(rt,Nt,"bold")<=ot)return rt;let ut="";for(const wt of rt){if(We(ut+wt,Nt,"bold")+pe>ot)break;ut+=wt}return ut=ut.trimEnd(),(ut||rt[0])+Qt},ge=t.width-x,Sn=x,ei=v,Ge=t.height-v,ze=ct.map(rt=>{const ot=(rt.startAngle+rt.endAngle)/2,ut=Math.sin(ot)>=0;return{index:rt.index,mid:ot,span:rt.endAngle-rt.startAngle,isRight:ut,ax:_*Math.sin(ot),ay:-_*Math.cos(ot),lx:re*Math.sin(ot),ly:-re*Math.cos(ot),rank:rt.value||0,color:W(rt.index),visible:!!E[rt.index]}}),hn=rt=>!!rt.visible,Ke=B.append("g").attr("class","katucharts-chord-labels");let Je;if(o==="small"){const rt=Math.PI*2,ot=_+6+Nt*.5,ut=mt=>[ot*Math.sin(mt),-ot*Math.cos(mt)],wt=(mt,J)=>{if(!mt)return"";const Et=J*ot-2;if(Et<We(mt[0],Nt,"bold"))return"";if(We(mt,Nt,"bold")<=Et)return mt;let zt="";for(const gt of mt){if(zt&&We(zt+gt,Nt,"bold")>Et)break;zt+=gt}return zt},yt=B.append("defs");if(Je=Ke.selectAll(".katucharts-chord-label").data(ze.filter(mt=>mt.visible)).join("text").attr("class","katucharts-chord-label").attr("font-size",Ht).attr("font-weight","bold").attr("fill",Gt).style("pointer-events","none").attr("opacity",0),Je.each((mt,J,Et)=>{const zt=st(Et[J]);zt.text(null);const gt=wt(E[mt.index]||"",mt.span);if(!gt)return;const jt=(mt.mid%rt+rt)%rt,Ot=jt>Math.PI/2&&jt<Math.PI*3/2,qt=mt.span/2,[ne,Vt]=ut(Ot?mt.mid+qt:mt.mid-qt),[un,Be]=ut(Ot?mt.mid-qt:mt.mid+qt),Ye=Ot?0:1,Ee=`katucharts-dw-label-${J}-${Math.random().toString(36).slice(2,6)}`;yt.append("path").attr("id",Ee).attr("fill","none").attr("d",`M${ne},${Vt}A${ot},${ot},0,0,${Ye},${un},${Be}`),zt.append("textPath").attr("href",`#${Ee}`).attr("startOffset","50%").attr("text-anchor","middle").attr("dominant-baseline","central").text(gt)}),i){Je.transition("enter").duration(300).delay(h).ease(pt).attr("opacity",1);const mt=Math.round(s*.62),J=T.length,Et=f+J*a+mt;this.emitAfterAnimate(Et+100)}else Je.attr("opacity",1)}else{const rt=Math.max(1,ei-5+(Ge-5));if(o==="medium"){const Et=Math.max(1,Math.min(10,Math.floor(rt/(Lt*1.2))))*2,zt=ze.filter(gt=>gt.visible).sort((gt,jt)=>jt.rank-gt.rank);zt.length>Et&&zt.slice(Et).forEach(gt=>{gt.visible=!1})}else{const J=Math.max(3,Math.floor(rt/(Lt*2)));for(const Et of[!0,!1])ze.filter(gt=>gt.visible&&gt.isRight===Et).sort((gt,jt)=>jt.rank-gt.rank).slice(J).forEach(gt=>{gt.visible=!1})}this.distributeChordLabels(ze.filter(J=>J.visible&&J.isRight),Lt,ei,Ge),this.distributeChordLabels(ze.filter(J=>J.visible&&!J.isRight),Lt,ei,Ge);const ot=Math.max(Nt*1.4,16),ut=J=>{const Et=J.filter(Ot=>Ot.visible).sort((Ot,qt)=>Ot.ly-qt.ly),zt=Et.length*Lt/rt;let gt=1;Et.length>=8&&zt>.5&&(gt=2),Et.length>=14&&zt>.75&&(gt=3);const jt=Math.max(1,gt*2-2);Et.forEach((Ot,qt)=>{if(gt<=1){Ot.col=0;return}const ne=qt%jt;Ot.col=ne<gt?ne:jt-ne})};if(o==="medium")for(const J of ze)J.col=0;else ut(ze.filter(J=>J.isRight)),ut(ze.filter(J=>!J.isRight));for(const J of ze){if(!J.visible)continue;const Et=(J.col||0)*ot,zt=re+Et,gt=Math.max(-zt,Math.min(zt,J.ly)),jt=Math.sqrt(Math.max(0,zt*zt-gt*gt)),Ot=_*.4+Et;J.lx=J.isRight?Math.max(jt,Ot):-Math.max(jt,Ot);const qt=(J.isRight?ge:Sn)-pe-4;J.lx=J.isRight?Math.min(J.lx,qt):Math.max(J.lx,-qt)}const wt=J=>J.lx+(J.isRight?4:-4),yt=J=>Math.max(0,(J.isRight?ge-wt(J):wt(J)+Sn)-6),mt=Ke.selectAll(".katucharts-chord-connector").data(ze.filter(J=>J.visible)).join("path").attr("class","katucharts-chord-connector").attr("fill","none").attr("stroke",J=>J.color).attr("stroke-width",1).attr("opacity",0).attr("d",J=>{const Et=_+Jt*.55,zt=Et*Math.sin(J.mid),gt=-Et*Math.cos(J.mid);return`M${J.ax},${J.ay}L${zt},${gt}L${J.lx},${J.ly}`});if(Je=Ke.selectAll(".katucharts-chord-label").data(ze).join("text").attr("class","katucharts-chord-label").attr("text-anchor",J=>J.isRight?"start":"end").attr("dominant-baseline","middle").attr("font-size",Ht).attr("font-weight","bold").attr("fill",Gt).style("pointer-events","none").attr("opacity",0).attr("x",J=>wt(J)).attr("y",J=>J.ly).text(J=>J.visible&&yt(J)>=pe?Ze(E[J.index]||"",yt(J)):""),i){mt.transition("enter").duration(300).delay(h).ease(pt).attr("opacity",.8),Je.transition("enter").duration(300).delay(h).ease(pt).attr("opacity",gt=>hn(gt)?1:0);const J=Math.round(s*.62),Et=T.length,zt=f+Et*a+J;this.emitAfterAnimate(zt+100)}else mt.attr("opacity",.8),Je.attr("opacity",J=>hn(J)?1:0)}}distributeChordLabels(t,e,i,r){const o=t.filter(h=>h.visible);if(o.length<=1)return;const s=-(i-5),l=r-5-s,c=o.map(h=>({target:h.ly-s,size:e,rank:h.rank,pos:0,removed:!1,label:h}));this.distributeBoxes(c,l,l,l/4);for(const h of c)h.removed?h.label.visible=!1:h.label.ly=s+h.pos+e/2}distributeBoxes(t,e,i,r){const o=t.filter(c=>!c.removed);if(o.length===0)return;let s=o.reduce((c,h)=>c+h.size,0);if(s>e){const c=[...o].sort((f,u)=>f.rank-u.rank);let h=0;for(;s>e&&h<c.length;)c[h].removed=!0,s-=c[h].size,h++}const a=o.filter(c=>!c.removed);if(a.length===0)return;a.sort((c,h)=>c.target-h.target);for(let c=0;c<a.length;c++)if(a[c].pos=a[c].target,c>0){const h=a[c-1].pos+a[c-1].size;a[c].pos<h&&(a[c].pos=h)}for(let c=a.length-1;c>=0;c--){const h=c===a.length-1?e-a[c].size:a[c+1].pos-a[c].size;a[c].pos>h&&(a[c].pos=Math.max(0,h))}for(let c=0;c<5;c++)for(let h=0;h<a.length;h++){const f=a[h].pos+(a[h].target-a[h].pos)*.3,u=h>0?a[h-1].pos+a[h-1].size:0,d=h<a.length-1?a[h+1].pos-a[h].size:e-a[h].size;a[h].pos=Math.max(u,Math.min(d,f))}if(a.some(c=>Math.abs(c.pos-c.target)>r)){const c=e*.9;if(c>=i*.1){const h=[...a].sort((f,u)=>f.rank-u.rank);h[0].removed=!0,this.distributeBoxes(t,c,i,c/4)}}}resolvePercent(t,e){return typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:typeof t=="number"?t:parseFloat(t)||e/2}normalizeChordWidths(t){const e=t.groups;if(e.length===0)return;let i=0;for(const r of e){const o=r.endAngle-r.startAngle;o>0&&r.value>0&&(i=Math.max(i,r.value/o))}if(i!==0)for(const r of e){const o=[];for(const f of t)f.source.index===r.index&&o.push({ref:f.source,value:f.source.value}),f.target.index===r.index&&o.push({ref:f.target,value:f.target.value});if(o.length===0)continue;o.sort((f,u)=>f.ref.startAngle-u.ref.startAngle);const s=r.endAngle-r.startAngle,a=o.reduce((f,u)=>f+u.value/i,0),c=Math.max(0,s-a)/(o.length+1);let h=r.startAngle+c;for(const f of o){const u=f.value/i;f.ref.startAngle=h,f.ref.endAngle=h+u,h+=u+c}}}sortChordEndpoints(t){const e=t.groups,i=2*Math.PI;for(const r of e){const o=[],s=d=>d.side==="source"?d.chord.source:d.chord.target;for(const d of t){if(d.source.index===r.index){const p=e[d.target.index];o.push({chord:d,side:"source",partnerMid:(p.startAngle+p.endAngle)/2,width:d.source.endAngle-d.source.startAngle})}if(d.target.index===r.index){const p=e[d.source.index];o.push({chord:d,side:"target",partnerMid:(p.startAngle+p.endAngle)/2,width:d.target.endAngle-d.target.startAngle})}}if(o.length<=1)continue;const a=r.endAngle-r.startAngle,l=o.reduce((d,p)=>d+p.width,0),h=Math.max(0,a-l)/(o.length+1),f=r.endAngle;o.sort((d,p)=>{const y=((d.partnerMid-f)%i+i)%i;return((p.partnerMid-f)%i+i)%i-y});let u=r.startAngle+h;for(const d of o){const p=s(d);p.startAngle=u,p.endAngle=u+d.width,u+=d.width+h}}}buildMatrix(){const t=this.config.nodes||[],e=new Map;for(const l of t)l.color&&e.set(l.id,l.color);const i=new Set;for(const l of this.data)l.from&&i.add(l.from),l.to&&i.add(l.to);const r=Array.from(i),o=new Map(r.map((l,c)=>[l,c])),s=Array.from({length:r.length},()=>new Array(r.length).fill(0));for(const l of this.data){const c=o.get(l.from),h=o.get(l.to);if(c!==void 0&&h!==void 0){const f=l.y??l.weight??1;s[c][h]+=f,s[h][c]+=f}}const a=r.map(l=>e.get(l));return{matrix:s,names:r,nodeColors:a}}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}function Op(){$t.registerType("sankey",tA),$t.registerType("networkgraph",LA),$t.registerType("dependencywheel",zA)}class Xr{static group(t,e,i="average",r,o){if(!t.length||e<=0)return t;const s=[...t].sort((f,u)=>(f.x??0)-(u.x??0)),a=!(r!=null&&r.groupAll)&&o?s.filter(f=>{const u=f.x??0;return u>=o.min&&u<=o.max}):s,l=new Map;for(const f of a){const u=f.x??0,d=Math.floor(u/e)*e;l.has(d)||l.set(d,[]),l.get(d).push(f)}const c=(r==null?void 0:r.anchor)??"start",h=[];for(const[f,u]of l){const d=Xr.applyAnchor(f,e,c),p=Xr.approximate(d,u,i);h.push(p)}return r!=null&&r.smoothed&&h.length>=3?Xr.smooth(h):h}static applyAnchor(t,e,i){switch(i){case"middle":return t+e/2;case"end":return t+e;default:return t}}static smooth(t){const e=[t[0]];for(let i=1;i<t.length-1;i++){const r=t[i-1].y??0,o=t[i].y??0,s=t[i+1].y??0;e.push({...t[i],y:(r+o+s)/3})}return e.push(t[t.length-1]),e}static approximate(t,e,i){const r=e.map(o=>o.y??0);switch(i){case"sum":return{x:t,y:r.reduce((o,s)=>o+s,0)};case"open":return{x:t,y:r[0]};case"high":return{x:t,y:Math.max(...r)};case"low":return{x:t,y:Math.min(...r)};case"close":return{x:t,y:r[r.length-1]};case"range":return{x:t,y:Math.max(...r)-Math.min(...r)};case"ohlc":return{x:t,y:r[r.length-1],open:r[0],high:Math.max(...r),low:Math.min(...r),close:r[r.length-1]};case"average":default:return{x:t,y:r.reduce((o,s)=>o+s,0)/r.length}}}}class BA{constructor(t){this.head=0,this._size=0,this.capacity=t,this.buffer=new Array(t)}push(t){const e=this._size===this.capacity?this.buffer[this.head]:void 0,i=(this.head+this._size)%this.capacity;return this.buffer[i]=t,this._size<this.capacity?this._size++:this.head=(this.head+1)%this.capacity,e}pushMany(t){const e=[];for(const i of t){const r=this.push(i);r!==void 0&&e.push(r)}return e}get size(){return this._size}get isFull(){return this._size===this.capacity}get(t){if(!(t<0||t>=this._size))return this.buffer[(this.head+t)%this.capacity]}toArray(){const t=new Array(this._size);for(let e=0;e<this._size;e++)t[e]=this.buffer[(this.head+e)%this.capacity];return t}clear(){this.head=0,this._size=0}}class Np{constructor(){this.entries=[]}add(t,e){if(t==="setData"){this.entries=[{type:t,payload:e}];return}this.entries.push({type:t,payload:e})}get isEmpty(){return this.entries.length===0}}class OA{constructor(t,e){this.pendingUpdates=new Map,this.rafId=null,this.lastFrameTime=0,this.maxFps=t.maxFps??30,this.flushCallback=e}schedule(t,e,i){let r=this.pendingUpdates.get(t);r||(r=new Np,this.pendingUpdates.set(t,r)),r.add(e,i),this.requestFrame()}requestFrame(){this.rafId===null&&(this.rafId=requestAnimationFrame(()=>{this.rafId=null;const t=performance.now(),e=1e3/this.maxFps;if(t-this.lastFrameTime<e){this.rafId=requestAnimationFrame(()=>{this.rafId=null,this.lastFrameTime=performance.now(),this.flush()});return}this.lastFrameTime=t,this.flush()}))}flush(){if(this.pendingUpdates.size!==0){for(const[t,e]of this.pendingUpdates)e.isEmpty||t.applyBatch(e);this.pendingUpdates.clear(),this.flushCallback()}}destroy(){this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null),this.pendingUpdates.clear()}get hasPending(){return this.pendingUpdates.size>0}}class NA{static fromWebSocket(t,e,i,r){const o=(r==null?void 0:r.shift)??!1,s=a=>{let l;try{l=JSON.parse(a.data)}catch{return}const c=i(l);if(Array.isArray(c))if(e.addPoints)e.addPoints(c,!0,o);else{for(const h of c)e.addPoint(h,!1,o);e.addPoint(c[c.length-1],!0,o)}else e.addPoint(c,!0,o)};return t.addEventListener("message",s),{unsubscribe:()=>t.removeEventListener("message",s)}}static fromEventSource(t,e,i,r,o){const s=(o==null?void 0:o.shift)??!1,a=l=>{const c=r(l.data);e.addPoint(c,!0,s)};return t.addEventListener(i,a),{unsubscribe:()=>t.removeEventListener(i,a)}}static fromPolling(t,e,i,r){const o=(r==null?void 0:r.shift)??!1;let s=!0;const a=async()=>{if(s){try{const l=await t();if(!s)return;if(Array.isArray(l))if(e.addPoints)e.addPoints(l,!0,o);else for(const c of l)e.addPoint(c,!0,o);else e.addPoint(l,!0,o)}catch{}s&&setTimeout(a,i)}};return setTimeout(a,i),{unsubscribe:()=>{s=!1}}}}id(),kp(),Mp(),Op();const xl={chart(n,t){return new hs(n,t)},setOptions(n){fa(n)},getOptions(){return Th()},dateFormat:Ka,numberFormat:Ko,templateFormat:Kt,stripHtmlTags:de,color(n){return Os(n)},palettes:ao,getPalette(n){return Tl(n)},themes:co,themeNames:cg,getTheme(n){return Il(n)},setTheme(n){const t=co[n];t&&fa(t)},use(n){Xh.register(n),n.init(xl)},setLicenseKey(n){return Qe.setKey(n)},isLicensed(){return Qe.isLicensed()},configureLicensing(n){Qe.configure(n)},ChartRegistry:$t},WA=Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"}));St.A11yModule=bf,St.BaseSeries=Ut,St.Chart=hs,St.ChartRegistry=$t,St.CircularBuffer=BA,St.Crosshair=sf,St.DataGrouping=Xr,St.DataLabels=ts,St.Drilldown=pf,St.EventBus=Gh,St.ExportButton=lf,St.ExportModule=ie,St.KatuCharts=xl,St.Legend=ns,St.LicenseManager=Qe,St.ModuleRegistry=Xh,St.Navigator=Vf,St.OptionsParser=qn,St.RangeSelector=Gf,St.ResponsiveEngine=hf,St.SVGRenderer=ko,St.StreamAdapter=NA,St.Tooltip=es,St.UpdateBatch=Np,St.UpdateScheduler=OA,St.Zoom=xf,St.default=xl,St.getGlobalOptions=Th,St.lttbDecimate=Cc,St.minMaxDecimate=O2,St.registerCoreSeriesTypes=id,St.registerFinancialSeriesTypes=Mp,St.registerFlowSeriesTypes=Op,St.registerGeneralSeriesTypes=kp,St.setGlobalOptions=fa,Object.defineProperties(St,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});