@miravo/cli-linux-x64 0.11.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/console-dist/assets/api-BG2sUkwk.js +1 -0
  2. package/console-dist/assets/api-CKfC8_zv.js +1 -0
  3. package/console-dist/assets/asset-detail-B2YDSfM1.js +1 -0
  4. package/console-dist/assets/asset-detail-actions-BrttEn24.js +1 -0
  5. package/console-dist/assets/{backup-power-BDMAO2bO.js → backup-power-Cm_Ij5yj.js} +1 -1
  6. package/console-dist/assets/{boiler-CWAR1Nq2.js → boiler-BQwqgoVY.js} +1 -1
  7. package/console-dist/assets/by-path-e6y8DTMV.js +1 -0
  8. package/console-dist/assets/catalog-Bz24KMiz.js +1 -0
  9. package/console-dist/assets/catalog-DOGCbTe4.js +1 -0
  10. package/console-dist/assets/catalog-template-icons-7CBAYTtP.js +1 -0
  11. package/console-dist/assets/chevron-right-CrNKVFcI.js +1 -0
  12. package/console-dist/assets/{chiller-BSx8eUMN.js → chiller-Jug0vRg-.js} +1 -1
  13. package/console-dist/assets/{commercial-building-CNvi6IZK.js → commercial-building-D95MTyEI.js} +1 -1
  14. package/console-dist/assets/{compressor-D63w6Ir2.js → compressor-BkWNdwvy.js} +1 -1
  15. package/console-dist/assets/{console-panel-CMDoBJiO.js → console-panel-iWo8EgKP.js} +1 -1
  16. package/console-dist/assets/control-BMhNX7vM.js +1 -0
  17. package/console-dist/assets/control-CML5aS8w.js +1 -0
  18. package/console-dist/assets/{district-heating-Cr4CrgCA.js → district-heating-B_YycTG-.js} +1 -1
  19. package/console-dist/assets/{events-RmbRTKFV.js → events-5RYkaW81.js} +1 -1
  20. package/console-dist/assets/events-z582V8se.js +1 -0
  21. package/console-dist/assets/{export-tab-fZDO4r2u.js → export-tab-BsV7px7m.js} +1 -1
  22. package/console-dist/assets/factory-3x3_UmJZ.js +1 -0
  23. package/console-dist/assets/factory-LkZOsGje.js +1 -0
  24. package/console-dist/assets/floor-page-D0qm0GgG.js +1 -0
  25. package/console-dist/assets/{genset-BRgqR1AT.js → genset-DBpkUT9p.js} +1 -1
  26. package/console-dist/assets/{get-error-message-dM0BMfdP.js → get-error-message-C9VW9IZB.js} +1 -1
  27. package/console-dist/assets/{index-CvuwOe37.js → index-M2C34y3X.js} +3 -3
  28. package/console-dist/assets/{integration-api-D2tA69Yb.js → integration-api-ChbzMP5N.js} +1 -1
  29. package/console-dist/assets/integrations-BpOu11IH.js +1 -0
  30. package/console-dist/assets/{integrations-iAjWxaDS.js → integrations-Cop24rSE.js} +1 -1
  31. package/console-dist/assets/{login-DpNKicxy.js → login-BZANmwgH.js} +1 -1
  32. package/console-dist/assets/models-BgGuH6PQ.js +1 -0
  33. package/console-dist/assets/models-C09Ba-2G.js +1 -0
  34. package/console-dist/assets/{pharma-cleanroom-ClJRwROz.js → pharma-cleanroom-BbYfEQjP.js} +1 -1
  35. package/console-dist/assets/protocol-card-B8XGneNM.js +1 -0
  36. package/console-dist/assets/registry-BXGfJ4np.js +2 -0
  37. package/console-dist/assets/{rtu-D-1lltcO.js → rtu-BR4DhLbE.js} +1 -1
  38. package/console-dist/assets/shallow-Cin0mLuv.js +1 -0
  39. package/console-dist/assets/{smart-factory-cem4tLAv.js → smart-factory-DozakG3N.js} +1 -1
  40. package/console-dist/assets/{stages-hidkaJPI.js → stages-C0cErwSQ.js} +1 -1
  41. package/console-dist/assets/{status-CZFZLqVk.js → status-DNfdEhTs.js} +1 -1
  42. package/console-dist/assets/status-kit-pFRjEjVU.js +1 -0
  43. package/console-dist/assets/tags-BjW65yls.js +1 -0
  44. package/console-dist/assets/{tags-BBz30-eV.js → tags-Bw7b0x14.js} +1 -1
  45. package/console-dist/assets/{tank-THHXGdzg.js → tank-xgQfMS2d.js} +1 -1
  46. package/console-dist/assets/{transition-nav-link-B11-gXld.js → transition-nav-link-CSrpkA7_.js} +1 -1
  47. package/console-dist/assets/use-engine-command-mutation-DrMOfYty.js +1 -0
  48. package/console-dist/assets/use-transition-navigate-D2Y8kfw6.js +2 -0
  49. package/console-dist/assets/{useQuery-M9KTdi7Q.js → useQuery-Cl48zZ73.js} +1 -1
  50. package/console-dist/assets/{validation-BkfmaBBi.js → validation-Cxhiswz2.js} +1 -1
  51. package/console-dist/assets/{water-treatment-CfVR0p0L.js → water-treatment-jG0T2rhc.js} +1 -1
  52. package/console-dist/index.html +30 -30
  53. package/miravo +2 -2
  54. package/package.json +1 -1
  55. package/console-dist/assets/api-B2QJEzbS.js +0 -1
  56. package/console-dist/assets/api-Vq4lny_H.js +0 -1
  57. package/console-dist/assets/asset-detail-E-TllNHT.js +0 -1
  58. package/console-dist/assets/asset-detail-actions-jjbvaDES.js +0 -1
  59. package/console-dist/assets/asset-panel-DDziFlFl.js +0 -1
  60. package/console-dist/assets/by-path-VBqTBdlG.js +0 -1
  61. package/console-dist/assets/catalog-BlkPPAWE.js +0 -1
  62. package/console-dist/assets/catalog-CQopEu5C.js +0 -1
  63. package/console-dist/assets/catalog-template-icons-BOSywIKV.js +0 -1
  64. package/console-dist/assets/chevron-left-XHFooLn1.js +0 -1
  65. package/console-dist/assets/chevron-right-CMSQPSEo.js +0 -1
  66. package/console-dist/assets/control-CBviLxJB.js +0 -1
  67. package/console-dist/assets/control-jNqzZWa9.js +0 -1
  68. package/console-dist/assets/events-D531_1EZ.js +0 -1
  69. package/console-dist/assets/factory-C2OucdpQ.js +0 -1
  70. package/console-dist/assets/factory-CgSIjU5V.js +0 -1
  71. package/console-dist/assets/factory-DLE12zAd.js +0 -1
  72. package/console-dist/assets/floor-page-D0mX5OuA.js +0 -1
  73. package/console-dist/assets/integrations-BLG4PT3c.js +0 -1
  74. package/console-dist/assets/model-schemas-3w38IPdc.js +0 -1
  75. package/console-dist/assets/models-CMN9Eppf.js +0 -1
  76. package/console-dist/assets/models-I_V8J5Y0.js +0 -1
  77. package/console-dist/assets/play-kg50os4l.js +0 -1
  78. package/console-dist/assets/protocol-card-ARSwIjkN.js +0 -1
  79. package/console-dist/assets/registry-Dau_GjK6.js +0 -2
  80. package/console-dist/assets/tags-K96jT8PY.js +0 -1
  81. package/console-dist/assets/use-engine-command-mutation-CHqjOqfS.js +0 -1
  82. package/console-dist/assets/use-transition-navigate-B-nk4aWh.js +0 -2
  83. /package/console-dist/assets/{circle-x-_o0nl0Rg.js → circle-x-6JtFdy1_.js} +0 -0
  84. /package/console-dist/assets/{dom-Cm_OH5jc.js → dom-CQuChC3G.js} +0 -0
  85. /package/console-dist/assets/{not-found-C4YVKP97.js → not-found-Cc35S-lZ.js} +0 -0
  86. /package/console-dist/assets/{runtime-link-vBANRqcD.js → runtime-link-BRnaEnOm.js} +0 -0
  87. /package/console-dist/assets/{tabs-BbQkzBZZ.js → tabs-Ch_VG8_S.js} +0 -0
  88. /package/console-dist/assets/{vendor-table-B0Z9e_sn.js → vendor-table-BQAIXM34.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,y as s}from"./api-BG2sUkwk.js";import{f as c,t as l}from"./useQuery-Cl48zZ73.js";import{t as u,u as d}from"./proxy-CWZabK8f.js";import{t as f}from"./AnimatePresence-BSSlw02V.js";import{i as p,n as m,r as h}from"./dist-xY0pK9Wy.js";import{n as g,s as _}from"./chunk-OE4NN4TA-DBWZidbW.js";import{a as v,i as y,n as b,o as ee,r as x,t as te}from"./dialog-B5PqrKVw.js";import{t as S}from"./shallow-Cin0mLuv.js";import{C,S as ne,T as w,c as re,d as T,g as ie,h as ae,l as E,m as D,p as O,s as k,u as A,v as oe,w as j,y as M}from"./format-Bx7DF-TB.js";import{n as N,t as P}from"./utils-XFKvwlFT.js";import{t as F}from"./activity-Cy_niK56.js";import{n as I,r as L,t as R}from"./server-BVem_egD.js";import{c as se,i as ce,n as le,s as ue,t as de}from"./dropdown-menu-B_MMNbTy.js";import{i as fe,n as pe,t as me}from"./catalog-template-icons-7CBAYTtP.js";import{t as he}from"./chevron-down-x70Pto6j.js";import{t as ge}from"./chevron-right-CrNKVFcI.js";import{n as _e,t as ve}from"./circle-x-6JtFdy1_.js";import{a as ye,c as be,i as xe,l as Se,o as Ce,p as we,s as Te,t as Ee,u as De}from"./integration-api-ChbzMP5N.js";import{t as Oe}from"./protocol-card-B8XGneNM.js";import{t as ke}from"./copy-button-CSUP1VjU.js";import{n as Ae,r as je,t as Me}from"./source-host-miravo-B8eM2IHw.js";import{i as Ne,n as Pe,t as Fe}from"./registry-BXGfJ4np.js";import{t as z}from"./loader-circle-DjgHgHHl.js";import{c as Ie,i as Le,o as Re,t as ze}from"./use-engine-command-mutation-DrMOfYty.js";import{t as Be}from"./plus-Cl4Ay5Ry.js";import{t as Ve}from"./radio-BxpVYiyS.js";import{t as He}from"./query-fetch-error-CWLZA2L5.js";import{t as Ue}from"./rocket-KZ5oHK1G.js";import{a as We,f as Ge,i as Ke,n as qe,o as Je,r as Ye}from"./export-tab-BsV7px7m.js";import{t as Xe}from"./trash-2-BH9HDsZv.js";import{t as Ze}from"./triangle-alert-DoAwrRgk.js";import{i as B,n as V,t as H}from"./tooltip-B3vOB1Vu.js";import{n as Qe,t as $e}from"./use-transition-navigate-D2Y8kfw6.js";import{t as et}from"./badge-Bk1DaL6C.js";import{n as tt}from"./transition-types-BKZuWApE.js";import{t as nt}from"./label-2sIXTEUK.js";import{n as rt,t as it}from"./get-error-message-C9VW9IZB.js";import{i as U,n as W,r as G,t as at}from"./console-panel-iWo8EgKP.js";import{i as ot,n as st,r as ct,t as lt}from"./tabs-Ch_VG8_S.js";import{a as ut,i as dt,n as ft,o as pt,r as mt,s as ht,t as gt}from"./combobox-B8h0-NHs.js";import{c as _t,i as K,n as vt,s as yt,t as bt}from"./select-BWlrSYlA.js";import{a as q,c as xt,i as St,n as Ct,o as wt,r as Tt,s as Et}from"./select-display-items-DN2G8DNG.js";import{t as Dt}from"./checkbox-DEAkDfFr.js";import{n as Ot,r as kt,t as At}from"./integration-targets-Byvdd3Or.js";var jt=N(`ban`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M4.929 4.929 19.07 19.071`,key:`196cmz`}]]),Mt=N(`book-open`,[[`path`,{d:`M12 7v14`,key:`1akyts`}],[`path`,{d:`M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z`,key:`ruj8y`}]]),Nt=N(`boxes`,[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`,key:`lc1i9w`}],[`path`,{d:`m7 16.5-4.74-2.85`,key:`1o9zyk`}],[`path`,{d:`m7 16.5 5-3`,key:`va8pkn`}],[`path`,{d:`M7 16.5v5.17`,key:`jnp8gn`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`,key:`8zsnat`}],[`path`,{d:`m17 16.5-5-3`,key:`8arw3v`}],[`path`,{d:`m17 16.5 4.74-2.85`,key:`8rfmw`}],[`path`,{d:`M17 16.5v5.17`,key:`k6z78m`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`,key:`1xygjf`}],[`path`,{d:`M12 8 7.26 5.15`,key:`1vbdud`}],[`path`,{d:`m12 8 4.74-2.85`,key:`3rx089`}],[`path`,{d:`M12 13.5V8`,key:`1io7kd`}]]),Pt=N(`chevrons-up-down`,[[`path`,{d:`m7 15 5 5 5-5`,key:`1hf1tw`}],[`path`,{d:`m7 9 5-5 5 5`,key:`sgt6xg`}]]),Ft=N(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),It=N(`circle-dot`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}]]),Lt=N(`clock`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]),Rt=N(`component`,[[`path`,{d:`M15.536 11.293a1 1 0 0 0 0 1.414l2.376 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z`,key:`1uwlt4`}],[`path`,{d:`M2.297 11.293a1 1 0 0 0 0 1.414l2.377 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414L6.088 8.916a1 1 0 0 0-1.414 0z`,key:`10291m`}],[`path`,{d:`M8.916 17.912a1 1 0 0 0 0 1.415l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.415l-2.377-2.376a1 1 0 0 0-1.414 0z`,key:`1tqoq1`}],[`path`,{d:`M8.916 4.674a1 1 0 0 0 0 1.414l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z`,key:`1x6lto`}]]),zt=N(`ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]),Bt=N(`layers`,[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]]),Vt=N(`plug-zap`,[[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m18 3-4 4h6l-4 4`,key:`16psg9`}]]),Ht=N(`plug`,[[`path`,{d:`M12 22v-5`,key:`1ega77`}],[`path`,{d:`M15 8V2`,key:`18g5xt`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`,key:`1xoxul`}],[`path`,{d:`M9 8V2`,key:`14iosj`}]]),Ut=N(`rotate-cw`,[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]),J=e(t(),1),Y=n();function X({className:e,...t}){return(0,Y.jsx)(`div`,{"data-slot":`skeleton`,className:P(`animate-pulse rounded-[var(--miravo-radius-tight)] bg-muted`,e),...t})}var Wt=`https://miravo.dev/docs`;function Gt(){let{adapters:e,metrics:t}=a(S(e=>({adapters:e.availableAdapters,metrics:e.adapterMetrics}))),n=e.filter(e=>e.enabled&&!e.pending&&e.endpoint),r=e.filter(e=>!n.includes(e)),i=e=>t.find(t=>t.name===e)?.metrics.clients?.active??0,o=n.reduce((e,t)=>e+i(t.name),0);return(0,Y.jsxs)(at,{id:`connect`,icon:Vt,title:`Connect`,description:`Point a client here to read live values.`,aside:(0,Y.jsxs)(U,{tone:o>0?`live`:n.length>0?`idle`:`off`,children:[(0,Y.jsx)(`span`,{className:`mr-1.5 font-mono font-semibold tabular-nums text-foreground`,children:o}),(0,Y.jsx)(G,{children:o===1?`client`:`clients`})]}),bodyClassName:`gap-2`,footer:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(g,{to:`/control`,className:W,children:[`Configure protocols`,(0,Y.jsx)(L,{className:`size-3`,"aria-hidden":!0})]}),(0,Y.jsxs)(`a`,{href:`${Wt}/protocols`,target:`_blank`,rel:`noopener noreferrer`,className:P(W,`ml-auto`),children:[(0,Y.jsx)(Mt,{className:`size-3`,"aria-hidden":!0}),`Protocol docs`]})]}),children:[n.length===0&&(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No protocol is serving yet.`}),n.map(e=>{let t=i(e.name),n=Oe[e.name]??e.name;return(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 rounded-[var(--miravo-radius-stadium-sm)] border border-muted-foreground/20 bg-background/40 px-3 py-2.5 transition-colors hover:border-muted-foreground/25`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{"aria-hidden":!0,className:P(`size-1.5 shrink-0 rounded-full`,t>0?`bg-success`:`bg-muted-foreground/55`)}),(0,Y.jsx)(`span`,{className:`text-sm font-medium tracking-tight`,children:n}),(0,Y.jsxs)(`span`,{className:`ml-auto font-mono text-[11px] text-muted-foreground`,children:[(0,Y.jsx)(`span`,{className:t>0?`text-foreground`:void 0,children:t}),` `,`connected`]})]}),(0,Y.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1 pl-3.5`,children:[(0,Y.jsx)(`code`,{className:`min-w-0 truncate font-mono text-xs text-muted-foreground`,children:e.endpoint}),(0,Y.jsx)(ke,{value:e.endpoint??``,label:`Copy ${n} endpoint`})]})]},e.name)}),r.length>0&&(0,Y.jsxs)(`p`,{className:`pt-1 text-xs text-muted-foreground`,children:[r.map(e=>Oe[e.name]??e.name).join(`, `),` `,r.length===1?`is`:`are`,` off.`]})]})}var Kt=[`devices`,`models`,`assets`],qt=[`assets`,`models`,`devices`],Jt={devices:`DeviceHub devices`,models:`Digital Twins models`,assets:`Digital Twins instances`},Yt={devices:{apply:`DeviceHub device records and settings on Litmus Edge.`,cleanup:`Remove DeviceHub device records managed from Miravo.`},models:{apply:`Digital Twins model definitions synced to the integration.`,cleanup:`Remove Digital Twins model definitions created by Miravo.`},assets:{apply:`Digital Twins instances bound to DeviceHub devices.`,cleanup:`Remove Digital Twins instances deployed for this target.`}},Xt=`Miravo calls this API.`,Zt={assets:`models`};function Qt(e,t){let n=new Set(e);if(n.has(t)){n.delete(t);for(let[e,r]of Object.entries(Zt))r===t&&n.delete(e)}else{n.add(t);let e=Zt[t];e&&n.add(e)}return n}var $t=[{value:`fail`,title:`Fail if unmanaged exists`,hint:`Stop if the target has unmanaged resources.`},{value:`skip`,title:`Skip unmanaged resources`,hint:`Only update resources managed by Miravo.`}],en=[{value:`this`,title:`This Miravo instance`,hint:`Only what this Miravo applied. Leaves other machines' resources on a shared target.`},{value:`all`,title:`All Miravo instances`,hint:`Also what other Miravo instances applied for it.`}];function tn({legend:e,name:t,options:n,value:r,onChange:i}){let a=(0,J.useId)();return(0,Y.jsxs)(`div`,{className:`mt-2.5 space-y-1.5 border-t border-border/40 pt-2`,children:[(0,Y.jsx)(`p`,{id:`${a}-legend`,className:`text-[11px] font-medium uppercase tracking-wide text-foreground/80`,children:e}),(0,Y.jsx)(`div`,{role:`radiogroup`,"aria-labelledby":`${a}-legend`,className:`flex flex-col gap-1`,children:n.map(e=>(0,Y.jsxs)(nt,{htmlFor:`${t}-${e.value}`,className:P(`flex cursor-pointer items-start gap-2 rounded-[var(--miravo-radius-tight)] border px-2.5 py-2 text-[11px] transition-colors`,r===e.value?`border-primary/45 bg-primary/8`:`border-border/40 bg-muted/10 hover:bg-muted/25`),children:[(0,Y.jsx)(`input`,{id:`${t}-${e.value}`,type:`radio`,name:`${t}-${a}`,value:e.value,checked:r===e.value,onChange:()=>i(e.value),className:`mt-0.5 size-3.5 shrink-0 accent-primary`}),(0,Y.jsxs)(`span`,{className:`min-w-0`,children:[(0,Y.jsx)(`span`,{className:`font-medium text-foreground`,children:e.title}),(0,Y.jsx)(`span`,{className:`mt-px block text-[11px] leading-tight text-foreground/74`,children:e.hint})]})]},e.value))})]})}function nn({open:e,onOpenChange:t,isApply:n,scopeOptions:r,scope:i,onToggleScope:a,ifUnmanaged:o,onIfUnmanagedChange:s,instances:c,onInstancesChange:l}){return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`button`,{type:`button`,className:`group flex w-full items-center justify-between gap-2 rounded-[var(--miravo-radius-tight)] bg-muted/40 px-2.5 py-2 text-left text-[11px] font-medium text-muted-foreground transition-colors hover:bg-muted/60 hover:text-foreground aria-expanded:bg-muted/55 aria-expanded:text-foreground`,onClick:()=>t(!e),"aria-expanded":e,children:[`Advanced`,(0,Y.jsx)(he,{className:P(`size-3.5 shrink-0 text-muted-foreground transition-transform ease-out group-hover:text-foreground/80`,e?`duration-500 rotate-180 text-foreground/80`:`duration-280`),"aria-hidden":!0})]}),(0,Y.jsxs)(u.div,{initial:!1,animate:{maxHeight:e?520:0,opacity:+!!e},transition:{maxHeight:{duration:e?.52:.28,ease:e?[.16,1,.3,1]:[.4,0,.2,1]},opacity:{duration:e?.42:.24,ease:e?[.16,1,.3,1]:[.4,0,.2,1]}},className:P(`overflow-hidden`,!e&&`pointer-events-none`),"aria-hidden":!e,inert:!e,children:[(0,Y.jsx)(`div`,{className:`flex flex-col gap-1 pt-px`,children:r.map(e=>{let t=Object.entries(Zt).find(([t,n])=>n===e)?.[0],r=t!==void 0&&i.has(t),o=n?Yt[e].apply:Yt[e].cleanup;return(0,Y.jsxs)(nt,{htmlFor:`scope-${e}`,className:P(`flex min-h-9 cursor-pointer items-start gap-2 rounded-[var(--miravo-radius-tight)] border border-border/40 bg-muted/10 px-2.5 py-1.5 text-[11px] transition-colors`,r?`opacity-95`:`hover:bg-muted/25`),children:[(0,Y.jsx)(`span`,{className:`pt-0.5`,children:(0,Y.jsx)(Dt,{id:`scope-${e}`,checked:i.has(e),disabled:r,onCheckedChange:()=>a(e)})}),(0,Y.jsxs)(`span`,{className:`min-w-0 flex-1 leading-snug`,children:[(0,Y.jsx)(`span`,{className:`font-medium text-foreground`,children:Jt[e]}),(0,Y.jsx)(`span`,{className:`mt-0.5 block text-[11px] font-normal leading-tight text-muted-foreground`,children:o})]}),r?(0,Y.jsx)(`span`,{className:`shrink-0 self-start rounded-[var(--miravo-radius-tight)] border border-primary/35 bg-primary/10 px-1.5 py-px text-[10px] font-semibold uppercase tracking-wide text-primary`,title:`Required when Digital Twins instances are selected (models must stay in scope).`,children:`Required`}):null]},e)})}),n?(0,Y.jsx)(tn,{legend:`Collision policy`,name:`if-unmanaged`,options:$t,value:o,onChange:s}):(0,Y.jsx)(tn,{legend:`Remove resources of`,name:`cleanup-instances`,options:en,value:c,onChange:l})]})]})}function rn({label:e,help:t,mono:n=!1,children:r}){return(0,Y.jsxs)(`div`,{className:`grid grid-cols-2 items-start gap-x-4 border-b border-border/35 py-2.5 first:pt-0`,children:[t?(0,Y.jsx)(`dt`,{className:`min-w-0 pt-px`,children:(0,Y.jsxs)(`span`,{className:`inline-flex max-w-full items-center gap-1`,children:[(0,Y.jsx)(`span`,{className:`text-[11px] font-medium leading-snug text-muted-foreground`,children:e}),(0,Y.jsxs)(H,{children:[(0,Y.jsx)(B,{type:`button`,className:`inline-flex size-5 shrink-0 items-center justify-center rounded-[var(--miravo-radius-tight)] text-muted-foreground hover:bg-muted hover:text-foreground`,"aria-label":`About ${e}`,children:(0,Y.jsx)(we,{className:`size-3`,"aria-hidden":!0})}),(0,Y.jsx)(V,{side:`top`,align:`start`,className:`max-w-xs text-left`,children:t})]})]})}):(0,Y.jsx)(`dt`,{className:`min-w-0 pt-px text-[11px] font-medium text-muted-foreground`,children:e}),n?(0,Y.jsx)(`dd`,{className:`min-w-0 break-all font-mono text-[11px] leading-normal text-foreground/90`,children:r}):(0,Y.jsx)(`dd`,{className:`min-w-0 wrap-break-word font-medium text-foreground`,children:r})]})}function an({targetId:e,subject:t,result:n}){return{targetId:e,...t.kind===`template`?{templateId:t.templateId}:{assetId:t.assetId,protocol:t.protocol},scope:n.scope,ifUnmanaged:n.ifUnmanaged,exposedPorts:n.exposedPorts}}function on({targetId:e,subject:t,result:n}){return{targetId:e,...t.kind===`template`?{templateId:t.templateId}:{assetId:t.assetId},scope:n.scope,instances:n.instances}}var sn=/^\(?unchanged\)?$/i,cn=/^device=(\S+)/;function ln(e){let t=e.blockReason??e.detail;if(!(!t||sn.test(t)))return t.replace(/^\((.*)\)$/,`$1`)}function un(e){let t=new Map;for(let n of e)n.resourceType===`param-sync`&&t.set(n.name,n);let n=[],r=new Set;for(let i of e){if(i.resourceType===`param-sync`)continue;let e=i.resourceType===`asset`?t.get(i.name):void 0;e&&r.add(i.name);let a=e!==void 0&&i.action===`noop`&&e.action!==`noop`;n.push({action:a?e.action:i.action,resourceType:i.resourceType,name:i.name,protocol:i.protocol,note:a?`device binding changes`:ln(i),boundDevice:e?.detail?.match(cn)?.[1]})}for(let[e,i]of t)r.has(e)||n.push({action:i.action,resourceType:`asset`,name:e,note:ln(i),boundDevice:i.detail?.match(cn)?.[1]});return n}function dn(e){let t=new Map;for(let n of e){let e=t.get(n.action);e?e.push(n):t.set(n.action,[n])}return t}function fn(e){return un(e).filter(e=>e.action!==`noop`&&e.action!==`blocked`).length}var pn={create:{label:`Create`,phrase:`to create`,dot:`bg-success`,text:`text-success`},update:{label:`Update`,phrase:`to update`,dot:`bg-info`,text:`text-info`},replace:{label:`Replace`,phrase:`to replace`,dot:`bg-chart-2`,text:`text-chart-2`},delete:{label:`Remove`,phrase:`to remove`,dot:`bg-destructive`,text:`text-destructive`},blocked:{label:`Skipped`,phrase:`skipped`,dot:`bg-warning`,text:`text-warning`},noop:{label:`Unchanged`,phrase:`unchanged`,dot:`bg-muted-foreground/40`,text:`text-muted-foreground`}},mn=[`create`,`update`,`replace`,`delete`,`noop`],hn=[`create`,`update`,`replace`,`delete`],gn=6,_n={device:[`device`,`devices`],model:[`twin model`,`twin models`],asset:[`twin instance`,`twin instances`]};function vn(e,[t,n]){return`${e} ${e===1?t:n}`}function yn(e){let t=new Map;for(let n of e){let e=t.get(n.resourceType);e?e.push(n):t.set(n.resourceType,[n])}return[...t]}function bn(e){return yn(e).map(([e,t])=>vn(t.length,_n[e])).join(` · `)}function xn(e){return`${e.action}-${e.resourceType}-${e.name}-${e.protocol??``}`}function Sn(e){return e.map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(`, `)}function Cn({groups:e}){return(0,Y.jsx)(`div`,{"aria-hidden":!0,className:`flex h-1.5 w-full gap-0.5 overflow-hidden rounded-full`,children:[`blocked`,...mn].map(t=>{let n=e.get(t)?.length??0;return n>0?(0,Y.jsx)(`span`,{className:P(`h-full rounded-full`,pn[t].dot),style:{flexGrow:n}},t):null})})}function wn({entry:e}){let{note:t}=e;return(0,Y.jsxs)(`li`,{className:`flex min-w-0 items-baseline gap-2 py-1`,children:[(0,Y.jsx)(`span`,{className:`min-w-0 truncate font-mono text-[11.5px] text-foreground`,title:e.name,children:e.name}),e.protocol?(0,Y.jsx)(`span`,{className:`shrink-0 rounded-[var(--miravo-radius-tight)] border border-border/60 px-1 font-mono text-[9.5px] uppercase text-muted-foreground`,children:e.protocol}):null,e.boundDevice?(0,Y.jsxs)(`span`,{className:`shrink-0 font-mono text-[10.5px] text-muted-foreground`,title:`Device this twin instance reads from`,children:[`→ `,e.boundDevice]}):null,t?(0,Y.jsx)(`span`,{className:`min-w-0 truncate text-[11px] text-muted-foreground`,title:t,children:t}):null]})}function Tn({action:e,entries:t,open:n,onToggle:r}){let i=pn[e];return(0,Y.jsxs)(`li`,{children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:r,"aria-expanded":n,className:`group flex w-full min-w-0 items-center gap-3 rounded-[var(--miravo-radius-tight)] px-2 py-2 text-left outline-none transition-colors hover:bg-muted/40 focus-visible:ring-2 focus-visible:ring-ring`,children:[(0,Y.jsx)(`span`,{"aria-hidden":!0,className:P(`size-2 shrink-0 rounded-full`,i.dot)}),(0,Y.jsx)(`span`,{className:P(`w-20 shrink-0 text-sm font-medium`,e===`noop`?`text-muted-foreground`:`text-foreground`),children:i.label}),(0,Y.jsx)(`span`,{className:P(`w-8 shrink-0 font-mono text-sm tabular-nums`,i.text),children:t.length}),(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-xs text-muted-foreground`,children:bn(t)}),(0,Y.jsx)(ge,{"aria-hidden":!0,className:P(`size-3.5 shrink-0 text-muted-foreground transition-transform duration-200`,n&&`rotate-90`)})]}),n?(0,Y.jsx)(`div`,{className:`mb-2 ml-[1.1rem] flex flex-col gap-2 border-l border-border/60 pt-1 pl-[1.9rem]`,children:yn(t).map(([e,t])=>(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`p`,{className:`text-[10px] uppercase tracking-(--miravo-tracking-eyebrow) text-muted-foreground`,children:_n[e][1]}),(0,Y.jsx)(`ul`,{children:t.map(e=>(0,Y.jsx)(wn,{entry:e},xn(e)))})]},e))}):null]})}function En({entries:e}){return(0,Y.jsxs)(`div`,{role:`note`,className:`rounded-[var(--miravo-radius-tight)] border border-warning/30 bg-warning/8 px-3 py-2.5`,children:[(0,Y.jsxs)(`p`,{className:`flex items-center gap-2 text-xs font-medium text-warning`,children:[(0,Y.jsx)(Ze,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),e.length,` `,e.length===1?`resource is`:`resources are`,` skipped`]}),(0,Y.jsx)(`ul`,{className:`mt-1 pl-5.5`,children:e.map(e=>(0,Y.jsx)(wn,{entry:e},xn(e)))})]})}function Dn({groups:e,planKind:t}){let n=hn.filter(t=>(e.get(t)?.length??0)>0);return n.length===0?(0,Y.jsx)(`p`,{className:`font-heading text-base font-semibold tracking-tight`,children:t===`cleanup`?`Nothing to remove`:`Nothing to change`}):(0,Y.jsx)(`p`,{className:`font-heading text-base font-semibold tracking-tight`,children:n.map((t,n)=>(0,Y.jsxs)(J.Fragment,{children:[n>0?(0,Y.jsx)(`span`,{className:`mx-1.5 font-normal text-muted-foreground/60`,children:`·`}):null,(0,Y.jsx)(`span`,{className:P(`font-mono tabular-nums`,pn[t].text),children:e.get(t)?.length}),` `,(0,Y.jsx)(`span`,{className:`font-normal text-foreground/90`,children:pn[t].phrase})]},t))})}function On({plan:e,planKind:t=`apply`}){let n=un(e.entries),r=dn(n),i=hn.reduce((e,t)=>e+(r.get(t)?.length??0),0),[a,o]=(0,J.useState)(()=>new Set(i<=gn?hn:[])),s=e=>o(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),c=r.get(`blocked`)??[],l=r.get(`noop`)?.length??0;return(0,Y.jsxs)(`section`,{"aria-label":`Dry run`,className:`flex flex-col gap-3 rounded-[var(--miravo-radius-stadium-sm)] border border-border/60 bg-background/40 p-4`,children:[(0,Y.jsx)(`div`,{className:`flex items-start justify-between gap-3`,children:(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[(0,Y.jsxs)(`p`,{className:`text-[10px] uppercase tracking-(--miravo-tracking-eyebrow) text-muted-foreground`,children:[t===`cleanup`?`Expected removals`:`Expected changes`,(0,Y.jsx)(`span`,{className:`ml-2 normal-case tracking-normal text-muted-foreground/80`,children:`dry run · nothing runs until you confirm`})]}),(0,Y.jsx)(Dn,{groups:r,planKind:t}),(0,Y.jsxs)(`p`,{className:`font-mono text-[11px] text-muted-foreground`,children:[l>0?`${l} already in place · `:``,Sn(e.scope)]})]})}),n.length>0?(0,Y.jsx)(Cn,{groups:r}):null,c.length>0?(0,Y.jsx)(En,{entries:c}):null,n.length>0?(0,Y.jsx)(`ul`,{className:`-mx-2 flex flex-col`,children:mn.map(e=>{let t=r.get(e);return t?(0,Y.jsx)(Tn,{action:e,entries:t,open:a.has(e),onToggle:()=>s(e)},e):null})}):(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:t===`cleanup`?`No Miravo-managed resources matched this scope on the target.`:`The target already matches this template.`})]})}var kn=[`a`,`b`,`c`];function An(){return(0,Y.jsxs)(`div`,{role:`status`,"aria-busy":!0,"aria-label":`Loading dry run`,className:`flex flex-col gap-3 rounded-[var(--miravo-radius-stadium-sm)] border border-border/60 bg-background/40 p-4`,children:[(0,Y.jsx)(X,{className:`h-2.5 w-28`}),(0,Y.jsx)(X,{className:`h-5 w-56`}),(0,Y.jsx)(X,{className:`h-3 w-40`}),(0,Y.jsx)(X,{className:`h-1.5 w-full rounded-full`}),(0,Y.jsx)(`div`,{className:`flex flex-col gap-2 pt-1`,children:kn.map(e=>(0,Y.jsx)(X,{className:`h-7 w-full`},e))})]})}var jn={modbus:`Modbus`,opcua:`OPC UA`,mqtt:`MQTT`},Mn=Ye.map(e=>({value:e,label:jn[e]}));function Nn({open:e,onOpenChange:t,action:n,subject:r,label:i,target:a,stream:s}){let c=n===`apply`,u=c?Kt:qt,[d,f]=(0,J.useState)(new Set(u)),[p,m]=(0,J.useState)(`fail`),[h,g]=(0,J.useState)(`this`),[_,v]=(0,J.useState)(!1),[S,ne]=(0,J.useState)(Object.keys(a.exposedPorts??{}).length>0),[w,re]=(0,J.useState)(We(a.exposedPorts)),[T,ie]=(0,J.useState)(r.kind===`asset`?r.protocol:Ye[0]??`modbus`),ae=r.kind===`asset`?{kind:`asset`,assetId:r.assetId,protocol:T}:r,E=r.kind===`asset`?[T]:Ye,D=c?Ke(a.exposedPorts,w,E):{},O=u.filter(e=>d.has(e)),k=O.length>0&&D!==null,A={scope:O,ifUnmanaged:p,...c&&D?{exposedPorts:D}:{},instances:h},oe=an({targetId:a.id,subject:ae,result:A}),j=on({targetId:a.id,subject:ae,result:A}),M=l({queryKey:o.integrations.plan(n,JSON.stringify(c?oe:j)),queryFn:({signal:e})=>c?be(oe,{signal:e}):Te(j,{signal:e}),enabled:e&&k,retry:!1,gcTime:0}),N=s.status===`running`,P=()=>{k&&(s.operation&&s.status!==`running`&&s.reset(),c?s.startApply(oe):s.startCleanup(j),t(!1))},F=M.data?.plan,I=F?fn(F.entries):null,L;L=c?I===null?`Apply`:I===0?`Re-apply anyway`:`Apply ${I} ${I===1?`change`:`changes`}`:I?`Clean up ${I} ${I===1?`resource`:`resources`}`:`Clean up`;let R=M.error?[rt(M.error,`Plan failed`),it(M.error)].filter(Boolean).join(`. `):null;return(0,Y.jsx)(te,{open:e,onOpenChange:t,children:(0,Y.jsxs)(b,{showCloseButton:!0,className:`flex max-h-[90vh] min-h-0 flex-col gap-0 overflow-hidden p-0 sm:max-w-3xl`,children:[(0,Y.jsxs)(`div`,{className:`shrink-0 border-b border-border/60 px-5 pb-3 pt-5`,children:[(0,Y.jsxs)(ee,{className:`flex items-center gap-2 text-sm font-semibold leading-snug`,children:[c?(0,Y.jsx)(Ue,{className:`size-3.5 shrink-0 text-primary`,"aria-hidden":!0}):(0,Y.jsx)(Xe,{className:`size-3.5 shrink-0 text-destructive`,"aria-hidden":!0}),c?`Apply`:`Clean up`,` `,i,` `,c?`to`:`from`,` `,a.label]}),(0,Y.jsxs)(x,{className:`mt-1 font-mono text-[11px] text-muted-foreground`,children:[a.hostname,c?(0,Y.jsx)(`span`,{className:`font-sans`,children:` · reaches Miravo at `}):null,c?a.sourceHostname:null]})]}),(0,Y.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto overscroll-contain px-5 pt-4 pb-3`,children:(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-4`,children:[c&&r.kind===`asset`?(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsx)(`span`,{className:`text-[11px] font-medium text-muted-foreground`,children:`Protocol`}),(0,Y.jsxs)(bt,{value:T,onValueChange:e=>e&&ie(e),items:Mn,children:[(0,Y.jsx)(yt,{size:`sm`,className:`w-32`,"aria-label":`Protocol`,children:(0,Y.jsx)(_t,{})}),(0,Y.jsx)(vt,{alignItemWithTrigger:!1,align:`start`,children:Mn.map(e=>(0,Y.jsx)(K,{value:e.value,children:e.label},e.value))})]})]}):null,k?R?(0,Y.jsxs)(`div`,{role:`alert`,className:`flex flex-col items-start gap-2 text-xs`,children:[(0,Y.jsxs)(`p`,{className:`text-destructive`,children:[`Dry run failed: `,R]}),(0,Y.jsx)(C,{size:`sm`,variant:`outline`,onClick:()=>void M.refetch(),children:`Retry dry run`})]}):F?(0,Y.jsx)(On,{plan:F,planKind:n}):(0,Y.jsx)(An,{}):(0,Y.jsx)(`p`,{className:`text-[11px] text-destructive`,children:O.length===0?`Select at least one scope under Advanced.`:`Fix the invalid host port under Advanced.`}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Y.jsx)(nn,{open:_,onOpenChange:v,isApply:c,scopeOptions:u,scope:d,onToggleScope:e=>f(t=>Qt(t,e)),ifUnmanaged:p,onIfUnmanagedChange:m,instances:h,onInstancesChange:g}),_?(0,Y.jsxs)(`dl`,{className:`flex flex-col gap-0 text-xs leading-snug`,children:[(0,Y.jsx)(rn,{label:`Litmus Edge API`,help:Xt,mono:!0,children:a.hostname}),(0,Y.jsx)(rn,{label:Ae,help:Me,mono:!0,children:a.sourceHostname}),c?(0,Y.jsx)(`div`,{className:`border-b border-border/35 py-2.5`,children:(0,Y.jsx)(qe,{open:S,onOpenChange:ne,protocols:E,values:w,onChange:re,hint:`Enter the host port Litmus Edge should dial. Leave blank to use Miravo's own port. Saved for this target.`})}):null]}):null]})]})}),(0,Y.jsxs)(y,{className:`mx-0 mb-0 shrink-0 flex flex-col gap-2 border-t border-border/60 px-5 py-4 sm:flex-row sm:justify-end`,children:[(0,Y.jsx)(C,{type:`button`,variant:`outline`,onClick:()=>t(!1),children:`Cancel`}),(0,Y.jsxs)(C,{type:`button`,variant:c?`default`:`destructive`,onClick:P,disabled:!k||N,children:[c?(0,Y.jsx)(Ue,{className:`size-3`,"aria-hidden":!0}):(0,Y.jsx)(Xe,{className:`size-3`,"aria-hidden":!0}),L]})]})]})})}function Pn(e,t){let n=new Set,r=[];for(let i of e){if(i.targetId!==t)continue;let e=i.templateId===void 0?`asset`:`template`,a=i.templateId??i.assetId;if(a===void 0)continue;let o=`${e}:${a}`;n.has(o)||(n.add(o),i.operationType===`apply`?i.status===`success`||i.status===`partial`||i.status===`noop`?r.push({subjectId:a,kind:e,completedAt:i.completedAt}):n.delete(o):i.status!==`success`&&i.status!==`noop`&&n.delete(o))}return r}var Fn=500;function In(e){return e.kind===`template`?`template:${e.templateId}`:`asset:${e.assetId}`}function Ln(e,t){return`${In(e)}|${t}`}function Rn(e){return e.operationType===`apply`?e.status===`success`||e.status===`partial`||e.status===`noop`?`applied`:`failed`:e.status===`success`||e.status===`noop`?`none`:`failed`}function zn(e){let t=new Map;for(let n of e){let e=n.templateId===void 0?n.assetId===void 0?null:{kind:`asset`,assetId:n.assetId,protocol:`modbus`}:{kind:`template`,templateId:n.templateId};if(!e)continue;let r=Ln(e,n.targetId);t.has(r)||t.set(r,{status:Rn(n),operationType:n.operationType,targetId:n.targetId,targetLabel:n.targetLabel,completedAt:n.completedAt,error:n.error})}return t}function Bn(e,t){let n=0,r=0;for(let i of e.values())t!==void 0&&i.targetId!==t||(i.status===`applied`?n+=1:i.status===`failed`&&(r+=1));return{applied:n,failed:r}}function Vn(){let e=l({queryKey:o.integrations.operationsFactory(),queryFn:()=>ye({limit:Fn})});return{query:e,cells:(0,J.useMemo)(()=>zn(e.data?.operations??[]),[e.data])}}var Hn=5,Un=`grid min-h-11 grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 px-4 py-2 @lg/deploy:grid-cols-[minmax(0,1fr)_minmax(9rem,auto)_6.5rem]`;function Wn(e){return e.kind===`template`?e.templateId:e.assetId}function Gn({row:e}){return(0,Y.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2.5`,children:[e.subject.kind===`template`?(0,Y.jsx)(me,{id:e.subject.templateId,className:`size-3.5 shrink-0 text-primary`}):(0,Y.jsx)(Rt,{className:`size-3.5 shrink-0 text-muted-foreground`,"aria-hidden":!0}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`truncate text-sm font-medium text-foreground`,children:e.label}),e.detail?(0,Y.jsx)(`div`,{className:`truncate font-mono text-[10px] text-muted-foreground`,children:e.detail}):null]})]})}function Kn({cell:e,running:t}){if(t)return(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-xs text-primary`,children:[(0,Y.jsx)(`span`,{"aria-hidden":!0,className:`size-1.5 animate-pulse rounded-full bg-primary`}),`Running…`]});if(!e||e.status===`none`)return(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-xs text-muted-foreground`,children:[(0,Y.jsx)(`span`,{"aria-hidden":!0,className:`size-1.5 rounded-full border border-muted-foreground/60`}),`Not applied`]});let n=e.status===`applied`;return(0,Y.jsxs)(`span`,{className:`inline-flex min-w-0 items-center gap-1.5 text-xs`,title:e.error??void 0,children:[(0,Y.jsx)(`span`,{"aria-hidden":!0,className:P(`size-1.5 shrink-0 rounded-full`,n?`bg-success`:`bg-destructive`)}),(0,Y.jsx)(`span`,{className:n?`text-foreground`:`text-destructive`,children:n?`Applied`:e.operationType===`cleanup`?`Clean up failed`:`Failed`}),(0,Y.jsx)(`span`,{className:`font-mono text-[11px] text-muted-foreground`,children:D(e.completedAt)})]})}function qn({row:e,target:t,cell:n,running:r,disabled:i,indent:a,onAction:o}){let s=`${e.label} on ${t.label}`,c=n?.status===`applied`||n?.status===`failed`;return(0,Y.jsxs)(`li`,{className:P(Un,`transition-colors hover:bg-muted/20`,a&&`pl-9`),children:[(0,Y.jsx)(Gn,{row:e}),(0,Y.jsxs)(`div`,{className:`col-start-1 row-start-2 @lg/deploy:col-start-auto @lg/deploy:row-start-auto`,children:[(0,Y.jsx)(Kn,{cell:n,running:r}),n?.status===`failed`&&n.error?(0,Y.jsx)(`p`,{className:`mt-0.5 line-clamp-1 text-[11px] text-destructive/80`,children:n.error}):null]}),(0,Y.jsxs)(`div`,{className:`col-start-2 row-span-2 row-start-1 flex items-center justify-end gap-1 @lg/deploy:col-start-auto @lg/deploy:row-span-1 @lg/deploy:row-start-auto`,children:[n?.status===`applied`?null:(0,Y.jsx)(C,{size:`xs`,variant:`outline`,disabled:i,"aria-label":`${n?.status===`failed`?`Retry`:`Apply`} ${s}`,className:Le,onClick:()=>o(`apply`),children:n?.status===`failed`?`Retry`:`Apply`}),c?(0,Y.jsxs)(de,{children:[(0,Y.jsx)(ue,{render:(0,Y.jsx)(C,{size:`icon-xs`,variant:`ghost`,disabled:i,"aria-label":`More actions for ${s}`,className:`text-muted-foreground hover:text-foreground`}),children:(0,Y.jsx)(zt,{"aria-hidden":!0})}),(0,Y.jsxs)(le,{align:`end`,className:`min-w-40`,children:[(0,Y.jsxs)(ce,{className:`gap-2 text-xs`,onClick:()=>o(`apply`),children:[(0,Y.jsx)(Ut,{className:`size-3.5 text-muted-foreground`,"aria-hidden":!0}),`Re-apply`]}),(0,Y.jsxs)(ce,{variant:`destructive`,className:`gap-2 text-xs`,onClick:()=>o(`cleanup`),children:[(0,Y.jsx)(Xe,{className:`size-3.5`,"aria-hidden":!0}),`Clean up`]})]})]}):null]})]})}function Jn({target:e,running:t,disabled:n,onCleanup:r}){let i=Pn(l({queryKey:o.integrations.operationsForTarget(e.id),queryFn:()=>xe(e.id)}).data??[],e.id).filter(e=>!t.has(e.subjectId));return i.length===0?null:(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`li`,{className:`bg-muted/20 px-4 pt-2.5 pb-1.5`,children:[(0,Y.jsx)(`p`,{className:`text-[10px] uppercase tracking-(--miravo-tracking-eyebrow) text-muted-foreground`,children:`No longer running`}),(0,Y.jsxs)(`p`,{className:`mt-0.5 text-[11px] text-muted-foreground`,children:[`Still on `,e.label,` from an earlier apply. Clean up removes what Miravo created.`]})]}),i.map(t=>{let i=t.kind===`template`?{subject:{kind:`template`,templateId:t.subjectId},label:t.subjectId}:{subject:{kind:`asset`,assetId:t.subjectId,protocol:`modbus`},label:t.subjectId};return(0,Y.jsxs)(`li`,{className:P(Un,`bg-muted/20`),children:[(0,Y.jsx)(Gn,{row:i}),(0,Y.jsxs)(`span`,{className:`col-start-1 row-start-2 inline-flex items-center gap-1.5 text-xs text-muted-foreground @lg/deploy:col-start-auto @lg/deploy:row-start-auto`,children:[(0,Y.jsx)(`span`,{"aria-hidden":!0,className:`size-1.5 rounded-full bg-muted-foreground/60`}),`Applied`,(0,Y.jsx)(`span`,{className:`font-mono text-[11px]`,children:D(t.completedAt)})]}),(0,Y.jsx)(`div`,{className:`col-start-2 row-span-2 row-start-1 flex justify-end @lg/deploy:col-start-auto @lg/deploy:row-span-1 @lg/deploy:row-start-auto`,children:(0,Y.jsxs)(C,{size:`xs`,variant:`ghost`,disabled:n,"aria-label":`Clean up ${t.subjectId} on ${e.label}`,className:`text-muted-foreground hover:bg-destructive/12 hover:text-destructive`,onClick:()=>r(i),children:[(0,Y.jsx)(Xe,{className:`size-3`,"aria-hidden":!0}),`Clean up`]})})]},`${t.kind}:${t.subjectId}`)})]})}function Yn(e,t){return t>0?`fault`:e>0?`live`:`off`}function Xn({target:e,templates:t,assets:n,running:r,cells:i,stream:a,onAction:o}){let[s,c]=(0,J.useState)(!1),{applied:l,failed:u}=Bn(i,e.id),d=a.status===`running`,f=t=>i.get(Ln(t.subject,e.id)),p=n.length>Hn,m=n.filter(e=>f(e)?.status===`applied`).length,h=(t,n=!1)=>{let r=a.operation,i=d&&r?.label===Wn(t.subject)&&(r.targetLabel===e.label||r.targetLabel===e.id);return(0,Y.jsx)(qn,{row:t,target:e,cell:f(t),running:i,disabled:d,indent:n,onAction:n=>o(t,e,n)},`${t.subject.kind}:${t.label}`)};return(0,Y.jsx)(at,{icon:R,title:e.label,description:(0,Y.jsx)(`span`,{className:`font-mono text-[11px]`,children:e.hostname}),aside:(0,Y.jsxs)(U,{tone:Yn(l,u),children:[(0,Y.jsx)(`span`,{className:`mr-1.5 font-mono font-semibold tabular-nums text-foreground`,children:l}),(0,Y.jsx)(G,{children:`applied`}),u>0?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{className:`mx-1.5 text-muted-foreground/60`,children:`·`}),(0,Y.jsx)(`span`,{className:`mr-1.5 font-mono font-semibold tabular-nums text-destructive`,children:u}),(0,Y.jsx)(G,{children:`failed`})]}):null]}),className:`@container/deploy`,bodyClassName:`p-0`,children:(0,Y.jsxs)(`ul`,{className:`divide-y divide-border/50 py-1`,children:[t.length===0&&n.length===0?(0,Y.jsx)(`li`,{className:`px-4 py-3 text-xs text-muted-foreground`,children:`Nothing is running. Load a template to send it to Litmus Edge.`}):null,t.map(e=>h(e)),p?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`li`,{className:Un,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>c(e=>!e),"aria-expanded":s,className:`flex min-w-0 items-center gap-2 rounded-[var(--miravo-radius-tight)] text-sm font-medium outline-none focus-visible:ring-2 focus-visible:ring-ring`,children:[(0,Y.jsx)(ge,{className:P(`size-3.5 shrink-0 text-muted-foreground transition-transform`,s&&`rotate-90`),"aria-hidden":!0}),`Standalone assets`,(0,Y.jsx)(`span`,{className:`font-mono text-[11px] text-muted-foreground`,children:n.length})]}),(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:m>0?`${m} applied`:`Not applied`})]}),s?n.map(e=>h(e,!0)):null]}):n.map(e=>h(e)),(0,Y.jsx)(Jn,{target:e,running:r,disabled:d,onCleanup:t=>o(t,e,`cleanup`)})]})})}function Zn({targets:e,cells:t,stream:n}){let{templates:r,assets:i}=a(S(e=>({templates:e.templates,assets:e.assets}))),[o,s]=(0,J.useState)(null);if(e.length===0)return(0,Y.jsxs)(`div`,{className:`flex flex-col items-start gap-3 rounded-[var(--miravo-radius-stadium-sm)] border border-dashed border-border p-5`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium`,children:[(0,Y.jsx)(R,{className:`size-4 text-muted-foreground`,"aria-hidden":!0}),`No Litmus Edge target yet`]}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Add a device with its hostname and an API token. Then apply templates and assets to it from here.`}),(0,Y.jsxs)(g,{to:`/integrations`,className:j({size:`sm`}),children:[(0,Y.jsx)(Be,{className:`size-3.5`,"aria-hidden":!0}),`Add target`]})]});let c=new Set(r.flatMap(e=>e.assetIds)),l=r.map(e=>({subject:{kind:`template`,templateId:e.templateId},label:e.templateName,detail:e.templateId})),u=i.filter(e=>!c.has(e.id)).map(e=>({subject:{kind:`asset`,assetId:e.id,protocol:`modbus`},label:e.id})),d=new Set([...r.map(e=>e.templateId),...i.map(e=>e.id)]);return(0,Y.jsxs)(`section`,{"aria-label":`Deployments`,className:P(`grid items-start gap-4`,e.length>1&&`@5xl/main:grid-cols-2`),children:[e.map(e=>(0,Y.jsx)(Xn,{target:e,templates:l,assets:u,running:d,cells:t,stream:n,onAction:(e,t,n)=>s({row:e,target:t,action:n})},e.id)),o?(0,Y.jsx)(Nn,{open:!0,onOpenChange:e=>!e&&s(null),action:o.action,subject:o.row.subject,label:o.row.label,target:o.target,stream:n}):null]})}var Qn={status:`idle`,operation:null,error:null,logs:[],cancelRequested:!1},$n=200;function er(){let[e,t]=(0,J.useState)(Qn),n=(0,J.useRef)(null),r=(0,J.useRef)(0),i=c(),a=(0,J.useRef)(0),s=(0,J.useCallback)(e=>{let n=rt(e,`Integration operation failed.`),r=it(e),i=r?`${n} ${r}`:n;t(e=>({...e,status:`error`,cancelRequested:!1,error:i,operation:e.operation?{...e.operation,status:`error`,error:i}:null}))},[]),l=(0,J.useCallback)(e=>{switch(e.event){case`accepted`:tr(e.data,t);break;case`log`:rr({...e.data,id:`log-${r.current++}`},t);break;case`started`:ir(e.data,t);break;case`phase`:ar(e.data,t);break;case`resource`:or(e.data,t);break;case`complete`:sr(e.data,t);break;case`cancelled`:lr(e.data,t);break;case`retrying`:ur(e.data,t);break;case`error`:s(Error(e.data.message));break}},[s]),u=(0,J.useCallback)(e=>{let c=++a.current;n.current?.abort(),r.current=0,t({status:`running`,operation:null,error:null,logs:[],cancelRequested:!1}),n.current=Se(e,e=>{a.current===c&&(l(e),dr(e)&&(i.invalidateQueries({queryKey:o.integrations.targets()}),i.invalidateQueries({queryKey:o.integrations.operations()}),n.current?.abort(),n.current=null))},e=>{a.current===c&&(n.current=null,s(e))})},[l,s,i]),d=(0,J.useCallback)(e=>{let c=++a.current;n.current?.abort(),r.current=0,t({status:`running`,operation:null,error:null,logs:[],cancelRequested:!1}),n.current=De(e,e=>{a.current===c&&(l(e),dr(e)&&(i.invalidateQueries({queryKey:o.integrations.operations()}),n.current?.abort(),n.current=null))},e=>{a.current===c&&(n.current=null,s(e))})},[l,s,i]),f=(0,J.useCallback)(()=>{a.current++,n.current?.abort(),n.current=null,t(Qn)},[]),p=(0,J.useCallback)(async()=>{let n=e.operation?.operationId;if(!(!n||e.status!==`running`||e.cancelRequested)){t(e=>cr(e,n));try{await Ee(n)||s(Error(`Operation finished before cancellation was accepted.`))}catch(e){s(e instanceof Error?e:Error(`Cancellation failed.`))}}},[e.operation?.operationId,e.status,e.cancelRequested,s]);return(0,J.useEffect)(()=>()=>{a.current++,n.current?.abort(),n.current=null},[]),{...e,startApply:u,startCleanup:d,reset:f,cancel:p}}function tr(e,t){t(t=>({...t,status:`running`,cancelRequested:!1,error:null,operation:{operationId:e.operationId,type:e.type,label:e.templateId??e.assetId??(e.type===`apply`?`Preparing apply`:`Preparing cleanup`),targetLabel:e.targetId??`Resolving target`,totalPlanned:0,phases:[],applied:0,failed:0,status:`running`,startedAt:Date.now()}}))}function nr(e){return e.templateId??e.assetId??`unknown`}function rr(e,t){t(t=>({...t,logs:[...t.logs,e].slice(-$n)}))}function ir(e,t){t(t=>({...t,status:`running`,cancelRequested:!1,error:null,operation:{operationId:e.operationId,type:e.type,label:nr(e),targetLabel:e.targetLabel,totalPlanned:e.totalPlanned,phases:[],applied:0,failed:0,status:`running`,startedAt:Date.now(),attempt:e.attempt,maxAttempts:e.maxAttempts}}))}function ar(e,t){t(t=>{if(!Z(t,e.operationId))return t;let n=t.operation.phases.map(e=>e.status===`active`?{...e,status:`done`}:e),r=n.findIndex(t=>t.name===e.phase),i=r>=0?n.map((t,n)=>n===r?{...t,status:`active`,total:e.total}:t):[...n,{name:e.phase,total:e.total,resources:[],status:`active`}];return{...t,operation:{...t.operation,phases:i}}})}function or(e,t){t(t=>{if(!Z(t,e.operationId))return t;let n={name:e.name,action:e.action,status:e.status,error:e.error},r=t.operation.phases.map(t=>t.name===e.phase&&t.status===`active`?{...t,resources:[...t.resources,n]}:t);return{...t,operation:{...t.operation,phases:r,applied:t.operation.applied+ +(e.status===`success`&&e.action!==`noop`),failed:t.operation.failed+ +(e.status===`failed`)}}})}function sr(e,t){t(t=>{if(!Z(t,e.operationId))return t;let n=t.operation.phases.map(e=>e.status===`active`?{...e,status:`done`}:e);return{...t,status:`complete`,cancelRequested:!1,error:null,operation:{...t.operation,phases:n,applied:e.applied??e.deleted??0,failed:e.failed,duration:e.duration,status:`complete`}}})}function cr(e,t){return!Z(e,t)||e.status!==`running`?e:{...e,cancelRequested:!0}}function lr(e,t){t(t=>{if(!Z(t,e.operationId))return t;let n=t.operation.phases.map(e=>e.status===`active`?{...e,status:`done`}:e);return{...t,status:`complete`,cancelRequested:!1,error:null,operation:{...t.operation,phases:n,applied:e.applied??e.deleted??0,failed:e.failed,duration:e.duration,status:`cancelled`}}})}function ur(e,t){t(t=>Z(t,e.operationId)?{...t,status:`running`,cancelRequested:!1,error:null,operation:{...t.operation,status:`running`,retryPending:!0,retryDelayMs:e.delayMs,attempt:e.attempt,maxAttempts:e.maxAttempts,error:e.error,applied:0,failed:0,phases:[]}}:t)}function Z(e,t){return e.operation?.operationId===t}function dr(e){return e.event===`complete`||e.event===`cancelled`||e.event===`error`}var fr={initial:{scale:0,opacity:0},animate:{scale:1,opacity:1,originY:0},exit:{scale:0,opacity:0},transition:{type:`spring`,stiffness:350,damping:40}},pr={initial:{opacity:0,y:6},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{type:`tween`,duration:.22,ease:[.16,1,.3,1]}};function mr({children:e,variant:t=`default`}){let n=t===`default`;return(0,Y.jsx)(u.div,{...n?fr:pr,layout:n,className:`mx-auto w-full`,children:e})}var hr=J.memo(({children:e,className:t,delay:n=1e3,...r})=>{let[i,a]=(0,J.useState)(0),o=(0,J.useMemo)(()=>J.Children.toArray(e),[e]);(0,J.useEffect)(()=>{let e=null;return i<o.length-1&&(e=setTimeout(()=>{a(e=>(e+1)%o.length)},n)),()=>{e!==null&&clearTimeout(e)}},[i,n,o.length]);let s=(0,J.useMemo)(()=>o.slice(0,i+1).reverse(),[i,o]);return(0,Y.jsx)(`div`,{className:P(`flex flex-col items-center gap-4`,t),...r,children:(0,Y.jsx)(f,{children:s.map(e=>(0,Y.jsx)(mr,{children:e},e.key))})})});hr.displayName=`AnimatedList`;function gr({type:e,errorMessage:t,className:n}){return null}var _r=`text-destructive hover:bg-destructive/25 hover:text-foreground`,vr={device:`Devices`,tags:`Tags`,model:`Models`,asset:`Assets`,"param-sync":`Parameters`};function yr(e){return vr[e]??e}function br(e){switch(e){case`create`:return`border border-success/30 bg-success/15 text-success`;case`update`:return`border border-chart-3/30 bg-chart-3/15 text-chart-3`;case`replace`:return`border border-warning/30 bg-warning/15 text-warning`;case`delete`:return`border border-destructive/30 bg-destructive/15 text-destructive`;case`noop`:return`border border-border/60 bg-muted/70 text-foreground/75`;default:return`border border-border/50 bg-muted/80 text-foreground/85`}}function xr(e){return e===`noop`?`no-op`:e}function Sr({status:e}){switch(e){case`success`:return(0,Y.jsx)(_e,{className:`size-3.5 shrink-0 text-success`});case`failed`:return(0,Y.jsx)(ve,{className:`size-3.5 shrink-0 text-destructive`});case`pending`:return(0,Y.jsx)(z,{className:`size-3.5 shrink-0 animate-spin text-primary/90`})}}function Cr({status:e}){switch(e){case`done`:return(0,Y.jsx)(_e,{className:`size-3.5 text-success`});case`active`:return(0,Y.jsx)(z,{className:`size-3.5 animate-spin text-primary`});case`pending`:return(0,Y.jsx)(It,{className:`size-3.5 text-foreground/55`})}}function wr({entry:e}){let[t,n]=(0,J.useState)(!1);return(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,Y.jsxs)(`button`,{type:`button`,className:P(`flex items-center gap-2 rounded-[var(--miravo-radius-tight)] px-2 py-1 text-left transition-colors`,e.error?`cursor-pointer hover:bg-muted/40`:`cursor-default`),onClick:()=>e.error&&n(!t),disabled:!e.error,children:[(0,Y.jsx)(Sr,{status:e.status}),(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 truncate font-mono text-[11px] text-foreground`,children:e.name}),(0,Y.jsx)(`span`,{className:P(`inline-flex rounded-[var(--miravo-radius-tight)] px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wider`,br(e.action)),children:xr(e.action)}),e.error&&(0,Y.jsx)(he,{className:P(`size-3 text-foreground/75 transition-transform`,t&&`rotate-180`)})]}),(0,Y.jsx)(f,{initial:!1,children:t&&e.error&&(0,Y.jsxs)(u.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:`auto`},exit:{opacity:0,height:0},transition:{duration:.18},className:`overflow-hidden`,children:[(0,Y.jsxs)(`div`,{className:`mb-0 flex min-w-0 w-full items-center gap-1.5 rounded-[var(--miravo-radius-tight)] border border-destructive/40 bg-destructive/15 px-2.5 py-1.5 text-[10px] font-medium leading-relaxed`,children:[(0,Y.jsx)(`p`,{className:`min-w-0 flex-1 text-left whitespace-normal break-words text-destructive [overflow-wrap:anywhere]`,children:e.error}),(0,Y.jsx)(ke,{value:e.error,label:`Copy error`,className:P(_r,`shrink-0`)})]}),(0,Y.jsx)(gr,{type:`apply`,errorMessage:e.error,className:`mb-1 mt-2.5 w-full min-w-0`})]})})]})}function Tr({phase:e,open:t,onOpenChange:n}){let r=e.resources.length,i=r===e.total,a=e.resources.length>0;return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,Y.jsxs)(`button`,{type:`button`,className:P(`flex w-full items-center gap-2 rounded-[var(--miravo-radius-tight)] px-1 py-1 text-left transition-colors`,a&&`hover:bg-muted/40`,!a&&`cursor-default`),disabled:!a,"aria-expanded":a?t:void 0,onClick:()=>a&&n(!t),children:[(0,Y.jsx)(Cr,{status:e.status}),(0,Y.jsx)(`span`,{className:`text-xs font-medium tracking-wide text-foreground`,children:yr(e.name)}),(0,Y.jsxs)(`span`,{className:`font-mono text-[10px] text-foreground/70`,children:[r,`/`,e.total]}),(0,Y.jsxs)(`span`,{className:`ml-auto flex shrink-0 items-center gap-1.5`,children:[i&&e.status===`done`&&(0,Y.jsx)(_e,{className:`size-3 text-success`}),a&&(0,Y.jsx)(he,{className:P(`size-3 text-foreground/75 transition-transform`,!t&&`-rotate-90`),"aria-hidden":!0})]})]}),(0,Y.jsx)(f,{initial:!1,children:a&&t&&(0,Y.jsx)(u.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:`auto`},exit:{opacity:0,height:0},transition:{duration:.25,ease:[.16,1,.3,1]},className:`overflow-hidden`,children:(0,Y.jsx)(`div`,{className:`ml-2 flex min-w-0 flex-col border-l border-border/55 pl-2.5 pr-1.5 pb-1 pt-0.5`,children:(0,Y.jsx)(d.Provider,{value:null,children:e.resources.map((e,t)=>(0,Y.jsx)(mr,{variant:`subtle`,children:(0,Y.jsx)(wr,{entry:e})},`${e.name}-${t}`))})})})})]})}function Er({operation:e}){let t=e.status===`complete`,n=e.status===`cancelled`,r=e.failed>0,i=e.totalPlanned>0?Math.min(100,Or(e)/e.totalPlanned*100):0;return(0,Y.jsx)(`div`,{className:`h-1 w-full overflow-hidden rounded-full bg-muted/55`,role:`progressbar`,"aria-valuenow":Math.round(i),"aria-valuemin":0,"aria-valuemax":100,"aria-label":`Operation progress`,children:(0,Y.jsx)(u.div,{"aria-hidden":`true`,className:P(`h-full rounded-full transition-colors duration-500`,n?`bg-foreground/30`:t&&!r?`bg-success`:`bg-warning`),initial:{width:`0%`},animate:{width:`${i}%`},transition:{duration:.4,ease:[.25,.1,.25,1]}})})}function Dr(e){return e.duration==null?(Date.now()-e.startedAt)/1e3:e.duration/1e3}function Or(e){let t=e.applied+e.failed;return e.totalPlanned>0?Math.min(t,e.totalPlanned):t}var kr={complete:{Icon:_e,className:`size-4 text-success`},partial:{Icon:Ft,className:`size-4 text-warning`},cancelled:{Icon:jt,className:`size-4 text-foreground/65`},error:{Icon:ve,className:`size-4 text-destructive`},running:{Icon:z,className:`size-4 animate-spin text-warning`}};function Ar({icon:e,className:t}){return(0,Y.jsx)(u.div,{initial:{scale:0,opacity:0},animate:{scale:1,opacity:1},exit:{scale:0,opacity:0},transition:{type:`spring`,stiffness:500,damping:30},className:`shrink-0`,children:(0,Y.jsx)(e,{className:t})})}function jr({operation:e,sourceLabel:t,isAllExpanded:n,onToggleAll:r}){let i=Dr(e),a=Or(e),o=e.status===`complete`,s=e.status===`cancelled`,c=e.status===`error`,l=e.failed>0,d=o&&!l?`complete`:o&&l?`partial`:s?`cancelled`:c?`error`:`running`,p=kr[d];return(0,Y.jsxs)(`div`,{className:P(`sticky top-0 z-10 flex min-w-0 w-full flex-col gap-1.5 rounded-[var(--miravo-radius-stadium-sm)] border px-3 pt-2.5 pb-3.5 backdrop-blur-sm transition-colors duration-500`,o&&!l&&`border-success/30 bg-success/5`,o&&l&&`border-warning/30 bg-warning/5`,s&&`border-border/60 bg-muted/50`,c&&`border-destructive/30 bg-destructive/5`,!o&&!s&&!c&&`border-warning/20 bg-warning/5`),children:[(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,Y.jsx)(f,{mode:`wait`,initial:!1,children:(0,Y.jsx)(Ar,{icon:p.Icon,className:p.className},d)}),(0,Y.jsx)(`span`,{className:`text-xs font-medium leading-none text-foreground`,children:s?`Cancelled`:o?l?`Completed with errors`:`Complete`:c?`Failed`:e.retryPending?`Failed, retrying attempt ${e.attempt?e.attempt+1:2}/${e.maxAttempts} in ${e.retryDelayMs?e.retryDelayMs/1e3:3}s...`:e.attempt&&e.maxAttempts&&e.attempt>1?`Retrying attempt ${e.attempt}/${e.maxAttempts}...`:e.type===`apply`?`Applying...`:`Cleaning up...`}),(0,Y.jsxs)(`span`,{className:`w-full min-w-0 text-[10px] leading-tight text-foreground/78`,children:[(0,Y.jsx)(`span`,{className:`font-sans break-words`,children:t}),(0,Y.jsx)(`span`,{className:`font-mono break-words`,children:` → ${e.targetLabel}`})]})]}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2.5`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,Y.jsx)(et,{variant:`secondary`,className:`h-5 min-h-5 gap-0 overflow-hidden border border-border/50 bg-muted/70 px-1.5 !py-0 font-mono text-[10px] leading-none text-foreground shadow-sm [&>span]:inline-flex [&>span]:items-center`,children:(0,Y.jsxs)(`span`,{className:`gap-1`,children:[(0,Y.jsx)(f,{mode:`popLayout`,initial:!1,children:(0,Y.jsx)(u.span,{initial:{opacity:0,y:-6},animate:{opacity:1,y:0},exit:{opacity:0,y:6},transition:{type:`spring`,stiffness:500,damping:35},className:`inline tabular-nums`,children:a},a)}),`/`,e.totalPlanned,(0,Y.jsx)(`span`,{className:`text-foreground/72`,children:e.type===`apply`?`applied`:`deleted`})]})}),(0,Y.jsx)(f,{initial:!1,children:e.failed>0&&(0,Y.jsx)(u.div,{className:`inline-flex items-center`,initial:{opacity:0,scale:.8},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.8},transition:{type:`spring`,stiffness:500,damping:30},children:(0,Y.jsxs)(et,{variant:`destructive`,className:`h-5 min-h-5 gap-0 border border-destructive/35 bg-destructive/20 px-1.5 !py-0 font-mono text-[10px] font-semibold leading-none text-destructive`,children:[e.failed,` failed`]})})})]}),(0,Y.jsxs)(`div`,{className:`ml-auto flex shrink-0 items-center gap-2`,children:[(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1 font-mono text-[10px] leading-none text-foreground/75`,children:[(0,Y.jsx)(Lt,{className:`size-3 shrink-0 block text-foreground/65`,"aria-hidden":!0}),(0,Y.jsx)(`span`,{className:`tabular-nums leading-none`,children:typeof i==`number`?`${i.toFixed(1)}s`:`...`})]}),r&&(0,Y.jsx)(`div`,{className:`flex items-center border-l border-border/40 pl-2`,children:(0,Y.jsx)(`button`,{type:`button`,onClick:r,className:`flex size-4.5 items-center justify-center rounded-[var(--miravo-radius-tight)] text-foreground/55 transition-colors hover:bg-muted/60 hover:text-foreground`,"aria-label":n?`Collapse all phases`:`Expand all phases`,title:n?`Collapse all`:`Expand all`,children:(0,Y.jsx)(Pt,{className:P(`size-3.5 transition-transform duration-300`,!n&&`opacity-70 scale-y-[-1]`)})})})]})]}),(0,Y.jsx)(Er,{operation:e})]})]})}function Mr(e){return e?e.closest(`[data-edge-op-scroll]`)??e.closest(`.overflow-y-auto`):null}var Nr=350;function Pr(e){e?.scrollIntoView({block:`end`,behavior:`auto`,inline:`nearest`})}function Fr(e){let t=()=>Pr(e);t(),requestAnimationFrame(t),requestAnimationFrame(()=>requestAnimationFrame(t)),window.setTimeout(t,0),window.setTimeout(t,48),window.setTimeout(t,120)}function Ir({logs:e}){return e.length===0?null:(0,Y.jsx)(`div`,{className:`flex min-w-0 flex-col gap-1.5 px-2 pb-2`,children:e.map(e=>(0,Y.jsxs)(`div`,{className:P(`flex min-w-0 items-start gap-2 rounded-[var(--miravo-radius-tight)] border px-2.5 py-2 text-xs`,e.level===`error`?`border-destructive/35 bg-destructive/12 text-destructive`:e.level===`warn`?`border-warning/35 bg-warning/12 text-warning`:`border-primary/25 bg-primary/8 text-foreground/82`),children:[e.level===`info`?(0,Y.jsx)(I,{className:`mt-0.5 size-3.5 shrink-0 text-primary`,"aria-hidden":!0}):(0,Y.jsx)(Ft,{className:`mt-0.5 size-3.5 shrink-0`,"aria-hidden":!0}),(0,Y.jsx)(`span`,{className:`min-w-0 wrap-anywhere`,children:e.message})]},e.id))})}function Lr({operation:e,logs:t}){let n=(0,J.useRef)(null),r=(0,J.useRef)(null),i=(0,J.useRef)(!0),a=(0,J.useRef)(e.status);a.current=e.status;let o=(0,J.useRef)(!1),[s,c]=(0,J.useState)(new Set),l=e.label;(0,J.useLayoutEffect)(()=>{let e=Mr(n.current);if(!e)return;let t=()=>{i.current=e.scrollHeight-e.scrollTop-e.clientHeight<Nr};return e.addEventListener(`scroll`,t,{passive:!0}),t(),()=>{e.removeEventListener(`scroll`,t)}},[]),(0,J.useLayoutEffect)(()=>{if(e.status===`running`){i.current&&Pr(r.current),o.current=!0;return}o.current&&=(Fr(r.current),!1)},[e.status,e.applied,e.failed,e.phases]),(0,J.useEffect)(()=>{if(e.status!==`running`)return;let t=n.current;if(!t)return;let o=0,s=new ResizeObserver(()=>{cancelAnimationFrame(o),o=requestAnimationFrame(()=>{a.current===`running`&&i.current&&Pr(r.current)})});return s.observe(t),i.current&&Pr(r.current),()=>{s.disconnect(),cancelAnimationFrame(o)}},[e.status]);let d=e.phases.length>0,p=s.size===0;return(0,Y.jsxs)(`div`,{ref:n,className:`flex min-w-0 w-full flex-col gap-2`,children:[(0,Y.jsx)(jr,{operation:e,sourceLabel:l,isAllExpanded:p,onToggleAll:d?()=>{c(p?new Set(e.phases.map(e=>e.name)):new Set)}:void 0}),(0,Y.jsx)(`div`,{className:`flex flex-col gap-1 px-2 pt-2 pb-4`,children:e.phases.map(e=>(0,Y.jsx)(`div`,{children:(0,Y.jsx)(Tr,{phase:e,open:!s.has(e.name),onOpenChange:t=>{c(n=>{let r=new Set(n);return t?r.delete(e.name):r.add(e.name),r})}})},e.name))}),(0,Y.jsx)(f,{initial:!1,children:e.error&&e.retryPending&&(0,Y.jsxs)(u.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,y:10},className:`sticky bottom-2 z-20 mx-2 mt-auto mb-2 flex items-center gap-2 overflow-hidden rounded-[var(--miravo-radius-stadium-sm)] border border-destructive/40 bg-destructive/15 px-3 py-2 text-xs font-medium text-destructive shadow-md backdrop-blur-md`,children:[(0,Y.jsx)(z,{className:`size-4 shrink-0 animate-spin`}),(0,Y.jsx)(`span`,{className:`truncate`,children:e.error})]})}),(0,Y.jsx)(f,{initial:!1,children:e.error&&e.status===`error`&&(0,Y.jsxs)(u.div,{initial:{opacity:0,height:0,marginTop:0},animate:{opacity:1,height:`auto`,marginTop:8},exit:{opacity:0,height:0,marginTop:0},transition:{duration:.2},className:`mx-2 mb-4 flex min-w-0 flex-col gap-0 overflow-hidden rounded-[var(--miravo-radius-stadium-sm)] border border-destructive/40 bg-destructive/15 px-3 py-2 text-xs font-medium`,children:[(0,Y.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Y.jsx)(`p`,{className:`min-w-0 flex-1 text-left wrap-anywhere text-destructive`,children:e.error}),(0,Y.jsx)(ke,{value:e.error,label:`Copy error`,className:P(_r,`shrink-0`)})]}),(0,Y.jsx)(gr,{type:e.type,errorMessage:e.error,className:`mt-3 w-full min-w-0`})]})}),t&&t.length>0?(0,Y.jsx)(Ir,{logs:t}):null,(0,Y.jsx)(`div`,{ref:r,className:`h-px w-full shrink-0`,"aria-hidden":!0})]})}function Rr({title:e,subtitle:t,footerAction:n,canDismiss:r=!0,onDismiss:i,children:a}){return(0,J.useEffect)(()=>{function e(e){e.key===`Escape`&&r&&i()}return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}},[r,i]),(0,Y.jsx)(u.div,{initial:{opacity:0,y:24},animate:{opacity:1,y:0},exit:{opacity:0,y:16},transition:{type:`spring`,stiffness:380,damping:30},className:`pointer-events-none fixed bottom-4 left-4 right-4 z-[60] sm:left-auto sm:w-full sm:max-w-md`,children:(0,Y.jsxs)(Je,{className:`pointer-events-auto flex flex-col overflow-hidden border-border/70 bg-background p-0 shadow-lg shadow-black/15 ring-1 ring-border/50 backdrop-blur-sm sm:p-0 bg-background shadow-black/50`,children:[(0,Y.jsxs)(`div`,{className:`flex shrink-0 items-start gap-2 border-b border-border/45 p-2.5 pb-2 sm:p-3 sm:pb-2`,children:[(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[(0,Y.jsx)(Ve,{className:`size-4 shrink-0 text-primary`,"aria-hidden":!0}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`p`,{className:`font-heading text-xs font-semibold tracking-tight text-foreground`,children:e}),t?(0,Y.jsx)(`p`,{className:`text-[11px] leading-snug text-foreground/80`,children:t}):null]})]}),r?(0,Y.jsx)(C,{type:`button`,variant:`ghost`,size:`icon-xs`,className:`shrink-0 text-foreground/70 hover:bg-muted/80 hover:text-foreground`,onClick:i,"aria-label":`Dismiss operation panel`,children:(0,Y.jsx)(w,{className:`size-3.5`,"aria-hidden":!0})}):null]}),(0,Y.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto px-2.5 pt-2.5 sm:px-3 sm:pt-3`,"data-edge-op-scroll":``,children:a}),n?(0,Y.jsx)(`div`,{className:`flex w-full shrink-0 min-w-0 items-center gap-2 border-t border-border/40 bg-muted/15 p-2.5 sm:p-3`,children:n}):null]})})}function zr(e){let t=e.operation,n=t?.type===`apply`?`apply`:`cleanup`;switch(e.status){case`running`:return{title:`Operation in progress`,subtitle:`Streaming ${n} steps to Litmus Edge`};case`complete`:return t?.status===`cancelled`?{title:`Operation cancelled`,subtitle:`Stopped — resources created so far remain in Litmus Edge.`}:{title:`Operation complete`,subtitle:n===`apply`?`Apply finished — review the summary below.`:`Cleanup finished — review the summary below.`};case`error`:return{title:`Operation failed`,subtitle:e.error??t?.error??`The operation ended with an error.`};default:return{title:`Operation`,subtitle:``}}}function Br({stream:e,onReset:t}){if(!e.operation&&e.status!==`running`)return null;let{title:n,subtitle:r}=zr(e),i=e.status===`complete`,a=e.status===`error`,o=e.status===`running`,s=i||a,c=e.cancelRequested;async function l(){await e.cancel().catch(()=>{})}return(0,Y.jsx)(Rr,{title:n,subtitle:r,canDismiss:!o,footerAction:o&&e.operation?.operationId?(0,Y.jsx)(`div`,{className:`ml-auto shrink-0`,children:(0,Y.jsx)(`button`,{type:`button`,onClick:l,disabled:c,"aria-busy":c,className:P(j({variant:`outline`,size:`sm`}),`group h-8 gap-1.5 px-3 text-xs`,c?`cursor-not-allowed`:`hover:bg-destructive/12 hover:text-destructive hover:border-destructive/35`),children:c?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(z,{className:`size-3.5 shrink-0 animate-spin text-muted-foreground`,"aria-hidden":!0}),(0,Y.jsx)(u.span,{animate:{opacity:[1,.72,1]},transition:{duration:1.25,repeat:1/0,ease:`easeInOut`},className:`font-medium text-foreground`,children:`Cancelling…`})]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(w,{className:`size-3.5 shrink-0 text-foreground/65 group-hover:text-destructive`,"aria-hidden":!0}),(0,Y.jsx)(u.span,{animate:{opacity:[1,.88,1]},transition:{duration:2.2,repeat:1/0,ease:`easeInOut`},children:`Cancel`})]})})}):s?(0,Y.jsxs)(`div`,{className:`flex w-full flex-col gap-1.5`,children:[(0,Y.jsxs)(`div`,{className:`flex min-w-0 w-full flex-1 flex-wrap items-center justify-between gap-x-3 gap-y-1`,children:[(0,Y.jsxs)(g,{to:`/integrations?tab=activity`,className:P(j({variant:`ghost`,size:`xs`}),`group inline-flex h-6 shrink-0 items-center gap-1.5 px-2 text-[11px] font-medium text-foreground/80`,`hover:bg-primary/12 hover:text-primary`),children:[(0,Y.jsx)(F,{className:`size-3 shrink-0 text-foreground/70 group-hover:text-primary`,"aria-hidden":!0}),`View full activity`,(0,Y.jsx)(ge,{className:`size-2.5 shrink-0 text-foreground/50 group-hover:text-primary`,"aria-hidden":!0})]}),(0,Y.jsx)(`div`,{className:`flex shrink-0 items-center`,children:(0,Y.jsx)(C,{type:`button`,variant:`secondary`,size:`xs`,className:`h-6 px-2.5 text-[11px] font-medium`,onClick:t,children:`Close`})})]}),e.operation?.status===`cancelled`||a&&e.operation?(0,Y.jsx)(gr,{type:e.operation.type,errorMessage:e.operation.error,className:`mt-2.5 w-full min-w-0`}):null]}):void 0,onDismiss:t,children:e.operation?(0,Y.jsx)(Lr,{operation:e.operation,logs:e.logs}):(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2 py-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(z,{className:`size-3.5 animate-spin text-primary`,"aria-hidden":!0}),(0,Y.jsx)(`span`,{className:`text-xs text-foreground/78`,children:`Connecting to Litmus Edge…`})]}),(0,Y.jsx)(`div`,{className:`h-1 w-full overflow-hidden rounded-full bg-muted/55`,children:(0,Y.jsx)(u.div,{className:`h-full w-2/5 rounded-full bg-primary`,animate:{x:[`-100%`,`250%`]},transition:{duration:1.2,repeat:1/0,ease:`easeInOut`}})})]})})}function Vr({targetCount:e,applied:t,failed:n,lastOp:r}){return(0,Y.jsxs)(`header`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,Y.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[(0,Y.jsx)(`div`,{"aria-hidden":!0,className:`flex size-9 shrink-0 items-center justify-center rounded-[var(--miravo-radius-tight)] border border-border/60 bg-background/70 text-primary`,children:(0,Y.jsx)(R,{className:`size-4`})}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`h2`,{className:`font-heading text-lg font-semibold tracking-tight`,children:`Litmus Edge`}),(0,Y.jsx)(`p`,{className:`mt-0.5 max-w-2xl text-pretty text-xs text-muted-foreground`,children:`Send running templates and assets to Litmus Edge devices: devices, tags and flows. Each change is planned before it runs, and clean up removes only what Miravo created.`})]})]}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Y.jsxs)(U,{tone:e>0?`live`:`off`,children:[(0,Y.jsx)(`span`,{className:`mr-1.5 font-mono font-semibold tabular-nums text-foreground`,children:e}),(0,Y.jsx)(G,{children:e===1?`target`:`targets`})]}),(0,Y.jsxs)(U,{tone:t>0?`live`:`off`,children:[(0,Y.jsx)(`span`,{className:`mr-1.5 font-mono font-semibold tabular-nums text-foreground`,children:t}),(0,Y.jsx)(G,{children:`applied`})]}),n>0?(0,Y.jsxs)(U,{tone:`fault`,children:[(0,Y.jsx)(`span`,{className:`mr-1.5 font-mono font-semibold tabular-nums text-destructive`,children:n}),(0,Y.jsx)(G,{children:`failed`})]}):null,r?(0,Y.jsxs)(`span`,{className:`font-mono text-[11px] text-muted-foreground`,children:[`last run `,D(r.completedAt)]}):null,(0,Y.jsx)(`span`,{"aria-hidden":!0,className:`h-3 w-px bg-border/60`}),(0,Y.jsxs)(g,{to:`/integrations`,className:W+` text-xs text-muted-foreground`,children:[(0,Y.jsx)(Ge,{className:`size-3`,"aria-hidden":!0}),`Manage targets`]}),(0,Y.jsxs)(g,{to:`/integrations?tab=activity`,className:W+` text-xs text-muted-foreground`,children:[(0,Y.jsx)(F,{className:`size-3`,"aria-hidden":!0}),`Activity`]}),(0,Y.jsxs)(`a`,{href:`${Wt}/integrations/litmus-edge`,target:`_blank`,rel:`noopener noreferrer`,className:W+` text-xs text-muted-foreground`,children:[(0,Y.jsx)(Mt,{className:`size-3`,"aria-hidden":!0}),`Docs`]})]})]})}function Hr(){let e=er(),t=l({queryKey:o.integrations.targets(),queryFn:()=>Ce()}),{query:n,cells:r}=Vn(),i=t.data,a=n.data?.operations;if(!i||!a){let e=t.error??n.error;return e?(0,Y.jsx)(He,{message:rt(e,`Could not load Litmus Edge status.`),onRetry:()=>{t.refetch(),n.refetch()},isRetrying:t.isFetching||n.isFetching}):(0,Y.jsx)(X,{className:`h-64 w-full`})}let{applied:s,failed:c}=Bn(r),u=a[0];return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,Y.jsx)(Vr,{targetCount:i.length,applied:s,failed:c,lastOp:u}),(0,Y.jsx)(Zn,{targets:i,cells:r,stream:e}),e.operation||e.status===`running`?(0,Y.jsx)(Br,{stream:e,onReset:e.reset}):null]})}function Ur(){let e=l({queryKey:o.integrations.targets(),queryFn:()=>Ce()}),{cells:t}=Vn(),n=e.data?.length??0,{applied:r,failed:i}=Bn(t);return(0,Y.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1.5 font-mono text-[11px] text-muted-foreground`,children:[(0,Y.jsx)(`span`,{"aria-hidden":!0,className:P(`size-1.5 shrink-0 rounded-full`,i>0?`bg-destructive`:r>0?`bg-success`:`bg-muted-foreground/50`)}),n===0?(0,Y.jsx)(`span`,{className:`font-sans`,children:`No target yet`}):(0,Y.jsxs)(`span`,{className:`truncate`,children:[n,` `,n===1?`target`:`targets`,` ·`,` `,(0,Y.jsx)(`span`,{className:`text-foreground`,children:r}),` applied`,i>0?(0,Y.jsxs)(`span`,{className:`text-destructive`,children:[` · `,i,` failed`]}):null]})]})}var Wr={"litmus-edge":{icon:R,Panel:Hr,Summary:Ur}};function Gr(e){return e?`/?tab=integrations&integration=${e}`:`/?tab=integrations`}function Kr(){return(0,Y.jsxs)(at,{icon:Ht,title:`Integrations`,description:`Send this factory to the platforms you build on.`,bodyClassName:`gap-1 px-2 py-2`,footer:(0,Y.jsxs)(g,{to:Gr(),className:W,children:[`Open integrations`,(0,Y.jsx)(L,{className:`size-3`,"aria-hidden":!0})]}),children:[At.map(e=>{let{icon:t,Summary:n}=Wr[e.id];return(0,Y.jsxs)(g,{to:Gr(e.id),className:`group flex min-w-0 items-center gap-3 rounded-[var(--miravo-radius-tight)] px-2 py-2 outline-none transition-colors hover:bg-muted/40 focus-visible:ring-2 focus-visible:ring-ring`,children:[(0,Y.jsx)(t,{className:`size-3.5 shrink-0 text-primary`,"aria-hidden":!0}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`truncate text-sm font-medium`,children:e.label}),(0,Y.jsx)(n,{})]}),(0,Y.jsx)(ge,{className:`size-3.5 shrink-0 text-muted-foreground transition-transform group-hover:translate-x-0.5`,"aria-hidden":!0})]},e.id)}),(0,Y.jsxs)(`p`,{className:`px-2 pt-1 pb-0.5 text-[11px] text-muted-foreground`,children:[`Coming soon: `,Ot.map(e=>e.label).join(`, `),`.`]})]})}function qr(e){return s.prefetchQuery({queryKey:o.assets.detail(e),queryFn:()=>i(`/assets/${e}`,r.assetDetail),staleTime:2e3})}var Jr=`Commissioning → asset is running startup diagnostics. Operating → running normally. Decommissioning → winding down.`;function Yr(e,t,n,r){let i=n===`asc`?1:-1;return[...e].sort((e,n)=>{switch(t){case`id`:return e.id.localeCompare(n.id)*i;case`template`:return(r.get(e.id)??``).localeCompare(r.get(n.id)??``)*i;case`model`:return e.model.localeCompare(n.model)*i;case`lifecycle`:return e.lifecycleStage.localeCompare(n.lifecycleStage)*i;case`hours`:return(e.operatingHours-n.operatingHours)*i;case`faults`:return(e.activeFaults.length-n.activeFaults.length)*i;case`status`:{let t=e=>e.isQuarantined?2:+(e.activeFaults.length>0);return(t(e)-t(n))*i}default:return 0}})}function Xr(e){return e.isQuarantined?`quarantined`:e.activeFaults.length>0?`faulted`:`healthy`}var Zr={healthy:{pip:`bg-success`,ring:`border-success/40 text-success`,label:`healthy`,help:`No active faults, not quarantined.`},faulted:{pip:`bg-warning`,ring:`border-warning/40 text-warning`,label:`faulted`,help:`One or more active faults; asset is still running.`},quarantined:{pip:`bg-destructive`,ring:`border-destructive/40 text-destructive`,label:`quarantined`,help:`Asset isolated from production flows pending review.`}};function Qr({state:e}){let t=Zr[e];return(0,Y.jsxs)(H,{children:[(0,Y.jsxs)(B,{render:(0,Y.jsx)(`span`,{className:P(`inline-flex h-5 items-center gap-1.5 rounded-(--miravo-radius-pill) border bg-background/30 px-2 text-[11px] font-medium`,t.ring)}),children:[(0,Y.jsx)(`span`,{"aria-hidden":!0,className:P(`size-1.5 shrink-0 rounded-full`,t.pip)}),(0,Y.jsx)(`span`,{children:re(t.label)})]}),(0,Y.jsx)(V,{side:`top`,children:t.help})]})}function Q({label:e,sortKey:t,subtitle:n,tooltip:r,current:i,direction:a,onSort:o,className:s}){let c=i===t,l=c?a===`asc`?`ascending`:`descending`:`none`,u=(0,Y.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1 whitespace-nowrap rounded-(--miravo-radius-tight) text-left outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background`,onClick:()=>o(t),children:[(0,Y.jsxs)(`span`,{className:`inline-flex items-baseline gap-1`,children:[(0,Y.jsx)(`span`,{children:e}),n&&(0,Y.jsx)(`span`,{className:`text-[10px] font-normal text-muted-foreground`,children:n})]}),(0,Y.jsx)(se,{className:P(`size-3`,c?`text-foreground`:`text-muted-foreground`),"aria-hidden":!0}),(0,Y.jsx)(`span`,{className:`sr-only`,children:c?`, sorted ${a===`asc`?`ascending`:`descending`}. Click to toggle.`:`, click to sort`})]});return(0,Y.jsx)(wt,{className:s,"aria-sort":l,children:r?(0,Y.jsxs)(H,{children:[(0,Y.jsx)(B,{render:u}),(0,Y.jsx)(V,{side:`top`,children:r})]}):u})}function $r({title:e,body:t,action:n}){return(0,Y.jsx)(xt,{children:(0,Y.jsx)(q,{colSpan:8,className:`py-10`,children:(0,Y.jsxs)(`div`,{className:`mx-auto flex max-w-sm flex-col items-center gap-2 text-center`,children:[(0,Y.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:e}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:t}),n&&(0,Y.jsxs)(g,{to:n.href,className:`mt-1 inline-flex items-center gap-1 rounded-(--miravo-radius-tight) text-xs font-medium text-primary outline-none hover:underline focus-visible:ring-2 focus-visible:ring-ring`,children:[n.label,(0,Y.jsx)(L,{className:`size-3`,"aria-hidden":!0})]})]})})})}function ei({assets:e,state:t,templateByAsset:n,sortKey:r,sortDir:i,onSort:a,onOpenAsset:o}){return(0,Y.jsx)(pt,{className:`py-0`,children:(0,Y.jsx)(ht,{className:`p-0 [&_thead_tr_th:last-child]:w-6 [&_thead_tr_th:last-child]:px-1 sm:[&_thead_tr_th:last-child]:w-8 sm:[&_thead_tr_th:last-child]:px-2 [&_tbody_tr_td:last-child]:px-1 sm:[&_tbody_tr_td:last-child]:px-2`,children:(0,Y.jsxs)(Tt,{children:[(0,Y.jsx)(Et,{children:(0,Y.jsxs)(xt,{children:[(0,Y.jsx)(Q,{label:`Asset`,sortKey:`id`,current:r,direction:i,onSort:a}),(0,Y.jsx)(Q,{label:`Template`,sortKey:`template`,current:r,direction:i,onSort:a,className:`hidden md:table-cell`}),(0,Y.jsx)(Q,{label:`Model`,sortKey:`model`,current:r,direction:i,onSort:a,className:`hidden sm:table-cell`}),(0,Y.jsx)(Q,{label:`Lifecycle`,sortKey:`lifecycle`,current:r,direction:i,onSort:a,tooltip:Jr}),(0,Y.jsx)(Q,{label:`Operating age`,sortKey:`hours`,current:r,direction:i,onSort:a,tooltip:`Cumulative operating hours since the asset started running.`,className:`hidden text-right md:table-cell`}),(0,Y.jsx)(Q,{label:`Faults`,sortKey:`faults`,current:r,direction:i,onSort:a,tooltip:`Count of active (uncleared) faults on this asset.`}),(0,Y.jsx)(Q,{label:`Status`,sortKey:`status`,current:r,direction:i,onSort:a}),(0,Y.jsx)(wt,{children:(0,Y.jsx)(`span`,{className:`sr-only`,children:`Navigate to asset`})})]})}),(0,Y.jsx)(St,{children:t===`connecting`?(0,Y.jsx)($r,{title:`Connecting to runtime`,body:`Live asset data will appear once the connection is up.`}):t===`empty`?(0,Y.jsx)($r,{title:`No running assets`,body:`Start a factory from the Catalog to see assets.`,action:{label:`Open Catalog`,href:`/catalog`}}):e.length===0?(0,Y.jsx)($r,{title:`No matches`,body:`Adjust filters or clear them to see all assets.`}):e.map(e=>{let t=Xr(e),r=k(e.id);return(0,Y.jsxs)(xt,{tabIndex:0,"aria-label":`Open asset ${r}`,className:P(`group cursor-pointer outline-none transition-colors`,`focus-visible:bg-sidebar-accent focus-visible:ring-2 focus-visible:ring-ring/70 focus-visible:ring-inset`),onClick:()=>o(e.id),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),o(e.id))},onMouseEnter:()=>{Qe(`/asset/${e.id}`),qr(e.id)},onFocus:()=>{Qe(`/asset/${e.id}`),qr(e.id)},children:[(0,Y.jsx)(q,{className:`text-sm`,children:(0,Y.jsx)(J.ViewTransition,{name:`asset-${e.id}`,default:`none`,children:(0,Y.jsx)(`span`,{className:`inline-flex max-w-full truncate rounded-(--miravo-radius-tight) text-left`,title:e.id,children:r})})}),(0,Y.jsx)(q,{className:`hidden text-sm text-muted-foreground md:table-cell`,children:n.get(e.id)??`Standalone`}),(0,Y.jsx)(q,{className:`hidden text-sm sm:table-cell`,children:A(e.model)}),(0,Y.jsx)(q,{children:(0,Y.jsx)(et,{variant:`secondary`,className:`text-xs`,children:ie(e.lifecycleStage)})}),(0,Y.jsx)(q,{className:`hidden font-mono text-sm md:table-cell`,children:O(e.operatingHours)}),(0,Y.jsx)(q,{children:e.activeFaults.length>0?(0,Y.jsxs)(H,{children:[(0,Y.jsx)(B,{render:(0,Y.jsx)(`span`,{className:`inline-flex h-5 min-w-5 items-center justify-center rounded-(--miravo-radius-pill) bg-destructive/15 px-1.5 font-mono text-[11px] font-semibold tabular-nums text-destructive`}),children:e.activeFaults.length}),(0,Y.jsxs)(V,{side:`top`,children:[e.activeFaults.slice(0,4).join(`, `),e.activeFaults.length>4&&` + ${e.activeFaults.length-4} more`]})]}):(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[(0,Y.jsx)(`span`,{className:`sr-only`,children:`no faults`}),(0,Y.jsx)(`span`,{"aria-hidden":!0,children:`—`})]})}),(0,Y.jsx)(q,{children:(0,Y.jsx)(Qr,{state:t})}),(0,Y.jsx)(q,{children:(0,Y.jsx)(L,{className:`size-3.5 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100`,"aria-hidden":!0})})]},e.id)})})]})})})}var ti=`~all`,ni=`~standalone`;function ri(e){return e===``||e===`healthy`||e===`faulted`||e===`quarantined`}function ii(){let{assets:e,templates:t,connectionState:n}=a(S(e=>({assets:e.assets,templates:e.templates,connectionState:e.connectionState}))),[r,i]=p(`q`,m.withDefault(``)),[o,s]=p(`model`,m.withDefault(``)),[c,l]=p(`lifecycle`,m.withDefault(``)),[u,d]=p(`template`,m.withDefault(``)),[f,h]=p(`standalone`,m.withDefault(``)),g=f===`1`,[_,v]=p(`status`,m.withDefault(``)),y=ri(_)?_:``,[b,ee]=(0,J.useState)(`id`),[x,te]=(0,J.useState)(`asc`),C=(0,J.useRef)(null),re=$e(),[T,ae]=(0,J.useState)(``);(0,J.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(),C.current?.focus())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]);let E=(0,J.useCallback)(e=>{e===b?te(e=>e===`asc`?`desc`:`asc`):(ee(e),te(`asc`))},[b]),D=(0,J.useMemo)(()=>{let e=new Map;for(let n of t)for(let t of n.assetIds)e.set(t,n.templateName);return e},[t]),O=(0,J.useMemo)(()=>[{value:ti,label:`All templates`},{value:ni,label:`Standalone`},...t.map(e=>({value:e.templateId,label:e.templateName}))],[t]),k=(0,J.useMemo)(()=>{let t=new Map;for(let n of e)t.set(n.model,(t.get(n.model)??0)+1);return[...t.entries()].sort((e,t)=>e[0].localeCompare(t[0]))},[e]),j=(0,J.useMemo)(()=>[...new Set(e.map(e=>e.lifecycleStage))].sort(),[e]),N=(0,J.useMemo)(()=>[{value:`all`,label:`All stages`},...j.map(e=>({value:e,label:ie(e)}))],[j]),P=(0,J.useMemo)(()=>T?k.filter(([e])=>M(e,T)):k,[k,T]),F=(0,J.useMemo)(()=>o?{value:o,label:A(o)}:null,[o]),I=(0,J.useMemo)(()=>{let n=e;if(g)n=n.filter(e=>!D.has(e.id));else if(u){let e=new Set(t.find(e=>e.templateId===u)?.assetIds);n=n.filter(t=>e.has(t.id))}return o&&(n=n.filter(e=>e.model===o)),c&&(n=n.filter(e=>e.lifecycleStage===c)),r&&(n=n.filter(e=>oe(e.id,r)||M(e.model,r))),y===`faulted`&&(n=n.filter(e=>e.activeFaults.length>0)),y===`quarantined`&&(n=n.filter(e=>e.isQuarantined)),y===`healthy`&&(n=n.filter(e=>e.activeFaults.length===0&&!e.isQuarantined)),Yr(n,b,x,D)},[e,t,D,u,g,r,y,o,c,b,x]),L=y!==``||u!==``||g||o!==``||c!==``||r!==``,R=(0,J.useCallback)(()=>{i(``),v(``),d(``),h(``),s(``),l(``)},[i,v,d,h,s,l]),se=(0,J.useCallback)(e=>{re(`/asset/${e}`,{transitionType:tt})},[re]),ce=e.length>0?`rows`:n===`live`?`empty`:`connecting`;return(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-3`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[t.length>0&&(0,Y.jsxs)(bt,{value:g?ni:u||ti,onValueChange:e=>{h(e===ni?`1`:``),d(!e||e===ti||e===ni?``:e)},items:O,children:[(0,Y.jsx)(yt,{className:`h-8 w-44`,"aria-label":`Template filter`,children:(0,Y.jsx)(_t,{placeholder:`All templates`})}),(0,Y.jsx)(vt,{alignItemWithTrigger:!1,align:`start`,children:O.map(e=>(0,Y.jsx)(K,{value:e.value,children:e.label},e.value))})]}),(0,Y.jsxs)(gt,{value:F,onValueChange:e=>void s(e?.value??``),isItemEqualToValue:(e,t)=>e?.value===t?.value,onInputValueChange:ae,children:[(0,Y.jsx)(mt,{placeholder:`All models`,className:`h-8 w-48`,showClear:!!o}),(0,Y.jsx)(ft,{children:(0,Y.jsxs)(ut,{children:[P.map(([e,t])=>(0,Y.jsxs)(dt,{value:{value:e,label:A(e)},children:[(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:A(e)}),(0,Y.jsxs)(`span`,{className:`shrink-0 tabular-nums text-muted-foreground`,children:[`(`,t,`)`]})]},e)),P.length===0&&(0,Y.jsx)(`p`,{className:`py-2 text-center text-xs text-muted-foreground`,children:`No models found`})]})})]}),j.length>1&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,Y.jsxs)(bt,{value:c||`all`,onValueChange:e=>void l(!e||e===`all`?``:e),items:N,children:[(0,Y.jsx)(yt,{className:`h-8 w-36`,"aria-label":`Lifecycle stage`,children:(0,Y.jsx)(_t,{placeholder:`All stages`})}),(0,Y.jsxs)(vt,{alignItemWithTrigger:!1,align:`start`,children:[(0,Y.jsx)(K,{value:`all`,children:`All stages`}),j.map(e=>(0,Y.jsx)(K,{value:e,children:ie(e)},e))]})]}),(0,Y.jsxs)(H,{children:[(0,Y.jsx)(B,{render:(0,Y.jsx)(`button`,{type:`button`,"aria-label":`About lifecycle stages`,className:`flex size-6 items-center justify-center rounded-(--miravo-radius-tight) text-muted-foreground outline-none transition-colors hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`}),children:(0,Y.jsx)(we,{className:`size-3.5`,"aria-hidden":!0})}),(0,Y.jsx)(V,{side:`top`,children:`Commissioning → asset is running startup diagnostics. Operating → running normally. Decommissioning → winding down.`})]})]}),(0,Y.jsxs)(bt,{value:y||`all`,onValueChange:e=>void v(!e||e===`all`?``:e),items:Ct,children:[(0,Y.jsx)(yt,{className:`h-8 w-32`,"aria-label":`Status filter`,children:(0,Y.jsx)(_t,{placeholder:`All status`})}),(0,Y.jsxs)(vt,{alignItemWithTrigger:!1,align:`start`,children:[(0,Y.jsx)(K,{value:`all`,children:`All status`}),(0,Y.jsx)(K,{value:`healthy`,children:`Healthy`}),(0,Y.jsx)(K,{value:`faulted`,children:`Faulted`}),(0,Y.jsx)(K,{value:`quarantined`,children:`Quarantined`})]})]}),(0,Y.jsxs)(`div`,{className:`relative`,children:[(0,Y.jsx)(ne,{ref:C,placeholder:`Search...`,value:r,onChange:e=>void i(e.target.value),"aria-label":`Search assets by id or model`,className:`h-8 w-40 pr-7 text-xs`}),!r&&(0,Y.jsx)(`kbd`,{className:`pointer-events-none absolute top-1/2 right-2 -translate-y-1/2 rounded-(--miravo-radius-tight) border border-border bg-muted px-1 font-mono text-[10px] text-muted-foreground`,children:`/`})]}),L&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:R,className:`flex items-center gap-1 rounded-(--miravo-radius-tight) px-1 text-xs text-muted-foreground outline-none transition-colors hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,children:[(0,Y.jsx)(w,{className:`size-3`,"aria-hidden":!0}),`Clear`]}),(0,Y.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,"aria-live":`polite`,children:[I.length,` of `,e.length]})]})]}),(0,Y.jsx)(ei,{assets:I,state:ce,templateByAsset:D,sortKey:b,sortDir:x,onSort:E,onOpenAsset:se})]})}var ai={running:`live`,paused:`idle`,stopped:`fault`};function oi(){let{factoryName:e,engineState:t,seed:n,speed:r,bootTemplate:i}=a(S(e=>({factoryName:e.factoryName,engineState:e.engineState,seed:e.seed,speed:e.speedMultiplier,bootTemplate:e.bootTemplate})));return(0,Y.jsxs)(`header`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,Y.jsx)(`h1`,{className:`font-heading text-2xl font-semibold tracking-tight`,children:e&&!Ie(e)?ae(e):`Factory`}),(0,Y.jsx)(U,{tone:ai[t]??`off`,children:(0,Y.jsx)(G,{children:t})})]}),(0,Y.jsxs)(`p`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 font-mono text-[11px] text-muted-foreground`,children:[e?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`span`,{children:[`id `,(0,Y.jsx)(`span`,{className:`text-foreground`,children:e})]}),(0,Y.jsx)(`span`,{"aria-hidden":!0,className:`h-3 w-px bg-border/60`})]}):null,(0,Y.jsxs)(`span`,{children:[`seed `,(0,Y.jsx)(`span`,{className:`text-foreground`,children:n??`-`})]}),(0,Y.jsx)(`span`,{"aria-hidden":!0,className:`h-3 w-px bg-border/60`}),(0,Y.jsxs)(`span`,{children:[(0,Y.jsxs)(`span`,{className:`text-foreground`,children:[r,`×`]}),` speed`]}),i?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{"aria-hidden":!0,className:`h-3 w-px bg-border/60`}),(0,Y.jsxs)(`span`,{children:[`booted with `,(0,Y.jsx)(`span`,{className:`text-foreground`,children:i.name})]})]}):null]})]}),(0,Y.jsxs)(g,{to:`/catalog`,className:j({size:`sm`}),children:[(0,Y.jsx)(Be,{className:`size-3.5`,"aria-hidden":!0}),`Load template`]})]})}var si=At.map(e=>e.id),ci=`inline-flex h-8 shrink-0 items-center gap-2 rounded-[var(--miravo-radius-pill)] border px-3 text-xs outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring`;function li(){let[e,t]=p(`integration`,h(si).withDefault(kt.id)),{Panel:n}=Wr[e];return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,Y.jsxs)(`nav`,{"aria-label":`Integrations`,className:`flex flex-wrap gap-2`,children:[At.map(n=>{let{icon:r}=Wr[n.id],i=n.id===e;return(0,Y.jsxs)(`button`,{type:`button`,"aria-pressed":i,onClick:()=>void t(n.id),className:P(ci,i?`border-primary/45 bg-primary/10 text-foreground`:`border-border/60 text-muted-foreground hover:border-muted-foreground/50 hover:text-foreground`),children:[(0,Y.jsx)(r,{className:P(`size-3.5`,i&&`text-primary`),"aria-hidden":!0}),n.label]},n.id)}),Ot.map(e=>(0,Y.jsxs)(`span`,{"aria-disabled":!0,className:P(ci,`cursor-default border-dashed border-border/60 text-muted-foreground/70`),children:[(0,Y.jsx)(Ht,{className:`size-3.5`,"aria-hidden":!0}),e.label,(0,Y.jsx)(`span`,{className:`text-[10px] uppercase tracking-[0.14em]`,children:`Soon`})]},e.id))]}),(0,Y.jsx)(n,{})]})}function ui(e={}){let t=new URLSearchParams({tab:`assets`});return e.template&&t.set(`template`,e.template),e.standalone&&t.set(`standalone`,`1`),e.model&&t.set(`model`,e.model),e.status&&t.set(`status`,e.status),`/?${t.toString()}`}var di={healthy:`border-muted-foreground/25 bg-muted/40 text-foreground/90 hover:border-muted-foreground/50`,faulted:`border-destructive/40 bg-destructive/10 text-destructive hover:border-destructive/70`,quarantined:`border-warning/40 bg-warning/10 text-warning hover:border-warning/70`},fi={healthy:`bg-success`,faulted:`bg-destructive`,quarantined:`bg-warning`};function pi({group:e,label:t,templateId:n}){let[r]=e.ids;return(0,Y.jsxs)(g,{to:e.ids.length===1&&r?`/asset/${r}`:ui({model:e.model,template:n}),title:e.ids.join(`, `),className:P(`inline-flex h-6 items-center gap-1.5 rounded-[var(--miravo-radius-tight)] border px-1.5 font-mono text-[11px] outline-none transition-colors hover:bg-muted/40 focus-visible:ring-2 focus-visible:ring-ring`,di[e.health]),children:[(0,Y.jsx)(`span`,{"aria-hidden":!0,className:P(`size-1.5 shrink-0 rounded-full`,fi[e.health])}),t,e.ids.length>1&&(0,Y.jsxs)(`span`,{className:`text-muted-foreground`,children:[`×`,e.ids.length]}),e.health!==`healthy`&&(0,Y.jsxs)(`span`,{className:`sr-only`,children:[`, `,e.health]})]})}function mi(e){return e.isQuarantined?`quarantined`:e.activeFaults.length>0?`faulted`:`healthy`}var hi=24;function gi(){let{assets:e,templates:t}=a(S(e=>({assets:e.assets,templates:e.templates}))),[n,r]=(0,J.useState)(!1),i=new Set(t.flatMap(e=>e.assetIds)),o=e.filter(e=>!i.has(e.id));if(o.length===0)return null;let s=n?o:o.slice(0,hi);return(0,Y.jsxs)(`section`,{"aria-label":`Standalone assets`,className:P(Re,`flex flex-col gap-4 p-5`),children:[(0,Y.jsxs)(`header`,{className:`flex items-start gap-3`,children:[(0,Y.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,Y.jsx)(Rt,{className:`size-5`,"aria-hidden":!0})}),(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,Y.jsx)(`h2`,{className:`truncate font-heading text-sm font-semibold uppercase tracking-wide`,children:`Standalone assets`}),(0,Y.jsx)(`span`,{className:`text-xs text-foreground/75`,children:`Spawned from a model, outside any template.`})]})]}),(0,Y.jsxs)(`ul`,{className:`flex flex-wrap gap-1.5`,children:[s.map(e=>(0,Y.jsx)(`li`,{children:(0,Y.jsx)(pi,{group:{model:e.model,ids:[e.id],health:mi(e)},label:e.id})},e.id)),o.length>hi&&(0,Y.jsx)(`li`,{children:(0,Y.jsx)(C,{size:`xs`,variant:`ghost`,onClick:()=>r(e=>!e),children:n?`Show fewer`:`+${o.length-hi} more`})})]}),(0,Y.jsxs)(`div`,{className:`mt-auto font-mono text-[11px] text-muted-foreground`,children:[(0,Y.jsx)(`span`,{className:`text-foreground`,children:o.length}),` asset`,o.length===1?``:`s`]}),(0,Y.jsxs)(`footer`,{className:`flex items-center gap-2 border-t border-border/30 pt-3`,children:[(0,Y.jsxs)(g,{to:ui({standalone:!0}),className:P(j({size:`sm`,variant:`outline`}),Le),children:[(0,Y.jsx)(Nt,{className:`size-3.5`,"aria-hidden":!0}),`View assets`]}),(0,Y.jsxs)(g,{to:`/models`,className:P(j({size:`sm`,variant:`ghost`}),`ml-auto text-muted-foreground`),children:[(0,Y.jsx)(Be,{className:`size-3.5`,"aria-hidden":!0}),`Spawn asset`]})]})]})}function _i({template:e,open:t,onOpenChange:n}){let r=ze(),[i,a]=(0,J.useState)(!1);return(0,Y.jsx)(te,{open:t,onOpenChange:n,children:(0,Y.jsxs)(b,{children:[(0,Y.jsxs)(v,{children:[(0,Y.jsxs)(ee,{children:[`Unload `,e.templateName]}),(0,Y.jsxs)(x,{children:[`Removes its `,e.assetIds.length,` asset`,e.assetIds.length===1?``:`s`,`. Standalone assets stay.`]})]}),(0,Y.jsxs)(y,{children:[(0,Y.jsx)(C,{variant:`outline`,onClick:()=>n(!1),disabled:i,children:`Cancel`}),(0,Y.jsx)(C,{variant:`destructive`,disabled:i,onClick:async()=>{a(!0);try{await r.mutateAsync({type:`unloadTemplate`,templateId:e.templateId}),n(!1)}catch{}finally{a(!1)}},children:`Unload`})]})]})})}function vi({value:e,label:t}){return(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`span`,{className:`text-foreground`,children:e}),` `,t,e===1?``:`s`]})}function yi(e,t){let n=new Set(e.assetIds),r=new Set;for(let e of t)n.has(e.id)&&mi(e)!==`healthy`&&r.add(A(e.model));return[...r]}function bi({template:e,highlighted:t=!1}){let{assets:n,engineState:s}=a(S(e=>({assets:e.assets,engineState:e.engineState}))),c=l({queryKey:o.catalog.templates(),queryFn:()=>i(`/catalog/templates`,r.catalogTemplates)}),[u,d]=(0,J.useState)(!1),[f,p]=(0,J.useState)(!1),m=c.data?.find(t=>t.id===e.templateId)?.description,h=new Set(e.assetIds),_=n.filter(e=>h.has(e.id)&&mi(e)!==`healthy`).length,v=_>0?yi(e,n):[],y=e.areas.reduce((e,t)=>e+t.lines.length,0);return(0,Y.jsxs)(`section`,{id:`template-${e.templateId}`,"aria-label":e.templateName,className:P(Re,`flex scroll-mt-4 flex-col gap-4 p-5 transition-shadow`,t&&`ring-2 ring-ring`),children:[(0,Y.jsxs)(`header`,{className:`flex items-start gap-3`,children:[(0,Y.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,Y.jsx)(me,{id:e.templateId,className:`size-5`})}),(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,Y.jsx)(`h2`,{className:`truncate font-heading text-sm font-semibold uppercase tracking-wide`,children:e.templateName}),(0,Y.jsx)(`span`,{className:`truncate font-mono text-[10px] text-muted-foreground`,children:e.templateId})]}),_>0?(0,Y.jsxs)(U,{tone:`fault`,children:[(0,Y.jsx)(`span`,{className:`font-mono font-semibold tabular-nums text-foreground`,children:_}),` `,(0,Y.jsx)(G,{children:`faulted`})]}):(0,Y.jsx)(U,{tone:s===`running`?`live`:`idle`,children:(0,Y.jsx)(G,{children:s===`running`?`running`:`paused`})})]}),m?(0,Y.jsx)(`p`,{className:`line-clamp-2 text-pretty text-xs leading-relaxed text-muted-foreground`,children:m}):null,(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-2 font-mono text-[11px] text-muted-foreground`,children:[(0,Y.jsx)(vi,{value:e.areas.length,label:`area`}),(0,Y.jsx)(vi,{value:y,label:`line`}),(0,Y.jsx)(vi,{value:e.assetIds.length,label:`asset`}),(0,Y.jsx)(vi,{value:e.models.length,label:`model`})]}),v.length>0?(0,Y.jsxs)(g,{to:ui({template:e.templateId,status:`faulted`}),className:`flex min-w-0 items-center gap-2 rounded-[var(--miravo-radius-tight)] border border-destructive/30 bg-destructive/8 px-2.5 py-1.5 text-xs text-destructive outline-none transition-colors hover:border-destructive/60 focus-visible:ring-2 focus-visible:ring-ring`,children:[(0,Y.jsx)(Ze,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),(0,Y.jsxs)(`span`,{className:`min-w-0 truncate`,children:[(0,Y.jsxs)(`span`,{className:`font-medium`,children:[_,` faulted:`]}),` `,v.join(`, `)]})]}):null,(0,Y.jsxs)(`footer`,{className:`mt-auto flex items-center gap-2 border-t border-border/30 pt-3`,children:[(0,Y.jsxs)(C,{type:`button`,size:`sm`,variant:`outline`,className:Le,onClick:()=>p(!0),children:[(0,Y.jsx)(je,{className:`size-3.5`,"aria-hidden":!0}),`Inspect`]}),Pe(e.templateId)?(0,Y.jsxs)(g,{to:Fe(e.templateId),className:j({size:`sm`,variant:`ghost`}),children:[(0,Y.jsx)(Ne,{className:`size-3.5`,"aria-hidden":!0}),`Open floor`]}):null,(0,Y.jsx)(C,{size:`sm`,variant:`ghost`,className:`ml-auto text-muted-foreground hover:bg-destructive/12 hover:text-destructive`,onClick:()=>d(!0),children:`Unload`})]}),(0,Y.jsx)(_i,{template:e,open:u,onOpenChange:d}),(0,Y.jsx)(pe,{templateId:f?e.templateId:null,onClose:()=>p(!1),live:{assetIds:e.assetIds,models:e.models},actions:(0,Y.jsxs)(g,{to:ui({template:e.templateId}),className:j({size:`sm`,variant:`ghost`}),children:[(0,Y.jsx)(Nt,{className:`size-3.5`,"aria-hidden":!0}),`View assets`]}),fallbackTitle:e.templateName})]})}var xi={success:`bg-success`,warning:`bg-warning`,destructive:`bg-destructive`,foreground:`bg-foreground/60`,primary:`bg-primary`},Si={success:`text-success`,warning:`text-warning`,destructive:`text-destructive`,foreground:`text-foreground`,primary:`text-primary`},Ci={mqtt:`MQTT`,opcua:`OPC UA`,modbus:`Modbus`};function wi({label:e,pip:t,pulse:n}){return(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[t&&(n?(0,Y.jsxs)(`span`,{"aria-hidden":!0,className:`relative flex size-1.5 shrink-0 items-center justify-center`,children:[(0,Y.jsx)(`span`,{className:P(`absolute inline-flex h-full w-full animate-ping rounded-full opacity-75`,xi[t])}),(0,Y.jsx)(`span`,{className:P(`relative inline-flex size-1.5 rounded-full`,xi[t])})]}):(0,Y.jsx)(`span`,{"aria-hidden":!0,className:P(`size-1.5 shrink-0 rounded-full`,xi[t])})),(0,Y.jsx)(`span`,{className:`truncate text-[10px] font-medium uppercase tracking-(--miravo-tracking-eyebrow) text-muted-foreground`,children:e})]})}function Ti({children:e,tone:t=`foreground`,live:n}){return(0,Y.jsx)(`span`,{...n?{role:`status`,"aria-live":`polite`}:{},className:P(`mt-1 block min-w-0 truncate font-mono text-2xl font-semibold tabular-nums leading-none transition-colors duration-300`,Si[t]),children:e})}function $({children:e}){return(0,Y.jsx)(`span`,{className:`mt-1 min-w-0 truncate text-[10px] text-muted-foreground`,children:e})}function Ei(e,t){return e===t?``:t}function Di({statusFilter:e,onStatusFilter:t}){let{assets:n,tps:r,memberValueCount:i,availableAdapters:o,adapterMetrics:s}=a(S(e=>({assets:e.assets,tps:e.tps,memberValueCount:e.memberValueCount,availableAdapters:e.availableAdapters,adapterMetrics:e.adapterMetrics}))),c=(0,J.useMemo)(()=>{let e=n.filter(e=>!e.isQuarantined&&e.activeFaults.length===0).length,t=n.filter(e=>!e.isQuarantined&&e.activeFaults.length>0).length,r=n.filter(e=>e.isQuarantined).length,i=n.length;return{healthy:e,faulted:t,quarantined:r,total:i,pct:i>0?Math.round(e/i*100):100,activeFaultCount:n.reduce((e,t)=>e+t.activeFaults.length,0),modelCount:new Set(n.map(e=>e.model)).size,affectedCount:new Set(n.filter(e=>e.activeFaults.length>0).map(e=>e.id)).size}},[n]),l=(0,J.useMemo)(()=>{let e=o.filter(e=>e.enabled);return{enabled:e,totalMessages:e.reduce((e,t)=>e+(s.find(e=>e.name===t.name)?.metrics?.messagesPublished??0),0),totalErrors:e.reduce((e,t)=>e+(s.find(e=>e.name===t.name)?.metrics?.errorsCount??0),0),labels:e.map(e=>Ci[e.name]??e.name)}},[o,s]),u=c.activeFaultCount>0,d=u?`destructive`:c.quarantined>0?`warning`:`success`,f=u?`faulted`:`healthy`;return(0,Y.jsxs)(`section`,{"aria-label":`Asset status`,className:`grid w-full min-w-0 max-w-full grid-cols-2 overflow-hidden rounded-(--miravo-radius-stadium-sm) border *:border-border/40 *:odd:border-r *:nth-[-n+2]:border-b @2xl/main:grid-cols-4 @2xl/main:*:border-b-0 @2xl/main:*:not-last:border-r`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>t(Ei(e,f)),"aria-pressed":e===`healthy`||e===`faulted`,"aria-label":u?`Filter to faulted assets`:`Filter to healthy assets`,className:P(`flex min-w-0 flex-1 flex-col overflow-hidden px-4 py-3 text-left outline-none transition-colors duration-150`,`hover:bg-muted/40 focus-visible:bg-muted/40 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset`,(e===`healthy`||e===`faulted`)&&`bg-muted/50`),children:[(0,Y.jsx)(wi,{label:`Health`,pip:d}),(0,Y.jsxs)(Ti,{tone:u?`destructive`:`success`,children:[c.pct,`%`]}),(0,Y.jsx)($,{children:c.total===0?`No assets`:[`${c.total} asset${c.total===1?``:`s`}`,c.faulted>0&&`${c.faulted} faulted`,c.quarantined>0&&`${c.quarantined} quarantined`,`${c.modelCount} model${c.modelCount===1?``:`s`}`].filter(Boolean).join(` · `)})]}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>t(e===`faulted`?``:`faulted`),"aria-pressed":e===`faulted`,"aria-label":`Filter to faulted assets`,className:P(`flex min-w-0 flex-1 flex-col overflow-hidden px-4 py-3 text-left outline-none transition-colors duration-150`,`hover:bg-muted/40 focus-visible:bg-muted/40 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset`,e===`faulted`&&`bg-muted/50`),children:[(0,Y.jsx)(wi,{label:`Faults`,pip:u?`destructive`:`success`}),(0,Y.jsx)(Ti,{tone:u?`destructive`:`foreground`,live:!0,children:c.activeFaultCount}),(0,Y.jsx)($,{children:u?`${c.affectedCount} asset${c.affectedCount===1?``:`s`} affected`:`all clear`})]}),(0,Y.jsxs)(H,{children:[(0,Y.jsxs)(B,{render:(0,Y.jsx)(g,{to:`/tags`,"aria-label":`Open tag stream`,className:`flex min-w-0 flex-1 flex-col overflow-hidden px-4 py-3 outline-none transition-colors duration-150 hover:bg-muted/40 focus-visible:bg-muted/40 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset`}),children:[(0,Y.jsx)(wi,{label:`Tags`,pip:`primary`,pulse:!0}),(0,Y.jsx)(Ti,{children:T(i)}),(0,Y.jsxs)($,{children:[(0,Y.jsx)(`span`,{className:`font-mono tabular-nums`,children:r.toFixed(1)}),` tps · live`]})]}),(0,Y.jsx)(V,{side:`bottom`,children:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-0.5 text-[11px]`,children:[(0,Y.jsx)(`span`,{children:`Live tags tracked across the fleet.`}),i>=1e6&&(0,Y.jsxs)(`span`,{className:`font-mono tabular-nums text-muted-foreground`,children:[E(i),` tags`]}),(0,Y.jsxs)(`span`,{className:`text-muted-foreground`,children:[`Updating at `,(0,Y.jsx)(`span`,{className:`font-mono tabular-nums`,children:r.toFixed(1)}),` per second.`]})]})})]}),l.enabled.length>0&&(0,Y.jsx)(Oi,{labels:l.labels,totalMessages:l.totalMessages,totalErrors:l.totalErrors,perAdapter:l.enabled.map(e=>({name:Ci[e.name]??e.name,metrics:s.find(t=>t.name===e.name)?.metrics}))})]})}function Oi({labels:e,totalMessages:t,totalErrors:n,perAdapter:r}){return(0,Y.jsxs)(H,{children:[(0,Y.jsxs)(B,{render:(0,Y.jsx)(g,{to:`/control`,"aria-label":`Open control — protocol adapters`,className:`flex min-w-0 flex-1 flex-col overflow-hidden px-4 py-3 outline-none transition-colors duration-150 hover:bg-muted/40 focus-visible:bg-muted/40 focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset`}),children:[(0,Y.jsx)(wi,{label:`Protocol`,pip:`primary`,pulse:!0}),(0,Y.jsx)(Ti,{tone:n>0?`warning`:`foreground`,live:!0,children:T(t)}),(0,Y.jsxs)($,{children:[e.join(` · `),n>0&&` · ${n} error${n===1?``:`s`}`]})]}),(0,Y.jsx)(V,{side:`bottom`,children:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1 text-[11px]`,children:[(0,Y.jsx)(`span`,{children:`Messages published since session start.`}),t>=1e6&&(0,Y.jsxs)(`span`,{className:`font-mono tabular-nums text-muted-foreground`,children:[E(t),` total`]}),(0,Y.jsx)(`div`,{className:`flex flex-col gap-0.5 border-t border-tooltip-border/60 pt-1`,children:r.map(e=>(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`font-medium`,children:e.name}),(0,Y.jsxs)(`span`,{className:`font-mono tabular-nums`,children:[E(e.metrics?.messagesPublished??0),` msg`]}),e.metrics&&e.metrics.errorsCount>0&&(0,Y.jsxs)(`span`,{className:`font-mono tabular-nums text-destructive`,children:[`· `,e.metrics.errorsCount,` err`]})]},e.name))})]})})]})}var ki=2500,Ai=[`overview`,`assets`,`integrations`];function ji({value:e}){return(0,Y.jsx)(`span`,{className:`rounded-full bg-muted px-1.5 font-mono text-[10px] leading-4 tabular-nums text-muted-foreground`,children:e})}function Mi({children:e}){return(0,Y.jsx)(u.div,{initial:{opacity:0,y:6},animate:{opacity:1,y:0},transition:{duration:.15,ease:`easeOut`},children:e})}function Ni(){return(0,Y.jsxs)(`div`,{className:`flex flex-col items-start gap-3 rounded-[var(--miravo-radius-stadium-sm)] border border-dashed border-border p-5`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium`,children:[(0,Y.jsx)(Bt,{className:`size-4 text-muted-foreground`,"aria-hidden":!0}),`Nothing is running yet`]}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Load a template from the catalog. Its areas, lines and assets show up here, live.`}),(0,Y.jsx)(g,{to:`/catalog`,className:j({size:`sm`}),children:`Open catalog`})]})}function Pi({highlight:e}){let{templates:t,assetCount:n}=a(S(e=>({templates:e.templates,assetCount:e.assets.length})));return(0,Y.jsx)(`div`,{className:`@container/overview`,children:(0,Y.jsxs)(`div`,{className:`grid items-start gap-5 @3xl/overview:grid-cols-[minmax(0,1fr)_20rem] @7xl/overview:grid-cols-[minmax(0,1fr)_22rem]`,children:[t.length===0&&n===0?(0,Y.jsx)(Ni,{}):(0,Y.jsxs)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(min(100%,22rem),1fr))] gap-4`,children:[t.map(t=>(0,Y.jsx)(bi,{template:t,highlighted:t.templateId===e},t.templateId)),(0,Y.jsx)(gi,{})]}),(0,Y.jsxs)(`div`,{className:`grid min-w-0 gap-5 @xl/overview:grid-cols-2 @3xl/overview:sticky @3xl/overview:top-4 @3xl/overview:grid-cols-1`,children:[(0,Y.jsx)(Gt,{}),(0,Y.jsx)(Kr,{})]})]})})}function Fi(){let{hash:e}=_(),{templates:t,assetCount:n}=a(S(e=>({templates:e.templates,assetCount:e.assets.length}))),[r,i]=p(`tab`,h(Ai).withDefault(`overview`)),[o,s]=p(`highlight`,m.withDefault(``)),[c,l]=p(`status`,m.withDefault(``)),u=c===`healthy`||c===`faulted`||c===`quarantined`?c:``;(0,J.useEffect)(()=>{if(!e)return;e===`#connect`&&i(null);let t=setTimeout(()=>{let t=document.getElementById(e.slice(1));t?.scrollIntoView({behavior:`smooth`,block:`start`}),t?.focus({preventScroll:!0})},50);return()=>clearTimeout(t)},[e,i]);let d=t.some(e=>e.templateId===o);return(0,J.useEffect)(()=>{if(!o||!d)return;document.getElementById(`template-${o}`)?.scrollIntoView({behavior:`smooth`,block:`center`});let e=setTimeout(()=>void s(null,{history:`replace`}),ki);return()=>clearTimeout(e)},[o,d,s]),(0,Y.jsxs)(`div`,{className:`mx-auto flex w-full max-w-screen-2xl flex-col gap-5 p-4 sm:gap-6 sm:p-6`,children:[(0,Y.jsx)(oi,{}),(0,Y.jsx)(Di,{statusFilter:u,onStatusFilter:e=>{l(e||null),e!==``&&i(`assets`)}}),(0,Y.jsxs)(lt,{value:r,onValueChange:e=>void i(e),children:[(0,Y.jsx)(`div`,{className:`overflow-x-auto`,children:(0,Y.jsxs)(ct,{variant:`line`,className:`h-10! min-w-max gap-0.5`,children:[(0,Y.jsxs)(ot,{value:`overview`,className:`gap-1.5 px-3 text-sm`,children:[(0,Y.jsx)(fe,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),`Overview`,(0,Y.jsx)(ji,{value:t.length})]}),(0,Y.jsxs)(ot,{value:`assets`,className:`gap-1.5 px-3 text-sm`,children:[(0,Y.jsx)(Nt,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),`Assets`,(0,Y.jsx)(ji,{value:n})]}),(0,Y.jsxs)(ot,{value:`integrations`,className:`gap-1.5 px-3 text-sm`,children:[(0,Y.jsx)(Ht,{className:`size-3.5 shrink-0`,"aria-hidden":!0}),`Integrations`]})]})}),(0,Y.jsx)(st,{value:`overview`,className:`py-2`,children:(0,Y.jsx)(Mi,{children:(0,Y.jsx)(Pi,{highlight:o})})}),(0,Y.jsx)(st,{value:`assets`,className:`py-2`,children:(0,Y.jsx)(Mi,{children:(0,Y.jsx)(ii,{})})}),(0,Y.jsx)(st,{value:`integrations`,className:`py-2`,children:(0,Y.jsx)(Mi,{children:(0,Y.jsx)(li,{})})})]})]})}export{It as a,Bt as i,Wt as n,Nt as o,Ht as r,Mt as s,Fi as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./factory-3x3_UmJZ.js";export{e as FactoryPage};
@@ -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{Dt as r,S as i,St as a,_t as o,ft as s,o as c,ot as l,v as u,y as d,yt as f}from"./api-BG2sUkwk.js";import{a as p,c as m,f as h,i as g,l as _,o as v,p as y,r as b,s as x,t as S,u as C}from"./useQuery-Cl48zZ73.js";import{i as w}from"./dist-xY0pK9Wy.js";import{l as T,n as E}from"./chunk-OE4NN4TA-DBWZidbW.js";import{C as D,d as O,g as k,w as A}from"./format-Bx7DF-TB.js";import{n as j,t as M}from"./utils-XFKvwlFT.js";import{t as ee}from"./arrow-up-right-CwPw_2U1.js";import{i as te,n as ne,r as re}from"./registry-BXGfJ4np.js";import{t as ie}from"./minus-CaT9UaQx.js";import{t as ae}from"./pause-CqW7v5Dc.js";import{l as oe,t as se}from"./use-engine-command-mutation-DrMOfYty.js";import{t as ce}from"./plus-Cl4Ay5Ry.js";import{i as le,n as ue,t as de}from"./tooltip-B3vOB1Vu.js";import{a as fe,i as pe,n as me,o as he,r as ge,t as _e}from"./status-kit-pFRjEjVU.js";import{i as ve,n as ye,r as be,t as xe}from"./tabs-Ch_VG8_S.js";import{a as Se,c as Ce,i as we,o as Te,t as Ee}from"./events-format-C5HTkIsC.js";import{I as De,i as Oe,n as ke,r as Ae,u as je}from"./dom-CQuChC3G.js";function Me(e,t){let n=new Set(t);return e.filter(e=>!n.has(e))}function Ne(e,t,n){let r=e.slice(0);return r[t]=n,r}var Pe=class extends r{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l=[];constructor(e,t,n){super(),this.#e=e,this.#r=n,this.#n=[],this.#i=[],this.#t=[],this.setQueries(t)}onSubscribe(){this.listeners.size===1&&this.#i.forEach(e=>{e.subscribe(t=>{this.#p(e,t)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.#i.forEach(e=>{e.destroy()})}setQueries(e,t){this.#n=e,this.#r=t,s.batch(()=>{let e=this.#i,t=this.#f(this.#n);t.forEach(e=>e.observer.setOptions(e.defaultedQueryOptions));let n=t.map(e=>e.observer),r=n.map(e=>e.getCurrentResult()),i=e.length!==n.length,o=n.some((t,n)=>t!==e[n]),s=i||o,c=s?!0:r.some((e,t)=>{let n=this.#t[t];return!n||!a(e,n)});!s&&!c||(s&&(this.#l=t,this.#i=n),this.#t=r,this.hasListeners()&&(s&&(Me(e,n).forEach(e=>{e.destroy()}),Me(n,e).forEach(e=>{e.subscribe(t=>{this.#p(e,t)})})),this.#m()))})}getCurrentResult(){return this.#t}getQueries(){return this.#i.map(e=>e.getCurrentQuery())}getObservers(){return this.#i}getOptimisticResult(e,t){let n=this.#f(e),r=n.map(e=>e.observer.getOptimisticResult(e.defaultedQueryOptions)),i=n.map(e=>e.defaultedQueryOptions.queryHash);return[r,e=>this.#d(e??r,t,i),()=>this.#u(r,n)]}#u(e,t){return t.map((n,r)=>{let i=e[r];return n.defaultedQueryOptions.notifyOnChangeProps?i:n.observer.trackResult(i,e=>{t.forEach(t=>{t.observer.trackProp(e)})})})}#d(e,t,n){if(t){let r=this.#c,i=n!==void 0&&r!==void 0&&(r.length!==n.length||n.some((e,t)=>e!==r[t]));return(!this.#a||this.#t!==this.#s||i||t!==this.#o)&&(this.#o=t,this.#s=this.#t,n!==void 0&&(this.#c=n),this.#a=f(this.#a,t(e))),this.#a}return e}#f(e){let t=new Map;this.#i.forEach(e=>{let n=e.options.queryHash;if(!n)return;let r=t.get(n);r?r.push(e):t.set(n,[e])});let n=[];return e.forEach(e=>{let r=this.#e.defaultQueryOptions(e),i=t.get(r.queryHash)?.shift()??new y(this.#e,r);n.push({defaultedQueryOptions:r,observer:i})}),n}#p(e,t){let n=this.#i.indexOf(e);n!==-1&&(this.#t=Ne(this.#t,n,t),this.#m())}#m(){if(this.hasListeners()){let e=this.#a,t=this.#u(this.#t,this.#l);e!==this.#d(t,this.#r?.combine)&&s.batch(()=>{this.listeners.forEach(e=>{e(this.#t)})})}}},N=e(t(),1);function Fe({queries:e,...t},n){let r=h(n),i=C(),a=_(),c=N.useMemo(()=>e.map(e=>{let t=r.defaultQueryOptions(e);return t._optimisticResults=i?`isRestoring`:`optimistic`,t}),[e,r,i]);c.forEach(e=>{b(e),v(e,a,r.getQueryCache().get(e.queryHash))}),m(a);let[l]=N.useState(()=>new Pe(r,c,t)),[u,d,f]=l.getOptimisticResult(c,t.combine),S=!i&&t.subscribed!==!1;N.useSyncExternalStore(N.useCallback(e=>S?l.subscribe(s.batchCalls(e)):o,[l,S]),()=>l.getCurrentResult(),()=>l.getCurrentResult()),N.useEffect(()=>{l.setQueries(c,t)},[c,t,l]);let w=u.some((e,t)=>p(c[t],e))?u.flatMap((e,t)=>{let n=c[t];return n&&p(n,e)?g(n,new y(r,n),a):[]}):[];if(w.length>0)throw Promise.all(w);let T=u.find((e,t)=>{let n=c[t];return n&&x({result:e,errorResetBoundary:a,throwOnError:n.throwOnError,query:r.getQueryCache().get(n.queryHash),suspense:n.suspense})});if(T?.error)throw T.error;return d(f())}var Ie=j(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),Le=j(`maximize`,[[`path`,{d:`M8 3H5a2 2 0 0 0-2 2v3`,key:`1dcmit`}],[`path`,{d:`M21 8V5a2 2 0 0 0-2-2h-3`,key:`1e4gt3`}],[`path`,{d:`M3 16v3a2 2 0 0 0 2 2h3`,key:`wsl5sc`}],[`path`,{d:`M16 21h3a2 2 0 0 0 2-2v-3`,key:`18trek`}]]),Re=j(`panel-right-close`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}],[`path`,{d:`m8 9 3 3-3 3`,key:`12hl5m`}]]),ze=j(`panel-right-open`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M15 3v18`,key:`14nvp0`}],[`path`,{d:`m10 15-3-3 3-3`,key:`1pgupc`}]]),Be=6,Ve=.9,He=.035,Ue=e=>1-(1-e)**3;function We(e,t){let{svg:n,P:r}=e,i=ke(n,`[data-intro]`).map(e=>({g:e,i:+(e.dataset.intro??0)})),a=e.reducedMotion();return{lampTest:()=>!1,done:()=>a,draw(e){if(a)return;let n=(e-t)/1e3,o=!1;for(let{g:e,i:t}of i){let i=(n-t*He)/Ve;if(i>=1){e.hasAttribute(`transform`)&&(e.removeAttribute(`transform`),e.style.opacity=``);continue}o=!0;let a=Ue(Math.max(0,i));e.setAttribute(`transform`,De(r,[0,0,Be*(1-a)])),e.style.opacity=String(a)}a=!o}}}var Ge=`data-floor-keys`,Ke=6,qe=1.6;function Je(e,t,n={}){let r=t.width,i=t.height,a=n.keyTarget===void 0?e.parentElement:n.keyTarget,o=()=>n.reducedMotion?.()??!1,s=0,c=0,l=r,u=i;function d(){let t=e.getBoundingClientRect(),n=t.width/Math.max(1,t.height);!t.width||!t.height||(n>r/i?(l=i*n,u=i):(l=r,u=r/n),s=(r-l)/2,c=(i-u)/2)}d();let f={x:s,y:c,s:1,tx:s,ty:c,ts:1},p=new Set,m=!1,h=``,g=()=>({scale:f.ts,x:f.x,y:f.y,width:l/f.s,height:u/f.s,panning:m});function _(){let e=g();n.onViewChange?.(e);for(let t of p)t(e)}function v(e){e.ts=Math.max(1,Math.min(Ke,e.ts));let t=l/e.ts,n=u/e.ts;e.tx=Math.max(s,Math.min(s+l-t,e.tx)),e.ty=Math.max(c,Math.min(c+u-n,e.ty))}function y(e,t,n){let r=Math.max(1,Math.min(Ke,f.ts*e));f.tx=t-(t-f.tx)*f.ts/r,f.ty=n-(n-f.ty)*f.ts/r,f.ts=r,v(f)}let b=(t,n)=>{let r=e.getBoundingClientRect();return[f.x+(t-r.left)/r.width*(l/f.s),f.y+(n-r.top)/r.height*(u/f.s)]},x=()=>[f.tx+l/f.ts/2,f.ty+u/f.ts/2],S=()=>{f.tx=s,f.ty=c,f.ts=1};function C(t){let n=ke(e,`[data-asset="${t}"]`);if(!n.length)return;let r=1/0,i=1/0,a=-1/0,o=-1/0,s=e.getScreenCTM()?.inverse();for(let e of n){let t=e,n=t.getBBox();if(!n.width&&!n.height)continue;let c=s&&t.getScreenCTM()?s.multiply(t.getScreenCTM()):null;for(let[e,t]of[[n.x,n.y],[n.x+n.width,n.y],[n.x,n.y+n.height],[n.x+n.width,n.y+n.height]]){let n=c?new DOMPoint(e,t).matrixTransform(c):{x:e,y:t};r=Math.min(r,n.x),i=Math.min(i,n.y),a=Math.max(a,n.x),o=Math.max(o,n.y)}}let c=a-r+52,d=o-i+52;f.ts=Math.min(l/c,u/d,4),f.tx=(r+a)/2-l/f.ts/2,f.ty=(i+o)/2-u/f.ts/2,v(f)}let w=new ResizeObserver(()=>{let e=f.ts;d(),e<=1.01?(S(),f.x=s,f.y=c):v(f)});w.observe(e);let T=e=>{if(!e.ctrlKey&&!e.metaKey)return;e.preventDefault();let[t,n]=b(e.clientX,e.clientY);y(Math.exp(-e.deltaY*.012),t,n)},E=new Map,D=null,O=null,k=t=>{if(E.set(t.pointerId,[t.clientX,t.clientY]),E.size===2){let[e,t]=[...E.values()];O={d:Math.hypot(e[0]-t[0],e[1]-t[1]),s:f.ts},D=null;return}f.ts>1.01&&(D={x:t.clientX,y:t.clientY,tx:f.tx,ty:f.ty,moved:!1},e.setPointerCapture(t.pointerId))},A=t=>{if(E.has(t.pointerId)&&E.set(t.pointerId,[t.clientX,t.clientY]),O&&E.size===2){let[e,t]=[...E.values()],[n,r]=b((e[0]+t[0])/2,(e[1]+t[1])/2);y(O.s*Math.hypot(e[0]-t[0],e[1]-t[1])/O.d/f.ts,n,r);return}if(!D)return;let n=e.getBoundingClientRect(),r=l/f.s/n.width;f.tx=D.tx-(t.clientX-D.x)*r,f.ty=D.ty-(t.clientY-D.y)*r,Math.hypot(t.clientX-D.x,t.clientY-D.y)>3&&(D.moved=!0,m=!0,a?.setAttribute(`data-panning`,``)),v(f),f.x=f.tx,f.y=f.ty},j=e=>{E.delete(e.pointerId),E.size<2&&(O=null),D=null,m=!1,a?.removeAttribute(`data-panning`)},M=e=>{let t=n.assetAt?.(e.clientX,e.clientY)??null;t?C(t):S()},ee=e=>{if(e.target instanceof Element&&e.target.closest(`input,textarea`)||e.key.startsWith(`Arrow`)&&e.target instanceof Element&&e.target.closest(`[data-floor-keys]`))return;let[t,n]=x(),r=40/f.ts,i=new Map([[`+`,()=>y(qe,t,n)],[`=`,()=>y(qe,t,n)],[`-`,()=>y(1/qe,t,n)],[`0`,S],[`ArrowLeft`,()=>{f.tx-=r,v(f)}],[`ArrowRight`,()=>{f.tx+=r,v(f)}],[`ArrowUp`,()=>{f.ty-=r,v(f)}],[`ArrowDown`,()=>{f.ty+=r,v(f)}]]).get(e.key);i&&(e.preventDefault(),i())};e.addEventListener(`wheel`,T,{passive:!1}),e.addEventListener(`pointerdown`,k),e.addEventListener(`pointermove`,A),e.addEventListener(`pointerup`,j),e.addEventListener(`pointercancel`,j),e.addEventListener(`dblclick`,M),a?.addEventListener(`keydown`,ee);let te=a?.hasAttribute(`tabindex`)??!0;return a&&!te&&a.setAttribute(`tabindex`,`0`),{zoomIn:()=>y(qe,...x()),zoomOut:()=>y(1/qe,...x()),fit:S,flyTo:C,zoomAt:y,scale:()=>f.s,subscribe(e){return p.add(e),()=>p.delete(e)},step(t){let n=o()||D?1:1-Math.exp(-t/.12);f.x+=(f.tx-f.x)*n,f.y+=(f.ty-f.y)*n,f.s+=(f.ts-f.s)*n,Math.abs(f.s-f.ts)<1e-4&&(f.s=f.ts);let r=`${f.x.toFixed(2)} ${f.y.toFixed(2)} ${(l/f.s).toFixed(2)} ${(u/f.s).toFixed(2)}`,i=`${f.ts>1.01}|${m}`;(e.getAttribute(`viewBox`)!==r||i!==h)&&(e.setAttribute(`viewBox`,r),f.ts>1.01?a?.setAttribute(`data-zoomed`,``):a?.removeAttribute(`data-zoomed`),h=i,_())},state:f,dispose(){w.disconnect(),e.removeEventListener(`wheel`,T),e.removeEventListener(`pointerdown`,k),e.removeEventListener(`pointermove`,A),e.removeEventListener(`pointerup`,j),e.removeEventListener(`pointercancel`,j),e.removeEventListener(`dblclick`,M),a?.removeEventListener(`keydown`,ee),a&&!te&&a.removeAttribute(`tabindex`),a?.removeAttribute(`data-zoomed`),a?.removeAttribute(`data-panning`),p.clear()}}}function Ye(e){return null}var Xe=250,Ze=2;function Qe(e,t){let{svg:n,feed:r}=e,i=We(e,performance.now()),a=t(e),o=(e,t)=>Oe(n,e,t),s=Je(n,e.size,{reducedMotion:e.reducedMotion,assetAt:o}),c=!1,l=0,u=0,d=0,f=0,p=0;function m(t){l=0;let n=u?Math.min((t-u)/1e3,1/20):1/60;u=t,i.draw(t),t-d>Xe&&(a.data(i.lampTest()),d=t);let o=r.engineState()===`paused`,h=o?0:n;f+=h,p=o?p+n:0,(!i.done()||p<Ze)&&a.draw({dt:n,sdt:h,t:f,still:e.reducedMotion(),introDone:i.done()}),s.step(n),c&&(l=requestAnimationFrame(m))}let h=()=>{if(document.hidden){l&&cancelAnimationFrame(l),l=0;return}u=0,c&&!l&&(l=requestAnimationFrame(m))};document.addEventListener(`visibilitychange`,h);function g(){c=!1,l&&cancelAnimationFrame(l),l=0}return{start(){c||(c=!0,u=0,document.hidden||(l=requestAnimationFrame(m)))},stop:g,resync:a.resync,dispose(){g(),document.removeEventListener(`visibilitychange`,h),s.dispose();for(let e of ke(n,`[${Ae}]`))e.remove()},view:s,assetAt:o,status:a.status}}var P=n(),$e={ArrowRight:1,ArrowDown:1,ArrowLeft:-1,ArrowUp:-1};function et({things:e,selected:t,label:n,onFocusMachine:r,onActivate:i}){let[a,o]=(0,N.useState)(0),s=(0,N.useRef)([]);(0,N.useEffect)(()=>{let n=e.findIndex(e=>e.key===t);n>=0&&o(n)},[t,e]);let c=t=>{let n=(t+e.length)%e.length;o(n),s.current[n]?.focus()},l=(e,t)=>{let n=$e[e.key],r=n===void 0?void 0:t+n;e.key===`Home`&&(r=0),e.key===`End`&&(r=-1),r!==void 0&&(e.preventDefault(),c(r))};return(0,P.jsx)(`div`,{role:`toolbar`,"aria-label":`Machines`,[Ge]:``,className:`sr-only`,children:e.map((e,c)=>(0,P.jsx)(`button`,{ref:e=>{s.current[c]=e},type:`button`,tabIndex:c===a?0:-1,"aria-label":n(e),"aria-pressed":e.key===t,onFocus:()=>{o(c),r(e.key)},onBlur:()=>r(null),onKeyDown:e=>l(e,c),onClick:t=>{t.stopPropagation(),i(e.key)}},e.key))})}var tt=4,nt=400,rt={g:`bg-success`,a:`bg-warning`,r:`bg-destructive`,"":`bg-muted-foreground/50`};function it(e,t,n){let r=e.getBoundingClientRect(),i=1/0,a=-1/0,o=1/0,s=-1/0;for(let e of t.querySelectorAll(`[data-asset="${CSS.escape(n)}"]`)){let t=e.getBoundingClientRect();t.width&&(i=Math.min(i,t.left),a=Math.max(a,t.right),o=Math.min(o,t.top),s=Math.max(s,t.bottom))}return Number.isFinite(i)?{id:n,x:Math.max(72,Math.min(r.width-72,(i+a)/2-r.left)),y:Math.max(40,o-r.top-10),box:{left:i-r.left,top:o-r.top,width:a-i,height:s-o}}:null}function at(e,t,n){for(let n of e.querySelectorAll(`[${t}]`))n.removeAttribute(t);if(n)for(let r of e.querySelectorAll(`[data-asset="${CSS.escape(n)}"]`))r.setAttribute(t,``)}function ot({layout:e,ids:t,caption:n,feed:r,things:i,selected:a,onSelect:o,onRuntime:s}){let c=(0,N.useRef)(null),u=(0,N.useRef)(null),[d,f]=(0,N.useState)(null),[p,m]=(0,N.useState)(null),[h,g]=(0,N.useState)(null),[_,v]=(0,N.useState)(1),[,y]=(0,N.useState)(0),b=(0,N.useRef)({onSelect:o,onRuntime:s});b.current={onSelect:o,onRuntime:s},(0,N.useLayoutEffect)(()=>{let n=u.current;if(!n)return;let i=matchMedia(`(prefers-reduced-motion: reduce)`),a=Qe({svg:n,size:{width:e.width,height:e.height},P:e.kit.P,feed:r,flows:e.flows,ids:t,reducedMotion:()=>i.matches},e.compose);a.start(),f(a),b.current.onRuntime(a);let o=a.view.subscribe(e=>{v(e.scale),e.panning?m(null):m(e=>e&&c.current?it(c.current,n,e.id):e)}),s=Ye(a),l=window;return s&&(l.__sf={...s,joints:e.joints,select:e=>b.current.onSelect(e),showTag:e=>c.current&&m(it(c.current,n,e))}),()=>{o(),a.dispose(),b.current.onRuntime(null),s&&delete l.__sf}},[e,t,r]),(0,N.useEffect)(()=>{let e=u.current;e&&at(e,`data-selected`,a)},[a]),(0,N.useEffect)(()=>{let e=u.current;if(e&&at(e,`data-hover`,p?.id??null),!p)return;let t=setInterval(()=>y(e=>e+1),nt);return()=>clearInterval(t)},[p?.id,p]);let x=(0,N.useRef)(null),S=p?i.find(e=>e.key===p.id):void 0,[C,w]=p&&d?d.status(p.id):[``,``],T=l(e=>e.assets),E=i.flatMap(e=>(T.find(t=>t.id===e.assetId)?.activeFaults??[]).map(t=>({thing:e,fault:t})));return(0,P.jsxs)(`section`,{ref:c,"aria-label":`Factory floor`,className:`floor-scene @container relative min-h-0 overflow-hidden bg-background outline-none [background-image:linear-gradient(color-mix(in_srgb,var(--border)_45%,transparent)_1px,transparent_1px),linear-gradient(90deg,color-mix(in_srgb,var(--border)_45%,transparent)_1px,transparent_1px)] [background-size:48px_48px] focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset`,onPointerMove:e=>{let t=c.current,n=u.current;if(!d||!t||!n||t.hasAttribute(`data-panning`))return;let r=d.assetAt(e.clientX,e.clientY);r!==(p?.id??null)&&m(r?it(t,n,r):null)},onPointerLeave:()=>m(null),onPointerDown:e=>{x.current=[e.clientX,e.clientY]},onClick:e=>{let t=x.current;t&&Math.hypot(e.clientX-t[0],e.clientY-t[1])>tt||o(d?.assetAt(e.clientX,e.clientY)??null)},onKeyDown:e=>{e.key===`Escape`&&a&&o(null)},children:[(0,P.jsx)(`svg`,{ref:u,className:`iso-svg floor-svg`,viewBox:`0 0 ${e.width} ${e.height}`,role:`img`,"aria-label":e.label,children:(0,P.jsx)(je,{value:e.kit,children:(0,P.jsx)(e.Scene,{ids:t})})}),(0,P.jsxs)(`div`,{className:`pointer-events-none absolute inset-x-3 top-3 flex flex-wrap items-start justify-between gap-x-3 gap-y-2`,children:[(0,P.jsxs)(`p`,{className:`pt-1 pl-1 text-[11px] font-semibold uppercase tracking-[0.14em] text-muted-foreground`,children:[`Floor `,(0,P.jsx)(`span`,{className:`text-primary`,children:`·`}),` `,n]}),E.length>0?(0,P.jsx)(`ul`,{className:`pointer-events-auto ml-auto flex max-w-full flex-col items-end gap-1.5`,children:E.map(({thing:e,fault:t})=>(0,P.jsx)(`li`,{children:(0,P.jsxs)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),o(e.key)},className:`flex max-w-full items-center gap-2 rounded-[var(--miravo-radius-pill)] border border-destructive/40 bg-background/90 px-2.5 py-1 text-[11px] text-destructive outline-none transition-colors hover:border-destructive/70 focus-visible:ring-2 focus-visible:ring-ring`,children:[(0,P.jsx)(`span`,{className:`size-1.5 shrink-0 animate-pulse rounded-full bg-destructive`}),(0,P.jsx)(`span`,{className:`shrink-0 font-medium`,children:e.name}),(0,P.jsx)(`span`,{className:`min-w-0 truncate font-mono text-[10px] opacity-80`,children:t.replace(/_/g,` `)})]})},`${e.key}:${t}`))}):null]}),p?(0,P.jsxs)(`div`,{role:`status`,className:`pointer-events-none absolute z-10 flex -translate-x-1/2 -translate-y-full items-center gap-2 whitespace-nowrap rounded-[var(--miravo-radius-pill)] border border-border/80 bg-background/95 px-2.5 py-1 shadow-[0_14px_40px_-20px_#000]`,style:{left:p.x,top:p.y},children:[(0,P.jsx)(`span`,{className:M(`size-1.5 rounded-full`,rt[w]??rt[``])}),(0,P.jsx)(`span`,{className:`text-xs font-medium`,children:S?.name??p.id}),(0,P.jsx)(`span`,{className:`font-mono text-[10px] uppercase tracking-[0.08em] text-muted-foreground`,children:fe(C)})]}):null,h&&p?.id===h?(0,P.jsx)(`div`,{"aria-hidden":!0,className:`pointer-events-none absolute rounded-[var(--miravo-radius-tight)] ring-2 ring-ring ring-offset-2 ring-offset-background`,style:{left:p.box.left-4,top:p.box.top-4,width:p.box.width+8,height:p.box.height+8}}):null,(0,P.jsx)(et,{things:i,selected:a,label:e=>`${e.name}, ${fe(d?d.status(e.key)[0]:``)}`,onFocusMachine:e=>{g(e);let t=c.current,n=u.current;m(e&&t&&n?it(t,n,e):null)},onActivate:e=>{o(e),d?.view.flyTo(e)}}),(0,P.jsx)(`p`,{className:`pointer-events-none absolute bottom-3 left-4 hidden text-[10px] text-muted-foreground/80 @3xl:block`,children:`Drag to pan · Ctrl/⌘ + scroll to zoom · Double-click a machine, or Tab to it and press Enter, to fly to it`}),(0,P.jsxs)(`div`,{className:`absolute right-3 bottom-3 flex items-center gap-0.5 rounded-[var(--miravo-radius-stadium-sm)] border border-border/70 bg-background/90 p-0.5`,children:[(0,P.jsx)(st,{label:`Zoom out`,onClick:()=>d?.view.zoomOut(),children:(0,P.jsx)(ie,{className:`size-3.5`,"aria-hidden":!0})}),(0,P.jsxs)(`span`,{className:`min-w-10 text-center font-mono text-[10px] tabular-nums text-muted-foreground`,children:[_.toFixed(1),`×`]}),(0,P.jsx)(st,{label:`Zoom in`,onClick:()=>d?.view.zoomIn(),children:(0,P.jsx)(ce,{className:`size-3.5`,"aria-hidden":!0})}),(0,P.jsx)(st,{label:`Fit floor`,onClick:()=>d?.view.fit(),children:(0,P.jsx)(Le,{className:`size-3.5`,"aria-hidden":!0})})]})]})}function st({label:e,onClick:t,children:n}){return(0,P.jsx)(`button`,{type:`button`,"aria-label":e,title:e,onClick:e=>{e.stopPropagation(),t()},className:`grid size-7 place-items-center rounded-[var(--miravo-radius-tight)] text-muted-foreground outline-none transition-colors hover:bg-muted/50 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,children:n})}var ct=3e3;function lt(e){return e.type===`fault:triggered`?`bg-destructive`:e.type===`fault:cleared`?`bg-success`:`bg-muted-foreground/50`}function ut({assetIds:e,nameOf:t,onSelect:n}){let r=S({queryKey:u.events(`all`,``),queryFn:()=>c(Ee(`all`,``,null),i.events),refetchInterval:ct}),a=new Date,o=(r.data?.events??[]).filter(t=>{if(Ce(t))return!1;let n=Te(t);return n===void 0||e.has(n)});return(0,P.jsxs)(`div`,{className:`flex flex-col`,children:[o.length===0?(0,P.jsx)(`p`,{className:`px-4 py-6 text-xs text-muted-foreground`,children:r.isPending?`Loading events…`:`No events yet. Inject a fault to see one here.`}):(0,P.jsx)(`ol`,{className:`flex flex-col px-2 py-2`,children:o.map(e=>{let r=Te(e),i=we(e);return(0,P.jsx)(`li`,{children:(0,P.jsxs)(`button`,{type:`button`,disabled:!r,onClick:()=>r&&n(r),className:`flex w-full items-start gap-2.5 rounded-[var(--miravo-radius-tight)] px-2 py-2 text-left outline-none transition-colors enabled:hover:bg-muted/40 focus-visible:ring-2 focus-visible:ring-ring`,children:[(0,P.jsx)(`span`,{className:M(`mt-1.5 size-1.5 shrink-0 rounded-full`,lt(e))}),(0,P.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-0.5`,children:[(0,P.jsxs)(`span`,{className:`truncate text-xs`,children:[(0,P.jsx)(`span`,{className:`text-foreground`,children:r?t(r):`Engine`}),(0,P.jsxs)(`span`,{className:`text-muted-foreground`,children:[` `,k(e.type.replace(/[:-]/g,`_`))]})]}),i?(0,P.jsx)(`span`,{className:`truncate font-mono text-[11px] text-muted-foreground`,children:i}):null]}),(0,P.jsx)(`time`,{className:`shrink-0 font-mono text-[10px] text-muted-foreground tabular-nums`,children:Se(e.timestamp,a)})]})},e.id)})}),(0,P.jsx)(`div`,{className:`border-t border-border/50 px-4 py-3`,children:(0,P.jsxs)(E,{to:`/events`,className:A({size:`sm`,variant:`ghost`,className:`-ml-2 gap-1`}),children:[`All events`,(0,P.jsx)(ee,{className:`size-3.5`,"aria-hidden":!0})]})})]})}function dt(e){return(typeof e==`number`||typeof e==`string`)&&e!==``}function ft(e){let t=(0,N.useId)();return dt(e)?`${e}`:t}var F=typeof window<`u`?N.useLayoutEffect:N.useEffect;function I(e){let t=(0,N.useRef)(e);return F(()=>{t.current=e},[e]),(0,N.useCallback)((...e)=>t.current?.(...e),[t])}function pt(...e){return I(t=>{e.forEach(e=>{if(e)switch(typeof e){case`function`:e(t);break;case`object`:e.current=t;break}})})}function mt(e,t){let n=e?.[`data-testid`];return dt(n)?`${n}`:dt(t)?`${t}`:void 0}function ht(e,t){return t?e*2+1:e+1}function gt(e,t){return t?e*2-1:e}function _t(e,t,n){let r=ht(e,n);return t===void 0?`${r} / -1`:`${r} / span ${gt(t,n)}`}function vt(e){return`${e*2} / span 1`}function yt({crossCount:e,crossSpan:t,crossStart:n,hasGutters:r}){let i=t===void 0?e:n+t;if(n===0&&i===e)return`1 / -1`;let a=ht(n,r),o=ht(i-1,r)+1;return r&&(n>0&&a--,i<e&&o++),`${a} / ${o}`}function bt(e,t){return Number.isInteger(e)&&e>=1&&e<t}function L(e,t=`Assertion error`){if(!e)throw Error(t)}var xt=(0,N.createContext)(null);function St(){let e=(0,N.useContext)(xt);return L(e,`Grid Context not found; did you render a Cell or Gridline outside of a Grid?`),e}function Ct({children:e,className:t,column:n,columnSpan:r=1,elementRef:i,id:a,row:o,rowSpan:s=1,style:c,...l}){let u=ft(a),{gutters:d,registerCell:f}=St(),p=(0,N.useRef)(null),m=pt(p,i);return F(()=>{let e=p.current;if(e!==null)return f({column:n,columnSpan:r,element:e,id:u,row:o,rowSpan:s})},[n,r,u,f,o,s]),(0,P.jsx)(`div`,{...l,className:t,"data-cell":!0,"data-testid":mt(l,a),id:u,ref:m,style:{overflow:`auto`,...c,minHeight:0,minWidth:0,gridColumn:_t(n,r,d.column),gridRow:_t(o,s,d.row)},children:e})}Ct.displayName=`Cell`;var wt;function Tt(){return wt===void 0&&(wt=typeof matchMedia==`function`?!!matchMedia(`(pointer:coarse)`).matches:!1),wt}function Et({expandHitTargets:e,axis:t,rect:n}){let r=e?Tt()?t.resizeTargetMinimumSize.coarse:t.resizeTargetMinimumSize.fine:0;if(n.width<r){let e=r-n.width;n=new DOMRect(n.x-e/2,n.y,n.width+e,n.height)}if(n.height<r){let e=r-n.height;n=new DOMRect(n.x,n.y-e/2,n.width,n.height+e)}return n}function Dt({axis:e,cells:t,index:n,rect:r}){let i=[r];for(let r of t){let t=e===`column`?r.column:r.row,a=e===`column`?r.columnSpan:r.rowSpan;if(t>=n||t+a<=n)continue;let o=r.element.getBoundingClientRect(),s=e===`column`?o.top:o.left,c=e===`column`?o.bottom:o.right;c<=s||(i=i.flatMap(t=>{let n=e===`column`?t.top:t.left,r=e===`column`?t.bottom:t.right;if(s>=r||c<=n)return[t];let i=[],a=(n,r)=>{i.push(e===`column`?new DOMRect(t.x,n,t.width,r-n):new DOMRect(n,t.y,r-n,t.height))};return n<s&&a(n,s),r>c&&a(c,r),i}))}return i}function Ot({axis:e,cells:t,crossTrackCount:n,expandHitTargets:r,resizeAxis:i,axisSize:a,includeDisabled:o,separatorPlacements:s}){let{items:c,separators:l}=i,u=c.length,d=-1,f=-1,p=0;if(c.forEach((e,t)=>{e.constraintProps.disabled||(p++,d===-1&&(d=t),f=t)}),!o&&p<2)return[];let m=e=>o||e>d&&e<=f,h=[],g=(e,t,n)=>({axis:i,axisSize:a,items:[c[e-1],c[e]],rect:t,separator:n}),_=(n,r)=>{let i;for(let a of t){let t=e===`column`?a.row:a.column,o=e===`column`?a.rowSpan:a.columnSpan;if(r===`start`?t===n:t+o-1===n){let t=a.element.getBoundingClientRect();if(r===`start`){let n=e===`column`?t.top:t.left;i=i===void 0?n:Math.min(i,n)}else{let n=e===`column`?t.bottom:t.right;i=i===void 0?n:Math.max(i,n)}}}return i},v=new Set;for(let a of l){let c=s.get(a);if(!c||c.index<1||c.index>=u||(v.add(c.index),!o&&(a.disabled||a.element.hasAttribute(`aria-disabled`)))||!m(c.index))continue;let l=a.element.getBoundingClientRect(),{crossSpan:d,crossStart:f}=c,p=d===void 0?n:f+d,y=e===`column`?l.top:l.left,b=e===`column`?l.bottom:l.right;if(f>0){let e=_(f-1,`end`);e!==void 0&&e<y&&(y=e)}if(p<n){let e=_(p,`start`);e!==void 0&&e>b&&(b=e)}l=e===`column`?new DOMRect(l.x,y,l.width,b-y):new DOMRect(y,l.y,b-y,l.height),l=Et({expandHitTargets:r,axis:i,rect:l}),o?h.push(g(c.index,l,a)):Dt({axis:e,cells:t,index:c.index,rect:l}).forEach(e=>{h.push(g(c.index,e,a))})}let y=(n,a)=>{Dt({axis:e,cells:t,index:n,rect:Et({expandHitTargets:r,axis:i,rect:a})}).forEach(e=>{h.push(g(n,e))})},b=Array.from({length:n},()=>Array(u));for(let r of t){let[t,i,a,o]=e===`column`?[r.column,r.columnSpan,r.row,r.rowSpan]:[r.row,r.rowSpan,r.column,r.columnSpan];for(let e=Math.max(0,a);e<Math.min(n,a+o);e++)for(let n=Math.max(0,t);n<Math.min(u,t+i);n++)b[e][n]??=r}let x=new Map,S=t=>{let n=x.get(t);if(!n){let r=t.element.getBoundingClientRect();n=e===`column`?{crossEnd:r.bottom,crossStart:r.top,end:r.right,start:r.left}:{crossEnd:r.right,crossStart:r.left,end:r.bottom,start:r.top},x.set(t,n)}return n},C=({crossEnd:t,crossStart:n,end:r,start:i})=>e===`column`?new DOMRect(i,n,r-i,t-n):new DOMRect(n,i,t-n,r-i);for(let e=1;e<u;e++){if(v.has(e)||!m(e))continue;let t;for(let r=0;r<n;r++){let n=b[r][e-1],i=b[r][e],a;if((n||i)&&n!==i){let e=n?S(n):void 0,t=i?S(i):void 0,r=e?.end??t.start,o=t?.start??e.end,s=Math.max(e?.crossStart??-1/0,t?.crossStart??-1/0),c=Math.min(e?.crossEnd??1/0,t?.crossEnd??1/0);a={crossEnd:Math.max(s,c),crossStart:s,end:Math.max(r,o),start:Math.min(r,o)}}a?t=t?{crossEnd:Math.max(t.crossEnd,a.crossEnd),crossStart:Math.min(t.crossStart,a.crossStart),end:Math.max(t.end,a.end),start:Math.min(t.start,a.start)}:a:t&&=(y(e,C(t)),void 0)}t&&y(e,C(t))}return h}function R(e){let t=parseFloat(e??``);return Number.isFinite(t)?t:0}function kt({axis:e,element:t,gutterSizes:n,hasGutters:r,layout:i,trackIds:a}){let o=a.length,s=r?o*2-1:o,c=t.ownerDocument.defaultView?.getComputedStyle(t),l=e===`column`?c?.gridTemplateColumns:c?.gridTemplateRows;if(l){let e=l.trim().split(/\s+/);if(e.length===s&&e.every(e=>/^-?[\d.]+px$/.test(e))){let t=a.map((t,n)=>R(e[r?n*2:n]));return{availableSize:t.reduce((e,t)=>e+t,0),trackSizes:t}}}let u=e===`column`?t.offsetWidth:t.offsetHeight,d=e===`column`?R(c?.paddingLeft)+R(c?.paddingRight)+R(c?.borderLeftWidth)+R(c?.borderRightWidth):R(c?.paddingTop)+R(c?.paddingBottom)+R(c?.borderTopWidth)+R(c?.borderBottomWidth),f=R(e===`column`?c?.columnGap:c?.rowGap),p=n.reduce((e,t)=>e+t,0),m=Math.max(0,u-d-f*Math.max(0,s-1)-p);return{availableSize:m,trackSizes:a.map(e=>i&&i[e]!==void 0?i[e]/100*m:m/o)}}function At(e){switch(typeof e){case`number`:return[e,`px`];case`string`:{let t=parseFloat(e);return e.endsWith(`%`)?[t,`%`]:e.endsWith(`px`)?[t,`px`]:e.endsWith(`rem`)?[t,`rem`]:e.endsWith(`em`)?[t,`em`]:e.endsWith(`vh`)?[t,`vh`]:e.endsWith(`vw`)?[t,`vw`]:[t,`%`]}}}var jt=class{#e={};addListener(e,t){let n=this.#e[e];return n===void 0?this.#e[e]=[t]:n.includes(t)||n.push(t),()=>{this.removeListener(e,t)}}emit(e,t){let n=this.#e[e];if(n!==void 0){if(n.length===1){n[0].call(null,t);return}let e,r=Array.from(n);for(let n=0;n<r.length;n++){let i=r[n];try{i.call(null,t)}catch(t){e??={error:t}}}if(e)throw e.error}}removeAllListeners(){this.#e={}}removeListener(e,t){let n=this.#e[e];if(n!==void 0){let e=n.indexOf(t);e>=0&&n.splice(e,1)}}},z={cursorFlags:0,state:`inactive`},Mt=new jt;function B(){return z}function Nt(e){return Mt.addListener(`change`,e)}function Pt(e,t=[],n,r=!1){let i=z,a={...z};a.cursorFlags=e,a.state===`active`&&(a.didPointerMove||=r,a.previews=t,n&&(a.previewLayoutMap=n)),z=a,Mt.emit(`change`,{prev:i,next:a})}function V(e){let t=z;z=e,t.state===`active`&&e.state!==`active`&&t.didPointerMove&&t.hitRegions.forEach(({separator:e})=>{e&&e.element.ownerDocument.activeElement===e.element&&e.element.blur()}),Mt.emit(`change`,{prev:t,next:e})}function Ft(e){z.state!==`active`||!z.previews.some(t=>t.separator===e)||V({...z,previews:z.previews.map(t=>t.separator===e?{...t}:t)})}function It(e){if(z.state===`inactive`)return;let t=z.hitRegions.filter(t=>t.axis!==e),n=z.state===`active`&&z.previews.some(t=>t.axis===e);if(!(t.length===z.hitRegions.length&&!n))if(t.length===0)V({cursorFlags:0,state:`inactive`});else if(z.state===`active`){let n=new Map(z.initialLayoutMap),r=new Map(z.previewLayoutMap);n.delete(e),r.delete(e),V({...z,cursorFlags:0,hitRegions:t,initialLayoutMap:n,previewLayoutMap:r,previews:z.previews.filter(t=>t.axis!==e)})}else V({...z,hitRegions:t})}var Lt=e=>e,Rt=()=>{},zt=1,Bt=2,Vt=4,Ht=8,Ut=3,Wt=12,Gt;function Kt(){return Gt===void 0&&(Gt=!1,typeof window<`u`&&(window.navigator.userAgent.includes(`Chrome`)||window.navigator.userAgent.includes(`Firefox`))&&(Gt=!0)),Gt}function qt({cursorFlags:e,axes:t,state:n}){let r=0,i=0;switch(n){case`active`:case`hover`:t.forEach(e=>{if(!e.mutableState.disableCursor)switch(e.orientation){case`horizontal`:r++;break;case`vertical`:i++;break}})}if(!(r===0&&i===0)){switch(n){case`active`:if(e&&Kt()){let t=(e&zt)!==0,n=(e&Bt)!==0,r=(e&Vt)!==0,i=(e&Ht)!==0;if(t)return r?`se-resize`:i?`ne-resize`:`e-resize`;if(n)return r?`sw-resize`:i?`nw-resize`:`w-resize`;if(r)return`s-resize`;if(i)return`n-resize`}break}return Kt()?r>0&&i>0?`move`:r>0?`ew-resize`:`ns-resize`:r>0&&i>0?`grab`:r>0?`col-resize`:`row-resize`}}var Jt=new WeakMap;function Yt(e){if(!e.defaultView||!e.adoptedStyleSheets)return;let{prevStyle:t,styleSheet:n}=Jt.get(e)??{};n===void 0&&(n=new e.defaultView.CSSStyleSheet,e.adoptedStyleSheets&&(Object.isExtensible(e.adoptedStyleSheets)?e.adoptedStyleSheets.push(n):e.adoptedStyleSheets=[...e.adoptedStyleSheets,n]));let r=B();switch(r.state!==`inactive`&&r.ownerDocument!==e&&(r={cursorFlags:0,state:`inactive`}),r.state){case`active`:case`hover`:{let e=qt({cursorFlags:r.cursorFlags,axes:r.hitRegions.map(e=>e.axis),state:r.state}),i=`*, *:hover {cursor: ${e} !important; }`;if(t===i)return;t=i,e?n.cssRules.length===0?n.insertRule(i):n.replaceSync(i):n.cssRules.length===1&&n.deleteRule(0);break}case`inactive`:t=void 0,n.cssRules.length===1&&n.deleteRule(0);break}Jt.set(e,{prevStyle:t,styleSheet:n})}function Xt(e){return e.state===`inactive`?void 0:e.ownerDocument}function Zt({next:e,prev:t}){let n=Xt(t),r=Xt(e);n&&n!==r&&Yt(n),r&&Yt(r)}function H({axis:e}){let{layoutStrategy:t,orientation:n,items:r}=e;return t?t.calculateAvailableSize():r.reduce((e,t)=>(e+=n===`horizontal`?t.element.offsetWidth:t.element.offsetHeight,e),0)}function Qt(e,t){let n=e.compareDocumentPosition(t);return n&Node.DOCUMENT_POSITION_DISCONNECTED?0:n&Node.DOCUMENT_POSITION_FOLLOWING?-1:n&Node.DOCUMENT_POSITION_PRECEDING?1:0}function $t(e,t){return Array.from(t).sort((t,n)=>{let r=e===`horizontal`?en(t,n):tn(t,n);return r===0?Qt(t.element,n.element):r})}function en(e,t){let n=e.element.offsetLeft-t.element.offsetLeft;return n===0?e.element.offsetWidth-t.element.offsetWidth:n}function tn(e,t){let n=e.element.offsetTop-t.element.offsetTop;return n===0?e.element.offsetHeight-t.element.offsetHeight:n}function nn(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.ELEMENT_NODE}function rn(e,t){return{x:e.x>=t.left&&e.x<=t.right?0:Math.min(Math.abs(e.x-t.left),Math.abs(e.x-t.right)),y:e.y>=t.top&&e.y<=t.bottom?0:Math.min(Math.abs(e.y-t.top),Math.abs(e.y-t.bottom))}}function an({orientation:e,rects:t,targetRect:n}){let r={x:n.x+n.width/2,y:n.y+n.height/2},i,a=Number.MAX_VALUE;for(let n of t){let{x:t,y:o}=rn(r,n),s=e===`horizontal`?t:o;s<a&&(a=s,i=n)}return L(i,`No rect found`),i}function on({expandHitTargets:e=!0,axis:t,includeDisabled:n=!1}){if(t.layoutStrategy)return t.layoutStrategy.calculateHitRegions({expandHitTargets:e,axis:t,includeDisabled:n});let{element:r,orientation:i,items:a,separators:o}=t,s=$t(i,Array.from(r.children).filter(nn).filter(e=>!e.hasAttribute(`data-resize-preview`)).map(e=>({element:e}))).map(({element:e})=>e),c=[],l=!1,u=!1,d=-1,f,p=-1,m=0,h,g=[];{let e=-1;for(let t of s)t.hasAttribute(`data-panel`)&&(e++,t.hasAttribute(`data-disabled`)||(m++,d===-1&&(d=e),p=e))}if(n||m>1){let r=-1;for(let m of s)if(m.hasAttribute(`data-panel`)){r++;let o=a.find(e=>e.element===m);if(o){if(h){let a=h.element.getBoundingClientRect(),s=m.getBoundingClientRect(),_;if(u){let e=i===`horizontal`?new DOMRect(a.right,a.top,0,a.height):new DOMRect(a.left,a.bottom,a.width,0),t=i===`horizontal`?new DOMRect(s.left,s.top,0,s.height):new DOMRect(s.left,s.top,s.width,0);switch(g.length){case 0:_=[e,t];break;case 1:{let n=g[0];_=[n,an({orientation:i,rects:[a,s],targetRect:n.element.getBoundingClientRect()})===a?t:e];break}default:_=g;break}}else _=g.length?g:[i===`horizontal`?new DOMRect(a.right,s.top,s.left-a.right,s.height):new DOMRect(s.left,a.bottom,s.width,s.top-a.bottom)];for(let i of _){let a=Et({expandHitTargets:e,axis:t,rect:`width`in i?i:i.element.getBoundingClientRect()});(n||!l&&!(r<=d||r>p))&&(f??=H({axis:t}),c.push({axis:t,axisSize:f,items:[h,o],separator:`width`in i?void 0:i,rect:a})),l=!1}}u=!1,h=o,g=[]}}else if(m.hasAttribute(`data-separator`)){m.ariaDisabled!==null&&(l=!0);let e=o.find(e=>e.element===m);e?g.push(e):(h=void 0,g=[])}else u=!0}return c}function sn(e,t){let n=getComputedStyle(e);return t*parseFloat(n.fontSize)}function cn(e,t){let n=getComputedStyle(e.ownerDocument.documentElement);return t*parseFloat(n.fontSize)}function ln(e){return e/100*window.innerHeight}function un(e){return e/100*window.innerWidth}function U({axisSize:e,itemElement:t,styleProp:n}){let r,[i,a]=At(n);switch(a){case`%`:r=i/100*e;break;case`px`:r=i;break;case`rem`:r=cn(t,i);break;case`em`:r=sn(t,i);break;case`vh`:r=ln(i);break;case`vw`:r=un(i);break}return r}function W(e){return parseFloat(e.toFixed(3))}function dn(e){let{items:t}=e,n=H({axis:e});return n===0?t.map(e=>({groupResizeBehavior:e.constraintProps.groupResizeBehavior,collapsedSize:0,collapsible:e.constraintProps.collapsible===!0,defaultSize:void 0,disabled:e.constraintProps.disabled,minSize:0,maxSize:100,itemId:e.id})):t.map(e=>{let{element:t,constraintProps:r}=e,i=0;r.collapsedSize!==void 0&&(i=W(U({axisSize:n,itemElement:t,styleProp:r.collapsedSize})/n*100));let a;r.collapsedThreshold!==void 0&&(a=W(U({axisSize:n,itemElement:t,styleProp:r.collapsedThreshold})/n*100));let o;r.defaultSize!==void 0&&(o=W(U({axisSize:n,itemElement:t,styleProp:r.defaultSize})/n*100));let s=0;r.minSize!==void 0&&(s=W(U({axisSize:n,itemElement:t,styleProp:r.minSize})/n*100));let c=100;return r.maxSize!==void 0&&(c=W(U({axisSize:n,itemElement:t,styleProp:r.maxSize})/n*100)),{groupResizeBehavior:r.groupResizeBehavior,collapsedSize:i,collapsedThreshold:a,collapsible:r.collapsible===!0,defaultSize:o,disabled:r.disabled,minSize:s,maxSize:c,itemId:e.id}})}var G=new Map,fn=new jt,pn=0,mn=[],hn;function gn(){pn++}function _n(){for(let e=0;e<mn.length;e++)try{fn.emit(`axisChange`,mn[e])}catch(e){hn??={error:e}}mn.length=0}function vn(){if(pn===1&&_n(),pn--,pn===0&&hn){let{error:e}=hn;throw hn=void 0,e}}function yn(e){G=new Map(G),G.delete(e)}function bn(e,t){for(let[t]of G)if(t.id===e)return t}function K(e,t){for(let[t,n]of G)if(t.id===e)return n;if(t)throw Error(`Could not find data for Group with id ${e}`)}function q(){return G}function xn(e,t){return fn.addListener(`axisChange`,n=>{n.axis.id===e&&t(n)})}function J(e,t,n){let r=G.get(e);G=new Map(G),G.set(e,t);let i={axis:e,isUserInteraction:n?.isUserInteraction===!0,prev:r,next:t};pn>0?mn.push(i):fn.emit(`axisChange`,i)}function Sn(e,{pointerId:t,pointerType:n}){return t===e.pointerId||n===`pen`&&e.pointerType===`pen`}function Cn(e,t,n={}){return e.ownerDocument===t&&(n.pointerId===void 0||Sn(e,n))}function wn(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}function Y(e,t,n=0){return Math.abs(W(e)-W(t))<=n}function X(e,t){return Y(e,t)?0:e>t?1:-1}function Tn({overrideDisabledItems:e,itemConstraints:t,prevSize:n,size:r}){let{collapsedSize:i=0,collapsedThreshold:a,collapsible:o,disabled:s,maxSize:c=100,minSize:l=0}=t;if(s&&!e)return n;if(X(r,l)<0)if(o){let e=a??(l-i)/2,t=X(n,i)<=0,o=t?i+e:l-e,s=X(r,o);r=X(r,i)<=0||s<0||a!==void 0&&t&&s===0?i:l}else r=l;return r=Math.min(c,r),r=W(r),r}function En({delta:e,initialLayout:t,itemConstraints:n,pivotIndices:r,prevLayout:i,trigger:a}){if(Y(e,0))return t;let o=a===`imperative-api`,s=n.map(({itemId:e})=>t[e]),c=n.map(({itemId:e})=>i[e]),l=[...s],[u,d]=r;L(u!=null,`Invalid first pivot index`),L(d!=null,`Invalid second pivot index`);let f=0;switch(a){case`keyboard`:{let t=e<0?d:u,r=n[t];L(r,`Panel constraints not found for index ${t}`);let{collapsedSize:i=0,collapsible:a,minSize:o=0}=r;if(a){let n=s[t];if(L(n!=null,`Previous layout not found for panel index ${t}`),Y(n,i)){let t=o-n;X(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}{let t=e<0?u:d,r=n[t];L(r,`No panel constraints found for index ${t}`);let{collapsedSize:i=0,collapsible:a,minSize:o=0}=r;if(a){let n=s[t];if(L(n!=null,`Previous layout not found for panel index ${t}`),Y(n,o)){let t=n-i;X(t,Math.abs(e))>0&&(e=e<0?0-t:t)}}}break;default:{let t=e<0?d:u,r=n[t];L(r,`Panel constraints not found for index ${t}`);let i=s[t],{collapsedSize:a,collapsedThreshold:o,collapsible:c,minSize:l}=r;if(c&&X(i,l)<0){let t=l-a,n=o??t/2;if(X(i+Math.abs(e),l)<0){let r=X(Math.abs(e),n);e=r>0||r===0&&o===void 0&&e<0?e<0?-t:t:0}}break}}{let t=e<0?1:-1,r=e<0?d:u,i=0;for(;;){let e=s[r];L(e!=null,`Previous layout not found for panel index ${r}`);let a=Tn({overrideDisabledItems:o,itemConstraints:n[r],prevSize:e,size:100})-e;if(i+=a,r+=t,r<0||r>=n.length)break}let a=Math.min(Math.abs(e),Math.abs(i));e=e<0?0-a:a}{let t=e<0?u:d;for(;t>=0&&t<n.length;){let r=Math.abs(e)-Math.abs(f),i=s[t];L(i!=null,`Previous layout not found for panel index ${t}`);let a=i-r,c=Tn({overrideDisabledItems:o,itemConstraints:n[t],prevSize:i,size:a});if(!Y(i,c)&&(f+=i-c,l[t]=c,f.toFixed(3).localeCompare(Math.abs(e).toFixed(3),void 0,{numeric:!0})>=0))break;e<0?t--:t++}}if(wn(c,l))return i;{let t=e<0?d:u,r=s[t];L(r!=null,`Previous layout not found for panel index ${t}`);let i=r+f,a=Tn({overrideDisabledItems:o,itemConstraints:n[t],prevSize:r,size:i});if(l[t]=a,!Y(a,i)){let t=i-a,r=e<0?d:u;for(;r>=0&&r<n.length;){let i=l[r];L(i!=null,`Previous layout not found for panel index ${r}`);let a=i+t,s=Tn({overrideDisabledItems:o,itemConstraints:n[r],prevSize:i,size:a});if(Y(i,s)||(t-=s-i,l[r]=s),Y(t,0))break;e>0?r--:r++}}}return Y(Object.values(l).reduce((e,t)=>t+e,0),100,.1)?l.reduce((e,t,r)=>(e[n[r].itemId]=t,e),{}):i}function Z(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(t[n]===void 0||X(e[n],t[n])!==0)return!1;return!0}function Dn(e){gn();try{On(e)}finally{vn()}}function On({commit:e,event:t,hitRegions:n,initialLayoutMap:r,mountedAxes:i,pointerDownAtPoint:a,prevCursorFlags:o}){let s=0,c=B(),l=c.state===`active`?c.previews:[],u=new Map(c.state===`active`?c.previewLayoutMap:void 0);n.forEach(n=>{let{axis:o,axisSize:c}=n,{orientation:d,items:f}=o;if(e&&o.resizePreviewMode!==`separator`)return;let{disableCursor:p}=o.mutableState,m=0;m=a?d===`horizontal`?(t.clientX-a.x)/c*100:(t.clientY-a.y)/c*100:d===`horizontal`?t.clientX<0?-100:100:t.clientY<0?-100:100;let h=r.get(o),g=i.get(o);if(!h||!g)return;let{defaultLayoutDeferred:_,derivedItemConstraints:v,axisSize:y,layout:b,separatorToItems:x}=g;if(v&&b&&x){let t=o.resizePreviewMode===`separator`?u.get(o)??b:b,r=En({delta:m,initialLayout:h,itemConstraints:v,pivotIndices:n.items.map(e=>f.indexOf(e)),prevLayout:t,trigger:`mouse-or-touch`});if(o.resizePreviewMode===`separator`&&!e&&!Z(r,t)){u.set(o,r);let e=0,t=f.map(t=>(e+=r[t.id]-h[t.id],c/100*e));l=l.map(e=>{if(e.axis!==o)return e;let n=t[e.itemIndex];return n===e.offset?e:{...e,offset:n}})}if(Z(r,t)&&m!==0&&!p)switch(d){case`horizontal`:s|=m<0?zt:Bt;break;case`vertical`:s|=m<0?Vt:Ht;break}(o.resizePreviewMode!==`separator`||e)&&!Z(r,b)&&J(n.axis,{defaultLayoutDeferred:_,derivedItemConstraints:v,axisSize:y,layout:r,requestedAxisSize:y,requestedLayout:r,separatorToItems:x})}});let d=0;t.movementX===0?d|=o&Ut:d|=s&Ut,t.movementY===0?d|=o&Wt:d|=s&Wt;let f=c.state===`active`&&(t.clientX!==c.pointerDownAtPoint.x||t.clientY!==c.pointerDownAtPoint.y);Pt(d,l,u,f)}function kn(e,t){let n=B();if(n.state!==`active`||!Cn(n,e,t))return;let r=q();gn();try{Dn({commit:!0,event:t,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedAxes:r,pointerDownAtPoint:n.pointerDownAtPoint,prevCursorFlags:n.cursorFlags}),_n(),V({cursorFlags:0,state:`inactive`}),n.hitRegions.length>0&&(t.preventDefault?.(),n.hitRegions.forEach(e=>{if(!r.has(e.axis))return;let t=K(e.axis.id,!0);J(e.axis,t,{isUserInteraction:!0})}))}finally{vn()}}function An(e){if(e.defaultPrevented)return;let{clientX:t,clientY:n,movementX:r,movementY:i}=e;kn(e.currentTarget,{clientX:t,clientY:n,movementX:r,movementY:i})}function jn(e,t,n){let r,i={x:1/0,y:1/0};for(let a of t){let t=rn(n,a.rect);switch(e){case`horizontal`:(t.x<i.x||t.x===i.x&&t.y<=i.y)&&(r=a,i=t);break;case`vertical`:(t.y<i.y||t.y===i.y&&t.x<=i.x)&&(r=a,i=t);break}}return r?{distance:i,hitRegion:r}:void 0}function Mn(e){return typeof e==`object`&&!!e&&`nodeType`in e&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE}function Nn(e,t){if(e===t)throw Error(`Cannot compare node with itself`);let n={a:zn(e),b:zn(t)},r;for(;n.a.at(-1)===n.b.at(-1);)r=n.a.pop(),n.b.pop();L(r,`Stacking order can only be calculated for elements with a common ancestor`);let i={a:Rn(Ln(n.a)),b:Rn(Ln(n.b))};if(i.a===i.b){let e=r.childNodes,t={a:n.a.at(-1),b:n.b.at(-1)},i=e.length;for(;i--;){let n=e[i];if(n===t.a)return 1;if(n===t.b)return-1}}return Math.sign(i.a-i.b)}var Pn=/\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;function Fn(e){let t=getComputedStyle(Bn(e)??e).display;return t===`flex`||t===`inline-flex`}function In(e){let t=getComputedStyle(e);return!!(t.position===`fixed`||t.zIndex!==`auto`&&(t.position!==`static`||Fn(e))||+t.opacity<1||`transform`in t&&t.transform!==`none`||`webkitTransform`in t&&t.webkitTransform!==`none`||`mixBlendMode`in t&&t.mixBlendMode!==`normal`||`filter`in t&&t.filter!==`none`||`webkitFilter`in t&&t.webkitFilter!==`none`||`isolation`in t&&t.isolation===`isolate`||Pn.test(t.willChange)||t.webkitOverflowScrolling===`touch`)}function Ln(e){let t=e.length;for(;t--;){let n=e[t];if(L(n,`Missing node`),In(n))return n}return null}function Rn(e){return e&&Number(getComputedStyle(e).zIndex)||0}function zn(e){let t=[];for(;e;)t.push(e),e=Bn(e);return t}function Bn(e){let{parentNode:t}=e;return Mn(t)?t.host:t}function Vn(e,t){return e.x<t.x+t.width&&e.x+e.width>t.x&&e.y<t.y+t.height&&e.y+e.height>t.y}function Hn(e){try{return e.matches(`:modal`)}catch{return!1}}function Un({axisElement:e,hitRegion:t,pointerEventTarget:n}){if(nn(n)){let t=n.closest(`dialog`);if(t&&!t.contains(e)&&Hn(t))return!1}if(!nn(n)||n.contains(e)||e.contains(n))return!0;if(Nn(n,e)>0){let r=n;for(;r;){if(r.contains(e))return!0;if(Vn(r.getBoundingClientRect(),t))return!1;r=r.parentElement}}return!0}function Wn(e,t,n){let r=[];return t.forEach((t,i)=>{if(i.disabled||i.element.ownerDocument!==n)return;let a=on({axis:i}),o=jn(i.orientation,a,{x:e.clientX,y:e.clientY});o&&o.distance.x<=0&&o.distance.y<=0&&Un({axisElement:i.element,hitRegion:o.hitRegion.rect,pointerEventTarget:e.target})&&r.push(o.hitRegion)}),r}function Q({layout:e,itemConstraints:t}){let n=t.map(({itemId:t})=>e[t]),r=[...n],i=r.reduce((e,t)=>e+t,0);if(Object.keys(e).length!==t.length)throw Error(`Invalid ${t.length} panel layout: ${Object.values(e).map(e=>`${e}%`).join(`, `)}`);if(!Y(i,100)&&r.length>0)for(let e=0;e<t.length;e++){let t=r[e];L(t!=null,`No layout data found for index ${e}`),r[e]=100/i*t}let a=0;for(let e=0;e<t.length;e++){let i=n[e];L(i!=null,`No layout data found for index ${e}`);let o=r[e];L(o!=null,`No layout data found for index ${e}`);let s=Tn({overrideDisabledItems:!0,itemConstraints:t[e],prevSize:i,size:o});o!=s&&(a+=o-s,r[e]=s)}if(!Y(a,0))for(let e=0;e<t.length;e++){let n=r[e];L(n!=null,`No layout data found for index ${e}`);let i=n+a,o=Tn({overrideDisabledItems:!0,itemConstraints:t[e],prevSize:n,size:i});if(n!==o&&(a-=o-n,r[e]=o,Y(a,0)))break}return r.reduce((e,n,r)=>(e[t[r].itemId]=n,e),{})}function Gn({axisId:e,itemId:t}){let n=()=>{let t=q();for(let[n,{defaultLayoutDeferred:r,derivedItemConstraints:i,layout:a,axisSize:o,separatorToItems:s}]of t)if(n.id===e)return{defaultLayoutDeferred:r,derivedItemConstraints:i,axis:n,axisSize:o,layout:a,separatorToItems:s};throw Error(`Group ${e} not found`)},r=()=>{let e=n().derivedItemConstraints.find(e=>e.itemId===t);if(e!==void 0)return e;throw Error(`Panel constraints not found for Panel ${t}`)},i=()=>{let e=n().axis.items.find(e=>e.id===t);if(e!==void 0)return e;throw Error(`Layout not found for Panel ${t}`)},a=()=>{let e=n().layout[t];if(e!==void 0)return e;throw Error(`Layout not found for Panel ${t}`)},o=({nextSize:e,items:n,prevLayout:r,derivedItemConstraints:i})=>{let o=a(),s=n.findIndex(e=>e.id===t),c=s===0,l=s===n.length-1;if(l&&e<o&&(c||n.slice(0,s).every((e,t)=>{let n=i[t];return n?.collapsible&&Y(n.collapsedSize,r[n.itemId])}))){let e=n.slice(0,s).reduce((e,t)=>e+r[t.id],0);return{...r,[t]:W(100-e)}}return En({delta:l?o-e:e-o,initialLayout:r,itemConstraints:i,pivotIndices:l?[s-1,s]:[s,s+1],prevLayout:r,trigger:`imperative-api`})},s=e=>{if(e===a())return;let{defaultLayoutDeferred:t,derivedItemConstraints:r,axis:i,axisSize:s,layout:c,separatorToItems:l}=n(),u=Q({layout:o({nextSize:e,items:i.items,prevLayout:c,derivedItemConstraints:r}),itemConstraints:r});Z(c,u)||J(i,{defaultLayoutDeferred:t,derivedItemConstraints:r,axisSize:s,layout:u,requestedAxisSize:s,requestedLayout:u,separatorToItems:l})};return{collapse:()=>{let{collapsible:e,collapsedSize:t}=r(),{mutableValues:n}=i(),o=a();e&&o!==t&&(n.expandToSize=o,s(t))},expand:()=>{let{collapsible:e,collapsedSize:t,minSize:n}=r(),{mutableValues:o}=i(),c=a();if(e&&c===t){let e=o.expandToSize??n;e===0&&(e=1),s(e)}},getSize:()=>{let{axis:e}=n(),r=a(),{element:o}=i();return{asPercentage:r,inPixels:e.layoutStrategy?e.layoutStrategy.getItemSizeInPixels(t):e.orientation===`horizontal`?o.offsetWidth:o.offsetHeight}},isCollapsed:()=>{let{collapsible:e,collapsedSize:t}=r(),n=a();return e&&Y(t,n)},resize:e=>{let{axis:t}=n(),{element:r}=i(),a=H({axis:t});s(W(U({axisSize:a,itemElement:r,styleProp:e})/a*100))}}}function Kn(e){e.defaultPrevented||Wn(e,q(),e.currentTarget).forEach(t=>{if(t.separator&&!t.separator.disableDoubleClick){let n=t.items.find(e=>e.constraintProps.defaultSize!==void 0);if(n){let r=n.constraintProps.defaultSize,i=Gn({axisId:t.axis.id,itemId:n.id});i&&r!==void 0&&(i.resize(r),e.preventDefault())}}})}function qn(e){let t=q();for(let[n]of t)if(n.separators.some(t=>t.element===e))return n;throw Error(`Could not find parent Group for separator element`)}function Jn({axisId:e}){let t=()=>{let t=q();for(let[n,r]of t)if(n.id===e)return{axis:n,...r};throw Error(`Could not find Group with id "${e}"`)};return{getLayout(){let{defaultLayoutDeferred:e,layout:n}=t();return e?{}:n},setLayout(e){let{defaultLayoutDeferred:n,derivedItemConstraints:r,axis:i,axisSize:a,layout:o,separatorToItems:s}=t(),c=Q({layout:e,itemConstraints:r});return n?o:(Z(o,c)||J(i,{defaultLayoutDeferred:n,derivedItemConstraints:r,axisSize:a,layout:c,requestedAxisSize:a,requestedLayout:c,separatorToItems:s}),c)}}}function $(e,t){let n=qn(e),r=K(n.id,!0),i=n.separators.find(t=>t.element===e);L(i,`Matching separator not found`);let a=r.separatorToItems.get(i);L(a,`Matching panels not found`);let o=a.map(e=>n.items.indexOf(e)),s=Jn({axisId:n.id}).getLayout(),c=Q({layout:En({delta:t,initialLayout:s,itemConstraints:r.derivedItemConstraints,pivotIndices:o,prevLayout:s,trigger:`keyboard`}),itemConstraints:r.derivedItemConstraints});Z(s,c)||J(n,{defaultLayoutDeferred:r.defaultLayoutDeferred,derivedItemConstraints:r.derivedItemConstraints,axisSize:r.axisSize,layout:c,requestedAxisSize:r.axisSize,requestedLayout:c,separatorToItems:r.separatorToItems},{isUserInteraction:!0})}function Yn(e){if(e.defaultPrevented)return;let t=e.currentTarget,n=qn(t);if(!(n.disabled||n.separators.find(e=>e.element===t)?.disabled))switch(e.key){case`ArrowDown`:e.preventDefault(),n.orientation===`vertical`&&$(t,5);break;case`ArrowLeft`:e.preventDefault(),n.orientation===`horizontal`&&$(t,-5);break;case`ArrowRight`:e.preventDefault(),n.orientation===`horizontal`&&$(t,5);break;case`ArrowUp`:e.preventDefault(),n.orientation===`vertical`&&$(t,-5);break;case`End`:e.preventDefault(),$(t,100);break;case`Enter`:{e.preventDefault();let{derivedItemConstraints:r,layout:i,separatorToItems:a}=K(n.id,!0),o=n.separators.find(e=>e.element===t);L(o,`Matching separator not found`);let s=a.get(o);L(s,`Matching panels not found`);let c=s[0],l=r.find(e=>e.itemId===c.id);if(L(l,`Panel metadata not found`),l.collapsible){let e=i[c.id];$(t,(l.collapsedSize===e?n.mutableState.expandedItemSizes[c.id]??l.minSize:l.collapsedSize)-e)}break}case`F6`:{e.preventDefault();let t=n.separators.map(e=>e.element),r=Array.from(t).findIndex(t=>t===e.currentTarget);L(r!==null,`Index not found`),t[e.shiftKey?r>0?r-1:t.length-1:r+1<t.length?r+1:0].focus({preventScroll:!0});break}case`Home`:e.preventDefault(),$(t,-100);break}}function Xn(e,t){let n=B();if(n.state!==`active`||!Cn(n,e,t))return!1;let r=q();gn();try{n.previewLayoutMap.forEach((e,t)=>{let n=r.get(t);t.resizePreviewMode===`separator`&&n&&!Z(e,n.layout)&&J(t,{...n,layout:e,requestedAxisSize:n.axisSize,requestedLayout:e})}),_n(),V({cursorFlags:0,state:`inactive`}),n.hitRegions.forEach(e=>{if(!r.has(e.axis))return;let t=K(e.axis.id,!0);J(e.axis,t,{isUserInteraction:!0})})}finally{vn()}return!0}function Zn(e){let t=B();if(t.state!==`active`)return;let n=t.hitRegions.flatMap(({separator:e})=>e?[e.element]:[]);!n.some(t=>t===e.target)||n.some(t=>t.hasPointerCapture?.(e.pointerId))||Xn(e.currentTarget,e)}function Qn(e){Xn(e.currentTarget,e)}function $n(e,t){let{element:n,orientation:r,items:i}=e,a=n.getBoundingClientRect(),o=r===`horizontal`;return on({expandHitTargets:!1,axis:e,includeDisabled:!0}).map(({items:r,rect:s,separator:c},l)=>{let u=i.indexOf(r[0]),d=o?s.left+s.width/2:s.top+s.height/2;return{active:t.some(t=>t.axis!==e||t.items[0]!==r[0]?!1:c||t.separator?t.separator===c:Y(d,o?t.rect.left+t.rect.width/2:t.rect.top+t.rect.height/2)),axis:e,key:c?`separator-${c.id}`:`panel-${r[0].id}-${l}`,offset:0,itemIndex:u,rect:new DOMRect((o&&!c?d:s.left)-a.left-n.clientLeft+n.scrollLeft,(!o&&!c?d:s.top)-a.top-n.clientTop+n.scrollTop,o&&!c?0:s.width,!o&&!c?0:s.height),separator:c}})}function er(e){if(e.defaultPrevented||e.pointerType===`mouse`&&e.button>0)return;let t=B();if(t.state===`active`){Sn(t,e)&&Xn(t.ownerDocument,t);return}let n=q(),r=Wn(e,n,e.currentTarget);if(r.length===0)return;let i=new Map,a=!1;r.forEach(e=>{e.separator&&(a||(a=!0,e.separator.element.focus({focusVisible:!1,preventScroll:!0})));let t=n.get(e.axis);t&&i.set(e.axis,t.layout)});let o=Array.from(i.keys()).flatMap(e=>e.resizePreviewMode===`separator`?$n(e,r):[]);V({cursorFlags:0,didPointerMove:!1,hitRegions:r,initialLayoutMap:i,ownerDocument:e.currentTarget,pointerDownAtPoint:{x:e.clientX,y:e.clientY},pointerId:e.pointerId,pointerType:e.pointerType,previewLayoutMap:new Map(i),previews:o,state:`active`}),e.preventDefault()}function tr(e){let t=e.currentTarget,n=q(),r=B();switch(r.state){case`active`:if(!Cn(r,t,e))return;Dn({commit:!1,event:e,hitRegions:r.hitRegions,initialLayoutMap:r.initialLayoutMap,mountedAxes:n,prevCursorFlags:r.cursorFlags})}}function nr(e){if(e.defaultPrevented)return;let t=e.currentTarget,n=B(),r=q();switch(n.state){case`active`:if(!Cn(n,t,e))return;if(e.buttons===0){Xn(t,e);return}for(let t of n.hitRegions)if(t.separator){let{element:n}=t.separator;n.isConnected&&!n.hasPointerCapture?.(e.pointerId)&&n.setPointerCapture?.(e.pointerId)}Dn({commit:!1,event:e,hitRegions:n.hitRegions,initialLayoutMap:n.initialLayoutMap,mountedAxes:r,pointerDownAtPoint:n.pointerDownAtPoint,prevCursorFlags:n.cursorFlags});break;default:{let i=Wn(e,r,t);i.length===0?n.state!==`inactive`&&V({cursorFlags:0,state:`inactive`}):V({cursorFlags:0,hitRegions:i,ownerDocument:t,state:`hover`});break}}}function rr(e){if(e.relatedTarget instanceof HTMLIFrameElement){let t=B();switch(t.state){case`hover`:t.ownerDocument===e.currentTarget&&V({cursorFlags:0,state:`inactive`})}}}function ir(e){e.defaultPrevented||e.pointerType===`mouse`&&e.button>0||kn(e.currentTarget,e)}function ar(e){e.target===e.currentTarget&&Xn(e.currentTarget.document)}function or(e){Xn(e.currentTarget.document)}function sr(e){let t=0,n=0,r={};for(let i of e)if(i.defaultSize!==void 0){t++;let e=W(i.defaultSize);n+=e,r[i.itemId]=e}else r[i.itemId]=void 0;let i=e.length-t;if(i!==0){let t=W((100-n)/i);for(let n of e)n.defaultSize===void 0&&(r[n.itemId]=t)}return r}function cr(e,t){let n=e.map(e=>e.id),r=Object.keys(t);if(n.length!==r.length)return!1;for(let e of n)if(!r.includes(e))return!1;return!0}function lr({axis:e,itemConstraints:t}){let n=e.items.map(({id:e})=>e).join(`,`),r=e.mutableState.defaultLayout;return e.mutableState.layouts[n]??(r&&cr(e.items,r)?r:sr(t))}function ur({itemIds:e,layout:t}){return Q({layout:t,itemConstraints:e.map(e=>({collapsedSize:0,collapsible:!1,defaultSize:void 0,disabled:void 0,itemId:e,maxSize:100,minSize:0}))})}function dr(e,t,n){if(!n[0])return;let r=e.items.find(e=>e.element===t);if(!r||!r.onResize)return;let i=H({axis:e}),a=e.orientation===`horizontal`?r.element.offsetWidth:r.element.offsetHeight,o=r.mutableValues.prevSize,s={asPercentage:W(a/i*100),inPixels:a};r.mutableValues.prevSize=s,r.onResize(s,r.id,o)}function fr(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function pr(e,t){return e.length===t.length?e.every((e,n)=>fr(e,t[n])):!1}function mr({axis:e,nextAxisSize:t,prevAxisSize:n,prevLayout:r}){if(n<=0||t<=0||n===t)return r;let i=0,a=0,o=!1,s=new Map,c=[];for(let l of e.items){let e=r[l.id]??0;switch(l.constraintProps.groupResizeBehavior){case`preserve-pixel-size`:{o=!0;let r=W(e/100*n/t*100);s.set(l.id,r),i+=r;break}default:c.push(l.id),a+=e;break}}if(!o||c.length===0)return r;let l=100-i,u={...r};if(s.forEach((e,t)=>{u[t]=e}),a>0)for(let e of c)u[e]=W((r[e]??0)/a*l);else{let e=W(l/c.length);for(let t of c)u[t]=e}return u}var hr=new Map,gr=!1;function _r(e){let t=!0;L(e.element.ownerDocument.defaultView,`Cannot register an unmounted Group`);let n=e.element.ownerDocument.defaultView.ResizeObserver,r=new Set,i=new Set,a=new n(n=>{let r;gn();try{for(let i of n){let{borderBoxSize:n,target:a}=i;if(a===e.element){if(t){let t=H({axis:e});if(t===0)break;let n=K(e.id);if(!n)break;let r=dn(e),i=n.requestedAxisSize,a=n.requestedLayout;n.defaultLayoutDeferred&&(i=t,a=ur({itemIds:e.items.map(({id:e})=>e),layout:lr({axis:e,itemConstraints:r})}));let o=Q({layout:mr({axis:e,nextAxisSize:t,prevAxisSize:i,prevLayout:a}),itemConstraints:r});if(!n.defaultLayoutDeferred&&Z(n.layout,o)&&pr(n.derivedItemConstraints,r)&&n.axisSize===t)continue;J(e,{defaultLayoutDeferred:!1,derivedItemConstraints:r,axisSize:t,layout:o,requestedAxisSize:i,requestedLayout:a,separatorToItems:n.separatorToItems})}}else try{dr(e,a,n)}catch(e){r??={error:e}}}}finally{vn()}if(r)throw r.error});a.observe(e.element),e.items.forEach(e=>{L(!r.has(e.id),`Panel ids must be unique; id "${e.id}" was used more than once`),r.add(e.id),e.onResize&&a.observe(e.element)});let o=H({axis:e}),s=dn(e),c=lr({axis:e,itemConstraints:s}),l=Q({layout:c,itemConstraints:s}),u=e.element.ownerDocument,d=u.defaultView;hr.set(u,(hr.get(u)??0)+1);let f=new Map;return on({axis:e,includeDisabled:!0}).forEach(e=>{e.separator&&f.set(e.separator,e.items)}),J(e,{defaultLayoutDeferred:o===0,derivedItemConstraints:s,axisSize:o,layout:l,requestedAxisSize:o,requestedLayout:ur({itemIds:e.items.map(({id:e})=>e),layout:c}),separatorToItems:f}),e.separators.forEach(e=>{L(!i.has(e.id),`Separator ids must be unique; id "${e.id}" was used more than once`),i.add(e.id),e.element.addEventListener(`keydown`,Yn)}),gr||(gr=!0,Nt(Zt)),hr.get(u)===1&&(u.addEventListener(`contextmenu`,An,!0),u.addEventListener(`dblclick`,Kn,!0),u.addEventListener(`lostpointercapture`,Zn,!0),u.addEventListener(`pointercancel`,Qn,!0),u.addEventListener(`pointerdown`,er,!0),u.addEventListener(`pointerleave`,tr),u.addEventListener(`pointermove`,nr),u.addEventListener(`pointerout`,rr),u.addEventListener(`pointerup`,ir,!0),d?.addEventListener(`blur`,ar),d?.addEventListener(`pagehide`,or)),function(){t=!1,hr.set(u,Math.max(0,(hr.get(u)??0)-1)),yn(e),It(e),e.separators.forEach(e=>{e.element.removeEventListener(`keydown`,Yn)}),hr.get(u)||(u.removeEventListener(`contextmenu`,An,!0),u.removeEventListener(`dblclick`,Kn,!0),u.removeEventListener(`lostpointercapture`,Zn,!0),u.removeEventListener(`pointercancel`,Qn,!0),u.removeEventListener(`pointerdown`,er,!0),u.removeEventListener(`pointerleave`,tr),u.removeEventListener(`pointermove`,nr),u.removeEventListener(`pointerout`,rr),u.removeEventListener(`pointerup`,ir,!0),d?.removeEventListener(`blur`,ar),d?.removeEventListener(`pagehide`,or)),a.disconnect()}}function vr({derivedItemConstraints:e,axis:t,layout:n,prevLayout:r,requestedLayout:i}){let a=t.items.map(({id:e})=>e).join(`,`);t.mutableState.layouts[a]=i,r&&e.forEach(e=>{if(e.collapsible){let i=Y(e.collapsedSize,n[e.itemId]),a=Y(e.collapsedSize,r[e.itemId]);i&&!a&&(t.mutableState.expandedItemSizes[e.itemId]=r[e.itemId])}})}function yr(){let[e,t]=(0,N.useState)({});return[e,(0,N.useCallback)(()=>t({}),[])]}function br(e){let t=(0,N.useRef)({...e});return F(()=>{for(let n in e)t.current[n]=e[n]},[e]),t.current}var xr=(0,N.createContext)(null);function Sr({layout:e,itemConstraints:t,itemId:n,itemIndex:r}){let i,a,o=e[n],s=t.find(e=>e.itemId===n);if(s){let c=s.maxSize,l=s.collapsible?s.collapsedSize:s.minSize,u=[r,r+1];a=Q({layout:En({delta:l-o,initialLayout:e,itemConstraints:t,pivotIndices:u,prevLayout:e}),itemConstraints:t})[n],i=Q({layout:En({delta:c-o,initialLayout:e,itemConstraints:t,pivotIndices:u,prevLayout:e}),itemConstraints:t})[n]}return{valueControls:n,valueMax:i,valueMin:a,valueNow:o}}function Cr({attributes:e,axisId:t,axisOrientation:n,children:r,className:i,"data-testid":a,disableCursor:o,disabled:s,disableDoubleClick:c,elementRef:l,id:u,isSharedHitRegion:d,preview:f,registerSeparator:p,requiredStyle:m,style:h,styleDefaults:g,tabIndex:_=0,updateSeparatorProps:v}){let y=br({disabled:s,disableDoubleClick:c,children:r,className:i,preview:f,style:h}),[b,x]=(0,N.useState)({}),[S,C]=(0,N.useState)(`inactive`),[w,T]=(0,N.useState)(!1),E=(0,N.useRef)(null),D=(0,N.useRef)(null),O=pt(E,l),k=n===`horizontal`?`vertical`:`horizontal`;F(()=>{let e=E.current;if(e!==null){let n={disabled:y.disabled,disableDoubleClick:y.disableDoubleClick,element:e,id:u,get children(){return y.children},get className(){return y.className},get preview(){return y.preview},get style(){return y.style}};D.current=n;let r=p(n),i=Nt(e=>{C(e.next.state!==`inactive`&&e.next.hitRegions.some(e=>e.separator===n||(d?.(e)??!1))?e.next.state:`inactive`)}),a=xn(t,e=>{let{derivedItemConstraints:t,layout:r,separatorToItems:i}=e.next,a=i.get(n);if(a){let n=a[0],i=t.findIndex(e=>e.itemId===n.id),{layoutStrategy:o}=e.axis;x({...Sr({layout:r,itemConstraints:t,itemId:n.id,itemIndex:i}),...o?.getItemAriaControls&&{valueControls:o.getItemAriaControls(n.id)}})}});return()=>{D.current=null,i(),a(),r()}}},[t,u,d,p,y]),F(()=>{let e=D.current;e&&Ft(e)},[f]),(0,N.useEffect)(()=>{v(u,{disabled:s,disableDoubleClick:c})},[s,c,u,v]);let A;s&&!o&&(A=`not-allowed`);let j;if(s)j=`disabled`;else switch(S){case`active`:j=`active`;break;default:j=w?`focus`:S}return(0,P.jsx)(`div`,{...e,"aria-controls":b.valueControls,"aria-disabled":s||void 0,"aria-orientation":k,"aria-valuemax":b.valueMax,"aria-valuemin":b.valueMin,"aria-valuenow":b.valueNow,children:r,className:i,"data-separator":j,"data-testid":a,id:u,onBlur:()=>T(!1),onFocus:()=>T(!0),ref:O,role:`separator`,style:{...g,cursor:A,...h,...m,touchAction:`none`},tabIndex:s?void 0:_})}function wr({axis:e,children:t,className:n,crossSpan:r,crossStart:i,disabled:a,elementRef:o,index:s,style:c}){let l=ft(void 0),{getDisableCursor:u,getResizeAxisId:d,gutters:f,registerSeparator:p,separatorPlacements:m,trackCounts:h,updateSeparatorProps:g}=St(),_=d(e),v=e===`column`?`row`:`column`,y=h[v],b=!!a||!bt(s,h[e]),x=!0;for(let t of m.values())if(t.axis===e&&t.index===s&&!t.disabled&&t.crossStart<i){x=!1;break}let S=(0,N.useCallback)(e=>e.axis.id===_&&e.axis.items.indexOf(e.items[1])===s,[_,s]),C=(0,N.useCallback)(t=>p({axis:e,crossSpan:r,crossStart:i,disabled:!!a,index:s},t),[e,r,i,a,s,p]),w=vt(s),T=yt({crossCount:y,crossSpan:r,crossStart:i,hasGutters:f[v]});return(0,P.jsx)(Cr,{axisId:_,axisOrientation:e===`column`?`horizontal`:`vertical`,className:n,disableCursor:u(),disabled:b,disableDoubleClick:void 0,elementRef:o,id:l,isSharedHitRegion:S,registerSeparator:C,requiredStyle:{gridColumn:e===`column`?w:T,gridRow:e===`row`?w:T},style:c,tabIndex:x?0:-1,updateSeparatorProps:g,children:t})}function Tr(e){let{children:t,className:n,disabled:r,elementRef:i,style:a}=e;return e.type===`column`?(0,P.jsx)(wr,{axis:`column`,className:n,crossSpan:e.rowSpan,crossStart:e.row??0,disabled:r,elementRef:i,index:e.column,style:a,children:t}):(0,P.jsx)(wr,{axis:`row`,className:n,crossSpan:e.columnSpan,crossStart:e.column??0,disabled:r,elementRef:i,index:e.row,style:a,children:t})}Tr.displayName=`Gridline`;var Er=[`column`,`row`],Dr={columns:{},rows:{}};function Or({children:e,className:t,columns:n,defaultLayout:r,disableCursor:i,disabled:a,elementRef:o,gridRef:s,id:c,onLayoutChange:l,onLayoutChanged:u,resizeTargetMinimumSize:d={coarse:20,fine:10},rows:f,style:p,...m}){let h=ft(c),g=(0,N.useCallback)(e=>e===`column`?`${h}:columns`:`${h}:rows`,[h]),_=kr(n,`columns`),v=kr(f,`rows`),y=e=>e===`column`?_:v,b=(0,N.useRef)({onLayoutChange:Dr,onLayoutChanged:Dr}),x=I(e=>{Nr(b.current.onLayoutChange,e)||(b.current.onLayoutChange=e,l?.(e))}),S=I((e,t,n)=>{Nr(b.current.onLayoutChanged,e)||(b.current.onLayoutChanged=e,u?.(e,{isUserInteraction:t,requestedLayout:n}))}),C=(0,N.useRef)(null),w=pt(C,o),[T,E]=yr(),D=(0,N.useRef)({cells:[],column:{expandedItemSizes:{},layouts:{}},loggedErrors:new Set,row:{expandedItemSizes:{},layouts:{}},separators:new Map}),O={column:!1,row:!1};for(let e of D.current.separators.values())O[e.axis]=!0;Ar(e,O);let k=br({defaultLayout:r,disableCursor:i,resizeTargetMinimumSize:d}),A=I(()=>!!k.disableCursor),j=(0,N.useCallback)(e=>{let t=D.current;return t.cells=[...t.cells,e],E(),()=>{t.cells=t.cells.filter(t=>t!==e),E()}},[E]),M=(0,N.useCallback)((e,t)=>{let n=D.current;return n.separators=new Map(n.separators),n.separators.set(t,e),E(),()=>{n.separators=new Map(n.separators),n.separators.delete(t),E()}},[E]),ee=(0,N.useCallback)((e,{disabled:t,disableDoubleClick:n})=>{for(let r of D.current.separators.keys())r.id===e&&(r.disabled=t,r.disableDoubleClick=n)},[]),te=D.current.separators,ne=(0,N.useMemo)(()=>({getDisableCursor:A,getResizeAxisId:g,gutters:{column:O.column,row:O.row},id:h,registerCell:j,registerSeparator:M,separatorPlacements:te,trackCounts:{column:_.length,row:v.length},updateSeparatorProps:ee}),[_.length,A,g,O.column,O.row,h,j,M,v.length,te,ee]),re=(0,N.useRef)([]);F(()=>{let e=C.current;if(e===null)return;let t=D.current,n=Mr({cells:t.cells,separatorPlacements:t.separators,trackCounts:{column:_.length,row:v.length}});n.forEach(e=>{t.loggedErrors.has(e)||console.error(e)}),t.loggedErrors=new Set(n);let r=e=>Array.from(t.separators.entries()).filter(([,t])=>t.axis===e).sort(([,e],[,t])=>e.index-t.index).map(([e])=>e),i=Er.map(n=>{let i=n===`column`?_:v,o=n===`column`?v:_,s=i.map(e=>e.id),c=g(n),l=r(n),u=l.length>0,d=i.map(({id:t,...n},r)=>({element:e,id:s[r],idIsStable:!0,mutableValues:{expandToSize:void 0,prevSize:void 0},onResize:void 0,constraintProps:n})),f=()=>{let r=[];if(u){for(let[e,a]of t.separators)if(a.axis===n&&bt(a.index,i.length)){let t=e.element.getBoundingClientRect();r[a.index]=Math.max(r[a.index]??0,n===`column`?t.width:t.height)}}return kt({axis:n,element:e,gutterSizes:r.filter(e=>e!==void 0),hasGutters:u,layout:K(c)?.layout,trackIds:s})},p,m=k.defaultLayout?.[n===`column`?`columns`:`rows`];if(m!==void 0&&Object.keys(m).length===s.length){p={};for(let e of s){let t=m[e];t!==void 0&&(p[e]=t)}}return{disabled:!!a,element:e,id:c,layoutStrategy:{getItemAriaControls:e=>{let r=s.indexOf(e);return t.cells.filter(e=>{let t=n===`column`?e.column:e.row,i=n===`column`?e.columnSpan:e.rowSpan;return t<=r&&r<t+i}).map(e=>e.element.id).filter(Boolean).join(` `)||void 0},calculateAvailableSize:()=>f().availableSize,calculateHitRegions:({expandHitTargets:e,axis:r,includeDisabled:i})=>Ot({axis:n,cells:t.cells,crossTrackCount:o.length,expandHitTargets:e,resizeAxis:r,axisSize:f().availableSize,includeDisabled:i,separatorPlacements:t.separators}),getItemSizeInPixels:e=>f().trackSizes[s.indexOf(e)]??0},mutableState:{defaultLayout:p,disableCursor:!!k.disableCursor,expandedItemSizes:t[n].expandedItemSizes,layouts:t[n].layouts},orientation:n===`column`?`horizontal`:`vertical`,items:d,resizePreviewMode:`panel`,get resizeTargetMinimumSize(){return k.resizeTargetMinimumSize},separators:l}});re.current=i;let o=i.map(e=>_r(e)),s=()=>{let[e,t]=i.map(e=>K(e.id));if(!(!e||!t||e.defaultLayoutDeferred||t.defaultLayoutDeferred))return{layout:{columns:e.layout,rows:t.layout},requestedLayout:{columns:e.requestedLayout,rows:t.requestedLayout}}};{let e=s();if(e)try{try{x(e.layout)}finally{S(e.layout,!1,e.requestedLayout)}}catch(e){throw re.current=[],o.forEach(e=>e()),e}}let c=i.map(e=>xn(e.id,t=>{let{defaultLayoutDeferred:n,derivedItemConstraints:r,layout:a,requestedLayout:o}=t.next;if(n||r.length===0)return;vr({derivedItemConstraints:r,axis:e,layout:a,prevLayout:t.prev?.layout,requestedLayout:o});let c=s();if(c){let e=B(),n=e.state!==`active`||!e.hitRegions.some(e=>i.includes(e.axis));try{x(c.layout)}finally{n&&S(c.layout,t.isUserInteraction,c.requestedLayout)}}}));return()=>{re.current=[],o.forEach(e=>e()),c.forEach(e=>e())}},[_,a,g,h,S,x,v,T,k]),(0,N.useEffect)(()=>{re.current.forEach(e=>{e.mutableState.defaultLayout=r?.[e.orientation===`horizontal`?`columns`:`rows`],e.mutableState.disableCursor=!!i})}),(0,N.useImperativeHandle)(s,()=>{let e=()=>{let[e,t]=Er.map(g);return!bn(e)||!bn(t)?{columns:{},rows:{}}:{columns:Jn({axisId:e}).getLayout(),rows:Jn({axisId:t}).getLayout()}},t=e=>e.map(e=>`"${e}"`).join(`, `),n=(e,n)=>{let r=g(e),i=()=>{let i=bn(r);return L(i,`Grid "${h}" has not been mounted`),L(i.items.some(e=>e.id===n),`Grid "${h}" no longer contains a ${e} with id "${n}"; ${e} ids are ${t(i.items.map(e=>e.id))}`),Gn({axisId:r,itemId:n})};return{collapse:()=>i().collapse(),expand:()=>i().expand(),getSize:()=>i().getSize(),isCollapsed:()=>i().isCollapsed(),resize:e=>i().resize(e)}};return{getLayout:e,getTrackById:(e,r)=>{let i=e===`column`?_:v,a=`${r}`;return L(i.some(e=>e.id===a),`Grid "${h}" does not contain a ${e} with id "${a}"; ${e} ids are ${t(i.map(e=>e.id))}`),n(e,a)},getTrackByIndex:(e,t)=>{let r=e===`column`?_:v,i=Number.isInteger(t)?r[t]:void 0;return L(i,`Grid "${h}" does not contain a ${e} at index ${t}; it has ${r.length} ${e}s`),n(e,i.id)},setLayout:t=>(Er.forEach(e=>{let n=t[e===`column`?`columns`:`rows`],r=g(e);n&&bn(r)&&Jn({axisId:r}).setLayout(n)}),e())}},[_,g,h,v]);let ie=()=>Er.map(e=>{let t=K(g(e)),n=y(e);return(t&&!t.defaultLayoutDeferred?n.map(e=>`minmax(0, ${t.layout[e.id]??1}fr)`):jr(n,r?.[e===`column`?`columns`:`rows`])).join(O[e]?` auto `:` `)}).join(`|`),[ae,oe]=(0,N.useSyncExternalStore)((0,N.useCallback)(e=>{let t=Er.map(t=>xn(g(t),e));return()=>t.forEach(e=>e())},[g]),ie,ie).split(`|`);return(0,P.jsx)(xt.Provider,{value:ne,children:(0,P.jsx)(`div`,{...m,className:t,"data-grid":!0,"data-testid":mt(m,c),id:h,ref:w,style:{height:`100%`,width:`100%`,overflow:`hidden`,...p,display:`grid`,gridTemplateColumns:ae,gridTemplateRows:oe,touchAction:`none`},children:(0,P.jsx)(xr.Provider,{value:null,children:e})})})}Or.displayName=`Grid`;function kr(e,t){let n=JSON.stringify(e);return(0,N.useMemo)(()=>{let r=typeof e==`number`?Array.from({length:e},(e,t)=>({id:`${t}`})):e.map((e,t)=>({...e,id:`${e.id??t}`}));return L(r.length>0,`Grid must have at least one track; "${t}" is ${n}`),r},[n])}function Ar(e,t){N.Children.forEach(e,e=>{if((0,N.isValidElement)(e))if(e.type===Tr){let{type:n}=e.props;n===`column`?t.column=!0:n===`row`&&(t.row=!0)}else typeof e.type==`symbol`&&e.props!==null&&typeof e.props==`object`&&`children`in e.props&&Ar(e.props.children,t)})}function jr(e,t){if(t)return e.map(e=>`minmax(0, ${t[e.id]??1}fr)`);let n=e.map(e=>e.defaultSize===void 0?void 0:At(e.defaultSize)),r=100,i=0;return n.forEach(e=>{e===void 0?i++:e[1]===`%`&&(r-=e[0])}),n.map(e=>{if(e===void 0)return`minmax(0, ${Math.max(0,r)/Math.max(1,i)}fr)`;let[t,n]=e;return n===`%`?`minmax(0, ${t}fr)`:`${t}${n}`})}function Mr({cells:e,separatorPlacements:t,trackCounts:n}){let r=[];for(let t of e)Er.forEach(e=>{let[i,a]=e===`column`?[t.column,t.columnSpan]:[t.row,t.rowSpan],o=n[e];(!Number.isInteger(i)||!Number.isInteger(a)||i<0||a<1||i+a>o)&&r.push(`Invalid Cell ${e} placement (${e}: ${i}, ${e}Span: ${a}); Grid has ${o} ${e}s`)});let i=({axis:e,crossSpan:t,crossStart:n,disabled:r,index:i})=>{let a=e===`column`?`row`:`column`,o=`type="${e}" ${e}={${i}}`;return(n!==0||t!==void 0)&&(o+=` ${a}={${n}}`),t!==void 0&&(o+=` ${a}Span={${t}}`),r&&(o+=` disabled`),`<Gridline ${o} />`},a=Array.from(t.values()).filter(e=>{let{axis:t,crossSpan:i,crossStart:a,index:o}=e,s=t===`column`?`row`:`column`,c=n[t],l=n[s],u=!0;return bt(o,c)||(r.push(`Invalid ${t} Gridline ${t} (${o}); must be between 1 and ${c-1}`),u=!1),!Number.isInteger(a)||a<0||a>=l?(r.push(`Invalid ${t} Gridline ${s} (${a}); must be between 0 and ${l-1}`),u=!1):i!==void 0&&(!Number.isInteger(i)||i<1||a+i>l)&&(r.push(`Invalid ${t} Gridline ${s}Span (${i}); Grid has ${l} ${s}s`),u=!1),u}),o=e=>{let t=n[e.axis===`column`?`row`:`column`];return[e.crossStart,e.crossSpan===void 0?t:e.crossStart+e.crossSpan]};return a.forEach((t,n)=>{let{axis:s,index:c}=t,[l,u]=o(t);for(let n of e){let[e,a,o,d]=s===`column`?[n.column,n.columnSpan,n.row,n.rowSpan]:[n.row,n.rowSpan,n.column,n.columnSpan];if(e<c&&c<e+a&&o<u&&l<o+d){let n=s===`column`?`row`:`column`;r.push(`${i(t)} overlaps a Cell that spans across it (${s}: ${e}, ${s}Span: ${a}, ${n}: ${o}, ${n}Span: ${d}); use the ${n} and ${n}Span props to render gridlines beside the Cell instead`)}}for(let e of a.slice(n+1))if(e.axis===s&&e.index===c){let[n,a]=o(e);n<u&&l<a&&r.push(`${i(t)} overlaps ${i(e)}`)}}),r}function Nr(e,t){return Z(e.columns,t.columns)&&Z(e.rows,t.rows)}function Pr(e){for(let t=1;t<e.length;t++)if(Qt(e[t-1],e[t])>0)return!1;return!0}function Fr({separator:e}){let{element:t}=e,n=(0,N.useRef)(null);return F(()=>{let e=t.cloneNode(!0),r=[t,...t.querySelectorAll(`*`)],i=[e,...e.querySelectorAll(`*`)],a=t.ownerDocument.defaultView;return r.forEach((e,t)=>{let n=i[t];if(n instanceof a.HTMLElement||n instanceof a.SVGElement){let t=a.getComputedStyle(e);for(let e=0;e<t.length;e++){let r=t.item(e);n.style.setProperty(r,t.getPropertyValue(r))}}n.removeAttribute(`data-testid`),n.removeAttribute(`id`)}),Object.assign(e.style,{boxSizing:`border-box`,height:`100%`,margin:`0`,position:`static`,transform:`none`,width:`100%`}),n.current.appendChild(e),()=>e.remove()},[t]),(0,P.jsx)(`div`,{ref:n,style:{height:`100%`,opacity:.65,pointerEvents:`none`,width:`100%`}})}function Ir(){let e=(0,N.useContext)(xr);return L(e,`Group Context not found; did you render a Panel or Separator outside of a Group?`),e}function Lr(e){let{registerOverlay:t}=Ir(),n=(0,N.useRef)(e);fr(n.current,e)||(n.current=e);let r=n.current;return F(()=>t(r),[t,r]),null}Lr.displayName=`SeparatorOverlay`;function Rr({active:e,orientation:t,style:n,...r}){let i;switch(t){case`horizontal`:i={height:`100%`,minWidth:`1px`};break;case`vertical`:i={minHeight:`1px`,width:`100%`};break}return(0,P.jsx)(`div`,{...r,"data-separator-overlay":e?`active`:`inactive`,style:{...i,...n,flexShrink:0,pointerEvents:`none`}})}function zr({overlay:e,preview:t}){let{axis:n,offset:r,rect:i,separator:a}=t,o=n.orientation===`horizontal`,s=a?.preview,c=e;return(0,N.isValidElement)(s)&&s.type===Lr&&(c=s.props,s=void 0),s??(c?s=(0,P.jsx)(Rr,{...c,active:t.active,orientation:n.orientation}):a&&(s=(0,P.jsx)(Fr,{separator:a}))),(0,P.jsx)(`div`,{"aria-hidden":`true`,"data-resize-preview":!0,inert:!0,style:{height:i.height,left:i.left,pointerEvents:`none`,position:`absolute`,top:i.top,transform:o?`translateX(${r}px)`:`translateY(${r}px)`,width:i.width},children:s})}function Br(e){return Array.from(e).sort(Qt)}function Vr(e,t){let n=(0,N.useRef)({getLayout:()=>({}),setLayout:Lt});(0,N.useImperativeHandle)(t,()=>n.current,[]),F(()=>{Object.assign(n.current,Jn({axisId:e}))})}function Hr({groupId:e,resizePreviewMode:t}){let[n,r]=(0,N.useState)([]),i=(0,N.useRef)(n);return F(()=>{let n=n=>{let a=bn(e),o=t===`separator`&&n.state===`active`?n.previews.filter(e=>e.axis===a&&(e.active||!Y(e.offset,0))):[],s=i.current;s.length===o.length&&o.every((e,t)=>e===s[t])||(i.current=o,r(o))};if(t!==`separator`){n(B());return}let a=Nt(({next:e})=>n(e));return n(B()),a},[e,t]),n}function Ur({children:e,className:t,defaultLayout:n,disableCursor:r,disabled:i,elementRef:a,groupRef:o,id:s,onLayoutChange:c,onLayoutChanged:l,orientation:u=`horizontal`,resizePreviewMode:d=`panel`,resizeTargetMinimumSize:f={coarse:20,fine:10},style:p,...m}){let h=(0,N.useRef)({onLayoutChange:{},onLayoutChanged:{}}),g=I(e=>{Z(h.current.onLayoutChange,e)||(h.current.onLayoutChange=e,c?.(e))}),_=I((e,t,n)=>{Z(h.current.onLayoutChanged,e)||(h.current.onLayoutChanged=e,l?.(e,{isUserInteraction:t,requestedLayout:n}))}),v=ft(s),[y,b]=(0,N.useState)(),x=Hr({groupId:v,resizePreviewMode:d}),S=(0,N.useRef)(null),[C,w]=yr(),T=(0,N.useRef)([]),E=(0,N.useRef)({lastExpandedPanelSizes:{},layouts:{},panels:[],separators:[]}),D=pt(S,a);Vr(v,o);let O=I((e,t)=>{let r=K(e);if(r)return{flexGrow:r.layout[t]??1};if(n?.[t])return{flexGrow:n?.[t]}}),k=br({defaultLayout:n,disableCursor:r,resizeTargetMinimumSize:f}),A=(0,N.useMemo)(()=>({get disableCursor(){return!!k.disableCursor},getPanelStyles:O,id:v,orientation:u,registerPanel:e=>{let t=E.current;return t.panels=$t(u,[...t.panels,e]),w(),()=>{t.panels=t.panels.filter(t=>t!==e),w()}},registerOverlay:e=>(b(e),()=>{b(void 0)}),registerSeparator:e=>{let t=E.current;return t.separators=$t(u,[...t.separators,e]),w(),()=>{t.separators=t.separators.filter(t=>t!==e),w()}},updatePanelProps:(e,{disabled:t})=>{let n=E.current.panels.find(t=>t.id===e);n&&(n.constraintProps.disabled=t);let r=bn(v),i=K(v);r&&i&&J(r,{...i,derivedItemConstraints:dn(r)})},updateSeparatorProps:(e,{disabled:t,disableDoubleClick:n})=>{let r=E.current.separators.find(t=>t.id===e);r&&(r.disabled=t,r.disableDoubleClick=n)}}),[O,v,w,u,k]),j=(0,N.useRef)(null);return F(()=>{let e=S.current;if(e===null)return;let t=E.current;t.panels=$t(u,t.panels),t.separators=$t(u,t.separators),T.current=Br([...t.panels.map(({element:e})=>e),...t.separators.map(({element:e})=>e)]);let n;if(k.defaultLayout!==void 0&&Object.keys(k.defaultLayout).length===t.panels.length){n={};for(let e of t.panels){let t=k.defaultLayout[e.id];t!==void 0&&(n[e.id]=t)}}let r={disabled:!!i,element:e,id:v,mutableState:{defaultLayout:n,disableCursor:!!k.disableCursor,expandedItemSizes:E.current.lastExpandedPanelSizes,layouts:E.current.layouts},orientation:u,items:t.panels,resizePreviewMode:d,get resizeTargetMinimumSize(){return k.resizeTargetMinimumSize},separators:t.separators};j.current=r;let a=_r(r),{defaultLayoutDeferred:o,derivedItemConstraints:s,layout:c,requestedLayout:l}=K(r.id,!0);if(!o&&s.length>0)try{try{g(c)}finally{_(c,!1,l)}}catch(e){throw j.current=null,a(),e}let f=xn(v,e=>{let{defaultLayoutDeferred:t,derivedItemConstraints:n,layout:i,requestedLayout:a}=e.next;if(t||n.length===0)return;vr({derivedItemConstraints:n,axis:r,layout:i,prevLayout:e.prev?.layout,requestedLayout:a});let o=B(),s=o.state!==`active`||!o.hitRegions.some(e=>e.axis===r);try{g(i)}finally{s&&_(i,e.isUserInteraction,a)}});return()=>{j.current=null,a(),f()}},[i,v,_,g,u,C,d,k]),F(()=>{Pr(T.current)||w()}),(0,N.useEffect)(()=>{let e=j.current;e&&(e.mutableState.defaultLayout=n,e.mutableState.disableCursor=!!r)}),(0,P.jsx)(xr.Provider,{value:A,children:(0,P.jsxs)(`div`,{...m,className:t,"data-group":!0,"data-testid":mt(m,s),id:v,ref:D,style:{height:`100%`,width:`100%`,overflow:`hidden`,position:d===`separator`?`relative`:void 0,...p,display:`flex`,flexDirection:u===`horizontal`?`row`:`column`,flexWrap:`nowrap`,touchAction:u===`horizontal`?`pan-y`:`pan-x`},children:[e,x.map(e=>(0,P.jsx)(zr,{overlay:y,preview:e},e.key))]})})}Ur.displayName=`Group`;function Wr(e,t){return`react-resizable-panels:${[e,...t].join(`:`)}`}function Gr({id:e,panelIds:t,storage:n}){let r=Wr(e,[]),i=n.getItem(r);if(i)try{let e=JSON.parse(i);if(t){let n=e[t.join(`,`)];if(n&&Array.isArray(n.layout)&&t.length===n.layout.length){let e={};for(let r=0;r<t.length;r++)e[t[r]]=n.layout[r];return e}}else{let t=Object.keys(e);if(t.length===1){let n=e[t[0]];if(n&&Array.isArray(n.layout)){let e=t[0].split(`,`);if(e.length===n.layout.length){let t={};for(let r=0;r<e.length;r++)t[e[r]]=n.layout[r];return t}}}}}catch{}}function Kr({debounceSaveMs:e=100,onlySaveAfterUserInteractions:t,panelIds:n,storage:r=localStorage,...i}){let a=n!==void 0,o=`id`in i?i.id:i.groupId,s=Wr(o,n??[]),c=(0,N.useSyncExternalStore)(qr,()=>r.getItem(s),()=>r.getItem(s)),l=(0,N.useMemo)(()=>{if(c){let e=JSON.parse(c),t=Object.values(e);if(Array.from(t).every(e=>typeof e==`number`))return e}},[c]),u=(0,N.useMemo)(()=>{if(!l)return Gr({id:o,panelIds:n,storage:r})},[l,o,n,r]),d=l??u,f=(0,N.useRef)(null),p=(0,N.useCallback)(()=>{let e=f.current;e&&(f.current=null,clearTimeout(e))},[]);(0,N.useLayoutEffect)(()=>()=>{p()},[p]);let m=(0,N.useCallback)((e,n)=>{if(t&&!n.isUserInteraction)return;p();let i=n.requestedLayout??e,s;s=a?Wr(o,Object.keys(i)):Wr(o,[]);try{r.setItem(s,JSON.stringify(i))}catch(e){console.error(e)}},[p,a,o,t,r]);return{defaultLayout:d,onLayoutChange:(0,N.useCallback)(t=>{p(),e===0?m(t,{isUserInteraction:!1}):f.current=setTimeout(()=>{m(t,{isUserInteraction:!1})},e)},[p,e,m]),onLayoutChanged:m}}function qr(){return function(){}}function Jr(e,t){let{id:n}=Ir(),r=(0,N.useRef)({collapse:Rt,expand:Rt,getSize:()=>({asPercentage:0,inPixels:0}),isCollapsed:()=>!1,resize:Rt});(0,N.useImperativeHandle)(t,()=>r.current,[]),F(()=>{Object.assign(r.current,Gn({axisId:n,itemId:e}))})}function Yr({children:e,className:t,collapsedSize:n=`0%`,collapsedThreshold:r,collapsible:i=!1,defaultSize:a,disabled:o,elementRef:s,groupResizeBehavior:c=`preserve-relative-size`,id:l,maxSize:u=`100%`,minSize:d=`0%`,onResize:f,panelRef:p,style:m,...h}){let g=dt(l),_=ft(l),v=br({disabled:o}),y=(0,N.useRef)(null),b=pt(y,s),{getPanelStyles:x,id:S,orientation:C,registerPanel:w,updatePanelProps:T}=Ir(),E=f!==null,D=I((e,t,n)=>{f?.(e,l,n)});F(()=>{let e=y.current;if(e!==null)return w({element:e,id:_,idIsStable:g,mutableValues:{expandToSize:void 0,prevSize:void 0},onResize:E?D:void 0,constraintProps:{groupResizeBehavior:c,collapsedSize:n,collapsedThreshold:r,collapsible:i,defaultSize:a,disabled:v.disabled,maxSize:u,minSize:d}})},[c,n,r,i,a,E,_,g,u,d,D,w,v]),(0,N.useEffect)(()=>{T(_,{disabled:o})},[o,_,T]),Jr(_,p);let O=()=>{let e=x(S,_);if(e)return JSON.stringify(e)},k=(0,N.useSyncExternalStore)(e=>xn(S,e),O,O),A;return A=k?JSON.parse(k):a===void 0?{flexGrow:1}:{flexGrow:void 0,flexShrink:void 0,flexBasis:a},(0,P.jsx)(`div`,{...h,"data-disabled":o||void 0,"data-panel":!0,"data-testid":mt(h,l),id:_,ref:b,style:{...Xr,display:`flex`,flexBasis:0,flexShrink:1,overflow:`visible`,...A},children:(0,P.jsx)(`div`,{className:t,style:{maxHeight:`100%`,maxWidth:`100%`,flexGrow:1,overflow:`auto`,...m,touchAction:C===`horizontal`?`pan-y`:`pan-x`},children:e})})}Yr.displayName=`Panel`;var Xr={minHeight:0,maxHeight:`100%`,height:`auto`,minWidth:0,maxWidth:`100%`,width:`auto`,border:`none`,borderWidth:0,padding:0,margin:0};function Zr(){return(0,N.useRef)(null)}var Qr={flexBasis:`auto`},$r={flexGrow:0,flexShrink:0};function ei({children:e,className:t,disabled:n,disableDoubleClick:r,elementRef:i,id:a,preview:o,style:s,...c}){let l=ft(a),{disableCursor:u,id:d,orientation:f,registerSeparator:p,updateSeparatorProps:m}=Ir();return(0,P.jsx)(Cr,{attributes:c,axisId:d,axisOrientation:f,className:t,"data-testid":mt(c,a),disableCursor:u,disabled:n,disableDoubleClick:r,elementRef:i,id:l,preview:o,registerSeparator:p,requiredStyle:$r,style:s,styleDefaults:Qr,updateSeparatorProps:m,children:e})}ei.displayName=`Separator`;function ti({className:e,...t}){return(0,P.jsx)(Ur,{"data-slot":`resizable-panel-group`,className:M(`flex h-full w-full aria-[orientation=vertical]:flex-col`,e),...t})}function ni({...e}){return(0,P.jsx)(Yr,{"data-slot":`resizable-panel`,...e})}function ri({withHandle:e,className:t,...n}){return(0,P.jsx)(ei,{"data-slot":`resizable-handle`,className:M(`relative flex w-px items-center justify-center bg-border ring-offset-background after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:translate-x-0 aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90`,t),...n,children:e&&(0,P.jsx)(`div`,{className:`z-10 flex h-6 w-1 shrink-0 rounded-lg bg-border`})})}var ii=`(min-width: 64rem)`,ai=`]`;function oi(){let[e,t]=(0,N.useState)(()=>matchMedia(ii).matches);return(0,N.useEffect)(()=>{let e=matchMedia(ii),n=()=>t(e.matches);return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[]),e}function si(e){return e instanceof HTMLElement&&(e.isContentEditable||[`INPUT`,`TEXTAREA`,`SELECT`].includes(e.tagName))}function ci(){let e=Zr(),[t,n]=(0,N.useState)(!1),r=(0,N.useCallback)(()=>{let t=e.current;t&&(t.isCollapsed()?t.expand():t.collapse())},[e]),i=(0,N.useCallback)(()=>{e.current?.isCollapsed()&&e.current.expand()},[e]);return(0,N.useEffect)(()=>{let e=e=>{e.key!==ai||e.metaKey||e.ctrlKey||e.altKey||si(e.target)||(e.preventDefault(),r())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[r]),{panelRef:e,collapsed:t,setCollapsed:n,toggle:r,expand:i}}function li({panel:e}){let t=e.collapsed?`Show inspector`:`Hide inspector`,n=e.collapsed?ze:Re;return(0,P.jsxs)(de,{children:[(0,P.jsx)(le,{render:(0,P.jsx)(D,{size:`icon-sm`,variant:`ghost`,"aria-label":t,"aria-pressed":!e.collapsed,className:`max-lg:hidden`,onClick:e.toggle}),children:(0,P.jsx)(n,{className:`size-4`,"aria-hidden":!0})}),(0,P.jsxs)(ue,{children:[t,` `,(0,P.jsx)(`kbd`,{className:`ml-1 font-mono text-[10px] text-muted-foreground`,children:ai})]})]})}function ui({panel:e,canvas:t,inspector:n}){let r=oi(),i=Kr({id:`miravo:floor-split`,storage:localStorage});return r?(0,P.jsxs)(ti,{id:`floor-split`,className:`min-h-0 flex-1`,defaultLayout:i.defaultLayout,onLayoutChanged:i.onLayoutChanged,children:[(0,P.jsx)(ni,{id:`canvas`,minSize:`40`,className:`grid overflow-hidden!`,children:t}),(0,P.jsx)(ri,{disableDoubleClick:!0,onDoubleClick:e.toggle,className:`w-px bg-border/50 transition-colors after:w-2 hover:bg-primary/40 data-[separator=active]:bg-primary/60`}),(0,P.jsx)(ni,{id:`inspector`,panelRef:e.panelRef,defaultSize:368,minSize:288,maxSize:640,collapsible:!0,onResize:t=>e.setCollapsed(t.inPixels===0),className:`flex flex-col`,children:n})]}):(0,P.jsxs)(`div`,{className:`grid min-w-0 flex-1 grid-cols-[minmax(0,1fr)] grid-rows-[clamp(18rem,68vw,34rem)_auto]`,children:[t,n]})}var di=[[`station`,`Stations`,`flow order`],[`utility`,`Utilities`,`shared services`]];function fi({things:e,line:t,onSelect:n}){let r=l(e=>e.assets),i=new Map(r.map(e=>[e.id,e.activeFaults.length])),a=new Map(t?.stations.map(e=>[e.id,e])),o=t?.stations.at(-1)?.good??0,s=t?.stations.reduce((e,t)=>e+t.scrap,0)??0,c=e.filter(e=>(i.get(e.assetId)??0)>0).length;return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(`div`,{className:`grid grid-cols-3 gap-3 px-4 pt-4 pb-5`,children:[(0,P.jsx)(_e,{label:`Shipped`,value:O(o)}),(0,P.jsx)(_e,{label:`Yield`,value:o+s>0?`${(o/(o+s)*100).toFixed(1)}%`:`–`}),(0,P.jsx)(_e,{label:`Faulted`,value:String(c)})]}),di.map(([t,r,o])=>(0,P.jsx)(pe,{title:r,note:o,children:(0,P.jsx)(`ul`,{className:`-mx-2 flex flex-col`,children:e.filter(e=>e.kind===t).map(e=>{let t=a.get(e.assetId),r=(i.get(e.assetId)??0)>0;return(0,P.jsx)(me,{tone:e.kind===`utility`?r?`fault`:`live`:he(t?.state,r),name:e.name,note:r?`fault`:t?`${fe(t.state)} · ${O(t.good)}`:e.assetId,onSelect:()=>n(e.key)},e.key)})})},t))]})}var pi=[1,2,5,10];function mi({speed:e}){let t=l(e=>e.engineState),n=se(),r=t===`paused`,i=pi.includes(e),a=t=>{t!==e&&n.mutateAsync({type:`setSpeed`,multiplier:t}).then(()=>d.invalidateQueries({queryKey:u.floor.state()})).catch(()=>{})};return(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsxs)(D,{size:`sm`,variant:`outline`,disabled:n.isPending||t!==`running`&&!r,onClick:()=>n.mutate({type:r?`resume`:`pause`}),className:`w-24 gap-1.5`,children:[r?(0,P.jsx)(oe,{className:`size-3.5`,"aria-hidden":!0}):(0,P.jsx)(ae,{className:`size-3.5`,"aria-hidden":!0}),r?`Resume`:`Pause`]}),(0,P.jsxs)(`fieldset`,{"aria-label":`Simulation speed`,className:`flex h-8 items-center gap-0.5 rounded-[var(--miravo-radius-stadium-sm)] border border-border/70 p-0.5`,children:[pi.map(t=>(0,P.jsx)(hi,{value:t,active:t===e,onSelect:a},t)),i?null:(0,P.jsx)(hi,{value:e,active:!0,onSelect:a})]})]})}function hi({value:e,active:t,onSelect:n}){return(0,P.jsxs)(`button`,{type:`button`,"aria-pressed":t,onClick:()=>n(e),className:M(`h-full min-w-9 rounded-[var(--miravo-radius-tight)] px-2 font-mono text-[11px] tabular-nums outline-none transition-colors`,`text-muted-foreground hover:bg-muted/50 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,t&&`bg-secondary text-foreground`),children:[e,`×`]})}var gi=1500;function _i(e,t){return e?.find(e=>e.stations.some(e=>t.has(e.id)))}function vi(e){let t=S({queryKey:u.floor.state(),queryFn:()=>c(`/state`,i.state),refetchInterval:gi}),n=Fe({queries:e.assetIds.map(e=>({queryKey:u.assets.detail(e),queryFn:()=>c(`/assets/${e}`,i.assetDetail),staleTime:1/0}))}),r=(0,N.useMemo)(()=>new Set(e.assetIds),[e.assetIds]),a=_i(t.data?.lines,r),o=(0,N.useRef)({line:a,speed:t.data?.config.timeMultiplier,details:n});o.current={line:a,speed:t.data?.config.timeMultiplier,details:n};let s=(0,N.useMemo)(()=>{let e=(e,t)=>{let n=l.getState().memberValues.get(e)?.get(t)?.value;return n===void 0?(o.current.details.find(t=>t.data?.id===e)?.data)?.members[t]?.value??void 0:n};return{num(t,n,r=0){let i=e(t,n);return typeof i==`number`?i:typeof i==`boolean`?Number(i):r},param(e,t,n=0){let r=o.current.details.find(t=>t.data?.id===e)?.data?.parameters[t]?.value;return typeof r==`number`?r:n},text(t,n){let r=e(t,n);return typeof r==`string`?r:void 0},station(t){let n=o.current.line?.stations.find(e=>e.id===t);if(!n)return;let r=e(t,`state_label`),i=e(t,`good_count`),a=e(t,`scrap_count`);return{state:typeof r==`string`?r:n.state,good:typeof i==`number`?Math.max(i,n.good):n.good,scrap:typeof a==`number`?Math.max(a,n.scrap):n.scrap}},buffers(){return o.current.line?.buffers??[]},faults(e){return l.getState().assets.find(t=>t.id===e)?.activeFaults??[]},engineState(){return l.getState().engineState},simSpeed(){return o.current.speed??l.getState().speedMultiplier},simTime(){return l.getState().simulationTime}}},[]),d=l(e=>e.speedMultiplier);return{feed:s,line:a,speed:t.data?.config.timeMultiplier??d}}var yi={running:`bg-success`,paused:`bg-warning`,stopped:`bg-destructive`},bi=500;function xi({title:e,body:t}){return(0,P.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3 p-8 text-center`,children:[(0,P.jsx)(te,{className:`size-6 text-muted-foreground`,"aria-hidden":!0}),(0,P.jsx)(`h1`,{className:`font-heading text-lg font-medium tracking-tight`,children:e}),(0,P.jsx)(`p`,{className:`max-w-sm text-sm text-muted-foreground`,children:t}),(0,P.jsx)(E,{to:`/`,className:A({size:`sm`,variant:`outline`}),children:`Back to Factory`})]})}function Si(){let{templateId:e=``}=T(),t=l(t=>t.templates.find(t=>t.templateId===e));return ne(e)?t?(0,P.jsx)(Ci,{template:t,entry:(0,N.use)(re(e))}):(0,P.jsx)(xi,{title:`Template not running`,body:`Load it from the Catalog, then open its floor from the Factory page.`}):(0,P.jsx)(xi,{title:`No floor for this template`,body:`Only templates with a hand-placed layout have a floor view.`})}function Ci({template:e,entry:t}){let{feed:n,line:r,speed:i}=vi(e),a=l(e=>e.assets),o=l(e=>e.engineState),s=t.resolve({template:e,assets:a,line:r}),c=s.status===`ready`?JSON.stringify(s.ids):``,u=(0,N.useMemo)(()=>c?JSON.parse(c):null,[c]),d=(0,N.useMemo)(()=>u?t.things(u):[],[t,u]),[f,p]=w(`asset`),[m,h]=(0,N.useState)(`inspect`),[g,_]=(0,N.useState)(null),v=d.find(e=>e.key===f)??null,[,y]=(0,N.useState)(0),b=v===null;(0,N.useEffect)(()=>{if(!b)return;let e=setInterval(()=>y(e=>e+1),bi);return()=>clearInterval(e)},[b]);let x=e=>{p(e),h(`inspect`)},S=(0,N.useRef)(null),C=ci();return(0,P.jsxs)(`div`,{className:`flex min-h-full flex-col lg:h-full lg:min-h-0`,children:[(0,P.jsxs)(`header`,{className:`flex flex-wrap items-center justify-between gap-x-4 gap-y-3 border-b border-border/50 px-4 py-3 sm:px-5`,children:[(0,P.jsxs)(`nav`,{"aria-label":`Breadcrumb`,className:`flex min-w-0 items-center gap-2.5`,children:[(0,P.jsxs)(E,{to:`/#template-${e.templateId}`,className:`group/back -mx-1.5 inline-flex shrink-0 items-center gap-1.5 rounded-[var(--miravo-radius-tight)] px-1.5 py-1 text-sm text-muted-foreground outline-none transition-colors hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,children:[(0,P.jsx)(Ie,{className:`size-3.5 transition-transform group-hover/back:-translate-x-0.5`,"aria-hidden":!0}),`Factory`]}),(0,P.jsx)(`span`,{"aria-hidden":!0,className:`text-sm text-muted-foreground/40`,children:`/`}),(0,P.jsx)(`h1`,{"aria-current":`page`,title:e.templateId,className:`truncate font-heading text-base font-medium tracking-tight`,children:e.templateName}),(0,P.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1.5 pl-1 max-sm:hidden`,children:[(0,P.jsx)(`span`,{"aria-hidden":!0,className:M(`size-1.5 rounded-full`,yi[o]??`bg-muted-foreground/50`)}),(0,P.jsx)(`span`,{className:`text-[10px] uppercase tracking-[0.14em] text-muted-foreground`,children:o})]})]}),(0,P.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,P.jsx)(mi,{speed:i}),u!==null&&(0,P.jsx)(li,{panel:C})]})]}),u===null?s.status===`pending`?(0,P.jsx)(`div`,{className:`flex-1`}):(0,P.jsx)(xi,{title:`Layout does not match`,body:t.mismatch}):(0,P.jsx)(ui,{panel:C,canvas:(0,P.jsx)(ot,{layout:t.layout,ids:u,caption:t.caption,feed:n,things:d,selected:v?.key??null,onSelect:e=>{x(e),e&&(C.expand(),matchMedia(`(max-width: 63.999rem)`).matches&&S.current?.scrollIntoView({behavior:`smooth`,block:`start`}))},onRuntime:_}),inspector:(0,P.jsx)(`aside`,{ref:S,className:`flex min-w-0 flex-1 scroll-mt-2 flex-col border-border/50 border-t lg:min-h-0 lg:border-t-0`,children:(0,P.jsxs)(xe,{value:m,onValueChange:e=>h(e),className:`flex flex-1 flex-col gap-0 lg:min-h-0`,children:[(0,P.jsxs)(be,{variant:`line`,className:`sticky top-0 z-10 h-10! w-full shrink-0 justify-start gap-0.5 border-b border-border/50 bg-background px-3 lg:static`,children:[(0,P.jsx)(ve,{value:`inspect`,className:`px-2.5 text-xs`,children:v?`Inspector`:t.tab??`Line`}),(0,P.jsx)(ve,{value:`activity`,className:`px-2.5 text-xs`,children:`Activity`})]}),(0,P.jsx)(ye,{value:`inspect`,className:`flex-1 lg:min-h-0 lg:overflow-y-auto`,children:v===null?t.Overview?(0,P.jsx)(t.Overview,{things:d,status:e=>g?.status(e)??[`--`,``],onSelect:e=>x(e)}):(0,P.jsx)(fi,{things:d,line:r,onSelect:e=>x(e)}):(0,P.jsx)(ge,{thing:v,assetId:v.assetId,line:r,basis:t.statusBasis,onBack:()=>x(null)},v.key)}),(0,P.jsx)(ye,{value:`activity`,className:`flex-1 lg:min-h-0 lg:overflow-y-auto`,children:(0,P.jsx)(ut,{assetIds:new Set(e.assetIds),nameOf:e=>d.find(t=>t.assetId===e)?.name??e,onSelect:e=>x(e)})})]})})})]})}export{Si as FloorPage};
@@ -1 +1 @@
1
- import{C as e,a as t,c as n,n as r,o as i,s as a}from"./dom-Cm_OH5jc.js";import{C as o,S as s,T as c,_ as l,c as u,f as d,g as f,h as p,s as m,u as h,w as g,x as _,y as v}from"./status-CZFZLqVk.js";var y={x:-64,y:-25,w:128,d:50,r:2},b=18,x=23,S=4.3,C=-24,w=6,T=8,E=40,D=24.1,O=[C,x+.5+S,w],k=1.6,A=[T,D-.5+S,E],j=126;function M(e,t){let{k:n,G:r,P:i,at:a,S:o,L:s,D:c,slab:l,cyl:u,hmi:d,andon:f,screws:p,faceRule:m}=e,h=[],g=t=>e.front(t),_={x:-62,y:-x,w:124,d:x*2,r:2};h.push(l(_,0,b,{tone:`mid`},3,.6)),h.push(s(n.sideSeam(_,4.6,i,3),{tone:`faint`}),s(n.planOutline(n.insetPlan(_,2.4),b,i,3),{tone:`faint`})),h.push(p([-56,-38,-20,2,20,38,56].map(e=>[e,x-1.4]),b));for(let[e,t]of[[-58.5,-19.5],[58.5,-19.5],[-58.5,19.5],[58.5,19.5]])h.push(u(e,t,1.7,b,2.6,{tone:`mid`},12));h.push(l({x:2,y:x,w:12,d:1.6,r:.6},1,11,{tone:`mid`},2,.3)),h.push(l({x:5.4,y:x+1.6,w:5.2,d:.6,r:.4},2,9.6,{tone:`lo`},2,.2)),h.push(`<g transform="${g(x+2.3)}"><path class="tk-glass" d="M6.4 -10.6H9.6V-2.6H6.4Z"/><path class="tk-level" data-fuel="6.4,9.6,2.6,10.6" d=""/><path class="iso-line" data-tone="mid" d="M10.2 -2.6H11.6M10.2 -4.6H11M10.2 -6.6H11.6M10.2 -8.6H11M10.2 -10.6H11.6M4.4 -2.6H5.6M4.4 -6.6H5.6M4.4 -10.6H5.6"/><g class="iso-dots" data-tone="mid"><circle cx="3.6" cy="-2" r="0.45"/><circle cx="12.4" cy="-2" r="0.45"/><circle cx="3.6" cy="-11" r="0.45"/><circle cx="12.4" cy="-11" r="0.45"/></g></g>`),h.push(l({x:C-5,y:x,w:10,d:1.4,r:.5},w-5,10,{tone:`mid`},2,.2));let v=r.frameAlong([C,x+.5,w],[0,1,0]);h.push(o(r.disc(0,4.4,2.5,v,i),{tone:`mid`}),o(r.disc(3,4.8,4,v,i),{tone:`mid`}));let y=r.frameAlong([-60,0,36],[1,0,0]),S=[[0,0],[1,10,1],[3,13.5,1],[6,15,1],[28,15,1],[31,13.5,1],[33,10,1],[34,0]];for(let e of[-54,-38])h.push(l({x:e,y:-13,w:6,d:26,r:.6},b,21-b+1,{tone:`lo`},2,.2));h.push(o(r.solidOf(S,y,i),{tone:`mid`,inner:n.fadedSvg(r.ribsOf(y,7,27,15,26,i,{fade:[.1,.55],seams:!0}),{tone:`lo`})})),h.push(o(r.disc(-1.6,0,10,y,i),{tone:`lo`})),h.push(l({x:-52,y:-6,w:14,d:12,r:1},50.4,8,{tone:`mid`},2,.3)),h.push(p(n.corners({x:-52,y:-6,w:14,d:12},1.8),58.4),u(-49,0,1.3,58.4,2.4,{tone:`mid`},12),u(-45,0,1.3,58.4,2.4,{tone:`mid`},12),u(-41,0,1.3,58.4,2.4,{tone:`mid`},12)),h.push(l({x:-26,y:-17,w:62,d:34,r:1.5},b,18,{tone:`mid`},3,.5)),h.push(l({x:-24,y:-15,w:58,d:30,r:1.5},b+18,18,{tone:`mid`},3,.5)),h.push(s(n.sideSeam({x:-26,y:-17,w:62,d:34,r:1.5},b+9,i,3),{tone:`faint`})),h.push(l({x:-20,y:-9,w:50,d:18,r:1},b+36,5,{tone:`lo`},2,.4)),h.push(p([-16,-6,4,14,24].flatMap(e=>[[e,-7],[e,7]]),b+41)),h.push(l({x:36,y:-14,w:4,d:28,r:1},b+2,30,{tone:`lo`},2,.3));let O=[];for(let e=-22;e<=32;e+=4.5)O.push(n.segment([e,17,b+20],[e,17,b+34],i));h.push(s(O.join(``),{tone:`faint`}));let[A,M]=[28,-8];for(let e of[A-7.5,A+7.5])h.push(u(e,M,1,b+36,70-b-36+1,{tone:`mid`,crease:`none`},10));h.push(u(A,M,6,b+36,8,{tone:`mid`},24),u(A,M,3.4,b+44,8.4,{tone:`mid`,crease:`none`},16));for(let e=b+46;e<66;e+=2.2)h.push(u(A,M,3.9,e,1.1,{tone:`mid`},16));h.push(u(A,M,5.2,66,1.6,{tone:`mid`},20),u(A,M,8.5,70,30,{tone:`mid`,inner:s(n.sideArc(A,M,8.5,82,i,24)+n.sideArc(A,M,8.5,90,i,24),{tone:`faint`})},32),u(A,M,9.4,69.4,1.4,{tone:`mid`},28),u(A,M,9.4,99.2,1.4,{tone:`mid`},28),u(A,M,4,100.6,j-100.6-2,{tone:`mid`},20),u(A,M,5.2,j-2,1.2,{tone:`mid`},20),u(A,M,3,j-.8,1,{tone:`lo`},16)),h.push(p([0,1,2,3,4,5].map(e=>[A+Math.cos(e*1.047)*7.8,M+Math.sin(e*1.047)*7.8]),100.6));for(let e of[-19,-11,-3])h.push(u(e,19.6,2.6,b+3,13,{tone:`mid`},16),u(e,19.6,2.1,b+16,1.2,{tone:`lo`},14));let N=r.frameAlong([T,15,E],[0,1,0]);h.push(o(r.disc(0,7.5,4.4,N,i),{tone:`mid`}),o(r.disc(7.5,D-15,3.2,N,i),{tone:`lo`}));let P=r.frameAlong([T,D-.5,E],[0,1,0]);h.push(o(r.disc(0,4.4,k+.5,P,i),{tone:`mid`}),o(r.disc(3,4.8,k+2,P,i),{tone:`mid`}));let F=19.5;h.push(l({x:-58,y:15,w:22,d:F-15,r:.8},b,30,{tone:`mid`},2,.3)),h.push(d(t,F+.2,-56,-38,b+9,b+25)),h.push(m(F+.2,-56,b+26.5,11,2.6));for(let[e,t]of[[`bat`,-54],[`tc`,-49]]){let[n,r]=a([t,F+.4,b+5]);h.push(`<circle class="sf-gled" data-glamp="${e}" data-s="" cx="${n.toFixed(2)}" cy="${r.toFixed(2)}" r="0.9"/>`)}h.push(f(t,-94/2,17.5,b+30)),h.push(l({x:39,y:-22,w:14,d:44,r:1},b,4,{tone:`lo`},2,.3)),h.push(l({x:40,y:-21,w:12,d:42,r:.6},b+4,40,{tone:`mid`},2,.3));let I=[];for(let e=-19;e<=19.2;e+=2.2)I.push(n.segment([52,e,b+6],[52,e,b+42],i));h.push(s(I.join(``),{tone:`faint`})),h.push(l({x:39,y:-22,w:14,d:44,r:1},b+44,6,{tone:`lo`},2,.3)),h.push(u(46,14,2.4,b+50,3,{tone:`mid`},16),u(46,14,1.4,b+53,1.4,{tone:`lo`},12));let L=r.frameAlong([46,0,b+5],[0,1,0]);h.push(o(r.disc(21,26.5,1.1,L,i),{tone:`mid`}),o(r.disc(25.4,26.5,1.8,L,i),{tone:`mid`}));let R=b+24,z=r.frameAlong([0,0,R],[1,0,0]);h.push(o(r.disc(52,58,19,z,i),{tone:`mid`})),h.push(s(n.sideRing([55,0,R],19,`x`,i,36),{tone:`faint`})),h.push(o(r.disc(57.6,58,16.4,z,i),{tone:`lo`})),h.push(c(r.dotsOf(r.frameAlong([58,0,R],[1,0,0]),0,17.9,12,i,{all:!0}),{size:.4})),h.push(`<path class="gs-blade" data-rfan="58.4,0,${R},15.8" data-stack="${A},${M},${j}" data-coolant="46,26.5,${b+4.4}" data-cap="46,14,${b+54.4}" d=""/>`),h.push(o(r.disc(58,60.4,3.6,z,i),{tone:`mid`}),o(r.disc(60.2,61,1.8,z,i),{tone:`lo`}));let B=[];for(let e of[7.5,13,16.4])B.push(n.sideRing([61.4,0,R],e,`x`,i,32));for(let e=0;e<8;e++){let t=e/8*Math.PI*2;B.push(n.segment([61.4,Math.cos(t)*3.6,R+Math.sin(t)*3.6],[61.4,Math.cos(t)*16.4,R+Math.sin(t)*16.4],i))}return h.push(s(B.join(``),{tone:`mid`})),h.join(``)}function N(e,t){let{svg:i,P:s,feed:c}=e,h=(e,t)=>c.num(e,t),y=e=>c.param(e,`rated_rpm`,1500),b=r(i,`[data-vfan]`).map(e=>{let t=m(e),n=o(i,t);return{el:e,id:t,blades:a(e.dataset.vfan),axis:e.dataset.axis===`z`?`z`:`y`,top:u(e.dataset.top),bearing:u(e.dataset.bearing),rpm:0,turn:0,heat:_(n,3,3),smoke:v(n,`smoke`)}}),x=new Map(b.map(e=>[e.id,e]));return{draw(r,i,a){let o=e.reducedMotion();for(let e of b){if(e.rpm=l(e.rpm,h(e.id,`speed_feedback`),r,.8,o),o||(e.turn+=e.rpm/y(e.id)*1.6*p*r),n(e.el,`d`,d(s,e.blades,e.turn,e.axis)),!a)continue;let u=g(c,e.id,`bearing_defect_inner_race`,`winding_insulation`),f=g(c,e.id,`winding_burnout`);e.heat.draw((u||f)&&!o,i,s,e.bearing),e.smoke.draw(f&&!o,i,s,e.top,[.2,.5]),t(e.id,o?0:g(c,e.id,`rotor_imbalance`)?.5:g(c,e.id,`bearing_defect_inner_race`)?.35:0,i)}},bar(e){return x.has(e)?f(h(e,`speed_feedback`)/(y(e)*1.3)):void 0}}}var P=1.6,F=.8;function I(_,y){let{svg:b,P:x,feed:S}=_,C=(e,t)=>S.num(e,t),w=r(b,`[data-rfan]`).map(e=>{let t=m(e),n=o(b,t),s=e=>r(b,`[data-asset="${t}"] ${e}`),l=s(`[data-fuel]`)[0];return{el:e,id:t,fan:a(e.dataset.rfan),stack:u(e.dataset.stack),coolant:u(e.dataset.coolant),cap:u(e.dataset.cap),fuel:l,fuelBox:a(l?.dataset.fuel),lamps:new Map(s(`[data-glamp]`).map(e=>[e.dataset.glamp??``,e])),level:0,seen:!1,rate:0,turn:0,leak:0,puffs:c(n,10,`circle`,`sf-hiss`),steam:v(n),puddle:i(`path`,{class:`tk-puddle`},n),drips:c(n,3,`ellipse`,`tk-drip`)}}),T=new Map(w.map(e=>[e.id,e])),E=e=>{let t=S.param(e,`rated_power_kva`,0)*F;return t>0?f(C(e,`load_actual`)/t):0};return{draw(r,i,a){let o=_.reducedMotion();for(let c of w){let u=S.param(c.id,`rated_frequency_hz`,50);c.rate=l(c.rate,f(C(c.id,`frequency`)/u)*P,r,.8,o),o||(c.turn+=c.rate*p*r);let m=d(x,c.fan,c.turn,`x`);n(c.el,`d`,m);let _=f(C(c.id,`fuel_level_percent`)/100);c.level=c.seen?l(c.level,_,r,.8,o):_,c.seen=c.seen||Number.isFinite(_);let[v=0,b=0,w=0,T=0]=c.fuelBox;if(n(c.fuel,`d`,`M${v} ${-(w+(T-w)*c.level)}H${b}V${-w}H${v}Z`),!a)continue;let D=C(c.id,`running`)>0,O=E(c.id),k=g(S,c.id,`fuel_filter_clogged`),[A,j,M]=c.stack;for(let n of c.puffs){if(!D||o){t(n.el,`0`);continue}let r=(i*(.22+.18*O)+n.seed)%1,[a,c]=e([A+r*18+Math.sin(i*1.3+n.seed*12)*1.4,j-r*5,M+2+r*40],x);s(n.el,a,c),n.el.setAttribute(`r`,((1.2+r*6)*x.scale*.5).toFixed(2)),n.el.classList.toggle(`sf-smoke`,k),t(n.el,(Math.sin(Math.PI*r)*(k?.55:.06+.2*O)).toFixed(2))}let N=g(S,c.id,`coolant_leak`);c.leak=N?Math.min(c.leak+r,90):Math.max(0,c.leak-r*.5),c.steam.draw(N&&D&&!o,i,x,c.cap,[.4,.2]);let[F,I,L]=c.coolant,R=c.leak>0?2+4*(1-Math.exp(-c.leak/12)):0;n(c.puddle,`d`,R?h([F+3,I+5],R,.6,x,32):``);for(let n of c.drips){if(!N||o){t(n.el,`0`);continue}let r=(i*.9+n.seed)%1,[a,c]=e([F,I,L-r*r*L],x);s(n.el,a,c),n.el.setAttribute(`rx`,`0.5`),n.el.setAttribute(`ry`,(.45+r*.5).toFixed(2)),t(n.el,`0.9`)}let z=Math.floor(i*2)%2==0,B=(e,t)=>n(c.lamps.get(e),`data-s`,t&&z?`a`:null);B(`bat`,g(S,c.id,`starter_battery_weak`)),B(`tc`,g(S,c.id,`exhaust_thermocouple_failure`)),y(c.id,!o&&g(S,c.id,`governor_fault`)?.35:0,i)}},bar(e){return T.has(e)?E(e):void 0},fuelPu:e=>{let t=S.param(e,`fuel_rate_full_load_lph`,0);return t>0?f(C(e,`fuel_rate`)/t):0}}}export{O as a,k as i,N as n,y as o,A as r,M as s,I as t};
1
+ import{C as e,a as t,c as n,n as r,o as i,s as a}from"./dom-CQuChC3G.js";import{C as o,S as s,T as c,_ as l,c as u,f as d,g as f,h as p,s as m,u as h,w as g,x as _,y as v}from"./status-DNfdEhTs.js";var y={x:-64,y:-25,w:128,d:50,r:2},b=18,x=23,S=4.3,C=-24,w=6,T=8,E=40,D=24.1,O=[C,x+.5+S,w],k=1.6,A=[T,D-.5+S,E],j=126;function M(e,t){let{k:n,G:r,P:i,at:a,S:o,L:s,D:c,slab:l,cyl:u,hmi:d,andon:f,screws:p,faceRule:m}=e,h=[],g=t=>e.front(t),_={x:-62,y:-x,w:124,d:x*2,r:2};h.push(l(_,0,b,{tone:`mid`},3,.6)),h.push(s(n.sideSeam(_,4.6,i,3),{tone:`faint`}),s(n.planOutline(n.insetPlan(_,2.4),b,i,3),{tone:`faint`})),h.push(p([-56,-38,-20,2,20,38,56].map(e=>[e,x-1.4]),b));for(let[e,t]of[[-58.5,-19.5],[58.5,-19.5],[-58.5,19.5],[58.5,19.5]])h.push(u(e,t,1.7,b,2.6,{tone:`mid`},12));h.push(l({x:2,y:x,w:12,d:1.6,r:.6},1,11,{tone:`mid`},2,.3)),h.push(l({x:5.4,y:x+1.6,w:5.2,d:.6,r:.4},2,9.6,{tone:`lo`},2,.2)),h.push(`<g transform="${g(x+2.3)}"><path class="tk-glass" d="M6.4 -10.6H9.6V-2.6H6.4Z"/><path class="tk-level" data-fuel="6.4,9.6,2.6,10.6" d=""/><path class="iso-line" data-tone="mid" d="M10.2 -2.6H11.6M10.2 -4.6H11M10.2 -6.6H11.6M10.2 -8.6H11M10.2 -10.6H11.6M4.4 -2.6H5.6M4.4 -6.6H5.6M4.4 -10.6H5.6"/><g class="iso-dots" data-tone="mid"><circle cx="3.6" cy="-2" r="0.45"/><circle cx="12.4" cy="-2" r="0.45"/><circle cx="3.6" cy="-11" r="0.45"/><circle cx="12.4" cy="-11" r="0.45"/></g></g>`),h.push(l({x:C-5,y:x,w:10,d:1.4,r:.5},w-5,10,{tone:`mid`},2,.2));let v=r.frameAlong([C,x+.5,w],[0,1,0]);h.push(o(r.disc(0,4.4,2.5,v,i),{tone:`mid`}),o(r.disc(3,4.8,4,v,i),{tone:`mid`}));let y=r.frameAlong([-60,0,36],[1,0,0]),S=[[0,0],[1,10,1],[3,13.5,1],[6,15,1],[28,15,1],[31,13.5,1],[33,10,1],[34,0]];for(let e of[-54,-38])h.push(l({x:e,y:-13,w:6,d:26,r:.6},b,21-b+1,{tone:`lo`},2,.2));h.push(o(r.solidOf(S,y,i),{tone:`mid`,inner:n.fadedSvg(r.ribsOf(y,7,27,15,26,i,{fade:[.1,.55],seams:!0}),{tone:`lo`})})),h.push(o(r.disc(-1.6,0,10,y,i),{tone:`lo`})),h.push(l({x:-52,y:-6,w:14,d:12,r:1},50.4,8,{tone:`mid`},2,.3)),h.push(p(n.corners({x:-52,y:-6,w:14,d:12},1.8),58.4),u(-49,0,1.3,58.4,2.4,{tone:`mid`},12),u(-45,0,1.3,58.4,2.4,{tone:`mid`},12),u(-41,0,1.3,58.4,2.4,{tone:`mid`},12)),h.push(l({x:-26,y:-17,w:62,d:34,r:1.5},b,18,{tone:`mid`},3,.5)),h.push(l({x:-24,y:-15,w:58,d:30,r:1.5},b+18,18,{tone:`mid`},3,.5)),h.push(s(n.sideSeam({x:-26,y:-17,w:62,d:34,r:1.5},b+9,i,3),{tone:`faint`})),h.push(l({x:-20,y:-9,w:50,d:18,r:1},b+36,5,{tone:`lo`},2,.4)),h.push(p([-16,-6,4,14,24].flatMap(e=>[[e,-7],[e,7]]),b+41)),h.push(l({x:36,y:-14,w:4,d:28,r:1},b+2,30,{tone:`lo`},2,.3));let O=[];for(let e=-22;e<=32;e+=4.5)O.push(n.segment([e,17,b+20],[e,17,b+34],i));h.push(s(O.join(``),{tone:`faint`}));let[A,M]=[28,-8];for(let e of[A-7.5,A+7.5])h.push(u(e,M,1,b+36,70-b-36+1,{tone:`mid`,crease:`none`},10));h.push(u(A,M,6,b+36,8,{tone:`mid`},24),u(A,M,3.4,b+44,8.4,{tone:`mid`,crease:`none`},16));for(let e=b+46;e<66;e+=2.2)h.push(u(A,M,3.9,e,1.1,{tone:`mid`},16));h.push(u(A,M,5.2,66,1.6,{tone:`mid`},20),u(A,M,8.5,70,30,{tone:`mid`,inner:s(n.sideArc(A,M,8.5,82,i,24)+n.sideArc(A,M,8.5,90,i,24),{tone:`faint`})},32),u(A,M,9.4,69.4,1.4,{tone:`mid`},28),u(A,M,9.4,99.2,1.4,{tone:`mid`},28),u(A,M,4,100.6,j-100.6-2,{tone:`mid`},20),u(A,M,5.2,j-2,1.2,{tone:`mid`},20),u(A,M,3,j-.8,1,{tone:`lo`},16)),h.push(p([0,1,2,3,4,5].map(e=>[A+Math.cos(e*1.047)*7.8,M+Math.sin(e*1.047)*7.8]),100.6));for(let e of[-19,-11,-3])h.push(u(e,19.6,2.6,b+3,13,{tone:`mid`},16),u(e,19.6,2.1,b+16,1.2,{tone:`lo`},14));let N=r.frameAlong([T,15,E],[0,1,0]);h.push(o(r.disc(0,7.5,4.4,N,i),{tone:`mid`}),o(r.disc(7.5,D-15,3.2,N,i),{tone:`lo`}));let P=r.frameAlong([T,D-.5,E],[0,1,0]);h.push(o(r.disc(0,4.4,k+.5,P,i),{tone:`mid`}),o(r.disc(3,4.8,k+2,P,i),{tone:`mid`}));let F=19.5;h.push(l({x:-58,y:15,w:22,d:F-15,r:.8},b,30,{tone:`mid`},2,.3)),h.push(d(t,F+.2,-56,-38,b+9,b+25)),h.push(m(F+.2,-56,b+26.5,11,2.6));for(let[e,t]of[[`bat`,-54],[`tc`,-49]]){let[n,r]=a([t,F+.4,b+5]);h.push(`<circle class="sf-gled" data-glamp="${e}" data-s="" cx="${n.toFixed(2)}" cy="${r.toFixed(2)}" r="0.9"/>`)}h.push(f(t,-94/2,17.5,b+30)),h.push(l({x:39,y:-22,w:14,d:44,r:1},b,4,{tone:`lo`},2,.3)),h.push(l({x:40,y:-21,w:12,d:42,r:.6},b+4,40,{tone:`mid`},2,.3));let I=[];for(let e=-19;e<=19.2;e+=2.2)I.push(n.segment([52,e,b+6],[52,e,b+42],i));h.push(s(I.join(``),{tone:`faint`})),h.push(l({x:39,y:-22,w:14,d:44,r:1},b+44,6,{tone:`lo`},2,.3)),h.push(u(46,14,2.4,b+50,3,{tone:`mid`},16),u(46,14,1.4,b+53,1.4,{tone:`lo`},12));let L=r.frameAlong([46,0,b+5],[0,1,0]);h.push(o(r.disc(21,26.5,1.1,L,i),{tone:`mid`}),o(r.disc(25.4,26.5,1.8,L,i),{tone:`mid`}));let R=b+24,z=r.frameAlong([0,0,R],[1,0,0]);h.push(o(r.disc(52,58,19,z,i),{tone:`mid`})),h.push(s(n.sideRing([55,0,R],19,`x`,i,36),{tone:`faint`})),h.push(o(r.disc(57.6,58,16.4,z,i),{tone:`lo`})),h.push(c(r.dotsOf(r.frameAlong([58,0,R],[1,0,0]),0,17.9,12,i,{all:!0}),{size:.4})),h.push(`<path class="gs-blade" data-rfan="58.4,0,${R},15.8" data-stack="${A},${M},${j}" data-coolant="46,26.5,${b+4.4}" data-cap="46,14,${b+54.4}" d=""/>`),h.push(o(r.disc(58,60.4,3.6,z,i),{tone:`mid`}),o(r.disc(60.2,61,1.8,z,i),{tone:`lo`}));let B=[];for(let e of[7.5,13,16.4])B.push(n.sideRing([61.4,0,R],e,`x`,i,32));for(let e=0;e<8;e++){let t=e/8*Math.PI*2;B.push(n.segment([61.4,Math.cos(t)*3.6,R+Math.sin(t)*3.6],[61.4,Math.cos(t)*16.4,R+Math.sin(t)*16.4],i))}return h.push(s(B.join(``),{tone:`mid`})),h.join(``)}function N(e,t){let{svg:i,P:s,feed:c}=e,h=(e,t)=>c.num(e,t),y=e=>c.param(e,`rated_rpm`,1500),b=r(i,`[data-vfan]`).map(e=>{let t=m(e),n=o(i,t);return{el:e,id:t,blades:a(e.dataset.vfan),axis:e.dataset.axis===`z`?`z`:`y`,top:u(e.dataset.top),bearing:u(e.dataset.bearing),rpm:0,turn:0,heat:_(n,3,3),smoke:v(n,`smoke`)}}),x=new Map(b.map(e=>[e.id,e]));return{draw(r,i,a){let o=e.reducedMotion();for(let e of b){if(e.rpm=l(e.rpm,h(e.id,`speed_feedback`),r,.8,o),o||(e.turn+=e.rpm/y(e.id)*1.6*p*r),n(e.el,`d`,d(s,e.blades,e.turn,e.axis)),!a)continue;let u=g(c,e.id,`bearing_defect_inner_race`,`winding_insulation`),f=g(c,e.id,`winding_burnout`);e.heat.draw((u||f)&&!o,i,s,e.bearing),e.smoke.draw(f&&!o,i,s,e.top,[.2,.5]),t(e.id,o?0:g(c,e.id,`rotor_imbalance`)?.5:g(c,e.id,`bearing_defect_inner_race`)?.35:0,i)}},bar(e){return x.has(e)?f(h(e,`speed_feedback`)/(y(e)*1.3)):void 0}}}var P=1.6,F=.8;function I(_,y){let{svg:b,P:x,feed:S}=_,C=(e,t)=>S.num(e,t),w=r(b,`[data-rfan]`).map(e=>{let t=m(e),n=o(b,t),s=e=>r(b,`[data-asset="${t}"] ${e}`),l=s(`[data-fuel]`)[0];return{el:e,id:t,fan:a(e.dataset.rfan),stack:u(e.dataset.stack),coolant:u(e.dataset.coolant),cap:u(e.dataset.cap),fuel:l,fuelBox:a(l?.dataset.fuel),lamps:new Map(s(`[data-glamp]`).map(e=>[e.dataset.glamp??``,e])),level:0,seen:!1,rate:0,turn:0,leak:0,puffs:c(n,10,`circle`,`sf-hiss`),steam:v(n),puddle:i(`path`,{class:`tk-puddle`},n),drips:c(n,3,`ellipse`,`tk-drip`)}}),T=new Map(w.map(e=>[e.id,e])),E=e=>{let t=S.param(e,`rated_power_kva`,0)*F;return t>0?f(C(e,`load_actual`)/t):0};return{draw(r,i,a){let o=_.reducedMotion();for(let c of w){let u=S.param(c.id,`rated_frequency_hz`,50);c.rate=l(c.rate,f(C(c.id,`frequency`)/u)*P,r,.8,o),o||(c.turn+=c.rate*p*r);let m=d(x,c.fan,c.turn,`x`);n(c.el,`d`,m);let _=f(C(c.id,`fuel_level_percent`)/100);c.level=c.seen?l(c.level,_,r,.8,o):_,c.seen=c.seen||Number.isFinite(_);let[v=0,b=0,w=0,T=0]=c.fuelBox;if(n(c.fuel,`d`,`M${v} ${-(w+(T-w)*c.level)}H${b}V${-w}H${v}Z`),!a)continue;let D=C(c.id,`running`)>0,O=E(c.id),k=g(S,c.id,`fuel_filter_clogged`),[A,j,M]=c.stack;for(let n of c.puffs){if(!D||o){t(n.el,`0`);continue}let r=(i*(.22+.18*O)+n.seed)%1,[a,c]=e([A+r*18+Math.sin(i*1.3+n.seed*12)*1.4,j-r*5,M+2+r*40],x);s(n.el,a,c),n.el.setAttribute(`r`,((1.2+r*6)*x.scale*.5).toFixed(2)),n.el.classList.toggle(`sf-smoke`,k),t(n.el,(Math.sin(Math.PI*r)*(k?.55:.06+.2*O)).toFixed(2))}let N=g(S,c.id,`coolant_leak`);c.leak=N?Math.min(c.leak+r,90):Math.max(0,c.leak-r*.5),c.steam.draw(N&&D&&!o,i,x,c.cap,[.4,.2]);let[F,I,L]=c.coolant,R=c.leak>0?2+4*(1-Math.exp(-c.leak/12)):0;n(c.puddle,`d`,R?h([F+3,I+5],R,.6,x,32):``);for(let n of c.drips){if(!N||o){t(n.el,`0`);continue}let r=(i*.9+n.seed)%1,[a,c]=e([F,I,L-r*r*L],x);s(n.el,a,c),n.el.setAttribute(`rx`,`0.5`),n.el.setAttribute(`ry`,(.45+r*.5).toFixed(2)),t(n.el,`0.9`)}let z=Math.floor(i*2)%2==0,B=(e,t)=>n(c.lamps.get(e),`data-s`,t&&z?`a`:null);B(`bat`,g(S,c.id,`starter_battery_weak`)),B(`tc`,g(S,c.id,`exhaust_thermocouple_failure`)),y(c.id,!o&&g(S,c.id,`governor_fault`)?.35:0,i)}},bar(e){return T.has(e)?E(e):void 0},fuelPu:e=>{let t=S.param(e,`fuel_rate_full_load_lph`,0);return t>0?f(C(e,`fuel_rate`)/t):0}}}export{O as a,k as i,N as n,y as o,A as r,M as s,I as t};
@@ -1 +1 @@
1
- import{C as e}from"./api-B2QJEzbS.js";function t(e,t){return e instanceof Error&&e.message.trim().length>0?e.message:typeof e==`string`&&e.trim().length>0?e:t}function n(t){if(e.is(t)&&t.hint?.trim())return t.hint}export{t as n,n as t};
1
+ import{C as e}from"./api-BG2sUkwk.js";function t(e,t){return e instanceof Error&&e.message.trim().length>0?e.message:typeof e==`string`&&e.trim().length>0?e:t}function n(t){if(e.is(t)&&t.hint?.trim())return t.hint}export{t as n,n as t};