@miravo/cli-linux-arm64-musl 0.10.0 → 0.12.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/{AnimatePresence-BZCmb1bq.js → AnimatePresence-BSSlw02V.js} +3 -3
- package/console-dist/assets/{activity-Cn48I9qe.js → activity-Cy_niK56.js} +1 -1
- package/console-dist/assets/api-Dw9ti2cu.js +1 -0
- package/console-dist/assets/{api-kPM52mb-.js → api-tM5PSXjr.js} +1 -1
- package/console-dist/assets/arrow-up-right-CwPw_2U1.js +1 -0
- package/console-dist/assets/asset-detail-C4zF_8rm.js +1 -0
- package/console-dist/assets/asset-detail-actions-Dv9g2Z9t.js +1 -0
- package/console-dist/assets/{auth-screen-backdrop-hcEYy3K4.js → auth-screen-backdrop-CEykEbfF.js} +1 -1
- package/console-dist/assets/backup-power-CAc85zvh.js +1 -0
- package/console-dist/assets/badge-Bk1DaL6C.js +1 -0
- package/console-dist/assets/boiler-BQwqgoVY.js +1 -0
- package/console-dist/assets/by-path-DmADo_qX.js +1 -0
- package/console-dist/assets/catalog-BMLSbdye.js +1 -0
- package/console-dist/assets/catalog-Ccubt-hm.js +1 -0
- package/console-dist/assets/{catalog-source-2aT9qob-.js → catalog-source-B4L5N-a1.js} +1 -1
- package/console-dist/assets/catalog-template-icons-DGyxSm-F.js +1 -0
- package/console-dist/assets/check-B-yvIfMj.js +1 -0
- package/console-dist/assets/checkbox-DEAkDfFr.js +1 -0
- package/console-dist/assets/chevron-down-x70Pto6j.js +1 -0
- package/console-dist/assets/chevron-right-CrNKVFcI.js +1 -0
- package/console-dist/assets/chiller-Jug0vRg-.js +1 -0
- package/console-dist/assets/{circle-x-CGcRflg7.js → circle-x-6JtFdy1_.js} +1 -1
- package/console-dist/assets/combobox-B8h0-NHs.js +1 -0
- package/console-dist/assets/commercial-building-CINKWcQV.js +1 -0
- package/console-dist/assets/compressor-BkWNdwvy.js +1 -0
- package/console-dist/assets/console-panel-Cg2sBJcN.js +1 -0
- package/console-dist/assets/control-B-TcWj5c.js +1 -0
- package/console-dist/assets/control-DXA-_1Gu.js +1 -0
- package/console-dist/assets/copy-button-CSUP1VjU.js +1 -0
- package/console-dist/assets/{dialog-Di9Bs0FH.js → dialog-B5PqrKVw.js} +1 -1
- package/console-dist/assets/district-heating-DqGtrEKq.js +1 -0
- package/console-dist/assets/dom-CQuChC3G.js +1 -0
- package/console-dist/assets/{download-B9e1wNK4.js → download-i8CTJ7oi.js} +1 -1
- package/console-dist/assets/{local-flag-CPAqDO-L.js → dropdown-menu-B_MMNbTy.js} +1 -1
- package/console-dist/assets/events-Dz_zsLGE.js +1 -0
- package/console-dist/assets/events-format-C5HTkIsC.js +1 -0
- package/console-dist/assets/events-iYGC0JpW.js +1 -0
- package/console-dist/assets/export-tab-BS4GlLBV.js +1 -0
- package/console-dist/assets/factory-BCPLmUx4.js +1 -0
- package/console-dist/assets/factory-CBXx3oBo.js +1 -0
- package/console-dist/assets/floor-page-BOlkyLaW.js +1 -0
- package/console-dist/assets/floor-page-E-0txA4z.css +1 -0
- package/console-dist/assets/format-Bx7DF-TB.js +1 -0
- package/console-dist/assets/genset-DBpkUT9p.js +1 -0
- package/console-dist/assets/{get-error-message-eGdenTLv.js → get-error-message-CEvauOXv.js} +1 -1
- package/console-dist/assets/index-B7ZG1VO6.js +12 -0
- package/console-dist/assets/index-CrLa65Ur.css +2 -0
- package/console-dist/assets/{integration-api-Bg7D1eQc.js → integration-api-iM6SWQ6d.js} +1 -1
- package/console-dist/assets/integrations-Bw0jY-xH.js +1 -0
- package/console-dist/assets/integrations-NcPRP3je.js +1 -0
- package/console-dist/assets/{label-DWyy9MeT.js → label-2sIXTEUK.js} +1 -1
- package/console-dist/assets/loader-circle-DjgHgHHl.js +1 -0
- package/console-dist/assets/{login-BZKYK0yZ.js → login-snbitj6V.js} +1 -1
- package/console-dist/assets/minus-CaT9UaQx.js +1 -0
- package/console-dist/assets/models-CsdLFBfC.js +1 -0
- package/console-dist/assets/models-Dy_JFNac.js +1 -0
- package/console-dist/assets/not-found-Cc35S-lZ.js +1 -0
- package/console-dist/assets/pause-CqW7v5Dc.js +1 -0
- package/console-dist/assets/pharma-cleanroom-CBgNUnIv.js +1 -0
- package/console-dist/assets/plus-Cl4Ay5Ry.js +1 -0
- package/console-dist/assets/protocol-card-Cp8O59cX.js +1 -0
- package/console-dist/assets/proxy-CWZabK8f.js +1 -0
- package/console-dist/assets/query-fetch-error-CWLZA2L5.js +1 -0
- package/console-dist/assets/{radio-DRkzblxj.js → radio-BxpVYiyS.js} +1 -1
- package/console-dist/assets/registry-Kj-oMlVm.js +2 -0
- package/console-dist/assets/{rocket-807Pf7C1.js → rocket-KZ5oHK1G.js} +1 -1
- package/console-dist/assets/rtu-BR4DhLbE.js +1 -0
- package/console-dist/assets/select-BWlrSYlA.js +1 -0
- package/console-dist/assets/{select-display-items-D-L3PesO.js → select-display-items-DN2G8DNG.js} +1 -1
- package/console-dist/assets/{server-CS2Tw__K.js → server-BVem_egD.js} +1 -1
- package/console-dist/assets/shallow-Cin0mLuv.js +1 -0
- package/console-dist/assets/sliders-horizontal-BNKmYQgd.js +1 -0
- package/console-dist/assets/smart-factory-DozakG3N.js +1 -0
- package/console-dist/assets/{source-host-miravo-D_AecPVc.js → source-host-miravo-B8eM2IHw.js} +1 -1
- package/console-dist/assets/stages-C0cErwSQ.js +1 -0
- package/console-dist/assets/status-DNfdEhTs.js +1 -0
- package/console-dist/assets/status-kit-BLG7OeIE.js +1 -0
- package/console-dist/assets/tabs-Ch_VG8_S.js +1 -0
- package/console-dist/assets/tags-BRYVC9vb.js +1 -0
- package/console-dist/assets/tags-bloWH2Qa.js +4 -0
- package/console-dist/assets/tank-xgQfMS2d.js +1 -0
- package/console-dist/assets/tooltip-B3vOB1Vu.js +1 -0
- package/console-dist/assets/{transition-nav-link-cn4KZD6W.js → transition-nav-link-CBN2nulP.js} +1 -1
- package/console-dist/assets/{trash-2-BJ-1df0F.js → trash-2-BH9HDsZv.js} +1 -1
- package/console-dist/assets/{triangle-alert-D1AraFcP.js → triangle-alert-DoAwrRgk.js} +1 -1
- package/console-dist/assets/use-engine-command-mutation-oLQW2r4F.js +1 -0
- package/console-dist/assets/use-transition-navigate-BDkvJJsk.js +2 -0
- package/console-dist/assets/useQuery-smgfSdOx.js +1 -0
- package/console-dist/assets/validation-BOdAwXQ_.js +1 -0
- package/console-dist/assets/water-treatment-BJXMtYlP.js +1 -0
- package/console-dist/index.html +68 -54
- package/miravo +2 -2
- package/package.json +1 -1
- package/console-dist/assets/api-DybIIqOe.js +0 -1
- package/console-dist/assets/asset-detail-tmOrYE8x.js +0 -1
- package/console-dist/assets/badge-D4jktT8T.js +0 -1
- package/console-dist/assets/catalog-DN-klsod.js +0 -1
- package/console-dist/assets/catalog-M-k7Y9Sp.js +0 -1
- package/console-dist/assets/catalog-template-icons-C7KJdJJX.js +0 -1
- package/console-dist/assets/checkbox-AaJhjtZk.js +0 -1
- package/console-dist/assets/chevron-down-CAk5w9Wt.js +0 -1
- package/console-dist/assets/chevron-right-BfZjrUWh.js +0 -1
- package/console-dist/assets/combobox-BFEY6lgO.js +0 -1
- package/console-dist/assets/control-CD9UoTvu.js +0 -1
- package/console-dist/assets/control-DHa2-a2v.js +0 -1
- package/console-dist/assets/copy-button-DHm7RGJ5.js +0 -1
- package/console-dist/assets/events-D19CzgoQ.js +0 -1
- package/console-dist/assets/events-DmftG8n5.js +0 -1
- package/console-dist/assets/export-tab-ouFgYEU_.js +0 -1
- package/console-dist/assets/factory-CT2VYi0n.js +0 -1
- package/console-dist/assets/factory-DSrBtcG2.js +0 -1
- package/console-dist/assets/format-OUFL_tef.js +0 -1
- package/console-dist/assets/index-DuJJSpJp.js +0 -12
- package/console-dist/assets/index-iEV9hU2I.css +0 -2
- package/console-dist/assets/integrations-DWW9HjH0.js +0 -1
- package/console-dist/assets/integrations-DoXNrzD5.js +0 -1
- package/console-dist/assets/models-CrDBHBV5.js +0 -1
- package/console-dist/assets/models-jBVcY8Xd.js +0 -1
- package/console-dist/assets/not-found-BqVny4Md.js +0 -1
- package/console-dist/assets/play-TTg_EXSa.js +0 -1
- package/console-dist/assets/plus-BbVbvFTe.js +0 -1
- package/console-dist/assets/protocol-card-B2SpAJKe.js +0 -1
- package/console-dist/assets/query-fetch-error-C2Ec4RQS.js +0 -1
- package/console-dist/assets/select-Bg6PPro0.js +0 -1
- package/console-dist/assets/tabs-bI9sskHy.js +0 -1
- package/console-dist/assets/tags-B7e7VYVW.js +0 -1
- package/console-dist/assets/tags-DJJKQRZZ.js +0 -4
- package/console-dist/assets/use-engine-command-mutation-DMkQxmt9.js +0 -1
- package/console-dist/assets/use-transition-navigate-BiV2QCcA.js +0 -2
- package/console-dist/assets/validation-q38DYDwu.js +0 -1
- /package/console-dist/assets/{chunk-OE4NN4TA-Q4iNR9l9.js → chunk-OE4NN4TA-DBWZidbW.js} +0 -0
- /package/console-dist/assets/{dist-CtuJWBnP.js → dist-xY0pK9Wy.js} +0 -0
- /package/console-dist/assets/{integration-targets-BehiqWyT.js → integration-targets-Byvdd3Or.js} +0 -0
- /package/console-dist/assets/{runtime-link-ChF8TM68.js → runtime-link-BRnaEnOm.js} +0 -0
- /package/console-dist/assets/{transition-types-049V0Kr0.js → transition-types-BKZuWApE.js} +0 -0
- /package/console-dist/assets/{utils-BO2u-wC_.js → utils-XFKvwlFT.js} +0 -0
- /package/console-dist/assets/{vendor-table-Br-cHaxY.js → vendor-table-BQAIXM34.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,r as t}from"./rolldown-runtime-COnpUsM8.js";import{c as n}from"./vendor-charts-95ykyDlI.js";import{ot as r}from"./vendor-ui-D8j69UH4.js";import{A as i,C as a,D as o,E as s,F as c,L as l,M as u,N as d,O as f,P as p,R as m,S as h,T as g,_,a as v,c as y,d as b,f as x,g as S,h as C,j as w,k as T,n as E,o as D,s as O,t as k,v as A,w as ee,x as j,y as M,z as te}from"./dom-CQuChC3G.js";function ne(e){return e}var N=Math.PI*2,re=1.2,ie=[0,.2,.42,.62],P=(e,t)=>e[0]*t[0]+e[1]*t[1]+e[2]*t[2],F=(e,t)=>[e[0]+t[0],e[1]+t[1],e[2]+t[2]],I=(e,t)=>[e[0]-t[0],e[1]-t[1],e[2]-t[2]],L=(e,t)=>[e[0]*t,e[1]*t,e[2]*t],R=e=>Math.hypot(e[0],e[1],e[2]),z=e=>{let t=R(e)||1;return[e[0]/t,e[1]/t,e[2]/t]},B=(e,t)=>[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]],V=(e,t,n)=>[e[0]+(t[0]-e[0])*n,e[1]+(t[1]-e[1])*n,e[2]+(t[2]-e[2])*n];function H(e){let{sinA:t,cosA:n,sinE:r,cosE:i}=C(e);return[n*i,t*i,r]}function ae(e){let{sinA:t,cosA:n}=C(e);return z([-t,n,re])}var U=e=>C(e).k;function oe(e){let t=0;for(;t<ie.length&&e>=ie[t];)t++;return t}function se(e,t){let n=z(t),r=z(B(Math.abs(n[2])>.9?[1,0,0]:[0,0,1],n));return{o:e,a:n,u:r,v:B(n,r)}}function W(e,t,n,r){let i=Math.cos(r),a=Math.sin(r);return[e.o[0]+e.a[0]*t+n*(i*e.u[0]+a*e.v[0]),e.o[1]+e.a[1]*t+n*(i*e.u[1]+a*e.v[1]),e.o[2]+e.a[2]*t+n*(i*e.u[2]+a*e.v[2])]}var ce=(e,t)=>{let n=Math.cos(t),r=Math.sin(t);return[n*e.u[0]+r*e.v[0],n*e.u[1]+r*e.v[1],n*e.u[2]+r*e.v[2]]},le=(e,t)=>Math.atan2(P(t,e.v),P(t,e.u));function ue(e){let t=[...e].sort((e,t)=>e.p[0]-t.p[0]||e.p[1]-t.p[1]);if(t.length<3)return t;let n=(e,t,n)=>(t.p[0]-e.p[0])*(n.p[1]-e.p[1])-(t.p[1]-e.p[1])*(n.p[0]-e.p[0]),r=[];for(let e of t){for(;r.length>=2&&n(r[r.length-2],r[r.length-1],e)<=1e-9;)r.pop();r.push(e)}let i=[];for(let e=t.length-1;e>=0;e--){let r=t[e];for(;i.length>=2&&n(i[i.length-2],i[i.length-1],r)<=1e-9;)i.pop();i.push(r)}return[...r.slice(0,-1),...i.slice(0,-1)]}var de=e=>ue(e.map(e=>({p:e}))).map(({p:e})=>e);function fe(e){let t=e.length,n=[],r=e.findIndex((n,r)=>n!==e[(r+t-1)%t]);if(r<0){let r=e[0];return r!=null&&n.push({key:r,run:Array.from({length:t+1},(e,n)=>n%t)}),n}let i=null,a=e=>{e&&e.key!==null&&n.push({key:e.key,run:e.run})};for(let n=0;n<t;n++){let o=(r+n)%t,s=e[o]??null;if(i&&i.key===s){i.run.push((o+1)%t);continue}a(i),i={key:s,run:[o,(o+1)%t]}}return a(i),n}var pe=(e,t=16,n=112,r=0)=>Math.max(t,Math.min(n,r?Math.ceil(N*e*r/3):Math.round(e*1.3/4)*4)),me=e=>e.reduce((t,[n,r],i)=>{let[a,o]=e[(i+1)%e.length];return t+n*o-a*r},0),he=e=>me(e)<0?[...e].reverse():[...e],G=(e,t)=>e[t],ge=e=>(e%N+N)%N;function _e(e,t,n,r,i,a){let o=[];if(Math.abs(i)>1e-9){let e=-(a*n.a)/(i*n.flat);if(e>-1&&e<1){let t=Math.acos(e);o.push(n.phi-t,n.phi+t)}}if(Math.abs(e)>1e-9)for(let n of ie){let i=(n-t*r.a)/(e*r.flat);if(i>-1&&i<1){let e=Math.acos(i);o.push(r.phi-e,r.phi+e)}}let s=[...new Set(o.map(e=>Math.round(ge(e)*1e9)/1e9))].sort((e,t)=>e-t),c=o=>i*n.flat*Math.cos(o-n.phi)+a*n.a<=1e-9?-1:oe(e*r.flat*Math.cos(o-r.phi)+t*r.a);if(!s.length){let e=c(0);return e<0?[]:[{tone:e,from:0,to:N}]}let l=s.map((e,t)=>{let n=t+1<s.length?G(s,t+1):G(s,0)+N;return{tone:c((e+n)/2),from:e,to:n}}),u=[];for(let e of l){let t=u[u.length-1];t&&t.tone===e.tone&&Math.abs(t.to-e.from)<1e-9?t.to=e.to:u.push({...e})}let d=u[0],f=u[u.length-1];return d&&f&&u.length>1&&d.tone===f.tone&&Math.abs(f.to-N-d.from)<1e-9&&(u.pop(),d.from=f.from-N),u.filter(e=>e.tone>=0)}function ve(e){let t=e.length-1,n=Array.from({length:t},(t,n)=>G(e,n+1)[0]-G(e,n)[0]),r=n.map((t,n)=>(G(e,n+1)[1]-G(e,n)[1])/t),i=Array(t+1).fill(0),a=(e,t,n,r)=>{let i=((2*e+t)*n-e*r)/(e+t);return Math.sign(i)===Math.sign(n)?Math.sign(n)!==Math.sign(r)&&Math.abs(i)>Math.abs(3*n)&&(i=3*n):i=0,i};t===1?(i[0]=G(r,0),i[1]=G(r,0)):(i[0]=a(G(n,0),G(n,1),G(r,0),G(r,1)),i[t]=a(G(n,t-1),G(n,t-2),G(r,t-1),G(r,t-2)));for(let e=1;e<t;e++){if(G(r,e-1)*G(r,e)<=0)continue;let t=2*G(n,e)+G(n,e-1),a=G(n,e)+2*G(n,e-1);i[e]=(t+a)/(t/G(r,e-1)+a/G(r,e))}return i}function ye(e){let t=e.length,n=Array(t-1).fill(null),r=0;for(;r<t-1;){let i=r+1;for(;i<t-1&&G(e,i)[2]&&Math.abs(G(e,i+1)[0]-G(e,i)[0])>1e-9&&Math.abs(G(e,i)[0]-G(e,i-1)[0])>1e-9;)i++;let a=e.slice(r,i+1).map(([e,t])=>[e,t]),o=a.length-1;if(o>=2&&a.every((e,t)=>t===0||Math.abs(e[0]-G(a,t-1)[0])>1e-9)){let e=ve(a);for(let t=0;t<o;t++){let[i,o]=G(a,t),[s,c]=G(a,t+1),l=s-i,u=G(e,t),d=G(e,t+1),f=e=>{let t=(e-i)/l;return(2*t**3-3*t**2+1)*o+(t**3-2*t**2+t)*l*u+(-2*t**3+3*t**2)*c+(t**3-t**2)*l*d},p=e=>{let t=(e-i)/l;return((6*t**2-6*t)*o+(6*t-6*t**2)*c)/l+(3*t**2-4*t+1)*u+(3*t**2-2*t)*d};n[r+t]={radius:f,slope:p}}}r=i}return n}function be(e,t,n){let r=U(t),i=[G(e,0)];for(let t=0;t<e.length-1;t++){let a=n[t];if(a){let n=(e,t,o)=>{let s=(e+t)/2,c=(a.radius(e)+a.radius(t))/2;o<6&&Math.abs(a.radius(s)-c)*r>.2&&(n(e,s,o+1),i.push([s,a.radius(s),1]),n(s,t,o+1))};n(G(e,t)[0],G(e,t+1)[0],0)}i.push(G(e,t+1))}return i}var xe=6,Se=.35,Ce=8,we=.1;function Te(e,t,n,r){let i=H(n),o=ae(n),c={a:P(t.a,i),flat:Math.hypot(P(t.u,i),P(t.v,i)),phi:Math.atan2(P(t.v,i),P(t.u,i))},l={a:P(t.a,o),flat:Math.hypot(P(t.u,o),P(t.v,o)),phi:Math.atan2(P(t.v,o),P(t.u,o))},u=e.length,d=[];for(let t=0;t<u-1;t++){let n=G(e,t+1)[0]-G(e,t)[0],r=G(e,t+1)[1]-G(e,t)[1],i=Math.hypot(n,r)||1;d.push([n/i,-r/i])}let f=ye(e),p=(t,n)=>{if(t<=0||t>=u-1||!G(e,t)[2])return n;let r=G(d,t-1),i=G(d,t),a=r[0]+i[0],o=r[1]+i[1],s=Math.hypot(a,o)||1;return[a/s,o/s]},m=(t,n)=>{let r=G(e,t)[0],i=G(e,t+1)[0],a=r+(i-r)*n,o=Math.sign(i-r)||1,s=f[t];if(s){let e=Math.hypot(1,s.slope(a));return[o/e,-o*s.slope(a)/e]}let c=p(t,G(d,t)),l=p(t+1,G(d,t)),u=c[0]+(l[0]-c[0])*n,m=c[1]+(l[1]-c[1])*n,h=Math.hypot(u,m)||1;return[u/h,m/h]},h=(r,i,o)=>{let[s,c]=G(e,r),[l,u]=G(e,r+1),d=s+(l-s)*i,p=f[r];return a(W(t,d,p?p.radius(d):c+(u-c)*i,o),n)},g=[[],[],[],[],[]],_=N/Math.max(24,Math.min(192,r*1.5)),v=(e,t,n,r)=>{let i=Math.max(1,Math.ceil((r-n)/_));return Array.from({length:i+1},(a,o)=>h(e,t,n+(r-n)*o/i))},y=(e,t)=>(((e.from+e.to)/2-t)%N+N)%N,b=(e,t)=>{let[n,r]=m(e,t),i=new Map,a=G(d,e);for(let e of _e(n,r,c,l,a[0],a[1])){let t=i.get(e.tone);t?t.push(e):i.set(e.tone,[e])}for(let e of i.values())e.sort((e,t)=>y(e,l.phi)-y(t,l.phi));return{i:e,u:t,groups:i}},x=(e,t)=>{if(e.groups.size!==t.groups.size)return!1;for(let[n,r]of e.groups)if((t.groups.get(n)??[]).length!==r.length)return!1;return!0},S=(e,t)=>{let n={...t},r=(e.from+e.to)/2;for(;(n.from+n.to)/2-r>Math.PI;)n.from-=N,n.to-=N;for(;r-(n.from+n.to)/2>Math.PI;)n.from+=N,n.to+=N;return n},C=(e,t,n)=>G(e.groups.get(t),n),w=(e,t,n,r)=>{let i=0;for(let[a,o]of n.groups)o.forEach((o,s)=>{let c=S(o,C(t,a,s)),l=S(o,C(r,a,s));for(let a of[`from`,`to`]){let s=h(e,n.u,o[a]),u=h(e,t.u,c[a]),d=h(e,r.u,l[a]);i=Math.max(i,Math.hypot(s[0]-(u[0]+d[0])/2,s[1]-(u[1]+d[1])/2))}});return i},T=(e,t)=>{let n=G(t,0),r=t.length-1,i=G(t,r);for(let[a,o]of n.groups.get(e).entries()){let c=[o];for(let n=1;n<t.length;n++)c.push(S(G(c,n-1),C(G(t,n),e,a)));let l=G(c,r),u=[...v(n.i,n.u,o.from,o.to)];for(let e=1;e<r;e++){let n=G(t,e);u.push(h(n.i,n.u,G(c,e).to))}u.push(...v(i.i,i.u,l.from,l.to).reverse());for(let e=r-1;e>=1;e--){let n=G(t,e);u.push(h(n.i,n.u,G(c,e).from))}G(g,e).push(s(he(u),!0))}},E=(e,t,n)=>{let r=t.groups.get(e)??[],i=(n.groups.get(e)??[]).map(e=>({arc:e,used:!1})),a=(r,i)=>{let a=[...v(t.i,t.u,r.from,r.to),...v(n.i,n.u,i.from,i.to).reverse()];G(g,e).push(s(he(a),!0))};for(let e of r){let t=null,n=-1/0;for(let r of i){if(r.used)continue;let i=S(e,r.arc),a=Math.min(e.to,i.to)-Math.max(e.from,i.from);a>n&&(n=a,t=r)}if(t&&n>-.05)t.used=!0,a(e,S(e,t.arc));else{let t=(e.from+e.to)/2;a(e,{from:t,to:t})}}for(let e of i){if(e.used)continue;let t=(e.arc.from+e.arc.to)/2;a({from:t,to:t},e.arc)}},D=U(n),O=[],k=()=>{let e=[...new Set(O.flatMap(e=>[...e.groups.keys()]))].sort((e,t)=>e-t);for(let t of e){let e=e=>(e.groups.get(t)??[]).length,n=0;for(let r=1;r<=O.length;r++)r<O.length&&e(G(O,r-1))===e(G(O,r))||(r-1>n&&e(G(O,n))&&T(t,O.slice(n,r)),r<O.length&&E(t,G(O,r-1),G(O,r)),n=r)}O=[]};for(let t=0;t<u-1;t++){let n=G(e,t+1)[0]-G(e,t)[0];if(Math.abs(n)<1e-9){k();continue}let r=Math.hypot(n,G(e,t+1)[1]-G(e,t)[1])*D/xe,i=Math.max(1,Math.min(Ce,Math.ceil(Math.log2(Math.max(2,r/we))))),a=Array.from({length:xe+1},(e,n)=>b(t,n/xe));O.push(G(a,0));let o=(e,n,r)=>{let a=b(t,(e.u+n.u)/2);if(!(r<i&&(!x(e,n)||!x(e,a)||r<6&&w(t,e,a,n)>Se))){O.push(n);return}o(e,a,r+1),o(a,n,r+1)};for(let e=1;e<=xe;e++)o(G(a,e-1),G(a,e),0)}return k(),g}var K=(e,t)=>e[t],Ee=e=>(e%N+N)%N,De=e=>Math.max(...e.map(([,e])=>e)),Oe=e=>e.some(e=>!!e[2]);function ke(e){let t=e.length,n=+(K(e,0)[1]<=1e-9),r=K(e,t-1)[1]<=1e-9?t-2:t-1,i=e.slice(n,r+1);for(let e=1;e<i.length;e++)if(K(i,e)[0]-K(i,e-1)[0]<=1e-9)return null;return i.length>=3?i:null}function Ae(e,t,n,r){let i=H(n),a=P(t.a,i),o=P(t.u,i),s=P(t.v,i),c=Math.atan2(s,o),l=Math.hypot(o,s)||1e-9,u=K(e,0)[0],d=K(e,e.length-1)[0],f=t=>{let n=1;for(;n<e.length-1&&K(e,n)[0]<t;)n++;let[r,i]=K(e,n-1),[a,o]=K(e,n);return i+(o-i)*(t-r)/(a-r||1)},p=e=>{let n=[];for(let i=0;i<=r;i++){let o=u+(d-u)*i/r,s=(d-u)/r/2||.01,p=(f(Math.min(d,o+s))-f(Math.max(u,o-s)))/(Math.min(d,o+s)-Math.max(u,o-s)||1)*a/l;Math.abs(p)>1||n.push(W(t,o,f(o),c+e*Math.acos(p)))}return n};return[p(1),p(-1)]}function je(e,t,n){let r=H(n),i=P(t.a,r),o=Math.atan2(P(t.v,r),P(t.u,r)),[c,l]=Ae(e,t,n,96);if(c.length<=96||l.length<=96)return null;let u=K(e,0)[0],d=K(e,e.length-1)[0],f=e=>le(t,I(e,F(t.o,L(t.a,P(I(e,t.o),t.a))))),p=(e,r,i,o,s)=>{let c=Ee(o-i);Ee(s-i)>c&&(c-=N);let l=Math.max(4,Math.ceil(Math.abs(c)/(N/96)),Math.ceil(Math.abs(c)*r*U(n)/1.5));return Array.from({length:l+1},(o,s)=>a(W(t,e,r,i+c*s/l),n))},m=K(e,0)[1],h=K(e,e.length-1)[1],g=-i>0?o+Math.PI:o,_=i>0?o+Math.PI:o,v=c.map(e=>a(e,n)),y=l.map(e=>a(e,n)),b=p(d,h,f(K(c,c.length-1)),f(K(l,l.length-1)),_),x=p(u,m,f(K(l,0)),f(K(c,0)),g),S=s([...v,...b,...[...y].reverse(),...x],!0),C=[s(v),s(y),s(b),s(x)].join(``),w=de([...p(u,m,0,N-1e-6,Math.PI),...p(d,h,0,N-1e-6,Math.PI),...v,...y]),T=0;for(let e of[...v,...y]){let t=1/0;for(let n=0;n<w.length;n++){let r=K(w,n),i=K(w,(n+1)%w.length),a=i[0]-r[0],o=i[1]-r[1],s=Math.max(0,Math.min(1,((e[0]-r[0])*a+(e[1]-r[1])*o)/(a*a+o*o||1)));t=Math.min(t,Math.hypot(e[0]-r[0]-a*s,e[1]-r[1]-o*s))}T=Math.max(T,t)}return{fill:S,outline:C,gap:T}}function Me(e,t,n,r,i){let o=i?ye(e):null,c=o?.some(Boolean)?be(e,n,o):e,l=ke(c),u=l?je(l,t,n):null;if(u&&u.gap>.5)return{fill:u.fill,outline:u.outline};let d=Math.min(320,Math.max(r,Math.ceil(N*De(c)*U(n)/1.5))),f=[];for(let[e,r]of c)for(let i=0;i<d;i++)f.push({p:a(W(t,e,r,i/d*N),n)});let p=s(ue(f).map(({p:e})=>e),!0);return{fill:p,outline:p}}function Ne(e,t,n,r=pe(De(e),32,160,U(n))){let i=Oe(e),o=H(n),c=ae(n),l=P(t.a,o),u=P(t.u,o),d=P(t.v,o),f=P(t.a,c),p=P(t.u,c),m=P(t.v,c),h=r,g=e.length,_=e.map(([e,r])=>Array.from({length:h},(i,o)=>a(W(t,e,r,o/h*N),n))),v=[],y=[];for(let e=0;e<h;e++){let t=(e+.5)/h*N;v.push(Math.cos(t)),y.push(Math.sin(t))}let b=[],x=[];for(let t=0;t<g-1;t++){let n=K(e,t+1)[0]-K(e,t)[0],r=K(e,t+1)[1]-K(e,t)[1],i=Math.hypot(n,r),a=[],o=[];for(let e=0;e<h;e++){if(i<1e-9){a.push(!1),o.push(0);continue}let t=K(v,e),s=K(y,e);a.push(n*(t*u+s*d)-r*l>1e-6*i),o.push(oe((n*(t*p+s*m)-r*f)/i))}b.push(a),x.push(o)}let S=[[],[],[],[],[]],C=i?Te(e,t,n,r):null;for(let[e,t]of(C??[]).entries())K(S,e).push(...t);for(let t=0;t<g-1;t++){if(C&&Math.abs(K(e,t+1)[0]-K(e,t)[0])>1e-9)continue;let n=K(b,t).map((e,n)=>e?K(K(x,t),n):null);for(let{key:e,run:r}of fe(n)){let n=r.map(e=>K(K(_,t),e)),i=r.map(e=>K(K(_,t+1),e)).reverse();K(S,e).push(s(he([...n,...i]),!0))}}let w=Math.atan2(d,u),T=Math.hypot(u,d),E=t=>{let n=K(e,t+1)[0]-K(e,t)[0],r=K(e,t+1)[1]-K(e,t)[1];if(Math.hypot(n,r)<1e-9)return null;if(Math.abs(n)<1e-9||T<1e-9)return-r*l>1e-9?[-1,1]:null;let i=r*l/(n*T);return n>0?[Math.max(-1,i),1]:[-1,Math.min(1,i)]},D=e=>{let t=e.filter(e=>e!==null);if(t.length<e.length)return[];let n=Math.max(...t.map(([e])=>e)),r=Math.min(...t.map(([,e])=>e));if(n>=r-1e-9)return[];let i=Math.acos(Math.min(1,r)),a=Math.acos(Math.max(-1,n));return r>=1&&n<=-1?[[w,w+N]]:r>=1?[[w-a,w+a]]:n<=-1?[[w+i,w+N-i]]:[[w+i,w+a],[w-a,w-i]]},O=[];for(let r=1;r<g-1;r++){let[i,o,c]=K(e,r);if(!(c||o<=1e-9))for(let[e,c]of D([E(r-1),E(r)])){let r=Math.max(2,Math.ceil((c-e)*Math.max(o,1e-6)*U(n)/1.5));O.push(s(Array.from({length:r+1},(s,l)=>a(W(t,i,o,e+(c-e)*l/r),n))))}}let{fill:k,outline:A}=Me(e,t,n,h,i);return{fill:k,outline:A,crease:O.join(``),top:K(S,4).join(``),shades:S.slice(0,4).map(e=>e.join(``)),seamless:!!C}}var Pe=(e,t,n,r,i)=>Ne([[e,0],[e,n],[t,n],[t,0]],r,i,pe(n,32,160,U(i)));function Fe(e,t,n){let r=K(e,0),i=K(e,e.length-1);return Ne([[r[0],0],...e,[i[0],0]],t,n,pe(De(e),32,160,U(n)))}var Ie=t({add3:()=>F,arcOf:()=>Re,cross3:()=>B,cut:()=>J,disc:()=>Pe,dot3:()=>P,dotsOf:()=>Be,fillet:()=>Ve,frameAlong:()=>se,len3:()=>R,mul3:()=>L,pathLength:()=>Ue,pointAlong:()=>We,resample:()=>He,ribsOf:()=>ze,scaleOf:()=>U,solidOf:()=>Fe,sub3:()=>I,unit3:()=>z,viewOf:()=>H}),q=(e,t)=>e[t],Le=(e,[t,n])=>{let r=Math.max(0,Math.min(1,(e-t)/(n-t||1e-9)));return r*r*(3-2*r)};function Re(e,t,n,r,{slope:i=0,steps:o=0,least:c=.02,inward:l=!1,from:u=0,to:d=N,trim:f=.3}={}){let p=H(r),m=P(e.a,p),h=P(e.u,p),g=P(e.v,p),_=Math.hypot(h,g),v=Math.atan2(g,h),y=Math.hypot(1,i),b=Math.abs(d-u-N)<1e-9,x;if(_<1e-9)x=(l?i*m/y>c:-i*m/y>c)?[[v,v+N]]:[];else if(l){let e=(i*m-c*y)/_;x=e<=-1?[]:e>=1?[[v,v+N]]:[[v+Math.acos(e),v+N-Math.acos(e)]]}else{let e=(c*y+i*m)/_;x=e>=1?[]:e<=-1?[[v,v+N]]:[[v-Math.acos(e),v+Math.acos(e)]]}let S=i=>a(W(e,t,n,i),r),C=e=>{let t=S(e-.001),n=S(e+.001);return Math.hypot(n[0]-t[0],n[1]-t[1])/.002},w=e=>Math.max(2,Math.ceil((o||pe(n,24,112))*e/N),Math.ceil(e*n*U(r)/1.5)),T=[];for(let[e,t]of x){if(t-e>=N-1e-9&&b){let e=w(N);T.push(s(Array.from({length:e},(t,n)=>S(u+n/e*N)),!0));continue}let n=b?[[e,t,!0,!0]]:[];if(!b)for(let r=-2;r<=2;r++){let i=Math.max(e+r*N,u),a=Math.min(t+r*N,d);a-i>1e-6&&n.push([i,a,i>u+1e-9,a<d-1e-9])}for(let[e,t,r,i]of n){let n=t-e,a=r&&f>0?Math.min(n*.25,f/(C(e)||1)):0,o=i&&f>0?Math.min(n*.25,f/(C(t)||1)):0,c=e+a,l=t-o,u=w(l-c);T.push(s(Array.from({length:u+1},(e,t)=>S(c+(l-c)*t/u))))}}return T.join(``)}function ze(e,t,n,r,i,o,{phase:c=0,twist:l=0,r1:u=r,fade:d,seams:f=!1}){let p=H(o),m=[],h=(u-r)/(n-t||1);for(let f=0;f<i;f++){let g=c+f/i*N,_=ce(e,g+l/2),v=P(z([_[0]-h*e.a[0],_[1]-h*e.a[1],_[2]-h*e.a[2]]),p),y=s([a(W(e,t,r,g),o),a(W(e,n,u,g+l),o)]),b=Le(v,d);b>.02&&m.push({d:y,alpha:b})}let g=f?[f===`last`?``:Re(e,t,r,o,{slope:h}),f===`first`?``:Re(e,n,u,o,{slope:h})].filter(Boolean):[];return[...m,...g.map(e=>({d:e,alpha:1}))]}function Be(e,t,n,r,i,{phase:o=0,slope:s=0,least:c=.08,all:l=!1,fade:u=null}={}){let d=H(i),f=[];for(let p=0;p<r;p++){let m=o+p/r*N,h=1;if(!l){let t=ce(e,m),n=P(z([t[0]-s*e.a[0],t[1]-s*e.a[1],t[2]-s*e.a[2]]),d);if(u)h=Le(n,u);else if(n<c)continue;if(h<=.02)continue}let[g,_]=a(W(e,t,n,m),i);f.push(h<1?[g,_,h]:[g,_])}return f}function Ve(e,t,n=7,{P:r=null,tube:i=0,margin:a=1.3}={}){if(e.length<3)return e.map(e=>[e[0],e[1],e[2]]);let o=r&&i?H(r):null,s=e=>[e[0],e[1],e[2]],c=[s(q(e,0))];for(let r=1;r<e.length-1;r++){let l=q(e,r-1),u=q(e,r),d=q(e,r+1),f=z(I(u,l)),p=z(I(d,u)),m=Math.max(-1,Math.min(1,P(f,p))),h=Math.acos(m);if(h<.001){c.push(s(u));continue}let g=Math.min(R(I(u,l)),R(I(d,u)))*.48,_=o?Math.abs(P(z(B(f,p)),o)):1,v=o?Math.max(t,a*i/(.7*Math.max(.05,_)**2)):t,y=Math.min(v*Math.tan(h/2),g),b=I(u,L(f,y)),x=F(u,L(p,y)),S=Math.max(2,Math.ceil(n*h/(Math.PI/2)));for(let e=0;e<=S;e++){let t=e/S;c.push(V(V(b,u,t),V(u,x,t),t))}}return c.push(s(q(e,e.length-1))),c}function He(e,t){let n=[0];for(let t=1;t<e.length;t++)n.push(q(n,t-1)+R(I(q(e,t),q(e,t-1))));let r=q(n,n.length-1),i=Math.max(1,Math.round(r/t)),a=[],o=1;for(let t=0;t<=i;t++){let s=r*t/i;for(;o<e.length-1&&q(n,o)<s;)o++;let c=q(e,o-1),l=q(e,o),u=q(n,o)-q(n,o-1)||1;a.push(V(c,l,Math.min(1,Math.max(0,(s-q(n,o-1))/u))))}return a}function Ue(e){let t=0;for(let n=1;n<e.length;n++)t+=R(I(q(e,n),q(e,n-1)));return t}function J(e,t,n){let r=[],i=0;for(let a=1;a<e.length;a++){let o=q(e,a-1),s=q(e,a),c=R(I(s,o)),l=i,u=i+c;if(u>=t&&l<=n){let e=Math.max(0,(t-l)/(c||1)),i=Math.min(1,(n-l)/(c||1));r.length||r.push(V(o,s,e)),r.push(V(o,s,i))}i=u}return r}var We=(e,t)=>J(e,t,t+.01)[0]??q(e,e.length-1),Ge=(()=>{let e=Math.hypot(-.55,-.835);return[-.55/e,-.835/e]})(),Ke=(e,t=!0)=>s(e,t),Y=(e,t)=>e[t],qe=e=>e.reduce((t,[n,r],i)=>{let[a,o]=Y(e,(i+1)%e.length);return t+n*o-a*r},0);function Je(e){let t={left:[],right:[],shineA:[],shineB:[],shadeA:[],shadeB:[]};for(let{p:n,nx:r,ny:i,half:a}of e){t.left.push([n[0]+r*a,n[1]+i*a]),t.right.push([n[0]-r*a,n[1]-i*a]);let e=r*Ge[0]+i*Ge[1],o=a*.44*e,s=a*.24;t.shineA.push([n[0]+r*(o+s),n[1]+i*(o+s)]),t.shineB.push([n[0]+r*(o-s),n[1]+i*(o-s)]);let c=-a*.62*e,l=a*.2;t.shadeA.push([n[0]+r*(c+l),n[1]+i*(c+l)]),t.shadeB.push([n[0]+r*(c-l),n[1]+i*(c-l)])}return t}function Ye(e,t,n,r){let i=(e,t)=>{for(let i=0;i<n.flat.length;i++){if(Math.abs(Y(n.along,i)-t)<=r)continue;let a=Y(n.flat,i);if(Math.hypot(e[0]-a[0],e[1]-a[1])<Y(n.half,i)*.9)return!0}return!1},a=``,o=[];return e.forEach((e,n)=>{i(e,Y(t,n))?(o.length>1&&(a+=s(o)),o=[]):o.push(e)}),o.length>1&&(a+=s(o)),a}function Xe(e,t,n,r,i){let o=B(t,H(i));R(o)<1e-6&&(o=se([0,0,0],t).u),o=z(o);let s=z(B(t,o)),c=Array.from({length:28},(t,r)=>{let c=r/28*Math.PI*2;return a(F(e,F(L(o,n*Math.cos(c)),L(s,n*Math.sin(c)))),i)}),l=a(e,i),u=a(F(e,s),i),d=(u[0]-l[0])*r[0]+(u[1]-l[1])*r[1]>0?28/2:0,f=e=>Array.from({length:15},(t,n)=>Y(c,(e+n)%28));return{ring:c,arc:f(d),inner:f((d+28/2)%28)}}function Ze(e,t,n,r,i,a){let o=e=>(e[0]-t[0])*n+(e[1]-t[1])*r,s=e.map(o),c=Math.min(i,a),l=Math.max(i,a),u=[],d=(t,n)=>{let r=(n-Y(s,t))/(Y(s,t+1)-Y(s,t)||1e-9),i=Y(e,t),a=Y(e,t+1);return[i[0]+(a[0]-i[0])*r,i[1]+(a[1]-i[1])*r]};for(let t=0;t<e.length;t++){let n=Y(s,t);if(n>=c&&n<=l&&u.push(Y(e,t)),t<e.length-1)for(let e of[c,l])(n-e)*(Y(s,t+1)-e)<0&&u.push(d(t,e))}return u.map(e=>[e,o(e)]).sort((e,t)=>i>a?t[1]-e[1]:e[1]-t[1]).map(([e])=>e)}function Qe(e,t,n,r,i){let a=t.map(([t,n])=>[Math.max(0,Math.min(t,n)),Math.min(e,Math.max(t,n))]).filter(([e,t])=>t-e>1e-6).sort((e,t)=>e[0]-t[0]),o=[],s=0;for(let[e,t]of a)e>s+1e-6&&o.push([s,e,s>0,!0]),s=Math.max(s,t);let c=a[a.length-1];e>s+1e-6&&o.push([s,e,s>0,a.length>0&&c[1]>=e-1e-6]);let l=[];for(let[e,t,i,a]of o){let o=[e,...n.filter(n=>n>e+1e-6&&n<t-1e-6).sort((e,t)=>e-t),t];for(let e=0;e<o.length-1;e++){let t=Y(o,e),n=Y(o,e+1),s=Math.max(1,Math.ceil((n-t)/r-1e-9));for(let r=0;r<s;r++)l.push({from:t+(n-t)*r/s,to:t+(n-t)*(r+1)/s,open0:!(e===0&&r===0),open1:!(e===o.length-2&&r===s-1),gap0:e===0&&r===0&&i,gap1:e===o.length-2&&r===s-1&&a})}}let u=l[0],d=l[l.length-1];return i&&!a.length&&u&&d&&(u.open0=!0,d.open1=!0),l}function $e(e,t,n,{maxLength:r=30,spacing:i=2.2,closed:o=!1,breaks:c=[],gaps:l=[],caps:u=!0,stripes:d=`auto`}={}){let f=He(e,i),p=Ue(f),m=typeof t==`function`?t:()=>t,h=U(n),g=d===`auto`?Math.max(...Array.from({length:33},(e,t)=>m(t/32)))*h>1.3:!!d,_=.5,v=[],y=o&&!l.length,b=e=>y?(e%p+p)%p:Math.max(0,Math.min(p,e)),x=Math.max(.05,Math.min(i,p/4)*.5),S=(e,t,r)=>{let i=a(We(f,b(e-x)),n),o=a(We(f,b(e+x)),n),s=o[0]-i[0],c=o[1]-i[1],l=Math.hypot(s,c)||1;return s/=l,c/=l,{p:t,nx:-c,ny:s,half:r}},C=(e,t)=>{let r=J(f,Math.max(0,e),Math.min(p,t));y&&e<0&&(r=[...J(f,p+e,p),...r.slice(1)]),y&&t>p&&(r=[...r,...J(f,0,t-p).slice(1)]);let i=y?e:Math.max(0,e),o=r.map((e,t)=>(t>0&&(i+=R(I(e,Y(r,t-1)))),i)),s=r.map(e=>a(e,n)),c=o.map(e=>m(y?b(e)/p:Math.min(1,Math.max(0,e/p)))*h),l=s.map((e,t)=>S(Y(o,t),e,Y(c,t)));return{points:r,flat:s,widths:c,frames:l,along:o}},w=C(0,p),T={flat:w.flat,half:w.widths,along:w.along},E=Math.max(...w.widths)/h*1.5,D=Array.isArray(u)?u:[!!u,!!u];for(let e of Qe(p,l,c,r,o)){let t=e.open0&&(e.from>0||y),r=e.open1&&(e.to<p||y),i=C(t?e.from-_:e.from,r?e.to+_:e.to);if(i.points.length<2)continue;let a=t||r?C(t?e.from-2*_:e.from,r?e.to+2*_:e.to):i,{points:o,flat:c,widths:l,frames:u,along:d}=i,m=Je(u),b=a===i?m:Je(a.frames),x=Ke([...m.left,...m.right.slice().reverse()]),S=y?s(m.left)+s(m.right):Ye(m.left,d,T,E)+Ye(m.right,d,T,E),w=[!e.open0&&!y&&(e.from<=1e-6||e.gap0),!e.open1&&!y&&(e.to>=p-1e-6||e.gap1)],O=[w[0]&&(e.gap0||D[0]),w[1]&&(e.gap1||D[1])],k=Math.sign(qe([...m.left,...m.right.slice().reverse()])),A=[null,null];[0,1].forEach(e=>{if(!O[e])return;let t=e?o.length-1:0,r=e?o.length-2:1,i=z(I(Y(o,e?t:r),Y(o,e?r:t))),a=e?i:L(i,-1),d=[Y(c,r)[0]-Y(c,t)[0],Y(c,r)[1]-Y(c,t)[1]],{ring:f,arc:p,inner:m}=Xe(Y(o,t),i,Y(l,t)/h,d,n),g=Math.sign(qe(f))===k?f:f.slice().reverse();x+=Ke(g),S+=s(p);let _=P(a,H(n))>0;_&&(S+=s(m)),A[e]={half:_?m:p,frame:Y(u,t)}});let ee=(e,t,n)=>{let[r,i]=A,a=i?Ze(...et(i,n,!1)):[],o=r?Ze(...et(r,n,!0)):[];return Ke([...e,...a,...t.slice().reverse(),...o])},j=({nx:e,ny:t})=>e*Ge[0]+t*Ge[1];v.push({mid:We(f,(e.from+e.to)/2),body:x,shine:ee(b.shineA,b.shineB,e=>[e.half*.44*j(e)+e.half*.24,e.half*.44*j(e)-e.half*.24]),shade:ee(b.shadeA,b.shadeB,e=>[-e.half*.62*j(e)+e.half*.2,-e.half*.62*j(e)-e.half*.2]),edges:S,wide:g,points:o,radii:l.map(e=>e/h),ends:w,from:e.from,to:e.to})}return v}function et(e,t,n){let[r,i]=t(e.frame);return[e.half,e.frame.p,e.frame.nx,e.frame.ny,n?i:r,n?r:i]}function tt(e,{tone:t=`hi`}={}){let n=e.wide?`<path class="tb-shine" d="${e.shine}"/><path class="tb-shade" d="${e.shade}"/>`:``;return`<g class="tb"><path class="tb-body" d="${e.body}"/>${n}<path class="iso-line tb-edge" data-tone="${t}" d="${e.edges}"/></g>`}var nt=e(n(),1),rt=r();function it(e,t){let n=[];for(let r=1;r<t.length;r++){let i=t[r-1],a=t[r],o=[a[0]-i[0],a[1]-i[1],a[2]-i[2]],s=Math.hypot(...o);if(!s)continue;let c=Math.max(0,Math.min(1,((e[0]-i[0])*o[0]+(e[1]-i[1])*o[1]+(e[2]-i[2])*o[2])/s**2));Math.hypot(i[0]+o[0]*c-e[0],i[1]+o[1]*c-e[1],i[2]+o[2]*c-e[2])<.05&&n.push([o[0]/s,o[1]/s,o[2]/s])}return n}function at(e,t){let n=[t[0]-e[0],t[1]-e[1],t[2]-e[2]],r=Math.hypot(...n)||1;return[n[0]/r,n[1]/r,n[2]/r]}function ot(e,t){for(let n=1;n<t.length;n++){let r=t[n-1],i=t[n],a=[i[0]-r[0],i[1]-r[1],i[2]-r[2]],o=a[0]**2+a[1]**2+a[2]**2,s=o?Math.max(0,Math.min(1,((e[0]-r[0])*a[0]+(e[1]-r[1])*a[1]+(e[2]-r[2])*a[2])/o)):0;if(Math.hypot(r[0]+a[0]*s-e[0],r[1]+a[1]*s-e[1],r[2]+a[2]*s-e[2])<.1)return!0}return!1}function st(e,t,n){return[e[0]+(t[0]-e[0])*n,e[1]+(t[1]-e[1])*n,e[2]+(t[2]-e[2])*n]}function ct(e,t,n){let r=[],i=0,a=n(e);for(let o=1;o<=16;o++){let s=o/16,c=n(st(e,t,s));if(c!==a){let[o,c]=[i,s];for(let r=0;r<24;r++){let r=(o+c)/2;n(st(e,t,r))===a?o=r:c=r}r.push([o,c])}[i,a]=[s,c]}return r}function lt(e,t,n){let{G:r,P:i,S:a,cyl:o}=e,{routes:s,posts:c,z:l,flowFromY:u=-1/0,flowAloftBeforeY:d=-1/0}=t,{slot:f,glide:p}=typeof n==`number`?{slot:(e,t)=>t&&e[1]>=n?1:0,glide:e=>e[1]>u&&e[1]<n-2&&(e[2]<3||e[1]<d)}:{slot:e=>n.layer(e),glide:n.glide},m=e=>e.flatMap((t,n)=>{let r=e[n-1];return r?[...ct(r,t,p).map(([e,n])=>st(r,t,p(st(r,t,e))?e:n)),t]:[t]}),h=e=>{let t=[],n=0;return e.forEach((r,i)=>{let a=e[i-1];if(!a)return;let o=Math.hypot(r[0]-a[0],r[1]-a[1],r[2]-a[2]);for(let[e,i]of ct(a,r,e=>f(e,!0)))t.push(n+o*((e+i)/2));n+=o}),t},g=[[]],_=(e,t,n=!1)=>{for(;g.length<=e;)g.push([]);n?g[e]?.unshift(t):g[e]?.push(t)};for(let[e,t,n,r=l,i=-14]of c)_(f([e,t,Math.max(i,0)],!1),o(e,t,2.6,i,1,{tone:`lo`},18)+o(e,t,.9,i+1,r-n-2-i,{tone:`mid`,crease:`none`},12)+o(e,t,1.8,r-n-1,1,{tone:`mid`},16));let v=[],y=(e,t)=>{let n=e.pts.length,r=e.pts[t?n-1:0],i=at(r,e.pts[t?n-2:1]),a=0;for(let t of s)if(t!==e)for(let e of it(r,t.pts)){if(Math.abs(e[0]*i[0]+e[1]*i[1]+e[2]*i[2])>.99)return{kind:`on`};a=Math.max(a,t.r)}return a?{kind:`tee`,run:a}:{kind:`free`}},b=new Map(s.map(e=>[e,[y(e,0),y(e,1)]])),x=s.flatMap(e=>[0,1].flatMap(t=>b.get(e)?.[t].kind===`tee`?[e.pts[t?e.pts.length-1:0]]:[])),S=e=>f(x.find(t=>ot(t,e.points))??e.mid,!0);for(let e of s){let n=b.get(e),o=[!e.fromStub&&n[0].kind===`free`,n[1].kind===`free`],s=[...e.pts],c=[n[0].kind===`tee`,n[1].kind===`tee`],l=r.fillet(s,e.bend??4.5,8,{P:i,tube:e.r}),u=$e(l,e.r,i,{maxLength:24,caps:o,breaks:h(l)}),d=t=>`<g class="sf-pipe" data-medium="${e.medium}" data-route="${e.id}">${t}</g>`;if(t.flanged)for(let t of[0,1]){let n=t?u[u.length-1]:u[0];if(!n||!o[t]||e.bare?.[t]||e.blind?.[t])continue;let s=l[t?l.length-1:0],c=l[t?l.length-2:1],p=r.frameAlong(s,[c[0]-s[0],c[1]-s[1],c[2]-s[2]]);_(f(n.mid,!0),d(a(r.disc(0,1.6,e.r+2,p,i),{tone:`mid`})))}u.forEach((t,n)=>{let r=[0,1].filter(e=>n===(e?u.length-1:0)),i=S(t);_(i,`${d(tt(t,{tone:`mid`}))}<g data-fl="${e.id}" data-fs="${i}"></g>`,r.some(e=>c[e]))});for(let t of[0,1]){let n=t?u[u.length-1]:u[0];if(!n||!e.blind?.[t])continue;let o=l[t?l.length-1:0],s=l[t?l.length-2:1],c=r.frameAlong(o,[s[0]-o[0],s[1]-o[1],s[2]-o[2]]);_(f(n.mid,!0),d(a(r.disc(-1.2,1.6,e.r+2,c,i),{tone:`mid`})),M(o,i)<M(s,i))}let g=m(l).filter(p);v.push({id:e.id,medium:e.medium,r:e.r,path:g,reverse:e.reverse??!1,capped:[o[0]&&g[0]===l[0],o[1]&&g.at(-1)===l.at(-1)],slots:u.map(e=>[e.to,S(e)])})}for(let t of s){let n=null;for(let e=1;e<t.pts.length;e++){let r=t.pts[e-1],i=t.pts[e],a=Math.hypot(i[0]-r[0],i[1]-r[1],i[2]-r[2]);r[2]<3&&i[2]<3&&(!n||a>n.len)&&(n={a:r,b:i,len:a})}if(!n)continue;let r=[(n.b[0]-n.a[0])/n.len,(n.b[1]-n.a[1])/n.len,0];t.reverse&&(r=[-r[0],-r[1],-r[2]]);let a=[-r[1],r[0],0];for(let o of[.3,.62]){let s=[n.a[0]+(n.b[0]-n.a[0])*o,n.a[1]+(n.b[1]-n.a[1])*o,n.a[2]+(n.b[2]-n.a[2])*o];s[2]+=t.r*.98;let c=(t,n)=>e.k.iso([s[0]+r[0]*t+a[0]*n,s[1]+r[1]*t+a[1]*n,s[2]],i),l=[c(1.8,0),c(-1.2,t.r*.75),c(-.4,0),c(-1.2,-t.r*.75)];_(f(s,!1),`<path class="sf-chevron" d="M${l.map(([e,t])=>`${e.toFixed(2)} ${t.toFixed(2)}`).join(`L`)}Z"/>`)}}let C=new Map;for(let t of s)t.pts.forEach((n,r)=>{let[a,o]=e.k.iso(n,i),s=r===0?`start`:r===t.pts.length-1?`end`:`bend${r}`,c=`${Math.round(a/3)},${Math.round(o/3)}`;C.has(c)||C.set(c,{name:`${t.id}-${s}`,x:a,y:o})});let w=g.map(e=>e.join(``));return typeof n==`number`?{off:w[0]??``,on:w[1]??``,layers:[],flows:v,joints:[...C.values()]}:{off:w[0]??``,on:``,layers:w,flows:v,joints:[...C.values()]}}function ut(e){let t=t=>a(t,e),n=(e,t)=>te(e,t),r=(e,t)=>m(e,t),p=(e,t)=>l(e,t),g=(t,r,i,a={tone:`mid`},o=3,s=.5)=>n(c(t,r,i,e,o,s),a),v=(t,r,i,a,o,s={tone:`mid`},c=28)=>n(A(t,r,i,a,o,e,c),s),y=t=>[...t].sort((t,n)=>M([t[0],t[1],0],e)-M([n[0],n[1],0],e)),b=t=>u([0,t],0,e,`left`),x=(e,n)=>p(e.map(([e,r])=>t([e,r,n])),{size:.45}),C=(e,t,n,r,a)=>s(i({x:e,y:t,w:n-e,d:r-t,r:a},4).map(([e,t])=>[e,-t]),!0);function w(r,i,a){let o=r.x+r.w/2,l=r.y+r.d/2,u=Math.min(r.w,r.d)*.2;return n(c(r,i,a,e,2,.3),{tone:`hi`,lit:!0})+`<path class="sf-bore" d="${s(S(o,l,u,20).map(([e,n])=>t([e,n,i+a])),!0)}"/>`}function E(e,t,n,r,i,a){let o=C(n,i,r,a,1.2),s=`<path class="sf-hmi-head" d="M${n} ${-a}H${r}V${-(a-2.6)}H${n}Z"/><path class="sf-hmi-tick" d="M${n+1.6} ${-(a-1.3)}H${n+Math.min(10,(r-n)*.4)}"/>`,c=[.33,.66].map(e=>`<path class="sf-hmi-grid" d="M${n+1.4} ${-(i+3.4+(a-i-6.6)*e)}H${r-1.4}"/>`).join(``),l=`<path class="sf-spark-fill" data-spark-fill="${e}" d=""/><path class="sf-spark" data-spark="${e}" data-box="${n+1.4},${r-1.4},${i+3.4},${a-3.4}" d=""/>`,u=`<path class="sf-bar-track" d="M${n+1.4} ${-(i+2.2)}H${r-1.4}V${-(i+1.2)}H${n+1.4}Z"/><path class="sf-bar" data-bar="${e}" data-x="${n+1.4},${r-1.4},${i+1.2},${i+2.2}" d=""/>`,d=`<circle class="sf-hmi-dot" data-state-dot="${e}" cx="${r-1.6}" cy="${-(a-1.3)}" r="0.75"/>`;return`<g transform="${b(t)}"><clipPath id="clip-${e}"><path d="${o}"/></clipPath><path class="sf-hmi" d="${o}"/><g clip-path="url(#clip-${e})">${s}${c}${l}${u}${d}</g><path class="iso-line" data-tone="lo" d="${o}"/></g>`}function D(e,n,r,i){let a=[`<path class="sf-glow" data-glow="${e}" d="${s(S(n,r,9,40).map(([e,n])=>t([e,n,i])),!0)}"/>`,v(n,r,2.6,i,1.4,{tone:`mid`},20),v(n,r,1,i+1.4,3,{tone:`mid`,crease:`none`},14)];return[`g`,`a`,`r`].reverse().forEach((t,o)=>{a.push(`<g class="sf-lamp" data-andon="${e}" data-c="${t}">${v(n,r,2.4,i+4.4+o*3.6,3.6,{tone:`mid`},20)}</g>`)}),a.push(v(n,r,2.6,i+15.2,1,{tone:`mid`},20)),a.join(``)}function O(t,i=10){let a=[`<path class="iso-halo" d="${j(t,-i-4,i,e)}"/>`];for(let[e,n]of y(_(t,18)))a.push(v(e,n,6,-i-4,1.4,{tone:`lo`}),v(e,n,4.6,-i-2.6,2.6,{tone:`mid`}));a.push(n(c(t,-i,i,e,8,1.4),{tone:`mid`})),a.push(r(o(h(t,5),0,e,8),{tone:`lo`}));let s=_(t,10);return a.push(r(s.map(([t,n])=>T(t,n,2,0,e,16)).join(``),{tone:`lo`}),x(s,0)),a.join(``)}function k(t,n,i,a,s=5){let c=Math.ceil(a/s),l={x:n,y:i,w:s*7+4,d:c*12+4,r:1.5},u=[g(l,0,5,{tone:`mid`},3,.4)],d=[];for(let e=0;e<a;e++){let t=e%s,r=Math.floor(e/s);d.push({i:e,plan:{x:n+2+t*7+.6,y:i+2+r*12+.6,w:5.8,d:10.8,r:.6}})}u.push(r(d.map(t=>o(t.plan,5,e,2)).join(``),{tone:`faint`}));let f=[...d].sort((t,n)=>M([t.plan.x,t.plan.y,0],e)-M([n.plan.x,n.plan.y,0],e));for(let e of f)u.push(`<g class="sf-part" data-slot="${t}:${e.i}">${w(h(e.plan,.8),5,4)}</g>`);return u.push(x([[l.x+1.4,l.y+1.4],[l.x+l.w-1.4,l.y+1.4]],5)),u.join(``)}function ne(t,i,a,o,s=20){let c=[],l=[],u={x:t,y:a-3,w:i,d:3,r:.8},f={x:t,y:a+o,w:i,d:3,r:.8};for(let e of[t+5,t+i-8])c.push(g({x:e,y:a-2.5,w:3,d:3,r:.6},0,s,{tone:`mid`},2,0));c.push(g({x:t+5,y:a-2.5,w:i-10,d:2,r:.4},4,2,{tone:`lo`},2,0)),c.push(g(u,s-2,6,{tone:`mid`},2,.3));let p=t=>n(Pe(0,o,1.5,se([t,a,s-.5],[0,1,0]),e),{tone:`mid`});c.push(p(t+2.5));let m=g({x:t+1,y:a,w:i-2,d:o,r:1},s-2,3,{tone:`lo`,crease:`faint`},3,0)+p(t+i-2.5);l.push(g(f,s-2,6,{tone:`mid`},2,.3));for(let e of[t+5,t+i-8])l.push(g({x:e,y:a+o+.5,w:3,d:3,r:.6},0,s-2,{tone:`mid`},2,0));l.push(g({x:t+5,y:a+o+1,w:i-10,d:2,r:.4},4,2,{tone:`lo`},2,0)),l.push(x([[t+4,a+o+1.5],[t+i/2,a+o+1.5],[t+i-4,a+o+1.5]],s+4));let h=[];for(let n=t+6;n<=t+i-6;n+=6)h.push(d([n,a+o+3,s+1],.7,`y`,e));return l.push(r(h.join(``),{tone:`lo`})),{back:c.join(``),belt:m,front:l.join(``),top:s+1}}function N(t,n,i,o,c=8){let l=o+4,u=f(n,i,c*.78,c>5?40:16,c>5?5:4,l,[c*.12,c*.27],e,-Math.PI*.75,Math.PI*1.5);return[v(n,i,c,o,4,{tone:`mid`,crease:`lo`},48),`<path class="sf-dial-face" d="${s(S(n,i,c*.86,48).map(([t,n])=>a([t,n,l],e)),!0)}"/>`,r(T(n,i,c*.82,l,e,48),{tone:`lo`}),r(u.minor,{tone:`lo`}),r(u.major,{tone:`mid`}),r(T(n,i,1,l,e,12),{tone:`mid`}),`<path class="iso-line sf-needle" data-tone="lit" data-free="start" data-needle="${t}" data-at="${n},${i},${l},${c}" d=""/>`].join(``)}function re(e,t,n,r,i){let a=C(t,n,t+r,n+i,.6),o=[.62,.3].map((e,a)=>`<path class="iso-line" data-tone="lo" data-free="" d="M${t+2.4} ${-(n+i*e)}H${t+r*(a?.55:.8)}"/>`).join(``);return`<g transform="${b(e)}"><path class="sf-plate" d="${a}"/>${o}<path class="iso-line" data-tone="lo" d="${a}"/><circle class="sf-screw" cx="${t+r-1.2}" cy="${-(n+i/2)}" r="0.4"/></g>`}return{k:ee,G:Ie,P:e,at:t,S:n,L:r,D:p,slab:g,cyl:v,byDepth:y,front:b,screws:x,workpiece:w,faceRule:re,hmi:E,andon:D,plinth:O,buffer:k,conveyor:ne,dial:N}}function dt(e,t,n,r=`mid`,i=3,a=``,o=!0){return`<g class="sf-pipe" data-medium="${a}">${$e(e.G.fillet(t,i,12,{P:e.P,tube:n}),n,e.P,{maxLength:400,caps:o}).map(e=>tt(e,{tone:r})).join(``)}</g>`}function ft(e,t,n,r,i,a,o,s=``){return`<g transform="${e.front(t)}"><path class="${o}" ${s} d="M${n} ${-a}H${i}V${-r}H${n}Z"/></g>`}function pt(e,t,n,r){let{cyl:i}=e;return`<g class="sf-yellow">${i(t,n,2.4,r,.8,{tone:`mid`},20)}</g><g class="sf-red">${i(t,n,1.3,r+.8,1,{tone:`mid`},14)}${i(t,n,1.9,r+1.8,1.2,{tone:`mid`},18)}</g>`}function mt(e,t){let{P:n,L:r}=e;return[`<path class="iso-halo" d="${j(t,-21,7,n)}" style="opacity:.7"/>`,e.S(c(t,-21,7,n,10,1.6),{tone:`lo`,inner:r(p(t,-17,n,10),{tone:`faint`})}),r(o(h(t,6),-14,n,10),{tone:`faint`})].join(``)}function ht(e,t,n,r){return e.cyl(t,n,r+2.2,0,.8,{tone:`mid`},24)+e.screws([0,1,2,3].map(e=>[t+Math.cos(e*1.571+.785)*(r+1.3),n+Math.sin(e*1.571+.785)*(r+1.3)]),.8)}function gt(e,t,n,r){let{P:i,k:a,L:o,cyl:s}=e,c=[s(t,n,3.8,r,6,{tone:`mid`,inner:o(a.sideArc(t,n,3.8,r+3,i,20),{tone:`faint`})},24)];return c.push(s(t,n,4.6,r-.8,.8,{tone:`mid`},24),s(t,n,4.6,r+6,.8,{tone:`mid`},24)),c.join(``)}function _t(e,t,n,r){let{k:i,G:a,P:o,S:s,L:c}=e,l=a.frameAlong([t,n,r+3],[0,1,0]),u=[];u.push(s(a.disc(3.6,5.8,2.6,l,o),{tone:`mid`}),s(a.disc(5.8,10.6,.9,l,o),{tone:`mid`}),s(a.disc(10.6,12.2,1.7,l,o),{tone:`mid`}),s(a.disc(11.2,12,4.4,l,o),{tone:`lo`}));let d=n+11.4,f=[t,d,r+3],p=[0,1,2].map(e=>i.segment(f,[t+Math.cos(e*2.094)*4.2,d,r+3+Math.sin(e*2.094)*4.2],o)).join(``);return u.push(`<g class="sf-wheel">${c(i.sideRing(f,4.4,`y`,o)+i.sideRing(f,3.8,`y`,o)+p,{tone:`mid`})}</g>`),u.join(``)}function vt(e,t,n,r,i){let a=Array.from({length:7},(e,t)=>{let a=-Math.PI*.75+t/6*Math.PI*1.5,o=e=>`${(n+Math.sin(a)*i*e).toFixed(2)} ${(-r-Math.cos(a)*i*e).toFixed(2)}`;return`M${o(5/7)}L${o(.881)}`}).join(``);return`<g transform="${e}"><circle class="sf-dial-face" cx="${n}" cy="${-r}" r="${i}"/><circle class="iso-line" data-tone="mid" fill="none" cx="${n}" cy="${-r}" r="${(i*1.095).toFixed(2)}"/><path class="iso-line" data-tone="lo" d="${a}"/><path class="iso-line sf-needle" data-tone="lit" data-needle="${t}" data-face="${n},${r},${i}" d=""/><circle class="iso-line" data-tone="mid" cx="${n}" cy="${-r}" r="0.5"/></g>`}var yt=[140,-130,22],bt=[126,-130,64],xt=[126,-130,56.8],X=3.2,St={x:46,y:-150,w:96,d:40,r:3};function Ct(e,t,n=`coolant`,r=!1){let{k:i,G:a,P:o,S:s,L:c,D:l,slab:u,cyl:d,hmi:f,screws:p,faceRule:m}=e,h=[],g=-130,_=49.2,v={x:46,y:g-20,w:96,d:40,r:2},y=g-24;if(r||h.push(s(a.disc(-1.6,0,X+2,a.frameAlong([126,y,70],[0,1,0]),o),{tone:`mid`}),dt(e,[bt,[126,g,70],[126,y,70]],X,`mid`,6,n,[!1,!1])),h.push(u(v,0,5,{tone:`mid`},3,.5)),h.push(c(i.planOutline(i.insetPlan(v,2.4),5,o,3),{tone:`faint`}),p(i.corners(v,4),5)),!r){let e=70-X;h.push(d(126,y+7,2.4,5,1,{tone:`lo`},18),d(126,y+7,1.2,6,e-7,{tone:`mid`,crease:`none`},12),d(126,y+7,1.8,e-1,1,{tone:`mid`},16))}let b=a.frameAlong([52,g,20],[1,0,0]);h.push(u({x:56,y:g-10,w:30,d:20,r:1},5,6,{tone:`lo`},2,0)),h.push(s(a.solidOf([[0,10],[2,11],[36,11],[38,10]],b,o),{tone:`mid`,inner:i.fadedSvg(a.ribsOf(b,2,36,11,22,o,{fade:[.1,.55],seams:!0}),{tone:`lo`})})),h.push(u({x:64,y:g+8,w:10,d:6,r:1},24,6,{tone:`mid`},2,.3)),h.push(s(a.disc(38,42,3,b,o),{tone:`mid`})),h.push(s(a.disc(42,52,6.5,b,o),{tone:`mid`,crease:`lo`})),h.push(`<path class="iso-line" data-tone="lo" data-spin="pump" data-shaft="52,${g},20" data-radius="6.5" data-span="94.3,103.7" data-vapour="136,${g},22" data-bearing="86,${g},32" d=""/>`),h.push(u({x:112,y:g-10,w:16,d:20,r:1},5,4,{tone:`lo`},2,0));let x=a.frameAlong([116,g-8,22],[0,1,0]);h.push(s(a.solidOf([[0,14],[16,14]],x,o),{tone:`mid`,inner:c(a.arcOf(x,8,14,o),{tone:`faint`})})),h.push(s(a.disc(-2,0,15.4,x,o),{tone:`mid`})),h.push(l(a.dotsOf(x,16,12.2,10,o,{fade:[.04,.42]}),{size:.4})),h.push(d(126,g,5,32,14,{tone:`mid`},24)),h.push(d(126,g,7.4,46,2.4,{tone:`mid`},28)),h.push(l(a.dotsOf(a.frameAlong([126,g,48.4],[0,0,1]),0,5.8,6,o,{all:!0}),{size:.45}));let S=a.frameAlong([132,g-0,22],[1,0,0]);return h.push(s(a.disc(0,6,5,S,o),{tone:`mid`}),s(a.disc(6,8,7.4,S,o),{tone:`mid`})),h.push(l(a.dotsOf(S,8,5.9,6,o,{all:!0}),{size:.4})),h.push(gt(e,126,g,_)),h.push(d(126,g,4.6,_+6.8,.8,{tone:`mid`},24),dt(e,[xt,[126,g,bt[2]]],X,`mid`,2,n,[!1,!1]),_t(e,126,g,_)),r||(h.push(ht(e,150,g,3.4)),h.push(dt(e,[[140,g,22],[150,g,22],[150,g,.8]],3.4,`mid`,5,n))),h.push(u({x:58,y:g+22,w:38,d:8,r:1},0,24,{tone:`mid`},2,.4)),h.push(f(t,g+30,60,94,7,22)),h.push(m(g+30,60,3,22,2.4)),h.join(``)}function wt(e,t,n,r=1){let[i,o]=a(t,e),[s,c]=a(n,e),l=e=>(Math.round(e*1e3)/1e3).toString();return`translate(${l(s-r*i)} ${l(c-r*o)}) scale(${l(r)})`}var Tt=e=>[e[0],e[1],0];function Et({from:e=[0,0,0],to:t,scale:n=1,children:r}){let{P:i}=x();return(0,rt.jsx)(`g`,{transform:wt(i,e,t,n),children:r})}function Dt({build:e,intro:t}){let n=x();return(0,rt.jsx)(b,{html:(0,nt.useMemo)(()=>e(n),[n,e]),intro:t})}function Ot(e,t){let n=x();return(0,nt.useMemo)(()=>lt(n,e,t),[n,e,t])}var Z=(e,t,...n)=>e.faults(t).some(e=>n.includes(e));function kt(e,t){let n=k(e,`[data-fx-slot="${t}"]`);if(n)return n;let r=E(e,`[data-asset="${t}"]`);return D(`g`,{class:`sf-fx`},r[r.length-1])}function At(e,t,n,r){return Array.from({length:t},(t,i)=>({el:D(n,{class:r},e),seed:i*.618%1}))}function jt(e){for(let t of e)v(t.el,`0`)}function Mt(e,t,n){e.setAttribute(`cx`,t.toFixed(1)),e.setAttribute(`cy`,n.toFixed(1))}function Nt(e){let t=new Map;return(n,r,i)=>{let a=t.get(n);a||(a=E(e,`[data-asset="${n}"] > *:not(.iso-halo):not(.sf-alarm):not(.sf-fx)`),t.set(n,a));let o=r?`${(Math.sin(i*71)*r).toFixed(2)}px ${(Math.cos(i*53)*r*.6).toFixed(2)}px`:``;for(let e of a)e.style.translate!==o&&(e.style.translate=o)}}function Pt(e,t=`hiss`){let n=t!==`hiss`,r=At(e,8,`circle`,t===`smoke`?`sf-hiss sf-smoke`:`sf-hiss`);return{draw(e,i,o,s,c){if(!e){jt(r);return}for(let e of r){let r=(i*(n?.9:2.2)+e.seed)%1,l=Math.sin(i*7+e.seed*20)*.8,[u,d]=a([s[0]+c[0]*r*10+l,s[1]+c[1]*r*8,s[2]+r*(n?5:2)],o);Mt(e.el,u,d),e.el.setAttribute(`r`,((.5+r*2.6)*o.scale*.5).toFixed(2)),v(e.el,(Math.sin(Math.PI*r)*(n?.6:.55)).toFixed(2)),e.el.classList.toggle(`sf-frost`,t===`frost`)}}}}function Ft(e,t=4,n=5){let r=At(e,t,`path`,`sf-heat`);return{draw(e,t,i,o){r.forEach((s,c)=>{if(!e){v(s.el,`0`);return}let l=(t*.35+c/r.length)%1,u=o[0]+c*n,d=o[2]+l*22,f=Array.from({length:7},(e,n)=>a([u+Math.sin(t*3+n*.9+c)*1.4,o[1],d+n*2.2],i));s.el.setAttribute(`d`,`M${f.map(([e,t])=>`${e.toFixed(1)} ${t.toFixed(1)}`).join(`L`)}`),v(s.el,(Math.sin(Math.PI*l)*.55).toFixed(2))})}}}var Q=Math.PI*2,It=e=>e*e*(3-2*e),$=e=>Math.max(0,Math.min(1,e));function Lt(e,t,n,r,i){return i?t:e+(t-e)*(1-Math.exp(-n/r))}function Rt(e,t,n,r){let i=s(S(e.x+e.w/2,e.y+e.d/2,Math.min(e.w,e.d)*.2,20).map(([e,i])=>a([e,i,t+n],r)),!0);return`${te(c(e,t,n,r,2,.3),{tone:`hi`,lit:!0})}<path class="sf-bore" d="${i}"/>`}function zt(e,t,n,r,i=28){return`M${Array.from({length:i},(o,s)=>{let c=s/i*Math.PI*2,[l,u]=a([e[0]+Math.cos(c)*t,e[1]+Math.sin(c)*t,n],r);return`${l.toFixed(1)} ${u.toFixed(1)}`}).join(`L`)}Z`}var Bt={x:-3.5,y:10,w:7,d:10,r:1},Vt=new WeakMap;function Ht(e){let t=Vt.get(e);if(!t){let n=M([0,0,0],e);t=[M([1,0,0],e)-n,M([0,1,0],e)-n,M([0,0,1],e)-n],Vt.set(e,t)}return t}function Ut(e,t,n,r,i,a,o,s){let c=Ht(e),l=``;for(let u=0;u<s;u++){let d=o+u*Q/s,f=t===`z`?[Math.cos(d),Math.sin(d),0]:[0,Math.cos(d),Math.sin(d)];if((f[0]??0)*c[0]+(f[1]??0)*c[1]+(f[2]??0)*c[2]<.15)continue;let p=e=>t===`z`?[n[0]+r*(f[0]??0),n[1]+r*(f[1]??0),e]:[e,n[1]+r*(f[1]??0),n[2]+r*(f[2]??0)];l+=w(p(i),p(a),e)}return l}function Wt(e,[t=0,n=0,r=0,i=0],a){let o=``;for(let s=0;s<5;s++){let c=a+s*Q/5;o+=g([t+Math.cos(c)*2.4,n+Math.sin(c)*2.4],[t+Math.cos(c+.35)*i,n+Math.sin(c+.35)*i],r,e)}return o}function Gt(e,[t=0,n=0,r=0,i=0],o,s,c=6){let l=(i,o,c)=>{let l=Math.cos(c)*i-Math.sin(c)*o,u=Math.sin(c)*i+Math.cos(c)*o,[d,f]=a(s===`x`?[t,n+l,r+u]:s===`y`?[t+l,n,r+u]:[t+l,n+u,r],e);return`${d.toFixed(1)} ${f.toFixed(1)}`},u=``;for(let e=0;e<c;e++){let t=o+e*Q/c;u+=`M${l(3.4,1.8,t)}L${l(i,3.4,t)}L${l(i,-1.4,t)}L${l(3.4,-1.8,t)}Z`}return u}function Kt(e){return e.closest(`[data-asset]`)?.dataset.asset??``}function qt(e){let[t=0,n=0,r=0]=O(e);return[t,n,r]}var Jt=new Set([`press`]);function Yt(e,t){let{svg:n,P:r,feed:i}=e,a=(e,t,n,i,a)=>{let o=-Math.PI*.75+$(a)*Math.PI*1.5;return g([e-Math.sin(o)*i*.22,t+Math.cos(o)*i*.22],[e+Math.sin(o)*i*.7,t-Math.cos(o)*i*.7],n+.2,r)},o=E(n,`[data-needle]`).map(e=>({n:e,id:e.dataset.needle??``,asset:Kt(e),at:O(e.dataset.at),face:e.dataset.face?O(e.dataset.face):null,v:0,rate:0})),s=E(n,`[data-bar]`).map(e=>({n:e,id:e.dataset.bar??``,box:O(e.dataset.x),v:0})),c=E(n,`[data-spark]`).map(e=>({n:e,id:e.dataset.spark??``,fill:k(n,`[data-spark-fill="${e.dataset.spark}"]`),box:O(e.dataset.box),hist:[]})),l=NaN;return{draw(n,r){let u=e.reducedMotion();for(let e of o){let i=$(t.needle(e.id,e.asset));e.rate+=((i-e.v)*90-e.rate*13)*n,e.v+=e.rate*n,u&&(e.v=i);let o=Jt.has(e.id)?Math.sin(r*31+e.id.length)*.003:0;if(e.face){let[t=0,n=0,r=0]=e.face,i=-Math.PI*.75+$(e.v+o)*Math.PI*1.5;y(e.n,`d`,`M${(t-Math.sin(i)*r*.2).toFixed(2)} ${(-n+Math.cos(i)*r*.2).toFixed(2)}L${(t+Math.sin(i)*r*.74).toFixed(2)} ${(-n-Math.cos(i)*r*.74).toFixed(2)}`)}else{let[t=0,n=0,r=0,i=0]=e.at;y(e.n,`d`,a(t,n,r,i,e.v+o))}}for(let e of s){e.v=Lt(e.v,$(t.bar(e.id)),n,.5,u);let[r=0,i=0,a=0,o=0]=e.box;y(e.n,`d`,`M${r} ${-o}H${(r+(i-r)*e.v).toFixed(2)}V${-a}H${r}Z`),y(e.n,`data-s`,e.v>.9&&t.alertsHigh(e.id)?`hi`:null)}let d=i.simTime();if(d!==l&&t.ready()){l=d;for(let e of c){let n=$(t.bar(e.id));if(!e.hist.length)for(let t=0;t<27;t++)e.hist.push(n);e.hist.push(n),e.hist.length>28&&e.hist.shift();let[r=0,i=0,a=0,o=0]=e.box,s=e.hist.map((t,n)=>[r+(i-r)*(n+28-e.hist.length)/27,-(a+.4+t*(o-a-.8))]),c=s.map(([e,t],n)=>`${n?`L`:`M`}${e.toFixed(2)} ${t.toFixed(2)}`).join(``);y(e.n,`d`,c);let l=s[s.length-1],u=s[0];y(e.fill,`d`,l&&u&&s.length>1?`${c}L${l[0].toFixed(2)} ${-a}L${u[0].toFixed(2)} ${-a}Z`:``)}}}}}var Xt=0;function Zt(e,t){let{svg:n,P:r}=e,i=r.scale,o=E(n,`[data-flows]`).map(e=>({el:e,from:Number(e.dataset.depth??-1/0)})).sort((e,t)=>e.from-t.from),s=new Map(E(n,`[data-flows]`).map(e=>[Number(e.dataset.flows),e])),c=new Map;for(let e of E(n,`[data-fl]`))c.set(`${e.dataset.fl}|${e.dataset.fs}`,e);let l=o.length>1&&[...s.keys()].every(Number.isFinite),u=(e,t)=>(e.find(([e])=>t<=e)??e[e.length-1])?.[1]??0,d=(e,t,n,i,a)=>{if(l&&n.length){let t=Math.max(...[i-a,i,i+a].map(e=>u(n,e)));return c.get(`${e}|${t}`)??s.get(t)??o[o.length-1]?.el}let d=M(t,r),f=o[0]?.el;for(let e of o)e.from<=d&&(f=e.el);return f},f=(e,t,n)=>{let i=1;for(;i<e.length-1&&(e[i]??0)<n;)i++;let o=e[i-1]??0,s=(n-o)/((e[i]??0)-o||1),c=t[i-1],l=t[i],[u,d]=a(c,r),[f,p]=a(l,r),m=Math.atan2(p-d,f-u)*180/Math.PI;return m>90&&(m-=180),m<=-90&&(m+=180),[[c[0]+(l[0]-c[0])*s,c[1]+(l[1]-c[1])*s,c[2]+(l[2]-c[2])*s],m]},p=e.flows.filter(e=>e.path.length>1).map(e=>{let t=[0];for(let n=1;n<e.path.length;n++){let r=e.path[n-1],i=e.path[n];t.push((t[n-1]??0)+Math.hypot(i[0]-r[0],i[1]-r[1],i[2]-r[2]))}let r=t[t.length-1]??0;return{f:e,lens:t,L:r,phase:0,speed:0,glints:Array.from({length:Math.max(2,Math.round(r/22))},()=>D(`ellipse`,{class:`sf-glint`,"data-medium":e.medium},(e.group?k(n,`[data-glints="${e.group}"]`):void 0)??o[0]?.el))}}),m=k(n,`defs`)??D(`defs`,{},n),h=new Map;for(let e of p){let t=e.glints[0];if(!t||h.has(e.f.medium))continue;let n=`sf-glint-${Xt++}`,r=getComputedStyle(t).fill,i=D(`radialGradient`,{id:n},m);for(let[e,t]of[[`0`,`0.85`],[`0.45`,`0.5`],[`1`,`0`]]){let n=D(`stop`,{offset:e,"stop-opacity":t},i);n.style.stopColor=r}h.set(e.f.medium,`url(#${n})`)}for(let e of p)for(let t of e.glints)t.style.fill=h.get(e.f.medium)??``;return{draw(n){let s=e.reducedMotion();for(let e of p)e.speed=Lt(e.speed,t(e.f),n,.8,s),s||(e.phase=(e.phase+e.speed*n)%e.L),e.glints.forEach((t,n)=>{let s=(e.phase+n*e.L/e.glints.length)%e.L,c=e.f.reverse?e.L-s:s,[l,u]=f(e.lens,e.f.path,c),[p,m]=a(l,r),[h,g]=e.f.reverse?[e.f.capped[1],e.f.capped[0]]:e.f.capped,_=Math.max(0,Math.min(1,(s-(h?e.f.r:0))/8,(e.L-s-(g?e.f.r:0))/8)),v=e.f.r*i*.35*Math.cos(u*Math.PI/180),y=p+v*Math.sin(u*Math.PI/180),b=m-v*Math.cos(u*Math.PI/180);t.setAttribute(`cx`,y.toFixed(2)),t.setAttribute(`cy`,b.toFixed(2)),t.setAttribute(`rx`,(e.f.r*i*1.35).toFixed(2)),t.setAttribute(`ry`,(e.f.r*i*.55).toFixed(2)),t.setAttribute(`transform`,`rotate(${u.toFixed(2)} ${y.toFixed(2)} ${b.toFixed(2)})`),t.style.opacity=(_*.9*Math.min(1,e.speed/3)).toFixed(2);let x=o.length>1&&!e.f.group?d(e.f.id,l,e.f.slots,c,e.f.r):void 0;x&&t.parentNode!==x&&x.append(t)})}}}function Qt(e,t){let{svg:n}=e,r=E(n,`[data-alarm]`).map(e=>{let t=e.dataset.alarm??``;return{id:t,alarm:e,andon:E(n,`[data-andon="${t}"]`),glow:k(n,`[data-glow="${t}"]`),dot:k(n,`[data-state-dot="${t}"]`)}});return{draw(e){for(let n of r){let r=t(n.id);if(!e)for(let e of n.andon)y(e,`data-on`,e.dataset.c===r?``:null);y(n.alarm,`data-on`,r===`r`?``:null),y(n.glow,`data-c`,e?null:r||null),y(n.dot,`data-s`,r||null)}}}}function $t(e,t){let{svg:n,P:r,feed:i}=e,o=(e,t)=>i.num(e,t),s=e=>{let t=kt(n,e);return{bubbles:At(t,10,`circle`,`sf-bubble`),heat:Ft(t)}},c=E(n,`[data-spin="pump"]`).map(e=>{let t=Kt(e),[n=0,r=0]=O(e.dataset.span);return{el:e,id:t,at:qt(e.dataset.shaft),eye:qt(e.dataset.vapour),r:Number(e.dataset.radius)||0,s0:n,s1:r,rpm:0,spin:0,bearing:qt(e.dataset.bearing),...s(t)}}),l=new Map(c.map(e=>[e.id,e])),u=e=>{let t=i.param(e,`rated_flow`,0);return t>0?$(o(e,`flow_rate`)/t):0};return{draw(n,s,l){let u=e.reducedMotion();for(let e of c){if(e.rpm=Lt(e.rpm,o(e.id,`speed_feedback`),n,.8,u),u||(e.spin+=e.rpm/i.param(e.id,`rated_rpm`,1500)*1.6*Q*n),y(e.el,`d`,Ut(r,`x`,e.at,e.r,e.s0,e.s1,e.spin,8)),!l)continue;let c=Z(i,e.id,`cavitation`);for(let t of e.bubbles){if(!c||u){v(t.el,`0`);continue}let n=(s*1.6+t.seed)%1,[i,o,l]=e.eye,[d,f]=a([i+n*6,o+Math.sin(t.seed*40)*3,l+Math.cos(t.seed*30)*3],r);Mt(t.el,d,f),t.el.setAttribute(`r`,(.35+Math.sin(Math.PI*n)*.6).toFixed(2)),v(t.el,(n<.85?.8:0).toFixed(2))}e.heat.draw(Z(i,e.id,`bearing_wear`,`bearing_seizure`)&&!u,s,r,e.bearing),t(e.id,u?0:Z(i,e.id,`bearing_seizure`)?.7:Z(i,e.id,`cavitation`,`impeller_imbalance`,`bearing_wear`)?.35:0,s)}},flowPu:u,bar(e){return l.has(e)?u(e):void 0}}}function en(e){return e===`off_shift`?``:e===`running`?`g`:e===`down`||e===`fault`||e===`failed`?`r`:`a`}function tn(e,t,n){if(e.faults(t).length)return[`fault`,`r`];let r=e.station(t);if(r)return[r.state,en(r.state)];if(n===`availability`){let n=e.text(t,`availability_state`);if(n!==void 0)return[n,n===`stopped`?``:n===`faulted`?`r`:`g`]}return e.num(t,`run_command`,1)===0?[`stopped`,``]:[`running`,`g`]}function nn(e,t,n){return tn(e,t,n)[1]}export{bt as A,dt as B,kt as C,Et as D,Ot as E,Ct as F,F as G,lt as H,vt as I,I as J,se as K,mt as L,xt as M,X as N,Dt as O,yt as P,pt as R,Mt as S,At as T,Pe as U,ut as V,Fe as W,ne as X,z as Y,Lt as _,Zt as a,Nt as b,qt as c,Wt as d,Gt as f,$ as g,Q as h,Qt as i,St as j,Tt as k,Bt as l,Rt as m,nn as n,Yt as o,Ut as p,L as q,$t as r,Kt as s,tn as t,zt as u,It as v,Z as w,Ft as x,Pt as y,ft as z};
|
|
@@ -0,0 +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{n as c}from"./chunk-OE4NN4TA-DBWZidbW.js";import{C as l,_ as u,d,f,g as p,w as m}from"./format-Bx7DF-TB.js";import{t as h}from"./utils-XFKvwlFT.js";import{t as g}from"./arrow-up-right-CwPw_2U1.js";import{n as _,t as v}from"./chevron-right-CrNKVFcI.js";import{i as y,r as b}from"./console-panel-Cg2sBJcN.js";import{i as x,n as S,t as C}from"./asset-detail-actions-Dv9g2Z9t.js";var w=new Set([`Boolean`,`String`]),T=/_(command|reference|setpoint|sp|target)$/,E=`pu`;function D(e,t=2){if(!e)return[];let n=[];for(let[t,r]of Object.entries(e.members))r.kind!==`variable`||r.access!==`read`||w.has(r.dataType)||T.test(t)||!r.unit||!r.euRange||r.euRange[1]<=r.euRange[0]||n.push({member:t,unit:r.unit,min:r.euRange[0],max:r.euRange[1]});return[...n.filter(e=>e.unit!==E),...n.filter(e=>e.unit===E)].slice(0,t)}function O(e){return s({queryKey:o.catalog.modelSchemasBatch(e.join(`,`)),queryFn:()=>Promise.all(e.map(e=>i(`/catalog/models/${e}`,r.catalogModelDetail))),enabled:e.length>0})}var k=e(t(),1);function A(e,t,n){let r=(0,k.useRef)(new Map),i=(0,k.useRef)(n);i.current=n;let[,o]=(0,k.useState)(0),s=t.join(`|`);return(0,k.useEffect)(()=>{if(r.current=new Map,!e)return;let t=s.split(`|`).filter(Boolean);return a.subscribe((n,a)=>{if(n.tick===a.tick)return;let s=n.memberValues.get(e);for(let e of t){let t=r.current.get(e)??[],n=s?.get(e)?.value,a=typeof n==`number`?n:t.at(-1)??i.current(e);a!==void 0&&(t.push(a),t.length>90&&t.shift(),r.current.set(e,t))}o(e=>e+1)})},[e,s]),r.current}var j=n(),M=100,N=22;function P(e,t,n){if(e.length<2)return``;let r=n-t||1,i=90-e.length;return e.map((e,a)=>{let o=(i+a)/89*M,s=N-3-(Math.min(n,Math.max(t,e))-t)/r*(N-6);return`${a?`L`:`M`}${o.toFixed(1)} ${s.toFixed(1)}`}).join(``)}function F({reading:e,value:t,series:n}){let{member:r,unit:i,min:a,max:o}=e,s=t===void 0?0:Math.max(0,Math.min(1,(t-a)/(o-a)));return(0,j.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,j.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3`,children:[(0,j.jsx)(`span`,{className:`truncate text-xs text-muted-foreground`,children:p(r)}),(0,j.jsxs)(`span`,{className:`shrink-0 font-mono text-sm font-semibold tabular-nums`,children:[t===void 0?`–`:f(t),(0,j.jsx)(`span`,{className:`ml-1 text-[10px] font-medium text-muted-foreground`,children:u(i)})]})]}),(0,j.jsxs)(`svg`,{viewBox:`0 0 ${M} ${N}`,preserveAspectRatio:`none`,className:`h-6 w-full overflow-visible`,role:`img`,"aria-label":`${r} trend`,children:[(0,j.jsx)(`rect`,{x:`0`,y:N-1.2,width:M,height:`1.2`,className:`fill-border`}),(0,j.jsx)(`rect`,{x:`0`,y:N-1.2,width:s*M,height:`1.2`,className:`fill-info/70`}),(0,j.jsx)(`path`,{d:P(n,a,o),className:`fill-none stroke-info`,strokeWidth:`1`,strokeLinejoin:`round`,vectorEffect:`non-scaling-stroke`})]})]})}var I=new Set([`off_shift`,`down_planned`,`stopped`,`idle`,`steady`]),L=new Set([`down`,`fault`,`failed`]);function R(e,t){return t?`fault`:e?e===`running`||e===`filling`?`live`:L.has(e)?`fault`:I.has(e)?`off`:`idle`:`off`}function z(e){return e?e.replace(/_/g,` `):`–`}var B=6;function V({title:e,note:t,children:n}){return(0,j.jsxs)(`section`,{className:`flex flex-col gap-3 border-t border-border/50 px-4 py-4`,children:[(0,j.jsxs)(`header`,{className:`flex items-baseline justify-between gap-3`,children:[(0,j.jsx)(`h3`,{className:`text-[11px] font-semibold uppercase tracking-[0.14em] text-muted-foreground`,children:e}),t?(0,j.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:t}):null]}),n]})}function H({name:e,sub:t,pill:n,onBack:r}){return(0,j.jsxs)(`header`,{className:`flex flex-col gap-2 px-4 pt-3 pb-4`,children:[(0,j.jsxs)(l,{size:`sm`,variant:`ghost`,className:`-ml-2 h-7 w-fit gap-1 px-2 text-xs text-muted-foreground`,onClick:r,children:[(0,j.jsx)(_,{className:`size-3.5`,"aria-hidden":!0}),`Line`]}),(0,j.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[(0,j.jsx)(`h2`,{className:`truncate font-heading text-lg font-medium tracking-tight`,children:e}),(0,j.jsx)(`span`,{className:`truncate font-mono text-[11px] text-muted-foreground`,children:t})]}),n]})]})}function U({label:e,value:t}){return(0,j.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,j.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:e}),(0,j.jsx)(`span`,{className:`font-mono text-lg font-semibold tabular-nums`,children:t})]})}function W({thing:e,assetId:t,line:n,basis:l,onBack:u}){let f=s({queryKey:o.assets.detail(t),queryFn:()=>i(`/assets/${t}`,r.assetDetail)}),p=f.data,h=a(e=>e.assets.find(e=>e.id===t)),_=a(e=>e.models),v=a(e=>e.memberValues.get(t)),w=h?.model??p?.assetType,T=D(O(w?[w]:[]).data?.[0],B),E=x(t,p,()=>f.refetch()),k=h?.activeFaults??[],M=_.find(e=>e.name===w)?.faultNames??[],N=n?.stations.find(e=>e.id===t),P=n?.buffers.find(e=>e.after===t),I=v?.get(`availability_state`)?.value,L=N?.state??(l===`availability`&&typeof I==`string`?I:v?.get(`run_command`)?.value===!1?`stopped`:`running`),W=N?.good??0,G=N?.scrap??0,K=e=>{let t=v?.get(e)?.value??p?.members[e]?.value;return typeof t==`number`?t:void 0},q=A(t,T.map(e=>e.member),K);return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(H,{name:e.name,sub:`${t} · ${w??`…`}`,onBack:u,pill:(0,j.jsx)(y,{tone:R(L,k.length>0),children:(0,j.jsx)(b,{children:k.length>0?`fault`:z(L)})})}),N?(0,j.jsx)(V,{title:`Production`,note:P?`buffer ${P.level}/${P.capacity}`:`end of line`,children:(0,j.jsxs)(`div`,{className:`grid grid-cols-3 gap-3`,children:[(0,j.jsx)(U,{label:`Good`,value:d(W)}),(0,j.jsx)(U,{label:`Scrap`,value:d(G)}),(0,j.jsx)(U,{label:`Yield`,value:W+G>0?`${(W/(W+G)*100).toFixed(1)}%`:`–`})]})}):null,T.length>0?(0,j.jsx)(V,{title:`Live`,note:`last 90 ticks`,children:(0,j.jsx)(`div`,{className:`flex flex-col gap-3`,children:T.map(e=>(0,j.jsx)(F,{reading:e,value:K(e.member),series:q.get(e.member)??[]},e.member))})}):null,p&&Object.keys(p.methods).length>0?(0,j.jsx)(`div`,{className:`border-t border-border/50 [&>#commands]:px-4`,children:(0,j.jsx)(C,{detail:p,methodArgs:E.methodArgs,setMethodArgs:E.setMethodArgs,onInvoke:E.invoke,isPending:E.isPending,pendingMethod:E.pendingMethod})}):null,(0,j.jsx)(`div`,{className:`border-t border-border/50`,children:(0,j.jsx)(S,{activeFaults:k,availableFaults:M,onTriggerFault:E.triggerFault,onClearFault:E.clearFault})}),(0,j.jsx)(`div`,{className:`border-t border-border/50 px-4 py-3`,children:(0,j.jsxs)(c,{to:`/asset/${encodeURIComponent(t)}`,className:m({size:`sm`,variant:`ghost`,className:`-ml-2 gap-1`}),children:[`Open asset page`,(0,j.jsx)(g,{className:`size-3.5`,"aria-hidden":!0})]})})]})}var G={live:`bg-success`,idle:`bg-warning`,fault:`bg-destructive`,off:`bg-muted-foreground/50`};function K({label:e,value:t}){return(0,j.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,j.jsx)(`span`,{className:`text-[10px] uppercase tracking-[0.14em] text-muted-foreground`,children:e}),(0,j.jsx)(`span`,{className:`font-mono text-lg font-semibold tabular-nums`,children:t})]})}var q=`flex w-full items-center gap-2.5 rounded-[var(--miravo-radius-tight)] px-2 py-2 text-left`;function J({tone:e,name:t,note:n,onSelect:r}){let i=(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(`span`,{className:h(`size-1.5 shrink-0 rounded-full`,G[e])}),(0,j.jsx)(`span`,{className:`min-w-0 shrink text-sm`,children:t}),(0,j.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-right font-mono text-[11px] text-muted-foreground tabular-nums`,children:n})]});return r?(0,j.jsx)(`li`,{children:(0,j.jsxs)(`button`,{type:`button`,onClick:r,className:h(q,`group outline-none transition-colors hover:bg-muted/40 focus-visible:ring-2 focus-visible:ring-ring`),children:[i,(0,j.jsx)(v,{className:`size-3.5 shrink-0 text-muted-foreground/60 transition-transform group-hover:translate-x-0.5`,"aria-hidden":!0})]})}):(0,j.jsx)(`li`,{className:q,children:i})}export{z as a,D as c,V as i,J as n,R as o,W as r,O as s,K as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{A as e,D as t,O as n,k as r,ot as i}from"./vendor-ui-D8j69UH4.js";import{E as a}from"./format-Bx7DF-TB.js";import{t as o}from"./utils-XFKvwlFT.js";var s=i();function c({className:t,orientation:n=`horizontal`,...r}){return(0,s.jsx)(e,{"data-slot":`tabs`,"data-orientation":n,className:o(`group/tabs flex gap-2 data-horizontal:flex-col`,t),...r})}var l=a(`group/tabs-list inline-flex w-fit items-center justify-center rounded-[var(--miravo-radius-stadium-sm)] p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none`,{variants:{variant:{default:`bg-muted`,line:`gap-0 border-b border-border/50 bg-transparent p-0 shadow-none group-data-horizontal/tabs:h-auto group-data-horizontal/tabs:min-h-8`}},defaultVariants:{variant:`default`}});function u({className:e,variant:n=`default`,...r}){return(0,s.jsx)(t,{"data-slot":`tabs-list`,"data-variant":n,className:o(l({variant:n}),e),...r})}function d({className:e,...t}){return(0,s.jsx)(r,{"data-slot":`tabs-trigger`,className:o(`relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-[var(--miravo-radius-tight)] border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-muted-foreground transition-[color,box-shadow,transform] duration-200 ease-out group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,`group-data-[variant=line]/tabs-list:font-heading group-data-[variant=line]/tabs-list:tracking-tight group-data-[variant=line]/tabs-list:text-sm group-data-[variant=line]/tabs-list:text-muted-foreground group-data-[variant=line]/tabs-list:hover:text-foreground group-data-[variant=line]/tabs-list:data-active:font-semibold group-data-[variant=line]/tabs-list:data-active:text-foreground`,`group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent group-data-[variant=line]/tabs-list:data-active:border-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent`,`group-data-[variant=line]/tabs-list:rounded-none group-data-[variant=line]/tabs-list:px-3 group-data-[variant=line]/tabs-list:py-2`,`data-active:bg-background data-active:text-foreground data-active:border-input data-active:bg-input/30 data-active:text-foreground`,`after:pointer-events-none after:absolute after:bg-foreground after:opacity-0 after:transition-[opacity,transform] after:duration-300 after:ease-out group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5`,`group-data-[variant=line]/tabs-list:after:bg-primary group-data-horizontal/tabs:group-data-[variant=line]/tabs-list:after:bottom-0 group-data-horizontal/tabs:group-data-[variant=line]/tabs-list:after:h-[2px] group-data-horizontal/tabs:group-data-[variant=line]/tabs-list:after:rounded-sm group-data-[variant=line]/tabs-list:data-active:after:opacity-100 group-data-horizontal/tabs:group-data-[variant=line]/tabs-list:data-active:after:shadow-[0_0_14px_-3px_color-mix(in_srgb,var(--primary)_50%,transparent)]`,e),...t})}function f({className:e,...t}){return(0,s.jsx)(n,{"data-slot":`tabs-content`,className:o(`flex-1 text-sm outline-none py-2`,e),...t})}export{d as i,f as n,u as r,c as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./tags-bloWH2Qa.js";export{e as TagsPage};
|
|
@@ -0,0 +1,4 @@
|
|
|
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,gt as i,o as a,ot as o,v as s}from"./api-tM5PSXjr.js";import{t as c}from"./useQuery-smgfSdOx.js";import{i as l,n as u,t as d}from"./dist-xY0pK9Wy.js";import{n as f}from"./chunk-OE4NN4TA-DBWZidbW.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./dialog-B5PqrKVw.js";import{C as y,S as b,T as x,s as S,u as C,v as ee,y as te}from"./format-Bx7DF-TB.js";import{n as w,t as ne}from"./utils-XFKvwlFT.js";import{a as re,c as ie,i as ae,n as oe,o as se,r as ce,s as le,t as ue}from"./dropdown-menu-B_MMNbTy.js";import{t as de}from"./chevron-down-x70Pto6j.js";import{n as fe,t as pe}from"./chevron-right-CrNKVFcI.js";import{t as T}from"./copy-button-CSUP1VjU.js";import{t as me}from"./download-i8CTJ7oi.js";import{t as he}from"./query-fetch-error-CWLZA2L5.js";import{i as E,n as D,t as O}from"./tooltip-B3vOB1Vu.js";import{n as ge}from"./auth-screen-backdrop-CEykEbfF.js";import{t as k}from"./label-2sIXTEUK.js";import{n as _e}from"./get-error-message-CEvauOXv.js";import{a as A,i as j,n as M,o as ve,r as N,s as ye,t as P}from"./combobox-B8h0-NHs.js";import{c as F,i as I,n as L,s as R,t as z}from"./select-BWlrSYlA.js";import{n as B,r as V}from"./integration-targets-Byvdd3Or.js";import{a as be,i as xe,n as Se,o as Ce,r as we,t as Te}from"./vendor-table-BQAIXM34.js";var Ee=w(`arrow-down`,[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]),De=w(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),Oe=w(`braces`,[[`path`,{d:`M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1`,key:`ezmyqa`}],[`path`,{d:`M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1`,key:`e1hn23`}]]),ke=w(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),Ae=w(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),je=w(`table-2`,[[`path`,{d:`M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18`,key:`gugj83`}]]),H=e(t(),1),Me={mqtt:`MQTT Client`,opcua:`OPC UA Client Advanced`,modbus:`Modbus TCP`},U={Boolean:`bool`,Int32:`int32`,UInt16:`uint16`,UInt32:`uint32`,Float:`float32`,Double:`float64`,String:`string`},W={float32:`float32`,int32:`int32`,uint32:`uint32`,uint16:`word`,boolean:`word`},Ne=`deviceId,deviceName,driverName,name,tagName,description,valueType,registerId,publishCoV,tagFormula,metaData,Retain,Qos,address,count,pollingInterval,endianness`;function Pe(e,t,n){let r=[Ne];for(let i of n){let n=Me[i]??i;for(let a of e){let e=a.protocols[i];e&&r.push(G(i,{deviceName:t,driverName:n,memberName:a.member,browsePath:a.browsePath,dataType:a.dataType,protocolData:e,unit:a.unit,euRange:a.euRange,model:a.model,asset:a.asset,access:a.access}))}}return`${r.join(`
|
|
2
|
+
`)}\n`}function G(e,t){switch(e){case`mqtt`:return K(t);case`opcua`:return Fe(t);case`modbus`:return Ie(t);default:throw Error(`Unsupported LE export protocol: "${e}"`)}}function K(e){let t=typeof e.protocolData?.topic==`string`?e.protocolData.topic:`${e.browsePath}/${e.memberName}`;return[``,q(e.deviceName),q(e.driverName),q(t),q(e.memberName),``,`string`,``,`false`,``,J(e),`Disable`,`0`,``,``,``,``].join(`,`)}function Fe(e){let t=typeof e.protocolData?.nodeId==`string`?e.protocolData.nodeId:`ns=1;s=${e.browsePath}/${e.memberName}`,n=U[e.dataType]??`string`;return[``,q(e.deviceName),q(e.driverName),q(t),q(e.memberName),``,n,``,`false`,``,J(e),``,``,``,``,``,``].join(`,`)}function Ie(e){let t=W[String(e.protocolData?.registerType??``)]??Le(e.dataType),n=e.protocolData?.address;return[``,q(e.deviceName),q(e.driverName),`H`,q(e.memberName),``,t,``,`false`,``,J(e),``,``,typeof n==`number`?String(n):`0`,`1`,`1.0000000000`,`AB CD`].join(`,`)}function Le(e){switch(e){case`Double`:case`Float`:return`float32`;case`Int32`:return`int32`;case`UInt32`:return`uint32`;case`Boolean`:case`UInt16`:return`word`;default:return`float32`}}function q(e){return e.includes(`,`)||e.includes(`"`)||e.includes(`
|
|
3
|
+
`)?`"${e.replace(/"/g,`""`)}"`:e}function J(e){let t={uns_path:e.browsePath?`${e.browsePath}/${e.memberName}`:e.memberName,model:e.model,asset:e.asset,access:e.access};return e.unit!=null&&(t.unit=e.unit),e.euRange!=null&&(t.eu_range_min=String(e.euRange[0]),t.eu_range_max=String(e.euRange[1])),q(JSON.stringify(t))}var Y=n(),Re={mqtt:`MQTT`,opcua:`OPC UA`,modbus:`Modbus`},ze=[{id:V.id,label:V.label}];function Be({open:e,onOpenChange:t,tags:n,totalTags:r,enabledProtocols:i,selectedAsset:a}){let[o,s]=(0,H.useState)(`litmus-edge`),[c,l]=(0,H.useState)(``),[u,d]=(0,H.useState)(``),f=(0,H.useRef)(null),x=(0,H.useRef)(!1);(0,H.useEffect)(()=>{e&&!x.current&&(s(V.id),l(a??``),d(i[0]??``),setTimeout(()=>f.current?.focus(),80)),x.current=e},[e,i,a]);let S=c.trim()!==``&&u!==``,C=o===V.id?S:!1,ee=(0,H.useCallback)(()=>{if(o===V.id){let e=Pe(n,c.trim(),[u]),r=new Blob([e],{type:`text/csv`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=`${c.trim()}-litmus-edge-tags.csv`,a.click(),URL.revokeObjectURL(i),t(!1)}},[o,c,n,u,t]),te=n.length<r,w=(0,H.useMemo)(()=>[...ze.map(e=>({value:e.id,label:e.label})),...B.map(e=>({value:e.id,label:e.label}))],[]),ne=(0,H.useMemo)(()=>i.map(e=>({value:e,label:Re[e]??e.toUpperCase()})),[i]);return(0,Y.jsx)(v,{open:e,onOpenChange:t,children:(0,Y.jsxs)(h,{className:`sm:max-w-lg`,children:[(0,Y.jsxs)(p,{children:[(0,Y.jsx)(g,{children:`Export for Integration`}),(0,Y.jsx)(_,{children:te?`Exporting ${n.length} of ${r} tags based on current table filters.`:`Exporting all ${n.length} tags. Use table filters to narrow scope.`})]}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-4 py-1`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Y.jsx)(k,{className:`text-sm`,children:`Integration`}),(0,Y.jsxs)(z,{value:o,onValueChange:e=>e&&s(e),items:w,children:[(0,Y.jsx)(R,{className:`w-full text-sm`,children:(0,Y.jsx)(F,{placeholder:`Select integration`})}),(0,Y.jsxs)(L,{children:[ze.map(e=>(0,Y.jsx)(I,{value:e.id,children:e.label},e.id)),B.map(e=>(0,Y.jsx)(I,{value:e.id,disabled:!0,children:e.label},e.id))]})]})]}),o===V.id&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Y.jsxs)(k,{htmlFor:`device-name`,className:`text-sm`,children:[`Device name `,(0,Y.jsx)(`span`,{className:`text-destructive`,children:`*`})]}),(0,Y.jsx)(b,{id:`device-name`,ref:f,placeholder:`e.g. smart_factory_cnc_001`,value:c,onChange:e=>l(e.target.value),onKeyDown:e=>e.key===`Enter`&&C&&ee(),className:`font-mono text-sm`})]}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Y.jsx)(k,{className:`text-sm`,children:`Protocol`}),(0,Y.jsxs)(z,{value:u||void 0,onValueChange:e=>e&&d(e),items:ne,children:[(0,Y.jsx)(R,{className:`w-full text-sm`,children:(0,Y.jsx)(F,{placeholder:`Select a protocol`})}),(0,Y.jsx)(L,{children:i.map(e=>(0,Y.jsx)(I,{value:e,children:Re[e]??e.toUpperCase()},e))})]})]})]})]}),(0,Y.jsxs)(m,{children:[(0,Y.jsx)(y,{variant:`outline`,size:`sm`,onClick:()=>t(!1),children:`Cancel`}),(0,Y.jsxs)(y,{size:`sm`,className:`gap-1.5`,disabled:!C,onClick:ee,children:[(0,Y.jsx)(me,{className:`size-3.5`}),`Download CSV`]})]})]})})}var Ve=`border-border/70 bg-popover/98 font-body text-sm shadow-xl ring-1 ring-foreground/12 backdrop-blur-sm supports-backdrop-filter:bg-popover/90 p-1.5`,He=`px-2 pb-1 font-heading text-[9px] font-semibold tracking-[0.14em] text-muted-foreground uppercase`,Ue=`h-8 gap-1.5 border-border/80 bg-background/80 text-xs font-medium shadow-sm transition-colors hover:border-primary/35 hover:bg-accent/40`,We=`gap-2.5 rounded-[var(--miravo-radius-tight)] py-2 pl-2 pr-2 text-[13px] data-[highlighted]:bg-sidebar-accent data-[highlighted]:text-sidebar-accent-foreground`;function Ge({protocol:e,asset:t,model:n,member:r,enabledProtocols:i,hasFilters:a,memberSearchRef:o,onProtocolChange:s,onAssetChange:c,onModelChange:l,onMemberChange:u,onClearFilters:d,onAssetSearch:f,onModelSearch:p,filteredAssetOptions:m,filteredModelOptions:h}){let g=(0,H.useMemo)(()=>[{value:`all`,label:`All protocols`},...i.map(e=>({value:e,label:e.toUpperCase()}))],[i]);return(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Y.jsxs)(z,{value:e||`all`,onValueChange:e=>s(!e||e===`all`?``:e),items:g,children:[(0,Y.jsx)(R,{className:`h-8 w-[140px]`,"aria-label":`Protocol filter`,children:(0,Y.jsx)(F,{placeholder:`All protocols`})}),(0,Y.jsxs)(L,{alignItemWithTrigger:!1,align:`start`,children:[(0,Y.jsx)(I,{value:`all`,children:`All protocols`}),i.map(e=>(0,Y.jsx)(I,{value:e,children:e.toUpperCase()},e))]})]}),(0,Y.jsxs)(P,{value:t?{value:t,label:S(t)}:null,onValueChange:e=>c(e?.value??``),isItemEqualToValue:(e,t)=>e?.value===t?.value,onInputValueChange:f,children:[(0,Y.jsx)(N,{placeholder:`All assets`,className:`h-8 w-[200px]`,showClear:!!t}),(0,Y.jsx)(M,{children:(0,Y.jsxs)(A,{children:[m.map(([e,t])=>(0,Y.jsxs)(j,{value:{value:e,label:S(e)},children:[(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,title:`${S(e)} (${e})`,children:S(e)}),(0,Y.jsxs)(`span`,{className:`shrink-0 tabular-nums text-muted-foreground`,children:[`(`,t,`)`]})]},e)),m.length===0&&(0,Y.jsx)(`p`,{className:`py-2 text-center text-xs text-muted-foreground`,children:`No assets found`})]})})]}),(0,Y.jsxs)(P,{value:n?{value:n,label:C(n)}:null,onValueChange:e=>l(e?.value??``),isItemEqualToValue:(e,t)=>e?.value===t?.value,onInputValueChange:p,children:[(0,Y.jsx)(N,{placeholder:`All models`,className:`h-8 w-[200px]`,showClear:!!n}),(0,Y.jsx)(M,{children:(0,Y.jsxs)(A,{children:[h.map(([e,t])=>(0,Y.jsxs)(j,{value:{value:e,label:C(e)},children:[(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:C(e)}),(0,Y.jsxs)(`span`,{className:`shrink-0 tabular-nums text-muted-foreground`,children:[`(`,t,`)`]})]},e)),h.length===0&&(0,Y.jsx)(`p`,{className:`py-2 text-center text-xs text-muted-foreground`,children:`No models found`})]})})]}),(0,Y.jsxs)(`div`,{className:`relative`,children:[(0,Y.jsx)(b,{ref:o,placeholder:`Search member…`,className:`h-8 w-[160px] pr-7`,value:r,onChange:e=>u(e.target.value)}),!r&&(0,Y.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:`/`})]}),a&&(0,Y.jsxs)(y,{variant:`ghost`,size:`sm`,className:`h-8 gap-1 text-xs`,onClick:d,children:[(0,Y.jsx)(x,{className:`size-3`}),`Clear`]})]})}function X({sorted:e}){return e===`asc`?(0,Y.jsx)(De,{className:`ml-1 inline size-3`}):e===`desc`?(0,Y.jsx)(Ee,{className:`ml-1 inline size-3`}):(0,Y.jsx)(ie,{className:`ml-1 inline size-3 opacity-30`})}function Ke(e,t=1,n=2){let r=e.split(`/`);return r.length<=t+n+1?e:[...r.slice(0,t),`...`,...r.slice(-n)].join(`/`)}function Z({label:e,value:t,collapsible:n}){let r=n?Ke(t):t;return(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`p`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground`,children:e}),(0,Y.jsx)(T,{value:t,label:`Copy ${e}`,tooltipSide:`top`,render:({icon:e})=>(0,Y.jsxs)(`button`,{type:`button`,className:`mt-0.5 flex items-start gap-1 font-mono text-xs hover:text-foreground`,children:[n?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{className:`break-all lg:hidden`,children:r}),(0,Y.jsx)(`span`,{className:`hidden break-all lg:inline`,children:t})]}):(0,Y.jsx)(`span`,{className:`break-all`,children:t}),(0,Y.jsx)(`span`,{className:`mt-0.5 shrink-0 text-muted-foreground`,children:e})]})})]})}function qe({tag:e,enabledProtocols:t}){let n=`${e.browsePath}/${e.member}`,r=e.protocols.opcua,i=e.protocols.modbus,a=e.access===`readwrite`?`rw`:e.access;return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-3 text-xs`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-x-10 gap-y-2.5`,children:[(0,Y.jsx)(Z,{label:`Topic / UNS`,value:n,collapsible:!0}),t.includes(`opcua`)&&typeof r?.nodeId==`string`&&(0,Y.jsx)(Z,{label:`OPC UA NodeId`,value:r.nodeId,collapsible:!0}),t.includes(`modbus`)&&i?.address!=null&&(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`p`,{className:`text-[10px] uppercase tracking-wider text-muted-foreground`,children:`Modbus`}),(0,Y.jsxs)(`p`,{className:`mt-0.5 font-mono`,children:[`addr=`,String(i.address),` regs=`,String(i.count),` `,String(i.registerType)]})]})]}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-1 text-muted-foreground`,children:[(0,Y.jsxs)(O,{children:[(0,Y.jsx)(E,{className:`font-mono`,render:(0,Y.jsx)(`span`,{}),children:e.dataType}),(0,Y.jsx)(D,{side:`top`,children:`Data type`})]}),e.unit&&(0,Y.jsxs)(O,{children:[(0,Y.jsx)(E,{className:`font-mono`,render:(0,Y.jsx)(`span`,{}),children:e.unit}),(0,Y.jsx)(D,{side:`top`,children:`Unit`})]}),(0,Y.jsxs)(O,{children:[(0,Y.jsx)(E,{className:`font-mono`,render:(0,Y.jsx)(`span`,{}),children:a}),(0,Y.jsx)(D,{side:`top`,children:`Access: r / w / rw`})]}),e.euRange&&(0,Y.jsxs)(O,{children:[(0,Y.jsxs)(E,{className:`font-mono`,render:(0,Y.jsx)(`span`,{}),children:[`[`,e.euRange[0],`, `,e.euRange[1],`]`]}),(0,Y.jsx)(D,{side:`top`,children:`EU range (min, max)`})]}),(0,Y.jsxs)(O,{children:[(0,Y.jsxs)(E,{render:(0,Y.jsx)(f,{to:`/asset/${e.asset}`,className:`inline-flex items-center gap-1 text-primary underline-offset-4 hover:underline`,"aria-label":`Open asset`}),children:[`View asset`,(0,Y.jsx)(Ae,{className:`size-3`})]}),(0,Y.jsx)(D,{side:`top`,children:`Open asset`})]})]})]})}var Je=[{id:`expand`,meta:{cellClass:`!pl-2 !pr-0 w-0`},header:()=>(0,Y.jsx)(`span`,{className:`sr-only`,children:`Expand row`}),enableSorting:!1,cell:({row:e})=>(0,Y.jsx)(`button`,{type:`button`,className:`inline-flex size-5 items-center justify-center rounded-[var(--miravo-radius-tight)] text-muted-foreground hover:text-foreground`,"aria-label":e.getIsExpanded()?`Collapse row`:`Expand row`,"aria-expanded":e.getIsExpanded(),onClick:t=>{t.stopPropagation(),e.toggleExpanded()},children:(0,Y.jsx)(de,{className:`size-3.5 transition-transform ${e.getIsExpanded()?`rotate-0`:`-rotate-90`}`})})},{accessorKey:`asset`,header:({column:e})=>(0,Y.jsxs)(`button`,{type:`button`,className:`inline-flex items-center`,onClick:e.getToggleSortingHandler(),children:[`Asset`,(0,Y.jsx)(X,{sorted:e.getIsSorted()})]}),cell:({getValue:e})=>(0,Y.jsx)(`span`,{className:`block max-w-[18rem] truncate font-mono text-xs`,title:e(),children:e()})},{accessorKey:`member`,header:({column:e})=>(0,Y.jsxs)(`button`,{type:`button`,className:`inline-flex items-center`,onClick:e.getToggleSortingHandler(),children:[`Member`,(0,Y.jsx)(X,{sorted:e.getIsSorted()})]}),cell:({getValue:e})=>(0,Y.jsx)(`span`,{className:`block max-w-[20rem] truncate font-mono text-xs`,title:e(),children:e()})},{accessorKey:`model`,header:({column:e})=>(0,Y.jsxs)(`button`,{type:`button`,className:`inline-flex items-center`,onClick:e.getToggleSortingHandler(),children:[`Model`,(0,Y.jsx)(X,{sorted:e.getIsSorted()})]}),cell:({getValue:e})=>(0,Y.jsx)(`span`,{className:`block max-w-[18rem] truncate text-xs`,title:e(),children:e()})},{accessorKey:`dataType`,meta:{hideClass:`hidden lg:table-cell`},header:({column:e})=>(0,Y.jsxs)(`button`,{type:`button`,className:`inline-flex items-center`,onClick:e.getToggleSortingHandler(),children:[`Type`,(0,Y.jsx)(X,{sorted:e.getIsSorted()})]}),cell:({getValue:e})=>(0,Y.jsx)(`span`,{className:`font-mono text-xs`,children:e()})},{accessorKey:`unit`,meta:{hideClass:`hidden lg:table-cell`},header:`Unit`,enableSorting:!1,cell:({getValue:e})=>(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e()??`—`})},{accessorKey:`access`,meta:{hideClass:`hidden lg:table-cell`},header:`Access`,enableSorting:!1,cell:({getValue:e})=>{let t=e();return(0,Y.jsx)(`span`,{className:`font-mono text-xs`,children:t===`readwrite`?`rw`:t})}}];function Ye(e,t){let n=new Blob([e],{type:`text/csv`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=t,i.click(),URL.revokeObjectURL(r)}var Xe=[10,15,25,50,100],Ze=15,Qe=100;function $e(e){return Xe.includes(e)?e:Ze}function et(e){return/[",\r\n]/.test(e)?`"${e.replaceAll(`"`,`""`)}"`:e}function Q(){let[e,t]=(0,H.useState)(!1),n=(0,H.useRef)(null);(0,H.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(),n.current?.focus())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]);let[p,m]=l(`protocol`,u.withDefault(``)),[h,g]=l(`asset`,u.withDefault(``)),[_,v]=l(`model`,u.withDefault(``)),[b,x]=l(`member`,u.withDefault(``)),[S,C]=l(`perPage`,d.withDefault(Ze)),w=$e(S),ie=o(e=>e.assetCount),T=c({queryKey:s.tags.manifest(ie),queryFn:()=>a(`/manifest`,r.manifest),placeholderData:i}),E=T.data??null,D=T.isError,O=T.isPending&&!E&&!D,k=_e(T.error,`Failed to fetch manifest.`),A=E?.tags??[],j=E?.summary?.enabledProtocols??[],M=(0,H.useDeferredValue)(b),N=(0,H.useMemo)(()=>A.filter(e=>e.kind===`variable`),[A]),P=(0,H.useMemo)(()=>{let e=new Map;for(let t of N)e.set(t.asset,(e.get(t.asset)??0)+1);return[...e.entries()].sort((e,t)=>e[0].localeCompare(t[0]))},[N]),B=(0,H.useMemo)(()=>{let e=new Map;for(let t of N)e.set(t.model,(e.get(t.model)??0)+1);return[...e.entries()].sort((e,t)=>e[0].localeCompare(t[0]))},[N]),V=(0,H.useMemo)(()=>{let e=M.trim().toLowerCase();if(!p&&!h&&!_&&!e)return N;let t=[];for(let n of N)p&&n.protocols[p]==null||h&&n.asset!==h||_&&n.model!==_||e&&!n.member.toLowerCase().includes(e)||t.push(n);return t},[N,p,h,_,M]),[Ee,De]=(0,H.useState)([]),[Ae,Me]=(0,H.useState)({}),[U,W]=(0,H.useState)(0),Ne=p!==``||h!==``||_!==``||b!==``,Pe=(0,H.useCallback)(()=>{m(``),g(``),v(``),x(``),W(0)},[m,g,v,x]),G=Se({data:V,columns:Je,getCoreRowModel:we(),getSortedRowModel:Ce(),getExpandedRowModel:xe(),getRowCanExpand:()=>!0,getPaginationRowModel:be(),onSortingChange:De,onExpandedChange:Me,onPaginationChange:e=>{let t=typeof e==`function`?e({pageIndex:U,pageSize:w}):e;W(t.pageIndex),C(t.pageSize)},state:{sorting:Ee,expanded:Ae,pagination:{pageIndex:U,pageSize:w}}}),K=Math.ceil(V.length/w);(0,H.useEffect)(()=>{S!==w&&C(w)},[w,S,C]),(0,H.useEffect)(()=>{K>0&&U>=K&&W(K-1)},[K,U]);let Fe=(0,H.useCallback)(e=>{W(0),C(e)},[C]),Ie=(0,H.useCallback)(e=>{W(0),m(e)},[m]),Le=(0,H.useCallback)(e=>{W(0),g(e)},[g]),q=(0,H.useCallback)(e=>{W(0),v(e)},[v]),J=(0,H.useCallback)(e=>{W(0),x(e)},[x]),[Re,ze]=(0,H.useState)(``),[X,Ke]=(0,H.useState)(``),Z=(0,H.useDeferredValue)(Re),Q=(0,H.useDeferredValue)(X),tt=(0,H.useMemo)(()=>(Z?P.filter(([e])=>ee(e,Z)):P).slice(0,Qe),[P,Z]),nt=(0,H.useMemo)(()=>(Q?B.filter(([e])=>te(e,Q)):B).slice(0,Qe),[B,Q]),rt=G.getRowModel().rows,$=rt.length,it=$===0||V.length===0?0:U*w+1,at=$===0||V.length===0?0:U*w+$,ot=K,st=V.length===0||ot===0?0:U+1,ct=(0,H.useCallback)(()=>{let e=p?[p]:j,t=[`asset`,`member`,`model`,`dataType`,`unit`,`access`,`browsePath`,...e.includes(`mqtt`)?[`mqtt_topic`]:[],...e.includes(`opcua`)?[`opcua_nodeId`]:[],...e.includes(`modbus`)?[`modbus_address`,`modbus_count`,`modbus_encoding`]:[]],n=V.map(t=>{let n=t.protocols.mqtt,r=t.protocols.opcua,i=t.protocols.modbus;return[t.asset,t.member,t.model,t.dataType,t.unit??``,t.access,t.browsePath,...e.includes(`mqtt`)?[String(n?.topic??``)]:[],...e.includes(`opcua`)?[String(r?.nodeId??``)]:[],...e.includes(`modbus`)?[String(i?.address??``),String(i?.count??``),String(i?.registerType??``)]:[]]});Ye([t.map(et).join(`,`),...n.map(e=>e.map(et).join(`,`))].join(`
|
|
4
|
+
`),`miravo-tags.csv`)},[V,p,j]);return D&&!E?(0,Y.jsx)(ge,{className:`min-h-full`,children:(0,Y.jsx)(`div`,{className:`flex min-h-[40vh] flex-col items-center justify-center p-6 sm:p-12`,children:(0,Y.jsx)(`div`,{className:`w-full max-w-md`,children:(0,Y.jsx)(he,{message:k,onRetry:()=>void T.refetch(),isRetrying:T.isFetching})})})}):(0,Y.jsxs)(`div`,{className:`mx-auto flex w-full max-w-screen-2xl flex-col gap-5 p-4 sm:gap-6 sm:p-6`,children:[D&&E?(0,Y.jsx)(he,{message:`${k} Showing cached tags.`,onRetry:()=>void T.refetch(),isRetrying:T.isFetching}):null,(0,Y.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Y.jsx)(`h1`,{className:`font-heading text-2xl font-semibold tracking-tight`,children:`Tag Explorer`}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:O?`Loading tag manifest...`:`${E?.summary?.totalAssets??0} assets · ${j.length} protocols`})]}),(0,Y.jsxs)(ue,{children:[(0,Y.jsxs)(le,{render:(0,Y.jsx)(y,{variant:`outline`,size:`sm`,className:ne(Ue,`px-3`)}),children:[(0,Y.jsx)(me,{className:`size-3.5 opacity-90`,"aria-hidden":!0}),`Export`,(0,Y.jsx)(de,{className:`size-3 opacity-60`,"aria-hidden":!0})]}),(0,Y.jsx)(oe,{align:`end`,sideOffset:6,className:ne(`min-w-[13.5rem]`,Ve),children:(0,Y.jsxs)(ce,{children:[(0,Y.jsx)(re,{className:He,children:`Export`}),(0,Y.jsx)(se,{className:`bg-border/60`}),(0,Y.jsxs)(ae,{onClick:ct,className:We,children:[(0,Y.jsx)(je,{className:`size-3.5 shrink-0 text-primary`,"aria-hidden":!0}),`Download CSV`]}),(0,Y.jsxs)(ae,{onClick:()=>t(!0),className:We,children:[(0,Y.jsx)(Oe,{className:`size-3.5 shrink-0 text-primary`,"aria-hidden":!0}),`Export for Integration…`]})]})})]})]}),(0,Y.jsx)(Ge,{protocol:p,asset:h,model:_,member:b,enabledProtocols:j,hasFilters:Ne,memberSearchRef:n,onProtocolChange:Ie,onAssetChange:Le,onModelChange:q,onMemberChange:J,onClearFilters:Pe,onAssetSearch:ze,onModelSearch:Ke,filteredAssetOptions:tt,filteredModelOptions:nt}),V.length!==N.length&&N.length>0&&(0,Y.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Showing`,` `,(0,Y.jsx)(`span`,{className:`font-medium tabular-nums text-foreground`,children:V.length}),` of`,` `,(0,Y.jsx)(`span`,{className:`tabular-nums`,children:N.length}),` tags`]}),(0,Y.jsx)(ve,{className:`min-w-0 py-0`,children:(0,Y.jsx)(ye,{className:`p-0`,children:(0,Y.jsx)(`div`,{className:`min-w-0 overflow-auto`,children:(0,Y.jsxs)(`table`,{className:`w-full caption-bottom text-sm`,children:[(0,Y.jsx)(`thead`,{className:`sticky top-0 z-10 border-b bg-background [&_tr]:border-b`,children:G.getHeaderGroups().map(e=>(0,Y.jsx)(`tr`,{className:`border-b transition-colors hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,children:e.headers.map(e=>{let t=e.column.columnDef.meta;return(0,Y.jsx)(`th`,{className:`h-10 whitespace-nowrap px-1.5 text-left text-xs font-medium text-muted-foreground sm:px-4 ${t?.hideClass??``} ${t?.cellClass??``}`,children:e.isPlaceholder?null:Te(e.column.columnDef.header,e.getContext())},e.id)})},e.id))}),(0,Y.jsx)(`tbody`,{className:`[&_tr:last-child]:border-0`,children:O?null:rt.length>0?rt.map(e=>{let t=e.getIsExpanded(),n=e.getVisibleCells();return(0,Y.jsxs)(H.Fragment,{children:[(0,Y.jsx)(`tr`,{tabIndex:0,className:`cursor-pointer border-b transition-colors hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:bg-sidebar-accent focus-visible:outline-none`,onClick:()=>e.toggleExpanded(),onKeyDown:t=>{t.key!==`Enter`&&t.key!==` `||(t.preventDefault(),e.toggleExpanded())},children:n.map(e=>{let t=e.column.columnDef.meta;return(0,Y.jsx)(`td`,{className:`whitespace-nowrap px-1.5 py-1.5 text-left sm:px-4 ${t?.hideClass??``} ${t?.cellClass??``}`,children:Te(e.column.columnDef.cell,e.getContext())},e.id)})}),t&&(0,Y.jsx)(`tr`,{children:(0,Y.jsx)(`td`,{colSpan:n.length,className:`p-0`,children:(0,Y.jsx)(`div`,{className:`border-b`,children:(0,Y.jsx)(`div`,{className:`px-1.5 py-3 pl-6 sm:px-4 sm:pl-10`,children:(0,Y.jsx)(qe,{tag:e.original,enabledProtocols:j})})})})})]},e.id)}):(0,Y.jsx)(`tr`,{children:(0,Y.jsx)(`td`,{colSpan:Je.length,className:`h-32 px-2 text-center sm:px-4`,children:N.length===0?(0,Y.jsxs)(`div`,{className:`flex flex-col items-center gap-2`,children:[(0,Y.jsx)(ke,{className:`size-8 text-muted-foreground`}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No tags available`}),(0,Y.jsx)(f,{to:`/catalog`,className:`text-xs text-primary underline-offset-4 hover:underline`,children:`Start a factory from the Catalog to generate tags`})]}):(0,Y.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`No matching tags.`,` `,(0,Y.jsx)(`span`,{className:`text-xs`,children:`Try adjusting your filters.`})]})})})})]})})})}),(0,Y.jsx)(`div`,{className:`px-3 py-2 text-xs text-muted-foreground`,children:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between sm:gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3 sm:justify-start sm:gap-5`,children:[(0,Y.jsxs)(`p`,{className:`min-w-0 leading-tight`,children:[(0,Y.jsx)(`span`,{className:`font-medium tabular-nums text-foreground`,children:it===0?`0`:`${it}\u2013${at}`}),` `,(0,Y.jsxs)(`span`,{className:`text-muted-foreground`,children:[`of `,V.length,` tags`]})]}),(0,Y.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5 whitespace-nowrap`,children:[(0,Y.jsxs)(z,{value:String(w),onValueChange:e=>e&&Fe(Number(e)),children:[(0,Y.jsx)(R,{className:`h-8 w-[4.25rem]`,"aria-label":`Rows per page`,children:(0,Y.jsx)(F,{})}),(0,Y.jsx)(L,{children:Xe.map(e=>(0,Y.jsx)(I,{value:String(e),children:e},e))})]}),(0,Y.jsx)(`span`,{className:`hidden text-muted-foreground sm:inline`,children:`per page`})]})]}),(0,Y.jsxs)(`nav`,{className:`flex items-center justify-center gap-2 border-border/60 border-t pt-2 sm:justify-end sm:border-0 sm:pt-0`,"aria-label":`Table pages`,children:[(0,Y.jsx)(y,{variant:`outline`,size:`sm`,className:`h-8 w-8 shrink-0 p-0`,disabled:!G.getCanPreviousPage(),onClick:()=>G.previousPage(),"aria-label":`Previous page`,children:(0,Y.jsx)(fe,{className:`size-3.5`})}),(0,Y.jsxs)(`span`,{className:`min-w-[5ch] text-center text-sm font-medium tabular-nums whitespace-nowrap text-foreground`,children:[st,` / `,ot]}),(0,Y.jsx)(y,{variant:`outline`,size:`sm`,className:`h-8 w-8 shrink-0 p-0`,disabled:!G.getCanNextPage(),onClick:()=>G.nextPage(),"aria-label":`Next page`,children:(0,Y.jsx)(pe,{className:`size-3.5`})})]})]})}),(0,Y.jsx)(Be,{open:e,onOpenChange:t,tags:V,totalTags:A.length,enabledProtocols:j,selectedAsset:h||void 0})]})}export{Q as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,a as t,c as n,g as r,n as i,o as a,s as o,t as s}from"./dom-CQuChC3G.js";import{C as c,S as l,T as u,_ as d,c as f,g as p,s as m,u as h,w as g}from"./status-DNfdEhTs.js";var _=7,v=Math.PI/180,y=3.4,b=_-1.7;function x(e,t){if(t.roof)return[t.roof[0],t.roof[1],e.h+y+b];let n=e.r+b;return[Math.cos(t.angle*v)*n,Math.sin(t.angle*v)*n,t.z]}function S(e){return{x:-e.r,y:-e.r,w:e.r*2,d:e.r*2,r:e.r}}function C(e){return[6,e.h-3]}function w(e,t,n){let{k:r,G:i,P:a,at:o,S:s,L:c,slab:l,cyl:u,hmi:d,screws:f}=e,{r:p,h:m}=n,h=[],g=(e,t)=>r.pathOf(r.circleRing(0,0,e,72).map(([e,n])=>o([e,n,t])),!0),{cosA:b,sinA:S}=r.cameraOf(a),w=e=>{let t=[];for(let r of n.nozzles){if(r.roof)continue;let n=r.angle*v;if(Math.cos(n)*b+Math.sin(n)*S<-.7!==e)continue;let o=i.frameAlong([Math.cos(n)*(p-.5),Math.sin(n)*(p-.5),r.z],[Math.cos(n),Math.sin(n),0]);t.push(s(i.disc(0,_-1.6,r.r+.5,o,a),{tone:`mid`}),s(i.disc(_-3,_-1.2,r.r+2,o,a),{tone:`mid`}))}return t};h.push(...w(!0)),h.push(u(0,0,p+2.4,0,1.6,{tone:`lo`},64)),h.push(u(0,0,p,1.6,m-1.6,{tone:`mid`},72));for(let e of[.34,.68])h.push(c(r.sideArc(0,0,p,m*e,a,48),{tone:`faint`}));let T=[];for(let e=0;e<14;e++){let t=e/14*Math.PI*2;T.push([Math.cos(t)*(p+1.2),Math.sin(t)*(p+1.2)])}h.push(f(T,1.6));let E=[];for(let e of n.nozzles){if(!e.roof)continue;let t=m+y;E.push(u(e.roof[0],e.roof[1],e.r+.5,t,_-1.6,{tone:`mid`},16),u(e.roof[0],e.roof[1],e.r+2,t+_-3,1.8,{tone:`mid`},20))}h.push(...w(!1));let D=(e,t,n)=>{let[r,i]=o(t);return`<circle class="sf-gled" data-lamp="${e}" data-s="" cx="${r.toFixed(2)}" cy="${i.toFixed(2)}" r="${n}"/>`};if(n.open){let e=p-3.2;h.push(c(g(p-.6,m),{tone:`lo`}),`<path class="tk-bore" d="${g(e,m)}"/>`);let[r,i]=C(n);if(h.push(`<clipPath id="bore-${t}"><path d="${g(e,m)}"/></clipPath><path class="tk-water" data-surface="0,0,${e},${r},${i}" clip-path="url(#bore-${t})" d=""/><g data-ripples clip-path="url(#bore-${t})"></g>`),h.push(c(g(e,m),{tone:`lo`})),h.push(u(0,0,5,m-6,6,{tone:`mid`},20)),n.spout){let[e,t,r]=n.spout;h.push(`<path class="tk-stream" data-inlet="${e},${t},${r}" d=""/>`,u(e,t,2.2,r-.6,.6,{tone:`mid`},14))}}else{h.push(u(0,0,p-2,m,2.2,{tone:`mid`},64),u(0,0,p*.62,m+2.2,1.2,{tone:`mid`},48)),h.push(c(g(p*.4,m+3.4),{tone:`faint`})),h.push(u(p*.2,-p*.45,3.6,m+2.2,2,{tone:`mid`},16),u(p*.2,-p*.45,1.6,m+4.2,4,{tone:`mid`},12));let t=-p*.3,r=p*.12;h.push(u(t,r,2.6,m+2.2,5,{tone:`mid`},16),u(t,r,1.4,m+7.2,7,{tone:`lo`},12)),h.push(D(`level`,[t,r,m+14.4],1));let i=p*.55,a=p*.6;h.push(u(i,a,1.2,m+2.2,3,{tone:`mid`,crease:`none`},12),u(i,a,2.2,m+5.2,4,{tone:`mid`},16)),h.push(D(`high`,[i,a,m+10],1.2));let o=52*v,s=Math.cos(o)*p,d=Math.sin(o)*p;h.push(l({x:s-2.4,y:d-1,w:4.8,d:5,r:.8},m*.62,6,{tone:`mid`},2,.2)),h.push(D(`temp`,[s,d+4.2,m*.62+4.6],.9));let f=n.windowX??-16,_=p+2,y=m-10;h.push(l({x:f-6,y:p-3-.8,w:12,d:5.4,r:1},6,y-8+4,{tone:`lo`},2,.3));let b=[0,25,50,75,100].map(e=>{let t=8+(y-8)*e/100;return`M${f+3.2} ${-t}H${f+5.2}`}).join(``);h.push(`<g transform="${e.front(_)}"><path class="tk-glass" d="M${f-2.4} ${-y}H${f+2.4}V-8H${f-2.4}Z"/><path class="tk-level" data-level="${f-2.4},${f+2.4},8,${y}" d=""/><path class="iso-line" data-tone="mid" d="${b}"/></g>`)}h.push(...E);let O=[];for(let e=0;e<=8;e++){let t=(62+e*6)*v;O.push([Math.cos(t)*(p+.4),Math.sin(t)*(p+.4),m])}let k=O.map(([e,t])=>[e*1.02,t*1.02,3]).reverse();h.push(`<path class="tk-sheet" data-sheet="" d="${r.pathOf([...O,...k].map(e=>o(e)),!0)}"/>`);let A=n.nozzles.find(e=>e.role===`inlet`),j=n.nozzles.find(e=>e.role===`outlet`);if(n.spout){let[e,t,r]=n.spout;h.push(D(`inlet`,[e,t,r+12],1))}else if(A){let[e,t,r]=x(n,A);h.push(D(`inlet`,[e,t,r+A.r+4],1))}if(j){let[e,t,r]=x(n,j);h.push(`<g data-leak="${e.toFixed(1)},${t.toFixed(1)},${(r-j.r).toFixed(1)}"></g>`)}let M=28*v,N=Math.cos(M)*(p+3.4),P=Math.sin(M)*(p+3.4),F=[[N-Math.sin(M)*2.6,P+Math.cos(M)*2.6],[N+Math.sin(M)*2.6,P-Math.cos(M)*2.6]],I=[];for(let[e,t]of F)I.push(r.segment([e,t,2],[e,t,m+8],a));for(let e=6;e<m+6;e+=6)I.push(r.segment([F[0]?.[0]??0,F[0]?.[1]??0,e],[F[1]?.[0]??0,F[1]?.[1]??0,e],a));h.push(c(I.join(``),{tone:`lo`}));let L=n.panelX??26,R=p+10;return h.push(l({x:L-15,y:R-3,w:30,d:6,r:1},0,2,{tone:`lo`},2,.3),u(L-9,R,1,2,12,{tone:`mid`,crease:`none`},10),u(L+9,R,1,2,12,{tone:`mid`,crease:`none`},10),l({x:L-13,y:R-1.2,w:26,d:3.2,r:.8},12,18,{tone:`mid`},2,.3),d(t,R+2,L-11.5,L+11.5,14.4,26.6)),h.join(``)}var T=72;function E(_){let{svg:v,P:y,feed:b}=_,x=(e,t)=>b.num(e,t),S=new Set;for(let e of i(v,`[data-level], [data-surface]`))S.add(m(e));let C=[...S].map(e=>{let t=t=>s(v,`[data-asset="${e}"] ${t}`),n=c(v,e),r=f(t(`[data-leak]`)?.dataset.leak),l=t(`[data-inlet]`),d=t(`[data-surface]`);return{id:e,level:0,seen:!1,window:t(`[data-level]`),box:o(t(`[data-level]`)?.dataset.level),surface:d,range:o(d?.dataset.surface),inlet:l,inletAt:f(l?.dataset.inlet),sheet:t(`[data-sheet]`),lamps:new Map(i(v,`[data-asset="${e}"] [data-lamp]`).map(e=>[e.dataset.lamp??``,e])),leakAt:r,puddle:a(`path`,{class:`tk-puddle`},n),drips:u(n,3,`ellipse`,`tk-drip`),ripples:l?u(t(`[data-ripples]`)??n,2,`path`,`tk-ripple`):[],age:0}}),w=new Map(C.map(e=>[e.id,e]));return{draw(i,a,o){let s=_.reducedMotion();for(let c of C){let u=p(x(c.id,`level_percent`)/100);if(c.level=c.seen?d(c.level,u,i,.8,s):u,c.seen=c.seen||Number.isFinite(u),c.window){let[e=0,t=0,r=0,i=0]=c.box,a=r+(i-r)*c.level;n(c.window,`d`,`M${e} ${-a}H${t}V${-r}H${e}Z`)}let f=0;if(c.surface){let[t=0,i=0,a=0,o=0,s=0]=c.range;f=o+(s-o)*c.level;let l=r(t,i,a,T).map(([t,n])=>e([t,n,f],y));n(c.surface,`d`,`M${l.map(([e,t])=>`${e.toFixed(1)} ${t.toFixed(1)}`).join(`L`)}Z`)}if(!o)continue;let m=x(c.id,`inflow_rate`)>.02;if(c.inlet){let[i,o,l]=c.inletAt,[u,d]=e([i,o,l-.6],y),[p,h]=e([i,o,f],y),[g]=e([i+1,o,l],y),_=Math.abs(g-u),v=1.7*_,b=1.1*_,x=e=>e.toFixed(1);n(c.inlet,`d`,m?`M${x(u-v)} ${x(d)}L${x(u+v)} ${x(d)}L${x(p+b)} ${x(h)}L${x(p-b)} ${x(h)}Z`:``);for(let[n,l]of c.ripples.entries()){if(!m||s){t(l.el,`0`);continue}let c=(a*.7+n/2)%1,u=r(i,o,1+c*7,28).map(([t,n])=>e([t,n,f],y));l.el.setAttribute(`d`,`M${u.map(([e,t])=>`${e.toFixed(1)} ${t.toFixed(1)}`).join(`L`)}Z`),t(l.el,((1-c)*.7).toFixed(2))}}let _=Math.floor(a*2)%2==0,v=(e,t)=>n(c.lamps.get(e),`data-s`,t||null);v(`level`,g(b,c.id,`level_sensor_drift`)?_?`a`:``:`g`),v(`temp`,g(b,c.id,`temperature_transmitter_failure`)?`r`:`g`),v(`inlet`,g(b,c.id,`inlet_valve_stuck`)?`a`:``),v(`high`,x(c.id,`level_switch_high`)>0?`r`:``);let S=g(b,c.id,`overflow`);n(c.sheet,`data-on`,S?``:null);let C=g(b,c.id,`outlet_leak`)||S;c.age=C?Math.min(c.age+i,90):Math.max(0,c.age-i*.5);let w=c.age>0?3+7*(1-Math.exp(-c.age/12)):0,[E,D,O]=c.leakAt;n(c.puddle,`d`,w?h([E,D+3],w,.6,y,32):``);for(let n of c.drips){if(!C||s){t(n.el,`0`);continue}let r=(a*.9+n.seed)%1,[i,o]=e([E,D,O-r*r*O],y);l(n.el,i,o),n.el.setAttribute(`rx`,`0.5`),n.el.setAttribute(`ry`,(.45+r*.5).toFixed(2)),t(n.el,`0.9`)}}},bar(e){return w.get(e)?.level},level(e){return w.get(e)?.level}}}export{w as i,S as n,x as r,E as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{G as e,H as t,K as n,U as r,V as i,W as a,ot as o,q as s}from"./vendor-ui-D8j69UH4.js";import{t as c}from"./utils-XFKvwlFT.js";var l=o();function u({delay:e=0,...t}){return(0,l.jsx)(i,{"data-slot":`tooltip-provider`,delay:e,...t})}function d({...e}){return(0,l.jsx)(s,{"data-slot":`tooltip`,...e})}function f({...e}){return(0,l.jsx)(n,{"data-slot":`tooltip-trigger`,...e})}function p({className:n,side:i=`top`,sideOffset:o=3,align:s=`center`,alignOffset:u=0,children:d,...f}){return(0,l.jsx)(e,{children:(0,l.jsx)(a,{align:s,alignOffset:u,side:i,sideOffset:o,className:`isolate z-50`,children:(0,l.jsxs)(r,{"data-slot":`tooltip-content`,className:c(`z-50 inline-flex w-fit max-w-[min(18rem,85vw)] origin-(--transform-origin) items-center gap-1 rounded-[var(--miravo-radius-tight)] bg-tooltip px-2 py-1 text-[11px] leading-tight text-tooltip-foreground shadow-md shadow-black/25 has-data-[slot=kbd]:pr-1 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-[var(--miravo-radius-tight)] data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,n),...f,children:[d,(0,l.jsx)(t,{className:`z-50 size-2 translate-y-[calc(-50%-1px)] rotate-45 rounded-[1px] bg-tooltip fill-tooltip data-[side=bottom]:top-0.5 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-0.5 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-0.5 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-0.5 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-0.5 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2`})]})})})}export{f as i,p as n,u as r,d as t};
|
package/console-dist/assets/{transition-nav-link-cn4KZD6W.js → transition-nav-link-CBN2nulP.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ot as e}from"./vendor-ui-D8j69UH4.js";import{r as t}from"./chunk-OE4NN4TA-
|
|
1
|
+
import{ot as e}from"./vendor-ui-D8j69UH4.js";import{r as t}from"./chunk-OE4NN4TA-DBWZidbW.js";import{n,t as r}from"./use-transition-navigate-BDkvJJsk.js";var i=e();function a(e){return e.button===0&&!e.metaKey&&!e.altKey&&!e.ctrlKey&&!e.shiftKey}function o({to:e,transitionType:o,preloadOnIntent:s=!0,onClick:c,...l}){let u=r();return(0,i.jsx)(t,{...l,to:e,onMouseEnter:t=>{l.onMouseEnter?.(t),s&&n(e)},onFocus:t=>{l.onFocus?.(t),s&&n(e)},onClick:t=>{c?.(t),!t.defaultPrevented&&(l.reloadDocument||l.target&&l.target!==`_self`||l.download||a(t)&&(t.preventDefault(),u(e,{transitionType:o})))}})}export{o as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./utils-
|
|
1
|
+
import{n as e}from"./utils-XFKvwlFT.js";var t=e(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]);export{t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./utils-
|
|
1
|
+
import{n as e}from"./utils-XFKvwlFT.js";var t=e(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]);export{t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{c as t}from"./vendor-charts-95ykyDlI.js";import{$ as n,C as r,D as i,G as a,J as o,K as s,O as c,Q as l,R as u,U as d,V as f,W as p,X as m,Y as h,Z as g,c as ee,d as te,et as _,n as ne,nt as re,ot as v,q as y,rt as b,tt as x,y as ie}from"./api-tM5PSXjr.js";import{c as S}from"./dialog-B5PqrKVw.js";import{x as ae}from"./format-Bx7DF-TB.js";import{n as oe}from"./utils-XFKvwlFT.js";import{n as se,r as ce,t as le}from"./runtime-link-BRnaEnOm.js";var ue=oe(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]),C=class extends d{column;constructor(e,t,n,r){super(`Invalid expression "${e}" at column ${t}: ${n}`,r),this.name=`ExpressionSyntaxError`,this.column=t}},w={min:{min:2,max:1/0,usage:`min(a, b, ...) takes at least 2 arguments`},max:{min:2,max:1/0,usage:`max(a, b, ...) takes at least 2 arguments`},clamp:{min:3,max:3,usage:`clamp(x, lo, hi) takes exactly 3 arguments`},sqrt:{min:1,max:1,usage:`sqrt(x) takes exactly 1 argument`},pow:{min:2,max:2,usage:`pow(base, exponent) takes exactly 2 arguments`}},de=[`param`,`port`,`prev`],fe=/[A-Za-z_]/,T=/[A-Za-z0-9_]/,E=/[0-9]/,pe=new Set([`+`,`-`,`*`,`/`,`(`,`)`,`,`]);function me(e){return Object.hasOwn(w,e)}function D(e,t,n){let r=t;for(;r<e.length&&n.test(e.charAt(r));)r++;return r}function he(e){let t=[],n=0;for(;n<e.length;){let r=e.charAt(n),i=n+1;if(/\s/.test(r))n++;else if(E.test(r)||r===`.`&&E.test(e.charAt(n+1))){let r=D(e,n,E);e.charAt(r)===`.`&&(r=D(e,r+1,E)),t.push({type:`number`,value:Number(e.slice(n,r)),column:i}),n=r}else if(fe.test(r)){let r=D(e,n,T);t.push({type:`ident`,value:e.slice(n,r),column:i}),n=r}else if(r===`$`){let r=D(e,n+1,T),a=e.slice(n+1,r);if(!de.includes(a))throw new C(e,i,`unknown reference prefix "$${a}".`,`Use $param.NAME, $port.NAME or $prev.NAME, or a bare member name for the current tick.`);let o=r+1;if(e.charAt(r)!==`.`||!fe.test(e.charAt(o)))throw new C(e,i,`"$${a}" must be followed by ".NAME".`,`Write $${a}.NAME with a name of letters, digits and underscores, e.g. $${a}.rated_rpm.`);let s=D(e,o,T);t.push({type:`ref`,prefix:a,value:e.slice(o,s),column:i}),n=s}else if(pe.has(r))t.push({type:`punct`,value:r,column:i}),n++;else throw new C(e,i,`unexpected character "${r}".`,`Use only numbers, + - * /, parentheses, min/max/clamp/sqrt/pow, and references ($param.X, $port.X, $prev.X, or a member name).`)}return t.push({type:`end`,column:e.length+1}),t}var ge=class{pos=0;source;tokens;constructor(e,t){this.source=e,this.tokens=t}parse(){let e=this.parseExpr(),t=this.peek();if(t.type!==`end`)throw this.error(t,`unexpected ${_e(t)} after a complete expression.`,`Remove the trailing input, or join the parts with an operator (+ - * /).`);return e}peek(){return this.tokens[this.pos]}next(){let e=this.peek();return e.type!==`end`&&this.pos++,e}isPunct(e){let t=this.peek();return t.type===`punct`&&t.value===e}error(e,t,n){return new C(this.source,e.column,t,n)}expect(e,t){let n=this.peek();if(n.type===`punct`&&n.value===e){this.pos++;return}throw this.error(n,`expected "${e}" but found ${_e(n)}.`,t)}parseExpr(){let e=this.parseTerm();for(;this.isPunct(`+`)||this.isPunct(`-`);)e={kind:`binary`,op:this.next().value,left:e,right:this.parseTerm()};return e}parseTerm(){let e=this.parseUnary();for(;this.isPunct(`*`)||this.isPunct(`/`);)e={kind:`binary`,op:this.next().value,left:e,right:this.parseUnary()};return e}parseUnary(){return this.isPunct(`-`)||this.isPunct(`+`)?{kind:`unary`,op:this.next().value,operand:this.parseUnary()}:this.parsePrimary()}parsePrimary(){let e=this.next();switch(e.type){case`number`:return{kind:`number`,value:e.value};case`ref`:return this.referenceNode(e.prefix,e.value);case`ident`:return this.isPunct(`(`)?this.parseCall(e):{kind:`member`,name:e.value};case`punct`:if(e.value===`(`){let e=this.parseExpr();return this.expect(`)`,`Add the missing closing parenthesis.`),e}throw this.error(e,`unexpected "${e.value}" where a value was expected.`,`Put a number, a reference, a function call or a parenthesized expression here.`);case`end`:throw this.error(e,`expression ended where a value was expected.`,`Complete the expression, e.g. remove the trailing operator.`);default:return e}}referenceNode(e,t){switch(e){case`param`:return{kind:`param`,name:t};case`port`:return{kind:`port`,name:t};default:return{kind:`previous`,name:t}}}parseCall(e){let t=e.value;if(!me(t))throw this.error(e,`unknown function "${t}".`,`Supported functions: ${Object.keys(w).join(`, `)}. A member name cannot be followed by "(".`);this.next();let n=[this.parseExpr()];for(;this.isPunct(`,`);)this.next(),n.push(this.parseExpr());this.expect(`)`,`Close the ${t}(...) call with ")" and separate arguments with ",".`);let r=w[t];if(n.length<r.min||n.length>r.max)throw this.error(e,`${t}() called with ${n.length} argument${n.length===1?``:`s`}.`,`${r.usage}.`);return{kind:`call`,fn:t,args:n}}};function _e(e){switch(e.type){case`number`:return`number ${e.value}`;case`ident`:return`name "${e.value}"`;case`ref`:return`reference "$${e.prefix}.${e.value}"`;case`punct`:return`"${e.value}"`;case`end`:return`end of expression`;default:return String(e)}}function O(e){return new ge(e,he(e)).parse()}function ve(e){let t=new Set,n=new Set,r=new Set,i=new Set,a=e=>{switch(e.kind){case`number`:return;case`member`:t.add(e.name);return;case`previous`:n.add(e.name);return;case`param`:r.add(e.name);return;case`port`:i.add(e.name);return;case`unary`:a(e.operand);return;case`binary`:a(e.left),a(e.right);return;case`call`:for(let t of e.args)a(t);return;default:}};return a(e),{members:t,previousMembers:n,params:r,ports:i}}var ye=`%.ACH.A.Hz.L.L/h.L/min.L/s.N.Pa.V.bar.cfm.count.count/m3.degC.h.kN.kVA.kW.kWh.m.m/s.m3.m3/h.min.mm.mm/min.mm/s.ppm.pu.rpm.s.K.degF.g.kg.kg/h.t.t/h.kPa.mbar.psi.m/min.um.uS/cm.mS/cm.mg/L.W.MW.MWh.Nm`.split(`.`),k=y(ye);new Set(ye);function A(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function be(e){if(typeof e==`string`)return f.exec(e)?.[1]}function xe(e){try{let t=ve(O(e)),n=[...t.members,...[...t.previousMembers].map(e=>`$prev.${e}`),...[...t.ports].map(e=>`$port.${e}`)];return n.length>0?`"${e}" references ${n.join(`, `)}, but coefficient fields are evaluated once per asset and may only use numbers and $param.X. Fix: use the "expression" generator for member, $prev or $port references, or replace them with $param.X.`:void 0}catch(e){if(e instanceof C)return`${e.message} Fix: ${e.fix}`;throw e}}function Se(e,t,n){if(!A(e)||e.type!==`weighted-sum`)return;let r=e.terms;if(Array.isArray(r))for(let e=0;e<r.length;e++){let i=r[e];A(i)&&n(i,[...t,`terms`,e])}}function Ce(e,t,n){if(!A(e))return;let r=[...t,`member`],i=[...t,`previous_member`],a=[...t,`param`],o=[...t,`port`],s=[...t,`generator`];typeof e.member==`string`&&n.onMember?.(e.member,r),typeof e.previous_member==`string`&&n.onPreviousMember?.(e.previous_member,i),typeof e.param==`string`&&n.onParam?.(e.param,a),typeof e.port==`string`&&n.onPort?.(e.port,o),`generator`in e&&n.onGenerator?.(e.generator,s)}function we(e,t,n,r,i){return{onMember:e,onPreviousMember:t,onParam:n,onPort:r,onGenerator:i}}function Te(e,t,n,r,i,a,o){Ce(e,t,we(n,r,i,a,o))}var j=`Must be 1-64 chars and contain only letters, numbers, underscores, or hyphens.`;y([`float`,`int`,`string`,`bool`]);var Ee=s(`type`,[g({type:h(`float`),default:m().finite(),min:m().finite().optional(),max:m().finite().optional(),unit:k.optional()}),g({type:h(`int`),default:m().int().safe(),min:m().int().safe().optional(),max:m().int().safe().optional(),unit:k.optional()}),g({type:h(`string`),default:n(),unit:k.optional()}),g({type:h(`bool`),default:a(),unit:k.optional()})]),De=g({default:m().finite(),unit:k.optional(),description:n().optional()}).strict(),M=x([g({member:n()}).strict(),g({previous_member:n()}).strict(),g({param:n()}).strict(),g({port:n()}).strict(),g({generator:o(()=>Ze)}).strict()]),N=n().superRefine((e,t)=>{let n=xe(e);n!==void 0&&t.addIssue({code:b.custom,message:n})}),P=x([m(),N]),Oe=x([m().finite(),N]),ke={initial_value:P.default(0),gain:P.default(1),bias:P.default(0),min:m().nullable().default(null),max:m().nullable().default(null),input:M},F=g({type:h(`sine`),center:P,amplitude:m().positive(),period:m().positive()}).strict(),Ae=g({type:h(`random-walk`),min:m(),max:m(),step:m().positive()}).strict(),je=g({type:h(`noise`),center:P,stddev:m().positive()}).strict(),Me=g({type:h(`step`),values:p(m()).min(1),interval:m().positive()}).strict(),Ne=g({type:h(`correlated`),source:n().regex(u,j),factor:Oe,offset:Oe,power:m().int().positive().optional()}).strict(),Pe=g({from:n(),to:n(),rate_per_hour:m().finite().nonnegative().optional(),on:n().optional()}).strict(),I=g({type:h(`state-machine`),states:p(n()).min(1),initial:n(),transitions:p(Pe).min(1)}).strict();function L(e,t){let n=new Set(e.states);n.has(e.initial)||t.addIssue({code:b.custom,path:[`initial`],message:`State machine initial state "${e.initial}" is not in states. Fix: Set initial to one of: ${e.states.join(`, `)}.`});for(let r=0;r<e.transitions.length;r++){let i=e.transitions[r];i&&(n.has(i.from)||t.addIssue({code:b.custom,path:[`transitions`,r,`from`],message:`State machine transition from "${i.from}" references a state that is not in states. Fix: Add "${i.from}" to states or change transition.from to one of: ${e.states.join(`, `)}.`}),n.has(i.to)||t.addIssue({code:b.custom,path:[`transitions`,r,`to`],message:`State machine transition to "${i.to}" references a state that is not in states. Fix: Add "${i.to}" to states or change transition.to to one of: ${e.states.join(`, `)}.`}))}}I.superRefine(L);var Fe=g({type:h(`ramp`),start_value:m().default(0),rate:m(),duration:m().nonnegative(),start_time:m().default(0),min:m().nullable().default(null),max:m().nullable().default(null)}).strict(),R=g({type:h(`mean-reverting-noise`),mean:P,tau:m().positive(),sigma:m().positive(),initial_value:m().optional(),min:m().nullable().default(null),max:m().nullable().default(null)}).strict(),Ie=g({time:m().nonnegative(),value:m()}),z=g({type:h(`timetable`),points:p(Ie).min(2),repeat:a().default(!1),interpolation:y([`linear`,`step`]).default(`linear`)}).strict(),Le=g({type:h(`waveform`),shape:y([`sawtooth`,`triangle`,`square`,`pulse`]),center:P,amplitude:m().positive(),period:m().positive(),duty_cycle:m().min(0).max(1).default(.5)}).strict(),Re=g({type:h(`chirp`),center:P,amplitude:m().positive(),start_freq_hz:m().positive(),end_freq_hz:m().positive(),sweep_duration:m().positive(),sweep:y([`linear`,`exponential`]).default(`linear`),repeat:a().default(!0)}).strict(),B=g({type:h(`impulse`),baseline:m().default(0),amplitude:m(),rate_per_hour:m().finite().nonnegative().optional(),interval:m().positive().optional(),decay:m().min(0).max(1).optional(),duration_s:m().finite().positive().default(1)}).strict();function V(e,t){e.rate_per_hour===void 0&&e.interval===void 0&&t.addIssue({code:b.custom,path:[`rate_per_hour`],message:`Impulse generator requires either rate_per_hour or interval. Fix: Add rate_per_hour: 36 or interval: 60 (simulated seconds between triggers).`}),e.rate_per_hour!==void 0&&e.interval!==void 0&&t.addIssue({code:b.custom,path:[`interval`],message:`Impulse generator cannot have both rate_per_hour and interval. Fix: Remove one: use rate_per_hour for random triggers, or interval for periodic triggers.`})}B.superRefine(V);var ze=g({type:h(`first-order-lag`),tau:m().positive(),...ke}).strict(),Be=g({type:h(`integrator`),initial_value:P.default(0),gain:P.default(1),bias_rate:m().default(0),min:m().default(-1/0),max:m().default(1/0),wrap:a().default(!1),wrap_at:m().nullable().default(null),input:M}).strict(),Ve=g({type:h(`transport-delay`),delay:x([m().nonnegative(),N]),initial_value:m().optional(),interpolation:y([`linear`,`zoh`]).default(`linear`),input:M}).strict(),He=g({type:h(`slew-rate-limiter`),rate_up:m().positive(),rate_down:m().positive().optional(),initial_value:P.default(0),min:m().nullable().default(null),max:m().nullable().default(null),input:M}).strict(),Ue=g({type:h(`second-order`),natural_freq_hz:m().positive(),damping_ratio:m().positive(),initial_velocity:m().default(0),...ke,min:P.nullable().default(null),max:P.nullable().default(null)}).strict(),We=g({type:h(`hysteresis-relay`),on_threshold:P,off_threshold:P,output_on:x([m(),n()]).default(1),output_off:x([m(),n()]).default(0),initial_state:y([`on`,`off`]).default(`off`),mode:y([`rising`,`falling`]).default(`rising`),input:M}).strict(),Ge=g({weight:P.default(1),input:M}),Ke=g({type:h(`weighted-sum`),bias:P.default(0),terms:p(Ge).min(1),min:P.nullable().default(null),max:P.nullable().default(null)}).strict(),qe=g({type:h(`expression`),expression:n().min(1),min:P.nullable().default(null),max:P.nullable().default(null)}).strict();function Je(e,t){try{O(e.expression)}catch(e){if(!(e instanceof C))throw e;t.addIssue({code:b.custom,path:[`expression`],message:`${e.message} Fix: ${e.fix}`})}}var Ye=g({type:h(`gate`),enabled_member:n().regex(u,j),input:M,disabled_value:x([m(),n(),a()])}).strict(),Xe=s(`type`,[F,Ae,je,Me,Ne,I,Fe,R,z,Le,Re,B]).superRefine((e,t)=>{e.type===`state-machine`&&L(e,t),e.type===`impulse`&&V(e,t)}),Ze=s(`type`,[F,Ae,je,Me,Ne,I,Fe,R,z,Le,Re,B,g({type:h(`health-dependent`),stages:l(n(),Xe)}).strict(),ze,Be,Ve,He,Ue,We,Ke,qe,Ye]).superRefine((e,t)=>{e.type===`state-machine`&&L(e,t),e.type===`impulse`&&V(e,t),e.type===`expression`&&Je(e,t)}),Qe=g({multiplier:m().finite().optional(),offset:m().finite().optional()}).strict(),$e=g({scrap_rate_add:m().finite().nonnegative().optional(),name:n().min(1),duration_hours:_([m().nonnegative(),m().nonnegative()]).refine(([e,t])=>e<=t,{message:`duration_hours max must be greater than or equal to min.`}),effects:l(n(),Qe)}),et=g({interval_hours:m().finite().positive(),restores_to:n().optional()}).strict(),tt=g({running_member:n().optional(),stages:p($e).min(1),maintenance:et.optional()}).superRefine((e,t)=>{let n=new Set;for(let r=0;r<e.stages.length;r++){let i=e.stages[r];i&&(n.has(i.name)&&t.addIssue({code:b.custom,path:[`stages`,r,`name`],message:`Lifecycle stage names must be unique. Duplicate "${i.name}". Fix: Rename one stage so each lifecycle stage has a unique name.`}),n.add(i.name))}let r=e.maintenance?.restores_to;r!==void 0&&!n.has(r)&&t.addIssue({code:b.custom,path:[`maintenance`,`restores_to`],message:`Lifecycle maintenance restores_to "${r}" is not a lifecycle stage. Fix: use one of [${[...n].join(`, `)}].`})}),nt=g({multiplier:m().finite().optional(),offset:m().finite().optional(),spike:m().finite().optional(),quality:y([`uncertain`,`bad`]).optional(),duration_s:m().finite().positive().optional(),onset_s:m().finite().positive().optional(),recovery_s:m().finite().positive().optional()}).strict(),rt=g({condition:n().optional(),lifecycle_stage:n().optional(),rate_per_hour:m().finite().nonnegative()}).strict(),it=g({duration_s:m().finite().positive(),effects:l(n(),g({multiplier:m().finite().optional(),offset:m().finite().optional()}).strict()).refine(e=>Object.keys(e).length>0,{message:`Precursor effects must target at least one member.`})}).strict(),at=g({production_effect:x([h(`stop`),g({derate:m().finite().positive().max(1)}).strict(),g({scrap:m().finite().min(0).max(1)}).strict()]).optional(),name:n().regex(u,j),trigger:rt,effects:l(n(),x([nt,n()])),precursor:it.optional()}).strict();g({path:n().min(1),name:n().min(1),description:n().optional(),memberCount:m().int().nonnegative(),methodCount:m().int().nonnegative(),faultCount:m().int().nonnegative(),hasLifecycle:a(),lifecycleStageCount:m().int().nonnegative()}),g({path:n().min(1),id:n().min(1),name:n().min(1),description:n().optional(),areaCount:m().int().nonnegative(),assetAssignmentCount:m().int().nonnegative(),uniqueModelCount:m().int().nonnegative(),modelNames:p(n().min(1)),totalAssetCount:m().int().nonnegative()});var ot=g({severity:y([`error`,`warning`]),message:n(),fix:n(),file:n().optional(),line:m().int().positive().optional()});g({valid:a(),templatePath:n(),issues:p(ot)});var st=n().min(1).max(128).regex(/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/),ct=/^miravo-[a-f0-9]{12}$/;function lt(e){return ct.test(e)}var H=y([`Boolean`,`Int32`,`UInt16`,`UInt32`,`Double`,`Float`,`String`]);y([`variable`,`property`]);var ut=y([`read`,`readwrite`,`write`]),dt=y([`>`,`>=`,`<`,`<=`,`==`,`!=`]),ft=`Must be 1-64 chars and contain only letters, numbers, underscores, or hyphens.`,pt=s(`type`,[g({type:h(`threshold`),member:n().regex(u,ft),operator:dt,threshold:m().finite()}).strict(),g({type:h(`lifecycle-stage`)}).strict(),g({type:h(`health-state`)}).strict(),g({type:h(`fault-active`)}).strict(),g({type:h(`fault-count`)}).strict(),g({type:h(`active-fault-code`),fallback:n().default(``)}).strict(),g({type:h(`availability-state`),member:n().regex(u,ft),operator:dt.default(`>`),threshold:m().finite().default(0),running_state:n().default(`running`),stopped_state:n().default(`stopped`),faulted_state:n().default(`faulted`)}).strict()]),U=`Must be 1-64 chars and contain only letters, numbers, underscores, or hyphens.`,W=p(n().min(1)).min(1),mt=g({data_type:H,unit:k.optional(),description:n().optional(),enum_values:W.optional()}).strict(),ht=x([g({member:n().regex(u,U),value:x([m(),n(),a()])}).strict(),g({member:n().regex(u,U),argument:n().regex(u,U)}).strict()]),gt=g({type:h(`set-members`),writes:p(ht).min(1)}).strict(),_t=x([g({parameter:n().regex(u,U),value:m().finite()}).strict(),g({parameter:n().regex(u,U),argument:n().regex(u,U)}).strict()]),vt=s(`type`,[gt,g({type:h(`set-parameters`),writes:p(_t).min(1)}).strict(),g({type:h(`clear-faults`)}).strict(),g({type:h(`reset-lifecycle`),stage:n().min(1).optional(),clear_faults:a().optional()}).strict()]),yt=g({description:n().optional(),input_arguments:l(n().regex(u,U),mt).optional(),output_arguments:l(n().regex(u,U),mt).optional(),runtime:vt.optional()}).strict(),bt=l(n().regex(u,U),yt);function G(e){return e===`Double`||e===`Float`||e===`Int32`||e===`UInt16`||e===`UInt32`}function xt(e){return e===`Int32`||e===`UInt16`||e===`UInt32`}function K(e,t){switch(t){case`Boolean`:return typeof e==`boolean`;case`String`:return typeof e==`string`;case`Double`:case`Float`:return typeof e==`number`&&Number.isFinite(e);case`Int32`:return typeof e==`number`&&Number.isSafeInteger(e)&&e>=-2147483648&&e<=2147483647;case`UInt16`:return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0&&e<=65535;case`UInt32`:return typeof e==`number`&&Number.isSafeInteger(e)&&e>=0&&e<=4294967295;default:return!1}}function St(e,t,n){e.unit!==void 0&&(e.data_type===`Boolean`||e.data_type===`String`)&&t.addIssue({code:b.custom,path:[...n,`unit`],message:`Members with data_type "${e.data_type}" must not declare engineering units. Fix: remove the unit or use a numeric data_type.`}),e.enum_values&&e.data_type!==`String`&&t.addIssue({code:b.custom,path:[...n,`enum_values`],message:`enum_values is only valid for String members. Fix: remove enum_values or change data_type to "String".`})}function q(e,t,n,r,i){if(A(e)&&typeof e.type==`string`)switch(e.type){case`correlated`:typeof e.source==`string`&&n.push({member:e.source,path:[...t,`source`],previousTick:!1}),Y(e.factor,[...t,`factor`],r),Y(e.offset,[...t,`offset`],r);return;case`sine`:case`noise`:case`waveform`:case`chirp`:Y(e.center,[...t,`center`],r);return;case`mean-reverting-noise`:Y(e.mean,[...t,`mean`],r);return;case`second-order`:Y(e.initial_value,[...t,`initial_value`],r),Y(e.min,[...t,`min`],r),Y(e.max,[...t,`max`],r),Y(e.gain,[...t,`gain`],r),Y(e.bias,[...t,`bias`],r),J(e.input,[...t,`input`],n,r,i);return;case`first-order-lag`:Y(e.initial_value,[...t,`initial_value`],r),Y(e.gain,[...t,`gain`],r),Y(e.bias,[...t,`bias`],r),J(e.input,[...t,`input`],n,r,i);return;case`transport-delay`:Y(e.delay,[...t,`delay`],r),J(e.input,[...t,`input`],n,r,i);return;case`integrator`:Y(e.initial_value,[...t,`initial_value`],r),Y(e.gain,[...t,`gain`],r),J(e.input,[...t,`input`],n,r,i);return;case`slew-rate-limiter`:Y(e.initial_value,[...t,`initial_value`],r),J(e.input,[...t,`input`],n,r,i);return;case`hysteresis-relay`:Y(e.on_threshold,[...t,`on_threshold`],r),Y(e.off_threshold,[...t,`off_threshold`],r),J(e.input,[...t,`input`],n,r,i);return;case`weighted-sum`:Y(e.bias,[...t,`bias`],r),Y(e.min,[...t,`min`],r),Y(e.max,[...t,`max`],r),Se(e,t,(e,t)=>{Y(e.weight,[...t,`weight`],r),J(e.input,[...t,`input`],n,r,i)});return;case`expression`:{Y(e.min,[...t,`min`],r),Y(e.max,[...t,`max`],r);let a=typeof e.expression==`string`?Ct(e.expression):void 0;if(!a)return;let o=[...t,`expression`];for(let e of a.members)n.push({member:e,path:o,previousTick:!1});for(let e of a.previousMembers)n.push({member:e,path:o,previousTick:!0});for(let e of a.params)r.push({param:e,path:o});for(let e of a.ports)i.push({port:e,path:o});return}case`gate`:n.push({member:String(e.enabled_member),path:[...t,`enabled_member`],previousTick:!1}),J(e.input,[...t,`input`],n,r,i);return;case`health-dependent`:{let a=e.stages;if(!A(a))return;for(let[e,o]of Object.entries(a))q(o,[...t,`stages`,e],n,r,i);return}default:return}}function J(e,t,n,r,i){Te(e,t,(e,t)=>n.push({member:e,path:t,previousTick:!1}),(e,t)=>n.push({member:e,path:t,previousTick:!0}),(e,t)=>r.push({param:e,path:t}),(e,t)=>i.push({port:e,path:t}),(e,t)=>q(e,t,n,r,i))}function Y(e,t,n){if(typeof e!=`string`)return;let r=Ct(e);if(r)for(let e of r.params)n.push({param:e,path:t})}function Ct(e){try{return ve(O(e))}catch(e){if(e instanceof C)return;throw e}}function wt(e,t,n){if(!A(e))return;let r=e.type;(r===`threshold`||r===`availability-state`)&&typeof e.member==`string`&&n.push({member:e.member,path:[...t,`member`],previousTick:!1})}function X(e,t,n){if(!A(e))return;let r=e.type;if(typeof r!=`string`)return;if(r===`integrator`&&e.wrap===!0&&(typeof e.wrap_at!=`number`||!Number.isFinite(e.wrap_at)||e.wrap_at<=0)&&n.addIssue({code:b.custom,path:[...t,`wrap_at`],message:`wrap_at must be a finite number greater than 0 when wrap is true. Fix: Set wrap_at to a positive number, or set wrap to false.`}),r===`health-dependent`){let r=e.stages;if(A(r))for(let[e,i]of Object.entries(r))X(i,[...t,`stages`,e],n)}function i(e,t){!A(e)||!(`generator`in e)||X(e.generator,[...t,`generator`],n)}i(e.input,[...t,`input`]),Se(e,t,(e,t)=>{i(e.input,[...t,`input`])})}function Tt(e){switch(e){case`Boolean`:return!1;case`String`:return``;case`Double`:case`Float`:case`Int32`:case`UInt16`:case`UInt32`:return 0;default:return 0}}var Et=p(s(`type`,[g({type:h(`white_noise`),strength:m().min(0).max(1),scale:m().positive().optional()}).strict(),g({type:h(`drift`),tau:m().positive(),sigma:m().min(0).max(1),scale:m().positive().optional()}).strict(),g({type:h(`outlier`),probability:m().min(0).max(1),magnitude:m().positive(),scale:m().positive().optional()}).strict(),g({type:h(`gap`),probability:m().min(0).max(1),duration:m().int().positive().default(10)}).strict(),g({type:h(`noise_burst`),probability:m().min(0).max(1),duration:m().int().positive().default(5),strength:m().min(0).max(1),scale:m().positive().optional()}).strict(),g({type:h(`quantize`),resolution:m().positive().optional(),bits:m().int().min(8).max(24).optional()}).strict(),g({type:h(`deadband`),absolute:m().positive().optional(),percent:m().positive().max(100).optional()}).strict(),g({type:h(`stuck`),probability:m().min(0).max(1),duration_s:x([m().positive(),_([m().positive(),m().positive()])]),quality:y([`good`,`uncertain`]).default(`good`)}).strict()])).min(1).optional(),Dt={white_noise:0,drift:0,outlier:0,noise_burst:0,quantize:1,deadband:2,stuck:2};function Ot(e,t,n){let r=[],i=0,a=``;return e.forEach((e,o)=>{let s=e=>{r.push({index:o,message:e})};e.type===`quantize`?(e.resolution===void 0==(e.bits===void 0)&&s(`Member "${n}" quantize needs exactly one of resolution or bits. Fix: use "quantize: { resolution: 0.1 }" or "quantize: { bits: 12 }".`),e.bits!==void 0&&!t&&s(`Member "${n}" quantize uses bits but has no eu_range. Fix: add eu_range: [min, max] to the member, or use resolution: <number>.`)):e.type===`deadband`?(e.absolute===void 0==(e.percent===void 0)&&s(`Member "${n}" deadband needs exactly one of absolute or percent. Fix: use "deadband: { absolute: 0.5 }" or "deadband: { percent: 1 }".`),e.percent!==void 0&&!t&&s(`Member "${n}" deadband uses percent but has no eu_range. Fix: add eu_range: [min, max] to the member, or use absolute: <number>.`)):e.type===`stuck`&&Array.isArray(e.duration_s)&&e.duration_s[0]>e.duration_s[1]&&s(`Member "${n}" stuck duration_s [${e.duration_s[0]}, ${e.duration_s[1]}] has min > max. Fix: swap the values.`);let c=Dt[e.type];c!==void 0&&(c<i?s(`Member "${n}" declares "${e.type}" after "${a}". Fix: order effects as white_noise/drift/outlier/noise_burst, then quantize, then deadband/stuck.`):c>i&&(i=c,a=e.type))}),r}var Z=`Must be 1-64 chars and contain only letters, numbers, underscores, or hyphens.`,kt=new Set([`enterprise`,`site`,`area`,`line`,`prefix`]),At=n().regex(f,`Must be a $param.X parameter reference`),jt=x([m(),n(),a()]),Mt=g({name:n().regex(u,Z),description:n().optional(),namespace:n().optional()}).strict(),Nt=s(`kind`,[g({kind:h(`variable`),data_type:H,access:ut,unit:k.optional(),enum_values:W.optional(),eu_range:_([m(),m()]).refine(([e,t])=>e<=t,{message:`eu_range[0] (min) must be <= eu_range[1] (max).`}).optional(),generator:Ze.optional(),binding:pt.optional(),default:jt.optional(),observation_effects:Et}).strict(),g({kind:h(`property`),data_type:H,access:ut,unit:k.optional(),enum_values:W.optional(),default:x([jt,At]).optional()}).strict()]);function Pt(e){return l(n().regex(u,Z),Nt).refine(e=>Object.keys(e).length>=1,{message:`Members map must have at least 1 member.`}).refine(t=>Object.keys(t).length<=e,{message:`Members map must have at most ${e} members.`}).refine(e=>!Object.keys(e).some(e=>kt.has(e)),{message:`Member names cannot use reserved env keys: enterprise/site/area/line/prefix`})}function Ft(e={}){let t=Pt(e.maxMembersPerModel??1e3);return g({schema_version:h(`2`),model:Mt,parameters:l(n(),Ee).optional(),inputs:l(n().regex(u,Z),De).optional(),members:t,methods:bt.optional(),lifecycle:tt.optional(),faults:p(at).optional()}).strict().superRefine((e,t)=>{let n=Object.keys(e.members),r=new Map;for(let e=0;e<n.length;e++){let t=n[e];t!==void 0&&r.set(t,e)}let i=e.lifecycle?.running_member;i!==void 0&&e.members[i]?.data_type!==`Boolean`&&t.addIssue({code:b.custom,path:[`lifecycle`,`running_member`],message:`Lifecycle running_member "${i}" must name a Boolean member of this model. Fix: define that Boolean member or change running_member.`});let a=new Set(Object.keys(e.parameters??{})),o=new Set(Object.entries(e.parameters??{}).filter(([,e])=>e.type===`float`||e.type===`int`).map(([e])=>e)),s=new Set(Object.keys(e.inputs??{}));for(let e of s){let n;if(r.has(e))n=`member`;else if(a.has(e))n=`parameter`;else continue;t.addIssue({code:b.custom,path:[`inputs`,e],message:`Input port "${e}" has the same name as a ${n}. Fix: Rename the port (for example "${e}_in") so port, member and parameter names stay distinct.`})}for(let i=0;i<n.length;i++){let c=n[i];if(c===void 0)continue;let l=e.members[c];if(!l||(St(l,t,[`members`,c]),l.kind===`variable`&&l.generator!==void 0&&l.binding!==void 0&&t.addIssue({code:b.custom,path:[`members`,c,`binding`],message:`Variable members cannot define both "generator" and "binding". Fix: keep one source of value generation.`}),l.kind===`variable`&&l.binding!==void 0&&l.access!==`read`&&t.addIssue({code:b.custom,path:[`members`,c,`access`],message:`Variable members with a "binding" must use access "read". Fix: change access to "read" or remove the binding.`}),l.kind!==`variable`||!l.generator&&!l.binding))continue;let u=[],d=[],f=[],p=[`members`,c,`generator`];if(l.generator&&q(l.generator,p,u,d,f),l.binding&&wt(l.binding,[`members`,c,`binding`],u),l.generator&&(X(l.generator,p,t),l.data_type===`Boolean`&&l.generator.type!==`gate`&&t.addIssue({code:b.custom,path:[`members`,c,`generator`],message:`Member "${c}" is Boolean but its ${l.generator.type} generator produces numbers, which OPC UA and Modbus reject. Fix: replace the generator with binding: { type: threshold, member: <numeric member>, operator: ">", threshold: 0 }, or make it data_type: Double.`}),l.generator.type===`gate`)){let n=e.members[l.generator.enabled_member];n&&n.data_type!==`Boolean`&&t.addIssue({code:b.custom,path:[`members`,c,`generator`,`enabled_member`],message:`Gate generator for "${c}" references "${l.generator.enabled_member}", but "${l.generator.enabled_member}" is not Boolean. Fix: use a Boolean command/state member for enabled_member.`}),K(l.generator.disabled_value,l.data_type)||t.addIssue({code:b.custom,path:[`members`,c,`generator`,`disabled_value`],message:`Gate generator disabled_value for "${c}" does not match data_type "${l.data_type}". Fix: use a compatible disabled_value literal.`})}for(let e of u){let n=r.get(e.member);if(n===void 0){t.addIssue({code:b.custom,path:[...e.path],message:`Member "${c}" references member "${e.member}", but "${e.member}" is not defined. Fix: Define "${e.member}" in members, or change the reference to a parameter.`});continue}!e.previousTick&&n>=i&&t.addIssue({code:b.custom,path:[...e.path],message:`Member "${c}" references member "${e.member}" which is defined later (or is itself). Members are evaluated in declaration order. Fix: Move "${e.member}" above "${c}".`})}for(let e of f)s.has(e.port)||t.addIssue({code:b.custom,path:[...e.path],message:`Member "${c}" reads input port "${e.port}", but "${e.port}" is not declared. Fix: Declare it under inputs (for example inputs: { ${e.port}: { default: 0 } }), or use { member: ... } / { param: ... }.`});for(let n of d)a.has(n.param)?o.has(n.param)||t.addIssue({code:b.custom,path:[...n.path],message:`Member "${c}" references parameter "${n.param}" in a numeric position, but "${n.param}" has type "${e.parameters?.[n.param]?.type}". Only float and int parameters can be used as generator coefficients or inputs. Fix: Change "${n.param}" to type "float" or "int".`}):t.addIssue({code:b.custom,path:[...n.path],message:`Member "${c}" references parameter "${n.param}", but "${n.param}" is not defined. Fix: Define "${n.param}" under parameters, or replace "$param.${n.param}" with a literal value.`});if(l.binding)switch(l.binding.type){case`threshold`:l.data_type!==`Boolean`&&t.addIssue({code:b.custom,path:[`members`,c,`data_type`],message:`Members using binding.type "threshold" must use data_type "Boolean". Fix: change data_type to "Boolean".`}),It(c,l.binding.member,e,t,[`members`,c,`binding`,`member`]);break;case`availability-state`:l.data_type!==`String`&&t.addIssue({code:b.custom,path:[`members`,c,`data_type`],message:`Members using binding.type "availability-state" must use data_type "String". Fix: change data_type to "String".`}),It(c,l.binding.member,e,t,[`members`,c,`binding`,`member`]);break;case`lifecycle-stage`:case`health-state`:case`active-fault-code`:l.data_type!==`String`&&t.addIssue({code:b.custom,path:[`members`,c,`data_type`],message:`Members using binding.type "${l.binding.type}" must use data_type "String". Fix: change data_type to "String".`});break;case`fault-active`:l.data_type!==`Boolean`&&t.addIssue({code:b.custom,path:[`members`,c,`data_type`],message:`Members using binding.type "fault-active" must use data_type "Boolean". Fix: change data_type to "Boolean".`});break;case`fault-count`:l.data_type!==`Int32`&&l.data_type!==`UInt16`&&l.data_type!==`UInt32`&&t.addIssue({code:b.custom,path:[`members`,c,`data_type`],message:`Members using binding.type "fault-count" must use an integer data_type (Int32, UInt16, or UInt32). Fix: change data_type to an integer type.`});break;default:l.binding}if(l.kind===`variable`&&l.observation_effects){G(l.data_type)||t.addIssue({code:b.custom,path:[`members`,c,`observation_effects`],message:`Observation effects on "${c}" require a numeric data_type (Double, Float, Int32, UInt16, or UInt32). Member has data_type "${l.data_type}", which cannot be degraded by noise, gaps, or drift. Fix: remove observation_effects, or change data_type to a numeric type.`}),l.access!==`read`&&t.addIssue({code:b.custom,path:[`members`,c,`observation_effects`],message:`Observation effects on "${c}" require access "read". Observation effects corrupt values — they must not be applied to command targets or setpoints. Fix: change access to "read" or remove observation_effects.`});for(let e=0;e<l.observation_effects.length;e++){let n=l.observation_effects[e];n&&(n.type===`white_noise`||n.type===`drift`||n.type===`outlier`||n.type===`noise_burst`)&&!(`scale`in n&&n.scale!==void 0)&&!l.eu_range&&t.addIssue({code:b.custom,path:[`members`,c,`observation_effects`,e],message:`Member "${c}" uses relative observation effect "${n.type}" but has no eu_range and no explicit scale. Fix: add eu_range: [min, max] to the member, or add scale: <number> to the effect.`})}for(let e of Ot(l.observation_effects,l.eu_range,c))t.addIssue({code:b.custom,path:[`members`,c,`observation_effects`,e.index],message:e.message})}}function c(n,i,a){if(!r.has(n)){t.addIssue({code:b.custom,path:[...i],message:`${a} has effect on "${n}", but "${n}" is not a defined member. Fix: Change "${n}" to a valid member name.`});return}let o=e.members[n];o&&o.kind!==`variable`&&t.addIssue({code:b.custom,path:[...i],message:`${a} has effect on "${n}", but "${n}" is a property (kind: "property"). Effects can only target variable members.`})}if(e.lifecycle){let t=[`lifecycle`,`stages`];for(let n of e.lifecycle.stages)for(let e of Object.keys(n.effects))c(e,t,`Lifecycle stage "${n.name}"`)}if(e.faults){let n=new Set;for(let r=0;r<e.faults.length;r++){let i=e.faults[r];if(!i)continue;n.has(i.name)&&t.addIssue({code:b.custom,path:[`faults`,r,`name`],message:`Fault names must be unique. Duplicate "${i.name}". Fix: Rename one fault so each fault has a unique name.`}),n.add(i.name);let a=[`faults`,r,`effects`];for(let e of Object.keys(i.effects))c(e,a,`Fault "${i.name}"`);for(let e of Object.keys(i.precursor?.effects??{}))c(e,[`faults`,r,`precursor`,`effects`],`Fault "${i.name}" precursor`)}}for(let r of n){let n=e.members[r];if(!n||n.kind!==`property`||typeof n.default!=`string`)continue;let i=be(n.default);i!==void 0&&!a.has(i)&&t.addIssue({code:b.custom,path:[`members`,r,`default`],message:`Property "${r}" default references parameter "${i}", but "${i}" is not defined. Fix: Define "${i}" under parameters, or use a literal value.`})}if(e.methods)for(let[n,r]of Object.entries(e.methods))Lt(n,r.input_arguments,t,[`methods`,n,`input_arguments`]),Lt(n,r.output_arguments,t,[`methods`,n,`output_arguments`]),Rt(n,r,e,t,[`methods`,n,`runtime`])})}function It(e,t,n,r,i){let a=n.members[t];a&&(G(a.data_type)||r.addIssue({code:b.custom,path:[...i],message:`Member "${e}" binding references "${t}", but "${t}" is not numeric. Fix: bind to a numeric member or change the source member data_type.`}))}function Lt(e,t,n,r){if(t)for(let[i,a]of Object.entries(t))a.unit!==void 0&&(a.data_type===`Boolean`||a.data_type===`String`)&&n.addIssue({code:b.custom,path:[...r,i,`unit`],message:`Method "${e}" argument "${i}" uses data_type "${a.data_type}" and must not declare an engineering unit. Fix: remove the unit or use a numeric data_type.`}),a.enum_values&&a.data_type!==`String`&&n.addIssue({code:b.custom,path:[...r,i,`enum_values`],message:`Method "${e}" argument "${i}" can only use enum_values with data_type "String". Fix: remove enum_values or change the data_type.`})}function Rt(e,t,n,r,i){let a=t.runtime;if(a)switch(a.type){case`clear-faults`:return;case`reset-lifecycle`:{if(!n.lifecycle){r.addIssue({code:b.custom,path:[...i],message:`Method "${e}" uses runtime "reset-lifecycle" but the model has no lifecycle. Fix: add a lifecycle block or remove the method.`});return}let t=n.lifecycle.stages.map(e=>e.name);a.stage!==void 0&&!t.includes(a.stage)&&r.addIssue({code:b.custom,path:[...i,`stage`],message:`Method "${e}" stage "${a.stage}" is not a lifecycle stage. Fix: use one of [${t.join(`, `)}].`});return}case`set-parameters`:for(let o=0;o<a.writes.length;o++){let s=a.writes[o];if(!s)continue;let c=[...i,`writes`,o],l=n.parameters?.[s.parameter];if(!l){r.addIssue({code:b.custom,path:[...c,`parameter`],message:`Method "${e}" runtime targets parameter "${s.parameter}", but "${s.parameter}" is not defined. Fix: target a declared parameter.`});continue}if(l.type!==`float`&&l.type!==`int`){r.addIssue({code:b.custom,path:[...c,`parameter`],message:`Method "${e}" runtime targets parameter "${s.parameter}" of type "${l.type}". Fix: use set-parameters only with float or int parameters.`});continue}if(`argument`in s){let n=t.input_arguments?.[s.argument];if(!n){r.addIssue({code:b.custom,path:[...c,`argument`],message:`Method "${e}" runtime references input argument "${s.argument}", but that argument is not defined. Fix: declare the input argument or use a literal value.`});continue}G(n.data_type)||r.addIssue({code:b.custom,path:[...c,`argument`],message:`Method "${e}" runtime argument "${s.argument}" must be numeric to write parameter "${s.parameter}". Fix: use Double, Float, Int32, UInt16, or UInt32.`}),l.type===`int`&&!xt(n.data_type)&&r.addIssue({code:b.custom,path:[...c,`argument`],message:`Method "${e}" runtime argument "${s.argument}" uses data_type "${n.data_type}" but parameter "${s.parameter}" is type "int". Fix: use Int32, UInt16, or UInt32 so runtime writes stay integer-safe.`});continue}l.type===`int`&&!Number.isSafeInteger(s.value)&&r.addIssue({code:b.custom,path:[...c,`value`],message:`Method "${e}" runtime literal for integer parameter "${s.parameter}" must be a safe integer. Fix: use a whole-number literal.`})}return;case`set-members`:for(let o=0;o<a.writes.length;o++){let s=a.writes[o];if(!s)continue;let c=[...i,`writes`,o],l=n.members[s.member];if(!l){r.addIssue({code:b.custom,path:[...c,`member`],message:`Method "${e}" runtime targets member "${s.member}", but "${s.member}" is not defined. Fix: target a declared member.`});continue}if(l.kind!==`variable`&&r.addIssue({code:b.custom,path:[...c,`member`],message:`Method "${e}" runtime targets "${s.member}", but "${s.member}" is a property. Fix: target a writable variable member.`}),l.access!==`readwrite`&&l.access!==`write`&&r.addIssue({code:b.custom,path:[...c,`member`],message:`Method "${e}" runtime targets "${s.member}", but "${s.member}" is not writable. Fix: set access to "readwrite" or "write".`}),l.kind===`variable`&&l.binding&&r.addIssue({code:b.custom,path:[...c,`member`],message:`Method "${e}" runtime targets "${s.member}", but bound members are computed at runtime. Fix: write to a command/setpoint member without a binding.`}),`argument`in s){let n=t.input_arguments?.[s.argument];if(!n){r.addIssue({code:b.custom,path:[...c,`argument`],message:`Method "${e}" runtime references input argument "${s.argument}", but that argument is not defined. Fix: declare the input argument or use a literal value.`});continue}if(K(Tt(n.data_type),l.data_type)||r.addIssue({code:b.custom,path:[...c,`argument`],message:`Method "${e}" runtime argument "${s.argument}" uses data_type "${n.data_type}" which does not match target member "${s.member}" data_type "${l.data_type}". Fix: align the argument and target member data types.`}),n.enum_values&&l.enum_values){let t=n.enum_values.filter(e=>!l.enum_values?.includes(e));t.length>0&&r.addIssue({code:b.custom,path:[...c,`argument`],message:`Method "${e}" runtime argument "${s.argument}" allows values [${t.join(`, `)}] that are not valid for target member "${s.member}". Fix: align enum_values between the argument and target member.`})}continue}K(s.value,l.data_type)||r.addIssue({code:b.custom,path:[...c,`value`],message:`Method "${e}" runtime literal for "${s.member}" does not match data_type "${l.data_type}". Fix: use a compatible literal value.`}),l.enum_values&&typeof s.value==`string`&&!l.enum_values.includes(s.value)&&r.addIssue({code:b.custom,path:[...c,`value`],message:`Method "${e}" runtime literal "${s.value}" is not allowed for member "${s.member}". Fix: use one of [${l.enum_values.join(`, `)}].`})}return;default:}}Ft();var zt=x([m().finite(),n(),a()]),Bt=n().regex(/^[a-f0-9]{64}$/),Vt=g({id:n().min(1),model:n().min(1),browsePath:p(n().min(1)).min(1),parameters:l(n(),zt),lifecycleStage:n().min(1),operatingHours:m().finite().nonnegative(),activeFaults:p(n().min(1)),templateId:n().min(1).optional(),protocolScope:p(c).min(1).optional(),inputBindings:l(n(),i).optional(),observationState:l(n(),l(n(),re())).optional().default({}),lifecycleState:g({stageStartHours:m().finite().nonnegative().optional(),lastMaintenanceHours:m().finite().nonnegative().optional()}).optional(),faultState:l(n(),g({remaining:m().finite(),pendingSample:a(),elapsed:m().finite(),recovering:a(),recoveryElapsed:m().finite(),recoverySeconds:m().finite(),precursor:a().optional(),precursorElapsed:m().finite().optional()})).optional().default({})}),Ht=g({templateId:n().min(1),templateName:n().min(1),templatePath:n().min(1),entryHash:Bt,idFloors:l(n(),m().int().nonnegative()).default({})}),Ut=g({name:n().min(1),enabled:a(),config:l(n(),re()),secretPaths:p(p(n())).optional()});g({version:h(3),savedAt:n().min(1),factoryName:st,models:p(n().min(1)),assets:p(Vt),templates:p(Ht),adapters:p(Ut).default([]).refine(e=>new Set(e.map(e=>e.name)).size===e.length,{message:`Duplicate adapter names. Keep one entry per adapter name in 'adapters', or delete the state file to start fresh.`})});var Wt=`group relative border border-solid border-border transition-colors hover:border-muted-foreground/25`,Gt=`group relative border border-solid border-border`,Kt=`blueprint-card ${Wt} overflow-hidden rounded-[var(--miravo-radius-stadium-sm)]`,qt=`${Gt} w-full min-w-0 overflow-hidden rounded-[var(--miravo-radius-stadium-sm)] bg-transparent`,Jt=`${Gt} w-full min-w-0 overflow-hidden rounded-[var(--miravo-radius-stadium-sm)] bg-transparent`,Yt=`blueprint-card catalog-card-frame group relative border border-solid overflow-hidden rounded-[var(--miravo-radius-stadium-sm)]`,Xt=Yt,Zt=`border-border bg-muted/40 text-primary shadow-none hover:border-muted-foreground/30 hover:bg-muted/60 hover:text-primary focus-visible:border-ring border-border bg-muted/30 hover:border-muted-foreground/35 hover:bg-muted/45 [&_svg]:text-primary`,Q=e(t(),1),Qt=new Set([`spawn`,`removeAsset`,`loadTemplate`,`unloadTemplate`,`resetFactory`,`enableAdapter`,`disableAdapter`]);function $t(e,t){let n=e.type===`spawn`&&Array.isArray(t.data)?ae(t.data):void 0;S.success(t.message,n?{description:`Created ${n}`}:void 0)}function $(e){if(e instanceof le){S.error(`Command not sent`,{description:e.detail});return}if(e instanceof ne){S.error(e.result.message,{description:e.result.error});return}if(r.is(e)){S.error(e.message,{description:e.hint});return}if(e instanceof TypeError){if(typeof navigator<`u`&&navigator.onLine===!1){S.error(`Command not sent`,{description:`This browser is offline — reconnect to the network and try again.`});return}let{connectionState:e}=v.getState(),t=ce(e);if(t){S.error(`Command not sent`,{description:t});return}S.error(`Command failed`,{description:`Could not reach the Miravo server — it may have stopped or restarted.`});return}S.error(`Command failed`,{description:e instanceof Error?e.message:`Unknown error.`})}async function en(){try{let e=await ee();ie.setQueryData([`bootstrap`],e),e.authenticated?v.getState().replaceRuntime(e.runtime,{allowSameRevision:!0,allowRevisionRewind:!0}):v.getState().markUnauthenticated()}catch{}finally{ie.invalidateQueries({queryKey:[`bootstrap`]})}}async function tn(e){if(e.type===`setSpeed`){v.setState({speedMultiplier:e.multiplier});return}Qt.has(e.type)&&await en()}function nn(){let[e,t]=(0,Q.useState)(!1);return{mutate:(0,Q.useCallback)(e=>{try{se(v.getState().connectionState)}catch(e){$(e);return}t(!0),te(e).then(t=>($t(e,t),tn(e))).catch($).finally(()=>{t(!1)})},[]),mutateAsync:(0,Q.useCallback)(async e=>{try{se(v.getState().connectionState)}catch(e){throw $(e),e}t(!0);try{let t=await te(e);return $t(e,t),await tn(e),t}catch(e){throw $(e),e}finally{t(!1)}},[]),isPending:e}}export{Kt as a,lt as c,Zt as i,ue as l,Jt as n,Yt as o,qt as r,Xt as s,nn as t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/factory-BCPLmUx4.js","assets/factory-CBXx3oBo.js","assets/rolldown-runtime-COnpUsM8.js","assets/chunk-OE4NN4TA-DBWZidbW.js","assets/vendor-charts-95ykyDlI.js","assets/api-tM5PSXjr.js","assets/vendor-ui-D8j69UH4.js","assets/useQuery-smgfSdOx.js","assets/format-Bx7DF-TB.js","assets/utils-XFKvwlFT.js","assets/AnimatePresence-BSSlw02V.js","assets/proxy-CWZabK8f.js","assets/activity-Cy_niK56.js","assets/server-BVem_egD.js","assets/dropdown-menu-B_MMNbTy.js","assets/catalog-template-icons-DGyxSm-F.js","assets/chevron-down-x70Pto6j.js","assets/chevron-right-CrNKVFcI.js","assets/copy-button-CSUP1VjU.js","assets/check-B-yvIfMj.js","assets/dialog-B5PqrKVw.js","assets/tooltip-B3vOB1Vu.js","assets/registry-Kj-oMlVm.js","assets/use-engine-command-mutation-oLQW2r4F.js","assets/runtime-link-BRnaEnOm.js","assets/query-fetch-error-CWLZA2L5.js","assets/export-tab-BS4GlLBV.js","assets/download-i8CTJ7oi.js","assets/source-host-miravo-B8eM2IHw.js","assets/loader-circle-DjgHgHHl.js","assets/label-2sIXTEUK.js","assets/shallow-Cin0mLuv.js","assets/badge-Bk1DaL6C.js","assets/tabs-Ch_VG8_S.js","assets/status-kit-BLG7OeIE.js","assets/arrow-up-right-CwPw_2U1.js","assets/console-panel-Cg2sBJcN.js","assets/asset-detail-actions-Dv9g2Z9t.js","assets/circle-x-6JtFdy1_.js","assets/trash-2-BH9HDsZv.js","assets/triangle-alert-DoAwrRgk.js","assets/validation-BOdAwXQ_.js","assets/get-error-message-CEvauOXv.js","assets/integration-api-iM6SWQ6d.js","assets/protocol-card-Cp8O59cX.js","assets/radio-BxpVYiyS.js","assets/transition-nav-link-CBN2nulP.js","assets/plus-Cl4Ay5Ry.js","assets/rocket-KZ5oHK1G.js","assets/dist-xY0pK9Wy.js","assets/combobox-B8h0-NHs.js","assets/checkbox-DEAkDfFr.js","assets/select-BWlrSYlA.js","assets/select-display-items-DN2G8DNG.js","assets/integration-targets-Byvdd3Or.js","assets/transition-types-BKZuWApE.js","assets/catalog-Ccubt-hm.js","assets/catalog-BMLSbdye.js","assets/catalog-source-B4L5N-a1.js","assets/models-CsdLFBfC.js","assets/models-Dy_JFNac.js","assets/minus-CaT9UaQx.js","assets/events-iYGC0JpW.js","assets/events-Dz_zsLGE.js","assets/auth-screen-backdrop-CEykEbfF.js","assets/events-format-C5HTkIsC.js","assets/control-DXA-_1Gu.js","assets/control-B-TcWj5c.js","assets/sliders-horizontal-BNKmYQgd.js","assets/pause-CqW7v5Dc.js","assets/tags-BRYVC9vb.js","assets/tags-bloWH2Qa.js","assets/vendor-table-BQAIXM34.js","assets/integrations-Bw0jY-xH.js","assets/integrations-NcPRP3je.js","assets/asset-detail-C4zF_8rm.js","assets/login-snbitj6V.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{c as t}from"./vendor-charts-95ykyDlI.js";import{c as n,d as r}from"./chunk-OE4NN4TA-DBWZidbW.js";var i=e(t(),1),a=[{test:e=>e===`/`,load:()=>r(()=>import(`./factory-BCPLmUx4.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55]))},{test:e=>e===`/catalog`,load:()=>r(()=>import(`./catalog-Ccubt-hm.js`),__vite__mapDeps([56,57,2,3,4,5,6,7,8,9,10,11,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,48,58]))},{test:e=>e===`/models`,load:()=>r(()=>import(`./models-CsdLFBfC.js`),__vite__mapDeps([59,60,2,5,4,6,7,8,9,10,11,12,16,28,61,23,20,24,47,25,48,58,26,27,29,30,40,32,51,19,33,42]))},{test:e=>e===`/events`,load:()=>r(()=>import(`./events-iYGC0JpW.js`),__vite__mapDeps([62,63,2,3,4,5,6,7,8,9,10,11,25,64,32,50,19,16,52,53,42,24,55,65]))},{test:e=>e===`/control`,load:()=>r(()=>import(`./control-DXA-_1Gu.js`),__vite__mapDeps([66,67,2,5,4,6,8,9,10,11,13,38,44,12,16,18,19,20,21,29,23,24,45,40,46,3,32,30,68,69,48,49,31,36,50,52,41,33]))},{test:e=>e===`/tags`,load:()=>r(()=>import(`./tags-BRYVC9vb.js`),__vite__mapDeps([70,71,2,3,4,5,6,7,72,8,9,14,16,17,18,19,20,21,27,25,49,64,50,30,52,42,54]))},{test:e=>e===`/integrations`,load:()=>r(()=>import(`./integrations-Bw0jY-xH.js`),__vite__mapDeps([73,74,2,3,4,5,6,7,8,9,10,11,12,13,16,38,43,18,19,20,21,28,29,47,25,39,40,49,32,30,52,33,42,54]))},{test:e=>e.startsWith(`/asset/`),load:()=>r(()=>import(`./asset-detail-C4zF_8rm.js`),__vite__mapDeps([75,2,3,4,5,6,7,8,9,11,12,18,19,20,21,68,23,24,45,25,40,49,64,32,33,37,38,29,39,41,42,55]))},{test:e=>e===`/login`,load:()=>r(()=>import(`./login-snbitj6V.js`),__vite__mapDeps([76,2,5,4,6,46,3,42]))}],o=new Set;function s(e){if(!e.startsWith(`/`))return null;let t=e.indexOf(`?`),n=e.indexOf(`#`),r=t===-1?n===-1?e.length:n:n===-1?t:Math.min(t,n);return e.slice(0,r)}function c(e){let t=s(e);if(!t||o.has(t))return;let n=a.find(e=>e.test(t));n&&(o.add(t),n.load().catch(()=>{o.delete(t)}))}function l(){let e=n();return(0,i.useCallback)((t,n)=>{n?.preload!==!1&&c(t),(0,i.startTransition)(()=>{n?.transitionType&&(0,i.addTransitionType)(n.transitionType),e(t,{replace:n?.replace})})},[e])}export{c as n,l as t};
|
|
@@ -0,0 +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{Ct as r,Dt as i,Et as a,St as o,Tt as s,_t as c,bt as l,dt as u,ft as d,ht as f,mt as p,pt as m,vt as h,wt as g,xt as _}from"./api-tM5PSXjr.js";var v=class extends i{constructor(e,t){super(),this.options=t,this.#e=e,this.#s=null,this.#o=m(),this.bindMethods(),this.setOptions(t)}#e;#t=void 0;#n=void 0;#r=void 0;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),b(this.#t,this.options)?this.#h():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return x(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return x(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e){let t=this.options,n=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!=`boolean`&&typeof this.options.enabled!=`function`&&typeof l(this.options.enabled,this.#t)!=`boolean`)throw Error(`Expected enabled to be a boolean or a callback that returns a boolean`);this.#S(),this.#t.setOptions(this.options),t._defaulted&&!o(this.options,t)&&this.#e.getQueryCache().notify({type:`observerOptionsUpdated`,query:this.#t,observer:this});let r=this.hasListeners();r&&S(this.#t,n,this.options,t)&&this.#h(),this.updateResult(),r&&(this.#t!==n||l(this.options.enabled,this.#t)!==l(t.enabled,this.#t)||_(this.options.staleTime,this.#t)!==_(t.staleTime,this.#t))&&this.#g();let i=this.#_();r&&(this.#t!==n||l(this.options.enabled,this.#t)!==l(t.enabled,this.#t)||i!==this.#p)&&this.#v(i)}getOptimisticResult(e){let t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return w(this,n)&&(this.#r=n,this.#a=this.options,this.#i=this.#t.state),n}getCurrentResult(){return this.#r}trackResult(e,t){return new Proxy(e,{get:(e,n)=>(this.trackProp(n),t?.(n),n===`promise`&&(this.trackProp(`data`),!this.options.experimental_prefetchInRender&&this.#o.status===`pending`&&this.#o.reject(Error(`experimental_prefetchInRender feature flag is not enabled`))),Reflect.get(e,n))})}trackProp(e){this.#m.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t);return n.fetch().then(()=>this.createResult(n,t))}fetch(e){return this.#h({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#r))}#h(e){this.#S();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(c)),t}#g(){this.#b();let e=_(this.options.staleTime,this.#t);if(p.isServer()||this.#r.isStale||!f(e))return;let t=g(this.#r.dataUpdatedAt,e)+1;this.#d=s.setTimeout(()=>{this.#r.isStale||this.updateResult()},t)}#_(){return(typeof this.options.refetchInterval==`function`?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#v(e){this.#x(),this.#p=e,!(p.isServer()||l(this.options.enabled,this.#t)===!1||!f(this.#p)||this.#p===0)&&(this.#f=s.setInterval(()=>{(this.options.refetchIntervalInBackground||a.isFocused())&&this.#h()},this.#p))}#y(){this.#g(),this.#v(this.#_())}#b(){this.#d!==void 0&&(s.clearTimeout(this.#d),this.#d=void 0)}#x(){this.#f!==void 0&&(s.clearInterval(this.#f),this.#f=void 0)}createResult(e,t){let n=this.#t,r=this.options,i=this.#r,a=this.#i,o=this.#a,s=e===n?this.#n:e.state,{state:c}=e,d={...c},f=!1,p;if(t._optimisticResults){let i=this.hasListeners(),a=!i&&b(e,t),o=i&&S(e,n,t,r);(a||o)&&(d={...d,...u(c.data,e.options)}),t._optimisticResults===`isRestoring`&&(d.fetchStatus=`idle`)}let{error:g,errorUpdatedAt:_,status:v}=d;p=d.data;let y=!1;if(t.placeholderData!==void 0&&p===void 0&&v===`pending`){let e;i?.isPlaceholderData&&t.placeholderData===o?.placeholderData?(e=i.data,y=!0):e=typeof t.placeholderData==`function`?t.placeholderData(this.#u?.state.data,this.#u):t.placeholderData,e!==void 0&&(v=`success`,p=h(i?.data,e,t),f=!0)}if(t.select&&p!==void 0&&!y)if(i&&p===a?.data&&t.select===this.#c)p=this.#l;else try{this.#c=t.select,p=t.select(p),p=h(i?.data,p,t),this.#l=p,this.#s=null}catch(e){this.#s=e}this.#s&&(g=this.#s,p=this.#l,_=Date.now(),v=`error`);let x=d.fetchStatus===`fetching`,w=v===`pending`,T=v===`error`,E=w&&x,D=p!==void 0,O={status:v,fetchStatus:d.fetchStatus,isPending:w,isSuccess:v===`success`,isError:T,isInitialLoading:E,isLoading:E,data:p,dataUpdatedAt:d.dataUpdatedAt,error:g,errorUpdatedAt:_,failureCount:d.fetchFailureCount,failureReason:d.fetchFailureReason,errorUpdateCount:d.errorUpdateCount,isFetched:e.isFetched(),isFetchedAfterMount:d.dataUpdateCount>s.dataUpdateCount||d.errorUpdateCount>s.errorUpdateCount,isFetching:x,isRefetching:x&&!w,isLoadingError:T&&!D,isPaused:d.fetchStatus===`paused`,isPlaceholderData:f,isRefetchError:T&&D,isStale:C(e,t),refetch:this.refetch,promise:this.#o,isEnabled:l(t.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){let t=O.data!==void 0,r=O.status===`error`&&!t,i=e=>{r?e.reject(O.error):t&&e.resolve(O.data)},a=()=>{i(this.#o=O.promise=m())},o=this.#o;switch(o.status){case`pending`:e.queryHash===n.queryHash&&i(o);break;case`fulfilled`:(r||O.data!==o.value)&&a();break;case`rejected`:(!r||O.error!==o.reason)&&a();break}}return O}updateResult(){let e=this.#r,t=this.createResult(this.#t,this.options);this.#i=this.#t.state,this.#a=this.options,this.#i.data!==void 0&&(this.#u=this.#t),!o(t,e)&&(this.#r=t,this.#C({listeners:(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,n=typeof t==`function`?t():t;if(n===`all`||!n&&!this.#m.size)return!0;let r=new Set(n??this.#m);return this.options.throwOnError&&r.add(`error`),Object.keys(this.#r).some(t=>{let n=t;return this.#r[n]!==e[n]&&r.has(n)})})()}))}#S(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;let t=this.#t;this.#t=e,this.#n=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}#C(e){d.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#r)}),this.#e.getQueryCache().notify({query:this.#t,type:`observerResultsUpdated`})})}};function y(e,t){return l(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status===`error`&&t.retryOnMount===!1)}function b(e,t){return y(e,t)||e.state.data!==void 0&&x(e,t,t.refetchOnMount)}function x(e,t,n){if(l(t.enabled,e)!==!1&&_(t.staleTime,e)!==`static`){let r=typeof n==`function`?n(e):n;return r===`always`||r!==!1&&C(e,t)}return!1}function S(e,t,n,r){return(e!==t||l(r.enabled,e)===!1)&&(!n.suspense||e.state.status!==`error`)&&C(e,n)}function C(e,t){return l(t.enabled,e)!==!1&&e.isStaleByTime(_(t.staleTime,e))}function w(e,t){return!o(e.getCurrentResult(),t)}var T=e(t(),1),E=n(),D=T.createContext(void 0),O=e=>{let t=T.useContext(D);if(e)return e;if(!t)throw Error(`No QueryClient set, use QueryClientProvider to set one`);return t},k=({client:e,children:t})=>(T.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,E.jsx)(D.Provider,{value:e,children:t})),A=T.createContext(!1),j=()=>T.useContext(A);A.Provider;function M(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var N=T.createContext(M()),P=()=>T.useContext(N),F=(e,t,n)=>{let i=n?.state.error&&typeof e.throwOnError==`function`?r(e.throwOnError,[n.state.error,n]):e.throwOnError;(e.suspense||e.experimental_prefetchInRender||i)&&(t.isReset()||(e.retryOnMount=!1))},I=e=>{T.useEffect(()=>{e.clearReset()},[e])},L=({result:e,errorResetBoundary:t,throwOnError:n,query:i,suspense:a})=>e.isError&&!t.isReset()&&!e.isFetching&&i&&(a&&e.data===void 0||r(n,[e.error,i])),R=e=>{if(e.suspense){let t=1e3,n=e=>e===`static`?e:Math.max(e??t,t),r=e.staleTime;e.staleTime=typeof r==`function`?(...e)=>n(r(...e)):n(r),typeof e.gcTime==`number`&&(e.gcTime=Math.max(e.gcTime,t))}},z=(e,t)=>e.isLoading&&e.isFetching&&!t,B=(e,t)=>e?.suspense&&t.isPending,V=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function H(e,t,n){let r=j(),i=P(),a=O(n),o=a.defaultQueryOptions(e);a.getDefaultOptions().queries?._experimental_beforeQuery?.(o);let s=a.getQueryCache().get(o.queryHash);o._optimisticResults=r?`isRestoring`:`optimistic`,R(o),F(o,i,s),I(i);let l=!a.getQueryCache().get(o.queryHash),[u]=T.useState(()=>new t(a,o)),f=u.getOptimisticResult(o),m=!r&&e.subscribed!==!1;if(T.useSyncExternalStore(T.useCallback(e=>{let t=m?u.subscribe(d.batchCalls(e)):c;return u.updateResult(),t},[u,m]),()=>u.getCurrentResult(),()=>u.getCurrentResult()),T.useEffect(()=>{u.setOptions(o)},[o,u]),B(o,f))throw V(o,u,i);if(L({result:f,errorResetBoundary:i,throwOnError:o.throwOnError,query:s,suspense:o.suspense}))throw f.error;return a.getDefaultOptions().queries?._experimental_afterQuery?.(o,f),o.experimental_prefetchInRender&&!p.isServer()&&z(f,r)&&(l?V(o,u,i):s?.promise)?.catch(c).finally(()=>{u.updateResult()}),o.notifyOnChangeProps?f:u.trackResult(f)}function U(e,t){return H(e,v,t)}export{B as a,I as c,k as d,O as f,V as i,P as l,H as n,F as o,v as p,R as r,L as s,U as t,j as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ot as e,tt as t}from"./vendor-ui-D8j69UH4.js";import{$ as n,G as r,X as i,Z as a,j as o,k as s}from"./api-tM5PSXjr.js";import{c}from"./dialog-B5PqrKVw.js";import{t as l}from"./utils-XFKvwlFT.js";import"./use-engine-command-mutation-oLQW2r4F.js";var u=e();function d({className:e,orientation:n=`horizontal`,...r}){return(0,u.jsx)(t,{"data-slot":`separator`,orientation:n,className:l(`shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch`,e),...r})}function f(){return n().trim().optional().refine(e=>e===void 0||e===``||e.length<=120,{message:`Use at most 120 characters.`}).refine(e=>e===void 0||e===``||o(e)===null,{message:`Use letters, numbers, underscores, and hyphens only.`})}var p=a({multiplier:i({message:`Speed multiplier must be a number.`}).positive(`Speed multiplier must be positive.`).finite(`Speed multiplier must be finite.`).max(1e3,`Speed multiplier cannot exceed 1000.`)});a({model:n().min(1,`Model is required.`),count:i({message:`Count must be a number.`}).int(`Count must be a whole number.`).positive(`Count must be at least 1.`).max(100,`Count cannot exceed 100.`),assetName:f(),assetPrefix:f(),protocolScope:s.optional(),dryRun:r().optional()});var m=a({assetId:n().min(1,`Asset is required.`),fault:n().min(1,`Fault name is required.`)});function h(e,t,n){if(!t.trim())return c.error(`Argument "${e}" is required.`),null;switch(n){case`Double`:case`Float`:{let n=Number(t);return Number.isFinite(n)?{value:n}:(c.error(`"${e}" must be a valid number.`),null)}case`Int32`:case`UInt16`:case`UInt32`:{let r=Number(t);return!Number.isFinite(r)||!Number.isSafeInteger(r)?(c.error(`"${e}" must be a valid integer.`),null):(n===`UInt16`||n===`UInt32`)&&r<0?(c.error(`"${e}" must be non-negative.`),null):{value:r}}case`Boolean`:return t!==`true`&&t!==`false`?(c.error(`"${e}" must be "true" or "false".`),null):{value:t===`true`};case`String`:return{value:t};default:return{value:t}}}function g(e,t){let n=e.safeParse(t);return n.success?n.data:(c.error(n.error.issues[0]?.message??`Validation error.`),null)}export{d as a,h as i,p as n,g as r,m as t};
|
|
@@ -0,0 +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,t as p,y as m}from"./dom-CQuChC3G.js";import{n as h,t as g}from"./by-path-DmADo_qX.js";import{A as _,C as v,D as y,E as ee,F as te,H as ne,L as re,O as b,P as ie,T as ae,V as oe,X as se,_ as ce,a as le,b as ue,c as de,g as x,h as fe,i as pe,j as me,k as he,n as ge,o as _e,p as ve,r as ye,s as be,t as xe,w as S,x as Se,y as Ce}from"./status-DNfdEhTs.js";import{n as we,t as Te}from"./compressor-BkWNdwvy.js";import{i as Ee,n as De,r as Oe,t as ke}from"./tank-xgQfMS2d.js";var Ae=[[`rawPumpA`,`centrifugal-pump`,`intake`,`raw-inlet`,0],[`rawPumpB`,`centrifugal-pump`,`intake`,`raw-inlet`,1],[`rawTank`,`storage-tank`,`intake`,`raw-inlet`,0],[`blower`,`air-compressor`,`treatment`,`aeration`,0],[`dosePump`,`centrifugal-pump`,`treatment`,`chemical-dosing`,0],[`mixer`,`ac-induction-motor`,`treatment`,`mixing`,0],[`sludgePump`,`centrifugal-pump`,`treatment`,`clarifier`,0],[`clarifier`,`storage-tank`,`treatment`,`clarifier`,0],[`clearWell`,`storage-tank`,`distribution`,`clear-well`,0],[`distPumpA`,`centrifugal-pump`,`distribution`,`distribution-pumps`,0],[`distPumpB`,`centrifugal-pump`,`distribution`,`distribution-pumps`,1]],je=e=>g(Ae,e);function Me(e){let t=(e,t,n)=>({key:e,assetId:e,name:t,kind:`utility`,area:n});return[t(e.rawPumpA,`Raw pump A (duty)`,`Intake`),t(e.rawPumpB,`Raw pump B (standby)`,`Intake`),t(e.rawTank,`Raw water tank`,`Intake`),t(e.blower,`Aeration blower`,`Treatment`),t(e.dosePump,`Coagulant dosing pump`,`Treatment`),t(e.mixer,`Flash mixer`,`Treatment`),t(e.clarifier,`Clarifier`,`Treatment`),t(e.sludgePump,`Sludge pump`,`Treatment`),t(e.clearWell,`Clear well`,`Distribution`),t(e.distPumpA,`Distribution pump A (duty)`,`Distribution`),t(e.distPumpB,`Distribution pump B (standby)`,`Distribution`)]}var C=6,Ne=.9;function Pe(e,t){let{svg:n,P:a}=e,o=p(n,`[data-bubbles]`),[s=0,c=0,...l]=f(o?.dataset.bubbles),u=Array.from({length:Math.floor(l.length/2)},(e,t)=>({x:l[t*2]??0,y:l[t*2+1]??0,phase:t*.618%1})),d=o?ae(o,u.length*C,`ellipse`,`sf-bubble`):[];return{draw(n){let o=Math.ceil(u.length*x(t())),l=e.reducedMotion();for(let[e,t]of d.entries()){let d=u[Math.floor(e/C)];if(!d||l||Math.floor(e/C)>=o){i(t.el,`0`);continue}let f=(n*.4+d.phase+e%C/C)%1,p=.5+1.8*f,m=d.x+p*Math.sin(n*2.1+e*1.9),h=d.y+p*Math.cos(n*1.7+e*2.3);if(f<Ne){let[e,n]=r([m,h,s+f/Ne*(c-s)],a),o=.28+.4*f;Fe(t.el,e,n,o,o),i(t.el,(Math.min(1,f*10)*.9).toFixed(2))}else{let e=(f-Ne)/(1-Ne),[n,o]=r([m,h,c],a);Fe(t.el,n,o,.9+2.6*e,(.9+2.6*e)*.5),i(t.el,((1-e)*.7).toFixed(2))}}}}}function Fe(e,t,n,r,i){e.setAttribute(`cx`,t.toFixed(1)),e.setAttribute(`cy`,n.toFixed(1)),e.setAttribute(`rx`,r.toFixed(2)),e.setAttribute(`ry`,i.toFixed(2))}function Ie(e,t){let{svg:n,P:i,feed:a}=e,s=(e,t)=>a.num(e,t),c=e=>a.param(e,`rated_rpm`,1500),l=d(n,`[data-spin="motor"]`).map(e=>{let t=be(e),[r=0,i=0]=f(e.dataset.span),a=e.closest(`[data-asset]`),o=v(n,t),s=(e=>a?.querySelector(e)??null)(`[data-swirl]`);return{el:e,id:t,at:de(e.dataset.shaft),r:Number(e.dataset.radius)||0,s0:r,s1:i,bearing:de(e.dataset.bearing),swirl:s,swirlAt:f(s?.dataset.swirl),rpm:0,spin:0,heat:Se(o),smoke:Ce(o,`smoke`)}}),u=new Map(l.map(e=>[e.id,e]));return{draw(n,u,d){let f=e.reducedMotion();for(let e of l){if(e.rpm=ce(e.rpm,s(e.id,`speed_feedback`),n,.8,f),f||(e.spin+=e.rpm/c(e.id)*1.6*fe*n),o(e.el,`d`,ve(i,`z`,e.at,e.r,e.s0,e.s1,e.spin,8)),e.swirl){let[t=0,n=0,a=0,s=0]=e.swirlAt,l=x(e.rpm/c(e.id)),u=``;for(let o=0;o<3;o++){let c=s*(.38+o*.24),l=e.spin*.35+o*fe/3,d=Array.from({length:9},(e,o)=>{let s=l+o/8*1.5;return r([t+Math.cos(s)*c,n+Math.sin(s)*c,a],i)});u+=`M${d.map(([e,t])=>`${e.toFixed(1)} ${t.toFixed(1)}`).join(`L`)}`}o(e.swirl,`d`,e.rpm>20?u:``),e.swirl.style.opacity=(.25+l*.55).toFixed(2)}if(!d)continue;let l=S(a,e.id,`bearing_defect_inner_race`,`winding_insulation`);e.heat.draw((l||S(a,e.id,`winding_burnout`))&&!f,u,i,e.bearing),e.smoke.draw(S(a,e.id,`winding_burnout`)&&!f,u,i,e.bearing,[.2,.5]),t(e.id,f?0:S(a,e.id,`rotor_imbalance`)?.5:S(a,e.id,`bearing_defect_inner_race`)?.35:0,u)}},bar(e){return u.get(e)?x(s(e,`speed_feedback`)/(c(e)*1.3)):void 0}}}var w=e=>e>.002?6+26*x(e*3):0,Le=e=>{let{svg:t,feed:n,ids:r}=e,i=ue(t),a=ye(e,i),o=Te(e,i),s=[a,o,Ie(e,i),ke(e)],c=pe(e,e=>ge(n,e,`availability`)),l=_e(e,{needle:e=>o.needle(e)??0,bar:e=>s.reduce((t,n)=>t??n.bar(e),void 0)??0,alertsHigh:()=>!0,ready:()=>!0}),u=Pe(e,()=>o.deliveredPu(r.blower)),d=(...e)=>e.reduce((e,t)=>e+n.param(t,`rated_flow`,0),0),f=()=>d(r.rawPumpA,r.rawPumpB),p=()=>d(r.distPumpA,r.distPumpB),m=(e,t)=>t>0?e/t:0,h=(e,t)=>n.num(e,t),g=(e,t)=>h(e,t)*3.6,_=le(e,({id:e})=>{switch(e){case`suction-a`:case`raw-a`:return w(a.flowPu(r.rawPumpA));case`suction-b`:case`raw-b`:return w(a.flowPu(r.rawPumpB));case`raw-in`:return w(m(h(r.rawPumpA,`flow_rate`)+h(r.rawPumpB,`flow_rate`),f()));case`to-aeration`:case`to-mix`:return w(m(g(r.rawTank,`outflow_rate`),f()));case`to-clarifier`:return w(m(g(r.clarifier,`inflow_rate`),f()));case`air`:return w(o.deliveredPu(r.blower));case`tote`:case`dosing`:return w(a.flowPu(r.dosePump));case`sludge-draw`:case`sludge`:return w(a.flowPu(r.sludgePump));case`to-well`:return w(m(g(r.clearWell,`inflow_rate`),p()));case`well-out`:case`to-outfall`:return w(m(h(r.distPumpA,`flow_rate`)+h(r.distPumpB,`flow_rate`),p()));case`well-out-a`:case`dist-a`:return w(a.flowPu(r.distPumpA));case`well-out-b`:case`dist-b`:return w(a.flowPu(r.distPumpB));default:return 0}});return{data(e){c.draw(e)},draw({sdt:e,t,introDone:n}){_.draw(e),l.draw(e,t);for(let r of s)r.draw(e,t,n);u.draw(t)},resync(){},status:e=>xe(n,e,`availability`)}},Re=1e3,ze={x:-430,y:-215,w:235,d:270,r:8},Be={x:-155,y:-215,w:265,d:205,r:8},T={x:-135,y:95,w:250,d:180,r:8},Ve={x:-500,y:95,w:335,d:180,r:8},He={x:-520,y:-235,w:650,d:530,r:16},E=a([...u(He,-21,-14),...u(ze,-14,92),...u(Be,-14,80),...u(T,-14,92),...u(Ve,-14,92)],Re,640,{pad:22,azimuth:60}),D={raw:[-322,-150],clarifier:[55,165],clearWell:[-207,195]},O=D.clarifier[0],Ue=42.5,We=D.clarifier[1]-Math.sqrt((Ue+5)**2-(O-D.clarifier[0])**2),Ge=22,Ke=42,qe=ie[2],k=5.6,Je=.68,Ye={r:52,h:84,nozzles:[{angle:0,z:70,r:3.2,role:`inlet`},{angle:0,z:18,r:3.2,role:`outlet`}]},A={r:Ue,h:44,open:!0,spout:[O-D.clarifier[0],We+Ge-D.clarifier[1],50],nozzles:[{angle:180,z:6,r:3.2,role:`outlet`},{angle:135,z:22*Je,r:2.2}]},Xe={r:Ke,h:40,nozzles:[{angle:0,z:6,r:3.2,role:`inlet`},{angle:180,z:qe,r:3.4,role:`outlet`}]},Ze=-180,Qe=-140,j={key:`aeration`,plan:{x:-145,y:-205,w:130,d:100,r:3},h:30,wall:5,waterZ:24,diffusers:!0,ports:[[-15,Ze,18,1,3.2]]},M={key:`flash`,plan:{x:-5,y:-195,w:70,d:70,r:3},h:30,wall:5,waterZ:24,baffles:2,ports:[[65,Qe,18,1,3.2]]},$e=([e,t,n])=>[e+1.6,t,n],et={half:30,rimZ:30,waterZ:24},N={x:-413,y:10,w:218,d:30,r:2},P={x:-102,y:230,w:26,d:26,r:2},F={x:64,y:-72,w:22,d:22,r:1},I={x:-494,y:126,w:26,d:28,r:2},tt=10.8,L=[94,-130,0],nt=[-68,-128,0],rt=[ie[0]-L[0],ie[1]-L[1],ie[2]],it=[_[0]-L[0],_[1]-L[1],_[2]],at=[-110,-113.4,24],R=(e,t,n)=>{let[r,i,a]=Oe(t,t.nozzles[n]);return[e[0]+r,e[1]+i,a]},z=R(D.clarifier,A,1),ot=8,st=(A.nozzles[1]?.angle??0)*(Math.PI/180),ct=[z[0]+Math.cos(st)*ot,z[1]+Math.sin(st)*ot,z[2]],B={rawA:{c:[-372,-35],scale:1},rawB:{c:[-262,-35],scale:1},dose:{c:[10,-60],scale:.55},sludge:{c:[ct[0]-(rt[0]+10)*Je,243],scale:Je},distA:{c:[-440,195],scale:1},distB:{c:[-325,195],scale:1}},V=[-80,-60,0],lt=[30,-160,0],ut=[...[{key:`rawTank`,at:D.raw},{key:`rawA`,at:B.rawA.c},{key:`rawB`,at:B.rawB.c},{key:`channel`,at:[N.x+N.w,N.y+N.d]},{key:`aeration`,at:[j.plan.x+j.plan.w/2,j.plan.y+j.plan.d/2]},{key:`flash`,at:[M.plan.x+M.plan.w/2,M.plan.y+M.plan.d/2]},{key:`mixer`,at:[lt[0],lt[1]+.5]},{key:`blower`,at:[V[0],V[1]]},{key:`dose`,at:B.dose.c},{key:`tote`,at:[F.x+F.w/2,F.y+F.d/2]},{key:`clarifier`,at:D.clarifier},{key:`sludge`,at:B.sludge.c},{key:`sump`,at:[P.x+P.w/2,P.y+P.d/2]},{key:`clearWell`,at:D.clearWell},{key:`distA`,at:B.distA.c},{key:`distB`,at:B.distB.c},{key:`outfall`,at:[I.x+I.w/2,I.y+I.d/2]}]].sort((e,t)=>m([e.at[0],e.at[1],0],E)-m([t.at[0],t.at[1],0],E)),dt=ut.map(e=>m([e.at[0],e.at[1],0],E)),ft=m([D.clarifier[0],D.clarifier[1],0],E),pt={layer:e=>{let t=m([e[0],e[1],Math.max(0,e[2]-12)],E);return e[2]>A.h+4&&Math.hypot(e[0]-D.clarifier[0],e[1]-D.clarifier[1])<Ue+6&&(t=Math.max(t,ft+.01)),dt.filter(e=>e<=t).length},glide:()=>!0},mt=(e,t)=>[e.c[0]+t[0]*e.scale,e.c[1]+t[1]*e.scale,t[2]*e.scale],H=e=>{let t=mt(e,rt);return[t,[t[0]+10*e.scale,t[1],t[2]]]},U=e=>{let t=mt(e,it);return[G(t,null,null,t[2]-3*e.scale),[t[0],t[1],t[2]+6*e.scale]]},W=e=>e+.9,G=(e,t,n,r)=>[t??e[0],n??e[1],r??e[2]],ht=R(D.raw,Ye,0),gt=R(D.raw,Ye,1),_t=R(D.clarifier,A,0),K=R(D.clearWell,Xe,0),vt=R(D.clearWell,Xe,1),yt=[D.clarifier[0]+(A.spout?.[0]??0),D.clarifier[1]+(A.spout?.[1]??0),A.spout?.[2]??0],{rawA:bt,rawB:xt,dose:St,sludge:Ct,distA:wt,distB:Tt}=B,[Et,Dt]=H(bt),[Ot,kt]=H(xt),[At,jt]=U(bt),[Mt,Nt]=U(xt),[Pt]=H(St),[Ft,It]=U(St),[Lt,Rt]=H(Ct),[zt,Bt]=U(Ct),[Vt,Ht]=H(wt),[Ut]=H(Tt),[Wt,Gt]=U(wt),[Kt,qt]=U(Tt),q=[V[0]+at[0]-nt[0],V[1]+at[1]-nt[1],at[2]],J=[q[0],-128],Y=[Ft[0],-136,28],Jt=[Pt[1],Pt[2]],Yt=F.x-3.6,Xt=5,Zt=-75,Qt=70,$t=[Nt[0],Zt,Qt],X=I.y+I.d/2,en=Gt[2],Z=3.2,tn=[Wt[0],X,en],nn=[I.x+I.w/2,X,en],rn=(e,t)=>[e,t,G(t,null,X,null)],Q=[(vt[0]+Ut[0])/2,vt[1],vt[2]],an=-143,on=It[2],sn=[P.x+P.w/2,Ct.c[1],8],cn={z:10,flanged:!0,routes:[{id:`suction-a`,medium:`water`,r:3.4,pts:[Et,Dt,G(Dt,null,null,Xt),G(Dt,null,N.y,Xt)]},{id:`suction-b`,medium:`water`,r:3.4,pts:[Ot,kt,G(kt,null,null,Xt),G(kt,null,N.y,Xt)]},{id:`raw-a`,medium:`water`,r:3.2,fromStub:!0,pts:[At,G(jt,null,null,Qt),G(jt,null,Zt,Qt),$t]},{id:`raw-b`,medium:`water`,r:3.2,fromStub:!0,pts:[Mt,G(Nt,null,null,Qt),$t]},{id:`raw-in`,medium:`water`,r:3.2,pts:[$t,G($t,null,ht[1],null),ht]},{id:`to-aeration`,medium:`water`,r:3.2,pts:[gt,[j.plan.x,gt[1],18]]},{id:`to-mix`,medium:`water`,r:3.2,pts:[$e(j.ports[0]),[M.plan.x,Ze,18]]},{id:`to-clarifier`,bare:[!1,!0],medium:`water`,r:3.2,pts:[$e(M.ports[0]),[100,Qe,18],[100,Qe,W(3.2)],[100,T.y+10,W(3.2)],[O,T.y+10,W(3.2)],[O,We,W(3.2)],[O,We,58],[O,yt[1],58],[O,yt[1],yt[2]+1.5]]},{id:`air`,bare:[!1,!0],medium:`air`,r:1.2,pts:[q,[q[0],q[1]+14,q[2]],[q[0],q[1]+14,66],[J[0],J[1],66],[J[0],J[1],j.waterZ]]},{id:`tote`,medium:`dosing`,r:1.9,pts:[Pt,G(Pt,Yt,null,null)]},{id:`dosing`,bend:9,bare:[!1,!0],medium:`dosing`,r:1.76,fromStub:!0,pts:[Ft,It,[Y[0],Y[1],on],[Y[0],Y[1],Y[2]+1]]},{id:`sludge-draw`,medium:`sludge`,r:2.2,pts:[z,ct,G(Rt,null,null,z[2]),Lt]},{id:`sludge`,bare:[!1,!0],medium:`sludge`,r:2.2,fromStub:!0,pts:[zt,Bt,G(sn,null,null,Bt[2]),sn]},{id:`to-well`,medium:`water`,r:3.2,pts:[_t,G(_t,an,null,null),G(K,an,null,null),K]},{id:`well-out`,medium:`water`,r:3.4,pts:[vt,Q]},{id:`well-out-a`,medium:`water`,r:3.4,pts:[Q,G(Q,null,null,k),G(Q,null,242,k),G(Q,Ht[0],242,k),G(Ht,null,null,k),Ht,Vt]},{id:`well-out-b`,medium:`water`,r:3.4,pts:[Q,Ut]},{id:`dist-a`,bend:9,medium:`water`,r:Z,fromStub:!0,pts:rn(Wt,Gt)},{id:`dist-b`,bend:9,medium:`water`,r:Z,fromStub:!0,pts:[...rn(Kt,qt),tn]},{id:`to-outfall`,medium:`water`,r:Z,pts:[tn,nn,G(nn,null,null,tt+1.6)]}],posts:[[-182,gt[1],3.2,18],[-168,gt[1],3.2,18],[100,10,3.2,W(3.2)],[100,45,3.2,W(3.2)],[100,80,3.2,W(3.2)],[an,(_t[1]+K[1])/2,3.2,K[2]],[-153,K[1],3.2,K[2]],[-350,X,Z,en,0],[-455,X,Z,en,0]]},ln=e(t(),1),un=7;function dn(e,t){let{k:n,G:r,P:i,S:a,L:o,slab:s,cyl:c,screws:l}=e,{plan:u,h:d,wall:f,waterZ:p,key:m}=t,h=[s(u,0,d,{tone:`mid`},6,1)],g=n.insetPlan(u,f),_=(e,t)=>n.planOutline(e,t,i,6);h.push(`<path class="tk-bore" d="${_(g,d)}"/>`),h.push(o(_(n.insetPlan(u,f/2),d),{tone:`faint`})),h.push(`<clipPath id="clip-${m}"><path d="${_(g,d)}"/></clipPath>`);let v=[],y=[];if(t.diffusers){let e=g.x+12,t=g.x+g.w-12;for(let n=1;n<=4;n++){let r=g.y+g.d*n/5;for(let n=0;n<5;n++)y.push(e+(t-e)*n/4,r)}}for(let e=1;e<=(t.baffles??0);e++){let r=g.x+g.w*e/((t.baffles??0)+1);v.push(o(n.segment([r,g.y+4,4],[r,g.y+g.d*.62,4],i)+n.segment([r,g.y+4,p-1],[r,g.y+g.d*.62,p-1],i),{tone:`faint`}))}v.length&&h.push(`<g clip-path="url(#clip-${m})">${v.join(``)}</g>`),h.push(`<path class="tk-water" clip-path="url(#clip-${m})" d="${_(n.insetPlan(u,f-.4),p)}"/>`),t.drop&&h.push(o(n.ring(t.drop[0],t.drop[1],3.4,p,i,18),{tone:`faint`})),h.push(o(_(g,d),{tone:`lo`})),t.diffusers&&h.push(`<g clip-path="url(#clip-${m})" data-bubbles="${[un+1.2,p,...y].map(e=>e.toFixed(1)).join(`,`)}"></g>`),h.push(l(n.corners(u,f/2),d));for(let[e,n,o,s,c]of t.ports??[]){let t=r.frameAlong([e,n,o],[s,0,0]);h.push(a(r.disc(0,1.6,c+2,t,i),{tone:`mid`}))}if(t.nozzle){let[e,n,r]=t.nozzle;h.push(c(e,n,2.6,r-3.4,3.4,{tone:`mid`},14),c(e,n,1.3,r-5.4,2,{tone:`mid`,crease:`none`},10))}return h.join(``)}function fn(e,t,n){let{k:r,P:i,L:a,slab:o}=e,s=[o(t,0,12,{tone:`mid`},4,.8)],c=r.insetPlan(t,4);s.push(`<path class="tk-bore" d="${r.planOutline(c,12,i,4)}"/>`),s.push(`<clipPath id="clip-${n}"><path d="${r.planOutline(c,12,i,4)}"/></clipPath><path class="tk-water" clip-path="url(#clip-${n})" d="${r.planOutline(r.insetPlan(t,3.6),9,i,4)}"/>`),s.push(a(r.planOutline(c,12,i,4),{tone:`lo`}));let l=c.x+14,u=[],d=[];for(let e=c.y+3;e<c.y+c.d-2;e+=3.4)u.push(r.segment([l,e,9],[l,e,12],i)),d.push(r.segment([l,e,12],[l,e,18],i));return s.push(`<g clip-path="url(#clip-${n})">${a(u.join(``),{tone:`mid`})}</g>`,a(d.join(``),{tone:`mid`})),s.push(o({x:l-1.2,y:t.y,w:2.4,d:t.d,r:.4},18,2.2,{tone:`mid`},2,.2)),s.join(``)}function pn(e,t,n){let{k:r,P:i,L:a,slab:o}=e,s=[o(t,0,6,{tone:`mid`},3,.6)],c=r.insetPlan(t,3);s.push(`<path class="tk-bore" d="${r.planOutline(c,6,i,3)}"/>`),s.push(`<clipPath id="clip-${n}"><path d="${r.planOutline(c,6,i,3)}"/></clipPath><path class="tk-sludge" clip-path="url(#clip-${n})" d="${r.planOutline(c,3.6,i,3)}"/>`);let l=[];for(let e=1;e<6;e++)l.push(r.lineOnTop([c.x+c.w*e/6,c.y],[c.x+c.w*e/6,c.y+c.d],6.4,i));return s.push(a(l.join(``),{tone:`mid`})),s.join(``)}function mn(e,t,n,r){let{k:i,P:a,G:o,S:s,L:c,slab:l,cyl:u}=e,d=[l({...t,x:t.x-1,y:t.y-1,w:t.w+2,d:t.d+2},0,3,{tone:`lo`},2,.4)],f=t.x+.8,p=t.y+.8,m=t.x+t.w-.8,h=t.y+t.d-.8,g=[9,16],_=[i.segment([f,p,3],[f,p,27],a)],v=[];for(let[e,t]of[[f,h],[m,h],[m,p]])v.push(i.segment([e,t,3],[e,t,27],a));for(let e of g)_.push(i.segment([f,p,e],[m,p,e],a),i.segment([f,p,e],[f,h,e],a)),v.push(i.segment([f,h,e],[m,h,e],a),i.segment([m,p,e],[m,h,e],a));v.push(i.planOutline(i.insetPlan(t,.8),27,a,2)),d.push(c(_.join(``),{tone:`lo`})),d.push(l(i.insetPlan(t,2.4),3,21,{tone:`mid`},2,1.4)),d.push(c(v.join(``),{tone:`lo`})),d.push(u(t.x+t.w*.5,t.y+t.d*.3,2.4,24,4.4,{tone:`mid`},14));let y=o.frameAlong([t.x+2.4,n,r],[-1,0,0]);return d.push(s(o.disc(0,4.4,1.5,y,a),{tone:`mid`}),s(o.disc(1.6,3.4,2.4,y,a),{tone:`mid`}),s(o.disc(4.4,6,2.8,y,a),{tone:`mid`})),d.join(``)}function hn(e,t,n){let{k:r,P:i,G:a,S:o,L:s,slab:c,screws:l}=e,u=[c(t,0,10,{tone:`mid`},3,.8)],d=r.insetPlan(t,3);u.push(c(d,10,.8,{tone:`lo`},2,.3));let f=[];for(let e=1;e<5;e++){let t=d.y+d.d*e/5;f.push(r.lineOnTop([d.x+2,t],[d.x+d.w-2,t],11,i))}u.push(s(f.join(``),{tone:`faint`}),l(r.corners(d,2),10.8));let p=a.frameAlong([t.x+t.w/2,t.y+t.d/2,10.8],[0,0,1]);return u.push(o(a.disc(0,1.6,n+2,p,i),{tone:`mid`})),u.join(``)}function gn(e){let t=[...e].sort((e,t)=>e[0]-t[0]||e[1]-t[1]),n=(e,t,n)=>(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0]),r=e=>{let t=[];for(let r of e){for(;t.length>=2&&n(t[t.length-2],t[t.length-1],r)<=0;)t.pop();t.push(r)}return t.pop(),t};return[...r(t),...r([...t].reverse())]}function _n(e){return{x:-e.half-8,y:-8,w:e.half*2+16,d:16,r:2}}function vn(e,t,n){let{k:r,P:i,L:a,slab:o,cyl:s,screws:c,hmi:l}=e,{half:u,rimZ:d,waterZ:f}=n,p=d+3,m=[],h=p,g=r.roundedPlan({x:-u,y:-u,w:u*2,d:u*2,r:3},6).map(e=>r.iso([e[0],e[1],d],i));m.push(`<clipPath id="bore-${t}"><path d="${r.pathOf(gn([...g,...g.map(([e,t])=>[e,t-400])]),!0)}"/></clipPath>`),m.push(s(0,0,3.2,h-3,3,{tone:`mid`},16)),m.push(`<g clip-path="url(#bore-${t})">`),m.push(a(r.ring(0,0,2.8,f,i,18),{tone:`faint`})),m.push(`<path class="tk-swirl" data-swirl="0,0,${f},${u-12}" d=""/>`),m.push(s(0,0,1.8,f,h-3-f,{tone:`mid`,crease:`none`},12)),m.push(`<path class="iso-line" data-tone="lo" data-spin="motor" data-shaft="0,0,0" data-radius="1.8" data-span="${f},${h-3}" d=""/>`),m.push(`</g>`),m.push(o({x:-u-8,y:-6,w:u*2+16,d:12,r:1},d,3,{tone:`mid`},2,.4)),m.push(a(r.lineOnTop([-u-6,-4.8],[u+6,-4.8],d+3.2,i)+r.lineOnTop([-u-6,4.8],[u+6,4.8],d+3.2,i),{tone:`faint`})),m.push(c([[-u-5,0],[u+5,0]],p));let _=[];for(let e of[-u-6,-u/2,0,u/2,u+6])for(let t of[-6,6])_.push(r.segment([e,t,p],[e,t,p+8],i));for(let e of[-6,6])_.push(r.segment([-u-6,e,p+8],[u+6,e,p+8],i));m.push(a(_.join(``),{tone:`lo`})),m.push(s(0,0,7,p,8,{tone:`mid`},28)),m.push(s(0,0,10,p+8,18,{tone:`mid`,crease:`faint`},32));let v=[];for(let e=-.5;e<2.9;e+=.32)v.push(r.segment([Math.cos(e)*10.2,Math.sin(e)*10.2,p+10],[Math.cos(e)*10.2,Math.sin(e)*10.2,p+24],i));return m.push(a(v.join(``),{tone:`faint`})),m.push(s(0,0,10.6,p+26,2.4,{tone:`mid`},32),s(0,0,6,p+28.4,1.4,{tone:`lo`},24)),m.push(o({x:9,y:-3,w:6,d:6,r:1},p+12,7,{tone:`mid`},2,.3)),m.push(o({x:u-4,y:10,w:20,d:4,r:.8},d+3,15,{tone:`mid`},2,.3),l(t,14,u-2,u+14,d+5.4,d+16.6)),m.join(``)}var $=n(),yn={x:-132,y:-150,w:128,d:44,r:3},bn=(e,t)=>te(e,t,`water`,!0),xn=(e,t)=>te(e,t,`dosing`,!0),Sn=(e,t)=>te(e,t,`sludge`,!0),Cn=(e,t)=>we(e,t,{barFull:2.5,dialFull:4}),wn=(e,t)=>Ee(e,t,Ye),Tn=(e,t)=>Ee(e,t,A),En=(e,t)=>Ee(e,t,Xe),Dn=_n(et),On=(e,t)=>vn(e,t,et),kn=e=>dn(e,{...j,drop:J}),An=e=>dn(e,{...M,nozzle:Y}),jn=e=>fn(e,N,`intake`),Mn=e=>pn(e,P,`sump`),Nn=e=>mn(e,F,Jt[0],Jt[1]),Pn=e=>hn(e,I,Z);function Fn({ids:e}){let t=c(),n=ee(cn,pt),r=(0,ln.useMemo)(()=>re(t,He)+t.plinth(ze)+t.plinth(Be)+t.plinth(T)+t.plinth(Ve),[t]),i=e=>(0,$.jsx)(s,{html:`${n.layers[e]??``}<g data-flows="${e}" data-depth="${e===0?-1e9:dt[e-1]??0}"></g>`,data:{pipes:``}},`pipes-${e}`),a=(e,t,n,r)=>(0,$.jsx)(y,{from:L,to:he(t.c),scale:t.scale,children:(0,$.jsx)(l,{id:e,plan:me,intro:r,draw:n})}),o={rawTank:(0,$.jsx)(y,{from:[0,0,0],to:he(D.raw),children:(0,$.jsx)(l,{id:e.rawTank,plan:De(Ye),intro:3,draw:wn})}),rawA:a(e.rawPumpA,B.rawA,bn,4),rawB:a(e.rawPumpB,B.rawB,bn,5),channel:(0,$.jsx)(b,{build:jn,intro:1}),aeration:(0,$.jsx)(b,{build:kn,intro:1}),flash:(0,$.jsx)(b,{build:An,intro:1}),mixer:(0,$.jsx)(y,{from:[0,0,0],to:lt,children:(0,$.jsx)(l,{id:e.mixer,plan:Dn,intro:9,draw:On})}),blower:(0,$.jsx)(y,{from:nt,to:V,children:(0,$.jsx)(l,{id:e.blower,plan:yn,intro:6,draw:Cn})}),dose:a(e.dosePump,B.dose,xn,7),tote:(0,$.jsx)(b,{build:Nn,intro:2}),clarifier:(0,$.jsx)(y,{from:[0,0,0],to:he(D.clarifier),children:(0,$.jsx)(l,{id:e.clarifier,plan:De(A),intro:8,draw:Tn})}),sludge:a(e.sludgePump,B.sludge,Sn,10),sump:(0,$.jsx)(b,{build:Mn,intro:2}),clearWell:(0,$.jsx)(y,{from:[0,0,0],to:he(D.clearWell),children:(0,$.jsx)(l,{id:e.clearWell,plan:De(Xe),intro:11,draw:En})}),distA:a(e.distPumpA,B.distA,bn,12),distB:a(e.distPumpB,B.distB,bn,13),outfall:(0,$.jsx)(b,{build:Pn,intro:2})};return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(s,{html:r,data:{plinth:``}}),i(0),ut.flatMap((e,t)=>[(0,$.jsx)(`g`,{children:o[e.key]},e.key),i(t+1)])]})}var In=oe(E),Ln=ne(In,cn,pt),Rn=se({layout:{width:Re,height:640,label:`Isometric model of the Water Treatment Plant: three areas on their own plinths. Intake has a channel, two raw water pumps and the raw tank; treatment has an aeration basin with its blower, a flash-mix basin with a coagulant dosing pump and a motor-driven mixer, and a clarifier with its sludge pump and sump; distribution has the clear well and two distribution pumps feeding the outfall. Pipes carry water, air, coagulant and sludge between them. Every moving part follows live values from the running engine.`,kit:In,flows:Ln.flows,joints:Ln.joints,Scene:Fn,compose:Le},resolve:je,things:Me,caption:`intake · treatment · distribution`,mismatch:`This floor expects the Water Treatment plant: raw pumps and tank, blower, dosing pump, mixer, clarifier with its sludge pump, clear well and two distribution pumps, by area and line.`,statusBasis:`availability`,Overview:h,tab:`Plant`});export{Rn as waterFloor};
|