miravo 0.6.0 → 0.6.1

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 (187) hide show
  1. package/LICENSE +199 -0
  2. package/README.md +7 -70
  3. package/bin/miravo.js +84 -0
  4. package/package.json +20 -36
  5. package/console-dist/assets/activity-DsWeRq4h.js +0 -1
  6. package/console-dist/assets/api-4AqKvsm9.js +0 -1
  7. package/console-dist/assets/arrow-right-Ea_UhTNi.js +0 -1
  8. package/console-dist/assets/arrow-up-down-DFSjzzl2.js +0 -1
  9. package/console-dist/assets/blueprint-card-classes-DBFCDy0M.js +0 -1
  10. package/console-dist/assets/box-C1WaoOMF.js +0 -1
  11. package/console-dist/assets/card-BjeP32PN.js +0 -1
  12. package/console-dist/assets/catalog-BJzyzbLR.js +0 -1
  13. package/console-dist/assets/catalog-DKjEm-c4.js +0 -1
  14. package/console-dist/assets/catalog-template-icons-BrUeHaCY.js +0 -1
  15. package/console-dist/assets/checkbox-DZlJXTE4.js +0 -1
  16. package/console-dist/assets/chunk-OE4NN4TA-CEjpfhS6.js +0 -3
  17. package/console-dist/assets/combobox-BGnuCYxO.js +0 -1
  18. package/console-dist/assets/control-CPhvwx9o.js +0 -1
  19. package/console-dist/assets/control-Cg2up9NA.js +0 -1
  20. package/console-dist/assets/copy-button-WkbNkMcd.js +0 -1
  21. package/console-dist/assets/createLucideIcon-Bwxw859K.js +0 -1
  22. package/console-dist/assets/deploy-tab-JeWDwPoZ.js +0 -1
  23. package/console-dist/assets/dist-BhbDML0a.js +0 -1
  24. package/console-dist/assets/dist-Cy8XTNFT.js +0 -2
  25. package/console-dist/assets/download-DQ6NH16U.js +0 -1
  26. package/console-dist/assets/engine-store-CrLnz692.js +0 -1
  27. package/console-dist/assets/events-CXm29Ok4.js +0 -1
  28. package/console-dist/assets/events-D01IxhnP.js +0 -1
  29. package/console-dist/assets/fira-code-cyrillic-ext-wght-normal-DhYMMuQd.woff2 +0 -0
  30. package/console-dist/assets/fira-code-cyrillic-wght-normal-Y3u8pIsh.woff2 +0 -0
  31. package/console-dist/assets/fira-code-greek-ext-wght-normal-wWus70Ix.woff2 +0 -0
  32. package/console-dist/assets/fira-code-greek-wght-normal-B2SviObF.woff2 +0 -0
  33. package/console-dist/assets/fira-code-latin-ext-wght-normal-Dvfvaomy.woff2 +0 -0
  34. package/console-dist/assets/fira-code-latin-wght-normal-CHoedHDv.woff2 +0 -0
  35. package/console-dist/assets/fira-code-symbols2-wght-normal-CE6EOz_n.woff2 +0 -0
  36. package/console-dist/assets/fleet-CfxbKXt9.js +0 -1
  37. package/console-dist/assets/fleet-lotMGVqe.js +0 -1
  38. package/console-dist/assets/format-kXTonpDJ.js +0 -1
  39. package/console-dist/assets/gauge-Ci8zNZlk.js +0 -1
  40. package/console-dist/assets/get-error-message-3Q5Q-2G5.js +0 -1
  41. package/console-dist/assets/index-CVPKSDvJ.js +0 -12
  42. package/console-dist/assets/index-DJkgDeun.css +0 -2
  43. package/console-dist/assets/input-BWEQFptx.js +0 -1
  44. package/console-dist/assets/instance-detail-C5IVwuh3.js +0 -1
  45. package/console-dist/assets/karla-latin-ext-wght-normal-Dq0rrjgs.woff2 +0 -0
  46. package/console-dist/assets/karla-latin-wght-normal-C3-ma4ov.woff2 +0 -0
  47. package/console-dist/assets/label-uephX5ZG.js +0 -1
  48. package/console-dist/assets/layers-CUsLQ1fq.js +0 -1
  49. package/console-dist/assets/login-C3RJli0m.js +0 -126
  50. package/console-dist/assets/models-B_UioWQ5.js +0 -1
  51. package/console-dist/assets/models-_IPlPiZ7.js +0 -1
  52. package/console-dist/assets/not-found-B8gAm08S.js +0 -1
  53. package/console-dist/assets/platform-targets-R3T-4eJ7.js +0 -1
  54. package/console-dist/assets/platforms-BWh0BQ3Y.js +0 -1
  55. package/console-dist/assets/platforms-DStNbtVc.js +0 -1
  56. package/console-dist/assets/proxy-CsnYqnPp.js +0 -9
  57. package/console-dist/assets/query-keys-BvtE7BMs.js +0 -1
  58. package/console-dist/assets/radio-CoHegOv5.js +0 -1
  59. package/console-dist/assets/rolldown-runtime-COnpUsM8.js +0 -1
  60. package/console-dist/assets/schibsted-grotesk-latin-ext-wght-normal-hsMS0n0O.woff2 +0 -0
  61. package/console-dist/assets/schibsted-grotesk-latin-wght-normal-Bb8VGrTG.woff2 +0 -0
  62. package/console-dist/assets/select-CeO4vP0G.js +0 -1
  63. package/console-dist/assets/select-display-items-CIzY8953.js +0 -1
  64. package/console-dist/assets/server-D9Kfn8fQ.js +0 -1
  65. package/console-dist/assets/shallow-6lGjQhtJ.js +0 -1
  66. package/console-dist/assets/tags-CiXOIHtY.js +0 -4
  67. package/console-dist/assets/tags-FQCXIxrP.js +0 -1
  68. package/console-dist/assets/tooltip-HGLF366Q.js +0 -1
  69. package/console-dist/assets/transition-nav-link-Df4Rk6vV.js +0 -1
  70. package/console-dist/assets/transition-types-CPlGtM8w.js +0 -1
  71. package/console-dist/assets/triangle-alert-adNk_sea.js +0 -1
  72. package/console-dist/assets/use-platform-stream-DGbK1k2L.js +0 -2
  73. package/console-dist/assets/use-transition-navigate-CCpcWXB0.js +0 -2
  74. package/console-dist/assets/validation-Blvud9_O.js +0 -1
  75. package/console-dist/assets/vendor-charts-CAZdaPlq.js +0 -60
  76. package/console-dist/assets/vendor-table-wd8JuMmT.js +0 -4
  77. package/console-dist/assets/vendor-ui-ByahnaY0.js +0 -1
  78. package/console-dist/favicon.svg +0 -37
  79. package/console-dist/index.html +0 -82
  80. package/console-dist/miravo-logo.png +0 -0
  81. package/src/__tests__/integration/executable-methods-runner.ts +0 -262
  82. package/src/__tests__/integration/executable-methods.integration.ts +0 -2348
  83. package/src/__tests__/integration/opcua-concurrent-clients.integration.ts +0 -314
  84. package/src/commands/adapter.ts +0 -249
  85. package/src/commands/apply.test.ts +0 -62
  86. package/src/commands/apply.ts +0 -216
  87. package/src/commands/cleanup.test.ts +0 -34
  88. package/src/commands/cleanup.ts +0 -201
  89. package/src/commands/cli-test-setup.ts +0 -91
  90. package/src/commands/export.test.ts +0 -51
  91. package/src/commands/export.ts +0 -404
  92. package/src/commands/fork.ts +0 -219
  93. package/src/commands/inject.test.ts +0 -57
  94. package/src/commands/inject.ts +0 -212
  95. package/src/commands/load.ts +0 -167
  96. package/src/commands/logs.ts +0 -173
  97. package/src/commands/models.test.ts +0 -162
  98. package/src/commands/models.ts +0 -338
  99. package/src/commands/pause.ts +0 -67
  100. package/src/commands/platforms.test.ts +0 -186
  101. package/src/commands/platforms.ts +0 -371
  102. package/src/commands/ps.ts +0 -116
  103. package/src/commands/remove.ts +0 -38
  104. package/src/commands/reset.ts +0 -44
  105. package/src/commands/rm.ts +0 -97
  106. package/src/commands/spawn.ts +0 -45
  107. package/src/commands/speed.ts +0 -40
  108. package/src/commands/start/adapter-config.ts +0 -157
  109. package/src/commands/start/catalog-le-dt.test.ts +0 -50
  110. package/src/commands/start/catalog-le-dt.ts +0 -187
  111. package/src/commands/start/catalog-model-schema.ts +0 -89
  112. package/src/commands/start/catalog-template-detail.ts +0 -54
  113. package/src/commands/start/daemon.ts +0 -255
  114. package/src/commands/start/display.ts +0 -150
  115. package/src/commands/start/engine-setup.ts +0 -247
  116. package/src/commands/start/events.ts +0 -126
  117. package/src/commands/start/index.ts +0 -897
  118. package/src/commands/start/protocol-plans.ts +0 -239
  119. package/src/commands/start/template-loader.ts +0 -197
  120. package/src/commands/start/template-resolver.ts +0 -185
  121. package/src/commands/start/types.ts +0 -73
  122. package/src/commands/start.test.ts +0 -480
  123. package/src/commands/status.test.ts +0 -20
  124. package/src/commands/status.ts +0 -470
  125. package/src/commands/stop.test.ts +0 -84
  126. package/src/commands/stop.ts +0 -169
  127. package/src/commands/templates.test.ts +0 -58
  128. package/src/commands/templates.ts +0 -277
  129. package/src/index.ts +0 -166
  130. package/src/lib/admin-auth.ts +0 -157
  131. package/src/lib/admin-client.test.ts +0 -51
  132. package/src/lib/admin-client.ts +0 -326
  133. package/src/lib/admin-platform-routes.ts +0 -1017
  134. package/src/lib/admin-platform-stream.test.ts +0 -434
  135. package/src/lib/admin-platform-stream.ts +0 -788
  136. package/src/lib/admin-responses.ts +0 -211
  137. package/src/lib/admin-server.test.ts +0 -781
  138. package/src/lib/admin-server.ts +0 -797
  139. package/src/lib/auth-store.ts +0 -87
  140. package/src/lib/daemon-registry.test.ts +0 -429
  141. package/src/lib/daemon-registry.ts +0 -343
  142. package/src/lib/le/le-apply.test.ts +0 -591
  143. package/src/lib/le/le-apply.ts +0 -832
  144. package/src/lib/le/le-auth.ts +0 -89
  145. package/src/lib/le/le-cleanup.test.ts +0 -168
  146. package/src/lib/le/le-cleanup.ts +0 -399
  147. package/src/lib/le/le-cli-helpers.ts +0 -77
  148. package/src/lib/le/le-client.ts +0 -184
  149. package/src/lib/le/le-concurrency.test.ts +0 -157
  150. package/src/lib/le/le-concurrency.ts +0 -78
  151. package/src/lib/le/le-connection-test.ts +0 -42
  152. package/src/lib/le/le-devicehub-properties.test.ts +0 -53
  153. package/src/lib/le/le-devicehub-properties.ts +0 -33
  154. package/src/lib/le/le-devicehub.ts +0 -213
  155. package/src/lib/le/le-digital-twins.ts +0 -285
  156. package/src/lib/le/le-drivers.ts +0 -23
  157. package/src/lib/le/le-endpoint.ts +0 -40
  158. package/src/lib/le/le-environments.test.ts +0 -73
  159. package/src/lib/le/le-environments.ts +0 -156
  160. package/src/lib/le/le-markers.ts +0 -87
  161. package/src/lib/le/le-plan.test.ts +0 -26
  162. package/src/lib/le/le-plan.ts +0 -109
  163. package/src/lib/le/le-platform-operations.test.ts +0 -198
  164. package/src/lib/le/le-platform-operations.ts +0 -340
  165. package/src/lib/le/le-static-model-schema.ts +0 -78
  166. package/src/lib/le/le-static-planner.test.ts +0 -255
  167. package/src/lib/le/le-static-planner.ts +0 -442
  168. package/src/lib/le/le-template-exporter.test.ts +0 -527
  169. package/src/lib/le/le-template-exporter.ts +0 -459
  170. package/src/lib/le/le-value-types.ts +0 -23
  171. package/src/lib/mqtt-client.ts +0 -115
  172. package/src/lib/parse.test.ts +0 -123
  173. package/src/lib/parse.ts +0 -87
  174. package/src/lib/resolve-simulation.test.ts +0 -118
  175. package/src/lib/resolve-simulation.ts +0 -181
  176. package/src/lib/session-store.ts +0 -110
  177. package/src/lib/shutdown.test.ts +0 -562
  178. package/src/lib/shutdown.ts +0 -621
  179. package/src/lib/template-category.test.ts +0 -71
  180. package/src/lib/template-category.ts +0 -72
  181. package/src/lib/template-locator.ts +0 -55
  182. package/src/lib/template-utils.ts +0 -45
  183. package/src/lib/ws-hub.ts +0 -281
  184. package/src/logger.test.ts +0 -172
  185. package/src/logger.ts +0 -402
  186. package/src/output.test.ts +0 -64
  187. package/src/output.ts +0 -160
