katucharts.js 0.2.1
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.
- package/LICENSE +106 -0
- package/README.md +1100 -0
- package/dist/__vite-optional-peer-dep_jspdf_katucharts-BDMct_Gn.js +4 -0
- package/dist/accessibility/A11yModule.d.ts +26 -0
- package/dist/axis/Axis.d.ts +140 -0
- package/dist/axis/AxisCoordinator.d.ts +38 -0
- package/dist/bio.d.ts +22 -0
- package/dist/components/Credits.d.ts +38 -0
- package/dist/components/Crosshair.d.ts +15 -0
- package/dist/components/DataLabels.d.ts +7 -0
- package/dist/components/ExportButton.d.ts +27 -0
- package/dist/components/Legend.d.ts +53 -0
- package/dist/components/TitleRenderer.d.ts +19 -0
- package/dist/components/Tooltip.d.ts +61 -0
- package/dist/core/Chart.d.ts +156 -0
- package/dist/core/EventBus.d.ts +14 -0
- package/dist/core/InteractionController.d.ts +62 -0
- package/dist/core/OptionsParser.d.ts +61 -0
- package/dist/core/Registry.d.ts +27 -0
- package/dist/core/SVGRenderer.d.ts +48 -0
- package/dist/core/ScrollablePlotOverlay.d.ts +31 -0
- package/dist/core/StackComputer.d.ts +25 -0
- package/dist/core/StateManager.d.ts +21 -0
- package/dist/core/UpdateScheduler.d.ts +28 -0
- package/dist/core/animationConstants.d.ts +20 -0
- package/dist/core/chartTypes.d.ts +46 -0
- package/dist/core/registerAll.d.ts +4 -0
- package/dist/core/registerBio.d.ts +4 -0
- package/dist/core/registerCore.d.ts +4 -0
- package/dist/core/registerFinance.d.ts +4 -0
- package/dist/core/registerFinancial.d.ts +4 -0
- package/dist/core/registerFlow.d.ts +4 -0
- package/dist/core/registerGeneral.d.ts +4 -0
- package/dist/datatable/DataTable.d.ts +162 -0
- package/dist/datatable/DataTableDefaults.d.ts +7 -0
- package/dist/datatable/api/TableApi.d.ts +35 -0
- package/dist/datatable/columns/ColumnDef.d.ts +16 -0
- package/dist/datatable/columns/ColumnManager.d.ts +31 -0
- package/dist/datatable/data/DataProcessor.d.ts +46 -0
- package/dist/datatable/data/DataSource.d.ts +26 -0
- package/dist/datatable/editing/CellEditor.d.ts +29 -0
- package/dist/datatable/export/TableExport.d.ts +23 -0
- package/dist/datatable/locales/en.d.ts +9 -0
- package/dist/datatable/locales/es.d.ts +6 -0
- package/dist/datatable/locales/index.d.ts +22 -0
- package/dist/datatable/locales/pt-BR.d.ts +6 -0
- package/dist/datatable/locales/resolveLocale.d.ts +16 -0
- package/dist/datatable/locales/zh.d.ts +6 -0
- package/dist/datatable/render/CellRenderer.d.ts +24 -0
- package/dist/datatable/render/HeaderRenderer.d.ts +51 -0
- package/dist/datatable/render/PaginationRenderer.d.ts +26 -0
- package/dist/datatable/render/SearchRenderer.d.ts +21 -0
- package/dist/datatable/render/TableRenderer.d.ts +81 -0
- package/dist/datatable/render/ToolbarRenderer.d.ts +34 -0
- package/dist/datatable/render/icons.d.ts +24 -0
- package/dist/datatable/render/popover.d.ts +15 -0
- package/dist/datatable/selection/SelectionManager.d.ts +29 -0
- package/dist/datatable/themes/TableTheme.d.ts +36 -0
- package/dist/datatable/themes/styleSheet.d.ts +16 -0
- package/dist/datatable.d.ts +19 -0
- package/dist/export/ChartExporter.d.ts +50 -0
- package/dist/export/Export.d.ts +76 -0
- package/dist/finance.d.ts +49 -0
- package/dist/index.d.ts +67 -0
- package/dist/indicators/Indicator.d.ts +23 -0
- package/dist/indicators/expandIndicators.d.ts +18 -0
- package/dist/indicators/moving-averages/DEMA.d.ts +10 -0
- package/dist/indicators/moving-averages/EMA.d.ts +12 -0
- package/dist/indicators/moving-averages/SMA.d.ts +11 -0
- package/dist/indicators/moving-averages/TEMA.d.ts +10 -0
- package/dist/indicators/moving-averages/WMA.d.ts +12 -0
- package/dist/indicators/oscillators/CCI.d.ts +11 -0
- package/dist/indicators/oscillators/MACD.d.ts +20 -0
- package/dist/indicators/oscillators/Momentum.d.ts +10 -0
- package/dist/indicators/oscillators/ROC.d.ts +10 -0
- package/dist/indicators/oscillators/RSI.d.ts +11 -0
- package/dist/indicators/oscillators/Stochastic.d.ts +20 -0
- package/dist/indicators/registry.d.ts +9 -0
- package/dist/indicators/trend/ADX.d.ts +11 -0
- package/dist/indicators/trend/IchimokuCloud.d.ts +14 -0
- package/dist/indicators/trend/PSAR.d.ts +11 -0
- package/dist/indicators/util.d.ts +8 -0
- package/dist/indicators/volatility/ATR.d.ts +11 -0
- package/dist/indicators/volatility/BollingerBands.d.ts +11 -0
- package/dist/indicators/volume/OBV.d.ts +11 -0
- package/dist/indicators/volume/VBP.d.ts +12 -0
- package/dist/indicators/volume/VWAP.d.ts +12 -0
- package/dist/interaction/Drilldown.d.ts +29 -0
- package/dist/interaction/HoverManager.d.ts +47 -0
- package/dist/interaction/Zoom.d.ts +68 -0
- package/dist/katucharts-bio.es.js +5861 -0
- package/dist/katucharts-bio.umd.js +1 -0
- package/dist/katucharts-datatable.es.js +3363 -0
- package/dist/katucharts-datatable.umd.js +296 -0
- package/dist/katucharts-finance.es.js +4364 -0
- package/dist/katucharts-finance.umd.js +1 -0
- package/dist/katucharts-react.es.js +35 -0
- package/dist/katucharts-react.umd.js +1 -0
- package/dist/katucharts.es.js +20531 -0
- package/dist/katucharts.umd.js +9 -0
- package/dist/layout/LayoutEngine.d.ts +44 -0
- package/dist/license/LicenseManager.d.ts +63 -0
- package/dist/options/defaults.d.ts +5 -0
- package/dist/react/KatuChartsReact.d.ts +16 -0
- package/dist/react.d.ts +2 -0
- package/dist/responsive/ResponsiveEngine.d.ts +15 -0
- package/dist/series/BaseSeries.d.ts +186 -0
- package/dist/series/bioinformatics/CircosChart.d.ts +4 -0
- package/dist/series/bioinformatics/ClusteredHeatmapChart.d.ts +22 -0
- package/dist/series/bioinformatics/ForestPlotChart.d.ts +21 -0
- package/dist/series/bioinformatics/KaplanMeierChart.d.ts +22 -0
- package/dist/series/bioinformatics/ManhattanChart.d.ts +34 -0
- package/dist/series/bioinformatics/PCoAChart.d.ts +22 -0
- package/dist/series/bioinformatics/PhyloTreeChart.d.ts +27 -0
- package/dist/series/bioinformatics/SequenceLogoChart.d.ts +21 -0
- package/dist/series/bioinformatics/ViolinChart.d.ts +23 -0
- package/dist/series/bioinformatics/VolcanoChart.d.ts +28 -0
- package/dist/series/bioinformatics/circos/CircosChart.d.ts +20 -0
- package/dist/series/bioinformatics/circos/CircosColorScales.d.ts +6 -0
- package/dist/series/bioinformatics/circos/CircosComparativeChart.d.ts +41 -0
- package/dist/series/bioinformatics/circos/CircosHeatmapChart.d.ts +31 -0
- package/dist/series/bioinformatics/circos/CircosLayoutEngine.d.ts +37 -0
- package/dist/series/bioinformatics/circos/CircosRules.d.ts +6 -0
- package/dist/series/bioinformatics/circos/CircosSpiralChart.d.ts +39 -0
- package/dist/series/bioinformatics/circos/CircosTypes.d.ts +131 -0
- package/dist/series/bioinformatics/circos/tracks/AreaTrackRenderer.d.ts +7 -0
- package/dist/series/bioinformatics/circos/tracks/ConnectorTrackRenderer.d.ts +7 -0
- package/dist/series/bioinformatics/circos/tracks/GlyphTrackRenderer.d.ts +7 -0
- package/dist/series/bioinformatics/circos/tracks/HeatmapTrackRenderer.d.ts +7 -0
- package/dist/series/bioinformatics/circos/tracks/HighlightTrackRenderer.d.ts +6 -0
- package/dist/series/bioinformatics/circos/tracks/HistogramTrackRenderer.d.ts +7 -0
- package/dist/series/bioinformatics/circos/tracks/LineTrackRenderer.d.ts +7 -0
- package/dist/series/bioinformatics/circos/tracks/LinkTrackRenderer.d.ts +8 -0
- package/dist/series/bioinformatics/circos/tracks/LollipopTrackRenderer.d.ts +9 -0
- package/dist/series/bioinformatics/circos/tracks/RibbonTrackRenderer.d.ts +9 -0
- package/dist/series/bioinformatics/circos/tracks/ScatterTrackRenderer.d.ts +7 -0
- package/dist/series/bioinformatics/circos/tracks/StackTrackRenderer.d.ts +7 -0
- package/dist/series/bioinformatics/circos/tracks/TextTrackRenderer.d.ts +8 -0
- package/dist/series/bioinformatics/circos/tracks/TileTrackRenderer.d.ts +7 -0
- package/dist/series/bioinformatics/circos/tracks/TrackAxesRenderer.d.ts +6 -0
- package/dist/series/bioinformatics/circos/tracks/TrackBackgroundRenderer.d.ts +5 -0
- package/dist/series/cartesian/AreaChart.d.ts +33 -0
- package/dist/series/cartesian/BoxPlotChart.d.ts +24 -0
- package/dist/series/cartesian/BubbleChart.d.ts +34 -0
- package/dist/series/cartesian/ColumnChart.d.ts +37 -0
- package/dist/series/cartesian/LineChart.d.ts +28 -0
- package/dist/series/cartesian/ScatterChart.d.ts +20 -0
- package/dist/series/cartesian/SplineChart.d.ts +9 -0
- package/dist/series/cartesian/WaterfallChart.d.ts +25 -0
- package/dist/series/financial/AreaRangeChart.d.ts +24 -0
- package/dist/series/financial/BaselineChart.d.ts +20 -0
- package/dist/series/financial/CandlestickChart.d.ts +55 -0
- package/dist/series/financial/ColumnRangeChart.d.ts +16 -0
- package/dist/series/financial/FlagsChart.d.ts +34 -0
- package/dist/series/financial/HeikinAshiChart.d.ts +11 -0
- package/dist/series/financial/HollowCandlestickChart.d.ts +17 -0
- package/dist/series/financial/KagiChart.d.ts +23 -0
- package/dist/series/financial/LineBreakChart.d.ts +23 -0
- package/dist/series/financial/PointAndFigureChart.d.ts +24 -0
- package/dist/series/financial/RenkoChart.d.ts +22 -0
- package/dist/series/financial/VBPChart.d.ts +18 -0
- package/dist/series/financial/VolumeChart.d.ts +15 -0
- package/dist/series/flow/DependencyWheelChart.d.ts +23 -0
- package/dist/series/flow/NetworkGraphChart.d.ts +18 -0
- package/dist/series/flow/SankeyChart.d.ts +24 -0
- package/dist/series/gauge/GaugeChart.d.ts +40 -0
- package/dist/series/heatmap/HeatmapChart.d.ts +18 -0
- package/dist/series/hierarchical/SunburstChart.d.ts +44 -0
- package/dist/series/hierarchical/TreegraphChart.d.ts +19 -0
- package/dist/series/hierarchical/TreemapChart.d.ts +20 -0
- package/dist/series/hierarchical/WordcloudChart.d.ts +19 -0
- package/dist/series/index.d.ts +45 -0
- package/dist/series/map/FlowmapChart.d.ts +33 -0
- package/dist/series/map/MapChart.d.ts +53 -0
- package/dist/series/map/MapPointChart.d.ts +26 -0
- package/dist/series/map/mapProjection.d.ts +46 -0
- package/dist/series/pie/PieChart.d.ts +53 -0
- package/dist/series/polar/PolarChart.d.ts +18 -0
- package/dist/series/race/BarRaceChart.d.ts +44 -0
- package/dist/series/timeline/TimelineChart.d.ts +23 -0
- package/dist/series/venn/VennChart.d.ts +28 -0
- package/dist/stock/DataGrouping.d.ts +21 -0
- package/dist/stock/Navigator.d.ts +25 -0
- package/dist/stock/RangeSelector.d.ts +9 -0
- package/dist/stock/StockController.d.ts +47 -0
- package/dist/stockcharts.d.ts +8 -0
- package/dist/streaming/StreamAdapter.d.ts +36 -0
- package/dist/types/datatable-options.d.ts +633 -0
- package/dist/types/options.d.ts +1333 -0
- package/dist/utils/CircularBuffer.d.ts +24 -0
- package/dist/utils/chartText.d.ts +18 -0
- package/dist/utils/color.d.ts +23 -0
- package/dist/utils/decimation.d.ts +19 -0
- package/dist/utils/deepMerge.d.ts +5 -0
- package/dist/utils/dom.d.ts +10 -0
- package/dist/utils/format.d.ts +42 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/math.d.ts +6 -0
- package/dist/utils/throttle.d.ts +2 -0
- package/package.json +95 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(H,Yt){typeof exports=="object"&&typeof module<"u"?Yt(exports):typeof define=="function"&&define.amd?define(["exports"],Yt):(H=typeof globalThis<"u"?globalThis:H||self,Yt(H.KatuChartsBio={}))})(this,function(H){"use strict";class Yt{constructor(){this.types=new Map}registerType(t,n){this.types.set(t,n)}getType(t){return this.types.get(t)}hasType(t){return this.types.has(t)}getRegisteredTypes(){return Array.from(this.types.keys())}}const wn=globalThis,at=wn.__katuChartRegistry||(wn.__katuChartRegistry=new Yt);function D(e){return function(){return e}}const Mn=Math.abs,q=Math.atan2,yt=Math.cos,Sa=Math.max,Be=Math.min,et=Math.sin,U=Math.sqrt,nt=1e-12,_t=Math.PI,oe=_t/2,Xt=2*_t;function Ta(e){return e>1?0:e<-1?_t:Math.acos(e)}function _n(e){return e>=1?oe:e<=-1?-oe:Math.asin(e)}const We=Math.PI,He=2*We,$t=1e-6,La=He-$t;function An(e){this._+=e[0];for(let t=1,n=e.length;t<n;++t)this._+=arguments[t]+e[t]}function Ra(e){let t=Math.floor(e);if(!(t>=0))throw new Error(`invalid digits: ${e}`);if(t>15)return An;const n=10**t;return function(r){this._+=r[0];for(let a=1,i=r.length;a<i;++a)this._+=Math.round(arguments[a]*n)/n+r[a]}}class Ea{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?An:Ra(t)}moveTo(t,n){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,n){this._append`L${this._x1=+t},${this._y1=+n}`}quadraticCurveTo(t,n,r,a){this._append`Q${+t},${+n},${this._x1=+r},${this._y1=+a}`}bezierCurveTo(t,n,r,a,i,o){this._append`C${+t},${+n},${+r},${+a},${this._x1=+i},${this._y1=+o}`}arcTo(t,n,r,a,i){if(t=+t,n=+n,r=+r,a=+a,i=+i,i<0)throw new Error(`negative radius: ${i}`);let o=this._x1,s=this._y1,l=r-t,c=a-n,h=o-t,f=s-n,u=h*h+f*f;if(this._x1===null)this._append`M${this._x1=t},${this._y1=n}`;else if(u>$t)if(!(Math.abs(f*l-c*h)>$t)||!i)this._append`L${this._x1=t},${this._y1=n}`;else{let d=r-o,p=a-s,g=l*l+c*c,y=d*d+p*p,m=Math.sqrt(g),v=Math.sqrt(u),M=i*Math.tan((We-Math.acos((g+u-y)/(2*m*v)))/2),x=M/v,w=M/m;Math.abs(x-1)>$t&&this._append`L${t+x*h},${n+x*f}`,this._append`A${i},${i},0,0,${+(f*d>h*p)},${this._x1=t+w*l},${this._y1=n+w*c}`}}arc(t,n,r,a,i,o){if(t=+t,n=+n,r=+r,o=!!o,r<0)throw new Error(`negative radius: ${r}`);let s=r*Math.cos(a),l=r*Math.sin(a),c=t+s,h=n+l,f=1^o,u=o?a-i:i-a;this._x1===null?this._append`M${c},${h}`:(Math.abs(this._x1-c)>$t||Math.abs(this._y1-h)>$t)&&this._append`L${c},${h}`,r&&(u<0&&(u=u%He+He),u>La?this._append`A${r},${r},0,1,${f},${t-s},${n-l}A${r},${r},0,1,${f},${this._x1=c},${this._y1=h}`:u>$t&&this._append`A${r},${r},0,${+(u>=We)},${f},${this._x1=t+r*Math.cos(i)},${this._y1=n+r*Math.sin(i)}`)}rect(t,n,r,a){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${r=+r}v${+a}h${-r}Z`}toString(){return this._}}function se(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(n==null)t=null;else{const r=Math.floor(n);if(!(r>=0))throw new RangeError(`invalid digits: ${n}`);t=r}return e},()=>new Ea(t)}function Da(e){return e.innerRadius}function Ia(e){return e.outerRadius}function Fa(e){return e.startAngle}function Oa(e){return e.endAngle}function Na(e){return e&&e.padAngle}function Va(e,t,n,r,a,i,o,s){var l=n-e,c=r-t,h=o-a,f=s-i,u=f*l-h*c;if(!(u*u<nt))return u=(h*(t-i)-f*(e-a))/u,[e+u*l,t+u*c]}function ce(e,t,n,r,a,i,o){var s=e-n,l=t-r,c=(o?i:-i)/U(s*s+l*l),h=c*l,f=-c*s,u=e+h,d=t+f,p=n+h,g=r+f,y=(u+p)/2,m=(d+g)/2,v=p-u,M=g-d,x=v*v+M*M,w=a-i,b=u*g-p*d,_=(M<0?-1:1)*U(Sa(0,w*w*x-b*b)),A=(b*M-v*_)/x,S=(-b*v-M*_)/x,$=(b*M+v*_)/x,T=(-b*v+M*_)/x,k=A-y,C=S-m,P=$-y,L=T-m;return k*k+C*C>P*P+L*L&&(A=$,S=T),{cx:A,cy:S,x01:-h,y01:-f,x11:A*(a/w-1),y11:S*(a/w-1)}}function ct(){var e=Da,t=Ia,n=D(0),r=null,a=Fa,i=Oa,o=Na,s=null,l=se(c);function c(){var h,f,u=+e.apply(this,arguments),d=+t.apply(this,arguments),p=a.apply(this,arguments)-oe,g=i.apply(this,arguments)-oe,y=Mn(g-p),m=g>p;if(s||(s=h=l()),d<u&&(f=d,d=u,u=f),!(d>nt))s.moveTo(0,0);else if(y>Xt-nt)s.moveTo(d*yt(p),d*et(p)),s.arc(0,0,d,p,g,!m),u>nt&&(s.moveTo(u*yt(g),u*et(g)),s.arc(0,0,u,g,p,m));else{var v=p,M=g,x=p,w=g,b=y,_=y,A=o.apply(this,arguments)/2,S=A>nt&&(r?+r.apply(this,arguments):U(u*u+d*d)),$=Be(Mn(d-u)/2,+n.apply(this,arguments)),T=$,k=$,C,P;if(S>nt){var L=_n(S/u*et(A)),F=_n(S/d*et(A));(b-=L*2)>nt?(L*=m?1:-1,x+=L,w-=L):(b=0,x=w=(p+g)/2),(_-=F*2)>nt?(F*=m?1:-1,v+=F,M-=F):(_=0,v=M=(p+g)/2)}var E=d*yt(v),I=d*et(v),G=u*yt(w),O=u*et(w);if($>nt){var ot=d*yt(M),Q=d*et(M),Z=u*yt(x),mt=u*et(x),tt;if(y<_t)if(tt=Va(E,I,Z,mt,ot,Q,G,O)){var Dt=E-tt[0],ae=I-tt[1],ut=ot-tt[0],Ht=Q-tt[1],ie=1/et(Ta((Dt*ut+ae*Ht)/(U(Dt*Dt+ae*ae)*U(ut*ut+Ht*Ht)))/2),Ge=U(tt[0]*tt[0]+tt[1]*tt[1]);T=Be($,(u-Ge)/(ie-1)),k=Be($,(d-Ge)/(ie+1))}else T=k=0}_>nt?k>nt?(C=ce(Z,mt,E,I,d,k,m),P=ce(ot,Q,G,O,d,k,m),s.moveTo(C.cx+C.x01,C.cy+C.y01),k<$?s.arc(C.cx,C.cy,k,q(C.y01,C.x01),q(P.y01,P.x01),!m):(s.arc(C.cx,C.cy,k,q(C.y01,C.x01),q(C.y11,C.x11),!m),s.arc(0,0,d,q(C.cy+C.y11,C.cx+C.x11),q(P.cy+P.y11,P.cx+P.x11),!m),s.arc(P.cx,P.cy,k,q(P.y11,P.x11),q(P.y01,P.x01),!m))):(s.moveTo(E,I),s.arc(0,0,d,v,M,!m)):s.moveTo(E,I),!(u>nt)||!(b>nt)?s.lineTo(G,O):T>nt?(C=ce(G,O,ot,Q,u,-T,m),P=ce(E,I,Z,mt,u,-T,m),s.lineTo(C.cx+C.x01,C.cy+C.y01),T<$?s.arc(C.cx,C.cy,T,q(C.y01,C.x01),q(P.y01,P.x01),!m):(s.arc(C.cx,C.cy,T,q(C.y01,C.x01),q(C.y11,C.x11),!m),s.arc(0,0,u,q(C.cy+C.y11,C.cx+C.x11),q(P.cy+P.y11,P.cx+P.x11),m),s.arc(P.cx,P.cy,T,q(P.y11,P.x11),q(P.y01,P.x01),!m))):s.arc(0,0,u,w,x,m)}if(s.closePath(),h)return s=null,h+""||null}return c.centroid=function(){var h=(+e.apply(this,arguments)+ +t.apply(this,arguments))/2,f=(+a.apply(this,arguments)+ +i.apply(this,arguments))/2-_t/2;return[yt(f)*h,et(f)*h]},c.innerRadius=function(h){return arguments.length?(e=typeof h=="function"?h:D(+h),c):e},c.outerRadius=function(h){return arguments.length?(t=typeof h=="function"?h:D(+h),c):t},c.cornerRadius=function(h){return arguments.length?(n=typeof h=="function"?h:D(+h),c):n},c.padRadius=function(h){return arguments.length?(r=h==null?null:typeof h=="function"?h:D(+h),c):r},c.startAngle=function(h){return arguments.length?(a=typeof h=="function"?h:D(+h),c):a},c.endAngle=function(h){return arguments.length?(i=typeof h=="function"?h:D(+h),c):i},c.padAngle=function(h){return arguments.length?(o=typeof h=="function"?h:D(+h),c):o},c.context=function(h){return arguments.length?(s=h??null,c):s},c}function kn(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function Cn(e){this._context=e}Cn.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(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function $n(e){return new Cn(e)}function Pn(e){return e[0]}function Sn(e){return e[1]}function Tn(e,t){var n=D(!0),r=null,a=$n,i=null,o=se(s);e=typeof e=="function"?e:e===void 0?Pn:D(e),t=typeof t=="function"?t:t===void 0?Sn:D(t);function s(l){var c,h=(l=kn(l)).length,f,u=!1,d;for(r==null&&(i=a(d=o())),c=0;c<=h;++c)!(c<h&&n(f=l[c],c,l))===u&&((u=!u)?i.lineStart():i.lineEnd()),u&&i.point(+e(f,c,l),+t(f,c,l));if(d)return i=null,d+""||null}return s.x=function(l){return arguments.length?(e=typeof l=="function"?l:D(+l),s):e},s.y=function(l){return arguments.length?(t=typeof l=="function"?l:D(+l),s):t},s.defined=function(l){return arguments.length?(n=typeof l=="function"?l:D(!!l),s):n},s.curve=function(l){return arguments.length?(a=l,r!=null&&(i=a(r)),s):a},s.context=function(l){return arguments.length?(l==null?r=i=null:i=a(r=l),s):r},s}function Ye(e,t,n){var r=null,a=D(!0),i=null,o=$n,s=null,l=se(c);e=typeof e=="function"?e:e===void 0?Pn:D(+e),t=typeof t=="function"?t:D(t===void 0?0:+t),n=typeof n=="function"?n:n===void 0?Sn:D(+n);function c(f){var u,d,p,g=(f=kn(f)).length,y,m=!1,v,M=new Array(g),x=new Array(g);for(i==null&&(s=o(v=l())),u=0;u<=g;++u){if(!(u<g&&a(y=f[u],u,f))===m)if(m=!m)d=u,s.areaStart(),s.lineStart();else{for(s.lineEnd(),s.lineStart(),p=u-1;p>=d;--p)s.point(M[p],x[p]);s.lineEnd(),s.areaEnd()}m&&(M[u]=+e(y,u,f),x[u]=+t(y,u,f),s.point(r?+r(y,u,f):M[u],n?+n(y,u,f):x[u]))}if(v)return s=null,v+""||null}function h(){return Tn().defined(a).curve(o).context(i)}return c.x=function(f){return arguments.length?(e=typeof f=="function"?f:D(+f),r=null,c):e},c.x0=function(f){return arguments.length?(e=typeof f=="function"?f:D(+f),c):e},c.x1=function(f){return arguments.length?(r=f==null?null:typeof f=="function"?f:D(+f),c):r},c.y=function(f){return arguments.length?(t=typeof f=="function"?f:D(+f),n=null,c):t},c.y0=function(f){return arguments.length?(t=typeof f=="function"?f:D(+f),c):t},c.y1=function(f){return arguments.length?(n=f==null?null:typeof f=="function"?f:D(+f),c):n},c.lineX0=c.lineY0=function(){return h().x(e).y(t)},c.lineY1=function(){return h().x(e).y(n)},c.lineX1=function(){return h().x(r).y(t)},c.defined=function(f){return arguments.length?(a=typeof f=="function"?f:D(!!f),c):a},c.curve=function(f){return arguments.length?(o=f,i!=null&&(s=o(i)),c):o},c.context=function(f){return arguments.length?(f==null?i=s=null:s=o(i=f),c):i},c}const At={draw(e,t){const n=U(t/_t);e.moveTo(n,0),e.arc(0,0,n,0,Xt)}},Ln={draw(e,t){const n=U(t/5)/2;e.moveTo(-3*n,-n),e.lineTo(-n,-n),e.lineTo(-n,-3*n),e.lineTo(n,-3*n),e.lineTo(n,-n),e.lineTo(3*n,-n),e.lineTo(3*n,n),e.lineTo(n,n),e.lineTo(n,3*n),e.lineTo(-n,3*n),e.lineTo(-n,n),e.lineTo(-3*n,n),e.closePath()}},Rn=U(1/3),za=Rn*2,Xe={draw(e,t){const n=U(t/za),r=n*Rn;e.moveTo(0,-n),e.lineTo(r,0),e.lineTo(0,n),e.lineTo(-r,0),e.closePath()}},qe={draw(e,t){const n=U(t),r=-n/2;e.rect(r,r,n,n)}},Ga=.8908130915292852,En=et(_t/10)/et(7*_t/10),Ba=et(Xt/10)*En,Wa=-yt(Xt/10)*En,Ha={draw(e,t){const n=U(t*Ga),r=Ba*n,a=Wa*n;e.moveTo(0,-n),e.lineTo(r,a);for(let i=1;i<5;++i){const o=Xt*i/5,s=yt(o),l=et(o);e.lineTo(l*n,-s*n),e.lineTo(s*r-l*a,l*r+s*a)}e.closePath()}},Ue=U(3),le={draw(e,t){const n=-U(t/(Ue*3));e.moveTo(0,n*2),e.lineTo(-Ue*n,-n),e.lineTo(Ue*n,-n),e.closePath()}},Ya=U(3),Xa={draw(e,t){const n=U(t)*.6824,r=n/2,a=n*Ya/2;e.moveTo(0,-n),e.lineTo(a,r),e.lineTo(-a,r),e.closePath()}};function xt(e,t){let n=null,r=se(a);e=typeof e=="function"?e:D(e||At),t=typeof t=="function"?t:D(t===void 0?64:+t);function a(){let i;if(n||(n=i=r()),e.apply(this,arguments).draw(n,+t.apply(this,arguments)),i)return n=null,i+""||null}return a.type=function(i){return arguments.length?(e=typeof i=="function"?i:D(i),a):e},a.size=function(i){return arguments.length?(t=typeof i=="function"?i:D(+i),a):t},a.context=function(i){return arguments.length?(n=i??null,a):n},a}function Dn(e){return e<0?-1:1}function In(e,t,n){var r=e._x1-e._x0,a=t-e._x1,i=(e._y1-e._y0)/(r||a<0&&-0),o=(n-e._y1)/(a||r<0&&-0),s=(i*a+o*r)/(r+a);return(Dn(i)+Dn(o))*Math.min(Math.abs(i),Math.abs(o),.5*Math.abs(s))||0}function Fn(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function je(e,t,n){var r=e._x0,a=e._y0,i=e._x1,o=e._y1,s=(i-r)/3;e._context.bezierCurveTo(r+s,a+s*t,i-s,o-s*n,i,o)}function Ke(e){this._context=e}Ke.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:je(this,this._t0,Fn(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var n=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,je(this,Fn(this,n=In(this,e,t)),n);break;default:je(this,this._t0,n=In(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=n}}};function On(e){this._context=new Nn(e)}(On.prototype=Object.create(Ke.prototype)).point=function(e,t){Ke.prototype.point.call(this,t,e)};function Nn(e){this._context=e}Nn.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,n,r,a,i){this._context.bezierCurveTo(t,e,r,n,i,a)}};function Vn(e){return new On(e)}function zn(e,t){this._context=e,this._t=t}zn.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(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var n=this._x*(1-this._t)+e*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,t)}break}}this._x=e,this._y=t}};function Gn(e){return new zn(e,1)}var Ze="http://www.w3.org/1999/xhtml";const Bn={svg:"http://www.w3.org/2000/svg",xhtml:Ze,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function fe(e){var t=e+="",n=t.indexOf(":");return n>=0&&(t=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),Bn.hasOwnProperty(t)?{space:Bn[t],local:e}:e}function qa(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===Ze&&t.documentElement.namespaceURI===Ze?t.createElement(e):t.createElementNS(n,e)}}function Ua(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Wn(e){var t=fe(e);return(t.local?Ua:qa)(t)}function ja(){}function Je(e){return e==null?ja:function(){return this.querySelector(e)}}function Ka(e){typeof e!="function"&&(e=Je(e));for(var t=this._groups,n=t.length,r=new Array(n),a=0;a<n;++a)for(var i=t[a],o=i.length,s=r[a]=new Array(o),l,c,h=0;h<o;++h)(l=i[h])&&(c=e.call(l,l.__data__,h,i))&&("__data__"in l&&(c.__data__=l.__data__),s[h]=c);return new it(r,this._parents)}function Za(e){return e==null?[]:Array.isArray(e)?e:Array.from(e)}function Ja(){return[]}function Hn(e){return e==null?Ja:function(){return this.querySelectorAll(e)}}function Qa(e){return function(){return Za(e.apply(this,arguments))}}function ti(e){typeof e=="function"?e=Qa(e):e=Hn(e);for(var t=this._groups,n=t.length,r=[],a=[],i=0;i<n;++i)for(var o=t[i],s=o.length,l,c=0;c<s;++c)(l=o[c])&&(r.push(e.call(l,l.__data__,c,o)),a.push(l));return new it(r,a)}function Yn(e){return function(){return this.matches(e)}}function Xn(e){return function(t){return t.matches(e)}}var ei=Array.prototype.find;function ni(e){return function(){return ei.call(this.children,e)}}function ri(){return this.firstElementChild}function ai(e){return this.select(e==null?ri:ni(typeof e=="function"?e:Xn(e)))}var ii=Array.prototype.filter;function oi(){return Array.from(this.children)}function si(e){return function(){return ii.call(this.children,e)}}function ci(e){return this.selectAll(e==null?oi:si(typeof e=="function"?e:Xn(e)))}function li(e){typeof e!="function"&&(e=Yn(e));for(var t=this._groups,n=t.length,r=new Array(n),a=0;a<n;++a)for(var i=t[a],o=i.length,s=r[a]=[],l,c=0;c<o;++c)(l=i[c])&&e.call(l,l.__data__,c,i)&&s.push(l);return new it(r,this._parents)}function qn(e){return new Array(e.length)}function fi(){return new it(this._enter||this._groups.map(qn),this._parents)}function he(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}he.prototype={constructor:he,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};function hi(e){return function(){return e}}function ui(e,t,n,r,a,i){for(var o=0,s,l=t.length,c=i.length;o<c;++o)(s=t[o])?(s.__data__=i[o],r[o]=s):n[o]=new he(e,i[o]);for(;o<l;++o)(s=t[o])&&(a[o]=s)}function di(e,t,n,r,a,i,o){var s,l,c=new Map,h=t.length,f=i.length,u=new Array(h),d;for(s=0;s<h;++s)(l=t[s])&&(u[s]=d=o.call(l,l.__data__,s,t)+"",c.has(d)?a[s]=l:c.set(d,l));for(s=0;s<f;++s)d=o.call(e,i[s],s,i)+"",(l=c.get(d))?(r[s]=l,l.__data__=i[s],c.delete(d)):n[s]=new he(e,i[s]);for(s=0;s<h;++s)(l=t[s])&&c.get(u[s])===l&&(a[s]=l)}function pi(e){return e.__data__}function gi(e,t){if(!arguments.length)return Array.from(this,pi);var n=t?di:ui,r=this._parents,a=this._groups;typeof e!="function"&&(e=hi(e));for(var i=a.length,o=new Array(i),s=new Array(i),l=new Array(i),c=0;c<i;++c){var h=r[c],f=a[c],u=f.length,d=mi(e.call(h,h&&h.__data__,c,r)),p=d.length,g=s[c]=new Array(p),y=o[c]=new Array(p),m=l[c]=new Array(u);n(h,f,g,y,m,d,t);for(var v=0,M=0,x,w;v<p;++v)if(x=g[v]){for(v>=M&&(M=v+1);!(w=y[M])&&++M<p;);x._next=w||null}}return o=new it(o,r),o._enter=s,o._exit=l,o}function mi(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function yi(){return new it(this._exit||this._groups.map(qn),this._parents)}function xi(e,t,n){var r=this.enter(),a=this,i=this.exit();return typeof e=="function"?(r=e(r),r&&(r=r.selection())):r=r.append(e+""),t!=null&&(a=t(a),a&&(a=a.selection())),n==null?i.remove():n(i),r&&a?r.merge(a).order():a}function bi(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,a=n.length,i=r.length,o=Math.min(a,i),s=new Array(a),l=0;l<o;++l)for(var c=n[l],h=r[l],f=c.length,u=s[l]=new Array(f),d,p=0;p<f;++p)(d=c[p]||h[p])&&(u[p]=d);for(;l<a;++l)s[l]=n[l];return new it(s,this._parents)}function vi(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r=e[t],a=r.length-1,i=r[a],o;--a>=0;)(o=r[a])&&(i&&o.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(o,i),i=o);return this}function wi(e){e||(e=Mi);function t(f,u){return f&&u?e(f.__data__,u.__data__):!f-!u}for(var n=this._groups,r=n.length,a=new Array(r),i=0;i<r;++i){for(var o=n[i],s=o.length,l=a[i]=new Array(s),c,h=0;h<s;++h)(c=o[h])&&(l[h]=c);l.sort(t)}return new it(a,this._parents).order()}function Mi(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function _i(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Ai(){return Array.from(this)}function ki(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],a=0,i=r.length;a<i;++a){var o=r[a];if(o)return o}return null}function Ci(){let e=0;for(const t of this)++e;return e}function $i(){return!this.node()}function Pi(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var a=t[n],i=0,o=a.length,s;i<o;++i)(s=a[i])&&e.call(s,s.__data__,i,a);return this}function Si(e){return function(){this.removeAttribute(e)}}function Ti(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Li(e,t){return function(){this.setAttribute(e,t)}}function Ri(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function Ei(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttribute(e):this.setAttribute(e,n)}}function Di(e,t){return function(){var n=t.apply(this,arguments);n==null?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function Ii(e,t){var n=fe(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((t==null?n.local?Ti:Si:typeof t=="function"?n.local?Di:Ei:n.local?Ri:Li)(n,t))}function Un(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function Fi(e){return function(){this.style.removeProperty(e)}}function Oi(e,t,n){return function(){this.style.setProperty(e,t,n)}}function Ni(e,t,n){return function(){var r=t.apply(this,arguments);r==null?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function Vi(e,t,n){return arguments.length>1?this.each((t==null?Fi:typeof t=="function"?Ni:Oi)(e,t,n??"")):It(this.node(),e)}function It(e,t){return e.style.getPropertyValue(t)||Un(e).getComputedStyle(e,null).getPropertyValue(t)}function zi(e){return function(){delete this[e]}}function Gi(e,t){return function(){this[e]=t}}function Bi(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function Wi(e,t){return arguments.length>1?this.each((t==null?zi:typeof t=="function"?Bi:Gi)(e,t)):this.node()[e]}function jn(e){return e.trim().split(/^|\s+/)}function Qe(e){return e.classList||new Kn(e)}function Kn(e){this._node=e,this._names=jn(e.getAttribute("class")||"")}Kn.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function Zn(e,t){for(var n=Qe(e),r=-1,a=t.length;++r<a;)n.add(t[r])}function Jn(e,t){for(var n=Qe(e),r=-1,a=t.length;++r<a;)n.remove(t[r])}function Hi(e){return function(){Zn(this,e)}}function Yi(e){return function(){Jn(this,e)}}function Xi(e,t){return function(){(t.apply(this,arguments)?Zn:Jn)(this,e)}}function qi(e,t){var n=jn(e+"");if(arguments.length<2){for(var r=Qe(this.node()),a=-1,i=n.length;++a<i;)if(!r.contains(n[a]))return!1;return!0}return this.each((typeof t=="function"?Xi:t?Hi:Yi)(n,t))}function Ui(){this.textContent=""}function ji(e){return function(){this.textContent=e}}function Ki(e){return function(){var t=e.apply(this,arguments);this.textContent=t??""}}function Zi(e){return arguments.length?this.each(e==null?Ui:(typeof e=="function"?Ki:ji)(e)):this.node().textContent}function Ji(){this.innerHTML=""}function Qi(e){return function(){this.innerHTML=e}}function to(e){return function(){var t=e.apply(this,arguments);this.innerHTML=t??""}}function eo(e){return arguments.length?this.each(e==null?Ji:(typeof e=="function"?to:Qi)(e)):this.node().innerHTML}function no(){this.nextSibling&&this.parentNode.appendChild(this)}function ro(){return this.each(no)}function ao(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function io(){return this.each(ao)}function oo(e){var t=typeof e=="function"?e:Wn(e);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function so(){return null}function co(e,t){var n=typeof e=="function"?e:Wn(e),r=t==null?so:typeof t=="function"?t:Je(t);return this.select(function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)})}function lo(){var e=this.parentNode;e&&e.removeChild(this)}function fo(){return this.each(lo)}function ho(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function uo(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function po(e){return this.select(e?uo:ho)}function go(e){return arguments.length?this.property("__data__",e):this.node().__data__}function mo(e){return function(t){e.call(this,t,this.__data__)}}function yo(e){return e.trim().split(/^|\s+/).map(function(t){var n="",r=t.indexOf(".");return r>=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function xo(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,a=t.length,i;n<a;++n)i=t[n],(!e.type||i.type===e.type)&&i.name===e.name?this.removeEventListener(i.type,i.listener,i.options):t[++r]=i;++r?t.length=r:delete this.__on}}}function bo(e,t,n){return function(){var r=this.__on,a,i=mo(t);if(r){for(var o=0,s=r.length;o<s;++o)if((a=r[o]).type===e.type&&a.name===e.name){this.removeEventListener(a.type,a.listener,a.options),this.addEventListener(a.type,a.listener=i,a.options=n),a.value=t;return}}this.addEventListener(e.type,i,n),a={type:e.type,name:e.name,value:t,listener:i,options:n},r?r.push(a):this.__on=[a]}}function vo(e,t,n){var r=yo(e+""),a,i=r.length,o;if(arguments.length<2){var s=this.node().__on;if(s){for(var l=0,c=s.length,h;l<c;++l)for(a=0,h=s[l];a<i;++a)if((o=r[a]).type===h.type&&o.name===h.name)return h.value}return}for(s=t?bo:xo,a=0;a<i;++a)this.each(s(r[a],t,n));return this}function Qn(e,t,n){var r=Un(e),a=r.CustomEvent;typeof a=="function"?a=new a(t,n):(a=r.document.createEvent("Event"),n?(a.initEvent(t,n.bubbles,n.cancelable),a.detail=n.detail):a.initEvent(t,!1,!1)),e.dispatchEvent(a)}function wo(e,t){return function(){return Qn(this,e,t)}}function Mo(e,t){return function(){return Qn(this,e,t.apply(this,arguments))}}function _o(e,t){return this.each((typeof t=="function"?Mo:wo)(e,t))}function*Ao(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],a=0,i=r.length,o;a<i;++a)(o=r[a])&&(yield o)}var tr=[null];function it(e,t){this._groups=e,this._parents=t}function qt(){return new it([[document.documentElement]],tr)}function ko(){return this}it.prototype=qt.prototype={constructor:it,select:Ka,selectAll:ti,selectChild:ai,selectChildren:ci,filter:li,data:gi,enter:fi,exit:yi,join:xi,merge:bi,selection:ko,order:vi,sort:wi,call:_i,nodes:Ai,node:ki,size:Ci,empty:$i,each:Pi,attr:Ii,style:Vi,property:Wi,classed:qi,text:Zi,html:eo,raise:ro,lower:io,append:oo,insert:co,remove:fo,clone:po,datum:go,on:vo,dispatch:_o,[Symbol.iterator]:Ao};function V(e){return typeof e=="string"?new it([[document.querySelector(e)]],[document.documentElement]):new it([[e]],tr)}var Co={value:()=>{}};function er(){for(var e=0,t=arguments.length,n={},r;e<t;++e){if(!(r=arguments[e]+"")||r in n||/[\s.]/.test(r))throw new Error("illegal type: "+r);n[r]=[]}return new ue(n)}function ue(e){this._=e}function $o(e,t){return e.trim().split(/^|\s+/).map(function(n){var r="",a=n.indexOf(".");if(a>=0&&(r=n.slice(a+1),n=n.slice(0,a)),n&&!t.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}ue.prototype=er.prototype={constructor:ue,on:function(e,t){var n=this._,r=$o(e+"",n),a,i=-1,o=r.length;if(arguments.length<2){for(;++i<o;)if((a=(e=r[i]).type)&&(a=Po(n[a],e.name)))return a;return}if(t!=null&&typeof t!="function")throw new Error("invalid callback: "+t);for(;++i<o;)if(a=(e=r[i]).type)n[a]=nr(n[a],e.name,t);else if(t==null)for(a in n)n[a]=nr(n[a],e.name,null);return this},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new ue(e)},call:function(e,t){if((a=arguments.length-2)>0)for(var n=new Array(a),r=0,a,i;r<a;++r)n[r]=arguments[r+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(i=this._[e],r=0,a=i.length;r<a;++r)i[r].value.apply(t,n)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var r=this._[e],a=0,i=r.length;a<i;++a)r[a].value.apply(t,n)}};function Po(e,t){for(var n=0,r=e.length,a;n<r;++n)if((a=e[n]).name===t)return a.value}function nr(e,t,n){for(var r=0,a=e.length;r<a;++r)if(e[r].name===t){e[r]=Co,e=e.slice(0,r).concat(e.slice(r+1));break}return n!=null&&e.push({name:t,value:n}),e}var Ft=0,Ut=0,jt=0,rr=1e3,de,Kt,pe=0,Pt=0,ge=0,Zt=typeof performance=="object"&&performance.now?performance:Date,ar=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function tn(){return Pt||(ar(So),Pt=Zt.now()+ge)}function So(){Pt=0}function me(){this._call=this._time=this._next=null}me.prototype=ir.prototype={constructor:me,restart:function(e,t,n){if(typeof e!="function")throw new TypeError("callback is not a function");n=(n==null?tn():+n)+(t==null?0:+t),!this._next&&Kt!==this&&(Kt?Kt._next=this:de=this,Kt=this),this._call=e,this._time=n,en()},stop:function(){this._call&&(this._call=null,this._time=1/0,en())}};function ir(e,t,n){var r=new me;return r.restart(e,t,n),r}function To(){tn(),++Ft;for(var e=de,t;e;)(t=Pt-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Ft}function or(){Pt=(pe=Zt.now())+ge,Ft=Ut=0;try{To()}finally{Ft=0,Ro(),Pt=0}}function Lo(){var e=Zt.now(),t=e-pe;t>rr&&(ge-=t,pe=e)}function Ro(){for(var e,t=de,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:de=n);Kt=e,en(r)}function en(e){if(!Ft){Ut&&(Ut=clearTimeout(Ut));var t=e-Pt;t>24?(e<1/0&&(Ut=setTimeout(or,e-Zt.now()-ge)),jt&&(jt=clearInterval(jt))):(jt||(pe=Zt.now(),jt=setInterval(Lo,rr)),Ft=1,ar(or))}}function sr(e,t,n){var r=new me;return t=t==null?0:+t,r.restart(a=>{r.stop(),e(a+t)},t,n),r}var Eo=er("start","end","cancel","interrupt"),Do=[],cr=0,lr=1,nn=2,ye=3,fr=4,rn=5,xe=6;function be(e,t,n,r,a,i){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;Io(e,n,{name:t,index:r,group:a,on:Eo,tween:Do,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:cr})}function an(e,t){var n=lt(e,t);if(n.state>cr)throw new Error("too late; already scheduled");return n}function dt(e,t){var n=lt(e,t);if(n.state>ye)throw new Error("too late; already running");return n}function lt(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function Io(e,t,n){var r=e.__transition,a;r[t]=n,n.timer=ir(i,0,n.time);function i(c){n.state=lr,n.timer.restart(o,n.delay,n.time),n.delay<=c&&o(c-n.delay)}function o(c){var h,f,u,d;if(n.state!==lr)return l();for(h in r)if(d=r[h],d.name===n.name){if(d.state===ye)return sr(o);d.state===fr?(d.state=xe,d.timer.stop(),d.on.call("interrupt",e,e.__data__,d.index,d.group),delete r[h]):+h<t&&(d.state=xe,d.timer.stop(),d.on.call("cancel",e,e.__data__,d.index,d.group),delete r[h])}if(sr(function(){n.state===ye&&(n.state=fr,n.timer.restart(s,n.delay,n.time),s(c))}),n.state=nn,n.on.call("start",e,e.__data__,n.index,n.group),n.state===nn){for(n.state=ye,a=new Array(u=n.tween.length),h=0,f=-1;h<u;++h)(d=n.tween[h].value.call(e,e.__data__,n.index,n.group))&&(a[++f]=d);a.length=f+1}}function s(c){for(var h=c<n.duration?n.ease.call(null,c/n.duration):(n.timer.restart(l),n.state=rn,1),f=-1,u=a.length;++f<u;)a[f].call(e,h);n.state===rn&&(n.on.call("end",e,e.__data__,n.index,n.group),l())}function l(){n.state=xe,n.timer.stop(),delete r[t];for(var c in r)return;delete e.__transition}}function Fo(e,t){var n=e.__transition,r,a,i=!0,o;if(n){t=t==null?null:t+"";for(o in n){if((r=n[o]).name!==t){i=!1;continue}a=r.state>nn&&r.state<rn,r.state=xe,r.timer.stop(),r.on.call(a?"interrupt":"cancel",e,e.__data__,r.index,r.group),delete n[o]}i&&delete e.__transition}}function Oo(e){return this.each(function(){Fo(this,e)})}function ve(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function on(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function Ot(){}var St=.7,Nt=1/St,Vt="\\s*([+-]?\\d+)\\s*",Jt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",pt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",No=/^#([0-9a-f]{3,8})$/,Vo=new RegExp(`^rgb\\(${Vt},${Vt},${Vt}\\)$`),zo=new RegExp(`^rgb\\(${pt},${pt},${pt}\\)$`),Go=new RegExp(`^rgba\\(${Vt},${Vt},${Vt},${Jt}\\)$`),Bo=new RegExp(`^rgba\\(${pt},${pt},${pt},${Jt}\\)$`),Wo=new RegExp(`^hsl\\(${Jt},${pt},${pt}\\)$`),Ho=new RegExp(`^hsla\\(${Jt},${pt},${pt},${Jt}\\)$`),hr={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};ve(Ot,st,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:ur,formatHex:ur,formatHex8:Yo,formatHsl:Xo,formatRgb:dr,toString:dr});function ur(){return this.rgb().formatHex()}function Yo(){return this.rgb().formatHex8()}function Xo(){return br(this).formatHsl()}function dr(){return this.rgb().formatRgb()}function st(e){var t,n;return e=(e+"").trim().toLowerCase(),(t=No.exec(e))?(n=t[1].length,t=parseInt(t[1],16),n===6?pr(t):n===3?new j(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?we(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?we(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Vo.exec(e))?new j(t[1],t[2],t[3],1):(t=zo.exec(e))?new j(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Go.exec(e))?we(t[1],t[2],t[3],t[4]):(t=Bo.exec(e))?we(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Wo.exec(e))?xr(t[1],t[2]/100,t[3]/100,1):(t=Ho.exec(e))?xr(t[1],t[2]/100,t[3]/100,t[4]):hr.hasOwnProperty(e)?pr(hr[e]):e==="transparent"?new j(NaN,NaN,NaN,0):null}function pr(e){return new j(e>>16&255,e>>8&255,e&255,1)}function we(e,t,n,r){return r<=0&&(e=t=n=NaN),new j(e,t,n,r)}function gr(e){return e instanceof Ot||(e=st(e)),e?(e=e.rgb(),new j(e.r,e.g,e.b,e.opacity)):new j}function Me(e,t,n,r){return arguments.length===1?gr(e):new j(e,t,n,r??1)}function j(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}ve(j,Me,on(Ot,{brighter(e){return e=e==null?Nt:Math.pow(Nt,e),new j(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?St:Math.pow(St,e),new j(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new j(Tt(this.r),Tt(this.g),Tt(this.b),_e(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:mr,formatHex:mr,formatHex8:qo,formatRgb:yr,toString:yr}));function mr(){return`#${Lt(this.r)}${Lt(this.g)}${Lt(this.b)}`}function qo(){return`#${Lt(this.r)}${Lt(this.g)}${Lt(this.b)}${Lt((isNaN(this.opacity)?1:this.opacity)*255)}`}function yr(){const e=_e(this.opacity);return`${e===1?"rgb(":"rgba("}${Tt(this.r)}, ${Tt(this.g)}, ${Tt(this.b)}${e===1?")":`, ${e})`}`}function _e(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Tt(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Lt(e){return e=Tt(e),(e<16?"0":"")+e.toString(16)}function xr(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new ft(e,t,n,r)}function br(e){if(e instanceof ft)return new ft(e.h,e.s,e.l,e.opacity);if(e instanceof Ot||(e=st(e)),!e)return new ft;if(e instanceof ft)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,a=Math.min(t,n,r),i=Math.max(t,n,r),o=NaN,s=i-a,l=(i+a)/2;return s?(t===i?o=(n-r)/s+(n<r)*6:n===i?o=(r-t)/s+2:o=(t-n)/s+4,s/=l<.5?i+a:2-i-a,o*=60):s=l>0&&l<1?0:o,new ft(o,s,l,e.opacity)}function Uo(e,t,n,r){return arguments.length===1?br(e):new ft(e,t,n,r??1)}function ft(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}ve(ft,Uo,on(Ot,{brighter(e){return e=e==null?Nt:Math.pow(Nt,e),new ft(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?St:Math.pow(St,e),new ft(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,a=2*n-r;return new j(sn(e>=240?e-240:e+120,a,r),sn(e,a,r),sn(e<120?e+240:e-120,a,r),this.opacity)},clamp(){return new ft(vr(this.h),Ae(this.s),Ae(this.l),_e(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=_e(this.opacity);return`${e===1?"hsl(":"hsla("}${vr(this.h)}, ${Ae(this.s)*100}%, ${Ae(this.l)*100}%${e===1?")":`, ${e})`}`}}));function vr(e){return e=(e||0)%360,e<0?e+360:e}function Ae(e){return Math.max(0,Math.min(1,e||0))}function sn(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const jo=Math.PI/180,Ko=180/Math.PI;var wr=-.14861,cn=1.78277,ln=-.29227,ke=-.90649,Qt=1.97294,Mr=Qt*ke,_r=Qt*cn,Ar=cn*ln-ke*wr;function Zo(e){if(e instanceof Rt)return new Rt(e.h,e.s,e.l,e.opacity);e instanceof j||(e=gr(e));var t=e.r/255,n=e.g/255,r=e.b/255,a=(Ar*r+Mr*t-_r*n)/(Ar+Mr-_r),i=r-a,o=(Qt*(n-a)-ln*i)/ke,s=Math.sqrt(o*o+i*i)/(Qt*a*(1-a)),l=s?Math.atan2(o,i)*Ko-120:NaN;return new Rt(l<0?l+360:l,s,a,e.opacity)}function gt(e,t,n,r){return arguments.length===1?Zo(e):new Rt(e,t,n,r??1)}function Rt(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}ve(Rt,gt,on(Ot,{brighter(e){return e=e==null?Nt:Math.pow(Nt,e),new Rt(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?St:Math.pow(St,e),new Rt(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*jo,t=+this.l,n=isNaN(this.s)?0:this.s*t*(1-t),r=Math.cos(e),a=Math.sin(e);return new j(255*(t+n*(wr*r+cn*a)),255*(t+n*(ln*r+ke*a)),255*(t+n*(Qt*r)),this.opacity)}}));function Jo(e,t,n,r,a){var i=e*e,o=i*e;return((1-3*e+3*i-o)*t+(4-6*i+3*o)*n+(1+3*e+3*i-3*o)*r+o*a)/6}function Qo(e){var t=e.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),a=e[r],i=e[r+1],o=r>0?e[r-1]:2*a-i,s=r<t-1?e[r+2]:2*i-a;return Jo((n-r/t)*t,o,a,i,s)}}const Ce=e=>()=>e;function kr(e,t){return function(n){return e+n*t}}function ts(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}function es(e,t){var n=t-e;return n?kr(e,n>180||n<-180?n-360*Math.round(n/360):n):Ce(isNaN(e)?t:e)}function ns(e){return(e=+e)==1?zt:function(t,n){return n-t?ts(t,n,e):Ce(isNaN(t)?n:t)}}function zt(e,t){var n=t-e;return n?kr(e,n):Ce(isNaN(e)?t:e)}const $e=function e(t){var n=ns(t);function r(a,i){var o=n((a=Me(a)).r,(i=Me(i)).r),s=n(a.g,i.g),l=n(a.b,i.b),c=zt(a.opacity,i.opacity);return function(h){return a.r=o(h),a.g=s(h),a.b=l(h),a.opacity=c(h),a+""}}return r.gamma=e,r}(1);function rs(e){return function(t){var n=t.length,r=new Array(n),a=new Array(n),i=new Array(n),o,s;for(o=0;o<n;++o)s=Me(t[o]),r[o]=s.r||0,a[o]=s.g||0,i[o]=s.b||0;return r=e(r),a=e(a),i=e(i),s.opacity=1,function(l){return s.r=r(l),s.g=a(l),s.b=i(l),s+""}}}var as=rs(Qo);function is(e,t){t||(t=[]);var n=e?Math.min(t.length,e.length):0,r=t.slice(),a;return function(i){for(a=0;a<n;++a)r[a]=e[a]*(1-i)+t[a]*i;return r}}function os(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function ss(e,t){var n=t?t.length:0,r=e?Math.min(n,e.length):0,a=new Array(r),i=new Array(n),o;for(o=0;o<r;++o)a[o]=te(e[o],t[o]);for(;o<n;++o)i[o]=t[o];return function(s){for(o=0;o<r;++o)i[o]=a[o](s);return i}}function cs(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function ht(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function ls(e,t){var n={},r={},a;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(a in t)a in e?n[a]=te(e[a],t[a]):r[a]=t[a];return function(i){for(a in n)r[a]=n[a](i);return r}}var fn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,hn=new RegExp(fn.source,"g");function fs(e){return function(){return e}}function hs(e){return function(t){return e(t)+""}}function Cr(e,t){var n=fn.lastIndex=hn.lastIndex=0,r,a,i,o=-1,s=[],l=[];for(e=e+"",t=t+"";(r=fn.exec(e))&&(a=hn.exec(t));)(i=a.index)>n&&(i=t.slice(n,i),s[o]?s[o]+=i:s[++o]=i),(r=r[0])===(a=a[0])?s[o]?s[o]+=a:s[++o]=a:(s[++o]=null,l.push({i:o,x:ht(r,a)})),n=hn.lastIndex;return n<t.length&&(i=t.slice(n),s[o]?s[o]+=i:s[++o]=i),s.length<2?l[0]?hs(l[0].x):fs(t):(t=l.length,function(c){for(var h=0,f;h<t;++h)s[(f=l[h]).i]=f.x(c);return s.join("")})}function te(e,t){var n=typeof t,r;return t==null||n==="boolean"?Ce(t):(n==="number"?ht:n==="string"?(r=st(t))?(t=r,$e):Cr:t instanceof st?$e:t instanceof Date?cs:os(t)?is:Array.isArray(t)?ss:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?ls:ht)(e,t)}function $r(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}var Pr=180/Math.PI,un={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Sr(e,t,n,r,a,i){var o,s,l;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(l=e*n+t*r)&&(n-=e*l,r-=t*l),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,l/=s),e*r<t*n&&(e=-e,t=-t,l=-l,o=-o),{translateX:a,translateY:i,rotate:Math.atan2(t,e)*Pr,skewX:Math.atan(l)*Pr,scaleX:o,scaleY:s}}var Pe;function us(e){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?un:Sr(t.a,t.b,t.c,t.d,t.e,t.f)}function ds(e){return e==null||(Pe||(Pe=document.createElementNS("http://www.w3.org/2000/svg","g")),Pe.setAttribute("transform",e),!(e=Pe.transform.baseVal.consolidate()))?un:(e=e.matrix,Sr(e.a,e.b,e.c,e.d,e.e,e.f))}function Tr(e,t,n,r){function a(c){return c.length?c.pop()+" ":""}function i(c,h,f,u,d,p){if(c!==f||h!==u){var g=d.push("translate(",null,t,null,n);p.push({i:g-4,x:ht(c,f)},{i:g-2,x:ht(h,u)})}else(f||u)&&d.push("translate("+f+t+u+n)}function o(c,h,f,u){c!==h?(c-h>180?h+=360:h-c>180&&(c+=360),u.push({i:f.push(a(f)+"rotate(",null,r)-2,x:ht(c,h)})):h&&f.push(a(f)+"rotate("+h+r)}function s(c,h,f,u){c!==h?u.push({i:f.push(a(f)+"skewX(",null,r)-2,x:ht(c,h)}):h&&f.push(a(f)+"skewX("+h+r)}function l(c,h,f,u,d,p){if(c!==f||h!==u){var g=d.push(a(d)+"scale(",null,",",null,")");p.push({i:g-4,x:ht(c,f)},{i:g-2,x:ht(h,u)})}else(f!==1||u!==1)&&d.push(a(d)+"scale("+f+","+u+")")}return function(c,h){var f=[],u=[];return c=e(c),h=e(h),i(c.translateX,c.translateY,h.translateX,h.translateY,f,u),o(c.rotate,h.rotate,f,u),s(c.skewX,h.skewX,f,u),l(c.scaleX,c.scaleY,h.scaleX,h.scaleY,f,u),c=h=null,function(d){for(var p=-1,g=u.length,y;++p<g;)f[(y=u[p]).i]=y.x(d);return f.join("")}}}var ps=Tr(us,"px, ","px)","deg)"),gs=Tr(ds,", ",")",")");function Lr(e){return function t(n){n=+n;function r(a,i){var o=e((a=gt(a)).h,(i=gt(i)).h),s=zt(a.s,i.s),l=zt(a.l,i.l),c=zt(a.opacity,i.opacity);return function(h){return a.h=o(h),a.s=s(h),a.l=l(Math.pow(h,n)),a.opacity=c(h),a+""}}return r.gamma=t,r}(1)}Lr(es);var dn=Lr(zt);function ms(e,t){var n,r;return function(){var a=dt(this,e),i=a.tween;if(i!==n){r=n=i;for(var o=0,s=r.length;o<s;++o)if(r[o].name===t){r=r.slice(),r.splice(o,1);break}}a.tween=r}}function ys(e,t,n){var r,a;if(typeof n!="function")throw new Error;return function(){var i=dt(this,e),o=i.tween;if(o!==r){a=(r=o).slice();for(var s={name:t,value:n},l=0,c=a.length;l<c;++l)if(a[l].name===t){a[l]=s;break}l===c&&a.push(s)}i.tween=a}}function xs(e,t){var n=this._id;if(e+="",arguments.length<2){for(var r=lt(this.node(),n).tween,a=0,i=r.length,o;a<i;++a)if((o=r[a]).name===e)return o.value;return null}return this.each((t==null?ms:ys)(n,e,t))}function pn(e,t,n){var r=e._id;return e.each(function(){var a=dt(this,r);(a.value||(a.value={}))[t]=n.apply(this,arguments)}),function(a){return lt(a,r).value[t]}}function Rr(e,t){var n;return(typeof t=="number"?ht:t instanceof st?$e:(n=st(t))?(t=n,$e):Cr)(e,t)}function bs(e){return function(){this.removeAttribute(e)}}function vs(e){return function(){this.removeAttributeNS(e.space,e.local)}}function ws(e,t,n){var r,a=n+"",i;return function(){var o=this.getAttribute(e);return o===a?null:o===r?i:i=t(r=o,n)}}function Ms(e,t,n){var r,a=n+"",i;return function(){var o=this.getAttributeNS(e.space,e.local);return o===a?null:o===r?i:i=t(r=o,n)}}function _s(e,t,n){var r,a,i;return function(){var o,s=n(this),l;return s==null?void this.removeAttribute(e):(o=this.getAttribute(e),l=s+"",o===l?null:o===r&&l===a?i:(a=l,i=t(r=o,s)))}}function As(e,t,n){var r,a,i;return function(){var o,s=n(this),l;return s==null?void this.removeAttributeNS(e.space,e.local):(o=this.getAttributeNS(e.space,e.local),l=s+"",o===l?null:o===r&&l===a?i:(a=l,i=t(r=o,s)))}}function ks(e,t){var n=fe(e),r=n==="transform"?gs:Rr;return this.attrTween(e,typeof t=="function"?(n.local?As:_s)(n,r,pn(this,"attr."+e,t)):t==null?(n.local?vs:bs)(n):(n.local?Ms:ws)(n,r,t))}function Cs(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function $s(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function Ps(e,t){var n,r;function a(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&$s(e,i)),n}return a._value=t,a}function Ss(e,t){var n,r;function a(){var i=t.apply(this,arguments);return i!==r&&(n=(r=i)&&Cs(e,i)),n}return a._value=t,a}function Ts(e,t){var n="attr."+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(t==null)return this.tween(n,null);if(typeof t!="function")throw new Error;var r=fe(e);return this.tween(n,(r.local?Ps:Ss)(r,t))}function Ls(e,t){return function(){an(this,e).delay=+t.apply(this,arguments)}}function Rs(e,t){return t=+t,function(){an(this,e).delay=t}}function Es(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?Ls:Rs)(t,e)):lt(this.node(),t).delay}function Ds(e,t){return function(){dt(this,e).duration=+t.apply(this,arguments)}}function Is(e,t){return t=+t,function(){dt(this,e).duration=t}}function Fs(e){var t=this._id;return arguments.length?this.each((typeof e=="function"?Ds:Is)(t,e)):lt(this.node(),t).duration}function Os(e,t){if(typeof t!="function")throw new Error;return function(){dt(this,e).ease=t}}function Ns(e){var t=this._id;return arguments.length?this.each(Os(t,e)):lt(this.node(),t).ease}function Vs(e,t){return function(){var n=t.apply(this,arguments);if(typeof n!="function")throw new Error;dt(this,e).ease=n}}function zs(e){if(typeof e!="function")throw new Error;return this.each(Vs(this._id,e))}function Gs(e){typeof e!="function"&&(e=Yn(e));for(var t=this._groups,n=t.length,r=new Array(n),a=0;a<n;++a)for(var i=t[a],o=i.length,s=r[a]=[],l,c=0;c<o;++c)(l=i[c])&&e.call(l,l.__data__,c,i)&&s.push(l);return new bt(r,this._parents,this._name,this._id)}function Bs(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,n=e._groups,r=t.length,a=n.length,i=Math.min(r,a),o=new Array(r),s=0;s<i;++s)for(var l=t[s],c=n[s],h=l.length,f=o[s]=new Array(h),u,d=0;d<h;++d)(u=l[d]||c[d])&&(f[d]=u);for(;s<r;++s)o[s]=t[s];return new bt(o,this._parents,this._name,this._id)}function Ws(e){return(e+"").trim().split(/^|\s+/).every(function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||t==="start"})}function Hs(e,t,n){var r,a,i=Ws(t)?an:dt;return function(){var o=i(this,e),s=o.on;s!==r&&(a=(r=s).copy()).on(t,n),o.on=a}}function Ys(e,t){var n=this._id;return arguments.length<2?lt(this.node(),n).on.on(e):this.each(Hs(n,e,t))}function Xs(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function qs(){return this.on("end.remove",Xs(this._id))}function Us(e){var t=this._name,n=this._id;typeof e!="function"&&(e=Je(e));for(var r=this._groups,a=r.length,i=new Array(a),o=0;o<a;++o)for(var s=r[o],l=s.length,c=i[o]=new Array(l),h,f,u=0;u<l;++u)(h=s[u])&&(f=e.call(h,h.__data__,u,s))&&("__data__"in h&&(f.__data__=h.__data__),c[u]=f,be(c[u],t,n,u,c,lt(h,n)));return new bt(i,this._parents,t,n)}function js(e){var t=this._name,n=this._id;typeof e!="function"&&(e=Hn(e));for(var r=this._groups,a=r.length,i=[],o=[],s=0;s<a;++s)for(var l=r[s],c=l.length,h,f=0;f<c;++f)if(h=l[f]){for(var u=e.call(h,h.__data__,f,l),d,p=lt(h,n),g=0,y=u.length;g<y;++g)(d=u[g])&&be(d,t,n,g,u,p);i.push(u),o.push(h)}return new bt(i,o,t,n)}var Ks=qt.prototype.constructor;function Zs(){return new Ks(this._groups,this._parents)}function Js(e,t){var n,r,a;return function(){var i=It(this,e),o=(this.style.removeProperty(e),It(this,e));return i===o?null:i===n&&o===r?a:a=t(n=i,r=o)}}function Er(e){return function(){this.style.removeProperty(e)}}function Qs(e,t,n){var r,a=n+"",i;return function(){var o=It(this,e);return o===a?null:o===r?i:i=t(r=o,n)}}function tc(e,t,n){var r,a,i;return function(){var o=It(this,e),s=n(this),l=s+"";return s==null&&(l=s=(this.style.removeProperty(e),It(this,e))),o===l?null:o===r&&l===a?i:(a=l,i=t(r=o,s))}}function ec(e,t){var n,r,a,i="style."+t,o="end."+i,s;return function(){var l=dt(this,e),c=l.on,h=l.value[i]==null?s||(s=Er(t)):void 0;(c!==n||a!==h)&&(r=(n=c).copy()).on(o,a=h),l.on=r}}function nc(e,t,n){var r=(e+="")=="transform"?ps:Rr;return t==null?this.styleTween(e,Js(e,r)).on("end.style."+e,Er(e)):typeof t=="function"?this.styleTween(e,tc(e,r,pn(this,"style."+e,t))).each(ec(this._id,e)):this.styleTween(e,Qs(e,r,t),n).on("end.style."+e,null)}function rc(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function ac(e,t,n){var r,a;function i(){var o=t.apply(this,arguments);return o!==a&&(r=(a=o)&&rc(e,o,n)),r}return i._value=t,i}function ic(e,t,n){var r="style."+(e+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(t==null)return this.tween(r,null);if(typeof t!="function")throw new Error;return this.tween(r,ac(e,t,n??""))}function oc(e){return function(){this.textContent=e}}function sc(e){return function(){var t=e(this);this.textContent=t??""}}function cc(e){return this.tween("text",typeof e=="function"?sc(pn(this,"text",e)):oc(e==null?"":e+""))}function lc(e){return function(t){this.textContent=e.call(this,t)}}function fc(e){var t,n;function r(){var a=e.apply(this,arguments);return a!==n&&(t=(n=a)&&lc(a)),t}return r._value=e,r}function hc(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(e==null)return this.tween(t,null);if(typeof e!="function")throw new Error;return this.tween(t,fc(e))}function uc(){for(var e=this._name,t=this._id,n=Dr(),r=this._groups,a=r.length,i=0;i<a;++i)for(var o=r[i],s=o.length,l,c=0;c<s;++c)if(l=o[c]){var h=lt(l,t);be(l,e,n,c,o,{time:h.time+h.delay+h.duration,delay:0,duration:h.duration,ease:h.ease})}return new bt(r,this._parents,e,n)}function dc(){var e,t,n=this,r=n._id,a=n.size();return new Promise(function(i,o){var s={value:o},l={value:function(){--a===0&&i()}};n.each(function(){var c=dt(this,r),h=c.on;h!==e&&(t=(e=h).copy(),t._.cancel.push(s),t._.interrupt.push(s),t._.end.push(l)),c.on=t}),a===0&&i()})}var pc=0;function bt(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function Dr(){return++pc}var vt=qt.prototype;bt.prototype={constructor:bt,select:Us,selectAll:js,selectChild:vt.selectChild,selectChildren:vt.selectChildren,filter:Gs,merge:Bs,selection:Zs,transition:uc,call:vt.call,nodes:vt.nodes,node:vt.node,size:vt.size,empty:vt.empty,each:vt.each,on:Ys,attr:ks,attrTween:Ts,style:nc,styleTween:ic,text:cc,textTween:hc,remove:qs,tween:xs,delay:Es,duration:Fs,ease:Ns,easeVarying:zs,end:dc,[Symbol.iterator]:vt[Symbol.iterator]};function Ir(e){return--e*e*e+1}function gc(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}var mc={time:null,delay:0,duration:250,ease:gc};function yc(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw new Error(`transition ${t} not found`);return n}function xc(e){var t,n;e instanceof bt?(t=e._id,e=e._name):(t=Dr(),(n=mc).time=tn(),e=e==null?null:e+"");for(var r=this._groups,a=r.length,i=0;i<a;++i)for(var o=r[i],s=o.length,l,c=0;c<s;++c)(l=o[c])&&be(l,e,t,c,o,n||yc(l,t));return new bt(r,this._parents,e,t)}qt.prototype.interrupt=Oo,qt.prototype.transition=xc;function Se(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function bc(e,t){return e==null||t==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Fr(e){let t,n,r;e.length!==2?(t=Se,n=(s,l)=>Se(e(s),l),r=(s,l)=>e(s)-l):(t=e===Se||e===bc?e:vc,n=e,r=e);function a(s,l,c=0,h=s.length){if(c<h){if(t(l,l)!==0)return h;do{const f=c+h>>>1;n(s[f],l)<0?c=f+1:h=f}while(c<h)}return c}function i(s,l,c=0,h=s.length){if(c<h){if(t(l,l)!==0)return h;do{const f=c+h>>>1;n(s[f],l)<=0?c=f+1:h=f}while(c<h)}return c}function o(s,l,c=0,h=s.length){const f=a(s,l,c,h-1);return f>c&&r(s[f-1],l)>-r(s[f],l)?f-1:f}return{left:a,center:o,right:i}}function vc(){return 0}function wc(e){return e===null?NaN:+e}const Mc=Fr(Se).right;Fr(wc).center;const _c=Math.sqrt(50),Ac=Math.sqrt(10),kc=Math.sqrt(2);function Te(e,t,n){const r=(t-e)/Math.max(0,n),a=Math.floor(Math.log10(r)),i=r/Math.pow(10,a),o=i>=_c?10:i>=Ac?5:i>=kc?2:1;let s,l,c;return a<0?(c=Math.pow(10,-a)/o,s=Math.round(e*c),l=Math.round(t*c),s/c<e&&++s,l/c>t&&--l,c=-c):(c=Math.pow(10,a)*o,s=Math.round(e/c),l=Math.round(t/c),s*c<e&&++s,l*c>t&&--l),l<s&&.5<=n&&n<2?Te(e,t,n*2):[s,l,c]}function gn(e,t,n){if(t=+t,e=+e,n=+n,!(n>0))return[];if(e===t)return[e];const r=t<e,[a,i,o]=r?Te(t,e,n):Te(e,t,n);if(!(i>=a))return[];const s=i-a+1,l=new Array(s);if(r)if(o<0)for(let c=0;c<s;++c)l[c]=(i-c)/-o;else for(let c=0;c<s;++c)l[c]=(i-c)*o;else if(o<0)for(let c=0;c<s;++c)l[c]=(a+c)/-o;else for(let c=0;c<s;++c)l[c]=(a+c)*o;return l}function mn(e,t,n){return t=+t,e=+e,n=+n,Te(e,t,n)[2]}function Cc(e,t,n){t=+t,e=+e,n=+n;const r=t<e,a=r?mn(t,e,n):mn(e,t,n);return(r?-1:1)*(a<0?1/-a:a)}function $c(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function Le(e,t){if(!isFinite(e)||e===0)return null;var n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"),r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function Gt(e){return e=Le(Math.abs(e)),e?e[1]:NaN}function Pc(e,t){return function(n,r){for(var a=n.length,i=[],o=0,s=e[0],l=0;a>0&&s>0&&(l+s+1>r&&(s=Math.max(1,r-l)),i.push(n.substring(a-=s,a+s)),!((l+=s+1)>r));)s=e[o=(o+1)%e.length];return i.reverse().join(t)}}function Sc(e){return function(t){return t.replace(/[0-9]/g,function(n){return e[+n]})}}var Tc=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ee(e){if(!(t=Tc.exec(e)))throw new Error("invalid format: "+e);var t;return new yn({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}ee.prototype=yn.prototype;function yn(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}yn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function Lc(e){t:for(var t=e.length,n=1,r=-1,a;n<t;++n)switch(e[n]){case".":r=a=n;break;case"0":r===0&&(r=n),a=n;break;default:if(!+e[n])break t;r>0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(a+1):e}var Re;function Rc(e,t){var n=Le(e,t);if(!n)return Re=void 0,e.toPrecision(t);var r=n[0],a=n[1],i=a-(Re=Math.max(-8,Math.min(8,Math.floor(a/3)))*3)+1,o=r.length;return i===o?r:i>o?r+new Array(i-o+1).join("0"):i>0?r.slice(0,i)+"."+r.slice(i):"0."+new Array(1-i).join("0")+Le(e,Math.max(0,t+i-1))[0]}function Or(e,t){var n=Le(e,t);if(!n)return e+"";var r=n[0],a=n[1];return a<0?"0."+new Array(-a).join("0")+r:r.length>a+1?r.slice(0,a+1)+"."+r.slice(a+1):r+new Array(a-r.length+2).join("0")}const Nr={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:$c,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Or(e*100,t),r:Or,s:Rc,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function Vr(e){return e}var zr=Array.prototype.map,Gr=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Ec(e){var t=e.grouping===void 0||e.thousands===void 0?Vr:Pc(zr.call(e.grouping,Number),e.thousands+""),n=e.currency===void 0?"":e.currency[0]+"",r=e.currency===void 0?"":e.currency[1]+"",a=e.decimal===void 0?".":e.decimal+"",i=e.numerals===void 0?Vr:Sc(zr.call(e.numerals,String)),o=e.percent===void 0?"%":e.percent+"",s=e.minus===void 0?"−":e.minus+"",l=e.nan===void 0?"NaN":e.nan+"";function c(f,u){f=ee(f);var d=f.fill,p=f.align,g=f.sign,y=f.symbol,m=f.zero,v=f.width,M=f.comma,x=f.precision,w=f.trim,b=f.type;b==="n"?(M=!0,b="g"):Nr[b]||(x===void 0&&(x=12),w=!0,b="g"),(m||d==="0"&&p==="=")&&(m=!0,d="0",p="=");var _=(u&&u.prefix!==void 0?u.prefix:"")+(y==="$"?n:y==="#"&&/[boxX]/.test(b)?"0"+b.toLowerCase():""),A=(y==="$"?r:/[%p]/.test(b)?o:"")+(u&&u.suffix!==void 0?u.suffix:""),S=Nr[b],$=/[defgprs%]/.test(b);x=x===void 0?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,x)):Math.max(0,Math.min(20,x));function T(k){var C=_,P=A,L,F,E;if(b==="c")P=S(k)+P,k="";else{k=+k;var I=k<0||1/k<0;if(k=isNaN(k)?l:S(Math.abs(k),x),w&&(k=Lc(k)),I&&+k==0&&g!=="+"&&(I=!1),C=(I?g==="("?g:s:g==="-"||g==="("?"":g)+C,P=(b==="s"&&!isNaN(k)&&Re!==void 0?Gr[8+Re/3]:"")+P+(I&&g==="("?")":""),$){for(L=-1,F=k.length;++L<F;)if(E=k.charCodeAt(L),48>E||E>57){P=(E===46?a+k.slice(L+1):k.slice(L))+P,k=k.slice(0,L);break}}}M&&!m&&(k=t(k,1/0));var G=C.length+k.length+P.length,O=G<v?new Array(v-G+1).join(d):"";switch(M&&m&&(k=t(O+k,O.length?v-P.length:1/0),O=""),p){case"<":k=C+k+P+O;break;case"=":k=C+O+k+P;break;case"^":k=O.slice(0,G=O.length>>1)+C+k+P+O.slice(G);break;default:k=O+C+k+P;break}return i(k)}return T.toString=function(){return f+""},T}function h(f,u){var d=Math.max(-8,Math.min(8,Math.floor(Gt(u)/3)))*3,p=Math.pow(10,-d),g=c((f=ee(f),f.type="f",f),{suffix:Gr[8+d/3]});return function(y){return g(p*y)}}return{format:c,formatPrefix:h}}var Ee,De,Br;Dc({thousands:",",grouping:[3],currency:["$",""]});function Dc(e){return Ee=Ec(e),De=Ee.format,Br=Ee.formatPrefix,Ee}function Ic(e){return Math.max(0,-Gt(Math.abs(e)))}function Fc(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Gt(t)/3)))*3-Gt(Math.abs(e)))}function Oc(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Gt(t)-Gt(e))+1}Object.entries({"%A":"%A","%a":"%a","%d":"%d","%e":"%-d","%b":"%b","%B":"%B","%m":"%m","%y":"%y","%Y":"%Y","%H":"%H","%I":"%I","%k":"%-H","%l":"%-I","%M":"%M","%p":"%p","%P":"%p","%S":"%S","%L":"%L"}).map(([e,t])=>[new RegExp(e.replace("%","\\%"),"g"),t]);const Nc=/\{([^}]+)\}/g;function Vc(e,t,n=!1){return e.replace(Nc,(r,a)=>{const i=a.indexOf(":");let o=a,s=null;i!==-1&&(o=a.slice(0,i),s=a.slice(i+1));const l=o.trim().split(".");let c=t;for(const f of l){if(c==null)return"";c=c[f]}if(c==null)return"";let h;if(s){const f=typeof c=="number"?c:parseFloat(String(c));if(isNaN(f))h=String(c);else try{h=De(s)(f)}catch{h=String(c)}}else h=String(c);return n?Bc(h):h})}const zc=/[&<>"']/g,Gc={"&":"&","<":"<",">":">",'"':""","'":"'"};function Bc(e){return String(e).replace(zc,t=>Gc[t])}const Wc=/<\/?[^>]+(>|$)/g,Hc=/<br\s*\/?>/gi;function Yc(e){return e.replace(Hc," ").replace(Wc,"").trim()}const K=600,B=8,Xc=K+100,Wr=1600,xn=120,z=300,Hr=250,R=Ir,N=Ir,X="12px",kt="#000000",Yr="#1a1a1a",qc="#ffffff",Uc=3;function bn(e){const t=e/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4}function Xr(e,t,n){return .2126*bn(e)+.7152*bn(t)+.0722*bn(n)}function qr(e,t){return(Math.max(e,t)+.05)/(Math.min(e,t)+.05)}const jc=Xr(26,26,26);function Ur(e,t){var o;if(t)return t;const n=e?(o=st(e))==null?void 0:o.rgb():null;if(!n||isNaN(n.r)||n.opacity===0)return kt;const r=Xr(n.r,n.g,n.b),a=qr(r,jc);return a>=Uc?Yr:qr(r,1)>=a?qc:Yr}const Kc=500;function wt(e,t,n,r){return r>Kc?t:t+e*n}class rt{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((n,r)=>{n.selected&&this.selectedPoints.add(r)}),this.group.on("mouseenter",()=>{var n,r;(r=(n=this.config.events)==null?void 0:n.mouseOver)==null||r.call(this,new Event("mouseOver")),this.context.events.emit("series:mouseenter",this)}).on("mouseleave",()=>{var n,r;(r=(n=this.config.events)==null?void 0:n.mouseOut)==null||r.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 Ur(this.context.backgroundColor,t)}labelHalo(){const t=this.labelHaloColor();return`0 0 3px ${t}, 0 0 3px ${t}`}labelHaloColor(){return Ur(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,n=!0){var r,a,i,o;this.visible=t,t?(a=(r=this.config.events)==null?void 0:r.show)==null||a.call(this,new Event("show")):(o=(i=this.config.events)==null?void 0:i.hide)==null||o.call(this,new Event("hide")),n&&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,n=-1/0,r=1/0,a=-1/0;for(const i of this.data)i.x!==void 0&&i.x!==null&&(i.x<t&&(t=i.x),i.x>n&&(n=i.x)),i.y!==void 0&&i.y!==null&&(i.y<r&&(r=i.y),i.y>a&&(a=i.y));return this._cachedExtents={xMin:t,xMax:n,yMin:r,yMax:a},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,n=!0,r=!0){this.data=t,this.config._processedData=t,this._cachedExtents=null,n&&(r?this.animateUpdate(500):this.redraw(),this.context.events.emit("series:dataChanged",this))}addPoint(t,n=!0,r=!1,a=!0){if(this.data.push(t),this.config._processedData=this.data,r&&this.data.length>1)this.data.shift(),this.config._processedData=this.data,this._cachedExtents=null;else if(this._cachedExtents){const i=this._cachedExtents;t.x!==void 0&&t.x!==null&&(t.x<i.xMin&&(i.xMin=t.x),t.x>i.xMax&&(i.xMax=t.x)),t.y!==void 0&&t.y!==null&&(t.y<i.yMin&&(i.yMin=t.y),t.y>i.yMax&&(i.yMax=t.y))}n&&(a?this.animateUpdate(300):this.redraw(),this.context.events.emit("series:dataChanged",this))}addPoints(t,n=!0,r=!1,a=!0){for(const i of t)this.data.push(i);r&&this.data.length>t.length&&this.data.splice(0,t.length),this.config._processedData=this.data,this._cachedExtents=null,n&&(a?this.animateUpdate(300):this.redraw(),this.context.events.emit("series:dataChanged",this))}removePoint(t,n=!0,r=!0){t>=0&&t<this.data.length&&(this.data.splice(t,1),this.config._processedData=this.data,this._cachedExtents=null,n&&(r?this.animateUpdate(300):this.redraw(),this.context.events.emit("series:dataChanged",this)))}updateSeries(t,n=!0){Object.assign(this.config,t),t.data&&(this.config._processedData=t.data,this.data=this.config._processedData,this._cachedExtents=null),n&&this.redraw()}applyBatch(t){for(const n of t.entries)switch(n.type){case"setData":this.data=n.payload,this.config._processedData=this.data;break;case"addPoint":this.data.push(n.payload.point),n.payload.shift&&this.data.length>1&&this.data.shift();break;case"addPoints":for(const r of n.payload.points)this.data.push(r);n.payload.shift&&this.data.splice(0,n.payload.points.length);break;case"removePoint":n.payload.index>=0&&n.payload.index<this.data.length&&this.data.splice(n.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 n=this.group.select(function(){return this.ownerSVGElement});if(!n.empty()){let r=n.select("defs");r.empty()&&(r=n.append("defs")),r.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 n=`katucharts-shadow-${this.config.index}-${Date.now()}`,r=this.group.select(function(){return this.ownerSVGElement});if(!r.empty()){let a=r.select("defs");a.empty()&&(a=r.append("defs"));const i=typeof t=="object"?t:{},o=i.offsetX??1,s=i.offsetY??1,l=i.width??3,c=i.opacity??.15;a.append("filter").attr("id",n).append("feDropShadow").attr("dx",o).attr("dy",s).attr("stdDeviation",l).attr("flood-opacity",c),this.group.style("filter",`url(#${n})`)}}applyInactiveState(){var a,i,o,s,l;const t=this.context.allSeries;if(!t||t.length<=1)return;const n=((i=(a=this.config.states)==null?void 0:a.inactive)==null?void 0:i.opacity)??.2,r=((l=(s=(o=this.config.states)==null?void 0:o.inactive)==null?void 0:s.animation)==null?void 0:l.duration)??Hr;for(const c of t)c!==this&&c.visible&&c.group.transition("inactive").duration(r).ease(N).attr("opacity",n)}clearInactiveState(){var r,a,i,o,s,l;const t=this.context.allSeries;if(!t||t.length<=1)return;const n=((i=(a=(r=this.config.states)==null?void 0:r.normal)==null?void 0:a.animation)==null?void 0:i.duration)??((l=(s=(o=this.config.states)==null?void 0:o.inactive)==null?void 0:s.animation)==null?void 0:l.duration)??Hr;for(const c of t)c!==this&&c.visible&&c.group.transition("inactive").duration(n).ease(N).attr("opacity",c.config.opacity??1)}emitAfterAnimate(t){var i;const n=!!((i=this.config.events)!=null&&i.afterAnimate),r=typeof this.config.animation=="object"?this.config.animation:null,a=!!(r!=null&&r.complete);(n||a)&&setTimeout(()=>{var o,s,l;(s=(o=this.config.events)==null?void 0:o.afterAnimate)==null||s.call(this,new Event("afterAnimate")),(l=r==null?void 0:r.complete)==null||l.call(r)},t)}renderDataLabels(t,n,r){const a=this.config.dataLabels;if(!(a!=null&&a.enabled))return;this.group.selectAll(".katucharts-data-labels").remove();const i=this.group.append("g").attr("class","katucharts-data-labels");this.getColor(),t.forEach((o,s)=>{var g,y;if(o.y===null||o.y===void 0)return;const l=o.dataLabels,c={...a,...l};let h;if(c.formatter?h=c.formatter.call({point:{...o,index:s},series:this,x:o.x??s,y:o.y,percentage:o._percentage}):c.format?h=Yc(Vc(c.format,{point:o,series:{name:this.config.name??""},x:o.x,y:o.y,percentage:o._percentage??o.percentage})):h=String(o.y),c.filter){const m=o[c.filter.property??"y"]??0,v=c.filter.operator??">",M=c.filter.value??0;if(!(v===">"?m>M:v==="<"?m<M:v===">="?m>=M:v==="<="?m<=M:v==="=="?m===M:!0))return}const f=n(o,s)+(c.x??0),u=r(o,s)+(c.y??-10),d=i.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??X).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=(y=(g=d.node()).getBBox)==null?void 0:y.call(g);if(m){const v=c.padding??5,M=c.borderRadius??0;i.insert("rect",":last-child").attr("x",m.x-v).attr("y",m.y-v).attr("width",m.width+v*2).attr("height",m.height+v*2).attr("rx",M).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(Xc+s*B).duration(400).ease(R).attr("opacity",1)})}handlePointSelect(t,n,r,a){var o,s,l,c;if(!this.config.allowPointSelect)return;const i=this.selectedPoints.has(r);if(i){if(((s=(o=n.events)==null?void 0:o.unselect)==null?void 0:s.call(n,a))===!1)return;this.selectedPoints.delete(r),n.selected=!1,this.clearSelectStyle(t)}else{if(((c=(l=n.events)==null?void 0:l.select)==null?void 0:c.call(n,a))===!1)return;this.selectedPoints.add(r),n.selected=!0,this.applySelectStyle(t)}this.context.events.emit("point:select",{point:n,index:r,series:this,selected:!i})}applySelectStyle(t){var r;const n=(r=this.config.states)==null?void 0:r.select;n!=null&&n.color&&t.attr("fill",n.color),n!=null&&n.borderColor&&t.attr("stroke",n.borderColor),(n==null?void 0:n.borderWidth)!==void 0&&t.attr("stroke-width",n.borderWidth)}clearSelectStyle(t){t.attr("fill",null).attr("stroke",null).attr("stroke-width",null)}attachPointEvents(t,n,r){var o;if(this.config.enableMouseTracking===!1)return;const a=n.events||{},i=((o=this.config.point)==null?void 0:o.events)||{};t.on("mouseover",s=>{var l,c;this.context.events.emit("point:mouseover",{point:n,index:r,series:this,event:s,plotX:this.context.xAxis.getPixelForValue(n.x??r),plotY:this.context.yAxis.getPixelForValue(n.y??0)}),(l=a.mouseOver)==null||l.call(n,s),(c=i.mouseOver)==null||c.call(n,s)}).on("mouseout",s=>{var l,c;this.context.events.emit("point:mouseout",{point:n,index:r,series:this,event:s}),(l=a.mouseOut)==null||l.call(n,s),(c=i.mouseOut)==null||c.call(n,s)}).on("click",s=>{var l,c,h,f;this.context.events.emit("point:click",{point:n,index:r,series:this,event:s}),(l=a.click)==null||l.call(n,s),(c=i.click)==null||c.call(n,s),(f=(h=this.config.events)==null?void 0:h.click)==null||f.call(this,s),this.handlePointSelect(t,n,r,s)}),t.style("cursor",this.config.cursor||"pointer")}applyJitter(t,n,r){return r?t+(Math.random()-.5)*r*n:t}}const Zc={circle:At,square:qe,diamond:Xe,triangle:le};class jr extends rt{constructor(t){super(t)}getMultiLegendItems(){const t=this.config.upColor??this.context.colors[0]??"#e74c3c",n=this.config.downColor??this.context.colors[1]??"#3498db",r=this.config.nsColor??"#cccccc",a=this.config.upLabel??"Up",i=this.config.downLabel??"Down";return[{label:this.config.nsLabel??"NS",color:r},{label:a,color:t},{label:i,color:n}]}render(){var g,y,m,v;const{xAxis:t,yAxis:n,plotArea:r}=this.context,a=this.context.animate,i=this.data.filter(M=>M.y!==null&&M.y!==void 0),o=this.config.pValueThreshold??.05,s=this.config.foldChangeThreshold??1,l=this.config.upColor??this.context.colors[0]??"#e74c3c",c=this.config.downColor??this.context.colors[1]??"#3498db",h=this.config.nsColor??"#cccccc",f=this.config.labelTopN??0,u=((g=this.config.marker)==null?void 0:g.radius)??3,d=((v=(m=(y=this.config.marker)==null?void 0:y.states)==null?void 0:m.hover)==null?void 0:v.radius)??u+2,p=-Math.log10(o);this.renderThresholdLines(p,s),this.renderPoints(i,p,s,l,c,h,u,d,!!a),f>0&&this.renderTopLabels(i,p,s,f),a&&this.emitAfterAnimate(K+i.length*B)}classifyPoint(t,n,r){var o;if((o=t.custom)!=null&&o.direction)return t.custom.direction;const a=t.x??0,i=t.y??0;return i>=n&&a>=r?"up":i>=n&&a<=-r?"down":"ns"}getPointColor(t,n,r,a,i,o){if(t.color)return t.color;const s=this.classifyPoint(t,n,r);return s==="up"?a:s==="down"?i:o}renderThresholdLines(t,n){const{xAxis:r,yAxis:a,plotArea:i}=this.context,o=this.config.thresholdLineColor??"#999999",s=this.config.thresholdLineWidth??1,l="6,4",c=this.group.append("g").attr("class","katucharts-volcano-thresholds"),h=a.getPixelForValue(t);h>=0&&h<=i.height&&c.append("line").attr("x1",0).attr("x2",i.width).attr("y1",h).attr("y2",h).attr("stroke",o).attr("stroke-width",s).attr("stroke-dasharray",l).attr("opacity",.7);const f=r.getPixelForValue(-n);f>=0&&f<=i.width&&c.append("line").attr("x1",f).attr("x2",f).attr("y1",0).attr("y2",i.height).attr("stroke",o).attr("stroke-width",s).attr("stroke-dasharray",l).attr("opacity",.7);const u=r.getPixelForValue(n);u>=0&&u<=i.width&&c.append("line").attr("x1",u).attr("x2",u).attr("y1",0).attr("y2",i.height).attr("stroke",o).attr("stroke-width",s).attr("stroke-dasharray",l).attr("opacity",.7)}renderPoints(t,n,r,a,i,o,s,l,c){var v,M,x;const{xAxis:h,yAxis:f}=this.context,u=((v=this.config.marker)==null?void 0:v.symbol)||"circle",d=(M=this.config.marker)==null?void 0:M.lineColor,p=((x=this.config.marker)==null?void 0:x.lineWidth)??0,y=(typeof this.config.animation=="object"?this.config.animation:{}).duration??K,m=t.map(w=>({cx:h.getPixelForValue(w.x??0),cy:f.getPixelForValue(w.y??0)}));if(u==="circle"){const w=this.group.selectAll(".katucharts-volcano-point").data(t).join("circle").attr("class","katucharts-volcano-point").attr("cx",(b,_)=>m[_].cx).attr("cy",(b,_)=>m[_].cy).attr("fill",b=>this.getPointColor(b,n,r,a,i,o)).attr("stroke",b=>d||this.getPointColor(b,n,r,a,i,o)).attr("stroke-width",p).attr("opacity",this.config.opacity??.7).style("cursor",this.config.cursor||"pointer");c?w.attr("r",0).transition().duration(y).ease(R).delay((b,_)=>wt(_,0,B,t.length)).attr("r",s):w.attr("r",s),this.attachVolcanoEvents(w,t,m,s,l)}else{const w=Zc[u]||At,b=Math.PI*s*s,_=xt().type(w).size(b),A=this.group.selectAll(".katucharts-volcano-point").data(t).join("path").attr("class","katucharts-volcano-point").attr("transform",(T,k)=>`translate(${m[k].cx},${m[k].cy})`).attr("fill",T=>this.getPointColor(T,n,r,a,i,o)).attr("stroke",T=>d||this.getPointColor(T,n,r,a,i,o)).attr("stroke-width",p).attr("opacity",this.config.opacity??.7).style("cursor",this.config.cursor||"pointer");if(c){const T=xt().type(w).size(0);A.attr("d",T).transition().duration(y).ease(R).delay((k,C)=>wt(C,0,B,t.length)).attr("d",_)}else A.attr("d",_);const S=Math.PI*l*l,$=xt().type(w).size(S);this.attachVolcanoEvents(A,t,m,s,l,_,$)}}renderTopLabels(t,n,r,a){var h;const{xAxis:i,yAxis:o}=this.context,s=t.filter(f=>this.classifyPoint(f,n,r)!=="ns").sort((f,u)=>(u.y??0)-(f.y??0)).slice(0,a),l=this.group.append("g").attr("class","katucharts-volcano-labels"),c=[];for(const f of s){const u=f.name||((h=f.custom)==null?void 0:h.label)||"";if(!u)continue;const d=i.getPixelForValue(f.x??0),p=o.getPixelForValue(f.y??0)-8,g=u.length*6,y=12;c.some(v=>Math.abs(v.x-d)<(v.w+g)/2&&Math.abs(v.y-p)<(v.h+y)/2)||(c.push({x:d,y:p,w:g,h:y}),l.append("text").attr("x",d).attr("y",p).attr("text-anchor","middle").attr("font-size",X).attr("font-style","italic").attr("fill",kt).text(u))}}attachVolcanoEvents(t,n,r,a,i,o,s){if(this.config.enableMouseTracking===!1)return;const l=!o;t.on("mouseover",(c,h)=>{var g,y,m,v,M,x,w;const f=c.currentTarget,u=n.indexOf(h),p=V(f).interrupt("hover").transition("hover").duration(z).ease(N);l?p.attr("r",i):s&&p.attr("d",s()),p.style("opacity",1),f.style.filter="drop-shadow(0 1px 3px rgba(0,0,0,0.3))",this.context.events.emit("point:mouseover",{point:h,index:u,series:this,event:c,plotX:((g=r[u])==null?void 0:g.cx)??0,plotY:((y=r[u])==null?void 0:y.cy)??0}),(v=(m=h.events)==null?void 0:m.mouseOver)==null||v.call(h,c),(w=(x=(M=this.config.point)==null?void 0:M.events)==null?void 0:x.mouseOver)==null||w.call(h,c)}).on("mouseout",(c,h)=>{var g,y,m,v,M;const f=c.currentTarget,u=n.indexOf(h),p=V(f).interrupt("hover").transition("hover").duration(z).ease(N);l?p.attr("r",a):o&&p.attr("d",o()),p.style("opacity",this.config.opacity??.7),f.style.filter="",this.context.events.emit("point:mouseout",{point:h,index:u,series:this,event:c}),(y=(g=h.events)==null?void 0:g.mouseOut)==null||y.call(h,c),(M=(v=(m=this.config.point)==null?void 0:m.events)==null?void 0:v.mouseOut)==null||M.call(h,c)}).on("click",(c,h)=>{var u,d,p,g,y,m,v;const f=n.indexOf(h);this.context.events.emit("point:click",{point:h,index:f,series:this,event:c}),(d=(u=h.events)==null?void 0:u.click)==null||d.call(h,c),(y=(g=(p=this.config.point)==null?void 0:p.events)==null?void 0:g.click)==null||y.call(h,c),(v=(m=this.config.events)==null?void 0:m.click)==null||v.call(this,c),this.handlePointSelect(V(c.currentTarget),h,f,c)})}getDataExtents(){let t=1/0,n=-1/0,r=0,a=-1/0;for(const l of this.data)l.x!==void 0&&l.x!==null&&(t=Math.min(t,l.x),n=Math.max(n,l.x)),l.y!==void 0&&l.y!==null&&(a=Math.max(a,l.y));const i=this.config.foldChangeThreshold??1;t=Math.min(t,-i-.5),n=Math.max(n,i+.5);const o=this.config.pValueThreshold??.05,s=-Math.log10(o);return a=Math.max(a,s+1),{xMin:t,xMax:n,yMin:r,yMax:a}}}const Kr=["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","X","Y","MT"];function Jc(e){const t=st(e);if(t){const n=t.rgb();return[Math.round(n.r),Math.round(n.g),Math.round(n.b)]}return[128,128,128]}class Zr extends rt{constructor(t){super(t),this.chrGroups=new Map,this.positions=[]}render(){var g,y,m,v;const{xAxis:t,yAxis:n,plotArea:r}=this.context,a=this.context.animate,i=this.data.filter(M=>M.y!==null&&M.y!==void 0),o=this.config.chromosomeColors??[this.context.colors[0]??"#2980b9",this.context.colors[1]??"#7f8c8d"],s=this.config.significanceLine??5e-8,l=this.config.suggestiveLine??1e-5,c=this.config.significanceLineColor??"#e74c3c",h=this.config.suggestiveLineColor??"#3498db",f=((g=this.config.marker)==null?void 0:g.radius)??2.5,u=((v=(m=(y=this.config.marker)==null?void 0:y.states)==null?void 0:m.hover)==null?void 0:v.radius)??f+2,d=this.config.labelTopN??0,p=this.config.canvasThreshold??2e4;this.groupByChromosome(i),this.positions=new Array(i.length);for(let M=0;M<i.length;M++)this.positions[M]={cx:t.getPixelForValue(i[M].x??0),cy:n.getPixelForValue(i[M].y??0)};if(this.renderSignificanceLines(s,l,c,h),i.length>p){this.renderPointsCanvas(i,o,f,s);const M=-Math.log10(s),x=i.filter(w=>(w.y??0)>=M);x.length>0&&x.length<2e3&&this.renderSignificantPointsSVG(x,i,o,f,u)}else this.renderChromosomePoints(i,o,f,u,!!a);this.renderChromosomeLabels(i),d>0&&this.renderTopLabels(i,s,d),a&&this.emitAfterAnimate(K)}groupByChromosome(t){var n,r;this.chrGroups.clear();for(const a of t){const i=String(((n=a.custom)==null?void 0:n.chr)??((r=a.custom)==null?void 0:r.chromosome)??"");this.chrGroups.has(i)||this.chrGroups.set(i,[]),this.chrGroups.get(i).push(a)}}getChrIndex(t){const n=Kr.indexOf(t);return n>=0?n:Kr.length}buildChrColorMap(t){const n=Array.from(this.chrGroups.keys()).sort((a,i)=>this.getChrIndex(a)-this.getChrIndex(i)),r=new Map;return n.forEach((a,i)=>{r.set(a,t[i%t.length])}),r}renderSignificanceLines(t,n,r,a){const{yAxis:i,plotArea:o}=this.context,s=this.group.append("g").attr("class","katucharts-manhattan-lines"),l=-Math.log10(t),c=i.getPixelForValue(l);c>=0&&c<=o.height&&s.append("line").attr("x1",0).attr("x2",o.width).attr("y1",c).attr("y2",c).attr("stroke",r).attr("stroke-width",1).attr("stroke-dasharray","8,4").attr("opacity",.8);const h=-Math.log10(n),f=i.getPixelForValue(h);f>=0&&f<=o.height&&s.append("line").attr("x1",0).attr("x2",o.width).attr("y1",f).attr("y2",f).attr("stroke",a).attr("stroke-width",1).attr("stroke-dasharray","4,4").attr("opacity",.6)}renderPointsCanvas(t,n,r,a){var y,m;const{plotArea:i}=this.context,o=this.buildChrColorMap(n),s=-Math.log10(a),l=Math.ceil(i.width),c=Math.ceil(i.height),h=document.createElement("canvas");h.width=l,h.height=c;const f=h.getContext("2d");if(!f)return;const u=new Map;for(const[v,M]of o)u.set(v,Jc(M));const d=this.config.opacity??.75;for(let v=0;v<t.length;v++){const M=t[v],x=String(((y=M.custom)==null?void 0:y.chr)??((m=M.custom)==null?void 0:m.chromosome)??""),w=u.get(x)??[153,153,153],b=this.positions[v];if(b.cx<0||b.cx>l||b.cy<0||b.cy>c)continue;const _=(M.y??0)>=s,A=_?1:d,S=_?r+.5:r;f.fillStyle=`rgba(${w[0]},${w[1]},${w[2]},${A})`,f.beginPath(),f.arc(b.cx,b.cy,S,0,2*Math.PI),f.fill()}const p=h.toDataURL(),g=this.group.append("image").attr("class","katucharts-manhattan-canvas").attr("width",i.width).attr("height",i.height).attr("href",p);this.context.animate&&g.attr("opacity",0).transition().duration(K).ease(R).attr("opacity",1)}renderSignificantPointsSVG(t,n,r,a,i){const o=this.buildChrColorMap(r),l=this.group.append("g").attr("class","katucharts-manhattan-sig-overlay").selectAll(".katucharts-manhattan-sig").data(t).join("circle").attr("class","katucharts-manhattan-sig").attr("cx",c=>{var f;const h=n.indexOf(c);return((f=this.positions[h])==null?void 0:f.cx)??0}).attr("cy",c=>{var f;const h=n.indexOf(c);return((f=this.positions[h])==null?void 0:f.cy)??0}).attr("r",a+.5).attr("fill",c=>{var f,u;const h=String(((f=c.custom)==null?void 0:f.chr)??((u=c.custom)==null?void 0:u.chromosome)??"");return c.color||o.get(h)||"#999"}).attr("opacity",0).style("cursor","pointer");this.attachManhattanEvents(l,t,n,a,i)}renderChromosomePoints(t,n,r,a,i){var f;const o=((f=this.config.marker)==null?void 0:f.lineWidth)??0,l=(typeof this.config.animation=="object"?this.config.animation:{}).duration??K,c=this.buildChrColorMap(n),h=this.group.selectAll(".katucharts-manhattan-point").data(t).join("circle").attr("class","katucharts-manhattan-point").attr("cx",(u,d)=>this.positions[d].cx).attr("cy",(u,d)=>this.positions[d].cy).attr("fill",u=>{var d,p;return u.color||c.get(String(((d=u.custom)==null?void 0:d.chr)??((p=u.custom)==null?void 0:p.chromosome)??""))||"#999"}).attr("stroke-width",o).attr("opacity",this.config.opacity??.75).style("cursor",this.config.cursor||"pointer");i?h.attr("r",0).transition().duration(l).ease(R).attr("r",r):h.attr("r",r),this.attachManhattanEvents(h,t,t,r,a)}renderChromosomeLabels(t){var f,u,d;const{xAxis:n,plotArea:r}=this.context;if(!(this.config.showChromosomeLabels!==!1))return;const i=Array.from(this.chrGroups.keys()).sort((p,g)=>this.getChrIndex(p)-this.getChrIndex(g)),o=((d=(u=(f=this.context.xAxis)==null?void 0:f.config)==null?void 0:u.labels)==null?void 0:d.style)||{},s=o.fontSize||X,l=o.color||kt,c=this.context.plotGroup||this.group;c.selectAll("g.katucharts-manhattan-chr-labels").remove();const h=c.append("g").attr("class","katucharts-manhattan-chr-labels");for(const p of i){const g=this.chrGroups.get(p);if(g.length===0)continue;let y=1/0,m=-1/0;for(const x of g){const w=x.x??0;w<y&&(y=w),w>m&&(m=w)}const v=(y+m)/2,M=n.getPixelForValue(v);M>=0&&M<=r.width&&h.append("text").attr("x",M).attr("y",r.height+14).attr("text-anchor","middle").attr("font-size",s).attr("font-family","sans-serif").attr("fill",l).text(p)}}renderTopLabels(t,n,r){var h;const{xAxis:a,yAxis:i}=this.context,o=-Math.log10(n),s=t.filter(f=>(f.y??0)>=o).sort((f,u)=>(u.y??0)-(f.y??0)).slice(0,r),l=this.group.append("g").attr("class","katucharts-manhattan-labels"),c=[];for(const f of s){const u=f.name||((h=f.custom)==null?void 0:h.rsid)||"";if(!u)continue;const d=a.getPixelForValue(f.x??0),p=i.getPixelForValue(f.y??0)-6;c.some(y=>Math.abs(y.x-d)<40&&Math.abs(y.y-p)<12)||(c.push({x:d,y:p}),l.append("text").attr("x",d).attr("y",p).attr("text-anchor","middle").attr("font-size",X).attr("fill",kt).text(u))}}attachManhattanEvents(t,n,r,a,i){this.config.enableMouseTracking!==!1&&t.on("mouseover",(o,s)=>{var h,f,u,d,p,g,y;const l=o.currentTarget,c=r.indexOf(s);V(l).interrupt("hover").transition("hover").duration(z).ease(N).attr("r",i).style("opacity",1),l.style.filter="drop-shadow(0 1px 3px rgba(0,0,0,0.3))",this.context.events.emit("point:mouseover",{point:s,index:c,series:this,event:o,plotX:((h=this.positions[c])==null?void 0:h.cx)??0,plotY:((f=this.positions[c])==null?void 0:f.cy)??0}),(d=(u=s.events)==null?void 0:u.mouseOver)==null||d.call(s,o),(y=(g=(p=this.config.point)==null?void 0:p.events)==null?void 0:g.mouseOver)==null||y.call(s,o)}).on("mouseout",(o,s)=>{var h,f,u,d,p;const l=o.currentTarget,c=r.indexOf(s);V(l).interrupt("hover").transition("hover").duration(z).ease(N).attr("r",a).style("opacity",this.config.opacity??.75),l.style.filter="",this.context.events.emit("point:mouseout",{point:s,index:c,series:this,event:o}),(f=(h=s.events)==null?void 0:h.mouseOut)==null||f.call(s,o),(p=(d=(u=this.config.point)==null?void 0:u.events)==null?void 0:d.mouseOut)==null||p.call(s,o)}).on("click",(o,s)=>{var c,h,f,u,d,p,g;const l=r.indexOf(s);this.context.events.emit("point:click",{point:s,index:l,series:this,event:o}),(h=(c=s.events)==null?void 0:c.click)==null||h.call(s,o),(d=(u=(f=this.config.point)==null?void 0:f.events)==null?void 0:u.click)==null||d.call(s,o),(g=(p=this.config.events)==null?void 0:p.click)==null||g.call(this,o),this.handlePointSelect(V(o.currentTarget),s,l,o)})}getDataExtents(){let t=1/0,n=-1/0,r=0,a=-1/0;for(const s of this.data)s.x!==void 0&&s.x!==null&&(s.x<t&&(t=s.x),s.x>n&&(n=s.x)),s.y!==void 0&&s.y!==null&&s.y>a&&(a=s.y);const i=this.config.significanceLine??5e-8,o=-Math.log10(i);return a=Math.max(a,o+1),{xMin:t,xMax:n,yMin:r,yMax:a}}}function Jr(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e);break}return this}function Qc(e,t){switch(arguments.length){case 0:break;case 1:{typeof e=="function"?this.interpolator(e):this.range(e);break}default:{this.domain(e),typeof t=="function"?this.interpolator(t):this.range(t);break}}return this}function tl(e){return function(){return e}}function el(e){return+e}var Qr=[0,1];function Ct(e){return e}function vn(e,t){return(t-=e=+e)?function(n){return(n-e)/t}:tl(isNaN(t)?NaN:.5)}function nl(e,t){var n;return e>t&&(n=e,e=t,t=n),function(r){return Math.max(e,Math.min(t,r))}}function rl(e,t,n){var r=e[0],a=e[1],i=t[0],o=t[1];return a<r?(r=vn(a,r),i=n(o,i)):(r=vn(r,a),i=n(i,o)),function(s){return i(r(s))}}function al(e,t,n){var r=Math.min(e.length,t.length)-1,a=new Array(r),i=new Array(r),o=-1;for(e[r]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++o<r;)a[o]=vn(e[o],e[o+1]),i[o]=n(t[o],t[o+1]);return function(s){var l=Mc(e,s,1,r)-1;return i[l](a[l](s))}}function ta(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function ea(){var e=Qr,t=Qr,n=te,r,a,i,o=Ct,s,l,c;function h(){var u=Math.min(e.length,t.length);return o!==Ct&&(o=nl(e[0],e[u-1])),s=u>2?al:rl,l=c=null,f}function f(u){return u==null||isNaN(u=+u)?i:(l||(l=s(e.map(r),t,n)))(r(o(u)))}return f.invert=function(u){return o(a((c||(c=s(t,e.map(r),ht)))(u)))},f.domain=function(u){return arguments.length?(e=Array.from(u,el),h()):e.slice()},f.range=function(u){return arguments.length?(t=Array.from(u),h()):t.slice()},f.rangeRound=function(u){return t=Array.from(u),n=$r,h()},f.clamp=function(u){return arguments.length?(o=u?!0:Ct,h()):o!==Ct},f.interpolate=function(u){return arguments.length?(n=u,h()):n},f.unknown=function(u){return arguments.length?(i=u,f):i},function(u,d){return r=u,a=d,h()}}function il(){return ea()(Ct,Ct)}function ol(e,t,n,r){var a=Cc(e,t,n),i;switch(r=ee(r??",f"),r.type){case"s":{var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(i=Fc(a,o))&&(r.precision=i),Br(r,o)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(i=Oc(a,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=i-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(i=Ic(a))&&(r.precision=i-(r.type==="%")*2);break}}return De(r)}function na(e){var t=e.domain;return e.ticks=function(n){var r=t();return gn(r[0],r[r.length-1],n??10)},e.tickFormat=function(n,r){var a=t();return ol(a[0],a[a.length-1],n??10,r)},e.nice=function(n){n==null&&(n=10);var r=t(),a=0,i=r.length-1,o=r[a],s=r[i],l,c,h=10;for(s<o&&(c=o,o=s,s=c,c=a,a=i,i=c);h-- >0;){if(c=mn(o,s,n),c===l)return r[a]=o,r[i]=s,t(r);if(c>0)o=Math.floor(o/c)*c,s=Math.ceil(s/c)*c;else if(c<0)o=Math.ceil(o*c)/c,s=Math.floor(s*c)/c;else break;l=c}return e},e}function Ie(){var e=il();return e.copy=function(){return ta(e,Ie())},Jr.apply(e,arguments),na(e)}function sl(e,t){e=e.slice();var n=0,r=e.length-1,a=e[n],i=e[r],o;return i<a&&(o=n,n=r,r=o,o=a,a=i,i=o),e[n]=t.floor(a),e[r]=t.ceil(i),e}function ra(e){return Math.log(e)}function aa(e){return Math.exp(e)}function cl(e){return-Math.log(-e)}function ll(e){return-Math.exp(-e)}function fl(e){return isFinite(e)?+("1e"+e):e<0?0:e}function hl(e){return e===10?fl:e===Math.E?Math.exp:t=>Math.pow(e,t)}function ul(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function ia(e){return(t,n)=>-e(-t,n)}function dl(e){const t=e(ra,aa),n=t.domain;let r=10,a,i;function o(){return a=ul(r),i=hl(r),n()[0]<0?(a=ia(a),i=ia(i),e(cl,ll)):e(ra,aa),t}return t.base=function(s){return arguments.length?(r=+s,o()):r},t.domain=function(s){return arguments.length?(n(s),o()):n()},t.ticks=s=>{const l=n();let c=l[0],h=l[l.length-1];const f=h<c;f&&([c,h]=[h,c]);let u=a(c),d=a(h),p,g;const y=s==null?10:+s;let m=[];if(!(r%1)&&d-u<y){if(u=Math.floor(u),d=Math.ceil(d),c>0){for(;u<=d;++u)for(p=1;p<r;++p)if(g=u<0?p/i(-u):p*i(u),!(g<c)){if(g>h)break;m.push(g)}}else for(;u<=d;++u)for(p=r-1;p>=1;--p)if(g=u>0?p/i(-u):p*i(u),!(g<c)){if(g>h)break;m.push(g)}m.length*2<y&&(m=gn(c,h,y))}else m=gn(u,d,Math.min(d-u,y)).map(i);return f?m.reverse():m},t.tickFormat=(s,l)=>{if(s==null&&(s=10),l==null&&(l=r===10?"s":","),typeof l!="function"&&(!(r%1)&&(l=ee(l)).precision==null&&(l.trim=!0),l=De(l)),s===1/0)return l;const c=Math.max(1,r*s/t.ticks().length);return h=>{let f=h/i(Math.round(a(h)));return f*r<r-.5&&(f*=r),f<=c?l(h):""}},t.nice=()=>n(sl(n(),{floor:s=>i(Math.floor(a(s))),ceil:s=>i(Math.ceil(a(s)))})),t}function oa(){const e=dl(ea()).domain([1,10]);return e.copy=()=>ta(e,oa()).base(e.base()),Jr.apply(e,arguments),e}function pl(){var e=0,t=1,n,r,a,i,o=Ct,s=!1,l;function c(f){return f==null||isNaN(f=+f)?l:o(a===0?.5:(f=(i(f)-n)*a,s?Math.max(0,Math.min(1,f)):f))}c.domain=function(f){return arguments.length?([e,t]=f,n=i(e=+e),r=i(t=+t),a=n===r?0:1/(r-n),c):[e,t]},c.clamp=function(f){return arguments.length?(s=!!f,c):s},c.interpolator=function(f){return arguments.length?(o=f,c):o};function h(f){return function(u){var d,p;return arguments.length?([d,p]=u,o=f(d,p),c):[o(0),o(1)]}}return c.range=h(te),c.rangeRound=h($r),c.unknown=function(f){return arguments.length?(l=f,c):l},function(f){return i=f,n=f(e),r=f(t),a=n===r?0:1/(r-n),c}}function gl(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function Et(){var e=na(pl()(Ct));return e.copy=function(){return gl(e,Et())},Qc.apply(e,arguments)}function ml(e){return 1/Math.sqrt(2*Math.PI)*Math.exp(-.5*e*e)}function yl(e,t,n){if(e.length===0)return[];const r=Math.min(...e),o=(Math.max(...e)-r||1)/(n-1),s=[];for(let l=0;l<n;l++){const c=r+o*l;let h=0;for(const f of e)h+=ml((c-f)/t);s.push({value:c,density:h/(e.length*t)})}return s}function xl(e){const t=e.length;if(t<2)return 1;const n=e.reduce((i,o)=>i+o,0)/t,r=e.reduce((i,o)=>i+(o-n)**2,0)/(t-1);return 1.06*Math.sqrt(r)*Math.pow(t,-.2)}class sa extends rt{constructor(t){super(t)}render(){var m,v;const{xAxis:t,yAxis:n,plotArea:r}=this.context,a=this.context.animate,i=this.data,o=this.config.resolution??50,s=this.config.showBoxplot??!1,l=this.config.showPoints??!1,c=this.config.pointRadius??2,h=this.config.fillOpacity??.3,f=this.config.side??"both",u=this.getColor(),{violinWidth:d,violinOffset:p}=this.computeViolinGeometry(),y=(typeof this.config.animation=="object"?this.config.animation:{}).duration??K;for(let M=0;M<i.length;M++){const x=i[M],w=((m=x.custom)==null?void 0:m.values)||x.values||[];if(w.length===0)continue;const b=(v=x.custom)==null?void 0:v.kde,_=this.config.bandwidth??xl(w),A=b||yl(w,_,o),S=t.getPixelForValue(x.x??M)+p+d/2,$=x.color||u,T=Math.max(...A.map(L=>L.density)),k=d/2,C=Ie().domain([0,T]).range([0,k]),P=this.group.append("g").attr("class","katucharts-violin-point").style("cursor",this.config.cursor||"default");if(f==="both"||f==="left"){const L=Ye().y(E=>n.getPixelForValue(E.value)).x0(S).x1(E=>S-C(E.density)).curve(Vn),F=P.append("path").attr("d",L(A)).attr("fill",$).attr("fill-opacity",h).attr("stroke",$).attr("stroke-width",1);a&&F.attr("opacity",0).transition().duration(y).ease(R).delay(wt(M,0,B,i.length)).attr("opacity",1)}if(f==="both"||f==="right"){const L=Ye().y(E=>n.getPixelForValue(E.value)).x0(S).x1(E=>S+C(E.density)).curve(Vn),F=P.append("path").attr("d",L(A)).attr("fill",$).attr("fill-opacity",h).attr("stroke",$).attr("stroke-width",1);a&&F.attr("opacity",0).transition().duration(y).ease(R).delay(wt(M,0,B,i.length)).attr("opacity",1)}s&&w.length>=5&&this.renderInnerBoxplot(P,w,S,n,$,!!a,y,M),l&&this.renderInnerPoints(P,w,S,n,$,c,k,l==="jitter"),this.attachViolinEvents(P,x,M,S,n.getPixelForValue(this.median(w)))}a&&this.emitAfterAnimate(y+i.length*B)}renderInnerBoxplot(t,n,r,a,i,o,s,l){const c=[...n].sort((x,w)=>x-w),h=this.quantile(c,.25),f=this.median(n),u=this.quantile(c,.75),d=u-h,p=Math.max(c[0],h-1.5*d),g=Math.min(c[c.length-1],u+1.5*d),y=8,m=t.append("rect").attr("x",r-y/2).attr("width",y).attr("fill","#fff").attr("stroke",i).attr("stroke-width",1.5).attr("opacity",.9).attr("rx",4),v=t.append("line").attr("x1",r-y/2).attr("x2",r+y/2).attr("stroke",i).attr("stroke-width",2),M=t.append("line").attr("x1",r).attr("x2",r).attr("stroke",i).attr("stroke-width",1);if(o){const x=a.getPixelForValue(f);m.attr("y",x).attr("height",0).transition().duration(s).ease(R).delay(l*B).attr("y",a.getPixelForValue(u)).attr("height",Math.abs(a.getPixelForValue(h)-a.getPixelForValue(u))),v.attr("y1",x).attr("y2",x).transition().duration(s).ease(R).delay(l*B).attr("y1",a.getPixelForValue(f)).attr("y2",a.getPixelForValue(f)),M.attr("y1",x).attr("y2",x).transition().duration(s).ease(R).delay(l*B).attr("y1",a.getPixelForValue(p)).attr("y2",a.getPixelForValue(g))}else m.attr("y",a.getPixelForValue(u)).attr("height",Math.abs(a.getPixelForValue(h)-a.getPixelForValue(u))),v.attr("y1",a.getPixelForValue(f)).attr("y2",a.getPixelForValue(f)),M.attr("y1",a.getPixelForValue(p)).attr("y2",a.getPixelForValue(g))}renderInnerPoints(t,n,r,a,i,o,s,l){for(const c of n){const h=a.getPixelForValue(c),f=l?r+(Math.random()-.5)*s*.8:r;t.append("circle").attr("cx",f).attr("cy",h).attr("r",o).attr("fill",i).attr("opacity",.5)}}quantile(t,n){const r=n*(t.length-1),a=Math.floor(r),i=Math.ceil(r),o=r-a;return t[a]*(1-o)+t[i]*o}median(t){const n=[...t].sort((r,a)=>r-a);return this.quantile(n,.5)}computeViolinGeometry(){const{plotArea:t}=this.context,n=this.data,r=this.config.grouping!==!1&&this.context.totalSeriesOfType||1,a=this.config.grouping!==!1&&this.context.indexInType||0,i=this.config.groupPadding??.2,o=this.config.pointPadding??.1;let s;this.config.pointWidth!==void 0?s=this.config.pointWidth*r*1.5:s=Math.min(80*r,t.width/Math.max(n.length,1));let l;this.config.pointWidth!==void 0?l=this.config.pointWidth:(l=s*(1-i*2)/r*(1-o*2),this.config.maxPointWidth!==void 0&&(l=Math.min(l,this.config.maxPointWidth)),l=Math.min(l,80));const h=-s*(1-i*2)/2+(l+l*o*2)*a+l*o;return{violinWidth:l,violinOffset:h}}attachViolinEvents(t,n,r,a,i){this.config.enableMouseTracking!==!1&&t.on("mouseover",o=>{var s,l,c,h,f;t.selectAll("path").interrupt("hover").transition("hover").duration(z).ease(N).attr("fill-opacity",(this.config.fillOpacity??.3)+.2),t.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.15))"),this.context.events.emit("point:mouseover",{point:n,index:r,series:this,event:o,plotX:a,plotY:i}),(l=(s=n.events)==null?void 0:s.mouseOver)==null||l.call(n,o),(f=(h=(c=this.config.point)==null?void 0:c.events)==null?void 0:h.mouseOver)==null||f.call(n,o)}).on("mouseout",o=>{var s,l,c,h,f;t.selectAll("path").interrupt("hover").transition("hover").duration(z).ease(N).attr("fill-opacity",this.config.fillOpacity??.3),t.style("filter",""),this.context.events.emit("point:mouseout",{point:n,index:r,series:this,event:o}),(l=(s=n.events)==null?void 0:s.mouseOut)==null||l.call(n,o),(f=(h=(c=this.config.point)==null?void 0:c.events)==null?void 0:h.mouseOut)==null||f.call(n,o)}).on("click",o=>{var s,l,c,h,f,u,d;this.context.events.emit("point:click",{point:n,index:r,series:this,event:o}),(l=(s=n.events)==null?void 0:s.click)==null||l.call(n,o),(f=(h=(c=this.config.point)==null?void 0:c.events)==null?void 0:h.click)==null||f.call(n,o),(d=(u=this.config.events)==null?void 0:u.click)==null||d.call(this,o)})}getDataExtents(){var i;let t=1/0,n=-1/0,r=1/0,a=-1/0;for(let o=0;o<this.data.length;o++){const s=this.data[o],l=s.x??o;t=Math.min(t,l),n=Math.max(n,l);const c=((i=s.custom)==null?void 0:i.values)||s.values||[];for(const h of c)r=Math.min(r,h),a=Math.max(a,h)}return{xMin:t,xMax:n,yMin:r,yMax:a}}}class ca extends rt{constructor(t){super(t)}render(){const{xAxis:t,yAxis:n,plotArea:r}=this.context,a=this.context.animate,i=this.data.filter(y=>y.y!==null&&y.y!==void 0),o=this.getColor(),s=this.config.showConfidenceInterval!==!1,l=this.config.confidenceIntervalOpacity??.15,c=this.config.showCensorMarks!==!1,h=this.config.censorMarkSize??6,f=this.config.medianSurvivalLine??!1,u=this.config.showAtRiskTable??!1,d=this.config.lineWidth??2,g=(typeof this.config.animation=="object"?this.config.animation:{}).duration??K;s&&this.renderConfidenceInterval(i,o,l,!!a,g),this.renderSurvivalCurve(i,o,d,!!a,g),c&&this.renderCensoringMarks(i,o,h,!!a,g),f&&this.renderMedianLine(i,o),u&&this.renderAtRiskTable(i,o),a&&this.emitAfterAnimate(g+200)}renderSurvivalCurve(t,n,r,a,i){var f,u;const{xAxis:o,yAxis:s,plotArea:l}=this.context,c=Tn().x(d=>o.getPixelForValue(d.x??0)).y(d=>s.getPixelForValue(d.y??0)).curve(Gn),h=this.group.append("path").datum(t).attr("d",c).attr("fill","none").attr("stroke",n).attr("stroke-width",r).attr("stroke-linecap","round");if(a){const d=((u=(f=h.node())==null?void 0:f.getTotalLength)==null?void 0:u.call(f))??l.width;h.attr("stroke-dasharray",`${d} ${d}`).attr("stroke-dashoffset",d).transition().duration(i).ease(R).attr("stroke-dashoffset",0).on("end",()=>{h.attr("stroke-dasharray",null).attr("stroke-dashoffset",null)})}}renderConfidenceInterval(t,n,r,a,i){const{xAxis:o,yAxis:s}=this.context,l=t.filter(f=>{var u,d;return((u=f.custom)==null?void 0:u.ciLower)!==void 0&&((d=f.custom)==null?void 0:d.ciUpper)!==void 0});if(l.length===0)return;const c=Ye().x(f=>o.getPixelForValue(f.x??0)).y0(f=>{var u;return s.getPixelForValue(((u=f.custom)==null?void 0:u.ciLower)??f.y??0)}).y1(f=>{var u;return s.getPixelForValue(((u=f.custom)==null?void 0:u.ciUpper)??f.y??0)}).curve(Gn),h=this.group.append("path").datum(l).attr("d",c).attr("fill",n).attr("fill-opacity",r).attr("stroke","none");a&&h.attr("opacity",0).transition().duration(i).ease(R).attr("opacity",1)}renderCensoringMarks(t,n,r,a,i){const{xAxis:o,yAxis:s}=this.context,l=t.filter(f=>{var u;return((u=f.custom)==null?void 0:u.censored)===!0});if(l.length===0)return;const c=this.group.append("g").attr("class","katucharts-km-censors"),h=this.config.censorMarkColor??n;for(const f of l){const u=o.getPixelForValue(f.x??0),d=s.getPixelForValue(f.y??0),p=c.append("line").attr("x1",u).attr("x2",u).attr("y1",d-r/2).attr("y2",d+r/2).attr("stroke",h).attr("stroke-width",2).style("cursor","pointer");a&&p.attr("opacity",0).transition().duration(i).ease(R).attr("opacity",1),this.config.enableMouseTracking!==!1&&p.on("mouseover",g=>{this.context.events.emit("point:mouseover",{point:f,index:t.indexOf(f),series:this,event:g,plotX:u,plotY:d})}).on("mouseout",g=>{this.context.events.emit("point:mouseout",{point:f,index:t.indexOf(f),series:this,event:g})})}}renderMedianLine(t,n){const{xAxis:r,yAxis:a,plotArea:i}=this.context;let o=null;for(let h=0;h<t.length;h++)if((t[h].y??1)<=.5){o=t[h].x??0;break}if(o===null)return;const s=this.group.append("g").attr("class","katucharts-km-median"),l=r.getPixelForValue(o),c=a.getPixelForValue(.5);s.append("line").attr("x1",0).attr("x2",l).attr("y1",c).attr("y2",c).attr("stroke","#999").attr("stroke-width",1).attr("stroke-dasharray","4,3").attr("opacity",.6),s.append("line").attr("x1",l).attr("x2",l).attr("y1",c).attr("y2",i.height).attr("stroke","#999").attr("stroke-width",1).attr("stroke-dasharray","4,3").attr("opacity",.6)}renderAtRiskTable(t,n){var c;const{xAxis:r,plotArea:a}=this.context,i=t.filter(h=>{var f;return((f=h.custom)==null?void 0:f.atRisk)!==void 0});if(i.length===0)return;const o=Math.min(i.length,8),s=Math.max(1,Math.floor(i.length/o)),l=this.group.append("g").attr("class","katucharts-km-atrisk");for(let h=0;h<i.length;h+=s){const f=i[h],u=r.getPixelForValue(f.x??0);l.append("text").attr("x",u).attr("y",a.height+32).attr("text-anchor","middle").attr("font-size",X).attr("fill",n).text(String(((c=f.custom)==null?void 0:c.atRisk)??""))}l.append("text").attr("x",-8).attr("y",a.height+32).attr("text-anchor","end").attr("font-size",X).attr("fill",n).text("At risk")}getDataExtents(){let t=0,n=-1/0;const r=0,a=1;for(const i of this.data)i.x!==void 0&&i.x!==null&&(n=Math.max(n,i.x));return{xMin:t,xMax:n,yMin:r,yMax:a}}}class la extends rt{constructor(t){super(t),this.config.clip=!1}render(){var M,x,w,b;const{xAxis:t,yAxis:n,plotArea:r}=this.context,a=this.context.animate,i=this.data.filter(_=>_.x!==null&&_.x!==void 0),o=this.getColor(),s=this.config.nullEffectValue??1,l=this.config.nullEffectColor??"#999";this.config.nullEffectDashStyle;const c=this.config.markerSizeByWeight!==!1,h=this.config.maxMarkerSize??15,f=this.config.minMarkerSize??4,u=this.config.showStudyLabels!==!1,d=this.config.showEstimates!==!1,p=this.config.summaryDiamondColor??o,g=this.config.lineWidth??1.5,m=(typeof this.config.animation=="object"?this.config.animation:{}).duration??K,v=Math.max(...i.map(_=>{var A;return((A=_.custom)==null?void 0:A.weight)??1}));this.renderNullEffectLine(s,l);for(let _=0;_<i.length;_++){const A=i[_],S=t.getPixelForValue(A.x??0),$=n.getPixelForValue(A.y??_),T=((M=A.custom)==null?void 0:M.ciLower)??A.x,k=((x=A.custom)==null?void 0:x.ciUpper)??A.x,C=t.getPixelForValue(T),P=t.getPixelForValue(k),L=((w=A.custom)==null?void 0:w.isSummary)??!1,F=((b=A.custom)==null?void 0:b.weight)??1,E=A.color||o,I=this.group.append("g").attr("class","katucharts-forest-row").style("cursor",this.config.cursor||"pointer");if(L)this.renderDiamond(I,S,$,C,P,p,!!a,m,_);else{const G=I.append("line").attr("y1",$).attr("y2",$).attr("stroke",E).attr("stroke-width",g),O=c?f+(h-f)*(F/v):(h+f)/2,ot=I.append("rect").attr("y",$-O/2).attr("width",O).attr("height",O).attr("fill",E);a?(G.attr("x1",S).attr("x2",S).transition().duration(m).ease(R).delay(wt(_,0,B,i.length)).attr("x1",C).attr("x2",P),ot.attr("x",S-O/2).attr("opacity",0).transition().duration(m).ease(R).delay(wt(_,0,B,i.length)).attr("x",S-O/2).attr("opacity",1)):(G.attr("x1",C).attr("x2",P),ot.attr("x",S-O/2));const Q=6;I.append("line").attr("x1",C).attr("x2",C).attr("y1",$-Q/2).attr("y2",$+Q/2).attr("stroke",E).attr("stroke-width",g),I.append("line").attr("x1",P).attr("x2",P).attr("y1",$-Q/2).attr("y2",$+Q/2).attr("stroke",E).attr("stroke-width",g)}if(u&&A.name&&I.append("text").attr("x",-10).attr("y",$).attr("text-anchor","end").attr("dominant-baseline","central").attr("font-size",X).attr("font-weight",L?"bold":"normal").attr("fill",this.autoLabelColor()).text(A.name),d){const G=`${(A.x??0).toFixed(2)} [${T.toFixed(2)}, ${k.toFixed(2)}]`;I.append("text").attr("x",r.width+10).attr("y",$).attr("text-anchor","start").attr("dominant-baseline","central").attr("font-size",X).attr("font-family","monospace").attr("fill",this.autoLabelColor()).text(G)}this.attachRowEvents(I,A,_,S,$)}a&&this.emitAfterAnimate(m+i.length*B)}renderNullEffectLine(t,n){const{xAxis:r,plotArea:a}=this.context,i=r.getPixelForValue(t);i>=0&&i<=a.width&&this.group.append("line").attr("class","katucharts-forest-null").attr("x1",i).attr("x2",i).attr("y1",0).attr("y2",a.height).attr("stroke",n).attr("stroke-width",1).attr("stroke-dasharray","6,4").attr("opacity",.7)}renderDiamond(t,n,r,a,i,o,s,l,c){const f=`M${a},${r} L${n},${r-8} L${i},${r} L${n},${r+8} Z`,u=t.append("path").attr("d",f).attr("fill",o).attr("stroke",o).attr("stroke-width",1);s&&u.attr("opacity",0).transition().duration(l).ease(R).delay(c*B).attr("opacity",1)}attachRowEvents(t,n,r,a,i){this.config.enableMouseTracking!==!1&&t.on("mouseover",o=>{var s,l,c,h,f;t.style("filter","drop-shadow(0 1px 3px rgba(0,0,0,0.2))"),t.interrupt("hover").transition("hover").duration(z).ease(N).attr("opacity",1),this.context.events.emit("point:mouseover",{point:n,index:r,series:this,event:o,plotX:a,plotY:i}),(l=(s=n.events)==null?void 0:s.mouseOver)==null||l.call(n,o),(f=(h=(c=this.config.point)==null?void 0:c.events)==null?void 0:h.mouseOver)==null||f.call(n,o)}).on("mouseout",o=>{var s,l,c,h,f;t.style("filter",""),t.interrupt("hover").transition("hover").duration(z).ease(N).attr("opacity",1),this.context.events.emit("point:mouseout",{point:n,index:r,series:this,event:o}),(l=(s=n.events)==null?void 0:s.mouseOut)==null||l.call(n,o),(f=(h=(c=this.config.point)==null?void 0:c.events)==null?void 0:h.mouseOut)==null||f.call(n,o)}).on("click",o=>{var s,l,c,h,f,u,d;this.context.events.emit("point:click",{point:n,index:r,series:this,event:o}),(l=(s=n.events)==null?void 0:s.click)==null||l.call(n,o),(f=(h=(c=this.config.point)==null?void 0:c.events)==null?void 0:h.click)==null||f.call(n,o),(d=(u=this.config.events)==null?void 0:u.click)==null||d.call(this,o)})}getDataExtents(){var s,l;let t=1/0,n=-1/0,r=1/0,a=-1/0;for(let c=0;c<this.data.length;c++){const h=this.data[c],f=((s=h.custom)==null?void 0:s.ciLower)??h.x??0,u=((l=h.custom)==null?void 0:l.ciUpper)??h.x??0;t=Math.min(t,f),n=Math.max(n,u);const d=h.y??c;r=Math.min(r,d),a=Math.max(a,d)}const i=this.config.nullEffectValue??1;t=Math.min(t,i),n=Math.max(n,i);const o=(n-t)*.1;return t-=o,n+=o,{xMin:t,xMax:n,yMin:r-.5,yMax:a+.5}}}const bl={A:"#2ecc71",T:"#e74c3c",G:"#f39c12",C:"#3498db"},vl={A:"#2ecc71",U:"#e74c3c",G:"#f39c12",C:"#3498db"},wl={A:"#ccff00",R:"#0000ff",N:"#cc00ff",D:"#ff0000",C:"#ffff00",E:"#ff0066",Q:"#ff00cc",G:"#ff9900",H:"#0066ff",I:"#66ff00",L:"#33ff00",K:"#6600ff",M:"#00ff00",F:"#00ff66",P:"#ffcc00",S:"#ff3300",T:"#ff6600",W:"#00ccff",Y:"#00ffcc",V:"#99ff00"};class fa extends rt{constructor(t){super(t)}render(){var f;const{xAxis:t,yAxis:n,plotArea:r}=this.context,a=this.context.animate,i=this.data,o=this.config.alphabetType??"DNA",s=this.config.colorScheme??this.getDefaultColors(o),l=this.config.letterFont??"bold Arial, Helvetica, sans-serif",h=(typeof this.config.animation=="object"?this.config.animation:{}).duration??K;for(let u=0;u<i.length;u++){const d=i[u],p=((f=d.custom)==null?void 0:f.letters)||d.letters||[];if(p.length===0)continue;const g=d.x??u,y=[...p].sort((w,b)=>w.height-b.height),m=t.getPixelForValue(g),v=this.getColumnWidth(i.length);let M=0;const x=this.group.append("g").attr("class","katucharts-seqlogo-position").style("cursor",this.config.cursor||"default");for(const w of y){if(w.height<=0)continue;const b=n.getPixelForValue(M),_=n.getPixelForValue(M+w.height),A=Math.abs(b-_),S=w.color||s[w.letter]||"#999";if(A<1){M+=w.height;continue}const $=x.append("text").attr("x",m).attr("y",_).attr("text-anchor","middle").attr("dominant-baseline","hanging").attr("font-family",l).attr("font-size","1px").attr("fill",S).text(w.letter),T=$.node();if(T){const k=T.getBBox();if(k.width>0&&k.height>0){const C=v/k.width,P=A/k.height;$.attr("transform",`translate(${m}, ${_}) scale(${C}, ${P}) translate(${-m}, ${-_})`)}}a&&$.attr("opacity",0).transition().duration(h).ease(R).delay(wt(u,0,B,i.length)).attr("opacity",1),M+=w.height}this.attachPositionEvents(x,d,u,m,n.getPixelForValue(M/2))}a&&this.emitAfterAnimate(h+i.length*B)}getDefaultColors(t){switch(t.toUpperCase()){case"RNA":return vl;case"PROTEIN":return wl;default:return bl}}getColumnWidth(t){const{plotArea:n}=this.context,r=this.config.positionWidth;return r&&r!=="auto"?Number(r):n.width/Math.max(t,1)*.85}attachPositionEvents(t,n,r,a,i){this.config.enableMouseTracking!==!1&&t.on("mouseover",o=>{var s,l,c,h,f;t.style("filter","drop-shadow(0 1px 2px rgba(0,0,0,0.2))"),t.interrupt("hover").transition("hover").duration(z).ease(N).attr("opacity",1),this.context.events.emit("point:mouseover",{point:n,index:r,series:this,event:o,plotX:a,plotY:i}),(l=(s=n.events)==null?void 0:s.mouseOver)==null||l.call(n,o),(f=(h=(c=this.config.point)==null?void 0:c.events)==null?void 0:h.mouseOver)==null||f.call(n,o)}).on("mouseout",o=>{var s,l,c,h,f;t.style("filter",""),t.interrupt("hover").transition("hover").duration(z).ease(N).attr("opacity",1),this.context.events.emit("point:mouseout",{point:n,index:r,series:this,event:o}),(l=(s=n.events)==null?void 0:s.mouseOut)==null||l.call(n,o),(f=(h=(c=this.config.point)==null?void 0:c.events)==null?void 0:h.mouseOut)==null||f.call(n,o)}).on("click",o=>{var s,l,c,h,f,u,d;this.context.events.emit("point:click",{point:n,index:r,series:this,event:o}),(l=(s=n.events)==null?void 0:s.click)==null||l.call(n,o),(f=(h=(c=this.config.point)==null?void 0:c.events)==null?void 0:h.click)==null||f.call(n,o),(d=(u=this.config.events)==null?void 0:u.click)==null||d.call(this,o)})}getDataExtents(){var i;let t=1/0,n=-1/0,r=0;const a=this.config.maxBits??((this.config.alphabetType??"DNA").toUpperCase()==="PROTEIN"?Math.log2(20):2);for(let o=0;o<this.data.length;o++){const s=this.data[o],l=s.x??o;t=Math.min(t,l),n=Math.max(n,l);const h=(((i=s.custom)==null?void 0:i.letters)||s.letters||[]).reduce((f,u)=>f+u.height,0);r=Math.max(r,h)}return r=Math.max(r,a),{xMin:t-.5,xMax:n+.5,yMin:0,yMax:r}}}function W(e){for(var t=e.length/6|0,n=new Array(t),r=0;r<t;)n[r]="#"+e.slice(r*6,++r*6);return n}const J=e=>as(e[e.length-1]);var Ml=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(W);const _l=J(Ml);var Al=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(W);const kl=J(Al);var Cl=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(W);const $l=J(Cl);var Pl=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(W);const Sl=J(Pl);var Tl=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(W);const ha=J(Tl);var Ll=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(W);const Rl=J(Ll);var El=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(W);const Dl=J(El);var Il=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(W);const Fl=J(Il);var Ol=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(W);const Fe=J(Ol);var Nl=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(W);const Vl=J(Nl);var zl=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(W);const Gl=J(zl);var Bl=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(W);const Wl=J(Bl);var Hl=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(W);const Yl=J(Hl);var Xl=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(W);const ql=J(Xl);var Ul=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(W);const jl=J(Ul);function Kl(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-e*(35.34-e*(2381.73-e*(6402.7-e*(7024.72-e*2710.57)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+e*(170.73+e*(52.82-e*(131.46-e*(176.58-e*67.37)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+e*(442.36-e*(2482.43-e*(6167.24-e*(6614.94-e*2475.67)))))))+")"}const Zl=dn(gt(300,.5,0),gt(-240,.5,1));var Jl=dn(gt(-100,.75,.35),gt(80,1.5,.8)),Ql=dn(gt(260,.75,.35),gt(80,1.5,.8));gt();function tf(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+e*(1172.33-e*(10793.56-e*(33300.12-e*(38394.49-e*14825.05)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+e*(557.33+e*(1225.33-e*(3574.96-e*(1073.77+e*707.56)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+e*(3211.1-e*(15327.97-e*(27814-e*(22569.18-e*6838.66)))))))+")"}function Oe(e){var t=e.length;return function(n){return e[Math.max(0,Math.min(t-1,Math.floor(n*t)))]}}const ef=Oe(W("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));var nf=Oe(W("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),rf=Oe(W("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),af=Oe(W("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function of(e,t){return e.parent===t.parent?1:2}function sf(e){return e.reduce(cf,0)/e.length}function cf(e,t){return e+t.x}function lf(e){return 1+e.reduce(ff,0)}function ff(e,t){return Math.max(e,t.y)}function hf(e){for(var t;t=e.children;)e=t[0];return e}function uf(e){for(var t;t=e.children;)e=t[t.length-1];return e}function Ne(){var e=of,t=1,n=1,r=!1;function a(i){var o,s=0;i.eachAfter(function(u){var d=u.children;d?(u.x=sf(d),u.y=lf(d)):(u.x=o?s+=e(u,o):0,u.y=0,o=u)});var l=hf(i),c=uf(i),h=l.x-e(l,c)/2,f=c.x+e(c,l)/2;return i.eachAfter(r?function(u){u.x=(u.x-i.x)*t,u.y=(i.y-u.y)*n}:function(u){u.x=(u.x-h)/(f-h)*t,u.y=(1-(i.y?u.y/i.y:1))*n})}return a.separation=function(i){return arguments.length?(e=i,a):e},a.size=function(i){return arguments.length?(r=!1,t=+i[0],n=+i[1],a):r?null:[t,n]},a.nodeSize=function(i){return arguments.length?(r=!0,t=+i[0],n=+i[1],a):r?[t,n]:null},a}function df(e){var t=0,n=e.children,r=n&&n.length;if(!r)t=1;else for(;--r>=0;)t+=n[r].value;e.value=t}function pf(){return this.eachAfter(df)}function gf(e,t){let n=-1;for(const r of this)e.call(t,r,++n,this);return this}function mf(e,t){for(var n=this,r=[n],a,i,o=-1;n=r.pop();)if(e.call(t,n,++o,this),a=n.children)for(i=a.length-1;i>=0;--i)r.push(a[i]);return this}function yf(e,t){for(var n=this,r=[n],a=[],i,o,s,l=-1;n=r.pop();)if(a.push(n),i=n.children)for(o=0,s=i.length;o<s;++o)r.push(i[o]);for(;n=a.pop();)e.call(t,n,++l,this);return this}function xf(e,t){let n=-1;for(const r of this)if(e.call(t,r,++n,this))return r}function bf(e){return this.eachAfter(function(t){for(var n=+e(t.data)||0,r=t.children,a=r&&r.length;--a>=0;)n+=r[a].value;t.value=n})}function vf(e){return this.eachBefore(function(t){t.children&&t.children.sort(e)})}function wf(e){for(var t=this,n=Mf(t,e),r=[t];t!==n;)t=t.parent,r.push(t);for(var a=r.length;e!==n;)r.splice(a,0,e),e=e.parent;return r}function Mf(e,t){if(e===t)return e;var n=e.ancestors(),r=t.ancestors(),a=null;for(e=n.pop(),t=r.pop();e===t;)a=e,e=n.pop(),t=r.pop();return a}function _f(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t}function Af(){return Array.from(this)}function kf(){var e=[];return this.eachBefore(function(t){t.children||e.push(t)}),e}function Cf(){var e=this,t=[];return e.each(function(n){n!==e&&t.push({source:n.parent,target:n})}),t}function*$f(){var e=this,t,n=[e],r,a,i;do for(t=n.reverse(),n=[];e=t.pop();)if(yield e,r=e.children)for(a=0,i=r.length;a<i;++a)n.push(r[a]);while(n.length)}function ne(e,t){e instanceof Map?(e=[void 0,e],t===void 0&&(t=Tf)):t===void 0&&(t=Sf);for(var n=new Ve(e),r,a=[n],i,o,s,l;r=a.pop();)if((o=t(r.data))&&(l=(o=Array.from(o)).length))for(r.children=o,s=l-1;s>=0;--s)a.push(i=o[s]=new Ve(o[s])),i.parent=r,i.depth=r.depth+1;return n.eachBefore(Rf)}function Pf(){return ne(this).eachBefore(Lf)}function Sf(e){return e.children}function Tf(e){return Array.isArray(e)?e[1]:null}function Lf(e){e.data.value!==void 0&&(e.value=e.data.value),e.data=e.data.data}function Rf(e){var t=0;do e.height=t;while((e=e.parent)&&e.height<++t)}function Ve(e){this.data=e,this.depth=this.height=0,this.parent=null}Ve.prototype=ne.prototype={constructor:Ve,count:pf,each:gf,eachAfter:yf,eachBefore:mf,find:xf,sum:bf,sort:vf,path:wf,ancestors:_f,descendants:Af,leaves:kf,links:Cf,copy:Pf,[Symbol.iterator]:$f};class ua extends rt{constructor(t){super(t)}render(){var T,k;const{plotArea:t}=this.context,n=this.context.animate,r=this.data,a=this.config.rowDendrogram??((T=this.config.custom)==null?void 0:T.rowDendrogram),i=this.config.colDendrogram??((k=this.config.custom)==null?void 0:k.colDendrogram),o=this.config.showRowDendrogram!==!1&&!!a,s=this.config.showColDendrogram!==!1&&!!i,l=o?this.config.dendrogramRowWidth??80:0,c=s?this.config.dendrogramColHeight??80:0,h=this.config.dendrogramColor??"#666",f=this.config.dendrogramLineWidth??1,u={x:l,y:c,width:t.width-l,height:t.height-c},d=r.map(C=>C.value??C.z??C.y??0).filter(C=>C!=null),p=this.config.min??(d.length>0?Math.min(...d):0),g=this.config.max??(d.length>0?Math.max(...d):1),y=this.config.nullColor??"#e4e4e4",m=this.config.diverging?ha:Fe,v=Et(m).domain([p,g]),M=[...new Set(r.map(C=>C.x??0))].sort((C,P)=>C-P),x=[...new Set(r.map(C=>C.y??0))].sort((C,P)=>C-P),w=M.length||1,b=x.length||1,_=u.width/w,A=u.height/b,$=(typeof this.config.animation=="object"?this.config.animation:{}).duration??K;this.renderHeatmapCells(r,u,M,x,_,A,v,y,!!n,$),o&&a&&this.renderRowDendrogram(a,l,u,h,f,!!n,$),s&&i&&this.renderColDendrogram(i,c,u,h,f,!!n,$),this.renderLabels(M,x,u,_,A),n&&this.emitAfterAnimate($+200)}renderHeatmapCells(t,n,r,a,i,o,s,l,c,h){const f=new Map(r.map((m,v)=>[m,v])),u=new Map(a.map((m,v)=>[m,v])),d=this.config.borderWidth??1,p=this.config.borderColor??this.autoBorderColor(),g=this.config.borderRadius??4,y=this.group.append("g").attr("class","katucharts-cheatmap-cells").attr("transform",`translate(${n.x},${n.y})`);for(const m of t){const v=f.get(m.x??0)??0,M=u.get(m.y??0)??0,x=m.value??m.z??m.y??null,w=m.color||(x!==null?s(x):l),b=y.append("rect").attr("x",v*i+d/2).attr("y",M*o+d/2).attr("width",Math.max(0,i-d)).attr("height",Math.max(0,o-d)).attr("fill",w).attr("stroke",p).attr("stroke-width",d).attr("rx",typeof g=="number"?g:4).style("cursor","pointer");if(c&&b.attr("opacity",0).transition().duration(h).ease(R).attr("opacity",1),this.config.enableMouseTracking!==!1){const _=t.indexOf(m);b.on("mouseover",A=>{b.interrupt("hover").transition("hover").duration(z).ease(N).attr("stroke","#333").attr("stroke-width",2),this.context.events.emit("point:mouseover",{point:m,index:_,series:this,event:A,plotX:n.x+v*i+i/2,plotY:n.y+M*o+o/2})}).on("mouseout",A=>{b.interrupt("hover").transition("hover").duration(z).ease(N).attr("stroke",p).attr("stroke-width",d),this.context.events.emit("point:mouseout",{point:m,index:_,series:this,event:A})}).on("click",A=>{this.context.events.emit("point:click",{point:m,index:_,series:this,event:A})})}}}renderRowDendrogram(t,n,r,a,i,o,s){const l=ne(t);Ne().size([r.height,n-10])(l);const f=this.group.append("g").attr("class","katucharts-cheatmap-row-dendro").attr("transform",`translate(0,${r.y})`).selectAll(".dendro-link").data(l.links()).join("path").attr("class","dendro-link").attr("d",u=>{const d=u.source,p=u.target,g=n-5-d.y,y=d.x,m=n-5-p.y,v=p.x;return`M${m},${v}H${g}V${y}`}).attr("fill","none").attr("stroke",a).attr("stroke-width",i);o&&f.attr("opacity",0).transition().duration(s).ease(R).attr("opacity",1)}renderColDendrogram(t,n,r,a,i,o,s){const l=ne(t);Ne().size([r.width,n-10])(l);const f=this.group.append("g").attr("class","katucharts-cheatmap-col-dendro").attr("transform",`translate(${r.x},0)`).selectAll(".dendro-link").data(l.links()).join("path").attr("class","dendro-link").attr("d",u=>{const d=u.source,p=u.target,g=d.x,y=n-5-d.y,m=p.x,v=n-5-p.y;return`M${m},${v}V${y}H${g}`}).attr("fill","none").attr("stroke",a).attr("stroke-width",i);o&&f.attr("opacity",0).transition().duration(s).ease(R).attr("opacity",1)}renderLabels(t,n,r,a,i){if(!(this.config.showLabels!==!1))return;const s=this.group.append("g").attr("class","katucharts-cheatmap-labels"),l=this.config.xLabels;if(l)for(let h=0;h<Math.min(l.length,t.length);h++)s.append("text").attr("x",r.x+h*a+a/2).attr("y",r.y+r.height+12).attr("text-anchor","middle").attr("font-size",X).attr("fill",kt).text(l[h]);const c=this.config.yLabels;if(c)for(let h=0;h<Math.min(c.length,n.length);h++)s.append("text").attr("x",r.x+r.width+5).attr("y",r.y+h*i+i/2).attr("text-anchor","start").attr("dominant-baseline","central").attr("font-size",X).attr("fill",kt).text(c[h])}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class da extends rt{constructor(t){super(t)}render(){const{plotArea:t}=this.context,n=this.context.animate,r=this.getTreeData();if(!r)return;const a=this.config.layout??"rectangular",i=this.config.branchColor??"#666",o=this.config.branchWidth??1.5,s=this.config.leafLabelSize??11,l=this.config.showBranchLengths??!1,c=this.config.showBootstrap??!1,h=this.config.bootstrapThreshold??70,f=this.config.leafPadding??10,u=this.config.colorByAttribute,p=(typeof this.config.animation=="object"?this.config.animation:{}).duration??K,g=ne(r),y=g.leaves(),m=this.estimateLabelSpace(y,s);a==="radial"?this.renderRadial(g,t,i,o,s,f,c,h,l,u,!!n,p):this.renderRectangular(g,t,m,i,o,s,f,c,h,l,u,!!n,p),n&&this.emitAfterAnimate(p+200)}getTreeData(){var t,n,r;if(this.data.length>0){const a=this.data[0];if(a.children||(t=a.custom)!=null&&t.children)return{name:a.name,children:a.children||((n=a.custom)==null?void 0:n.children),branchLength:a.branchLength??((r=a.custom)==null?void 0:r.branchLength),custom:a.custom}}return this.config.treeData?this.config.treeData:null}estimateLabelSpace(t,n){const r=Math.max(0,...t.map(a=>(a.data.name||"").length));return Math.min(r*n*.55,200)}renderRectangular(t,n,r,a,i,o,s,l,c,h,f,u,d){const p=n.width-r-s,g=n.height;Ne().size([g,p]).separation(()=>1)(t),h&&this.scaleBranchLengths(t,p);const m=this.group.append("g").attr("class","katucharts-phylo-tree"),v=t.links(),M=m.selectAll(".katucharts-phylo-branch").data(v).join("path").attr("class","katucharts-phylo-branch").attr("d",b=>{const _=b.source.y,A=b.source.x,S=b.target.y,$=b.target.x;return`M${_},${A}V${$}H${S}`}).attr("fill","none").attr("stroke",b=>{var _,A;return f&&((_=b.target.data.custom)!=null&&_[f])?b.target.data.custom[f]:((A=b.target.data.custom)==null?void 0:A.color)||a}).attr("stroke-width",i);u&&M.attr("opacity",0).transition().duration(d).ease(R).attr("opacity",1);const x=t.leaves(),w=m.selectAll(".katucharts-phylo-leaf").data(x).join("g").attr("class","katucharts-phylo-leaf").attr("transform",b=>`translate(${b.y},${b.x})`);if(w.append("circle").attr("r",3).attr("fill",b=>{var _,A;return f&&((_=b.data.custom)!=null&&_[f])?b.data.custom[f]:((A=b.data.custom)==null?void 0:A.color)||a}),w.append("text").attr("x",s).attr("y",0).attr("text-anchor","start").attr("dominant-baseline","central").attr("font-size",`${o}px`).attr("fill",this.autoLabelColor()).text(b=>b.data.name||"").style("cursor","default"),u&&w.attr("opacity",0).transition().duration(d).ease(R).attr("opacity",1),l){const b=t.descendants().filter(_=>_.children&&_.children.length>0&&_.parent);m.selectAll(".katucharts-phylo-bootstrap").data(b).join("text").attr("class","katucharts-phylo-bootstrap").attr("x",_=>_.y-5).attr("y",_=>_.x-5).attr("text-anchor","end").attr("font-size",X).attr("fill",this.autoLabelColor()).text(_=>{var S;const A=(S=_.data.custom)==null?void 0:S.bootstrap;return A!==void 0&&A>=c?String(A):""})}h&&this.renderScaleBar(m,p,g),this.attachTreeEvents(w,x)}renderRadial(t,n,r,a,i,o,s,l,c,h,f,u){const d=Math.min(n.width,n.height)/2-60,p=n.width/2,g=n.height/2;Ne().size([360,d]).separation(()=>1)(t),c&&this.scaleBranchLengths(t,d);const m=this.group.append("g").attr("class","katucharts-phylo-radial").attr("transform",`translate(${p},${g})`),v=(b,_)=>{const A=(b-90)*Math.PI/180;return{x:_*Math.cos(A),y:_*Math.sin(A)}},M=t.links();m.selectAll(".katucharts-phylo-branch").data(M).join("path").attr("class","katucharts-phylo-branch").attr("d",b=>{const _=b.source.x,A=b.target.x,S=b.source.y,$=b.target.y,T=v(A,S),k=v(A,$),P=Math.abs(A-_)>180?1:0,L=A>_?1:0,F=v(_,S);return`M${F.x},${F.y}A${S},${S} 0 ${P} ${L} ${T.x},${T.y}L${k.x},${k.y}`}).attr("fill","none").attr("stroke",b=>{var _;return((_=b.target.data.custom)==null?void 0:_.color)||r}).attr("stroke-width",a);const x=t.leaves(),w=m.selectAll(".katucharts-phylo-leaf").data(x).join("g").attr("class","katucharts-phylo-leaf").attr("transform",b=>{const _=v(b.x,b.y);return`translate(${_.x},${_.y})`});w.append("circle").attr("r",3).attr("fill",b=>{var _;return((_=b.data.custom)==null?void 0:_.color)||r}),w.append("text").attr("x",b=>b.x<180?o:-o).attr("text-anchor",b=>b.x<180?"start":"end").attr("dominant-baseline","central").attr("transform",b=>`rotate(${b.x<180?b.x-90:b.x+90})`).attr("font-size",`${i}px`).attr("fill",this.autoLabelColor()).text(b=>b.data.name||""),f&&m.attr("opacity",0).transition().duration(u).ease(R).attr("opacity",1),this.attachTreeEvents(w,x)}scaleBranchLengths(t,n){const r=this.getMaxDistance(t);if(r<=0)return;const a=n/r;t.each(i=>{const o=this.getDistanceFromRoot(i);i.y=o*a})}getDistanceFromRoot(t){var a;let n=0,r=t;for(;r.parent;)n+=r.data.branchLength??((a=r.data.custom)==null?void 0:a.branchLength)??0,r=r.parent;return n}getMaxDistance(t){let n=0;return t.leaves().forEach(r=>{n=Math.max(n,this.getDistanceFromRoot(r))}),n}renderScaleBar(t,n,r){const a=n*.15,i=r+20;t.append("line").attr("x1",0).attr("x2",a).attr("y1",i).attr("y2",i).attr("stroke","#333").attr("stroke-width",1),t.append("text").attr("x",a/2).attr("y",i+12).attr("text-anchor","middle").attr("font-size",X).attr("fill",this.autoLabelColor()).text("0.1")}attachTreeEvents(t,n){this.config.enableMouseTracking!==!1&&t.on("mouseover",(r,a)=>{const o=r.currentTarget.querySelector("circle");o&&V(o).interrupt("hover").transition("hover").duration(z).ease(N).attr("r",5);const s=n.indexOf(a);this.context.events.emit("point:mouseover",{point:{name:a.data.name,custom:a.data.custom},index:s,series:this,event:r,plotX:0,plotY:0})}).on("mouseout",(r,a)=>{const o=r.currentTarget.querySelector("circle");o&&V(o).interrupt("hover").transition("hover").duration(z).ease(N).attr("r",3);const s=n.indexOf(a);this.context.events.emit("point:mouseout",{point:{name:a.data.name,custom:a.data.custom},index:s,series:this,event:r})}).on("click",(r,a)=>{const i=n.indexOf(a);this.context.events.emit("point:click",{point:{name:a.data.name,custom:a.data.custom},index:i,series:this,event:r})})}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}const pa=["#e6194b","#3cb44b","#4363d8","#f58231","#911eb4","#42d4f4","#f032e6","#bfef45","#fabebe","#469990","#e6beff","#9a6324","#fffac8","#800000","#aaffc3","#808000","#ffd8b1","#000075","#a9a9a9","#000000","#808080","#ffffff","#dcbeff","#ffe119"],Ef={gneg:"#ffffff",gpos25:"#c0c0c0",gpos50:"#909090",gpos75:"#505050",gpos100:"#000000",acen:"#cc3333",gvar:"#dcdcdc",stalk:"#708090"},Df=5e3;class ga{constructor(t,n,r,a){this.chrArcs=[],this.chrArcMap=new Map,this.outerR=0,this.innerR=0,this.cx=0,this.cy=0,this.chromosomes=[],this.chromosomes=t;const i=Math.min(n,r);this.outerR=re(a.outerRadius,i)??i/2*.9,this.innerR=re(a.innerRadius,i)??this.outerR*.7,this.cx=n/2,this.cy=r/2,this.computeChromosomeArcs(a.gap??2)}computeChromosomeArcs(t){const n=this.chromosomes.reduce((s,l)=>s+l.length,0);let r=0;for(const s of this.chromosomes)r+=s.gap??t;const a=r*(Math.PI/180),i=2*Math.PI-a;this.chrArcs=[],this.chrArcMap=new Map;let o=0;for(let s=0;s<this.chromosomes.length;s++){const l=this.chromosomes[s],c=l.length/n*i,h={id:l.id,startAngle:o,endAngle:o+c,length:l.length,color:l.color||pa[s%pa.length]};this.chrArcs.push(h),this.chrArcMap.set(l.id,h);const f=(l.gap??t)*(Math.PI/180);o+=c+f}}getAngleForPosition(t,n){const r=this.chrArcMap.get(t);if(!r)return 0;const a=Math.min(Math.max(n/r.length,0),1);return r.startAngle+a*(r.endAngle-r.startAngle)}getAngleRange(t,n,r){return{startAngle:this.getAngleForPosition(t,n),endAngle:this.getAngleForPosition(t,r)}}polarToCartesian(t,n){const r=t-Math.PI/2;return{x:Math.cos(r)*n,y:Math.sin(r)*n}}createRadialScale(t,n,r,a=!1){const{min:i,max:o}=Mt(t);return a&&i>0?oa().domain([Math.max(i,1e-10),o||1]).range([n,r]).clamp(!0):Ie().domain([i,o||1]).range([n,r])}renderIdeogram(t,n,r,a,i,o,s,l="#fff"){const c=ct().innerRadius(n).outerRadius(r).startAngle(f=>f.startAngle).endAngle(f=>f.endAngle),h=t.selectAll(".katucharts-circos-chr").data(this.chrArcs).join("path").attr("class","katucharts-circos-chr").attr("d",c).attr("fill",f=>f.color).attr("stroke",l).attr("stroke-width",.5).style("cursor","pointer");a&&h.each(function(f,u){const d={startAngle:f.startAngle,endAngle:f.startAngle},p=te(d,f);V(this).transition("enter").duration(i).delay(u*180).ease(R).attrTween("d",()=>g=>c(p(g)))}),o&&s&&h.on("mouseover",(f,u)=>{f.currentTarget.style.filter="brightness(1.1)",o.emit("point:mouseover",{point:{name:u.id,custom:{length:u.length}},index:this.chrArcs.indexOf(u),series:s,event:f,plotX:0,plotY:0})}).on("mouseout",(f,u)=>{f.currentTarget.style.filter="",o.emit("point:mouseout",{point:{name:u.id},index:this.chrArcs.indexOf(u),series:s,event:f})})}renderIdeogramBands(t,n,r,a,i){const o=[];for(const c of this.chromosomes)if(c.bands)for(const h of c.bands){const f=this.getAngleRange(h.chr||c.id,h.start,h.end);o.push({...h,_startAngle:f.startAngle,_endAngle:f.endAngle})}if(o.length===0)return;const s=ct().innerRadius(n).outerRadius(r).startAngle(c=>c._startAngle).endAngle(c=>c._endAngle),l=t.selectAll(".katucharts-circos-band").data(o).join("path").attr("class","katucharts-circos-band").attr("d",s).attr("fill",c=>Ef[c.type]||"#ddd").attr("stroke","none").attr("opacity",.6);a&&l.attr("opacity",0).transition("enter").duration(Math.round(i*.4)).delay(Math.round(i*.6)).ease(R).attr("opacity",.6)}renderChromosomeLabels(t,n,r=9,a=!1,i=600,o=0,s=kt){const l=t.selectAll(".katucharts-circos-label").data(this.chrArcs).join("text").attr("class","katucharts-circos-label").attr("text-anchor",c=>{const f=(c.startAngle+c.endAngle)/2*180/Math.PI-90;return f>90&&f<270?"end":"start"}).attr("dominant-baseline","central").attr("font-size",`${r}px`).attr("fill",s).text(c=>c.id);a?l.attr("opacity",0).attr("transform",c=>{const h=(c.startAngle+c.endAngle)/2,f=h*180/Math.PI-90,u=n-8,d=this.polarToCartesian(h,u),p=f>90&&f<270;return`translate(${d.x},${d.y}) rotate(${p?f+180:f})`}).each(function(c,h){V(this).transition("enter").duration(Math.round(i*.35)).delay(o+h*20).ease(R).attr("opacity",1).attr("transform",()=>{const f=(c.startAngle+c.endAngle)/2,u=f*180/Math.PI-90,d={x:Math.cos(f-Math.PI/2)*n,y:Math.sin(f-Math.PI/2)*n},p=u>90&&u<270;return`translate(${d.x},${d.y}) rotate(${p?u+180:u})`})}):l.attr("transform",c=>{const h=(c.startAngle+c.endAngle)/2,f=h*180/Math.PI-90,u=this.polarToCartesian(h,n),d=f>90&&f<270;return`translate(${u.x},${u.y}) rotate(${d?f+180:f})`})}}function re(e,t){if(e!=null)return typeof e=="number"?e:typeof e=="string"&&e.endsWith("%")?parseFloat(e)/100*t/2:parseFloat(e)||void 0}function Mt(e){let t=1/0,n=-1/0;for(let r=0;r<e.length;r++){const a=e[r];a<t&&(t=a),a>n&&(n=a)}return{min:t,max:n}}function ze(e){const t=st(e);if(t){const n=t.rgb();return[Math.round(n.r),Math.round(n.g),Math.round(n.b),Math.round((n.opacity??1)*255)]}return[128,128,128,255]}function Y(e,t,n,r){if(!n||n.length===0)return r;const a={...r};for(const i of n){let o=!1;try{o=i.condition(e,t)}catch{continue}if(o&&(i.style.color!==void 0&&(a.color=i.style.color),i.style.opacity!==void 0&&(a.opacity=i.style.opacity),i.style.size!==void 0&&(a.size=i.style.size),i.style.show!==void 0&&(a.show=i.style.show),i.style.symbol!==void 0&&(a.symbol=i.style.symbol),i.style.strokeWidth!==void 0&&(a.strokeWidth=i.style.strokeWidth),i.style.strokeColor!==void 0&&(a.strokeColor=i.style.strokeColor),i.flow!=="continue"))break}return a}function If(e,t,n,r,a,i){n.data.length>i.canvasThreshold?Of(e,t,n,r,a,i):Ff(e,t,n,r,a,i)}function Ff(e,t,n,r,a,i){var f;const o=n.data.map(u=>u.value??0);Mt(o);const s=e.createRadialScale(o,r,a,n.logScale),l=n.color||"#e74c3c",c=((f=n.options)==null?void 0:f.radius)??2,h=t.selectAll(".circos-scatter").data(n.data).join("circle").attr("class","circos-scatter").attr("cx",u=>e.polarToCartesian(e.getAngleForPosition(u.chr,u.start),s(u.value??0)).x).attr("cy",u=>e.polarToCartesian(e.getAngleForPosition(u.chr,u.start),s(u.value??0)).y).attr("r",(u,d)=>{const p=Y(u,d,n.rules,{color:l,opacity:n.opacity??.7,size:c,show:!0});return p.show?p.size:0}).attr("fill",(u,d)=>{const p=Y(u,d,n.rules,{color:l,opacity:n.opacity??.7,size:c,show:!0});return u.color||p.color}).attr("opacity",(u,d)=>Y(u,d,n.rules,{color:l,opacity:n.opacity??.7,size:c,show:!0}).opacity);i.animate&&h.attr("r",0).transition().duration(i.duration).delay(i.baseDelay??0).attr("r",(u,d)=>{const p=Y(u,d,n.rules,{color:l,opacity:n.opacity??.7,size:c,show:!0});return p.show?p.size:0}),i.events&&i.seriesRef&&h.on("mouseover",(u,d)=>{i.events.emit("point:mouseover",{point:{name:d.chr,x:d.start,y:d.value,custom:d},index:n.data.indexOf(d),series:i.seriesRef,event:u,plotX:0,plotY:0})}).on("mouseout",(u,d)=>{i.events.emit("point:mouseout",{point:{name:d.chr,x:d.start,y:d.value},index:n.data.indexOf(d),series:i.seriesRef,event:u})})}function Of(e,t,n,r,a,i){var p;const o=n.data.map(g=>g.value??0),s=e.createRadialScale(o,r,a,n.logScale),l=n.color||"#e74c3c",c=((p=n.options)==null?void 0:p.radius)??1.5;ze(l);const h=Math.ceil(Math.max(i.cx,i.cy)*2),f=document.createElement("canvas");f.width=h,f.height=h;const u=f.getContext("2d");if(!u)return;const d=h/2;for(let g=0;g<n.data.length;g++){const y=n.data[g],m=Y(y,g,n.rules,{color:l,opacity:.7,size:c,show:!0});if(!m.show)continue;const v=e.getAngleForPosition(y.chr,y.start)-Math.PI/2,M=s(y.value??0),x=d+Math.cos(v)*M,w=d+Math.sin(v)*M;if(y.color){const b=ze(y.color);u.fillStyle=`rgba(${b[0]},${b[1]},${b[2]},${m.opacity})`}else{const b=ze(m.color);u.fillStyle=`rgba(${b[0]},${b[1]},${b[2]},${m.opacity})`}u.beginPath(),u.arc(x,w,m.size,0,2*Math.PI),u.fill()}t.append("image").attr("class","katucharts-circos-canvas-scatter").attr("x",-d).attr("y",-d).attr("width",h).attr("height",h).attr("href",f.toDataURL())}function Nf(e,t,n,r,a,i){var h,f,u;const o=e.createRadialScale(n.data.map(d=>d.value??0),r,a,n.logScale),s=n.color||"#2ecc71",l=new Array(n.data.length);for(let d=0;d<n.data.length;d++){const p=n.data[d],g=e.polarToCartesian(e.getAngleForPosition(p.chr,p.start),o(p.value??0));l[d]=`${g.x},${g.y}`}const c=t.append("path").attr("d",`M${l.join("L")}`).attr("fill","none").attr("stroke",s).attr("stroke-width",((h=n.options)==null?void 0:h.strokeWidth)??1.5).attr("opacity",n.opacity??1);if(i.animate){const d=((u=(f=c.node())==null?void 0:f.getTotalLength)==null?void 0:u.call(f))??1e3;c.attr("stroke-dasharray",`${d} ${d}`).attr("stroke-dashoffset",d).transition().duration(i.duration).delay(i.baseDelay??0).attr("stroke-dashoffset",0)}}function Vf(e,t,n,r,a,i){n.data.length>i.canvasThreshold?Gf(e,t,n,r,a,i):zf(e,t,n,r,a,i)}function zf(e,t,n,r,a,i){const o=n.data.map(u=>u.value??0),{max:s}=Mt(o),l=s||1,c=n.color||"#3498db",h=ct().innerRadius(r).outerRadius(u=>r+(a-r)*((u.value??0)/l)).startAngle(u=>e.getAngleForPosition(u.chr,u.start)).endAngle(u=>e.getAngleForPosition(u.chr,u.end??u.start)).cornerRadius(2),f=t.selectAll(".circos-hist").data(n.data).join("path").attr("class","circos-hist").attr("d",h).attr("fill",(u,d)=>{const p=Y(u,d,n.rules,{color:c,opacity:n.opacity??.8,size:0,show:!0});return u.color||p.color}).attr("stroke",i.separatorColor??"#fff").attr("stroke-width",.3).attr("opacity",(u,d)=>{const p=Y(u,d,n.rules,{color:c,opacity:n.opacity??.8,size:0,show:!0});return p.show?p.opacity:0});i.animate&&f.attr("opacity",0).transition().duration(i.duration).delay(i.baseDelay??0).attr("opacity",(u,d)=>{const p=Y(u,d,n.rules,{color:c,opacity:n.opacity??.8,size:0,show:!0});return p.show?p.opacity:0})}function Gf(e,t,n,r,a,i){const o=n.data.map(g=>g.value??0),{max:s}=Mt(o),l=s||1,c=n.color||"#3498db",h=ze(c),f=Math.ceil(Math.max(i.cx,i.cy)*2),u=document.createElement("canvas");u.width=f,u.height=f;const d=u.getContext("2d");if(!d)return;const p=f/2;d.fillStyle=`rgba(${h[0]},${h[1]},${h[2]},0.8)`;for(let g=0;g<n.data.length;g++){const y=n.data[g],m=e.getAngleForPosition(y.chr,y.start)-Math.PI/2,v=e.getAngleForPosition(y.chr,y.end??y.start)-Math.PI/2,M=r+(a-r)*((y.value??0)/l);d.beginPath(),d.arc(p,p,M,m,v),d.arc(p,p,r,v,m,!0),d.closePath(),d.fill()}t.append("image").attr("class","katucharts-circos-canvas-hist").attr("x",-p).attr("y",-p).attr("width",f).attr("height",f).attr("href",u.toDataURL())}const Bf={YlOrRd:Fe,Blues:Vl,Greens:Gl,Reds:ql,Purples:Yl,Oranges:jl,Greys:Wl,RdBu:ha,RdYlGn:Dl,RdYlBu:Rl,Spectral:Fl,PiYG:$l,BrBG:_l,PuOr:Sl,PRGn:kl,Viridis:ef,Plasma:af,Inferno:rf,Magma:nf,Cividis:Kl,Turbo:tf,Warm:Jl,Cool:Ql,CubehelixDefault:Zl};function Bt(e){return e&&Bf[e]||Fe}function Wf(e,t,n,r,a,i){n.data.length>i.canvasThreshold?Yf(e,t,n,r,a,i):Hf(e,t,n,r,a,i)}function Hf(e,t,n,r,a,i){const o=n.data.map(d=>d.value??0),{min:s,max:l}=Mt(o),c=Bt(n.colorScale),h=Et(c).domain([s,l]),f=ct().innerRadius(r).outerRadius(a).startAngle(d=>e.getAngleForPosition(d.chr,d.start)).endAngle(d=>e.getAngleForPosition(d.chr,d.end??d.start)).cornerRadius(2),u=t.selectAll(".circos-heat").data(n.data).join("path").attr("class","circos-heat").attr("d",f).attr("fill",d=>d.color||h(d.value??0)).attr("stroke","none");i.animate&&u.attr("opacity",0).transition().duration(i.duration).delay(i.baseDelay??0).attr("opacity",1)}function Yf(e,t,n,r,a,i){const o=n.data.map(y=>y.value??0),{min:s,max:l}=Mt(o),c=Bt(n.colorScale),h=Et(c).domain([s,l]),f=Math.ceil(Math.max(i.cx,i.cy)*2),u=document.createElement("canvas");u.width=f,u.height=f;const d=u.getContext("2d");if(!d)return;const p=f/2;for(let y=0;y<n.data.length;y++){const m=n.data[y],v=e.getAngleForPosition(m.chr,m.start)-Math.PI/2,M=e.getAngleForPosition(m.chr,m.end??m.start)-Math.PI/2;d.fillStyle=m.color||h(m.value??0),d.beginPath(),d.arc(p,p,a,v,M),d.arc(p,p,r,M,v,!0),d.closePath(),d.fill()}const g=t.append("image").attr("class","katucharts-circos-canvas-heat").attr("x",-p).attr("y",-p).attr("width",f).attr("height",f).attr("href",u.toDataURL());i.animate&&g.attr("opacity",0).transition().duration(i.duration).delay(i.baseDelay??0).attr("opacity",1)}function Xf(e,t,n,r,a){const i=n.color||"#999999",o=n.opacity??.5,s=n.data.filter(c=>c.sourceChr&&c.targetChr);if(s.length>500){qf(e,t,s,r,i,o,a);return}const l=t.selectAll(".circos-link").data(s).join("path").attr("class","circos-link").attr("d",c=>ma(e,c,r)).attr("fill","none").attr("stroke",(c,h)=>{const f=Y(c,h,n.rules,{color:i,opacity:o,size:1.5,show:!0});return c.color||f.color}).attr("stroke-width",(c,h)=>{const f=Y(c,h,n.rules,{color:i,opacity:o,size:1.5,show:!0});return f.show?f.strokeWidth??f.size:0}).attr("opacity",o);a.animate&&l.each(function(){var f;const c=this,h=((f=c.getTotalLength)==null?void 0:f.call(c))||0;h!==0&&V(this).attr("stroke-dasharray",`${h} ${h}`).attr("stroke-dashoffset",h).transition().duration(a.duration).delay(a.baseDelay??0).attr("stroke-dashoffset",0).on("end",function(){V(this).attr("stroke-dasharray",null).attr("stroke-dashoffset",null)})})}function qf(e,t,n,r,a,i,o){var l;const s=new Map;for(const c of n){const h=c.color||a;s.has(h)||s.set(h,[]),s.get(h).push(ma(e,c,r))}for(const[c,h]of s){const f=t.append("path").attr("class","circos-link-batch").attr("d",h.join("")).attr("fill","none").attr("stroke",c).attr("stroke-width",1).attr("opacity",i);if(o.animate){const u=f.node(),d=((l=u==null?void 0:u.getTotalLength)==null?void 0:l.call(u))||0;d>0&&f.attr("stroke-dasharray",`${d} ${d}`).attr("stroke-dashoffset",d).transition().duration(o.duration).delay(o.baseDelay??0).attr("stroke-dashoffset",0).on("end",function(){V(this).attr("stroke-dasharray",null).attr("stroke-dashoffset",null)})}}}function ma(e,t,n){const r=e.getAngleForPosition(t.sourceChr,t.sourceStart??0),a=e.getAngleForPosition(t.targetChr,t.targetStart??0),i=n*.95,o=e.polarToCartesian(r,i),s=e.polarToCartesian(a,i);return`M${o.x},${o.y}Q0,0,${s.x},${s.y}`}function Uf(e,t,n,r,a,i){const o=n.color||"rgba(255,200,0,0.3)",s=ct().innerRadius(r).outerRadius(a).startAngle(c=>e.getAngleForPosition(c.chr,c.start)).endAngle(c=>e.getAngleForPosition(c.chr,c.end??c.start)).cornerRadius(2),l=t.selectAll(".circos-highlight").data(n.data).join("path").attr("class","circos-highlight").attr("d",s).attr("fill",c=>c.color||o).attr("stroke","none");i.animate&&l.attr("opacity",0).transition().duration(i.duration).delay(i.baseDelay??0).attr("opacity",1)}const ya=["#4e79a7","#f28e2b","#e15759","#76b7b2","#59a14f","#edc948","#b07aa1","#ff9da7","#9c755f","#bab0ac"];function jf(e,t,n,r,a,i){const o=new Map;for(const p of n.data){const g=`${p.chr}:${p.start}:${p.end??p.start}`;o.has(g)||o.set(g,[]),o.get(g).push(p)}const s=[...new Set(n.data.map(p=>p.category||"default"))],l=new Map;s.forEach((p,g)=>l.set(p,ya[g%ya.length]));let c=0;for(const p of o.values()){const g=p.reduce((y,m)=>y+(m.value??1),0);g>c&&(c=g)}const h=c||1,f=[];for(const[,p]of o){const g=p[0],y=e.getAngleForPosition(g.chr,g.start),m=e.getAngleForPosition(g.chr,g.end??g.start);let v=0;for(const M of p){const x=M.value??1,w=r+(a-r)*(v/h),b=r+(a-r)*((v+x)/h);f.push({startAngle:y,endAngle:m,innerR:w,outerR:b,color:M.color||l.get(M.category||"default")||n.color||"#4e79a7",point:M}),v+=x}}const u=ct().innerRadius(p=>p.innerR).outerRadius(p=>p.outerR).startAngle(p=>p.startAngle).endAngle(p=>p.endAngle).cornerRadius(2),d=t.selectAll(".circos-stack").data(f).join("path").attr("class","circos-stack").attr("d",u).attr("fill",p=>p.color).attr("stroke",i.separatorColor??"#fff").attr("stroke-width",.3).attr("opacity",n.opacity??.85);i.animate&&d.attr("opacity",0).transition().duration(i.duration).delay(i.baseDelay??0).attr("opacity",n.opacity??.85)}function Kf(e,t,n,r,a,i){var y,m,v,M,x;const o=((y=n.options)==null?void 0:y.fontSize)??8,s=((m=n.options)==null?void 0:m.fontFamily)??"sans-serif",l=((v=n.options)==null?void 0:v.showLeaderLines)!==!1,c=((M=n.options)==null?void 0:M.maxLabels)??200,h=((x=n.options)==null?void 0:x.snuggleDistance)??12,f=n.color||"#333",u=n.data.filter(w=>w.label).slice(0,c).map(w=>({text:w.label,angle:e.getAngleForPosition(w.chr,w.start),baseRadius:(r+a)/2,point:w})).sort((w,b)=>w.angle-b.angle),d=[],p=o*1.2/((r+a)/2);for(const w of u){let b=w.baseRadius,_=!0;for(;_&&b<a+h*5;){_=!1;for(const S of d){const $=Math.abs(w.angle-S.angle),T=Math.abs(b-S.placedRadius);if($<p&&T<h){_=!0,b+=h;break}}}const A=e.polarToCartesian(w.angle,b);d.push({text:w.text,angle:w.angle,baseRadius:w.baseRadius,placedRadius:b,x:A.x,y:A.y,point:w.point})}if(l){const w=d.filter(b=>Math.abs(b.placedRadius-b.baseRadius)>2);t.selectAll(".circos-text-leader").data(w).join("line").attr("class","circos-text-leader").attr("x1",b=>e.polarToCartesian(b.angle,b.baseRadius).x).attr("y1",b=>e.polarToCartesian(b.angle,b.baseRadius).y).attr("x2",b=>b.x).attr("y2",b=>b.y).attr("stroke","#aaa").attr("stroke-width",.5).attr("opacity",.6)}const g=t.selectAll(".circos-text").data(d).join("text").attr("class","circos-text").attr("transform",w=>{const b=w.angle*180/Math.PI-90,_=b>90&&b<270;return`translate(${w.x},${w.y}) rotate(${_?b+180:b})`}).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",`${o}px`).attr("font-family",s).attr("fill",w=>w.point.color||f).text(w=>w.text);i.animate&&g.attr("opacity",0).transition().duration(i.duration).delay(i.baseDelay??0).attr("opacity",1)}const xa=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"];function Zf(e,t,n,r,a,i){var m,v,M;const o=((m=n.options)==null?void 0:m.maxLayers)??5,s=((v=n.options)==null?void 0:v.margin)??1,l=((M=n.options)==null?void 0:M.orientation)??"out",c=n.color||"#1f77b4",h=[...n.data].sort((x,w)=>x.chr!==w.chr?x.chr.localeCompare(w.chr):x.start-w.start),f=Array.from({length:o},()=>[]),u=[];for(const x of h){let w=!1;for(let b=0;b<o;b++){const _=f[b],A=[..._].reverse().find(S=>S.chr===x.chr);if(!A||A.end<=x.start){_.push({chr:x.chr,end:x.end??x.start}),u.push({point:x,layer:b}),w=!0;break}}w||u.push({point:x,layer:o-1})}const d=(a-r-s*(o-1))/o,p=u.map(({point:x,layer:w})=>{let b,_;return l==="in"?(_=a-w*(d+s),b=_-d):(b=r+w*(d+s),_=b+d),{startAngle:e.getAngleForPosition(x.chr,x.start),endAngle:e.getAngleForPosition(x.chr,x.end??x.start),innerR:b,outerR:_,point:x,layer:w}}),g=ct().innerRadius(x=>x.innerR).outerRadius(x=>x.outerR).startAngle(x=>x.startAngle).endAngle(x=>x.endAngle).cornerRadius(2),y=t.selectAll(".circos-tile").data(p).join("path").attr("class","circos-tile").attr("d",g).attr("fill",(x,w)=>{const b=Y(x.point,w,n.rules,{color:c,opacity:n.opacity??.75,size:0,show:!0});return x.point.color||b.color||xa[x.layer%xa.length]}).attr("stroke",i.separatorColor??"#fff").attr("stroke-width",.3).attr("opacity",(x,w)=>{const b=Y(x.point,w,n.rules,{color:c,opacity:n.opacity??.75,size:0,show:!0});return b.show?b.opacity:0});i.animate&&y.attr("opacity",0).transition().duration(i.duration).delay(i.baseDelay??0).attr("opacity",n.opacity??.75)}function Jf(e,t,n,r,a){var h;const i=n.color||"#8888cc",o=n.opacity??.4,s=((h=n.options)==null?void 0:h.curveFactor)??.6,l=n.data.filter(f=>f.sourceChr&&f.targetChr),c=t.selectAll(".circos-ribbon").data(l).join("path").attr("class","circos-ribbon").attr("d",f=>Qf(e,f,r,s)).attr("fill",(f,u)=>{const d=Y(f,u,n.rules,{color:i,opacity:o,size:0,show:!0});return f.color||d.color}).attr("stroke",(f,u)=>Y(f,u,n.rules,{color:i,opacity:o,size:0,show:!0}).strokeColor||"none").attr("stroke-width",.5).attr("opacity",o);a.animate&&c.attr("opacity",o).each(function(f){V(this).attr("d",ba(e,f,r,s,0)).transition().duration(a.duration).delay(a.baseDelay??0).ease(R).attrTween("d",()=>u=>ba(e,f,r,s,u))}),a.events&&a.seriesRef&&c.on("mouseover",(f,u)=>{f.currentTarget.setAttribute("opacity",String(Math.min(o+.3,1))),a.events.emit("point:mouseover",{point:{name:`${u.sourceChr}→${u.targetChr}`,custom:u},index:l.indexOf(u),series:a.seriesRef,event:f,plotX:0,plotY:0})}).on("mouseout",(f,u)=>{f.currentTarget.setAttribute("opacity",String(o)),a.events.emit("point:mouseout",{point:{name:`${u.sourceChr}→${u.targetChr}`},index:l.indexOf(u),series:a.seriesRef,event:f})})}function Qf(e,t,n,r){const a=n*.95,i=1-r,o=e.getAngleForPosition(t.sourceChr,t.sourceStart??0)-Math.PI/2,s=e.getAngleForPosition(t.sourceChr,t.sourceEnd??t.sourceStart??0)-Math.PI/2,l=e.getAngleForPosition(t.targetChr,t.targetStart??0)-Math.PI/2,c=e.getAngleForPosition(t.targetChr,t.targetEnd??t.targetStart??0)-Math.PI/2,h=a*Math.cos(o),f=a*Math.sin(o),u=a*Math.cos(s),d=a*Math.sin(s),p=a*Math.cos(l),g=a*Math.sin(l),y=a*Math.cos(c),m=a*Math.sin(c),v=Math.abs(s-o)>Math.PI?1:0,M=Math.abs(c-l)>Math.PI?1:0;return`M${h},${f}A${a},${a},0,${v},1,${u},${d}C${i*u},${i*d},${i*p},${i*g},${p},${g}A${a},${a},0,${M},1,${y},${m}C${i*y},${i*m},${i*h},${i*f},${h},${f}Z`}function ba(e,t,n,r,a){const i=n*.95,o=1-r,s=e.getAngleForPosition(t.sourceChr,t.sourceStart??0)-Math.PI/2,l=e.getAngleForPosition(t.sourceChr,t.sourceEnd??t.sourceStart??0)-Math.PI/2,c=e.getAngleForPosition(t.targetChr,t.targetStart??0)-Math.PI/2,h=e.getAngleForPosition(t.targetChr,t.targetEnd??t.targetStart??0)-Math.PI/2,f=(s+l)/2,u=f+a*(c-f),d=f+a*(h-f),p=i*Math.cos(s),g=i*Math.sin(s),y=i*Math.cos(l),m=i*Math.sin(l),v=i*Math.cos(u),M=i*Math.sin(u),x=i*Math.cos(d),w=i*Math.sin(d),b=Math.abs(l-s)>Math.PI?1:0,_=Math.abs(d-u)>Math.PI?1:0;return`M${p},${g}A${i},${i},0,${b},1,${y},${m}C${o*y},${o*m},${o*v},${o*M},${v},${M}A${i},${i},0,${_},1,${x},${w}C${o*x},${o*w},${o*p},${o*g},${p},${g}Z`}function th(e,t,n,r,a,i){var p,g,y,m;const o=n.color||"#666",s=((p=n.options)==null?void 0:p.connectorType)??"bezier",l=((g=n.options)==null?void 0:g.strokeWidth)??1,c=((y=n.options)==null?void 0:y.dashArray)??"",h=((m=n.options)==null?void 0:m.showArrows)??!1,f=(r+a)/2,u=n.data.filter(v=>v.sourceChr&&v.targetChr);h&&t.append("defs").append("marker").attr("id","circos-conn-arrow").attr("viewBox","0 0 10 10").attr("refX",8).attr("refY",5).attr("markerWidth",5).attr("markerHeight",5).attr("orient","auto").append("path").attr("d","M0,0L10,5L0,10Z").attr("fill",o);const d=t.selectAll(".circos-connector").data(u).join("path").attr("class","circos-connector").attr("d",v=>eh(e,v,f,s)).attr("fill","none").attr("stroke",v=>v.color||o).attr("stroke-width",l).attr("stroke-dasharray",c).attr("opacity",n.opacity??.7);h&&d.attr("marker-end","url(#circos-conn-arrow)"),i.animate&&d.attr("opacity",0).transition().duration(i.duration).delay(i.baseDelay??0).attr("opacity",n.opacity??.7)}function eh(e,t,n,r){const a=e.getAngleForPosition(t.sourceChr,t.sourceStart??0),i=e.getAngleForPosition(t.targetChr,t.targetStart??0),o=e.polarToCartesian(a,n),s=e.polarToCartesian(i,n);switch(r){case"straight":return`M${o.x},${o.y}L${s.x},${s.y}`;case"elbow":{const l=(a+i)/2,c=e.polarToCartesian(l,n*.7);return`M${o.x},${o.y}L${c.x},${c.y}L${s.x},${s.y}`}case"bezier":default:return`M${o.x},${o.y}Q0,0,${s.x},${s.y}`}}function nh(e,t,n,r,a,i){var m,v,M,x,w,b;const o=e.createRadialScale(n.data.map(_=>_.value??0),r,a,n.logScale),s=n.color||"#27ae60",l=((m=n.options)==null?void 0:m.fillColor)||s,c=((v=n.options)==null?void 0:v.fillOpacity)??.3,h=((M=n.options)==null?void 0:M.strokeWidth)??1.5,f=((x=n.options)==null?void 0:x.baseline)==="outer"?a:r,u=[],d=[];for(let _=0;_<n.data.length;_++){const A=n.data[_],S=e.getAngleForPosition(A.chr,A.start),$=o(A.value??0),T=e.polarToCartesian(S,$),k=e.polarToCartesian(S,f);u.push(`${T.x},${T.y}`),d.push(`${k.x},${k.y}`)}const p=`M${u.join("L")}L${d.reverse().join("L")}Z`,g=t.append("path").attr("class","circos-area-fill").attr("d",p).attr("fill",l).attr("opacity",c).attr("stroke","none"),y=t.append("path").attr("class","circos-area-line").attr("d",`M${u.join("L")}`).attr("fill","none").attr("stroke",s).attr("stroke-width",h).attr("opacity",n.opacity??1);if(i.animate){const _=i.baseDelay??0;g.attr("opacity",0).transition().duration(i.duration).delay(_).attr("opacity",c);const A=((b=(w=y.node())==null?void 0:w.getTotalLength)==null?void 0:b.call(w))??1e3;y.attr("stroke-dasharray",`${A} ${A}`).attr("stroke-dashoffset",A).transition().duration(i.duration).delay(_).attr("stroke-dashoffset",0)}}const rh={circle:At,"triangle-up":le,"triangle-down":le,diamond:Xe,square:qe,cross:Ln,star:Ha};function ah(e,t,n,r,a,i){var f,u;const o=e.createRadialScale(n.data.map(d=>d.value??0),r,a,n.logScale),s=n.color||"#e74c3c",l=((f=n.options)==null?void 0:f.symbol)??"circle",c=((u=n.options)==null?void 0:u.size)??30,h=t.selectAll(".circos-glyph").data(n.data).join("path").attr("class","circos-glyph").attr("transform",d=>{const p=e.getAngleForPosition(d.chr,d.start),g=o(d.value??0),y=e.polarToCartesian(p,g),m=p*180/Math.PI-90,M=(d.symbol||l)==="triangle-down"?180:0;return`translate(${y.x},${y.y}) rotate(${m+M})`}).attr("d",(d,p)=>{const g=Y(d,p,n.rules,{color:s,opacity:n.opacity??.8,size:c,show:!0}),y=g.symbol||d.symbol||l,m=rh[y]||At;return xt().type(m).size(g.show?g.size:0)()}).attr("fill",(d,p)=>{const g=Y(d,p,n.rules,{color:s,opacity:n.opacity??.8,size:c,show:!0});return d.color||g.color}).attr("opacity",(d,p)=>Y(d,p,n.rules,{color:s,opacity:n.opacity??.8,size:c,show:!0}).opacity);i.animate&&h.attr("opacity",0).transition().duration(i.duration).delay(i.baseDelay??0).attr("opacity",n.opacity??.8)}function ih(e,t,n,r,a,i){var f,u,d;const o=e.createRadialScale(n.data.map(p=>p.value??0),r,a,n.logScale),s=n.color||"#e74c3c",l=((f=n.options)==null?void 0:f.dotRadius)??3,c=((u=n.options)==null?void 0:u.stemWidth)??1,h=((d=n.options)==null?void 0:d.stemColor)||"#999";for(let p=0;p<n.data.length;p++){const g=n.data[p],y=Y(g,p,n.rules,{color:s,opacity:n.opacity??.85,size:l,show:!0});if(!y.show)continue;const m=e.getAngleForPosition(g.chr,g.start),v=o(g.value??0),M=e.polarToCartesian(m,r),x=e.polarToCartesian(m,v);t.append("line").attr("class","circos-lollipop-stem").attr("x1",M.x).attr("y1",M.y).attr("x2",x.x).attr("y2",x.y).attr("stroke",h).attr("stroke-width",c).attr("opacity",y.opacity*.7);const w=t.append("circle").attr("class","circos-lollipop-dot").attr("cx",x.x).attr("cy",x.y).attr("r",y.size).attr("fill",g.color||y.color).attr("stroke",i.separatorColor??"#fff").attr("stroke-width",.5).attr("opacity",y.opacity);i.events&&i.seriesRef&&w.style("cursor","pointer").on("mouseover",b=>{b.currentTarget.setAttribute("r",String(y.size*1.5)),i.events.emit("point:mouseover",{point:{name:g.label||g.chr,x:g.start,y:g.value,custom:g},index:p,series:i.seriesRef,event:b,plotX:0,plotY:0})}).on("mouseout",b=>{b.currentTarget.setAttribute("r",String(y.size)),i.events.emit("point:mouseout",{point:{name:g.label||g.chr,x:g.start,y:g.value},index:p,series:i.seriesRef,event:b})})}if(i.animate){const p=i.baseDelay??0;t.selectAll(".circos-lollipop-stem").attr("opacity",0).transition().duration(i.duration).delay(p).attr("opacity",(n.opacity??.85)*.7),t.selectAll(".circos-lollipop-dot").attr("r",0).transition().duration(Math.round(i.duration*.7)).delay(p+Math.round(i.duration*.3)).attr("r",l)}}function oh(e,t,n,r,a=kt){if(!t.show)return;const i=t.count??3,o=t.color||"#ddd",s=t.opacity??.5,l=t.strokeWidth??.5,c=(r-n)/(i+1);for(let h=1;h<=i;h++){const f=n+c*h;if(e.append("circle").attr("class","circos-track-axis").attr("cx",0).attr("cy",0).attr("r",f).attr("fill","none").attr("stroke",o).attr("stroke-width",l).attr("stroke-dasharray","2,2").attr("opacity",s),t.showValues){const u=t.valueFormat?t.valueFormat.replace("{value}",String(Math.round(h/(i+1)*100))):String(Math.round(h/(i+1)*100));e.append("text").attr("class","circos-track-axis-label").attr("x",0).attr("y",-f).attr("text-anchor","middle").attr("font-size",X).attr("fill",a).text(u)}}}function sh(e,t,n,r){var s,l;const a=t.color||"#f9f9f9",i=t.opacity??.3,o=ct().innerRadius(n).outerRadius(r).startAngle(0).endAngle(2*Math.PI);e.append("path").attr("class","circos-track-bg").attr("d",o({})).attr("fill",a).attr("opacity",i).attr("stroke",((s=t.border)==null?void 0:s.color)||"none").attr("stroke-width",((l=t.border)==null?void 0:l.width)??0)}class va extends rt{constructor(t){super(t)}render(){const{plotArea:t}=this.context,n=this.context.animate,r=this.getCircosData();if(!r)return;const{chromosomes:a,tracks:i}=r,o=this.config.showChromosomeLabels!==!1,s=this.config.showBands!==!1,l=Math.min(t.width,t.height),c=l<350?7:9,h=new ga(a,t.width,t.height,{gap:this.config.gap??2,outerRadius:this.config.outerRadius,innerRadius:this.config.innerRadius,trackGap:this.config.trackGap??2,showLabels:o,labelFontSize:c,showBands:s}),f=Wr,u=Math.round(f*.38),d=Math.round(u*.55),p=Math.round(f*.38),g=u+xn,y=this.group.append("g").attr("class","katucharts-circos").attr("transform",`translate(${h.cx},${h.cy})`);h.renderIdeogram(y,h.innerR,h.outerR,!!n,u,this.context.events,this,this.autoBorderColor()),s&&h.renderIdeogramBands(y,h.innerR,h.outerR,!!n,u);const m=this.autoLabelColor();if(o){const $=Math.max(6,Math.min(12,l*.02));h.renderChromosomeLabels(y,h.outerR+$,c,!!n,u,d,m)}const v=this.config.trackGap??2,M=h.innerR-v,x=i.length,w=x>0?M*.6/x:0,b=$=>$.type==="ribbon"||$.type==="link";let _=0,A=x;const S=i.filter($=>!b($)).length;for(let $=0;$<x;$++){const T=i[$],k=M-$*(w+v),C=k-w,P=T.outerRadius?k*T.outerRadius:k,L=T.innerRadius?k*T.innerRadius:C,F=y.append("g").attr("class",`katucharts-circos-track katucharts-circos-track-${T.type}`);T.background&&sh(F,T.background,L,P),T.axes&&oh(F,T.axes,L,P,m);const E=b(T)?S+A++-x:_++,I=g+E*xn,G={animate:!!n,duration:p,baseDelay:I,cx:h.cx,cy:h.cy,canvasThreshold:this.config.canvasThreshold??Df,events:this.context.events,seriesRef:this,separatorColor:this.autoBorderColor()};this.renderTrack(h,F,T,L,P,G)}if(n){const $=x>0?x-1:0,T=g+$*xn+p;this.emitAfterAnimate(T+100)}}renderTrack(t,n,r,a,i,o){switch(r.type){case"scatter":If(t,n,r,a,i,o);break;case"line":Nf(t,n,r,a,i,o);break;case"histogram":Vf(t,n,r,a,i,o);break;case"heatmap":Wf(t,n,r,a,i,o);break;case"link":Xf(t,n,r,a,o);break;case"highlight":Uf(t,n,r,a,i,o);break;case"stack":jf(t,n,r,a,i,o);break;case"text":Kf(t,n,r,a,i,o);break;case"tile":Zf(t,n,r,a,i,o);break;case"ribbon":Jf(t,n,r,a,o);break;case"connector":th(t,n,r,a,i,o);break;case"area":nh(t,n,r,a,i,o);break;case"glyph":ah(t,n,r,a,i,o);break;case"lollipop":ih(t,n,r,a,i,o);break}}getCircosData(){var t;if(this.data.length>0){const n=this.data[0];if((t=n.custom)!=null&&t.chromosomes)return{chromosomes:n.custom.chromosomes,tracks:n.custom.tracks||[]}}return this.config.chromosomes?{chromosomes:this.config.chromosomes,tracks:this.config.tracks||[]}:null}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class wa extends rt{constructor(t){super(t)}render(){var G,O,ot,Q;const{plotArea:t}=this.context,n=this.context.animate,r=this.config,a=r.center||["50%","50%"],i=this.resolvePercent(a[0],t.width),o=this.resolvePercent(a[1],t.height),s=r.size,l=s?this.resolvePercent(s,Math.min(t.width,t.height)):Math.min(t.width,t.height),c=Math.max(15,l*.05),h=l/2-c,f=r.columns||((O=(G=this.data[0])==null?void 0:G.custom)==null?void 0:O.columns)||[],u=r.rows||((Q=(ot=this.data[0])==null?void 0:ot.custom)==null?void 0:Q.rows)||[];if(f.length===0||u.length===0)return;const d=f.length,p=u.length,y=(r.rowGap??2)*Math.PI/180,m=r.innerRadius??.3,v=h*m,M=Math.max(10,Math.min(18,l*.03)),x=h-M,w=v,b=r.colorScale,_=Bt(b),A=u.flatMap(Z=>Z.values),S=r.min??Math.min(...A),$=r.max??Math.max(...A),T=Ie().domain([S,$]).range([0,1]).clamp(!0),k=y*p,P=(2*Math.PI-k)/p,L=(x-w)/d,E=(typeof this.config.animation=="object"?this.config.animation:{}).duration??K,I=this.group.append("g").attr("transform",`translate(${i},${o})`);for(let Z=0;Z<p;Z++){const mt=u[Z],tt=Z*(P+y),Dt=tt+P,ae=I.append("g").attr("class",`katucharts-circos-hm-row katucharts-circos-hm-row-${Z}`);for(let ut=0;ut<d;ut++){const Ht=ut<mt.values.length?mt.values[ut]:0,ie=w+ut*L,Ge=ie+L-.5,dh=T(Ht),ph=_(dh),gh=ct().innerRadius(ie).outerRadius(Ge).startAngle(tt).endAngle(Dt).cornerRadius(2),Pa=ae.append("path").attr("class","katucharts-circos-hm-cell").attr("d",gh({})).attr("fill",ph).attr("stroke",r.cellBorderColor??"none").attr("stroke-width",r.cellBorderWidth??0).style("cursor","pointer");if(n){const mh=Z*B;Pa.attr("opacity",0).transition().duration(E).ease(R).delay(mh).attr("opacity",1)}this.config.enableMouseTracking!==!1&&this.attachCellEvents(Pa,mt,Z,ut,f[ut],Ht,i,o)}}this.renderRowLabels(I,u,P,y,x+12),this.renderColumnLabels(I,f,w,L),n&&this.emitAfterAnimate(E+100)}renderRowLabels(t,n,r,a,i){for(let o=0;o<n.length;o++){const s=o*(r+a)+r/2,l=s*180/Math.PI-90,c=l>90&&l<270,h=s-Math.PI/2,f=i*Math.cos(h),u=i*Math.sin(h);t.append("text").attr("class","katucharts-circos-hm-row-label").attr("transform",`translate(${f},${u}) rotate(${c?l+180:l})`).attr("text-anchor",c?"end":"start").attr("dominant-baseline","central").attr("font-size",X).attr("fill",this.autoLabelColor()).style("pointer-events","none").text(n[o].id)}}renderColumnLabels(t,n,r,a){const i=-Math.PI/2;for(let o=0;o<n.length;o++){const s=r+o*a+a/2,l=s*Math.cos(i)+4,c=s*Math.sin(i);t.append("text").attr("class","katucharts-circos-hm-col-label").attr("x",l).attr("y",c).attr("text-anchor","start").attr("dominant-baseline","central").attr("font-size",Math.min(parseFloat(X),a*.7)+"px").attr("fill",this.autoLabelColor()).style("pointer-events","none").text(n[o])}}attachCellEvents(t,n,r,a,i,o,s,l){t.on("mouseover",c=>{const h=V(c.currentTarget);h.interrupt("hover").transition("hover").duration(z).ease(N).attr("opacity",.8),h.style("filter","drop-shadow(0 0 3px rgba(0,0,0,0.3))"),this.context.events.emit("point:mouseover",{point:{name:i,row:n.id,y:o,rowIndex:r,colIndex:a},index:r*a,series:this,event:c,plotX:s,plotY:l})}).on("mouseout",c=>{const h=V(c.currentTarget);h.interrupt("hover").transition("hover").duration(z).ease(N).attr("opacity",1),h.style("filter",""),this.context.events.emit("point:mouseout",{point:{name:i,row:n.id,y:o,rowIndex:r,colIndex:a},index:r*a,series:this,event:c})}).on("click",c=>{var h,f;this.context.events.emit("point:click",{point:{name:i,row:n.id,y:o,rowIndex:r,colIndex:a},index:r*a,series:this,event:c}),(f=(h=this.config.events)==null?void 0:h.click)==null||f.call(this,c)})}resolvePercent(t,n){return typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*n:typeof t=="number"?t:parseFloat(t)||n/2}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class Ma extends rt{constructor(t){super(t)}render(){const{plotArea:t}=this.context,n=!!this.context.animate,r=this.getComparativeData();if(!r)return;const{species:a,synteny:i}=r,o=r.speciesGap??8,s=r.chrGap??2,l=r.curveFactor??.6,c=r.ribbonColorMode??"source",h=r.showConservationTrack??!1,f=new Map;for(const k of a)f.set(k.name,k.color);const u=this.buildChromosomeList(a,o,s),d=this.buildPrefixedBlocks(i,f),p=Math.min(t.width,t.height),g=p<400?.6:p<500?.72:.82,y=re(this.config.outerRadius,p)??p/2*g,m=re(this.config.innerRadius,p)??y*.7,v=new ga(u,t.width,t.height,{gap:s,outerRadius:y,innerRadius:m}),M=Wr,x=Math.round(M*.35),w=Math.round(x*.5),b=x+200,_=x+400,A=Math.round(M*.4),S=this.group.append("g").attr("class","katucharts-circos-comparative").attr("transform",`translate(${v.cx},${v.cy})`);v.renderIdeogram(S,v.innerR,v.outerR,n,x,this.context.events,this,this.autoBorderColor());const $=Math.max(6,p*.02);this.renderSpeciesLabelArcs(S,v,a,u,v.outerR+$*2,p,w,A),h&&i.length>0&&this.renderConservationTrack(S,v,d,v.innerR*.9,v.innerR*.96,r.colorScale,n,A,b);const T=h?v.innerR*.88:v.innerR*.95;if(this.renderSyntenyRibbons(S,v,d,T,l,c,r.colorScale,n,A,_),this.renderCleanLabels(S,v,u,v.outerR+$,n,x,w),n){const k=_+A;this.emitAfterAnimate(k+100)}}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}getComparativeData(){var t;if(this.data.length>0){const n=this.data[0];if((t=n.custom)!=null&&t.species)return{species:n.custom.species,synteny:n.custom.synteny||[],colorScale:n.custom.colorScale,showConservationTrack:n.custom.showConservationTrack,ribbonColorMode:n.custom.ribbonColorMode,curveFactor:n.custom.curveFactor,speciesGap:n.custom.speciesGap,chrGap:n.custom.chrGap}}return this.config.species?{species:this.config.species,synteny:this.config.synteny||[],colorScale:this.config.colorScale,showConservationTrack:this.config.showConservationTrack,ribbonColorMode:this.config.ribbonColorMode,curveFactor:this.config.curveFactor,speciesGap:this.config.speciesGap,chrGap:this.config.chrGap}:null}buildChromosomeList(t,n,r){const a=[];for(let i=0;i<t.length;i++){const o=t[i];st(o.color);for(let s=0;s<o.chromosomes.length;s++){const l=o.chromosomes[s],c=`${o.name}_${l.id}`,h=o.chromosomes.length>1?s/(o.chromosomes.length-1)*.4-.2:0,f=this.adjustColorBrightness(o.color,h),u=s===o.chromosomes.length-1,d=i===t.length-1,p=u&&!d?n:r;a.push({id:c,length:l.length,color:f,gap:p})}}return a}buildPrefixedBlocks(t,n){return t.map(r=>({sourceChrPrefixed:`${r.source.species}_${r.source.chr}`,targetChrPrefixed:`${r.target.species}_${r.target.chr}`,sourceStart:r.source.start,sourceEnd:r.source.end,targetStart:r.target.start,targetEnd:r.target.end,score:r.score??1,color:r.color,sourceSpeciesColor:n.get(r.source.species)||"#888"}))}renderCleanLabels(t,n,r,a,i=!1,o=400,s=0){const l=t.selectAll(".katucharts-comp-label").data(n.chrArcs).join("text").attr("class","katucharts-comp-label").attr("transform",c=>{const h=(c.startAngle+c.endAngle)/2,f=h*180/Math.PI-90,u=n.polarToCartesian(h,a),d=f>90&&f<270;return`translate(${u.x},${u.y}) rotate(${d?f+180:f})`}).attr("text-anchor",c=>{const f=(c.startAngle+c.endAngle)/2*180/Math.PI-90;return f>90&&f<270?"end":"start"}).attr("dominant-baseline","central").attr("font-size",X).attr("fill",this.autoLabelColor()).text(c=>{const h=c.id.indexOf("_");return h>=0?c.id.slice(h+1):c.id});i&&l.attr("opacity",0).transition("enter").duration(Math.round(o*.4)).delay(s).ease(R).attr("opacity",1)}renderSpeciesLabelArcs(t,n,r,a,i,o,s=0,l=400){const c=o||600,h=!!this.context.animate;let f=0;const u=[];for(const m of r){const v=n.chrArcs[f],M=n.chrArcs[f+m.chromosomes.length-1];v&&M&&u.push({name:m.name,color:m.color,startAngle:v.startAngle,endAngle:M.endAngle}),f+=m.chromosomes.length}const d=3,p=ct().innerRadius(i).outerRadius(i+d).startAngle(m=>m.startAngle).endAngle(m=>m.endAngle),g=t.selectAll(".katucharts-species-arc").data(u).join("path").attr("class","katucharts-species-arc").attr("d",p).attr("fill",m=>m.color).attr("opacity",.7),y=t.selectAll(".katucharts-species-label").data(u).join("text").attr("class","katucharts-species-label").attr("transform",m=>{const v=(m.startAngle+m.endAngle)/2,M=v*180/Math.PI-90,x=Math.max(5,c*.015),w=n.polarToCartesian(v,i+d+x),b=M>90&&M<270;return`translate(${w.x},${w.y}) rotate(${b?M+180:M})`}).attr("text-anchor",m=>{const M=(m.startAngle+m.endAngle)/2*180/Math.PI-90;return M>90&&M<270?"end":"start"}).attr("dominant-baseline","central").attr("font-size",c<400?"9px":"11px").attr("font-weight","bold").attr("fill",m=>m.color).text(m=>m.name);h&&(g.attr("opacity",0).transition("enter").duration(l).delay(s).ease(R).attr("opacity",.7),y.attr("opacity",0).transition("enter").duration(l).delay(s).ease(R).attr("opacity",1))}renderSyntenyRibbons(t,n,r,a,i,o,s,l,c,h){const f=c??400,u=h??0,d=this.config.ribbonOpacity??.4;let p=null;if(o==="score"&&r.length>0){const y=r.map(x=>x.score),{min:m,max:v}=Mt(y),M=Bt(s||"Viridis");p=Et(M).domain([m,v])}const g=t.selectAll(".katucharts-synteny-ribbon").data(r).join("path").attr("class","katucharts-synteny-ribbon").attr("d",y=>this.buildRibbonPath(n,y,a,i)).attr("fill",y=>y.color?y.color:o==="score"&&p?p(y.score):y.sourceSpeciesColor).attr("stroke","none").attr("opacity",d).style("cursor","pointer");l&&g.attr("opacity",0).each(function(y,m){V(this).transition("enter").duration(f).delay(u+m*8).ease(R).attr("opacity",d)}),this.context.events&&g.on("mouseover",(y,m)=>{V(y.currentTarget).interrupt("hover").transition("hover").duration(z).ease(N).attr("opacity",Math.min(d+.3,1)),this.context.events.emit("point:mouseover",{point:{name:`${m.sourceChrPrefixed}→${m.targetChrPrefixed}`,custom:m},index:r.indexOf(m),series:this,event:y,plotX:0,plotY:0})}).on("mouseout",(y,m)=>{V(y.currentTarget).interrupt("hover").transition("hover").duration(z).ease(N).attr("opacity",d),this.context.events.emit("point:mouseout",{point:{name:`${m.sourceChrPrefixed}→${m.targetChrPrefixed}`},index:r.indexOf(m),series:this,event:y})})}renderConservationTrack(t,n,r,a,i,o,s,l,c){const h=l??400,f=c??0,u=r.map(x=>x.score),{min:d,max:p}=Mt(u),g=Bt(o||"Viridis"),y=Et(g).domain([d,p]),m=[];for(const x of r)m.push({chr:x.sourceChrPrefixed,start:x.sourceStart,end:x.sourceEnd,score:x.score}),m.push({chr:x.targetChrPrefixed,start:x.targetStart,end:x.targetEnd,score:x.score});const v=ct().innerRadius(a).outerRadius(i).startAngle(x=>n.getAngleForPosition(x.chr,x.start)).endAngle(x=>n.getAngleForPosition(x.chr,x.end)),M=t.selectAll(".katucharts-conservation").data(m).join("path").attr("class","katucharts-conservation").attr("d",v).attr("fill",x=>y(x.score)).attr("stroke","none");s&&M.attr("opacity",0).transition("enter").duration(h).delay(f).ease(R).attr("opacity",1)}buildRibbonPath(t,n,r,a){const i=r,o=1-a,s=t.getAngleForPosition(n.sourceChrPrefixed,n.sourceStart)-Math.PI/2,l=t.getAngleForPosition(n.sourceChrPrefixed,n.sourceEnd)-Math.PI/2,c=t.getAngleForPosition(n.targetChrPrefixed,n.targetStart)-Math.PI/2,h=t.getAngleForPosition(n.targetChrPrefixed,n.targetEnd)-Math.PI/2,f=i*Math.cos(s),u=i*Math.sin(s),d=i*Math.cos(l),p=i*Math.sin(l),g=i*Math.cos(c),y=i*Math.sin(c),m=i*Math.cos(h),v=i*Math.sin(h),M=Math.abs(l-s)>Math.PI?1:0,x=Math.abs(h-c)>Math.PI?1:0;return`M${f},${u}A${i},${i},0,${M},1,${d},${p}C${o*d},${o*p},${o*g},${o*y},${g},${y}A${i},${i},0,${x},1,${m},${v}C${o*m},${o*v},${o*f},${o*u},${f},${u}Z`}adjustColorBrightness(t,n){const r=st(t);if(!r)return t;const a=r;if(typeof a.h=="number"&&typeof a.s=="number"&&typeof a.l=="number"){const h=Math.min(1,Math.max(0,a.l+n));return`hsl(${a.h}, ${a.s*100}%, ${h*100}%)`}const i=r.rgb(),o=Math.round(255*n),s=Math.min(255,Math.max(0,i.r+o)),l=Math.min(255,Math.max(0,i.g+o)),c=Math.min(255,Math.max(0,i.b+o));return`rgb(${s},${l},${c})`}}const ch={hour:60,day:24,week:7,month:30,year:12};class _a extends rt{constructor(t){super(t)}render(){const{plotArea:t}=this.context,n=!!this.context.animate,r=this.getSpiralData();if(!r)return;const a=this.normalizeValues(r.values);if(a.length===0)return;const i=r.periodLength??(r.period?ch[r.period]:a.length),o=a.map(A=>A.value),{min:s,max:l}=Mt(o),c=Math.min(t.width,t.height),h=re(this.config.outerRadius,c)??c/2*.85,f=t.width/2,u=t.height/2,d=Math.ceil(a.length/i),g=(r.spacing??h/(d+1))*.5,y=g,m=(h-g)/(d*2*Math.PI),v=this.computeSegments(a,i,y,m),M=Bt(r.colorScale||"Viridis"),x=Et(M).domain([s,l]),b=(typeof this.config.animation=="object"?this.config.animation:{}).duration??K,_=this.group.append("g").attr("class","katucharts-spiral").attr("transform",`translate(${f},${u})`);this.renderSegments(_,v,x,n,b),r.showLabels!==!1&&this.renderRevolutionLabels(_,d,y,m,i,r),n&&this.emitAfterAnimate(b+100)}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}getSpiralData(){var t;if(this.data.length>0){const n=this.data[0];if((t=n.custom)!=null&&t.values)return{values:n.custom.values,period:n.custom.period,periodLength:n.custom.periodLength,colorScale:n.custom.colorScale,spacing:n.custom.spacing,showLabels:n.custom.showLabels,labelFormat:n.custom.labelFormat,spiralParam:n.custom.spiralParam}}return this.config.values?{values:this.config.values,period:this.config.period,periodLength:this.config.periodLength,colorScale:this.config.colorScale,spacing:this.config.spacing,showLabels:this.config.showLabels,labelFormat:this.config.labelFormat,spiralParam:this.config.spiralParam}:null}normalizeValues(t){return t.length===0?[]:typeof t[0]=="number"?t.map(n=>({value:n})):t}computeSegments(t,n,r,a){const i=2*Math.PI/n,o=[];for(let s=0;s<t.length;s++){const l=s%n*i,c=l+i,h=Math.floor(s/n),f=h*2*Math.PI+l,u=h*2*Math.PI+c,d=r+a*f,p=r+a*u;o.push({index:s,value:t[s].value,theta0:l,theta1:c,r0:d,r1:p})}return o}renderSegments(t,n,r,a,i){const o=t.append("g").attr("class","katucharts-spiral-segments"),l=(n.length>0?Math.round(2*Math.PI/Math.abs(n[0].theta1-n[0].theta0)):100)<=60,c=o.selectAll(".katucharts-spiral-seg").data(n).join("path").attr("class","katucharts-spiral-seg").attr("d",h=>this.buildSegmentPath(h)).attr("fill",h=>r(h.value)).attr("stroke",l?this.autoBorderColor():"none").attr("stroke-width",l?.3:0).style("cursor","pointer");this.context.events&&c.on("mouseover",(h,f)=>{const u=h.currentTarget;u.style.filter="brightness(1.15)",V(u).interrupt("hover").transition("hover").duration(z).ease(N).attr("opacity",1),this.context.events.emit("point:mouseover",{point:{name:`segment-${f.index}`,custom:{value:f.value,index:f.index}},index:f.index,series:this,event:h,plotX:0,plotY:0})}).on("mouseout",(h,f)=>{const u=h.currentTarget;u.style.filter="",V(u).interrupt("hover").transition("hover").duration(z).ease(N).attr("opacity",1),this.context.events.emit("point:mouseout",{point:{name:`segment-${f.index}`},index:f.index,series:this,event:h})}),a&&c.attr("opacity",0).transition().duration(i).ease(R).delay(h=>h.index*B).attr("opacity",1)}buildSegmentPath(t){const n=t.theta0-Math.PI/2,r=t.theta1-Math.PI/2,a=(t.r0+t.r1)/2,s=(t.r1-t.r0>.01?(t.r1-t.r0)/((t.theta1-t.theta0)/(2*Math.PI)):a*.15)*.95/2,l=Math.max(0,a-s),c=a+s,h=l*Math.cos(n),f=l*Math.sin(n),u=c*Math.cos(n),d=c*Math.sin(n),p=l*Math.cos(r),g=l*Math.sin(r),y=c*Math.cos(r),m=c*Math.sin(r),M=Math.abs(r-n)>Math.PI?1:0;return`M${h},${f}L${u},${d}A${c},${c},0,${M},1,${y},${m}L${p},${g}A${l},${l},0,${M},0,${h},${f}Z`}renderRevolutionLabels(t,n,r,a,i,o){const s=this.normalizeValues(o.values),l=[];for(let c=0;c<n;c++){const h=c*2*Math.PI,f=r+a*h;let u;const d=c*i,p=d<s.length?s[d]:null;if(p!=null&&p.date){const g=new Date(p.date);u=o.labelFormat?o.labelFormat.replace("{year}",String(g.getFullYear())):g.getFullYear().toString()}else o.period?u=`${o.period} ${c+1}`:u=`${c+1}`;l.push({text:u,y:-f})}t.selectAll(".katucharts-spiral-label").data(l).join("text").attr("class","katucharts-spiral-label").attr("x",4).attr("y",c=>c.y).attr("text-anchor","start").attr("dominant-baseline","central").attr("font-size",X).attr("fill",this.autoLabelColor()).text(c=>c.text)}}const Aa={circle:At,square:qe,diamond:Xe,triangle:le,"triangle-down":Xa,cross:Ln},ka=["circle","diamond","square","triangle","triangle-down"];class lh extends rt{constructor(t){t.clip=!1,super(t),this.cachedPositions=[]}resolveMarkerSymbol(){var a;if((a=this.config.marker)!=null&&a.symbol)return this.config.marker.symbol;const n=(this.context.allSeries||[]).filter(i=>i.config._internalType==="scatter");if(n.length<=1)return"circle";const r=n.indexOf(this);return ka[r%ka.length]}getLegendSymbolShape(){return this.resolveMarkerSymbol()}render(){var f,u,d,p;const{xAxis:t,yAxis:n,plotArea:r}=this.context,a=this.getColor(),i=this.data.filter(g=>g.y!==null&&g.y!==void 0),o=((f=this.config.marker)==null?void 0:f.radius)??4,s=((p=(d=(u=this.config.marker)==null?void 0:u.states)==null?void 0:d.hover)==null?void 0:p.radius)??o+3,l=this.context.animate,c=this.resolveMarkerSymbol(),h=this.config.jitter;this.cachedPositions=i.map(g=>({cx:this.applyJitter(t.getPixelForValue(g.x??0),r.width,h==null?void 0:h.x),cy:this.applyJitter(n.getPixelForValue(g.y??0),r.height,h==null?void 0:h.y)})),c==="circle"?this.renderCircles(i,a,o,s,!!l):this.renderSymbols(i,a,o,s,c,!!l),this.renderDataLabels(i,(g,y)=>this.cachedPositions[y].cx,(g,y)=>this.cachedPositions[y].cy),l&&this.emitAfterAnimate(K+i.length*B)}animateUpdate(t){var f;const{xAxis:n,yAxis:r,plotArea:a}=this.context,i=this.getColor(),o=this.data.filter(u=>u.y!==null&&u.y!==void 0),s=((f=this.config.marker)==null?void 0:f.radius)??4,l=this.config.jitter;this.cachedPositions=o.map(u=>({cx:this.applyJitter(n.getPixelForValue(u.x??0),a.width,l==null?void 0:l.x),cy:this.applyJitter(r.getPixelForValue(u.y??0),a.height,l==null?void 0:l.y)}));const c=this.resolveMarkerSymbol();if(c==="circle"){const u=this.group.selectAll(".katucharts-scatter-point").data(o);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,i)).attr("stroke",p=>{var g,y;return((g=p.marker)==null?void 0:g.lineColor)??((y=this.config.marker)==null?void 0:y.lineColor)??i}).attr("stroke-width",p=>{var g,y;return((g=p.marker)==null?void 0:g.lineWidth)??((y=this.config.marker)==null?void 0:y.lineWidth)??1}).attr("opacity",this.config.opacity??1).merge(u).transition().duration(t).attr("cx",(p,g)=>this.cachedPositions[g].cx).attr("cy",(p,g)=>this.cachedPositions[g].cy).attr("r",p=>{var g;return((g=p.marker)==null?void 0:g.radius)??s})}else{const u=Aa[c]||At,d=this.group.selectAll(".katucharts-scatter-point").data(o);d.exit().transition().duration(t).attr("opacity",0).remove(),d.enter().append("path").attr("class","katucharts-scatter-point").attr("fill",g=>this.getPointFill(g,i)).attr("stroke",g=>{var y,m;return((y=g.marker)==null?void 0:y.lineColor)??((m=this.config.marker)==null?void 0:m.lineColor)??i}).attr("stroke-width",g=>{var y,m;return((y=g.marker)==null?void 0:y.lineWidth)??((m=this.config.marker)==null?void 0:m.lineWidth)??1}).attr("opacity",this.config.opacity??1).merge(d).transition().duration(t).attr("transform",(g,y)=>`translate(${this.cachedPositions[y].cx},${this.cachedPositions[y].cy})`).attr("d",g=>{var m;const y=((m=g.marker)==null?void 0:m.radius)??s;return xt().type(u).size(Math.PI*y*y)()})}this.group.selectAll(".katucharts-data-labels").remove(),this.renderDataLabels(o,(u,d)=>this.cachedPositions[d].cx,(u,d)=>this.cachedPositions[d].cy)}getPointFill(t,n){var r,a;return t.color?t.color:(r=t.marker)!=null&&r.fillColor?t.marker.fillColor:(a=this.config.marker)!=null&&a.fillColor?this.config.marker.fillColor:this.config.negativeColor&&(t.y??0)<(this.config.threshold??0)?this.config.negativeColor:n}getEntryDuration(){return(typeof this.config.animation=="object"?this.config.animation:{}).duration??K}renderCircles(t,n,r,a,i){const o=this.group.selectAll(".katucharts-scatter-point").data(t).join("circle").attr("class","katucharts-scatter-point").attr("cx",(s,l)=>this.cachedPositions[l].cx).attr("cy",(s,l)=>this.cachedPositions[l].cy).attr("fill",s=>this.getPointFill(s,n)).attr("stroke",s=>{var l,c;return((l=s.marker)==null?void 0:l.lineColor)??((c=this.config.marker)==null?void 0:c.lineColor)??n}).attr("stroke-width",s=>{var l,c;return((l=s.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");i?o.attr("r",0).transition().duration(this.getEntryDuration()).ease(R).delay((s,l)=>wt(l,0,B,t.length)).attr("r",s=>{var l;return((l=s.marker)==null?void 0:l.radius)??r}):o.attr("r",s=>{var l;return((l=s.marker)==null?void 0:l.radius)??r}),this.attachScatterEvents(o,t,r,a,n,"circle")}renderSymbols(t,n,r,a,i,o){const s=Aa[i]||At,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,n)).attr("stroke",h=>{var f,u;return((f=h.marker)==null?void 0:f.lineColor)??((u=this.config.marker)==null?void 0:u.lineColor)??n}).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)??r;return xt().type(s).size(Math.PI*f*f)()};if(o){const h=xt().type(s).size(0);l.attr("d",h).transition().duration(this.getEntryDuration()).ease(R).delay((f,u)=>wt(u,0,B,t.length)).attr("d",c)}else l.attr("d",c);this.attachScatterEvents(l,t,r,a,n,"symbol",s)}attachScatterEvents(t,n,r,a,i,o,s){var g,y,m,v,M;if(this.config.enableMouseTracking===!1)return;const l=(g=this.config.states)==null?void 0:g.hover,c=(y=l==null?void 0:l.marker)==null?void 0:y.fillColor,h=(M=(v=(m=this.config.marker)==null?void 0:m.states)==null?void 0:v.hover)==null?void 0:M.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=n.map((x,w)=>{var b;return this.group.insert("circle",".katucharts-scatter-point").attr("cx",this.cachedPositions[w].cx).attr("cy",this.cachedPositions[w].cy).attr("r",0).attr("fill",x.color||((b=this.config.marker)==null?void 0:b.fillColor)||i).attr("opacity",0).attr("class","katucharts-halo")});t.on("mouseover",(x,w)=>{var k,C,P,L,F,E,I,G,O,ot,Q,Z,mt,tt;const b=x.currentTarget,_=n.indexOf(w);_>=0&&p[_]&&p[_].transition("halo").duration(z).ease(N).attr("r",u).attr("opacity",d);const A=((k=w.marker)==null?void 0:k.radius)??r,S=((L=(P=(C=w.marker)==null?void 0:C.states)==null?void 0:P.hover)==null?void 0:L.radius)??((I=(E=(F=this.config.marker)==null?void 0:F.states)==null?void 0:E.hover)==null?void 0:I.radius)??A+3,T=V(b).interrupt("hover").transition("hover").duration(z).ease(N);if(o==="circle")T.attr("r",S);else if(s){const Dt=Math.PI*S*S;T.attr("d",xt().type(s).size(Dt)())}b.style.filter="drop-shadow(0 1px 4px rgba(0,0,0,0.3))",c&&T.style("fill",c),h!==void 0&&T.style("stroke-width",String(h)),this.context.events.emit("point:mouseover",{point:w,index:_,series:this,event:x,plotX:((G=this.cachedPositions[_])==null?void 0:G.cx)??0,plotY:((O=this.cachedPositions[_])==null?void 0:O.cy)??0}),(Q=(ot=w.events)==null?void 0:ot.mouseOver)==null||Q.call(w,x),(tt=(mt=(Z=this.config.point)==null?void 0:Z.events)==null?void 0:mt.mouseOver)==null||tt.call(w,x)}).on("mouseout",(x,w)=>{var T,k,C,P,L,F;const b=x.currentTarget,_=n.indexOf(w);_>=0&&p[_]&&p[_].transition("halo").duration(z).ease(N).attr("r",0).attr("opacity",0);const A=((T=w.marker)==null?void 0:T.radius)??r,$=V(b).interrupt("hover").transition("hover").duration(z).ease(N);if(o==="circle")$.attr("r",A);else if(s){const E=Math.PI*A*A;$.attr("d",xt().type(s).size(E)())}b.style.filter="",$.style("fill",null).style("stroke-width",null),this.context.events.emit("point:mouseout",{point:w,index:_,series:this,event:x}),(C=(k=w.events)==null?void 0:k.mouseOut)==null||C.call(w,x),(F=(L=(P=this.config.point)==null?void 0:P.events)==null?void 0:L.mouseOut)==null||F.call(w,x)}).on("click",(x,w)=>{var _,A,S,$,T,k,C;const b=n.indexOf(w);this.context.events.emit("point:click",{point:w,index:b,series:this,event:x}),(A=(_=w.events)==null?void 0:_.click)==null||A.call(w,x),(T=($=(S=this.config.point)==null?void 0:S.events)==null?void 0:$.click)==null||T.call(w,x),(C=(k=this.config.events)==null?void 0:k.click)==null||C.call(this,x),this.handlePointSelect(V(x.currentTarget),w,b,x)})}}const Ca=180,Wt=.08;class fh extends lh{constructor(t){super(t)}getDataExtents(){const t=rt.prototype.getDataExtents.call(this),n=this.config.ellipse;if(!n)return t;const r=hh(n);if(!r)return t;const a=isFinite(t.xMin)&&isFinite(t.xMax)&&isFinite(t.yMin)&&isFinite(t.yMax),i=a?Math.min(t.xMin,r.xMin):r.xMin,o=a?Math.max(t.xMax,r.xMax):r.xMax,s=a?Math.min(t.yMin,r.yMin):r.yMin,l=a?Math.max(t.yMax,r.yMax):r.yMax,c=(o-i)*Wt||Math.abs(o)*Wt||Wt,h=(l-s)*Wt||Math.abs(l)*Wt||Wt;return{xMin:i-c,xMax:o+c,yMin:s-h,yMax:l+h}}render(){this.renderEllipse(),super.render()}animateUpdate(t){this.group.select(".katucharts-pcoa-ellipse").remove(),this.renderEllipse(),super.animateUpdate(t)}renderEllipse(){var s;const t=this.config.ellipse;if(!t)return;const{xAxis:n,yAxis:r}=this.context,a=(s=t.boundary)!=null&&s.length?t.boundary:uh(t);if(!a||a.length<3)return;const i=a.map(([l,c],h)=>{const f=n.getPixelForValue(l),u=r.getPixelForValue(c);return`${h===0?"M":"L"} ${f} ${u}`}).join(" ")+" Z",o=this.getColor();this.group.insert("path",":first-child").attr("class","katucharts-pcoa-ellipse").attr("d",i).attr("fill",t.fill??o).attr("fill-opacity",t.fillOpacity??.15).attr("stroke",t.stroke??o).attr("stroke-width",t.strokeWidth??2).style("pointer-events","none")}}function hh(e){var f;if((f=e.boundary)!=null&&f.length){let u=1/0,d=-1/0,p=1/0,g=-1/0;for(const[y,m]of e.boundary)y<u&&(u=y),y>d&&(d=y),m<p&&(p=m),m>g&&(g=m);return isFinite(u)?{xMin:u,xMax:d,yMin:p,yMax:g}:null}const{cx:t,cy:n,rx:r,ry:a,rotation:i}=e;if(t===void 0||n===void 0||r===void 0||a===void 0)return null;const o=i??0,s=Math.cos(o),l=Math.sin(o),c=Math.sqrt(r*r*s*s+a*a*l*l),h=Math.sqrt(r*r*l*l+a*a*s*s);return{xMin:t-c,xMax:t+c,yMin:n-h,yMax:n+h}}function uh(e){const{cx:t,cy:n,rx:r,ry:a,rotation:i}=e;if(t===void 0||n===void 0||r===void 0||a===void 0)return null;const o=i??0,s=Math.cos(o),l=Math.sin(o),c=[];for(let h=0;h<Ca;h++){const f=h/Ca*Math.PI*2,u=r*Math.cos(f),d=a*Math.sin(f);c.push([t+u*s-d*l,n+u*l+d*s])}return c}function $a(){at.registerType("volcano",jr),at.registerType("manhattan",Zr),at.registerType("violin",sa),at.registerType("kaplanmeier",ca),at.registerType("forestplot",la),at.registerType("sequencelogo",fa),at.registerType("clusteredheatmap",ua),at.registerType("phylotree",da),at.registerType("circos",va),at.registerType("circosHeatmap",wa),at.registerType("circosComparative",Ma),at.registerType("circosSpiral",_a),at.registerType("pcoa",fh)}$a(),H.CircosChart=va,H.CircosComparativeChart=Ma,H.CircosHeatmapChart=wa,H.CircosSpiralChart=_a,H.ClusteredHeatmapChart=ua,H.ForestPlotChart=la,H.KaplanMeierChart=ca,H.ManhattanChart=Zr,H.PhyloTreeChart=da,H.SequenceLogoChart=fa,H.ViolinChart=sa,H.VolcanoChart=jr,H.registerBioSeriesTypes=$a,Object.defineProperty(H,Symbol.toStringTag,{value:"Module"})});
|