@tscircuit/runframe 0.0.78 → 0.0.79
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/dist/standalone.min.js +1 -1
- package/package.json +2 -2
package/dist/standalone.min.js
CHANGED
|
@@ -22045,7 +22045,7 @@ void main() {
|
|
|
22045
22045
|
* Copyright 2010-2024 Three.js Authors
|
|
22046
22046
|
* SPDX-License-Identifier: MIT
|
|
22047
22047
|
*)
|
|
22048
|
-
*/const dist$4=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$4);var dist$3,hasRequiredDist$2;function requireDist$2(){if(hasRequiredDist$2)return dist$3;hasRequiredDist$2=1;var lV=Object.create,J=Object.defineProperty,VV=Object.getOwnPropertyDescriptor,RV=Object.getOwnPropertyNames,UV=Object.getPrototypeOf,ZV=Object.prototype.hasOwnProperty,WV=(ol,vl)=>{for(var wR in vl)J(ol,wR,{get:vl[wR],enumerable:!0})},IV=(ol,vl,wR,ZU)=>{if(vl&&typeof vl=="object"||typeof vl=="function")for(let tU of RV(vl))!ZV.call(ol,tU)&&tU!==wR&&J(ol,tU,{get:()=>vl[tU],enumerable:!(ZU=VV(vl,tU))||ZU.enumerable});return ol},dV=(ol,vl,wR)=>(wR=ol!=null?lV(UV(ol)):{},IV(!ol||!ol.__esModule?J(wR,"default",{value:ol,enumerable:!0}):wR,ol)),CV=ol=>IV(J({},"__esModule",{value:!0}),ol),FV={};WV(FV,{CadViewer:()=>$U,useExportGltfUrl:()=>JV,useSaveGltfAs:()=>eV}),dist$3=CV(FV);var NV=requireThreeStdlib(),gV=requireReact();function eV(ol={}){const vl=nV(ol),wR=(0,gV.useMemo)(()=>document.createElement("a"),[]),ZU=async yU=>{const XZ=yU??ol.filename??"";ol.binary==null&&(ol.binary=XZ.endsWith(".glb"));const mZ=await vl(tU);wR.download=XZ,wR.href=mZ,wR.dispatchEvent(new MouseEvent("click")),URL.revokeObjectURL(mZ)};(0,gV.useEffect)(()=>()=>{wR.remove(),tU=null},[]);let tU;return[(0,gV.useCallback)(yU=>{tU=yU},[]),ZU]}function JV(ol={}){const vl=nV(ol),[wR,ZU]=(0,gV.useState)(),[tU,uU]=(0,gV.useState)(),yU=(0,gV.useCallback)(XZ=>vl(XZ).then(ZU).catch(uU),[]);return(0,gV.useEffect)(()=>()=>URL.revokeObjectURL(wR),[wR]),[yU,wR,tU]}function nV(ol={}){const vl=(0,gV.useMemo)(()=>new NV.GLTFExporter,[]);return wR=>{const{promise:ZU,resolve:tU,reject:uU}=Promise.withResolvers();return vl.parse(wR,yU=>{const XZ=ol.binary?"gltf-binary":"gltf+json",mZ=new Blob([yU instanceof ArrayBuffer?yU:JSON.stringify(yU)],{type:`model/${XZ}`});tU(URL.createObjectURL(mZ))},uU,ol),ZU}}var aV=require$$2,GV=requireReact(),cV=(ol,vl)=>(0,GV.useMemo)(()=>{if(!ol)return;const wR=new aV.Circuit;return wR.add(ol),wR.render(),wR.getCircuitJson()},[ol]),TV=requireDist$6(),iV=requireReact(),tV=requireDist$6(),MV=requireTransforms(),AV=requirePrimitives(),pV=requireColors(),HV=requireBooleans(),oV=requirePrimitives(),DV=requireColors(),wV=requireBooleans(),qV=.01,dl={copper:[.9,.6,.2],fr4Green:[5/255,163/255,46/255],fr4GreenSolderWithMask:[0/255,152/255,19/255]},nl=(ol,vl)=>{if(ol.shape||(ol.shape="circle"),ol.shape==="circle")return(0,DV.colorize)(dl.copper,(0,wV.subtract)((0,wV.union)((0,oV.cylinder)({center:[ol.x,ol.y,0],radius:ol.hole_diameter/2,height:1.2}),(0,oV.cylinder)({center:[ol.x,ol.y,1.2/2],radius:ol.outer_diameter/2,height:qV}),(0,oV.cylinder)({center:[ol.x,ol.y,-1.2/2],radius:ol.outer_diameter/2,height:qV})),(0,oV.cylinder)({center:[ol.x,ol.y,0],radius:ol.hole_diameter/2-qV,height:1.5})));if(ol.shape==="pill"){const wR=ol.hole_height>ol.hole_width,ZU=wR?ol.hole_height:ol.hole_width,tU=wR?ol.hole_width:ol.hole_height,uU=wR?ol.outer_width||ZU+.2:ol.outer_height||tU+.2,yU=tU/2,XZ=Math.abs(ZU-tU),mZ=(0,oV.cuboid)({center:wR?[ol.x,ol.y,0]:[ol.x,ol.y,0],size:wR?[tU,XZ,1.2]:[XZ,tU,1.2]}),QZ=(0,oV.cylinder)({center:wR?[ol.x,ol.y-XZ/2,0]:[ol.x-XZ/2,ol.y,0],radius:yU,height:1.2}),ZW=(0,oV.cylinder)({center:wR?[ol.x,ol.y+XZ/2,0]:[ol.x+XZ/2,ol.y,0],radius:yU,height:1.2}),JW=(0,oV.cuboid)({center:wR?[ol.x,ol.y,1.2/2]:[ol.x,ol.y,1.2/2],size:wR?[uU,XZ,qV]:[XZ,uU,qV]}),IZ=(0,oV.cylinder)({center:wR?[ol.x,ol.y-XZ/2,1.2/2]:[ol.x-XZ/2,ol.y,1.2/2],radius:uU/2,height:qV}),MR=(0,oV.cylinder)({center:wR?[ol.x,ol.y+XZ/2,1.2/2]:[ol.x+XZ/2,ol.y,1.2/2],radius:uU/2,height:qV}),WU=(0,oV.cuboid)({center:wR?[ol.x,ol.y,-1.2/2]:[ol.x,ol.y,-1.2/2],size:wR?[uU,XZ,qV]:[XZ,uU,qV]}),MU=(0,oV.cylinder)({center:wR?[ol.x,ol.y-XZ/2,-1.2/2]:[ol.x-XZ/2,ol.y,-1.2/2],radius:uU/2,height:qV}),VZ=(0,oV.cylinder)({center:wR?[ol.x,ol.y+XZ/2,-1.2/2]:[ol.x+XZ/2,ol.y,-1.2/2],radius:uU/2,height:qV});return(0,DV.colorize)(dl.copper,(0,wV.subtract)((0,wV.union)(mZ,QZ,ZW,JW,IZ,MR,WU,MU,VZ),(0,wV.union)((0,oV.cuboid)({center:[ol.x,ol.y,0],size:wR?[tU-qV,XZ,1.5]:[XZ,tU-qV,1.5]}),(0,oV.cylinder)({center:wR?[ol.x,ol.y-XZ/2,0]:[ol.x-XZ/2,ol.y,0],radius:yU-qV,height:1.5}),(0,oV.cylinder)({center:wR?[ol.x,ol.y+XZ/2,0]:[ol.x+XZ/2,ol.y,0],radius:yU-qV,height:1.5}))))}else throw new Error(`Unsupported plated hole shape: ${ol.shape}`)},Il=requireExtrusions(),LV=requireExpansions(),OV=requireExtrusions(),$V=requirePrimitives(),Cl=requireTransforms(),Zl=ol=>{let vl=0;for(let ZU=0;ZU<ol.length;ZU++){const tU=(ZU+1)%ol.length;vl+=ol[ZU][0]*ol[tU][1],vl-=ol[tU][0]*ol[ZU][1]}return vl/2<=0},el=(ol,vl=1.2)=>{let wR=ol.map(uU=>[uU.x,uU.y]);Zl(wR)&&(wR=wR.reverse());const ZU=(0,$V.polygon)({points:wR});let tU=(0,OV.extrudeLinear)({height:vl},ZU);return tU=(0,Cl.translate)([0,0,-vl/2],tU),tU},pl=requireText();function ml(ol){var mZ,QZ,ZW,JW;const vl=(0,pl.vectorText)({height:ol.font_size,input:ol.text});vl.forEach(IZ=>{IZ.length===29?(vl.splice(vl.indexOf(IZ),1,IZ.slice(0,15)),vl.splice(vl.indexOf(IZ),0,IZ.slice(14,29))):IZ.length===17&&(vl.splice(vl.indexOf(IZ),1,IZ.slice(0,10)),vl.splice(vl.indexOf(IZ),0,IZ.slice(9,17)))});const wR=vl.flatMap(IZ=>IZ),ZU={minX:Math.min(...wR.map(IZ=>IZ[0])),maxX:Math.max(...wR.map(IZ=>IZ[0])),minY:Math.min(...wR.map(IZ=>IZ[1])),maxY:Math.max(...wR.map(IZ=>IZ[1]))},tU=(ZU.minX+ZU.maxX)/2,uU=(ZU.minY+ZU.maxY)/2;let yU=-tU,XZ=-uU;return(mZ=ol.anchor_alignment)!=null&&mZ.includes("right")?yU=-ZU.maxX:(QZ=ol.anchor_alignment)!=null&&QZ.includes("left")&&(yU=-ZU.minX),(ZW=ol.anchor_alignment)!=null&&ZW.includes("top")?XZ=-ZU.maxY:(JW=ol.anchor_alignment)!=null&&JW.includes("bottom")&&(XZ=-ZU.minY),{textOutlines:vl,xOffset:yU,yOffset:XZ}}var Bl=ol=>{const vl=(0,tV.su)(ol).pcb_board.list()[0];if(!vl)throw new Error("No pcb_board found");const wR=(0,tV.su)(ol).pcb_plated_hole.list(),ZU=(0,tV.su)(ol).pcb_hole.list(),tU=(0,tV.su)(ol).pcb_smtpad.list(),uU=(0,tV.su)(ol).pcb_trace.list(),yU=(0,tV.su)(ol).pcb_via.list(),XZ=(0,tV.su)(ol).pcb_silkscreen_text.list();let mZ;vl.outline&&vl.outline.length>0?mZ=el(vl.outline,1.2):mZ=(0,AV.cuboid)({size:[vl.width,vl.height,1.2]});const QZ=[],ZW=[],JW=[],IZ=WU=>{if(WU.shape==="circle"){const MU=(0,AV.cylinder)({center:[WU.x,WU.y,0],radius:WU.hole_diameter/2+qV});mZ=(0,HV.subtract)(mZ,MU);const VZ=nl(WU);QZ.push(VZ)}else if(WU.shape==="pill"){const MU=WU.hole_height>WU.hole_width,VZ=MU?WU.hole_height:WU.hole_width,GZ=MU?WU.hole_width:WU.hole_height,$Z=GZ/2,eW=Math.abs(VZ-GZ),iZ=(0,HV.union)((0,AV.cuboid)({center:[WU.x,WU.y,0],size:MU?[GZ,eW,1.5]:[eW,GZ,1.5]}),(0,AV.cylinder)({center:MU?[WU.x,WU.y-eW/2,0]:[WU.x-eW/2,WU.y,0],radius:$Z,height:1.5}),(0,AV.cylinder)({center:MU?[WU.x,WU.y+eW/2,0]:[WU.x+eW/2,WU.y,0],radius:$Z,height:1.5}));mZ=(0,HV.subtract)(mZ,iZ);const KU=nl(WU);QZ.push(KU)}};for(const WU of wR)IZ(WU);for(const WU of ZU)if(WU.hole_shape==="round"||WU.hole_shape==="circle"){const MU=(0,AV.cylinder)({center:[WU.x,WU.y,0],radius:WU.hole_diameter/2+qV});mZ=(0,HV.subtract)(mZ,MU)}for(const WU of tU){const MU=WU.layer==="bottom"?-1:1;if(WU.shape==="rect"){const VZ=(0,pV.colorize)(dl.copper,(0,AV.cuboid)({center:[WU.x,WU.y,MU*1.2/2+MU*qV],size:[WU.width,WU.height,qV]}));ZW.push(VZ)}else if(WU.shape==="circle"){const VZ=(0,pV.colorize)(dl.copper,(0,AV.cylinder)({center:[WU.x,WU.y,MU*1.2/2+MU*qV],radius:WU.radius,height:qV}));ZW.push(VZ)}}for(const{route:WU}of uU){if(WU.length<2)continue;const MU=[];let VZ=[WU[0]],GZ=WU[0].route_type==="wire"?WU[0].layer:"top";for(let $Z=1;$Z<WU.length;$Z++){const eW=WU[$Z];eW.route_type==="via"?(MU.push(VZ),VZ=[eW]):eW.route_type==="wire"&&eW.layer!==GZ?(MU.push(VZ),GZ=eW.layer,VZ=[eW]):VZ.push(eW)}MU.push(VZ);for(const $Z of MU){if($Z.length<2)continue;const eW=(0,AV.line)($Z.map(KZ=>[KZ.x,KZ.y])),iZ=$Z[0].route_type==="via"?$Z[0].to_layer==="top"?1:-1:$Z[0].layer==="top"?1:-1;let KU=(0,MV.translate)([0,0,iZ*1.2/2],(0,Il.extrudeLinear)({height:qV*iZ},(0,LV.expand)({delta:.1,corners:"edge"},eW)));const yZ=yU.map(KZ=>(0,AV.cylinder)({center:[KZ.x,KZ.y,0],radius:KZ.outer_diameter/2,height:5})),dW=wR.filter(KZ=>KZ.shape==="circle").map(KZ=>(0,AV.cylinder)({center:[KZ.x,KZ.y,0],radius:KZ.outer_diameter/2,height:5}));KU=(0,HV.subtract)(KU,...yZ,...dW),KU=(0,pV.colorize)(dl.fr4GreenSolderWithMask,KU),JW.push(KU)}}for(const WU of yU)IZ({x:WU.x,y:WU.y,hole_diameter:WU.hole_diameter,outer_diameter:WU.outer_diameter,shape:"circle",layers:["top","bottom"],type:"pcb_plated_hole",pcb_plated_hole_id:""});const MR=[];for(const WU of XZ){const{textOutlines:MU,xOffset:VZ,yOffset:GZ}=ml(WU);for(let $Z of MU){const eW=$Z.map(tW=>[tW[0]+VZ+WU.anchor_position.x,tW[1]+GZ+WU.anchor_position.y]),iZ=(0,AV.line)(eW),KU=WU.font_size||.25,yZ=Math.min(Math.max(.01,KU*.1),KU*.2),dW=(0,LV.expand)({delta:yZ,corners:"round"},iZ);let KZ=(0,MV.translate)([0,0,.6],(0,Il.extrudeLinear)({height:.012},dW));KZ=(0,pV.colorize)([256,256,256],KZ),MR.push(KZ)}}return mZ=(0,pV.colorize)(dl.fr4Green,mZ),[mZ,...QZ,...ZW,...JW,...MR]},jl=requireReact(),rl=dV(requireStlSerializer());function Pl(ol){return new Promise((vl,wR)=>{const ZU=new FileReader;ZU.onload=()=>{vl(ZU.result)},ZU.onerror=wR,ZU.readAsDataURL(ol)})}var Hl=ol=>{const[vl,wR]=(0,jl.useState)([]),[ZU,tU]=(0,jl.useState)(!0);return(0,jl.useEffect)(()=>{if(!ol)return;(async()=>{tU(!0);const XZ=(Array.isArray(ol)?ol:[ol]).map(async mZ=>{const QZ=rl.default.serialize({binary:!0},[mZ]),ZW=new Blob(QZ);return{stlUrl:await Pl(ZW),color:mZ.color}});try{const mZ=await Promise.all(XZ);wR(mZ)}catch(mZ){console.error("Error generating STLs:",mZ),wR([])}finally{tU(!1)}})()},[ol]),{stls:vl,loading:ZU}},Tl=require$$12,kl=requireReact(),Dl=requireThreeStdlib(),ZR=requireJsxRuntime();function JR({stlUrl:ol,mtlUrl:vl,color:wR,opacity:ZU=1}){const tU=(0,Tl.useLoader)(Dl.STLLoader,ol),uU=(0,kl.useRef)();return(0,ZR.jsxs)("mesh",{ref:uU,children:[(0,ZR.jsx)("primitive",{object:tU,attach:"geometry"}),(0,ZR.jsx)("meshStandardMaterial",{color:wR,transparent:ZU!==1,opacity:ZU})]})}var FR=require$$14,QR=require$$12,hR={name:"@tscircuit/3d-viewer",version:"0.0.87",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.257","@tscircuit/props":"^0.0.128","@tscircuit/react-fiber":"^1.1.29","@tscircuit/soup":"^0.0.69","@tscircuit/soup-util":"^0.0.26","@types/three":"^0.165.0","jscad-electronics":"^0.0.23","jscad-fiber":"^0.0.76","jscad-planner":"^0.0.11",react:"^18.3.1","react-dom":"^18.3.1","react-use-gesture":"^9.1.3",three:"^0.165.0","three-stdlib":"^2.30.3"},devDependencies:{"@biomejs/biome":"^1.8.3","@chromatic-com/storybook":"^1.5.0","@storybook/addon-essentials":"^8.4.7","@storybook/addon-interactions":"^8.4.7","@storybook/addon-links":"^8.4.7","@storybook/addon-onboarding":"^8.4.7","@storybook/blocks":"^8.4.7","@storybook/builder-vite":"^8.4.7","@storybook/react":"^8.4.7","@storybook/react-vite":"^8.4.7","@storybook/test":"^8.4.7","@types/react":"^18.3.3","@types/react-dom":"^18.3.0","@vitejs/plugin-react":"^4.3.4","circuit-json":"^0.0.116","circuit-to-svg":"^0.0.91",storybook:"^8.4.7","strip-ansi":"^7.1.0",tsup:"^8.1.0",typescript:"^5.7.2",vite:"^5.4.11","vite-tsconfig-paths":"^4.3.2"}},kR=require$$14,AR=require$$12,aR=requireReact(),TR=dV(requireThree()),xR=requireJsxRuntime();typeof window<"u"&&(window.TSCI_MAIN_CAMERA_ROTATION=new TR.Euler(0,0,0));function pR(ol,vl){const wR=new TR.Quaternion().setFromEuler(new TR.Euler(ol.x,ol.y,ol.z)),ZU=new TR.Vector3(0,0,1);return ZU.applyQuaternion(wR),ZU.multiplyScalar(vl)}var UU=({})=>{const ol=(0,aR.useRef)();return(0,aR.useRef)({lastRotation:new TR.Euler}),(0,AR.useFrame)((vl,wR)=>{if(!ol.current)return;const ZU=window.TSCI_MAIN_CAMERA_ROTATION,tU=pR(ZU,2);vl.camera.position.copy(tU),vl.camera.lookAt(0,0,0)}),(0,xR.jsxs)("mesh",{ref:ol,rotation:[Math.PI/2,0,0],children:[(0,xR.jsx)("boxGeometry",{args:[1,1,1]}),(0,xR.jsx)("meshStandardMaterial",{color:"white"}),(0,xR.jsx)(kR.Text,{position:[0,0,.51],fontSize:.25,color:"black",children:"Front"}),(0,xR.jsx)(kR.Text,{position:[0,0,-.51],fontSize:.25,color:"black",rotation:[0,Math.PI,0],children:"Back"}),(0,xR.jsx)(kR.Text,{position:[.51,0,0],fontSize:.25,color:"black",rotation:[0,Math.PI/2,0],children:"Right"}),(0,xR.jsx)(kR.Text,{position:[-.51,0,0],fontSize:.25,color:"black",rotation:[0,-Math.PI/2,0],children:"Left"}),(0,xR.jsx)(kR.Text,{position:[0,.51,0],fontSize:.25,color:"black",rotation:[-Math.PI/2,0,0],children:"Top"}),(0,xR.jsx)(kR.Text,{position:[0,-.51,0],fontSize:.25,color:"black",rotation:[Math.PI/2,0,0],children:"Bottom"}),(0,xR.jsx)("lineSegments",{args:[new TR.EdgesGeometry(new TR.BoxGeometry(1,1,1))],material:new TR.LineBasicMaterial({color:0,linewidth:2})})]})},SU=requireReact(),xU=require$$14,DR=requireJsxRuntime(),BR=()=>((0,QR.useFrame)(({camera:ol})=>{window.TSCI_MAIN_CAMERA_ROTATION=ol.rotation}),(0,DR.jsx)(DR.Fragment,{})),CU=(0,SU.forwardRef)(({children:ol,hoveredComponent:vl},wR)=>(0,DR.jsxs)("div",{style:{position:"relative",width:"100%",height:"100%"},children:[(0,DR.jsx)("div",{style:{position:"absolute",top:0,left:0,width:120,height:120},children:(0,DR.jsxs)(QR.Canvas,{camera:{up:[0,0,1],position:[1,1,1]},style:{zIndex:10},children:[(0,DR.jsx)("ambientLight",{intensity:Math.PI/2}),(0,DR.jsx)(UU,{})]})}),(0,DR.jsxs)(QR.Canvas,{scene:{up:[0,0,1]},camera:{up:[0,0,1],position:[5,5,5]},children:[(0,DR.jsx)(BR,{}),(0,DR.jsx)(FR.OrbitControls,{autoRotate:!0,autoRotateSpeed:1}),(0,DR.jsx)("ambientLight",{intensity:Math.PI/2}),(0,DR.jsx)("pointLight",{position:[-10,-10,10],decay:0,intensity:Math.PI/4}),(0,DR.jsx)(FR.Grid,{rotation:[Math.PI/2,0,0],infiniteGrid:!0,cellSize:1,sectionSize:10}),(0,DR.jsx)("object3D",{ref:wR,children:ol}),vl&&(0,DR.jsx)(xU.Html,{position:vl.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:vl.name})]}),(0,DR.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:["@",hR.version]})]})),bR=requireReact(),VR=dV(requireThree()),mR=requireJsxRuntime(),YR=ol=>(0,mR.jsx)("group",{...ol}),iR=({children:ol,isHovered:vl,onHover:wR,position:ZU})=>{const tU=(0,bR.useRef)(null),uU=(0,bR.useCallback)(XZ=>{XZ.stopPropagation();try{const mZ=XZ.point||(XZ.intersections&&XZ.intersections.length>0?XZ.intersections[0].point:null)||(ZU?new VR.Vector3(...ZU):null);mZ?(tU.current=mZ,wR({mousePosition:[mZ.x,mZ.y,mZ.z]})):wR({})}catch(mZ){console.warn("Hover event error:",mZ),wR({})}},[ZU]),yU=(0,bR.useCallback)(XZ=>{XZ.stopPropagation(),tU.current=null,wR(null)},[wR]);return(0,mR.jsx)(YR,{onPointerEnter:uU,onPointerMove:uU,onPointerLeave:yU,children:ol})},$R=iR,lU=requireReact(),hU=requireThreeStdlib();typeof window<"u"&&!window.TSCIRCUIT_OBJ_LOADER_CACHE&&(window.TSCIRCUIT_OBJ_LOADER_CACHE=new Map);function GR(ol){const[vl,wR]=(0,lU.useState)(null);return(0,lU.useEffect)(()=>{if(!ol)return;const ZU=window.TSCIRCUIT_OBJ_LOADER_CACHE;let tU=!1;async function uU(){var XZ;try{const QZ=await(await fetch(ol)).text(),ZW=(XZ=QZ.match(/newmtl[\s\S]*?endmtl/g))==null?void 0:XZ.join(`
|
|
22048
|
+
*/const dist$4=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$4);var dist$3,hasRequiredDist$2;function requireDist$2(){if(hasRequiredDist$2)return dist$3;hasRequiredDist$2=1;var lV=Object.create,J=Object.defineProperty,VV=Object.getOwnPropertyDescriptor,RV=Object.getOwnPropertyNames,UV=Object.getPrototypeOf,ZV=Object.prototype.hasOwnProperty,WV=(ol,vl)=>{for(var wR in vl)J(ol,wR,{get:vl[wR],enumerable:!0})},IV=(ol,vl,wR,ZU)=>{if(vl&&typeof vl=="object"||typeof vl=="function")for(let tU of RV(vl))!ZV.call(ol,tU)&&tU!==wR&&J(ol,tU,{get:()=>vl[tU],enumerable:!(ZU=VV(vl,tU))||ZU.enumerable});return ol},dV=(ol,vl,wR)=>(wR=ol!=null?lV(UV(ol)):{},IV(!ol||!ol.__esModule?J(wR,"default",{value:ol,enumerable:!0}):wR,ol)),CV=ol=>IV(J({},"__esModule",{value:!0}),ol),FV={};WV(FV,{CadViewer:()=>$U,useExportGltfUrl:()=>JV,useSaveGltfAs:()=>eV}),dist$3=CV(FV);var NV=requireThreeStdlib(),gV=requireReact();function eV(ol={}){const vl=nV(ol),wR=(0,gV.useMemo)(()=>document.createElement("a"),[]),ZU=async yU=>{const XZ=yU??ol.filename??"";ol.binary==null&&(ol.binary=XZ.endsWith(".glb"));const mZ=await vl(tU);wR.download=XZ,wR.href=mZ,wR.dispatchEvent(new MouseEvent("click")),URL.revokeObjectURL(mZ)};(0,gV.useEffect)(()=>()=>{wR.remove(),tU=null},[]);let tU;return[(0,gV.useCallback)(yU=>{tU=yU},[]),ZU]}function JV(ol={}){const vl=nV(ol),[wR,ZU]=(0,gV.useState)(),[tU,uU]=(0,gV.useState)(),yU=(0,gV.useCallback)(XZ=>vl(XZ).then(ZU).catch(uU),[]);return(0,gV.useEffect)(()=>()=>URL.revokeObjectURL(wR),[wR]),[yU,wR,tU]}function nV(ol={}){const vl=(0,gV.useMemo)(()=>new NV.GLTFExporter,[]);return wR=>{const{promise:ZU,resolve:tU,reject:uU}=Promise.withResolvers();return vl.parse(wR,yU=>{const XZ=ol.binary?"gltf-binary":"gltf+json",mZ=new Blob([yU instanceof ArrayBuffer?yU:JSON.stringify(yU)],{type:`model/${XZ}`});tU(URL.createObjectURL(mZ))},uU,ol),ZU}}var aV=require$$2,GV=requireReact(),cV=(ol,vl)=>(0,GV.useMemo)(()=>{if(!ol)return;const wR=new aV.Circuit;return wR.add(ol),wR.render(),wR.getCircuitJson()},[ol]),TV=requireDist$6(),iV=requireReact(),tV=requireDist$6(),MV=requireTransforms(),AV=requirePrimitives(),pV=requireColors(),HV=requireBooleans(),oV=requirePrimitives(),DV=requireColors(),wV=requireBooleans(),qV=.01,dl={copper:[.9,.6,.2],fr4Green:[5/255,163/255,46/255],fr4GreenSolderWithMask:[0/255,152/255,19/255]},nl=(ol,vl)=>{if(ol.shape||(ol.shape="circle"),ol.shape==="circle")return(0,DV.colorize)(dl.copper,(0,wV.subtract)((0,wV.union)((0,oV.cylinder)({center:[ol.x,ol.y,0],radius:ol.hole_diameter/2,height:1.2}),(0,oV.cylinder)({center:[ol.x,ol.y,1.2/2],radius:ol.outer_diameter/2,height:qV}),(0,oV.cylinder)({center:[ol.x,ol.y,-1.2/2],radius:ol.outer_diameter/2,height:qV})),(0,oV.cylinder)({center:[ol.x,ol.y,0],radius:ol.hole_diameter/2-qV,height:1.5})));if(ol.shape==="pill"){const wR=ol.hole_height>ol.hole_width,ZU=wR?ol.hole_height:ol.hole_width,tU=wR?ol.hole_width:ol.hole_height,uU=wR?ol.outer_width||ZU+.2:ol.outer_height||tU+.2,yU=tU/2,XZ=Math.abs(ZU-tU),mZ=(0,oV.cuboid)({center:wR?[ol.x,ol.y,0]:[ol.x,ol.y,0],size:wR?[tU,XZ,1.2]:[XZ,tU,1.2]}),QZ=(0,oV.cylinder)({center:wR?[ol.x,ol.y-XZ/2,0]:[ol.x-XZ/2,ol.y,0],radius:yU,height:1.2}),ZW=(0,oV.cylinder)({center:wR?[ol.x,ol.y+XZ/2,0]:[ol.x+XZ/2,ol.y,0],radius:yU,height:1.2}),JW=(0,oV.cuboid)({center:wR?[ol.x,ol.y,1.2/2]:[ol.x,ol.y,1.2/2],size:wR?[uU,XZ,qV]:[XZ,uU,qV]}),IZ=(0,oV.cylinder)({center:wR?[ol.x,ol.y-XZ/2,1.2/2]:[ol.x-XZ/2,ol.y,1.2/2],radius:uU/2,height:qV}),MR=(0,oV.cylinder)({center:wR?[ol.x,ol.y+XZ/2,1.2/2]:[ol.x+XZ/2,ol.y,1.2/2],radius:uU/2,height:qV}),WU=(0,oV.cuboid)({center:wR?[ol.x,ol.y,-1.2/2]:[ol.x,ol.y,-1.2/2],size:wR?[uU,XZ,qV]:[XZ,uU,qV]}),MU=(0,oV.cylinder)({center:wR?[ol.x,ol.y-XZ/2,-1.2/2]:[ol.x-XZ/2,ol.y,-1.2/2],radius:uU/2,height:qV}),VZ=(0,oV.cylinder)({center:wR?[ol.x,ol.y+XZ/2,-1.2/2]:[ol.x+XZ/2,ol.y,-1.2/2],radius:uU/2,height:qV});return(0,DV.colorize)(dl.copper,(0,wV.subtract)((0,wV.union)(mZ,QZ,ZW,JW,IZ,MR,WU,MU,VZ),(0,wV.union)((0,oV.cuboid)({center:[ol.x,ol.y,0],size:wR?[tU-qV,XZ,1.5]:[XZ,tU-qV,1.5]}),(0,oV.cylinder)({center:wR?[ol.x,ol.y-XZ/2,0]:[ol.x-XZ/2,ol.y,0],radius:yU-qV,height:1.5}),(0,oV.cylinder)({center:wR?[ol.x,ol.y+XZ/2,0]:[ol.x+XZ/2,ol.y,0],radius:yU-qV,height:1.5}))))}else throw new Error(`Unsupported plated hole shape: ${ol.shape}`)},Il=requireExtrusions(),LV=requireExpansions(),OV=requireExtrusions(),$V=requirePrimitives(),Cl=requireTransforms(),Zl=ol=>{let vl=0;for(let ZU=0;ZU<ol.length;ZU++){const tU=(ZU+1)%ol.length;vl+=ol[ZU][0]*ol[tU][1],vl-=ol[tU][0]*ol[ZU][1]}return vl/2<=0},el=(ol,vl=1.2)=>{let wR=ol.map(uU=>[uU.x,uU.y]);Zl(wR)&&(wR=wR.reverse());const ZU=(0,$V.polygon)({points:wR});let tU=(0,OV.extrudeLinear)({height:vl},ZU);return tU=(0,Cl.translate)([0,0,-vl/2],tU),tU},pl=requireText();function ml(ol){var mZ,QZ,ZW,JW;const vl=(0,pl.vectorText)({height:ol.font_size,input:ol.text});vl.forEach(IZ=>{IZ.length===29?(vl.splice(vl.indexOf(IZ),1,IZ.slice(0,15)),vl.splice(vl.indexOf(IZ),0,IZ.slice(14,29))):IZ.length===17&&(vl.splice(vl.indexOf(IZ),1,IZ.slice(0,10)),vl.splice(vl.indexOf(IZ),0,IZ.slice(9,17)))});const wR=vl.flatMap(IZ=>IZ),ZU={minX:Math.min(...wR.map(IZ=>IZ[0])),maxX:Math.max(...wR.map(IZ=>IZ[0])),minY:Math.min(...wR.map(IZ=>IZ[1])),maxY:Math.max(...wR.map(IZ=>IZ[1]))},tU=(ZU.minX+ZU.maxX)/2,uU=(ZU.minY+ZU.maxY)/2;let yU=-tU,XZ=-uU;return(mZ=ol.anchor_alignment)!=null&&mZ.includes("right")?yU=-ZU.maxX:(QZ=ol.anchor_alignment)!=null&&QZ.includes("left")&&(yU=-ZU.minX),(ZW=ol.anchor_alignment)!=null&&ZW.includes("top")?XZ=-ZU.maxY:(JW=ol.anchor_alignment)!=null&&JW.includes("bottom")&&(XZ=-ZU.minY),{textOutlines:vl,xOffset:yU,yOffset:XZ}}var Bl=ol=>{const vl=(0,tV.su)(ol).pcb_board.list()[0];if(!vl)throw new Error("No pcb_board found");const wR=(0,tV.su)(ol).pcb_plated_hole.list(),ZU=(0,tV.su)(ol).pcb_hole.list(),tU=(0,tV.su)(ol).pcb_smtpad.list(),uU=(0,tV.su)(ol).pcb_trace.list(),yU=(0,tV.su)(ol).pcb_via.list(),XZ=(0,tV.su)(ol).pcb_silkscreen_text.list();let mZ;vl.outline&&vl.outline.length>0?mZ=el(vl.outline,1.2):mZ=(0,AV.cuboid)({size:[vl.width,vl.height,1.2]});const QZ=[],ZW=[],JW=[],IZ=WU=>{if(WU.shape==="circle"){const MU=(0,AV.cylinder)({center:[WU.x,WU.y,0],radius:WU.hole_diameter/2+qV});mZ=(0,HV.subtract)(mZ,MU);const VZ=nl(WU);QZ.push(VZ)}else if(WU.shape==="pill"){const MU=WU.hole_height>WU.hole_width,VZ=MU?WU.hole_height:WU.hole_width,GZ=MU?WU.hole_width:WU.hole_height,$Z=GZ/2,eW=Math.abs(VZ-GZ),iZ=(0,HV.union)((0,AV.cuboid)({center:[WU.x,WU.y,0],size:MU?[GZ,eW,1.5]:[eW,GZ,1.5]}),(0,AV.cylinder)({center:MU?[WU.x,WU.y-eW/2,0]:[WU.x-eW/2,WU.y,0],radius:$Z,height:1.5}),(0,AV.cylinder)({center:MU?[WU.x,WU.y+eW/2,0]:[WU.x+eW/2,WU.y,0],radius:$Z,height:1.5}));mZ=(0,HV.subtract)(mZ,iZ);const KU=nl(WU);QZ.push(KU)}};for(const WU of wR)IZ(WU);for(const WU of ZU)if(WU.hole_shape==="round"||WU.hole_shape==="circle"){const MU=(0,AV.cylinder)({center:[WU.x,WU.y,0],radius:WU.hole_diameter/2+qV});mZ=(0,HV.subtract)(mZ,MU)}for(const WU of tU){const MU=WU.layer==="bottom"?-1:1;if(WU.shape==="rect"){const VZ=(0,pV.colorize)(dl.copper,(0,AV.cuboid)({center:[WU.x,WU.y,MU*1.2/2+MU*qV],size:[WU.width,WU.height,qV]}));ZW.push(VZ)}else if(WU.shape==="circle"){const VZ=(0,pV.colorize)(dl.copper,(0,AV.cylinder)({center:[WU.x,WU.y,MU*1.2/2+MU*qV],radius:WU.radius,height:qV}));ZW.push(VZ)}}for(const{route:WU}of uU){if(WU.length<2)continue;const MU=[];let VZ=[WU[0]],GZ=WU[0].route_type==="wire"?WU[0].layer:"top";for(let $Z=1;$Z<WU.length;$Z++){const eW=WU[$Z];eW.route_type==="via"?(MU.push(VZ),VZ=[eW]):eW.route_type==="wire"&&eW.layer!==GZ?(MU.push(VZ),GZ=eW.layer,VZ=[eW]):VZ.push(eW)}MU.push(VZ);for(const $Z of MU){if($Z.length<2)continue;const eW=(0,AV.line)($Z.map(KZ=>[KZ.x,KZ.y])),iZ=$Z[0].route_type==="via"?$Z[0].to_layer==="top"?1:-1:$Z[0].layer==="top"?1:-1;let KU=(0,MV.translate)([0,0,iZ*1.2/2],(0,Il.extrudeLinear)({height:qV*iZ},(0,LV.expand)({delta:.1,corners:"edge"},eW)));const yZ=yU.map(KZ=>(0,AV.cylinder)({center:[KZ.x,KZ.y,0],radius:KZ.outer_diameter/2,height:5})),dW=wR.filter(KZ=>KZ.shape==="circle").map(KZ=>(0,AV.cylinder)({center:[KZ.x,KZ.y,0],radius:KZ.outer_diameter/2,height:5}));KU=(0,HV.subtract)(KU,...yZ,...dW),KU=(0,pV.colorize)(dl.fr4GreenSolderWithMask,KU),JW.push(KU)}}for(const WU of yU)IZ({x:WU.x,y:WU.y,hole_diameter:WU.hole_diameter,outer_diameter:WU.outer_diameter,shape:"circle",layers:["top","bottom"],type:"pcb_plated_hole",pcb_plated_hole_id:""});const MR=[];for(const WU of XZ){const{textOutlines:MU,xOffset:VZ,yOffset:GZ}=ml(WU);for(let $Z of MU){const eW=$Z.map(tW=>[tW[0]+VZ+WU.anchor_position.x,tW[1]+GZ+WU.anchor_position.y]),iZ=(0,AV.line)(eW),KU=WU.font_size||.25,yZ=Math.min(Math.max(.01,KU*.1),KU*.2),dW=(0,LV.expand)({delta:yZ,corners:"round"},iZ);let KZ=(0,MV.translate)([0,0,.6],(0,Il.extrudeLinear)({height:.012},dW));KZ=(0,pV.colorize)([256,256,256],KZ),MR.push(KZ)}}return mZ=(0,pV.colorize)(dl.fr4Green,mZ),[mZ,...QZ,...ZW,...JW,...MR]},jl=requireReact(),rl=dV(requireStlSerializer());function Pl(ol){return new Promise((vl,wR)=>{const ZU=new FileReader;ZU.onload=()=>{vl(ZU.result)},ZU.onerror=wR,ZU.readAsDataURL(ol)})}var Hl=ol=>{const[vl,wR]=(0,jl.useState)([]),[ZU,tU]=(0,jl.useState)(!0);return(0,jl.useEffect)(()=>{if(!ol)return;(async()=>{tU(!0);const XZ=(Array.isArray(ol)?ol:[ol]).map(async mZ=>{const QZ=rl.default.serialize({binary:!0},[mZ]),ZW=new Blob(QZ);return{stlUrl:await Pl(ZW),color:mZ.color}});try{const mZ=await Promise.all(XZ);wR(mZ)}catch(mZ){console.error("Error generating STLs:",mZ),wR([])}finally{tU(!1)}})()},[ol]),{stls:vl,loading:ZU}},Tl=require$$12,kl=requireReact(),Dl=requireThreeStdlib(),ZR=requireJsxRuntime();function JR({stlUrl:ol,mtlUrl:vl,color:wR,opacity:ZU=1}){const tU=(0,Tl.useLoader)(Dl.STLLoader,ol),uU=(0,kl.useRef)();return(0,ZR.jsxs)("mesh",{ref:uU,children:[(0,ZR.jsx)("primitive",{object:tU,attach:"geometry"}),(0,ZR.jsx)("meshStandardMaterial",{color:wR,transparent:ZU!==1,opacity:ZU})]})}var FR=require$$14,QR=require$$12,hR={name:"@tscircuit/3d-viewer",version:"0.0.88",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.257","@tscircuit/props":"^0.0.129","@tscircuit/react-fiber":"^1.1.29","@tscircuit/soup":"^0.0.69","@tscircuit/soup-util":"^0.0.26","@types/three":"^0.165.0","jscad-electronics":"^0.0.23","jscad-fiber":"^0.0.76","jscad-planner":"^0.0.11",react:"^18.3.1","react-dom":"^18.3.1","react-use-gesture":"^9.1.3",three:"^0.165.0","three-stdlib":"^2.30.3"},devDependencies:{"@biomejs/biome":"^1.8.3","@chromatic-com/storybook":"^1.5.0","@storybook/addon-essentials":"^8.4.7","@storybook/addon-interactions":"^8.4.7","@storybook/addon-links":"^8.4.7","@storybook/addon-onboarding":"^8.4.7","@storybook/blocks":"^8.4.7","@storybook/builder-vite":"^8.4.7","@storybook/react":"^8.4.7","@storybook/react-vite":"^8.4.7","@storybook/test":"^8.4.7","@types/react":"^18.3.3","@types/react-dom":"^18.3.0","@vitejs/plugin-react":"^4.3.4","circuit-json":"^0.0.116","circuit-to-svg":"^0.0.91",storybook:"^8.4.7","strip-ansi":"^7.1.0",tsup:"^8.1.0",typescript:"^5.7.2",vite:"^5.4.11","vite-tsconfig-paths":"^4.3.2"}},kR=require$$14,AR=require$$12,aR=requireReact(),TR=dV(requireThree()),xR=requireJsxRuntime();typeof window<"u"&&(window.TSCI_MAIN_CAMERA_ROTATION=new TR.Euler(0,0,0));function pR(ol,vl){const wR=new TR.Quaternion().setFromEuler(new TR.Euler(ol.x,ol.y,ol.z)),ZU=new TR.Vector3(0,0,1);return ZU.applyQuaternion(wR),ZU.multiplyScalar(vl)}var UU=({})=>{const ol=(0,aR.useRef)();return(0,aR.useRef)({lastRotation:new TR.Euler}),(0,AR.useFrame)((vl,wR)=>{if(!ol.current)return;const ZU=window.TSCI_MAIN_CAMERA_ROTATION,tU=pR(ZU,2);vl.camera.position.copy(tU),vl.camera.lookAt(0,0,0)}),(0,xR.jsxs)("mesh",{ref:ol,rotation:[Math.PI/2,0,0],children:[(0,xR.jsx)("boxGeometry",{args:[1,1,1]}),(0,xR.jsx)("meshStandardMaterial",{color:"white"}),(0,xR.jsx)(kR.Text,{position:[0,0,.51],fontSize:.25,color:"black",children:"Front"}),(0,xR.jsx)(kR.Text,{position:[0,0,-.51],fontSize:.25,color:"black",rotation:[0,Math.PI,0],children:"Back"}),(0,xR.jsx)(kR.Text,{position:[.51,0,0],fontSize:.25,color:"black",rotation:[0,Math.PI/2,0],children:"Right"}),(0,xR.jsx)(kR.Text,{position:[-.51,0,0],fontSize:.25,color:"black",rotation:[0,-Math.PI/2,0],children:"Left"}),(0,xR.jsx)(kR.Text,{position:[0,.51,0],fontSize:.25,color:"black",rotation:[-Math.PI/2,0,0],children:"Top"}),(0,xR.jsx)(kR.Text,{position:[0,-.51,0],fontSize:.25,color:"black",rotation:[Math.PI/2,0,0],children:"Bottom"}),(0,xR.jsx)("lineSegments",{args:[new TR.EdgesGeometry(new TR.BoxGeometry(1,1,1))],material:new TR.LineBasicMaterial({color:0,linewidth:2})})]})},SU=requireReact(),xU=require$$14,DR=requireJsxRuntime(),BR=()=>((0,QR.useFrame)(({camera:ol})=>{window.TSCI_MAIN_CAMERA_ROTATION=ol.rotation}),(0,DR.jsx)(DR.Fragment,{})),CU=(0,SU.forwardRef)(({children:ol,hoveredComponent:vl},wR)=>(0,DR.jsxs)("div",{style:{position:"relative",width:"100%",height:"100%"},children:[(0,DR.jsx)("div",{style:{position:"absolute",top:0,left:0,width:120,height:120},children:(0,DR.jsxs)(QR.Canvas,{camera:{up:[0,0,1],position:[1,1,1]},style:{zIndex:10},children:[(0,DR.jsx)("ambientLight",{intensity:Math.PI/2}),(0,DR.jsx)(UU,{})]})}),(0,DR.jsxs)(QR.Canvas,{scene:{up:[0,0,1]},camera:{up:[0,0,1],position:[5,5,5]},children:[(0,DR.jsx)(BR,{}),(0,DR.jsx)(FR.OrbitControls,{autoRotate:!0,autoRotateSpeed:1}),(0,DR.jsx)("ambientLight",{intensity:Math.PI/2}),(0,DR.jsx)("pointLight",{position:[-10,-10,10],decay:0,intensity:Math.PI/4}),(0,DR.jsx)(FR.Grid,{rotation:[Math.PI/2,0,0],infiniteGrid:!0,cellSize:1,sectionSize:10}),(0,DR.jsx)("object3D",{ref:wR,children:ol}),vl&&(0,DR.jsx)(xU.Html,{position:vl.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:vl.name})]}),(0,DR.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:["@",hR.version]})]})),bR=requireReact(),VR=dV(requireThree()),mR=requireJsxRuntime(),YR=ol=>(0,mR.jsx)("group",{...ol}),iR=({children:ol,isHovered:vl,onHover:wR,position:ZU})=>{const tU=(0,bR.useRef)(null),uU=(0,bR.useCallback)(XZ=>{XZ.stopPropagation();try{const mZ=XZ.point||(XZ.intersections&&XZ.intersections.length>0?XZ.intersections[0].point:null)||(ZU?new VR.Vector3(...ZU):null);mZ?(tU.current=mZ,wR({mousePosition:[mZ.x,mZ.y,mZ.z]})):wR({})}catch(mZ){console.warn("Hover event error:",mZ),wR({})}},[ZU]),yU=(0,bR.useCallback)(XZ=>{XZ.stopPropagation(),tU.current=null,wR(null)},[wR]);return(0,mR.jsx)(YR,{onPointerEnter:uU,onPointerMove:uU,onPointerLeave:yU,children:ol})},$R=iR,lU=requireReact(),hU=requireThreeStdlib();typeof window<"u"&&!window.TSCIRCUIT_OBJ_LOADER_CACHE&&(window.TSCIRCUIT_OBJ_LOADER_CACHE=new Map);function GR(ol){const[vl,wR]=(0,lU.useState)(null);return(0,lU.useEffect)(()=>{if(!ol)return;const ZU=window.TSCIRCUIT_OBJ_LOADER_CACHE;let tU=!1;async function uU(){var XZ;try{const QZ=await(await fetch(ol)).text(),ZW=(XZ=QZ.match(/newmtl[\s\S]*?endmtl/g))==null?void 0:XZ.join(`
|
|
22049
22049
|
`).replace(/d 0\./g,"d 1."),JW=QZ.replace(/newmtl[\s\S]*?endmtl/g,""),IZ=new hU.MTLLoader;IZ.setMaterialOptions({invertTrProperty:!0});const MR=IZ.parse(ZW.replace(/Kd\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)/g,"Kd $2 $2 $2"),"test.mtl"),WU=new hU.OBJLoader;return WU.setMaterials(MR),WU.parse(JW)}catch(mZ){return mZ}}function yU(){if(ZU.has(ol)){const mZ=ZU.get(ol);return mZ.result?Promise.resolve(mZ.result.clone()):mZ.promise.then(QZ=>QZ.clone())}const XZ=uU().then(mZ=>(mZ instanceof Error||ZU.set(ol,{...ZU.get(ol),result:mZ}),mZ));return ZU.set(ol,{promise:XZ,result:null}),XZ}return yU().then(XZ=>{tU||wR(XZ)}).catch(XZ=>{console.error(XZ)}),()=>{tU=!0}},[ol]),vl}var IU=requireJsxRuntime();function FU({url:ol,position:vl,rotation:wR,onHover:ZU,isHovered:tU}){const uU=GR(ol);return uU?uU instanceof Error?(0,IU.jsx)($R,{isHovered:tU,onHover:ZU,children:(0,IU.jsxs)("mesh",{position:vl,children:[(0,IU.jsx)("boxGeometry",{args:[.5,.5,.5]}),(0,IU.jsx)("meshStandardMaterial",{transparent:!0,color:"red",opacity:.5}),(0,IU.jsx)("meshBasicMaterial",{color:"red"})]})}):(0,IU.jsx)($R,{isHovered:tU,onHover:ZU,children:(0,IU.jsx)("primitive",{rotation:wR,position:vl,object:uU})}):(0,IU.jsx)($R,{isHovered:tU,onHover:ZU,children:(0,IU.jsxs)("mesh",{position:vl,children:[(0,IU.jsx)("boxGeometry",{args:[.5,.5,.5]}),(0,IU.jsx)("meshStandardMaterial",{transparent:!0,color:"red",opacity:.25})]})})}var PU=requireDist$5(),hZ=dV(requireSrc$1()),zZ=requireDist$4(),jZ=dV(requireThree()),DZ=requireReact(),kW=requireJsxRuntime(),fU=({jscadPlan:ol,positionOffset:vl,rotationOffset:wR,onHover:ZU,isHovered:tU})=>{const{threeGeom:uU,material:yU}=(0,DZ.useMemo)(()=>{const XZ=(0,PU.executeJscadOperations)(hZ.default,ol),mZ=(0,zZ.convertCSGToThreeGeom)(XZ),QZ=new jZ.MeshStandardMaterial({vertexColors:!0,side:jZ.DoubleSide});return{threeGeom:mZ,material:QZ}},[ol]);return(0,DZ.useMemo)(()=>{if(tU){const XZ=new jZ.Color(yU.color.getHex());yU.emissive.copy(XZ),yU.emissive.setRGB(0,0,1),yU.emissiveIntensity=.2}else yU.emissiveIntensity=0},[tU,yU]),uU?(0,kW.jsx)($R,{isHovered:tU,onHover:ZU,position:vl,children:(0,kW.jsx)("mesh",{geometry:uU,material:yU,position:vl,rotation:wR})}):null},nW=require$$19,NW=requireDist$4(),cW=requireDist$5(),DW=requireReact(),HW=requireJsxRuntime(),{createJSCADRoot:FZ}=(0,NW.createJSCADRenderer)(cW.jscadPlanner),CW=({positionOffset:ol,footprint:vl,rotationOffset:wR,onHover:ZU,isHovered:tU})=>{const uU=(0,DW.useMemo)(()=>{if(!vl)return null;const yU=[];return FZ(yU).render((0,HW.jsx)(nW.Footprinter3d,{footprint:vl})),yU},[vl]);return uU?(0,HW.jsx)(HW.Fragment,{children:uU.map((yU,XZ)=>(0,HW.jsx)(fU,{positionOffset:ol,rotationOffset:wR,jscadPlan:yU,onHover:ZU,isHovered:tU},XZ))}):null},gW=(...ol)=>ol,TW=requireJsxRuntime(),pW=({cad_component:ol,onHover:vl=()=>{},isHovered:wR=!1})=>{const ZU=ol.model_obj_url??ol.model_stl_url,tU=ol.rotation?gW(ol.rotation.x*Math.PI/180,ol.rotation.y*Math.PI/180,ol.rotation.z*Math.PI/180):void 0;if(ZU)return(0,TW.jsx)(FU,{url:ZU,position:ol.position?[ol.position.x,ol.position.y,ol.position.z]:void 0,rotation:tU,onHover:vl,isHovered:wR},ol.cad_component_id);if(ol.model_jscad)return(0,TW.jsx)(fU,{jscadPlan:ol.model_jscad,rotationOffset:tU,onHover:vl,isHovered:wR},ol.cad_component_id);if(ol.footprinter_string)return(0,TW.jsx)(CW,{positionOffset:ol.position?[ol.position.x,ol.position.y,ol.position.z]:void 0,rotationOffset:tU,footprint:ol.footprinter_string,onHover:vl,isHovered:wR})},lZ=dV(requireReact()),wU=class extends lZ.default.Component{constructor(ol){super(ol),this.state={hasError:!1,error:null}}static getDerivedStateFromError(ol){return{hasError:!0,error:ol}}render(){return this.state.hasError&&this.state.error?this.props.fallback({error:this.state.error}):this.props.children}},LR=require$$14,TU=requireJsxRuntime(),vR=({error:ol,cad_component:vl})=>{let wR=[0,0,0];return vl!=null&&vl.position&&(wR=[vl.position.x,vl.position.y,vl.position.z],wR=wR.map(ZU=>Number.isNaN(ZU)?0:ZU)),(0,TU.jsxs)("group",{position:wR,children:[(0,TU.jsxs)("mesh",{renderOrder:-99999,rotation:[Math.PI/4,Math.PI/4,0],ref:ZU=>{ZU&&(ZU.renderOrder=999999)},children:[(0,TU.jsx)("boxGeometry",{args:[.5,.5,.5]}),(0,TU.jsx)("meshStandardMaterial",{depthTest:!1,transparent:!0,color:"red",opacity:.5})]}),(0,TU.jsxs)(LR.Text,{scale:[.1,.1,.1],color:"red",anchorX:"center",anchorY:"middle",depthOffset:-99999,children:[ol.toString().slice(0,50),"..."]})]})},DU=requireJsxRuntime(),$U=(0,iV.forwardRef)(({soup:ol,children:vl},wR)=>{const[ZU,tU]=(0,iV.useState)(null);if(ol??(ol=cV(vl)),!ol)return null;const uU=(0,iV.useMemo)(()=>ol.some(QZ=>QZ.type==="pcb_board")?Bl(ol):null,[ol]),{stls:yU,loading:XZ}=Hl(uU),mZ=(0,TV.su)(ol).cad_component.list();return(0,DU.jsxs)(CU,{ref:wR,hoveredComponent:ZU,children:[yU.map(({stlUrl:QZ,color:ZW},JW)=>(0,DU.jsx)(JR,{stlUrl:QZ,color:ZW,opacity:JW===0?.95:1},QZ)),mZ.map(QZ=>(0,DU.jsx)(wU,{fallback:({error:ZW})=>(0,DU.jsx)(vR,{cad_component:QZ,error:ZW}),children:(0,DU.jsx)(pW,{onHover:ZW=>{var IZ;if(ZW||tU(null),!ZW.mousePosition)return;const JW=(IZ=(0,TV.su)(ol).source_component.getUsing({source_component_id:QZ.source_component_id}))==null?void 0:IZ.name;tU({cad_component_id:QZ.cad_component_id,name:JW??"<unknown>",mousePosition:ZW.mousePosition})},cad_component:QZ,isHovered:(ZU==null?void 0:ZU.cad_component_id)===QZ.cad_component_id},QZ.cad_component_id)},QZ.cad_component_id))]})});return dist$3}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(Bl){return Bl&&typeof Bl=="object"&&"default"in Bl?Bl:{default:Bl}}var RV=VV(lV),UV=VV(J);const ZV=Bl=>typeof Bl=="number"&&!isNaN(Bl),WV=Bl=>typeof Bl=="string",IV=Bl=>typeof Bl=="function",dV=Bl=>WV(Bl)||IV(Bl)?Bl:null,CV=Bl=>lV.isValidElement(Bl)||WV(Bl)||IV(Bl)||ZV(Bl);function FV(Bl,jl,rl){rl===void 0&&(rl=300);const{scrollHeight:Pl,style:Hl}=Bl;requestAnimationFrame(()=>{Hl.minHeight="initial",Hl.height=Pl+"px",Hl.transition=`all ${rl}ms`,requestAnimationFrame(()=>{Hl.height="0",Hl.padding="0",Hl.margin="0",setTimeout(jl,rl)})})}function NV(Bl){let{enter:jl,exit:rl,appendPosition:Pl=!1,collapse:Hl=!0,collapseDuration:Tl=300}=Bl;return function(kl){let{children:Dl,position:ZR,preventExitTransition:JR,done:FR,nodeRef:QR,isIn:hR,playToast:kR}=kl;const AR=Pl?`${jl}--${ZR}`:jl,aR=Pl?`${rl}--${ZR}`:rl,TR=lV.useRef(0);return lV.useLayoutEffect(()=>{const xR=QR.current,pR=AR.split(" "),UU=SU=>{SU.target===QR.current&&(kR(),xR.removeEventListener("animationend",UU),xR.removeEventListener("animationcancel",UU),TR.current===0&&SU.type!=="animationcancel"&&xR.classList.remove(...pR))};xR.classList.add(...pR),xR.addEventListener("animationend",UU),xR.addEventListener("animationcancel",UU)},[]),lV.useEffect(()=>{const xR=QR.current,pR=()=>{xR.removeEventListener("animationend",pR),Hl?FV(xR,FR,Tl):FR()};hR||(JR?pR():(TR.current=1,xR.className+=` ${aR}`,xR.addEventListener("animationend",pR)))},[hR]),RV.default.createElement(RV.default.Fragment,null,Dl)}}function gV(Bl,jl){return Bl!=null?{content:Bl.content,containerId:Bl.props.containerId,id:Bl.props.toastId,theme:Bl.props.theme,type:Bl.props.type,data:Bl.props.data||{},isLoading:Bl.props.isLoading,icon:Bl.props.icon,status:jl}:{}}const eV=new Map;let JV=[];const nV=new Set,aV=Bl=>nV.forEach(jl=>jl(Bl)),GV=()=>eV.size>0;function cV(Bl,jl){var rl;if(jl)return!((rl=eV.get(jl))==null||!rl.isToastActive(Bl));let Pl=!1;return eV.forEach(Hl=>{Hl.isToastActive(Bl)&&(Pl=!0)}),Pl}function TV(Bl,jl){CV(Bl)&&(GV()||JV.push({content:Bl,options:jl}),eV.forEach(rl=>{rl.buildToast(Bl,jl)}))}function iV(Bl,jl){eV.forEach(rl=>{jl!=null&&jl!=null&&jl.containerId?(jl==null?void 0:jl.containerId)===rl.id&&rl.toggle(Bl,jl==null?void 0:jl.id):rl.toggle(Bl,jl==null?void 0:jl.id)})}function tV(Bl){const{subscribe:jl,getSnapshot:rl,setProps:Pl}=lV.useRef(function(Tl){const kl=Tl.containerId||1;return{subscribe(Dl){const ZR=function(FR,QR,hR){let kR=1,AR=0,aR=[],TR=[],xR=[],pR=QR;const UU=new Map,SU=new Set,xU=()=>{xR=Array.from(UU.values()),SU.forEach(CU=>CU())},DR=CU=>{TR=CU==null?[]:TR.filter(bR=>bR!==CU),xU()},BR=CU=>{const{toastId:bR,onOpen:VR,updateId:mR,children:YR}=CU.props,iR=mR==null;CU.staleId&&UU.delete(CU.staleId),UU.set(bR,CU),TR=[...TR,CU.props.toastId].filter($R=>$R!==CU.staleId),xU(),hR(gV(CU,iR?"added":"updated")),iR&&IV(VR)&&VR(lV.isValidElement(YR)&&YR.props)};return{id:FR,props:pR,observe:CU=>(SU.add(CU),()=>SU.delete(CU)),toggle:(CU,bR)=>{UU.forEach(VR=>{bR!=null&&bR!==VR.props.toastId||IV(VR.toggle)&&VR.toggle(CU)})},removeToast:DR,toasts:UU,clearQueue:()=>{AR-=aR.length,aR=[]},buildToast:(CU,bR)=>{if((zZ=>{let{containerId:jZ,toastId:DZ,updateId:kW}=zZ;const fU=jZ?jZ!==FR:FR!==1,nW=UU.has(DZ)&&kW==null;return fU||nW})(bR))return;const{toastId:VR,updateId:mR,data:YR,staleId:iR,delay:$R}=bR,lU=()=>{DR(VR)},hU=mR==null;hU&&AR++;const GR={...pR,style:pR.toastStyle,key:kR++,...Object.fromEntries(Object.entries(bR).filter(zZ=>{let[jZ,DZ]=zZ;return DZ!=null})),toastId:VR,updateId:mR,data:YR,closeToast:lU,isIn:!1,className:dV(bR.className||pR.toastClassName),bodyClassName:dV(bR.bodyClassName||pR.bodyClassName),progressClassName:dV(bR.progressClassName||pR.progressClassName),autoClose:!bR.isLoading&&(IU=bR.autoClose,FU=pR.autoClose,IU===!1||ZV(IU)&&IU>0?IU:FU),deleteToast(){const zZ=UU.get(VR),{onClose:jZ,children:DZ}=zZ.props;IV(jZ)&&jZ(lV.isValidElement(DZ)&&DZ.props),hR(gV(zZ,"removed")),UU.delete(VR),AR--,AR<0&&(AR=0),aR.length>0?BR(aR.shift()):xU()}};var IU,FU;GR.closeButton=pR.closeButton,bR.closeButton===!1||CV(bR.closeButton)?GR.closeButton=bR.closeButton:bR.closeButton===!0&&(GR.closeButton=!CV(pR.closeButton)||pR.closeButton);let PU=CU;lV.isValidElement(CU)&&!WV(CU.type)?PU=lV.cloneElement(CU,{closeToast:lU,toastProps:GR,data:YR}):IV(CU)&&(PU=CU({closeToast:lU,toastProps:GR,data:YR}));const hZ={content:PU,props:GR,staleId:iR};pR.limit&&pR.limit>0&&AR>pR.limit&&hU?aR.push(hZ):ZV($R)?setTimeout(()=>{BR(hZ)},$R):BR(hZ)},setProps(CU){pR=CU},setToggle:(CU,bR)=>{UU.get(CU).toggle=bR},isToastActive:CU=>TR.some(bR=>bR===CU),getSnapshot:()=>xR}}(kl,Tl,aV);eV.set(kl,ZR);const JR=ZR.observe(Dl);return JV.forEach(FR=>TV(FR.content,FR.options)),JV=[],()=>{JR(),eV.delete(kl)}},setProps(Dl){var ZR;(ZR=eV.get(kl))==null||ZR.setProps(Dl)},getSnapshot(){var Dl;return(Dl=eV.get(kl))==null?void 0:Dl.getSnapshot()}}}(Bl)).current;Pl(Bl);const Hl=lV.useSyncExternalStore(jl,rl,rl);return{getToastToRender:function(Tl){if(!Hl)return[];const kl=new Map;return Bl.newestOnTop&&Hl.reverse(),Hl.forEach(Dl=>{const{position:ZR}=Dl.props;kl.has(ZR)||kl.set(ZR,[]),kl.get(ZR).push(Dl)}),Array.from(kl,Dl=>Tl(Dl[0],Dl[1]))},isToastActive:cV,count:Hl==null?void 0:Hl.length}}function MV(Bl){const[jl,rl]=lV.useState(!1),[Pl,Hl]=lV.useState(!1),Tl=lV.useRef(null),kl=lV.useRef({start:0,delta:0,removalDistance:0,canCloseOnClick:!0,canDrag:!1,didMove:!1}).current,{autoClose:Dl,pauseOnHover:ZR,closeToast:JR,onClick:FR,closeOnClick:QR}=Bl;var hR,kR;function AR(){rl(!0)}function aR(){rl(!1)}function TR(UU){const SU=Tl.current;kl.canDrag&&SU&&(kl.didMove=!0,jl&&aR(),kl.delta=Bl.draggableDirection==="x"?UU.clientX-kl.start:UU.clientY-kl.start,kl.start!==UU.clientX&&(kl.canCloseOnClick=!1),SU.style.transform=`translate3d(${Bl.draggableDirection==="x"?`${kl.delta}px, var(--y)`:`0, calc(${kl.delta}px + var(--y))`},0)`,SU.style.opacity=""+(1-Math.abs(kl.delta/kl.removalDistance)))}function xR(){document.removeEventListener("pointermove",TR),document.removeEventListener("pointerup",xR);const UU=Tl.current;if(kl.canDrag&&kl.didMove&&UU){if(kl.canDrag=!1,Math.abs(kl.delta)>kl.removalDistance)return Hl(!0),Bl.closeToast(),void Bl.collapseAll();UU.style.transition="transform 0.2s, opacity 0.2s",UU.style.removeProperty("transform"),UU.style.removeProperty("opacity")}}(kR=eV.get((hR={id:Bl.toastId,containerId:Bl.containerId,fn:rl}).containerId||1))==null||kR.setToggle(hR.id,hR.fn),lV.useEffect(()=>{if(Bl.pauseOnFocusLoss)return document.hasFocus()||aR(),window.addEventListener("focus",AR),window.addEventListener("blur",aR),()=>{window.removeEventListener("focus",AR),window.removeEventListener("blur",aR)}},[Bl.pauseOnFocusLoss]);const pR={onPointerDown:function(UU){if(Bl.draggable===!0||Bl.draggable===UU.pointerType){kl.didMove=!1,document.addEventListener("pointermove",TR),document.addEventListener("pointerup",xR);const SU=Tl.current;kl.canCloseOnClick=!0,kl.canDrag=!0,SU.style.transition="none",Bl.draggableDirection==="x"?(kl.start=UU.clientX,kl.removalDistance=SU.offsetWidth*(Bl.draggablePercent/100)):(kl.start=UU.clientY,kl.removalDistance=SU.offsetHeight*(Bl.draggablePercent===80?1.5*Bl.draggablePercent:Bl.draggablePercent)/100)}},onPointerUp:function(UU){const{top:SU,bottom:xU,left:DR,right:BR}=Tl.current.getBoundingClientRect();UU.nativeEvent.type!=="touchend"&&Bl.pauseOnHover&&UU.clientX>=DR&&UU.clientX<=BR&&UU.clientY>=SU&&UU.clientY<=xU?aR():AR()}};return Dl&&ZR&&(pR.onMouseEnter=aR,Bl.stacked||(pR.onMouseLeave=AR)),QR&&(pR.onClick=UU=>{FR&&FR(UU),kl.canCloseOnClick&&JR()}),{playToast:AR,pauseToast:aR,isRunning:jl,preventExitTransition:Pl,toastRef:Tl,eventHandlers:pR}}function AV(Bl){let{delay:jl,isRunning:rl,closeToast:Pl,type:Hl="default",hide:Tl,className:kl,style:Dl,controlledProgress:ZR,progress:JR,rtl:FR,isIn:QR,theme:hR}=Bl;const kR=Tl||ZR&&JR===0,AR={...Dl,animationDuration:`${jl}ms`,animationPlayState:rl?"running":"paused"};ZR&&(AR.transform=`scaleX(${JR})`);const aR=UV.default("Toastify__progress-bar",ZR?"Toastify__progress-bar--controlled":"Toastify__progress-bar--animated",`Toastify__progress-bar-theme--${hR}`,`Toastify__progress-bar--${Hl}`,{"Toastify__progress-bar--rtl":FR}),TR=IV(kl)?kl({rtl:FR,type:Hl,defaultClassName:aR}):UV.default(aR,kl),xR={[ZR&&JR>=1?"onTransitionEnd":"onAnimationEnd"]:ZR&&JR<1?null:()=>{QR&&Pl()}};return RV.default.createElement("div",{className:"Toastify__progress-bar--wrp","data-hidden":kR},RV.default.createElement("div",{className:`Toastify__progress-bar--bg Toastify__progress-bar-theme--${hR} Toastify__progress-bar--${Hl}`}),RV.default.createElement("div",{role:"progressbar","aria-hidden":kR?"true":"false","aria-label":"notification timer",className:TR,style:AR,...xR}))}let pV=1;const HV=()=>""+pV++;function oV(Bl){return Bl&&(WV(Bl.toastId)||ZV(Bl.toastId))?Bl.toastId:HV()}function DV(Bl,jl){return TV(Bl,jl),jl.toastId}function wV(Bl,jl){return{...jl,type:jl&&jl.type||Bl,toastId:oV(jl)}}function qV(Bl){return(jl,rl)=>DV(jl,wV(Bl,rl))}function dl(Bl,jl){return DV(Bl,wV("default",jl))}dl.loading=(Bl,jl)=>DV(Bl,wV("default",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...jl})),dl.promise=function(Bl,jl,rl){let Pl,{pending:Hl,error:Tl,success:kl}=jl;Hl&&(Pl=WV(Hl)?dl.loading(Hl,rl):dl.loading(Hl.render,{...rl,...Hl}));const Dl={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},ZR=(FR,QR,hR)=>{if(QR==null)return void dl.dismiss(Pl);const kR={type:FR,...Dl,...rl,data:hR},AR=WV(QR)?{render:QR}:QR;return Pl?dl.update(Pl,{...kR,...AR}):dl(AR.render,{...kR,...AR}),hR},JR=IV(Bl)?Bl():Bl;return JR.then(FR=>ZR("success",kl,FR)).catch(FR=>ZR("error",Tl,FR)),JR},dl.success=qV("success"),dl.info=qV("info"),dl.error=qV("error"),dl.warning=qV("warning"),dl.warn=dl.warning,dl.dark=(Bl,jl)=>DV(Bl,wV("default",{theme:"dark",...jl})),dl.dismiss=function(Bl){(function(jl){var rl;if(GV()){if(jl==null||WV(rl=jl)||ZV(rl))eV.forEach(Pl=>{Pl.removeToast(jl)});else if(jl&&("containerId"in jl||"id"in jl)){const Pl=eV.get(jl.containerId);Pl?Pl.removeToast(jl.id):eV.forEach(Hl=>{Hl.removeToast(jl.id)})}}else JV=JV.filter(Pl=>jl!=null&&Pl.options.toastId!==jl)})(Bl)},dl.clearWaitingQueue=function(Bl){Bl===void 0&&(Bl={}),eV.forEach(jl=>{!jl.props.limit||Bl.containerId&&jl.id!==Bl.containerId||jl.clearQueue()})},dl.isActive=cV,dl.update=function(Bl,jl){jl===void 0&&(jl={});const rl=((Pl,Hl)=>{var Tl;let{containerId:kl}=Hl;return(Tl=eV.get(kl||1))==null?void 0:Tl.toasts.get(Pl)})(Bl,jl);if(rl){const{props:Pl,content:Hl}=rl,Tl={delay:100,...Pl,...jl,toastId:jl.toastId||Bl,updateId:HV()};Tl.toastId!==Bl&&(Tl.staleId=Bl);const kl=Tl.render||Hl;delete Tl.render,DV(kl,Tl)}},dl.done=Bl=>{dl.update(Bl,{progress:1})},dl.onChange=function(Bl){return nV.add(Bl),()=>{nV.delete(Bl)}},dl.play=Bl=>iV(!0,Bl),dl.pause=Bl=>iV(!1,Bl);const nl=typeof window<"u"?lV.useLayoutEffect:lV.useEffect,Il=Bl=>{let{theme:jl,type:rl,isLoading:Pl,...Hl}=Bl;return RV.default.createElement("svg",{viewBox:"0 0 24 24",width:"100%",height:"100%",fill:jl==="colored"?"currentColor":`var(--toastify-icon-color-${rl})`,...Hl})},LV={info:function(Bl){return RV.default.createElement(Il,{...Bl},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(Bl){return RV.default.createElement(Il,{...Bl},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(Bl){return RV.default.createElement(Il,{...Bl},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(Bl){return RV.default.createElement(Il,{...Bl},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"})}},OV=Bl=>{const{isRunning:jl,preventExitTransition:rl,toastRef:Pl,eventHandlers:Hl,playToast:Tl}=MV(Bl),{closeButton:kl,children:Dl,autoClose:ZR,onClick:JR,type:FR,hideProgressBar:QR,closeToast:hR,transition:kR,position:AR,className:aR,style:TR,bodyClassName:xR,bodyStyle:pR,progressClassName:UU,progressStyle:SU,updateId:xU,role:DR,progress:BR,rtl:CU,toastId:bR,deleteToast:VR,isIn:mR,isLoading:YR,closeOnClick:iR,theme:$R}=Bl,lU=UV.default("Toastify__toast",`Toastify__toast-theme--${$R}`,`Toastify__toast--${FR}`,{"Toastify__toast--rtl":CU},{"Toastify__toast--close-on-click":iR}),hU=IV(aR)?aR({rtl:CU,position:AR,type:FR,defaultClassName:lU}):UV.default(lU,aR),GR=function(hZ){let{theme:zZ,type:jZ,isLoading:DZ,icon:kW}=hZ,fU=null;const nW={theme:zZ,type:jZ};return kW===!1||(IV(kW)?fU=kW({...nW,isLoading:DZ}):lV.isValidElement(kW)?fU=lV.cloneElement(kW,nW):DZ?fU=LV.spinner():(NW=>NW in LV)(jZ)&&(fU=LV[jZ](nW))),fU}(Bl),IU=!!BR||!ZR,FU={closeToast:hR,type:FR,theme:$R};let PU=null;return kl===!1||(PU=IV(kl)?kl(FU):lV.isValidElement(kl)?lV.cloneElement(kl,FU):function(hZ){let{closeToast:zZ,theme:jZ,ariaLabel:DZ="close"}=hZ;return RV.default.createElement("button",{className:`Toastify__close-button Toastify__close-button--${jZ}`,type:"button",onClick:kW=>{kW.stopPropagation(),zZ(kW)},"aria-label":DZ},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"})))}(FU)),RV.default.createElement(kR,{isIn:mR,done:VR,position:AR,preventExitTransition:rl,nodeRef:Pl,playToast:Tl},RV.default.createElement("div",{id:bR,onClick:JR,"data-in":mR,className:hU,...Hl,style:TR,ref:Pl},RV.default.createElement("div",{...mR&&{role:DR},className:IV(xR)?xR({type:FR}):UV.default("Toastify__toast-body",xR),style:pR},GR!=null&&RV.default.createElement("div",{className:UV.default("Toastify__toast-icon",{"Toastify--animate-icon Toastify__zoom-enter":!YR})},GR),RV.default.createElement("div",null,Dl)),PU,RV.default.createElement(AV,{...xU&&!IU?{key:`pb-${xU}`}:{},rtl:CU,theme:$R,delay:ZR,isRunning:jl,isIn:mR,closeToast:hR,hide:QR,type:FR,style:SU,className:UU,controlledProgress:IU,progress:BR||0})))},$V=function(Bl,jl){return jl===void 0&&(jl=!1),{enter:`Toastify--animate Toastify__${Bl}-enter`,exit:`Toastify--animate Toastify__${Bl}-exit`,appendPosition:jl}},Cl=NV($V("bounce",!0)),Zl=NV($V("slide",!0)),el=NV($V("zoom")),pl=NV($V("flip")),ml={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=pl,reactToastify.Icons=LV,reactToastify.Slide=Zl,reactToastify.ToastContainer=function(Bl){let jl={...ml,...Bl};const rl=Bl.stacked,[Pl,Hl]=lV.useState(!0),Tl=lV.useRef(null),{getToastToRender:kl,isToastActive:Dl,count:ZR}=tV(jl),{className:JR,style:FR,rtl:QR,containerId:hR}=jl;function kR(aR){const TR=UV.default("Toastify__toast-container",`Toastify__toast-container--${aR}`,{"Toastify__toast-container--rtl":QR});return IV(JR)?JR({position:aR,rtl:QR,defaultClassName:TR}):UV.default(TR,dV(JR))}function AR(){rl&&(Hl(!0),dl.play())}return nl(()=>{if(rl){var aR;const TR=Tl.current.querySelectorAll('[data-in="true"]'),xR=12,pR=(aR=jl.position)==null?void 0:aR.includes("top");let UU=0,SU=0;Array.from(TR).reverse().forEach((xU,DR)=>{const BR=xU;BR.classList.add("Toastify__toast--stacked"),DR>0&&(BR.dataset.collapsed=`${Pl}`),BR.dataset.pos||(BR.dataset.pos=pR?"top":"bot");const CU=UU*(Pl?.2:1)+(Pl?0:xR*DR);BR.style.setProperty("--y",`${pR?CU:-1*CU}px`),BR.style.setProperty("--g",`${xR}`),BR.style.setProperty("--s",""+(1-(Pl?SU:0))),UU+=BR.offsetHeight,SU+=.025})}},[Pl,ZR,rl]),RV.default.createElement("div",{ref:Tl,className:"Toastify",id:hR,onMouseEnter:()=>{rl&&(Hl(!1),dl.pause())},onMouseLeave:AR},kl((aR,TR)=>{const xR=TR.length?{...FR}:{...FR,pointerEvents:"none"};return RV.default.createElement("div",{className:kR(aR),style:xR,key:`container-${aR}`},TR.map(pR=>{let{content:UU,props:SU}=pR;return RV.default.createElement(OV,{...SU,stacked:rl,collapseAll:AR,isIn:Dl(SU.toastId,SU.containerId),style:SU.style,key:`toast-${SU.key}`},UU)}))}))},reactToastify.Zoom=el,reactToastify.collapseToast=FV,reactToastify.cssTransition=NV,reactToastify.toast=dl,reactToastify.useToast=MV,reactToastify.useToastContainer=tV,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 cV in GV)lV(aV,cV,{get:GV[cV],enumerable:!0})},ZV=(aV,GV,cV,TV)=>{if(GV&&typeof GV=="object"||typeof GV=="function")for(let iV of VV(GV))!RV.call(aV,iV)&&iV!==cV&&lV(aV,iV,{get:()=>GV[iV],enumerable:!(TV=J(GV,iV))||TV.enumerable});return aV},WV=aV=>ZV(lV({},"__esModule",{value:!0}),aV),IV={};UV(IV,{SuperGrid:()=>nV,toMMSI:()=>JV,toMeterSI:()=>eV}),SuperGrid_1=WV(IV);var dV=requireReact(),CV=require$$0,FV=requireJsxRuntime(),NV=(aV,GV,cV)=>{const TV=[];if(GV<aV)for(let iV=aV;iV>=GV;iV-=Math.abs(cV))TV.push(iV);else for(let iV=aV;iV<=GV;iV+=Math.abs(cV))TV.push(iV);return TV};function gV(aV,GV){return{x:Math.round(GV.x/aV)*aV,y:Math.round(GV.y/aV)*aV}}function eV(aV,GV=1){return aV<0?"-"+eV(-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 JV(aV,GV=1){return eV(aV/1e3,GV/1e3)}var nV=aV=>{var GV;const cV=(0,dV.useRef)(null),[TV,iV]=(0,dV.useState)({x:0,y:0}),{majorColor:tV="rgba(0,0,0,0.2)",minorColor:MV="rgba(0,0,0,0.1)",textColor:AV=(GV=aV.majorColor)!=null?GV:"rgba(0,0,0,0.5)",width:pV,height:HV,screenSpaceCellSize:oV=200,stringifyCoord:DV=(nl,Il,LV)=>`${eV(nl,LV)}, ${eV(Il,LV)}`}=aV,wV=Math.ceil(pV/oV)+2,qV=Math.ceil(HV/oV)+2;(0,dV.useEffect)(()=>{if(!cV.current)return;const nl=cV.current.getContext("2d");if(!nl)return;const Il=oV/10**Math.floor(Math.log10(aV.transform.a)),LV=aV.transform.d<0?-1:1,$V=oV/10**Math.log10(aV.transform.a)/Il;function Cl(Tl,kl,Dl){const ZR=Tl;let JR,FR,QR;for(JR=kl.x;JR<=Dl.x;JR+=ZR)FR=(0,CV.applyToPoint)(aV.transform,{x:JR,y:kl.y}),QR=(0,CV.applyToPoint)(aV.transform,{x:JR,y:Dl.y}),nl.beginPath(),nl.moveTo(FR.x,FR.y),nl.lineTo(QR.x,QR.y),nl.stroke();const hR=NV(kl.y,Dl.y,ZR*LV);for(const kR of hR)FR=(0,CV.applyToPoint)(aV.transform,{x:kl.x,y:kR}),QR=(0,CV.applyToPoint)(aV.transform,{x:Dl.x,y:kR}),nl.beginPath(),nl.moveTo(FR.x,FR.y),nl.lineTo(QR.x,QR.y),nl.stroke()}function Zl(Tl,kl,Dl){const ZR=Tl;let JR;for(JR=kl.x;JR<=Dl.x;JR+=ZR)for(const FR of NV(kl.y,Dl.y,ZR*LV)){const QR=(0,CV.applyToPoint)(aV.transform,{x:JR,y:FR});nl.fillStyle=AV,nl.font="12px sans-serif",nl.fillText(DV(JR,FR,Tl),QR.x+2,QR.y-2)}}nl.clearRect(0,0,pV,HV);const el=(0,CV.applyToPoint)((0,CV.inverse)(aV.transform),{x:0,y:0}),pl={x:Math.floor((el.x-Il)/Il)*Il,y:Math.floor((el.y-Il)/Il+(LV==-1?2:0))*Il},ml={x:pl.x+Il*wV,y:pl.y+Il*qV*LV},jl=Il*5,rl={x:Math.floor((el.x-jl)/jl)*jl,y:Math.floor((el.y-jl)/jl+(LV==-1?2:0))*jl},Pl={x:rl.x+jl*wV,y:rl.y+jl*qV*LV};nl.globalAlpha=1,nl.strokeStyle=tV,Cl(Il,pl,ml),Zl(jl,rl,Pl),nl.globalAlpha=1-$V,Cl(jl/10,rl,Pl),nl.globalAlpha=1-$V,nl.strokeStyle=MV,Cl(Il/10,pl,ml),nl.globalAlpha=Math.max(((1-$V)*10-5)/5,0),Zl(jl/10,rl,Pl),nl.globalAlpha=1;const Hl=(0,CV.applyToPoint)(aV.transform,TV);nl.font="12px sans-serif",nl.fillStyle=AV,nl.fillText(DV(TV.x,TV.y,Il),Hl.x+2,Hl.y-2),nl.strokeStyle=tV,nl.strokeRect(Hl.x-5,Hl.y-5,10,10)},[cV,aV.transform,TV,pV,HV]);const dl=nl=>{if(!cV.current)return;const Il=oV/10/10**Math.floor(Math.log10(aV.transform.a)),LV=cV.current.getBoundingClientRect(),OV=(0,CV.applyToPoint)((0,CV.inverse)(aV.transform),{x:nl.clientX-LV.left,y:nl.clientY-LV.top}),$V=gV(Il,OV);iV($V)};return(0,FV.jsx)("canvas",{onMouseUp:nl=>{nl.button===1&&dl(nl)},onDoubleClick:dl,ref:cV,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,gV=0,eV=0,JV=0,nV=1,aV=1,GV=1,cV=0,TV="",iV=UV,tV=ZV,MV=RV,AV=TV;aV;)switch(JV=cV,cV=next()){case 40:if(JV!=108&&charat(AV,NV-1)==58){indexof(AV+=replace(delimit(cV),"&","&\f"),"&\f")!=-1&&(GV=-1);break}case 34:case 39:case 91:AV+=delimit(cV);break;case 9:case 10:case 13:case 32:AV+=whitespace(JV);break;case 92:AV+=escaping(caret()-1,7);continue;case 47:switch(peek()){case 42:case 47:append(comment(commenter(next(),caret()),J,VV),dV);break;default:AV+="/"}break;case 123*nV:IV[CV++]=strlen(AV)*GV;case 125*nV:case 59:case 0:switch(cV){case 0:case 125:aV=0;case 59+FV:GV==-1&&(AV=replace(AV,/\f/g,"")),eV>0&&strlen(AV)-NV&&append(eV>32?declaration(AV+";",RV,VV,NV-1):declaration(replace(AV," ","")+";",RV,VV,NV-2),dV);break;case 59:AV+=";";default:if(append(MV=ruleset(AV,J,VV,CV,FV,UV,IV,TV,iV=[],tV=[],NV),ZV),cV===123)if(FV===0)parse$1(AV,J,MV,MV,iV,ZV,NV,IV,tV);else switch(gV===99&&charat(AV,3)===110?100:gV){case 100:case 108:case 109:case 115:parse$1(lV,MV,MV,RV&&append(ruleset(lV,MV,MV,0,0,UV,IV,TV,UV,iV=[],NV),tV),UV,tV,NV,IV,RV?iV:tV);break;default:parse$1(AV,MV,MV,MV,[""],tV,0,IV,tV)}}CV=FV=eV=0,nV=GV=1,TV=AV="",NV=WV;break;case 58:NV=1+strlen(AV),eV=JV;default:if(nV<1){if(cV==123)--nV;else if(cV==125&&nV++==0&&prev()==125)continue}switch(AV+=from(cV),cV*nV){case 38:GV=FV>0?1:(AV+="\f",-1);break;case 44:IV[CV++]=(strlen(AV)-1)*GV,GV=1;break;case 64:peek()===45&&(AV+=delimit(next())),gV=peek(),FV=NV=strlen(TV=AV+=identifier(caret())),cV++;break;case 45:JV===45&&strlen(AV)==2&&(nV=0)}}return ZV}function ruleset(lV,J,VV,RV,UV,ZV,WV,IV,dV,CV,FV){for(var NV=UV-1,gV=UV===0?ZV:[""],eV=sizeof$1(gV),JV=0,nV=0,aV=0;JV<RV;++JV)for(var GV=0,cV=substr(lV,NV+1,NV=abs(nV=WV[JV])),TV=lV;GV<eV;++GV)(TV=trim(nV>0?gV[GV]+" "+cV:replace(cV,/&\f/g,gV[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(nV){var aV=nV.getAttribute("data-emotion");aV.indexOf(" ")!==-1&&(document.head.appendChild(nV),nV.setAttribute("data-s",""))})}var UV=J.stylisPlugins||defaultStylisPlugins,ZV={},WV,IV=[];WV=J.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+VV+' "]'),function(nV){for(var aV=nV.getAttribute("data-emotion").split(" "),GV=1;GV<aV.length;GV++)ZV[aV[GV]]=!0;IV.push(nV)});var dV,CV=[compat,removeLabel];{var FV,NV=[stringify$1,rulesheet(function(nV){FV.insert(nV)})],gV=middleware(CV.concat(UV,NV)),eV=function(aV){return serialize(compile(aV),gV)};dV=function(aV,GV,cV,TV){FV=cV,eV(aV?aV+"{"+GV.styles+"}":GV.styles),TV&&(JV.inserted[GV.name]=!0)}}var JV={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 JV.sheet.hydrate(IV),JV};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),gV="animation-"+NV.name;return insertWithoutScoping(VV,{name:NV.name,styles:"@keyframes "+gV+"{"+NV.styles+"}"}),gV},ZV=function(){for(var dV=arguments.length,CV=new Array(dV),FV=0;FV<dV;FV++)CV[FV]=arguments[FV];var NV=serializeStyles(CV,VV.registered);insertWithoutScoping(VV,NV)},WV=function(){for(var dV=arguments.length,CV=new Array(dV),FV=0;FV<dV;FV++)CV[FV]=arguments[FV];return merge$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);function doesLineIntersectLine([lV,J],[VV,RV],{lineThickness:UV=0}={}){return UV===0?doSegmentsIntersect(lV,J,VV,RV):segmentsDistance(lV,J,VV,RV)<=UV}function doSegmentsIntersect(lV,J,VV,RV){const UV=orientation(lV,J,VV),ZV=orientation(lV,J,RV),WV=orientation(VV,RV,lV),IV=orientation(VV,RV,J);return!!(UV!==ZV&&WV!==IV||UV===0&&onSegment(lV,VV,J)||ZV===0&&onSegment(lV,RV,J)||WV===0&&onSegment(VV,lV,RV)||IV===0&&onSegment(VV,J,RV))}function orientation(lV,J,VV){const RV=(J.y-lV.y)*(VV.x-J.x)-(J.x-lV.x)*(VV.y-J.y);return RV===0?0:RV>0?1:2}function onSegment(lV,J,VV){return J.x<=Math.max(lV.x,VV.x)&&J.x>=Math.min(lV.x,VV.x)&&J.y<=Math.max(lV.y,VV.y)&&J.y>=Math.min(lV.y,VV.y)}function segmentsDistance(lV,J,VV,RV){if(lV.x===J.x&&lV.y===J.y)return pointToSegmentDistance(lV,VV,RV);if(VV.x===RV.x&&VV.y===RV.y)return pointToSegmentDistance(VV,lV,J);if(doSegmentsIntersect(lV,J,VV,RV))return 0;const UV=[pointToSegmentDistance(lV,VV,RV),pointToSegmentDistance(J,VV,RV),pointToSegmentDistance(VV,lV,J),pointToSegmentDistance(RV,lV,J)];return Math.min(...UV)}function pointToSegmentDistance(lV,J,VV){const RV=(VV.x-J.x)**2+(VV.y-J.y)**2;if(RV===0)return distance(lV,J);let UV=((lV.x-J.x)*(VV.x-J.x)+(lV.y-J.y)*(VV.y-J.y))/RV;UV=Math.max(0,Math.min(1,UV));const ZV={x:J.x+UV*(VV.x-J.x),y:J.y+UV*(VV.y-J.y)};return distance(lV,ZV)}function distance(lV,J){const VV=lV.x-J.x,RV=lV.y-J.y;return Math.sqrt(VV*VV+RV*RV)}function findConnectedNetworks(lV){const J=new Map;let VV=0;function RV(UV){for(const[,WV]of J)if(WV.has(UV))return WV;const ZV=new Set;return J.set(`connectivity_net${VV++}`,ZV),ZV}for(const UV of lV){let ZV=null;for(const WV of UV){if(!ZV)ZV=RV(WV);else if(!ZV.has(WV)){const IV=RV(WV);if(IV!==ZV){for(const dV of IV)ZV.add(dV);J.delete(Array.from(J.entries()).find(([,dV])=>dV===IV)[0])}}ZV.add(WV)}}return Object.fromEntries(Array.from(J.entries()).map(([UV,ZV])=>[UV,Array.from(ZV)]))}var ConnectivityMap=class{constructor(lV){kI(this,"netMap");kI(this,"idToNetMap");this.netMap=lV,this.idToNetMap={};for(const[J,VV]of Object.entries(lV))for(const RV of VV)this.idToNetMap[RV]=J}addConnections(lV){for(const J of lV){const VV=new Set;for(const UV of J){const ZV=this.idToNetMap[UV];ZV&&VV.add(ZV)}let RV;if(VV.size===0)RV=`connectivity_net${Object.keys(this.netMap).length}`,this.netMap[RV]=[];else if(VV.size===1)RV=VV.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;else{RV=VV.values().next().value??`connectivity_net${Object.keys(this.netMap).length}`;for(const UV of VV)if(UV!==RV){this.netMap[RV].push(...this.netMap[UV]),this.netMap[UV]=this.netMap[RV];for(const ZV of this.netMap[RV])this.idToNetMap[ZV]=RV}}for(const UV of J)this.netMap[RV].includes(UV)||this.netMap[RV].push(UV),this.idToNetMap[UV]=RV}}getIdsConnectedToNet(lV){return this.netMap[lV]||[]}getNetConnectedToId(lV){return this.idToNetMap[lV]}areIdsConnected(lV,J){const VV=this.getNetConnectedToId(lV),RV=this.getNetConnectedToId(J);return VV===RV||RV===lV||RV===lV}areAllIdsConnected(lV){const J=this.getNetConnectedToId(lV[0]);for(const VV of lV){const RV=this.getNetConnectedToId(VV);if(RV===void 0||RV!==J)return!1}return!0}},getSourcePortConnectivityMapFromCircuitJson=lV=>{const J=[];for(const RV of lV)RV.type==="source_trace"&&J.push([...RV.connected_source_port_ids??[],...RV.connected_source_net_ids??[]]);const VV=findConnectedNetworks(J);return new ConnectivityMap(VV)},getFullConnectivityMapFromCircuitJson=lV=>{const J=[];for(const RV of lV)if(RV.type==="source_trace")J.push([RV.source_trace_id,...RV.connected_source_port_ids??[],...RV.connected_source_net_ids??[]].filter(Boolean));else if(RV.type==="pcb_port"){const{pcb_port_id:UV,source_port_id:ZV}=RV;ZV&&UV&&J.push([ZV,UV])}else if(RV.type==="pcb_smtpad"){const{pcb_smtpad_id:UV,pcb_port_id:ZV}=RV;ZV&&UV&&J.push([UV,ZV])}else if(RV.type==="pcb_plated_hole"){const{pcb_plated_hole_id:UV,pcb_port_id:ZV}=RV;ZV&&UV&&J.push([UV,ZV])}else if(RV.type==="pcb_trace"){const{pcb_trace_id:UV,source_trace_id:ZV}=RV;ZV&&UV&&J.push([UV,ZV])}const VV=findConnectedNetworks(J);return new ConnectivityMap(VV)},PcbConnectivityMap=class{constructor(lV){kI(this,"circuitJson");kI(this,"traceIdToElm");kI(this,"portIdToElm");kI(this,"connMap");this.circuitJson=lV||[],this.traceIdToElm=new Map,this.portIdToElm=new Map,lV?(this._buildTraceMap(),this._buildPortMap(),this.connMap=this._buildTraceConnectivityMap()):this.connMap=new ConnectivityMap({})}_buildPortMap(){for(const lV of this.circuitJson)lV.type==="pcb_port"&&this.portIdToElm.set(lV.pcb_port_id,lV)}_buildTraceMap(){for(const lV of this.circuitJson)lV.type==="pcb_trace"&&this.traceIdToElm.set(lV.pcb_trace_id,lV)}_buildTraceConnectivityMap(){const lV=[],J=Array.from(this.traceIdToElm.keys());for(let VV=0;VV<J.length;VV++)for(let RV=VV+1;RV<J.length;RV++){const UV=this.traceIdToElm.get(J[VV]),ZV=this.traceIdToElm.get(J[RV]);this._arePcbTracesConnected(UV,ZV)&&lV.push([J[VV],J[RV]])}for(const VV of this.portIdToElm.values())for(const RV of this.traceIdToElm.values())for(const UV of RV.route)UV.route_type==="wire"&&(UV.start_pcb_port_id===VV.pcb_port_id?lV.push([VV.pcb_port_id,RV.pcb_trace_id]):UV.end_pcb_port_id===VV.pcb_port_id&&lV.push([RV.pcb_trace_id,VV.pcb_port_id]));return new ConnectivityMap(findConnectedNetworks(lV))}addTrace(lV){this.traceIdToElm.set(lV.pcb_trace_id,lV);const J=[];for(const VV of lV.route)VV.route_type==="wire"&&(VV.start_pcb_port_id&&J.push([VV.start_pcb_port_id,lV.pcb_trace_id]),VV.end_pcb_port_id&&J.push([VV.end_pcb_port_id,lV.pcb_trace_id]));this.connMap.addConnections(J)}_arePcbTracesConnected(lV,J){for(let VV=0;VV<lV.route.length-1;VV++){const RV=lV.route[VV],UV=lV.route[VV+1];if(RV.route_type==="wire"&&UV.route_type==="wire")for(let ZV=0;ZV<J.route.length-1;ZV++){const WV=J.route[ZV],IV=J.route[ZV+1];if(WV.route_type!=="wire"||IV.route_type!=="wire")continue;if(doesLineIntersectLine([RV,UV],[WV,IV],{lineThickness:(RV.width+WV.width)/2}))return!0}}return!1}areTracesConnected(lV,J){return this.connMap.areIdsConnected(lV,J)}getAllTracesConnectedToTrace(lV){const J=this.connMap.getNetConnectedToId(lV);return J?this.connMap.getIdsConnectedToNet(J).filter(VV=>this.traceIdToElm.has(VV)).map(VV=>this.traceIdToElm.get(VV)):[]}getAllTracesConnectedToPort(lV){const J=this.connMap.getNetConnectedToId(lV);return J?this.connMap.getIdsConnectedToNet(J).filter(VV=>this.traceIdToElm.has(VV)).map(VV=>this.traceIdToElm.get(VV)):[]}};const dist$2=Object.freeze(Object.defineProperty({__proto__:null,ConnectivityMap,PcbConnectivityMap,findConnectedNetworks,getFullConnectivityMapFromCircuitJson,getSourcePortConnectivityMapFromCircuitJson},Symbol.toStringTag,{value:"Module"})),require$$11=getAugmentedNamespace(dist$2);var dist$1,hasRequiredDist$1;function requireDist$1(){if(hasRequiredDist$1)return dist$1;hasRequiredDist$1=1;function lV($l,VU){(VU==null||VU>$l.length)&&(VU=$l.length);for(var yR=0,eU=new Array(VU);yR<VU;yR++)eU[yR]=$l[yR];return eU}function J($l){if(Array.isArray($l))return $l}function VV($l){if(Array.isArray($l))return lV($l)}function RV($l){if($l===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return $l}function UV($l,VU,yR,eU,sR,PV,Rl){try{var Ml=$l[PV](Rl),wl=Ml.value}catch(eR){yR(eR);return}Ml.done?VU(wl):Promise.resolve(wl).then(eU,sR)}function ZV($l){return function(){var VU=this,yR=arguments;return new Promise(function(eU,sR){var PV=$l.apply(VU,yR);function Rl(wl){UV(PV,eU,sR,Rl,Ml,"next",wl)}function Ml(wl){UV(PV,eU,sR,Rl,Ml,"throw",wl)}Rl(void 0)})}}function WV($l,VU){if(!($l instanceof VU))throw new TypeError("Cannot call a class as a function")}function IV($l,VU,yR){return Il()?IV=Reflect.construct:IV=function(sR,PV,Rl){var Ml=[null];Ml.push.apply(Ml,PV);var wl=Function.bind.apply(sR,Ml),eR=new wl;return Rl&&HV(eR,Rl.prototype),eR},IV.apply(null,arguments)}function dV($l,VU){for(var yR=0;yR<VU.length;yR++){var eU=VU[yR];eU.enumerable=eU.enumerable||!1,eU.configurable=!0,"value"in eU&&(eU.writable=!0),Object.defineProperty($l,eU.key,eU)}}function CV($l,VU,yR){return VU&&dV($l.prototype,VU),yR&&dV($l,yR),$l}function FV($l,VU,yR){return VU in $l?Object.defineProperty($l,VU,{value:yR,enumerable:!0,configurable:!0,writable:!0}):$l[VU]=yR,$l}function NV($l){return NV=Object.setPrototypeOf?Object.getPrototypeOf:function(yR){return yR.__proto__||Object.getPrototypeOf(yR)},NV($l)}function gV($l,VU){if(typeof VU!="function"&&VU!==null)throw new TypeError("Super expression must either be null or a function");$l.prototype=Object.create(VU&&VU.prototype,{constructor:{value:$l,writable:!0,configurable:!0}}),VU&&HV($l,VU)}function eV($l,VU){return VU!=null&&typeof Symbol<"u"&&VU[Symbol.hasInstance]?!!VU[Symbol.hasInstance]($l):$l instanceof VU}function JV($l){return Function.toString.call($l).indexOf("[native code]")!==-1}function nV($l){if(typeof Symbol<"u"&&$l[Symbol.iterator]!=null||$l["@@iterator"]!=null)return Array.from($l)}function aV($l,VU){var yR=$l==null?null:typeof Symbol<"u"&&$l[Symbol.iterator]||$l["@@iterator"];if(yR!=null){var eU=[],sR=!0,PV=!1,Rl,Ml;try{for(yR=yR.call($l);!(sR=(Rl=yR.next()).done)&&(eU.push(Rl.value),!(VU&&eU.length===VU));sR=!0);}catch(wl){PV=!0,Ml=wl}finally{try{!sR&&yR.return!=null&&yR.return()}finally{if(PV)throw Ml}}return eU}}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 cV(){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($l){for(var VU=1;VU<arguments.length;VU++){var yR=arguments[VU]!=null?arguments[VU]:{},eU=Object.keys(yR);typeof Object.getOwnPropertySymbols=="function"&&(eU=eU.concat(Object.getOwnPropertySymbols(yR).filter(function(sR){return Object.getOwnPropertyDescriptor(yR,sR).enumerable}))),eU.forEach(function(sR){FV($l,sR,yR[sR])})}return $l}function iV($l,VU){var yR=Object.keys($l);if(Object.getOwnPropertySymbols){var eU=Object.getOwnPropertySymbols($l);yR.push.apply(yR,eU)}return yR}function tV($l,VU){return VU=VU??{},Object.getOwnPropertyDescriptors?Object.defineProperties($l,Object.getOwnPropertyDescriptors(VU)):iV(Object(VU)).forEach(function(yR){Object.defineProperty($l,yR,Object.getOwnPropertyDescriptor(VU,yR))}),$l}function MV($l,VU){if($l==null)return{};var yR=AV($l,VU),eU,sR;if(Object.getOwnPropertySymbols){var PV=Object.getOwnPropertySymbols($l);for(sR=0;sR<PV.length;sR++)eU=PV[sR],!(VU.indexOf(eU)>=0)&&Object.prototype.propertyIsEnumerable.call($l,eU)&&(yR[eU]=$l[eU])}return yR}function AV($l,VU){if($l==null)return{};var yR={},eU=Object.keys($l),sR,PV;for(PV=0;PV<eU.length;PV++)sR=eU[PV],!(VU.indexOf(sR)>=0)&&(yR[sR]=$l[sR]);return yR}function pV($l,VU){return VU&&(qV(VU)==="object"||typeof VU=="function")?VU:RV($l)}function HV($l,VU){return HV=Object.setPrototypeOf||function(eU,sR){return eU.__proto__=sR,eU},HV($l,VU)}function oV($l,VU){return J($l)||aV($l,VU)||dl($l,VU)||GV()}function DV($l,VU){return VU||(VU=$l.slice(0)),Object.freeze(Object.defineProperties($l,{raw:{value:Object.freeze(VU)}}))}function wV($l){return VV($l)||nV($l)||dl($l)||cV()}function qV($l){"@swc/helpers - typeof";return $l&&typeof Symbol<"u"&&$l.constructor===Symbol?"symbol":typeof $l}function dl($l,VU){if($l){if(typeof $l=="string")return lV($l,VU);var yR=Object.prototype.toString.call($l).slice(8,-1);if(yR==="Object"&&$l.constructor&&(yR=$l.constructor.name),yR==="Map"||yR==="Set")return Array.from(yR);if(yR==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(yR))return lV($l,VU)}}function nl($l){var VU=typeof Map=="function"?new Map:void 0;return nl=function(eU){if(eU===null||!JV(eU))return eU;if(typeof eU!="function")throw new TypeError("Super expression must either be null or a function");if(typeof VU<"u"){if(VU.has(eU))return VU.get(eU);VU.set(eU,sR)}function sR(){return IV(eU,arguments,NV(this).constructor)}return sR.prototype=Object.create(eU.prototype,{constructor:{value:sR,enumerable:!1,writable:!0,configurable:!0}}),HV(sR,eU)},nl($l)}function Il(){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 LV($l){var VU=Il();return function(){var eU=NV($l),sR;if(VU){var PV=NV(this).constructor;sR=Reflect.construct(eU,arguments,PV)}else sR=eU.apply(this,arguments);return pV(this,sR)}}function OV($l,VU){var yR,eU,sR,PV,Rl={label:0,sent:function(){if(sR[0]&1)throw sR[1];return sR[1]},trys:[],ops:[]};return PV={next:Ml(0),throw:Ml(1),return:Ml(2)},typeof Symbol=="function"&&(PV[Symbol.iterator]=function(){return this}),PV;function Ml(eR){return function(ER){return wl([eR,ER])}}function wl(eR){if(yR)throw new TypeError("Generator is already executing.");for(;Rl;)try{if(yR=1,eU&&(sR=eR[0]&2?eU.return:eR[0]?eU.throw||((sR=eU.return)&&sR.call(eU),0):eU.next)&&!(sR=sR.call(eU,eR[1])).done)return sR;switch(eU=0,sR&&(eR=[eR[0]&2,sR.value]),eR[0]){case 0:case 1:sR=eR;break;case 4:return Rl.label++,{value:eR[1],done:!1};case 5:Rl.label++,eU=eR[1],eR=[0];continue;case 7:eR=Rl.ops.pop(),Rl.trys.pop();continue;default:if(sR=Rl.trys,!(sR=sR.length>0&&sR[sR.length-1])&&(eR[0]===6||eR[0]===2)){Rl=0;continue}if(eR[0]===3&&(!sR||eR[1]>sR[0]&&eR[1]<sR[3])){Rl.label=eR[1];break}if(eR[0]===6&&Rl.label<sR[1]){Rl.label=sR[1],sR=eR;break}if(sR&&Rl.label<sR[2]){Rl.label=sR[2],Rl.ops.push(eR);break}sR[2]&&Rl.ops.pop(),Rl.trys.pop();continue}eR=VU.call($l,Rl)}catch(ER){eR=[6,ER],eU=0}finally{yR=sR=0}if(eR[0]&5)throw eR[1];return{value:eR[0]?eR[1]:void 0,done:!0}}}var $V=function($l){YG[$l]=[];var VU=qN[$l].split("M").slice(1).map(function(eR){return eR.split("L").map(function(ER){return ER.trim().split(" ").map(parseFloat)})}),yR=!0,eU=!1,sR=void 0;try{for(var PV=VU[Symbol.iterator](),Rl;!(yR=(Rl=PV.next()).done);yR=!0)for(var Ml=Rl.value,wl=0;wl<Ml.length-1;wl++)YG[$l].push({x1:Ml[wl][0],y1:1-Ml[wl][1],x2:Ml[wl+1][0],y2:1-Ml[wl+1][1]})}catch(eR){eU=!0,sR=eR}finally{try{!yR&&PV.return!=null&&PV.return()}finally{if(eU)throw sR}}};function Cl(){var $l=DV([`
|
|
22050
22050
|
margin-top: 2px;
|
|
22051
22051
|
padding: 4px;
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@tscircuit/runframe",
|
|
3
3
|
"main": "dist/preview.js",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "0.0.
|
|
5
|
+
"version": "0.0.79",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": "./dist/preview.js",
|
|
8
8
|
"./preview": "./dist/preview.js",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@radix-ui/react-dropdown-menu": "^2.1.2",
|
|
53
53
|
"@radix-ui/react-icons": "^1.3.2",
|
|
54
54
|
"@radix-ui/react-tabs": "^1.1.1",
|
|
55
|
-
"@tscircuit/3d-viewer": "^0.0.
|
|
55
|
+
"@tscircuit/3d-viewer": "^0.0.89",
|
|
56
56
|
"@tscircuit/assembly-viewer": "^0.0.1",
|
|
57
57
|
"@tscircuit/core": "^0.0.257",
|
|
58
58
|
"@tscircuit/eval-webworker": "^0.0.56",
|