@tscircuit/runframe 0.0.725 → 0.0.727

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.
@@ -13076,7 +13076,7 @@ ${l.join(`
13076
13076
  `)),r.indexOf(`\\
13077
13077
  `)!==-1&&(r=r.replace(/\\\n/g,""));const t=r.split(`
13078
13078
  `);let n="",i="",o=0,a=[];const s=typeof"".trimLeft=="function";for(let u=0,A=t.length;u<A;u++)if(n=t[u],n=s?n.trimLeft():n.trim(),o=n.length,o!==0&&(i=n.charAt(0),i!=="#"))if(i==="v"){const d=n.split(/\s+/);switch(d[0]){case"v":e.vertices.push(parseFloat(d[1]),parseFloat(d[2]),parseFloat(d[3])),d.length>=7?e.colors.push(parseFloat(d[4]),parseFloat(d[5]),parseFloat(d[6])):e.colors.push(void 0,void 0,void 0);break;case"vn":e.normals.push(parseFloat(d[1]),parseFloat(d[2]),parseFloat(d[3]));break;case"vt":e.uvs.push(parseFloat(d[1]),parseFloat(d[2]));break}}else if(i==="f"){const f=n.substr(1).trim().split(/\s+/),m=[];for(let E=0,_=f.length;E<_;E++){const x=f[E];if(x.length>0){const w=x.split("/");m.push(w)}}const C=m[0];for(let E=1,_=m.length-1;E<_;E++){const x=m[E],w=m[E+1];e.addFace(C[0],x[0],w[0],C[1],x[1],w[1],C[2],x[2],w[2])}}else if(i==="l"){const d=n.substring(1).trim().split(" ");let f=[];const m=[];if(n.indexOf("/")===-1)f=d;else for(let C=0,E=d.length;C<E;C++){const _=d[C].split("/");_[0]!==""&&f.push(_[0]),_[1]!==""&&m.push(_[1])}e.addLineGeometry(f,m)}else if(i==="p"){const f=n.substr(1).trim().split(" ");e.addPointGeometry(f)}else if((a=q6t.exec(n))!==null){const d=(" "+a[0].substr(1).trim()).substr(1);e.startObject(d)}else if(X6t.test(n))e.object.startMaterial(n.substring(7).trim(),e.materialLibraries);else if(Z6t.test(n))e.materialLibraries.push(n.substring(7).trim());else if($6t.test(n))console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');else if(i==="s"){if(a=n.split(" "),a.length>1){const f=a[1].trim().toLowerCase();e.object.smooth=f!=="0"&&f!=="off"}else e.object.smooth=!0;const d=e.object.currentMaterial();d&&(d.smooth=e.object.smooth)}else{if(n==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+n+'"')}e.finalize();const l=new q2;if(l.materialLibraries=[].concat(e.materialLibraries),!(e.objects.length===1&&e.objects[0].geometry.vertices.length===0)===!0)for(let u=0,A=e.objects.length;u<A;u++){const d=e.objects[u],f=d.geometry,m=d.materials,C=f.type==="Line",E=f.type==="Points";let _=!1;if(f.vertices.length===0)continue;const x=new Tf;x.setAttribute("position",new qc(f.vertices,3)),f.normals.length>0&&x.setAttribute("normal",new qc(f.normals,3)),f.colors.length>0&&(_=!0,x.setAttribute("color",new qc(f.colors,3))),f.hasUVIndices===!0&&x.setAttribute("uv",new qc(f.uvs,2));const w=[];for(let L=0,O=m.length;L<O;L++){const H=m[L],K=H.name+"_"+H.smooth+"_"+_;let q=e.materials[K];if(this.materials!==null){if(q=this.materials.create(H.name),C&&q&&!(q instanceof cE)){const Y=new cE;e_.prototype.copy.call(Y,q),Y.color.copy(q.color),q=Y}else if(E&&q&&!(q instanceof n9)){const Y=new n9({size:10,sizeAttenuation:!1});e_.prototype.copy.call(Y,q),Y.color.copy(q.color),Y.map=q.map,q=Y}}q===void 0&&(C?q=new cE:E?q=new n9({size:1,sizeAttenuation:!1}):q=new dU,q.name=H.name,q.flatShading=!H.smooth,q.vertexColors=_,e.materials[K]=q),w.push(q)}let P;if(w.length>1){for(let L=0,O=m.length;L<O;L++){const H=m[L];x.addGroup(H.groupStart,H.groupCount,L)}C?P=new eb(x,w):E?P=new D5(x,w):P=new sv(x,w)}else C?P=new eb(x,w[0]):E?P=new D5(x,w[0]):P=new sv(x,w[0]);P.name=d.name,l.add(P)}else if(e.vertices.length>0){const u=new n9({size:1,sizeAttenuation:!1}),A=new Tf;A.setAttribute("position",new qc(e.vertices,3)),e.colors.length>0&&e.colors[0]!==void 0&&(A.setAttribute("color",new qc(e.colors,3)),u.vertexColors=!0);const d=new D5(A,u);l.add(d)}return l}};typeof window<"u"&&!window.TSCIRCUIT_OBJ_LOADER_CACHE&&(window.TSCIRCUIT_OBJ_LOADER_CACHE=new Map);function n7t(r){const[e,t]=pt.useState(null);return pt.useEffect(()=>{if(!r)return;const n=r.replace(/&cachebust_origin=$/,""),i=window.TSCIRCUIT_OBJ_LOADER_CACHE;let o=!1;async function a(){var l;try{const c=await fetch(n);if(!c.ok)throw new Error(`Failed to fetch "${n}": ${c.status} ${c.statusText}`);const u=await c.text(),A=(l=u.match(/newmtl[\s\S]*?endmtl/g))==null?void 0:l.join(`
13079
- `).replace(/d 0\./g,"d 1."),d=u.replace(/newmtl[\s\S]*?endmtl/g,""),f=new J6t;f.setMaterialOptions({invertTrProperty:!0});const m=f.parse(A.replace(/Kd\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/g,"Kd $2 $2 $2"),"test.mtl"),C=new t7t;return C.setMaterials(m),C.parse(d)}catch(c){return c}}function s(){if(i.has(n)){const c=i.get(n);return c.result?Promise.resolve(c.result.clone()):c.promise.then(u=>u instanceof Error?u:u.clone())}const l=a().then(c=>(c instanceof Error||i.set(n,{...i.get(n),result:c}),c));return i.set(n,{promise:l,result:null}),l}return s().then(l=>{o||t(l)}).catch(l=>{console.error(l)}),()=>{o=!0}},[r]),e}function r7t({url:r,position:e,rotation:t,onHover:n,onUnhover:i,isHovered:o}){const a=n7t(r);if(!a)return ut.jsx(c7,{isHovered:o,onHover:n,onUnhover:i,children:ut.jsxs("mesh",{position:e,children:[ut.jsx("boxGeometry",{args:[.5,.5,.5]}),ut.jsx("meshStandardMaterial",{transparent:!0,color:"red",opacity:.25})]})});if(a instanceof Error)throw a;return ut.jsx(c7,{isHovered:o,onHover:n,onUnhover:i,children:ut.jsx("primitive",{rotation:t,position:e,object:a})})}var i7t=zI(HFe()),jFe=({jscadPlan:r,positionOffset:e,rotationOffset:t,onHover:n,onUnhover:i,isHovered:o})=>{const{threeGeom:a,material:s}=pt.useMemo(()=>{const l=qve.executeJscadOperations(i7t.default,r),c=Mut(l),u=new ED({vertexColors:!0,side:nx});return{threeGeom:c,material:u}},[r]);return pt.useMemo(()=>{if(o){const l=new Sl(s.color.getHex());s.emissive.copy(l),s.emissive.setRGB(0,0,1),s.emissiveIntensity=.2}else s.emissiveIntensity=0},[o,s]),a?ut.jsx(c7,{isHovered:o,onHover:n,onUnhover:i,position:e,children:ut.jsx("mesh",{geometry:a,material:s,position:e,rotation:t})}):null},{createJSCADRoot:o7t}=Lot(qve.jscadPlanner),a7t=({positionOffset:r,footprint:e,rotationOffset:t,onHover:n,onUnhover:i,isHovered:o})=>{const a=pt.useMemo(()=>{if(!e)return null;const s=[];return o7t(s).render(ut.jsx(nIt,{footprint:e})),s},[e]);return a?ut.jsx(ut.Fragment,{children:a.map((s,l)=>ut.jsx(jFe,{positionOffset:r,rotationOffset:t,jscadPlan:s,onHover:n,onUnhover:i,isHovered:o},l))}):null},s7t=(...r)=>r,JFe=({cad_component:r,circuitJson:e})=>{const[t,n]=pt.useState(!1),[i,o]=pt.useState(null),a=pt.useCallback(d=>{d!=null&&d.mousePosition?(n(!0),o(d.mousePosition)):(n(!1),o(null))},[]),s=pt.useCallback(()=>{n(!1),o(null)},[]),l=pt.useMemo(()=>{var d;return(d=dm(e).source_component.getUsing({source_component_id:r.source_component_id}))==null?void 0:d.name},[e,r.source_component_id]),c=r.model_obj_url??r.model_stl_url,u=r.rotation?s7t(r.rotation.x*Math.PI/180,r.rotation.y*Math.PI/180,r.rotation.z*Math.PI/180):void 0;let A=null;return c?A=ut.jsx(r7t,{url:c,position:r.position?[r.position.x,r.position.y,r.position.z]:void 0,rotation:u,onHover:a,onUnhover:s,isHovered:t},r.cad_component_id):r.model_jscad?A=ut.jsx(jFe,{jscadPlan:r.model_jscad,rotationOffset:u,onHover:a,onUnhover:s,isHovered:t},r.cad_component_id):r.footprinter_string&&(A=ut.jsx(a7t,{positionOffset:r.position?[r.position.x,r.position.y,r.position.z]:void 0,rotationOffset:u,footprint:r.footprinter_string,onHover:a,onUnhover:s,isHovered:t})),ut.jsxs(ut.Fragment,{children:[A,t&&i?ut.jsx(ORe,{position:i,style:{fontFamily:"sans-serif",transform:"translate3d(1rem, 1rem, 0)",backgroundColor:"white",padding:"5px",borderRadius:"3px",pointerEvents:"none",userSelect:"none",WebkitUserSelect:"none",MozUserSelect:"none",msUserSelect:"none"},children:l??"<unknown>"}):null]})},l7t={version:"0.0.302"};typeof window<"u"&&(window.TSCI_MAIN_CAMERA_ROTATION=new nB(0,0,0));function c7t(r,e){const t=new C_().setFromEuler(new nB(r.x,r.y,r.z)),n=new Yn(0,0,1);return n.applyQuaternion(t),n.multiplyScalar(e)}var u7t=({})=>{const r=pt.useRef();return pt.useRef({lastRotation:new nB}),WN((e,t)=>{if(!r.current)return;const n=window.TSCI_MAIN_CAMERA_ROTATION,i=c7t(n,2);e.camera.position.copy(i),e.camera.lookAt(0,0,0)}),ut.jsxs("mesh",{ref:r,rotation:[Math.PI/2,0,0],children:[ut.jsx("boxGeometry",{args:[1,1,1]}),ut.jsx("meshStandardMaterial",{color:"white"}),ut.jsx(M9,{position:[0,0,.51],fontSize:.25,color:"black",children:"Front"}),ut.jsx(M9,{position:[0,0,-.51],fontSize:.25,color:"black",rotation:[0,Math.PI,0],children:"Back"}),ut.jsx(M9,{position:[.51,0,0],fontSize:.25,color:"black",rotation:[0,Math.PI/2,0],children:"Right"}),ut.jsx(M9,{position:[-.51,0,0],fontSize:.25,color:"black",rotation:[0,-Math.PI/2,0],children:"Left"}),ut.jsx(M9,{position:[0,.51,0],fontSize:.25,color:"black",rotation:[-Math.PI/2,0,0],children:"Top"}),ut.jsx(M9,{position:[0,-.51,0],fontSize:.25,color:"black",rotation:[Math.PI/2,0,0],children:"Bottom"}),ut.jsx("lineSegments",{args:[new LV(new BQ(1,1,1))],material:new cE({color:0,linewidth:2})})]})},A7t=()=>(WN(({camera:r})=>{window.TSCI_MAIN_CAMERA_ROTATION=r.rotation}),ut.jsx(ut.Fragment,{})),WFe=pt.forwardRef(({children:r,initialCameraPosition:e=[5,5,5],autoRotateDisabled:t,clickToInteractEnabled:n=!1,boardDimensions:i},o)=>{const[a,s]=pt.useState(!n),l=pt.useMemo(()=>{if(!i)return 10;const c=i.width??0,u=i.height??0,d=Math.max(c,u)*1.5;return d>10?d:10},[i]);return ut.jsxs("div",{style:{position:"relative",width:"100%",height:"100%"},children:[ut.jsx("div",{style:{position:"absolute",top:0,left:0,width:120,height:120},children:ut.jsxs(FRe,{camera:{up:[0,0,1],position:[1,1,1]},style:{zIndex:10},children:[ut.jsx("ambientLight",{intensity:Math.PI/2}),ut.jsx(u7t,{})]})}),ut.jsxs(FRe,{scene:{up:[0,0,1]},camera:{up:[0,0,1],position:e},children:[ut.jsx(A7t,{}),a&&ut.jsx(f1t,{autoRotate:!t,autoRotateSpeed:1}),ut.jsx("ambientLight",{intensity:Math.PI/2}),ut.jsx("pointLight",{position:[-10,-10,10],decay:0,intensity:Math.PI/4}),ut.jsx(p1t,{rotation:[Math.PI/2,0,0],infiniteGrid:!0,cellSize:1,sectionSize:l,args:[l,l]}),ut.jsx("object3D",{ref:o,children:r})]}),ut.jsxs("div",{style:{position:"absolute",right:24,bottom:24,fontFamily:"sans-serif",color:"white",WebkitTextStroke:"0.5px rgba(0, 0, 0, 0.5)",fontSize:11},children:["@",l7t.version]}),n&&!a&&ut.jsx("button",{type:"button",onClick:()=>s(!0),onKeyDown:c=>{(c.key==="Enter"||c.key===" ")&&s(!0)},style:{position:"absolute",inset:0,cursor:"pointer",zIndex:10,display:"flex",alignItems:"center",justifyContent:"center"},children:ut.jsx("div",{style:{backgroundColor:"rgba(0, 0, 0, 0.8)",color:"white",padding:"12px 24px",borderRadius:"8px",fontSize:"16px",fontFamily:"sans-serif",pointerEvents:"none"},children:"Click to Interact"})})]})}),qFe=r=>pt.useMemo(()=>{if(!r)return[];const e=new Lkt;return e.add(r),e.render(),e.getCircuitJson()},[r]);function d7t(r){return new Promise((e,t)=>{const n=new FileReader;n.onload=()=>{e(n.result)},n.onerror=t,n.readAsDataURL(r)})}var f7t=r=>{const[e,t]=pt.useState([]),[n,i]=pt.useState(!0);return pt.useEffect(()=>{if(!r)return;(async()=>{i(!0);const s=(Array.isArray(r)?r:[r]).map(async l=>{const c=Xkt.serialize({binary:!0},[l]),u=new Blob(c);return{stlUrl:await d7t(u),color:l.color}});try{const l=await Promise.all(s);t(l)}catch(l){console.error("Error generating STLs:",l),t([])}finally{i(!1)}})()},[r]),{stls:e,loading:n}},h7t=zI(CR()),p7t=zI(QT()),xm=.01,vE={copper:[.9,.6,.2],fr4Green:[5/255,163/255,46/255],fr4GreenSolderWithMask:[0/255,152/255,19/255],fr1Copper:[.8,.4,.2],fr1CopperSolderWithMask:[.9,.6,.2]},Fw=.001,PS=32,g7t=.035,u7=50,yle={fr1:vE.fr1Copper,fr4:vE.fr4Green},ZFe={fr1:vE.fr1CopperSolderWithMask,fr4:vE.fr4GreenSolderWithMask},m7t=zI(o7()),y7t=zI(CR()),v7t=zI(l7()),XFe=r=>{let e=0;for(let n=0;n<r.length;n++){const i=(n+1)%r.length;e+=r[n][0]*r[i][1],e-=r[i][0]*r[n][1]}return e/2<=0},$Fe=(r,e=1.2)=>{const{outline:t}=r;let n=t.map(a=>[a.x,a.y]);XFe(n)&&(n=n.reverse());const i=(0,y7t.polygon)({points:n});let o=(0,m7t.extrudeLinear)({height:e},i);return o=(0,v7t.translate)([0,0,-e/2],o),o},I7t=r=>{const e=dm(r).pcb_board.list()[0];if(!e)return console.warn("No pcb_board found for simplified geometry"),[];let t;const n=1.2;e.outline&&e.outline.length>0?t=$Fe({outline:e.outline},n):t=(0,h7t.cuboid)({size:[e.width,e.height,n],center:[e.center.x,e.center.y,0]});const i=yle[e.material]??vE.fr4Green;return[(0,p7t.colorize)(i,t)]},K9=zI(l7()),Ax=zI(CR()),ER=zI(QT()),j9=zI(dle()),fv=zI(CR()),A7=zI(QT()),PB=zI(dle()),GC=.05,eLe=(r,e)=>{if(r.shape||(r.shape="circle"),r.shape==="circle")return(0,A7.colorize)(vE.copper,(0,PB.subtract)((0,PB.union)((0,fv.cylinder)({center:[r.x,r.y,0],radius:r.hole_diameter/2,height:e.pcbThickness}),(0,fv.cylinder)({center:[r.x,r.y,e.pcbThickness/2+GC/2+xm],radius:r.outer_diameter/2,height:GC}),(0,fv.cylinder)({center:[r.x,r.y,-e.pcbThickness/2-GC/2-xm],radius:r.outer_diameter/2,height:GC})),(0,fv.cylinder)({center:[r.x,r.y,0],radius:r.hole_diameter/2-xm,height:1.5})));if(r.shape==="circular_hole_with_rect_pad"){const t=r.rect_pad_width||r.hole_diameter,n=r.rect_pad_height||r.hole_diameter;return(0,A7.colorize)(vE.copper,(0,PB.subtract)((0,PB.union)((0,fv.cuboid)({center:[r.x,r.y,1.2/2],size:[t,n,GC]}),(0,fv.cuboid)({center:[r.x,r.y,-1.2/2],size:[t,n,GC]}),(0,fv.cylinder)({center:[r.x,r.y,0],radius:r.hole_diameter/2,height:1.2})),(0,fv.cylinder)({center:[r.x,r.y,0],radius:Math.max(r.hole_diameter/2-xm,.01),height:1.5})))}if(r.shape==="pill"){const t=r.hole_height>r.hole_width,n=t?r.hole_height:r.hole_width,i=t?r.hole_width:r.hole_height,o=t?r.outer_height||i+.2:r.outer_width||n+.2,a=t?r.outer_width||n+.2:r.outer_height||i+.2,s=i/2,l=a/2,c=Math.abs(n-i),u=Math.abs(o-a),A=(0,fv.cuboid)({center:[r.x,r.y,0],size:t?[i,c,e.pcbThickness]:[c,i,e.pcbThickness]}),d=(0,fv.cylinder)({center:t?[r.x,r.y-c/2,0]:[r.x-c/2,r.y,0],radius:s,height:e.pcbThickness}),f=(0,fv.cylinder)({center:t?[r.x,r.y+c/2,0]:[r.x+c/2,r.y,0],radius:s,height:e.pcbThickness}),m=(0,PB.union)(A,d,f),C=e.pcbThickness/2+GC/2+xm,E=(0,fv.cuboid)({center:[r.x,r.y,C],size:t?[a,u,GC]:[u,a,GC]}),_=(0,fv.cylinder)({center:t?[r.x,r.y-u/2,C]:[r.x-u/2,r.y,C],radius:l,height:GC}),x=(0,fv.cylinder)({center:t?[r.x,r.y+u/2,C]:[r.x+u/2,r.y,C],radius:l,height:GC}),w=(0,PB.union)(E,_,x),P=-e.pcbThickness/2-GC/2-xm,L=(0,fv.cuboid)({center:[r.x,r.y,P],size:t?[a,u,GC]:[u,a,GC]}),O=(0,fv.cylinder)({center:t?[r.x,r.y-u/2,P]:[r.x-u/2,r.y,P],radius:l,height:GC}),H=(0,fv.cylinder)({center:t?[r.x,r.y+u/2,P]:[r.x+u/2,r.y,P],radius:l,height:GC}),K=(0,PB.union)(L,O,H),q=(0,fv.cuboid)({center:[r.x,r.y,0],size:t?[i-2*xm,c,e.pcbThickness+2*xm]:[c,i-2*xm,e.pcbThickness+2*xm]}),Y=(0,fv.cylinder)({center:t?[r.x,r.y-c/2,0]:[r.x-c/2,r.y,0],radius:s-xm,height:e.pcbThickness+2*xm}),se=(0,fv.cylinder)({center:t?[r.x,r.y+c/2,0]:[r.x+c/2,r.y,0],radius:s-xm,height:e.pcbThickness+2*xm}),ie=(0,PB.union)(q,Y,se);return(0,A7.colorize)(vE.copper,(0,PB.subtract)((0,PB.union)(m,w,K),ie))}if(r.shape==="pill_hole_with_rect_pad"){const t=r.hole_height>r.hole_width,n=t?r.hole_height:r.hole_width,i=t?r.hole_width:r.hole_height,o=i/2,a=Math.abs(n-i),s=r.rect_pad_width||n+.2,l=r.rect_pad_height||i+.2,c=(0,fv.cuboid)({center:[r.x,r.y,0],size:t?[i,a,1.2]:[a,i,1.2]}),u=(0,fv.cylinder)({center:t?[r.x,r.y-a/2,0]:[r.x-a/2,r.y,0],radius:o,height:1.2}),A=(0,fv.cylinder)({center:t?[r.x,r.y+a/2,0]:[r.x+a/2,r.y,0],radius:o,height:1.2}),d=(0,fv.cuboid)({center:[r.x,r.y,1.2/2],size:[s,l,GC]}),f=(0,fv.cuboid)({center:[r.x,r.y,-1.2/2],size:[s,l,GC]}),m=(0,PB.union)((0,fv.cuboid)({center:[r.x,r.y,0],size:t?[i-GC,a,1.5]:[a,i-GC,1.5]}),(0,fv.cylinder)({center:t?[r.x,r.y-a/2,0]:[r.x-a/2,r.y,0],radius:o-GC,height:1.5}),(0,fv.cylinder)({center:t?[r.x,r.y+a/2,0]:[r.x+a/2,r.y,0],radius:o-GC,height:1.5}));return(0,A7.colorize)(vE.copper,(0,PB.subtract)((0,PB.union)(c,u,A,d,f),m))}else throw new Error(`Unsupported plated hole shape: ${r.shape}`)},d7=zI(o7()),tLe=zI(hle()),C7t=zI(ale());function nLe(r,e){return Array.isArray(e)?[r.a*e[0]+r.c*e[1]+r.e,r.b*e[0]+r.d*e[1]+r.f]:{x:r.a*e.x+r.c*e.y+r.e,y:r.b*e.x+r.d*e.y+r.f}}function qQ(r,e=0){return{a:1,c:0,e:r,b:0,d:1,f:e}}function rLe(...r){r=Array.isArray(r[0])?r[0]:r;const e=(t,n)=>({a:t.a*n.a+t.c*n.b,c:t.a*n.c+t.c*n.d,e:t.a*n.e+t.c*n.f+t.e,b:t.b*n.a+t.d*n.b,d:t.b*n.c+t.d*n.d,f:t.b*n.e+t.d*n.f+t.f});switch(r.length){case 0:throw new Error("no matrices provided");case 1:return r[0];case 2:return e(r[0],r[1]);default:{const[t,n,...i]=r,o=e(t,n);return rLe(o,...i)}}}function iLe(...r){return rLe(...r)}var{cos:E7t,sin:_7t}=Math;function oLe(r,e,t){const n=E7t(r),i=_7t(r);return{a:n,c:-i,e:0,b:i,d:n,f:0}}function x7t(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function f7(r,e,t,n){var i=Error.call(this,r);return Object.setPrototypeOf&&Object.setPrototypeOf(i,f7.prototype),i.expected=e,i.found=t,i.location=n,i.name="SyntaxError",i}x7t(f7,Error);function vle(r,e,t){return t=t||" ",r.length>e?r:(e-=r.length,t+=t.repeat(e),r+t.slice(0,e))}f7.prototype.format=function(r){var e="Error: "+this.message;if(this.location){var t=null,n;for(n=0;n<r.length;n++)if(r[n].source===this.location.source){t=r[n].text.split(/\r\n|\n|\r/g);break}var i=this.location.start,o=this.location.source&&typeof this.location.source.offset=="function"?this.location.source.offset(i):i,a=this.location.source+":"+o.line+":"+o.column;if(t){var s=this.location.end,l=vle("",o.line.toString().length," "),c=t[i.line-1],u=i.line===s.line?s.column:c.length+1,A=u-i.column||1;e+=`
13079
+ `).replace(/d 0\./g,"d 1."),d=u.replace(/newmtl[\s\S]*?endmtl/g,""),f=new J6t;f.setMaterialOptions({invertTrProperty:!0});const m=f.parse(A.replace(/Kd\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/g,"Kd $2 $2 $2"),"test.mtl"),C=new t7t;return C.setMaterials(m),C.parse(d)}catch(c){return c}}function s(){if(i.has(n)){const c=i.get(n);return c.result?Promise.resolve(c.result.clone()):c.promise.then(u=>u instanceof Error?u:u.clone())}const l=a().then(c=>(c instanceof Error||i.set(n,{...i.get(n),result:c}),c));return i.set(n,{promise:l,result:null}),l}return s().then(l=>{o||t(l)}).catch(l=>{console.error(l)}),()=>{o=!0}},[r]),e}function r7t({url:r,position:e,rotation:t,onHover:n,onUnhover:i,isHovered:o}){const a=n7t(r);if(!a)return ut.jsx(c7,{isHovered:o,onHover:n,onUnhover:i,children:ut.jsxs("mesh",{position:e,children:[ut.jsx("boxGeometry",{args:[.5,.5,.5]}),ut.jsx("meshStandardMaterial",{transparent:!0,color:"red",opacity:.25})]})});if(a instanceof Error)throw a;return ut.jsx(c7,{isHovered:o,onHover:n,onUnhover:i,children:ut.jsx("primitive",{rotation:t,position:e,object:a})})}var i7t=zI(HFe()),jFe=({jscadPlan:r,positionOffset:e,rotationOffset:t,onHover:n,onUnhover:i,isHovered:o})=>{const{threeGeom:a,material:s}=pt.useMemo(()=>{const l=qve.executeJscadOperations(i7t.default,r),c=Mut(l),u=new ED({vertexColors:!0,side:nx});return{threeGeom:c,material:u}},[r]);return pt.useMemo(()=>{if(o){const l=new Sl(s.color.getHex());s.emissive.copy(l),s.emissive.setRGB(0,0,1),s.emissiveIntensity=.2}else s.emissiveIntensity=0},[o,s]),a?ut.jsx(c7,{isHovered:o,onHover:n,onUnhover:i,position:e,children:ut.jsx("mesh",{geometry:a,material:s,position:e,rotation:t})}):null},{createJSCADRoot:o7t}=Lot(qve.jscadPlanner),a7t=({positionOffset:r,footprint:e,rotationOffset:t,onHover:n,onUnhover:i,isHovered:o})=>{const a=pt.useMemo(()=>{if(!e)return null;const s=[];return o7t(s).render(ut.jsx(nIt,{footprint:e})),s},[e]);return a?ut.jsx(ut.Fragment,{children:a.map((s,l)=>ut.jsx(jFe,{positionOffset:r,rotationOffset:t,jscadPlan:s,onHover:n,onUnhover:i,isHovered:o},l))}):null},s7t=(...r)=>r,JFe=({cad_component:r,circuitJson:e})=>{const[t,n]=pt.useState(!1),[i,o]=pt.useState(null),a=pt.useCallback(d=>{d!=null&&d.mousePosition?(n(!0),o(d.mousePosition)):(n(!1),o(null))},[]),s=pt.useCallback(()=>{n(!1),o(null)},[]),l=pt.useMemo(()=>{var d;return(d=dm(e).source_component.getUsing({source_component_id:r.source_component_id}))==null?void 0:d.name},[e,r.source_component_id]),c=r.model_obj_url??r.model_stl_url,u=r.rotation?s7t(r.rotation.x*Math.PI/180,r.rotation.y*Math.PI/180,r.rotation.z*Math.PI/180):void 0;let A=null;return c?A=ut.jsx(r7t,{url:c,position:r.position?[r.position.x,r.position.y,r.position.z]:void 0,rotation:u,onHover:a,onUnhover:s,isHovered:t},r.cad_component_id):r.model_jscad?A=ut.jsx(jFe,{jscadPlan:r.model_jscad,rotationOffset:u,onHover:a,onUnhover:s,isHovered:t},r.cad_component_id):r.footprinter_string&&(A=ut.jsx(a7t,{positionOffset:r.position?[r.position.x,r.position.y,r.position.z]:void 0,rotationOffset:u,footprint:r.footprinter_string,onHover:a,onUnhover:s,isHovered:t})),ut.jsxs(ut.Fragment,{children:[A,t&&i?ut.jsx(ORe,{position:i,style:{fontFamily:"sans-serif",transform:"translate3d(1rem, 1rem, 0)",backgroundColor:"white",padding:"5px",borderRadius:"3px",pointerEvents:"none",userSelect:"none",WebkitUserSelect:"none",MozUserSelect:"none",msUserSelect:"none"},children:l??"<unknown>"}):null]})},l7t={version:"0.0.303"};typeof window<"u"&&(window.TSCI_MAIN_CAMERA_ROTATION=new nB(0,0,0));function c7t(r,e){const t=new C_().setFromEuler(new nB(r.x,r.y,r.z)),n=new Yn(0,0,1);return n.applyQuaternion(t),n.multiplyScalar(e)}var u7t=({})=>{const r=pt.useRef();return pt.useRef({lastRotation:new nB}),WN((e,t)=>{if(!r.current)return;const n=window.TSCI_MAIN_CAMERA_ROTATION,i=c7t(n,2);e.camera.position.copy(i),e.camera.lookAt(0,0,0)}),ut.jsxs("mesh",{ref:r,rotation:[Math.PI/2,0,0],children:[ut.jsx("boxGeometry",{args:[1,1,1]}),ut.jsx("meshStandardMaterial",{color:"white"}),ut.jsx(M9,{position:[0,0,.51],fontSize:.25,color:"black",children:"Front"}),ut.jsx(M9,{position:[0,0,-.51],fontSize:.25,color:"black",rotation:[0,Math.PI,0],children:"Back"}),ut.jsx(M9,{position:[.51,0,0],fontSize:.25,color:"black",rotation:[0,Math.PI/2,0],children:"Right"}),ut.jsx(M9,{position:[-.51,0,0],fontSize:.25,color:"black",rotation:[0,-Math.PI/2,0],children:"Left"}),ut.jsx(M9,{position:[0,.51,0],fontSize:.25,color:"black",rotation:[-Math.PI/2,0,0],children:"Top"}),ut.jsx(M9,{position:[0,-.51,0],fontSize:.25,color:"black",rotation:[Math.PI/2,0,0],children:"Bottom"}),ut.jsx("lineSegments",{args:[new LV(new BQ(1,1,1))],material:new cE({color:0,linewidth:2})})]})},A7t=()=>(WN(({camera:r})=>{window.TSCI_MAIN_CAMERA_ROTATION=r.rotation}),ut.jsx(ut.Fragment,{})),WFe=pt.forwardRef(({children:r,initialCameraPosition:e=[5,5,5],autoRotateDisabled:t,clickToInteractEnabled:n=!1,boardDimensions:i},o)=>{const[a,s]=pt.useState(!n),l=pt.useMemo(()=>{if(!i)return 10;const c=i.width??0,u=i.height??0,d=Math.max(c,u)*1.5;return d>10?d:10},[i]);return ut.jsxs("div",{style:{position:"relative",width:"100%",height:"100%"},children:[ut.jsx("div",{style:{position:"absolute",top:0,left:0,width:120,height:120},children:ut.jsxs(FRe,{camera:{up:[0,0,1],position:[1,1,1]},style:{zIndex:10},children:[ut.jsx("ambientLight",{intensity:Math.PI/2}),ut.jsx(u7t,{})]})}),ut.jsxs(FRe,{scene:{up:[0,0,1]},camera:{up:[0,0,1],position:e},children:[ut.jsx(A7t,{}),a&&ut.jsx(f1t,{autoRotate:!t,autoRotateSpeed:1}),ut.jsx("ambientLight",{intensity:Math.PI/2}),ut.jsx("pointLight",{position:[-10,-10,10],decay:0,intensity:Math.PI/4}),ut.jsx(p1t,{rotation:[Math.PI/2,0,0],infiniteGrid:!0,cellSize:1,sectionSize:l,args:[l,l]}),ut.jsx("object3D",{ref:o,children:r})]}),ut.jsxs("div",{style:{position:"absolute",right:24,bottom:24,fontFamily:"sans-serif",color:"white",WebkitTextStroke:"0.5px rgba(0, 0, 0, 0.5)",fontSize:11},children:["@",l7t.version]}),n&&!a&&ut.jsx("button",{type:"button",onClick:()=>s(!0),onKeyDown:c=>{(c.key==="Enter"||c.key===" ")&&s(!0)},style:{position:"absolute",inset:0,cursor:"pointer",zIndex:10,display:"flex",alignItems:"center",justifyContent:"center"},children:ut.jsx("div",{style:{backgroundColor:"rgba(0, 0, 0, 0.8)",color:"white",padding:"12px 24px",borderRadius:"8px",fontSize:"16px",fontFamily:"sans-serif",pointerEvents:"none"},children:"Click to Interact"})})]})}),qFe=r=>pt.useMemo(()=>{if(!r)return[];const e=new Lkt;return e.add(r),e.render(),e.getCircuitJson()},[r]);function d7t(r){return new Promise((e,t)=>{const n=new FileReader;n.onload=()=>{e(n.result)},n.onerror=t,n.readAsDataURL(r)})}var f7t=r=>{const[e,t]=pt.useState([]),[n,i]=pt.useState(!0);return pt.useEffect(()=>{if(!r)return;(async()=>{i(!0);const s=(Array.isArray(r)?r:[r]).map(async l=>{const c=Xkt.serialize({binary:!0},[l]),u=new Blob(c);return{stlUrl:await d7t(u),color:l.color}});try{const l=await Promise.all(s);t(l)}catch(l){console.error("Error generating STLs:",l),t([])}finally{i(!1)}})()},[r]),{stls:e,loading:n}},h7t=zI(CR()),p7t=zI(QT()),xm=.01,vE={copper:[.9,.6,.2],fr4Green:[5/255,163/255,46/255],fr4GreenSolderWithMask:[0/255,152/255,19/255],fr1Copper:[.8,.4,.2],fr1CopperSolderWithMask:[.9,.6,.2]},Fw=.001,PS=32,g7t=.035,u7=50,yle={fr1:vE.fr1Copper,fr4:vE.fr4Green},ZFe={fr1:vE.fr1CopperSolderWithMask,fr4:vE.fr4GreenSolderWithMask},m7t=zI(o7()),y7t=zI(CR()),v7t=zI(l7()),XFe=r=>{let e=0;for(let n=0;n<r.length;n++){const i=(n+1)%r.length;e+=r[n][0]*r[i][1],e-=r[i][0]*r[n][1]}return e/2<=0},$Fe=(r,e=1.2)=>{const{outline:t}=r;let n=t.map(a=>[a.x,a.y]);XFe(n)&&(n=n.reverse());const i=(0,y7t.polygon)({points:n});let o=(0,m7t.extrudeLinear)({height:e},i);return o=(0,v7t.translate)([0,0,-e/2],o),o},I7t=r=>{const e=dm(r).pcb_board.list()[0];if(!e)return console.warn("No pcb_board found for simplified geometry"),[];let t;const n=1.2;e.outline&&e.outline.length>0?t=$Fe({outline:e.outline},n):t=(0,h7t.cuboid)({size:[e.width,e.height,n],center:[e.center.x,e.center.y,0]});const i=yle[e.material]??vE.fr4Green;return[(0,p7t.colorize)(i,t)]},K9=zI(l7()),Ax=zI(CR()),ER=zI(QT()),j9=zI(dle()),fv=zI(CR()),A7=zI(QT()),PB=zI(dle()),GC=.05,eLe=(r,e)=>{if(r.shape||(r.shape="circle"),r.shape==="circle")return(0,A7.colorize)(vE.copper,(0,PB.subtract)((0,PB.union)((0,fv.cylinder)({center:[r.x,r.y,0],radius:r.hole_diameter/2,height:e.pcbThickness}),(0,fv.cylinder)({center:[r.x,r.y,e.pcbThickness/2+GC/2+xm],radius:r.outer_diameter/2,height:GC}),(0,fv.cylinder)({center:[r.x,r.y,-e.pcbThickness/2-GC/2-xm],radius:r.outer_diameter/2,height:GC})),(0,fv.cylinder)({center:[r.x,r.y,0],radius:r.hole_diameter/2-xm,height:1.5})));if(r.shape==="circular_hole_with_rect_pad"){const t=r.rect_pad_width||r.hole_diameter,n=r.rect_pad_height||r.hole_diameter;return(0,A7.colorize)(vE.copper,(0,PB.subtract)((0,PB.union)((0,fv.cuboid)({center:[r.x,r.y,1.2/2],size:[t,n,GC]}),(0,fv.cuboid)({center:[r.x,r.y,-1.2/2],size:[t,n,GC]}),(0,fv.cylinder)({center:[r.x,r.y,0],radius:r.hole_diameter/2,height:1.2})),(0,fv.cylinder)({center:[r.x,r.y,0],radius:Math.max(r.hole_diameter/2-xm,.01),height:1.5})))}if(r.shape==="pill"){const t=r.hole_height>r.hole_width,n=t?r.hole_height:r.hole_width,i=t?r.hole_width:r.hole_height,o=t?r.outer_height||i+.2:r.outer_width||n+.2,a=t?r.outer_width||n+.2:r.outer_height||i+.2,s=i/2,l=a/2,c=Math.abs(n-i),u=Math.abs(o-a),A=(0,fv.cuboid)({center:[r.x,r.y,0],size:t?[i,c,e.pcbThickness]:[c,i,e.pcbThickness]}),d=(0,fv.cylinder)({center:t?[r.x,r.y-c/2,0]:[r.x-c/2,r.y,0],radius:s,height:e.pcbThickness}),f=(0,fv.cylinder)({center:t?[r.x,r.y+c/2,0]:[r.x+c/2,r.y,0],radius:s,height:e.pcbThickness}),m=(0,PB.union)(A,d,f),C=e.pcbThickness/2+GC/2+xm,E=(0,fv.cuboid)({center:[r.x,r.y,C],size:t?[a,u,GC]:[u,a,GC]}),_=(0,fv.cylinder)({center:t?[r.x,r.y-u/2,C]:[r.x-u/2,r.y,C],radius:l,height:GC}),x=(0,fv.cylinder)({center:t?[r.x,r.y+u/2,C]:[r.x+u/2,r.y,C],radius:l,height:GC}),w=(0,PB.union)(E,_,x),P=-e.pcbThickness/2-GC/2-xm,L=(0,fv.cuboid)({center:[r.x,r.y,P],size:t?[a,u,GC]:[u,a,GC]}),O=(0,fv.cylinder)({center:t?[r.x,r.y-u/2,P]:[r.x-u/2,r.y,P],radius:l,height:GC}),H=(0,fv.cylinder)({center:t?[r.x,r.y+u/2,P]:[r.x+u/2,r.y,P],radius:l,height:GC}),K=(0,PB.union)(L,O,H),q=(0,fv.cuboid)({center:[r.x,r.y,0],size:t?[i-2*xm,c,e.pcbThickness+2*xm]:[c,i-2*xm,e.pcbThickness+2*xm]}),Y=(0,fv.cylinder)({center:t?[r.x,r.y-c/2,0]:[r.x-c/2,r.y,0],radius:s-xm,height:e.pcbThickness+2*xm}),se=(0,fv.cylinder)({center:t?[r.x,r.y+c/2,0]:[r.x+c/2,r.y,0],radius:s-xm,height:e.pcbThickness+2*xm}),ie=(0,PB.union)(q,Y,se);return(0,A7.colorize)(vE.copper,(0,PB.subtract)((0,PB.union)(m,w,K),ie))}if(r.shape==="pill_hole_with_rect_pad"){const t=r.hole_height>r.hole_width,n=t?r.hole_height:r.hole_width,i=t?r.hole_width:r.hole_height,o=i/2,a=Math.abs(n-i),s=r.rect_pad_width||n+.2,l=r.rect_pad_height||i+.2,c=(0,fv.cuboid)({center:[r.x,r.y,0],size:t?[i,a,1.2]:[a,i,1.2]}),u=(0,fv.cylinder)({center:t?[r.x,r.y-a/2,0]:[r.x-a/2,r.y,0],radius:o,height:1.2}),A=(0,fv.cylinder)({center:t?[r.x,r.y+a/2,0]:[r.x+a/2,r.y,0],radius:o,height:1.2}),d=(0,fv.cuboid)({center:[r.x,r.y,1.2/2],size:[s,l,GC]}),f=(0,fv.cuboid)({center:[r.x,r.y,-1.2/2],size:[s,l,GC]}),m=(0,PB.union)((0,fv.cuboid)({center:[r.x,r.y,0],size:t?[i-GC,a,1.5]:[a,i-GC,1.5]}),(0,fv.cylinder)({center:t?[r.x,r.y-a/2,0]:[r.x-a/2,r.y,0],radius:o-GC,height:1.5}),(0,fv.cylinder)({center:t?[r.x,r.y+a/2,0]:[r.x+a/2,r.y,0],radius:o-GC,height:1.5}));return(0,A7.colorize)(vE.copper,(0,PB.subtract)((0,PB.union)(c,u,A,d,f),m))}else throw new Error(`Unsupported plated hole shape: ${r.shape}`)},d7=zI(o7()),tLe=zI(hle()),C7t=zI(ale());function nLe(r,e){return Array.isArray(e)?[r.a*e[0]+r.c*e[1]+r.e,r.b*e[0]+r.d*e[1]+r.f]:{x:r.a*e.x+r.c*e.y+r.e,y:r.b*e.x+r.d*e.y+r.f}}function qQ(r,e=0){return{a:1,c:0,e:r,b:0,d:1,f:e}}function rLe(...r){r=Array.isArray(r[0])?r[0]:r;const e=(t,n)=>({a:t.a*n.a+t.c*n.b,c:t.a*n.c+t.c*n.d,e:t.a*n.e+t.c*n.f+t.e,b:t.b*n.a+t.d*n.b,d:t.b*n.c+t.d*n.d,f:t.b*n.e+t.d*n.f+t.f});switch(r.length){case 0:throw new Error("no matrices provided");case 1:return r[0];case 2:return e(r[0],r[1]);default:{const[t,n,...i]=r,o=e(t,n);return rLe(o,...i)}}}function iLe(...r){return rLe(...r)}var{cos:E7t,sin:_7t}=Math;function oLe(r,e,t){const n=E7t(r),i=_7t(r);return{a:n,c:-i,e:0,b:i,d:n,f:0}}function x7t(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function f7(r,e,t,n){var i=Error.call(this,r);return Object.setPrototypeOf&&Object.setPrototypeOf(i,f7.prototype),i.expected=e,i.found=t,i.location=n,i.name="SyntaxError",i}x7t(f7,Error);function vle(r,e,t){return t=t||" ",r.length>e?r:(e-=r.length,t+=t.repeat(e),r+t.slice(0,e))}f7.prototype.format=function(r){var e="Error: "+this.message;if(this.location){var t=null,n;for(n=0;n<r.length;n++)if(r[n].source===this.location.source){t=r[n].text.split(/\r\n|\n|\r/g);break}var i=this.location.start,o=this.location.source&&typeof this.location.source.offset=="function"?this.location.source.offset(i):i,a=this.location.source+":"+o.line+":"+o.column;if(t){var s=this.location.end,l=vle("",o.line.toString().length," "),c=t[i.line-1],u=i.line===s.line?s.column:c.length+1,A=u-i.column||1;e+=`
13080
13080
  --> `+a+`
13081
13081
  `+l+` |
13082
13082
  `+o.line+" | "+c+`
@@ -13306,7 +13306,7 @@ ${L.type}: ${ie}
13306
13306
  50% { opacity: 0.2; }
13307
13307
  100% { opacity: 0.6; }
13308
13308
  }
13309
- `,i.appendChild(w)}})}};o();const a=new MutationObserver(o);return a.observe(i,{childList:!0,subtree:!1,characterData:!1}),()=>{a.disconnect()}},[r,t,e,n])},JKt=uC("schematic-viewer"),WKt=()=>{uC.enable("schematic-viewer*")},qKt=JKt,ZKt=r=>{const[e,t]=pt.useState(0),[n,i]=pt.useState(0);return pt.useEffect(()=>{if(!r.current)return;const o=()=>{var l;const s=(l=r.current)==null?void 0:l.getBoundingClientRect();t((s==null?void 0:s.width)||0),i((s==null?void 0:s.height)||0)};o();const a=new ResizeObserver(o);return a.observe(r.current),window.addEventListener("resize",o),()=>{a.disconnect(),window.removeEventListener("resize",o)}},[]),{containerWidth:e,containerHeight:n}},XKt=qKt.extend("useComponentDragging"),$Kt=({onEditEvent:r,editEvents:e=[],circuitJson:t,cancelDrag:n,svgToScreenProjection:i,realToSvgProjection:o,enabled:a=!1,snapToGrid:s=!1})=>{const[l,c]=pt.useState(null),u=Ku(o,i),A=pt.useRef(null),d=pt.useRef(null),f=pt.useRef(new Map);pt.useEffect(()=>{e.forEach(_=>{"edit_event_type"in _&&_.edit_event_type==="edit_schematic_component_location"&&!_.in_progress&&f.current.set(_.schematic_component_id,{..._.new_center})})},[e]);const m=pt.useCallback(_=>{if(!a)return;const w=_.target.closest('[data-circuit-json-type="schematic_component"]');if(!w)return;const P=w.getAttribute("data-schematic-component-id");if(!P)return;n&&n();const L=dm(t).schematic_component.get(P);if(!L)return;A.current={x:_.clientX,y:_.clientY};let O;const H=f.current.get(P);if(H)O={...H};else{const q=J6e({editEvents:e,schematic_component_id:P});O={x:L.center.x+q.x,y:L.center.y+q.y},f.current.set(P,{...O})}const K={edit_event_id:Math.random().toString(36).substr(2,9),edit_event_type:"edit_schematic_component_location",schematic_component_id:P,original_center:O,new_center:{...O},in_progress:!0,created_at:Date.now(),_element:w};d.current=K,c(K)},[n,a,t,e]),C=pt.useCallback(_=>{if(!d.current||!A.current)return;const x={x:_.clientX-A.current.x,y:_.clientY-A.current.y},w={x:x.x/u.a,y:x.y/u.d};let P={x:d.current.original_center.x+w.x,y:d.current.original_center.y+w.y};if(s){const O=H=>Math.round(H*10)/10;P={x:O(P.x),y:O(P.y)}}const L={...d.current,new_center:P};d.current=L,c(L)},[u,s]),E=pt.useCallback(()=>{if(!d.current)return;const _={...d.current,in_progress:!1};f.current.set(_.schematic_component_id,{..._.new_center}),XKt("handleMouseUp calling onEditEvent with new edit event",{newEditEvent:_}),r&&r(_),d.current=null,A.current=null,c(null)},[r]);return pt.useEffect(()=>(window.addEventListener("mousemove",C),window.addEventListener("mouseup",E),()=>{window.removeEventListener("mousemove",C),window.removeEventListener("mouseup",E)}),[C,E]),{handleMouseDown:m,isDragging:!!d.current,activeEditEvent:l}},hce={schematicEditIcon:50,schematicGridIcon:49,clickToInteractOverlay:100},ejt=({onClick:r,active:e})=>ut.jsx("div",{onClick:r,style:{position:"absolute",top:"16px",right:"16px",backgroundColor:e?"#4CAF50":"#fff",color:e?"#fff":"#000",padding:"8px",borderRadius:"4px",cursor:"pointer",boxShadow:"0 2px 4px rgba(0,0,0,0.1)",display:"flex",alignItems:"center",gap:"4px",zIndex:hce.schematicEditIcon},children:ut.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[ut.jsx("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),ut.jsx("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})]})}),tjt=({onClick:r,active:e})=>ut.jsx("div",{onClick:r,style:{position:"absolute",top:"56px",right:"16px",backgroundColor:e?"#4CAF50":"#fff",color:e?"#fff":"#000",padding:"8px",borderRadius:"4px",cursor:"pointer",boxShadow:"0 2px 4px rgba(0,0,0,0.1)",display:"flex",alignItems:"center",gap:"4px",zIndex:hce.schematicGridIcon},children:ut.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:ut.jsx("path",{d:"M3 3h7v7H3zM14 3h7v7h-7zM3 14h7v7H3zM14 14h7v7h-7z"})})}),njt=({circuitJson:r,containerStyle:e,editEvents:t=[],onEditEvent:n,defaultEditMode:i=!1,debugGrid:o=!1,editingEnabled:a=!1,debug:s=!1,clickToInteractEnabled:l=!1,colorOverrides:c})=>{s&&WKt();const[u,A]=pt.useState(i),[d,f]=pt.useState(!0),[m,C]=pt.useState(!l),E=pt.useRef(null),_=pt.useRef(null),x=Ne=>{const rt=Ne.touches[0];_.current={x:rt.clientX,y:rt.clientY}},w=Ne=>{const rt=Ne.changedTouches[0],et=_.current;if(!et)return;const ft=Math.abs(rt.clientX-et.x),_t=Math.abs(rt.clientY-et.y);ft<10&&_t<10&&(Ne.preventDefault(),C(!0)),_.current=null},[P,L]=pt.useState([]),O=pt.useRef(r),H=Ne=>`${(Ne==null?void 0:Ne.length)||0}_${(Ne==null?void 0:Ne.editCount)||0}`;pt.useEffect(()=>{const Ne=H(r),rt=H(O.current);Ne!==rt&&(L([]),O.current=r)},[r]);const{ref:K,cancelDrag:q,transform:Y}=j6e({onSetTransform(Ne){E.current&&(E.current.style.transform=gQ(Ne))},enabled:m}),{containerWidth:se,containerHeight:ie}=ZKt(K),de=pt.useMemo(()=>!se||!ie?"":uce(r,{width:se,height:ie||720,grid:o?{cellSize:1,labelCells:!0}:void 0,colorOverrides:c}),[r,se,ie]),Ce=pt.useMemo(()=>{const Ne=de.match(/<svg[^>]*style="[^"]*background-color:\s*([^;\"]+)/i);return(Ne==null?void 0:Ne[1])??"transparent"},[de]),xe=pt.useMemo(()=>{var rt;if(!de)return Ny();const Ne=(rt=de.match(/data-real-to-screen-transform="([^"]+)"/))==null?void 0:rt[1];try{return uY(Ne)}catch(et){return console.error(et),Ny()}},[de]),fe=Ne=>{L(rt=>[...rt,Ne]),n&&n(Ne)},Ie=pt.useMemo(()=>[...t,...P],[t,P]),{handleMouseDown:ve,isDragging:Qe,activeEditEvent:De}=$Kt({onEditEvent:fe,cancelDrag:q,realToSvgProjection:xe,svgToScreenProjection:Y,circuitJson:r,editEvents:Ie,enabled:u&&m,snapToGrid:d});KKt({svgDivRef:E,editEvents:Ie,realToSvgProjection:xe,svgToScreenProjection:Y,activeEditEvent:De}),jKt({svgDivRef:E,circuitJson:r,activeEditEvent:De,editEvents:Ie});const Fe=pt.useMemo(()=>ut.jsx("div",{ref:E,style:{pointerEvents:l?m?"auto":"none":"auto",transformOrigin:"0 0"},dangerouslySetInnerHTML:{__html:de}}),[de,m,l]);return ut.jsxs("div",{ref:K,style:{position:"relative",backgroundColor:Ce,overflow:"hidden",cursor:Qe?"grabbing":l&&!m?"pointer":"grab",minHeight:"300px",...e},onMouseDown:Ne=>{if(l&&!m){Ne.preventDefault(),Ne.stopPropagation();return}ve(Ne)},onMouseDownCapture:Ne=>{if(l&&!m){Ne.preventDefault(),Ne.stopPropagation();return}},onTouchStart:x,onTouchEnd:w,children:[!m&&l&&ut.jsx("div",{onClick:Ne=>{Ne.preventDefault(),Ne.stopPropagation(),C(!0)},style:{position:"absolute",inset:0,cursor:"pointer",zIndex:hce.clickToInteractOverlay,display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"all",touchAction:"pan-x pan-y pinch-zoom"},children:ut.jsx("div",{style:{backgroundColor:"rgba(0, 0, 0, 0.8)",color:"white",padding:"12px 24px",borderRadius:"8px",fontSize:"16px",fontFamily:"sans-serif",pointerEvents:"none"},children:typeof window<"u"&&("ontouchstart"in window||navigator.maxTouchPoints>0)?"Touch to Interact":"Click to Interact"})}),a&&ut.jsx(ejt,{active:u,onClick:()=>A(!u)}),a&&u&&ut.jsx(tjt,{active:d,onClick:()=>f(!d)}),Fe]})},rjt=r=>{const[e,t]=pt.useState(0),[n,i]=pt.useState(0);return pt.useEffect(()=>{if(!r.current)return;const o=()=>{var l;const s=(l=r.current)==null?void 0:l.getBoundingClientRect();t((s==null?void 0:s.width)||0),i((s==null?void 0:s.height)||0)};o();const a=new ResizeObserver(o);return a.observe(r.current),window.addEventListener("resize",o),()=>{a.disconnect(),window.removeEventListener("resize",o)}},[]),{containerWidth:e,containerHeight:n}};uC("assembly-viewer");var ijt=()=>{uC.enable("assembly-viewer*")},ojt=({circuitJson:r,containerStyle:e,debugGrid:t=!1,debug:n=!1})=>{n&&ijt();const i=pt.useRef(null),{ref:o}=j6e({onSetTransform(u){i.current&&(i.current.style.transform=gQ(u))}}),{containerWidth:a,containerHeight:s}=rjt(o),l=pt.useMemo(()=>!a||!s?"":U6e(r,{width:a,height:s||720}),[r,a,s]);pt.useMemo(()=>{var A;if(!l)return Ny();const u=(A=l.match(/data-real-to-screen-transform="([^"]+)"/))==null?void 0:A[1];try{return uY(u)}catch(d){return console.error(d),Ny()}},[l]);const c=pt.useMemo(()=>ut.jsx("div",{ref:i,style:{pointerEvents:"auto",transformOrigin:"0 0"},dangerouslySetInnerHTML:{__html:l}}),[l]);return ut.jsx("div",{ref:o,style:{position:"relative",backgroundColor:"#F5F1ED",overflow:"hidden",minHeight:"300px",...e},children:c})};const W6e=["Initialize a tscircuit project using [tsci init](https://github.com/tscircuit/cli) before adding components.","Define reusable modules with cached routes using [<subcircuit />](https://docs.tscircuit.com/elements/subcircuit)","Run `tsci dev` on the command line to preview your boards before export",'Use units like mm or mils consistently across your designs (e.g. pcbX="10mm")',"Quickly set footprints with the [footprint prop](https://docs.tscircuit.com/footprints/footprinter-strings)","Check out the guide on [ordering prototypes](https://docs.tscircuit.com/building-electronics/ordering-prototypes)","Use [net labels](https://docs.tscircuit.com/elements/net) and [group elements](https://docs.tscircuit.com/elements/group) to organize complex schematics.","You can manually drag components on the PCB and Schematic using [manual edits](https://docs.tscircuit.com/guides/manual-edits)","Every tscircuit module can export to [Circuit JSON](https://github.com/tscircuit/circuit-json), Gerbers, Pick'n'Place CSV files, Bill of Materials CSV and more","You can import components from [JLCPCB](https://docs.tscircuit.com/guides/importing-modules-and-chips/importing-from-jlcpcb) or [KiCad](https://docs.tscircuit.com/guides/importing-modules-and-chips/importing-from-kicad)","Any module you push to the [registry](https://tscircuit.com/trending) will have [simple image urls](https://docs.tscircuit.com/web-apis/image-generation-api) you can use display images on a website","The default [Parts Engine](https://docs.tscircuit.com/guides/platform-configuration) will automatically find parts from common vendors for your BOM",'[Pin selectors](https://docs.tscircuit.com/guides/using-sel-references) are similar to CSS selectors, ".R1 > .pin1" means "connect to the first pin of the component R1"',"You can use the [sel](https://docs.tscircuit.com/guides/using-sel-references) object to select pins in a type-safe way","Publish modules via the [registry](https://tscircuit.com/trending) for working with a team or sharing your work","[Explore tutorials](https://docs.tscircuit.com/category/tutorials) for real-world circuit design examples.","Upload your Circuit JSON to [circuitjson.com](https://circuitjson.com) for a quick preview.","You can display Circuit JSON in 3D, PCB or Schematic mode with the [<CircuitJsonPreview />](https://docs.tscircuit.com/elements/circuitjsonpreview) React component","Use a [<group />](https://docs.tscircuit.com/elements/group) element to move multiple components at once in a schematic or PCB layout.","Check out the [GitHub Discussions page](https://github.com/tscircuit/tscircuit/discussions) to upvote features","You can customize the autorouter using the [autorouter prop](https://docs.tscircuit.com/elements/board#setting-the-autorouter)","Use the [<constraint />](https://docs.tscircuit.com/footprints/constraint) element to enforce geometric relationships in PCB designs.","Join the [Discord server](https://tscircuit.com/join) to discuss issues and get help directly from the community."],ajt=(()=>{let r=W6e[Math.floor(Math.random()*W6e.length)];return r=r.replace(/</g,"&lt;"),r=r.replace(/>/g,"&gt;"),r=r.replace(new RegExp('(?<!href=")(?<!\\()(?<!\\]\\()(https?:\\/\\/[^\\s\\)\\]]+)',"g"),(e,t)=>`<a class="rf-text-blue-500 rf-underline" href="${e}" target="_blank">${e}</a>`),r=r.replace(/\[([^\]]+)\]\((https?:\/\/[^\)]+)\)/g,'<a class="rf-text-blue-500 rf-underline" href="$2" target="_blank">$1</a>'),r})(),X9=({onRunClicked:r})=>ut.jsxs("div",{className:"rf-flex rf-flex-col rf-items-center rf-justify-center rf-h-full rf-bg-gray-50 rf-text-gray-500 rf-p-4",children:[ut.jsx(COt,{className:"rf-size-14 rf-mb-4"}),ut.jsxs("p",{className:"rf-text-md rf-break-words rf-max-w-xl rf-text-center",children:["Tip: ",ut.jsx("span",{dangerouslySetInnerHTML:{__html:ajt}})]}),r&&ut.jsxs(ZQ,{className:"rf-mt-4 rf-bg-blue-600 rf-hover:bg-blue-500",onClick:r,children:["Run Code",ut.jsx(_Ot,{className:"rf-w-3 rf-h-3 rf-ml-2"})]})]}),z7=({text:r,onClick:e})=>ut.jsx("span",{className:"rf-cursor-pointer rf-underline rf-text-blue-600 rf-mx-2",onClick:e,children:r}),H7=r=>{var e;return ut.jsxs("div",{className:"rf-leading-5",children:[ut.jsx("div",{className:"rf-py-2 rf-font-bold",children:r.column.name}),ut.jsx("div",{children:((e=r.field)==null?void 0:e.call(r))??ut.jsx("input",{type:"text",className:"rf-border rf-rounded rf-p-1 rf-w-full",onChange:t=>{var n;(n=r.onTextChange)==null||n.call(r,t.target.value)}})})]})},sjt=({open:r,children:e,title:t,onClose:n})=>r?ut.jsx("div",{className:"rf-fixed rf-inset-0 rf-bg-black rf-bg-opacity-50 rf-flex rf-justify-center rf-items-center rf-z-50",onClick:n,children:ut.jsxs("div",{className:"rf-bg-white rf-p-5 rf-rounded-lg rf-relative rf-w-11/12 rf-max-w-2xl",onClick:i=>{i.preventDefault(),i.stopPropagation()},children:[ut.jsx("h2",{className:"rf-mt-0 rf-text-md rf-pb-4",children:t}),ut.jsx("button",{type:"button",className:"rf-absolute rf-top-2 rf-right-4 rf-text-2xl rf-font-bold",onClick:n,children:"×"}),e]})}):null,ljt=({elements:r})=>{const[e,t]=pt.useState({open:!1}),[n,i]=pt.useReducer((u,A)=>({...u,...A}),{}),o=[...new Set(r.map(u=>u.type))],a=r.map(u=>{const A=u[`${u.type}_id`],d=Object.fromEntries(Object.entries(u).filter(([m])=>!(m===`${u.type}_id`||!m.endsWith("_id")))),f=Object.fromEntries(Object.entries(u).filter(([m])=>!m.endsWith("_id")));return{primary_id:A,other_ids:d,...f,_og_elm:u}}),s=a.map(u=>{let A="";const d=f=>{const m=Object.keys(f.other_ids).find(_=>_.startsWith("source_"));if(!m)return`.${f.name}`;const C=m.slice(0,-3),E=a.find(_=>_.type===C&&_.primary_id===f.other_ids[m]);return E?"name"in E?`${d(E)} > .${f.name}`:`#${E.primary_id} > .${f.name}`:`??? > .${f.name}`};return"name"in u&&(A=d(u)),{...u,selector_path:A}}),l=[{key:"primary_id",name:"primary_id",renderCell:u=>ut.jsxs("div",{className:"rf-flex rf-items-center",children:[ut.jsx(z7,{text:u.primary_id,onClick:()=>i({focused_id:u.primary_id,id_search:void 0,selector_search:void 0})}),ut.jsx("span",{className:"rf-flex-grow"}),ut.jsx(z7,{text:"(JSON)",onClick:()=>t({open:!0,element:u._og_elm,title:u.primary_id})})]}),renderHeaderCell:u=>ut.jsx(H7,{column:u,onTextChange:A=>i({id_search:A}),field:n.focused_id?()=>ut.jsxs("div",{children:["Focus:"," ",ut.jsx("span",{className:"rf-underline",children:n.focused_id}),ut.jsx(z7,{text:"(unfocus)",onClick:()=>i({focused_id:void 0})})]}):void 0})},{key:"type",name:"type",renderHeaderCell:u=>ut.jsx(H7,{column:u,field:()=>ut.jsxs("select",{onChange:A=>i({component_type_filter:A.target.value}),className:"rf-border rf-rounded rf-p-1 rf-w-full",children:[ut.jsx("option",{value:"any",children:"any"},"any"),ut.jsx("option",{value:"source",children:"source"},"source"),ut.jsx("option",{value:"source/pcb",children:"source/pcb"},"source/pcb"),ut.jsx("option",{value:"source/schematic",children:"source/schematic"},"source/schematic"),o.map(A=>ut.jsx("option",{value:A,children:A},A))]})})},{key:"name",name:"name",renderHeaderCell:u=>ut.jsx(H7,{column:u,onTextChange:A=>i({name_search:A})})},{key:"selector_path",name:"selector_path",renderHeaderCell:u=>ut.jsx(H7,{column:u,onTextChange:A=>i({selector_search:A})})},{key:"other_ids",name:"other_ids",renderCell:u=>ut.jsx("div",{className:"rf-space-x-2",children:Object.entries(u.other_ids).map(([A,d])=>ut.jsx(z7,{text:d,onClick:()=>i({focused_id:d})},d))})}],c=s.filter(u=>{var A,d;return n.name_search?(d=(A=u.name)==null?void 0:A.toLowerCase())==null?void 0:d.includes(n.name_search.toLowerCase()):!0}).filter(u=>{var A;return!n.component_type_filter||n.component_type_filter==="any"?!0:n.component_type_filter==="source"?u.type.startsWith("source_"):n.component_type_filter==="source/pcb"?u.type.startsWith("source_")||u.type.startsWith("pcb_"):n.component_type_filter==="source/schematic"?u.type.startsWith("source_")||u.type.startsWith("schematic_"):(A=u.type)==null?void 0:A.includes(n.component_type_filter)}).filter(u=>n.selector_search?n.selector_search.split(" ").filter(d=>d.length>0).every(d=>{var f;return(f=u.selector_path)==null?void 0:f.includes(d)}):!0).filter(u=>{var A;return n.id_search?(A=u.primary_id)==null?void 0:A.includes(n.id_search):!0}).filter(u=>!!(!n.focused_id||u.primary_id===n.focused_id||Object.values(u.other_ids).includes(n.focused_id)));return ut.jsxs("div",{className:"rf-font-mono rf-text-xs rf-bg-white",children:[ut.jsx("div",{className:"rf-overflow-x-auto",children:ut.jsxs("table",{className:"rf-table-auto rf-w-full rf-text-left",children:[ut.jsx("thead",{children:ut.jsx("tr",{children:l.map(u=>ut.jsx("th",{className:"rf-px-4 rf-py-2 rf-border-b",children:u.renderHeaderCell?u.renderHeaderCell(u):u.name},u.key))})}),ut.jsx("tbody",{children:c.map((u,A)=>ut.jsx("tr",{className:"rf-hover:bg-gray-100",children:l.map(d=>ut.jsx("td",{className:"rf-px-4 rf-py-2 rf-border-b",children:d.renderCell?d.renderCell(u):u[d.key]},d.key))},A))})]})}),ut.jsx(sjt,{open:e.open,onClose:()=>t({open:!1}),title:e.open?e.title:"",children:ut.jsx("div",{className:"rf-bg-gray-800 rf-p-3 rf-text-white rf-rounded",children:ut.jsx("pre",{className:"rf-whitespace-pre-wrap",children:e.open?JSON.stringify(e.element,null,2):""})})})]})},cjt=(r,e)=>r==="jlcpcb"?ut.jsx("a",{className:"rf-underline rf-text-blue-500",target:"_blank",rel:"noreferrer",href:`https://jlcpcb.com/partdetail/${e}`,children:e}):e,ujt=({circuitJson:r})=>{const e=r.filter(n=>n.type==="source_component"),t=new Set;for(const n of e)if(n.supplier_part_numbers)for(const i of Object.keys(n.supplier_part_numbers))t.add(i);return ut.jsx("div",{className:"rf-overflow-x-auto",children:ut.jsxs("table",{className:"rf-w-full rf-text-left rf-text-sm",children:[ut.jsx("thead",{children:ut.jsxs("tr",{className:"rf-border-b",children:[ut.jsx("th",{className:"rf-p-2",children:"Name"}),Array.from(t).map(n=>ut.jsx("th",{className:"rf-p-2 rf-capitalize",children:n},n))]})}),ut.jsx("tbody",{children:e.map(n=>ut.jsxs("tr",{className:"rf-border-b",children:[ut.jsx("td",{className:"rf-p-2",children:n.name}),Array.from(t).map(i=>{var o,a;return ut.jsx("td",{className:"rf-p-2",children:cjt(i,((a=(o=n.supplier_part_numbers)==null?void 0:o[i])==null?void 0:a[0])||"")},i)})]},n.source_component_id))})]})})};function q6e([r,e],[t,n],{lineThickness:i=0}={}){return i===0?Z6e(r,e,t,n):Ajt(r,e,t,n)<=i}function Z6e(r,e,t,n){const i=Y7(r,e,t),o=Y7(r,e,n),a=Y7(t,n,r),s=Y7(t,n,e);return!!(i!==o&&a!==s||i===0&&V7(r,t,e)||o===0&&V7(r,n,e)||a===0&&V7(t,r,n)||s===0&&V7(t,e,n))}function Y7(r,e,t){const n=(e.y-r.y)*(t.x-e.x)-(e.x-r.x)*(t.y-e.y);return n===0?0:n>0?1:2}function V7(r,e,t){return e.x<=Math.max(r.x,t.x)&&e.x>=Math.min(r.x,t.x)&&e.y<=Math.max(r.y,t.y)&&e.y>=Math.min(r.y,t.y)}function Ajt(r,e,t,n){if(r.x===e.x&&r.y===e.y)return $9(r,t,n);if(t.x===n.x&&t.y===n.y)return $9(t,r,e);if(Z6e(r,e,t,n))return 0;const i=[$9(r,t,n),$9(e,t,n),$9(t,r,e),$9(n,r,e)];return Math.min(...i)}function $9(r,e,t){const n=(t.x-e.x)**2+(t.y-e.y)**2;if(n===0)return qT(r,e);let i=((r.x-e.x)*(t.x-e.x)+(r.y-e.y)*(t.y-e.y))/n;i=Math.max(0,Math.min(1,i));const o={x:e.x+i*(t.x-e.x),y:e.y+i*(t.y-e.y)};return qT(r,o)}function qT(r,e){const t=r.x-e.x,n=r.y-e.y;return Math.sqrt(t*t+n*n)}var djt=(r,e)=>{const t={x:e.x-r.x,y:e.y-r.y},n=Math.sqrt(t.x**2+t.y**2);return{x:t.x/n,y:t.y/n}},fjt=r=>{switch(r){case"up":return{x:0,y:1};case"down":return{x:0,y:-1};case"left":return{x:-1,y:0};case"right":return{x:1,y:0}}},hjt=Object.defineProperty,pjt=(r,e)=>{for(var t in e)hjt(r,t,{get:e[t],enumerable:!0})},X6e={};pjt(X6e,{Battery:()=>RJt,Board:()=>dJt,Capacitor:()=>hJt,Chip:()=>I7e,Constraint:()=>EJt,Crystal:()=>GJt,Cutout:()=>DJt,Diode:()=>pJt,FabricationNotePath:()=>_Jt,FabricationNoteText:()=>xJt,Footprint:()=>Fjt,Fuse:()=>gJt,Group:()=>bce,Hole:()=>c7e,Inductor:()=>kJt,Jumper:()=>mJt,Keepout:()=>Ice,Led:()=>yJt,Mosfet:()=>zJt,Net:()=>o7e,NetAlias:()=>bJt,NormalComponent:()=>L1,PcbTrace:()=>l7e,PinHeader:()=>NJt,PlatedHole:()=>vce,Port:()=>Hw,Potentiometer:()=>FJt,PowerSource:()=>vJt,PrimitiveComponent:()=>aI,PushButton:()=>LJt,Renderable:()=>$6e,Resistor:()=>IJt,Resonator:()=>PJt,SchematicBox:()=>VJt,SchematicText:()=>YJt,SilkscreenCircle:()=>SJt,SilkscreenLine:()=>QJt,SilkscreenPath:()=>s7e,SilkscreenRect:()=>wJt,SilkscreenText:()=>Cce,SmtPad:()=>yce,Subcircuit:()=>BJt,Switch:()=>HJt,Trace:()=>Yw,TraceHint:()=>y7e,Transistor:()=>OJt,Via:()=>MJt});var gjt=uC("tscircuit:renderable"),eM=["ReactSubtreesRender","PcbFootprintStringRender","InitializePortsFromChildren","CreateNetsFromProps","CreateTracesFromProps","CreateTraceHintsFromProps","SourceRender","SourceParentAttachment","PortMatching","OptimizeSelectorCache","SourceTraceRender","SourceAddConnectivityMapKey","SchematicComponentRender","SchematicPortRender","SchematicPrimitiveRender","SchematicLayout","SchematicTraceRender","SchematicReplaceNetLabelsWithSymbols","PcbComponentRender","PcbPrimitiveRender","PcbFootprintLayout","PcbPortRender","PcbPortAttachment","PcbLayout","PcbComponentSizeCalculation","PcbBoardAutoSize","PcbTraceHintRender","PcbTraceRender","PcbRouteNetIslands","PcbDesignRuleChecks","CadModelRender","PartsEngineRender"],mjt=0,$6e=class{constructor(r){Ye(this,"renderPhaseStates");Ye(this,"shouldBeRemoved",!1);Ye(this,"children");Ye(this,"isPcbPrimitive",!1);Ye(this,"isSchematicPrimitive",!1);Ye(this,"_renderId");Ye(this,"_currentRenderPhase",null);Ye(this,"_asyncEffects",[]);Ye(this,"parent",null);this._renderId=`${mjt++}`,this.children=[],this.renderPhaseStates={};for(const e of eM)this.renderPhaseStates[e]={initialized:!1,dirty:!1}}_markDirty(r){var t;this.renderPhaseStates[r].dirty=!0;const e=eM.indexOf(r);for(let n=e+1;n<eM.length;n++)this.renderPhaseStates[eM[n]].dirty=!0;(t=this.parent)!=null&&t._markDirty&&this.parent._markDirty(r)}_queueAsyncEffect(r,e){const t={promise:e(),phase:this._currentRenderPhase,effectName:r,complete:!1};this._asyncEffects.push(t),"root"in this&&this.root&&this.root.emit("asyncEffect:start",{effectName:r,componentDisplayName:this.getString(),phase:t.phase}),t.promise.then(()=>{t.complete=!0,"root"in this&&this.root&&this.root.emit("asyncEffect:end",{effectName:r,componentDisplayName:this.getString(),phase:t.phase})}).catch(n=>{console.error(`Async effect error in ${t.phase} "${r}":
13309
+ `,i.appendChild(w)}})}};o();const a=new MutationObserver(o);return a.observe(i,{childList:!0,subtree:!1,characterData:!1}),()=>{a.disconnect()}},[r,t,e,n])},JKt=uC("schematic-viewer"),WKt=()=>{uC.enable("schematic-viewer*")},qKt=JKt,ZKt=r=>{const[e,t]=pt.useState(0),[n,i]=pt.useState(0);return pt.useEffect(()=>{if(!r.current)return;const o=()=>{var l;const s=(l=r.current)==null?void 0:l.getBoundingClientRect();t((s==null?void 0:s.width)||0),i((s==null?void 0:s.height)||0)};o();const a=new ResizeObserver(o);return a.observe(r.current),window.addEventListener("resize",o),()=>{a.disconnect(),window.removeEventListener("resize",o)}},[]),{containerWidth:e,containerHeight:n}},XKt=qKt.extend("useComponentDragging"),$Kt=({onEditEvent:r,editEvents:e=[],circuitJson:t,cancelDrag:n,svgToScreenProjection:i,realToSvgProjection:o,enabled:a=!1,snapToGrid:s=!1})=>{const[l,c]=pt.useState(null),u=Ku(o,i),A=pt.useRef(null),d=pt.useRef(null),f=pt.useRef(new Map);pt.useEffect(()=>{e.forEach(_=>{"edit_event_type"in _&&_.edit_event_type==="edit_schematic_component_location"&&!_.in_progress&&f.current.set(_.schematic_component_id,{..._.new_center})})},[e]);const m=pt.useCallback(_=>{if(!a)return;const w=_.target.closest('[data-circuit-json-type="schematic_component"]');if(!w)return;const P=w.getAttribute("data-schematic-component-id");if(!P)return;n&&n();const L=dm(t).schematic_component.get(P);if(!L)return;A.current={x:_.clientX,y:_.clientY};let O;const H=f.current.get(P);if(H)O={...H};else{const q=J6e({editEvents:e,schematic_component_id:P});O={x:L.center.x+q.x,y:L.center.y+q.y},f.current.set(P,{...O})}const K={edit_event_id:Math.random().toString(36).substr(2,9),edit_event_type:"edit_schematic_component_location",schematic_component_id:P,original_center:O,new_center:{...O},in_progress:!0,created_at:Date.now(),_element:w};d.current=K,c(K)},[n,a,t,e]),C=pt.useCallback(_=>{if(!d.current||!A.current)return;const x={x:_.clientX-A.current.x,y:_.clientY-A.current.y},w={x:x.x/u.a,y:x.y/u.d};let P={x:d.current.original_center.x+w.x,y:d.current.original_center.y+w.y};if(s){const O=H=>Math.round(H*10)/10;P={x:O(P.x),y:O(P.y)}}const L={...d.current,new_center:P};d.current=L,c(L)},[u,s]),E=pt.useCallback(()=>{if(!d.current)return;const _={...d.current,in_progress:!1};f.current.set(_.schematic_component_id,{..._.new_center}),XKt("handleMouseUp calling onEditEvent with new edit event",{newEditEvent:_}),r&&r(_),d.current=null,A.current=null,c(null)},[r]);return pt.useEffect(()=>(window.addEventListener("mousemove",C),window.addEventListener("mouseup",E),()=>{window.removeEventListener("mousemove",C),window.removeEventListener("mouseup",E)}),[C,E]),{handleMouseDown:m,isDragging:!!d.current,activeEditEvent:l}},hce={schematicEditIcon:50,schematicGridIcon:49,clickToInteractOverlay:100},ejt=({onClick:r,active:e})=>ut.jsx("div",{onClick:r,style:{position:"absolute",top:"16px",right:"16px",backgroundColor:e?"#4CAF50":"#fff",color:e?"#fff":"#000",padding:"8px",borderRadius:"4px",cursor:"pointer",boxShadow:"0 2px 4px rgba(0,0,0,0.1)",display:"flex",alignItems:"center",gap:"4px",zIndex:hce.schematicEditIcon},children:ut.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[ut.jsx("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),ut.jsx("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})]})}),tjt=({onClick:r,active:e})=>ut.jsx("div",{onClick:r,style:{position:"absolute",top:"56px",right:"16px",backgroundColor:e?"#4CAF50":"#fff",color:e?"#fff":"#000",padding:"8px",borderRadius:"4px",cursor:"pointer",boxShadow:"0 2px 4px rgba(0,0,0,0.1)",display:"flex",alignItems:"center",gap:"4px",zIndex:hce.schematicGridIcon},children:ut.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:ut.jsx("path",{d:"M3 3h7v7H3zM14 3h7v7h-7zM3 14h7v7H3zM14 14h7v7h-7z"})})}),njt=({circuitJson:r,containerStyle:e,editEvents:t=[],onEditEvent:n,defaultEditMode:i=!1,debugGrid:o=!1,editingEnabled:a=!1,debug:s=!1,clickToInteractEnabled:l=!1,colorOverrides:c})=>{s&&WKt();const[u,A]=pt.useState(i),[d,f]=pt.useState(!0),[m,C]=pt.useState(!l),E=pt.useRef(null),_=pt.useRef(null),x=Ne=>{const rt=Ne.touches[0];_.current={x:rt.clientX,y:rt.clientY}},w=Ne=>{const rt=Ne.changedTouches[0],et=_.current;if(!et)return;const ft=Math.abs(rt.clientX-et.x),_t=Math.abs(rt.clientY-et.y);ft<10&&_t<10&&(Ne.preventDefault(),C(!0)),_.current=null},[P,L]=pt.useState([]),O=pt.useRef(r),H=Ne=>`${(Ne==null?void 0:Ne.length)||0}_${(Ne==null?void 0:Ne.editCount)||0}`;pt.useEffect(()=>{const Ne=H(r),rt=H(O.current);Ne!==rt&&(L([]),O.current=r)},[r]);const{ref:K,cancelDrag:q,transform:Y}=j6e({onSetTransform(Ne){E.current&&(E.current.style.transform=gQ(Ne))},enabled:m}),{containerWidth:se,containerHeight:ie}=ZKt(K),de=pt.useMemo(()=>!se||!ie?"":uce(r,{width:se,height:ie||720,grid:o?{cellSize:1,labelCells:!0}:void 0,colorOverrides:c}),[r,se,ie]),Ce=pt.useMemo(()=>{const Ne=de.match(/<svg[^>]*style="[^"]*background-color:\s*([^;\"]+)/i);return(Ne==null?void 0:Ne[1])??"transparent"},[de]),xe=pt.useMemo(()=>{var rt;if(!de)return Ny();const Ne=(rt=de.match(/data-real-to-screen-transform="([^"]+)"/))==null?void 0:rt[1];try{return uY(Ne)}catch(et){return console.error(et),Ny()}},[de]),fe=Ne=>{L(rt=>[...rt,Ne]),n&&n(Ne)},Ie=pt.useMemo(()=>[...t,...P],[t,P]),{handleMouseDown:ve,isDragging:Qe,activeEditEvent:De}=$Kt({onEditEvent:fe,cancelDrag:q,realToSvgProjection:xe,svgToScreenProjection:Y,circuitJson:r,editEvents:Ie,enabled:u&&m,snapToGrid:d});KKt({svgDivRef:E,editEvents:Ie,realToSvgProjection:xe,svgToScreenProjection:Y,activeEditEvent:De}),jKt({svgDivRef:E,circuitJson:r,activeEditEvent:De,editEvents:Ie});const Fe=pt.useMemo(()=>ut.jsx("div",{ref:E,style:{pointerEvents:l?m?"auto":"none":"auto",transformOrigin:"0 0"},dangerouslySetInnerHTML:{__html:de}}),[de,m,l]);return ut.jsxs("div",{ref:K,style:{position:"relative",backgroundColor:Ce,overflow:"hidden",cursor:Qe?"grabbing":l&&!m?"pointer":"grab",minHeight:"300px",...e},onMouseDown:Ne=>{if(l&&!m){Ne.preventDefault(),Ne.stopPropagation();return}ve(Ne)},onMouseDownCapture:Ne=>{if(l&&!m){Ne.preventDefault(),Ne.stopPropagation();return}},onTouchStart:x,onTouchEnd:w,children:[!m&&l&&ut.jsx("div",{onClick:Ne=>{Ne.preventDefault(),Ne.stopPropagation(),C(!0)},style:{position:"absolute",inset:0,cursor:"pointer",zIndex:hce.clickToInteractOverlay,display:"flex",alignItems:"center",justifyContent:"center",pointerEvents:"all",touchAction:"pan-x pan-y pinch-zoom"},children:ut.jsx("div",{style:{backgroundColor:"rgba(0, 0, 0, 0.8)",color:"white",padding:"12px 24px",borderRadius:"8px",fontSize:"16px",fontFamily:"sans-serif",pointerEvents:"none"},children:typeof window<"u"&&("ontouchstart"in window||navigator.maxTouchPoints>0)?"Touch to Interact":"Click to Interact"})}),a&&ut.jsx(ejt,{active:u,onClick:()=>A(!u)}),a&&u&&ut.jsx(tjt,{active:d,onClick:()=>f(!d)}),Fe]})},rjt=r=>{const[e,t]=pt.useState(0),[n,i]=pt.useState(0);return pt.useEffect(()=>{if(!r.current)return;const o=()=>{var l;const s=(l=r.current)==null?void 0:l.getBoundingClientRect();t((s==null?void 0:s.width)||0),i((s==null?void 0:s.height)||0)};o();const a=new ResizeObserver(o);return a.observe(r.current),window.addEventListener("resize",o),()=>{a.disconnect(),window.removeEventListener("resize",o)}},[]),{containerWidth:e,containerHeight:n}};uC("assembly-viewer");var ijt=()=>{uC.enable("assembly-viewer*")},ojt=({circuitJson:r,containerStyle:e,debugGrid:t=!1,debug:n=!1})=>{n&&ijt();const i=pt.useRef(null),{ref:o}=j6e({onSetTransform(u){i.current&&(i.current.style.transform=gQ(u))}}),{containerWidth:a,containerHeight:s}=rjt(o),l=pt.useMemo(()=>!a||!s?"":U6e(r,{width:a,height:s||720}),[r,a,s]);pt.useMemo(()=>{var A;if(!l)return Ny();const u=(A=l.match(/data-real-to-screen-transform="([^"]+)"/))==null?void 0:A[1];try{return uY(u)}catch(d){return console.error(d),Ny()}},[l]);const c=pt.useMemo(()=>ut.jsx("div",{ref:i,style:{pointerEvents:"auto",transformOrigin:"0 0"},dangerouslySetInnerHTML:{__html:l}}),[l]);return ut.jsx("div",{ref:o,style:{position:"relative",backgroundColor:"#FFFFFF",overflow:"hidden",minHeight:"300px",...e},children:c})};const W6e=["Initialize a tscircuit project using [tsci init](https://github.com/tscircuit/cli) before adding components.","Define reusable modules with cached routes using [<subcircuit />](https://docs.tscircuit.com/elements/subcircuit)","Run `tsci dev` on the command line to preview your boards before export",'Use units like mm or mils consistently across your designs (e.g. pcbX="10mm")',"Quickly set footprints with the [footprint prop](https://docs.tscircuit.com/footprints/footprinter-strings)","Check out the guide on [ordering prototypes](https://docs.tscircuit.com/building-electronics/ordering-prototypes)","Use [net labels](https://docs.tscircuit.com/elements/net) and [group elements](https://docs.tscircuit.com/elements/group) to organize complex schematics.","You can manually drag components on the PCB and Schematic using [manual edits](https://docs.tscircuit.com/guides/manual-edits)","Every tscircuit module can export to [Circuit JSON](https://github.com/tscircuit/circuit-json), Gerbers, Pick'n'Place CSV files, Bill of Materials CSV and more","You can import components from [JLCPCB](https://docs.tscircuit.com/guides/importing-modules-and-chips/importing-from-jlcpcb) or [KiCad](https://docs.tscircuit.com/guides/importing-modules-and-chips/importing-from-kicad)","Any module you push to the [registry](https://tscircuit.com/trending) will have [simple image urls](https://docs.tscircuit.com/web-apis/image-generation-api) you can use display images on a website","The default [Parts Engine](https://docs.tscircuit.com/guides/platform-configuration) will automatically find parts from common vendors for your BOM",'[Pin selectors](https://docs.tscircuit.com/guides/using-sel-references) are similar to CSS selectors, ".R1 > .pin1" means "connect to the first pin of the component R1"',"You can use the [sel](https://docs.tscircuit.com/guides/using-sel-references) object to select pins in a type-safe way","Publish modules via the [registry](https://tscircuit.com/trending) for working with a team or sharing your work","[Explore tutorials](https://docs.tscircuit.com/category/tutorials) for real-world circuit design examples.","Upload your Circuit JSON to [circuitjson.com](https://circuitjson.com) for a quick preview.","You can display Circuit JSON in 3D, PCB or Schematic mode with the [<CircuitJsonPreview />](https://docs.tscircuit.com/elements/circuitjsonpreview) React component","Use a [<group />](https://docs.tscircuit.com/elements/group) element to move multiple components at once in a schematic or PCB layout.","Check out the [GitHub Discussions page](https://github.com/tscircuit/tscircuit/discussions) to upvote features","You can customize the autorouter using the [autorouter prop](https://docs.tscircuit.com/elements/board#setting-the-autorouter)","Use the [<constraint />](https://docs.tscircuit.com/footprints/constraint) element to enforce geometric relationships in PCB designs.","Join the [Discord server](https://tscircuit.com/join) to discuss issues and get help directly from the community."],ajt=(()=>{let r=W6e[Math.floor(Math.random()*W6e.length)];return r=r.replace(/</g,"&lt;"),r=r.replace(/>/g,"&gt;"),r=r.replace(new RegExp('(?<!href=")(?<!\\()(?<!\\]\\()(https?:\\/\\/[^\\s\\)\\]]+)',"g"),(e,t)=>`<a class="rf-text-blue-500 rf-underline" href="${e}" target="_blank">${e}</a>`),r=r.replace(/\[([^\]]+)\]\((https?:\/\/[^\)]+)\)/g,'<a class="rf-text-blue-500 rf-underline" href="$2" target="_blank">$1</a>'),r})(),X9=({onRunClicked:r})=>ut.jsxs("div",{className:"rf-flex rf-flex-col rf-items-center rf-justify-center rf-h-full rf-bg-gray-50 rf-text-gray-500 rf-p-4",children:[ut.jsx(COt,{className:"rf-size-14 rf-mb-4"}),ut.jsxs("p",{className:"rf-text-md rf-break-words rf-max-w-xl rf-text-center",children:["Tip: ",ut.jsx("span",{dangerouslySetInnerHTML:{__html:ajt}})]}),r&&ut.jsxs(ZQ,{className:"rf-mt-4 rf-bg-blue-600 rf-hover:bg-blue-500",onClick:r,children:["Run Code",ut.jsx(_Ot,{className:"rf-w-3 rf-h-3 rf-ml-2"})]})]}),z7=({text:r,onClick:e})=>ut.jsx("span",{className:"rf-cursor-pointer rf-underline rf-text-blue-600 rf-mx-2",onClick:e,children:r}),H7=r=>{var e;return ut.jsxs("div",{className:"rf-leading-5",children:[ut.jsx("div",{className:"rf-py-2 rf-font-bold",children:r.column.name}),ut.jsx("div",{children:((e=r.field)==null?void 0:e.call(r))??ut.jsx("input",{type:"text",className:"rf-border rf-rounded rf-p-1 rf-w-full",onChange:t=>{var n;(n=r.onTextChange)==null||n.call(r,t.target.value)}})})]})},sjt=({open:r,children:e,title:t,onClose:n})=>r?ut.jsx("div",{className:"rf-fixed rf-inset-0 rf-bg-black rf-bg-opacity-50 rf-flex rf-justify-center rf-items-center rf-z-50",onClick:n,children:ut.jsxs("div",{className:"rf-bg-white rf-p-5 rf-rounded-lg rf-relative rf-w-11/12 rf-max-w-2xl",onClick:i=>{i.preventDefault(),i.stopPropagation()},children:[ut.jsx("h2",{className:"rf-mt-0 rf-text-md rf-pb-4",children:t}),ut.jsx("button",{type:"button",className:"rf-absolute rf-top-2 rf-right-4 rf-text-2xl rf-font-bold",onClick:n,children:"×"}),e]})}):null,ljt=({elements:r})=>{const[e,t]=pt.useState({open:!1}),[n,i]=pt.useReducer((u,A)=>({...u,...A}),{}),o=[...new Set(r.map(u=>u.type))],a=r.map(u=>{const A=u[`${u.type}_id`],d=Object.fromEntries(Object.entries(u).filter(([m])=>!(m===`${u.type}_id`||!m.endsWith("_id")))),f=Object.fromEntries(Object.entries(u).filter(([m])=>!m.endsWith("_id")));return{primary_id:A,other_ids:d,...f,_og_elm:u}}),s=a.map(u=>{let A="";const d=f=>{const m=Object.keys(f.other_ids).find(_=>_.startsWith("source_"));if(!m)return`.${f.name}`;const C=m.slice(0,-3),E=a.find(_=>_.type===C&&_.primary_id===f.other_ids[m]);return E?"name"in E?`${d(E)} > .${f.name}`:`#${E.primary_id} > .${f.name}`:`??? > .${f.name}`};return"name"in u&&(A=d(u)),{...u,selector_path:A}}),l=[{key:"primary_id",name:"primary_id",renderCell:u=>ut.jsxs("div",{className:"rf-flex rf-items-center",children:[ut.jsx(z7,{text:u.primary_id,onClick:()=>i({focused_id:u.primary_id,id_search:void 0,selector_search:void 0})}),ut.jsx("span",{className:"rf-flex-grow"}),ut.jsx(z7,{text:"(JSON)",onClick:()=>t({open:!0,element:u._og_elm,title:u.primary_id})})]}),renderHeaderCell:u=>ut.jsx(H7,{column:u,onTextChange:A=>i({id_search:A}),field:n.focused_id?()=>ut.jsxs("div",{children:["Focus:"," ",ut.jsx("span",{className:"rf-underline",children:n.focused_id}),ut.jsx(z7,{text:"(unfocus)",onClick:()=>i({focused_id:void 0})})]}):void 0})},{key:"type",name:"type",renderHeaderCell:u=>ut.jsx(H7,{column:u,field:()=>ut.jsxs("select",{onChange:A=>i({component_type_filter:A.target.value}),className:"rf-border rf-rounded rf-p-1 rf-w-full",children:[ut.jsx("option",{value:"any",children:"any"},"any"),ut.jsx("option",{value:"source",children:"source"},"source"),ut.jsx("option",{value:"source/pcb",children:"source/pcb"},"source/pcb"),ut.jsx("option",{value:"source/schematic",children:"source/schematic"},"source/schematic"),o.map(A=>ut.jsx("option",{value:A,children:A},A))]})})},{key:"name",name:"name",renderHeaderCell:u=>ut.jsx(H7,{column:u,onTextChange:A=>i({name_search:A})})},{key:"selector_path",name:"selector_path",renderHeaderCell:u=>ut.jsx(H7,{column:u,onTextChange:A=>i({selector_search:A})})},{key:"other_ids",name:"other_ids",renderCell:u=>ut.jsx("div",{className:"rf-space-x-2",children:Object.entries(u.other_ids).map(([A,d])=>ut.jsx(z7,{text:d,onClick:()=>i({focused_id:d})},d))})}],c=s.filter(u=>{var A,d;return n.name_search?(d=(A=u.name)==null?void 0:A.toLowerCase())==null?void 0:d.includes(n.name_search.toLowerCase()):!0}).filter(u=>{var A;return!n.component_type_filter||n.component_type_filter==="any"?!0:n.component_type_filter==="source"?u.type.startsWith("source_"):n.component_type_filter==="source/pcb"?u.type.startsWith("source_")||u.type.startsWith("pcb_"):n.component_type_filter==="source/schematic"?u.type.startsWith("source_")||u.type.startsWith("schematic_"):(A=u.type)==null?void 0:A.includes(n.component_type_filter)}).filter(u=>n.selector_search?n.selector_search.split(" ").filter(d=>d.length>0).every(d=>{var f;return(f=u.selector_path)==null?void 0:f.includes(d)}):!0).filter(u=>{var A;return n.id_search?(A=u.primary_id)==null?void 0:A.includes(n.id_search):!0}).filter(u=>!!(!n.focused_id||u.primary_id===n.focused_id||Object.values(u.other_ids).includes(n.focused_id)));return ut.jsxs("div",{className:"rf-font-mono rf-text-xs rf-bg-white",children:[ut.jsx("div",{className:"rf-overflow-x-auto",children:ut.jsxs("table",{className:"rf-table-auto rf-w-full rf-text-left",children:[ut.jsx("thead",{children:ut.jsx("tr",{children:l.map(u=>ut.jsx("th",{className:"rf-px-4 rf-py-2 rf-border-b",children:u.renderHeaderCell?u.renderHeaderCell(u):u.name},u.key))})}),ut.jsx("tbody",{children:c.map((u,A)=>ut.jsx("tr",{className:"rf-hover:bg-gray-100",children:l.map(d=>ut.jsx("td",{className:"rf-px-4 rf-py-2 rf-border-b",children:d.renderCell?d.renderCell(u):u[d.key]},d.key))},A))})]})}),ut.jsx(sjt,{open:e.open,onClose:()=>t({open:!1}),title:e.open?e.title:"",children:ut.jsx("div",{className:"rf-bg-gray-800 rf-p-3 rf-text-white rf-rounded",children:ut.jsx("pre",{className:"rf-whitespace-pre-wrap",children:e.open?JSON.stringify(e.element,null,2):""})})})]})},cjt=(r,e)=>r==="jlcpcb"?ut.jsx("a",{className:"rf-underline rf-text-blue-500",target:"_blank",rel:"noreferrer",href:`https://jlcpcb.com/partdetail/${e}`,children:e}):e,ujt=({circuitJson:r})=>{const e=r.filter(n=>n.type==="source_component"),t=new Set;for(const n of e)if(n.supplier_part_numbers)for(const i of Object.keys(n.supplier_part_numbers))t.add(i);return ut.jsx("div",{className:"rf-overflow-x-auto",children:ut.jsxs("table",{className:"rf-w-full rf-text-left rf-text-sm",children:[ut.jsx("thead",{children:ut.jsxs("tr",{className:"rf-border-b",children:[ut.jsx("th",{className:"rf-p-2",children:"Name"}),Array.from(t).map(n=>ut.jsx("th",{className:"rf-p-2 rf-capitalize",children:n},n))]})}),ut.jsx("tbody",{children:e.map(n=>ut.jsxs("tr",{className:"rf-border-b",children:[ut.jsx("td",{className:"rf-p-2",children:n.name}),Array.from(t).map(i=>{var o,a;return ut.jsx("td",{className:"rf-p-2",children:cjt(i,((a=(o=n.supplier_part_numbers)==null?void 0:o[i])==null?void 0:a[0])||"")},i)})]},n.source_component_id))})]})})};function q6e([r,e],[t,n],{lineThickness:i=0}={}){return i===0?Z6e(r,e,t,n):Ajt(r,e,t,n)<=i}function Z6e(r,e,t,n){const i=Y7(r,e,t),o=Y7(r,e,n),a=Y7(t,n,r),s=Y7(t,n,e);return!!(i!==o&&a!==s||i===0&&V7(r,t,e)||o===0&&V7(r,n,e)||a===0&&V7(t,r,n)||s===0&&V7(t,e,n))}function Y7(r,e,t){const n=(e.y-r.y)*(t.x-e.x)-(e.x-r.x)*(t.y-e.y);return n===0?0:n>0?1:2}function V7(r,e,t){return e.x<=Math.max(r.x,t.x)&&e.x>=Math.min(r.x,t.x)&&e.y<=Math.max(r.y,t.y)&&e.y>=Math.min(r.y,t.y)}function Ajt(r,e,t,n){if(r.x===e.x&&r.y===e.y)return $9(r,t,n);if(t.x===n.x&&t.y===n.y)return $9(t,r,e);if(Z6e(r,e,t,n))return 0;const i=[$9(r,t,n),$9(e,t,n),$9(t,r,e),$9(n,r,e)];return Math.min(...i)}function $9(r,e,t){const n=(t.x-e.x)**2+(t.y-e.y)**2;if(n===0)return qT(r,e);let i=((r.x-e.x)*(t.x-e.x)+(r.y-e.y)*(t.y-e.y))/n;i=Math.max(0,Math.min(1,i));const o={x:e.x+i*(t.x-e.x),y:e.y+i*(t.y-e.y)};return qT(r,o)}function qT(r,e){const t=r.x-e.x,n=r.y-e.y;return Math.sqrt(t*t+n*n)}var djt=(r,e)=>{const t={x:e.x-r.x,y:e.y-r.y},n=Math.sqrt(t.x**2+t.y**2);return{x:t.x/n,y:t.y/n}},fjt=r=>{switch(r){case"up":return{x:0,y:1};case"down":return{x:0,y:-1};case"left":return{x:-1,y:0};case"right":return{x:1,y:0}}},hjt=Object.defineProperty,pjt=(r,e)=>{for(var t in e)hjt(r,t,{get:e[t],enumerable:!0})},X6e={};pjt(X6e,{Battery:()=>RJt,Board:()=>dJt,Capacitor:()=>hJt,Chip:()=>I7e,Constraint:()=>EJt,Crystal:()=>GJt,Cutout:()=>DJt,Diode:()=>pJt,FabricationNotePath:()=>_Jt,FabricationNoteText:()=>xJt,Footprint:()=>Fjt,Fuse:()=>gJt,Group:()=>bce,Hole:()=>c7e,Inductor:()=>kJt,Jumper:()=>mJt,Keepout:()=>Ice,Led:()=>yJt,Mosfet:()=>zJt,Net:()=>o7e,NetAlias:()=>bJt,NormalComponent:()=>L1,PcbTrace:()=>l7e,PinHeader:()=>NJt,PlatedHole:()=>vce,Port:()=>Hw,Potentiometer:()=>FJt,PowerSource:()=>vJt,PrimitiveComponent:()=>aI,PushButton:()=>LJt,Renderable:()=>$6e,Resistor:()=>IJt,Resonator:()=>PJt,SchematicBox:()=>VJt,SchematicText:()=>YJt,SilkscreenCircle:()=>SJt,SilkscreenLine:()=>QJt,SilkscreenPath:()=>s7e,SilkscreenRect:()=>wJt,SilkscreenText:()=>Cce,SmtPad:()=>yce,Subcircuit:()=>BJt,Switch:()=>HJt,Trace:()=>Yw,TraceHint:()=>y7e,Transistor:()=>OJt,Via:()=>MJt});var gjt=uC("tscircuit:renderable"),eM=["ReactSubtreesRender","PcbFootprintStringRender","InitializePortsFromChildren","CreateNetsFromProps","CreateTracesFromProps","CreateTraceHintsFromProps","SourceRender","SourceParentAttachment","PortMatching","OptimizeSelectorCache","SourceTraceRender","SourceAddConnectivityMapKey","SchematicComponentRender","SchematicPortRender","SchematicPrimitiveRender","SchematicLayout","SchematicTraceRender","SchematicReplaceNetLabelsWithSymbols","PcbComponentRender","PcbPrimitiveRender","PcbFootprintLayout","PcbPortRender","PcbPortAttachment","PcbLayout","PcbComponentSizeCalculation","PcbBoardAutoSize","PcbTraceHintRender","PcbTraceRender","PcbRouteNetIslands","PcbDesignRuleChecks","CadModelRender","PartsEngineRender"],mjt=0,$6e=class{constructor(r){Ye(this,"renderPhaseStates");Ye(this,"shouldBeRemoved",!1);Ye(this,"children");Ye(this,"isPcbPrimitive",!1);Ye(this,"isSchematicPrimitive",!1);Ye(this,"_renderId");Ye(this,"_currentRenderPhase",null);Ye(this,"_asyncEffects",[]);Ye(this,"parent",null);this._renderId=`${mjt++}`,this.children=[],this.renderPhaseStates={};for(const e of eM)this.renderPhaseStates[e]={initialized:!1,dirty:!1}}_markDirty(r){var t;this.renderPhaseStates[r].dirty=!0;const e=eM.indexOf(r);for(let n=e+1;n<eM.length;n++)this.renderPhaseStates[eM[n]].dirty=!0;(t=this.parent)!=null&&t._markDirty&&this.parent._markDirty(r)}_queueAsyncEffect(r,e){const t={promise:e(),phase:this._currentRenderPhase,effectName:r,complete:!1};this._asyncEffects.push(t),"root"in this&&this.root&&this.root.emit("asyncEffect:start",{effectName:r,componentDisplayName:this.getString(),phase:t.phase}),t.promise.then(()=>{t.complete=!0,"root"in this&&this.root&&this.root.emit("asyncEffect:end",{effectName:r,componentDisplayName:this.getString(),phase:t.phase})}).catch(n=>{console.error(`Async effect error in ${t.phase} "${r}":
13310
13310
  ${n.stack}`),t.complete=!0,"root"in this&&this.root&&this.root.emit("asyncEffect:end",{effectName:r,componentDisplayName:this.getString(),phase:t.phase,error:n.toString()})})}_emitRenderLifecycleEvent(r,e){gjt(`${r}:${e} ${this.getString()}`);const t=`renderable:renderLifecycle:${r}:${e}`,n={renderId:this._renderId,componentDisplayName:this.getString(),type:t};"root"in this&&this.root&&(this.root.emit(t,n),this.root.emit("renderable:renderLifecycle:anyEvent",{...n,type:t}))}getString(){return this.constructor.name}_hasIncompleteAsyncEffects(){return this._asyncEffects.some(r=>!r.complete)}getCurrentRenderPhase(){return this._currentRenderPhase}getRenderGraph(){return{id:this._renderId,currentPhase:this._currentRenderPhase,renderPhaseStates:this.renderPhaseStates,shouldBeRemoved:this.shouldBeRemoved,children:this.children.map(r=>r.getRenderGraph())}}runRenderCycle(){for(const r of eM)this.runRenderPhaseForChildren(r),this.runRenderPhase(r)}runRenderPhase(r){var o,a,s;this._currentRenderPhase=r;const e=this.renderPhaseStates[r],t=e.initialized,n=e.dirty;if(!t&&this.shouldBeRemoved)return;if(this.shouldBeRemoved&&t){this._emitRenderLifecycleEvent(r,"start"),(o=this==null?void 0:this[`remove${r}`])==null||o.call(this),e.initialized=!1,e.dirty=!1,this._emitRenderLifecycleEvent(r,"end");return}const i=eM.indexOf(r)-1;if(i>=0){const l=eM[i];if(this._asyncEffects.filter(u=>u.phase===l).some(u=>!u.complete))return}if(this._emitRenderLifecycleEvent(r,"start"),t){n&&((a=this==null?void 0:this[`update${r}`])==null||a.call(this),e.dirty=!1),this._emitRenderLifecycleEvent(r,"end");return}e.dirty=!1,(s=this==null?void 0:this[`doInitial${r}`])==null||s.call(this),e.initialized=!0,this._emitRenderLifecycleEvent(r,"end")}runRenderPhaseForChildren(r){for(const e of this.children)e.runRenderPhaseForChildren(r),e.runRenderPhase(r)}renderError(r){throw typeof r=="string"?new Error(r):new Error(JSON.stringify(r,null,2))}},K7={},e7e=r=>{const e=Object.fromEntries(Object.entries(r).map(([t,n])=>[t.toLowerCase(),n]));Object.assign(K7,r),Object.assign(K7,e)},yjt=class extends Error{constructor(r,e,t){let n;const o=Object.keys(t).filter(a=>a!=="_errors").map(a=>t[a]._errors[0]?`${a} (${t[a]._errors[0]})`:`${a} (${JSON.stringify(t[a])})`).join(", ");"name"in e?n=`Invalid props for ${r} "${e.name}": ${o}`:"footprint"in e&&typeof e.footprint=="string"?n=`Invalid props for ${r} (unnamed ${e.footprint} component): ${o}`:n=`Invalid props for ${r} (unnamed): ${o}`,super(n),this.componentName=r,this.originalProps=e,this.formattedError=t}};function pce(r,e){const t=e.match(/^#(\w+)/);if(t)return r.props.id===t[1];const n=e.match(/^\.(\w+)/);if(n)return r.isMatchingNameOrAlias(n[1]);let[i,...o]=e.split(/(?=[#.[])/);return i==="pin"&&(i="port"),i&&i!=="*"&&r.lowercaseComponentName!==i.toLowerCase()?!1:o.every(a=>{if(a.startsWith("#"))return r.props.id===a.slice(1);if(a.startsWith("."))return r.isMatchingNameOrAlias(a.slice(1));const s=a.match(/\[(\w+)=['"]?(.+?)['"]?\]/);if(!s)return!0;const[,l,c]=s;return r.props[l].toString()===c})}var gce={isTag:r=>!0,getParent:r=>r.parent,getChildren:r=>r.children,getName:r=>r.lowercaseComponentName,getAttributeValue:(r,e)=>{var t;if(e==="class"&&"getNameAndAliases"in r)return r.getNameAndAliases().join(" ");if(e==="name"&&((t=r._parsedProps)!=null&&t.name))return r._parsedProps.name;if(r._parsedProps&&e in r._parsedProps){const n=r._parsedProps[e];return typeof n=="string"?n:n!=null?String(n):null}return null},hasAttrib:(r,e)=>{var t;return e==="class"?!!((t=r._parsedProps)!=null&&t.name):r._parsedProps&&e in r._parsedProps},getSiblings:r=>r.parent?r.parent.children:[],prevElementSibling:r=>{if(!r.parent)return null;const e=r.parent.children,t=e.indexOf(r);return t>0?e[t-1]:null},getText:()=>"",removeSubsets:r=>r.filter((e,t)=>!r.some((n,i)=>t!==i&&n!==e&&n.getDescendants().includes(e))),existsOne:(r,e)=>e.some(r),findAll:(r,e)=>{const t=[],n=i=>{r(i)&&t.push(i);for(const o of i.children)n(o)};for(const i of e)n(i);return t},findOne:(r,e)=>{for(const t of e){if(r(t))return t;const n=t.children;if(n.length>0){const i=gce.findOne(r,n);if(i)return i}}return null},equals:(r,e)=>r._renderId===e._renderId,isHovered:r=>!1,isVisited:r=>!1,isActive:r=>!1},vjt={...gce,getChildren:r=>r.children.filter(e=>!e.isSubcircuit)},t7e={...gce,getChildren:r=>r.children.filter(e=>e.isSubcircuit)},n7e=r=>{if(/net\.[^\s>]*\./.test(r))throw new Error('Net names cannot contain a period, try using "sel.net..." to autocomplete with conventional net names, e.g. V3_3');if(/net\.[0-9]/.test(r))throw new Error('Net names cannot start with a number, try using a prefix like "VBUS1"');return r.replace(/ pin/g," port").replace(/ subcircuit\./g," group[isSubcircuit=true]").replace(/([^ ])\>([^ ])/g,"$1 > $2").replace(/(^|[ >])(?!pin\.)(?!port\.)(?!net\.)([A-Z][A-Za-z0-9_-]*)\.([A-Za-z0-9_-]+)/g,(e,t,n,i)=>{const o=/^\d+$/.test(i)?`pin${i}`:i;return`${t}.${n} > .${o}`}).trim()},mce={adapter:vjt,cacheResults:!0},aI=class extends $6e{constructor(e){super(e);Ye(this,"parent",null);Ye(this,"children");Ye(this,"childrenPendingRemoval");Ye(this,"props");Ye(this,"_parsedProps");Ye(this,"externallyAddedAliases");Ye(this,"isPrimitiveContainer",!1);Ye(this,"source_group_id",null);Ye(this,"source_component_id",null);Ye(this,"schematic_component_id",null);Ye(this,"pcb_component_id",null);Ye(this,"cad_component_id",null);Ye(this,"_cachedSelectAllQueries",new Map);Ye(this,"_cachedSelectOneQueries",new Map);this.children=[],this.childrenPendingRemoval=[],this.props=e??{},this.externallyAddedAliases=[];const t=this.config.zodProps.safeParse(e??{});if(t.success)this._parsedProps=t.data;else throw new yjt(this.lowercaseComponentName,this.props,t.error.format())}get config(){return{componentName:"",zodProps:Pn({}).passthrough()}}get componentName(){return this.config.componentName}getInheritedProperty(e){var n;let t=this;for(;t;){if(t._parsedProps&&e in t._parsedProps)return t._parsedProps[e];t=t.parent}if((n=this.root)!=null&&n.platform&&e in this.root.platform)return this.root.platform[e]}get lowercaseComponentName(){return this.componentName.toLowerCase()}get isSubcircuit(){var e;return!!this.props.subcircuit||this.lowercaseComponentName==="group"&&((e=this==null?void 0:this.parent)==null?void 0:e.isRoot)}get isGroup(){return this.lowercaseComponentName==="group"}setProps(e){var i,o;const t=this.config.zodProps.parse({...this.props,...e}),n=this.props;this.props=t,this._parsedProps=this.config.zodProps.parse(e),this.onPropsChange({oldProps:n,newProps:t,changedProps:Object.keys(e)}),(o=(i=this.parent)==null?void 0:i.onChildChanged)==null||o.call(i,this)}computePcbPropsTransform(){const{_parsedProps:e}=this;return Ku($d(e.pcbX??0,e.pcbY??0),$x((e.pcbRotation??0)*Math.PI/180))}_computePcbGlobalTransformBeforeLayout(){var n,i,o;const{_parsedProps:e}=this,t=this.getSubcircuit()._getPcbManualPlacementForComponent(this);if(t&&this.props.pcbX===void 0&&this.props.pcbY===void 0)return Ku(((n=this.parent)==null?void 0:n._computePcbGlobalTransformBeforeLayout())??Ny(),Ku($d(t.x,t.y),$x((e.pcbRotation??0)*Math.PI/180)));if(this.isPcbPrimitive){const a=this.getPrimitiveContainer();if(a){const s=a._parsedProps.layer==="bottom",l=a._getGlobalPcbPositionBeforeLayout();if(s)return Ku($d(l.x,l.y),j3(),$d(-l.x,-l.y)),Ku(((i=this.parent)==null?void 0:i._computePcbGlobalTransformBeforeLayout())??Ny(),j3(),this.computePcbPropsTransform())}}return Ku(((o=this.parent)==null?void 0:o._computePcbGlobalTransformBeforeLayout())??Ny(),this.computePcbPropsTransform())}getPrimitiveContainer(){var e,t;return this.isPrimitiveContainer?this:((t=(e=this.parent)==null?void 0:e.getPrimitiveContainer)==null?void 0:t.call(e))??null}_getPcbCircuitJsonBounds(){return{center:{x:0,y:0},bounds:{left:0,top:0,right:0,bottom:0},width:0,height:0}}_getPcbPrimitiveFlippedHelpers(){const e=this.getPrimitiveContainer(),t=e?e._parsedProps.layer==="bottom":!1;return{isFlipped:t,maybeFlipLayer:i=>t?i==="top"?"bottom":"top":i}}_setPositionFromLayout(e){throw new Error(`_setPositionFromLayout not implemented for ${this.componentName}`)}computeSchematicPropsTransform(){const{_parsedProps:e}=this;return Ku($d(e.schX??0,e.schY??0))}computeSchematicGlobalTransform(){var t,n;const e=this._getSchematicGlobalManualPlacementTransform(this);return e||Ku(((n=(t=this.parent)==null?void 0:t.computeSchematicGlobalTransform)==null?void 0:n.call(t))??Ny(),this.computeSchematicPropsTransform())}_getSchematicSymbolName(){const{_parsedProps:e}=this,t=this.config.schematicSymbolName;let n=e.schRotation;if(n===void 0&&(n=0),n=n%360,n<0&&(n+=360),e.schRotation!==void 0&&n%90!==0)throw new Error(`Schematic rotation ${e.schRotation} is not supported for ${this.componentName}`);const i=`${t}_horz`,o=`${t}_vert`,a=`${t}_up`,s=`${t}_down`,l=`${t}_left`,c=`${t}_right`;if(c in SI&&n===0)return c;if(a in SI&&n===90)return a;if(l in SI&&n===180)return l;if(s in SI&&n===270)return s;if(i in SI&&(n===0||n===180))return i;if(o in SI&&(n===90||n===270))return o;if(t in SI)return t}_getSchematicSymbolNameOrThrow(){const e=this._getSchematicSymbolName();if(!e)throw new Error(`No schematic symbol found (given: "${this.config.schematicSymbolName}")`);return e}getSchematicSymbol(){const e=this._getSchematicSymbolName();return e?SI[e]??null:null}_getPcbManualPlacementForComponent(e){var o;if(!this.isSubcircuit)return null;const t=this.props.layout,n=this.props.manualEdits;if(!t&&!n)return null;const i=((o=t==null?void 0:t.manual_pcb_placement_config)==null?void 0:o.positions)||(n==null?void 0:n.pcb_placements);if(!i)return null;for(const a of i)if(t&&pce(e,a.selector)||e.props.name===a.selector)return Xr(this._computePcbGlobalTransformBeforeLayout(),a.center);return null}_getSchematicManualPlacementForComponent(e){if(!this.isSubcircuit)return null;const t=this.props.manualEdits;if(!t)return null;const n=t.schematic_placements;if(!n)return null;for(const i of n)if(pce(e,i.selector)||e.props.name===i.selector)return Xr(this.computeSchematicGlobalTransform(),i.center);return null}_getSchematicGlobalManualPlacementTransform(e){var n,i;const t=(n=this.getSubcircuit())==null?void 0:n._parsedProps.manualEdits;if(!t)return null;for(const o of t.schematic_placements??[])if((pce(e,o.selector)||e.props.name===o.selector)&&o.relative_to==="group_center")return Ku(((i=this.parent)==null?void 0:i._computePcbGlobalTransformBeforeLayout())??Ny(),$d(o.center.x,o.center.y));return null}_getGlobalPcbPositionBeforeLayout(){return Xr(this._computePcbGlobalTransformBeforeLayout(),{x:0,y:0})}_getGlobalSchematicPositionBeforeLayout(){return Xr(this.computeSchematicGlobalTransform(),{x:0,y:0})}get root(){var e;return((e=this.parent)==null?void 0:e.root)??null}onAddToParent(e){this.parent=e}onPropsChange(e){}onChildChanged(e){var t,n;(n=(t=this.parent)==null?void 0:t.onChildChanged)==null||n.call(t,e)}add(e){if(!e.onAddToParent)throw new Error(`Invalid JSX Element: Expected a React component but received "${JSON.stringify(e)}"`);e.onAddToParent(this),e.parent=this,this.children.push(e)}addAll(e){for(const t of e)this.add(t)}remove(e){this.children=this.children.filter(t=>t!==e),this.childrenPendingRemoval.push(e),e.shouldBeRemoved=!0}getSubcircuitSelector(){const e=this._parsedProps.name,t=e?`${this.lowercaseComponentName}.${e}`:this.lowercaseComponentName;return!this.parent||this.parent.isSubcircuit?t:`${this.parent.getSubcircuitSelector()} > ${t}`}getFullPathSelector(){var i,o;const e=this._parsedProps.name,t=e?`${this.lowercaseComponentName}.${e}`:this.lowercaseComponentName,n=(o=(i=this.parent)==null?void 0:i.getFullPathSelector)==null?void 0:o.call(i);return n?`${n} > ${t}`:t}getNameAndAliases(){return[this._parsedProps.name,...this._parsedProps.portHints??[]].filter(Boolean)}isMatchingNameOrAlias(e){return this.getNameAndAliases().includes(e)}isMatchingAnyOf(e){return this.getNameAndAliases().some(t=>e.map(n=>n.toString()).includes(t))}getPcbSize(){throw new Error(`getPcbSize not implemented for ${this.componentName}`)}doesSelectorMatch(e){const t=[this.componentName,this.lowercaseComponentName],n=[this._parsedProps.name].filter(Boolean),i=e.trim().split(/\> /)[0],o=i[0];return i.length>1?!1:!!(e==="*"||e[0]==="#"&&e.slice(1)===this.props.id||e[0]==="."&&n.includes(e.slice(1))||/^[a-zA-Z0-9_]/.test(o)&&t.includes(o))}getSubcircuit(){var t,n;if(this.isSubcircuit)return this;const e=(n=(t=this.parent)==null?void 0:t.getSubcircuit)==null?void 0:n.call(t);if(!e)throw new Error("Component is not inside an opaque group (no board?)");return e}getGroup(){var e,t;return this.isGroup?this:((t=(e=this.parent)==null?void 0:e.getGroup)==null?void 0:t.call(e))??null}doInitialOptimizeSelectorCache(){var t;if(!this.isSubcircuit)return;const e=this.selectAll("port");for(const n of e){const i=(t=n.parent)==null?void 0:t.getNameAndAliases(),o=n.getNameAndAliases();if(i)for(const a of i)for(const s of o){const l=[`.${a} > .${s}`,`.${a} .${s}`];for(const c of l){const u=this._cachedSelectAllQueries.get(c);u?u.push(n):this._cachedSelectAllQueries.set(c,[n])}}}for(const[n,i]of this._cachedSelectAllQueries.entries())i.length===1&&this._cachedSelectOneQueries.set(n,i[0])}selectAll(e){if(this._cachedSelectAllQueries.has(e))return this._cachedSelectAllQueries.get(e);const t=n7e(e),n=qG(t,this,mce);if(n.length>0)return this._cachedSelectAllQueries.set(e,n),n;const[i,...o]=t.split(" "),a=oR(i,this,{adapter:t7e});if(!a)return[];const s=a.selectAll(o.join(" "));return this._cachedSelectAllQueries.set(e,s),s}selectOne(e,t){if(this._cachedSelectOneQueries.has(e))return this._cachedSelectOneQueries.get(e);const n=n7e(e);t!=null&&t.port&&(t.type="port");let i=null;if(t!=null&&t.type&&(i=qG(n,this,mce).find(c=>c.lowercaseComponentName===t.type)),i??(i=oR(n,this,mce)),i)return this._cachedSelectOneQueries.set(e,i),i;const[o,...a]=n.split(" "),s=oR(o,this,{adapter:t7e});return s?(i=s.selectOne(a.join(" "),t),this._cachedSelectOneQueries.set(e,i),i):null}getAvailablePcbLayers(){var e,t;if(this.isPcbPrimitive){const{maybeFlipLayer:n}=this._getPcbPrimitiveFlippedHelpers();return"layer"in this._parsedProps||this.componentName==="SmtPad"?[n(this._parsedProps.layer??"top")]:"layers"in this._parsedProps?this._parsedProps.layers:this.componentName==="PlatedHole"?((t=(e=this.root)==null?void 0:e._getBoard())==null?void 0:t.allLayers)??["top","bottom"]:[]}return[]}getDescendants(){const e=[];for(const t of this.children)e.push(t),e.push(...t.getDescendants());return e}getSelectableDescendants(){const e=[];for(const t of this.children)t.isSubcircuit?e.push(t):(e.push(t),e.push(...t.getSelectableDescendants()));return e}_getPinCount(){return 0}_getSchematicBoxDimensions(){return null}_getSchematicBoxComponentDimensions(){if(this.getSchematicSymbol()||!this.config.shouldRenderAsSchematicBox)return null;const{_parsedProps:e}=this;return{schWidth:e.schWidth,schHeight:e.schHeight}}renderError(e){var t;if(typeof e=="string")return super.renderError(e);(t=this.root)==null||t.db.pcb_placement_error.insert(e)}getString(){var i,o;const{lowercaseComponentName:e,_parsedProps:t,parent:n}=this;return(t==null?void 0:t.pinNumber)!==void 0&&((i=n==null?void 0:n.props)!=null&&i.name)&&(t!=null&&t.name)?`<${e}#${this._renderId}(pin:${t.pinNumber} .${n==null?void 0:n.props.name}>.${t.name}) />`:(o=n==null?void 0:n.props)!=null&&o.name&&(t!=null&&t.name)?`<${e}#${this._renderId}(.${n==null?void 0:n.props.name}>.${t==null?void 0:t.name}) />`:t!=null&&t.from&&(t!=null&&t.to)?`<${e}#${this._renderId}(from:${t.from} to:${t==null?void 0:t.to}) />`:t!=null&&t.name?`<${e}#${this._renderId} name=".${t==null?void 0:t.name}" />`:t!=null&&t.portHints?`<${e}#${this._renderId}(${t.portHints.map(a=>`.${a}`).join(", ")}) />`:`<${e}#${this._renderId} />`}get[Symbol.toStringTag](){return this.getString()}[Symbol.for("nodejs.util.inspect.custom")](){return this.getString()}},Ijt=class extends aI{constructor(r,e){super(r),this._parsedProps={...r,error:e,type:r.type||"unknown",component_name:r.name,error_type:"source_failed_to_create_component_error",message:e instanceof Error?e.message:String(e),pcbX:r.pcbX,pcbY:r.pcbY,schX:r.schX,schY:r.schY}}get config(){return{componentName:"ErrorPlaceholder",zodProps:Pn({}).passthrough()}}doInitialSourceRender(){var r,e,t,n;if((r=this.root)!=null&&r.db){const i=this._getGlobalPcbPositionBeforeLayout(),o=this._getGlobalSchematicPositionBeforeLayout();this.root.db.source_failed_to_create_component_error.insert({component_name:this._parsedProps.component_name,message:((n=(t=(e=this._parsedProps.error)==null?void 0:e.formattedError)==null?void 0:t._errors)==null?void 0:n.join("; "))||this._parsedProps.message,pcb_center:i,schematic_center:o})}}};function Cjt(r,e){return new Ijt(r,e)}function Ejt(r,e){const t=r;return t.__tsci={...e},r}var r7e={supportsMutation:!0,createInstance(r,e){const t=K7[r];if(!t)throw Object.keys(K7).length===0?new Error("No components registered in catalogue, did you forget to import lib/register-catalogue in your test file?"):new Error(`Unsupported component type (not registered in @tscircuit/core catalogue): "${r}" See CREATING_NEW_COMPONENTS.md`);try{return Ejt(new t(e),{})}catch(n){return Cjt(e,n)}},createTextInstance(){return{}},appendInitialChild(r,e){r.add(e)},appendChild(r,e){r.add(e)},appendChildToContainer(r,e){r.add(e)},finalizeInitialChildren(){return!1},prepareUpdate(){return null},shouldSetTextContent(){return!1},getRootHostContext(){return{}},getChildHostContext(){return{}},prepareForCommit(){return null},resetAfterCommit(){},commitMount(){},commitUpdate(){},removeChild(){},clearContainer(){},supportsPersistence:!1,getPublicInstance(r){return r},preparePortalMount(r){throw new Error("Function not implemented.")},scheduleTimeout(r,e){throw new Error("Function not implemented.")},cancelTimeout(r){throw new Error("Function not implemented.")},noTimeout:void 0,isPrimaryRenderer:!1,getInstanceFromNode(r){throw new Error("Function not implemented.")},beforeActiveInstanceBlur(){throw new Error("Function not implemented.")},afterActiveInstanceBlur(){throw new Error("Function not implemented.")},prepareScopeUpdate:(r,e)=>{throw new Error("Function not implemented.")},getInstanceFromScope:r=>{throw new Error("Function not implemented.")},detachDeletedInstance:r=>{throw new Error("Function not implemented.")},getCurrentEventPriority:()=>tR.DefaultEventPriority,getCurrentUpdatePriority:()=>tR.DefaultEventPriority,resolveUpdatePriority:()=>tR.DefaultEventPriority,setCurrentUpdatePriority:()=>{},maySuspendCommit:()=>!1,supportsHydration:!1},tM;Jh.version.startsWith("19.")?tM=a5e(r7e):tM=u5e(r7e);var _jt=r=>{const e={children:[],props:{name:"$root"},add(o){o.parent=this,this.children.push(o)},computePcbGlobalTransform(){return Ny()}},t=[],n=tM.createContainer(e,0,null,!1,null,"tsci",o=>{console.log("Error in createContainer"),console.error(o),t.push(o)},null);if(Jh.version.startsWith("19.")?(tM.updateContainerSync(r,n,null,()=>{}),tM.flushSyncWork()):tM.updateContainer(r,n,null,()=>{}),t.length>0)throw t[0];const i=tM.getPublicRootInstance(n);return i||e.children[0]},ZT=(r,e)=>{if(typeof r=="number")return r;if(r.startsWith("pin"))return Number(r.slice(3));if(!e)throw new Error(`No pin labels provided and pin number or label is not a number: "${r}"`);for(const t in e)if((Array.isArray(e[t])?e[t]:[e[t]]).includes(r))return Number(t.replace("pin",""));throw new Error(`No pin labels provided and pin number or label is not a number: "${r}"`)},xjt=(r,e)=>{if(!r)return;const t={},n={};for(const[i,o]of Object.entries(r)){const a=ZT(i,e);n[a]={...n[a],...o}}for(const[i,o]of Object.entries(n)){const a=`pin${i}`;t[a]={bottom_margin:o.bottomMargin,left_margin:o.leftMargin,right_margin:o.rightMargin,top_margin:o.topMargin}}return t},Bjt=r=>{if(r){if("leftSide"in r||"rightSide"in r||"topSide"in r||"bottomSide"in r)return{left_side:r.leftSide,right_side:r.rightSide,top_side:r.topSide,bottom_side:r.bottomSide};if("leftPinCount"in r||"rightPinCount"in r||"topPinCount"in r||"bottomPinCount"in r)return{left_size:r.leftPinCount,right_size:r.rightPinCount,top_size:r.topPinCount,bottom_size:r.bottomPinCount};if("leftSize"in r||"rightSize"in r||"topSize"in r||"bottomSize"in r)return{left_size:r.leftSize,right_size:r.rightSize,top_size:r.topSize,bottom_size:r.bottomSize}}};function i7e(r){const e=[];for(let t=0;t<r.length-1;t++)e.push([r[t],r[t+1]]);return e}var bjt=Pn({name:Pe()}),o7e=class extends aI{constructor(){super(...arguments);Ye(this,"source_net_id")}get config(){return{componentName:"Net",zodProps:bjt}}getPortSelector(){return`net.${this.props.name}`}doInitialSourceRender(){const{db:e}=this.root,{_parsedProps:t}=this,n=e.source_net.insert({name:t.name,member_source_group_ids:[]});this.source_net_id=n.source_net_id}doInitialSourceParentAttachment(){const e=this.getSubcircuit();if(!e)return;const{db:t}=this.root;t.source_net.update(this.source_net_id,{subcircuit_id:e.subcircuit_id})}getAllConnectedPorts(){const e=this.getSubcircuit().selectAll("port"),t=[];for(const n of e){const i=n._getDirectlyConnectedTraces();for(const o of i)if(o._isExplicitlyConnectedToNet(this)){t.push(n);break}}return t}_getAllDirectlyConnectedTraces(){const e=this.getSubcircuit().selectAll("trace"),t=[];for(const n of e)n._isExplicitlyConnectedToNet(this)&&t.push(n);return t}doInitialPcbRouteNetIslands(){var a;if((a=this.root)!=null&&a.pcbDisabled||this.getSubcircuit()._parsedProps.routingDisabled||this.getSubcircuit()._getAutorouterConfig().groupMode!=="sequential-trace")return;const{db:e}=this.root,{_parsedProps:t}=this,n=this._getAllDirectlyConnectedTraces().filter(s=>{var l;return(((l=s._portsRoutedOnPcb)==null?void 0:l.length)??0)>0}),i=[];for(const s of n){const l=s._portsRoutedOnPcb,c=i.find(u=>l.some(A=>u.ports.includes(A)));if(!c){i.push({ports:[...l],traces:[s]});continue}c.traces.push(s),c.ports.push(...l)}if(i.length===0)return;const o=i7e(i);for(const[s,l]of o){const c=s.ports.map(x=>x._getGlobalPcbPositionBeforeLayout()),u=l.ports.map(x=>x._getGlobalPcbPositionBeforeLayout());let A=1/0,d=[-1,-1];for(let x=0;x<c.length;x++){const w=c[x];for(let P=0;P<u.length;P++){const L=u[P],O=Math.sqrt((w.x-L.x)**2+(w.y-L.y)**2);O<A&&(A=O,d=[x,P])}}const f=s.ports[d[0]],m=l.ports[d[1]],C=e.toArray().filter(x=>x.type==="pcb_smtpad"||x.type==="pcb_trace"||x.type==="pcb_plated_hole"||x.type==="pcb_hole"||x.type==="source_port"||x.type==="pcb_port"),{solution:E}=CPe(C.concat([{type:"source_trace",source_trace_id:"__net_trace_tmp",connected_source_port_ids:[f.source_port_id,m.source_port_id]}])),_=E[0];if(!_){this.renderError({pcb_trace_error_id:"",pcb_trace_id:"__net_trace_tmp",pcb_component_ids:[f.pcb_component_id,m.pcb_component_id].filter(Boolean),pcb_port_ids:[f.pcb_port_id,m.pcb_port_id].filter(Boolean),type:"pcb_trace_error",error_type:"pcb_trace_error",message:`Failed to route net islands for "${this.getString()}"`,source_trace_id:"__net_trace_tmp"});return}e.pcb_trace.insert(_)}}renderError(e){var t;if(typeof e=="string")return super.renderError(e);(t=this.root)==null||t.db.pcb_trace_error.insert(e)}},a7e=(r,e)=>{for(const t of e)if(typeof t=="string"&&t.startsWith("net.")){if(/net\.[^\s>]*\./.test(t))throw new Error('Net names cannot contain a period, try using "sel.net..." to autocomplete with conventional net names, e.g. V3_3');if(/net\.[0-9]/.test(t))throw new Error('Net names cannot start with a number, try using a prefix like "VBUS1"');const n=r.getSubcircuit();if(!n.selectOne(t)){const i=new o7e({name:t.split("net.")[1]});n.add(i)}}},yce=class extends aI{constructor(){super(...arguments);Ye(this,"pcb_smtpad_id",null);Ye(this,"matchedPort",null);Ye(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SmtPad",zodProps:UPe}}getPcbSize(){const{_parsedProps:e}=this;if(e.shape==="circle")return{width:e.radius*2,height:e.radius*2};if(e.shape==="rect")return{width:e.width,height:e.height};throw new Error(`getPcbSize for shape "${e.shape}" not implemented for ${this.componentName}`)}doInitialPortMatching(){var t;const e=(t=this.getPrimitiveContainer())==null?void 0:t.selectAll("port");if(this.props.portHints){for(const n of e)if(n.isMatchingAnyOf(this.props.portHints)){this.matchedPort=n,n.registerMatch(this);return}}}doInitialPcbPrimitiveRender(){var d,f,m,C,E,_,x,w,P,L;if((d=this.root)!=null&&d.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this;if(!t.portHints)return;const n=this.getPrimitiveContainer(),i=this.getSubcircuit(),o=this._getGlobalPcbPositionBeforeLayout();n==null||n._getGlobalPcbPositionBeforeLayout();const a=YM(this._computePcbGlobalTransformBeforeLayout()),s=Math.abs(a.rotation.angle*(180/Math.PI)-90)%180<.01,{maybeFlipLayer:l}=this._getPcbPrimitiveFlippedHelpers(),c=(n==null?void 0:n._parsedProps.pcbRotation)??0;let u=null;const A=((f=this.parent)==null?void 0:f.pcb_component_id)??((m=this.getPrimitiveContainer())==null?void 0:m.pcb_component_id);t.shape==="circle"?(u=e.pcb_smtpad.insert({pcb_component_id:A,pcb_port_id:(C=this.matchedPort)==null?void 0:C.pcb_port_id,layer:l(t.layer??"top"),shape:"circle",radius:t.radius,port_hints:t.portHints.map(O=>O.toString()),x:o.x,y:o.y,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0}),e.pcb_solder_paste.insert({layer:u.layer,shape:"circle",radius:u.radius*.7,x:u.x,y:u.y,pcb_component_id:u.pcb_component_id,pcb_smtpad_id:u.pcb_smtpad_id,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((E=this.getGroup())==null?void 0:E.pcb_group_id)??void 0})):t.shape==="rect"&&(u=c===0||s?e.pcb_smtpad.insert({pcb_component_id:A,pcb_port_id:(_=this.matchedPort)==null?void 0:_.pcb_port_id,layer:l(t.layer??"top"),shape:"rect",width:s?t.height:t.width,height:s?t.width:t.height,port_hints:t.portHints.map(O=>O.toString()),x:o.x,y:o.y,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((x=this.getGroup())==null?void 0:x.pcb_group_id)??void 0}):e.pcb_smtpad.insert({pcb_component_id:A,layer:l(t.layer??"top"),shape:"rotated_rect",width:t.width,height:t.height,x:o.x,y:o.y,ccw_rotation:c,port_hints:t.portHints.map(O=>O.toString()),subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((w=this.getGroup())==null?void 0:w.pcb_group_id)??void 0}),u.shape==="rect"&&e.pcb_solder_paste.insert({layer:l(t.layer??"top"),shape:"rect",width:u.width*.7,height:u.height*.7,x:u.x,y:u.y,pcb_component_id:u.pcb_component_id,pcb_smtpad_id:u.pcb_smtpad_id,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((P=this.getGroup())==null?void 0:P.pcb_group_id)??void 0}),u.shape==="rotated_rect"&&e.pcb_solder_paste.insert({layer:l(t.layer??"top"),shape:"rotated_rect",width:u.width*.7,height:u.height*.7,x:u.x,y:u.y,ccw_rotation:c,pcb_component_id:u.pcb_component_id,pcb_smtpad_id:u.pcb_smtpad_id,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((L=this.getGroup())==null?void 0:L.pcb_group_id)??void 0})),u&&(this.pcb_smtpad_id=u.pcb_smtpad_id)}doInitialPcbPortAttachment(){var t,n;if((t=this.root)!=null&&t.pcbDisabled)return;const{db:e}=this.root;e.pcb_smtpad.update(this.pcb_smtpad_id,{pcb_port_id:(n=this.matchedPort)==null?void 0:n.pcb_port_id})}_getPcbCircuitJsonBounds(){const{db:e}=this.root,t=e.pcb_smtpad.get(this.pcb_smtpad_id);if(t.shape==="rect")return{center:{x:t.x,y:t.y},bounds:{left:t.x-t.width/2,top:t.y+t.height/2,right:t.x+t.width/2,bottom:t.y-t.height/2},width:t.width,height:t.height};if(t.shape==="rotated_rect"){const n=t.ccw_rotation*Math.PI/180,i=Math.cos(n),o=Math.sin(n),a=t.width/2,s=t.height/2,l=Math.abs(a*i)+Math.abs(s*o),c=Math.abs(a*o)+Math.abs(s*i);return{center:{x:t.x,y:t.y},bounds:{left:t.x-l,right:t.x+l,top:t.y-c,bottom:t.y+c},width:l*2,height:c*2}}if(t.shape==="circle")return{center:{x:t.x,y:t.y},bounds:{left:t.x-t.radius,top:t.y-t.radius,right:t.x+t.radius,bottom:t.y+t.radius},width:t.radius*2,height:t.radius*2};throw new Error(`circuitJson bounds calculation not implemented for shape "${t.shape}"`)}_setPositionFromLayout(e){var i;const{db:t}=this.root;t.pcb_smtpad.update(this.pcb_smtpad_id,{x:e.x,y:e.y});const n=t.pcb_solder_paste.list().find(o=>o.pcb_smtpad_id===this.pcb_smtpad_id);t.pcb_solder_paste.update(n==null?void 0:n.pcb_solder_paste_id,{x:e.x,y:e.y}),(i=this.matchedPort)==null||i._setPositionFromLayout(e)}},s7e=class extends aI{constructor(){super(...arguments);Ye(this,"pcb_silkscreen_path_id",null);Ye(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SilkscreenPath",zodProps:o8e}}doInitialPcbPrimitiveRender(){var l,c,u;if((l=this.root)!=null&&l.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,{maybeFlipLayer:n}=this._getPcbPrimitiveFlippedHelpers(),i=n(t.layer??"top");if(i!=="top"&&i!=="bottom")throw new Error(`Invalid layer "${i}" for SilkscreenPath. Must be "top" or "bottom".`);const o=this._computePcbGlobalTransformBeforeLayout(),a=this.getSubcircuit(),s=e.pcb_silkscreen_path.insert({pcb_component_id:(c=this.parent)==null?void 0:c.pcb_component_id,layer:i,route:t.route.map(A=>{const d=Xr(o,{x:A.x,y:A.y});return{...A,x:d.x,y:d.y}}),stroke_width:t.strokeWidth??.1,subcircuit_id:(a==null?void 0:a.subcircuit_id)??void 0,pcb_group_id:((u=this.getGroup())==null?void 0:u.pcb_group_id)??void 0});this.pcb_silkscreen_path_id=s.pcb_silkscreen_path_id}getPcbSize(){const{_parsedProps:e}=this;if(!e.route||e.route.length===0)return{width:0,height:0};let t=1/0,n=-1/0,i=1/0,o=-1/0;for(const a of e.route)t=Math.min(t,a.x),n=Math.max(n,a.x),i=Math.min(i,a.y),o=Math.max(o,a.y);return{width:n-t,height:o-i}}},Sjt=Pn({route:lo(i8),source_trace_id:Pe().optional()}),l7e=class extends aI{constructor(){super(...arguments);Ye(this,"pcb_trace_id",null);Ye(this,"isPcbPrimitive",!0)}get config(){return{componentName:"PcbTrace",zodProps:Sjt}}doInitialPcbPrimitiveRender(){var c,u;if((c=this.root)!=null&&c.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this.getPrimitiveContainer(),i=this.getSubcircuit(),{maybeFlipLayer:o}=this._getPcbPrimitiveFlippedHelpers(),a=this._computePcbGlobalTransformBeforeLayout(),s=t.route.map(A=>{const{x:d,y:f,...m}=A,C=Xr(a,{x:d,y:f});return A.route_type==="wire"&&A.layer?{...C,...m,layer:o(A.layer)}:{...C,...m}}),l=e.pcb_trace.insert({pcb_component_id:n.pcb_component_id,source_trace_id:t.source_trace_id,route:s,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((u=this.getGroup())==null?void 0:u.pcb_group_id)??void 0});this.pcb_trace_id=l.pcb_trace_id}getPcbSize(){const{_parsedProps:e}=this;if(!e.route||e.route.length===0)return{width:0,height:0};let t=1/0,n=-1/0,i=1/0,o=-1/0;for(const a of e.route)t=Math.min(t,a.x),n=Math.max(n,a.x),i=Math.min(i,a.y),o=Math.max(o,a.y),a.route_type==="wire"&&(t=Math.min(t,a.x-a.width/2),n=Math.max(n,a.x+a.width/2),i=Math.min(i,a.y-a.width/2),o=Math.max(o,a.y+a.width/2));return t===1/0||n===-1/0||i===1/0||o===-1/0?{width:0,height:0}:{width:n-t,height:o-i}}},vce=class extends aI{constructor(){super(...arguments);Ye(this,"pcb_plated_hole_id",null);Ye(this,"matchedPort",null);Ye(this,"isPcbPrimitive",!0)}get config(){return{componentName:"PlatedHole",zodProps:QPe}}getAvailablePcbLayers(){return["top","inner1","inner2","bottom"]}getPcbSize(){const{_parsedProps:e}=this;if(e.shape==="circle")return{width:e.outerDiameter,height:e.outerDiameter};if(e.shape==="oval"||e.shape==="pill")return{width:e.outerWidth,height:e.outerHeight};if(e.shape==="circular_hole_with_rect_pad")return{width:e.rectPadWidth,height:e.rectPadHeight};if(e.shape==="pill_hole_with_rect_pad")return{width:e.rectPadWidth,height:e.rectPadHeight};throw new Error(`getPcbSize for shape "${e.shape}" not implemented for ${this.componentName}`)}_getPcbCircuitJsonBounds(){const{db:e}=this.root,t=e.pcb_plated_hole.get(this.pcb_plated_hole_id),n=this.getPcbSize();return{center:{x:t.x,y:t.y},bounds:{left:t.x-n.width/2,top:t.y+n.height/2,right:t.x+n.width/2,bottom:t.y-n.height/2},width:n.width,height:n.height}}_setPositionFromLayout(e){var n;const{db:t}=this.root;t.pcb_plated_hole.update(this.pcb_plated_hole_id,{x:e.x,y:e.y}),(n=this.matchedPort)==null||n._setPositionFromLayout(e)}doInitialPortMatching(){var t;const e=(t=this.getPrimitiveContainer())==null?void 0:t.selectAll("port");if(this.props.portHints){for(const n of e)if(n.isMatchingAnyOf(this.props.portHints)){this.matchedPort=n,n.registerMatch(this);return}}}doInitialPcbPrimitiveRender(){var a,s,l,c,u,A,d,f,m,C,E,_,x,w,P;if((a=this.root)!=null&&a.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this._getGlobalPcbPositionBeforeLayout(),i=((s=this.parent)==null?void 0:s.pcb_component_id)??((l=this.getPrimitiveContainer())==null?void 0:l.pcb_component_id),o=this.getSubcircuit();if(t.shape==="circle"){const L=e.pcb_plated_hole.insert({pcb_component_id:i,pcb_port_id:(c=this.matchedPort)==null?void 0:c.pcb_port_id,outer_diameter:t.outerDiameter,hole_diameter:t.holeDiameter,shape:"circle",port_hints:this.getNameAndAliases(),x:n.x,y:n.y,layers:["top","bottom"],subcircuit_id:(o==null?void 0:o.subcircuit_id)??void 0,pcb_group_id:((u=this.getGroup())==null?void 0:u.pcb_group_id)??void 0});this.pcb_plated_hole_id=L.pcb_plated_hole_id,e.pcb_solder_paste.insert({layer:"top",shape:"circle",radius:t.outerDiameter/2,x:n.x,y:n.y,subcircuit_id:(o==null?void 0:o.subcircuit_id)??void 0,pcb_group_id:((A=this.getGroup())==null?void 0:A.pcb_group_id)??void 0}),e.pcb_solder_paste.insert({layer:"bottom",shape:"circle",radius:t.outerDiameter/2,x:n.x,y:n.y,subcircuit_id:(o==null?void 0:o.subcircuit_id)??void 0,pcb_group_id:((d=this.getGroup())==null?void 0:d.pcb_group_id)??void 0})}else if(t.shape==="pill"||t.shape==="oval"){const L=e.pcb_plated_hole.insert({pcb_component_id:i,pcb_port_id:(f=this.matchedPort)==null?void 0:f.pcb_port_id,outer_width:t.outerWidth,outer_height:t.outerHeight,hole_width:t.holeWidth,hole_height:t.holeHeight,shape:t.shape,port_hints:this.getNameAndAliases(),x:n.x,y:n.y,layers:["top","bottom"],subcircuit_id:(o==null?void 0:o.subcircuit_id)??void 0,pcb_group_id:((m=this.getGroup())==null?void 0:m.pcb_group_id)??void 0});this.pcb_plated_hole_id=L.pcb_plated_hole_id,e.pcb_solder_paste.insert({layer:"top",shape:t.shape,width:t.outerWidth,height:t.outerHeight,x:n.x,y:n.y,subcircuit_id:(o==null?void 0:o.subcircuit_id)??void 0,pcb_group_id:((C=this.getGroup())==null?void 0:C.pcb_group_id)??void 0}),e.pcb_solder_paste.insert({layer:"bottom",shape:t.shape,width:t.outerWidth,height:t.outerHeight,x:n.x,y:n.y,subcircuit_id:(o==null?void 0:o.subcircuit_id)??void 0,pcb_group_id:((E=this.getGroup())==null?void 0:E.pcb_group_id)??void 0})}else if(t.shape==="circular_hole_with_rect_pad"){const L=e.pcb_plated_hole.insert({pcb_component_id:i,pcb_port_id:(_=this.matchedPort)==null?void 0:_.pcb_port_id,hole_diameter:t.holeDiameter,rect_pad_width:t.rectPadWidth,rect_pad_height:t.rectPadHeight,shape:"circular_hole_with_rect_pad",port_hints:this.getNameAndAliases(),x:n.x,y:n.y,layers:["top","bottom"],subcircuit_id:(o==null?void 0:o.subcircuit_id)??void 0,pcb_group_id:((x=this.getGroup())==null?void 0:x.pcb_group_id)??void 0});this.pcb_plated_hole_id=L.pcb_plated_hole_id}else if(t.shape==="pill_hole_with_rect_pad"){const L=e.pcb_plated_hole.insert({pcb_component_id:i,pcb_port_id:(w=this.matchedPort)==null?void 0:w.pcb_port_id,hole_width:t.holeWidth,hole_height:t.holeHeight,rect_pad_width:t.rectPadWidth,rect_pad_height:t.rectPadHeight,shape:"pill_hole_with_rect_pad",port_hints:this.getNameAndAliases(),x:n.x,y:n.y,layers:["top","bottom"],subcircuit_id:(o==null?void 0:o.subcircuit_id)??void 0,pcb_group_id:((P=this.getGroup())==null?void 0:P.pcb_group_id)??void 0});this.pcb_plated_hole_id=L.pcb_plated_hole_id}}doInitialPcbPortAttachment(){var t,n;if((t=this.root)!=null&&t.pcbDisabled)return;const{db:e}=this.root;e.pcb_plated_hole.update(this.pcb_plated_hole_id,{pcb_port_id:(n=this.matchedPort)==null?void 0:n.pcb_port_id})}},Ice=class extends aI{constructor(){super(...arguments);Ye(this,"pcb_keepout_id",null);Ye(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Keepout",zodProps:t8e}}doInitialPcbPrimitiveRender(){var l,c,u;if((l=this.root)!=null&&l.pcbDisabled)return;const e=this.getSubcircuit(),{db:t}=this.root,{_parsedProps:n}=this,i=this._getGlobalPcbPositionBeforeLayout(),o=YM(this._computePcbGlobalTransformBeforeLayout()),a=Math.abs(o.rotation.angle*(180/Math.PI)-90)%180<.01;let s=null;n.shape==="circle"?s=t.pcb_keepout.insert({layers:["top"],shape:"circle",radius:n.radius,center:{x:i.x,y:i.y},subcircuit_id:(e==null?void 0:e.subcircuit_id)??void 0,pcb_group_id:((c=e==null?void 0:e.getGroup())==null?void 0:c.pcb_group_id)??void 0}):n.shape==="rect"&&(s=t.pcb_keepout.insert({layers:["top"],shape:"rect",...a?{width:n.height,height:n.width}:{width:n.width,height:n.height},center:{x:i.x,y:i.y},subcircuit_id:(e==null?void 0:e.subcircuit_id)??void 0,pcb_group_id:((u=e==null?void 0:e.getGroup())==null?void 0:u.pcb_group_id)??void 0})),s&&(this.pcb_keepout_id=s.pcb_keepout_id)}},c7e=class extends aI{constructor(){super(...arguments);Ye(this,"pcb_hole_id",null);Ye(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Hole",zodProps:FPe}}getPcbSize(){const{_parsedProps:e}=this;return{width:e.diameter,height:e.diameter}}doInitialPcbPrimitiveRender(){var a,s;if((a=this.root)!=null&&a.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this.getSubcircuit(),i=this._getGlobalPcbPositionBeforeLayout(),o=e.pcb_hole.insert({hole_shape:"circle",hole_diameter:t.diameter,x:i.x,y:i.y,subcircuit_id:(n==null?void 0:n.subcircuit_id)??void 0,pcb_group_id:((s=n==null?void 0:n.getGroup())==null?void 0:s.pcb_group_id)??void 0});this.pcb_hole_id=o.pcb_hole_id}_getPcbCircuitJsonBounds(){const{db:e}=this.root,t=e.pcb_hole.get(this.pcb_hole_id),n=this.getPcbSize();return{center:{x:t.x,y:t.y},bounds:{left:t.x-n.width/2,top:t.y-n.height/2,right:t.x+n.width/2,bottom:t.y+n.height/2},width:n.width,height:n.height}}_setPositionFromLayout(e){const{db:t}=this.root;t.pcb_hole.update(this.pcb_hole_id,{x:e.x,y:e.y})}},Cce=class extends aI{constructor(){super(...arguments);Ye(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SilkscreenText",zodProps:i8e}}doInitialPcbPrimitiveRender(){var s,l;if((s=this.root)!=null&&s.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this.getPrimitiveContainer(),i=this._getGlobalPcbPositionBeforeLayout(),{maybeFlipLayer:o}=this._getPcbPrimitiveFlippedHelpers(),a=this.getSubcircuit();e.pcb_silkscreen_text.insert({anchor_alignment:t.anchorAlignment,anchor_position:{x:i.x,y:i.y},font:t.font??"tscircuit2024",font_size:t.fontSize??1,layer:o(t.layer??"top"),text:t.text??"",ccw_rotation:t.pcbRotation,pcb_component_id:n.pcb_component_id,subcircuit_id:(a==null?void 0:a.subcircuit_id)??void 0,pcb_group_id:((l=this.getGroup())==null?void 0:l.pcb_group_id)??void 0})}getPcbSize(){const{_parsedProps:e}=this,t=e.fontSize??1,i=(e.text??"").length*t,o=t;return{width:i*t,height:o*t}}},wjt=({elm:r,pinLabels:e,layer:t,readableRotation:n,anchorAlignment:i})=>{const o=r.text.replace(/[{}]/g,"").toLowerCase();let a=o;if(Array.isArray(e)){const s=parseInt(o.replace(/[^\d]/g,""),10)-1;a=String(e[s]??o)}else typeof e=="object"&&(a=String(e[o]??o));return new Cce({anchorAlignment:i||"center",text:a??o,layer:t||"top",fontSize:r.font_size+.2,pcbX:isNaN(r.anchor_position.x)?0:r.anchor_position.x,pcbY:r.anchor_position.y,pcbRotation:n??0})},Qjt=(r,e)=>((-parseInt(r||"0",10)+(e??0))%360+360)%360,u7e=({componentName:r,componentRotation:e,footprint:t,pinLabels:n},i)=>{const o=[];for(const a of i)if(a.type==="pcb_smtpad"&&a.shape==="rect")o.push(new yce({pcbX:a.x,pcbY:a.y,layer:a.layer,shape:"rect",height:a.height,width:a.width,portHints:a.port_hints}));else if(a.type==="pcb_smtpad"&&a.shape==="circle")o.push(new yce({pcbX:a.x,pcbY:a.y,layer:a.layer,shape:"circle",radius:a.radius,portHints:a.port_hints}));else if(a.type==="pcb_silkscreen_path")o.push(new s7e({layer:a.layer,route:a.route,strokeWidth:a.stroke_width}));else if(a.type==="pcb_plated_hole")a.shape==="circle"?o.push(new vce({pcbX:a.x,pcbY:a.y,shape:"circle",holeDiameter:a.hole_diameter,outerDiameter:a.outer_diameter,portHints:a.port_hints})):a.shape==="circular_hole_with_rect_pad"&&o.push(new vce({pcbX:a.x,pcbY:a.y,shape:"circular_hole_with_rect_pad",holeDiameter:a.hole_diameter,rectPadHeight:a.rect_pad_height,rectPadWidth:a.rect_pad_width,portHints:a.port_hints}));else if(a.type==="pcb_keepout"&&a.shape==="circle")o.push(new Ice({pcbX:a.center.x,pcbY:a.center.y,shape:"circle",radius:a.radius}));else if(a.type==="pcb_keepout"&&a.shape==="rect")o.push(new Ice({pcbX:a.center.x,pcbY:a.center.y,shape:"rect",width:a.width,height:a.height}));else if(a.type==="pcb_hole"&&a.hole_shape==="circle")o.push(new c7e({pcbX:a.x,pcbY:a.y,diameter:a.hole_diameter}));else if(a.type==="pcb_silkscreen_text"){const s=Qjt(e,a.ccw_rotation);t.includes("pinrow")&&a.text.includes("PIN")?o.push(wjt({elm:a,pinLabels:n,layer:a.layer,readableRotation:s,anchorAlignment:a.anchor_alignment})):o.push(new Cce({anchorAlignment:a.anchor_alignment||"center",text:r,fontSize:a.font_size+.2,pcbX:isNaN(a.anchor_position.x)?0:a.anchor_position.x,pcbY:a.anchor_position.y,pcbRotation:s??0}))}else a.type==="pcb_trace"&&o.push(new l7e({route:a.route}));return o};function Ece(r){let e=1/0,t=1/0,n=-1/0,i=-1/0,o=!1;for(const l of r)if(l.isPcbPrimitive&&!l.componentName.startsWith("Silkscreen")){const{x:c,y:u}=l._getGlobalPcbPositionBeforeLayout(),{width:A,height:d}=l.getPcbSize();e=Math.min(e,c-A/2),t=Math.min(t,u-d/2),n=Math.max(n,c+A/2),i=Math.max(i,u+d/2),o=!0}else if(l.children.length>0){const c=Ece(l.children);(c.width>0||c.height>0)&&(e=Math.min(e,c.minX),t=Math.min(t,c.minY),n=Math.max(n,c.maxX),i=Math.max(i,c.maxY),o=!0)}if(!o)return{minX:0,minY:0,maxX:0,maxY:0,width:0,height:0};let a=n-e,s=i-t;return a<0&&(a=0),s<0&&(s=0),{minX:e,minY:t,maxX:n,maxY:i,width:a,height:s}}function Mjt(r,e){const t=e.x-r.x,n=e.y-r.y;return Math.abs(t)>Math.abs(n)?t>=0?"right":"left":n>=0?"up":"down"}var Djt=r=>{if(r.length<=1)return!0;const e=r.map(o=>{const a=o._getPcbCircuitJsonBounds();return{left:a.bounds.left,right:a.bounds.right,top:a.bounds.top,bottom:a.bounds.bottom}}),t=Array(e.length).fill(!1).map(()=>Array(e.length).fill(!1));for(let o=0;o<e.length;o++)for(let a=o+1;a<e.length;a++){const s=e[o],l=e[a];t[o][a]=t[a][o]=!(s.right<l.left||s.left>l.right||s.bottom>l.top||s.top<l.bottom)}const n=new Set,i=o=>{n.add(o);for(let a=0;a<e.length;a++)t[o][a]&&!n.has(a)&&i(a)};return i(0),n.size===e.length},Rjt=r=>{if(r.length===0)throw new Error("Cannot get center of empty PCB primitives array");const e=r.map(i=>i._getPcbCircuitJsonBounds().center).filter(Boolean),t=e.reduce((i,o)=>i+o.x,0),n=e.reduce((i,o)=>i+o.y,0);return{x:t/e.length,y:n/e.length}},Njt=Pn({name:Pe().optional(),pinNumber:Nr().optional(),aliases:lo(Pe()).optional()}),Hw=class extends aI{constructor(e,t={}){if(!e.name&&e.pinNumber!==void 0&&(e.name=`pin${e.pinNumber}`),!e.name)throw new Error("Port must have a name or a pinNumber");super(e);Ye(this,"source_port_id",null);Ye(this,"pcb_port_id",null);Ye(this,"schematic_port_id",null);Ye(this,"schematicSymbolPortDef",null);Ye(this,"matchedComponents");Ye(this,"facingDirection",null);Ye(this,"originDescription",null);t.originDescription&&(this.originDescription=t.originDescription),this.matchedComponents=[]}get config(){return{componentName:"Port",zodProps:Njt}}_getGlobalPcbPositionBeforeLayout(){const e=this.matchedComponents.find(n=>n.isPcbPrimitive),t=this.parent;if(t&&!t.props.footprint)throw new Error(`${t.componentName} "${t.props.name}" does not have a footprint. Add a footprint prop, e.g. <${t.componentName.toLowerCase()} footprint="..." />`);if(!e)throw new Error(`Port ${this} has no matching PCB primitives. This often means the footprint's pads lack matching port hints.`);return(e==null?void 0:e._getGlobalPcbPositionBeforeLayout())??{x:0,y:0}}_getPcbCircuitJsonBounds(){if(!this.pcb_port_id)return super._getPcbCircuitJsonBounds();const{db:e}=this.root,t=e.pcb_port.get(this.pcb_port_id);return{center:{x:t.x,y:t.y},bounds:{left:0,top:0,right:0,bottom:0},width:0,height:0}}_getGlobalPcbPositionAfterLayout(){return this._getPcbCircuitJsonBounds().center}_getPortsInternallyConnectedToThisPort(){const e=this.parent;if(!e||!e._getInternallyConnectedPins)return[];const t=e._getInternallyConnectedPins();for(const n of t)if(n.some(i=>i===this))return n;return[]}_hasSchematicPort(){var n,i;if((n=this.parent)==null?void 0:n.getSchematicSymbol())return!!(this.schematicSymbolPortDef||this._getPortsInternallyConnectedToThisPort().some(a=>a.schematicSymbolPortDef));const t=(i=this==null?void 0:this.parent)==null?void 0:i._getSchematicBoxDimensions();return!!(t&&this.props.pinNumber!==void 0&&t.getPortPositionByPinNumber(this.props.pinNumber))}_getGlobalSchematicPositionBeforeLayout(){var n,i,o;const e=(n=this.parent)==null?void 0:n.getSchematicSymbol();if(e){let a=this.schematicSymbolPortDef;if(!a&&(a=((i=this._getPortsInternallyConnectedToThisPort().find(l=>l.schematicSymbolPortDef))==null?void 0:i.schematicSymbolPortDef)??null,!a))throw new Error(`Couldn't find schematicSymbolPortDef for port ${this.getString()}, searched internally connected ports and none had a schematicSymbolPortDef. Why are we trying to get the schematic position of this port?`);const s=Ku(this.parent.computeSchematicGlobalTransform(),$d(-e.center.x,-e.center.y));return Xr(s,a)}const t=(o=this==null?void 0:this.parent)==null?void 0:o._getSchematicBoxDimensions();if(t&&this.props.pinNumber!==void 0){const a=t.getPortPositionByPinNumber(this.props.pinNumber);if(!a)throw new Error(`Couldn't find position for schematic_port for port ${this.getString()} inside of the schematic box`);return Xr(this.parent.computeSchematicGlobalTransform(),a)}throw new Error(`Couldn't find position for schematic_port for port ${this.getString()}`)}_getGlobalSchematicPositionAfterLayout(){const{db:e}=this.root;if(!this.schematic_port_id)throw new Error(`Can't get schematic port position after layout for "${this.getString()}", no schematic_port_id`);const t=e.schematic_port.get(this.schematic_port_id);if(!t)throw new Error(`Schematic port not found when trying to get post-layout position: ${this.schematic_port_id}`);return t.center}registerMatch(e){this.matchedComponents.push(e)}getNameAndAliases(){const{_parsedProps:e}=this;return Array.from(new Set([...e.aliases??[],...e.name?[e.name]:[],...typeof e.pinNumber=="number"?[`pin${e.pinNumber}`,e.pinNumber.toString()]:[],...this.externallyAddedAliases??[]]))}isMatchingPort(e){return this.isMatchingAnyOf(e.getNameAndAliases())}getPortSelector(){var e;return`.${(e=this.parent)==null?void 0:e.props.name} > port.${this.props.name}`}getAvailablePcbLayers(){return Array.from(new Set(this.matchedComponents.flatMap(e=>e.getAvailablePcbLayers())))}_getDirectlyConnectedTraces(){return this.getSubcircuit().selectAll("trace").filter(n=>n._isExplicitlyConnectedToPort(this))}doInitialSourceRender(){var o,a;const{db:e}=this.root,{_parsedProps:t}=this,n=this.getNameAndAliases(),i=e.source_port.insert({name:t.name,pin_number:t.pinNumber,port_hints:n,source_component_id:(o=this.parent)==null?void 0:o.source_component_id,subcircuit_id:(a=this.getSubcircuit())==null?void 0:a.subcircuit_id});this.source_port_id=i.source_port_id}doInitialSourceParentAttachment(){var t,n,i,o,a;const{db:e}=this.root;if(!((t=this.parent)!=null&&t.source_component_id))throw new Error(`${this.getString()} has no parent source component (parent: ${(n=this.parent)==null?void 0:n.getString()})`);e.source_port.update(this.source_port_id,{source_component_id:(i=this.parent)==null?void 0:i.source_component_id,subcircuit_id:(o=this.getSubcircuit())==null?void 0:o.subcircuit_id}),this.source_component_id=(a=this.parent)==null?void 0:a.source_component_id}doInitialPcbPortRender(){var o,a,s,l,c;if((o=this.root)!=null&&o.pcbDisabled)return;const{db:e}=this.root,{matchedComponents:t}=this;if(!((a=this.parent)!=null&&a.pcb_component_id))throw new Error(`${this.getString()} has no parent pcb component, cannot render pcb_port (parent: ${(s=this.parent)==null?void 0:s.getString()})`);const n=t.filter(u=>u.isPcbPrimitive);if(n.length===0)return;let i=null;if(n.length===1&&(i=n[0]._getPcbCircuitJsonBounds().center),n.length>1){if(!Djt(n))throw new Error(`${this.getString()} has multiple non-overlapping pcb matches, unclear how to place pcb_port: ${n.map(u=>u.getString()).join(", ")}. (Note: tscircuit core does not currently allow you to specify internally connected pcb primitives with the same port hints, try giving them different port hints and specifying they are connected externally- or file an issue)`);i=Rjt(n)}if(i){const u=this.getSubcircuit(),A=e.pcb_port.insert({pcb_component_id:(l=this.parent)==null?void 0:l.pcb_component_id,layers:this.getAvailablePcbLayers(),subcircuit_id:(u==null?void 0:u.subcircuit_id)??void 0,pcb_group_id:((c=this.getGroup())==null?void 0:c.pcb_group_id)??void 0,...i,source_port_id:this.source_port_id});this.pcb_port_id=A.pcb_port_id}else{const u=n[0];throw new Error(`${u.getString()} does not have a center or _getGlobalPcbPositionBeforeLayout method (needed for pcb_port placement)`)}}doInitialSchematicPortRender(){var A;const{db:e}=this.root,{_parsedProps:t}=this,n=this.getPrimitiveContainer();if(!n||!this._hasSchematicPort())return;const i=n._getGlobalSchematicPositionBeforeLayout(),o=this._getGlobalSchematicPositionBeforeLayout();let a=null;const s=n._getSchematicBoxDimensions();s&&t.pinNumber!==void 0&&(a=s.getPortPositionByPinNumber(t.pinNumber)),this.getSubcircuit().props._schDebugObjectsEnabled&&e.schematic_debug_object.insert({shape:"rect",center:o,size:{width:.1,height:.1},label:"obstacle"}),a!=null&&a.side?this.facingDirection={left:"left",right:"right",top:"up",bottom:"down"}[a.side]:this.facingDirection=Mjt(i,o);const l=e.source_port.get(this.source_port_id);let c;for(const d of(l==null?void 0:l.port_hints)??[])d.match(/^(pin)?\d+$/)||d.match(/^(left|right)/)&&!(l!=null&&l.name.match(/^(left|right)/))||(c=d);const u=e.schematic_port.insert({schematic_component_id:(A=this.parent)==null?void 0:A.schematic_component_id,center:o,source_port_id:this.source_port_id,facing_direction:this.facingDirection,distance_from_component_edge:.4,side_of_component:a==null?void 0:a.side,pin_number:t.pinNumber,true_ccw_index:a==null?void 0:a.trueIndex,display_pin_label:c});this.schematic_port_id=u.schematic_port_id}_setPositionFromLayout(e){const{db:t}=this.root;this.pcb_port_id&&t.pcb_port.update(this.pcb_port_id,{x:e.x,y:e.y})}_hasMatchedPcbPrimitive(){return this.matchedComponents.some(e=>e.isPcbPrimitive)}},A7e=r=>{const e=r.find(t=>/^(pin)?\d+$/.test(t));return e?Number.parseInt(e.replace(/^pin/,"")):null};function XT(r,e){var o;const t=A7e(r);if(!t)return null;const i=[...r.filter(a=>a.toString()!==t.toString()&&a!==`pin${t}`),...((o=e==null?void 0:e.additionalAliases)==null?void 0:o[`pin${t}`])??[]];return new Hw({pinNumber:t,aliases:i})}var Tjt=r=>{for(const e of["leftSide","rightSide","topSide","bottomSide"])if(e in r&&typeof r[e]=="number")throw new Error(`A number was specified for "${e}", you probably meant to use "size" not "side"`);return"leftSide"in r||"rightSide"in r||"topSide"in r||"bottomSide"in r},Pjt=r=>{var o,a,s,l;if(Tjt(r))return{leftSize:((o=r.leftSide)==null?void 0:o.pins.length)??0,rightSize:((a=r.rightSide)==null?void 0:a.pins.length)??0,topSize:((s=r.topSide)==null?void 0:s.pins.length)??0,bottomSize:((l=r.bottomSide)==null?void 0:l.pins.length)??0};const{leftSize:e=0,rightSize:t=0,topSize:n=0,bottomSize:i=0}=r;return{leftSize:e,rightSize:t,topSize:n,bottomSize:i}};function d7e(r){return r.leftSide!==void 0}var kjt=r=>{var E,_,x,w,P,L,O,H;const e=r.portDistanceFromEdge??.4;let t=r.schPortArrangement?Pjt(r.schPortArrangement):null;const n={left:0,right:0,top:0,bottom:0};let i=r.pinCount??null;if(i===null)if(t)i=t.leftSize+t.rightSize+t.topSize;else throw new Error("Could not determine pin count for the schematic box");if(i&&!t){const K=Math.floor(i/2);t={leftSize:i-K,rightSize:K,topSize:0,bottomSize:0}}t||(t={leftSize:0,rightSize:0,topSize:0,bottomSize:0});const o=({side:K,sideIndex:q,truePinIndex:Y})=>{var xe,fe,Ie,ve;if(!r.schPortArrangement||!d7e(r.schPortArrangement))return Y+1;const se={left:"top-to-bottom",bottom:"left-to-right",right:"bottom-to-top",top:"right-to-left"}[K],ie=((fe=(xe=r.schPortArrangement)==null?void 0:xe[`${K}Side`])==null?void 0:fe.direction)??se,de=(ve=(Ie=r.schPortArrangement)==null?void 0:Ie[`${K}Side`])==null?void 0:ve.pins;let Ce=q;return ie!==se&&(Ce=de.length-q-1),ZT(de[Ce],r.pinLabels)},a=[];let s=0,l=0;for(let K=0;K<t.leftSize;K++){const q=o({side:"left",sideIndex:K,truePinIndex:l}),Y=((E=r.numericSchPinStyle)==null?void 0:E[`pin${q}`])??((_=r.numericSchPinStyle)==null?void 0:_[q]);Y!=null&&Y.topMargin&&(s+=Y.topMargin),a.push({trueIndex:l,pinNumber:q,side:"left",distanceFromOrthogonalEdge:s}),Y!=null&&Y.bottomMargin&&(s+=Y.bottomMargin),K===t.leftSize-1?n.left=s:s+=r.schPinSpacing,l++}s=0;for(let K=0;K<t.bottomSize;K++){const q=o({side:"bottom",sideIndex:K,truePinIndex:l}),Y=((x=r.numericSchPinStyle)==null?void 0:x[`pin${q}`])??((w=r.numericSchPinStyle)==null?void 0:w[q]);Y!=null&&Y.leftMargin&&(s+=Y.leftMargin),a.push({trueIndex:l,pinNumber:q,side:"bottom",distanceFromOrthogonalEdge:s}),Y!=null&&Y.rightMargin&&(s+=Y.rightMargin),K===t.bottomSize-1?n.bottom=s:s+=r.schPinSpacing,l++}s=0;for(let K=0;K<t.rightSize;K++){const q=o({side:"right",sideIndex:K,truePinIndex:l}),Y=((P=r.numericSchPinStyle)==null?void 0:P[`pin${q}`])??((L=r.numericSchPinStyle)==null?void 0:L[q]);Y!=null&&Y.bottomMargin&&(s+=Y.bottomMargin),a.push({trueIndex:l,pinNumber:q,side:"right",distanceFromOrthogonalEdge:s}),Y!=null&&Y.topMargin&&(s+=Y.topMargin),K===t.rightSize-1?n.right=s:s+=r.schPinSpacing,l++}s=0;for(let K=0;K<t.topSize;K++){const q=o({side:"top",sideIndex:K,truePinIndex:l}),Y=((O=r.numericSchPinStyle)==null?void 0:O[`pin${q}`])??((H=r.numericSchPinStyle)==null?void 0:H[q]);Y!=null&&Y.rightMargin&&(s+=Y.rightMargin),a.push({trueIndex:l,pinNumber:q,side:"top",distanceFromOrthogonalEdge:s}),Y!=null&&Y.leftMargin&&(s+=Y.leftMargin),K===t.topSize-1?n.top=s:s+=r.schPinSpacing,l++}let c=r.schWidth;c||(c=Math.max(n.top+r.schPinSpacing*2,n.bottom+r.schPinSpacing*2));const u=r.pinLabels?Math.max(...Object.values(r.pinLabels).map(K=>K.length*.1)):0,A=u>0?1.1:0;c=Math.max(c,u+A);let d=r.schHeight;d||(d=Math.max(n.left+r.schPinSpacing*2,n.right+r.schPinSpacing*2));const f={left:{x:-c/2-e,y:n.left/2},bottom:{x:-n.bottom/2,y:-d/2-e},right:{x:c/2+e,y:-n.right/2},top:{x:n.top/2,y:d/2+e}},m={left:{x:0,y:-1},right:{x:0,y:1},top:{x:-1,y:0},bottom:{x:1,y:0}},C=a.map(K=>{const{distanceFromOrthogonalEdge:q,side:Y}=K,se=f[Y],ie=m[Y];return{x:se.x+q*ie.x,y:se.y+q*ie.y,...K}});return{getPortPositionByPinNumber(K){const q=C.find(Y=>Y.pinNumber.toString()===K.toString());return q||null},getSize(){return{width:c,height:d}},getSizeIncludingPins(){return{width:c+(t.leftSize||t.rightSize?.4:0),height:d+(t.topSize||t.bottomSize?.4:0)}},pinCount:i}},Ujt=uC("tscircuit:core:footprint"),Fjt=class extends aI{get config(){return{componentName:"Footprint",zodProps:OPe}}doInitialPcbFootprintLayout(){var A,d,f,m,C;if((A=this.root)!=null&&A.pcbDisabled)return;const r=this.children.filter(E=>E.componentName==="Constraint");if(r.length===0)return;const{isFlipped:e}=this._getPcbPrimitiveFlippedHelpers(),t=E=>e&&"left"in E&&"right"in E?{...E,left:E.right,right:E.left}:E,n=r.flatMap(E=>E._getAllReferencedComponents().componentsWithSelectors).map(({component:E,selector:_,componentSelector:x,edge:w})=>({component:E,selector:_,componentSelector:x,edge:w,bounds:E._getPcbCircuitJsonBounds()}));if(n.some(E=>E.edge))throw new Error("edge constraints not implemented yet for footprint layout, contributions welcome!");function i(E){return n.find(({selector:_})=>_===E)}const o=new A8e,a={};function s(E){return E in a||(a[E]=new A6(E),o.addEditVariable(a[E],AC.weak)),a[E]}for(const{selector:E,bounds:_}of n){const x=s(`${E}_x`),w=s(`${E}_y`);o.suggestValue(x,_.center.x),o.suggestValue(w,_.center.y)}for(const E of r){const _=E._parsedProps;if("xDist"in _){const{xDist:x,left:w,right:P,edgeToEdge:L,centerToCenter:O}=t(_),H=s(`${w}_x`),K=s(`${P}_x`),q=(d=i(w))==null?void 0:d.bounds,Y=(f=i(P))==null?void 0:f.bounds;if(O){const se=new wI(K,[-1,H]);o.addConstraint(new uB(se,mE.Eq,_.xDist,AC.required))}else if(L){const se=new wI(K,-Y.width/2,[-1,H],-q.width/2);o.addConstraint(new uB(se,mE.Eq,_.xDist,AC.required))}}else if("yDist"in _){const{yDist:x,top:w,bottom:P,edgeToEdge:L,centerToCenter:O}=_,H=s(`${w}_y`),K=s(`${P}_y`),q=(m=i(w))==null?void 0:m.bounds,Y=(C=i(P))==null?void 0:C.bounds;if(O){const se=new wI(H,[-1,K]);o.addConstraint(new uB(se,mE.Eq,_.yDist,AC.required))}else if(L){const se=new wI(H,q.height/2,[-1,K],-Y.height/2);o.addConstraint(new uB(se,mE.Eq,_.yDist,AC.required))}}else if("sameY"in _){const{for:x}=_;if(x.length<2)continue;const w=x.map(L=>s(`${L}_y`)),P=new wI(...w.slice(1));o.addConstraint(new uB(P,mE.Eq,w[0],AC.required))}else if("sameX"in _){const{for:x}=_;if(x.length<2)continue;const w=x.map(L=>s(`${L}_x`)),P=new wI(...w.slice(1));o.addConstraint(new uB(P,mE.Eq,w[0],AC.required))}}o.updateVariables(),Ujt.enabled&&(console.log("Solution to layout constraints:"),console.table(Object.entries(a).map(([E,_])=>({var:E,val:_.value()}))));const l={left:1/0,right:-1/0,top:-1/0,bottom:1/0};for(const{selector:E,bounds:{width:_,height:x}}of n){const w=s(`${E}_x`),P=s(`${E}_y`),L=w.value()-_/2,O=w.value()+_/2,H=P.value()+x/2,K=P.value()-x/2;l.left=Math.min(l.left,L),l.right=Math.max(l.right,O),l.top=Math.max(l.top,H),l.bottom=Math.min(l.bottom,K)}const c={x:-(l.right+l.left)/2,y:-(l.top+l.bottom)/2},u=this.getPrimitiveContainer()._getGlobalPcbPositionBeforeLayout();c.x+=u.x,c.y+=u.y;for(const{component:E,selector:_}of n){const x=s(`${_}_x`),w=s(`${_}_y`);E._setPositionFromLayout({x:x.value()+c.x,y:w.value()+c.y})}}},Ljt=(r,e)=>{if(!r)return;const t={};for(const[n,i]of Object.entries(r)){const o=ZT(n,e),a={leftMargin:i.marginLeft??i.leftMargin,rightMargin:i.marginRight??i.rightMargin,topMargin:i.marginTop??i.topMargin,bottomMargin:i.marginBottom??i.bottomMargin};t[`pin${o}`]={...t[`pin${o}`],...a}}return t},f7e=class{constructor({input:r}){Ye(this,"input");this.input=r}solveAndMapToTraces(){const r=[];for(const e of this.input.connections){if(e.pointsToConnect.length!==2)continue;const[t,n]=e.pointsToConnect,i={type:"pcb_trace",pcb_trace_id:"",connection_name:e.name,route:[{route_type:"wire",x:t.x,y:t.y,layer:"top",width:.1},{route_type:"wire",x:n.x,y:n.y,layer:"top",width:.1}]};r.push(i)}return r}},Gjt=r=>{const e=Math.min(...r.map(o=>o.center.x)),t=Math.max(...r.map(o=>o.center.x)),n=Math.min(...r.map(o=>o.center.y)),i=Math.max(...r.map(o=>o.center.y));return{minX:e,maxX:t,minY:n,maxY:i}},h7e=["top","bottom","inner1","inner2"],j7=(r,e=[])=>{var s;const t=[];if(e.length===0){const l=r[0].layers;for(const c of l)t.push(...j7(r.slice(1),[c]));return t}if(r.length===0)return[];const n=r[0],i=n.via||n.optional_via,o=e[e.length-1];if(r.length===1){const l=n;return l.layers&&i?l.layers.map(c=>({layer_path:[...e,c]})):(s=l.layers)!=null&&s.includes(o)?[{layer_path:[...e,o]}]:[]}if(!i)return n.layers&&!n.layers.includes(o)?[]:j7(r.slice(1),e.concat([o]));const a=(n.optional_via?h7e:h7e.filter(l=>l!==o)).filter(l=>{var c;return!n.layers||((c=n.layers)==null?void 0:c.includes(l))});for(const l of a)t.push(...j7(r.slice(1),e.concat(l)));return t};function p7e(r){const e={x:r.to.x-r.from.x,y:r.to.y-r.from.y},t=Math.abs(e.x),n=Math.abs(e.y);return t>n?e.x>0?"right":"left":e.y>0?"down":"up"}function UR(r,e){return Math.hypot(r.x-e.x,r.y-e.y)}var Ojt=r=>{if(r.length===1)return r[0];if(r.some(l=>l.length===0))throw new Error("Cannot merge routes with zero length");const e=[],t=r[0][0],n=r[0][r[0].length-1],i=r[1][0],o=r[1][r[1].length-1],a=Math.min(UR(t,i),UR(t,o)),s=Math.min(UR(n,i),UR(n,o));a<s?e.push(...r[0].reverse()):e.push(...r[0]);for(let l=1;l<r.length;l++){const c=e[e.length-1],u=r[l],A=u[0],d=u[u.length-1],f=UR(c,A),m=UR(c,d);f<m?e.push(...u):e.push(...u.reverse())}for(let l=1;l<e.length-1;l++){const c=e[l-1],u=e[l];c.route_type==="wire"&&u.route_type==="wire"&&c.layer!==u.layer&&e.splice(l,0,{x:c.x,y:c.y,from_layer:c.layer,to_layer:u.layer,route_type:"via"})}return e},zjt=(r,e)=>{const t="_getGlobalPcbPositionBeforeLayout"in r?r._getGlobalPcbPositionBeforeLayout():r,n="_getGlobalPcbPositionBeforeLayout"in e?e._getGlobalPcbPositionBeforeLayout():e;return Math.sqrt((t.x-n.x)**2+(t.y-n.y)**2)};function Hjt(r,e){if(e.length===0)throw new Error("No candidates given to getClosest method");let t=e[0],n=1/0;for(const i of e){const o=zjt(r,i);o<n&&(t=i,n=o)}return t}var Yjt=(r,e)=>{let t=0;t+=r.length??0,t+=e.filter(n=>n.is_crossing).length;for(let n=1;n<e.length;n++){const i=e[n-1],o=e[n],a=Math.abs(i.from.x-i.to.x)<.01,s=Math.abs(o.from.x-o.to.x)<.01;a!==s&&t++}return t},_ce=r=>({up:"bottom",down:"top",left:"right",right:"left"})[r]??null,xce=({firstEdge:r,firstEdgePort:e,firstDominantDirection:t,lastEdge:n,lastEdgePort:i,lastDominantDirection:o})=>{if(r&&e)return xce({lastEdge:{from:r.to,to:r.from},lastEdgePort:e,lastDominantDirection:t}).reverse().map(s=>({from:s.to,to:s.from}));let a=[];if(n&&i){const s={x:n.to.x,y:n.to.y};o==="left"||o==="right"?(s.x=i.position.x,a.push({from:n.to,to:{...s}}),a.push({from:s,to:{...i.position}})):(s.y=i.position.y,a.push({from:n.to,to:{...s}}),a.push({from:s,to:{...i.position}}))}return a=a.filter(s=>qT(s.from,s.to)>.01),a};function Vjt(r){try{return[r(),null]}catch(e){return[null,e]}}function Kjt(r){let e=0;for(let t=0;t<r.length;t++){const n=r[t];if(n.route_type==="wire"){const i=r[t+1];if(i){const o=i.x-n.x,a=i.y-n.y;e+=Math.sqrt(o*o+a*a)}}else n.route_type==="via"&&(e+=1.6)}return e}var J7=({db:r,source_trace_id:e,sameNetOnly:t,differentNetOnly:n})=>{!t&&!n&&(n=!0);const i=r.source_trace.get(e),o=[];for(const a of r.schematic_trace.list()){if(a.source_trace_id===e)continue;const s=r.source_trace.get(a.source_trace_id),l=(s==null?void 0:s.subcircuit_connectivity_map_key)===i.subcircuit_connectivity_map_key;n&&l||t&&!l||o.push(a)}return o},g7e=({edges:r,otherEdges:e})=>{const t=[...r];for(let n=0;n<t.length;n++){if(n>2e3)throw new Error("Over 2000 iterations spent inside createSchematicTraceCrossingSegments, you have triggered an infinite loop, please report this!");const i=t[n],o=Math.abs(i.from.x-i.to.x)<.01?"vertical":i.from.y===i.to.y?"horizontal":"not-orthogonal";if(o==="not-orthogonal")continue;const a=[];for(const C of e){const E=C.from.x===C.to.x?"vertical":C.from.y===C.to.y?"horizontal":"not-orthogonal";if(E==="not-orthogonal"||o===E)continue;if(q6e([i.from,i.to],[C.from,C.to],{lineThickness:.01})){const x=o==="vertical"?i.from.x:C.from.x,w=o==="vertical"?C.from.y:i.from.y,P={x,y:w};a.push({otherEdge:C,crossingPoint:P,distanceFromEdgeFrom:qT(i.from,P)})}}if(a.length===0)continue;let s=a[0];for(const C of a)C.distanceFromEdgeFrom<s.distanceFromEdgeFrom&&(s=C);const l=s.crossingPoint,c=.075;if(l.x===i.from.x&&l.y===i.from.y)continue;const u=djt(i.from,l),A={x:l.x-u.x*c/2,y:l.y-u.y*c/2},d={x:l.x+u.x*c/2,y:l.y+u.y*c/2},f=qT(d,i.to)<c,m=[{from:i.from,to:A},{from:A,to:d,is_crossing:!0},{from:d,to:i.to}];t.splice(n,1,...m),n+=m.length-2,f&&n++}return t},jjt=(r,e)=>{if(r.from.x===r.to.x&&e.from.x===e.to.x)return null;if(r.from.x===r.to.x){const u=r.from.x,A=(e.to.y-e.from.y)/(e.to.x-e.from.x),d=e.from.y-A*e.from.x,f=A*u+d;return u>=Math.min(e.from.x,e.to.x)&&u<=Math.max(e.from.x,e.to.x)&&f>=Math.min(e.from.y,e.to.y)&&f<=Math.max(e.from.y,e.to.y)?{x:u,y:f}:null}if(e.from.x===e.to.x){const u=e.from.x,A=(r.to.y-r.from.y)/(r.to.x-r.from.x),d=r.from.y-A*r.from.x,f=A*u+d;return u>=Math.min(r.from.x,r.to.x)&&u<=Math.max(r.from.x,r.to.x)&&f>=Math.min(r.from.y,r.to.y)&&f<=Math.max(r.from.y,r.to.y)?{x:u,y:f}:null}const t=(r.to.y-r.from.y)/(r.to.x-r.from.x),n=r.from.y-t*r.from.x,i=(e.to.y-e.from.y)/(e.to.x-e.from.x),o=e.from.y-i*e.from.x;if(t===i)return null;const a=(o-n)/(t-i),s=t*a+n,l=a>=Math.min(r.from.x,r.to.x)&&a<=Math.max(r.from.x,r.to.x)&&s>=Math.min(r.from.y,r.to.y)&&s<=Math.max(r.from.y,r.to.y),c=a>=Math.min(e.from.x,e.to.x)&&a<=Math.max(e.from.x,e.to.x)&&s>=Math.min(e.from.y,e.to.y)&&s<=Math.max(e.from.y,e.to.y);return l&&c?{x:a,y:s}:null},m7e=({edges:r,db:e,source_trace_id:t})=>{const n=J7({db:e,source_trace_id:t,sameNetOnly:!0}).flatMap(i=>i.edges);for(const i of r)for(const o of n){const a=jjt(i,o);if(a)return`${a.x}${a.y}`,[{x:a.x,y:a.y}]}return[]},Jjt=(r,{db:e})=>{const t=r.map(n=>{const i=e.source_port.get(n.source_port_id);if(!(i!=null&&i.source_component_id))return null;const o=e.source_component.get(i.source_component_id);return(o==null?void 0:o.ftype)==="simple_capacitor"?o.max_decoupling_trace_length:null}).filter(n=>n!==null);if(t.length!==0)return Math.min(...t)};function Wjt(r){var o,a,s,l,c,u,A,d,f;let e=1/0,t=1/0,n=-1/0,i=-1/0;for(const m of r){let C,E,_,x;m.type==="schematic_component"?(C=(o=m.center)==null?void 0:o.x,E=(a=m.center)==null?void 0:a.y,_=(s=m.size)==null?void 0:s.width,x=(l=m.size)==null?void 0:l.height):m.type==="schematic_box"?(C=m.x,E=m.y,_=m.width,x=m.height):m.type==="schematic_port"?(C=(c=m.center)==null?void 0:c.x,E=(u=m.center)==null?void 0:u.y,_=.2,x=.2):m.type==="schematic_text"&&(C=(A=m.position)==null?void 0:A.x,E=(d=m.position)==null?void 0:d.y,_=(((f=m.text)==null?void 0:f.length)??0)*.1,x=.2),typeof C=="number"&&typeof E=="number"&&typeof _=="number"&&typeof x=="number"&&(e=Math.min(e,C-_/2),n=Math.max(n,C+_/2),t=Math.min(t,E-x/2),i=Math.max(i,E+x/2))}return{minX:e,maxX:n,minY:t,maxY:i}}function qjt(r,e={}){const{minX:t,maxX:n,minY:i,maxY:o}=r,a=e.padding??1;if(!isFinite(t)||!isFinite(n)||!isFinite(i)||!isFinite(o))return[];const s=t-a,l=n+a,c=o+a,u=i-a,A=.01;return[{type:"rect",layers:["top"],center:{x:(s+l)/2,y:c},width:l-s,height:A,connectedTo:[]},{type:"rect",layers:["top"],center:{x:(s+l)/2,y:u},width:l-s,height:A,connectedTo:[]},{type:"rect",layers:["top"],center:{x:s,y:(c+u)/2},width:A,height:c-u,connectedTo:[]},{type:"rect",layers:["top"],center:{x:l,y:(c+u)/2},width:A,height:c-u,connectedTo:[]}]}var Zjt=r=>{var a;const e=r.root.db,t=r._findConnectedPorts().ports??[],n=new Set(t.map(s=>s.schematic_port_id)),i=[];for(const s of e.toArray()){if(s.type==="schematic_component"){const l=!!s.symbol_name,c=s.size.width>s.size.height?"horz":"vert";i.push({type:"rect",layers:["top"],center:s.center,width:s.size.width+(l&&c==="horz"?-.5:0),height:s.size.height+(l&&c==="vert"?-.5:0),connectedTo:[]})}if(s.type==="schematic_port"){if(n.has(s.schematic_port_id))continue;const l=s.facing_direction?fjt(s.facing_direction):{x:0,y:0};i.push({type:"rect",layers:["top"],center:{x:s.center.x-l.x*.1,y:s.center.y-l.y*.1},width:.1+Math.abs(l.x)*.3,height:.1+Math.abs(l.y)*.3,connectedTo:[]})}s.type==="schematic_text"&&i.push({type:"rect",layers:["top"],center:s.position,width:(((a=s.text)==null?void 0:a.length)??0)*.1,height:.2,connectedTo:[]}),s.type==="schematic_box"&&i.push({type:"rect",layers:["top"],center:{x:s.x,y:s.y},width:s.width,height:s.height,connectedTo:[]})}const o=Wjt(e.toArray());return i.push(...qjt(o,{padding:1})),i};function Xjt({ports:r,nets:e}){var t,n,i;if(r.length>=2)return`${(t=r[0])==null?void 0:t.selector} to ${(n=r[1])==null?void 0:n.selector}`;if(r.length===1&&e.length===1)return`${(i=r[0])==null?void 0:i.selector} to net.${e[0]._parsedProps.name}`}var $jt=({edges:r,db:e,source_trace_id:t})=>{e.source_trace.get(t);const n=J7({db:e,source_trace_id:t,differentNetOnly:!0}).flatMap(o=>o.edges),i=o=>{const{from:a,to:s}=o;return a.x===s.x?"vertical":"horizontal"};for(const o of r){const a=i(o),s=()=>n.find(c=>i(c)===a&&q6e([o.from,o.to],[c.from,c.to],{lineThickness:.05}));let l=s();for(;l;)a==="horizontal"?(o.from.y+=.1,o.to.y+=.1):(o.from.x+=.1,o.to.x+=.1),l=s()}},eJt=(r,{db:e})=>{const t=e.pcb_board.list()[0];if(t.outline){const l=t.outline,c=(u,A)=>{let d=!1;for(let f=0,m=A.length-1;f<A.length;m=f++){const C=A[f].x,E=A[f].y,_=A[m].x,x=A[m].y;E>u.y!=x>u.y&&u.x<(_-C)*(u.y-E)/(x-E)+C&&(d=!d)}return d};return r.some(u=>!c(u,l))}const n=t.width,i=t.height,o=t.center.x,a=t.center.y;return r.some(l=>l.x<o-n/2||l.y<a-i/2||l.x>o+n/2||l.y>a+i/2)},W7=r=>({...r._getGlobalPcbPositionAfterLayout(),layers:r.getAvailablePcbLayers()}),Yw=class extends aI{constructor(e){super(e);Ye(this,"source_trace_id",null);Ye(this,"pcb_trace_id",null);Ye(this,"schematic_trace_id",null);Ye(this,"_portsRoutedOnPcb");Ye(this,"subcircuit_connectivity_map_key",null);Ye(this,"_traceConnectionHash",null);this._portsRoutedOnPcb=[]}get config(){return{zodProps:GPe,componentName:"Trace"}}_getTracePortOrNetSelectorListFromProps(){return"from"in this.props&&"to"in this.props?[typeof this.props.from=="string"?this.props.from:this.props.from.getPortSelector(),typeof this.props.to=="string"?this.props.to:this.props.to.getPortSelector()]:"path"in this.props?this.props.path.map(e=>typeof e=="string"?e:e.getPortSelector()):[]}getTracePortPathSelectors(){return this._getTracePortOrNetSelectorListFromProps().filter(e=>!e.includes("net."))}getTracePathNetSelectors(){return this._getTracePortOrNetSelectorListFromProps().filter(e=>e.includes("net."))}_findConnectedPorts(){const{db:e}=this.root,{_parsedProps:t,parent:n}=this;if(!n)throw new Error("Trace has no parent");const o=this.getTracePortPathSelectors().map(a=>({selector:a,port:this.getSubcircuit().selectOne(a,{type:"port"})??null}));for(const{selector:a,port:s}of o)if(!s){const l=a.replace(/(\> )?[^ ]+$/,""),c=this.getSubcircuit().selectOne(l);c?this.renderError(`Could not find port for selector "${a}" (did you forget to include the pin name?)
13311
13311
  searched component ${c.getString()}, which has ports: ${c.children.filter(u=>u.componentName==="Port").map(u=>`${u.getString()}(${u.getNameAndAliases().join(",")})`).join(" & ")}`):this.renderError(`Could not find port for selector "${a}"`)}return o.some(a=>!a.port)?{allPortsFound:!1}:{allPortsFound:!0,portsWithSelectors:o,ports:o.map(({port:a})=>a)}}_findConnectedNets(){const e=this.getTracePathNetSelectors().map(n=>({selector:n,net:this.getSubcircuit().selectOne(n,{type:"net"})})),t=e.filter(n=>!n.net);return t.length>0&&this.renderError(`Could not find net for selector "${t[0].selector}" inside ${this}`),{netsWithSelectors:e,nets:e.map(n=>n.net)}}_getAllTracesConnectedToSameNet(){const e=this.getSubcircuit().selectAll("trace"),t=this._findConnectedNets().nets,n=this._findConnectedPorts().ports??[];return e.filter(i=>{if(i===this)return!1;const o=i._findConnectedNets().nets,a=i._findConnectedPorts().ports??[];return o.some(s=>t.includes(s))||a.some(s=>n.includes(s))})}_isExplicitlyConnectedToPort(e){const{allPortsFound:t,portsWithSelectors:n}=this._findConnectedPorts();return t?n.map(o=>o.port).includes(e):!1}_isExplicitlyConnectedToNet(e){return this._findConnectedNets().nets.includes(e)}doInitialCreateNetsFromProps(){a7e(this,this.getTracePathNetSelectors())}_computeTraceConnectionHash(){const{allPortsFound:e,ports:t}=this._findConnectedPorts();return!e||!t?null:[...t].sort((o,a)=>(o.pcb_port_id||"").localeCompare(a.pcb_port_id||"")).map(o=>o.pcb_port_id).join(",")}doInitialSourceTraceRender(){var A;const{db:e}=this.root,{_parsedProps:t,parent:n}=this;if(!n){this.renderError("Trace has no parent");return}const{allPortsFound:i,portsWithSelectors:o}=this._findConnectedPorts();if(!i)return;this._traceConnectionHash=this._computeTraceConnectionHash();const s=e.source_trace.list().find(d=>d.subcircuit_connectivity_map_key===this.subcircuit_connectivity_map_key&&d.connected_source_port_ids.sort().join(",")===this._traceConnectionHash);if(s){this.source_trace_id=s.source_trace_id;return}const l=this._findConnectedNets().nets,c=Xjt({ports:o,nets:l}),u=e.source_trace.insert({connected_source_port_ids:o.map(d=>d.port.source_port_id),connected_source_net_ids:l.map(d=>d.source_net_id),subcircuit_id:(A=this.getSubcircuit())==null?void 0:A.subcircuit_id,max_length:Jjt(o.map(d=>d.port),{db:e})??t.maxLength,display_name:c,min_trace_thickness:t.thickness});this.source_trace_id=u.source_trace_id}_insertErrorIfTraceIsOutsideBoard(e,t){const{db:n}=this.root;eJt(e,{db:n})&&n.pcb_trace_error.insert({error_type:"pcb_trace_error",source_trace_id:this.source_trace_id,message:`Trace ${this.getString()} routed outside the board boundaries.`,pcb_trace_id:this.pcb_trace_id,pcb_component_ids:[],pcb_port_ids:t.map(o=>o.pcb_port_id)})}doInitialPcbTraceRender(){var K,q,Y,se;if((K=this.root)!=null&&K.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t,parent:n}=this,i=this.getSubcircuit();if(!n)throw new Error("Trace has no parent");if(i._parsedProps.routingDisabled)return;const o=(q=i._parsedProps.pcbRouteCache)==null?void 0:q.pcbTraces;if(o){const ie=e.pcb_trace.insert({route:o.flatMap(de=>de.route),source_trace_id:this.source_trace_id,subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((Y=this.getGroup())==null?void 0:Y.pcb_group_id)??void 0});this.pcb_trace_id=ie.pcb_trace_id;return}if(!i._shouldUseTraceByTraceRouting())return;const{allPortsFound:a,ports:s}=this._findConnectedPorts();if(!a)return;const l=[];for(const ie of s)ie._hasMatchedPcbPrimitive()||l.push(ie);if(l.length>0){e.pcb_trace_error.insert({error_type:"pcb_trace_error",source_trace_id:this.source_trace_id,message:`Some ports did not have a matching PCB primitive (e.g. a pad or plated hole), this can happen if a footprint is missing. As a result, ${this} wasn't routed. Missing ports: ${l.map(ie=>ie.getString()).join(", ")}`,pcb_trace_id:this.pcb_trace_id,pcb_component_ids:[],pcb_port_ids:l.map(ie=>ie.pcb_port_id).filter(Boolean)});return}const c=this._findConnectedNets().netsWithSelectors;if(s.length===0&&c.length===2){this.renderError("Trace connects two nets, we haven't implemented a way to route this yet");return}else if(s.length===1&&c.length===1){const ie=s[0],Ce=c[0].net.getAllConnectedPorts().filter(fe=>fe!==ie);if(Ce.length===0){console.log("Nothing to connect this port to, the net is empty. TODO should emit a warning!");return}const xe=Hjt(ie,Ce);s.push(xe)}else if(s.length>1&&c.length>=1){this.renderError("Trace has more than one port and one or more nets, we don't currently support this type of complex trace routing");return}const u=s.flatMap(ie=>ie.matchedComponents.filter(de=>de.componentName==="TraceHint")),A=(this._parsedProps.pcbRouteHints??[]).concat(u.flatMap(ie=>ie.getPcbRouteHints()));if(s.length>2){this.renderError(`Trace has more than two ports (${s.map(ie=>ie.getString()).join(", ")}), routing between more than two ports for a single trace is not implemented`);return}if(this.getSubcircuit().selectAll("trace").filter(ie=>ie.renderPhaseStates.PcbTraceRender.initialized).some(ie=>ie._portsRoutedOnPcb.length===s.length&&ie._portsRoutedOnPcb.every(de=>s.includes(de))))return;let m=[];A.length===0?m=[W7(s[0]),W7(s[1])]:m=[W7(s[0]),...A,W7(s[1])];const C=j7(m),E=Tw(this.root.db.toArray()),[_,x]=Vjt(()=>t6(this.root.db.toArray()));if(x){this.renderError({type:"pcb_trace_error",error_type:"pcb_trace_error",pcb_trace_error_id:this.pcb_trace_id,message:`Error getting obstacles for autorouting: ${x.message}`,source_trace_id:this.source_trace_id,center:{x:0,y:0},pcb_port_ids:s.map(ie=>ie.pcb_port_id),pcb_trace_id:this.pcb_trace_id,pcb_component_ids:[]});return}for(const ie of _)if(ie.connectedTo.length>0){const Ce=E.getNetConnectedToId(ie.connectedTo[0]);Ce&&ie.connectedTo.push(Ce)}let w=[];if(C.length===0)w=m;else{const ie=C[0].layer_path;w=m.map((de,Ce)=>de.via?{...de,via_to_layer:ie[Ce]}:{...de,layers:[ie[Ce]]})}w[0].pcb_port_id=s[0].pcb_port_id,w[w.length-1].pcb_port_id=s[1].pcb_port_id;const P=[];for(const[ie,de]of i7e(w)){const Ce="via_to_layer"in ie?ie.via_to_layer:null,xe=2,fe="layers"in ie&&ie.layers.length===1?ie.layers[0]:Ce??"top",Ie="layers"in de&&de.layers.length===1?de.layers[0]:Ce??"top",ve="pcb_port_id"in ie?ie.pcb_port_id:null,Qe="pcb_port_id"in de?de.pcb_port_id:null,De=this.getSubcircuit()._parsedProps.minTraceWidth??.16,Fe=new e6({OBSTACLE_MARGIN:De*2,isRemovePathLoopsEnabled:!0,optimizeWithGoalBoxes:!!(ve&&Qe),connMap:E,input:{obstacles:_,minTraceWidth:De,connections:[{name:this.source_trace_id,pointsToConnect:[{...ie,layer:fe,pcb_port_id:ve},{...de,layer:Ie,pcb_port_id:Qe}]}],layerCount:2,bounds:{minX:Math.min(ie.x,de.x)-xe,maxX:Math.max(ie.x,de.x)+xe,minY:Math.min(ie.y,de.y)-xe,maxY:Math.max(ie.y,de.y)+xe}}});let Ne=null;try{Ne=Fe.solveAndMapToTraces()}catch(ft){this.renderError({type:"pcb_trace_error",pcb_trace_error_id:this.source_trace_id,error_type:"pcb_trace_error",message:`error solving route: ${ft.message}`,source_trace_id:this.pcb_trace_id,center:{x:(ie.x+de.x)/2,y:(ie.y+de.y)/2},pcb_port_ids:s.map(_t=>_t.pcb_port_id),pcb_trace_id:this.pcb_trace_id,pcb_component_ids:s.map(_t=>_t.pcb_component_id)})}if(!Ne)return;if(Ne.length===0){this.renderError({type:"pcb_trace_error",error_type:"pcb_trace_error",pcb_trace_error_id:this.pcb_trace_id,message:`Could not find a route for ${this}`,source_trace_id:this.source_trace_id,center:{x:(ie.x+de.x)/2,y:(ie.y+de.y)/2},pcb_port_ids:s.map(ft=>ft.pcb_port_id),pcb_trace_id:this.pcb_trace_id,pcb_component_ids:s.map(ft=>ft.pcb_component_id)});return}const[rt]=Ne;Ce&&(rt.route=rt.route.map(ft=>(ft.route_type==="wire"&&!ft.layer&&(ft.layer=Ce),ft))),ve&&rt.route[0].route_type==="wire"&&(rt.route[0].start_pcb_port_id=ve);const et=rt.route[rt.route.length-1];Qe&&et.route_type==="wire"&&(et.end_pcb_port_id=Qe),P.push(rt.route)}const L=Ojt(P),O=Kjt(L),H=e.pcb_trace.insert({route:L,source_trace_id:this.source_trace_id,subcircuit_id:(se=this.getSubcircuit())==null?void 0:se.subcircuit_id,trace_length:O});this._portsRoutedOnPcb=s,this.pcb_trace_id=H.pcb_trace_id;for(const ie of L)ie.route_type==="via"&&e.pcb_via.insert({pcb_trace_id:H.pcb_trace_id,x:ie.x,y:ie.y,hole_diameter:.3,outer_diameter:.6,layers:[ie.from_layer,ie.to_layer],from_layer:ie.from_layer,to_layer:ie.to_layer});this._insertErrorIfTraceIsOutsideBoard(L,s)}_doInitialSchematicTraceRenderWithDisplayLabel(){var P,L,O,H;if((P=this.root)!=null&&P.schematicDisabled)return;const{db:e}=this.root,{_parsedProps:t,parent:n}=this;if(!n)throw new Error("Trace has no parent");const{allPortsFound:i,portsWithSelectors:o}=this._findConnectedPorts();if(!i)return;const a=o.map(({port:K})=>({port:K,position:K._getGlobalSchematicPositionAfterLayout(),schematic_port_id:K.schematic_port_id,facingDirection:K.facingDirection}));if(a.length<2)throw new Error("Expected at least two ports in portsWithPosition.");let s,l;const c=a[0].position,u=a[0].port;if("path"in this.props){if(this.props.path.length!==2)throw new Error("Invalid 'path': Must contain exactly two elements.");[s,l]=this.props.path}else{if(!("from"in this.props&&"to"in this.props))throw new Error("Missing 'from' or 'to' properties in props.");s=this.props.from,l=this.props.to}if(!u.source_port_id)throw new Error(`Missing source_port_id for the 'from' port (${s}).`);const A=a[1].position,d=a[1].port;if(!d.source_port_id)throw new Error(`Missing source_port_id for the 'to' port (${l}).`);const f=e.schematic_net_label.list().find(K=>K.source_net_id===u.source_port_id),m=e.schematic_net_label.list().find(K=>K.source_net_id===d.source_port_id),[C,E]=o.map(({port:K})=>K),x=((L=C.parent)==null?void 0:L.config.shouldRenderAsSchematicBox)?`${(O=C==null?void 0:C.parent)==null?void 0:O.props.name}_${C==null?void 0:C.props.name}`:`${(H=E==null?void 0:E.parent)==null?void 0:H.props.name}_${E==null?void 0:E.props.name}`,w=this.props.schDisplayLabel??x;f&&f.text!==w&&(f.text=`${w} / ${f.text}`),m&&(m==null?void 0:m.text)!==w&&(m.text=`${w} / ${m.text}`),m||e.schematic_net_label.insert({text:this.props.schDisplayLabel??x,source_net_id:d.source_port_id,anchor_position:A,center:A,anchor_side:_ce(d.facingDirection)??"bottom"}),f||e.schematic_net_label.insert({text:this.props.schDisplayLabel??x,source_net_id:u.source_port_id,anchor_position:c,center:c,anchor_side:_ce(u.facingDirection)??"bottom"})}_isSymbolToChipConnection(){const{allPortsFound:e,ports:t}=this._findConnectedPorts();if(!e||t.length!==2)return!1;const[n,i]=t;if(!(n!=null&&n.parent)||!(i!=null&&i.parent))return!1;const o=n.parent.config.shouldRenderAsSchematicBox,a=i.parent.config.shouldRenderAsSchematicBox;return o&&!a||!o&&a}_isSymbolToSymbolConnection(){const{allPortsFound:e,ports:t}=this._findConnectedPorts();if(!e||t.length!==2)return!1;const[n,i]=t;if(!(n!=null&&n.parent)||!(i!=null&&i.parent))return!1;const o=!n.parent.config.shouldRenderAsSchematicBox,a=!i.parent.config.shouldRenderAsSchematicBox;return o&&a}_isChipToChipConnection(){const{allPortsFound:e,ports:t}=this._findConnectedPorts();if(!e||t.length!==2)return!1;const[n,i]=t;if(!(n!=null&&n.parent)||!(i!=null&&i.parent))return!1;const o=n.parent.config.shouldRenderAsSchematicBox,a=i.parent.config.shouldRenderAsSchematicBox;return o&&a}doInitialSchematicTraceRender(){var fe,Ie,ve;if((fe=this.root)!=null&&fe.schematicDisabled||((Ie=this.getGroup())==null?void 0:Ie._getSchematicLayoutMode())==="match-adapt")return;const{db:e}=this.root,{_parsedProps:t,parent:n}=this;if(!n)throw new Error("Trace has no parent");const{allPortsFound:i,portsWithSelectors:o}=this._findConnectedPorts(),{netsWithSelectors:a}=this._findConnectedNets();if(!i)return;const l=o.map(Qe=>Qe.port.schematic_port_id).sort().join(","),c=(ve=this.root)==null?void 0:ve._getBoard();if(c!=null&&c._connectedSchematicPortPairs&&c._connectedSchematicPortPairs.has(l))return;if(this.props.schDisplayLabel&&("from"in this.props&&"to"in this.props||"path"in this.props)){this._doInitialSchematicTraceRenderWithDisplayLabel();return}const u={name:this.source_trace_id,pointsToConnect:[]},A=Zjt(this),d=o.map(({port:Qe})=>({port:Qe,position:Qe._getGlobalSchematicPositionAfterLayout(),schematic_port_id:Qe.schematic_port_id??void 0,facingDirection:Qe.facingDirection}));if(d.length===1&&a.length===1){const Qe=a[0].net,{port:De,position:Fe}=d[0];e.schematic_net_label.insert({text:Qe._parsedProps.name,source_net_id:Qe.source_net_id,anchor_position:Fe,center:Fe,anchor_side:_ce(De.facingDirection)??"bottom"});return}if(d.length<2)return;u.pointsToConnect=d.map(({position:Qe})=>({...Qe,layer:"top"}));const m=Gjt(A),C=2,E={minTraceWidth:.1,obstacles:A,connections:[u],bounds:{minX:m.minX-C,maxX:m.maxX+C,minY:m.minY-C,maxY:m.maxY+C},layerCount:1};let _=e6,x=!1;this.getSubcircuit().props._schDirectLineRoutingEnabled&&(_=f7e,x=!0);let P=new _({input:E,MAX_ITERATIONS:100,OBSTACLE_MARGIN:.1,isRemovePathLoopsEnabled:!0,isShortenPathWithShortcutsEnabled:!0,marginsWithCosts:[{margin:1,enterCost:0,travelCostFactor:1},{margin:.3,enterCost:0,travelCostFactor:1},{margin:.2,enterCost:0,travelCostFactor:2},{margin:.1,enterCost:0,travelCostFactor:3}]}).solveAndMapToTraces();if(P.length===0){if(this._isSymbolToChipConnection()||this._isSymbolToSymbolConnection()||this._isChipToChipConnection()){this._doInitialSchematicTraceRenderWithDisplayLabel();return}P=new f7e({input:E}).solveAndMapToTraces(),x=!0}const[{route:L}]=P;let O=[];for(let Qe=0;Qe<L.length-1;Qe++)O.push({from:L[Qe],to:L[Qe+1]});const H=this.source_trace_id;let K=[];if(!x){$jt({edges:O,db:e,source_trace_id:H});const Qe=J7({db:e,source_trace_id:H,differentNetOnly:!0}).flatMap(De=>De.edges);O=g7e({edges:O,otherEdges:Qe}),K=m7e({edges:O,db:e,source_trace_id:this.source_trace_id})}const q=O[O.length-1],Y=d[d.length-1],se=p7e(q);O.push(...xce({lastEdge:q,lastEdgePort:Y,lastDominantDirection:se}));const ie=O[0],de=d[0],Ce=p7e(ie);if(O.unshift(...xce({firstEdge:ie,firstEdgePort:de,firstDominantDirection:Ce})),!this.source_trace_id)throw new Error("Missing source_trace_id for schematic trace insertion.");if(this.getSubcircuit()._parsedProps.schTraceAutoLabelEnabled&&Yjt(K,O)>=5&&(this._isSymbolToChipConnection()||this._isSymbolToSymbolConnection()||this._isChipToChipConnection())){this._doInitialSchematicTraceRenderWithDisplayLabel();return}const xe=e.schematic_trace.insert({source_trace_id:this.source_trace_id,edges:O,junctions:K});this.schematic_trace_id=xe.schematic_trace_id,c!=null&&c._connectedSchematicPortPairs&&c._connectedSchematicPortPairs.add(l)}},tJt=uC("tscircuit:core"),nJt=Pn({x:ex,y:ex,z:ex}),L1=class extends aI{constructor(e){super(e);Ye(this,"reactSubtrees",[]);Ye(this,"_impliedFootprint");Ye(this,"isPrimitiveContainer",!0);Ye(this,"_asyncSupplierPartNumbers");Ye(this,"pcb_missing_footprint_error_id");Ye(this,"_hasStartedFootprintUrlLoad",!1);this._addChildrenFromStringFootprint(),this.initPorts()}get defaultInternallyConnectedPinNames(){return[]}get internallyConnectedPinNames(){return this._parsedProps.internallyConnectedPins??this.defaultInternallyConnectedPinNames}initPorts(e={}){var a,s,l,c,u,A,d,f,m,C;if((a=this.root)!=null&&a.schematicDisabled)return;const{config:t}=this,n=[],i=this._getSchematicPortArrangement();if(i&&!this._parsedProps.pinLabels){for(const x in i){const w=i[x].pins;if(Array.isArray(w))for(const P of w){const L=ZT(P,this._parsedProps.pinLabels);n.push(new Hw({pinNumber:L,aliases:((s=e.additionalAliases)==null?void 0:s[`pin${L}`])??[]},{originDescription:`schPortArrangement:${x}`}))}}const E=["left","right","top","bottom"];let _=1;for(const x of E){const w=i[`${x}Size`];for(let P=0;P<w;P++)n.push(new Hw({pinNumber:_++,aliases:((l=e.additionalAliases)==null?void 0:l[`pin${_}`])??[]},{originDescription:`schPortArrangement:${x}`}))}}const o=this._parsedProps.pinLabels;if(o)for(let[E,_]of Object.entries(o)){E=E.replace("pin","");let x=n.find(L=>L._parsedProps.pinNumber===Number(E));const w=Array.isArray(_)?_[0]:_,P=Array.isArray(_)?_.slice(1):[];x?(x.externallyAddedAliases.push(w,...P),x.props.name=w):(x=new Hw({pinNumber:parseInt(E),name:w,aliases:[...P,...((c=e.additionalAliases)==null?void 0:c[`pin${parseInt(E)}`])??[]]},{originDescription:`pinLabels:pin${E}`}),n.push(x))}if(t.schematicSymbolName){const E=SI[this._getSchematicSymbolNameOrThrow()];if(!E)return;for(const _ of E.ports){const x=A7e(_.labels);if(!x)continue;const w=n.find(P=>P._parsedProps.pinNumber===Number(x));if(w)w.schematicSymbolPortDef=_;else{const P=XT(_.labels.concat(((u=e.additionalAliases)==null?void 0:u[`pin${x}`])??[]));P&&(P.originDescription=`schematicSymbol:labels[0]:${_.labels[0]}`,P.schematicSymbolPortDef=_,n.push(P))}}this.addAll(n)}if(!this._getSchematicPortArrangement()){const E=this.getPortsFromFootprint(e);for(const _ of E)n.some(x=>x.isMatchingAnyOf(_.getNameAndAliases()))||n.push(_)}for(let E=1;E<=(e.pinCount??this._getPinCount());E++){if(!i||n.find(x=>x._parsedProps.pinNumber===E))continue;let _=[...((A=i.leftSide)==null?void 0:A.pins)??[],...((d=i.rightSide)==null?void 0:d.pins)??[],...((f=i.topSide)==null?void 0:f.pins)??[],...((m=i.bottomSide)==null?void 0:m.pins)??[]].map(x=>ZT(x,this._parsedProps.pinLabels));["leftSize","rightSize","topSize","bottomSize","leftPinCount","rightPinCount","topPinCount","bottomPinCount"].some(x=>x in i)&&(_=Array.from({length:this._getPinCount()},(x,w)=>w+1)),_.includes(E)&&n.push(new Hw({pinNumber:E,aliases:((C=e.additionalAliases)==null?void 0:C[`pin${E}`])??[]},{originDescription:`notOtherwiseAddedButDeducedFromPinCount:${E}`}))}n.length>0&&this.addAll(n)}_getImpliedFootprintString(){return null}_isFootprintUrl(e){return e.startsWith("http://")||e.startsWith("https://")}_addChildrenFromStringFootprint(){var o;const{name:e,pcbRotation:t,pinLabels:n}=this.props;let{footprint:i}=this.props;if(i??(i=(o=this._getImpliedFootprintString)==null?void 0:o.call(this)),!!i&&typeof i=="string"){if(this._isFootprintUrl(i))return;const a=nL.string(i).soup(),s=u7e({componentName:e,componentRotation:t,footprint:i,pinLabels:n},a);this.addAll(s)}}get portMap(){return new Proxy({},{get:(e,t)=>{const n=this.children.find(i=>i.componentName==="Port"&&i.isMatchingNameOrAlias(t));if(!n)throw new Error(`There was an issue finding the port "${t.toString()}" inside of a ${this.componentName} component with name: "${this.props.name}". This is a bug in @tscircuit/core`);return n}})}getInstanceForReactElement(e){for(const t of this.reactSubtrees)if(t.element===e)return t.component;return null}doInitialSourceRender(){const e=this.config.sourceFtype;if(!e)return;const{db:t}=this.root,{_parsedProps:n}=this,i=t.source_component.insert({ftype:e,name:n.name,manufacturer_part_number:n.manufacturerPartNumber??n.mfn,supplier_part_numbers:n.supplierPartNumbers});this.source_component_id=i.source_component_id}doInitialSchematicComponentRender(){var i,o,a;if((i=this.root)!=null&&i.schematicDisabled)return;const{db:e}=this.root,{schematicSymbolName:t}=this.config;t?this._doInitialSchematicComponentRenderWithSymbol():this._getSchematicBoxDimensions()&&this._doInitialSchematicComponentRenderWithSchematicBoxDimensions();const n=(o=this.getSubcircuit())==null?void 0:o._getSchematicManualPlacementForComponent(this);if(this.schematic_component_id&&(this.props.schX!==void 0||this.props.schY!==void 0)&&n){if(!this.schematic_component_id)return;const s=r8.parse({type:"schematic_manual_edit_conflict_warning",schematic_manual_edit_conflict_warning_id:`schematic_manual_edit_conflict_${this.source_component_id}`,message:`${this.getString()} has both manual placement and prop coordinates. schX and schY will be used. Remove schX/schY or clear the manual placement.`,schematic_component_id:this.schematic_component_id,source_component_id:this.source_component_id,subcircuit_id:(a=this.getSubcircuit())==null?void 0:a.subcircuit_id});e.schematic_manual_edit_conflict_warning.insert(s)}}_getSchematicSymbolDisplayValue(){}_getInternallyConnectedPins(){if(this.internallyConnectedPinNames.length===0)return[];const e=[];for(const t of this.internallyConnectedPinNames){const n=[];for(const i of t)n.push(this.portMap[i]);e.push(n)}return e}_doInitialSchematicComponentRenderWithSymbol(){var a;if((a=this.root)!=null&&a.schematicDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this._getSchematicSymbolNameOrThrow(),i=SI[n],o=this._getGlobalSchematicPositionBeforeLayout();if(i){const s=e.schematic_component.insert({center:o,size:i.size,source_component_id:this.source_component_id,symbol_name:n,symbol_display_value:this._getSchematicSymbolDisplayValue()});this.schematic_component_id=s.schematic_component_id}}_doInitialSchematicComponentRenderWithSchematicBoxDimensions(){var A;if((A=this.root)!=null&&A.schematicDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this._getSchematicBoxDimensions(),i={};if(Array.isArray(t.pinLabels))t.pinLabels.forEach((d,f)=>{i[String(f+1)]=d});else for(const[d,f]of Object.entries(t.pinLabels??{}))i[d]=Array.isArray(f)?f[0]:f;const o=this._getGlobalSchematicPositionBeforeLayout(),a=this._getSchematicPortArrangement(),s=e.schematic_component.insert({center:o,rotation:t.schRotation??0,size:n.getSize(),port_arrangement:Bjt(a),pin_spacing:t.schPinSpacing??.2,pin_styles:xjt(t.schPinStyle,t.pinLabels),port_labels:i,source_component_id:this.source_component_id}),l=(a==null?void 0:a.topSide)!==void 0||(a==null?void 0:a.bottomSide)!==void 0,c=n==null?void 0:n.getSize().width,u=n==null?void 0:n.getSize().height;e.schematic_text.insert({text:t.manufacturerPartNumber??"",schematic_component_id:s.schematic_component_id,anchor:"left",rotation:0,position:{x:l?o.x+(c??0)/2+.1:o.x-(c??0)/2,y:l?o.y+(u??0)/2+.35:o.y-(u??0)/2-.13},color:"#006464",font_size:.18}),e.schematic_text.insert({text:t.name??"",schematic_component_id:s.schematic_component_id,anchor:"left",rotation:0,position:{x:l?o.x+(c??0)/2+.1:o.x-(c??0)/2,y:l?o.y+(u??0)/2+.55:o.y+(u??0)/2+.13},color:"#006464",font_size:.18}),this.schematic_component_id=s.schematic_component_id}doInitialPcbComponentRender(){var a;if((a=this.root)!=null&&a.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this.getSubcircuit(),i=e.pcb_component.insert({center:this._getGlobalPcbPositionBeforeLayout(),width:0,height:0,layer:t.layer??"top",rotation:t.pcbRotation??0,source_component_id:this.source_component_id,subcircuit_id:n.subcircuit_id??void 0});if(!t.footprint&&!this.isGroup){const s=e.pcb_missing_footprint_error.insert({message:`No footprint found for component: ${this.getString()}`,source_component_id:`${this.source_component_id}`,error_type:"pcb_missing_footprint_error"});this.pcb_missing_footprint_error_id=s.pcb_missing_footprint_error_id}this.pcb_component_id=i.pcb_component_id;const o=this.getSubcircuit()._getPcbManualPlacementForComponent(this);if((this.props.pcbX!==void 0||this.props.pcbY!==void 0)&&o){const s=o8.parse({type:"pcb_manual_edit_conflict_warning",pcb_manual_edit_conflict_warning_id:`pcb_manual_edit_conflict_${this.source_component_id}`,message:`${this.getString()} has both manual placement and prop coordinates. pcbX and pcbY will be used. Remove pcbX/pcbY or clear the manual placement.`,pcb_component_id:this.pcb_component_id,source_component_id:this.source_component_id,subcircuit_id:n.subcircuit_id??void 0});e.pcb_manual_edit_conflict_warning.insert(s)}}doInitialPcbComponentSizeCalculation(){var o;if((o=this.root)!=null&&o.pcbDisabled||!this.pcb_component_id)return;const{db:e}=this.root,{_parsedProps:t}=this,n=Ece(this.children);if(n.width===0||n.height===0)return;const i={x:(n.minX+n.maxX)/2,y:(n.minY+n.maxY)/2};e.pcb_component.update(this.pcb_component_id,{center:i,width:n.width,height:n.height})}_renderReactSubtree(e){return{element:e,component:_jt(e)}}doInitialInitializePortsFromChildren(){this.initPorts()}doInitialReactSubtreesRender(){}doInitialPcbFootprintStringRender(){var o;let{footprint:e}=this.props;if(e??(e=(o=this._getImpliedFootprintString)==null?void 0:o.call(this)),!e)return;const{name:t,pcbRotation:n,pinLabels:i}=this.props;if(typeof e=="string"&&this._isFootprintUrl(e)){if(this._hasStartedFootprintUrlLoad)return;this._hasStartedFootprintUrlLoad=!0;const a=e;this._queueAsyncEffect("load-footprint-url",async()=>{const l=await(await fetch(a)).json(),c=u7e({componentName:t,componentRotation:n,footprint:a,pinLabels:i},l);this.addAll(c),this._markDirty("InitializePortsFromChildren")});return}if(pt.isValidElement(e)){if(this.reactSubtrees.some(s=>s.element===e))return;const a=this._renderReactSubtree(e);this.reactSubtrees.push(a),this.add(a.component);return}!pt.isValidElement(e)&&e.componentName==="Footprint"&&this.add(e)}_hasExistingPortExactly(e){return this.children.filter(n=>n.componentName==="Port").some(n=>{const i=e.getNameAndAliases(),o=n.getNameAndAliases();return i.length===o.length&&i.every(a=>o.includes(a))})}add(e){let t;if(pt.isValidElement(e)){const n=this._renderReactSubtree(e);this.reactSubtrees.push(n),t=n.component}else t=e;if(t.componentName==="Port"){if(this._hasExistingPortExactly(t))return;const i=this.children.filter(o=>o.componentName==="Port").find(o=>o.isMatchingAnyOf(t.getNameAndAliases()));i&&tJt(`Similar ports added. Port 1: ${i}, Port 2: ${t}`)}super.add(t)}getPortsFromFootprint(e){let{footprint:t}=this.props;if((!t||pt.isValidElement(t))&&(t=this.children.find(i=>i.componentName==="Footprint")),typeof t=="string"){if(this._isFootprintUrl(t))return[];const i=nL.string(t).soup(),o=[];for(const a of i)if("port_hints"in a&&a.port_hints){const s=XT(a.port_hints,e);if(!s)continue;s.originDescription=`footprint:string:${t}:port_hints[0]:${a.port_hints[0]}`,o.push(s)}return o}if(!pt.isValidElement(t)&&t&&t.componentName==="Footprint"){const i=t;let o=1;const a=[];for(const s of i.children){if(!s.props.portHints)continue;let l=s.props.portHints;l.some(A=>A.startsWith("pin"))||(l=[...l,`pin${o}`]),o++;const u=XT(l);u&&(u.originDescription=`footprint:${t}`,a.push(u))}return a}const n=[];if(!t){for(const i of this.children)if(i.props.portHints&&i.isPcbPrimitive){const o=XT(i.props.portHints);o&&n.push(o)}}return n}getPortsFromSchematicSymbol(){var i;if((i=this.root)!=null&&i.schematicDisabled)return[];const{config:e}=this;if(!e.schematicSymbolName)return[];const t=SI[e.schematicSymbolName];if(!t)return[];const n=[];for(const o of t.ports){const a=XT(o.labels);a&&(a.schematicSymbolPortDef=o,n.push(a))}return n}doInitialCreateNetsFromProps(){this._createNetsFromProps(this._getNetsFromConnectionsProp())}_getNetsFromConnectionsProp(){const{_parsedProps:e}=this,t=[];if(e.connections)for(const[n,i]of Object.entries(e.connections)){const o=Array.isArray(i)?i:[i];for(const a of o)t.push(a)}return t}_createNetsFromProps(e){a7e(this,e)}_getPcbCircuitJsonBounds(){const{db:e}=this.root;if(!this.pcb_component_id)return super._getPcbCircuitJsonBounds();const t=e.pcb_component.get(this.pcb_component_id);return{center:{x:t.center.x,y:t.center.y},bounds:{left:t.center.x-t.width/2,top:t.center.y-t.height/2,right:t.center.x+t.width/2,bottom:t.center.y+t.height/2},width:t.width,height:t.height}}_getPinCountFromSchematicPortArrangement(){const e=this._getSchematicPortArrangement();if(!e)return 0;if(!d7e(e))return(e.leftSize??e.leftPinCount??0)+(e.rightSize??e.rightPinCount??0)+(e.topSize??e.topPinCount??0)+(e.bottomSize??e.bottomPinCount??0);const{leftSide:n,rightSide:i,topSide:o,bottomSide:a}=e;return Math.max(...(n==null?void 0:n.pins)??[],...(i==null?void 0:i.pins)??[],...(o==null?void 0:o.pins)??[],...(a==null?void 0:a.pins)??[])}_getPinCount(){return this._getSchematicPortArrangement()?this._getPinCountFromSchematicPortArrangement():this.getPortsFromFootprint().length}_getSchematicPortArrangement(){return this._parsedProps.schPinArrangement??this._parsedProps.schPortArrangement}_getSchematicBoxDimensions(){if(this.getSchematicSymbol()||!this.config.shouldRenderAsSchematicBox)return null;const{_parsedProps:e}=this,t=this._getPinCount(),n=e.schPinSpacing??.2;return kjt({schWidth:e.schWidth,schHeight:e.schHeight,schPinSpacing:n,numericSchPinStyle:Ljt(e.schPinStyle,e.pinLabels),pinCount:t,schPortArrangement:this._getSchematicPortArrangement(),pinLabels:e.pinLabels})}doInitialCadModelRender(){var c;const{db:e}=this.root,{boardThickness:t=0}=((c=this.root)==null?void 0:c._getBoard())??{},n=this._parsedProps.cadModel;if(!this.pcb_component_id||!n&&!this.props.footprint||n===null)return;const i=this._getPcbCircuitJsonBounds(),o=e.pcb_component.get(this.pcb_component_id);if(typeof n=="string")throw new Error("String cadModel not yet implemented");const a=nJt.parse({x:0,y:0,z:typeof(n==null?void 0:n.rotationOffset)=="number"?n.rotationOffset:0,...typeof(n==null?void 0:n.rotationOffset)=="object"?n.rotationOffset??{}:{}}),s=S2.parse({x:0,y:0,z:0,...typeof(n==null?void 0:n.positionOffset)=="object"?n.positionOffset:{}}),l=this.props.layer==="bottom"?"bottom":"top";e.cad_component.insert({position:{x:i.center.x+s.x,y:i.center.y+s.y,z:(l==="bottom"?-t/2:t/2)+s.z},rotation:{x:a.x,y:(l==="top"?0:180)+a.y,z:l==="bottom"?-(((o==null?void 0:o.rotation)??0)+a.z)+180:((o==null?void 0:o.rotation)??0)+a.z},pcb_component_id:this.pcb_component_id,source_component_id:this.source_component_id,model_stl_url:"stlUrl"in(n??{})?this._addCachebustToModelUrl(n.stlUrl):void 0,model_obj_url:"objUrl"in(n??{})?this._addCachebustToModelUrl(n.objUrl):void 0,model_jscad:"jscad"in(n??{})?n.jscad:void 0,footprinter_string:typeof this.props.footprint=="string"&&!n?this.props.footprint:void 0})}_addCachebustToModelUrl(e){var n;if(!e||!e.includes("modelcdn.tscircuit.com"))return e;const t=((n=this.root)==null?void 0:n.getClientOrigin())??"";return`${e}${e.includes("?")?"&":"?"}cachebust_origin=${encodeURIComponent(t)}`}_getPartsEngineCacheKey(e,t){return JSON.stringify({ftype:e.ftype,name:e.name,manufacturer_part_number:e.manufacturer_part_number,footprinterString:t})}async _getSupplierPartNumbers(e,t,n){var l,c;if(this.props.doNotPlace)return{};const i=(c=(l=this.root)==null?void 0:l.platform)==null?void 0:c.localCacheEngine,o=this._getPartsEngineCacheKey(t,n);if(i){const u=await i.getItem(o);if(u)try{return JSON.parse(u)}catch{}}const a=await Promise.resolve(e.findPart({sourceComponent:t,footprinterString:n})),s=a==="Not found"?{}:a;if(i)try{await i.setItem(o,JSON.stringify(s))}catch{}return s}doInitialPartsEngineRender(){if(this.props.doNotPlace)return;const e=this.getInheritedProperty("partsEngine");if(!e)return;const{db:t}=this.root,n=t.source_component.get(this.source_component_id);if(!n||n.supplier_part_numbers)return;let i;this.props.footprint&&typeof this.props.footprint=="string"&&(i=this.props.footprint);const o=this._getSupplierPartNumbers(e,n,i);if(!(o instanceof Promise)){t.source_component.update(this.source_component_id,{supplier_part_numbers:o});return}this._queueAsyncEffect("get-supplier-part-numbers",async()=>{this._asyncSupplierPartNumbers=await o,this._markDirty("PartsEngineRender")})}updatePartsEngineRender(){if(this.props.doNotPlace)return;const{db:e}=this.root,t=e.source_component.get(this.source_component_id);if(t&&!t.supplier_part_numbers&&this._asyncSupplierPartNumbers){e.source_component.update(this.source_component_id,{supplier_part_numbers:this._asyncSupplierPartNumbers});return}}doInitialCreateTracesFromProps(){this._createTracesFromConnectionsProp()}_createTracesFromConnectionsProp(){const{_parsedProps:e}=this;if(e.connections)for(const[t,n]of Object.entries(e.connections)){const i=Array.isArray(n)?n:[n];for(const o of i)this.add(new Yw({from:`${this.getSubcircuitSelector()} > port.${t}`,to:o}))}}},rJt=class{constructor(r,e={}){Ye(this,"input");Ye(this,"isRouting",!1);Ye(this,"solver");Ye(this,"eventHandlers",{complete:[],error:[],progress:[]});Ye(this,"cycleCount",0);Ye(this,"stepDelay");Ye(this,"timeoutId");this.input=r;const{capacityDepth:t,targetMinCapacity:n,stepDelay:i=0}=e;this.solver=new oke(r,{capacityDepth:t,targetMinCapacity:n,cacheProvider:null}),this.stepDelay=i}start(){this.isRouting||(this.isRouting=!0,this.cycleCount=0,this.runCycleAndQueueNextCycle())}runCycleAndQueueNextCycle(){var r;if(this.isRouting)try{if(this.solver.solved||this.solver.failed){this.solver.failed?this.emitEvent({type:"error",error:new Error(this.solver.error||"Routing failed")}):this.emitEvent({type:"complete",traces:this.solver.getOutputSimpleRouteJson().traces||[]}),this.isRouting=!1;return}const e=Date.now(),t=this.solver.iterations;for(;Date.now()-e<250&&!this.solver.failed&&!this.solver.solved;)this.solver.step();const n=(this.solver.iterations-t)/(Date.now()-e)*1e3;this.cycleCount++;const i=((r=this.solver)==null?void 0:r.preview())||void 0,o=this.solver.progress;this.emitEvent({type:"progress",steps:this.cycleCount,iterationsPerSecond:n,progress:o,phase:this.solver.getCurrentPhase(),debugGraphics:i}),this.stepDelay>0?this.timeoutId=setTimeout(()=>this.runCycleAndQueueNextCycle(),this.stepDelay):this.timeoutId=setTimeout(()=>this.runCycleAndQueueNextCycle(),0)}catch(e){this.emitEvent({type:"error",error:e instanceof Error?e:new Error(String(e))}),this.isRouting=!1}}stop(){this.isRouting&&(this.isRouting=!1,this.timeoutId!==void 0&&(clearTimeout(this.timeoutId),this.timeoutId=void 0))}on(r,e){r==="complete"?this.eventHandlers.complete.push(e):r==="error"?this.eventHandlers.error.push(e):r==="progress"&&this.eventHandlers.progress.push(e)}emitEvent(r){if(r.type==="complete")for(const e of this.eventHandlers.complete)e(r);else if(r.type==="error")for(const e of this.eventHandlers.error)e(r);else if(r.type==="progress")for(const e of this.eventHandlers.progress)e(r)}solveSync(){if(this.solver.solve(),this.solver.failed)throw new Error(this.solver.error||"Routing failed");return this.solver.getOutputSimpleRouteJson().traces||[]}},y7e=class extends aI{constructor(){super(...arguments);Ye(this,"matchedPort",null)}get config(){return{componentName:"TraceHint",zodProps:u8e}}doInitialPortMatching(){const{db:e}=this.root,{_parsedProps:t,parent:n}=this;if(!n)return;if(n.componentName==="Trace"){this.renderError(`Port inference inside trace is not yet supported (${this})`);return}if(!n)throw new Error("TraceHint has no parent");if(!t.for){this.renderError(`TraceHint has no for property (${this})`);return}const i=n.selectOne(t.for,{type:"port"});i||this.renderError(`${this} could not find port for selector "${t.for}"`),this.matchedPort=i,i.registerMatch(this)}getPcbRouteHints(){const{_parsedProps:e}=this,t=e.offset?[e.offset]:e.offsets;if(!t)return[];const n=this._computePcbGlobalTransformBeforeLayout();return t.map(i=>({...Xr(n,i),via:i.via,to_layer:i.to_layer,trace_width:i.trace_width}))}doInitialPcbTraceHintRender(){var n,i,o;if((n=this.root)!=null&&n.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this;e.pcb_trace_hint.insert({pcb_component_id:(i=this.matchedPort)==null?void 0:i.pcb_component_id,pcb_port_id:(o=this.matchedPort)==null?void 0:o.pcb_port_id,route:this.getPcbRouteHints()})}},iJt=(r,e)=>{if(r_(r).pcb_trace_hint.get(e.pcb_trace_hint_id))r=r.map(n=>n.pcb_trace_hint_id===e.pcb_trace_hint_id?{...n,route:e.route}:n);else{const n=r_(r).pcb_port.get(e.pcb_port_id);r=r.filter(i=>!(i.type==="pcb_trace_hint"&&i.pcb_port_id===e.pcb_port_id)).concat([{type:"pcb_trace_hint",pcb_trace_hint_id:e.pcb_trace_hint_id,route:e.route,pcb_port_id:e.pcb_port_id,pcb_component_id:n==null?void 0:n.pcb_component_id}])}return r},oJt=({circuitJson:r,editEvents:e})=>{r=JSON.parse(JSON.stringify(r));for(const t of e)if(t.edit_event_type==="edit_pcb_component_location"){const n=r.find(o=>o.type==="pcb_component"&&o.pcb_component_id===t.pcb_component_id);if((!n||n.center.x!==t.new_center.x||n.center.y!==t.new_center.y)&&t.original_center){const o=$d(t.new_center.x-t.original_center.x,t.new_center.y-t.original_center.y);r=r.map(a=>a.pcb_component_id!==t.pcb_component_id?a:lke(a,o))}}else t.edit_event_type==="edit_schematic_component_location"?r=r.map(n=>n.type==="schematic_component"&&n.schematic_component_id===t.schematic_component_id?{...n,center:t.new_center}:n):t.edit_event_type==="edit_pcb_trace_hint"&&(r=iJt(r,t));return r},aJt=(r,e)=>{const t=r.source_group.list(),n=[],i=o=>{const a=t.filter(s=>s.parent_subcircuit_id===o);for(const s of a)s.subcircuit_id&&(n.push(s.subcircuit_id),i(s.subcircuit_id))};return i(e),n},v7e=({db:r,circuitJson:e,subcircuit_id:t,minTraceWidth:n=.1})=>{if(!r&&e&&(r=r_(e)),!r)throw new Error("db or circuitJson is required");const i=r.pcb_trace_hint.list(),o=t?new Set([t]):null;if(t){const C=aJt(r,t);for(const E of C)o.add(E)}const a=(e??r.toArray()).filter(C=>!t||"subcircuit_id"in C&&o.has(C.subcircuit_id)),s=r.pcb_board.list()[0];r=r_(a);const l=Tw(a),c=t6([...r.pcb_component.list(),...r.pcb_smtpad.list(),...r.pcb_plated_hole.list(),...r.pcb_hole.list(),...r.pcb_via.list()].filter(C=>!t||(o==null?void 0:o.has(C.subcircuit_id))),l);for(const C of c){const E=C.connectedTo.flatMap(_=>l.getIdsConnectedToNet(_));C.connectedTo.push(...E)}const u=c.flatMap(C=>[{x:C.center.x-C.width/2,y:C.center.y-C.height/2},{x:C.center.x+C.width/2,y:C.center.y+C.height/2}]);let A;s?A={minX:s.center.x-s.width/2,maxX:s.center.x+s.width/2,minY:s.center.y-s.height/2,maxY:s.center.y+s.height/2}:A={minX:Math.min(...u.map(C=>C.x))-1,maxX:Math.max(...u.map(C=>C.x))+1,minY:Math.min(...u.map(C=>C.y))-1,maxY:Math.max(...u.map(C=>C.y))+1};const d=r.source_trace.list().map(C=>{var H,K,q;const E=C.connected_source_port_ids.map(Y=>{const se=r.source_port.get(Y),ie=r.pcb_port.getWhere({source_port_id:Y});return{...se,...ie}});if(E.length<2)return null;const[_,x]=E,w=((H=_.layers)==null?void 0:H[0])??"top",P=((K=x.layers)==null?void 0:K[0])??"top",L=i.filter(Y=>Y.pcb_port_id===_.pcb_port_id||Y.pcb_port_id===x.pcb_port_id),O=[];for(const Y of L){const se=r.pcb_port.get(Y.pcb_port_id),ie=((q=se==null?void 0:se.layers)==null?void 0:q[0])??"top";for(const de of Y.route)O.push({x:de.x,y:de.y,layer:ie})}return{name:C.source_trace_id??l.getNetConnectedToId(C.source_trace_id)??"",source_trace_id:C.source_trace_id,pointsToConnect:[{x:_.x,y:_.y,layer:w},...O,{x:x.x,y:x.y,layer:P}]}}).filter(C=>C!==null),f=r.source_net.list().filter(C=>!t||(o==null?void 0:o.has(C.subcircuit_id))),m=[];for(const C of f){const E=r.source_trace.list().filter(_=>{var x;return(x=_.connected_source_net_ids)==null?void 0:x.includes(C.source_net_id)});m.push({name:C.source_net_id??l.getNetConnectedToId(C.source_net_id),pointsToConnect:E.flatMap(_=>r.pcb_port.list().filter(w=>_.connected_source_port_ids.includes(w.source_port_id)).map(w=>{var P;return{x:w.x,y:w.y,layer:((P=w.layers)==null?void 0:P[0])??"top",pcb_port_id:w.pcb_port_id}}))})}return{simpleRouteJson:{bounds:A,obstacles:c,connections:[...d,...m],layerCount:2,minTraceWidth:n},connMap:l}};function Bce(r,e){if("boxId"in r){const{boxId:t,pinNumber:n}=r,i=e.source_component.getWhere({name:t});if(!i)throw new Error(`Source component "${t}" not found, but returned from match-adapt ${JSON.stringify(r)}`);const o=e.source_port.getWhere({source_component_id:i.source_component_id,pin_number:n});return{subcircuit_connectivity_map_key:(o==null?void 0:o.subcircuit_connectivity_map_key)??null,source_port_id:o.source_port_id}}if("netId"in r){const{netId:t}=r;return e.source_net.getWhere({name:t}),null}if("junctionId"in r){const{junctionId:t}=r;return null}return null}function sJt({path:r,db:e,layoutConnMap:t}){let n=Bce(r.to,e)??Bce(r.from,e);if(!n){const o=t.getNetConnectedToId(D_(r.to));n=t.getIdsConnectedToNet(o).map(s=>L6(s)).map(s=>Bce(s,e)).find(Boolean)}if(!(n!=null&&n.subcircuit_connectivity_map_key))throw new Error(`No connectivity net id found for match-adapt path ${JSON.stringify(r)}`);const i=e.source_trace.list({subcircuit_connectivity_map_key:n.subcircuit_connectivity_map_key});for(const o of i)if(o.connected_source_port_ids.includes(n.source_port_id))return o.source_trace_id;if(i.length>0)return i[0].source_trace_id;throw new Error(`No source trace found for match-adapt path "${JSON.stringify(r)}"`)}function lJt(r){const{db:e}=r.root;let t=structuredClone(e.toArray());t=Ske(t);const n=bke(t),i=new Bke({inputNetlist:n});let o=null;try{i.solve(),o=i.getLayout()}catch(A){e.schematic_layout_error.insert({message:`Match-adapt layout failed: ${A.toString()}`,source_group_id:r.source_group_id,schematic_group_id:r.schematic_group_id});return}const{boxes:a,junctions:s,netLabels:l,paths:c}=o,u=new N9({});for(const A of c)u.addConnections([[D_(A.from),D_(A.to)]]);for(const A of s)for(const d of c)for(const f of d.points)Math.abs(f.x-A.x)<.001&&Math.abs(f.y-A.y)<.001&&u.addConnections([[D_(d.from),D_(A)],[D_(d.to),D_(A)]]);for(const A of a){const d=e.source_component.list().find(_=>_.name===A.boxId);if(!d)continue;const f=e.schematic_component.getWhere({source_component_id:d.source_component_id});if(!f)continue;const m={x:A.centerX-f.center.x+.1,y:A.centerY-f.center.y-.1};e.schematic_component.update(f.schematic_component_id,{center:{x:f.center.x+m.x,y:f.center.y+m.y}});const C=e.schematic_port.list({schematic_component_id:f.schematic_component_id});for(const _ of C)e.schematic_port.update(_.schematic_port_id,{center:{x:_.center.x+m.x,y:_.center.y+m.y}});const E=e.schematic_text.list({schematic_component_id:f.schematic_component_id});for(const _ of E)e.schematic_text.update(_.schematic_text_id,{position:{x:_.position.x+m.x,y:_.position.y+m.y}})}for(const A of l){const d=e.source_net.list().find(f=>f.name===A.netId);e.schematic_net_label.insert({text:A.netId,source_net_id:d==null?void 0:d.source_net_id,anchor_position:{x:A.x,y:A.y},center:{x:A.x,y:A.y},anchor_side:A.anchorPosition})}for(const A of c){if(!A.points||A.points.length<2)continue;const d=sJt({path:A,db:TB(t),layoutConnMap:u});let f=[];for(let E=0;E<A.points.length-1;E++)f.push({from:{x:A.points[E].x,y:A.points[E].y},to:{x:A.points[E+1].x,y:A.points[E+1].y}});const m=J7({db:e,source_trace_id:d,differentNetOnly:!0}).flatMap(E=>E.edges);m.length>0&&(f=g7e({edges:f,otherEdges:m}));const C=m7e({edges:f,db:e,source_trace_id:d});e.schematic_trace.insert({source_trace_id:d,edges:f,junctions:C})}}function cJt(r){if(!r.isSubcircuit)return;const{db:e}=r.root,t=r.selectAll("trace"),n=new N9({});n.addConnections(t.map(s=>{const l=e.source_trace.get(s.source_trace_id);return l?[l.source_trace_id,...l.connected_source_port_ids,...l.connected_source_net_ids]:null}).filter(s=>s!==null));const{name:i}=r._parsedProps;for(const s of t){if(!s.source_trace_id)continue;const l=n.getNetConnectedToId(s.source_trace_id);l&&(s.subcircuit_connectivity_map_key=`${i??`unnamedsubcircuit${r._renderId}`}_${l}`,e.source_trace.update(s.source_trace_id,{subcircuit_connectivity_map_key:s.subcircuit_connectivity_map_key}))}const o=new Set;for(const s of t){if(!s.source_trace_id)continue;const l=e.source_trace.get(s.source_trace_id);if(l)for(const c of l.connected_source_port_ids)o.add(c)}for(const s of o){const l=n.getNetConnectedToId(s);if(!l)continue;const c=`${i??`unnamedsubcircuit${r._renderId}`}_${l}`;e.source_port.update(s,{subcircuit_connectivity_map_key:c})}const a=new Set;for(const s of t){if(!s.source_trace_id)continue;const l=e.source_trace.get(s.source_trace_id);if(l)for(const c of l.connected_source_net_ids)a.add(c)}for(const s of a){const l=n.getNetConnectedToId(s);if(!l)continue;const c=`${i??`unnamedsubcircuit${r._renderId}`}_${l}`;e.source_net.update(s,{subcircuit_connectivity_map_key:c})}}function uJt(r){var x;const{db:e}=r.root,t=r._parsedProps,n=r.children.filter(w=>w.schematic_component_id);if(n.length===0)return;let i=0,o=0;for(const w of n){const P=e.schematic_component.get(w.schematic_component_id);P!=null&&P.size&&(i=Math.max(i,P.size.width),o=Math.max(o,P.size.height))}i===0&&n.length>0&&(i=1),o===0&&n.length>0&&(o=1);let a=t.gridCols,s,l=t.gridGap;(x=t.schLayout)!=null&&x.grid&&(a=t.schLayout.grid.cols??a,s=t.schLayout.grid.rows,l=t.schLayout.grid.gap??l);let c,u;a!==void 0&&s!==void 0?(c=a,u=s):a!==void 0?(c=a,u=Math.ceil(n.length/c)):s!==void 0?(u=s,c=Math.ceil(n.length/u)):(c=Math.ceil(Math.sqrt(n.length)),u=Math.ceil(n.length/c)),c===0&&n.length>0&&(c=1),u===0&&n.length>0&&(u=n.length);let A,d;typeof l=="number"?(A=l,d=l):typeof l=="object"&&l!==null?(A=l.x,d=l.y):(A=1,d=1);const f=c*i+Math.max(0,c-1)*A,m=u*o+Math.max(0,u-1)*d,C=r._getGlobalSchematicPositionBeforeLayout(),E=C.x-f/2+i/2,_=C.y+m/2-o/2;for(let w=0;w<n.length;w++){const P=n[w];if(!P.schematic_component_id)continue;const L=Math.floor(w/c),O=w%c;if(L>=u||O>=c){console.warn(`Schematic grid layout: Child ${P.getString()} at index ${w} (row ${L}, col ${O}) exceeds specified grid dimensions (${u}x${c}). Skipping placement.`);continue}const H=E+O*(i+A),K=_-L*(o+d),q=e.schematic_component.get(P.schematic_component_id);if(q){const Y=q.center,se={x:H,y:K};e.schematic_component.update(P.schematic_component_id,{center:se});const ie=se.x-Y.x,de=se.y-Y.y,Ce=e.schematic_port.list({schematic_component_id:P.schematic_component_id});for(const fe of Ce)e.schematic_port.update(fe.schematic_port_id,{center:{x:fe.center.x+ie,y:fe.center.y+de}});const xe=e.schematic_text.list({schematic_component_id:P.schematic_component_id});for(const fe of xe)e.schematic_text.update(fe.schematic_text_id,{position:{x:fe.position.x+ie,y:fe.position.y+de}})}}r.schematic_group_id&&e.schematic_group.update(r.schematic_group_id,{width:f,height:m,center:C})}function AJt(r){var x;const{db:e}=r.root,t=r._parsedProps,n=r.children.filter(w=>w.pcb_component_id);if(n.length===0)return;let i=0,o=0;for(const w of n){const P=e.pcb_component.get(w.pcb_component_id);P&&(i=Math.max(i,P.width),o=Math.max(o,P.height))}i===0&&n.length>0&&(i=1),o===0&&n.length>0&&(o=1);let a=t.gridCols,s,l=t.gridGap;(x=t.pcbLayout)!=null&&x.grid&&(a=t.pcbLayout.grid.cols??a,s=t.pcbLayout.grid.rows,l=t.pcbLayout.grid.gap??l);let c,u;a!==void 0&&s!==void 0?(c=a,u=s):a!==void 0?(c=a,u=Math.ceil(n.length/c)):s!==void 0?(u=s,c=Math.ceil(n.length/u)):(c=Math.ceil(Math.sqrt(n.length)),u=Math.ceil(n.length/c)),c===0&&n.length>0&&(c=1),u===0&&n.length>0&&(u=n.length);let A,d;typeof l=="number"?(A=l,d=l):typeof l=="object"&&l!==null?(A=l.x,d=l.y):(A=1,d=1);const f=c*i+Math.max(0,c-1)*A,m=u*o+Math.max(0,u-1)*d,C=r._getGlobalPcbPositionBeforeLayout(),E=C.x-f/2+i/2,_=C.y+m/2-o/2;for(let w=0;w<n.length;w++){const P=n[w];if(!P.pcb_component_id)continue;const L=Math.floor(w/c),O=w%c;if(L>=u||O>=c){console.warn(`PCB grid layout: Child ${P.getString()} at index ${w} (row ${L}, col ${O}) exceeds grid dimensions (${u}x${c}). Skipping placement.`);continue}const H=E+O*(i+A),K=_-L*(o+d),q=e.pcb_component.get(P.pcb_component_id);if(q){const Y=q.center,se={x:H,y:K},ie=se.x-Y.x,de=se.y-Y.y,Ce=$d(ie,de),xe=e.toArray().filter(Ie=>Ie.pcb_component_id===P.pcb_component_id),fe=cke(xe,Ce);for(const Ie of fe){const ve=IT(Ie);e[Ie.type].update(Ie[ve],Ie)}e.pcb_component.update(P.pcb_component_id,{center:se}),P.setProps({...P.props,pcbX:(P.props.pcbX??0)+ie,pcbY:(P.props.pcbY??0)+de})}}r.pcb_group_id&&e.pcb_group.update(r.pcb_group_id,{width:f,height:m,center:C})}var bce=class extends L1{constructor(){super(...arguments);Ye(this,"pcb_group_id",null);Ye(this,"schematic_group_id",null);Ye(this,"subcircuit_id",null);Ye(this,"_hasStartedAsyncAutorouting",!1);Ye(this,"_asyncAutoroutingResult",null)}get config(){return{zodProps:SPe,componentName:"Group"}}doInitialSourceRender(){const{db:e}=this.root,t=e.source_group.insert({name:this._parsedProps.name,is_subcircuit:this.isSubcircuit});this.subcircuit_id=`subcircuit_${t.source_group_id}`,this.source_group_id=t.source_group_id,e.source_group.update(t.source_group_id,{subcircuit_id:this.subcircuit_id});for(const n of this.children)e.source_component.update(n.source_component_id,{source_group_id:this.source_group_id})}doInitialSourceParentAttachment(){var n,i,o;const{db:e}=this.root;if(!this.isSubcircuit)return;const t=(o=(i=(n=this.parent)==null?void 0:n.getSubcircuit)==null?void 0:i.call(n))==null?void 0:o.subcircuit_id;t&&e.source_group.update(this.source_group_id,{parent_subcircuit_id:t})}doInitialPcbComponentRender(){var i;if((i=this.root)!=null&&i.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=e.pcb_group.insert({is_subcircuit:this.isSubcircuit,subcircuit_id:this.subcircuit_id,name:this._parsedProps.name,center:this._getGlobalPcbPositionBeforeLayout(),width:0,height:0,pcb_component_ids:[],source_group_id:this.source_group_id});this.pcb_group_id=n.pcb_group_id;for(const o of this.children)e.pcb_component.update(o.pcb_component_id,{pcb_group_id:n.pcb_group_id})}doInitialPcbPrimitiveRender(){var n;if((n=this.root)!=null&&n.pcbDisabled)return;const{db:e}=this.root,t=Ece(this.children);this.pcb_group_id&&e.pcb_group.update(this.pcb_group_id,{width:t.width,height:t.height,center:{x:(t.minX+t.maxX)/2,y:(t.minY+t.maxY)/2}})}doInitialCreateTraceHintsFromProps(){var o;const{_parsedProps:e}=this,{db:t}=this.root,n=e;if(!this.isSubcircuit)return;const i=(o=n.layout)==null?void 0:o.manual_trace_hints;if(i)for(const a of i)this.add(new y7e({for:a.pcb_port_selector,offsets:a.offsets}))}doInitialSourceAddConnectivityMapKey(){cJt(this)}_areChildSubcircuitsRouted(){const e=this.selectAll("group").filter(t=>t.isSubcircuit);for(const t of e)if(t._shouldRouteAsync()&&!t._asyncAutoroutingResult)return!1;return!0}_shouldRouteAsync(){const e=this._getAutorouterConfig();return e.groupMode==="sequential-trace"?!1:!!(e.local&&e.groupMode==="subcircuit"||!e.local)}_hasTracesToRoute(){const e=uC("tscircuit:core:_hasTracesToRoute"),t=this.selectAll("trace");return e(`[${this.getString()}] has ${t.length} traces to route`),t.length>0}async _runEffectMakeHttpAutoroutingRequest(){var c,u,A,d;const{db:e}=this.root,t=uC("tscircuit:core:_runEffectMakeHttpAutoroutingRequest");this._parsedProps;const n=this._getAutorouterConfig(),i=n.serverUrl,o=n.serverMode,a=(f,m)=>{var C;return t("fetching",f),m.headers&&(m.headers["Tscircuit-Core-Version"]=(C=this.root)==null?void 0:C.getCoreVersion()),fetch(f,m)},s=this.root.db.toArray().filter(f=>f.type.startsWith("source_")||f.type.startsWith("pcb_"));if(o==="solve-endpoint"){if(((c=this.props.autorouter)==null?void 0:c.inputFormat)==="simplified"){const{autorouting_result:m}=await a(`${i}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_simple_route_json:v7e({db:e,minTraceWidth:((u=this.props.autorouter)==null?void 0:u.minTraceWidth)??.15,subcircuit_id:this.subcircuit_id}).simpleRouteJson,subcircuit_id:this.subcircuit_id}),headers:{"Content-Type":"application/json"}}).then(C=>C.json());this._asyncAutoroutingResult=m,this._markDirty("PcbTraceRender");return}const{autorouting_result:f}=await a(`${i}/autorouting/solve`,{method:"POST",body:JSON.stringify({input_circuit_json:s,subcircuit_id:this.subcircuit_id}),headers:{"Content-Type":"application/json"}}).then(m=>m.json());this._asyncAutoroutingResult=f,this._markDirty("PcbTraceRender");return}const{autorouting_job:l}=await a(`${i}/autorouting/jobs/create`,{method:"POST",body:JSON.stringify({input_circuit_json:s,provider:"freerouting",autostart:!0,display_name:(A=this.root)==null?void 0:A.name,subcircuit_id:this.subcircuit_id,server_cache_enabled:n.serverCacheEnabled}),headers:{"Content-Type":"application/json"}}).then(f=>f.json());for(;;){const{autorouting_job:f}=await a(`${i}/autorouting/jobs/get`,{method:"POST",body:JSON.stringify({autorouting_job_id:l.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(m=>m.json());if(f.is_finished){const{autorouting_job_output:m}=await a(`${i}/autorouting/jobs/get_output`,{method:"POST",body:JSON.stringify({autorouting_job_id:l.autorouting_job_id}),headers:{"Content-Type":"application/json"}}).then(C=>C.json());this._asyncAutoroutingResult={output_pcb_traces:m.output_pcb_traces},this._markDirty("PcbTraceRender");break}if(f.has_error)throw e.pcb_autorouting_error.insert({pcb_error_id:l.autorouting_job_id,message:((d=f.error)==null?void 0:d.message)??JSON.stringify(f.error)}),new Error(`Autorouting job failed: ${JSON.stringify(f.error)}`);await new Promise(m=>setTimeout(m,100))}}async _runLocalAutorouting(){var s,l,c,u,A;const{db:e}=this.root;this._parsedProps;const t=uC("tscircuit:core:_runLocalAutorouting");t(`[${this.getString()}] starting local autorouting`);const n=this._getAutorouterConfig(),{simpleRouteJson:i}=v7e({db:e,minTraceWidth:((s=this.props.autorouter)==null?void 0:s.minTraceWidth)??.15,subcircuit_id:this.subcircuit_id});(l=this.root)==null||l.emit("autorouting:start",{subcircuit_id:this.subcircuit_id,componentDisplayName:this.getString(),simpleRouteJson:i});let o;n.algorithmFn?o=await n.algorithmFn(i):o=new rJt(i,{capacityDepth:(c=this.props.autorouter)==null?void 0:c.capacityDepth,targetMinCapacity:(u=this.props.autorouter)==null?void 0:u.targetMinCapacity});const a=new Promise((d,f)=>{o.on("complete",m=>{t(`[${this.getString()}] local autorouting complete`),d(m.traces)}),o.on("error",m=>{t(`[${this.getString()}] local autorouting error: ${m.error.message}`),f(m.error)})});o.on("progress",d=>{var f;(f=this.root)==null||f.emit("autorouting:progress",{subcircuit_id:this.subcircuit_id,componentDisplayName:this.getString(),...d})}),o.start();try{const d=await a;this._asyncAutoroutingResult={output_pcb_traces:d},this._markDirty("PcbTraceRender")}catch(d){const{db:f}=this.root;throw f.pcb_autorouting_error.insert({pcb_error_id:`pcb_autorouter_error_subcircuit_${this.subcircuit_id}`,message:d instanceof Error?d.message:String(d)}),(A=this.root)==null||A.emit("autorouting:error",{subcircuit_id:this.subcircuit_id,componentDisplayName:this.getString(),error:{message:d instanceof Error?d.message:String(d)},simpleRouteJson:i}),d}finally{o.stop()}}_startAsyncAutorouting(){this._hasStartedAsyncAutorouting||(this._hasStartedAsyncAutorouting=!0,this._getAutorouterConfig().local?this._queueAsyncEffect("capacity-mesh-autorouting",async()=>this._runLocalAutorouting()):this._queueAsyncEffect("make-http-autorouting-request",async()=>this._runEffectMakeHttpAutoroutingRequest()))}doInitialPcbTraceRender(){var t;const e=uC("tscircuit:core:doInitialPcbTraceRender");if(this.isSubcircuit&&!((t=this.root)!=null&&t.pcbDisabled)&&!this.getInheritedProperty("routingDisabled")&&!this._shouldUseTraceByTraceRouting()){if(!this._areChildSubcircuitsRouted()){e(`[${this.getString()}] child subcircuits are not routed, skipping async autorouting until subcircuits routed`);return}e(`[${this.getString()}] no child subcircuits to wait for, initiating async routing`),this._hasTracesToRoute()&&this._startAsyncAutorouting()}}updatePcbTraceRender(){var n;const e=uC("tscircuit:core:updatePcbTraceRender");if(e(`[${this.getString()}] updating...`),!this.isSubcircuit)return;if(this._shouldRouteAsync()&&this._hasTracesToRoute()&&!this._hasStartedAsyncAutorouting){this._areChildSubcircuitsRouted()&&(e(`[${this.getString()}] child subcircuits are now routed, starting async autorouting`),this._startAsyncAutorouting());return}if(!this._asyncAutoroutingResult||this._shouldUseTraceByTraceRouting())return;const{db:t}=this.root;if(this._asyncAutoroutingResult.output_simple_route_json){e(`[${this.getString()}] updating PCB traces from simple route json (${(n=this._asyncAutoroutingResult.output_simple_route_json.traces)==null?void 0:n.length} traces)`),this._updatePcbTraceRenderFromSimpleRouteJson();return}if(this._asyncAutoroutingResult.output_pcb_traces){e(`[${this.getString()}] updating PCB traces from ${this._asyncAutoroutingResult.output_pcb_traces.length} traces`),this._updatePcbTraceRenderFromPcbTraces();return}}_updatePcbTraceRenderFromSimpleRouteJson(){const{db:e}=this.root,{traces:t}=this._asyncAutoroutingResult.output_simple_route_json;if(t)for(const n of t)e.pcb_trace.insert({subcircuit_id:this.subcircuit_id,route:n.route})}_updatePcbTraceRenderFromPcbTraces(){const{output_pcb_traces:e}=this._asyncAutoroutingResult;if(!e)return;const{db:t}=this.root;for(const n of e)if(n.type==="pcb_trace"){if(n.subcircuit_id=this.subcircuit_id,n.connection_name){const i=n.connection_name;n.source_trace_id=i}t.pcb_trace.insert(n)}for(const n of e)if(n.type!=="pcb_via"&&n.type==="pcb_trace")for(const i of n.route)i.route_type==="via"&&t.pcb_via.insert({pcb_trace_id:n.pcb_trace_id,x:i.x,y:i.y,hole_diameter:.3,outer_diameter:.6,layers:[i.from_layer,i.to_layer],from_layer:i.from_layer,to_layer:i.to_layer})}doInitialSchematicComponentRender(){var i;if((i=this.root)!=null&&i.schematicDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=e.schematic_group.insert({is_subcircuit:this.isSubcircuit,subcircuit_id:this.subcircuit_id,name:this._parsedProps.name,center:this._getGlobalSchematicPositionBeforeLayout(),width:0,height:0,schematic_component_ids:[],source_group_id:this.source_group_id});this.schematic_group_id=n.schematic_group_id;for(const o of this.children)o.schematic_component_id&&e.schematic_component.update(o.schematic_component_id,{schematic_group_id:n.schematic_group_id})}_getSchematicLayoutMode(){var t,n,i;const e=this._parsedProps;return(t=e.schLayout)!=null&&t.matchAdapt?"match-adapt":(n=e.schLayout)!=null&&n.flex?"flex":(i=e.schLayout)!=null&&i.grid?"grid":e.matchAdapt?"match-adapt":e.flex?"flex":e.grid?"grid":"none"}doInitialSchematicLayout(){this._parsedProps;const e=this._getSchematicLayoutMode();e==="match-adapt"&&this._doInitialSchematicLayoutMatchAdapt(),e==="grid"&&this._doInitialSchematicLayoutGrid()}_doInitialSchematicLayoutMatchAdapt(){lJt(this)}_doInitialSchematicLayoutGrid(){uJt(this)}_getPcbLayoutMode(){var t,n,i;const e=this._parsedProps;return(t=e.pcbLayout)!=null&&t.matchAdapt?"match-adapt":(n=e.pcbLayout)!=null&&n.flex?"flex":(i=e.pcbLayout)!=null&&i.grid?"grid":e.matchAdapt?"match-adapt":e.flex?"flex":e.grid?"grid":"none"}doInitialPcbLayout(){this._getPcbLayoutMode()==="grid"&&this._doInitialPcbLayoutGrid()}_doInitialPcbLayoutGrid(){AJt(this)}_determineSideFromPosition(e,t){if(!e.center||!t.center)return"left";const n=e.center.x-t.center.x,i=e.center.y-t.center.y;return Math.abs(n)>Math.abs(i)?n>0?"right":"left":i>0?"bottom":"top"}_calculateSchematicBounds(e){if(e.length===0)return{minX:0,maxX:0,minY:0,maxY:0};let t=1/0,n=-1/0,i=1/0,o=-1/0;for(const s of e)t=Math.min(t,s.centerX),n=Math.max(n,s.centerX),i=Math.min(i,s.centerY),o=Math.max(o,s.centerY);const a=2;return{minX:t-a,maxX:n+a,minY:i-a,maxY:o+a}}_getAutorouterConfig(){const e={serverUrl:"https://registry-api.tscircuit.com",serverMode:"job",serverCacheEnabled:!0},t=this._parsedProps.autorouter??this.getInheritedProperty("autorouter");return typeof t=="object"?{local:!(t.serverUrl||t.serverMode||t.serverCacheEnabled),...e,...t}:t==="auto-local"?{local:!0,groupMode:"subcircuit"}:t==="sequential-trace"?{local:!0,groupMode:"sequential-trace"}:t==="subcircuit"?{local:!0,groupMode:"subcircuit"}:t==="auto-cloud"?{local:!1,groupMode:"subcircuit",serverUrl:e.serverUrl,serverMode:e.serverMode,serverCacheEnabled:!0}:{local:!0,groupMode:"subcircuit"}}_shouldUseTraceByTraceRouting(){return this._getAutorouterConfig().groupMode==="sequential-trace"}doInitialPcbDesignRuleChecks(){var t;if((t=this.root)!=null&&t.pcbDisabled||this.getInheritedProperty("routingDisabled"))return;const{db:e}=this.root;if(this.isSubcircuit){const n=new Map;for(const i of this.children)if(!i.isSubcircuit&&i._parsedProps.name){const o=n.get(i._parsedProps.name)||[];o.push(i),n.set(i._parsedProps.name,o)}for(const[i,o]of n.entries())o.length>1&&e.pcb_trace_error.insert({error_type:"pcb_trace_error",message:`Multiple components found with name "${i}" in subcircuit "${this._parsedProps.name||"unnamed"}". Component names must be unique within a subcircuit.`,source_trace_id:"",pcb_trace_id:"",pcb_component_ids:o.map(a=>a.pcb_component_id).filter(Boolean),pcb_port_ids:[]})}}doInitialSchematicReplaceNetLabelsWithSymbols(){var t;if((t=this.root)!=null&&t.schematicDisabled)return;const{db:e}=this.root;for(const n of e.schematic_net_label.list()){const i=e.source_net.get(n.source_net_id),o=n.text||(i==null?void 0:i.name)||"";if(n.anchor_side==="top"&&/^gnd/i.test(o)){e.schematic_net_label.update(n.schematic_net_label_id,{symbol_name:"ground_down"});continue}n.anchor_side==="bottom"&&/^v/i.test(o)&&e.schematic_net_label.update(n.schematic_net_label_id,{symbol_name:"vcc_up"})}}},dJt=class extends bce{constructor(){super(...arguments);Ye(this,"pcb_board_id",null);Ye(this,"_drcChecksComplete",!1);Ye(this,"_connectedSchematicPortPairs",new Set)}get isSubcircuit(){return!0}get isGroup(){return!0}get config(){return{componentName:"Board",zodProps:bae}}get boardThickness(){const{_parsedProps:e}=this;return 1.4}get allLayers(){return["top","bottom","inner1","inner2"]}doInitialPcbBoardAutoSize(){var f;if((f=this.root)!=null&&f.pcbDisabled||!this.pcb_board_id)return;const{db:e}=this.root,{_parsedProps:t}=this;if(t.width&&t.height)return;let n=1/0,i=1/0,o=-1/0,a=-1/0;const s=e.pcb_component.list();let l=!1;for(const m of s){const{width:C,height:E,center:_}=m;C===0||E===0||(l=!0,n=Math.min(n,_.x-C/2),i=Math.min(i,_.y-E/2),o=Math.max(o,_.x+C/2),a=Math.max(a,_.y+E/2))}const c=2,u=l?o-n+c*2:0,A=l?a-i+c*2:0,d={x:l?(n+o)/2+(t.outlineOffsetX??0):t.outlineOffsetX??0,y:l?(i+a)/2+(t.outlineOffsetY??0):t.outlineOffsetY??0};e.pcb_board.update(this.pcb_board_id,{width:u,height:A,center:d})}doInitialPcbComponentRender(){var a,s;if((a=this.root)!=null&&a.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this;let n=t.width??0,i=t.height??0;if(t.outline){const l=t.outline.map(m=>m.x),c=t.outline.map(m=>m.y),u=Math.min(...l),A=Math.max(...l),d=Math.min(...c),f=Math.max(...c);n=A-u,i=f-d}const o=e.pcb_board.insert({center:{x:(t.pcbX??0)+(t.outlineOffsetX??0),y:(t.pcbY??0)+(t.outlineOffsetY??0)},thickness:this.boardThickness,num_layers:this.allLayers.length,width:n,height:i,outline:(s=t.outline)==null?void 0:s.map(l=>({x:l.x+(t.outlineOffsetX??0),y:l.y+(t.outlineOffsetY??0)})),material:t.material});this.pcb_board_id=o.pcb_board_id}removePcbComponentRender(){const{db:e}=this.root;this.pcb_board_id&&(e.pcb_board.delete(this.pcb_board_id),this.pcb_board_id=null)}_computePcbGlobalTransformBeforeLayout(){return Ny()}doInitialPcbDesignRuleChecks(){var e;(e=this.root)!=null&&e.pcbDisabled||this.getInheritedProperty("routingDisabled")||super.doInitialPcbDesignRuleChecks()}updatePcbDesignRuleChecks(){var n;if((n=this.root)!=null&&n.pcbDisabled||this.getInheritedProperty("routingDisabled"))return;const{db:e}=this.root;if(!this._areChildSubcircuitsRouted()||this._drcChecksComplete)return;this._drcChecksComplete=!0;const t=pke(e.toArray());for(const i of t)e.pcb_trace_error.insert(i)}_emitRenderLifecycleEvent(e,t){var n;super._emitRenderLifecycleEvent(e,t),t==="start"&&((n=this.root)==null||n.emit("board:renderPhaseStarted",{renderId:this._renderId,phase:e}))}},fJt=new Proxy({},{get:(r,e)=>e}),nM=fJt,hJt=class extends L1{get config(){return{componentName:"Capacitor",schematicSymbolName:this.props.polarized?"capacitor_polarized":this.props.symbolName??"capacitor",zodProps:TPe,sourceFtype:nM.simple_capacitor}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}_getSchematicSymbolDisplayValue(){const r=`${i_(this._parsedProps.capacitance)}F`;return this._parsedProps.schShowRatings&&this._parsedProps.maxVoltageRating?`${r}/${i_(this._parsedProps.maxVoltageRating)}V`:r}doInitialCreateNetsFromProps(){this._createNetsFromProps([this.props.decouplingFor,this.props.decouplingTo,...this._getNetsFromConnectionsProp()])}doInitialCreateTracesFromProps(){this.props.decouplingFor&&this.props.decouplingTo&&(this.add(new Yw({from:`${this.getSubcircuitSelector()} > port.1`,to:this.props.decouplingFor})),this.add(new Yw({from:`${this.getSubcircuitSelector()} > port.2`,to:this.props.decouplingTo}))),this._createTracesFromConnectionsProp()}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({ftype:"simple_capacitor",name:e.name,manufacturer_part_number:e.manufacturerPartNumber??e.mfn,supplier_part_numbers:e.supplierPartNumbers,capacitance:e.capacitance,max_voltage_rating:e.maxVoltageRating,max_decoupling_trace_length:e.maxDecouplingTraceLength,display_capacitance:this._getSchematicSymbolDisplayValue(),are_pins_interchangeable:!e.polarized});this.source_component_id=t.source_component_id}},I7e=class extends L1{constructor(){super(...arguments);Ye(this,"schematicBoxDimensions",null)}get config(){return{componentName:"Chip",zodProps:Sae,shouldRenderAsSchematicBox:!0}}doInitialSchematicComponentRender(){const{_parsedProps:e}=this;(e==null?void 0:e.noSchematicRepresentation)!==!0&&super.doInitialSchematicComponentRender()}doInitialSourceRender(){const{db:e}=this.root,{_parsedProps:t}=this,n=e.source_component.insert({ftype:"simple_chip",name:t.name,manufacturer_part_number:t.manufacturerPartNumber,supplier_part_numbers:t.supplierPartNumbers});this.source_component_id=n.source_component_id}doInitialPcbComponentRender(){var i;if((i=this.root)!=null&&i.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=e.pcb_component.insert({center:{x:t.pcbX??0,y:t.pcbY??0},width:2,height:3,layer:t.layer??"top",rotation:t.pcbRotation??0,source_component_id:this.source_component_id,subcircuit_id:this.getSubcircuit().subcircuit_id??void 0});this.pcb_component_id=n.pcb_component_id}doInitialCreateTracesFromProps(){const{_parsedProps:e}=this;if(e.externallyConnectedPins)for(const[t,n]of e.externallyConnectedPins)this.add(new Yw({from:`${this.getSubcircuitSelector()} > port.${t}`,to:`${this.getSubcircuitSelector()} > port.${n}`}));this._createTracesFromConnectionsProp()}},pJt=class extends L1{constructor(){super(...arguments);Ye(this,"pos",this.portMap.pin1);Ye(this,"anode",this.portMap.pin1);Ye(this,"neg",this.portMap.pin2);Ye(this,"cathode",this.portMap.pin2)}get config(){return{schematicSymbolName:this.props.symbolName??"diode",componentName:"Diode",zodProps:WPe,sourceFtype:"simple_diode"}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}doInitialSourceRender(){const{db:e}=this.root,{_parsedProps:t}=this,n=e.source_component.insert({ftype:"simple_diode",name:t.name,manufacturer_part_number:t.manufacturerPartNumber??t.mfn,supplier_part_numbers:t.supplierPartNumbers,are_pins_interchangeable:!1});this.source_component_id=n.source_component_id}},gJt=class extends L1{get config(){return{componentName:"fuse",schematicSymbolName:this.props.symbolName??"fuse",zodProps:wPe,sourceFtype:nM.simple_fuse}}_getSchematicSymbolDisplayValue(){const r=this._parsedProps.currentRating,e=this._parsedProps.voltageRating,t=typeof r=="string"?parseFloat(r):r,n=typeof e=="string"?parseFloat(e):e;return`${i_(t)}A / ${i_(n)}V`}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=typeof e.currentRating=="string"?parseFloat(e.currentRating):e.currentRating,n=typeof e.voltageRating=="string"?parseFloat(e.voltageRating):e.voltageRating,i=r.source_component.insert({name:e.name,ftype:nM.simple_fuse,current_rating_amps:t,voltage_rating_volts:n,display_current_rating:`${i_(t)}A`,display_voltage_rating:`${i_(n)}V`});this.source_component_id=i.source_component_id}},mJt=class extends L1{constructor(){super(...arguments);Ye(this,"schematicDimensions",null)}get config(){let e="";if(this.props.pinCount&&(e+=`solderjumper${this.props.pinCount||2}`),Array.isArray(this.props.internallyConnectedPins)&&this.props.internallyConnectedPins.length>0){const t=Array.from(new Set(this.props.internallyConnectedPins.flat())).sort().join("");e+=`_bridged${t}`}return{schematicSymbolName:e,componentName:"Jumper",zodProps:Qae,shouldRenderAsSchematicBox:!0}}_getSchematicPortArrangement(){const e=super._getSchematicPortArrangement();if(e)return e;const t=this._parsedProps.pinCount??(Array.isArray(this._parsedProps.pinLabels)?this._parsedProps.pinLabels.length:this._parsedProps.pinLabels?Object.keys(this._parsedProps.pinLabels).length:this.getPortsFromFootprint().length),n=this._parsedProps.schDirection??"right";return{leftSize:n==="left"?t:0,rightSize:n==="right"?t:0}}doInitialSourceRender(){const{db:e}=this.root,{_parsedProps:t}=this,n=e.source_component.insert({ftype:"simple_chip",name:t.name,manufacturer_part_number:t.manufacturerPartNumber,supplier_part_numbers:t.supplierPartNumbers,are_pins_interchangeable:!0});this.source_component_id=n.source_component_id}doInitialPcbComponentRender(){var i;if((i=this.root)!=null&&i.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=e.pcb_component.insert({center:{x:t.pcbX??0,y:t.pcbY??0},width:2,height:3,layer:t.layer??"top",rotation:t.pcbRotation??0,source_component_id:this.source_component_id,subcircuit_id:this.getSubcircuit().subcircuit_id??void 0});this.pcb_component_id=n.pcb_component_id}doInitialPcbTraceRender(){const{db:e}=this.root,t=e.pcb_port.list({pcb_component_id:this.pcb_component_id}),n={};for(let a=0;a<t.length;a++){const s=t[a],l=e.source_port.get(s.source_port_id);let c="";if(typeof(l==null?void 0:l.pin_number)=="number")c=l.pin_number.toString();else if(Array.isArray(l==null?void 0:l.port_hints)){let u=l.port_hints.find(A=>/^(pin)?\d+$/.test(A));u&&(/^pin\d+$/.test(u)?c=u.replace(/^pin/,""):c=u)}n[c]=s.pcb_port_id}const i=e.pcb_trace.list(),o=a=>{if(a&&typeof a=="string"&&a.startsWith("{PIN")){const s=a.replace("{PIN","").replace("}","");return n[s]||a}return a};for(const a of i)if(a.route)for(const s of a.route)s.route_type==="wire"&&(s.start_pcb_port_id=o(s.start_pcb_port_id),s.end_pcb_port_id=o(s.end_pcb_port_id))}},yJt=class extends L1{constructor(){super(...arguments);Ye(this,"pos",this.portMap.pin1);Ye(this,"anode",this.portMap.pin1);Ye(this,"neg",this.portMap.pin2);Ye(this,"cathode",this.portMap.pin2)}get config(){return{componentName:"Led",schematicSymbolName:this.props.symbolName??"led",zodProps:qPe,sourceFtype:"simple_led"}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}_getSchematicSymbolDisplayValue(){return this._parsedProps.schDisplayValue||this._parsedProps.color||void 0}doInitialSourceRender(){const{db:e}=this.root,{_parsedProps:t}=this,n=e.source_component.insert({ftype:"simple_led",name:t.name,wave_length:t.wavelength,color:t.color,symbol_display_value:this._getSchematicSymbolDisplayValue(),manufacturer_part_number:t.manufacturerPartNumber??t.mfn,supplier_part_numbers:t.supplierPartNumbers,are_pins_interchangeable:!1});this.source_component_id=n.source_component_id}},vJt=class extends L1{constructor(){super(...arguments);Ye(this,"pos",this.portMap.pin1);Ye(this,"positive",this.portMap.pin1);Ye(this,"neg",this.portMap.pin2);Ye(this,"negative",this.portMap.pin2)}get config(){return{schematicSymbolName:this.props.symbolName??"power_factor_meter_horz",componentName:"PowerSource",zodProps:n8e,sourceFtype:"simple_power_source"}}initPorts(){this.add(new Hw({name:"pin1",pinNumber:1,aliases:["positive","pos"]})),this.add(new Hw({name:"pin2",pinNumber:2,aliases:["negative","neg"]}))}doInitialSourceRender(){const{db:e}=this.root,{_parsedProps:t}=this,n=e.source_component.insert({ftype:"simple_power_source",name:t.name,voltage:t.voltage,supplier_part_numbers:t.supplierPartNumbers,are_pins_interchangeable:!1});this.source_component_id=n.source_component_id}},IJt=class extends L1{get config(){return{componentName:"Resistor",schematicSymbolName:this.props.symbolName??"boxresistor",zodProps:MPe,sourceFtype:"simple_resistor"}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}_getSchematicSymbolDisplayValue(){return`${i_(this._parsedProps.resistance)}Ω`}doInitialCreateNetsFromProps(){this._createNetsFromProps([this.props.pullupFor,this.props.pullupTo,this.props.pulldownFor,this.props.pulldownTo,...this._getNetsFromConnectionsProp()])}doInitialCreateTracesFromProps(){this.props.pullupFor&&this.props.pullupTo&&(this.add(new Yw({from:`${this.getSubcircuitSelector()} > port.1`,to:this.props.pullupFor})),this.add(new Yw({from:`${this.getSubcircuitSelector()} > port.2`,to:this.props.pullupTo}))),this.props.pulldownFor&&this.props.pulldownTo&&(this.add(new Yw({from:`${this.getSubcircuitSelector()} > port.1`,to:this.props.pulldownFor})),this.add(new Yw({from:`${this.getSubcircuitSelector()} > port.2`,to:this.props.pulldownTo}))),this._createTracesFromConnectionsProp()}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({ftype:"simple_resistor",name:e.name,manufacturer_part_number:e.manufacturerPartNumber??e.mfn,supplier_part_numbers:e.supplierPartNumbers,resistance:e.resistance,display_resistance:this._getSchematicSymbolDisplayValue(),are_pins_interchangeable:!0});this.source_component_id=t.source_component_id}},CJt=["leftedge","rightedge","topedge","bottomedge","center"],EJt=class extends aI{get config(){return{componentName:"Constraint",zodProps:PPe}}constructor(r){if(super(r),("xdist"in r||"ydist"in r)&&!("edgeToEdge"in r)&&!("centerToCenter"in r))throw new Error(`edgeToEdge, centerToCenter must be set for xDist or yDist for ${this}`);if("for"in r&&r.for.length<2)throw new Error(`"for" must have at least two selectors for ${this}`)}_getAllReferencedComponents(){const r=[],e=this.getPrimitiveContainer();function t(n){const i=n.split(" ").pop(),o=CJt.includes(i)?i:void 0,a=o?n.replace(` ${o}`,""):n,s=e.selectOne(a,{pcbPrimitive:!0});s&&r.push({selector:n,component:s,componentSelector:a,edge:o})}for(const n of["left","right","top","bottom"])n in this._parsedProps&&t(this._parsedProps[n]);if("for"in this._parsedProps)for(const n of this._parsedProps.for)t(n);return{componentsWithSelectors:r}}},_Jt=class extends aI{constructor(){super(...arguments);Ye(this,"fabrication_note_path_id",null)}get config(){return{componentName:"FabricationNotePath",zodProps:$Pe}}doInitialPcbPrimitiveRender(){var s,l;if((s=this.root)!=null&&s.pcbDisabled)return;const{db:e}=this.root,t=this.getSubcircuit(),{_parsedProps:n}=this,i=n.layer??"top";if(i!=="top"&&i!=="bottom")throw new Error(`Invalid layer "${i}" for SilkscreenPath. Must be "top" or "bottom".`);const o=this._computePcbGlobalTransformBeforeLayout(),a=e.pcb_fabrication_note_path.insert({pcb_component_id:(l=this.parent)==null?void 0:l.pcb_component_id,layer:i,color:n.color,route:n.route.map(c=>{const u=Xr(o,{x:c.x,y:c.y});return{...c,x:u.x,y:u.y}}),stroke_width:n.strokeWidth??.1,subcircuit_id:(t==null?void 0:t.subcircuit_id)??void 0});this.fabrication_note_path_id=a.pcb_fabrication_note_path_id}},xJt=class extends aI{get config(){return{componentName:"FabricationNoteText",zodProps:XPe}}doInitialPcbPrimitiveRender(){var i,o;if((i=this.root)!=null&&i.pcbDisabled)return;const{db:r}=this.root,{_parsedProps:e}=this,t=this.getPrimitiveContainer(),n=this.getSubcircuit();r.pcb_fabrication_note_text.insert({anchor_alignment:e.anchorAlignment,anchor_position:{x:e.pcbX??0,y:e.pcbY??0},font:e.font??"tscircuit2024",font_size:e.fontSize??1,layer:"top",color:e.color,text:e.text??"",pcb_component_id:t.pcb_component_id,subcircuit_id:(n==null?void 0:n.subcircuit_id)??void 0,pcb_group_id:((o=this.getGroup())==null?void 0:o.pcb_group_id)??void 0})}},BJt=class extends bce{constructor(r){super({...r,subcircuit:!0})}},bJt=class extends aI{constructor(){super(...arguments);Ye(this,"source_net_alias_id")}get config(){return{componentName:"NetAlias",zodProps:YPe}}doInitialSchematicComponentRender(){var o;if((o=this.root)!=null&&o.schematicDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n={x:t.schX??0,y:t.schY??0},i=e.schematic_net_label.insert({text:t.net,source_net_id:t.net,anchor_position:n,center:n,anchor_side:"bottom"});this.source_net_alias_id=i.source_net_id}},SJt=class extends aI{constructor(){super(...arguments);Ye(this,"pcb_silkscreen_circle_id",null);Ye(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SilkscreenCircle",zodProps:l8e}}doInitialPcbPrimitiveRender(){var s,l,c;if((s=this.root)!=null&&s.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,{maybeFlipLayer:n}=this._getPcbPrimitiveFlippedHelpers(),i=n(t.layer??"top");if(i!=="top"&&i!=="bottom")throw new Error(`Invalid layer "${i}" for SilkscreenCircle. Must be "top" or "bottom".`);this._computePcbGlobalTransformBeforeLayout();const o=this.getSubcircuit(),a=e.pcb_silkscreen_circle.insert({pcb_component_id:(l=this.parent)==null?void 0:l.pcb_component_id,layer:i,center:{x:t.pcbX??0,y:t.pcbY??0},radius:t.radius,subcircuit_id:(o==null?void 0:o.subcircuit_id)??void 0,pcb_group_id:((c=this.getGroup())==null?void 0:c.pcb_group_id)??void 0,stroke_width:t.strokeWidth??.1});this.pcb_silkscreen_circle_id=a.pcb_silkscreen_circle_id}getPcbSize(){const{_parsedProps:e}=this,t=e.radius*2;return{width:t,height:t}}},wJt=class extends aI{constructor(){super(...arguments);Ye(this,"pcb_silkscreen_rect_id",null);Ye(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SilkscreenRect",zodProps:s8e}}doInitialPcbPrimitiveRender(){var s,l,c;if((s=this.root)!=null&&s.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,{maybeFlipLayer:n}=this._getPcbPrimitiveFlippedHelpers(),i=n(t.layer??"top");if(i!=="top"&&i!=="bottom")throw new Error(`Invalid layer "${i}" for SilkscreenRect. Must be "top" or "bottom".`);const o=this.getSubcircuit(),a=e.pcb_silkscreen_rect.insert({pcb_component_id:(l=this.parent)==null?void 0:l.pcb_component_id,layer:i,center:{x:t.pcbX??0,y:t.pcbY??0},width:t.width,height:t.height,subcircuit_id:(o==null?void 0:o.subcircuit_id)??void 0,pcb_group_id:((c=this==null?void 0:this.getGroup())==null?void 0:c.pcb_group_id)??void 0,stroke_width:t.strokeWidth??.1});this.pcb_silkscreen_rect_id=a.pcb_silkscreen_rect_id}getPcbSize(){const{_parsedProps:e}=this;return{width:e.width,height:e.height}}},QJt=class extends aI{constructor(){super(...arguments);Ye(this,"pcb_silkscreen_line_id",null);Ye(this,"isPcbPrimitive",!0)}get config(){return{componentName:"SilkscreenLine",zodProps:a8e}}doInitialPcbPrimitiveRender(){var s,l,c;if((s=this.root)!=null&&s.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,{maybeFlipLayer:n}=this._getPcbPrimitiveFlippedHelpers(),i=n(t.layer??"top");if(i!=="top"&&i!=="bottom")throw new Error(`Invalid layer "${i}" for SilkscreenLine. Must be "top" or "bottom".`);const o=this.getSubcircuit(),a=e.pcb_silkscreen_line.insert({pcb_component_id:(l=this.parent)==null?void 0:l.pcb_component_id,layer:i,x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2,stroke_width:t.strokeWidth??.1,subcircuit_id:(o==null?void 0:o.subcircuit_id)??void 0,pcb_group_id:((c=o==null?void 0:o.getGroup())==null?void 0:c.pcb_group_id)??void 0});this.pcb_silkscreen_line_id=a.pcb_silkscreen_line_id}getPcbSize(){const{_parsedProps:e}=this,t=Math.abs(e.x2-e.x1),n=Math.abs(e.y2-e.y1);return{width:t,height:n}}},MJt=class extends aI{constructor(){super(...arguments);Ye(this,"pcb_via_id",null);Ye(this,"matchedPort",null);Ye(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Via",zodProps:e8e}}getAvailablePcbLayers(){return["top","inner1","inner2","bottom"]}getPcbSize(){const{_parsedProps:e}=this;return{width:e.outerDiameter,height:e.outerDiameter}}_getPcbCircuitJsonBounds(){const{db:e}=this.root,t=e.pcb_via.get(this.pcb_via_id),n=this.getPcbSize();return{center:{x:t.x,y:t.y},bounds:{left:t.x-n.width/2,top:t.y-n.height/2,right:t.x+n.width/2,bottom:t.y+n.height/2},width:n.width,height:n.height}}_setPositionFromLayout(e){const{db:t}=this.root;t.pcb_via.update(this.pcb_via_id,{x:e.x,y:e.y})}doInitialPcbPrimitiveRender(){var a,s;if((a=this.root)!=null&&a.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this._getGlobalPcbPositionBeforeLayout(),i=this.getSubcircuit(),o=e.pcb_via.insert({x:n.x,y:n.y,hole_diameter:t.holeDiameter,outer_diameter:t.outerDiameter,layers:["bottom","top"],from_layer:t.fromLayer||"bottom",to_layer:t.toLayer||"top",subcircuit_id:(i==null?void 0:i.subcircuit_id)??void 0,pcb_group_id:((s=this.getGroup())==null?void 0:s.pcb_group_id)??void 0});this.pcb_via_id=o.pcb_via_id}},DJt=class extends aI{constructor(){super(...arguments);Ye(this,"pcb_cutout_id",null);Ye(this,"isPcbPrimitive",!0)}get config(){return{componentName:"Cutout",zodProps:kPe}}doInitialPcbPrimitiveRender(){var s,l;if((s=this.root)!=null&&s.pcbDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=this.getSubcircuit(),i=((l=this.getGroup())==null?void 0:l.pcb_group_id)??void 0,o=this._getGlobalPcbPositionBeforeLayout();let a;if(t.shape==="rect"){const c={shape:"rect",center:o,width:t.width,height:t.height,subcircuit_id:(n==null?void 0:n.subcircuit_id)??void 0,pcb_group_id:i};a=e.pcb_cutout.insert(c)}else if(t.shape==="circle"){const c={shape:"circle",center:o,radius:t.radius,subcircuit_id:(n==null?void 0:n.subcircuit_id)??void 0,pcb_group_id:i};a=e.pcb_cutout.insert(c)}else if(t.shape==="polygon"){const c=this._computePcbGlobalTransformBeforeLayout(),A={shape:"polygon",points:t.points.map(d=>Xr(c,d)),subcircuit_id:(n==null?void 0:n.subcircuit_id)??void 0,pcb_group_id:i};a=e.pcb_cutout.insert(A)}a&&(this.pcb_cutout_id=a.pcb_cutout_id)}getPcbSize(){const{_parsedProps:e}=this;if(e.shape==="rect")return{width:e.width,height:e.height};if(e.shape==="circle")return{width:e.radius*2,height:e.radius*2};if(e.shape==="polygon"){if(e.points.length===0)return{width:0,height:0};let t=1/0,n=-1/0,i=1/0,o=-1/0;for(const a of e.points)t=Math.min(t,a.x),n=Math.max(n,a.x),i=Math.min(i,a.y),o=Math.max(o,a.y);return{width:n-t,height:o-i}}return{width:0,height:0}}_getPcbCircuitJsonBounds(){if(!this.pcb_cutout_id)return super._getPcbCircuitJsonBounds();const{db:e}=this.root,t=e.pcb_cutout.get(this.pcb_cutout_id);if(!t)return super._getPcbCircuitJsonBounds();if(t.shape==="rect")return{center:t.center,bounds:{left:t.center.x-t.width/2,top:t.center.y+t.height/2,right:t.center.x+t.width/2,bottom:t.center.y-t.height/2},width:t.width,height:t.height};if(t.shape==="circle")return{center:t.center,bounds:{left:t.center.x-t.radius,top:t.center.y+t.radius,right:t.center.x+t.radius,bottom:t.center.y-t.radius},width:t.radius*2,height:t.radius*2};if(t.shape==="polygon"){if(t.points.length===0)return super._getPcbCircuitJsonBounds();let n=1/0,i=-1/0,o=1/0,a=-1/0;for(const s of t.points)n=Math.min(n,s.x),i=Math.max(i,s.x),o=Math.min(o,s.y),a=Math.max(a,s.y);return{center:{x:(n+i)/2,y:(o+a)/2},bounds:{left:n,top:a,right:i,bottom:o},width:i-n,height:a-o}}return super._getPcbCircuitJsonBounds()}_setPositionFromLayout(e){if(!this.pcb_cutout_id)return;const{db:t}=this.root,n=t.pcb_cutout.get(this.pcb_cutout_id);if(n){if(n.shape==="rect"||n.shape==="circle")t.pcb_cutout.update(this.pcb_cutout_id,{...n,center:e});else if(n.shape==="polygon"){const i=this._getPcbCircuitJsonBounds().center,o=e.x-i.x,a=e.y-i.y,s=n.points.map(l=>({x:l.x+o,y:l.y+a}));t.pcb_cutout.update(this.pcb_cutout_id,{...n,points:s})}}}},RJt=class extends L1{get config(){return{componentName:"Battery",schematicSymbolName:this.props.symbolName??"battery",zodProps:zPe,sourceFtype:"simple_power_source"}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({name:e.name,ftype:"simple_power_source",capacity:e.capacity,supplier_part_numbers:e.supplierPartNumbers,are_pins_interchangeable:!1});this.source_component_id=t.source_component_id}},NJt=class extends L1{get config(){return{componentName:"PinHeader",zodProps:HPe,shouldRenderAsSchematicBox:!0}}_getImpliedFootprintString(){var i;const r=this._parsedProps.pinCount??((i=this._parsedProps.pinLabels)==null?void 0:i.length)??0,e=this._parsedProps.holeDiameter,t=this._parsedProps.platedDiameter,n=this._parsedProps.pitch;return r>0&&n?!e&&!t?`pinrow${r}_p${n}`:`pinrow${r}_p${n}_id${e}_od${t}`:null}initPorts(){var e,t;const r=this._parsedProps.pinCount??((e=this._parsedProps.pinLabels)==null?void 0:e.length)??1;for(let n=1;n<=r;n++)this.add(new Hw({name:`pin${n}`,pinNumber:n,aliases:[(t=this._parsedProps.pinLabels)==null?void 0:t[n-1]].filter(Boolean)}))}_getSchematicPortArrangement(){var n,i,o,a;const r=this._parsedProps.pinCount??1,e=this._parsedProps.facingDirection??"right",t=this._parsedProps.schPinArrangement;return e==="left"?{leftSide:{direction:((n=t==null?void 0:t.leftSide)==null?void 0:n.direction)??"top-to-bottom",pins:((i=t==null?void 0:t.leftSide)==null?void 0:i.pins)??Array.from({length:r},(s,l)=>`pin${l+1}`)}}:{rightSide:{direction:((o=t==null?void 0:t.rightSide)==null?void 0:o.direction)??"top-to-bottom",pins:((a=t==null?void 0:t.rightSide)==null?void 0:a.pins)??Array.from({length:r},(s,l)=>`pin${l+1}`)}}}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({ftype:"simple_pin_header",name:e.name,supplier_part_numbers:e.supplierPartNumbers,pin_count:e.pinCount,gender:e.gender,are_pins_interchangeable:!0});this.source_component_id=t.source_component_id}};function TJt(r){switch(r){case"two_ground_pins":return"crystal_4pin";case"ground_pin":return"resonator";case"no_ground":return"crystal";default:return"crystal"}}var PJt=class extends L1{get config(){return{componentName:"Resonator",schematicSymbolName:this.props.symbolName??TJt(this.props.pinVariant),zodProps:NPe,shouldRenderAsSchematicBox:!1}}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=e.pinVariant||"no_ground",n=r.source_component.insert({ftype:"simple_resonator",name:e.name,frequency:e.frequency,load_capacitance:e.loadCapacitance,supplier_part_numbers:e.supplierPartNumbers,pin_variant:t,are_pins_interchangeable:t==="no_ground"||t==="ground_pin"});this.source_component_id=n.source_component_id}},kJt=class extends L1{get config(){return{componentName:"Inductor",schematicSymbolName:this.props.symbolName??"inductor",zodProps:JPe,sourceFtype:nM.simple_inductor}}initPorts(){super.initPorts({additionalAliases:{pin1:["anode","pos","left"],pin2:["cathode","neg","right"]}})}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({name:e.name,ftype:nM.simple_inductor,inductance:e.inductance,supplier_part_numbers:e.supplierPartNumbers,are_pins_interchangeable:!0});this.source_component_id=t.source_component_id}};function UJt(r){switch(r){case"three_pin":return"potentiometer3";case"two_pin":return"potentiometer2";default:return"potentiometer2"}}var FJt=class extends L1{get config(){return{componentName:"Potentiometer",schematicSymbolName:this.props.symbolName??UJt(this.props.pinVariant),zodProps:DPe,shouldRenderAsSchematicBox:!1}}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=e.pinVariant||"two_pin",n=r.source_component.insert({ftype:"simple_potentiometer",name:e.name,max_resistance:e.maxResistance,pin_variant:t,are_pins_interchangeable:t==="two_pin"});this.source_component_id=n.source_component_id}},LJt=class extends L1{get config(){return{componentName:"PushButton",schematicSymbolName:this.props.symbolName??"push_button_normally_open_momentary",zodProps:VPe,sourceFtype:nM.simple_push_button}}get defaultInternallyConnectedPinNames(){return[["pin1","pin4"],["pin2","pin3"]]}initPorts(){super.initPorts({pinCount:4,additionalAliases:{pin1:["side1"],pin3:["side2"]}})}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({name:e.name,ftype:nM.simple_push_button,supplier_part_numbers:e.supplierPartNumbers,are_pins_interchangeable:!0});this.source_component_id=t.source_component_id}},GJt=class extends L1{get config(){return{schematicSymbolName:this.props.symbolName??(this.props.pinVariant==="four_pin"?"crystal_4pin":"crystal"),componentName:"Crystal",zodProps:RPe,sourceFtype:"simple_crystal"}}initPorts(){const r=this.props.pinVariant==="four_pin"?{pin1:["left1","1"],pin2:["top1","2","gnd1"],pin3:["right1","3"],pin4:["bottom1","4","gnd2"]}:{pin1:["pos","left"],pin2:["neg","right"]};super.initPorts({additionalAliases:r})}_getSchematicSymbolDisplayValue(){return`${i_(this._parsedProps.frequency)}Hz`}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({name:e.name,ftype:"simple_crystal",frequency:e.frequency,load_capacitance:e.loadCapacitance,pin_variant:e.pinVariant||"two_pin",are_pins_interchangeable:(e.pinVariant||"two_pin")==="two_pin"});this.source_component_id=t.source_component_id}},OJt=class extends L1{constructor(){super(...arguments);Ye(this,"emitter",this.portMap.pin1);Ye(this,"collector",this.portMap.pin2);Ye(this,"base",this.portMap.pin3)}get config(){return{componentName:"Transistor",schematicSymbolName:this.props.type==="npn"?"npn_bipolar_transistor":"pnp_bipolar_transistor",zodProps:KPe,sourceFtype:"simple_transistor",shouldRenderAsSchematicBox:!1}}initPorts(){const e=this.props.type==="npn"?{pin1:["emitter","e"],pin2:["collector","c"],pin3:["base","b"]}:{pin1:["collector","c"],pin2:["emitter","e"],pin3:["base","b"]};super.initPorts({pinCount:3,additionalAliases:e})}doInitialSourceRender(){const{db:e}=this.root,{_parsedProps:t}=this,n=e.source_component.insert({ftype:"simple_transistor",name:t.name,transistor_type:t.type});this.source_component_id=n.source_component_id}},zJt=class extends L1{get config(){const r=this.props.mosfetMode==="depletion"?"d":"e";return{componentName:"Mosfet",schematicSymbolName:`${this.props.channelType}_channel_${r}_mosfet_transistor`,zodProps:jPe,shouldRenderAsSchematicBox:!1}}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({ftype:"simple_mosfet",name:e.name,mosfet_mode:e.mosfetMode,channel_type:e.channelType});this.source_component_id=t.source_component_id}},HJt=class extends L1{_getSwitchType(){const{spst:r,spdt:e,dpst:t,dpdt:n,type:i}=this._parsedProps??{};return n?"dpdt":r?"spst":e?"spdt":t?"dpst":i??"spst"}get config(){const r=this._getSwitchType(),{isNormallyClosed:e}=this._parsedProps??{};return{componentName:"Switch",schematicSymbolName:{spst:e?"spst_normally_closed_switch":"spst_switch",spdt:e?"spdt_normally_closed_switch":"spdt_switch",dpst:e?"dpst_normally_closed_switch":"dpst_switch",dpdt:e?"dpdt_normally_closed_switch":"dpdt_switch"}[r]??"spst_switch",zodProps:ZPe,shouldRenderAsSchematicBox:!1}}doInitialSourceRender(){const{db:r}=this.root,{_parsedProps:e}=this,t=r.source_component.insert({ftype:"simple_switch",name:e.name,switch_type:e.type,is_normally_closed:e.isNormallyClosed??!1,are_pins_interchangeable:this._getSwitchType()==="spst"});this.source_component_id=t.source_component_id}},YJt=class extends aI{constructor(){super(...arguments);Ye(this,"isSchematicPrimitive",!0)}get config(){return{componentName:"SchematicText",zodProps:r8e}}doInitialSchematicPrimitiveRender(){var n;if((n=this.root)!=null&&n.schematicDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this;e.schematic_text.insert({anchor:t.anchor??"center",text:t.text,font_size:t.fontSize,color:t.color||"#000000",position:{x:t.schX,y:t.schY},rotation:t.schRotation??0})}},VJt=class extends aI{constructor(){super(...arguments);Ye(this,"isSchematicPrimitive",!0)}get config(){return{componentName:"SchematicBox",zodProps:c6,shouldRenderAsSchematicBox:!0}}doInitialSchematicPrimitiveRender(){var E;if((E=this.root)!=null&&E.schematicDisabled)return;const{db:e}=this.root,{_parsedProps:t}=this,n=c6.safeParse(t);if(!n.success)throw console.error("Validation failed:",n.error.format()),n.error;const i=.6,o=typeof t.padding=="number"?t.padding:0,a=typeof t.paddingTop=="number"?t.paddingTop:o,s=typeof t.paddingBottom=="number"?t.paddingBottom:o,l=typeof t.paddingLeft=="number"?t.paddingLeft:o,c=typeof t.paddingRight=="number"?t.paddingRight:o,u=t.overlay&&t.overlay.length>0,A=typeof t.width=="number"&&typeof t.height=="number";let d,f,m,C;if(u){const x=t.overlay.map(Fe=>({selector:Fe,port:this.getSubcircuit().selectOne(Fe,{type:"port"})})).filter(({port:Fe})=>Fe!=null).map(({port:Fe})=>({position:Fe._getGlobalSchematicPositionAfterLayout()}));if(x.length===0)return;const w=x.map(Fe=>Fe.position.x),P=x.map(Fe=>Fe.position.y),L=Math.min(...w),O=Math.max(...w),H=Math.min(...P),K=Math.max(...P),q=O-L,Y=K-H,se=q===0?i:0,ie=Y===0?i:0,de=l+se/2,Ce=c+se/2,xe=a+ie/2,fe=s+ie/2,Ie=L-de,ve=O+Ce,Qe=H-fe,De=K+xe;d=ve-Ie,f=De-Qe,m=Ie+(t.schX??0),C=Qe+(t.schY??0)}else if(A){d=t.width,f=t.height;const _=typeof t.schX=="number"?t.schX:0,x=typeof t.schY=="number"?t.schY:0;m=_-d/2,C=x-f/2}else return;e.schematic_box.insert({height:f,width:d,x:m,y:C,is_dashed:t.strokeStyle==="dashed",schematic_component_id:""})}};new Proxy({},{get:(r,e)=>{const t=(...n)=>(n[0],new Proxy({},{get:(i,o)=>`.${e} > .${o}`}));return new Proxy(t,{get:(n,i)=>e==="net"?`net.${i}`:e==="subcircuit"?new Proxy({},{get:(o,a)=>new Proxy({},{get:(s,l)=>`subcircuit.${i} > .${a} > .${l}`})}):`.${e} > .${i}`,apply:(n,i,o)=>new Proxy({},{get:(a,s)=>{const l=`.${e} > .${s}`;return e.startsWith("U")?l:new Proxy(new String(l),{get:(c,u)=>typeof u=="symbol"||u==="toString"?()=>l:`.${e} > .${s} > .${u}`})}})})}}),e7e(X6e),e7e({Bug:I7e});const $T=r=>typeof r=="number"&&!isNaN(r),rM=r=>typeof r=="string",FB=r=>typeof r=="function",q7=r=>rM(r)||FB(r)?r:null,Sce=r=>pt.isValidElement(r)||rM(r)||FB(r)||$T(r);function KJt(r,e,t){t===void 0&&(t=300);const{scrollHeight:n,style:i}=r;requestAnimationFrame(()=>{i.minHeight="initial",i.height=n+"px",i.transition=`all ${t}ms`,requestAnimationFrame(()=>{i.height="0",i.padding="0",i.margin="0",setTimeout(e,t)})})}function Z7(r){let{enter:e,exit:t,appendPosition:n=!1,collapse:i=!0,collapseDuration:o=300}=r;return function(a){let{children:s,position:l,preventExitTransition:c,done:u,nodeRef:A,isIn:d,playToast:f}=a;const m=n?`${e}--${l}`:e,C=n?`${t}--${l}`:t,E=pt.useRef(0);return pt.useLayoutEffect(()=>{const _=A.current,x=m.split(" "),w=P=>{P.target===A.current&&(f(),_.removeEventListener("animationend",w),_.removeEventListener("animationcancel",w),E.current===0&&P.type!=="animationcancel"&&_.classList.remove(...x))};_.classList.add(...x),_.addEventListener("animationend",w),_.addEventListener("animationcancel",w)},[]),pt.useEffect(()=>{const _=A.current,x=()=>{_.removeEventListener("animationend",x),i?KJt(_,u,o):u()};d||(c?x():(E.current=1,_.className+=` ${C}`,_.addEventListener("animationend",x)))},[d]),Jh.createElement(Jh.Fragment,null,s)}}function C7e(r,e){return r!=null?{content:r.content,containerId:r.props.containerId,id:r.props.toastId,theme:r.props.theme,type:r.props.type,data:r.props.data||{},isLoading:r.props.isLoading,icon:r.props.icon,status:e}:{}}const Dx=new Map;let e4=[];const wce=new Set,jJt=r=>wce.forEach(e=>e(r)),E7e=()=>Dx.size>0;function _7e(r,e){var t;if(e)return!((t=Dx.get(e))==null||!t.isToastActive(r));let n=!1;return Dx.forEach(i=>{i.isToastActive(r)&&(n=!0)}),n}function x7e(r,e){Sce(r)&&(E7e()||e4.push({content:r,options:e}),Dx.forEach(t=>{t.buildToast(r,e)}))}function B7e(r,e){Dx.forEach(t=>{e!=null&&e!=null&&e.containerId?(e==null?void 0:e.containerId)===t.id&&t.toggle(r,e==null?void 0:e.id):t.toggle(r,e==null?void 0:e.id)})}function JJt(r){const{subscribe:e,getSnapshot:t,setProps:n}=pt.useRef(function(o){const a=o.containerId||1;return{subscribe(s){const l=function(u,A,d){let f=1,m=0,C=[],E=[],_=[],x=A;const w=new Map,P=new Set,L=()=>{_=Array.from(w.values()),P.forEach(K=>K())},O=K=>{E=K==null?[]:E.filter(q=>q!==K),L()},H=K=>{const{toastId:q,onOpen:Y,updateId:se,children:ie}=K.props,de=se==null;K.staleId&&w.delete(K.staleId),w.set(q,K),E=[...E,K.props.toastId].filter(Ce=>Ce!==K.staleId),L(),d(C7e(K,de?"added":"updated")),de&&FB(Y)&&Y(pt.isValidElement(ie)&&ie.props)};return{id:u,props:x,observe:K=>(P.add(K),()=>P.delete(K)),toggle:(K,q)=>{w.forEach(Y=>{q!=null&&q!==Y.props.toastId||FB(Y.toggle)&&Y.toggle(K)})},removeToast:O,toasts:w,clearQueue:()=>{m-=C.length,C=[]},buildToast:(K,q)=>{if((Ne=>{let{containerId:rt,toastId:et,updateId:ft}=Ne;const _t=rt?rt!==u:u!==1,Ft=w.has(et)&&ft==null;return _t||Ft})(q))return;const{toastId:Y,updateId:se,data:ie,staleId:de,delay:Ce}=q,xe=()=>{O(Y)},fe=se==null;fe&&m++;const Ie={...x,style:x.toastStyle,key:f++,...Object.fromEntries(Object.entries(q).filter(Ne=>{let[rt,et]=Ne;return et!=null})),toastId:Y,updateId:se,data:ie,closeToast:xe,isIn:!1,className:q7(q.className||x.toastClassName),bodyClassName:q7(q.bodyClassName||x.bodyClassName),progressClassName:q7(q.progressClassName||x.progressClassName),autoClose:!q.isLoading&&(ve=q.autoClose,Qe=x.autoClose,ve===!1||$T(ve)&&ve>0?ve:Qe),deleteToast(){const Ne=w.get(Y),{onClose:rt,children:et}=Ne.props;FB(rt)&&rt(pt.isValidElement(et)&&et.props),d(C7e(Ne,"removed")),w.delete(Y),m--,m<0&&(m=0),C.length>0?H(C.shift()):L()}};var ve,Qe;Ie.closeButton=x.closeButton,q.closeButton===!1||Sce(q.closeButton)?Ie.closeButton=q.closeButton:q.closeButton===!0&&(Ie.closeButton=!Sce(x.closeButton)||x.closeButton);let De=K;pt.isValidElement(K)&&!rM(K.type)?De=pt.cloneElement(K,{closeToast:xe,toastProps:Ie,data:ie}):FB(K)&&(De=K({closeToast:xe,toastProps:Ie,data:ie}));const Fe={content:De,props:Ie,staleId:de};x.limit&&x.limit>0&&m>x.limit&&fe?C.push(Fe):$T(Ce)?setTimeout(()=>{H(Fe)},Ce):H(Fe)},setProps(K){x=K},setToggle:(K,q)=>{w.get(K).toggle=q},isToastActive:K=>E.some(q=>q===K),getSnapshot:()=>_}}(a,o,jJt);Dx.set(a,l);const c=l.observe(s);return e4.forEach(u=>x7e(u.content,u.options)),e4=[],()=>{c(),Dx.delete(a)}},setProps(s){var l;(l=Dx.get(a))==null||l.setProps(s)},getSnapshot(){var s;return(s=Dx.get(a))==null?void 0:s.getSnapshot()}}}(r)).current;n(r);const i=pt.useSyncExternalStore(e,t,t);return{getToastToRender:function(o){if(!i)return[];const a=new Map;return r.newestOnTop&&i.reverse(),i.forEach(s=>{const{position:l}=s.props;a.has(l)||a.set(l,[]),a.get(l).push(s)}),Array.from(a,s=>o(s[0],s[1]))},isToastActive:_7e,count:i==null?void 0:i.length}}function WJt(r){const[e,t]=pt.useState(!1),[n,i]=pt.useState(!1),o=pt.useRef(null),a=pt.useRef({start:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,didMove:!1}).current,{autoClose:s,pauseOnHover:l,closeToast:c,onClick:u,closeOnClick:A}=r;var d,f;function m(){t(!0)}function C(){t(!1)}function E(w){const P=o.current;a.canDrag&&P&&(a.didMove=!0,e&&C(),a.delta=r.draggableDirection==="x"?w.clientX-a.start:w.clientY-a.start,a.start!==w.clientX&&(a.canCloseOnClick=!1),P.style.transform=`translate3d(${r.draggableDirection==="x"?`${a.delta}px, var(--y)`:`0, calc(${a.delta}px + var(--y))`},0)`,P.style.opacity=""+(1-Math.abs(a.delta/a.removalDistance)))}function _(){document.removeEventListener("pointermove",E),document.removeEventListener("pointerup",_);const w=o.current;if(a.canDrag&&a.didMove&&w){if(a.canDrag=!1,Math.abs(a.delta)>a.removalDistance)return i(!0),r.closeToast(),void r.collapseAll();w.style.transition="transform 0.2s, opacity 0.2s",w.style.removeProperty("transform"),w.style.removeProperty("opacity")}}(f=Dx.get((d={id:r.toastId,containerId:r.containerId,fn:t}).containerId||1))==null||f.setToggle(d.id,d.fn),pt.useEffect(()=>{if(r.pauseOnFocusLoss)return document.hasFocus()||C(),window.addEventListener("focus",m),window.addEventListener("blur",C),()=>{window.removeEventListener("focus",m),window.removeEventListener("blur",C)}},[r.pauseOnFocusLoss]);const x={onPointerDown:function(w){if(r.draggable===!0||r.draggable===w.pointerType){a.didMove=!1,document.addEventListener("pointermove",E),document.addEventListener("pointerup",_);const P=o.current;a.canCloseOnClick=!0,a.canDrag=!0,P.style.transition="none",r.draggableDirection==="x"?(a.start=w.clientX,a.removalDistance=P.offsetWidth*(r.draggablePercent/100)):(a.start=w.clientY,a.removalDistance=P.offsetHeight*(r.draggablePercent===80?1.5*r.draggablePercent:r.draggablePercent)/100)}},onPointerUp:function(w){const{top:P,bottom:L,left:O,right:H}=o.current.getBoundingClientRect();w.nativeEvent.type!=="touchend"&&r.pauseOnHover&&w.clientX>=O&&w.clientX<=H&&w.clientY>=P&&w.clientY<=L?C():m()}};return s&&l&&(x.onMouseEnter=C,r.stacked||(x.onMouseLeave=m)),A&&(x.onClick=w=>{u&&u(w),a.canCloseOnClick&&c()}),{playToast:m,pauseToast:C,isRunning:e,preventExitTransition:n,toastRef:o,eventHandlers:x}}function qJt(r){let{delay:e,isRunning:t,closeToast:n,type:i="default",hide:o,className:a,style:s,controlledProgress:l,progress:c,rtl:u,isIn:A,theme:d}=r;const f=o||l&&c===0,m={...s,animationDuration:`${e}ms`,animationPlayState:t?"running":"paused"};l&&(m.transform=`scaleX(${c})`);const C=qb("Toastify__progress-bar",l?"Toastify__progress-bar--controlled":"Toastify__progress-bar--animated",`Toastify__progress-bar-theme--${d}`,`Toastify__progress-bar--${i}`,{"Toastify__progress-bar--rtl":u}),E=FB(a)?a({rtl:u,type:i,defaultClassName:C}):qb(C,a),_={[l&&c>=1?"onTransitionEnd":"onAnimationEnd"]:l&&c<1?null:()=>{A&&n()}};return Jh.createElement("div",{className:"Toastify__progress-bar--wrp","data-hidden":f},Jh.createElement("div",{className:`Toastify__progress-bar--bg Toastify__progress-bar-theme--${d} Toastify__progress-bar--${i}`}),Jh.createElement("div",{role:"progressbar","aria-hidden":f?"true":"false","aria-label":"notification timer",className:E,style:m,..._}))}let ZJt=1;const b7e=()=>""+ZJt++;function XJt(r){return r&&(rM(r.toastId)||$T(r.toastId))?r.toastId:b7e()}function t4(r,e){return x7e(r,e),e.toastId}function X7(r,e){return{...e,type:e&&e.type||r,toastId:XJt(e)}}function $7(r){return(e,t)=>t4(e,X7(r,t))}function hv(r,e){return t4(r,X7("default",e))}hv.loading=(r,e)=>t4(r,X7("default",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...e})),hv.promise=function(r,e,t){let n,{pending:i,error:o,success:a}=e;i&&(n=rM(i)?hv.loading(i,t):hv.loading(i.render,{...t,...i}));const s={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},l=(u,A,d)=>{if(A==null)return void hv.dismiss(n);const f={type:u,...s,...t,data:d},m=rM(A)?{render:A}:A;return n?hv.update(n,{...f,...m}):hv(m.render,{...f,...m}),d},c=FB(r)?r():r;return c.then(u=>l("success",a,u)).catch(u=>l("error",o,u)),c},hv.success=$7("success"),hv.info=$7("info"),hv.error=$7("error"),hv.warning=$7("warning"),hv.warn=hv.warning,hv.dark=(r,e)=>t4(r,X7("default",{theme:"dark",...e})),hv.dismiss=function(r){(function(e){var t;if(E7e()){if(e==null||rM(t=e)||$T(t))Dx.forEach(n=>{n.removeToast(e)});else if(e&&("containerId"in e||"id"in e)){const n=Dx.get(e.containerId);n?n.removeToast(e.id):Dx.forEach(i=>{i.removeToast(e.id)})}}else e4=e4.filter(n=>e!=null&&n.options.toastId!==e)})(r)},hv.clearWaitingQueue=function(r){r===void 0&&(r={}),Dx.forEach(e=>{!e.props.limit||r.containerId&&e.id!==r.containerId||e.clearQueue()})},hv.isActive=_7e,hv.update=function(r,e){e===void 0&&(e={});const t=((n,i)=>{var o;let{containerId:a}=i;return(o=Dx.get(a||1))==null?void 0:o.toasts.get(n)})(r,e);if(t){const{props:n,content:i}=t,o={delay:100,...n,...e,toastId:e.toastId||r,updateId:b7e()};o.toastId!==r&&(o.staleId=r);const a=o.render||i;delete o.render,t4(a,o)}},hv.done=r=>{hv.update(r,{progress:1})},hv.onChange=function(r){return wce.add(r),()=>{wce.delete(r)}},hv.play=r=>B7e(!0,r),hv.pause=r=>B7e(!1,r);const $Jt=typeof window<"u"?pt.useLayoutEffect:pt.useEffect,eO=r=>{let{theme:e,type:t,isLoading:n,...i}=r;return Jh.createElement("svg",{viewBox:"0 0 24 24",width:"100%",height:"100%",fill:e==="colored"?"currentColor":`var(--toastify-icon-color-${t})`,...i})},Qce={info:function(r){return Jh.createElement(eO,{...r},Jh.createElement("path",{d:"M12 0a12 12 0 1012 12A12.013 12.013 0 0012 0zm.25 5a1.5 1.5 0 11-1.5 1.5 1.5 1.5 0 011.5-1.5zm2.25 13.5h-4a1 1 0 010-2h.75a.25.25 0 00.25-.25v-4.5a.25.25 0 00-.25-.25h-.75a1 1 0 010-2h1a2 2 0 012 2v4.75a.25.25 0 00.25.25h.75a1 1 0 110 2z"}))},warning:function(r){return Jh.createElement(eO,{...r},Jh.createElement("path",{d:"M23.32 17.191L15.438 2.184C14.728.833 13.416 0 11.996 0c-1.42 0-2.733.833-3.443 2.184L.533 17.448a4.744 4.744 0 000 4.368C1.243 23.167 2.555 24 3.975 24h16.05C22.22 24 24 22.044 24 19.632c0-.904-.251-1.746-.68-2.44zm-9.622 1.46c0 1.033-.724 1.823-1.698 1.823s-1.698-.79-1.698-1.822v-.043c0-1.028.724-1.822 1.698-1.822s1.698.79 1.698 1.822v.043zm.039-12.285l-.84 8.06c-.057.581-.408.943-.897.943-.49 0-.84-.367-.896-.942l-.84-8.065c-.057-.624.25-1.095.779-1.095h1.91c.528.005.84.476.784 1.1z"}))},success:function(r){return Jh.createElement(eO,{...r},Jh.createElement("path",{d:"M12 0a12 12 0 1012 12A12.014 12.014 0 0012 0zm6.927 8.2l-6.845 9.289a1.011 1.011 0 01-1.43.188l-4.888-3.908a1 1 0 111.25-1.562l4.076 3.261 6.227-8.451a1 1 0 111.61 1.183z"}))},error:function(r){return Jh.createElement(eO,{...r},Jh.createElement("path",{d:"M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z"}))},spinner:function(){return Jh.createElement("div",{className:"Toastify__spinner"})}},eWt=r=>{const{isRunning:e,preventExitTransition:t,toastRef:n,eventHandlers:i,playToast:o}=WJt(r),{closeButton:a,children:s,autoClose:l,onClick:c,type:u,hideProgressBar:A,closeToast:d,transition:f,position:m,className:C,style:E,bodyClassName:_,bodyStyle:x,progressClassName:w,progressStyle:P,updateId:L,role:O,progress:H,rtl:K,toastId:q,deleteToast:Y,isIn:se,isLoading:ie,closeOnClick:de,theme:Ce}=r,xe=qb("Toastify__toast",`Toastify__toast-theme--${Ce}`,`Toastify__toast--${u}`,{"Toastify__toast--rtl":K},{"Toastify__toast--close-on-click":de}),fe=FB(C)?C({rtl:K,position:m,type:u,defaultClassName:xe}):qb(xe,C),Ie=function(Fe){let{theme:Ne,type:rt,isLoading:et,icon:ft}=Fe,_t=null;const Ft={theme:Ne,type:rt};return ft===!1||(FB(ft)?_t=ft({...Ft,isLoading:et}):pt.isValidElement(ft)?_t=pt.cloneElement(ft,Ft):et?_t=Qce.spinner():(Lt=>Lt in Qce)(rt)&&(_t=Qce[rt](Ft))),_t}(r),ve=!!H||!l,Qe={closeToast:d,type:u,theme:Ce};let De=null;return a===!1||(De=FB(a)?a(Qe):pt.isValidElement(a)?pt.cloneElement(a,Qe):function(Fe){let{closeToast:Ne,theme:rt,ariaLabel:et="close"}=Fe;return Jh.createElement("button",{className:`Toastify__close-button Toastify__close-button--${rt}`,type:"button",onClick:ft=>{ft.stopPropagation(),Ne(ft)},"aria-label":et},Jh.createElement("svg",{"aria-hidden":"true",viewBox:"0 0 14 16"},Jh.createElement("path",{fillRule:"evenodd",d:"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z"})))}(Qe)),Jh.createElement(f,{isIn:se,done:Y,position:m,preventExitTransition:t,nodeRef:n,playToast:o},Jh.createElement("div",{id:q,onClick:c,"data-in":se,className:fe,...i,style:E,ref:n},Jh.createElement("div",{...se&&{role:O},className:FB(_)?_({type:u}):qb("Toastify__toast-body",_),style:x},Ie!=null&&Jh.createElement("div",{className:qb("Toastify__toast-icon",{"Toastify--animate-icon Toastify__zoom-enter":!ie})},Ie),Jh.createElement("div",null,s)),De,Jh.createElement(qJt,{...L&&!ve?{key:`pb-${L}`}:{},rtl:K,theme:Ce,delay:l,isRunning:e,isIn:se,closeToast:d,hide:A,type:u,style:P,className:w,controlledProgress:ve,progress:H||0})))},tO=function(r,e){return e===void 0&&(e=!1),{enter:`Toastify--animate Toastify__${r}-enter`,exit:`Toastify--animate Toastify__${r}-exit`,appendPosition:e}},tWt=Z7(tO("bounce",!0));Z7(tO("slide",!0)),Z7(tO("zoom")),Z7(tO("flip"));const nWt={position:"top-right",transition:tWt,autoClose:5e3,closeButton:!0,pauseOnHover:!0,pauseOnFocusLoss:!0,draggable:"touch",draggablePercent:80,draggableDirection:"x",role:"alert",theme:"light"};function rWt(r){let e={...nWt,...r};const t=r.stacked,[n,i]=pt.useState(!0),o=pt.useRef(null),{getToastToRender:a,isToastActive:s,count:l}=JJt(e),{className:c,style:u,rtl:A,containerId:d}=e;function f(C){const E=qb("Toastify__toast-container",`Toastify__toast-container--${C}`,{"Toastify__toast-container--rtl":A});return FB(c)?c({position:C,rtl:A,defaultClassName:E}):qb(E,q7(c))}function m(){t&&(i(!0),hv.play())}return $Jt(()=>{if(t){var C;const E=o.current.querySelectorAll('[data-in="true"]'),_=12,x=(C=e.position)==null?void 0:C.includes("top");let w=0,P=0;Array.from(E).reverse().forEach((L,O)=>{const H=L;H.classList.add("Toastify__toast--stacked"),O>0&&(H.dataset.collapsed=`${n}`),H.dataset.pos||(H.dataset.pos=x?"top":"bot");const K=w*(n?.2:1)+(n?0:_*O);H.style.setProperty("--y",`${x?K:-1*K}px`),H.style.setProperty("--g",`${_}`),H.style.setProperty("--s",""+(1-(n?P:0))),w+=H.offsetHeight,P+=.025})}},[n,l,t]),Jh.createElement("div",{ref:o,className:"Toastify",id:d,onMouseEnter:()=>{t&&(i(!1),hv.pause())},onMouseLeave:m},a((C,E)=>{const _=E.length?{...u}:{...u,pointerEvents:"none"};return Jh.createElement("div",{className:f(C),style:_,key:`container-${C}`},E.map(x=>{let{content:w,props:P}=x;return Jh.createElement(eWt,{...P,stacked:t,collapseAll:m,isIn:s(P.toastId,P.containerId),style:P.style,key:`toast-${P.key}`},w)}))}))}function iWt(){var r=':root{--toastify-color-light:#fff;--toastify-color-dark:#121212;--toastify-color-info:#3498db;--toastify-color-success:#07bc0c;--toastify-color-warning:#f1c40f;--toastify-color-error:#e74c3c;--toastify-color-transparent:hsla(0,0%,100%,.7);--toastify-icon-color-info:var(--toastify-color-info);--toastify-icon-color-success:var(--toastify-color-success);--toastify-icon-color-warning:var(--toastify-color-warning);--toastify-icon-color-error:var(--toastify-color-error);--toastify-toast-width:320px;--toastify-toast-offset:16px;--toastify-toast-top:max(var(--toastify-toast-offset),env(safe-area-inset-top));--toastify-toast-right:max(var(--toastify-toast-offset),env(safe-area-inset-right));--toastify-toast-left:max(var(--toastify-toast-offset),env(safe-area-inset-left));--toastify-toast-bottom:max(var(--toastify-toast-offset),env(safe-area-inset-bottom));--toastify-toast-background:#fff;--toastify-toast-min-height:64px;--toastify-toast-max-height:800px;--toastify-toast-bd-radius:6px;--toastify-font-family:sans-serif;--toastify-z-index:9999;--toastify-text-color-light:#757575;--toastify-text-color-dark:#fff;--toastify-text-color-info:#fff;--toastify-text-color-success:#fff;--toastify-text-color-warning:#fff;--toastify-text-color-error:#fff;--toastify-spinner-color:#616161;--toastify-spinner-color-empty-area:#e0e0e0;--toastify-color-progress-light:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55);--toastify-color-progress-dark:#bb86fc;--toastify-color-progress-info:var(--toastify-color-info);--toastify-color-progress-success:var(--toastify-color-success);--toastify-color-progress-warning:var(--toastify-color-warning);--toastify-color-progress-error:var(--toastify-color-error);--toastify-color-progress-bgo:0.2}.Toastify__toast-container{z-index:var(--toastify-z-index);-webkit-transform:translateZ(var(--toastify-z-index));position:fixed;padding:4px;width:var(--toastify-toast-width);box-sizing:border-box;color:#fff}.Toastify__toast-container--top-left{top:var(--toastify-toast-top);left:var(--toastify-toast-left)}.Toastify__toast-container--top-center{top:var(--toastify-toast-top);left:50%;transform:translateX(-50%)}.Toastify__toast-container--top-right{top:var(--toastify-toast-top);right:var(--toastify-toast-right)}.Toastify__toast-container--bottom-left{bottom:var(--toastify-toast-bottom);left:var(--toastify-toast-left)}.Toastify__toast-container--bottom-center{bottom:var(--toastify-toast-bottom);left:50%;transform:translateX(-50%)}.Toastify__toast-container--bottom-right{bottom:var(--toastify-toast-bottom);right:var(--toastify-toast-right)}@media only screen and (max-width:480px){.Toastify__toast-container{width:100vw;padding:0;left:env(safe-area-inset-left);margin:0}.Toastify__toast-container--top-center,.Toastify__toast-container--top-left,.Toastify__toast-container--top-right{top:env(safe-area-inset-top);transform:translateX(0)}.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-right{bottom:env(safe-area-inset-bottom);transform:translateX(0)}.Toastify__toast-container--rtl{right:env(safe-area-inset-right);left:auto}}.Toastify__toast{--y:0;position:relative;-ms-touch-action:none;touch-action:none;min-height:var(--toastify-toast-min-height);box-sizing:border-box;margin-bottom:1rem;padding:8px;border-radius:var(--toastify-toast-bd-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;max-height:var(--toastify-toast-max-height);font-family:var(--toastify-font-family);cursor:default;direction:ltr;z-index:0;overflow:hidden}.Toastify__toast--stacked{position:absolute;width:100%;transform:translate3d(0,var(--y),0) scale(var(--s));transition:transform .3s}.Toastify__toast--stacked[data-collapsed] .Toastify__close-button,.Toastify__toast--stacked[data-collapsed] .Toastify__toast-body{transition:opacity .1s}.Toastify__toast--stacked[data-collapsed=false]{overflow:visible}.Toastify__toast--stacked[data-collapsed=true]:not(:last-child)>*{opacity:0}.Toastify__toast--stacked:after{content:"";position:absolute;left:0;right:0;height:calc(var(--g) * 1px);bottom:100%}.Toastify__toast--stacked[data-pos=top]{top:0}.Toastify__toast--stacked[data-pos=bot]{bottom:0}.Toastify__toast--stacked[data-pos=bot].Toastify__toast--stacked:before{transform-origin:top}.Toastify__toast--stacked[data-pos=top].Toastify__toast--stacked:before{transform-origin:bottom}.Toastify__toast--stacked:before{content:"";position:absolute;left:0;right:0;bottom:0;height:100%;transform:scaleY(3);z-index:-1}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--close-on-click{cursor:pointer}.Toastify__toast-body{margin:auto 0;-ms-flex:1 1 auto;flex:1 1 auto;padding:6px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.Toastify__toast-body>div:last-child{word-break:break-word;-ms-flex:1;flex:1}.Toastify__toast-icon{-webkit-margin-end:10px;margin-inline-end:10px;width:20px;-ms-flex-negative:0;flex-shrink:0;display:-ms-flexbox;display:flex}.Toastify--animate{animation-fill-mode:both;animation-duration:.5s}.Toastify--animate-icon{animation-fill-mode:both;animation-duration:.3s}@media only screen and (max-width:480px){.Toastify__toast{margin-bottom:0;border-radius:0}}.Toastify__toast-theme--dark{background:var(--toastify-color-dark);color:var(--toastify-text-color-dark)}.Toastify__toast-theme--colored.Toastify__toast--default,.Toastify__toast-theme--light{background:var(--toastify-color-light);color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{color:var(--toastify-text-color-info);background:var(--toastify-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{color:var(--toastify-text-color-success);background:var(--toastify-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{color:var(--toastify-text-color-warning);background:var(--toastify-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{color:var(--toastify-text-color-error);background:var(--toastify-color-error)}.Toastify__progress-bar-theme--light{background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning{background:var(--toastify-color-transparent)}.Toastify__close-button{color:#fff;background:transparent;outline:none;border:none;padding:0;cursor:pointer;opacity:.7;transition:.3s ease;-ms-flex-item-align:start;align-self:flex-start;z-index:1}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:focus,.Toastify__close-button:hover{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Toastify__progress-bar{position:absolute;bottom:0;left:0;width:100%;height:100%;z-index:var(--toastify-z-index);opacity:.7;transform-origin:left;border-bottom-left-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{right:0;left:auto;transform-origin:right;border-bottom-left-radius:0;border-bottom-right-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp{position:absolute;bottom:0;left:0;width:100%;height:5px;border-bottom-left-radius:var(--toastify-toast-bd-radius)}.Toastify__progress-bar--wrp[data-hidden=true]{opacity:0}.Toastify__progress-bar--bg{opacity:var(--toastify-color-progress-bgo);width:100%;height:100%}.Toastify__spinner{width:20px;height:20px;box-sizing:border-box;border:2px solid;border-radius:100%;border-color:var(--toastify-spinner-color-empty-area);border-right-color:var(--toastify-spinner-color);animation:Toastify__spin .65s linear infinite}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,var(--y),0)}to{opacity:0;transform:translate3d(2000px,var(--y),0)}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,var(--y),0)}to{opacity:0;transform:translate3d(-2000px,var(--y),0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--bottom-left,.Toastify__bounce-enter--top-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--bottom-right,.Toastify__bounce-enter--top-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--bottom-left,.Toastify__bounce-exit--top-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--bottom-right,.Toastify__bounce-exit--top-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:translate3d(0,var(--y),0) scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{0%{transform:perspective(400px) rotateX(90deg);animation-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotateX(-20deg);animation-timing-function:ease-in}60%{transform:perspective(400px) rotateX(10deg);opacity:1}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{0%{transform:translate3d(0,var(--y),0) perspective(400px)}30%{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(-20deg);opacity:1}to{transform:translate3d(0,var(--y),0) perspective(400px) rotateX(90deg);opacity:0}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{0%{transform:translate3d(110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInLeft{0%{transform:translate3d(-110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInUp{0%{transform:translate3d(0,110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInDown{0%{transform:translate3d(0,-110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideOutRight{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(110%,var(--y),0)}}@keyframes Toastify__slideOutLeft{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(-110%,var(--y),0)}}@keyframes Toastify__slideOutDown{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,500px,0)}}@keyframes Toastify__slideOutUp{0%{transform:translate3d(0,var(--y),0)}to{visibility:hidden;transform:translate3d(0,-500px,0)}}.Toastify__slide-enter--bottom-left,.Toastify__slide-enter--top-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--bottom-right,.Toastify__slide-enter--top-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--bottom-left,.Toastify__slide-exit--top-left{animation-name:Toastify__slideOutLeft;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--bottom-right,.Toastify__slide-exit--top-right{animation-name:Toastify__slideOutRight;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--top-center{animation-name:Toastify__slideOutUp;animation-timing-function:ease-in;animation-duration:.3s}.Toastify__slide-exit--bottom-center{animation-name:Toastify__slideOutDown;animation-timing-function:ease-in;animation-duration:.3s}@keyframes Toastify__spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}',e=document.createElement("style");e.innerText=r,document.head.appendChild(e)}const oWt=gKe(DZe);var Mce,S7e;function aWt(){if(S7e)return Mce;S7e=1;var r=Object.defineProperty,e=Object.getOwnPropertyDescriptor,t=Object.getOwnPropertyNames,n=Object.prototype.hasOwnProperty,i=(E,_)=>{for(var x in _)r(E,x,{get:_[x],enumerable:!0})},o=(E,_,x,w)=>{if(_&&typeof _=="object"||typeof _=="function")for(let P of t(_))!n.call(E,P)&&P!==x&&r(E,P,{get:()=>_[P],enumerable:!(w=e(_,P))||w.enumerable});return E},a=E=>o(r({},"__esModule",{value:!0}),E),s={};i(s,{SuperGrid:()=>C,toMMSI:()=>m,toMeterSI:()=>f}),Mce=a(s);var l=ZE(),c=oWt,u=ude(),A=(E,_,x)=>{const w=[];if(_<E)for(let P=E;P>=_;P-=Math.abs(x))w.push(P);else for(let P=E;P<=_;P+=Math.abs(x))w.push(P);return w};function d(E,_){return{x:Math.round(_.x/E)*E,y:Math.round(_.y/E)*E}}function f(E,_=1){return E<0?"-"+f(-E):E<1e-6?"0m":E>1e3?Math.floor(E/1e3)+"km":E>1&&_>1?Math.round(E)+"m":E>1&&_<=1?E.toFixed(Math.ceil(-Math.log10(_)))+"m":E<1&&_>=1/1e3?Math.round(E*1e3)+"mm":E<1&&_<1/1e3?(E*1e3).toFixed(Math.ceil(-Math.log10(_*1e3)))+"mm":""}function m(E,_=1){return f(E/1e3,_/1e3)}var C=E=>{var _;const x=(0,l.useRef)(null),[w,P]=(0,l.useState)({x:0,y:0}),{majorColor:L="rgba(0,0,0,0.2)",minorColor:O="rgba(0,0,0,0.1)",textColor:H=(_=E.majorColor)!=null?_:"rgba(0,0,0,0.5)",width:K,height:q,screenSpaceCellSize:Y=200,stringifyCoord:se=(xe,fe,Ie)=>`${f(xe,Ie)}, ${f(fe,Ie)}`}=E,ie=Math.ceil(K/Y)+2,de=Math.ceil(q/Y)+2;(0,l.useEffect)(()=>{if(!x.current)return;const xe=x.current.getContext("2d");if(!xe)return;const fe=Y/10**Math.floor(Math.log10(E.transform.a)),Ie=E.transform.d<0?-1:1,Qe=Y/10**Math.log10(E.transform.a)/fe;function De(xt,vt,Ht){const en=xt;let kt,qn,cn;for(kt=vt.x;kt<=Ht.x;kt+=en)qn=(0,c.applyToPoint)(E.transform,{x:kt,y:vt.y}),cn=(0,c.applyToPoint)(E.transform,{x:kt,y:Ht.y}),xe.beginPath(),xe.moveTo(qn.x,qn.y),xe.lineTo(cn.x,cn.y),xe.stroke();const Wt=A(vt.y,Ht.y,en*Ie);for(const tr of Wt)qn=(0,c.applyToPoint)(E.transform,{x:vt.x,y:tr}),cn=(0,c.applyToPoint)(E.transform,{x:Ht.x,y:tr}),xe.beginPath(),xe.moveTo(qn.x,qn.y),xe.lineTo(cn.x,cn.y),xe.stroke()}function Fe(xt,vt,Ht){const en=xt;let kt;for(kt=vt.x;kt<=Ht.x;kt+=en)for(const qn of A(vt.y,Ht.y,en*Ie)){const cn=(0,c.applyToPoint)(E.transform,{x:kt,y:qn});xe.fillStyle=H,xe.font="12px sans-serif",xe.fillText(se(kt,qn,xt),cn.x+2,cn.y-2)}}xe.clearRect(0,0,K,q);const Ne=(0,c.applyToPoint)((0,c.inverse)(E.transform),{x:0,y:0}),rt={x:Math.floor((Ne.x-fe)/fe)*fe,y:Math.floor((Ne.y-fe)/fe+(Ie==-1?2:0))*fe},et={x:rt.x+fe*ie,y:rt.y+fe*de*Ie},_t=fe*5,Ft={x:Math.floor((Ne.x-_t)/_t)*_t,y:Math.floor((Ne.y-_t)/_t+(Ie==-1?2:0))*_t},Lt={x:Ft.x+_t*ie,y:Ft.y+_t*de*Ie};xe.globalAlpha=1,xe.strokeStyle=L,De(fe,rt,et),Fe(_t,Ft,Lt),xe.globalAlpha=1-Qe,De(_t/10,Ft,Lt),xe.globalAlpha=1-Qe,xe.strokeStyle=O,De(fe/10,rt,et),xe.globalAlpha=Math.max(((1-Qe)*10-5)/5,0),Fe(_t/10,Ft,Lt),xe.globalAlpha=1;const tt=(0,c.applyToPoint)(E.transform,w);xe.font="12px sans-serif",xe.fillStyle=H,xe.fillText(se(w.x,w.y,fe),tt.x+2,tt.y-2),xe.strokeStyle=L,xe.strokeRect(tt.x-5,tt.y-5,10,10)},[x,E.transform,w,K,q]);const Ce=xe=>{if(!x.current)return;const fe=Y/10/10**Math.floor(Math.log10(E.transform.a)),Ie=x.current.getBoundingClientRect(),ve=(0,c.applyToPoint)((0,c.inverse)(E.transform),{x:xe.clientX-Ie.left,y:xe.clientY-Ie.top}),Qe=d(fe,ve);P(Qe)};return(0,u.jsx)("canvas",{onMouseUp:xe=>{xe.button===1&&Ce(xe)},onDoubleClick:Ce,ref:x,width:E.width,height:E.height})};return Mce}var Dce=aWt(),Rce={exports:{}},n4={},nO={exports:{}},Nce={},Tce={},w7e;function Pce(){if(w7e)return Tce;w7e=1;function r(n){this.__parent=n,this.__character_count=0,this.__indent_count=-1,this.__alignment_count=0,this.__wrap_point_index=0,this.__wrap_point_character_count=0,this.__wrap_point_indent_count=-1,this.__wrap_point_alignment_count=0,this.__items=[]}r.prototype.clone_empty=function(){var n=new r(this.__parent);return n.set_indent(this.__indent_count,this.__alignment_count),n},r.prototype.item=function(n){return n<0?this.__items[this.__items.length+n]:this.__items[n]},r.prototype.has_match=function(n){for(var i=this.__items.length-1;i>=0;i--)if(this.__items[i].match(n))return!0;return!1},r.prototype.set_indent=function(n,i){this.is_empty()&&(this.__indent_count=n||0,this.__alignment_count=i||0,this.__character_count=this.__parent.get_indent_size(this.__indent_count,this.__alignment_count))},r.prototype._set_wrap_point=function(){this.__parent.wrap_line_length&&(this.__wrap_point_index=this.__items.length,this.__wrap_point_character_count=this.__character_count,this.__wrap_point_indent_count=this.__parent.next_line.__indent_count,this.__wrap_point_alignment_count=this.__parent.next_line.__alignment_count)},r.prototype._should_wrap=function(){return this.__wrap_point_index&&this.__character_count>this.__parent.wrap_line_length&&this.__wrap_point_character_count>this.__parent.next_line.__character_count},r.prototype._allow_wrap=function(){if(this._should_wrap()){this.__parent.add_new_line();var n=this.__parent.current_line;return n.set_indent(this.__wrap_point_indent_count,this.__wrap_point_alignment_count),n.__items=this.__items.slice(this.__wrap_point_index),this.__items=this.__items.slice(0,this.__wrap_point_index),n.__character_count+=this.__character_count-this.__wrap_point_character_count,this.__character_count=this.__wrap_point_character_count,n.__items[0]===" "&&(n.__items.splice(0,1),n.__character_count-=1),!0}return!1},r.prototype.is_empty=function(){return this.__items.length===0},r.prototype.last=function(){return this.is_empty()?null:this.__items[this.__items.length-1]},r.prototype.push=function(n){this.__items.push(n);var i=n.lastIndexOf(`
13312
13312
  `);i!==-1?this.__character_count=n.length-i:this.__character_count+=n.length},r.prototype.pop=function(){var n=null;return this.is_empty()||(n=this.__items.pop(),this.__character_count-=n.length),n},r.prototype._remove_indent=function(){this.__indent_count>0&&(this.__indent_count-=1,this.__character_count-=this.__parent.indent_size)},r.prototype._remove_wrap_indent=function(){this.__wrap_point_indent_count>0&&(this.__wrap_point_indent_count-=1)},r.prototype.trim=function(){for(;this.last()===" ";)this.__items.pop(),this.__character_count-=1},r.prototype.toString=function(){var n="";return this.is_empty()?this.__parent.indent_empty_lines&&(n=this.__parent.get_indent_string(this.__indent_count)):(n=this.__parent.get_indent_string(this.__indent_count,this.__alignment_count),n+=this.__items.join("")),n};function e(n,i){this.__cache=[""],this.__indent_size=n.indent_size,this.__indent_string=n.indent_char,n.indent_with_tabs||(this.__indent_string=new Array(n.indent_size+1).join(n.indent_char)),i=i||"",n.indent_level>0&&(i=new Array(n.indent_level+1).join(this.__indent_string)),this.__base_string=i,this.__base_string_length=i.length}e.prototype.get_indent_size=function(n,i){var o=this.__base_string_length;return i=i||0,n<0&&(o=0),o+=n*this.__indent_size,o+=i,o},e.prototype.get_indent_string=function(n,i){var o=this.__base_string;return i=i||0,n<0&&(n=0,o=""),i+=n*this.__indent_size,this.__ensure_cache(i),o+=this.__cache[i],o},e.prototype.__ensure_cache=function(n){for(;n>=this.__cache.length;)this.__add_column()},e.prototype.__add_column=function(){var n=this.__cache.length,i=0,o="";this.__indent_size&&n>=this.__indent_size&&(i=Math.floor(n/this.__indent_size),n-=i*this.__indent_size,o=new Array(i+1).join(this.__indent_string)),n&&(o+=new Array(n+1).join(" ")),this.__cache.push(o)};function t(n,i){this.__indent_cache=new e(n,i),this.raw=!1,this._end_with_newline=n.end_with_newline,this.indent_size=n.indent_size,this.wrap_line_length=n.wrap_line_length,this.indent_empty_lines=n.indent_empty_lines,this.__lines=[],this.previous_line=null,this.current_line=null,this.next_line=new r(this),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1,this.__add_outputline()}return t.prototype.__add_outputline=function(){this.previous_line=this.current_line,this.current_line=this.next_line.clone_empty(),this.__lines.push(this.current_line)},t.prototype.get_line_number=function(){return this.__lines.length},t.prototype.get_indent_string=function(n,i){return this.__indent_cache.get_indent_string(n,i)},t.prototype.get_indent_size=function(n,i){return this.__indent_cache.get_indent_size(n,i)},t.prototype.is_empty=function(){return!this.previous_line&&this.current_line.is_empty()},t.prototype.add_new_line=function(n){return this.is_empty()||!n&&this.just_added_newline()?!1:(this.raw||this.__add_outputline(),!0)},t.prototype.get_code=function(n){this.trim(!0);var i=this.current_line.pop();i&&(i[i.length-1]===`
@@ -13478,7 +13478,7 @@ $1`).replace(/>(\s*)(?=<!--\s*\/)/g,"> ")}return nue}IWt();function AOe(r,e,t,n=
13478
13478
  &:hover {
13479
13479
  background-color: rgba(255, 255, 255, 0.1);
13480
13480
  }
13481
- `,onClick:n=>{n.stopPropagation(),t()},children:[ut.jsx("input",{type:"checkbox",checked:e}),ut.jsx("span",{style:{color:"#eee"},children:r})]}),jXt=({children:r,elements:e})=>{const[t,n]=O1(K=>[K.is_mouse_over_container,K.setIsMouseOverContainer]),[i,o]=pt.useState(!1),[a,s]=pt.useState(!1),[l,c]=pt.useState(!1),[u,A]=O1(K=>[K.selected_layer,K.selectLayer]),[d,f,m,C,E,_]=O1(K=>[K.in_move_footprint_mode,K.in_draw_trace_mode,K.is_showing_rats_nest,K.is_showing_multiple_traces_length,K.is_showing_autorouting,K.is_showing_drc_errors]),x=O1(K=>K.setEditMode),w=O1(K=>K.setIsShowingRatsNest),P=O1(K=>K.setIsShowingMultipleTracesLength),L=O1(K=>K.setIsShowingAutorouting),O=O1(K=>K.setIsShowingDrcErrors);s2("1",()=>A("top")),s2("2",()=>A("bottom")),s2("3",()=>A("inner1")),s2("4",()=>A("inner2")),s2("5",()=>A("inner3")),s2("6",()=>A("inner4")),s2("7",()=>A("inner5")),s2("8",()=>A("inner6"));const H=(e==null?void 0:e.filter(K=>K.type.includes("error")).length)??0;return ut.jsxs("div",{style:{position:"relative"},onMouseEnter:()=>{n(!0)},onMouseLeave:K=>{n(!1),s(!1)},children:[r,ut.jsxs("div",{style:{position:"absolute",bottom:4,right:8,pointerEvents:"none",color:"white",fontSize:11,opacity:t?.5:0,transition:"opacity 1s",transitionDelay:"2s",fontFamily:"sans-serif"},children:["@tscircuit/pcb-viewer@",VXt.version]}),ut.jsxs("div",{style:{position:"absolute",opacity:t?1:0,top:16,left:16,transition:t?"opacity 100ms linear":"opacity 1s linear",zIndex:hx.toolbarOverlay,color:"red",display:"flex",fontSize:12,height:100,fontFamily:"sans-serif"},children:[ut.jsxs(qR,{onClick:()=>{s(!a)},onMouseLeave:()=>{a&&s(!1)},children:[ut.jsxs("div",{children:["layer:"," ",ut.jsx("span",{style:{marginLeft:2,fontWeight:500,color:WR[u]},children:u})]}),a&&ut.jsx("div",{style:{marginTop:4,minWidth:120},children:Uue.map(K=>K.replace(/-/g,"")).map(K=>ut.jsx(KXt,{name:K,selected:K===u,onClick:()=>{A(K.replace(/-/,""))}},K))})]}),ut.jsxs(qR,{style:H>0?{color:"red"}:{},onClick:()=>c(!l),onMouseLeave:()=>c(!1),children:[ut.jsxs("div",{children:[H," errors"]}),l&&ut.jsx("div",{style:{display:"grid",gridTemplateColumns:"100px 300px"},children:e==null?void 0:e.filter(K=>K.type.includes("error")).map((K,q)=>ut.jsxs(pt.Fragment,{children:[ut.jsx("div",{children:K.error_type}),ut.jsx("div",{children:K.message})]},q))})]}),ut.jsx(qR,{style:{},onClick:()=>{x(f?"off":"draw_trace")},children:ut.jsxs("div",{children:[f?"✖ ":"","Edit Traces"]})}),ut.jsx(qR,{style:{},onClick:()=>{x(d?"off":"move_footprint")},children:ut.jsxs("div",{children:[d?"✖ ":"","Move Components"]})}),ut.jsx(qR,{style:{},onClick:()=>{w(!m)},children:ut.jsxs("div",{children:[m?"✖ ":"","Rats Nest"]})}),ut.jsx(qR,{onClick:()=>{o(!i)},children:ut.jsxs("div",{children:[ut.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:["View"," ",ut.jsx("span",{style:{fontSize:"8px",transform:i?"rotate(180deg)":"rotate(0)",transition:"transform 0.1s ease",display:"inline-block"},children:"▼"})]}),i&&ut.jsxs("div",{style:{marginTop:4,minWidth:120},children:[ut.jsx(Hue,{label:"Show All Trace Lengths",checked:C,onClick:()=>{P(!C)}}),ut.jsx(Hue,{label:"Show Autorouting Animation",checked:E,onClick:()=>{L(!E)}}),ut.jsx(Hue,{label:"Show DRC Errors",checked:_,onClick:()=>{O(!_)}})]})]})})]})]})},JXt=r=>{const{transform:e,elements:t}=r,[n,i]=pt.useMemo(()=>{const c=r.elements.flatMap(A=>oXt(A,r.elements)),u=Tw(r.elements);return[c,u]},[r.elements]),[o,a]=pt.useState({drawingObjectIdsWithMouseOver:new Set,primitiveIdsInMousedOverNet:[]}),s=pt.useMemo(()=>rXt({primitivesWithoutInteractionMetadata:n,drawingObjectIdsWithMouseOver:o.drawingObjectIdsWithMouseOver,primitiveIdsInMousedOverNet:o.primitiveIdsInMousedOverNet}),[n,o]),l=pt.useCallback(c=>{var d,f;const u=[];for(const m of c)if(m._element){const C=i.getNetConnectedToId("pcb_port_id"in m._element?(d=m._element)==null?void 0:d.pcb_port_id:"pcb_trace_id"in m._element?(f=m._element)==null?void 0:f.pcb_trace_id:"");u.push(...i.getIdsConnectedToNet(C))}const A=new Set(c.map(m=>m._pcb_drawing_object_id));a({drawingObjectIdsWithMouseOver:A,primitiveIdsInMousedOverNet:u})},[i]);return ut.jsx(HXt,{elements:t,transform:e,primitives:n,onMouseHoverOverPrimitives:l,children:ut.jsx(bXt,{disabled:!r.allowEditing,transform:e,soup:t,cancelPanDrag:r.cancelPanDrag,onCreateEditEvent:r.onCreateEditEvent,onModifyEditEvent:r.onModifyEditEvent,children:ut.jsx(MXt,{disabled:!r.allowEditing,transform:e,soup:t,cancelPanDrag:r.cancelPanDrag,onCreateEditEvent:r.onCreateEditEvent,onModifyEditEvent:r.onModifyEditEvent,children:ut.jsx(xXt,{transform:e,focusOnHover:r.focusOnHover,children:ut.jsx(jXt,{elements:t,children:ut.jsx(NXt,{transform:e,elements:t,children:ut.jsx(YXt,{transform:e,soup:t,children:ut.jsx(EXt,{transform:e,debugGraphics:r.debugGraphics,children:ut.jsx(_Xt,{transform:e,elements:t,children:ut.jsx(CXt,{transform:e,primitives:s,width:r.width,height:r.height,grid:r.grid})})})})})})})})})})},WXt=Ku($d(400,300),oE(40,-40)),qXt=({circuitJson:r,debugGraphics:e,height:t=600,initialState:n,allowEditing:i=!0,editEvents:o,onEditEventsChanged:a,focusOnHover:s=!1,clickToInteractEnabled:l=!1})=>{const[c,u]=pt.useState(!l),[A,d]=Oue(),[f,m]=pt.useState(WXt),{ref:C,setTransform:E,cancelDrag:_}=nXt({transform:f,onSetTransform:m,enabled:c});let[x,w]=pt.useState([]);x=o??x;const P=pt.useRef(!1),L=pt.useRef(null),O=`${(r==null?void 0:r.length)||0}_${(r==null?void 0:r.editCount)||0}`,H=()=>{const ie=(d==null?void 0:d.width)>0?d:{width:500,height:500},{center:de,width:Ce,height:xe}=q.some(ve=>ve.type.startsWith("pcb_"))?KZt(q.filter(ve=>ve.type.startsWith("pcb_"))):{center:{x:0,y:0},width:.001,height:.001},fe=Math.min((ie.width??0)/Ce,(ie.height??0)/xe,100)*.75,Ie=Ku($d((ie.width??0)/2,(ie.height??0)/2),oE(fe,-fe,0,0),$d(-de.x,-de.y));E(Ie)};pt.useEffect(()=>{d!=null&&d.width&&r&&r.length!==0&&(P.current||(H(),P.current=!0))},[r,d]);const K=pt.useMemo(()=>(r==null?void 0:r.filter(ie=>ie.type.startsWith("pcb_")||ie.type.startsWith("source_")))??[],[O]),q=pt.useMemo(()=>oJt({circuitJson:K,editEvents:x}),[K,x]),Y=ie=>{w([...x,ie]),a==null||a([...x,ie])},se=ie=>{const de=x.map(Ce=>Ce.edit_event_id===ie.edit_event_id?{...Ce,...ie}:Ce);w(de),a==null||a(de)};return ut.jsxs("div",{ref:C,style:{position:"relative"},children:[ut.jsx("div",{ref:A,children:ut.jsxs(JZt,{initialState:n,children:[ut.jsx(JXt,{transform:f,height:t,width:d.width,allowEditing:i,focusOnHover:s,cancelPanDrag:_,onCreateEditEvent:Y,onModifyEditEvent:se,grid:{spacing:1,view_window:{left:0,right:d.width||500,top:t,bottom:0}},elements:q,debugGraphics:e},d.width),ut.jsx(qZt,{})]})}),l&&!c&&ut.jsx("div",{onClick:()=>{u(!0),H()},onTouchStart:ie=>{const de=ie.touches[0];L.current={x:de.clientX,y:de.clientY}},onTouchEnd:ie=>{const de=ie.changedTouches[0],Ce=L.current;if(!Ce)return;const xe=Math.abs(de.clientX-Ce.x),fe=Math.abs(de.clientY-Ce.y);xe<10&&fe<10&&(ie.preventDefault(),u(!0),H()),L.current=null},style:{position:"absolute",inset:0,cursor:"pointer",zIndex:hx.clickToInteractOverlay,display:"flex",alignItems:"center",justifyContent:"center",touchAction:"pan-x pan-y pinch-zoom"},children:ut.jsx("div",{style:{backgroundColor:"rgba(0, 0, 0, 0.8)",color:"white",padding:"12px 24px",borderRadius:"8px",fontSize:"16px",pointerEvents:"none"},children:typeof window<"u"&&("ontouchstart"in window||navigator.maxTouchPoints>0)?"Touch to Interact":"Click to Interact"})})]})};const ZXt=({containerClassName:r,...e})=>{const t=pt.useRef(null),[n,i]=pt.useState(620);return pt.useLayoutEffect(()=>{const o=()=>{if(t.current){const s=t.current.clientHeight,l=window.innerHeight;i(Math.min(Math.max(s,620),l))}};o();const a=new ResizeObserver(o);return t.current&&a.observe(t.current),window.addEventListener("resize",o),()=>{a.disconnect(),window.removeEventListener("resize",o)}},[]),ut.jsx("div",{ref:t,className:r||"rf-w-full rf-h-full",children:ut.jsx(qXt,{...e,height:n})})},XXt='*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:root{--radius:0.5rem}.rf-pointer-events-none{pointer-events:none}.rf-invisible{visibility:hidden}.rf-fixed{position:fixed}.rf-absolute{position:absolute}.rf-relative{position:relative}.rf-inset-0{inset:0}.-rf-left-2{left:-.5rem}.-rf-right-10{right:-2.5rem}.-rf-right-2{right:-.5rem}.-rf-right-4{right:-1rem}.-rf-right-6{right:-1.5rem}.-rf-right-7{right:-1.75rem}.-rf-right-8{right:-2rem}.-rf-right-9{right:-2.25rem}.rf-bottom-full{bottom:100%}.rf-left-0{left:0}.rf-left-1{left:.25rem}.rf-left-1\\/2{left:50%}.rf-left-2{left:.5rem}.rf-left-\\[50\\%\\]{left:50%}.rf-right-0{right:0}.rf-right-1{right:.25rem}.rf-right-4{right:1rem}.rf-right-\\[4px\\]{right:4px}.rf-top-0{top:0}.rf-top-1{top:.25rem}.rf-top-2{top:.5rem}.rf-top-2\\.5{top:.625rem}.rf-top-\\[50\\%\\]{top:50%}.rf-top-\\[6px\\]{top:6px}.\\!rf-z-\\[101\\]{z-index:101!important}.rf-z-10{z-index:10}.rf-z-50{z-index:50}.rf-z-\\[100\\]{z-index:100}.rf-order-1{order:1}.rf-order-2{order:2}.rf-order-3{order:3}.rf-m-1{margin:.25rem}.rf-m-6{margin:1.5rem}.-rf-mx-1,.rf--mx-1{margin-left:-.25rem;margin-right:-.25rem}.rf-mx-1{margin-left:.25rem;margin-right:.25rem}.rf-mx-2{margin-left:.5rem;margin-right:.5rem}.rf-mx-4{margin-left:1rem;margin-right:1rem}.rf-mx-auto{margin-left:auto;margin-right:auto}.rf-my-1{margin-bottom:.25rem;margin-top:.25rem}.rf-my-12{margin-bottom:3rem;margin-top:3rem}.rf-my-4{margin-bottom:1rem;margin-top:1rem}.rf-my-auto{margin-bottom:auto;margin-top:auto}.rf-mb-1{margin-bottom:.25rem}.rf-mb-12{margin-bottom:3rem}.rf-mb-2{margin-bottom:.5rem}.rf-mb-3{margin-bottom:.75rem}.rf-mb-4{margin-bottom:1rem}.rf-mb-6{margin-bottom:1.5rem}.rf-mb-8{margin-bottom:2rem}.rf-ml-1{margin-left:.25rem}.rf-ml-2{margin-left:.5rem}.rf-ml-auto{margin-left:auto}.rf-mr-1{margin-right:.25rem}.rf-mr-2{margin-right:.5rem}.rf-mt-0{margin-top:0}.rf-mt-0\\.5{margin-top:.125rem}.rf-mt-1{margin-top:.25rem}.rf-mt-2{margin-top:.5rem}.rf-mt-3{margin-top:.75rem}.rf-mt-4{margin-top:1rem}.rf-mt-5{margin-top:1.25rem}.rf-mt-auto{margin-top:auto}.rf-block{display:block}.rf-inline-block{display:inline-block}.rf-inline{display:inline}.rf-flex{display:flex}.rf-inline-flex{display:inline-flex}.rf-grid{display:grid}.rf-hidden{display:none}.rf-aspect-square{aspect-ratio:1/1}.rf-aspect-video{aspect-ratio:16/9}.rf-size-14{height:3.5rem;width:3.5rem}.rf-size-4{height:1rem;width:1rem}.\\!rf-h-2{height:.5rem!important}.\\!rf-h-2\\.5{height:.625rem!important}.\\!rf-h-3{height:.75rem!important}.\\!rf-h-full{height:100%!important}.rf-h-1{height:.25rem}.rf-h-10{height:2.5rem}.rf-h-12{height:3rem}.rf-h-2{height:.5rem}.rf-h-2\\.5{height:.625rem}.rf-h-3{height:.75rem}.rf-h-3\\.5{height:.875rem}.rf-h-4{height:1rem}.rf-h-5{height:1.25rem}.rf-h-6{height:1.5rem}.rf-h-60{height:15rem}.rf-h-64{height:16rem}.rf-h-8{height:2rem}.rf-h-9{height:2.25rem}.rf-h-\\[400px\\]{height:400px}.rf-h-\\[calc\\(100vh-52px\\)\\]{height:calc(100vh - 52px)}.rf-h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.rf-h-auto{height:auto}.rf-h-fit{height:-moz-fit-content;height:fit-content}.rf-h-full{height:100%}.rf-h-px{height:1px}.rf-h-screen{height:100vh}.\\!rf-max-h-\\[40vh\\]{max-height:40vh!important}.rf-max-h-32{max-height:8rem}.rf-max-h-96{max-height:24rem}.rf-max-h-\\[300px\\]{max-height:300px}.rf-max-h-\\[500px\\]{max-height:500px}.rf-max-h-\\[90vh\\]{max-height:90vh}.rf-max-h-full{max-height:100%}.rf-min-h-0{min-height:0}.rf-min-h-\\[200px\\]{min-height:200px}.rf-min-h-\\[300px\\]{min-height:300px}.rf-min-h-\\[620px\\]{min-height:620px}.rf-min-h-\\[calc\\(100vh-240px\\)\\]{min-height:calc(100vh - 240px)}.\\!rf-w-2{width:.5rem!important}.\\!rf-w-2\\.5{width:.625rem!important}.rf-w-1{width:.25rem}.rf-w-1\\/2{width:50%}.rf-w-11{width:2.75rem}.rf-w-11\\/12{width:91.666667%}.rf-w-12{width:3rem}.rf-w-16{width:4rem}.rf-w-2{width:.5rem}.rf-w-2\\.5{width:.625rem}.rf-w-20{width:5rem}.rf-w-28{width:7rem}.rf-w-3{width:.75rem}.rf-w-3\\.5{width:.875rem}.rf-w-32{width:8rem}.rf-w-4{width:1rem}.rf-w-48{width:12rem}.rf-w-5{width:1.25rem}.rf-w-6{width:1.5rem}.rf-w-64{width:16rem}.rf-w-72{width:18rem}.rf-w-8{width:2rem}.rf-w-9{width:2.25rem}.rf-w-96{width:24rem}.rf-w-\\[95\\%\\]{width:95%}.rf-w-fit{width:-moz-fit-content;width:fit-content}.rf-w-full{width:100%}.rf-w-screen{width:100vw}.rf-min-w-0{min-width:0}.rf-min-w-10{min-width:2.5rem}.rf-min-w-16{min-width:4rem}.rf-min-w-\\[148px\\]{min-width:148px}.rf-min-w-\\[8rem\\]{min-width:8rem}.rf-min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.\\!rf-max-w-\\[660px\\]{max-width:660px!important}.rf-max-w-2xl{max-width:42rem}.rf-max-w-3xl{max-width:48rem}.rf-max-w-4xl{max-width:56rem}.rf-max-w-5xl{max-width:64rem}.rf-max-w-full{max-width:100%}.rf-max-w-lg{max-width:32rem}.rf-max-w-md{max-width:28rem}.rf-max-w-none{max-width:none}.rf-max-w-xl{max-width:36rem}.rf-flex-1{flex:1 1 0%}.rf-flex-shrink-0,.rf-shrink-0{flex-shrink:0}.rf-flex-grow{flex-grow:1}.rf-table-auto{table-layout:auto}.rf-origin-\\[--radix-popover-content-transform-origin\\]{transform-origin:var(--radix-popover-content-transform-origin)}.-rf-translate-x-1{--tw-translate-x:-0.25rem}.-rf-translate-x-1,.-rf-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rf-translate-x-1\\/2{--tw-translate-x:-50%}.-rf-translate-y-1{--tw-translate-y:-0.25rem}.-rf-translate-y-1,.rf--translate-x-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf--translate-x-1{--tw-translate-x:-0.25rem}.rf--translate-x-1\\/2{--tw-translate-x:-50%}.rf--translate-x-1\\/2,.rf--translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf--translate-y-1{--tw-translate-y:-0.25rem}.rf-translate-x-\\[-50\\%\\]{--tw-translate-x:-50%}.rf-translate-x-\\[-50\\%\\],.rf-translate-y-\\[-50\\%\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf-translate-y-\\[-50\\%\\]{--tw-translate-y:-50%}.rf-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes rf-pulse{50%{opacity:.5}}.rf-animate-pulse{animation:rf-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes rf-spin{to{transform:rotate(1turn)}}.rf-animate-spin{animation:rf-spin 1s linear infinite}.rf-cursor-default{cursor:default}.rf-cursor-not-allowed{cursor:not-allowed}.rf-cursor-pointer{cursor:pointer}.rf-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.rf-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.rf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.rf-flex-row{flex-direction:row}.rf-flex-col{flex-direction:column}.rf-flex-col-reverse{flex-direction:column-reverse}.rf-flex-wrap{flex-wrap:wrap}.rf-place-items-center{place-items:center}.rf-items-start{align-items:flex-start}.rf-items-end{align-items:flex-end}.rf-items-center{align-items:center}.rf-items-stretch{align-items:stretch}.rf-justify-end{justify-content:flex-end}.rf-justify-center{justify-content:center}.rf-justify-between{justify-content:space-between}.rf-gap-0{gap:0}.rf-gap-1{gap:.25rem}.rf-gap-2{gap:.5rem}.rf-gap-3{gap:.75rem}.rf-gap-4{gap:1rem}.rf-gap-5{gap:1.25rem}.rf-gap-6{gap:1.5rem}.rf-gap-8{gap:2rem}.rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.rf-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.rf-divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.rf-overflow-auto{overflow:auto}.rf-overflow-hidden{overflow:hidden}.rf-overflow-visible{overflow:visible}.rf-overflow-x-auto{overflow-x:auto}.\\!rf-overflow-y-auto{overflow-y:auto!important}.rf-overflow-y-auto{overflow-y:auto}.rf-overflow-x-hidden{overflow-x:hidden}.rf-overflow-x-clip{overflow-x:clip}.rf-truncate{overflow:hidden;text-overflow:ellipsis}.rf-truncate,.rf-whitespace-nowrap{white-space:nowrap}.rf-whitespace-pre-wrap{white-space:pre-wrap}.rf-break-words{overflow-wrap:break-word}.rf-rounded{border-radius:.25rem}.rf-rounded-2xl{border-radius:1rem}.rf-rounded-full{border-radius:9999px}.rf-rounded-lg{border-radius:var(--radius)}.rf-rounded-md{border-radius:calc(var(--radius) - 2px)}.rf-rounded-sm{border-radius:calc(var(--radius) - 4px)}.rf-rounded-xl{border-radius:.75rem}.rf-border{border-width:1px}.rf-border-2{border-width:2px}.rf-border-b{border-bottom-width:1px}.rf-border-t{border-top-width:1px}.rf-border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.rf-border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.rf-border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.rf-border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.rf-border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.rf-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.rf-border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.rf-border-input{border-color:hsl(var(--input))}.rf-border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.rf-border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.rf-border-primary{border-color:hsl(var(--primary))}.rf-border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.rf-border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.rf-border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.rf-border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity,1))}.rf-border-zinc-900{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity,1))}.rf-bg-background{background-color:hsl(var(--background))}.rf-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.rf-bg-black\\/80{background-color:rgba(0,0,0,.8)}.rf-bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.rf-bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.rf-bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.rf-bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.rf-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.rf-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.rf-bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.rf-bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.rf-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.rf-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.rf-bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.rf-bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.rf-bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.rf-bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.rf-bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.rf-bg-muted{background-color:hsl(var(--muted))}.rf-bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity,1))}.rf-bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.rf-bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.rf-bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity,1))}.rf-bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.rf-bg-popover{background-color:hsl(var(--popover))}.rf-bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.rf-bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.rf-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.rf-bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.rf-bg-transparent{background-color:transparent}.rf-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.rf-bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.rf-bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.rf-bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity,1))}.rf-bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.rf-bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.rf-bg-opacity-50{--tw-bg-opacity:0.5}.rf-fill-current{fill:currentColor}.rf-object-contain{-o-object-fit:contain;object-fit:contain}.rf-object-cover{-o-object-fit:cover;object-fit:cover}.\\!rf-p-0{padding:0!important}.rf-p-0{padding:0}.rf-p-1{padding:.25rem}.rf-p-2{padding:.5rem}.rf-p-3{padding:.75rem}.rf-p-4{padding:1rem}.rf-p-5{padding:1.25rem}.rf-p-6{padding:1.5rem}.rf-p-8{padding:2rem}.rf-px-1{padding-left:.25rem;padding-right:.25rem}.rf-px-2{padding-left:.5rem;padding-right:.5rem}.rf-px-3{padding-left:.75rem;padding-right:.75rem}.rf-px-4{padding-left:1rem;padding-right:1rem}.rf-px-6{padding-left:1.5rem;padding-right:1.5rem}.rf-px-8{padding-left:2rem;padding-right:2rem}.rf-py-0{padding-bottom:0;padding-top:0}.rf-py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}.rf-py-1{padding-bottom:.25rem;padding-top:.25rem}.rf-py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.rf-py-10{padding-bottom:2.5rem;padding-top:2.5rem}.rf-py-12{padding-bottom:3rem;padding-top:3rem}.rf-py-2{padding-bottom:.5rem;padding-top:.5rem}.rf-py-3{padding-bottom:.75rem;padding-top:.75rem}.rf-py-4{padding-bottom:1rem;padding-top:1rem}.rf-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.rf-py-8{padding-bottom:2rem;padding-top:2rem}.rf-pb-0{padding-bottom:0}.rf-pb-2{padding-bottom:.5rem}.rf-pb-3{padding-bottom:.75rem}.rf-pb-4{padding-bottom:1rem}.rf-pl-2{padding-left:.5rem}.rf-pl-4{padding-left:1rem}.rf-pl-8{padding-left:2rem}.rf-pr-2{padding-right:.5rem}.rf-pt-0{padding-top:0}.rf-pt-2{padding-top:.5rem}.rf-pt-4{padding-top:1rem}.rf-text-left{text-align:left}.rf-text-center{text-align:center}.rf-text-right{text-align:right}.rf-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.rf-text-2xl{font-size:1.5rem;line-height:2rem}.rf-text-3xl{font-size:1.875rem;line-height:2.25rem}.rf-text-\\[8px\\]{font-size:8px}.rf-text-base{font-size:1rem;line-height:1.5rem}.rf-text-lg{font-size:1.125rem;line-height:1.75rem}.rf-text-sm{font-size:.875rem;line-height:1.25rem}.rf-text-xl{font-size:1.25rem;line-height:1.75rem}.rf-text-xs{font-size:.75rem;line-height:1rem}.\\!rf-font-normal{font-weight:400!important}.rf-font-bold{font-weight:700}.rf-font-medium{font-weight:500}.rf-font-semibold{font-weight:600}.rf-uppercase{text-transform:uppercase}.rf-capitalize{text-transform:capitalize}.rf-tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.rf-leading-5{line-height:1.25rem}.rf-leading-none{line-height:1}.rf-leading-relaxed{line-height:1.625}.rf-leading-tight{line-height:1.25}.rf-tracking-wide{letter-spacing:.025em}.rf-tracking-widest{letter-spacing:.1em}.rf-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.rf-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.rf-text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.rf-text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.rf-text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.rf-text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.rf-text-current{color:currentColor}.rf-text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.rf-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.rf-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.rf-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.rf-text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.rf-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.rf-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.rf-text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.rf-text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.rf-text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.rf-text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.rf-text-muted-foreground{color:hsl(var(--muted-foreground))}.rf-text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.rf-text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.rf-text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity,1))}.rf-text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.rf-text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.rf-text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity,1))}.rf-text-popover-foreground{color:hsl(var(--popover-foreground))}.rf-text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.rf-text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.rf-text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.rf-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.rf-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.rf-text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.rf-text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.rf-text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.rf-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.rf-text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.rf-text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.rf-text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity,1))}.rf-text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity,1))}.rf-text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity,1))}.rf-text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.rf-text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.rf-text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.rf-text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.rf-underline{text-decoration-line:underline}.rf-line-through{text-decoration-line:line-through}.rf-underline-offset-4{text-underline-offset:4px}.rf-opacity-0{opacity:0}.rf-opacity-100{opacity:1}.rf-opacity-25{opacity:.25}.rf-opacity-30{opacity:.3}.rf-opacity-50{opacity:.5}.rf-opacity-60{opacity:.6}.rf-opacity-75{opacity:.75}.rf-shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.rf-shadow,.rf-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.rf-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.rf-shadow-md,.rf-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.rf-outline-none{outline:2px solid transparent;outline-offset:2px}.rf-ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.rf-ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.rf-ring-primary{--tw-ring-color:hsl(var(--primary))}.rf-ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.rf-ring-offset-white{--tw-ring-offset-color:#fff}.rf-transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-duration-200{transition-duration:.2s}.rf-ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.rf-slide-in-from-left-1{--tw-enter-translate-x:-0.25rem}.rf-slide-out-to-left-1{--tw-exit-translate-x:-0.25rem}.rf-duration-200{animation-duration:.2s}.rf-ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.file\\:rf-border-0::file-selector-button{border-width:0}.file\\:rf-bg-transparent::file-selector-button{background-color:transparent}.file\\:rf-text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\\:rf-font-medium::file-selector-button{font-weight:500}.placeholder\\:rf-text-zinc-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.placeholder\\:rf-text-zinc-500::placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.hover\\:rf-border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.hover\\:\\!rf-bg-transparent:hover{background-color:transparent!important}.hover\\:rf-bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.hover\\:rf-bg-red-500\\/90:hover{background-color:rgba(239,68,68,.9)}.hover\\:rf-bg-zinc-100:hover{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100\\/80:hover{background-color:hsla(240,5%,96%,.8)}.hover\\:rf-bg-zinc-900\\/90:hover{background-color:rgba(24,24,27,.9)}.hover\\:rf-text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.hover\\:rf-text-zinc-900:hover{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.hover\\:rf-underline:hover{text-decoration-line:underline}.focus\\:rf-bg-gray-100:focus{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.focus\\:rf-bg-zinc-100:focus{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.focus\\:rf-text-gray-900:focus{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.focus\\:rf-text-zinc-900:focus{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.focus\\:rf-outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:rf-ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:rf-ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\\:rf-ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\\:rf-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:rf-ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-zinc-950:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(9 9 11/var(--tw-ring-opacity,1))}.focus-visible\\:rf-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:rf-pointer-events-none:disabled{pointer-events:none}.disabled\\:rf-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:rf-opacity-50:disabled{opacity:.5}.rf-group\\/bar:hover .group-hover\\/bar\\:rf-opacity-100{opacity:1}.data-\\[disabled\\=true\\]\\:rf-pointer-events-none[data-disabled=true],.data-\\[disabled\\]\\:rf-pointer-events-none[data-disabled]{pointer-events:none}.data-\\[side\\=bottom\\]\\:rf-translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.data-\\[side\\=bottom\\]\\:rf-translate-y-1[data-side=bottom],.data-\\[side\\=left\\]\\:-rf-translate-x-1[data-side=left]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=left\\]\\:-rf-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.data-\\[side\\=right\\]\\:rf-translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.data-\\[side\\=right\\]\\:rf-translate-x-1[data-side=right],.data-\\[side\\=top\\]\\:-rf-translate-y-1[data-side=top]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=top\\]\\:-rf-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.data-\\[selected\\=true\\]\\:rf-bg-zinc-100[data-selected=true]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[state\\=active\\]\\:rf-bg-white[data-state=active]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.data-\\[state\\=checked\\]\\:rf-bg-zinc-900[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.data-\\[state\\=open\\]\\:rf-bg-zinc-100[data-state=open]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[selected\\=true\\]\\:rf-text-zinc-900[data-selected=true]{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.data-\\[state\\=active\\]\\:rf-text-zinc-950[data-state=active]{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.data-\\[state\\=checked\\]\\:rf-text-zinc-50[data-state=checked]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.data-\\[disabled\\=true\\]\\:rf-opacity-50[data-disabled=true],.data-\\[disabled\\]\\:rf-opacity-50[data-disabled]{opacity:.5}.data-\\[state\\=active\\]\\:rf-shadow[data-state=active]{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\\[state\\=open\\]\\:rf-animate-in[data-state=open]{animation-duration:.15s;animation-name:enter;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-animate-out[data-state=closed]{animation-duration:.15s;animation-name:exit;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\\[state\\=open\\]\\:rf-fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\\[state\\=closed\\]\\:rf-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\\[state\\=open\\]\\:rf-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\\[side\\=bottom\\]\\:rf-slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\\[side\\=left\\]\\:rf-slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\\[side\\=right\\]\\:rf-slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\\[side\\=top\\]\\:rf-slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.data-\\[state\\=closed\\]\\:rf-slide-out-to-left-1\\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\\[state\\=closed\\]\\:rf-slide-out-to-top-\\[48\\%\\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\\[state\\=open\\]\\:rf-slide-in-from-left-1\\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\\[state\\=open\\]\\:rf-slide-in-from-top-\\[48\\%\\][data-state=open]{--tw-enter-translate-y:-48%}.dark\\:rf-border-zinc-50:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity,1))}.dark\\:rf-border-zinc-800:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity,1))}.dark\\:rf-bg-red-900:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-50:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-950:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:rf-text-zinc-400:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-50:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-900:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.dark\\:rf-placeholder-zinc-400:is(.rf-dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(161 161 170/var(--tw-placeholder-opacity,1))}.dark\\:rf-placeholder-zinc-400:is(.rf-dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(161 161 170/var(--tw-placeholder-opacity,1))}.dark\\:rf-ring-offset-zinc-950:is(.rf-dark *){--tw-ring-offset-color:#09090b}.dark\\:placeholder\\:rf-text-zinc-400:is(.rf-dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:placeholder\\:rf-text-zinc-400:is(.rf-dark *)::placeholder{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:hover\\:rf-bg-red-900\\/90:hover:is(.rf-dark *){background-color:rgba(127,29,29,.9)}.dark\\:hover\\:rf-bg-zinc-50\\/90:hover:is(.rf-dark *){background-color:hsla(0,0%,98%,.9)}.dark\\:hover\\:rf-bg-zinc-800:hover:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:hover\\:rf-bg-zinc-800\\/80:hover:is(.rf-dark *){background-color:rgba(39,39,42,.8)}.dark\\:hover\\:rf-text-zinc-50:hover:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus\\:rf-bg-zinc-800:focus:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:focus\\:rf-text-zinc-50:focus:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus-visible\\:rf-ring-zinc-300:focus-visible:is(.rf-dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 216/var(--tw-ring-opacity,1))}.dark\\:data-\\[selected\\=true\\]\\:rf-bg-zinc-800[data-selected=true]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-bg-zinc-950[data-state=active]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=checked\\]\\:rf-bg-zinc-50[data-state=checked]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=open\\]\\:rf-bg-zinc-800[data-state=open]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[selected\\=true\\]\\:rf-text-zinc-50[data-selected=true]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-text-zinc-50[data-state=active]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:data-\\[state\\=checked\\]\\:rf-text-zinc-900[data-state=checked]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\\:rf-order-1{order:1}.sm\\:rf-order-2{order:2}.sm\\:rf-mt-0{margin-top:0}.sm\\:rf-inline{display:inline}.sm\\:rf-hidden{display:none}.sm\\:rf-w-auto{width:auto}.sm\\:rf-flex-row{flex-direction:row}.sm\\:rf-items-center{align-items:center}.sm\\:rf-justify-end{justify-content:flex-end}.sm\\:rf-gap-3{gap:.75rem}.sm\\:rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.sm\\:rf-rounded-lg{border-radius:var(--radius)}.sm\\:rf-px-4{padding-left:1rem;padding-right:1rem}.sm\\:rf-text-left{text-align:left}.sm\\:rf-text-sm{font-size:.875rem;line-height:1.25rem}.sm\\:rf-text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:768px){.md\\:rf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}.\\[\\&\\>span\\]\\:rf-line-clamp-1>span{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\\[\\&\\>svg\\]\\:rf-size-4>svg{height:1rem;width:1rem}.\\[\\&\\>svg\\]\\:rf-shrink-0>svg{flex-shrink:0}.\\[\\&\\>svg\\]\\:rf-text-red-300>svg{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.\\[\\&\\>svg\\]\\:hover\\:rf-text-red-400:hover>svg{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-py-1\\.5 [cmdk-group-heading]{padding-bottom:.375rem;padding-top:.375rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-font-medium [cmdk-group-heading]{font-weight:500}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-zinc-500 [cmdk-group-heading]{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.dark\\:\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-zinc-400 [cmdk-group-heading]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:rf-pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\\[\\&_\\[cmdk-group\\]\\]\\:rf-px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:rf-h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:rf-w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\\[\\&_\\[cmdk-input\\]\\]\\:rf-h-12 [cmdk-input]{height:3rem}.\\[\\&_\\[cmdk-item\\]\\]\\:rf-px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-item\\]\\]\\:rf-py-3 [cmdk-item]{padding-bottom:.75rem;padding-top:.75rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:rf-h-5 [cmdk-item] svg{height:1.25rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:rf-w-5 [cmdk-item] svg{width:1.25rem}.\\[\\&_svg\\]\\:rf-pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:rf-size-4 svg{height:1rem;width:1rem}.\\[\\&_svg\\]\\:rf-shrink-0 svg{flex-shrink:0}',$Xt=()=>{pt.useEffect(()=>{if(document.querySelector('style[data-styles="tscircuit-runframe"]'))return;const e=document.createElement("style");e.setAttribute("data-styles","tscircuit-runframe"),e.textContent=XXt,document.head.appendChild(e)},[])},e$t=r=>{pt.useEffect(()=>(r?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[r])},bHe=r=>`hsl(${ub.indexOf(r)*137.5%360}, 70%, 50%)`,t$t=({phaseTimings:r})=>{if(!r)return null;const e=Object.values(r).reduce((t,n)=>t+n,0);return ut.jsxs("div",{className:"rf-space-y-2 rf-w-full rf-px-4",children:[ut.jsx("div",{className:"rf-relative rf-h-8 rf-flex rf-rounded-sm",children:ub.map(t=>{const n=r[t]||0,i=n/e*100;return ut.jsx("div",{className:"rf-group/bar rf-relative rf-overflow-visible",style:{width:`${i}%`,backgroundColor:bHe(t)},children:ut.jsxs("div",{className:"rf-opacity-0 group-hover/bar:rf-opacity-100 rf-transition-opacity rf-absolute rf-bottom-full rf-left-1/2 rf-transform -rf-translate-x-1/2 rf-mb-2 rf-px-2 rf-py-1 rf-text-xs rf-whitespace-nowrap rf-rounded rf-bg-gray-900 rf-text-white rf-pointer-events-none",children:[t,": ",n.toFixed(1),"ms"]})},t)})}),ut.jsxs("div",{className:"rf-text-xs rf-text-gray-500",children:["Total: ",e.toFixed(2),"ms"]})]})},n$t=({renderLog:r})=>{const[e,t]=pt.useState("chronological");if(!r)return ut.jsx("div",{className:"rf-p-4 rf-bg-gray-100 rf-rounded-md",children:"No render log, make sure this tab is open when you render (TODO add a rerender button here)"});const n=Object.entries((r==null?void 0:r.phaseTimings)??{});e==="chronological"?n.sort((o,a)=>ub.indexOf(o[0])-ub.indexOf(a[0])):n.sort((o,a)=>a[1]-o[1]);const i=n.reduce((o,[a,s])=>o+s,0);return ut.jsxs("div",{className:"rf-bg-white",children:[ut.jsxs("div",{className:"rf-flex rf-justify-between rf-items-center",children:[ut.jsx("div",{children:"Render Logs"}),ut.jsxs("div",{className:"rf-mb-4 rf-pr-2 rf-flex rf-text-xs rf-items-center",children:[ut.jsx("div",{className:"rf-mr-2",children:"Sort by:"}),ut.jsxs("select",{value:e,onChange:o=>t(o.target.value),className:"rf-px-2 rf-py-1 rf-border rf-rounded rf-text-xs",children:[ut.jsx("option",{value:"chronological",children:"Phase Order"}),ut.jsx("option",{value:"longest",children:"Duration"})]})]})]}),ut.jsx(t$t,{phaseTimings:r.phaseTimings}),ut.jsxs("table",{className:"rf-w-full rf-text-xs",children:[ut.jsx("thead",{children:ut.jsxs("tr",{children:[ut.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase Order"}),ut.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase"}),ut.jsx("th",{className:"rf-text-left rf-p-2",children:"Duration (ms)"})]})}),ut.jsx("tbody",{children:n.map(([o,a])=>ut.jsxs("tr",{children:[ut.jsx("td",{className:"rf-p-2",children:ub.indexOf(o)}),ut.jsx("td",{className:"rf-p-2",children:o}),ut.jsx("td",{className:"rf-p-2",children:ut.jsx("div",{className:"rf-w-8",children:ut.jsx("div",{className:"rf-h-2 rf-rounded-sm",style:{backgroundColor:bHe(o),width:`${a/i*100}%`}})})}),ut.jsx("td",{className:"rf-p-2",children:ut.jsxs("div",{className:"rf-flex w-full",children:[ut.jsxs("span",{className:"rf-flex-grow",children:[a,"ms"]}),ut.jsxs("span",{className:"rf-text-gray-500 rf-pr-2",children:[(a/i*100).toFixed(1),"%"]})]})})]},o))})]})]})},r$t=({errorMessage:r,errorStack:e,circuitJsonErrors:t})=>{pt.useEffect(()=>{if(r){const n=new Error(r);e&&(n.stack=e);try{GP.captureException(n)}catch{}}},[r,e]),pt.useEffect(()=>{if(t&&t.length>0)for(const n of t){const i=new Error(n.message||"Circuit JSON Error");n.stack&&(i.stack=n.stack);try{GP.captureException(i,{error_type:n.type})}catch{}}},[t])},i$t="0.0.724",Yue={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},Vue=new Map,DO=r=>{const e=Vue.get(r);return e?Object.fromEntries(Object.entries(e.stores).map(([t,n])=>[t,n.getState()])):{}},o$t=(r,e,t)=>{if(r===void 0)return{type:"untracked",connection:e.connect(t)};const n=Vue.get(t.name);if(n)return{type:"tracked",store:r,...n};const i={connection:e.connect(t),stores:{}};return Vue.set(t.name,i),{type:"tracked",store:r,...i}},a$t=(r,e={})=>(t,n,i)=>{const{enabled:o,anonymousActionType:a,store:s,...l}=e;let c;try{c=(o??(Yue?"production":void 0)!=="production")&&window.__REDUX_DEVTOOLS_EXTENSION__}catch{}if(!c)return(Yue?"production":void 0)!=="production"&&o&&console.warn("[zustand devtools middleware] Please install/enable Redux devtools extension"),r(t,n,i);const{connection:u,...A}=o$t(s,c,l);let d=!0;i.setState=(C,E,_)=>{const x=t(C,E);if(!d)return x;const w=_===void 0?{type:a||"anonymous"}:typeof _=="string"?{type:_}:_;return s===void 0?(u==null||u.send(w,n()),x):(u==null||u.send({...w,type:`${s}/${w.type}`},{...DO(l.name),[s]:i.getState()}),x)};const f=(...C)=>{const E=d;d=!1,t(...C),d=E},m=r(i.setState,n,i);if(A.type==="untracked"?u==null||u.init(m):(A.stores[A.store]=i,u==null||u.init(Object.fromEntries(Object.entries(A.stores).map(([C,E])=>[C,C===A.store?m:E.getState()])))),i.dispatchFromDevtools&&typeof i.dispatch=="function"){let C=!1;const E=i.dispatch;i.dispatch=(..._)=>{(Yue?"production":void 0)!=="production"&&_[0].type==="__setState"&&!C&&(console.warn('[zustand devtools middleware] "__setState" action type is reserved to set state from the devtools. Avoid using it.'),C=!0),E(..._)}}return u.subscribe(C=>{var E;switch(C.type){case"ACTION":if(typeof C.payload!="string"){console.error("[zustand devtools middleware] Unsupported action format");return}return Kue(C.payload,_=>{if(_.type==="__setState"){if(s===void 0){f(_.state);return}Object.keys(_.state).length!==1&&console.error(`
13481
+ `,onClick:n=>{n.stopPropagation(),t()},children:[ut.jsx("input",{type:"checkbox",checked:e}),ut.jsx("span",{style:{color:"#eee"},children:r})]}),jXt=({children:r,elements:e})=>{const[t,n]=O1(K=>[K.is_mouse_over_container,K.setIsMouseOverContainer]),[i,o]=pt.useState(!1),[a,s]=pt.useState(!1),[l,c]=pt.useState(!1),[u,A]=O1(K=>[K.selected_layer,K.selectLayer]),[d,f,m,C,E,_]=O1(K=>[K.in_move_footprint_mode,K.in_draw_trace_mode,K.is_showing_rats_nest,K.is_showing_multiple_traces_length,K.is_showing_autorouting,K.is_showing_drc_errors]),x=O1(K=>K.setEditMode),w=O1(K=>K.setIsShowingRatsNest),P=O1(K=>K.setIsShowingMultipleTracesLength),L=O1(K=>K.setIsShowingAutorouting),O=O1(K=>K.setIsShowingDrcErrors);s2("1",()=>A("top")),s2("2",()=>A("bottom")),s2("3",()=>A("inner1")),s2("4",()=>A("inner2")),s2("5",()=>A("inner3")),s2("6",()=>A("inner4")),s2("7",()=>A("inner5")),s2("8",()=>A("inner6"));const H=(e==null?void 0:e.filter(K=>K.type.includes("error")).length)??0;return ut.jsxs("div",{style:{position:"relative"},onMouseEnter:()=>{n(!0)},onMouseLeave:K=>{n(!1),s(!1)},children:[r,ut.jsxs("div",{style:{position:"absolute",bottom:4,right:8,pointerEvents:"none",color:"white",fontSize:11,opacity:t?.5:0,transition:"opacity 1s",transitionDelay:"2s",fontFamily:"sans-serif"},children:["@tscircuit/pcb-viewer@",VXt.version]}),ut.jsxs("div",{style:{position:"absolute",opacity:t?1:0,top:16,left:16,transition:t?"opacity 100ms linear":"opacity 1s linear",zIndex:hx.toolbarOverlay,color:"red",display:"flex",fontSize:12,height:100,fontFamily:"sans-serif"},children:[ut.jsxs(qR,{onClick:()=>{s(!a)},onMouseLeave:()=>{a&&s(!1)},children:[ut.jsxs("div",{children:["layer:"," ",ut.jsx("span",{style:{marginLeft:2,fontWeight:500,color:WR[u]},children:u})]}),a&&ut.jsx("div",{style:{marginTop:4,minWidth:120},children:Uue.map(K=>K.replace(/-/g,"")).map(K=>ut.jsx(KXt,{name:K,selected:K===u,onClick:()=>{A(K.replace(/-/,""))}},K))})]}),ut.jsxs(qR,{style:H>0?{color:"red"}:{},onClick:()=>c(!l),onMouseLeave:()=>c(!1),children:[ut.jsxs("div",{children:[H," errors"]}),l&&ut.jsx("div",{style:{display:"grid",gridTemplateColumns:"100px 300px"},children:e==null?void 0:e.filter(K=>K.type.includes("error")).map((K,q)=>ut.jsxs(pt.Fragment,{children:[ut.jsx("div",{children:K.error_type}),ut.jsx("div",{children:K.message})]},q))})]}),ut.jsx(qR,{style:{},onClick:()=>{x(f?"off":"draw_trace")},children:ut.jsxs("div",{children:[f?"✖ ":"","Edit Traces"]})}),ut.jsx(qR,{style:{},onClick:()=>{x(d?"off":"move_footprint")},children:ut.jsxs("div",{children:[d?"✖ ":"","Move Components"]})}),ut.jsx(qR,{style:{},onClick:()=>{w(!m)},children:ut.jsxs("div",{children:[m?"✖ ":"","Rats Nest"]})}),ut.jsx(qR,{onClick:()=>{o(!i)},children:ut.jsxs("div",{children:[ut.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"4px"},children:["View"," ",ut.jsx("span",{style:{fontSize:"8px",transform:i?"rotate(180deg)":"rotate(0)",transition:"transform 0.1s ease",display:"inline-block"},children:"▼"})]}),i&&ut.jsxs("div",{style:{marginTop:4,minWidth:120},children:[ut.jsx(Hue,{label:"Show All Trace Lengths",checked:C,onClick:()=>{P(!C)}}),ut.jsx(Hue,{label:"Show Autorouting Animation",checked:E,onClick:()=>{L(!E)}}),ut.jsx(Hue,{label:"Show DRC Errors",checked:_,onClick:()=>{O(!_)}})]})]})})]})]})},JXt=r=>{const{transform:e,elements:t}=r,[n,i]=pt.useMemo(()=>{const c=r.elements.flatMap(A=>oXt(A,r.elements)),u=Tw(r.elements);return[c,u]},[r.elements]),[o,a]=pt.useState({drawingObjectIdsWithMouseOver:new Set,primitiveIdsInMousedOverNet:[]}),s=pt.useMemo(()=>rXt({primitivesWithoutInteractionMetadata:n,drawingObjectIdsWithMouseOver:o.drawingObjectIdsWithMouseOver,primitiveIdsInMousedOverNet:o.primitiveIdsInMousedOverNet}),[n,o]),l=pt.useCallback(c=>{var d,f;const u=[];for(const m of c)if(m._element){const C=i.getNetConnectedToId("pcb_port_id"in m._element?(d=m._element)==null?void 0:d.pcb_port_id:"pcb_trace_id"in m._element?(f=m._element)==null?void 0:f.pcb_trace_id:"");u.push(...i.getIdsConnectedToNet(C))}const A=new Set(c.map(m=>m._pcb_drawing_object_id));a({drawingObjectIdsWithMouseOver:A,primitiveIdsInMousedOverNet:u})},[i]);return ut.jsx(HXt,{elements:t,transform:e,primitives:n,onMouseHoverOverPrimitives:l,children:ut.jsx(bXt,{disabled:!r.allowEditing,transform:e,soup:t,cancelPanDrag:r.cancelPanDrag,onCreateEditEvent:r.onCreateEditEvent,onModifyEditEvent:r.onModifyEditEvent,children:ut.jsx(MXt,{disabled:!r.allowEditing,transform:e,soup:t,cancelPanDrag:r.cancelPanDrag,onCreateEditEvent:r.onCreateEditEvent,onModifyEditEvent:r.onModifyEditEvent,children:ut.jsx(xXt,{transform:e,focusOnHover:r.focusOnHover,children:ut.jsx(jXt,{elements:t,children:ut.jsx(NXt,{transform:e,elements:t,children:ut.jsx(YXt,{transform:e,soup:t,children:ut.jsx(EXt,{transform:e,debugGraphics:r.debugGraphics,children:ut.jsx(_Xt,{transform:e,elements:t,children:ut.jsx(CXt,{transform:e,primitives:s,width:r.width,height:r.height,grid:r.grid})})})})})})})})})})},WXt=Ku($d(400,300),oE(40,-40)),qXt=({circuitJson:r,debugGraphics:e,height:t=600,initialState:n,allowEditing:i=!0,editEvents:o,onEditEventsChanged:a,focusOnHover:s=!1,clickToInteractEnabled:l=!1})=>{const[c,u]=pt.useState(!l),[A,d]=Oue(),[f,m]=pt.useState(WXt),{ref:C,setTransform:E,cancelDrag:_}=nXt({transform:f,onSetTransform:m,enabled:c});let[x,w]=pt.useState([]);x=o??x;const P=pt.useRef(!1),L=pt.useRef(null),O=`${(r==null?void 0:r.length)||0}_${(r==null?void 0:r.editCount)||0}`,H=()=>{const ie=(d==null?void 0:d.width)>0?d:{width:500,height:500},{center:de,width:Ce,height:xe}=q.some(ve=>ve.type.startsWith("pcb_"))?KZt(q.filter(ve=>ve.type.startsWith("pcb_"))):{center:{x:0,y:0},width:.001,height:.001},fe=Math.min((ie.width??0)/Ce,(ie.height??0)/xe,100)*.75,Ie=Ku($d((ie.width??0)/2,(ie.height??0)/2),oE(fe,-fe,0,0),$d(-de.x,-de.y));E(Ie)};pt.useEffect(()=>{d!=null&&d.width&&r&&r.length!==0&&(P.current||(H(),P.current=!0))},[r,d]);const K=pt.useMemo(()=>(r==null?void 0:r.filter(ie=>ie.type.startsWith("pcb_")||ie.type.startsWith("source_")))??[],[O]),q=pt.useMemo(()=>oJt({circuitJson:K,editEvents:x}),[K,x]),Y=ie=>{w([...x,ie]),a==null||a([...x,ie])},se=ie=>{const de=x.map(Ce=>Ce.edit_event_id===ie.edit_event_id?{...Ce,...ie}:Ce);w(de),a==null||a(de)};return ut.jsxs("div",{ref:C,style:{position:"relative"},children:[ut.jsx("div",{ref:A,children:ut.jsxs(JZt,{initialState:n,children:[ut.jsx(JXt,{transform:f,height:t,width:d.width,allowEditing:i,focusOnHover:s,cancelPanDrag:_,onCreateEditEvent:Y,onModifyEditEvent:se,grid:{spacing:1,view_window:{left:0,right:d.width||500,top:t,bottom:0}},elements:q,debugGraphics:e},d.width),ut.jsx(qZt,{})]})}),l&&!c&&ut.jsx("div",{onClick:()=>{u(!0),H()},onTouchStart:ie=>{const de=ie.touches[0];L.current={x:de.clientX,y:de.clientY}},onTouchEnd:ie=>{const de=ie.changedTouches[0],Ce=L.current;if(!Ce)return;const xe=Math.abs(de.clientX-Ce.x),fe=Math.abs(de.clientY-Ce.y);xe<10&&fe<10&&(ie.preventDefault(),u(!0),H()),L.current=null},style:{position:"absolute",inset:0,cursor:"pointer",zIndex:hx.clickToInteractOverlay,display:"flex",alignItems:"center",justifyContent:"center",touchAction:"pan-x pan-y pinch-zoom"},children:ut.jsx("div",{style:{backgroundColor:"rgba(0, 0, 0, 0.8)",color:"white",padding:"12px 24px",borderRadius:"8px",fontSize:"16px",pointerEvents:"none"},children:typeof window<"u"&&("ontouchstart"in window||navigator.maxTouchPoints>0)?"Touch to Interact":"Click to Interact"})})]})};const ZXt=({containerClassName:r,...e})=>{const t=pt.useRef(null),[n,i]=pt.useState(620);return pt.useLayoutEffect(()=>{const o=()=>{if(t.current){const s=t.current.clientHeight,l=window.innerHeight;i(Math.min(Math.max(s,620),l))}};o();const a=new ResizeObserver(o);return t.current&&a.observe(t.current),window.addEventListener("resize",o),()=>{a.disconnect(),window.removeEventListener("resize",o)}},[]),ut.jsx("div",{ref:t,className:r||"rf-w-full rf-h-full",children:ut.jsx(qXt,{...e,height:n})})},XXt='*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:root{--radius:0.5rem}.rf-pointer-events-none{pointer-events:none}.rf-invisible{visibility:hidden}.rf-fixed{position:fixed}.rf-absolute{position:absolute}.rf-relative{position:relative}.rf-inset-0{inset:0}.-rf-left-2{left:-.5rem}.-rf-right-10{right:-2.5rem}.-rf-right-2{right:-.5rem}.-rf-right-4{right:-1rem}.-rf-right-6{right:-1.5rem}.-rf-right-7{right:-1.75rem}.-rf-right-8{right:-2rem}.-rf-right-9{right:-2.25rem}.rf-bottom-full{bottom:100%}.rf-left-0{left:0}.rf-left-1{left:.25rem}.rf-left-1\\/2{left:50%}.rf-left-2{left:.5rem}.rf-left-\\[50\\%\\]{left:50%}.rf-right-0{right:0}.rf-right-1{right:.25rem}.rf-right-4{right:1rem}.rf-right-\\[4px\\]{right:4px}.rf-top-0{top:0}.rf-top-1{top:.25rem}.rf-top-2{top:.5rem}.rf-top-2\\.5{top:.625rem}.rf-top-\\[50\\%\\]{top:50%}.rf-top-\\[6px\\]{top:6px}.\\!rf-z-\\[101\\]{z-index:101!important}.rf-z-10{z-index:10}.rf-z-50{z-index:50}.rf-z-\\[100\\]{z-index:100}.rf-order-1{order:1}.rf-order-2{order:2}.rf-order-3{order:3}.rf-m-1{margin:.25rem}.rf-m-6{margin:1.5rem}.-rf-mx-1,.rf--mx-1{margin-left:-.25rem;margin-right:-.25rem}.rf-mx-1{margin-left:.25rem;margin-right:.25rem}.rf-mx-2{margin-left:.5rem;margin-right:.5rem}.rf-mx-4{margin-left:1rem;margin-right:1rem}.rf-mx-auto{margin-left:auto;margin-right:auto}.rf-my-1{margin-bottom:.25rem;margin-top:.25rem}.rf-my-12{margin-bottom:3rem;margin-top:3rem}.rf-my-4{margin-bottom:1rem;margin-top:1rem}.rf-my-auto{margin-bottom:auto;margin-top:auto}.rf-mb-1{margin-bottom:.25rem}.rf-mb-12{margin-bottom:3rem}.rf-mb-2{margin-bottom:.5rem}.rf-mb-3{margin-bottom:.75rem}.rf-mb-4{margin-bottom:1rem}.rf-mb-6{margin-bottom:1.5rem}.rf-mb-8{margin-bottom:2rem}.rf-ml-1{margin-left:.25rem}.rf-ml-2{margin-left:.5rem}.rf-ml-auto{margin-left:auto}.rf-mr-1{margin-right:.25rem}.rf-mr-2{margin-right:.5rem}.rf-mt-0{margin-top:0}.rf-mt-0\\.5{margin-top:.125rem}.rf-mt-1{margin-top:.25rem}.rf-mt-2{margin-top:.5rem}.rf-mt-3{margin-top:.75rem}.rf-mt-4{margin-top:1rem}.rf-mt-5{margin-top:1.25rem}.rf-mt-auto{margin-top:auto}.rf-block{display:block}.rf-inline-block{display:inline-block}.rf-inline{display:inline}.rf-flex{display:flex}.rf-inline-flex{display:inline-flex}.rf-grid{display:grid}.rf-hidden{display:none}.rf-aspect-square{aspect-ratio:1/1}.rf-aspect-video{aspect-ratio:16/9}.rf-size-14{height:3.5rem;width:3.5rem}.rf-size-4{height:1rem;width:1rem}.\\!rf-h-2{height:.5rem!important}.\\!rf-h-2\\.5{height:.625rem!important}.\\!rf-h-3{height:.75rem!important}.\\!rf-h-full{height:100%!important}.rf-h-1{height:.25rem}.rf-h-10{height:2.5rem}.rf-h-12{height:3rem}.rf-h-2{height:.5rem}.rf-h-2\\.5{height:.625rem}.rf-h-3{height:.75rem}.rf-h-3\\.5{height:.875rem}.rf-h-4{height:1rem}.rf-h-5{height:1.25rem}.rf-h-6{height:1.5rem}.rf-h-60{height:15rem}.rf-h-64{height:16rem}.rf-h-8{height:2rem}.rf-h-9{height:2.25rem}.rf-h-\\[400px\\]{height:400px}.rf-h-\\[calc\\(100vh-52px\\)\\]{height:calc(100vh - 52px)}.rf-h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.rf-h-auto{height:auto}.rf-h-fit{height:-moz-fit-content;height:fit-content}.rf-h-full{height:100%}.rf-h-px{height:1px}.rf-h-screen{height:100vh}.\\!rf-max-h-\\[40vh\\]{max-height:40vh!important}.rf-max-h-32{max-height:8rem}.rf-max-h-96{max-height:24rem}.rf-max-h-\\[300px\\]{max-height:300px}.rf-max-h-\\[500px\\]{max-height:500px}.rf-max-h-\\[90vh\\]{max-height:90vh}.rf-max-h-full{max-height:100%}.rf-min-h-0{min-height:0}.rf-min-h-\\[200px\\]{min-height:200px}.rf-min-h-\\[300px\\]{min-height:300px}.rf-min-h-\\[620px\\]{min-height:620px}.rf-min-h-\\[calc\\(100vh-240px\\)\\]{min-height:calc(100vh - 240px)}.\\!rf-w-2{width:.5rem!important}.\\!rf-w-2\\.5{width:.625rem!important}.rf-w-1{width:.25rem}.rf-w-1\\/2{width:50%}.rf-w-11{width:2.75rem}.rf-w-11\\/12{width:91.666667%}.rf-w-12{width:3rem}.rf-w-16{width:4rem}.rf-w-2{width:.5rem}.rf-w-2\\.5{width:.625rem}.rf-w-20{width:5rem}.rf-w-28{width:7rem}.rf-w-3{width:.75rem}.rf-w-3\\.5{width:.875rem}.rf-w-32{width:8rem}.rf-w-4{width:1rem}.rf-w-48{width:12rem}.rf-w-5{width:1.25rem}.rf-w-6{width:1.5rem}.rf-w-64{width:16rem}.rf-w-72{width:18rem}.rf-w-8{width:2rem}.rf-w-9{width:2.25rem}.rf-w-96{width:24rem}.rf-w-\\[95\\%\\]{width:95%}.rf-w-fit{width:-moz-fit-content;width:fit-content}.rf-w-full{width:100%}.rf-w-screen{width:100vw}.rf-min-w-0{min-width:0}.rf-min-w-10{min-width:2.5rem}.rf-min-w-16{min-width:4rem}.rf-min-w-\\[148px\\]{min-width:148px}.rf-min-w-\\[8rem\\]{min-width:8rem}.rf-min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.\\!rf-max-w-\\[660px\\]{max-width:660px!important}.rf-max-w-2xl{max-width:42rem}.rf-max-w-3xl{max-width:48rem}.rf-max-w-4xl{max-width:56rem}.rf-max-w-5xl{max-width:64rem}.rf-max-w-full{max-width:100%}.rf-max-w-lg{max-width:32rem}.rf-max-w-md{max-width:28rem}.rf-max-w-none{max-width:none}.rf-max-w-xl{max-width:36rem}.rf-flex-1{flex:1 1 0%}.rf-flex-shrink-0,.rf-shrink-0{flex-shrink:0}.rf-flex-grow{flex-grow:1}.rf-table-auto{table-layout:auto}.rf-origin-\\[--radix-popover-content-transform-origin\\]{transform-origin:var(--radix-popover-content-transform-origin)}.-rf-translate-x-1{--tw-translate-x:-0.25rem}.-rf-translate-x-1,.-rf-translate-x-1\\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rf-translate-x-1\\/2{--tw-translate-x:-50%}.-rf-translate-y-1{--tw-translate-y:-0.25rem}.-rf-translate-y-1,.rf--translate-x-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf--translate-x-1{--tw-translate-x:-0.25rem}.rf--translate-x-1\\/2{--tw-translate-x:-50%}.rf--translate-x-1\\/2,.rf--translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf--translate-y-1{--tw-translate-y:-0.25rem}.rf-translate-x-\\[-50\\%\\]{--tw-translate-x:-50%}.rf-translate-x-\\[-50\\%\\],.rf-translate-y-\\[-50\\%\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rf-translate-y-\\[-50\\%\\]{--tw-translate-y:-50%}.rf-transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes rf-pulse{50%{opacity:.5}}.rf-animate-pulse{animation:rf-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes rf-spin{to{transform:rotate(1turn)}}.rf-animate-spin{animation:rf-spin 1s linear infinite}.rf-cursor-default{cursor:default}.rf-cursor-not-allowed{cursor:not-allowed}.rf-cursor-pointer{cursor:pointer}.rf-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.rf-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.rf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.rf-flex-row{flex-direction:row}.rf-flex-col{flex-direction:column}.rf-flex-col-reverse{flex-direction:column-reverse}.rf-flex-wrap{flex-wrap:wrap}.rf-place-items-center{place-items:center}.rf-items-start{align-items:flex-start}.rf-items-end{align-items:flex-end}.rf-items-center{align-items:center}.rf-items-stretch{align-items:stretch}.rf-justify-end{justify-content:flex-end}.rf-justify-center{justify-content:center}.rf-justify-between{justify-content:space-between}.rf-gap-0{gap:0}.rf-gap-1{gap:.25rem}.rf-gap-2{gap:.5rem}.rf-gap-3{gap:.75rem}.rf-gap-4{gap:1rem}.rf-gap-5{gap:1.25rem}.rf-gap-6{gap:1.5rem}.rf-gap-8{gap:2rem}.rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.rf-space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.rf-space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.rf-divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.rf-overflow-auto{overflow:auto}.rf-overflow-hidden{overflow:hidden}.rf-overflow-visible{overflow:visible}.rf-overflow-x-auto{overflow-x:auto}.\\!rf-overflow-y-auto{overflow-y:auto!important}.rf-overflow-y-auto{overflow-y:auto}.rf-overflow-x-hidden{overflow-x:hidden}.rf-overflow-x-clip{overflow-x:clip}.rf-truncate{overflow:hidden;text-overflow:ellipsis}.rf-truncate,.rf-whitespace-nowrap{white-space:nowrap}.rf-whitespace-pre-wrap{white-space:pre-wrap}.rf-break-words{overflow-wrap:break-word}.rf-rounded{border-radius:.25rem}.rf-rounded-2xl{border-radius:1rem}.rf-rounded-full{border-radius:9999px}.rf-rounded-lg{border-radius:var(--radius)}.rf-rounded-md{border-radius:calc(var(--radius) - 2px)}.rf-rounded-sm{border-radius:calc(var(--radius) - 4px)}.rf-rounded-xl{border-radius:.75rem}.rf-border{border-width:1px}.rf-border-2{border-width:2px}.rf-border-b{border-bottom-width:1px}.rf-border-t{border-top-width:1px}.rf-border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.rf-border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.rf-border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.rf-border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.rf-border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.rf-border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.rf-border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.rf-border-input{border-color:hsl(var(--input))}.rf-border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.rf-border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.rf-border-primary{border-color:hsl(var(--primary))}.rf-border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.rf-border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.rf-border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.rf-border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity,1))}.rf-border-zinc-900{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity,1))}.rf-bg-background{background-color:hsl(var(--background))}.rf-bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.rf-bg-black\\/80{background-color:rgba(0,0,0,.8)}.rf-bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.rf-bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.rf-bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.rf-bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.rf-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.rf-bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.rf-bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.rf-bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.rf-bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.rf-bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.rf-bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.rf-bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.rf-bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.rf-bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.rf-bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.rf-bg-muted{background-color:hsl(var(--muted))}.rf-bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity,1))}.rf-bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.rf-bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.rf-bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity,1))}.rf-bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.rf-bg-popover{background-color:hsl(var(--popover))}.rf-bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.rf-bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.rf-bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.rf-bg-red-900{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.rf-bg-transparent{background-color:transparent}.rf-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.rf-bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.rf-bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.rf-bg-zinc-200{--tw-bg-opacity:1;background-color:rgb(228 228 231/var(--tw-bg-opacity,1))}.rf-bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.rf-bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.rf-bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.rf-bg-opacity-50{--tw-bg-opacity:0.5}.rf-fill-current{fill:currentColor}.rf-object-contain{-o-object-fit:contain;object-fit:contain}.rf-object-cover{-o-object-fit:cover;object-fit:cover}.\\!rf-p-0{padding:0!important}.rf-p-0{padding:0}.rf-p-1{padding:.25rem}.rf-p-2{padding:.5rem}.rf-p-3{padding:.75rem}.rf-p-4{padding:1rem}.rf-p-5{padding:1.25rem}.rf-p-6{padding:1.5rem}.rf-p-8{padding:2rem}.rf-px-1{padding-left:.25rem;padding-right:.25rem}.rf-px-2{padding-left:.5rem;padding-right:.5rem}.rf-px-3{padding-left:.75rem;padding-right:.75rem}.rf-px-4{padding-left:1rem;padding-right:1rem}.rf-px-6{padding-left:1.5rem;padding-right:1.5rem}.rf-px-8{padding-left:2rem;padding-right:2rem}.rf-py-0{padding-bottom:0;padding-top:0}.rf-py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}.rf-py-1{padding-bottom:.25rem;padding-top:.25rem}.rf-py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.rf-py-10{padding-bottom:2.5rem;padding-top:2.5rem}.rf-py-12{padding-bottom:3rem;padding-top:3rem}.rf-py-2{padding-bottom:.5rem;padding-top:.5rem}.rf-py-3{padding-bottom:.75rem;padding-top:.75rem}.rf-py-4{padding-bottom:1rem;padding-top:1rem}.rf-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.rf-py-8{padding-bottom:2rem;padding-top:2rem}.rf-pb-0{padding-bottom:0}.rf-pb-2{padding-bottom:.5rem}.rf-pb-3{padding-bottom:.75rem}.rf-pb-4{padding-bottom:1rem}.rf-pl-2{padding-left:.5rem}.rf-pl-4{padding-left:1rem}.rf-pl-8{padding-left:2rem}.rf-pr-2{padding-right:.5rem}.rf-pt-0{padding-top:0}.rf-pt-2{padding-top:.5rem}.rf-pt-4{padding-top:1rem}.rf-text-left{text-align:left}.rf-text-center{text-align:center}.rf-text-right{text-align:right}.rf-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.rf-text-2xl{font-size:1.5rem;line-height:2rem}.rf-text-3xl{font-size:1.875rem;line-height:2.25rem}.rf-text-\\[8px\\]{font-size:8px}.rf-text-base{font-size:1rem;line-height:1.5rem}.rf-text-lg{font-size:1.125rem;line-height:1.75rem}.rf-text-sm{font-size:.875rem;line-height:1.25rem}.rf-text-xl{font-size:1.25rem;line-height:1.75rem}.rf-text-xs{font-size:.75rem;line-height:1rem}.\\!rf-font-normal{font-weight:400!important}.rf-font-bold{font-weight:700}.rf-font-medium{font-weight:500}.rf-font-semibold{font-weight:600}.rf-uppercase{text-transform:uppercase}.rf-capitalize{text-transform:capitalize}.rf-tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.rf-leading-5{line-height:1.25rem}.rf-leading-none{line-height:1}.rf-leading-relaxed{line-height:1.625}.rf-leading-tight{line-height:1.25}.rf-tracking-wide{letter-spacing:.025em}.rf-tracking-widest{letter-spacing:.1em}.rf-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.rf-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.rf-text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.rf-text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.rf-text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.rf-text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.rf-text-current{color:currentColor}.rf-text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.rf-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.rf-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.rf-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.rf-text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.rf-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.rf-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.rf-text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.rf-text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.rf-text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.rf-text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.rf-text-muted-foreground{color:hsl(var(--muted-foreground))}.rf-text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.rf-text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.rf-text-neutral-950{--tw-text-opacity:1;color:rgb(10 10 10/var(--tw-text-opacity,1))}.rf-text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.rf-text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.rf-text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity,1))}.rf-text-popover-foreground{color:hsl(var(--popover-foreground))}.rf-text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.rf-text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.rf-text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.rf-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.rf-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.rf-text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.rf-text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.rf-text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.rf-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.rf-text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.rf-text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.rf-text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity,1))}.rf-text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity,1))}.rf-text-zinc-300{--tw-text-opacity:1;color:rgb(212 212 216/var(--tw-text-opacity,1))}.rf-text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.rf-text-zinc-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.rf-text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.rf-text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.rf-text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.rf-underline{text-decoration-line:underline}.rf-line-through{text-decoration-line:line-through}.rf-underline-offset-4{text-underline-offset:4px}.rf-opacity-0{opacity:0}.rf-opacity-100{opacity:1}.rf-opacity-25{opacity:.25}.rf-opacity-30{opacity:.3}.rf-opacity-50{opacity:.5}.rf-opacity-60{opacity:.6}.rf-opacity-75{opacity:.75}.rf-shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.rf-shadow,.rf-shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.rf-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.rf-shadow-md,.rf-shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rf-shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.rf-outline-none{outline:2px solid transparent;outline-offset:2px}.rf-ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.rf-ring-blue-500{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.rf-ring-primary{--tw-ring-color:hsl(var(--primary))}.rf-ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.rf-ring-offset-white{--tw-ring-offset-color:#fff}.rf-transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.rf-duration-200{transition-duration:.2s}.rf-ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.rf-slide-in-from-left-1{--tw-enter-translate-x:-0.25rem}.rf-slide-out-to-left-1{--tw-exit-translate-x:-0.25rem}.rf-duration-200{animation-duration:.2s}.rf-ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.file\\:rf-border-0::file-selector-button{border-width:0}.file\\:rf-bg-transparent::file-selector-button{background-color:transparent}.file\\:rf-text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\\:rf-font-medium::file-selector-button{font-weight:500}.placeholder\\:rf-text-zinc-500::-moz-placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.placeholder\\:rf-text-zinc-500::placeholder{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.hover\\:rf-border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.hover\\:\\!rf-bg-transparent:hover{background-color:transparent!important}.hover\\:rf-bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.hover\\:rf-bg-red-500\\/90:hover{background-color:rgba(239,68,68,.9)}.hover\\:rf-bg-zinc-100:hover{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.hover\\:rf-bg-zinc-100\\/80:hover{background-color:hsla(240,5%,96%,.8)}.hover\\:rf-bg-zinc-900\\/90:hover{background-color:rgba(24,24,27,.9)}.hover\\:rf-text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.hover\\:rf-text-zinc-900:hover{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.hover\\:rf-underline:hover{text-decoration-line:underline}.focus\\:rf-bg-gray-100:focus{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.focus\\:rf-bg-zinc-100:focus{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.focus\\:rf-text-gray-900:focus{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.focus\\:rf-text-zinc-900:focus{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.focus\\:rf-outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:rf-ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:rf-ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\\:rf-ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\\:rf-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:rf-ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:rf-ring-zinc-950:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(9 9 11/var(--tw-ring-opacity,1))}.focus-visible\\:rf-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:rf-pointer-events-none:disabled{pointer-events:none}.disabled\\:rf-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:rf-opacity-50:disabled{opacity:.5}.rf-group\\/bar:hover .group-hover\\/bar\\:rf-opacity-100{opacity:1}.data-\\[disabled\\=true\\]\\:rf-pointer-events-none[data-disabled=true],.data-\\[disabled\\]\\:rf-pointer-events-none[data-disabled]{pointer-events:none}.data-\\[side\\=bottom\\]\\:rf-translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.data-\\[side\\=bottom\\]\\:rf-translate-y-1[data-side=bottom],.data-\\[side\\=left\\]\\:-rf-translate-x-1[data-side=left]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=left\\]\\:-rf-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.data-\\[side\\=right\\]\\:rf-translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.data-\\[side\\=right\\]\\:rf-translate-x-1[data-side=right],.data-\\[side\\=top\\]\\:-rf-translate-y-1[data-side=top]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=top\\]\\:-rf-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.data-\\[selected\\=true\\]\\:rf-bg-zinc-100[data-selected=true]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[state\\=active\\]\\:rf-bg-white[data-state=active]{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.data-\\[state\\=checked\\]\\:rf-bg-zinc-900[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.data-\\[state\\=open\\]\\:rf-bg-zinc-100[data-state=open]{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.data-\\[selected\\=true\\]\\:rf-text-zinc-900[data-selected=true]{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.data-\\[state\\=active\\]\\:rf-text-zinc-950[data-state=active]{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.data-\\[state\\=checked\\]\\:rf-text-zinc-50[data-state=checked]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.data-\\[disabled\\=true\\]\\:rf-opacity-50[data-disabled=true],.data-\\[disabled\\]\\:rf-opacity-50[data-disabled]{opacity:.5}.data-\\[state\\=active\\]\\:rf-shadow[data-state=active]{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\\[state\\=open\\]\\:rf-animate-in[data-state=open]{animation-duration:.15s;animation-name:enter;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-animate-out[data-state=closed]{animation-duration:.15s;animation-name:exit;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\\[state\\=closed\\]\\:rf-fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\\[state\\=open\\]\\:rf-fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\\[state\\=closed\\]\\:rf-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\\[state\\=open\\]\\:rf-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\\[side\\=bottom\\]\\:rf-slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\\[side\\=left\\]\\:rf-slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\\[side\\=right\\]\\:rf-slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\\[side\\=top\\]\\:rf-slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.data-\\[state\\=closed\\]\\:rf-slide-out-to-left-1\\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\\[state\\=closed\\]\\:rf-slide-out-to-top-\\[48\\%\\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\\[state\\=open\\]\\:rf-slide-in-from-left-1\\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\\[state\\=open\\]\\:rf-slide-in-from-top-\\[48\\%\\][data-state=open]{--tw-enter-translate-y:-48%}.dark\\:rf-border-zinc-50:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(250 250 250/var(--tw-border-opacity,1))}.dark\\:rf-border-zinc-800:is(.rf-dark *){--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity,1))}.dark\\:rf-bg-red-900:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-50:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-800:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:rf-bg-zinc-950:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:rf-text-zinc-400:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-50:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:rf-text-zinc-900:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.dark\\:rf-placeholder-zinc-400:is(.rf-dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(161 161 170/var(--tw-placeholder-opacity,1))}.dark\\:rf-placeholder-zinc-400:is(.rf-dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(161 161 170/var(--tw-placeholder-opacity,1))}.dark\\:rf-ring-offset-zinc-950:is(.rf-dark *){--tw-ring-offset-color:#09090b}.dark\\:placeholder\\:rf-text-zinc-400:is(.rf-dark *)::-moz-placeholder{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:placeholder\\:rf-text-zinc-400:is(.rf-dark *)::placeholder{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\\:hover\\:rf-bg-red-900\\/90:hover:is(.rf-dark *){background-color:rgba(127,29,29,.9)}.dark\\:hover\\:rf-bg-zinc-50\\/90:hover:is(.rf-dark *){background-color:hsla(0,0%,98%,.9)}.dark\\:hover\\:rf-bg-zinc-800:hover:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:hover\\:rf-bg-zinc-800\\/80:hover:is(.rf-dark *){background-color:rgba(39,39,42,.8)}.dark\\:hover\\:rf-text-zinc-50:hover:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus\\:rf-bg-zinc-800:focus:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:focus\\:rf-text-zinc-50:focus:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:focus-visible\\:rf-ring-zinc-300:focus-visible:is(.rf-dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(212 212 216/var(--tw-ring-opacity,1))}.dark\\:data-\\[selected\\=true\\]\\:rf-bg-zinc-800[data-selected=true]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-bg-zinc-950[data-state=active]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=checked\\]\\:rf-bg-zinc-50[data-state=checked]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.dark\\:data-\\[state\\=open\\]\\:rf-bg-zinc-800[data-state=open]:is(.rf-dark *){--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.dark\\:data-\\[selected\\=true\\]\\:rf-text-zinc-50[data-selected=true]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:data-\\[state\\=active\\]\\:rf-text-zinc-50[data-state=active]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.dark\\:data-\\[state\\=checked\\]\\:rf-text-zinc-900[data-state=checked]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\\:rf-order-1{order:1}.sm\\:rf-order-2{order:2}.sm\\:rf-mt-0{margin-top:0}.sm\\:rf-inline{display:inline}.sm\\:rf-hidden{display:none}.sm\\:rf-w-auto{width:auto}.sm\\:rf-flex-row{flex-direction:row}.sm\\:rf-items-center{align-items:center}.sm\\:rf-justify-end{justify-content:flex-end}.sm\\:rf-gap-3{gap:.75rem}.sm\\:rf-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.sm\\:rf-rounded-lg{border-radius:var(--radius)}.sm\\:rf-px-4{padding-left:1rem;padding-right:1rem}.sm\\:rf-text-left{text-align:left}.sm\\:rf-text-sm{font-size:.875rem;line-height:1.25rem}.sm\\:rf-text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:768px){.md\\:rf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}.\\[\\&\\>span\\]\\:rf-line-clamp-1>span{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\\[\\&\\>svg\\]\\:rf-size-4>svg{height:1rem;width:1rem}.\\[\\&\\>svg\\]\\:rf-shrink-0>svg{flex-shrink:0}.\\[\\&\\>svg\\]\\:rf-text-red-300>svg{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.\\[\\&\\>svg\\]\\:hover\\:rf-text-red-400:hover>svg{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-py-1\\.5 [cmdk-group-heading]{padding-bottom:.375rem;padding-top:.375rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-font-medium [cmdk-group-heading]{font-weight:500}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-zinc-500 [cmdk-group-heading]{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.dark\\:\\[\\&_\\[cmdk-group-heading\\]\\]\\:rf-text-zinc-400 [cmdk-group-heading]:is(.rf-dark *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:rf-pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\\[\\&_\\[cmdk-group\\]\\]\\:rf-px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:rf-h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:rf-w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\\[\\&_\\[cmdk-input\\]\\]\\:rf-h-12 [cmdk-input]{height:3rem}.\\[\\&_\\[cmdk-item\\]\\]\\:rf-px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-item\\]\\]\\:rf-py-3 [cmdk-item]{padding-bottom:.75rem;padding-top:.75rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:rf-h-5 [cmdk-item] svg{height:1.25rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:rf-w-5 [cmdk-item] svg{width:1.25rem}.\\[\\&_svg\\]\\:rf-pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:rf-size-4 svg{height:1rem;width:1rem}.\\[\\&_svg\\]\\:rf-shrink-0 svg{flex-shrink:0}',$Xt=()=>{pt.useEffect(()=>{if(document.querySelector('style[data-styles="tscircuit-runframe"]'))return;const e=document.createElement("style");e.setAttribute("data-styles","tscircuit-runframe"),e.textContent=XXt,document.head.appendChild(e)},[])},e$t=r=>{pt.useEffect(()=>(r?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[r])},bHe=r=>`hsl(${ub.indexOf(r)*137.5%360}, 70%, 50%)`,t$t=({phaseTimings:r})=>{if(!r)return null;const e=Object.values(r).reduce((t,n)=>t+n,0);return ut.jsxs("div",{className:"rf-space-y-2 rf-w-full rf-px-4",children:[ut.jsx("div",{className:"rf-relative rf-h-8 rf-flex rf-rounded-sm",children:ub.map(t=>{const n=r[t]||0,i=n/e*100;return ut.jsx("div",{className:"rf-group/bar rf-relative rf-overflow-visible",style:{width:`${i}%`,backgroundColor:bHe(t)},children:ut.jsxs("div",{className:"rf-opacity-0 group-hover/bar:rf-opacity-100 rf-transition-opacity rf-absolute rf-bottom-full rf-left-1/2 rf-transform -rf-translate-x-1/2 rf-mb-2 rf-px-2 rf-py-1 rf-text-xs rf-whitespace-nowrap rf-rounded rf-bg-gray-900 rf-text-white rf-pointer-events-none",children:[t,": ",n.toFixed(1),"ms"]})},t)})}),ut.jsxs("div",{className:"rf-text-xs rf-text-gray-500",children:["Total: ",e.toFixed(2),"ms"]})]})},n$t=({renderLog:r})=>{const[e,t]=pt.useState("chronological");if(!r)return ut.jsx("div",{className:"rf-p-4 rf-bg-gray-100 rf-rounded-md",children:"No render log, make sure this tab is open when you render (TODO add a rerender button here)"});const n=Object.entries((r==null?void 0:r.phaseTimings)??{});e==="chronological"?n.sort((o,a)=>ub.indexOf(o[0])-ub.indexOf(a[0])):n.sort((o,a)=>a[1]-o[1]);const i=n.reduce((o,[a,s])=>o+s,0);return ut.jsxs("div",{className:"rf-bg-white",children:[ut.jsxs("div",{className:"rf-flex rf-justify-between rf-items-center",children:[ut.jsx("div",{children:"Render Logs"}),ut.jsxs("div",{className:"rf-mb-4 rf-pr-2 rf-flex rf-text-xs rf-items-center",children:[ut.jsx("div",{className:"rf-mr-2",children:"Sort by:"}),ut.jsxs("select",{value:e,onChange:o=>t(o.target.value),className:"rf-px-2 rf-py-1 rf-border rf-rounded rf-text-xs",children:[ut.jsx("option",{value:"chronological",children:"Phase Order"}),ut.jsx("option",{value:"longest",children:"Duration"})]})]})]}),ut.jsx(t$t,{phaseTimings:r.phaseTimings}),ut.jsxs("table",{className:"rf-w-full rf-text-xs",children:[ut.jsx("thead",{children:ut.jsxs("tr",{children:[ut.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase Order"}),ut.jsx("th",{className:"rf-text-left rf-p-2",children:"Phase"}),ut.jsx("th",{className:"rf-text-left rf-p-2",children:"Duration (ms)"})]})}),ut.jsx("tbody",{children:n.map(([o,a])=>ut.jsxs("tr",{children:[ut.jsx("td",{className:"rf-p-2",children:ub.indexOf(o)}),ut.jsx("td",{className:"rf-p-2",children:o}),ut.jsx("td",{className:"rf-p-2",children:ut.jsx("div",{className:"rf-w-8",children:ut.jsx("div",{className:"rf-h-2 rf-rounded-sm",style:{backgroundColor:bHe(o),width:`${a/i*100}%`}})})}),ut.jsx("td",{className:"rf-p-2",children:ut.jsxs("div",{className:"rf-flex w-full",children:[ut.jsxs("span",{className:"rf-flex-grow",children:[a,"ms"]}),ut.jsxs("span",{className:"rf-text-gray-500 rf-pr-2",children:[(a/i*100).toFixed(1),"%"]})]})})]},o))})]})]})},r$t=({errorMessage:r,errorStack:e,circuitJsonErrors:t})=>{pt.useEffect(()=>{if(r){const n=new Error(r);e&&(n.stack=e);try{GP.captureException(n)}catch{}}},[r,e]),pt.useEffect(()=>{if(t&&t.length>0)for(const n of t){const i=new Error(n.message||"Circuit JSON Error");n.stack&&(i.stack=n.stack);try{GP.captureException(i,{error_type:n.type})}catch{}}},[t])},i$t="0.0.726",Yue={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},Vue=new Map,DO=r=>{const e=Vue.get(r);return e?Object.fromEntries(Object.entries(e.stores).map(([t,n])=>[t,n.getState()])):{}},o$t=(r,e,t)=>{if(r===void 0)return{type:"untracked",connection:e.connect(t)};const n=Vue.get(t.name);if(n)return{type:"tracked",store:r,...n};const i={connection:e.connect(t),stores:{}};return Vue.set(t.name,i),{type:"tracked",store:r,...i}},a$t=(r,e={})=>(t,n,i)=>{const{enabled:o,anonymousActionType:a,store:s,...l}=e;let c;try{c=(o??(Yue?"production":void 0)!=="production")&&window.__REDUX_DEVTOOLS_EXTENSION__}catch{}if(!c)return(Yue?"production":void 0)!=="production"&&o&&console.warn("[zustand devtools middleware] Please install/enable Redux devtools extension"),r(t,n,i);const{connection:u,...A}=o$t(s,c,l);let d=!0;i.setState=(C,E,_)=>{const x=t(C,E);if(!d)return x;const w=_===void 0?{type:a||"anonymous"}:typeof _=="string"?{type:_}:_;return s===void 0?(u==null||u.send(w,n()),x):(u==null||u.send({...w,type:`${s}/${w.type}`},{...DO(l.name),[s]:i.getState()}),x)};const f=(...C)=>{const E=d;d=!1,t(...C),d=E},m=r(i.setState,n,i);if(A.type==="untracked"?u==null||u.init(m):(A.stores[A.store]=i,u==null||u.init(Object.fromEntries(Object.entries(A.stores).map(([C,E])=>[C,C===A.store?m:E.getState()])))),i.dispatchFromDevtools&&typeof i.dispatch=="function"){let C=!1;const E=i.dispatch;i.dispatch=(..._)=>{(Yue?"production":void 0)!=="production"&&_[0].type==="__setState"&&!C&&(console.warn('[zustand devtools middleware] "__setState" action type is reserved to set state from the devtools. Avoid using it.'),C=!0),E(..._)}}return u.subscribe(C=>{var E;switch(C.type){case"ACTION":if(typeof C.payload!="string"){console.error("[zustand devtools middleware] Unsupported action format");return}return Kue(C.payload,_=>{if(_.type==="__setState"){if(s===void 0){f(_.state);return}Object.keys(_.state).length!==1&&console.error(`
13482
13482
  [zustand devtools middleware] Unsupported __setState action format.
13483
13483
  When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),
13484
13484
  and value of this only key should be a state object. Example: { "type": "__setState", "state": { "abc123Store": { "foo": "bar" } } }