@miravo/cli-linux-x64 0.9.0 → 0.11.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.
Files changed (142) hide show
  1. package/console-dist/assets/{AnimatePresence-CPmH1DMY.js → AnimatePresence-BSSlw02V.js} +1 -1
  2. package/console-dist/assets/api-B2QJEzbS.js +1 -0
  3. package/console-dist/assets/api-Vq4lny_H.js +1 -0
  4. package/console-dist/assets/arrow-up-right-CwPw_2U1.js +1 -0
  5. package/console-dist/assets/asset-detail-E-TllNHT.js +1 -0
  6. package/console-dist/assets/asset-detail-actions-jjbvaDES.js +1 -0
  7. package/console-dist/assets/asset-panel-DDziFlFl.js +1 -0
  8. package/console-dist/assets/{auth-screen-backdrop-CgwRhIbi.js → auth-screen-backdrop-CEykEbfF.js} +1 -1
  9. package/console-dist/assets/backup-power-BDMAO2bO.js +1 -0
  10. package/console-dist/assets/{badge-DuuEINVl.js → badge-Bk1DaL6C.js} +1 -1
  11. package/console-dist/assets/boiler-CWAR1Nq2.js +1 -0
  12. package/console-dist/assets/by-path-VBqTBdlG.js +1 -0
  13. package/console-dist/assets/catalog-BlkPPAWE.js +1 -0
  14. package/console-dist/assets/catalog-CQopEu5C.js +1 -0
  15. package/console-dist/assets/catalog-source-B4L5N-a1.js +1 -0
  16. package/console-dist/assets/catalog-template-icons-BOSywIKV.js +1 -0
  17. package/console-dist/assets/check-B-yvIfMj.js +1 -0
  18. package/console-dist/assets/checkbox-DEAkDfFr.js +1 -0
  19. package/console-dist/assets/chevron-down-x70Pto6j.js +1 -0
  20. package/console-dist/assets/chevron-left-XHFooLn1.js +1 -0
  21. package/console-dist/assets/chevron-right-CMSQPSEo.js +1 -0
  22. package/console-dist/assets/chiller-BSx8eUMN.js +1 -0
  23. package/console-dist/assets/circle-x-_o0nl0Rg.js +1 -0
  24. package/console-dist/assets/combobox-B8h0-NHs.js +1 -0
  25. package/console-dist/assets/commercial-building-CNvi6IZK.js +1 -0
  26. package/console-dist/assets/compressor-D63w6Ir2.js +1 -0
  27. package/console-dist/assets/console-panel-CMDoBJiO.js +1 -0
  28. package/console-dist/assets/control-CBviLxJB.js +1 -0
  29. package/console-dist/assets/control-jNqzZWa9.js +1 -0
  30. package/console-dist/assets/copy-button-CSUP1VjU.js +1 -0
  31. package/console-dist/assets/dialog-B5PqrKVw.js +1 -0
  32. package/console-dist/assets/district-heating-Cr4CrgCA.js +1 -0
  33. package/console-dist/assets/dom-Cm_OH5jc.js +1 -0
  34. package/console-dist/assets/dropdown-menu-B_MMNbTy.js +1 -0
  35. package/console-dist/assets/events-D531_1EZ.js +1 -0
  36. package/console-dist/assets/events-RmbRTKFV.js +1 -0
  37. package/console-dist/assets/events-format-C5HTkIsC.js +1 -0
  38. package/console-dist/assets/export-tab-fZDO4r2u.js +1 -0
  39. package/console-dist/assets/factory-C2OucdpQ.js +1 -0
  40. package/console-dist/assets/factory-CgSIjU5V.js +1 -0
  41. package/console-dist/assets/factory-DLE12zAd.js +1 -0
  42. package/console-dist/assets/floor-page-D0mX5OuA.js +1 -0
  43. package/console-dist/assets/floor-page-E-0txA4z.css +1 -0
  44. package/console-dist/assets/format-Bx7DF-TB.js +1 -0
  45. package/console-dist/assets/genset-BRgqR1AT.js +1 -0
  46. package/console-dist/assets/{get-error-message-BowDodwy.js → get-error-message-dM0BMfdP.js} +1 -1
  47. package/console-dist/assets/index-CrLa65Ur.css +2 -0
  48. package/console-dist/assets/index-CvuwOe37.js +12 -0
  49. package/console-dist/assets/integration-api-D2tA69Yb.js +2 -0
  50. package/console-dist/assets/integration-targets-Byvdd3Or.js +1 -0
  51. package/console-dist/assets/integrations-BLG4PT3c.js +1 -0
  52. package/console-dist/assets/integrations-iAjWxaDS.js +1 -0
  53. package/console-dist/assets/{label-DTHSKF2S.js → label-2sIXTEUK.js} +1 -1
  54. package/console-dist/assets/loader-circle-DjgHgHHl.js +1 -0
  55. package/console-dist/assets/{login-O9dnrHI9.js → login-DpNKicxy.js} +1 -1
  56. package/console-dist/assets/minus-CaT9UaQx.js +1 -0
  57. package/console-dist/assets/model-schemas-3w38IPdc.js +1 -0
  58. package/console-dist/assets/models-CMN9Eppf.js +1 -0
  59. package/console-dist/assets/models-I_V8J5Y0.js +1 -0
  60. package/console-dist/assets/not-found-C4YVKP97.js +1 -0
  61. package/console-dist/assets/pause-CqW7v5Dc.js +1 -0
  62. package/console-dist/assets/pharma-cleanroom-ClJRwROz.js +1 -0
  63. package/console-dist/assets/play-kg50os4l.js +1 -0
  64. package/console-dist/assets/plus-Cl4Ay5Ry.js +1 -0
  65. package/console-dist/assets/protocol-card-ARSwIjkN.js +1 -0
  66. package/console-dist/assets/{proxy-Be4WzmcS.js → proxy-CWZabK8f.js} +1 -1
  67. package/console-dist/assets/query-fetch-error-CWLZA2L5.js +1 -0
  68. package/console-dist/assets/radio-BxpVYiyS.js +1 -0
  69. package/console-dist/assets/registry-Dau_GjK6.js +2 -0
  70. package/console-dist/assets/rocket-KZ5oHK1G.js +1 -0
  71. package/console-dist/assets/rtu-D-1lltcO.js +1 -0
  72. package/console-dist/assets/select-BWlrSYlA.js +1 -0
  73. package/console-dist/assets/{select-display-items-BEVMAho-.js → select-display-items-DN2G8DNG.js} +1 -1
  74. package/console-dist/assets/server-BVem_egD.js +1 -0
  75. package/console-dist/assets/sliders-horizontal-BNKmYQgd.js +1 -0
  76. package/console-dist/assets/smart-factory-cem4tLAv.js +1 -0
  77. package/console-dist/assets/source-host-miravo-B8eM2IHw.js +1 -0
  78. package/console-dist/assets/stages-hidkaJPI.js +1 -0
  79. package/console-dist/assets/status-CZFZLqVk.js +1 -0
  80. package/console-dist/assets/tabs-BbQkzBZZ.js +1 -0
  81. package/console-dist/assets/tags-BBz30-eV.js +4 -0
  82. package/console-dist/assets/tags-K96jT8PY.js +1 -0
  83. package/console-dist/assets/tank-THHXGdzg.js +1 -0
  84. package/console-dist/assets/{tooltip-D1ydB4g3.js → tooltip-B3vOB1Vu.js} +1 -1
  85. package/console-dist/assets/{transition-nav-link-Crj9XTbK.js → transition-nav-link-B11-gXld.js} +1 -1
  86. package/console-dist/assets/trash-2-BH9HDsZv.js +1 -0
  87. package/console-dist/assets/use-engine-command-mutation-CHqjOqfS.js +1 -0
  88. package/console-dist/assets/use-transition-navigate-B-nk4aWh.js +2 -0
  89. package/console-dist/assets/useQuery-M9KTdi7Q.js +1 -0
  90. package/console-dist/assets/validation-BkfmaBBi.js +1 -0
  91. package/console-dist/assets/vendor-ui-D8j69UH4.js +1 -0
  92. package/console-dist/assets/water-treatment-CfVR0p0L.js +1 -0
  93. package/console-dist/index.html +65 -46
  94. package/miravo +2 -2
  95. package/package.json +1 -1
  96. package/console-dist/assets/api-0DOQsu1W.js +0 -1
  97. package/console-dist/assets/api-DdyA1QMC.js +0 -1
  98. package/console-dist/assets/arrow-right-BjBb4z7g.js +0 -1
  99. package/console-dist/assets/arrow-up-down-C1oJAmrw.js +0 -1
  100. package/console-dist/assets/asset-detail-D-coMgED.js +0 -1
  101. package/console-dist/assets/catalog-Ca9rhNLN.js +0 -1
  102. package/console-dist/assets/catalog-CdbAE0Ki.js +0 -1
  103. package/console-dist/assets/catalog-source-CPFWtBJF.js +0 -1
  104. package/console-dist/assets/catalog-template-icons-aec8m5-A.js +0 -1
  105. package/console-dist/assets/checkbox-BL44aFel.js +0 -1
  106. package/console-dist/assets/circle-question-mark-CJvcT6V6.js +0 -1
  107. package/console-dist/assets/combobox-B5iFVe7N.js +0 -1
  108. package/console-dist/assets/control-CtvncuAA.js +0 -1
  109. package/console-dist/assets/control-DYdEZmP0.js +0 -1
  110. package/console-dist/assets/copy-button-RVCJ3aqM.js +0 -1
  111. package/console-dist/assets/dropdown-menu-82O7jPU6.js +0 -1
  112. package/console-dist/assets/events-Bp3BqWYo.js +0 -1
  113. package/console-dist/assets/events-D5uZ2cwr.js +0 -1
  114. package/console-dist/assets/fleet-CBXZ0Xts.js +0 -1
  115. package/console-dist/assets/fleet-CRB8-QDg.js +0 -1
  116. package/console-dist/assets/format-6q8Tnwmn.js +0 -1
  117. package/console-dist/assets/index-BPmjm3uU.css +0 -2
  118. package/console-dist/assets/index-Chh5Cd8X.js +0 -12
  119. package/console-dist/assets/integration-targets-ChYQ8POe.js +0 -1
  120. package/console-dist/assets/integrations-BrZWbG5Q.js +0 -1
  121. package/console-dist/assets/integrations-D4x6ee5M.js +0 -1
  122. package/console-dist/assets/layers-1figUpjG.js +0 -1
  123. package/console-dist/assets/models-BDeOqKQk.js +0 -1
  124. package/console-dist/assets/models-CgWCVmnx.js +0 -1
  125. package/console-dist/assets/not-found-Dw4OTZHH.js +0 -1
  126. package/console-dist/assets/query-fetch-error-ytmF7SP9.js +0 -1
  127. package/console-dist/assets/select-Cg2u0NQI.js +0 -1
  128. package/console-dist/assets/shallow-Cin0mLuv.js +0 -1
  129. package/console-dist/assets/spawn-protocol-scope-picker-DDi-hZwj.js +0 -1
  130. package/console-dist/assets/tabs-BJs5Kci7.js +0 -1
  131. package/console-dist/assets/tags-CcmWc8Xj.js +0 -1
  132. package/console-dist/assets/tags-DnyhyxDB.js +0 -4
  133. package/console-dist/assets/use-engine-command-mutation-OZ8_Roso.js +0 -1
  134. package/console-dist/assets/use-integration-stream-CFkuEB9r.js +0 -2
  135. package/console-dist/assets/use-transition-navigate-BBXUEW59.js +0 -2
  136. package/console-dist/assets/validation-BvXCKp12.js +0 -1
  137. package/console-dist/assets/vendor-ui-CWUk2ulb.js +0 -1
  138. /package/console-dist/assets/{download-DmUZKo9N.js → download-i8CTJ7oi.js} +0 -0
  139. /package/console-dist/assets/{runtime-link-D-uJbw97.js → runtime-link-vBANRqcD.js} +0 -0
  140. /package/console-dist/assets/{transition-types-CPlGtM8w.js → transition-types-BKZuWApE.js} +0 -0
  141. /package/console-dist/assets/{triangle-alert-BXrJNk3g.js → triangle-alert-DoAwrRgk.js} +0 -0
  142. /package/console-dist/assets/{vendor-table-BAHQgdwg.js → vendor-table-B0Z9e_sn.js} +0 -0
