@miravo/cli-linux-x64 0.12.0 → 0.13.0
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/console-dist/assets/api-BG2sUkwk.js +1 -0
- package/console-dist/assets/api-CKfC8_zv.js +1 -0
- package/console-dist/assets/{asset-detail-C4zF_8rm.js → asset-detail-B2YDSfM1.js} +1 -1
- package/console-dist/assets/{asset-detail-actions-Dv9g2Z9t.js → asset-detail-actions-BrttEn24.js} +1 -1
- package/console-dist/assets/{backup-power-CAc85zvh.js → backup-power-Cm_Ij5yj.js} +1 -1
- package/console-dist/assets/{by-path-DmADo_qX.js → by-path-e6y8DTMV.js} +1 -1
- package/console-dist/assets/catalog-Bz24KMiz.js +1 -0
- package/console-dist/assets/{catalog-BMLSbdye.js → catalog-DOGCbTe4.js} +1 -1
- package/console-dist/assets/{catalog-template-icons-DGyxSm-F.js → catalog-template-icons-7CBAYTtP.js} +1 -1
- package/console-dist/assets/{commercial-building-CINKWcQV.js → commercial-building-D95MTyEI.js} +1 -1
- package/console-dist/assets/{console-panel-Cg2sBJcN.js → console-panel-iWo8EgKP.js} +1 -1
- package/console-dist/assets/{control-B-TcWj5c.js → control-BMhNX7vM.js} +1 -1
- package/console-dist/assets/control-CML5aS8w.js +1 -0
- package/console-dist/assets/{district-heating-DqGtrEKq.js → district-heating-B_YycTG-.js} +1 -1
- package/console-dist/assets/{events-Dz_zsLGE.js → events-5RYkaW81.js} +1 -1
- package/console-dist/assets/events-z582V8se.js +1 -0
- package/console-dist/assets/{export-tab-BS4GlLBV.js → export-tab-BsV7px7m.js} +1 -1
- package/console-dist/assets/factory-3x3_UmJZ.js +1 -0
- package/console-dist/assets/factory-LkZOsGje.js +1 -0
- package/console-dist/assets/{floor-page-BOlkyLaW.js → floor-page-D0qm0GgG.js} +1 -1
- package/console-dist/assets/{get-error-message-CEvauOXv.js → get-error-message-C9VW9IZB.js} +1 -1
- package/console-dist/assets/{index-B7ZG1VO6.js → index-M2C34y3X.js} +3 -3
- package/console-dist/assets/{integration-api-iM6SWQ6d.js → integration-api-ChbzMP5N.js} +1 -1
- package/console-dist/assets/integrations-BpOu11IH.js +1 -0
- package/console-dist/assets/{integrations-NcPRP3je.js → integrations-Cop24rSE.js} +1 -1
- package/console-dist/assets/{login-snbitj6V.js → login-BZANmwgH.js} +1 -1
- package/console-dist/assets/{models-Dy_JFNac.js → models-BgGuH6PQ.js} +1 -1
- package/console-dist/assets/models-C09Ba-2G.js +1 -0
- package/console-dist/assets/{pharma-cleanroom-CBgNUnIv.js → pharma-cleanroom-BbYfEQjP.js} +1 -1
- package/console-dist/assets/{protocol-card-Cp8O59cX.js → protocol-card-B8XGneNM.js} +1 -1
- package/console-dist/assets/{registry-Kj-oMlVm.js → registry-BXGfJ4np.js} +2 -2
- package/console-dist/assets/{status-kit-BLG7OeIE.js → status-kit-pFRjEjVU.js} +1 -1
- package/console-dist/assets/tags-BjW65yls.js +1 -0
- package/console-dist/assets/{tags-bloWH2Qa.js → tags-Bw7b0x14.js} +1 -1
- package/console-dist/assets/{transition-nav-link-CBN2nulP.js → transition-nav-link-CSrpkA7_.js} +1 -1
- package/console-dist/assets/use-engine-command-mutation-DrMOfYty.js +1 -0
- package/console-dist/assets/{use-transition-navigate-BDkvJJsk.js → use-transition-navigate-D2Y8kfw6.js} +2 -2
- package/console-dist/assets/{useQuery-smgfSdOx.js → useQuery-Cl48zZ73.js} +1 -1
- package/console-dist/assets/{validation-BOdAwXQ_.js → validation-Cxhiswz2.js} +1 -1
- package/console-dist/assets/{water-treatment-BJXMtYlP.js → water-treatment-jG0T2rhc.js} +1 -1
- package/console-dist/index.html +23 -23
- package/miravo +2 -2
- package/package.json +1 -1
- package/console-dist/assets/api-Dw9ti2cu.js +0 -1
- package/console-dist/assets/api-tM5PSXjr.js +0 -1
- package/console-dist/assets/catalog-Ccubt-hm.js +0 -1
- package/console-dist/assets/control-DXA-_1Gu.js +0 -1
- package/console-dist/assets/events-iYGC0JpW.js +0 -1
- package/console-dist/assets/factory-BCPLmUx4.js +0 -1
- package/console-dist/assets/factory-CBXx3oBo.js +0 -1
- package/console-dist/assets/integrations-Bw0jY-xH.js +0 -1
- package/console-dist/assets/models-CsdLFBfC.js +0 -1
- package/console-dist/assets/tags-BRYVC9vb.js +0 -1
- package/console-dist/assets/use-engine-command-mutation-oLQW2r4F.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{c as t}from"./vendor-charts-95ykyDlI.js";import{ot as n}from"./vendor-ui-D8j69UH4.js";import{b as r,d as i,f as a,l as o,m as s}from"./dom-CQuChC3G.js";import{n as c,t as l}from"./by-path-DmADo_qX.js";import{A as u,D as d,E as f,F as p,H as m,L as h,O as g,P as ee,V as _,X as te,a as v,b as ne,g as re,i as ie,j as ae,k as y,n as oe,o as se,r as ce,t as le}from"./status-DNfdEhTs.js";import{r as ue,t as de}from"./chiller-Jug0vRg-.js";import{n as fe,t as pe}from"./compressor-BkWNdwvy.js";import{a as me,i as b,n as he,o as ge,r as _e,s as ve,t as ye}from"./genset-DBpkUT9p.js";import{i as be,n as xe,r as Se,t as Ce}from"./tank-xgQfMS2d.js";import{t as we}from"./stages-C0cErwSQ.js";var Te=[[`genA`,`diesel-generator`,`power`,`gensets`,0],[`genB`,`diesel-generator`,`power`,`gensets`,1],[`genC`,`diesel-generator`,`power`,`gensets`,2],[`bulk`,`storage-tank`,`fuel`,`storage`,0],[`day`,`storage-tank`,`fuel`,`storage`,1],[`chillerA`,`industrial-chiller`,`cooling`,`chiller-plant`,0],[`chillerB`,`industrial-chiller`,`cooling`,`chiller-plant`,1],[`pumpA`,`centrifugal-pump`,`cooling`,`chilled-water`,0],[`pumpB`,`centrifugal-pump`,`cooling`,`chilled-water`,1],[`compressor`,`air-compressor`,`support`,`start-air`,0],[`fan`,`ac-induction-motor`,`support`,`ventilation`,0]],Ee=e=>l(Te,e);function De(e){let t=(e,t,n)=>({key:e,assetId:e,name:t,kind:`utility`,area:n});return[t(e.genA,`Genset A (primary)`,`Power`),t(e.genB,`Genset B`,`Power`),t(e.genC,`Genset C (reserve)`,`Power`),t(e.bulk,`Bulk fuel tank`,`Fuel`),t(e.day,`Day tank`,`Fuel`),t(e.chillerA,`Chiller A`,`Cooling`),t(e.chillerB,`Chiller B`,`Cooling`),t(e.pumpA,`Chilled-water pump 1`,`Cooling`),t(e.pumpB,`Chilled-water pump 2`,`Cooling`),t(e.compressor,`Start-air compressor`,`Support`),t(e.fan,`Hall ventilation fan`,`Support`)]}var Oe=e(t(),1),x=64,ke=2.2;function Ae(e,t,n){let{k:r,G:i,P:a,S:o,L:s,D:c,slab:l,cyl:u}=e,d=[],f=t.y+t.d,p=t.x+t.w,m=e=>s(e,{tone:`faint`}),h=[];for(let e=t.x+11;e<p-4;e+=11)h.push(r.segment([e,f,3],[e,f,x-9],a));for(let e=t.y+11;e<f-4;e+=11)h.push(r.segment([p,e,3],[p,e,x-9],a));let g=[];for(let e of[x-7,x-5,x-3])g.push(r.segment([t.x+4,f,e],[p-4,f,e],a)),g.push(r.segment([p,t.y+4,e],[p,f-4,e],a));d.push(l({x:t.x-1.6,y:t.y-1.6,w:t.w+3.2,d:t.d+3.2,r:2},0,3,{tone:`lo`},2,.3)),d.push(o(r.slabOf(t,0,x,a,2,.6),{tone:`lo`,inner:m(h.join(``))+s(g.join(``),{tone:`lo`})+m(r.sideSeam(t,3,a,2))})),d.push(s(r.planOutline(r.insetPlan(t,2),x,a,2),{tone:`lo`}));let ee=(e,t,n,i,o)=>{d.push(l({x:e-1,y:t-1,w:n+2,d:i+2,r:1},x,3,{tone:`lo`},2,.3)),d.push(l({x:e,y:t,w:n,d:i,r:1},x+3,o,{tone:`mid`},2,.3));let c=[];for(let s=x+5;s<x+3+o-1;s+=2.4)c.push(r.segment([e+2,t+i,s],[e+n-2,t+i,s],a));d.push(s(c.join(``),{tone:`faint`}));let u=x+3+o;for(let o of[e+n*.3,e+n*.7]){let e=t+i/2,n=[r.ring(o,e,i*.36,u,a,24),r.ring(o,e,i*.16,u,a,16)];for(let t=0;t<4;t++){let s=t/4*Math.PI*2+.4;n.push(r.segment([o+Math.cos(s)*i*.16,e+Math.sin(s)*i*.16,u],[o+Math.cos(s)*i*.36,e+Math.sin(s)*i*.36,u],a))}d.push(s(n.join(``),{tone:`mid`}))}};ee(t.x+12,t.y+t.d-52,34,18,10),ee(t.x+60,t.y+t.d-44,34,18,10),d.push(u(t.x+t.w-16,t.y+22,4,x,11,{tone:`mid`},20),u(t.x+t.w-16,t.y+22,5,x+10.4,1.6,{tone:`mid`},20),l({x:t.x+14,y:t.y+14,w:14,d:10,r:.8},x,5,{tone:`mid`},2,.3));let _=t.x+6;d.push(l({x:_-1.4,y:f,w:24.8,d:.8,r:.2},0,31.8,{tone:`lo`},2,0),`<g transform="${e.front(f+.9)}"><path class="sf-plate" d="M${_} -30H${_+22}V0H${_}Z"/>${Array.from({length:9},(e,t)=>`<path class="iso-line" data-tone="faint" d="M${_} ${-(3+t*3)}H${_+22}"/>`).join(``)}<path class="iso-line" data-tone="mid" d="M${_} -30H${_+22}V0H${_}Z"/></g>`,l({x:_,y:f+.8,w:22,d:1,r:.2},0,2.4,{tone:`mid`},2,0)),d.push(l({x:_-1,y:f,w:24,d:.9,r:.2},38,16,{tone:`lo`},2,0));let te=[];for(let e=40;e<53.5;e+=1.8)te.push(r.segment([_+.6,f+.9,e],[_+22-.6,f+.9,e],a));d.push(s(te.join(``),{tone:`mid`})),d.push(u(_+22+3.6,f+1.2,1.2,28,2.2,{tone:`mid`},10));let v=t.y+36;d.push(l({x:p,y:v-1.2,w:.9,d:12.4,r:.2},0,25,{tone:`lo`},2,0),l({x:p+.9,y:v,w:.5,d:10,r:.2},0,22.4,{tone:`mid`},2,0),l({x:p,y:v-3,w:4.4,d:16,r:.4},26,1.4,{tone:`mid`},2,.2),u(p+1.4,v+12.4,1.1,14,2,{tone:`mid`},10)),d.push(s(r.segment([p+1.4,v+1.2,13],[p+1.4,v+1.2,19],a)+r.segment([p+1.4,v+2,3],[p+1.4,v+9,3],a),{tone:`hi`}));let ne=t.y+72;d.push(l({x:p,y:ne,w:.9,d:30,r:.2},22,26,{tone:`lo`},2,0));let re=[];for(let e=24;e<47.5;e+=1.8)re.push(r.segment([p+.9,ne+1.4,e],[p+.9,ne+28.6,e],a));d.push(s(re.join(``),{tone:`mid`}));for(let{x:t,z:r,r:s}of n){let n=i.frameAlong([t,f,r],[0,1,0]);d.push(o(i.disc(0,1.2,s+2.8,n,a),{tone:`mid`}),o(i.disc(1.2,ke,s+1.4,n,a),{tone:`mid`}),c([0,1,2,3,4,5].map(n=>e.at([t+Math.cos(n*1.047)*(s+2),f+1.2,r+Math.sin(n*1.047)*(s+2)])),{size:.4}))}return d.join(``)}function je(e,t){let{k:n,P:r,L:i,slab:a}=e,o=[];for(let e of t){o.push(a(e,0,1.4,{tone:`lo`},2,.2));let t=[];if(e.w>=e.d)for(let i=e.x+9;i<e.x+e.w-2;i+=9)t.push(n.lineOnTop([i,e.y+.8],[i,e.y+e.d-.8],1.5,r));else for(let i=e.y+9;i<e.y+e.d-2;i+=9)t.push(n.lineOnTop([e.x+.8,i],[e.x+e.w-.8,i],1.5,r));o.push(i(t.join(``)+n.planOutline(n.insetPlan(e,.8),1.5,r,2),{tone:`faint`}))}return o.join(``)}function Me(e,t,n,r){let{k:i,P:a,S:o,L:s,slab:c}=e,l=[],u=t.y+t.d;for(let e=t.x+14;e<t.x+t.w-4;e+=14)l.push(i.segment([e,u,3],[e,u,n-5],a));let d=[o(i.slabOf(t,0,n,a,2,.4),{tone:`lo`,inner:s(l.join(``)+i.sideSeam(t,4,a,2),{tone:`faint`})}),c({x:t.x-1.5,y:t.y-1.5,w:t.w+3,d:t.d+3,r:.4},n,2.2,{tone:`mid`},2,.2)];for(let t of r){let r=[];for(let e=22;e<=n-12;e+=3)r.push(`<path class="iso-line" data-tone="lo" d="M${t-20} ${-e}H${t+20}"/>`);d.push(`<g transform="${e.front(u+.1)}"><path class="sf-plate" d="M${t-21} ${-(n-9)}H${t+21}V-18H${t-21}Z"/>${r.join(``)}</g>`)}return d.join(``)}function Ne(e,t,n){let{k:r,P:i,slab:a,L:o}=e,s=(n===`back`?[{x:t.x,y:t.y,w:t.w,d:3,r:.4},{x:t.x,y:t.y+3,w:3,d:t.d-6,r:.4}]:[{x:t.x,y:t.y+t.d-3,w:t.w,d:3,r:.4},{x:t.x+t.w-3,y:t.y+3,w:3,d:t.d-6,r:.4}]).map(e=>a(e,0,9,{tone:`mid`},2,.3));return n===`front`&&s.push(o(r.segment([t.x+3,t.y+t.d,4.4],[t.x+t.w,t.y+t.d,4.4],i)+r.segment([t.x+t.w,t.y+3,4.4],[t.x+t.w,t.y+t.d,4.4],i),{tone:`faint`})),s.join(``)}function Pe(e,[t,n,r]){let{G:i,P:a,S:o,cyl:s,slab:c,screws:l}=e,u=i.frameAlong([t,n,r],[0,1,0]);return[o(i.solidOf([[0,3.8],[1.6,5.2],[2.6,5.2],[3.6,4.2],[10.4,4.2],[11.4,5.2],[12.4,5.2],[14,3.8]],u,a),{tone:`mid`}),s(t,n+14/2,2.4,r+3.6,6,{tone:`mid`,crease:`none`},14),c({x:t-4.6,y:n+14/2-3.6,w:9.2,d:7.2,r:1},r+9.6,9,{tone:`mid`},2,.4),s(t,n+14/2,2.6,r+18.6,1.8,{tone:`lo`},14),l([[t-3.4,n+14/2+3.7],[t+3.4,n+14/2+3.7]],r+15)].join(``)}var S=16,C=56,Fe=3;function Ie(e,t,n,r){let{faceRule:i}=e,a=S-3,o=C-12,s=n+1.5,c=`<g transform="${e.front(t)}"><path class="iso-line" data-tone="lo" d="M${s} ${-o}H${s+a}V-5H${s}Z"/>`,l=``;if(r===0)l+=`<path class="sf-plate" d="M${s+2} ${-(o-3)}H${s+a-2}V${-(o-19)}H${s+2}Z"/>`,l+=`<path class="iso-line" data-tone="mid" d="M${s+4} ${-(o-6)}H${s+a/2}M${s+a-4} ${-(o-6)}H${s+a/2}M${s+a/2} ${-(o-6)}V${-(o-16)}"/>`;else if(r===1)for(let e=0;e<3;e++)l+=`<path class="sf-plate" d="M${s+2} ${-(o-4-e*9)}H${s+a-2}V${-(o-10-e*9)}H${s+2}Z"/><path class="iso-line" data-tone="mid" d="M${s+a/2-2} ${-(o-7-e*9)}H${s+a/2+2}"/>`;else for(let e=0;e<8;e++)l+=`<path class="iso-line" data-tone="faint" d="M${s+2} ${-(o-3-e*2.4)}H${s+a-2}"/>`;let u=`<path class="iso-line" data-tone="hi" d="M${s+a-2.6} -19V-27"/>`;return`${c}${l}${u}</g>${i(t,s+2,7,a-4,4)}`}function Le(e,t,n){let{k:r,P:i,L:a,slab:o,cyl:s,screws:c}=e,l=[],u=t.y+t.d;l.push(o({x:t.x-2,y:t.y-2,w:t.w+4,d:t.d+4,r:1},0,2,{tone:`lo`},2,.2));for(let n=0;n<Fe;n++){let d=t.x+n*S,f={x:d,y:t.y,w:S,d:t.d,r:.6};l.push(o(f,2,C-2,{tone:`mid`},2,.4)),l.push(o({x:d+1,y:t.y+1,w:S-2,d:t.d-2,r:.6},C,3,{tone:`mid`},2,.3)),l.push(a(r.segment([d+4,u-4,C+3.2],[d+S-4,u-4,C+3.2],i),{tone:`faint`}),s(d+3,t.y+4,1,C+3,2,{tone:`mid`},10),s(d+S-3,t.y+4,1,C+3,2,{tone:`mid`},10)),l.push(Ie(e,u,d,n)),l.push(c([[d+1.4,u-.2],[d+S-1.4,u-.2]],C-2))}let d=t.x+t.w-8,f=t.y+t.d/2-4,p=C+3.4,m=[];for(let e=d+2;e<n-1;e+=3)m.push(r.segment([e,f+.6,p+.6],[e,f+7.4,p+.6],i));return l.push(o({x:d,y:f,w:n-d,d:.9,r:.2},p,2,{tone:`mid`},2,.1),o({x:d,y:f+7.1,w:n-d,d:.9,r:.2},p,2,{tone:`mid`},2,.1),a(m.join(``),{tone:`mid`}),s(n-6,f+4,.9,0,p,{tone:`mid`,crease:`none`},10),o({x:n-8.6,y:f+1.4,w:5.2,d:5.2,r:.5},0,1.2,{tone:`lo`},2,.1),o({x:n-1.6,y:f-.6,w:1.6,d:9.2,r:.3},p-1,4,{tone:`mid`},2,.1)),l.join(``)}var Re={x:-15,y:0,w:30,d:14,r:1.5},w=30,T=12.5,ze=2.2,E=11;function Be(e,t){let{k:n,G:r,P:i,L:a,D:o,S:s,slab:c,cyl:l,screws:u,faceRule:d}=e,f=[],p=r.frameAlong([0,0,w],[0,1,0]);f.push(c({x:-15,y:0,w:30,d:9,r:1},0,1.4,{tone:`lo`},2,.3)),f.push(u(n.corners({x:-15,y:0,w:30,d:9},1.6),1.4));for(let e of[-11,8])f.push(c({x:e,y:0,w:3,d:7,r:.5},1.4,w-15-1.4+.4,{tone:`mid`},2,.2));f.push(c({x:-14.5,y:0,w:29,d:ze,r:1},w-15,30,{tone:`mid`},2,.3)),f.push(o([[-12.4,13.2],[12.4,13.2],[-12.4,-13.2],[12.4,-13.2]].map(([e=0,t=0])=>n.iso([e,ze+.1,w+t],i)),{size:.45})),f.push(s(r.disc(ze,E,T,p,i),{tone:`mid`}));for(let e of[5.4,8.2])f.push(a(n.sideRing([0,e,w],T,`y`,i,32),{tone:`faint`}));f.push(s(r.disc(E-1.8,E,T+1.2,p,i),{tone:`mid`})),f.push(s(r.disc(E-.4,E,T-1.6,p,i),{tone:`lo`})),f.push(`<path class="gs-blade" data-vfan="0,${E+.3},${w},${T-2.6}" data-top="0,${E},${w+T+4}" data-bearing="0,${E-3},${w+T}" d=""/>`),f.push(s(r.disc(E,E+2.4,3,p,i),{tone:`mid`}),s(r.disc(E+2.2,E+3,1.6,p,i),{tone:`lo`}));let m=[],h=E+1.6;for(let e of[5.5,T-2])m.push(n.sideRing([0,h,w],e,`y`,i,28));for(let e=0;e<8;e++){let t=e/8*Math.PI*2;m.push(n.segment([Math.cos(t)*3,h,w+Math.sin(t)*3],[Math.cos(t)*(T-2),h,w+Math.sin(t)*(T-2)],i))}return f.push(a(m.join(``),{tone:`mid`})),f.push(c({x:-4.5,y:3,w:9,d:6,r:.8},w+T-.6,6,{tone:`mid`},2,.3),l(0,6,1.1,w+T+5.4,2.2,{tone:`mid`},10),d(9.1,-3,w+T+1,6,2.4)),f.join(``)}var Ve=1e3,He={x:-500,y:-395,w:810,d:189,r:8},Ue={x:-380,y:-120,w:680,d:180,r:8},We={x:-520,y:-415,w:850,d:495,r:16},Ge=r([...s(We,-21,-14),...s(He,-14,140),...s(Ue,-14,100)],Ve,620,{pad:22,azimuth:60}),Ke=-300,D=[[-268,Ke],[-108,Ke],[52,Ke]],qe=(e,t)=>[e[0]+t[0],e[1]+t[1],t[2]],Je=e=>qe(D[e]??[0,0],me),Ye=e=>qe(D[e]??[0,0],_e),Xe={x:-340,y:-338,w:470,d:4,r:0},O=[-434,-340],Ze={r:32,h:104,nozzles:[{angle:90,z:14,r:2,role:`outlet`}]},k={x:-486,y:-392,w:104,d:104,r:0},A=[-434,-232],j={r:17,h:62,windowX:8,panelX:-26,nozzles:[{angle:270,z:14,r:2,role:`inlet`},{angle:0,z:7,r:2,role:`outlet`}]},M=A[0],Qe=-284,$e={x:132,y:-330,w:48,d:25,r:1},N={x:204,y:-395,w:104,d:145,r:2},et=[293,N.y+N.d],tt=[-202,-135,0],nt=[[-65,-62],[-169,-62]],rt=[-34,36.6,40],it=[-20,36.6,40],at=[94,-130,0],ot=.8,st=[[47,36],[157,36]],ct=e=>[(e[0]-at[0])*ot,(e[1]-at[1])*ot,e[2]*ot],lt=ct(ee),ut=ct(u),dt=[{x:-318,y:-262,w:462,d:8,r:0},...D.map(([e])=>({x:e-48,y:-290,w:6,d:32,r:0})),{x:137,y:-308,w:6,d:54,r:0}],ft=[-67,-132,0],pt=[-292,-62],mt=[-110,-114,24],ht=we([...D.map((e,t)=>({key:`gen${t}`,at:e,h:126})),{key:`bund-back`,at:[O[0],k.y+2],h:12},{key:`bulk`,at:O,h:Ze.h+12},{key:`bund-front`,at:[O[0],k.y+k.d-2],h:12},{key:`valve`,at:[M,Qe+7],h:30},{key:`day`,at:A,h:j.h+12},{key:`vent`,at:[et[0],et[1]+6],h:50},{key:`lineup`,at:[$e.x+$e.w/2,$e.y+$e.d/2],h:62},{key:`hall`,at:[N.x+N.w/2,N.y+N.d/2],h:76},...nt.map((e,t)=>({key:`chiller${t}`,at:e,h:56})),...st.map((e,t)=>({key:`pump${t}`,at:e,h:45*ot})),{key:`compressor`,at:pt,h:46}],Ge),gt=ht.order,_t=ht.slotDepths,vt=ht.depth,yt=(e,t)=>[e[0]+t[0],e[1]+t[1],t[2]],P=(e,t,n,r)=>[t??e[0],n??e[1],r??e[2]],bt=(e,t,n)=>{let r=e.nozzles[n];return r?yt(t,Se(e,r)):[0,0,0]},F=6,xt=bt(Ze,O,0),St=bt(j,A,0),Ct=bt(j,A,1),I=Ct[1],[wt,Tt,Et]=[0,1,2].map(Je),[L,Dt,Ot]=[0,1,2].map(Ye),kt=Qe+14,At=-366,R=-250,z=L[2],jt=16,Mt=[pt[0]+mt[0]-ft[0],pt[1]+mt[1]-ft[1],mt[2]],Nt=Mt[1]+jt,[B=[0,0],Pt=[0,0]]=nt,[V=[0,0],H=[0,0]]=st,U=e=>yt(e,ut),W=e=>yt(e,lt),G=e=>yt(e,rt),K=e=>yt(e,it),q=W(V)[2],J=B[1]+61,Y=72,X=B[1]+48,Ft=84,It=V[1]-34,Lt=W(H)[0]+13,Rt=W(V)[0]+8,zt=6,Bt=K(B)[0]+40,Vt=N.y+N.d+ke,Ht=[{id:`xfer:a`,medium:`fuel`,r:2,pts:[xt,[M,Qe,14]]},{id:`xfer:b`,medium:`fuel`,r:2,pts:[[M,kt,14],St]},{id:`fuel:all`,medium:`fuel`,r:2,pts:[Ct,[wt[0],I,F]]},{id:`fuel:bc`,medium:`fuel`,r:2,pts:[[wt[0],I,F],[Tt[0],I,F]]},{id:`fuel:c`,medium:`fuel`,r:2,pts:[[Tt[0],I,F],[Et[0],I,F],Et]},{id:`fuel:a`,medium:`fuel`,r:2,pts:[[wt[0],I,F],wt]},{id:`fuel:b`,medium:`fuel`,r:2,pts:[[Tt[0],I,F],Tt]},{id:`air:main`,medium:`air`,r:b,bend:8,pts:[Mt,P(Mt,null,Nt,null),[At,Nt,Mt[2]],[At,Nt,z],[At,R,z],[L[0],R,z]]},{id:`air:ab`,medium:`air`,r:b,pts:[[L[0],R,z],[Dt[0],R,z]]},{id:`air:c`,medium:`air`,r:b,pts:[[Dt[0],R,z],[Ot[0],R,z],Ot]},{id:`air:a`,medium:`air`,r:b,pts:[[L[0],R,z],L]},{id:`air:b`,medium:`air`,r:b,pts:[[Dt[0],R,z],Dt]},{id:`suction`,medium:`coolantret`,r:2.6,pts:[[265,Vt,q],[265,It,q],[Lt,It,q]]},{id:`suction:standby`,medium:`coolantret`,r:2.6,pts:[[Lt,It,q],P(W(H),Lt,null,null),W(H)]},{id:`suction:duty`,medium:`coolantret`,r:2.6,pts:[[Lt,It,q],[Rt,It,q],P(W(V),Rt,null,null),W(V)]},...[[`a`,B],[`b`,Pt]].map(([e,t])=>({id:`out:${e}`,medium:`coolant`,r:2.2,pts:[K(t),P(K(t),null,X,null),P(K(t),null,X,Ft)]})),{id:`chws:b`,medium:`coolant`,r:2.6,blind:[!0,!1],pts:[[K(Pt)[0]-zt,X,Ft],[K(B)[0],X,Ft]]},{id:`chws`,medium:`coolant`,r:2.6,pts:[[K(B)[0],X,Ft],[Bt,X,Ft],[Bt,X,40],[240,X,40],[240,Vt,40]]},...[[`duty`,V],[`standby`,H]].map(([e,t])=>({id:`discharge:${e}`,medium:`coolantret`,r:2.6,fromStub:!0,pts:[U(t),P(U(t),null,null,Y),P(U(t),null,J,Y)]})),{id:`header:standby`,medium:`coolantret`,r:2.6,blind:[!0,!1],pts:[[U(H)[0]+zt,J,Y],[U(V)[0],J,Y]]},{id:`header`,medium:`coolantret`,r:2.6,pts:[[U(V)[0],J,Y],[G(B)[0],J,Y]]},{id:`header:b`,medium:`coolantret`,r:2.6,blind:[!1,!0],pts:[[G(B)[0],J,Y],[G(Pt)[0]-zt,J,Y]]},...[[`a`,B],[`b`,Pt]].map(([e,t])=>({id:`in:${e}`,medium:`coolantret`,r:2.2,pts:[P(G(t),null,J,Y),P(G(t),null,J,null),G(t)]}))],Ut=(e,t)=>[He,Ue].some(n=>e>=n.x&&e<=n.x+n.w&&t>=n.y&&t<=n.y+n.d),Z=(e,t,n,r)=>[e,t,n,r,Ut(e,t)?0:-14],Wt={z:10,flanged:!0,routes:Ht,posts:[...[-395,-330,-215,-60].map(e=>Z(e,I,2,F)),Z(M,-294,2,14),...[-70,-140,-190,R].map(e=>Z(At,e,b,z)),...[-300,-155,10].map(e=>Z(e,R,b,z)),...[-225,-150,-90,-35].map(e=>Z(240,e,2.6,40)),...[-225,-150,-90,-35,20].map(e=>Z(265,e,2.6,q)),...[-20,100,215].map(e=>Z(e,X,2.6,40)),...[-150,-20,130].map(e=>Z(e,J,2.6,Y))]},Q=n(),Gt={x:-248,y:-164,w:92,d:58,r:3},Kt={x:-136,y:-152,w:138,d:40,r:3},qt=xe(Ze),Jt=xe(j),Yt=(e,t)=>p(e,t,`coolantret`,!0),Xt=(e,t)=>be(e,t,Ze),Zt=(e,t)=>be(e,t,j),Qt=(e,t)=>fe(e,t,{barFull:10,dialFull:12}),$t=e=>Ae(e,N,[{x:240,z:40,r:2.6},{x:265,z:lt[2],r:2.6}]),en=e=>Le(e,$e,N.x),tn=e=>Pe(e,[M,Qe,14]),nn=e=>Ne(e,k,`back`),rn=e=>Ne(e,k,`front`);function an({ids:e}){let t=a(),n=f(Wt,vt),r=(0,Oe.useMemo)(()=>h(t,We)+t.plinth(He)+t.plinth(Ue)+je(t,dt)+Me(t,Xe,62,D.map(([e])=>e)),[t]),s=e=>(0,Q.jsx)(i,{html:`${n.layers[e]??``}<g data-flows="${e}" data-depth="${e===0?-1e9:_t[e-1]??0}"></g>`,data:{pipes:``}},`pipes-${e}`),c=[e.genA,e.genB,e.genC],l={"bund-back":(0,Q.jsx)(g,{build:nn,intro:1}),bulk:(0,Q.jsx)(`g`,{className:`fuel-tank`,children:(0,Q.jsx)(d,{to:y(O),children:(0,Q.jsx)(o,{id:e.bulk,plan:qt,intro:2,draw:Xt})})}),"bund-front":(0,Q.jsx)(g,{build:rn,intro:2}),valve:(0,Q.jsx)(g,{build:tn,intro:3}),day:(0,Q.jsx)(`g`,{className:`fuel-tank`,children:(0,Q.jsx)(d,{to:y(A),children:(0,Q.jsx)(o,{id:e.day,plan:Jt,intro:3,draw:Zt})})}),vent:(0,Q.jsx)(d,{to:y(et),children:(0,Q.jsx)(o,{id:e.fan,plan:Re,intro:9,draw:Be})}),lineup:(0,Q.jsx)(g,{build:en,intro:8}),hall:(0,Q.jsx)(g,{build:$t,intro:8}),compressor:(0,Q.jsx)(d,{from:ft,to:y(pt),children:(0,Q.jsx)(o,{id:e.compressor,plan:Kt,intro:13,draw:Qt})})};for(let[e,t]of D.entries())l[`gen${e}`]=(0,Q.jsx)(`g`,{className:`gen-set`,children:(0,Q.jsx)(d,{to:y(t),children:(0,Q.jsx)(o,{id:c[e]??``,plan:ge,intro:4+e,draw:ve})})});for(let[t,n]of nt.entries())l[`chiller${t}`]=(0,Q.jsx)(d,{from:tt,to:y(n),children:(0,Q.jsx)(o,{id:t?e.chillerB:e.chillerA,plan:Gt,intro:10+t,draw:ue})});for(let[t,n]of st.entries())l[`pump${t}`]=(0,Q.jsx)(d,{from:at,to:y(n),scale:ot,children:(0,Q.jsx)(o,{id:t?e.pumpB:e.pumpA,plan:ae,intro:12+t,draw:Yt})});return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(i,{html:r,data:{plinth:``}}),s(0),gt.flatMap((e,t)=>[(0,Q.jsx)(`g`,{children:l[e.key]},e.key),s(t+1)])]})}var $=e=>e>.002?6+26*re(e*2):0,on=e=>{let{svg:t,feed:n,ids:r}=e,i=ne(t),a=ye(e,i),o=Ce(e),s=de(e,i),c=ce(e,i),l=pe(e,i),u=[a,o,s,c,l,he(e,i)],d=ie(e,e=>oe(n,e,`availability`)),f=se(e,{needle:e=>l.needle(e)??s.needle(e)??0,bar:e=>u.reduce((t,n)=>t??n.bar(e),void 0)??0,alertsHigh:()=>!0,ready:()=>!0}),p=()=>{let e=n.param(r.day,`max_inflow_lps`,0);return e>0?re(n.num(r.day,`inflow_rate`)/e):0},m=(...e)=>re(e.reduce((e,t)=>e+a.fuelPu(t),0)),h=()=>c.flowPu(r.pumpA)+c.flowPu(r.pumpB),g=e=>{let t=[r.chillerA,r.chillerB].filter(e=>n.num(e,`coolant_flow_rate`)>0);return t.includes(e)?h()/t.length:0},ee=v(e,({id:e})=>{switch(e){case`xfer:a`:case`xfer:b`:return $(p());case`fuel:all`:return $(m(r.genA,r.genB,r.genC));case`fuel:bc`:return $(m(r.genB,r.genC));case`fuel:c`:return $(m(r.genC));case`fuel:a`:return $(m(r.genA));case`fuel:b`:return $(m(r.genB));case`air:main`:case`air:ab`:case`air:c`:case`air:a`:case`air:b`:return $(l.deliveredPu(r.compressor));case`suction`:case`chws`:case`header`:return $(h());case`suction:duty`:case`discharge:duty`:return $(c.flowPu(r.pumpA));case`suction:standby`:case`discharge:standby`:case`header:standby`:return $(c.flowPu(r.pumpB));case`in:a`:case`out:a`:return $(g(r.chillerA));case`in:b`:case`out:b`:case`header:b`:case`chws:b`:return $(g(r.chillerB));default:return 0}});return{data(e){d.draw(e)},draw({sdt:e,t,introDone:n}){ee.draw(e),f.draw(e,t);for(let r of u)r.draw(e,t,n)},resync(){},status:e=>le(n,e,`availability`)}},sn=_(Ge),cn=m(sn,Wt,vt),ln=te({layout:{width:Ve,height:620,label:`Isometric model of the Backup Power facility: along the back, the fuel yard with its bulk tank in a bund and the day tank, three diesel gen sets side by side with their exhaust stacks and radiators, the electrical lineup and the data hall they back up; along the front, the start-air compressor, two chillers and two chilled-water pumps whose loop runs to the hall. Pipes carry fuel, start air and chilled water between them. Every moving part follows live values from the running engine.`,kit:sn,flows:cn.flows,joints:cn.joints,Scene:an,compose:on},resolve:Ee,things:De,caption:`generation · fuel · cooling`,mismatch:`This floor expects the Backup Power facility: three diesel gensets, the bulk and day fuel tanks, two chillers with two chilled-water pumps, the start-air compressor and the hall ventilation motor, by area and line.`,statusBasis:`availability`,Overview:c,tab:`Plant`});export{ln as backupFloor};
|
|
1
|
+
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{c as t}from"./vendor-charts-95ykyDlI.js";import{ot as n}from"./vendor-ui-D8j69UH4.js";import{b as r,d as i,f as a,l as o,m as s}from"./dom-CQuChC3G.js";import{n as c,t as l}from"./by-path-e6y8DTMV.js";import{A as u,D as d,E as f,F as p,H as m,L as h,O as g,P as ee,V as _,X as te,a as v,b as ne,g as re,i as ie,j as ae,k as y,n as oe,o as se,r as ce,t as le}from"./status-DNfdEhTs.js";import{r as ue,t as de}from"./chiller-Jug0vRg-.js";import{n as fe,t as pe}from"./compressor-BkWNdwvy.js";import{a as me,i as b,n as he,o as ge,r as _e,s as ve,t as ye}from"./genset-DBpkUT9p.js";import{i as be,n as xe,r as Se,t as Ce}from"./tank-xgQfMS2d.js";import{t as we}from"./stages-C0cErwSQ.js";var Te=[[`genA`,`diesel-generator`,`power`,`gensets`,0],[`genB`,`diesel-generator`,`power`,`gensets`,1],[`genC`,`diesel-generator`,`power`,`gensets`,2],[`bulk`,`storage-tank`,`fuel`,`storage`,0],[`day`,`storage-tank`,`fuel`,`storage`,1],[`chillerA`,`industrial-chiller`,`cooling`,`chiller-plant`,0],[`chillerB`,`industrial-chiller`,`cooling`,`chiller-plant`,1],[`pumpA`,`centrifugal-pump`,`cooling`,`chilled-water`,0],[`pumpB`,`centrifugal-pump`,`cooling`,`chilled-water`,1],[`compressor`,`air-compressor`,`support`,`start-air`,0],[`fan`,`ac-induction-motor`,`support`,`ventilation`,0]],Ee=e=>l(Te,e);function De(e){let t=(e,t,n)=>({key:e,assetId:e,name:t,kind:`utility`,area:n});return[t(e.genA,`Genset A (primary)`,`Power`),t(e.genB,`Genset B`,`Power`),t(e.genC,`Genset C (reserve)`,`Power`),t(e.bulk,`Bulk fuel tank`,`Fuel`),t(e.day,`Day tank`,`Fuel`),t(e.chillerA,`Chiller A`,`Cooling`),t(e.chillerB,`Chiller B`,`Cooling`),t(e.pumpA,`Chilled-water pump 1`,`Cooling`),t(e.pumpB,`Chilled-water pump 2`,`Cooling`),t(e.compressor,`Start-air compressor`,`Support`),t(e.fan,`Hall ventilation fan`,`Support`)]}var Oe=e(t(),1),x=64,ke=2.2;function Ae(e,t,n){let{k:r,G:i,P:a,S:o,L:s,D:c,slab:l,cyl:u}=e,d=[],f=t.y+t.d,p=t.x+t.w,m=e=>s(e,{tone:`faint`}),h=[];for(let e=t.x+11;e<p-4;e+=11)h.push(r.segment([e,f,3],[e,f,x-9],a));for(let e=t.y+11;e<f-4;e+=11)h.push(r.segment([p,e,3],[p,e,x-9],a));let g=[];for(let e of[x-7,x-5,x-3])g.push(r.segment([t.x+4,f,e],[p-4,f,e],a)),g.push(r.segment([p,t.y+4,e],[p,f-4,e],a));d.push(l({x:t.x-1.6,y:t.y-1.6,w:t.w+3.2,d:t.d+3.2,r:2},0,3,{tone:`lo`},2,.3)),d.push(o(r.slabOf(t,0,x,a,2,.6),{tone:`lo`,inner:m(h.join(``))+s(g.join(``),{tone:`lo`})+m(r.sideSeam(t,3,a,2))})),d.push(s(r.planOutline(r.insetPlan(t,2),x,a,2),{tone:`lo`}));let ee=(e,t,n,i,o)=>{d.push(l({x:e-1,y:t-1,w:n+2,d:i+2,r:1},x,3,{tone:`lo`},2,.3)),d.push(l({x:e,y:t,w:n,d:i,r:1},x+3,o,{tone:`mid`},2,.3));let c=[];for(let s=x+5;s<x+3+o-1;s+=2.4)c.push(r.segment([e+2,t+i,s],[e+n-2,t+i,s],a));d.push(s(c.join(``),{tone:`faint`}));let u=x+3+o;for(let o of[e+n*.3,e+n*.7]){let e=t+i/2,n=[r.ring(o,e,i*.36,u,a,24),r.ring(o,e,i*.16,u,a,16)];for(let t=0;t<4;t++){let s=t/4*Math.PI*2+.4;n.push(r.segment([o+Math.cos(s)*i*.16,e+Math.sin(s)*i*.16,u],[o+Math.cos(s)*i*.36,e+Math.sin(s)*i*.36,u],a))}d.push(s(n.join(``),{tone:`mid`}))}};ee(t.x+12,t.y+t.d-52,34,18,10),ee(t.x+60,t.y+t.d-44,34,18,10),d.push(u(t.x+t.w-16,t.y+22,4,x,11,{tone:`mid`},20),u(t.x+t.w-16,t.y+22,5,x+10.4,1.6,{tone:`mid`},20),l({x:t.x+14,y:t.y+14,w:14,d:10,r:.8},x,5,{tone:`mid`},2,.3));let _=t.x+6;d.push(l({x:_-1.4,y:f,w:24.8,d:.8,r:.2},0,31.8,{tone:`lo`},2,0),`<g transform="${e.front(f+.9)}"><path class="sf-plate" d="M${_} -30H${_+22}V0H${_}Z"/>${Array.from({length:9},(e,t)=>`<path class="iso-line" data-tone="faint" d="M${_} ${-(3+t*3)}H${_+22}"/>`).join(``)}<path class="iso-line" data-tone="mid" d="M${_} -30H${_+22}V0H${_}Z"/></g>`,l({x:_,y:f+.8,w:22,d:1,r:.2},0,2.4,{tone:`mid`},2,0)),d.push(l({x:_-1,y:f,w:24,d:.9,r:.2},38,16,{tone:`lo`},2,0));let te=[];for(let e=40;e<53.5;e+=1.8)te.push(r.segment([_+.6,f+.9,e],[_+22-.6,f+.9,e],a));d.push(s(te.join(``),{tone:`mid`})),d.push(u(_+22+3.6,f+1.2,1.2,28,2.2,{tone:`mid`},10));let v=t.y+36;d.push(l({x:p,y:v-1.2,w:.9,d:12.4,r:.2},0,25,{tone:`lo`},2,0),l({x:p+.9,y:v,w:.5,d:10,r:.2},0,22.4,{tone:`mid`},2,0),l({x:p,y:v-3,w:4.4,d:16,r:.4},26,1.4,{tone:`mid`},2,.2),u(p+1.4,v+12.4,1.1,14,2,{tone:`mid`},10)),d.push(s(r.segment([p+1.4,v+1.2,13],[p+1.4,v+1.2,19],a)+r.segment([p+1.4,v+2,3],[p+1.4,v+9,3],a),{tone:`hi`}));let ne=t.y+72;d.push(l({x:p,y:ne,w:.9,d:30,r:.2},22,26,{tone:`lo`},2,0));let re=[];for(let e=24;e<47.5;e+=1.8)re.push(r.segment([p+.9,ne+1.4,e],[p+.9,ne+28.6,e],a));d.push(s(re.join(``),{tone:`mid`}));for(let{x:t,z:r,r:s}of n){let n=i.frameAlong([t,f,r],[0,1,0]);d.push(o(i.disc(0,1.2,s+2.8,n,a),{tone:`mid`}),o(i.disc(1.2,ke,s+1.4,n,a),{tone:`mid`}),c([0,1,2,3,4,5].map(n=>e.at([t+Math.cos(n*1.047)*(s+2),f+1.2,r+Math.sin(n*1.047)*(s+2)])),{size:.4}))}return d.join(``)}function je(e,t){let{k:n,P:r,L:i,slab:a}=e,o=[];for(let e of t){o.push(a(e,0,1.4,{tone:`lo`},2,.2));let t=[];if(e.w>=e.d)for(let i=e.x+9;i<e.x+e.w-2;i+=9)t.push(n.lineOnTop([i,e.y+.8],[i,e.y+e.d-.8],1.5,r));else for(let i=e.y+9;i<e.y+e.d-2;i+=9)t.push(n.lineOnTop([e.x+.8,i],[e.x+e.w-.8,i],1.5,r));o.push(i(t.join(``)+n.planOutline(n.insetPlan(e,.8),1.5,r,2),{tone:`faint`}))}return o.join(``)}function Me(e,t,n,r){let{k:i,P:a,S:o,L:s,slab:c}=e,l=[],u=t.y+t.d;for(let e=t.x+14;e<t.x+t.w-4;e+=14)l.push(i.segment([e,u,3],[e,u,n-5],a));let d=[o(i.slabOf(t,0,n,a,2,.4),{tone:`lo`,inner:s(l.join(``)+i.sideSeam(t,4,a,2),{tone:`faint`})}),c({x:t.x-1.5,y:t.y-1.5,w:t.w+3,d:t.d+3,r:.4},n,2.2,{tone:`mid`},2,.2)];for(let t of r){let r=[];for(let e=22;e<=n-12;e+=3)r.push(`<path class="iso-line" data-tone="lo" d="M${t-20} ${-e}H${t+20}"/>`);d.push(`<g transform="${e.front(u+.1)}"><path class="sf-plate" d="M${t-21} ${-(n-9)}H${t+21}V-18H${t-21}Z"/>${r.join(``)}</g>`)}return d.join(``)}function Ne(e,t,n){let{k:r,P:i,slab:a,L:o}=e,s=(n===`back`?[{x:t.x,y:t.y,w:t.w,d:3,r:.4},{x:t.x,y:t.y+3,w:3,d:t.d-6,r:.4}]:[{x:t.x,y:t.y+t.d-3,w:t.w,d:3,r:.4},{x:t.x+t.w-3,y:t.y+3,w:3,d:t.d-6,r:.4}]).map(e=>a(e,0,9,{tone:`mid`},2,.3));return n===`front`&&s.push(o(r.segment([t.x+3,t.y+t.d,4.4],[t.x+t.w,t.y+t.d,4.4],i)+r.segment([t.x+t.w,t.y+3,4.4],[t.x+t.w,t.y+t.d,4.4],i),{tone:`faint`})),s.join(``)}function Pe(e,[t,n,r]){let{G:i,P:a,S:o,cyl:s,slab:c,screws:l}=e,u=i.frameAlong([t,n,r],[0,1,0]);return[o(i.solidOf([[0,3.8],[1.6,5.2],[2.6,5.2],[3.6,4.2],[10.4,4.2],[11.4,5.2],[12.4,5.2],[14,3.8]],u,a),{tone:`mid`}),s(t,n+14/2,2.4,r+3.6,6,{tone:`mid`,crease:`none`},14),c({x:t-4.6,y:n+14/2-3.6,w:9.2,d:7.2,r:1},r+9.6,9,{tone:`mid`},2,.4),s(t,n+14/2,2.6,r+18.6,1.8,{tone:`lo`},14),l([[t-3.4,n+14/2+3.7],[t+3.4,n+14/2+3.7]],r+15)].join(``)}var S=16,C=56,Fe=3;function Ie(e,t,n,r){let{faceRule:i}=e,a=S-3,o=C-12,s=n+1.5,c=`<g transform="${e.front(t)}"><path class="iso-line" data-tone="lo" d="M${s} ${-o}H${s+a}V-5H${s}Z"/>`,l=``;if(r===0)l+=`<path class="sf-plate" d="M${s+2} ${-(o-3)}H${s+a-2}V${-(o-19)}H${s+2}Z"/>`,l+=`<path class="iso-line" data-tone="mid" d="M${s+4} ${-(o-6)}H${s+a/2}M${s+a-4} ${-(o-6)}H${s+a/2}M${s+a/2} ${-(o-6)}V${-(o-16)}"/>`;else if(r===1)for(let e=0;e<3;e++)l+=`<path class="sf-plate" d="M${s+2} ${-(o-4-e*9)}H${s+a-2}V${-(o-10-e*9)}H${s+2}Z"/><path class="iso-line" data-tone="mid" d="M${s+a/2-2} ${-(o-7-e*9)}H${s+a/2+2}"/>`;else for(let e=0;e<8;e++)l+=`<path class="iso-line" data-tone="faint" d="M${s+2} ${-(o-3-e*2.4)}H${s+a-2}"/>`;let u=`<path class="iso-line" data-tone="hi" d="M${s+a-2.6} -19V-27"/>`;return`${c}${l}${u}</g>${i(t,s+2,7,a-4,4)}`}function Le(e,t,n){let{k:r,P:i,L:a,slab:o,cyl:s,screws:c}=e,l=[],u=t.y+t.d;l.push(o({x:t.x-2,y:t.y-2,w:t.w+4,d:t.d+4,r:1},0,2,{tone:`lo`},2,.2));for(let n=0;n<Fe;n++){let d=t.x+n*S,f={x:d,y:t.y,w:S,d:t.d,r:.6};l.push(o(f,2,C-2,{tone:`mid`},2,.4)),l.push(o({x:d+1,y:t.y+1,w:S-2,d:t.d-2,r:.6},C,3,{tone:`mid`},2,.3)),l.push(a(r.segment([d+4,u-4,C+3.2],[d+S-4,u-4,C+3.2],i),{tone:`faint`}),s(d+3,t.y+4,1,C+3,2,{tone:`mid`},10),s(d+S-3,t.y+4,1,C+3,2,{tone:`mid`},10)),l.push(Ie(e,u,d,n)),l.push(c([[d+1.4,u-.2],[d+S-1.4,u-.2]],C-2))}let d=t.x+t.w-8,f=t.y+t.d/2-4,p=C+3.4,m=[];for(let e=d+2;e<n-1;e+=3)m.push(r.segment([e,f+.6,p+.6],[e,f+7.4,p+.6],i));return l.push(o({x:d,y:f,w:n-d,d:.9,r:.2},p,2,{tone:`mid`},2,.1),o({x:d,y:f+7.1,w:n-d,d:.9,r:.2},p,2,{tone:`mid`},2,.1),a(m.join(``),{tone:`mid`}),s(n-6,f+4,.9,0,p,{tone:`mid`,crease:`none`},10),o({x:n-8.6,y:f+1.4,w:5.2,d:5.2,r:.5},0,1.2,{tone:`lo`},2,.1),o({x:n-1.6,y:f-.6,w:1.6,d:9.2,r:.3},p-1,4,{tone:`mid`},2,.1)),l.join(``)}var Re={x:-15,y:0,w:30,d:14,r:1.5},w=30,T=12.5,ze=2.2,E=11;function Be(e,t){let{k:n,G:r,P:i,L:a,D:o,S:s,slab:c,cyl:l,screws:u,faceRule:d}=e,f=[],p=r.frameAlong([0,0,w],[0,1,0]);f.push(c({x:-15,y:0,w:30,d:9,r:1},0,1.4,{tone:`lo`},2,.3)),f.push(u(n.corners({x:-15,y:0,w:30,d:9},1.6),1.4));for(let e of[-11,8])f.push(c({x:e,y:0,w:3,d:7,r:.5},1.4,w-15-1.4+.4,{tone:`mid`},2,.2));f.push(c({x:-14.5,y:0,w:29,d:ze,r:1},w-15,30,{tone:`mid`},2,.3)),f.push(o([[-12.4,13.2],[12.4,13.2],[-12.4,-13.2],[12.4,-13.2]].map(([e=0,t=0])=>n.iso([e,ze+.1,w+t],i)),{size:.45})),f.push(s(r.disc(ze,E,T,p,i),{tone:`mid`}));for(let e of[5.4,8.2])f.push(a(n.sideRing([0,e,w],T,`y`,i,32),{tone:`faint`}));f.push(s(r.disc(E-1.8,E,T+1.2,p,i),{tone:`mid`})),f.push(s(r.disc(E-.4,E,T-1.6,p,i),{tone:`lo`})),f.push(`<path class="gs-blade" data-vfan="0,${E+.3},${w},${T-2.6}" data-top="0,${E},${w+T+4}" data-bearing="0,${E-3},${w+T}" d=""/>`),f.push(s(r.disc(E,E+2.4,3,p,i),{tone:`mid`}),s(r.disc(E+2.2,E+3,1.6,p,i),{tone:`lo`}));let m=[],h=E+1.6;for(let e of[5.5,T-2])m.push(n.sideRing([0,h,w],e,`y`,i,28));for(let e=0;e<8;e++){let t=e/8*Math.PI*2;m.push(n.segment([Math.cos(t)*3,h,w+Math.sin(t)*3],[Math.cos(t)*(T-2),h,w+Math.sin(t)*(T-2)],i))}return f.push(a(m.join(``),{tone:`mid`})),f.push(c({x:-4.5,y:3,w:9,d:6,r:.8},w+T-.6,6,{tone:`mid`},2,.3),l(0,6,1.1,w+T+5.4,2.2,{tone:`mid`},10),d(9.1,-3,w+T+1,6,2.4)),f.join(``)}var Ve=1e3,He={x:-500,y:-395,w:810,d:189,r:8},Ue={x:-380,y:-120,w:680,d:180,r:8},We={x:-520,y:-415,w:850,d:495,r:16},Ge=r([...s(We,-21,-14),...s(He,-14,140),...s(Ue,-14,100)],Ve,620,{pad:22,azimuth:60}),Ke=-300,D=[[-268,Ke],[-108,Ke],[52,Ke]],qe=(e,t)=>[e[0]+t[0],e[1]+t[1],t[2]],Je=e=>qe(D[e]??[0,0],me),Ye=e=>qe(D[e]??[0,0],_e),Xe={x:-340,y:-338,w:470,d:4,r:0},O=[-434,-340],Ze={r:32,h:104,nozzles:[{angle:90,z:14,r:2,role:`outlet`}]},k={x:-486,y:-392,w:104,d:104,r:0},A=[-434,-232],j={r:17,h:62,windowX:8,panelX:-26,nozzles:[{angle:270,z:14,r:2,role:`inlet`},{angle:0,z:7,r:2,role:`outlet`}]},M=A[0],Qe=-284,$e={x:132,y:-330,w:48,d:25,r:1},N={x:204,y:-395,w:104,d:145,r:2},et=[293,N.y+N.d],tt=[-202,-135,0],nt=[[-65,-62],[-169,-62]],rt=[-34,36.6,40],it=[-20,36.6,40],at=[94,-130,0],ot=.8,st=[[47,36],[157,36]],ct=e=>[(e[0]-at[0])*ot,(e[1]-at[1])*ot,e[2]*ot],lt=ct(ee),ut=ct(u),dt=[{x:-318,y:-262,w:462,d:8,r:0},...D.map(([e])=>({x:e-48,y:-290,w:6,d:32,r:0})),{x:137,y:-308,w:6,d:54,r:0}],ft=[-67,-132,0],pt=[-292,-62],mt=[-110,-114,24],ht=we([...D.map((e,t)=>({key:`gen${t}`,at:e,h:126})),{key:`bund-back`,at:[O[0],k.y+2],h:12},{key:`bulk`,at:O,h:Ze.h+12},{key:`bund-front`,at:[O[0],k.y+k.d-2],h:12},{key:`valve`,at:[M,Qe+7],h:30},{key:`day`,at:A,h:j.h+12},{key:`vent`,at:[et[0],et[1]+6],h:50},{key:`lineup`,at:[$e.x+$e.w/2,$e.y+$e.d/2],h:62},{key:`hall`,at:[N.x+N.w/2,N.y+N.d/2],h:76},...nt.map((e,t)=>({key:`chiller${t}`,at:e,h:56})),...st.map((e,t)=>({key:`pump${t}`,at:e,h:45*ot})),{key:`compressor`,at:pt,h:46}],Ge),gt=ht.order,_t=ht.slotDepths,vt=ht.depth,yt=(e,t)=>[e[0]+t[0],e[1]+t[1],t[2]],P=(e,t,n,r)=>[t??e[0],n??e[1],r??e[2]],bt=(e,t,n)=>{let r=e.nozzles[n];return r?yt(t,Se(e,r)):[0,0,0]},F=6,xt=bt(Ze,O,0),St=bt(j,A,0),Ct=bt(j,A,1),I=Ct[1],[wt,Tt,Et]=[0,1,2].map(Je),[L,Dt,Ot]=[0,1,2].map(Ye),kt=Qe+14,At=-366,R=-250,z=L[2],jt=16,Mt=[pt[0]+mt[0]-ft[0],pt[1]+mt[1]-ft[1],mt[2]],Nt=Mt[1]+jt,[B=[0,0],Pt=[0,0]]=nt,[V=[0,0],H=[0,0]]=st,U=e=>yt(e,ut),W=e=>yt(e,lt),G=e=>yt(e,rt),K=e=>yt(e,it),q=W(V)[2],J=B[1]+61,Y=72,X=B[1]+48,Ft=84,It=V[1]-34,Lt=W(H)[0]+13,Rt=W(V)[0]+8,zt=6,Bt=K(B)[0]+40,Vt=N.y+N.d+ke,Ht=[{id:`xfer:a`,medium:`fuel`,r:2,pts:[xt,[M,Qe,14]]},{id:`xfer:b`,medium:`fuel`,r:2,pts:[[M,kt,14],St]},{id:`fuel:all`,medium:`fuel`,r:2,pts:[Ct,[wt[0],I,F]]},{id:`fuel:bc`,medium:`fuel`,r:2,pts:[[wt[0],I,F],[Tt[0],I,F]]},{id:`fuel:c`,medium:`fuel`,r:2,pts:[[Tt[0],I,F],[Et[0],I,F],Et]},{id:`fuel:a`,medium:`fuel`,r:2,pts:[[wt[0],I,F],wt]},{id:`fuel:b`,medium:`fuel`,r:2,pts:[[Tt[0],I,F],Tt]},{id:`air:main`,medium:`air`,r:b,bend:8,pts:[Mt,P(Mt,null,Nt,null),[At,Nt,Mt[2]],[At,Nt,z],[At,R,z],[L[0],R,z]]},{id:`air:ab`,medium:`air`,r:b,pts:[[L[0],R,z],[Dt[0],R,z]]},{id:`air:c`,medium:`air`,r:b,pts:[[Dt[0],R,z],[Ot[0],R,z],Ot]},{id:`air:a`,medium:`air`,r:b,pts:[[L[0],R,z],L]},{id:`air:b`,medium:`air`,r:b,pts:[[Dt[0],R,z],Dt]},{id:`suction`,medium:`coolantret`,r:2.6,pts:[[265,Vt,q],[265,It,q],[Lt,It,q]]},{id:`suction:standby`,medium:`coolantret`,r:2.6,pts:[[Lt,It,q],P(W(H),Lt,null,null),W(H)]},{id:`suction:duty`,medium:`coolantret`,r:2.6,pts:[[Lt,It,q],[Rt,It,q],P(W(V),Rt,null,null),W(V)]},...[[`a`,B],[`b`,Pt]].map(([e,t])=>({id:`out:${e}`,medium:`coolant`,r:2.2,pts:[K(t),P(K(t),null,X,null),P(K(t),null,X,Ft)]})),{id:`chws:b`,medium:`coolant`,r:2.6,blind:[!0,!1],pts:[[K(Pt)[0]-zt,X,Ft],[K(B)[0],X,Ft]]},{id:`chws`,medium:`coolant`,r:2.6,pts:[[K(B)[0],X,Ft],[Bt,X,Ft],[Bt,X,40],[240,X,40],[240,Vt,40]]},...[[`duty`,V],[`standby`,H]].map(([e,t])=>({id:`discharge:${e}`,medium:`coolantret`,r:2.6,fromStub:!0,pts:[U(t),P(U(t),null,null,Y),P(U(t),null,J,Y)]})),{id:`header:standby`,medium:`coolantret`,r:2.6,blind:[!0,!1],pts:[[U(H)[0]+zt,J,Y],[U(V)[0],J,Y]]},{id:`header`,medium:`coolantret`,r:2.6,pts:[[U(V)[0],J,Y],[G(B)[0],J,Y]]},{id:`header:b`,medium:`coolantret`,r:2.6,blind:[!1,!0],pts:[[G(B)[0],J,Y],[G(Pt)[0]-zt,J,Y]]},...[[`a`,B],[`b`,Pt]].map(([e,t])=>({id:`in:${e}`,medium:`coolantret`,r:2.2,pts:[P(G(t),null,J,Y),P(G(t),null,J,null),G(t)]}))],Ut=(e,t)=>[He,Ue].some(n=>e>=n.x&&e<=n.x+n.w&&t>=n.y&&t<=n.y+n.d),Z=(e,t,n,r)=>[e,t,n,r,Ut(e,t)?0:-14],Wt={z:10,flanged:!0,routes:Ht,posts:[...[-395,-330,-215,-60].map(e=>Z(e,I,2,F)),Z(M,-294,2,14),...[-70,-140,-190,R].map(e=>Z(At,e,b,z)),...[-300,-155,10].map(e=>Z(e,R,b,z)),...[-225,-150,-90,-35].map(e=>Z(240,e,2.6,40)),...[-225,-150,-90,-35,20].map(e=>Z(265,e,2.6,q)),...[-20,100,215].map(e=>Z(e,X,2.6,40)),...[-150,-20,130].map(e=>Z(e,J,2.6,Y))]},Q=n(),Gt={x:-248,y:-164,w:92,d:58,r:3},Kt={x:-136,y:-152,w:138,d:40,r:3},qt=xe(Ze),Jt=xe(j),Yt=(e,t)=>p(e,t,`coolantret`,!0),Xt=(e,t)=>be(e,t,Ze),Zt=(e,t)=>be(e,t,j),Qt=(e,t)=>fe(e,t,{barFull:10,dialFull:12}),$t=e=>Ae(e,N,[{x:240,z:40,r:2.6},{x:265,z:lt[2],r:2.6}]),en=e=>Le(e,$e,N.x),tn=e=>Pe(e,[M,Qe,14]),nn=e=>Ne(e,k,`back`),rn=e=>Ne(e,k,`front`);function an({ids:e}){let t=a(),n=f(Wt,vt),r=(0,Oe.useMemo)(()=>h(t,We)+t.plinth(He)+t.plinth(Ue)+je(t,dt)+Me(t,Xe,62,D.map(([e])=>e)),[t]),s=e=>(0,Q.jsx)(i,{html:`${n.layers[e]??``}<g data-flows="${e}" data-depth="${e===0?-1e9:_t[e-1]??0}"></g>`,data:{pipes:``}},`pipes-${e}`),c=[e.genA,e.genB,e.genC],l={"bund-back":(0,Q.jsx)(g,{build:nn,intro:1}),bulk:(0,Q.jsx)(`g`,{className:`fuel-tank`,children:(0,Q.jsx)(d,{to:y(O),children:(0,Q.jsx)(o,{id:e.bulk,plan:qt,intro:2,draw:Xt})})}),"bund-front":(0,Q.jsx)(g,{build:rn,intro:2}),valve:(0,Q.jsx)(g,{build:tn,intro:3}),day:(0,Q.jsx)(`g`,{className:`fuel-tank`,children:(0,Q.jsx)(d,{to:y(A),children:(0,Q.jsx)(o,{id:e.day,plan:Jt,intro:3,draw:Zt})})}),vent:(0,Q.jsx)(d,{to:y(et),children:(0,Q.jsx)(o,{id:e.fan,plan:Re,intro:9,draw:Be})}),lineup:(0,Q.jsx)(g,{build:en,intro:8}),hall:(0,Q.jsx)(g,{build:$t,intro:8}),compressor:(0,Q.jsx)(d,{from:ft,to:y(pt),children:(0,Q.jsx)(o,{id:e.compressor,plan:Kt,intro:13,draw:Qt})})};for(let[e,t]of D.entries())l[`gen${e}`]=(0,Q.jsx)(`g`,{className:`gen-set`,children:(0,Q.jsx)(d,{to:y(t),children:(0,Q.jsx)(o,{id:c[e]??``,plan:ge,intro:4+e,draw:ve})})});for(let[t,n]of nt.entries())l[`chiller${t}`]=(0,Q.jsx)(d,{from:tt,to:y(n),children:(0,Q.jsx)(o,{id:t?e.chillerB:e.chillerA,plan:Gt,intro:10+t,draw:ue})});for(let[t,n]of st.entries())l[`pump${t}`]=(0,Q.jsx)(d,{from:at,to:y(n),scale:ot,children:(0,Q.jsx)(o,{id:t?e.pumpB:e.pumpA,plan:ae,intro:12+t,draw:Yt})});return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(i,{html:r,data:{plinth:``}}),s(0),gt.flatMap((e,t)=>[(0,Q.jsx)(`g`,{children:l[e.key]},e.key),s(t+1)])]})}var $=e=>e>.002?6+26*re(e*2):0,on=e=>{let{svg:t,feed:n,ids:r}=e,i=ne(t),a=ye(e,i),o=Ce(e),s=de(e,i),c=ce(e,i),l=pe(e,i),u=[a,o,s,c,l,he(e,i)],d=ie(e,e=>oe(n,e,`availability`)),f=se(e,{needle:e=>l.needle(e)??s.needle(e)??0,bar:e=>u.reduce((t,n)=>t??n.bar(e),void 0)??0,alertsHigh:()=>!0,ready:()=>!0}),p=()=>{let e=n.param(r.day,`max_inflow_lps`,0);return e>0?re(n.num(r.day,`inflow_rate`)/e):0},m=(...e)=>re(e.reduce((e,t)=>e+a.fuelPu(t),0)),h=()=>c.flowPu(r.pumpA)+c.flowPu(r.pumpB),g=e=>{let t=[r.chillerA,r.chillerB].filter(e=>n.num(e,`coolant_flow_rate`)>0);return t.includes(e)?h()/t.length:0},ee=v(e,({id:e})=>{switch(e){case`xfer:a`:case`xfer:b`:return $(p());case`fuel:all`:return $(m(r.genA,r.genB,r.genC));case`fuel:bc`:return $(m(r.genB,r.genC));case`fuel:c`:return $(m(r.genC));case`fuel:a`:return $(m(r.genA));case`fuel:b`:return $(m(r.genB));case`air:main`:case`air:ab`:case`air:c`:case`air:a`:case`air:b`:return $(l.deliveredPu(r.compressor));case`suction`:case`chws`:case`header`:return $(h());case`suction:duty`:case`discharge:duty`:return $(c.flowPu(r.pumpA));case`suction:standby`:case`discharge:standby`:case`header:standby`:return $(c.flowPu(r.pumpB));case`in:a`:case`out:a`:return $(g(r.chillerA));case`in:b`:case`out:b`:case`header:b`:case`chws:b`:return $(g(r.chillerB));default:return 0}});return{data(e){d.draw(e)},draw({sdt:e,t,introDone:n}){ee.draw(e),f.draw(e,t);for(let r of u)r.draw(e,t,n)},resync(){},status:e=>le(n,e,`availability`)}},sn=_(Ge),cn=m(sn,Wt,vt),ln=te({layout:{width:Ve,height:620,label:`Isometric model of the Backup Power facility: along the back, the fuel yard with its bulk tank in a bund and the day tank, three diesel gen sets side by side with their exhaust stacks and radiators, the electrical lineup and the data hall they back up; along the front, the start-air compressor, two chillers and two chilled-water pumps whose loop runs to the hall. Pipes carry fuel, start air and chilled water between them. Every moving part follows live values from the running engine.`,kit:sn,flows:cn.flows,joints:cn.joints,Scene:an,compose:on},resolve:Ee,things:De,caption:`generation · fuel · cooling`,mismatch:`This floor expects the Backup Power facility: three diesel gensets, the bulk and day fuel tanks, two chillers with two chilled-water pumps, the start-air compressor and the hall ventilation motor, by area and line.`,statusBasis:`availability`,Overview:c,tab:`Plant`});export{ln as backupFloor};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ot as e}from"./vendor-ui-D8j69UH4.js";import{ot as t}from"./api-
|
|
1
|
+
import{ot as e}from"./vendor-ui-D8j69UH4.js";import{ot as t}from"./api-BG2sUkwk.js";import{a as n,i as r,n as i,t as a}from"./status-kit-pFRjEjVU.js";var o=e(),s={g:`live`,a:`idle`,r:`fault`,"":`off`};function c({name:e,level:t}){return(0,o.jsxs)(`li`,{className:`flex items-center gap-3`,children:[(0,o.jsx)(`span`,{className:`w-28 shrink-0 truncate text-xs text-muted-foreground`,children:e}),(0,o.jsx)(`span`,{className:`h-1.5 min-w-0 flex-1 overflow-hidden rounded-full bg-muted`,children:(0,o.jsx)(`span`,{className:`block h-full rounded-full bg-info`,style:{width:`${Math.max(0,Math.min(100,t))}%`}})}),(0,o.jsxs)(`span`,{className:`w-10 shrink-0 text-right font-mono text-[11px] tabular-nums`,children:[t.toFixed(0),` %`]})]})}function l({things:e,status:l,onSelect:u}){let d=t(e=>e.memberValues),f=e.map(e=>({thing:e,status:l(e.key)})),p=f.filter(e=>e.status[1]===`r`).length,m=f.filter(e=>e.status[0]===`stopped`).length,h=f.length-p-m,g=e.flatMap(e=>{let t=d.get(e.assetId)?.get(`level_percent`)?.value;return typeof t==`number`?[{name:e.name,level:t}]:[]}),_=[...new Set(e.map(e=>e.area??``))];return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(`div`,{className:`grid grid-cols-3 gap-3 px-4 pt-4 pb-5`,children:[(0,o.jsx)(a,{label:`Online`,value:String(h)}),(0,o.jsx)(a,{label:`Stopped`,value:String(m)}),(0,o.jsx)(a,{label:`Faulted`,value:String(p)})]}),g.length>0?(0,o.jsx)(r,{title:`Levels`,note:`live`,children:(0,o.jsx)(`ul`,{className:`flex flex-col gap-2.5`,children:g.map(e=>(0,o.jsx)(c,{name:e.name,level:e.level},e.name))})}):null,_.map(e=>(0,o.jsx)(r,{title:e,note:`flow order`,children:(0,o.jsx)(`ul`,{className:`-mx-2 flex flex-col`,children:f.filter(t=>(t.thing.area??``)===e).map(({thing:e,status:[t,r]})=>(0,o.jsx)(i,{tone:s[r],name:e.name,note:n(t),onSelect:()=>u(e.key)},e.key))})},e))]})}function u(e,{template:t,assets:n}){let r=new Set(t.assetIds),i=n.filter(e=>r.has(e.id)),a=new Map;for(let[,t,n,r]of e){let e=`${t}|${n}|${r}`;a.set(e,(a.get(e)??0)+1)}let o={};for(let[t,n,r,s,c]of e){let e=i.filter(e=>e.model===n&&e.browsePath?.[2]===r&&e.browsePath?.[3]===s).map(e=>e.id).sort(),l=e[c];if(!l||e.length!==a.get(`${n}|${r}|${s}`))return{status:`mismatch`};o[t]=l}return{status:`ready`,ids:o}}export{l as n,u as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./catalog-DOGCbTe4.js";export{e as CatalogPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{c as t}from"./vendor-charts-95ykyDlI.js";import{ot as n}from"./vendor-ui-D8j69UH4.js";import{S as r,o as i,ot as a,v as o}from"./api-tM5PSXjr.js";import{t as s}from"./useQuery-smgfSdOx.js";import{t as c}from"./proxy-CWZabK8f.js";import{t as l}from"./AnimatePresence-BSSlw02V.js";import{c as u,n as d}from"./chunk-OE4NN4TA-DBWZidbW.js";import{a as f,c as ee,i as p,n as m,o as h,r as g,t as _}from"./dialog-B5PqrKVw.js";import{C as v,S as te,u as y,w as b}from"./format-Bx7DF-TB.js";import{n as x,t as S}from"./utils-XFKvwlFT.js";import{n as C,t as w}from"./catalog-template-icons-DGyxSm-F.js";import{r as T}from"./source-host-miravo-B8eM2IHw.js";import{a as E,i as D,l as O,o as k,t as A}from"./use-engine-command-mutation-oLQW2r4F.js";import{t as j}from"./query-fetch-error-CWLZA2L5.js";import{t as M}from"./rocket-KZ5oHK1G.js";import{i as ne,n as N,r as P,t as F}from"./catalog-source-B4L5N-a1.js";import{t as I}from"./badge-Bk1DaL6C.js";import{n as L}from"./get-error-message-CEvauOXv.js";var R=x(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),z=e(t(),1),B=n(),V=[`builtin`,`personal`];function H(){let[e,t]=(0,z.useState)(``),[n,d]=(0,z.useState)(`all`),[b,x]=(0,z.useState)(null),[w,T]=(0,z.useState)(null),[D,O]=(0,z.useState)(null),k=(0,z.useRef)(null),N=A(),F=u(),R=a(e=>e.templates),H=(0,z.useMemo)(()=>new Set(R.map(e=>e.templateId)),[R]);(0,z.useEffect)(()=>{let e=e=>{if(e.key!==`/`||e.metaKey||e.ctrlKey||e.altKey)return;let t=e.target.tagName;t===`INPUT`||t===`TEXTAREA`||t===`SELECT`||(e.preventDefault(),k.current?.focus())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]);let W=s({queryKey:o.catalog.templates(),queryFn:()=>i(`/catalog/templates`,r.catalogTemplates)}),K=W.data??[],q=w===null?null:K.find(e=>e.id===w)??null,J=W.isPending&&!W.data,Y=W.isError&&!W.data,X=W.isError&&!!W.data,Z=L(W.error,`Failed to load templates.`),re=(0,z.useCallback)(e=>{O(e)},[]),ie=(0,z.useCallback)(e=>{T(e)},[]),ae=async e=>{x(e);try{return await N.mutateAsync({type:`loadTemplate`,templatePath:e}),ee(`Next: connect a client`),F(`/?highlight=${encodeURIComponent(e)}`),!0}catch{return!1}finally{x(null)}},oe=(0,z.useMemo)(()=>{let e={all:K.length};for(let t of V)e[t]=0;for(let t of K){let n=P(t.source);e[n]=(e[n]??0)+1}return e},[K]),Q=e.toLowerCase(),$=K.filter(e=>n===`all`||P(e.source)===n).filter(e=>Q?e.name.toLowerCase().includes(Q)||e.id.toLowerCase().includes(Q)||(e.description?.toLowerCase().includes(Q)??!1):!0);return(0,B.jsxs)(`div`,{className:`@container/templates mx-auto flex w-full max-w-screen-2xl flex-col gap-5 p-4 sm:gap-6 sm:p-6`,children:[(0,B.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,B.jsx)(`h1`,{className:`font-heading text-2xl font-semibold tracking-tight`,children:`Template Catalog`}),(0,B.jsx)(I,{variant:`outline`,className:`text-xs`,children:Y?(0,B.jsx)(`span`,{className:`text-destructive`,children:`Unavailable`}):J&&K.length===0?(0,B.jsx)(B.Fragment,{children:`Loading...`}):(0,B.jsxs)(B.Fragment,{children:[new Set(K.map(e=>e.id)).size,` templates`]})})]}),(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Choose a template to launch a realistic industrial system. Each template includes pre-configured asset models with realistic physics, lifecycle degradation, and fault modes.`})]}),Y&&(0,B.jsx)(j,{message:Z,onRetry:()=>void W.refetch(),isRetrying:W.isFetching}),X&&(0,B.jsx)(j,{message:`${Z} Showing cached templates.`,onRetry:()=>void W.refetch(),isRetrying:W.isFetching}),!Y&&(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,B.jsxs)(`div`,{className:`relative max-w-xs flex-1 min-w-[14rem]`,children:[(0,B.jsx)(ne,{className:`absolute left-2.5 top-2.5 size-4 text-muted-foreground`}),(0,B.jsx)(te,{ref:k,placeholder:`Filter templates...`,value:e,onChange:e=>t(e.target.value),className:`pl-9 pr-7`}),!e&&(0,B.jsx)(`kbd`,{className:`pointer-events-none absolute top-1/2 right-2 -translate-y-1/2 rounded-[var(--miravo-radius-tight)] border border-border bg-muted px-1 font-mono text-[10px] text-muted-foreground`,children:`/`})]}),(0,B.jsx)(G,{value:n,counts:oe,onChange:d})]}),(0,B.jsx)(`div`,{className:`grid grid-cols-1 gap-4 @[720px]/templates:grid-cols-2`,"aria-busy":J&&!Y,children:Y?null:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(l,{children:$.map((e,t)=>(0,B.jsx)(c.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,scale:.96,transition:{duration:.15}},transition:{type:`spring`,stiffness:380,damping:30,delay:t*.04},className:`grid`,children:(0,B.jsx)(U,{template:e,launching:b===e.id,loaded:H.has(e.id),onInspect:re,onLaunch:ie})},`${e.source}:${e.id}`))}),$.length===0&&K.length>0&&(0,B.jsx)(`p`,{className:`col-span-full py-8 text-center text-sm text-muted-foreground`,children:`No templates match the current filters.`})]})}),K.length>0&&(0,B.jsx)(`div`,{className:S(E,`p-0`),children:(0,B.jsx)(`div`,{className:`community-teaser relative overflow-hidden rounded-[inherit]`,children:(0,B.jsx)(`div`,{className:`relative z-10 mx-auto max-w-3xl px-5 py-10 sm:px-10 sm:py-12`,children:(0,B.jsxs)(`div`,{className:`grid items-center gap-10 lg:grid-cols-[minmax(0,1fr)_minmax(0,17rem)]`,children:[(0,B.jsxs)(`div`,{className:`order-2 flex min-w-0 flex-col gap-4 lg:order-1`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-3 gap-y-1`,children:[(0,B.jsx)(`p`,{className:`blueprint-title text-primary`,children:`Future channel`}),(0,B.jsx)(`span`,{className:`blueprint-stat text-[10px] text-muted-foreground`,children:`MIRAVO_REGISTRY · NOT_CONNECTED`})]}),(0,B.jsx)(`h2`,{className:`font-heading text-xl font-semibold tracking-tight sm:text-2xl`,children:`Community Templates`}),(0,B.jsx)(`p`,{className:`max-w-xl text-sm leading-relaxed text-muted-foreground`,children:`Share your industrial templates with the Miravo community. Publish custom templates, discover configurations from other engineers, and fork them as your starting point.`}),(0,B.jsx)(`div`,{children:(0,B.jsx)(I,{variant:`outline`,className:`community-teaser-soon border-primary/35 bg-primary/5 text-[10px] text-primary`,children:`Coming Soon`})})]}),(0,B.jsx)(`div`,{className:`order-1 flex justify-center lg:order-2 lg:justify-end`,children:(0,B.jsxs)(`div`,{className:`community-teaser-module relative flex w-full max-w-[14rem] flex-col items-center justify-center gap-3 border border-primary/15 bg-muted/15 py-8 sm:max-w-[15.5rem] sm:py-10`,"aria-hidden":!0,children:[(0,B.jsx)(`div`,{className:`community-teaser-icon-ring relative z-[1] flex size-[4.25rem] items-center justify-center rounded-[var(--miravo-radius-tight)] border border-primary/35 bg-gradient-to-br from-primary/18 to-primary/5`,children:(0,B.jsx)(M,{className:`size-9 text-primary`,"aria-hidden":!0})}),(0,B.jsx)(`span`,{className:`blueprint-stat relative z-[1] text-[9px] tracking-[0.18em] text-muted-foreground`,children:`AWAITING SIGNAL`}),(0,B.jsx)(`span`,{className:`blueprint-stat relative z-[1] text-[9px] text-muted-foreground`,children:`Uplink idle`})]})})]})})})}),(0,B.jsx)(_,{open:w!==null,onOpenChange:e=>{e||T(null)},children:(0,B.jsxs)(m,{className:`min-w-0 sm:max-w-md`,children:[(0,B.jsxs)(f,{children:[(0,B.jsx)(h,{children:`Launch template?`}),(0,B.jsx)(g,{children:q!==null&&(0,B.jsxs)(B.Fragment,{children:[`This loads`,` `,(0,B.jsx)(`span`,{className:`font-medium text-foreground`,children:y(q.name)}),` `,`into the running factory.`]})})]}),(0,B.jsxs)(p,{children:[(0,B.jsx)(v,{variant:`outline`,disabled:b!==null,onClick:()=>T(null),children:`Cancel`}),(0,B.jsx)(v,{disabled:b!==null||q===null,onClick:async()=>{q!==null&&await ae(q.id)&&T(null)},children:b===q?.id?`Launching...`:`Launch`})]})]})}),(0,B.jsx)(C,{templateId:D?.id??null,onClose:()=>O(null)})]})}var U=(0,z.memo)(function({template:e,launching:t,loaded:n,onInspect:r,onLaunch:i}){return(0,B.jsxs)(`div`,{className:S(k,`flex flex-col gap-4 p-5`),children:[(0,B.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,B.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-[var(--miravo-radius-stadium-sm)] bg-primary/10 text-primary`,children:(0,B.jsx)(w,{id:e.id,className:`size-5`})}),(0,B.jsxs)(`div`,{className:`min-w-0 flex flex-col gap-1`,children:[(0,B.jsx)(`span`,{className:`font-heading text-sm font-semibold uppercase tracking-wide`,children:y(e.name)}),(0,B.jsx)(`p`,{className:`line-clamp-3 text-xs leading-relaxed text-foreground/75`,children:e.description??`Industrial template.`}),(0,B.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:e.id})]})]}),(0,B.jsx)(`div`,{className:`px-3 py-2`,children:(0,B.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:e.models.map(e=>(0,B.jsx)(I,{variant:`outline`,className:`h-auto min-h-5 rounded-[var(--miravo-radius-tight)] px-1.5 py-0 font-mono text-[10px] font-normal text-primary`,children:e},e))})}),(0,B.jsxs)(`div`,{className:`mt-auto flex flex-wrap items-center gap-4 font-mono text-[11px] text-muted-foreground`,children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`span`,{className:`text-foreground`,children:e.assetCount}),` assets`]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`span`,{className:`text-foreground`,children:e.models.length}),` models`]}),e.memberCount>0&&(0,B.jsxs)(`span`,{children:[`~`,(0,B.jsx)(`span`,{className:`text-foreground`,children:W(e.memberCount)}),` tags/cycle`]}),n&&(0,B.jsx)(I,{variant:`outline`,className:`ml-auto shrink-0 border-success/40 bg-success/10 font-sans text-[10px] font-medium uppercase tracking-wide text-success`,children:`Loaded`}),(0,B.jsx)(I,{variant:`outline`,className:S(`shrink-0 font-sans text-[10px] font-medium uppercase tracking-wide`,!n&&`ml-auto`,F(e.source)),children:N(e.source)})]}),(0,B.jsxs)(`div`,{className:`flex items-center gap-2 border-t border-border/30 pt-3`,children:[(0,B.jsxs)(v,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>r(e),className:D,children:[(0,B.jsx)(T,{className:`size-3.5`,"aria-hidden":!0}),`Inspect`]}),n?(0,B.jsxs)(d,{to:`/`,className:S(b({size:`sm`}),`ml-auto`),children:[(0,B.jsx)(R,{className:`mr-1 size-3`,"aria-hidden":!0}),`Open`]}):(0,B.jsxs)(v,{size:`sm`,className:`ml-auto`,disabled:t,onClick:()=>i(e.id),children:[(0,B.jsx)(O,{className:`mr-1 size-3`}),t?`...`:`Launch`]})]})]})});function W(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function G({value:e,counts:t,onChange:n}){return(0,B.jsx)(`div`,{className:`flex flex-wrap items-center gap-1.5`,role:`radiogroup`,"aria-label":`Filter by source`,children:[{id:`all`,label:`All`},...V.map(e=>({id:e,label:N(e)}))].map(r=>{let i=e===r.id,a=t[r.id]??0,o=r.id!==`all`&&a===0;return(0,B.jsxs)(`label`,{className:S(`inline-flex h-7 items-center gap-1.5 rounded-[var(--miravo-radius-pill)] border px-3 text-xs font-medium transition-colors`,i?`border-primary/60 bg-primary/15 text-primary`:`border-border/60 bg-card/30 text-muted-foreground hover:border-border hover:bg-muted/40 hover:text-foreground`,o?`cursor-not-allowed opacity-40 hover:border-border/60 hover:bg-card/30 hover:text-muted-foreground`:`cursor-pointer`),children:[(0,B.jsx)(`input`,{type:`radio`,name:`catalog-source-filter`,value:r.id,checked:i,disabled:o,onChange:()=>n(r.id),className:`sr-only`}),(0,B.jsx)(`span`,{children:r.label}),(0,B.jsx)(`span`,{className:`font-mono text-[10px] opacity-70`,children:a})]},r.id)})})}export{R as n,H as t};
|
|
1
|
+
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{c as t}from"./vendor-charts-95ykyDlI.js";import{ot as n}from"./vendor-ui-D8j69UH4.js";import{S as r,o as i,ot as a,v as o}from"./api-BG2sUkwk.js";import{t as s}from"./useQuery-Cl48zZ73.js";import{t as c}from"./proxy-CWZabK8f.js";import{t as l}from"./AnimatePresence-BSSlw02V.js";import{c as u,n as d}from"./chunk-OE4NN4TA-DBWZidbW.js";import{a as f,c as ee,i as p,n as m,o as h,r as g,t as _}from"./dialog-B5PqrKVw.js";import{C as v,S as te,u as y,w as b}from"./format-Bx7DF-TB.js";import{n as x,t as S}from"./utils-XFKvwlFT.js";import{n as C,t as w}from"./catalog-template-icons-7CBAYTtP.js";import{r as T}from"./source-host-miravo-B8eM2IHw.js";import{a as E,i as D,l as O,o as k,t as A}from"./use-engine-command-mutation-DrMOfYty.js";import{t as j}from"./query-fetch-error-CWLZA2L5.js";import{t as M}from"./rocket-KZ5oHK1G.js";import{i as ne,n as N,r as P,t as F}from"./catalog-source-B4L5N-a1.js";import{t as I}from"./badge-Bk1DaL6C.js";import{n as L}from"./get-error-message-C9VW9IZB.js";var R=x(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),z=e(t(),1),B=n(),V=[`builtin`,`personal`];function H(){let[e,t]=(0,z.useState)(``),[n,d]=(0,z.useState)(`all`),[b,x]=(0,z.useState)(null),[w,T]=(0,z.useState)(null),[D,O]=(0,z.useState)(null),k=(0,z.useRef)(null),N=A(),F=u(),R=a(e=>e.templates),H=(0,z.useMemo)(()=>new Set(R.map(e=>e.templateId)),[R]);(0,z.useEffect)(()=>{let e=e=>{if(e.key!==`/`||e.metaKey||e.ctrlKey||e.altKey)return;let t=e.target.tagName;t===`INPUT`||t===`TEXTAREA`||t===`SELECT`||(e.preventDefault(),k.current?.focus())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]);let W=s({queryKey:o.catalog.templates(),queryFn:()=>i(`/catalog/templates`,r.catalogTemplates)}),K=W.data??[],q=w===null?null:K.find(e=>e.id===w)??null,J=W.isPending&&!W.data,Y=W.isError&&!W.data,X=W.isError&&!!W.data,Z=L(W.error,`Failed to load templates.`),re=(0,z.useCallback)(e=>{O(e)},[]),ie=(0,z.useCallback)(e=>{T(e)},[]),ae=async e=>{x(e);try{return await N.mutateAsync({type:`loadTemplate`,templatePath:e}),ee(`Next: connect a client`),F(`/?highlight=${encodeURIComponent(e)}`),!0}catch{return!1}finally{x(null)}},oe=(0,z.useMemo)(()=>{let e={all:K.length};for(let t of V)e[t]=0;for(let t of K){let n=P(t.source);e[n]=(e[n]??0)+1}return e},[K]),Q=e.toLowerCase(),$=K.filter(e=>n===`all`||P(e.source)===n).filter(e=>Q?e.name.toLowerCase().includes(Q)||e.id.toLowerCase().includes(Q)||(e.description?.toLowerCase().includes(Q)??!1):!0);return(0,B.jsxs)(`div`,{className:`@container/templates mx-auto flex w-full max-w-screen-2xl flex-col gap-5 p-4 sm:gap-6 sm:p-6`,children:[(0,B.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,B.jsx)(`h1`,{className:`font-heading text-2xl font-semibold tracking-tight`,children:`Template Catalog`}),(0,B.jsx)(I,{variant:`outline`,className:`text-xs`,children:Y?(0,B.jsx)(`span`,{className:`text-destructive`,children:`Unavailable`}):J&&K.length===0?(0,B.jsx)(B.Fragment,{children:`Loading...`}):(0,B.jsxs)(B.Fragment,{children:[new Set(K.map(e=>e.id)).size,` templates`]})})]}),(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Choose a template to launch a realistic industrial system. Each template includes pre-configured asset models with realistic physics, lifecycle degradation, and fault modes.`})]}),Y&&(0,B.jsx)(j,{message:Z,onRetry:()=>void W.refetch(),isRetrying:W.isFetching}),X&&(0,B.jsx)(j,{message:`${Z} Showing cached templates.`,onRetry:()=>void W.refetch(),isRetrying:W.isFetching}),!Y&&(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,B.jsxs)(`div`,{className:`relative max-w-xs flex-1 min-w-[14rem]`,children:[(0,B.jsx)(ne,{className:`absolute left-2.5 top-2.5 size-4 text-muted-foreground`}),(0,B.jsx)(te,{ref:k,placeholder:`Filter templates...`,value:e,onChange:e=>t(e.target.value),className:`pl-9 pr-7`}),!e&&(0,B.jsx)(`kbd`,{className:`pointer-events-none absolute top-1/2 right-2 -translate-y-1/2 rounded-[var(--miravo-radius-tight)] border border-border bg-muted px-1 font-mono text-[10px] text-muted-foreground`,children:`/`})]}),(0,B.jsx)(G,{value:n,counts:oe,onChange:d})]}),(0,B.jsx)(`div`,{className:`grid grid-cols-1 gap-4 @[720px]/templates:grid-cols-2`,"aria-busy":J&&!Y,children:Y?null:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(l,{children:$.map((e,t)=>(0,B.jsx)(c.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,scale:.96,transition:{duration:.15}},transition:{type:`spring`,stiffness:380,damping:30,delay:t*.04},className:`grid`,children:(0,B.jsx)(U,{template:e,launching:b===e.id,loaded:H.has(e.id),onInspect:re,onLaunch:ie})},`${e.source}:${e.id}`))}),$.length===0&&K.length>0&&(0,B.jsx)(`p`,{className:`col-span-full py-8 text-center text-sm text-muted-foreground`,children:`No templates match the current filters.`})]})}),K.length>0&&(0,B.jsx)(`div`,{className:S(E,`p-0`),children:(0,B.jsx)(`div`,{className:`community-teaser relative overflow-hidden rounded-[inherit]`,children:(0,B.jsx)(`div`,{className:`relative z-10 mx-auto max-w-3xl px-5 py-10 sm:px-10 sm:py-12`,children:(0,B.jsxs)(`div`,{className:`grid items-center gap-10 lg:grid-cols-[minmax(0,1fr)_minmax(0,17rem)]`,children:[(0,B.jsxs)(`div`,{className:`order-2 flex min-w-0 flex-col gap-4 lg:order-1`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-3 gap-y-1`,children:[(0,B.jsx)(`p`,{className:`blueprint-title text-primary`,children:`Future channel`}),(0,B.jsx)(`span`,{className:`blueprint-stat text-[10px] text-muted-foreground`,children:`MIRAVO_REGISTRY · NOT_CONNECTED`})]}),(0,B.jsx)(`h2`,{className:`font-heading text-xl font-semibold tracking-tight sm:text-2xl`,children:`Community Templates`}),(0,B.jsx)(`p`,{className:`max-w-xl text-sm leading-relaxed text-muted-foreground`,children:`Share your industrial templates with the Miravo community. Publish custom templates, discover configurations from other engineers, and fork them as your starting point.`}),(0,B.jsx)(`div`,{children:(0,B.jsx)(I,{variant:`outline`,className:`community-teaser-soon border-primary/35 bg-primary/5 text-[10px] text-primary`,children:`Coming Soon`})})]}),(0,B.jsx)(`div`,{className:`order-1 flex justify-center lg:order-2 lg:justify-end`,children:(0,B.jsxs)(`div`,{className:`community-teaser-module relative flex w-full max-w-[14rem] flex-col items-center justify-center gap-3 border border-primary/15 bg-muted/15 py-8 sm:max-w-[15.5rem] sm:py-10`,"aria-hidden":!0,children:[(0,B.jsx)(`div`,{className:`community-teaser-icon-ring relative z-[1] flex size-[4.25rem] items-center justify-center rounded-[var(--miravo-radius-tight)] border border-primary/35 bg-gradient-to-br from-primary/18 to-primary/5`,children:(0,B.jsx)(M,{className:`size-9 text-primary`,"aria-hidden":!0})}),(0,B.jsx)(`span`,{className:`blueprint-stat relative z-[1] text-[9px] tracking-[0.18em] text-muted-foreground`,children:`AWAITING SIGNAL`}),(0,B.jsx)(`span`,{className:`blueprint-stat relative z-[1] text-[9px] text-muted-foreground`,children:`Uplink idle`})]})})]})})})}),(0,B.jsx)(_,{open:w!==null,onOpenChange:e=>{e||T(null)},children:(0,B.jsxs)(m,{className:`min-w-0 sm:max-w-md`,children:[(0,B.jsxs)(f,{children:[(0,B.jsx)(h,{children:`Launch template?`}),(0,B.jsx)(g,{children:q!==null&&(0,B.jsxs)(B.Fragment,{children:[`This loads`,` `,(0,B.jsx)(`span`,{className:`font-medium text-foreground`,children:y(q.name)}),` `,`into the running factory.`]})})]}),(0,B.jsxs)(p,{children:[(0,B.jsx)(v,{variant:`outline`,disabled:b!==null,onClick:()=>T(null),children:`Cancel`}),(0,B.jsx)(v,{disabled:b!==null||q===null,onClick:async()=>{q!==null&&await ae(q.id)&&T(null)},children:b===q?.id?`Launching...`:`Launch`})]})]})}),(0,B.jsx)(C,{templateId:D?.id??null,onClose:()=>O(null)})]})}var U=(0,z.memo)(function({template:e,launching:t,loaded:n,onInspect:r,onLaunch:i}){return(0,B.jsxs)(`div`,{className:S(k,`flex flex-col gap-4 p-5`),children:[(0,B.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,B.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-[var(--miravo-radius-stadium-sm)] bg-primary/10 text-primary`,children:(0,B.jsx)(w,{id:e.id,className:`size-5`})}),(0,B.jsxs)(`div`,{className:`min-w-0 flex flex-col gap-1`,children:[(0,B.jsx)(`span`,{className:`font-heading text-sm font-semibold uppercase tracking-wide`,children:y(e.name)}),(0,B.jsx)(`p`,{className:`line-clamp-3 text-xs leading-relaxed text-foreground/75`,children:e.description??`Industrial template.`}),(0,B.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:e.id})]})]}),(0,B.jsx)(`div`,{className:`px-3 py-2`,children:(0,B.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:e.models.map(e=>(0,B.jsx)(I,{variant:`outline`,className:`h-auto min-h-5 rounded-[var(--miravo-radius-tight)] px-1.5 py-0 font-mono text-[10px] font-normal text-primary`,children:e},e))})}),(0,B.jsxs)(`div`,{className:`mt-auto flex flex-wrap items-center gap-4 font-mono text-[11px] text-muted-foreground`,children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`span`,{className:`text-foreground`,children:e.assetCount}),` assets`]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`span`,{className:`text-foreground`,children:e.models.length}),` models`]}),e.memberCount>0&&(0,B.jsxs)(`span`,{children:[`~`,(0,B.jsx)(`span`,{className:`text-foreground`,children:W(e.memberCount)}),` tags/cycle`]}),n&&(0,B.jsx)(I,{variant:`outline`,className:`ml-auto shrink-0 border-success/40 bg-success/10 font-sans text-[10px] font-medium uppercase tracking-wide text-success`,children:`Loaded`}),(0,B.jsx)(I,{variant:`outline`,className:S(`shrink-0 font-sans text-[10px] font-medium uppercase tracking-wide`,!n&&`ml-auto`,F(e.source)),children:N(e.source)})]}),(0,B.jsxs)(`div`,{className:`flex items-center gap-2 border-t border-border/30 pt-3`,children:[(0,B.jsxs)(v,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>r(e),className:D,children:[(0,B.jsx)(T,{className:`size-3.5`,"aria-hidden":!0}),`Inspect`]}),n?(0,B.jsxs)(d,{to:`/`,className:S(b({size:`sm`}),`ml-auto`),children:[(0,B.jsx)(R,{className:`mr-1 size-3`,"aria-hidden":!0}),`Open`]}):(0,B.jsxs)(v,{size:`sm`,className:`ml-auto`,disabled:t,onClick:()=>i(e.id),children:[(0,B.jsx)(O,{className:`mr-1 size-3`}),t?`...`:`Launch`]})]})]})});function W(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function G({value:e,counts:t,onChange:n}){return(0,B.jsx)(`div`,{className:`flex flex-wrap items-center gap-1.5`,role:`radiogroup`,"aria-label":`Filter by source`,children:[{id:`all`,label:`All`},...V.map(e=>({id:e,label:N(e)}))].map(r=>{let i=e===r.id,a=t[r.id]??0,o=r.id!==`all`&&a===0;return(0,B.jsxs)(`label`,{className:S(`inline-flex h-7 items-center gap-1.5 rounded-[var(--miravo-radius-pill)] border px-3 text-xs font-medium transition-colors`,i?`border-primary/60 bg-primary/15 text-primary`:`border-border/60 bg-card/30 text-muted-foreground hover:border-border hover:bg-muted/40 hover:text-foreground`,o?`cursor-not-allowed opacity-40 hover:border-border/60 hover:bg-card/30 hover:text-muted-foreground`:`cursor-pointer`),children:[(0,B.jsx)(`input`,{type:`radio`,name:`catalog-source-filter`,value:r.id,checked:i,disabled:o,onChange:()=>n(r.id),className:`sr-only`}),(0,B.jsx)(`span`,{children:r.label}),(0,B.jsx)(`span`,{className:`font-mono text-[10px] opacity-70`,children:a})]},r.id)})})}export{R as n,H as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{c as t}from"./vendor-charts-95ykyDlI.js";import{ot as n}from"./vendor-ui-D8j69UH4.js";import{S as r,o as i,ot as a,v as o}from"./api-tM5PSXjr.js";import{t as s}from"./useQuery-smgfSdOx.js";import{t as c}from"./proxy-CWZabK8f.js";import{t as l}from"./AnimatePresence-BSSlw02V.js";import{c as u}from"./chunk-OE4NN4TA-DBWZidbW.js";import{t as d}from"./shallow-Cin0mLuv.js";import{c as f,h as p,s as m}from"./format-Bx7DF-TB.js";import{n as h,t as g}from"./utils-XFKvwlFT.js";import{t as _}from"./chevron-down-x70Pto6j.js";import{t as v}from"./chevron-right-CrNKVFcI.js";import{t as y}from"./copy-button-CSUP1VjU.js";import{i as b,n as x,t as S}from"./registry-Kj-oMlVm.js";import{a as ee}from"./use-engine-command-mutation-oLQW2r4F.js";import{t as C}from"./query-fetch-error-CWLZA2L5.js";import{c as te,d as w,f as ne,l as T,s as E,t as D,u as O}from"./export-tab-BS4GlLBV.js";import{t as k}from"./badge-Bk1DaL6C.js";import{n as A}from"./get-error-message-CEvauOXv.js";import{a as re,c as ie,i as ae,n as oe,o as se,s as ce,t as le}from"./status-kit-BLG7OeIE.js";import{i as j,n as M,r as N,t as P}from"./tabs-Ch_VG8_S.js";var F=h(`building`,[[`path`,{d:`M12 10h.01`,key:`1nrarc`}],[`path`,{d:`M12 14h.01`,key:`1etili`}],[`path`,{d:`M12 6h.01`,key:`1vi96p`}],[`path`,{d:`M16 10h.01`,key:`1m94wz`}],[`path`,{d:`M16 14h.01`,key:`1gbofw`}],[`path`,{d:`M16 6h.01`,key:`1x0f13`}],[`path`,{d:`M8 10h.01`,key:`19clt8`}],[`path`,{d:`M8 14h.01`,key:`6423bh`}],[`path`,{d:`M8 6h.01`,key:`1dz90k`}],[`path`,{d:`M9 22v-3a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3`,key:`cabbwy`}],[`rect`,{x:`4`,y:`2`,width:`16`,height:`20`,rx:`2`,key:`1uxh74`}]]),I=h(`droplet`,[[`path`,{d:`M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z`,key:`c7niix`}]]),L=h(`flask-conical`,[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`,key:`18mbvz`}],[`path`,{d:`M6.453 15h11.094`,key:`3shlmq`}],[`path`,{d:`M8.5 2h7`,key:`csnxdl`}]]),R=h(`folder`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),z=h(`layout-grid`,[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]),B=h(`layout-template`,[[`rect`,{width:`18`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`f1a2em`}],[`rect`,{width:`9`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`jqznyg`}],[`rect`,{width:`5`,height:`7`,x:`16`,y:`14`,rx:`1`,key:`q5h2i8`}]]),V=h(`list`,[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]),H=h(`thermometer-sun`,[[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 8a4 4 0 0 0-1.645 7.647`,key:`wz5p04`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 14.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0z`,key:`yu0u2z`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}]]),U=h(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),W=e(t(),1),G=n(),K=20,ue=14,q=`flex w-3.5 shrink-0 items-center justify-center`;function de({asset:e,depth:t,area:n,line:r,detail:i}){let[a,o]=(0,W.useState)(!1),[s,c]=(0,W.useState)(!1),l=a?e.tags:e.tags.slice(0,10),u=e.tags.length-10;return(0,G.jsxs)(G.Fragment,{children:[l.map(a=>(0,G.jsx)(J,{member:a,depth:t,area:n,line:r,assetId:e.id,detail:i},a.name)),!a&&u>0&&(0,G.jsxs)(`button`,{type:`button`,className:`flex min-h-11 w-full items-center gap-1.5 border-t border-border/30 py-2 text-left font-mono text-xs text-muted-foreground hover:bg-muted/40 touch-manipulation sm:min-h-0 sm:py-1.5`,style:{paddingLeft:`${t*14+K}px`},onClick:()=>o(!0),children:[(0,G.jsx)(`span`,{className:q,"aria-hidden":!0}),(0,G.jsxs)(`span`,{children:[`+`,u,` more tags`]})]}),e.properties.length>0&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`button`,{type:`button`,className:`flex min-h-11 w-full items-center gap-1.5 border-t border-border/30 py-2 text-left font-mono text-xs text-muted-foreground hover:bg-muted/40 touch-manipulation sm:min-h-0 sm:py-1.5`,style:{paddingLeft:`${t*14+K}px`},onClick:()=>c(e=>!e),children:[(0,G.jsx)(`span`,{className:q,"aria-hidden":!0,children:s?(0,G.jsx)(_,{className:`size-3.5 opacity-60`,"aria-hidden":!0}):(0,G.jsx)(v,{className:`size-3.5 opacity-60`,"aria-hidden":!0})}),(0,G.jsxs)(`span`,{children:[e.properties.length,` properties`]})]}),s&&e.properties.map(a=>(0,G.jsx)(J,{member:a,depth:t,area:n,line:r,assetId:e.id,detail:i},a.name))]})]})}function J({member:e,depth:t,area:n,line:r,assetId:i,detail:a}){let o=e.kind===`property`,s=t*14+K+(o?ue:0),c=a.namespace,l=[c?.enterprise?`${c.enterprise}/${c.site??``}`:c?.prefix??``,n,r,i,e.name].filter(Boolean).join(`/`);return(0,G.jsx)(y,{value:l,label:`Copy UNS path`,successMessage:`UNS path copied`,successDescription:l,tooltipSide:`top`,render:()=>(0,G.jsxs)(`button`,{type:`button`,className:g(`flex w-full cursor-pointer flex-col gap-1 border-t border-border/25 py-2 text-left font-mono text-xs hover:bg-muted/35 touch-manipulation sm:min-h-0 sm:flex-row sm:items-center sm:gap-1.5 sm:py-1.5`,o&&`opacity-65`),style:{paddingLeft:`${s}px`},children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,G.jsx)(`span`,{className:q,"aria-hidden":!0,children:(0,G.jsx)(`span`,{className:g(`size-1 rounded-full ring-1 ring-border/50`,o?`bg-muted-foreground/25`:`bg-primary/50`)})}),(0,G.jsx)(`span`,{title:e.name,className:g(`min-w-0 truncate`,o?`text-muted-foreground`:`text-foreground`),children:f(e.name)}),o&&(0,G.jsx)(`span`,{className:`shrink-0 rounded-[var(--miravo-radius-tight)] bg-muted/60 px-1 py-px text-[10px] text-muted-foreground`,children:`PROP`})]}),(0,G.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-2 gap-y-0.5 pl-0 sm:ml-auto sm:flex-1 sm:justify-end sm:pl-0 sm:pr-1`,children:[(0,G.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:e.dataType}),e.unit&&(0,G.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:e.unit}),e.euRange&&(0,G.jsxs)(`span`,{className:`ml-auto shrink-0 tabular-nums text-muted-foreground`,children:[`[`,e.euRange[0],`–`,e.euRange[1],`]`]})]})]})})}function Y({depth:e,label:t,labelTitle:n,tag:r,tagKind:i,subtitle:a,subtitleTitle:o,count:s,expanded:c,onToggle:l,hasChildren:u}){let d=c?_:v,f=i===`area`?`text-primary`:`text-foreground`;return(0,G.jsxs)(`button`,{type:`button`,className:`flex min-h-11 w-full flex-col gap-1 border-t border-border/35 py-2 pr-2 text-left text-xs transition-colors touch-manipulation first:border-t-0 hover:bg-muted/40 sm:min-h-0 sm:flex-row sm:flex-wrap sm:items-center sm:gap-1.5 sm:gap-y-0 sm:py-1.5`,style:{paddingLeft:`${12+e*14}px`},onClick:l,children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 w-full items-center gap-1.5 sm:w-auto sm:flex-1 sm:flex-wrap sm:items-center`,children:[u?(0,G.jsx)(d,{className:`size-3.5 shrink-0 text-muted-foreground`,"aria-hidden":!0}):(0,G.jsx)(`span`,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),(0,G.jsx)(`span`,{title:n??void 0,className:g(`min-w-0 flex-1 truncate font-medium`,f),children:t}),(0,G.jsx)(`span`,{className:`shrink-0 text-[10px] tracking-wide text-muted-foreground uppercase`,children:r}),a&&(0,G.jsx)(`span`,{title:o??void 0,className:`hidden min-w-0 max-w-[min(11rem,38vw)] shrink truncate font-mono text-xs text-muted-foreground sm:inline`,children:a}),s!==void 0&&(0,G.jsx)(`span`,{className:`ml-auto shrink-0 tabular-nums text-xs text-muted-foreground`,children:s})]}),a&&(0,G.jsx)(`span`,{title:o??void 0,className:`min-w-0 truncate pl-7 font-mono text-xs text-muted-foreground sm:hidden`,children:a})]})}function fe(e){let t=e.split(/[-_]/).filter(e=>e.length>0);return t[t.length-1]??e}function pe(e,t,n){let r=[];for(let i of e){let e=fe(i.model),a=t.get(i.model),o=[],s=[];if(a)for(let[e,t]of Object.entries(a.members)){let n={name:e,kind:t.kind,dataType:t.dataType,unit:t.unit,euRange:t.euRange};t.kind===`property`?s.push(n):o.push(n)}for(let t=0;t<i.count;t++){let t=(n.get(i.model)??0)+1;n.set(i.model,t),r.push({id:`${e}-${String(t).padStart(3,`0`)}`,model:i.model,tags:o,properties:s})}}return r}function me({detail:e}){let[t,n]=(0,W.useState)(new Set),a=(0,W.useRef)(null),c=(0,W.useMemo)(()=>[...new Set(e.models)],[e.models]),l=c.join(`,`),u=s({queryKey:o.catalog.modelSchemasBatch(l),queryFn:async()=>Promise.all(c.map(e=>i(`/catalog/models/${e}`,r.catalogModelDetail)))}),d=u.isPending&&!u.data,f=(0,W.useMemo)(()=>{let e=new Map;if(!u.data)return e;for(let[t,n]of u.data.entries())e.set(c[t],n);return e},[u.data,c]),h=(0,W.useMemo)(()=>{let t=new Map,n=new Map;for(let r of e.topology)for(let e of r.lines)n.set(`${r.name}/${e.name}`,pe(e.assets,f,t));return n},[e.topology,f]);(0,W.useEffect)(()=>{if(d)return;let t=e.name;if(a.current===t)return;let r=new Set;for(let t of e.topology){r.add(`area:${t.name}`);for(let e of t.lines)r.add(`line:${t.name}/${e.name}`)}outer:for(let t of e.topology)for(let e of t.lines){let n=(h.get(`${t.name}/${e.name}`)??[])[0];if(n){r.add(`inst:${t.name}/${e.name}/${n.id}`);break outer}}n(r),a.current=t},[d,e.name,e.topology,h]);let g=(0,W.useCallback)(e=>{n(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]);return d?null:u.isError&&!u.data?(0,G.jsx)(C,{message:A(u.error,`Failed to load model schemas.`),onRetry:()=>void u.refetch(),isRetrying:u.isFetching&&!u.isPending}):(0,G.jsx)(`div`,{className:`overflow-hidden rounded-[var(--miravo-radius-stadium-sm)] border border-border/50 py-2 pl-1 pr-2 touch-manipulation sm:py-2.5 sm:pl-1.5 sm:pr-2.5`,children:e.topology.map(n=>{let r=`area:${n.name}`,i=t.has(r);return(0,G.jsxs)(`div`,{children:[(0,G.jsx)(Y,{depth:0,label:p(n.name),labelTitle:n.name,tag:`AREA`,tagKind:`area`,expanded:i,onToggle:()=>g(r),hasChildren:!0}),i&&n.lines.map(r=>{let i=`line:${n.name}/${r.name}`,a=t.has(i),o=h.get(`${n.name}/${r.name}`)??[];return(0,G.jsxs)(`div`,{children:[(0,G.jsx)(Y,{depth:1,label:p(r.name),labelTitle:r.name,tag:`LINE`,tagKind:`line`,count:o.length,expanded:a,onToggle:()=>g(i),hasChildren:!0}),a&&o.map(i=>{let a=`inst:${n.name}/${r.name}/${i.id}`,o=t.has(a);return(0,G.jsxs)(`div`,{children:[(0,G.jsx)(Y,{depth:2,label:m(i.id),labelTitle:i.id,tag:`INST`,tagKind:`inst`,subtitle:p(i.model),subtitleTitle:i.model,count:i.tags.length+i.properties.length,expanded:o,onToggle:()=>g(a),hasChildren:i.tags.length+i.properties.length>0}),o&&(0,G.jsx)(de,{asset:i,depth:3,area:n.name,line:r.name,detail:e})]},i.id)})]},r.name)})]},n.name)})})}var X=`Other assets`;function he(e,t){let n=Math.abs(e)>=100?0:Math.abs(e)>=10?1:2;return`${e.toFixed(n)} ${t}`}function Z(e){return e.length>=3?e.at(-3)??X:X}function ge(e){let t=new Set(e.assetIds),n=new Map(e.lines.flatMap(e=>e.stations.filter(e=>t.has(e.id)).map(e=>[e.id,e]))),r=e.assets.filter(e=>t.has(e.id)),i=new Map;for(let t of r){let r=e.memberValues.get(t.id),a=t.activeFaults.length>0,o=n.get(t.id),s=r?.get(`availability_state`)?.value,c=r?.get(`run_command`)?.value,l=o?.state??`running`;a?l=`fault`:!o&&typeof s==`string`?l=s:!o&&c!==void 0&&Number(c)===0&&(l=`stopped`);let u=ie(e.schemas.get(t.model),1)[0],d=u?r?.get(u.member)?.value:void 0,f={id:t.id,tone:se(l,a||l===`faulted`),state:re(l),reading:u&&typeof d==`number`?he(d,u.unit):null},p=Z(t.browsePath);i.set(p,[...i.get(p)??[],f])}let a=[...i.values()].flat(),o=a.filter(e=>e.tone===`fault`).length,s=e.lines.filter(e=>e.stations.some(e=>n.has(e.id))),c;if(s.length>0){let e=s.reduce((e,t)=>e+(t.stations.at(-1)?.good??0),0),t=s.reduce((e,t)=>e+t.stations.reduce((e,t)=>e+t.scrap,0),0);c=[{label:`Shipped`,value:String(e)},{label:`Yield`,value:e+t>0?`${(e/(e+t)*100).toFixed(1)}%`:`–`},{label:`Faulted`,value:String(o)}]}else{let e=a.filter(e=>e.state===`stopped`).length;c=[{label:`Online`,value:String(a.length-o-e)},{label:`Stopped`,value:String(e)},{label:`Faulted`,value:String(o)}]}return{kpis:c,areas:[...i].map(([e,t])=>({name:e,rows:t}))}}function Q({templateId:e,assetIds:t,schemas:n}){let r=u(),{assets:i,lines:o,memberValues:s}=a(d(e=>({assets:e.assets,lines:e.lines,memberValues:e.memberValues}))),c=ge({assetIds:t,assets:i,lines:o,memberValues:s,schemas:n}),l=x(e);return(0,G.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[(0,G.jsx)(`div`,{className:`grid grid-cols-3 gap-3 px-4 pt-4 pb-5`,children:c.kpis.map(e=>(0,G.jsx)(le,{label:e.label,value:e.value},e.label))}),c.areas.map(t=>(0,G.jsx)(ae,{title:t.name,note:`${t.rows.length} assets`,children:(0,G.jsx)(`ul`,{className:`-mx-2 flex flex-col`,children:t.rows.map(t=>(0,G.jsx)(oe,{tone:t.tone,name:t.id,note:t.reading?`${t.state} · ${t.reading}`:t.state,onSelect:l?()=>void r(`${S(e)}?asset=${encodeURIComponent(t.id)}`):void 0},t.id))})},t.name))]})}function _e(e){return e.lines.reduce((e,t)=>e+t.assets.reduce((e,t)=>e+t.count,0),0)}function ve(e){return Object.values(e.members).filter(e=>e.kind!==`property`).length}function ye(e,t){let n=0;for(let r of e.topology)for(let e of r.lines)for(let r of e.assets){let e=t.get(r.model),i=e?ve(e):0;n+=r.count*i}return n}var $=`min-h-10 px-2 py-1 text-xs text-foreground/82 after:bottom-[-3px] data-active:text-foreground sm:min-h-0 sm:px-2.5 sm:py-1`;function be({templateId:e,onClose:t,actions:n,live:a,fallbackTitle:l}){let[u,d]=(0,W.useState)(new Set),f=s({queryKey:o.catalog.templateDetail(e??``),queryFn:()=>i(`/catalog/templates/${e}`,r.catalogTemplateDetail),enabled:e!==null}),p=f.data,m=f.isPending&&!p,h=f.isError,g=A(f.error,`Failed to load template.`),_=p?.models??a?.models??[],v=ce(_),y=(0,W.useMemo)(()=>{let e=new Map;for(let[t,n]of(v.data??[]).entries())e.set(_[t]??``,n);return e},[_,v.data]),b=(0,W.useMemo)(()=>p&&v.data?ye(p,y):null,[p,v.data,y]);(0,W.useEffect)(()=>{e&&p&&d(new Set(p.topology.map(e=>e.name)))},[e,p]);let x=(0,W.useCallback)(e=>{d(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]);return(0,G.jsx)(E,{open:e!==null,onOpenChange:e=>{e||t()},children:(0,G.jsx)(te,{side:`right`,className:`flex w-full flex-col gap-4 touch-manipulation`,children:m?null:h&&!p&&n?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(O,{className:`gap-2 pb-0 pe-12`,children:[(0,G.jsx)(w,{className:`font-heading text-base uppercase tracking-wide`,children:l}),(0,G.jsx)(`div`,{className:`flex flex-wrap items-center gap-1`,children:n})]}),a&&e?(0,G.jsx)(Q,{templateId:e,assetIds:a.assetIds,schemas:y}):null]}):h&&!p?(0,G.jsx)(`div`,{className:`flex flex-1 flex-col justify-center px-2`,children:(0,G.jsx)(C,{message:g,onRetry:()=>void f.refetch(),isRetrying:f.isFetching})}):p?(0,G.jsxs)(c.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.18},className:`flex min-h-0 flex-1 flex-col gap-4`,children:[(0,G.jsxs)(O,{className:`gap-1 pb-0 pe-12`,children:[(0,G.jsx)(w,{className:`font-heading text-base uppercase tracking-wide`,children:p.name}),p.description&&(0,G.jsx)(T,{className:`text-xs leading-relaxed text-foreground/88`,children:p.description}),n?(0,G.jsx)(`div`,{className:`flex flex-wrap items-center gap-1 pt-1`,children:n}):null]}),(0,G.jsxs)(P,{defaultValue:a?`live`:`overview`,className:`flex min-h-0 flex-1 flex-col gap-1 pt-0`,children:[(0,G.jsxs)(N,{variant:`line`,className:`h-8! shrink-0 gap-0.5 border-b-border/60 px-2 py-0.5`,children:[a?(0,G.jsx)(j,{value:`live`,className:$,children:`Live`}):null,(0,G.jsx)(j,{value:`overview`,className:$,children:`Overview`}),(0,G.jsx)(j,{value:`uns`,className:$,children:`UNS`}),(0,G.jsx)(j,{value:`export`,className:$,children:`Export`})]}),a?(0,G.jsx)(M,{value:`live`,className:`flex min-h-0 flex-1 flex-col`,children:(0,G.jsx)(Q,{templateId:p.id,assetIds:a.assetIds,schemas:y})}):null,(0,G.jsx)(M,{value:`overview`,keepMounted:!0,className:`flex min-h-0 flex-1 flex-col`,children:(0,G.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-3 pt-0`,children:(0,G.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto pr-2`,children:(0,G.jsxs)(`div`,{className:`flex flex-col gap-2 pb-1 pt-0.5`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,G.jsxs)(k,{variant:`outline`,className:`font-mono text-xs`,children:[p.topology.length,` areas`]}),(0,G.jsxs)(k,{variant:`outline`,className:`font-mono text-xs`,children:[p.assetCount,` assets`]}),(0,G.jsxs)(k,{variant:`outline`,className:`font-mono text-xs`,children:[p.models.length,` models`]}),b!==null&&(0,G.jsxs)(k,{variant:`outline`,className:`font-mono text-xs`,children:[b,` tags`]}),p.settings?.tickIntervalMs&&(0,G.jsxs)(k,{variant:`outline`,className:`font-mono text-xs`,children:[`tick `,p.settings.tickIntervalMs,`ms`]}),p.settings?.timeMultiplier&&p.settings.timeMultiplier!==1&&(0,G.jsxs)(k,{variant:`outline`,className:`font-mono text-xs`,children:[p.settings.timeMultiplier,`× speed`]})]}),p.namespace&&(p.namespace.enterprise||p.namespace.site||p.namespace.prefix)&&(0,G.jsxs)(`div`,{className:`min-w-0 overflow-hidden rounded-[var(--miravo-radius-tight)] border border-border/60 px-2.5 py-2`,children:[(0,G.jsx)(`h3`,{className:`font-heading text-xs font-semibold uppercase tracking-[0.12em] text-primary`,children:`Namespace`}),(0,G.jsxs)(`dl`,{className:`mt-1 grid grid-cols-1 gap-x-4 gap-y-1.5 sm:grid-cols-2`,children:[p.namespace.enterprise&&(0,G.jsxs)(`div`,{className:`min-w-0 sm:max-w-[min(100%,16rem)]`,children:[(0,G.jsx)(`dt`,{className:`font-heading text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground`,children:`Enterprise`}),(0,G.jsx)(`dd`,{className:`mt-1 font-mono text-xs leading-snug text-foreground [overflow-wrap:anywhere] break-words`,children:p.namespace.enterprise})]}),p.namespace.site&&(0,G.jsxs)(`div`,{className:`min-w-0 sm:max-w-[min(100%,16rem)]`,children:[(0,G.jsx)(`dt`,{className:`font-heading text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground`,children:`Site`}),(0,G.jsx)(`dd`,{className:`mt-1 font-mono text-xs leading-snug text-foreground [overflow-wrap:anywhere] break-words`,children:p.namespace.site})]}),p.namespace.prefix&&(0,G.jsxs)(`div`,{className:`min-w-0 sm:col-span-2`,children:[(0,G.jsx)(`dt`,{className:`font-heading text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground`,children:`Prefix`}),(0,G.jsx)(`dd`,{className:`mt-1 font-mono text-xs leading-snug text-foreground [overflow-wrap:anywhere] break-words`,children:p.namespace.prefix})]})]})]}),p.topology.map(e=>(0,G.jsx)(xe,{area:e,expanded:u.has(e.name),onToggle:()=>x(e.name)},e.name)),p.settings&&(0,G.jsxs)(`div`,{className:`rounded-[var(--miravo-radius-tight)] border border-border/50 p-2`,children:[(0,G.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-1.5 font-heading text-xs font-semibold uppercase tracking-[0.12em] text-warning`,children:[(0,G.jsx)(ne,{className:`size-3.5`,"aria-hidden":!0}),(0,G.jsx)(`span`,{children:`Settings`})]}),(0,G.jsxs)(`div`,{className:`grid grid-cols-1 gap-1.5 font-mono text-xs sm:grid-cols-2`,children:[(0,G.jsxs)(`div`,{className:`flex flex-col`,children:[(0,G.jsx)(`span`,{className:`text-muted-foreground`,children:`tick interval`}),(0,G.jsxs)(`span`,{className:`text-foreground`,children:[p.settings.tickIntervalMs??1e3,`ms`]})]}),(0,G.jsxs)(`div`,{className:`flex flex-col`,children:[(0,G.jsx)(`span`,{className:`text-muted-foreground`,children:`time multiplier`}),(0,G.jsxs)(`span`,{className:`text-foreground`,children:[p.settings.timeMultiplier??1,`×`]})]})]})]})]})})})}),(0,G.jsx)(M,{value:`uns`,keepMounted:!0,className:`flex min-h-0 flex-1 flex-col`,children:(0,G.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-3 pt-0`,children:(0,G.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto pr-2`,children:(0,G.jsx)(`div`,{className:`pb-1 pt-0.5`,children:(0,G.jsx)(me,{detail:p})})})})}),(0,G.jsx)(M,{value:`export`,keepMounted:!0,className:`flex min-h-0 flex-1 flex-col`,children:(0,G.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-3 pt-0`,children:(0,G.jsx)(D,{kind:`template`,id:p.id,yamlPath:`/catalog/templates/${p.id}/yaml`,yamlFilename:`${p.id}.miravo.yaml`})})})]})]},p.id):(0,G.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-sm text-muted-foreground`,children:`Template not found`})})})}function xe({area:e,expanded:t,onToggle:n}){let r=_e(e);return(0,G.jsxs)(`div`,{className:ee,children:[(0,G.jsxs)(`button`,{type:`button`,className:`flex min-h-11 w-full items-center gap-1.5 px-2.5 py-2 text-left text-xs font-medium transition-colors hover:bg-muted/30 touch-manipulation sm:min-h-0 sm:py-1.5`,onClick:n,children:[(0,G.jsx)(R,{className:`size-3.5 text-primary`}),(0,G.jsx)(`span`,{className:`uppercase tracking-wider text-primary`,children:p(e.name)}),(0,G.jsxs)(`div`,{className:`ml-auto flex items-center gap-1.5`,children:[(0,G.jsxs)(k,{variant:`secondary`,className:`text-xs`,children:[r,` assets`]}),(0,G.jsxs)(k,{variant:`secondary`,className:`text-xs`,children:[e.lines.length,` lines`]}),(0,G.jsx)(_,{className:`size-3 text-muted-foreground transition-transform ${t?`rotate-180`:``}`})]})]}),(0,G.jsx)(l,{initial:!1,children:t&&(0,G.jsx)(c.div,{initial:{height:0,opacity:0},animate:{height:`auto`,opacity:1},exit:{height:0,opacity:0},transition:{duration:.2,ease:`easeOut`},className:`overflow-hidden`,children:(0,G.jsx)(`div`,{className:`flex flex-col gap-1.5 border-t border-border p-2`,children:e.lines.map(e=>(0,G.jsx)(Se,{line:e},e.name))})},`content`)})]})}function Se({line:e}){return(0,G.jsxs)(`div`,{className:`rounded-[var(--miravo-radius-tight)] border border-border/60 bg-muted/10 p-2`,children:[(0,G.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-1.5 text-xs font-medium text-muted-foreground`,children:[(0,G.jsx)(V,{className:`size-3.5`}),(0,G.jsx)(`span`,{title:e.name,children:p(e.name)}),(0,G.jsx)(z,{className:`ml-auto size-3.5 text-muted-foreground`}),(0,G.jsxs)(`span`,{className:`text-muted-foreground`,children:[e.assets.reduce((e,t)=>e+t.count,0),` assets`]})]}),(0,G.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:e.assets.map(e=>(0,G.jsx)(Ce,{assignment:e},`${e.model}-${e.count}`))})]})}function Ce({assignment:e}){let t=e.parameters&&Object.keys(e.parameters).length>0;return(0,G.jsxs)(`div`,{className:`rounded-[var(--miravo-radius-tight)] border border-border/30 bg-background/50 px-2.5 py-1.5`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs`,children:[(0,G.jsx)(`span`,{className:`font-mono font-medium text-primary`,title:e.model,children:p(e.model)}),(0,G.jsxs)(k,{variant:`secondary`,className:`shrink-0 px-1 py-0 text-xs`,children:[`×`,e.count]}),e.variation>0&&(0,G.jsxs)(`span`,{className:`text-muted-foreground`,children:[`±`,(e.variation*100).toFixed(0),`% variation`]})]}),t&&e.parameters&&(0,G.jsx)(`div`,{className:`mt-1.5 flex flex-wrap gap-x-4 gap-y-1 border-t border-border/20 pt-1.5 font-mono text-xs`,children:Object.entries(e.parameters).map(([e,t])=>(0,G.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,G.jsx)(`span`,{className:`text-muted-foreground`,children:e}),(0,G.jsx)(`span`,{className:`text-foreground`,children:t})]},e))})]})}function we({id:e,className:t}){let n=g(`shrink-0 text-primary`,t);switch(e){case`smart-factory`:return(0,G.jsx)(b,{className:n,"aria-hidden":!0});case`water-treatment`:return(0,G.jsx)(I,{className:n,"aria-hidden":!0});case`commercial-building`:return(0,G.jsx)(F,{className:n,"aria-hidden":!0});case`backup-power`:return(0,G.jsx)(U,{className:n,"aria-hidden":!0});case`district-heating`:return(0,G.jsx)(H,{className:n,"aria-hidden":!0});case`pharma-cleanroom`:return(0,G.jsx)(L,{className:n,"aria-hidden":!0});default:return(0,G.jsx)(B,{className:n,"aria-hidden":!0})}}export{z as i,be as n,U as r,we as t};
|
|
1
|
+
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{c as t}from"./vendor-charts-95ykyDlI.js";import{ot as n}from"./vendor-ui-D8j69UH4.js";import{S as r,o as i,ot as a,v as o}from"./api-BG2sUkwk.js";import{t as s}from"./useQuery-Cl48zZ73.js";import{t as c}from"./proxy-CWZabK8f.js";import{t as l}from"./AnimatePresence-BSSlw02V.js";import{c as u}from"./chunk-OE4NN4TA-DBWZidbW.js";import{t as d}from"./shallow-Cin0mLuv.js";import{c as f,h as p,s as m}from"./format-Bx7DF-TB.js";import{n as h,t as g}from"./utils-XFKvwlFT.js";import{t as _}from"./chevron-down-x70Pto6j.js";import{t as v}from"./chevron-right-CrNKVFcI.js";import{t as y}from"./copy-button-CSUP1VjU.js";import{i as b,n as x,t as S}from"./registry-BXGfJ4np.js";import{a as ee}from"./use-engine-command-mutation-DrMOfYty.js";import{t as C}from"./query-fetch-error-CWLZA2L5.js";import{c as te,d as w,f as ne,l as T,s as E,t as D,u as O}from"./export-tab-BsV7px7m.js";import{t as k}from"./badge-Bk1DaL6C.js";import{n as A}from"./get-error-message-C9VW9IZB.js";import{a as re,c as ie,i as ae,n as oe,o as se,s as ce,t as le}from"./status-kit-pFRjEjVU.js";import{i as j,n as M,r as N,t as P}from"./tabs-Ch_VG8_S.js";var F=h(`building`,[[`path`,{d:`M12 10h.01`,key:`1nrarc`}],[`path`,{d:`M12 14h.01`,key:`1etili`}],[`path`,{d:`M12 6h.01`,key:`1vi96p`}],[`path`,{d:`M16 10h.01`,key:`1m94wz`}],[`path`,{d:`M16 14h.01`,key:`1gbofw`}],[`path`,{d:`M16 6h.01`,key:`1x0f13`}],[`path`,{d:`M8 10h.01`,key:`19clt8`}],[`path`,{d:`M8 14h.01`,key:`6423bh`}],[`path`,{d:`M8 6h.01`,key:`1dz90k`}],[`path`,{d:`M9 22v-3a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3`,key:`cabbwy`}],[`rect`,{x:`4`,y:`2`,width:`16`,height:`20`,rx:`2`,key:`1uxh74`}]]),I=h(`droplet`,[[`path`,{d:`M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z`,key:`c7niix`}]]),L=h(`flask-conical`,[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`,key:`18mbvz`}],[`path`,{d:`M6.453 15h11.094`,key:`3shlmq`}],[`path`,{d:`M8.5 2h7`,key:`csnxdl`}]]),R=h(`folder`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),z=h(`layout-grid`,[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]),B=h(`layout-template`,[[`rect`,{width:`18`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`f1a2em`}],[`rect`,{width:`9`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`jqznyg`}],[`rect`,{width:`5`,height:`7`,x:`16`,y:`14`,rx:`1`,key:`q5h2i8`}]]),V=h(`list`,[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]),H=h(`thermometer-sun`,[[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 8a4 4 0 0 0-1.645 7.647`,key:`wz5p04`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 14.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0z`,key:`yu0u2z`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}]]),U=h(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),W=e(t(),1),G=n(),K=20,ue=14,q=`flex w-3.5 shrink-0 items-center justify-center`;function de({asset:e,depth:t,area:n,line:r,detail:i}){let[a,o]=(0,W.useState)(!1),[s,c]=(0,W.useState)(!1),l=a?e.tags:e.tags.slice(0,10),u=e.tags.length-10;return(0,G.jsxs)(G.Fragment,{children:[l.map(a=>(0,G.jsx)(J,{member:a,depth:t,area:n,line:r,assetId:e.id,detail:i},a.name)),!a&&u>0&&(0,G.jsxs)(`button`,{type:`button`,className:`flex min-h-11 w-full items-center gap-1.5 border-t border-border/30 py-2 text-left font-mono text-xs text-muted-foreground hover:bg-muted/40 touch-manipulation sm:min-h-0 sm:py-1.5`,style:{paddingLeft:`${t*14+K}px`},onClick:()=>o(!0),children:[(0,G.jsx)(`span`,{className:q,"aria-hidden":!0}),(0,G.jsxs)(`span`,{children:[`+`,u,` more tags`]})]}),e.properties.length>0&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`button`,{type:`button`,className:`flex min-h-11 w-full items-center gap-1.5 border-t border-border/30 py-2 text-left font-mono text-xs text-muted-foreground hover:bg-muted/40 touch-manipulation sm:min-h-0 sm:py-1.5`,style:{paddingLeft:`${t*14+K}px`},onClick:()=>c(e=>!e),children:[(0,G.jsx)(`span`,{className:q,"aria-hidden":!0,children:s?(0,G.jsx)(_,{className:`size-3.5 opacity-60`,"aria-hidden":!0}):(0,G.jsx)(v,{className:`size-3.5 opacity-60`,"aria-hidden":!0})}),(0,G.jsxs)(`span`,{children:[e.properties.length,` properties`]})]}),s&&e.properties.map(a=>(0,G.jsx)(J,{member:a,depth:t,area:n,line:r,assetId:e.id,detail:i},a.name))]})]})}function J({member:e,depth:t,area:n,line:r,assetId:i,detail:a}){let o=e.kind===`property`,s=t*14+K+(o?ue:0),c=a.namespace,l=[c?.enterprise?`${c.enterprise}/${c.site??``}`:c?.prefix??``,n,r,i,e.name].filter(Boolean).join(`/`);return(0,G.jsx)(y,{value:l,label:`Copy UNS path`,successMessage:`UNS path copied`,successDescription:l,tooltipSide:`top`,render:()=>(0,G.jsxs)(`button`,{type:`button`,className:g(`flex w-full cursor-pointer flex-col gap-1 border-t border-border/25 py-2 text-left font-mono text-xs hover:bg-muted/35 touch-manipulation sm:min-h-0 sm:flex-row sm:items-center sm:gap-1.5 sm:py-1.5`,o&&`opacity-65`),style:{paddingLeft:`${s}px`},children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,G.jsx)(`span`,{className:q,"aria-hidden":!0,children:(0,G.jsx)(`span`,{className:g(`size-1 rounded-full ring-1 ring-border/50`,o?`bg-muted-foreground/25`:`bg-primary/50`)})}),(0,G.jsx)(`span`,{title:e.name,className:g(`min-w-0 truncate`,o?`text-muted-foreground`:`text-foreground`),children:f(e.name)}),o&&(0,G.jsx)(`span`,{className:`shrink-0 rounded-[var(--miravo-radius-tight)] bg-muted/60 px-1 py-px text-[10px] text-muted-foreground`,children:`PROP`})]}),(0,G.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-2 gap-y-0.5 pl-0 sm:ml-auto sm:flex-1 sm:justify-end sm:pl-0 sm:pr-1`,children:[(0,G.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:e.dataType}),e.unit&&(0,G.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:e.unit}),e.euRange&&(0,G.jsxs)(`span`,{className:`ml-auto shrink-0 tabular-nums text-muted-foreground`,children:[`[`,e.euRange[0],`–`,e.euRange[1],`]`]})]})]})})}function Y({depth:e,label:t,labelTitle:n,tag:r,tagKind:i,subtitle:a,subtitleTitle:o,count:s,expanded:c,onToggle:l,hasChildren:u}){let d=c?_:v,f=i===`area`?`text-primary`:`text-foreground`;return(0,G.jsxs)(`button`,{type:`button`,className:`flex min-h-11 w-full flex-col gap-1 border-t border-border/35 py-2 pr-2 text-left text-xs transition-colors touch-manipulation first:border-t-0 hover:bg-muted/40 sm:min-h-0 sm:flex-row sm:flex-wrap sm:items-center sm:gap-1.5 sm:gap-y-0 sm:py-1.5`,style:{paddingLeft:`${12+e*14}px`},onClick:l,children:[(0,G.jsxs)(`div`,{className:`flex min-w-0 w-full items-center gap-1.5 sm:w-auto sm:flex-1 sm:flex-wrap sm:items-center`,children:[u?(0,G.jsx)(d,{className:`size-3.5 shrink-0 text-muted-foreground`,"aria-hidden":!0}):(0,G.jsx)(`span`,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),(0,G.jsx)(`span`,{title:n??void 0,className:g(`min-w-0 flex-1 truncate font-medium`,f),children:t}),(0,G.jsx)(`span`,{className:`shrink-0 text-[10px] tracking-wide text-muted-foreground uppercase`,children:r}),a&&(0,G.jsx)(`span`,{title:o??void 0,className:`hidden min-w-0 max-w-[min(11rem,38vw)] shrink truncate font-mono text-xs text-muted-foreground sm:inline`,children:a}),s!==void 0&&(0,G.jsx)(`span`,{className:`ml-auto shrink-0 tabular-nums text-xs text-muted-foreground`,children:s})]}),a&&(0,G.jsx)(`span`,{title:o??void 0,className:`min-w-0 truncate pl-7 font-mono text-xs text-muted-foreground sm:hidden`,children:a})]})}function fe(e){let t=e.split(/[-_]/).filter(e=>e.length>0);return t[t.length-1]??e}function pe(e,t,n){let r=[];for(let i of e){let e=fe(i.model),a=t.get(i.model),o=[],s=[];if(a)for(let[e,t]of Object.entries(a.members)){let n={name:e,kind:t.kind,dataType:t.dataType,unit:t.unit,euRange:t.euRange};t.kind===`property`?s.push(n):o.push(n)}for(let t=0;t<i.count;t++){let t=(n.get(i.model)??0)+1;n.set(i.model,t),r.push({id:`${e}-${String(t).padStart(3,`0`)}`,model:i.model,tags:o,properties:s})}}return r}function me({detail:e}){let[t,n]=(0,W.useState)(new Set),a=(0,W.useRef)(null),c=(0,W.useMemo)(()=>[...new Set(e.models)],[e.models]),l=c.join(`,`),u=s({queryKey:o.catalog.modelSchemasBatch(l),queryFn:async()=>Promise.all(c.map(e=>i(`/catalog/models/${e}`,r.catalogModelDetail)))}),d=u.isPending&&!u.data,f=(0,W.useMemo)(()=>{let e=new Map;if(!u.data)return e;for(let[t,n]of u.data.entries())e.set(c[t],n);return e},[u.data,c]),h=(0,W.useMemo)(()=>{let t=new Map,n=new Map;for(let r of e.topology)for(let e of r.lines)n.set(`${r.name}/${e.name}`,pe(e.assets,f,t));return n},[e.topology,f]);(0,W.useEffect)(()=>{if(d)return;let t=e.name;if(a.current===t)return;let r=new Set;for(let t of e.topology){r.add(`area:${t.name}`);for(let e of t.lines)r.add(`line:${t.name}/${e.name}`)}outer:for(let t of e.topology)for(let e of t.lines){let n=(h.get(`${t.name}/${e.name}`)??[])[0];if(n){r.add(`inst:${t.name}/${e.name}/${n.id}`);break outer}}n(r),a.current=t},[d,e.name,e.topology,h]);let g=(0,W.useCallback)(e=>{n(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]);return d?null:u.isError&&!u.data?(0,G.jsx)(C,{message:A(u.error,`Failed to load model schemas.`),onRetry:()=>void u.refetch(),isRetrying:u.isFetching&&!u.isPending}):(0,G.jsx)(`div`,{className:`overflow-hidden rounded-[var(--miravo-radius-stadium-sm)] border border-border/50 py-2 pl-1 pr-2 touch-manipulation sm:py-2.5 sm:pl-1.5 sm:pr-2.5`,children:e.topology.map(n=>{let r=`area:${n.name}`,i=t.has(r);return(0,G.jsxs)(`div`,{children:[(0,G.jsx)(Y,{depth:0,label:p(n.name),labelTitle:n.name,tag:`AREA`,tagKind:`area`,expanded:i,onToggle:()=>g(r),hasChildren:!0}),i&&n.lines.map(r=>{let i=`line:${n.name}/${r.name}`,a=t.has(i),o=h.get(`${n.name}/${r.name}`)??[];return(0,G.jsxs)(`div`,{children:[(0,G.jsx)(Y,{depth:1,label:p(r.name),labelTitle:r.name,tag:`LINE`,tagKind:`line`,count:o.length,expanded:a,onToggle:()=>g(i),hasChildren:!0}),a&&o.map(i=>{let a=`inst:${n.name}/${r.name}/${i.id}`,o=t.has(a);return(0,G.jsxs)(`div`,{children:[(0,G.jsx)(Y,{depth:2,label:m(i.id),labelTitle:i.id,tag:`INST`,tagKind:`inst`,subtitle:p(i.model),subtitleTitle:i.model,count:i.tags.length+i.properties.length,expanded:o,onToggle:()=>g(a),hasChildren:i.tags.length+i.properties.length>0}),o&&(0,G.jsx)(de,{asset:i,depth:3,area:n.name,line:r.name,detail:e})]},i.id)})]},r.name)})]},n.name)})})}var X=`Other assets`;function he(e,t){let n=Math.abs(e)>=100?0:Math.abs(e)>=10?1:2;return`${e.toFixed(n)} ${t}`}function Z(e){return e.length>=3?e.at(-3)??X:X}function ge(e){let t=new Set(e.assetIds),n=new Map(e.lines.flatMap(e=>e.stations.filter(e=>t.has(e.id)).map(e=>[e.id,e]))),r=e.assets.filter(e=>t.has(e.id)),i=new Map;for(let t of r){let r=e.memberValues.get(t.id),a=t.activeFaults.length>0,o=n.get(t.id),s=r?.get(`availability_state`)?.value,c=r?.get(`run_command`)?.value,l=o?.state??`running`;a?l=`fault`:!o&&typeof s==`string`?l=s:!o&&c!==void 0&&Number(c)===0&&(l=`stopped`);let u=ie(e.schemas.get(t.model),1)[0],d=u?r?.get(u.member)?.value:void 0,f={id:t.id,tone:se(l,a||l===`faulted`),state:re(l),reading:u&&typeof d==`number`?he(d,u.unit):null},p=Z(t.browsePath);i.set(p,[...i.get(p)??[],f])}let a=[...i.values()].flat(),o=a.filter(e=>e.tone===`fault`).length,s=e.lines.filter(e=>e.stations.some(e=>n.has(e.id))),c;if(s.length>0){let e=s.reduce((e,t)=>e+(t.stations.at(-1)?.good??0),0),t=s.reduce((e,t)=>e+t.stations.reduce((e,t)=>e+t.scrap,0),0);c=[{label:`Shipped`,value:String(e)},{label:`Yield`,value:e+t>0?`${(e/(e+t)*100).toFixed(1)}%`:`–`},{label:`Faulted`,value:String(o)}]}else{let e=a.filter(e=>e.state===`stopped`).length;c=[{label:`Online`,value:String(a.length-o-e)},{label:`Stopped`,value:String(e)},{label:`Faulted`,value:String(o)}]}return{kpis:c,areas:[...i].map(([e,t])=>({name:e,rows:t}))}}function Q({templateId:e,assetIds:t,schemas:n}){let r=u(),{assets:i,lines:o,memberValues:s}=a(d(e=>({assets:e.assets,lines:e.lines,memberValues:e.memberValues}))),c=ge({assetIds:t,assets:i,lines:o,memberValues:s,schemas:n}),l=x(e);return(0,G.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[(0,G.jsx)(`div`,{className:`grid grid-cols-3 gap-3 px-4 pt-4 pb-5`,children:c.kpis.map(e=>(0,G.jsx)(le,{label:e.label,value:e.value},e.label))}),c.areas.map(t=>(0,G.jsx)(ae,{title:t.name,note:`${t.rows.length} assets`,children:(0,G.jsx)(`ul`,{className:`-mx-2 flex flex-col`,children:t.rows.map(t=>(0,G.jsx)(oe,{tone:t.tone,name:t.id,note:t.reading?`${t.state} · ${t.reading}`:t.state,onSelect:l?()=>void r(`${S(e)}?asset=${encodeURIComponent(t.id)}`):void 0},t.id))})},t.name))]})}function _e(e){return e.lines.reduce((e,t)=>e+t.assets.reduce((e,t)=>e+t.count,0),0)}function ve(e){return Object.values(e.members).filter(e=>e.kind!==`property`).length}function ye(e,t){let n=0;for(let r of e.topology)for(let e of r.lines)for(let r of e.assets){let e=t.get(r.model),i=e?ve(e):0;n+=r.count*i}return n}var $=`min-h-10 px-2 py-1 text-xs text-foreground/82 after:bottom-[-3px] data-active:text-foreground sm:min-h-0 sm:px-2.5 sm:py-1`;function be({templateId:e,onClose:t,actions:n,live:a,fallbackTitle:l}){let[u,d]=(0,W.useState)(new Set),f=s({queryKey:o.catalog.templateDetail(e??``),queryFn:()=>i(`/catalog/templates/${e}`,r.catalogTemplateDetail),enabled:e!==null}),p=f.data,m=f.isPending&&!p,h=f.isError,g=A(f.error,`Failed to load template.`),_=p?.models??a?.models??[],v=ce(_),y=(0,W.useMemo)(()=>{let e=new Map;for(let[t,n]of(v.data??[]).entries())e.set(_[t]??``,n);return e},[_,v.data]),b=(0,W.useMemo)(()=>p&&v.data?ye(p,y):null,[p,v.data,y]);(0,W.useEffect)(()=>{e&&p&&d(new Set(p.topology.map(e=>e.name)))},[e,p]);let x=(0,W.useCallback)(e=>{d(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]);return(0,G.jsx)(E,{open:e!==null,onOpenChange:e=>{e||t()},children:(0,G.jsx)(te,{side:`right`,className:`flex w-full flex-col gap-4 touch-manipulation`,children:m?null:h&&!p&&n?(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(O,{className:`gap-2 pb-0 pe-12`,children:[(0,G.jsx)(w,{className:`font-heading text-base uppercase tracking-wide`,children:l}),(0,G.jsx)(`div`,{className:`flex flex-wrap items-center gap-1`,children:n})]}),a&&e?(0,G.jsx)(Q,{templateId:e,assetIds:a.assetIds,schemas:y}):null]}):h&&!p?(0,G.jsx)(`div`,{className:`flex flex-1 flex-col justify-center px-2`,children:(0,G.jsx)(C,{message:g,onRetry:()=>void f.refetch(),isRetrying:f.isFetching})}):p?(0,G.jsxs)(c.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.18},className:`flex min-h-0 flex-1 flex-col gap-4`,children:[(0,G.jsxs)(O,{className:`gap-1 pb-0 pe-12`,children:[(0,G.jsx)(w,{className:`font-heading text-base uppercase tracking-wide`,children:p.name}),p.description&&(0,G.jsx)(T,{className:`text-xs leading-relaxed text-foreground/88`,children:p.description}),n?(0,G.jsx)(`div`,{className:`flex flex-wrap items-center gap-1 pt-1`,children:n}):null]}),(0,G.jsxs)(P,{defaultValue:a?`live`:`overview`,className:`flex min-h-0 flex-1 flex-col gap-1 pt-0`,children:[(0,G.jsxs)(N,{variant:`line`,className:`h-8! shrink-0 gap-0.5 border-b-border/60 px-2 py-0.5`,children:[a?(0,G.jsx)(j,{value:`live`,className:$,children:`Live`}):null,(0,G.jsx)(j,{value:`overview`,className:$,children:`Overview`}),(0,G.jsx)(j,{value:`uns`,className:$,children:`UNS`}),(0,G.jsx)(j,{value:`export`,className:$,children:`Export`})]}),a?(0,G.jsx)(M,{value:`live`,className:`flex min-h-0 flex-1 flex-col`,children:(0,G.jsx)(Q,{templateId:p.id,assetIds:a.assetIds,schemas:y})}):null,(0,G.jsx)(M,{value:`overview`,keepMounted:!0,className:`flex min-h-0 flex-1 flex-col`,children:(0,G.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-3 pt-0`,children:(0,G.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto pr-2`,children:(0,G.jsxs)(`div`,{className:`flex flex-col gap-2 pb-1 pt-0.5`,children:[(0,G.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,G.jsxs)(k,{variant:`outline`,className:`font-mono text-xs`,children:[p.topology.length,` areas`]}),(0,G.jsxs)(k,{variant:`outline`,className:`font-mono text-xs`,children:[p.assetCount,` assets`]}),(0,G.jsxs)(k,{variant:`outline`,className:`font-mono text-xs`,children:[p.models.length,` models`]}),b!==null&&(0,G.jsxs)(k,{variant:`outline`,className:`font-mono text-xs`,children:[b,` tags`]}),p.settings?.tickIntervalMs&&(0,G.jsxs)(k,{variant:`outline`,className:`font-mono text-xs`,children:[`tick `,p.settings.tickIntervalMs,`ms`]}),p.settings?.timeMultiplier&&p.settings.timeMultiplier!==1&&(0,G.jsxs)(k,{variant:`outline`,className:`font-mono text-xs`,children:[p.settings.timeMultiplier,`× speed`]})]}),p.namespace&&(p.namespace.enterprise||p.namespace.site||p.namespace.prefix)&&(0,G.jsxs)(`div`,{className:`min-w-0 overflow-hidden rounded-[var(--miravo-radius-tight)] border border-border/60 px-2.5 py-2`,children:[(0,G.jsx)(`h3`,{className:`font-heading text-xs font-semibold uppercase tracking-[0.12em] text-primary`,children:`Namespace`}),(0,G.jsxs)(`dl`,{className:`mt-1 grid grid-cols-1 gap-x-4 gap-y-1.5 sm:grid-cols-2`,children:[p.namespace.enterprise&&(0,G.jsxs)(`div`,{className:`min-w-0 sm:max-w-[min(100%,16rem)]`,children:[(0,G.jsx)(`dt`,{className:`font-heading text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground`,children:`Enterprise`}),(0,G.jsx)(`dd`,{className:`mt-1 font-mono text-xs leading-snug text-foreground [overflow-wrap:anywhere] break-words`,children:p.namespace.enterprise})]}),p.namespace.site&&(0,G.jsxs)(`div`,{className:`min-w-0 sm:max-w-[min(100%,16rem)]`,children:[(0,G.jsx)(`dt`,{className:`font-heading text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground`,children:`Site`}),(0,G.jsx)(`dd`,{className:`mt-1 font-mono text-xs leading-snug text-foreground [overflow-wrap:anywhere] break-words`,children:p.namespace.site})]}),p.namespace.prefix&&(0,G.jsxs)(`div`,{className:`min-w-0 sm:col-span-2`,children:[(0,G.jsx)(`dt`,{className:`font-heading text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground`,children:`Prefix`}),(0,G.jsx)(`dd`,{className:`mt-1 font-mono text-xs leading-snug text-foreground [overflow-wrap:anywhere] break-words`,children:p.namespace.prefix})]})]})]}),p.topology.map(e=>(0,G.jsx)(xe,{area:e,expanded:u.has(e.name),onToggle:()=>x(e.name)},e.name)),p.settings&&(0,G.jsxs)(`div`,{className:`rounded-[var(--miravo-radius-tight)] border border-border/50 p-2`,children:[(0,G.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-1.5 font-heading text-xs font-semibold uppercase tracking-[0.12em] text-warning`,children:[(0,G.jsx)(ne,{className:`size-3.5`,"aria-hidden":!0}),(0,G.jsx)(`span`,{children:`Settings`})]}),(0,G.jsxs)(`div`,{className:`grid grid-cols-1 gap-1.5 font-mono text-xs sm:grid-cols-2`,children:[(0,G.jsxs)(`div`,{className:`flex flex-col`,children:[(0,G.jsx)(`span`,{className:`text-muted-foreground`,children:`tick interval`}),(0,G.jsxs)(`span`,{className:`text-foreground`,children:[p.settings.tickIntervalMs??1e3,`ms`]})]}),(0,G.jsxs)(`div`,{className:`flex flex-col`,children:[(0,G.jsx)(`span`,{className:`text-muted-foreground`,children:`time multiplier`}),(0,G.jsxs)(`span`,{className:`text-foreground`,children:[p.settings.timeMultiplier??1,`×`]})]})]})]})]})})})}),(0,G.jsx)(M,{value:`uns`,keepMounted:!0,className:`flex min-h-0 flex-1 flex-col`,children:(0,G.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-3 pt-0`,children:(0,G.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto pr-2`,children:(0,G.jsx)(`div`,{className:`pb-1 pt-0.5`,children:(0,G.jsx)(me,{detail:p})})})})}),(0,G.jsx)(M,{value:`export`,keepMounted:!0,className:`flex min-h-0 flex-1 flex-col`,children:(0,G.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-3 pt-0`,children:(0,G.jsx)(D,{kind:`template`,id:p.id,yamlPath:`/catalog/templates/${p.id}/yaml`,yamlFilename:`${p.id}.miravo.yaml`})})})]})]},p.id):(0,G.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-sm text-muted-foreground`,children:`Template not found`})})})}function xe({area:e,expanded:t,onToggle:n}){let r=_e(e);return(0,G.jsxs)(`div`,{className:ee,children:[(0,G.jsxs)(`button`,{type:`button`,className:`flex min-h-11 w-full items-center gap-1.5 px-2.5 py-2 text-left text-xs font-medium transition-colors hover:bg-muted/30 touch-manipulation sm:min-h-0 sm:py-1.5`,onClick:n,children:[(0,G.jsx)(R,{className:`size-3.5 text-primary`}),(0,G.jsx)(`span`,{className:`uppercase tracking-wider text-primary`,children:p(e.name)}),(0,G.jsxs)(`div`,{className:`ml-auto flex items-center gap-1.5`,children:[(0,G.jsxs)(k,{variant:`secondary`,className:`text-xs`,children:[r,` assets`]}),(0,G.jsxs)(k,{variant:`secondary`,className:`text-xs`,children:[e.lines.length,` lines`]}),(0,G.jsx)(_,{className:`size-3 text-muted-foreground transition-transform ${t?`rotate-180`:``}`})]})]}),(0,G.jsx)(l,{initial:!1,children:t&&(0,G.jsx)(c.div,{initial:{height:0,opacity:0},animate:{height:`auto`,opacity:1},exit:{height:0,opacity:0},transition:{duration:.2,ease:`easeOut`},className:`overflow-hidden`,children:(0,G.jsx)(`div`,{className:`flex flex-col gap-1.5 border-t border-border p-2`,children:e.lines.map(e=>(0,G.jsx)(Se,{line:e},e.name))})},`content`)})]})}function Se({line:e}){return(0,G.jsxs)(`div`,{className:`rounded-[var(--miravo-radius-tight)] border border-border/60 bg-muted/10 p-2`,children:[(0,G.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-1.5 text-xs font-medium text-muted-foreground`,children:[(0,G.jsx)(V,{className:`size-3.5`}),(0,G.jsx)(`span`,{title:e.name,children:p(e.name)}),(0,G.jsx)(z,{className:`ml-auto size-3.5 text-muted-foreground`}),(0,G.jsxs)(`span`,{className:`text-muted-foreground`,children:[e.assets.reduce((e,t)=>e+t.count,0),` assets`]})]}),(0,G.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:e.assets.map(e=>(0,G.jsx)(Ce,{assignment:e},`${e.model}-${e.count}`))})]})}function Ce({assignment:e}){let t=e.parameters&&Object.keys(e.parameters).length>0;return(0,G.jsxs)(`div`,{className:`rounded-[var(--miravo-radius-tight)] border border-border/30 bg-background/50 px-2.5 py-1.5`,children:[(0,G.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs`,children:[(0,G.jsx)(`span`,{className:`font-mono font-medium text-primary`,title:e.model,children:p(e.model)}),(0,G.jsxs)(k,{variant:`secondary`,className:`shrink-0 px-1 py-0 text-xs`,children:[`×`,e.count]}),e.variation>0&&(0,G.jsxs)(`span`,{className:`text-muted-foreground`,children:[`±`,(e.variation*100).toFixed(0),`% variation`]})]}),t&&e.parameters&&(0,G.jsx)(`div`,{className:`mt-1.5 flex flex-wrap gap-x-4 gap-y-1 border-t border-border/20 pt-1.5 font-mono text-xs`,children:Object.entries(e.parameters).map(([e,t])=>(0,G.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,G.jsx)(`span`,{className:`text-muted-foreground`,children:e}),(0,G.jsx)(`span`,{className:`text-foreground`,children:t})]},e))})]})}function we({id:e,className:t}){let n=g(`shrink-0 text-primary`,t);switch(e){case`smart-factory`:return(0,G.jsx)(b,{className:n,"aria-hidden":!0});case`water-treatment`:return(0,G.jsx)(I,{className:n,"aria-hidden":!0});case`commercial-building`:return(0,G.jsx)(F,{className:n,"aria-hidden":!0});case`backup-power`:return(0,G.jsx)(U,{className:n,"aria-hidden":!0});case`district-heating`:return(0,G.jsx)(H,{className:n,"aria-hidden":!0});case`pharma-cleanroom`:return(0,G.jsx)(L,{className:n,"aria-hidden":!0});default:return(0,G.jsx)(B,{className:n,"aria-hidden":!0})}}export{z as i,be as n,U as r,we as t};
|
package/console-dist/assets/{commercial-building-CINKWcQV.js → commercial-building-D95MTyEI.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{c as t}from"./vendor-charts-95ykyDlI.js";import{ot as n}from"./vendor-ui-D8j69UH4.js";import{C as r,a as i,b as a,c as o,d as s,f as c,l,m as u,n as d,s as f}from"./dom-CQuChC3G.js";import{n as p,t as m}from"./by-path-DmADo_qX.js";import{A as h,D as g,E as _,F as v,H as ee,L as te,N as ne,P as re,T as ie,V as ae,X as oe,a as se,b as ce,g as le,i as ue,j as de,k as fe,n as pe,o as me,r as he,s as ge,t as _e}from"./status-DNfdEhTs.js";import{r as ve,t as ye}from"./chiller-Jug0vRg-.js";import{n as be,o as xe,s as Se,t as Ce}from"./genset-DBpkUT9p.js";import{t as we}from"./stages-C0cErwSQ.js";import{a as Te,i as Ee,n as De,o as Oe,s as ke,t as Ae}from"./rtu-BR4DhLbE.js";import{a as je,i as Me,n as Ne,o as Pe,r as Fe,t as Ie}from"./boiler-BQwqgoVY.js";var Le=[[`rtu1`,`hvac-rtu`,`hvac`,`floor-1`,0],[`rtu2`,`hvac-rtu`,`hvac`,`floor-2`,0],[`rtu3`,`hvac-rtu`,`hvac`,`floor-3`,0],[`chiller`,`industrial-chiller`,`chilled-water`,`plant`,0],[`chwPump`,`centrifugal-pump`,`chilled-water`,`plant`,0],[`boiler`,`hot-water-boiler`,`heating`,`boiler-room`,0],[`hwPump`,`centrifugal-pump`,`heating`,`boiler-room`,0],[`fanA`,`ac-induction-motor`,`electrical`,`ahu-fans`,0],[`fanB`,`ac-induction-motor`,`electrical`,`ahu-fans`,1],[`genset`,`diesel-generator`,`electrical`,`emergency-power`,0]],Re=e=>m(Le,e);function ze(e){let t=(e,t,n)=>({key:e,assetId:e,name:t,kind:`utility`,area:n});return[t(e.rtu1,`Rooftop unit · floor 1`,`HVAC`),t(e.rtu2,`Rooftop unit · floor 2`,`HVAC`),t(e.rtu3,`Rooftop unit · floor 3`,`HVAC`),t(e.chiller,`Chiller`,`Chilled water`),t(e.chwPump,`Chilled-water pump`,`Chilled water`),t(e.boiler,`Hot-water boiler`,`Heating`),t(e.hwPump,`Heating circulation pump`,`Heating`),t(e.fanA,`AHU supply fan 1`,`Electrical`),t(e.fanB,`AHU supply fan 2`,`Electrical`),t(e.genset,`Emergency generator`,`Electrical`)]}var y=e(t(),1),b={x:-332,y:-228,w:232,d:74,r:2},Be=29,x=1,Ve={x:-86,y:-192,w:44,d:36,r:1.5},S={x:-79,y:-184,w:30,d:20,r:1.5},C=26,He=-150;function Ue(e){let{k:t,P:n,L:r,slab:i,cyl:a}=e,o=[];for(let e=b.x+Be;e<b.x+b.w-1;e+=Be)o.push(t.segment([e,b.y,x],[e,b.y+b.d,x],n));for(let e=b.y+Be;e<b.y+b.d-1;e+=Be)o.push(t.segment([b.x,e,x],[b.x+b.w,e,x],n));let s=[i(b,0,x,{tone:`mid`,inner:r(o.join(``),{tone:`faint`})},3,.3)];for(let e of[-322,-124])s.push(i({x:e,y:-216,w:22,d:10,r:1},x,5,{tone:`mid`},2,.3),i({x:e+1.6,y:-214.4,w:18.8,d:6.8,r:.6},x+5,.6,{tone:`lo`},2,0));for(let e=-316;e<b.x+b.w-8;e+=46)s.push(a(e,b.y+b.d-4,1.3,x,7,{tone:`mid`},12));return s.join(``)}function We(e,t){let{k:n,P:r,L:i,slab:a}=e,o=Ve.x+Ve.w,s=[];for(let e=o+12;e<t-4;e+=12)s.push(n.segment([e,He-3,.6],[e,He+3,.6],r));return a({x:o,y:He-3.5,w:t-o,d:7,r:.4},0,.6,{tone:`mid`,inner:i(s.join(``),{tone:`faint`})},2,.1)}function Ge(e){let{k:t,P:n,L:r,slab:i,cyl:a}=e,{x:o,y:s,w:c,d:l}=S,u=1.5,d=[];for(let e=1;e<12;e++)d.push(t.segment([o+3+e*2,s+l+5,u+4],[o+3+e*2,s+l+5,C-4],n));let f=[i(Ve,0,u,{tone:`mid`},3,.3),i(S,u,C,{tone:`mid`},2,.5),i({x:o+3,y:s+l,w:c-6,d:5,r:.6},u+3,C-7,{tone:`mid`,inner:r(d.join(``),{tone:`faint`})},2,.2),i({x:o-.8,y:s-.8,w:c+1.6,d:l+1.6,r:1.5},u+C,1.4,{tone:`mid`},2,.2)];for(let e of[o+7,o+15,o+23])f.push(a(e,s+5,1.4,u+C+1.4,7,{tone:`mid`},12),a(e,s+5,2.2,u+C+1.4,1.4,{tone:`mid`},12));for(let e of[s+5,s+10,s+15])f.push(a(o+c-3,e,1,u+C+1.4,3,{tone:`lo`},10));return f.join(``)}function Ke(e,t,n=1.6){let{k:r,P:i,L:a,slab:o,screws:s}=e;return o(t,0,n,{tone:`mid`},3,.4)+a(r.planOutline(r.insetPlan(t,3),n,i,3),{tone:`faint`})+s(r.corners(t,4),n)}function w(e,t,n,r,{louvres:i=[],doors:a=[]}={}){let{k:o,P:s,L:c,slab:l}=e,u=[l(t,0,n,{tone:`mid`},2,.3),l({x:t.x-.6,y:t.y-.6,w:t.w+1.2,d:t.d+1.2,r:.3},n,1.4,{tone:`mid`},2,.2)],d=r===`south`?e.front(t.y+t.d):o.sideMatrix([t.x+t.w,t.y+t.d],0,s,`right`),f=[];for(let[e,t]of i){let[r,i]=[e,t];f.push(`<path class="cr-grille" d="M${r} ${-(n-9)}H${i}V-13H${r}Z"/>`);let a=[];for(let e=16;e<n-9;e+=3)a.push(`M${r+1} ${-e}H${i-1}`);f.push(c(a.join(``),{tone:`lo`}))}for(let[e,t]of a){let[r,i]=[e,t];f.push(`<path class="cr-door" d="M${r} -1H${i}V${-(n-16)}H${r}Z"/>`),f.push(c(`M${r-1.2} 0V${-(n-14.8)}H${i+1.2}V0M${r-1.2} -1H${i+1.2}`,{tone:`lo`})),f.push(`<circle class="sf-screw" cx="${i-2.4}" cy="${-(n/2-4)}" r="0.7"/>`)}return f.length&&u.push(`<g transform="${d}">${f.join(``)}</g>`),u.join(``)}function qe(e,t,n,r){let{k:i,P:a,L:o,slab:s,screws:c}=e,l=t.x+t.w,u=[w(e,t,n,`south`,{doors:[[t.x+8,t.x+22]],louvres:[[t.x+30,t.x+46]]})];u.push(s({x:t.x+t.w-18,y:t.y+8,w:10,d:8,r:.8},n+1.4,4,{tone:`mid`},2,.3));let d=i.sideMatrix([l,t.y+t.d],0,a,`right`),f=t.y+t.d-r.y;return u.push(`<g transform="${d}"><path class="sf-plate" d="M${f-7} ${-(r.z+7)}H${f+7}V${-(r.z-7)}H${f-7}Z"/>${o(`M${f-7} ${-(r.z+7)}H${f+7}V${-(r.z-7)}H${f-7}Z`,{tone:`lo`})}</g>`,c([[l+.05,r.y-5.6],[l+.05,r.y+5.6]],r.z+5.6),c([[l+.05,r.y-5.6],[l+.05,r.y+5.6]],r.z-5.6)),u.join(``)}function Je(e,[t,n],r,i,a,o){let{k:s,P:c,L:l,slab:u,cyl:d}=e,f=[],p=[];for(let e=i+48;e<a-12;e+=48)p.push(e);let m=p.map(e=>s.sideArc(t,n,r,e,c,24)).join(``);f.push(d(t,n,r,i,a-i,{tone:`mid`,inner:l(m,{tone:`faint`})},28));for(let e of p)f.push(d(t,n,r+1.2,e-.8,1.6,{tone:`mid`},28));for(let e of o)f.push(u({x:e.toX,y:n-.9,w:t-r-e.toX,d:1.8,r:.3},e.z-.9,1.8,{tone:`mid`},2,.1),u({x:e.toX-1.2,y:n-3.5,w:1.2,d:7,r:.3},e.z-3.5,7,{tone:`mid`},2,.1),d(t,n,r+.9,e.z-1.1,2.2,{tone:`mid`},28));for(let e of[0,2.1,4.2])f.push(d(t+Math.cos(e)*(r-1.4),n+Math.sin(e)*(r-1.4),.5,a,3,{tone:`lo`,crease:`none`},8));return f.push(d(t,n,r+2.2,a+3,1.2,{tone:`mid`},28)),f.join(``)}var T={x:-300,y:-268,w:290,d:32,r:.6},E=[4,64,124],D=3,Ye=6,O={x:-334,y:-268,w:34,d:32,r:.6},k=e=>(E[e+1]??184)-4,Xe={x:O.x-3,y:T.y-3,w:T.w+O.w+3+7,d:T.d+3+8,r:1.5},A={x:T.x+D,y:T.y+D,w:T.w-D,d:T.d-D,r:0},Ze=A.x+A.w,Qe=A.y+A.d,$e=[-247,-185,-123,-61,-13],et=2.2,j=2.6,M=E[0],N=-247,tt=-255,nt=11,rt=e=>k(e)-nt,it=[-246,-162,-78],at=-251,ot=.8,st=[46*ot,20*ot],ct=e=>[(it[e]??0)-9,(it[e]??0)+9],lt=e=>{let[t,n]=ct(e);return{x:t-5,y:tt-4.5,w:n-t+10,d:9,r:.3}},ut=e=>it.map((e,t)=>t).filter(t=>t<e),dt=4,P=1.6,ft=.6;function pt(e){let{k:t,P:n,L:r,slab:i}=e;return i(Xe,0,M,{tone:`mid`,inner:r(t.planOutline({x:T.x-.5,y:T.y-.5,w:T.w+1,d:T.d+1,r:0},M,n,2),{tone:`faint`})},4,.5)}function mt(e){let{k:t,P:n,L:r,S:i}=e,a=184+Ye-M,o=(e,r,i)=>t.segment([r[0],r[1],E[e]??0],[i[0],i[1],E[e]??0],n),s={x:T.x,y:T.y,w:T.w,d:D,r:.3},c={x:T.x,y:T.y+D,w:D,d:T.d-D,r:.3};return[i(t.slabOf(s,M,a,n,2,.3),{tone:`mid`,inner:r([1,2].map(e=>o(e,[s.x,s.y+s.d],[s.x+s.w,s.y+s.d])).join(``),{tone:`faint`})}),i(t.slabOf(c,M,a,n,2,.3),{tone:`mid`}),ht(e)].join(``)}function ht(e){let{k:t,P:n,L:r,S:i,front:a}=e,o=O.y+O.d,s=O.x+O.w/2,c=[],l=[];for(let[e,t]of E.entries()){for(let e of[s-8,s+.4])c.push(`<path class="cr-door" d="M${e} ${-(t+1)}h7.6v-23h-7.6Z"/>`);l.push(`M${s-9} ${-t}V${-(t+25)}H${s+9}V${-t}`),c.push(`<path class="cr-grille" d="M${s-2.4} ${-(t+28)}h4.8v-2.4h-4.8Z"/>`),e<E.length-1&&l.push(`M${O.x} ${-(k(e)+4)}H${O.x+O.w}`)}return i(t.slabOf(O,M,184-M,n,2,.4),{tone:`mid`})+`<g transform="${a(o)}">${c.join(``)}${r(l.join(``),{tone:`lo`})}</g>`}var gt=Array.from({length:6},(e,t)=>[-284+t*36,-284+t*36+32]),_t=21,vt=8;function yt(e,t){let{k:n,P:r,L:i,front:a}=e,o=(E[t]??0)+_t,s=k(t)-vt,c=(e,n)=>`<path class="bd-win bt-pane" data-occ="${t}" d="M${e} ${-s}H${n}V${-o}H${e}Z"/>`,l=(e,t)=>`M${e-1} ${-(o-1.6)}H${t+1}M${(e+t)/2} ${-s}V${-o}`,u=gt.map(([e,t])=>c(e,t)).join(``),d=gt.map(([e,t])=>l(e,t)).join(``),f=n.sideMatrix([T.x+D,T.y+T.d],0,r,`right`);return`<g transform="${a(T.y+D)}">${u}${i(d,{tone:`lo`})}</g><g transform="${f}">${c(4,20)}${i(l(4,20),{tone:`lo`})}</g>`}function bt(e,t){let{k:n,P:r,L:i,slab:a}=e,o=(E[t]??0)-4,s=[a(A,o,4,{tone:`mid`,inner:i(n.segment([A.x,A.y+A.d,o+1.4],[A.x+A.w,A.y+A.d,o+1.4],r),{tone:`faint`})},2,.4)],c=E[t]??0;for(let e of ut(t)){let t=lt(e);s.push(a({...t,d:P},c,dt,{tone:`mid`},2,.2),a({...t,w:P},c,dt,{tone:`mid`},2,.2))}return s.join(``)}function xt(e,t,n,r){let{cyl:i}=e,a=lt(t),o=(E[n]??0)+dt,s=r===`back`?a.y+ft+.4:a.y+a.d-ft-.4;return[a.x+.8,a.x+a.w-.8].map(e=>i(e,s,ft,o,k(n)-o,{tone:`mid`,crease:`none`},8))}function St(e,t){return ut(t).flatMap(n=>xt(e,n,t,`back`)).join(``)}function Ct(e,t){let{cyl:n,slab:r}=e,i=E[t]??0,a=k(t)-i,o=Qe-j,s=$e.map(e=>n(e,o,et,i,a,{tone:`mid`},14));s.push(n(Ze-j,-251,et,i,a,{tone:`mid`},14));for(let n of ut(t)){let a=lt(n);s.push(r({...a,y:a.y+a.d-P,d:P},i,dt,{tone:`mid`},2,.2),r({...a,x:a.x+a.w-P,w:P},i,dt,{tone:`mid`},2,.2),...xt(e,n,t,`front`))}return s.join(``)}function wt(e){let{k:t,P:n,L:r,S:i,slab:a}=e,o=[.25,.5,.75].map(e=>t.segment([A.x+A.w*e,A.y,184],[A.x+A.w*e,A.y+A.d,184],n)).join(``),s=A.y+A.d,c=A.x+A.w;return[i(t.slabOf(A,180,4,n,2,.4),{tone:`mid`,inner:r(o,{tone:`faint`})}),a({x:A.x,y:s-j,w:A.w,d:j,r:.3},184,Ye-1,{tone:`mid`},2,.3),a({x:c-j,y:A.y,w:j,d:A.d-j,r:.3},184,Ye-1,{tone:`mid`},2,.3),...it.map(e=>a({x:e-st[0]-1.5,y:at-st[1]-1.5,w:st[0]*2+3,d:st[1]*2+3,r:.6},184,3,{tone:`mid`},2,.2)),a({x:O.x+4,y:O.y+8,w:O.w-8,d:O.d-16,r:.6},184,14,{tone:`mid`},2,.3)].join(``)}var Tt={w:16,d:10,h:4},Et=18,Dt=1.8,Ot=[[-190,-100],[-120,-65],[-120,-204]],F={x:-24,y:N,w:16,d:14,h:12,top:32},kt={w:10,d:8,h:4},At=-262,I=-264.4,jt=5.5,Mt=1.5,Nt=1.1,Pt=[-282,-246,-210,-174,-138,-102],Ft=8.5,It=-292,Lt=(e,t)=>[e,N,k(t)-Et+Dt],Rt=[F.x,F.y,F.top+Dt],zt=e=>[ct(e)[1],tt,k(e)-Et+Dt];function Bt(e,t,n,r,i,a,o,s,c){let{k:l,P:u,L:d,D:f,slab:p,cyl:m,at:h}=e,g=o-a,_=[[t-r/2+1.5,n-i/2+1.5],[t+r/2-1.5,n-i/2+1.5],[t-r/2+1.5,n+i/2-1.5],[t+r/2-1.5,n+i/2-1.5]].map(([e=0,t=0])=>m(e,t,.5,o,s-o,{tone:`lo`,crease:`none`},8)),v=[.3,.55,.8].map(e=>l.segment([t-r/2+1.5,n+i/2,g+a*e],[t+r/2-1.5,n+i/2,g+a*e],u)).join(``),ee=[];for(let e=0;e<6;e++)ee.push([t-r/2+2+e*(r-4)/5,n+i/2,g+1.2]);return[..._,p({x:t-r/2,y:n-i/2,w:r,d:i,r:.8},g,a,{tone:`mid`,inner:d(v,{tone:`faint`})},2,.3),m(t,n,Math.min(5.2,i/2-1.2),o,Dt,{tone:`mid`},24),f(ee.map(e=>h(e)),{size:.3}),c?`<g data-diffuser="${t},${n},${g},${r/2}"></g>`:``].join(``)}var Vt=(e,t,n)=>Bt(e,t,N,Tt.w,Tt.d,Tt.h,k(n)-Et,k(n),!0),Ht=e=>Bt(e,F.x,F.y,F.w,F.d,F.h,F.top,k(0),!0),Ut=(e,t)=>Bt(e,ct(t)[1],tt,kt.w,kt.d,kt.h,k(t)-Et,k(t),!1);function Wt(e,t,n){let{k:r,P:i,L:a,slab:o}=e,s=n+11,c=s+Ft,l=-265,u=Array.from({length:7},(e,n)=>r.segment([t+3.5+n*3.5,l+3.6,s+1],[t+3.5+n*3.5,l+3.6,c-1],i)).join(``);return[...[t+5,t+28-5].map(e=>o({x:e-1,y:-265,w:2,d:.9,r:.2},s+2,4,{tone:`lo`},2,0)),o({x:t,y:l,w:28,d:3.6,r:.5},s,Ft,{tone:`mid`,inner:a(u,{tone:`faint`})},2,.3)].join(``)}function Gt(e,t,n){let{G:r,P:i,S:a}=e,o=r.frameAlong([It,t,n],[-1,0,0]);return a(r.disc(0,1.4,Nt+.7,o,i),{tone:`mid`})}function Kt(e,t,n,r,i){let{slab:a,cyl:o,front:s}=e,c=r+8,l=[a({x:t+.8,y:n+.6,w:1.2,d:6.8,r:.2},r,8,{tone:`lo`},2,0),a({x:t+22-2,y:n+.6,w:1.2,d:6.8,r:.2},r,8,{tone:`lo`},2,0),a({x:t,y:n,w:22,d:8,r:.6},c,1.4,{tone:`mid`},2,.3),o(t+22/2,n+8*.4,1.1,c+1.4,2.4,{tone:`lo`,crease:`none`},10),a({x:t+22/2-4.2,y:n+8*.4-.5,w:8.4,d:1,r:.3},c+3.8,5.4,{tone:`lo`},2,0)],u=n+8*.4+.5;return l.push(`<g transform="${s(u)}"><path class="bd-win" data-occ="${i}" d="M${t+22/2-3.6} ${-(c+4.2)}h7.2v-4.4h-7.2Z"/></g>`),l.join(``)}function qt(e,t,n,r){let{slab:i,cyl:a}=e;return[a(t,n,3,r,.8,{tone:`lo`},14),a(t,n,.6,r+.8,3.6,{tone:`lo`,crease:`none`},8),a(t,n,3.2,r+4.4,1.4,{tone:`mid`},16),i({x:t-3,y:n+2.6,w:6,d:.9,r:.3},r+5.6,5.4,{tone:`mid`},2,.2)].join(``)}function Jt(e,t,n,r){let{slab:i}=e;return[Kt(e,t,-249,n,r),Kt(e,t+25,-249,n,r),i({x:t+22.6,y:-249.5,w:1,d:7,r:.2},n+1.2,12,{tone:`mid`},2,.2),qt(e,t+11,-239.6,n),qt(e,t+36,-239.6,n)].join(``)}function Yt(e,t){let{slab:n,cyl:r}=e,i=[],a=-250;i.push(n({x:a,y:-251,w:46,d:8,r:1},t,10,{tone:`mid`},3,.4),n({x:a+36,y:-243,w:10,d:7,r:1},t,10,{tone:`mid`},3,.4),n({x:a-.8,y:-251.8,w:47.6,d:9.6,r:1},t+10,1.4,{tone:`mid`},3,.2),n({x:a+35.2,y:-243.8,w:11.6,d:8.6,r:1},t+10,1.4,{tone:`mid`},3,.2));for(let e of[-170,-144])i.push(n({x:e,y:-250,w:20,d:6,r:.8},t+3.2,3,{tone:`mid`},2,.3),n({x:e,y:-252,w:20,d:2,r:.4},t+6.2,6,{tone:`mid`},2,.2),r(e+2.4,-245.4,.9,t,3.2,{tone:`lo`,crease:`none`},8),r(e+17.6,-245.4,.9,t,3.2,{tone:`lo`,crease:`none`},8));return i.join(``)}function Xt(e,t){let n=E[t]??0,r=Pt.map(t=>Wt(e,t,n));r.push(Gt(e,At,n+jt),Gt(e,I,n+Mt));let i=Ot[t]??[];r.push(St(e,t));for(let n of i)r.push(Vt(e,n,t));if(r.push(Ut(e,t)),t===0)r.push(Yt(e,n));else for(let a of i)r.push(Jt(e,a-23.5,n,t));return r.join(``)}var Zt=1e3,Qt={x:-352,y:-286,w:652,d:170,r:8},$t={x:-14,y:-516,w:314,d:220,r:8},en={x:-374,y:-538,w:690,d:444,r:16},tn=[34,-242],nn=a([...u(en,-21,-14),...u(Qt,-14,20),...u($t,-14,20),...u(Xe,0,214),...u({x:26,y:-250,w:16,d:16,r:0},0,244)],Zt,620,{pad:22,azimuth:60}),rn=-325,an=[70,205],on=Te(100,!0),sn=[-202,-135,0],cn=[-34,36.6,40],ln=[-20,36.6,40],un=[94,-130,0],L=[.55,.5],dn=-385,fn=-462,pn=(e,t)=>[(e[0]-un[0])*t,(e[1]-un[1])*t,e[2]*t],mn=e=>{let t=an[e],n=Oe(100,7),r=e=>[t+e[0],rn+e[1],e[2]];return{supply:r(n.chwSupply),ret:r(n.chwReturn),discharge:r(n.discharge)}},hn=[mn(0),mn(1)],R=[hn[0].supply[0]-ln[0],fn],z=[tn[0]-Me[0],tn[1]],gn=[z[0]+je[0],z[1]+je[1],je[2]],_n=[z[0]+Fe[0],z[1]+Fe[1],Fe[2]],vn=(e,t,n)=>[e-pn(h,L[n])[0],t],yn=[vn(R[0]+cn[0],dn,0),vn(_n[0],-204,1)],bn=(e,t)=>{let[n,r]=yn[e]??[0,0],[i,a,o]=pn(t,L[e]);return[n+i,r+a,o]},xn=[{suction:bn(0,re),riser:bn(0,h)},{suction:bn(1,re),riser:bn(1,h)}],Sn=[190,-150],B={x:24,y:-160,w:56,d:44,r:1},Cn={x:108,y:-192,w:164,d:72,r:2},wn={x:108,y:-194,w:164,d:3,r:.3},Tn={x:108,y:-194,w:3,d:76,r:.3},En=[-49,0,60.8],Dn={x:0,y:-272,w:252,d:76,r:2},On={x:2,y:-270,w:250,d:3,r:.3},kn={x:-10,y:-512,w:306,d:4,r:.3},An={x:-12,y:-512,w:4,d:214,r:.3},jn=we([...yn.map((e,t)=>({key:`pump${t}`,at:e,h:45*L[t]})),{key:`chiller`,at:R,h:56},{key:`boiler`,at:z,h:je[2]-8},{key:`flue`,at:tn,h:236},...an.map((e,t)=>({key:`ahu${t}`,at:[e,rn],h:36})),{key:`xfmr`,at:[S.x+S.w/2,S.y+S.d/2],h:36},{key:`genset`,at:Sn,h:126},{key:`elec`,at:[B.x+B.w/2,B.y+B.d/2],h:46},{key:`gen-back`,at:[wn.x+wn.w/2,wn.y],h:36},{key:`gen-west`,at:[Tn.x,Tn.y+Tn.d/2],h:36}],nn),Mn=jn.order,Nn=E.length,Pn=([e,t])=>e<14&&t>-269&&t<-232,Fn=([e,t])=>e<-8&&t<-269,In=([e,t])=>e<-8&&t<-256.5,Ln=e=>E.filter((t,n)=>n>0&&e>=t).length,Rn={layer:e=>Fn(e)?0:Pn(e)&&e[2]>=184?Nn+1:Pn(e)&&In(e)?zn+Ln(e[2]):Pn(e)?1+Ln(e[2]):Nn+1+jn.depth.layer(e),glide:()=>!0},zn=Nn+1+Mn.length+1,Bn={y:Sn[1],z:26};function Vn(e,t){return[e,...[...E].filter(n=>n>0&&n<e&&n>t).sort((e,t)=>t-e),t]}var Hn=3.2,Un=2.2,Wn=180;function Gn(e,t,n,r){let i=Vn(Wn,n);return i.slice(0,-1).map((n,a)=>{let o=[[t,tt,n],[t,tt,i[a+1]??0]];return a===i.length-2&&o.push(...r),{id:`${e}${a}`,medium:`duct`,r:Hn,bend:2,bare:[a===0,!1],pts:o}})}var Kn=[0,1,2].flatMap(e=>{let t=rt(e),[n,r]=ct(e),i=[...Ot[e]??[]].sort((e,t)=>Math.abs(e-n)-Math.abs(t-n)),a=i[i.length-1]??n,o=i.slice(0,-1).map((n,r)=>({id:`sup${e}-n${r}`,medium:`duct`,r:Un,pts:[[n,N,t],Lt(n,e)]}));return[...Gn(`sup${e}-`,n,t,[[n,N,t],[a,N,t],Lt(a,e)]),...o,...Gn(`ret${e}-`,r,zt(e)[2],[])]}),[V,H]=hn,U=-279,qn=Rt[0],W=40,Jn=[{id:`ahu-a`,medium:`duct`,r:3.5,pts:[V.discharge,[V.discharge[0],U,V.discharge[2]],[V.discharge[0],U,W]]},{id:`ahu-b`,medium:`duct`,r:3.5,pts:[H.discharge,[H.discharge[0],U,H.discharge[2]],[H.discharge[0],U,W],[qn,U,W],[qn,-266.5,W]]},{id:`ahu-in`,medium:`duct`,r:3.5,pts:[[qn,-265,W],[qn,Rt[1],W],Rt]}],G=[R[0]+ln[0],R[1]+ln[1],ln[2]],Yn=[R[0]+cn[0],R[1]+cn[1],cn[2]],[K,q]=xn,Xn=46,Zn=-360,Qn=K.suction[2],$n=K.suction[1],er=V.supply[1],tr=e=>[[e,er,Xn],[e,$n,Xn],[e,$n,Qn]],nr=[{id:`chw-dis`,medium:`coolantret`,r:ne*L[0],fromStub:!0,pts:[K.riser,[K.riser[0],K.riser[1],Yn[2]],Yn]},{id:`chw-sup`,medium:`coolant`,r:2.6,pts:[G,[G[0],er,G[2]],V.supply]},{id:`chw-sup-b`,medium:`coolant`,r:2.6,pts:[[G[0],Zn,G[2]],[H.supply[0],Zn,G[2]],[H.supply[0],er,G[2]],H.supply]},{id:`chw-ret-b`,medium:`coolantret`,r:2.6,pts:[H.ret,...tr(H.ret[0]),K.suction]},{id:`chw-ret`,medium:`coolantret`,r:2.6,pts:[V.ret,...tr(V.ret[0])]}],J=-6,Y=At,rr=-258,ir=-18,ar=-180,or=q.suction[0]+40,sr=70,cr=_n[2]+20,lr=(e,t,n,r,i,a)=>Vn(a,i).slice(0,-1).map((o,s,c)=>{let l=s===c.length-1?i:Vn(a,i)[s+1]??i;return{id:`${e}${s}`,medium:n,r,blind:[s===c.length-1,s===0],pts:[[J,t,l],[J,t,o]]}}),ur=E.flatMap((e,t)=>{let n=e+jt,r=e+Mt;return[{id:`hw-s${t}`,medium:`heat`,r:Nt,blind:[!1,!0],pts:[[J,Y,n],[It,Y,n]]},{id:`hw-r${t}`,medium:`hotret`,r:Nt,blind:[!0,!1],pts:[[It,I,r],[ir,I,r],[ir,rr,r],[J,rr,r]]},...Pt.flatMap((i,a)=>[{id:`hw-st${t}-${a}`,medium:`heat`,r:1,bare:[!1,!0],pts:[[i+28-3,Y,n],[i+28-3,Y,e+11]]},{id:`hw-rt${t}-${a}`,medium:`hotret`,r:1,bare:[!0,!1],pts:[[i+3,I,e+11],[i+3,I,r]]}])]}),dr=[...lr(`hw-sr`,Y,`heat`,2.2,5,E[2]+jt+6),...lr(`hw-rr`,rr,`hotret`,2.2,3,E[2]+Mt+6),{id:`hw-feed-s`,medium:`heat`,r:2.2,pts:[gn,[gn[0],gn[1],sr],[gn[0],Y,sr],[J,Y,sr]]},{id:`hw-feed-r`,medium:`hotret`,r:2.2,pts:[[J,rr,q.suction[2]],[J,ar,q.suction[2]],[or,ar,q.suction[2]],[or,q.suction[1],q.suction[2]],q.suction]},{id:`hw-dis`,medium:`hotret`,r:ne*L[1],fromStub:!0,pts:[q.riser,[q.riser[0],q.riser[1],cr],[_n[0],_n[1],cr],_n]}],X=[Sn[0]+En[0],Sn[1]+En[1],En[2]],fr=B.x+B.w,pr=[{id:`gen-cable`,medium:`cable`,r:1.6,pts:[X,[X[0],X[1],72],[fr+12,X[1],72],[fr+12,X[1],Bn.z],[fr,X[1],Bn.z]]}],mr=[...ur,...Kn,...nr,...Jn,...dr,...pr],Z=(e,t,n,r,i=0)=>[e,t,n,r,i],hr={z:10,flanged:!0,routes:mr,posts:[Z(180,U,3.5,W),Z(60,U,3.5,W),Z(20,U,3.5,W),Z(40,Y,2.2,sr,4),Z(G[0],-416,2.6,G[2]),Z(Yn[0],-405,2.6,G[2]),...[110,150,190].flatMap(e=>[Z(e,Zn,2.6,G[2]),Z(e,$n,2.6,Qn)]),Z(X[0]-20,X[1],1.6,72,1.6)]},Q=n(),gr={x:-248,y:-164,w:92,d:58,r:3},_r=0,vr=(e,t)=>Ee(e,t,`downshot`),yr=(e,t)=>Pe(e,t,7,236-_r),br=(e,t)=>v(e,t,`coolantret`,!0),xr=(e,t)=>v(e,t,`hotret`,!0),Sr=(e,t)=>ke(e,t,100,{humidifier:!1,filterGauge:!1,fanHook:`data-vfan`,stubHalf:7,motor:!0}),Cr=[E[1]-4/2,E[2]-4/2,184-4/2];function wr(e){return te(e,en)+e.plinth(Qt)+e.plinth($t)+Ue(e)+We(e,B.x)+Ke(e,Dn)+Ke(e,Cn)+w(e,On,34,`south`,{louvres:[[30,50],[100,120],[170,190]]})+w(e,kn,64,`south`,{louvres:[[60,90],[130,160],[200,230],[260,290]]})+w(e,An,64,`east`,{doors:[[60,80]]})}var Tr=e=>Je(e,tn,6,112,236,Cr.map(e=>({z:e,toX:Ze}))),Er=e=>qe(e,B,40,Bn),Dr=e=>w(e,wn,36,`south`,{louvres:[[128,158],[200,230]]}),Or=e=>w(e,Tn,36,`east`,{louvres:[[20,50]],doors:[[56,74]]});function kr({ids:e}){let t=c(),n=_(hr,Rn),r=(0,y.useMemo)(()=>wr(t),[t]),i=(0,y.useMemo)(()=>pt(t)+mt(t),[t]),a=e=>(0,Q.jsx)(s,{html:`${n.layers[e]??``}<g data-flows="${e}" data-depth="${e}"></g>`,data:{pipes:``}},`pipes-${e}`),o=[e.rtu1,e.rtu2,e.rtu3],u=[];for(let[n,r]of o.entries())u.push(n>0?(0,Q.jsx)(s,{html:bt(t,n)},`slab${n}`):null,(0,Q.jsx)(s,{html:yt(t,n)},`win${n}`),a(zn+n),(0,Q.jsx)(s,{asset:r,intro:2+n,html:Xt(t,n)},`in${n}`),n===0?(0,Q.jsx)(s,{asset:e.fanA,intro:5,html:Ht(t)},`ahu-box`):null,a(1+n),(0,Q.jsx)(s,{html:Ct(t,n)},`col${n}`));let d={chiller:(0,Q.jsx)(g,{from:sn,to:fe(R),children:(0,Q.jsx)(l,{id:e.chiller,plan:gr,intro:12,draw:ve})}),boiler:(0,Q.jsx)(g,{to:fe(z),children:(0,Q.jsx)(l,{id:e.boiler,plan:Ne,intro:13,draw:yr})}),flue:(0,Q.jsx)(s,{html:(0,y.useMemo)(()=>Tr(t),[t]),intro:13}),xfmr:(0,Q.jsx)(s,{html:(0,y.useMemo)(()=>Ge(t),[t]),intro:16}),elec:(0,Q.jsx)(s,{html:(0,y.useMemo)(()=>Er(t),[t]),intro:16}),"gen-back":(0,Q.jsx)(s,{html:(0,y.useMemo)(()=>Dr(t),[t]),intro:15}),"gen-west":(0,Q.jsx)(s,{html:(0,y.useMemo)(()=>Or(t),[t]),intro:15}),genset:(0,Q.jsx)(`g`,{className:`gen-set`,children:(0,Q.jsx)(g,{to:fe(Sn),children:(0,Q.jsx)(l,{id:e.genset,plan:xe,intro:16,draw:Se})})})};for(let[t,[n,r]]of yn.entries())d[`pump${t}`]=(0,Q.jsx)(g,{from:un,to:fe([n,r]),scale:L[t],children:(0,Q.jsx)(l,{id:t?e.hwPump:e.chwPump,plan:de,intro:14+t,draw:t?xr:br})});for(let[t,n]of an.entries())d[`ahu${t}`]=(0,Q.jsx)(g,{to:fe([n,rn]),children:(0,Q.jsx)(l,{id:t?e.fanB:e.fanA,plan:on,intro:10+t,draw:Sr})});return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(s,{html:r,data:{plinth:``}}),a(0),(0,Q.jsx)(s,{html:i}),u,(0,Q.jsx)(s,{html:wt(t)}),it.map((e,t)=>(0,Q.jsx)(g,{to:[e,at,187],scale:ot,children:(0,Q.jsx)(l,{id:o[t]??``,plan:De,intro:6+t,draw:vr})},e)),a(4),Mn.flatMap((e,t)=>[(0,Q.jsx)(`g`,{children:d[e.key]},e.key),a(5+t)])]})}var Ar=10,jr=17,Mr=.55;function Nr(e,t,n){let{svg:a,P:s,feed:c}=e,l=d(a,`[data-occ]`).map(e=>({el:e,id:t[Number(e.dataset.occ)]??ge(e)})),u=d(a,`[data-diffuser]`).map(e=>({id:ge(e),at:f(e.dataset.diffuser),streaks:ie(e,Ar,`path`,`cr-stream`),phase:0}));return{draw(t,a,d){for(let e of l)o(e.el,`data-on`,c.num(e.id,`occupied`)>0?``:null);let f=e.reducedMotion();for(let e of u){let a=le(n(e.id));e.phase=(e.phase+a*Mr*t)%1;let[c=0,l=0,u=0,p=0]=e.at;for(let[t,n]of e.streaks.entries()){if(!d||f||a<.02||n.seed>.25+a){i(n.el,`0`);continue}let m=(e.phase+n.seed*3.1)%1,h=((t+.5)/Ar-.5)*2*(p-1.5),g=(n.seed-.5)*8,_=u-.5-m*jr,v=[c+h,l+g,_],ee=[c+h,l+g,_-3],[te,ne]=r(v,s),[re,ie]=r(ee,s);o(n.el,`d`,`M${te.toFixed(1)} ${ne.toFixed(1)}L${re.toFixed(1)} ${ie.toFixed(1)}`),i(n.el,(Math.sin(Math.PI*m)*.5).toFixed(2))}}},bar(){}}}var $=e=>e>.002?6+26*le(e*2):0,Pr=e=>{let{svg:t,feed:n,ids:r}=e,i=ce(t),a=Ae(e,i),o=ye(e,i),s=he(e,i),c=Ie(e,i),l=be(e,i),u=Ce(e,i),d=e=>le(n.num(e,`speed_feedback`)/n.param(e,`rated_rpm`,1450)),f=e=>e===r.fanA?(d(r.fanA)+d(r.fanB))/2:a.airPu(e),p=[a,o,s,c,l,u,Nr(e,[r.rtu1,r.rtu2,r.rtu3],f)],m=ue(e,e=>pe(n,e,`availability`)),h=me(e,{needle:e=>o.needle(e)??c.needle(e)??0,bar:e=>p.reduce((t,n)=>t??n.bar(e),void 0)??0,alertsHigh:()=>!0,ready:()=>!0}),g=[r.rtu1,r.rtu2,r.rtu3],_=()=>s.flowPu(r.chwPump),v=()=>s.flowPu(r.hwPump),ee=()=>{let e=n.param(r.genset,`rated_power_kva`,500)*.8;return e>0?le(n.num(r.genset,`load_actual`)/e):0},te=se(e,({id:e})=>{let t=/^(?:sup|ret)(\d)-/.exec(e);if(t)return $(a.airPu(g[Number(t[1])]??``));if(e.startsWith(`hw-s`)||e.startsWith(`hw-r`))return $(/^hw-[sr]\d$/.test(e)?v()/3:v());switch(e){case`ahu-a`:return $(d(r.fanA));case`ahu-b`:return $(d(r.fanB));case`ahu-in`:return $(f(r.fanA));case`chw-dis`:case`chw-sup`:case`chw-ret`:return $(_());case`chw-sup-b`:case`chw-ret-b`:return $(_()/2);case`hw-feed-s`:case`hw-feed-r`:case`hw-dis`:return $(v());case`gen-cable`:return $(ee());default:return 0}});return{data(e){m.draw(e)},draw({sdt:e,t,introDone:n}){te.draw(e),h.draw(e,t);for(let r of p)r.draw(e,t,n)},resync(){},status:e=>_e(n,e,`availability`)}},Fr=ae(nn),Ir=ee(Fr,hr,Rn),Lr=oe({layout:{width:Zt,height:620,label:`Isometric model of the Commercial Building: a three-storey office tower with a rooftop unit on each roof curb whose supply and return ducts drop through a chase to that storey's ceiling diffusers, and a loop of radiators along the back wall; behind it the mechanical room with the chiller, the chilled-water pump and two air handlers with their fan motors; beside it the boiler with its flue stack and heating pump, the transformer, and the standby diesel generator with its feeder to the electrical room. Pipes and ducts carry chilled water, hot water and air between them. Every moving part follows live values from the running engine.`,kit:Fr,flows:Ir.flows,joints:Ir.joints,Scene:kr,compose:Pr},resolve:Re,things:ze,caption:`rooftop units · plant · standby power`,mismatch:`This floor expects the Commercial Building: three rooftop units, the chiller with its chilled-water pump, the hot-water boiler with its heating pump, two air handler fan motors and the standby diesel generator, by area and line.`,statusBasis:`availability`,Overview:p,tab:`Building`});export{Lr as buildingFloor};
|
|
1
|
+
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{c as t}from"./vendor-charts-95ykyDlI.js";import{ot as n}from"./vendor-ui-D8j69UH4.js";import{C as r,a as i,b as a,c as o,d as s,f as c,l,m as u,n as d,s as f}from"./dom-CQuChC3G.js";import{n as p,t as m}from"./by-path-e6y8DTMV.js";import{A as h,D as g,E as _,F as v,H as ee,L as te,N as ne,P as re,T as ie,V as ae,X as oe,a as se,b as ce,g as le,i as ue,j as de,k as fe,n as pe,o as me,r as he,s as ge,t as _e}from"./status-DNfdEhTs.js";import{r as ve,t as ye}from"./chiller-Jug0vRg-.js";import{n as be,o as xe,s as Se,t as Ce}from"./genset-DBpkUT9p.js";import{t as we}from"./stages-C0cErwSQ.js";import{a as Te,i as Ee,n as De,o as Oe,s as ke,t as Ae}from"./rtu-BR4DhLbE.js";import{a as je,i as Me,n as Ne,o as Pe,r as Fe,t as Ie}from"./boiler-BQwqgoVY.js";var Le=[[`rtu1`,`hvac-rtu`,`hvac`,`floor-1`,0],[`rtu2`,`hvac-rtu`,`hvac`,`floor-2`,0],[`rtu3`,`hvac-rtu`,`hvac`,`floor-3`,0],[`chiller`,`industrial-chiller`,`chilled-water`,`plant`,0],[`chwPump`,`centrifugal-pump`,`chilled-water`,`plant`,0],[`boiler`,`hot-water-boiler`,`heating`,`boiler-room`,0],[`hwPump`,`centrifugal-pump`,`heating`,`boiler-room`,0],[`fanA`,`ac-induction-motor`,`electrical`,`ahu-fans`,0],[`fanB`,`ac-induction-motor`,`electrical`,`ahu-fans`,1],[`genset`,`diesel-generator`,`electrical`,`emergency-power`,0]],Re=e=>m(Le,e);function ze(e){let t=(e,t,n)=>({key:e,assetId:e,name:t,kind:`utility`,area:n});return[t(e.rtu1,`Rooftop unit · floor 1`,`HVAC`),t(e.rtu2,`Rooftop unit · floor 2`,`HVAC`),t(e.rtu3,`Rooftop unit · floor 3`,`HVAC`),t(e.chiller,`Chiller`,`Chilled water`),t(e.chwPump,`Chilled-water pump`,`Chilled water`),t(e.boiler,`Hot-water boiler`,`Heating`),t(e.hwPump,`Heating circulation pump`,`Heating`),t(e.fanA,`AHU supply fan 1`,`Electrical`),t(e.fanB,`AHU supply fan 2`,`Electrical`),t(e.genset,`Emergency generator`,`Electrical`)]}var y=e(t(),1),b={x:-332,y:-228,w:232,d:74,r:2},Be=29,x=1,Ve={x:-86,y:-192,w:44,d:36,r:1.5},S={x:-79,y:-184,w:30,d:20,r:1.5},C=26,He=-150;function Ue(e){let{k:t,P:n,L:r,slab:i,cyl:a}=e,o=[];for(let e=b.x+Be;e<b.x+b.w-1;e+=Be)o.push(t.segment([e,b.y,x],[e,b.y+b.d,x],n));for(let e=b.y+Be;e<b.y+b.d-1;e+=Be)o.push(t.segment([b.x,e,x],[b.x+b.w,e,x],n));let s=[i(b,0,x,{tone:`mid`,inner:r(o.join(``),{tone:`faint`})},3,.3)];for(let e of[-322,-124])s.push(i({x:e,y:-216,w:22,d:10,r:1},x,5,{tone:`mid`},2,.3),i({x:e+1.6,y:-214.4,w:18.8,d:6.8,r:.6},x+5,.6,{tone:`lo`},2,0));for(let e=-316;e<b.x+b.w-8;e+=46)s.push(a(e,b.y+b.d-4,1.3,x,7,{tone:`mid`},12));return s.join(``)}function We(e,t){let{k:n,P:r,L:i,slab:a}=e,o=Ve.x+Ve.w,s=[];for(let e=o+12;e<t-4;e+=12)s.push(n.segment([e,He-3,.6],[e,He+3,.6],r));return a({x:o,y:He-3.5,w:t-o,d:7,r:.4},0,.6,{tone:`mid`,inner:i(s.join(``),{tone:`faint`})},2,.1)}function Ge(e){let{k:t,P:n,L:r,slab:i,cyl:a}=e,{x:o,y:s,w:c,d:l}=S,u=1.5,d=[];for(let e=1;e<12;e++)d.push(t.segment([o+3+e*2,s+l+5,u+4],[o+3+e*2,s+l+5,C-4],n));let f=[i(Ve,0,u,{tone:`mid`},3,.3),i(S,u,C,{tone:`mid`},2,.5),i({x:o+3,y:s+l,w:c-6,d:5,r:.6},u+3,C-7,{tone:`mid`,inner:r(d.join(``),{tone:`faint`})},2,.2),i({x:o-.8,y:s-.8,w:c+1.6,d:l+1.6,r:1.5},u+C,1.4,{tone:`mid`},2,.2)];for(let e of[o+7,o+15,o+23])f.push(a(e,s+5,1.4,u+C+1.4,7,{tone:`mid`},12),a(e,s+5,2.2,u+C+1.4,1.4,{tone:`mid`},12));for(let e of[s+5,s+10,s+15])f.push(a(o+c-3,e,1,u+C+1.4,3,{tone:`lo`},10));return f.join(``)}function Ke(e,t,n=1.6){let{k:r,P:i,L:a,slab:o,screws:s}=e;return o(t,0,n,{tone:`mid`},3,.4)+a(r.planOutline(r.insetPlan(t,3),n,i,3),{tone:`faint`})+s(r.corners(t,4),n)}function w(e,t,n,r,{louvres:i=[],doors:a=[]}={}){let{k:o,P:s,L:c,slab:l}=e,u=[l(t,0,n,{tone:`mid`},2,.3),l({x:t.x-.6,y:t.y-.6,w:t.w+1.2,d:t.d+1.2,r:.3},n,1.4,{tone:`mid`},2,.2)],d=r===`south`?e.front(t.y+t.d):o.sideMatrix([t.x+t.w,t.y+t.d],0,s,`right`),f=[];for(let[e,t]of i){let[r,i]=[e,t];f.push(`<path class="cr-grille" d="M${r} ${-(n-9)}H${i}V-13H${r}Z"/>`);let a=[];for(let e=16;e<n-9;e+=3)a.push(`M${r+1} ${-e}H${i-1}`);f.push(c(a.join(``),{tone:`lo`}))}for(let[e,t]of a){let[r,i]=[e,t];f.push(`<path class="cr-door" d="M${r} -1H${i}V${-(n-16)}H${r}Z"/>`),f.push(c(`M${r-1.2} 0V${-(n-14.8)}H${i+1.2}V0M${r-1.2} -1H${i+1.2}`,{tone:`lo`})),f.push(`<circle class="sf-screw" cx="${i-2.4}" cy="${-(n/2-4)}" r="0.7"/>`)}return f.length&&u.push(`<g transform="${d}">${f.join(``)}</g>`),u.join(``)}function qe(e,t,n,r){let{k:i,P:a,L:o,slab:s,screws:c}=e,l=t.x+t.w,u=[w(e,t,n,`south`,{doors:[[t.x+8,t.x+22]],louvres:[[t.x+30,t.x+46]]})];u.push(s({x:t.x+t.w-18,y:t.y+8,w:10,d:8,r:.8},n+1.4,4,{tone:`mid`},2,.3));let d=i.sideMatrix([l,t.y+t.d],0,a,`right`),f=t.y+t.d-r.y;return u.push(`<g transform="${d}"><path class="sf-plate" d="M${f-7} ${-(r.z+7)}H${f+7}V${-(r.z-7)}H${f-7}Z"/>${o(`M${f-7} ${-(r.z+7)}H${f+7}V${-(r.z-7)}H${f-7}Z`,{tone:`lo`})}</g>`,c([[l+.05,r.y-5.6],[l+.05,r.y+5.6]],r.z+5.6),c([[l+.05,r.y-5.6],[l+.05,r.y+5.6]],r.z-5.6)),u.join(``)}function Je(e,[t,n],r,i,a,o){let{k:s,P:c,L:l,slab:u,cyl:d}=e,f=[],p=[];for(let e=i+48;e<a-12;e+=48)p.push(e);let m=p.map(e=>s.sideArc(t,n,r,e,c,24)).join(``);f.push(d(t,n,r,i,a-i,{tone:`mid`,inner:l(m,{tone:`faint`})},28));for(let e of p)f.push(d(t,n,r+1.2,e-.8,1.6,{tone:`mid`},28));for(let e of o)f.push(u({x:e.toX,y:n-.9,w:t-r-e.toX,d:1.8,r:.3},e.z-.9,1.8,{tone:`mid`},2,.1),u({x:e.toX-1.2,y:n-3.5,w:1.2,d:7,r:.3},e.z-3.5,7,{tone:`mid`},2,.1),d(t,n,r+.9,e.z-1.1,2.2,{tone:`mid`},28));for(let e of[0,2.1,4.2])f.push(d(t+Math.cos(e)*(r-1.4),n+Math.sin(e)*(r-1.4),.5,a,3,{tone:`lo`,crease:`none`},8));return f.push(d(t,n,r+2.2,a+3,1.2,{tone:`mid`},28)),f.join(``)}var T={x:-300,y:-268,w:290,d:32,r:.6},E=[4,64,124],D=3,Ye=6,O={x:-334,y:-268,w:34,d:32,r:.6},k=e=>(E[e+1]??184)-4,Xe={x:O.x-3,y:T.y-3,w:T.w+O.w+3+7,d:T.d+3+8,r:1.5},A={x:T.x+D,y:T.y+D,w:T.w-D,d:T.d-D,r:0},Ze=A.x+A.w,Qe=A.y+A.d,$e=[-247,-185,-123,-61,-13],et=2.2,j=2.6,M=E[0],N=-247,tt=-255,nt=11,rt=e=>k(e)-nt,it=[-246,-162,-78],at=-251,ot=.8,st=[46*ot,20*ot],ct=e=>[(it[e]??0)-9,(it[e]??0)+9],lt=e=>{let[t,n]=ct(e);return{x:t-5,y:tt-4.5,w:n-t+10,d:9,r:.3}},ut=e=>it.map((e,t)=>t).filter(t=>t<e),dt=4,P=1.6,ft=.6;function pt(e){let{k:t,P:n,L:r,slab:i}=e;return i(Xe,0,M,{tone:`mid`,inner:r(t.planOutline({x:T.x-.5,y:T.y-.5,w:T.w+1,d:T.d+1,r:0},M,n,2),{tone:`faint`})},4,.5)}function mt(e){let{k:t,P:n,L:r,S:i}=e,a=184+Ye-M,o=(e,r,i)=>t.segment([r[0],r[1],E[e]??0],[i[0],i[1],E[e]??0],n),s={x:T.x,y:T.y,w:T.w,d:D,r:.3},c={x:T.x,y:T.y+D,w:D,d:T.d-D,r:.3};return[i(t.slabOf(s,M,a,n,2,.3),{tone:`mid`,inner:r([1,2].map(e=>o(e,[s.x,s.y+s.d],[s.x+s.w,s.y+s.d])).join(``),{tone:`faint`})}),i(t.slabOf(c,M,a,n,2,.3),{tone:`mid`}),ht(e)].join(``)}function ht(e){let{k:t,P:n,L:r,S:i,front:a}=e,o=O.y+O.d,s=O.x+O.w/2,c=[],l=[];for(let[e,t]of E.entries()){for(let e of[s-8,s+.4])c.push(`<path class="cr-door" d="M${e} ${-(t+1)}h7.6v-23h-7.6Z"/>`);l.push(`M${s-9} ${-t}V${-(t+25)}H${s+9}V${-t}`),c.push(`<path class="cr-grille" d="M${s-2.4} ${-(t+28)}h4.8v-2.4h-4.8Z"/>`),e<E.length-1&&l.push(`M${O.x} ${-(k(e)+4)}H${O.x+O.w}`)}return i(t.slabOf(O,M,184-M,n,2,.4),{tone:`mid`})+`<g transform="${a(o)}">${c.join(``)}${r(l.join(``),{tone:`lo`})}</g>`}var gt=Array.from({length:6},(e,t)=>[-284+t*36,-284+t*36+32]),_t=21,vt=8;function yt(e,t){let{k:n,P:r,L:i,front:a}=e,o=(E[t]??0)+_t,s=k(t)-vt,c=(e,n)=>`<path class="bd-win bt-pane" data-occ="${t}" d="M${e} ${-s}H${n}V${-o}H${e}Z"/>`,l=(e,t)=>`M${e-1} ${-(o-1.6)}H${t+1}M${(e+t)/2} ${-s}V${-o}`,u=gt.map(([e,t])=>c(e,t)).join(``),d=gt.map(([e,t])=>l(e,t)).join(``),f=n.sideMatrix([T.x+D,T.y+T.d],0,r,`right`);return`<g transform="${a(T.y+D)}">${u}${i(d,{tone:`lo`})}</g><g transform="${f}">${c(4,20)}${i(l(4,20),{tone:`lo`})}</g>`}function bt(e,t){let{k:n,P:r,L:i,slab:a}=e,o=(E[t]??0)-4,s=[a(A,o,4,{tone:`mid`,inner:i(n.segment([A.x,A.y+A.d,o+1.4],[A.x+A.w,A.y+A.d,o+1.4],r),{tone:`faint`})},2,.4)],c=E[t]??0;for(let e of ut(t)){let t=lt(e);s.push(a({...t,d:P},c,dt,{tone:`mid`},2,.2),a({...t,w:P},c,dt,{tone:`mid`},2,.2))}return s.join(``)}function xt(e,t,n,r){let{cyl:i}=e,a=lt(t),o=(E[n]??0)+dt,s=r===`back`?a.y+ft+.4:a.y+a.d-ft-.4;return[a.x+.8,a.x+a.w-.8].map(e=>i(e,s,ft,o,k(n)-o,{tone:`mid`,crease:`none`},8))}function St(e,t){return ut(t).flatMap(n=>xt(e,n,t,`back`)).join(``)}function Ct(e,t){let{cyl:n,slab:r}=e,i=E[t]??0,a=k(t)-i,o=Qe-j,s=$e.map(e=>n(e,o,et,i,a,{tone:`mid`},14));s.push(n(Ze-j,-251,et,i,a,{tone:`mid`},14));for(let n of ut(t)){let a=lt(n);s.push(r({...a,y:a.y+a.d-P,d:P},i,dt,{tone:`mid`},2,.2),r({...a,x:a.x+a.w-P,w:P},i,dt,{tone:`mid`},2,.2),...xt(e,n,t,`front`))}return s.join(``)}function wt(e){let{k:t,P:n,L:r,S:i,slab:a}=e,o=[.25,.5,.75].map(e=>t.segment([A.x+A.w*e,A.y,184],[A.x+A.w*e,A.y+A.d,184],n)).join(``),s=A.y+A.d,c=A.x+A.w;return[i(t.slabOf(A,180,4,n,2,.4),{tone:`mid`,inner:r(o,{tone:`faint`})}),a({x:A.x,y:s-j,w:A.w,d:j,r:.3},184,Ye-1,{tone:`mid`},2,.3),a({x:c-j,y:A.y,w:j,d:A.d-j,r:.3},184,Ye-1,{tone:`mid`},2,.3),...it.map(e=>a({x:e-st[0]-1.5,y:at-st[1]-1.5,w:st[0]*2+3,d:st[1]*2+3,r:.6},184,3,{tone:`mid`},2,.2)),a({x:O.x+4,y:O.y+8,w:O.w-8,d:O.d-16,r:.6},184,14,{tone:`mid`},2,.3)].join(``)}var Tt={w:16,d:10,h:4},Et=18,Dt=1.8,Ot=[[-190,-100],[-120,-65],[-120,-204]],F={x:-24,y:N,w:16,d:14,h:12,top:32},kt={w:10,d:8,h:4},At=-262,I=-264.4,jt=5.5,Mt=1.5,Nt=1.1,Pt=[-282,-246,-210,-174,-138,-102],Ft=8.5,It=-292,Lt=(e,t)=>[e,N,k(t)-Et+Dt],Rt=[F.x,F.y,F.top+Dt],zt=e=>[ct(e)[1],tt,k(e)-Et+Dt];function Bt(e,t,n,r,i,a,o,s,c){let{k:l,P:u,L:d,D:f,slab:p,cyl:m,at:h}=e,g=o-a,_=[[t-r/2+1.5,n-i/2+1.5],[t+r/2-1.5,n-i/2+1.5],[t-r/2+1.5,n+i/2-1.5],[t+r/2-1.5,n+i/2-1.5]].map(([e=0,t=0])=>m(e,t,.5,o,s-o,{tone:`lo`,crease:`none`},8)),v=[.3,.55,.8].map(e=>l.segment([t-r/2+1.5,n+i/2,g+a*e],[t+r/2-1.5,n+i/2,g+a*e],u)).join(``),ee=[];for(let e=0;e<6;e++)ee.push([t-r/2+2+e*(r-4)/5,n+i/2,g+1.2]);return[..._,p({x:t-r/2,y:n-i/2,w:r,d:i,r:.8},g,a,{tone:`mid`,inner:d(v,{tone:`faint`})},2,.3),m(t,n,Math.min(5.2,i/2-1.2),o,Dt,{tone:`mid`},24),f(ee.map(e=>h(e)),{size:.3}),c?`<g data-diffuser="${t},${n},${g},${r/2}"></g>`:``].join(``)}var Vt=(e,t,n)=>Bt(e,t,N,Tt.w,Tt.d,Tt.h,k(n)-Et,k(n),!0),Ht=e=>Bt(e,F.x,F.y,F.w,F.d,F.h,F.top,k(0),!0),Ut=(e,t)=>Bt(e,ct(t)[1],tt,kt.w,kt.d,kt.h,k(t)-Et,k(t),!1);function Wt(e,t,n){let{k:r,P:i,L:a,slab:o}=e,s=n+11,c=s+Ft,l=-265,u=Array.from({length:7},(e,n)=>r.segment([t+3.5+n*3.5,l+3.6,s+1],[t+3.5+n*3.5,l+3.6,c-1],i)).join(``);return[...[t+5,t+28-5].map(e=>o({x:e-1,y:-265,w:2,d:.9,r:.2},s+2,4,{tone:`lo`},2,0)),o({x:t,y:l,w:28,d:3.6,r:.5},s,Ft,{tone:`mid`,inner:a(u,{tone:`faint`})},2,.3)].join(``)}function Gt(e,t,n){let{G:r,P:i,S:a}=e,o=r.frameAlong([It,t,n],[-1,0,0]);return a(r.disc(0,1.4,Nt+.7,o,i),{tone:`mid`})}function Kt(e,t,n,r,i){let{slab:a,cyl:o,front:s}=e,c=r+8,l=[a({x:t+.8,y:n+.6,w:1.2,d:6.8,r:.2},r,8,{tone:`lo`},2,0),a({x:t+22-2,y:n+.6,w:1.2,d:6.8,r:.2},r,8,{tone:`lo`},2,0),a({x:t,y:n,w:22,d:8,r:.6},c,1.4,{tone:`mid`},2,.3),o(t+22/2,n+8*.4,1.1,c+1.4,2.4,{tone:`lo`,crease:`none`},10),a({x:t+22/2-4.2,y:n+8*.4-.5,w:8.4,d:1,r:.3},c+3.8,5.4,{tone:`lo`},2,0)],u=n+8*.4+.5;return l.push(`<g transform="${s(u)}"><path class="bd-win" data-occ="${i}" d="M${t+22/2-3.6} ${-(c+4.2)}h7.2v-4.4h-7.2Z"/></g>`),l.join(``)}function qt(e,t,n,r){let{slab:i,cyl:a}=e;return[a(t,n,3,r,.8,{tone:`lo`},14),a(t,n,.6,r+.8,3.6,{tone:`lo`,crease:`none`},8),a(t,n,3.2,r+4.4,1.4,{tone:`mid`},16),i({x:t-3,y:n+2.6,w:6,d:.9,r:.3},r+5.6,5.4,{tone:`mid`},2,.2)].join(``)}function Jt(e,t,n,r){let{slab:i}=e;return[Kt(e,t,-249,n,r),Kt(e,t+25,-249,n,r),i({x:t+22.6,y:-249.5,w:1,d:7,r:.2},n+1.2,12,{tone:`mid`},2,.2),qt(e,t+11,-239.6,n),qt(e,t+36,-239.6,n)].join(``)}function Yt(e,t){let{slab:n,cyl:r}=e,i=[],a=-250;i.push(n({x:a,y:-251,w:46,d:8,r:1},t,10,{tone:`mid`},3,.4),n({x:a+36,y:-243,w:10,d:7,r:1},t,10,{tone:`mid`},3,.4),n({x:a-.8,y:-251.8,w:47.6,d:9.6,r:1},t+10,1.4,{tone:`mid`},3,.2),n({x:a+35.2,y:-243.8,w:11.6,d:8.6,r:1},t+10,1.4,{tone:`mid`},3,.2));for(let e of[-170,-144])i.push(n({x:e,y:-250,w:20,d:6,r:.8},t+3.2,3,{tone:`mid`},2,.3),n({x:e,y:-252,w:20,d:2,r:.4},t+6.2,6,{tone:`mid`},2,.2),r(e+2.4,-245.4,.9,t,3.2,{tone:`lo`,crease:`none`},8),r(e+17.6,-245.4,.9,t,3.2,{tone:`lo`,crease:`none`},8));return i.join(``)}function Xt(e,t){let n=E[t]??0,r=Pt.map(t=>Wt(e,t,n));r.push(Gt(e,At,n+jt),Gt(e,I,n+Mt));let i=Ot[t]??[];r.push(St(e,t));for(let n of i)r.push(Vt(e,n,t));if(r.push(Ut(e,t)),t===0)r.push(Yt(e,n));else for(let a of i)r.push(Jt(e,a-23.5,n,t));return r.join(``)}var Zt=1e3,Qt={x:-352,y:-286,w:652,d:170,r:8},$t={x:-14,y:-516,w:314,d:220,r:8},en={x:-374,y:-538,w:690,d:444,r:16},tn=[34,-242],nn=a([...u(en,-21,-14),...u(Qt,-14,20),...u($t,-14,20),...u(Xe,0,214),...u({x:26,y:-250,w:16,d:16,r:0},0,244)],Zt,620,{pad:22,azimuth:60}),rn=-325,an=[70,205],on=Te(100,!0),sn=[-202,-135,0],cn=[-34,36.6,40],ln=[-20,36.6,40],un=[94,-130,0],L=[.55,.5],dn=-385,fn=-462,pn=(e,t)=>[(e[0]-un[0])*t,(e[1]-un[1])*t,e[2]*t],mn=e=>{let t=an[e],n=Oe(100,7),r=e=>[t+e[0],rn+e[1],e[2]];return{supply:r(n.chwSupply),ret:r(n.chwReturn),discharge:r(n.discharge)}},hn=[mn(0),mn(1)],R=[hn[0].supply[0]-ln[0],fn],z=[tn[0]-Me[0],tn[1]],gn=[z[0]+je[0],z[1]+je[1],je[2]],_n=[z[0]+Fe[0],z[1]+Fe[1],Fe[2]],vn=(e,t,n)=>[e-pn(h,L[n])[0],t],yn=[vn(R[0]+cn[0],dn,0),vn(_n[0],-204,1)],bn=(e,t)=>{let[n,r]=yn[e]??[0,0],[i,a,o]=pn(t,L[e]);return[n+i,r+a,o]},xn=[{suction:bn(0,re),riser:bn(0,h)},{suction:bn(1,re),riser:bn(1,h)}],Sn=[190,-150],B={x:24,y:-160,w:56,d:44,r:1},Cn={x:108,y:-192,w:164,d:72,r:2},wn={x:108,y:-194,w:164,d:3,r:.3},Tn={x:108,y:-194,w:3,d:76,r:.3},En=[-49,0,60.8],Dn={x:0,y:-272,w:252,d:76,r:2},On={x:2,y:-270,w:250,d:3,r:.3},kn={x:-10,y:-512,w:306,d:4,r:.3},An={x:-12,y:-512,w:4,d:214,r:.3},jn=we([...yn.map((e,t)=>({key:`pump${t}`,at:e,h:45*L[t]})),{key:`chiller`,at:R,h:56},{key:`boiler`,at:z,h:je[2]-8},{key:`flue`,at:tn,h:236},...an.map((e,t)=>({key:`ahu${t}`,at:[e,rn],h:36})),{key:`xfmr`,at:[S.x+S.w/2,S.y+S.d/2],h:36},{key:`genset`,at:Sn,h:126},{key:`elec`,at:[B.x+B.w/2,B.y+B.d/2],h:46},{key:`gen-back`,at:[wn.x+wn.w/2,wn.y],h:36},{key:`gen-west`,at:[Tn.x,Tn.y+Tn.d/2],h:36}],nn),Mn=jn.order,Nn=E.length,Pn=([e,t])=>e<14&&t>-269&&t<-232,Fn=([e,t])=>e<-8&&t<-269,In=([e,t])=>e<-8&&t<-256.5,Ln=e=>E.filter((t,n)=>n>0&&e>=t).length,Rn={layer:e=>Fn(e)?0:Pn(e)&&e[2]>=184?Nn+1:Pn(e)&&In(e)?zn+Ln(e[2]):Pn(e)?1+Ln(e[2]):Nn+1+jn.depth.layer(e),glide:()=>!0},zn=Nn+1+Mn.length+1,Bn={y:Sn[1],z:26};function Vn(e,t){return[e,...[...E].filter(n=>n>0&&n<e&&n>t).sort((e,t)=>t-e),t]}var Hn=3.2,Un=2.2,Wn=180;function Gn(e,t,n,r){let i=Vn(Wn,n);return i.slice(0,-1).map((n,a)=>{let o=[[t,tt,n],[t,tt,i[a+1]??0]];return a===i.length-2&&o.push(...r),{id:`${e}${a}`,medium:`duct`,r:Hn,bend:2,bare:[a===0,!1],pts:o}})}var Kn=[0,1,2].flatMap(e=>{let t=rt(e),[n,r]=ct(e),i=[...Ot[e]??[]].sort((e,t)=>Math.abs(e-n)-Math.abs(t-n)),a=i[i.length-1]??n,o=i.slice(0,-1).map((n,r)=>({id:`sup${e}-n${r}`,medium:`duct`,r:Un,pts:[[n,N,t],Lt(n,e)]}));return[...Gn(`sup${e}-`,n,t,[[n,N,t],[a,N,t],Lt(a,e)]),...o,...Gn(`ret${e}-`,r,zt(e)[2],[])]}),[V,H]=hn,U=-279,qn=Rt[0],W=40,Jn=[{id:`ahu-a`,medium:`duct`,r:3.5,pts:[V.discharge,[V.discharge[0],U,V.discharge[2]],[V.discharge[0],U,W]]},{id:`ahu-b`,medium:`duct`,r:3.5,pts:[H.discharge,[H.discharge[0],U,H.discharge[2]],[H.discharge[0],U,W],[qn,U,W],[qn,-266.5,W]]},{id:`ahu-in`,medium:`duct`,r:3.5,pts:[[qn,-265,W],[qn,Rt[1],W],Rt]}],G=[R[0]+ln[0],R[1]+ln[1],ln[2]],Yn=[R[0]+cn[0],R[1]+cn[1],cn[2]],[K,q]=xn,Xn=46,Zn=-360,Qn=K.suction[2],$n=K.suction[1],er=V.supply[1],tr=e=>[[e,er,Xn],[e,$n,Xn],[e,$n,Qn]],nr=[{id:`chw-dis`,medium:`coolantret`,r:ne*L[0],fromStub:!0,pts:[K.riser,[K.riser[0],K.riser[1],Yn[2]],Yn]},{id:`chw-sup`,medium:`coolant`,r:2.6,pts:[G,[G[0],er,G[2]],V.supply]},{id:`chw-sup-b`,medium:`coolant`,r:2.6,pts:[[G[0],Zn,G[2]],[H.supply[0],Zn,G[2]],[H.supply[0],er,G[2]],H.supply]},{id:`chw-ret-b`,medium:`coolantret`,r:2.6,pts:[H.ret,...tr(H.ret[0]),K.suction]},{id:`chw-ret`,medium:`coolantret`,r:2.6,pts:[V.ret,...tr(V.ret[0])]}],J=-6,Y=At,rr=-258,ir=-18,ar=-180,or=q.suction[0]+40,sr=70,cr=_n[2]+20,lr=(e,t,n,r,i,a)=>Vn(a,i).slice(0,-1).map((o,s,c)=>{let l=s===c.length-1?i:Vn(a,i)[s+1]??i;return{id:`${e}${s}`,medium:n,r,blind:[s===c.length-1,s===0],pts:[[J,t,l],[J,t,o]]}}),ur=E.flatMap((e,t)=>{let n=e+jt,r=e+Mt;return[{id:`hw-s${t}`,medium:`heat`,r:Nt,blind:[!1,!0],pts:[[J,Y,n],[It,Y,n]]},{id:`hw-r${t}`,medium:`hotret`,r:Nt,blind:[!0,!1],pts:[[It,I,r],[ir,I,r],[ir,rr,r],[J,rr,r]]},...Pt.flatMap((i,a)=>[{id:`hw-st${t}-${a}`,medium:`heat`,r:1,bare:[!1,!0],pts:[[i+28-3,Y,n],[i+28-3,Y,e+11]]},{id:`hw-rt${t}-${a}`,medium:`hotret`,r:1,bare:[!0,!1],pts:[[i+3,I,e+11],[i+3,I,r]]}])]}),dr=[...lr(`hw-sr`,Y,`heat`,2.2,5,E[2]+jt+6),...lr(`hw-rr`,rr,`hotret`,2.2,3,E[2]+Mt+6),{id:`hw-feed-s`,medium:`heat`,r:2.2,pts:[gn,[gn[0],gn[1],sr],[gn[0],Y,sr],[J,Y,sr]]},{id:`hw-feed-r`,medium:`hotret`,r:2.2,pts:[[J,rr,q.suction[2]],[J,ar,q.suction[2]],[or,ar,q.suction[2]],[or,q.suction[1],q.suction[2]],q.suction]},{id:`hw-dis`,medium:`hotret`,r:ne*L[1],fromStub:!0,pts:[q.riser,[q.riser[0],q.riser[1],cr],[_n[0],_n[1],cr],_n]}],X=[Sn[0]+En[0],Sn[1]+En[1],En[2]],fr=B.x+B.w,pr=[{id:`gen-cable`,medium:`cable`,r:1.6,pts:[X,[X[0],X[1],72],[fr+12,X[1],72],[fr+12,X[1],Bn.z],[fr,X[1],Bn.z]]}],mr=[...ur,...Kn,...nr,...Jn,...dr,...pr],Z=(e,t,n,r,i=0)=>[e,t,n,r,i],hr={z:10,flanged:!0,routes:mr,posts:[Z(180,U,3.5,W),Z(60,U,3.5,W),Z(20,U,3.5,W),Z(40,Y,2.2,sr,4),Z(G[0],-416,2.6,G[2]),Z(Yn[0],-405,2.6,G[2]),...[110,150,190].flatMap(e=>[Z(e,Zn,2.6,G[2]),Z(e,$n,2.6,Qn)]),Z(X[0]-20,X[1],1.6,72,1.6)]},Q=n(),gr={x:-248,y:-164,w:92,d:58,r:3},_r=0,vr=(e,t)=>Ee(e,t,`downshot`),yr=(e,t)=>Pe(e,t,7,236-_r),br=(e,t)=>v(e,t,`coolantret`,!0),xr=(e,t)=>v(e,t,`hotret`,!0),Sr=(e,t)=>ke(e,t,100,{humidifier:!1,filterGauge:!1,fanHook:`data-vfan`,stubHalf:7,motor:!0}),Cr=[E[1]-4/2,E[2]-4/2,184-4/2];function wr(e){return te(e,en)+e.plinth(Qt)+e.plinth($t)+Ue(e)+We(e,B.x)+Ke(e,Dn)+Ke(e,Cn)+w(e,On,34,`south`,{louvres:[[30,50],[100,120],[170,190]]})+w(e,kn,64,`south`,{louvres:[[60,90],[130,160],[200,230],[260,290]]})+w(e,An,64,`east`,{doors:[[60,80]]})}var Tr=e=>Je(e,tn,6,112,236,Cr.map(e=>({z:e,toX:Ze}))),Er=e=>qe(e,B,40,Bn),Dr=e=>w(e,wn,36,`south`,{louvres:[[128,158],[200,230]]}),Or=e=>w(e,Tn,36,`east`,{louvres:[[20,50]],doors:[[56,74]]});function kr({ids:e}){let t=c(),n=_(hr,Rn),r=(0,y.useMemo)(()=>wr(t),[t]),i=(0,y.useMemo)(()=>pt(t)+mt(t),[t]),a=e=>(0,Q.jsx)(s,{html:`${n.layers[e]??``}<g data-flows="${e}" data-depth="${e}"></g>`,data:{pipes:``}},`pipes-${e}`),o=[e.rtu1,e.rtu2,e.rtu3],u=[];for(let[n,r]of o.entries())u.push(n>0?(0,Q.jsx)(s,{html:bt(t,n)},`slab${n}`):null,(0,Q.jsx)(s,{html:yt(t,n)},`win${n}`),a(zn+n),(0,Q.jsx)(s,{asset:r,intro:2+n,html:Xt(t,n)},`in${n}`),n===0?(0,Q.jsx)(s,{asset:e.fanA,intro:5,html:Ht(t)},`ahu-box`):null,a(1+n),(0,Q.jsx)(s,{html:Ct(t,n)},`col${n}`));let d={chiller:(0,Q.jsx)(g,{from:sn,to:fe(R),children:(0,Q.jsx)(l,{id:e.chiller,plan:gr,intro:12,draw:ve})}),boiler:(0,Q.jsx)(g,{to:fe(z),children:(0,Q.jsx)(l,{id:e.boiler,plan:Ne,intro:13,draw:yr})}),flue:(0,Q.jsx)(s,{html:(0,y.useMemo)(()=>Tr(t),[t]),intro:13}),xfmr:(0,Q.jsx)(s,{html:(0,y.useMemo)(()=>Ge(t),[t]),intro:16}),elec:(0,Q.jsx)(s,{html:(0,y.useMemo)(()=>Er(t),[t]),intro:16}),"gen-back":(0,Q.jsx)(s,{html:(0,y.useMemo)(()=>Dr(t),[t]),intro:15}),"gen-west":(0,Q.jsx)(s,{html:(0,y.useMemo)(()=>Or(t),[t]),intro:15}),genset:(0,Q.jsx)(`g`,{className:`gen-set`,children:(0,Q.jsx)(g,{to:fe(Sn),children:(0,Q.jsx)(l,{id:e.genset,plan:xe,intro:16,draw:Se})})})};for(let[t,[n,r]]of yn.entries())d[`pump${t}`]=(0,Q.jsx)(g,{from:un,to:fe([n,r]),scale:L[t],children:(0,Q.jsx)(l,{id:t?e.hwPump:e.chwPump,plan:de,intro:14+t,draw:t?xr:br})});for(let[t,n]of an.entries())d[`ahu${t}`]=(0,Q.jsx)(g,{to:fe([n,rn]),children:(0,Q.jsx)(l,{id:t?e.fanB:e.fanA,plan:on,intro:10+t,draw:Sr})});return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(s,{html:r,data:{plinth:``}}),a(0),(0,Q.jsx)(s,{html:i}),u,(0,Q.jsx)(s,{html:wt(t)}),it.map((e,t)=>(0,Q.jsx)(g,{to:[e,at,187],scale:ot,children:(0,Q.jsx)(l,{id:o[t]??``,plan:De,intro:6+t,draw:vr})},e)),a(4),Mn.flatMap((e,t)=>[(0,Q.jsx)(`g`,{children:d[e.key]},e.key),a(5+t)])]})}var Ar=10,jr=17,Mr=.55;function Nr(e,t,n){let{svg:a,P:s,feed:c}=e,l=d(a,`[data-occ]`).map(e=>({el:e,id:t[Number(e.dataset.occ)]??ge(e)})),u=d(a,`[data-diffuser]`).map(e=>({id:ge(e),at:f(e.dataset.diffuser),streaks:ie(e,Ar,`path`,`cr-stream`),phase:0}));return{draw(t,a,d){for(let e of l)o(e.el,`data-on`,c.num(e.id,`occupied`)>0?``:null);let f=e.reducedMotion();for(let e of u){let a=le(n(e.id));e.phase=(e.phase+a*Mr*t)%1;let[c=0,l=0,u=0,p=0]=e.at;for(let[t,n]of e.streaks.entries()){if(!d||f||a<.02||n.seed>.25+a){i(n.el,`0`);continue}let m=(e.phase+n.seed*3.1)%1,h=((t+.5)/Ar-.5)*2*(p-1.5),g=(n.seed-.5)*8,_=u-.5-m*jr,v=[c+h,l+g,_],ee=[c+h,l+g,_-3],[te,ne]=r(v,s),[re,ie]=r(ee,s);o(n.el,`d`,`M${te.toFixed(1)} ${ne.toFixed(1)}L${re.toFixed(1)} ${ie.toFixed(1)}`),i(n.el,(Math.sin(Math.PI*m)*.5).toFixed(2))}}},bar(){}}}var $=e=>e>.002?6+26*le(e*2):0,Pr=e=>{let{svg:t,feed:n,ids:r}=e,i=ce(t),a=Ae(e,i),o=ye(e,i),s=he(e,i),c=Ie(e,i),l=be(e,i),u=Ce(e,i),d=e=>le(n.num(e,`speed_feedback`)/n.param(e,`rated_rpm`,1450)),f=e=>e===r.fanA?(d(r.fanA)+d(r.fanB))/2:a.airPu(e),p=[a,o,s,c,l,u,Nr(e,[r.rtu1,r.rtu2,r.rtu3],f)],m=ue(e,e=>pe(n,e,`availability`)),h=me(e,{needle:e=>o.needle(e)??c.needle(e)??0,bar:e=>p.reduce((t,n)=>t??n.bar(e),void 0)??0,alertsHigh:()=>!0,ready:()=>!0}),g=[r.rtu1,r.rtu2,r.rtu3],_=()=>s.flowPu(r.chwPump),v=()=>s.flowPu(r.hwPump),ee=()=>{let e=n.param(r.genset,`rated_power_kva`,500)*.8;return e>0?le(n.num(r.genset,`load_actual`)/e):0},te=se(e,({id:e})=>{let t=/^(?:sup|ret)(\d)-/.exec(e);if(t)return $(a.airPu(g[Number(t[1])]??``));if(e.startsWith(`hw-s`)||e.startsWith(`hw-r`))return $(/^hw-[sr]\d$/.test(e)?v()/3:v());switch(e){case`ahu-a`:return $(d(r.fanA));case`ahu-b`:return $(d(r.fanB));case`ahu-in`:return $(f(r.fanA));case`chw-dis`:case`chw-sup`:case`chw-ret`:return $(_());case`chw-sup-b`:case`chw-ret-b`:return $(_()/2);case`hw-feed-s`:case`hw-feed-r`:case`hw-dis`:return $(v());case`gen-cable`:return $(ee());default:return 0}});return{data(e){m.draw(e)},draw({sdt:e,t,introDone:n}){te.draw(e),h.draw(e,t);for(let r of p)r.draw(e,t,n)},resync(){},status:e=>_e(n,e,`availability`)}},Fr=ae(nn),Ir=ee(Fr,hr,Rn),Lr=oe({layout:{width:Zt,height:620,label:`Isometric model of the Commercial Building: a three-storey office tower with a rooftop unit on each roof curb whose supply and return ducts drop through a chase to that storey's ceiling diffusers, and a loop of radiators along the back wall; behind it the mechanical room with the chiller, the chilled-water pump and two air handlers with their fan motors; beside it the boiler with its flue stack and heating pump, the transformer, and the standby diesel generator with its feeder to the electrical room. Pipes and ducts carry chilled water, hot water and air between them. Every moving part follows live values from the running engine.`,kit:Fr,flows:Ir.flows,joints:Ir.joints,Scene:kr,compose:Pr},resolve:Re,things:ze,caption:`rooftop units · plant · standby power`,mismatch:`This floor expects the Commercial Building: three rooftop units, the chiller with its chilled-water pump, the hot-water boiler with its heating pump, two air handler fan motors and the standby diesel generator, by area and line.`,statusBasis:`availability`,Overview:p,tab:`Building`});export{Lr as buildingFloor};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ot as e}from"./vendor-ui-D8j69UH4.js";import{t}from"./utils-XFKvwlFT.js";import{a as n}from"./use-engine-command-mutation-
|
|
1
|
+
import{ot as e}from"./vendor-ui-D8j69UH4.js";import{t}from"./utils-XFKvwlFT.js";import{a as n}from"./use-engine-command-mutation-DrMOfYty.js";var r=e(),i=`inline-flex items-center gap-1 rounded-[var(--miravo-radius-tight)] outline-none transition-colors hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,a={live:`bg-success shadow-[0_0_0_1px_color-mix(in_srgb,var(--success)_50%,transparent),0_0_12px_color-mix(in_srgb,var(--success)_42%,transparent)]`,idle:`bg-warning/85 shadow-[0_0_0_1px_color-mix(in_srgb,var(--warning)_50%,transparent),0_0_12px_color-mix(in_srgb,var(--warning)_38%,transparent)]`,fault:`bg-destructive shadow-[0_0_0_1px_color-mix(in_srgb,var(--destructive)_50%,transparent),0_0_12px_color-mix(in_srgb,var(--destructive)_38%,transparent)]`,off:`bg-muted-foreground/55`};function o({tone:e,children:n,className:i}){return(0,r.jsxs)(`div`,{className:t(`flex shrink-0 items-center gap-2 rounded-[var(--miravo-radius-pill)] border border-border/60 bg-background/60 px-2.5 py-1 backdrop-blur-sm`,i),children:[(0,r.jsxs)(`span`,{className:`relative flex size-1.5 items-center justify-center`,children:[(0,r.jsx)(`span`,{className:t(`size-1.5 rounded-full`,a[e])}),e===`live`&&(0,r.jsx)(`span`,{className:`absolute inset-0 animate-ping rounded-full bg-success/60`})]}),(0,r.jsx)(`span`,{className:`text-[11px] leading-none text-muted-foreground`,children:n})]})}function s({children:e}){return(0,r.jsx)(`span`,{className:`text-[10px] uppercase tracking-[0.14em]`,children:e})}function c({icon:e,title:i,description:a,aside:o,footer:s,children:c,id:l,className:u,bodyClassName:d}){return(0,r.jsxs)(`section`,{id:l,tabIndex:l?-1:void 0,"aria-label":typeof i==`string`?i:void 0,className:t(n,`flex min-w-0 scroll-mt-4 flex-col outline-none hover:border-border`,u),children:[(0,r.jsxs)(`header`,{className:`flex items-start justify-between gap-3 border-b border-border/60 px-4 py-3`,children:[(0,r.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[(0,r.jsx)(`div`,{className:`mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-[var(--miravo-radius-tight)] border border-border/60 bg-background/70 text-muted-foreground`,"aria-hidden":!0,children:(0,r.jsx)(e,{className:`size-3.5`})}),(0,r.jsxs)(`div`,{className:`min-w-0`,children:[(0,r.jsx)(`h2`,{className:`font-heading text-sm font-semibold tracking-tight text-foreground`,children:i}),a?(0,r.jsx)(`p`,{className:`mt-0.5 text-pretty text-xs text-muted-foreground`,children:a}):null]})]}),o?(0,r.jsx)(`div`,{className:`flex shrink-0 items-center gap-2`,children:o}):null]}),c===void 0?null:(0,r.jsx)(`div`,{className:t(`flex min-w-0 flex-col px-4 py-4`,d),children:c}),s?(0,r.jsx)(`div`,{className:`mt-auto flex min-w-0 flex-wrap items-center gap-x-4 gap-y-2 border-t border-border/60 bg-background/40 px-4 py-2.5 text-xs text-muted-foreground`,children:s}):null]})}export{o as i,i as n,s as r,c as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{c as t}from"./vendor-charts-95ykyDlI.js";import{ot as n}from"./vendor-ui-D8j69UH4.js";import{B as r,ot as i}from"./api-tM5PSXjr.js";import{t as a}from"./proxy-CWZabK8f.js";import{t as o}from"./AnimatePresence-BSSlw02V.js";import{i as s,r as c}from"./dist-xY0pK9Wy.js";import{a as l,i as u,n as d,o as f,r as p,t as m}from"./dialog-B5PqrKVw.js";import{t as h}from"./shallow-Cin0mLuv.js";import{C as g,S as _,d as ee,l as te}from"./format-Bx7DF-TB.js";import{n as v,t as y}from"./utils-XFKvwlFT.js";import{n as b}from"./server-BVem_egD.js";import{n as x}from"./circle-x-6JtFdy1_.js";import{n as S}from"./protocol-card-Cp8O59cX.js";import{n as C,t as w}from"./sliders-horizontal-BNKmYQgd.js";import{t as T}from"./pause-CqW7v5Dc.js";import{a as E,l as ne,t as D}from"./use-engine-command-mutation-oLQW2r4F.js";import{t as re}from"./rocket-KZ5oHK1G.js";import{t as ie}from"./triangle-alert-DoAwrRgk.js";import{a as ae,n as oe,r as O,t as k}from"./validation-BOdAwXQ_.js";import{i as A,n as j,t as M}from"./tooltip-B3vOB1Vu.js";import{t as N}from"./badge-Bk1DaL6C.js";import{t as P}from"./label-2sIXTEUK.js";import{i as F,r as I,t as L}from"./console-panel-Cg2sBJcN.js";import{i as R,n as z,r as B,t as V}from"./tabs-Ch_VG8_S.js";import{a as H,c as U,i as W,l as G,n as K,o as q,r as se,s as J,t as ce}from"./combobox-B8h0-NHs.js";import{c as le,i as ue,n as de,s as fe,t as pe}from"./select-BWlrSYlA.js";var me=v(`octagon-alert`,[[`path`,{d:`M12 16h.01`,key:`1drbdi`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z`,key:`1fd625`}]]),Y=v(`radio-tower`,[[`path`,{d:`M4.9 16.1C1 12.2 1 5.8 4.9 1.9`,key:`s0qx1y`}],[`path`,{d:`M7.8 4.7a6.14 6.14 0 0 0-.8 7.5`,key:`1idnkw`}],[`circle`,{cx:`12`,cy:`9`,r:`2`,key:`1092wv`}],[`path`,{d:`M16.2 4.8c2 2 2.26 5.11.8 7.47`,key:`ojru2q`}],[`path`,{d:`M19.1 1.9a9.96 9.96 0 0 1 0 14.1`,key:`rhi7fg`}],[`path`,{d:`M9.5 18h5`,key:`mfy3pd`}],[`path`,{d:`m8 22 4-11 4 11`,key:`25yftu`}]]),X=e(t(),1),Z=n();function he(){let{assets:e,models:t}=i(h(e=>({assets:e.assets,models:e.models}))),n=D(),[r,s]=(0,X.useState)(``),[c,l]=(0,X.useState)(``),[u,d]=(0,X.useState)(``),f=(0,X.useMemo)(()=>u?e.filter(e=>e.id.toLowerCase().includes(u.toLowerCase())):e,[e,u]),p=(0,X.useMemo)(()=>{let n=e.find(e=>e.id===r);return n?t.find(e=>e.name===n.model)?.faultNames??[]:[]},[r,e,t]),m=(0,X.useMemo)(()=>e.filter(e=>e.activeFaults.length>0),[e]),_=m.reduce((e,t)=>e+t.activeFaults.length,0);return(0,Z.jsxs)(q,{className:`h-full min-w-0`,children:[(0,Z.jsx)(U,{className:`pb-3`,children:(0,Z.jsxs)(G,{className:`flex items-center gap-2 text-xs font-medium uppercase tracking-wider`,children:[(0,Z.jsx)(ie,{className:`size-3.5 ${_>0?`text-destructive`:`text-muted-foreground`}`}),`Fault Lab`,(0,Z.jsx)(o,{children:_>0&&(0,Z.jsx)(a.div,{initial:{scale:0,opacity:0},animate:{scale:1,opacity:1},exit:{scale:0,opacity:0},transition:{type:`spring`,stiffness:500,damping:30},children:(0,Z.jsxs)(N,{variant:`destructive`,className:`text-[10px]`,children:[_,` active`]})},`fault-count`)})]})}),(0,Z.jsxs)(J,{className:`flex flex-1 flex-col gap-3`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2`,children:[(0,Z.jsxs)(ce,{value:r||null,onValueChange:e=>{s(e??``),l(``)},onInputValueChange:d,children:[(0,Z.jsx)(se,{placeholder:`Select asset`,"aria-label":`Fault asset`,className:`h-8 min-h-11 w-full min-w-0 touch-manipulation sm:min-h-8`,showClear:!!r}),(0,Z.jsx)(K,{children:(0,Z.jsxs)(H,{children:[f.map(e=>(0,Z.jsxs)(W,{value:e.id,children:[(0,Z.jsx)(`span`,{className:`font-mono`,children:e.id}),e.activeFaults.length>0&&(0,Z.jsx)(N,{variant:`destructive`,className:`ml-auto text-[10px]`,children:e.activeFaults.length})]},e.id)),f.length===0&&(0,Z.jsx)(`p`,{className:`py-2 text-center text-xs text-muted-foreground`,children:`No assets found`})]})})]}),(0,Z.jsxs)(pe,{value:c,onValueChange:e=>l(e??``),children:[(0,Z.jsx)(fe,{className:`h-8 min-h-11 w-full touch-manipulation sm:min-h-8`,"aria-label":`Fault type`,children:(0,Z.jsx)(le,{placeholder:r?`Select fault`:`Pick asset first`})}),(0,Z.jsx)(de,{alignItemWithTrigger:!1,align:`start`,children:p.map(e=>(0,Z.jsx)(ue,{value:e,children:e},e))})]})]}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,Z.jsx)(g,{variant:`destructive`,size:`sm`,className:`h-7 min-h-11 touch-manipulation text-xs sm:min-h-7`,disabled:!r||!c,onClick:()=>{let e=O(k,{assetId:r,fault:c});e&&n.mutate({type:`triggerFault`,...e})},children:`Trigger`}),(0,Z.jsx)(g,{variant:`secondary`,size:`sm`,className:`h-7 min-h-11 touch-manipulation text-xs sm:min-h-7`,disabled:!r||!c,onClick:()=>{let e=O(k,{assetId:r,fault:c});e&&n.mutate({type:`clearFault`,...e})},children:`Clear`})]}),(0,Z.jsx)(ae,{}),(0,Z.jsx)(o,{mode:`wait`,initial:!1,children:m.length>0?(0,Z.jsxs)(a.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},className:`flex flex-col gap-2`,children:[(0,Z.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-wider text-muted-foreground`,children:`Faulted Assets`}),(0,Z.jsx)(o,{initial:!1,children:m.map(e=>(0,Z.jsx)(a.div,{initial:{opacity:0,x:-6},animate:{opacity:1,x:0},exit:{opacity:0,x:6,transition:{duration:.1}},transition:{type:`spring`,stiffness:400,damping:35},children:(0,Z.jsxs)(`button`,{type:`button`,className:`flex min-h-11 w-full touch-manipulation items-center justify-between rounded-[var(--miravo-radius-tight)] border border-destructive/20 bg-destructive/5 px-2.5 py-1.5 text-left transition-colors hover:bg-destructive/10 sm:min-h-0`,onClick:()=>{s(e.id),l(``)},children:[(0,Z.jsx)(`span`,{className:`truncate font-mono text-xs`,children:e.id}),(0,Z.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-destructive`,children:e.activeFaults.join(`, `)})]})},e.id))})]},`faulted`):(0,Z.jsxs)(a.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},className:`flex items-center gap-2 py-1 text-xs text-muted-foreground`,children:[(0,Z.jsx)(x,{className:`size-3.5 text-success`}),`All clear — no active faults`]},`all-clear`)})]})]})}function ge(e){let t=Math.floor(e/1e3),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n>0?`${n}h ${r}m`:r>0?`${r}m ${i}s`:`${i}s`}function _e(e){if(!Number.isFinite(e)||e<=0)return`0s`;if(e<60)return`${e.toFixed(1)}s`;let t=Math.floor(e),n=Math.floor(t/86400),r=Math.floor(t%86400/3600),i=Math.floor(t%3600/60),a=t%60;return n>0?r>0?`${n}d ${r}h`:i>0?`${n}d ${i}m`:`${n}d`:r>0?`${r}h ${i}m`:i>0?`${i}m ${a}s`:`${a}s`}function ve({data:e}){let t=(0,X.useMemo)(()=>{if(e.length<2)return null;let t=e.map(e=>e.tps),n=Math.max(...t,.1),r=Math.min(...t,0),i=n-r||1;return{points:t.map((e,n)=>{let a=n/(t.length-1)*200,o=2+(1-(e-r)/i)*28;return`${n===0?`M`:`L`}${a.toFixed(1)},${o.toFixed(1)}`}).join(` `),min:r,max:n}},[e]);return t?(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Z.jsxs)(`svg`,{viewBox:`0 0 200 32`,className:`h-8 w-full`,preserveAspectRatio:`none`,role:`img`,"aria-label":`TPS trend sparkline`,children:[(0,Z.jsx)(`line`,{x1:`0`,y1:`10.7`,x2:`200`,y2:`10.7`,stroke:`currentColor`,strokeWidth:`0.5`,strokeDasharray:`3,2`,className:`text-border`}),(0,Z.jsx)(`line`,{x1:`0`,y1:`21.3`,x2:`200`,y2:`21.3`,stroke:`currentColor`,strokeWidth:`0.5`,strokeDasharray:`3,2`,className:`text-border`}),(0,Z.jsx)(`path`,{d:t.points,fill:`none`,stroke:`var(--primary)`,strokeWidth:`1.5`})]}),(0,Z.jsxs)(`div`,{className:`flex justify-between text-[9px] text-muted-foreground`,children:[(0,Z.jsxs)(`span`,{children:[`60s ago · `,t.min.toFixed(1)]}),(0,Z.jsxs)(`span`,{children:[t.max.toFixed(1),` · now`]})]})]}):(0,Z.jsx)(`div`,{className:`flex h-8 items-center text-[10px] text-muted-foreground`,children:`Collecting...`})}var ye={running:`bg-success`,paused:`bg-warning`,idle:`bg-muted-foreground`,stopped:`bg-destructive`};function be({state:e}){let t=ye[e]??`bg-muted-foreground`,n=e===`running`;return(0,Z.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,Z.jsxs)(`div`,{className:`relative flex items-center justify-center`,children:[(0,Z.jsx)(`span`,{className:`size-2.5 rounded-full ${t}`}),n&&(0,Z.jsx)(`span`,{className:`absolute size-2.5 animate-ping rounded-full ${t} opacity-40`})]}),(0,Z.jsx)(o,{mode:`wait`,initial:!1,children:(0,Z.jsx)(a.span,{initial:{opacity:0,y:-5},animate:{opacity:1,y:0},exit:{opacity:0,y:5},transition:{type:`spring`,stiffness:500,damping:30},className:`font-mono text-lg font-bold uppercase tracking-wider`,children:e},e)})]})}function Q({label:e,tooltip:t,tooltipClassName:n}){return(0,Z.jsxs)(`div`,{className:`inline-flex w-fit min-w-0 max-w-full items-center gap-1`,children:[(0,Z.jsx)(`span`,{className:`blueprint-title min-w-0 shrink text-[11px] leading-tight text-muted-foreground`,children:e}),(0,Z.jsxs)(M,{children:[(0,Z.jsx)(A,{className:`inline-flex size-4 shrink-0 items-center justify-center rounded-[var(--miravo-radius-tight)] border-0 bg-transparent p-0 text-muted-foreground shadow-none outline-none hover:text-foreground focus-visible:ring-1 focus-visible:ring-ring`,render:(0,Z.jsx)(`button`,{type:`button`}),"aria-label":`About ${e}`,children:(0,Z.jsx)(b,{className:`size-3`,"aria-hidden":!0})}),(0,Z.jsx)(j,{side:`top`,className:y(`max-w-xs`,n),children:t})]})]})}function $(){let{engineState:e,connectionState:t}=i(h(e=>({engineState:e.engineState,connectionState:e.connectionState}))),n=D();return(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(Q,{label:`Run state`,tooltip:(0,Z.jsx)(`p`,{className:`text-[11px] leading-snug`,children:`Whether the scheduler is running, paused, idle, or stopped. Pause freezes simulated time; resume continues from the same tick.`})}),(0,Z.jsx)(be,{state:e}),t===`live`&&(e===`running`||e===`paused`)&&(0,Z.jsx)(`div`,{className:`mt-1 flex items-center gap-2`,children:(0,Z.jsxs)(g,{type:`button`,size:`sm`,variant:e===`paused`?`default`:`outline`,className:y(`h-8 min-h-11 w-fit touch-manipulation gap-1.5 px-3 text-xs sm:min-h-8`,e===`running`&&`border-warning/40 bg-warning/10 text-warning hover:bg-warning/20 hover:text-warning focus-visible:border-warning/50 focus-visible:ring-warning/25 border-warning/35`),onClick:()=>n.mutate({type:e===`paused`?`resume`:`pause`}),children:[e===`paused`?(0,Z.jsx)(ne,{className:`size-3`}):(0,Z.jsx)(T,{className:`size-3`}),e===`paused`?`Resume`:`Pause`]})})]})}function xe(){let{speedMultiplier:e,connectionState:t}=i(h(e=>({speedMultiplier:e.speedMultiplier,connectionState:e.connectionState}))),n=D(),[r,a]=(0,X.useState)(String(e)),o=t===`live`;return(0,X.useEffect)(()=>{a(String(e))},[e]),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(Q,{label:`Speed`,tooltip:(0,Z.jsx)(`p`,{className:`text-[11px] leading-snug`,children:`Runs the factory at this multiple of real time. 1× is real time; higher values speed up the model. Change it with the field and Set.`})}),(0,Z.jsxs)(`span`,{className:`w-fit font-mono text-lg font-bold tabular-nums`,children:[e,`x`]}),(0,Z.jsxs)(`div`,{className:`mt-1 flex min-w-0 flex-wrap items-center gap-2`,children:[(0,Z.jsx)(P,{htmlFor:`speed-multiplier`,className:`sr-only`,children:`Speed multiplier`}),(0,Z.jsx)(_,{id:`speed-multiplier`,type:`number`,value:r,onChange:e=>a(e.target.value),className:`h-8 min-h-11 w-[4.75rem] touch-manipulation font-mono text-xs tabular-nums sm:min-h-8`,min:`1`,max:`1000`,disabled:!o}),(0,Z.jsx)(g,{type:`button`,size:`sm`,variant:`outline`,className:`h-8 min-h-11 touch-manipulation px-3 text-xs sm:min-h-8`,disabled:!o,onClick:()=>{let e=O(oe,{multiplier:Number(r)});e&&n.mutate({type:`setSpeed`,multiplier:e.multiplier})},children:`Set`})]})]})}function Se(){let{tick:e,simulationTime:t,tps:n,tpsHistory:r,uptimeMs:a,assetCount:o,memberValueCount:s}=i(h(e=>({tick:e.tick,simulationTime:e.simulationTime,tps:e.tps,tpsHistory:e.tpsHistory,uptimeMs:e.uptimeMs,assetCount:e.assetCount,memberValueCount:e.memberValueCount})));return(0,Z.jsxs)(`div`,{className:y(E,`px-4 py-3`),children:[(0,Z.jsxs)(`header`,{className:`mb-3 border-b border-border/60 pb-2`,children:[(0,Z.jsx)(`h2`,{className:`font-heading text-sm font-semibold tracking-tight text-foreground`,children:`Engine vitals`}),(0,Z.jsx)(`p`,{className:`mt-0.5 text-xs text-muted-foreground`,children:`Scheduler, speed, cycle count, and throughput for this session.`})]}),(0,Z.jsxs)(`div`,{className:`grid min-w-0 grid-cols-2 gap-3 @2xl/main:gap-4 @3xl/main:grid-cols-3 @5xl/main:grid-cols-6`,children:[(0,Z.jsx)($,{}),(0,Z.jsx)(xe,{}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(Q,{label:`Cycle`,tooltipClassName:`flex flex-col items-start gap-2 text-left`,tooltip:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`p`,{className:`text-[11px] leading-snug`,children:[(0,Z.jsx)(`span`,{className:`font-medium`,children:`Cycle`}),` compares simulated progress with wall time: how many steps ran, how much model time advanced, and how long this session has been open.`]}),(0,Z.jsxs)(`p`,{className:`text-[11px] leading-snug`,children:[`The number is `,(0,Z.jsx)(`span`,{className:`font-medium`,children:`tick`}),` count — completed scheduler steps since this run. Each tick refreshes the plant model and live tags.`]}),(0,Z.jsxs)(`p`,{className:`text-[11px] leading-snug`,children:[(0,Z.jsx)(`span`,{className:`font-medium`,children:`Sim`}),` is simulated elapsed time. Each tick adds (tick interval × speed) to this clock. Generators, lifecycle, and in-model timestamps use Sim, not your system clock. It stops advancing while paused.`]}),(0,Z.jsxs)(`p`,{className:`text-[11px] leading-snug`,children:[(0,Z.jsx)(`span`,{className:`font-medium`,children:`Real`}),` is wall-clock uptime since the run started (real time).`]})]})}),(0,Z.jsx)(`span`,{className:`w-fit font-mono text-lg font-bold tabular-nums`,children:te(e)}),(0,Z.jsxs)(`div`,{className:`mt-1 flex w-full min-w-0 flex-col gap-0.5 leading-tight`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,Z.jsx)(`span`,{className:`w-10 shrink-0 text-[9px] font-semibold uppercase tracking-wide text-muted-foreground`,children:`Sim`}),(0,Z.jsx)(`span`,{className:`min-w-0 font-mono text-[10px] tabular-nums text-muted-foreground`,children:_e(t)})]}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,Z.jsx)(`span`,{className:`w-10 shrink-0 text-[9px] font-semibold uppercase tracking-wide text-muted-foreground`,children:`Real`}),(0,Z.jsx)(`span`,{className:`min-w-0 font-mono text-[10px] tabular-nums text-muted-foreground`,children:ge(a)})]})]})]}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(Q,{label:`Throughput`,tooltip:(0,Z.jsx)(`p`,{className:`text-[11px] leading-snug`,children:`Ticks per second: how fast the engine is stepping. Rises and falls with workload, speed setting, and CPU headroom.`})}),(0,Z.jsxs)(`span`,{className:`w-fit font-mono text-lg font-bold tabular-nums`,children:[n.toFixed(1),` tps`]}),(0,Z.jsxs)(`span`,{className:`mt-1 text-[10px] text-muted-foreground`,children:[o,` inst · `,ee(s),` tags`]})]}),(0,Z.jsxs)(`div`,{className:`col-span-2 flex flex-col gap-2`,children:[(0,Z.jsx)(Q,{label:`TPS Trend`,tooltip:(0,Z.jsx)(`p`,{className:`text-[11px] leading-snug`,children:`Recent ticks-per-second samples over about the last minute. Flat or noisy lines usually mean load or speed changes.`})}),(0,Z.jsx)(ve,{data:r})]})]})]})}function Ce({enabled:e,total:t}){return(0,Z.jsxs)(F,{tone:t===0?`off`:e===0?`idle`:`live`,children:[(0,Z.jsx)(`span`,{className:`font-mono font-semibold tabular-nums text-foreground`,children:e}),(0,Z.jsx)(`span`,{className:`mx-1 text-muted-foreground/60`,children:`/`}),(0,Z.jsx)(`span`,{className:`font-mono tabular-nums`,children:t}),(0,Z.jsx)(`span`,{className:`ml-1.5`}),(0,Z.jsx)(I,{children:`active`})]})}function we(){let{availableAdapters:e,adapterMetrics:t}=i(h(e=>({availableAdapters:e.availableAdapters,adapterMetrics:e.adapterMetrics}))),n=e.filter(e=>e.enabled).length;return(0,Z.jsxs)(L,{icon:Y,title:`Protocol Gateway`,description:`Northbound adapters publishing engine telemetry to external systems.`,aside:(0,Z.jsx)(Ce,{enabled:n,total:e.length}),bodyClassName:`p-0`,children:[e.length>0&&(0,Z.jsx)(`div`,{className:`flex flex-col gap-2 px-4 py-4`,children:(0,Z.jsx)(o,{children:e.map((e,n)=>{let r=t.find(t=>t.name===e.name)?.metrics;return(0,Z.jsx)(a.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},exit:{opacity:0},transition:{type:`spring`,stiffness:380,damping:30,delay:n*.05},children:(0,Z.jsx)(S,{adapter:e,metrics:r})},e.name)})})}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-3 gap-y-2 border-t border-border/60 bg-background/40 px-4 py-2.5`,role:`status`,"aria-label":`Upcoming protocol adapters`,children:[(0,Z.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[(0,Z.jsx)(re,{className:`size-3 text-muted-foreground/70`,"aria-hidden":!0}),(0,Z.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-[0.14em] text-muted-foreground`,children:`Roadmap`})]}),(0,Z.jsx)(`span`,{className:`font-mono text-[10px] leading-[15px] tracking-tight text-muted-foreground`,children:`More protocols to come`})]})]})}function Te(){let{assets:e,templates:t}=i(h(e=>({assets:e.assets,templates:e.templates}))),n=D(),[r,a]=(0,X.useState)(!1),[o,s]=(0,X.useState)(!1);return(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,Z.jsxs)(q,{className:`min-w-0`,children:[(0,Z.jsx)(U,{className:`pb-3`,children:(0,Z.jsxs)(G,{className:`flex items-center gap-2 text-xs font-medium uppercase tracking-wider`,children:[(0,Z.jsx)(me,{className:`size-3.5 text-muted-foreground`,"aria-hidden":!0}),`Danger Zone`]})}),(0,Z.jsx)(J,{className:`flex flex-1 flex-col`,children:(0,Z.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-3 rounded-[var(--miravo-radius-stadium-sm)] border border-dashed border-border p-3 @2xl/main:flex-row @2xl/main:items-center @2xl/main:justify-between`,children:[(0,Z.jsxs)(`div`,{className:`min-w-0 space-y-0.5`,children:[(0,Z.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:`Reset factory`}),(0,Z.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Unloads `,t.length,` template`,t.length===1?``:`s`,` and removes`,` `,e.length,` asset`,e.length===1?``:`s`,`, including standalone ones.`]})]}),(0,Z.jsx)(g,{className:`min-h-11 w-full shrink-0 touch-manipulation @2xl/main:w-auto sm:min-h-7`,variant:`destructive`,size:`sm`,onClick:()=>a(!0),children:`Reset`})]})})]}),(0,Z.jsx)(m,{open:r,onOpenChange:a,children:(0,Z.jsxs)(d,{children:[(0,Z.jsxs)(l,{children:[(0,Z.jsx)(f,{children:`Reset Factory`}),(0,Z.jsx)(p,{children:`Unloads every template and removes every asset, including standalone ones. With persistence on, the empty factory is saved and stays empty after a restart.`})]}),(0,Z.jsxs)(u,{children:[(0,Z.jsx)(g,{variant:`outline`,className:`min-h-11 w-full touch-manipulation sm:min-h-8 sm:w-auto`,onClick:()=>a(!1),disabled:o,children:`Cancel`}),(0,Z.jsx)(g,{variant:`destructive`,className:`min-h-11 w-full touch-manipulation sm:min-h-8 sm:w-auto`,disabled:o,onClick:async()=>{s(!0);try{await n.mutateAsync({type:`resetFactory`}),a(!1)}catch{}finally{s(!1)}},children:o?`Resetting...`:`Confirm Reset`})]})]})})]})}function Ee(){let[e,t]=s(`tab`,c([`monitor`,`operate`]).withDefault(`monitor`));return(0,Z.jsxs)(`div`,{className:`mx-auto flex w-full min-w-0 max-w-screen-2xl flex-col gap-5 p-4 sm:gap-6 sm:p-6`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,Z.jsx)(`h1`,{className:`font-heading text-2xl font-semibold tracking-tight`,children:`Mission Control`}),(0,Z.jsxs)(N,{variant:`outline`,title:`Miravo version ${r}`,className:`font-mono text-[10px] leading-none text-muted-foreground`,children:[`v`,r]})]}),(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Engine telemetry, protocol management, and fault operations.`})]}),(0,Z.jsxs)(V,{value:e,onValueChange:e=>{t(e)},className:`min-h-0 flex-1`,children:[(0,Z.jsx)(`div`,{className:`shrink-0 overflow-x-auto`,children:(0,Z.jsxs)(B,{variant:`line`,className:`h-10! min-w-max gap-0.5`,children:[(0,Z.jsxs)(R,{value:`monitor`,className:`gap-1.5 px-3 text-sm`,children:[(0,Z.jsx)(C,{className:`size-3.5 shrink-0`}),`Monitor`]}),(0,Z.jsxs)(R,{value:`operate`,className:`gap-1.5 px-3 text-sm`,children:[(0,Z.jsx)(w,{className:`size-3.5 shrink-0`}),`Operate`]})]})}),(0,Z.jsx)(z,{value:`monitor`,className:`flex-1 py-2`,children:(0,Z.jsxs)(a.div,{initial:{opacity:0,y:6},animate:{opacity:1,y:0},transition:{duration:.15,ease:`easeOut`},className:`flex flex-col gap-5 sm:gap-6`,children:[(0,Z.jsx)(Se,{}),(0,Z.jsx)(we,{})]},`monitor`)}),(0,Z.jsx)(z,{value:`operate`,className:`flex-1 py-2`,children:(0,Z.jsxs)(a.div,{initial:{opacity:0,y:6},animate:{opacity:1,y:0},transition:{duration:.15,ease:`easeOut`},className:`grid min-h-0 min-w-0 grid-cols-1 items-start gap-5 @2xl/main:grid-cols-2 @2xl/main:gap-4`,children:[(0,Z.jsx)(he,{}),(0,Z.jsx)(Te,{})]},`operate`)})]})]})}export{Y as n,Ee as t};
|
|
1
|
+
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{c as t}from"./vendor-charts-95ykyDlI.js";import{ot as n}from"./vendor-ui-D8j69UH4.js";import{B as r,ot as i}from"./api-BG2sUkwk.js";import{t as a}from"./proxy-CWZabK8f.js";import{t as o}from"./AnimatePresence-BSSlw02V.js";import{i as s,r as c}from"./dist-xY0pK9Wy.js";import{a as l,i as u,n as d,o as f,r as p,t as m}from"./dialog-B5PqrKVw.js";import{t as h}from"./shallow-Cin0mLuv.js";import{C as g,S as _,d as ee,l as te}from"./format-Bx7DF-TB.js";import{n as v,t as y}from"./utils-XFKvwlFT.js";import{n as b}from"./server-BVem_egD.js";import{n as x}from"./circle-x-6JtFdy1_.js";import{n as S}from"./protocol-card-B8XGneNM.js";import{n as C,t as w}from"./sliders-horizontal-BNKmYQgd.js";import{t as T}from"./pause-CqW7v5Dc.js";import{a as E,l as ne,t as D}from"./use-engine-command-mutation-DrMOfYty.js";import{t as re}from"./rocket-KZ5oHK1G.js";import{t as ie}from"./triangle-alert-DoAwrRgk.js";import{a as ae,n as oe,r as O,t as k}from"./validation-Cxhiswz2.js";import{i as A,n as j,t as M}from"./tooltip-B3vOB1Vu.js";import{t as N}from"./badge-Bk1DaL6C.js";import{t as P}from"./label-2sIXTEUK.js";import{i as F,r as I,t as L}from"./console-panel-iWo8EgKP.js";import{i as R,n as z,r as B,t as V}from"./tabs-Ch_VG8_S.js";import{a as H,c as U,i as W,l as G,n as K,o as q,r as se,s as J,t as ce}from"./combobox-B8h0-NHs.js";import{c as le,i as ue,n as de,s as fe,t as pe}from"./select-BWlrSYlA.js";var me=v(`octagon-alert`,[[`path`,{d:`M12 16h.01`,key:`1drbdi`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z`,key:`1fd625`}]]),Y=v(`radio-tower`,[[`path`,{d:`M4.9 16.1C1 12.2 1 5.8 4.9 1.9`,key:`s0qx1y`}],[`path`,{d:`M7.8 4.7a6.14 6.14 0 0 0-.8 7.5`,key:`1idnkw`}],[`circle`,{cx:`12`,cy:`9`,r:`2`,key:`1092wv`}],[`path`,{d:`M16.2 4.8c2 2 2.26 5.11.8 7.47`,key:`ojru2q`}],[`path`,{d:`M19.1 1.9a9.96 9.96 0 0 1 0 14.1`,key:`rhi7fg`}],[`path`,{d:`M9.5 18h5`,key:`mfy3pd`}],[`path`,{d:`m8 22 4-11 4 11`,key:`25yftu`}]]),X=e(t(),1),Z=n();function he(){let{assets:e,models:t}=i(h(e=>({assets:e.assets,models:e.models}))),n=D(),[r,s]=(0,X.useState)(``),[c,l]=(0,X.useState)(``),[u,d]=(0,X.useState)(``),f=(0,X.useMemo)(()=>u?e.filter(e=>e.id.toLowerCase().includes(u.toLowerCase())):e,[e,u]),p=(0,X.useMemo)(()=>{let n=e.find(e=>e.id===r);return n?t.find(e=>e.name===n.model)?.faultNames??[]:[]},[r,e,t]),m=(0,X.useMemo)(()=>e.filter(e=>e.activeFaults.length>0),[e]),_=m.reduce((e,t)=>e+t.activeFaults.length,0);return(0,Z.jsxs)(q,{className:`h-full min-w-0`,children:[(0,Z.jsx)(U,{className:`pb-3`,children:(0,Z.jsxs)(G,{className:`flex items-center gap-2 text-xs font-medium uppercase tracking-wider`,children:[(0,Z.jsx)(ie,{className:`size-3.5 ${_>0?`text-destructive`:`text-muted-foreground`}`}),`Fault Lab`,(0,Z.jsx)(o,{children:_>0&&(0,Z.jsx)(a.div,{initial:{scale:0,opacity:0},animate:{scale:1,opacity:1},exit:{scale:0,opacity:0},transition:{type:`spring`,stiffness:500,damping:30},children:(0,Z.jsxs)(N,{variant:`destructive`,className:`text-[10px]`,children:[_,` active`]})},`fault-count`)})]})}),(0,Z.jsxs)(J,{className:`flex flex-1 flex-col gap-3`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2`,children:[(0,Z.jsxs)(ce,{value:r||null,onValueChange:e=>{s(e??``),l(``)},onInputValueChange:d,children:[(0,Z.jsx)(se,{placeholder:`Select asset`,"aria-label":`Fault asset`,className:`h-8 min-h-11 w-full min-w-0 touch-manipulation sm:min-h-8`,showClear:!!r}),(0,Z.jsx)(K,{children:(0,Z.jsxs)(H,{children:[f.map(e=>(0,Z.jsxs)(W,{value:e.id,children:[(0,Z.jsx)(`span`,{className:`font-mono`,children:e.id}),e.activeFaults.length>0&&(0,Z.jsx)(N,{variant:`destructive`,className:`ml-auto text-[10px]`,children:e.activeFaults.length})]},e.id)),f.length===0&&(0,Z.jsx)(`p`,{className:`py-2 text-center text-xs text-muted-foreground`,children:`No assets found`})]})})]}),(0,Z.jsxs)(pe,{value:c,onValueChange:e=>l(e??``),children:[(0,Z.jsx)(fe,{className:`h-8 min-h-11 w-full touch-manipulation sm:min-h-8`,"aria-label":`Fault type`,children:(0,Z.jsx)(le,{placeholder:r?`Select fault`:`Pick asset first`})}),(0,Z.jsx)(de,{alignItemWithTrigger:!1,align:`start`,children:p.map(e=>(0,Z.jsx)(ue,{value:e,children:e},e))})]})]}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,Z.jsx)(g,{variant:`destructive`,size:`sm`,className:`h-7 min-h-11 touch-manipulation text-xs sm:min-h-7`,disabled:!r||!c,onClick:()=>{let e=O(k,{assetId:r,fault:c});e&&n.mutate({type:`triggerFault`,...e})},children:`Trigger`}),(0,Z.jsx)(g,{variant:`secondary`,size:`sm`,className:`h-7 min-h-11 touch-manipulation text-xs sm:min-h-7`,disabled:!r||!c,onClick:()=>{let e=O(k,{assetId:r,fault:c});e&&n.mutate({type:`clearFault`,...e})},children:`Clear`})]}),(0,Z.jsx)(ae,{}),(0,Z.jsx)(o,{mode:`wait`,initial:!1,children:m.length>0?(0,Z.jsxs)(a.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},className:`flex flex-col gap-2`,children:[(0,Z.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-wider text-muted-foreground`,children:`Faulted Assets`}),(0,Z.jsx)(o,{initial:!1,children:m.map(e=>(0,Z.jsx)(a.div,{initial:{opacity:0,x:-6},animate:{opacity:1,x:0},exit:{opacity:0,x:6,transition:{duration:.1}},transition:{type:`spring`,stiffness:400,damping:35},children:(0,Z.jsxs)(`button`,{type:`button`,className:`flex min-h-11 w-full touch-manipulation items-center justify-between rounded-[var(--miravo-radius-tight)] border border-destructive/20 bg-destructive/5 px-2.5 py-1.5 text-left transition-colors hover:bg-destructive/10 sm:min-h-0`,onClick:()=>{s(e.id),l(``)},children:[(0,Z.jsx)(`span`,{className:`truncate font-mono text-xs`,children:e.id}),(0,Z.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-destructive`,children:e.activeFaults.join(`, `)})]})},e.id))})]},`faulted`):(0,Z.jsxs)(a.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},className:`flex items-center gap-2 py-1 text-xs text-muted-foreground`,children:[(0,Z.jsx)(x,{className:`size-3.5 text-success`}),`All clear — no active faults`]},`all-clear`)})]})]})}function ge(e){let t=Math.floor(e/1e3),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n>0?`${n}h ${r}m`:r>0?`${r}m ${i}s`:`${i}s`}function _e(e){if(!Number.isFinite(e)||e<=0)return`0s`;if(e<60)return`${e.toFixed(1)}s`;let t=Math.floor(e),n=Math.floor(t/86400),r=Math.floor(t%86400/3600),i=Math.floor(t%3600/60),a=t%60;return n>0?r>0?`${n}d ${r}h`:i>0?`${n}d ${i}m`:`${n}d`:r>0?`${r}h ${i}m`:i>0?`${i}m ${a}s`:`${a}s`}function ve({data:e}){let t=(0,X.useMemo)(()=>{if(e.length<2)return null;let t=e.map(e=>e.tps),n=Math.max(...t,.1),r=Math.min(...t,0),i=n-r||1;return{points:t.map((e,n)=>{let a=n/(t.length-1)*200,o=2+(1-(e-r)/i)*28;return`${n===0?`M`:`L`}${a.toFixed(1)},${o.toFixed(1)}`}).join(` `),min:r,max:n}},[e]);return t?(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Z.jsxs)(`svg`,{viewBox:`0 0 200 32`,className:`h-8 w-full`,preserveAspectRatio:`none`,role:`img`,"aria-label":`TPS trend sparkline`,children:[(0,Z.jsx)(`line`,{x1:`0`,y1:`10.7`,x2:`200`,y2:`10.7`,stroke:`currentColor`,strokeWidth:`0.5`,strokeDasharray:`3,2`,className:`text-border`}),(0,Z.jsx)(`line`,{x1:`0`,y1:`21.3`,x2:`200`,y2:`21.3`,stroke:`currentColor`,strokeWidth:`0.5`,strokeDasharray:`3,2`,className:`text-border`}),(0,Z.jsx)(`path`,{d:t.points,fill:`none`,stroke:`var(--primary)`,strokeWidth:`1.5`})]}),(0,Z.jsxs)(`div`,{className:`flex justify-between text-[9px] text-muted-foreground`,children:[(0,Z.jsxs)(`span`,{children:[`60s ago · `,t.min.toFixed(1)]}),(0,Z.jsxs)(`span`,{children:[t.max.toFixed(1),` · now`]})]})]}):(0,Z.jsx)(`div`,{className:`flex h-8 items-center text-[10px] text-muted-foreground`,children:`Collecting...`})}var ye={running:`bg-success`,paused:`bg-warning`,idle:`bg-muted-foreground`,stopped:`bg-destructive`};function be({state:e}){let t=ye[e]??`bg-muted-foreground`,n=e===`running`;return(0,Z.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,Z.jsxs)(`div`,{className:`relative flex items-center justify-center`,children:[(0,Z.jsx)(`span`,{className:`size-2.5 rounded-full ${t}`}),n&&(0,Z.jsx)(`span`,{className:`absolute size-2.5 animate-ping rounded-full ${t} opacity-40`})]}),(0,Z.jsx)(o,{mode:`wait`,initial:!1,children:(0,Z.jsx)(a.span,{initial:{opacity:0,y:-5},animate:{opacity:1,y:0},exit:{opacity:0,y:5},transition:{type:`spring`,stiffness:500,damping:30},className:`font-mono text-lg font-bold uppercase tracking-wider`,children:e},e)})]})}function Q({label:e,tooltip:t,tooltipClassName:n}){return(0,Z.jsxs)(`div`,{className:`inline-flex w-fit min-w-0 max-w-full items-center gap-1`,children:[(0,Z.jsx)(`span`,{className:`blueprint-title min-w-0 shrink text-[11px] leading-tight text-muted-foreground`,children:e}),(0,Z.jsxs)(M,{children:[(0,Z.jsx)(A,{className:`inline-flex size-4 shrink-0 items-center justify-center rounded-[var(--miravo-radius-tight)] border-0 bg-transparent p-0 text-muted-foreground shadow-none outline-none hover:text-foreground focus-visible:ring-1 focus-visible:ring-ring`,render:(0,Z.jsx)(`button`,{type:`button`}),"aria-label":`About ${e}`,children:(0,Z.jsx)(b,{className:`size-3`,"aria-hidden":!0})}),(0,Z.jsx)(j,{side:`top`,className:y(`max-w-xs`,n),children:t})]})]})}function $(){let{engineState:e,connectionState:t}=i(h(e=>({engineState:e.engineState,connectionState:e.connectionState}))),n=D();return(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(Q,{label:`Run state`,tooltip:(0,Z.jsx)(`p`,{className:`text-[11px] leading-snug`,children:`Whether the scheduler is running, paused, idle, or stopped. Pause freezes simulated time; resume continues from the same tick.`})}),(0,Z.jsx)(be,{state:e}),t===`live`&&(e===`running`||e===`paused`)&&(0,Z.jsx)(`div`,{className:`mt-1 flex items-center gap-2`,children:(0,Z.jsxs)(g,{type:`button`,size:`sm`,variant:e===`paused`?`default`:`outline`,className:y(`h-8 min-h-11 w-fit touch-manipulation gap-1.5 px-3 text-xs sm:min-h-8`,e===`running`&&`border-warning/40 bg-warning/10 text-warning hover:bg-warning/20 hover:text-warning focus-visible:border-warning/50 focus-visible:ring-warning/25 border-warning/35`),onClick:()=>n.mutate({type:e===`paused`?`resume`:`pause`}),children:[e===`paused`?(0,Z.jsx)(ne,{className:`size-3`}):(0,Z.jsx)(T,{className:`size-3`}),e===`paused`?`Resume`:`Pause`]})})]})}function xe(){let{speedMultiplier:e,connectionState:t}=i(h(e=>({speedMultiplier:e.speedMultiplier,connectionState:e.connectionState}))),n=D(),[r,a]=(0,X.useState)(String(e)),o=t===`live`;return(0,X.useEffect)(()=>{a(String(e))},[e]),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(Q,{label:`Speed`,tooltip:(0,Z.jsx)(`p`,{className:`text-[11px] leading-snug`,children:`Runs the factory at this multiple of real time. 1× is real time; higher values speed up the model. Change it with the field and Set.`})}),(0,Z.jsxs)(`span`,{className:`w-fit font-mono text-lg font-bold tabular-nums`,children:[e,`x`]}),(0,Z.jsxs)(`div`,{className:`mt-1 flex min-w-0 flex-wrap items-center gap-2`,children:[(0,Z.jsx)(P,{htmlFor:`speed-multiplier`,className:`sr-only`,children:`Speed multiplier`}),(0,Z.jsx)(_,{id:`speed-multiplier`,type:`number`,value:r,onChange:e=>a(e.target.value),className:`h-8 min-h-11 w-[4.75rem] touch-manipulation font-mono text-xs tabular-nums sm:min-h-8`,min:`1`,max:`1000`,disabled:!o}),(0,Z.jsx)(g,{type:`button`,size:`sm`,variant:`outline`,className:`h-8 min-h-11 touch-manipulation px-3 text-xs sm:min-h-8`,disabled:!o,onClick:()=>{let e=O(oe,{multiplier:Number(r)});e&&n.mutate({type:`setSpeed`,multiplier:e.multiplier})},children:`Set`})]})]})}function Se(){let{tick:e,simulationTime:t,tps:n,tpsHistory:r,uptimeMs:a,assetCount:o,memberValueCount:s}=i(h(e=>({tick:e.tick,simulationTime:e.simulationTime,tps:e.tps,tpsHistory:e.tpsHistory,uptimeMs:e.uptimeMs,assetCount:e.assetCount,memberValueCount:e.memberValueCount})));return(0,Z.jsxs)(`div`,{className:y(E,`px-4 py-3`),children:[(0,Z.jsxs)(`header`,{className:`mb-3 border-b border-border/60 pb-2`,children:[(0,Z.jsx)(`h2`,{className:`font-heading text-sm font-semibold tracking-tight text-foreground`,children:`Engine vitals`}),(0,Z.jsx)(`p`,{className:`mt-0.5 text-xs text-muted-foreground`,children:`Scheduler, speed, cycle count, and throughput for this session.`})]}),(0,Z.jsxs)(`div`,{className:`grid min-w-0 grid-cols-2 gap-3 @2xl/main:gap-4 @3xl/main:grid-cols-3 @5xl/main:grid-cols-6`,children:[(0,Z.jsx)($,{}),(0,Z.jsx)(xe,{}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(Q,{label:`Cycle`,tooltipClassName:`flex flex-col items-start gap-2 text-left`,tooltip:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`p`,{className:`text-[11px] leading-snug`,children:[(0,Z.jsx)(`span`,{className:`font-medium`,children:`Cycle`}),` compares simulated progress with wall time: how many steps ran, how much model time advanced, and how long this session has been open.`]}),(0,Z.jsxs)(`p`,{className:`text-[11px] leading-snug`,children:[`The number is `,(0,Z.jsx)(`span`,{className:`font-medium`,children:`tick`}),` count — completed scheduler steps since this run. Each tick refreshes the plant model and live tags.`]}),(0,Z.jsxs)(`p`,{className:`text-[11px] leading-snug`,children:[(0,Z.jsx)(`span`,{className:`font-medium`,children:`Sim`}),` is simulated elapsed time. Each tick adds (tick interval × speed) to this clock. Generators, lifecycle, and in-model timestamps use Sim, not your system clock. It stops advancing while paused.`]}),(0,Z.jsxs)(`p`,{className:`text-[11px] leading-snug`,children:[(0,Z.jsx)(`span`,{className:`font-medium`,children:`Real`}),` is wall-clock uptime since the run started (real time).`]})]})}),(0,Z.jsx)(`span`,{className:`w-fit font-mono text-lg font-bold tabular-nums`,children:te(e)}),(0,Z.jsxs)(`div`,{className:`mt-1 flex w-full min-w-0 flex-col gap-0.5 leading-tight`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,Z.jsx)(`span`,{className:`w-10 shrink-0 text-[9px] font-semibold uppercase tracking-wide text-muted-foreground`,children:`Sim`}),(0,Z.jsx)(`span`,{className:`min-w-0 font-mono text-[10px] tabular-nums text-muted-foreground`,children:_e(t)})]}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,Z.jsx)(`span`,{className:`w-10 shrink-0 text-[9px] font-semibold uppercase tracking-wide text-muted-foreground`,children:`Real`}),(0,Z.jsx)(`span`,{className:`min-w-0 font-mono text-[10px] tabular-nums text-muted-foreground`,children:ge(a)})]})]})]}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(Q,{label:`Throughput`,tooltip:(0,Z.jsx)(`p`,{className:`text-[11px] leading-snug`,children:`Ticks per second: how fast the engine is stepping. Rises and falls with workload, speed setting, and CPU headroom.`})}),(0,Z.jsxs)(`span`,{className:`w-fit font-mono text-lg font-bold tabular-nums`,children:[n.toFixed(1),` tps`]}),(0,Z.jsxs)(`span`,{className:`mt-1 text-[10px] text-muted-foreground`,children:[o,` inst · `,ee(s),` tags`]})]}),(0,Z.jsxs)(`div`,{className:`col-span-2 flex flex-col gap-2`,children:[(0,Z.jsx)(Q,{label:`TPS Trend`,tooltip:(0,Z.jsx)(`p`,{className:`text-[11px] leading-snug`,children:`Recent ticks-per-second samples over about the last minute. Flat or noisy lines usually mean load or speed changes.`})}),(0,Z.jsx)(ve,{data:r})]})]})]})}function Ce({enabled:e,total:t}){return(0,Z.jsxs)(F,{tone:t===0?`off`:e===0?`idle`:`live`,children:[(0,Z.jsx)(`span`,{className:`font-mono font-semibold tabular-nums text-foreground`,children:e}),(0,Z.jsx)(`span`,{className:`mx-1 text-muted-foreground/60`,children:`/`}),(0,Z.jsx)(`span`,{className:`font-mono tabular-nums`,children:t}),(0,Z.jsx)(`span`,{className:`ml-1.5`}),(0,Z.jsx)(I,{children:`active`})]})}function we(){let{availableAdapters:e,adapterMetrics:t}=i(h(e=>({availableAdapters:e.availableAdapters,adapterMetrics:e.adapterMetrics}))),n=e.filter(e=>e.enabled).length;return(0,Z.jsxs)(L,{icon:Y,title:`Protocol Gateway`,description:`Northbound adapters publishing engine telemetry to external systems.`,aside:(0,Z.jsx)(Ce,{enabled:n,total:e.length}),bodyClassName:`p-0`,children:[e.length>0&&(0,Z.jsx)(`div`,{className:`flex flex-col gap-2 px-4 py-4`,children:(0,Z.jsx)(o,{children:e.map((e,n)=>{let r=t.find(t=>t.name===e.name)?.metrics;return(0,Z.jsx)(a.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},exit:{opacity:0},transition:{type:`spring`,stiffness:380,damping:30,delay:n*.05},children:(0,Z.jsx)(S,{adapter:e,metrics:r})},e.name)})})}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-3 gap-y-2 border-t border-border/60 bg-background/40 px-4 py-2.5`,role:`status`,"aria-label":`Upcoming protocol adapters`,children:[(0,Z.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[(0,Z.jsx)(re,{className:`size-3 text-muted-foreground/70`,"aria-hidden":!0}),(0,Z.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-[0.14em] text-muted-foreground`,children:`Roadmap`})]}),(0,Z.jsx)(`span`,{className:`font-mono text-[10px] leading-[15px] tracking-tight text-muted-foreground`,children:`More protocols to come`})]})]})}function Te(){let{assets:e,templates:t}=i(h(e=>({assets:e.assets,templates:e.templates}))),n=D(),[r,a]=(0,X.useState)(!1),[o,s]=(0,X.useState)(!1);return(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,Z.jsxs)(q,{className:`min-w-0`,children:[(0,Z.jsx)(U,{className:`pb-3`,children:(0,Z.jsxs)(G,{className:`flex items-center gap-2 text-xs font-medium uppercase tracking-wider`,children:[(0,Z.jsx)(me,{className:`size-3.5 text-muted-foreground`,"aria-hidden":!0}),`Danger Zone`]})}),(0,Z.jsx)(J,{className:`flex flex-1 flex-col`,children:(0,Z.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-3 rounded-[var(--miravo-radius-stadium-sm)] border border-dashed border-border p-3 @2xl/main:flex-row @2xl/main:items-center @2xl/main:justify-between`,children:[(0,Z.jsxs)(`div`,{className:`min-w-0 space-y-0.5`,children:[(0,Z.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:`Reset factory`}),(0,Z.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Unloads `,t.length,` template`,t.length===1?``:`s`,` and removes`,` `,e.length,` asset`,e.length===1?``:`s`,`, including standalone ones.`]})]}),(0,Z.jsx)(g,{className:`min-h-11 w-full shrink-0 touch-manipulation @2xl/main:w-auto sm:min-h-7`,variant:`destructive`,size:`sm`,onClick:()=>a(!0),children:`Reset`})]})})]}),(0,Z.jsx)(m,{open:r,onOpenChange:a,children:(0,Z.jsxs)(d,{children:[(0,Z.jsxs)(l,{children:[(0,Z.jsx)(f,{children:`Reset Factory`}),(0,Z.jsx)(p,{children:`Unloads every template and removes every asset, including standalone ones. With persistence on, the empty factory is saved and stays empty after a restart.`})]}),(0,Z.jsxs)(u,{children:[(0,Z.jsx)(g,{variant:`outline`,className:`min-h-11 w-full touch-manipulation sm:min-h-8 sm:w-auto`,onClick:()=>a(!1),disabled:o,children:`Cancel`}),(0,Z.jsx)(g,{variant:`destructive`,className:`min-h-11 w-full touch-manipulation sm:min-h-8 sm:w-auto`,disabled:o,onClick:async()=>{s(!0);try{await n.mutateAsync({type:`resetFactory`}),a(!1)}catch{}finally{s(!1)}},children:o?`Resetting...`:`Confirm Reset`})]})]})})]})}function Ee(){let[e,t]=s(`tab`,c([`monitor`,`operate`]).withDefault(`monitor`));return(0,Z.jsxs)(`div`,{className:`mx-auto flex w-full min-w-0 max-w-screen-2xl flex-col gap-5 p-4 sm:gap-6 sm:p-6`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,Z.jsx)(`h1`,{className:`font-heading text-2xl font-semibold tracking-tight`,children:`Mission Control`}),(0,Z.jsxs)(N,{variant:`outline`,title:`Miravo version ${r}`,className:`font-mono text-[10px] leading-none text-muted-foreground`,children:[`v`,r]})]}),(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Engine telemetry, protocol management, and fault operations.`})]}),(0,Z.jsxs)(V,{value:e,onValueChange:e=>{t(e)},className:`min-h-0 flex-1`,children:[(0,Z.jsx)(`div`,{className:`shrink-0 overflow-x-auto`,children:(0,Z.jsxs)(B,{variant:`line`,className:`h-10! min-w-max gap-0.5`,children:[(0,Z.jsxs)(R,{value:`monitor`,className:`gap-1.5 px-3 text-sm`,children:[(0,Z.jsx)(C,{className:`size-3.5 shrink-0`}),`Monitor`]}),(0,Z.jsxs)(R,{value:`operate`,className:`gap-1.5 px-3 text-sm`,children:[(0,Z.jsx)(w,{className:`size-3.5 shrink-0`}),`Operate`]})]})}),(0,Z.jsx)(z,{value:`monitor`,className:`flex-1 py-2`,children:(0,Z.jsxs)(a.div,{initial:{opacity:0,y:6},animate:{opacity:1,y:0},transition:{duration:.15,ease:`easeOut`},className:`flex flex-col gap-5 sm:gap-6`,children:[(0,Z.jsx)(Se,{}),(0,Z.jsx)(we,{})]},`monitor`)}),(0,Z.jsx)(z,{value:`operate`,className:`flex-1 py-2`,children:(0,Z.jsxs)(a.div,{initial:{opacity:0,y:6},animate:{opacity:1,y:0},transition:{duration:.15,ease:`easeOut`},className:`grid min-h-0 min-w-0 grid-cols-1 items-start gap-5 @2xl/main:grid-cols-2 @2xl/main:gap-4`,children:[(0,Z.jsx)(he,{}),(0,Z.jsx)(Te,{})]},`operate`)})]})]})}export{Y as n,Ee as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./control-BMhNX7vM.js";export{e as ControlPage};
|