transone-chart 0.2.0 → 0.2.2

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.
@@ -15,6 +15,10 @@ export interface MiniProgramCanvasNode {
15
15
  getContext(type: '2d'): unknown;
16
16
  width: number;
17
17
  height: number;
18
+ /** SelectorQuery 返回的 CSS 逻辑尺寸;物理缓冲区仍使用 width / height。 */
19
+ logicalWidth?: number;
20
+ logicalHeight?: number;
21
+ pixelRatio?: number;
18
22
  }
19
23
  export type MiniProgramGlobal = 'wx' | 'my' | 'tt';
20
24
  /** 安全读取小程序全局(避免与官方类型定义冲突,模式同 transone request)。 */
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var ze=["#1677ff","#00b578","#ff8f1f","#ff3141","#eb2f96","#722ed1","#13c2c2","#faad14","#2f54eb","#a0d911"],X="#323233",_e="#c8c9cc",Ce="#ebedf0",ne="-apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'PingFang SC', 'Microsoft YaHei', sans-serif";function bt(e){return typeof e==="object"&&e!==null&&typeof e.save==="function"&&typeof e.beginPath==="function"&&typeof e.fill==="function"&&typeof e.stroke==="function"&&typeof e.fillText==="function"}function Fe(e,t,n=5){let r=e,o=t;if(!Number.isFinite(r)||!Number.isFinite(o))throw Error("niceTicks: domain must be finite numbers");if(r===o){let u=Math.abs(r)>1?Math.abs(r)*0.1:1;r-=u,o+=u}if(r>o)[r,o]=[o,r];let s=(o-r)/Math.max(1,n),a=yt(s),l=Math.floor(r/a)*a,c=Math.ceil(o/a)*a,p=[];for(let u=l;u<=c+a*0.000000001;u+=a)p.push(vt(u,a));return{min:l,max:c,step:a,ticks:p}}function yt(e){let t=Math.pow(10,Math.floor(Math.log10(e))),n=e/t,r;if(n<=1)r=1;else if(n<=2)r=2;else if(n<=5)r=5;else r=10;return r*t}function vt(e,t){let n=Math.max(0,-Math.floor(Math.log10(t))+1);return Number(e.toFixed(n))}class Y{min;max;ticks;step;rangeStart;rangeEnd;constructor(e,t,n,r,o={}){let{min:i,max:s,splitCount:a=5}=o,l=i,c=s;if(l===void 0||c===void 0){let p=Fe(e,t,a);l=l??p.min,c=c??p.max,this.ticks=p.ticks,this.step=p.step}else{this.step=(c-l)/Math.max(1,a),this.ticks=[];for(let p=0;p<=a;p+=1)this.ticks.push(l+p*this.step)}this.min=l,this.max=c,this.rangeStart=n,this.rangeEnd=r}scale(e){let t=(e-this.min)/(this.max-this.min);return this.rangeStart+t*(this.rangeEnd-this.rangeStart)}}class re{categories;bandWidth;innerGapRatio;rangeStart;constructor(e,t,n,r=0.35){this.categories=e;this.innerGapRatio=r,this.rangeStart=t;let o=Math.max(1,e.length);this.bandWidth=(n-t)/o}bandStart(e){return this.rangeStart+this.bandWidth*e}center(e){return this.bandStart(e)+this.bandWidth/2}innerWidth(){return this.bandWidth*(1-this.innerGapRatio)}groupInnerWidth(e){return this.innerWidth()/Math.max(1,e)*0.8}}var Ct={top:12,right:16,bottom:12,left:16};function Rt(e,t){let{legend:n}=e,r=e.legendItems??[],o=n?.fontSize??12,i=n?.itemGap??16,s=n?.markerSize??12;if(n?.position==="right"){let l=0;for(let c of r){let p=s+6+t(c);if(p>l)l=p}return{width:l+12,height:Math.max(r.length*(o+8)+12,0)}}let a=0;for(let l of r)a+=s+6+t(l)+i;if(a>0)a-=i;return{width:a,height:o+12+4}}function Re(e,t){let n={...Ct,...e.basePadding},r=n.top,o=n.bottom,i=n.left,s=n.right,a=null;if(e.title?.text){let C=e.title.fontSize??16;a={x:0,y:0,width:e.width,height:C},r+=C+(e.title.padding??16)}let l=null,c=e.legend;if(c&&c.show!==!1&&(e.legendItems?.length??0)>0){let C=Rt(e,t),w=c.position??"top";if(w==="top")l={x:0,y:a?a.height:0,width:e.width,height:C.height},r+=C.height;else if(w==="bottom")l={x:0,y:e.height-C.height,width:e.width,height:C.height},o+=C.height;else l={x:e.width-C.width,y:r,width:C.width,height:Math.max(0,e.height-r-o)},s+=C.width}let p=11,u=0,d=0,m=0,f=0,y=e.valueLabels??[],h=e.categoryLabels??[];if(e.horizontal){if(h.length>0){for(let C of h){let w=t(C);if(w>f)f=w}f+=16,i+=f}if(y.length>0)m=p+16,o+=m}else{if(y.length>0){for(let C of y){let w=t(C);if(w>u)u=w}u+=16,i+=u}if(h.length>0)d=p+16,o+=d}let g=Math.max(0,e.width-i-s),R=Math.max(0,e.height-r-o),v={x:i,y:r,width:g,height:R},x=e.horizontal?{x:v.x,y:v.y+v.height,width:g,height:m}:{x:v.x-u,y:r,width:u,height:R},T=e.horizontal?{x:v.x-f,y:r,width:f,height:R}:{x:i,y:v.y+R,width:g,height:d};return{plot:v,valueAxisBox:x,categoryAxisBox:T,titleBox:a,legendBox:l,padding:n}}function xe(e,t){let n=null,r=null;return{run(...o){if(r=o,n!==null)clearTimeout(n);n=setTimeout(()=>{if(n=null,r!==null){let i=r;r=null,e(...i)}},t)},cancel(){if(n!==null)clearTimeout(n),n=null;r=null},pending(){return n!==null}}}function xt(e,t=ne){return`${e}px ${t}`}function S(e,t,n=ne){let r=xt(t,n);return e.font=r,r}function W(e,t,n,r=ne){return S(e,n,r),e.measureText(t).width}class Te{ctx;constructor(e){this.ctx=e}drawValueAxis(e){let{plot:t,scale:n,labels:r,horizontal:o=!1,labelFontSize:i=11,labelColor:s=X,gridColor:a=Ce,gridLineWidth:l=1,gridLineDash:c,showGrid:p=!0}=e,u=n.ticks,{ctx:d}=this;for(let m=0;m<u.length;m+=1){let f=n.scale(u[m]),y=r[m]??String(u[m]);if(p){if(d.save(),d.strokeStyle=a,d.lineWidth=l,c&&c.length>0)d.setLineDash(c);if(d.beginPath(),o)d.moveTo(t.x,f),d.lineTo(t.x+t.width,f);else d.moveTo(t.x,f),d.lineTo(t.x+t.width,f);d.stroke(),d.restore()}if(S(d,i),d.fillStyle=s,d.textBaseline="middle",o)d.textAlign="center",d.fillText(y,f,t.y+t.height+8);else d.textAlign="right",d.fillText(y,t.x-8,f)}}drawCategoryAxis(e){let{plot:t,scale:n,labels:r,horizontal:o=!1,axisColor:i=_e,labelFontSize:s=11,labelColor:a=X,gridColor:l=Ce,gridLineWidth:c=1,showGrid:p=!1}=e,{ctx:u}=this,d=r.length;if(p){u.save(),u.strokeStyle=l,u.lineWidth=c,u.beginPath();for(let m=0;m<d;m+=1){let f=n.center(m);if(o)u.moveTo(t.x,f),u.lineTo(t.x+t.width,f);else u.moveTo(f,t.y),u.lineTo(f,t.y+t.height)}u.stroke(),u.restore()}S(u,s),u.fillStyle=a,u.textBaseline="middle";for(let m=0;m<d;m+=1){let f=n.center(m);if(o)u.textAlign="right",u.fillText(r[m],t.x-8,f);else u.textAlign="center",u.fillText(r[m],f,t.y+t.height+8)}if(u.save(),u.strokeStyle=i,u.lineWidth=1,u.beginPath(),o)u.moveTo(t.x,t.y),u.lineTo(t.x,t.y+t.height);else u.moveTo(t.x,t.y+t.height),u.lineTo(t.x+t.width,t.y+t.height);u.stroke(),u.restore()}}class we{ctx;constructor(e){this.ctx=e}draw(e){let{box:t,items:n,position:r="top",fontSize:o=12,color:i=X,markerSize:s=12,itemGap:a=16}=e;if(n.length===0)return;let{ctx:l}=this;if(S(l,o),r==="right"){let d=t.y+o/2+4;for(let m of n)this.drawItem(m,t.x,d,o,s,i),d+=o+8;return}let c=0;for(let d of n)c+=s+6+W(l,d.name,o)+a;c-=a;let p=t.x+(t.width-c)/2,u=t.y+t.height/2;for(let d of n)this.drawItem(d,p,u,o,s,i),p+=s+6+W(l,d.name,o)+a}drawItem(e,t,n,r,o,i){let{ctx:s}=this;s.fillStyle=e.color,s.beginPath(),s.rect(t,n-o/2,o,o),s.fill(),s.fillStyle=i,s.textAlign="left",s.textBaseline="middle",s.fillText(e.name,t+o+6,n)}}class M{ctx;option;width;height;dpr;palette;cartesian=null;plot=null;hover=null;destroyed=!1;constructor(e,t){this.ctx=e.ctx,this.option=t,this.width=e.width,this.height=e.height,this.dpr=e.dpr,this.palette=e.palette??ze}setOption(e){return this.option={...this.option,...e},this}resize(e,t,n){if(this.width=Math.max(0,e),this.height=Math.max(0,t),n!==void 0&&Number.isFinite(n)&&n>0)this.dpr=n;return this}render(){if(this.destroyed)return this;let{ctx:e,width:t,height:n,dpr:r}=this;e.save(),e.scale(r,r),e.clearRect(0,0,t,n);let o=this.getBackgroundColor();if(o)e.fillStyle=o,e.fillRect(0,0,t,n);let i=this.computeLayout();if(this.plot=i.plot,this.drawTitle(i),this.drawLegend(i),this.hasCartesianAxis())this.cartesian=this.buildCartesianScales(i),this.drawCartesianAxis(i);else this.cartesian=null;if(this.drawSeries(e,i,this.option),this.hover)this.drawTooltip(this.hover);return e.restore(),this}setHover(e,t){if(this.option.tooltip?.show===!1)this.hover=null;else this.hover=this.hitTestSeries(e,t);return this.render()}clearHover(){return this.hover=null,this.render()}destroy(){this.destroyed=!0}isDestroyed(){return this.destroyed}hasCartesianAxis(){return!0}getValueDomain(){return{min:0,max:1}}getCategoryLabels(){return[]}isHorizontal(){return!1}getBackgroundColor(){return this.option.backgroundColor}getTitle(){return this.option.title}getLegend(){let e=this.option.legend;if(e)return e;return this.getLegendItems().length>0?{position:"top"}:void 0}getLegendItems(){return[]}getValueAxis(){return this.option.yAxis}getCategoryAxis(){return this.option.xAxis}computeLayout(){let e=this.buildLayoutInput();return Re(e,(n)=>W(this.ctx,n,11))}buildLayoutInput(){let e=this.isHorizontal(),t=this.hasCartesianAxis();return{width:this.width,height:this.height,title:this.getTitle(),legend:this.getLegend(),legendItems:this.getLegendItems().map((n)=>n.name),valueLabels:t&&!e?this.computeValueLabels():void 0,categoryLabels:t?this.getCategoryLabels():void 0,horizontal:e}}computeValueLabels(){let e=this.getValueDomain(),t=this.getValueAxis();return new Y(e.min,e.max,0,1,{min:t?.min,max:t?.max,splitCount:t?.splitCount}).ticks.map((r)=>t?.format?t.format(r):String(r))}drawTitle(e){let t=this.getTitle();if(!t?.text||!e.titleBox)return;let{ctx:n}=this;S(n,t.fontSize??16),n.fillStyle=t.color??"#323233",n.textAlign="center",n.textBaseline="top",n.fillText(t.text,this.width/2,e.titleBox.y)}drawLegend(e){let t=this.getLegend();if(t?.show===!1||!e.legendBox)return;let n=this.getLegendItems();if(n.length===0)return;new we(this.ctx).draw({box:e.legendBox,items:n,position:t?.position??"top",fontSize:t?.fontSize,color:t?.color,markerSize:t?.markerSize,itemGap:t?.itemGap})}buildCartesianScales(e){let{plot:t}=e,n=this.isHorizontal(),r=this.getValueDomain(),o=this.getCategoryLabels(),i=this.getValueAxis(),s=new Y(r.min,r.max,n?t.x:t.y+t.height,n?t.x+t.width:t.y,{min:i?.min,max:i?.max,splitCount:i?.splitCount}),a=new re(o,n?t.y:t.x,n?t.y+t.height:t.x+t.width);return{value:s,category:a}}drawCartesianAxis(e){let t=this.cartesian;if(!t)return;let{ctx:n}=this,{plot:r}=e,o=this.isHorizontal(),i=this.getValueAxis(),s=this.getCategoryAxis(),a=this.getCategoryLabels(),l=new Te(n),c=t.value.ticks.map((p)=>i?.format?i.format(p):String(p));l.drawValueAxis({plot:r,scale:t.value,labels:c,horizontal:o,labelFontSize:i?.labelFontSize,labelColor:i?.labelColor,gridColor:i?.gridColor,gridLineWidth:i?.gridLineWidth,gridLineDash:i?.gridLineDash,showGrid:i?.showGrid??!0}),l.drawCategoryAxis({plot:r,scale:t.category,labels:a,horizontal:o,labelFontSize:s?.labelFontSize,labelColor:s?.labelColor,gridColor:s?.gridColor,gridLineWidth:s?.gridLineWidth,showGrid:s?.showGrid??!1})}seriesColor(e,t){return t??this.palette[e%this.palette.length]}getTooltipOption(){return this.option.tooltip}defaultTooltipLines(e){let t=[e.name];for(let n of e.items)t.push(`${n.name}: ${n.value}`);return t}drawTooltip(e){let t=this.getTooltipOption();if(t?.show===!1)return;let n=t?.formatter,r=n?n(e):this.defaultTooltipLines(e),o=Array.isArray(r)?r:[r];if(o.length===0)return;let{ctx:i}=this,s=12,a=10,l=8,c=18,p=4,u=6;S(i,s);let d=0;for(let R of o)d=Math.max(d,W(i,R,s));let m=d+a*2+p*2+u,f=o.length*c+l*2,y=this.plot,h,g;if(y&&this.isHorizontal()){if(h=y.x+y.width+8,g=e.y-f/2,h+m>this.width-4)h=y.x-m-8}else if(y){if(h=e.x+14,g=e.y-f/2,h+m>this.width-4)h=e.x-m-14}else if(h=e.x+14,g=e.y-f/2,h+m>this.width-4)h=e.x-m-14;h=Math.max(4,h),g=Math.max(4,Math.min(g,this.height-f-4)),i.save(),i.fillStyle="rgba(50, 50, 51, 0.92)",i.beginPath(),this.roundRectPath(h,g,m,f,6),i.fill(),i.textBaseline="middle",i.textAlign="left",o.forEach((R,v)=>{let x=g+l+c*v+c/2,T=v>0?e.items[v-1]?.color:void 0;if(T)i.fillStyle=T,i.beginPath(),i.arc(h+a+p,x,p,0,Math.PI*2),i.fill();i.fillStyle="#ffffff";let C=h+a+(T?p*2+u:0);i.fillText(R,C,x)}),i.restore()}roundRectPath(e,t,n,r,o){let i=this.ctx,s=Math.min(o,n/2,r/2);i.moveTo(e+s,t),i.lineTo(e+n-s,t),i.arcTo(e+n,t,e+n,t+r,s),i.arcTo(e+n,t+r,e,t+r,s),i.arcTo(e,t+r,e,t,s),i.arcTo(e,t,e+n,t,s),i.closePath()}}class oe extends M{getValueDomain(){let{series:e,yAxis:t,startFromZero:n=!1}=this.option,r=1/0,o=-1/0;for(let i of e)for(let s of i.data){if(s<r)r=s;if(s>o)o=s}if(!Number.isFinite(r)||!Number.isFinite(o))return{min:0,max:1};if(n&&r>0)r=0;if(t?.min!==void 0)r=Math.min(r,t.min);if(t?.max!==void 0)o=Math.max(o,t.max);return{min:r,max:o}}getCategoryLabels(){return this.option.xAxis.labels}getLegendItems(){return this.option.series.filter((e)=>e.name).map((e,t)=>({name:e.name,color:this.seriesColor(t,e.color)}))}drawSeries(e,t,n){let r=this.cartesian;if(!r)return;let{plot:o}=t,{value:i,category:s}=r,a=this.getHoverCategoryIndex(),l=n.series.map((c)=>c.data.map((p,u)=>({x:s.center(u),y:i.scale(p)})));if(a>=0){let c=s.center(a);e.save(),e.strokeStyle="#c8c9cc",e.lineWidth=1,e.setLineDash([4,3]),e.beginPath(),e.moveTo(c,o.y),e.lineTo(c,o.y+o.height),e.stroke(),e.restore()}n.series.forEach((c,p)=>{let u=l[p];if(u.length===0)return;let d=this.seriesColor(p,c.color),m=c.lineWidth??2;if(c.area)e.save(),e.fillStyle=d,e.globalAlpha=0.15,e.beginPath(),this.tracePath(e,u,c.smooth??!1),e.lineTo(u[u.length-1].x,o.y+o.height),e.lineTo(u[0].x,o.y+o.height),e.closePath(),e.fill(),e.restore();if(e.save(),e.strokeStyle=d,e.lineWidth=m,e.lineJoin="round",e.lineCap="round",e.beginPath(),this.tracePath(e,u,c.smooth??!1),e.stroke(),e.restore(),c.showSymbol!==!1){let f=Math.max(2.5,m+0.5);e.save(),e.fillStyle=d;for(let y=0;y<u.length;y+=1){let h=u[y],g=y===a?f*1.6:f;e.beginPath(),e.arc(h.x,h.y,g,0,Math.PI*2),e.fill()}e.restore()}})}hitTestSeries(e,t){let n=this.cartesian,r=this.plot;if(!n||!r)return null;if(t<r.y||t>r.y+r.height)return null;let o=this.option.xAxis.labels,i=-1,s=1/0;for(let l=0;l<o.length;l+=1){let c=Math.abs(n.category.center(l)-e);if(c<s)s=c,i=l}if(i<0||s>n.category.bandWidth/2)return null;let a=this.option.series.map((l,c)=>({name:l.name??`系列${c+1}`,value:l.data[i]??0,color:this.seriesColor(c,l.color)}));return{x:e,y:t,name:o[i],items:a}}getHoverCategoryIndex(){let e=this.hover;if(!e)return-1;return this.option.xAxis.labels.indexOf(e.name)}tracePath(e,t,n){if(t.length===0)return;if(e.moveTo(t[0].x,t[0].y),!n||t.length<3){for(let r=1;r<t.length;r+=1)e.lineTo(t[r].x,t[r].y);return}for(let r=0;r<t.length-1;r+=1){let o=t[Math.max(0,r-1)],i=t[r],s=t[r+1],a=t[Math.min(t.length-1,r+2)],l=i.x+(s.x-o.x)/6,c=i.y+(s.y-o.y)/6,p=s.x-(a.x-i.x)/6,u=s.y-(a.y-i.y)/6;e.bezierCurveTo(l,c,p,u,s.x,s.y)}}}class ie extends M{isHorizontal(){return this.option.horizontal??!1}getValueDomain(){let{series:e,yAxis:t}=this.option,n=0,r=0,o=Ve(e),i=Math.max(0,...e.map((s)=>s.data.length));for(let s=0;s<i;s+=1)for(let a of o){let l=0,c=0;for(let p of a){let u=p.data[s]??0;if(u>=0)l+=u;else c+=u}if(l>n)n=l;if(c<r)r=c}if(t?.min!==void 0)r=Math.min(r,t.min);if(t?.max!==void 0)n=Math.max(n,t.max);return{min:r,max:n}}getCategoryLabels(){return this.option.xAxis.labels}getLegendItems(){return this.option.series.filter((e)=>e.name).map((e,t)=>({name:e.name,color:this.seriesColor(t,e.color)}))}drawSeries(e,t,n){let r=this.cartesian;if(!r)return;let{value:o,category:i}=r,s=n.horizontal??!1,a=Ve(n.series),l=n.xAxis.labels.length,c=this.getHoverCategoryIndex();for(let p=0;p<l;p+=1){let u=a,d=u.length,m=n.series.map((h)=>h.barWidth).find((h)=>h!==void 0&&h>0),f=this.computeSlot(i,d,m),y=c===p;u.forEach((h,g)=>{let R=f.offset+g*f.size,v=0;h.forEach((x)=>{let T=x.data[p]??0,C=this.seriesColor(n.series.indexOf(x),x.color),w=y?wt(C,0.25):C;if(s){let N=o.scale(0),j=o.scale(v+T),_=Math.min(N,j),F=Math.abs(j-N),V=i.bandStart(p)+R;this.drawBar(e,{x:_,y:V,width:F,height:f.size,radius:x.borderRadius??0,color:w,roundSide:T>=0?"right":"left"})}else{let N=o.scale(v),j=o.scale(v+T),_=Math.min(N,j),F=Math.abs(j-N),V=i.bandStart(p)+R;this.drawBar(e,{x:V,y:_,width:f.size,height:F,radius:x.borderRadius??0,color:w,roundSide:T>=0?"top":"bottom"})}v+=T})})}}hitTestSeries(e,t){let n=this.cartesian;if(!n)return null;let r=this.option.horizontal??!1,o=this.getCategoryLabels();for(let i=0;i<o.length;i+=1){let s=n.category.bandStart(i),a=n.category.bandWidth;if(!(r?t>=s&&t<=s+a:e>=s&&e<=s+a))continue;let c=this.option.series.map((p,u)=>({name:p.name??`系列${u+1}`,value:p.data[i]??0,color:this.seriesColor(u,p.color)}));return{x:e,y:t,name:o[i],items:c}}return null}getHoverCategoryIndex(){let e=this.hover;if(!e)return-1;return this.getCategoryLabels().indexOf(e.name)}computeSlot(e,t,n){let r=e.bandWidth,o=e.innerWidth();if(n!==void 0)return{offset:(r-n*t)/2,size:n};let i=o/Math.max(1,t)*0.8,s=(r-o)/2,a=(o-i*t)/2;return{offset:s+a,size:i}}drawBar(e,t){if(t.width<=0||t.height<=0)return;e.save(),e.fillStyle=t.color,e.beginPath(),Tt(e,t,t.radius,t.roundSide),e.fill(),e.restore()}}function Ve(e){let t=[],n=new Map;for(let r of e)if(r.stack){let o=n.get(r.stack);if(!o)o=[],n.set(r.stack,o),t.push(o);o.push(r)}else t.push([r]);return t}function Tt(e,t,n,r){let{x:o,y:i,width:s,height:a}=t,l=Math.min(n,s/2,a/2);if(l<=0){e.rect(o,i,s,a);return}let c=r==="top"||r==="left",p=r==="top"||r==="right",u=r==="bottom"||r==="left",d=r==="bottom"||r==="right";if(e.moveTo(o+(c?l:0),i),e.lineTo(o+s-(p?l:0),i),p)e.arcTo(o+s,i,o+s,i+l,l);else e.lineTo(o+s,i);if(e.lineTo(o+s,i+a-(d?l:0)),d)e.arcTo(o+s,i+a,o+s-l,i+a,l);else e.lineTo(o+s,i+a);if(e.lineTo(o+(u?l:0),i+a),u)e.arcTo(o,i+a,o,i+a-l,l);else e.lineTo(o,i+a);if(e.lineTo(o,i+(c?l:0)),c)e.arcTo(o,i,o+l,i,l);else e.lineTo(o,i);e.closePath()}function wt(e,t){let n=Math.max(0,Math.min(1,t)),r=e.match(/^#([0-9a-f]{3,8})$/i);if(r){let i,s,a,l=r[1];if(l.length===3)i=parseInt(l[0]+l[0],16),s=parseInt(l[1]+l[1],16),a=parseInt(l[2]+l[2],16);else i=parseInt(l.slice(0,2),16),s=parseInt(l.slice(2,4),16),a=parseInt(l.slice(4,6),16);return i=Math.round(i+(255-i)*n),s=Math.round(s+(255-s)*n),a=Math.round(a+(255-a)*n),`rgb(${i}, ${s}, ${a})`}let o=e.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);if(o){let i=Math.round(parseInt(o[1])+(255-parseInt(o[1]))*n),s=Math.round(parseInt(o[2])+(255-parseInt(o[2]))*n),a=Math.round(parseInt(o[3])+(255-parseInt(o[3]))*n);return`rgb(${i}, ${s}, ${a})`}return e}var Ee=Math.PI*2;class ae extends M{hasCartesianAxis(){return!1}getLegendItems(){return this.option.data.map((e,t)=>({name:e.name,color:e.color??this.seriesColor(t)}))}hitTestSeries(e,t){let n=this.plot;if(!n)return null;let r=n.x+n.width/2,o=n.y+n.height/2,i=Math.min(n.width,n.height)/2,s=se(this.option.radius??"60%",i),a=se(this.option.innerRadius??0,i),l=this.option.startAngle??-Math.PI/2,c=e-r,p=t-o,u=Math.hypot(c,p);if(u<a||u>s)return null;let d=this.option.data.filter((h)=>h.value>0),m=d.reduce((h,g)=>h+g.value,0);if(m<=0)return null;let f=Math.atan2(p,c);while(f<l)f+=Ee;let y=l;for(let h=0;h<d.length;h+=1){let g=d[h],R=g.value/m*Ee;if(f>=y&&f<=y+R){let v=Math.round(g.value/m*100);return{x:e,y:t,name:g.name,items:[{name:g.name,value:`${v}%`,color:g.color??this.seriesColor(h)}]}}y+=R}return null}drawSeries(e,t,n){let{plot:r}=t,o=r.x+r.width/2,i=r.y+r.height/2,s=Math.min(r.width,r.height)/2,a=se(n.radius??"60%",s),l=se(n.innerRadius??0,s),c=n.startAngle??-Math.PI/2,p=n.data.filter((m)=>m.value>0),u=p.reduce((m,f)=>m+f.value,0);if(u<=0||a<=0)return;let d=c;p.forEach((m,f)=>{let y=m.value/u*Ee,h=m.color??this.seriesColor(f);if(e.save(),e.fillStyle=h,e.beginPath(),l>0)e.arc(o,i,a,d,d+y),e.arc(o,i,l,d+y,d,!0);else e.arc(o,i,a,d,d+y),e.lineTo(o,i);if(e.closePath(),e.fill(),e.strokeStyle="#ffffff",e.lineWidth=1,e.stroke(),e.restore(),n.showLabel!==!1){let g=d+y/2,R=u>0?Math.round(m.value/u*100):0,v=`${m.name} ${R}%`;if(n.labelPosition==="outside"){let x=n.labelLineLength??14,T=n.labelGap??6,C=Math.cos(g),w=Math.sin(g),N=o+C*a,j=i+w*a,_=o+C*(a+x),F=i+w*(a+x),V=C>=0?1:-1,qe=_+V*T,je=F;e.save(),e.strokeStyle=n.labelLineColor??"#c0c4cc",e.lineWidth=1,e.beginPath(),e.moveTo(N,j),e.lineTo(_,F),e.lineTo(qe,je),e.stroke(),e.restore(),S(e,n.labelFontSize??10),e.fillStyle=n.labelColor??"#323233",e.textAlign=V>0?"left":"right",e.textBaseline="middle",e.fillText(v,qe,je)}else{let x=(a+(l>0?l:0))/2*0.85,T=o+Math.cos(g)*x,C=i+Math.sin(g)*x;S(e,n.labelFontSize??10),e.fillStyle=n.labelColor??"#ffffff",e.textAlign="center",e.textBaseline="middle",e.fillText(v,T,C)}}d+=y})}}function se(e,t){if(typeof e==="number")return Math.max(0,e);let n=/^(\d+(?:\.\d+)?)%$/.exec(e);if(!n)return t;return Number(n[1])/100*t}class le extends M{hasCartesianAxis(){return!1}getLegendItems(){return this.option.series.filter((e)=>e.name).map((e,t)=>({name:e.name,color:this.seriesColor(t,e.color)}))}drawSeries(e,t,n){let{plot:r}=t,o=r.x+r.width/2,i=r.y+r.height/2,s=n.radius??Math.min(r.width,r.height)/2*0.6,a=n.indicators.length;if(a===0||s<=0)return;let l=n.startAngle??-Math.PI/2,c=We/a,p=Math.max(1,n.splitCount??5),u=n.gridColor??"#ebedf0",d=n.gridLineWidth??1,m=(h)=>l+h*c,f=(h,g)=>({x:o+Math.cos(h)*g,y:i+Math.sin(h)*g});for(let h=1;h<=p;h+=1){let g=s*h/p;e.save(),e.strokeStyle=u,e.lineWidth=d,e.beginPath();for(let R=0;R<a;R+=1){let v=f(m(R),g);if(R===0)e.moveTo(v.x,v.y);else e.lineTo(v.x,v.y)}e.closePath(),e.stroke(),e.restore()}e.save(),e.strokeStyle=u,e.lineWidth=d,e.beginPath();for(let h=0;h<a;h+=1){let g=f(m(h),s);e.moveTo(o,i),e.lineTo(g.x,g.y)}e.stroke(),e.restore();let y=n.labelFontSize??11;S(e,y),e.fillStyle=n.labelColor??"#323233";for(let h=0;h<a;h+=1){let g=f(m(h),s+12);e.textAlign=Math.abs(g.x-o)<1?"center":g.x>o?"left":"right",e.textBaseline=Math.abs(g.y-i)<1?"middle":g.y>i?"top":"bottom",e.fillText(n.indicators[h].name,g.x,g.y)}n.series.forEach((h,g)=>{let R=this.seriesColor(g,h.color),v=n.indicators.map((x,T)=>{let C=x.max??this.indicatorMax(n,T),w=h.data[T]??0,N=C>0?Math.max(0,Math.min(1,w/C)):0;return f(m(T),s*N)});if(h.area!==!1)e.save(),e.fillStyle=R,e.globalAlpha=0.2,e.beginPath(),this.tracePolygon(e,v),e.closePath(),e.fill(),e.restore();e.save(),e.strokeStyle=R,e.lineWidth=h.lineWidth??2,e.lineJoin="round",e.beginPath(),this.tracePolygon(e,v),e.closePath(),e.stroke(),e.restore()})}hitTestSeries(e,t){let n=this.plot;if(!n)return null;let r=n.x+n.width/2,o=n.y+n.height/2,i=this.option.radius??Math.min(n.width,n.height)/2*0.6,s=this.option.indicators.length;if(s===0)return null;let a=this.option.startAngle??-Math.PI/2,l=We/s,c=-1,p=24;for(let d=0;d<s;d+=1){let m=this.option.indicators[d].max??this.indicatorMax(this.option,d),f=a+d*l;for(let y=0;y<this.option.series.length;y+=1){let h=this.option.series[y].data[d]??0,g=m>0?Math.max(0,Math.min(1,h/m)):0,R=r+Math.cos(f)*i*g,v=o+Math.sin(f)*i*g,x=Math.hypot(e-R,t-v);if(x<p)p=x,c=d}}if(c<0)return null;let u=this.option.series.map((d,m)=>({name:d.name??`系列${m+1}`,value:d.data[c]??0,color:this.seriesColor(m,d.color)}));return{x:e,y:t,name:this.option.indicators[c].name,items:u}}indicatorMax(e,t){let n=0;for(let r of e.series){let o=r.data[t]??0;if(o>n)n=o}return n}tracePolygon(e,t){if(t.length===0)return;e.moveTo(t[0].x,t[0].y);for(let n=1;n<t.length;n+=1)e.lineTo(t[n].x,t[n].y)}}var We=Math.PI*2;function D(){let e=Et();if(typeof e.devicePixelRatio==="number"&&e.devicePixelRatio>0)return e.devicePixelRatio;return 1}function Et(){if(typeof globalThis<"u")return globalThis;return{}}function I(e){let n=St()[e];return typeof n==="object"&&n!==null?n:null}function ue(e){let t=e.platform??H()??"wx",n=I(t),r=n?.createSelectorQuery;if(typeof r!=="function")return Promise.reject(Error(`getMiniProgramCanvasNode: ${t}.createSelectorQuery is not available`));return new Promise((o,i)=>{let s=r.call(n);if(e.instance&&typeof s.in==="function")s=s.in(e.instance);if(typeof s.select!=="function"){i(Error(`${t}.createSelectorQuery().select is not available`));return}s.select(e.selector).fields({node:!0,size:!0}).exec((a)=>{let c=(Array.isArray(a)?a[0]:void 0)?.node;if(!c||typeof c.getContext!=="function"){i(Error(`getMiniProgramCanvasNode: canvas node not found for "${e.selector}"`));return}o(c)})})}function H(){if(I("wx"))return"wx";if(I("my"))return"my";if(I("tt"))return"tt";return null}function Se(e){let t=e??H()??"wx",n=I(t),r=n?.getSystemInfoSync;if(typeof r==="function")try{let o=r.call(n);if(typeof o.pixelRatio==="number"&&o.pixelRatio>0)return o.pixelRatio}catch{}return D()}function U(e,t={}){let n=e.getContext("2d");if(!n)throw Error("resolveMiniProgramCanvas: 2d context is not available");let r=t.dpr??Se(),o=t.width??e.width,i=t.height??e.height;return{ctx:n,width:o,height:i,dpr:r,palette:t.palette}}function St(){if(typeof globalThis<"u")return globalThis;return{}}function G(e,t={}){if(!e)throw Error("resolveWebCanvas: canvas element is required");let n=e.getContext("2d");if(!n)throw Error("resolveWebCanvas: 2d context is not available");let r=t.dpr??D(),o=t.width??(e.clientWidth||e.width),i=t.height??(e.clientHeight||e.height);return e.width=Math.round(o*r),e.height=Math.round(i*r),{ctx:n,width:o,height:i,dpr:r,palette:t.palette}}function Q(e,t){switch(t.type){case"line":return new oe(e,t);case"bar":return new ie(e,t);case"pie":return new ae(e,t);case"radar":return new le(e,t);default:throw Error(`createChart: unsupported chart type "${t.type}"`)}}function Pt(e,t,n={}){return Q(G(e,n),t)}function Lt(e,t,n={}){return Q(U(e,n),t)}function $e(e){throw Error("resolveNativeCanvas is not implemented yet. Native app support (iOS/Android/HarmonyOS) is planned for a future phase; implement ICanvas2D on the host side and fill in this resolver.")}function O(e){if(e===void 0||e===null)return[];return Array.isArray(e)?e:[e]}function Ue(e){return typeof e==="object"&&e!==null&&"component"in e}function Ge(e){return typeof e==="object"&&e!==null&&"tag"in e&&e.tag!=="slot"}function Ke(e){return typeof e==="object"&&e!==null&&"tag"in e&&e.tag==="slot"}function Xe(e,t,n,r,o,i){return{tag:e,props:t,children:n,listeners:r,key:o,directions:i}}function At(e,t={}){return{tag:e,...t}}function b(e){return(t={})=>At(e,t)}var Mt=b("div"),Zn=b("span"),er=b("p"),tr=b("button"),nr=b("input"),rr=b("section"),or=b("main"),ir=b("header"),sr=b("footer"),ar=b("nav"),lr=b("article"),ur=b("aside"),cr=b("h1"),pr=b("h2"),dr=b("h3"),hr=b("h4"),mr=b("h5"),fr=b("h6"),gr=b("strong"),br=b("em"),yr=b("small"),vr=b("pre"),Cr=b("code"),Rr=b("blockquote"),xr=b("ul"),Tr=b("ol"),wr=b("li"),Er=b("a"),Sr=b("img"),Pr=b("form"),Lr=b("label"),Ar=b("textarea"),Mr=b("select"),Ir=b("option"),Or=b("table"),kr=b("thead"),Nr=b("tbody"),Dr=b("tr"),Hr=b("th"),Br=b("td");var z=Symbol("is_reactive"),P=Symbol("is_readonly"),It=Symbol("is_ref"),Ye=["push","pop","shift","unshift","splice","sort","reverse"];function L(e,t){return Boolean(Reflect.get(e,t))}function k(e){return e!==null&&typeof e==="object"}class Pe{pending=new Set;flushing=!1;flushPromise=null;flushResolve=null;enqueue(e){if(this.pending.has(e))return;if(this.pending.add(e),!this.flushing)queueMicrotask(()=>this.flush())}flush(){if(this.flushing)return;this.flushing=!0;try{while(this.pending.size>0){let e=Array.from(this.pending);this.pending.clear();for(let t of e)if(t.active)t()}}finally{this.flushing=!1;let e=this.flushResolve;this.flushResolve=null,this.flushPromise=null,e?.()}}nextTick(){if(!this.flushing&&this.pending.size===0)return Promise.resolve();if(this.flushPromise)return this.flushPromise;return this.flushPromise=new Promise((e)=>{this.flushResolve=e}),this.flushPromise}}var Ot=0,Le=new Pe;class A{static instance;activeEffect=null;effectStack=[];targetMap=new WeakMap;reactiveMap=new WeakMap;readonlyMap=new WeakMap;proxyMap=new WeakMap;constructor(){}static getInstance(){if(!A.instance)A.instance=new A;return A.instance}reactive(e){if(!k(e))return console.warn("reactive: target must be an object"),e;if(kt(e))return e;if(this.reactiveMap.has(e))return this.reactiveMap.get(e);if(Array.isArray(e))return this.createReactiveArray(e);let t=new Proxy(e,{get:(n,r)=>{if(r===z)return!0;if(r===P)return!1;this.track(n,r);let o=Reflect.get(n,r);if(k(o)&&!L(o,P))return this.reactive(o);return o},set:(n,r,o)=>{if(L(n,P))return console.warn(`Cannot set property ${String(r)} on readonly object`),!1;let i=Reflect.get(n,r);if(k(o)&&!L(o,z)&&!L(o,P))o=this.reactive(o);let s=Reflect.set(n,r,o);if(i!==o)this.trigger(n,r);return s},deleteProperty:(n,r)=>{if(L(n,P))return console.warn(`Cannot delete property ${String(r)} on readonly object`),!1;let o=r in n,i=Reflect.deleteProperty(n,r);if(o)this.trigger(n,r);return i}});return this.reactiveMap.set(e,t),this.proxyMap.set(t,e),t}toRawValue(e){if(k(e)&&this.proxyMap.has(e))return this.proxyMap.get(e);return e}createReactiveArray(e){if(this.reactiveMap.has(e))return this.reactiveMap.get(e);let t=new Proxy(e,{get:(n,r)=>{if(r===z)return!0;if(r===P)return!1;this.track(n,r);let o=Reflect.get(n,r);if(typeof r==="string"&&(r==="includes"||r==="indexOf"||r==="lastIndexOf")){this.track(n,"length");for(let s=0;s<n.length;s++)this.track(n,String(s));let i=o;return(...s)=>{let a=i.apply(n,s);if(a===!1||a===-1){let l=n.map((p)=>this.toRawValue(p));return l[r].apply(l,s.map((p)=>this.toRawValue(p)))}return a}}if(typeof r==="string"&&Ye.includes(r))return(...i)=>{let a=o.apply(n,i);return this.trigger(n,"length"),this.trigger(n,r),a};if(k(o)&&!L(o,P))return this.reactive(o);return o},set:(n,r,o)=>{if(L(n,P))return console.warn(`Cannot set property ${String(r)} on readonly object`),!1;let i=Reflect.get(n,r);if(k(o)&&!L(o,z)&&!L(o,P))o=this.reactive(o);let s=Reflect.set(n,r,o);if(i!==o){if(this.trigger(n,r),typeof r==="string"&&!isNaN(Number(r)))this.trigger(n,"length")}return s},deleteProperty:(n,r)=>{if(L(n,P))return console.warn(`Cannot delete property ${String(r)} on readonly object`),!1;let o=r in n,i=Reflect.deleteProperty(n,r);if(o)this.trigger(n,r),this.trigger(n,"length");return i}});return this.reactiveMap.set(e,t),this.proxyMap.set(t,e),t}readonly(e){if(!k(e))return console.warn("readonly: target must be an object"),e;if(L(e,P))return e;if(this.readonlyMap.has(e))return this.readonlyMap.get(e);let t=new Proxy(e,{get:(n,r)=>{if(r===z)return!1;if(r===P)return!0;let o=Reflect.get(n,r);if(k(o))return this.readonly(o);return o},set:()=>(console.warn("Cannot set property on readonly object"),!1),deleteProperty:()=>(console.warn("Cannot delete property on readonly object"),!1)});return this.readonlyMap.set(e,t),t}effect(e,t){let{lazy:n=!1,scheduler:r,throwOnError:o=!1}=t||{},i=()=>{if(!i.active)return e();try{return this.cleanup(i),this.effectStack.push(i),this.activeEffect=i,e()}catch(s){if(o)throw s;console.error("Effect error:",s);return}finally{this.effectStack.pop(),this.activeEffect=this.effectStack[this.effectStack.length-1]??null}};if(i.id=Ot++,i.deps=[],i.active=!0,i.scheduler=r,!n)i();return i}runWithEffect(e,t){this.effectStack.push(e),this.activeEffect=e;try{return t()}finally{this.effectStack.pop(),this.activeEffect=this.effectStack[this.effectStack.length-1]??null}}computed(e){let t=!0,n,r={},o=()=>{this.track(r,"value")},i=this.effect(()=>{n=e(),t=!1},{lazy:!0,scheduler:()=>{if(!t)t=!0,this.trigger(r,"value")}});return{get value(){if(t)i();return o(),n}}}cleanup(e){e.deps.forEach((t)=>{t.delete(e)}),e.deps.length=0}track(e,t){if(!this.activeEffect||!this.activeEffect.active)return;let n=this.targetMap.get(e);if(!n)n=new Map,this.targetMap.set(e,n);let r=n.get(t);if(!r)r=new Set,n.set(t,r);if(!r.has(this.activeEffect))r.add(this.activeEffect),this.activeEffect.deps.push(r)}trigger(e,t){let n=this.targetMap.get(e);if(!n)return;let r=n.get(t);if(!r)return;new Set(r).forEach((i)=>{if(i.active)if(i.scheduler)i.scheduler(i);else i()})}stop(e){if(e.active)this.cleanup(e),e.active=!1}}function Qe(e){return A.getInstance().reactive(e)}function B(e,t){return A.getInstance().effect(e,t)}function q(e){A.getInstance().stop(e)}function kt(e){return k(e)&&L(e,z)}function Je(e){let t=e.split(".");if(e.length===0||t.some((n)=>n.length===0||n==="__proto__"||n==="prototype"||n==="constructor"))throw Error(`Invalid model path "${e}"`);return t}function Me(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function Ze(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Nt(e){return typeof e==="string"?e:e.path}function Ie(e,t){let n=e;for(let r of Je(t)){if(!Me(n))throw Error(`Invalid model path "${t}"`);if(!Ze(n,r)){if(r in n)throw Error(`Invalid model path "${t}"`);return}n=n[r]}return n}function Dt(e,t,n){let r=Je(t),o=e;for(let s of r.slice(0,-1)){if(!Ze(o,s)){if(s in o)throw Error(`Invalid model path "${t}"`);o[s]={}}else if(!Me(o[s]))throw Error(`Invalid model path "${t}"`);let a=o[s];if(!Me(a))throw Error(`Invalid model path "${t}"`);o=a}let i=r[r.length-1];o[i]=n}function Ae(e,t){if(typeof e!=="string"&&e.format)return e.format(t);return t===void 0||t===null?"":String(t)}function Ht(e,t){if(typeof e!=="string"&&e.parse)return e.parse(t);return t}function Bt(e,t,n){if(e instanceof HTMLInputElement){if(e.type==="checkbox"){e.checked=Array.isArray(n)?n.some((r)=>String(r)===e.value):Boolean(n);return}if(e.type==="radio"){e.checked=n===e.value;return}e.value=Ae(t,n);return}if(e instanceof HTMLTextAreaElement){e.value=Ae(t,n);return}if(e instanceof HTMLSelectElement){if(e.multiple){let r=Array.isArray(n)?new Set(n.map(String)):new Set;for(let o=0;o<e.options.length;o+=1){let i=e.options.item(o);if(!i)continue;i.selected=r.has(i.value)}return}e.value=Ae(t,n)}}function qt(e,t){if(e instanceof HTMLInputElement){if(e.type==="checkbox"){if(Array.isArray(t)){let n=t.filter((r)=>String(r)!==e.value);return e.checked?[...n,e.value]:n}return e.checked}if(e.type==="radio")return e.checked?e.value:t;return e.value}if(e instanceof HTMLTextAreaElement)return e.value;if(e instanceof HTMLSelectElement){if(!e.multiple)return e.value;let n=[];for(let r=0;r<e.selectedOptions.length;r+=1){let o=e.selectedOptions.item(r);if(o)n.push(o.value)}return n}return}class Oe{bindings=new WeakMap;bind(e,t,n){if(!this.isSupportedControl(e))return;let r=this.bindings.get(e);if(r&&this.sameBinding(r,t))return;this.cleanup(e);let o=Nt(t),i=()=>Bt(e,t,Ie(n,o)),s=e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement&&!["checkbox","radio"].includes(e.type)?"input":"change",a=()=>{let c=Ie(n,o);Dt(n,o,Ht(t,qt(e,c)))};e.addEventListener(s,a);let l=B(i);this.bindings.set(e,{binding:t,path:o,parse:typeof t==="string"?void 0:t.parse,format:typeof t==="string"?void 0:t.format,eventName:s,listener:a,effect:l})}cleanup(e){let t=this.bindings.get(e);if(!t)return;e.removeEventListener(t.eventName,t.listener),q(t.effect),this.bindings.delete(e)}isSupportedControl(e){return e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement}sameBinding(e,t){if(typeof e.binding==="string"||typeof t==="string")return e.binding===t;return e.path===t.path&&e.parse===t.parse&&e.format===t.format}}var et=":root{--tu-rpx:calc(min(100vw, 750px) / 750);}",jt=/(-?\d+(?:\.\d+)?)rpx/g;function ce(e){return String(e).replace(jt,(t,n)=>`calc(${n} * var(--tu-rpx))`)}function pe(e){return/^on[A-Z]/.test(e)||/^on[a-z]/.test(e)}function tt(e){return e.slice(2).toLowerCase()}function nt(e){let[t,...n]=e.split(".");return{eventName:t,modifiers:new Set(n)}}function rt(e,t){let n=(r)=>{if(t.has("stop"))r.stopPropagation();if(t.has("prevent"))r.preventDefault();if(t.has("self")&&r.currentTarget!==r.target)return;if(t.has("once"))r.currentTarget.removeEventListener(r.type,n);e(r)};return n}function ot(e,t,n){let r=t.includes("-")?t:t.replace(/[A-Z]/g,(o)=>`-${o.toLowerCase()}`);e.setProperty(r,ce(n))}class ke{styleElement=null;styles=new Map;constructor(){}addStyle(e,t){this.styles.set(e,t),this.updateStyles()}removeStyle(e){this.styles.delete(e),this.updateStyles()}clearStyles(){if(this.styles.clear(),this.styleElement)this.styleElement.textContent=""}destroy(){if(this.clearStyles(),this.styleElement)this.styleElement.remove(),this.styleElement=null}ensureStyleElement(){if(!this.styleElement){let e=document.createElement("style");document.head.appendChild(e),this.styleElement=e}return this.styleElement}convertToCSS(e){return Object.entries(e).map(([t,n])=>`${t.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${ce(n)};`).join(`
1
+ var ze=["#1677ff","#00b578","#ff8f1f","#ff3141","#eb2f96","#722ed1","#13c2c2","#faad14","#2f54eb","#a0d911"],X="#323233",_e="#c8c9cc",Re="#ebedf0",ne="-apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'PingFang SC', 'Microsoft YaHei', sans-serif";function bt(e){return typeof e==="object"&&e!==null&&typeof e.save==="function"&&typeof e.beginPath==="function"&&typeof e.fill==="function"&&typeof e.stroke==="function"&&typeof e.fillText==="function"}function Fe(e,t,n=5){let r=e,o=t;if(!Number.isFinite(r)||!Number.isFinite(o))throw Error("niceTicks: domain must be finite numbers");if(r===o){let u=Math.abs(r)>1?Math.abs(r)*0.1:1;r-=u,o+=u}if(r>o)[r,o]=[o,r];let s=(o-r)/Math.max(1,n),a=yt(s),l=Math.floor(r/a)*a,c=Math.ceil(o/a)*a,p=[];for(let u=l;u<=c+a*0.000000001;u+=a)p.push(vt(u,a));return{min:l,max:c,step:a,ticks:p}}function yt(e){let t=Math.pow(10,Math.floor(Math.log10(e))),n=e/t,r;if(n<=1)r=1;else if(n<=2)r=2;else if(n<=5)r=5;else r=10;return r*t}function vt(e,t){let n=Math.max(0,-Math.floor(Math.log10(t))+1);return Number(e.toFixed(n))}class Y{min;max;ticks;step;rangeStart;rangeEnd;constructor(e,t,n,r,o={}){let{min:i,max:s,splitCount:a=5}=o,l=i,c=s;if(l===void 0||c===void 0){let p=Fe(e,t,a);l=l??p.min,c=c??p.max,this.ticks=p.ticks,this.step=p.step}else{this.step=(c-l)/Math.max(1,a),this.ticks=[];for(let p=0;p<=a;p+=1)this.ticks.push(l+p*this.step)}this.min=l,this.max=c,this.rangeStart=n,this.rangeEnd=r}scale(e){let t=(e-this.min)/(this.max-this.min);return this.rangeStart+t*(this.rangeEnd-this.rangeStart)}}class re{categories;bandWidth;innerGapRatio;rangeStart;constructor(e,t,n,r=0.35){this.categories=e;this.innerGapRatio=r,this.rangeStart=t;let o=Math.max(1,e.length);this.bandWidth=(n-t)/o}bandStart(e){return this.rangeStart+this.bandWidth*e}center(e){return this.bandStart(e)+this.bandWidth/2}innerWidth(){return this.bandWidth*(1-this.innerGapRatio)}groupInnerWidth(e){return this.innerWidth()/Math.max(1,e)*0.8}}var Ct={top:12,right:16,bottom:12,left:16};function Rt(e,t){let{legend:n}=e,r=e.legendItems??[],o=n?.fontSize??12,i=n?.itemGap??16,s=n?.markerSize??12;if(n?.position==="right"){let l=0;for(let c of r){let p=s+6+t(c);if(p>l)l=p}return{width:l+12,height:Math.max(r.length*(o+8)+12,0)}}let a=0;for(let l of r)a+=s+6+t(l)+i;if(a>0)a-=i;return{width:a,height:o+12+4}}function xe(e,t){let n={...Ct,...e.basePadding},r=n.top,o=n.bottom,i=n.left,s=n.right,a=null;if(e.title?.text){let C=e.title.fontSize??16;a={x:0,y:0,width:e.width,height:C},r+=C+(e.title.padding??16)}let l=null,c=e.legend;if(c&&c.show!==!1&&(e.legendItems?.length??0)>0){let C=Rt(e,t),w=c.position??"top";if(w==="top")l={x:0,y:a?a.height:0,width:e.width,height:C.height},r+=C.height;else if(w==="bottom")l={x:0,y:e.height-C.height,width:e.width,height:C.height},o+=C.height;else l={x:e.width-C.width,y:r,width:C.width,height:Math.max(0,e.height-r-o)},s+=C.width}let p=11,u=0,d=0,m=0,f=0,y=e.valueLabels??[],h=e.categoryLabels??[];if(e.horizontal){if(h.length>0){for(let C of h){let w=t(C);if(w>f)f=w}f+=16,i+=f}if(y.length>0)m=p+16,o+=m}else{if(y.length>0){for(let C of y){let w=t(C);if(w>u)u=w}u+=16,i+=u}if(h.length>0)d=p+16,o+=d}let g=Math.max(0,e.width-i-s),R=Math.max(0,e.height-r-o),v={x:i,y:r,width:g,height:R},x=e.horizontal?{x:v.x,y:v.y+v.height,width:g,height:m}:{x:v.x-u,y:r,width:u,height:R},T=e.horizontal?{x:v.x-f,y:r,width:f,height:R}:{x:i,y:v.y+R,width:g,height:d};return{plot:v,valueAxisBox:x,categoryAxisBox:T,titleBox:a,legendBox:l,padding:n}}function Te(e,t){let n=null,r=null;return{run(...o){if(r=o,n!==null)clearTimeout(n);n=setTimeout(()=>{if(n=null,r!==null){let i=r;r=null,e(...i)}},t)},cancel(){if(n!==null)clearTimeout(n),n=null;r=null},pending(){return n!==null}}}function xt(e,t=ne){return`${e}px ${t}`}function S(e,t,n=ne){let r=xt(t,n);return e.font=r,r}function W(e,t,n,r=ne){return S(e,n,r),e.measureText(t).width}class we{ctx;constructor(e){this.ctx=e}drawValueAxis(e){let{plot:t,scale:n,labels:r,horizontal:o=!1,labelFontSize:i=11,labelColor:s=X,gridColor:a=Re,gridLineWidth:l=1,gridLineDash:c,showGrid:p=!0}=e,u=n.ticks,{ctx:d}=this;for(let m=0;m<u.length;m+=1){let f=n.scale(u[m]),y=r[m]??String(u[m]);if(p){if(d.save(),d.strokeStyle=a,d.lineWidth=l,c&&c.length>0)d.setLineDash(c);if(d.beginPath(),o)d.moveTo(t.x,f),d.lineTo(t.x+t.width,f);else d.moveTo(t.x,f),d.lineTo(t.x+t.width,f);d.stroke(),d.restore()}if(S(d,i),d.fillStyle=s,d.textBaseline="middle",o)d.textAlign="center",d.fillText(y,f,t.y+t.height+8);else d.textAlign="right",d.fillText(y,t.x-8,f)}}drawCategoryAxis(e){let{plot:t,scale:n,labels:r,horizontal:o=!1,axisColor:i=_e,labelFontSize:s=11,labelColor:a=X,gridColor:l=Re,gridLineWidth:c=1,showGrid:p=!1}=e,{ctx:u}=this,d=r.length;if(p){u.save(),u.strokeStyle=l,u.lineWidth=c,u.beginPath();for(let m=0;m<d;m+=1){let f=n.center(m);if(o)u.moveTo(t.x,f),u.lineTo(t.x+t.width,f);else u.moveTo(f,t.y),u.lineTo(f,t.y+t.height)}u.stroke(),u.restore()}S(u,s),u.fillStyle=a,u.textBaseline="middle";for(let m=0;m<d;m+=1){let f=n.center(m);if(o)u.textAlign="right",u.fillText(r[m],t.x-8,f);else u.textAlign="center",u.fillText(r[m],f,t.y+t.height+8)}if(u.save(),u.strokeStyle=i,u.lineWidth=1,u.beginPath(),o)u.moveTo(t.x,t.y),u.lineTo(t.x,t.y+t.height);else u.moveTo(t.x,t.y+t.height),u.lineTo(t.x+t.width,t.y+t.height);u.stroke(),u.restore()}}class Ee{ctx;constructor(e){this.ctx=e}draw(e){let{box:t,items:n,position:r="top",fontSize:o=12,color:i=X,markerSize:s=12,itemGap:a=16}=e;if(n.length===0)return;let{ctx:l}=this;if(S(l,o),r==="right"){let d=t.y+o/2+4;for(let m of n)this.drawItem(m,t.x,d,o,s,i),d+=o+8;return}let c=0;for(let d of n)c+=s+6+W(l,d.name,o)+a;c-=a;let p=t.x+(t.width-c)/2,u=t.y+t.height/2;for(let d of n)this.drawItem(d,p,u,o,s,i),p+=s+6+W(l,d.name,o)+a}drawItem(e,t,n,r,o,i){let{ctx:s}=this;s.fillStyle=e.color,s.beginPath(),s.rect(t,n-o/2,o,o),s.fill(),s.fillStyle=i,s.textAlign="left",s.textBaseline="middle",s.fillText(e.name,t+o+6,n)}}class A{ctx;option;width;height;dpr;palette;cartesian=null;plot=null;hover=null;destroyed=!1;constructor(e,t){this.ctx=e.ctx,this.option=t,this.width=e.width,this.height=e.height,this.dpr=e.dpr,this.palette=e.palette??ze}setOption(e){return this.option={...this.option,...e},this}resize(e,t,n){if(this.width=Math.max(0,e),this.height=Math.max(0,t),n!==void 0&&Number.isFinite(n)&&n>0)this.dpr=n;return this}render(){if(this.destroyed)return this;let{ctx:e,width:t,height:n,dpr:r}=this;e.save(),e.scale(r,r),e.clearRect(0,0,t,n);let o=this.getBackgroundColor();if(o)e.fillStyle=o,e.fillRect(0,0,t,n);let i=this.computeLayout();if(this.plot=i.plot,this.drawTitle(i),this.drawLegend(i),this.hasCartesianAxis())this.cartesian=this.buildCartesianScales(i),this.drawCartesianAxis(i);else this.cartesian=null;if(this.drawSeries(e,i,this.option),this.hover)this.drawTooltip(this.hover);return e.restore(),this}setHover(e,t){if(this.option.tooltip?.show===!1)this.hover=null;else this.hover=this.hitTestSeries(e,t);return this.render()}clearHover(){return this.hover=null,this.render()}destroy(){this.destroyed=!0}isDestroyed(){return this.destroyed}hasCartesianAxis(){return!0}getValueDomain(){return{min:0,max:1}}getCategoryLabels(){return[]}isHorizontal(){return!1}getBackgroundColor(){return this.option.backgroundColor}getTitle(){return this.option.title}getLegend(){let e=this.option.legend;if(e)return e;return this.getLegendItems().length>0?{position:"top"}:void 0}getLegendItems(){return[]}getValueAxis(){return this.option.yAxis}getCategoryAxis(){return this.option.xAxis}computeLayout(){let e=this.buildLayoutInput();return xe(e,(n)=>W(this.ctx,n,11))}buildLayoutInput(){let e=this.isHorizontal(),t=this.hasCartesianAxis();return{width:this.width,height:this.height,title:this.getTitle(),legend:this.getLegend(),legendItems:this.getLegendItems().map((n)=>n.name),valueLabels:t&&!e?this.computeValueLabels():void 0,categoryLabels:t?this.getCategoryLabels():void 0,horizontal:e}}computeValueLabels(){let e=this.getValueDomain(),t=this.getValueAxis();return new Y(e.min,e.max,0,1,{min:t?.min,max:t?.max,splitCount:t?.splitCount}).ticks.map((r)=>t?.format?t.format(r):String(r))}drawTitle(e){let t=this.getTitle();if(!t?.text||!e.titleBox)return;let{ctx:n}=this;S(n,t.fontSize??16),n.fillStyle=t.color??"#323233",n.textAlign="center",n.textBaseline="top",n.fillText(t.text,this.width/2,e.titleBox.y)}drawLegend(e){let t=this.getLegend();if(t?.show===!1||!e.legendBox)return;let n=this.getLegendItems();if(n.length===0)return;new Ee(this.ctx).draw({box:e.legendBox,items:n,position:t?.position??"top",fontSize:t?.fontSize,color:t?.color,markerSize:t?.markerSize,itemGap:t?.itemGap})}buildCartesianScales(e){let{plot:t}=e,n=this.isHorizontal(),r=this.getValueDomain(),o=this.getCategoryLabels(),i=this.getValueAxis(),s=new Y(r.min,r.max,n?t.x:t.y+t.height,n?t.x+t.width:t.y,{min:i?.min,max:i?.max,splitCount:i?.splitCount}),a=new re(o,n?t.y:t.x,n?t.y+t.height:t.x+t.width);return{value:s,category:a}}drawCartesianAxis(e){let t=this.cartesian;if(!t)return;let{ctx:n}=this,{plot:r}=e,o=this.isHorizontal(),i=this.getValueAxis(),s=this.getCategoryAxis(),a=this.getCategoryLabels(),l=new we(n),c=t.value.ticks.map((p)=>i?.format?i.format(p):String(p));l.drawValueAxis({plot:r,scale:t.value,labels:c,horizontal:o,labelFontSize:i?.labelFontSize,labelColor:i?.labelColor,gridColor:i?.gridColor,gridLineWidth:i?.gridLineWidth,gridLineDash:i?.gridLineDash,showGrid:i?.showGrid??!0}),l.drawCategoryAxis({plot:r,scale:t.category,labels:a,horizontal:o,labelFontSize:s?.labelFontSize,labelColor:s?.labelColor,gridColor:s?.gridColor,gridLineWidth:s?.gridLineWidth,showGrid:s?.showGrid??!1})}seriesColor(e,t){return t??this.palette[e%this.palette.length]}getTooltipOption(){return this.option.tooltip}defaultTooltipLines(e){let t=[e.name];for(let n of e.items)t.push(`${n.name}: ${n.value}`);return t}drawTooltip(e){let t=this.getTooltipOption();if(t?.show===!1)return;let n=t?.formatter,r=n?n(e):this.defaultTooltipLines(e),o=Array.isArray(r)?r:[r];if(o.length===0)return;let{ctx:i}=this,s=12,a=10,l=8,c=18,p=4,u=6;S(i,s);let d=0;for(let R of o)d=Math.max(d,W(i,R,s));let m=d+a*2+p*2+u,f=o.length*c+l*2,y=this.plot,h,g;if(y&&this.isHorizontal()){if(h=y.x+y.width+8,g=e.y-f/2,h+m>this.width-4)h=y.x-m-8}else if(y){if(h=e.x+14,g=e.y-f/2,h+m>this.width-4)h=e.x-m-14}else if(h=e.x+14,g=e.y-f/2,h+m>this.width-4)h=e.x-m-14;h=Math.max(4,h),g=Math.max(4,Math.min(g,this.height-f-4)),i.save(),i.fillStyle="rgba(50, 50, 51, 0.92)",i.beginPath(),this.roundRectPath(h,g,m,f,6),i.fill(),i.textBaseline="middle",i.textAlign="left",o.forEach((R,v)=>{let x=g+l+c*v+c/2,T=v>0?e.items[v-1]?.color:void 0;if(T)i.fillStyle=T,i.beginPath(),i.arc(h+a+p,x,p,0,Math.PI*2),i.fill();i.fillStyle="#ffffff";let C=h+a+(T?p*2+u:0);i.fillText(R,C,x)}),i.restore()}roundRectPath(e,t,n,r,o){let i=this.ctx,s=Math.min(o,n/2,r/2);i.moveTo(e+s,t),i.lineTo(e+n-s,t),i.arcTo(e+n,t,e+n,t+r,s),i.arcTo(e+n,t+r,e,t+r,s),i.arcTo(e,t+r,e,t,s),i.arcTo(e,t,e+n,t,s),i.closePath()}}class oe extends A{getValueDomain(){let{series:e,yAxis:t,startFromZero:n=!1}=this.option,r=1/0,o=-1/0;for(let i of e)for(let s of i.data){if(s<r)r=s;if(s>o)o=s}if(!Number.isFinite(r)||!Number.isFinite(o))return{min:0,max:1};if(n&&r>0)r=0;if(t?.min!==void 0)r=Math.min(r,t.min);if(t?.max!==void 0)o=Math.max(o,t.max);return{min:r,max:o}}getCategoryLabels(){return this.option.xAxis.labels}getLegendItems(){return this.option.series.filter((e)=>e.name).map((e,t)=>({name:e.name,color:this.seriesColor(t,e.color)}))}drawSeries(e,t,n){let r=this.cartesian;if(!r)return;let{plot:o}=t,{value:i,category:s}=r,a=this.getHoverCategoryIndex(),l=n.series.map((c)=>c.data.map((p,u)=>({x:s.center(u),y:i.scale(p)})));if(a>=0){let c=s.center(a);e.save(),e.strokeStyle="#c8c9cc",e.lineWidth=1,e.setLineDash([4,3]),e.beginPath(),e.moveTo(c,o.y),e.lineTo(c,o.y+o.height),e.stroke(),e.restore()}n.series.forEach((c,p)=>{let u=l[p];if(u.length===0)return;let d=this.seriesColor(p,c.color),m=c.lineWidth??2;if(c.area)e.save(),e.fillStyle=d,e.globalAlpha=0.15,e.beginPath(),this.tracePath(e,u,c.smooth??!1),e.lineTo(u[u.length-1].x,o.y+o.height),e.lineTo(u[0].x,o.y+o.height),e.closePath(),e.fill(),e.restore();if(e.save(),e.strokeStyle=d,e.lineWidth=m,e.lineJoin="round",e.lineCap="round",e.beginPath(),this.tracePath(e,u,c.smooth??!1),e.stroke(),e.restore(),c.showSymbol!==!1){let f=Math.max(2.5,m+0.5);e.save(),e.fillStyle=d;for(let y=0;y<u.length;y+=1){let h=u[y],g=y===a?f*1.6:f;e.beginPath(),e.arc(h.x,h.y,g,0,Math.PI*2),e.fill()}e.restore()}})}hitTestSeries(e,t){let n=this.cartesian,r=this.plot;if(!n||!r)return null;if(t<r.y||t>r.y+r.height)return null;let o=this.option.xAxis.labels,i=-1,s=1/0;for(let l=0;l<o.length;l+=1){let c=Math.abs(n.category.center(l)-e);if(c<s)s=c,i=l}if(i<0||s>n.category.bandWidth/2)return null;let a=this.option.series.map((l,c)=>({name:l.name??`系列${c+1}`,value:l.data[i]??0,color:this.seriesColor(c,l.color)}));return{x:e,y:t,name:o[i],items:a}}getHoverCategoryIndex(){let e=this.hover;if(!e)return-1;return this.option.xAxis.labels.indexOf(e.name)}tracePath(e,t,n){if(t.length===0)return;if(e.moveTo(t[0].x,t[0].y),!n||t.length<3){for(let r=1;r<t.length;r+=1)e.lineTo(t[r].x,t[r].y);return}for(let r=0;r<t.length-1;r+=1){let o=t[Math.max(0,r-1)],i=t[r],s=t[r+1],a=t[Math.min(t.length-1,r+2)],l=i.x+(s.x-o.x)/6,c=i.y+(s.y-o.y)/6,p=s.x-(a.x-i.x)/6,u=s.y-(a.y-i.y)/6;e.bezierCurveTo(l,c,p,u,s.x,s.y)}}}class ie extends A{isHorizontal(){return this.option.horizontal??!1}getValueDomain(){let{series:e,yAxis:t}=this.option,n=0,r=0,o=Ve(e),i=Math.max(0,...e.map((s)=>s.data.length));for(let s=0;s<i;s+=1)for(let a of o){let l=0,c=0;for(let p of a){let u=p.data[s]??0;if(u>=0)l+=u;else c+=u}if(l>n)n=l;if(c<r)r=c}if(t?.min!==void 0)r=Math.min(r,t.min);if(t?.max!==void 0)n=Math.max(n,t.max);return{min:r,max:n}}getCategoryLabels(){return this.option.xAxis.labels}getLegendItems(){return this.option.series.filter((e)=>e.name).map((e,t)=>({name:e.name,color:this.seriesColor(t,e.color)}))}drawSeries(e,t,n){let r=this.cartesian;if(!r)return;let{value:o,category:i}=r,s=n.horizontal??!1,a=Ve(n.series),l=n.xAxis.labels.length,c=this.getHoverCategoryIndex();for(let p=0;p<l;p+=1){let u=a,d=u.length,m=n.series.map((h)=>h.barWidth).find((h)=>h!==void 0&&h>0),f=this.computeSlot(i,d,m),y=c===p;u.forEach((h,g)=>{let R=f.offset+g*f.size,v=0;h.forEach((x)=>{let T=x.data[p]??0,C=this.seriesColor(n.series.indexOf(x),x.color),w=y?wt(C,0.25):C;if(s){let N=o.scale(0),j=o.scale(v+T),_=Math.min(N,j),F=Math.abs(j-N),V=i.bandStart(p)+R;this.drawBar(e,{x:_,y:V,width:F,height:f.size,radius:x.borderRadius??0,color:w,roundSide:T>=0?"right":"left"})}else{let N=o.scale(v),j=o.scale(v+T),_=Math.min(N,j),F=Math.abs(j-N),V=i.bandStart(p)+R;this.drawBar(e,{x:V,y:_,width:f.size,height:F,radius:x.borderRadius??0,color:w,roundSide:T>=0?"top":"bottom"})}v+=T})})}}hitTestSeries(e,t){let n=this.cartesian;if(!n)return null;let r=this.option.horizontal??!1,o=this.getCategoryLabels();for(let i=0;i<o.length;i+=1){let s=n.category.bandStart(i),a=n.category.bandWidth;if(!(r?t>=s&&t<=s+a:e>=s&&e<=s+a))continue;let c=this.option.series.map((p,u)=>({name:p.name??`系列${u+1}`,value:p.data[i]??0,color:this.seriesColor(u,p.color)}));return{x:e,y:t,name:o[i],items:c}}return null}getHoverCategoryIndex(){let e=this.hover;if(!e)return-1;return this.getCategoryLabels().indexOf(e.name)}computeSlot(e,t,n){let r=e.bandWidth,o=e.innerWidth();if(n!==void 0)return{offset:(r-n*t)/2,size:n};let i=o/Math.max(1,t)*0.8,s=(r-o)/2,a=(o-i*t)/2;return{offset:s+a,size:i}}drawBar(e,t){if(t.width<=0||t.height<=0)return;e.save(),e.fillStyle=t.color,e.beginPath(),Tt(e,t,t.radius,t.roundSide),e.fill(),e.restore()}}function Ve(e){let t=[],n=new Map;for(let r of e)if(r.stack){let o=n.get(r.stack);if(!o)o=[],n.set(r.stack,o),t.push(o);o.push(r)}else t.push([r]);return t}function Tt(e,t,n,r){let{x:o,y:i,width:s,height:a}=t,l=Math.min(n,s/2,a/2);if(l<=0){e.rect(o,i,s,a);return}let c=r==="top"||r==="left",p=r==="top"||r==="right",u=r==="bottom"||r==="left",d=r==="bottom"||r==="right";if(e.moveTo(o+(c?l:0),i),e.lineTo(o+s-(p?l:0),i),p)e.arcTo(o+s,i,o+s,i+l,l);else e.lineTo(o+s,i);if(e.lineTo(o+s,i+a-(d?l:0)),d)e.arcTo(o+s,i+a,o+s-l,i+a,l);else e.lineTo(o+s,i+a);if(e.lineTo(o+(u?l:0),i+a),u)e.arcTo(o,i+a,o,i+a-l,l);else e.lineTo(o,i+a);if(e.lineTo(o,i+(c?l:0)),c)e.arcTo(o,i,o+l,i,l);else e.lineTo(o,i);e.closePath()}function wt(e,t){let n=Math.max(0,Math.min(1,t)),r=e.match(/^#([0-9a-f]{3,8})$/i);if(r){let i,s,a,l=r[1];if(l.length===3)i=parseInt(l[0]+l[0],16),s=parseInt(l[1]+l[1],16),a=parseInt(l[2]+l[2],16);else i=parseInt(l.slice(0,2),16),s=parseInt(l.slice(2,4),16),a=parseInt(l.slice(4,6),16);return i=Math.round(i+(255-i)*n),s=Math.round(s+(255-s)*n),a=Math.round(a+(255-a)*n),`rgb(${i}, ${s}, ${a})`}let o=e.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);if(o){let i=Math.round(parseInt(o[1])+(255-parseInt(o[1]))*n),s=Math.round(parseInt(o[2])+(255-parseInt(o[2]))*n),a=Math.round(parseInt(o[3])+(255-parseInt(o[3]))*n);return`rgb(${i}, ${s}, ${a})`}return e}var Se=Math.PI*2;class ae extends A{hasCartesianAxis(){return!1}getLegendItems(){return this.option.data.map((e,t)=>({name:e.name,color:e.color??this.seriesColor(t)}))}hitTestSeries(e,t){let n=this.plot;if(!n)return null;let r=n.x+n.width/2,o=n.y+n.height/2,i=Math.min(n.width,n.height)/2,s=se(this.option.radius??"60%",i),a=se(this.option.innerRadius??0,i),l=this.option.startAngle??-Math.PI/2,c=e-r,p=t-o,u=Math.hypot(c,p);if(u<a||u>s)return null;let d=this.option.data.filter((h)=>h.value>0),m=d.reduce((h,g)=>h+g.value,0);if(m<=0)return null;let f=Math.atan2(p,c);while(f<l)f+=Se;let y=l;for(let h=0;h<d.length;h+=1){let g=d[h],R=g.value/m*Se;if(f>=y&&f<=y+R){let v=Math.round(g.value/m*100);return{x:e,y:t,name:g.name,items:[{name:g.name,value:`${v}%`,color:g.color??this.seriesColor(h)}]}}y+=R}return null}drawSeries(e,t,n){let{plot:r}=t,o=r.x+r.width/2,i=r.y+r.height/2,s=Math.min(r.width,r.height)/2,a=se(n.radius??"60%",s),l=se(n.innerRadius??0,s),c=n.startAngle??-Math.PI/2,p=n.data.filter((m)=>m.value>0),u=p.reduce((m,f)=>m+f.value,0);if(u<=0||a<=0)return;let d=c;p.forEach((m,f)=>{let y=m.value/u*Se,h=m.color??this.seriesColor(f);if(e.save(),e.fillStyle=h,e.beginPath(),l>0)e.arc(o,i,a,d,d+y),e.arc(o,i,l,d+y,d,!0);else e.arc(o,i,a,d,d+y),e.lineTo(o,i);if(e.closePath(),e.fill(),e.strokeStyle="#ffffff",e.lineWidth=1,e.stroke(),e.restore(),n.showLabel!==!1){let g=d+y/2,R=u>0?Math.round(m.value/u*100):0,v=`${m.name} ${R}%`;if(n.labelPosition==="outside"){let x=n.labelLineLength??14,T=n.labelGap??6,C=Math.cos(g),w=Math.sin(g),N=o+C*a,j=i+w*a,_=o+C*(a+x),F=i+w*(a+x),V=C>=0?1:-1,qe=_+V*T,je=F;e.save(),e.strokeStyle=n.labelLineColor??"#c0c4cc",e.lineWidth=1,e.beginPath(),e.moveTo(N,j),e.lineTo(_,F),e.lineTo(qe,je),e.stroke(),e.restore(),S(e,n.labelFontSize??10),e.fillStyle=n.labelColor??"#323233",e.textAlign=V>0?"left":"right",e.textBaseline="middle",e.fillText(v,qe,je)}else{let x=(a+(l>0?l:0))/2*0.85,T=o+Math.cos(g)*x,C=i+Math.sin(g)*x;S(e,n.labelFontSize??10),e.fillStyle=n.labelColor??"#ffffff",e.textAlign="center",e.textBaseline="middle",e.fillText(v,T,C)}}d+=y})}}function se(e,t){if(typeof e==="number")return Math.max(0,e);let n=/^(\d+(?:\.\d+)?)%$/.exec(e);if(!n)return t;return Number(n[1])/100*t}class le extends A{hasCartesianAxis(){return!1}getLegendItems(){return this.option.series.filter((e)=>e.name).map((e,t)=>({name:e.name,color:this.seriesColor(t,e.color)}))}drawSeries(e,t,n){let{plot:r}=t,o=r.x+r.width/2,i=r.y+r.height/2,s=n.radius??Math.min(r.width,r.height)/2*0.6,a=n.indicators.length;if(a===0||s<=0)return;let l=n.startAngle??-Math.PI/2,c=We/a,p=Math.max(1,n.splitCount??5),u=n.gridColor??"#ebedf0",d=n.gridLineWidth??1,m=(h)=>l+h*c,f=(h,g)=>({x:o+Math.cos(h)*g,y:i+Math.sin(h)*g});for(let h=1;h<=p;h+=1){let g=s*h/p;e.save(),e.strokeStyle=u,e.lineWidth=d,e.beginPath();for(let R=0;R<a;R+=1){let v=f(m(R),g);if(R===0)e.moveTo(v.x,v.y);else e.lineTo(v.x,v.y)}e.closePath(),e.stroke(),e.restore()}e.save(),e.strokeStyle=u,e.lineWidth=d,e.beginPath();for(let h=0;h<a;h+=1){let g=f(m(h),s);e.moveTo(o,i),e.lineTo(g.x,g.y)}e.stroke(),e.restore();let y=n.labelFontSize??11;S(e,y),e.fillStyle=n.labelColor??"#323233";for(let h=0;h<a;h+=1){let g=f(m(h),s+12);e.textAlign=Math.abs(g.x-o)<1?"center":g.x>o?"left":"right",e.textBaseline=Math.abs(g.y-i)<1?"middle":g.y>i?"top":"bottom",e.fillText(n.indicators[h].name,g.x,g.y)}n.series.forEach((h,g)=>{let R=this.seriesColor(g,h.color),v=n.indicators.map((x,T)=>{let C=x.max??this.indicatorMax(n,T),w=h.data[T]??0,N=C>0?Math.max(0,Math.min(1,w/C)):0;return f(m(T),s*N)});if(h.area!==!1)e.save(),e.fillStyle=R,e.globalAlpha=0.2,e.beginPath(),this.tracePolygon(e,v),e.closePath(),e.fill(),e.restore();e.save(),e.strokeStyle=R,e.lineWidth=h.lineWidth??2,e.lineJoin="round",e.beginPath(),this.tracePolygon(e,v),e.closePath(),e.stroke(),e.restore()})}hitTestSeries(e,t){let n=this.plot;if(!n)return null;let r=n.x+n.width/2,o=n.y+n.height/2,i=this.option.radius??Math.min(n.width,n.height)/2*0.6,s=this.option.indicators.length;if(s===0)return null;let a=this.option.startAngle??-Math.PI/2,l=We/s,c=-1,p=24;for(let d=0;d<s;d+=1){let m=this.option.indicators[d].max??this.indicatorMax(this.option,d),f=a+d*l;for(let y=0;y<this.option.series.length;y+=1){let h=this.option.series[y].data[d]??0,g=m>0?Math.max(0,Math.min(1,h/m)):0,R=r+Math.cos(f)*i*g,v=o+Math.sin(f)*i*g,x=Math.hypot(e-R,t-v);if(x<p)p=x,c=d}}if(c<0)return null;let u=this.option.series.map((d,m)=>({name:d.name??`系列${m+1}`,value:d.data[c]??0,color:this.seriesColor(m,d.color)}));return{x:e,y:t,name:this.option.indicators[c].name,items:u}}indicatorMax(e,t){let n=0;for(let r of e.series){let o=r.data[t]??0;if(o>n)n=o}return n}tracePolygon(e,t){if(t.length===0)return;e.moveTo(t[0].x,t[0].y);for(let n=1;n<t.length;n+=1)e.lineTo(t[n].x,t[n].y)}}var We=Math.PI*2;function H(){let e=Et();if(typeof e.devicePixelRatio==="number"&&e.devicePixelRatio>0)return e.devicePixelRatio;return 1}function Et(){if(typeof globalThis<"u")return globalThis;return{}}function I(e){let n=St()[e];return typeof n==="object"&&n!==null?n:null}function ue(e){let t=e.platform??D()??"wx",n=I(t),r=n?.createSelectorQuery;if(typeof r!=="function")return Promise.reject(Error(`getMiniProgramCanvasNode: ${t}.createSelectorQuery is not available`));return new Promise((o,i)=>{let s=r.call(n);if(e.instance&&typeof s.in==="function")s=s.in(e.instance);if(typeof s.select!=="function"){i(Error(`${t}.createSelectorQuery().select is not available`));return}s.select(e.selector).fields({node:!0,size:!0}).exec((a)=>{let l=Array.isArray(a)?a[0]:void 0,c=l?.node;if(!c||typeof c.getContext!=="function"){i(Error(`getMiniProgramCanvasNode: canvas node not found for "${e.selector}"`));return}let p=l?.width,u=l?.height;if(typeof p==="number"&&p>0&&typeof u==="number"&&u>0){let d=ce(t);c.logicalWidth=p,c.logicalHeight=u,c.pixelRatio=d,c.width=Math.round(p*d),c.height=Math.round(u*d)}o(c)})})}function D(){if(I("wx"))return"wx";if(I("my"))return"my";if(I("tt"))return"tt";return null}function ce(e){let t=e??D()??"wx",n=I(t),r=n?.getSystemInfoSync;if(typeof r==="function")try{let o=r.call(n);if(typeof o.pixelRatio==="number"&&o.pixelRatio>0)return o.pixelRatio}catch{}return H()}function U(e,t={}){let n=e.getContext("2d");if(!n)throw Error("resolveMiniProgramCanvas: 2d context is not available");let r=t.dpr??e.pixelRatio??ce(),o=t.width??e.logicalWidth??e.width,i=t.height??e.logicalHeight??e.height;return{ctx:n,width:o,height:i,dpr:r,palette:t.palette}}function St(){if(typeof globalThis<"u")return globalThis;return{}}function G(e,t={}){if(!e)throw Error("resolveWebCanvas: canvas element is required");let n=e.getContext("2d");if(!n)throw Error("resolveWebCanvas: 2d context is not available");let r=t.dpr??H(),o=t.width??(e.clientWidth||e.width),i=t.height??(e.clientHeight||e.height);return e.width=Math.round(o*r),e.height=Math.round(i*r),{ctx:n,width:o,height:i,dpr:r,palette:t.palette}}function Q(e,t){switch(t.type){case"line":return new oe(e,t);case"bar":return new ie(e,t);case"pie":return new ae(e,t);case"radar":return new le(e,t);default:throw Error(`createChart: unsupported chart type "${t.type}"`)}}function Pt(e,t,n={}){return Q(G(e,n),t)}function Lt(e,t,n={}){return Q(U(e,n),t)}function $e(e){throw Error("resolveNativeCanvas is not implemented yet. Native app support (iOS/Android/HarmonyOS) is planned for a future phase; implement ICanvas2D on the host side and fill in this resolver.")}function O(e){if(e===void 0||e===null)return[];return Array.isArray(e)?e:[e]}function Ue(e){return typeof e==="object"&&e!==null&&"component"in e}function Ge(e){return typeof e==="object"&&e!==null&&"tag"in e&&e.tag!=="slot"}function Ke(e){return typeof e==="object"&&e!==null&&"tag"in e&&e.tag==="slot"}function Xe(e,t,n,r,o,i){return{tag:e,props:t,children:n,listeners:r,key:o,directions:i}}function Mt(e,t={}){return{tag:e,...t}}function b(e){return(t={})=>Mt(e,t)}var At=b("div"),Zn=b("span"),er=b("p"),tr=b("button"),nr=b("input"),rr=b("section"),or=b("main"),ir=b("header"),sr=b("footer"),ar=b("nav"),lr=b("article"),ur=b("aside"),cr=b("h1"),pr=b("h2"),dr=b("h3"),hr=b("h4"),mr=b("h5"),fr=b("h6"),gr=b("strong"),br=b("em"),yr=b("small"),vr=b("pre"),Cr=b("code"),Rr=b("blockquote"),xr=b("ul"),Tr=b("ol"),wr=b("li"),Er=b("a"),Sr=b("img"),Pr=b("form"),Lr=b("label"),Mr=b("textarea"),Ar=b("select"),Ir=b("option"),Or=b("table"),kr=b("thead"),Nr=b("tbody"),Hr=b("tr"),Dr=b("th"),Br=b("td");var z=Symbol("is_reactive"),P=Symbol("is_readonly"),It=Symbol("is_ref"),Ye=["push","pop","shift","unshift","splice","sort","reverse"];function L(e,t){return Boolean(Reflect.get(e,t))}function k(e){return e!==null&&typeof e==="object"}class Pe{pending=new Set;flushing=!1;flushPromise=null;flushResolve=null;enqueue(e){if(this.pending.has(e))return;if(this.pending.add(e),!this.flushing)queueMicrotask(()=>this.flush())}flush(){if(this.flushing)return;this.flushing=!0;try{while(this.pending.size>0){let e=Array.from(this.pending);this.pending.clear();for(let t of e)if(t.active)t()}}finally{this.flushing=!1;let e=this.flushResolve;this.flushResolve=null,this.flushPromise=null,e?.()}}nextTick(){if(!this.flushing&&this.pending.size===0)return Promise.resolve();if(this.flushPromise)return this.flushPromise;return this.flushPromise=new Promise((e)=>{this.flushResolve=e}),this.flushPromise}}var Ot=0,Le=new Pe;class M{static instance;activeEffect=null;effectStack=[];targetMap=new WeakMap;reactiveMap=new WeakMap;readonlyMap=new WeakMap;proxyMap=new WeakMap;constructor(){}static getInstance(){if(!M.instance)M.instance=new M;return M.instance}reactive(e){if(!k(e))return console.warn("reactive: target must be an object"),e;if(kt(e))return e;if(this.reactiveMap.has(e))return this.reactiveMap.get(e);if(Array.isArray(e))return this.createReactiveArray(e);let t=new Proxy(e,{get:(n,r)=>{if(r===z)return!0;if(r===P)return!1;this.track(n,r);let o=Reflect.get(n,r);if(k(o)&&!L(o,P))return this.reactive(o);return o},set:(n,r,o)=>{if(L(n,P))return console.warn(`Cannot set property ${String(r)} on readonly object`),!1;let i=Reflect.get(n,r);if(k(o)&&!L(o,z)&&!L(o,P))o=this.reactive(o);let s=Reflect.set(n,r,o);if(i!==o)this.trigger(n,r);return s},deleteProperty:(n,r)=>{if(L(n,P))return console.warn(`Cannot delete property ${String(r)} on readonly object`),!1;let o=r in n,i=Reflect.deleteProperty(n,r);if(o)this.trigger(n,r);return i}});return this.reactiveMap.set(e,t),this.proxyMap.set(t,e),t}toRawValue(e){if(k(e)&&this.proxyMap.has(e))return this.proxyMap.get(e);return e}createReactiveArray(e){if(this.reactiveMap.has(e))return this.reactiveMap.get(e);let t=new Proxy(e,{get:(n,r)=>{if(r===z)return!0;if(r===P)return!1;this.track(n,r);let o=Reflect.get(n,r);if(typeof r==="string"&&(r==="includes"||r==="indexOf"||r==="lastIndexOf")){this.track(n,"length");for(let s=0;s<n.length;s++)this.track(n,String(s));let i=o;return(...s)=>{let a=i.apply(n,s);if(a===!1||a===-1){let l=n.map((p)=>this.toRawValue(p));return l[r].apply(l,s.map((p)=>this.toRawValue(p)))}return a}}if(typeof r==="string"&&Ye.includes(r))return(...i)=>{let a=o.apply(n,i);return this.trigger(n,"length"),this.trigger(n,r),a};if(k(o)&&!L(o,P))return this.reactive(o);return o},set:(n,r,o)=>{if(L(n,P))return console.warn(`Cannot set property ${String(r)} on readonly object`),!1;let i=Reflect.get(n,r);if(k(o)&&!L(o,z)&&!L(o,P))o=this.reactive(o);let s=Reflect.set(n,r,o);if(i!==o){if(this.trigger(n,r),typeof r==="string"&&!isNaN(Number(r)))this.trigger(n,"length")}return s},deleteProperty:(n,r)=>{if(L(n,P))return console.warn(`Cannot delete property ${String(r)} on readonly object`),!1;let o=r in n,i=Reflect.deleteProperty(n,r);if(o)this.trigger(n,r),this.trigger(n,"length");return i}});return this.reactiveMap.set(e,t),this.proxyMap.set(t,e),t}readonly(e){if(!k(e))return console.warn("readonly: target must be an object"),e;if(L(e,P))return e;if(this.readonlyMap.has(e))return this.readonlyMap.get(e);let t=new Proxy(e,{get:(n,r)=>{if(r===z)return!1;if(r===P)return!0;let o=Reflect.get(n,r);if(k(o))return this.readonly(o);return o},set:()=>(console.warn("Cannot set property on readonly object"),!1),deleteProperty:()=>(console.warn("Cannot delete property on readonly object"),!1)});return this.readonlyMap.set(e,t),t}effect(e,t){let{lazy:n=!1,scheduler:r,throwOnError:o=!1}=t||{},i=()=>{if(!i.active)return e();try{return this.cleanup(i),this.effectStack.push(i),this.activeEffect=i,e()}catch(s){if(o)throw s;console.error("Effect error:",s);return}finally{this.effectStack.pop(),this.activeEffect=this.effectStack[this.effectStack.length-1]??null}};if(i.id=Ot++,i.deps=[],i.active=!0,i.scheduler=r,!n)i();return i}runWithEffect(e,t){this.effectStack.push(e),this.activeEffect=e;try{return t()}finally{this.effectStack.pop(),this.activeEffect=this.effectStack[this.effectStack.length-1]??null}}computed(e){let t=!0,n,r={},o=()=>{this.track(r,"value")},i=this.effect(()=>{n=e(),t=!1},{lazy:!0,scheduler:()=>{if(!t)t=!0,this.trigger(r,"value")}});return{get value(){if(t)i();return o(),n}}}cleanup(e){e.deps.forEach((t)=>{t.delete(e)}),e.deps.length=0}track(e,t){if(!this.activeEffect||!this.activeEffect.active)return;let n=this.targetMap.get(e);if(!n)n=new Map,this.targetMap.set(e,n);let r=n.get(t);if(!r)r=new Set,n.set(t,r);if(!r.has(this.activeEffect))r.add(this.activeEffect),this.activeEffect.deps.push(r)}trigger(e,t){let n=this.targetMap.get(e);if(!n)return;let r=n.get(t);if(!r)return;new Set(r).forEach((i)=>{if(i.active)if(i.scheduler)i.scheduler(i);else i()})}stop(e){if(e.active)this.cleanup(e),e.active=!1}}function Qe(e){return M.getInstance().reactive(e)}function B(e,t){return M.getInstance().effect(e,t)}function q(e){M.getInstance().stop(e)}function kt(e){return k(e)&&L(e,z)}function Je(e){let t=e.split(".");if(e.length===0||t.some((n)=>n.length===0||n==="__proto__"||n==="prototype"||n==="constructor"))throw Error(`Invalid model path "${e}"`);return t}function Ae(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function Ze(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Nt(e){return typeof e==="string"?e:e.path}function Ie(e,t){let n=e;for(let r of Je(t)){if(!Ae(n))throw Error(`Invalid model path "${t}"`);if(!Ze(n,r)){if(r in n)throw Error(`Invalid model path "${t}"`);return}n=n[r]}return n}function Ht(e,t,n){let r=Je(t),o=e;for(let s of r.slice(0,-1)){if(!Ze(o,s)){if(s in o)throw Error(`Invalid model path "${t}"`);o[s]={}}else if(!Ae(o[s]))throw Error(`Invalid model path "${t}"`);let a=o[s];if(!Ae(a))throw Error(`Invalid model path "${t}"`);o=a}let i=r[r.length-1];o[i]=n}function Me(e,t){if(typeof e!=="string"&&e.format)return e.format(t);return t===void 0||t===null?"":String(t)}function Dt(e,t){if(typeof e!=="string"&&e.parse)return e.parse(t);return t}function Bt(e,t,n){if(e instanceof HTMLInputElement){if(e.type==="checkbox"){e.checked=Array.isArray(n)?n.some((r)=>String(r)===e.value):Boolean(n);return}if(e.type==="radio"){e.checked=n===e.value;return}e.value=Me(t,n);return}if(e instanceof HTMLTextAreaElement){e.value=Me(t,n);return}if(e instanceof HTMLSelectElement){if(e.multiple){let r=Array.isArray(n)?new Set(n.map(String)):new Set;for(let o=0;o<e.options.length;o+=1){let i=e.options.item(o);if(!i)continue;i.selected=r.has(i.value)}return}e.value=Me(t,n)}}function qt(e,t){if(e instanceof HTMLInputElement){if(e.type==="checkbox"){if(Array.isArray(t)){let n=t.filter((r)=>String(r)!==e.value);return e.checked?[...n,e.value]:n}return e.checked}if(e.type==="radio")return e.checked?e.value:t;return e.value}if(e instanceof HTMLTextAreaElement)return e.value;if(e instanceof HTMLSelectElement){if(!e.multiple)return e.value;let n=[];for(let r=0;r<e.selectedOptions.length;r+=1){let o=e.selectedOptions.item(r);if(o)n.push(o.value)}return n}return}class Oe{bindings=new WeakMap;bind(e,t,n){if(!this.isSupportedControl(e))return;let r=this.bindings.get(e);if(r&&this.sameBinding(r,t))return;this.cleanup(e);let o=Nt(t),i=()=>Bt(e,t,Ie(n,o)),s=e instanceof HTMLTextAreaElement||e instanceof HTMLInputElement&&!["checkbox","radio"].includes(e.type)?"input":"change",a=()=>{let c=Ie(n,o);Ht(n,o,Dt(t,qt(e,c)))};e.addEventListener(s,a);let l=B(i);this.bindings.set(e,{binding:t,path:o,parse:typeof t==="string"?void 0:t.parse,format:typeof t==="string"?void 0:t.format,eventName:s,listener:a,effect:l})}cleanup(e){let t=this.bindings.get(e);if(!t)return;e.removeEventListener(t.eventName,t.listener),q(t.effect),this.bindings.delete(e)}isSupportedControl(e){return e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement}sameBinding(e,t){if(typeof e.binding==="string"||typeof t==="string")return e.binding===t;return e.path===t.path&&e.parse===t.parse&&e.format===t.format}}var et=":root{--tu-rpx:calc(min(100vw, 750px) / 750);}",jt=/(-?\d+(?:\.\d+)?)rpx/g;function pe(e){return String(e).replace(jt,(t,n)=>`calc(${n} * var(--tu-rpx))`)}function de(e){return/^on[A-Z]/.test(e)||/^on[a-z]/.test(e)}function tt(e){return e.slice(2).toLowerCase()}function nt(e){let[t,...n]=e.split(".");return{eventName:t,modifiers:new Set(n)}}function rt(e,t){let n=(r)=>{if(t.has("stop"))r.stopPropagation();if(t.has("prevent"))r.preventDefault();if(t.has("self")&&r.currentTarget!==r.target)return;if(t.has("once"))r.currentTarget.removeEventListener(r.type,n);e(r)};return n}function ot(e,t,n){let r=t.includes("-")?t:t.replace(/[A-Z]/g,(o)=>`-${o.toLowerCase()}`);e.setProperty(r,pe(n))}class ke{styleElement=null;styles=new Map;constructor(){}addStyle(e,t){this.styles.set(e,t),this.updateStyles()}removeStyle(e){this.styles.delete(e),this.updateStyles()}clearStyles(){if(this.styles.clear(),this.styleElement)this.styleElement.textContent=""}destroy(){if(this.clearStyles(),this.styleElement)this.styleElement.remove(),this.styleElement=null}ensureStyleElement(){if(!this.styleElement){let e=document.createElement("style");document.head.appendChild(e),this.styleElement=e}return this.styleElement}convertToCSS(e){return Object.entries(e).map(([t,n])=>`${t.replace(/([A-Z])/g,"-$1").toLowerCase()}: ${pe(n)};`).join(`
2
2
  `)}updateStyles(){if(this.styles.size===0){if(this.styleElement)this.styleElement.textContent="";return}let e=this.ensureStyleElement(),t=et+`
3
3
  `;this.styles.forEach((n)=>{if(t+=`${n.selector} {
4
4
  ${this.convertToCSS(n.properties)}
@@ -11,7 +11,7 @@ ${n.selector} {
11
11
  ${this.convertToCSS(o)}
12
12
  }
13
13
  }
14
- `})}),e.textContent=t}}class J{state;bindings=[];templateRegex=/{{(.*?)}}/g;constructor(e){this.state=e;if(!e||typeof e!=="object")throw Error("TemplateEngine requires a valid state object")}parseTemplate(e){if(typeof e!=="string")e=String(e);let t=document.createTextNode("");this.templateRegex.lastIndex=0;let n=Array.from(e.matchAll(this.templateRegex));if(n&&n.length>0)this.setupReactiveBindings(t,e,n);else t.textContent=e;return t}setupReactiveBindings(e,t,n){let r=new Set,o=this.evaluateTemplate(t,n,r);e.textContent=o;let i=B(()=>{try{let s=this.evaluateTemplate(t,n,r);if(e.textContent!==s)e.textContent=s}catch(s){console.error("Template update error:",s),e.textContent=`Error: ${s instanceof Error?s.message:"Unknown error"}`}});this.bindings.push({node:e,originalText:t,effect:i})}evaluateTemplate(e,t,n){let r=e;return t.forEach((o)=>{let i=o[1]?.trim();if(i){n.add(i);let s=this.getValueFromState(i),a=s===void 0||s===null?"":String(s);r=r.replace(o[0],a)}}),r}getValueFromState(e){if(!e)return;let t=e.split("."),n=this.state;for(let r of t){if(!n||typeof n!=="object")return;n=n[r]}return n}clearBindings(){this.bindings.forEach((e)=>{q(e.effect)}),this.bindings=[]}getBindingCount(){return this.bindings.length}hasExpressions(e){return this.templateRegex.lastIndex=0,this.templateRegex.test(e)}extractKeys(e){let t=[],n,r=new RegExp(this.templateRegex,"g");while((n=r.exec(e))!==null){let o=n[1]?.trim();if(o)t.push(o)}return t}evaluateTemplateValue(e){this.templateRegex.lastIndex=0;let t=Array.from(e.matchAll(this.templateRegex));if(!t||t.length===0)return e;let n=new Set;return this.evaluateTemplate(e,t,n)}}class Z{props;vnode=null;el=null;renderer=new de;templateEngine;childComponents=new Set;eventListeners={};providers=new Map;updateEffect;appContext=null;parentComponent=null;elementChangeListener=null;styleManager;state;mounted=!1;constructor(e={}){this.props=e;this.styleManager=new ke,this.state=Qe(this.initState()??{}),this.templateEngine=new J(this.state),this.initStyles(),this.updateEffect=B(()=>{if(this.mounted)try{this.update()}catch(t){if(!this.dispatchError(t))throw t}},{throwOnError:!0,scheduler:(t)=>{Le.enqueue(t)}})}mount(e){if(!e||!(e instanceof HTMLElement))throw Error("Invalid container element");try{e.appendChild(this.mountToNode())}catch(t){throw console.error("组件渲染错误:",t),t}}mountToNode(){if(this.mounted&&this.el)return this.el;return this.beforeMount(),this.el=A.getInstance().runWithEffect(this.updateEffect,()=>{try{return this.vnode=this.render(),this.renderer.mount(this.vnode,this.createRenderContext())}catch(e){if(this.dispatchError(e))return document.createComment("error-boundary");throw e}}),this.mounted=!0,this.onMounted(),this.el}update(){if(!this.el||!this.vnode)return;this.beforeUpdate();let e=this.vnode,t=this.el;if(this.el=A.getInstance().runWithEffect(this.updateEffect,()=>{let n=this.render(),r=this.renderer.patch(e,n,t,this.createRenderContext());return this.vnode=n,r}),t!==this.el)this.elementChangeListener?.(t,this.el);this.onUpdated(),this.onPropsChange()}unmount(){if(!this.mounted)return;if(this.beforeUnmount(),this.vnode&&this.el)this.renderer.unmount(this.vnode,this.el,this.createRenderContext());if(this.childComponents.clear(),Object.keys(this.eventListeners).forEach((e)=>{this.eventListeners[e].clear(),delete this.eventListeners[e]}),this.providers.clear(),this.parentComponent=null,this.elementChangeListener=null,this.templateEngine.clearBindings(),this.styleManager.destroy(),q(this.updateEffect),this.el?.parentNode)this.el.parentNode.removeChild(this.el);this.el=null,this.vnode=null,this.mounted=!1,this.onUnmounted()}setProps(e){if(this.props={...this.props,...e},this.mounted)Le.enqueue(this.updateEffect)}setState(e){Object.assign(this.state,e)}setAppContext(e){this.appContext=e,this.childComponents.forEach((t)=>{t.setAppContext?.(e)})}setParentComponent(e){this.parentComponent=e}getParentComponent(){return this.parentComponent}setElementChangeListener(e){this.elementChangeListener=e}provide(e,t){this.providers.set(e,t)}inject(e,t){let n=this.resolveInjection(e);return n.found?n.value:t}resolveInjection(e){if(this.providers.has(e))return{found:!0,value:this.providers.get(e)};if(this.parentComponent?.resolveInjection)return this.parentComponent.resolveInjection(e);return this.resolveAppInjection(e)}getElement(){return this.el}beforeMount(){}onMounted(){}beforeUpdate(){}onUpdated(){}onPropsChange(){}beforeUnmount(){}onUnmounted(){}dispatchError(e){let t=this.getParentComponent();while(t){let n=t;if(typeof n.onErrorCaptured==="function"){if(n.onErrorCaptured(e,this)===!1)return!0}t=t.getParentComponent?.()??null}return!1}getContext(){return this.appContext}get router(){return this.getRouterFrom(this.appContext)??this.getRouterFromGlobalApp()}emit(e,...t){this.eventListeners[e]?.forEach((n)=>{n(...t)})}on(e,t){if(!this.eventListeners[e])this.eventListeners[e]=new Set;return this.eventListeners[e].add(t),()=>this.off(e,t)}off(e,t){this.eventListeners[e]?.delete(t)}createRenderContext(){return{appContext:this.appContext,templateEngine:this.templateEngine,renderer:this.renderer,slots:this.collectSlots(),registerChild:(e)=>{this.childComponents.add(e),e.setParentComponent?.(this),e.setAppContext?.(this.appContext)},unregisterChild:(e)=>{this.childComponents.delete(e),e.setParentComponent?.(null)}}}collectSlots(){let e={default:[]};return O(this.props.children).forEach((n)=>{let r=this.getSlotName(n);if(!e[r])e[r]=[];e[r].push(this.normalizeSlotChild(n))}),e}getSlotName(e){if(typeof e==="string")return"default";return"slot"in e&&typeof e.slot==="string"?e.slot:"default"}normalizeSlotChild(e){if(typeof e==="string"||!("slot"in e))return e;let t={...e};return delete t.slot,t}getRouterFrom(e){if(!e||typeof e!=="object"||!("router"in e))return;return e.router}getRouterFromGlobalApp(){let e=globalThis.__APP__;return this.getRouterFrom(e)}resolveAppInjection(e){if(!this.appContext||typeof this.appContext!=="object")return{found:!1,value:void 0};return this.appContext.app?.resolveInjection?.(e)??{found:!1,value:void 0}}}var zt=null;function it(){return zt}var st="http://www.w3.org/2000/svg",_t=new Set(["svg","g","defs","rect","circle","ellipse","line","polyline","polygon","path","text","tspan","textPath","use","symbol","marker","linearGradient","radialGradient","stop","pattern","mask","clipPath","foreignObject"]);class me{listeners=new WeakMap;effects=new WeakMap;modelBindings=new Oe;matches(e){return typeof e==="object"&&e!==null&&Ge(e)}mount(e,t){if(e.directions?.if===!1)return document.createComment("if");let n=e.tag==="navigator",r=n?document.createElement("a"):_t.has(e.tag)?document.createElementNS(st,e.tag):document.createElement(e.tag),o=e.props??{};if(n){let{url:i,openType:s,...a}=o,l=typeof i==="string"?i:"#";r.setAttribute("href",l),r.addEventListener("click",(c)=>{let p=it();if(p)c.preventDefault(),p.push(r.getAttribute("href")??"#")}),this.applyProps(r,{},a,t)}else this.applyProps(r,{},o,t);return this.updateListeners(r,{},this.collectListeners(e)),this.mountChildren(r,e,t),this.applyDirections(r,void 0,e.directions,t),r}patch(e,t,n,r){if(e.tag!==t.tag||n.nodeType===Node.COMMENT_NODE){let i=this.mount(t,r);return n.parentNode?.replaceChild(i,n),this.unmount(e,n,r),i}if(!(n instanceof Element))return n;if(t.directions?.if===!1){let i=document.createComment("if");return n.parentNode?.replaceChild(i,n),this.unmount(e,n,r),i}if(t.tag==="navigator"||e.tag==="navigator"){let i=e.props??{},s=t.props??{},a=typeof i.url==="string"?i.url:"",l=typeof s.url==="string"?s.url:"";if(a!==l)n.setAttribute("href",l);let c={...s};delete c.url,delete c.openType,this.applyProps(n,i,c,r)}else this.applyProps(n,e.props??{},t.props??{},r);return this.updateListeners(n,this.collectListeners(e),this.collectListeners(t)),this.updateChildren(n,e,t,r),this.applyDirections(n,e.directions,t.directions,r),n}unmount(e,t,n){if(!(t instanceof Element))return;this.effects.get(t)?.forEach((r)=>q(r)),this.effects.delete(t),this.listeners.get(t)?.forEach(({eventName:r,listener:o})=>{t.removeEventListener(r,o)}),this.listeners.delete(t),this.modelBindings.cleanup(t),this.unmountChildren(t,e,n)}mountChildren(e,t,n){O(t.children).forEach((r)=>{e.appendChild(n.renderer.mount(r,n))})}updateChildren(e,t,n,r){this.updateOrdinaryChildren(e,O(t.children),O(n.children),r)}unmountChildren(e,t,n){O(t.children).forEach((r,o)=>{let i=e.childNodes[o];if(i)n.renderer.unmount(r,i,n)})}applyProps(e,t,n,r){Object.keys(t).forEach((o)=>{if(pe(o)||o in n)return;if(o==="className"||o==="class")e.removeAttribute("class");else if(o==="style")e.removeAttribute("style");else if(o==="value"&&typeof e==="object"&&e!==null&&"value"in e)e.value="";else e.removeAttribute(he(o))}),Object.entries(n).forEach(([o,i])=>{if(pe(o))return;if(t[o]===i)return;if(o==="className"||o==="class"){if(e.namespaceURI===st)e.setAttribute("class",String(i??""));else e.className=String(i??"");return}if(o==="value"&&typeof e==="object"&&e!==null&&"value"in e){e.value=String(i??"");return}if(o==="style"&&typeof i==="object"&&i!==null){e.removeAttribute("style");let s=e.style;Object.entries(i).forEach(([a,l])=>{ot(s,a,l)});return}if(i===!1||i===void 0||i===null){e.removeAttribute(he(o));return}if(i===!0){e.setAttribute(he(o),"");return}if(typeof i==="string"&&r.templateEngine.hasExpressions(i)){this.setupReactiveAttribute(e,o,i,r);return}e.setAttribute(he(o),String(i))})}applyDirections(e,t,n,r){if(n&&"show"in n)e.style.display=n.show?"":"none";else if(t&&"show"in t)e.style.display="";if(!n?.model){this.modelBindings.cleanup(e);return}this.modelBindings.bind(e,n.model,r.templateEngine.state)}updateOrdinaryChildren(e,t,n,r){if(this.assertNoDuplicateKeys(t),this.assertNoDuplicateKeys(n),this.hasOnlyKeyedChildren(t,n)){this.updateKeyedChildren(e,t,n,r);return}let o=Math.min(t.length,n.length);for(let i=0;i<o;i+=1){let s=e.childNodes[i];if(!s){e.appendChild(r.renderer.mount(n[i],r));continue}r.renderer.patch(t[i],n[i],s,r)}for(let i=o;i<n.length;i+=1)e.appendChild(r.renderer.mount(n[i],r));for(let i=t.length-1;i>=n.length;i-=1){let s=e.childNodes[i];if(s){if(r.renderer.unmount(t[i],s,r),s.parentNode===e)e.removeChild(s)}}}updateKeyedChildren(e,t,n,r){let o=t.map((a,l)=>({vnode:a,node:e.childNodes[l],index:l})),i=new Map,s=new Set;o.forEach((a)=>{let l=this.getVNodeKey(a.vnode);if(l!==void 0&&a.node)i.set(l,{vnode:a.vnode,node:a.node,index:a.index})}),n.forEach((a,l)=>{let c=this.getVNodeKey(a),p=c===void 0?void 0:i.get(c),u;if(p)u=r.renderer.patch(p.vnode,a,p.node,r),s.add(p.index);else u=r.renderer.mount(a,r);let d=e.childNodes[l]??null;if(u!==d)e.insertBefore(u,d)}),o.forEach((a)=>{if(!a.node||s.has(a.index))return;if(r.renderer.unmount(a.vnode,a.node,r),a.node.parentNode===e)e.removeChild(a.node)})}hasOnlyKeyedChildren(e,t){return[...e,...t].every((n)=>this.getVNodeKey(n)!==void 0)}assertNoDuplicateKeys(e){let t=new Set;e.forEach((n)=>{let r=this.getVNodeKey(n);if(r===void 0)return;if(t.has(r))throw Error(`Duplicate key "${r}"`);t.add(r)})}getVNodeKey(e){if(typeof e==="string")return;return e.key}collectListeners(e){let t={};return Object.entries(e.props??{}).forEach(([n,r])=>{if(pe(n)&&typeof r==="function")t[tt(n)]=r}),{...t,...e.listeners??{}}}updateListeners(e,t,n){let r=this.listeners.get(e)??new Map,o=new Set(Object.keys(t)),i=new Set(Object.keys(n));o.forEach((s)=>{if(!i.has(s)||t[s]!==n[s]){let a=r.get(s);if(a)e.removeEventListener(a.eventName,a.listener),r.delete(s)}}),i.forEach((s)=>{if(!o.has(s)||t[s]!==n[s]){let{eventName:a,modifiers:l}=nt(s),c=typeof e.tagName==="string"&&e.tagName.toLowerCase()==="textarea",p=a==="confirm"&&!c?"keydown":a,u=rt((d)=>{if(p==="keydown"){if(d.key!=="Enter")return}n[s](d)},l);e.addEventListener(p,u),r.set(s,{eventName:p,listener:u})}}),this.listeners.set(e,r)}setupReactiveAttribute(e,t,n,r){let o=B(()=>{e.setAttribute(t,r.templateEngine.evaluateTemplateValue(n))});this.trackEffect(e,o)}trackEffect(e,t){let n=this.effects.get(e)??new Set;n.add(t),this.effects.set(e,n)}}function he(e){if(e.startsWith("data")&&e.length>4)return`data${e.slice(4).replace(/[A-Z]/g,(t)=>`-${t.toLowerCase()}`)}`;if(e==="tabIndex"||e==="colSpan"||e==="htmlFor")return e.toLowerCase();return e}class de{strategies;constructor(){this.strategies=[new at,new lt,new ut,new me]}mount(e,t){return this.findStrategy(e).mount(e,t)}patch(e,t,n,r){let o=this.findStrategy(e),i=this.findStrategy(t);if(o!==i){let s=i.mount(t,r);return n.parentNode?.replaceChild(s,n),o.unmount(e,n,r),s}return o.patch(e,t,n,r)}unmount(e,t,n){this.findStrategy(e).unmount(e,t,n)}findStrategy(e){let t=this.strategies.find((n)=>n.matches(e));if(!t)throw Error("No render strategy found for vnode");return t}}class at{matches(e){return typeof e==="string"}mount(e,t){return t.templateEngine.parseTemplate(e)}patch(e,t,n,r){if(e===t)return n;let o=this.mount(t,r);return n.parentNode?.replaceChild(o,n),o}unmount(){}}class lt{instances=new WeakMap;instanceNodes=new Map;emitterUnsubscribers=new WeakMap;matches(e){return typeof e==="object"&&e!==null&&Ue(e)}mount(e,t){if(e.directions?.if===!1)return document.createComment("if");let r=new e.component(this.createProps(e));if(t.appContext&&r.setAppContext)r.setAppContext(t.appContext);this.syncEmitters(r,e.emitters??{}),t.registerChild(r);let o=r.mountToNode();return this.trackInstanceNode(r,o),r.setElementChangeListener?.((i,s)=>{this.trackInstanceNode(r,i),this.trackInstanceNode(r,s)}),o}patch(e,t,n,r){if(n.nodeType===Node.COMMENT_NODE){let s=this.mount(t,r);return n.parentNode?.replaceChild(s,n),s}if(t.directions?.if===!1){let s=document.createComment("if");return n.parentNode?.replaceChild(s,n),this.unmount(e,n,r),s}let o=this.instances.get(n);if(o&&e.component===t.component){this.syncEmitters(o,t.emitters??{}),o.setProps(this.createProps(t));let s=o.getElement()??n;return this.trackInstanceNode(o,s),s}let i=this.mount(t,r);return n.parentNode?.replaceChild(i,n),this.unmount(e,n,r),i}unmount(e,t,n){let r=this.instances.get(t);if(r)this.clearEmitters(r),r.unmount(),this.clearInstanceNodes(r),n.unregisterChild(r)}createProps(e){return{...e.props??{},children:O(e.children)}}syncEmitters(e,t){let n=this.emitterUnsubscribers.get(e)??new Map;n.forEach(({listener:r,unsubscribe:o},i)=>{let s=t[i];if(!s||s!==r)o(),n.delete(i)}),Object.entries(t).forEach(([r,o])=>{if(n.get(r)?.listener===o)return;n.set(r,{listener:o,unsubscribe:e.on(r,o)})}),this.emitterUnsubscribers.set(e,n)}clearEmitters(e){this.emitterUnsubscribers.get(e)?.forEach(({unsubscribe:t})=>{t()}),this.emitterUnsubscribers.delete(e)}trackInstanceNode(e,t){this.instances.set(t,e);let n=this.instanceNodes.get(e)??new Set;n.add(t),this.instanceNodes.set(e,n)}clearInstanceNodes(e){this.instanceNodes.get(e)?.forEach((t)=>{this.instances.delete(t)}),this.instanceNodes.delete(e)}}class ut{renderedChildren=new WeakMap;matches(e){return typeof e==="object"&&e!==null&&Ke(e)}mount(e,t){if(e.directions?.if===!1)return document.createComment("if");let n=document.createElement("div");return n.setAttribute("data-slot",e.props.name),this.mountSlotChildren(n,this.resolveChildren(e,t),t),n}patch(e,t,n,r){if(n.nodeType===Node.COMMENT_NODE){let o=this.mount(t,r);return n.parentNode?.replaceChild(o,n),o}if(t.directions?.if===!1){let o=document.createComment("if");return n.parentNode?.replaceChild(o,n),this.unmount(e,n,r),o}if(n instanceof HTMLElement)n.setAttribute("data-slot",t.props.name),this.replaceSlotChildren(n,e,t,r);return n}unmount(e,t,n){if(!(t instanceof HTMLElement))return;this.unmountSlotChildren(t,n),this.renderedChildren.delete(t)}resolveChildren(e,t){return t.slots[e.props.name]??O(e.children)}replaceSlotChildren(e,t,n,r){let o=this.renderedChildren.get(e)??[],i=this.resolveChildren(n,r),s=Math.min(o.length,i.length);for(let a=0;a<s;a+=1){let l=e.childNodes[a];if(!l){e.appendChild(r.renderer.mount(i[a],r));continue}r.renderer.patch(o[a],i[a],l,r)}for(let a=s;a<i.length;a+=1)e.appendChild(r.renderer.mount(i[a],r));for(let a=o.length-1;a>=i.length;a-=1){let l=e.childNodes[a];if(l){if(r.renderer.unmount(o[a],l,r),l.parentNode===e)e.removeChild(l)}}this.renderedChildren.set(e,i)}mountSlotChildren(e,t,n){t.forEach((r)=>{e.appendChild(n.renderer.mount(r,n))}),this.renderedChildren.set(e,t)}unmountSlotChildren(e,t){(this.renderedChildren.get(e)??[]).forEach((r,o)=>{let i=e.childNodes[o];if(i)t.renderer.unmount(r,i,t)})}}class E extends Error{code;config;response;cause;constructor(e){super(e.message);this.name="RequestError",this.code=e.code,this.config=e.config,this.response=e.response,this.cause=e.cause}}var Vt=new Set(["GET","POST","PUT","DELETE","PATCH","HEAD","OPTIONS"]);function fe(e){if(e===void 0)return"GET";let t=e.toUpperCase();if(!Vt.has(t))throw Error(`Unsupported HTTP method: ${e}`);return t}var Wt=/^[a-z][a-z\d+.-]*:\/\//i;function $t(e){return Wt.test(e)}function Ut(e,t){if(!e||$t(t))return t;return`${e.replace(/\/+$/,"")}/${t.replace(/^\/+/,"")}`}function ct(e){if(e instanceof Date)return e.toISOString();if(typeof e==="object")return JSON.stringify(e);return String(e)}function Gt(e){if(!e)return"";let t=[];return Object.keys(e).forEach((n)=>{let r=e[n];if(r===void 0||r===null)return;let o=encodeURIComponent(n);if(Array.isArray(r)){r.forEach((i)=>{if(i===void 0||i===null)return;t.push(`${o}=${encodeURIComponent(ct(i))}`)});return}t.push(`${o}=${encodeURIComponent(ct(r))}`)}),t.join("&")}function ge(e,t,n){let r=Ut(e,t),o=Gt(n);if(!o)return r;let i=r.includes("?")?"&":"?";return`${r}${i}${o}`}function Kt(e){if(e===void 0||e===null)return;return String(e)}function K(...e){let t={},n=new Map;return e.forEach((r)=>{if(!r)return;Object.keys(r).forEach((o)=>{let i=Kt(r[o]);if(i===void 0)return;let s=o.toLowerCase(),a=n.get(s);if(a!==void 0&&a!==o)delete t[a];n.set(s,o),t[o]=i})}),t}function Xt(e,t){return Object.keys(e).some((n)=>n.toLowerCase()===t.toLowerCase())}function pt(e,t,n){if(n==="GET"||n==="HEAD")return;if(e===void 0||e===null)return;if(typeof e==="string")return e;if(typeof FormData<"u"&&e instanceof FormData)return e;if(typeof Blob<"u"&&e instanceof Blob)return e;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return e;if(!Xt(t,"Content-Type"))t["Content-Type"]="application/json";return JSON.stringify(e)}class Ne{platform="web";async request(e){let t=fe(e.method),n=ge(e.baseURL,e.url,e.params),r=K(e.headers),o=pt(e.data,r,t),i=new AbortController,s=!1,a=!1,l;if(e.signal)if(e.signal.aborted)a=!0,i.abort();else e.signal.addEventListener("abort",()=>{a=!0,i.abort()},{once:!0});if(typeof e.timeout==="number"&&e.timeout>0)l=setTimeout(()=>{s=!0,i.abort()},e.timeout);let c=e.credentials??(e.withCredentials===!0?"include":"same-origin");try{let p=await fetch(n,{method:t,headers:r,body:o,signal:i.signal,credentials:c}),u={};return p.headers.forEach((m,f)=>{u[f]=m}),{data:await Yt(p,e),statusCode:p.status,statusText:p.statusText,headers:u,config:e}}catch(p){if(s)throw new E({code:"TIMEOUT",message:`Request timeout after ${String(e.timeout)}ms`,config:e,cause:p});if(a||i.signal.aborted)throw new E({code:"ABORTED",message:"Request aborted",config:e,cause:p});throw new E({code:"NETWORK_ERROR",message:p instanceof Error?p.message:String(p),config:e,cause:p})}finally{if(l!==void 0)clearTimeout(l)}}}async function Yt(e,t){if(t.responseType==="arraybuffer")return e.arrayBuffer();let n=await e.text();if(t.dataType==="text"||!n)return n;try{return JSON.parse(n)}catch{return n}}function Qt(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof global<"u")return global;return{}}function He(e){let t=Qt()[e];return typeof t==="object"&&t!==null?t:null}function be(){if(De("wx"))return"weixin";if(De("my"))return"alipay";if(De("tt"))return"bytedance";if(typeof fetch==="function")return"web";return"unknown"}function De(e){let t=He(e);return t!==null&&typeof t.request==="function"}var dt={platform:"weixin",globalName:"wx",headerField:"header",statusField:"statusCode",responseHeaderField:"header"},ht={platform:"alipay",globalName:"my",headerField:"headers",statusField:"status",responseHeaderField:"headers"},mt={platform:"bytedance",globalName:"tt",headerField:"header",statusField:"statusCode",responseHeaderField:"header"};class ee{dialect;platform;constructor(e){this.dialect=e;this.platform=e.platform}request(e){let t=He(this.dialect.globalName);if(!t||typeof t.request!=="function")return Promise.reject(new E({code:"UNSUPPORTED_PLATFORM",message:`${this.dialect.globalName}.request is not available in current environment`,config:e}));let n=t.request;return new Promise((r,o)=>{let i=!1,s=!1,a,l,c=(u)=>{if(s)return;if(s=!0,l!==void 0)clearTimeout(l);u()},p={url:ge(e.baseURL,e.url,e.params),method:e.method??"GET",data:e.data,[this.dialect.headerField]:Jt(e.headers),dataType:e.dataType??"json",...e.responseType!==void 0?{responseType:e.responseType}:{},...e.timeout!==void 0&&e.timeout>0?{timeout:e.timeout}:{},success:(u)=>{c(()=>{let d=u[this.dialect.statusField],m=Number(d??u.statusCode??0),f=Zt(u[this.dialect.responseHeaderField]);r({data:u.data,statusCode:m,headers:f,config:e,...Array.isArray(u.cookies)?{cookies:u.cookies}:{},...typeof u.errMsg==="string"?{errMsg:u.errMsg}:{}})})},fail:(u)=>{c(()=>{let d=en(u);o(new E({code:i?"TIMEOUT":tn(d),message:d||"Network request failed",config:e,cause:u}))})}};if(e.timeout!==void 0&&e.timeout>0)l=setTimeout(()=>{i=!0,a?.abort?.()},e.timeout);if(a=n(p)??void 0,e.signal)if(e.signal.aborted)a?.abort?.();else e.signal.addEventListener("abort",()=>{a?.abort?.()},{once:!0})})}}function Jt(e){return K(e)}function Zt(e){if(typeof e!=="object"||e===null)return{};let t={};return Object.keys(e).forEach((n)=>{let r=e[n];if(r!==void 0&&r!==null)t[n]=String(r)}),t}function en(e){if(typeof e.errMsg==="string")return e.errMsg;if(typeof e.errorMessage==="string")return e.errorMessage;if(typeof e.error==="string")return e.error;return""}function tn(e){if(!e)return"UNKNOWN";if(/timeout/i.test(e))return"TIMEOUT";if(/abort/i.test(e))return"ABORTED";return"NETWORK_ERROR"}var ft={web:new Ne,weixin:new ee(dt),alipay:new ee(ht),bytedance:new ee(mt)};function ye(e){let t=ft[e];if(!t)throw new E({code:"UNSUPPORTED_PLATFORM",message:`Unsupported request platform: ${String(e)}`,config:{url:""}});return t}async function Be(e,t,n){if(e.platform!==void 0&&e.platform!=="auto")return ye(e.platform);if(t!==void 0)return typeof t==="function"?await t(e):t;if(n!==void 0&&n!=="auto")return ye(n);let r=be();if(r==="unknown")throw new E({code:"UNSUPPORTED_PLATFORM",message:"No supported request platform detected (web fetch / wx.request / my.request / tt.request)",config:e});return ye(r)}class te{handlers=[];use(e,t){return this.handlers.push({onFulfilled:e,onRejected:t}),this.handlers.length-1}eject(e){if(this.handlers[e]!==void 0)this.handlers[e]=null}clear(){this.handlers.length=0}forEach(e){this.handlers.forEach((t,n)=>{if(t!==null)e(t,n)})}}class ve{interceptors={request:new te,response:new te};instanceDefaults;instanceAdapter;instancePlatform;constructor(e={}){let{adapter:t,platform:n,...r}=e;this.instanceAdapter=t,this.instancePlatform=n,this.instanceDefaults={...r}}request(e){let t;try{t=this.mergeConfig(e)}catch(i){return Promise.reject(i)}let n=[];this.interceptors.request.forEach((i)=>{n.push(i.onFulfilled,i.onRejected)}),n.push((i)=>this.dispatch(i),void 0);let r=[];this.interceptors.response.forEach((i)=>{r.push({onFulfilled:i.onFulfilled,onRejected:i.onRejected})});for(let i=r.length-1;i>=0;i-=1){let s=r[i];n.push(s.onFulfilled,s.onRejected)}let o=Promise.resolve(t);while(n.length>0){let i=n.shift(),s=n.shift();o=o.then(i,s)}return o}get(e,t){return this.request({...t,url:e,method:"GET"})}delete(e,t){return this.request({...t,url:e,method:"DELETE"})}head(e,t){return this.request({...t,url:e,method:"HEAD"})}options(e,t){return this.request({...t,url:e,method:"OPTIONS"})}post(e,t,n){return this.request({...n,url:e,method:"POST",data:t})}put(e,t,n){return this.request({...n,url:e,method:"PUT",data:t})}patch(e,t,n){return this.request({...n,url:e,method:"PATCH",data:t})}dispatch(e){return Be(e,this.instanceAdapter,this.instancePlatform).then((t)=>t.request(e))}mergeConfig(e){if(!e||typeof e!=="object")throw new E({code:"BAD_REQUEST",message:"Request config must be an object",config:e});let t={...this.instanceDefaults,...e,headers:K(this.instanceDefaults.headers,e.headers),params:{...this.instanceDefaults.params,...e.params}};if(typeof t.url!=="string"||t.url.length===0)throw new E({code:"BAD_REQUEST",message:"Request url is required",config:t});try{t.method=fe(t.method)}catch(n){throw new E({code:"BAD_REQUEST",message:n.message,config:t,cause:n})}return t}}var Yi=new ve;var nn="tc-chart-canvas",rn=150;class gt extends Z{chart=null;destroyed=!1;resizeDebounced=null;resizeObserver=null;mpResizeHandler=null;hoverHandlers=[];initState(){return{canvasId:nn}}initStyles(){this.styleManager.addStyle("tc-chart-canvas",{selector:".tc-chart__canvas",properties:{display:"block",height:"100%",width:"100%"}})}render(){return Xe("canvas",{id:this.state.canvasId,className:`tc-chart__canvas${this.props.className?` ${this.props.className}`:""}`,type:"2d"})}onMounted(){this.attachChart(),this.setupAutoResize(),this.setupHoverEvents()}onUpdated(){if(this.chart&&!this.destroyed)this.chart.setOption(this.props.option).render();else if(!this.chart&&!this.destroyed)this.attachChart()}onUnmounted(){this.teardownAutoResize(),this.teardownHoverEvents(),this.destroyed=!0,this.chart?.destroy(),this.chart=null}getChart(){return this.chart}attachChart(){if(this.destroyed)return;this.resolveContext().then((e)=>{if(this.destroyed||!e)return;this.chart=Q(e,this.props.option),this.chart.render()}).catch((e)=>{console.error("[TcChart] attach failed:",e)})}getElement(){return this.el}setupHoverEvents(){if(this.destroyed||this.hoverHandlers.length>0)return;if(H())return;let e=this.getElement();if(!e||typeof e.addEventListener!=="function")return;let t=(r)=>{let o=this.chart;if(!o)return;let i=r,s=e.getBoundingClientRect(),a=i.clientX-s.left,l=i.clientY-s.top,c=s.width,p=s.height;if(c>0&&p>0)o.resize(c,p);o.setHover(a,l)},n=()=>{this.chart?.clearHover()};e.addEventListener("mousemove",t),e.addEventListener("mouseleave",n),this.hoverHandlers=[["mousemove",t],["mouseleave",n]]}teardownHoverEvents(){let e=this.getElement();for(let[t,n]of this.hoverHandlers)e?.removeEventListener(t,n);this.hoverHandlers=[]}setupAutoResize(){if(this.destroyed||this.resizeDebounced)return;this.resizeDebounced=xe(()=>this.handleResize(),rn);let e=H();if(e){let n=I(e);if(n&&typeof n.onWindowResize==="function")this.mpResizeHandler=()=>this.resizeDebounced.run(),n.onWindowResize(this.mpResizeHandler);return}let t=this.getElement();if(t&&typeof t.getContext==="function"&&typeof ResizeObserver==="function")this.resizeObserver=new ResizeObserver(()=>this.resizeDebounced.run()),this.resizeObserver.observe(t)}teardownAutoResize(){if(this.resizeObserver?.disconnect(),this.resizeObserver=null,this.resizeDebounced?.cancel(),this.resizeDebounced=null,this.mpResizeHandler){let e=H(),t=e?I(e):null;if(t&&typeof t.offWindowResize==="function")t.offWindowResize(this.mpResizeHandler);this.mpResizeHandler=null}}handleResize(){if(this.destroyed)return;if(H()){this.chart?.destroy(),this.chart=null,this.attachChart();return}let e=this.getElement();if(!e||typeof e.getContext!=="function")return;let t=e.clientWidth||0,n=e.clientHeight||0;if(t<=0||n<=0)return;if(!this.chart){this.attachChart();return}let r=D();e.width=Math.round(t*r),e.height=Math.round(n*r),this.chart.resize(t,n,r).render()}resolveContext(){if(this.props.resolve)return Promise.resolve(this.props.resolve(this.getElement()));let e=H();if(e){let n=`#${this.state.canvasId}`,r=(o)=>ue({platform:e,instance:this,selector:n}).then((i)=>U(i)).catch((i)=>{if(o<=0)throw i;return new Promise((s)=>setTimeout(s,50)).then(()=>r(o-1))});return r(5)}let t=this.getElement();if(!t||typeof t.getContext!=="function")return Promise.resolve(null);return Promise.resolve(G(t))}}export{ie as BarChart,re as CategoryScale,M as ChartBase,_e as DEFAULT_AXIS_COLOR,ne as DEFAULT_FONT_FAMILY,Ce as DEFAULT_GRID_COLOR,ze as DEFAULT_PALETTE,X as DEFAULT_TEXT_COLOR,oe as LineChart,Y as LinearScale,ae as PieChart,le as RadarChart,gt as TcChart,Re as computeLayout,Q as createChart,Lt as createMiniProgramChart,Pt as createWebChart,xe as debounce,Se as detectMiniProgramPixelRatio,D as detectPixelRatio,ue as getMiniProgramCanvasNode,I as getMiniProgramGlobal,bt as isCanvas2DLike,Fe as niceTicks,U as resolveMiniProgramCanvas,$e as resolveNativeCanvas,G as resolveWebCanvas};
14
+ `})}),e.textContent=t}}class J{state;bindings=[];templateRegex=/{{(.*?)}}/g;constructor(e){this.state=e;if(!e||typeof e!=="object")throw Error("TemplateEngine requires a valid state object")}parseTemplate(e){if(typeof e!=="string")e=String(e);let t=document.createTextNode("");this.templateRegex.lastIndex=0;let n=Array.from(e.matchAll(this.templateRegex));if(n&&n.length>0)this.setupReactiveBindings(t,e,n);else t.textContent=e;return t}setupReactiveBindings(e,t,n){let r=new Set,o=this.evaluateTemplate(t,n,r);e.textContent=o;let i=B(()=>{try{let s=this.evaluateTemplate(t,n,r);if(e.textContent!==s)e.textContent=s}catch(s){console.error("Template update error:",s),e.textContent=`Error: ${s instanceof Error?s.message:"Unknown error"}`}});this.bindings.push({node:e,originalText:t,effect:i})}evaluateTemplate(e,t,n){let r=e;return t.forEach((o)=>{let i=o[1]?.trim();if(i){n.add(i);let s=this.getValueFromState(i),a=s===void 0||s===null?"":String(s);r=r.replace(o[0],a)}}),r}getValueFromState(e){if(!e)return;let t=e.split("."),n=this.state;for(let r of t){if(!n||typeof n!=="object")return;n=n[r]}return n}clearBindings(){this.bindings.forEach((e)=>{q(e.effect)}),this.bindings=[]}getBindingCount(){return this.bindings.length}hasExpressions(e){return this.templateRegex.lastIndex=0,this.templateRegex.test(e)}extractKeys(e){let t=[],n,r=new RegExp(this.templateRegex,"g");while((n=r.exec(e))!==null){let o=n[1]?.trim();if(o)t.push(o)}return t}evaluateTemplateValue(e){this.templateRegex.lastIndex=0;let t=Array.from(e.matchAll(this.templateRegex));if(!t||t.length===0)return e;let n=new Set;return this.evaluateTemplate(e,t,n)}}class Z{props;vnode=null;el=null;renderer=new he;templateEngine;childComponents=new Set;eventListeners={};providers=new Map;updateEffect;appContext=null;parentComponent=null;elementChangeListener=null;styleManager;state;mounted=!1;constructor(e={}){this.props=e;this.styleManager=new ke,this.state=Qe(this.initState()??{}),this.templateEngine=new J(this.state),this.initStyles(),this.updateEffect=B(()=>{if(this.mounted)try{this.update()}catch(t){if(!this.dispatchError(t))throw t}},{throwOnError:!0,scheduler:(t)=>{Le.enqueue(t)}})}mount(e){if(!e||!(e instanceof HTMLElement))throw Error("Invalid container element");try{e.appendChild(this.mountToNode())}catch(t){throw console.error("组件渲染错误:",t),t}}mountToNode(){if(this.mounted&&this.el)return this.el;return this.beforeMount(),this.el=M.getInstance().runWithEffect(this.updateEffect,()=>{try{return this.vnode=this.render(),this.renderer.mount(this.vnode,this.createRenderContext())}catch(e){if(this.dispatchError(e))return document.createComment("error-boundary");throw e}}),this.mounted=!0,this.onMounted(),this.el}update(){if(!this.el||!this.vnode)return;this.beforeUpdate();let e=this.vnode,t=this.el;if(this.el=M.getInstance().runWithEffect(this.updateEffect,()=>{let n=this.render(),r=this.renderer.patch(e,n,t,this.createRenderContext());return this.vnode=n,r}),t!==this.el)this.elementChangeListener?.(t,this.el);this.onUpdated(),this.onPropsChange()}unmount(){if(!this.mounted)return;if(this.beforeUnmount(),this.vnode&&this.el)this.renderer.unmount(this.vnode,this.el,this.createRenderContext());if(this.childComponents.clear(),Object.keys(this.eventListeners).forEach((e)=>{this.eventListeners[e].clear(),delete this.eventListeners[e]}),this.providers.clear(),this.parentComponent=null,this.elementChangeListener=null,this.templateEngine.clearBindings(),this.styleManager.destroy(),q(this.updateEffect),this.el?.parentNode)this.el.parentNode.removeChild(this.el);this.el=null,this.vnode=null,this.mounted=!1,this.onUnmounted()}setProps(e){if(this.props={...this.props,...e},this.mounted)Le.enqueue(this.updateEffect)}setState(e){Object.assign(this.state,e)}setAppContext(e){this.appContext=e,this.childComponents.forEach((t)=>{t.setAppContext?.(e)})}setParentComponent(e){this.parentComponent=e}getParentComponent(){return this.parentComponent}setElementChangeListener(e){this.elementChangeListener=e}provide(e,t){this.providers.set(e,t)}inject(e,t){let n=this.resolveInjection(e);return n.found?n.value:t}resolveInjection(e){if(this.providers.has(e))return{found:!0,value:this.providers.get(e)};if(this.parentComponent?.resolveInjection)return this.parentComponent.resolveInjection(e);return this.resolveAppInjection(e)}getElement(){return this.el}beforeMount(){}onMounted(){}beforeUpdate(){}onUpdated(){}onPropsChange(){}beforeUnmount(){}onUnmounted(){}dispatchError(e){let t=this.getParentComponent();while(t){let n=t;if(typeof n.onErrorCaptured==="function"){if(n.onErrorCaptured(e,this)===!1)return!0}t=t.getParentComponent?.()??null}return!1}getContext(){return this.appContext}get router(){return this.getRouterFrom(this.appContext)??this.getRouterFromGlobalApp()}emit(e,...t){this.eventListeners[e]?.forEach((n)=>{n(...t)})}on(e,t){if(!this.eventListeners[e])this.eventListeners[e]=new Set;return this.eventListeners[e].add(t),()=>this.off(e,t)}off(e,t){this.eventListeners[e]?.delete(t)}createRenderContext(){return{appContext:this.appContext,templateEngine:this.templateEngine,renderer:this.renderer,slots:this.collectSlots(),registerChild:(e)=>{this.childComponents.add(e),e.setParentComponent?.(this),e.setAppContext?.(this.appContext)},unregisterChild:(e)=>{this.childComponents.delete(e),e.setParentComponent?.(null)}}}collectSlots(){let e={default:[]};return O(this.props.children).forEach((n)=>{let r=this.getSlotName(n);if(!e[r])e[r]=[];e[r].push(this.normalizeSlotChild(n))}),e}getSlotName(e){if(typeof e==="string")return"default";return"slot"in e&&typeof e.slot==="string"?e.slot:"default"}normalizeSlotChild(e){if(typeof e==="string"||!("slot"in e))return e;let t={...e};return delete t.slot,t}getRouterFrom(e){if(!e||typeof e!=="object"||!("router"in e))return;return e.router}getRouterFromGlobalApp(){let e=globalThis.__APP__;return this.getRouterFrom(e)}resolveAppInjection(e){if(!this.appContext||typeof this.appContext!=="object")return{found:!1,value:void 0};return this.appContext.app?.resolveInjection?.(e)??{found:!1,value:void 0}}}var zt=null;function it(){return zt}var st="http://www.w3.org/2000/svg",_t=new Set(["svg","g","defs","rect","circle","ellipse","line","polyline","polygon","path","text","tspan","textPath","use","symbol","marker","linearGradient","radialGradient","stop","pattern","mask","clipPath","foreignObject"]);class fe{listeners=new WeakMap;effects=new WeakMap;modelBindings=new Oe;matches(e){return typeof e==="object"&&e!==null&&Ge(e)}mount(e,t){if(e.directions?.if===!1)return document.createComment("if");let n=e.tag==="navigator",r=n?document.createElement("a"):_t.has(e.tag)?document.createElementNS(st,e.tag):document.createElement(e.tag),o=e.props??{};if(n){let{url:i,openType:s,...a}=o,l=typeof i==="string"?i:"#";r.setAttribute("href",l),r.addEventListener("click",(c)=>{let p=it();if(p)c.preventDefault(),p.push(r.getAttribute("href")??"#")}),this.applyProps(r,{},a,t)}else this.applyProps(r,{},o,t);return this.updateListeners(r,{},this.collectListeners(e)),this.mountChildren(r,e,t),this.applyDirections(r,void 0,e.directions,t),r}patch(e,t,n,r){if(e.tag!==t.tag||n.nodeType===Node.COMMENT_NODE){let i=this.mount(t,r);return n.parentNode?.replaceChild(i,n),this.unmount(e,n,r),i}if(!(n instanceof Element))return n;if(t.directions?.if===!1){let i=document.createComment("if");return n.parentNode?.replaceChild(i,n),this.unmount(e,n,r),i}if(t.tag==="navigator"||e.tag==="navigator"){let i=e.props??{},s=t.props??{},a=typeof i.url==="string"?i.url:"",l=typeof s.url==="string"?s.url:"";if(a!==l)n.setAttribute("href",l);let c={...s};delete c.url,delete c.openType,this.applyProps(n,i,c,r)}else this.applyProps(n,e.props??{},t.props??{},r);return this.updateListeners(n,this.collectListeners(e),this.collectListeners(t)),this.updateChildren(n,e,t,r),this.applyDirections(n,e.directions,t.directions,r),n}unmount(e,t,n){if(!(t instanceof Element))return;this.effects.get(t)?.forEach((r)=>q(r)),this.effects.delete(t),this.listeners.get(t)?.forEach(({eventName:r,listener:o})=>{t.removeEventListener(r,o)}),this.listeners.delete(t),this.modelBindings.cleanup(t),this.unmountChildren(t,e,n)}mountChildren(e,t,n){O(t.children).forEach((r)=>{e.appendChild(n.renderer.mount(r,n))})}updateChildren(e,t,n,r){this.updateOrdinaryChildren(e,O(t.children),O(n.children),r)}unmountChildren(e,t,n){O(t.children).forEach((r,o)=>{let i=e.childNodes[o];if(i)n.renderer.unmount(r,i,n)})}applyProps(e,t,n,r){Object.keys(t).forEach((o)=>{if(de(o)||o in n)return;if(o==="className"||o==="class")e.removeAttribute("class");else if(o==="style")e.removeAttribute("style");else if(o==="value"&&typeof e==="object"&&e!==null&&"value"in e)e.value="";else e.removeAttribute(me(o))}),Object.entries(n).forEach(([o,i])=>{if(de(o))return;if(t[o]===i)return;if(o==="className"||o==="class"){if(e.namespaceURI===st)e.setAttribute("class",String(i??""));else e.className=String(i??"");return}if(o==="value"&&typeof e==="object"&&e!==null&&"value"in e){e.value=String(i??"");return}if(o==="style"&&typeof i==="object"&&i!==null){e.removeAttribute("style");let s=e.style;Object.entries(i).forEach(([a,l])=>{ot(s,a,l)});return}if(i===!1||i===void 0||i===null){e.removeAttribute(me(o));return}if(i===!0){e.setAttribute(me(o),"");return}if(typeof i==="string"&&r.templateEngine.hasExpressions(i)){this.setupReactiveAttribute(e,o,i,r);return}e.setAttribute(me(o),String(i))})}applyDirections(e,t,n,r){if(n&&"show"in n)e.style.display=n.show?"":"none";else if(t&&"show"in t)e.style.display="";if(!n?.model){this.modelBindings.cleanup(e);return}this.modelBindings.bind(e,n.model,r.templateEngine.state)}updateOrdinaryChildren(e,t,n,r){if(this.assertNoDuplicateKeys(t),this.assertNoDuplicateKeys(n),this.hasOnlyKeyedChildren(t,n)){this.updateKeyedChildren(e,t,n,r);return}let o=Math.min(t.length,n.length);for(let i=0;i<o;i+=1){let s=e.childNodes[i];if(!s){e.appendChild(r.renderer.mount(n[i],r));continue}r.renderer.patch(t[i],n[i],s,r)}for(let i=o;i<n.length;i+=1)e.appendChild(r.renderer.mount(n[i],r));for(let i=t.length-1;i>=n.length;i-=1){let s=e.childNodes[i];if(s){if(r.renderer.unmount(t[i],s,r),s.parentNode===e)e.removeChild(s)}}}updateKeyedChildren(e,t,n,r){let o=t.map((a,l)=>({vnode:a,node:e.childNodes[l],index:l})),i=new Map,s=new Set;o.forEach((a)=>{let l=this.getVNodeKey(a.vnode);if(l!==void 0&&a.node)i.set(l,{vnode:a.vnode,node:a.node,index:a.index})}),n.forEach((a,l)=>{let c=this.getVNodeKey(a),p=c===void 0?void 0:i.get(c),u;if(p)u=r.renderer.patch(p.vnode,a,p.node,r),s.add(p.index);else u=r.renderer.mount(a,r);let d=e.childNodes[l]??null;if(u!==d)e.insertBefore(u,d)}),o.forEach((a)=>{if(!a.node||s.has(a.index))return;if(r.renderer.unmount(a.vnode,a.node,r),a.node.parentNode===e)e.removeChild(a.node)})}hasOnlyKeyedChildren(e,t){return[...e,...t].every((n)=>this.getVNodeKey(n)!==void 0)}assertNoDuplicateKeys(e){let t=new Set;e.forEach((n)=>{let r=this.getVNodeKey(n);if(r===void 0)return;if(t.has(r))throw Error(`Duplicate key "${r}"`);t.add(r)})}getVNodeKey(e){if(typeof e==="string")return;return e.key}collectListeners(e){let t={};return Object.entries(e.props??{}).forEach(([n,r])=>{if(de(n)&&typeof r==="function")t[tt(n)]=r}),{...t,...e.listeners??{}}}updateListeners(e,t,n){let r=this.listeners.get(e)??new Map,o=new Set(Object.keys(t)),i=new Set(Object.keys(n));o.forEach((s)=>{if(!i.has(s)||t[s]!==n[s]){let a=r.get(s);if(a)e.removeEventListener(a.eventName,a.listener),r.delete(s)}}),i.forEach((s)=>{if(!o.has(s)||t[s]!==n[s]){let{eventName:a,modifiers:l}=nt(s),c=typeof e.tagName==="string"&&e.tagName.toLowerCase()==="textarea",p=a==="confirm"&&!c?"keydown":a,u=rt((d)=>{if(p==="keydown"){if(d.key!=="Enter")return}n[s](d)},l);e.addEventListener(p,u),r.set(s,{eventName:p,listener:u})}}),this.listeners.set(e,r)}setupReactiveAttribute(e,t,n,r){let o=B(()=>{e.setAttribute(t,r.templateEngine.evaluateTemplateValue(n))});this.trackEffect(e,o)}trackEffect(e,t){let n=this.effects.get(e)??new Set;n.add(t),this.effects.set(e,n)}}function me(e){if(e.startsWith("data")&&e.length>4)return`data${e.slice(4).replace(/[A-Z]/g,(t)=>`-${t.toLowerCase()}`)}`;if(e==="tabIndex"||e==="colSpan"||e==="htmlFor")return e.toLowerCase();return e}class he{strategies;constructor(){this.strategies=[new at,new lt,new ut,new fe]}mount(e,t){return this.findStrategy(e).mount(e,t)}patch(e,t,n,r){let o=this.findStrategy(e),i=this.findStrategy(t);if(o!==i){let s=i.mount(t,r);return n.parentNode?.replaceChild(s,n),o.unmount(e,n,r),s}return o.patch(e,t,n,r)}unmount(e,t,n){this.findStrategy(e).unmount(e,t,n)}findStrategy(e){let t=this.strategies.find((n)=>n.matches(e));if(!t)throw Error("No render strategy found for vnode");return t}}class at{matches(e){return typeof e==="string"}mount(e,t){return t.templateEngine.parseTemplate(e)}patch(e,t,n,r){if(e===t)return n;let o=this.mount(t,r);return n.parentNode?.replaceChild(o,n),o}unmount(){}}class lt{instances=new WeakMap;instanceNodes=new Map;emitterUnsubscribers=new WeakMap;matches(e){return typeof e==="object"&&e!==null&&Ue(e)}mount(e,t){if(e.directions?.if===!1)return document.createComment("if");let r=new e.component(this.createProps(e));if(t.appContext&&r.setAppContext)r.setAppContext(t.appContext);this.syncEmitters(r,e.emitters??{}),t.registerChild(r);let o=r.mountToNode();return this.trackInstanceNode(r,o),r.setElementChangeListener?.((i,s)=>{this.trackInstanceNode(r,i),this.trackInstanceNode(r,s)}),o}patch(e,t,n,r){if(n.nodeType===Node.COMMENT_NODE){let s=this.mount(t,r);return n.parentNode?.replaceChild(s,n),s}if(t.directions?.if===!1){let s=document.createComment("if");return n.parentNode?.replaceChild(s,n),this.unmount(e,n,r),s}let o=this.instances.get(n);if(o&&e.component===t.component){this.syncEmitters(o,t.emitters??{}),o.setProps(this.createProps(t));let s=o.getElement()??n;return this.trackInstanceNode(o,s),s}let i=this.mount(t,r);return n.parentNode?.replaceChild(i,n),this.unmount(e,n,r),i}unmount(e,t,n){let r=this.instances.get(t);if(r)this.clearEmitters(r),r.unmount(),this.clearInstanceNodes(r),n.unregisterChild(r)}createProps(e){return{...e.props??{},children:O(e.children)}}syncEmitters(e,t){let n=this.emitterUnsubscribers.get(e)??new Map;n.forEach(({listener:r,unsubscribe:o},i)=>{let s=t[i];if(!s||s!==r)o(),n.delete(i)}),Object.entries(t).forEach(([r,o])=>{if(n.get(r)?.listener===o)return;n.set(r,{listener:o,unsubscribe:e.on(r,o)})}),this.emitterUnsubscribers.set(e,n)}clearEmitters(e){this.emitterUnsubscribers.get(e)?.forEach(({unsubscribe:t})=>{t()}),this.emitterUnsubscribers.delete(e)}trackInstanceNode(e,t){this.instances.set(t,e);let n=this.instanceNodes.get(e)??new Set;n.add(t),this.instanceNodes.set(e,n)}clearInstanceNodes(e){this.instanceNodes.get(e)?.forEach((t)=>{this.instances.delete(t)}),this.instanceNodes.delete(e)}}class ut{renderedChildren=new WeakMap;matches(e){return typeof e==="object"&&e!==null&&Ke(e)}mount(e,t){if(e.directions?.if===!1)return document.createComment("if");let n=document.createElement("div");return n.setAttribute("data-slot",e.props.name),this.mountSlotChildren(n,this.resolveChildren(e,t),t),n}patch(e,t,n,r){if(n.nodeType===Node.COMMENT_NODE){let o=this.mount(t,r);return n.parentNode?.replaceChild(o,n),o}if(t.directions?.if===!1){let o=document.createComment("if");return n.parentNode?.replaceChild(o,n),this.unmount(e,n,r),o}if(n instanceof HTMLElement)n.setAttribute("data-slot",t.props.name),this.replaceSlotChildren(n,e,t,r);return n}unmount(e,t,n){if(!(t instanceof HTMLElement))return;this.unmountSlotChildren(t,n),this.renderedChildren.delete(t)}resolveChildren(e,t){return t.slots[e.props.name]??O(e.children)}replaceSlotChildren(e,t,n,r){let o=this.renderedChildren.get(e)??[],i=this.resolveChildren(n,r),s=Math.min(o.length,i.length);for(let a=0;a<s;a+=1){let l=e.childNodes[a];if(!l){e.appendChild(r.renderer.mount(i[a],r));continue}r.renderer.patch(o[a],i[a],l,r)}for(let a=s;a<i.length;a+=1)e.appendChild(r.renderer.mount(i[a],r));for(let a=o.length-1;a>=i.length;a-=1){let l=e.childNodes[a];if(l){if(r.renderer.unmount(o[a],l,r),l.parentNode===e)e.removeChild(l)}}this.renderedChildren.set(e,i)}mountSlotChildren(e,t,n){t.forEach((r)=>{e.appendChild(n.renderer.mount(r,n))}),this.renderedChildren.set(e,t)}unmountSlotChildren(e,t){(this.renderedChildren.get(e)??[]).forEach((r,o)=>{let i=e.childNodes[o];if(i)t.renderer.unmount(r,i,t)})}}class E extends Error{code;config;response;cause;constructor(e){super(e.message);this.name="RequestError",this.code=e.code,this.config=e.config,this.response=e.response,this.cause=e.cause}}var Vt=new Set(["GET","POST","PUT","DELETE","PATCH","HEAD","OPTIONS"]);function ge(e){if(e===void 0)return"GET";let t=e.toUpperCase();if(!Vt.has(t))throw Error(`Unsupported HTTP method: ${e}`);return t}var Wt=/^[a-z][a-z\d+.-]*:\/\//i;function $t(e){return Wt.test(e)}function Ut(e,t){if(!e||$t(t))return t;return`${e.replace(/\/+$/,"")}/${t.replace(/^\/+/,"")}`}function ct(e){if(e instanceof Date)return e.toISOString();if(typeof e==="object")return JSON.stringify(e);return String(e)}function Gt(e){if(!e)return"";let t=[];return Object.keys(e).forEach((n)=>{let r=e[n];if(r===void 0||r===null)return;let o=encodeURIComponent(n);if(Array.isArray(r)){r.forEach((i)=>{if(i===void 0||i===null)return;t.push(`${o}=${encodeURIComponent(ct(i))}`)});return}t.push(`${o}=${encodeURIComponent(ct(r))}`)}),t.join("&")}function be(e,t,n){let r=Ut(e,t),o=Gt(n);if(!o)return r;let i=r.includes("?")?"&":"?";return`${r}${i}${o}`}function Kt(e){if(e===void 0||e===null)return;return String(e)}function K(...e){let t={},n=new Map;return e.forEach((r)=>{if(!r)return;Object.keys(r).forEach((o)=>{let i=Kt(r[o]);if(i===void 0)return;let s=o.toLowerCase(),a=n.get(s);if(a!==void 0&&a!==o)delete t[a];n.set(s,o),t[o]=i})}),t}function Xt(e,t){return Object.keys(e).some((n)=>n.toLowerCase()===t.toLowerCase())}function pt(e,t,n){if(n==="GET"||n==="HEAD")return;if(e===void 0||e===null)return;if(typeof e==="string")return e;if(typeof FormData<"u"&&e instanceof FormData)return e;if(typeof Blob<"u"&&e instanceof Blob)return e;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return e;if(!Xt(t,"Content-Type"))t["Content-Type"]="application/json";return JSON.stringify(e)}class Ne{platform="web";async request(e){let t=ge(e.method),n=be(e.baseURL,e.url,e.params),r=K(e.headers),o=pt(e.data,r,t),i=new AbortController,s=!1,a=!1,l;if(e.signal)if(e.signal.aborted)a=!0,i.abort();else e.signal.addEventListener("abort",()=>{a=!0,i.abort()},{once:!0});if(typeof e.timeout==="number"&&e.timeout>0)l=setTimeout(()=>{s=!0,i.abort()},e.timeout);let c=e.credentials??(e.withCredentials===!0?"include":"same-origin");try{let p=await fetch(n,{method:t,headers:r,body:o,signal:i.signal,credentials:c}),u={};return p.headers.forEach((m,f)=>{u[f]=m}),{data:await Yt(p,e),statusCode:p.status,statusText:p.statusText,headers:u,config:e}}catch(p){if(s)throw new E({code:"TIMEOUT",message:`Request timeout after ${String(e.timeout)}ms`,config:e,cause:p});if(a||i.signal.aborted)throw new E({code:"ABORTED",message:"Request aborted",config:e,cause:p});throw new E({code:"NETWORK_ERROR",message:p instanceof Error?p.message:String(p),config:e,cause:p})}finally{if(l!==void 0)clearTimeout(l)}}}async function Yt(e,t){if(t.responseType==="arraybuffer")return e.arrayBuffer();let n=await e.text();if(t.dataType==="text"||!n)return n;try{return JSON.parse(n)}catch{return n}}function Qt(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof global<"u")return global;return{}}function De(e){let t=Qt()[e];return typeof t==="object"&&t!==null?t:null}function ye(){if(He("wx"))return"weixin";if(He("my"))return"alipay";if(He("tt"))return"bytedance";if(typeof fetch==="function")return"web";return"unknown"}function He(e){let t=De(e);return t!==null&&typeof t.request==="function"}var dt={platform:"weixin",globalName:"wx",headerField:"header",statusField:"statusCode",responseHeaderField:"header"},ht={platform:"alipay",globalName:"my",headerField:"headers",statusField:"status",responseHeaderField:"headers"},mt={platform:"bytedance",globalName:"tt",headerField:"header",statusField:"statusCode",responseHeaderField:"header"};class ee{dialect;platform;constructor(e){this.dialect=e;this.platform=e.platform}request(e){let t=De(this.dialect.globalName);if(!t||typeof t.request!=="function")return Promise.reject(new E({code:"UNSUPPORTED_PLATFORM",message:`${this.dialect.globalName}.request is not available in current environment`,config:e}));let n=t.request;return new Promise((r,o)=>{let i=!1,s=!1,a,l,c=(u)=>{if(s)return;if(s=!0,l!==void 0)clearTimeout(l);u()},p={url:be(e.baseURL,e.url,e.params),method:e.method??"GET",data:e.data,[this.dialect.headerField]:Jt(e.headers),dataType:e.dataType??"json",...e.responseType!==void 0?{responseType:e.responseType}:{},...e.timeout!==void 0&&e.timeout>0?{timeout:e.timeout}:{},success:(u)=>{c(()=>{let d=u[this.dialect.statusField],m=Number(d??u.statusCode??0),f=Zt(u[this.dialect.responseHeaderField]);r({data:u.data,statusCode:m,headers:f,config:e,...Array.isArray(u.cookies)?{cookies:u.cookies}:{},...typeof u.errMsg==="string"?{errMsg:u.errMsg}:{}})})},fail:(u)=>{c(()=>{let d=en(u);o(new E({code:i?"TIMEOUT":tn(d),message:d||"Network request failed",config:e,cause:u}))})}};if(e.timeout!==void 0&&e.timeout>0)l=setTimeout(()=>{i=!0,a?.abort?.()},e.timeout);if(a=n(p)??void 0,e.signal)if(e.signal.aborted)a?.abort?.();else e.signal.addEventListener("abort",()=>{a?.abort?.()},{once:!0})})}}function Jt(e){return K(e)}function Zt(e){if(typeof e!=="object"||e===null)return{};let t={};return Object.keys(e).forEach((n)=>{let r=e[n];if(r!==void 0&&r!==null)t[n]=String(r)}),t}function en(e){if(typeof e.errMsg==="string")return e.errMsg;if(typeof e.errorMessage==="string")return e.errorMessage;if(typeof e.error==="string")return e.error;return""}function tn(e){if(!e)return"UNKNOWN";if(/timeout/i.test(e))return"TIMEOUT";if(/abort/i.test(e))return"ABORTED";return"NETWORK_ERROR"}var ft={web:new Ne,weixin:new ee(dt),alipay:new ee(ht),bytedance:new ee(mt)};function ve(e){let t=ft[e];if(!t)throw new E({code:"UNSUPPORTED_PLATFORM",message:`Unsupported request platform: ${String(e)}`,config:{url:""}});return t}async function Be(e,t,n){if(e.platform!==void 0&&e.platform!=="auto")return ve(e.platform);if(t!==void 0)return typeof t==="function"?await t(e):t;if(n!==void 0&&n!=="auto")return ve(n);let r=ye();if(r==="unknown")throw new E({code:"UNSUPPORTED_PLATFORM",message:"No supported request platform detected (web fetch / wx.request / my.request / tt.request)",config:e});return ve(r)}class te{handlers=[];use(e,t){return this.handlers.push({onFulfilled:e,onRejected:t}),this.handlers.length-1}eject(e){if(this.handlers[e]!==void 0)this.handlers[e]=null}clear(){this.handlers.length=0}forEach(e){this.handlers.forEach((t,n)=>{if(t!==null)e(t,n)})}}class Ce{interceptors={request:new te,response:new te};instanceDefaults;instanceAdapter;instancePlatform;constructor(e={}){let{adapter:t,platform:n,...r}=e;this.instanceAdapter=t,this.instancePlatform=n,this.instanceDefaults={...r}}request(e){let t;try{t=this.mergeConfig(e)}catch(i){return Promise.reject(i)}let n=[];this.interceptors.request.forEach((i)=>{n.push(i.onFulfilled,i.onRejected)}),n.push((i)=>this.dispatch(i),void 0);let r=[];this.interceptors.response.forEach((i)=>{r.push({onFulfilled:i.onFulfilled,onRejected:i.onRejected})});for(let i=r.length-1;i>=0;i-=1){let s=r[i];n.push(s.onFulfilled,s.onRejected)}let o=Promise.resolve(t);while(n.length>0){let i=n.shift(),s=n.shift();o=o.then(i,s)}return o}get(e,t){return this.request({...t,url:e,method:"GET"})}delete(e,t){return this.request({...t,url:e,method:"DELETE"})}head(e,t){return this.request({...t,url:e,method:"HEAD"})}options(e,t){return this.request({...t,url:e,method:"OPTIONS"})}post(e,t,n){return this.request({...n,url:e,method:"POST",data:t})}put(e,t,n){return this.request({...n,url:e,method:"PUT",data:t})}patch(e,t,n){return this.request({...n,url:e,method:"PATCH",data:t})}dispatch(e){return Be(e,this.instanceAdapter,this.instancePlatform).then((t)=>t.request(e))}mergeConfig(e){if(!e||typeof e!=="object")throw new E({code:"BAD_REQUEST",message:"Request config must be an object",config:e});let t={...this.instanceDefaults,...e,headers:K(this.instanceDefaults.headers,e.headers),params:{...this.instanceDefaults.params,...e.params}};if(typeof t.url!=="string"||t.url.length===0)throw new E({code:"BAD_REQUEST",message:"Request url is required",config:t});try{t.method=ge(t.method)}catch(n){throw new E({code:"BAD_REQUEST",message:n.message,config:t,cause:n})}return t}}var Yi=new Ce;var nn="tc-chart-canvas",rn=150;class gt extends Z{chart=null;destroyed=!1;resizeDebounced=null;resizeObserver=null;mpResizeHandler=null;hoverHandlers=[];initState(){return{canvasId:nn}}initStyles(){this.styleManager.addStyle("tc-chart-host",{selector:":host",properties:{display:"block",height:"100%",width:"100%"}}),this.styleManager.addStyle("tc-chart-canvas",{selector:".tc-chart__canvas",properties:{display:"block",height:"100%",width:"100%"}})}render(){return Xe("canvas",{id:this.state.canvasId,className:`tc-chart__canvas${this.props.className?` ${this.props.className}`:""}`,type:"2d"})}onMounted(){this.attachChart(),this.setupAutoResize(),this.setupHoverEvents()}onUpdated(){if(this.chart&&!this.destroyed)this.chart.setOption(this.props.option).render();else if(!this.chart&&!this.destroyed)this.attachChart()}onUnmounted(){this.teardownAutoResize(),this.teardownHoverEvents(),this.destroyed=!0,this.chart?.destroy(),this.chart=null}getChart(){return this.chart}attachChart(){if(this.destroyed)return;this.resolveContext().then((e)=>{if(this.destroyed||!e)return;this.chart=Q(e,this.props.option),this.chart.render()}).catch((e)=>{console.error("[TcChart] attach failed:",e)})}getElement(){return this.el}setupHoverEvents(){if(D())return;if(this.destroyed||this.hoverHandlers.length>0)return;let e=this.getElement();if(!e||typeof e.addEventListener!=="function")return;let t=(r)=>{let o=this.chart;if(!o)return;let i=r,s=e.getBoundingClientRect(),a=i.clientX-s.left,l=i.clientY-s.top,c=s.width,p=s.height;if(c>0&&p>0)o.resize(c,p);o.setHover(a,l)},n=()=>{this.chart?.clearHover()};e.addEventListener("mousemove",t),e.addEventListener("mouseleave",n),this.hoverHandlers=[["mousemove",t],["mouseleave",n]]}teardownHoverEvents(){let e=this.getElement();for(let[t,n]of this.hoverHandlers)e?.removeEventListener(t,n);this.hoverHandlers=[]}setupAutoResize(){if(this.destroyed||this.resizeDebounced)return;this.resizeDebounced=Te(()=>this.handleResize(),rn);let e=D();if(e){let n=I(e);if(n&&typeof n.onWindowResize==="function")this.mpResizeHandler=()=>this.resizeDebounced.run(),n.onWindowResize(this.mpResizeHandler);return}let t=this.getElement();if(t&&typeof t.getContext==="function"&&typeof ResizeObserver==="function")this.resizeObserver=new ResizeObserver(()=>this.resizeDebounced.run()),this.resizeObserver.observe(t)}teardownAutoResize(){if(this.resizeObserver?.disconnect(),this.resizeObserver=null,this.resizeDebounced?.cancel(),this.resizeDebounced=null,this.mpResizeHandler){let e=D(),t=e?I(e):null;if(t&&typeof t.offWindowResize==="function")t.offWindowResize(this.mpResizeHandler);this.mpResizeHandler=null}}handleResize(){if(this.destroyed)return;if(D()){this.chart?.destroy(),this.chart=null,this.attachChart();return}let e=this.getElement();if(!e||typeof e.getContext!=="function")return;let t=e.clientWidth||0,n=e.clientHeight||0;if(t<=0||n<=0)return;if(!this.chart){this.attachChart();return}let r=H();e.width=Math.round(t*r),e.height=Math.round(n*r),this.chart.resize(t,n,r).render()}resolveContext(){if(this.props.resolve)return Promise.resolve(this.props.resolve(this.getElement()));let e=D();if(e){let n=`#${this.state.canvasId}`,r=(o)=>ue({platform:e,instance:this,selector:n}).then((i)=>U(i)).catch((i)=>{if(o<=0)throw i;return new Promise((s)=>setTimeout(s,50)).then(()=>r(o-1))});return r(5)}let t=this.getElement();if(!t||typeof t.getContext!=="function")return Promise.resolve(null);return Promise.resolve(G(t))}}export{ie as BarChart,re as CategoryScale,A as ChartBase,_e as DEFAULT_AXIS_COLOR,ne as DEFAULT_FONT_FAMILY,Re as DEFAULT_GRID_COLOR,ze as DEFAULT_PALETTE,X as DEFAULT_TEXT_COLOR,oe as LineChart,Y as LinearScale,ae as PieChart,le as RadarChart,gt as TcChart,xe as computeLayout,Q as createChart,Lt as createMiniProgramChart,Pt as createWebChart,Te as debounce,ce as detectMiniProgramPixelRatio,H as detectPixelRatio,ue as getMiniProgramCanvasNode,I as getMiniProgramGlobal,bt as isCanvas2DLike,Fe as niceTicks,U as resolveMiniProgramCanvas,$e as resolveNativeCanvas,G as resolveWebCanvas};
15
15
 
16
- //# debugId=0275C413C5C4432664756E2164756E21
16
+ //# debugId=8FD37A8531491D8164756E2164756E21
17
17
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -14,9 +14,9 @@
14
14
  "/**\n * 折线图:多系列 / 平滑曲线 / 面积填充 / 数据点标记。\n * 类目 x 轴 + 数值 y 轴,复用 ChartBase 的笛卡尔管线。\n */\n\nimport type { ICanvas2D } from '../core/canvas';\nimport { ChartBase } from '../core/chart';\nimport type { LayoutResult } from '../core/layout';\nimport type { LegendItem } from '../core/legend';\nimport type { LineChartOption, TooltipParams } from '../types';\n\ninterface Point {\n x: number;\n y: number;\n}\n\nexport class LineChart extends ChartBase<LineChartOption> {\n protected getValueDomain(): { min: number; max: number } {\n const { series, yAxis, startFromZero = false } = this.option;\n let min = Infinity;\n let max = -Infinity;\n for (const s of series) {\n for (const value of s.data) {\n if (value < min) {\n min = value;\n }\n if (value > max) {\n max = value;\n }\n }\n }\n if (!Number.isFinite(min) || !Number.isFinite(max)) {\n return { min: 0, max: 1 };\n }\n if (startFromZero && min > 0) {\n min = 0;\n }\n if (yAxis?.min !== undefined) {\n min = Math.min(min, yAxis.min);\n }\n if (yAxis?.max !== undefined) {\n max = Math.max(max, yAxis.max);\n }\n return { min, max };\n }\n\n protected getCategoryLabels(): readonly string[] {\n return this.option.xAxis.labels;\n }\n\n protected getLegendItems(): LegendItem[] {\n return this.option.series\n .filter((s) => s.name)\n .map((s, i) => ({\n name: s.name as string,\n color: this.seriesColor(i, s.color),\n }));\n }\n\n protected drawSeries(\n ctx: ICanvas2D,\n layout: LayoutResult,\n option: LineChartOption\n ): void {\n const scales = this.cartesian;\n if (!scales) {\n return;\n }\n const { plot } = layout;\n const { value, category } = scales;\n const hoverIndex = this.getHoverCategoryIndex();\n\n const pointsPerSeries: Point[][] = option.series.map((series) =>\n series.data.map((d, i) => ({\n x: category.center(i),\n y: value.scale(d),\n }))\n );\n\n // 悬浮参考线:在命中类目中心画一条纵向虚线\n if (hoverIndex >= 0) {\n const hx = category.center(hoverIndex);\n ctx.save();\n ctx.strokeStyle = '#c8c9cc';\n ctx.lineWidth = 1;\n ctx.setLineDash([4, 3]);\n ctx.beginPath();\n ctx.moveTo(hx, plot.y);\n ctx.lineTo(hx, plot.y + plot.height);\n ctx.stroke();\n ctx.restore();\n }\n\n option.series.forEach((series, index) => {\n const points = pointsPerSeries[index];\n if (points.length === 0) {\n return;\n }\n const color = this.seriesColor(index, series.color);\n const lineWidth = series.lineWidth ?? 2;\n\n // 面积填充(先画,保证在折线之下)\n if (series.area) {\n ctx.save();\n ctx.fillStyle = color;\n ctx.globalAlpha = 0.15;\n ctx.beginPath();\n this.tracePath(ctx, points, series.smooth ?? false);\n ctx.lineTo(points[points.length - 1].x, plot.y + plot.height);\n ctx.lineTo(points[0].x, plot.y + plot.height);\n ctx.closePath();\n ctx.fill();\n ctx.restore();\n }\n\n // 折线\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.lineJoin = 'round';\n ctx.lineCap = 'round';\n ctx.beginPath();\n this.tracePath(ctx, points, series.smooth ?? false);\n ctx.stroke();\n ctx.restore();\n\n // 数据点标记\n if (series.showSymbol !== false) {\n const baseR = Math.max(2.5, lineWidth + 0.5);\n ctx.save();\n ctx.fillStyle = color;\n for (let i = 0; i < points.length; i += 1) {\n const p = points[i];\n const r = i === hoverIndex ? baseR * 1.6 : baseR;\n ctx.beginPath();\n ctx.arc(p.x, p.y, r, 0, Math.PI * 2);\n ctx.fill();\n }\n ctx.restore();\n }\n });\n }\n\n /** 命中检测:x 落在某类目带内即显示该类目所有系列值(y 在绘图区内即可)。 */\n protected hitTestSeries(x: number, y: number): TooltipParams | null {\n const scales = this.cartesian;\n const plot = this.plot;\n if (!scales || !plot) {\n return null;\n }\n if (y < plot.y || y > plot.y + plot.height) {\n return null;\n }\n const labels = this.option.xAxis.labels;\n let best = -1;\n let bestDist = Infinity;\n for (let i = 0; i < labels.length; i += 1) {\n const d = Math.abs(scales.category.center(i) - x);\n if (d < bestDist) {\n bestDist = d;\n best = i;\n }\n }\n if (best < 0 || bestDist > scales.category.bandWidth / 2) {\n return null;\n }\n const items = this.option.series.map((s, i) => ({\n name: s.name ?? `系列${i + 1}`,\n value: s.data[best] ?? 0,\n color: this.seriesColor(i, s.color),\n }));\n return { x, y, name: labels[best], items };\n }\n\n /** 从 hover 状态解析命中的类目索引,未命中返回 -1。 */\n private getHoverCategoryIndex(): number {\n const hover = this.hover;\n if (!hover) {\n return -1;\n }\n const labels = this.option.xAxis.labels;\n return labels.indexOf(hover.name);\n }\n\n /** 折线路径:直线或 Catmull-Rom 平滑插值(三次贝塞尔)。 */\n private tracePath(ctx: ICanvas2D, points: readonly Point[], smooth: boolean): void {\n if (points.length === 0) {\n return;\n }\n ctx.moveTo(points[0].x, points[0].y);\n if (!smooth || points.length < 3) {\n for (let i = 1; i < points.length; i += 1) {\n ctx.lineTo(points[i].x, points[i].y);\n }\n return;\n }\n\n for (let i = 0; i < points.length - 1; i += 1) {\n const p0 = points[Math.max(0, i - 1)];\n const p1 = points[i];\n const p2 = points[i + 1];\n const p3 = points[Math.min(points.length - 1, i + 2)];\n\n const cp1x = p1.x + (p2.x - p0.x) / 6;\n const cp1y = p1.y + (p2.y - p0.y) / 6;\n const cp2x = p2.x - (p3.x - p1.x) / 6;\n const cp2y = p2.y - (p3.y - p1.y) / 6;\n\n ctx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, p2.x, p2.y);\n }\n }\n}\n",
15
15
  "/**\n * 柱状图:纵向 / 横向,支持多系列分组与 stack 堆叠。\n *\n * 几何规则:\n * - 分组:同一类目内多个系列并排,子柱宽 = 类目带宽 × (1 - gap) / 系列数 × 0.8\n * - 堆叠:同名 stack 系列共用一根柱,后一个系列从前一个的顶端继续累加\n * - 数值轴强制包含 0(柱形高度必须从零线起算才有意义)\n */\n\nimport type { ICanvas2D } from '../core/canvas';\nimport { ChartBase } from '../core/chart';\nimport type { CategoryScale } from '../core/scale';\nimport type { LayoutResult } from '../core/layout';\nimport type { LegendItem } from '../core/legend';\nimport type { BarChartOption, BarSeries, TooltipParams } from '../types';\n\n/** 柱体在类目带内的水平偏移与宽度(纵向)或垂直偏移与高度(横向)。 */\ninterface Slot {\n offset: number;\n size: number;\n}\n\nexport class BarChart extends ChartBase<BarChartOption> {\n protected isHorizontal(): boolean {\n return this.option.horizontal ?? false;\n }\n\n protected getValueDomain(): { min: number; max: number } {\n const { series, yAxis } = this.option;\n let max = 0;\n let min = 0;\n\n // 堆叠:按 stack 组在类目上累加正负\n const stackGroups = groupStacks(series);\n const categoryCount = Math.max(\n 0,\n ...series.map((s) => s.data.length)\n );\n\n for (let i = 0; i < categoryCount; i += 1) {\n for (const group of stackGroups) {\n let positive = 0;\n let negative = 0;\n for (const s of group) {\n const v = s.data[i] ?? 0;\n if (v >= 0) {\n positive += v;\n } else {\n negative += v;\n }\n }\n if (positive > max) {\n max = positive;\n }\n if (negative < min) {\n min = negative;\n }\n }\n }\n\n if (yAxis?.min !== undefined) {\n min = Math.min(min, yAxis.min);\n }\n if (yAxis?.max !== undefined) {\n max = Math.max(max, yAxis.max);\n }\n return { min, max };\n }\n\n protected getCategoryLabels(): readonly string[] {\n return this.option.xAxis.labels;\n }\n\n protected getLegendItems(): LegendItem[] {\n return this.option.series\n .filter((s) => s.name)\n .map((s, i) => ({\n name: s.name as string,\n color: this.seriesColor(i, s.color),\n }));\n }\n\n protected drawSeries(\n ctx: ICanvas2D,\n layout: LayoutResult,\n option: BarChartOption\n ): void {\n const scales = this.cartesian;\n if (!scales) {\n return;\n }\n void layout; // 柱体几何全部由比例尺绝对坐标决定,无需 plot 引用\n const { value, category } = scales;\n const horizontal = option.horizontal ?? false;\n\n const stackGroups = groupStacks(option.series);\n const categoryCount = option.xAxis.labels.length;\n const hoverIndex = this.getHoverCategoryIndex();\n\n for (let i = 0; i < categoryCount; i += 1) {\n // 每个类目带内:无堆叠时按系列分组并排;有堆叠时按 stack 组并排\n const groups = stackGroups;\n const seriesCount = groups.length;\n const explicitWidth = option.series\n .map((s) => s.barWidth)\n .find((w) => w !== undefined && w > 0);\n const slot = this.computeSlot(category, seriesCount, explicitWidth);\n const isHovered = hoverIndex === i;\n\n groups.forEach((group, groupIndex) => {\n const slotOffset = slot.offset + groupIndex * slot.size;\n let cursor = 0; // 堆叠游标(绝对值累加)\n\n group.forEach((series) => {\n const raw = series.data[i] ?? 0;\n const baseColor = this.seriesColor(\n option.series.indexOf(series),\n series.color\n );\n const color = isHovered ? lightenColor(baseColor, 0.25) : baseColor;\n\n if (horizontal) {\n const x0 = value.scale(0);\n const x1 = value.scale(cursor + raw);\n const base = Math.min(x0, x1);\n const width = Math.abs(x1 - x0);\n const y = category.bandStart(i) + slotOffset;\n this.drawBar(ctx, {\n x: base,\n y,\n width,\n height: slot.size,\n radius: series.borderRadius ?? 0,\n color,\n roundSide: raw >= 0 ? 'right' : 'left',\n });\n } else {\n const y0 = value.scale(cursor);\n const y1 = value.scale(cursor + raw);\n const top = Math.min(y0, y1);\n const height = Math.abs(y1 - y0);\n const x = category.bandStart(i) + slotOffset;\n this.drawBar(ctx, {\n x,\n y: top,\n width: slot.size,\n height,\n radius: series.borderRadius ?? 0,\n color,\n roundSide: raw >= 0 ? 'top' : 'bottom',\n });\n }\n\n cursor += raw;\n });\n });\n }\n }\n\n /** 命中检测:点落在某类目的柱体带内即显示该类目所有系列值。 */\n protected hitTestSeries(x: number, y: number): TooltipParams | null {\n const scales = this.cartesian;\n if (!scales) {\n return null;\n }\n const horizontal = this.option.horizontal ?? false;\n const labels = this.getCategoryLabels();\n\n // 命中整个类目带(含柱间间隙):鼠标在类目带内即命中,避免间隙处 tooltip 消失\n for (let i = 0; i < labels.length; i += 1) {\n const start = scales.category.bandStart(i);\n const band = scales.category.bandWidth;\n const hit = horizontal\n ? y >= start && y <= start + band\n : x >= start && x <= start + band;\n if (!hit) {\n continue;\n }\n // 该类目下所有系列(堆叠时为各段值)\n const items = this.option.series.map((s, si) => ({\n name: s.name ?? `系列${si + 1}`,\n value: s.data[i] ?? 0,\n color: this.seriesColor(si, s.color),\n }));\n return { x, y, name: labels[i], items };\n }\n return null;\n }\n\n /** 从 hover 状态解析命中的类目索引,未命中返回 -1。 */\n private getHoverCategoryIndex(): number {\n const hover = this.hover;\n if (!hover) {\n return -1;\n }\n const labels = this.getCategoryLabels();\n return labels.indexOf(hover.name);\n }\n\n private computeSlot(\n category: CategoryScale,\n groupCount: number,\n explicitWidth?: number\n ): Slot {\n const band = category.bandWidth;\n const inner = category.innerWidth();\n if (explicitWidth !== undefined) {\n // 显式柱宽:整组在类目带内居中\n return {\n offset: (band - explicitWidth * groupCount) / 2,\n size: explicitWidth,\n };\n }\n const size = (inner / Math.max(1, groupCount)) * 0.8;\n // 柱区(size × groupCount)先在 inner 内居中,再随 inner 在类目带内居中,\n // 保证整组柱中心落在类目中心(与轴标签 center(i) 对齐)。\n const bandSide = (band - inner) / 2;\n const innerSide = (inner - size * groupCount) / 2;\n return { offset: bandSide + innerSide, size };\n }\n\n private drawBar(\n ctx: ICanvas2D,\n bar: {\n x: number;\n y: number;\n width: number;\n height: number;\n radius: number;\n color: string;\n roundSide: 'top' | 'bottom' | 'right' | 'left';\n }\n ): void {\n if (bar.width <= 0 || bar.height <= 0) {\n return;\n }\n ctx.save();\n ctx.fillStyle = bar.color;\n ctx.beginPath();\n roundRectPath(ctx, bar, bar.radius, bar.roundSide);\n ctx.fill();\n ctx.restore();\n }\n}\n\n/** 按 stack 分组:无 stack 的系列各自成组;同名 stack 合并为一组。 */\nfunction groupStacks(series: readonly BarSeries[]): BarSeries[][] {\n const groups: BarSeries[][] = [];\n const stackMap = new Map<string, BarSeries[]>();\n\n for (const s of series) {\n if (s.stack) {\n let group = stackMap.get(s.stack);\n if (!group) {\n group = [];\n stackMap.set(s.stack, group);\n groups.push(group);\n }\n group.push(s);\n } else {\n groups.push([s]);\n }\n }\n return groups;\n}\n\n/**\n * 圆角柱体路径:仅 roundSide 指示的一侧(两个角)圆角。\n * - 纵向柱:'top' 顶部两角 / 'bottom' 底部两角\n * - 横向柱:'right' 右侧两角 / 'left' 左侧两角\n */\nfunction roundRectPath(\n ctx: ICanvas2D,\n bar: { x: number; y: number; width: number; height: number },\n radius: number,\n roundSide: 'top' | 'bottom' | 'right' | 'left'\n): void {\n const { x, y, width, height } = bar;\n const r = Math.min(radius, width / 2, height / 2);\n if (r <= 0) {\n ctx.rect(x, y, width, height);\n return;\n }\n\n const roundTopLeft = roundSide === 'top' || roundSide === 'left';\n const roundTopRight = roundSide === 'top' || roundSide === 'right';\n const roundBottomLeft = roundSide === 'bottom' || roundSide === 'left';\n const roundBottomRight = roundSide === 'bottom' || roundSide === 'right';\n\n ctx.moveTo(x + (roundTopLeft ? r : 0), y);\n ctx.lineTo(x + width - (roundTopRight ? r : 0), y);\n if (roundTopRight) {\n ctx.arcTo(x + width, y, x + width, y + r, r);\n } else {\n ctx.lineTo(x + width, y);\n }\n\n ctx.lineTo(x + width, y + height - (roundBottomRight ? r : 0));\n if (roundBottomRight) {\n ctx.arcTo(x + width, y + height, x + width - r, y + height, r);\n } else {\n ctx.lineTo(x + width, y + height);\n }\n\n ctx.lineTo(x + (roundBottomLeft ? r : 0), y + height);\n if (roundBottomLeft) {\n ctx.arcTo(x, y + height, x, y + height - r, r);\n } else {\n ctx.lineTo(x, y + height);\n }\n\n ctx.lineTo(x, y + (roundTopLeft ? r : 0));\n if (roundTopLeft) {\n ctx.arcTo(x, y, x + r, y, r);\n } else {\n ctx.lineTo(x, y);\n }\n ctx.closePath();\n}\n\n/** 将颜色向白色方向混合 amount(0~1),支持 #rrggbb 与 rgba()。 */\nfunction lightenColor(color: string, amount: number): string {\n const a = Math.max(0, Math.min(1, amount));\n\n // #rrggbb / #rgb\n const hex = color.match(/^#([0-9a-f]{3,8})$/i);\n if (hex) {\n let r: number;\n let g: number;\n let b: number;\n const h = hex[1];\n if (h.length === 3) {\n r = parseInt(h[0] + h[0], 16);\n g = parseInt(h[1] + h[1], 16);\n b = parseInt(h[2] + h[2], 16);\n } else {\n r = parseInt(h.slice(0, 2), 16);\n g = parseInt(h.slice(2, 4), 16);\n b = parseInt(h.slice(4, 6), 16);\n }\n r = Math.round(r + (255 - r) * a);\n g = Math.round(g + (255 - g) * a);\n b = Math.round(b + (255 - b) * a);\n return `rgb(${r}, ${g}, ${b})`;\n }\n\n // rgba(r, g, b, a?) / rgb(r, g, b)\n const rgba = color.match(/rgba?\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)/);\n if (rgba) {\n const r = Math.round(parseInt(rgba[1]) + (255 - parseInt(rgba[1])) * a);\n const g = Math.round(parseInt(rgba[2]) + (255 - parseInt(rgba[2])) * a);\n const b = Math.round(parseInt(rgba[3]) + (255 - parseInt(rgba[3])) * a);\n return `rgb(${r}, ${g}, ${b})`;\n }\n\n return color;\n}\n",
16
16
  "/**\n * 饼图 / 环形图:扇区绘制、百分比标签、图例。\n * 无笛卡尔坐标轴,全部几何在绘图区内按极坐标计算。\n */\n\nimport type { ICanvas2D } from '../core/canvas';\nimport { ChartBase } from '../core/chart';\nimport type { LayoutResult } from '../core/layout';\nimport type { LegendItem } from '../core/legend';\nimport { applyFont } from '../core/text';\nimport type { PieChartOption, TooltipParams } from '../types';\n\nconst TWO_PI = Math.PI * 2;\n\nexport class PieChart extends ChartBase<PieChartOption> {\n protected hasCartesianAxis(): boolean {\n return false;\n }\n\n protected getLegendItems(): LegendItem[] {\n return this.option.data.map((d, i) => ({\n name: d.name,\n color: d.color ?? this.seriesColor(i),\n }));\n }\n\n /** 命中检测:点落在某扇区(环形环带内)即显示该扇区名与数值占比。 */\n protected hitTestSeries(x: number, y: number): TooltipParams | null {\n const plot = this.plot;\n if (!plot) {\n return null;\n }\n const centerX = plot.x + plot.width / 2;\n const centerY = plot.y + plot.height / 2;\n const maxRadius = Math.min(plot.width, plot.height) / 2;\n const outerRadius = resolveRadius(this.option.radius ?? '60%', maxRadius);\n const innerRadius = resolveRadius(this.option.innerRadius ?? 0, maxRadius);\n const startAngle = this.option.startAngle ?? -Math.PI / 2;\n\n const dx = x - centerX;\n const dy = y - centerY;\n const dist = Math.hypot(dx, dy);\n if (dist < innerRadius || dist > outerRadius) {\n return null;\n }\n\n const data = this.option.data.filter((d) => d.value > 0);\n const total = data.reduce((sum, d) => sum + d.value, 0);\n if (total <= 0) {\n return null;\n }\n\n // 命中角(canvas 系 y 向下,与绘制时角度递增方向一致)\n let a = Math.atan2(dy, dx);\n while (a < startAngle) {\n a += TWO_PI;\n }\n let cur = startAngle;\n for (let i = 0; i < data.length; i += 1) {\n const d = data[i]!;\n const sweep = (d.value / total) * TWO_PI;\n if (a >= cur && a <= cur + sweep) {\n const percent = Math.round((d.value / total) * 100);\n return {\n x,\n y,\n name: d.name,\n items: [\n {\n name: d.name,\n value: `${percent}%`,\n color: d.color ?? this.seriesColor(i),\n },\n ],\n };\n }\n cur += sweep;\n }\n return null;\n }\n\n protected drawSeries(\n ctx: ICanvas2D,\n layout: LayoutResult,\n option: PieChartOption\n ): void {\n const { plot } = layout;\n const centerX = plot.x + plot.width / 2;\n const centerY = plot.y + plot.height / 2;\n\n const maxRadius =\n Math.min(plot.width, plot.height) / 2;\n const outerRadius = resolveRadius(option.radius ?? '60%', maxRadius);\n const innerRadius = resolveRadius(option.innerRadius ?? 0, maxRadius);\n const startAngle = option.startAngle ?? -Math.PI / 2;\n\n const data = option.data.filter((d) => d.value > 0);\n const total = data.reduce((sum, d) => sum + d.value, 0);\n if (total <= 0 || outerRadius <= 0) {\n return;\n }\n\n let angle = startAngle;\n\n data.forEach((d, index) => {\n const sweep = (d.value / total) * TWO_PI;\n const color = d.color ?? this.seriesColor(index);\n\n ctx.save();\n ctx.fillStyle = color;\n ctx.beginPath();\n if (innerRadius > 0) {\n // 环形:外弧 → 内弧(反向)闭合\n ctx.arc(centerX, centerY, outerRadius, angle, angle + sweep);\n ctx.arc(\n centerX,\n centerY,\n innerRadius,\n angle + sweep,\n angle,\n true\n );\n } else {\n ctx.arc(centerX, centerY, outerRadius, angle, angle + sweep);\n ctx.lineTo(centerX, centerY);\n }\n ctx.closePath();\n ctx.fill();\n // 扇区间分隔线\n ctx.strokeStyle = '#ffffff';\n ctx.lineWidth = 1;\n ctx.stroke();\n ctx.restore();\n\n // 扇区标签:名称 + 百分比\n // - inside(默认):画在扇区角平分线上(白字)\n // - outside:引线把文字引到扇区外(右半区左对齐、左半区右对齐,避免文字跨越中线)\n if (option.showLabel !== false) {\n const midAngle = angle + sweep / 2;\n const percent = total > 0 ? Math.round((d.value / total) * 100) : 0;\n const text = `${d.name} ${percent}%`;\n\n if (option.labelPosition === 'outside') {\n const lineLength = option.labelLineLength ?? 14;\n const gap = option.labelGap ?? 6;\n const dirX = Math.cos(midAngle);\n const dirY = Math.sin(midAngle);\n // 引线第一段:扇区边缘沿平分线向外\n const edgeX = centerX + dirX * outerRadius;\n const edgeY = centerY + dirY * outerRadius;\n const bendX = centerX + dirX * (outerRadius + lineLength);\n const bendY = centerY + dirY * (outerRadius + lineLength);\n // 第二段:水平延伸到文字锚点(右半向右、左半向左)\n const horizontal = dirX >= 0 ? 1 : -1;\n const textX = bendX + horizontal * gap;\n const textY = bendY;\n\n ctx.save();\n ctx.strokeStyle = option.labelLineColor ?? '#c0c4cc';\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.moveTo(edgeX, edgeY);\n ctx.lineTo(bendX, bendY);\n ctx.lineTo(textX, textY);\n ctx.stroke();\n ctx.restore();\n\n applyFont(ctx, option.labelFontSize ?? 10);\n ctx.fillStyle = option.labelColor ?? '#323233';\n ctx.textAlign = horizontal > 0 ? 'left' : 'right';\n ctx.textBaseline = 'middle';\n ctx.fillText(text, textX, textY);\n } else {\n const labelRadius =\n ((outerRadius + (innerRadius > 0 ? innerRadius : 0)) / 2) * 0.85;\n const labelX = centerX + Math.cos(midAngle) * labelRadius;\n const labelY = centerY + Math.sin(midAngle) * labelRadius;\n\n applyFont(ctx, option.labelFontSize ?? 10);\n ctx.fillStyle = option.labelColor ?? '#ffffff';\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillText(text, labelX, labelY);\n }\n }\n\n angle += sweep;\n });\n }\n}\n\n/** 解析半径:数字为像素;'60%' 形式按最大半径百分比。 */\nfunction resolveRadius(value: number | string, maxRadius: number): number {\n if (typeof value === 'number') {\n return Math.max(0, value);\n }\n const match = /^(\\d+(?:\\.\\d+)?)%$/.exec(value);\n if (!match) {\n return maxRadius;\n }\n return (Number(match[1]) / 100) * maxRadius;\n}\n",
17
- "/**\n * 雷达图:多边形网格 + 指标轴 + 多系列区域/折线。\n * 指标刻度按各 indicator.max(缺省取所有系列该指标最大值)归一化。\n */\n\nimport type { ICanvas2D } from '../core/canvas';\nimport { ChartBase } from '../core/chart';\nimport type { LayoutResult } from '../core/layout';\nimport type { LegendItem } from '../core/legend';\nimport { applyFont } from '../core/text';\nimport type { RadarChartOption, TooltipParams } from '../types';\n\ninterface PolarPoint {\n x: number;\n y: number;\n}\n\nexport class RadarChart extends ChartBase<RadarChartOption> {\n protected hasCartesianAxis(): boolean {\n return false;\n }\n\n protected getLegendItems(): LegendItem[] {\n return this.option.series\n .filter((s) => s.name)\n .map((s, i) => ({\n name: s.name as string,\n color: this.seriesColor(i, s.color),\n }));\n }\n\n protected drawSeries(\n ctx: ICanvas2D,\n layout: LayoutResult,\n option: RadarChartOption\n ): void {\n const { plot } = layout;\n const centerX = plot.x + plot.width / 2;\n const centerY = plot.y + plot.height / 2;\n const radius =\n option.radius ?? Math.min(plot.width, plot.height) / 2 * 0.6;\n const count = option.indicators.length;\n if (count === 0 || radius <= 0) {\n return;\n }\n\n const startAngle = option.startAngle ?? -Math.PI / 2;\n const step = TWO_PI / count;\n const splitCount = Math.max(1, option.splitCount ?? 5);\n const gridColor = option.gridColor ?? '#ebedf0';\n const gridLineWidth = option.gridLineWidth ?? 1;\n\n const vertexAngle = (index: number): number =>\n startAngle + index * step;\n\n const polarPoint = (angle: number, r: number): PolarPoint => ({\n x: centerX + Math.cos(angle) * r,\n y: centerY + Math.sin(angle) * r,\n });\n\n // 网格层:同心多边形\n for (let layer = 1; layer <= splitCount; layer += 1) {\n const r = (radius * layer) / splitCount;\n ctx.save();\n ctx.strokeStyle = gridColor;\n ctx.lineWidth = gridLineWidth;\n ctx.beginPath();\n for (let i = 0; i < count; i += 1) {\n const p = polarPoint(vertexAngle(i), r);\n if (i === 0) {\n ctx.moveTo(p.x, p.y);\n } else {\n ctx.lineTo(p.x, p.y);\n }\n }\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n }\n\n // 指标轴线\n ctx.save();\n ctx.strokeStyle = gridColor;\n ctx.lineWidth = gridLineWidth;\n ctx.beginPath();\n for (let i = 0; i < count; i += 1) {\n const p = polarPoint(vertexAngle(i), radius);\n ctx.moveTo(centerX, centerY);\n ctx.lineTo(p.x, p.y);\n }\n ctx.stroke();\n ctx.restore();\n\n // 指标标签(顶点外侧)\n const labelFontSize = option.labelFontSize ?? 11;\n applyFont(ctx, labelFontSize);\n ctx.fillStyle = option.labelColor ?? '#323233';\n for (let i = 0; i < count; i += 1) {\n const p = polarPoint(vertexAngle(i), radius + 12);\n ctx.textAlign = Math.abs(p.x - centerX) < 1 ? 'center' : p.x > centerX ? 'left' : 'right';\n ctx.textBaseline =\n Math.abs(p.y - centerY) < 1\n ? 'middle'\n : p.y > centerY\n ? 'top'\n : 'bottom';\n ctx.fillText(option.indicators[i].name, p.x, p.y);\n }\n\n // 系列区域 / 折线\n option.series.forEach((series, seriesIndex) => {\n const color = this.seriesColor(seriesIndex, series.color);\n const points: PolarPoint[] = option.indicators.map((indicator, i) => {\n const max =\n indicator.max ?? this.indicatorMax(option, i);\n const value = series.data[i] ?? 0;\n const ratio = max > 0 ? Math.max(0, Math.min(1, value / max)) : 0;\n return polarPoint(vertexAngle(i), radius * ratio);\n });\n\n if (series.area !== false) {\n ctx.save();\n ctx.fillStyle = color;\n ctx.globalAlpha = 0.2;\n ctx.beginPath();\n this.tracePolygon(ctx, points);\n ctx.closePath();\n ctx.fill();\n ctx.restore();\n }\n\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = series.lineWidth ?? 2;\n ctx.lineJoin = 'round';\n ctx.beginPath();\n this.tracePolygon(ctx, points);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n });\n }\n\n /** 命中检测:靠近任一数据顶点(阈值 24px)即显示该指标下所有系列值。 */\n protected hitTestSeries(x: number, y: number): TooltipParams | null {\n const plot = this.plot;\n if (!plot) {\n return null;\n }\n const centerX = plot.x + plot.width / 2;\n const centerY = plot.y + plot.height / 2;\n const radius =\n this.option.radius ?? (Math.min(plot.width, plot.height) / 2) * 0.6;\n const count = this.option.indicators.length;\n if (count === 0) {\n return null;\n }\n const startAngle = this.option.startAngle ?? -Math.PI / 2;\n const step = TWO_PI / count;\n\n let best = -1;\n let bestDist = 24; // 命中阈值(px)\n for (let i = 0; i < count; i += 1) {\n const max =\n this.option.indicators[i].max ?? this.indicatorMax(this.option, i);\n const angle = startAngle + i * step;\n for (let si = 0; si < this.option.series.length; si += 1) {\n const value = this.option.series[si].data[i] ?? 0;\n const ratio = max > 0 ? Math.max(0, Math.min(1, value / max)) : 0;\n const px = centerX + Math.cos(angle) * radius * ratio;\n const py = centerY + Math.sin(angle) * radius * ratio;\n const d = Math.hypot(x - px, y - py);\n if (d < bestDist) {\n bestDist = d;\n best = i;\n }\n }\n }\n if (best < 0) {\n return null;\n }\n const items = this.option.series.map((s, si) => ({\n name: s.name ?? `系列${si + 1}`,\n value: s.data[best] ?? 0,\n color: this.seriesColor(si, s.color),\n }));\n return {\n x,\n y,\n name: this.option.indicators[best]!.name,\n items,\n };\n }\n\n private indicatorMax(option: RadarChartOption, index: number): number {\n let max = 0;\n for (const series of option.series) {\n const v = series.data[index] ?? 0;\n if (v > max) {\n max = v;\n }\n }\n return max;\n }\n\n private tracePolygon(ctx: ICanvas2D, points: readonly PolarPoint[]): void {\n if (points.length === 0) {\n return;\n }\n ctx.moveTo(points[0].x, points[0].y);\n for (let i = 1; i < points.length; i += 1) {\n ctx.lineTo(points[i].x, points[i].y);\n }\n }\n}\n\nconst TWO_PI = Math.PI * 2;\n",
18
- "/**\n * 平台适配层:把各端 Canvas 2D 上下文解析为统一渲染上下文\n * (ICanvas2D + 逻辑尺寸 + DPR)。\n *\n * 适配器只负责三件事:\n * 1. 拿到上下文(HTMLCanvasElement / 小程序 canvas node / 未来原生 canvas)\n * 2. 计算设备像素比并设置物理画布尺寸\n * 3. 返回引擎需要的 ChartRenderContext\n *\n * 引擎代码永远不直接接触 DOM / wx / native API。\n */\n\nimport type { ChartRenderContext } from '../types';\n\nexport interface ResolveCanvasOptions {\n /** 逻辑宽度(CSS px);缺省取节点实际尺寸。 */\n width?: number;\n /** 逻辑高度(CSS px);缺省取节点实际尺寸。 */\n height?: number;\n /** 设备像素比;缺省自动探测。 */\n dpr?: number;\n /** 自定义色板。 */\n palette?: readonly string[];\n}\n\nexport interface ResolvedCanvas {\n context: ChartRenderContext;\n}\n\n/** 通用探测设备像素比(web 与小程序可用 globalThis 访问)。 */\nexport function detectPixelRatio(): number {\n const host = getHost();\n if (typeof host.devicePixelRatio === 'number' && host.devicePixelRatio > 0) {\n return host.devicePixelRatio;\n }\n return 1;\n}\n\nfunction getHost(): Record<string, unknown> {\n if (typeof globalThis !== 'undefined') {\n return globalThis as unknown as Record<string, unknown>;\n }\n return {};\n}\n",
19
- "/**\n * 小程序适配器:微信 / 阿里 / 字节的 Canvas 2D 节点 → ChartRenderContext。\n *\n * 获取流程(各端一致,仅全局名不同):\n * canvas type=\"2d\" → 节点 node → node.getContext('2d') → ICanvas2D\n *\n * 节点获取依赖 SelectorQuery,属于组件生命周期职责,由\n * getMiniProgramCanvasNode() 提供;本文件只负责「节点 → 上下文」,\n * 以及 DPR 探测(pixelRatio 从各端系统信息接口读取)。\n */\n\nimport type { ChartRenderContext } from '../types';\nimport type { ICanvas2D } from '../core/canvas';\nimport { detectPixelRatio, type ResolveCanvasOptions } from './types';\n\n/** 小程序 Canvas 2D 节点(各端 node 的公共形状)。 */\nexport interface MiniProgramCanvasNode {\n getContext(type: '2d'): unknown;\n width: number;\n height: number;\n}\n\nexport type MiniProgramGlobal = 'wx' | 'my' | 'tt';\n\n/** 安全读取小程序全局(避免与官方类型定义冲突,模式同 transone request)。 */\nexport function getMiniProgramGlobal(\n name: MiniProgramGlobal\n): Record<string, unknown> | null {\n const host = getHost();\n const api = host[name];\n return typeof api === 'object' && api !== null\n ? (api as Record<string, unknown>)\n : null;\n}\n\n/**\n * 通过 SelectorQuery 获取 Canvas 2D 节点(组件/页面内调用)。\n * 各端 API 形状一致:createSelectorQuery().in(instance).select(selector)\n * .fields({ node: true, size: true }).exec(callback)\n */\nexport function getMiniProgramCanvasNode(options: {\n /** 端标识,缺省自动探测(wx → my → tt)。 */\n platform?: MiniProgramGlobal;\n /** 组件/页面实例(.in() 入参)。 */\n instance?: unknown;\n /** canvas 选择器,如 '#chart'。 */\n selector: string;\n}): Promise<MiniProgramCanvasNode> {\n const platform =\n options.platform ?? detectMiniProgramGlobal() ?? 'wx';\n const api = getMiniProgramGlobal(platform);\n const queryFn = api?.createSelectorQuery;\n if (typeof queryFn !== 'function') {\n return Promise.reject(\n new Error(`getMiniProgramCanvasNode: ${platform}.createSelectorQuery is not available`)\n );\n }\n\n return new Promise((resolve, reject) => {\n let query = queryFn.call(api);\n if (options.instance && typeof query.in === 'function') {\n query = query.in(options.instance);\n }\n if (typeof query.select !== 'function') {\n reject(new Error(`${platform}.createSelectorQuery().select is not available`));\n return;\n }\n query\n .select(options.selector)\n .fields({ node: true, size: true })\n .exec((res: unknown) => {\n const first = Array.isArray(res) ? res[0] : undefined;\n const node = first?.node as MiniProgramCanvasNode | undefined;\n if (!node || typeof node.getContext !== 'function') {\n reject(\n new Error(\n `getMiniProgramCanvasNode: canvas node not found for \"${options.selector}\"`\n )\n );\n return;\n }\n resolve(node);\n });\n });\n}\n\n/** 探测当前小程序全局(wx → my → tt),均不存在返回 null。 */\nexport function detectMiniProgramGlobal(): MiniProgramGlobal | null {\n if (getMiniProgramGlobal('wx')) {\n return 'wx';\n }\n if (getMiniProgramGlobal('my')) {\n return 'my';\n }\n if (getMiniProgramGlobal('tt')) {\n return 'tt';\n }\n return null;\n}\n\n/** 读取各端设备像素比(wx.getSystemInfoSync / my.getSystemInfoSync / tt.getSystemInfoSync)。 */\nexport function detectMiniProgramPixelRatio(platform?: MiniProgramGlobal): number {\n const name = platform ?? detectMiniProgramGlobal() ?? 'wx';\n const api = getMiniProgramGlobal(name);\n const sync = api?.getSystemInfoSync;\n if (typeof sync === 'function') {\n try {\n const info = sync.call(api) as { pixelRatio?: number };\n if (typeof info.pixelRatio === 'number' && info.pixelRatio > 0) {\n return info.pixelRatio;\n }\n } catch {\n // 探测失败回退通用探测\n }\n }\n return detectPixelRatio();\n}\n\n/**\n * 从 Canvas 2D 节点解析渲染上下文。\n * 物理画布尺寸由节点自身管理(width/height 已在平台侧按像素比设置),\n * 此处只做归一化返回。\n */\nexport function resolveMiniProgramCanvas(\n node: MiniProgramCanvasNode,\n options: ResolveCanvasOptions = {}\n): ChartRenderContext {\n const ctx2d = node.getContext('2d');\n if (!ctx2d) {\n throw new Error('resolveMiniProgramCanvas: 2d context is not available');\n }\n\n const dpr = options.dpr ?? detectMiniProgramPixelRatio();\n const width = options.width ?? node.width;\n const height = options.height ?? node.height;\n const ctx = ctx2d as unknown as ICanvas2D;\n\n return { ctx, width, height, dpr, palette: options.palette };\n}\n\nfunction getHost(): Record<string, unknown> {\n if (typeof globalThis !== 'undefined') {\n return globalThis as unknown as Record<string, unknown>;\n }\n return {};\n}\n",
17
+ "/**\n * 雷达图:多边形网格 + 指标轴 + 多系列区域/折线。\n * 指标刻度按各 indicator.max(缺省取所有系列该指标最大值)归一化。\n */\n\nimport type { ICanvas2D } from '../core/canvas';\nimport { ChartBase } from '../core/chart';\nimport type { LayoutResult } from '../core/layout';\nimport type { LegendItem } from '../core/legend';\nimport { applyFont } from '../core/text';\nimport type { RadarChartOption, TooltipParams } from '../types';\n\ninterface PolarPoint {\n x: number;\n y: number;\n}\n\nexport class RadarChart extends ChartBase<RadarChartOption> {\n protected hasCartesianAxis(): boolean {\n return false;\n }\n\n protected getLegendItems(): LegendItem[] {\n return this.option.series\n .filter((s) => s.name)\n .map((s, i) => ({\n name: s.name as string,\n color: this.seriesColor(i, s.color),\n }));\n }\n\n protected drawSeries(\n ctx: ICanvas2D,\n layout: LayoutResult,\n option: RadarChartOption\n ): void {\n const { plot } = layout;\n const centerX = plot.x + plot.width / 2;\n const centerY = plot.y + plot.height / 2;\n const radius =\n option.radius ?? Math.min(plot.width, plot.height) / 2 * 0.6;\n const count = option.indicators.length;\n if (count === 0 || radius <= 0) {\n return;\n }\n\n const startAngle = option.startAngle ?? -Math.PI / 2;\n const step = RADAR_TWO_PI / count;\n const splitCount = Math.max(1, option.splitCount ?? 5);\n const gridColor = option.gridColor ?? '#ebedf0';\n const gridLineWidth = option.gridLineWidth ?? 1;\n\n const vertexAngle = (index: number): number =>\n startAngle + index * step;\n\n const polarPoint = (angle: number, r: number): PolarPoint => ({\n x: centerX + Math.cos(angle) * r,\n y: centerY + Math.sin(angle) * r,\n });\n\n // 网格层:同心多边形\n for (let layer = 1; layer <= splitCount; layer += 1) {\n const r = (radius * layer) / splitCount;\n ctx.save();\n ctx.strokeStyle = gridColor;\n ctx.lineWidth = gridLineWidth;\n ctx.beginPath();\n for (let i = 0; i < count; i += 1) {\n const p = polarPoint(vertexAngle(i), r);\n if (i === 0) {\n ctx.moveTo(p.x, p.y);\n } else {\n ctx.lineTo(p.x, p.y);\n }\n }\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n }\n\n // 指标轴线\n ctx.save();\n ctx.strokeStyle = gridColor;\n ctx.lineWidth = gridLineWidth;\n ctx.beginPath();\n for (let i = 0; i < count; i += 1) {\n const p = polarPoint(vertexAngle(i), radius);\n ctx.moveTo(centerX, centerY);\n ctx.lineTo(p.x, p.y);\n }\n ctx.stroke();\n ctx.restore();\n\n // 指标标签(顶点外侧)\n const labelFontSize = option.labelFontSize ?? 11;\n applyFont(ctx, labelFontSize);\n ctx.fillStyle = option.labelColor ?? '#323233';\n for (let i = 0; i < count; i += 1) {\n const p = polarPoint(vertexAngle(i), radius + 12);\n ctx.textAlign = Math.abs(p.x - centerX) < 1 ? 'center' : p.x > centerX ? 'left' : 'right';\n ctx.textBaseline =\n Math.abs(p.y - centerY) < 1\n ? 'middle'\n : p.y > centerY\n ? 'top'\n : 'bottom';\n ctx.fillText(option.indicators[i].name, p.x, p.y);\n }\n\n // 系列区域 / 折线\n option.series.forEach((series, seriesIndex) => {\n const color = this.seriesColor(seriesIndex, series.color);\n const points: PolarPoint[] = option.indicators.map((indicator, i) => {\n const max =\n indicator.max ?? this.indicatorMax(option, i);\n const value = series.data[i] ?? 0;\n const ratio = max > 0 ? Math.max(0, Math.min(1, value / max)) : 0;\n return polarPoint(vertexAngle(i), radius * ratio);\n });\n\n if (series.area !== false) {\n ctx.save();\n ctx.fillStyle = color;\n ctx.globalAlpha = 0.2;\n ctx.beginPath();\n this.tracePolygon(ctx, points);\n ctx.closePath();\n ctx.fill();\n ctx.restore();\n }\n\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = series.lineWidth ?? 2;\n ctx.lineJoin = 'round';\n ctx.beginPath();\n this.tracePolygon(ctx, points);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n });\n }\n\n /** 命中检测:靠近任一数据顶点(阈值 24px)即显示该指标下所有系列值。 */\n protected hitTestSeries(x: number, y: number): TooltipParams | null {\n const plot = this.plot;\n if (!plot) {\n return null;\n }\n const centerX = plot.x + plot.width / 2;\n const centerY = plot.y + plot.height / 2;\n const radius =\n this.option.radius ?? (Math.min(plot.width, plot.height) / 2) * 0.6;\n const count = this.option.indicators.length;\n if (count === 0) {\n return null;\n }\n const startAngle = this.option.startAngle ?? -Math.PI / 2;\n const step = RADAR_TWO_PI / count;\n\n let best = -1;\n let bestDist = 24; // 命中阈值(px)\n for (let i = 0; i < count; i += 1) {\n const max =\n this.option.indicators[i].max ?? this.indicatorMax(this.option, i);\n const angle = startAngle + i * step;\n for (let si = 0; si < this.option.series.length; si += 1) {\n const value = this.option.series[si].data[i] ?? 0;\n const ratio = max > 0 ? Math.max(0, Math.min(1, value / max)) : 0;\n const px = centerX + Math.cos(angle) * radius * ratio;\n const py = centerY + Math.sin(angle) * radius * ratio;\n const d = Math.hypot(x - px, y - py);\n if (d < bestDist) {\n bestDist = d;\n best = i;\n }\n }\n }\n if (best < 0) {\n return null;\n }\n const items = this.option.series.map((s, si) => ({\n name: s.name ?? `系列${si + 1}`,\n value: s.data[best] ?? 0,\n color: this.seriesColor(si, s.color),\n }));\n return {\n x,\n y,\n name: this.option.indicators[best]!.name,\n items,\n };\n }\n\n private indicatorMax(option: RadarChartOption, index: number): number {\n let max = 0;\n for (const series of option.series) {\n const v = series.data[index] ?? 0;\n if (v > max) {\n max = v;\n }\n }\n return max;\n }\n\n private tracePolygon(ctx: ICanvas2D, points: readonly PolarPoint[]): void {\n if (points.length === 0) {\n return;\n }\n ctx.moveTo(points[0].x, points[0].y);\n for (let i = 1; i < points.length; i += 1) {\n ctx.lineTo(points[i].x, points[i].y);\n }\n }\n}\n\nconst RADAR_TWO_PI = Math.PI * 2;\n",
18
+ "/**\n * 平台适配层:把各端 Canvas 2D 上下文解析为统一渲染上下文\n * (ICanvas2D + 逻辑尺寸 + DPR)。\n *\n * 适配器只负责三件事:\n * 1. 拿到上下文(HTMLCanvasElement / 小程序 canvas node / 未来原生 canvas)\n * 2. 计算设备像素比并设置物理画布尺寸\n * 3. 返回引擎需要的 ChartRenderContext\n *\n * 引擎代码永远不直接接触 DOM / wx / native API。\n */\n\nimport type { ChartRenderContext } from '../types';\n\nexport interface ResolveCanvasOptions {\n /** 逻辑宽度(CSS px);缺省取节点实际尺寸。 */\n width?: number;\n /** 逻辑高度(CSS px);缺省取节点实际尺寸。 */\n height?: number;\n /** 设备像素比;缺省自动探测。 */\n dpr?: number;\n /** 自定义色板。 */\n palette?: readonly string[];\n}\n\nexport interface ResolvedCanvas {\n context: ChartRenderContext;\n}\n\n/** 通用探测设备像素比(web 与小程序可用 globalThis 访问)。 */\nexport function detectPixelRatio(): number {\n const host = getPixelRatioHost();\n if (typeof host.devicePixelRatio === 'number' && host.devicePixelRatio > 0) {\n return host.devicePixelRatio;\n }\n return 1;\n}\n\nfunction getPixelRatioHost(): Record<string, unknown> {\n if (typeof globalThis !== 'undefined') {\n return globalThis as unknown as Record<string, unknown>;\n }\n return {};\n}\n",
19
+ "/**\n * 小程序适配器:微信 / 阿里 / 字节的 Canvas 2D 节点 → ChartRenderContext。\n *\n * 获取流程(各端一致,仅全局名不同):\n * canvas type=\"2d\" → 节点 node → node.getContext('2d') → ICanvas2D\n *\n * 节点获取依赖 SelectorQuery,属于组件生命周期职责,由\n * getMiniProgramCanvasNode() 提供;本文件只负责「节点 → 上下文」,\n * 以及 DPR 探测(pixelRatio 从各端系统信息接口读取)。\n */\n\nimport type { ChartRenderContext } from '../types';\nimport type { ICanvas2D } from '../core/canvas';\nimport { detectPixelRatio, type ResolveCanvasOptions } from './types';\n\n/** 小程序 Canvas 2D 节点(各端 node 的公共形状)。 */\nexport interface MiniProgramCanvasNode {\n getContext(type: '2d'): unknown;\n width: number;\n height: number;\n /** SelectorQuery 返回的 CSS 逻辑尺寸;物理缓冲区仍使用 width / height。 */\n logicalWidth?: number;\n logicalHeight?: number;\n pixelRatio?: number;\n}\n\nexport type MiniProgramGlobal = 'wx' | 'my' | 'tt';\n\n/** 安全读取小程序全局(避免与官方类型定义冲突,模式同 transone request)。 */\nexport function getMiniProgramGlobal(\n name: MiniProgramGlobal\n): Record<string, unknown> | null {\n const host = getHost();\n const api = host[name];\n return typeof api === 'object' && api !== null\n ? (api as Record<string, unknown>)\n : null;\n}\n\n/**\n * 通过 SelectorQuery 获取 Canvas 2D 节点(组件/页面内调用)。\n * 各端 API 形状一致:createSelectorQuery().in(instance).select(selector)\n * .fields({ node: true, size: true }).exec(callback)\n */\nexport function getMiniProgramCanvasNode(options: {\n /** 端标识,缺省自动探测(wx → my → tt)。 */\n platform?: MiniProgramGlobal;\n /** 组件/页面实例(.in() 入参)。 */\n instance?: unknown;\n /** canvas 选择器,如 '#chart'。 */\n selector: string;\n}): Promise<MiniProgramCanvasNode> {\n const platform =\n options.platform ?? detectMiniProgramGlobal() ?? 'wx';\n const api = getMiniProgramGlobal(platform);\n const queryFn = api?.createSelectorQuery;\n if (typeof queryFn !== 'function') {\n return Promise.reject(\n new Error(`getMiniProgramCanvasNode: ${platform}.createSelectorQuery is not available`)\n );\n }\n\n return new Promise((resolve, reject) => {\n let query = queryFn.call(api);\n if (options.instance && typeof query.in === 'function') {\n query = query.in(options.instance);\n }\n if (typeof query.select !== 'function') {\n reject(new Error(`${platform}.createSelectorQuery().select is not available`));\n return;\n }\n query\n .select(options.selector)\n .fields({ node: true, size: true })\n .exec((res: unknown) => {\n const first = (Array.isArray(res) ? res[0] : undefined) as\n | { node?: MiniProgramCanvasNode; width?: number; height?: number }\n | undefined;\n const node = first?.node as MiniProgramCanvasNode | undefined;\n if (!node || typeof node.getContext !== 'function') {\n reject(\n new Error(\n `getMiniProgramCanvasNode: canvas node not found for \"${options.selector}\"`\n )\n );\n return;\n }\n const logicalWidth = first?.width;\n const logicalHeight = first?.height;\n if (\n typeof logicalWidth === 'number' && logicalWidth > 0 &&\n typeof logicalHeight === 'number' && logicalHeight > 0\n ) {\n const dpr = detectMiniProgramPixelRatio(platform);\n node.logicalWidth = logicalWidth;\n node.logicalHeight = logicalHeight;\n node.pixelRatio = dpr;\n node.width = Math.round(logicalWidth * dpr);\n node.height = Math.round(logicalHeight * dpr);\n }\n resolve(node);\n });\n });\n}\n\n/** 探测当前小程序全局(wx → my → tt),均不存在返回 null。 */\nexport function detectMiniProgramGlobal(): MiniProgramGlobal | null {\n if (getMiniProgramGlobal('wx')) {\n return 'wx';\n }\n if (getMiniProgramGlobal('my')) {\n return 'my';\n }\n if (getMiniProgramGlobal('tt')) {\n return 'tt';\n }\n return null;\n}\n\n/** 读取各端设备像素比(wx.getSystemInfoSync / my.getSystemInfoSync / tt.getSystemInfoSync)。 */\nexport function detectMiniProgramPixelRatio(platform?: MiniProgramGlobal): number {\n const name = platform ?? detectMiniProgramGlobal() ?? 'wx';\n const api = getMiniProgramGlobal(name);\n const sync = api?.getSystemInfoSync;\n if (typeof sync === 'function') {\n try {\n const info = sync.call(api) as { pixelRatio?: number };\n if (typeof info.pixelRatio === 'number' && info.pixelRatio > 0) {\n return info.pixelRatio;\n }\n } catch {\n // 探测失败回退通用探测\n }\n }\n return detectPixelRatio();\n}\n\n/**\n * 从 Canvas 2D 节点解析渲染上下文。\n * 物理画布尺寸由节点自身管理(width/height 已在平台侧按像素比设置),\n * 此处只做归一化返回。\n */\nexport function resolveMiniProgramCanvas(\n node: MiniProgramCanvasNode,\n options: ResolveCanvasOptions = {}\n): ChartRenderContext {\n const ctx2d = node.getContext('2d');\n if (!ctx2d) {\n throw new Error('resolveMiniProgramCanvas: 2d context is not available');\n }\n\n const dpr = options.dpr ?? node.pixelRatio ?? detectMiniProgramPixelRatio();\n const width = options.width ?? node.logicalWidth ?? node.width;\n const height = options.height ?? node.logicalHeight ?? node.height;\n const ctx = ctx2d as unknown as ICanvas2D;\n\n return { ctx, width, height, dpr, palette: options.palette };\n}\n\nfunction getHost(): Record<string, unknown> {\n if (typeof globalThis !== 'undefined') {\n return globalThis as unknown as Record<string, unknown>;\n }\n return {};\n}\n",
20
20
  "/**\n * Web 适配器:HTMLCanvasElement → ChartRenderContext。\n *\n * - 把物理画布尺寸设为 逻辑尺寸 × DPR,保证高分屏清晰\n * - 上下文为标准 CanvasRenderingContext2D,天然满足 ICanvas2D 契约\n */\n\nimport type { ChartRenderContext } from '../types';\nimport type { ICanvas2D } from '../core/canvas';\nimport { detectPixelRatio, type ResolveCanvasOptions } from './types';\n\n/**\n * 从 HTMLCanvasElement 解析渲染上下文。\n * 会就地修改 canvas.width / canvas.height 为物理像素尺寸。\n */\nexport function resolveWebCanvas(\n canvas: HTMLCanvasElement,\n options: ResolveCanvasOptions = {}\n): ChartRenderContext {\n if (!canvas) {\n throw new Error('resolveWebCanvas: canvas element is required');\n }\n\n const ctx2d = canvas.getContext('2d');\n if (!ctx2d) {\n throw new Error('resolveWebCanvas: 2d context is not available');\n }\n\n const dpr = options.dpr ?? detectPixelRatio();\n const width = options.width ?? (canvas.clientWidth || canvas.width);\n const height = options.height ?? (canvas.clientHeight || canvas.height);\n\n // 物理像素 = 逻辑像素 × DPR\n canvas.width = Math.round(width * dpr);\n canvas.height = Math.round(height * dpr);\n\n // 标准 CanvasRenderingContext2D 已满足 ICanvas2D 全部成员\n const ctx = ctx2d as unknown as ICanvas2D;\n\n return { ctx, width, height, dpr, palette: options.palette };\n}\n",
21
21
  "/**\n * 图表工厂:按 option.type 分发到具体图表策略类(策略模式入口)。\n *\n * 用法(Web):\n * const chart = createWebChart(canvasEl, { type: 'line', ... });\n * chart.render();\n *\n * 用法(小程序,页面 onReady 后):\n * const node = await getMiniProgramCanvasNode({ selector: '#chart' });\n * const chart = createMiniProgramChart(node, option);\n * chart.render();\n */\n\nimport type { ChartOption, ChartRenderContext } from './types';\nimport type { ChartBase } from './core/chart';\nimport { LineChart } from './charts/line';\nimport { BarChart } from './charts/bar';\nimport { PieChart } from './charts/pie';\nimport { RadarChart } from './charts/radar';\nimport { resolveMiniProgramCanvas } from './adapters/miniprogram';\nimport type { MiniProgramCanvasNode } from './adapters/miniprogram';\nimport { resolveWebCanvas } from './adapters/web';\nimport type { ResolveCanvasOptions } from './adapters/types';\n\n/** 按类型创建图表实例(引擎核心入口)。 */\nexport function createChart<T extends ChartOption>(\n context: ChartRenderContext,\n option: T\n): ChartBase<T> {\n switch (option.type) {\n case 'line':\n return new LineChart(context, option) as unknown as ChartBase<T>;\n case 'bar':\n return new BarChart(context, option) as unknown as ChartBase<T>;\n case 'pie':\n return new PieChart(context, option) as unknown as ChartBase<T>;\n case 'radar':\n return new RadarChart(context, option) as unknown as ChartBase<T>;\n default:\n throw new Error(\n `createChart: unsupported chart type \"${(option as ChartOption).type}\"`\n );\n }\n}\n\n/** Web 便捷入口:从 HTMLCanvasElement 直接创建并渲染。 */\nexport function createWebChart<T extends ChartOption>(\n canvas: HTMLCanvasElement,\n option: T,\n resolveOptions: ResolveCanvasOptions = {}\n): ChartBase<T> {\n return createChart(resolveWebCanvas(canvas, resolveOptions), option);\n}\n\n/** 小程序便捷入口:从 Canvas 2D 节点直接创建并渲染。 */\nexport function createMiniProgramChart<T extends ChartOption>(\n node: MiniProgramCanvasNode,\n option: T,\n resolveOptions: ResolveCanvasOptions = {}\n): ChartBase<T> {\n return createChart(resolveMiniProgramCanvas(node, resolveOptions), option);\n}\n",
22
22
  "/**\n * 原生 App 适配器(占位 / 契约声明)。\n *\n * 未来 iOS / Android / 鸿蒙 原生端接入路径:\n * 1. 宿主提供原生 canvas 能力(Skia / ArkUI Canvas / WebView 桥),\n * 把原生绘制 API 实现为 ICanvas2D(见 core/canvas.ts 契约)\n * 2. 实现 resolveNativeCanvas(),返回 ChartRenderContext(含 DPR 与逻辑尺寸)\n * 3. 之后引擎与四种图表零改动运行\n *\n * 本文件当前不导出可运行实现,仅保留类型契约与接入文档,防止\n * 平台差异悄悄渗入引擎。\n */\n\nimport type { ChartRenderContext } from '../types';\n\n/** 未来原生端需实现的最小宿主接口。 */\nexport interface NativeCanvasHost {\n /** 逻辑尺寸(CSS px)。 */\n width: number;\n height: number;\n /** 设备像素比。 */\n pixelRatio: number;\n /** 原生绘图上下文(宿主实现为 ICanvas2D 契约)。 */\n getContext(type: '2d'): unknown;\n}\n\n/**\n * 未来实现:原生 canvas 节点 → ChartRenderContext。\n * 当前未接入任何原生端,调用会明确报错,避免静默降级。\n */\nexport function resolveNativeCanvas(\n _host: NativeCanvasHost\n): ChartRenderContext {\n throw new Error(\n 'resolveNativeCanvas is not implemented yet. ' +\n 'Native app support (iOS/Android/HarmonyOS) is planned for a future phase; ' +\n 'implement ICanvas2D on the host side and fill in this resolver.'\n );\n}\n",
@@ -42,9 +42,9 @@
42
42
  "import type {\n InterceptorFulfilled,\n InterceptorHandler,\n InterceptorRejected,\n} from './types';\n\n/**\n * 拦截器管理器:维护同类型(请求 / 响应)拦截器列表。\n * - use 注册并返回 id,eject 按 id 移除(软删除,保留占位)\n * - forEach 跳过已移除的项\n */\nexport class InterceptorManager<T> {\n private readonly handlers: Array<InterceptorHandler<T> | null> = [];\n\n public use(\n onFulfilled?: InterceptorFulfilled<T>,\n onRejected?: InterceptorRejected\n ): number {\n this.handlers.push({ onFulfilled, onRejected });\n return this.handlers.length - 1;\n }\n\n public eject(id: number): void {\n if (this.handlers[id] !== undefined) {\n this.handlers[id] = null;\n }\n }\n\n public clear(): void {\n this.handlers.length = 0;\n }\n\n public forEach(\n fn: (handler: InterceptorHandler<T>, id: number) => void\n ): void {\n this.handlers.forEach((handler, id) => {\n if (handler !== null) {\n fn(handler, id);\n }\n });\n }\n}\n",
43
43
  "import { resolveAdapter } from './adapters';\nimport { RequestError } from './errors';\nimport { mergeHeaders, normalizeMethod } from './helpers';\nimport { InterceptorManager } from './interceptors';\nimport type {\n RequestAdapter,\n RequestConfig,\n RequestOptions,\n RequestResponse,\n} from './types';\n\ntype ChainStep = (value: unknown) => unknown;\n\n/**\n * 统一请求客户端:跨端请求入口。\n *\n * 职责:\n * - 实例级默认值(baseURL / headers / timeout / platform 等)与单次配置合并\n * - 请求拦截器(注册顺序)→ 平台适配器 → 响应拦截器(后注册先执行)的链路编排\n * - 目标端解析:config.platform > 实例 adapter > 实例 platform > 运行时探测\n *\n * 用法:\n * ```ts\n * const http = createRequest({ baseURL: '/api', timeout: 10000 });\n * http.interceptors.request.use((config) => {\n * config.headers.Authorization = `Bearer ${token}`;\n * return config;\n * });\n * const res = await http.get<{ list: Item[] }>('/items');\n * ```\n */\nexport class Request {\n /** 请求 / 响应拦截器管理器 */\n public readonly interceptors: {\n request: InterceptorManager<RequestConfig>;\n response: InterceptorManager<RequestResponse>;\n } = {\n request: new InterceptorManager<RequestConfig>(),\n response: new InterceptorManager<RequestResponse>(),\n };\n\n private readonly instanceDefaults: RequestOptions;\n private readonly instanceAdapter?: RequestOptions['adapter'];\n private readonly instancePlatform?: RequestOptions['platform'];\n\n public constructor(options: RequestOptions = {}) {\n const {\n adapter: instanceAdapter,\n platform: instancePlatform,\n ...rest\n } = options;\n this.instanceAdapter = instanceAdapter;\n this.instancePlatform = instancePlatform;\n this.instanceDefaults = { ...rest };\n }\n\n /** 发起请求:合并配置 → 请求拦截器 → 适配器 → 响应拦截器 */\n public request<T = unknown>(\n config: RequestConfig<T>\n ): Promise<RequestResponse<T>> {\n let merged: RequestConfig<T>;\n try {\n merged = this.mergeConfig(config);\n } catch (error) {\n // 配置非法统一走 rejected promise,调用方用 .catch / try-await 即可处理\n return Promise.reject(error);\n }\n\n // 拦截器链:请求拦截器按注册顺序在最前,适配器居中进行实际请求,\n // 响应拦截器后注册的先执行(离调用方最近,最外层)。\n // 链以 (fulfilled, rejected) 成对消费;onRejected 捕获的是其之前链路的错误。\n const chain: Array<ChainStep | undefined> = [];\n this.interceptors.request.forEach((handler) => {\n chain.push(\n handler.onFulfilled as unknown as ChainStep,\n handler.onRejected as ChainStep | undefined\n );\n });\n chain.push(\n (value: unknown) => this.dispatch(value as RequestConfig<T>),\n undefined\n );\n const responseHandlers: Array<{\n onFulfilled?: ChainStep;\n onRejected?: ChainStep | undefined;\n }> = [];\n this.interceptors.response.forEach((handler) => {\n responseHandlers.push({\n onFulfilled: handler.onFulfilled as unknown as ChainStep,\n onRejected: handler.onRejected as ChainStep | undefined,\n });\n });\n for (let index = responseHandlers.length - 1; index >= 0; index -= 1) {\n const handler = responseHandlers[index];\n chain.push(handler.onFulfilled, handler.onRejected);\n }\n\n let promise: Promise<unknown> = Promise.resolve(merged);\n while (chain.length > 0) {\n const fulfilled = chain.shift();\n const rejected = chain.shift();\n promise = promise.then(\n fulfilled as ((value: unknown) => unknown) | undefined,\n rejected as ((reason: unknown) => unknown) | undefined\n );\n }\n return promise as Promise<RequestResponse<T>>;\n }\n\n public get<T = unknown>(\n url: string,\n config?: Omit<RequestConfig, 'url' | 'method'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'GET' });\n }\n\n public delete<T = unknown>(\n url: string,\n config?: Omit<RequestConfig, 'url' | 'method'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'DELETE' });\n }\n\n public head<T = unknown>(\n url: string,\n config?: Omit<RequestConfig, 'url' | 'method'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'HEAD' });\n }\n\n public options<T = unknown>(\n url: string,\n config?: Omit<RequestConfig, 'url' | 'method'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'OPTIONS' });\n }\n\n public post<T = unknown>(\n url: string,\n data?: T,\n config?: Omit<RequestConfig<T>, 'url' | 'method' | 'data'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'POST', data });\n }\n\n public put<T = unknown>(\n url: string,\n data?: T,\n config?: Omit<RequestConfig<T>, 'url' | 'method' | 'data'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'PUT', data });\n }\n\n public patch<T = unknown>(\n url: string,\n data?: T,\n config?: Omit<RequestConfig<T>, 'url' | 'method' | 'data'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'PATCH', data });\n }\n\n private dispatch<T>(config: RequestConfig<T>): Promise<RequestResponse<T>> {\n return resolveAdapter(\n config,\n this.instanceAdapter,\n this.instancePlatform\n ).then((adapter: RequestAdapter) => adapter.request<T>(config));\n }\n\n /** 合并实例级默认值与单次配置,并校验 url / method */\n private mergeConfig<T>(config: RequestConfig<T>): RequestConfig<T> {\n if (!config || typeof config !== 'object') {\n throw new RequestError({\n code: 'BAD_REQUEST',\n message: 'Request config must be an object',\n config: config as RequestConfig,\n });\n }\n\n const merged: RequestConfig = {\n ...this.instanceDefaults,\n ...config,\n headers: mergeHeaders(this.instanceDefaults.headers, config.headers),\n params: { ...this.instanceDefaults.params, ...config.params },\n };\n\n if (typeof merged.url !== 'string' || merged.url.length === 0) {\n throw new RequestError({\n code: 'BAD_REQUEST',\n message: 'Request url is required',\n config: merged,\n });\n }\n\n try {\n merged.method = normalizeMethod(merged.method);\n } catch (cause) {\n throw new RequestError({\n code: 'BAD_REQUEST',\n message: (cause as Error).message,\n config: merged,\n cause,\n });\n }\n\n return merged as RequestConfig<T>;\n }\n}\n",
44
44
  "import { Request } from './request';\nimport type { RequestOptions } from './types';\n\n/** 创建独立请求实例;不传配置时等价于使用默认实例 */\nexport function createRequest(options: RequestOptions = {}): Request {\n return new Request(options);\n}\n\n/**\n * 全局默认请求实例:直接使用无需创建。\n * ```ts\n * import { request } from 'transone/request';\n * const res = await request.get('/api/items');\n * ```\n */\nexport const request: Request = new Request();\n\nexport { Request } from './request';\nexport { InterceptorManager } from './interceptors';\nexport { RequestError, isRequestError } from './errors';\nexport type { RequestErrorCode, RequestErrorOptions } from './errors';\nexport {\n adapters,\n createAdapter,\n detectPlatform,\n resolveAdapter,\n} from './adapters';\nexport type { MiniProgramDialect, MiniProgramRequestApi } from './adapters';\nexport type {\n DetectedPlatform,\n HeaderValue,\n HttpMethod,\n InterceptorFulfilled,\n InterceptorHandler,\n InterceptorRejected,\n RequestAdapter,\n RequestAdapterResolver,\n RequestConfig,\n RequestDataType,\n RequestOptions,\n RequestPlatform,\n RequestResponse,\n RequestResponseType,\n} from './types';\n",
45
- "/**\n * 可选集成:基于 transone Component 的声明式图表组件 TcChart。\n *\n * 与 transone 组件系统集成,一份源码同时编译 Web 与小程序:\n * - Web:canvas 元素由组件渲染,onMounted 后自动解析并渲染\n * - 小程序:canvas 编译为 <canvas type=\"2d\">,通过 SelectorQuery 获取节点\n * - 未来原生:通过 resolve 注入自定义解析器\n *\n * 组件本身是薄壳:状态由父级以 option 传入(完全受控),\n * 数据变化时自动 setOption + render;\n * 容器 / 窗口尺寸变化时防抖(150ms)自动重绘:\n * - Web:ResizeObserver 观察 canvas,重测 clientWidth/Height 后增量 resize + render\n * - 小程序:平台窗口尺寸回调触发后重建图表(SelectorQuery 取最新节点尺寸)\n */\n\nimport {\n Component,\n h,\n type VNode,\n} from 'transone';\nimport type { ChartRenderContext, ChartOption } from './types';\nimport type { ChartBase } from './core/chart';\nimport { debounce, type Debounced } from './core/debounce';\nimport { createChart } from './factory';\nimport {\n detectMiniProgramGlobal,\n getMiniProgramCanvasNode,\n getMiniProgramGlobal,\n resolveMiniProgramCanvas,\n} from './adapters/miniprogram';\nimport { detectPixelRatio } from './adapters/types';\nimport { resolveWebCanvas } from './adapters/web';\n\nexport interface TcChartProps {\n /** 图表配置(line / bar / pie / radar)。 */\n option: ChartOption;\n /** 自定义解析器:把 canvas 元素/节点解析为渲染上下文。 */\n resolve?: (\n element: unknown\n ) => Promise<ChartRenderContext> | ChartRenderContext;\n className?: string;\n}\n\ninterface TcChartState {\n canvasId: string;\n}\n\n/** canvas 元素 id:Web 端仅作 DOM 属性;小程序端配合 SelectorQuery .in(实例) 隔离查询,多实例共存不冲突。 */\nconst CANVAS_ID = 'tc-chart-canvas';\n\n/** 尺寸变化自动重绘的防抖窗口(毫秒)。连续 resize 事件只在此窗口后重绘一次。 */\nconst RESIZE_DEBOUNCE_MS = 150;\n\ninterface MpWindowResizeApi {\n onWindowResize?: (callback: () => void) => unknown;\n offWindowResize?: (callback: () => void) => unknown;\n}\n\nexport class TcChart extends Component<TcChartProps, TcChartState> {\n private chart: ChartBase<ChartOption> | null = null;\n private destroyed = false;\n private resizeDebounced: Debounced<() => void> | null = null;\n private resizeObserver: ResizeObserver | null = null;\n private mpResizeHandler: (() => void) | null = null;\n /** Web 端 hover 事件句柄(mousemove / mouseleave),卸载时移除。 */\n private hoverHandlers: Array<[string, (e: Event) => void]> = [];\n\n protected initState(): TcChartState {\n return { canvasId: CANVAS_ID };\n }\n\n protected initStyles(): void {\n this.styleManager.addStyle('tc-chart-canvas', {\n selector: '.tc-chart__canvas',\n properties: {\n display: 'block',\n height: '100%',\n width: '100%',\n },\n });\n }\n\n protected render(): VNode {\n return h('canvas', {\n id: this.state.canvasId,\n className: `tc-chart__canvas${this.props.className ? ` ${this.props.className}` : ''}`,\n type: '2d',\n });\n }\n\n protected onMounted(): void {\n this.attachChart();\n this.setupAutoResize();\n this.setupHoverEvents();\n }\n\n protected onUpdated(): void {\n if (this.chart && !this.destroyed) {\n this.chart.setOption(this.props.option).render();\n } else if (!this.chart && !this.destroyed) {\n this.attachChart();\n }\n }\n\n protected onUnmounted(): void {\n this.teardownAutoResize();\n this.teardownHoverEvents();\n this.destroyed = true;\n this.chart?.destroy();\n this.chart = null;\n }\n\n /** 对外暴露图表实例(高级用法:手动 resize / 订阅事件)。 */\n public getChart(): ChartBase<ChartOption> | null {\n return this.chart;\n }\n\n private attachChart(): void {\n if (this.destroyed) {\n return;\n }\n this.resolveContext()\n .then((context) => {\n if (this.destroyed || !context) {\n // 非浏览器环境(SSR / 构建期静态渲染)或显式跳过:渲染交给客户端水合阶段。\n return;\n }\n this.chart = createChart(context, this.props.option);\n this.chart.render();\n })\n .catch((error: unknown) => {\n console.error('[TcChart] attach failed:', error);\n });\n }\n\n /**\n * Web 端返回根 canvas;小程序端此方法不会被调用(走 SelectorQuery)。\n * 注意:方法体不能写 super.X() —— transone-cli 编译小程序时会把组件方法拍平为\n * Component options 的普通函数属性,super 在普通函数里非法(JSCore 直接报错)。\n * 基类 el 为 protected,此处直接取用;返回类型收窄在使用点做断言。\n */\n public getElement(): HTMLCanvasElement | null {\n return this.el as HTMLCanvasElement | null;\n }\n\n /* —— 悬浮提示(tooltip):Web mousemove / mouseleave —— */\n\n /** Web 端绑定 hover 事件:鼠标移动命中数据点即显示 tooltip,离开清除。 */\n private setupHoverEvents(): void {\n if (this.destroyed || this.hoverHandlers.length > 0) {\n return;\n }\n // 小程序端暂无鼠标事件,一期仅 Web;后续可在 touchstart/touchmove 接入同一 setHover API\n if (detectMiniProgramGlobal()) {\n return;\n }\n const element = this.getElement() as HTMLCanvasElement | null;\n if (!element || typeof element.addEventListener !== 'function') {\n return;\n }\n\n const onMove = (event: Event): void => {\n const chart = this.chart;\n if (!chart) {\n return;\n }\n const mouse = event as MouseEvent;\n const rect = element.getBoundingClientRect();\n const relX = mouse.clientX - rect.left;\n const relY = mouse.clientY - rect.top;\n // 同步图表逻辑尺寸,避免 resize 防抖窗口内坐标系偏移导致命中错位\n const w = rect.width;\n const h = rect.height;\n if (w > 0 && h > 0) {\n chart.resize(w, h);\n }\n chart.setHover(relX, relY);\n };\n const onLeave = (): void => {\n this.chart?.clearHover();\n };\n\n element.addEventListener('mousemove', onMove);\n element.addEventListener('mouseleave', onLeave);\n this.hoverHandlers = [\n ['mousemove', onMove],\n ['mouseleave', onLeave],\n ];\n }\n\n private teardownHoverEvents(): void {\n const element = this.getElement() as HTMLCanvasElement | null;\n for (const [type, handler] of this.hoverHandlers) {\n element?.removeEventListener(type, handler);\n }\n this.hoverHandlers = [];\n }\n\n /* —— 自动重绘:容器 / 窗口尺寸变化时防抖重绘 —— */\n\n private setupAutoResize(): void {\n if (this.destroyed || this.resizeDebounced) {\n return;\n }\n this.resizeDebounced = debounce(() => this.handleResize(), RESIZE_DEBOUNCE_MS);\n\n const platform = detectMiniProgramGlobal();\n if (platform) {\n // 小程序:各平台均有窗口尺寸回调(横竖屏切换 / 分屏等场景)\n const mp = getMiniProgramGlobal(platform) as MpWindowResizeApi | null;\n if (mp && typeof mp.onWindowResize === 'function') {\n this.mpResizeHandler = () => this.resizeDebounced!.run();\n mp.onWindowResize(this.mpResizeHandler);\n }\n return;\n }\n\n // Web:ResizeObserver 观察 canvas 自身(CSS 宽高 100%,容器变化即触发)。\n // SSR / 构建期无真实元素与 ResizeObserver,跳过。\n const element = this.getElement() as HTMLCanvasElement | null;\n if (\n element &&\n typeof element.getContext === 'function' &&\n typeof ResizeObserver === 'function'\n ) {\n this.resizeObserver = new ResizeObserver(() => this.resizeDebounced!.run());\n this.resizeObserver.observe(element);\n }\n }\n\n private teardownAutoResize(): void {\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.resizeDebounced?.cancel();\n this.resizeDebounced = null;\n if (this.mpResizeHandler) {\n const platform = detectMiniProgramGlobal();\n const mp = platform\n ? (getMiniProgramGlobal(platform) as MpWindowResizeApi | null)\n : null;\n if (mp && typeof mp.offWindowResize === 'function') {\n mp.offWindowResize(this.mpResizeHandler);\n }\n this.mpResizeHandler = null;\n }\n }\n\n private handleResize(): void {\n if (this.destroyed) {\n return;\n }\n if (detectMiniProgramGlobal()) {\n // 小程序:窗口尺寸变化后 SelectorQuery 取到的节点尺寸已更新,\n // 重建图表即可拿到最新尺寸(上下文持有节点实测宽高与 pixelRatio)。\n this.chart?.destroy();\n this.chart = null;\n this.attachChart();\n return;\n }\n const element = this.getElement() as HTMLCanvasElement | null;\n if (!element || typeof element.getContext !== 'function') {\n return;\n }\n const width = element.clientWidth || 0;\n const height = element.clientHeight || 0;\n if (width <= 0 || height <= 0) {\n return;\n }\n if (!this.chart) {\n this.attachChart();\n return;\n }\n // 更新物理像素缓冲(逻辑尺寸 × DPR),并增量重绘(保留图表状态)\n const dpr = detectPixelRatio();\n element.width = Math.round(width * dpr);\n element.height = Math.round(height * dpr);\n this.chart.resize(width, height, dpr).render();\n }\n\n private resolveContext(): Promise<ChartRenderContext | null> {\n if (this.props.resolve) {\n return Promise.resolve(this.props.resolve(this.getElement()));\n }\n\n const platform = detectMiniProgramGlobal();\n if (platform) {\n // 小程序:SelectorQuery 查询节点(组件可能尚未渲染完,有限重试)\n const selector = `#${this.state.canvasId}`;\n const attempt = (left: number): Promise<ChartRenderContext> =>\n getMiniProgramCanvasNode({\n platform,\n instance: this,\n selector,\n })\n .then((node) => resolveMiniProgramCanvas(node))\n .catch((error: unknown) => {\n if (left <= 0) {\n throw error;\n }\n return new Promise((resolve) => setTimeout(resolve, 50)).then(() =>\n attempt(left - 1)\n );\n });\n return attempt(5);\n }\n\n // Web:canvas 元素即 HTMLCanvasElement。SSR / 构建期静态渲染环境下\n // 元素没有真实 2d context(如 projectDom),返回 null 跳过渲染,\n // 由客户端水合阶段(真实浏览器)完成绘制。\n const element = this.getElement() as HTMLCanvasElement | null;\n if (!element || typeof element.getContext !== 'function') {\n return Promise.resolve(null);\n }\n return Promise.resolve(\n resolveWebCanvas(element)\n );\n }\n}\n"
45
+ "/**\n * 可选集成:基于 transone Component 的声明式图表组件 TcChart。\n *\n * 与 transone 组件系统集成,一份源码同时编译 Web 与小程序:\n * - Web:canvas 元素由组件渲染,onMounted 后自动解析并渲染\n * - 小程序:canvas 编译为 <canvas type=\"2d\">,通过 SelectorQuery 获取节点\n * - 未来原生:通过 resolve 注入自定义解析器\n *\n * 组件本身是薄壳:状态由父级以 option 传入(完全受控),\n * 数据变化时自动 setOption + render;\n * 容器 / 窗口尺寸变化时防抖(150ms)自动重绘:\n * - Web:ResizeObserver 观察 canvas,重测 clientWidth/Height 后增量 resize + render\n * - 小程序:平台窗口尺寸回调触发后重建图表(SelectorQuery 取最新节点尺寸)\n */\n\nimport {\n Component,\n h,\n type VNode,\n} from 'transone';\nimport type { ChartRenderContext, ChartOption } from './types';\nimport type { ChartBase } from './core/chart';\nimport { debounce, type Debounced } from './core/debounce';\nimport { createChart } from './factory';\nimport {\n detectMiniProgramGlobal,\n getMiniProgramCanvasNode,\n getMiniProgramGlobal,\n resolveMiniProgramCanvas,\n} from './adapters/miniprogram';\nimport { detectPixelRatio } from './adapters/types';\nimport { resolveWebCanvas } from './adapters/web';\n\nexport interface TcChartProps {\n /** 图表配置(line / bar / pie / radar)。 */\n option: ChartOption;\n /** 自定义解析器:把 canvas 元素/节点解析为渲染上下文。 */\n resolve?: (\n element: unknown\n ) => Promise<ChartRenderContext> | ChartRenderContext;\n className?: string;\n}\n\ninterface TcChartState {\n canvasId: string;\n}\n\n/** canvas 元素 id:Web 端仅作 DOM 属性;小程序端配合 SelectorQuery .in(实例) 隔离查询,多实例共存不冲突。 */\nconst CANVAS_ID = 'tc-chart-canvas';\n\n/** 尺寸变化自动重绘的防抖窗口(毫秒)。连续 resize 事件只在此窗口后重绘一次。 */\nconst RESIZE_DEBOUNCE_MS = 150;\n\ninterface MpWindowResizeApi {\n onWindowResize?: (callback: () => void) => unknown;\n offWindowResize?: (callback: () => void) => unknown;\n}\n\nexport class TcChart extends Component<TcChartProps, TcChartState> {\n private chart: ChartBase<ChartOption> | null = null;\n private destroyed = false;\n private resizeDebounced: Debounced<() => void> | null = null;\n private resizeObserver: ResizeObserver | null = null;\n private mpResizeHandler: (() => void) | null = null;\n /** Web 端 hover 事件句柄(mousemove / mouseleave),卸载时移除。 */\n private hoverHandlers: Array<[string, (e: Event) => void]> = [];\n\n protected initState(): TcChartState {\n return { canvasId: CANVAS_ID };\n }\n\n protected initStyles(): void {\n this.styleManager.addStyle('tc-chart-host', {\n selector: ':host',\n properties: {\n display: 'block',\n height: '100%',\n width: '100%',\n },\n });\n this.styleManager.addStyle('tc-chart-canvas', {\n selector: '.tc-chart__canvas',\n properties: {\n display: 'block',\n height: '100%',\n width: '100%',\n },\n });\n }\n\n protected render(): VNode {\n return h('canvas', {\n id: this.state.canvasId,\n className: `tc-chart__canvas${this.props.className ? ` ${this.props.className}` : ''}`,\n type: '2d',\n });\n }\n\n protected onMounted(): void {\n this.attachChart();\n this.setupAutoResize();\n this.setupHoverEvents();\n }\n\n protected onUpdated(): void {\n if (this.chart && !this.destroyed) {\n this.chart.setOption(this.props.option).render();\n } else if (!this.chart && !this.destroyed) {\n this.attachChart();\n }\n }\n\n protected onUnmounted(): void {\n this.teardownAutoResize();\n this.teardownHoverEvents();\n this.destroyed = true;\n this.chart?.destroy();\n this.chart = null;\n }\n\n /** 对外暴露图表实例(高级用法:手动 resize / 订阅事件)。 */\n public getChart(): ChartBase<ChartOption> | null {\n return this.chart;\n }\n\n private attachChart(): void {\n if (this.destroyed) {\n return;\n }\n this.resolveContext()\n .then((context) => {\n if (this.destroyed || !context) {\n // 非浏览器环境(SSR / 构建期静态渲染)或显式跳过:渲染交给客户端水合阶段。\n return;\n }\n this.chart = createChart(context, this.props.option);\n this.chart.render();\n })\n .catch((error: unknown) => {\n console.error('[TcChart] attach failed:', error);\n });\n }\n\n /**\n * Web 端返回根 canvas;小程序端此方法不会被调用(走 SelectorQuery)。\n * 注意:方法体不能写 super.X() —— transone-cli 编译小程序时会把组件方法拍平为\n * Component options 的普通函数属性,super 在普通函数里非法(JSCore 直接报错)。\n * 基类 el 为 protected,此处直接取用;返回类型收窄在使用点做断言。\n */\n public getElement(): HTMLCanvasElement | null {\n return this.el as HTMLCanvasElement | null;\n }\n\n /* —— 悬浮提示(tooltip):Web mousemove / mouseleave —— */\n\n /** Web 端绑定 hover 事件:鼠标移动命中数据点即显示 tooltip,离开清除。 */\n private setupHoverEvents(): void {\n // 小程序端暂无鼠标事件,一期仅 Web;后续可在 touchstart/touchmove 接入同一 setHover API\n if (detectMiniProgramGlobal()) {\n return;\n }\n if (this.destroyed || this.hoverHandlers.length > 0) {\n return;\n }\n const element = this.getElement() as HTMLCanvasElement | null;\n if (!element || typeof element.addEventListener !== 'function') {\n return;\n }\n\n const onMove = (event: Event): void => {\n const chart = this.chart;\n if (!chart) {\n return;\n }\n const mouse = event as MouseEvent;\n const rect = element.getBoundingClientRect();\n const relX = mouse.clientX - rect.left;\n const relY = mouse.clientY - rect.top;\n // 同步图表逻辑尺寸,避免 resize 防抖窗口内坐标系偏移导致命中错位\n const w = rect.width;\n const h = rect.height;\n if (w > 0 && h > 0) {\n chart.resize(w, h);\n }\n chart.setHover(relX, relY);\n };\n const onLeave = (): void => {\n this.chart?.clearHover();\n };\n\n element.addEventListener('mousemove', onMove);\n element.addEventListener('mouseleave', onLeave);\n this.hoverHandlers = [\n ['mousemove', onMove],\n ['mouseleave', onLeave],\n ];\n }\n\n private teardownHoverEvents(): void {\n const element = this.getElement() as HTMLCanvasElement | null;\n for (const [type, handler] of this.hoverHandlers) {\n element?.removeEventListener(type, handler);\n }\n this.hoverHandlers = [];\n }\n\n /* —— 自动重绘:容器 / 窗口尺寸变化时防抖重绘 —— */\n\n private setupAutoResize(): void {\n if (this.destroyed || this.resizeDebounced) {\n return;\n }\n this.resizeDebounced = debounce(() => this.handleResize(), RESIZE_DEBOUNCE_MS);\n\n const platform = detectMiniProgramGlobal();\n if (platform) {\n // 小程序:各平台均有窗口尺寸回调(横竖屏切换 / 分屏等场景)\n const mp = getMiniProgramGlobal(platform) as MpWindowResizeApi | null;\n if (mp && typeof mp.onWindowResize === 'function') {\n this.mpResizeHandler = () => this.resizeDebounced!.run();\n mp.onWindowResize(this.mpResizeHandler);\n }\n return;\n }\n\n // Web:ResizeObserver 观察 canvas 自身(CSS 宽高 100%,容器变化即触发)。\n // SSR / 构建期无真实元素与 ResizeObserver,跳过。\n const element = this.getElement() as HTMLCanvasElement | null;\n if (\n element &&\n typeof element.getContext === 'function' &&\n typeof ResizeObserver === 'function'\n ) {\n this.resizeObserver = new ResizeObserver(() => this.resizeDebounced!.run());\n this.resizeObserver.observe(element);\n }\n }\n\n private teardownAutoResize(): void {\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.resizeDebounced?.cancel();\n this.resizeDebounced = null;\n if (this.mpResizeHandler) {\n const platform = detectMiniProgramGlobal();\n const mp = platform\n ? (getMiniProgramGlobal(platform) as MpWindowResizeApi | null)\n : null;\n if (mp && typeof mp.offWindowResize === 'function') {\n mp.offWindowResize(this.mpResizeHandler);\n }\n this.mpResizeHandler = null;\n }\n }\n\n private handleResize(): void {\n if (this.destroyed) {\n return;\n }\n if (detectMiniProgramGlobal()) {\n // 小程序:窗口尺寸变化后 SelectorQuery 取到的节点尺寸已更新,\n // 重建图表即可拿到最新尺寸(上下文持有节点实测宽高与 pixelRatio)。\n this.chart?.destroy();\n this.chart = null;\n this.attachChart();\n return;\n }\n const element = this.getElement() as HTMLCanvasElement | null;\n if (!element || typeof element.getContext !== 'function') {\n return;\n }\n const width = element.clientWidth || 0;\n const height = element.clientHeight || 0;\n if (width <= 0 || height <= 0) {\n return;\n }\n if (!this.chart) {\n this.attachChart();\n return;\n }\n // 更新物理像素缓冲(逻辑尺寸 × DPR),并增量重绘(保留图表状态)\n const dpr = detectPixelRatio();\n element.width = Math.round(width * dpr);\n element.height = Math.round(height * dpr);\n this.chart.resize(width, height, dpr).render();\n }\n\n private resolveContext(): Promise<ChartRenderContext | null> {\n if (this.props.resolve) {\n return Promise.resolve(this.props.resolve(this.getElement()));\n }\n\n const platform = detectMiniProgramGlobal();\n if (platform) {\n // 小程序:SelectorQuery 查询节点(组件可能尚未渲染完,有限重试)\n const selector = `#${this.state.canvasId}`;\n const attempt = (left: number): Promise<ChartRenderContext> =>\n getMiniProgramCanvasNode({\n platform,\n instance: this,\n selector,\n })\n .then((node) => resolveMiniProgramCanvas(node))\n .catch((error: unknown) => {\n if (left <= 0) {\n throw error;\n }\n return new Promise((resolve) => setTimeout(resolve, 50)).then(() =>\n attempt(left - 1)\n );\n });\n return attempt(5);\n }\n\n // Web:canvas 元素即 HTMLCanvasElement。SSR / 构建期静态渲染环境下\n // 元素没有真实 2d context(如 projectDom),返回 null 跳过渲染,\n // 由客户端水合阶段(真实浏览器)完成绘制。\n const element = this.getElement() as HTMLCanvasElement | null;\n if (!element || typeof element.getContext !== 'function') {\n return Promise.resolve(null);\n }\n return Promise.resolve(\n resolveWebCanvas(element)\n );\n }\n}\n"
46
46
  ],
47
- "mappings": "AAWO,IAAM,GAAqC,CAChD,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,EAEa,EAAqB,UACrB,GAAqB,UACrB,GAAqB,UACrB,GACX,oGC2FK,SAAS,EAAc,CAAC,EAAoC,CACjE,OACE,OAAO,IAAU,UACjB,IAAU,MACV,OAAQ,EAAoB,OAAS,YACrC,OAAQ,EAAoB,YAAc,YAC1C,OAAQ,EAAoB,OAAS,YACrC,OAAQ,EAAoB,SAAW,YACvC,OAAQ,EAAoB,WAAa,WC7FtC,SAAS,EAAS,CACvB,EACA,EACA,EAAa,EACgD,CAC7D,IAAI,EAAM,EACN,EAAM,EAEV,GAAI,CAAC,OAAO,SAAS,CAAG,GAAK,CAAC,OAAO,SAAS,CAAG,EAC/C,MAAU,MAAM,0CAA0C,EAE5D,GAAI,IAAQ,EAAK,CAEf,IAAM,EAAM,KAAK,IAAI,CAAG,EAAI,EAAI,KAAK,IAAI,CAAG,EAAI,IAAM,EACtD,GAAO,EACP,GAAO,EAET,GAAI,EAAM,EACR,CAAC,EAAK,CAAG,EAAI,CAAC,EAAK,CAAG,EAIxB,IAAM,GADO,EAAM,GACM,KAAK,IAAI,EAAG,CAAU,EACzC,EAAO,GAAS,CAAS,EAEzB,EAAU,KAAK,MAAM,EAAM,CAAI,EAAI,EACnC,EAAU,KAAK,KAAK,EAAM,CAAI,EAAI,EAElC,EAAkB,CAAC,EACzB,QAAS,EAAI,EAAS,GAAK,EAAU,EAAO,YAAM,GAAK,EAErD,EAAM,KAAK,GAAY,EAAG,CAAI,CAAC,EAGjC,MAAO,CAAE,IAAK,EAAS,IAAK,EAAS,OAAM,OAAM,EAGnD,SAAS,EAAQ,CAAC,EAAuB,CACvC,IAAM,EAAQ,KAAK,IAAI,GAAI,KAAK,MAAM,KAAK,MAAM,CAAK,CAAC,CAAC,EAClD,EAAW,EAAQ,EACrB,EACJ,GAAI,GAAY,EACd,EAAe,EACV,QAAI,GAAY,EACrB,EAAe,EACV,QAAI,GAAY,EACrB,EAAe,EAEf,OAAe,GAEjB,OAAO,EAAe,EAGxB,SAAS,EAAW,CAAC,EAAe,EAAsB,CACxD,IAAM,EAAW,KAAK,IAAI,EAAG,CAAC,KAAK,MAAM,KAAK,MAAM,CAAI,CAAC,EAAI,CAAC,EAC9D,OAAO,OAAO,EAAM,QAAQ,CAAQ,CAAC,EAIhC,MAAM,CAAY,CACP,IACA,IACA,MACA,KAEC,WACA,SAEV,WAAW,CAChB,EACA,EACA,EACA,EACA,EAA8B,CAAC,EAC/B,CACA,IAAQ,IAAK,EAAa,IAAK,EAAa,aAAa,GAAM,EAE3D,EAAM,EACN,EAAM,EAEV,GAAI,IAAQ,QAAa,IAAQ,OAAW,CAC1C,IAAM,EAAO,GAAU,EAAS,EAAS,CAAU,EACnD,EAAM,GAAO,EAAK,IAClB,EAAM,GAAO,EAAK,IAClB,KAAK,MAAQ,EAAK,MAClB,KAAK,KAAO,EAAK,KACZ,KACL,KAAK,MAAQ,EAAM,GAAO,KAAK,IAAI,EAAG,CAAU,EAChD,KAAK,MAAQ,CAAC,EACd,QAAS,EAAI,EAAG,GAAK,EAAY,GAAK,EACpC,KAAK,MAAM,KAAK,EAAM,EAAI,KAAK,IAAI,EAIvC,KAAK,IAAM,EACX,KAAK,IAAM,EACX,KAAK,WAAa,EAClB,KAAK,SAAW,EAIX,KAAK,CAAC,EAAuB,CAClC,IAAM,GAAS,EAAQ,KAAK,MAAQ,KAAK,IAAM,KAAK,KACpD,OAAO,KAAK,WAAa,GAAS,KAAK,SAAW,KAAK,YAE3D,CAGO,MAAM,EAAc,CASP,WAPF,UAEA,cAEC,WAEV,WAAW,CACA,EAChB,EACA,EACA,EAAgB,KAChB,CAJgB,kBAKhB,KAAK,cAAgB,EACrB,KAAK,WAAa,EAClB,IAAM,EAAQ,KAAK,IAAI,EAAG,EAAW,MAAM,EAC3C,KAAK,WAAa,EAAW,GAAc,EAItC,SAAS,CAAC,EAAuB,CACtC,OAAO,KAAK,WAAa,KAAK,UAAY,EAIrC,MAAM,CAAC,EAAuB,CACnC,OAAO,KAAK,UAAU,CAAK,EAAI,KAAK,UAAY,EAI3C,UAAU,EAAW,CAC1B,OAAO,KAAK,WAAa,EAAI,KAAK,eAI7B,eAAe,CAAC,EAA4B,CAEjD,OADe,KAAK,WAAW,EACf,KAAK,IAAI,EAAG,CAAU,EAAI,IAE9C,CC5HA,IAAM,GAA2B,CAAE,IAAK,GAAI,MAAO,GAAI,OAAQ,GAAI,KAAM,EAAG,EAM5E,SAAS,EAAa,CACpB,EACA,EACmC,CACnC,IAAQ,UAAW,EACb,EAAQ,EAAM,aAAe,CAAC,EAC9B,EAAW,GAAQ,UAAY,GAC/B,EAAU,GAAQ,SAAW,GAC7B,EAAa,GAAQ,YAAc,GAEzC,GAAI,GAAQ,WAAa,QAAS,CAEhC,IAAI,EAAW,EACf,QAAW,KAAQ,EAAO,CACxB,IAAM,EAAI,EAAa,EAAI,EAAQ,CAAI,EACvC,GAAI,EAAI,EACN,EAAW,EAGf,MAAO,CACL,MAAO,EAvBU,GAwBjB,OAAQ,KAAK,IAAI,EAAM,QAAU,EAAW,GAxB3B,GAwBgD,CAAC,CACpE,EAIF,IAAI,EAAa,EACjB,QAAW,KAAQ,EACjB,GAAc,EAAa,EAAI,EAAQ,CAAI,EAAI,EAEjD,GAAI,EAAa,EACf,GAAc,EAEhB,MAAO,CAAE,MAAO,EAAY,OAAQ,EApCf,GAoC2C,CAAE,EAS7D,SAAS,EAAa,CAC3B,EACA,EACc,CACd,IAAM,EAAmB,IAAK,MAAoB,EAAM,WAAY,EAEhE,EAAM,EAAQ,IACd,EAAS,EAAQ,OACjB,EAAO,EAAQ,KACf,EAAQ,EAAQ,MAEhB,EAAuB,KAC3B,GAAI,EAAM,OAAO,KAAM,CACrB,IAAM,EAAW,EAAM,MAAM,UAAY,GACzC,EAAW,CAAE,EAAG,EAAG,EAAG,EAAG,MAAO,EAAM,MAAO,OAAQ,CAAS,EAC9D,GAAO,GAAY,EAAM,MAAM,SA9Db,IAiEpB,IAAI,EAAwB,KACtB,EAAS,EAAM,OACrB,GAAI,GAAU,EAAO,OAAS,KAAU,EAAM,aAAa,QAAU,GAAK,EAAG,CAC3E,IAAM,EAAO,GAAc,EAAO,CAAO,EACnC,EAAW,EAAO,UAAY,MACpC,GAAI,IAAa,MACf,EAAY,CACV,EAAG,EACH,EAAG,EAAW,EAAS,OAAS,EAChC,MAAO,EAAM,MACb,OAAQ,EAAK,MACf,EACA,GAAO,EAAK,OACP,QAAI,IAAa,SACtB,EAAY,CACV,EAAG,EACH,EAAG,EAAM,OAAS,EAAK,OACvB,MAAO,EAAM,MACb,OAAQ,EAAK,MACf,EACA,GAAU,EAAK,OAEf,OAAY,CACV,EAAG,EAAM,MAAQ,EAAK,MACtB,EAAG,EACH,MAAO,EAAK,MACZ,OAAQ,KAAK,IAAI,EAAG,EAAM,OAAS,EAAM,CAAM,CACjD,EACA,GAAS,EAAK,MAKlB,IAAM,EAAgB,GAClB,EAAiB,EACjB,EAAqB,EACrB,EAAkB,EAClB,EAAoB,EAElB,EAAc,EAAM,aAAe,CAAC,EACpC,EAAiB,EAAM,gBAAkB,CAAC,EAEhD,GAAI,EAAM,WAAY,CAEpB,GAAI,EAAe,OAAS,EAAG,CAC7B,QAAW,KAAS,EAAgB,CAClC,IAAM,EAAI,EAAQ,CAAK,EACvB,GAAI,EAAI,EACN,EAAoB,EAGxB,GAAqB,GACrB,GAAQ,EAEV,GAAI,EAAY,OAAS,EACvB,EAAkB,EAAgB,GAClC,GAAU,EAEP,KACL,GAAI,EAAY,OAAS,EAAG,CAC1B,QAAW,KAAS,EAAa,CAC/B,IAAM,EAAI,EAAQ,CAAK,EACvB,GAAI,EAAI,EACN,EAAiB,EAGrB,GAAkB,GAClB,GAAQ,EAEV,GAAI,EAAe,OAAS,EAC1B,EAAqB,EAAgB,GACrC,GAAU,EAId,IAAM,EAAY,KAAK,IAAI,EAAG,EAAM,MAAQ,EAAO,CAAK,EAClD,EAAa,KAAK,IAAI,EAAG,EAAM,OAAS,EAAM,CAAM,EAEpD,EAAY,CAAE,EAAG,EAAM,EAAG,EAAK,MAAO,EAAW,OAAQ,CAAW,EAEpE,EAAoB,EAAM,WAC5B,CAAE,EAAG,EAAK,EAAG,EAAG,EAAK,EAAI,EAAK,OAAQ,MAAO,EAAW,OAAQ,CAAgB,EAChF,CAAE,EAAG,EAAK,EAAI,EAAgB,EAAG,EAAK,MAAO,EAAgB,OAAQ,CAAW,EAE9E,EAAuB,EAAM,WAC/B,CAAE,EAAG,EAAK,EAAI,EAAmB,EAAG,EAAK,MAAO,EAAmB,OAAQ,CAAW,EACtF,CAAE,EAAG,EAAM,EAAG,EAAK,EAAI,EAAY,MAAO,EAAW,OAAQ,CAAmB,EAEpF,MAAO,CACL,OACA,eACA,kBACA,WACA,YACA,SACF,ECzMK,SAAS,EAA+B,CAC7C,EACA,EACc,CACd,IAAI,EAA8C,KAC9C,EAAiC,KAErC,MAAO,CACL,GAAG,IAAI,EAA2B,CAEhC,GADA,EAAW,EACP,IAAU,KACZ,aAAa,CAAK,EAEpB,EAAQ,WAAW,IAAM,CAEvB,GADA,EAAQ,KACJ,IAAa,KAAM,CACrB,IAAM,EAAU,EAChB,EAAW,KACX,EAAG,GAAG,CAAO,IAEd,CAAK,GAEV,MAAM,EAAS,CACb,GAAI,IAAU,KACZ,aAAa,CAAK,EAClB,EAAQ,KAEV,EAAW,MAEb,OAAO,EAAY,CACjB,OAAO,IAAU,KAErB,ECpCK,SAAS,EAAM,CAAC,EAAc,EAAS,GAA6B,CACzE,MAAO,GAAG,OAAU,IAIf,SAAS,CAAS,CACvB,EACA,EACA,EAAS,GACD,CACR,IAAM,EAAO,GAAO,EAAM,CAAM,EAEhC,OADA,EAAI,KAAO,EACJ,EAIF,SAAS,CAAY,CAC1B,EACA,EACA,EACA,EAAS,GACD,CAER,OADA,EAAU,EAAK,EAAU,CAAM,EACxB,EAAI,YAAY,CAAI,EAAE,MCYxB,MAAM,EAAW,CACc,IAA7B,WAAW,CAAkB,EAAgB,CAAhB,WAG7B,aAAa,CAAC,EAAqC,CACxD,IACE,OACA,QACA,SACA,aAAa,GACb,gBAAgB,GAChB,aAAa,EACb,YAAY,GACZ,gBAAgB,EAChB,eACA,WAAW,IACT,EAEE,EAAQ,EAAM,OACZ,OAAQ,KAEhB,QAAS,EAAI,EAAG,EAAI,EAAM,OAAQ,GAAK,EAAG,CACxC,IAAM,EAAM,EAAM,MAAM,EAAM,EAAE,EAC1B,EAAQ,EAAO,IAAM,OAAO,EAAM,EAAE,EAE1C,GAAI,EAAU,CAIZ,GAHA,EAAI,KAAK,EACT,EAAI,YAAc,EAClB,EAAI,UAAY,EACZ,GAAgB,EAAa,OAAS,EACxC,EAAI,YAAY,CAAY,EAG9B,GADA,EAAI,UAAU,EACV,EACF,EAAI,OAAO,EAAK,EAAG,CAAG,EACtB,EAAI,OAAO,EAAK,EAAI,EAAK,MAAO,CAAG,EAEnC,OAAI,OAAO,EAAK,EAAG,CAAG,EACtB,EAAI,OAAO,EAAK,EAAI,EAAK,MAAO,CAAG,EAErC,EAAI,OAAO,EACX,EAAI,QAAQ,EAMd,GAHA,EAAU,EAAK,CAAa,EAC5B,EAAI,UAAY,EAChB,EAAI,aAAe,SACf,EACF,EAAI,UAAY,SAChB,EAAI,SAAS,EAAO,EAAK,EAAK,EAAI,EAAK,OAAS,CAAC,EAEjD,OAAI,UAAY,QAChB,EAAI,SAAS,EAAO,EAAK,EAAI,EAAG,CAAG,GAMlC,gBAAgB,CAAC,EAAwC,CAC9D,IACE,OACA,QACA,SACA,aAAa,GACb,YAAY,GACZ,gBAAgB,GAChB,aAAa,EACb,YAAY,GACZ,gBAAgB,EAChB,WAAW,IACT,GAEI,OAAQ,KACV,EAAQ,EAAO,OAErB,GAAI,EAAU,CACZ,EAAI,KAAK,EACT,EAAI,YAAc,EAClB,EAAI,UAAY,EAChB,EAAI,UAAU,EACd,QAAS,EAAI,EAAG,EAAI,EAAO,GAAK,EAAG,CACjC,IAAM,EAAM,EAAM,OAAO,CAAC,EAC1B,GAAI,EACF,EAAI,OAAO,EAAK,EAAG,CAAG,EACtB,EAAI,OAAO,EAAK,EAAI,EAAK,MAAO,CAAG,EAEnC,OAAI,OAAO,EAAK,EAAK,CAAC,EACtB,EAAI,OAAO,EAAK,EAAK,EAAI,EAAK,MAAM,EAGxC,EAAI,OAAO,EACX,EAAI,QAAQ,EAGd,EAAU,EAAK,CAAa,EAC5B,EAAI,UAAY,EAChB,EAAI,aAAe,SAEnB,QAAS,EAAI,EAAG,EAAI,EAAO,GAAK,EAAG,CACjC,IAAM,EAAM,EAAM,OAAO,CAAC,EAC1B,GAAI,EACF,EAAI,UAAY,QAChB,EAAI,SAAS,EAAO,GAAI,EAAK,EAAI,EAAG,CAAG,EAEvC,OAAI,UAAY,SAChB,EAAI,SAAS,EAAO,GAAI,EAAK,EAAK,EAAI,EAAK,OAAS,CAAC,EASzD,GAJA,EAAI,KAAK,EACT,EAAI,YAAc,EAClB,EAAI,UAAY,EAChB,EAAI,UAAU,EACV,EACF,EAAI,OAAO,EAAK,EAAG,EAAK,CAAC,EACzB,EAAI,OAAO,EAAK,EAAG,EAAK,EAAI,EAAK,MAAM,EAEvC,OAAI,OAAO,EAAK,EAAG,EAAK,EAAI,EAAK,MAAM,EACvC,EAAI,OAAO,EAAK,EAAI,EAAK,MAAO,EAAK,EAAI,EAAK,MAAM,EAEtD,EAAI,OAAO,EACX,EAAI,QAAQ,EAEhB,CCnJO,MAAM,EAAa,CACY,IAA7B,WAAW,CAAkB,EAAgB,CAAhB,WAE7B,IAAI,CAAC,EAAkC,CAC5C,IACE,MACA,QACA,WAAW,MACX,WAAW,GACX,QAAQ,EACR,aAAa,GACb,UAAU,IACR,EAEJ,GAAI,EAAM,SAAW,EACnB,OAGF,IAAQ,OAAQ,KAGhB,GAFA,EAAU,EAAK,CAAQ,EAEnB,IAAa,QAAS,CAExB,IAAI,EAAI,EAAI,EAAI,EAAW,EAAI,EAC/B,QAAW,KAAQ,EACjB,KAAK,SAAS,EAAM,EAAI,EAAG,EAAG,EAAU,EAAY,CAAK,EACzD,GAAK,EAAW,EAElB,OAIF,IAAI,EAAa,EACjB,QAAW,KAAQ,EACjB,GAAc,EAAa,EAAI,EAAa,EAAK,EAAK,KAAM,CAAQ,EAAI,EAE1E,GAAc,EAEd,IAAI,EAAI,EAAI,GAAK,EAAI,MAAQ,GAAc,EACrC,EAAI,EAAI,EAAI,EAAI,OAAS,EAE/B,QAAW,KAAQ,EACjB,KAAK,SAAS,EAAM,EAAG,EAAG,EAAU,EAAY,CAAK,EACrD,GAAK,EAAa,EAAI,EAAa,EAAK,EAAK,KAAM,CAAQ,EAAI,EAI3D,QAAQ,CACd,EACA,EACA,EACA,EACA,EACA,EACM,CACN,IAAQ,OAAQ,KAEhB,EAAI,UAAY,EAAK,MACrB,EAAI,UAAU,EACd,EAAI,KAAK,EAAG,EAAU,EAAa,EAAG,EAAY,CAAU,EAC5D,EAAI,KAAK,EAET,EAAI,UAAY,EAChB,EAAI,UAAY,OAChB,EAAI,aAAe,SACnB,EAAI,SAAS,EAAK,KAAM,EAAI,EAAa,EAAG,CAAO,EAEvD,CC7CO,MAAe,CAAiC,CAClC,IACT,OACA,MACA,OACA,IACS,QAGT,UAAoC,KAGpC,KAAmB,KAGnB,MAA8B,KAEhC,UAAY,GAEb,WAAW,CAAC,EAA6B,EAAW,CACzD,KAAK,IAAM,EAAQ,IACnB,KAAK,OAAS,EACd,KAAK,MAAQ,EAAQ,MACrB,KAAK,OAAS,EAAQ,OACtB,KAAK,IAAM,EAAQ,IACnB,KAAK,QAAU,EAAQ,SAAW,GAK7B,SAAS,CAAC,EAA0B,CAEzC,OADA,KAAK,OAAS,IAAK,KAAK,UAAW,CAAO,EACnC,KAGF,MAAM,CAAC,EAAe,EAAgB,EAAoB,CAI/D,GAHA,KAAK,MAAQ,KAAK,IAAI,EAAG,CAAK,EAC9B,KAAK,OAAS,KAAK,IAAI,EAAG,CAAM,EAE5B,IAAQ,QAAa,OAAO,SAAS,CAAG,GAAK,EAAM,EACrD,KAAK,IAAM,EAEb,OAAO,KAGF,MAAM,EAAS,CACpB,GAAI,KAAK,UACP,OAAO,KAET,IAAQ,MAAK,QAAO,SAAQ,OAAQ,KAEpC,EAAI,KAAK,EACT,EAAI,MAAM,EAAK,CAAG,EAClB,EAAI,UAAU,EAAG,EAAG,EAAO,CAAM,EAEjC,IAAM,EAAa,KAAK,mBAAmB,EAC3C,GAAI,EACF,EAAI,UAAY,EAChB,EAAI,SAAS,EAAG,EAAG,EAAO,CAAM,EAGlC,IAAM,EAAS,KAAK,cAAc,EAKlC,GAJA,KAAK,KAAO,EAAO,KACnB,KAAK,UAAU,CAAM,EACrB,KAAK,WAAW,CAAM,EAElB,KAAK,iBAAiB,EACxB,KAAK,UAAY,KAAK,qBAAqB,CAAM,EACjD,KAAK,kBAAkB,CAAM,EAE7B,UAAK,UAAY,KAMnB,GAHA,KAAK,WAAW,EAAK,EAAQ,KAAK,MAAM,EAGpC,KAAK,MACP,KAAK,YAAY,KAAK,KAAK,EAI7B,OADA,EAAI,QAAQ,EACL,KASF,QAAQ,CAAC,EAAW,EAAiB,CAC1C,GAAI,KAAK,OAAO,SAAS,OAAS,GAChC,KAAK,MAAQ,KAEb,UAAK,MAAQ,KAAK,cAAc,EAAG,CAAC,EAEtC,OAAO,KAAK,OAAO,EAId,UAAU,EAAS,CAExB,OADA,KAAK,MAAQ,KACN,KAAK,OAAO,EAMd,OAAO,EAAS,CACrB,KAAK,UAAY,GAGZ,WAAW,EAAY,CAC5B,OAAO,KAAK,UAWJ,gBAAgB,EAAY,CACpC,MAAO,GAGC,cAAc,EAAiC,CACvD,MAAO,CAAE,IAAK,EAAG,IAAK,CAAE,EAGhB,iBAAiB,EAAsB,CAC/C,MAAO,CAAC,EAGA,YAAY,EAAY,CAChC,MAAO,GAKC,kBAAkB,EAAuB,CACjD,OAAQ,KAAK,OAAwC,gBAG7C,QAAQ,EAA4B,CAC5C,OAAQ,KAAK,OAAmC,MAGxC,SAAS,EAA6B,CAC9C,IAAM,EAAU,KAAK,OAAqC,OAC1D,GAAI,EACF,OAAO,EAGT,OAAO,KAAK,eAAe,EAAE,OAAS,EAAI,CAAE,SAAU,KAAM,EAAI,OAGxD,cAAc,EAAiB,CACvC,MAAO,CAAC,EAGA,YAAY,EAAgC,CACpD,OAAQ,KAAK,OAAuC,MAG5C,eAAe,EAAmC,CAC1D,OAAQ,KAAK,OAA0C,MAK/C,aAAa,EAAiB,CACtC,IAAM,EAAQ,KAAK,iBAAiB,EAGpC,OAAO,GAAc,EAFL,CAAC,IACf,EAAa,KAAK,IAAK,EAAM,EAAE,CACE,EAG3B,gBAAgB,EAAgB,CAGxC,IAAM,EAAa,KAAK,aAAa,EAC/B,EAAU,KAAK,iBAAiB,EACtC,MAAO,CACL,MAAO,KAAK,MACZ,OAAQ,KAAK,OACb,MAAO,KAAK,SAAS,EACrB,OAAQ,KAAK,UAAU,EACvB,YAAa,KAAK,eAAe,EAAE,IAAI,CAAC,IAAS,EAAK,IAAI,EAC1D,YAAa,GAAW,CAAC,EAAa,KAAK,mBAAmB,EAAI,OAClE,eAAgB,EAAU,KAAK,kBAAkB,EAAI,OACrD,YACF,EAIQ,kBAAkB,EAAa,CACvC,IAAM,EAAS,KAAK,eAAe,EAC7B,EAAY,KAAK,aAAa,EAMpC,OALc,IAAI,EAAY,EAAO,IAAK,EAAO,IAAK,EAAG,EAAG,CAC1D,IAAK,GAAW,IAChB,IAAK,GAAW,IAChB,WAAY,GAAW,UACzB,CAAC,EACY,MAAM,IAAI,CAAC,IACtB,GAAW,OAAS,EAAU,OAAO,CAAI,EAAI,OAAO,CAAI,CAC1D,EAGQ,SAAS,CAAC,EAA4B,CAC9C,IAAM,EAAQ,KAAK,SAAS,EAC5B,GAAI,CAAC,GAAO,MAAQ,CAAC,EAAO,SAC1B,OAEF,IAAQ,OAAQ,KAChB,EAAU,EAAK,EAAM,UAAY,EAAE,EACnC,EAAI,UAAY,EAAM,OAAS,UAC/B,EAAI,UAAY,SAChB,EAAI,aAAe,MACnB,EAAI,SAAS,EAAM,KAAM,KAAK,MAAQ,EAAG,EAAO,SAAS,CAAC,EAGlD,UAAU,CAAC,EAA4B,CAC/C,IAAM,EAAS,KAAK,UAAU,EAC9B,GAAI,GAAQ,OAAS,IAAS,CAAC,EAAO,UACpC,OAEF,IAAM,EAAQ,KAAK,eAAe,EAClC,GAAI,EAAM,SAAW,EACnB,OAEF,IAAI,GAAa,KAAK,GAAG,EAAE,KAAK,CAC9B,IAAK,EAAO,UACZ,QACA,SAAU,GAAQ,UAAY,MAC9B,SAAU,GAAQ,SAClB,MAAO,GAAQ,MACf,WAAY,GAAQ,WACpB,QAAS,GAAQ,OACnB,CAAC,EAGO,oBAAoB,CAAC,EAAuC,CACpE,IAAQ,QAAS,EACX,EAAa,KAAK,aAAa,EAC/B,EAAS,KAAK,eAAe,EAC7B,EAAa,KAAK,kBAAkB,EACpC,EAAY,KAAK,aAAa,EAE9B,EAAQ,IAAI,EAChB,EAAO,IACP,EAAO,IACP,EAAa,EAAK,EAAI,EAAK,EAAI,EAAK,OACpC,EAAa,EAAK,EAAI,EAAK,MAAQ,EAAK,EACxC,CAAE,IAAK,GAAW,IAAK,IAAK,GAAW,IAAK,WAAY,GAAW,UAAW,CAChF,EAEM,EAAW,IAAI,GACnB,EACA,EAAa,EAAK,EAAI,EAAK,EAC3B,EAAa,EAAK,EAAI,EAAK,OAAS,EAAK,EAAI,EAAK,KACpD,EAEA,MAAO,CAAE,QAAO,UAAS,EAGjB,iBAAiB,CAAC,EAA4B,CACtD,IAAM,EAAS,KAAK,UACpB,GAAI,CAAC,EACH,OAEF,IAAQ,OAAQ,MACR,QAAS,EACX,EAAa,KAAK,aAAa,EAC/B,EAAY,KAAK,aAAa,EAC9B,EAAe,KAAK,gBAAgB,EACpC,EAAa,KAAK,kBAAkB,EAEpC,EAAS,IAAI,GAAW,CAAG,EAE3B,EAAc,EAAO,MAAM,MAAM,IAAI,CAAC,IAC1C,GAAW,OAAS,EAAU,OAAO,CAAI,EAAI,OAAO,CAAI,CAC1D,EAEA,EAAO,cAAc,CACnB,OACA,MAAO,EAAO,MACd,OAAQ,EACR,aACA,cAAe,GAAW,cAC1B,WAAY,GAAW,WACvB,UAAW,GAAW,UACtB,cAAe,GAAW,cAC1B,aAAc,GAAW,aACzB,SAAU,GAAW,UAAY,EACnC,CAAC,EAED,EAAO,iBAAiB,CACtB,OACA,MAAO,EAAO,SACd,OAAQ,EACR,aACA,cAAe,GAAc,cAC7B,WAAY,GAAc,WAC1B,UAAW,GAAc,UACzB,cAAe,GAAc,cAC7B,SAAU,GAAc,UAAY,EACtC,CAAC,EAIO,WAAW,CAAC,EAAe,EAAwB,CAC3D,OAAO,GAAS,KAAK,QAAQ,EAAQ,KAAK,QAAQ,QAK1C,gBAAgB,EAA8B,CACtD,OAAQ,KAAK,OAAuC,QAI5C,mBAAmB,CAAC,EAAiC,CAC7D,IAAM,EAAkB,CAAC,EAAO,IAAI,EACpC,QAAW,KAAQ,EAAO,MACxB,EAAM,KAAK,GAAG,EAAK,SAAS,EAAK,OAAO,EAE1C,OAAO,EAIC,WAAW,CAAC,EAA6B,CACjD,IAAM,EAAS,KAAK,iBAAiB,EACrC,GAAI,GAAQ,OAAS,GACnB,OAEF,IAAM,EAAY,GAAQ,UACpB,EAAM,EAAY,EAAU,CAAM,EAAI,KAAK,oBAAoB,CAAM,EACrE,EAAQ,MAAM,QAAQ,CAAG,EAAI,EAAM,CAAC,CAAG,EAC7C,GAAI,EAAM,SAAW,EACnB,OAGF,IAAQ,OAAQ,KACV,EAAW,GACX,EAAO,GACP,EAAO,EACP,EAAQ,GACR,EAAO,EACP,EAAS,EAEf,EAAU,EAAK,CAAQ,EACvB,IAAI,EAAO,EACX,QAAW,KAAQ,EACjB,EAAO,KAAK,IAAI,EAAM,EAAa,EAAK,EAAM,CAAQ,CAAC,EAEzD,IAAM,EAAO,EAAO,EAAO,EAAI,EAAO,EAAI,EACpC,EAAO,EAAM,OAAS,EAAQ,EAAO,EAGrC,EAAO,KAAK,KACd,EACA,EAEJ,GAAI,GAAQ,KAAK,aAAa,GAK5B,GAHA,EAAK,EAAK,EAAI,EAAK,MAAQ,EAC3B,EAAK,EAAO,EAAI,EAAO,EAEnB,EAAK,EAAO,KAAK,MAAQ,EAC3B,EAAK,EAAK,EAAI,EAAO,EAElB,QAAI,GAKT,GAHA,EAAK,EAAO,EAAI,GAChB,EAAK,EAAO,EAAI,EAAO,EAEnB,EAAK,EAAO,KAAK,MAAQ,EAC3B,EAAK,EAAO,EAAI,EAAO,GAMzB,QAFA,EAAK,EAAO,EAAI,GAChB,EAAK,EAAO,EAAI,EAAO,EACnB,EAAK,EAAO,KAAK,MAAQ,EAC3B,EAAK,EAAO,EAAI,EAAO,GAI3B,EAAK,KAAK,IAAI,EAAG,CAAE,EACnB,EAAK,KAAK,IAAI,EAAG,KAAK,IAAI,EAAI,KAAK,OAAS,EAAO,CAAC,CAAC,EAErD,EAAI,KAAK,EAET,EAAI,UAAY,yBAChB,EAAI,UAAU,EACd,KAAK,cAAc,EAAI,EAAI,EAAM,EAAM,CAAC,EACxC,EAAI,KAAK,EAGT,EAAI,aAAe,SACnB,EAAI,UAAY,OAChB,EAAM,QAAQ,CAAC,EAAM,IAAM,CACzB,IAAM,EAAK,EAAK,EAAO,EAAQ,EAAI,EAAQ,EACrC,EAAW,EAAI,EAAI,EAAO,MAAM,EAAI,IAAI,MAAQ,OACtD,GAAI,EACF,EAAI,UAAY,EAChB,EAAI,UAAU,EACd,EAAI,IAAI,EAAK,EAAO,EAAM,EAAI,EAAM,EAAG,KAAK,GAAK,CAAC,EAClD,EAAI,KAAK,EAEX,EAAI,UAAY,UAChB,IAAM,EAAK,EAAK,GAAQ,EAAW,EAAO,EAAI,EAAS,GACvD,EAAI,SAAS,EAAM,EAAI,CAAE,EAC1B,EACD,EAAI,QAAQ,EAIN,aAAa,CACnB,EACA,EACA,EACA,EACA,EACM,CACN,IAAM,EAAM,KAAK,IACX,EAAS,KAAK,IAAI,EAAG,EAAI,EAAG,EAAI,CAAC,EACvC,EAAI,OAAO,EAAI,EAAQ,CAAC,EACxB,EAAI,OAAO,EAAI,EAAI,EAAQ,CAAC,EAC5B,EAAI,MAAM,EAAI,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,CAAM,EACxC,EAAI,MAAM,EAAI,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,CAAM,EACxC,EAAI,MAAM,EAAG,EAAI,EAAG,EAAG,EAAG,CAAM,EAChC,EAAI,MAAM,EAAG,EAAG,EAAI,EAAG,EAAG,CAAM,EAChC,EAAI,UAAU,EAElB,CCtdO,MAAM,WAAkB,CAA2B,CAC9C,cAAc,EAAiC,CACvD,IAAQ,SAAQ,QAAO,gBAAgB,IAAU,KAAK,OAClD,EAAM,IACN,EAAM,KACV,QAAW,KAAK,EACd,QAAW,KAAS,EAAE,KAAM,CAC1B,GAAI,EAAQ,EACV,EAAM,EAER,GAAI,EAAQ,EACV,EAAM,EAIZ,GAAI,CAAC,OAAO,SAAS,CAAG,GAAK,CAAC,OAAO,SAAS,CAAG,EAC/C,MAAO,CAAE,IAAK,EAAG,IAAK,CAAE,EAE1B,GAAI,GAAiB,EAAM,EACzB,EAAM,EAER,GAAI,GAAO,MAAQ,OACjB,EAAM,KAAK,IAAI,EAAK,EAAM,GAAG,EAE/B,GAAI,GAAO,MAAQ,OACjB,EAAM,KAAK,IAAI,EAAK,EAAM,GAAG,EAE/B,MAAO,CAAE,MAAK,KAAI,EAGV,iBAAiB,EAAsB,CAC/C,OAAO,KAAK,OAAO,MAAM,OAGjB,cAAc,EAAiB,CACvC,OAAO,KAAK,OAAO,OAChB,OAAO,CAAC,IAAM,EAAE,IAAI,EACpB,IAAI,CAAC,EAAG,KAAO,CACd,KAAM,EAAE,KACR,MAAO,KAAK,YAAY,EAAG,EAAE,KAAK,CACpC,EAAE,EAGI,UAAU,CAClB,EACA,EACA,EACM,CACN,IAAM,EAAS,KAAK,UACpB,GAAI,CAAC,EACH,OAEF,IAAQ,QAAS,GACT,QAAO,YAAa,EACtB,EAAa,KAAK,sBAAsB,EAExC,EAA6B,EAAO,OAAO,IAAI,CAAC,IACpD,EAAO,KAAK,IAAI,CAAC,EAAG,KAAO,CACzB,EAAG,EAAS,OAAO,CAAC,EACpB,EAAG,EAAM,MAAM,CAAC,CAClB,EAAE,CACJ,EAGA,GAAI,GAAc,EAAG,CACnB,IAAM,EAAK,EAAS,OAAO,CAAU,EACrC,EAAI,KAAK,EACT,EAAI,YAAc,UAClB,EAAI,UAAY,EAChB,EAAI,YAAY,CAAC,EAAG,CAAC,CAAC,EACtB,EAAI,UAAU,EACd,EAAI,OAAO,EAAI,EAAK,CAAC,EACrB,EAAI,OAAO,EAAI,EAAK,EAAI,EAAK,MAAM,EACnC,EAAI,OAAO,EACX,EAAI,QAAQ,EAGd,EAAO,OAAO,QAAQ,CAAC,EAAQ,IAAU,CACvC,IAAM,EAAS,EAAgB,GAC/B,GAAI,EAAO,SAAW,EACpB,OAEF,IAAM,EAAQ,KAAK,YAAY,EAAO,EAAO,KAAK,EAC5C,EAAY,EAAO,WAAa,EAGtC,GAAI,EAAO,KACT,EAAI,KAAK,EACT,EAAI,UAAY,EAChB,EAAI,YAAc,KAClB,EAAI,UAAU,EACd,KAAK,UAAU,EAAK,EAAQ,EAAO,QAAU,EAAK,EAClD,EAAI,OAAO,EAAO,EAAO,OAAS,GAAG,EAAG,EAAK,EAAI,EAAK,MAAM,EAC5D,EAAI,OAAO,EAAO,GAAG,EAAG,EAAK,EAAI,EAAK,MAAM,EAC5C,EAAI,UAAU,EACd,EAAI,KAAK,EACT,EAAI,QAAQ,EAed,GAXA,EAAI,KAAK,EACT,EAAI,YAAc,EAClB,EAAI,UAAY,EAChB,EAAI,SAAW,QACf,EAAI,QAAU,QACd,EAAI,UAAU,EACd,KAAK,UAAU,EAAK,EAAQ,EAAO,QAAU,EAAK,EAClD,EAAI,OAAO,EACX,EAAI,QAAQ,EAGR,EAAO,aAAe,GAAO,CAC/B,IAAM,EAAQ,KAAK,IAAI,IAAK,EAAY,GAAG,EAC3C,EAAI,KAAK,EACT,EAAI,UAAY,EAChB,QAAS,EAAI,EAAG,EAAI,EAAO,OAAQ,GAAK,EAAG,CACzC,IAAM,EAAI,EAAO,GACX,EAAI,IAAM,EAAa,EAAQ,IAAM,EAC3C,EAAI,UAAU,EACd,EAAI,IAAI,EAAE,EAAG,EAAE,EAAG,EAAG,EAAG,KAAK,GAAK,CAAC,EACnC,EAAI,KAAK,EAEX,EAAI,QAAQ,GAEf,EAIO,aAAa,CAAC,EAAW,EAAiC,CAClE,IAAM,EAAS,KAAK,UACd,EAAO,KAAK,KAClB,GAAI,CAAC,GAAU,CAAC,EACd,OAAO,KAET,GAAI,EAAI,EAAK,GAAK,EAAI,EAAK,EAAI,EAAK,OAClC,OAAO,KAET,IAAM,EAAS,KAAK,OAAO,MAAM,OAC7B,EAAO,GACP,EAAW,IACf,QAAS,EAAI,EAAG,EAAI,EAAO,OAAQ,GAAK,EAAG,CACzC,IAAM,EAAI,KAAK,IAAI,EAAO,SAAS,OAAO,CAAC,EAAI,CAAC,EAChD,GAAI,EAAI,EACN,EAAW,EACX,EAAO,EAGX,GAAI,EAAO,GAAK,EAAW,EAAO,SAAS,UAAY,EACrD,OAAO,KAET,IAAM,EAAQ,KAAK,OAAO,OAAO,IAAI,CAAC,EAAG,KAAO,CAC9C,KAAM,EAAE,MAAQ,KAAK,EAAI,IACzB,MAAO,EAAE,KAAK,IAAS,EACvB,MAAO,KAAK,YAAY,EAAG,EAAE,KAAK,CACpC,EAAE,EACF,MAAO,CAAE,IAAG,IAAG,KAAM,EAAO,GAAO,OAAM,EAInC,qBAAqB,EAAW,CACtC,IAAM,EAAQ,KAAK,MACnB,GAAI,CAAC,EACH,MAAO,GAGT,OADe,KAAK,OAAO,MAAM,OACnB,QAAQ,EAAM,IAAI,EAI1B,SAAS,CAAC,EAAgB,EAA0B,EAAuB,CACjF,GAAI,EAAO,SAAW,EACpB,OAGF,GADA,EAAI,OAAO,EAAO,GAAG,EAAG,EAAO,GAAG,CAAC,EAC/B,CAAC,GAAU,EAAO,OAAS,EAAG,CAChC,QAAS,EAAI,EAAG,EAAI,EAAO,OAAQ,GAAK,EACtC,EAAI,OAAO,EAAO,GAAG,EAAG,EAAO,GAAG,CAAC,EAErC,OAGF,QAAS,EAAI,EAAG,EAAI,EAAO,OAAS,EAAG,GAAK,EAAG,CAC7C,IAAM,EAAK,EAAO,KAAK,IAAI,EAAG,EAAI,CAAC,GAC7B,EAAK,EAAO,GACZ,EAAK,EAAO,EAAI,GAChB,EAAK,EAAO,KAAK,IAAI,EAAO,OAAS,EAAG,EAAI,CAAC,GAE7C,EAAO,EAAG,GAAK,EAAG,EAAI,EAAG,GAAK,EAC9B,EAAO,EAAG,GAAK,EAAG,EAAI,EAAG,GAAK,EAC9B,EAAO,EAAG,GAAK,EAAG,EAAI,EAAG,GAAK,EAC9B,EAAO,EAAG,GAAK,EAAG,EAAI,EAAG,GAAK,EAEpC,EAAI,cAAc,EAAM,EAAM,EAAM,EAAM,EAAG,EAAG,EAAG,CAAC,GAG1D,CC7LO,MAAM,WAAiB,CAA0B,CAC5C,YAAY,EAAY,CAChC,OAAO,KAAK,OAAO,YAAc,GAGzB,cAAc,EAAiC,CACvD,IAAQ,SAAQ,SAAU,KAAK,OAC3B,EAAM,EACN,EAAM,EAGJ,EAAc,GAAY,CAAM,EAChC,EAAgB,KAAK,IACzB,EACA,GAAG,EAAO,IAAI,CAAC,IAAM,EAAE,KAAK,MAAM,CACpC,EAEA,QAAS,EAAI,EAAG,EAAI,EAAe,GAAK,EACtC,QAAW,KAAS,EAAa,CAC/B,IAAI,EAAW,EACX,EAAW,EACf,QAAW,KAAK,EAAO,CACrB,IAAM,EAAI,EAAE,KAAK,IAAM,EACvB,GAAI,GAAK,EACP,GAAY,EAEZ,QAAY,EAGhB,GAAI,EAAW,EACb,EAAM,EAER,GAAI,EAAW,EACb,EAAM,EAKZ,GAAI,GAAO,MAAQ,OACjB,EAAM,KAAK,IAAI,EAAK,EAAM,GAAG,EAE/B,GAAI,GAAO,MAAQ,OACjB,EAAM,KAAK,IAAI,EAAK,EAAM,GAAG,EAE/B,MAAO,CAAE,MAAK,KAAI,EAGV,iBAAiB,EAAsB,CAC/C,OAAO,KAAK,OAAO,MAAM,OAGjB,cAAc,EAAiB,CACvC,OAAO,KAAK,OAAO,OAChB,OAAO,CAAC,IAAM,EAAE,IAAI,EACpB,IAAI,CAAC,EAAG,KAAO,CACd,KAAM,EAAE,KACR,MAAO,KAAK,YAAY,EAAG,EAAE,KAAK,CACpC,EAAE,EAGI,UAAU,CAClB,EACA,EACA,EACM,CACN,IAAM,EAAS,KAAK,UACpB,GAAI,CAAC,EACH,OAGF,IAAQ,QAAO,YAAa,EACtB,EAAa,EAAO,YAAc,GAElC,EAAc,GAAY,EAAO,MAAM,EACvC,EAAgB,EAAO,MAAM,OAAO,OACpC,EAAa,KAAK,sBAAsB,EAE9C,QAAS,EAAI,EAAG,EAAI,EAAe,GAAK,EAAG,CAEzC,IAAM,EAAS,EACT,EAAc,EAAO,OACrB,EAAgB,EAAO,OAC1B,IAAI,CAAC,IAAM,EAAE,QAAQ,EACrB,KAAK,CAAC,IAAM,IAAM,QAAa,EAAI,CAAC,EACjC,EAAO,KAAK,YAAY,EAAU,EAAa,CAAa,EAC5D,EAAY,IAAe,EAEjC,EAAO,QAAQ,CAAC,EAAO,IAAe,CACpC,IAAM,EAAa,EAAK,OAAS,EAAa,EAAK,KAC/C,EAAS,EAEb,EAAM,QAAQ,CAAC,IAAW,CACxB,IAAM,EAAM,EAAO,KAAK,IAAM,EACxB,EAAY,KAAK,YACrB,EAAO,OAAO,QAAQ,CAAM,EAC5B,EAAO,KACT,EACM,EAAQ,EAAY,GAAa,EAAW,IAAI,EAAI,EAE1D,GAAI,EAAY,CACd,IAAM,EAAK,EAAM,MAAM,CAAC,EAClB,EAAK,EAAM,MAAM,EAAS,CAAG,EAC7B,EAAO,KAAK,IAAI,EAAI,CAAE,EACtB,EAAQ,KAAK,IAAI,EAAK,CAAE,EACxB,EAAI,EAAS,UAAU,CAAC,EAAI,EAClC,KAAK,QAAQ,EAAK,CAChB,EAAG,EACH,IACA,QACA,OAAQ,EAAK,KACb,OAAQ,EAAO,cAAgB,EAC/B,QACA,UAAW,GAAO,EAAI,QAAU,MAClC,CAAC,EACI,KACL,IAAM,EAAK,EAAM,MAAM,CAAM,EACvB,EAAK,EAAM,MAAM,EAAS,CAAG,EAC7B,EAAM,KAAK,IAAI,EAAI,CAAE,EACrB,EAAS,KAAK,IAAI,EAAK,CAAE,EACzB,EAAI,EAAS,UAAU,CAAC,EAAI,EAClC,KAAK,QAAQ,EAAK,CAChB,IACA,EAAG,EACH,MAAO,EAAK,KACZ,SACA,OAAQ,EAAO,cAAgB,EAC/B,QACA,UAAW,GAAO,EAAI,MAAQ,QAChC,CAAC,EAGH,GAAU,EACX,EACF,GAKK,aAAa,CAAC,EAAW,EAAiC,CAClE,IAAM,EAAS,KAAK,UACpB,GAAI,CAAC,EACH,OAAO,KAET,IAAM,EAAa,KAAK,OAAO,YAAc,GACvC,EAAS,KAAK,kBAAkB,EAGtC,QAAS,EAAI,EAAG,EAAI,EAAO,OAAQ,GAAK,EAAG,CACzC,IAAM,EAAQ,EAAO,SAAS,UAAU,CAAC,EACnC,EAAO,EAAO,SAAS,UAI7B,GAAI,EAHQ,EACR,GAAK,GAAS,GAAK,EAAQ,EAC3B,GAAK,GAAS,GAAK,EAAQ,GAE7B,SAGF,IAAM,EAAQ,KAAK,OAAO,OAAO,IAAI,CAAC,EAAG,KAAQ,CAC/C,KAAM,EAAE,MAAQ,KAAK,EAAK,IAC1B,MAAO,EAAE,KAAK,IAAM,EACpB,MAAO,KAAK,YAAY,EAAI,EAAE,KAAK,CACrC,EAAE,EACF,MAAO,CAAE,IAAG,IAAG,KAAM,EAAO,GAAI,OAAM,EAExC,OAAO,KAID,qBAAqB,EAAW,CACtC,IAAM,EAAQ,KAAK,MACnB,GAAI,CAAC,EACH,MAAO,GAGT,OADe,KAAK,kBAAkB,EACxB,QAAQ,EAAM,IAAI,EAG1B,WAAW,CACjB,EACA,EACA,EACM,CACN,IAAM,EAAO,EAAS,UAChB,EAAQ,EAAS,WAAW,EAClC,GAAI,IAAkB,OAEpB,MAAO,CACL,QAAS,EAAO,EAAgB,GAAc,EAC9C,KAAM,CACR,EAEF,IAAM,EAAQ,EAAQ,KAAK,IAAI,EAAG,CAAU,EAAK,IAG3C,GAAY,EAAO,GAAS,EAC5B,GAAa,EAAQ,EAAO,GAAc,EAChD,MAAO,CAAE,OAAQ,EAAW,EAAW,MAAK,EAGtC,OAAO,CACb,EACA,EASM,CACN,GAAI,EAAI,OAAS,GAAK,EAAI,QAAU,EAClC,OAEF,EAAI,KAAK,EACT,EAAI,UAAY,EAAI,MACpB,EAAI,UAAU,EACd,GAAc,EAAK,EAAK,EAAI,OAAQ,EAAI,SAAS,EACjD,EAAI,KAAK,EACT,EAAI,QAAQ,EAEhB,CAGA,SAAS,EAAW,CAAC,EAA6C,CAChE,IAAM,EAAwB,CAAC,EACzB,EAAW,IAAI,IAErB,QAAW,KAAK,EACd,GAAI,EAAE,MAAO,CACX,IAAI,EAAQ,EAAS,IAAI,EAAE,KAAK,EAChC,GAAI,CAAC,EACH,EAAQ,CAAC,EACT,EAAS,IAAI,EAAE,MAAO,CAAK,EAC3B,EAAO,KAAK,CAAK,EAEnB,EAAM,KAAK,CAAC,EAEZ,OAAO,KAAK,CAAC,CAAC,CAAC,EAGnB,OAAO,EAQT,SAAS,EAAa,CACpB,EACA,EACA,EACA,EACM,CACN,IAAQ,IAAG,IAAG,QAAO,UAAW,EAC1B,EAAI,KAAK,IAAI,EAAQ,EAAQ,EAAG,EAAS,CAAC,EAChD,GAAI,GAAK,EAAG,CACV,EAAI,KAAK,EAAG,EAAG,EAAO,CAAM,EAC5B,OAGF,IAAM,EAAe,IAAc,OAAS,IAAc,OACpD,EAAgB,IAAc,OAAS,IAAc,QACrD,EAAkB,IAAc,UAAY,IAAc,OAC1D,EAAmB,IAAc,UAAY,IAAc,QAIjE,GAFA,EAAI,OAAO,GAAK,EAAe,EAAI,GAAI,CAAC,EACxC,EAAI,OAAO,EAAI,GAAS,EAAgB,EAAI,GAAI,CAAC,EAC7C,EACF,EAAI,MAAM,EAAI,EAAO,EAAG,EAAI,EAAO,EAAI,EAAG,CAAC,EAE3C,OAAI,OAAO,EAAI,EAAO,CAAC,EAIzB,GADA,EAAI,OAAO,EAAI,EAAO,EAAI,GAAU,EAAmB,EAAI,EAAE,EACzD,EACF,EAAI,MAAM,EAAI,EAAO,EAAI,EAAQ,EAAI,EAAQ,EAAG,EAAI,EAAQ,CAAC,EAE7D,OAAI,OAAO,EAAI,EAAO,EAAI,CAAM,EAIlC,GADA,EAAI,OAAO,GAAK,EAAkB,EAAI,GAAI,EAAI,CAAM,EAChD,EACF,EAAI,MAAM,EAAG,EAAI,EAAQ,EAAG,EAAI,EAAS,EAAG,CAAC,EAE7C,OAAI,OAAO,EAAG,EAAI,CAAM,EAI1B,GADA,EAAI,OAAO,EAAG,GAAK,EAAe,EAAI,EAAE,EACpC,EACF,EAAI,MAAM,EAAG,EAAG,EAAI,EAAG,EAAG,CAAC,EAE3B,OAAI,OAAO,EAAG,CAAC,EAEjB,EAAI,UAAU,EAIhB,SAAS,EAAY,CAAC,EAAe,EAAwB,CAC3D,IAAM,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,CAAM,CAAC,EAGnC,EAAM,EAAM,MAAM,qBAAqB,EAC7C,GAAI,EAAK,CACP,IAAI,EACA,EACA,EACE,EAAI,EAAI,GACd,GAAI,EAAE,SAAW,EACf,EAAI,SAAS,EAAE,GAAK,EAAE,GAAI,EAAE,EAC5B,EAAI,SAAS,EAAE,GAAK,EAAE,GAAI,EAAE,EAC5B,EAAI,SAAS,EAAE,GAAK,EAAE,GAAI,EAAE,EAE5B,OAAI,SAAS,EAAE,MAAM,EAAG,CAAC,EAAG,EAAE,EAC9B,EAAI,SAAS,EAAE,MAAM,EAAG,CAAC,EAAG,EAAE,EAC9B,EAAI,SAAS,EAAE,MAAM,EAAG,CAAC,EAAG,EAAE,EAKhC,OAHA,EAAI,KAAK,MAAM,GAAK,IAAM,GAAK,CAAC,EAChC,EAAI,KAAK,MAAM,GAAK,IAAM,GAAK,CAAC,EAChC,EAAI,KAAK,MAAM,GAAK,IAAM,GAAK,CAAC,EACzB,OAAO,MAAM,MAAM,KAI5B,IAAM,EAAO,EAAM,MAAM,yCAAyC,EAClE,GAAI,EAAM,CACR,IAAM,EAAI,KAAK,MAAM,SAAS,EAAK,EAAE,GAAK,IAAM,SAAS,EAAK,EAAE,GAAK,CAAC,EAChE,EAAI,KAAK,MAAM,SAAS,EAAK,EAAE,GAAK,IAAM,SAAS,EAAK,EAAE,GAAK,CAAC,EAChE,EAAI,KAAK,MAAM,SAAS,EAAK,EAAE,GAAK,IAAM,SAAS,EAAK,EAAE,GAAK,CAAC,EACtE,MAAO,OAAO,MAAM,MAAM,KAG5B,OAAO,ECvVT,IAAM,GAAS,KAAK,GAAK,EAElB,MAAM,WAAiB,CAA0B,CAC5C,gBAAgB,EAAY,CACpC,MAAO,GAGC,cAAc,EAAiB,CACvC,OAAO,KAAK,OAAO,KAAK,IAAI,CAAC,EAAG,KAAO,CACrC,KAAM,EAAE,KACR,MAAO,EAAE,OAAS,KAAK,YAAY,CAAC,CACtC,EAAE,EAIM,aAAa,CAAC,EAAW,EAAiC,CAClE,IAAM,EAAO,KAAK,KAClB,GAAI,CAAC,EACH,OAAO,KAET,IAAM,EAAU,EAAK,EAAI,EAAK,MAAQ,EAChC,EAAU,EAAK,EAAI,EAAK,OAAS,EACjC,EAAY,KAAK,IAAI,EAAK,MAAO,EAAK,MAAM,EAAI,EAChD,EAAc,GAAc,KAAK,OAAO,QAAU,MAAO,CAAS,EAClE,EAAc,GAAc,KAAK,OAAO,aAAe,EAAG,CAAS,EACnE,EAAa,KAAK,OAAO,YAAc,CAAC,KAAK,GAAK,EAElD,EAAK,EAAI,EACT,EAAK,EAAI,EACT,EAAO,KAAK,MAAM,EAAI,CAAE,EAC9B,GAAI,EAAO,GAAe,EAAO,EAC/B,OAAO,KAGT,IAAM,EAAO,KAAK,OAAO,KAAK,OAAO,CAAC,IAAM,EAAE,MAAQ,CAAC,EACjD,EAAQ,EAAK,OAAO,CAAC,EAAK,IAAM,EAAM,EAAE,MAAO,CAAC,EACtD,GAAI,GAAS,EACX,OAAO,KAIT,IAAI,EAAI,KAAK,MAAM,EAAI,CAAE,EACzB,MAAO,EAAI,EACT,GAAK,GAEP,IAAI,EAAM,EACV,QAAS,EAAI,EAAG,EAAI,EAAK,OAAQ,GAAK,EAAG,CACvC,IAAM,EAAI,EAAK,GACT,EAAS,EAAE,MAAQ,EAAS,GAClC,GAAI,GAAK,GAAO,GAAK,EAAM,EAAO,CAChC,IAAM,EAAU,KAAK,MAAO,EAAE,MAAQ,EAAS,GAAG,EAClD,MAAO,CACL,IACA,IACA,KAAM,EAAE,KACR,MAAO,CACL,CACE,KAAM,EAAE,KACR,MAAO,GAAG,KACV,MAAO,EAAE,OAAS,KAAK,YAAY,CAAC,CACtC,CACF,CACF,EAEF,GAAO,EAET,OAAO,KAGC,UAAU,CAClB,EACA,EACA,EACM,CACN,IAAQ,QAAS,EACX,EAAU,EAAK,EAAI,EAAK,MAAQ,EAChC,EAAU,EAAK,EAAI,EAAK,OAAS,EAEjC,EACJ,KAAK,IAAI,EAAK,MAAO,EAAK,MAAM,EAAI,EAChC,EAAc,GAAc,EAAO,QAAU,MAAO,CAAS,EAC7D,EAAc,GAAc,EAAO,aAAe,EAAG,CAAS,EAC9D,EAAa,EAAO,YAAc,CAAC,KAAK,GAAK,EAE7C,EAAO,EAAO,KAAK,OAAO,CAAC,IAAM,EAAE,MAAQ,CAAC,EAC5C,EAAQ,EAAK,OAAO,CAAC,EAAK,IAAM,EAAM,EAAE,MAAO,CAAC,EACtD,GAAI,GAAS,GAAK,GAAe,EAC/B,OAGF,IAAI,EAAQ,EAEZ,EAAK,QAAQ,CAAC,EAAG,IAAU,CACzB,IAAM,EAAS,EAAE,MAAQ,EAAS,GAC5B,EAAQ,EAAE,OAAS,KAAK,YAAY,CAAK,EAK/C,GAHA,EAAI,KAAK,EACT,EAAI,UAAY,EAChB,EAAI,UAAU,EACV,EAAc,EAEhB,EAAI,IAAI,EAAS,EAAS,EAAa,EAAO,EAAQ,CAAK,EAC3D,EAAI,IACF,EACA,EACA,EACA,EAAQ,EACR,EACA,EACF,EAEA,OAAI,IAAI,EAAS,EAAS,EAAa,EAAO,EAAQ,CAAK,EAC3D,EAAI,OAAO,EAAS,CAAO,EAa7B,GAXA,EAAI,UAAU,EACd,EAAI,KAAK,EAET,EAAI,YAAc,UAClB,EAAI,UAAY,EAChB,EAAI,OAAO,EACX,EAAI,QAAQ,EAKR,EAAO,YAAc,GAAO,CAC9B,IAAM,EAAW,EAAQ,EAAQ,EAC3B,EAAU,EAAQ,EAAI,KAAK,MAAO,EAAE,MAAQ,EAAS,GAAG,EAAI,EAC5D,EAAO,GAAG,EAAE,QAAQ,KAE1B,GAAI,EAAO,gBAAkB,UAAW,CACtC,IAAM,EAAa,EAAO,iBAAmB,GACvC,EAAM,EAAO,UAAY,EACzB,EAAO,KAAK,IAAI,CAAQ,EACxB,EAAO,KAAK,IAAI,CAAQ,EAExB,EAAQ,EAAU,EAAO,EACzB,EAAQ,EAAU,EAAO,EACzB,EAAQ,EAAU,GAAQ,EAAc,GACxC,EAAQ,EAAU,GAAQ,EAAc,GAExC,EAAa,GAAQ,EAAI,EAAI,GAC7B,GAAQ,EAAQ,EAAa,EAC7B,GAAQ,EAEd,EAAI,KAAK,EACT,EAAI,YAAc,EAAO,gBAAkB,UAC3C,EAAI,UAAY,EAChB,EAAI,UAAU,EACd,EAAI,OAAO,EAAO,CAAK,EACvB,EAAI,OAAO,EAAO,CAAK,EACvB,EAAI,OAAO,GAAO,EAAK,EACvB,EAAI,OAAO,EACX,EAAI,QAAQ,EAEZ,EAAU,EAAK,EAAO,eAAiB,EAAE,EACzC,EAAI,UAAY,EAAO,YAAc,UACrC,EAAI,UAAY,EAAa,EAAI,OAAS,QAC1C,EAAI,aAAe,SACnB,EAAI,SAAS,EAAM,GAAO,EAAK,EAC1B,KACL,IAAM,GACF,GAAe,EAAc,EAAI,EAAc,IAAM,EAAK,KACxD,EAAS,EAAU,KAAK,IAAI,CAAQ,EAAI,EACxC,EAAS,EAAU,KAAK,IAAI,CAAQ,EAAI,EAE9C,EAAU,EAAK,EAAO,eAAiB,EAAE,EACzC,EAAI,UAAY,EAAO,YAAc,UACrC,EAAI,UAAY,SAChB,EAAI,aAAe,SACnB,EAAI,SAAS,EAAM,EAAQ,CAAM,GAIrC,GAAS,EACV,EAEL,CAGA,SAAS,EAAa,CAAC,EAAwB,EAA2B,CACxE,GAAI,OAAO,IAAU,SACnB,OAAO,KAAK,IAAI,EAAG,CAAK,EAE1B,IAAM,EAAQ,qBAAqB,KAAK,CAAK,EAC7C,GAAI,CAAC,EACH,OAAO,EAET,OAAQ,OAAO,EAAM,EAAE,EAAI,IAAO,ECvL7B,MAAM,WAAmB,CAA4B,CAChD,gBAAgB,EAAY,CACpC,MAAO,GAGC,cAAc,EAAiB,CACvC,OAAO,KAAK,OAAO,OAChB,OAAO,CAAC,IAAM,EAAE,IAAI,EACpB,IAAI,CAAC,EAAG,KAAO,CACd,KAAM,EAAE,KACR,MAAO,KAAK,YAAY,EAAG,EAAE,KAAK,CACpC,EAAE,EAGI,UAAU,CAClB,EACA,EACA,EACM,CACN,IAAQ,QAAS,EACX,EAAU,EAAK,EAAI,EAAK,MAAQ,EAChC,EAAU,EAAK,EAAI,EAAK,OAAS,EACjC,EACJ,EAAO,QAAU,KAAK,IAAI,EAAK,MAAO,EAAK,MAAM,EAAI,EAAI,IACrD,EAAQ,EAAO,WAAW,OAChC,GAAI,IAAU,GAAK,GAAU,EAC3B,OAGF,IAAM,EAAa,EAAO,YAAc,CAAC,KAAK,GAAK,EAC7C,EAAO,GAAS,EAChB,EAAa,KAAK,IAAI,EAAG,EAAO,YAAc,CAAC,EAC/C,EAAY,EAAO,WAAa,UAChC,EAAgB,EAAO,eAAiB,EAExC,EAAc,CAAC,IACnB,EAAa,EAAQ,EAEjB,EAAa,CAAC,EAAe,KAA2B,CAC5D,EAAG,EAAU,KAAK,IAAI,CAAK,EAAI,EAC/B,EAAG,EAAU,KAAK,IAAI,CAAK,EAAI,CACjC,GAGA,QAAS,EAAQ,EAAG,GAAS,EAAY,GAAS,EAAG,CACnD,IAAM,EAAK,EAAS,EAAS,EAC7B,EAAI,KAAK,EACT,EAAI,YAAc,EAClB,EAAI,UAAY,EAChB,EAAI,UAAU,EACd,QAAS,EAAI,EAAG,EAAI,EAAO,GAAK,EAAG,CACjC,IAAM,EAAI,EAAW,EAAY,CAAC,EAAG,CAAC,EACtC,GAAI,IAAM,EACR,EAAI,OAAO,EAAE,EAAG,EAAE,CAAC,EAEnB,OAAI,OAAO,EAAE,EAAG,EAAE,CAAC,EAGvB,EAAI,UAAU,EACd,EAAI,OAAO,EACX,EAAI,QAAQ,EAId,EAAI,KAAK,EACT,EAAI,YAAc,EAClB,EAAI,UAAY,EAChB,EAAI,UAAU,EACd,QAAS,EAAI,EAAG,EAAI,EAAO,GAAK,EAAG,CACjC,IAAM,EAAI,EAAW,EAAY,CAAC,EAAG,CAAM,EAC3C,EAAI,OAAO,EAAS,CAAO,EAC3B,EAAI,OAAO,EAAE,EAAG,EAAE,CAAC,EAErB,EAAI,OAAO,EACX,EAAI,QAAQ,EAGZ,IAAM,EAAgB,EAAO,eAAiB,GAC9C,EAAU,EAAK,CAAa,EAC5B,EAAI,UAAY,EAAO,YAAc,UACrC,QAAS,EAAI,EAAG,EAAI,EAAO,GAAK,EAAG,CACjC,IAAM,EAAI,EAAW,EAAY,CAAC,EAAG,EAAS,EAAE,EAChD,EAAI,UAAY,KAAK,IAAI,EAAE,EAAI,CAAO,EAAI,EAAI,SAAW,EAAE,EAAI,EAAU,OAAS,QAClF,EAAI,aACF,KAAK,IAAI,EAAE,EAAI,CAAO,EAAI,EACtB,SACA,EAAE,EAAI,EACJ,MACA,SACR,EAAI,SAAS,EAAO,WAAW,GAAG,KAAM,EAAE,EAAG,EAAE,CAAC,EAIlD,EAAO,OAAO,QAAQ,CAAC,EAAQ,IAAgB,CAC7C,IAAM,EAAQ,KAAK,YAAY,EAAa,EAAO,KAAK,EAClD,EAAuB,EAAO,WAAW,IAAI,CAAC,EAAW,IAAM,CACnE,IAAM,EACJ,EAAU,KAAO,KAAK,aAAa,EAAQ,CAAC,EACxC,EAAQ,EAAO,KAAK,IAAM,EAC1B,EAAQ,EAAM,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,EAAQ,CAAG,CAAC,EAAI,EAChE,OAAO,EAAW,EAAY,CAAC,EAAG,EAAS,CAAK,EACjD,EAED,GAAI,EAAO,OAAS,GAClB,EAAI,KAAK,EACT,EAAI,UAAY,EAChB,EAAI,YAAc,IAClB,EAAI,UAAU,EACd,KAAK,aAAa,EAAK,CAAM,EAC7B,EAAI,UAAU,EACd,EAAI,KAAK,EACT,EAAI,QAAQ,EAGd,EAAI,KAAK,EACT,EAAI,YAAc,EAClB,EAAI,UAAY,EAAO,WAAa,EACpC,EAAI,SAAW,QACf,EAAI,UAAU,EACd,KAAK,aAAa,EAAK,CAAM,EAC7B,EAAI,UAAU,EACd,EAAI,OAAO,EACX,EAAI,QAAQ,EACb,EAIO,aAAa,CAAC,EAAW,EAAiC,CAClE,IAAM,EAAO,KAAK,KAClB,GAAI,CAAC,EACH,OAAO,KAET,IAAM,EAAU,EAAK,EAAI,EAAK,MAAQ,EAChC,EAAU,EAAK,EAAI,EAAK,OAAS,EACjC,EACJ,KAAK,OAAO,QAAW,KAAK,IAAI,EAAK,MAAO,EAAK,MAAM,EAAI,EAAK,IAC5D,EAAQ,KAAK,OAAO,WAAW,OACrC,GAAI,IAAU,EACZ,OAAO,KAET,IAAM,EAAa,KAAK,OAAO,YAAc,CAAC,KAAK,GAAK,EAClD,EAAO,GAAS,EAElB,EAAO,GACP,EAAW,GACf,QAAS,EAAI,EAAG,EAAI,EAAO,GAAK,EAAG,CACjC,IAAM,EACJ,KAAK,OAAO,WAAW,GAAG,KAAO,KAAK,aAAa,KAAK,OAAQ,CAAC,EAC7D,EAAQ,EAAa,EAAI,EAC/B,QAAS,EAAK,EAAG,EAAK,KAAK,OAAO,OAAO,OAAQ,GAAM,EAAG,CACxD,IAAM,EAAQ,KAAK,OAAO,OAAO,GAAI,KAAK,IAAM,EAC1C,EAAQ,EAAM,EAAI,KAAK,IAAI,EAAG,KAAK,IAAI,EAAG,EAAQ,CAAG,CAAC,EAAI,EAC1D,EAAK,EAAU,KAAK,IAAI,CAAK,EAAI,EAAS,EAC1C,EAAK,EAAU,KAAK,IAAI,CAAK,EAAI,EAAS,EAC1C,EAAI,KAAK,MAAM,EAAI,EAAI,EAAI,CAAE,EACnC,GAAI,EAAI,EACN,EAAW,EACX,EAAO,GAIb,GAAI,EAAO,EACT,OAAO,KAET,IAAM,EAAQ,KAAK,OAAO,OAAO,IAAI,CAAC,EAAG,KAAQ,CAC/C,KAAM,EAAE,MAAQ,KAAK,EAAK,IAC1B,MAAO,EAAE,KAAK,IAAS,EACvB,MAAO,KAAK,YAAY,EAAI,EAAE,KAAK,CACrC,EAAE,EACF,MAAO,CACL,IACA,IACA,KAAM,KAAK,OAAO,WAAW,GAAO,KACpC,OACF,EAGM,YAAY,CAAC,EAA0B,EAAuB,CACpE,IAAI,EAAM,EACV,QAAW,KAAU,EAAO,OAAQ,CAClC,IAAM,EAAI,EAAO,KAAK,IAAU,EAChC,GAAI,EAAI,EACN,EAAM,EAGV,OAAO,EAGD,YAAY,CAAC,EAAgB,EAAqC,CACxE,GAAI,EAAO,SAAW,EACpB,OAEF,EAAI,OAAO,EAAO,GAAG,EAAG,EAAO,GAAG,CAAC,EACnC,QAAS,EAAI,EAAG,EAAI,EAAO,OAAQ,GAAK,EACtC,EAAI,OAAO,EAAO,GAAG,EAAG,EAAO,GAAG,CAAC,EAGzC,CAEA,IAAM,GAAS,KAAK,GAAK,EC1LlB,SAAS,CAAgB,EAAW,CACzC,IAAM,EAAO,GAAQ,EACrB,GAAI,OAAO,EAAK,mBAAqB,UAAY,EAAK,iBAAmB,EACvE,OAAO,EAAK,iBAEd,MAAO,GAGT,SAAS,EAAO,EAA4B,CAC1C,GAAI,OAAO,WAAe,IACxB,OAAO,WAET,MAAO,CAAC,ECjBH,SAAS,CAAoB,CAClC,EACgC,CAEhC,IAAM,EADO,GAAQ,EACJ,GACjB,OAAO,OAAO,IAAQ,UAAY,IAAQ,KACrC,EACD,KAQC,SAAS,EAAwB,CAAC,EAON,CACjC,IAAM,EACJ,EAAQ,UAAY,EAAwB,GAAK,KAC7C,EAAM,EAAqB,CAAQ,EACnC,EAAU,GAAK,oBACrB,GAAI,OAAO,IAAY,WACrB,OAAO,QAAQ,OACT,MAAM,6BAA6B,wCAA+C,CACxF,EAGF,OAAO,IAAI,QAAQ,CAAC,EAAS,IAAW,CACtC,IAAI,EAAQ,EAAQ,KAAK,CAAG,EAC5B,GAAI,EAAQ,UAAY,OAAO,EAAM,KAAO,WAC1C,EAAQ,EAAM,GAAG,EAAQ,QAAQ,EAEnC,GAAI,OAAO,EAAM,SAAW,WAAY,CACtC,EAAW,MAAM,GAAG,iDAAwD,CAAC,EAC7E,OAEF,EACG,OAAO,EAAQ,QAAQ,EACvB,OAAO,CAAE,KAAM,GAAM,KAAM,EAAK,CAAC,EACjC,KAAK,CAAC,IAAiB,CAEtB,IAAM,GADQ,MAAM,QAAQ,CAAG,EAAI,EAAI,GAAK,SACxB,KACpB,GAAI,CAAC,GAAQ,OAAO,EAAK,aAAe,WAAY,CAClD,EACM,MACF,wDAAwD,EAAQ,WAClE,CACF,EACA,OAEF,EAAQ,CAAI,EACb,EACJ,EAII,SAAS,CAAuB,EAA6B,CAClE,GAAI,EAAqB,IAAI,EAC3B,MAAO,KAET,GAAI,EAAqB,IAAI,EAC3B,MAAO,KAET,GAAI,EAAqB,IAAI,EAC3B,MAAO,KAET,OAAO,KAIF,SAAS,EAA2B,CAAC,EAAsC,CAChF,IAAM,EAAO,GAAY,EAAwB,GAAK,KAChD,EAAM,EAAqB,CAAI,EAC/B,EAAO,GAAK,kBAClB,GAAI,OAAO,IAAS,WAClB,GAAI,CACF,IAAM,EAAO,EAAK,KAAK,CAAG,EAC1B,GAAI,OAAO,EAAK,aAAe,UAAY,EAAK,WAAa,EAC3D,OAAO,EAAK,WAEd,KAAM,EAIV,OAAO,EAAiB,EAQnB,SAAS,CAAwB,CACtC,EACA,EAAgC,CAAC,EACb,CACpB,IAAM,EAAQ,EAAK,WAAW,IAAI,EAClC,GAAI,CAAC,EACH,MAAU,MAAM,uDAAuD,EAGzE,IAAM,EAAM,EAAQ,KAAO,GAA4B,EACjD,EAAQ,EAAQ,OAAS,EAAK,MAC9B,EAAS,EAAQ,QAAU,EAAK,OAGtC,MAAO,CAAE,IAFG,EAEE,QAAO,SAAQ,MAAK,QAAS,EAAQ,OAAQ,EAG7D,SAAS,EAAO,EAA4B,CAC1C,GAAI,OAAO,WAAe,IACxB,OAAO,WAET,MAAO,CAAC,ECjIH,SAAS,CAAgB,CAC9B,EACA,EAAgC,CAAC,EACb,CACpB,GAAI,CAAC,EACH,MAAU,MAAM,8CAA8C,EAGhE,IAAM,EAAQ,EAAO,WAAW,IAAI,EACpC,GAAI,CAAC,EACH,MAAU,MAAM,+CAA+C,EAGjE,IAAM,EAAM,EAAQ,KAAO,EAAiB,EACtC,EAAQ,EAAQ,QAAU,EAAO,aAAe,EAAO,OACvD,EAAS,EAAQ,SAAW,EAAO,cAAgB,EAAO,QAShE,OANA,EAAO,MAAQ,KAAK,MAAM,EAAQ,CAAG,EACrC,EAAO,OAAS,KAAK,MAAM,EAAS,CAAG,EAKhC,CAAE,IAFG,EAEE,QAAO,SAAQ,MAAK,QAAS,EAAQ,OAAQ,ECdtD,SAAS,CAAkC,CAChD,EACA,EACc,CACd,OAAQ,EAAO,UACR,OACH,OAAO,IAAI,GAAU,EAAS,CAAM,MACjC,MACH,OAAO,IAAI,GAAS,EAAS,CAAM,MAChC,MACH,OAAO,IAAI,GAAS,EAAS,CAAM,MAChC,QACH,OAAO,IAAI,GAAW,EAAS,CAAM,UAErC,MAAU,MACR,wCAAyC,EAAuB,OAClE,GAKC,SAAS,EAAqC,CACnD,EACA,EACA,EAAuC,CAAC,EAC1B,CACd,OAAO,EAAY,EAAiB,EAAQ,CAAc,EAAG,CAAM,EAI9D,SAAS,EAA6C,CAC3D,EACA,EACA,EAAuC,CAAC,EAC1B,CACd,OAAO,EAAY,EAAyB,EAAM,CAAc,EAAG,CAAM,EC9BpE,SAAS,EAAmB,CACjC,EACoB,CACpB,MAAU,MACR,uLAGF,ECLK,SAAS,CAAU,CAAC,EAA4C,CACrE,GAAI,IAAa,QAAa,IAAa,KACzC,MAAO,CAAC,EAEV,OAAO,MAAM,QAAQ,CAAQ,EAAI,EAAW,CAAC,CAAQ,EA6DhD,SAAS,EAAe,CAAC,EAAsC,CACpE,OAAO,OAAO,IAAU,UAAY,IAAU,MAAQ,cAAe,EAGhE,SAAS,EAAU,CAAC,EAAiC,CAC1D,OACE,OAAO,IAAU,UACjB,IAAU,MACV,QAAS,GACT,EAAM,MAAQ,OAIX,SAAS,EAAc,CAAC,EAAqC,CAClE,OACE,OAAO,IAAU,UACjB,IAAU,MACV,QAAS,GACT,EAAM,MAAQ,OAIX,SAAS,EAAC,CACf,EACA,EACA,EACA,EACA,EACA,EACU,CACV,MAAO,CACL,MACA,QACA,WACA,YACA,MACA,YACF,EAGK,SAAS,EAAG,CACjB,EACA,EAAkC,CAAC,EACzB,CACV,MAAO,CACL,SACG,CACL,EAGF,SAAS,CAAoB,CAAC,EAA8B,CAC1D,MAAO,CAAC,EAAkC,CAAC,IAAM,GAAI,EAAK,CAAO,EAG5D,IAAM,GAAM,EAAqB,KAAK,EAChC,GAAO,EAAqB,MAAM,EAClC,GAAI,EAAqB,GAAG,EAC5B,GAAS,EAAqB,QAAQ,EACtC,GAAQ,EAAqB,OAAO,EACpC,GAAU,EAAqB,SAAS,EACxC,GAAO,EAAqB,MAAM,EAClC,GAAS,EAAqB,QAAQ,EACtC,GAAS,EAAqB,QAAQ,EACtC,GAAM,EAAqB,KAAK,EAChC,GAAU,EAAqB,SAAS,EACxC,GAAQ,EAAqB,OAAO,EACpC,GAAK,EAAqB,IAAI,EAC9B,GAAK,EAAqB,IAAI,EAC9B,GAAK,EAAqB,IAAI,EAC9B,GAAK,EAAqB,IAAI,EAC9B,GAAK,EAAqB,IAAI,EAC9B,GAAK,EAAqB,IAAI,EAC9B,GAAS,EAAqB,QAAQ,EACtC,GAAK,EAAqB,IAAI,EAC9B,GAAQ,EAAqB,OAAO,EACpC,GAAM,EAAqB,KAAK,EAChC,GAAO,EAAqB,MAAM,EAClC,GAAa,EAAqB,YAAY,EAC9C,GAAK,EAAqB,IAAI,EAC9B,GAAK,EAAqB,IAAI,EAC9B,GAAK,EAAqB,IAAI,EAC9B,GAAI,EAAqB,GAAG,EAC5B,GAAM,EAAqB,KAAK,EAChC,GAAO,EAAqB,MAAM,EAClC,GAAQ,EAAqB,OAAO,EACpC,GAAW,EAAqB,UAAU,EAC1C,GAAS,EAAqB,QAAQ,EACtC,GAAS,EAAqB,QAAQ,EACtC,GAAQ,EAAqB,OAAO,EACpC,GAAQ,EAAqB,OAAO,EACpC,GAAQ,EAAqB,OAAO,EACpC,GAAK,EAAqB,IAAI,EAC9B,GAAK,EAAqB,IAAI,EAC9B,GAAK,EAAqB,IAAI,EC5KpC,IAAM,EAAc,OAAO,aAAa,EAClC,EAAc,OAAO,aAAa,EAClC,GAAS,OAAO,QAAQ,EAMxB,GAAyB,CACpC,OACA,MACA,QACA,UACA,SACA,OACA,SACF,EAEO,SAAS,CAAe,CAC7B,EACA,EACS,CACT,OAAO,QAAQ,QAAQ,IAAI,EAAO,CAAI,CAAC,EAGlC,SAAS,CAAQ,CAAC,EAAiC,CACxD,OAAO,IAAU,MAAQ,OAAO,IAAU,SChCrC,MAAM,EAAkB,CACZ,QAAU,IAAI,IACvB,SAAW,GACX,aAAqC,KACrC,aAAoC,KAKrC,OAAO,CAAC,EAA8B,CAC3C,GAAI,KAAK,QAAQ,IAAI,CAAM,EACzB,OAGF,GADA,KAAK,QAAQ,IAAI,CAAM,EACnB,CAAC,KAAK,SACR,eAAe,IAAM,KAAK,MAAM,CAAC,EAS9B,KAAK,EAAS,CACnB,GAAI,KAAK,SACP,OAEF,KAAK,SAAW,GAChB,GAAI,CACF,MAAO,KAAK,QAAQ,KAAO,EAAG,CAC5B,IAAM,EAAQ,MAAM,KAAK,KAAK,OAAO,EACrC,KAAK,QAAQ,MAAM,EACnB,QAAW,KAAU,EACnB,GAAI,EAAO,OACT,EAAO,UAIb,CACA,KAAK,SAAW,GAChB,IAAM,EAAU,KAAK,aACrB,KAAK,aAAe,KACpB,KAAK,aAAe,KACpB,IAAU,GAQP,QAAQ,EAAkB,CAC/B,GAAI,CAAC,KAAK,UAAY,KAAK,QAAQ,OAAS,EAC1C,OAAO,QAAQ,QAAQ,EAEzB,GAAI,KAAK,aACP,OAAO,KAAK,aAKd,OAHA,KAAK,aAAe,IAAI,QAAc,CAAC,IAAY,CACjD,KAAK,aAAe,EACrB,EACM,KAAK,aAEhB,CCvDA,IAAI,GAAW,EAGF,GAAoB,IAAI,GAmB9B,MAAM,CAAe,OACX,UACP,aAAsC,KAC7B,YAAgC,CAAC,EAC1C,UAAY,IAAI,QAIhB,YAAc,IAAI,QAClB,YAAc,IAAI,QAElB,SAAW,IAAI,QAEf,WAAW,EAAG,QAER,YAAW,EAAmB,CAC1C,GAAI,CAAC,EAAe,SAClB,EAAe,SAAW,IAAI,EAEhC,OAAO,EAAe,SAGjB,QAA0B,CAAC,EAAc,CAE9C,GAAI,CAAC,EAAS,CAAM,EAElB,OADA,QAAQ,KAAK,oCAAoC,EAC1C,EAIT,GAAI,GAAW,CAAM,EACnB,OAAO,EAIT,GAAI,KAAK,YAAY,IAAI,CAAM,EAC7B,OAAO,KAAK,YAAY,IAAI,CAAM,EAIpC,GAAI,MAAM,QAAQ,CAAM,EACtB,OAAO,KAAK,oBAAoB,CAAM,EAIxC,IAAM,EAAQ,IAAI,MAAM,EAAQ,CAC9B,IAAK,CAAC,EAAQ,IAAyB,CAErC,GAAI,IAAQ,EACV,MAAO,GAET,GAAI,IAAQ,EACV,MAAO,GAIT,KAAK,MAAM,EAAQ,CAAG,EAEtB,IAAM,EAAQ,QAAQ,IAAI,EAAQ,CAAG,EAGrC,GAAI,EAAS,CAAK,GAAK,CAAC,EAAgB,EAAO,CAAW,EACxD,OAAO,KAAK,SAAS,CAAK,EAE5B,OAAO,GAET,IAAK,CAAC,EAAQ,EAAsB,IAAU,CAE5C,GAAI,EAAgB,EAAQ,CAAW,EAErC,OADA,QAAQ,KAAK,uBAAuB,OAAO,CAAG,sBAAsB,EAC7D,GAGT,IAAM,EAAW,QAAQ,IAAI,EAAQ,CAAG,EAGxC,GACE,EAAS,CAAK,GACd,CAAC,EAAgB,EAAO,CAAW,GACnC,CAAC,EAAgB,EAAO,CAAW,EAEnC,EAAQ,KAAK,SAAS,CAAK,EAG7B,IAAM,EAAS,QAAQ,IAAI,EAAQ,EAAK,CAAK,EAG7C,GAAI,IAAa,EACf,KAAK,QAAQ,EAAQ,CAAG,EAE1B,OAAO,GAET,eAAgB,CAAC,EAAQ,IAAyB,CAEhD,GAAI,EAAgB,EAAQ,CAAW,EAIrC,OAHA,QAAQ,KACN,0BAA0B,OAAO,CAAG,sBACtC,EACO,GAGT,IAAM,EAAS,KAAO,EAChB,EAAS,QAAQ,eAAe,EAAQ,CAAG,EAEjD,GAAI,EACF,KAAK,QAAQ,EAAQ,CAAG,EAE1B,OAAO,EAEX,CAAC,EAKD,OAFA,KAAK,YAAY,IAAI,EAAQ,CAAK,EAClC,KAAK,SAAS,IAAI,EAAO,CAAM,EACxB,EAQD,UAAU,CAAC,EAAyB,CAC1C,GAAI,EAAS,CAAK,GAAK,KAAK,SAAS,IAAI,CAAK,EAC5C,OAAO,KAAK,SAAS,IAAI,CAAK,EAEhC,OAAO,EAMD,mBAAwC,CAAC,EAAc,CAE7D,GAAI,KAAK,YAAY,IAAI,CAAM,EAC7B,OAAO,KAAK,YAAY,IAAI,CAAM,EAGpC,IAAM,EAAQ,IAAI,MAAM,EAAQ,CAC9B,IAAK,CAAC,EAAQ,IAAyB,CAErC,GAAI,IAAQ,EACV,MAAO,GAET,GAAI,IAAQ,EACV,MAAO,GAIT,KAAK,MAAM,EAAQ,CAAG,EAEtB,IAAM,EAAQ,QAAQ,IAAI,EAAQ,CAAG,EAIrC,GACE,OAAO,IAAQ,WACd,IAAQ,YAAc,IAAQ,WAAa,IAAQ,eACpD,CAEA,KAAK,MAAM,EAAQ,QAAQ,EAC3B,QAAS,EAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,KAAK,MAAM,EAAQ,OAAO,CAAC,CAAC,EAE9B,IAAM,EAAS,EACf,MAAO,IAAI,IAAoB,CAC7B,IAAM,EAAS,EAAO,MAAM,EAAQ,CAAI,EACxC,GAAI,IAAW,IAAS,IAAW,GAAI,CACrC,IAAM,EAAc,EAAO,IAAI,CAAC,IAAS,KAAK,WAAW,CAAI,CAAC,EAI9D,OAHuB,EAAY,GAGb,MACpB,EACA,EAAK,IAAI,CAAC,IAAQ,KAAK,WAAW,CAAG,CAAC,CACxC,EAEF,OAAO,GAKX,GACE,OAAO,IAAQ,UACf,GAAuB,SACrB,CACF,EAEA,MAAO,IAAI,IAAoB,CAG7B,IAAM,EADc,EACO,MAAM,EAAQ,CAAI,EAI7C,OAFA,KAAK,QAAQ,EAAQ,QAAQ,EAC7B,KAAK,QAAQ,EAAQ,CAAG,EACjB,GAIX,GAAI,EAAS,CAAK,GAAK,CAAC,EAAgB,EAAO,CAAW,EACxD,OAAO,KAAK,SAAS,CAAK,EAG5B,OAAO,GAET,IAAK,CAAC,EAAQ,EAAsB,IAAU,CAE5C,GAAI,EAAgB,EAAQ,CAAW,EAErC,OADA,QAAQ,KAAK,uBAAuB,OAAO,CAAG,sBAAsB,EAC7D,GAGT,IAAM,EAAW,QAAQ,IAAI,EAAQ,CAAG,EAGxC,GACE,EAAS,CAAK,GACd,CAAC,EAAgB,EAAO,CAAW,GACnC,CAAC,EAAgB,EAAO,CAAW,EAEnC,EAAQ,KAAK,SAAS,CAAK,EAG7B,IAAM,EAAS,QAAQ,IAAI,EAAQ,EAAK,CAAK,EAG7C,GAAI,IAAa,GAGf,GAFA,KAAK,QAAQ,EAAQ,CAAG,EAEpB,OAAO,IAAQ,UAAY,CAAC,MAAM,OAAO,CAAG,CAAC,EAC/C,KAAK,QAAQ,EAAQ,QAAQ,EAGjC,OAAO,GAET,eAAgB,CAAC,EAAQ,IAAyB,CAEhD,GAAI,EAAgB,EAAQ,CAAW,EAIrC,OAHA,QAAQ,KACN,0BAA0B,OAAO,CAAG,sBACtC,EACO,GAGT,IAAM,EAAS,KAAO,EAChB,EAAS,QAAQ,eAAe,EAAQ,CAAG,EAEjD,GAAI,EACF,KAAK,QAAQ,EAAQ,CAAG,EAExB,KAAK,QAAQ,EAAQ,QAAQ,EAE/B,OAAO,EAEX,CAAC,EAKD,OAFA,KAAK,YAAY,IAAI,EAAQ,CAAK,EAClC,KAAK,SAAS,IAAI,EAAO,CAAM,EACxB,EAGF,QAA0B,CAAC,EAAwB,CAExD,GAAI,CAAC,EAAS,CAAM,EAElB,OADA,QAAQ,KAAK,oCAAoC,EAC1C,EAIT,GAAI,EAAgB,EAAQ,CAAW,EACrC,OAAO,EAIT,GAAI,KAAK,YAAY,IAAI,CAAM,EAC7B,OAAO,KAAK,YAAY,IAAI,CAAM,EAGpC,IAAM,EAAQ,IAAI,MAAM,EAAQ,CAC9B,IAAK,CAAC,EAAQ,IAAyB,CAErC,GAAI,IAAQ,EACV,MAAO,GAET,GAAI,IAAQ,EACV,MAAO,GAGT,IAAM,EAAQ,QAAQ,IAAI,EAAQ,CAAG,EAErC,GAAI,EAAS,CAAK,EAChB,OAAO,KAAK,SAAS,CAAK,EAE5B,OAAO,GAET,IAAK,KACH,QAAQ,KAAK,wCAAwC,EAC9C,IAET,eAAgB,KACd,QAAQ,KAAK,2CAA2C,EACjD,GAEX,CAAC,EAID,OADA,KAAK,YAAY,IAAI,EAAQ,CAAK,EAC3B,EAGF,MAAmB,CACxB,EACA,EACmB,CACnB,IAAQ,OAAO,GAAO,YAAW,eAAe,IAAU,GAAW,CAAC,EAEhE,EAA8B,IAAM,CACxC,GAAI,CAAC,EAAS,OACZ,OAAO,EAAG,EAGZ,GAAI,CAKF,OAHA,KAAK,QAAQ,CAAQ,EACrB,KAAK,YAAY,KAAK,CAAQ,EAC9B,KAAK,aAAe,EACb,EAAG,EACV,MAAO,EAAO,CACd,GAAI,EACF,MAAM,EAER,QAAQ,MAAM,gBAAiB,CAAK,EACpC,cACA,CACA,KAAK,YAAY,IAAI,EACrB,KAAK,aACH,KAAK,YAAY,KAAK,YAAY,OAAS,IAAM,OAUvD,GANA,EAAS,GAAK,KACd,EAAS,KAAO,CAAC,EACjB,EAAS,OAAS,GAClB,EAAS,UAAY,EAGjB,CAAC,EACH,EAAS,EAGX,OAAO,EAQF,aAAgB,CAAC,EAAwB,EAAgB,CAC9D,KAAK,YAAY,KAAK,CAAM,EAC5B,KAAK,aAAe,EACpB,GAAI,CACF,OAAO,EAAG,SACV,CACA,KAAK,YAAY,IAAI,EACrB,KAAK,aAAe,KAAK,YAAY,KAAK,YAAY,OAAS,IAAM,MAIlE,QAAW,CAAC,EAAiC,CAClD,IAAI,EAAQ,GACR,EACE,EAAiB,CAAC,EAClB,EAAqB,IAAY,CACrC,KAAK,MAAM,EAAgB,OAAO,GAG9B,EAAS,KAAK,OAClB,IAAM,CACJ,EAAQ,EAAO,EACf,EAAQ,IAEV,CACE,KAAM,GACN,UAAW,IAAM,CACf,GAAI,CAAC,EACH,EAAQ,GACR,KAAK,QAAQ,EAAgB,OAAO,EAG1C,CACF,EAEA,MAAO,IACD,MAAK,EAAM,CACb,GAAI,EACF,EAAO,EAGT,OADA,EAAmB,EACZ,EAEX,EAGM,OAAO,CAAC,EAA8B,CAE5C,EAAO,KAAK,QAAQ,CAAC,IAAQ,CAC3B,EAAI,OAAO,CAAM,EAClB,EACD,EAAO,KAAK,OAAS,EAGf,KAAK,CAAC,EAAgB,EAA4B,CACxD,GAAI,CAAC,KAAK,cAAgB,CAAC,KAAK,aAAa,OAAQ,OAErD,IAAI,EAAU,KAAK,UAAU,IAAI,CAAM,EACvC,GAAI,CAAC,EACH,EAAU,IAAI,IACd,KAAK,UAAU,IAAI,EAAQ,CAAO,EAGpC,IAAI,EAAM,EAAQ,IAAI,CAAG,EACzB,GAAI,CAAC,EACH,EAAM,IAAI,IACV,EAAQ,IAAI,EAAK,CAAG,EAGtB,GAAI,CAAC,EAAI,IAAI,KAAK,YAAY,EAC5B,EAAI,IAAI,KAAK,YAAY,EACzB,KAAK,aAAa,KAAK,KAAK,CAAG,EAI3B,OAAO,CAAC,EAAgB,EAA4B,CAC1D,IAAM,EAAU,KAAK,UAAU,IAAI,CAAM,EACzC,GAAI,CAAC,EAAS,OAEd,IAAM,EAAM,EAAQ,IAAI,CAAG,EAC3B,GAAI,CAAC,EAAK,OAGM,IAAI,IAAI,CAAG,EACnB,QAAQ,CAAC,IAAW,CAC1B,GAAI,EAAO,OACT,GAAI,EAAO,UACT,EAAO,UAAU,CAAM,EAEvB,OAAO,EAGZ,EAII,IAAI,CAAC,EAA8B,CACxC,GAAI,EAAO,OACT,KAAK,QAAQ,CAAM,EACnB,EAAO,OAAS,GAGtB,CAGO,SAAS,EAA0B,CAAC,EAAc,CACvD,OAAO,EAAe,YAAY,EAAE,SAAS,CAAM,EAO9C,SAAS,CAAmB,CACjC,EACA,EACmB,CACnB,OAAO,EAAe,YAAY,EAAE,OAAO,EAAI,CAAO,EA0BjD,SAAS,CAAI,CAAC,EAA8B,CACjD,EAAe,YAAY,EAAE,KAAK,CAAM,EAkHnC,SAAS,EAAU,CAAC,EAAyB,CAClD,OAAO,EAAS,CAAK,GAAK,EAAgB,EAAO,CAAW,EC/nB9D,SAAS,EAAY,CAAC,EAAwB,CAC5C,IAAM,EAAW,EAAK,MAAM,GAAG,EAC/B,GACE,EAAK,SAAW,GAChB,EAAS,KACP,CAAC,IACC,EAAQ,SAAW,GACnB,IAAY,aACZ,IAAY,aACZ,IAAY,aAChB,EAEA,MAAU,MAAM,uBAAuB,IAAO,EAEhD,OAAO,EAGT,SAAS,EAAQ,CAAC,EAAqC,CACrD,OAAO,OAAO,IAAU,UAAY,IAAU,MAAQ,CAAC,MAAM,QAAQ,CAAK,EAG5E,SAAS,EAAM,CAAC,EAAe,EAAsB,CACnD,OAAO,OAAO,UAAU,eAAe,KAAK,EAAO,CAAG,EAGjD,SAAS,EAAS,CAAC,EAA+B,CACvD,OAAO,OAAO,IAAY,SAAW,EAAU,EAAQ,KAGlD,SAAS,EAAa,CAAC,EAAmB,EAAuB,CACtE,IAAI,EAAiB,EAErB,QAAW,KAAW,GAAa,CAAI,EAAG,CACxC,GAAI,CAAC,GAAS,CAAK,EACjB,MAAU,MAAM,uBAAuB,IAAO,EAEhD,GAAI,CAAC,GAAO,EAAO,CAAO,EAAG,CAC3B,GAAI,KAAW,EACb,MAAU,MAAM,uBAAuB,IAAO,EAEhD,OAEF,EAAQ,EAAM,GAGhB,OAAO,EAGF,SAAS,EAAa,CAC3B,EACA,EACA,EACM,CACN,IAAM,EAAW,GAAa,CAAI,EAC9B,EAAqB,EAEzB,QAAW,KAAW,EAAS,MAAM,EAAG,EAAE,EAAG,CAC3C,GAAI,CAAC,GAAO,EAAQ,CAAO,EAAG,CAC5B,GAAI,KAAW,EACb,MAAU,MAAM,uBAAuB,IAAO,EAEhD,EAAO,GAAW,CAAC,EACd,QAAI,CAAC,GAAS,EAAO,EAAQ,EAClC,MAAU,MAAM,uBAAuB,IAAO,EAEhD,IAAM,EAAa,EAAO,GAC1B,GAAI,CAAC,GAAS,CAAU,EACtB,MAAU,MAAM,uBAAuB,IAAO,EAEhD,EAAS,EAGX,IAAM,EAAc,EAAS,EAAS,OAAS,GAC/C,EAAO,GAAe,EAGxB,SAAS,EAAY,CAAC,EAAuB,EAAwB,CACnE,GAAI,OAAO,IAAY,UAAY,EAAQ,OACzC,OAAO,EAAQ,OAAO,CAAK,EAE7B,OAAO,IAAU,QAAa,IAAU,KAAO,GAAK,OAAO,CAAK,EAGlE,SAAS,EAAY,CAAC,EAAuB,EAAyB,CACpE,GAAI,OAAO,IAAY,UAAY,EAAQ,MACzC,OAAO,EAAQ,MAAM,CAAK,EAE5B,OAAO,EAGT,SAAS,EAAW,CAClB,EACA,EACA,EACM,CACN,GAAI,aAAmB,iBAAkB,CACvC,GAAI,EAAQ,OAAS,WAAY,CAC/B,EAAQ,QAAU,MAAM,QAAQ,CAAK,EACjC,EAAM,KAAK,CAAC,IAAS,OAAO,CAAI,IAAM,EAAQ,KAAK,EACnD,QAAQ,CAAK,EACjB,OAEF,GAAI,EAAQ,OAAS,QAAS,CAC5B,EAAQ,QAAU,IAAU,EAAQ,MACpC,OAEF,EAAQ,MAAQ,GAAa,EAAS,CAAK,EAC3C,OAGF,GAAI,aAAmB,oBAAqB,CAC1C,EAAQ,MAAQ,GAAa,EAAS,CAAK,EAC3C,OAGF,GAAI,aAAmB,kBAAmB,CACxC,GAAI,EAAQ,SAAU,CACpB,IAAM,EAAW,MAAM,QAAQ,CAAK,EAChC,IAAI,IAAI,EAAM,IAAI,MAAM,CAAC,EACzB,IAAI,IACR,QAAS,EAAQ,EAAG,EAAQ,EAAQ,QAAQ,OAAQ,GAAS,EAAG,CAC9D,IAAM,EAAS,EAAQ,QAAQ,KAAK,CAAK,EACzC,GAAI,CAAC,EACH,SAEF,EAAO,SAAW,EAAS,IAAI,EAAO,KAAK,EAE7C,OAEF,EAAQ,MAAQ,GAAa,EAAS,CAAK,GAI/C,SAAS,EAAY,CAAC,EAAsB,EAAgC,CAC1E,GAAI,aAAmB,iBAAkB,CACvC,GAAI,EAAQ,OAAS,WAAY,CAC/B,GAAI,MAAM,QAAQ,CAAY,EAAG,CAC/B,IAAM,EAAS,EAAa,OAC1B,CAAC,IAAU,OAAO,CAAK,IAAM,EAAQ,KACvC,EACA,OAAO,EAAQ,QAAU,CAAC,GAAG,EAAQ,EAAQ,KAAK,EAAI,EAExD,OAAO,EAAQ,QAEjB,GAAI,EAAQ,OAAS,QACnB,OAAO,EAAQ,QAAU,EAAQ,MAAQ,EAE3C,OAAO,EAAQ,MAEjB,GAAI,aAAmB,oBACrB,OAAO,EAAQ,MAEjB,GAAI,aAAmB,kBAAmB,CACxC,GAAI,CAAC,EAAQ,SACX,OAAO,EAAQ,MAEjB,IAAM,EAAmB,CAAC,EAC1B,QAAS,EAAQ,EAAG,EAAQ,EAAQ,gBAAgB,OAAQ,GAAS,EAAG,CACtE,IAAM,EAAS,EAAQ,gBAAgB,KAAK,CAAK,EACjD,GAAI,EACF,EAAO,KAAK,EAAO,KAAK,EAG5B,OAAO,EAET,OAGK,MAAM,EAAuB,CACjB,SAAW,IAAI,QAEzB,IAAI,CACT,EACA,EACA,EACM,CACN,GAAI,CAAC,KAAK,mBAAmB,CAAO,EAClC,OAGF,IAAM,EAAW,KAAK,SAAS,IAAI,CAAO,EAC1C,GAAI,GAAY,KAAK,YAAY,EAAU,CAAO,EAChD,OAEF,KAAK,QAAQ,CAAO,EAEpB,IAAM,EAAO,GAAU,CAAO,EACxB,EAAO,IACX,GAAY,EAAS,EAAS,GAAc,EAAO,CAAI,CAAC,EACpD,EACJ,aAAmB,qBAClB,aAAmB,kBAClB,CAAC,CAAC,WAAY,OAAO,EAAE,SAAS,EAAQ,IAAI,EAC1C,QACA,SACA,EAAW,IAAY,CAC3B,IAAM,EAAe,GAAc,EAAO,CAAI,EAC9C,GACE,EACA,EACA,GAAa,EAAS,GAAa,EAAS,CAAY,CAAC,CAC3D,GAGF,EAAQ,iBAAiB,EAAW,CAAQ,EAC5C,IAAM,EAAY,EAAO,CAAI,EAC7B,KAAK,SAAS,IAAI,EAAS,CACzB,UACA,OACA,MAAO,OAAO,IAAY,SAAW,OAAY,EAAQ,MACzD,OAAQ,OAAO,IAAY,SAAW,OAAY,EAAQ,OAC1D,YACA,WACA,OAAQ,CACV,CAAC,EAGI,OAAO,CAAC,EAA4B,CACzC,IAAM,EAAW,KAAK,SAAS,IAAI,CAAO,EAC1C,GAAI,CAAC,EACH,OAEF,EAAQ,oBAAoB,EAAS,UAAW,EAAS,QAAQ,EACjE,EAAK,EAAS,MAAM,EACpB,KAAK,SAAS,OAAO,CAAO,EAGtB,kBAAkB,CAAC,EAA+B,CACxD,OACE,aAAmB,kBACnB,aAAmB,qBACnB,aAAmB,kBAIf,WAAW,CAAC,EAAuB,EAAgC,CACzE,GAAI,OAAO,EAAO,UAAY,UAAY,OAAO,IAAY,SAC3D,OAAO,EAAO,UAAY,EAE5B,OACE,EAAO,OAAS,EAAQ,MACxB,EAAO,QAAU,EAAQ,OACzB,EAAO,SAAW,EAAQ,OAGhC,CCpQO,IAAM,GACX,iDAEI,GAAc,wBAGb,SAAS,EAAU,CAAC,EAAgC,CACzD,OAAO,OAAO,CAAK,EAAE,QACnB,GACA,CAAC,EAAQ,IAAmB,QAAQ,oBACtC,ECVK,SAAS,EAAW,CAAC,EAAsB,CAChD,MAAO,WAAW,KAAK,CAAG,GAAK,WAAW,KAAK,CAAG,EAG7C,SAAS,EAAiB,CAAC,EAAqB,CACrD,OAAO,EAAI,MAAM,CAAC,EAAE,YAAY,EAG3B,SAAS,EAAc,CAAC,EAAgC,CAC7D,IAAO,KAAc,GAAa,EAAM,MAAM,GAAG,EACjD,MAAO,CAAE,YAAW,UAAW,IAAI,IAAI,CAAS,CAAE,EAG7C,SAAS,EAAgB,CAC9B,EACA,EACe,CACf,IAAM,EAAe,CAAC,IAAuB,CAC3C,GAAI,EAAU,IAAI,MAAM,EACtB,EAAM,gBAAgB,EAGxB,GAAI,EAAU,IAAI,SAAS,EACzB,EAAM,eAAe,EAGvB,GAAI,EAAU,IAAI,MAAM,GAAK,EAAM,gBAAkB,EAAM,OACzD,OAGF,GAAI,EAAU,IAAI,MAAM,EACrB,EAAM,cAA8B,oBACnC,EAAM,KACN,CACF,EAGF,EAAQ,CAAK,GAGf,OAAO,EAGF,SAAS,EAAa,CAC3B,EACA,EACA,EACM,CACN,IAAM,EAAc,EAAS,SAAS,GAAG,EACrC,EACA,EAAS,QAAQ,SAAU,CAAC,IAAU,IAAI,EAAM,YAAY,GAAG,EAEnE,EAAM,YAAY,EAAa,GAAW,CAAK,CAAC,EClD3C,MAAM,EAAa,CACjB,aAAwC,KACxC,OAAoC,IAAI,IAE/C,WAAW,EAAG,EAIP,QAAQ,CAAC,EAAc,EAA6B,CACzD,KAAK,OAAO,IAAI,EAAM,CAAO,EAC7B,KAAK,aAAa,EAGb,WAAW,CAAC,EAAoB,CACrC,KAAK,OAAO,OAAO,CAAI,EACvB,KAAK,aAAa,EAGb,WAAW,EAAS,CAEzB,GADA,KAAK,OAAO,MAAM,EACd,KAAK,aACP,KAAK,aAAa,YAAc,GAI7B,OAAO,EAAS,CAErB,GADA,KAAK,YAAY,EACb,KAAK,aACP,KAAK,aAAa,OAAO,EACzB,KAAK,aAAe,KAIhB,kBAAkB,EAAqB,CAC7C,GAAI,CAAC,KAAK,aAAc,CACtB,IAAM,EAAU,SAAS,cAAc,OAAO,EAC9C,SAAS,KAAK,YAAY,CAAO,EACjC,KAAK,aAAe,EAEtB,OAAO,KAAK,aAGN,YAAY,CAAC,EAAqD,CACxE,OAAO,OAAO,QAAQ,CAAU,EAC7B,IAAI,EAAE,EAAK,KAEH,GADQ,EAAI,QAAQ,WAAY,KAAK,EAAE,YAAY,MACrC,GAAW,CAAK,IACtC,EACA,KAAK;AAAA,CAAI,EAGN,YAAY,EAAS,CAC3B,GAAI,KAAK,OAAO,OAAS,EAAG,CAC1B,GAAI,KAAK,aACP,KAAK,aAAa,YAAc,GAElC,OAGF,IAAM,EAAU,KAAK,mBAAmB,EACpC,EAAU,GAAgB;AAAA,EAE9B,KAAK,OAAO,QAAQ,CAAC,IAAU,CAK7B,GAHA,GAAW,GAAG,EAAM;AAAA,EAAe,KAAK,aAAa,EAAM,UAAU;AAAA;AAAA,EAGjE,EAAM,MACR,GAAW,GAAG,EAAM;AAAA,EAAqB,KAAK,aAAa,EAAM,KAAK;AAAA;AAAA,EAIxE,GAAI,EAAM,MACR,OAAO,QAAQ,EAAM,KAAK,EAAE,QAAQ,EAAE,EAAO,KAAgB,CAC3D,GAAW,UAAU;AAAA,EAAY,EAAM;AAAA,EAAe,KAAK,aAAa,CAAU;AAAA;AAAA;AAAA,EACnF,EAEJ,EAED,EAAQ,YAAc,EAE1B,CClFO,MAAM,CAAe,CAIP,MAHX,SAA8B,CAAC,EACtB,cAAgB,aAEjC,WAAW,CAAQ,EAAe,CAAf,aACjB,GAAI,CAAC,GAAS,OAAO,IAAU,SAC7B,MAAU,MAAM,8CAA8C,EAS3D,aAAa,CAAC,EAAoB,CACvC,GAAI,OAAO,IAAS,SAClB,EAAO,OAAO,CAAI,EAGpB,IAAM,EAAW,SAAS,eAAe,EAAE,EAC3C,KAAK,cAAc,UAAY,EAC/B,IAAM,EAAU,MAAM,KAAK,EAAK,SAAS,KAAK,aAAa,CAAC,EAE5D,GAAI,GAAW,EAAQ,OAAS,EAC9B,KAAK,sBAAsB,EAAU,EAAM,CAAO,EAGlD,OAAS,YAAc,EAGzB,OAAO,EAMD,qBAAqB,CAC3B,EACA,EACA,EACM,CAEN,IAAM,EAAO,IAAI,IAGX,EAAc,KAAK,iBAAiB,EAAc,EAAS,CAAI,EACrE,EAAK,YAAc,EAGnB,IAAM,EAAW,EAAO,IAAM,CAC5B,GAAI,CACF,IAAM,EAAc,KAAK,iBAAiB,EAAc,EAAS,CAAI,EACrE,GAAI,EAAK,cAAgB,EACvB,EAAK,YAAc,EAErB,MAAO,EAAO,CACd,QAAQ,MAAM,yBAA0B,CAAK,EAC7C,EAAK,YAAc,UAAU,aAAiB,MAAQ,EAAM,QAAU,mBAEzE,EAGD,KAAK,SAAS,KAAK,CACjB,OACA,eACA,OAAQ,CACV,CAAC,EAMK,gBAAgB,CACtB,EACA,EACA,EACQ,CACR,IAAI,EAAS,EAgBb,OAdA,EAAQ,QAAQ,CAAC,IAAU,CACzB,IAAM,EAAM,EAAM,IAAI,KAAK,EAC3B,GAAI,EAAK,CACP,EAAK,IAAI,CAAG,EAGZ,IAAM,EAAQ,KAAK,kBAAkB,CAAG,EAElC,EACJ,IAAU,QAAa,IAAU,KAAO,GAAK,OAAO,CAAK,EAC3D,EAAS,EAAO,QAAQ,EAAM,GAAI,CAAY,GAEjD,EAEM,EAMD,iBAAiB,CAAC,EAA0B,CAClD,GAAI,CAAC,EAAS,OAGd,IAAM,EAAO,EAAQ,MAAM,GAAG,EAC1B,EAAiB,KAAK,MAE1B,QAAW,KAAO,EAAM,CACtB,GAAI,CAAC,GAAS,OAAO,IAAU,SAC7B,OAEF,EAAS,EAAkC,GAG7C,OAAO,EAMF,aAAa,EAAS,CAE3B,KAAK,SAAS,QAAQ,CAAC,IAAY,CACjC,EAAK,EAAQ,MAAM,EACpB,EACD,KAAK,SAAW,CAAC,EAMZ,eAAe,EAAW,CAC/B,OAAO,KAAK,SAAS,OAMhB,cAAc,CAAC,EAAuB,CAE3C,OADA,KAAK,cAAc,UAAY,EACxB,KAAK,cAAc,KAAK,CAAI,EAM9B,WAAW,CAAC,EAAwB,CACzC,IAAM,EAAiB,CAAC,EACpB,EACE,EAAQ,IAAI,OAAO,KAAK,cAAe,GAAG,EAEhD,OAAQ,EAAQ,EAAM,KAAK,CAAI,KAAO,KAAM,CAC1C,IAAM,EAAM,EAAM,IAAI,KAAK,EAC3B,GAAI,EACF,EAAK,KAAK,CAAG,EAIjB,OAAO,EAMF,qBAAqB,CAAC,EAAsB,CACjD,KAAK,cAAc,UAAY,EAC/B,IAAM,EAAU,MAAM,KAAK,EAAK,SAAS,KAAK,aAAa,CAAC,EAC5D,GAAI,CAAC,GAAW,EAAQ,SAAW,EACjC,OAAO,EAGT,IAAM,EAAO,IAAI,IACjB,OAAO,KAAK,iBAAiB,EAAM,EAAS,CAAI,EAEpD,CC5IO,MAAe,CAGS,CAmBP,MAlBd,MAAsB,KACpB,GAAkB,KACX,SAAW,IAAI,GACf,eACA,gBAAkB,IAAI,IACtB,eACf,CAAC,EACc,UAAY,IAAI,IAChB,aACT,WAAsB,KACtB,gBAA4C,KAC5C,sBACwD,KAEtD,aACH,MACA,QAAU,GAEjB,WAAW,CAAW,EAAgB,CAAC,EAAa,CAA9B,aACpB,KAAK,aAAe,IAAI,GACxB,KAAK,MAAQ,GAAS,KAAK,UAAU,GAAK,CAAC,CAAC,EAC5C,KAAK,eAAiB,IAAI,EAAe,KAAK,KAAK,EACnD,KAAK,WAAW,EAEhB,KAAK,aAAe,EAClB,IAAM,CAGJ,GAAI,KAAK,QACP,GAAI,CACF,KAAK,OAAO,EACZ,MAAO,EAAO,CACd,GAAI,CAAC,KAAK,cAAc,CAAK,EAC3B,MAAM,IAKd,CACE,aAAc,GAEd,UAAW,CAAC,IAAiB,CAC3B,GAAkB,QAAQ,CAAY,EAE1C,CACF,EAOK,KAAK,CAAC,EAA8B,CACzC,GAAI,CAAC,GAAa,EAAE,aAAqB,aACvC,MAAU,MAAM,2BAA2B,EAG7C,GAAI,CACF,EAAU,YAAY,KAAK,YAAY,CAAC,EACxC,MAAO,EAAO,CAEd,MADA,QAAQ,MAAM,UAAW,CAAK,EACxB,GAIH,WAAW,EAAS,CACzB,GAAI,KAAK,SAAW,KAAK,GACvB,OAAO,KAAK,GAuBd,OApBA,KAAK,YAAY,EAGjB,KAAK,GAAK,EAAe,YAAY,EAAE,cACrC,KAAK,aACL,IAAM,CACJ,GAAI,CAEF,OADA,KAAK,MAAQ,KAAK,OAAO,EAClB,KAAK,SAAS,MAAM,KAAK,MAAO,KAAK,oBAAoB,CAAC,EACjE,MAAO,EAAO,CAEd,GAAI,KAAK,cAAc,CAAK,EAC1B,OAAO,SAAS,cAAc,gBAAgB,EAEhD,MAAM,GAGZ,EACA,KAAK,QAAU,GACf,KAAK,UAAU,EACR,KAAK,GAGP,MAAM,EAAS,CACpB,GAAI,CAAC,KAAK,IAAM,CAAC,KAAK,MACpB,OAGF,KAAK,aAAa,EAClB,IAAM,EAAe,KAAK,MACpB,EAAiB,KAAK,GAgB5B,GAdA,KAAK,GAAK,EAAe,YAAY,EAAE,cACrC,KAAK,aACL,IAAM,CACJ,IAAM,EAAW,KAAK,OAAO,EACvB,EAAc,KAAK,SAAS,MAChC,EACA,EACA,EACA,KAAK,oBAAoB,CAC3B,EAEA,OADA,KAAK,MAAQ,EACN,EAEX,EACI,IAAmB,KAAK,GAC1B,KAAK,wBAAwB,EAAgB,KAAK,EAAE,EAEtD,KAAK,UAAU,EACf,KAAK,cAAc,EAGd,OAAO,EAAS,CACrB,GAAI,CAAC,KAAK,QACR,OAKF,GAFA,KAAK,cAAc,EAEf,KAAK,OAAS,KAAK,GACrB,KAAK,SAAS,QAAQ,KAAK,MAAO,KAAK,GAAI,KAAK,oBAAoB,CAAC,EAevE,GAZA,KAAK,gBAAgB,MAAM,EAC3B,OAAO,KAAK,KAAK,cAAc,EAAE,QAAQ,CAAC,IAAc,CACtD,KAAK,eAAe,GAAW,MAAM,EACrC,OAAO,KAAK,eAAe,GAC5B,EACD,KAAK,UAAU,MAAM,EACrB,KAAK,gBAAkB,KACvB,KAAK,sBAAwB,KAC7B,KAAK,eAAe,cAAc,EAClC,KAAK,aAAa,QAAQ,EAC1B,EAAK,KAAK,YAAY,EAElB,KAAK,IAAI,WACX,KAAK,GAAG,WAAW,YAAY,KAAK,EAAE,EAGxC,KAAK,GAAK,KACV,KAAK,MAAQ,KACb,KAAK,QAAU,GACf,KAAK,YAAY,EAGZ,QAAQ,CAAC,EAA8B,CAM5C,GALA,KAAK,MAAQ,IACR,KAAK,SACL,CACL,EAEI,KAAK,QAEP,GAAkB,QAAQ,KAAK,YAAY,EAIxC,QAAQ,CAAC,EAA8B,CAC5C,OAAO,OAAO,KAAK,MAAO,CAAK,EAG1B,aAAa,CAAC,EAAwB,CAC3C,KAAK,WAAa,EAClB,KAAK,gBAAgB,QAAQ,CAAC,IAAU,CACtC,EAAM,gBAAgB,CAAO,EAC9B,EAGI,kBAAkB,CAAC,EAAwC,CAChE,KAAK,gBAAkB,EAGlB,kBAAkB,EAA6B,CACpD,OAAO,KAAK,gBAGP,wBAAwB,CAC7B,EACM,CACN,KAAK,sBAAwB,EAGxB,OAAU,CAAC,EAAsB,EAAgB,CACtD,KAAK,UAAU,IAAI,EAAK,CAAK,EAKxB,MAAS,CAAC,EAAsB,EAA6B,CAClE,IAAM,EAAS,KAAK,iBAAiB,CAAG,EACxC,OAAO,EAAO,MAAQ,EAAO,MAAQ,EAGhC,gBAAmB,CAAC,EAA0C,CACnE,GAAI,KAAK,UAAU,IAAI,CAAG,EACxB,MAAO,CAAE,MAAO,GAAM,MAAO,KAAK,UAAU,IAAI,CAAG,CAAmB,EAGxE,GAAI,KAAK,iBAAiB,iBACxB,OAAO,KAAK,gBAAgB,iBAAiB,CAAG,EAGlD,OAAO,KAAK,oBAAoB,CAAG,EAG9B,UAAU,EAAgB,CAC/B,OAAO,KAAK,GAGJ,WAAW,EAAS,EAEpB,SAAS,EAAS,EAElB,YAAY,EAAS,EAErB,SAAS,EAAS,EAElB,aAAa,EAAS,EAEtB,aAAa,EAAS,EAEtB,WAAW,EAAS,EAetB,aAAa,CAAC,EAAyB,CAC7C,IAAI,EAAoC,KAAK,mBAAmB,EAChE,MAAO,EAAS,CAEd,IAAM,EAAW,EACjB,GAAI,OAAO,EAAS,kBAAoB,YAEtC,GADgB,EAAS,gBAAgB,EAAO,IAAI,IACpC,GACd,MAAO,GAGX,EAAU,EAAQ,qBAAqB,GAAK,KAE9C,MAAO,GAGC,UAAU,EAAY,CAC9B,OAAO,KAAK,cAGA,OAAM,EAAG,CACrB,OAAO,KAAK,cAAc,KAAK,UAAU,GAAK,KAAK,uBAAuB,EAGlE,IAAI,CAAC,KAAsB,EAAuB,CAC1D,KAAK,eAAe,IAAY,QAAQ,CAAC,IAAa,CACpD,EAAS,GAAG,CAAI,EACjB,EAGI,EAAE,CAAC,EAAmB,EAA8C,CACzE,GAAI,CAAC,KAAK,eAAe,GACvB,KAAK,eAAe,GAAa,IAAI,IAIvC,OAFA,KAAK,eAAe,GAAW,IAAI,CAAQ,EAEpC,IAAM,KAAK,IAAI,EAAW,CAAQ,EAGpC,GAAG,CAAC,EAAmB,EAAwC,CACpE,KAAK,eAAe,IAAY,OAAO,CAAQ,EAGzC,mBAAmB,EAAyB,CAClD,MAAO,CACL,WAAY,KAAK,WACjB,eAAgB,KAAK,eACrB,SAAU,KAAK,SACf,MAAO,KAAK,aAAa,EACzB,cAAe,CAAC,IAAc,CAC5B,KAAK,gBAAgB,IAAI,CAAS,EAClC,EAAU,qBAAqB,IAAI,EACnC,EAAU,gBAAgB,KAAK,UAAU,GAE3C,gBAAiB,CAAC,IAAc,CAC9B,KAAK,gBAAgB,OAAO,CAAS,EACrC,EAAU,qBAAqB,IAAI,EAEvC,EAGM,YAAY,EAA0C,CAC5D,IAAM,EAA+C,CAAE,QAAS,CAAC,CAAE,EAanE,OAZiB,EACd,KAAK,MAA+C,QACvD,EAES,QAAQ,CAAC,IAAU,CAC1B,IAAM,EAAW,KAAK,YAAY,CAAK,EACvC,GAAI,CAAC,EAAM,GACT,EAAM,GAAY,CAAC,EAErB,EAAM,GAAU,KAAK,KAAK,mBAAmB,CAAK,CAAC,EACpD,EAEM,EAGD,WAAW,CAAC,EAA+B,CACjD,GAAI,OAAO,IAAU,SACnB,MAAO,UAGT,MAAO,SAAU,GAAS,OAAO,EAAM,OAAS,SAC5C,EAAM,KACN,UAGE,kBAAkB,CAAC,EAAuC,CAChE,GAAI,OAAO,IAAU,UAAY,EAAE,SAAU,GAC3C,OAAO,EAGT,IAAM,EAAQ,IAAK,CAAM,EAEzB,OADA,OAAO,EAAM,KACN,EAGD,aAAa,CAAC,EAAyB,CAC7C,GAAI,CAAC,GAAS,OAAO,IAAU,UAAY,EAAE,WAAY,GACvD,OAGF,OAAQ,EAA+B,OAGjC,sBAAsB,EAAY,CACxC,IAAM,EAAa,WAAqC,QACxD,OAAO,KAAK,cAAc,CAAS,EAG7B,mBAAsB,CAAC,EAA0C,CACvE,GAAI,CAAC,KAAK,YAAc,OAAO,KAAK,aAAe,SACjD,MAAO,CAAE,MAAO,GAAO,MAAO,MAAU,EAa1C,OATE,KAAK,WAOL,KAEU,mBAAmB,CAAG,GAAK,CAAE,MAAO,GAAO,MAAO,MAAU,EAE5E,CClaA,IAAI,GAAwB,KA+BrB,SAAS,EAAS,EAAkB,CACzC,OAAO,GCfF,IAAM,GAAgB,6BAOhB,GAAgC,IAAI,IAAI,CACnD,MACA,IACA,OACA,OACA,SACA,UACA,OACA,WACA,UACA,OACA,OACA,QACA,WACA,MACA,SACA,SACA,iBACA,iBACA,OACA,UACA,OACA,WACA,eACF,CAAC,EAEM,MAAM,EAEsB,CAChB,UAAY,IAAI,QAIhB,QAAU,IAAI,QACd,cAAgB,IAAI,GAE9B,OAAO,CAAC,EAAmC,CAChD,OAAO,OAAO,IAAU,UAAY,IAAU,MAAQ,GAAW,CAAK,EAGjE,KAAK,CAAC,EAAc,EAAqC,CAC9D,GAAI,EAAM,YAAY,KAAO,GAC3B,OAAO,SAAS,cAAc,IAAI,EAKpC,IAAM,EAAc,EAAM,MAAQ,YAC5B,EAAU,EACZ,SAAS,cAAc,GAAG,EAC1B,GAAS,IAAI,EAAM,GAAG,EACpB,SAAS,gBAAgB,GAAe,EAAM,GAAG,EACjD,SAAS,cAAc,EAAM,GAAG,EAEhC,EAAQ,EAAM,OAAS,CAAC,EAC9B,GAAI,EAAa,CACf,IAAQ,IAAK,EAAW,SAAU,KAAc,GAAc,EACxD,EAAM,OAAO,IAAc,SAAW,EAAY,IACxD,EAAQ,aAAa,OAAQ,CAAG,EAChC,EAAQ,iBAAiB,QAAS,CAAC,IAAU,CAC3C,IAAM,EAAS,GAAU,EACzB,GAAI,EACF,EAAM,eAAe,EAChB,EAAO,KAAK,EAAQ,aAAa,MAAM,GAAK,GAAG,EAEvD,EACD,KAAK,WAAW,EAAS,CAAC,EAAG,EAAW,CAAO,EAE/C,UAAK,WAAW,EAAS,CAAC,EAAG,EAAO,CAAO,EAM7C,OAJA,KAAK,gBAAgB,EAAS,CAAC,EAAG,KAAK,iBAAiB,CAAK,CAAC,EAC9D,KAAK,cAAc,EAAS,EAAO,CAAO,EAC1C,KAAK,gBAAgB,EAAS,OAAW,EAAM,WAAY,CAAO,EAE3D,EAGF,KAAK,CACV,EACA,EACA,EACA,EACM,CACN,GACE,EAAS,MAAQ,EAAS,KAC1B,EAAY,WAAa,KAAK,aAC9B,CACA,IAAM,EAAW,KAAK,MAAM,EAAU,CAAO,EAG7C,OAFA,EAAY,YAAY,aAAa,EAAU,CAAW,EAC1D,KAAK,QAAQ,EAAU,EAAa,CAAO,EACpC,EAIT,GAAI,EAAE,aAAuB,SAC3B,OAAO,EAGT,GAAI,EAAS,YAAY,KAAO,GAAO,CACrC,IAAM,EAAW,SAAS,cAAc,IAAI,EAG5C,OAFA,EAAY,YAAY,aAAa,EAAU,CAAW,EAC1D,KAAK,QAAQ,EAAU,EAAa,CAAO,EACpC,EAKT,GADE,EAAS,MAAQ,aAAe,EAAS,MAAQ,YAClC,CACf,IAAM,EAAW,EAAS,OAAS,CAAC,EAC9B,EAAW,EAAS,OAAS,CAAC,EAC9B,EAAS,OAAO,EAAS,MAAQ,SAAW,EAAS,IAAM,GAC3D,EAAS,OAAO,EAAS,MAAQ,SAAW,EAAS,IAAM,GACjE,GAAI,IAAW,EACb,EAAY,aAAa,OAAQ,CAAM,EAEzC,IAAM,EAAS,IAAK,CAAS,EAC7B,OAAQ,EAA6B,IACrC,OAAQ,EAAkC,SAC1C,KAAK,WAAW,EAAa,EAAU,EAAQ,CAAO,EAEtD,UAAK,WACH,EACA,EAAS,OAAS,CAAC,EACnB,EAAS,OAAS,CAAC,EACnB,CACF,EAeF,OAbA,KAAK,gBACH,EACA,KAAK,iBAAiB,CAAQ,EAC9B,KAAK,iBAAiB,CAAQ,CAChC,EACA,KAAK,eAAe,EAAa,EAAU,EAAU,CAAO,EAC5D,KAAK,gBACH,EACA,EAAS,WACT,EAAS,WACT,CACF,EAEO,EAGF,OAAO,CACZ,EACA,EACA,EACM,CACN,GAAI,EAAE,aAAuB,SAC3B,OAGF,KAAK,QAAQ,IAAI,CAAW,GAAG,QAAQ,CAAC,IAAS,EAAK,CAAI,CAAC,EAC3D,KAAK,QAAQ,OAAO,CAAW,EAE/B,KAAK,UAAU,IAAI,CAAW,GAAG,QAAQ,EAAG,YAAW,cAAe,CACpE,EAAY,oBAAoB,EAAW,CAAQ,EACpD,EACD,KAAK,UAAU,OAAO,CAAW,EACjC,KAAK,cAAc,QAAQ,CAA0B,EACrD,KAAK,gBAAgB,EAAa,EAAO,CAAO,EAGxC,aAAa,CACrB,EACA,EACA,EACM,CACN,EAAW,EAAM,QAAQ,EAAE,QAAQ,CAAC,IAAU,CAC5C,EAAQ,YAAY,EAAQ,SAAS,MAAM,EAAO,CAAO,CAAC,EAC3D,EAGO,cAAc,CACtB,EACA,EACA,EACA,EACM,CACN,KAAK,uBACH,EACA,EAAW,EAAS,QAAQ,EAC5B,EAAW,EAAS,QAAQ,EAC5B,CACF,EAGQ,eAAe,CACvB,EACA,EACA,EACM,CACN,EAAW,EAAM,QAAQ,EAAE,QAAQ,CAAC,EAAO,IAAU,CACnD,IAAM,EAAY,EAAQ,WAAW,GACrC,GAAI,EACF,EAAQ,SAAS,QAAQ,EAAO,EAAW,CAAO,EAErD,EAGK,UAAU,CAChB,EACA,EACA,EACA,EACM,CACN,OAAO,KAAK,CAAQ,EAAE,QAAQ,CAAC,IAAQ,CACrC,GAAI,GAAY,CAAG,GAAK,KAAO,EAC7B,OAGF,GAAI,IAAQ,aAAe,IAAQ,QACjC,EAAQ,gBAAgB,OAAO,EAC1B,QAAI,IAAQ,QACjB,EAAQ,gBAAgB,OAAO,EAC1B,QACL,IAAQ,SACR,OAAO,IAAY,UACnB,IAAY,MACZ,UAAW,EAEV,EAA4C,MAAQ,GAErD,OAAQ,gBAAgB,GAAc,CAAG,CAAC,EAE7C,EAED,OAAO,QAAQ,CAAQ,EAAE,QAAQ,EAAE,EAAK,KAAW,CACjD,GAAI,GAAY,CAAG,EACjB,OAIF,GAAI,EAAS,KAAS,EACpB,OAGF,GAAI,IAAQ,aAAe,IAAQ,QAAS,CAG1C,GAAI,EAAQ,eAAiB,GAC3B,EAAQ,aAAa,QAAS,OAAO,GAAS,EAAE,CAAC,EAEjD,KAAC,EAAwB,UAAY,OAAO,GAAS,EAAE,EAEzD,OAMF,GACE,IAAQ,SACR,OAAO,IAAY,UACnB,IAAY,MACZ,UAAW,EACX,CACC,EAA4C,MAAQ,OACnD,GAAS,EACX,EACA,OAGF,GAAI,IAAQ,SAAW,OAAO,IAAU,UAAY,IAAU,KAAM,CAClE,EAAQ,gBAAgB,OAAO,EAC/B,IAAM,EAAS,EAAwB,MACvC,OAAO,QAAQ,CAAK,EAAE,QAAQ,EAAE,EAAQ,KAAc,CACpD,GAAc,EAAO,EAAQ,CAAQ,EACtC,EACD,OAGF,GAAI,IAAU,IAAS,IAAU,QAAa,IAAU,KAAM,CAC5D,EAAQ,gBAAgB,GAAc,CAAG,CAAC,EAC1C,OAGF,GAAI,IAAU,GAAM,CAClB,EAAQ,aAAa,GAAc,CAAG,EAAG,EAAE,EAC3C,OAGF,GACE,OAAO,IAAU,UACjB,EAAQ,eAAe,eAAe,CAAK,EAC3C,CACA,KAAK,uBAAuB,EAAS,EAAK,EAAO,CAAO,EACxD,OAGF,EAAQ,aAAa,GAAc,CAAG,EAAG,OAAO,CAAK,CAAC,EACvD,EAGK,eAAe,CACrB,EACA,EACA,EACA,EACM,CACN,GAAI,GAAiB,SAAU,EAC5B,EAAwB,MAAM,QAAU,EAAc,KAAO,GAAK,OAC9D,QAAI,GAAiB,SAAU,EACnC,EAAwB,MAAM,QAAU,GAG3C,GAAI,CAAC,GAAe,MAAO,CACzB,KAAK,cAAc,QAAQ,CAAsB,EACjD,OAGF,KAAK,cAAc,KACjB,EACA,EAAc,MACd,EAAQ,eAAe,KACzB,EAGM,sBAAsB,CAC5B,EACA,EACA,EACA,EACM,CAIN,GAHA,KAAK,sBAAsB,CAAW,EACtC,KAAK,sBAAsB,CAAW,EAElC,KAAK,qBAAqB,EAAa,CAAW,EAAG,CACvD,KAAK,oBAAoB,EAAS,EAAa,EAAa,CAAO,EACnE,OAGF,IAAM,EAAe,KAAK,IAAI,EAAY,OAAQ,EAAY,MAAM,EAEpE,QAAS,EAAQ,EAAG,EAAQ,EAAc,GAAS,EAAG,CACpD,IAAM,EAAY,EAAQ,WAAW,GACrC,GAAI,CAAC,EAAW,CACd,EAAQ,YACN,EAAQ,SAAS,MAAM,EAAY,GAAQ,CAAO,CACpD,EACA,SAEF,EAAQ,SAAS,MACf,EAAY,GACZ,EAAY,GACZ,EACA,CACF,EAGF,QAAS,EAAQ,EAAc,EAAQ,EAAY,OAAQ,GAAS,EAClE,EAAQ,YAAY,EAAQ,SAAS,MAAM,EAAY,GAAQ,CAAO,CAAC,EAGzE,QACM,EAAQ,EAAY,OAAS,EACjC,GAAS,EAAY,OACrB,GAAS,EACT,CACA,IAAM,EAAY,EAAQ,WAAW,GACrC,GAAI,GAEF,GADA,EAAQ,SAAS,QAAQ,EAAY,GAAQ,EAAW,CAAO,EAC3D,EAAU,aAAe,EAC3B,EAAQ,YAAY,CAAS,IAM7B,mBAAmB,CACzB,EACA,EACA,EACA,EACM,CACN,IAAM,EAAa,EAAY,IAAI,CAAC,EAAO,KAAW,CACpD,QACA,KAAM,EAAQ,WAAW,GACzB,OACF,EAAE,EACI,EAAkB,IAAI,IAItB,EAAiB,IAAI,IAE3B,EAAW,QAAQ,CAAC,IAAU,CAC5B,IAAM,EAAM,KAAK,YAAY,EAAM,KAAK,EACxC,GAAI,IAAQ,QAAa,EAAM,KAC7B,EAAgB,IAAI,EAAK,CACvB,MAAO,EAAM,MACb,KAAM,EAAM,KACZ,MAAO,EAAM,KACf,CAAC,EAEJ,EAED,EAAY,QAAQ,CAAC,EAAU,IAAa,CAC1C,IAAM,EAAM,KAAK,YAAY,CAAQ,EAC/B,EAAW,IAAQ,OAAY,OAAY,EAAgB,IAAI,CAAG,EACpE,EAEJ,GAAI,EACF,EAAW,EAAQ,SAAS,MAC1B,EAAS,MACT,EACA,EAAS,KACT,CACF,EACA,EAAe,IAAI,EAAS,KAAK,EAEjC,OAAW,EAAQ,SAAS,MAAM,EAAU,CAAO,EAGrD,IAAM,EAAgB,EAAQ,WAAW,IAAa,KACtD,GAAI,IAAa,EACf,EAAQ,aAAa,EAAU,CAAa,EAE/C,EAED,EAAW,QAAQ,CAAC,IAAU,CAC5B,GAAI,CAAC,EAAM,MAAQ,EAAe,IAAI,EAAM,KAAK,EAC/C,OAIF,GADA,EAAQ,SAAS,QAAQ,EAAM,MAAO,EAAM,KAAM,CAAO,EACrD,EAAM,KAAK,aAAe,EAC5B,EAAQ,YAAY,EAAM,IAAI,EAEjC,EAGK,oBAAoB,CAC1B,EACA,EACS,CACT,MAAO,CAAC,GAAG,EAAa,GAAG,CAAW,EAAE,MACtC,CAAC,IAAU,KAAK,YAAY,CAAK,IAAM,MACzC,EAGM,qBAAqB,CAAC,EAAuC,CACnE,IAAM,EAAO,IAAI,IAEjB,EAAS,QAAQ,CAAC,IAAU,CAC1B,IAAM,EAAM,KAAK,YAAY,CAAK,EAClC,GAAI,IAAQ,OACV,OAGF,GAAI,EAAK,IAAI,CAAG,EACd,MAAU,MAAM,kBAAkB,IAAM,EAG1C,EAAK,IAAI,CAAG,EACb,EAGK,WAAW,CAAC,EAAoD,CACtE,GAAI,OAAO,IAAU,SACnB,OAGF,OAAO,EAAM,IAGP,gBAAgB,CAAC,EAAiC,CACxD,IAAM,EAA4B,CAAC,EAQnC,OANA,OAAO,QAAQ,EAAM,OAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAK,KAAW,CAC1D,GAAI,GAAY,CAAG,GAAK,OAAO,IAAU,WACvC,EAAU,GAAkB,CAAG,GAAK,EAEvC,EAEM,IACF,KACC,EAAM,WAAa,CAAC,CAC1B,EAGM,eAAe,CACrB,EACA,EACA,EACM,CACN,IAAM,EAAQ,KAAK,UAAU,IAAI,CAAO,GAAK,IAAI,IAC3C,EAAU,IAAI,IAAI,OAAO,KAAK,CAAY,CAAC,EAC3C,EAAU,IAAI,IAAI,OAAO,KAAK,CAAY,CAAC,EAEjD,EAAQ,QAAQ,CAAC,IAAU,CACzB,GAAI,CAAC,EAAQ,IAAI,CAAK,GAAK,EAAa,KAAW,EAAa,GAAQ,CACtE,IAAM,EAAS,EAAM,IAAI,CAAK,EAC9B,GAAI,EACF,EAAQ,oBAAoB,EAAO,UAAW,EAAO,QAAQ,EAC7D,EAAM,OAAO,CAAK,GAGvB,EAED,EAAQ,QAAQ,CAAC,IAAU,CACzB,GAAI,CAAC,EAAQ,IAAI,CAAK,GAAK,EAAa,KAAW,EAAa,GAAQ,CACtE,IAAQ,YAAW,aAAc,GAAe,CAAK,EAG/C,EACJ,OAAO,EAAQ,UAAY,UAC3B,EAAQ,QAAQ,YAAY,IAAM,WAC9B,EAAW,IAAc,WAAa,CAAC,EAAa,UAAY,EAChE,EAAW,GACf,CAAC,IAAuB,CACtB,GAAI,IAAa,WAEf,GADa,EAA8B,MAC/B,QACV,OAGJ,EAAa,GAAO,CAAW,GAEjC,CACF,EACA,EAAQ,iBAAiB,EAAU,CAAQ,EAC3C,EAAM,IAAI,EAAO,CAAE,UAAW,EAAU,UAAS,CAAC,GAErD,EAED,KAAK,UAAU,IAAI,EAAS,CAAK,EAG3B,sBAAsB,CAC5B,EACA,EACA,EACA,EACM,CACN,IAAM,EAAY,EAAO,IAAM,CAC7B,EAAQ,aACN,EACA,EAAQ,eAAe,sBAAsB,CAAS,CACxD,EACD,EAED,KAAK,YAAY,EAAS,CAAS,EAG7B,WAAW,CAAC,EAAkB,EAAiC,CACrE,IAAM,EAAU,KAAK,QAAQ,IAAI,CAAO,GAAK,IAAI,IACjD,EAAQ,IAAI,CAAS,EACrB,KAAK,QAAQ,IAAI,EAAS,CAAO,EAErC,CAGA,SAAS,EAAa,CAAC,EAAqB,CAC1C,GAAI,EAAI,WAAW,MAAM,GAAK,EAAI,OAAS,EACzC,MAAO,OAAO,EACX,MAAM,CAAC,EACP,QAAQ,SAAU,CAAC,IAAU,IAAI,EAAM,YAAY,GAAG,IAG3D,GAAI,IAAQ,YAAc,IAAQ,WAAa,IAAQ,UACrD,OAAO,EAAI,YAAY,EAEzB,OAAO,ECrjBF,MAAM,EAAgB,CACV,WAEjB,WAAW,EAAG,CACZ,KAAK,WAAa,CAChB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,EACN,EAGK,KAAK,CAAC,EAAmB,EAAqC,CACnE,OAAO,KAAK,aAAa,CAAK,EAAE,MAAM,EAAgB,CAAO,EAGxD,KAAK,CACV,EACA,EACA,EACA,EACM,CACN,IAAM,EAAc,KAAK,aAAa,CAAQ,EACxC,EAAc,KAAK,aAAa,CAAQ,EAE9C,GAAI,IAAgB,EAAa,CAC/B,IAAM,EAAW,EAAY,MAAM,EAAmB,CAAO,EAG7D,OAFA,EAAY,YAAY,aAAa,EAAU,CAAW,EAC1D,EAAY,QAAQ,EAAmB,EAAa,CAAO,EACpD,EAGT,OAAO,EAAY,MACjB,EACA,EACA,EACA,CACF,EAGK,OAAO,CACZ,EACA,EACA,EACM,CACN,KAAK,aAAa,CAAK,EAAE,QAAQ,EAAgB,EAAa,CAAO,EAG/D,YAAY,CAAC,EAAmC,CACtD,IAAM,EAAW,KAAK,WAAW,KAAK,CAAC,IAAS,EAAK,QAAQ,CAAK,CAAC,EACnE,GAAI,CAAC,EACH,MAAU,MAAM,oCAAoC,EAEtD,OAAO,EAEX,CAEO,MAAM,EAAqD,CACzD,OAAO,CAAC,EAAoC,CACjD,OAAO,OAAO,IAAU,SAGnB,KAAK,CAAC,EAAe,EAAqC,CAC/D,OAAO,EAAQ,eAAe,cAAc,CAAK,EAG5C,KAAK,CACV,EACA,EACA,EACA,EACM,CACN,GAAI,IAAa,EACf,OAAO,EAGT,IAAM,EAAW,KAAK,MAAM,EAAU,CAAO,EAE7C,OADA,EAAY,YAAY,aAAa,EAAU,CAAW,EACnD,EAGF,OAAO,EAAS,EACzB,CAEO,MAAM,EAAiE,CAC3D,UAAY,IAAI,QAChB,cAAgB,IAAI,IACpB,qBAAuB,IAAI,QAKrC,OAAO,CAAC,EAA2C,CACxD,OACE,OAAO,IAAU,UAAY,IAAU,MAAQ,GAAgB,CAAK,EAIjE,KAAK,CAAC,EAAsB,EAAqC,CACtE,GAAI,EAAM,YAAY,KAAO,GAC3B,OAAO,SAAS,cAAc,IAAI,EAMpC,IAAM,EAAW,IAHM,EAAM,UAGO,KAAK,YAAY,CAAK,CAAC,EAE3D,GAAI,EAAQ,YAAc,EAAS,cACjC,EAAS,cAAc,EAAQ,UAAU,EAG3C,KAAK,aAAa,EAAU,EAAM,UAAY,CAAC,CAAC,EAEhD,EAAQ,cAAc,CAAQ,EAE9B,IAAM,EAAO,EAAS,YAAY,EAMlC,OALA,KAAK,kBAAkB,EAAU,CAAI,EACrC,EAAS,2BAA2B,CAAC,EAAc,IAAa,CAC9D,KAAK,kBAAkB,EAAU,CAAY,EAC7C,KAAK,kBAAkB,EAAU,CAAQ,EAC1C,EACM,EAGF,KAAK,CACV,EACA,EACA,EACA,EACM,CACN,GAAI,EAAY,WAAa,KAAK,aAAc,CAC9C,IAAM,EAAW,KAAK,MAAM,EAAU,CAAO,EAE7C,OADA,EAAY,YAAY,aAAa,EAAU,CAAW,EACnD,EAGT,GAAI,EAAS,YAAY,KAAO,GAAO,CACrC,IAAM,EAAW,SAAS,cAAc,IAAI,EAG5C,OAFA,EAAY,YAAY,aAAa,EAAU,CAAW,EAC1D,KAAK,QAAQ,EAAU,EAAa,CAAO,EACpC,EAGT,IAAM,EAAW,KAAK,UAAU,IAAI,CAAW,EAE/C,GAAI,GAAY,EAAS,YAAc,EAAS,UAAW,CACzD,KAAK,aAAa,EAAU,EAAS,UAAY,CAAC,CAAC,EACnD,EAAS,SAAS,KAAK,YAAY,CAAQ,CAAC,EAC5C,IAAM,EAAW,EAAS,WAAW,GAAK,EAE1C,OADA,KAAK,kBAAkB,EAAU,CAAQ,EAClC,EAGT,IAAM,EAAW,KAAK,MAAM,EAAU,CAAO,EAG7C,OAFA,EAAY,YAAY,aAAa,EAAU,CAAW,EAC1D,KAAK,QAAQ,EAAU,EAAa,CAAO,EACpC,EAGF,OAAO,CACZ,EACA,EACA,EACM,CACN,IAAM,EAAW,KAAK,UAAU,IAAI,CAAW,EAC/C,GAAI,EACF,KAAK,cAAc,CAAQ,EAC3B,EAAS,QAAQ,EACjB,KAAK,mBAAmB,CAAQ,EAChC,EAAQ,gBAAgB,CAAQ,EAI5B,WAAW,CAAC,EAAsC,CACxD,MAAO,IACD,EAAM,OAAS,CAAC,EACpB,SAAU,EAAW,EAAM,QAAQ,CACrC,EAGM,YAAY,CAClB,EACA,EACM,CACN,IAAM,EAAU,KAAK,qBAAqB,IAAI,CAAQ,GAAK,IAAI,IAE/D,EAAQ,QAAQ,EAAG,SAAU,EAAiB,eAAe,IAAc,CACzE,IAAM,EAAW,EAAS,GAC1B,GAAI,CAAC,GAAY,IAAa,EAC5B,EAAY,EACZ,EAAQ,OAAO,CAAS,EAE3B,EAED,OAAO,QAAQ,CAAQ,EAAE,QAAQ,EAAE,EAAW,KAAc,CAC1D,GAAI,EAAQ,IAAI,CAAS,GAAG,WAAa,EACvC,OAGF,EAAQ,IAAI,EAAW,CACrB,WACA,YAAa,EAAS,GAAG,EAAW,CAAQ,CAC9C,CAAC,EACF,EAED,KAAK,qBAAqB,IAAI,EAAU,CAAO,EAGzC,aAAa,CAAC,EAAmC,CACvD,KAAK,qBAAqB,IAAI,CAAQ,GAAG,QAAQ,EAAG,iBAAkB,CACpE,EAAY,EACb,EACD,KAAK,qBAAqB,OAAO,CAAQ,EAGnC,iBAAiB,CAAC,EAA6B,EAAkB,CACvE,KAAK,UAAU,IAAI,EAAM,CAAQ,EACjC,IAAM,EAAQ,KAAK,cAAc,IAAI,CAAQ,GAAK,IAAI,IACtD,EAAM,IAAI,CAAI,EACd,KAAK,cAAc,IAAI,EAAU,CAAK,EAGhC,kBAAkB,CAAC,EAAmC,CAC5D,KAAK,cAAc,IAAI,CAAQ,GAAG,QAAQ,CAAC,IAAS,CAClD,KAAK,UAAU,OAAO,CAAI,EAC3B,EACD,KAAK,cAAc,OAAO,CAAQ,EAEtC,CAEO,MAAM,EAA2D,CACrD,iBAAmB,IAAI,QAKjC,OAAO,CAAC,EAA0C,CACvD,OAAO,OAAO,IAAU,UAAY,IAAU,MAAQ,GAAe,CAAK,EAGrE,KAAK,CAAC,EAAqB,EAAqC,CACrE,GAAI,EAAM,YAAY,KAAO,GAC3B,OAAO,SAAS,cAAc,IAAI,EAGpC,IAAM,EAAgB,SAAS,cAAc,KAAK,EAOlD,OANA,EAAc,aAAa,YAAa,EAAM,MAAM,IAAI,EACxD,KAAK,kBACH,EACA,KAAK,gBAAgB,EAAO,CAAO,EACnC,CACF,EACO,EAGF,KAAK,CACV,EACA,EACA,EACA,EACM,CACN,GAAI,EAAY,WAAa,KAAK,aAAc,CAC9C,IAAM,EAAW,KAAK,MAAM,EAAU,CAAO,EAE7C,OADA,EAAY,YAAY,aAAa,EAAU,CAAW,EACnD,EAGT,GAAI,EAAS,YAAY,KAAO,GAAO,CACrC,IAAM,EAAW,SAAS,cAAc,IAAI,EAG5C,OAFA,EAAY,YAAY,aAAa,EAAU,CAAW,EAC1D,KAAK,QAAQ,EAAU,EAAa,CAAO,EACpC,EAGT,GAAI,aAAuB,YACzB,EAAY,aAAa,YAAa,EAAS,MAAM,IAAI,EACzD,KAAK,oBAAoB,EAAa,EAAU,EAAU,CAAO,EAEnE,OAAO,EAGF,OAAO,CACZ,EACA,EACA,EACM,CACN,GAAI,EAAE,aAAuB,aAC3B,OAGF,KAAK,oBAAoB,EAAa,CAAO,EAC7C,KAAK,iBAAiB,OAAO,CAAW,EAGlC,eAAe,CACrB,EACA,EACuB,CACvB,OAAO,EAAQ,MAAM,EAAM,MAAM,OAAS,EAAW,EAAM,QAAQ,EAG7D,mBAAmB,CACzB,EACA,EACA,EACA,EACM,CACN,IAAM,EAAc,KAAK,iBAAiB,IAAI,CAAO,GAAK,CAAC,EACrD,EAAc,KAAK,gBAAgB,EAAU,CAAO,EACpD,EAAe,KAAK,IAAI,EAAY,OAAQ,EAAY,MAAM,EAIpE,QAAS,EAAQ,EAAG,EAAQ,EAAc,GAAS,EAAG,CACpD,IAAM,EAAY,EAAQ,WAAW,GACrC,GAAI,CAAC,EAAW,CACd,EAAQ,YACN,EAAQ,SAAS,MAAM,EAAY,GAAQ,CAAO,CACpD,EACA,SAEF,EAAQ,SAAS,MACf,EAAY,GACZ,EAAY,GACZ,EACA,CACF,EAGF,QAAS,EAAQ,EAAc,EAAQ,EAAY,OAAQ,GAAS,EAClE,EAAQ,YAAY,EAAQ,SAAS,MAAM,EAAY,GAAQ,CAAO,CAAC,EAGzE,QACM,EAAQ,EAAY,OAAS,EACjC,GAAS,EAAY,OACrB,GAAS,EACT,CACA,IAAM,EAAY,EAAQ,WAAW,GACrC,GAAI,GAEF,GADA,EAAQ,SAAS,QAAQ,EAAY,GAAQ,EAAW,CAAO,EAC3D,EAAU,aAAe,EAC3B,EAAQ,YAAY,CAAS,GAKnC,KAAK,iBAAiB,IAAI,EAAS,CAAW,EAGxC,iBAAiB,CACvB,EACA,EACA,EACM,CACN,EAAS,QAAQ,CAAC,IAAU,CAC1B,EAAQ,YAAY,EAAQ,SAAS,MAAM,EAAO,CAAO,CAAC,EAC3D,EACD,KAAK,iBAAiB,IAAI,EAAS,CAAQ,EAGrC,mBAAmB,CACzB,EACA,EACM,EACW,KAAK,iBAAiB,IAAI,CAAO,GAAK,CAAC,GAC/C,QAAQ,CAAC,EAAO,IAAU,CACjC,IAAM,EAAY,EAAQ,WAAW,GACrC,GAAI,EACF,EAAQ,SAAS,QAAQ,EAAO,EAAW,CAAO,EAErD,EAEL,CC7WO,MAAM,UAAqB,KAAM,CAC7B,KACA,OACA,SACA,MAEF,WAAW,CAAC,EAA8B,CAC/C,MAAM,EAAQ,OAAO,EACrB,KAAK,KAAO,eACZ,KAAK,KAAO,EAAQ,KACpB,KAAK,OAAS,EAAQ,OACtB,KAAK,SAAW,EAAQ,SACxB,KAAK,MAAQ,EAAQ,MAEzB,CC1CA,IAAM,GAAoC,IAAI,IAAI,CAChD,MACA,OACA,MACA,SACA,QACA,OACA,SACF,CAAC,EAGM,SAAS,EAAe,CAAC,EAAwC,CACtE,GAAI,IAAW,OACb,MAAO,MAET,IAAM,EAAa,EAAO,YAAY,EACtC,GAAI,CAAC,GAAa,IAAI,CAAU,EAC9B,MAAU,MAAM,4BAA4B,GAAQ,EAEtD,OAAO,EAGT,IAAM,GAAkB,0BAGjB,SAAS,EAAa,CAAC,EAAsB,CAClD,OAAO,GAAgB,KAAK,CAAG,EAI1B,SAAS,EAAW,CAAC,EAA6B,EAAqB,CAC5E,GAAI,CAAC,GAAW,GAAc,CAAG,EAC/B,OAAO,EAET,MAAO,GAAG,EAAQ,QAAQ,OAAQ,EAAE,KAAK,EAAI,QAAQ,OAAQ,EAAE,IAGjE,SAAS,EAAgB,CAAC,EAAwB,CAChD,GAAI,aAAiB,KACnB,OAAO,EAAM,YAAY,EAE3B,GAAI,OAAO,IAAU,SACnB,OAAO,KAAK,UAAU,CAAK,EAE7B,OAAO,OAAO,CAAK,EAOd,SAAS,EAAe,CAC7B,EACQ,CACR,GAAI,CAAC,EACH,MAAO,GAET,IAAM,EAAkB,CAAC,EAoBzB,OAnBA,OAAO,KAAK,CAAM,EAAE,QAAQ,CAAC,IAAQ,CACnC,IAAM,EAAQ,EAAO,GACrB,GAAI,IAAU,QAAa,IAAU,KACnC,OAEF,IAAM,EAAa,mBAAmB,CAAG,EACzC,GAAI,MAAM,QAAQ,CAAK,EAAG,CACxB,EAAM,QAAQ,CAAC,IAAS,CACtB,GAAI,IAAS,QAAa,IAAS,KACjC,OAEF,EAAM,KACJ,GAAG,KAAc,mBAAmB,GAAiB,CAAI,CAAC,GAC5D,EACD,EACD,OAEF,EAAM,KAAK,GAAG,KAAc,mBAAmB,GAAiB,CAAK,CAAC,GAAG,EAC1E,EACM,EAAM,KAAK,GAAG,EAIhB,SAAS,EAAQ,CACtB,EACA,EACA,EACQ,CACR,IAAM,EAAO,GAAY,EAAS,CAAG,EAC/B,EAAQ,GAAgB,CAAM,EACpC,GAAI,CAAC,EACH,OAAO,EAET,IAAM,EAAY,EAAK,SAAS,GAAG,EAAI,IAAM,IAC7C,MAAO,GAAG,IAAO,IAAY,IAG/B,SAAS,EAAoB,CAAC,EAAwC,CACpE,GAAI,IAAU,QAAa,IAAU,KACnC,OAEF,OAAO,OAAO,CAAK,EAOd,SAAS,CAAY,IACvB,EACqB,CACxB,IAAM,EAAiC,CAAC,EAClC,EAAa,IAAI,IAqBvB,OAnBA,EAAQ,QAAQ,CAAC,IAAW,CAC1B,GAAI,CAAC,EACH,OAEF,OAAO,KAAK,CAAM,EAAE,QAAQ,CAAC,IAAQ,CACnC,IAAM,EAAQ,GAAqB,EAAO,EAAI,EAC9C,GAAI,IAAU,OACZ,OAEF,IAAM,EAAQ,EAAI,YAAY,EACxB,EAAW,EAAW,IAAI,CAAK,EACrC,GAAI,IAAa,QAAa,IAAa,EACzC,OAAO,EAAO,GAEhB,EAAW,IAAI,EAAO,CAAG,EACzB,EAAO,GAAO,EACf,EACF,EAEM,EAGT,SAAS,EAAS,CAAC,EAAiC,EAAuB,CACzE,OAAO,OAAO,KAAK,CAAO,EAAE,KAC1B,CAAC,IAAQ,EAAI,YAAY,IAAM,EAAK,YAAY,CAClD,EASK,SAAS,EAAa,CAC3B,EACA,EACA,EACsB,CACtB,GAAI,IAAW,OAAS,IAAW,OACjC,OAEF,GAAI,IAAS,QAAa,IAAS,KACjC,OAEF,GAAI,OAAO,IAAS,SAClB,OAAO,EAET,GAAI,OAAO,SAAa,KAAe,aAAgB,SACrD,OAAO,EAET,GAAI,OAAO,KAAS,KAAe,aAAgB,KACjD,OAAO,EAET,GAAI,aAAgB,aAAe,YAAY,OAAO,CAAI,EACxD,OAAO,EAET,GAAI,CAAC,GAAU,EAAS,cAAc,EACpC,EAAQ,gBAAkB,mBAE5B,OAAO,KAAK,UAAU,CAAI,EClKrB,MAAM,EAAuC,CAClC,SAAW,WAEd,QAAU,CACrB,EAC6B,CAC7B,IAAM,EAAS,GAAgB,EAAO,MAAM,EACtC,EAAM,GAAS,EAAO,QAAS,EAAO,IAAK,EAAO,MAAM,EACxD,EAAU,EAAa,EAAO,OAAO,EACrC,EAAO,GAAc,EAAO,KAAM,EAAS,CAAM,EACjD,EAAa,IAAI,gBACnB,EAAW,GACX,EAAkB,GAClB,EAEJ,GAAI,EAAO,OACT,GAAI,EAAO,OAAO,QAChB,EAAkB,GAClB,EAAW,MAAM,EAEjB,OAAO,OAAO,iBACZ,QACA,IAAM,CACJ,EAAkB,GAClB,EAAW,MAAM,GAEnB,CAAE,KAAM,EAAK,CACf,EAIJ,GAAI,OAAO,EAAO,UAAY,UAAY,EAAO,QAAU,EACzD,EAAQ,WAAW,IAAM,CACvB,EAAW,GACX,EAAW,MAAM,GAChB,EAAO,OAAO,EAGnB,IAAM,EACJ,EAAO,cACN,EAAO,kBAAoB,GAAO,UAAY,eAEjD,GAAI,CACF,IAAM,EAAW,MAAM,MAAM,EAAK,CAChC,SACA,UACA,OACA,OAAQ,EAAW,OACnB,aACF,CAAC,EAEK,EAA0C,CAAC,EAMjD,OALA,EAAS,QAAQ,QAAQ,CAAC,EAAO,IAAQ,CACvC,EAAgB,GAAO,EACxB,EAGM,CACL,KAFW,MAAM,GAAe,EAAU,CAAM,EAGhD,WAAY,EAAS,OACrB,WAAY,EAAS,WACrB,QAAS,EACT,QACF,EACA,MAAO,EAAO,CACd,GAAI,EACF,MAAM,IAAI,EAAa,CACrB,KAAM,UACN,QAAS,yBAAyB,OAAO,EAAO,OAAO,MACvD,SACA,MAAO,CACT,CAAC,EAEH,GAAI,GAAmB,EAAW,OAAO,QACvC,MAAM,IAAI,EAAa,CACrB,KAAM,UACN,QAAS,kBACT,SACA,MAAO,CACT,CAAC,EAEH,MAAM,IAAI,EAAa,CACrB,KAAM,gBACN,QAAS,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,EAC9D,SACA,MAAO,CACT,CAAC,SACD,CACA,GAAI,IAAU,OACZ,aAAa,CAAK,GAI1B,CAEA,eAAe,EAAc,CAC3B,EACA,EACkB,CAClB,GAAI,EAAO,eAAiB,cAC1B,OAAO,EAAS,YAAY,EAE9B,IAAM,EAAO,MAAM,EAAS,KAAK,EACjC,GAAI,EAAO,WAAa,QAAU,CAAC,EACjC,OAAO,EAET,GAAI,CACF,OAAO,KAAK,MAAM,CAAI,EACtB,KAAM,CACN,OAAO,GCxHX,SAAS,EAAO,EAAS,CACvB,GAAI,OAAO,WAAe,IACxB,OAAO,WAET,GAAI,OAAO,KAAS,IAClB,OAAO,KAET,GAAI,OAAO,OAAW,IACpB,OAAO,OAET,MAAO,CAAC,EAaH,SAAS,EAAiB,CAC/B,EAC8B,CAC9B,IAAM,EAAM,GAAQ,EAAE,GACtB,OAAO,OAAO,IAAQ,UAAY,IAAQ,KACrC,EACD,KAOC,SAAS,EAAc,EAAqB,CACjD,GAAI,GAAc,IAAI,EACpB,MAAO,SAET,GAAI,GAAc,IAAI,EACpB,MAAO,SAET,GAAI,GAAc,IAAI,EACpB,MAAO,YAET,GAAI,OAAO,QAAU,WACnB,MAAO,MAET,MAAO,UAGT,SAAS,EAAa,CAAC,EAAmC,CACxD,IAAM,EAAM,GAAkB,CAAI,EAClC,OAAO,IAAQ,MAAQ,OAAO,EAAI,UAAY,WC/BzC,IAAM,GAAqC,CAChD,SAAU,SACV,WAAY,KACZ,YAAa,SACb,YAAa,aACb,oBAAqB,QACvB,EAEa,GAAqC,CAChD,SAAU,SACV,WAAY,KACZ,YAAa,UACb,YAAa,SACb,oBAAqB,SACvB,EAEa,GAAwC,CACnD,SAAU,YACV,WAAY,KACZ,YAAa,SACb,YAAa,aACb,oBAAqB,QACvB,EASO,MAAM,EAA6C,CAGpB,QAFpB,SAET,WAAW,CAAkB,EAA6B,CAA7B,eAClC,KAAK,SAAW,EAAQ,SAGnB,OAAU,CAAC,EAAuD,CACvE,IAAM,EAAM,GAAkB,KAAK,QAAQ,UAAU,EACrD,GAAI,CAAC,GAAO,OAAO,EAAI,UAAY,WACjC,OAAO,QAAQ,OACb,IAAI,EAAa,CACf,KAAM,uBACN,QAAS,GAAG,KAAK,QAAQ,6DACzB,QACF,CAAC,CACH,EAGF,IAAM,EAAY,EAAI,QAEtB,OAAO,IAAI,QAA4B,CAAC,EAAS,IAAW,CAC1D,IAAI,EAAW,GACX,EAAU,GACV,EACA,EAGE,EAAS,CAAC,IAAyB,CACvC,GAAI,EACF,OAGF,GADA,EAAU,GACN,IAAU,OACZ,aAAa,CAAK,EAEpB,EAAG,GAGC,EAAmC,CACvC,IAAK,GAAS,EAAO,QAAS,EAAO,IAAK,EAAO,MAAM,EACvD,OAAQ,EAAO,QAAU,MACzB,KAAM,EAAO,MACZ,KAAK,QAAQ,aAAc,GAAiB,EAAO,OAAO,EAC3D,SAAU,EAAO,UAAY,UACzB,EAAO,eAAiB,OACxB,CAAE,aAAc,EAAO,YAAa,EACpC,CAAC,KACD,EAAO,UAAY,QAAa,EAAO,QAAU,EACjD,CAAE,QAAS,EAAO,OAAQ,EAC1B,CAAC,EACL,QAAS,CAAC,IAAiC,CACzC,EAAO,IAAM,CACX,IAAM,EAAY,EAAI,KAAK,QAAQ,aAC7B,EAAa,OAAO,GAAa,EAAI,YAAc,CAAC,EACpD,EAAkB,GACtB,EAAI,KAAK,QAAQ,oBACnB,EACA,EAAQ,CACN,KAAM,EAAI,KACV,aACA,QAAS,EACT,YACI,MAAM,QAAQ,EAAI,OAAO,EACzB,CAAE,QAAS,EAAI,OAAoB,EACnC,CAAC,KACD,OAAO,EAAI,SAAW,SAAW,CAAE,OAAQ,EAAI,MAAO,EAAI,CAAC,CACjE,CAAC,EACF,GAEH,KAAM,CAAC,IAAiC,CACtC,EAAO,IAAM,CACX,IAAM,EAAS,GAAmB,CAAG,EACrC,EACE,IAAI,EAAa,CACf,KAAM,EAAW,UAAY,GAAgB,CAAM,EACnD,QAAS,GAAU,yBACnB,SACA,MAAO,CACT,CAAC,CACH,EACD,EAEL,EAEA,GAAI,EAAO,UAAY,QAAa,EAAO,QAAU,EACnD,EAAQ,WAAW,IAAM,CACvB,EAAW,GACX,GAAM,QAAQ,GACb,EAAO,OAAO,EAKnB,GAFA,EAAO,EAAU,CAAO,GAAK,OAEzB,EAAO,OACT,GAAI,EAAO,OAAO,QAChB,GAAM,QAAQ,EAEd,OAAO,OAAO,iBACZ,QACA,IAAM,CACJ,GAAM,QAAQ,GAEhB,CAAE,KAAM,EAAK,CACf,EAGL,EAEL,CAEA,SAAS,EAAgB,CACvB,EACwB,CACxB,OAAO,EAAa,CAAO,EAG7B,SAAS,EAAwB,CAAC,EAAwC,CACxE,GAAI,OAAO,IAAU,UAAY,IAAU,KACzC,MAAO,CAAC,EAEV,IAAM,EAAiC,CAAC,EAOxC,OANA,OAAO,KAAK,CAAgC,EAAE,QAAQ,CAAC,IAAQ,CAC7D,IAAM,EAAQ,EAAkC,GAChD,GAAI,IAAS,QAAa,IAAS,KACjC,EAAO,GAAO,OAAO,CAAI,EAE5B,EACM,EAGT,SAAS,EAAkB,CAAC,EAAsC,CAChE,GAAI,OAAO,EAAI,SAAW,SACxB,OAAO,EAAI,OAEb,GAAI,OAAO,EAAI,eAAiB,SAC9B,OAAO,EAAI,aAEb,GAAI,OAAO,EAAI,QAAU,SACvB,OAAO,EAAI,MAEb,MAAO,GAIT,SAAS,EAAe,CAAC,EAAkC,CACzD,GAAI,CAAC,EACH,MAAO,UAET,GAAI,WAAW,KAAK,CAAM,EACxB,MAAO,UAET,GAAI,SAAS,KAAK,CAAM,EACtB,MAAO,UAET,MAAO,gBChMF,IAAM,GAGT,CACF,IAAK,IAAI,GACT,OAAQ,IAAI,GAAmB,EAAc,EAC7C,OAAQ,IAAI,GAAmB,EAAc,EAC7C,UAAW,IAAI,GAAmB,EAAiB,CACrD,EAGO,SAAS,EAAa,CAC3B,EACgB,CAChB,IAAM,EAAU,GAAS,GACzB,GAAI,CAAC,EACH,MAAM,IAAI,EAAa,CACrB,KAAM,uBACN,QAAS,iCAAiC,OAAO,CAAQ,IACzD,OAAQ,CAAE,IAAK,EAAG,CACpB,CAAC,EAEH,OAAO,EAST,eAAsB,EAAc,CAClC,EACA,EACA,EACyB,CACzB,GAAI,EAAO,WAAa,QAAa,EAAO,WAAa,OACvD,OAAO,GAAc,EAAO,QAAQ,EAEtC,GAAI,IAAoB,OACtB,OAAO,OAAO,IAAoB,WAC9B,MAAM,EAAgB,CAAM,EAC5B,EAEN,GAAI,IAAqB,QAAa,IAAqB,OACzD,OAAO,GAAc,CAAgB,EAEvC,IAAM,EAA6B,GAAe,EAClD,GAAI,IAAa,UACf,MAAM,IAAI,EAAa,CACrB,KAAM,uBACN,QACE,4FACF,QACF,CAAC,EAEH,OAAO,GAAc,CAAQ,ECnExB,MAAM,EAAsB,CAChB,SAAgD,CAAC,EAE3D,GAAG,CACR,EACA,EACQ,CAER,OADA,KAAK,SAAS,KAAK,CAAE,cAAa,YAAW,CAAC,EACvC,KAAK,SAAS,OAAS,EAGzB,KAAK,CAAC,EAAkB,CAC7B,GAAI,KAAK,SAAS,KAAQ,OACxB,KAAK,SAAS,GAAM,KAIjB,KAAK,EAAS,CACnB,KAAK,SAAS,OAAS,EAGlB,OAAO,CACZ,EACM,CACN,KAAK,SAAS,QAAQ,CAAC,EAAS,IAAO,CACrC,GAAI,IAAY,KACd,EAAG,EAAS,CAAE,EAEjB,EAEL,CCVO,MAAM,EAAQ,CAEH,aAGZ,CACF,QAAS,IAAI,GACb,SAAU,IAAI,EAChB,EAEiB,iBACA,gBACA,iBAEV,WAAW,CAAC,EAA0B,CAAC,EAAG,CAC/C,IACE,QAAS,EACT,SAAU,KACP,GACD,EACJ,KAAK,gBAAkB,EACvB,KAAK,iBAAmB,EACxB,KAAK,iBAAmB,IAAK,CAAK,EAI7B,OAAoB,CACzB,EAC6B,CAC7B,IAAI,EACJ,GAAI,CACF,EAAS,KAAK,YAAY,CAAM,EAChC,MAAO,EAAO,CAEd,OAAO,QAAQ,OAAO,CAAK,EAM7B,IAAM,EAAsC,CAAC,EAC7C,KAAK,aAAa,QAAQ,QAAQ,CAAC,IAAY,CAC7C,EAAM,KACJ,EAAQ,YACR,EAAQ,UACV,EACD,EACD,EAAM,KACJ,CAAC,IAAmB,KAAK,SAAS,CAAyB,EAC3D,MACF,EACA,IAAM,EAGD,CAAC,EACN,KAAK,aAAa,SAAS,QAAQ,CAAC,IAAY,CAC9C,EAAiB,KAAK,CACpB,YAAa,EAAQ,YACrB,WAAY,EAAQ,UACtB,CAAC,EACF,EACD,QAAS,EAAQ,EAAiB,OAAS,EAAG,GAAS,EAAG,GAAS,EAAG,CACpE,IAAM,EAAU,EAAiB,GACjC,EAAM,KAAK,EAAQ,YAAa,EAAQ,UAAU,EAGpD,IAAI,EAA4B,QAAQ,QAAQ,CAAM,EACtD,MAAO,EAAM,OAAS,EAAG,CACvB,IAAM,EAAY,EAAM,MAAM,EACxB,EAAW,EAAM,MAAM,EAC7B,EAAU,EAAQ,KAChB,EACA,CACF,EAEF,OAAO,EAGF,GAAgB,CACrB,EACA,EAC6B,CAC7B,OAAO,KAAK,QAAW,IAAK,EAAQ,MAAK,OAAQ,KAAM,CAAC,EAGnD,MAAmB,CACxB,EACA,EAC6B,CAC7B,OAAO,KAAK,QAAW,IAAK,EAAQ,MAAK,OAAQ,QAAS,CAAC,EAGtD,IAAiB,CACtB,EACA,EAC6B,CAC7B,OAAO,KAAK,QAAW,IAAK,EAAQ,MAAK,OAAQ,MAAO,CAAC,EAGpD,OAAoB,CACzB,EACA,EAC6B,CAC7B,OAAO,KAAK,QAAW,IAAK,EAAQ,MAAK,OAAQ,SAAU,CAAC,EAGvD,IAAiB,CACtB,EACA,EACA,EAC6B,CAC7B,OAAO,KAAK,QAAW,IAAK,EAAQ,MAAK,OAAQ,OAAQ,MAAK,CAAC,EAG1D,GAAgB,CACrB,EACA,EACA,EAC6B,CAC7B,OAAO,KAAK,QAAW,IAAK,EAAQ,MAAK,OAAQ,MAAO,MAAK,CAAC,EAGzD,KAAkB,CACvB,EACA,EACA,EAC6B,CAC7B,OAAO,KAAK,QAAW,IAAK,EAAQ,MAAK,OAAQ,QAAS,MAAK,CAAC,EAG1D,QAAW,CAAC,EAAuD,CACzE,OAAO,GACL,EACA,KAAK,gBACL,KAAK,gBACP,EAAE,KAAK,CAAC,IAA4B,EAAQ,QAAW,CAAM,CAAC,EAIxD,WAAc,CAAC,EAA4C,CACjE,GAAI,CAAC,GAAU,OAAO,IAAW,SAC/B,MAAM,IAAI,EAAa,CACrB,KAAM,cACN,QAAS,mCACT,OAAQ,CACV,CAAC,EAGH,IAAM,EAAwB,IACzB,KAAK,oBACL,EACH,QAAS,EAAa,KAAK,iBAAiB,QAAS,EAAO,OAAO,EACnE,OAAQ,IAAK,KAAK,iBAAiB,UAAW,EAAO,MAAO,CAC9D,EAEA,GAAI,OAAO,EAAO,MAAQ,UAAY,EAAO,IAAI,SAAW,EAC1D,MAAM,IAAI,EAAa,CACrB,KAAM,cACN,QAAS,0BACT,OAAQ,CACV,CAAC,EAGH,GAAI,CACF,EAAO,OAAS,GAAgB,EAAO,MAAM,EAC7C,MAAO,EAAO,CACd,MAAM,IAAI,EAAa,CACrB,KAAM,cACN,QAAU,EAAgB,QAC1B,OAAQ,EACR,OACF,CAAC,EAGH,OAAO,EAEX,CChMO,IAAM,GAAmB,IAAI,GCiCpC,IAAM,GAAY,kBAGZ,GAAqB,IAOpB,MAAM,WAAgB,CAAsC,CACzD,MAAuC,KACvC,UAAY,GACZ,gBAAgD,KAChD,eAAwC,KACxC,gBAAuC,KAEvC,cAAqD,CAAC,EAEpD,SAAS,EAAiB,CAClC,MAAO,CAAE,SAAU,EAAU,EAGrB,UAAU,EAAS,CAC3B,KAAK,aAAa,SAAS,kBAAmB,CAC5C,SAAU,oBACV,WAAY,CACV,QAAS,QACT,OAAQ,OACR,MAAO,MACT,CACF,CAAC,EAGO,MAAM,EAAU,CACxB,OAAO,GAAE,SAAU,CACjB,GAAI,KAAK,MAAM,SACf,UAAW,mBAAmB,KAAK,MAAM,UAAY,IAAI,KAAK,MAAM,YAAc,KAClF,KAAM,IACR,CAAC,EAGO,SAAS,EAAS,CAC1B,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAGd,SAAS,EAAS,CAC1B,GAAI,KAAK,OAAS,CAAC,KAAK,UACtB,KAAK,MAAM,UAAU,KAAK,MAAM,MAAM,EAAE,OAAO,EAC1C,QAAI,CAAC,KAAK,OAAS,CAAC,KAAK,UAC9B,KAAK,YAAY,EAIX,WAAW,EAAS,CAC5B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,UAAY,GACjB,KAAK,OAAO,QAAQ,EACpB,KAAK,MAAQ,KAIR,QAAQ,EAAkC,CAC/C,OAAO,KAAK,MAGN,WAAW,EAAS,CAC1B,GAAI,KAAK,UACP,OAEF,KAAK,eAAe,EACjB,KAAK,CAAC,IAAY,CACjB,GAAI,KAAK,WAAa,CAAC,EAErB,OAEF,KAAK,MAAQ,EAAY,EAAS,KAAK,MAAM,MAAM,EACnD,KAAK,MAAM,OAAO,EACnB,EACA,MAAM,CAAC,IAAmB,CACzB,QAAQ,MAAM,2BAA4B,CAAK,EAChD,EASE,UAAU,EAA6B,CAC5C,OAAO,KAAK,GAMN,gBAAgB,EAAS,CAC/B,GAAI,KAAK,WAAa,KAAK,cAAc,OAAS,EAChD,OAGF,GAAI,EAAwB,EAC1B,OAEF,IAAM,EAAU,KAAK,WAAW,EAChC,GAAI,CAAC,GAAW,OAAO,EAAQ,mBAAqB,WAClD,OAGF,IAAM,EAAS,CAAC,IAAuB,CACrC,IAAM,EAAQ,KAAK,MACnB,GAAI,CAAC,EACH,OAEF,IAAM,EAAQ,EACR,EAAO,EAAQ,sBAAsB,EACrC,EAAO,EAAM,QAAU,EAAK,KAC5B,EAAO,EAAM,QAAU,EAAK,IAE5B,EAAI,EAAK,MACT,EAAI,EAAK,OACf,GAAI,EAAI,GAAK,EAAI,EACf,EAAM,OAAO,EAAG,CAAC,EAEnB,EAAM,SAAS,EAAM,CAAI,GAErB,EAAU,IAAY,CAC1B,KAAK,OAAO,WAAW,GAGzB,EAAQ,iBAAiB,YAAa,CAAM,EAC5C,EAAQ,iBAAiB,aAAc,CAAO,EAC9C,KAAK,cAAgB,CACnB,CAAC,YAAa,CAAM,EACpB,CAAC,aAAc,CAAO,CACxB,EAGM,mBAAmB,EAAS,CAClC,IAAM,EAAU,KAAK,WAAW,EAChC,QAAY,EAAM,KAAY,KAAK,cACjC,GAAS,oBAAoB,EAAM,CAAO,EAE5C,KAAK,cAAgB,CAAC,EAKhB,eAAe,EAAS,CAC9B,GAAI,KAAK,WAAa,KAAK,gBACzB,OAEF,KAAK,gBAAkB,GAAS,IAAM,KAAK,aAAa,EAAG,EAAkB,EAE7E,IAAM,EAAW,EAAwB,EACzC,GAAI,EAAU,CAEZ,IAAM,EAAK,EAAqB,CAAQ,EACxC,GAAI,GAAM,OAAO,EAAG,iBAAmB,WACrC,KAAK,gBAAkB,IAAM,KAAK,gBAAiB,IAAI,EACvD,EAAG,eAAe,KAAK,eAAe,EAExC,OAKF,IAAM,EAAU,KAAK,WAAW,EAChC,GACE,GACA,OAAO,EAAQ,aAAe,YAC9B,OAAO,iBAAmB,WAE1B,KAAK,eAAiB,IAAI,eAAe,IAAM,KAAK,gBAAiB,IAAI,CAAC,EAC1E,KAAK,eAAe,QAAQ,CAAO,EAI/B,kBAAkB,EAAS,CAKjC,GAJA,KAAK,gBAAgB,WAAW,EAChC,KAAK,eAAiB,KACtB,KAAK,iBAAiB,OAAO,EAC7B,KAAK,gBAAkB,KACnB,KAAK,gBAAiB,CACxB,IAAM,EAAW,EAAwB,EACnC,EAAK,EACN,EAAqB,CAAQ,EAC9B,KACJ,GAAI,GAAM,OAAO,EAAG,kBAAoB,WACtC,EAAG,gBAAgB,KAAK,eAAe,EAEzC,KAAK,gBAAkB,MAInB,YAAY,EAAS,CAC3B,GAAI,KAAK,UACP,OAEF,GAAI,EAAwB,EAAG,CAG7B,KAAK,OAAO,QAAQ,EACpB,KAAK,MAAQ,KACb,KAAK,YAAY,EACjB,OAEF,IAAM,EAAU,KAAK,WAAW,EAChC,GAAI,CAAC,GAAW,OAAO,EAAQ,aAAe,WAC5C,OAEF,IAAM,EAAQ,EAAQ,aAAe,EAC/B,EAAS,EAAQ,cAAgB,EACvC,GAAI,GAAS,GAAK,GAAU,EAC1B,OAEF,GAAI,CAAC,KAAK,MAAO,CACf,KAAK,YAAY,EACjB,OAGF,IAAM,EAAM,EAAiB,EAC7B,EAAQ,MAAQ,KAAK,MAAM,EAAQ,CAAG,EACtC,EAAQ,OAAS,KAAK,MAAM,EAAS,CAAG,EACxC,KAAK,MAAM,OAAO,EAAO,EAAQ,CAAG,EAAE,OAAO,EAGvC,cAAc,EAAuC,CAC3D,GAAI,KAAK,MAAM,QACb,OAAO,QAAQ,QAAQ,KAAK,MAAM,QAAQ,KAAK,WAAW,CAAC,CAAC,EAG9D,IAAM,EAAW,EAAwB,EACzC,GAAI,EAAU,CAEZ,IAAM,EAAW,IAAI,KAAK,MAAM,WAC1B,EAAU,CAAC,IACf,GAAyB,CACvB,WACA,SAAU,KACV,UACF,CAAC,EACE,KAAK,CAAC,IAAS,EAAyB,CAAI,CAAC,EAC7C,MAAM,CAAC,IAAmB,CACzB,GAAI,GAAQ,EACV,MAAM,EAER,OAAO,IAAI,QAAQ,CAAC,IAAY,WAAW,EAAS,EAAE,CAAC,EAAE,KAAK,IAC5D,EAAQ,EAAO,CAAC,CAClB,EACD,EACL,OAAO,EAAQ,CAAC,EAMlB,IAAM,EAAU,KAAK,WAAW,EAChC,GAAI,CAAC,GAAW,OAAO,EAAQ,aAAe,WAC5C,OAAO,QAAQ,QAAQ,IAAI,EAE7B,OAAO,QAAQ,QACb,EAAiB,CAAO,CAC1B,EAEJ",
48
- "debugId": "0275C413C5C4432664756E2164756E21",
47
+ "mappings": "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",
48
+ "debugId": "8FD37A8531491D8164756E2164756E21",
49
49
  "names": []
50
50
  }
@@ -18,6 +18,10 @@ export interface MiniProgramCanvasNode {
18
18
  getContext(type: '2d'): unknown;
19
19
  width: number;
20
20
  height: number;
21
+ /** SelectorQuery 返回的 CSS 逻辑尺寸;物理缓冲区仍使用 width / height。 */
22
+ logicalWidth?: number;
23
+ logicalHeight?: number;
24
+ pixelRatio?: number;
21
25
  }
22
26
 
23
27
  export type MiniProgramGlobal = 'wx' | 'my' | 'tt';
@@ -69,7 +73,9 @@ export function getMiniProgramCanvasNode(options: {
69
73
  .select(options.selector)
70
74
  .fields({ node: true, size: true })
71
75
  .exec((res: unknown) => {
72
- const first = Array.isArray(res) ? res[0] : undefined;
76
+ const first = (Array.isArray(res) ? res[0] : undefined) as
77
+ | { node?: MiniProgramCanvasNode; width?: number; height?: number }
78
+ | undefined;
73
79
  const node = first?.node as MiniProgramCanvasNode | undefined;
74
80
  if (!node || typeof node.getContext !== 'function') {
75
81
  reject(
@@ -79,6 +85,19 @@ export function getMiniProgramCanvasNode(options: {
79
85
  );
80
86
  return;
81
87
  }
88
+ const logicalWidth = first?.width;
89
+ const logicalHeight = first?.height;
90
+ if (
91
+ typeof logicalWidth === 'number' && logicalWidth > 0 &&
92
+ typeof logicalHeight === 'number' && logicalHeight > 0
93
+ ) {
94
+ const dpr = detectMiniProgramPixelRatio(platform);
95
+ node.logicalWidth = logicalWidth;
96
+ node.logicalHeight = logicalHeight;
97
+ node.pixelRatio = dpr;
98
+ node.width = Math.round(logicalWidth * dpr);
99
+ node.height = Math.round(logicalHeight * dpr);
100
+ }
82
101
  resolve(node);
83
102
  });
84
103
  });
@@ -130,9 +149,9 @@ export function resolveMiniProgramCanvas(
130
149
  throw new Error('resolveMiniProgramCanvas: 2d context is not available');
131
150
  }
132
151
 
133
- const dpr = options.dpr ?? detectMiniProgramPixelRatio();
134
- const width = options.width ?? node.width;
135
- const height = options.height ?? node.height;
152
+ const dpr = options.dpr ?? node.pixelRatio ?? detectMiniProgramPixelRatio();
153
+ const width = options.width ?? node.logicalWidth ?? node.width;
154
+ const height = options.height ?? node.logicalHeight ?? node.height;
136
155
  const ctx = ctx2d as unknown as ICanvas2D;
137
156
 
138
157
  return { ctx, width, height, dpr, palette: options.palette };
@@ -29,14 +29,14 @@ export interface ResolvedCanvas {
29
29
 
30
30
  /** 通用探测设备像素比(web 与小程序可用 globalThis 访问)。 */
31
31
  export function detectPixelRatio(): number {
32
- const host = getHost();
32
+ const host = getPixelRatioHost();
33
33
  if (typeof host.devicePixelRatio === 'number' && host.devicePixelRatio > 0) {
34
34
  return host.devicePixelRatio;
35
35
  }
36
36
  return 1;
37
37
  }
38
38
 
39
- function getHost(): Record<string, unknown> {
39
+ function getPixelRatioHost(): Record<string, unknown> {
40
40
  if (typeof globalThis !== 'undefined') {
41
41
  return globalThis as unknown as Record<string, unknown>;
42
42
  }
@@ -45,7 +45,7 @@ export class RadarChart extends ChartBase<RadarChartOption> {
45
45
  }
46
46
 
47
47
  const startAngle = option.startAngle ?? -Math.PI / 2;
48
- const step = TWO_PI / count;
48
+ const step = RADAR_TWO_PI / count;
49
49
  const splitCount = Math.max(1, option.splitCount ?? 5);
50
50
  const gridColor = option.gridColor ?? '#ebedf0';
51
51
  const gridLineWidth = option.gridLineWidth ?? 1;
@@ -156,7 +156,7 @@ export class RadarChart extends ChartBase<RadarChartOption> {
156
156
  return null;
157
157
  }
158
158
  const startAngle = this.option.startAngle ?? -Math.PI / 2;
159
- const step = TWO_PI / count;
159
+ const step = RADAR_TWO_PI / count;
160
160
 
161
161
  let best = -1;
162
162
  let bestDist = 24; // 命中阈值(px)
@@ -214,4 +214,4 @@ export class RadarChart extends ChartBase<RadarChartOption> {
214
214
  }
215
215
  }
216
216
 
217
- const TWO_PI = Math.PI * 2;
217
+ const RADAR_TWO_PI = Math.PI * 2;
package/lib/component.ts CHANGED
@@ -70,6 +70,14 @@ export class TcChart extends Component<TcChartProps, TcChartState> {
70
70
  }
71
71
 
72
72
  protected initStyles(): void {
73
+ this.styleManager.addStyle('tc-chart-host', {
74
+ selector: ':host',
75
+ properties: {
76
+ display: 'block',
77
+ height: '100%',
78
+ width: '100%',
79
+ },
80
+ });
73
81
  this.styleManager.addStyle('tc-chart-canvas', {
74
82
  selector: '.tc-chart__canvas',
75
83
  properties: {
@@ -147,13 +155,13 @@ export class TcChart extends Component<TcChartProps, TcChartState> {
147
155
 
148
156
  /** Web 端绑定 hover 事件:鼠标移动命中数据点即显示 tooltip,离开清除。 */
149
157
  private setupHoverEvents(): void {
150
- if (this.destroyed || this.hoverHandlers.length > 0) {
151
- return;
152
- }
153
158
  // 小程序端暂无鼠标事件,一期仅 Web;后续可在 touchstart/touchmove 接入同一 setHover API
154
159
  if (detectMiniProgramGlobal()) {
155
160
  return;
156
161
  }
162
+ if (this.destroyed || this.hoverHandlers.length > 0) {
163
+ return;
164
+ }
157
165
  const element = this.getElement() as HTMLCanvasElement | null;
158
166
  if (!element || typeof element.addEventListener !== 'function') {
159
167
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "transone-chart",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "TransOne 跨端图表库:一份 TypeScript 源码,基于 Canvas 2D 渲染,兼容 Web 与多端小程序,预留原生 App(iOS/Android/鸿蒙)扩展",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",