ecadlib 0.3.0__py3-none-any.whl
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.
- ecadlib/__init__.py +3 -0
- ecadlib/__main__.py +5 -0
- ecadlib/a365_sync.py +637 -0
- ecadlib/agent.py +1407 -0
- ecadlib/agent_queue.py +780 -0
- ecadlib/agent_watch.py +732 -0
- ecadlib/altium365.py +385 -0
- ecadlib/altium_dblib_sync.py +530 -0
- ecadlib/altium_export.py +209 -0
- ecadlib/altium_forms.py +768 -0
- ecadlib/altium_lib.py +1089 -0
- ecadlib/altium_menu.py +1751 -0
- ecadlib/altium_pkg.py +396 -0
- ecadlib/altium_project.py +1095 -0
- ecadlib/app.py +1458 -0
- ecadlib/approvals.py +395 -0
- ecadlib/assets/demo_bom.csv +8 -0
- ecadlib/assets/kicad_action_plugin.py +607 -0
- ecadlib/assets/kicad_reread.py +60 -0
- ecadlib/assets/pcblib_template.json.gz +0 -0
- ecadlib/bom_inputs.py +339 -0
- ecadlib/bom_triage.py +519 -0
- ecadlib/cad_model.py +528 -0
- ecadlib/cfb.py +171 -0
- ecadlib/cli.py +185 -0
- ecadlib/clihelp.py +149 -0
- ecadlib/cliutil.py +119 -0
- ecadlib/completion.py +173 -0
- ecadlib/costs.py +276 -0
- ecadlib/crosscheck.py +412 -0
- ecadlib/datasheet.py +2168 -0
- ecadlib/dedupe.py +572 -0
- ecadlib/detect.py +170 -0
- ecadlib/doctor.py +450 -0
- ecadlib/ds_route.py +541 -0
- ecadlib/eagle_export.py +1409 -0
- ecadlib/easy_setup.py +338 -0
- ecadlib/easyeda_convert.py +386 -0
- ecadlib/easyeda_pro_export.py +972 -0
- ecadlib/eval/__init__.py +0 -0
- ecadlib/eval/baselines/kicad-v1.json +404 -0
- ecadlib/eval/build_set.py +299 -0
- ecadlib/eval/cli.py +119 -0
- ecadlib/eval/gate.py +358 -0
- ecadlib/eval/golden/demo.txt +379 -0
- ecadlib/eval/golden/specs.txt +3120 -0
- ecadlib/eval/golden/testpack.txt +463 -0
- ecadlib/eval/golden.py +446 -0
- ecadlib/eval/replay/kicad-v1.json.gz +0 -0
- ecadlib/eval/runner.py +456 -0
- ecadlib/eval/score.py +179 -0
- ecadlib/eval/sets/kicad-v1.json +630 -0
- ecadlib/firstrun.py +400 -0
- ecadlib/footprint_adv.py +1006 -0
- ecadlib/footprint_bench.py +218 -0
- ecadlib/footprint_check.py +562 -0
- ecadlib/footprint_gen.py +582 -0
- ecadlib/footprint_rules.py +1092 -0
- ecadlib/forge.py +267 -0
- ecadlib/fp_share.py +95 -0
- ecadlib/fp_tidy.py +389 -0
- ecadlib/fsutil.py +62 -0
- ecadlib/house_style.py +1051 -0
- ecadlib/httpcache.py +124 -0
- ecadlib/hub.py +1490 -0
- ecadlib/hub_copy.py +161 -0
- ecadlib/hub_tools.py +79 -0
- ecadlib/kicad_dblib.py +257 -0
- ecadlib/kicad_export.py +837 -0
- ecadlib/kicad_import.py +913 -0
- ecadlib/kicad_index.py +160 -0
- ecadlib/kicad_menu.py +193 -0
- ecadlib/kicad_pcm.py +475 -0
- ecadlib/launcher.py +156 -0
- ecadlib/librarian.py +963 -0
- ecadlib/lifecycle.py +691 -0
- ecadlib/llm/__init__.py +276 -0
- ecadlib/llm/cli.py +70 -0
- ecadlib/llm/openai_compat.py +214 -0
- ecadlib/llm/profiles.py +245 -0
- ecadlib/llm/rails.py +570 -0
- ecadlib/llm/run.py +126 -0
- ecadlib/llm/sampling.py +49 -0
- ecadlib/mcp_server.py +723 -0
- ecadlib/messages.py +419 -0
- ecadlib/migrate.py +407 -0
- ecadlib/notify.py +329 -0
- ecadlib/package_schema.json +1238 -0
- ecadlib/package_specs/CP_EIA-3216-18_Kemet-A.json +27 -0
- ecadlib/package_specs/C_0402_1005Metric.json +22 -0
- ecadlib/package_specs/C_0805_2012Metric.json +22 -0
- ecadlib/package_specs/DFN-8-1EP_3x3mm_P0.5mm_EP1.66x2.38mm.json +40 -0
- ecadlib/package_specs/D_SMA.json +27 -0
- ecadlib/package_specs/D_SMB.json +27 -0
- ecadlib/package_specs/D_SOD-123.json +43 -0
- ecadlib/package_specs/D_SOD-323.json +43 -0
- ecadlib/package_specs/LED_0603_1608Metric.json +23 -0
- ecadlib/package_specs/LED_0805_2012Metric.json +23 -0
- ecadlib/package_specs/LQFP-48_7x7mm_P0.5mm.json +31 -0
- ecadlib/package_specs/L_0805_2012Metric.json +22 -0
- ecadlib/package_specs/MSOP-8_3x3mm_P0.65mm.json +31 -0
- ecadlib/package_specs/QFN-16-1EP_3x3mm_P0.5mm_EP1.75x1.75mm.json +39 -0
- ecadlib/package_specs/QFN-32-1EP_5x5mm_P0.5mm_EP3.45x3.45mm.json +37 -0
- ecadlib/package_specs/R_0402_1005Metric.json +22 -0
- ecadlib/package_specs/R_0603_1608Metric.json +22 -0
- ecadlib/package_specs/R_0805_2012Metric.json +22 -0
- ecadlib/package_specs/R_1206_3216Metric.json +22 -0
- ecadlib/package_specs/SOIC-16_3.9x9.9mm_P1.27mm.json +32 -0
- ecadlib/package_specs/SOIC-8_3.9x4.9mm_P1.27mm.json +32 -0
- ecadlib/package_specs/SOT-223-3_TabPin2.json +56 -0
- ecadlib/package_specs/SOT-23-5.json +57 -0
- ecadlib/package_specs/SOT-23-6.json +62 -0
- ecadlib/package_specs/SOT-23.json +48 -0
- ecadlib/package_specs/TSSOP-16_4.4x5mm_P0.65mm.json +31 -0
- ecadlib/package_specs/VQFN-16-1EP_3x3mm_P0.5mm_EP1.68x1.68mm.json +39 -0
- ecadlib/package_specs/advanced/BGA-100_11.0x11.0mm_Layout10x10_P1.0mm_Ball0.5mm_Pad0.4mm_NSMD.json +26 -0
- ecadlib/package_specs/advanced/BGA-121_9.0x9.0mm_Layout11x11_P0.8mm_Ball0.4mm_Pad0.35mm_NSMD.json +26 -0
- ecadlib/package_specs/advanced/BGA-144_7.0x7.0mm_Layout13x13_P0.5mm_Ball0.3mm_Pad0.25mm_NSMD.json +29 -0
- ecadlib/package_specs/advanced/BGA-169_11.0x11.0mm_Layout13x13_P0.8mm_Ball0.5mm_Pad0.4mm_NSMD.json +23 -0
- ecadlib/package_specs/advanced/BGA-256_11.0x11.0mm_Layout20x20_P0.5mm_Ball0.3mm_Pad0.25mm_NSMD.json +26 -0
- ecadlib/package_specs/advanced/BGA-256_17.0x17.0mm_Layout16x16_P1.0mm_Ball0.5mm_Pad0.4mm_NSMD.json +26 -0
- ecadlib/package_specs/advanced/BGA-324_15.0x15.0mm_Layout18x18_P0.8mm_Ball0.5mm_Pad0.4mm_NSMD.json +26 -0
- ecadlib/package_specs/advanced/BGA-36_3.396x3.466mm_Layout6x6_P0.4mm_Ball0.25mm_Pad0.2mm_NSMD.json +24 -0
- ecadlib/package_specs/advanced/BGA-672_27.0x27.0mm_Layout26x26_P1.0mm_Ball0.6mm_Pad0.5mm_NSMD.json +32 -0
- ecadlib/package_specs/advanced/BGA-68_5.0x5.0mm_Layout9x9_P0.5mm_Ball0.3mm_Pad0.25mm_NSMD.json +30 -0
- ecadlib/package_specs/advanced/BGA-90_8.0x13.0mm_Layout2x3x15_P0.8mm.json +26 -0
- ecadlib/package_specs/advanced/DFN-8-1EP_3x3mm_P0.5mm_EP1.65x2.38mm_ThermalVias.json +60 -0
- ecadlib/package_specs/advanced/Example_Custom_LPad_Slot.json +24 -0
- ecadlib/package_specs/advanced/JST_GH_SM04B-GHS-TB_1x04-1MP_P1.25mm_Horizontal.json +49 -0
- ecadlib/package_specs/advanced/JST_PH_B4B-PH-K_1x04_P2.00mm_Vertical.json +33 -0
- ecadlib/package_specs/advanced/JST_PH_S4B-PH-SM4-TB_1x04-1MP_P2.00mm_Horizontal.json +55 -0
- ecadlib/package_specs/advanced/JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_Horizontal.json +49 -0
- ecadlib/package_specs/advanced/JST_XH_B2B-XH-A_1x02_P2.50mm_Vertical.json +34 -0
- ecadlib/package_specs/advanced/JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical.json +34 -0
- ecadlib/package_specs/advanced/JST_XH_B6B-XH-A_1x06_P2.50mm_Vertical.json +33 -0
- ecadlib/package_specs/advanced/LFBGA-144_10x10mm_Layout12x12_P0.8mm.json +23 -0
- ecadlib/package_specs/advanced/Molex_KK-254_AE-6410-04A_1x04_P2.54mm_Vertical.json +34 -0
- ecadlib/package_specs/advanced/Molex_PicoBlade_53398-0471_1x04-1MP_P1.25mm_Vertical.json +54 -0
- ecadlib/package_specs/advanced/PinHeader_1x05_P1.00mm_Vertical_SMD_Pin1Left.json +14 -0
- ecadlib/package_specs/advanced/PinHeader_1x05_P1.27mm_Vertical_SMD_Pin1Left.json +14 -0
- ecadlib/package_specs/advanced/PinHeader_1x05_P2.00mm_Vertical.json +12 -0
- ecadlib/package_specs/advanced/PinHeader_1x05_P2.00mm_Vertical_SMD_Pin1Left.json +14 -0
- ecadlib/package_specs/advanced/PinHeader_1x05_P2.54mm_Vertical.json +12 -0
- ecadlib/package_specs/advanced/PinHeader_1x05_P2.54mm_Vertical_SMD_Pin1Left.json +25 -0
- ecadlib/package_specs/advanced/PinHeader_1x05_P2.54mm_Vertical_SMD_Pin1Right.json +14 -0
- ecadlib/package_specs/advanced/PinHeader_1x10_P1.00mm_Vertical.json +15 -0
- ecadlib/package_specs/advanced/PinHeader_2x05_P1.00mm_Vertical_SMD.json +13 -0
- ecadlib/package_specs/advanced/PinHeader_2x05_P1.27mm_Vertical.json +18 -0
- ecadlib/package_specs/advanced/PinHeader_2x05_P1.27mm_Vertical_SMD.json +24 -0
- ecadlib/package_specs/advanced/PinHeader_2x05_P2.00mm_Vertical_SMD.json +13 -0
- ecadlib/package_specs/advanced/PinHeader_2x05_P2.54mm_Vertical.json +12 -0
- ecadlib/package_specs/advanced/PinHeader_2x05_P2.54mm_Vertical_SMD.json +24 -0
- ecadlib/package_specs/advanced/PinHeader_2x20_P2.54mm_Vertical.json +12 -0
- ecadlib/package_specs/advanced/QFN-16-1EP_3x3mm_P0.5mm_EP1.75x1.75mm_ThermalVias.json +87 -0
- ecadlib/package_specs/advanced/UFBGA-132_7x7mm_Layout12x12_P0.5mm.json +43 -0
- ecadlib/package_specs/advanced/USB_C_Receptacle_HRO_TYPE-C-31-M-12.json +218 -0
- ecadlib/package_specs/standard.json.gz +0 -0
- ecadlib/parity.py +1204 -0
- ecadlib/parts_export.py +154 -0
- ecadlib/partview.py +215 -0
- ecadlib/plugins.py +231 -0
- ecadlib/providers.py +226 -0
- ecadlib/rebuild.py +471 -0
- ecadlib/release_check.py +437 -0
- ecadlib/reports.py +274 -0
- ecadlib/resolve.py +556 -0
- ecadlib/review_cli.py +292 -0
- ecadlib/rules.py +979 -0
- ecadlib/rules_infer.py +1205 -0
- ecadlib/sexpr.py +149 -0
- ecadlib/sheetsafe.py +65 -0
- ecadlib/sim_models.py +1087 -0
- ecadlib/sourcing.py +1161 -0
- ecadlib/stdparts.py +755 -0
- ecadlib/step_gen.py +929 -0
- ecadlib/symbol_layout.py +798 -0
- ecadlib/team.py +558 -0
- ecadlib/team_setup.py +288 -0
- ecadlib/term.py +420 -0
- ecadlib/term_views.py +64 -0
- ecadlib/testpack.py +334 -0
- ecadlib/ui/__init__.py +1 -0
- ecadlib/ui/__main__.py +3 -0
- ecadlib/ui/server.py +1029 -0
- ecadlib/ui/static/hairline.js +2 -0
- ecadlib/ui/static/index.html +2098 -0
- ecadlib/ui/static/setup.html +294 -0
- ecadlib/upkeep.py +717 -0
- ecadlib/upstream.py +573 -0
- ecadlib/userconfig.py +257 -0
- ecadlib/visual_check.py +1603 -0
- ecadlib/ws_status.py +203 -0
- ecadlib-0.3.0.dist-info/METADATA +2245 -0
- ecadlib-0.3.0.dist-info/RECORD +199 -0
- ecadlib-0.3.0.dist-info/WHEEL +5 -0
- ecadlib-0.3.0.dist-info/entry_points.txt +2 -0
- ecadlib-0.3.0.dist-info/licenses/LICENSE +21 -0
- ecadlib-0.3.0.dist-info/licenses/NOTICE +53 -0
- ecadlib-0.3.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* Hairline figures (c) 2026 Lucas Marques, MIT License, github.com/lucasmarkes/hairline. Built by scripts/build_ui_figures.sh. */
|
|
2
|
+
var hn=Object.defineProperty;var kt=(e,t)=>{for(var n in t)hn(e,n,{get:t[n],enumerable:!0})};var Mt={plate:"#ffffff",hi:"#232327",edge:"#a4a4ac",mid:"#c3c3c9",lo:"#e0e0e4"},St={plate:"#08090a",hi:"#d0d6e0",edge:"#5b5d64",mid:"#3e3e44",lo:"#29292d"},Bt=["plate","hi","edge","mid","lo"],Oe=e=>Bt.map(t=>`--hl-${t}:var(--hairline-${t},${e[t]});`).join(""),Dt="cubic-bezier(0.5,0,0.1,1)",_=":where([data-hairline]>svg)";function fn(e){let t=Object.fromEntries(Bt.map(n=>[n,`light-dark(${Mt[n]},${St[n]})`]));return[`:where([data-hairline]){display:block;position:relative;aspect-ratio:5/4;touch-action:pan-y;user-select:none;-webkit-user-select:none;--hl-sw:var(--hairline-stroke,0.9);${Oe(Mt)}}`,e?`:where([data-hairline]){${Oe(t)}}`:"",`:where(.dark,[data-theme="dark"]) :where([data-hairline]){${Oe(St)}}`,`:where([data-hairline][data-hairline-theme="light"]){${Oe(Mt)}}`,`:where([data-hairline][data-hairline-theme="dark"]){${Oe(St)}}`,":where([data-hairline]:focus-visible){outline:1.5px solid var(--hl-hi);outline-offset:2px}",`${_}{position:absolute;inset:0;width:100%;height:100%;display:block}`,":where([data-hairline]>[data-hairline-live]){position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}",`${_} :where(path,polygon,ellipse,line){fill:var(--hl-plate);stroke:var(--hl-mid);stroke-width:var(--hl-sw);vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round;transition:stroke 260ms ${Dt}}`,`${_} :where(.nf){fill:none}`,`${_} :where(.fo){stroke:none}`,`${_} :where(.sil){stroke:var(--hl-edge)}`,`${_} :where(.hi){stroke:var(--hl-hi)}`,`${_} :where(.lo){stroke:var(--hl-lo)}`,`${_} :where(.dash){stroke-dasharray:1 3}`,`${_} :where(.dot){stroke:none;fill:var(--hl-hi);transition:fill 260ms ${Dt}}`,`${_} :where(.dot.m){fill:var(--hl-edge)}`,`${_} :where(.dot.off){fill:var(--hl-lo)}`,`${_} :where(.ghost path){fill:none;stroke:var(--hl-mid)}`].join("")}var Nt=new WeakSet;function Wt(e){if(Nt.has(e))return;Nt.add(e);let t=e.nodeType===9?e:e.ownerDocument,n=t.defaultView,r=fn(!!n?.CSS?.supports?.("color","light-dark(#000,#fff)"));if(n&&"adoptedStyleSheets"in e)try{let o=new n.CSSStyleSheet;o.replaceSync(r),e.adoptedStyleSheets=[...e.adoptedStyleSheets,o];return}catch{}let s=t.createElement("style");s.setAttribute("data-hairline-style",""),s.textContent=r,(e.nodeType===9?t.head??t.documentElement:e).appendChild(s)}var Rt={};kt(Rt,{LAP:()=>pt,disposer:()=>me,fade:()=>Ut,flatDot:()=>Ot,mk:()=>L,place:()=>Pt,pointer:()=>pe,put:()=>W,reflect:()=>wn,register:()=>re,solid:()=>B,tour:()=>mt});var At={};kt(At,{Cam:()=>le,circ:()=>it,clamp:()=>Pe,extremes:()=>bn,facing:()=>ze,fillet:()=>yn,fit:()=>ue,ghost:()=>Ht,hull:()=>be,lerp:()=>gn,open:()=>ae,poly:()=>Z,prism:()=>Q,proj:()=>ne,r2:()=>j,rad:()=>Tt,ringAt:()=>ge,rings:()=>J,rrect:()=>te,run:()=>je,seg:()=>ot,unproj:()=>Re});var Pe=(e,t,n)=>Math.max(t,Math.min(n,e)),gn=(e,t,n)=>e+(t-e)*n,Tt=e=>e*Math.PI/180,j=e=>Math.round(e*100)/100,Z=e=>"M"+e.map(t=>j(t[0])+" "+j(t[1])).join("L")+"Z",ot=(e,t)=>`M${j(e[0])} ${j(e[1])}L${j(t[0])} ${j(t[1])}`,ae=e=>e.length<2?"":"M"+e.map(t=>j(t[0])+" "+j(t[1])).join("L"),le=(e,t,n)=>({az:Tt(e),k:t,S:n,ox:0,oy:0});function ne(e){let t=Math.cos(e.az),n=Math.sin(e.az),r=Math.sqrt(1-e.k*e.k);return(s,o,l)=>{let a=s*t-o*n,m=s*n+o*t;return[e.ox+e.S*a,e.oy+e.S*(m*e.k-l*r)]}}function Re(e,t,n,r){let s=Math.cos(e.az),o=Math.sin(e.az),l=Math.sqrt(1-e.k*e.k),a=(t-e.ox)/e.S,m=((n-e.oy)/e.S+r*l)/e.k;return[a*s+m*o,-a*o+m*s]}function ue(e,t,n,r){e.ox=0,e.oy=0;let s=ne(e),o=1e9,l=-1e9,a=1e9,m=-1e9;for(let f of t){let g=s(f[0],f[1],f[2]);o=Math.min(o,g[0]),l=Math.max(l,g[0]),a=Math.min(a,g[1]),m=Math.max(m,g[1])}e.ox=n-(o+l)/2,e.oy=r-(a+m)/2}function te(e,t,n,r,s,o=4){s=Math.max(0,Math.min(s,(n-e)/2,(r-t)/2));let l=[];for(let[a,m,f]of[[n-s,r-s,0],[e+s,r-s,90],[e+s,t+s,180],[n-s,t+s,270]])for(let g=0;g<=o;g++){let x=Tt(f+90*g/o),k=Math.cos(x),b=Math.sin(x);l.push({u:a+s*k,v:m+s*b,nu:k,nv:b})}return l}function it(e,t=96){let n=[];for(let r=0;r<t;r++){let s=r/t*Math.PI*2,o=Math.cos(s),l=Math.sin(s);n.push({u:e*o,v:e*l,nu:o,nv:l})}return n}function be(e){let t=e.slice().sort((o,l)=>o[0]-l[0]||o[1]-l[1]),n=(o,l,a)=>(l[0]-o[0])*(a[1]-o[1])-(l[1]-o[1])*(a[0]-o[0]),r=[],s=[];for(let o of t){for(;r.length>1&&n(r[r.length-2],r[r.length-1],o)<=0;)r.pop();r.push(o)}for(let o=t.length-1;o>=0;o--){let l=t[o];for(;s.length>1&&n(s[s.length-2],s[s.length-1],l)<=0;)s.pop();s.push(l)}return r.pop(),s.pop(),r.concat(s)}var ge=(e,t,n)=>t.map(r=>e(r.u,r.v,n)),ze=e=>{let t=Math.sin(e.az),n=Math.cos(e.az);return r=>r.nu*t+r.nv*n>=-1e-6};function je(e,t){let n=e.length,r=-1;for(let o=0;o<n;o++)if(t(e[o])&&!t(e[(o+n-1)%n])){r=o;break}if(r<0)return t(e[0])?e.slice():[];let s=[];for(let o=0;o<n&&t(e[(r+o)%n]);o++)s.push(e[(r+o)%n]);return s}function Q(e,t,n,r,s,o){return{sil:Z(be(ge(e,n,o).concat(ge(e,n,s)))),crease:r?ae(ge(e,je(r,t),o)):""}}var J=(e,t,n,r,s,o)=>[te(e,t,n,r,s),te(e+o,t+o,n-o,r-o,Math.max(.3,s-o))];function bn(e,t){let n=t.map(l=>e(l.u,l.v,0)),r=0,s=0,o=0;return n.forEach((l,a)=>{l[0]<n[r][0]&&(r=a),l[0]>n[s][0]&&(s=a),l[1]>n[o][1]&&(o=a)}),[t[r],t[s],t[o]]}function yn(e,t,n=4){let r=e.length,s=[];for(let o=0;o<r;o++){let l=e[(o+r-1)%r],a=e[o],m=e[(o+1)%r],f=Math.hypot(l[0]-a[0],l[1]-a[1]),g=Math.hypot(m[0]-a[0],m[1]-a[1]),x=Math.min(t[o],f/2,g/2),k=[a[0]+(l[0]-a[0])/f*x,a[1]+(l[1]-a[1])/f*x],b=[a[0]+(m[0]-a[0])/g*x,a[1]+(m[1]-a[1])/g*x];for(let w=0;w<=n;w++){let E=w/n,y=1-E;s.push([y*y*k[0]+2*y*E*a[0]+E*E*b[0],y*y*k[1]+2*y*E*a[1]+E*E*b[1]])}}return s}function Ht(e,t,n,r,s){let o=je(n,t),l=ge(e,o,r-s);return{d:ae(l)+[o[0],o[o.length-1]].map(a=>ot(e(a.u,a.v,r),e(a.u,a.v,r-s))).join(""),y0:Math.min(...ge(e,o,r).map(a=>a[1])),y1:Math.max(...l.map(a=>a[1]))+2}}var Lt={};kt(Lt,{EASE_LIFT:()=>ut,bezier:()=>Kt,reducedMotion:()=>ye,setReducedMotion:()=>st,spring:()=>at,stepS:()=>lt,tdone:()=>Ce,tset:()=>Ie,tval:()=>ce,tween:()=>xe});var $e=!1,st=e=>{$e=e},ye=()=>$e;function at(e,t={}){return{x:e,v:0,t:e,k:t.k??100,c:t.c??18,m:t.m??1,eps:t.eps??.01}}function lt(e,t){if($e)return e.x=e.t,e.v=0,!1;let n=Math.max(1,Math.ceil(t*240)),r=t/n;for(let s=0;s<n;s++){let o=(-e.k*(e.x-e.t)-e.c*e.v)/e.m;e.v+=o*r,e.x+=e.v*r}return Math.abs(e.x-e.t)<e.eps&&Math.abs(e.v)<e.eps*10?(e.x=e.t,e.v=0,!1):!0}function Kt(e,t,n,r){let s=3*e,o=3*(n-e)-s,l=1-s-o,a=3*t,m=3*(r-t)-a,f=1-a-m,g=b=>((l*b+o)*b+s)*b,x=b=>((f*b+m)*b+a)*b,k=b=>(3*l*b+2*o)*b+s;return b=>{if(b<=0)return 0;if(b>=1)return 1;let w=b;for(let E=0;E<8;E++){let y=g(w)-b;if(Math.abs(y)<1e-5)break;let T=k(w);if(Math.abs(T)<1e-6)break;w-=y/T}if(!(w>=0&&w<=1)||Math.abs(g(w)-b)>1e-4){let E=0,y=1;w=b;for(let T=0;T<24;T++)g(w)<b?E=w:y=w,w=(E+y)/2}return x(w)}}var ut=Kt(.32,.72,0,1),xe=(e,t=700)=>({from:e,to:e,t0:-1e9,dur:t}),ce=(e,t)=>{let n=Pe((t-e.t0)/e.dur,0,1);return e.from+(e.to-e.from)*($e?1:ut(n))},Ie=(e,t,n,r)=>{e.to!==t&&(e.from=ce(e,n),e.to=t,e.t0=n+r)},Ce=(e,t)=>$e||t>=e.t0+e.dur;var xn="http://www.w3.org/2000/svg";function L(e,t,n){let r=document.createElementNS(xn,e);if(t)for(let s in t)r.setAttribute(s,String(t[s]));return n&&n.appendChild(r),r}function B(e){let t=L("g",{},e);return{g:t,sil:L("path",{class:"sil"},t),cr:L("path",{class:"nf lo"},t)}}var W=(e,t)=>{e.sil.setAttribute("d",t.sil),e.cr.setAttribute("d",t.crease)},Ot=(e,t,n,r)=>L("ellipse",{rx:j(n*t.S),ry:j(n*t.S*t.k),class:r},e),Pt=(e,t)=>{e.setAttribute("cx",String(j(t[0]))),e.setAttribute("cy",String(j(t[1])))},vn=0;function Ut(e,t,n,r=.7){let s="hl-fd"+ ++vn,o=L("defs",{},e),l=L("linearGradient",{id:s+"g",gradientUnits:"userSpaceOnUse",x1:0,y1:j(t),x2:0,y2:j(n)},o);L("stop",{offset:0,"stop-color":"#fff","stop-opacity":r},l),L("stop",{offset:1,"stop-color":"#fff","stop-opacity":0},l);let a=L("mask",{id:s,maskUnits:"userSpaceOnUse",x:0,y:0,width:400,height:320},o);return L("rect",{x:0,y:0,width:400,height:320,fill:`url(#${s}g)`},a),`url(#${s})`}function wn(e,t,n,r,s,o,l){let a=Ht(n,r,s,o,l),m=L("g",{class:"ghost",mask:Ut(e,a.y0,a.y1)},t);L("path",{d:a.d},m)}var ve=[],Ge=new Map,we=0,Vt=0,Me=null,Ee=null;function Yt(){let e=performance.now(),t=Math.min(.05,Math.max(0,(e-Vt)/1e3));Vt=e;let n=!1;for(let r of ve.slice())if(r.vis&&r.awake){try{r.awake=!!r.tick(t,e)}catch(s){r.awake=!1,setTimeout(()=>{throw s})}n=n||r.awake}we=n?requestAnimationFrame(Yt):0}function ct(e){e.awake=!0,we||(Vt=performance.now(),we=requestAnimationFrame(Yt))}var qt=()=>{st(!!Ee?.matches),ve.forEach(ct)};function En(){Me||(Me=new IntersectionObserver(e=>{for(let t of e){let n=Ge.get(t.target);if(n)for(let r of n)r.vis=t.isIntersecting,r.vis&&ct(r)}},{rootMargin:"80px"}),Ee=matchMedia("(prefers-reduced-motion: reduce)"),st(Ee.matches),Ee.addEventListener("change",qt))}function kn(){we&&cancelAnimationFrame(we),we=0,Me?.disconnect(),Me=null,Ee?.removeEventListener("change",qt),Ee=null}function re(e,t){En();let n={stage:e,tick:t,vis:!1,awake:!0};ve.push(n);let r=Ge.get(e);if(r){for(let o of r)n.vis=o.vis;r.add(n),n.vis&&ct(n)}else Ge.set(e,new Set([n])),Me.observe(e);t(0,performance.now());let s=!1;return{wake:()=>{s||ct(n)},unregister:()=>{if(s)return;s=!0,ve=ve.filter(l=>l!==n);let o=Ge.get(e);o&&(o.delete(n),o.size||(Ge.delete(e),Me?.unobserve(e))),ve.length||kn()}}}var De=new WeakMap,ke=new WeakMap;function pe(e,t){De.set(e,t);let n=0,r=a=>{let m=e.getBoundingClientRect();return[(a.clientX-m.left)/m.width*400,(a.clientY-m.top)/m.height*320]},s=a=>{clearTimeout(n),ke.get(e)?.hold(),t.move(r(a),a)},o=a=>{clearTimeout(n),ke.get(e)?.hold(),a.pointerType!=="mouse"&&e.releasePointerCapture?.(a.pointerId),t.down?t.down(r(a),a):t.move(r(a),a)},l=a=>{clearTimeout(n),n=window.setTimeout(()=>{t.leave(a),ke.get(e)?.release()},a.pointerType==="mouse"?0:1400)};return e.addEventListener("pointermove",s),e.addEventListener("pointerdown",o),e.addEventListener("pointerleave",l),()=>{clearTimeout(n),De.get(e)===t&&De.delete(e),e.removeEventListener("pointermove",s),e.removeEventListener("pointerdown",o),e.removeEventListener("pointerleave",l)}}var pt=[[128,150],[200,118],[272,150],[200,206],null],Ft=900,Mn=1200,Sn=1800,Xt=1200,Tn=450,_t={pointerType:"ghost"},Hn=0;function An([e,t]){let n=e-200,r=t-160;if(!n&&!r)return[200,320];let s=Math.min(n?(n>0?200:-200)/n:1/0,r?(r>0?160:-160)/r:1/0);return[200+n*s,160+r*s]}function mt(e,t,n){let r=0,s=Xt+Tn*(Hn++%4),o=-1,l=null,a=[200,320],m=!1,f=e.contains(e.ownerDocument.activeElement),g=!1,x=()=>{l=null,o=-1,De.get(e)?.leave(_t)},k=A=>{if(m||f||!t.length)return!1;if(ye())return l&&x(),!1;if(s>0)return s-=A*1e3,!0;let S=t[r];if(S===null)return l&&x(),n?.(r),r=(r+1)%t.length,s=Sn,!0;let $=De.get(e);if(!$)return!0;o<0&&(a=l??An(S),o=0),o=Math.min(Ft,o+A*1e3);let D=ut(o/Ft);return l=[a[0]+(S[0]-a[0])*D,a[1]+(S[1]-a[1])*D],$.move(l,_t),o<Ft||(n?.(r),r=(r+1)%t.length,o=-1,s=Mn),!0},b=()=>{l=null,o=-1},w=()=>{m||f||(r=0,o=-1,s=Xt,M.wake())},E={hold:()=>{m=!0,b()},release:()=>{m&&(m=!1,w())}},y=()=>{f=!0,b()},T=A=>{f&&!e.contains(A.relatedTarget)&&(f=!1,w())};e.addEventListener("focusin",y),e.addEventListener("focusout",T),ke.set(e,E);let M=re(e,k);return{stop:()=>{g||(g=!0,M.unregister(),e.removeEventListener("focusin",y),e.removeEventListener("focusout",T),ke.get(e)===E&&ke.delete(e),l&&x())}}}function me(){let e=[];return{add:t=>{e.push(t)},on:(t,n,r,s)=>{let o=r;t.addEventListener(n,o,s),e.push(()=>t.removeEventListener(n,o,s))},dispose:()=>{let t=e;e=[];for(let n=t.length-1;n>=0;n--)t[n]()}}}var de={riffle:[0,40,90],terrain:[1.5,3,5],exploded:[12,28,40],phosphor:[150,520,1500],slow:[.6,.2,.05],turntable:[200,650,1500],keyboard:[1,2,3.5],elevator:[40,100,220],phone:[16,28,40],laptop:[100,125,150],terminal:[1,2,3.5],cabinet:[1.5,3,5],branches:[1,3,6],vault:[250,600,1500],lockers:[55,90,120],padlock:[45,90,100],patch:[1,2.5,5],dish:[30,50,70],router:[.5,1.5,3],loupe:[1.3,1.8,2.6],sieve:[6,14,24],rail:[1,2,3.5],plug:[.35,.6,.9],query:[20,40,55],drawer:[12,22,34],basket:[8,16,28],plot:[3,6,12],hub:[10,16,24],relay:[40,120,220],settle:[90,120,150],format:[9,12,14],rebuild:[8,14,20],stack:[22,34,46]},Ln=.5;function Fn(e){let t=typeof e=="string"&&e.trim()!==""?Number(e):e;return typeof t!="number"||!Number.isFinite(t)?Ln:Math.min(1,Math.max(0,t))}function zt(e,t){let[n,r,s]=de[e],o=Fn(t),l=o<=.5?n+o/.5*(r-n):r+(o-.5)/.5*(s-r);return Math.round(l*1e3)/1e3}var Vn="http://www.w3.org/2000/svg",dt=new WeakMap,On=e=>{typeof reportError=="function"?reportError(e):setTimeout(()=>{throw e})};function Se(e,t,n){if(typeof document>"u")throw new Error(`hairline: ${e.id}() needs a DOM. Call it in the browser, once the element exists: in an effect, in onMount, or in a script after the element.`);if(!t||t.nodeType!==1)throw new TypeError(`hairline: ${e.id}() takes an element as its first argument, and got ${t===null?"null":typeof t}.`);dt.get(t)?.();let r={...n},s=t.ownerDocument,o=t.getRootNode();Wt(o.nodeType===9||"host"in o?o:s);let l=new Set,a=(M,A)=>{!l.has(M)&&t.hasAttribute(M)||(A===null?(t.removeAttribute(M),l.delete(M)):(t.setAttribute(M,A),l.add(M)))},m=()=>{a("data-hairline-theme",r.theme==="light"||r.theme==="dark"?r.theme:null),a("aria-label",t.hasAttribute("aria-labelledby")?null:typeof r.label=="string"?r.label:e.label)};a("data-hairline",e.id),a("role",e.focusable?"group":"img"),e.focusable&&a("tabindex","0"),m();let f=s.createElementNS(Vn,"svg");f.setAttribute("viewBox","0 0 400 320"),f.setAttribute("aria-hidden","true"),t.appendChild(f);let g=null;e.focusable&&(g=s.createElement("span"),g.setAttribute("data-hairline-live",""),g.setAttribute("aria-live","polite"),t.appendChild(g));let x=null,k=null,b={get textContent(){return x},set textContent(M){let A=M??"";if(A===x)return;x=A,g&&g.textContent!==A&&(!k||A===e.rest||t.matches(":hover, :focus-within"))&&(g.textContent=A);let S=r.onRead;if(typeof S=="function")try{S(A)}catch($){On($)}}},w=zt(e.id,r.intensity);k=r.play===!0?mt(t,e.tour??pt):null;let E;try{E=e.engine({stage:t,svg:f,read:b},w)}catch(M){throw k?.stop(),M}x===null&&(b.textContent=e.rest);let y=!1,T=()=>{if(!y){y=!0,dt.get(t)===T&&dt.delete(t),k?.stop(),k=null,E.destroy(),f.remove(),g?.remove();for(let M of l)t.removeAttribute(M);l.clear()}};return dt.set(t,T),{update(M){if(y||!M)return;let A=r,S=M;for(let R in S)S[R]===void 0?delete A[R]:A[R]=S[R];let $=zt(e.id,r.intensity);$!==w&&(w=$,E.set($));let D=r.play===!0;D!==!!k&&(k?.stop(),k=D?mt(t,e.tour??pt):null),m()},destroy:T}}var Be=3,U=54,N=60,$t=5,Y=3,We=26,ht=1.6,ft=2.4,Te=1.3,Zt=3.2,Qt=2.2,Jt=3.6,Pn=2.6,Rn=2.1,Ke=$t+Y,Ne=Ke+Be*We+Y,jt=.7,zn=e=>.375*e.nu+.307*e.nv>0;function jn(e,t,n,r,s){let o=(l,a)=>l.map(m=>e(m.u,a,m.v));return{sil:Z(be(o(t,r).concat(o(t,s)))),crease:ae(o(je(n,zn),s))}}var en=({stage:e,svg:t,read:n},r)=>{let s=me(),o=de.drawer[2],l=le(45,.5,Rn),a=N+o+ft,m=[[0,0,0],[U,0,0],[0,0,Ne],[U,0,Ne],[U,N,0],[0,a,Ke],[0,a,Ne-Y],[U,a,Ke]];ue(l,m.concat(m.map(([h,i,u])=>[U-h,N-i,Ne-u])),200,166);let f=ne(l),g=ze(l),x=L("g",{},t),[k,b]=J(3,3,U-3,N-3,2.4,1);W(B(x),Q(f,g,k,b,0,$t));let[w,E]=J(0,0,U,N,3,1.4);W(B(x),Q(f,g,w,E,$t,Ne));let y=Y+Zt,T=U-Y-Zt,M=[y+(T-y)/3,y+2*(T-y)/3],A=(h,i)=>Z(h.map(u=>f(u.u,i,u.v)));L("path",{class:"nf lo",d:Array.from({length:Be},(h,i)=>{let u=Ke+i*We+ht/2;return A(te(y-.8,u+Qt-.8,T+.8,u+We-ht-Jt+1.4,.8,2),N)}).join("")},x);let S=Array.from({length:Be},(h,i)=>{let u=Ke+i*We+ht/2,p=u+We-ht,c=L("g",{},x),H=[0,1,2,3].map(()=>L("path",{class:"lo"},c));return H.push(L("path",{class:"nf sil"},c)),{z0:u,z1:p,parts:H,front:B(c),pull:B(c),drawn:NaN}}),$=h=>te(Y,h.z0,U-Y,h.z1,1.6,4),D=h=>te(Y+1,h.z0+1,U-Y-1,h.z1-1,1,4),R=(h,i,u,p,c,H,q)=>p-u<.05?"":Q(f,g,te(h,u,i,p,q,3),null,c,H).sil;function F(h,i){if(i===h.drawn)return;h.drawn=i;let u=h.z0+Qt,p=h.z1-Jt,c=N+i,H=c+ft,[q,se,fe,Qe,Je]=h.parts;q.setAttribute("d",R(y,T,N,c,u,u+Te,.6)),se.setAttribute("d",R(y,y+Te,N,c,u+Te,p,.5)),fe.setAttribute("d",M.map(Ve=>R(Ve-.5,Ve+.5,N,c,u+Te,p-Pn,.4)).join("")),Qe.setAttribute("d",R(T-Te,T,N,c,u+Te,p,.5)),Je.setAttribute("d",R(y,T,N,c,u,p,.8)),W(h.front,jn(f,$(h),D(h),c,H));let et=(h.z0+h.z1)/2,tt=U/2,[Fe,nt]=J(tt-9,H,tt+9,H+2.6,1.3,.6);W(h.pull,Q(f,g,Fe,nt,et-1.3,et+1.3))}let O=S.map(()=>xe(0)),I=re(e,(h,i)=>{let u=!1;return S.forEach((p,c)=>{F(p,ce(O[c],i)),Ce(O[c],i)||(u=!0)}),u});s.add(I.unregister);let C=r,z=-2;function P(h,i){if(h===z)return;z=h;let u=h<0?1:h;O.forEach((p,c)=>Ie(p,c===u?h<0?C*jt:C:0,i,0)),S.forEach((p,c)=>p.front.sil.classList.toggle("hi",c===u)),n.textContent=h<0?"rest":`drawer ${Be-h} \xB7 0`,I.wake()}O[1]=xe(C*jt),P(-1,-1e9),S.forEach((h,i)=>F(h,ce(O[i],0)));let d=Math.cos(l.az),v=Math.sin(l.az),G=Math.sqrt(1-l.k*l.k),V=(h,i)=>{let u=(h[0]-l.ox)/(l.S*d)+i*v/d;return[u,((u*v+i*d)*l.k-(h[1]-l.oy)/l.S)/G]};function ie(h){for(let u=Be-1;u>=0;u--){let[p,c]=V(h,N+ft+(u===1?C*jt:0)),H=S[u];if(p>=Y&&p<=U-Y&&c>=H.z0&&c<=H.z1)return u}let i=V(h,N+ft)[1];return S.reduce((u,p,c)=>Math.abs(i-(p.z0+p.z1)/2)<Math.abs(i-(S[u].z0+S[u].z1)/2)?c:u,0)}return s.add(pe(e,{move:h=>P(ie(h),performance.now()),leave:()=>P(-1,performance.now())})),s.add(()=>t.replaceChildren()),{set:h=>{C=h;let i=z;z=-2,P(i,performance.now())},destroy:s.dispose}};var Xe=3,K=36,oe=11,He=8,gt=2.6,bt=2,$n=1.6,In=[-22,-11,0,11,22],Cn=40,Gn=2.35,nn=.8,rn=.6,tn=(e,t,n)=>{let r=e<0?1:e;return t===r?e<0?n*nn:n:e>=0&&t===r+1?n*rn:bt},on=({stage:e,svg:t,read:n},r)=>{let s=me(),[,o,l]=de.sieve,a=le(45,.5,Gn),m=He+Xe*oe+bt+l*(1+rn),f=He+Xe*oe+2*bt+o*nn,g=[];for(let[i,u]of[[-K,0],[K,0],[0,-K],[0,K]])g.push([i,u,f-m],[i,u,m]);ue(a,g,200,166);let x=ne(a),k=x(0,0,0)[1],b=i=>x(0,0,i)[1]-k,w=it(K,72),E=it(K-gt,72),y=L("g",{},t),T=(i,u)=>be(w.map(p=>x(p.u,p.v,i)).concat(w.map(p=>x(p.u,p.v,u))));W(B(y),{sil:Z(T(0,He)),crease:Z(E.map(i=>x(i.u,i.v,He)))});let M=Array.from({length:Xe},()=>({s:B(y),mesh:L("path",{class:"nf lo"},y)})),A=(i,u,p)=>{let c=[[]];for(let[H,q]of i){let se=x(H,q,u),fe=Re(a,se[0],se[1],p);Math.hypot(H,q)<K-gt&&Math.hypot(fe[0],fe[1])<K-gt?c[c.length-1].push(se):c[c.length-1].length&&c.push([])}return c.filter(H=>H.length>1)},S=(i,u)=>Array.from({length:29},(p,c)=>[i[0]+(u[0]-i[0])*c/28,i[1]+(u[1]-i[1])*c/28]),$=In.flatMap(i=>[S([i,-K],[i,K]),S([-K,i],[K,i])]);$.push(Array.from({length:73},(i,u)=>{let p=Math.PI/4+u/72*Math.PI*2,c=K-gt-.05;return[c*Math.cos(p),c*Math.sin(p)]}));let D=T(0,oe),R=E.map(i=>x(i.u,i.v,oe)),F=$.flatMap(i=>A(i,$n,oe)),O=(i,u)=>i.map(p=>[p[0],p[1]+u]),I=Array.from({length:Xe},()=>xe(bt)),C=I.map(()=>NaN),z=-2,P=r;function d(i){let u=He;I.forEach((p,c)=>{if(u+=ce(p,i),u!==C[c]){C[c]=u;let H=b(u);W(M[c].s,{sil:Z(O(D,H)),crease:Z(O(R,H))}),M[c].mesh.setAttribute("d",F.map(q=>ae(O(q,H))).join(""))}u+=oe})}let v=re(e,(i,u)=>(d(u),I.some(p=>!Ce(p,u))));s.add(v.unregister);function G(i,u){if(i===z)return;z=i;let p=i<0?1:i;I.forEach((c,H)=>Ie(c,tn(i,H,P),u,Math.abs(H-p)*Cn)),M.forEach((c,H)=>c.s.sil.classList.toggle("hi",H===p)),n.textContent=i<0?"rest":`sieve ${Xe-i} \xB7 0`,v.wake()}G(-1,-1e9),d(0);let V=()=>{let i=He;return I.map((u,p)=>{i+=tn(-1,p,P);let c=x(0,0,i+oe/2)[1];return i+=oe,c})},ie=V(),h=i=>ie.reduce((u,p,c)=>Math.abs(i[1]-p)<Math.abs(i[1]-ie[u])?c:u,0);return s.add(pe(e,{move:i=>G(h(i),performance.now()),leave:()=>G(-1,performance.now())})),s.add(()=>t.replaceChildren()),{set:i=>{P=i,ie=V();let u=z;z=-2,G(u,performance.now())},destroy:s.dispose}};var ee=210,X=26,_e=5,Dn=15,Le=6,sn=1/9,he=ee*.62,Ae=38,Nn=e=>{let t=Pe(Math.min(e,1-e)/.08,0,1);return t*t*(3-2*t)},an=ee/Le/2,Bn=an/2,Wn=e=>{let t=e-he,n=t<0?an:Bn;return Math.abs(t)>=n?0:Math.cos(Math.PI/2*(Math.abs(t)/n))**2},ln=({stage:e,svg:t,read:n},r)=>{let s=me(),o=r,l=null,a=2.4,m=at(1,{eps:.002}),f=le(45,.5,1.8);ue(f,[[0,0,0],[ee,X,0],[ee,0,0],[0,X,0],[0,0,Ae],[he,-8,Ae]],200,168);let g=ne(f),x=ze(f),k=L("g",{},t),[b,w]=J(0,0,ee,X,5,1.3);W(B(k),Q(g,x,b,w,0,_e));let E=L("path",{class:"nf lo"},k),y=L("g",{},k),T=[];for(let F=0;F<Le;F++){let O={...B(y),dots:[]};for(let I=0;I<9;I++)O.dots.push(Ot(O.g,f,1,"dot off"));T.push(O)}let M=[[-8,-3,0,Ae-4,he-5.5],[X+3,X+8,0,Ae-4,he+X+5.5],[-8,X+8,Ae-4,Ae,he+X+8.5]].map(([F,O,I,C,z])=>{let P=B(y),[d,v]=J(he-1.6,F,he+1.6,O,1.4,.6);return W(P,Q(g,x,d,v,I,C)),P.sil.style.transition="none",{el:P,key:z}}),A=Array.from({length:Le},()=>at(0,{eps:.03})),S=-1,$="",D=0,R=re(e,F=>{let O=lt(m,F),I=ye()?0:1;l||(m.t=I),a+=F*m.x;let C=[];for(let i=0;i<Le;i++){let u=i/Le+a*sn,p=u-Math.floor(u),c=Math.floor(u);C.push({j:i,x:p*ee,s:Nn(p),serial:141+c*Le+i})}let z=-1;if(l){let i=34;for(let u of C)u.s>.6&&Math.abs(u.x-l[0])<i&&(i=Math.abs(u.x-l[0]),z=u.j)}S=z,A.forEach((i,u)=>{i.t=u===S?11:0,lt(i,F)&&(O=!0)}),C.sort((i,u)=>i.x-u.x);let P=0,d=0,v=M.map((i,u)=>({id:"g"+u,key:i.key,g:i.el.g}));C.forEach((i,u)=>{let p=T[u],c=Dn*i.s,H=i.x-c/2,q=i.x+c/2,se=X/2-c/2,fe=X/2+c/2,Qe=_e+A[i.j].x,Je=Qe+c;if(v.push({id:u,key:i.x+X/2,g:p.g}),c<.3){p.g.setAttribute("visibility","hidden");return}p.g.removeAttribute("visibility");let[et,tt]=J(H,se,q,fe,2.6*i.s,.9*i.s);W(p,Q(g,x,et,tt,Qe,Je));let Fe=i.j===S;p.sil.classList.toggle("hi",Fe);let nt=c*.2,Ve=j(.55*i.s*f.S);p.dots.forEach((rt,Et)=>{Pt(rt,g(i.x+(Et%3-1)*nt,X/2+(Math.floor(Et/3)-1)*nt,Je)),rt.setAttribute("rx",String(Ve)),rt.setAttribute("ry",String(j(Ve*f.k))),rt.setAttribute("class",i.serial>>Et&1?Fe?"dot":"dot m":"dot off")}),Fe&&(d=i.serial),P=Math.max(P,Wn(i.x)*i.s)}),v.sort((i,u)=>i.key-u.key);let G=v.map(i=>i.id).join();G!==$&&($=G,v.forEach(i=>y.appendChild(i.g)));let V=Math.round(P*100);if(V!==D){D=V;let i=V?`color-mix(in srgb, var(--hl-hi) ${V}%, var(--hl-edge))`:"";M.forEach(u=>{u.el.sil.style.stroke=i})}let ie=(a*sn*ee%21+21)%21,h=[];for(let i=ie;i<ee;i+=21)i>5&&i<ee-5&&h.push(ot(g(i,4,_e),g(i,X-4,_e)));return E.setAttribute("d",h.join("")),n.textContent=`rate ${m.x.toFixed(2)}\xD7`+(S>=0?` \xB7 #${String(d).padStart(4,"0")}`:""),ye()&&!l&&m.x===0?O:!0});return s.add(R.unregister),s.add(pe(e,{move:F=>{l=Re(f,F[0],F[1],_e),m.t=o,R.wake()},leave:()=>{l=null,R.wake()}})),s.add(()=>t.replaceChildren()),{set:F=>{o=F,l&&(m.t=F),R.wake()},destroy:s.dispose}};function Kn(e,t){return Se({id:"slow",label:"Crates riding a belt through a gate. Hovering slows the clock without stopping it.",rest:"rate 1.00\xD7",engine:ln},e,t)}function Xn(e,t){return Se({id:"sieve",label:"Three test sieves stacked over a pan: the pointer's height picks one, it rises clear of the stack, and every mesh is bare.",rest:"rest",engine:on},e,t)}function _n(e,t){return Se({id:"drawer",label:"A filing cabinet of three drawers: the pointer's height picks one, it slides out, and inside are two dividers and nothing between them.",rest:"rest",engine:en},e,t)}var Un={...At,...Lt,...Rt},Ze,Yn=e=>{Ze=e},{Cam:qn,clamp:Zn,facing:Qn,fit:Jn,prism:yt,proj:er,rings:xt,unproj:tr,spring:nr,stepS:rr,seg:or,flatDot:ir,mk:It,place:sr,pointer:ar,put:vt,register:lr,disposer:ur,solid:Ue}=Un,cr=12.7,pr=27,un=6,cn=14,Ct=1,pn=24.5,Ye=19.5,Gt=15,mn=4.4,mr=2.4,wt=31,dn=26,dr=120,qe=[-1.5,-.5,.5,1.5].map(e=>e*cr);function hr({stage:e,svg:t,read:n},r){let s=ur(),o=r,l=qn(45,.5,1.95);Jn(l,[[-64,-50,-5],[64,50,-5],[64,-50,-5],[-64,50,-5],[0,0,40+Gt+6]],200,166);let a=er(l),m=Qn(l),f=It("g",{},t),[g,x]=xt(-64,-50,64,50,9,2);vt(Ue(f),yt(a,m,g,x,-5,0));let k=[];for(let d of[-1,1])for(let v of qe)k.push({x:v,y:d*pr,side:d});k.sort((d,v)=>d.x+d.y-(v.x+v.y));let b=k.find(d=>d.side>0&&d.x===qe[0]),w=It("path",{class:"dash lo nf"},f);for(let d of k){let[v,G]=xt(d.x-un/2,d.y-cn/2,d.x+un/2,d.y+cn/2,1.2,.6),V=Ue(f);vt(V,yt(a,m,v,G,0,Ct)),d===b&&(b.s=V)}let E=It("g",{},f),y=(d,v)=>{let G=v<0?-wt:Ye-2,V=v<0?-Ye+2:wt;return{x:d,side:v,rr:xt(d-mn/2,G,d+mn/2,V,.9,.5),s:null}},T=qe.map(d=>y(d,-1)),M=qe.map(d=>y(d,1));T.forEach(d=>{d.s=Ue(E)});let[A,S]=xt(-pn,-Ye,pn,Ye,3.4,1.6),$=Ue(E),D=ir(E,l,2.2,"dot m");M.forEach(d=>{d.s=Ue(E)});let R=T.concat(M),F=nr(o*.8,{eps:.02}),O=NaN;function I(){let d=Math.max(0,F.x);if(d===O)return;O=d;let v=()=>Ct+d;for(let V of R)vt(V.s,yt(a,m,V.rr[0],V.rr[1],v(),v()+mr));vt($,yt(a,m,A,S,v()+.5,v()+Gt)),sr(D,a(qe[0]+3,Ye-6,v()+Gt));let G=d<1.5;b.s.sil.classList.toggle("hi",!G),M[0].s.sil.classList.toggle("hi",G),w.setAttribute("d",d<1.5?"":R.map(V=>or(a(V.x,V.side*(wt-3),Ct),a(V.x,V.side*(wt-3),v()))).join(""))}let C=lr(e,d=>{let v=rr(F,d);return I(),v});s.add(C.unregister),I();let z=null;function P(){if(!z)F.t=o*.8,n.textContent="rest";else{let d=Math.hypot(z[0],z[1]*1.25),v=Zn((d-dn)/(dr-dn),0,1);F.t=o*v,n.textContent=v===0?"seated":`lift ${(o*v).toFixed(1)}`}C.wake()}return P(),s.add(ar(e,{move:d=>{z=tr(l,d[0],d[1],0),P()},leave:()=>{z=null,P()}})),s.add(()=>t.replaceChildren()),{set:d=>{o=d,O=NaN,P()},destroy:s.dispose}}Yn({name:"seat",means:"A chip floats over its footprint; bring the pointer in and it seats its leads on the pads.",rules:[1,5,6,9],range:[18,30,40],tour:[[110,120],[200,150],[300,200],null],mount:hr});de.seat=Ze.range;function Xr(e,t){return Se({id:"seat",label:Ze.means,rest:"rest",engine:Ze.mount,tour:Ze.tour},e,t)}export{_n as drawer,Xr as seat,Xn as sieve,Kn as slow};
|