@@ -1,2 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{s as t}from"./vendor-charts-CAZdaPlq.js";import{at as n,d as r,f as i,m as a,p as o}from"./vendor-ui-ByahnaY0.js";import{d as s}from"./api-4AqKvsm9.js";import{t as c}from"./createLucideIcon-Bwxw859K.js";import{a as l,i as u,n as d,o as f,t as ee}from"./input-BWEQFptx.js";import{c as p,i as m,l as h,n as g,s as _,t as v,u as y}from"./select-CeO4vP0G.js";import{i as b}from"./platform-targets-R3T-4eJ7.js";import{n as x,r as S,t as C}from"./copy-button-WkbNkMcd.js";import{n as w}from"./dist-BhbDML0a.js";import{i as T,n as E,r as D,t as O}from"./checkbox-DZlJXTE4.js";import{t as k}from"./radio-CoHegOv5.js";import{t as A}from"./triangle-alert-adNk_sea.js";import{n as j,r as M,t as N}from"./proxy-CsnYqnPp.js";import{a as te,i as ne,n as re,r as ie,s as ae,t as P}from"./label-uephX5ZG.js";import{u as F}from"./format-kXTonpDJ.js";var I=c(`ban`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M4.929 4.929 19.07 19.071`,key:`196cmz`}]]),L=c(`chevrons-up-down`,[[`path`,{d:`m7 15 5 5 5-5`,key:`1hf1tw`}],[`path`,{d:`m7 9 5-5 5 5`,key:`sgt6xg`}]]),R=c(`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`}]]),z=c(`circle-dot`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}]]),oe=c(`clock`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]),B=c(`list-checks`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`path`,{d:`m3 7 2 2 4-4`,key:`1obspn`}]]),V=c(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),H=c(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),U=e(t(),1);async function W(e,t){let n=await fetch(`${e}`,{credentials:`include`,...t});if(n.status===401)throw s(),Error(`Session expired`);let r;try{r=await n.json()}catch{throw Error(`HTTP ${n.status} — server returned non-JSON response`)}if(!n.ok)throw Error(r.error??r.message??`HTTP ${n.status}`);return r}function se(e,t){return W(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function ce(e,t){return W(e,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function le(e){return W(e,{method:`DELETE`})}async function ue(){return(await W(`/platforms/le/environments`)).environments}function de(e){return se(`/platforms/le/environments`,e)}function fe(e,t){return ce(`/platforms/le/environments/${e}`,t)}function pe(e){return le(`/platforms/le/environments/${e}`)}function me(e,t){return W(`/platforms/le/environments/test`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e),signal:t?.signal})}function he(e,t){return W(`/platforms/le/plan`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e),signal:t?.signal})}function ge(e,t){return W(`/platforms/le/cleanup/plan`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(e),signal:t?.signal})}function _e(e={}){let t=new URLSearchParams;e.type&&t.set(`type`,e.type),e.environmentId&&t.set(`environmentId`,e.environmentId),typeof e.limit==`number`&&t.set(`limit`,String(e.limit)),typeof e.offset==`number`&&t.set(`offset`,String(e.offset));let n=t.toString();return W(n?`/platforms/le/operations?${n}`:`/platforms/le/operations`)}async function ve(e){await W(`/platforms/le/operations/${e}/cancel`,{method:`POST`})}function ye(e,t,n){return G(`/platforms/le/apply/stream`,e,t,n)}function be(e,t,n){return G(`/platforms/le/cleanup/stream`,e,t,n)}function G(e,t,n,r){let i=new AbortController;return(async()=>{try{let r=await fetch(`${e}`,{method:`POST`,headers:{"content-type":`application/json`},credentials:`include`,body:JSON.stringify(t),signal:i.signal});if(r.status===401)throw s(),Error(`Session expired`);if(!r.ok){let e=`HTTP ${r.status}`;try{let t=await r.json();e=t.error??t.message??e}catch{}throw Error(e)}if(!r.body)throw Error(`No response body`);let a=r.body.getReader(),o=new TextDecoder,c=``,l=``,u=``,d=!1;for(;;){let{done:e,value:t}=await a.read();if(e)break;c+=o.decode(t,{stream:!0});let r=c.split(`
2
- `);c=r.pop()??``;for(let e of r)if(e.startsWith(`event: `))l=e.slice(7).trim();else if(e.startsWith(`data: `))u=e.slice(6);else if(e===``&&l&&u){(l===`complete`||l===`cancelled`||l===`error`)&&(d=!0);try{let e=JSON.parse(u);n({event:l,data:e})}catch{}l=``,u=``}}if(!d&&!i.signal.aborted)throw Error(`Connection to server was lost unexpectedly`)}catch(e){if(i.signal.aborted)return;r(e instanceof Error?e:Error(String(e)))}})(),i}var xe={...Object.fromEntries(b.map(e=>[e.id,e.exportLabel])),"source-yaml":`Source YAML`};function Se(e){return e==null||e===``?`Select platform`:typeof e==`string`?xe[e]??e:`Select platform`}var K=`Source host (Miravo)`,q=`Address Litmus Edge uses to reach your running Miravo simulation.`;function J(e){let t=e.trim();if(t.length===0)return{message:`Connection test failed with no details from the server.`};let n=t.toLowerCase();if(t.includes(`timed out`))return{message:`Litmus Edge did not respond in time.`,description:`Check the hostname, VPN or firewall, and that the device is online.`};if(/\b401\b/.test(t)||/\b403\b/.test(t)||n.includes(`unauthorized`))return{message:`The API token was rejected.`,description:`Create or copy a valid token in Litmus Edge and paste it into the API token field.`};if(/\b404\b/.test(t)&&(n.includes(`sysinfo`)||n.includes(`/sysinfo/`)))return{message:`This Litmus Edge host or version does not expose the system info API.`,description:`Confirm the hostname and that Litmus Edge is running a build with GET /sysinfo/version.`};if(n.includes(`econnrefused`)||n.includes(`connection refused`)||n.includes(`enotfound`)||n.includes(`getaddrinfo`)||n.includes(`failed`)&&n.includes(`fetch`))return{message:`Could not reach the Litmus Edge host.`,description:`Check the hostname or IP, TLS, and that this computer can reach the edge network.`};if(t.includes(`Session expired`))return{message:`Your session expired. Sign in again, then retry the connection test.`};if(n.includes(`environment not found`))return{message:`That environment was removed. Close the dialog and refresh the list.`};if(n.includes(`unsupported platform`)&&n.includes(`connection`))return{message:`This platform type does not support connection tests yet.`,description:`Use Litmus Edge for remote apply and connection testing.`};if(n.includes(`invalid request body`)||n.includes(`api token is required`))return{message:`Some required fields are missing or invalid.`,description:`Fill in hostname, source host (Miravo), and API token (for new environments).`};let r=t.replace(/^LE\s+\S+\s+/i,``).trim();return{message:`Could not verify the connection to Litmus Edge.`,description:r.length>0&&r.length<=220?r:Ce(t,200)}}function Ce(e,t){let n=e.replace(/\s+/g,` `).trim();return n.length<=t?n:`${n.slice(0,t-1)}…`}function we(e){if(e.connected){w.success(`Connected to ${e.hostname}.`);return}let{message:t,description:n}=J(e.error);w.error(t,n?{description:n}:void 0)}function Te(e){let{message:t,description:n}=J(e instanceof Error?e.message:String(e));w.error(t,n?{description:n}:void 0)}function Ee(e){return!!(typeof DOMException<`u`&&e instanceof DOMException&&e.name===`AbortError`||e instanceof Error&&(e.name===`AbortError`||/aborted/i.test(e.message)))}function De(){let[e,t]=(0,U.useState)(!1),n=(0,U.useRef)(null),r=(0,U.useCallback)(()=>{n.current?.abort()},[]);return{testing:e,runTest:(0,U.useCallback)(async e=>{let r=new AbortController;n.current=r,t(!0);try{we(await me(e,{signal:r.signal}))}catch(e){if(Ee(e))return;Te(e)}finally{n.current===r&&(n.current=null),t(!1)}},[]),cancelInFlight:r}}var Y=n(),Oe=[`devices`,`models`,`instances`],ke=[`instances`,`models`,`devices`],Ae={devices:`Devices`,models:`DT models`,instances:`DT instances`};function je(e){return e.length>120?`Use at most 120 characters.`:/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(e)?null:`Use lowercase letters, numbers, and hyphens only (e.g. motor-001).`}function Me({open:e,onOpenChange:t,type:n,label:r,environmentLabel:i,hostname:a,sourceHostname:o,onConfirm:s,defaultDeviceName:c,applyPreview:l,cleanupPreview:f}){let p=n===`apply`?Oe:ke,[m,h]=(0,U.useState)(new Set(p)),[g,_]=(0,U.useState)(!1),[v,b]=(0,U.useState)(!1),[x,S]=(0,U.useState)(``),[C,w]=(0,U.useState)(null),[T,D]=(0,U.useState)(`fail`),k=(0,U.useId)(),A=(0,U.useId)(),j=`if-unmanaged-${A}`,M=n===`apply`,F=M&&c!==void 0&&c!==``;(0,U.useEffect)(()=>{e&&(h(new Set(p)),_(!1),w(null),S(F?c??``:``),D(`fail`),b(!1))},[e,p,F,c]);let I={instances:`models`},L=e=>{h(t=>{let n=new Set(t);if(n.has(e)){n.delete(e);for(let[t,r]of Object.entries(I))r===e&&n.delete(t)}else{n.add(e);let t=I[e];t&&n.add(t)}return n})},R=M?l:f,z=()=>{R?.onPreview(),t(!1)},oe=()=>{if(v&&R){z();return}let e=p.filter(e=>m.has(e));if(e.length!==0){if(F){let t=x.trim(),n=t===``?c??``:t.toLowerCase(),r=je(n);if(r){w(r);return}w(null),s({scope:e,deviceName:n,ifUnmanaged:T});return}s({scope:e,ifUnmanaged:T})}},V=n===`apply`?`Syncs devices, models, and instances.`:n===`cleanup`&&r===`All managed resources`?`Removes managed resources in cleanup order.`:`Removes resources for this template in cleanup order.`;return(0,Y.jsx)(re,{open:e,onOpenChange:t,children:(0,Y.jsxs)(ie,{showCloseButton:!0,className:`flex max-h-[90vh] min-h-0 flex-col gap-0 overflow-hidden p-0 sm:max-w-[24rem]`,children:[(0,Y.jsxs)(`div`,{className:`shrink-0 border-b border-border/60 px-5 pb-4 pt-5`,children:[(0,Y.jsxs)(ae,{className:`flex items-center gap-2 text-sm font-semibold leading-snug`,children:[M?(0,Y.jsx)(E,{className:`size-3.5 shrink-0 text-primary`,"aria-hidden":!0}):(0,Y.jsx)(H,{className:`size-3.5 shrink-0 text-destructive`,"aria-hidden":!0}),M?`Apply to Litmus Edge`:`Clean up Litmus Edge`]}),(0,Y.jsx)(ne,{className:`mt-2 text-left text-[11px] leading-relaxed text-foreground/78`,children:M?`Confirm target and options.`:`Confirm environment and cleanup scope.`})]}),(0,Y.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-4 overflow-y-auto overscroll-contain px-5 pt-4 pb-0`,children:[(0,Y.jsx)(`div`,{className:`rounded-lg border border-border/50 bg-muted/15 px-3 py-2.5`,children:(0,Y.jsxs)(`div`,{className:`space-y-3 text-[11px]`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`p`,{className:`text-[10px] font-medium uppercase tracking-wide text-foreground/80`,children:M?`Resource`:`Target`}),(0,Y.jsx)(`p`,{className:`mt-1 truncate font-medium leading-snug text-foreground`,children:r})]}),(0,Y.jsx)(`div`,{className:`h-px bg-border/40`,role:`presentation`}),(0,Y.jsxs)(`div`,{className:`min-w-0 space-y-2`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`p`,{className:`text-[10px] font-medium uppercase tracking-wide text-foreground/80`,children:`Environment`}),(0,Y.jsx)(`p`,{className:`mt-1 truncate font-medium leading-snug text-foreground`,children:i})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`p`,{className:`text-[10px] font-medium uppercase tracking-wide text-foreground/80`,children:`LE API host`}),(0,Y.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-[10px] text-foreground/72`,children:a})]}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`p`,{className:`text-[10px] font-medium uppercase tracking-wide text-foreground/80`,children:K}),(0,Y.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-[10px] text-foreground/72`,children:o}),(0,Y.jsx)(`p`,{className:`mt-1 text-[10px] leading-snug text-foreground/65`,children:q})]})]})]})}),R?(0,Y.jsxs)(P,{className:u(`flex cursor-pointer items-center gap-2 text-[11px] font-medium leading-snug`,R.disabled&&`pointer-events-none opacity-50`),children:[(0,Y.jsx)(`span`,{className:`shrink-0 pl-1`,children:(0,Y.jsx)(O,{checked:v,onCheckedChange:e=>b(e===!0),disabled:R.disabled})}),(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 leading-snug`,children:M?`Dry run only — preview the plan without deploying`:`Dry run only — preview the plan without removing resources`})]}):null,F?(0,Y.jsxs)(`div`,{className:`space-y-2 pt-0.5`,children:[(0,Y.jsx)(P,{htmlFor:k,className:`text-[11px] font-medium`,children:`Device name`}),(0,Y.jsx)(ee,{id:k,value:x,onChange:e=>{S(e.target.value),w(null)},placeholder:c,autoComplete:`off`,spellCheck:!1,className:u(`h-9 font-mono text-xs`,C&&`border-destructive`),"aria-invalid":C!=null,"aria-describedby":`${k}-hint`}),(0,Y.jsx)(`p`,{id:`${k}-hint`,className:`text-[10px] leading-snug text-foreground/76`,children:`Same name on a later run updates this device; change it to add another.`}),C?(0,Y.jsx)(`p`,{className:`text-[10px] text-destructive`,children:C}):null]}):null,(0,Y.jsxs)(`div`,{className:`space-y-3 pb-0`,children:[(0,Y.jsx)(`p`,{className:`text-[11px] leading-relaxed text-foreground/76`,children:V}),(0,Y.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-2 rounded-md bg-muted/40 px-3 py-2.5 text-left text-[11px] font-medium text-foreground transition-colors hover:bg-muted/60`,onClick:()=>_(e=>!e),"aria-expanded":g,children:[`Advanced`,(0,Y.jsx)(y,{className:u(`size-3.5 shrink-0 text-foreground/62 transition-transform duration-[320ms] ease-out`,g&&`rotate-180`),"aria-hidden":!0})]}),(0,Y.jsxs)(N.div,{initial:!1,animate:{maxHeight:g?400:0,opacity:+!!g},transition:{maxHeight:{duration:.32,ease:g?[.16,1,.3,1]:[.4,0,.2,1]},opacity:{duration:.32,ease:g?[.16,1,.3,1]:[.4,0,.2,1]}},className:u(`overflow-hidden pb-3`,!g&&`pointer-events-none`),"aria-hidden":!g,inert:!g,children:[(0,Y.jsx)(`div`,{className:`flex flex-col gap-1.5 pt-0.5`,children:p.map(e=>{let t=Object.entries(I).find(([t,n])=>n===e)?.[0],n=t!==void 0&&m.has(t);return(0,Y.jsxs)(P,{htmlFor:`scope-${e}`,className:u(`flex min-h-10 cursor-pointer items-center gap-2.5 rounded-md border border-border/40 bg-muted/10 px-3 py-2 text-[11px] transition-colors`,n?`opacity-95`:`hover:bg-muted/25`),children:[(0,Y.jsx)(O,{id:`scope-${e}`,checked:m.has(e),disabled:n,onCheckedChange:()=>L(e)}),(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 leading-snug`,children:Ae[e]}),n?(0,Y.jsx)(`span`,{className:`shrink-0 rounded-sm border border-primary/35 bg-primary/10 px-1.5 py-px text-[9px] font-semibold uppercase tracking-wide text-primary`,title:`Required because DT instances is selected`,children:`Required`}):null]},e)})}),M&&(0,Y.jsxs)(`div`,{className:`mt-4 space-y-2 border-t border-border/40 pt-3`,children:[(0,Y.jsx)(`p`,{id:`${A}-legend`,className:`text-[10px] font-medium uppercase tracking-wide text-foreground/80`,children:`Collision policy`}),(0,Y.jsxs)(`div`,{role:`radiogroup`,"aria-labelledby":`${A}-legend`,className:`flex flex-col gap-1.5`,children:[(0,Y.jsxs)(P,{htmlFor:`if-unmanaged-fail`,className:u(`flex cursor-pointer items-start gap-2.5 rounded-md border px-3 py-2.5 text-[11px] transition-colors`,T===`fail`?`border-primary/45 bg-primary/8`:`border-border/40 bg-muted/10 hover:bg-muted/25`),children:[(0,Y.jsx)(`input`,{id:`if-unmanaged-fail`,type:`radio`,name:j,value:`fail`,checked:T===`fail`,onChange:()=>D(`fail`),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:`Fail if unmanaged exists`}),(0,Y.jsx)(`span`,{className:`mt-0.5 block text-[10px] leading-snug text-foreground/74`,children:`Stop if the target has unmanaged resources.`})]})]}),(0,Y.jsxs)(P,{htmlFor:`if-unmanaged-skip`,className:u(`flex cursor-pointer items-start gap-2.5 rounded-md border px-3 py-2.5 text-[11px] transition-colors`,T===`skip`?`border-primary/45 bg-primary/8`:`border-border/40 bg-muted/10 hover:bg-muted/25`),children:[(0,Y.jsx)(`input`,{id:`if-unmanaged-skip`,type:`radio`,name:j,value:`skip`,checked:T===`skip`,onChange:()=>D(`skip`),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:`Skip unmanaged resources`}),(0,Y.jsx)(`span`,{className:`mt-0.5 block text-[10px] leading-snug text-foreground/74`,children:`Only update resources managed by Miravo.`})]})]})]})]})]}),m.size===0&&!(v&&R)?(0,Y.jsx)(`p`,{className:`text-[10px] text-destructive`,children:`Select at least one scope or reopen to reset.`}):null]})]}),(0,Y.jsxs)(te,{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)(d,{type:`button`,variant:`outline`,onClick:()=>t(!1),children:`Cancel`}),(0,Y.jsx)(d,{type:`button`,variant:M||v&&f?`default`:`destructive`,onClick:oe,disabled:v&&R?R.disabled||R.planLoading:m.size===0,children:M?v&&l?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(B,{className:`size-3`,"aria-hidden":!0}),`Preview changes`]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(E,{className:`size-3`,"aria-hidden":!0}),`Apply`]}):v&&f?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(B,{className:`size-3`,"aria-hidden":!0}),`Preview changes`]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(H,{className:`size-3`,"aria-hidden":!0}),`Clean up`]})})]})]})})}var Ne={initial:{scale:0,opacity:0},animate:{scale:1,opacity:1,originY:0},exit:{scale:0,opacity:0},transition:{type:`spring`,stiffness:350,damping:40}},Pe={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 X({children:e,variant:t=`default`}){let n=t===`default`;return(0,Y.jsx)(N.div,{...n?Ne:Pe,layout:n,className:`mx-auto w-full`,children:e})}var Fe=U.memo(({children:e,className:t,delay:n=1e3,...r})=>{let[i,a]=(0,U.useState)(0),o=(0,U.useMemo)(()=>U.Children.toArray(e),[e]);(0,U.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,U.useMemo)(()=>o.slice(0,i+1).reverse(),[i,o]);return(0,Y.jsx)(`div`,{className:u(`flex flex-col items-center gap-4`,t),...r,children:(0,Y.jsx)(j,{children:s.map(e=>(0,Y.jsx)(X,{children:e},e.key))})})});Fe.displayName=`AnimatedList`;function Z({type:e,errorMessage:t,className:n}){let r=e===`apply`?t?.toLowerCase()??``:``,i=e===`cleanup`?`Try cleanup again to resume.`:r.includes(`unmanaged device`)||r.includes(`unmanaged instance`)?`Update the collision policy, try apply again to resume, or clean up the created resources.`:`Try apply again to resume, or clean up the created resources.`;return(0,Y.jsxs)(`div`,{className:u(`flex items-start gap-1.5 rounded-md border border-info/40 bg-info/10 px-2.5 py-1.5 text-[10px] font-medium leading-relaxed`,n),children:[(0,Y.jsx)(T,{className:`mt-0.5 size-3 shrink-0 text-info`,"aria-hidden":!0}),(0,Y.jsx)(`p`,{className:`min-w-0 flex-1 text-left whitespace-normal break-words text-foreground/80 [overflow-wrap:anywhere]`,children:i})]})}var Q=`text-destructive hover:bg-destructive/25 hover:text-red-100 dark:text-red-300 dark:hover:bg-destructive/30 dark:hover:text-red-50`,Ie={device:`Devices`,tags:`Tags`,model:`Models`,instance:`Instances`,"param-sync":`Parameters`};function Le(e){return Ie[e]??e}function Re(e){switch(e){case`create`:return`border border-emerald-500/30 bg-emerald-500/15 text-emerald-800 dark:text-emerald-300`;case`update`:return`border border-blue-500/30 bg-blue-500/15 text-blue-800 dark:text-blue-300`;case`replace`:return`border border-amber-500/30 bg-amber-500/15 text-amber-800 dark:text-amber-300`;case`delete`:return`border border-red-500/30 bg-red-500/15 text-red-800 dark:text-red-300`;default:return`border border-border/50 bg-muted/80 text-foreground/85`}}function ze({status:e}){switch(e){case`success`:return(0,Y.jsx)(S,{className:`size-3.5 shrink-0 text-emerald-500`});case`failed`:return(0,Y.jsx)(x,{className:`size-3.5 shrink-0 text-destructive`});case`pending`:return(0,Y.jsx)(D,{className:`size-3.5 shrink-0 animate-spin text-primary/90`})}}function Be({status:e}){switch(e){case`done`:return(0,Y.jsx)(S,{className:`size-3.5 text-emerald-500`});case`active`:return(0,Y.jsx)(D,{className:`size-3.5 animate-spin text-primary`});case`pending`:return(0,Y.jsx)(z,{className:`size-3.5 text-foreground/55`})}}function Ve({entry:e}){let[t,n]=(0,U.useState)(!1);return(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,Y.jsxs)(`button`,{type:`button`,className:u(`flex items-center gap-2 rounded-md 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)(ze,{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:u(`inline-flex rounded px-1.5 py-0.5 text-[9px] font-medium uppercase tracking-wider`,Re(e.action)),children:e.action}),e.error&&(0,Y.jsx)(y,{className:u(`size-3 text-foreground/75 transition-transform`,t&&`rotate-180`)})]}),(0,Y.jsx)(j,{initial:!1,children:t&&e.error&&(0,Y.jsxs)(N.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-md 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 dark:text-red-300 [overflow-wrap:anywhere]`,children:e.error}),(0,Y.jsx)(C,{value:e.error,label:`Copy error`,className:u(Q,`shrink-0`)})]}),(0,Y.jsx)(Z,{type:`apply`,errorMessage:e.error,className:`mb-1 mt-2.5 w-full min-w-0`})]})})]})}function He({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:u(`flex w-full items-center gap-2 rounded-md 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)(Be,{status:e.status}),(0,Y.jsx)(`span`,{className:`text-xs font-medium tracking-wide text-foreground`,children:Le(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)(S,{className:`size-3 text-emerald-500`}),a&&(0,Y.jsx)(y,{className:u(`size-3 text-foreground/75 transition-transform`,!t&&`-rotate-90`),"aria-hidden":!0})]})]}),(0,Y.jsx)(j,{initial:!1,children:a&&t&&(0,Y.jsx)(N.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)(M.Provider,{value:null,children:e.resources.map((e,t)=>(0,Y.jsx)(X,{variant:`subtle`,children:(0,Y.jsx)(Ve,{entry:e})},`${e.name}-${t}`))})})})})]})}function Ue({operation:e}){let t=e.status===`complete`,n=e.status===`cancelled`,r=e.failed>0,i=e.totalPlanned>0?Math.min(100,(e.applied+e.failed)/e.totalPlanned*100):0;return(0,Y.jsx)(`div`,{className:`h-1 w-full overflow-hidden rounded-full bg-muted/55`,children:(0,Y.jsx)(N.div,{className:u(`h-full rounded-full transition-colors duration-500`,n?`bg-foreground/30`:t&&!r?`bg-emerald-500`:`bg-amber-500`),initial:{width:`0%`},animate:{width:`${i}%`},transition:{duration:.4,ease:[.25,.1,.25,1]}})})}function We(e){return e.duration==null?(Date.now()-e.startedAt)/1e3:e.duration/1e3}function Ge(e,t){let n=e.label;return t?.length?t.find(e=>e.id===n)?.name??n:n}function Ke({operation:e,sourceLabel:t,isAllExpanded:n,onToggleAll:r}){let i=We(e),a=e.applied+e.failed,o=e.status===`complete`,s=e.status===`cancelled`,c=e.status===`error`,l=e.failed>0;return(0,Y.jsxs)(`div`,{className:u(`sticky top-0 z-10 flex min-w-0 w-full flex-col gap-1.5 rounded-lg border px-3 pt-2.5 pb-3.5 backdrop-blur-sm transition-colors duration-500`,o&&!l&&`border-emerald-500/30 bg-emerald-500/5`,o&&l&&`border-amber-500/30 bg-amber-500/5`,s&&`border-border/60 bg-muted/50`,c&&`border-destructive/30 bg-destructive/5`,!o&&!s&&!c&&`border-amber-500/20 bg-amber-500/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)(j,{mode:`wait`,initial:!1,children:o&&!l?(0,Y.jsx)(N.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)(S,{className:`size-4 text-emerald-500`})},`complete`):o&&l?(0,Y.jsx)(N.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)(R,{className:`size-4 text-amber-500`})},`partial`):s?(0,Y.jsx)(N.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)(I,{className:`size-4 text-foreground/65`})},`cancelled`):c?(0,Y.jsx)(N.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)(x,{className:`size-4 text-destructive`})},`error`):(0,Y.jsx)(N.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)(D,{className:`size-4 animate-spin text-amber-500`})},`running`)}),(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.environment}`})]})]}),(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)(F,{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)(j,{mode:`popLayout`,initial:!1,children:(0,Y.jsx)(N.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)(j,{initial:!1,children:e.failed>0&&(0,Y.jsx)(N.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)(F,{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 dark:text-red-300`,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)(oe,{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-sm 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)(L,{className:u(`size-3.5 transition-transform duration-300`,!n&&`opacity-70 scale-y-[-1]`)})})})]})]}),(0,Y.jsx)(Ue,{operation:e})]})]})}function qe(e){return e?e.closest(`[data-edge-op-scroll]`)??e.closest(`.overflow-y-auto`):null}var Je=350;function $(e){e?.scrollIntoView({block:`end`,behavior:`auto`,inline:`nearest`})}function Ye(e){let t=()=>$(e);t(),requestAnimationFrame(t),requestAnimationFrame(()=>requestAnimationFrame(t)),window.setTimeout(t,0),window.setTimeout(t,48),window.setTimeout(t,120)}function Xe({operation:e,catalogTemplates:t}){let n=(0,U.useRef)(null),r=(0,U.useRef)(null),i=(0,U.useRef)(!0),a=(0,U.useRef)(e.status);a.current=e.status;let o=(0,U.useRef)(!1),[s,c]=(0,U.useState)(new Set),l=(0,U.useMemo)(()=>Ge(e,t),[e,t]);(0,U.useLayoutEffect)(()=>{let e=qe(n.current);if(!e)return;let t=()=>{i.current=e.scrollHeight-e.scrollTop-e.clientHeight<Je};return e.addEventListener(`scroll`,t,{passive:!0}),t(),()=>{e.removeEventListener(`scroll`,t)}},[]),(0,U.useLayoutEffect)(()=>{if(e.status===`running`){i.current&&$(r.current),o.current=!0;return}o.current&&=(Ye(r.current),!1)},[e.status,e.applied,e.failed,e.phases]),(0,U.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&&$(r.current)})});return s.observe(t),i.current&&$(r.current),()=>{s.disconnect(),cancelAnimationFrame(o)}},[e.status]);let d=e.phases.length>0,f=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)(Ke,{operation:e,sourceLabel:l,isAllExpanded:f,onToggleAll:d?()=>{c(f?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)(He,{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)(j,{initial:!1,children:e.error&&e.retryPending&&(0,Y.jsxs)(N.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-lg border border-destructive/40 bg-destructive/15 px-3 py-2 text-xs font-medium text-destructive shadow-md backdrop-blur-md dark:text-red-300`,children:[(0,Y.jsx)(D,{className:`size-4 shrink-0 animate-spin`}),(0,Y.jsx)(`span`,{className:`truncate`,children:e.error})]})}),(0,Y.jsx)(j,{initial:!1,children:e.error&&e.status===`error`&&(0,Y.jsxs)(N.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-lg 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 dark:text-red-300`,children:e.error}),(0,Y.jsx)(C,{value:e.error,label:`Copy error`,className:u(Q,`shrink-0`)})]}),(0,Y.jsx)(Z,{type:e.type,errorMessage:e.error,className:`mt-3 w-full min-w-0`})]})}),(0,Y.jsx)(`div`,{ref:r,className:`h-px w-full shrink-0`,"aria-hidden":!0})]})}function Ze({format:e,kind:t}){return e===`source-yaml`?t===`model`?`Raw twin model definition. Edit locally, version-control, or use as input for the CLI.`:`Raw plant template with topology and namespace. Edit, share, or apply via CLI.`:e===`litmus-edge`?t===`model`?`Litmus Edge Digital Twin JSON for manual import via the LE UI or GraphQL API.`:`Litmus Edge template JSON (DeviceHub devices + Digital Twins). Import directly via the Litmus Edge UI.`:`Select a format to download.`}function Qe({children:e,className:t}){return(0,Y.jsx)(`div`,{className:u(`max-h-[min(36rem,75vh)] min-h-0 overflow-y-auto rounded-xl border border-border/60 p-4 sm:p-5`,t),children:e})}function $e({environments:e,value:t,onValueChange:n,size:r=`default`,disabled:i,className:a,onAddNew:o}){return(0,U.useEffect)(()=>{if(t||e.length===0)return;let r=e[0];r&&n(r.id)},[t,e,n]),e.length===0&&o?(0,Y.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1.5 self-start text-[11px] text-primary hover:underline`,onClick:o,children:[(0,Y.jsx)(V,{className:`inline size-3`}),` Add environment`]}):(0,Y.jsxs)(v,{value:t,onValueChange:e=>e&&n(e),disabled:i,children:[(0,Y.jsx)(_,{size:r,className:u(`w-full`,r===`sm`&&`h-9! min-h-9 py-0`,r===`default`&&`h-auto! min-h-9 py-2 **:data-[slot=select-value]:line-clamp-none`,a),children:(0,Y.jsx)(p,{placeholder:`Select environment`,children:t=>{let n=e.find(e=>e.id===t);return n?r===`sm`?n.label:(0,Y.jsxs)(`span`,{className:`flex flex-col gap-0.5`,children:[(0,Y.jsx)(`span`,{className:`text-sm font-medium leading-tight`,children:n.label}),(0,Y.jsx)(`span`,{className:`font-mono text-[11px] leading-none text-muted-foreground`,children:n.hostname})]}):`Select environment`}})}),(0,Y.jsx)(g,{className:`p-1.5`,children:e.map(e=>(0,Y.jsx)(m,{value:e.id,className:`h-auto items-start gap-0 py-2.5 pr-8 pl-2.5`,children:(0,Y.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,Y.jsx)(`span`,{className:`text-sm font-medium leading-none`,children:e.label}),(0,Y.jsx)(`span`,{className:`truncate font-mono text-xs leading-none text-muted-foreground`,children:e.hostname})]})},e.id))})]})}function et({title:e,subtitle:t,footerAction:n,onDismiss:r,children:i}){return(0,U.useEffect)(()=>{function e(e){e.key===`Escape`&&r()}return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}},[r]),(0,Y.jsx)(N.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)(Qe,{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 dark:bg-background dark: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)(k,{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]})]}),(0,Y.jsx)(d,{type:`button`,variant:`ghost`,size:`icon-xs`,className:`shrink-0 text-foreground/70 hover:bg-muted/80 hover:text-foreground`,onClick:r,"aria-label":`Dismiss operation panel`,children:(0,Y.jsx)(h,{className:`size-3.5`,"aria-hidden":!0})})]}),(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:i}),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 tt(e){return e.status===`running`?e.operation?e.operation.type===`apply`?`Apply`:`Cleanup`:`Connecting`:e.status===`error`?`Failed`:e.operation&&e.status===`complete`?e.operation.status===`cancelled`?`Cancelled`:`Complete`:null}function nt(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 rt({stream:e,className:t}){let n=tt(e);if(!n)return null;let r=e.status===`running`,i=e.status===`error`,a=e.status===`complete`&&e.operation?.status===`cancelled`,o=e.status===`complete`&&!a;return(0,Y.jsxs)(`span`,{className:u(`inline-flex h-5 w-fit min-w-0 shrink-0 items-center justify-center gap-1 rounded-full border px-2 py-0`,`text-[10px] font-medium leading-none tracking-wide uppercase shadow-[inset_0_1px_0_0_rgba(255,255,255,0.05)]`,t,o&&`border-emerald-500/45 bg-emerald-500/[0.1] text-emerald-700 dark:border-emerald-400/40 dark:bg-emerald-400/[0.1] dark:text-emerald-300`,a&&`border-muted-foreground/30 bg-muted/[0.1] text-muted-foreground shadow-none`,i&&`border-destructive/50 bg-destructive/[0.1] text-destructive shadow-none`,r&&`border-primary/40 bg-primary/[0.1] text-primary dark:border-primary/35`),children:[o?(0,Y.jsx)(f,{className:`size-3 shrink-0 opacity-95`,strokeWidth:2.5,"aria-hidden":!0}):a?(0,Y.jsx)(I,{className:`size-3 shrink-0 opacity-95`,"aria-hidden":!0}):i?(0,Y.jsx)(A,{className:`size-3 shrink-0 opacity-95`,"aria-hidden":!0}):(0,Y.jsx)(D,{className:`size-3 shrink-0 animate-spin`,"aria-hidden":!0}),n]})}function it({className:e,orientation:t=`horizontal`,...n}){return(0,Y.jsx)(a,{"data-slot":`tabs`,"data-orientation":t,className:u(`group/tabs flex gap-2 data-horizontal:flex-col`,e),...n})}var at=l(`group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col data-[variant=line]:rounded-none`,{variants:{variant:{default:`bg-muted`,line:`gap-0 border-b border-border/50 bg-transparent p-0 shadow-none group-data-horizontal/tabs:h-auto group-data-horizontal/tabs:min-h-8`}},defaultVariants:{variant:`default`}});function ot({className:e,variant:t=`default`,...n}){return(0,Y.jsx)(r,{"data-slot":`tabs-list`,"data-variant":t,className:u(at({variant:t}),e),...n})}function st({className:e,...t}){return(0,Y.jsx)(o,{"data-slot":`tabs-trigger`,className:u(`relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-muted-foreground transition-[color,box-shadow,transform] duration-200 ease-out group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,`group-data-[variant=line]/tabs-list:font-heading group-data-[variant=line]/tabs-list:tracking-tight group-data-[variant=line]/tabs-list:text-sm group-data-[variant=line]/tabs-list:text-muted-foreground group-data-[variant=line]/tabs-list:hover:text-foreground group-data-[variant=line]/tabs-list:data-active:font-semibold group-data-[variant=line]/tabs-list:data-active:text-foreground`,`group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent`,`group-data-[variant=line]/tabs-list:rounded-none group-data-[variant=line]/tabs-list:px-3 group-data-[variant=line]/tabs-list:py-2`,`data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground`,`after:pointer-events-none after:absolute after:bg-foreground after:opacity-0 after:transition-[opacity,transform] after:duration-300 after:ease-out group-data-horizontal/tabs:after:inset-x-0 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-vertical/tabs:after:w-0.5`,`group-data-[variant=line]/tabs-list:after:bg-primary group-data-horizontal/tabs:group-data-[variant=line]/tabs-list:after:bottom-0 group-data-horizontal/tabs:group-data-[variant=line]/tabs-list:after:h-[2px] group-data-horizontal/tabs:group-data-[variant=line]/tabs-list:after:rounded-sm group-data-[variant=line]/tabs-list:data-active:after:opacity-100 group-data-horizontal/tabs:group-data-[variant=line]/tabs-list:data-active:after:shadow-[0_0_14px_-3px_color-mix(in_srgb,var(--primary)_50%,transparent)]`,e),...t})}function ct({className:e,...t}){return(0,Y.jsx)(i,{"data-slot":`tabs-content`,className:u(`flex-1 text-sm outline-none py-2`,e),...t})}var lt={status:`idle`,operation:null,error:null};function ut(){let[e,t]=(0,U.useState)(lt),n=(0,U.useRef)(null),r=(0,U.useCallback)(e=>{t(t=>({...t,status:`error`,error:e.message,operation:t.operation?{...t.operation,status:`error`,error:e.message}:null}))},[]),i=(0,U.useCallback)(e=>{switch(e.event){case`started`:ft(e.data,t);break;case`phase`:pt(e.data,t);break;case`resource`:mt(e.data,t);break;case`complete`:ht(e.data,t);break;case`cancelled`:gt(e.data,t);break;case`retrying`:_t(e.data,t);break;case`error`:r(Error(e.data.message??`Operation failed`));break}},[r]),a=(0,U.useCallback)(e=>{n.current?.abort(),t({status:`running`,operation:null,error:null}),n.current=ye(e,i,r)},[i,r]),o=(0,U.useCallback)(e=>{n.current?.abort(),t({status:`running`,operation:null,error:null}),n.current=be(e,i,r)},[i,r]),s=(0,U.useCallback)(()=>{n.current?.abort(),n.current=null,t(lt)},[]),c=(0,U.useCallback)(async()=>{let t=e.operation?.operationId;t&&await ve(t)},[e.operation?.operationId]);return{...e,startApply:a,startCleanup:o,reset:s,cancel:c}}function dt(e){return(e.template??e.model)||(e.type===`cleanup`?`All managed resources`:`unknown`)}function ft(e,t){t(t=>({...t,status:`running`,error:null,operation:{operationId:e.operationId,type:e.type,label:dt(e),environment:e.environment,totalPlanned:e.totalPlanned,phases:[],applied:0,failed:0,status:`running`,startedAt:Date.now(),attempt:e.attempt,maxAttempts:e.maxAttempts}}))}function pt(e,t){t(t=>{if(!t.operation)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 mt(e,t){t(t=>{if(!t.operation)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`),failed:t.operation.failed+ +(e.status===`failed`)}}})}function ht(e,t){t(t=>{if(!t.operation)return t;let n=t.operation.phases.map(e=>e.status===`active`?{...e,status:`done`}:e);return{...t,status:`complete`,error:null,operation:{...t.operation,phases:n,applied:e.applied??e.deleted??0,failed:e.failed,duration:e.duration,status:`complete`}}})}function gt(e,t){t(t=>{if(!t.operation)return t;let n=t.operation.phases.map(e=>e.status===`active`?{...e,status:`done`}:e);return{...t,status:`complete`,error:null,operation:{...t.operation,phases:n,applied:e.applied??e.deleted??0,failed:e.failed,duration:e.duration,status:`cancelled`}}})}function _t(e,t){t(t=>t.operation?{...t,status:`running`,error:null,operation:{...t.operation,status:`running`,retryPending:!0,retryDelayMs:e.delayMs,attempt:e.attempt,maxAttempts:e.maxAttempts,error:e.error}}:t)}export{ge as C,V as D,H as E,z as O,_e as S,fe as T,K as _,st as a,pe as b,et as c,Ze as d,Xe as f,q as g,De as h,ot as i,$e as l,Me as m,it as n,rt as o,Z as p,ct as r,nt as s,ut as t,Qe as u,Se as v,he as w,ue as x,de as y};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/fleet-lotMGVqe.js","assets/fleet-CfxbKXt9.js","assets/rolldown-runtime-COnpUsM8.js","assets/chunk-OE4NN4TA-CEjpfhS6.js","assets/vendor-charts-CAZdaPlq.js","assets/vendor-ui-ByahnaY0.js","assets/input-BWEQFptx.js","assets/createLucideIcon-Bwxw859K.js","assets/activity-DsWeRq4h.js","assets/arrow-right-Ea_UhTNi.js","assets/arrow-up-down-DFSjzzl2.js","assets/box-C1WaoOMF.js","assets/select-CeO4vP0G.js","assets/layers-CUsLQ1fq.js","assets/radio-CoHegOv5.js","assets/engine-store-CrLnz692.js","assets/shallow-6lGjQhtJ.js","assets/transition-nav-link-Df4Rk6vV.js","assets/format-kXTonpDJ.js","assets/card-BjeP32PN.js","assets/combobox-BGnuCYxO.js","assets/select-display-items-CIzY8953.js","assets/tooltip-HGLF366Q.js","assets/transition-types-CPlGtM8w.js","assets/catalog-DKjEm-c4.js","assets/catalog-BJzyzbLR.js","assets/api-4AqKvsm9.js","assets/query-keys-BvtE7BMs.js","assets/proxy-CsnYqnPp.js","assets/use-platform-stream-DGbK1k2L.js","assets/platform-targets-R3T-4eJ7.js","assets/copy-button-WkbNkMcd.js","assets/dist-BhbDML0a.js","assets/checkbox-DZlJXTE4.js","assets/triangle-alert-adNk_sea.js","assets/label-uephX5ZG.js","assets/catalog-template-icons-BrUeHaCY.js","assets/deploy-tab-JeWDwPoZ.js","assets/download-DQ6NH16U.js","assets/blueprint-card-classes-DBFCDy0M.js","assets/get-error-message-3Q5Q-2G5.js","assets/models-_IPlPiZ7.js","assets/models-B_UioWQ5.js","assets/events-CXm29Ok4.js","assets/events-D01IxhnP.js","assets/control-Cg2up9NA.js","assets/control-CPhvwx9o.js","assets/server-D9Kfn8fQ.js","assets/validation-Blvud9_O.js","assets/tags-FQCXIxrP.js","assets/tags-CiXOIHtY.js","assets/vendor-table-wd8JuMmT.js","assets/dist-Cy8XTNFT.js","assets/platforms-DStNbtVc.js","assets/platforms-BWh0BQ3Y.js","assets/instance-detail-C5IVwuh3.js","assets/gauge-Ci8zNZlk.js","assets/login-C3RJli0m.js"])))=>i.map(i=>d[i]);
2
- import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{s as t}from"./vendor-charts-CAZdaPlq.js";import{c as n,d as r}from"./chunk-OE4NN4TA-CEjpfhS6.js";var i=e(t(),1),a=[{test:e=>e===`/`,load:()=>r(()=>import(`./fleet-lotMGVqe.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]))},{test:e=>e===`/catalog`,load:()=>r(()=>import(`./catalog-DKjEm-c4.js`),__vite__mapDeps([24,25,2,5,4,26,27,7,6,28,29,12,30,31,32,22,33,14,34,18,35,36,37,11,38,13,39,15,40]))},{test:e=>e===`/models`,load:()=>r(()=>import(`./models-_IPlPiZ7.js`),__vite__mapDeps([41,42,2,5,4,26,27,7,6,28,8,29,12,30,31,32,22,33,14,34,18,35,11,37,38,13,39,15,40]))},{test:e=>e===`/events`,load:()=>r(()=>import(`./events-CXm29Ok4.js`),__vite__mapDeps([43,44,2,3,4,5,26,27,7,6,28,12,15,40,18,19,20,21,23]))},{test:e=>e===`/control`,load:()=>r(()=>import(`./control-Cg2up9NA.js`),__vite__mapDeps([45,46,2,5,4,26,6,7,28,9,12,31,32,22,33,13,39,15,14,47,34,16,17,3,18,19,20,35,48]))},{test:e=>e===`/tags`,load:()=>r(()=>import(`./tags-FQCXIxrP.js`),__vite__mapDeps([49,50,2,3,4,5,26,27,7,51,6,28,10,12,30,32,38,52,15,40,19,20,35,22]))},{test:e=>e===`/platforms`,load:()=>r(()=>import(`./platforms-DStNbtVc.js`),__vite__mapDeps([53,54,2,3,4,5,26,27,7,6,28,8,9,29,12,30,31,32,22,33,14,34,18,35,36,13,47,52]))},{test:e=>e.startsWith(`/instance/`),load:()=>r(()=>import(`./instance-detail-C5IVwuh3.js`),__vite__mapDeps([55,2,3,4,5,26,27,7,6,8,31,32,22,56,39,15,14,34,40,18,19,48,23]))},{test:e=>e===`/login`,load:()=>r(()=>import(`./login-C3RJli0m.js`),__vite__mapDeps([57,2,5,4,26,17,3]))}],o=new Set;function s(e){if(!e.startsWith(`/`))return null;let t=e.indexOf(`?`),n=e.indexOf(`#`),r=t===-1?n===-1?e.length:n:n===-1?t:Math.min(t,n);return e.slice(0,r)}function c(e){let t=s(e);if(!t||o.has(t))return;let n=a.find(e=>e.test(t));n&&(o.add(t),n.load().catch(()=>{o.delete(t)}))}function l(){let e=n();return(0,i.useCallback)((t,n)=>{n?.preload!==!1&&c(t),(0,i.startTransition)(()=>{n?.transitionType&&(0,i.addTransitionType)(n.transitionType),e(t,{replace:n?.replace})})},[e])}export{c as n,l as t};
@@ -1 +0,0 @@
1
- import{at as e,et as t}from"./vendor-ui-ByahnaY0.js";import{b as n,v as r,y as i}from"./api-4AqKvsm9.js";import{i as a}from"./input-BWEQFptx.js";import{n as o}from"./dist-BhbDML0a.js";var s=e();function c({className:e,orientation:n=`horizontal`,...r}){return(0,s.jsx)(t,{"data-slot":`separator`,orientation:n,className:a(`shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch`,e),...r})}var l=i({multiplier:r({message:`Speed multiplier must be a number.`}).positive(`Speed multiplier must be positive.`).finite(`Speed multiplier must be finite.`).max(1e3,`Speed multiplier cannot exceed 1000.`)}),u=i({model:n().min(1,`Model is required.`),count:r({message:`Count must be a number.`}).int(`Count must be a whole number.`).positive(`Count must be at least 1.`).max(100,`Count cannot exceed 100.`)}),d=i({instanceId:n().min(1,`Instance is required.`),fault:n().min(1,`Fault name is required.`)}),f=i({instanceId:n().min(1,`Instance is required.`)});function p(e,t,n){if(!t.trim())return o.error(`Argument "${e}" is required.`),null;switch(n){case`Double`:case`Float`:{let n=Number(t);return Number.isFinite(n)?{value:n}:(o.error(`"${e}" must be a valid number.`),null)}case`Int32`:case`UInt16`:case`UInt32`:{let r=Number(t);return!Number.isFinite(r)||!Number.isSafeInteger(r)?(o.error(`"${e}" must be a valid integer.`),null):(n===`UInt16`||n===`UInt32`)&&r<0?(o.error(`"${e}" must be non-negative.`),null):{value:r}}case`Boolean`:return t!==`true`&&t!==`false`?(o.error(`"${e}" must be "true" or "false".`),null):{value:t===`true`};case`String`:return{value:t};default:return{value:t}}}function m(e,t){let n=e.safeParse(t);return n.success?n.data:(o.error(n.error.issues[0]?.message??`Validation error.`),null)}export{m as a,u as i,f as n,p as o,l as r,c as s,d as t};