@@ -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-B2QJEzbS.js";import{t as s}from"./useQuery-M9KTdi7Q.js";import{t as c}from"./proxy-CWZabK8f.js";import{t as l}from"./AnimatePresence-BSSlw02V.js";import{c as u,n as d}from"./chunk-OE4NN4TA-DBWZidbW.js";import{a as ee,c as f,i as p,n as m,o as h,r as g,t as _}from"./dialog-B5PqrKVw.js";import{C as v,S as y,u as b,w as x}from"./format-Bx7DF-TB.js";import{n as S,t as C}from"./utils-XFKvwlFT.js";import{n as w,t as T}from"./catalog-template-icons-BOSywIKV.js";import{r as E}from"./source-host-miravo-B8eM2IHw.js";import{t as D}from"./play-kg50os4l.js";import{t as O}from"./query-fetch-error-CWLZA2L5.js";import{t as k}from"./rocket-KZ5oHK1G.js";import{i as A,n as j,r as M,t as N}from"./catalog-source-B4L5N-a1.js";import{t as P}from"./badge-Bk1DaL6C.js";import{n as te}from"./get-error-message-dM0BMfdP.js";import{a as ne,i as F,o as I,t as L}from"./use-engine-command-mutation-CHqjOqfS.js";var R=S(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),z=e(t(),1),B=n(),V=[`builtin`,`personal`];function H(){let[e,t]=(0,z.useState)(``),[n,d]=(0,z.useState)(`all`),[x,S]=(0,z.useState)(null),[T,E]=(0,z.useState)(null),[D,j]=(0,z.useState)(null),N=(0,z.useRef)(null),F=L(),I=u(),R=a(e=>e.templates),H=(0,z.useMemo)(()=>new Set(R.map(e=>e.templateId)),[R]);(0,z.useEffect)(()=>{let e=e=>{if(e.key!==`/`||e.metaKey||e.ctrlKey||e.altKey)return;let t=e.target.tagName;t===`INPUT`||t===`TEXTAREA`||t===`SELECT`||(e.preventDefault(),N.current?.focus())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]);let W=s({queryKey:o.catalog.templates(),queryFn:()=>i(`/catalog/templates`,r.catalogTemplates)}),K=W.data??[],q=T===null?null:K.find(e=>e.id===T)??null,J=W.isPending&&!W.data,Y=W.isError&&!W.data,X=W.isError&&!!W.data,Z=te(W.error,`Failed to load templates.`),re=(0,z.useCallback)(e=>{j(e)},[]),ie=(0,z.useCallback)(e=>{E(e)},[]),ae=async e=>{S(e);try{return await F.mutateAsync({type:`loadTemplate`,templatePath:e}),f(`Next: connect a client`),I(`/?highlight=${encodeURIComponent(e)}`),!0}catch{return!1}finally{S(null)}},oe=(0,z.useMemo)(()=>{let e={all:K.length};for(let t of V)e[t]=0;for(let t of K){let n=M(t.source);e[n]=(e[n]??0)+1}return e},[K]),Q=e.toLowerCase(),$=K.filter(e=>n===`all`||M(e.source)===n).filter(e=>Q?e.name.toLowerCase().includes(Q)||e.id.toLowerCase().includes(Q)||(e.description?.toLowerCase().includes(Q)??!1):!0);return(0,B.jsxs)(`div`,{className:`@container/templates mx-auto flex w-full max-w-screen-2xl flex-col gap-5 p-4 sm:gap-6 sm:p-6`,children:[(0,B.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,B.jsx)(`h1`,{className:`font-heading text-2xl font-semibold tracking-tight`,children:`Template Catalog`}),(0,B.jsx)(P,{variant:`outline`,className:`text-xs`,children:Y?(0,B.jsx)(`span`,{className:`text-destructive`,children:`Unavailable`}):J&&K.length===0?(0,B.jsx)(B.Fragment,{children:`Loading...`}):(0,B.jsxs)(B.Fragment,{children:[new Set(K.map(e=>e.id)).size,` templates`]})})]}),(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Choose a template to launch a realistic industrial system. Each template includes pre-configured asset models with realistic physics, lifecycle degradation, and fault modes.`})]}),Y&&(0,B.jsx)(O,{message:Z,onRetry:()=>void W.refetch(),isRetrying:W.isFetching}),X&&(0,B.jsx)(O,{message:`${Z} Showing cached templates.`,onRetry:()=>void W.refetch(),isRetrying:W.isFetching}),!Y&&(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,B.jsxs)(`div`,{className:`relative max-w-xs flex-1 min-w-[14rem]`,children:[(0,B.jsx)(A,{className:`absolute left-2.5 top-2.5 size-4 text-muted-foreground`}),(0,B.jsx)(y,{ref:N,placeholder:`Filter templates...`,value:e,onChange:e=>t(e.target.value),className:`pl-9 pr-7`}),!e&&(0,B.jsx)(`kbd`,{className:`pointer-events-none absolute top-1/2 right-2 -translate-y-1/2 rounded-[var(--miravo-radius-tight)] border border-border bg-muted px-1 font-mono text-[10px] text-muted-foreground`,children:`/`})]}),(0,B.jsx)(G,{value:n,counts:oe,onChange:d})]}),(0,B.jsx)(`div`,{className:`grid grid-cols-1 gap-4 @[720px]/templates:grid-cols-2`,"aria-busy":J&&!Y,children:Y?null:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(l,{children:$.map((e,t)=>(0,B.jsx)(c.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,scale:.96,transition:{duration:.15}},transition:{type:`spring`,stiffness:380,damping:30,delay:t*.04},className:`grid`,children:(0,B.jsx)(U,{template:e,launching:x===e.id,loaded:H.has(e.id),onInspect:re,onLaunch:ie})},`${e.source}:${e.id}`))}),$.length===0&&K.length>0&&(0,B.jsx)(`p`,{className:`col-span-full py-8 text-center text-sm text-muted-foreground`,children:`No templates match the current filters.`})]})}),K.length>0&&(0,B.jsx)(`div`,{className:C(ne,`p-0`),children:(0,B.jsx)(`div`,{className:`community-teaser relative overflow-hidden rounded-[inherit]`,children:(0,B.jsx)(`div`,{className:`relative z-10 mx-auto max-w-3xl px-5 py-10 sm:px-10 sm:py-12`,children:(0,B.jsxs)(`div`,{className:`grid items-center gap-10 lg:grid-cols-[minmax(0,1fr)_minmax(0,17rem)]`,children:[(0,B.jsxs)(`div`,{className:`order-2 flex min-w-0 flex-col gap-4 lg:order-1`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-3 gap-y-1`,children:[(0,B.jsx)(`p`,{className:`blueprint-title text-primary`,children:`Future channel`}),(0,B.jsx)(`span`,{className:`blueprint-stat text-[10px] text-muted-foreground`,children:`MIRAVO_REGISTRY · NOT_CONNECTED`})]}),(0,B.jsx)(`h2`,{className:`font-heading text-xl font-semibold tracking-tight sm:text-2xl`,children:`Community Templates`}),(0,B.jsx)(`p`,{className:`max-w-xl text-sm leading-relaxed text-muted-foreground`,children:`Share your industrial templates with the Miravo community. Publish custom templates, discover configurations from other engineers, and fork them as your starting point.`}),(0,B.jsx)(`div`,{children:(0,B.jsx)(P,{variant:`outline`,className:`community-teaser-soon border-primary/35 bg-primary/5 text-[10px] text-primary`,children:`Coming Soon`})})]}),(0,B.jsx)(`div`,{className:`order-1 flex justify-center lg:order-2 lg:justify-end`,children:(0,B.jsxs)(`div`,{className:`community-teaser-module relative flex w-full max-w-[14rem] flex-col items-center justify-center gap-3 border border-primary/15 bg-muted/15 py-8 sm:max-w-[15.5rem] sm:py-10`,"aria-hidden":!0,children:[(0,B.jsx)(`div`,{className:`community-teaser-icon-ring relative z-[1] flex size-[4.25rem] items-center justify-center rounded-[var(--miravo-radius-tight)] border border-primary/35 bg-gradient-to-br from-primary/18 to-primary/5`,children:(0,B.jsx)(k,{className:`size-9 text-primary`,"aria-hidden":!0})}),(0,B.jsx)(`span`,{className:`blueprint-stat relative z-[1] text-[9px] tracking-[0.18em] text-muted-foreground`,children:`AWAITING SIGNAL`}),(0,B.jsx)(`span`,{className:`blueprint-stat relative z-[1] text-[9px] text-muted-foreground`,children:`Uplink idle`})]})})]})})})}),(0,B.jsx)(_,{open:T!==null,onOpenChange:e=>{e||E(null)},children:(0,B.jsxs)(m,{className:`min-w-0 sm:max-w-md`,children:[(0,B.jsxs)(ee,{children:[(0,B.jsx)(h,{children:`Launch template?`}),(0,B.jsx)(g,{children:q!==null&&(0,B.jsxs)(B.Fragment,{children:[`This loads`,` `,(0,B.jsx)(`span`,{className:`font-medium text-foreground`,children:b(q.name)}),` `,`into the running factory.`]})})]}),(0,B.jsxs)(p,{children:[(0,B.jsx)(v,{variant:`outline`,disabled:x!==null,onClick:()=>E(null),children:`Cancel`}),(0,B.jsx)(v,{disabled:x!==null||q===null,onClick:async()=>{q!==null&&await ae(q.id)&&E(null)},children:x===q?.id?`Launching...`:`Launch`})]})]})}),(0,B.jsx)(w,{templateId:D?.id??null,onClose:()=>j(null)})]})}var U=(0,z.memo)(function({template:e,launching:t,loaded:n,onInspect:r,onLaunch:i}){return(0,B.jsxs)(`div`,{className:C(I,`flex flex-col gap-4 p-5`),children:[(0,B.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,B.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-[var(--miravo-radius-stadium-sm)] bg-primary/10 text-primary`,children:(0,B.jsx)(T,{id:e.id,className:`size-5`})}),(0,B.jsxs)(`div`,{className:`min-w-0 flex flex-col gap-1`,children:[(0,B.jsx)(`span`,{className:`font-heading text-sm font-semibold uppercase tracking-wide`,children:b(e.name)}),(0,B.jsx)(`p`,{className:`line-clamp-3 text-xs leading-relaxed text-foreground/75`,children:e.description??`Industrial template.`}),(0,B.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:e.id})]})]}),(0,B.jsx)(`div`,{className:`px-3 py-2`,children:(0,B.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:e.models.map(e=>(0,B.jsx)(P,{variant:`outline`,className:`h-auto min-h-5 rounded-[var(--miravo-radius-tight)] px-1.5 py-0 font-mono text-[10px] font-normal text-primary`,children:e},e))})}),(0,B.jsxs)(`div`,{className:`mt-auto flex flex-wrap items-center gap-4 font-mono text-[11px] text-muted-foreground`,children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`span`,{className:`text-foreground`,children:e.assetCount}),` assets`]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`span`,{className:`text-foreground`,children:e.models.length}),` models`]}),e.memberCount>0&&(0,B.jsxs)(`span`,{children:[`~`,(0,B.jsx)(`span`,{className:`text-foreground`,children:W(e.memberCount)}),` tags/cycle`]}),n&&(0,B.jsx)(P,{variant:`outline`,className:`ml-auto shrink-0 border-success/40 bg-success/10 font-sans text-[10px] font-medium uppercase tracking-wide text-success`,children:`Loaded`}),(0,B.jsx)(P,{variant:`outline`,className:C(`shrink-0 font-sans text-[10px] font-medium uppercase tracking-wide`,!n&&`ml-auto`,N(e.source)),children:j(e.source)})]}),(0,B.jsxs)(`div`,{className:`flex items-center gap-2 border-t border-border/30 pt-3`,children:[(0,B.jsxs)(v,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>r(e),className:F,children:[(0,B.jsx)(E,{className:`size-3.5`,"aria-hidden":!0}),`Inspect`]}),n?(0,B.jsxs)(d,{to:`/`,className:C(x({size:`sm`}),`ml-auto`),children:[(0,B.jsx)(R,{className:`mr-1 size-3`,"aria-hidden":!0}),`Open`]}):(0,B.jsxs)(v,{size:`sm`,className:`ml-auto`,disabled:t,onClick:()=>i(e.id),children:[(0,B.jsx)(D,{className:`mr-1 size-3`}),t?`...`:`Launch`]})]})]})});function W(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function G({value:e,counts:t,onChange:n}){return(0,B.jsx)(`div`,{className:`flex flex-wrap items-center gap-1.5`,role:`radiogroup`,"aria-label":`Filter by source`,children:[{id:`all`,label:`All`},...V.map(e=>({id:e,label:j(e)}))].map(r=>{let i=e===r.id,a=t[r.id]??0,o=r.id!==`all`&&a===0;return(0,B.jsxs)(`label`,{className:C(`inline-flex h-7 items-center gap-1.5 rounded-[var(--miravo-radius-pill)] border px-3 text-xs font-medium transition-colors`,i?`border-primary/60 bg-primary/15 text-primary`:`border-border/60 bg-card/30 text-muted-foreground hover:border-border hover:bg-muted/40 hover:text-foreground`,o?`cursor-not-allowed opacity-40 hover:border-border/60 hover:bg-card/30 hover:text-muted-foreground`:`cursor-pointer`),children:[(0,B.jsx)(`input`,{type:`radio`,name:`catalog-source-filter`,value:r.id,checked:i,disabled:o,onChange:()=>n(r.id),className:`sr-only`}),(0,B.jsx)(`span`,{children:r.label}),(0,B.jsx)(`span`,{className:`font-mono text-[10px] opacity-70`,children:a})]},r.id)})})}export{R as n,H as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./catalog-BlkPPAWE.js";export{e as CatalogPage};
@@ -0,0 +1 @@
1
+ import{n as e}from"./utils-XFKvwlFT.js";var t=e(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),n={builtin:`Built-in`,personal:`Personal`,community:`Community`},r=`border-border/60 bg-muted/40 text-muted-foreground`,i={builtin:r,personal:`border-primary/40 bg-primary/10 text-primary`,community:`border-accent/40 bg-accent/10 text-accent`};function a(e){return e===`cwd`||e===`namespace`?`personal`:e}function o(e){return n[a(e)]??e}function s(e){return i[a(e)]??r}export{t as i,o as n,a as r,s 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{S as r,o as i,v as a}from"./api-B2QJEzbS.js";import{t as o}from"./useQuery-M9KTdi7Q.js";import{t as s}from"./proxy-CWZabK8f.js";import{t as c}from"./AnimatePresence-BSSlw02V.js";import{c as l,h as u,s as d}from"./format-Bx7DF-TB.js";import{n as f,t as p}from"./utils-XFKvwlFT.js";import{t as m}from"./chevron-down-x70Pto6j.js";import{t as h}from"./chevron-right-CMSQPSEo.js";import{t as g}from"./copy-button-CSUP1VjU.js";import{t as _}from"./factory-DLE12zAd.js";import{t as v}from"./query-fetch-error-CWLZA2L5.js";import{c as y,d as b,f as x,l as S,s as C,t as w,u as T}from"./export-tab-fZDO4r2u.js";import{t as E}from"./badge-Bk1DaL6C.js";import{n as D}from"./get-error-message-dM0BMfdP.js";import{a as O}from"./use-engine-command-mutation-CHqjOqfS.js";import{i as k,n as A,r as j,t as M}from"./tabs-BbQkzBZZ.js";import{t as N}from"./model-schemas-3w38IPdc.js";var P=f(`building`,[[`path`,{d:`M12 10h.01`,key:`1nrarc`}],[`path`,{d:`M12 14h.01`,key:`1etili`}],[`path`,{d:`M12 6h.01`,key:`1vi96p`}],[`path`,{d:`M16 10h.01`,key:`1m94wz`}],[`path`,{d:`M16 14h.01`,key:`1gbofw`}],[`path`,{d:`M16 6h.01`,key:`1x0f13`}],[`path`,{d:`M8 10h.01`,key:`19clt8`}],[`path`,{d:`M8 14h.01`,key:`6423bh`}],[`path`,{d:`M8 6h.01`,key:`1dz90k`}],[`path`,{d:`M9 22v-3a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3`,key:`cabbwy`}],[`rect`,{x:`4`,y:`2`,width:`16`,height:`20`,rx:`2`,key:`1uxh74`}]]),ee=f(`droplet`,[[`path`,{d:`M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z`,key:`c7niix`}]]),te=f(`flask-conical`,[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`,key:`18mbvz`}],[`path`,{d:`M6.453 15h11.094`,key:`3shlmq`}],[`path`,{d:`M8.5 2h7`,key:`csnxdl`}]]),F=f(`folder`,[[`path`,{d:`M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z`,key:`1kt360`}]]),I=f(`layout-grid`,[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]),L=f(`layout-template`,[[`rect`,{width:`18`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`f1a2em`}],[`rect`,{width:`9`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`jqznyg`}],[`rect`,{width:`5`,height:`7`,x:`16`,y:`14`,rx:`1`,key:`q5h2i8`}]]),R=f(`list`,[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]),z=f(`thermometer-sun`,[[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 8a4 4 0 0 0-1.645 7.647`,key:`wz5p04`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 14.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0z`,key:`yu0u2z`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}]]),B=f(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),V=e(t(),1),H=n(),U=20,W=14,G=`flex w-3.5 shrink-0 items-center justify-center`;function K({asset:e,depth:t,area:n,line:r,detail:i}){let[a,o]=(0,V.useState)(!1),[s,c]=(0,V.useState)(!1),l=a?e.tags:e.tags.slice(0,10),u=e.tags.length-10;return(0,H.jsxs)(H.Fragment,{children:[l.map(a=>(0,H.jsx)(q,{member:a,depth:t,area:n,line:r,assetId:e.id,detail:i},a.name)),!a&&u>0&&(0,H.jsxs)(`button`,{type:`button`,className:`flex min-h-11 w-full items-center gap-1.5 border-t border-border/30 py-2 text-left font-mono text-xs text-muted-foreground hover:bg-muted/40 touch-manipulation sm:min-h-0 sm:py-1.5`,style:{paddingLeft:`${t*14+U}px`},onClick:()=>o(!0),children:[(0,H.jsx)(`span`,{className:G,"aria-hidden":!0}),(0,H.jsxs)(`span`,{children:[`+`,u,` more tags`]})]}),e.properties.length>0&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(`button`,{type:`button`,className:`flex min-h-11 w-full items-center gap-1.5 border-t border-border/30 py-2 text-left font-mono text-xs text-muted-foreground hover:bg-muted/40 touch-manipulation sm:min-h-0 sm:py-1.5`,style:{paddingLeft:`${t*14+U}px`},onClick:()=>c(e=>!e),children:[(0,H.jsx)(`span`,{className:G,"aria-hidden":!0,children:s?(0,H.jsx)(m,{className:`size-3.5 opacity-60`,"aria-hidden":!0}):(0,H.jsx)(h,{className:`size-3.5 opacity-60`,"aria-hidden":!0})}),(0,H.jsxs)(`span`,{children:[e.properties.length,` properties`]})]}),s&&e.properties.map(a=>(0,H.jsx)(q,{member:a,depth:t,area:n,line:r,assetId:e.id,detail:i},a.name))]})]})}function q({member:e,depth:t,area:n,line:r,assetId:i,detail:a}){let o=e.kind===`property`,s=t*14+U+(o?W:0),c=a.namespace,u=[c?.enterprise?`${c.enterprise}/${c.site??``}`:c?.prefix??``,n,r,i,e.name].filter(Boolean).join(`/`);return(0,H.jsx)(g,{value:u,label:`Copy UNS path`,successMessage:`UNS path copied`,successDescription:u,tooltipSide:`top`,render:()=>(0,H.jsxs)(`button`,{type:`button`,className:p(`flex w-full cursor-pointer flex-col gap-1 border-t border-border/25 py-2 text-left font-mono text-xs hover:bg-muted/35 touch-manipulation sm:min-h-0 sm:flex-row sm:items-center sm:gap-1.5 sm:py-1.5`,o&&`opacity-65`),style:{paddingLeft:`${s}px`},children:[(0,H.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,H.jsx)(`span`,{className:G,"aria-hidden":!0,children:(0,H.jsx)(`span`,{className:p(`size-1 rounded-full ring-1 ring-border/50`,o?`bg-muted-foreground/25`:`bg-primary/50`)})}),(0,H.jsx)(`span`,{title:e.name,className:p(`min-w-0 truncate`,o?`text-muted-foreground`:`text-foreground`),children:l(e.name)}),o&&(0,H.jsx)(`span`,{className:`shrink-0 rounded-[var(--miravo-radius-tight)] bg-muted/60 px-1 py-px text-[10px] text-muted-foreground`,children:`PROP`})]}),(0,H.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-2 gap-y-0.5 pl-0 sm:ml-auto sm:flex-1 sm:justify-end sm:pl-0 sm:pr-1`,children:[(0,H.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:e.dataType}),e.unit&&(0,H.jsx)(`span`,{className:`shrink-0 text-muted-foreground`,children:e.unit}),e.euRange&&(0,H.jsxs)(`span`,{className:`ml-auto shrink-0 tabular-nums text-muted-foreground`,children:[`[`,e.euRange[0],`–`,e.euRange[1],`]`]})]})]})})}function J({depth:e,label:t,labelTitle:n,tag:r,tagKind:i,subtitle:a,subtitleTitle:o,count:s,expanded:c,onToggle:l,hasChildren:u}){let d=c?m:h,f=i===`area`?`text-primary`:`text-foreground`;return(0,H.jsxs)(`button`,{type:`button`,className:`flex min-h-11 w-full flex-col gap-1 border-t border-border/35 py-2 pr-2 text-left text-xs transition-colors touch-manipulation first:border-t-0 hover:bg-muted/40 sm:min-h-0 sm:flex-row sm:flex-wrap sm:items-center sm:gap-1.5 sm:gap-y-0 sm:py-1.5`,style:{paddingLeft:`${12+e*14}px`},onClick:l,children:[(0,H.jsxs)(`div`,{className:`flex min-w-0 w-full items-center gap-1.5 sm:w-auto sm:flex-1 sm:flex-wrap sm:items-center`,children:[u?(0,H.jsx)(d,{className:`size-3.5 shrink-0 text-muted-foreground`,"aria-hidden":!0}):(0,H.jsx)(`span`,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),(0,H.jsx)(`span`,{title:n??void 0,className:p(`min-w-0 flex-1 truncate font-medium`,f),children:t}),(0,H.jsx)(`span`,{className:`shrink-0 text-[10px] tracking-wide text-muted-foreground uppercase`,children:r}),a&&(0,H.jsx)(`span`,{title:o??void 0,className:`hidden min-w-0 max-w-[min(11rem,38vw)] shrink truncate font-mono text-xs text-muted-foreground sm:inline`,children:a}),s!==void 0&&(0,H.jsx)(`span`,{className:`ml-auto shrink-0 tabular-nums text-xs text-muted-foreground`,children:s})]}),a&&(0,H.jsx)(`span`,{title:o??void 0,className:`min-w-0 truncate pl-7 font-mono text-xs text-muted-foreground sm:hidden`,children:a})]})}function Y(e){let t=e.split(/[-_]/).filter(e=>e.length>0);return t[t.length-1]??e}function X(e,t,n){let r=[];for(let i of e){let e=Y(i.model),a=t.get(i.model),o=[],s=[];if(a)for(let[e,t]of Object.entries(a.members)){let n={name:e,kind:t.kind,dataType:t.dataType,unit:t.unit,euRange:t.euRange};t.kind===`property`?s.push(n):o.push(n)}for(let t=0;t<i.count;t++){let t=(n.get(i.model)??0)+1;n.set(i.model,t),r.push({id:`${e}-${String(t).padStart(3,`0`)}`,model:i.model,tags:o,properties:s})}}return r}function Z({detail:e}){let[t,n]=(0,V.useState)(new Set),s=(0,V.useRef)(null),c=(0,V.useMemo)(()=>[...new Set(e.models)],[e.models]),l=c.join(`,`),f=o({queryKey:a.catalog.modelSchemasBatch(l),queryFn:async()=>Promise.all(c.map(e=>i(`/catalog/models/${e}`,r.catalogModelDetail)))}),p=f.isPending&&!f.data,m=(0,V.useMemo)(()=>{let e=new Map;if(!f.data)return e;for(let[t,n]of f.data.entries())e.set(c[t],n);return e},[f.data,c]),h=(0,V.useMemo)(()=>{let t=new Map,n=new Map;for(let r of e.topology)for(let e of r.lines)n.set(`${r.name}/${e.name}`,X(e.assets,m,t));return n},[e.topology,m]);(0,V.useEffect)(()=>{if(p)return;let t=e.name;if(s.current===t)return;let r=new Set;for(let t of e.topology){r.add(`area:${t.name}`);for(let e of t.lines)r.add(`line:${t.name}/${e.name}`)}outer:for(let t of e.topology)for(let e of t.lines){let n=(h.get(`${t.name}/${e.name}`)??[])[0];if(n){r.add(`inst:${t.name}/${e.name}/${n.id}`);break outer}}n(r),s.current=t},[p,e.name,e.topology,h]);let g=(0,V.useCallback)(e=>{n(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]);return p?null:f.isError&&!f.data?(0,H.jsx)(v,{message:D(f.error,`Failed to load model schemas.`),onRetry:()=>void f.refetch(),isRetrying:f.isFetching&&!f.isPending}):(0,H.jsx)(`div`,{className:`overflow-hidden rounded-[var(--miravo-radius-stadium-sm)] border border-border/50 py-2 pl-1 pr-2 touch-manipulation sm:py-2.5 sm:pl-1.5 sm:pr-2.5`,children:e.topology.map(n=>{let r=`area:${n.name}`,i=t.has(r);return(0,H.jsxs)(`div`,{children:[(0,H.jsx)(J,{depth:0,label:u(n.name),labelTitle:n.name,tag:`AREA`,tagKind:`area`,expanded:i,onToggle:()=>g(r),hasChildren:!0}),i&&n.lines.map(r=>{let i=`line:${n.name}/${r.name}`,a=t.has(i),o=h.get(`${n.name}/${r.name}`)??[];return(0,H.jsxs)(`div`,{children:[(0,H.jsx)(J,{depth:1,label:u(r.name),labelTitle:r.name,tag:`LINE`,tagKind:`line`,count:o.length,expanded:a,onToggle:()=>g(i),hasChildren:!0}),a&&o.map(i=>{let a=`inst:${n.name}/${r.name}/${i.id}`,o=t.has(a);return(0,H.jsxs)(`div`,{children:[(0,H.jsx)(J,{depth:2,label:d(i.id),labelTitle:i.id,tag:`INST`,tagKind:`inst`,subtitle:u(i.model),subtitleTitle:i.model,count:i.tags.length+i.properties.length,expanded:o,onToggle:()=>g(a),hasChildren:i.tags.length+i.properties.length>0}),o&&(0,H.jsx)(K,{asset:i,depth:3,area:n.name,line:r.name,detail:e})]},i.id)})]},r.name)})]},n.name)})})}function ne(e){return e.lines.reduce((e,t)=>e+t.assets.reduce((e,t)=>e+t.count,0),0)}function re(e){return Object.values(e.members).filter(e=>e.kind!==`property`).length}function Q(e,t){let n=0;for(let r of e.topology)for(let e of r.lines)for(let r of e.assets){let e=t.get(r.model),i=e?re(e):0;n+=r.count*i}return n}var $=`min-h-10 px-2 py-1 text-xs text-foreground/82 after:bottom-[-3px] data-active:text-foreground sm:min-h-0 sm:px-2.5 sm:py-1`;function ie({templateId:e,onClose:t,actions:n,fallbackTitle:c}){let[l,u]=(0,V.useState)(new Set),d=o({queryKey:a.catalog.templateDetail(e??``),queryFn:()=>i(`/catalog/templates/${e}`,r.catalogTemplateDetail),enabled:e!==null}),f=d.data,p=d.isPending&&!f,m=d.isError,h=D(d.error,`Failed to load template.`),g=N(f?.models??[]),_=(0,V.useMemo)(()=>{if(!f||!g.data)return null;let e=new Map;for(let[t,n]of g.data.entries())e.set(f.models[t],n);return Q(f,e)},[f,g.data]);(0,V.useEffect)(()=>{e&&f&&u(new Set(f.topology.map(e=>e.name)))},[e,f]);let O=(0,V.useCallback)(e=>{u(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]);return(0,H.jsx)(C,{open:e!==null,onOpenChange:e=>{e||t()},children:(0,H.jsx)(y,{side:`right`,className:`flex w-full flex-col gap-4 touch-manipulation`,children:p?null:m&&!f&&n?(0,H.jsxs)(T,{className:`gap-2 pb-0 pe-12`,children:[(0,H.jsx)(b,{className:`font-heading text-base uppercase tracking-wide`,children:c}),(0,H.jsx)(`div`,{className:`flex flex-wrap items-center gap-1`,children:n})]}):m&&!f?(0,H.jsx)(`div`,{className:`flex flex-1 flex-col justify-center px-2`,children:(0,H.jsx)(v,{message:h,onRetry:()=>void d.refetch(),isRetrying:d.isFetching})}):f?(0,H.jsxs)(s.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.18},className:`flex min-h-0 flex-1 flex-col gap-4`,children:[(0,H.jsxs)(T,{className:`gap-1 pb-0 pe-12`,children:[(0,H.jsx)(b,{className:`font-heading text-base uppercase tracking-wide`,children:f.name}),f.description&&(0,H.jsx)(S,{className:`text-xs leading-relaxed text-foreground/88`,children:f.description}),n?(0,H.jsx)(`div`,{className:`flex flex-wrap items-center gap-1 pt-1`,children:n}):null]}),(0,H.jsxs)(M,{defaultValue:`overview`,className:`flex min-h-0 flex-1 flex-col gap-1 pt-0`,children:[(0,H.jsxs)(j,{variant:`line`,className:`h-8! shrink-0 gap-0.5 border-b-border/60 px-2 py-0.5`,children:[(0,H.jsx)(k,{value:`overview`,className:$,children:`Overview`}),(0,H.jsx)(k,{value:`uns`,className:$,children:`UNS`}),(0,H.jsx)(k,{value:`export`,className:$,children:`Export`})]}),(0,H.jsx)(A,{value:`overview`,keepMounted:!0,className:`flex min-h-0 flex-1 flex-col`,children:(0,H.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-3 pt-0`,children:(0,H.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto pr-2`,children:(0,H.jsxs)(`div`,{className:`flex flex-col gap-2 pb-1 pt-0.5`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,H.jsxs)(E,{variant:`outline`,className:`font-mono text-xs`,children:[f.topology.length,` areas`]}),(0,H.jsxs)(E,{variant:`outline`,className:`font-mono text-xs`,children:[f.assetCount,` assets`]}),(0,H.jsxs)(E,{variant:`outline`,className:`font-mono text-xs`,children:[f.models.length,` models`]}),_!==null&&(0,H.jsxs)(E,{variant:`outline`,className:`font-mono text-xs`,children:[_,` tags`]}),f.settings?.tickIntervalMs&&(0,H.jsxs)(E,{variant:`outline`,className:`font-mono text-xs`,children:[`tick `,f.settings.tickIntervalMs,`ms`]}),f.settings?.timeMultiplier&&f.settings.timeMultiplier!==1&&(0,H.jsxs)(E,{variant:`outline`,className:`font-mono text-xs`,children:[f.settings.timeMultiplier,`× speed`]})]}),f.namespace&&(f.namespace.enterprise||f.namespace.site||f.namespace.prefix)&&(0,H.jsxs)(`div`,{className:`min-w-0 overflow-hidden rounded-[var(--miravo-radius-tight)] border border-border/60 px-2.5 py-2`,children:[(0,H.jsx)(`h3`,{className:`font-heading text-xs font-semibold uppercase tracking-[0.12em] text-primary`,children:`Namespace`}),(0,H.jsxs)(`dl`,{className:`mt-1 grid grid-cols-1 gap-x-4 gap-y-1.5 sm:grid-cols-2`,children:[f.namespace.enterprise&&(0,H.jsxs)(`div`,{className:`min-w-0 sm:max-w-[min(100%,16rem)]`,children:[(0,H.jsx)(`dt`,{className:`font-heading text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground`,children:`Enterprise`}),(0,H.jsx)(`dd`,{className:`mt-1 font-mono text-xs leading-snug text-foreground [overflow-wrap:anywhere] break-words`,children:f.namespace.enterprise})]}),f.namespace.site&&(0,H.jsxs)(`div`,{className:`min-w-0 sm:max-w-[min(100%,16rem)]`,children:[(0,H.jsx)(`dt`,{className:`font-heading text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground`,children:`Site`}),(0,H.jsx)(`dd`,{className:`mt-1 font-mono text-xs leading-snug text-foreground [overflow-wrap:anywhere] break-words`,children:f.namespace.site})]}),f.namespace.prefix&&(0,H.jsxs)(`div`,{className:`min-w-0 sm:col-span-2`,children:[(0,H.jsx)(`dt`,{className:`font-heading text-xs font-medium uppercase tracking-[0.12em] text-muted-foreground`,children:`Prefix`}),(0,H.jsx)(`dd`,{className:`mt-1 font-mono text-xs leading-snug text-foreground [overflow-wrap:anywhere] break-words`,children:f.namespace.prefix})]})]})]}),f.topology.map(e=>(0,H.jsx)(ae,{area:e,expanded:l.has(e.name),onToggle:()=>O(e.name)},e.name)),f.settings&&(0,H.jsxs)(`div`,{className:`rounded-[var(--miravo-radius-tight)] border border-border/50 p-2`,children:[(0,H.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-1.5 font-heading text-xs font-semibold uppercase tracking-[0.12em] text-warning`,children:[(0,H.jsx)(x,{className:`size-3.5`,"aria-hidden":!0}),(0,H.jsx)(`span`,{children:`Settings`})]}),(0,H.jsxs)(`div`,{className:`grid grid-cols-1 gap-1.5 font-mono text-xs sm:grid-cols-2`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col`,children:[(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`tick interval`}),(0,H.jsxs)(`span`,{className:`text-foreground`,children:[f.settings.tickIntervalMs??1e3,`ms`]})]}),(0,H.jsxs)(`div`,{className:`flex flex-col`,children:[(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:`time multiplier`}),(0,H.jsxs)(`span`,{className:`text-foreground`,children:[f.settings.timeMultiplier??1,`×`]})]})]})]})]})})})}),(0,H.jsx)(A,{value:`uns`,keepMounted:!0,className:`flex min-h-0 flex-1 flex-col`,children:(0,H.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-3 pt-0`,children:(0,H.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto pr-2`,children:(0,H.jsx)(`div`,{className:`pb-1 pt-0.5`,children:(0,H.jsx)(Z,{detail:f})})})})}),(0,H.jsx)(A,{value:`export`,keepMounted:!0,className:`flex min-h-0 flex-1 flex-col`,children:(0,H.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-3 pt-0`,children:(0,H.jsx)(w,{kind:`template`,id:f.id,yamlPath:`/catalog/templates/${f.id}/yaml`,yamlFilename:`${f.id}.miravo.yaml`})})})]})]},f.id):(0,H.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-sm text-muted-foreground`,children:`Template not found`})})})}function ae({area:e,expanded:t,onToggle:n}){let r=ne(e);return(0,H.jsxs)(`div`,{className:O,children:[(0,H.jsxs)(`button`,{type:`button`,className:`flex min-h-11 w-full items-center gap-1.5 px-2.5 py-2 text-left text-xs font-medium transition-colors hover:bg-muted/30 touch-manipulation sm:min-h-0 sm:py-1.5`,onClick:n,children:[(0,H.jsx)(F,{className:`size-3.5 text-primary`}),(0,H.jsx)(`span`,{className:`uppercase tracking-wider text-primary`,children:u(e.name)}),(0,H.jsxs)(`div`,{className:`ml-auto flex items-center gap-1.5`,children:[(0,H.jsxs)(E,{variant:`secondary`,className:`text-xs`,children:[r,` assets`]}),(0,H.jsxs)(E,{variant:`secondary`,className:`text-xs`,children:[e.lines.length,` lines`]}),(0,H.jsx)(m,{className:`size-3 text-muted-foreground transition-transform ${t?`rotate-180`:``}`})]})]}),(0,H.jsx)(c,{initial:!1,children:t&&(0,H.jsx)(s.div,{initial:{height:0,opacity:0},animate:{height:`auto`,opacity:1},exit:{height:0,opacity:0},transition:{duration:.2,ease:`easeOut`},className:`overflow-hidden`,children:(0,H.jsx)(`div`,{className:`flex flex-col gap-1.5 border-t border-border p-2`,children:e.lines.map(e=>(0,H.jsx)(oe,{line:e},e.name))})},`content`)})]})}function oe({line:e}){return(0,H.jsxs)(`div`,{className:`rounded-[var(--miravo-radius-tight)] border border-border/60 bg-muted/10 p-2`,children:[(0,H.jsxs)(`div`,{className:`mb-1.5 flex items-center gap-1.5 text-xs font-medium text-muted-foreground`,children:[(0,H.jsx)(R,{className:`size-3.5`}),(0,H.jsx)(`span`,{title:e.name,children:u(e.name)}),(0,H.jsx)(I,{className:`ml-auto size-3.5 text-muted-foreground`}),(0,H.jsxs)(`span`,{className:`text-muted-foreground`,children:[e.assets.reduce((e,t)=>e+t.count,0),` assets`]})]}),(0,H.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:e.assets.map(e=>(0,H.jsx)(se,{assignment:e},`${e.model}-${e.count}`))})]})}function se({assignment:e}){let t=e.parameters&&Object.keys(e.parameters).length>0;return(0,H.jsxs)(`div`,{className:`rounded-[var(--miravo-radius-tight)] border border-border/30 bg-background/50 px-2.5 py-1.5`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs`,children:[(0,H.jsx)(`span`,{className:`font-mono font-medium text-primary`,title:e.model,children:u(e.model)}),(0,H.jsxs)(E,{variant:`secondary`,className:`shrink-0 px-1 py-0 text-xs`,children:[`×`,e.count]}),e.variation>0&&(0,H.jsxs)(`span`,{className:`text-muted-foreground`,children:[`±`,(e.variation*100).toFixed(0),`% variation`]})]}),t&&e.parameters&&(0,H.jsx)(`div`,{className:`mt-1.5 flex flex-wrap gap-x-4 gap-y-1 border-t border-border/20 pt-1.5 font-mono text-xs`,children:Object.entries(e.parameters).map(([e,t])=>(0,H.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(`span`,{className:`text-muted-foreground`,children:e}),(0,H.jsx)(`span`,{className:`text-foreground`,children:t})]},e))})]})}function ce({id:e,className:t}){let n=p(`shrink-0 text-primary`,t);switch(e){case`smart-factory`:return(0,H.jsx)(_,{className:n,"aria-hidden":!0});case`water-treatment`:return(0,H.jsx)(ee,{className:n,"aria-hidden":!0});case`commercial-building`:return(0,H.jsx)(P,{className:n,"aria-hidden":!0});case`backup-power`:return(0,H.jsx)(B,{className:n,"aria-hidden":!0});case`district-heating`:return(0,H.jsx)(z,{className:n,"aria-hidden":!0});case`pharma-cleanroom`:return(0,H.jsx)(te,{className:n,"aria-hidden":!0});default:return(0,H.jsx)(L,{className:n,"aria-hidden":!0})}}export{I as i,ie as n,B as r,ce as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./utils-XFKvwlFT.js";var t=e(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{_ as e,ot as t,v as n}from"./vendor-ui-D8j69UH4.js";import{t as r}from"./utils-XFKvwlFT.js";import{t as i}from"./check-B-yvIfMj.js";var a=t();function o({className:t,...o}){return(0,a.jsx)(n,{"data-slot":`checkbox`,className:r(`peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary bg-input/30 aria-invalid:border-destructive/50 aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground data-checked:bg-primary`,t),...o,children:(0,a.jsx)(e,{"data-slot":`checkbox-indicator`,className:`grid place-content-center text-current transition-none [&>svg]:size-3.5`,children:(0,a.jsx)(i,{})})})}export{o as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./utils-XFKvwlFT.js";var t=e(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./utils-XFKvwlFT.js";var t=e(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./utils-XFKvwlFT.js";var t=e(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{c as e,n as t,s as n}from"./dom-Cm_OH5jc.js";import{C as r,_ as i,c as a,d as o,g as s,h as c,s as l,w as u,y as d}from"./status-CZFZLqVk.js";var f=e=>[`${e}:suction`,`${e}:discharge`],p=[-148.4,-130,44];function m(e,t,n=!1){let r=f(t),{k:i,G:a,P:o,at:s,S:c,L:l,D:u,slab:d,cyl:m,hmi:h,screws:g,dial:_,faceRule:v}=e,y={x:-248,y:-164,w:92,d:58,r:3},b=[d({x:y.x+4,y:y.y+4,w:y.w-8,d:y.d-8,r:2},0,4,{tone:`lo`},3,0)],x=[];for(let e=8;e<=30;e+=4.4)x.push(i.pathOf(i.roundedPlan({x:y.x+6,y:e,w:38,d:1.6,r:.8},3).map(([e,t])=>s([e,y.y+y.d,t])),!0));let S=[];for(let e=y.y+5;e<=y.y+y.d-5;e+=2.2)S.push(i.segment([y.x+y.w,e,6],[y.x+y.w,e,26],o));let C=l(i.sideSeam(y,26,o,4),{tone:`faint`})+l(i.sideSeam(y,6,o,4),{tone:`faint`})+l(x.join(``),{tone:`lo`})+l(S.join(``),{tone:`faint`});b.push(c(i.slabOf(y,4,46,o,4,1),{tone:`mid`,inner:C}));for(let e of[y.x+24,y.x+68])b.push(m(e,y.y+29,15,50,2.4,{tone:`mid`},56)),b.push(l(i.ring(e,y.y+29,13,52.4,o,56),{tone:`lo`})),b.push(`<path class="iso-line" data-tone="mid" data-fan="${e},${y.y+29},52.4,13" d=""/>`),b.push(l([5,9].map(t=>i.ring(e,y.y+29,t,52.4,o,32)).join(``),{tone:`faint`})),b.push(l(i.ring(e,y.y+29,2.4,52.4,o,16),{tone:`mid`})),b.push(`<path class="sf-grime" data-foul="" style="opacity:0" d="${i.pathOf(i.circleRing(e,y.y+29,12.6,40).map(([e,t])=>s([e,t,52.6])),!0)}"/>`),b.push(g([0,1,2,3].map(t=>[e+Math.cos(t*1.571+.785)*14,y.y+29+Math.sin(t*1.571+.785)*14]),52.4));for(let[e,t]of r.entries())b.push(_(t,y.x+(e?60:50),y.y+y.d-6,50,3.6));b.push(h(t,y.y+y.d,y.x+50,y.x+86,9,31)),b.push(v(y.y+y.d,y.x+50,34,22,6)),b.push(g(i.corners(y,3),50)),b.push(`<path class="iso-line" data-chiller="${y.x+50},${y.y+52},54" d=""/>`);for(let e of n?[y.x+12]:[y.x+12,y.x+26]){let t=a.frameAlong([e,y.y+y.d,40],[0,1,0]);b.push(c(a.disc(0,6,3,t,o),{tone:`mid`}),c(a.disc(6,7.6,4.4,t,o),{tone:`mid`})),b.push(u(a.dotsOf(t,7.6,3.5,4,o,{all:!0,phase:.785}),{size:.35}))}if(n){let[,e,t]=p,n=a.frameAlong([y.x+y.w,e,t],[1,0,0]);b.push(c(a.disc(0,6,3,n,o),{tone:`mid`}),c(a.disc(6,7.6,4.4,n,o),{tone:`mid`}),u(a.dotsOf(n,7.6,3.5,4,o,{all:!0,phase:.785}),{size:.35}))}return b.join(``)}var h=10,g=25;function _(f,p){let{svg:m,P:_,feed:v}=f,y=(e,t)=>v.num(e,t),b=t(m,`[data-chiller]`).map(e=>{let i=l(e),o=e=>t(m,`[data-asset="${i}"] ${e}`);return{id:i,leak:a(e.dataset.chiller),fans:o(`[data-fan]`).map(e=>({el:e,at:n(e.dataset.fan)})),foul:o(`[data-foul]`),hiss:d(r(m,i),`frost`),rate:0,fan:0}}),x=new Map(b.map(e=>[e.id,e]));return{draw(t,n,r){let a=f.reducedMotion();for(let s of b){s.rate=i(s.rate,y(s.id,`condenser_fan_tag`),t,1.2,a),a||(s.fan+=s.rate*1.4*c*t);for(let{el:t,at:n}of s.fans)e(t,`d`,o(_,n,s.fan));let l=e=>r&&u(v,s.id,e);s.hiss.draw(l(`refrigerant_leak`)&&!a,n,_,s.leak,[.2,1]);let d=l(`dirty_condenser`)?`1`:`0`;for(let e of s.foul)e.style.opacity=d;p(s.id,a?0:l(`compressor_seizure`)?.5:l(`compressor_failure`)?.25:0,n)}},bar(e){return x.has(e)?s(y(e,`cooling_load_pu`)):void 0},needle(e){let[t=``,n]=e.split(`:`);if(x.has(t))return n===`suction`?y(t,`refrigerant_pressure_suction`)/h:y(t,`refrigerant_pressure_discharge`)/g}}}export{p as n,m as r,_ as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./utils-XFKvwlFT.js";var t=e(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),n=e(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]);export{t as n,n as t};
@@ -0,0 +1 @@
1
+ import"./rolldown-runtime-COnpUsM8.js";import{c as e}from"./vendor-charts-95ykyDlI.js";import{C as t,E as n,S as r,T as i,b as a,g as o,h as s,ot as c,w as l,x as u,y as d}from"./vendor-ui-D8j69UH4.js";import{C as f,E as p,S as m,T as h}from"./format-Bx7DF-TB.js";import{t as g}from"./utils-XFKvwlFT.js";import{t as _}from"./check-B-yvIfMj.js";import{t as v}from"./chevron-down-x70Pto6j.js";var y=c();function b({className:e,size:t=`default`,...n}){return(0,y.jsx)(`div`,{"data-slot":`card`,"data-size":t,className:g(`group/card flex flex-col gap-4 overflow-hidden rounded-[var(--miravo-radius-stadium-sm)] border bg-card py-4 text-sm text-card-foreground has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-[var(--miravo-radius-stadium-sm)] *:[img:last-child]:rounded-b-[var(--miravo-radius-stadium-sm)]`,e),...n})}function x({className:e,...t}){return(0,y.jsx)(`div`,{"data-slot":`card-header`,className:g(`group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-[var(--miravo-radius-stadium-sm)] px-4 group-data-[size=sm]/card:px-3 has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3`,e),...t})}function S({className:e,...t}){return(0,y.jsx)(`div`,{"data-slot":`card-title`,className:g(`text-base leading-snug font-medium group-data-[size=sm]/card:text-sm`,e),...t})}function C({className:e,...t}){return(0,y.jsx)(`div`,{"data-slot":`card-content`,className:g(`px-4 group-data-[size=sm]/card:px-3`,e),...t})}e();function w({className:e,...t}){return(0,y.jsx)(`div`,{"data-slot":`input-group`,role:`group`,className:g(`group/input-group relative flex h-8 w-full min-w-0 items-center gap-1.5 rounded-[var(--miravo-radius-stadium-sm)] border border-input bg-input/30 transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 hover:bg-input/50 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-primary/35 has-[[data-slot=input-group-control]:focus-visible]:ring-2 has-[[data-slot=input-group-control]:focus-visible]:ring-primary/22 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5`,e),...t})}var T=p(`flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-xs font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4`,{variants:{align:{"inline-start":`order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]`,"inline-end":`order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]`,"block-start":`order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2`,"block-end":`order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2`}},defaultVariants:{align:`inline-start`}});function E({className:e,align:t=`inline-start`,...n}){return(0,y.jsx)(`div`,{role:`group`,"data-slot":`input-group-addon`,"data-align":t,className:g(T({align:t}),e),onClick:e=>{e.target.closest(`button`)||e.currentTarget.parentElement?.querySelector(`input`)?.focus()},...n})}var D=p(`flex items-center gap-2 text-xs shadow-none`,{variants:{size:{xs:`h-6 gap-1 rounded-[var(--miravo-radius-stadium-sm)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5`,sm:``,"icon-xs":`size-6 rounded-[var(--miravo-radius-stadium-sm)] p-0 has-[>svg]:p-0`,"icon-sm":`size-8 p-0 has-[>svg]:p-0`}},defaultVariants:{size:`xs`}});function O({className:e,type:t=`button`,variant:n=`ghost`,size:r=`xs`,...i}){return(0,y.jsx)(f,{type:t,"data-size":r,variant:n,className:g(D({size:r}),e),...i})}function k({className:e,...t}){return(0,y.jsx)(m,{"data-slot":`input-group-control`,className:g(`min-w-0 flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 hover:bg-transparent disabled:bg-transparent aria-invalid:ring-0 dark:hover:bg-transparent dark:disabled:bg-transparent`,e),...t})}var A=o;function j({className:e,children:t,...r}){return(0,y.jsxs)(n,{"data-slot":`combobox-trigger`,className:g(`[&_svg:not([class*='size-'])]:size-4`,e),...r,children:[t,(0,y.jsx)(v,{className:`pointer-events-none size-4 text-muted-foreground`})]})}function M({className:e,...t}){return(0,y.jsx)(l,{"data-slot":`combobox-clear`,render:(0,y.jsx)(O,{variant:`ghost`,size:`icon-xs`,"aria-label":`Clear selection`}),className:g(e),...t,children:(0,y.jsx)(h,{className:`pointer-events-none`})})}function N({className:e,children:t,disabled:n=!1,showTrigger:r=!0,showClear:a=!1,...o}){return(0,y.jsxs)(w,{className:g(`w-auto`,e),children:[(0,y.jsx)(i,{render:(0,y.jsx)(k,{disabled:n}),...o}),(0,y.jsxs)(E,{align:`inline-end`,children:[r&&(0,y.jsx)(O,{size:`icon-xs`,variant:`ghost`,render:(0,y.jsx)(j,{}),"data-slot":`input-group-button`,className:`group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent`,disabled:n,"aria-label":`Toggle options`}),a&&(0,y.jsx)(M,{disabled:n})]}),t]})}function P({className:e,side:t=`bottom`,sideOffset:n=6,align:i=`start`,alignOffset:o=0,anchor:s,...c}){return(0,y.jsx)(r,{children:(0,y.jsx)(u,{side:t,sideOffset:n,align:i,alignOffset:o,anchor:s,className:`isolate z-50`,children:(0,y.jsx)(a,{"data-slot":`combobox-content`,"data-chips":!!s,className:g(`group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-[var(--miravo-radius-tight)] bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) 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=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none 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 motion-reduce:data-open:animate-none motion-reduce:data-closed:animate-none motion-reduce:data-open:duration-0 motion-reduce:data-closed:duration-0`,e),...c})})})}function F({className:e,...n}){return(0,y.jsx)(t,{"data-slot":`combobox-list`,className:g(`no-scrollbar max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto overscroll-contain p-1 data-empty:p-0`,e),...n})}function I({className:e,children:t,...n}){return(0,y.jsxs)(d,{"data-slot":`combobox-item`,className:g(`relative flex w-full cursor-pointer items-center gap-1.5 rounded-[var(--miravo-radius-tight)] py-1 pr-8 pl-1.5 text-xs outline-hidden select-none data-[highlighted]:bg-sidebar-accent data-[highlighted]:text-sidebar-accent-foreground not-data-[variant=destructive]:data-[highlighted]:**:text-sidebar-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,e),...n,children:[t,(0,y.jsx)(s,{render:(0,y.jsx)(`span`,{className:`pointer-events-none absolute right-2 flex size-4 items-center justify-center`}),children:(0,y.jsx)(_,{className:`pointer-events-none`})})]})}export{F as a,x as c,I as i,S as l,P as n,b as o,N as r,C as s,A 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}from"./dom-Cm_OH5jc.js";import{n as p,t as m}from"./by-path-VBqTBdlG.js";import{A as h,D as g,E as _,F as v,H as ee,L as te,N as ne,P as re,T as ie,V as ae,X as oe,a as se,b as ce,g as le,i as ue,j as de,k as fe,n as pe,o as me,r as he,s as ge,t as _e}from"./status-CZFZLqVk.js";import{r as ve,t as ye}from"./chiller-BSx8eUMN.js";import{n as be,o as xe,s as Se,t as Ce}from"./genset-BRgqR1AT.js";import{t as we}from"./stages-hidkaJPI.js";import{a as Te,i as Ee,n as De,o as Oe,s as ke,t as Ae}from"./rtu-D-1lltcO.js";import{a as je,i as Me,n as Ne,o as Pe,r as Fe,t as Ie}from"./boiler-CWAR1Nq2.js";var Le=[[`rtu1`,`hvac-rtu`,`hvac`,`floor-1`,0],[`rtu2`,`hvac-rtu`,`hvac`,`floor-2`,0],[`rtu3`,`hvac-rtu`,`hvac`,`floor-3`,0],[`chiller`,`industrial-chiller`,`chilled-water`,`plant`,0],[`chwPump`,`centrifugal-pump`,`chilled-water`,`plant`,0],[`boiler`,`hot-water-boiler`,`heating`,`boiler-room`,0],[`hwPump`,`centrifugal-pump`,`heating`,`boiler-room`,0],[`fanA`,`ac-induction-motor`,`electrical`,`ahu-fans`,0],[`fanB`,`ac-induction-motor`,`electrical`,`ahu-fans`,1],[`genset`,`diesel-generator`,`electrical`,`emergency-power`,0]],Re=e=>m(Le,e);function ze(e){let t=(e,t,n)=>({key:e,assetId:e,name:t,kind:`utility`,area:n});return[t(e.rtu1,`Rooftop unit · floor 1`,`HVAC`),t(e.rtu2,`Rooftop unit · floor 2`,`HVAC`),t(e.rtu3,`Rooftop unit · floor 3`,`HVAC`),t(e.chiller,`Chiller`,`Chilled water`),t(e.chwPump,`Chilled-water pump`,`Chilled water`),t(e.boiler,`Hot-water boiler`,`Heating`),t(e.hwPump,`Heating circulation pump`,`Heating`),t(e.fanA,`AHU supply fan 1`,`Electrical`),t(e.fanB,`AHU supply fan 2`,`Electrical`),t(e.genset,`Emergency generator`,`Electrical`)]}var y=e(t(),1),b={x:-332,y:-228,w:232,d:74,r:2},Be=29,x=1,Ve={x:-86,y:-192,w:44,d:36,r:1.5},S={x:-79,y:-184,w:30,d:20,r:1.5},C=26,He=-150;function Ue(e){let{k:t,P:n,L:r,slab:i,cyl:a}=e,o=[];for(let e=b.x+Be;e<b.x+b.w-1;e+=Be)o.push(t.segment([e,b.y,x],[e,b.y+b.d,x],n));for(let e=b.y+Be;e<b.y+b.d-1;e+=Be)o.push(t.segment([b.x,e,x],[b.x+b.w,e,x],n));let s=[i(b,0,x,{tone:`mid`,inner:r(o.join(``),{tone:`faint`})},3,.3)];for(let e of[-322,-124])s.push(i({x:e,y:-216,w:22,d:10,r:1},x,5,{tone:`mid`},2,.3),i({x:e+1.6,y:-214.4,w:18.8,d:6.8,r:.6},x+5,.6,{tone:`lo`},2,0));for(let e=-316;e<b.x+b.w-8;e+=46)s.push(a(e,b.y+b.d-4,1.3,x,7,{tone:`mid`},12));return s.join(``)}function We(e,t){let{k:n,P:r,L:i,slab:a}=e,o=Ve.x+Ve.w,s=[];for(let e=o+12;e<t-4;e+=12)s.push(n.segment([e,He-3,.6],[e,He+3,.6],r));return a({x:o,y:He-3.5,w:t-o,d:7,r:.4},0,.6,{tone:`mid`,inner:i(s.join(``),{tone:`faint`})},2,.1)}function Ge(e){let{k:t,P:n,L:r,slab:i,cyl:a}=e,{x:o,y:s,w:c,d:l}=S,u=1.5,d=[];for(let e=1;e<12;e++)d.push(t.segment([o+3+e*2,s+l+5,u+4],[o+3+e*2,s+l+5,C-4],n));let f=[i(Ve,0,u,{tone:`mid`},3,.3),i(S,u,C,{tone:`mid`},2,.5),i({x:o+3,y:s+l,w:c-6,d:5,r:.6},u+3,C-7,{tone:`mid`,inner:r(d.join(``),{tone:`faint`})},2,.2),i({x:o-.8,y:s-.8,w:c+1.6,d:l+1.6,r:1.5},u+C,1.4,{tone:`mid`},2,.2)];for(let e of[o+7,o+15,o+23])f.push(a(e,s+5,1.4,u+C+1.4,7,{tone:`mid`},12),a(e,s+5,2.2,u+C+1.4,1.4,{tone:`mid`},12));for(let e of[s+5,s+10,s+15])f.push(a(o+c-3,e,1,u+C+1.4,3,{tone:`lo`},10));return f.join(``)}function Ke(e,t,n=1.6){let{k:r,P:i,L:a,slab:o,screws:s}=e;return o(t,0,n,{tone:`mid`},3,.4)+a(r.planOutline(r.insetPlan(t,3),n,i,3),{tone:`faint`})+s(r.corners(t,4),n)}function w(e,t,n,r,{louvres:i=[],doors:a=[]}={}){let{k:o,P:s,L:c,slab:l}=e,u=[l(t,0,n,{tone:`mid`},2,.3),l({x:t.x-.6,y:t.y-.6,w:t.w+1.2,d:t.d+1.2,r:.3},n,1.4,{tone:`mid`},2,.2)],d=r===`south`?e.front(t.y+t.d):o.sideMatrix([t.x+t.w,t.y+t.d],0,s,`right`),f=[];for(let[e,t]of i){let[r,i]=[e,t];f.push(`<path class="cr-grille" d="M${r} ${-(n-9)}H${i}V-13H${r}Z"/>`);let a=[];for(let e=16;e<n-9;e+=3)a.push(`M${r+1} ${-e}H${i-1}`);f.push(c(a.join(``),{tone:`lo`}))}for(let[e,t]of a){let[r,i]=[e,t];f.push(`<path class="cr-door" d="M${r} -1H${i}V${-(n-16)}H${r}Z"/>`),f.push(c(`M${r-1.2} 0V${-(n-14.8)}H${i+1.2}V0M${r-1.2} -1H${i+1.2}`,{tone:`lo`})),f.push(`<circle class="sf-screw" cx="${i-2.4}" cy="${-(n/2-4)}" r="0.7"/>`)}return f.length&&u.push(`<g transform="${d}">${f.join(``)}</g>`),u.join(``)}function qe(e,t,n,r){let{k:i,P:a,L:o,slab:s,screws:c}=e,l=t.x+t.w,u=[w(e,t,n,`south`,{doors:[[t.x+8,t.x+22]],louvres:[[t.x+30,t.x+46]]})];u.push(s({x:t.x+t.w-18,y:t.y+8,w:10,d:8,r:.8},n+1.4,4,{tone:`mid`},2,.3));let d=i.sideMatrix([l,t.y+t.d],0,a,`right`),f=t.y+t.d-r.y;return u.push(`<g transform="${d}"><path class="sf-plate" d="M${f-7} ${-(r.z+7)}H${f+7}V${-(r.z-7)}H${f-7}Z"/>${o(`M${f-7} ${-(r.z+7)}H${f+7}V${-(r.z-7)}H${f-7}Z`,{tone:`lo`})}</g>`,c([[l+.05,r.y-5.6],[l+.05,r.y+5.6]],r.z+5.6),c([[l+.05,r.y-5.6],[l+.05,r.y+5.6]],r.z-5.6)),u.join(``)}function Je(e,[t,n],r,i,a,o){let{k:s,P:c,L:l,slab:u,cyl:d}=e,f=[],p=[];for(let e=i+48;e<a-12;e+=48)p.push(e);let m=p.map(e=>s.sideArc(t,n,r,e,c,24)).join(``);f.push(d(t,n,r,i,a-i,{tone:`mid`,inner:l(m,{tone:`faint`})},28));for(let e of p)f.push(d(t,n,r+1.2,e-.8,1.6,{tone:`mid`},28));for(let e of o)f.push(u({x:e.toX,y:n-.9,w:t-r-e.toX,d:1.8,r:.3},e.z-.9,1.8,{tone:`mid`},2,.1),u({x:e.toX-1.2,y:n-3.5,w:1.2,d:7,r:.3},e.z-3.5,7,{tone:`mid`},2,.1),d(t,n,r+.9,e.z-1.1,2.2,{tone:`mid`},28));for(let e of[0,2.1,4.2])f.push(d(t+Math.cos(e)*(r-1.4),n+Math.sin(e)*(r-1.4),.5,a,3,{tone:`lo`,crease:`none`},8));return f.push(d(t,n,r+2.2,a+3,1.2,{tone:`mid`},28)),f.join(``)}var T={x:-300,y:-268,w:290,d:32,r:.6},E=[4,64,124],D=3,Ye=6,O={x:-334,y:-268,w:34,d:32,r:.6},k=e=>(E[e+1]??184)-4,Xe={x:O.x-3,y:T.y-3,w:T.w+O.w+3+7,d:T.d+3+8,r:1.5},A={x:T.x+D,y:T.y+D,w:T.w-D,d:T.d-D,r:0},Ze=A.x+A.w,Qe=A.y+A.d,$e=[-247,-185,-123,-61,-13],et=2.2,j=2.6,M=E[0],N=-247,tt=-255,nt=11,rt=e=>k(e)-nt,it=[-246,-162,-78],at=-251,ot=.8,st=[46*ot,20*ot],ct=e=>[(it[e]??0)-9,(it[e]??0)+9],lt=e=>{let[t,n]=ct(e);return{x:t-5,y:tt-4.5,w:n-t+10,d:9,r:.3}},ut=e=>it.map((e,t)=>t).filter(t=>t<e),dt=4,P=1.6,ft=.6;function pt(e){let{k:t,P:n,L:r,slab:i}=e;return i(Xe,0,M,{tone:`mid`,inner:r(t.planOutline({x:T.x-.5,y:T.y-.5,w:T.w+1,d:T.d+1,r:0},M,n,2),{tone:`faint`})},4,.5)}function mt(e){let{k:t,P:n,L:r,S:i}=e,a=184+Ye-M,o=(e,r,i)=>t.segment([r[0],r[1],E[e]??0],[i[0],i[1],E[e]??0],n),s={x:T.x,y:T.y,w:T.w,d:D,r:.3},c={x:T.x,y:T.y+D,w:D,d:T.d-D,r:.3};return[i(t.slabOf(s,M,a,n,2,.3),{tone:`mid`,inner:r([1,2].map(e=>o(e,[s.x,s.y+s.d],[s.x+s.w,s.y+s.d])).join(``),{tone:`faint`})}),i(t.slabOf(c,M,a,n,2,.3),{tone:`mid`}),ht(e)].join(``)}function ht(e){let{k:t,P:n,L:r,S:i,front:a}=e,o=O.y+O.d,s=O.x+O.w/2,c=[],l=[];for(let[e,t]of E.entries()){for(let e of[s-8,s+.4])c.push(`<path class="cr-door" d="M${e} ${-(t+1)}h7.6v-23h-7.6Z"/>`);l.push(`M${s-9} ${-t}V${-(t+25)}H${s+9}V${-t}`),c.push(`<path class="cr-grille" d="M${s-2.4} ${-(t+28)}h4.8v-2.4h-4.8Z"/>`),e<E.length-1&&l.push(`M${O.x} ${-(k(e)+4)}H${O.x+O.w}`)}return i(t.slabOf(O,M,184-M,n,2,.4),{tone:`mid`})+`<g transform="${a(o)}">${c.join(``)}${r(l.join(``),{tone:`lo`})}</g>`}var gt=Array.from({length:6},(e,t)=>[-284+t*36,-284+t*36+32]),_t=21,vt=8;function yt(e,t){let{k:n,P:r,L:i,front:a}=e,o=(E[t]??0)+_t,s=k(t)-vt,c=(e,n)=>`<path class="bd-win bt-pane" data-occ="${t}" d="M${e} ${-s}H${n}V${-o}H${e}Z"/>`,l=(e,t)=>`M${e-1} ${-(o-1.6)}H${t+1}M${(e+t)/2} ${-s}V${-o}`,u=gt.map(([e,t])=>c(e,t)).join(``),d=gt.map(([e,t])=>l(e,t)).join(``),f=n.sideMatrix([T.x+D,T.y+T.d],0,r,`right`);return`<g transform="${a(T.y+D)}">${u}${i(d,{tone:`lo`})}</g><g transform="${f}">${c(4,20)}${i(l(4,20),{tone:`lo`})}</g>`}function bt(e,t){let{k:n,P:r,L:i,slab:a}=e,o=(E[t]??0)-4,s=[a(A,o,4,{tone:`mid`,inner:i(n.segment([A.x,A.y+A.d,o+1.4],[A.x+A.w,A.y+A.d,o+1.4],r),{tone:`faint`})},2,.4)],c=E[t]??0;for(let e of ut(t)){let t=lt(e);s.push(a({...t,d:P},c,dt,{tone:`mid`},2,.2),a({...t,w:P},c,dt,{tone:`mid`},2,.2))}return s.join(``)}function xt(e,t,n,r){let{cyl:i}=e,a=lt(t),o=(E[n]??0)+dt,s=r===`back`?a.y+ft+.4:a.y+a.d-ft-.4;return[a.x+.8,a.x+a.w-.8].map(e=>i(e,s,ft,o,k(n)-o,{tone:`mid`,crease:`none`},8))}function St(e,t){return ut(t).flatMap(n=>xt(e,n,t,`back`)).join(``)}function Ct(e,t){let{cyl:n,slab:r}=e,i=E[t]??0,a=k(t)-i,o=Qe-j,s=$e.map(e=>n(e,o,et,i,a,{tone:`mid`},14));s.push(n(Ze-j,-251,et,i,a,{tone:`mid`},14));for(let n of ut(t)){let a=lt(n);s.push(r({...a,y:a.y+a.d-P,d:P},i,dt,{tone:`mid`},2,.2),r({...a,x:a.x+a.w-P,w:P},i,dt,{tone:`mid`},2,.2),...xt(e,n,t,`front`))}return s.join(``)}function wt(e){let{k:t,P:n,L:r,S:i,slab:a}=e,o=[.25,.5,.75].map(e=>t.segment([A.x+A.w*e,A.y,184],[A.x+A.w*e,A.y+A.d,184],n)).join(``),s=A.y+A.d,c=A.x+A.w;return[i(t.slabOf(A,180,4,n,2,.4),{tone:`mid`,inner:r(o,{tone:`faint`})}),a({x:A.x,y:s-j,w:A.w,d:j,r:.3},184,Ye-1,{tone:`mid`},2,.3),a({x:c-j,y:A.y,w:j,d:A.d-j,r:.3},184,Ye-1,{tone:`mid`},2,.3),...it.map(e=>a({x:e-st[0]-1.5,y:at-st[1]-1.5,w:st[0]*2+3,d:st[1]*2+3,r:.6},184,3,{tone:`mid`},2,.2)),a({x:O.x+4,y:O.y+8,w:O.w-8,d:O.d-16,r:.6},184,14,{tone:`mid`},2,.3)].join(``)}var Tt={w:16,d:10,h:4},Et=18,Dt=1.8,Ot=[[-190,-100],[-120,-65],[-120,-204]],F={x:-24,y:N,w:16,d:14,h:12,top:32},kt={w:10,d:8,h:4},At=-262,I=-264.4,jt=5.5,Mt=1.5,Nt=1.1,Pt=[-282,-246,-210,-174,-138,-102],Ft=8.5,It=-292,Lt=(e,t)=>[e,N,k(t)-Et+Dt],Rt=[F.x,F.y,F.top+Dt],zt=e=>[ct(e)[1],tt,k(e)-Et+Dt];function Bt(e,t,n,r,i,a,o,s,c){let{k:l,P:u,L:d,D:f,slab:p,cyl:m,at:h}=e,g=o-a,_=[[t-r/2+1.5,n-i/2+1.5],[t+r/2-1.5,n-i/2+1.5],[t-r/2+1.5,n+i/2-1.5],[t+r/2-1.5,n+i/2-1.5]].map(([e=0,t=0])=>m(e,t,.5,o,s-o,{tone:`lo`,crease:`none`},8)),v=[.3,.55,.8].map(e=>l.segment([t-r/2+1.5,n+i/2,g+a*e],[t+r/2-1.5,n+i/2,g+a*e],u)).join(``),ee=[];for(let e=0;e<6;e++)ee.push([t-r/2+2+e*(r-4)/5,n+i/2,g+1.2]);return[..._,p({x:t-r/2,y:n-i/2,w:r,d:i,r:.8},g,a,{tone:`mid`,inner:d(v,{tone:`faint`})},2,.3),m(t,n,Math.min(5.2,i/2-1.2),o,Dt,{tone:`mid`},24),f(ee.map(e=>h(e)),{size:.3}),c?`<g data-diffuser="${t},${n},${g},${r/2}"></g>`:``].join(``)}var Vt=(e,t,n)=>Bt(e,t,N,Tt.w,Tt.d,Tt.h,k(n)-Et,k(n),!0),Ht=e=>Bt(e,F.x,F.y,F.w,F.d,F.h,F.top,k(0),!0),Ut=(e,t)=>Bt(e,ct(t)[1],tt,kt.w,kt.d,kt.h,k(t)-Et,k(t),!1);function Wt(e,t,n){let{k:r,P:i,L:a,slab:o}=e,s=n+11,c=s+Ft,l=-265,u=Array.from({length:7},(e,n)=>r.segment([t+3.5+n*3.5,l+3.6,s+1],[t+3.5+n*3.5,l+3.6,c-1],i)).join(``);return[...[t+5,t+28-5].map(e=>o({x:e-1,y:-265,w:2,d:.9,r:.2},s+2,4,{tone:`lo`},2,0)),o({x:t,y:l,w:28,d:3.6,r:.5},s,Ft,{tone:`mid`,inner:a(u,{tone:`faint`})},2,.3)].join(``)}function Gt(e,t,n){let{G:r,P:i,S:a}=e,o=r.frameAlong([It,t,n],[-1,0,0]);return a(r.disc(0,1.4,Nt+.7,o,i),{tone:`mid`})}function Kt(e,t,n,r,i){let{slab:a,cyl:o,front:s}=e,c=r+8,l=[a({x:t+.8,y:n+.6,w:1.2,d:6.8,r:.2},r,8,{tone:`lo`},2,0),a({x:t+22-2,y:n+.6,w:1.2,d:6.8,r:.2},r,8,{tone:`lo`},2,0),a({x:t,y:n,w:22,d:8,r:.6},c,1.4,{tone:`mid`},2,.3),o(t+22/2,n+8*.4,1.1,c+1.4,2.4,{tone:`lo`,crease:`none`},10),a({x:t+22/2-4.2,y:n+8*.4-.5,w:8.4,d:1,r:.3},c+3.8,5.4,{tone:`lo`},2,0)],u=n+8*.4+.5;return l.push(`<g transform="${s(u)}"><path class="bd-win" data-occ="${i}" d="M${t+22/2-3.6} ${-(c+4.2)}h7.2v-4.4h-7.2Z"/></g>`),l.join(``)}function qt(e,t,n,r){let{slab:i,cyl:a}=e;return[a(t,n,3,r,.8,{tone:`lo`},14),a(t,n,.6,r+.8,3.6,{tone:`lo`,crease:`none`},8),a(t,n,3.2,r+4.4,1.4,{tone:`mid`},16),i({x:t-3,y:n+2.6,w:6,d:.9,r:.3},r+5.6,5.4,{tone:`mid`},2,.2)].join(``)}function Jt(e,t,n,r){let{slab:i}=e;return[Kt(e,t,-249,n,r),Kt(e,t+25,-249,n,r),i({x:t+22.6,y:-249.5,w:1,d:7,r:.2},n+1.2,12,{tone:`mid`},2,.2),qt(e,t+11,-239.6,n),qt(e,t+36,-239.6,n)].join(``)}function Yt(e,t){let{slab:n,cyl:r}=e,i=[],a=-250;i.push(n({x:a,y:-251,w:46,d:8,r:1},t,10,{tone:`mid`},3,.4),n({x:a+36,y:-243,w:10,d:7,r:1},t,10,{tone:`mid`},3,.4),n({x:a-.8,y:-251.8,w:47.6,d:9.6,r:1},t+10,1.4,{tone:`mid`},3,.2),n({x:a+35.2,y:-243.8,w:11.6,d:8.6,r:1},t+10,1.4,{tone:`mid`},3,.2));for(let e of[-170,-144])i.push(n({x:e,y:-250,w:20,d:6,r:.8},t+3.2,3,{tone:`mid`},2,.3),n({x:e,y:-252,w:20,d:2,r:.4},t+6.2,6,{tone:`mid`},2,.2),r(e+2.4,-245.4,.9,t,3.2,{tone:`lo`,crease:`none`},8),r(e+17.6,-245.4,.9,t,3.2,{tone:`lo`,crease:`none`},8));return i.join(``)}function Xt(e,t){let n=E[t]??0,r=Pt.map(t=>Wt(e,t,n));r.push(Gt(e,At,n+jt),Gt(e,I,n+Mt));let i=Ot[t]??[];r.push(St(e,t));for(let n of i)r.push(Vt(e,n,t));if(r.push(Ut(e,t)),t===0)r.push(Yt(e,n));else for(let a of i)r.push(Jt(e,a-23.5,n,t));return r.join(``)}var Zt=1e3,Qt={x:-352,y:-286,w:652,d:170,r:8},$t={x:-14,y:-516,w:314,d:220,r:8},en={x:-374,y:-538,w:690,d:444,r:16},tn=[34,-242],nn=a([...u(en,-21,-14),...u(Qt,-14,20),...u($t,-14,20),...u(Xe,0,214),...u({x:26,y:-250,w:16,d:16,r:0},0,244)],Zt,620,{pad:22,azimuth:60}),rn=-325,an=[70,205],on=Te(100,!0),sn=[-202,-135,0],cn=[-34,36.6,40],ln=[-20,36.6,40],un=[94,-130,0],L=[.55,.5],dn=-385,fn=-462,pn=(e,t)=>[(e[0]-un[0])*t,(e[1]-un[1])*t,e[2]*t],mn=e=>{let t=an[e],n=Oe(100,7),r=e=>[t+e[0],rn+e[1],e[2]];return{supply:r(n.chwSupply),ret:r(n.chwReturn),discharge:r(n.discharge)}},hn=[mn(0),mn(1)],R=[hn[0].supply[0]-ln[0],fn],z=[tn[0]-Me[0],tn[1]],gn=[z[0]+je[0],z[1]+je[1],je[2]],_n=[z[0]+Fe[0],z[1]+Fe[1],Fe[2]],vn=(e,t,n)=>[e-pn(h,L[n])[0],t],yn=[vn(R[0]+cn[0],dn,0),vn(_n[0],-204,1)],bn=(e,t)=>{let[n,r]=yn[e]??[0,0],[i,a,o]=pn(t,L[e]);return[n+i,r+a,o]},xn=[{suction:bn(0,re),riser:bn(0,h)},{suction:bn(1,re),riser:bn(1,h)}],Sn=[190,-150],B={x:24,y:-160,w:56,d:44,r:1},Cn={x:108,y:-192,w:164,d:72,r:2},wn={x:108,y:-194,w:164,d:3,r:.3},Tn={x:108,y:-194,w:3,d:76,r:.3},En=[-49,0,60.8],Dn={x:0,y:-272,w:252,d:76,r:2},On={x:2,y:-270,w:250,d:3,r:.3},kn={x:-10,y:-512,w:306,d:4,r:.3},An={x:-12,y:-512,w:4,d:214,r:.3},jn=we([...yn.map((e,t)=>({key:`pump${t}`,at:e,h:45*L[t]})),{key:`chiller`,at:R,h:56},{key:`boiler`,at:z,h:je[2]-8},{key:`flue`,at:tn,h:236},...an.map((e,t)=>({key:`ahu${t}`,at:[e,rn],h:36})),{key:`xfmr`,at:[S.x+S.w/2,S.y+S.d/2],h:36},{key:`genset`,at:Sn,h:126},{key:`elec`,at:[B.x+B.w/2,B.y+B.d/2],h:46},{key:`gen-back`,at:[wn.x+wn.w/2,wn.y],h:36},{key:`gen-west`,at:[Tn.x,Tn.y+Tn.d/2],h:36}],nn),Mn=jn.order,Nn=E.length,Pn=([e,t])=>e<14&&t>-269&&t<-232,Fn=([e,t])=>e<-8&&t<-269,In=([e,t])=>e<-8&&t<-256.5,Ln=e=>E.filter((t,n)=>n>0&&e>=t).length,Rn={layer:e=>Fn(e)?0:Pn(e)&&e[2]>=184?Nn+1:Pn(e)&&In(e)?zn+Ln(e[2]):Pn(e)?1+Ln(e[2]):Nn+1+jn.depth.layer(e),glide:()=>!0},zn=Nn+1+Mn.length+1,Bn={y:Sn[1],z:26};function Vn(e,t){return[e,...[...E].filter(n=>n>0&&n<e&&n>t).sort((e,t)=>t-e),t]}var Hn=3.2,Un=2.2,Wn=180;function Gn(e,t,n,r){let i=Vn(Wn,n);return i.slice(0,-1).map((n,a)=>{let o=[[t,tt,n],[t,tt,i[a+1]??0]];return a===i.length-2&&o.push(...r),{id:`${e}${a}`,medium:`duct`,r:Hn,bend:2,bare:[a===0,!1],pts:o}})}var Kn=[0,1,2].flatMap(e=>{let t=rt(e),[n,r]=ct(e),i=[...Ot[e]??[]].sort((e,t)=>Math.abs(e-n)-Math.abs(t-n)),a=i[i.length-1]??n,o=i.slice(0,-1).map((n,r)=>({id:`sup${e}-n${r}`,medium:`duct`,r:Un,pts:[[n,N,t],Lt(n,e)]}));return[...Gn(`sup${e}-`,n,t,[[n,N,t],[a,N,t],Lt(a,e)]),...o,...Gn(`ret${e}-`,r,zt(e)[2],[])]}),[V,H]=hn,U=-279,qn=Rt[0],W=40,Jn=[{id:`ahu-a`,medium:`duct`,r:3.5,pts:[V.discharge,[V.discharge[0],U,V.discharge[2]],[V.discharge[0],U,W]]},{id:`ahu-b`,medium:`duct`,r:3.5,pts:[H.discharge,[H.discharge[0],U,H.discharge[2]],[H.discharge[0],U,W],[qn,U,W],[qn,-266.5,W]]},{id:`ahu-in`,medium:`duct`,r:3.5,pts:[[qn,-265,W],[qn,Rt[1],W],Rt]}],G=[R[0]+ln[0],R[1]+ln[1],ln[2]],Yn=[R[0]+cn[0],R[1]+cn[1],cn[2]],[K,q]=xn,Xn=46,Zn=-360,Qn=K.suction[2],$n=K.suction[1],er=V.supply[1],tr=e=>[[e,er,Xn],[e,$n,Xn],[e,$n,Qn]],nr=[{id:`chw-dis`,medium:`coolantret`,r:ne*L[0],fromStub:!0,pts:[K.riser,[K.riser[0],K.riser[1],Yn[2]],Yn]},{id:`chw-sup`,medium:`coolant`,r:2.6,pts:[G,[G[0],er,G[2]],V.supply]},{id:`chw-sup-b`,medium:`coolant`,r:2.6,pts:[[G[0],Zn,G[2]],[H.supply[0],Zn,G[2]],[H.supply[0],er,G[2]],H.supply]},{id:`chw-ret-b`,medium:`coolantret`,r:2.6,pts:[H.ret,...tr(H.ret[0]),K.suction]},{id:`chw-ret`,medium:`coolantret`,r:2.6,pts:[V.ret,...tr(V.ret[0])]}],J=-6,Y=At,rr=-258,ir=-18,ar=-180,or=q.suction[0]+40,sr=70,cr=_n[2]+20,lr=(e,t,n,r,i,a)=>Vn(a,i).slice(0,-1).map((o,s,c)=>{let l=s===c.length-1?i:Vn(a,i)[s+1]??i;return{id:`${e}${s}`,medium:n,r,blind:[s===c.length-1,s===0],pts:[[J,t,l],[J,t,o]]}}),ur=E.flatMap((e,t)=>{let n=e+jt,r=e+Mt;return[{id:`hw-s${t}`,medium:`heat`,r:Nt,blind:[!1,!0],pts:[[J,Y,n],[It,Y,n]]},{id:`hw-r${t}`,medium:`hotret`,r:Nt,blind:[!0,!1],pts:[[It,I,r],[ir,I,r],[ir,rr,r],[J,rr,r]]},...Pt.flatMap((i,a)=>[{id:`hw-st${t}-${a}`,medium:`heat`,r:1,bare:[!1,!0],pts:[[i+28-3,Y,n],[i+28-3,Y,e+11]]},{id:`hw-rt${t}-${a}`,medium:`hotret`,r:1,bare:[!0,!1],pts:[[i+3,I,e+11],[i+3,I,r]]}])]}),dr=[...lr(`hw-sr`,Y,`heat`,2.2,5,E[2]+jt+6),...lr(`hw-rr`,rr,`hotret`,2.2,3,E[2]+Mt+6),{id:`hw-feed-s`,medium:`heat`,r:2.2,pts:[gn,[gn[0],gn[1],sr],[gn[0],Y,sr],[J,Y,sr]]},{id:`hw-feed-r`,medium:`hotret`,r:2.2,pts:[[J,rr,q.suction[2]],[J,ar,q.suction[2]],[or,ar,q.suction[2]],[or,q.suction[1],q.suction[2]],q.suction]},{id:`hw-dis`,medium:`hotret`,r:ne*L[1],fromStub:!0,pts:[q.riser,[q.riser[0],q.riser[1],cr],[_n[0],_n[1],cr],_n]}],X=[Sn[0]+En[0],Sn[1]+En[1],En[2]],fr=B.x+B.w,pr=[{id:`gen-cable`,medium:`cable`,r:1.6,pts:[X,[X[0],X[1],72],[fr+12,X[1],72],[fr+12,X[1],Bn.z],[fr,X[1],Bn.z]]}],mr=[...ur,...Kn,...nr,...Jn,...dr,...pr],Z=(e,t,n,r,i=0)=>[e,t,n,r,i],hr={z:10,flanged:!0,routes:mr,posts:[Z(180,U,3.5,W),Z(60,U,3.5,W),Z(20,U,3.5,W),Z(40,Y,2.2,sr,4),Z(G[0],-416,2.6,G[2]),Z(Yn[0],-405,2.6,G[2]),...[110,150,190].flatMap(e=>[Z(e,Zn,2.6,G[2]),Z(e,$n,2.6,Qn)]),Z(X[0]-20,X[1],1.6,72,1.6)]},Q=n(),gr={x:-248,y:-164,w:92,d:58,r:3},_r=0,vr=(e,t)=>Ee(e,t,`downshot`),yr=(e,t)=>Pe(e,t,7,236-_r),br=(e,t)=>v(e,t,`coolantret`,!0),xr=(e,t)=>v(e,t,`hotret`,!0),Sr=(e,t)=>ke(e,t,100,{humidifier:!1,filterGauge:!1,fanHook:`data-vfan`,stubHalf:7,motor:!0}),Cr=[E[1]-4/2,E[2]-4/2,184-4/2];function wr(e){return te(e,en)+e.plinth(Qt)+e.plinth($t)+Ue(e)+We(e,B.x)+Ke(e,Dn)+Ke(e,Cn)+w(e,On,34,`south`,{louvres:[[30,50],[100,120],[170,190]]})+w(e,kn,64,`south`,{louvres:[[60,90],[130,160],[200,230],[260,290]]})+w(e,An,64,`east`,{doors:[[60,80]]})}var Tr=e=>Je(e,tn,6,112,236,Cr.map(e=>({z:e,toX:Ze}))),Er=e=>qe(e,B,40,Bn),Dr=e=>w(e,wn,36,`south`,{louvres:[[128,158],[200,230]]}),Or=e=>w(e,Tn,36,`east`,{louvres:[[20,50]],doors:[[56,74]]});function kr({ids:e}){let t=c(),n=_(hr,Rn),r=(0,y.useMemo)(()=>wr(t),[t]),i=(0,y.useMemo)(()=>pt(t)+mt(t),[t]),a=e=>(0,Q.jsx)(s,{html:`${n.layers[e]??``}<g data-flows="${e}" data-depth="${e}"></g>`,data:{pipes:``}},`pipes-${e}`),o=[e.rtu1,e.rtu2,e.rtu3],u=[];for(let[n,r]of o.entries())u.push(n>0?(0,Q.jsx)(s,{html:bt(t,n)},`slab${n}`):null,(0,Q.jsx)(s,{html:yt(t,n)},`win${n}`),a(zn+n),(0,Q.jsx)(s,{asset:r,intro:2+n,html:Xt(t,n)},`in${n}`),n===0?(0,Q.jsx)(s,{asset:e.fanA,intro:5,html:Ht(t)},`ahu-box`):null,a(1+n),(0,Q.jsx)(s,{html:Ct(t,n)},`col${n}`));let d={chiller:(0,Q.jsx)(g,{from:sn,to:fe(R),children:(0,Q.jsx)(l,{id:e.chiller,plan:gr,intro:12,draw:ve})}),boiler:(0,Q.jsx)(g,{to:fe(z),children:(0,Q.jsx)(l,{id:e.boiler,plan:Ne,intro:13,draw:yr})}),flue:(0,Q.jsx)(s,{html:(0,y.useMemo)(()=>Tr(t),[t]),intro:13}),xfmr:(0,Q.jsx)(s,{html:(0,y.useMemo)(()=>Ge(t),[t]),intro:16}),elec:(0,Q.jsx)(s,{html:(0,y.useMemo)(()=>Er(t),[t]),intro:16}),"gen-back":(0,Q.jsx)(s,{html:(0,y.useMemo)(()=>Dr(t),[t]),intro:15}),"gen-west":(0,Q.jsx)(s,{html:(0,y.useMemo)(()=>Or(t),[t]),intro:15}),genset:(0,Q.jsx)(`g`,{className:`gen-set`,children:(0,Q.jsx)(g,{to:fe(Sn),children:(0,Q.jsx)(l,{id:e.genset,plan:xe,intro:16,draw:Se})})})};for(let[t,[n,r]]of yn.entries())d[`pump${t}`]=(0,Q.jsx)(g,{from:un,to:fe([n,r]),scale:L[t],children:(0,Q.jsx)(l,{id:t?e.hwPump:e.chwPump,plan:de,intro:14+t,draw:t?xr:br})});for(let[t,n]of an.entries())d[`ahu${t}`]=(0,Q.jsx)(g,{to:fe([n,rn]),children:(0,Q.jsx)(l,{id:t?e.fanB:e.fanA,plan:on,intro:10+t,draw:Sr})});return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(s,{html:r,data:{plinth:``}}),a(0),(0,Q.jsx)(s,{html:i}),u,(0,Q.jsx)(s,{html:wt(t)}),it.map((e,t)=>(0,Q.jsx)(g,{to:[e,at,187],scale:ot,children:(0,Q.jsx)(l,{id:o[t]??``,plan:De,intro:6+t,draw:vr})},e)),a(4),Mn.flatMap((e,t)=>[(0,Q.jsx)(`g`,{children:d[e.key]},e.key),a(5+t)])]})}var Ar=10,jr=17,Mr=.55;function Nr(e,t,n){let{svg:a,P:s,feed:c}=e,l=d(a,`[data-occ]`).map(e=>({el:e,id:t[Number(e.dataset.occ)]??ge(e)})),u=d(a,`[data-diffuser]`).map(e=>({id:ge(e),at:f(e.dataset.diffuser),streaks:ie(e,Ar,`path`,`cr-stream`),phase:0}));return{draw(t,a,d){for(let e of l)o(e.el,`data-on`,c.num(e.id,`occupied`)>0?``:null);let f=e.reducedMotion();for(let e of u){let a=le(n(e.id));e.phase=(e.phase+a*Mr*t)%1;let[c=0,l=0,u=0,p=0]=e.at;for(let[t,n]of e.streaks.entries()){if(!d||f||a<.02||n.seed>.25+a){i(n.el,`0`);continue}let m=(e.phase+n.seed*3.1)%1,h=((t+.5)/Ar-.5)*2*(p-1.5),g=(n.seed-.5)*8,_=u-.5-m*jr,v=[c+h,l+g,_],ee=[c+h,l+g,_-3],[te,ne]=r(v,s),[re,ie]=r(ee,s);o(n.el,`d`,`M${te.toFixed(1)} ${ne.toFixed(1)}L${re.toFixed(1)} ${ie.toFixed(1)}`),i(n.el,(Math.sin(Math.PI*m)*.5).toFixed(2))}}},bar(){}}}var $=e=>e>.002?6+26*le(e*2):0,Pr=e=>{let{svg:t,feed:n,ids:r}=e,i=ce(t),a=Ae(e,i),o=ye(e,i),s=he(e,i),c=Ie(e,i),l=be(e,i),u=Ce(e,i),d=e=>le(n.num(e,`speed_feedback`)/n.param(e,`rated_rpm`,1450)),f=e=>e===r.fanA?(d(r.fanA)+d(r.fanB))/2:a.airPu(e),p=[a,o,s,c,l,u,Nr(e,[r.rtu1,r.rtu2,r.rtu3],f)],m=ue(e,e=>pe(n,e,`availability`)),h=me(e,{needle:e=>o.needle(e)??c.needle(e)??0,bar:e=>p.reduce((t,n)=>t??n.bar(e),void 0)??0,alertsHigh:()=>!0,ready:()=>!0}),g=[r.rtu1,r.rtu2,r.rtu3],_=()=>s.flowPu(r.chwPump),v=()=>s.flowPu(r.hwPump),ee=()=>{let e=n.param(r.genset,`rated_power_kva`,500)*.8;return e>0?le(n.num(r.genset,`load_actual`)/e):0},te=se(e,({id:e})=>{let t=/^(?:sup|ret)(\d)-/.exec(e);if(t)return $(a.airPu(g[Number(t[1])]??``));if(e.startsWith(`hw-s`)||e.startsWith(`hw-r`))return $(/^hw-[sr]\d$/.test(e)?v()/3:v());switch(e){case`ahu-a`:return $(d(r.fanA));case`ahu-b`:return $(d(r.fanB));case`ahu-in`:return $(f(r.fanA));case`chw-dis`:case`chw-sup`:case`chw-ret`:return $(_());case`chw-sup-b`:case`chw-ret-b`:return $(_()/2);case`hw-feed-s`:case`hw-feed-r`:case`hw-dis`:return $(v());case`gen-cable`:return $(ee());default:return 0}});return{data(e){m.draw(e)},draw({sdt:e,t,introDone:n}){te.draw(e),h.draw(e,t);for(let r of p)r.draw(e,t,n)},resync(){},status:e=>_e(n,e,`availability`)}},Fr=ae(nn),Ir=ee(Fr,hr,Rn),Lr=oe({layout:{width:Zt,height:620,label:`Isometric model of the Commercial Building: a three-storey office tower with a rooftop unit on each roof curb whose supply and return ducts drop through a chase to that storey's ceiling diffusers, and a loop of radiators along the back wall; behind it the mechanical room with the chiller, the chilled-water pump and two air handlers with their fan motors; beside it the boiler with its flue stack and heating pump, the transformer, and the standby diesel generator with its feeder to the electrical room. Pipes and ducts carry chilled water, hot water and air between them. Every moving part follows live values from the running engine.`,kit:Fr,flows:Ir.flows,joints:Ir.joints,Scene:kr,compose:Pr},resolve:Re,things:ze,caption:`rooftop units · plant · standby power`,mismatch:`This floor expects the Commercial Building: three rooftop units, the chiller with its chilled-water pump, the hot-water boiler with its heating pump, two air handler fan motors and the standby diesel generator, by area and line.`,statusBasis:`availability`,Overview:p,tab:`Building`});export{Lr as buildingFloor};
@@ -0,0 +1 @@
1
+ import{c as e,n as t,s as n}from"./dom-Cm_OH5jc.js";import{B as r,C as i,_ as a,c as o,g as s,p as c,s as l,w as u,x as d,y as f}from"./status-CZFZLqVk.js";function p(e,t,n={barFull:10,dialFull:20}){let{k:i,G:a,P:o,at:s,S:c,L:l,slab:u,cyl:d,hmi:f,screws:p,dial:m,faceRule:h}=e,g=[],_=-132,v=-132;for(let e of[v+18,v+92-18])g.push(u({x:e-4,y:_-12,w:8,d:24,r:1},0,10,{tone:`mid`},2,.4)),g.push(p([[e-2,_+10],[e+2,_+10]],10));let y=a.frameAlong([v,_,24],[1,0,0]);g.push(c(a.solidOf([[0,0],[1,7,1],[3,11,1],[6,13.4,1],[10,15,1],[14,15.6],[78,15.6],[82,15,1],[86,13.4,1],[89,11,1],[91,7,1],[92,0]],y,o),{tone:`mid`,inner:l(a.arcOf(y,14,15.6,o)+a.arcOf(y,78,15.6,o)+a.arcOf(y,92/2,15.6,o),{tone:`faint`})})),g.push(l(a.arcOf(y,30,15.6,o)+a.arcOf(y,44,15.6,o),{tone:`lo`})),g.push(d(v+92-16,_,1,7.800000000000001,3.4,{tone:`mid`,crease:`none`},12)),g.push(u({x:v+92-19,y:_-2.2,w:6,d:4.4,r:.6},4.199999999999999,3.6,{tone:`mid`},2,.2));let b=s([v+92-15.6,_+2.25,6]);g.push(`<circle class="sf-drain-led" data-drain-led="" cx="${b[0].toFixed(2)}" cy="${b[1].toFixed(2)}" r="0.4"/>`),g.push(`<g class="sf-fx" data-drain="${v+92-13},${_},5"></g>`),g.push(d(v+24,_,2.4,39.4,4,{tone:`mid`},16),d(v+24,_,1.4,43.4,4,{tone:`mid`},12),d(v+24,_,2.2,47.4,1.2,{tone:`mid`},14)),g.push(d(-60,_,2,39.4,8,{tone:`mid`},16)),g.push(m(t,-60,_,47,8)),v+92+6,g.push(u({x:-34,y:_-16,w:32,d:32,r:2},0,8,{tone:`mid`},3,.5)),g.push(p(i.corners({x:-34,y:_-16,w:32,d:32},2.6),8));let x=a.frameAlong([-32,_-2,18],[1,0,0]);g.push(c(a.solidOf([[0,8],[1,9],[24,9],[25,8]],x,o),{tone:`mid`,inner:i.fadedSvg(a.ribsOf(x,1,24,9,20,o,{fade:[.1,.55],seams:!0}),{tone:`lo`})})),g.push(c(a.disc(25,28,7,x,o),{tone:`mid`})),g.push(`<path class="iso-line" data-tone="lo" data-spin="comp" data-shaft="-32,${_-2},18" data-radius="7" data-span="${(-6.699999999999999).toFixed(1)},${(-4.300000000000001).toFixed(1)}" data-header-full="${n.barFull}" data-dial-full="${n.dialFull}" data-relief="${v+24},${_},49" data-crank="-22,${_-2},32" d=""/>`),g.push(u({x:-24,y:_+7,w:10,d:7,r:1},8,6,{tone:`mid`},2,.3)),g.push(d(v+92-12,_,2.2,39,1.4,{tone:`mid`},16)),g.push(r(e,[[-19,_+10.5,14],[-19,_+10.5,52],[-19,_,52],[v+92-12,_,52],[v+92-12,_,40.4]],1,`mid`,4,`air`,[!1,!1])),g.push(u({x:v+30,y:_+18,w:30,d:8,r:1},0,24,{tone:`mid`},2,.4)),g.push(f(t,_+26,v+32,v+58,7,22)),g.push(h(_+26,v+32,3,18,2.4));let S=a.frameAlong([v+22,_+15,24],[0,1,0]);return g.push(c(a.disc(0,2,3,S,o),{tone:`mid`}),c(a.disc(2,3,3.6,S,o),{tone:`mid`})),g.join(``)}var m=9;function h(r,p){let{svg:h,P:g,feed:_}=r,v=(e,t)=>_.num(e,t),y=t(h,`[data-spin="comp"]`).map(e=>{let[t=0,r=0]=n(e.dataset.span),a=l(e),s=i(h,a);return{el:e,id:a,at:o(e.dataset.shaft),relief:o(e.dataset.relief),crank:o(e.dataset.crank),r:Number(e.dataset.radius)||0,s0:t,s1:r,barFull:Number(e.dataset.headerFull)||10,dialFull:Number(e.dataset.dialFull)||20,rate:0,spin:0,hiss:f(s),heat:d(s)}}),b=new Map(y.map(e=>[e.id,e]));return{draw(t,n,i){let o=r.reducedMotion();for(let r of y)r.rate=a(r.rate,v(r.id,`running`)>0?m:0,t,.8,o),o||(r.spin+=r.rate*t),e(r.el,`d`,c(g,`x`,r.at,r.r,r.s0,r.s1,r.spin,8)),i&&(r.hiss.draw(u(_,r.id,`valve_leak`)&&!o,n,g,r.relief,[.3,.8]),r.heat.draw(u(_,r.id,`bearing_wear`,`bearing_seizure`,`oil_degradation`)&&!o,n,g,r.crank),p(r.id,o?0:u(_,r.id,`bearing_seizure`)?.6:u(_,r.id,`bearing_wear`)?.3:0,n))},bar(e){let t=b.get(e);return t?s(v(e,`header_pressure`)/t.barFull):void 0},needle(e){let t=b.get(e);return t?v(t.id,`header_pressure`)/t.dialFull:void 0},deliveredPu(e){let t=_.param(e,`rated_cfm`,0);return t>0?s(v(e,`discharge_flow`)/t):0}}}export{p as n,h as t};
@@ -0,0 +1 @@
1
+ import{ot as e}from"./vendor-ui-D8j69UH4.js";import{t}from"./utils-XFKvwlFT.js";import{a as n}from"./use-engine-command-mutation-CHqjOqfS.js";var r=e(),i=`inline-flex items-center gap-1 rounded-[var(--miravo-radius-tight)] outline-none transition-colors hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,a={live:`bg-success shadow-[0_0_0_1px_color-mix(in_srgb,var(--success)_50%,transparent),0_0_12px_color-mix(in_srgb,var(--success)_42%,transparent)]`,idle:`bg-warning/85 shadow-[0_0_0_1px_color-mix(in_srgb,var(--warning)_50%,transparent),0_0_12px_color-mix(in_srgb,var(--warning)_38%,transparent)]`,fault:`bg-destructive shadow-[0_0_0_1px_color-mix(in_srgb,var(--destructive)_50%,transparent),0_0_12px_color-mix(in_srgb,var(--destructive)_38%,transparent)]`,off:`bg-muted-foreground/55`};function o({tone:e,children:n,className:i}){return(0,r.jsxs)(`div`,{className:t(`flex shrink-0 items-center gap-2 rounded-[var(--miravo-radius-pill)] border border-border/60 bg-background/60 px-2.5 py-1 backdrop-blur-sm`,i),children:[(0,r.jsxs)(`span`,{className:`relative flex size-1.5 items-center justify-center`,children:[(0,r.jsx)(`span`,{className:t(`size-1.5 rounded-full`,a[e])}),e===`live`&&(0,r.jsx)(`span`,{className:`absolute inset-0 animate-ping rounded-full bg-success/60`})]}),(0,r.jsx)(`span`,{className:`text-[11px] leading-none text-muted-foreground`,children:n})]})}function s({children:e}){return(0,r.jsx)(`span`,{className:`text-[10px] uppercase tracking-[0.14em]`,children:e})}function c({icon:e,title:i,description:a,aside:o,footer:s,children:c,id:l,className:u,bodyClassName:d}){return(0,r.jsxs)(`section`,{id:l,tabIndex:l?-1:void 0,"aria-label":typeof i==`string`?i:void 0,className:t(n,`flex min-w-0 scroll-mt-4 flex-col outline-none hover:border-border`,u),children:[(0,r.jsxs)(`header`,{className:`flex items-start justify-between gap-3 border-b border-border/60 px-4 py-3`,children:[(0,r.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[(0,r.jsx)(`div`,{className:`mt-0.5 flex size-7 shrink-0 items-center justify-center rounded-[var(--miravo-radius-tight)] border border-border/60 bg-background/70 text-muted-foreground`,"aria-hidden":!0,children:(0,r.jsx)(e,{className:`size-3.5`})}),(0,r.jsxs)(`div`,{className:`min-w-0`,children:[(0,r.jsx)(`h2`,{className:`font-heading text-sm font-semibold tracking-tight text-foreground`,children:i}),a?(0,r.jsx)(`p`,{className:`mt-0.5 text-pretty text-xs text-muted-foreground`,children:a}):null]})]}),o?(0,r.jsx)(`div`,{className:`flex shrink-0 items-center gap-2`,children:o}):null]}),c===void 0?null:(0,r.jsx)(`div`,{className:t(`flex min-w-0 flex-col px-4 py-4`,d),children:c}),s?(0,r.jsx)(`div`,{className:`mt-auto flex min-w-0 flex-wrap items-center gap-x-4 gap-y-2 border-t border-border/60 bg-background/40 px-4 py-2.5 text-xs text-muted-foreground`,children:s}):null]})}export{o as i,i as n,s as r,c as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./control-jNqzZWa9.js";export{e as ControlPage};
@@ -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{B as r,ot as i}from"./api-B2QJEzbS.js";import{t as a}from"./proxy-CWZabK8f.js";import{t as o}from"./AnimatePresence-BSSlw02V.js";import{i as s,r as c}from"./dist-xY0pK9Wy.js";import{a as l,i as u,n as d,o as f,r as p,t as m}from"./dialog-B5PqrKVw.js";import{n as h,r as g}from"./protocol-card-ARSwIjkN.js";import{C as _,S as ee,d as v,l as te}from"./format-Bx7DF-TB.js";import{n as y,t as b}from"./utils-XFKvwlFT.js";import{n as x}from"./server-BVem_egD.js";import{n as S}from"./circle-x-_o0nl0Rg.js";import{n as C,t as w}from"./sliders-horizontal-BNKmYQgd.js";import{t as T}from"./pause-CqW7v5Dc.js";import{t as E}from"./play-kg50os4l.js";import{t as ne}from"./rocket-KZ5oHK1G.js";import{t as re}from"./triangle-alert-DoAwrRgk.js";import{a as ie,n as ae,r as D,t as O}from"./validation-BkfmaBBi.js";import{i as oe,n as k,t as A}from"./tooltip-B3vOB1Vu.js";import{t as j}from"./badge-Bk1DaL6C.js";import{t as M}from"./label-2sIXTEUK.js";import{a as N,t as P}from"./use-engine-command-mutation-CHqjOqfS.js";import{i as F,n as I,r as L,t as R}from"./tabs-BbQkzBZZ.js";import{i as z,r as B,t as V}from"./console-panel-CMDoBJiO.js";import{a as H,c as U,i as W,l as G,n as K,o as q,r as se,s as J,t as ce}from"./combobox-B8h0-NHs.js";import{c as le,i as ue,n as de,s as fe,t as pe}from"./select-BWlrSYlA.js";var me=y(`octagon-alert`,[[`path`,{d:`M12 16h.01`,key:`1drbdi`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z`,key:`1fd625`}]]),Y=y(`radio-tower`,[[`path`,{d:`M4.9 16.1C1 12.2 1 5.8 4.9 1.9`,key:`s0qx1y`}],[`path`,{d:`M7.8 4.7a6.14 6.14 0 0 0-.8 7.5`,key:`1idnkw`}],[`circle`,{cx:`12`,cy:`9`,r:`2`,key:`1092wv`}],[`path`,{d:`M16.2 4.8c2 2 2.26 5.11.8 7.47`,key:`ojru2q`}],[`path`,{d:`M19.1 1.9a9.96 9.96 0 0 1 0 14.1`,key:`rhi7fg`}],[`path`,{d:`M9.5 18h5`,key:`mfy3pd`}],[`path`,{d:`m8 22 4-11 4 11`,key:`25yftu`}]]),X=e(t(),1),Z=n();function he(){let{assets:e,models:t}=i(g(e=>({assets:e.assets,models:e.models}))),n=P(),[r,s]=(0,X.useState)(``),[c,l]=(0,X.useState)(``),[u,d]=(0,X.useState)(``),f=(0,X.useMemo)(()=>u?e.filter(e=>e.id.toLowerCase().includes(u.toLowerCase())):e,[e,u]),p=(0,X.useMemo)(()=>{let n=e.find(e=>e.id===r);return n?t.find(e=>e.name===n.model)?.faultNames??[]:[]},[r,e,t]),m=(0,X.useMemo)(()=>e.filter(e=>e.activeFaults.length>0),[e]),h=m.reduce((e,t)=>e+t.activeFaults.length,0);return(0,Z.jsxs)(q,{className:`h-full min-w-0`,children:[(0,Z.jsx)(U,{className:`pb-3`,children:(0,Z.jsxs)(G,{className:`flex items-center gap-2 text-xs font-medium uppercase tracking-wider`,children:[(0,Z.jsx)(re,{className:`size-3.5 ${h>0?`text-destructive`:`text-muted-foreground`}`}),`Fault Lab`,(0,Z.jsx)(o,{children:h>0&&(0,Z.jsx)(a.div,{initial:{scale:0,opacity:0},animate:{scale:1,opacity:1},exit:{scale:0,opacity:0},transition:{type:`spring`,stiffness:500,damping:30},children:(0,Z.jsxs)(j,{variant:`destructive`,className:`text-[10px]`,children:[h,` active`]})},`fault-count`)})]})}),(0,Z.jsxs)(J,{className:`flex flex-1 flex-col gap-3`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2`,children:[(0,Z.jsxs)(ce,{value:r||null,onValueChange:e=>{s(e??``),l(``)},onInputValueChange:d,children:[(0,Z.jsx)(se,{placeholder:`Select asset`,"aria-label":`Fault asset`,className:`h-8 min-h-11 w-full min-w-0 touch-manipulation sm:min-h-8`,showClear:!!r}),(0,Z.jsx)(K,{children:(0,Z.jsxs)(H,{children:[f.map(e=>(0,Z.jsxs)(W,{value:e.id,children:[(0,Z.jsx)(`span`,{className:`font-mono`,children:e.id}),e.activeFaults.length>0&&(0,Z.jsx)(j,{variant:`destructive`,className:`ml-auto text-[10px]`,children:e.activeFaults.length})]},e.id)),f.length===0&&(0,Z.jsx)(`p`,{className:`py-2 text-center text-xs text-muted-foreground`,children:`No assets found`})]})})]}),(0,Z.jsxs)(pe,{value:c,onValueChange:e=>l(e??``),children:[(0,Z.jsx)(fe,{className:`h-8 min-h-11 w-full touch-manipulation sm:min-h-8`,"aria-label":`Fault type`,children:(0,Z.jsx)(le,{placeholder:r?`Select fault`:`Pick asset first`})}),(0,Z.jsx)(de,{alignItemWithTrigger:!1,align:`start`,children:p.map(e=>(0,Z.jsx)(ue,{value:e,children:e},e))})]})]}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,Z.jsx)(_,{variant:`destructive`,size:`sm`,className:`h-7 min-h-11 touch-manipulation text-xs sm:min-h-7`,disabled:!r||!c,onClick:()=>{let e=D(O,{assetId:r,fault:c});e&&n.mutate({type:`triggerFault`,...e})},children:`Trigger`}),(0,Z.jsx)(_,{variant:`secondary`,size:`sm`,className:`h-7 min-h-11 touch-manipulation text-xs sm:min-h-7`,disabled:!r||!c,onClick:()=>{let e=D(O,{assetId:r,fault:c});e&&n.mutate({type:`clearFault`,...e})},children:`Clear`})]}),(0,Z.jsx)(ie,{}),(0,Z.jsx)(o,{mode:`wait`,initial:!1,children:m.length>0?(0,Z.jsxs)(a.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},className:`flex flex-col gap-2`,children:[(0,Z.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-wider text-muted-foreground`,children:`Faulted Assets`}),(0,Z.jsx)(o,{initial:!1,children:m.map(e=>(0,Z.jsx)(a.div,{initial:{opacity:0,x:-6},animate:{opacity:1,x:0},exit:{opacity:0,x:6,transition:{duration:.1}},transition:{type:`spring`,stiffness:400,damping:35},children:(0,Z.jsxs)(`button`,{type:`button`,className:`flex min-h-11 w-full touch-manipulation items-center justify-between rounded-[var(--miravo-radius-tight)] border border-destructive/20 bg-destructive/5 px-2.5 py-1.5 text-left transition-colors hover:bg-destructive/10 sm:min-h-0`,onClick:()=>{s(e.id),l(``)},children:[(0,Z.jsx)(`span`,{className:`truncate font-mono text-xs`,children:e.id}),(0,Z.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-destructive`,children:e.activeFaults.join(`, `)})]})},e.id))})]},`faulted`):(0,Z.jsxs)(a.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},className:`flex items-center gap-2 py-1 text-xs text-muted-foreground`,children:[(0,Z.jsx)(S,{className:`size-3.5 text-success`}),`All clear — no active faults`]},`all-clear`)})]})]})}function ge(e){let t=Math.floor(e/1e3),n=Math.floor(t/3600),r=Math.floor(t%3600/60),i=t%60;return n>0?`${n}h ${r}m`:r>0?`${r}m ${i}s`:`${i}s`}function _e(e){if(!Number.isFinite(e)||e<=0)return`0s`;if(e<60)return`${e.toFixed(1)}s`;let t=Math.floor(e),n=Math.floor(t/86400),r=Math.floor(t%86400/3600),i=Math.floor(t%3600/60),a=t%60;return n>0?r>0?`${n}d ${r}h`:i>0?`${n}d ${i}m`:`${n}d`:r>0?`${r}h ${i}m`:i>0?`${i}m ${a}s`:`${a}s`}function ve({data:e}){let t=(0,X.useMemo)(()=>{if(e.length<2)return null;let t=e.map(e=>e.tps),n=Math.max(...t,.1),r=Math.min(...t,0),i=n-r||1;return{points:t.map((e,n)=>{let a=n/(t.length-1)*200,o=2+(1-(e-r)/i)*28;return`${n===0?`M`:`L`}${a.toFixed(1)},${o.toFixed(1)}`}).join(` `),min:r,max:n}},[e]);return t?(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Z.jsxs)(`svg`,{viewBox:`0 0 200 32`,className:`h-8 w-full`,preserveAspectRatio:`none`,role:`img`,"aria-label":`TPS trend sparkline`,children:[(0,Z.jsx)(`line`,{x1:`0`,y1:`10.7`,x2:`200`,y2:`10.7`,stroke:`currentColor`,strokeWidth:`0.5`,strokeDasharray:`3,2`,className:`text-border`}),(0,Z.jsx)(`line`,{x1:`0`,y1:`21.3`,x2:`200`,y2:`21.3`,stroke:`currentColor`,strokeWidth:`0.5`,strokeDasharray:`3,2`,className:`text-border`}),(0,Z.jsx)(`path`,{d:t.points,fill:`none`,stroke:`var(--primary)`,strokeWidth:`1.5`})]}),(0,Z.jsxs)(`div`,{className:`flex justify-between text-[9px] text-muted-foreground`,children:[(0,Z.jsxs)(`span`,{children:[`60s ago · `,t.min.toFixed(1)]}),(0,Z.jsxs)(`span`,{children:[t.max.toFixed(1),` · now`]})]})]}):(0,Z.jsx)(`div`,{className:`flex h-8 items-center text-[10px] text-muted-foreground`,children:`Collecting...`})}var ye={running:`bg-success`,paused:`bg-warning`,idle:`bg-muted-foreground`,stopped:`bg-destructive`};function be({state:e}){let t=ye[e]??`bg-muted-foreground`,n=e===`running`;return(0,Z.jsxs)(`div`,{className:`flex items-center gap-2.5`,children:[(0,Z.jsxs)(`div`,{className:`relative flex items-center justify-center`,children:[(0,Z.jsx)(`span`,{className:`size-2.5 rounded-full ${t}`}),n&&(0,Z.jsx)(`span`,{className:`absolute size-2.5 animate-ping rounded-full ${t} opacity-40`})]}),(0,Z.jsx)(o,{mode:`wait`,initial:!1,children:(0,Z.jsx)(a.span,{initial:{opacity:0,y:-5},animate:{opacity:1,y:0},exit:{opacity:0,y:5},transition:{type:`spring`,stiffness:500,damping:30},className:`font-mono text-lg font-bold uppercase tracking-wider`,children:e},e)})]})}function Q({label:e,tooltip:t,tooltipClassName:n}){return(0,Z.jsxs)(`div`,{className:`inline-flex w-fit min-w-0 max-w-full items-center gap-1`,children:[(0,Z.jsx)(`span`,{className:`blueprint-title min-w-0 shrink text-[11px] leading-tight text-muted-foreground`,children:e}),(0,Z.jsxs)(A,{children:[(0,Z.jsx)(oe,{className:`inline-flex size-4 shrink-0 items-center justify-center rounded-[var(--miravo-radius-tight)] border-0 bg-transparent p-0 text-muted-foreground shadow-none outline-none hover:text-foreground focus-visible:ring-1 focus-visible:ring-ring`,render:(0,Z.jsx)(`button`,{type:`button`}),"aria-label":`About ${e}`,children:(0,Z.jsx)(x,{className:`size-3`,"aria-hidden":!0})}),(0,Z.jsx)(k,{side:`top`,className:b(`max-w-xs`,n),children:t})]})]})}function $(){let{engineState:e,connectionState:t}=i(g(e=>({engineState:e.engineState,connectionState:e.connectionState}))),n=P();return(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(Q,{label:`Run state`,tooltip:(0,Z.jsx)(`p`,{className:`text-[11px] leading-snug`,children:`Whether the scheduler is running, paused, idle, or stopped. Pause freezes simulated time; resume continues from the same tick.`})}),(0,Z.jsx)(be,{state:e}),t===`live`&&(e===`running`||e===`paused`)&&(0,Z.jsx)(`div`,{className:`mt-1 flex items-center gap-2`,children:(0,Z.jsxs)(_,{type:`button`,size:`sm`,variant:e===`paused`?`default`:`outline`,className:b(`h-8 min-h-11 w-fit touch-manipulation gap-1.5 px-3 text-xs sm:min-h-8`,e===`running`&&`border-warning/40 bg-warning/10 text-warning hover:bg-warning/20 hover:text-warning focus-visible:border-warning/50 focus-visible:ring-warning/25 border-warning/35`),onClick:()=>n.mutate({type:e===`paused`?`resume`:`pause`}),children:[e===`paused`?(0,Z.jsx)(E,{className:`size-3`}):(0,Z.jsx)(T,{className:`size-3`}),e===`paused`?`Resume`:`Pause`]})})]})}function xe(){let{speedMultiplier:e,connectionState:t}=i(g(e=>({speedMultiplier:e.speedMultiplier,connectionState:e.connectionState}))),n=P(),[r,a]=(0,X.useState)(String(e)),o=t===`live`;return(0,X.useEffect)(()=>{a(String(e))},[e]),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(Q,{label:`Speed`,tooltip:(0,Z.jsx)(`p`,{className:`text-[11px] leading-snug`,children:`Runs the factory at this multiple of real time. 1× is real time; higher values speed up the model. Change it with the field and Set.`})}),(0,Z.jsxs)(`span`,{className:`w-fit font-mono text-lg font-bold tabular-nums`,children:[e,`x`]}),(0,Z.jsxs)(`div`,{className:`mt-1 flex min-w-0 flex-wrap items-center gap-2`,children:[(0,Z.jsx)(M,{htmlFor:`speed-multiplier`,className:`sr-only`,children:`Speed multiplier`}),(0,Z.jsx)(ee,{id:`speed-multiplier`,type:`number`,value:r,onChange:e=>a(e.target.value),className:`h-8 min-h-11 w-[4.75rem] touch-manipulation font-mono text-xs tabular-nums sm:min-h-8`,min:`1`,max:`1000`,disabled:!o}),(0,Z.jsx)(_,{type:`button`,size:`sm`,variant:`outline`,className:`h-8 min-h-11 touch-manipulation px-3 text-xs sm:min-h-8`,disabled:!o,onClick:()=>{let e=D(ae,{multiplier:Number(r)});e&&n.mutate({type:`setSpeed`,multiplier:e.multiplier})},children:`Set`})]})]})}function Se(){let{tick:e,simulationTime:t,tps:n,tpsHistory:r,uptimeMs:a,assetCount:o,memberValueCount:s}=i(g(e=>({tick:e.tick,simulationTime:e.simulationTime,tps:e.tps,tpsHistory:e.tpsHistory,uptimeMs:e.uptimeMs,assetCount:e.assetCount,memberValueCount:e.memberValueCount})));return(0,Z.jsxs)(`div`,{className:b(N,`px-4 py-3`),children:[(0,Z.jsxs)(`header`,{className:`mb-3 border-b border-border/60 pb-2`,children:[(0,Z.jsx)(`h2`,{className:`font-heading text-sm font-semibold tracking-tight text-foreground`,children:`Engine vitals`}),(0,Z.jsx)(`p`,{className:`mt-0.5 text-xs text-muted-foreground`,children:`Scheduler, speed, cycle count, and throughput for this session.`})]}),(0,Z.jsxs)(`div`,{className:`grid min-w-0 grid-cols-2 gap-3 @2xl/main:gap-4 @3xl/main:grid-cols-3 @5xl/main:grid-cols-6`,children:[(0,Z.jsx)($,{}),(0,Z.jsx)(xe,{}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(Q,{label:`Cycle`,tooltipClassName:`flex flex-col items-start gap-2 text-left`,tooltip:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`p`,{className:`text-[11px] leading-snug`,children:[(0,Z.jsx)(`span`,{className:`font-medium`,children:`Cycle`}),` compares simulated progress with wall time: how many steps ran, how much model time advanced, and how long this session has been open.`]}),(0,Z.jsxs)(`p`,{className:`text-[11px] leading-snug`,children:[`The number is `,(0,Z.jsx)(`span`,{className:`font-medium`,children:`tick`}),` count — completed scheduler steps since this run. Each tick refreshes the plant model and live tags.`]}),(0,Z.jsxs)(`p`,{className:`text-[11px] leading-snug`,children:[(0,Z.jsx)(`span`,{className:`font-medium`,children:`Sim`}),` is simulated elapsed time. Each tick adds (tick interval × speed) to this clock. Generators, lifecycle, and in-model timestamps use Sim, not your system clock. It stops advancing while paused.`]}),(0,Z.jsxs)(`p`,{className:`text-[11px] leading-snug`,children:[(0,Z.jsx)(`span`,{className:`font-medium`,children:`Real`}),` is wall-clock uptime since the run started (real time).`]})]})}),(0,Z.jsx)(`span`,{className:`w-fit font-mono text-lg font-bold tabular-nums`,children:te(e)}),(0,Z.jsxs)(`div`,{className:`mt-1 flex w-full min-w-0 flex-col gap-0.5 leading-tight`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,Z.jsx)(`span`,{className:`w-10 shrink-0 text-[9px] font-semibold uppercase tracking-wide text-muted-foreground`,children:`Sim`}),(0,Z.jsx)(`span`,{className:`min-w-0 font-mono text-[10px] tabular-nums text-muted-foreground`,children:_e(t)})]}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,Z.jsx)(`span`,{className:`w-10 shrink-0 text-[9px] font-semibold uppercase tracking-wide text-muted-foreground`,children:`Real`}),(0,Z.jsx)(`span`,{className:`min-w-0 font-mono text-[10px] tabular-nums text-muted-foreground`,children:ge(a)})]})]})]}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Z.jsx)(Q,{label:`Throughput`,tooltip:(0,Z.jsx)(`p`,{className:`text-[11px] leading-snug`,children:`Ticks per second: how fast the engine is stepping. Rises and falls with workload, speed setting, and CPU headroom.`})}),(0,Z.jsxs)(`span`,{className:`w-fit font-mono text-lg font-bold tabular-nums`,children:[n.toFixed(1),` tps`]}),(0,Z.jsxs)(`span`,{className:`mt-1 text-[10px] text-muted-foreground`,children:[o,` inst · `,v(s),` tags`]})]}),(0,Z.jsxs)(`div`,{className:`col-span-2 flex flex-col gap-2`,children:[(0,Z.jsx)(Q,{label:`TPS Trend`,tooltip:(0,Z.jsx)(`p`,{className:`text-[11px] leading-snug`,children:`Recent ticks-per-second samples over about the last minute. Flat or noisy lines usually mean load or speed changes.`})}),(0,Z.jsx)(ve,{data:r})]})]})]})}function Ce({enabled:e,total:t}){return(0,Z.jsxs)(z,{tone:t===0?`off`:e===0?`idle`:`live`,children:[(0,Z.jsx)(`span`,{className:`font-mono font-semibold tabular-nums text-foreground`,children:e}),(0,Z.jsx)(`span`,{className:`mx-1 text-muted-foreground/60`,children:`/`}),(0,Z.jsx)(`span`,{className:`font-mono tabular-nums`,children:t}),(0,Z.jsx)(`span`,{className:`ml-1.5`}),(0,Z.jsx)(B,{children:`active`})]})}function we(){let{availableAdapters:e,adapterMetrics:t}=i(g(e=>({availableAdapters:e.availableAdapters,adapterMetrics:e.adapterMetrics}))),n=e.filter(e=>e.enabled).length;return(0,Z.jsxs)(V,{icon:Y,title:`Protocol Gateway`,description:`Northbound adapters publishing engine telemetry to external systems.`,aside:(0,Z.jsx)(Ce,{enabled:n,total:e.length}),bodyClassName:`p-0`,children:[e.length>0&&(0,Z.jsx)(`div`,{className:`flex flex-col gap-2 px-4 py-4`,children:(0,Z.jsx)(o,{children:e.map((e,n)=>{let r=t.find(t=>t.name===e.name)?.metrics;return(0,Z.jsx)(a.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},exit:{opacity:0},transition:{type:`spring`,stiffness:380,damping:30,delay:n*.05},children:(0,Z.jsx)(h,{adapter:e,metrics:r})},e.name)})})}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-3 gap-y-2 border-t border-border/60 bg-background/40 px-4 py-2.5`,role:`status`,"aria-label":`Upcoming protocol adapters`,children:[(0,Z.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[(0,Z.jsx)(ne,{className:`size-3 text-muted-foreground/70`,"aria-hidden":!0}),(0,Z.jsx)(`span`,{className:`text-[10px] font-medium uppercase tracking-[0.14em] text-muted-foreground`,children:`Roadmap`})]}),(0,Z.jsx)(`span`,{className:`font-mono text-[10px] leading-[15px] tracking-tight text-muted-foreground`,children:`More protocols to come`})]})]})}function Te(){let{assets:e,templates:t}=i(g(e=>({assets:e.assets,templates:e.templates}))),n=P(),[r,a]=(0,X.useState)(!1),[o,s]=(0,X.useState)(!1);return(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,Z.jsxs)(q,{className:`min-w-0`,children:[(0,Z.jsx)(U,{className:`pb-3`,children:(0,Z.jsxs)(G,{className:`flex items-center gap-2 text-xs font-medium uppercase tracking-wider`,children:[(0,Z.jsx)(me,{className:`size-3.5 text-muted-foreground`,"aria-hidden":!0}),`Danger Zone`]})}),(0,Z.jsx)(J,{className:`flex flex-1 flex-col`,children:(0,Z.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1 flex-col gap-3 rounded-[var(--miravo-radius-stadium-sm)] border border-dashed border-border p-3 @2xl/main:flex-row @2xl/main:items-center @2xl/main:justify-between`,children:[(0,Z.jsxs)(`div`,{className:`min-w-0 space-y-0.5`,children:[(0,Z.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:`Reset factory`}),(0,Z.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Unloads `,t.length,` template`,t.length===1?``:`s`,` and removes`,` `,e.length,` asset`,e.length===1?``:`s`,`, including standalone ones.`]})]}),(0,Z.jsx)(_,{className:`min-h-11 w-full shrink-0 touch-manipulation @2xl/main:w-auto sm:min-h-7`,variant:`destructive`,size:`sm`,onClick:()=>a(!0),children:`Reset`})]})})]}),(0,Z.jsx)(m,{open:r,onOpenChange:a,children:(0,Z.jsxs)(d,{children:[(0,Z.jsxs)(l,{children:[(0,Z.jsx)(f,{children:`Reset Factory`}),(0,Z.jsx)(p,{children:`Unloads every template and removes every asset, including standalone ones. With persistence on, the empty factory is saved and stays empty after a restart.`})]}),(0,Z.jsxs)(u,{children:[(0,Z.jsx)(_,{variant:`outline`,className:`min-h-11 w-full touch-manipulation sm:min-h-8 sm:w-auto`,onClick:()=>a(!1),disabled:o,children:`Cancel`}),(0,Z.jsx)(_,{variant:`destructive`,className:`min-h-11 w-full touch-manipulation sm:min-h-8 sm:w-auto`,disabled:o,onClick:async()=>{s(!0);try{await n.mutateAsync({type:`resetFactory`}),a(!1)}catch{}finally{s(!1)}},children:o?`Resetting...`:`Confirm Reset`})]})]})})]})}function Ee(){let[e,t]=s(`tab`,c([`monitor`,`operate`]).withDefault(`monitor`));return(0,Z.jsxs)(`div`,{className:`mx-auto flex w-full min-w-0 max-w-screen-2xl flex-col gap-5 p-4 sm:gap-6 sm:p-6`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,Z.jsx)(`h1`,{className:`font-heading text-2xl font-semibold tracking-tight`,children:`Mission Control`}),(0,Z.jsxs)(j,{variant:`outline`,title:`Miravo version ${r}`,className:`font-mono text-[10px] leading-none text-muted-foreground`,children:[`v`,r]})]}),(0,Z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Engine telemetry, protocol management, and fault operations.`})]}),(0,Z.jsxs)(R,{value:e,onValueChange:e=>{t(e)},className:`min-h-0 flex-1`,children:[(0,Z.jsx)(`div`,{className:`shrink-0 overflow-x-auto`,children:(0,Z.jsxs)(L,{variant:`line`,className:`h-10! min-w-max gap-0.5`,children:[(0,Z.jsxs)(F,{value:`monitor`,className:`gap-1.5 px-3 text-sm`,children:[(0,Z.jsx)(C,{className:`size-3.5 shrink-0`}),`Monitor`]}),(0,Z.jsxs)(F,{value:`operate`,className:`gap-1.5 px-3 text-sm`,children:[(0,Z.jsx)(w,{className:`size-3.5 shrink-0`}),`Operate`]})]})}),(0,Z.jsx)(I,{value:`monitor`,className:`flex-1 py-2`,children:(0,Z.jsxs)(a.div,{initial:{opacity:0,y:6},animate:{opacity:1,y:0},transition:{duration:.15,ease:`easeOut`},className:`flex flex-col gap-5 sm:gap-6`,children:[(0,Z.jsx)(Se,{}),(0,Z.jsx)(we,{})]},`monitor`)}),(0,Z.jsx)(I,{value:`operate`,className:`flex-1 py-2`,children:(0,Z.jsxs)(a.div,{initial:{opacity:0,y:6},animate:{opacity:1,y:0},transition:{duration:.15,ease:`easeOut`},className:`grid min-h-0 min-w-0 grid-cols-1 items-start gap-5 @2xl/main:grid-cols-2 @2xl/main:gap-4`,children:[(0,Z.jsx)(he,{}),(0,Z.jsx)(Te,{})]},`operate`)})]})]})}export{Y as n,Ee as t};
@@ -0,0 +1 @@
1
+ import{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}from"./dialog-B5PqrKVw.js";import{n as i,t as a}from"./utils-XFKvwlFT.js";import{t as o}from"./check-B-yvIfMj.js";import{i as s,n as c,t as l}from"./tooltip-B3vOB1Vu.js";var u=i(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),d=e(t(),1);function f(e,t){if(!t?.body||!t.createElement||typeof t.execCommand!=`function`)return!1;let n=t.createElement(`textarea`),r=t.activeElement;n.value=e,n.setAttribute(`readonly`,``),n.setAttribute(`aria-hidden`,`true`),n.style.position=`fixed`,n.style.top=`0`,n.style.left=`-9999px`,n.style.opacity=`0`,t.body.appendChild(n),n.focus(),n.select(),n.setSelectionRange(0,n.value.length);try{return t.execCommand(`copy`)}finally{t.body.removeChild(n),r?.focus?.()}}async function p(e,t=globalThis){let n=t.navigator?.clipboard?.writeText;if(n)try{await n(e);return}catch{if(f(e,t.document))return;throw Error(`Clipboard write failed`)}if(!f(e,t.document))throw Error(`Clipboard API unavailable`)}var m=n();function h({value:e,label:t=`Copy`,className:n,successMessage:i=`Copied to clipboard`,successDescription:f,tooltipSide:h=`right`,render:g}){let[_,v]=(0,d.useState)(!1),y=(0,d.useRef)(void 0);(0,d.useEffect)(()=>()=>clearTimeout(y.current),[]);let b=(0,d.useCallback)(async t=>{t.stopPropagation();try{await p(e),v(!0),r.success(i,{description:f}),clearTimeout(y.current),y.current=setTimeout(()=>v(!1),1500)}catch{r.error(`Failed to copy`)}},[f,i,e]),x=_?(0,m.jsx)(o,{className:`size-3 text-success`}):(0,m.jsx)(u,{className:`size-3`}),S=g?.({copied:_,icon:x});return(0,m.jsxs)(l,{children:[(0,m.jsx)(s,{className:S?void 0:a(`relative inline-flex size-6 items-center justify-center rounded-[var(--miravo-radius-tight)] text-muted-foreground hover:bg-muted hover:text-foreground before:absolute before:inset-[-10px] before:content-['']`,n),onClick:b,closeOnClick:!1,"aria-label":t,render:S,children:x}),(0,m.jsx)(c,{side:h,children:_?`Copied!`:t})]})}export{h 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{$ as n,J as r,Q as i,X as a,Y as o,Z as s,et as c,ot as ee,st as l}from"./vendor-ui-D8j69UH4.js";import{C as u,T as d}from"./format-Bx7DF-TB.js";import{t as f}from"./utils-XFKvwlFT.js";var p=e(t(),1),te=e(l(),1);function m(e){if(!e||typeof document>`u`)return;let t=document.head||document.getElementsByTagName(`head`)[0],n=document.createElement(`style`);n.type=`text/css`,t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}var ne=e=>{switch(e){case`success`:return _;case`info`:return y;case`warning`:return v;case`error`:return b;default:return null}},h=Array(12).fill(0),g=({visible:e,className:t})=>p.createElement(`div`,{className:[`sonner-loading-wrapper`,t].filter(Boolean).join(` `),"data-visible":e},p.createElement(`div`,{className:`sonner-spinner`},h.map((e,t)=>p.createElement(`div`,{className:`sonner-loading-bar`,key:`spinner-bar-${t}`})))),_=p.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},p.createElement(`path`,{fillRule:`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z`,clipRule:`evenodd`})),v=p.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,height:`20`,width:`20`},p.createElement(`path`,{fillRule:`evenodd`,d:`M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z`,clipRule:`evenodd`})),y=p.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},p.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z`,clipRule:`evenodd`})),b=p.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},p.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z`,clipRule:`evenodd`})),x=p.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`},p.createElement(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),p.createElement(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})),S=()=>{let[e,t]=p.useState(document.hidden);return p.useEffect(()=>{let e=()=>{t(document.hidden)};return document.addEventListener(`visibilitychange`,e),()=>window.removeEventListener(`visibilitychange`,e)},[]),e},C=1,w=new class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)}),this.publish=e=>{this.subscribers.forEach(t=>t(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{let{message:t,...n}=e,r=typeof e?.id==`number`||e.id?.length>0?e.id:C++,i=this.toasts.find(e=>e.id===r),a=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),i?this.toasts=this.toasts.map(n=>n.id===r?(this.publish({...n,...e,id:r,title:t}),{...n,...e,id:r,dismissible:a,title:t}):n):this.addToast({title:t,...n,dismissible:a,id:r}),r},this.dismiss=e=>(e?(this.dismissedToasts.add(e),requestAnimationFrame(()=>this.subscribers.forEach(t=>t({id:e,dismiss:!0})))):this.toasts.forEach(e=>{this.subscribers.forEach(t=>t({id:e.id,dismiss:!0}))}),e),this.message=(e,t)=>this.create({...t,message:e}),this.error=(e,t)=>this.create({...t,message:e,type:`error`}),this.success=(e,t)=>this.create({...t,type:`success`,message:e}),this.info=(e,t)=>this.create({...t,type:`info`,message:e}),this.warning=(e,t)=>this.create({...t,type:`warning`,message:e}),this.loading=(e,t)=>this.create({...t,type:`loading`,message:e}),this.promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:`loading`,message:t.loading,description:typeof t.description==`function`?void 0:t.description}));let r=Promise.resolve(e instanceof Function?e():e),i=n!==void 0,a,o=r.then(async e=>{if(a=[`resolve`,e],p.isValidElement(e))i=!1,this.create({id:n,type:`default`,message:e});else if(E(e)&&!e.ok){i=!1;let r=typeof t.error==`function`?await t.error(`HTTP error! status: ${e.status}`):t.error,a=typeof t.description==`function`?await t.description(`HTTP error! status: ${e.status}`):t.description,o=typeof r==`object`&&!p.isValidElement(r)?r:{message:r};this.create({id:n,type:`error`,description:a,...o})}else if(e instanceof Error){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!p.isValidElement(r)?r:{message:r};this.create({id:n,type:`error`,description:a,...o})}else if(t.success!==void 0){i=!1;let r=typeof t.success==`function`?await t.success(e):t.success,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!p.isValidElement(r)?r:{message:r};this.create({id:n,type:`success`,description:a,...o})}}).catch(async e=>{if(a=[`reject`,e],t.error!==void 0){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description,o=typeof r==`object`&&!p.isValidElement(r)?r:{message:r};this.create({id:n,type:`error`,description:a,...o})}}).finally(()=>{i&&(this.dismiss(n),n=void 0),t.finally==null||t.finally.call(t)}),s=()=>new Promise((e,t)=>o.then(()=>a[0]===`reject`?t(a[1]):e(a[1])).catch(t));return typeof n!=`string`&&typeof n!=`number`?{unwrap:s}:Object.assign(n,{unwrap:s})},this.custom=(e,t)=>{let n=t?.id||C++;return this.create({jsx:e(n),id:n,...t}),n},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},T=(e,t)=>{let n=t?.id||C++;return w.addToast({title:e,...t,id:n}),n},E=e=>e&&typeof e==`object`&&`ok`in e&&typeof e.ok==`boolean`&&`status`in e&&typeof e.status==`number`,D=Object.assign(T,{success:w.success,info:w.info,warning:w.warning,error:w.error,custom:w.custom,message:w.message,promise:w.promise,dismiss:w.dismiss,loading:w.loading},{getHistory:()=>w.toasts,getToasts:()=>w.getActiveToasts()});m(`[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}`);function O(e){return e.label!==void 0}var k=3,A=`24px`,j=`16px`,M=4e3,re=356,N=14,P=45,F=200;function I(...e){return e.filter(Boolean).join(` `)}function L(e){let[t,n]=e.split(`-`),r=[];return t&&r.push(t),n&&r.push(n),r}var ie=e=>{let{invert:t,toast:n,unstyled:r,interacting:i,setHeights:a,visibleToasts:o,heights:s,index:c,toasts:ee,expanded:l,removeToast:u,defaultRichColors:d,closeButton:f,style:te,cancelButtonStyle:m,actionButtonStyle:h,className:_=``,descriptionClassName:v=``,duration:y,position:b,gap:C,expandByDefault:w,classNames:T,icons:E,closeButtonAriaLabel:D=`Close toast`}=e,[k,A]=p.useState(null),[j,re]=p.useState(null),[N,ie]=p.useState(!1),[R,ae]=p.useState(!1),[z,B]=p.useState(!1),[V,oe]=p.useState(!1),[se,H]=p.useState(!1),[ce,U]=p.useState(0),[le,W]=p.useState(0),G=p.useRef(n.duration||y||M),ue=p.useRef(null),K=p.useRef(null),de=c===0,fe=c+1<=o,q=n.type,J=n.dismissible!==!1,pe=n.className||``,me=n.descriptionClassName||``,Y=p.useMemo(()=>s.findIndex(e=>e.toastId===n.id)||0,[s,n.id]),he=p.useMemo(()=>n.closeButton??f,[n.closeButton,f]),ge=p.useMemo(()=>n.duration||y||M,[n.duration,y]),X=p.useRef(0),Z=p.useRef(0),_e=p.useRef(0),Q=p.useRef(null),[ve,ye]=b.split(`-`),be=p.useMemo(()=>s.reduce((e,t,n)=>n>=Y?e:e+t.height,0),[s,Y]),xe=S(),Se=n.invert||t,Ce=q===`loading`;Z.current=p.useMemo(()=>Y*C+be,[Y,be]),p.useEffect(()=>{G.current=ge},[ge]),p.useEffect(()=>{ie(!0)},[]),p.useEffect(()=>{let e=K.current;if(e){let t=e.getBoundingClientRect().height;return W(t),a(e=>[{toastId:n.id,height:t,position:n.position},...e]),()=>a(e=>e.filter(e=>e.toastId!==n.id))}},[a,n.id]),p.useLayoutEffect(()=>{if(!N)return;let e=K.current,t=e.style.height;e.style.height=`auto`;let r=e.getBoundingClientRect().height;e.style.height=t,W(r),a(e=>e.find(e=>e.toastId===n.id)?e.map(e=>e.toastId===n.id?{...e,height:r}:e):[{toastId:n.id,height:r,position:n.position},...e])},[N,n.title,n.description,a,n.id,n.jsx,n.action,n.cancel]);let $=p.useCallback(()=>{ae(!0),U(Z.current),a(e=>e.filter(e=>e.toastId!==n.id)),setTimeout(()=>{u(n)},F)},[n,u,a,Z]);p.useEffect(()=>{if(n.promise&&q===`loading`||n.duration===1/0||n.type===`loading`)return;let e;return l||i||xe?(()=>{if(_e.current<X.current){let e=new Date().getTime()-X.current;G.current-=e}_e.current=new Date().getTime()})():G.current!==1/0&&(X.current=new Date().getTime(),e=setTimeout(()=>{n.onAutoClose==null||n.onAutoClose.call(n,n),$()},G.current)),()=>clearTimeout(e)},[l,i,n,q,xe,$]),p.useEffect(()=>{n.delete&&($(),n.onDismiss==null||n.onDismiss.call(n,n))},[$,n.delete]);function we(){return E?.loading?p.createElement(`div`,{className:I(T?.loader,n?.classNames?.loader,`sonner-loader`),"data-visible":q===`loading`},E.loading):p.createElement(g,{className:I(T?.loader,n?.classNames?.loader),visible:q===`loading`})}let Te=n.icon||E?.[q]||ne(q);return p.createElement(`li`,{tabIndex:0,ref:K,className:I(_,pe,T?.toast,n?.classNames?.toast,T?.default,T?.[q],n?.classNames?.[q]),"data-sonner-toast":``,"data-rich-colors":n.richColors??d,"data-styled":!(n.jsx||n.unstyled||r),"data-mounted":N,"data-promise":!!n.promise,"data-swiped":se,"data-removed":R,"data-visible":fe,"data-y-position":ve,"data-x-position":ye,"data-index":c,"data-front":de,"data-swiping":z,"data-dismissible":J,"data-type":q,"data-invert":Se,"data-swipe-out":V,"data-swipe-direction":j,"data-expanded":!!(l||w&&N),"data-testid":n.testId,style:{"--index":c,"--toasts-before":c,"--z-index":ee.length-c,"--offset":`${R?ce:Z.current}px`,"--initial-height":w?`auto`:`${le}px`,...te,...n.style},onDragEnd:()=>{B(!1),A(null),Q.current=null},onPointerDown:e=>{e.button!==2&&(Ce||!J||(ue.current=new Date,U(Z.current),e.target.setPointerCapture(e.pointerId),e.target.tagName!==`BUTTON`&&(B(!0),Q.current={x:e.clientX,y:e.clientY})))},onPointerUp:()=>{if(V||!J)return;Q.current=null;let e=Number(K.current?.style.getPropertyValue(`--swipe-amount-x`).replace(`px`,``)||0),t=Number(K.current?.style.getPropertyValue(`--swipe-amount-y`).replace(`px`,``)||0),r=new Date().getTime()-ue.current?.getTime(),i=k===`x`?e:t,a=Math.abs(i)/r;if(Math.abs(i)>=P||a>.11){U(Z.current),n.onDismiss==null||n.onDismiss.call(n,n),re(k===`x`?e>0?`right`:`left`:t>0?`down`:`up`),$(),oe(!0);return}else{var o,s;(o=K.current)==null||o.style.setProperty(`--swipe-amount-x`,`0px`),(s=K.current)==null||s.style.setProperty(`--swipe-amount-y`,`0px`)}H(!1),B(!1),A(null)},onPointerMove:t=>{var n,r;if(!Q.current||!J||window.getSelection()?.toString().length>0)return;let i=t.clientY-Q.current.y,a=t.clientX-Q.current.x,o=e.swipeDirections??L(b);!k&&(Math.abs(a)>1||Math.abs(i)>1)&&A(Math.abs(a)>Math.abs(i)?`x`:`y`);let s={x:0,y:0},c=e=>1/(1.5+Math.abs(e)/20);if(k===`y`){if(o.includes(`top`)||o.includes(`bottom`))if(o.includes(`top`)&&i<0||o.includes(`bottom`)&&i>0)s.y=i;else{let e=i*c(i);s.y=Math.abs(e)<Math.abs(i)?e:i}}else if(k===`x`&&(o.includes(`left`)||o.includes(`right`)))if(o.includes(`left`)&&a<0||o.includes(`right`)&&a>0)s.x=a;else{let e=a*c(a);s.x=Math.abs(e)<Math.abs(a)?e:a}(Math.abs(s.x)>0||Math.abs(s.y)>0)&&H(!0),(n=K.current)==null||n.style.setProperty(`--swipe-amount-x`,`${s.x}px`),(r=K.current)==null||r.style.setProperty(`--swipe-amount-y`,`${s.y}px`)}},he&&!n.jsx&&q!==`loading`?p.createElement(`button`,{"aria-label":D,"data-disabled":Ce,"data-close-button":!0,onClick:Ce||!J?()=>{}:()=>{$(),n.onDismiss==null||n.onDismiss.call(n,n)},className:I(T?.closeButton,n?.classNames?.closeButton)},E?.close??x):null,(q||n.icon||n.promise)&&n.icon!==null&&(E?.[q]!==null||n.icon)?p.createElement(`div`,{"data-icon":``,className:I(T?.icon,n?.classNames?.icon)},n.promise||n.type===`loading`&&!n.icon?n.icon||we():null,n.type===`loading`?null:Te):null,p.createElement(`div`,{"data-content":``,className:I(T?.content,n?.classNames?.content)},p.createElement(`div`,{"data-title":``,className:I(T?.title,n?.classNames?.title)},n.jsx?n.jsx:typeof n.title==`function`?n.title():n.title),n.description?p.createElement(`div`,{"data-description":``,className:I(v,me,T?.description,n?.classNames?.description)},typeof n.description==`function`?n.description():n.description):null),p.isValidElement(n.cancel)?n.cancel:n.cancel&&O(n.cancel)?p.createElement(`button`,{"data-button":!0,"data-cancel":!0,style:n.cancelButtonStyle||m,onClick:e=>{O(n.cancel)&&J&&(n.cancel.onClick==null||n.cancel.onClick.call(n.cancel,e),$())},className:I(T?.cancelButton,n?.classNames?.cancelButton)},n.cancel.label):null,p.isValidElement(n.action)?n.action:n.action&&O(n.action)?p.createElement(`button`,{"data-button":!0,"data-action":!0,style:n.actionButtonStyle||h,onClick:e=>{O(n.action)&&(n.action.onClick==null||n.action.onClick.call(n.action,e),!e.defaultPrevented&&$())},className:I(T?.actionButton,n?.classNames?.actionButton)},n.action.label):null)};function R(){if(typeof window>`u`||typeof document>`u`)return`ltr`;let e=document.documentElement.getAttribute(`dir`);return e===`auto`||!e?window.getComputedStyle(document.documentElement).direction:e}function ae(e,t){let n={};return[e,t].forEach((e,t)=>{let r=t===1,i=r?`--mobile-offset`:`--offset`,a=r?j:A;function o(e){[`top`,`right`,`bottom`,`left`].forEach(t=>{n[`${i}-${t}`]=typeof e==`number`?`${e}px`:e})}typeof e==`number`||typeof e==`string`?o(e):typeof e==`object`?[`top`,`right`,`bottom`,`left`].forEach(t=>{e[t]===void 0?n[`${i}-${t}`]=a:n[`${i}-${t}`]=typeof e[t]==`number`?`${e[t]}px`:e[t]}):o(a)}),n}var z=p.forwardRef(function(e,t){let{id:n,invert:r,position:i=`bottom-right`,hotkey:a=[`altKey`,`KeyT`],expand:o,closeButton:s,className:c,offset:ee,mobileOffset:l,theme:u=`light`,richColors:d,duration:f,style:m,visibleToasts:ne=k,toastOptions:h,dir:g=R(),gap:_=N,icons:v,containerAriaLabel:y=`Notifications`}=e,[b,x]=p.useState([]),S=p.useMemo(()=>n?b.filter(e=>e.toasterId===n):b.filter(e=>!e.toasterId),[b,n]),C=p.useMemo(()=>Array.from(new Set([i].concat(S.filter(e=>e.position).map(e=>e.position)))),[S,i]),[T,E]=p.useState([]),[D,O]=p.useState(!1),[A,j]=p.useState(!1),[M,P]=p.useState(u===`system`?typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`:u),F=p.useRef(null),I=a.join(`+`).replace(/Key/g,``).replace(/Digit/g,``),L=p.useRef(null),z=p.useRef(!1),B=p.useCallback(e=>{x(t=>(t.find(t=>t.id===e.id)?.delete||w.dismiss(e.id),t.filter(({id:t})=>t!==e.id)))},[]);return p.useEffect(()=>w.subscribe(e=>{if(e.dismiss){requestAnimationFrame(()=>{x(t=>t.map(t=>t.id===e.id?{...t,delete:!0}:t))});return}setTimeout(()=>{te.flushSync(()=>{x(t=>{let n=t.findIndex(t=>t.id===e.id);return n===-1?[e,...t]:[...t.slice(0,n),{...t[n],...e},...t.slice(n+1)]})})})}),[b]),p.useEffect(()=>{if(u!==`system`){P(u);return}if(u===`system`&&(window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?P(`dark`):P(`light`)),typeof window>`u`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`);try{e.addEventListener(`change`,({matches:e})=>{P(e?`dark`:`light`)})}catch{e.addListener(({matches:e})=>{try{P(e?`dark`:`light`)}catch(e){console.error(e)}})}},[u]),p.useEffect(()=>{b.length<=1&&O(!1)},[b]),p.useEffect(()=>{let e=e=>{if(a.every(t=>e[t]||e.code===t)){var t;O(!0),(t=F.current)==null||t.focus()}e.code===`Escape`&&(document.activeElement===F.current||F.current?.contains(document.activeElement))&&O(!1)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[a]),p.useEffect(()=>{if(F.current)return()=>{L.current&&(L.current.focus({preventScroll:!0}),L.current=null,z.current=!1)}},[F.current]),p.createElement(`section`,{ref:t,"aria-label":`${y} ${I}`,tabIndex:-1,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-atomic":`false`,suppressHydrationWarning:!0},C.map((t,n)=>{let[i,a]=t.split(`-`);return S.length?p.createElement(`ol`,{key:t,dir:g===`auto`?R():g,tabIndex:-1,ref:F,className:c,"data-sonner-toaster":!0,"data-sonner-theme":M,"data-y-position":i,"data-x-position":a,style:{"--front-toast-height":`${T[0]?.height||0}px`,"--width":`${re}px`,"--gap":`${_}px`,...m,...ae(ee,l)},onBlur:e=>{z.current&&!e.currentTarget.contains(e.relatedTarget)&&(z.current=!1,L.current&&=(L.current.focus({preventScroll:!0}),null))},onFocus:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||z.current||(z.current=!0,L.current=e.relatedTarget)},onMouseEnter:()=>O(!0),onMouseMove:()=>O(!0),onMouseLeave:()=>{A||O(!1)},onDragEnd:()=>O(!1),onPointerDown:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||j(!0)},onPointerUp:()=>j(!1)},S.filter(e=>!e.position&&n===0||e.position===t).map((n,i)=>p.createElement(ie,{key:n.id,icons:v,index:i,toast:n,defaultRichColors:d,duration:h?.duration??f,className:h?.className,descriptionClassName:h?.descriptionClassName,invert:r,visibleToasts:ne,closeButton:h?.closeButton??s,interacting:A,position:t,style:h?.style,unstyled:h?.unstyled,classNames:h?.classNames,cancelButtonStyle:h?.cancelButtonStyle,actionButtonStyle:h?.actionButtonStyle,closeButtonAriaLabel:h?.closeButtonAriaLabel,removeToast:B,toasts:S.filter(e=>e.position==n.position),heights:T.filter(e=>e.position==n.position),setHeights:E,expandByDefault:o,gap:_,expanded:D,swipeDirections:e.swipeDirections}))):null}))}),B=ee();function V({...e}){return(0,B.jsx)(o,{"data-slot":`dialog`,...e})}function oe({...e}){return(0,B.jsx)(a,{"data-slot":`dialog-portal`,...e})}function se({className:e,...t}){return(0,B.jsx)(c,{"data-slot":`dialog-overlay`,className:f(`fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,e),...t})}function H({className:e,children:t,showCloseButton:r=!0,...i}){return(0,B.jsxs)(oe,{children:[(0,B.jsx)(se,{}),(0,B.jsxs)(s,{"data-slot":`dialog-content`,className:f(`fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-[var(--miravo-radius-stadium-sm)] bg-background p-4 text-sm ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm 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`,e),...i,children:[t,r&&(0,B.jsxs)(n,{"data-slot":`dialog-close`,render:(0,B.jsx)(u,{variant:`ghost`,className:`absolute top-2 right-2`,size:`icon-sm`}),children:[(0,B.jsx)(d,{}),(0,B.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function ce({className:e,...t}){return(0,B.jsx)(`div`,{"data-slot":`dialog-header`,className:f(`flex flex-col gap-2`,e),...t})}function U({className:e,showCloseButton:t=!1,children:r,...i}){return(0,B.jsxs)(`div`,{"data-slot":`dialog-footer`,className:f(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-[var(--miravo-radius-stadium-sm)] border-t p-4 sm:flex-row sm:justify-end`,e),...i,children:[r,t&&(0,B.jsx)(n,{render:(0,B.jsx)(u,{variant:`outline`}),children:`Close`})]})}function le({className:e,...t}){return(0,B.jsx)(r,{"data-slot":`dialog-title`,className:f(`text-base leading-none font-medium`,e),...t})}function W({className:e,...t}){return(0,B.jsx)(i,{"data-slot":`dialog-description`,className:f(`text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,e),...t})}export{ce as a,D as c,U as i,H as n,le as o,W as r,z as s,V 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{T as r,b as i,c as a,d as o,f as s,l as c,m as l,n as u,s as d}from"./dom-Cm_OH5jc.js";import{n as f,t as ee}from"./by-path-VBqTBdlG.js";import{A as p,B as m,C as te,D as h,E as g,F as _,H as v,L as y,P as b,V as x,X as ne,_ as re,a as S,b as ie,c as ae,g as C,h as oe,i as se,j as ce,k as le,n as ue,o as de,r as fe,s as pe,t as me,w as he,x as ge}from"./status-CZFZLqVk.js";import{i as _e,n as ve,r as ye,t as be}from"./tank-THHXGdzg.js";import{t as xe}from"./stages-hidkaJPI.js";import{a as Se,n as Ce,o as we,r as Te,t as Ee}from"./boiler-CWAR1Nq2.js";var De=[[`boilerA`,`hot-water-boiler`,`heat-plant`,`boilers`,0],[`boilerB`,`hot-water-boiler`,`heat-plant`,`boilers`,1],[`boilerC`,`hot-water-boiler`,`heat-plant`,`boilers`,2],[`primaryA`,`centrifugal-pump`,`heat-plant`,`primary-loop`,0],[`primaryB`,`centrifugal-pump`,`heat-plant`,`primary-loop`,1],[`accumulator`,`storage-tank`,`heat-plant`,`primary-loop`,0],[`networkA`,`centrifugal-pump`,`network`,`trunk-main`,0],[`networkB`,`centrifugal-pump`,`network`,`trunk-main`,1],[`hospital`,`heat-substation`,`customers`,`hospital`,0],[`university`,`heat-substation`,`customers`,`university`,0],[`residential`,`heat-substation`,`customers`,`residential`,0],[`office`,`heat-substation`,`customers`,`office-park`,0]],Oe=e=>ee(De,e);function ke(e){let t=(e,t,n)=>({key:e,assetId:e,name:t,kind:`utility`,area:n});return[t(e.boilerA,`Boiler 1 (lead)`,`Heat plant`),t(e.boilerB,`Boiler 2`,`Heat plant`),t(e.boilerC,`Boiler 3`,`Heat plant`),t(e.accumulator,`Thermal accumulator`,`Heat plant`),t(e.primaryA,`Primary pump A`,`Heat plant`),t(e.primaryB,`Primary pump B`,`Heat plant`),t(e.networkA,`Network pump A`,`Network`),t(e.networkB,`Network pump B`,`Network`),t(e.hospital,`Hospital substation`,`Customers`),t(e.university,`University substation`,`Customers`),t(e.residential,`Residential substation`,`Customers`),t(e.office,`Office park substation`,`Customers`)]}var Ae=3600/(4186*30*.97),je=8,Me=e=>Number(e.dataset.win)*37%101;function Ne(e){let{svg:t,P:n,feed:i}=e,o=(e,t)=>i.num(e,t),s=u(t,`[data-valve]`).map(e=>{let n=pe(e),r=e=>u(t,`[data-asset="${n}"] ${e}`),i=r(`[data-spin="sub"]`)[0];return{id:n,el:e,at:d(e.dataset.valve),rotor:i,rotorAt:ae(i?.dataset.at),rotorR:Number(i?.dataset.radius)||2,foul:r(`[data-foul]`)[0],act:r(`[data-act]`)[0],wins:r(`[data-win]`).sort((e,t)=>Me(e)-Me(t)),valve:0,rate:0,spin:0,lit:-1,heat:ge(te(t,n),3,2),ret:ae(e.dataset.ret)}}),c=new Map(s.map(e=>[e.id,e]));return{draw(t,c,l){let u=e.reducedMotion();for(let e of s){e.valve=re(e.valve,C(o(e.id,`control_valve_position`)/100),t,.6,u);let[s=0,d=0,f=0,ee=4]=e.at;if(a(e.el,`d`,r([s,d],[s,d],f,n)+r([s-1.6,d],[s+1.6,d],f+e.valve*ee,n)),e.rate=re(e.rate,o(e.id,`circulation_pump_speed`)/100*je,t,.8,u),u||(e.spin+=e.rate*t),e.rotor){let[t,i,o]=e.rotorAt,s=``;for(let a=0;a<3;a++){let c=e.spin+a*oe/3;s+=r([t,i],[t+Math.cos(c)*e.rotorR,i+Math.sin(c)*e.rotorR],o,n)}a(e.rotor,`d`,s)}e.foul&&(e.foul.style.opacity=l&&he(i,e.id,`hx_fouling`)?`0.85`:`0`);let p=l&&he(i,e.id,`valve_stuck`);a(e.act,`data-s`,p&&Math.sin(c*6)>0?`a`:null),e.heat.draw(l&&!u&&he(i,e.id,`low_delta_t`),c,n,e.ret);let m=Math.round(C(o(e.id,`occupancy_pu`))*e.wins.length);if(m!==e.lit){e.lit=m;for(let[t,n]of e.wins.entries())a(n,`data-on`,t<m?``:null)}}},bar(e){return c.has(e)?C(o(e,`heat_delivered_kw`)/i.param(e,`design_load_kw`,500)):void 0},flowPu(e){let t=i.param(e,`design_load_kw`,0)*Ae;return t>0?C(o(e,`primary_flow`)/t):0}}}var w=e=>e>.002?6+26*C(e*2):0,Pe=e=>{let{svg:t,feed:n,ids:r}=e,i=ie(t),a=fe(e,i),o=Ee(e,i),s=be(e),c=Ne(e),l=[a,o,s,c],u=se(e,e=>ue(n,e,`availability`)),d=de(e,{needle:e=>o.needle(e)??0,bar:e=>l.reduce((t,n)=>t??n.bar(e),void 0)??0,alertsHigh:()=>!0,ready:()=>!0}),f=()=>a.flowPu(r.primaryA)+a.flowPu(r.primaryB),ee=()=>a.flowPu(r.networkA)+a.flowPu(r.networkB),p=[r.boilerA,r.boilerB,r.boilerC],m=e=>{let t=p.filter(e=>o.circulating(e)).length;return o.circulating(e)?f()/t:0},te=new Map([[`hospital`,r.hospital],[`university`,r.university],[`residential`,r.residential],[`office`,r.office]]),h=S(e,({id:e})=>{switch(e){case`sup-1`:return w(m(r.boilerA));case`sup-2`:case`ret-2`:return w(m(r.boilerB));case`sup-3`:case`ret-3`:return w(m(r.boilerC));case`sup-23`:return w(m(r.boilerB)+m(r.boilerC));case`to-acc`:return w(f());case`ret-a`:case`suction-pa`:return w(a.flowPu(r.primaryA));case`ret-collect`:return w(f());case`ret-12`:return w(m(r.boilerA)+m(r.boilerB));case`ret-1`:return w(m(r.boilerA));case`ret-b`:case`suction-b`:return w(a.flowPu(r.primaryB));case`suction-a`:case`sup-a`:return w(a.flowPu(r.networkA));case`sup-b`:case`suction-nb`:return w(a.flowPu(r.networkB));case`acc-out`:case`trunk-sup`:case`trunk-ret`:return w(ee());default:{let t=te.get(e.slice(0,e.lastIndexOf(`-`)));return t?w(c.flowPu(t)):0}}});return{data(e){u.draw(e)},draw({sdt:e,t,introDone:n}){h.draw(e),d.draw(e,t);for(let r of l)r.draw(e,t,n)},resync(){},status:e=>me(n,e,`availability`)}},Fe=e(t(),1),Ie=11;function Le(e,t){let{k:n,P:r,S:i,L:a,slab:o,cyl:s}=e,{plan:c,floors:l,kind:u}=t,d=l*14+4,f=[],ee=e=>a(e,{tone:`faint`}),p=Array.from({length:l-1},(e,t)=>n.sideSeam(c,4+(t+1)*14,r,2)).join(``);f.push(i(n.slabOf(c,0,d,r,2,.6),{tone:u===`office`?`lo`:`mid`,inner:ee(p)})),f.push(a(n.planOutline(n.insetPlan(c,2),d,r,2),{tone:`lo`})),f.push(o({x:c.x+c.w*.2,y:c.y+c.d*.2,w:18,d:12,r:1},d,7,{tone:`mid`},2,.3)),f.push(s(c.x+c.w*.7,c.y+c.d*.35,4,d,9,{tone:`mid`},20));let m=[],te=0,h=(e,t,n)=>`<path class="bd-win" data-win="${te++}" d="M${e.toFixed(1)} ${(-(t+8)).toFixed(1)}H${(e+n).toFixed(1)}V${(-t).toFixed(1)}H${e.toFixed(1)}Z"/>`,g=u===`office`;for(let[t,i,a]of[[c.w,e.front(c.y+c.d),c.x],[c.d,n.sideMatrix([c.x+c.w,c.y+c.d],0,r,`right`),0]]){let e=Math.max(1,Math.floor((t-6)/Ie)),n=a+(t-e*Ie)/2,r=[];for(let t=0;t<l;t++){let i=7+t*14;if(g)r.push(h(n+1,i,e*Ie-2));else for(let t=0;t<e;t++)r.push(h(n+t*Ie+2,i,Ie-4))}m.push(`<g transform="${i}">${r.join(``)}</g>`)}f.push(...m);let _=c.x+c.w/2,v=c.y+c.d,y=(e,t,n,r,i,a=0)=>{let l=c.x+c.w/2+a;f.push(o({x:l-4.5,y:v,w:9,d:.6,r:.2},0,n-1,{tone:`lo`},2,0),...[-1,1].flatMap(r=>[s(l+r*(e-3)/2,v+t-1.2,1.7,0,.8,{tone:`lo`},14),s(l+r*(e-3)/2,v+t-1.2,i,.8,n-.8,{tone:`mid`},12)]),o({x:l-e/2,y:v,w:e,d:t,r:.5},n,1.4,{tone:r},2,.2))};if(u===`hospital`)f.push(o({x:_-6,y:v-1,w:12,d:1.2,r:.4},d-14,12,{tone:`lo`},2,0)),f.push(`<g transform="${e.front(v+.25)}"><path class="bd-cross" d="M${_-1.4} ${-(d-3.6)}H${_+1.4}V${-(d-6.6)}H${_+4.4}V${-(d-9.4)}H${_+1.4}V${-(d-12.4)}H${_-1.4}V${-(d-9.4)}H${_-4.4}V${-(d-6.6)}H${_-1.4}Z"/></g>`),y(24,8,12,`mid`,.9);else if(u===`university`)y(30,9,18,`mid`,1.8,-16);else if(u===`residential`)for(let e=1;e<l;e++)f.push(o({x:c.x+4,y:v,w:c.w-8,d:4,r:.4},4+e*14,1,{tone:`mid`},2,0));else y(20,7,14,`mid`,.9);return f.join(``)}var T=1.8,E=4,D=-14,O=[-5,5],k=[10,26],A=[26,k[0]],j=13,Re=17.5,ze=2.2,Be=-26,M=[[O[0],28,k[1]],[O[0],28,k[0]]],Ve={x:-16,y:-24,w:34,d:54,r:2};function He(e,t){let{k:n,G:r,P:i,at:a,S:o,L:s,D:c,slab:l,cyl:u,hmi:d,screws:f,faceRule:ee}=e,p=[];p.push(l({x:-14,y:-22,w:30,d:50,r:2},0,3,{tone:`lo`},3,.4)),p.push(f(n.corners({x:-14,y:-22,w:30,d:50},2.4),3)),p.push(l({x:-1.2,y:D-6,w:2.4,d:3,r:.4},3,36,{tone:`mid`},2,.2),l({x:-1.4,y:D-6,w:2.8,d:E-D+9,r:.4},36,2.6,{tone:`mid`},2,.2)),p.push(l({x:-10,y:D-3,w:20,d:3,r:.6},3,33,{tone:`mid`},2,.3));let te=[];for(let e=D+.8;e<E-.4;e+=.9)te.push(n.segment([9,e,6],[9,e,33],i));p.push(o(n.slabOf({x:-9,y:D,w:18,d:E-D,r:.4},5,29,i,2,.2),{tone:`lo`,inner:s(te.join(``),{tone:`faint`})}));let h=[[9.1,D+.4,6],[9.1,E-.4,6],[9.1,E-.4,33],[9.1,D+.4,33]].map(e=>a(e));p.push(`<path class="sf-grime" data-foul="" style="opacity:0" d="${n.pathOf(h,!0)}"/>`),p.push(l({x:-11,y:E,w:22,d:3.4,r:.6},3,35,{tone:`mid`},2,.3));let g=E+3.4;p.push(c([-10.4,10.4].flatMap(e=>[7,31].map(t=>a([e,g,t]))),{size:.5}));for(let e of O)for(let t of k){let n=r.frameAlong([e,g,t],[0,1,0]);p.push(o(r.disc(0,2.2,T+.2,n,i),{tone:`mid`}),o(r.disc(2.2,3,T+1.4,n,i),{tone:`mid`}))}let _=(e,t)=>[O[e],g+3,k[t]],[v,y]=M;p.push(m(e,[v,_(0,1)],T,`mid`,3,`heat`),m(e,[_(0,0),y],T,`mid`,3,`heatret`));for(let e of[v,y]){let t=r.frameAlong([e[0],e[1]-1.6,e[2]],[0,1,0]);p.push(o(r.disc(0,1.6,T+1.2,t,i),{tone:`mid`}))}let[b,,x]=v,ne=r.frameAlong([b,14,x],[0,1,0]);p.push(o(r.disc(0,1,T+1.4,ne,i),{tone:`mid`}),o(r.solidOf([[1,2.6],[2.6,3.6,1],[5.4,3.6,1],[7,2.6]],ne,i),{tone:`mid`}),o(r.disc(7,8,T+1.4,ne,i),{tone:`mid`}),u(b,18,1.2,x+3,4,{tone:`mid`,crease:`none`},12),u(b,18,4.4,x+7,2,{tone:`mid`},24),u(b,18,4.8,x+9,5,{tone:`mid`,crease:`lo`},28));let re=a([b+4.8,18,x+11.5]);p.push(`<path class="iso-line" data-tone="lit" data-valve="${b},21,${x+14},4" data-ret="${y[0]},${y[1]-4},${y[2]+2}" d=""/>`,`<circle class="sb-act" data-act="" cx="${re[0].toFixed(2)}" cy="${re[1].toFixed(2)}" r="0.6"/>`);let S=[O[1],g+14,k[1]],ie=(e,t)=>{let n=r.frameAlong([e,-30,t],[0,1,0]);return o(r.disc(0,1.2,T+2.6,n,i),{tone:`mid`})+o(r.disc(1.2,ze,T+1.4,n,i),{tone:`mid`})},ae=(e,t)=>u(e,Be,2.4,0,1,{tone:`lo`},18)+u(e,Be,.9,1,t-T-2.6,{tone:`mid`,crease:`none`},12)+u(e,Be,1.8,t-T-1.6,1,{tone:`mid`},16),C=-30+ze;return p.push(ie(j,A[0]),ie(j,A[1]),ae(j,A[1]),ae(Re,A[0]),l({x:j-1,y:Be-.9,w:Re-j+1.9,d:1.8,r:.3},A[0]-T-1.6,1,{tone:`mid`},2,0),m(e,[_(1,1),S,[j,S[1],A[0]],[j,C,A[0]]],T,`mid`,4,`heat`,[!0,!1]),m(e,[_(1,0),[O[1],g+16,k[0]],[j,g+16,k[0]],[j,C,A[1]]],T,`mid`,4,`heatret`,[!0,!1])),p.push(u(S[0],S[1],3.6,k[1]-3,6,{tone:`mid`},24)),p.push(u(S[0],S[1],3,k[1]+3,7,{tone:`mid`,crease:`lo`},24)),p.push(`<path class="iso-line" data-tone="lo" data-spin="sub" data-at="${S[0]},${S[1]},${k[1]+10}" data-radius="2.4" d=""/>`),p.push(l({x:-14,y:10,w:6,d:8,r:.6},3,22,{tone:`mid`},2,.3)),p.push(d(t,18,-13.6,-8.4,8,21)),p.push(ee(18,-13.6,4,5,2)),p.join(``)}var Ue=1e3,We={x:-380,y:-360,w:305,d:315,r:8},Ge={x:-60,y:-300,w:240,d:150,r:8},Ke={x:-380,y:-15,w:620,d:200,r:8},qe={x:-400,y:-380,w:660,d:585,r:16},Je=i([...l(qe,-21,-14),...l(We,-14,120),...l(Ge,-14,90),...l(Ke,-14,110)],Ue,620,{pad:22,azimuth:60}),Ye=[[-262,-335],[-262,-245],[-262,-155]],Xe=[-120,-255],Ze={r:34,h:118,windowX:6,panelX:40,nozzles:[{angle:180,z:80,r:3.4,role:`inlet`},{angle:0,z:80,r:3.4,role:`outlet`}]},Qe=[94,-130,0],N={primaryA:{c:[-255,-78],scale:1},primaryB:{c:[-130,-78],scale:1},networkA:{c:[0,-190],scale:1.15},networkB:{c:[135,-190],scale:1.15}},$e=[b[0]-Qe[0],b[1]-Qe[1],b[2]],et=[p[0]-Qe[0],p[1]-Qe[1],p[2]],tt=18,nt=(e,t,n,r,i)=>({key:e,skid:[t+n/2-tt,104],building:{kind:e,plan:{x:t-n/2,y:74-r,w:n,d:r,r:2},floors:i}}),rt=[nt(`hospital`,150,112,62,4),nt(`university`,-5,120,64,3),nt(`residential`,-158,68,56,5),nt(`office`,-300,92,58,4)],it=xe([...Ye.map((e,t)=>({key:`boiler${t}`,at:e,h:60})),{key:`accumulator`,at:Xe,h:Ze.h+12},...Object.entries(N).map(([e,t])=>({key:e,at:t.c,h:45})),...rt.flatMap(e=>[{key:`${e.key}-building`,at:[e.building.plan.x+e.building.plan.w/2,e.building.plan.y+e.building.plan.d/2],h:e.building.floors*14+4},{key:e.key,at:e.skid,h:40}])],Je),at=it.order,ot=it.slotDepths,st=it.depth,ct=(e,t)=>[e.c[0]+t[0]*e.scale,e.c[1]+t[1]*e.scale,t[2]*e.scale],P=(e,t,n,r)=>[t??e[0],n??e[1],r??e[2]],lt=e=>{let t=Ze.nozzles[e],[n,r,i]=t?ye(Ze,t):[0,0,0];return[Xe[0]+n,Xe[1]+r,i]},F=(Ye[0]?.[0]??0)+Se[0],I=(Ye[0]?.[0]??0)+Te[0],ut=Se[2],L=80,R=84,[dt=0,z=0,ft=0]=Ye.map(e=>e[1]),pt=lt(0),B=lt(1),{primaryA:V,primaryB:H,networkA:U,networkB:W}=N,G=e=>ct(e,[et[0],et[1],et[2]-3]),K=e=>ct(e,$e),mt=10,q=e=>P(K(e),K(e)[0]+mt*e.scale,null,null),ht=72,J=-106,gt=K(V)[2],Y=220,X=232,_t=3.2*N.networkA.scale,vt=100,yt=vt-18,bt=-40,xt=M[0][2],Z=M[1][2],Q=104+M[0][1]+30,St=Math.min(...rt.map(e=>e.skid[0]))+M[0][0]-14,Ct={z:10,flanged:!0,routes:[{id:`sup-1`,medium:`heat`,r:3.2,pts:[[F,dt,ut],[F,dt,L],[F,pt[1],L]]},{id:`sup-23`,medium:`heat`,r:3.2,reverse:!0,pts:[[F,pt[1],L],[F,z,L]]},{id:`sup-3`,medium:`heat`,r:3.2,reverse:!0,pts:[[F,z,L],[F,ft,L],[F,ft,ut]]},{id:`sup-2`,medium:`heat`,r:3.2,pts:[[F,z,ut],[F,z,L]]},{id:`to-acc`,medium:`heat`,r:3.4,pts:[[F,pt[1],L],pt]},{id:`ret-b`,medium:`heatret`,r:3.2,fromStub:!0,pts:[G(H),P(G(H),null,null,ht),P(G(V),null,null,ht)]},{id:`ret-a`,medium:`heatret`,r:3.2,fromStub:!0,pts:[G(V),P(G(V),null,null,ht)]},{id:`ret-collect`,medium:`heatret`,r:3.2,bend:6,pts:[P(G(V),null,null,ht),P(G(V),I,null,ht),P(G(V),I,null,R),[I,ft,R]]},{id:`ret-12`,medium:`heatret`,r:3.2,pts:[[I,ft,R],[I,z,R]]},{id:`ret-1`,medium:`heatret`,r:3.2,pts:[[I,z,R],[I,dt,R],[I,dt,ut]]},{id:`ret-2`,medium:`heatret`,r:3.2,pts:[[I,z,R],[I,z,ut]]},{id:`ret-3`,medium:`heatret`,r:3.2,pts:[[I,ft,R],[I,ft,ut]]},{id:`acc-out`,medium:`heat`,r:3.4,pts:[B,P(q(U),null,B[1],B[2])]},{id:`suction-nb`,medium:`heat`,r:3.4,pts:[P(q(U),null,B[1],B[2]),P(B,q(W)[0],null,null),P(q(W),null,B[1],null),q(W),K(W)]},{id:`suction-a`,medium:`heat`,r:3.4,pts:[P(q(U),null,B[1],B[2]),P(q(U),null,B[1],null),q(U),K(U)]},...rt.flatMap(e=>{let[t,n]=e.skid,r=[t+M[0][0],n+M[0][1],xt],i=[t+M[1][0],n+M[1][1],Z];return[{id:`${e.key}-sup`,medium:`heat`,r:1.8,pts:[P(r,null,Q,null),r]},{id:`${e.key}-ret`,medium:`heatret`,r:1.8,pts:[i,P(i,null,Q,null)]}]}),{id:`trunk-ret`,medium:`heatret`,r:3.6,blind:[!0,!1],pts:[[St,Q,Z],[X,Q,Z],[X,J,Z],[X,J,gt],P(q(H),null,J,null)]},{id:`suction-pa`,medium:`heatret`,r:3.6,pts:[P(q(H),null,J,null),P(q(V),null,J,null),q(V),K(V)]},{id:`sup-a`,medium:`heat`,r:_t,fromStub:!0,pts:[G(U),P(G(U),null,null,vt),P(G(W),null,null,vt)]},{id:`trunk-sup`,medium:`heat`,r:3.6,blind:[!1,!0],pts:[P(G(W),null,null,vt),[Y,G(U)[1],vt],[Y,G(U)[1],yt],[Y,bt,yt],[Y,bt,xt],[Y,Q,xt],[St,Q,xt]]},{id:`sup-b`,medium:`heat`,r:_t,fromStub:!0,pts:[G(W),P(G(W),null,null,vt)]},{id:`suction-b`,medium:`heatret`,r:3.2,pts:[K(H),q(H),P(q(H),null,J,null)]}],posts:[[Y,-130,3.6,yt],[Y,-70,3.6,yt],[Y,0,3.6,xt,0],[Y,80,3.6,xt,0],[X,-60,3.6,Z],[X,40,3.6,Z,0],[X,120,3.6,Z,0],...[150,50,-40].map(e=>[e,J,3.6,gt]),[-120,J,3.6,gt,0],...[-230,-80,75,140].map(e=>[e,Q,3.6,Z,0])]},$=n(),wt=(e,t)=>we(e,t,10),Tt=(e,t)=>_(e,t,`heatret`,!0),Et=(e,t)=>_(e,t,`heat`,!0),Dt=(e,t)=>_e(e,t,Ze),Ot=ve(Ze);function kt({id:e,spec:t,intro:n}){let r=s();return(0,$.jsx)(o,{html:(0,Fe.useMemo)(()=>Le(r,t),[r,t]),asset:e,intro:n})}function At({ids:e}){let t=s(),n=g(Ct,st),r=(0,Fe.useMemo)(()=>y(t,qe)+t.plinth(We)+t.plinth(Ge)+t.plinth(Ke),[t]),i=e=>(0,$.jsx)(o,{html:`${n.layers[e]??``}<g data-flows="${e}" data-depth="${e===0?-1e9:ot[e-1]??0}"></g>`,data:{pipes:``}},`pipes-${e}`),a=(e,t,n,r)=>(0,$.jsx)(h,{from:Qe,to:le(t.c),scale:t.scale,children:(0,$.jsx)(c,{id:e,plan:ce,intro:r,draw:n})}),l=[e.boilerA,e.boilerB,e.boilerC],u={hospital:e.hospital,university:e.university,residential:e.residential,office:e.office},d={accumulator:(0,$.jsx)(h,{to:le(Xe),children:(0,$.jsx)(c,{id:e.accumulator,plan:Ot,intro:5,draw:Dt})}),primaryA:a(e.primaryA,N.primaryA,Tt,6),primaryB:a(e.primaryB,N.primaryB,Tt,7),networkA:a(e.networkA,N.networkA,Et,8),networkB:a(e.networkB,N.networkB,Et,9)};for(let[e,t]of Ye.entries())d[`boiler${e}`]=(0,$.jsx)(h,{to:le(t),children:(0,$.jsx)(c,{id:l[e]??``,plan:Ce,intro:2+e,draw:wt})});for(let[e,t]of rt.entries()){let n=u[t.key];d[`${t.key}-building`]=(0,$.jsx)(kt,{id:n,spec:t.building,intro:10+e}),d[t.key]=(0,$.jsx)(h,{to:le(t.skid),children:(0,$.jsx)(c,{id:n,plan:Ve,intro:11+e,draw:He})})}return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(o,{html:r,data:{plinth:``}}),i(0),at.flatMap((e,t)=>[(0,$.jsx)(`g`,{children:d[e.key]},e.key),i(t+1)])]})}var jt=x(Je),Mt=v(jt,Ct,st),Nt=ne({layout:{width:Ue,height:620,label:`Isometric model of the District Heating network: the heat plant with three gas boilers, the thermal accumulator and two primary pumps; the network pump house with two trunk pumps; and four customers (a hospital, a university, a residential block and an office park), each with its substation, joined by the supply and return trunk main. Every moving part follows live values from the running engine.`,kit:jt,flows:Mt.flows,joints:Mt.joints,Scene:At,compose:Pe},resolve:Oe,things:ke,caption:`heat plant · network · customers`,mismatch:`This floor expects the District Heating network: three boilers, the accumulator and two primary pumps, two network pumps, and the hospital, university, residential and office substations, by area and line.`,statusBasis:`availability`,Overview:f,tab:`Network`});export{Nt as heatingFloor};
@@ -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";var i=e(n(),1),a=e=>{let t=(Math.round(e*10)/10).toFixed(1).replace(/\.0$/,``);return t===`-0`?`0`:t},o=e=>e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`),s=e=>Object.entries(e).filter(([,e])=>e!==void 0&&e!==!1).map(([e,t])=>` ${e}="${o(String(t))}"`).join(``);function c(e,{tone:t=`hi`,crease:n=`faint`,halo:r=!1,lit:i=!1,flat:a=!1,className:o,inner:c=``}={}){let l=[];return r&&l.push(`<path class="iso-halo" d="${e.fill}"/>`),l.push(`<path class="iso-fill" d="${e.fill}"/>`),a||(e.shades.forEach((e,t)=>{e&&l.push(`<path class="iso-shade" data-shade="${t}" d="${e}"/>`)}),l.push(`<path class="iso-top" d="${e.top}"/>`)),n!==`none`&&e.crease&&l.push(`<path class="iso-line iso-crease" data-tone="${n}" d="${e.crease}"/>`),n!==`none`&&e.bevel&&l.push(`<path class="iso-line iso-bevel" data-tone="${n}" d="${e.bevel}"/>`),c&&l.push(c),l.push(`<path class="iso-line iso-edge" data-tone="${t}" d="${e.outline}"/>`),`<g${s({class:o?`iso-solid ${o}`:`iso-solid`,"data-lit":i?``:void 0,"data-seamless":e.seamless?``:void 0})}>${l.join(``)}</g>`}function l(e,{tone:t=`lo`,dotted:n=!1,dashed:r=!1,flow:i=!1,className:a,free:o}={}){return e?`<path${s({class:a?`iso-line ${a}`:`iso-line`,"data-tone":t,"data-free":o===!0?``:o||void 0,"data-dotted":n?``:void 0,"data-dashed":r?``:void 0,"data-flow":i?``:void 0,d:e})}/>`:``}function u(e,{size:t=.5,tone:n=`mid`,pulse:r=!1}={}){return`<g class="iso-dots" data-tone="${n}">${e.map(([e,n,i],o)=>{let s=i!==void 0&&i<1?` fill-opacity="${Math.max(0,i).toFixed(2)}"`:``,c=r?` data-pulse="" style="--pulse-at:${o*137%1600}ms"`:``;return`<circle cx="${a(e)}" cy="${a(n)}" r="${t}"${s}${c}/>`}).join(``)}</g>`}function d(e,t={}){let n=new Map;for(let{d:t,alpha:r}of e){if(!t||!(r>.02))continue;let e=Math.min(1,Math.round(r*20)/20);n.set(e,(n.get(e)??``)+t)}return[...n].map(([e,n])=>e>=1?l(n,t):`<g opacity="${e.toFixed(2)}">${l(n,t)}</g>`).join(``)}var f=t({boxCorners:()=>R,cameraOf:()=>v,circleRing:()=>k,corners:()=>L,cylinder:()=>A,depthOf:()=>x,dotsSvg:()=>u,fadedSvg:()=>d,fitProjection:()=>q,haloOf:()=>H,insetPlan:()=>j,iso:()=>y,lineOnTop:()=>P,lineSvg:()=>l,onTop:()=>M,pathOf:()=>S,planOutline:()=>N,radialTicks:()=>V,ring:()=>I,roundedPlan:()=>C,segment:()=>F,sideArc:()=>te,sideMatrix:()=>K,sideRing:()=>B,sideSeam:()=>z,slabOf:()=>O,solidSvg:()=>c,translateAlong:()=>W}),p=45,m=30,h=4,g=Math.PI/180,_=Math.sqrt(1.6);function v({scale:e,azimuth:t=p,elevation:n=m}){let r=t*g,i=n*g;return{sinA:Math.sin(r),cosA:Math.cos(r),sinE:Math.sin(i),cosE:Math.cos(i),k:e*_}}function y([e,t,n],r){let{origin:i}=r,{sinA:a,cosA:o,sinE:s,cosE:c,k:l}=v(r);return[i[0]+(e*a-t*o)*l,i[1]+((e*o+t*a)*s-n*c)*l]}function b(e){let{sinA:t,cosA:n}=v(e);return[n,t]}function x([e,t,n],r){let{sinA:i,cosA:a,sinE:o,cosE:s}=v(r);return(e*a+t*i)*s+n*o}function S(e,t=!1){return e.length?e.map(([e,t],n)=>`${n?`L`:`M`}${a(e)} ${a(t)}`).join(``)+(t?`Z`:``):``}function C({x:e,y:t,w:n,d:r,r:i},a=8){let o=Math.max(0,Math.min(i,n/2,r/2)),s=[[e+n-o,t+o,-90],[e+n-o,t+r-o,0],[e+o,t+r-o,90],[e+o,t+o,180]],c=[];for(let[e,t,n]of s){let r=o>0?a:0;for(let i=0;i<=r;i++){let a=(n+(r?90*i/r:45))*g;c.push([e+o*Math.cos(a),t+o*Math.sin(a)])}}return c}function w(e){let t=0;for(let n=0;n<e.length;n++){let[r,i]=e[n],[a,o]=e[(n+1)%e.length];t+=r*o-a*i}return t/2}var T=e=>w(e)<0?[...e].reverse():[...e];function ee(e){let t=[...e].sort((e,t)=>e[0]-t[0]||e[1]-t[1]);if(t.length<3)return t;let n=(e,t,n)=>(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0]),r=[];for(let e of t){for(;r.length>=2&&n(r[r.length-2],r[r.length-1],e)<=0;)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)<=0;)i.pop();i.push(r)}return[...r.slice(0,-1),...i.slice(0,-1)]}function E(e,t){let n=e.length,r=[],i=e.findIndex((t,r)=>t!==e[(r+n-1)%n]);if(i<0)return e[0]===t?[Array.from({length:n+1},(e,t)=>t%n)]:[];let a=null;for(let o=0;o<n;o++){let s=(i+o)%n;e[s]===t?(a||=[s],a.push((s+1)%n)):a&&=(r.push(a),null)}return a&&r.push(a),r}function D(e,t,n,r,i){let a=e.length,o=w(e)>0,[s,c]=b(r),{sinA:l,cosA:u}=v(r),d=e.map(([t,n],r)=>{let[i,s]=e[(r+1)%a],c=i-t,l=s-n,u=Math.hypot(c,l)||1;return o?[l/u,-c/u]:[-l/u,c/u]}),f=d.map(([e,t])=>e*s+t*c>1e-9),p=e.map(([e,i])=>y([e,i,t+n],r)),m=e.map(([e,n])=>y([e,n,t],r)),g=(e,t)=>e[t],_=[],x=[];for(let e of E(f,!1))_.push(S(e.map(e=>g(p,e))));for(let e of E(f,!0))x.push(S(e.map(e=>g(p,e)))),n>0&&_.push(S(e.map(e=>g(m,e))));if(n>0)for(let e=0;e<a;e++)f[(e+a-1)%a]!==f[e]&&_.push(S([g(p,e),g(m,e)]));let C=S(ee([...p,...m]),!0),D=Array.from({length:h},()=>[]);if(n>0){let[e,t]=[-l,u];for(let n=0;n<a;n++){if(!f[n])continue;let[r,i]=d[n],o=(r*e+i*t+1)/2,s=Math.min(h-1,Math.max(0,Math.floor(o*h))),c=(n+1)%a;D[s].push(S(T([g(p,n),g(p,c),g(m,c),g(m,n)]),!0))}}let O;if(i>0){let o=e.map(([e,t],n)=>{let[r,o]=d[(n+a-1)%a],[s,c]=d[n],l=r+s,u=o+c,f=Math.hypot(l,u)||1;return[e-l/f*i,t-u/f*i]}).map(([e,i])=>y([e,i,t+n],r));O=E(f,!0).map(e=>S([g(p,e[0]),...e.slice(1,-1).map(e=>g(o,e)),g(p,e[e.length-1])])).join(``)}return{fill:C,outline:_.join(``),crease:x.join(``),top:S(T(p),!0),shades:D.map(e=>e.join(``)),bevel:O}}function O(e,t,n,r,i=8,a=0){return D(C(e,i),t,n,r,a)}function k(e,t,n,r=40){return Array.from({length:r},(i,a)=>{let o=a/r*Math.PI*2;return[e+n*Math.cos(o),t+n*Math.sin(o)]})}function A(e,t,n,r,i,a,o=32,s=0){return D(k(e,t,n,o),r,i,a,s)}var j=({x:e,y:t,w:n,d:r,r:i},a)=>({x:e+a,y:t+a,w:n-a*2,d:r-a*2,r:Math.max(0,i-a)});function M(e,t,n,r=!1){return S(e.map(([e,r])=>y([e,r,t],n)),r)}var N=(e,t,n,r=8)=>M(C(e,r),t,n,!0),P=(e,t,n,r)=>M([e,t],n,r),F=(e,t,n)=>S([y(e,n),y(t,n)]),I=(e,t,n,r,i,a=40)=>M(k(e,t,n,a),r,i,!0);function L({x:e,y:t,w:n,d:r},i=0){return[[e+i,t+i],[e+n-i,t+i],[e+i,t+r-i],[e+n-i,t+r-i]]}function R({x:e,y:t,w:n,d:r},i,a){let o=[];for(let s of[e,e+n])for(let e of[t,t+r])for(let t of[i,a])o.push([s,e,t]);return o}function te(e,t,n,r,i,a=24){let[o,s]=b(i),c=Math.atan2(s,o),l=[];for(let o=0;o<=a;o++){let s=c-Math.PI/2+o/a*Math.PI;l.push(y([e+n*Math.cos(s),t+n*Math.sin(s),r],i))}return S(l)}function z(e,t,n,r=8){let i=C(e,r),a=i.length,o=w(i)>0,[s,c]=b(n);return E(i.map(([e,t],n)=>{let[r,l]=i[(n+1)%a],u=r-e,d=l-t,[f,p]=o?[d,-u]:[-d,u];return f*s+p*c>1e-9}),!0).map(e=>S(e.map(e=>{let[r,a]=i[e];return y([r,a,t],n)}))).join(``)}function B(e,t,n,r,i=20){let[a,o,s]=e,c=[];for(let e=0;e<i;e++){let l=e/i*Math.PI*2,u=t*Math.cos(l),d=t*Math.sin(l);c.push(y(n===`x`?[a,o+u,s+d]:[a+u,o,s+d],r))}return S(c,!0)}function V(e,t,n,r,i,a,o,s,c=0,l=Math.PI*2){let u=[],d=[],f=Math.abs(l-Math.PI*2)<1e-9?r:r+1;for(let p=0;p<f;p++){let f=c+p/r*l,m=p%i===0,h=n-(m?o[1]:o[0]),g=Math.sin(f),_=-Math.cos(f);(m?d:u).push(P([e+g*h,t+_*h],[e+g*n,t+_*n],a,s))}return{minor:u.join(``),major:d.join(``)}}var H=(e,t,n,r)=>O(e,t,n,r).fill;function ne(e,[t,n,r]){let i=y([0,0,0],e),a=y([t,n,r],e);return[a[0]-i[0],a[1]-i[1]]}var U=e=>Math.round(e*100)/100;function W(e,t){let[n,r]=ne(e,t);return`translate(${U(n)} ${U(r)})`}var G=e=>Math.round(e*1e3)/1e3,re=(e,t,n)=>`matrix(${G(e[0])} ${G(e[1])} ${G(t[0])} ${G(t[1])} ${G(n[0])} ${G(n[1])})`;function K(e,t,n,r){let i=y([e[0],e[1],t],n),a=e=>{let[t,r]=y(e,n);return[t-i[0],r-i[1]]},o=a([e[0]+1,e[1],t]),s=a([e[0],e[1]+1,t]),c=a([e[0],e[1],t+1]),l=[-c[0],-c[1]];return re(r===`left`?o:[-s[0],-s[1]],l,i)}function q(e,t,n,{pad:r=24,headroom:i=0,azimuth:a=p,elevation:o=m}={}){let s={origin:[0,0],scale:1,azimuth:a,elevation:o},c=e.map(e=>y(e,s)),l=c.map(([e])=>e),u=c.map(([,e])=>e),d=Math.min(...l),f=Math.max(...l),h=Math.min(...u),g=Math.max(...u),_=Math.min((t-r*2)/(f-d),(n-r*2-i)/(g-h));return{origin:[t/2-(d+f)/2*_,i+(n-i)/2-(h+g)/2*_],scale:_,azimuth:a,elevation:o}}var J=r(),Y=(0,i.createContext)(null),ie=Y.Provider;function X(){let e=(0,i.useContext)(Y);if(!e)throw Error(`Floor machines must render inside <FloorKitProvider value={kitFor(P)}>.`);return e}var Z=(0,i.memo)(function({html:e,asset:t,intro:n,className:r,data:a}){let o=(0,i.useMemo)(()=>({__html:e}),[e]),s={};for(let[e,t]of Object.entries(a??{}))s[`data-${e}`]=t;return(0,J.jsx)(`g`,{"data-asset":t,"data-intro":n,className:r,...s,dangerouslySetInnerHTML:o})});function ae({id:e,plan:t,intro:n,draw:r}){let a=X();return(0,J.jsx)(Z,{html:(0,i.useMemo)(()=>`<path class="iso-halo sf-contact" d="${H(j(t,2),0,.5,a.P)}"/><path class="sf-alarm" data-alarm="${e}" d="${H(t,0,1,a.P)}"/>${r(a,e)}`,[a,e,t,r]),asset:e,intro:n})}function oe(e){let t=X();return(0,i.useMemo)(()=>e(t),[t,e])}var se=`http://www.w3.org/2000/svg`;function ce(e,t){return e.querySelector(t)}function Q(e,t){return[...e.querySelectorAll(t)]}function le(e,t,n){e&&(n===null?e.hasAttribute(t)&&e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n))}function ue(e,t){e.style.opacity!==t&&(e.style.opacity=t);let n=Number(t)>0?``:`none`;e.style.display!==n&&(e.style.display=n)}var $=`data-rt`;function de(e,t,n){let r=document.createElementNS(se,e);for(let[e,n]of Object.entries(t))r.setAttribute(e,n);return r.setAttribute($,``),n?.append(r),r}var fe=e=>(e??``).split(`,`).map(Number);function pe(e,t,n){let r=null,i=1/0;for(let a of Q(e,`[data-asset]`)){let e=a.getBoundingClientRect(),o=e.width*e.height;e.width&&t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom&&o<i&&(r=a.dataset.asset??null,i=o)}return r}export{C as A,y as C,N as D,S as E,O as F,W as I,u as L,K as M,B as N,V as O,z as P,l as R,j as S,P as T,L as _,ue as a,q as b,le as c,Z as d,X as f,k as g,v as h,pe as i,F as j,I as k,ae as l,R as m,Q as n,de as o,oe as p,$ as r,fe as s,ce as t,ie as u,A as v,f as w,H as x,x as y,c as z};
@@ -0,0 +1 @@
1
+ import{F as e,I as t,L as n,M as r,N as i,P as a,R as o,j as s,ot as c,tt as l}from"./vendor-ui-D8j69UH4.js";import{n as u,t as d}from"./utils-XFKvwlFT.js";var f=u(`arrow-up-down`,[[`path`,{d:`m21 16-4 4-4-4`,key:`f6ql7i`}],[`path`,{d:`M17 20V4`,key:`1ejh1v`}],[`path`,{d:`m3 8 4-4 4 4`,key:`11wl7u`}],[`path`,{d:`M7 4v16`,key:`1glfcx`}]]),p=c();function m({...e}){return(0,p.jsx)(r,{"data-slot":`dropdown-menu`,...e})}function h({...e}){return(0,p.jsx)(s,{"data-slot":`dropdown-menu-trigger`,...e})}function g({align:t=`start`,alignOffset:n=0,side:r=`bottom`,sideOffset:o=4,className:s,...c}){return(0,p.jsx)(a,{children:(0,p.jsx)(i,{className:`isolate z-50 outline-none`,align:t,alignOffset:n,side:r,sideOffset:o,children:(0,p.jsx)(e,{"data-slot":`dropdown-menu-content`,className:d(`z-50 max-h-(--available-height) w-(--anchor-width) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-[var(--miravo-radius-stadium-sm)] bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none 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-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:overflow-hidden data-closed:fade-out-0 data-closed:zoom-out-95`,s),...c})})})}function _({...e}){return(0,p.jsx)(o,{"data-slot":`dropdown-menu-group`,...e})}function v({className:e,inset:t,...r}){return(0,p.jsx)(n,{"data-slot":`dropdown-menu-label`,"data-inset":t,className:d(`px-1.5 py-1 text-xs font-medium text-muted-foreground data-inset:pl-7`,e),...r})}function y({className:e,inset:n,variant:r=`default`,...i}){return(0,p.jsx)(t,{"data-slot":`dropdown-menu-item`,"data-inset":n,"data-variant":r,className:d(`group/dropdown-menu-item relative flex cursor-pointer items-center gap-1.5 rounded-[var(--miravo-radius-tight)] px-1.5 py-1 text-sm outline-hidden select-none data-[highlighted]:bg-sidebar-accent data-[highlighted]:text-sidebar-accent-foreground not-data-[variant=destructive]:data-[highlighted]:**:text-sidebar-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:data-[highlighted]:bg-destructive/10 data-[variant=destructive]:data-[highlighted]:text-destructive data-[variant=destructive]:data-[highlighted]:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive`,e),...i})}function b({className:e,...t}){return(0,p.jsx)(l,{"data-slot":`dropdown-menu-separator`,className:d(`-mx-1 my-1 h-px bg-border`,e),...t})}export{v as a,f as c,y as i,g as n,b as o,_ as r,h as s,m as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./events-RmbRTKFV.js";export{e as EventsPage};
@@ -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-B2QJEzbS.js";import{f as s,t as c}from"./useQuery-M9KTdi7Q.js";import{t as l}from"./proxy-CWZabK8f.js";import{t as u}from"./AnimatePresence-BSSlw02V.js";import{u as d}from"./chunk-OE4NN4TA-DBWZidbW.js";import{C as f}from"./format-Bx7DF-TB.js";import{t as p}from"./query-fetch-error-CWLZA2L5.js";import{n as m,t as ee}from"./use-transition-navigate-B-nk4aWh.js";import{t as h}from"./badge-Bk1DaL6C.js";import{n as te}from"./transition-types-BKZuWApE.js";import{n as ne}from"./auth-screen-backdrop-CEykEbfF.js";import{n as g}from"./get-error-message-dM0BMfdP.js";import{r as re}from"./runtime-link-vBANRqcD.js";import{a as ie,i as ae,n as oe,o as se,r as ce,s as le,t as ue}from"./combobox-B8h0-NHs.js";import{c as de,i as _,n as fe,s as pe,t as v}from"./select-BWlrSYlA.js";import{a as y,c as b,i as x,o as S,r as me,s as he,t as ge}from"./select-display-items-DN2G8DNG.js";import{a as _e,c as ve,i as ye,n as be,o as xe,r as Se,s as Ce,t as C}from"./events-format-C5HTkIsC.js";var w=e(t(),1),T=n(),E=1500;function D(){let e=s(),[t]=d(),n=t.get(`type`)??`all`,D=t.get(`assetId`)??``,[O,k]=(0,w.useState)(n),[A,j]=(0,w.useState)(D),[M,we]=(0,w.useState)(!0),N=re(a(e=>e.connectionState))===null,P=a(e=>e.events.length),F=(0,w.useRef)(!1),I=a(e=>e.assets),Te=ee(),L=c({queryKey:o.events(O,A),queryFn:()=>i(C(O,A,null),r.events),refetchInterval:M&&N?E:!1,staleTime:5e3}),[Ee,R]=(0,w.useState)([]),[De,z]=(0,w.useState)(!1),[Oe,B]=(0,w.useState)(null),V=`${O}::${A}`,H=(0,w.useRef)(V);(0,w.useEffect)(()=>{V!==H.current&&(H.current=V,R([]),B(null),W(!1))},[V]),(0,w.useEffect)(()=>{k(e=>e===n?e:n)},[n]),(0,w.useEffect)(()=>{j(e=>e===D?e:D)},[D]);let[U,W]=(0,w.useState)(()=>(L.data?.events.length??0)>0),G=L.data?[L.data,...Ee]:[],K=G.flatMap(e=>e.events).filter(e=>!ve(e)),q=G[G.length-1],ke=q?.hasMore??!1;(0,w.useEffect)(()=>{K.length>0&&!U&&W(!0)},[K.length,U]);let J=(0,w.useRef)(P);(0,w.useEffect)(()=>{P!==J.current&&(J.current=P,M&&N?(e.invalidateQueries({queryKey:o.events(O,A)}),F.current=!1):M&&(F.current=!0))},[P,M,N,e,O,A]),(0,w.useEffect)(()=>{!M||!N||!F.current||(F.current=!1,e.invalidateQueries({queryKey:o.events(O,A)}))},[M,N,e,O,A]);let[Y,Ae]=(0,w.useState)(``),X=(0,w.useMemo)(()=>Y?I.filter(e=>e.id.toLowerCase().includes(Y.toLowerCase())):I,[I,Y]),Z=L.isPending&&!L.data&&!L.isError,je=M&&!Z&&!U&&K.length===0,Q=L.error??Oe,Me=L.isError&&!L.data,$=(0,w.useCallback)(()=>{L.refetch()},[L]),Ne=async()=>{if(q?.nextCursor){z(!0),B(null);try{let e=await i(C(O,A,q.nextCursor),r.events);R(t=>[...t,e])}catch(e){B(e instanceof Error?e:Error(g(e,`Failed to fetch events.`)))}finally{z(!1)}}};if(Me)return(0,T.jsx)(ne,{className:`min-h-full`,children:(0,T.jsx)(`div`,{className:`flex min-h-[40vh] flex-col items-center justify-center p-6 sm:p-12`,children:(0,T.jsx)(`div`,{className:`w-full max-w-md`,children:(0,T.jsx)(p,{message:g(Q,`Failed to fetch events.`),onRetry:$,isRetrying:L.isFetching})})})});let Pe=new Date;return(0,T.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:[Q&&K.length>0?(0,T.jsx)(p,{message:`${g(Q,`Failed to fetch events.`)} Showing cached events.`,onRetry:$,isRetrying:L.isFetching}):null,(0,T.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-3 lg:flex-row lg:items-center lg:justify-between lg:gap-4`,children:[(0,T.jsxs)(`div`,{className:`min-w-0 flex flex-col gap-1`,children:[(0,T.jsx)(`h1`,{className:`font-heading text-2xl font-semibold tracking-tight`,children:`Event Log`}),(0,T.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Real-time event stream from the engine.`}),M&&!N?(0,T.jsx)(`p`,{className:`text-xs text-warning`,role:`status`,children:`Live refresh pauses until the Miravo link is live again.`}):null]}),(0,T.jsxs)(`div`,{className:`flex w-full min-w-0 flex-col gap-2 sm:flex-row sm:flex-nowrap sm:items-center sm:gap-2 lg:w-auto lg:max-w-full`,children:[(0,T.jsx)(`button`,{type:`button`,onClick:()=>we(e=>!e),className:`flex h-7 shrink-0 items-center self-start overflow-hidden rounded-[var(--miravo-radius-tight)] border border-border/40 px-2 py-1 text-xs transition-colors hover:bg-muted sm:self-auto`,children:(0,T.jsx)(u,{mode:`wait`,initial:!1,children:M?(0,T.jsxs)(l.span,{initial:{opacity:0,y:-6},animate:{opacity:1,y:0},exit:{opacity:0,y:6},transition:{type:`spring`,stiffness:500,damping:35},className:`flex items-center gap-1.5`,children:[(0,T.jsx)(`span`,{className:`size-1.5 animate-pulse rounded-full bg-success`}),(0,T.jsx)(`span`,{className:`font-medium text-success`,children:`LIVE`})]},`live`):(0,T.jsxs)(l.span,{initial:{opacity:0,y:-6},animate:{opacity:1,y:0},exit:{opacity:0,y:6},transition:{type:`spring`,stiffness:500,damping:35},className:`flex items-center gap-1.5`,children:[(0,T.jsx)(`span`,{className:`size-1.5 rounded-full bg-muted-foreground`}),(0,T.jsx)(`span`,{className:`text-muted-foreground`,children:`Paused`})]},`paused`)})}),(0,T.jsx)(`div`,{className:`min-w-0 flex-1 lg:w-48 lg:flex-none`,children:(0,T.jsxs)(ue,{value:A||null,onValueChange:e=>{j(e??``)},onInputValueChange:Ae,children:[(0,T.jsx)(ce,{placeholder:`All assets`,className:`h-8 w-full min-w-0`,showClear:!!A}),(0,T.jsx)(oe,{children:(0,T.jsxs)(ie,{children:[X.map(e=>(0,T.jsx)(ae,{value:e.id,children:(0,T.jsx)(`span`,{className:`font-mono`,children:e.id})},e.id)),X.length===0&&(0,T.jsx)(`p`,{className:`py-2 text-center text-xs text-muted-foreground`,children:`No assets found`})]})})]})}),(0,T.jsx)(`div`,{className:`min-w-0 flex-1 lg:w-48 lg:flex-none`,children:(0,T.jsxs)(v,{value:O,onValueChange:e=>{k(e??`all`)},items:ge,children:[(0,T.jsx)(pe,{className:`w-full min-w-0 lg:w-48`,"aria-label":`Event type filter`,children:(0,T.jsx)(de,{placeholder:`Filter by type`})}),(0,T.jsxs)(fe,{alignItemWithTrigger:!1,align:`start`,children:[(0,T.jsx)(_,{value:`all`,children:`All events`}),(0,T.jsx)(_,{value:`fault:triggered`,children:`Fault Triggered`}),(0,T.jsx)(_,{value:`fault:cleared`,children:`Fault Cleared`}),(0,T.jsx)(_,{value:`lifecycle:changed`,children:`Lifecycle Changed`}),(0,T.jsx)(_,{value:`asset:maintenance`,children:`Maintenance`}),(0,T.jsx)(_,{value:`asset:created`,children:`Asset Created`}),(0,T.jsx)(_,{value:`asset:removed`,children:`Asset Removed`}),(0,T.jsx)(_,{value:`engine:state-changed`,children:`Engine State`})]})]})})]})]}),(0,T.jsx)(se,{className:`min-w-0 py-0`,children:(0,T.jsx)(le,{className:`p-0`,children:(0,T.jsxs)(me,{children:[(0,T.jsx)(he,{children:(0,T.jsxs)(b,{children:[(0,T.jsx)(S,{className:`hidden w-12 sm:table-cell`,children:`#`}),(0,T.jsx)(S,{children:`Type`}),(0,T.jsx)(S,{children:`Context`}),(0,T.jsx)(S,{children:`Details`}),(0,T.jsx)(S,{className:`hidden text-right md:table-cell`,children:`Cycle #`}),(0,T.jsx)(S,{className:`hidden text-right sm:table-cell`,children:`Wall Clock`})]})}),(0,T.jsxs)(x,{children:[K.map(e=>{let t=xe(e),n=Ce(e);return(0,T.jsxs)(b,{className:t?`transition-colors`:``,onMouseEnter:t?()=>m(`/asset/${t}`):void 0,children:[(0,T.jsx)(y,{className:`hidden font-mono text-xs text-muted-foreground sm:table-cell`,children:e.id}),(0,T.jsx)(y,{children:(0,T.jsx)(h,{variant:Se(e.type),className:`text-xs ${be(e.type)}`,children:e.type})}),(0,T.jsx)(y,{className:`font-mono text-xs`,children:t?(0,T.jsx)(`button`,{type:`button`,className:`rounded-[var(--miravo-radius-tight)] text-left text-primary outline-none underline-offset-4 hover:underline focus-visible:ring-2 focus-visible:ring-ring/70 focus-visible:ring-offset-2 focus-visible:ring-offset-background`,onFocus:()=>m(`/asset/${t}`),onClick:()=>Te(`/asset/${t}`,{transitionType:te}),children:n??t}):n??`—`}),(0,T.jsx)(y,{className:`max-w-xs truncate font-mono text-xs`,children:ye(e)||(0,T.jsx)(`span`,{className:`text-muted-foreground`,children:`—`})}),(0,T.jsx)(y,{className:`hidden text-right font-mono text-xs md:table-cell`,children:e.tick}),(0,T.jsx)(y,{className:`hidden text-right text-xs text-muted-foreground sm:table-cell`,children:_e(e.timestamp,Pe)})]},e.id)}),!Z&&K.length===0&&(0,T.jsx)(b,{children:(0,T.jsx)(y,{colSpan:6,className:`py-8 text-center text-muted-foreground`,children:je?`Listening for events…`:`No events`})})]})]})})}),ke&&(0,T.jsx)(`div`,{className:`flex justify-center border-t border-border/40 pt-4`,children:(0,T.jsx)(f,{variant:`outline`,size:`sm`,onClick:()=>void Ne(),disabled:De,children:`Load older events`})})]})}export{D as t};
@@ -0,0 +1 @@
1
+ import{g as e,t}from"./format-Bx7DF-TB.js";function n(e){return e.includes(`triggered`)?`destructive`:e.includes(`cleared`)||e.includes(`created`)?`default`:e.includes(`removed`)||e.includes(`lifecycle`)?`secondary`:(e.includes(`state-changed`),`outline`)}function r(e){return e.includes(`state-changed`)?`border-info/30 bg-info/20 text-info hover:bg-info/20`:``}function i(e){return e.type===`integration:operation`||e.type===`integration:resource`}function a(e,n){let r=new Date(e);return r.toDateString()===n.toDateString()?r.toLocaleTimeString(t):r.toLocaleString(t,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}function o(e){if(`assetId`in e&&typeof e.assetId==`string`)return e.assetId}function s(e){return o(e)}function c(t){return`fault`in t?e(t.fault):`from`in t&&`to`in t?`${e(t.from)} \u2192 ${e(t.to)}`:``}function l(e,t,n){let r=new URLSearchParams;return r.set(`limit`,`50`),e!==`all`&&r.set(`type`,e),t&&r.set(`assetId`,t),n!==null&&r.set(`cursor`,String(n)),`/events?${r.toString()}`}export{a,i as c,c as i,r as n,o,n as r,s,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{$ as n,J as r,Q as i,X as a,Y as o,Z as s,et as c,ot as l}from"./vendor-ui-D8j69UH4.js";import{H as u,L as d,S as f,a as p,o as m,s as h}from"./api-B2QJEzbS.js";import{a as g,c as _,i as v,n as y,o as b,r as x,t as ee}from"./dialog-B5PqrKVw.js";import{C as S,S as C,T as w}from"./format-Bx7DF-TB.js";import{n as T,t as E}from"./utils-XFKvwlFT.js";import{t as D}from"./chevron-down-x70Pto6j.js";import{t as O}from"./download-i8CTJ7oi.js";import{n as k,t as A}from"./source-host-miravo-B8eM2IHw.js";import{t as j}from"./loader-circle-DjgHgHHl.js";import{t as M}from"./label-2sIXTEUK.js";import"./use-engine-command-mutation-CHqjOqfS.js";var N=T(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),P=l();function F({...e}){return(0,P.jsx)(o,{"data-slot":`sheet`,...e})}function I({...e}){return(0,P.jsx)(a,{"data-slot":`sheet-portal`,...e})}function L({className:e,...t}){return(0,P.jsx)(c,{"data-slot":`sheet-overlay`,className:E(`fixed inset-0 z-50 bg-black/10 transition-opacity duration-150 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs`,e),...t})}function R({className:e,children:t,side:r=`right`,showCloseButton:i=!0,...a}){return(0,P.jsxs)(I,{children:[(0,P.jsx)(L,{}),(0,P.jsxs)(s,{"data-slot":`sheet-content`,"data-side":r,className:E(`fixed z-50 flex flex-col gap-4 bg-background bg-clip-padding text-sm shadow-lg transition duration-200 ease-in-out data-ending-style:opacity-0 data-starting-style:opacity-0 data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=bottom]:data-ending-style:translate-y-[2.5rem] data-[side=bottom]:data-starting-style:translate-y-[2.5rem] data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-[calc(100vw-1rem)] data-[side=left]:max-w-md data-[side=left]:border-r data-[side=left]:data-ending-style:translate-x-[-2.5rem] data-[side=left]:data-starting-style:translate-x-[-2.5rem] data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-[calc(100vw-1rem)] data-[side=right]:max-w-xl data-[side=right]:border-l data-[side=right]:pl-1 data-[side=right]:data-ending-style:translate-x-[2.5rem] data-[side=right]:data-starting-style:translate-x-[2.5rem] data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=top]:data-ending-style:translate-y-[-2.5rem] data-[side=top]:data-starting-style:translate-y-[-2.5rem]`,e),...a,children:[t,i&&(0,P.jsxs)(n,{"data-slot":`sheet-close`,render:(0,P.jsx)(S,{variant:`ghost`,className:`absolute top-3 right-3`,size:`icon-sm`}),children:[(0,P.jsx)(w,{}),(0,P.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function z({className:e,...t}){return(0,P.jsx)(`div`,{"data-slot":`sheet-header`,className:E(`flex flex-col gap-0.5 p-2`,e),...t})}function B({className:e,...t}){return(0,P.jsx)(r,{"data-slot":`sheet-title`,className:E(`text-base font-medium text-foreground`,e),...t})}function V({className:e,...t}){return(0,P.jsx)(i,{"data-slot":`sheet-description`,className:E(`text-sm text-muted-foreground`,e),...t})}var H=e(t(),1);function U({format:e,kind:t}){return e===`source-yaml`?t===`model`?`Raw asset model definition. Edit locally, version-control, or use as input for the CLI.`:`Raw factory definition with topology and namespace. Edit, share, or apply via CLI.`:e===`litmus-edge`?t===`model`?`Litmus Edge Digital Twin JSON for manual import via the Litmus Edge UI.`:`Litmus Edge template JSON (DeviceHub devices + Digital Twins). Import directly via the Litmus Edge UI.`:`Select a format to download.`}function W({children:e,className:t}){return(0,P.jsx)(`div`,{className:E(`max-h-[min(36rem,75vh)] min-h-0 overflow-y-auto rounded-[var(--miravo-radius-stadium-sm)] border border-border/60 p-4 sm:p-5`,t),children:e})}var G=[`modbus`,`opcua`,`mqtt`],K={modbus:`Modbus`,opcua:`OPC UA`,mqtt:`MQTT`};function q(e){return e===``?null:!/^\d+$/.test(e)||!u(Number(e))?`Use a port from 1 to 65535.`:null}function J(e){return Object.fromEntries(Object.entries(e??{}).map(([e,t])=>[e,String(t)]))}function Y(e,t,n){let r={...e};for(let e of n){let n=(t[e]??``).trim();if(q(n))return null;n===``?delete r[e]:r[e]=Number(n)}return r}function X({open:e,onOpenChange:t,protocols:n,values:r,onChange:i,hint:a}){let o=(0,H.useId)();return(0,P.jsxs)(`div`,{children:[(0,P.jsxs)(`button`,{type:`button`,onClick:()=>t(!e),"aria-expanded":e,className:`flex w-full items-center gap-1 text-left text-[11px] font-medium text-muted-foreground hover:text-foreground`,children:[(0,P.jsx)(D,{className:E(`size-3 transition-transform`,!e&&`-rotate-90`),"aria-hidden":!0}),`Miravo ports remapped (Docker)?`]}),e?(0,P.jsxs)(`div`,{className:`mt-2 space-y-2`,children:[(0,P.jsx)(`p`,{className:`text-[11px] leading-snug text-muted-foreground`,children:a}),(0,P.jsx)(`div`,{className:`flex flex-wrap gap-3`,children:n.map(e=>{let t=r[e]??``,n=q(t.trim());return(0,P.jsxs)(`div`,{className:`w-24 space-y-1`,children:[(0,P.jsx)(M,{htmlFor:`${o}-${e}`,className:`text-[11px] text-muted-foreground`,children:K[e]}),(0,P.jsx)(C,{id:`${o}-${e}`,inputMode:`numeric`,placeholder:String(d[e]),value:t,"aria-invalid":n!==null,onChange:t=>i({...r,[e]:t.currentTarget.value}),className:`h-8 font-mono text-[12px]`}),n?(0,P.jsx)(`p`,{className:`text-[10px] text-destructive`,children:n}):null]},e)})})]}):null]})}var Z=`172.17.0.1`;async function Q(e){let t=await m(`/catalog/models/${encodeURIComponent(e)}/le-dt.json`,f.catalogModelLeDt);return JSON.stringify(t,null,2)}async function te(e,t={host:Z}){let n=f.catalogTemplateLeTemplateJson.query;if(!n)throw Error(`Missing query schema for ${f.catalogTemplateLeTemplateJson.method} ${f.catalogTemplateLeTemplateJson.path}`);let r=n.safeParse({host:t.host,protocol:t.protocol,modbusPort:t.exposedPorts?.modbus,opcuaPort:t.exposedPorts?.opcua,mqttPort:t.exposedPorts?.mqtt});if(!r.success)throw Error(`Invalid request for ${f.catalogTemplateLeTemplateJson.method} ${f.catalogTemplateLeTemplateJson.path}: ${r.error.message}`);return p(ne(e,r.data),f.catalogTemplateLeTemplateJson)}function ne(e,t){return`/catalog/templates/${encodeURIComponent(e)}/le-template.json${re(t)}`}function re(e){let t=new URLSearchParams;for(let[n,r]of Object.entries(e))r!==void 0&&r!==``&&t.set(n,String(r));return t.size>0?`?${t.toString()}`:``}function $(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),URL.revokeObjectURL(n),_.success(`Exported ${t}`)}function ie({kind:e,id:t,yamlPath:n,yamlFilename:r}){let[i,a]=(0,H.useState)(!1),[o,s]=(0,H.useState)(Z),[c,l]=(0,H.useState)(!1),[u,d]=(0,H.useState)({}),[p,m]=(0,H.useState)(!1),w=(0,H.useCallback)(async()=>{try{let t=await h(n,e===`model`?f.catalogModelYaml:f.catalogTemplateYaml);$(new Blob([t],{type:`text/yaml`}),r)}catch{_.error(`Failed to export YAML`)}},[e,n,r]),T=(0,H.useCallback)(async()=>{try{let e=await Q(t);$(new Blob([e],{type:`application/json`}),`${t}.le-dt.json`)}catch{_.error(`Failed to export integration format`)}},[t]),E=(0,H.useCallback)(async(e,n)=>{try{let r=e.trim();return $(await te(t,{host:r.length>0?r:Z,exposedPorts:n}),`${t}.le-template.json`),!0}catch{return _.error(`Failed to export integration format`),!1}},[t]),D=(0,H.useCallback)(()=>{s(Z),d({}),l(!1),a(!0)},[]),N=(0,H.useCallback)(async()=>{let e=Y(void 0,u,G);if(!e){l(!0);return}m(!0);try{await E(o,e)&&a(!1)}finally{m(!1)}},[u,o,E]);return(0,P.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto pb-2`,children:[[{key:`source-yaml`,label:e===`model`?`Source YAML (.asset.yaml)`:`Source YAML (.miravo.yaml)`,onDownload:()=>void w()},{key:`litmus-edge`,label:e===`model`?`Litmus Edge Digital Twin (JSON)`:`Litmus Edge template (JSON)`,onDownload:e===`model`?()=>void T():D}].map(t=>(0,P.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-[var(--miravo-radius-stadium-sm)] border border-border/60 p-3`,children:[(0,P.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,P.jsx)(`span`,{className:`text-xs font-medium text-foreground`,children:t.label}),(0,P.jsxs)(S,{variant:`outline`,size:`sm`,className:`h-8 shrink-0 gap-1.5 text-xs`,"aria-label":`Download ${t.label}`,onClick:t.onDownload,children:[(0,P.jsx)(O,{className:`size-3.5`,"aria-hidden":!0}),`Download`]})]}),(0,P.jsx)(`p`,{className:`text-[11px] leading-snug text-foreground/70`,children:(0,P.jsx)(U,{format:t.key,kind:e})})]},t.key)),(0,P.jsx)(ee,{open:i,onOpenChange:a,children:(0,P.jsxs)(y,{className:`sm:max-w-md`,children:[(0,P.jsxs)(g,{children:[(0,P.jsx)(b,{children:`Download Litmus Edge Template`}),(0,P.jsx)(x,{children:A})]}),(0,P.jsxs)(`div`,{className:`space-y-2 py-1`,children:[(0,P.jsx)(M,{htmlFor:`export-source-host`,children:k}),(0,P.jsx)(C,{id:`export-source-host`,value:o,onChange:e=>s(e.target.value),placeholder:Z,autoComplete:`off`,className:`font-mono text-sm`}),(0,P.jsxs)(`p`,{className:`text-[11px] leading-snug text-muted-foreground`,children:[`Use an IP or hostname reachable from Litmus Edge (e.g.`,` `,(0,P.jsx)(`span`,{className:`font-mono`,children:Z}),` for Docker bridge).`]}),(0,P.jsx)(X,{open:c,onOpenChange:l,protocols:G,values:u,onChange:d,hint:`Enter the host port Litmus Edge should dial. Leave blank to use Miravo's own port.`})]}),(0,P.jsxs)(v,{className:`gap-2 sm:gap-0`,children:[(0,P.jsx)(S,{type:`button`,variant:`outline`,onClick:()=>a(!1),disabled:p,children:`Cancel`}),(0,P.jsxs)(S,{type:`button`,className:`gap-1.5`,onClick:()=>void N(),disabled:p,"aria-busy":p,children:[p?(0,P.jsx)(j,{className:`size-3.5 animate-spin`,"aria-hidden":!0}):(0,P.jsx)(O,{className:`size-3.5`,"aria-hidden":!0}),`Download`]})]})]})})]})}export{J as a,R as c,B as d,N as f,Y as i,V as l,X as n,W as o,G as r,F as s,ie as t,z as u};