@tscircuit/runframe 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bun.lockb CHANGED
Binary file
@@ -22210,7 +22210,7 @@ void main() {
22210
22210
  * Copyright 2010-2024 Three.js Authors
22211
22211
  * SPDX-License-Identifier: MIT
22212
22212
  *)
22213
- */const dist$3=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$3);var dist$2,hasRequiredDist$2;function requireDist$2(){if(hasRequiredDist$2)return dist$2;hasRequiredDist$2=1;var lV=Object.create,J=Object.defineProperty,VV=Object.getOwnPropertyDescriptor,RV=Object.getOwnPropertyNames,UV=Object.getPrototypeOf,ZV=Object.prototype.hasOwnProperty,WV=(IU,wR)=>{for(var JU in wR)J(IU,JU,{get:wR[JU],enumerable:!0})},IV=(IU,wR,JU,uR)=>{if(wR&&typeof wR=="object"||typeof wR=="function")for(let BU of RV(wR))!ZV.call(IU,BU)&&BU!==JU&&J(IU,BU,{get:()=>wR[BU],enumerable:!(uR=VV(wR,BU))||uR.enumerable});return IU},dV=(IU,wR,JU)=>(JU=IU!=null?lV(UV(IU)):{},IV(!IU||!IU.__esModule?J(JU,"default",{value:IU,enumerable:!0}):JU,IU)),CV=IU=>IV(J({},"__esModule",{value:!0}),IU),FV={};WV(FV,{CadViewer:()=>CZ}),dist$2=CV(FV);var NV=require$$2,eV=requireReact(),gV=(IU,wR)=>(0,eV.useMemo)(()=>{if(!IU)return;const JU=new NV.Circuit;return JU.add(IU),JU.render(),JU.getCircuitJson()},[IU]),nV=requireDist$6(),JV=requireReact(),aV=requireDist$6(),GV=requireTransforms(),YV=requirePrimitives(),tV=requireColors(),kV=requireBooleans(),AV=requirePrimitives(),XV=requireColors(),MV=requireBooleans(),xV=.01,uV={copper:[.9,.6,.2],fr4Green:[5/255,163/255,46/255],fr4GreenSolderWithMask:[0/255,152/255,19/255]},wV=(IU,wR)=>{if(IU.shape||(IU.shape="circle"),IU.shape==="circle")return(0,XV.colorize)(uV.copper,(0,MV.subtract)((0,MV.union)((0,AV.cylinder)({center:[IU.x,IU.y,0],radius:IU.hole_diameter/2,height:1.2}),(0,AV.cylinder)({center:[IU.x,IU.y,1.2/2],radius:IU.outer_diameter/2,height:xV}),(0,AV.cylinder)({center:[IU.x,IU.y,-1.2/2],radius:IU.outer_diameter/2,height:xV})),(0,AV.cylinder)({center:[IU.x,IU.y,0],radius:IU.hole_diameter/2-xV,height:1.5})));if(IU.shape==="pill"){const JU=IU.hole_height>IU.hole_width,uR=JU?IU.hole_height:IU.hole_width,BU=JU?IU.hole_width:IU.hole_height,KU=JU?IU.outer_width||uR+.2:IU.outer_height||BU+.2,_l=BU/2,ql=Math.abs(uR-BU),yR=(0,AV.cuboid)({center:JU?[IU.x,IU.y,0]:[IU.x,IU.y,0],size:JU?[BU,ql,1.2]:[ql,BU,1.2]}),GU=(0,AV.cylinder)({center:JU?[IU.x,IU.y-ql/2,0]:[IU.x-ql/2,IU.y,0],radius:_l,height:1.2}),uU=(0,AV.cylinder)({center:JU?[IU.x,IU.y+ql/2,0]:[IU.x+ql/2,IU.y,0],radius:_l,height:1.2}),_U=(0,AV.cuboid)({center:JU?[IU.x,IU.y,1.2/2]:[IU.x,IU.y,1.2/2],size:JU?[KU,ql,xV]:[ql,KU,xV]}),PU=(0,AV.cylinder)({center:JU?[IU.x,IU.y-ql/2,1.2/2]:[IU.x-ql/2,IU.y,1.2/2],radius:KU/2,height:xV}),FW=(0,AV.cylinder)({center:JU?[IU.x,IU.y+ql/2,1.2/2]:[IU.x+ql/2,IU.y,1.2/2],radius:KU/2,height:xV}),QZ=(0,AV.cuboid)({center:JU?[IU.x,IU.y,-1.2/2]:[IU.x,IU.y,-1.2/2],size:JU?[KU,ql,xV]:[ql,KU,xV]}),HZ=(0,AV.cylinder)({center:JU?[IU.x,IU.y-ql/2,-1.2/2]:[IU.x-ql/2,IU.y,-1.2/2],radius:KU/2,height:xV}),dW=(0,AV.cylinder)({center:JU?[IU.x,IU.y+ql/2,-1.2/2]:[IU.x+ql/2,IU.y,-1.2/2],radius:KU/2,height:xV});return(0,XV.colorize)(uV.copper,(0,MV.subtract)((0,MV.union)(yR,GU,uU,_U,PU,FW,QZ,HZ,dW),(0,MV.union)((0,AV.cuboid)({center:[IU.x,IU.y,0],size:JU?[BU-xV,ql,1.5]:[ql,BU-xV,1.5]}),(0,AV.cylinder)({center:JU?[IU.x,IU.y-ql/2,0]:[IU.x-ql/2,IU.y,0],radius:_l-xV,height:1.5}),(0,AV.cylinder)({center:JU?[IU.x,IU.y+ql/2,0]:[IU.x+ql/2,IU.y,0],radius:_l-xV,height:1.5}))))}else throw new Error(`Unsupported plated hole shape: ${IU.shape}`)},vV=requireExtrusions(),yV=requireExpansions(),ll=requireExtrusions(),Nl=requirePrimitives(),al=requireTransforms(),el=IU=>{let wR=0;for(let uR=0;uR<IU.length;uR++){const BU=(uR+1)%IU.length;wR+=IU[uR][0]*IU[BU][1],wR-=IU[BU][0]*IU[uR][1]}return wR/2<=0},qV=(IU,wR=1.2)=>{let JU=IU.map(KU=>[KU.x,KU.y]);el(JU)&&(JU=JU.reverse());const uR=(0,Nl.polygon)({points:JU});let BU=(0,ll.extrudeLinear)({height:wR},uR);return BU=(0,al.translate)([0,0,-wR/2],BU),BU},fV=requireText();function Ul(IU){var yR,GU,uU,_U;const wR=(0,fV.vectorText)({height:IU.font_size,input:IU.text});wR.forEach(PU=>{PU.length===29?(wR.splice(wR.indexOf(PU),1,PU.slice(0,15)),wR.splice(wR.indexOf(PU),0,PU.slice(14,29))):PU.length===17&&(wR.splice(wR.indexOf(PU),1,PU.slice(0,10)),wR.splice(wR.indexOf(PU),0,PU.slice(9,17)))});const JU=wR.flatMap(PU=>PU),uR={minX:Math.min(...JU.map(PU=>PU[0])),maxX:Math.max(...JU.map(PU=>PU[0])),minY:Math.min(...JU.map(PU=>PU[1])),maxY:Math.max(...JU.map(PU=>PU[1]))},BU=(uR.minX+uR.maxX)/2,KU=(uR.minY+uR.maxY)/2;let _l=-BU,ql=-KU;return(yR=IU.anchor_alignment)!=null&&yR.includes("right")?_l=-uR.maxX:(GU=IU.anchor_alignment)!=null&&GU.includes("left")&&(_l=-uR.minX),(uU=IU.anchor_alignment)!=null&&uU.includes("top")?ql=-uR.maxY:(_U=IU.anchor_alignment)!=null&&_U.includes("bottom")&&(ql=-uR.minY),{textOutlines:wR,xOffset:_l,yOffset:ql}}var Cl=IU=>{const wR=(0,aV.su)(IU).pcb_board.list()[0];if(!wR)throw new Error("No pcb_board found");const JU=(0,aV.su)(IU).pcb_plated_hole.list(),uR=(0,aV.su)(IU).pcb_hole.list(),BU=(0,aV.su)(IU).pcb_smtpad.list(),KU=(0,aV.su)(IU).pcb_trace.list(),_l=(0,aV.su)(IU).pcb_via.list(),ql=(0,aV.su)(IU).pcb_silkscreen_text.list();let yR;wR.outline&&wR.outline.length>0?yR=qV(wR.outline,1.2):yR=(0,YV.cuboid)({size:[wR.width,wR.height,1.2]});const GU=[],uU=[],_U=[],PU=QZ=>{if(QZ.shape==="circle"){const HZ=(0,YV.cylinder)({center:[QZ.x,QZ.y,0],radius:QZ.hole_diameter/2+xV});yR=(0,kV.subtract)(yR,HZ);const dW=wV(QZ);GU.push(dW)}else if(QZ.shape==="pill"){const HZ=QZ.hole_height>QZ.hole_width,dW=HZ?QZ.hole_height:QZ.hole_width,tW=HZ?QZ.hole_width:QZ.hole_height,YZ=tW/2,bR=Math.abs(dW-tW),YU=(0,kV.union)((0,YV.cuboid)({center:[QZ.x,QZ.y,0],size:HZ?[tW,bR,1.5]:[bR,tW,1.5]}),(0,YV.cylinder)({center:HZ?[QZ.x,QZ.y-bR/2,0]:[QZ.x-bR/2,QZ.y,0],radius:YZ,height:1.5}),(0,YV.cylinder)({center:HZ?[QZ.x,QZ.y+bR/2,0]:[QZ.x+bR/2,QZ.y,0],radius:YZ,height:1.5}));yR=(0,kV.subtract)(yR,YU);const bU=wV(QZ);GU.push(bU)}};for(const QZ of JU)PU(QZ);for(const QZ of uR)if(QZ.hole_shape==="round"||QZ.hole_shape==="circle"){const HZ=(0,YV.cylinder)({center:[QZ.x,QZ.y,0],radius:QZ.hole_diameter/2+xV});yR=(0,kV.subtract)(yR,HZ)}for(const QZ of BU){const HZ=QZ.layer==="bottom"?-1:1;if(QZ.shape==="rect"){const dW=(0,tV.colorize)(uV.copper,(0,YV.cuboid)({center:[QZ.x,QZ.y,HZ*1.2/2+HZ*xV],size:[QZ.width,QZ.height,xV]}));uU.push(dW)}else if(QZ.shape==="circle"){const dW=(0,tV.colorize)(uV.copper,(0,YV.cylinder)({center:[QZ.x,QZ.y,HZ*1.2/2+HZ*xV],radius:QZ.radius,height:xV}));uU.push(dW)}}for(const{route:QZ}of KU){if(QZ.length<2)continue;const HZ=[];let dW=[QZ[0]],tW=QZ[0].route_type==="wire"?QZ[0].layer:"top";for(let YZ=1;YZ<QZ.length;YZ++){const bR=QZ[YZ];bR.route_type==="via"?(HZ.push(dW),dW=[bR]):bR.route_type==="wire"&&bR.layer!==tW?(HZ.push(dW),tW=bR.layer,dW=[bR]):dW.push(bR)}HZ.push(dW);for(const YZ of HZ){if(YZ.length<2)continue;const bR=(0,YV.line)(YZ.map(_Z=>[_Z.x,_Z.y])),YU=YZ[0].route_type==="via"?YZ[0].to_layer==="top"?1:-1:YZ[0].layer==="top"?1:-1;let bU=(0,GV.translate)([0,0,YU*1.2/2],(0,vV.extrudeLinear)({height:xV*YU},(0,yV.expand)({delta:.1,corners:"edge"},bR)));const ZZ=_l.map(_Z=>(0,YV.cylinder)({center:[_Z.x,_Z.y,0],radius:_Z.outer_diameter/2,height:5})),mZ=JU.filter(_Z=>_Z.shape==="circle").map(_Z=>(0,YV.cylinder)({center:[_Z.x,_Z.y,0],radius:_Z.outer_diameter/2,height:5}));bU=(0,kV.subtract)(bU,...ZZ,...mZ),bU=(0,tV.colorize)(uV.fr4GreenSolderWithMask,bU),_U.push(bU)}}for(const QZ of _l)PU({x:QZ.x,y:QZ.y,hole_diameter:QZ.hole_diameter,outer_diameter:QZ.outer_diameter,shape:"circle",layers:["top","bottom"],type:"pcb_plated_hole",pcb_plated_hole_id:""});const FW=[];for(const QZ of ql){const{textOutlines:HZ,xOffset:dW,yOffset:tW}=Ul(QZ);for(let YZ of HZ){const bR=YZ.map(YW=>[YW[0]+dW+QZ.anchor_position.x,YW[1]+tW+QZ.anchor_position.y]),YU=(0,YV.line)(bR),bU=QZ.font_size||.25,ZZ=Math.min(Math.max(.01,bU*.1),bU*.2),mZ=(0,yV.expand)({delta:ZZ,corners:"round"},YU);let _Z=(0,GV.translate)([0,0,.6],(0,vV.extrudeLinear)({height:.012},mZ));_Z=(0,tV.colorize)([256,256,256],_Z),FW.push(_Z)}}return yR=(0,tV.colorize)(uV.fr4Green,yR),[yR,...GU,...uU,..._U,...FW]},Il=requireReact(),Jl=dV(requireStlSerializer());function Bl(IU){return new Promise((wR,JU)=>{const uR=new FileReader;uR.onload=()=>{wR(uR.result)},uR.onerror=JU,uR.readAsDataURL(IU)})}var kl=IU=>{const[wR,JU]=(0,Il.useState)([]),[uR,BU]=(0,Il.useState)(!0);return(0,Il.useEffect)(()=>{if(!IU)return;(async()=>{BU(!0);const ql=(Array.isArray(IU)?IU:[IU]).map(async yR=>{const GU=Jl.default.serialize({binary:!0},[yR]),uU=new Blob(GU);return{stlUrl:await Bl(uU),color:yR.color}});try{const yR=await Promise.all(ql);JU(yR)}catch(yR){console.error("Error generating STLs:",yR),JU([])}finally{BU(!1)}})()},[IU]),{stls:wR,loading:uR}},ol=require$$11$1,xl=requireReact(),wl=requireThreeStdlib(),Pl=requireJsxRuntime();function zl({stlUrl:IU,mtlUrl:wR,color:JU,opacity:uR=1}){const BU=(0,ol.useLoader)(wl.STLLoader,IU),KU=(0,xl.useRef)();return(0,Pl.jsxs)("mesh",{ref:KU,children:[(0,Pl.jsx)("primitive",{object:BU,attach:"geometry"}),(0,Pl.jsx)("meshStandardMaterial",{color:JU,transparent:uR!==1,opacity:uR})]})}var Tl=require$$14,Al=require$$11$1,Ol={name:"@tscircuit/3d-viewer",version:"0.0.53",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",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.229","@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.1.10","@storybook/addon-interactions":"^8.1.10","@storybook/addon-links":"^8.1.10","@storybook/addon-onboarding":"^8.1.10","@storybook/blocks":"^8.1.10","@storybook/builder-vite":"^8.1.10","@storybook/react":"^8.1.10","@storybook/react-vite":"^8.1.10","@storybook/test":"^8.1.10","@types/react":"^18.3.3","@types/react-dom":"^18.3.0","@vitejs/plugin-react":"^4.3.1","circuit-json":"^0.0.77",storybook:"^8.1.10","strip-ansi":"^7.1.0",tsup:"^8.1.0",typescript:"^5.5.3",vite:"^5.3.1","vite-tsconfig-paths":"^4.3.2"}},RR=require$$14,hR=require$$11$1,gR=requireReact(),sR=dV(requireThree()),tR=requireJsxRuntime();typeof window<"u"&&(window.TSCI_MAIN_CAMERA_ROTATION=new sR.Euler(0,0,0));function pR(IU,wR){const JU=new sR.Quaternion().setFromEuler(new sR.Euler(IU.x,IU.y,IU.z)),uR=new sR.Vector3(0,0,1);return uR.applyQuaternion(JU),uR.multiplyScalar(wR)}var MR=({})=>{const IU=(0,gR.useRef)();return(0,gR.useRef)({lastRotation:new sR.Euler}),(0,hR.useFrame)((wR,JU)=>{if(!IU.current)return;const uR=window.TSCI_MAIN_CAMERA_ROTATION,BU=pR(uR,2);wR.camera.position.copy(BU),wR.camera.lookAt(0,0,0)}),(0,tR.jsxs)("mesh",{ref:IU,rotation:[Math.PI/2,0,0],children:[(0,tR.jsx)("boxGeometry",{args:[1,1,1]}),(0,tR.jsx)("meshStandardMaterial",{color:"white"}),(0,tR.jsx)(RR.Text,{position:[0,0,.51],fontSize:.25,color:"black",children:"Front"}),(0,tR.jsx)(RR.Text,{position:[0,0,-.51],fontSize:.25,color:"black",rotation:[0,Math.PI,0],children:"Back"}),(0,tR.jsx)(RR.Text,{position:[.51,0,0],fontSize:.25,color:"black",rotation:[0,Math.PI/2,0],children:"Right"}),(0,tR.jsx)(RR.Text,{position:[-.51,0,0],fontSize:.25,color:"black",rotation:[0,-Math.PI/2,0],children:"Left"}),(0,tR.jsx)(RR.Text,{position:[0,.51,0],fontSize:.25,color:"black",rotation:[-Math.PI/2,0,0],children:"Top"}),(0,tR.jsx)(RR.Text,{position:[0,-.51,0],fontSize:.25,color:"black",rotation:[Math.PI/2,0,0],children:"Bottom"}),(0,tR.jsx)("lineSegments",{args:[new sR.EdgesGeometry(new sR.BoxGeometry(1,1,1))],material:new sR.LineBasicMaterial({color:0,linewidth:2})})]})},cR=require$$14,mR=requireJsxRuntime(),zR=()=>((0,Al.useFrame)(({camera:IU})=>{window.TSCI_MAIN_CAMERA_ROTATION=IU.rotation}),(0,mR.jsx)(mR.Fragment,{})),XR=({children:IU,hoveredComponent:wR})=>(0,mR.jsxs)("div",{style:{position:"relative",width:"100%",height:"100%"},children:[(0,mR.jsx)("div",{style:{position:"absolute",top:0,left:0,width:120,height:120},children:(0,mR.jsxs)(Al.Canvas,{camera:{up:[0,0,1],position:[1,1,1]},style:{zIndex:10},children:[(0,mR.jsx)("ambientLight",{intensity:Math.PI/2}),(0,mR.jsx)(MR,{})]})}),(0,mR.jsxs)(Al.Canvas,{scene:{up:[0,0,1]},camera:{up:[0,0,1],position:[5,5,5]},children:[(0,mR.jsx)(zR,{}),(0,mR.jsx)(Tl.OrbitControls,{autoRotate:!0,autoRotateSpeed:1}),(0,mR.jsx)("ambientLight",{intensity:Math.PI/2}),(0,mR.jsx)("pointLight",{position:[-10,-10,10],decay:0,intensity:Math.PI/4}),(0,mR.jsx)(Tl.Grid,{rotation:[Math.PI/2,0,0],infiniteGrid:!0,cellSize:1,sectionSize:10}),IU,wR&&(0,mR.jsx)(cR.Html,{position:wR.mousePosition,style:{fontFamily:"sans-serif",transform:"translate3d(50%, 50%, 0)",backgroundColor:"white",padding:"5px",borderRadius:"3px",pointerEvents:"none"},children:wR.name})]}),(0,mR.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:["@",Ol.version]})]}),ZU=requireReact(),sU=dV(requireThree()),rU=requireJsxRuntime(),KR=IU=>(0,rU.jsx)("group",{...IU}),HR=({children:IU,isHovered:wR,onHover:JU,position:uR})=>{const BU=(0,ZU.useRef)(null),KU=(0,ZU.useCallback)(ql=>{ql.stopPropagation();try{const yR=ql.point||(ql.intersections&&ql.intersections.length>0?ql.intersections[0].point:null)||(uR?new sU.Vector3(...uR):null);yR?(BU.current=yR,JU({mousePosition:[yR.x,yR.y,yR.z]})):JU({})}catch(yR){console.warn("Hover event error:",yR),JU({})}},[uR]),_l=(0,ZU.useCallback)(ql=>{ql.stopPropagation(),BU.current=null,JU(null)},[JU]);return(0,rU.jsx)(KR,{onPointerEnter:KU,onPointerMove:KU,onPointerLeave:_l,children:IU})},eU=HR,BR=requireReact(),vl=requireThreeStdlib();typeof window<"u"&&!window.TSCIRCUIT_OBJ_LOADER_CACHE&&(window.TSCIRCUIT_OBJ_LOADER_CACHE=new Map);function ER(IU){const[wR,JU]=(0,BR.useState)(null);return(0,BR.useEffect)(()=>{if(!IU)return;const uR=window.TSCIRCUIT_OBJ_LOADER_CACHE;let BU=!1;async function KU(){var ql;try{const GU=await(await fetch(IU)).text(),uU=(ql=GU.match(/newmtl[\s\S]*?endmtl/g))==null?void 0:ql.join(`
22213
+ */const dist$3=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$3);var dist$2,hasRequiredDist$2;function requireDist$2(){if(hasRequiredDist$2)return dist$2;hasRequiredDist$2=1;var lV=Object.create,J=Object.defineProperty,VV=Object.getOwnPropertyDescriptor,RV=Object.getOwnPropertyNames,UV=Object.getPrototypeOf,ZV=Object.prototype.hasOwnProperty,WV=(IU,wR)=>{for(var JU in wR)J(IU,JU,{get:wR[JU],enumerable:!0})},IV=(IU,wR,JU,uR)=>{if(wR&&typeof wR=="object"||typeof wR=="function")for(let BU of RV(wR))!ZV.call(IU,BU)&&BU!==JU&&J(IU,BU,{get:()=>wR[BU],enumerable:!(uR=VV(wR,BU))||uR.enumerable});return IU},dV=(IU,wR,JU)=>(JU=IU!=null?lV(UV(IU)):{},IV(!IU||!IU.__esModule?J(JU,"default",{value:IU,enumerable:!0}):JU,IU)),CV=IU=>IV(J({},"__esModule",{value:!0}),IU),FV={};WV(FV,{CadViewer:()=>CZ}),dist$2=CV(FV);var NV=require$$2,eV=requireReact(),gV=(IU,wR)=>(0,eV.useMemo)(()=>{if(!IU)return;const JU=new NV.Circuit;return JU.add(IU),JU.render(),JU.getCircuitJson()},[IU]),nV=requireDist$6(),JV=requireReact(),aV=requireDist$6(),GV=requireTransforms(),YV=requirePrimitives(),tV=requireColors(),kV=requireBooleans(),AV=requirePrimitives(),XV=requireColors(),MV=requireBooleans(),xV=.01,uV={copper:[.9,.6,.2],fr4Green:[5/255,163/255,46/255],fr4GreenSolderWithMask:[0/255,152/255,19/255]},wV=(IU,wR)=>{if(IU.shape||(IU.shape="circle"),IU.shape==="circle")return(0,XV.colorize)(uV.copper,(0,MV.subtract)((0,MV.union)((0,AV.cylinder)({center:[IU.x,IU.y,0],radius:IU.hole_diameter/2,height:1.2}),(0,AV.cylinder)({center:[IU.x,IU.y,1.2/2],radius:IU.outer_diameter/2,height:xV}),(0,AV.cylinder)({center:[IU.x,IU.y,-1.2/2],radius:IU.outer_diameter/2,height:xV})),(0,AV.cylinder)({center:[IU.x,IU.y,0],radius:IU.hole_diameter/2-xV,height:1.5})));if(IU.shape==="pill"){const JU=IU.hole_height>IU.hole_width,uR=JU?IU.hole_height:IU.hole_width,BU=JU?IU.hole_width:IU.hole_height,KU=JU?IU.outer_width||uR+.2:IU.outer_height||BU+.2,_l=BU/2,ql=Math.abs(uR-BU),yR=(0,AV.cuboid)({center:JU?[IU.x,IU.y,0]:[IU.x,IU.y,0],size:JU?[BU,ql,1.2]:[ql,BU,1.2]}),GU=(0,AV.cylinder)({center:JU?[IU.x,IU.y-ql/2,0]:[IU.x-ql/2,IU.y,0],radius:_l,height:1.2}),uU=(0,AV.cylinder)({center:JU?[IU.x,IU.y+ql/2,0]:[IU.x+ql/2,IU.y,0],radius:_l,height:1.2}),_U=(0,AV.cuboid)({center:JU?[IU.x,IU.y,1.2/2]:[IU.x,IU.y,1.2/2],size:JU?[KU,ql,xV]:[ql,KU,xV]}),PU=(0,AV.cylinder)({center:JU?[IU.x,IU.y-ql/2,1.2/2]:[IU.x-ql/2,IU.y,1.2/2],radius:KU/2,height:xV}),FW=(0,AV.cylinder)({center:JU?[IU.x,IU.y+ql/2,1.2/2]:[IU.x+ql/2,IU.y,1.2/2],radius:KU/2,height:xV}),QZ=(0,AV.cuboid)({center:JU?[IU.x,IU.y,-1.2/2]:[IU.x,IU.y,-1.2/2],size:JU?[KU,ql,xV]:[ql,KU,xV]}),HZ=(0,AV.cylinder)({center:JU?[IU.x,IU.y-ql/2,-1.2/2]:[IU.x-ql/2,IU.y,-1.2/2],radius:KU/2,height:xV}),dW=(0,AV.cylinder)({center:JU?[IU.x,IU.y+ql/2,-1.2/2]:[IU.x+ql/2,IU.y,-1.2/2],radius:KU/2,height:xV});return(0,XV.colorize)(uV.copper,(0,MV.subtract)((0,MV.union)(yR,GU,uU,_U,PU,FW,QZ,HZ,dW),(0,MV.union)((0,AV.cuboid)({center:[IU.x,IU.y,0],size:JU?[BU-xV,ql,1.5]:[ql,BU-xV,1.5]}),(0,AV.cylinder)({center:JU?[IU.x,IU.y-ql/2,0]:[IU.x-ql/2,IU.y,0],radius:_l-xV,height:1.5}),(0,AV.cylinder)({center:JU?[IU.x,IU.y+ql/2,0]:[IU.x+ql/2,IU.y,0],radius:_l-xV,height:1.5}))))}else throw new Error(`Unsupported plated hole shape: ${IU.shape}`)},vV=requireExtrusions(),yV=requireExpansions(),ll=requireExtrusions(),Nl=requirePrimitives(),al=requireTransforms(),el=IU=>{let wR=0;for(let uR=0;uR<IU.length;uR++){const BU=(uR+1)%IU.length;wR+=IU[uR][0]*IU[BU][1],wR-=IU[BU][0]*IU[uR][1]}return wR/2<=0},qV=(IU,wR=1.2)=>{let JU=IU.map(KU=>[KU.x,KU.y]);el(JU)&&(JU=JU.reverse());const uR=(0,Nl.polygon)({points:JU});let BU=(0,ll.extrudeLinear)({height:wR},uR);return BU=(0,al.translate)([0,0,-wR/2],BU),BU},fV=requireText();function Ul(IU){var yR,GU,uU,_U;const wR=(0,fV.vectorText)({height:IU.font_size,input:IU.text});wR.forEach(PU=>{PU.length===29?(wR.splice(wR.indexOf(PU),1,PU.slice(0,15)),wR.splice(wR.indexOf(PU),0,PU.slice(14,29))):PU.length===17&&(wR.splice(wR.indexOf(PU),1,PU.slice(0,10)),wR.splice(wR.indexOf(PU),0,PU.slice(9,17)))});const JU=wR.flatMap(PU=>PU),uR={minX:Math.min(...JU.map(PU=>PU[0])),maxX:Math.max(...JU.map(PU=>PU[0])),minY:Math.min(...JU.map(PU=>PU[1])),maxY:Math.max(...JU.map(PU=>PU[1]))},BU=(uR.minX+uR.maxX)/2,KU=(uR.minY+uR.maxY)/2;let _l=-BU,ql=-KU;return(yR=IU.anchor_alignment)!=null&&yR.includes("right")?_l=-uR.maxX:(GU=IU.anchor_alignment)!=null&&GU.includes("left")&&(_l=-uR.minX),(uU=IU.anchor_alignment)!=null&&uU.includes("top")?ql=-uR.maxY:(_U=IU.anchor_alignment)!=null&&_U.includes("bottom")&&(ql=-uR.minY),{textOutlines:wR,xOffset:_l,yOffset:ql}}var Cl=IU=>{const wR=(0,aV.su)(IU).pcb_board.list()[0];if(!wR)throw new Error("No pcb_board found");const JU=(0,aV.su)(IU).pcb_plated_hole.list(),uR=(0,aV.su)(IU).pcb_hole.list(),BU=(0,aV.su)(IU).pcb_smtpad.list(),KU=(0,aV.su)(IU).pcb_trace.list(),_l=(0,aV.su)(IU).pcb_via.list(),ql=(0,aV.su)(IU).pcb_silkscreen_text.list();let yR;wR.outline&&wR.outline.length>0?yR=qV(wR.outline,1.2):yR=(0,YV.cuboid)({size:[wR.width,wR.height,1.2]});const GU=[],uU=[],_U=[],PU=QZ=>{if(QZ.shape==="circle"){const HZ=(0,YV.cylinder)({center:[QZ.x,QZ.y,0],radius:QZ.hole_diameter/2+xV});yR=(0,kV.subtract)(yR,HZ);const dW=wV(QZ);GU.push(dW)}else if(QZ.shape==="pill"){const HZ=QZ.hole_height>QZ.hole_width,dW=HZ?QZ.hole_height:QZ.hole_width,tW=HZ?QZ.hole_width:QZ.hole_height,YZ=tW/2,bR=Math.abs(dW-tW),YU=(0,kV.union)((0,YV.cuboid)({center:[QZ.x,QZ.y,0],size:HZ?[tW,bR,1.5]:[bR,tW,1.5]}),(0,YV.cylinder)({center:HZ?[QZ.x,QZ.y-bR/2,0]:[QZ.x-bR/2,QZ.y,0],radius:YZ,height:1.5}),(0,YV.cylinder)({center:HZ?[QZ.x,QZ.y+bR/2,0]:[QZ.x+bR/2,QZ.y,0],radius:YZ,height:1.5}));yR=(0,kV.subtract)(yR,YU);const bU=wV(QZ);GU.push(bU)}};for(const QZ of JU)PU(QZ);for(const QZ of uR)if(QZ.hole_shape==="round"||QZ.hole_shape==="circle"){const HZ=(0,YV.cylinder)({center:[QZ.x,QZ.y,0],radius:QZ.hole_diameter/2+xV});yR=(0,kV.subtract)(yR,HZ)}for(const QZ of BU){const HZ=QZ.layer==="bottom"?-1:1;if(QZ.shape==="rect"){const dW=(0,tV.colorize)(uV.copper,(0,YV.cuboid)({center:[QZ.x,QZ.y,HZ*1.2/2+HZ*xV],size:[QZ.width,QZ.height,xV]}));uU.push(dW)}else if(QZ.shape==="circle"){const dW=(0,tV.colorize)(uV.copper,(0,YV.cylinder)({center:[QZ.x,QZ.y,HZ*1.2/2+HZ*xV],radius:QZ.radius,height:xV}));uU.push(dW)}}for(const{route:QZ}of KU){if(QZ.length<2)continue;const HZ=[];let dW=[QZ[0]],tW=QZ[0].route_type==="wire"?QZ[0].layer:"top";for(let YZ=1;YZ<QZ.length;YZ++){const bR=QZ[YZ];bR.route_type==="via"?(HZ.push(dW),dW=[bR]):bR.route_type==="wire"&&bR.layer!==tW?(HZ.push(dW),tW=bR.layer,dW=[bR]):dW.push(bR)}HZ.push(dW);for(const YZ of HZ){if(YZ.length<2)continue;const bR=(0,YV.line)(YZ.map(_Z=>[_Z.x,_Z.y])),YU=YZ[0].route_type==="via"?YZ[0].to_layer==="top"?1:-1:YZ[0].layer==="top"?1:-1;let bU=(0,GV.translate)([0,0,YU*1.2/2],(0,vV.extrudeLinear)({height:xV*YU},(0,yV.expand)({delta:.1,corners:"edge"},bR)));const ZZ=_l.map(_Z=>(0,YV.cylinder)({center:[_Z.x,_Z.y,0],radius:_Z.outer_diameter/2,height:5})),mZ=JU.filter(_Z=>_Z.shape==="circle").map(_Z=>(0,YV.cylinder)({center:[_Z.x,_Z.y,0],radius:_Z.outer_diameter/2,height:5}));bU=(0,kV.subtract)(bU,...ZZ,...mZ),bU=(0,tV.colorize)(uV.fr4GreenSolderWithMask,bU),_U.push(bU)}}for(const QZ of _l)PU({x:QZ.x,y:QZ.y,hole_diameter:QZ.hole_diameter,outer_diameter:QZ.outer_diameter,shape:"circle",layers:["top","bottom"],type:"pcb_plated_hole",pcb_plated_hole_id:""});const FW=[];for(const QZ of ql){const{textOutlines:HZ,xOffset:dW,yOffset:tW}=Ul(QZ);for(let YZ of HZ){const bR=YZ.map(YW=>[YW[0]+dW+QZ.anchor_position.x,YW[1]+tW+QZ.anchor_position.y]),YU=(0,YV.line)(bR),bU=QZ.font_size||.25,ZZ=Math.min(Math.max(.01,bU*.1),bU*.2),mZ=(0,yV.expand)({delta:ZZ,corners:"round"},YU);let _Z=(0,GV.translate)([0,0,.6],(0,vV.extrudeLinear)({height:.012},mZ));_Z=(0,tV.colorize)([256,256,256],_Z),FW.push(_Z)}}return yR=(0,tV.colorize)(uV.fr4Green,yR),[yR,...GU,...uU,..._U,...FW]},Il=requireReact(),Jl=dV(requireStlSerializer());function Bl(IU){return new Promise((wR,JU)=>{const uR=new FileReader;uR.onload=()=>{wR(uR.result)},uR.onerror=JU,uR.readAsDataURL(IU)})}var kl=IU=>{const[wR,JU]=(0,Il.useState)([]),[uR,BU]=(0,Il.useState)(!0);return(0,Il.useEffect)(()=>{if(!IU)return;(async()=>{BU(!0);const ql=(Array.isArray(IU)?IU:[IU]).map(async yR=>{const GU=Jl.default.serialize({binary:!0},[yR]),uU=new Blob(GU);return{stlUrl:await Bl(uU),color:yR.color}});try{const yR=await Promise.all(ql);JU(yR)}catch(yR){console.error("Error generating STLs:",yR),JU([])}finally{BU(!1)}})()},[IU]),{stls:wR,loading:uR}},ol=require$$11$1,xl=requireReact(),wl=requireThreeStdlib(),Pl=requireJsxRuntime();function zl({stlUrl:IU,mtlUrl:wR,color:JU,opacity:uR=1}){const BU=(0,ol.useLoader)(wl.STLLoader,IU),KU=(0,xl.useRef)();return(0,Pl.jsxs)("mesh",{ref:KU,children:[(0,Pl.jsx)("primitive",{object:BU,attach:"geometry"}),(0,Pl.jsx)("meshStandardMaterial",{color:JU,transparent:uR!==1,opacity:uR})]})}var Tl=require$$14,Al=require$$11$1,Ol={name:"@tscircuit/3d-viewer",version:"0.0.56",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.229","@tscircuit/props":"^0.0.110","@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.1.10","@storybook/addon-interactions":"^8.1.10","@storybook/addon-links":"^8.1.10","@storybook/addon-onboarding":"^8.1.10","@storybook/blocks":"^8.1.10","@storybook/builder-vite":"^8.1.10","@storybook/react":"^8.1.10","@storybook/react-vite":"^8.1.10","@storybook/test":"^8.1.10","@types/react":"^18.3.3","@types/react-dom":"^18.3.0","@vitejs/plugin-react":"^4.3.1","circuit-json":"^0.0.116","circuit-to-svg":"^0.0.91",storybook:"^8.1.10","strip-ansi":"^7.1.0",tsup:"^8.1.0",typescript:"^5.5.3",vite:"^5.3.1","vite-tsconfig-paths":"^4.3.2"}},RR=require$$14,hR=require$$11$1,gR=requireReact(),sR=dV(requireThree()),tR=requireJsxRuntime();typeof window<"u"&&(window.TSCI_MAIN_CAMERA_ROTATION=new sR.Euler(0,0,0));function pR(IU,wR){const JU=new sR.Quaternion().setFromEuler(new sR.Euler(IU.x,IU.y,IU.z)),uR=new sR.Vector3(0,0,1);return uR.applyQuaternion(JU),uR.multiplyScalar(wR)}var MR=({})=>{const IU=(0,gR.useRef)();return(0,gR.useRef)({lastRotation:new sR.Euler}),(0,hR.useFrame)((wR,JU)=>{if(!IU.current)return;const uR=window.TSCI_MAIN_CAMERA_ROTATION,BU=pR(uR,2);wR.camera.position.copy(BU),wR.camera.lookAt(0,0,0)}),(0,tR.jsxs)("mesh",{ref:IU,rotation:[Math.PI/2,0,0],children:[(0,tR.jsx)("boxGeometry",{args:[1,1,1]}),(0,tR.jsx)("meshStandardMaterial",{color:"white"}),(0,tR.jsx)(RR.Text,{position:[0,0,.51],fontSize:.25,color:"black",children:"Front"}),(0,tR.jsx)(RR.Text,{position:[0,0,-.51],fontSize:.25,color:"black",rotation:[0,Math.PI,0],children:"Back"}),(0,tR.jsx)(RR.Text,{position:[.51,0,0],fontSize:.25,color:"black",rotation:[0,Math.PI/2,0],children:"Right"}),(0,tR.jsx)(RR.Text,{position:[-.51,0,0],fontSize:.25,color:"black",rotation:[0,-Math.PI/2,0],children:"Left"}),(0,tR.jsx)(RR.Text,{position:[0,.51,0],fontSize:.25,color:"black",rotation:[-Math.PI/2,0,0],children:"Top"}),(0,tR.jsx)(RR.Text,{position:[0,-.51,0],fontSize:.25,color:"black",rotation:[Math.PI/2,0,0],children:"Bottom"}),(0,tR.jsx)("lineSegments",{args:[new sR.EdgesGeometry(new sR.BoxGeometry(1,1,1))],material:new sR.LineBasicMaterial({color:0,linewidth:2})})]})},cR=require$$14,mR=requireJsxRuntime(),zR=()=>((0,Al.useFrame)(({camera:IU})=>{window.TSCI_MAIN_CAMERA_ROTATION=IU.rotation}),(0,mR.jsx)(mR.Fragment,{})),XR=({children:IU,hoveredComponent:wR})=>(0,mR.jsxs)("div",{style:{position:"relative",width:"100%",height:"100%"},children:[(0,mR.jsx)("div",{style:{position:"absolute",top:0,left:0,width:120,height:120},children:(0,mR.jsxs)(Al.Canvas,{camera:{up:[0,0,1],position:[1,1,1]},style:{zIndex:10},children:[(0,mR.jsx)("ambientLight",{intensity:Math.PI/2}),(0,mR.jsx)(MR,{})]})}),(0,mR.jsxs)(Al.Canvas,{scene:{up:[0,0,1]},camera:{up:[0,0,1],position:[5,5,5]},children:[(0,mR.jsx)(zR,{}),(0,mR.jsx)(Tl.OrbitControls,{autoRotate:!0,autoRotateSpeed:1}),(0,mR.jsx)("ambientLight",{intensity:Math.PI/2}),(0,mR.jsx)("pointLight",{position:[-10,-10,10],decay:0,intensity:Math.PI/4}),(0,mR.jsx)(Tl.Grid,{rotation:[Math.PI/2,0,0],infiniteGrid:!0,cellSize:1,sectionSize:10}),IU,wR&&(0,mR.jsx)(cR.Html,{position:wR.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:wR.name})]}),(0,mR.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:["@",Ol.version]})]}),ZU=requireReact(),sU=dV(requireThree()),rU=requireJsxRuntime(),KR=IU=>(0,rU.jsx)("group",{...IU}),HR=({children:IU,isHovered:wR,onHover:JU,position:uR})=>{const BU=(0,ZU.useRef)(null),KU=(0,ZU.useCallback)(ql=>{ql.stopPropagation();try{const yR=ql.point||(ql.intersections&&ql.intersections.length>0?ql.intersections[0].point:null)||(uR?new sU.Vector3(...uR):null);yR?(BU.current=yR,JU({mousePosition:[yR.x,yR.y,yR.z]})):JU({})}catch(yR){console.warn("Hover event error:",yR),JU({})}},[uR]),_l=(0,ZU.useCallback)(ql=>{ql.stopPropagation(),BU.current=null,JU(null)},[JU]);return(0,rU.jsx)(KR,{onPointerEnter:KU,onPointerMove:KU,onPointerLeave:_l,children:IU})},eU=HR,BR=requireReact(),vl=requireThreeStdlib();typeof window<"u"&&!window.TSCIRCUIT_OBJ_LOADER_CACHE&&(window.TSCIRCUIT_OBJ_LOADER_CACHE=new Map);function ER(IU){const[wR,JU]=(0,BR.useState)(null);return(0,BR.useEffect)(()=>{if(!IU)return;const uR=window.TSCIRCUIT_OBJ_LOADER_CACHE;let BU=!1;async function KU(){var ql;try{const GU=await(await fetch(IU)).text(),uU=(ql=GU.match(/newmtl[\s\S]*?endmtl/g))==null?void 0:ql.join(`
22214
22214
  `).replace(/d 0\./g,"d 1."),_U=GU.replace(/newmtl[\s\S]*?endmtl/g,""),PU=new vl.MTLLoader;PU.setMaterialOptions({invertTrProperty:!0});const FW=PU.parse(uU.replace(/Kd\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/g,"Kd $2 $2 $2"),"test.mtl"),QZ=new vl.OBJLoader;return QZ.setMaterials(FW),QZ.parse(_U)}catch(yR){return yR}}function _l(){if(uR.has(IU)){const yR=uR.get(IU);return yR.result?Promise.resolve(yR.result.clone()):yR.promise.then(GU=>GU.clone())}const ql=KU().then(yR=>(yR instanceof Error||uR.set(IU,{...uR.get(IU),result:yR}),yR));return uR.set(IU,{promise:ql,result:null}),ql}return _l().then(ql=>{BU||JU(ql)}).catch(ql=>{console.error(ql)}),()=>{BU=!0}},[IU]),wR}var iR=requireJsxRuntime();function TR({url:IU,position:wR,rotation:JU,onHover:uR,isHovered:BU}){const KU=ER(IU);return KU?KU instanceof Error?(0,iR.jsx)(eU,{isHovered:BU,onHover:uR,children:(0,iR.jsxs)("mesh",{position:wR,children:[(0,iR.jsx)("boxGeometry",{args:[.5,.5,.5]}),(0,iR.jsx)("meshStandardMaterial",{transparent:!0,color:"red",opacity:.5}),(0,iR.jsx)("meshBasicMaterial",{color:"red"})]})}):(0,iR.jsx)(eU,{isHovered:BU,onHover:uR,children:(0,iR.jsx)("primitive",{rotation:JU,position:wR,object:KU})}):(0,iR.jsx)(eU,{isHovered:BU,onHover:uR,children:(0,iR.jsxs)("mesh",{position:wR,children:[(0,iR.jsx)("boxGeometry",{args:[.5,.5,.5]}),(0,iR.jsx)("meshStandardMaterial",{transparent:!0,color:"red",opacity:.25})]})})}var PR=requireDist$5(),RU=dV(requireSrc$1()),nU=requireDist$4(),FR=dV(requireThree()),dU=requireReact(),NU=requireJsxRuntime(),OU=({jscadPlan:IU,positionOffset:wR,rotationOffset:JU,onHover:uR,isHovered:BU})=>{const{threeGeom:KU,material:_l}=(0,dU.useMemo)(()=>{const ql=(0,PR.executeJscadOperations)(RU.default,IU),yR=(0,nU.convertCSGToThreeGeom)(ql),GU=new FR.MeshStandardMaterial({vertexColors:!0,side:FR.DoubleSide});return{threeGeom:yR,material:GU}},[IU]);return(0,dU.useMemo)(()=>{if(BU){const ql=new FR.Color(_l.color.getHex());_l.emissive.copy(ql),_l.emissive.setRGB(0,0,1),_l.emissiveIntensity=.2}else _l.emissiveIntensity=0},[BU,_l]),KU?(0,NU.jsx)(eU,{isHovered:BU,onHover:uR,position:wR,children:(0,NU.jsx)("mesh",{geometry:KU,material:_l,position:wR,rotation:JU})}):null},MZ=require$$19,jZ=requireDist$4(),OZ=requireDist$5(),oZ=requireReact(),MW=requireJsxRuntime(),{createJSCADRoot:LU}=(0,jZ.createJSCADRenderer)(OZ.jscadPlanner),hW=({positionOffset:IU,footprint:wR,rotationOffset:JU,onHover:uR,isHovered:BU})=>{const KU=(0,oZ.useMemo)(()=>{if(!wR)return null;const _l=[];return LU(_l).render((0,MW.jsx)(MZ.Footprinter3d,{footprint:wR})),_l},[wR]);return KU?(0,MW.jsx)(MW.Fragment,{children:KU.map((_l,ql)=>(0,MW.jsx)(OU,{positionOffset:IU,rotationOffset:JU,jscadPlan:_l,onHover:uR,isHovered:BU},ql))}):null},CW=(...IU)=>IU,iW=requireJsxRuntime(),_W=({cad_component:IU,onHover:wR=()=>{},isHovered:JU=!1})=>{const uR=IU.model_obj_url??IU.model_stl_url,BU=IU.rotation?CW(IU.rotation.x*Math.PI/180,IU.rotation.y*Math.PI/180,IU.rotation.z*Math.PI/180):void 0;if(uR)return(0,iW.jsx)(TR,{url:uR,position:IU.position?[IU.position.x,IU.position.y,IU.position.z]:void 0,rotation:BU,onHover:wR,isHovered:JU},IU.cad_component_id);if(IU.model_jscad)return(0,iW.jsx)(OU,{jscadPlan:IU.model_jscad,rotationOffset:BU,onHover:wR,isHovered:JU},IU.cad_component_id);if(IU.footprinter_string)return(0,iW.jsx)(hW,{positionOffset:IU.position?[IU.position.x,IU.position.y,IU.position.z]:void 0,rotationOffset:BU,footprint:IU.footprinter_string,onHover:wR,isHovered:JU})},KW=dV(requireReact()),hZ=class extends KW.default.Component{constructor(IU){super(IU),this.state={hasError:!1,error:null}}static getDerivedStateFromError(IU){return{hasError:!0,error:IU}}render(){return this.state.hasError&&this.state.error?this.props.fallback({error:this.state.error}):this.props.children}},nW=require$$14,JW=requireJsxRuntime(),cW=({error:IU,cad_component:wR})=>{let JU=[0,0,0];return wR!=null&&wR.position&&(JU=[wR.position.x,wR.position.y,wR.position.z],JU=JU.map(uR=>Number.isNaN(uR)?0:uR)),(0,JW.jsxs)("group",{position:JU,children:[(0,JW.jsxs)("mesh",{renderOrder:-99999,rotation:[Math.PI/4,Math.PI/4,0],ref:uR=>{uR&&(uR.renderOrder=999999)},children:[(0,JW.jsx)("boxGeometry",{args:[.5,.5,.5]}),(0,JW.jsx)("meshStandardMaterial",{depthTest:!1,transparent:!0,color:"red",opacity:.5})]}),(0,JW.jsxs)(nW.Text,{scale:[.1,.1,.1],color:"red",anchorX:"center",anchorY:"middle",depthOffset:-99999,children:[IU.toString().slice(0,50),"..."]})]})},oW=requireJsxRuntime(),CZ=({soup:IU,children:wR})=>{const[JU,uR]=(0,JV.useState)(null);if(IU??(IU=gV(wR)),!IU)return null;const BU=(0,JV.useMemo)(()=>IU.some(yR=>yR.type==="pcb_board")?Cl(IU):null,[IU]),{stls:KU,loading:_l}=kl(BU),ql=(0,nV.su)(IU).cad_component.list();return(0,oW.jsxs)(XR,{hoveredComponent:JU,children:[KU.map(({stlUrl:yR,color:GU},uU)=>(0,oW.jsx)(zl,{stlUrl:yR,color:GU,opacity:uU===0?.95:1},yR)),ql.map(yR=>(0,oW.jsx)(hZ,{fallback:({error:GU})=>(0,oW.jsx)(cW,{cad_component:yR,error:GU}),children:(0,oW.jsx)(_W,{onHover:GU=>{var _U;if(GU||uR(null),!GU.mousePosition)return;const uU=(_U=(0,nV.su)(IU).source_component.getUsing({source_component_id:yR.source_component_id}))==null?void 0:_U.name;uR({cad_component_id:yR.cad_component_id,name:uU??"<unknown>",mousePosition:GU.mousePosition})},cad_component:yR,isHovered:(JU==null?void 0:JU.cad_component_id)===yR.cad_component_id},yR.cad_component_id)},yR.cad_component_id))]})};return dist$2}var distExports$2=requireDist$2();const __viteBrowserExternal={},__viteBrowserExternal$1=Object.freeze(Object.defineProperty({__proto__:null,default:__viteBrowserExternal},Symbol.toStringTag,{value:"Module"})),require$$3=getAugmentedNamespace(__viteBrowserExternal$1),{useDebugValue}=React,{useSyncExternalStoreWithSelector}=useSyncExternalStoreExports;let didWarnAboutEqualityFn=!1;const identity=lV=>lV;function useStore(lV,J=identity,VV){process.env.NODE_ENV!=="production"&&VV&&!didWarnAboutEqualityFn&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),didWarnAboutEqualityFn=!0);const RV=useSyncExternalStoreWithSelector(lV.subscribe,lV.getState,lV.getServerState||lV.getInitialState,J,VV);return useDebugValue(RV),RV}const createImpl=lV=>{process.env.NODE_ENV!=="production"&&typeof lV!="function"&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");const J=typeof lV=="function"?createStore(lV):lV,VV=(RV,UV)=>useStore(J,RV,UV);return Object.assign(VV,J),VV},create=lV=>lV?createImpl(lV):createImpl;var react=lV=>(process.env.NODE_ENV!=="production"&&console.warn("[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`."),create(lV));const esm=Object.freeze(Object.defineProperty({__proto__:null,create,createStore,default:react,useStore},Symbol.toStringTag,{value:"Module"})),require$$4=getAugmentedNamespace(esm);var reactToastify={},clsx={exports:{}},hasRequiredClsx;function requireClsx(){if(hasRequiredClsx)return clsx.exports;hasRequiredClsx=1;function lV(VV){var RV,UV,ZV="";if(typeof VV=="string"||typeof VV=="number")ZV+=VV;else if(typeof VV=="object")if(Array.isArray(VV)){var WV=VV.length;for(RV=0;RV<WV;RV++)VV[RV]&&(UV=lV(VV[RV]))&&(ZV&&(ZV+=" "),ZV+=UV)}else for(UV in VV)VV[UV]&&(ZV&&(ZV+=" "),ZV+=UV);return ZV}function J(){for(var VV,RV,UV=0,ZV="",WV=arguments.length;UV<WV;UV++)(VV=arguments[UV])&&(RV=lV(VV))&&(ZV&&(ZV+=" "),ZV+=RV);return ZV}return clsx.exports=J,clsx.exports.clsx=J,clsx.exports}var hasRequiredReactToastify;function requireReactToastify(){if(hasRequiredReactToastify)return reactToastify;hasRequiredReactToastify=1;var lV=requireReact(),J=requireClsx();function VV(ol){return ol&&typeof ol=="object"&&"default"in ol?ol:{default:ol}}var RV=VV(lV),UV=VV(J);const ZV=ol=>typeof ol=="number"&&!isNaN(ol),WV=ol=>typeof ol=="string",IV=ol=>typeof ol=="function",dV=ol=>WV(ol)||IV(ol)?ol:null,CV=ol=>lV.isValidElement(ol)||WV(ol)||IV(ol)||ZV(ol);function FV(ol,xl,wl){wl===void 0&&(wl=300);const{scrollHeight:Pl,style:zl}=ol;requestAnimationFrame(()=>{zl.minHeight="initial",zl.height=Pl+"px",zl.transition=`all ${wl}ms`,requestAnimationFrame(()=>{zl.height="0",zl.padding="0",zl.margin="0",setTimeout(xl,wl)})})}function NV(ol){let{enter:xl,exit:wl,appendPosition:Pl=!1,collapse:zl=!0,collapseDuration:Tl=300}=ol;return function(Al){let{children:Ol,position:RR,preventExitTransition:hR,done:gR,nodeRef:sR,isIn:tR,playToast:pR}=Al;const MR=Pl?`${xl}--${RR}`:xl,cR=Pl?`${wl}--${RR}`:wl,mR=lV.useRef(0);return lV.useLayoutEffect(()=>{const zR=sR.current,XR=MR.split(" "),ZU=sU=>{sU.target===sR.current&&(pR(),zR.removeEventListener("animationend",ZU),zR.removeEventListener("animationcancel",ZU),mR.current===0&&sU.type!=="animationcancel"&&zR.classList.remove(...XR))};zR.classList.add(...XR),zR.addEventListener("animationend",ZU),zR.addEventListener("animationcancel",ZU)},[]),lV.useEffect(()=>{const zR=sR.current,XR=()=>{zR.removeEventListener("animationend",XR),zl?FV(zR,gR,Tl):gR()};tR||(hR?XR():(mR.current=1,zR.className+=` ${cR}`,zR.addEventListener("animationend",XR)))},[tR]),RV.default.createElement(RV.default.Fragment,null,Ol)}}function eV(ol,xl){return ol!=null?{content:ol.content,containerId:ol.props.containerId,id:ol.props.toastId,theme:ol.props.theme,type:ol.props.type,data:ol.props.data||{},isLoading:ol.props.isLoading,icon:ol.props.icon,status:xl}:{}}const gV=new Map;let nV=[];const JV=new Set,aV=ol=>JV.forEach(xl=>xl(ol)),GV=()=>gV.size>0;function YV(ol,xl){var wl;if(xl)return!((wl=gV.get(xl))==null||!wl.isToastActive(ol));let Pl=!1;return gV.forEach(zl=>{zl.isToastActive(ol)&&(Pl=!0)}),Pl}function tV(ol,xl){CV(ol)&&(GV()||nV.push({content:ol,options:xl}),gV.forEach(wl=>{wl.buildToast(ol,xl)}))}function kV(ol,xl){gV.forEach(wl=>{xl!=null&&xl!=null&&xl.containerId?(xl==null?void 0:xl.containerId)===wl.id&&wl.toggle(ol,xl==null?void 0:xl.id):wl.toggle(ol,xl==null?void 0:xl.id)})}function AV(ol){const{subscribe:xl,getSnapshot:wl,setProps:Pl}=lV.useRef(function(Tl){const Al=Tl.containerId||1;return{subscribe(Ol){const RR=function(gR,sR,tR){let pR=1,MR=0,cR=[],mR=[],zR=[],XR=sR;const ZU=new Map,sU=new Set,rU=()=>{zR=Array.from(ZU.values()),sU.forEach(eU=>eU())},KR=eU=>{mR=eU==null?[]:mR.filter(BR=>BR!==eU),rU()},HR=eU=>{const{toastId:BR,onOpen:vl,updateId:ER,children:iR}=eU.props,TR=ER==null;eU.staleId&&ZU.delete(eU.staleId),ZU.set(BR,eU),mR=[...mR,eU.props.toastId].filter(PR=>PR!==eU.staleId),rU(),tR(eV(eU,TR?"added":"updated")),TR&&IV(vl)&&vl(lV.isValidElement(iR)&&iR.props)};return{id:gR,props:XR,observe:eU=>(sU.add(eU),()=>sU.delete(eU)),toggle:(eU,BR)=>{ZU.forEach(vl=>{BR!=null&&BR!==vl.props.toastId||IV(vl.toggle)&&vl.toggle(eU)})},removeToast:KR,toasts:ZU,clearQueue:()=>{MR-=cR.length,cR=[]},buildToast:(eU,BR)=>{if((jZ=>{let{containerId:OZ,toastId:oZ,updateId:MW}=jZ;const LU=OZ?OZ!==gR:gR!==1,hW=ZU.has(oZ)&&MW==null;return LU||hW})(BR))return;const{toastId:vl,updateId:ER,data:iR,staleId:TR,delay:PR}=BR,RU=()=>{KR(vl)},nU=ER==null;nU&&MR++;const FR={...XR,style:XR.toastStyle,key:pR++,...Object.fromEntries(Object.entries(BR).filter(jZ=>{let[OZ,oZ]=jZ;return oZ!=null})),toastId:vl,updateId:ER,data:iR,closeToast:RU,isIn:!1,className:dV(BR.className||XR.toastClassName),bodyClassName:dV(BR.bodyClassName||XR.bodyClassName),progressClassName:dV(BR.progressClassName||XR.progressClassName),autoClose:!BR.isLoading&&(dU=BR.autoClose,NU=XR.autoClose,dU===!1||ZV(dU)&&dU>0?dU:NU),deleteToast(){const jZ=ZU.get(vl),{onClose:OZ,children:oZ}=jZ.props;IV(OZ)&&OZ(lV.isValidElement(oZ)&&oZ.props),tR(eV(jZ,"removed")),ZU.delete(vl),MR--,MR<0&&(MR=0),cR.length>0?HR(cR.shift()):rU()}};var dU,NU;FR.closeButton=XR.closeButton,BR.closeButton===!1||CV(BR.closeButton)?FR.closeButton=BR.closeButton:BR.closeButton===!0&&(FR.closeButton=!CV(XR.closeButton)||XR.closeButton);let OU=eU;lV.isValidElement(eU)&&!WV(eU.type)?OU=lV.cloneElement(eU,{closeToast:RU,toastProps:FR,data:iR}):IV(eU)&&(OU=eU({closeToast:RU,toastProps:FR,data:iR}));const MZ={content:OU,props:FR,staleId:TR};XR.limit&&XR.limit>0&&MR>XR.limit&&nU?cR.push(MZ):ZV(PR)?setTimeout(()=>{HR(MZ)},PR):HR(MZ)},setProps(eU){XR=eU},setToggle:(eU,BR)=>{ZU.get(eU).toggle=BR},isToastActive:eU=>mR.some(BR=>BR===eU),getSnapshot:()=>zR}}(Al,Tl,aV);gV.set(Al,RR);const hR=RR.observe(Ol);return nV.forEach(gR=>tV(gR.content,gR.options)),nV=[],()=>{hR(),gV.delete(Al)}},setProps(Ol){var RR;(RR=gV.get(Al))==null||RR.setProps(Ol)},getSnapshot(){var Ol;return(Ol=gV.get(Al))==null?void 0:Ol.getSnapshot()}}}(ol)).current;Pl(ol);const zl=lV.useSyncExternalStore(xl,wl,wl);return{getToastToRender:function(Tl){if(!zl)return[];const Al=new Map;return ol.newestOnTop&&zl.reverse(),zl.forEach(Ol=>{const{position:RR}=Ol.props;Al.has(RR)||Al.set(RR,[]),Al.get(RR).push(Ol)}),Array.from(Al,Ol=>Tl(Ol[0],Ol[1]))},isToastActive:YV,count:zl==null?void 0:zl.length}}function XV(ol){const[xl,wl]=lV.useState(!1),[Pl,zl]=lV.useState(!1),Tl=lV.useRef(null),Al=lV.useRef({start:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,didMove:!1}).current,{autoClose:Ol,pauseOnHover:RR,closeToast:hR,onClick:gR,closeOnClick:sR}=ol;var tR,pR;function MR(){wl(!0)}function cR(){wl(!1)}function mR(ZU){const sU=Tl.current;Al.canDrag&&sU&&(Al.didMove=!0,xl&&cR(),Al.delta=ol.draggableDirection==="x"?ZU.clientX-Al.start:ZU.clientY-Al.start,Al.start!==ZU.clientX&&(Al.canCloseOnClick=!1),sU.style.transform=`translate3d(${ol.draggableDirection==="x"?`${Al.delta}px, var(--y)`:`0, calc(${Al.delta}px + var(--y))`},0)`,sU.style.opacity=""+(1-Math.abs(Al.delta/Al.removalDistance)))}function zR(){document.removeEventListener("pointermove",mR),document.removeEventListener("pointerup",zR);const ZU=Tl.current;if(Al.canDrag&&Al.didMove&&ZU){if(Al.canDrag=!1,Math.abs(Al.delta)>Al.removalDistance)return zl(!0),ol.closeToast(),void ol.collapseAll();ZU.style.transition="transform 0.2s, opacity 0.2s",ZU.style.removeProperty("transform"),ZU.style.removeProperty("opacity")}}(pR=gV.get((tR={id:ol.toastId,containerId:ol.containerId,fn:wl}).containerId||1))==null||pR.setToggle(tR.id,tR.fn),lV.useEffect(()=>{if(ol.pauseOnFocusLoss)return document.hasFocus()||cR(),window.addEventListener("focus",MR),window.addEventListener("blur",cR),()=>{window.removeEventListener("focus",MR),window.removeEventListener("blur",cR)}},[ol.pauseOnFocusLoss]);const XR={onPointerDown:function(ZU){if(ol.draggable===!0||ol.draggable===ZU.pointerType){Al.didMove=!1,document.addEventListener("pointermove",mR),document.addEventListener("pointerup",zR);const sU=Tl.current;Al.canCloseOnClick=!0,Al.canDrag=!0,sU.style.transition="none",ol.draggableDirection==="x"?(Al.start=ZU.clientX,Al.removalDistance=sU.offsetWidth*(ol.draggablePercent/100)):(Al.start=ZU.clientY,Al.removalDistance=sU.offsetHeight*(ol.draggablePercent===80?1.5*ol.draggablePercent:ol.draggablePercent)/100)}},onPointerUp:function(ZU){const{top:sU,bottom:rU,left:KR,right:HR}=Tl.current.getBoundingClientRect();ZU.nativeEvent.type!=="touchend"&&ol.pauseOnHover&&ZU.clientX>=KR&&ZU.clientX<=HR&&ZU.clientY>=sU&&ZU.clientY<=rU?cR():MR()}};return Ol&&RR&&(XR.onMouseEnter=cR,ol.stacked||(XR.onMouseLeave=MR)),sR&&(XR.onClick=ZU=>{gR&&gR(ZU),Al.canCloseOnClick&&hR()}),{playToast:MR,pauseToast:cR,isRunning:xl,preventExitTransition:Pl,toastRef:Tl,eventHandlers:XR}}function MV(ol){let{delay:xl,isRunning:wl,closeToast:Pl,type:zl="default",hide:Tl,className:Al,style:Ol,controlledProgress:RR,progress:hR,rtl:gR,isIn:sR,theme:tR}=ol;const pR=Tl||RR&&hR===0,MR={...Ol,animationDuration:`${xl}ms`,animationPlayState:wl?"running":"paused"};RR&&(MR.transform=`scaleX(${hR})`);const cR=UV.default("Toastify__progress-bar",RR?"Toastify__progress-bar--controlled":"Toastify__progress-bar--animated",`Toastify__progress-bar-theme--${tR}`,`Toastify__progress-bar--${zl}`,{"Toastify__progress-bar--rtl":gR}),mR=IV(Al)?Al({rtl:gR,type:zl,defaultClassName:cR}):UV.default(cR,Al),zR={[RR&&hR>=1?"onTransitionEnd":"onAnimationEnd"]:RR&&hR<1?null:()=>{sR&&Pl()}};return RV.default.createElement("div",{className:"Toastify__progress-bar--wrp","data-hidden":pR},RV.default.createElement("div",{className:`Toastify__progress-bar--bg Toastify__progress-bar-theme--${tR} Toastify__progress-bar--${zl}`}),RV.default.createElement("div",{role:"progressbar","aria-hidden":pR?"true":"false","aria-label":"notification timer",className:mR,style:MR,...zR}))}let xV=1;const uV=()=>""+xV++;function wV(ol){return ol&&(WV(ol.toastId)||ZV(ol.toastId))?ol.toastId:uV()}function vV(ol,xl){return tV(ol,xl),xl.toastId}function yV(ol,xl){return{...xl,type:xl&&xl.type||ol,toastId:wV(xl)}}function ll(ol){return(xl,wl)=>vV(xl,yV(ol,wl))}function Nl(ol,xl){return vV(ol,yV("default",xl))}Nl.loading=(ol,xl)=>vV(ol,yV("default",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...xl})),Nl.promise=function(ol,xl,wl){let Pl,{pending:zl,error:Tl,success:Al}=xl;zl&&(Pl=WV(zl)?Nl.loading(zl,wl):Nl.loading(zl.render,{...wl,...zl}));const Ol={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},RR=(gR,sR,tR)=>{if(sR==null)return void Nl.dismiss(Pl);const pR={type:gR,...Ol,...wl,data:tR},MR=WV(sR)?{render:sR}:sR;return Pl?Nl.update(Pl,{...pR,...MR}):Nl(MR.render,{...pR,...MR}),tR},hR=IV(ol)?ol():ol;return hR.then(gR=>RR("success",Al,gR)).catch(gR=>RR("error",Tl,gR)),hR},Nl.success=ll("success"),Nl.info=ll("info"),Nl.error=ll("error"),Nl.warning=ll("warning"),Nl.warn=Nl.warning,Nl.dark=(ol,xl)=>vV(ol,yV("default",{theme:"dark",...xl})),Nl.dismiss=function(ol){(function(xl){var wl;if(GV()){if(xl==null||WV(wl=xl)||ZV(wl))gV.forEach(Pl=>{Pl.removeToast(xl)});else if(xl&&("containerId"in xl||"id"in xl)){const Pl=gV.get(xl.containerId);Pl?Pl.removeToast(xl.id):gV.forEach(zl=>{zl.removeToast(xl.id)})}}else nV=nV.filter(Pl=>xl!=null&&Pl.options.toastId!==xl)})(ol)},Nl.clearWaitingQueue=function(ol){ol===void 0&&(ol={}),gV.forEach(xl=>{!xl.props.limit||ol.containerId&&xl.id!==ol.containerId||xl.clearQueue()})},Nl.isActive=YV,Nl.update=function(ol,xl){xl===void 0&&(xl={});const wl=((Pl,zl)=>{var Tl;let{containerId:Al}=zl;return(Tl=gV.get(Al||1))==null?void 0:Tl.toasts.get(Pl)})(ol,xl);if(wl){const{props:Pl,content:zl}=wl,Tl={delay:100,...Pl,...xl,toastId:xl.toastId||ol,updateId:uV()};Tl.toastId!==ol&&(Tl.staleId=ol);const Al=Tl.render||zl;delete Tl.render,vV(Al,Tl)}},Nl.done=ol=>{Nl.update(ol,{progress:1})},Nl.onChange=function(ol){return JV.add(ol),()=>{JV.delete(ol)}},Nl.play=ol=>kV(!0,ol),Nl.pause=ol=>kV(!1,ol);const al=typeof window<"u"?lV.useLayoutEffect:lV.useEffect,el=ol=>{let{theme:xl,type:wl,isLoading:Pl,...zl}=ol;return RV.default.createElement("svg",{viewBox:"0 0 24 24",width:"100%",height:"100%",fill:xl==="colored"?"currentColor":`var(--toastify-icon-color-${wl})`,...zl})},qV={info:function(ol){return RV.default.createElement(el,{...ol},RV.default.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(ol){return RV.default.createElement(el,{...ol},RV.default.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(ol){return RV.default.createElement(el,{...ol},RV.default.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(ol){return RV.default.createElement(el,{...ol},RV.default.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 RV.default.createElement("div",{className:"Toastify__spinner"})}},fV=ol=>{const{isRunning:xl,preventExitTransition:wl,toastRef:Pl,eventHandlers:zl,playToast:Tl}=XV(ol),{closeButton:Al,children:Ol,autoClose:RR,onClick:hR,type:gR,hideProgressBar:sR,closeToast:tR,transition:pR,position:MR,className:cR,style:mR,bodyClassName:zR,bodyStyle:XR,progressClassName:ZU,progressStyle:sU,updateId:rU,role:KR,progress:HR,rtl:eU,toastId:BR,deleteToast:vl,isIn:ER,isLoading:iR,closeOnClick:TR,theme:PR}=ol,RU=UV.default("Toastify__toast",`Toastify__toast-theme--${PR}`,`Toastify__toast--${gR}`,{"Toastify__toast--rtl":eU},{"Toastify__toast--close-on-click":TR}),nU=IV(cR)?cR({rtl:eU,position:MR,type:gR,defaultClassName:RU}):UV.default(RU,cR),FR=function(MZ){let{theme:jZ,type:OZ,isLoading:oZ,icon:MW}=MZ,LU=null;const hW={theme:jZ,type:OZ};return MW===!1||(IV(MW)?LU=MW({...hW,isLoading:oZ}):lV.isValidElement(MW)?LU=lV.cloneElement(MW,hW):oZ?LU=qV.spinner():(CW=>CW in qV)(OZ)&&(LU=qV[OZ](hW))),LU}(ol),dU=!!HR||!RR,NU={closeToast:tR,type:gR,theme:PR};let OU=null;return Al===!1||(OU=IV(Al)?Al(NU):lV.isValidElement(Al)?lV.cloneElement(Al,NU):function(MZ){let{closeToast:jZ,theme:OZ,ariaLabel:oZ="close"}=MZ;return RV.default.createElement("button",{className:`Toastify__close-button Toastify__close-button--${OZ}`,type:"button",onClick:MW=>{MW.stopPropagation(),jZ(MW)},"aria-label":oZ},RV.default.createElement("svg",{"aria-hidden":"true",viewBox:"0 0 14 16"},RV.default.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"})))}(NU)),RV.default.createElement(pR,{isIn:ER,done:vl,position:MR,preventExitTransition:wl,nodeRef:Pl,playToast:Tl},RV.default.createElement("div",{id:BR,onClick:hR,"data-in":ER,className:nU,...zl,style:mR,ref:Pl},RV.default.createElement("div",{...ER&&{role:KR},className:IV(zR)?zR({type:gR}):UV.default("Toastify__toast-body",zR),style:XR},FR!=null&&RV.default.createElement("div",{className:UV.default("Toastify__toast-icon",{"Toastify--animate-icon Toastify__zoom-enter":!iR})},FR),RV.default.createElement("div",null,Ol)),OU,RV.default.createElement(MV,{...rU&&!dU?{key:`pb-${rU}`}:{},rtl:eU,theme:PR,delay:RR,isRunning:xl,isIn:ER,closeToast:tR,hide:sR,type:gR,style:sU,className:ZU,controlledProgress:dU,progress:HR||0})))},Ul=function(ol,xl){return xl===void 0&&(xl=!1),{enter:`Toastify--animate Toastify__${ol}-enter`,exit:`Toastify--animate Toastify__${ol}-exit`,appendPosition:xl}},Cl=NV(Ul("bounce",!0)),Il=NV(Ul("slide",!0)),Jl=NV(Ul("zoom")),Bl=NV(Ul("flip")),kl={position:"top-right",transition:Cl,autoClose:5e3,closeButton:!0,pauseOnHover:!0,pauseOnFocusLoss:!0,draggable:"touch",draggablePercent:80,draggableDirection:"x",role:"alert",theme:"light"};return reactToastify.Bounce=Cl,reactToastify.Flip=Bl,reactToastify.Icons=qV,reactToastify.Slide=Il,reactToastify.ToastContainer=function(ol){let xl={...kl,...ol};const wl=ol.stacked,[Pl,zl]=lV.useState(!0),Tl=lV.useRef(null),{getToastToRender:Al,isToastActive:Ol,count:RR}=AV(xl),{className:hR,style:gR,rtl:sR,containerId:tR}=xl;function pR(cR){const mR=UV.default("Toastify__toast-container",`Toastify__toast-container--${cR}`,{"Toastify__toast-container--rtl":sR});return IV(hR)?hR({position:cR,rtl:sR,defaultClassName:mR}):UV.default(mR,dV(hR))}function MR(){wl&&(zl(!0),Nl.play())}return al(()=>{if(wl){var cR;const mR=Tl.current.querySelectorAll('[data-in="true"]'),zR=12,XR=(cR=xl.position)==null?void 0:cR.includes("top");let ZU=0,sU=0;Array.from(mR).reverse().forEach((rU,KR)=>{const HR=rU;HR.classList.add("Toastify__toast--stacked"),KR>0&&(HR.dataset.collapsed=`${Pl}`),HR.dataset.pos||(HR.dataset.pos=XR?"top":"bot");const eU=ZU*(Pl?.2:1)+(Pl?0:zR*KR);HR.style.setProperty("--y",`${XR?eU:-1*eU}px`),HR.style.setProperty("--g",`${zR}`),HR.style.setProperty("--s",""+(1-(Pl?sU:0))),ZU+=HR.offsetHeight,sU+=.025})}},[Pl,RR,wl]),RV.default.createElement("div",{ref:Tl,className:"Toastify",id:tR,onMouseEnter:()=>{wl&&(zl(!1),Nl.pause())},onMouseLeave:MR},Al((cR,mR)=>{const zR=mR.length?{...gR}:{...gR,pointerEvents:"none"};return RV.default.createElement("div",{className:pR(cR),style:zR,key:`container-${cR}`},mR.map(XR=>{let{content:ZU,props:sU}=XR;return RV.default.createElement(fV,{...sU,stacked:wl,collapseAll:MR,isIn:Ol(sU.toastId,sU.containerId),style:sU.style,key:`toast-${sU.key}`},ZU)}))}))},reactToastify.Zoom=Jl,reactToastify.collapseToast=FV,reactToastify.cssTransition=NV,reactToastify.toast=Nl,reactToastify.useToast=XV,reactToastify.useToastContainer=AV,reactToastify}var injectStyle={},hasRequiredInjectStyle;function requireInjectStyle(){if(hasRequiredInjectStyle)return injectStyle;hasRequiredInjectStyle=1,Object.defineProperty(injectStyle,"__esModule",{value:!0}),injectStyle.injectStyle=lV;function lV(){var J=':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)}}',VV=document.createElement("style");VV.innerText=J,document.head.appendChild(VV)}return injectStyle}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,tV)=>{if(GV&&typeof GV=="object"||typeof GV=="function")for(let kV of VV(GV))!RV.call(aV,kV)&&kV!==YV&&lV(aV,kV,{get:()=>GV[kV],enumerable:!(tV=J(GV,kV))||tV.enumerable});return aV},WV=aV=>ZV(lV({},"__esModule",{value:!0}),aV),IV={};UV(IV,{SuperGrid:()=>JV,toMMSI:()=>nV,toMeterSI:()=>gV}),SuperGrid_1=WV(IV);var dV=requireReact(),CV=require$$0,FV=requireJsxRuntime(),NV=(aV,GV,YV)=>{const tV=[];if(GV<aV)for(let kV=aV;kV>=GV;kV-=Math.abs(YV))tV.push(kV);else for(let kV=aV;kV<=GV;kV+=Math.abs(YV))tV.push(kV);return tV};function eV(aV,GV){return{x:Math.round(GV.x/aV)*aV,y:Math.round(GV.y/aV)*aV}}function gV(aV,GV=1){return aV<0?"-"+gV(-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 nV(aV,GV=1){return gV(aV/1e3,GV/1e3)}var JV=aV=>{var GV;const YV=(0,dV.useRef)(null),[tV,kV]=(0,dV.useState)({x:0,y:0}),{majorColor:AV="rgba(0,0,0,0.2)",minorColor:XV="rgba(0,0,0,0.1)",textColor:MV=(GV=aV.majorColor)!=null?GV:"rgba(0,0,0,0.5)",width:xV,height:uV,screenSpaceCellSize:wV=200,stringifyCoord:vV=(al,el,qV)=>`${gV(al,qV)}, ${gV(el,qV)}`}=aV,yV=Math.ceil(xV/wV)+2,ll=Math.ceil(uV/wV)+2;(0,dV.useEffect)(()=>{if(!YV.current)return;const al=YV.current.getContext("2d");if(!al)return;const el=wV/10**Math.floor(Math.log10(aV.transform.a)),qV=aV.transform.d<0?-1:1,Ul=wV/10**Math.log10(aV.transform.a)/el;function Cl(Tl,Al,Ol){const RR=Tl;let hR,gR,sR;for(hR=Al.x;hR<=Ol.x;hR+=RR)gR=(0,CV.applyToPoint)(aV.transform,{x:hR,y:Al.y}),sR=(0,CV.applyToPoint)(aV.transform,{x:hR,y:Ol.y}),al.beginPath(),al.moveTo(gR.x,gR.y),al.lineTo(sR.x,sR.y),al.stroke();const tR=NV(Al.y,Ol.y,RR*qV);for(const pR of tR)gR=(0,CV.applyToPoint)(aV.transform,{x:Al.x,y:pR}),sR=(0,CV.applyToPoint)(aV.transform,{x:Ol.x,y:pR}),al.beginPath(),al.moveTo(gR.x,gR.y),al.lineTo(sR.x,sR.y),al.stroke()}function Il(Tl,Al,Ol){const RR=Tl;let hR;for(hR=Al.x;hR<=Ol.x;hR+=RR)for(const gR of NV(Al.y,Ol.y,RR*qV)){const sR=(0,CV.applyToPoint)(aV.transform,{x:hR,y:gR});al.fillStyle=MV,al.font="12px sans-serif",al.fillText(vV(hR,gR,Tl),sR.x+2,sR.y-2)}}al.clearRect(0,0,xV,uV);const Jl=(0,CV.applyToPoint)((0,CV.inverse)(aV.transform),{x:0,y:0}),Bl={x:Math.floor((Jl.x-el)/el)*el,y:Math.floor((Jl.y-el)/el+(qV==-1?2:0))*el},kl={x:Bl.x+el*yV,y:Bl.y+el*ll*qV},xl=el*5,wl={x:Math.floor((Jl.x-xl)/xl)*xl,y:Math.floor((Jl.y-xl)/xl+(qV==-1?2:0))*xl},Pl={x:wl.x+xl*yV,y:wl.y+xl*ll*qV};al.globalAlpha=1,al.strokeStyle=AV,Cl(el,Bl,kl),Il(xl,wl,Pl),al.globalAlpha=1-Ul,Cl(xl/10,wl,Pl),al.globalAlpha=1-Ul,al.strokeStyle=XV,Cl(el/10,Bl,kl),al.globalAlpha=Math.max(((1-Ul)*10-5)/5,0),Il(xl/10,wl,Pl),al.globalAlpha=1;const zl=(0,CV.applyToPoint)(aV.transform,tV);al.font="12px sans-serif",al.fillStyle=MV,al.fillText(vV(tV.x,tV.y,el),zl.x+2,zl.y-2),al.strokeStyle=AV,al.strokeRect(zl.x-5,zl.y-5,10,10)},[YV,aV.transform,tV,xV,uV]);const Nl=al=>{if(!YV.current)return;const el=wV/10/10**Math.floor(Math.log10(aV.transform.a)),qV=YV.current.getBoundingClientRect(),fV=(0,CV.applyToPoint)((0,CV.inverse)(aV.transform),{x:al.clientX-qV.left,y:al.clientY-qV.top}),Ul=eV(el,fV);kV(Ul)};return(0,FV.jsx)("canvas",{onMouseUp:al=>{al.button===1&&Nl(al)},onDoubleClick:Nl,ref:YV,width:aV.width,height:aV.height})};return SuperGrid_1}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=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>0?charat(characters,--position):0,column--,character===10&&(column=1,line--),character}function next(){return character=position<length?charat(characters,position++):0,column++,character===10&&(column=1,line++),character}function peek(){return charat(characters,position)}function caret(){return position}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=0,[]}function dealloc(lV){return characters="",lV}function delimit(lV){return trim(slice(position-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;case 34:case 39:lV!==34&&lV!==39&&delimiter(character);break;case 40:lV===41&&delimiter(lV);break;case 92:next();break}return position}function commenter(lV,J){for(;next()&&lV+character!==57;)if(lV+character===84&&peek()===47)break;return"/*"+slice(J,position-1)+"*"+from(lV===47?lV:next())}function identifier(lV){for(;!token(peek());)next();return slice(lV,position)}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,eV=0,gV=0,nV=0,JV=1,aV=1,GV=1,YV=0,tV="",kV=UV,AV=ZV,XV=RV,MV=tV;aV;)switch(nV=YV,YV=next()){case 40:if(nV!=108&&charat(MV,NV-1)==58){indexof(MV+=replace(delimit(YV),"&","&\f"),"&\f")!=-1&&(GV=-1);break}case 34:case 39:case 91:MV+=delimit(YV);break;case 9:case 10:case 13:case 32:MV+=whitespace(nV);break;case 92:MV+=escaping(caret()-1,7);continue;case 47:switch(peek()){case 42:case 47:append(comment(commenter(next(),caret()),J,VV),dV);break;default:MV+="/"}break;case 123*JV:IV[CV++]=strlen(MV)*GV;case 125*JV:case 59:case 0:switch(YV){case 0:case 125:aV=0;case 59+FV:GV==-1&&(MV=replace(MV,/\f/g,"")),gV>0&&strlen(MV)-NV&&append(gV>32?declaration(MV+";",RV,VV,NV-1):declaration(replace(MV," ","")+";",RV,VV,NV-2),dV);break;case 59:MV+=";";default:if(append(XV=ruleset(MV,J,VV,CV,FV,UV,IV,tV,kV=[],AV=[],NV),ZV),YV===123)if(FV===0)parse$1(MV,J,XV,XV,kV,ZV,NV,IV,AV);else switch(eV===99&&charat(MV,3)===110?100:eV){case 100:case 108:case 109:case 115:parse$1(lV,XV,XV,RV&&append(ruleset(lV,XV,XV,0,0,UV,IV,tV,UV,kV=[],NV),AV),UV,AV,NV,IV,RV?kV:AV);break;default:parse$1(MV,XV,XV,XV,[""],AV,0,IV,AV)}}CV=FV=gV=0,JV=GV=1,tV=MV="",NV=WV;break;case 58:NV=1+strlen(MV),gV=nV;default:if(JV<1){if(YV==123)--JV;else if(YV==125&&JV++==0&&prev()==125)continue}switch(MV+=from(YV),YV*JV){case 38:GV=FV>0?1:(MV+="\f",-1);break;case 44:IV[CV++]=(strlen(MV)-1)*GV,GV=1;break;case 64:peek()===45&&(MV+=delimit(next())),eV=peek(),FV=NV=strlen(tV=MV+=identifier(caret())),YV++;break;case 45:nV===45&&strlen(MV)==2&&(JV=0)}}return ZV}function ruleset(lV,J,VV,RV,UV,ZV,WV,IV,dV,CV,FV){for(var NV=UV-1,eV=UV===0?ZV:[""],gV=sizeof$1(eV),nV=0,JV=0,aV=0;nV<RV;++nV)for(var GV=0,YV=substr(lV,NV+1,NV=abs(JV=WV[nV])),tV=lV;GV<gV;++GV)(tV=trim(JV>0?eV[GV]+" "+YV:replace(YV,/&\f/g,eV[GV])))&&(dV[aV++]=tV);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)},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,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(JV){var aV=JV.getAttribute("data-emotion");aV.indexOf(" ")!==-1&&(document.head.appendChild(JV),JV.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(JV){for(var aV=JV.getAttribute("data-emotion").split(" "),GV=1;GV<aV.length;GV++)ZV[aV[GV]]=!0;IV.push(JV)});var dV,CV=[compat,removeLabel];{var FV,NV=[stringify$1,rulesheet(function(JV){FV.insert(JV)})],eV=middleware(CV.concat(UV,NV)),gV=function(aV){return serialize(compile(aV),eV)};dV=function(aV,GV,YV,tV){FV=YV,gV(aV?aV+"{"+GV.styles+"}":GV.styles),tV&&(nV.inserted[GV.name]=!0)}}var nV={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 nV.sheet.hydrate(IV),nV};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$1(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$1(lV,J,VV){var RV=[],UV=getRegisteredStyles$1(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),eV="animation-"+NV.name;return insertWithoutScoping(VV,{name:NV.name,styles:"@keyframes "+eV+"{"+NV.styles+"}"}),eV},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$1(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$1.bind(null,VV.registered),merge:merge$1.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"}),flush=_createEmotion.flush,hydrate=_createEmotion.hydrate,cx$1=_createEmotion.cx,merge=_createEmotion.merge,getRegisteredStyles=_createEmotion.getRegisteredStyles,injectGlobal=_createEmotion.injectGlobal,keyframes=_createEmotion.keyframes,css=_createEmotion.css,sheet=_createEmotion.sheet,cache=_createEmotion.cache;const emotionCss_esm=Object.freeze(Object.defineProperty({__proto__:null,cache,css,cx:cx$1,flush,getRegisteredStyles,hydrate,injectGlobal,keyframes,merge,sheet},Symbol.toStringTag,{value:"Module"})),require$$10=getAugmentedNamespace(emotionCss_esm),require$$11=getAugmentedNamespace(dist$8);var dist$1,hasRequiredDist$1;function requireDist$1(){if(hasRequiredDist$1)return dist$1;hasRequiredDist$1=1;function lV(VR,UU){(UU==null||UU>VR.length)&&(UU=VR.length);for(var OR=0,iU=new Array(UU);OR<UU;OR++)iU[OR]=VR[OR];return iU}function J(VR){if(Array.isArray(VR))return VR}function VV(VR){if(Array.isArray(VR))return lV(VR)}function RV(VR){if(VR===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return VR}function UV(VR,UU,OR,iU,oR,Vl,Wl){try{var pl=VR[Vl](Wl),Dl=pl.value}catch(aR){OR(aR);return}pl.done?UU(Dl):Promise.resolve(Dl).then(iU,oR)}function ZV(VR){return function(){var UU=this,OR=arguments;return new Promise(function(iU,oR){var Vl=VR.apply(UU,OR);function Wl(Dl){UV(Vl,iU,oR,Wl,pl,"next",Dl)}function pl(Dl){UV(Vl,iU,oR,Wl,pl,"throw",Dl)}Wl(void 0)})}}function WV(VR,UU){if(!(VR instanceof UU))throw new TypeError("Cannot call a class as a function")}function IV(VR,UU,OR){return el()?IV=Reflect.construct:IV=function(oR,Vl,Wl){var pl=[null];pl.push.apply(pl,Vl);var Dl=Function.bind.apply(oR,pl),aR=new Dl;return Wl&&uV(aR,Wl.prototype),aR},IV.apply(null,arguments)}function dV(VR,UU){for(var OR=0;OR<UU.length;OR++){var iU=UU[OR];iU.enumerable=iU.enumerable||!1,iU.configurable=!0,"value"in iU&&(iU.writable=!0),Object.defineProperty(VR,iU.key,iU)}}function CV(VR,UU,OR){return UU&&dV(VR.prototype,UU),OR&&dV(VR,OR),VR}function FV(VR,UU,OR){return UU in VR?Object.defineProperty(VR,UU,{value:OR,enumerable:!0,configurable:!0,writable:!0}):VR[UU]=OR,VR}function NV(VR){return NV=Object.setPrototypeOf?Object.getPrototypeOf:function(OR){return OR.__proto__||Object.getPrototypeOf(OR)},NV(VR)}function eV(VR,UU){if(typeof UU!="function"&&UU!==null)throw new TypeError("Super expression must either be null or a function");VR.prototype=Object.create(UU&&UU.prototype,{constructor:{value:VR,writable:!0,configurable:!0}}),UU&&uV(VR,UU)}function gV(VR,UU){return UU!=null&&typeof Symbol<"u"&&UU[Symbol.hasInstance]?!!UU[Symbol.hasInstance](VR):VR instanceof UU}function nV(VR){return Function.toString.call(VR).indexOf("[native code]")!==-1}function JV(VR){if(typeof Symbol<"u"&&VR[Symbol.iterator]!=null||VR["@@iterator"]!=null)return Array.from(VR)}function aV(VR,UU){var OR=VR==null?null:typeof Symbol<"u"&&VR[Symbol.iterator]||VR["@@iterator"];if(OR!=null){var iU=[],oR=!0,Vl=!1,Wl,pl;try{for(OR=OR.call(VR);!(oR=(Wl=OR.next()).done)&&(iU.push(Wl.value),!(UU&&iU.length===UU));oR=!0);}catch(Dl){Vl=!0,pl=Dl}finally{try{!oR&&OR.return!=null&&OR.return()}finally{if(Vl)throw pl}}return iU}}function GV(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function YV(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function tV(VR){for(var UU=1;UU<arguments.length;UU++){var OR=arguments[UU]!=null?arguments[UU]:{},iU=Object.keys(OR);typeof Object.getOwnPropertySymbols=="function"&&(iU=iU.concat(Object.getOwnPropertySymbols(OR).filter(function(oR){return Object.getOwnPropertyDescriptor(OR,oR).enumerable}))),iU.forEach(function(oR){FV(VR,oR,OR[oR])})}return VR}function kV(VR,UU){var OR=Object.keys(VR);if(Object.getOwnPropertySymbols){var iU=Object.getOwnPropertySymbols(VR);OR.push.apply(OR,iU)}return OR}function AV(VR,UU){return UU=UU??{},Object.getOwnPropertyDescriptors?Object.defineProperties(VR,Object.getOwnPropertyDescriptors(UU)):kV(Object(UU)).forEach(function(OR){Object.defineProperty(VR,OR,Object.getOwnPropertyDescriptor(UU,OR))}),VR}function XV(VR,UU){if(VR==null)return{};var OR=MV(VR,UU),iU,oR;if(Object.getOwnPropertySymbols){var Vl=Object.getOwnPropertySymbols(VR);for(oR=0;oR<Vl.length;oR++)iU=Vl[oR],!(UU.indexOf(iU)>=0)&&Object.prototype.propertyIsEnumerable.call(VR,iU)&&(OR[iU]=VR[iU])}return OR}function MV(VR,UU){if(VR==null)return{};var OR={},iU=Object.keys(VR),oR,Vl;for(Vl=0;Vl<iU.length;Vl++)oR=iU[Vl],!(UU.indexOf(oR)>=0)&&(OR[oR]=VR[oR]);return OR}function xV(VR,UU){return UU&&(ll(UU)==="object"||typeof UU=="function")?UU:RV(VR)}function uV(VR,UU){return uV=Object.setPrototypeOf||function(iU,oR){return iU.__proto__=oR,iU},uV(VR,UU)}function wV(VR,UU){return J(VR)||aV(VR,UU)||Nl(VR,UU)||GV()}function vV(VR,UU){return UU||(UU=VR.slice(0)),Object.freeze(Object.defineProperties(VR,{raw:{value:Object.freeze(UU)}}))}function yV(VR){return VV(VR)||JV(VR)||Nl(VR)||YV()}function ll(VR){"@swc/helpers - typeof";return VR&&typeof Symbol<"u"&&VR.constructor===Symbol?"symbol":typeof VR}function Nl(VR,UU){if(VR){if(typeof VR=="string")return lV(VR,UU);var OR=Object.prototype.toString.call(VR).slice(8,-1);if(OR==="Object"&&VR.constructor&&(OR=VR.constructor.name),OR==="Map"||OR==="Set")return Array.from(OR);if(OR==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(OR))return lV(VR,UU)}}function al(VR){var UU=typeof Map=="function"?new Map:void 0;return al=function(iU){if(iU===null||!nV(iU))return iU;if(typeof iU!="function")throw new TypeError("Super expression must either be null or a function");if(typeof UU<"u"){if(UU.has(iU))return UU.get(iU);UU.set(iU,oR)}function oR(){return IV(iU,arguments,NV(this).constructor)}return oR.prototype=Object.create(iU.prototype,{constructor:{value:oR,enumerable:!1,writable:!0,configurable:!0}}),uV(oR,iU)},al(VR)}function el(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function qV(VR){var UU=el();return function(){var iU=NV(VR),oR;if(UU){var Vl=NV(this).constructor;oR=Reflect.construct(iU,arguments,Vl)}else oR=iU.apply(this,arguments);return xV(this,oR)}}function fV(VR,UU){var OR,iU,oR,Vl,Wl={label:0,sent:function(){if(oR[0]&1)throw oR[1];return oR[1]},trys:[],ops:[]};return Vl={next:pl(0),throw:pl(1),return:pl(2)},typeof Symbol=="function"&&(Vl[Symbol.iterator]=function(){return this}),Vl;function pl(aR){return function(kR){return Dl([aR,kR])}}function Dl(aR){if(OR)throw new TypeError("Generator is already executing.");for(;Wl;)try{if(OR=1,iU&&(oR=aR[0]&2?iU.return:aR[0]?iU.throw||((oR=iU.return)&&oR.call(iU),0):iU.next)&&!(oR=oR.call(iU,aR[1])).done)return oR;switch(iU=0,oR&&(aR=[aR[0]&2,oR.value]),aR[0]){case 0:case 1:oR=aR;break;case 4:return Wl.label++,{value:aR[1],done:!1};case 5:Wl.label++,iU=aR[1],aR=[0];continue;case 7:aR=Wl.ops.pop(),Wl.trys.pop();continue;default:if(oR=Wl.trys,!(oR=oR.length>0&&oR[oR.length-1])&&(aR[0]===6||aR[0]===2)){Wl=0;continue}if(aR[0]===3&&(!oR||aR[1]>oR[0]&&aR[1]<oR[3])){Wl.label=aR[1];break}if(aR[0]===6&&Wl.label<oR[1]){Wl.label=oR[1],oR=aR;break}if(oR&&Wl.label<oR[2]){Wl.label=oR[2],Wl.ops.push(aR);break}oR[2]&&Wl.ops.pop(),Wl.trys.pop();continue}aR=UU.call(VR,Wl)}catch(kR){aR=[6,kR],iU=0}finally{OR=oR=0}if(aR[0]&5)throw aR[1];return{value:aR[0]?aR[1]:void 0,done:!0}}}var Ul=function(VR){zG[VR]=[];var UU=bg[VR].split("M").slice(1).map(function(aR){return aR.split("L").map(function(kR){return kR.trim().split(" ").map(parseFloat)})}),OR=!0,iU=!1,oR=void 0;try{for(var Vl=UU[Symbol.iterator](),Wl;!(OR=(Wl=Vl.next()).done);OR=!0)for(var pl=Wl.value,Dl=0;Dl<pl.length-1;Dl++)zG[VR].push({x1:pl[Dl][0],y1:1-pl[Dl][1],x2:pl[Dl+1][0],y2:1-pl[Dl+1][1]})}catch(aR){iU=!0,oR=aR}finally{try{!OR&&Vl.return!=null&&Vl.return()}finally{if(iU)throw oR}}};function Cl(){var VR=vV([`
22215
22215
  margin-top: 2px;
22216
22216
  padding: 4px;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@tscircuit/runframe",
3
3
  "main": "dist/index.js",
4
4
  "type": "module",
5
- "version": "0.0.7",
5
+ "version": "0.0.8",
6
6
  "scripts": {
7
7
  "start": "cosmos",
8
8
  "build": "bun run build:css && bun run build:standalone && bun run build:lib",
@@ -39,7 +39,7 @@
39
39
  "@radix-ui/react-dropdown-menu": "^2.1.2",
40
40
  "@radix-ui/react-icons": "^1.3.2",
41
41
  "@radix-ui/react-tabs": "^1.1.1",
42
- "@tscircuit/3d-viewer": "^0.0.54",
42
+ "@tscircuit/3d-viewer": "^0.0.58",
43
43
  "@tscircuit/eval-webworker": "^0.0.22",
44
44
  "@tscircuit/file-server": "^0.0.5",
45
45
  "@tscircuit/pcb-viewer": "^1.10.22",