@tscircuit/runframe 0.0.112 → 0.0.114

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.
@@ -22434,7 +22434,7 @@ void main() {
22434
22434
  * Copyright 2010-2024 Three.js Authors
22435
22435
  * SPDX-License-Identifier: MIT
22436
22436
  *)
22437
- */const dist$2=Object.freeze(Object.defineProperty({__proto__:null,A0402,A0603,A0805,BGA,ChipBody,ExtrudedPads,FootprintPad,FootprintPlatedHole,Footprinter3d,PinRow,QFN,QFP,SOD123,SOT233P,SOT563,SOT723,SmdChipLead,Tssop},Symbol.toStringTag,{value:"Module"})),require$$19=getAugmentedNamespace(dist$2);var dist$1,hasRequiredDist$1;function requireDist$1(){if(hasRequiredDist$1)return dist$1;hasRequiredDist$1=1;var lV=Object.create,J=Object.defineProperty,VV=Object.getOwnPropertyDescriptor,RV=Object.getOwnPropertyNames,UV=Object.getPrototypeOf,ZV=Object.prototype.hasOwnProperty,WV=(rl,lR)=>{for(var uR in lR)J(rl,uR,{get:lR[uR],enumerable:!0})},IV=(rl,lR,uR,IU)=>{if(lR&&typeof lR=="object"||typeof lR=="function")for(let bU of RV(lR))!ZV.call(rl,bU)&&bU!==uR&&J(rl,bU,{get:()=>lR[bU],enumerable:!(IU=VV(lR,bU))||IU.enumerable});return rl},dV=(rl,lR,uR)=>(uR=rl!=null?lV(UV(rl)):{},IV(!rl||!rl.__esModule?J(uR,"default",{value:rl,enumerable:!0}):uR,rl)),CV=rl=>IV(J({},"__esModule",{value:!0}),rl),FV={};WV(FV,{CadViewer:()=>JZ,useExportGltfUrl:()=>eV,useSaveGltfAs:()=>JV}),dist$1=CV(FV);var NV=requireThreeStdlib(),gV=requireReact();function JV(rl={}){const lR=nV(rl),uR=(0,gV.useMemo)(()=>document.createElement("a"),[]),IU=async VZ=>{const uZ=VZ??rl.filename??"";rl.binary==null&&(rl.binary=uZ.endsWith(".glb"));const BZ=await lR(bU);uR.download=uZ,uR.href=BZ,uR.dispatchEvent(new MouseEvent("click")),URL.revokeObjectURL(BZ)};(0,gV.useEffect)(()=>()=>{uR.remove(),bU=null},[]);let bU;return[(0,gV.useCallback)(VZ=>{bU=VZ},[]),IU]}function eV(rl={}){const lR=nV(rl),[uR,IU]=(0,gV.useState)(),[bU,OU]=(0,gV.useState)(),VZ=(0,gV.useCallback)(uZ=>lR(uZ).then(IU).catch(OU),[]);return(0,gV.useEffect)(()=>()=>URL.revokeObjectURL(uR),[uR]),[VZ,uR,bU]}function nV(rl={}){const lR=(0,gV.useMemo)(()=>new NV.GLTFExporter,[]);return uR=>{const{promise:IU,resolve:bU,reject:OU}=Promise.withResolvers();return lR.parse(uR,VZ=>{const uZ=rl.binary?"gltf-binary":"gltf+json",BZ=new Blob([VZ instanceof ArrayBuffer?VZ:JSON.stringify(VZ)],{type:`model/${uZ}`});bU(URL.createObjectURL(BZ))},OU,rl),IU}}var aV=require$$2,GV=requireReact(),YV=(rl,lR)=>(0,GV.useMemo)(()=>{if(!rl)return;const uR=new aV.Circuit;return uR.add(rl),uR.render(),uR.getCircuitJson()},[rl]),AV=requireDist$5(),EV=requireReact(),QV=requireDist$5(),bV=requireTransforms(),iV=requirePrimitives(),HV=requireColors(),DV=requireBooleans(),wV=requirePrimitives(),KV=requireColors(),LV=requireBooleans(),Ul=.01,el={copper:[.9,.6,.2],fr4Green:[5/255,163/255,46/255],fr4GreenSolderWithMask:[0/255,152/255,19/255]},hl=(rl,lR)=>{if(rl.shape||(rl.shape="circle"),rl.shape==="circle")return(0,KV.colorize)(el.copper,(0,LV.subtract)((0,LV.union)((0,wV.cylinder)({center:[rl.x,rl.y,0],radius:rl.hole_diameter/2,height:1.2}),(0,wV.cylinder)({center:[rl.x,rl.y,1.2/2],radius:rl.outer_diameter/2,height:Ul}),(0,wV.cylinder)({center:[rl.x,rl.y,-1.2/2],radius:rl.outer_diameter/2,height:Ul})),(0,wV.cylinder)({center:[rl.x,rl.y,0],radius:rl.hole_diameter/2-Ul,height:1.5})));if(rl.shape==="pill"){const uR=rl.hole_height>rl.hole_width,IU=uR?rl.hole_height:rl.hole_width,bU=uR?rl.hole_width:rl.hole_height,OU=uR?rl.outer_width||IU+.2:rl.outer_height||bU+.2,VZ=bU/2,uZ=Math.abs(IU-bU),BZ=(0,wV.cuboid)({center:uR?[rl.x,rl.y,0]:[rl.x,rl.y,0],size:uR?[bU,uZ,1.2]:[uZ,bU,1.2]}),rZ=(0,wV.cylinder)({center:uR?[rl.x,rl.y-uZ/2,0]:[rl.x-uZ/2,rl.y,0],radius:VZ,height:1.2}),eW=(0,wV.cylinder)({center:uR?[rl.x,rl.y+uZ/2,0]:[rl.x+uZ/2,rl.y,0],radius:VZ,height:1.2}),iW=(0,wV.cuboid)({center:uR?[rl.x,rl.y,1.2/2]:[rl.x,rl.y,1.2/2],size:uR?[OU,uZ,Ul]:[uZ,OU,Ul]}),YZ=(0,wV.cylinder)({center:uR?[rl.x,rl.y-uZ/2,1.2/2]:[rl.x-uZ/2,rl.y,1.2/2],radius:OU/2,height:Ul}),XR=(0,wV.cylinder)({center:uR?[rl.x,rl.y+uZ/2,1.2/2]:[rl.x+uZ/2,rl.y,1.2/2],radius:OU/2,height:Ul}),NU=(0,wV.cuboid)({center:uR?[rl.x,rl.y,-1.2/2]:[rl.x,rl.y,-1.2/2],size:uR?[OU,uZ,Ul]:[uZ,OU,Ul]}),tU=(0,wV.cylinder)({center:uR?[rl.x,rl.y-uZ/2,-1.2/2]:[rl.x-uZ/2,rl.y,-1.2/2],radius:OU/2,height:Ul}),UZ=(0,wV.cylinder)({center:uR?[rl.x,rl.y+uZ/2,-1.2/2]:[rl.x+uZ/2,rl.y,-1.2/2],radius:OU/2,height:Ul});return(0,KV.colorize)(el.copper,(0,LV.subtract)((0,LV.union)(BZ,rZ,eW,iW,YZ,XR,NU,tU,UZ),(0,LV.union)((0,wV.cuboid)({center:[rl.x,rl.y,0],size:uR?[bU-Ul,uZ,1.5]:[uZ,bU-Ul,1.5]}),(0,wV.cylinder)({center:uR?[rl.x,rl.y-uZ/2,0]:[rl.x-uZ/2,rl.y,0],radius:VZ-Ul,height:1.5}),(0,wV.cylinder)({center:uR?[rl.x,rl.y+uZ/2,0]:[rl.x+uZ/2,rl.y,0],radius:VZ-Ul,height:1.5}))))}else throw new Error(`Unsupported plated hole shape: ${rl.shape}`)},Cl=requireExtrusions(),Vl=requireExpansions(),PV=requireExtrusions(),Wl=requirePrimitives(),Jl=requireTransforms(),Fl=rl=>{let lR=0;for(let IU=0;IU<rl.length;IU++){const bU=(IU+1)%rl.length;lR+=rl[IU][0]*rl[bU][1],lR-=rl[bU][0]*rl[IU][1]}return lR/2<=0},al=(rl,lR=1.2)=>{let uR=rl.map(OU=>[OU.x,OU.y]);Fl(uR)&&(uR=uR.reverse());const IU=(0,Wl.polygon)({points:uR});let bU=(0,PV.extrudeLinear)({height:lR},IU);return bU=(0,Jl.translate)([0,0,-lR/2],bU),bU},zl=requireText();function pl(rl){var BZ,rZ,eW,iW;const lR=(0,zl.vectorText)({height:rl.font_size,input:rl.text});lR.forEach(YZ=>{YZ.length===29?(lR.splice(lR.indexOf(YZ),1,YZ.slice(0,15)),lR.splice(lR.indexOf(YZ),0,YZ.slice(14,29))):YZ.length===17&&(lR.splice(lR.indexOf(YZ),1,YZ.slice(0,10)),lR.splice(lR.indexOf(YZ),0,YZ.slice(9,17)))});const uR=lR.flatMap(YZ=>YZ),IU={minX:Math.min(...uR.map(YZ=>YZ[0])),maxX:Math.max(...uR.map(YZ=>YZ[0])),minY:Math.min(...uR.map(YZ=>YZ[1])),maxY:Math.max(...uR.map(YZ=>YZ[1]))},bU=(IU.minX+IU.maxX)/2,OU=(IU.minY+IU.maxY)/2;let VZ=-bU,uZ=-OU;return(BZ=rl.anchor_alignment)!=null&&BZ.includes("right")?VZ=-IU.maxX:(rZ=rl.anchor_alignment)!=null&&rZ.includes("left")&&(VZ=-IU.minX),(eW=rl.anchor_alignment)!=null&&eW.includes("top")?uZ=-IU.maxY:(iW=rl.anchor_alignment)!=null&&iW.includes("bottom")&&(uZ=-IU.minY),{textOutlines:lR,xOffset:VZ,yOffset:uZ}}var Ol=rl=>{const lR=(0,QV.su)(rl).pcb_board.list()[0];if(!lR)throw new Error("No pcb_board found");const uR=(0,QV.su)(rl).pcb_plated_hole.list(),IU=(0,QV.su)(rl).pcb_hole.list(),bU=(0,QV.su)(rl).pcb_smtpad.list(),OU=(0,QV.su)(rl).pcb_trace.list(),VZ=(0,QV.su)(rl).pcb_via.list(),uZ=(0,QV.su)(rl).pcb_silkscreen_text.list();let BZ;lR.outline&&lR.outline.length>0?BZ=al(lR.outline,1.2):BZ=(0,iV.cuboid)({size:[lR.width,lR.height,1.2]});const rZ=[],eW=[],iW=[],YZ=NU=>{if(NU.shape==="circle"){const tU=(0,iV.cylinder)({center:[NU.x,NU.y,0],radius:NU.hole_diameter/2+Ul});BZ=(0,DV.subtract)(BZ,tU);const UZ=hl(NU);rZ.push(UZ)}else if(NU.shape==="pill"){const tU=NU.hole_height>NU.hole_width,UZ=tU?NU.hole_height:NU.hole_width,MZ=tU?NU.hole_width:NU.hole_height,WW=MZ/2,MW=Math.abs(UZ-MZ),oZ=(0,DV.union)((0,iV.cuboid)({center:[NU.x,NU.y,0],size:tU?[MZ,MW,1.5]:[MW,MZ,1.5]}),(0,iV.cylinder)({center:tU?[NU.x,NU.y-MW/2,0]:[NU.x-MW/2,NU.y,0],radius:WW,height:1.5}),(0,iV.cylinder)({center:tU?[NU.x,NU.y+MW/2,0]:[NU.x+MW/2,NU.y,0],radius:WW,height:1.5}));BZ=(0,DV.subtract)(BZ,oZ);const RZ=hl(NU);rZ.push(RZ)}};for(const NU of uR)YZ(NU);for(const NU of IU)if(NU.hole_shape==="round"||NU.hole_shape==="circle"){const tU=(0,iV.cylinder)({center:[NU.x,NU.y,0],radius:NU.hole_diameter/2+Ul});BZ=(0,DV.subtract)(BZ,tU)}for(const NU of bU){const tU=NU.layer==="bottom"?-1:1;if(NU.shape==="rect"){const UZ=(0,HV.colorize)(el.copper,(0,iV.cuboid)({center:[NU.x,NU.y,tU*1.2/2+tU*Ul],size:[NU.width,NU.height,Ul]}));eW.push(UZ)}else if(NU.shape==="circle"){const UZ=(0,HV.colorize)(el.copper,(0,iV.cylinder)({center:[NU.x,NU.y,tU*1.2/2+tU*Ul],radius:NU.radius,height:Ul}));eW.push(UZ)}}for(const{route:NU}of OU){if(NU.length<2)continue;const tU=[];let UZ=[NU[0]],MZ=NU[0].route_type==="wire"?NU[0].layer:"top";for(let WW=1;WW<NU.length;WW++){const MW=NU[WW];MW.route_type==="via"?(tU.push(UZ),UZ=[MW]):MW.route_type==="wire"&&MW.layer!==MZ?(tU.push(UZ),MZ=MW.layer,UZ=[MW]):UZ.push(MW)}tU.push(UZ);for(const WW of tU){if(WW.length<2)continue;const MW=(0,iV.line)(WW.map(UW=>[UW.x,UW.y])),oZ=WW[0].route_type==="via"?WW[0].to_layer==="top"?1:-1:WW[0].layer==="top"?1:-1;let RZ=(0,bV.translate)([0,0,oZ*1.2/2],(0,Cl.extrudeLinear)({height:Ul*oZ},(0,Vl.expand)({delta:.1,corners:"edge"},MW)));const fZ=VZ.map(UW=>(0,iV.cylinder)({center:[UW.x,UW.y,0],radius:UW.outer_diameter/2,height:5})),YW=uR.filter(UW=>UW.shape==="circle").map(UW=>(0,iV.cylinder)({center:[UW.x,UW.y,0],radius:UW.outer_diameter/2,height:5}));RZ=(0,DV.subtract)(RZ,...fZ,...YW),RZ=(0,HV.colorize)(el.fr4GreenSolderWithMask,RZ),iW.push(RZ)}}for(const NU of VZ)YZ({x:NU.x,y:NU.y,hole_diameter:NU.hole_diameter,outer_diameter:NU.outer_diameter,shape:"circle",layers:["top","bottom"],type:"pcb_plated_hole",pcb_plated_hole_id:""});const XR=[];for(const NU of uZ){const{textOutlines:tU,xOffset:UZ,yOffset:MZ}=pl(NU);for(let WW of tU){const MW=WW.map(HW=>[HW[0]+UZ+NU.anchor_position.x,HW[1]+MZ+NU.anchor_position.y]),oZ=(0,iV.line)(MW),RZ=NU.font_size||.25,fZ=Math.min(Math.max(.01,RZ*.1),RZ*.2),YW=(0,Vl.expand)({delta:fZ,corners:"round"},oZ);let UW=(0,bV.translate)([0,0,.6],(0,Cl.extrudeLinear)({height:.012},YW));UW=(0,HV.colorize)([256,256,256],UW),XR.push(UW)}}return BZ=(0,HV.colorize)(el.fr4Green,BZ),[BZ,...rZ,...eW,...iW,...XR]},Pl=requireReact(),Ll=dV(requireStlSerializer());function ZR(rl){return new Promise((lR,uR)=>{const IU=new FileReader;IU.onload=()=>{lR(IU.result)},IU.onerror=uR,IU.readAsDataURL(rl)})}var yl=rl=>{const[lR,uR]=(0,Pl.useState)([]),[IU,bU]=(0,Pl.useState)(!0);return(0,Pl.useEffect)(()=>{if(!rl)return;(async()=>{bU(!0);const uZ=(Array.isArray(rl)?rl:[rl]).map(async BZ=>{const rZ=Ll.default.serialize({binary:!0},[BZ]),eW=new Blob(rZ);return{stlUrl:await ZR(eW),color:BZ.color}});try{const BZ=await Promise.all(uZ);uR(BZ)}catch(BZ){console.error("Error generating STLs:",BZ),uR([])}finally{bU(!1)}})()},[rl]),{stls:lR,loading:IU}},il=require$$12,xl=requireReact(),ql=requireThreeStdlib(),gR=requireJsxRuntime();function ER({stlUrl:rl,mtlUrl:lR,color:uR,opacity:IU=1}){const bU=(0,il.useLoader)(ql.STLLoader,rl),OU=(0,xl.useRef)();return(0,gR.jsxs)("mesh",{ref:OU,children:[(0,gR.jsx)("primitive",{object:bU,attach:"geometry"}),(0,gR.jsx)("meshStandardMaterial",{color:uR,transparent:IU!==1,opacity:IU})]})}var SR=require$$14,jR=require$$12,kR={name:"@tscircuit/3d-viewer",version:"0.0.99",main:"./dist/index.js",files:["dist"],scripts:{start:"bun run storybook","dev:old":"bunx --bun vite",build:"tsup ./src/index.tsx --dts --sourcemap",prepublish:"npm run build",preview:"vite preview",storybook:"storybook dev -p 6006","build-storybook":"storybook build","vercel-build":"bun run build-storybook",format:"biome format . --write","format:check":"biome format ."},dependencies:{"@jscad/modeling":"^2.12.2","@jscad/regl-renderer":"^2.6.9","@jscad/stl-serializer":"^2.1.17","@react-three/drei":"^9.115.0","@react-three/fiber":"^8.16.8","@tscircuit/core":"^0.0.272","@tscircuit/props":"^0.0.130","@tscircuit/react-fiber":"^1.1.29","@tscircuit/soup":"^0.0.69","@tscircuit/soup-util":"^0.0.26","@types/three":"^0.165.0","jscad-electronics":"^0.0.23","jscad-fiber":"^0.0.76","jscad-planner":"^0.0.11",react:"^18.3.1","react-dom":"^18.3.1","react-use-gesture":"^9.1.3",three:"^0.165.0","three-stdlib":"^2.30.3"},devDependencies:{"@biomejs/biome":"^1.8.3","@chromatic-com/storybook":"^1.5.0","@storybook/addon-essentials":"^8.4.7","@storybook/addon-interactions":"^8.4.7","@storybook/addon-links":"^8.4.7","@storybook/addon-onboarding":"^8.4.7","@storybook/blocks":"^8.4.7","@storybook/builder-vite":"^8.4.7","@storybook/react":"^8.4.7","@storybook/react-vite":"^8.4.7","@storybook/test":"^8.4.7","@types/react":"^18.3.3","@types/react-dom":"^18.3.0","@vitejs/plugin-react":"^4.3.4","circuit-json":"^0.0.116","circuit-to-svg":"^0.0.91",storybook:"^8.4.7","strip-ansi":"^7.1.0",tsup:"^8.1.0",typescript:"^5.7.2",vite:"^5.4.11","vite-tsconfig-paths":"^4.3.2"}},oR=require$$14,HR=require$$12,MR=requireReact(),QR=dV(requireThree()),VU=requireJsxRuntime();typeof window<"u"&&(window.TSCI_MAIN_CAMERA_ROTATION=new QR.Euler(0,0,0));function fR(rl,lR){const uR=new QR.Quaternion().setFromEuler(new QR.Euler(rl.x,rl.y,rl.z)),IU=new QR.Vector3(0,0,1);return IU.applyQuaternion(uR),IU.multiplyScalar(lR)}var pU=({})=>{const rl=(0,MR.useRef)();return(0,MR.useRef)({lastRotation:new QR.Euler}),(0,HR.useFrame)((lR,uR)=>{if(!rl.current)return;const IU=window.TSCI_MAIN_CAMERA_ROTATION,bU=fR(IU,2);lR.camera.position.copy(bU),lR.camera.lookAt(0,0,0)}),(0,VU.jsxs)("mesh",{ref:rl,rotation:[Math.PI/2,0,0],children:[(0,VU.jsx)("boxGeometry",{args:[1,1,1]}),(0,VU.jsx)("meshStandardMaterial",{color:"white"}),(0,VU.jsx)(oR.Text,{position:[0,0,.51],fontSize:.25,color:"black",children:"Front"}),(0,VU.jsx)(oR.Text,{position:[0,0,-.51],fontSize:.25,color:"black",rotation:[0,Math.PI,0],children:"Back"}),(0,VU.jsx)(oR.Text,{position:[.51,0,0],fontSize:.25,color:"black",rotation:[0,Math.PI/2,0],children:"Right"}),(0,VU.jsx)(oR.Text,{position:[-.51,0,0],fontSize:.25,color:"black",rotation:[0,-Math.PI/2,0],children:"Left"}),(0,VU.jsx)(oR.Text,{position:[0,.51,0],fontSize:.25,color:"black",rotation:[-Math.PI/2,0,0],children:"Top"}),(0,VU.jsx)(oR.Text,{position:[0,-.51,0],fontSize:.25,color:"black",rotation:[Math.PI/2,0,0],children:"Bottom"}),(0,VU.jsx)("lineSegments",{args:[new QR.EdgesGeometry(new QR.BoxGeometry(1,1,1))],material:new QR.LineBasicMaterial({color:0,linewidth:2})})]})},uU=requireReact(),PU=require$$14,PR=requireJsxRuntime(),yR=()=>((0,jR.useFrame)(({camera:rl})=>{window.TSCI_MAIN_CAMERA_ROTATION=rl.rotation}),(0,PR.jsx)(PR.Fragment,{})),EU=(0,uU.forwardRef)(({children:rl,hoveredComponent:lR},uR)=>(0,PR.jsxs)("div",{style:{position:"relative",width:"100%",height:"100%"},children:[(0,PR.jsx)("div",{style:{position:"absolute",top:0,left:0,width:120,height:120},children:(0,PR.jsxs)(jR.Canvas,{camera:{up:[0,0,1],position:[1,1,1]},style:{zIndex:10},children:[(0,PR.jsx)("ambientLight",{intensity:Math.PI/2}),(0,PR.jsx)(pU,{})]})}),(0,PR.jsxs)(jR.Canvas,{scene:{up:[0,0,1]},camera:{up:[0,0,1],position:[5,5,5]},children:[(0,PR.jsx)(yR,{}),(0,PR.jsx)(SR.OrbitControls,{autoRotate:!0,autoRotateSpeed:1}),(0,PR.jsx)("ambientLight",{intensity:Math.PI/2}),(0,PR.jsx)("pointLight",{position:[-10,-10,10],decay:0,intensity:Math.PI/4}),(0,PR.jsx)(SR.Grid,{rotation:[Math.PI/2,0,0],infiniteGrid:!0,cellSize:1,sectionSize:10}),(0,PR.jsx)("object3D",{ref:uR,children:rl}),lR&&(0,PR.jsx)(PU.Html,{position:lR.mousePosition,style:{fontFamily:"sans-serif",transform:"translate3d(50%, 50%, 0)",backgroundColor:"white",padding:"5px",borderRadius:"3px",pointerEvents:"none",userSelect:"none",WebkitUserSelect:"none",MozUserSelect:"none",msUserSelect:"none"},children:lR.name})]}),(0,PR.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:["@",kR.version]})]})),rR=requireReact(),IR=dV(requireThree()),BR=requireJsxRuntime(),xR=rl=>(0,BR.jsx)("group",{...rl}),iR=({children:rl,isHovered:lR,onHover:uR,position:IU})=>{const bU=(0,rR.useRef)(null),OU=(0,rR.useCallback)(uZ=>{uZ.stopPropagation();try{const BZ=uZ.point||(uZ.intersections&&uZ.intersections.length>0?uZ.intersections[0].point:null)||(IU?new IR.Vector3(...IU):null);BZ?(bU.current=BZ,uR({mousePosition:[BZ.x,BZ.y,BZ.z]})):uR({})}catch(BZ){console.warn("Hover event error:",BZ),uR({})}},[IU]),VZ=(0,rR.useCallback)(uZ=>{uZ.stopPropagation(),bU.current=null,uR(null)},[uR]);return(0,BR.jsx)(xR,{onPointerEnter:OU,onPointerMove:OU,onPointerLeave:VZ,children:rl})},nU=iR,dU=requireReact(),mU=requireThreeStdlib();typeof window<"u"&&!window.TSCIRCUIT_OBJ_LOADER_CACHE&&(window.TSCIRCUIT_OBJ_LOADER_CACHE=new Map);function YR(rl){const[lR,uR]=(0,dU.useState)(null);return(0,dU.useEffect)(()=>{if(!rl)return;const IU=window.TSCIRCUIT_OBJ_LOADER_CACHE;let bU=!1;async function OU(){var uZ;try{const rZ=await(await fetch(rl)).text(),eW=(uZ=rZ.match(/newmtl[\s\S]*?endmtl/g))==null?void 0:uZ.join(`
22437
+ */const dist$2=Object.freeze(Object.defineProperty({__proto__:null,A0402,A0603,A0805,BGA,ChipBody,ExtrudedPads,FootprintPad,FootprintPlatedHole,Footprinter3d,PinRow,QFN,QFP,SOD123,SOT233P,SOT563,SOT723,SmdChipLead,Tssop},Symbol.toStringTag,{value:"Module"})),require$$19=getAugmentedNamespace(dist$2);var dist$1,hasRequiredDist$1;function requireDist$1(){if(hasRequiredDist$1)return dist$1;hasRequiredDist$1=1;var lV=Object.create,J=Object.defineProperty,VV=Object.getOwnPropertyDescriptor,RV=Object.getOwnPropertyNames,UV=Object.getPrototypeOf,ZV=Object.prototype.hasOwnProperty,WV=(rl,lR)=>{for(var uR in lR)J(rl,uR,{get:lR[uR],enumerable:!0})},IV=(rl,lR,uR,IU)=>{if(lR&&typeof lR=="object"||typeof lR=="function")for(let bU of RV(lR))!ZV.call(rl,bU)&&bU!==uR&&J(rl,bU,{get:()=>lR[bU],enumerable:!(IU=VV(lR,bU))||IU.enumerable});return rl},dV=(rl,lR,uR)=>(uR=rl!=null?lV(UV(rl)):{},IV(!rl||!rl.__esModule?J(uR,"default",{value:rl,enumerable:!0}):uR,rl)),CV=rl=>IV(J({},"__esModule",{value:!0}),rl),FV={};WV(FV,{CadViewer:()=>JZ,useExportGltfUrl:()=>eV,useSaveGltfAs:()=>JV}),dist$1=CV(FV);var NV=requireThreeStdlib(),gV=requireReact();function JV(rl={}){const lR=nV(rl),uR=(0,gV.useMemo)(()=>document.createElement("a"),[]),IU=async VZ=>{const uZ=VZ??rl.filename??"";rl.binary==null&&(rl.binary=uZ.endsWith(".glb"));const BZ=await lR(bU);uR.download=uZ,uR.href=BZ,uR.dispatchEvent(new MouseEvent("click")),URL.revokeObjectURL(BZ)};(0,gV.useEffect)(()=>()=>{uR.remove(),bU=null},[]);let bU;return[(0,gV.useCallback)(VZ=>{bU=VZ},[]),IU]}function eV(rl={}){const lR=nV(rl),[uR,IU]=(0,gV.useState)(),[bU,OU]=(0,gV.useState)(),VZ=(0,gV.useCallback)(uZ=>lR(uZ).then(IU).catch(OU),[]);return(0,gV.useEffect)(()=>()=>URL.revokeObjectURL(uR),[uR]),[VZ,uR,bU]}function nV(rl={}){const lR=(0,gV.useMemo)(()=>new NV.GLTFExporter,[]);return uR=>{const{promise:IU,resolve:bU,reject:OU}=Promise.withResolvers();return lR.parse(uR,VZ=>{const uZ=rl.binary?"gltf-binary":"gltf+json",BZ=new Blob([VZ instanceof ArrayBuffer?VZ:JSON.stringify(VZ)],{type:`model/${uZ}`});bU(URL.createObjectURL(BZ))},OU,rl),IU}}var aV=require$$2,GV=requireReact(),YV=(rl,lR)=>(0,GV.useMemo)(()=>{if(!rl)return;const uR=new aV.Circuit;return uR.add(rl),uR.render(),uR.getCircuitJson()},[rl]),AV=requireDist$5(),EV=requireReact(),QV=requireDist$5(),bV=requireTransforms(),iV=requirePrimitives(),HV=requireColors(),DV=requireBooleans(),wV=requirePrimitives(),KV=requireColors(),LV=requireBooleans(),Ul=.01,el={copper:[.9,.6,.2],fr4Green:[5/255,163/255,46/255],fr4GreenSolderWithMask:[0/255,152/255,19/255]},hl=(rl,lR)=>{if(rl.shape||(rl.shape="circle"),rl.shape==="circle")return(0,KV.colorize)(el.copper,(0,LV.subtract)((0,LV.union)((0,wV.cylinder)({center:[rl.x,rl.y,0],radius:rl.hole_diameter/2,height:1.2}),(0,wV.cylinder)({center:[rl.x,rl.y,1.2/2],radius:rl.outer_diameter/2,height:Ul}),(0,wV.cylinder)({center:[rl.x,rl.y,-1.2/2],radius:rl.outer_diameter/2,height:Ul})),(0,wV.cylinder)({center:[rl.x,rl.y,0],radius:rl.hole_diameter/2-Ul,height:1.5})));if(rl.shape==="pill"){const uR=rl.hole_height>rl.hole_width,IU=uR?rl.hole_height:rl.hole_width,bU=uR?rl.hole_width:rl.hole_height,OU=uR?rl.outer_width||IU+.2:rl.outer_height||bU+.2,VZ=bU/2,uZ=Math.abs(IU-bU),BZ=(0,wV.cuboid)({center:uR?[rl.x,rl.y,0]:[rl.x,rl.y,0],size:uR?[bU,uZ,1.2]:[uZ,bU,1.2]}),rZ=(0,wV.cylinder)({center:uR?[rl.x,rl.y-uZ/2,0]:[rl.x-uZ/2,rl.y,0],radius:VZ,height:1.2}),eW=(0,wV.cylinder)({center:uR?[rl.x,rl.y+uZ/2,0]:[rl.x+uZ/2,rl.y,0],radius:VZ,height:1.2}),iW=(0,wV.cuboid)({center:uR?[rl.x,rl.y,1.2/2]:[rl.x,rl.y,1.2/2],size:uR?[OU,uZ,Ul]:[uZ,OU,Ul]}),YZ=(0,wV.cylinder)({center:uR?[rl.x,rl.y-uZ/2,1.2/2]:[rl.x-uZ/2,rl.y,1.2/2],radius:OU/2,height:Ul}),XR=(0,wV.cylinder)({center:uR?[rl.x,rl.y+uZ/2,1.2/2]:[rl.x+uZ/2,rl.y,1.2/2],radius:OU/2,height:Ul}),NU=(0,wV.cuboid)({center:uR?[rl.x,rl.y,-1.2/2]:[rl.x,rl.y,-1.2/2],size:uR?[OU,uZ,Ul]:[uZ,OU,Ul]}),tU=(0,wV.cylinder)({center:uR?[rl.x,rl.y-uZ/2,-1.2/2]:[rl.x-uZ/2,rl.y,-1.2/2],radius:OU/2,height:Ul}),UZ=(0,wV.cylinder)({center:uR?[rl.x,rl.y+uZ/2,-1.2/2]:[rl.x+uZ/2,rl.y,-1.2/2],radius:OU/2,height:Ul});return(0,KV.colorize)(el.copper,(0,LV.subtract)((0,LV.union)(BZ,rZ,eW,iW,YZ,XR,NU,tU,UZ),(0,LV.union)((0,wV.cuboid)({center:[rl.x,rl.y,0],size:uR?[bU-Ul,uZ,1.5]:[uZ,bU-Ul,1.5]}),(0,wV.cylinder)({center:uR?[rl.x,rl.y-uZ/2,0]:[rl.x-uZ/2,rl.y,0],radius:VZ-Ul,height:1.5}),(0,wV.cylinder)({center:uR?[rl.x,rl.y+uZ/2,0]:[rl.x+uZ/2,rl.y,0],radius:VZ-Ul,height:1.5}))))}else throw new Error(`Unsupported plated hole shape: ${rl.shape}`)},Cl=requireExtrusions(),Vl=requireExpansions(),PV=requireExtrusions(),Wl=requirePrimitives(),Jl=requireTransforms(),Fl=rl=>{let lR=0;for(let IU=0;IU<rl.length;IU++){const bU=(IU+1)%rl.length;lR+=rl[IU][0]*rl[bU][1],lR-=rl[bU][0]*rl[IU][1]}return lR/2<=0},al=(rl,lR=1.2)=>{let uR=rl.map(OU=>[OU.x,OU.y]);Fl(uR)&&(uR=uR.reverse());const IU=(0,Wl.polygon)({points:uR});let bU=(0,PV.extrudeLinear)({height:lR},IU);return bU=(0,Jl.translate)([0,0,-lR/2],bU),bU},zl=requireText();function pl(rl){var BZ,rZ,eW,iW;const lR=(0,zl.vectorText)({height:rl.font_size,input:rl.text});lR.forEach(YZ=>{YZ.length===29?(lR.splice(lR.indexOf(YZ),1,YZ.slice(0,15)),lR.splice(lR.indexOf(YZ),0,YZ.slice(14,29))):YZ.length===17&&(lR.splice(lR.indexOf(YZ),1,YZ.slice(0,10)),lR.splice(lR.indexOf(YZ),0,YZ.slice(9,17)))});const uR=lR.flatMap(YZ=>YZ),IU={minX:Math.min(...uR.map(YZ=>YZ[0])),maxX:Math.max(...uR.map(YZ=>YZ[0])),minY:Math.min(...uR.map(YZ=>YZ[1])),maxY:Math.max(...uR.map(YZ=>YZ[1]))},bU=(IU.minX+IU.maxX)/2,OU=(IU.minY+IU.maxY)/2;let VZ=-bU,uZ=-OU;return(BZ=rl.anchor_alignment)!=null&&BZ.includes("right")?VZ=-IU.maxX:(rZ=rl.anchor_alignment)!=null&&rZ.includes("left")&&(VZ=-IU.minX),(eW=rl.anchor_alignment)!=null&&eW.includes("top")?uZ=-IU.maxY:(iW=rl.anchor_alignment)!=null&&iW.includes("bottom")&&(uZ=-IU.minY),{textOutlines:lR,xOffset:VZ,yOffset:uZ}}var Ol=rl=>{const lR=(0,QV.su)(rl).pcb_board.list()[0];if(!lR)throw new Error("No pcb_board found");const uR=(0,QV.su)(rl).pcb_plated_hole.list(),IU=(0,QV.su)(rl).pcb_hole.list(),bU=(0,QV.su)(rl).pcb_smtpad.list(),OU=(0,QV.su)(rl).pcb_trace.list(),VZ=(0,QV.su)(rl).pcb_via.list(),uZ=(0,QV.su)(rl).pcb_silkscreen_text.list();let BZ;lR.outline&&lR.outline.length>0?BZ=al(lR.outline,1.2):BZ=(0,iV.cuboid)({size:[lR.width,lR.height,1.2]});const rZ=[],eW=[],iW=[],YZ=NU=>{if(NU.shape==="circle"){const tU=(0,iV.cylinder)({center:[NU.x,NU.y,0],radius:NU.hole_diameter/2+Ul});BZ=(0,DV.subtract)(BZ,tU);const UZ=hl(NU);rZ.push(UZ)}else if(NU.shape==="pill"){const tU=NU.hole_height>NU.hole_width,UZ=tU?NU.hole_height:NU.hole_width,MZ=tU?NU.hole_width:NU.hole_height,WW=MZ/2,MW=Math.abs(UZ-MZ),oZ=(0,DV.union)((0,iV.cuboid)({center:[NU.x,NU.y,0],size:tU?[MZ,MW,1.5]:[MW,MZ,1.5]}),(0,iV.cylinder)({center:tU?[NU.x,NU.y-MW/2,0]:[NU.x-MW/2,NU.y,0],radius:WW,height:1.5}),(0,iV.cylinder)({center:tU?[NU.x,NU.y+MW/2,0]:[NU.x+MW/2,NU.y,0],radius:WW,height:1.5}));BZ=(0,DV.subtract)(BZ,oZ);const RZ=hl(NU);rZ.push(RZ)}};for(const NU of uR)YZ(NU);for(const NU of IU)if(NU.hole_shape==="round"||NU.hole_shape==="circle"){const tU=(0,iV.cylinder)({center:[NU.x,NU.y,0],radius:NU.hole_diameter/2+Ul});BZ=(0,DV.subtract)(BZ,tU)}for(const NU of bU){const tU=NU.layer==="bottom"?-1:1;if(NU.shape==="rect"){const UZ=(0,HV.colorize)(el.copper,(0,iV.cuboid)({center:[NU.x,NU.y,tU*1.2/2+tU*Ul],size:[NU.width,NU.height,Ul]}));eW.push(UZ)}else if(NU.shape==="circle"){const UZ=(0,HV.colorize)(el.copper,(0,iV.cylinder)({center:[NU.x,NU.y,tU*1.2/2+tU*Ul],radius:NU.radius,height:Ul}));eW.push(UZ)}}for(const{route:NU}of OU){if(NU.length<2)continue;const tU=[];let UZ=[NU[0]],MZ=NU[0].route_type==="wire"?NU[0].layer:"top";for(let WW=1;WW<NU.length;WW++){const MW=NU[WW];MW.route_type==="via"?(tU.push(UZ),UZ=[MW]):MW.route_type==="wire"&&MW.layer!==MZ?(tU.push(UZ),MZ=MW.layer,UZ=[MW]):UZ.push(MW)}tU.push(UZ);for(const WW of tU){if(WW.length<2)continue;const MW=(0,iV.line)(WW.map(UW=>[UW.x,UW.y])),oZ=WW[0].route_type==="via"?WW[0].to_layer==="top"?1:-1:WW[0].layer==="top"?1:-1;let RZ=(0,bV.translate)([0,0,oZ*1.2/2],(0,Cl.extrudeLinear)({height:Ul*oZ},(0,Vl.expand)({delta:.1,corners:"edge"},MW)));const fZ=VZ.map(UW=>(0,iV.cylinder)({center:[UW.x,UW.y,0],radius:UW.outer_diameter/2,height:5})),YW=uR.filter(UW=>UW.shape==="circle").map(UW=>(0,iV.cylinder)({center:[UW.x,UW.y,0],radius:UW.outer_diameter/2,height:5}));RZ=(0,DV.subtract)(RZ,...fZ,...YW),RZ=(0,HV.colorize)(el.fr4GreenSolderWithMask,RZ),iW.push(RZ)}}for(const NU of VZ)YZ({x:NU.x,y:NU.y,hole_diameter:NU.hole_diameter,outer_diameter:NU.outer_diameter,shape:"circle",layers:["top","bottom"],type:"pcb_plated_hole",pcb_plated_hole_id:""});const XR=[];for(const NU of uZ){const{textOutlines:tU,xOffset:UZ,yOffset:MZ}=pl(NU);for(let WW of tU){const MW=WW.map(HW=>[HW[0]+UZ+NU.anchor_position.x,HW[1]+MZ+NU.anchor_position.y]),oZ=(0,iV.line)(MW),RZ=NU.font_size||.25,fZ=Math.min(Math.max(.01,RZ*.1),RZ*.2),YW=(0,Vl.expand)({delta:fZ,corners:"round"},oZ);let UW=(0,bV.translate)([0,0,.6],(0,Cl.extrudeLinear)({height:.012},YW));UW=(0,HV.colorize)([256,256,256],UW),XR.push(UW)}}return BZ=(0,HV.colorize)(el.fr4Green,BZ),[BZ,...rZ,...eW,...iW,...XR]},Pl=requireReact(),Ll=dV(requireStlSerializer());function ZR(rl){return new Promise((lR,uR)=>{const IU=new FileReader;IU.onload=()=>{lR(IU.result)},IU.onerror=uR,IU.readAsDataURL(rl)})}var yl=rl=>{const[lR,uR]=(0,Pl.useState)([]),[IU,bU]=(0,Pl.useState)(!0);return(0,Pl.useEffect)(()=>{if(!rl)return;(async()=>{bU(!0);const uZ=(Array.isArray(rl)?rl:[rl]).map(async BZ=>{const rZ=Ll.default.serialize({binary:!0},[BZ]),eW=new Blob(rZ);return{stlUrl:await ZR(eW),color:BZ.color}});try{const BZ=await Promise.all(uZ);uR(BZ)}catch(BZ){console.error("Error generating STLs:",BZ),uR([])}finally{bU(!1)}})()},[rl]),{stls:lR,loading:IU}},il=require$$12,xl=requireReact(),ql=requireThreeStdlib(),gR=requireJsxRuntime();function ER({stlUrl:rl,mtlUrl:lR,color:uR,opacity:IU=1}){const bU=(0,il.useLoader)(ql.STLLoader,rl),OU=(0,xl.useRef)();return(0,gR.jsxs)("mesh",{ref:OU,children:[(0,gR.jsx)("primitive",{object:bU,attach:"geometry"}),(0,gR.jsx)("meshStandardMaterial",{color:uR,transparent:IU!==1,opacity:IU})]})}var SR=require$$14,jR=require$$12,kR={name:"@tscircuit/3d-viewer",version:"0.0.100",main:"./dist/index.js",files:["dist"],scripts:{start:"bun run storybook","dev:old":"bunx --bun vite",build:"tsup ./src/index.tsx --dts --sourcemap",prepublish:"npm run build",preview:"vite preview",storybook:"storybook dev -p 6006","build-storybook":"storybook build","vercel-build":"bun run build-storybook",format:"biome format . --write","format:check":"biome format ."},dependencies:{"@jscad/modeling":"^2.12.2","@jscad/regl-renderer":"^2.6.9","@jscad/stl-serializer":"^2.1.17","@react-three/drei":"^9.115.0","@react-three/fiber":"^8.16.8","@tscircuit/core":"^0.0.273","@tscircuit/props":"^0.0.130","@tscircuit/react-fiber":"^1.1.29","@tscircuit/soup":"^0.0.69","@tscircuit/soup-util":"^0.0.26","@types/three":"^0.165.0","jscad-electronics":"^0.0.23","jscad-fiber":"^0.0.76","jscad-planner":"^0.0.11",react:"^18.3.1","react-dom":"^18.3.1","react-use-gesture":"^9.1.3",three:"^0.165.0","three-stdlib":"^2.30.3"},devDependencies:{"@biomejs/biome":"^1.8.3","@chromatic-com/storybook":"^1.5.0","@storybook/addon-essentials":"^8.4.7","@storybook/addon-interactions":"^8.4.7","@storybook/addon-links":"^8.4.7","@storybook/addon-onboarding":"^8.4.7","@storybook/blocks":"^8.4.7","@storybook/builder-vite":"^8.4.7","@storybook/react":"^8.4.7","@storybook/react-vite":"^8.4.7","@storybook/test":"^8.4.7","@types/react":"^18.3.3","@types/react-dom":"^18.3.0","@vitejs/plugin-react":"^4.3.4","circuit-json":"^0.0.116","circuit-to-svg":"^0.0.91",storybook:"^8.4.7","strip-ansi":"^7.1.0",tsup:"^8.1.0",typescript:"^5.7.2",vite:"^5.4.11","vite-tsconfig-paths":"^4.3.2"}},oR=require$$14,HR=require$$12,MR=requireReact(),QR=dV(requireThree()),VU=requireJsxRuntime();typeof window<"u"&&(window.TSCI_MAIN_CAMERA_ROTATION=new QR.Euler(0,0,0));function fR(rl,lR){const uR=new QR.Quaternion().setFromEuler(new QR.Euler(rl.x,rl.y,rl.z)),IU=new QR.Vector3(0,0,1);return IU.applyQuaternion(uR),IU.multiplyScalar(lR)}var pU=({})=>{const rl=(0,MR.useRef)();return(0,MR.useRef)({lastRotation:new QR.Euler}),(0,HR.useFrame)((lR,uR)=>{if(!rl.current)return;const IU=window.TSCI_MAIN_CAMERA_ROTATION,bU=fR(IU,2);lR.camera.position.copy(bU),lR.camera.lookAt(0,0,0)}),(0,VU.jsxs)("mesh",{ref:rl,rotation:[Math.PI/2,0,0],children:[(0,VU.jsx)("boxGeometry",{args:[1,1,1]}),(0,VU.jsx)("meshStandardMaterial",{color:"white"}),(0,VU.jsx)(oR.Text,{position:[0,0,.51],fontSize:.25,color:"black",children:"Front"}),(0,VU.jsx)(oR.Text,{position:[0,0,-.51],fontSize:.25,color:"black",rotation:[0,Math.PI,0],children:"Back"}),(0,VU.jsx)(oR.Text,{position:[.51,0,0],fontSize:.25,color:"black",rotation:[0,Math.PI/2,0],children:"Right"}),(0,VU.jsx)(oR.Text,{position:[-.51,0,0],fontSize:.25,color:"black",rotation:[0,-Math.PI/2,0],children:"Left"}),(0,VU.jsx)(oR.Text,{position:[0,.51,0],fontSize:.25,color:"black",rotation:[-Math.PI/2,0,0],children:"Top"}),(0,VU.jsx)(oR.Text,{position:[0,-.51,0],fontSize:.25,color:"black",rotation:[Math.PI/2,0,0],children:"Bottom"}),(0,VU.jsx)("lineSegments",{args:[new QR.EdgesGeometry(new QR.BoxGeometry(1,1,1))],material:new QR.LineBasicMaterial({color:0,linewidth:2})})]})},uU=requireReact(),PU=require$$14,PR=requireJsxRuntime(),yR=()=>((0,jR.useFrame)(({camera:rl})=>{window.TSCI_MAIN_CAMERA_ROTATION=rl.rotation}),(0,PR.jsx)(PR.Fragment,{})),EU=(0,uU.forwardRef)(({children:rl,hoveredComponent:lR},uR)=>(0,PR.jsxs)("div",{style:{position:"relative",width:"100%",height:"100%"},children:[(0,PR.jsx)("div",{style:{position:"absolute",top:0,left:0,width:120,height:120},children:(0,PR.jsxs)(jR.Canvas,{camera:{up:[0,0,1],position:[1,1,1]},style:{zIndex:10},children:[(0,PR.jsx)("ambientLight",{intensity:Math.PI/2}),(0,PR.jsx)(pU,{})]})}),(0,PR.jsxs)(jR.Canvas,{scene:{up:[0,0,1]},camera:{up:[0,0,1],position:[5,5,5]},children:[(0,PR.jsx)(yR,{}),(0,PR.jsx)(SR.OrbitControls,{autoRotate:!0,autoRotateSpeed:1}),(0,PR.jsx)("ambientLight",{intensity:Math.PI/2}),(0,PR.jsx)("pointLight",{position:[-10,-10,10],decay:0,intensity:Math.PI/4}),(0,PR.jsx)(SR.Grid,{rotation:[Math.PI/2,0,0],infiniteGrid:!0,cellSize:1,sectionSize:10}),(0,PR.jsx)("object3D",{ref:uR,children:rl}),lR&&(0,PR.jsx)(PU.Html,{position:lR.mousePosition,style:{fontFamily:"sans-serif",transform:"translate3d(50%, 50%, 0)",backgroundColor:"white",padding:"5px",borderRadius:"3px",pointerEvents:"none",userSelect:"none",WebkitUserSelect:"none",MozUserSelect:"none",msUserSelect:"none"},children:lR.name})]}),(0,PR.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:["@",kR.version]})]})),rR=requireReact(),IR=dV(requireThree()),BR=requireJsxRuntime(),xR=rl=>(0,BR.jsx)("group",{...rl}),iR=({children:rl,isHovered:lR,onHover:uR,position:IU})=>{const bU=(0,rR.useRef)(null),OU=(0,rR.useCallback)(uZ=>{uZ.stopPropagation();try{const BZ=uZ.point||(uZ.intersections&&uZ.intersections.length>0?uZ.intersections[0].point:null)||(IU?new IR.Vector3(...IU):null);BZ?(bU.current=BZ,uR({mousePosition:[BZ.x,BZ.y,BZ.z]})):uR({})}catch(BZ){console.warn("Hover event error:",BZ),uR({})}},[IU]),VZ=(0,rR.useCallback)(uZ=>{uZ.stopPropagation(),bU.current=null,uR(null)},[uR]);return(0,BR.jsx)(xR,{onPointerEnter:OU,onPointerMove:OU,onPointerLeave:VZ,children:rl})},nU=iR,dU=requireReact(),mU=requireThreeStdlib();typeof window<"u"&&!window.TSCIRCUIT_OBJ_LOADER_CACHE&&(window.TSCIRCUIT_OBJ_LOADER_CACHE=new Map);function YR(rl){const[lR,uR]=(0,dU.useState)(null);return(0,dU.useEffect)(()=>{if(!rl)return;const IU=window.TSCIRCUIT_OBJ_LOADER_CACHE;let bU=!1;async function OU(){var uZ;try{const rZ=await(await fetch(rl)).text(),eW=(uZ=rZ.match(/newmtl[\s\S]*?endmtl/g))==null?void 0:uZ.join(`
22438
22438
  `).replace(/d 0\./g,"d 1."),iW=rZ.replace(/newmtl[\s\S]*?endmtl/g,""),YZ=new mU.MTLLoader;YZ.setMaterialOptions({invertTrProperty:!0});const XR=YZ.parse(eW.replace(/Kd\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/g,"Kd $2 $2 $2"),"test.mtl"),NU=new mU.OBJLoader;return NU.setMaterials(XR),NU.parse(iW)}catch(BZ){return BZ}}function VZ(){if(IU.has(rl)){const BZ=IU.get(rl);return BZ.result?Promise.resolve(BZ.result.clone()):BZ.promise.then(rZ=>rZ.clone())}const uZ=OU().then(BZ=>(BZ instanceof Error||IU.set(rl,{...IU.get(rl),result:BZ}),BZ));return IU.set(rl,{promise:uZ,result:null}),uZ}return VZ().then(uZ=>{bU||uR(uZ)}).catch(uZ=>{console.error(uZ)}),()=>{bU=!0}},[rl]),lR}var JU=requireJsxRuntime();function aU({url:rl,position:lR,rotation:uR,onHover:IU,isHovered:bU}){const OU=YR(rl);return OU?OU instanceof Error?(0,JU.jsx)(nU,{isHovered:bU,onHover:IU,children:(0,JU.jsxs)("mesh",{position:lR,children:[(0,JU.jsx)("boxGeometry",{args:[.5,.5,.5]}),(0,JU.jsx)("meshStandardMaterial",{transparent:!0,color:"red",opacity:.5}),(0,JU.jsx)("meshBasicMaterial",{color:"red"})]})}):(0,JU.jsx)(nU,{isHovered:bU,onHover:IU,children:(0,JU.jsx)("primitive",{rotation:uR,position:lR,object:OU})}):(0,JU.jsx)(nU,{isHovered:bU,onHover:IU,children:(0,JU.jsxs)("mesh",{position:lR,children:[(0,JU.jsx)("boxGeometry",{args:[.5,.5,.5]}),(0,JU.jsx)("meshStandardMaterial",{transparent:!0,color:"red",opacity:.25})]})})}var _U=requireDist$4(),sZ=dV(requireSrc$1()),vZ=requireDist$3(),bW=dV(requireThree()),DZ=requireReact(),yW=requireJsxRuntime(),ZZ=({jscadPlan:rl,positionOffset:lR,rotationOffset:uR,onHover:IU,isHovered:bU})=>{const{threeGeom:OU,material:VZ}=(0,DZ.useMemo)(()=>{const uZ=(0,_U.executeJscadOperations)(sZ.default,rl),BZ=(0,vZ.convertCSGToThreeGeom)(uZ),rZ=new bW.MeshStandardMaterial({vertexColors:!0,side:bW.DoubleSide});return{threeGeom:BZ,material:rZ}},[rl]);return(0,DZ.useMemo)(()=>{if(bU){const uZ=new bW.Color(VZ.color.getHex());VZ.emissive.copy(uZ),VZ.emissive.setRGB(0,0,1),VZ.emissiveIntensity=.2}else VZ.emissiveIntensity=0},[bU,VZ]),OU?(0,yW.jsx)(nU,{isHovered:bU,onHover:IU,position:lR,children:(0,yW.jsx)("mesh",{geometry:OU,material:VZ,position:lR,rotation:uR})}):null},QW=require$$19,xW=requireDist$3(),fW=requireDist$4(),VI=requireReact(),LW=requireJsxRuntime(),{createJSCADRoot:TZ}=(0,xW.createJSCADRenderer)(fW.jscadPlanner),hW=({positionOffset:rl,footprint:lR,rotationOffset:uR,onHover:IU,isHovered:bU})=>{const OU=(0,VI.useMemo)(()=>{if(!lR)return null;const VZ=[];return TZ(VZ).render((0,LW.jsx)(QW.Footprinter3d,{footprint:lR})),VZ},[lR]);return OU?(0,LW.jsx)(LW.Fragment,{children:OU.map((VZ,uZ)=>(0,LW.jsx)(ZZ,{positionOffset:rl,rotationOffset:uR,jscadPlan:VZ,onHover:IU,isHovered:bU},uZ))}):null},SW=(...rl)=>rl,EW=requireJsxRuntime(),wW=({cad_component:rl,onHover:lR=()=>{},isHovered:uR=!1})=>{const IU=rl.model_obj_url??rl.model_stl_url,bU=rl.rotation?SW(rl.rotation.x*Math.PI/180,rl.rotation.y*Math.PI/180,rl.rotation.z*Math.PI/180):void 0;if(IU)return(0,EW.jsx)(aU,{url:IU,position:rl.position?[rl.position.x,rl.position.y,rl.position.z]:void 0,rotation:bU,onHover:lR,isHovered:uR},rl.cad_component_id);if(rl.model_jscad)return(0,EW.jsx)(ZZ,{jscadPlan:rl.model_jscad,rotationOffset:bU,onHover:lR,isHovered:uR},rl.cad_component_id);if(rl.footprinter_string)return(0,EW.jsx)(hW,{positionOffset:rl.position?[rl.position.x,rl.position.y,rl.position.z]:void 0,rotationOffset:bU,footprint:rl.footprinter_string,onHover:lR,isHovered:uR})},eZ=dV(requireReact()),wU=class extends eZ.default.Component{constructor(rl){super(rl),this.state={hasError:!1,error:null}}static getDerivedStateFromError(rl){return{hasError:!0,error:rl}}render(){return this.state.hasError&&this.state.error?this.props.fallback({error:this.state.error}):this.props.children}},_R=require$$14,sU=requireJsxRuntime(),$R=({error:rl,cad_component:lR})=>{let uR=[0,0,0];return lR!=null&&lR.position&&(uR=[lR.position.x,lR.position.y,lR.position.z],uR=uR.map(IU=>Number.isNaN(IU)?0:IU)),(0,sU.jsxs)("group",{position:uR,children:[(0,sU.jsxs)("mesh",{renderOrder:-99999,rotation:[Math.PI/4,Math.PI/4,0],ref:IU=>{IU&&(IU.renderOrder=999999)},children:[(0,sU.jsx)("boxGeometry",{args:[.5,.5,.5]}),(0,sU.jsx)("meshStandardMaterial",{depthTest:!1,transparent:!0,color:"red",opacity:.5})]}),(0,sU.jsxs)(_R.Text,{scale:[.1,.1,.1],color:"red",anchorX:"center",anchorY:"middle",depthOffset:-99999,children:[rl.toString().slice(0,50),"..."]})]})},qU=requireJsxRuntime(),JZ=(0,EV.forwardRef)(({soup:rl,children:lR},uR)=>{const[IU,bU]=(0,EV.useState)(null);if(rl??(rl=YV(lR)),!rl)return null;const OU=(0,EV.useMemo)(()=>rl.some(rZ=>rZ.type==="pcb_board")?Ol(rl):null,[rl]),{stls:VZ,loading:uZ}=yl(OU),BZ=(0,AV.su)(rl).cad_component.list();return(0,qU.jsxs)(EU,{ref:uR,hoveredComponent:IU,children:[VZ.map(({stlUrl:rZ,color:eW},iW)=>(0,qU.jsx)(ER,{stlUrl:rZ,color:eW,opacity:iW===0?.95:1},rZ)),BZ.map(rZ=>(0,qU.jsx)(wU,{fallback:({error:eW})=>(0,qU.jsx)($R,{cad_component:rZ,error:eW}),children:(0,qU.jsx)(wW,{onHover:eW=>{var YZ;if(eW||bU(null),!eW.mousePosition)return;const iW=(YZ=(0,AV.su)(rl).source_component.getUsing({source_component_id:rZ.source_component_id}))==null?void 0:YZ.name;bU({cad_component_id:rZ.cad_component_id,name:iW??"<unknown>",mousePosition:eW.mousePosition})},cad_component:rZ,isHovered:(IU==null?void 0:IU.cad_component_id)===rZ.cad_component_id},rZ.cad_component_id)},rZ.cad_component_id))]})});return dist$1}var distExports$1=requireDist$1();const c$1=lV=>typeof lV=="number"&&!isNaN(lV),d$1=lV=>typeof lV=="string",u$1=lV=>typeof lV=="function",p$1=lV=>d$1(lV)||u$1(lV)?lV:null,m$1=lV=>reactExports.isValidElement(lV)||d$1(lV)||u$1(lV)||c$1(lV);function f$1(lV,J,VV){VV===void 0&&(VV=300);const{scrollHeight:RV,style:UV}=lV;requestAnimationFrame(()=>{UV.minHeight="initial",UV.height=RV+"px",UV.transition=`all ${VV}ms`,requestAnimationFrame(()=>{UV.height="0",UV.padding="0",UV.margin="0",setTimeout(J,VV)})})}function g$1(lV){let{enter:J,exit:VV,appendPosition:RV=!1,collapse:UV=!0,collapseDuration:ZV=300}=lV;return function(WV){let{children:IV,position:dV,preventExitTransition:CV,done:FV,nodeRef:NV,isIn:gV,playToast:JV}=WV;const eV=RV?`${J}--${dV}`:J,nV=RV?`${VV}--${dV}`:VV,aV=reactExports.useRef(0);return reactExports.useLayoutEffect(()=>{const GV=NV.current,YV=eV.split(" "),AV=EV=>{EV.target===NV.current&&(JV(),GV.removeEventListener("animationend",AV),GV.removeEventListener("animationcancel",AV),aV.current===0&&EV.type!=="animationcancel"&&GV.classList.remove(...YV))};GV.classList.add(...YV),GV.addEventListener("animationend",AV),GV.addEventListener("animationcancel",AV)},[]),reactExports.useEffect(()=>{const GV=NV.current,YV=()=>{GV.removeEventListener("animationend",YV),UV?f$1(GV,FV,ZV):FV()};gV||(CV?YV():(aV.current=1,GV.className+=` ${nV}`,GV.addEventListener("animationend",YV)))},[gV]),React.createElement(React.Fragment,null,IV)}}function y$1(lV,J){return lV!=null?{content:lV.content,containerId:lV.props.containerId,id:lV.props.toastId,theme:lV.props.theme,type:lV.props.type,data:lV.props.data||{},isLoading:lV.props.isLoading,icon:lV.props.icon,status:J}:{}}const v$1=new Map;let h$1=[];const T$1=new Set,E$1=lV=>T$1.forEach(J=>J(lV)),b$1=()=>v$1.size>0;function I$1(lV,J){var VV;if(J)return!((VV=v$1.get(J))==null||!VV.isToastActive(lV));let RV=!1;return v$1.forEach(UV=>{UV.isToastActive(lV)&&(RV=!0)}),RV}function _$1(lV,J){m$1(lV)&&(b$1()||h$1.push({content:lV,options:J}),v$1.forEach(VV=>{VV.buildToast(lV,J)}))}function C$1(lV,J){v$1.forEach(VV=>{J!=null&&J!=null&&J.containerId?(J==null?void 0:J.containerId)===VV.id&&VV.toggle(lV,J==null?void 0:J.id):VV.toggle(lV,J==null?void 0:J.id)})}function L$1(lV){const{subscribe:J,getSnapshot:VV,setProps:RV}=reactExports.useRef(function(ZV){const WV=ZV.containerId||1;return{subscribe(IV){const dV=function(FV,NV,gV){let JV=1,eV=0,nV=[],aV=[],GV=[],YV=NV;const AV=new Map,EV=new Set,QV=()=>{GV=Array.from(AV.values()),EV.forEach(HV=>HV())},bV=HV=>{aV=HV==null?[]:aV.filter(DV=>DV!==HV),QV()},iV=HV=>{const{toastId:DV,onOpen:wV,updateId:KV,children:LV}=HV.props,Ul=KV==null;HV.staleId&&AV.delete(HV.staleId),AV.set(DV,HV),aV=[...aV,HV.props.toastId].filter(el=>el!==HV.staleId),QV(),gV(y$1(HV,Ul?"added":"updated")),Ul&&u$1(wV)&&wV(reactExports.isValidElement(LV)&&LV.props)};return{id:FV,props:YV,observe:HV=>(EV.add(HV),()=>EV.delete(HV)),toggle:(HV,DV)=>{AV.forEach(wV=>{DV!=null&&DV!==wV.props.toastId||u$1(wV.toggle)&&wV.toggle(HV)})},removeToast:bV,toasts:AV,clearQueue:()=>{eV-=nV.length,nV=[]},buildToast:(HV,DV)=>{if((al=>{let{containerId:zl,toastId:pl,updateId:Ol}=al;const Pl=zl?zl!==FV:FV!==1,Ll=AV.has(pl)&&Ol==null;return Pl||Ll})(DV))return;const{toastId:wV,updateId:KV,data:LV,staleId:Ul,delay:el}=DV,hl=()=>{bV(wV)},Cl=KV==null;Cl&&eV++;const Vl={...YV,style:YV.toastStyle,key:JV++,...Object.fromEntries(Object.entries(DV).filter(al=>{let[zl,pl]=al;return pl!=null})),toastId:wV,updateId:KV,data:LV,closeToast:hl,isIn:!1,className:p$1(DV.className||YV.toastClassName),bodyClassName:p$1(DV.bodyClassName||YV.bodyClassName),progressClassName:p$1(DV.progressClassName||YV.progressClassName),autoClose:!DV.isLoading&&(PV=DV.autoClose,Wl=YV.autoClose,PV===!1||c$1(PV)&&PV>0?PV:Wl),deleteToast(){const al=AV.get(wV),{onClose:zl,children:pl}=al.props;u$1(zl)&&zl(reactExports.isValidElement(pl)&&pl.props),gV(y$1(al,"removed")),AV.delete(wV),eV--,eV<0&&(eV=0),nV.length>0?iV(nV.shift()):QV()}};var PV,Wl;Vl.closeButton=YV.closeButton,DV.closeButton===!1||m$1(DV.closeButton)?Vl.closeButton=DV.closeButton:DV.closeButton===!0&&(Vl.closeButton=!m$1(YV.closeButton)||YV.closeButton);let Jl=HV;reactExports.isValidElement(HV)&&!d$1(HV.type)?Jl=reactExports.cloneElement(HV,{closeToast:hl,toastProps:Vl,data:LV}):u$1(HV)&&(Jl=HV({closeToast:hl,toastProps:Vl,data:LV}));const Fl={content:Jl,props:Vl,staleId:Ul};YV.limit&&YV.limit>0&&eV>YV.limit&&Cl?nV.push(Fl):c$1(el)?setTimeout(()=>{iV(Fl)},el):iV(Fl)},setProps(HV){YV=HV},setToggle:(HV,DV)=>{AV.get(HV).toggle=DV},isToastActive:HV=>aV.some(DV=>DV===HV),getSnapshot:()=>GV}}(WV,ZV,E$1);v$1.set(WV,dV);const CV=dV.observe(IV);return h$1.forEach(FV=>_$1(FV.content,FV.options)),h$1=[],()=>{CV(),v$1.delete(WV)}},setProps(IV){var dV;(dV=v$1.get(WV))==null||dV.setProps(IV)},getSnapshot(){var IV;return(IV=v$1.get(WV))==null?void 0:IV.getSnapshot()}}}(lV)).current;RV(lV);const UV=reactExports.useSyncExternalStore(J,VV,VV);return{getToastToRender:function(ZV){if(!UV)return[];const WV=new Map;return lV.newestOnTop&&UV.reverse(),UV.forEach(IV=>{const{position:dV}=IV.props;WV.has(dV)||WV.set(dV,[]),WV.get(dV).push(IV)}),Array.from(WV,IV=>ZV(IV[0],IV[1]))},isToastActive:I$1,count:UV==null?void 0:UV.length}}function N$1(lV){const[J,VV]=reactExports.useState(!1),[RV,UV]=reactExports.useState(!1),ZV=reactExports.useRef(null),WV=reactExports.useRef({start:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,didMove:!1}).current,{autoClose:IV,pauseOnHover:dV,closeToast:CV,onClick:FV,closeOnClick:NV}=lV;var gV,JV;function eV(){VV(!0)}function nV(){VV(!1)}function aV(AV){const EV=ZV.current;WV.canDrag&&EV&&(WV.didMove=!0,J&&nV(),WV.delta=lV.draggableDirection==="x"?AV.clientX-WV.start:AV.clientY-WV.start,WV.start!==AV.clientX&&(WV.canCloseOnClick=!1),EV.style.transform=`translate3d(${lV.draggableDirection==="x"?`${WV.delta}px, var(--y)`:`0, calc(${WV.delta}px + var(--y))`},0)`,EV.style.opacity=""+(1-Math.abs(WV.delta/WV.removalDistance)))}function GV(){document.removeEventListener("pointermove",aV),document.removeEventListener("pointerup",GV);const AV=ZV.current;if(WV.canDrag&&WV.didMove&&AV){if(WV.canDrag=!1,Math.abs(WV.delta)>WV.removalDistance)return UV(!0),lV.closeToast(),void lV.collapseAll();AV.style.transition="transform 0.2s, opacity 0.2s",AV.style.removeProperty("transform"),AV.style.removeProperty("opacity")}}(JV=v$1.get((gV={id:lV.toastId,containerId:lV.containerId,fn:VV}).containerId||1))==null||JV.setToggle(gV.id,gV.fn),reactExports.useEffect(()=>{if(lV.pauseOnFocusLoss)return document.hasFocus()||nV(),window.addEventListener("focus",eV),window.addEventListener("blur",nV),()=>{window.removeEventListener("focus",eV),window.removeEventListener("blur",nV)}},[lV.pauseOnFocusLoss]);const YV={onPointerDown:function(AV){if(lV.draggable===!0||lV.draggable===AV.pointerType){WV.didMove=!1,document.addEventListener("pointermove",aV),document.addEventListener("pointerup",GV);const EV=ZV.current;WV.canCloseOnClick=!0,WV.canDrag=!0,EV.style.transition="none",lV.draggableDirection==="x"?(WV.start=AV.clientX,WV.removalDistance=EV.offsetWidth*(lV.draggablePercent/100)):(WV.start=AV.clientY,WV.removalDistance=EV.offsetHeight*(lV.draggablePercent===80?1.5*lV.draggablePercent:lV.draggablePercent)/100)}},onPointerUp:function(AV){const{top:EV,bottom:QV,left:bV,right:iV}=ZV.current.getBoundingClientRect();AV.nativeEvent.type!=="touchend"&&lV.pauseOnHover&&AV.clientX>=bV&&AV.clientX<=iV&&AV.clientY>=EV&&AV.clientY<=QV?nV():eV()}};return IV&&dV&&(YV.onMouseEnter=nV,lV.stacked||(YV.onMouseLeave=eV)),NV&&(YV.onClick=AV=>{FV&&FV(AV),WV.canCloseOnClick&&CV()}),{playToast:eV,pauseToast:nV,isRunning:J,preventExitTransition:RV,toastRef:ZV,eventHandlers:YV}}function $$1(lV){let{delay:J,isRunning:VV,closeToast:RV,type:UV="default",hide:ZV,className:WV,style:IV,controlledProgress:dV,progress:CV,rtl:FV,isIn:NV,theme:gV}=lV;const JV=ZV||dV&&CV===0,eV={...IV,animationDuration:`${J}ms`,animationPlayState:VV?"running":"paused"};dV&&(eV.transform=`scaleX(${CV})`);const nV=clsx("Toastify__progress-bar",dV?"Toastify__progress-bar--controlled":"Toastify__progress-bar--animated",`Toastify__progress-bar-theme--${gV}`,`Toastify__progress-bar--${UV}`,{"Toastify__progress-bar--rtl":FV}),aV=u$1(WV)?WV({rtl:FV,type:UV,defaultClassName:nV}):clsx(nV,WV),GV={[dV&&CV>=1?"onTransitionEnd":"onAnimationEnd"]:dV&&CV<1?null:()=>{NV&&RV()}};return React.createElement("div",{className:"Toastify__progress-bar--wrp","data-hidden":JV},React.createElement("div",{className:`Toastify__progress-bar--bg Toastify__progress-bar-theme--${gV} Toastify__progress-bar--${UV}`}),React.createElement("div",{role:"progressbar","aria-hidden":JV?"true":"false","aria-label":"notification timer",className:aV,style:eV,...GV}))}let w$1=1;const k$1=()=>""+w$1++;function P$1(lV){return lV&&(d$1(lV.toastId)||c$1(lV.toastId))?lV.toastId:k$1()}function M$1(lV,J){return _$1(lV,J),J.toastId}function x$1(lV,J){return{...J,type:J&&J.type||lV,toastId:P$1(J)}}function A$1(lV){return(J,VV)=>M$1(J,x$1(lV,VV))}function B$1(lV,J){return M$1(lV,x$1("default",J))}B$1.loading=(lV,J)=>M$1(lV,x$1("default",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...J})),B$1.promise=function(lV,J,VV){let RV,{pending:UV,error:ZV,success:WV}=J;UV&&(RV=d$1(UV)?B$1.loading(UV,VV):B$1.loading(UV.render,{...VV,...UV}));const IV={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},dV=(FV,NV,gV)=>{if(NV==null)return void B$1.dismiss(RV);const JV={type:FV,...IV,...VV,data:gV},eV=d$1(NV)?{render:NV}:NV;return RV?B$1.update(RV,{...JV,...eV}):B$1(eV.render,{...JV,...eV}),gV},CV=u$1(lV)?lV():lV;return CV.then(FV=>dV("success",WV,FV)).catch(FV=>dV("error",ZV,FV)),CV},B$1.success=A$1("success"),B$1.info=A$1("info"),B$1.error=A$1("error"),B$1.warning=A$1("warning"),B$1.warn=B$1.warning,B$1.dark=(lV,J)=>M$1(lV,x$1("default",{theme:"dark",...J})),B$1.dismiss=function(lV){(function(J){var VV;if(b$1()){if(J==null||d$1(VV=J)||c$1(VV))v$1.forEach(RV=>{RV.removeToast(J)});else if(J&&("containerId"in J||"id"in J)){const RV=v$1.get(J.containerId);RV?RV.removeToast(J.id):v$1.forEach(UV=>{UV.removeToast(J.id)})}}else h$1=h$1.filter(RV=>J!=null&&RV.options.toastId!==J)})(lV)},B$1.clearWaitingQueue=function(lV){lV===void 0&&(lV={}),v$1.forEach(J=>{!J.props.limit||lV.containerId&&J.id!==lV.containerId||J.clearQueue()})},B$1.isActive=I$1,B$1.update=function(lV,J){J===void 0&&(J={});const VV=((RV,UV)=>{var ZV;let{containerId:WV}=UV;return(ZV=v$1.get(WV||1))==null?void 0:ZV.toasts.get(RV)})(lV,J);if(VV){const{props:RV,content:UV}=VV,ZV={delay:100,...RV,...J,toastId:J.toastId||lV,updateId:k$1()};ZV.toastId!==lV&&(ZV.staleId=lV);const WV=ZV.render||UV;delete ZV.render,M$1(WV,ZV)}},B$1.done=lV=>{B$1.update(lV,{progress:1})},B$1.onChange=function(lV){return T$1.add(lV),()=>{T$1.delete(lV)}},B$1.play=lV=>C$1(!0,lV),B$1.pause=lV=>C$1(!1,lV);const O$1=typeof window<"u"?reactExports.useLayoutEffect:reactExports.useEffect,D$1=lV=>{let{theme:J,type:VV,isLoading:RV,...UV}=lV;return React.createElement("svg",{viewBox:"0 0 24 24",width:"100%",height:"100%",fill:J==="colored"?"currentColor":`var(--toastify-icon-color-${VV})`,...UV})},z$2={info:function(lV){return React.createElement(D$1,{...lV},React.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(lV){return React.createElement(D$1,{...lV},React.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(lV){return React.createElement(D$1,{...lV},React.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(lV){return React.createElement(D$1,{...lV},React.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 React.createElement("div",{className:"Toastify__spinner"})}},R$1=lV=>{const{isRunning:J,preventExitTransition:VV,toastRef:RV,eventHandlers:UV,playToast:ZV}=N$1(lV),{closeButton:WV,children:IV,autoClose:dV,onClick:CV,type:FV,hideProgressBar:NV,closeToast:gV,transition:JV,position:eV,className:nV,style:aV,bodyClassName:GV,bodyStyle:YV,progressClassName:AV,progressStyle:EV,updateId:QV,role:bV,progress:iV,rtl:HV,toastId:DV,deleteToast:wV,isIn:KV,isLoading:LV,closeOnClick:Ul,theme:el}=lV,hl=clsx("Toastify__toast",`Toastify__toast-theme--${el}`,`Toastify__toast--${FV}`,{"Toastify__toast--rtl":HV},{"Toastify__toast--close-on-click":Ul}),Cl=u$1(nV)?nV({rtl:HV,position:eV,type:FV,defaultClassName:hl}):clsx(hl,nV),Vl=function(Fl){let{theme:al,type:zl,isLoading:pl,icon:Ol}=Fl,Pl=null;const Ll={theme:al,type:zl};return Ol===!1||(u$1(Ol)?Pl=Ol({...Ll,isLoading:pl}):reactExports.isValidElement(Ol)?Pl=reactExports.cloneElement(Ol,Ll):pl?Pl=z$2.spinner():(ZR=>ZR in z$2)(zl)&&(Pl=z$2[zl](Ll))),Pl}(lV),PV=!!iV||!dV,Wl={closeToast:gV,type:FV,theme:el};let Jl=null;return WV===!1||(Jl=u$1(WV)?WV(Wl):reactExports.isValidElement(WV)?reactExports.cloneElement(WV,Wl):function(Fl){let{closeToast:al,theme:zl,ariaLabel:pl="close"}=Fl;return React.createElement("button",{className:`Toastify__close-button Toastify__close-button--${zl}`,type:"button",onClick:Ol=>{Ol.stopPropagation(),al(Ol)},"aria-label":pl},React.createElement("svg",{"aria-hidden":"true",viewBox:"0 0 14 16"},React.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"})))}(Wl)),React.createElement(JV,{isIn:KV,done:wV,position:eV,preventExitTransition:VV,nodeRef:RV,playToast:ZV},React.createElement("div",{id:DV,onClick:CV,"data-in":KV,className:Cl,...UV,style:aV,ref:RV},React.createElement("div",{...KV&&{role:bV},className:u$1(GV)?GV({type:FV}):clsx("Toastify__toast-body",GV),style:YV},Vl!=null&&React.createElement("div",{className:clsx("Toastify__toast-icon",{"Toastify--animate-icon Toastify__zoom-enter":!LV})},Vl),React.createElement("div",null,IV)),Jl,React.createElement($$1,{...QV&&!PV?{key:`pb-${QV}`}:{},rtl:HV,theme:el,delay:dV,isRunning:J,isIn:KV,closeToast:gV,hide:NV,type:FV,style:EV,className:AV,controlledProgress:PV,progress:iV||0})))},S$1=function(lV,J){return J===void 0&&(J=!1),{enter:`Toastify--animate Toastify__${lV}-enter`,exit:`Toastify--animate Toastify__${lV}-exit`,appendPosition:J}},H$1=g$1(S$1("bounce",!0));g$1(S$1("slide",!0)),g$1(S$1("zoom")),g$1(S$1("flip"));const q$1={position:"top-right",transition:H$1,autoClose:5e3,closeButton:!0,pauseOnHover:!0,pauseOnFocusLoss:!0,draggable:"touch",draggablePercent:80,draggableDirection:"x",role:"alert",theme:"light"};function Q$1(lV){let J={...q$1,...lV};const VV=lV.stacked,[RV,UV]=reactExports.useState(!0),ZV=reactExports.useRef(null),{getToastToRender:WV,isToastActive:IV,count:dV}=L$1(J),{className:CV,style:FV,rtl:NV,containerId:gV}=J;function JV(nV){const aV=clsx("Toastify__toast-container",`Toastify__toast-container--${nV}`,{"Toastify__toast-container--rtl":NV});return u$1(CV)?CV({position:nV,rtl:NV,defaultClassName:aV}):clsx(aV,p$1(CV))}function eV(){VV&&(UV(!0),B$1.play())}return O$1(()=>{if(VV){var nV;const aV=ZV.current.querySelectorAll('[data-in="true"]'),GV=12,YV=(nV=J.position)==null?void 0:nV.includes("top");let AV=0,EV=0;Array.from(aV).reverse().forEach((QV,bV)=>{const iV=QV;iV.classList.add("Toastify__toast--stacked"),bV>0&&(iV.dataset.collapsed=`${RV}`),iV.dataset.pos||(iV.dataset.pos=YV?"top":"bot");const HV=AV*(RV?.2:1)+(RV?0:GV*bV);iV.style.setProperty("--y",`${YV?HV:-1*HV}px`),iV.style.setProperty("--g",`${GV}`),iV.style.setProperty("--s",""+(1-(RV?EV:0))),AV+=iV.offsetHeight,EV+=.025})}},[RV,dV,VV]),React.createElement("div",{ref:ZV,className:"Toastify",id:gV,onMouseEnter:()=>{VV&&(UV(!1),B$1.pause())},onMouseLeave:eV},WV((nV,aV)=>{const GV=aV.length?{...FV}:{...FV,pointerEvents:"none"};return React.createElement("div",{className:JV(nV),style:GV,key:`container-${nV}`},aV.map(YV=>{let{content:AV,props:EV}=YV;return React.createElement(R$1,{...EV,stacked:VV,collapseAll:eV,isIn:IV(EV.toastId,EV.containerId),style:EV.style,key:`toast-${EV.key}`},AV)}))}))}function injectStyle(){var lV=':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)}}',J=document.createElement("style");J.innerText=lV,document.head.appendChild(J)}var SuperGrid_1,hasRequiredSuperGrid;function requireSuperGrid(){if(hasRequiredSuperGrid)return SuperGrid_1;hasRequiredSuperGrid=1;var lV=Object.defineProperty,J=Object.getOwnPropertyDescriptor,VV=Object.getOwnPropertyNames,RV=Object.prototype.hasOwnProperty,UV=(aV,GV)=>{for(var YV in GV)lV(aV,YV,{get:GV[YV],enumerable:!0})},ZV=(aV,GV,YV,AV)=>{if(GV&&typeof GV=="object"||typeof GV=="function")for(let EV of VV(GV))!RV.call(aV,EV)&&EV!==YV&&lV(aV,EV,{get:()=>GV[EV],enumerable:!(AV=J(GV,EV))||AV.enumerable});return aV},WV=aV=>ZV(lV({},"__esModule",{value:!0}),aV),IV={};UV(IV,{SuperGrid:()=>nV,toMMSI:()=>eV,toMeterSI:()=>JV}),SuperGrid_1=WV(IV);var dV=requireReact(),CV=require$$0,FV=requireJsxRuntime(),NV=(aV,GV,YV)=>{const AV=[];if(GV<aV)for(let EV=aV;EV>=GV;EV-=Math.abs(YV))AV.push(EV);else for(let EV=aV;EV<=GV;EV+=Math.abs(YV))AV.push(EV);return AV};function gV(aV,GV){return{x:Math.round(GV.x/aV)*aV,y:Math.round(GV.y/aV)*aV}}function JV(aV,GV=1){return aV<0?"-"+JV(-aV):aV<1e-6?"0m":aV>1e3?Math.floor(aV/1e3)+"km":aV>1&&GV>1?Math.round(aV)+"m":aV>1&&GV<=1?aV.toFixed(Math.ceil(-Math.log10(GV)))+"m":aV<1&&GV>=1/1e3?Math.round(aV*1e3)+"mm":aV<1&&GV<1/1e3?(aV*1e3).toFixed(Math.ceil(-Math.log10(GV*1e3)))+"mm":""}function eV(aV,GV=1){return JV(aV/1e3,GV/1e3)}var nV=aV=>{var GV;const YV=(0,dV.useRef)(null),[AV,EV]=(0,dV.useState)({x:0,y:0}),{majorColor:QV="rgba(0,0,0,0.2)",minorColor:bV="rgba(0,0,0,0.1)",textColor:iV=(GV=aV.majorColor)!=null?GV:"rgba(0,0,0,0.5)",width:HV,height:DV,screenSpaceCellSize:wV=200,stringifyCoord:KV=(hl,Cl,Vl)=>`${JV(hl,Vl)}, ${JV(Cl,Vl)}`}=aV,LV=Math.ceil(HV/wV)+2,Ul=Math.ceil(DV/wV)+2;(0,dV.useEffect)(()=>{if(!YV.current)return;const hl=YV.current.getContext("2d");if(!hl)return;const Cl=wV/10**Math.floor(Math.log10(aV.transform.a)),Vl=aV.transform.d<0?-1:1,Wl=wV/10**Math.log10(aV.transform.a)/Cl;function Jl(il,xl,ql){const gR=il;let ER,SR,jR;for(ER=xl.x;ER<=ql.x;ER+=gR)SR=(0,CV.applyToPoint)(aV.transform,{x:ER,y:xl.y}),jR=(0,CV.applyToPoint)(aV.transform,{x:ER,y:ql.y}),hl.beginPath(),hl.moveTo(SR.x,SR.y),hl.lineTo(jR.x,jR.y),hl.stroke();const kR=NV(xl.y,ql.y,gR*Vl);for(const oR of kR)SR=(0,CV.applyToPoint)(aV.transform,{x:xl.x,y:oR}),jR=(0,CV.applyToPoint)(aV.transform,{x:ql.x,y:oR}),hl.beginPath(),hl.moveTo(SR.x,SR.y),hl.lineTo(jR.x,jR.y),hl.stroke()}function Fl(il,xl,ql){const gR=il;let ER;for(ER=xl.x;ER<=ql.x;ER+=gR)for(const SR of NV(xl.y,ql.y,gR*Vl)){const jR=(0,CV.applyToPoint)(aV.transform,{x:ER,y:SR});hl.fillStyle=iV,hl.font="12px sans-serif",hl.fillText(KV(ER,SR,il),jR.x+2,jR.y-2)}}hl.clearRect(0,0,HV,DV);const al=(0,CV.applyToPoint)((0,CV.inverse)(aV.transform),{x:0,y:0}),zl={x:Math.floor((al.x-Cl)/Cl)*Cl,y:Math.floor((al.y-Cl)/Cl+(Vl==-1?2:0))*Cl},pl={x:zl.x+Cl*LV,y:zl.y+Cl*Ul*Vl},Pl=Cl*5,Ll={x:Math.floor((al.x-Pl)/Pl)*Pl,y:Math.floor((al.y-Pl)/Pl+(Vl==-1?2:0))*Pl},ZR={x:Ll.x+Pl*LV,y:Ll.y+Pl*Ul*Vl};hl.globalAlpha=1,hl.strokeStyle=QV,Jl(Cl,zl,pl),Fl(Pl,Ll,ZR),hl.globalAlpha=1-Wl,Jl(Pl/10,Ll,ZR),hl.globalAlpha=1-Wl,hl.strokeStyle=bV,Jl(Cl/10,zl,pl),hl.globalAlpha=Math.max(((1-Wl)*10-5)/5,0),Fl(Pl/10,Ll,ZR),hl.globalAlpha=1;const yl=(0,CV.applyToPoint)(aV.transform,AV);hl.font="12px sans-serif",hl.fillStyle=iV,hl.fillText(KV(AV.x,AV.y,Cl),yl.x+2,yl.y-2),hl.strokeStyle=QV,hl.strokeRect(yl.x-5,yl.y-5,10,10)},[YV,aV.transform,AV,HV,DV]);const el=hl=>{if(!YV.current)return;const Cl=wV/10/10**Math.floor(Math.log10(aV.transform.a)),Vl=YV.current.getBoundingClientRect(),PV=(0,CV.applyToPoint)((0,CV.inverse)(aV.transform),{x:hl.clientX-Vl.left,y:hl.clientY-Vl.top}),Wl=gV(Cl,PV);EV(Wl)};return(0,FV.jsx)("canvas",{onMouseUp:hl=>{hl.button===1&&el(hl)},onDoubleClick:el,ref:YV,width:aV.width,height:aV.height})};return SuperGrid_1}var SuperGridExports=requireSuperGrid(),colorExports=requireColor();const color=getDefaultExportFromCjs$1(colorExports);function pointToSegmentDistance(lV,J,VV){const RV=(VV.x-J.x)**2+(VV.y-J.y)**2;if(RV===0)return distance$1(lV,J);let UV=((lV.x-J.x)*(VV.x-J.x)+(lV.y-J.y)*(VV.y-J.y))/RV;UV=Math.max(0,Math.min(1,UV));const ZV={x:J.x+UV*(VV.x-J.x),y:J.y+UV*(VV.y-J.y)};return distance$1(lV,ZV)}function distance$1(lV,J){const VV=lV.x-J.x,RV=lV.y-J.y;return Math.sqrt(VV*VV+RV*RV)}var isDevelopment$1=!1;function sheetForTag(lV){if(lV.sheet)return lV.sheet;for(var J=0;J<document.styleSheets.length;J++)if(document.styleSheets[J].ownerNode===lV)return document.styleSheets[J]}function createStyleElement(lV){var J=document.createElement("style");return J.setAttribute("data-emotion",lV.key),lV.nonce!==void 0&&J.setAttribute("nonce",lV.nonce),J.appendChild(document.createTextNode("")),J.setAttribute("data-s",""),J}var StyleSheet=function(){function lV(VV){var RV=this;this._insertTag=function(UV){var ZV;RV.tags.length===0?RV.insertionPoint?ZV=RV.insertionPoint.nextSibling:RV.prepend?ZV=RV.container.firstChild:ZV=RV.before:ZV=RV.tags[RV.tags.length-1].nextSibling,RV.container.insertBefore(UV,ZV),RV.tags.push(UV)},this.isSpeedy=VV.speedy===void 0?!isDevelopment$1:VV.speedy,this.tags=[],this.ctr=0,this.nonce=VV.nonce,this.key=VV.key,this.container=VV.container,this.prepend=VV.prepend,this.insertionPoint=VV.insertionPoint,this.before=null}var J=lV.prototype;return J.hydrate=function(RV){RV.forEach(this._insertTag)},J.insert=function(RV){this.ctr%(this.isSpeedy?65e3:1)===0&&this._insertTag(createStyleElement(this));var UV=this.tags[this.tags.length-1];if(this.isSpeedy){var ZV=sheetForTag(UV);try{ZV.insertRule(RV,ZV.cssRules.length)}catch{}}else UV.appendChild(document.createTextNode(RV));this.ctr++},J.flush=function(){this.tags.forEach(function(RV){var UV;return(UV=RV.parentNode)==null?void 0:UV.removeChild(RV)}),this.tags=[],this.ctr=0},lV}(),MS="-ms-",MOZ="-moz-",WEBKIT="-webkit-",COMMENT="comm",RULESET="rule",DECLARATION="decl",IMPORT="@import",KEYFRAMES="@keyframes",LAYER="@layer",abs=Math.abs,from=String.fromCharCode,assign=Object.assign;function hash(lV,J){return charat(lV,0)^45?(((J<<2^charat(lV,0))<<2^charat(lV,1))<<2^charat(lV,2))<<2^charat(lV,3):0}function trim(lV){return lV.trim()}function match(lV,J){return(lV=J.exec(lV))?lV[0]:lV}function replace(lV,J,VV){return lV.replace(J,VV)}function indexof(lV,J){return lV.indexOf(J)}function charat(lV,J){return lV.charCodeAt(J)|0}function substr(lV,J,VV){return lV.slice(J,VV)}function strlen(lV){return lV.length}function sizeof$1(lV){return lV.length}function append(lV,J){return J.push(lV),lV}function combine(lV,J){return lV.map(J).join("")}var line=1,column=1,length=0,position$1=0,character=0,characters="";function node(lV,J,VV,RV,UV,ZV,WV){return{value:lV,root:J,parent:VV,type:RV,props:UV,children:ZV,line,column,length:WV,return:""}}function copy(lV,J){return assign(node("",null,null,"",null,null,0),lV,{length:-lV.length},J)}function char(){return character}function prev(){return character=position$1>0?charat(characters,--position$1):0,column--,character===10&&(column=1,line--),character}function next(){return character=position$1<length?charat(characters,position$1++):0,column++,character===10&&(column=1,line++),character}function peek(){return charat(characters,position$1)}function caret(){return position$1}function slice(lV,J){return substr(characters,lV,J)}function token(lV){switch(lV){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function alloc(lV){return line=column=1,length=strlen(characters=lV),position$1=0,[]}function dealloc(lV){return characters="",lV}function delimit(lV){return trim(slice(position$1-1,delimiter(lV===91?lV+2:lV===40?lV+1:lV)))}function whitespace(lV){for(;(character=peek())&&character<33;)next();return token(lV)>2||token(character)>3?"":" "}function escaping(lV,J){for(;--J&&next()&&!(character<48||character>102||character>57&&character<65||character>70&&character<97););return slice(lV,caret()+(J<6&&peek()==32&&next()==32))}function delimiter(lV){for(;next();)switch(character){case lV:return position$1;case 34:case 39:lV!==34&&lV!==39&&delimiter(character);break;case 40:lV===41&&delimiter(lV);break;case 92:next();break}return position$1}function commenter(lV,J){for(;next()&&lV+character!==57;)if(lV+character===84&&peek()===47)break;return"/*"+slice(J,position$1-1)+"*"+from(lV===47?lV:next())}function identifier(lV){for(;!token(peek());)next();return slice(lV,position$1)}function compile(lV){return dealloc(parse$1("",null,null,null,[""],lV=alloc(lV),0,[0],lV))}function parse$1(lV,J,VV,RV,UV,ZV,WV,IV,dV){for(var CV=0,FV=0,NV=WV,gV=0,JV=0,eV=0,nV=1,aV=1,GV=1,YV=0,AV="",EV=UV,QV=ZV,bV=RV,iV=AV;aV;)switch(eV=YV,YV=next()){case 40:if(eV!=108&&charat(iV,NV-1)==58){indexof(iV+=replace(delimit(YV),"&","&\f"),"&\f")!=-1&&(GV=-1);break}case 34:case 39:case 91:iV+=delimit(YV);break;case 9:case 10:case 13:case 32:iV+=whitespace(eV);break;case 92:iV+=escaping(caret()-1,7);continue;case 47:switch(peek()){case 42:case 47:append(comment(commenter(next(),caret()),J,VV),dV);break;default:iV+="/"}break;case 123*nV:IV[CV++]=strlen(iV)*GV;case 125*nV:case 59:case 0:switch(YV){case 0:case 125:aV=0;case 59+FV:GV==-1&&(iV=replace(iV,/\f/g,"")),JV>0&&strlen(iV)-NV&&append(JV>32?declaration(iV+";",RV,VV,NV-1):declaration(replace(iV," ","")+";",RV,VV,NV-2),dV);break;case 59:iV+=";";default:if(append(bV=ruleset(iV,J,VV,CV,FV,UV,IV,AV,EV=[],QV=[],NV),ZV),YV===123)if(FV===0)parse$1(iV,J,bV,bV,EV,ZV,NV,IV,QV);else switch(gV===99&&charat(iV,3)===110?100:gV){case 100:case 108:case 109:case 115:parse$1(lV,bV,bV,RV&&append(ruleset(lV,bV,bV,0,0,UV,IV,AV,UV,EV=[],NV),QV),UV,QV,NV,IV,RV?EV:QV);break;default:parse$1(iV,bV,bV,bV,[""],QV,0,IV,QV)}}CV=FV=JV=0,nV=GV=1,AV=iV="",NV=WV;break;case 58:NV=1+strlen(iV),JV=eV;default:if(nV<1){if(YV==123)--nV;else if(YV==125&&nV++==0&&prev()==125)continue}switch(iV+=from(YV),YV*nV){case 38:GV=FV>0?1:(iV+="\f",-1);break;case 44:IV[CV++]=(strlen(iV)-1)*GV,GV=1;break;case 64:peek()===45&&(iV+=delimit(next())),gV=peek(),FV=NV=strlen(AV=iV+=identifier(caret())),YV++;break;case 45:eV===45&&strlen(iV)==2&&(nV=0)}}return ZV}function ruleset(lV,J,VV,RV,UV,ZV,WV,IV,dV,CV,FV){for(var NV=UV-1,gV=UV===0?ZV:[""],JV=sizeof$1(gV),eV=0,nV=0,aV=0;eV<RV;++eV)for(var GV=0,YV=substr(lV,NV+1,NV=abs(nV=WV[eV])),AV=lV;GV<JV;++GV)(AV=trim(nV>0?gV[GV]+" "+YV:replace(YV,/&\f/g,gV[GV])))&&(dV[aV++]=AV);return node(lV,J,VV,UV===0?RULESET:IV,dV,CV,FV)}function comment(lV,J,VV){return node(lV,J,VV,COMMENT,from(char()),substr(lV,2,-2),0)}function declaration(lV,J,VV,RV){return node(lV,J,VV,DECLARATION,substr(lV,0,RV),substr(lV,RV+1,-1),RV)}function serialize(lV,J){for(var VV="",RV=sizeof$1(lV),UV=0;UV<RV;UV++)VV+=J(lV[UV],UV,lV,J)||"";return VV}function stringify$1(lV,J,VV,RV){switch(lV.type){case LAYER:if(lV.children.length)break;case IMPORT:case DECLARATION:return lV.return=lV.return||lV.value;case COMMENT:return"";case KEYFRAMES:return lV.return=lV.value+"{"+serialize(lV.children,RV)+"}";case RULESET:lV.value=lV.props.join(",")}return strlen(VV=serialize(lV.children,RV))?lV.return=lV.value+"{"+VV+"}":""}function middleware(lV){var J=sizeof$1(lV);return function(VV,RV,UV,ZV){for(var WV="",IV=0;IV<J;IV++)WV+=lV[IV](VV,RV,UV,ZV)||"";return WV}}function rulesheet(lV){return function(J){J.root||(J=J.return)&&lV(J)}}function memoize(lV){var J=Object.create(null);return function(VV){return J[VV]===void 0&&(J[VV]=lV(VV)),J[VV]}}var identifierWithPointTracking=function lV(J,VV,RV){for(var UV=0,ZV=0;UV=ZV,ZV=peek(),UV===38&&ZV===12&&(VV[RV]=1),!token(ZV);)next();return slice(J,position$1)},toRules=function lV(J,VV){var RV=-1,UV=44;do switch(token(UV)){case 0:UV===38&&peek()===12&&(VV[RV]=1),J[RV]+=identifierWithPointTracking(position$1-1,VV,RV);break;case 2:J[RV]+=delimit(UV);break;case 4:if(UV===44){J[++RV]=peek()===58?"&\f":"",VV[RV]=J[RV].length;break}default:J[RV]+=from(UV)}while(UV=next());return J},getRules=function lV(J,VV){return dealloc(toRules(alloc(J),VV))},fixedElements=new WeakMap,compat=function lV(J){if(!(J.type!=="rule"||!J.parent||J.length<1)){for(var VV=J.value,RV=J.parent,UV=J.column===RV.column&&J.line===RV.line;RV.type!=="rule";)if(RV=RV.parent,!RV)return;if(!(J.props.length===1&&VV.charCodeAt(0)!==58&&!fixedElements.get(RV))&&!UV){fixedElements.set(J,!0);for(var ZV=[],WV=getRules(VV,ZV),IV=RV.props,dV=0,CV=0;dV<WV.length;dV++)for(var FV=0;FV<IV.length;FV++,CV++)J.props[CV]=ZV[dV]?WV[dV].replace(/&\f/g,IV[FV]):IV[FV]+" "+WV[dV]}}},removeLabel=function lV(J){if(J.type==="decl"){var VV=J.value;VV.charCodeAt(0)===108&&VV.charCodeAt(2)===98&&(J.return="",J.value="")}};function prefix(lV,J){switch(hash(lV,J)){case 5103:return WEBKIT+"print-"+lV+lV;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return WEBKIT+lV+lV;case 5349:case 4246:case 4810:case 6968:case 2756:return WEBKIT+lV+MOZ+lV+MS+lV+lV;case 6828:case 4268:return WEBKIT+lV+MS+lV+lV;case 6165:return WEBKIT+lV+MS+"flex-"+lV+lV;case 5187:return WEBKIT+lV+replace(lV,/(\w+).+(:[^]+)/,WEBKIT+"box-$1$2"+MS+"flex-$1$2")+lV;case 5443:return WEBKIT+lV+MS+"flex-item-"+replace(lV,/flex-|-self/,"")+lV;case 4675:return WEBKIT+lV+MS+"flex-line-pack"+replace(lV,/align-content|flex-|-self/,"")+lV;case 5548:return WEBKIT+lV+MS+replace(lV,"shrink","negative")+lV;case 5292:return WEBKIT+lV+MS+replace(lV,"basis","preferred-size")+lV;case 6060:return WEBKIT+"box-"+replace(lV,"-grow","")+WEBKIT+lV+MS+replace(lV,"grow","positive")+lV;case 4554:return WEBKIT+replace(lV,/([^-])(transform)/g,"$1"+WEBKIT+"$2")+lV;case 6187:return replace(replace(replace(lV,/(zoom-|grab)/,WEBKIT+"$1"),/(image-set)/,WEBKIT+"$1"),lV,"")+lV;case 5495:case 3959:return replace(lV,/(image-set\([^]*)/,WEBKIT+"$1$`$1");case 4968:return replace(replace(lV,/(.+:)(flex-)?(.*)/,WEBKIT+"box-pack:$3"+MS+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+WEBKIT+lV+lV;case 4095:case 3583:case 4068:case 2532:return replace(lV,/(.+)-inline(.+)/,WEBKIT+"$1$2")+lV;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(strlen(lV)-1-J>6)switch(charat(lV,J+1)){case 109:if(charat(lV,J+4)!==45)break;case 102:return replace(lV,/(.+:)(.+)-([^]+)/,"$1"+WEBKIT+"$2-$3$1"+MOZ+(charat(lV,J+3)==108?"$3":"$2-$3"))+lV;case 115:return~indexof(lV,"stretch")?prefix(replace(lV,"stretch","fill-available"),J)+lV:lV}break;case 4949:if(charat(lV,J+1)!==115)break;case 6444:switch(charat(lV,strlen(lV)-3-(~indexof(lV,"!important")&&10))){case 107:return replace(lV,":",":"+WEBKIT)+lV;case 101:return replace(lV,/(.+:)([^;!]+)(;|!.+)?/,"$1"+WEBKIT+(charat(lV,14)===45?"inline-":"")+"box$3$1"+WEBKIT+"$2$3$1"+MS+"$2box$3")+lV}break;case 5936:switch(charat(lV,J+11)){case 114:return WEBKIT+lV+MS+replace(lV,/[svh]\w+-[tblr]{2}/,"tb")+lV;case 108:return WEBKIT+lV+MS+replace(lV,/[svh]\w+-[tblr]{2}/,"tb-rl")+lV;case 45:return WEBKIT+lV+MS+replace(lV,/[svh]\w+-[tblr]{2}/,"lr")+lV}return WEBKIT+lV+MS+lV+lV}return lV}var prefixer=function lV(J,VV,RV,UV){if(J.length>-1&&!J.return)switch(J.type){case DECLARATION:J.return=prefix(J.value,J.length);break;case KEYFRAMES:return serialize([copy(J,{value:replace(J.value,"@","@"+WEBKIT)})],UV);case RULESET:if(J.length)return combine(J.props,function(ZV){switch(match(ZV,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return serialize([copy(J,{props:[replace(ZV,/:(read-\w+)/,":"+MOZ+"$1")]})],UV);case"::placeholder":return serialize([copy(J,{props:[replace(ZV,/:(plac\w+)/,":"+WEBKIT+"input-$1")]}),copy(J,{props:[replace(ZV,/:(plac\w+)/,":"+MOZ+"$1")]}),copy(J,{props:[replace(ZV,/:(plac\w+)/,MS+"input-$1")]})],UV)}return""})}},defaultStylisPlugins=[prefixer],createCache=function lV(J){var VV=J.key;if(VV==="css"){var RV=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(RV,function(nV){var aV=nV.getAttribute("data-emotion");aV.indexOf(" ")!==-1&&(document.head.appendChild(nV),nV.setAttribute("data-s",""))})}var UV=J.stylisPlugins||defaultStylisPlugins,ZV={},WV,IV=[];WV=J.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+VV+' "]'),function(nV){for(var aV=nV.getAttribute("data-emotion").split(" "),GV=1;GV<aV.length;GV++)ZV[aV[GV]]=!0;IV.push(nV)});var dV,CV=[compat,removeLabel];{var FV,NV=[stringify$1,rulesheet(function(nV){FV.insert(nV)})],gV=middleware(CV.concat(UV,NV)),JV=function(aV){return serialize(compile(aV),gV)};dV=function(aV,GV,YV,AV){FV=YV,JV(aV?aV+"{"+GV.styles+"}":GV.styles),AV&&(eV.inserted[GV.name]=!0)}}var eV={key:VV,sheet:new StyleSheet({key:VV,container:WV,nonce:J.nonce,speedy:J.speedy,prepend:J.prepend,insertionPoint:J.insertionPoint}),nonce:J.nonce,inserted:ZV,registered:{},insert:dV};return eV.sheet.hydrate(IV),eV};function murmur2(lV){for(var J=0,VV,RV=0,UV=lV.length;UV>=4;++RV,UV-=4)VV=lV.charCodeAt(RV)&255|(lV.charCodeAt(++RV)&255)<<8|(lV.charCodeAt(++RV)&255)<<16|(lV.charCodeAt(++RV)&255)<<24,VV=(VV&65535)*1540483477+((VV>>>16)*59797<<16),VV^=VV>>>24,J=(VV&65535)*1540483477+((VV>>>16)*59797<<16)^(J&65535)*1540483477+((J>>>16)*59797<<16);switch(UV){case 3:J^=(lV.charCodeAt(RV+2)&255)<<16;case 2:J^=(lV.charCodeAt(RV+1)&255)<<8;case 1:J^=lV.charCodeAt(RV)&255,J=(J&65535)*1540483477+((J>>>16)*59797<<16)}return J^=J>>>13,J=(J&65535)*1540483477+((J>>>16)*59797<<16),((J^J>>>15)>>>0).toString(36)}var unitlessKeys={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},isDevelopment=!1,hyphenateRegex=/[A-Z]|^ms/g,animationRegex=/_EMO_([^_]+?)_([^]*?)_EMO_/g,isCustomProperty=function lV(J){return J.charCodeAt(1)===45},isProcessableValue=function lV(J){return J!=null&&typeof J!="boolean"},processStyleName=memoize(function(lV){return isCustomProperty(lV)?lV:lV.replace(hyphenateRegex,"-$&").toLowerCase()}),processStyleValue=function lV(J,VV){switch(J){case"animation":case"animationName":if(typeof VV=="string")return VV.replace(animationRegex,function(RV,UV,ZV){return cursor={name:UV,styles:ZV,next:cursor},UV})}return unitlessKeys[J]!==1&&!isCustomProperty(J)&&typeof VV=="number"&&VV!==0?VV+"px":VV},noComponentSelectorMessage="Component selectors can only be used in conjunction with @emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware compiler transform.";function handleInterpolation(lV,J,VV){if(VV==null)return"";var RV=VV;if(RV.__emotion_styles!==void 0)return RV;switch(typeof VV){case"boolean":return"";case"object":{var UV=VV;if(UV.anim===1)return cursor={name:UV.name,styles:UV.styles,next:cursor},UV.name;var ZV=VV;if(ZV.styles!==void 0){var WV=ZV.next;if(WV!==void 0)for(;WV!==void 0;)cursor={name:WV.name,styles:WV.styles,next:cursor},WV=WV.next;var IV=ZV.styles+";";return IV}return createStringFromObject(lV,J,VV)}}var dV=VV;if(J==null)return dV;var CV=J[dV];return CV!==void 0?CV:dV}function createStringFromObject(lV,J,VV){var RV="";if(Array.isArray(VV))for(var UV=0;UV<VV.length;UV++)RV+=handleInterpolation(lV,J,VV[UV])+";";else for(var ZV in VV){var WV=VV[ZV];if(typeof WV!="object"){var IV=WV;J!=null&&J[IV]!==void 0?RV+=ZV+"{"+J[IV]+"}":isProcessableValue(IV)&&(RV+=processStyleName(ZV)+":"+processStyleValue(ZV,IV)+";")}else{if(ZV==="NO_COMPONENT_SELECTOR"&&isDevelopment)throw new Error(noComponentSelectorMessage);if(Array.isArray(WV)&&typeof WV[0]=="string"&&(J==null||J[WV[0]]===void 0))for(var dV=0;dV<WV.length;dV++)isProcessableValue(WV[dV])&&(RV+=processStyleName(ZV)+":"+processStyleValue(ZV,WV[dV])+";");else{var CV=handleInterpolation(lV,J,WV);switch(ZV){case"animation":case"animationName":{RV+=processStyleName(ZV)+":"+CV+";";break}default:RV+=ZV+"{"+CV+"}"}}}}return RV}var labelPattern=/label:\s*([^\s;{]+)\s*(;|$)/g,cursor;function serializeStyles(lV,J,VV){if(lV.length===1&&typeof lV[0]=="object"&&lV[0]!==null&&lV[0].styles!==void 0)return lV[0];var RV=!0,UV="";cursor=void 0;var ZV=lV[0];if(ZV==null||ZV.raw===void 0)RV=!1,UV+=handleInterpolation(VV,J,ZV);else{var WV=ZV;UV+=WV[0]}for(var IV=1;IV<lV.length;IV++)if(UV+=handleInterpolation(VV,J,lV[IV]),RV){var dV=ZV;UV+=dV[IV]}labelPattern.lastIndex=0;for(var CV="",FV;(FV=labelPattern.exec(UV))!==null;)CV+="-"+FV[1];var NV=murmur2(UV)+CV;return{name:NV,styles:UV,next:cursor}}function getRegisteredStyles(lV,J,VV){var RV="";return VV.split(" ").forEach(function(UV){lV[UV]!==void 0?J.push(lV[UV]+";"):UV&&(RV+=UV+" ")}),RV}var registerStyles=function lV(J,VV,RV){var UV=J.key+"-"+VV.name;J.registered[UV]===void 0&&(J.registered[UV]=VV.styles)},insertStyles=function lV(J,VV,RV){registerStyles(J,VV);var UV=J.key+"-"+VV.name;if(J.inserted[VV.name]===void 0){var ZV=VV;do J.insert(VV===ZV?"."+UV:"",ZV,J.sheet,!0),ZV=ZV.next;while(ZV!==void 0)}};function insertWithoutScoping(lV,J){if(lV.inserted[J.name]===void 0)return lV.insert("",J,lV.sheet,!0)}function merge(lV,J,VV){var RV=[],UV=getRegisteredStyles(lV,RV,VV);return RV.length<2?VV:UV+J(RV)}var createEmotion=function lV(J){var VV=createCache(J);VV.sheet.speedy=function(IV){this.isSpeedy=IV},VV.compat=!0;var RV=function(){for(var dV=arguments.length,CV=new Array(dV),FV=0;FV<dV;FV++)CV[FV]=arguments[FV];var NV=serializeStyles(CV,VV.registered,void 0);return insertStyles(VV,NV),VV.key+"-"+NV.name},UV=function(){for(var dV=arguments.length,CV=new Array(dV),FV=0;FV<dV;FV++)CV[FV]=arguments[FV];var NV=serializeStyles(CV,VV.registered),gV="animation-"+NV.name;return insertWithoutScoping(VV,{name:NV.name,styles:"@keyframes "+gV+"{"+NV.styles+"}"}),gV},ZV=function(){for(var dV=arguments.length,CV=new Array(dV),FV=0;FV<dV;FV++)CV[FV]=arguments[FV];var NV=serializeStyles(CV,VV.registered);insertWithoutScoping(VV,NV)},WV=function(){for(var dV=arguments.length,CV=new Array(dV),FV=0;FV<dV;FV++)CV[FV]=arguments[FV];return merge(VV.registered,RV,classnames(CV))};return{css:RV,cx:WV,injectGlobal:ZV,keyframes:UV,hydrate:function(dV){dV.forEach(function(CV){VV.inserted[CV]=!0})},flush:function(){VV.registered={},VV.inserted={},VV.sheet.flush()},sheet:VV.sheet,cache:VV,getRegisteredStyles:getRegisteredStyles.bind(null,VV.registered),merge:merge.bind(null,VV.registered,RV)}},classnames=function lV(J){for(var VV="",RV=0;RV<J.length;RV++){var UV=J[RV];if(UV!=null){var ZV=void 0;switch(typeof UV){case"boolean":break;case"object":{if(Array.isArray(UV))ZV=lV(UV);else{ZV="";for(var WV in UV)UV[WV]&&WV&&(ZV&&(ZV+=" "),ZV+=WV)}break}default:ZV=UV}ZV&&(VV&&(VV+=" "),VV+=ZV)}}return VV},_createEmotion=createEmotion({key:"css"}),css=_createEmotion.css;function findConnectedNetworks(lV){const J=new Map;let VV=0;function RV(UV){for(const[,WV]of J)if(WV.has(UV))return WV;const ZV=new Set;return J.set(`connectivity_net${VV++}`,ZV),ZV}for(const UV of lV){let ZV=null;for(const WV of UV){if(!ZV)ZV=RV(WV);else if(!ZV.has(WV)){const IV=RV(WV);if(IV!==ZV){for(const dV of IV)ZV.add(dV);J.delete(Array.from(J.entries()).find(([,dV])=>dV===IV)[0])}}ZV.add(WV)}}return Object.fromEntries(Array.from(J.entries()).map(([UV,ZV])=>[UV,Array.from(ZV)]))}var ConnectivityMap=class{constructor(lV){Cd(this,"netMap");Cd(this,"idToNetMap");this.netMap=lV,this.idToNetMap={};for(const[J,VV]of Object.entries(lV))for(const RV of VV)this.idToNetMap[RV]=J}addConnections(lV){for(const J of lV){const VV=new Set;for(const UV of J){const ZV=this.idToNetMap[UV];ZV&&VV.add(ZV)}let RV;if(VV.size===0)RV=`connectivity_net${Object.keys(this.netMap).length}`,this.netMap[RV]=[];else if(VV.size===1)RV=VV.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;else{RV=VV.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;for(const UV of VV)if(UV!==RV){this.netMap[RV].push(...this.netMap[UV]),this.netMap[UV]=this.netMap[RV];for(const ZV of this.netMap[RV])this.idToNetMap[ZV]=RV}}for(const UV of J)this.netMap[RV].includes(UV)||this.netMap[RV].push(UV),this.idToNetMap[UV]=RV}}getIdsConnectedToNet(lV){return this.netMap[lV]||[]}getNetConnectedToId(lV){return this.idToNetMap[lV]}areIdsConnected(lV,J){const VV=this.getNetConnectedToId(lV),RV=this.getNetConnectedToId(J);return VV===RV||RV===lV||RV===lV}areAllIdsConnected(lV){const J=this.getNetConnectedToId(lV[0]);for(const VV of lV){const RV=this.getNetConnectedToId(VV);if(RV===void 0||RV!==J)return!1}return!0}},getFullConnectivityMapFromCircuitJson=lV=>{const J=[];for(const RV of lV)if(RV.type==="source_trace")J.push([RV.source_trace_id,...RV.connected_source_port_ids??[],...RV.connected_source_net_ids??[]].filter(Boolean));else if(RV.type==="pcb_port"){const{pcb_port_id:UV,source_port_id:ZV}=RV;ZV&&UV&&J.push([ZV,UV])}else if(RV.type==="pcb_smtpad"){const{pcb_smtpad_id:UV,pcb_port_id:ZV}=RV;ZV&&UV&&J.push([UV,ZV])}else if(RV.type==="pcb_plated_hole"){const{pcb_plated_hole_id:UV,pcb_port_id:ZV}=RV;ZV&&UV&&J.push([UV,ZV])}else if(RV.type==="pcb_trace"){const{pcb_trace_id:UV,source_trace_id:ZV}=RV;ZV&&UV&&J.push([UV,ZV])}const VV=findConnectedNetworks(J);return new ConnectivityMap(VV)},__defProp=Object.defineProperty,__export=(lV,J)=>{for(var VV in J)__defProp(lV,VV,{get:J[VV],enumerable:!0})},dist_exports={};__export(dist_exports,{all_layers:()=>all_layers,any_circuit_element:()=>any_circuit_element,any_soup_element:()=>any_soup_element,any_source_component:()=>any_source_component,battery_capacity:()=>battery_capacity,cad_component:()=>cad_component,capacitance:()=>capacitance,current:()=>current,distance:()=>distance,frequency:()=>frequency,getZodPrefixedIdWithDefault:()=>getZodPrefixedIdWithDefault,inductance:()=>inductance,layer_ref:()=>layer_ref,layer_string:()=>layer_string,length:()=>length2,pcb_board:()=>pcb_board,pcb_component:()=>pcb_component,pcb_fabrication_note_path:()=>pcb_fabrication_note_path,pcb_fabrication_note_text:()=>pcb_fabrication_note_text,pcb_group:()=>pcb_group,pcb_hole:()=>pcb_hole,pcb_hole_circle_or_square_shape:()=>pcb_hole_circle_or_square_shape,pcb_hole_oval_shape:()=>pcb_hole_oval_shape,pcb_keepout:()=>pcb_keepout,pcb_manual_edit_conflict_error:()=>pcb_manual_edit_conflict_error,pcb_missing_footprint_error:()=>pcb_missing_footprint_error,pcb_placement_error:()=>pcb_placement_error,pcb_plated_hole:()=>pcb_plated_hole,pcb_port:()=>pcb_port,pcb_port_not_matched_error:()=>pcb_port_not_matched_error,pcb_route_hint:()=>pcb_route_hint,pcb_route_hints:()=>pcb_route_hints,pcb_silkscreen_circle:()=>pcb_silkscreen_circle,pcb_silkscreen_line:()=>pcb_silkscreen_line,pcb_silkscreen_oval:()=>pcb_silkscreen_oval,pcb_silkscreen_path:()=>pcb_silkscreen_path,pcb_silkscreen_rect:()=>pcb_silkscreen_rect,pcb_silkscreen_text:()=>pcb_silkscreen_text,pcb_smtpad:()=>pcb_smtpad,pcb_solder_paste:()=>pcb_solder_paste,pcb_text:()=>pcb_text,pcb_trace:()=>pcb_trace,pcb_trace_error:()=>pcb_trace_error,pcb_trace_hint:()=>pcb_trace_hint,pcb_trace_route_point:()=>pcb_trace_route_point,pcb_trace_route_point_via:()=>pcb_trace_route_point_via,pcb_trace_route_point_wire:()=>pcb_trace_route_point_wire,pcb_via:()=>pcb_via,point:()=>point,point3:()=>point3,port_arrangement:()=>port_arrangement,position:()=>position,position3:()=>position3,resistance:()=>resistance,rotation:()=>rotation,route_hint_point:()=>route_hint_point,schematic_box:()=>schematic_box,schematic_component:()=>schematic_component,schematic_component_port_arrangement_by_sides:()=>schematic_component_port_arrangement_by_sides,schematic_component_port_arrangement_by_size:()=>schematic_component_port_arrangement_by_size,schematic_debug_line:()=>schematic_debug_line,schematic_debug_object:()=>schematic_debug_object,schematic_debug_object_base:()=>schematic_debug_object_base,schematic_debug_point:()=>schematic_debug_point,schematic_debug_rect:()=>schematic_debug_rect,schematic_error:()=>schematic_error,schematic_line:()=>schematic_line,schematic_net_label:()=>schematic_net_label,schematic_path:()=>schematic_path,schematic_pin_styles:()=>schematic_pin_styles,schematic_port:()=>schematic_port,schematic_text:()=>schematic_text,schematic_trace:()=>schematic_trace,schematic_voltage_probe:()=>schematic_voltage_probe,size:()=>size$3,source_component_base:()=>source_component_base,source_group:()=>source_group,source_led:()=>source_led,source_net:()=>source_net,source_port:()=>source_port,source_simple_battery:()=>source_simple_battery,source_simple_bug:()=>source_simple_bug,source_simple_capacitor:()=>source_simple_capacitor,source_simple_chip:()=>source_simple_chip,source_simple_crystal:()=>source_simple_crystal,source_simple_diode:()=>source_simple_diode,source_simple_ground:()=>source_simple_ground,source_simple_inductor:()=>source_simple_inductor,source_simple_mosfet:()=>source_simple_mosfet,source_simple_pin_header:()=>source_simple_pin_header,source_simple_potentiometer:()=>source_simple_potentiometer,source_simple_power_source:()=>source_simple_power_source,source_simple_push_button:()=>source_simple_push_button,source_simple_resistor:()=>source_simple_resistor,source_simple_resonator:()=>source_simple_resonator,source_simple_transistor:()=>source_simple_transistor,source_trace:()=>source_trace,supplier_name:()=>supplier_name,time:()=>time,visible_layer:()=>visible_layer,voltage:()=>voltage});var util;(function(lV){lV.assertEqual=UV=>UV;function J(UV){}lV.assertIs=J;function VV(UV){throw new Error}lV.assertNever=VV,lV.arrayToEnum=UV=>{const ZV={};for(const WV of UV)ZV[WV]=WV;return ZV},lV.getValidEnumValues=UV=>{const ZV=lV.objectKeys(UV).filter(IV=>typeof UV[UV[IV]]!="number"),WV={};for(const IV of ZV)WV[IV]=UV[IV];return lV.objectValues(WV)},lV.objectValues=UV=>lV.objectKeys(UV).map(function(ZV){return UV[ZV]}),lV.objectKeys=typeof Object.keys=="function"?UV=>Object.keys(UV):UV=>{const ZV=[];for(const WV in UV)Object.prototype.hasOwnProperty.call(UV,WV)&&ZV.push(WV);return ZV},lV.find=(UV,ZV)=>{for(const WV of UV)if(ZV(WV))return WV},lV.isInteger=typeof Number.isInteger=="function"?UV=>Number.isInteger(UV):UV=>typeof UV=="number"&&isFinite(UV)&&Math.floor(UV)===UV;function RV(UV,ZV=" | "){return UV.map(WV=>typeof WV=="string"?`'${WV}'`:WV).join(ZV)}lV.joinValues=RV,lV.jsonStringifyReplacer=(UV,ZV)=>typeof ZV=="bigint"?ZV.toString():ZV})(util||(util={}));var objectUtil;(function(lV){lV.mergeShapes=(J,VV)=>({...J,...VV})})(objectUtil||(objectUtil={}));var ZodParsedType=util.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),getParsedType=lV=>{switch(typeof lV){case"undefined":return ZodParsedType.undefined;case"string":return ZodParsedType.string;case"number":return isNaN(lV)?ZodParsedType.nan:ZodParsedType.number;case"boolean":return ZodParsedType.boolean;case"function":return ZodParsedType.function;case"bigint":return ZodParsedType.bigint;case"symbol":return ZodParsedType.symbol;case"object":return Array.isArray(lV)?ZodParsedType.array:lV===null?ZodParsedType.null:lV.then&&typeof lV.then=="function"&&lV.catch&&typeof lV.catch=="function"?ZodParsedType.promise:typeof Map<"u"&&lV instanceof Map?ZodParsedType.map:typeof Set<"u"&&lV instanceof Set?ZodParsedType.set:typeof Date<"u"&&lV instanceof Date?ZodParsedType.date:ZodParsedType.object;default:return ZodParsedType.unknown}},ZodIssueCode=util.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),quotelessJson=lV=>JSON.stringify(lV,null,2).replace(/"([^"]+)":/g,"$1:"),ZodError=class iB extends Error{get errors(){return this.issues}constructor(J){super(),this.issues=[],this.addIssue=RV=>{this.issues=[...this.issues,RV]},this.addIssues=(RV=[])=>{this.issues=[...this.issues,...RV]};const VV=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,VV):this.__proto__=VV,this.name="ZodError",this.issues=J}format(J){const VV=J||function(ZV){return ZV.message},RV={_errors:[]},UV=ZV=>{for(const WV of ZV.issues)if(WV.code==="invalid_union")WV.unionErrors.map(UV);else if(WV.code==="invalid_return_type")UV(WV.returnTypeError);else if(WV.code==="invalid_arguments")UV(WV.argumentsError);else if(WV.path.length===0)RV._errors.push(VV(WV));else{let IV=RV,dV=0;for(;dV<WV.path.length;){const CV=WV.path[dV];dV===WV.path.length-1?(IV[CV]=IV[CV]||{_errors:[]},IV[CV]._errors.push(VV(WV))):IV[CV]=IV[CV]||{_errors:[]},IV=IV[CV],dV++}}};return UV(this),RV}static assert(J){if(!(J instanceof iB))throw new Error(`Not a ZodError: ${J}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,util.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(J=VV=>VV.message){const VV={},RV=[];for(const UV of this.issues)UV.path.length>0?(VV[UV.path[0]]=VV[UV.path[0]]||[],VV[UV.path[0]].push(J(UV))):RV.push(J(UV));return{formErrors:RV,fieldErrors:VV}}get formErrors(){return this.flatten()}};ZodError.create=lV=>new ZodError(lV);var errorMap=(lV,J)=>{let VV;switch(lV.code){case ZodIssueCode.invalid_type:lV.received===ZodParsedType.undefined?VV="Required":VV=`Expected ${lV.expected}, received ${lV.received}`;break;case ZodIssueCode.invalid_literal:VV=`Invalid literal value, expected ${JSON.stringify(lV.expected,util.jsonStringifyReplacer)}`;break;case ZodIssueCode.unrecognized_keys:VV=`Unrecognized key(s) in object: ${util.joinValues(lV.keys,", ")}`;break;case ZodIssueCode.invalid_union:VV="Invalid input";break;case ZodIssueCode.invalid_union_discriminator:VV=`Invalid discriminator value. Expected ${util.joinValues(lV.options)}`;break;case ZodIssueCode.invalid_enum_value:VV=`Invalid enum value. Expected ${util.joinValues(lV.options)}, received '${lV.received}'`;break;case ZodIssueCode.invalid_arguments:VV="Invalid function arguments";break;case ZodIssueCode.invalid_return_type:VV="Invalid function return type";break;case ZodIssueCode.invalid_date:VV="Invalid date";break;case ZodIssueCode.invalid_string:typeof lV.validation=="object"?"includes"in lV.validation?(VV=`Invalid input: must include "${lV.validation.includes}"`,typeof lV.validation.position=="number"&&(VV=`${VV} at one or more positions greater than or equal to ${lV.validation.position}`)):"startsWith"in lV.validation?VV=`Invalid input: must start with "${lV.validation.startsWith}"`:"endsWith"in lV.validation?VV=`Invalid input: must end with "${lV.validation.endsWith}"`:util.assertNever(lV.validation):lV.validation!=="regex"?VV=`Invalid ${lV.validation}`:VV="Invalid";break;case ZodIssueCode.too_small:lV.type==="array"?VV=`Array must contain ${lV.exact?"exactly":lV.inclusive?"at least":"more than"} ${lV.minimum} element(s)`:lV.type==="string"?VV=`String must contain ${lV.exact?"exactly":lV.inclusive?"at least":"over"} ${lV.minimum} character(s)`:lV.type==="number"?VV=`Number must be ${lV.exact?"exactly equal to ":lV.inclusive?"greater than or equal to ":"greater than "}${lV.minimum}`:lV.type==="date"?VV=`Date must be ${lV.exact?"exactly equal to ":lV.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(lV.minimum))}`:VV="Invalid input";break;case ZodIssueCode.too_big:lV.type==="array"?VV=`Array must contain ${lV.exact?"exactly":lV.inclusive?"at most":"less than"} ${lV.maximum} element(s)`:lV.type==="string"?VV=`String must contain ${lV.exact?"exactly":lV.inclusive?"at most":"under"} ${lV.maximum} character(s)`:lV.type==="number"?VV=`Number must be ${lV.exact?"exactly":lV.inclusive?"less than or equal to":"less than"} ${lV.maximum}`:lV.type==="bigint"?VV=`BigInt must be ${lV.exact?"exactly":lV.inclusive?"less than or equal to":"less than"} ${lV.maximum}`:lV.type==="date"?VV=`Date must be ${lV.exact?"exactly":lV.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(lV.maximum))}`:VV="Invalid input";break;case ZodIssueCode.custom:VV="Invalid input";break;case ZodIssueCode.invalid_intersection_types:VV="Intersection results could not be merged";break;case ZodIssueCode.not_multiple_of:VV=`Number must be a multiple of ${lV.multipleOf}`;break;case ZodIssueCode.not_finite:VV="Number must be finite";break;default:VV=J.defaultError,util.assertNever(lV)}return{message:VV}},overrideErrorMap=errorMap;function setErrorMap(lV){overrideErrorMap=lV}function getErrorMap(){return overrideErrorMap}var makeIssue=lV=>{const{data:J,path:VV,errorMaps:RV,issueData:UV}=lV,ZV=[...VV,...UV.path||[]],WV={...UV,path:ZV};if(UV.message!==void 0)return{...UV,path:ZV,message:UV.message};let IV="";const dV=RV.filter(CV=>!!CV).slice().reverse();for(const CV of dV)IV=CV(WV,{data:J,defaultError:IV}).message;return{...UV,path:ZV,message:IV}},EMPTY_PATH=[];function addIssueToContext(lV,J){const VV=getErrorMap(),RV=makeIssue({issueData:J,data:lV.data,path:lV.path,errorMaps:[lV.common.contextualErrorMap,lV.schemaErrorMap,VV,VV===errorMap?void 0:errorMap].filter(UV=>!!UV)});lV.common.issues.push(RV)}var ParseStatus=class tB{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(J,VV){const RV=[];for(const UV of VV){if(UV.status==="aborted")return INVALID;UV.status==="dirty"&&J.dirty(),RV.push(UV.value)}return{status:J.value,value:RV}}static async mergeObjectAsync(J,VV){const RV=[];for(const UV of VV){const ZV=await UV.key,WV=await UV.value;RV.push({key:ZV,value:WV})}return tB.mergeObjectSync(J,RV)}static mergeObjectSync(J,VV){const RV={};for(const UV of VV){const{key:ZV,value:WV}=UV;if(ZV.status==="aborted"||WV.status==="aborted")return INVALID;ZV.status==="dirty"&&J.dirty(),WV.status==="dirty"&&J.dirty(),ZV.value!=="__proto__"&&(typeof WV.value<"u"||UV.alwaysSet)&&(RV[ZV.value]=WV.value)}return{status:J.value,value:RV}}},INVALID=Object.freeze({status:"aborted"}),DIRTY=lV=>({status:"dirty",value:lV}),OK=lV=>({status:"valid",value:lV}),isAborted=lV=>lV.status==="aborted",isDirty=lV=>lV.status==="dirty",isValid=lV=>lV.status==="valid",isAsync=lV=>typeof Promise<"u"&&lV instanceof Promise;function __classPrivateFieldGet(lV,J,VV,RV){if(typeof J=="function"?lV!==J||!RV:!J.has(lV))throw new TypeError("Cannot read private member from an object whose class did not declare it");return J.get(lV)}function __classPrivateFieldSet(lV,J,VV,RV,UV){if(typeof J=="function"?lV!==J||!UV:!J.has(lV))throw new TypeError("Cannot write private member to an object whose class did not declare it");return J.set(lV,VV),VV}var errorUtil;(function(lV){lV.errToObj=J=>typeof J=="string"?{message:J}:J||{},lV.toString=J=>typeof J=="string"?J:J==null?void 0:J.message})(errorUtil||(errorUtil={}));var _ZodEnum_cache,_ZodNativeEnum_cache,ParseInputLazyPath=class{constructor(lV,J,VV,RV){this._cachedPath=[],this.parent=lV,this.data=J,this._path=VV,this._key=RV}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},handleResult=(lV,J)=>{if(isValid(J))return{success:!0,data:J.value};if(!lV.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const VV=new ZodError(lV.common.issues);return this._error=VV,this._error}}};function processCreateParams(lV){if(!lV)return{};const{errorMap:J,invalid_type_error:VV,required_error:RV,description:UV}=lV;if(J&&(VV||RV))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return J?{errorMap:J,description:UV}:{errorMap:(WV,IV)=>{var dV,CV;const{message:FV}=lV;return WV.code==="invalid_enum_value"?{message:FV??IV.defaultError}:typeof IV.data>"u"?{message:(dV=FV??RV)!==null&&dV!==void 0?dV:IV.defaultError}:WV.code!=="invalid_type"?{message:IV.defaultError}:{message:(CV=FV??VV)!==null&&CV!==void 0?CV:IV.defaultError}},description:UV}}var ZodType=class{get description(){return this._def.description}_getType(lV){return getParsedType(lV.data)}_getOrReturnCtx(lV,J){return J||{common:lV.parent.common,data:lV.data,parsedType:getParsedType(lV.data),schemaErrorMap:this._def.errorMap,path:lV.path,parent:lV.parent}}_processInputParams(lV){return{status:new ParseStatus,ctx:{common:lV.parent.common,data:lV.data,parsedType:getParsedType(lV.data),schemaErrorMap:this._def.errorMap,path:lV.path,parent:lV.parent}}}_parseSync(lV){const J=this._parse(lV);if(isAsync(J))throw new Error("Synchronous parse encountered promise.");return J}_parseAsync(lV){const J=this._parse(lV);return Promise.resolve(J)}parse(lV,J){const VV=this.safeParse(lV,J);if(VV.success)return VV.data;throw VV.error}safeParse(lV,J){var VV;const RV={common:{issues:[],async:(VV=J==null?void 0:J.async)!==null&&VV!==void 0?VV:!1,contextualErrorMap:J==null?void 0:J.errorMap},path:(J==null?void 0:J.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:lV,parsedType:getParsedType(lV)},UV=this._parseSync({data:lV,path:RV.path,parent:RV});return handleResult(RV,UV)}"~validate"(lV){var J,VV;const RV={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:lV,parsedType:getParsedType(lV)};if(!this["~standard"].async)try{const UV=this._parseSync({data:lV,path:[],parent:RV});return isValid(UV)?{value:UV.value}:{issues:RV.common.issues}}catch(UV){!((VV=(J=UV==null?void 0:UV.message)===null||J===void 0?void 0:J.toLowerCase())===null||VV===void 0)&&VV.includes("encountered")&&(this["~standard"].async=!0),RV.common={issues:[],async:!0}}return this._parseAsync({data:lV,path:[],parent:RV}).then(UV=>isValid(UV)?{value:UV.value}:{issues:RV.common.issues})}async parseAsync(lV,J){const VV=await this.safeParseAsync(lV,J);if(VV.success)return VV.data;throw VV.error}async safeParseAsync(lV,J){const VV={common:{issues:[],contextualErrorMap:J==null?void 0:J.errorMap,async:!0},path:(J==null?void 0:J.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:lV,parsedType:getParsedType(lV)},RV=this._parse({data:lV,path:VV.path,parent:VV}),UV=await(isAsync(RV)?RV:Promise.resolve(RV));return handleResult(VV,UV)}refine(lV,J){const VV=RV=>typeof J=="string"||typeof J>"u"?{message:J}:typeof J=="function"?J(RV):J;return this._refinement((RV,UV)=>{const ZV=lV(RV),WV=()=>UV.addIssue({code:ZodIssueCode.custom,...VV(RV)});return typeof Promise<"u"&&ZV instanceof Promise?ZV.then(IV=>IV?!0:(WV(),!1)):ZV?!0:(WV(),!1)})}refinement(lV,J){return this._refinement((VV,RV)=>lV(VV)?!0:(RV.addIssue(typeof J=="function"?J(VV,RV):J),!1))}_refinement(lV){return new ZodEffects({schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"refinement",refinement:lV}})}superRefine(lV){return this._refinement(lV)}constructor(lV){this.spa=this.safeParseAsync,this._def=lV,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:J=>this["~validate"](J)}}optional(){return ZodOptional.create(this,this._def)}nullable(){return ZodNullable.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ZodArray.create(this)}promise(){return ZodPromise.create(this,this._def)}or(lV){return ZodUnion.create([this,lV],this._def)}and(lV){return ZodIntersection.create(this,lV,this._def)}transform(lV){return new ZodEffects({...processCreateParams(this._def),schema:this,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:{type:"transform",transform:lV}})}default(lV){const J=typeof lV=="function"?lV:()=>lV;return new ZodDefault({...processCreateParams(this._def),innerType:this,defaultValue:J,typeName:ZodFirstPartyTypeKind.ZodDefault})}brand(){return new ZodBranded({typeName:ZodFirstPartyTypeKind.ZodBranded,type:this,...processCreateParams(this._def)})}catch(lV){const J=typeof lV=="function"?lV:()=>lV;return new ZodCatch({...processCreateParams(this._def),innerType:this,catchValue:J,typeName:ZodFirstPartyTypeKind.ZodCatch})}describe(lV){const J=this.constructor;return new J({...this._def,description:lV})}pipe(lV){return ZodPipeline.create(this,lV)}readonly(){return ZodReadonly.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},cuidRegex=/^c[^\s-]{8,}$/i,cuid2Regex=/^[0-9a-z]+$/,ulidRegex=/^[0-9A-HJKMNP-TV-Z]{26}$/i,uuidRegex=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,nanoidRegex=/^[a-z0-9_-]{21}$/i,jwtRegex=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,durationRegex=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,emailRegex=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,_emojiRegex="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",emojiRegex,ipv4Regex=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4CidrRegex=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6Regex=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,ipv6CidrRegex=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64Regex=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64urlRegex=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,dateRegexSource="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",dateRegex=new RegExp(`^${dateRegexSource}$`);function timeRegexSource(lV){let J="([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d";return lV.precision?J=`${J}\\.\\d{${lV.precision}}`:lV.precision==null&&(J=`${J}(\\.\\d+)?`),J}function timeRegex(lV){return new RegExp(`^${timeRegexSource(lV)}$`)}function datetimeRegex(lV){let J=`${dateRegexSource}T${timeRegexSource(lV)}`;const VV=[];return VV.push(lV.local?"Z?":"Z"),lV.offset&&VV.push("([+-]\\d{2}:?\\d{2})"),J=`${J}(${VV.join("|")})`,new RegExp(`^${J}$`)}function isValidIP(lV,J){return!!((J==="v4"||!J)&&ipv4Regex.test(lV)||(J==="v6"||!J)&&ipv6Regex.test(lV))}function isValidJWT(lV,J){if(!jwtRegex.test(lV))return!1;try{const[VV]=lV.split("."),RV=VV.replace(/-/g,"+").replace(/_/g,"/").padEnd(VV.length+(4-VV.length%4)%4,"="),UV=JSON.parse(atob(RV));return!(typeof UV!="object"||UV===null||!UV.typ||!UV.alg||J&&UV.alg!==J)}catch{return!1}}function isValidCidr(lV,J){return!!((J==="v4"||!J)&&ipv4CidrRegex.test(lV)||(J==="v6"||!J)&&ipv6CidrRegex.test(lV))}var ZodString=class DM extends ZodType{_parse(J){if(this._def.coerce&&(J.data=String(J.data)),this._getType(J)!==ZodParsedType.string){const ZV=this._getOrReturnCtx(J);return addIssueToContext(ZV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.string,received:ZV.parsedType}),INVALID}const RV=new ParseStatus;let UV;for(const ZV of this._def.checks)if(ZV.kind==="min")J.data.length<ZV.value&&(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{code:ZodIssueCode.too_small,minimum:ZV.value,type:"string",inclusive:!0,exact:!1,message:ZV.message}),RV.dirty());else if(ZV.kind==="max")J.data.length>ZV.value&&(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{code:ZodIssueCode.too_big,maximum:ZV.value,type:"string",inclusive:!0,exact:!1,message:ZV.message}),RV.dirty());else if(ZV.kind==="length"){const WV=J.data.length>ZV.value,IV=J.data.length<ZV.value;(WV||IV)&&(UV=this._getOrReturnCtx(J,UV),WV?addIssueToContext(UV,{code:ZodIssueCode.too_big,maximum:ZV.value,type:"string",inclusive:!0,exact:!0,message:ZV.message}):IV&&addIssueToContext(UV,{code:ZodIssueCode.too_small,minimum:ZV.value,type:"string",inclusive:!0,exact:!0,message:ZV.message}),RV.dirty())}else if(ZV.kind==="email")emailRegex.test(J.data)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{validation:"email",code:ZodIssueCode.invalid_string,message:ZV.message}),RV.dirty());else if(ZV.kind==="emoji")emojiRegex||(emojiRegex=new RegExp(_emojiRegex,"u")),emojiRegex.test(J.data)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{validation:"emoji",code:ZodIssueCode.invalid_string,message:ZV.message}),RV.dirty());else if(ZV.kind==="uuid")uuidRegex.test(J.data)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{validation:"uuid",code:ZodIssueCode.invalid_string,message:ZV.message}),RV.dirty());else if(ZV.kind==="nanoid")nanoidRegex.test(J.data)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{validation:"nanoid",code:ZodIssueCode.invalid_string,message:ZV.message}),RV.dirty());else if(ZV.kind==="cuid")cuidRegex.test(J.data)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{validation:"cuid",code:ZodIssueCode.invalid_string,message:ZV.message}),RV.dirty());else if(ZV.kind==="cuid2")cuid2Regex.test(J.data)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{validation:"cuid2",code:ZodIssueCode.invalid_string,message:ZV.message}),RV.dirty());else if(ZV.kind==="ulid")ulidRegex.test(J.data)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{validation:"ulid",code:ZodIssueCode.invalid_string,message:ZV.message}),RV.dirty());else if(ZV.kind==="url")try{new URL(J.data)}catch{UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{validation:"url",code:ZodIssueCode.invalid_string,message:ZV.message}),RV.dirty()}else ZV.kind==="regex"?(ZV.regex.lastIndex=0,ZV.regex.test(J.data)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{validation:"regex",code:ZodIssueCode.invalid_string,message:ZV.message}),RV.dirty())):ZV.kind==="trim"?J.data=J.data.trim():ZV.kind==="includes"?J.data.includes(ZV.value,ZV.position)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{code:ZodIssueCode.invalid_string,validation:{includes:ZV.value,position:ZV.position},message:ZV.message}),RV.dirty()):ZV.kind==="toLowerCase"?J.data=J.data.toLowerCase():ZV.kind==="toUpperCase"?J.data=J.data.toUpperCase():ZV.kind==="startsWith"?J.data.startsWith(ZV.value)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{code:ZodIssueCode.invalid_string,validation:{startsWith:ZV.value},message:ZV.message}),RV.dirty()):ZV.kind==="endsWith"?J.data.endsWith(ZV.value)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{code:ZodIssueCode.invalid_string,validation:{endsWith:ZV.value},message:ZV.message}),RV.dirty()):ZV.kind==="datetime"?datetimeRegex(ZV).test(J.data)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{code:ZodIssueCode.invalid_string,validation:"datetime",message:ZV.message}),RV.dirty()):ZV.kind==="date"?dateRegex.test(J.data)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{code:ZodIssueCode.invalid_string,validation:"date",message:ZV.message}),RV.dirty()):ZV.kind==="time"?timeRegex(ZV).test(J.data)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{code:ZodIssueCode.invalid_string,validation:"time",message:ZV.message}),RV.dirty()):ZV.kind==="duration"?durationRegex.test(J.data)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{validation:"duration",code:ZodIssueCode.invalid_string,message:ZV.message}),RV.dirty()):ZV.kind==="ip"?isValidIP(J.data,ZV.version)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{validation:"ip",code:ZodIssueCode.invalid_string,message:ZV.message}),RV.dirty()):ZV.kind==="jwt"?isValidJWT(J.data,ZV.alg)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{validation:"jwt",code:ZodIssueCode.invalid_string,message:ZV.message}),RV.dirty()):ZV.kind==="cidr"?isValidCidr(J.data,ZV.version)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{validation:"cidr",code:ZodIssueCode.invalid_string,message:ZV.message}),RV.dirty()):ZV.kind==="base64"?base64Regex.test(J.data)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{validation:"base64",code:ZodIssueCode.invalid_string,message:ZV.message}),RV.dirty()):ZV.kind==="base64url"?base64urlRegex.test(J.data)||(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{validation:"base64url",code:ZodIssueCode.invalid_string,message:ZV.message}),RV.dirty()):util.assertNever(ZV);return{status:RV.value,value:J.data}}_regex(J,VV,RV){return this.refinement(UV=>J.test(UV),{validation:VV,code:ZodIssueCode.invalid_string,...errorUtil.errToObj(RV)})}_addCheck(J){return new DM({...this._def,checks:[...this._def.checks,J]})}email(J){return this._addCheck({kind:"email",...errorUtil.errToObj(J)})}url(J){return this._addCheck({kind:"url",...errorUtil.errToObj(J)})}emoji(J){return this._addCheck({kind:"emoji",...errorUtil.errToObj(J)})}uuid(J){return this._addCheck({kind:"uuid",...errorUtil.errToObj(J)})}nanoid(J){return this._addCheck({kind:"nanoid",...errorUtil.errToObj(J)})}cuid(J){return this._addCheck({kind:"cuid",...errorUtil.errToObj(J)})}cuid2(J){return this._addCheck({kind:"cuid2",...errorUtil.errToObj(J)})}ulid(J){return this._addCheck({kind:"ulid",...errorUtil.errToObj(J)})}base64(J){return this._addCheck({kind:"base64",...errorUtil.errToObj(J)})}base64url(J){return this._addCheck({kind:"base64url",...errorUtil.errToObj(J)})}jwt(J){return this._addCheck({kind:"jwt",...errorUtil.errToObj(J)})}ip(J){return this._addCheck({kind:"ip",...errorUtil.errToObj(J)})}cidr(J){return this._addCheck({kind:"cidr",...errorUtil.errToObj(J)})}datetime(J){var VV,RV;return typeof J=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:J}):this._addCheck({kind:"datetime",precision:typeof(J==null?void 0:J.precision)>"u"?null:J==null?void 0:J.precision,offset:(VV=J==null?void 0:J.offset)!==null&&VV!==void 0?VV:!1,local:(RV=J==null?void 0:J.local)!==null&&RV!==void 0?RV:!1,...errorUtil.errToObj(J==null?void 0:J.message)})}date(J){return this._addCheck({kind:"date",message:J})}time(J){return typeof J=="string"?this._addCheck({kind:"time",precision:null,message:J}):this._addCheck({kind:"time",precision:typeof(J==null?void 0:J.precision)>"u"?null:J==null?void 0:J.precision,...errorUtil.errToObj(J==null?void 0:J.message)})}duration(J){return this._addCheck({kind:"duration",...errorUtil.errToObj(J)})}regex(J,VV){return this._addCheck({kind:"regex",regex:J,...errorUtil.errToObj(VV)})}includes(J,VV){return this._addCheck({kind:"includes",value:J,position:VV==null?void 0:VV.position,...errorUtil.errToObj(VV==null?void 0:VV.message)})}startsWith(J,VV){return this._addCheck({kind:"startsWith",value:J,...errorUtil.errToObj(VV)})}endsWith(J,VV){return this._addCheck({kind:"endsWith",value:J,...errorUtil.errToObj(VV)})}min(J,VV){return this._addCheck({kind:"min",value:J,...errorUtil.errToObj(VV)})}max(J,VV){return this._addCheck({kind:"max",value:J,...errorUtil.errToObj(VV)})}length(J,VV){return this._addCheck({kind:"length",value:J,...errorUtil.errToObj(VV)})}nonempty(J){return this.min(1,errorUtil.errToObj(J))}trim(){return new DM({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new DM({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new DM({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(J=>J.kind==="datetime")}get isDate(){return!!this._def.checks.find(J=>J.kind==="date")}get isTime(){return!!this._def.checks.find(J=>J.kind==="time")}get isDuration(){return!!this._def.checks.find(J=>J.kind==="duration")}get isEmail(){return!!this._def.checks.find(J=>J.kind==="email")}get isURL(){return!!this._def.checks.find(J=>J.kind==="url")}get isEmoji(){return!!this._def.checks.find(J=>J.kind==="emoji")}get isUUID(){return!!this._def.checks.find(J=>J.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(J=>J.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(J=>J.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(J=>J.kind==="cuid2")}get isULID(){return!!this._def.checks.find(J=>J.kind==="ulid")}get isIP(){return!!this._def.checks.find(J=>J.kind==="ip")}get isCIDR(){return!!this._def.checks.find(J=>J.kind==="cidr")}get isBase64(){return!!this._def.checks.find(J=>J.kind==="base64")}get isBase64url(){return!!this._def.checks.find(J=>J.kind==="base64url")}get minLength(){let J=null;for(const VV of this._def.checks)VV.kind==="min"&&(J===null||VV.value>J)&&(J=VV.value);return J}get maxLength(){let J=null;for(const VV of this._def.checks)VV.kind==="max"&&(J===null||VV.value<J)&&(J=VV.value);return J}};ZodString.create=lV=>{var J;return new ZodString({checks:[],typeName:ZodFirstPartyTypeKind.ZodString,coerce:(J=lV==null?void 0:lV.coerce)!==null&&J!==void 0?J:!1,...processCreateParams(lV)})};function floatSafeRemainder(lV,J){const VV=(lV.toString().split(".")[1]||"").length,RV=(J.toString().split(".")[1]||"").length,UV=VV>RV?VV:RV,ZV=parseInt(lV.toFixed(UV).replace(".","")),WV=parseInt(J.toFixed(UV).replace(".",""));return ZV%WV/Math.pow(10,UV)}var ZodNumber=class sb extends ZodType{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(J){if(this._def.coerce&&(J.data=Number(J.data)),this._getType(J)!==ZodParsedType.number){const ZV=this._getOrReturnCtx(J);return addIssueToContext(ZV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.number,received:ZV.parsedType}),INVALID}let RV;const UV=new ParseStatus;for(const ZV of this._def.checks)ZV.kind==="int"?util.isInteger(J.data)||(RV=this._getOrReturnCtx(J,RV),addIssueToContext(RV,{code:ZodIssueCode.invalid_type,expected:"integer",received:"float",message:ZV.message}),UV.dirty()):ZV.kind==="min"?(ZV.inclusive?J.data<ZV.value:J.data<=ZV.value)&&(RV=this._getOrReturnCtx(J,RV),addIssueToContext(RV,{code:ZodIssueCode.too_small,minimum:ZV.value,type:"number",inclusive:ZV.inclusive,exact:!1,message:ZV.message}),UV.dirty()):ZV.kind==="max"?(ZV.inclusive?J.data>ZV.value:J.data>=ZV.value)&&(RV=this._getOrReturnCtx(J,RV),addIssueToContext(RV,{code:ZodIssueCode.too_big,maximum:ZV.value,type:"number",inclusive:ZV.inclusive,exact:!1,message:ZV.message}),UV.dirty()):ZV.kind==="multipleOf"?floatSafeRemainder(J.data,ZV.value)!==0&&(RV=this._getOrReturnCtx(J,RV),addIssueToContext(RV,{code:ZodIssueCode.not_multiple_of,multipleOf:ZV.value,message:ZV.message}),UV.dirty()):ZV.kind==="finite"?Number.isFinite(J.data)||(RV=this._getOrReturnCtx(J,RV),addIssueToContext(RV,{code:ZodIssueCode.not_finite,message:ZV.message}),UV.dirty()):util.assertNever(ZV);return{status:UV.value,value:J.data}}gte(J,VV){return this.setLimit("min",J,!0,errorUtil.toString(VV))}gt(J,VV){return this.setLimit("min",J,!1,errorUtil.toString(VV))}lte(J,VV){return this.setLimit("max",J,!0,errorUtil.toString(VV))}lt(J,VV){return this.setLimit("max",J,!1,errorUtil.toString(VV))}setLimit(J,VV,RV,UV){return new sb({...this._def,checks:[...this._def.checks,{kind:J,value:VV,inclusive:RV,message:errorUtil.toString(UV)}]})}_addCheck(J){return new sb({...this._def,checks:[...this._def.checks,J]})}int(J){return this._addCheck({kind:"int",message:errorUtil.toString(J)})}positive(J){return this._addCheck({kind:"min",value:0,inclusive:!1,message:errorUtil.toString(J)})}negative(J){return this._addCheck({kind:"max",value:0,inclusive:!1,message:errorUtil.toString(J)})}nonpositive(J){return this._addCheck({kind:"max",value:0,inclusive:!0,message:errorUtil.toString(J)})}nonnegative(J){return this._addCheck({kind:"min",value:0,inclusive:!0,message:errorUtil.toString(J)})}multipleOf(J,VV){return this._addCheck({kind:"multipleOf",value:J,message:errorUtil.toString(VV)})}finite(J){return this._addCheck({kind:"finite",message:errorUtil.toString(J)})}safe(J){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:errorUtil.toString(J)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:errorUtil.toString(J)})}get minValue(){let J=null;for(const VV of this._def.checks)VV.kind==="min"&&(J===null||VV.value>J)&&(J=VV.value);return J}get maxValue(){let J=null;for(const VV of this._def.checks)VV.kind==="max"&&(J===null||VV.value<J)&&(J=VV.value);return J}get isInt(){return!!this._def.checks.find(J=>J.kind==="int"||J.kind==="multipleOf"&&util.isInteger(J.value))}get isFinite(){let J=null,VV=null;for(const RV of this._def.checks){if(RV.kind==="finite"||RV.kind==="int"||RV.kind==="multipleOf")return!0;RV.kind==="min"?(VV===null||RV.value>VV)&&(VV=RV.value):RV.kind==="max"&&(J===null||RV.value<J)&&(J=RV.value)}return Number.isFinite(VV)&&Number.isFinite(J)}};ZodNumber.create=lV=>new ZodNumber({checks:[],typeName:ZodFirstPartyTypeKind.ZodNumber,coerce:(lV==null?void 0:lV.coerce)||!1,...processCreateParams(lV)});var ZodBigInt=class Bb extends ZodType{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(J){if(this._def.coerce)try{J.data=BigInt(J.data)}catch{return this._getInvalidInput(J)}if(this._getType(J)!==ZodParsedType.bigint)return this._getInvalidInput(J);let RV;const UV=new ParseStatus;for(const ZV of this._def.checks)ZV.kind==="min"?(ZV.inclusive?J.data<ZV.value:J.data<=ZV.value)&&(RV=this._getOrReturnCtx(J,RV),addIssueToContext(RV,{code:ZodIssueCode.too_small,type:"bigint",minimum:ZV.value,inclusive:ZV.inclusive,message:ZV.message}),UV.dirty()):ZV.kind==="max"?(ZV.inclusive?J.data>ZV.value:J.data>=ZV.value)&&(RV=this._getOrReturnCtx(J,RV),addIssueToContext(RV,{code:ZodIssueCode.too_big,type:"bigint",maximum:ZV.value,inclusive:ZV.inclusive,message:ZV.message}),UV.dirty()):ZV.kind==="multipleOf"?J.data%ZV.value!==BigInt(0)&&(RV=this._getOrReturnCtx(J,RV),addIssueToContext(RV,{code:ZodIssueCode.not_multiple_of,multipleOf:ZV.value,message:ZV.message}),UV.dirty()):util.assertNever(ZV);return{status:UV.value,value:J.data}}_getInvalidInput(J){const VV=this._getOrReturnCtx(J);return addIssueToContext(VV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.bigint,received:VV.parsedType}),INVALID}gte(J,VV){return this.setLimit("min",J,!0,errorUtil.toString(VV))}gt(J,VV){return this.setLimit("min",J,!1,errorUtil.toString(VV))}lte(J,VV){return this.setLimit("max",J,!0,errorUtil.toString(VV))}lt(J,VV){return this.setLimit("max",J,!1,errorUtil.toString(VV))}setLimit(J,VV,RV,UV){return new Bb({...this._def,checks:[...this._def.checks,{kind:J,value:VV,inclusive:RV,message:errorUtil.toString(UV)}]})}_addCheck(J){return new Bb({...this._def,checks:[...this._def.checks,J]})}positive(J){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:errorUtil.toString(J)})}negative(J){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:errorUtil.toString(J)})}nonpositive(J){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:errorUtil.toString(J)})}nonnegative(J){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:errorUtil.toString(J)})}multipleOf(J,VV){return this._addCheck({kind:"multipleOf",value:J,message:errorUtil.toString(VV)})}get minValue(){let J=null;for(const VV of this._def.checks)VV.kind==="min"&&(J===null||VV.value>J)&&(J=VV.value);return J}get maxValue(){let J=null;for(const VV of this._def.checks)VV.kind==="max"&&(J===null||VV.value<J)&&(J=VV.value);return J}};ZodBigInt.create=lV=>{var J;return new ZodBigInt({checks:[],typeName:ZodFirstPartyTypeKind.ZodBigInt,coerce:(J=lV==null?void 0:lV.coerce)!==null&&J!==void 0?J:!1,...processCreateParams(lV)})};var ZodBoolean=class extends ZodType{_parse(lV){if(this._def.coerce&&(lV.data=!!lV.data),this._getType(lV)!==ZodParsedType.boolean){const VV=this._getOrReturnCtx(lV);return addIssueToContext(VV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.boolean,received:VV.parsedType}),INVALID}return OK(lV.data)}};ZodBoolean.create=lV=>new ZodBoolean({typeName:ZodFirstPartyTypeKind.ZodBoolean,coerce:(lV==null?void 0:lV.coerce)||!1,...processCreateParams(lV)});var ZodDate=class bB extends ZodType{_parse(J){if(this._def.coerce&&(J.data=new Date(J.data)),this._getType(J)!==ZodParsedType.date){const ZV=this._getOrReturnCtx(J);return addIssueToContext(ZV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.date,received:ZV.parsedType}),INVALID}if(isNaN(J.data.getTime())){const ZV=this._getOrReturnCtx(J);return addIssueToContext(ZV,{code:ZodIssueCode.invalid_date}),INVALID}const RV=new ParseStatus;let UV;for(const ZV of this._def.checks)ZV.kind==="min"?J.data.getTime()<ZV.value&&(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{code:ZodIssueCode.too_small,message:ZV.message,inclusive:!0,exact:!1,minimum:ZV.value,type:"date"}),RV.dirty()):ZV.kind==="max"?J.data.getTime()>ZV.value&&(UV=this._getOrReturnCtx(J,UV),addIssueToContext(UV,{code:ZodIssueCode.too_big,message:ZV.message,inclusive:!0,exact:!1,maximum:ZV.value,type:"date"}),RV.dirty()):util.assertNever(ZV);return{status:RV.value,value:new Date(J.data.getTime())}}_addCheck(J){return new bB({...this._def,checks:[...this._def.checks,J]})}min(J,VV){return this._addCheck({kind:"min",value:J.getTime(),message:errorUtil.toString(VV)})}max(J,VV){return this._addCheck({kind:"max",value:J.getTime(),message:errorUtil.toString(VV)})}get minDate(){let J=null;for(const VV of this._def.checks)VV.kind==="min"&&(J===null||VV.value>J)&&(J=VV.value);return J!=null?new Date(J):null}get maxDate(){let J=null;for(const VV of this._def.checks)VV.kind==="max"&&(J===null||VV.value<J)&&(J=VV.value);return J!=null?new Date(J):null}};ZodDate.create=lV=>new ZodDate({checks:[],coerce:(lV==null?void 0:lV.coerce)||!1,typeName:ZodFirstPartyTypeKind.ZodDate,...processCreateParams(lV)});var ZodSymbol=class extends ZodType{_parse(lV){if(this._getType(lV)!==ZodParsedType.symbol){const VV=this._getOrReturnCtx(lV);return addIssueToContext(VV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.symbol,received:VV.parsedType}),INVALID}return OK(lV.data)}};ZodSymbol.create=lV=>new ZodSymbol({typeName:ZodFirstPartyTypeKind.ZodSymbol,...processCreateParams(lV)});var ZodUndefined=class extends ZodType{_parse(lV){if(this._getType(lV)!==ZodParsedType.undefined){const VV=this._getOrReturnCtx(lV);return addIssueToContext(VV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.undefined,received:VV.parsedType}),INVALID}return OK(lV.data)}};ZodUndefined.create=lV=>new ZodUndefined({typeName:ZodFirstPartyTypeKind.ZodUndefined,...processCreateParams(lV)});var ZodNull=class extends ZodType{_parse(lV){if(this._getType(lV)!==ZodParsedType.null){const VV=this._getOrReturnCtx(lV);return addIssueToContext(VV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.null,received:VV.parsedType}),INVALID}return OK(lV.data)}};ZodNull.create=lV=>new ZodNull({typeName:ZodFirstPartyTypeKind.ZodNull,...processCreateParams(lV)});var ZodAny=class extends ZodType{constructor(){super(...arguments),this._any=!0}_parse(lV){return OK(lV.data)}};ZodAny.create=lV=>new ZodAny({typeName:ZodFirstPartyTypeKind.ZodAny,...processCreateParams(lV)});var ZodUnknown=class extends ZodType{constructor(){super(...arguments),this._unknown=!0}_parse(lV){return OK(lV.data)}};ZodUnknown.create=lV=>new ZodUnknown({typeName:ZodFirstPartyTypeKind.ZodUnknown,...processCreateParams(lV)});var ZodNever=class extends ZodType{_parse(lV){const J=this._getOrReturnCtx(lV);return addIssueToContext(J,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.never,received:J.parsedType}),INVALID}};ZodNever.create=lV=>new ZodNever({typeName:ZodFirstPartyTypeKind.ZodNever,...processCreateParams(lV)});var ZodVoid=class extends ZodType{_parse(lV){if(this._getType(lV)!==ZodParsedType.undefined){const VV=this._getOrReturnCtx(lV);return addIssueToContext(VV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.void,received:VV.parsedType}),INVALID}return OK(lV.data)}};ZodVoid.create=lV=>new ZodVoid({typeName:ZodFirstPartyTypeKind.ZodVoid,...processCreateParams(lV)});var ZodArray=class SQ extends ZodType{_parse(J){const{ctx:VV,status:RV}=this._processInputParams(J),UV=this._def;if(VV.parsedType!==ZodParsedType.array)return addIssueToContext(VV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:VV.parsedType}),INVALID;if(UV.exactLength!==null){const WV=VV.data.length>UV.exactLength.value,IV=VV.data.length<UV.exactLength.value;(WV||IV)&&(addIssueToContext(VV,{code:WV?ZodIssueCode.too_big:ZodIssueCode.too_small,minimum:IV?UV.exactLength.value:void 0,maximum:WV?UV.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:UV.exactLength.message}),RV.dirty())}if(UV.minLength!==null&&VV.data.length<UV.minLength.value&&(addIssueToContext(VV,{code:ZodIssueCode.too_small,minimum:UV.minLength.value,type:"array",inclusive:!0,exact:!1,message:UV.minLength.message}),RV.dirty()),UV.maxLength!==null&&VV.data.length>UV.maxLength.value&&(addIssueToContext(VV,{code:ZodIssueCode.too_big,maximum:UV.maxLength.value,type:"array",inclusive:!0,exact:!1,message:UV.maxLength.message}),RV.dirty()),VV.common.async)return Promise.all([...VV.data].map((WV,IV)=>UV.type._parseAsync(new ParseInputLazyPath(VV,WV,VV.path,IV)))).then(WV=>ParseStatus.mergeArray(RV,WV));const ZV=[...VV.data].map((WV,IV)=>UV.type._parseSync(new ParseInputLazyPath(VV,WV,VV.path,IV)));return ParseStatus.mergeArray(RV,ZV)}get element(){return this._def.type}min(J,VV){return new SQ({...this._def,minLength:{value:J,message:errorUtil.toString(VV)}})}max(J,VV){return new SQ({...this._def,maxLength:{value:J,message:errorUtil.toString(VV)}})}length(J,VV){return new SQ({...this._def,exactLength:{value:J,message:errorUtil.toString(VV)}})}nonempty(J){return this.min(1,J)}};ZodArray.create=(lV,J)=>new ZodArray({type:lV,minLength:null,maxLength:null,exactLength:null,typeName:ZodFirstPartyTypeKind.ZodArray,...processCreateParams(J)});function deepPartialify(lV){if(lV instanceof ZodObject){const J={};for(const VV in lV.shape){const RV=lV.shape[VV];J[VV]=ZodOptional.create(deepPartialify(RV))}return new ZodObject({...lV._def,shape:()=>J})}else return lV instanceof ZodArray?new ZodArray({...lV._def,type:deepPartialify(lV.element)}):lV instanceof ZodOptional?ZodOptional.create(deepPartialify(lV.unwrap())):lV instanceof ZodNullable?ZodNullable.create(deepPartialify(lV.unwrap())):lV instanceof ZodTuple?ZodTuple.create(lV.items.map(J=>deepPartialify(J))):lV}var ZodObject=class zk extends ZodType{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const J=this._def.shape(),VV=util.objectKeys(J);return this._cached={shape:J,keys:VV}}_parse(J){if(this._getType(J)!==ZodParsedType.object){const CV=this._getOrReturnCtx(J);return addIssueToContext(CV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:CV.parsedType}),INVALID}const{status:RV,ctx:UV}=this._processInputParams(J),{shape:ZV,keys:WV}=this._getCached(),IV=[];if(!(this._def.catchall instanceof ZodNever&&this._def.unknownKeys==="strip"))for(const CV in UV.data)WV.includes(CV)||IV.push(CV);const dV=[];for(const CV of WV){const FV=ZV[CV],NV=UV.data[CV];dV.push({key:{status:"valid",value:CV},value:FV._parse(new ParseInputLazyPath(UV,NV,UV.path,CV)),alwaysSet:CV in UV.data})}if(this._def.catchall instanceof ZodNever){const CV=this._def.unknownKeys;if(CV==="passthrough")for(const FV of IV)dV.push({key:{status:"valid",value:FV},value:{status:"valid",value:UV.data[FV]}});else if(CV==="strict")IV.length>0&&(addIssueToContext(UV,{code:ZodIssueCode.unrecognized_keys,keys:IV}),RV.dirty());else if(CV!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const CV=this._def.catchall;for(const FV of IV){const NV=UV.data[FV];dV.push({key:{status:"valid",value:FV},value:CV._parse(new ParseInputLazyPath(UV,NV,UV.path,FV)),alwaysSet:FV in UV.data})}}return UV.common.async?Promise.resolve().then(async()=>{const CV=[];for(const FV of dV){const NV=await FV.key,gV=await FV.value;CV.push({key:NV,value:gV,alwaysSet:FV.alwaysSet})}return CV}).then(CV=>ParseStatus.mergeObjectSync(RV,CV)):ParseStatus.mergeObjectSync(RV,dV)}get shape(){return this._def.shape()}strict(J){return errorUtil.errToObj,new zk({...this._def,unknownKeys:"strict",...J!==void 0?{errorMap:(VV,RV)=>{var UV,ZV,WV,IV;const dV=(WV=(ZV=(UV=this._def).errorMap)===null||ZV===void 0?void 0:ZV.call(UV,VV,RV).message)!==null&&WV!==void 0?WV:RV.defaultError;return VV.code==="unrecognized_keys"?{message:(IV=errorUtil.errToObj(J).message)!==null&&IV!==void 0?IV:dV}:{message:dV}}}:{}})}strip(){return new zk({...this._def,unknownKeys:"strip"})}passthrough(){return new zk({...this._def,unknownKeys:"passthrough"})}extend(J){return new zk({...this._def,shape:()=>({...this._def.shape(),...J})})}merge(J){return new zk({unknownKeys:J._def.unknownKeys,catchall:J._def.catchall,shape:()=>({...this._def.shape(),...J._def.shape()}),typeName:ZodFirstPartyTypeKind.ZodObject})}setKey(J,VV){return this.augment({[J]:VV})}catchall(J){return new zk({...this._def,catchall:J})}pick(J){const VV={};return util.objectKeys(J).forEach(RV=>{J[RV]&&this.shape[RV]&&(VV[RV]=this.shape[RV])}),new zk({...this._def,shape:()=>VV})}omit(J){const VV={};return util.objectKeys(this.shape).forEach(RV=>{J[RV]||(VV[RV]=this.shape[RV])}),new zk({...this._def,shape:()=>VV})}deepPartial(){return deepPartialify(this)}partial(J){const VV={};return util.objectKeys(this.shape).forEach(RV=>{const UV=this.shape[RV];J&&!J[RV]?VV[RV]=UV:VV[RV]=UV.optional()}),new zk({...this._def,shape:()=>VV})}required(J){const VV={};return util.objectKeys(this.shape).forEach(RV=>{if(J&&!J[RV])VV[RV]=this.shape[RV];else{let ZV=this.shape[RV];for(;ZV instanceof ZodOptional;)ZV=ZV._def.innerType;VV[RV]=ZV}}),new zk({...this._def,shape:()=>VV})}keyof(){return createZodEnum(util.objectKeys(this.shape))}};ZodObject.create=(lV,J)=>new ZodObject({shape:()=>lV,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(J)}),ZodObject.strictCreate=(lV,J)=>new ZodObject({shape:()=>lV,unknownKeys:"strict",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(J)}),ZodObject.lazycreate=(lV,J)=>new ZodObject({shape:lV,unknownKeys:"strip",catchall:ZodNever.create(),typeName:ZodFirstPartyTypeKind.ZodObject,...processCreateParams(J)});var ZodUnion=class extends ZodType{_parse(lV){const{ctx:J}=this._processInputParams(lV),VV=this._def.options;function RV(UV){for(const WV of UV)if(WV.result.status==="valid")return WV.result;for(const WV of UV)if(WV.result.status==="dirty")return J.common.issues.push(...WV.ctx.common.issues),WV.result;const ZV=UV.map(WV=>new ZodError(WV.ctx.common.issues));return addIssueToContext(J,{code:ZodIssueCode.invalid_union,unionErrors:ZV}),INVALID}if(J.common.async)return Promise.all(VV.map(async UV=>{const ZV={...J,common:{...J.common,issues:[]},parent:null};return{result:await UV._parseAsync({data:J.data,path:J.path,parent:ZV}),ctx:ZV}})).then(RV);{let UV;const ZV=[];for(const IV of VV){const dV={...J,common:{...J.common,issues:[]},parent:null},CV=IV._parseSync({data:J.data,path:J.path,parent:dV});if(CV.status==="valid")return CV;CV.status==="dirty"&&!UV&&(UV={result:CV,ctx:dV}),dV.common.issues.length&&ZV.push(dV.common.issues)}if(UV)return J.common.issues.push(...UV.ctx.common.issues),UV.result;const WV=ZV.map(IV=>new ZodError(IV));return addIssueToContext(J,{code:ZodIssueCode.invalid_union,unionErrors:WV}),INVALID}}get options(){return this._def.options}};ZodUnion.create=(lV,J)=>new ZodUnion({options:lV,typeName:ZodFirstPartyTypeKind.ZodUnion,...processCreateParams(J)});var getDiscriminator=lV=>lV instanceof ZodLazy?getDiscriminator(lV.schema):lV instanceof ZodEffects?getDiscriminator(lV.innerType()):lV instanceof ZodLiteral?[lV.value]:lV instanceof ZodEnum?lV.options:lV instanceof ZodNativeEnum?util.objectValues(lV.enum):lV instanceof ZodDefault?getDiscriminator(lV._def.innerType):lV instanceof ZodUndefined?[void 0]:lV instanceof ZodNull?[null]:lV instanceof ZodOptional?[void 0,...getDiscriminator(lV.unwrap())]:lV instanceof ZodNullable?[null,...getDiscriminator(lV.unwrap())]:lV instanceof ZodBranded||lV instanceof ZodReadonly?getDiscriminator(lV.unwrap()):lV instanceof ZodCatch?getDiscriminator(lV._def.innerType):[],ZodDiscriminatedUnion=class pB extends ZodType{_parse(J){const{ctx:VV}=this._processInputParams(J);if(VV.parsedType!==ZodParsedType.object)return addIssueToContext(VV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:VV.parsedType}),INVALID;const RV=this.discriminator,UV=VV.data[RV],ZV=this.optionsMap.get(UV);return ZV?VV.common.async?ZV._parseAsync({data:VV.data,path:VV.path,parent:VV}):ZV._parseSync({data:VV.data,path:VV.path,parent:VV}):(addIssueToContext(VV,{code:ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[RV]}),INVALID)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(J,VV,RV){const UV=new Map;for(const ZV of VV){const WV=getDiscriminator(ZV.shape[J]);if(!WV.length)throw new Error(`A discriminator value for key \`${J}\` could not be extracted from all schema options`);for(const IV of WV){if(UV.has(IV))throw new Error(`Discriminator property ${String(J)} has duplicate value ${String(IV)}`);UV.set(IV,ZV)}}return new pB({typeName:ZodFirstPartyTypeKind.ZodDiscriminatedUnion,discriminator:J,options:VV,optionsMap:UV,...processCreateParams(RV)})}};function mergeValues(lV,J){const VV=getParsedType(lV),RV=getParsedType(J);if(lV===J)return{valid:!0,data:lV};if(VV===ZodParsedType.object&&RV===ZodParsedType.object){const UV=util.objectKeys(J),ZV=util.objectKeys(lV).filter(IV=>UV.indexOf(IV)!==-1),WV={...lV,...J};for(const IV of ZV){const dV=mergeValues(lV[IV],J[IV]);if(!dV.valid)return{valid:!1};WV[IV]=dV.data}return{valid:!0,data:WV}}else if(VV===ZodParsedType.array&&RV===ZodParsedType.array){if(lV.length!==J.length)return{valid:!1};const UV=[];for(let ZV=0;ZV<lV.length;ZV++){const WV=lV[ZV],IV=J[ZV],dV=mergeValues(WV,IV);if(!dV.valid)return{valid:!1};UV.push(dV.data)}return{valid:!0,data:UV}}else return VV===ZodParsedType.date&&RV===ZodParsedType.date&&+lV==+J?{valid:!0,data:lV}:{valid:!1}}var ZodIntersection=class extends ZodType{_parse(lV){const{status:J,ctx:VV}=this._processInputParams(lV),RV=(UV,ZV)=>{if(isAborted(UV)||isAborted(ZV))return INVALID;const WV=mergeValues(UV.value,ZV.value);return WV.valid?((isDirty(UV)||isDirty(ZV))&&J.dirty(),{status:J.value,value:WV.data}):(addIssueToContext(VV,{code:ZodIssueCode.invalid_intersection_types}),INVALID)};return VV.common.async?Promise.all([this._def.left._parseAsync({data:VV.data,path:VV.path,parent:VV}),this._def.right._parseAsync({data:VV.data,path:VV.path,parent:VV})]).then(([UV,ZV])=>RV(UV,ZV)):RV(this._def.left._parseSync({data:VV.data,path:VV.path,parent:VV}),this._def.right._parseSync({data:VV.data,path:VV.path,parent:VV}))}};ZodIntersection.create=(lV,J,VV)=>new ZodIntersection({left:lV,right:J,typeName:ZodFirstPartyTypeKind.ZodIntersection,...processCreateParams(VV)});var ZodTuple=class sB extends ZodType{_parse(J){const{status:VV,ctx:RV}=this._processInputParams(J);if(RV.parsedType!==ZodParsedType.array)return addIssueToContext(RV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.array,received:RV.parsedType}),INVALID;if(RV.data.length<this._def.items.length)return addIssueToContext(RV,{code:ZodIssueCode.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),INVALID;!this._def.rest&&RV.data.length>this._def.items.length&&(addIssueToContext(RV,{code:ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),VV.dirty());const ZV=[...RV.data].map((WV,IV)=>{const dV=this._def.items[IV]||this._def.rest;return dV?dV._parse(new ParseInputLazyPath(RV,WV,RV.path,IV)):null}).filter(WV=>!!WV);return RV.common.async?Promise.all(ZV).then(WV=>ParseStatus.mergeArray(VV,WV)):ParseStatus.mergeArray(VV,ZV)}get items(){return this._def.items}rest(J){return new sB({...this._def,rest:J})}};ZodTuple.create=(lV,J)=>{if(!Array.isArray(lV))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new ZodTuple({items:lV,typeName:ZodFirstPartyTypeKind.ZodTuple,rest:null,...processCreateParams(J)})};var ZodRecord=class Xb extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(J){const{status:VV,ctx:RV}=this._processInputParams(J);if(RV.parsedType!==ZodParsedType.object)return addIssueToContext(RV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.object,received:RV.parsedType}),INVALID;const UV=[],ZV=this._def.keyType,WV=this._def.valueType;for(const IV in RV.data)UV.push({key:ZV._parse(new ParseInputLazyPath(RV,IV,RV.path,IV)),value:WV._parse(new ParseInputLazyPath(RV,RV.data[IV],RV.path,IV)),alwaysSet:IV in RV.data});return RV.common.async?ParseStatus.mergeObjectAsync(VV,UV):ParseStatus.mergeObjectSync(VV,UV)}get element(){return this._def.valueType}static create(J,VV,RV){return VV instanceof ZodType?new Xb({keyType:J,valueType:VV,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(RV)}):new Xb({keyType:ZodString.create(),valueType:J,typeName:ZodFirstPartyTypeKind.ZodRecord,...processCreateParams(VV)})}},ZodMap=class extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(lV){const{status:J,ctx:VV}=this._processInputParams(lV);if(VV.parsedType!==ZodParsedType.map)return addIssueToContext(VV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.map,received:VV.parsedType}),INVALID;const RV=this._def.keyType,UV=this._def.valueType,ZV=[...VV.data.entries()].map(([WV,IV],dV)=>({key:RV._parse(new ParseInputLazyPath(VV,WV,VV.path,[dV,"key"])),value:UV._parse(new ParseInputLazyPath(VV,IV,VV.path,[dV,"value"]))}));if(VV.common.async){const WV=new Map;return Promise.resolve().then(async()=>{for(const IV of ZV){const dV=await IV.key,CV=await IV.value;if(dV.status==="aborted"||CV.status==="aborted")return INVALID;(dV.status==="dirty"||CV.status==="dirty")&&J.dirty(),WV.set(dV.value,CV.value)}return{status:J.value,value:WV}})}else{const WV=new Map;for(const IV of ZV){const dV=IV.key,CV=IV.value;if(dV.status==="aborted"||CV.status==="aborted")return INVALID;(dV.status==="dirty"||CV.status==="dirty")&&J.dirty(),WV.set(dV.value,CV.value)}return{status:J.value,value:WV}}}};ZodMap.create=(lV,J,VV)=>new ZodMap({valueType:J,keyType:lV,typeName:ZodFirstPartyTypeKind.ZodMap,...processCreateParams(VV)});var ZodSet=class Hb extends ZodType{_parse(J){const{status:VV,ctx:RV}=this._processInputParams(J);if(RV.parsedType!==ZodParsedType.set)return addIssueToContext(RV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.set,received:RV.parsedType}),INVALID;const UV=this._def;UV.minSize!==null&&RV.data.size<UV.minSize.value&&(addIssueToContext(RV,{code:ZodIssueCode.too_small,minimum:UV.minSize.value,type:"set",inclusive:!0,exact:!1,message:UV.minSize.message}),VV.dirty()),UV.maxSize!==null&&RV.data.size>UV.maxSize.value&&(addIssueToContext(RV,{code:ZodIssueCode.too_big,maximum:UV.maxSize.value,type:"set",inclusive:!0,exact:!1,message:UV.maxSize.message}),VV.dirty());const ZV=this._def.valueType;function WV(dV){const CV=new Set;for(const FV of dV){if(FV.status==="aborted")return INVALID;FV.status==="dirty"&&VV.dirty(),CV.add(FV.value)}return{status:VV.value,value:CV}}const IV=[...RV.data.values()].map((dV,CV)=>ZV._parse(new ParseInputLazyPath(RV,dV,RV.path,CV)));return RV.common.async?Promise.all(IV).then(dV=>WV(dV)):WV(IV)}min(J,VV){return new Hb({...this._def,minSize:{value:J,message:errorUtil.toString(VV)}})}max(J,VV){return new Hb({...this._def,maxSize:{value:J,message:errorUtil.toString(VV)}})}size(J,VV){return this.min(J,VV).max(J,VV)}nonempty(J){return this.min(1,J)}};ZodSet.create=(lV,J)=>new ZodSet({valueType:lV,minSize:null,maxSize:null,typeName:ZodFirstPartyTypeKind.ZodSet,...processCreateParams(J)});var ZodFunction=class TQ extends ZodType{constructor(){super(...arguments),this.validate=this.implement}_parse(J){const{ctx:VV}=this._processInputParams(J);if(VV.parsedType!==ZodParsedType.function)return addIssueToContext(VV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.function,received:VV.parsedType}),INVALID;function RV(IV,dV){return makeIssue({data:IV,path:VV.path,errorMaps:[VV.common.contextualErrorMap,VV.schemaErrorMap,getErrorMap(),errorMap].filter(CV=>!!CV),issueData:{code:ZodIssueCode.invalid_arguments,argumentsError:dV}})}function UV(IV,dV){return makeIssue({data:IV,path:VV.path,errorMaps:[VV.common.contextualErrorMap,VV.schemaErrorMap,getErrorMap(),errorMap].filter(CV=>!!CV),issueData:{code:ZodIssueCode.invalid_return_type,returnTypeError:dV}})}const ZV={errorMap:VV.common.contextualErrorMap},WV=VV.data;if(this._def.returns instanceof ZodPromise){const IV=this;return OK(async function(...dV){const CV=new ZodError([]),FV=await IV._def.args.parseAsync(dV,ZV).catch(JV=>{throw CV.addIssue(RV(dV,JV)),CV}),NV=await Reflect.apply(WV,this,FV);return await IV._def.returns._def.type.parseAsync(NV,ZV).catch(JV=>{throw CV.addIssue(UV(NV,JV)),CV})})}else{const IV=this;return OK(function(...dV){const CV=IV._def.args.safeParse(dV,ZV);if(!CV.success)throw new ZodError([RV(dV,CV.error)]);const FV=Reflect.apply(WV,this,CV.data),NV=IV._def.returns.safeParse(FV,ZV);if(!NV.success)throw new ZodError([UV(FV,NV.error)]);return NV.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...J){return new TQ({...this._def,args:ZodTuple.create(J).rest(ZodUnknown.create())})}returns(J){return new TQ({...this._def,returns:J})}implement(J){return this.parse(J)}strictImplement(J){return this.parse(J)}static create(J,VV,RV){return new TQ({args:J||ZodTuple.create([]).rest(ZodUnknown.create()),returns:VV||ZodUnknown.create(),typeName:ZodFirstPartyTypeKind.ZodFunction,...processCreateParams(RV)})}},ZodLazy=class extends ZodType{get schema(){return this._def.getter()}_parse(lV){const{ctx:J}=this._processInputParams(lV);return this._def.getter()._parse({data:J.data,path:J.path,parent:J})}};ZodLazy.create=(lV,J)=>new ZodLazy({getter:lV,typeName:ZodFirstPartyTypeKind.ZodLazy,...processCreateParams(J)});var ZodLiteral=class extends ZodType{_parse(lV){if(lV.data!==this._def.value){const J=this._getOrReturnCtx(lV);return addIssueToContext(J,{received:J.data,code:ZodIssueCode.invalid_literal,expected:this._def.value}),INVALID}return{status:"valid",value:lV.data}}get value(){return this._def.value}};ZodLiteral.create=(lV,J)=>new ZodLiteral({value:lV,typeName:ZodFirstPartyTypeKind.ZodLiteral,...processCreateParams(J)});function createZodEnum(lV,J){return new ZodEnum({values:lV,typeName:ZodFirstPartyTypeKind.ZodEnum,...processCreateParams(J)})}var ZodEnum=class zb extends ZodType{constructor(){super(...arguments),_ZodEnum_cache.set(this,void 0)}_parse(J){if(typeof J.data!="string"){const VV=this._getOrReturnCtx(J),RV=this._def.values;return addIssueToContext(VV,{expected:util.joinValues(RV),received:VV.parsedType,code:ZodIssueCode.invalid_type}),INVALID}if(__classPrivateFieldGet(this,_ZodEnum_cache)||__classPrivateFieldSet(this,_ZodEnum_cache,new Set(this._def.values)),!__classPrivateFieldGet(this,_ZodEnum_cache).has(J.data)){const VV=this._getOrReturnCtx(J),RV=this._def.values;return addIssueToContext(VV,{received:VV.data,code:ZodIssueCode.invalid_enum_value,options:RV}),INVALID}return OK(J.data)}get options(){return this._def.values}get enum(){const J={};for(const VV of this._def.values)J[VV]=VV;return J}get Values(){const J={};for(const VV of this._def.values)J[VV]=VV;return J}get Enum(){const J={};for(const VV of this._def.values)J[VV]=VV;return J}extract(J,VV=this._def){return zb.create(J,{...this._def,...VV})}exclude(J,VV=this._def){return zb.create(this.options.filter(RV=>!J.includes(RV)),{...this._def,...VV})}};_ZodEnum_cache=new WeakMap,ZodEnum.create=createZodEnum;var ZodNativeEnum=class extends ZodType{constructor(){super(...arguments),_ZodNativeEnum_cache.set(this,void 0)}_parse(lV){const J=util.getValidEnumValues(this._def.values),VV=this._getOrReturnCtx(lV);if(VV.parsedType!==ZodParsedType.string&&VV.parsedType!==ZodParsedType.number){const RV=util.objectValues(J);return addIssueToContext(VV,{expected:util.joinValues(RV),received:VV.parsedType,code:ZodIssueCode.invalid_type}),INVALID}if(__classPrivateFieldGet(this,_ZodNativeEnum_cache)||__classPrivateFieldSet(this,_ZodNativeEnum_cache,new Set(util.getValidEnumValues(this._def.values))),!__classPrivateFieldGet(this,_ZodNativeEnum_cache).has(lV.data)){const RV=util.objectValues(J);return addIssueToContext(VV,{received:VV.data,code:ZodIssueCode.invalid_enum_value,options:RV}),INVALID}return OK(lV.data)}get enum(){return this._def.values}};_ZodNativeEnum_cache=new WeakMap,ZodNativeEnum.create=(lV,J)=>new ZodNativeEnum({values:lV,typeName:ZodFirstPartyTypeKind.ZodNativeEnum,...processCreateParams(J)});var ZodPromise=class extends ZodType{unwrap(){return this._def.type}_parse(lV){const{ctx:J}=this._processInputParams(lV);if(J.parsedType!==ZodParsedType.promise&&J.common.async===!1)return addIssueToContext(J,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.promise,received:J.parsedType}),INVALID;const VV=J.parsedType===ZodParsedType.promise?J.data:Promise.resolve(J.data);return OK(VV.then(RV=>this._def.type.parseAsync(RV,{path:J.path,errorMap:J.common.contextualErrorMap})))}};ZodPromise.create=(lV,J)=>new ZodPromise({type:lV,typeName:ZodFirstPartyTypeKind.ZodPromise,...processCreateParams(J)});var ZodEffects=class extends ZodType{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===ZodFirstPartyTypeKind.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(lV){const{status:J,ctx:VV}=this._processInputParams(lV),RV=this._def.effect||null,UV={addIssue:ZV=>{addIssueToContext(VV,ZV),ZV.fatal?J.abort():J.dirty()},get path(){return VV.path}};if(UV.addIssue=UV.addIssue.bind(UV),RV.type==="preprocess"){const ZV=RV.transform(VV.data,UV);if(VV.common.async)return Promise.resolve(ZV).then(async WV=>{if(J.value==="aborted")return INVALID;const IV=await this._def.schema._parseAsync({data:WV,path:VV.path,parent:VV});return IV.status==="aborted"?INVALID:IV.status==="dirty"||J.value==="dirty"?DIRTY(IV.value):IV});{if(J.value==="aborted")return INVALID;const WV=this._def.schema._parseSync({data:ZV,path:VV.path,parent:VV});return WV.status==="aborted"?INVALID:WV.status==="dirty"||J.value==="dirty"?DIRTY(WV.value):WV}}if(RV.type==="refinement"){const ZV=WV=>{const IV=RV.refinement(WV,UV);if(VV.common.async)return Promise.resolve(IV);if(IV instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return WV};if(VV.common.async===!1){const WV=this._def.schema._parseSync({data:VV.data,path:VV.path,parent:VV});return WV.status==="aborted"?INVALID:(WV.status==="dirty"&&J.dirty(),ZV(WV.value),{status:J.value,value:WV.value})}else return this._def.schema._parseAsync({data:VV.data,path:VV.path,parent:VV}).then(WV=>WV.status==="aborted"?INVALID:(WV.status==="dirty"&&J.dirty(),ZV(WV.value).then(()=>({status:J.value,value:WV.value}))))}if(RV.type==="transform")if(VV.common.async===!1){const ZV=this._def.schema._parseSync({data:VV.data,path:VV.path,parent:VV});if(!isValid(ZV))return ZV;const WV=RV.transform(ZV.value,UV);if(WV instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:J.value,value:WV}}else return this._def.schema._parseAsync({data:VV.data,path:VV.path,parent:VV}).then(ZV=>isValid(ZV)?Promise.resolve(RV.transform(ZV.value,UV)).then(WV=>({status:J.value,value:WV})):ZV);util.assertNever(RV)}};ZodEffects.create=(lV,J,VV)=>new ZodEffects({schema:lV,typeName:ZodFirstPartyTypeKind.ZodEffects,effect:J,...processCreateParams(VV)}),ZodEffects.createWithPreprocess=(lV,J,VV)=>new ZodEffects({schema:J,effect:{type:"preprocess",transform:lV},typeName:ZodFirstPartyTypeKind.ZodEffects,...processCreateParams(VV)});var ZodOptional=class extends ZodType{_parse(lV){return this._getType(lV)===ZodParsedType.undefined?OK(void 0):this._def.innerType._parse(lV)}unwrap(){return this._def.innerType}};ZodOptional.create=(lV,J)=>new ZodOptional({innerType:lV,typeName:ZodFirstPartyTypeKind.ZodOptional,...processCreateParams(J)});var ZodNullable=class extends ZodType{_parse(lV){return this._getType(lV)===ZodParsedType.null?OK(null):this._def.innerType._parse(lV)}unwrap(){return this._def.innerType}};ZodNullable.create=(lV,J)=>new ZodNullable({innerType:lV,typeName:ZodFirstPartyTypeKind.ZodNullable,...processCreateParams(J)});var ZodDefault=class extends ZodType{_parse(lV){const{ctx:J}=this._processInputParams(lV);let VV=J.data;return J.parsedType===ZodParsedType.undefined&&(VV=this._def.defaultValue()),this._def.innerType._parse({data:VV,path:J.path,parent:J})}removeDefault(){return this._def.innerType}};ZodDefault.create=(lV,J)=>new ZodDefault({innerType:lV,typeName:ZodFirstPartyTypeKind.ZodDefault,defaultValue:typeof J.default=="function"?J.default:()=>J.default,...processCreateParams(J)});var ZodCatch=class extends ZodType{_parse(lV){const{ctx:J}=this._processInputParams(lV),VV={...J,common:{...J.common,issues:[]}},RV=this._def.innerType._parse({data:VV.data,path:VV.path,parent:{...VV}});return isAsync(RV)?RV.then(UV=>({status:"valid",value:UV.status==="valid"?UV.value:this._def.catchValue({get error(){return new ZodError(VV.common.issues)},input:VV.data})})):{status:"valid",value:RV.status==="valid"?RV.value:this._def.catchValue({get error(){return new ZodError(VV.common.issues)},input:VV.data})}}removeCatch(){return this._def.innerType}};ZodCatch.create=(lV,J)=>new ZodCatch({innerType:lV,typeName:ZodFirstPartyTypeKind.ZodCatch,catchValue:typeof J.catch=="function"?J.catch:()=>J.catch,...processCreateParams(J)});var ZodNaN=class extends ZodType{_parse(lV){if(this._getType(lV)!==ZodParsedType.nan){const VV=this._getOrReturnCtx(lV);return addIssueToContext(VV,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.nan,received:VV.parsedType}),INVALID}return{status:"valid",value:lV.data}}};ZodNaN.create=lV=>new ZodNaN({typeName:ZodFirstPartyTypeKind.ZodNaN,...processCreateParams(lV)});var BRAND=Symbol("zod_brand"),ZodBranded=class extends ZodType{_parse(lV){const{ctx:J}=this._processInputParams(lV),VV=J.data;return this._def.type._parse({data:VV,path:J.path,parent:J})}unwrap(){return this._def.type}},ZodPipeline=class BB extends ZodType{_parse(J){const{status:VV,ctx:RV}=this._processInputParams(J);if(RV.common.async)return(async()=>{const ZV=await this._def.in._parseAsync({data:RV.data,path:RV.path,parent:RV});return ZV.status==="aborted"?INVALID:ZV.status==="dirty"?(VV.dirty(),DIRTY(ZV.value)):this._def.out._parseAsync({data:ZV.value,path:RV.path,parent:RV})})();{const UV=this._def.in._parseSync({data:RV.data,path:RV.path,parent:RV});return UV.status==="aborted"?INVALID:UV.status==="dirty"?(VV.dirty(),{status:"dirty",value:UV.value}):this._def.out._parseSync({data:UV.value,path:RV.path,parent:RV})}}static create(J,VV){return new BB({in:J,out:VV,typeName:ZodFirstPartyTypeKind.ZodPipeline})}},ZodReadonly=class extends ZodType{_parse(lV){const J=this._def.innerType._parse(lV),VV=RV=>(isValid(RV)&&(RV.value=Object.freeze(RV.value)),RV);return isAsync(J)?J.then(RV=>VV(RV)):VV(J)}unwrap(){return this._def.innerType}};ZodReadonly.create=(lV,J)=>new ZodReadonly({innerType:lV,typeName:ZodFirstPartyTypeKind.ZodReadonly,...processCreateParams(J)});function custom(lV,J={},VV){return lV?ZodAny.create().superRefine((RV,UV)=>{var ZV,WV;if(!lV(RV)){const IV=typeof J=="function"?J(RV):typeof J=="string"?{message:J}:J,dV=(WV=(ZV=IV.fatal)!==null&&ZV!==void 0?ZV:VV)!==null&&WV!==void 0?WV:!0,CV=typeof IV=="string"?{message:IV}:IV;UV.addIssue({code:"custom",...CV,fatal:dV})}}):ZodAny.create()}var late={object:ZodObject.lazycreate},ZodFirstPartyTypeKind;(function(lV){lV.ZodString="ZodString",lV.ZodNumber="ZodNumber",lV.ZodNaN="ZodNaN",lV.ZodBigInt="ZodBigInt",lV.ZodBoolean="ZodBoolean",lV.ZodDate="ZodDate",lV.ZodSymbol="ZodSymbol",lV.ZodUndefined="ZodUndefined",lV.ZodNull="ZodNull",lV.ZodAny="ZodAny",lV.ZodUnknown="ZodUnknown",lV.ZodNever="ZodNever",lV.ZodVoid="ZodVoid",lV.ZodArray="ZodArray",lV.ZodObject="ZodObject",lV.ZodUnion="ZodUnion",lV.ZodDiscriminatedUnion="ZodDiscriminatedUnion",lV.ZodIntersection="ZodIntersection",lV.ZodTuple="ZodTuple",lV.ZodRecord="ZodRecord",lV.ZodMap="ZodMap",lV.ZodSet="ZodSet",lV.ZodFunction="ZodFunction",lV.ZodLazy="ZodLazy",lV.ZodLiteral="ZodLiteral",lV.ZodEnum="ZodEnum",lV.ZodEffects="ZodEffects",lV.ZodNativeEnum="ZodNativeEnum",lV.ZodOptional="ZodOptional",lV.ZodNullable="ZodNullable",lV.ZodDefault="ZodDefault",lV.ZodCatch="ZodCatch",lV.ZodPromise="ZodPromise",lV.ZodBranded="ZodBranded",lV.ZodPipeline="ZodPipeline",lV.ZodReadonly="ZodReadonly"})(ZodFirstPartyTypeKind||(ZodFirstPartyTypeKind={}));var instanceOfType=(lV,J={message:`Input not instance of ${lV.name}`})=>custom(VV=>VV instanceof lV,J),stringType=ZodString.create,numberType=ZodNumber.create,nanType=ZodNaN.create,bigIntType=ZodBigInt.create,booleanType=ZodBoolean.create,dateType=ZodDate.create,symbolType=ZodSymbol.create,undefinedType=ZodUndefined.create,nullType=ZodNull.create,anyType=ZodAny.create,unknownType=ZodUnknown.create,neverType=ZodNever.create,voidType=ZodVoid.create,arrayType=ZodArray.create,objectType=ZodObject.create,strictObjectType=ZodObject.strictCreate,unionType=ZodUnion.create,discriminatedUnionType=ZodDiscriminatedUnion.create,intersectionType=ZodIntersection.create,tupleType=ZodTuple.create,recordType=ZodRecord.create,mapType=ZodMap.create,setType=ZodSet.create,functionType=ZodFunction.create,lazyType=ZodLazy.create,literalType=ZodLiteral.create,enumType=ZodEnum.create,nativeEnumType=ZodNativeEnum.create,promiseType=ZodPromise.create,effectsType=ZodEffects.create,optionalType=ZodOptional.create,nullableType=ZodNullable.create,preprocessType=ZodEffects.createWithPreprocess,pipelineType=ZodPipeline.create,ostring=()=>stringType().optional(),onumber=()=>numberType().optional(),oboolean=()=>booleanType().optional(),coerce={string:lV=>ZodString.create({...lV,coerce:!0}),number:lV=>ZodNumber.create({...lV,coerce:!0}),boolean:lV=>ZodBoolean.create({...lV,coerce:!0}),bigint:lV=>ZodBigInt.create({...lV,coerce:!0}),date:lV=>ZodDate.create({...lV,coerce:!0})},NEVER=INVALID,z$1=Object.freeze({__proto__:null,defaultErrorMap:errorMap,setErrorMap,getErrorMap,makeIssue,EMPTY_PATH,addIssueToContext,ParseStatus,INVALID,DIRTY,OK,isAborted,isDirty,isValid,isAsync,get util(){return util},get objectUtil(){return objectUtil},ZodParsedType,getParsedType,ZodType,datetimeRegex,ZodString,ZodNumber,ZodBigInt,ZodBoolean,ZodDate,ZodSymbol,ZodUndefined,ZodNull,ZodAny,ZodUnknown,ZodNever,ZodVoid,ZodArray,ZodObject,ZodUnion,ZodDiscriminatedUnion,ZodIntersection,ZodTuple,ZodRecord,ZodMap,ZodSet,ZodFunction,ZodLazy,ZodLiteral,ZodEnum,ZodNativeEnum,ZodPromise,ZodEffects,ZodTransformer:ZodEffects,ZodOptional,ZodNullable,ZodDefault,ZodCatch,ZodNaN,BRAND,ZodBranded,ZodPipeline,ZodReadonly,custom,Schema:ZodType,ZodSchema:ZodType,late,get ZodFirstPartyTypeKind(){return ZodFirstPartyTypeKind},coerce,any:anyType,array:arrayType,bigint:bigIntType,boolean:booleanType,date:dateType,discriminatedUnion:discriminatedUnionType,effect:effectsType,enum:enumType,function:functionType,instanceof:instanceOfType,intersection:intersectionType,lazy:lazyType,literal:literalType,map:mapType,nan:nanType,nativeEnum:nativeEnumType,never:neverType,null:nullType,nullable:nullableType,number:numberType,object:objectType,oboolean,onumber,optional:optionalType,ostring,pipeline:pipelineType,preprocess:preprocessType,promise:promiseType,record:recordType,set:setType,strictObject:strictObjectType,string:stringType,symbol:symbolType,transformer:effectsType,tuple:tupleType,undefined:undefinedType,union:unionType,unknown:unknownType,void:voidType,NEVER,ZodIssueCode,quotelessJson,ZodError}),urlAlphabet="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",nanoid=(lV=21)=>{let J="",VV=crypto.getRandomValues(new Uint8Array(lV|=0));for(;lV--;)J+=urlAlphabet[VV[lV]&63];return J},unitMappings={Hz:{baseUnit:"Hz",variants:{MHz:1e6,kHz:1e3,Hz:1}},g:{baseUnit:"g",variants:{kg:1e3,g:1}},Ω:{baseUnit:"Ω",variants:{mΩ:.001,Ω:1,kΩ:1e3,KΩ:1e3,MΩ:1e6,GΩ:1e9,TΩ:1e12}},V:{baseUnit:"V",variants:{mV:.001,V:1,kV:1e3,KV:1e3,MV:1e6,GV:1e9,TV:1e12}},A:{baseUnit:"A",variants:{µA:1e-6,mA:.001,ma:.001,A:1,kA:1e3,MA:1e6}},F:{baseUnit:"F",variants:{pF:1e-12,nF:1e-9,µF:1e-6,uF:1e-6,mF:.001,F:1}},ml:{baseUnit:"ml",variants:{ml:1,mL:1,l:1e3,L:1e3}},deg:{baseUnit:"deg",variants:{rad:180/Math.PI}},ms:{baseUnit:"ms",variants:{s:1e3}},mm:{baseUnit:"mm",variants:{nm:1e-6,µm:.001,um:.001,mm:1,cm:10,dm:100,m:1e3,km:1e6,in:25.4,ft:304.8,IN:25.4,FT:304.8,yd:914.4,mi:1609344,mil:.0254}}},unitMappingAndVariantSuffixes=new Set;for(const[lV,J]of Object.entries(unitMappings)){unitMappingAndVariantSuffixes.add(lV);for(const VV of Object.keys(J.variants))unitMappingAndVariantSuffixes.add(VV)}function getBaseTscircuitUnit(lV){for(const[J,VV]of Object.entries(unitMappings))if(lV in VV.variants)return{baseUnit:VV.baseUnit,conversionFactor:VV.variants[lV]};return{baseUnit:lV,conversionFactor:1}}var si_prefix_multiplier={tera:1e12,T:1e12,giga:1e9,G:1e9,mega:1e6,M:1e6,kilo:1e3,k:1e3,deci:.1,d:.1,centi:.01,c:.01,milli:.001,m:.001,micro:1e-6,u:1e-6,µ:1e-6,nano:1e-9,n:1e-9,pico:1e-12,p:1e-12},parseAndConvertSiUnit=lV=>{var IV;if(typeof lV>"u")return{parsedUnit:null,unitOfValue:null,value:null};if(typeof lV=="string"&&lV.match(/^[\d\.]+$/))return{value:Number.parseFloat(lV),parsedUnit:null,unitOfValue:null};if(typeof lV=="number")return{value:lV,parsedUnit:null,unitOfValue:null};if(typeof lV=="object"&&"x"in lV&&"y"in lV){const{parsedUnit:dV,unitOfValue:CV}=parseAndConvertSiUnit(lV.x);return{parsedUnit:dV,unitOfValue:CV,value:{x:parseAndConvertSiUnit(lV.x).value,y:parseAndConvertSiUnit(lV.y).value}}}const VV=(IV=lV.toString().split("").reverse().join("").match(/[^\d\s]+/))==null?void 0:IV[0];if(!VV)throw new Error(`Could not determine unit: "${lV}"`);const RV=VV.split("").reverse().join(""),UV=lV.slice(0,-RV.length);if(RV in si_prefix_multiplier&&!unitMappingAndVariantSuffixes.has(RV)){const dV=si_prefix_multiplier[RV];return{parsedUnit:null,unitOfValue:null,value:Number.parseFloat(UV)*dV}}const{baseUnit:ZV,conversionFactor:WV}=getBaseTscircuitUnit(RV);return{parsedUnit:RV,unitOfValue:ZV,value:WV*Number.parseFloat(UV)}},resistance=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit(lV).value),capacitance=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit(lV).value),inductance=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit(lV).value),voltage=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit(lV).value),length2=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit(lV).value),frequency=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit(lV).value),distance=length2,current=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit(lV).value),time=z$1.string().or(z$1.number()).transform(lV=>parseAndConvertSiUnit(lV).value),rotation=z$1.string().or(z$1.number()).transform(lV=>typeof lV=="number"?lV:lV.endsWith("deg")?Number.parseFloat(lV.split("deg")[0]):lV.endsWith("rad")?Number.parseFloat(lV.split("rad")[0])*180/Math.PI:Number.parseFloat(lV)),battery_capacity=z$1.number().or(z$1.string().endsWith("mAh")).transform(lV=>{if(typeof lV=="string"){const J=lV.replace("mAh",""),VV=Number.parseFloat(J);if(Number.isNaN(VV))throw new Error("Invalid capacity");return VV}return lV}).describe("Battery capacity in mAh"),point=z$1.object({x:distance,y:distance}),position=point,point3=z$1.object({x:distance,y:distance,z:distance}),position3=point3,size$3=z$1.object({width:z$1.number(),height:z$1.number()}),getZodPrefixedIdWithDefault=lV=>z$1.string().optional().default(()=>`${lV}_${nanoid(10)}`),supplier_name=z$1.enum(["jlcpcb","macrofab","pcbway","digikey","mouser","lcsc"]),source_component_base=z$1.object({type:z$1.literal("source_component"),ftype:z$1.string().optional(),source_component_id:z$1.string(),name:z$1.string(),manufacturer_part_number:z$1.string().optional(),supplier_part_numbers:z$1.record(supplier_name,z$1.array(z$1.string())).optional(),display_value:z$1.string().optional()}),source_simple_capacitor=source_component_base.extend({ftype:z$1.literal("simple_capacitor"),capacitance,display_capacitance:z$1.string().optional(),max_decoupling_trace_length:distance.optional()}),source_simple_resistor=source_component_base.extend({ftype:z$1.literal("simple_resistor"),resistance,display_resistance:z$1.string().optional()}),source_simple_diode=source_component_base.extend({ftype:z$1.literal("simple_diode")}),source_simple_ground=source_component_base.extend({ftype:z$1.literal("simple_ground")}),source_simple_bug=source_component_base.extend({ftype:z$1.literal("simple_bug")}).describe("@deprecated"),source_simple_chip=source_component_base.extend({ftype:z$1.literal("simple_chip")}),source_led=source_simple_diode.extend({ftype:z$1.literal("led")}),source_simple_power_source=source_component_base.extend({ftype:z$1.literal("simple_power_source"),voltage}),source_simple_battery=source_component_base.extend({ftype:z$1.literal("simple_battery"),capacity:battery_capacity}),source_simple_inductor=source_component_base.extend({ftype:z$1.literal("simple_inductor"),inductance}),source_simple_push_button=source_component_base.extend({ftype:z$1.literal("simple_push_button")}),source_simple_potentiometer=source_component_base.extend({ftype:z$1.literal("simple_potentiometer"),max_resistance:resistance}),source_simple_crystal=source_component_base.extend({ftype:z$1.literal("simple_crystal"),frequency:z$1.number().describe("Frequency in Hz"),load_capacitance:z$1.number().optional().describe("Load capacitance in pF")}),source_simple_pin_header=source_component_base.extend({ftype:z$1.literal("simple_pin_header"),pin_count:z$1.number(),gender:z$1.enum(["male","female"]).optional().default("male")}),source_simple_resonator=source_component_base.extend({ftype:z$1.literal("simple_resonator"),load_capacitance:capacitance,equivalent_series_resistance:resistance.optional(),frequency}),source_simple_transistor=source_component_base.extend({ftype:z$1.literal("simple_transistor"),transistor_type:z$1.enum(["npn","pnp"])}),source_simple_mosfet=source_component_base.extend({ftype:z$1.literal("simple_mosfet"),channel_type:z$1.enum(["n","p"]),mosfet_mode:z$1.enum(["enhancement","depletion"])}),any_source_component=z$1.union([source_simple_resistor,source_simple_capacitor,source_simple_diode,source_simple_ground,source_simple_chip,source_simple_bug,source_led,source_simple_power_source,source_simple_battery,source_simple_inductor,source_simple_push_button,source_simple_potentiometer,source_simple_crystal,source_simple_pin_header,source_simple_resonator,source_simple_transistor,source_simple_mosfet]),source_port=z$1.object({type:z$1.literal("source_port"),pin_number:z$1.number().optional(),port_hints:z$1.array(z$1.string()).optional(),name:z$1.string(),source_port_id:z$1.string(),source_component_id:z$1.string()}),source_trace=z$1.object({type:z$1.literal("source_trace"),source_trace_id:z$1.string(),connected_source_port_ids:z$1.array(z$1.string()),connected_source_net_ids:z$1.array(z$1.string()),subcircuit_connectivity_map_key:z$1.string().optional(),max_length:z$1.number().optional(),display_name:z$1.string().optional()}),source_group=z$1.object({type:z$1.literal("source_group"),source_group_id:z$1.string(),name:z$1.string().optional()}),source_net=z$1.object({type:z$1.literal("source_net"),source_net_id:z$1.string(),name:z$1.string(),member_source_group_ids:z$1.array(z$1.string()),is_power:z$1.boolean().optional(),is_ground:z$1.boolean().optional(),is_digital_signal:z$1.boolean().optional(),is_analog_signal:z$1.boolean().optional(),trace_width:z$1.number().optional()}),schematic_box=z$1.object({type:z$1.literal("schematic_box"),schematic_component_id:z$1.string(),width:distance,height:distance,x:distance,y:distance}).describe("Draws a box on the schematic"),schematic_path=z$1.object({type:z$1.literal("schematic_path"),schematic_component_id:z$1.string(),fill_color:z$1.enum(["red","blue"]).optional(),is_filled:z$1.boolean().optional(),points:z$1.array(point)}),schematic_pin_styles=z$1.record(z$1.object({left_margin:length2.optional(),right_margin:length2.optional(),top_margin:length2.optional(),bottom_margin:length2.optional()})),schematic_component_port_arrangement_by_size=z$1.object({left_size:z$1.number(),right_size:z$1.number(),top_size:z$1.number().optional(),bottom_size:z$1.number().optional()}),schematic_component_port_arrangement_by_sides=z$1.object({left_side:z$1.object({pins:z$1.array(z$1.number()),direction:z$1.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),right_side:z$1.object({pins:z$1.array(z$1.number()),direction:z$1.enum(["top-to-bottom","bottom-to-top"]).optional()}).optional(),top_side:z$1.object({pins:z$1.array(z$1.number()),direction:z$1.enum(["left-to-right","right-to-left"]).optional()}).optional(),bottom_side:z$1.object({pins:z$1.array(z$1.number()),direction:z$1.enum(["left-to-right","right-to-left"]).optional()}).optional()}),port_arrangement=z$1.union([schematic_component_port_arrangement_by_size,schematic_component_port_arrangement_by_sides]),schematic_component=z$1.object({type:z$1.literal("schematic_component"),rotation:rotation.default(0),size:size$3,center:point,source_component_id:z$1.string(),schematic_component_id:z$1.string(),pin_spacing:length2.optional(),pin_styles:schematic_pin_styles.optional(),box_width:length2.optional(),symbol_name:z$1.string().optional(),port_arrangement:port_arrangement.optional(),port_labels:z$1.record(z$1.string()).optional(),symbol_display_value:z$1.string().optional()}),schematic_line=z$1.object({type:z$1.literal("schematic_line"),schematic_component_id:z$1.string(),x1:distance,x2:distance,y1:distance,y2:distance}),schematic_trace=z$1.object({type:z$1.literal("schematic_trace"),schematic_trace_id:z$1.string(),source_trace_id:z$1.string(),junctions:z$1.array(z$1.object({x:z$1.number(),y:z$1.number()})),edges:z$1.array(z$1.object({from:z$1.object({x:z$1.number(),y:z$1.number()}),to:z$1.object({x:z$1.number(),y:z$1.number()}),is_crossing:z$1.boolean().optional(),from_schematic_port_id:z$1.string().optional(),to_schematic_port_id:z$1.string().optional()}))}),schematic_text=z$1.object({type:z$1.literal("schematic_text"),schematic_component_id:z$1.string(),schematic_text_id:z$1.string(),text:z$1.string(),position:z$1.object({x:distance,y:distance}),rotation:z$1.number().default(0),anchor:z$1.enum(["center","left","right","top","bottom"]).default("center"),color:z$1.string().default("#000000")}),schematic_port=z$1.object({type:z$1.literal("schematic_port"),schematic_port_id:z$1.string(),source_port_id:z$1.string(),schematic_component_id:z$1.string().optional(),center:point,facing_direction:z$1.enum(["up","down","left","right"]).optional(),distance_from_component_edge:z$1.number().optional(),side_of_component:z$1.enum(["top","bottom","left","right"]).optional(),true_ccw_index:z$1.number().optional(),pin_number:z$1.number().optional(),display_pin_label:z$1.string().optional()}).describe("Defines a port on a schematic component"),schematic_net_label=z$1.object({type:z$1.literal("schematic_net_label"),source_net_id:z$1.string(),center:point,anchor_position:point.optional(),anchor_side:z$1.enum(["top","bottom","left","right"]),text:z$1.string(),symbol_name:z$1.string().optional()}),schematic_error=z$1.object({type:z$1.literal("schematic_error"),schematic_error_id:z$1.string(),error_type:z$1.literal("schematic_port_not_found"),message:z$1.string()}).describe("Defines a schematic error on the schematic"),schematic_debug_object_base=z$1.object({type:z$1.literal("schematic_debug_object"),label:z$1.string().optional()}),schematic_debug_rect=schematic_debug_object_base.extend({shape:z$1.literal("rect"),center:point,size:size$3}),schematic_debug_line=schematic_debug_object_base.extend({shape:z$1.literal("line"),start:point,end:point}),schematic_debug_point=schematic_debug_object_base.extend({shape:z$1.literal("point"),center:point}),schematic_debug_object=z$1.discriminatedUnion("shape",[schematic_debug_rect,schematic_debug_line,schematic_debug_point]),schematic_voltage_probe=z$1.object({type:z$1.literal("schematic_voltage_probe"),schematic_voltage_probe_id:z$1.string(),position:point,schematic_trace_id:z$1.string(),voltage:voltage.optional()}).describe("Defines a voltage probe measurement point on a schematic trace"),all_layers=["top","bottom","inner1","inner2","inner3","inner4","inner5","inner6"],layer_string=z$1.enum(all_layers),layer_ref=layer_string.or(z$1.object({name:layer_string})).transform(lV=>typeof lV=="string"?lV:lV.name),visible_layer=z$1.enum(["top","bottom"]),pcb_route_hint=z$1.object({x:distance,y:distance,via:z$1.boolean().optional(),via_to_layer:layer_ref.optional()}),pcb_route_hints=z$1.array(pcb_route_hint),route_hint_point=z$1.object({x:distance,y:distance,via:z$1.boolean().optional(),to_layer:layer_ref.optional(),trace_width:distance.optional()}),pcb_component=z$1.object({type:z$1.literal("pcb_component"),pcb_component_id:getZodPrefixedIdWithDefault("pcb_component"),source_component_id:z$1.string(),center:point,layer:layer_ref,rotation,width:length2,height:length2}).describe("Defines a component on the PCB"),pcb_hole_circle_or_square=z$1.object({type:z$1.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault("pcb_hole"),hole_shape:z$1.enum(["circle","square"]),hole_diameter:z$1.number(),x:distance,y:distance}),pcb_hole_circle_or_square_shape=pcb_hole_circle_or_square.describe("Defines a circular or square hole on the PCB"),pcb_hole_oval=z$1.object({type:z$1.literal("pcb_hole"),pcb_hole_id:getZodPrefixedIdWithDefault("pcb_hole"),hole_shape:z$1.literal("oval"),hole_width:z$1.number(),hole_height:z$1.number(),x:distance,y:distance}),pcb_hole_oval_shape=pcb_hole_oval.describe("Defines an oval hole on the PCB"),pcb_hole=pcb_hole_circle_or_square.or(pcb_hole_oval),pcb_plated_hole_circle=z$1.object({type:z$1.literal("pcb_plated_hole"),shape:z$1.literal("circle"),outer_diameter:z$1.number(),hole_diameter:z$1.number(),x:distance,y:distance,layers:z$1.array(layer_ref),port_hints:z$1.array(z$1.string()).optional(),pcb_component_id:z$1.string().optional(),pcb_port_id:z$1.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole")}),pcb_plated_hole_oval=z$1.object({type:z$1.literal("pcb_plated_hole"),shape:z$1.enum(["oval","pill"]),outer_width:z$1.number(),outer_height:z$1.number(),hole_width:z$1.number(),hole_height:z$1.number(),x:distance,y:distance,layers:z$1.array(layer_ref),port_hints:z$1.array(z$1.string()).optional(),pcb_component_id:z$1.string().optional(),pcb_port_id:z$1.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole")}),pcb_circular_hole_with_rect_pad=z$1.object({type:z$1.literal("pcb_plated_hole"),shape:z$1.literal("circular_hole_with_rect_pad"),hole_shape:z$1.literal("circle"),pad_shape:z$1.literal("rect"),hole_diameter:z$1.number(),rect_pad_width:z$1.number(),rect_pad_height:z$1.number(),x:distance,y:distance,layers:z$1.array(layer_ref),port_hints:z$1.array(z$1.string()).optional(),pcb_component_id:z$1.string().optional(),pcb_port_id:z$1.string().optional(),pcb_plated_hole_id:getZodPrefixedIdWithDefault("pcb_plated_hole")}),pcb_plated_hole=z$1.union([pcb_plated_hole_circle,pcb_plated_hole_oval,pcb_circular_hole_with_rect_pad]),pcb_port=z$1.object({type:z$1.literal("pcb_port"),pcb_port_id:getZodPrefixedIdWithDefault("pcb_port"),source_port_id:z$1.string(),pcb_component_id:z$1.string(),x:distance,y:distance,layers:z$1.array(layer_ref)}).describe("Defines a port on the PCB"),pcb_smtpad_circle=z$1.object({type:z$1.literal("pcb_smtpad"),shape:z$1.literal("circle"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),x:distance,y:distance,radius:z$1.number(),layer:layer_ref,port_hints:z$1.array(z$1.string()).optional(),pcb_component_id:z$1.string().optional(),pcb_port_id:z$1.string().optional()}),pcb_smtpad_rect=z$1.object({type:z$1.literal("pcb_smtpad"),shape:z$1.literal("rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),x:distance,y:distance,width:z$1.number(),height:z$1.number(),layer:layer_ref,port_hints:z$1.array(z$1.string()).optional(),pcb_component_id:z$1.string().optional(),pcb_port_id:z$1.string().optional()}),pcb_smtpad_rotated_rect=z$1.object({type:z$1.literal("pcb_smtpad"),shape:z$1.literal("rotated_rect"),pcb_smtpad_id:getZodPrefixedIdWithDefault("pcb_smtpad"),x:distance,y:distance,width:z$1.number(),height:z$1.number(),ccw_rotation:rotation,layer:layer_ref,port_hints:z$1.array(z$1.string()).optional(),pcb_component_id:z$1.string().optional(),pcb_port_id:z$1.string().optional()}),pcb_smtpad=z$1.union([pcb_smtpad_circle,pcb_smtpad_rect,pcb_smtpad_rotated_rect]).describe("Defines an SMT pad on the PCB"),pcb_solder_paste_circle=z$1.object({type:z$1.literal("pcb_solder_paste"),shape:z$1.literal("circle"),pcb_solder_paste_id:getZodPrefixedIdWithDefault("pcb_solder_paste"),x:distance,y:distance,radius:z$1.number(),layer:layer_ref,pcb_component_id:z$1.string().optional(),pcb_smtpad_id:z$1.string().optional()}),pcb_solder_paste_rect=z$1.object({type:z$1.literal("pcb_solder_paste"),shape:z$1.literal("rect"),pcb_solder_paste_id:getZodPrefixedIdWithDefault("pcb_solder_paste"),x:distance,y:distance,width:z$1.number(),height:z$1.number(),layer:layer_ref,pcb_component_id:z$1.string().optional(),pcb_smtpad_id:z$1.string().optional()}),pcb_solder_paste=z$1.union([pcb_solder_paste_circle,pcb_solder_paste_rect]).describe("Defines solderpaste on the PCB"),pcb_text=z$1.object({type:z$1.literal("pcb_text"),pcb_text_id:getZodPrefixedIdWithDefault("pcb_text"),text:z$1.string(),center:point,layer:layer_ref,width:length2,height:length2,lines:z$1.number(),align:z$1.enum(["bottom-left"])}).describe("Defines text on the PCB"),pcb_trace_route_point_wire=z$1.object({route_type:z$1.literal("wire"),x:distance,y:distance,width:distance,start_pcb_port_id:z$1.string().optional(),end_pcb_port_id:z$1.string().optional(),layer:layer_ref}),pcb_trace_route_point_via=z$1.object({route_type:z$1.literal("via"),x:distance,y:distance,from_layer:z$1.string(),to_layer:z$1.string()}),pcb_trace_route_point=z$1.union([pcb_trace_route_point_wire,pcb_trace_route_point_via]),pcb_trace=z$1.object({type:z$1.literal("pcb_trace"),source_trace_id:z$1.string().optional(),pcb_component_id:z$1.string().optional(),pcb_trace_id:getZodPrefixedIdWithDefault("pcb_trace"),route_thickness_mode:z$1.enum(["constant","interpolated"]).default("constant").optional(),route_order_index:z$1.number().optional(),should_round_corners:z$1.boolean().optional(),trace_length:z$1.number().optional(),route:z$1.array(z$1.union([z$1.object({route_type:z$1.literal("wire"),x:distance,y:distance,width:distance,start_pcb_port_id:z$1.string().optional(),end_pcb_port_id:z$1.string().optional(),layer:layer_ref}),z$1.object({route_type:z$1.literal("via"),x:distance,y:distance,from_layer:z$1.string(),to_layer:z$1.string()})]))}).describe("Defines a trace on the PCB"),pcb_trace_error=z$1.object({type:z$1.literal("pcb_trace_error"),pcb_trace_error_id:getZodPrefixedIdWithDefault("pcb_trace_error"),error_type:z$1.literal("pcb_trace_error"),message:z$1.string(),center:point.optional(),pcb_trace_id:z$1.string(),source_trace_id:z$1.string(),pcb_component_ids:z$1.array(z$1.string()),pcb_port_ids:z$1.array(z$1.string())}).describe("Defines a trace error on the PCB"),pcb_port_not_matched_error=z$1.object({type:z$1.literal("pcb_port_not_matched_error"),pcb_error_id:getZodPrefixedIdWithDefault("pcb_error"),message:z$1.string(),pcb_component_ids:z$1.array(z$1.string())}).describe("Defines a trace error on the PCB where a port is not matched"),pcb_via=z$1.object({type:z$1.literal("pcb_via"),pcb_via_id:getZodPrefixedIdWithDefault("pcb_via"),x:distance,y:distance,outer_diameter:distance.default("0.6mm"),hole_diameter:distance.default("0.25mm"),from_layer:layer_ref.optional(),to_layer:layer_ref.optional(),layers:z$1.array(layer_ref),pcb_trace_id:z$1.string().optional()}).describe("Defines a via on the PCB"),pcb_board=z$1.object({type:z$1.literal("pcb_board"),pcb_board_id:getZodPrefixedIdWithDefault("pcb_board"),width:length2,height:length2,center:point,thickness:length2.optional().default(1.4),num_layers:z$1.number().optional().default(4),outline:z$1.array(point).optional()}).describe("Defines the board outline of the PCB"),pcb_placement_error=z$1.object({type:z$1.literal("pcb_placement_error"),pcb_placement_error_id:getZodPrefixedIdWithDefault("pcb_placement_error"),message:z$1.string()}).describe("Defines a placement error on the PCB"),pcb_trace_hint=z$1.object({type:z$1.literal("pcb_trace_hint"),pcb_trace_hint_id:getZodPrefixedIdWithDefault("pcb_trace_hint"),pcb_port_id:z$1.string(),pcb_component_id:z$1.string(),route:z$1.array(route_hint_point)}).describe("A hint that can be used during generation of a PCB trace"),pcb_silkscreen_line=z$1.object({type:z$1.literal("pcb_silkscreen_line"),pcb_silkscreen_line_id:getZodPrefixedIdWithDefault("pcb_silkscreen_line"),pcb_component_id:z$1.string(),stroke_width:distance.default("0.1mm"),x1:distance,y1:distance,x2:distance,y2:distance,layer:visible_layer}).describe("Defines a silkscreen line on the PCB"),pcb_silkscreen_path=z$1.object({type:z$1.literal("pcb_silkscreen_path"),pcb_silkscreen_path_id:getZodPrefixedIdWithDefault("pcb_silkscreen_path"),pcb_component_id:z$1.string(),layer:visible_layer,route:z$1.array(point),stroke_width:length2}).describe("Defines a silkscreen path on the PCB"),pcb_silkscreen_text=z$1.object({type:z$1.literal("pcb_silkscreen_text"),pcb_silkscreen_text_id:getZodPrefixedIdWithDefault("pcb_silkscreen_text"),font:z$1.literal("tscircuit2024").default("tscircuit2024"),font_size:distance.default("0.2mm"),pcb_component_id:z$1.string(),text:z$1.string(),ccw_rotation:z$1.number().optional(),layer:layer_ref,is_mirrored:z$1.boolean().default(!1).optional(),anchor_position:point.default({x:0,y:0}),anchor_alignment:z$1.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center")}).describe("Defines silkscreen text on the PCB"),pcb_silkscreen_rect=z$1.object({type:z$1.literal("pcb_silkscreen_rect"),pcb_silkscreen_rect_id:getZodPrefixedIdWithDefault("pcb_silkscreen_rect"),pcb_component_id:z$1.string(),center:point,width:length2,height:length2,layer:layer_ref}).describe("Defines a silkscreen rect on the PCB"),pcb_silkscreen_circle=z$1.object({type:z$1.literal("pcb_silkscreen_circle"),pcb_silkscreen_circle_id:getZodPrefixedIdWithDefault("pcb_silkscreen_circle"),pcb_component_id:z$1.string(),center:point,radius:length2,layer:visible_layer}).describe("Defines a silkscreen circle on the PCB"),pcb_silkscreen_oval=z$1.object({type:z$1.literal("pcb_silkscreen_oval"),pcb_silkscreen_oval_id:getZodPrefixedIdWithDefault("pcb_silkscreen_oval"),pcb_component_id:z$1.string(),center:point,radius_x:distance,radius_y:distance,layer:visible_layer}).describe("Defines a silkscreen oval on the PCB"),pcb_fabrication_note_text=z$1.object({type:z$1.literal("pcb_fabrication_note_text"),pcb_fabrication_note_text_id:getZodPrefixedIdWithDefault("pcb_fabrication_note_text"),font:z$1.literal("tscircuit2024").default("tscircuit2024"),font_size:distance.default("1mm"),pcb_component_id:z$1.string(),text:z$1.string(),layer:visible_layer,anchor_position:point.default({x:0,y:0}),anchor_alignment:z$1.enum(["center","top_left","top_right","bottom_left","bottom_right"]).default("center"),color:z$1.string().optional()}).describe("Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators"),pcb_fabrication_note_path=z$1.object({type:z$1.literal("pcb_fabrication_note_path"),pcb_fabrication_note_path_id:getZodPrefixedIdWithDefault("pcb_fabrication_note_path"),pcb_component_id:z$1.string(),layer:layer_ref,route:z$1.array(point),stroke_width:length2,color:z$1.string().optional()}).describe("Defines a fabrication path on the PCB for fabricators or assemblers"),pcb_keepout=z$1.object({type:z$1.literal("pcb_keepout"),shape:z$1.literal("rect"),center:point,width:distance,height:distance,pcb_keepout_id:z$1.string(),layers:z$1.array(z$1.string()),description:z$1.string().optional()}).or(z$1.object({type:z$1.literal("pcb_keepout"),shape:z$1.literal("circle"),center:point,radius:distance,pcb_keepout_id:z$1.string(),layers:z$1.array(z$1.string()),description:z$1.string().optional()})),pcb_missing_footprint_error=z$1.object({type:z$1.literal("pcb_missing_footprint_error"),pcb_missing_footprint_error_id:getZodPrefixedIdWithDefault("pcb_missing_footprint_error"),error_type:z$1.literal("pcb_missing_footprint_error"),source_component_id:z$1.string(),message:z$1.string()}).describe("Defines a missing footprint error on the PCB"),pcb_manual_edit_conflict_error=z$1.object({type:z$1.literal("pcb_manual_edit_conflict_error"),pcb_error_id:getZodPrefixedIdWithDefault("pcb_manual_edit_conflict_error"),message:z$1.string(),pcb_component_id:z$1.string(),source_component_id:z$1.string()}).describe("Error emitted when a component has both manual placement and explicit pcbX/pcbY coordinates"),pcb_group=z$1.object({type:z$1.literal("pcb_group"),pcb_group_id:getZodPrefixedIdWithDefault("pcb_group"),width:length2,height:length2,center:point,pcb_component_ids:z$1.array(z$1.string()),name:z$1.string().optional(),description:z$1.string().optional()}).describe("Defines a group of components on the PCB"),cad_component=z$1.object({type:z$1.literal("cad_component"),cad_component_id:z$1.string(),pcb_component_id:z$1.string(),source_component_id:z$1.string(),position:point3,rotation:point3.optional(),size:point3.optional(),layer:layer_ref.optional(),footprinter_string:z$1.string().optional(),model_obj_url:z$1.string().optional(),model_stl_url:z$1.string().optional(),model_3mf_url:z$1.string().optional(),model_jscad:z$1.any().optional()}).describe("Defines a component on the PCB"),any_circuit_element=z$1.union([source_trace,source_port,any_source_component,source_led,source_net,source_group,source_simple_bug,source_simple_chip,source_simple_capacitor,source_simple_diode,source_simple_resistor,source_simple_power_source,source_simple_battery,source_simple_inductor,source_simple_pin_header,source_simple_resonator,source_simple_transistor,source_simple_mosfet,source_simple_potentiometer,source_simple_push_button,pcb_component,pcb_hole,pcb_missing_footprint_error,pcb_manual_edit_conflict_error,pcb_plated_hole,pcb_keepout,pcb_port,pcb_text,pcb_trace,pcb_via,pcb_smtpad,pcb_solder_paste,pcb_board,pcb_group,pcb_trace_hint,pcb_silkscreen_line,pcb_silkscreen_path,pcb_silkscreen_text,pcb_silkscreen_rect,pcb_silkscreen_circle,pcb_silkscreen_oval,pcb_trace_error,pcb_placement_error,pcb_port_not_matched_error,pcb_fabrication_note_path,pcb_fabrication_note_text,schematic_box,schematic_text,schematic_line,schematic_component,schematic_port,schematic_trace,schematic_path,schematic_error,schematic_net_label,schematic_debug_object,schematic_voltage_probe,cad_component]),any_soup_element=any_circuit_element,su$1=(lV,J={})=>{let VV=lV._internal_store;if(!VV){VV={counts:{}},lV._internal_store=VV;for(const UV of lV){const ZV=UV.type,WV=UV[`${ZV}_id`];if(!WV)continue;const IV=Number.parseInt(WV.split("_").pop());Number.isNaN(IV)||(VV.counts[ZV]=Math.max(VV.counts[ZV]??0,IV))}}return new Proxy({},{get:(UV,ZV)=>ZV==="toArray"?()=>lV:{get:WV=>lV.find(IV=>IV.type===ZV&&IV[`${ZV}_id`]===WV),getUsing:WV=>{const IV=Object.keys(WV);if(IV.length!==1)throw new Error("getUsing requires exactly one key, e.g. { pcb_component_id }");const dV=IV[0],CV=dV.replace("_id",""),FV=lV.find(NV=>NV.type===CV&&NV[dV]===WV[dV]);return FV?lV.find(NV=>NV.type===ZV&&NV[`${ZV}_id`]===FV[`${ZV}_id`]):null},getWhere:WV=>{const IV=Object.keys(WV);return lV.find(dV=>dV.type===ZV&&IV.every(CV=>dV[CV]===WV[CV]))},list:WV=>{const IV=WV?Object.keys(WV):[];return lV.filter(dV=>dV.type===ZV&&IV.every(CV=>dV[CV]===WV[CV]))},insert:WV=>{var CV;(CV=VV.counts)[ZV]??(CV[ZV]=-1),VV.counts[ZV]++;const IV=VV.counts[ZV],dV={type:ZV,[`${ZV}_id`]:`${ZV}_${IV}`,...WV};return J.validateInserts&&(dist_exports[ZV]??any_soup_element).parse(dV),lV.push(dV),dV},delete:WV=>{const IV=lV.find(dV=>dV[`${ZV}_id`]===WV);IV&&lV.splice(lV.indexOf(IV),1)},update:(WV,IV)=>{const dV=lV.find(CV=>CV.type===ZV&&CV[`${ZV}_id`]===WV);if(dV)return Object.assign(dV,IV),dV},select:WV=>{if(ZV==="source_component")return lV.find(IV=>IV.type==="source_component"&&IV.name===WV.replace(/\./g,""));if(ZV==="pcb_port"||ZV==="source_port"||ZV==="schematic_port"){const[IV,dV]=WV.replace(/\./g,"").split(/[\s\>]+/),CV=lV.find(NV=>NV.type==="source_component"&&NV.name===IV);if(!CV)return null;const FV=lV.find(NV=>NV.type==="source_port"&&NV.source_component_id===CV.source_component_id&&(NV.name===dV||(NV.port_hints??[]).includes(dV)));if(!FV)return null;if(ZV==="source_port")return FV;if(ZV==="pcb_port")return lV.find(NV=>NV.type==="pcb_port"&&NV.source_port_id===FV.source_port_id);if(ZV==="schematic_port")return lV.find(NV=>NV.type==="schematic_port"&&NV.source_port_id===FV.source_port_id)}}}})};su$1.unparsed=su$1;var su_default$1=su$1,transformPCBElement=(lV,J)=>{if(lV.type==="pcb_plated_hole"||lV.type==="pcb_hole"||lV.type==="pcb_via"||lV.type==="pcb_smtpad"||lV.type==="pcb_port"){const{x:VV,y:RV}=applyToPoint(J,{x:lV.x,y:lV.y});lV.x=VV,lV.y=RV}else if(lV.type==="pcb_keepout"||lV.type==="pcb_board")lV.center=applyToPoint(J,lV.center);else if(lV.type==="pcb_silkscreen_text"||lV.type==="pcb_fabrication_note_text")lV.anchor_position=applyToPoint(J,lV.anchor_position);else if(lV.type==="pcb_silkscreen_circle"||lV.type==="pcb_silkscreen_rect"||lV.type==="pcb_component")lV.center=applyToPoint(J,lV.center);else if(lV.type==="pcb_silkscreen_path"||lV.type==="pcb_trace"||lV.type==="pcb_fabrication_note_path")lV.route=lV.route.map(VV=>{const RV=applyToPoint(J,VV);return VV.x=RV.x,VV.y=RV.y,VV});else if(lV.type==="pcb_silkscreen_line"){const VV={x:lV.x1,y:lV.y1},RV={x:lV.x2,y:lV.y2},UV=applyToPoint(J,VV),ZV=applyToPoint(J,RV);lV.x1=UV.x,lV.y1=UV.y,lV.x2=ZV.x,lV.y2=ZV.y}else if(lV.type==="cad_component"){const VV=applyToPoint(J,{x:lV.position.x,y:lV.position.y});lV.position.x=VV.x,lV.position.y=VV.y}return lV};function stringHash(lV){let J=0;if(lV.length==0)return J;for(var VV=0;VV<lV.length;VV++){var RV=lV.charCodeAt(VV);J=(J<<5)-J+RV,J=J&J}return Math.abs(J)}var nice_color_palettes=[["#69d2e7","#a7dbd8","#e0e4cc","#f38630","#fa6900"],["#fe4365","#fc9d9a","#f9cdad","#c8c8a9","#83af9b"],["#ecd078","#d95b43","#c02942","#542437","#53777a"],["#556270","#4ecdc4","#c7f464","#ff6b6b","#c44d58"],["#774f38","#e08e79","#f1d4af","#ece5ce","#c5e0dc"],["#e8ddcb","#cdb380","#036564","#033649","#031634"],["#490a3d","#bd1550","#e97f02","#f8ca00","#8a9b0f"],["#594f4f","#547980","#45ada8","#9de0ad","#e5fcc2"],["#00a0b0","#6a4a3c","#cc333f","#eb6841","#edc951"],["#e94e77","#d68189","#c6a49a","#c6e5d9","#f4ead5"],["#3fb8af","#7fc7af","#dad8a7","#ff9e9d","#ff3d7f"],["#d9ceb2","#948c75","#d5ded9","#7a6a53","#99b2b7"],["#ffffff","#cbe86b","#f2e9e1","#1c140d","#cbe86b"],["#efffcd","#dce9be","#555152","#2e2633","#99173c"],["#343838","#005f6b","#008c9e","#00b4cc","#00dffc"],["#413e4a","#73626e","#b38184","#f0b49e","#f7e4be"],["#ff4e50","#fc913a","#f9d423","#ede574","#e1f5c4"],["#99b898","#fecea8","#ff847c","#e84a5f","#2a363b"],["#655643","#80bca3","#f6f7bd","#e6ac27","#bf4d28"],["#00a8c6","#40c0cb","#f9f2e7","#aee239","#8fbe00"],["#351330","#424254","#64908a","#e8caa4","#cc2a41"],["#554236","#f77825","#d3ce3d","#f1efa5","#60b99a"],["#5d4157","#838689","#a8caba","#cad7b2","#ebe3aa"],["#8c2318","#5e8c6a","#88a65e","#bfb35a","#f2c45a"],["#fad089","#ff9c5b","#f5634a","#ed303c","#3b8183"],["#ff4242","#f4fad2","#d4ee5e","#e1edb9","#f0f2eb"],["#f8b195","#f67280","#c06c84","#6c5b7b","#355c7d"],["#d1e751","#ffffff","#000000","#4dbce9","#26ade4"],["#1b676b","#519548","#88c425","#bef202","#eafde6"],["#5e412f","#fcebb6","#78c0a8","#f07818","#f0a830"],["#bcbdac","#cfbe27","#f27435","#f02475","#3b2d38"],["#452632","#91204d","#e4844a","#e8bf56","#e2f7ce"],["#eee6ab","#c5bc8e","#696758","#45484b","#36393b"],["#f0d8a8","#3d1c00","#86b8b1","#f2d694","#fa2a00"],["#2a044a","#0b2e59","#0d6759","#7ab317","#a0c55f"],["#f04155","#ff823a","#f2f26f","#fff7bd","#95cfb7"],["#b9d7d9","#668284","#2a2829","#493736","#7b3b3b"],["#bbbb88","#ccc68d","#eedd99","#eec290","#eeaa88"],["#b3cc57","#ecf081","#ffbe40","#ef746f","#ab3e5b"],["#a3a948","#edb92e","#f85931","#ce1836","#009989"],["#300030","#480048","#601848","#c04848","#f07241"],["#67917a","#170409","#b8af03","#ccbf82","#e33258"],["#aab3ab","#c4cbb7","#ebefc9","#eee0b7","#e8caaf"],["#e8d5b7","#0e2430","#fc3a51","#f5b349","#e8d5b9"],["#ab526b","#bca297","#c5ceae","#f0e2a4","#f4ebc3"],["#607848","#789048","#c0d860","#f0f0d8","#604848"],["#b6d8c0","#c8d9bf","#dadabd","#ecdbbc","#fedcba"],["#a8e6ce","#dcedc2","#ffd3b5","#ffaaa6","#ff8c94"],["#3e4147","#fffedf","#dfba69","#5a2e2e","#2a2c31"],["#fc354c","#29221f","#13747d","#0abfbc","#fcf7c5"],["#cc0c39","#e6781e","#c8cf02","#f8fcc1","#1693a7"],["#1c2130","#028f76","#b3e099","#ffeaad","#d14334"],["#a7c5bd","#e5ddcb","#eb7b59","#cf4647","#524656"],["#dad6ca","#1bb0ce","#4f8699","#6a5e72","#563444"],["#5c323e","#a82743","#e15e32","#c0d23e","#e5f04c"],["#edebe6","#d6e1c7","#94c7b6","#403b33","#d3643b"],["#fdf1cc","#c6d6b8","#987f69","#e3ad40","#fcd036"],["#230f2b","#f21d41","#ebebbc","#bce3c5","#82b3ae"],["#b9d3b0","#81bda4","#b28774","#f88f79","#f6aa93"],["#3a111c","#574951","#83988e","#bcdea5","#e6f9bc"],["#5e3929","#cd8c52","#b7d1a3","#dee8be","#fcf7d3"],["#1c0113","#6b0103","#a30006","#c21a01","#f03c02"],["#000000","#9f111b","#b11623","#292c37","#cccccc"],["#382f32","#ffeaf2","#fcd9e5","#fbc5d8","#f1396d"],["#e3dfba","#c8d6bf","#93ccc6","#6cbdb5","#1a1f1e"],["#f6f6f6","#e8e8e8","#333333","#990100","#b90504"],["#1b325f","#9cc4e4","#e9f2f9","#3a89c9","#f26c4f"],["#a1dbb2","#fee5ad","#faca66","#f7a541","#f45d4c"],["#c1b398","#605951","#fbeec2","#61a6ab","#accec0"],["#5e9fa3","#dcd1b4","#fab87f","#f87e7b","#b05574"],["#951f2b","#f5f4d7","#e0dfb1","#a5a36c","#535233"],["#8dccad","#988864","#fea6a2","#f9d6ac","#ffe9af"],["#2d2d29","#215a6d","#3ca2a2","#92c7a3","#dfece6"],["#413d3d","#040004","#c8ff00","#fa023c","#4b000f"],["#eff3cd","#b2d5ba","#61ada0","#248f8d","#605063"],["#ffefd3","#fffee4","#d0ecea","#9fd6d2","#8b7a5e"],["#cfffdd","#b4dec1","#5c5863","#a85163","#ff1f4c"],["#9dc9ac","#fffec7","#f56218","#ff9d2e","#919167"],["#4e395d","#827085","#8ebe94","#ccfc8e","#dc5b3e"],["#a8a7a7","#cc527a","#e8175d","#474747","#363636"],["#f8edd1","#d88a8a","#474843","#9d9d93","#c5cfc6"],["#046d8b","#309292","#2fb8ac","#93a42a","#ecbe13"],["#f38a8a","#55443d","#a0cab5","#cde9ca","#f1edd0"],["#a70267","#f10c49","#fb6b41","#f6d86b","#339194"],["#ff003c","#ff8a00","#fabe28","#88c100","#00c176"],["#ffedbf","#f7803c","#f54828","#2e0d23","#f8e4c1"],["#4e4d4a","#353432","#94ba65","#2790b0","#2b4e72"],["#0ca5b0","#4e3f30","#fefeeb","#f8f4e4","#a5b3aa"],["#4d3b3b","#de6262","#ffb88c","#ffd0b3","#f5e0d3"],["#fffbb7","#a6f6af","#66b6ab","#5b7c8d","#4f2958"],["#edf6ee","#d1c089","#b3204d","#412e28","#151101"],["#9d7e79","#ccac95","#9a947c","#748b83","#5b756c"],["#fcfef5","#e9ffe1","#cdcfb7","#d6e6c3","#fafbe3"],["#9cddc8","#bfd8ad","#ddd9ab","#f7af63","#633d2e"],["#30261c","#403831","#36544f","#1f5f61","#0b8185"],["#aaff00","#ffaa00","#ff00aa","#aa00ff","#00aaff"],["#d1313d","#e5625c","#f9bf76","#8eb2c5","#615375"],["#ffe181","#eee9e5","#fad3b2","#ffba7f","#ff9c97"],["#73c8a9","#dee1b6","#e1b866","#bd5532","#373b44"],["#805841","#dcf7f3","#fffcdd","#ffd8d8","#f5a2a2"]],getDebugLayoutObject=lV=>{var IV,dV,CV;let{x:J,y:VV,width:RV,height:UV}={...lV,...lV.size,...lV.center,...lV.position};lV.x1!==void 0&&lV.x2!==void 0&&lV.y1!==void 0&&lV.y2!==void 0&&(J=(lV.x1+lV.x2)/2,VV=(lV.y1+lV.y2)/2,RV=Math.abs(lV.x1-lV.x2),UV=Math.abs(lV.y1-lV.y2));const ZV=lV.text||lV.name||((IV=lV.source)==null?void 0:IV.text)||((dV=lV.source)==null?void 0:dV.name)||"?",WV=lV;return J===void 0||VV===void 0?null:(RV===void 0&&"outer_diameter"in lV&&(RV=lV.outer_diameter,UV=lV.outer_diameter),(RV===void 0||UV===void 0)&&(RV=.1,UV=.1),{x:J,y:VV,width:RV,height:UV,title:ZV,content:WV,bg_color:((CV=nice_color_palettes[stringHash(lV.type||ZV)%nice_color_palettes.length])==null?void 0:CV[4])??"#f00"})},isTruthy=lV=>!!lV,findBoundsAndCenter=lV=>{const J=lV.filter(CV=>CV.type.startsWith("pcb_")).concat(lV.filter(CV=>CV.type==="pcb_trace").flatMap(CV=>CV.route)).map(CV=>getDebugLayoutObject(CV)).filter(isTruthy);if(J.length===0)return{center:{x:0,y:0},width:0,height:0};let VV=J[0].x-J[0].width/2,RV=J[0].x+J[0].width/2,UV=J[0].y-J[0].height/2,ZV=J[0].y+J[0].height/2;for(const CV of J.slice(1))VV=Math.min(VV,CV.x-CV.width/2),RV=Math.max(RV,CV.x+CV.width/2),UV=Math.min(UV,CV.y-CV.height/2),ZV=Math.max(ZV,CV.y+CV.height/2);const WV=RV-VV,IV=ZV-UV;return{center:{x:VV+WV/2,y:UV+IV/2},width:WV,height:IV}},createStore=(lV={})=>createStore$1(J=>({selected_layer:"top",pcb_viewer_id:`pcb_viewer_${Math.random().toString().slice(2,10)}`,in_edit_mode:!1,in_move_footprint_mode:!1,in_draw_trace_mode:!1,is_moving_component:!1,is_drawing_trace:!1,is_mouse_over_container:!1,is_showing_multiple_traces_length:!1,is_showing_rats_nest:!1,...lV,selectLayer:VV=>J({selected_layer:VV}),setEditMode:VV=>J({in_edit_mode:VV!=="off",in_move_footprint_mode:VV==="move_footprint",in_draw_trace_mode:VV==="draw_trace",is_moving_component:!1,is_drawing_trace:!1}),setIsShowingRatsNest:VV=>J({is_showing_rats_nest:VV}),setIsMovingComponent:VV=>J({is_moving_component:VV}),setIsDrawingTrace:VV=>J({is_drawing_trace:VV}),setIsMouseOverContainer:VV=>J({is_mouse_over_container:VV}),setIsShowingMultipleTracesLength:VV=>J({is_showing_multiple_traces_length:VV})})),useGlobalStore=lV=>{const J=reactExports.useContext(StoreContext);return useStore(J,lV)},StoreContext=reactExports.createContext(null),ContextProviders=({children:lV,initialState:J})=>{const VV=reactExports.useMemo(()=>createStore(J),[]);return jsxRuntimeExports.jsx(StoreContext.Provider,{value:VV,children:lV})},applyTraceHintEditEvent=(lV,J)=>{if(lV.find(RV=>RV.type==="pcb_trace_hint"&&RV.pcb_trace_hint_id===J.pcb_trace_hint_id))lV=lV.map(RV=>RV.pcb_trace_hint_id===J.pcb_trace_hint_id?{...RV,route:J.route}:RV);else{const RV=su_default$1(lV).pcb_port.get(J.pcb_port_id);lV=lV.filter(UV=>!(UV.type==="pcb_trace_hint"&&UV.pcb_port_id===J.pcb_port_id)).concat([{type:"pcb_trace_hint",pcb_trace_hint_id:J.pcb_trace_hint_id,route:J.route,pcb_port_id:J.pcb_port_id,pcb_component_id:RV==null?void 0:RV.pcb_component_id}])}return lV},applyEditEvents=(lV,J)=>{lV=JSON.parse(JSON.stringify(lV));for(const VV of J)if(VV.pcb_edit_event_type==="edit_component_location"){const RV=translate(VV.new_center.x-VV.original_center.x,VV.new_center.y-VV.original_center.y);lV=lV.map(UV=>UV.pcb_component_id!==VV.pcb_component_id?UV:transformPCBElement(UV,RV))}else VV.pcb_edit_event_type==="edit_trace_hint"&&(lV=applyTraceHintEditEvent(lV,VV));return lV},useToast=()=>{const lV=useGlobalStore(VV=>VV.pcb_viewer_id),J=(VV,RV)=>B$1(VV,{containerId:lV,...RV});return J.error=(VV,RV)=>B$1.error(VV,{containerId:lV,...RV}),J.promise=B$1.promise,J},ToastContainer=()=>{reactExports.useEffect(()=>{injectStyle()},[]);const lV=useGlobalStore(J=>J.pcb_viewer_id);return jsxRuntimeExports.jsx(Q$1,{position:"top-center",containerId:lV})},noop=function(){},isBrowser=typeof window<"u",useIsomorphicLayoutEffect$1=isBrowser?reactExports.useLayoutEffect:reactExports.useEffect,useIsomorphicLayoutEffect_default=useIsomorphicLayoutEffect$1,defaultState={x:0,y:0,width:0,height:0,top:0,left:0,bottom:0,right:0};function useMeasure(){var lV=reactExports.useState(null),J=lV[0],VV=lV[1],RV=reactExports.useState(defaultState),UV=RV[0],ZV=RV[1],WV=reactExports.useMemo(function(){return new window.ResizeObserver(function(IV){if(IV[0]){var dV=IV[0].contentRect,CV=dV.x,FV=dV.y,NV=dV.width,gV=dV.height,JV=dV.top,eV=dV.left,nV=dV.bottom,aV=dV.right;ZV({x:CV,y:FV,width:NV,height:gV,top:JV,left:eV,bottom:nV,right:aV})}})},[]);return useIsomorphicLayoutEffect_default(function(){if(J)return WV.observe(J),function(){WV.disconnect()}},[J]),[VV,UV]}var useMeasure_default=isBrowser&&typeof window.ResizeObserver<"u"?useMeasure:function(){return[noop,defaultState]},useMouseMatrixTransform=(lV={})=>{const J=reactExports.useRef(null),[VV,RV]=reactExports.useState(0),UV=lV.canvasElm??J.current,[ZV,WV]=reactExports.useState(lV.initialTransform??identity$3()),[IV,dV]=reactExports.useState(0),[CV,FV]=reactExports.useReducer(aV=>aV+1,0),NV=reactExports.useCallback(aV=>{lV.onSetTransform&&lV.onSetTransform(aV),lV.transform||WV(aV)},[lV.onSetTransform,WV]),gV=reactExports.useCallback(aV=>{NV(aV),FV()},[NV]),JV=lV.transform??ZV,eV=reactExports.useCallback(()=>{RV(Date.now())},[]);reactExports.useEffect(()=>{const aV=lV.canvasElm??J.current;if(aV&&!UV){dV(IV+1);return}if(!aV){const KV=setTimeout(()=>{dV(IV+1)},100);return()=>clearTimeout(KV)}let GV=lV.transform??ZV,YV={x:0,y:0},AV={x:0,y:0},EV=!1;const QV=KV=>({x:KV.pageX-aV.getBoundingClientRect().left-window.scrollX,y:KV.pageY-aV.getBoundingClientRect().top-window.scrollY});function bV(KV){lV.enabled!==!1&&(lV.shouldDrag&&!lV.shouldDrag(KV)||(YV=QV(KV),!(Date.now()-VV<100)&&(EV=!0,KV.preventDefault())))}function iV(KV){if(!EV||lV.enabled===!1||lV.shouldDrag&&!lV.shouldDrag(KV))return;AV=QV(KV);const LV=compose(translate(AV.x-YV.x,AV.y-YV.y),GV);NV(LV),GV=LV,EV=!1}function HV(KV){QV(KV),!(!EV||lV.enabled===!1)&&(lV.shouldDrag&&!lV.shouldDrag(KV)||(AV=QV(KV),NV(compose(translate(AV.x-YV.x,AV.y-YV.y),GV))))}function DV(KV){if(lV.enabled===!1||lV.shouldDrag&&!lV.shouldDrag(KV))return;const LV=QV(KV),Ul=compose(translate(LV.x,LV.y),scale$2(1-KV.deltaY/1e3,1-KV.deltaY/1e3),translate(-LV.x,-LV.y),GV);NV(Ul),GV=Ul,KV.preventDefault()}function wV(KV){if(!EV||lV.shouldDrag&&!lV.shouldDrag(KV))return;if(aV){const Ul=aV.getBoundingClientRect();if(KV.clientX>=Ul.left+10&&KV.clientX<=Ul.right-10&&KV.clientY>=Ul.top+10&&KV.clientY<=Ul.bottom-10)return}EV=!1,AV=QV(KV);const LV=compose(translate(AV.x-YV.x,AV.y-YV.y),GV);NV(LV),GV=LV}return aV.addEventListener("mousedown",bV),aV.addEventListener("mouseup",iV),window.addEventListener("mousemove",HV),aV.addEventListener("mouseout",wV),aV.addEventListener("wheel",DV),()=>{aV.removeEventListener("mousedown",bV),aV.removeEventListener("mouseup",iV),window.removeEventListener("mousemove",HV),aV.removeEventListener("mouseout",wV),aV.removeEventListener("wheel",DV)}},[UV,IV,CV,VV,lV.enabled,lV.shouldDrag]);const nV=reactExports.useCallback(aV=>applyToPoint(JV,aV),[JV]);return{ref:J,transform:JV,applyTransformToPoint:nV,setTransform:gV,cancelDrag:eV}},src_default=useMouseMatrixTransform,colors_default={"3d_viewer":{background_bottom:"rgb(102, 102, 128)",background_top:"rgb(204, 204, 230)",board:"rgb(51, 43, 23)",copper:"rgb(179, 156, 0)",silkscreen_bottom:"rgb(230, 230, 230)",silkscreen_top:"rgb(230, 230, 230)",soldermask:"rgb(20, 51, 36)",solderpaste:"rgb(128, 128, 128)"},board:{anchor:"rgb(255, 38, 226)",aux_items:"rgb(255, 255, 255)",b_adhes:"rgb(0, 0, 132)",b_crtyd:"rgb(255, 38, 226)",b_fab:"rgb(88, 93, 132)",b_mask:"rgba(2, 255, 238, 0.400)",b_paste:"rgb(0, 194, 194)",b_silks:"rgb(232, 178, 167)",background:"rgb(0, 16, 35)",cmts_user:"rgb(89, 148, 220)",copper:{b:"rgb(77, 127, 196)",f:"rgb(200, 52, 52)",in1:"rgb(127, 200, 127)",in10:"rgb(237, 124, 51)",in11:"rgb(91, 195, 235)",in12:"rgb(247, 111, 142)",in13:"rgb(167, 165, 198)",in14:"rgb(40, 204, 217)",in15:"rgb(232, 178, 167)",in16:"rgb(242, 237, 161)",in17:"rgb(237, 124, 51)",in18:"rgb(91, 195, 235)",in19:"rgb(247, 111, 142)",in2:"rgb(206, 125, 44)",in20:"rgb(167, 165, 198)",in21:"rgb(40, 204, 217)",in22:"rgb(232, 178, 167)",in23:"rgb(242, 237, 161)",in24:"rgb(237, 124, 51)",in25:"rgb(91, 195, 235)",in26:"rgb(247, 111, 142)",in27:"rgb(167, 165, 198)",in28:"rgb(40, 204, 217)",in29:"rgb(232, 178, 167)",in3:"rgb(79, 203, 203)",in30:"rgb(242, 237, 161)",in4:"rgb(219, 98, 139)",in5:"rgb(167, 165, 198)",in6:"rgb(40, 204, 217)",in7:"rgb(232, 178, 167)",in8:"rgb(242, 237, 161)",in9:"rgb(141, 203, 129)"},cursor:"rgb(255, 255, 255)",drc:"rgb(194, 194, 194)",drc_error:"rgba(215, 91, 107, 0.800)",drc_exclusion:"rgb(255, 255, 255)",drc_warning:"rgba(255, 208, 66, 0.902)",dwgs_user:"rgb(194, 194, 194)",eco1_user:"rgb(180, 219, 210)",eco2_user:"rgb(216, 200, 82)",edge_cuts:"rgb(208, 210, 205)",f_adhes:"rgb(132, 0, 132)",f_crtyd:"rgb(255, 0, 245)",f_fab:"rgb(175, 175, 175)",f_mask:"rgba(216, 100, 255, 0.400)",f_paste:"rgba(180, 160, 154, 0.902)",f_silks:"rgb(242, 237, 161)",footprint_text_back:"rgb(0, 0, 132)",footprint_text_front:"rgb(194, 194, 194)",footprint_text_invisible:"rgb(132, 132, 132)",grid:"rgb(132, 132, 132)",grid_axes:"rgb(194, 194, 194)",margin:"rgb(255, 38, 226)",microvia:"rgb(0, 132, 132)",no_connect:"rgb(0, 0, 132)",pad_back:"rgb(77, 127, 196)",pad_front:"rgb(200, 52, 52)",pad_plated_hole:"rgb(194, 194, 0)",pad_through_hole:"rgb(227, 183, 46)",plated_hole:"rgb(26, 196, 210)",ratsnest:"rgba(245, 255, 213, 0.702)",select_overlay:"rgb(4, 255, 67)",through_via:"rgb(236, 236, 236)",user_1:"rgb(194, 194, 194)",user_2:"rgb(89, 148, 220)",user_3:"rgb(180, 219, 210)",user_4:"rgb(216, 200, 82)",user_5:"rgb(194, 194, 194)",user_6:"rgb(89, 148, 220)",user_7:"rgb(180, 219, 210)",user_8:"rgb(216, 200, 82)",user_9:"rgb(232, 178, 167)",via_blind_buried:"rgb(187, 151, 38)",via_hole:"rgb(227, 183, 46)",via_micro:"rgb(0, 132, 132)",via_through:"rgb(236, 236, 236)",worksheet:"rgb(200, 114, 171)"},gerbview:{axes:"rgb(0, 0, 132)",background:"rgb(0, 0, 0)",dcodes:"rgb(255, 255, 255)",grid:"rgb(132, 132, 132)",layers:["rgb(132, 0, 0)","rgb(194, 194, 0)","rgb(194, 0, 194)","rgb(194, 0, 0)","rgb(0, 132, 132)","rgb(0, 132, 0)","rgb(0, 0, 132)","rgb(132, 132, 132)","rgb(132, 0, 132)","rgb(194, 194, 194)","rgb(132, 0, 132)","rgb(132, 0, 0)","rgb(132, 132, 0)","rgb(194, 194, 194)","rgb(0, 0, 132)","rgb(0, 132, 0)","rgb(132, 0, 0)","rgb(194, 194, 0)","rgb(194, 0, 194)","rgb(194, 0, 0)","rgb(0, 132, 132)","rgb(0, 132, 0)","rgb(0, 0, 132)","rgb(132, 132, 132)","rgb(132, 0, 132)","rgb(194, 194, 194)","rgb(132, 0, 132)","rgb(132, 0, 0)","rgb(132, 132, 0)","rgb(194, 194, 194)","rgb(0, 0, 132)","rgb(0, 132, 0)","rgb(132, 0, 0)","rgb(194, 194, 0)","rgb(194, 0, 194)","rgb(194, 0, 0)","rgb(0, 132, 132)","rgb(0, 132, 0)","rgb(0, 0, 132)","rgb(132, 132, 132)","rgb(132, 0, 132)","rgb(194, 194, 194)","rgb(132, 0, 132)","rgb(132, 0, 0)","rgb(132, 132, 0)","rgb(194, 194, 194)","rgb(0, 0, 132)","rgb(0, 132, 0)","rgb(132, 0, 0)","rgb(194, 194, 0)","rgb(194, 0, 194)","rgb(194, 0, 0)","rgb(0, 132, 132)","rgb(0, 132, 0)","rgb(0, 0, 132)","rgb(132, 132, 132)","rgb(132, 0, 132)","rgb(194, 194, 194)","rgb(132, 0, 132)","rgb(132, 0, 0)"],negative_objects:"rgb(132, 132, 132)",worksheet:"rgb(0, 0, 132)"},palette:["rgb(132, 0, 0)","rgb(194, 194, 0)","rgb(194, 0, 194)","rgb(194, 0, 0)","rgb(0, 132, 132)","rgb(0, 132, 0)","rgb(0, 0, 132)","rgb(132, 132, 132)","rgb(132, 0, 132)","rgb(194, 194, 194)","rgb(132, 0, 132)","rgb(132, 0, 0)","rgb(132, 132, 0)","rgb(194, 194, 194)","rgb(0, 0, 132)","rgb(0, 132, 0)"],schematic:{anchor:"rgb(0, 0, 255)",aux_items:"rgb(0, 0, 0)",background:"rgb(33, 33, 33)",brightened:"rgb(204, 204, 204)",bus:"rgb(0, 96, 192)",bus_junction:"rgb(0, 96, 192)",component_body:"rgb(44, 44, 44)",component_outline:"rgb(192, 0, 0)",cursor:"rgb(224, 224, 224)",erc_error:"rgba(192, 48, 48, 0.800)",erc_warning:"rgba(192, 140, 0, 0.800)",fields:"rgb(128, 0, 160)",grid:"rgb(60, 60, 60)",grid_axes:"rgb(60, 60, 60)",hidden:"rgb(194, 194, 194)",junction:"rgb(0, 160, 0)",label_global:"rgb(0, 160, 224)",label_hier:"rgb(160, 160, 0)",label_local:"rgb(192, 192, 192)",net_name:"rgb(224, 224, 224)",no_connect:"rgb(97, 43, 224)",note:"rgb(192, 192, 0)",override_item_colors:!1,pin:"rgb(192, 0, 0)",pin_name:"rgb(192, 192, 192)",pin_number:"rgb(192, 0, 0)",reference:"rgb(192, 192, 192)",shadow:"rgba(102, 179, 255, 0.800)",sheet:"rgb(128, 0, 160)",sheet_background:"rgba(255, 255, 255, 0.000)",sheet_fields:"rgb(160, 160, 0)",sheet_filename:"rgb(160, 160, 0)",sheet_label:"rgb(160, 160, 0)",sheet_name:"rgb(0, 160, 204)",value:"rgb(192, 192, 192)",wire:"rgb(0, 160, 0)",worksheet:"rgb(192, 0, 0)"}},scaleOnly=(lV,J=1)=>{if(Math.abs(lV.a)!==Math.abs(lV.d))throw new Error("Cannot scale non-uniformly");return J*Math.abs(lV.a)},zIndexMap={elementOverlay:30,dimensionOverlay:30,editTraceHintOverlay:30,errorOverlay:30,ratsNestOverlay:20,toolbarOverlay:20,topLayer:10},LAYER_NAME_TO_COLOR$1={red:"red",black:"black",green:"green",board:"rgb(255, 255, 255)",other:"#eee",top:colors_default.board.copper.f,inner1:colors_default.board.copper.in1,inner2:colors_default.board.copper.in2,inner4:colors_default.board.copper.in4,inner5:colors_default.board.copper.in5,inner6:colors_default.board.copper.in6,inner7:colors_default.board.copper.in7,inner8:colors_default.board.copper.in8,bottom:colors_default.board.copper.b,drill:colors_default.board.anchor,keepout:colors_default.board.background,tkeepout:colors_default.board.b_crtyd,tplace:colors_default.board.b_silks,top_silkscreen:colors_default.board.f_silks,bottom_silkscreen:colors_default.board.b_silks,top_fabrication:colors_default.board.f_fab,bottom_fabrication:colors_default.board.b_fab,...colors_default.board},DEFAULT_DRAW_ORDER=["top","inner1","inner2","inner3","inner4","inner5","inner6","bottom"],Drawer=class{constructor(lV){Cd(this,"canvasLayerMap");Cd(this,"ctxLayerMap");Cd(this,"aperture");Cd(this,"transform");Cd(this,"foregroundLayer","top");Cd(this,"lastPoint");this.canvasLayerMap=lV,this.ctxLayerMap=Object.fromEntries(Object.entries(lV).map(([J,VV])=>[J,VV.getContext("2d")])),this.transform=identity$3(),this.transform.d*=-1,this.transform=compose(this.transform,translate(0,-500)),this.lastPoint={x:0,y:0},this.equip({})}clear(){for(const lV of Object.values(this.ctxLayerMap))lV.clearRect(0,0,lV.canvas.width,lV.canvas.height)}equip(lV){this.aperture={fontSize:0,shape:"circle",mode:"add",size:0,color:"red",layer:"top",opacity:this.foregroundLayer===lV.color?1:.5,...lV}}drawMeshPattern(lV,J,VV,RV,UV,ZV=45){const WV=this.getLayerCtx(),[IV,dV]=applyToPoint(this.transform,[lV,J]),[CV,FV]=applyToPoint(this.transform,[lV+VV,J+RV]),NV=scaleOnly(this.transform,UV);WV.lineWidth=1,WV.strokeStyle=this.aperture.color;const gV=JV=>{const eV=Math.sin(JV),nV=Math.cos(JV),aV=Math.sqrt(Math.pow(CV-IV,2)+Math.pow(FV-dV,2));for(let GV=-aV;GV<=aV;GV+=NV)WV.beginPath(),WV.moveTo(IV+GV*nV-aV*eV,dV+GV*eV+aV*nV),WV.lineTo(IV+GV*nV+aV*eV,dV+GV*eV-aV*nV),WV.stroke()};gV(ZV*Math.PI/180),gV((ZV+90)*Math.PI/180)}rect(lV,J,VV,RV,UV){const[ZV,WV]=applyToPoint(this.transform,[lV-VV/2,J-RV/2]),[IV,dV]=applyToPoint(this.transform,[lV+VV/2,J+RV/2]);this.applyAperture();const CV=this.getLayerCtx();UV?(CV.save(),CV.beginPath(),CV.rect(ZV,WV,IV-ZV,dV-WV),CV.clip(),this.drawMeshPattern(lV-VV/2,J-RV/2,VV,RV,.15),CV.restore(),CV.strokeRect(ZV,WV,IV-ZV,dV-WV)):CV.fillRect(ZV,WV,IV-ZV,dV-WV)}rotatedRect(lV,J,VV,RV,UV,ZV){const WV=this.getLayerCtx();this.applyAperture();const[IV,dV]=applyToPoint(this.transform,[lV-VV/2,J-RV/2]),[CV,FV]=applyToPoint(this.transform,[lV+VV/2,J+RV/2]);WV.save();const[NV,gV]=applyToPoint(this.transform,[lV,J]);WV.translate(NV,gV);const JV=360-UV;UV&&WV.rotate(JV*Math.PI/180),WV.translate(-NV,-gV),ZV?(WV.beginPath(),WV.rect(IV,dV,CV-IV,FV-dV),WV.clip(),this.drawMeshPattern(lV-VV/2,J-RV/2,VV,RV,.15),WV.strokeRect(IV,dV,CV-IV,FV-dV)):WV.fillRect(IV,dV,CV-IV,FV-dV),WV.restore()}circle(lV,J,VV,RV){const UV=scaleOnly(this.transform,VV),[ZV,WV]=applyToPoint(this.transform,[lV,J]);this.applyAperture();const IV=this.getLayerCtx();RV?(IV.save(),IV.beginPath(),IV.arc(ZV,WV,UV,0,2*Math.PI),IV.clip(),this.drawMeshPattern(lV-VV,J-VV,VV*2,VV*2,.15),IV.restore(),IV.beginPath(),IV.arc(ZV,WV,UV,0,2*Math.PI),IV.stroke()):(IV.beginPath(),IV.arc(ZV,WV,UV,0,2*Math.PI),IV.fill())}oval(lV,J,VV,RV){const UV=scaleOnly(this.transform,VV),ZV=scaleOnly(this.transform,RV),[WV,IV]=applyToPoint(this.transform,[lV,J]);this.applyAperture();const dV=this.getLayerCtx();dV.beginPath(),dV.ellipse(WV,IV,UV,ZV,0,0,2*Math.PI),dV.fill(),dV.closePath()}pill(lV,J,VV,RV){const[UV,ZV]=applyToPoint(this.transform,[lV-VV/2,J+RV/2]),WV=scaleOnly(this.transform,VV),IV=scaleOnly(this.transform,RV),dV=Math.min(WV,IV)/2;this.applyAperture();const CV=this.getLayerCtx();CV.beginPath(),CV.arc(UV+dV,ZV+dV,dV,Math.PI,Math.PI*1.5),CV.arc(UV+WV-dV,ZV+dV,dV,Math.PI*1.5,0),CV.arc(UV+WV-dV,ZV+IV-dV,dV,0,Math.PI*.5),CV.arc(UV+dV,ZV+IV-dV,dV,Math.PI*.5,Math.PI),CV.fill(),CV.closePath()}polygon(lV){if(lV.length<3)return;this.applyAperture();const J=this.getLayerCtx(),VV=lV.map(UV=>applyToPoint(this.transform,[UV.x,UV.y]));J.beginPath(),J.moveTo(VV[0][0],VV[0][1]);for(let UV=1;UV<VV.length;UV++)J.lineTo(VV[UV][0],VV[UV][1]);J.closePath(),J.fill();const RV=scaleOnly(this.transform,this.aperture.size);J.lineWidth=RV,J.stroke()}debugText(lV,J,VV){const[RV,UV]=applyToPoint(this.transform,[J,VV]);this.applyAperture();const ZV=this.getLayerCtx();ZV.font="10px sans-serif",ZV.fillText(lV,RV,UV)}getLayerCtx(){const lV=this.ctxLayerMap[this.aperture.layer];if(!lV)throw new Error(`No context for layer "${this.aperture.layer}"`);return lV}orderAndFadeLayers(){const{canvasLayerMap:lV,foregroundLayer:J}=this,VV=new Set([J,"drill","other","board"]);["drill","board",J,...DEFAULT_DRAW_ORDER.filter(UV=>UV!==J)].forEach((UV,ZV)=>{const WV=lV[UV];WV&&(WV.style.zIndex=`${zIndexMap.topLayer-ZV}`,WV.style.opacity=VV.has(UV)?"1":"0.5")})}applyAperture(){const{transform:lV,aperture:J}=this;let{size:VV,mode:RV,color:UV,fontSize:ZV,layer:WV}=J;WV in this.ctxLayerMap||(this.aperture.layer="other");const IV=this.getLayerCtx();if(!IV)throw new Error(`No context for layer "${this.foregroundLayer}"`);if(UV||(UV="undefined"),IV.lineWidth=scaleOnly(lV,VV),IV.lineCap="round",RV==="add"){let dV=(UV==null?void 0:UV[0])==="#"||UV!=null&&UV.startsWith("rgb")?UV:LAYER_NAME_TO_COLOR$1[UV==null?void 0:UV.toLowerCase()]?LAYER_NAME_TO_COLOR$1[UV==null?void 0:UV.toLowerCase()]:null;dV===null&&(console.warn(`Color mapping for "${UV}" not found`),dV="white"),IV.fillStyle=dV,IV.strokeStyle=dV}else IV.globalCompositeOperation="destination-out",IV.fillStyle="rgba(0,0,0,1)",IV.strokeStyle="rgba(0,0,0,1)";IV.font=`${scaleOnly(inverse(lV),ZV)}px sans-serif`}moveTo(lV,J){this.lastPoint={x:lV,y:J}}lineTo(lV,J){const[VV,RV]=applyToPoint(this.transform,[lV,J]),{size:UV,shape:ZV,mode:WV}=this.aperture,IV=scaleOnly(this.transform,UV);let{lastPoint:dV}=this;const CV=applyToPoint(this.transform,dV);this.applyAperture();const FV=this.getLayerCtx();ZV==="square"&&FV.fillRect(CV.x-IV/2,CV.y-IV/2,IV,IV),FV.beginPath(),FV.moveTo(CV.x,CV.y),FV.lineTo(VV,RV),FV.stroke(),FV.closePath(),ZV==="square"&&FV.fillRect(VV-IV/2,RV-IV/2,IV,IV),this.lastPoint={x:lV,y:J}}};function rotateText(lV){const{lines:J,anchorPoint:VV,ccwRotation:RV}=lV;if(!RV)return J;const UV=RV*Math.PI/180,ZV=rotate(UV),WV=compose(translate(VV.x,VV.y),ZV,translate(-VV.x,-VV.y));return applyToPoint(WV,VV),J.map(IV=>({...IV,x1:applyToPoint(WV,{x:IV.x1,y:IV.y1}).x,y1:applyToPoint(WV,{x:IV.x1,y:IV.y1}).y,x2:applyToPoint(WV,{x:IV.x2,y:IV.y2}).x,y2:applyToPoint(WV,{x:IV.x2,y:IV.y2}).y}))}var svgAlphabet={0:"M0.4544564813877358 0L0.2723441540828736 0.03592830447352719L0.1086847233315459 0.14528754990019965L0.020630545837255005 0.3040632652221331L0 0.5395277421960205L0.049259221760993496 0.7369487828466779L0.18080513776237842 0.9005494166306564L0.37036887043974215 0.9872116270037247L0.5864663759301132 1L0.8148695622827444 0.9332890276148733L0.9326583645506394 0.8113052246023419L1 0.4031281830668562L0.833288960385582 0.09886798567812842L0.6801767918233781 0.02483708485091681L0.4544564813877358 0",1:"M 0.198 0.272 L 0.537 0 L 0.54 1",2:"M0.069593147751606 0.19461498231706575L0.1039380353319058 0.1224291500164194L0.20543361884368308 0.05510832064153169L0.3717712794432549 0.009452970962689482L0.4785344452623127 0L0.663238590738758 0.008714098643339864L0.8017933618843684 0.04769189395915288L0.8775637379550322 0.10746757678258442L0.9047778372591005 0.17693069668193287L0.9029710920770878 0.2231347105796246L0.8704496788008566 0.30047744598157516L0.7292906538577354 0.4508486051631194L0.3737955032119913 0.7369006417749693L0 1L1 1",3:"M0.03917438899874637 0.19855364635107545L0.15510940508963084 0.06745632622133718L0.37598645522339846 0L0.8486391893813088 0.0652271323161611L0.9782182415054349 0.21747394183735683L0.9213133780517754 0.3547560290117714L0.6504271515903481 0.4543436297681271L0.22975249764129613 0.48476611625264143L0.7659038682744629 0.5411919558122493L0.9258712987734741 0.6203185665660985L1 0.7458360609169667L0.8938813281118737 0.9059190913045964L0.6166890258875837 1L0.261528440153542 0.9874861530507921L0 0.8837289530851273",4:"M0.7328897338403042 0L0 0.6684672518568535L1 0.6684672518568535M0.7243346007604563 0.4530722484807562L0.7243346007604563 1",5:"M 0 0 L 0 0.4973 L 0.4262 0.4319 L 0.7305 0.4565 L 0.8516 0.5009 L 0.9357 0.5639 L 1 0.7356 L 0.9696 0.8248 L 0.8898 0.895 L 0.733 0.9602 L 0.5518 0.9945 L 0.3814 1 L 0.2379 0.9821 L 0.1219 0.947 L 0 0.8748 M 0 0 L 1 0",6:"M0.6964601700926856 0L0.3639239026215478 0.0743562375769351L0.1415931962925719 0.21735490179786915L0.009977939399608712 0.46336322325406004L0.00029622007592593224 0.7083131475173043L0.09408885043224748 0.8746809149767036L0.3379247445101846 0.9876686500961888L0.7109203869569624 1L0.9260852957913362 0.9103558029693921L1 0.7716571969091733L0.9824294723385016 0.6390635485705886L0.7446504992867332 0.4733643097729175L0.31028858071607296 0.47578021640899115L0.1208702146816024 0.5481452483973847L0 0.6616669755788906",7:"M0 0L1 0L0.9246479649697582 0.030539772727272752L0.8850302419354837 0.05075757575757579L0.7922946068548385 0.11079545454545457L0.7419268208165322 0.15213068181818185L0.6907258064516127 0.20202020202020204L0.6400666267641127 0.26122159090909086L0.5913243447580644 0.33049242424242414L0.5458740234374998 0.4105902777777778L0.5050907258064514 0.5022727272727272L0.4703495148689514 0.6062973484848484L0.43257456133442534 0.787133049242424L0.41612903225806447 1",8:"M0.5143001078924863 0L0.16007477667923162 0.10731570786949331L0.14924628550868277 0.3146018498698755L0.2939585848842112 0.41617921794558677L0.8648302624811545 0.5385163833653317L1 0.7775820770511038L0.8180842915260376 0.9505845566922285L0.41968938540525413 1L0.08062381919779889 0.882831681184498L0 0.6936376947135333L0.17150171673893433 0.5188652309607817L0.6529263782780712 0.4242818653203618L0.8650205888491803 0.29644027376796367L0.8702067371119496 0.09910067291661573L0.5143001078924863 0",9:"M1 0.25379591792994305L0.9514789771111742 0.11679361536614272L0.8702482473521467 0.05711741614054847L0.7327445265851579 0.015213872471965633L0.525248180711544 0L0.3292056884418538 0.012928195113745608L0.15997632037247655 0.058762870026191856L0.05266940041228321 0.12882439350476L0 0.2562067822770946L0.11316462894512366 0.4121335905917837L0.2403060136479954 0.4603365890068938L0.4097241967586011 0.4745978388276783L0.8642414300184816 0.420815170259988L0.9732054796346318 0.34537434075898393L1 0.25379591792994305M0.9647426784191072 0.35488595400360495L0.4756895081034974 1",A:"M0 1L0.4808333333333333 0L1 1M0.24250000000000002 0.6099439775910365L0.7341666666666666 0.6099439775910365",B:"M0 1L0 0.0117369978777208L0.30665717153513444 0L0.5874522807082946 0.03451403469442413L0.7766202217193218 0.15033936404895643L0.7471969743588041 0.31967962568332936L0.5246013359741988 0.4102978954282461L0.04378745314885416 0.44918617613783574L0.5112949594180156 0.469692928091109L0.8540266515643348 0.5552749498651879L1 0.6868463175009967L0.9880091196159324 0.8570018204672155L0.922301719975498 0.9321708046604659L0.7584266951758925 0.9932594737131338L0 1",C:"M1 0.23038928858890784L0.9328355511865092 0.12426412616785204L0.8096380839483327 0.04912601676267708L0.5763225801788256 0L0.4039037709527492 0.015028068281399815L0.2519579390951737 0.06533979308999706L0.10359458463139784 0.18146243506591617L0 0.4862728453971315L0.08129580872733055 0.792689266886982L0.20257034847159672 0.9160822255736587L0.3286572892798542 0.9738230826074175L0.5742878414421707 1L0.7883510303801312 0.9665431511195721L0.946851033994232 0.8689071500976585L1 0.7311049027121912",D:"M0 1L0.015604366822624637 0.020770988281483303L0.22564758265176144 0L0.3865476147957666 0.0024153386496795644L0.6479126635475078 0.051745644338731314L0.841191887805517 0.15827717679529366L0.9517008345536152 0.30172260586872185L0.9957536578687336 0.4504541551987709L1 0.5624359222498485L0.9798483279164735 0.6584121775234548L0.9386273319285215 0.7395945263504481L0.806292129480815 0.8624239259880274L0.6296239151398265 0.9406169638094516L0.3397492767598845 0.9954164354263132L0 1",E:"M0 0L0 1M0 0L1 0M0 0.5L0.7 0.5M0 1L1 1",F:"M0 0L0 1M0.011363636363636364 0.006802721088435374L1 0.006802721088435374M0.011363636363636364 0.4965986394557823L0.8409090909090909 0.4965986394557823",G:"M0.902666857540557 0.03860785012651126L0.6504261864675637 0L0.3838947267237336 0.015442305268228053L0.21293332876776194 0.07706794377239819L0.07799659974941617 0.1994951236187481L0 0.46380381528937314L0.04159964421546915 0.7502491408002389L0.13176692977834842 0.8535497868383203L0.2709176262273927 0.936767572377719L0.4386472596876406 0.9891638569283179L0.6145513562841309 1L0.7782254421419019 0.9585373611026471L0.9092650433859927 0.8540372997461425L1 0.5556012645283437L0.5583959277303046 0.55491741080559",H:"M0 0L0 1M0 0.4788732394366197L0.989010989010989 0.4788732394366197M1 0L1 1",I:"M0.5 0L0.5 1",J:"M0.9976457238788704 0L1 0.7396412315872798L0.9773931362096968 0.8322033314977973L0.9345115952458736 0.882296255506608L0.8743862896259549 0.9221331222466961L0.8024024079884948 0.9526431718061675L0.6443996712151668 0.9893997797356828L0.5035848940343224 1L0.3127211130319937 0.9877004749449337L0.17201910858386513 0.9539509911894274L0.10357419806379677 0.9212555066079295L0.053656568662899015 0.8816079295154184L0.020759483663648916 0.8360407488986785L0.003376206348523566 0.7855864537444934L0 0.7312775330396476",K:"M0 0L0 1M0.8787878787878788 0.06666666666666667L0 0.6148148148148148M0.3333333333333333 0.45925925925925926L1 0.9777777777777777",L:"M0 0L0 1L1 1",M:"M0 1L0 0L0.5 0.6512L1 0L1 1",N:"M0 1L0 0L1 1L0.9803729146221786 0",O:"M0.4718499217948183 1L0.2896765846490613 0.9606979309189402L0.12315162147934663 0.8411184486080473L0 0.4352399966492615L0.11730398524516283 0.13145645436014852L0.2612197451988078 0.04493357858878059L0.5104071592772554 0L0.7450113425917159 0.05393013710105273L0.882367950645524 0.15242300282020502L1 0.5224527406249126L0.9414597290654386 0.7560662329321755L0.8371289514446183 0.8910800547287298L0.6518259868433511 0.9830452628933628L0.4718499217948183 1",P:"M0 1L0 0.018871774228013626L0.29609603495819875 0L0.5609840637427541 0.011794858892508529L0.7332142696692472 0.04353904702296349L0.8102258645858864 0.0691965055027166L0.9330504315465442 0.14445061754775845L0.9876391714147118 0.22527816445836535L1 0.3434414070631638L0.9510549958116356 0.41772808046663146L0.8746646891596713 0.45879131862541683L0.7528523813396283 0.49171525113425024L0.5766919939969619 0.5153253033973054L0.33725744877712827 0.5284469008187558L0.025622667325582785 0.529905468802775",Q:"M0.4618887943546369 0.9755918167206952L0.28356128136544534 0.9372490397450218L0.12055179272160406 0.8205882753548176L0 0.4246165790405623L0.1148276047430244 0.12824784112887844L0.25570518844754375 0.043836831567190586L0.49963205786237674 0L0.7292835601228574 0.0526138004304122L0.8637404608452104 0.14870263423138746L0.9788892040030622 0.5097006183769648L0.9215847647858059 0.7376120297474734L0.8194564929275405 0.869330409436378L0.6380654214095985 0.9590509139448092L0.4618887943546369 0.9755918167206952M0.5824181120212351 0.6861805006946525L1 1",R:"M0 0.9928375167236815L0 0.02590227442068435L0.3611517274211098 0L0.6146286724700761 0.008660554424468435L0.7675462459194776 0.035269459580494614L0.831839975516866 0.056961676692569484L0.8847592491838954 0.08519560521497332L0.9238557535364527 0.120683646438422L0.9583303225312839 0.21691797435320384L0.955092470586235 0.3022616904894429L0.9198097669001631 0.3640573439322699L0.8564862239866702 0.40639258627024005L0.7691258543593579 0.43335506909190874L0.601775027203482 0.4539166070813109L0.023939064200217658 0.46997623755243123M0.5038084874863982 0.5108023922274467L1 1",S:"M0.8886929689221953 0.15146982162688968L0.7276173683050475 0.013780286031594946L0.34582323121005076 0L0.1318235250900008 0.09920162734298861L0.0444543935052531 0.2811287071349243L0.08064065829108809 0.3709571405906485L0.21603115127470426 0.4485505768228281L0.7525409135992945 0.5111160926769565L0.9330263665417677 0.5850732219351329L1 0.7129938124702524L0.9117772389978691 0.9130572743138187L0.6423187128058188 1L0.29586019579751677 0.9935291584506244L0.10638454191462794 0.9229845198431584L0 0.7570771288048773",T:"M0 0L1 0M0.5148514851485149 0L0.5148514851485149 1",U:"M0 0L0.0023103778751369115 0.5467447428390111L0.01823032542100219 0.6954785891481812L0.05895528135268338 0.8056480226151669L0.13703402031421133 0.8894445726483398L0.23918400876232196 0.9448524533417946L0.3917887458926616 0.9848674531975652L0.584341627875137 1L0.7194816196604602 0.9848501456716763L0.8303268115073934 0.9449411544119768L0.8966613970084885 0.898186315516197L0.9251437568455642 0.867453197565408L0.9687114937020809 0.7890904895145239L0.9890470974808324 0.6852857184065537L1 0.0014769088758762145",V:"M0 0L0.5348837209302325 1L1 0",W:"M0 0L0.23300090661831369 0.9873417721518988L0.49954669084315495 0.30081906180193585L0.7851314596554849 1L1 0.0215934475055845",X:"M0 0L0.9893617021276596 1M1 0L0.010638297872340425 1",Y:"M0 0L0.4860515021459227 0.44712562100780695M1 0.0014194464158977947L0.48927038626609437 0.44996451383960256L0.5075107296137339 1",Z:"M0 0L1 0L0 1L1 1",".":"M 0.49 1 L 0.41 1","*":"M 0.5 0.25 L 0.8 0.25 M 0.5 0.25 L 0.5927 0.4402 M 0.5 0.25 L 0.2573 0.3676 M 0.5 0.25 L 0.2573 0.1324 M 0.5 0.25 L 0.599 0.055","(":"M0.75 0L0.25 0.5L0.25 0.5L0.75 1",")":"M0.25 0L0.75 0.5L0.75 0.5L0.25 1","-":"M0 0.5L1 0.5","+":"M 0 0.5 L 1 0.5 M 0.5 0.125 L 0.5 0.875","=":"M0 0.25L1 0.25M0 0.75L1 0.75",_:"M0 1 L1 1","[":"M0.75 0L0.25 0L0.25 1L0.75 1","]":"M0.25 0L0.75 0L0.75 1L0.25 1","<":"M0.75 0L0.25 0.5L0.25 0.5L0.75 1",">":"M0.25 0L0.75 0.5L0.75 0.5L0.25 1","'":"M 0.5 0 L 0.5 0.5",'"':"M 0.25 0 L 0.25 0.5 M 0.75 0 L 0.75 0.5"},lineAlphabet={};for(const lV in svgAlphabet){lineAlphabet[lV]=[];const J=svgAlphabet[lV].split("M").slice(1).map(VV=>VV.split("L").map(RV=>RV.trim().split(" ").map(parseFloat)));for(const VV of J)for(let RV=0;RV<VV.length-1;RV++)lineAlphabet[lV].push({x1:VV[RV][0],y1:1-VV[RV][1],x2:VV[RV+1][0],y2:1-VV[RV+1][1]})}var LETTER_HEIGHT_TO_WIDTH_RATIO=.6,LETTER_HEIGHT_TO_SPACE_RATIO=.2,getTextWidth=lV=>lV.text.length*lV.size*LETTER_HEIGHT_TO_WIDTH_RATIO+(lV.text.length-1)*lV.size*LETTER_HEIGHT_TO_SPACE_RATIO,convertTextToLines=lV=>{const J=lV.size/8,VV=lV.size*LETTER_HEIGHT_TO_WIDTH_RATIO,RV=lV.size*LETTER_HEIGHT_TO_SPACE_RATIO,UV=[];for(let ZV=0;ZV<lV.text.length;ZV++){const WV=lV.text[ZV],IV=lineAlphabet[WV.toUpperCase()];if(IV)for(const{x1:dV,y1:CV,x2:FV,y2:NV}of IV)UV.push({pcb_drawing_type:"line",x1:lV.x+(VV+RV)*ZV+VV*dV,y1:lV.y+lV.size*CV,x2:lV.x+(VV+RV)*ZV+VV*FV,y2:lV.y+lV.size*NV,width:J,layer:lV.layer,unit:lV.unit})}return UV};function getColor(lV){return lV.is_mouse_over||lV.is_in_highlighted_net?color(LAYER_NAME_TO_COLOR$1[lV.layer]).lighten(.5).rgb().toString():LAYER_NAME_TO_COLOR$1[lV.layer]}var drawLine=(lV,J)=>{lV.equip({size:J.zoomIndependent?J.width/lV.transform.a:J.width,shape:J.squareCap?"square":"circle",color:getColor(J),layer:J.layer}),lV.moveTo(J.x1,J.y1),lV.lineTo(J.x2,J.y2)},drawText=(lV,J)=>{lV.equip({fontSize:J.size,color:J.layer});let VV={x:0,y:0};const RV=getTextWidth(J),UV=J.size;J.align==="top_left"?VV.y=-UV:J.align==="bottom_right"?VV.x=-RV:J.align==="top_right"?(VV.x=-RV,VV.y=-UV):J.align==="center"&&(VV.x=-RV/2,VV.y=-UV/2),J.x??(J.x=0),J.y??(J.y=0);const ZV={x:J.x,y:J.y};let WV=convertTextToLines({...J,x:J.x+VV.x,y:J.y+VV.y});if(J.ccw_rotation){const IV={lines:WV,anchorPoint:ZV,ccwRotation:J.ccw_rotation};WV=rotateText(IV)}for(const IV of WV)drawLine(lV,IV)},drawRect=(lV,J)=>{lV.equip({color:getColor(J),layer:J.layer}),lV.rect(J.x,J.y,J.w,J.h,J.mesh_fill)},drawRotatedRect=(lV,J)=>{lV.equip({color:getColor(J),layer:J.layer}),lV.rotatedRect(J.x,J.y,J.w,J.h,J.ccw_rotation)},drawCircle=(lV,J)=>{lV.equip({color:getColor(J),layer:J.layer}),lV.circle(J.x,J.y,J.r,J.mesh_fill)},drawOval=(lV,J)=>{lV.equip({color:getColor(J),layer:J.layer}),lV.oval(J.x,J.y,J.rX,J.rY)},drawPill=(lV,J)=>{lV.equip({color:getColor(J),layer:J.layer}),lV.pill(J.x,J.y,J.w,J.h)},drawPolygon=(lV,J)=>{lV.equip({color:getColor(J),layer:J.layer}),lV.polygon(J.points)},drawPrimitive=(lV,J)=>{var VV;switch(J.pcb_drawing_type){case"line":return drawLine(lV,J);case"text":return drawText(lV,J);case"rect":return((VV=J._element)==null?void 0:VV.shape)==="rotated_rect"?drawRotatedRect(lV,{...J,ccw_rotation:J._element.ccw_rotation,mesh_fill:J.mesh_fill}):drawRect(lV,J);case"circle":return drawCircle(lV,J);case"oval":return drawOval(lV,J);case"pill":return drawPill(lV,J);case"polygon":return drawPolygon(lV,J)}},drawPrimitives=(lV,J)=>{J.sort((VV,RV)=>{const UV=["bottom","top","drill"];return UV.indexOf(VV.layer)-UV.indexOf(RV.layer)}),J.forEach(VV=>drawPrimitive(lV,VV))},CanvasPrimitiveRenderer=({primitives:lV,transform:J,grid:VV,width:RV=500,height:UV=500})=>{const ZV=reactExports.useRef(),WV=useGlobalStore(IV=>IV.selected_layer);return reactExports.useEffect(()=>{if(!ZV.current||Object.keys(ZV.current).length===0)return;const IV=new Drawer(ZV.current);J&&(IV.transform=J),IV.clear(),IV.foregroundLayer=WV,drawPrimitives(IV,lV),IV.orderAndFadeLayers()},[lV,J,WV]),jsxRuntimeExports.jsxs("div",{style:{backgroundColor:"black",width:RV,height:UV,position:"relative"},children:[jsxRuntimeExports.jsx(SuperGridExports.SuperGrid,{textColor:"rgba(0,255,0,0.8)",majorColor:"rgba(0,255,0,0.4)",minorColor:"rgba(0,255,0,0.2)",screenSpaceCellSize:200,width:RV,height:UV,transform:J,stringifyCoord:(IV,dV,CV)=>`${SuperGridExports.toMMSI(IV,CV)}, ${SuperGridExports.toMMSI(dV,CV)}`}),all_layers.map(IV=>IV.replace(/-/g,"")).concat(["drill","other"]).map((IV,dV)=>jsxRuntimeExports.jsx("canvas",{ref:CV=>{ZV.current??(ZV.current={}),ZV.current[IV]=CV},style:{position:"absolute",left:0,top:0,pointerEvents:"none"},width:RV,height:UV},IV))]})};function getExpandedStroke(lV,J){if(lV.length<2)throw new Error("Stroke must have at least two points");const VV=lV.map(NV=>Array.isArray(NV)?{x:NV[0],y:NV[1]}:NV),RV=[],UV=[];function ZV(NV,gV){const JV=gV.x-NV.x,eV=gV.y-NV.y,nV=Math.sqrt(JV*JV+eV*eV);return{x:-eV/nV,y:JV/nV}}function WV(NV,gV,JV,eV){const nV=eV/2,aV={x:NV.x+gV.x*nV*JV,y:NV.y+gV.y*nV*JV};JV>0?RV.push(aV):UV.unshift(aV)}const IV=ZV(VV[0],VV[1]),dV=VV[0].trace_width??J;WV(VV[0],IV,1,dV),WV(VV[0],IV,-1,dV);for(let NV=1;NV<VV.length-1;NV++){const gV=VV[NV-1],JV=VV[NV],eV=VV[NV+1],nV=ZV(gV,JV),aV=ZV(JV,eV),GV=nV.x+aV.x,YV=nV.y+aV.y,AV=Math.sqrt(GV*GV+YV*YV),EV=JV.trace_width??J;if(AV/2>2*(EV/2))WV(JV,nV,1,EV),WV(JV,aV,1,EV),WV(JV,nV,-1,EV),WV(JV,aV,-1,EV);else{const bV=1/AV;WV(JV,{x:GV*bV,y:YV*bV},1,EV),WV(JV,{x:GV*bV,y:YV*bV},-1,EV)}}const CV=ZV(VV[VV.length-2],VV[VV.length-1]),FV=VV[VV.length-1].trace_width??J;return WV(VV[VV.length-1],CV,1,FV),WV(VV[VV.length-1],CV,-1,FV),[...RV,...UV]}var globalPcbDrawingObjectCount=0,convertElementToPrimitives=(lV,J)=>{var WV;const VV="pcb_component_id"in lV?J.find(IV=>IV.type==="pcb_component"&&IV.pcb_component_id===lV.pcb_component_id):void 0,RV=VV&&"source_component_id"in VV?J.find(IV=>IV.type==="source_component"&&IV.source_component_id===VV.source_component_id):void 0,UV="source_port_id"in lV?lV.source_port_id:"pcb_port_id"in lV?(WV=su_default$1(J).pcb_port.get(lV.pcb_port_id))==null?void 0:WV.source_port_id:void 0,ZV=UV?J.find(IV=>IV.type==="source_port"&&IV.source_port_id===UV):void 0;switch(lV.type){case"pcb_board":{const{width:IV,height:dV,center:CV,outline:FV}=lV;return FV&&FV.length>2?FV.map((NV,gV,JV)=>({_pcb_drawing_object_id:`line_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"line",x1:NV.x,y1:NV.y,x2:gV===JV.length-1?JV[0].x:JV[gV+1].x,y2:gV===JV.length-1?JV[0].y:JV[gV+1].y,width:1,zoomIndependent:!0,layer:"board",_element:lV})):[{_pcb_drawing_object_id:`line_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"line",x1:CV.x-IV/2,y1:CV.y-dV/2,x2:CV.x+IV/2,y2:CV.y-dV/2,width:1,zoomIndependent:!0,layer:"board",_element:lV},{_pcb_drawing_object_id:`line_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"line",x1:CV.x-IV/2,y1:CV.y+dV/2,x2:CV.x+IV/2,y2:CV.y+dV/2,width:1,zoomIndependent:!0,layer:"board",_element:lV},{_pcb_drawing_object_id:`line_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"line",x1:CV.x-IV/2,y1:CV.y-dV/2,x2:CV.x-IV/2,y2:CV.y+dV/2,width:1,zoomIndependent:!0,layer:"board",_element:lV},{_pcb_drawing_object_id:`line_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"line",x1:CV.x+IV/2,y1:CV.y-dV/2,x2:CV.x+IV/2,y2:CV.y+dV/2,width:1,zoomIndependent:!0,layer:"board",_element:lV}]}case"pcb_smtpad":{if(lV.shape==="rect"||lV.shape==="rotated_rect"){const{shape:IV,x:dV,y:CV,width:FV,height:NV,layer:gV}=lV;return[{_pcb_drawing_object_id:`rect_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"rect",x:dV,y:CV,w:FV,h:NV,layer:gV||"top",_element:lV,_parent_pcb_component:VV,_parent_source_component:RV,_source_port:ZV}]}else if(lV.shape==="circle"){const{x:IV,y:dV,radius:CV,layer:FV}=lV;return[{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"circle",x:IV,y:dV,r:CV,layer:FV||"top",_element:lV,_parent_pcb_component:VV,_parent_source_component:RV,_source_port:ZV}]}return[]}case"pcb_hole":{if(lV.hole_shape==="circle"||!lV.hole_shape){const{x:IV,y:dV,hole_diameter:CV}=lV;return[{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"circle",x:IV,y:dV,r:CV/2,layer:"drill",_element:lV,_parent_pcb_component:VV,_parent_source_component:RV}]}return[]}case"pcb_plated_hole":if(lV.shape==="circle"){const{x:IV,y:dV,hole_diameter:CV,outer_diameter:FV}=lV;return[{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"circle",x:IV,y:dV,r:FV/2,layer:"top",_element:lV,_parent_pcb_component:VV,_parent_source_component:RV,_source_port:ZV},{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"circle",x:IV,y:dV,r:CV/2,layer:"drill",_element:lV}]}else if(lV.shape==="oval"){const{x:IV,y:dV,outer_height:CV,outer_width:FV,hole_height:NV,hole_width:gV}=lV;return[{_pcb_drawing_object_id:`oval_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"oval",x:IV,y:dV,rX:FV/2,rY:CV/2,layer:"top",_element:lV,_parent_pcb_component:VV,_parent_source_component:RV,_source_port:ZV},{_pcb_drawing_object_id:`oval_${globalPcbDrawingObjectCount++}`,_element:lV,pcb_drawing_type:"oval",x:IV,y:dV,rX:gV/2,rY:NV/2,layer:"drill"}]}else if(lV.shape==="pill"){const{x:IV,y:dV,outer_height:CV,outer_width:FV,hole_height:NV,hole_width:gV}=lV;return[{_pcb_drawing_object_id:`pill_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"pill",x:IV,y:dV,w:FV,h:CV,layer:"top",_element:lV,_parent_pcb_component:VV,_parent_source_component:RV,_source_port:ZV},{_pcb_drawing_object_id:`pill_${globalPcbDrawingObjectCount++}`,_element:lV,pcb_drawing_type:"pill",x:IV,y:dV,w:gV,h:NV,layer:"drill"}]}else return[];case"pcb_keepout":if(lV.shape==="circle"){const{center:IV,radius:dV}=lV;return[{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"circle",x:IV.x,y:IV.y,r:dV,layer:"top",_element:lV,_parent_pcb_component:VV,_parent_source_component:RV,mesh_fill:!0}]}else if(lV.shape==="rect"){const{x:IV,y:dV,width:CV,height:FV}=lV;return[{_pcb_drawing_object_id:`rect_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"rect",x:IV,y:dV,w:CV,h:FV,layer:"top",_element:lV,_parent_pcb_component:VV,_parent_source_component:RV,mesh_fill:!0}]}case"pcb_trace":{const IV=[];if(lV.route_thickness_mode==="interpolated"){const FV=lV.route.map(gV=>({x:gV.x,y:gV.y,trace_width:gV.route_type==="wire"?gV.width:.5})),NV=getExpandedStroke(FV,.5);return IV.push({_pcb_drawing_object_id:`polygon_${globalPcbDrawingObjectCount++}`,_element:lV,pcb_drawing_type:"polygon",points:NV,layer:lV.route[0].layer}),lV.route.forEach(gV=>{gV.route_type==="via"&&IV.push({_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,_element:lV,pcb_drawing_type:"circle",x:gV.x,y:gV.y,radius:gV.outer_diameter/2,fill:!0,layer:lV.route.layer})}),IV}let dV=null,CV=null;for(const FV of lV.route)FV.route_type==="wire"&&(dV!==null&&CV!==null&&IV.push({_pcb_drawing_object_id:`line_${globalPcbDrawingObjectCount++}`,_element:lV,pcb_drawing_type:"line",x1:dV,y1:CV,x2:FV.x,y2:FV.y,width:FV.width,squareCap:!1,layer:FV.layer}),dV=FV.x,CV=FV.y);return IV}case"pcb_via":{const{x:IV,y:dV,outer_diameter:CV,hole_diameter:FV,from_layer:NV,to_layer:gV}=lV;return[{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"circle",x:IV,y:dV,r:CV/2,layer:NV,_element:lV,_parent_pcb_component:VV,_parent_source_component:RV},{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,_element:lV,pcb_drawing_type:"circle",x:IV,y:dV,r:FV/2,layer:"drill",_parent_pcb_component:VV,_parent_source_component:RV},{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"circle",x:IV,y:dV,r:CV/2,layer:gV,_element:lV,_parent_pcb_component:VV,_parent_source_component:RV}]}case"pcb_silkscreen_rect":return[{_pcb_drawing_object_id:`rect_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"rect",x:lV.center.x,y:lV.center.y,w:lV.width,h:lV.height,layer:lV.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_circle":return[{_pcb_drawing_object_id:`circle_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"circle",x:lV.center.x,y:lV.center.y,r:lV.radius,layer:lV.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_oval":return[{_pcb_drawing_object_id:`oval_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"oval",x:lV.center.x,y:lV.center.y,rX:lV.radius_x/2,rY:lV.radius_y/2,layer:lV.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_pill":return[{_pcb_drawing_object_id:`pill_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"pill",x:lV.center.x,y:lV.center.y,w:lV.width,h:lV.height,layer:lV.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_silkscreen_line":return[{_pcb_drawing_object_id:`line_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"line",x1:lV.x1,y1:lV.y1,x2:lV.x2,y2:lV.y2,width:.1,squareCap:!1,layer:lV.layer==="bottom"?"bottom_silkscreen":"top_silkscreen"}];case"pcb_fabrication_note_path":case"pcb_silkscreen_path":{const{pcb_component_id:IV,route:dV,type:CV}=lV;let FV;return CV==="pcb_silkscreen_path"?FV=lV.layer==="bottom"?"bottom_silkscreen":"top_silkscreen":CV==="pcb_fabrication_note_path"&&(FV="top_fabrication"),dV.slice(0,-1).map((NV,gV)=>{const JV=dV[gV+1];return{_pcb_drawing_object_id:`line_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"line",x1:NV.x,y1:NV.y,x2:JV.x,y2:JV.y,width:lV.stroke_width??.1,squareCap:!1,layer:FV,_element:lV,_parent_pcb_component:VV,_parent_source_component:RV,_source_port:ZV}}).filter(Boolean)}case"pcb_silkscreen_text":return[{_pcb_drawing_object_id:`text_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"text",x:lV.anchor_position.x,y:lV.anchor_position.y,layer:lV.layer==="bottom"?"bottom_silkscreen":"top_silkscreen",align:lV.anchor_alignment??"center",text:lV.text,size:lV.font_size,ccw_rotation:lV.ccw_rotation}];case"pcb_fabrication_note_text":return[{_pcb_drawing_object_id:`text_${globalPcbDrawingObjectCount++}`,pcb_drawing_type:"text",x:lV.anchor_position.x,y:lV.anchor_position.y,layer:lV.layer==="bottom"?"bottom_fabrication":"top_fabrication",size:lV.font_size,align:lV.anchor_alignment??"center",text:lV.text}]}return[]};function getTraceOverlayInfo({primitiveElement:lV,elements:J}){let VV=lV.trace_length?`${lV.trace_length.toFixed(3)}`:"";const RV=su_default$1(J).source_trace.get(lV==null?void 0:lV.source_trace_id);if(RV!=null&&RV.display_name&&(RV!=null&&RV.max_length?VV+=` / ${RV.max_length}mm `:VV+=" mm ",VV+=`(${RV.display_name})`),!VV)return null;const UV=lV.trace_length&&(RV==null?void 0:RV.max_length)&&lV.trace_length>RV.max_length;return{text:VV,isOverLength:UV}}function filterTracesIfMultiple(lV){const{primitives:J,is_showing_multiple_traces_length:VV,elements:RV}=lV,UV=J.filter(dV=>dV._element.type==="pcb_trace"),ZV=RV.filter(dV=>dV.type==="source_trace"),WV=J.filter(dV=>dV._element.type!=="pcb_trace"),IV=UV.filter(dV=>ZV.some(CV=>dV._element.type==="pcb_trace"&&dV._element.source_trace_id===CV.source_trace_id&&CV.max_length!==void 0));if(!VV)return[...WV,...IV];if(UV.length>1){const dV=UV.reduce((CV,FV)=>{const NV=CV._element.trace_length;return FV._element.trace_length<NV?FV:CV},UV[0]);return[...WV,dV]}return J}var containerStyle={position:"absolute",left:0,top:0,pointerEvents:"none",color:"red",fontFamily:"sans-serif",fontSize:12,textShadow:"0 0 2px black"},getTextForHighlightedPrimitive=lV=>{const{_element:J,_parent_pcb_component:VV,_parent_source_component:RV,_source_port:UV}=lV;switch(J.type){case"pcb_trace":return J.trace_length?`${J.trace_length.toFixed(3)}`:"";case"pcb_smtpad":case"pcb_plated_hole":{let ZV="";RV&&"name"in RV&&RV.name&&(ZV+=`.${RV.name} > `);const WV=Array.from(new Set((J.port_hints??[]).concat((UV==null?void 0:UV.port_hints)??[]))).sort((IV,dV)=>dV.localeCompare(IV));return ZV+=WV.map(IV=>IV.match(/^[0-9]+$/)?`port.${IV}`:`.${IV}`).join(", "),ZV}default:return""}},layerColorHightlightMap={top:"red",bottom:"aqua"},HighlightedPrimitiveBoxWithText=({primitive:lV,mousePos:J,elements:VV})=>{var eV;const[RV,UV]=reactExports.useState(!1),ZV=lV._element;reactExports.useEffect(()=>{setTimeout(()=>{UV(!0)},100)},[]);let[WV,IV,dV,CV]=[lV.screen_x,lV.screen_y,lV.screen_w,lV.screen_h];const FV=lV.same_space_index??0,NV=26,gV=layerColorHightlightMap[(eV=lV==null?void 0:lV._element)==null?void 0:eV.layer]??"red";let JV=0;if(ZV.type==="pcb_smtpad"&&(ZV==null?void 0:ZV.shape)==="rotated_rect"&&(JV=ZV==null?void 0:ZV.ccw_rotation),ZV.type==="pcb_trace"){const aV=getTraceOverlayInfo({primitiveElement:ZV,elements:VV});if(!aV)return null;const GV=J.y-35;return jsxRuntimeExports.jsx("div",{style:{zIndex:zIndexMap.elementOverlay,position:"absolute",left:J.x,top:GV,color:gV,pointerEvents:"none",transform:"translateX(-50%)"},children:jsxRuntimeExports.jsx("div",{style:{backgroundColor:"#f2efcc",color:aV.isOverLength?"red":"black",textShadow:"none",WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",padding:"6px 6px",borderRadius:"6px",fontSize:"14px",minWidth:"45px",textAlign:"center",whiteSpace:"nowrap"},children:aV.text})})}return jsxRuntimeExports.jsx("div",{style:{zIndex:zIndexMap.elementOverlay,position:"absolute",left:WV-dV/2-8,top:IV-CV/2-8,width:dV+16,height:CV+16,color:gV,transform:`rotate(${-JV}deg)`,transformOrigin:"center center"},children:jsxRuntimeExports.jsx("div",{style:{width:RV?`calc(100% + ${NV*2*FV}px)`:"100%",height:RV?`calc(100% + ${NV*2*FV}px)`:"100%",marginLeft:RV?`${-NV*FV}px`:0,marginTop:RV?`${-NV*FV}px`:0,border:`1px solid ${gV}`,opacity:RV||FV===0?1:0,transition:"width 0.2s, height 0.2s, margin-left 0.2s, margin-top 0.2s, opacity 0.2s"},children:jsxRuntimeExports.jsx("div",{style:{position:"absolute",bottom:CV+20+NV*FV,marginRight:RV?`${-NV*FV}px`:0,marginBottom:RV?0:-NV*FV,transition:"margin-right 0.2s, margin-bottom 0.2s",backgroundColor:"#f2efcc",color:"black",textShadow:"none",WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",padding:"6px 6px",borderRadius:"6px",fontSize:"14px",transform:`rotate(${JV}deg)`,minWidth:"45px",textAlign:"center"},children:getTextForHighlightedPrimitive(lV)})})})},ElementOverlayBox=({highlightedPrimitives:lV,mousePos:J,elements:VV})=>{const[RV,UV]=useGlobalStore(IV=>[IV.is_moving_component,IV.is_showing_multiple_traces_length]),ZV=lV.some(IV=>IV._element.type==="pcb_smtpad")&&lV.some(IV=>IV._element.type==="pcb_trace");let WV=lV;return ZV&&(WV=WV.filter(IV=>IV._element.type==="pcb_smtpad")),WV=filterTracesIfMultiple({primitives:WV,is_showing_multiple_traces_length:UV,elements:VV}),jsxRuntimeExports.jsx("div",{style:containerStyle,children:!RV&&WV.map((IV,dV)=>jsxRuntimeExports.jsx(HighlightedPrimitiveBoxWithText,{primitive:IV,mousePos:J,elements:VV},dV))})};function ifSetsMatchExactly(lV,J){return lV.size!==J.size?!1:Array.from(lV).every(VV=>J.has(VV))}var MouseElementTracker=({elements:lV,children:J,transform:VV,primitives:RV,onMouseHoverOverPrimitives:UV})=>{const[ZV,WV]=reactExports.useState([]),[IV,dV]=reactExports.useState({x:0,y:0}),CV=reactExports.useMemo(()=>{var NV,gV;const FV=[];for(const JV of ZV){if(((NV=JV._element)==null?void 0:NV.type)==="pcb_via"||((gV=JV._element)==null?void 0:gV.type)==="pcb_component"||(JV==null?void 0:JV.layer)==="drill")continue;const eV=applyToPoint(VV,JV),nV="w"in JV?JV.w:"r"in JV?JV.r*2:0,aV="h"in JV?JV.h:"r"in JV?JV.r*2:0,GV={w:nV*VV.a,h:aV*VV.a};let YV=FV.filter(AV=>eV.x===AV.screen_x&&eV.y===AV.screen_y&&GV.w===AV.screen_w&&GV.h===AV.screen_h).length;FV.push({...JV,screen_x:eV.x,screen_y:eV.y,screen_w:GV.w,screen_h:GV.h,same_space_index:YV})}return FV},[ZV,VV]);return jsxRuntimeExports.jsxs("div",{style:{position:"relative"},onMouseMove:FV=>{var NV;if(VV){const gV=FV.currentTarget.getBoundingClientRect(),JV=FV.clientX-gV.left,eV=FV.clientY-gV.top;dV({x:JV,y:eV});const nV=applyToPoint(inverse(VV),{x:JV,y:eV}),aV=[];for(const GV of RV){if(!GV._element)continue;if("x1"in GV&&((NV=GV._element)==null?void 0:NV.type)==="pcb_trace"){const EV=pointToSegmentDistance({x:nV.x,y:nV.y},{x:GV.x1,y:GV.y1},{x:GV.x2,y:GV.y2}),QV=GV.width||.5,bV=Math.max(QV*25,2)/VV.a;EV<bV&&aV.push(GV);continue}if(!("x"in GV&&"y"in GV))continue;let YV=0,AV=0;if("w"in GV&&"h"in GV)YV=GV.w,AV=GV.h;else if("r"in GV)YV=GV.r*2,AV=GV.r*2;else continue;Math.abs(GV.x-nV.x)<YV/2&&Math.abs(GV.y-nV.y)<AV/2&&aV.push(GV)}if(ifSetsMatchExactly(new Set(aV.map(GV=>GV._pcb_drawing_object_id)),new Set(ZV.map(GV=>GV._pcb_drawing_object_id))))return;WV(aV),UV(aV)}},children:[J,jsxRuntimeExports.jsx(ElementOverlayBox,{elements:lV,mousePos:IV,highlightedPrimitives:CV})]})},DimensionOverlay=({children:lV,transform:J})=>{J||(J=identity$3());const[VV,RV]=reactExports.useState(!1),[UV,ZV]=reactExports.useState(!1),[WV,IV]=reactExports.useState({x:0,y:0}),[dV,CV]=reactExports.useState({x:0,y:0}),FV=reactExports.useRef({x:0,y:0}),NV=reactExports.useRef(null),gV=NV.current,JV=gV==null?void 0:gV.getBoundingClientRect();reactExports.useEffect(()=>{const GV=NV.current,YV=QV=>{QV.key==="d"&&(IV({x:FV.current.x,y:FV.current.y}),CV({x:FV.current.x,y:FV.current.y}),RV(bV=>!bV),ZV(!0),QV.preventDefault()),QV.key==="Escape"&&(RV(!1),ZV(!1))},AV=()=>{GV&&GV.addEventListener("keydown",YV)},EV=()=>{GV&&GV.removeEventListener("keydown",YV)};return GV&&(GV.addEventListener("focus",AV),GV.addEventListener("blur",EV),GV.addEventListener("mouseenter",AV),GV.addEventListener("mouseleave",EV)),()=>{GV&&(GV.removeEventListener("focus",AV),GV.removeEventListener("blur",EV),GV.removeEventListener("mouseenter",AV),GV.removeEventListener("mouseleave",EV))}},[NV]);const eV=applyToPoint(J,WV),nV=applyToPoint(J,dV),aV={left:Math.min(eV.x,nV.x),right:Math.max(eV.x,nV.x),top:Math.min(eV.y,nV.y),bottom:Math.max(eV.y,nV.y),flipX:eV.x>nV.x,flipY:eV.y>nV.y,width:0,height:0};return aV.width=aV.right-aV.left,aV.height=aV.bottom-aV.top,jsxRuntimeExports.jsxs("div",{ref:NV,tabIndex:0,style:{position:"relative"},onMouseEnter:()=>{NV.current&&NV.current.focus()},onMouseLeave:()=>{NV.current&&NV.current.blur()},onMouseMove:GV=>{const YV=GV.currentTarget.getBoundingClientRect(),AV=GV.clientX-YV.left,EV=GV.clientY-YV.top,QV=applyToPoint(inverse(J),{x:AV,y:EV});FV.current.x=QV.x,FV.current.y=QV.y,UV&&CV({x:QV.x,y:QV.y})},onMouseDown:()=>{UV?ZV(!1):VV&&RV(!1)},children:[lV,VV&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("div",{style:{position:"absolute",left:aV.left,width:aV.width,textAlign:"center",top:eV.y+2,color:"red",mixBlendMode:"difference",pointerEvents:"none",marginTop:aV.flipY?0:-20,fontSize:12,fontFamily:"sans-serif",zIndex:zIndexMap.dimensionOverlay},children:Math.abs(WV.x-dV.x).toFixed(2)}),jsxRuntimeExports.jsx("div",{style:{position:"absolute",left:nV.x,height:aV.height,display:"flex",flexDirection:"column",justifyContent:"center",top:aV.top,color:"red",pointerEvents:"none",mixBlendMode:"difference",fontSize:12,fontFamily:"sans-serif",zIndex:zIndexMap.dimensionOverlay},children:jsxRuntimeExports.jsx("div",{style:{marginLeft:aV.flipX?"-100%":4,paddingRight:4},children:Math.abs(WV.y-dV.y).toFixed(2)})}),jsxRuntimeExports.jsxs("svg",{style:{position:"absolute",left:0,top:0,pointerEvents:"none",mixBlendMode:"difference",zIndex:zIndexMap.dimensionOverlay},width:JV.width,height:JV.height,children:[jsxRuntimeExports.jsx("defs",{children:jsxRuntimeExports.jsx("marker",{id:"head",orient:"auto",markerWidth:"3",markerHeight:"4",refX:"2",refY:"2",children:jsxRuntimeExports.jsx("path",{d:"M0,0 V4 L2,2 Z",fill:"red"})})}),jsxRuntimeExports.jsx("line",{x1:eV.x,y1:eV.y,x2:nV.x,y2:nV.y,markerEnd:"url(#head)",strokeWidth:1.5,fill:"none",stroke:"red"}),jsxRuntimeExports.jsx("line",{x1:eV.x,y1:eV.y,x2:nV.x,y2:eV.y,strokeWidth:1.5,fill:"none",strokeDasharray:"2,2",stroke:"red"}),jsxRuntimeExports.jsx("line",{x1:nV.x,y1:eV.y,x2:nV.x,y2:nV.y,strokeWidth:1.5,fill:"none",strokeDasharray:"2,2",stroke:"red"})]}),jsxRuntimeExports.jsxs("div",{style:{right:0,bottom:0,position:"absolute",color:"red",fontFamily:"sans-serif",fontSize:12,margin:4},children:["(",WV.x.toFixed(2),",",WV.y.toFixed(2),")",jsxRuntimeExports.jsx("br",{}),"(",dV.x.toFixed(2),",",dV.y.toFixed(2),")",jsxRuntimeExports.jsx("br",{}),"dist:"," ",Math.sqrt(Math.pow(dV.x-WV.x,2)+Math.pow(dV.y-WV.y,2)).toFixed(2)]})]})]})},package_default={name:"@tscircuit/pcb-viewer",version:"1.11.28",main:"dist/index.js",type:"module",repository:"tscircuit/pcb-viewer",license:"MIT",scripts:{start:"storybook dev -p 6006",build:"tsup ./src/index.tsx --platform browser --dts --sourcemap --format esm --outDir dist",yalc:"npm run build && yalc push",storybook:"storybook dev -p 6006","build-storybook":"storybook build",format:"biome format . --write","format:check":"biome format ."},files:["dist"],devDependencies:{"@biomejs/biome":"^1.9.4","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^9.0.1","@semantic-release/release-notes-generator":"^10.0.3","@storybook/nextjs":"^8.0.6","@storybook/react":"^8.0.6","@swc/core":"^1.4.12","@tscircuit/core":"0.0.272","@tscircuit/eagle-xml-converter":"^1.0.0","@tscircuit/props":"^0.0.130","@tscircuit/soup-util":"^0.0.41","@types/color":"^3.0.6","@types/node":"18.7.23","@types/react":"^18.3.3","circuit-json":"^0.0.128",next:"^14.1.4","pixi.js":"^8.6.6",react:"^18.2.0","react-dom":"^18.2.0","react-use":"^17.4.0",storybook:"^8.0.6",tsup:"^8.0.2","type-fest":"^3.0.0",typescript:"^5.4.4","use-mouse-matrix-transform":"^1.3.0",zod:"^3.23.5"},peerDependencies:{react:"*","@tscircuit/core":"*"},dependencies:{"@emotion/css":"^11.11.2","circuit-json-to-connectivity-map":"^0.0.18","@tscircuit/math-utils":"^0.0.10","circuit-to-svg":"^0.0.36",color:"^4.2.3","react-supergrid":"^1.0.10","react-toastify":"^10.0.5","transformation-matrix":"^2.13.0",zustand:"^4.5.2"}},useHotKey=(lV,J)=>{const VV=useGlobalStore(RV=>RV.is_mouse_over_container);reactExports.useEffect(()=>{if(!lV||typeof J!="function")return;const RV=UV=>{const ZV=lV.split("+"),WV=ZV.includes("ctrl"),IV=ZV.includes("shift"),dV=ZV.includes("alt"),CV=ZV.includes("meta"),FV=ZV[ZV.length-1];VV&&(!WV||UV.ctrlKey)&&(!IV||UV.shiftKey)&&(!dV||UV.altKey)&&(!CV||UV.metaKey)&&UV.key.toLowerCase()===FV.toLowerCase()&&(UV.preventDefault(),J())};return window.addEventListener("keydown",RV),()=>{window.removeEventListener("keydown",RV)}},[lV,J])},LayerButton=({name:lV,selected:J,onClick:VV})=>jsxRuntimeExports.jsxs("div",{className:css`
22439
22439
  margin-top: 2px;
22440
22440
  padding: 4px;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@tscircuit/runframe",
3
3
  "main": "dist/preview.js",
4
4
  "type": "module",
5
- "version": "0.0.112",
5
+ "version": "0.0.114",
6
6
  "exports": {
7
7
  ".": "./dist/preview.js",
8
8
  "./preview": "./dist/preview.js",
@@ -56,9 +56,9 @@
56
56
  "@radix-ui/react-icons": "^1.3.2",
57
57
  "@radix-ui/react-slot": "^1.1.1",
58
58
  "@radix-ui/react-tabs": "^1.1.2",
59
- "@tscircuit/3d-viewer": "^0.0.100",
59
+ "@tscircuit/3d-viewer": "^0.0.101",
60
60
  "@tscircuit/assembly-viewer": "^0.0.1",
61
- "@tscircuit/core": "^0.0.272",
61
+ "@tscircuit/core": "^0.0.273",
62
62
  "@tscircuit/eval-webworker": "^0.0.69",
63
63
  "@tscircuit/file-server": "^0.0.13",
64
64
  "@tscircuit/pcb-viewer": "^1.11.29",