@runeya/apps-cli 0.1.1 → 0.1.2

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 (274) hide show
  1. package/dist/agent/index.js +5303 -0
  2. package/dist/agent/index.js.map +1 -0
  3. package/dist/agent-manager-3S4FUNJS-MYT5X6XQ.js +8 -0
  4. package/dist/agent-manager-3S4FUNJS-MYT5X6XQ.js.map +1 -0
  5. package/dist/chunk-32HTB3XS.js +350 -0
  6. package/dist/chunk-32HTB3XS.js.map +1 -0
  7. package/dist/chunk-ERJIU7R4.js +195 -0
  8. package/dist/chunk-ERJIU7R4.js.map +1 -0
  9. package/dist/chunk-XZPCEGWS.js +2452 -0
  10. package/dist/chunk-XZPCEGWS.js.map +1 -0
  11. package/dist/dist-MFM5N25P.js +10985 -0
  12. package/dist/dist-MFM5N25P.js.map +1 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/kanban-commands-VEVMJTFS-OIYWEHUP.js +14 -0
  15. package/dist/kanban-commands-VEVMJTFS-OIYWEHUP.js.map +1 -0
  16. package/dist/package.json +36 -0
  17. package/dist/runeya +4 -0
  18. package/dist/web/assets/AddressBar.vue-dB66q4DS.js +1 -0
  19. package/dist/web/assets/AgentPage-B3wrH3gG.js +2 -0
  20. package/dist/web/assets/AgentPage-BTWkJvqr.css +1 -0
  21. package/dist/web/assets/AgentScalarChatInterface.vue-CJVuZIB9.js +13 -0
  22. package/dist/web/assets/AgentTerminalPage-Cj5fRr-j.js +36 -0
  23. package/dist/web/assets/AgentTerminalPage-EX_n6P3x.css +1 -0
  24. package/dist/web/assets/AiChatPage-Dhsx3B9B.js +1 -0
  25. package/dist/web/assets/ApiDocsPage-BddLJuUF.js +5 -0
  26. package/dist/web/assets/ApiDocsPage-D2Z0wqGZ.css +1 -0
  27. package/dist/web/assets/AppLayout-AfhaeKlp.js +1 -0
  28. package/dist/web/assets/AppLayout-sngalCCj.css +1 -0
  29. package/dist/web/assets/AuditPage-BBV9FW9y.css +1 -0
  30. package/dist/web/assets/AuditPage-DqycuiVb.js +1 -0
  31. package/dist/web/assets/CodeInput.vue-Dyew7ml-.js +1 -0
  32. package/dist/web/assets/Collection.vue-DePdVAHM.js +1 -0
  33. package/dist/web/assets/CollectionAuthentication.vue-DagSEg45.js +1 -0
  34. package/dist/web/assets/CollectionCookies.vue-vMKPCgg1.js +1 -0
  35. package/dist/web/assets/CollectionEnvironment.vue-B0JkZ6GC.js +1 -0
  36. package/dist/web/assets/CollectionOverview.vue-Bm7OsMWM.js +1 -0
  37. package/dist/web/assets/CollectionScripts.vue-CZiBq0rT.js +1 -0
  38. package/dist/web/assets/CollectionServers.vue-bziJbP-5.js +1 -0
  39. package/dist/web/assets/CollectionSettings.vue-D4oBu-fT.js +1 -0
  40. package/dist/web/assets/CollectionSync.vue-BG50-Lo4.js +1 -0
  41. package/dist/web/assets/CommandActionInput.vue-DmZld2w7.js +1 -0
  42. package/dist/web/assets/Cookies.vue-DjxMLL79.js +1 -0
  43. package/dist/web/assets/DashboardPage-QjYCF0Kd.js +1 -0
  44. package/dist/web/assets/DashboardPage-gZJ4_s8T.css +1 -0
  45. package/dist/web/assets/DataTable.vue-BV9IuUNB.js +1 -0
  46. package/dist/web/assets/DataTableCheckbox.vue-Cx0exaNK.js +1 -0
  47. package/dist/web/assets/DataTableHeader.vue-ZtUdyiLV.js +1 -0
  48. package/dist/web/assets/DataTableInput.vue-C4NF8kJn.js +1 -0
  49. package/dist/web/assets/DeleteSidebarListElement.vue-CcAW4Pdn.js +1 -0
  50. package/dist/web/assets/EditSidebarListElement.vue-Crbagha4.js +1 -0
  51. package/dist/web/assets/EditorIcon-BaDORp4k.js +15 -0
  52. package/dist/web/assets/EditorIcon-zS3bHXe1.css +1 -0
  53. package/dist/web/assets/EmptyState.vue-2hJbVxAi.js +22 -0
  54. package/dist/web/assets/Environment.vue-CcERFnQq.js +1 -0
  55. package/dist/web/assets/EnvironmentForm-DSKxdDGW.js +108 -0
  56. package/dist/web/assets/EnvironmentForm-DVMc303P.css +1 -0
  57. package/dist/web/assets/EnvironmentFormPage-BDhR07CG.js +1 -0
  58. package/dist/web/assets/EnvironmentFormPage-OaDJvyrc.css +1 -0
  59. package/dist/web/assets/EnvironmentListPage-BDqcug66.css +1 -0
  60. package/dist/web/assets/EnvironmentListPage-BzdxgZdS.js +1 -0
  61. package/dist/web/assets/EnvironmentModal.vue-DvsPa6V9.js +1 -0
  62. package/dist/web/assets/EnvironmentSelector-B9SZvB3I.css +1 -0
  63. package/dist/web/assets/EnvironmentSelector-BWljvJWP.js +1 -0
  64. package/dist/web/assets/Form.vue-BxhIukSx.js +1 -0
  65. package/dist/web/assets/IconSelector.vue-SxFpYToZ.js +1 -0
  66. package/dist/web/assets/KanbanBoardPage-7nOYpwHn.css +1 -0
  67. package/dist/web/assets/KanbanBoardPage-Bbyn-iLC.js +141 -0
  68. package/dist/web/assets/KanbanListPage-BEX3MKW0.js +1 -0
  69. package/dist/web/assets/KanbanListPage-DbdjvTCx.css +1 -0
  70. package/dist/web/assets/LaunchProjectPage-DB_XBa86.js +1 -0
  71. package/dist/web/assets/LaunchProjectPage-_L_i2xo0.css +1 -0
  72. package/dist/web/assets/LaunchServicesPage-BABQz-ey.css +1 -0
  73. package/dist/web/assets/LaunchServicesPage-fmsU-_p0.js +1 -0
  74. package/dist/web/assets/LogViewer-CJcXcTP0.css +1 -0
  75. package/dist/web/assets/LogViewer-CV9OmAb1.js +3 -0
  76. package/dist/web/assets/ProcessControls-CKmB6sB9.css +1 -0
  77. package/dist/web/assets/ProcessControls-L_hld0kN.js +1 -0
  78. package/dist/web/assets/ProcessDetailPage-B0qGKtvQ.css +1 -0
  79. package/dist/web/assets/ProcessDetailPage-CW0F6wvO.js +1 -0
  80. package/dist/web/assets/ProcessMetrics-BgEFMdnW.css +1 -0
  81. package/dist/web/assets/ProcessMetrics-D2vCK15o.js +1 -0
  82. package/dist/web/assets/ProjectDetailPage-Bo04MsdE.js +1 -0
  83. package/dist/web/assets/ProjectDetailPage-CZBB6F-t.css +1 -0
  84. package/dist/web/assets/ProjectListPage-BGU6SKAr.css +1 -0
  85. package/dist/web/assets/ProjectListPage-CG-r82FQ.js +1 -0
  86. package/dist/web/assets/RandomJobTestPage-C1mgTTSY.css +1 -0
  87. package/dist/web/assets/RandomJobTestPage-COnuE_dj.js +2 -0
  88. package/dist/web/assets/Request.vue-CeAzdpVl.js +1 -0
  89. package/dist/web/assets/RequestAuth.vue-DABBKM9M.js +1 -0
  90. package/dist/web/assets/RequestRoot.vue-CRaiGtgb.js +19 -0
  91. package/dist/web/assets/ScalarAsciiArt.vue-mR3JflbN.js +2 -0
  92. package/dist/web/assets/ScalarIconEyeSlash.vue-JQCpS43o.js +1 -0
  93. package/dist/web/assets/ScalarIconTrash.vue-D7zGeCPC.js +1 -0
  94. package/dist/web/assets/ScenarioEditorPage-BVnDp-fS.js +14 -0
  95. package/dist/web/assets/ScenarioEditorPage-CfBKebp6.css +1 -0
  96. package/dist/web/assets/ServerVariablesForm.vue-DbVG31Dx.js +1 -0
  97. package/dist/web/assets/ServiceControlsBar-Cp2VUifX.js +1 -0
  98. package/dist/web/assets/ServiceControlsBar-D_S_sGQj.css +1 -0
  99. package/dist/web/assets/ServiceDetailPage-BriHTCpT.css +1 -0
  100. package/dist/web/assets/ServiceDetailPage-DMoXJliU.js +2 -0
  101. package/dist/web/assets/ServiceFormPage-BXTTwyWP.js +1 -0
  102. package/dist/web/assets/ServiceFormPage-CyY-14jH.css +1 -0
  103. package/dist/web/assets/Settings.vue-BtjfBYMB.js +1 -0
  104. package/dist/web/assets/SettingsPage-BFqYvm6R.js +508 -0
  105. package/dist/web/assets/SettingsPage-vGhb_tlY.css +1 -0
  106. package/dist/web/assets/SetupKeyPage-CrmikLTx.js +1 -0
  107. package/dist/web/assets/SetupKeyPage-DoY1Ua1s.css +1 -0
  108. package/dist/web/assets/SetupPage-CRuL5LXc.js +1 -0
  109. package/dist/web/assets/SetupPage-_KXpCQSU.css +1 -0
  110. package/dist/web/assets/Sidebar.vue-CLpz7l3s.js +1 -0
  111. package/dist/web/assets/SidebarButton.vue-DAvh-OoW.js +1 -0
  112. package/dist/web/assets/SidebarListElement.vue-CfQ22Epo.js +1 -0
  113. package/dist/web/assets/UnlockPage-Cx3PYgUl.css +1 -0
  114. package/dist/web/assets/UnlockPage-UxunGumn.js +1 -0
  115. package/dist/web/assets/VariablesTable-BtdK5olT.css +1 -0
  116. package/dist/web/assets/VariablesTable-CKe8mApI.js +1 -0
  117. package/dist/web/assets/ViewLayout.vue-D30IFsIP.js +1 -0
  118. package/dist/web/assets/ViewLayoutContent.vue-B4BXKBtQ.js +1 -0
  119. package/dist/web/assets/ViewLayoutSection.vue-BGkXXzBQ.js +1 -0
  120. package/dist/web/assets/_plugin-vue_export-helper-C7ztIXtE.js +1 -0
  121. package/dist/web/assets/abap-C4tHUUCU.js +1 -0
  122. package/dist/web/assets/active-entities-DMSK8Kvo.js +1 -0
  123. package/dist/web/assets/apex-6cG6aG-w.js +1 -0
  124. package/dist/web/assets/api-reference-DUBKG98-.js +1 -0
  125. package/dist/web/assets/autocomplete-Bx5M86A5.js +308 -0
  126. package/dist/web/assets/azcli-51BngrSU.js +1 -0
  127. package/dist/web/assets/base64-uZi92-DX.js +1 -0
  128. package/dist/web/assets/bat-BDcdVSIt.js +1 -0
  129. package/dist/web/assets/bicep-Cg0BCcky.js +2 -0
  130. package/dist/web/assets/cameligo-C3ekVui9.js +1 -0
  131. package/dist/web/assets/card-6r6P_U-q.js +32 -0
  132. package/dist/web/assets/checkbox-CQpllPXd.js +141 -0
  133. package/dist/web/assets/chip-gp-_w98f.js +54 -0
  134. package/dist/web/assets/clojure-Ci5xNgh_.js +1 -0
  135. package/dist/web/assets/codicon-DCmgc-ay.ttf +0 -0
  136. package/dist/web/assets/coffee-xsRz4GKy.js +1 -0
  137. package/dist/web/assets/column-CE6TbiAC.js +763 -0
  138. package/dist/web/assets/core-CLjfGkKM.js +1 -0
  139. package/dist/web/assets/cpp-B2gW4e23.js +1 -0
  140. package/dist/web/assets/csharp-SRujvHqy.js +1 -0
  141. package/dist/web/assets/csp-Cr-ll6gP.js +1 -0
  142. package/dist/web/assets/css-BYTJZCno.js +3 -0
  143. package/dist/web/assets/cssMode-Bl7Y9u0B.js +4 -0
  144. package/dist/web/assets/cypher-AmQ0R_D3.js +1 -0
  145. package/dist/web/assets/dart-Du01a0J5.js +1 -0
  146. package/dist/web/assets/dist-CNJKy0Au.js +192 -0
  147. package/dist/web/assets/dist-DGrDIHmK.js +1 -0
  148. package/dist/web/assets/dist-DkaYBczY.js +1 -0
  149. package/dist/web/assets/dist-E9g7EMme.js +1 -0
  150. package/dist/web/assets/dist-wHtavuXf.js +33 -0
  151. package/dist/web/assets/divider-J1wJyhb6.js +82 -0
  152. package/dist/web/assets/dockerfile-Dtlk9wqf.js +1 -0
  153. package/dist/web/assets/ecl-CpmVnLkK.js +1 -0
  154. package/dist/web/assets/editor.store-CIIP294U.js +1 -0
  155. package/dist/web/assets/editor.worker-Di51weDy.js +12 -0
  156. package/dist/web/assets/elixir-B3MVAC8k.js +1 -0
  157. package/dist/web/assets/fieldset-BRuU3VW2.js +88 -0
  158. package/dist/web/assets/flow9-Chkly0RN.js +1 -0
  159. package/dist/web/assets/freemarker2-C-5i2Fhr.js +3 -0
  160. package/dist/web/assets/fsharp-CZvMkppk.js +1 -0
  161. package/dist/web/assets/go-dT2iT7lt.js +1 -0
  162. package/dist/web/assets/graphql-DmObWyBD.js +1 -0
  163. package/dist/web/assets/handlebars-Bq-uEMhK.js +1 -0
  164. package/dist/web/assets/hcl-D1x5Oyp4.js +1 -0
  165. package/dist/web/assets/html-B-mweV_C.js +1 -0
  166. package/dist/web/assets/htmlMode-BlnuAGDY.js +4 -0
  167. package/dist/web/assets/index-BRDI9Dib.css +1 -0
  168. package/dist/web/assets/index-gfmcW9Sb.js +4220 -0
  169. package/dist/web/assets/ini-Bg2o1S3s.js +1 -0
  170. package/dist/web/assets/java-XviKSSn5.js +1 -0
  171. package/dist/web/assets/javascript-D61EWPTf.js +1 -0
  172. package/dist/web/assets/jsonMode-DmSJWG69.js +10 -0
  173. package/dist/web/assets/julia-DfTIwUGh.js +1 -0
  174. package/dist/web/assets/keyboard-nBda2f6m.js +4 -0
  175. package/dist/web/assets/kotlin-CNaIBh9d.js +1 -0
  176. package/dist/web/assets/less-D7o76tXd.js +2 -0
  177. package/dist/web/assets/lexon-Dd374QjV.js +1 -0
  178. package/dist/web/assets/lib-CegStMAw.js +5 -0
  179. package/dist/web/assets/library-BwIJAfg0.js +1 -0
  180. package/dist/web/assets/liquid-BRXADGhu.js +1 -0
  181. package/dist/web/assets/lua-DZKuiFbY.js +1 -0
  182. package/dist/web/assets/m3-CbwRx9Bb.js +1 -0
  183. package/dist/web/assets/markdown-DwLB5Rib.js +1 -0
  184. package/dist/web/assets/mdx-DXlefD6G.js +1 -0
  185. package/dist/web/assets/mediaTypes-BtSbXDUA.js +2 -0
  186. package/dist/web/assets/message-EfwB0RVQ.js +316 -0
  187. package/dist/web/assets/minus-DCEEn9ly.js +2 -0
  188. package/dist/web/assets/mips-DLbIq1yM.js +1 -0
  189. package/dist/web/assets/msdax-D4IjoZ6m.js +1 -0
  190. package/dist/web/assets/multiselect-BMOAw1qo.js +251 -0
  191. package/dist/web/assets/mysql-DQL_jy6H.js +1 -0
  192. package/dist/web/assets/objective-c-D74wM5bv.js +1 -0
  193. package/dist/web/assets/pascal-5tRlZk4O.js +1 -0
  194. package/dist/web/assets/pascaligo-CAE4rAEt.js +1 -0
  195. package/dist/web/assets/password-B0kJu8RE.js +101 -0
  196. package/dist/web/assets/perl-DREAbuQT.js +1 -0
  197. package/dist/web/assets/pgsql-DASKdyAW.js +1 -0
  198. package/dist/web/assets/php-C37ZWqoO.js +1 -0
  199. package/dist/web/assets/pla-v5u9R8i1.js +1 -0
  200. package/dist/web/assets/plus-CaknAInj.js +197 -0
  201. package/dist/web/assets/postiats-Szt5m-7G.js +1 -0
  202. package/dist/web/assets/powerquery-BzVrUSu3.js +1 -0
  203. package/dist/web/assets/powershell-BdbPbX_X.js +1 -0
  204. package/dist/web/assets/pretty-ms-CG-W6pSW.js +202 -0
  205. package/dist/web/assets/primeicons-C6QP2o4f.woff2 +0 -0
  206. package/dist/web/assets/primeicons-DMOk5skT.eot +0 -0
  207. package/dist/web/assets/primeicons-Dr5RGzOO.svg +345 -0
  208. package/dist/web/assets/primeicons-MpK4pl85.ttf +0 -0
  209. package/dist/web/assets/primeicons-WjwUDZjB.woff +0 -0
  210. package/dist/web/assets/process.store-DxDr1XKZ.js +1 -0
  211. package/dist/web/assets/project.store-CUclo-tf.js +1 -0
  212. package/dist/web/assets/protobuf-qqDa50tu.js +2 -0
  213. package/dist/web/assets/pug-Cu20UQ5w.js +1 -0
  214. package/dist/web/assets/python-BeJzJfgr.js +1 -0
  215. package/dist/web/assets/qsharp-DcbHL5X7.js +1 -0
  216. package/dist/web/assets/r-Bvig6Flk.js +1 -0
  217. package/dist/web/assets/radiobutton-Dpp9kpvR.js +145 -0
  218. package/dist/web/assets/razor-C8GjTcdm.js +1 -0
  219. package/dist/web/assets/redis-BxHDcW3-.js +1 -0
  220. package/dist/web/assets/redshift-B8dvlzjH.js +1 -0
  221. package/dist/web/assets/restructuredtext-npodtAFM.js +1 -0
  222. package/dist/web/assets/router-BAq_YY48.js +1 -0
  223. package/dist/web/assets/ruby-DiofbcJD.js +1 -0
  224. package/dist/web/assets/rust-BjYid3-m.js +1 -0
  225. package/dist/web/assets/sb-CzcPAP71.js +1 -0
  226. package/dist/web/assets/scala-Ci4wFrYi.js +1 -0
  227. package/dist/web/assets/scheme-D3iWhvP7.js +1 -0
  228. package/dist/web/assets/scss-DdlqDgmu.js +3 -0
  229. package/dist/web/assets/settings.store-RtV37pb_.js +1 -0
  230. package/dist/web/assets/shell-Bawb9gbH.js +1 -0
  231. package/dist/web/assets/solidity-Z2Sq8PBC.js +1 -0
  232. package/dist/web/assets/sophia--yD-H1Ow.js +1 -0
  233. package/dist/web/assets/sparql-0vv3-wLi.js +1 -0
  234. package/dist/web/assets/sql-0gdWKhmJ.js +1 -0
  235. package/dist/web/assets/st-rE-x-DTZ.js +1 -0
  236. package/dist/web/assets/store-BSUCffsu.js +1840 -0
  237. package/dist/web/assets/style-4Pk2icOw.css +1 -0
  238. package/dist/web/assets/swift-CSKeG8Ne.js +1 -0
  239. package/dist/web/assets/systemverilog-CblNM3Im.js +1 -0
  240. package/dist/web/assets/tabpanel-CXo9Yhvl.js +150 -0
  241. package/dist/web/assets/tag-BsP7PdQ9.js +54 -0
  242. package/dist/web/assets/tcl-BYnzj-GZ.js +1 -0
  243. package/dist/web/assets/toggleswitch-C0fuTzJt.js +115 -0
  244. package/dist/web/assets/trpc-DgyerAaK.js +1 -0
  245. package/dist/web/assets/ts.worker-DHQ2j8_R.js +51339 -0
  246. package/dist/web/assets/tsMode-CaqfXb40.js +11 -0
  247. package/dist/web/assets/twig-DiGWiEtp.js +1 -0
  248. package/dist/web/assets/typescript-D23_zyMA.js +1 -0
  249. package/dist/web/assets/typespec-a6xMcpXw.js +1 -0
  250. package/dist/web/assets/urls-D4kou9RH.js +12 -0
  251. package/dist/web/assets/use-tree-walker-BebEauYQ.js +1 -0
  252. package/dist/web/assets/useAiChatDrawer-DDBZQU71.js +1 -0
  253. package/dist/web/assets/useClipboard-BgE-EP5h.js +1 -0
  254. package/dist/web/assets/useLayout-BtC8xLAa.js +1 -0
  255. package/dist/web/assets/usePluginManager-MFUURiUn.js +1 -0
  256. package/dist/web/assets/useSidebar-DC34K6Vb.js +1 -0
  257. package/dist/web/assets/uuid-B9GFVXPm.js +1 -0
  258. package/dist/web/assets/vb---51HVMC.js +1 -0
  259. package/dist/web/assets/vue-router-CCwpUNtv.js +1 -0
  260. package/dist/web/assets/w3c-keyname-DDCGDLuI.js +1 -0
  261. package/dist/web/assets/wgsl-2A8z4pT5.js +298 -0
  262. package/dist/web/assets/xml-e0SmIpRt.js +1 -0
  263. package/dist/web/assets/yaml-ChhAbF6s.js +1 -0
  264. package/dist/web/index.html +14 -0
  265. package/package.json +7 -7
  266. package/Dockerfile +0 -54
  267. package/scripts/post-build.mjs +0 -61
  268. package/src/__tests__/cli-port.test.ts +0 -93
  269. package/src/index.ts +0 -298
  270. package/src/port-resolution.ts +0 -19
  271. package/tsconfig.json +0 -9
  272. package/tsup.config.bundled_lh0xis3zdq.mjs +0 -10
  273. package/tsup.config.bundled_qj1zdvku09a.mjs +0 -10
  274. package/tsup.config.ts +0 -6
@@ -0,0 +1,2 @@
1
+ import{$i as e,A as t,Bi as n,Bn as r,Ca as i,Cn as a,Dn as o,Ea as s,Gn as c,H as l,Hi as u,I as d,Ii as f,L as p,Ln as m,Mi as h,O as g,Oa as _,P as v,Qr as y,R as ee,Ri as b,Si as x,Sn as S,Tn as C,W as w,Wn as T,Yn as te,_i as E,a as ne,ai as D,at as re,ba as O,bi as k,ca as ie,ci as A,ct as ae,di as j,dt as oe,f as se,fi as M,gi as N,h as ce,ha as P,hn as F,ia as le,it as ue,j as de,k as fe,ka as I,ki as pe,li as L,mn as me,ni as R,nt as he,ot as ge,p as _e,pa as ve,q as z,ra as B,ri as V,rt as H,tt as U,ua as W,ui as G,wn as ye,yi as K,z as be,zn as xe}from"./index-gfmcW9Sb.js";import{t as Se}from"./project.store-CUclo-tf.js";import{t as Ce}from"./tag-BsP7PdQ9.js";import{t as we}from"./editor.store-CIIP294U.js";import"./ProcessControls-L_hld0kN.js";import{t as Te}from"./ServiceControlsBar-Cp2VUifX.js";import{n as Ee,t as De}from"./column-CE6TbiAC.js";import{n as Oe}from"./plus-CaknAInj.js";import{t as ke}from"./checkbox-CQpllPXd.js";import{t as Ae}from"./autocomplete-Bx5M86A5.js";import{t as je}from"./toggleswitch-C0fuTzJt.js";import{a as Me,i as Ne,n as Pe,r as Fe,t as Ie}from"./tabpanel-CXo9Yhvl.js";import{n as Le,t as Re}from"./VariablesTable-CKe8mApI.js";import{t as ze}from"./uuid-B9GFVXPm.js";import{t as Be}from"./message-EfwB0RVQ.js";import{t as Ve}from"./ProcessMetrics-D2vCK15o.js";import{t as He}from"./LogViewer-CV9OmAb1.js";import{t as Ue}from"./divider-J1wJyhb6.js";import{t as We}from"./settings.store-RtV37pb_.js";var Ge={key:0,class:`log-details`},Ke={class:`log-details__section`},qe={class:`log-details__label`},Je={class:`log-details__value log-details__value--box`},Ye={class:`log-details__section`},Xe={class:`log-details__label`},Ze={class:`log-details__value log-details__value--box log-details__value--code`},Qe={class:`log-details__section`},$e={class:`log-details__label`},et={class:`log-details__value log-details__value--box`},tt={class:`log-details__process`},nt={class:`log-details__section`},rt={class:`log-details__label`},it={class:`log-details__value log-details__value--box`},at={class:`log-details__section`},ot={class:`log-details__label`},st={class:`log-details__value log-details__value--box`},ct={key:0,class:`log-details__section`},lt={class:`log-details__label`},ut={class:`log-details__value log-details__value--box`},dt={key:1,class:`log-details__section`},ft={class:`log-details__label`},pt={class:`log-details__value log-details__value--box log-details__value--code`},mt=a(K({__name:`LogDetailsDrawer`,props:{visible:{type:Boolean},log:{}},emits:[`update:visible`,`view-process`],setup(e,{emit:t}){let r=e,{t:a}=te(),s=t,c=A(()=>{if(!r.log)return``;let e=new Date(r.log.timestamp);return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)} ${String(e.getHours()).padStart(2,`0`)}:${String(e.getMinutes()).padStart(2,`0`)}:${String(e.getSeconds()).padStart(2,`0`)}`}),l=A(()=>r.log?r.log.level.charAt(0).toUpperCase()+r.log.level.slice(1):``),u=A(()=>!r.log||r.log.pid==null?a(`logDetails.notAvailable`):String(r.log.pid));function d(){r.log&&s(`view-process`,r.log.processId)}function f(){s(`update:visible`,!1)}return(t,r)=>(n(),G(i(ye),{visible:e.visible,position:`right`,header:i(a)(`logDetails.header`),style:{width:`440px`},"onUpdate:visible":f},{default:B(()=>[e.log?(n(),M(`div`,Ge,[L(`div`,Ke,[L(`div`,qe,I(i(a)(`logDetails.type`)),1),L(`div`,Je,I(l.value),1)]),L(`div`,Ye,[L(`div`,Xe,I(i(a)(`logDetails.rawMessage`)),1),L(`div`,Ze,I(e.log.raw),1)]),L(`div`,Qe,[L(`div`,$e,I(i(a)(`logDetails.serviceId`)),1),L(`div`,et,[L(`div`,tt,[L(`span`,null,I(e.log.processId),1),E(i(o),{label:i(a)(`logDetails.viewProcess`),icon:`pi pi-external-link`,size:`small`,outlined:``,onClick:d},null,8,[`label`])])])]),L(`div`,nt,[L(`div`,rt,I(i(a)(`logDetails.pid`)),1),L(`div`,it,I(u.value),1)]),L(`div`,at,[L(`div`,ot,I(i(a)(`logDetails.timestamp`)),1),L(`div`,st,I(c.value),1)]),e.log.stream?(n(),M(`div`,ct,[L(`div`,lt,I(i(a)(`logDetails.stream`)),1),L(`div`,ut,I(e.log.stream),1)])):j(``,!0),e.log.metadata&&Object.keys(e.log.metadata).length>0?(n(),M(`div`,dt,[L(`div`,ft,I(i(a)(`logDetails.metadata`)),1),L(`div`,pt,I(JSON.stringify(e.log.metadata,null,2)),1)])):j(``,!0)])):j(``,!0)]),_:1},8,[`visible`,`header`]))}}),[[`__scopeId`,`data-v-5781eb9d`]]),ht=500,gt=5,_t=ae;function vt(e){return e+Math.random()*e*.3}function yt(t,n){let r=P([]),i=P(!1),a=null,o=0,s=null,c=me(()=>{o=0,i.value||x()}),l=[],u=null,d=P(0),f=P(0),p=0,m=0,h=null;function g(){h||=setInterval(()=>{d.value=p,f.value=m,p=0,m=0},1e3)}function _(){h&&=(clearInterval(h),null),d.value=0,f.value=0,p=0,m=0}function v(){if(u=null,l.length===0)return;let e=l;l=[],m+=e.length;let t=[...r.value,...e];t.length>ht&&(t=t.slice(t.length-ht)),r.value=t}function y(){!t.value||!n.value||(i.value=!0,a=F.process.onLog.subscribe({agentId:t.value,processId:n.value},{onData(e){let t=e;if(o=0,S(`connected`),t.some(e=>e.__clearLogBuffer)){r.value=[],l=[];return}p+=t.length,l.push(...t),u===null&&(u=requestAnimationFrame(v))},onError(e){console.error(`[useLogStream] Subscription error:`,e.message),i.value=!1,a=null,ee()}}))}function ee(){if(o>=gt){console.warn(`[useLogStream] Max retries (${gt}) reached`),S(`disconnected`);return}S(`reconnecting`);let e=vt(_t*2**o);o++,s=setTimeout(()=>{s=null,x()},e)}async function x(){if(!i.value&&!(!t.value||!n.value)){o=0;try{let e=await F.process.logs.query({agentId:t.value,processId:n.value});e.length>ht&&(e=e.slice(e.length-ht)),r.value=e,S(`connected`)}catch{}y()}}function C(){s&&=(clearTimeout(s),null),u!==null&&(cancelAnimationFrame(u),u=null),l=[],_(),a&&=(a.unsubscribe(),null),i.value=!1,o=0,r.value=[]}return e([t,n],([e,t],[n,r])=>{(e!==n||t!==r)&&(i.value&&C(),x())}),b(()=>{c(),C()}),{logs:r,isStreaming:i,start:x,stop:C,receivedPerSec:d,flushedPerSec:f,startStats:g,stopStats:_}}var bt={class:`service-terminal__toolbar`},xt={class:`service-terminal__toolbar-left`},St={key:0,class:`pid-option`},Ct={key:1,class:`pid-option`},wt={key:0,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,style:{"margin-right":`0.5rem`}},Tt={key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,style:{"margin-right":`0.5rem`}},Et={class:`pid-option`},Dt={key:0,class:`pi pi-list`,style:{"margin-right":`0.5rem`}},Ot=[`title`],kt=[`title`],At={class:`service-terminal__toolbar-right`},jt={class:`service-terminal__content`,"data-testid":`service-terminal-content`},Mt={key:1,class:`service-terminal__shortcuts`},Nt={class:`service-terminal__command-input`},Pt={class:`service-terminal__bottom`},Ft=`runeya_command_history_`,It=50,Lt=a(K({__name:`ServiceTerminal`,props:{service:{},processes:{}},setup(t){let{t:r}=te(),a=t,l=A(()=>a.processes.find(e=>e.state===`running`||e.state===`starting`)??a.processes[0]??null),d=A(()=>l.value?.agentId??``),p=A(()=>l.value?.id??``),m=c(),{logs:h,isStreaming:g,start:_,stop:v,receivedPerSec:y,flushedPerSec:ee,startStats:x,stopStats:S}=yt(d,p),C=P(!1);e(C,e=>{e?x():S()});function T(e){e.ctrlKey&&e.shiftKey&&(e.key===`*`||e.key===`µ`)&&(e.preventDefault(),C.value=!C.value)}let ne=A(()=>{let e=new Map;return h.value.forEach(t=>{if(t.pid!=null){let n=e.get(t.pid);if(n)n.lastSeen=new Date(Math.max(n.lastSeen.getTime(),new Date(t.timestamp).getTime())),n.logCount++;else{let n=a.processes.find(e=>e.pid===t.pid&&(e.state===`running`||e.state===`starting`));e.set(t.pid,{pid:t.pid,lastSeen:new Date(t.timestamp),logCount:1,isActive:!!n})}}}),Array.from(e.values()).sort((e,t)=>t.lastSeen.getTime()-e.lastSeen.getTime())}),re=A(()=>Se.value===`all`?h.value:h.value.filter(e=>e.pid===Se.value)),O=A(()=>ne.value.filter(e=>e.isActive).length),k=A(()=>{let e=[{label:r(`serviceTerminal.allProcesses`),value:`all`,badge:O.value>0?`${O.value} ${r(`serviceTerminal.active`)}`:void 0,isActive:void 0}];return ne.value.forEach(({pid:t,logCount:n,isActive:r})=>{e.push({label:`PID: ${t}`,value:t,badge:`${n} logs`,isActive:r})}),e});A(()=>a.processes.filter(e=>e.state===`running`).length);async function ie(){if(l.value)try{await F.process.clearLogBuffer.mutate({agentId:l.value.agentId,processId:l.value.id}),h.value=[]}catch(e){m.add({severity:`error`,summary:r(`serviceTerminal.error`),detail:e.message??r(`serviceTerminal.failedToClearLogs`),life:5e3})}}let ae=A(()=>a.service.shortcuts??[]),oe=P(new Set);async function se(e){let t=l.value?.agentId??a.service.agentId,n=l.value?.id??a.service.id;if(!t){m.add({severity:`warn`,summary:r(`serviceTerminal.noAgent`),detail:r(`serviceTerminal.noAgentDesc`),life:3e3});return}if(oe.value.has(e.id)){try{await F.process.cancelShortcut.mutate({agentId:t,processId:n,shortcutId:e.id})}catch{}return}oe.value=new Set([...oe.value,e.id]);try{await F.process.executeShortcut.mutate({agentId:t,processId:n,shortcut:e})}catch(e){m.add({severity:`error`,summary:r(`serviceTerminal.shortcutFailed`),detail:e.message??r(`serviceTerminal.shortcutFailed`),life:5e3})}finally{let t=new Set(oe.value);t.delete(e.id),oe.value=t}}let N=P(``),ce=P(!1),le=P(null),ue=P([]),de=P(-1),fe=`ls,ls -la,ls -lh,pwd,echo,echo $PWD,cat,cat package.json,grep,find,find . -name,ps,ps aux,top,htop,df -h,du -sh,tail,tail -f,tail -n 100,head,head -n 20,wc -l,curl,wget,git status,git log,git diff,git branch,npm run,npm install,npm test,npm start,yarn,yarn install,yarn test,yarn build,docker ps,docker logs,docker exec,env,printenv,whoami,hostname,date,uptime`.split(`,`),me=P([]);function R(e){let t=e.query.toLowerCase().trim();if(!t||!N.value.trim()){me.value=[];return}let n=[...ue.value.slice().reverse(),...fe],r=new Set;me.value=n.filter(e=>r.has(e)?!1:(r.add(e),e.toLowerCase().includes(t))).slice(0,10)}function he(){try{let e=localStorage.getItem(Ft+a.service.id);e&&(ue.value=JSON.parse(e))}catch{ue.value=[]}}function ge(){try{localStorage.setItem(Ft+a.service.id,JSON.stringify(ue.value))}catch{}}function _e(e){ue.value[ue.value.length-1]!==e&&(ue.value=[...ue.value,e],ue.value.length>It&&(ue.value=ue.value.slice(-It)),ge())}async function ve(){if(ce.value){let e=l.value?.agentId??a.service.agentId,t=l.value?.id??a.service.id;if(e)try{await F.process.cancelAdHocCommand.mutate({agentId:e,processId:t})}catch{}return}if(!N.value.trim())return;let e=l.value?.agentId??a.service.agentId,t=l.value?.id??a.service.id;if(!e){m.add({severity:`warn`,summary:r(`serviceTerminal.noAgent`),detail:r(`serviceTerminal.noAgentDesc`),life:3e3});return}ce.value=!0;let n=N.value.trim();_e(n),N.value=``,me.value=[],de.value=-1;try{await F.process.executeAdHocCommand.mutate({agentId:e,processId:t,command:n})}catch(e){m.add({severity:`error`,summary:r(`serviceTerminal.commandFailed`),detail:e.message??r(`serviceTerminal.commandFailed`),life:5e3})}finally{ce.value=!1,pe(()=>{document.querySelector(`.service-terminal__input`)?.focus()})}}function z(e){if(e.key===`Enter`&&!e.shiftKey){e.preventDefault(),ve();return}if(e.key===`ArrowUp`){if(e.preventDefault(),ue.value.length===0)return;de.value===-1?de.value=ue.value.length-1:de.value>0&&de.value--,N.value=ue.value[de.value]||``}else if(e.key===`ArrowDown`){if(e.preventDefault(),de.value===-1)return;de.value<ue.value.length-1?(de.value++,N.value=ue.value[de.value]||``):(de.value=-1,N.value=``)}}function V(){if(h.value.length===0)return;let e=h.value.map(e=>`[${new Date(e.timestamp).toISOString()}] ${e.level.toUpperCase().padEnd(5)} ${e.message}`),t=new Blob([e.join(`
2
+ `)],{type:`text/plain`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${a.service.name}-${new Date().toISOString().slice(0,19).replace(/:/g,`-`)}.log`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}let H=P(0),U=0,W=null,ye=null;e(l,e=>{if(!(e&&(e.state===`running`||e.state===`starting`))){W&&=(clearInterval(W),null),ye=null,H.value=e?.uptime??0;return}let t=e.uptime??0;e.id!==ye&&(W&&=(clearInterval(W),null),ye=e.id,U=e.startedAt?new Date(e.startedAt).getTime():Date.now()-t,H.value=Date.now()-U,W=setInterval(()=>{H.value=Date.now()-U},1e3))},{immediate:!0});let K=P(!0),be=P(null),xe=P(!1),Se=P(`all`),we=P(!1);function Ee(){we.value=!we.value}f(()=>{he(),l.value&&_(),window.addEventListener(`keydown`,T)}),b(()=>{v(),window.removeEventListener(`keydown`,T),W&&clearInterval(W)});function De(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.floor(e%60);return`${t.toString().padStart(2,`0`)}:${n.toString().padStart(2,`0`)}:${r.toString().padStart(2,`0`)}`}function Oe(e){be.value=e,xe.value=!0}function ke(e){xe.value=!1,m.add({severity:`info`,summary:`Process`,detail:`Process ID: ${e}`,life:3e3})}return(e,c)=>(n(),M(`div`,{class:s([`service-terminal`,{"service-terminal--fullscreen":we.value}]),"data-testid":`service-terminal`},[we.value?(n(),G(Te,{key:0,service:t.service,processes:t.processes},null,8,[`service`,`processes`])):j(``,!0),L(`div`,bt,[L(`div`,xt,[E(i(o),{label:i(r)(`serviceTerminal.logs`),severity:K.value?`primary`:`secondary`,text:``,size:`small`,onClick:c[0]||=e=>K.value=!0},null,8,[`label`,`severity`]),E(i(w),{modelValue:Se.value,"onUpdate:modelValue":c[1]||=e=>Se.value=e,options:k.value,"option-label":`label`,"option-value":`value`,class:`service-terminal__pid-selector`},{value:B(e=>[e.value===`all`?(n(),M(`div`,St,[c[4]||=L(`i`,{class:`pi pi-list`,style:{"margin-right":`0.5rem`}},null,-1),L(`span`,null,I(i(r)(`serviceTerminal.allProcesses`)),1),O.value>0?(n(),G(i(Ce),{key:0,value:`${O.value} ${i(r)(`serviceTerminal.active`)}`,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):j(``,!0)])):(n(),M(`div`,Ct,[k.value.find(t=>t.value===e.value)?.isActive?(n(),M(`i`,wt)):(n(),M(`i`,Tt)),L(`span`,null,`PID: `+I(e.value),1)]))]),option:B(e=>[L(`div`,Et,[e.option.value===`all`?(n(),M(`i`,Dt)):e.option.isActive?(n(),M(`i`,{key:1,class:`pi pi-circle-fill pid-status-icon pid-status-icon--active`,title:i(r)(`serviceTerminal.running`)},null,8,Ot)):(n(),M(`i`,{key:2,class:`pi pi-circle-fill pid-status-icon pid-status-icon--stopped`,title:i(r)(`serviceTerminal.stopped`)},null,8,kt)),L(`span`,null,I(e.option.label),1),e.option.badge?(n(),G(i(Ce),{key:3,value:e.option.badge,severity:`secondary`,class:`pid-badge`},null,8,[`value`])):j(``,!0)])]),_:1},8,[`modelValue`,`options`])]),L(`div`,At,[E(i(o),{icon:we.value?`pi pi-window-minimize`:`pi pi-window-maximize`,text:``,rounded:``,size:`small`,title:we.value?i(r)(`serviceTerminal.exitFullscreen`):i(r)(`serviceTerminal.fullscreen`),onClick:Ee},null,8,[`icon`,`title`]),E(i(o),{icon:`pi pi-download`,text:``,rounded:``,size:`small`,title:i(r)(`serviceTerminal.downloadLogs`),disabled:i(h).length===0,onClick:V},null,8,[`title`,`disabled`]),E(i(o),{icon:`pi pi-trash`,text:``,rounded:``,size:`small`,title:i(r)(`serviceTerminal.clearLogs`),disabled:i(h).length===0,onClick:ie},null,8,[`title`,`disabled`])])]),L(`div`,jt,[E(He,{logs:re.value,loading:!1,"received-per-sec":i(y),"flushed-per-sec":i(ee),"show-stats":C.value,"service-label":a.service.label||a.service.name,onLogClick:Oe},null,8,[`logs`,`received-per-sec`,`flushed-per-sec`,`show-stats`,`service-label`])]),ae.value.length>0?(n(),M(`div`,Mt,[(n(!0),M(D,null,u(ae.value,e=>(n(),G(i(o),{key:e.id,label:e.label||e.command,"data-shortcut-id":e.id,class:`shortcut-badge`,icon:oe.value.has(e.id)?`pi pi-stop`:`pi pi-play`,size:`small`,outlined:!oe.value.has(e.id),severity:oe.value.has(e.id)?`danger`:void 0,onClick:t=>se(e)},null,8,[`label`,`data-shortcut-id`,`icon`,`outlined`,`severity`,`onClick`]))),128))])):j(``,!0),L(`div`,Nt,[c[5]||=L(`span`,{class:`service-terminal__prompt`,"data-testid":`terminal-prompt`},`>`,-1),E(i(Ae),{ref_key:`adHocCommandInput`,ref:le,modelValue:N.value,"onUpdate:modelValue":c[2]||=e=>N.value=e,suggestions:me.value,class:`service-terminal__autocomplete`,"input-class":`service-terminal__input`,placeholder:i(r)(`serviceTerminal.enterCommand`),"aria-label":i(r)(`serviceTerminal.enterCommand`),disabled:!a.service.agentId||ce.value,"data-testid":`terminal-command-input`,onComplete:R,onKeydown:z},null,8,[`modelValue`,`suggestions`,`placeholder`,`aria-label`,`disabled`]),E(i(o),{icon:ce.value?`pi pi-stop`:`pi pi-play`,severity:ce.value?`danger`:void 0,size:`small`,"data-testid":`terminal-run-btn`,disabled:!a.service.agentId||!N.value.trim()&&!ce.value,onClick:ve},null,8,[`icon`,`severity`,`disabled`])]),L(`div`,Pt,[l.value?(n(),G(i(Ce),{key:0,icon:`pi pi-server`,value:l.value.agentId.slice(0,8),severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):j(``,!0),t.service.cwd?(n(),G(i(Ce),{key:1,icon:`pi pi-folder`,value:t.service.cwd,severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):j(``,!0),l.value&&(l.value.state===`running`||l.value.state===`starting`)?(n(),G(i(Ce),{key:2,icon:`pi pi-clock`,value:De(H.value/1e3),severity:`secondary`,class:`service-terminal__pill`},null,8,[`value`])):j(``,!0)]),E(mt,{visible:xe.value,"onUpdate:visible":c[3]||=e=>xe.value=e,log:be.value,onViewProcess:ke},null,8,[`visible`,`log`])],2))}}),[[`__scopeId`,`data-v-6b117886`]]),Rt=5,zt=ae;function Bt(e){return e+Math.random()*e*.3}function Vt(t,n){let r=P(null),i=P(!1),a=null,o=0,s=null;async function c(){if(!i.value){try{r.value=await F.process.metrics.query({agentId:t.value,processId:n.value})}catch(e){console.error(`Failed to fetch initial metrics:`,H(e))}l()}}function l(){i.value=!0,a=F.process.onMetrics.subscribe({agentId:t.value,processId:n.value},{onData(e){o=0,S(`connected`),r.value=e},onError(e){console.error(`Metrics stream error:`,e),i.value=!1,a=null,u()}})}function u(){if(o>=Rt){console.warn(`Metrics stream: max retries (${Rt}) reached, giving up`),S(`disconnected`);return}S(`reconnecting`);let e=Bt(zt*2**o);o++,s=setTimeout(()=>{s=null,l()},e)}function d(){s&&=(clearTimeout(s),null),a&&=(a.unsubscribe(),null),i.value=!1,o=0}return e([t,n],([e,t],[n,r])=>{(e!==n||t!==r)&&i.value&&(d(),c())}),b(()=>{d()}),{metrics:r,isStreaming:i,start:c,stop:d}}var Ht={class:`service-metrics`,"data-testid":`service-metrics`},Ut={key:1,class:`service-metrics__no-data`},Wt={key:1,class:`service-metrics__no-process`},Gt=a(K({__name:`ServiceMetrics`,props:{service:{},processes:{}},setup(e){let t=e,r=A(()=>t.processes.find(e=>e.state===`running`||e.state===`starting`)??t.processes[0]??null),a=A(()=>r.value?.agentId??``),o=A(()=>r.value?.id??``),{t:s}=te(),{metrics:c,start:l,stop:u}=Vt(a,o);return f(()=>{r.value&&l()}),b(()=>{u()}),(e,t)=>(n(),M(`div`,Ht,[r.value?(n(),M(D,{key:0},[i(c)?(n(),G(Ve,{key:0,cpu:i(c).cpu,memory:i(c).memory},null,8,[`cpu`,`memory`])):(n(),M(`div`,Ut,I(i(s)(`serviceMetrics.noData`)),1))],64)):(n(),M(`div`,Wt,[t[0]||=L(`i`,{class:`pi pi-info-circle`},null,-1),L(`span`,null,I(i(s)(`serviceMetrics.notRunning`)),1)]))]))}}),[[`__scopeId`,`data-v-58ac7675`]]),Kt=`runeya:debug`,qt=P(localStorage.getItem(Kt)===`true`);function Jt(){function e(){qt.value=!qt.value,localStorage.setItem(Kt,String(qt.value))}return{isDebug:qt,toggle:e}}var Yt={class:`config-general`},Xt={class:`config-card`},Zt={class:`config-card__header`},Qt={class:`config-card`},$t={class:`config-card__header`},en={class:`config-card__hint`},tn={class:`config-card`},nn={class:`config-card__header`},rn={class:`config-card__hint`},an={class:`config-card`},on={class:`config-card__header`},sn={class:`config-card__hint`},cn={class:`config-card`},ln={class:`config-card__header`},un={class:`config-card__hint`},dn={class:`config-card`},fn={class:`config-card__header`},pn={class:`config-card__hint`},mn={class:`config-card`},hn={class:`config-card__header`},gn={class:`config-card__hint`},_n={class:`config-card`},vn={class:`config-card__header`},yn={class:`config-card__hint`},bn={class:`config-card__hint`},xn={class:`config-card`},Sn={class:`config-card__header`},Cn={class:`config-card__hint`},wn={class:`config-meta`},Tn={class:`config-card config-card--inline`},En={class:`config-card__header`},Dn={class:`config-card config-card--inline`},On={class:`config-card__header`},kn=a(K({__name:`ServiceConfigGeneral`,props:{service:{}},emits:[`save`],setup(t,{emit:r}){let{t:a}=te(),s=t,c=r;function l(e){return Object.entries(e??{}).map(([e,t])=>({key:e,value:t}))}let d=P({name:s.service.name,cwd:s.service.cwd??``,ports:(s.service.ports??[]).map(String),groups:[...s.service.groups??[]],description:s.service.description??``,url:s.service.url??``,openapiUrl:s.service.openapiUrl??``,gitRemote:s.service.git?.remote??``,gitHome:s.service.git?.home??``,autoRestart:s.service.autoRestart,clearLogsOnStart:s.service.clearLogsOnStart??!1}),f=P(l(s.service.meta));e(()=>s.service,e=>{d.value={name:e.name,cwd:e.cwd??``,ports:(e.ports??[]).map(String),groups:[...e.groups??[]],description:e.description??``,url:e.url??``,openapiUrl:e.openapiUrl??``,gitRemote:e.git?.remote??``,gitHome:e.git?.home??``,autoRestart:e.autoRestart,clearLogsOnStart:e.clearLogsOnStart??!1},f.value=l(e.meta)});function p(){f.value=[...f.value,{key:``,value:``}]}function m(e){f.value=f.value.filter((t,n)=>n!==e)}function h(e,t,n){f.value=f.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function g(){let e={};for(let{key:t,value:n}of f.value){let r=t.trim();r&&(e[r]=n)}return{name:d.value.name,cwd:d.value.cwd||null,ports:d.value.ports.map(Number).filter(e=>e>0&&e<=65535),groups:d.value.groups,description:d.value.description,url:d.value.url,openapiUrl:d.value.openapiUrl,git:d.value.gitRemote||d.value.gitHome?{remote:d.value.gitRemote||void 0,home:d.value.gitHome||void 0}:null,autoRestart:d.value.autoRestart,clearLogsOnStart:d.value.clearLogsOnStart,meta:Object.keys(e).length>0?e:null}}let _=null;function v(){_&&clearTimeout(_),_=setTimeout(()=>{c(`save`,g()),_=null},150)}return(e,t)=>(n(),M(`div`,Yt,[L(`div`,Xt,[L(`div`,Zt,[t[11]||=L(`i`,{class:`pi pi-tag`},null,-1),L(`span`,null,I(i(a)(`serviceConfigGeneral.name`)),1)]),E(i(z),{modelValue:d.value.name,"onUpdate:modelValue":t[0]||=e=>d.value.name=e,class:`config-card__input`,onBlur:v,onKeydown:R(V(v,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),L(`div`,Qt,[L(`div`,$t,[t[12]||=L(`i`,{class:`pi pi-folder`},null,-1),L(`span`,null,I(i(a)(`serviceConfigGeneral.workingDirectory`)),1)]),E(i(z),{modelValue:d.value.cwd,"onUpdate:modelValue":t[1]||=e=>d.value.cwd=e,class:`config-card__input`,placeholder:`.`,onBlur:v,onKeydown:R(V(v,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),L(`small`,en,I(i(a)(`serviceConfigGeneral.cwdHint`)),1)]),L(`div`,tn,[L(`div`,nn,[t[13]||=L(`i`,{class:`pi pi-globe`},null,-1),L(`span`,null,I(i(a)(`serviceConfigGeneral.ports`)),1)]),E(i(Ae),{modelValue:d.value.ports,"onUpdate:modelValue":t[2]||=e=>d.value.ports=e,multiple:``,typeahead:!1,class:`config-card__input`,placeholder:i(a)(`serviceConfigGeneral.portsPlaceholder`),onChange:v},null,8,[`modelValue`,`placeholder`]),L(`small`,rn,I(i(a)(`serviceConfigGeneral.portsHint`)),1)]),L(`div`,an,[L(`div`,on,[t[14]||=L(`i`,{class:`pi pi-th-large`},null,-1),L(`span`,null,I(i(a)(`serviceConfigGeneral.groups`)),1)]),E(i(Ae),{modelValue:d.value.groups,"onUpdate:modelValue":t[3]||=e=>d.value.groups=e,multiple:``,typeahead:!1,class:`config-card__input`,placeholder:i(a)(`serviceConfigGeneral.groupsPlaceholder`),onChange:v},null,8,[`modelValue`,`placeholder`]),L(`small`,sn,I(i(a)(`serviceConfigGeneral.groupsHint`)),1)]),L(`div`,cn,[L(`div`,ln,[t[15]||=L(`i`,{class:`pi pi-info-circle`},null,-1),L(`span`,null,I(i(a)(`serviceConfigGeneral.description`)),1)]),E(i(de),{modelValue:d.value.description,"onUpdate:modelValue":t[4]||=e=>d.value.description=e,class:`config-card__input`,rows:2,onBlur:v},null,8,[`modelValue`]),L(`small`,un,I(i(a)(`serviceConfigGeneral.descriptionHint`)),1)]),L(`div`,dn,[L(`div`,fn,[t[16]||=L(`i`,{class:`pi pi-external-link`},null,-1),L(`span`,null,I(i(a)(`serviceConfigGeneral.url`)),1)]),E(i(z),{modelValue:d.value.url,"onUpdate:modelValue":t[5]||=e=>d.value.url=e,class:`config-card__input`,placeholder:`https://...`,onBlur:v,onKeydown:R(V(v,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),L(`small`,pn,I(i(a)(`serviceConfigGeneral.urlHint`)),1)]),L(`div`,mn,[L(`div`,hn,[t[17]||=L(`i`,{class:`pi pi-book`},null,-1),L(`span`,null,I(i(a)(`serviceConfigGeneral.openapiUrl`)),1)]),E(i(z),{modelValue:d.value.openapiUrl,"onUpdate:modelValue":t[6]||=e=>d.value.openapiUrl=e,class:`config-card__input`,placeholder:`https://.../swagger.json`,onBlur:v,onKeydown:R(V(v,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),L(`small`,gn,I(i(a)(`serviceConfigGeneral.openapiUrlHint`)),1)]),L(`div`,_n,[L(`div`,vn,[t[18]||=L(`i`,{class:`pi pi-github`},null,-1),L(`span`,null,I(i(a)(`serviceConfigGeneral.git`)),1)]),E(i(z),{modelValue:d.value.gitRemote,"onUpdate:modelValue":t[7]||=e=>d.value.gitRemote=e,class:`config-card__input`,placeholder:`git@github.com:org/repo.git`,onBlur:v,onKeydown:R(V(v,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),L(`small`,yn,I(i(a)(`serviceConfigGeneral.gitRemoteHint`)),1),E(i(z),{modelValue:d.value.gitHome,"onUpdate:modelValue":t[8]||=e=>d.value.gitHome=e,class:`config-card__input`,style:{"margin-top":`0.5rem`},placeholder:`https://github.com/org/repo`,onBlur:v,onKeydown:R(V(v,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),L(`small`,bn,I(i(a)(`serviceConfigGeneral.gitHomeHint`)),1)]),L(`div`,xn,[L(`div`,Sn,[t[19]||=L(`i`,{class:`pi pi-hashtag`},null,-1),L(`span`,null,I(i(a)(`serviceConfigGeneral.meta`)),1)]),L(`small`,Cn,I(i(a)(`serviceConfigGeneral.metaHint`)),1),L(`div`,wn,[(n(!0),M(D,null,u(f.value,(e,t)=>(n(),M(`div`,{key:t,class:`config-meta__row`},[E(i(z),{"model-value":e.key,placeholder:i(a)(`serviceConfigGeneral.metaKeyPlaceholder`),class:`config-meta__input`,"onUpdate:modelValue":e=>h(t,`key`,e),onBlur:v,onKeydown:R(V(v,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),E(i(z),{"model-value":e.value,placeholder:i(a)(`serviceConfigGeneral.metaValuePlaceholder`),class:`config-meta__input config-meta__input--wide`,"onUpdate:modelValue":e=>h(t,`value`,e),onBlur:v,onKeydown:R(V(v,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),E(i(o),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{m(t),v()}},null,8,[`onClick`])]))),128)),E(i(o),{label:i(a)(`serviceConfigGeneral.addEntry`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,class:`config-meta__add`,onClick:p},null,8,[`label`])])]),L(`div`,Tn,[L(`div`,En,[t[20]||=L(`i`,{class:`pi pi-refresh`},null,-1),L(`span`,null,I(i(a)(`serviceConfigGeneral.autoRestart`)),1)]),E(i(je),{modelValue:d.value.autoRestart,"onUpdate:modelValue":t[9]||=e=>d.value.autoRestart=e,onChange:v},null,8,[`modelValue`])]),L(`div`,Dn,[L(`div`,On,[t[21]||=L(`i`,{class:`pi pi-trash`},null,-1),L(`span`,null,I(i(a)(`serviceConfigGeneral.clearLogs`)),1)]),E(i(je),{modelValue:d.value.clearLogsOnStart,"onUpdate:modelValue":t[10]||=e=>d.value.clearLogsOnStart=e,onChange:v},null,8,[`modelValue`])])]))}}),[[`__scopeId`,`data-v-03373387`]]),An={class:`docker-config`},jn={class:`docker-config__section`},Mn={class:`docker-config__section-title`},Nn={class:`docker-config__mode-toggle`},Pn={class:`docker-config__mode-option`},Fn={class:`docker-config__mode-option`},In={key:0,class:`docker-config__section`},Ln={class:`docker-config__label`},Rn={class:`docker-config__section`},zn={class:`docker-config__section`},Bn={class:`docker-config__label`},Vn={class:`docker-config__section`},Hn={class:`docker-config__label`},Un={class:`docker-config__kv-list`},Wn={class:`docker-config__section`},Gn={class:`docker-config__label`},Kn={class:`docker-config__section`},qn={class:`docker-config__section-title`},Jn={class:`docker-config__section`},Yn={class:`docker-config__label`},Xn={class:`docker-config__section`},Zn={class:`docker-config__label`},Qn={key:2,class:`docker-config__section`},$n={class:`docker-config__label`},er={class:`docker-config__list`},tr={class:`docker-config__section`},nr={class:`docker-config__label`},rr={class:`docker-config__checkbox-row`},ir={for:`mountRootpath`,class:`docker-config__checkbox-label`},ar={class:`docker-config__list`},or={class:`docker-config__section`},sr={class:`docker-config__checkbox-row`},cr={for:`useNativeCommand`,class:`docker-config__checkbox-label`},lr={key:0,class:`docker-config__shell-row`},ur={class:`docker-config__label`},dr={class:`docker-config__hint`},fr={key:1,class:`docker-config__mode-toggle docker-config__mode-toggle--indented`},pr={class:`docker-config__mode-option`},mr={class:`docker-config__mode-option`},hr={class:`docker-config__section`},gr={class:`docker-config__label`},_r={class:`docker-config__section`},vr={class:`docker-config__label`},yr={class:`docker-config__section`},br={class:`docker-config__section-title`},xr={class:`docker-config__bootstrap-row`},Sr={class:`docker-config__bootstrap-field`},Cr={class:`docker-config__bootstrap-field`},wr={class:`docker-config__bootstrap-field docker-config__bootstrap-field--wide`},Tr={class:`docker-config__bootstrap-field`},Er={class:`docker-config__bootstrap-actions`},Dr={class:`docker-config__section`},Or=a(K({__name:`ServiceConfigDocker`,props:{service:{}},emits:[`save`],setup(e,{emit:t}){let{t:r}=te(),a=e,s=t,c=a.service.dockerConfig??{},l=P(c.dockerfile?`build`:`image`),d=P(c.image??``),f=P(c.dockerfile??``),p=P(c.buildContext??``),m=P(Object.entries(c.buildArgs??{}).map(([e,t])=>({key:e,value:t}))),h=P(c.targetStage??``),g=P(c.networkMode??`host`),_=P([...c.ports??[]]),v=P([...c.volumes??[]]),ee=P(c.mountRootpath??!1),b=P(c.entrypoint??``),x=P(c.command??``),S=P(c.user??``),T=P(c.useNativeCommand??!1),ne=P(c.nativeCommandMode??`isolated`),re=P(c.nativeShell??`sh`),O=[{label:`sh (POSIX)`,value:`sh`},{label:`bash`,value:`bash`},{label:`zsh`,value:`zsh`},{label:`ash (Alpine)`,value:`ash`}],k=P([...c.bootstrapCommands??[]]),ie=P(!1),A=[{label:`Host (--network host)`,value:`host`},{label:`Bridge`,value:`bridge`}];function ae(){m.value=[...m.value,{key:``,value:``}]}function oe(e){m.value=m.value.filter((t,n)=>n!==e)}function ce(e,t,n){m.value=m.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function F(){_.value=[..._.value,``]}function ue(e){_.value=_.value.filter((t,n)=>n!==e)}function de(e,t){_.value=_.value.map((n,r)=>r===e?t:n)}function fe(){v.value=[...v.value,``]}function pe(e){v.value=v.value.filter((t,n)=>n!==e)}function me(e,t){v.value=v.value.map((n,r)=>r===e?t:n)}function he(){k.value=[...k.value,{id:ze(),label:`Bootstrap`,entrypoint:`/bin/sh`,command:`-c ""`,user:void 0}]}function ge(e){k.value=k.value.filter((t,n)=>n!==e)}function _e(e,t,n){k.value=k.value.map((r,i)=>i===e?{...r,[t]:n===``?void 0:n}:r)}function ve(e,t){let n=[...k.value],r=e+t;r<0||r>=n.length||([n[e],n[r]]=[n[r],n[e]],k.value=n)}let H=null;function U(){H&&clearTimeout(H),H=setTimeout(()=>{let e={};for(let{key:t,value:n}of m.value)t.trim()&&(e[t.trim()]=n);s(`save`,{image:l.value===`image`&&d.value||void 0,dockerfile:l.value===`build`&&f.value||void 0,buildContext:p.value||void 0,buildArgs:e,targetStage:h.value||void 0,networkMode:g.value,ports:_.value.filter(Boolean),volumes:v.value.filter(Boolean),mountRootpath:ee.value,entrypoint:b.value||void 0,command:x.value||void 0,user:S.value||void 0,useNativeCommand:T.value,nativeCommandMode:ne.value,nativeShell:re.value,bootstrapCommands:k.value}),H=null},150)}function W(e){ge(e),U()}function G(e,t){ve(e,t),U()}function ye(e){oe(e),U()}function K(e){ue(e),U()}function be(e){pe(e),U()}return(e,t)=>(n(),M(`div`,An,[L(`div`,jn,[L(`label`,Mn,I(i(r)(`serviceConfigDocker.imageSource`)),1),L(`div`,Nn,[L(`label`,Pn,[le(L(`input`,{"onUpdate:modelValue":t[0]||=e=>l.value=e,type:`radio`,value:`image`,class:`docker-config__radio`,onChange:U},null,544),[[y,l.value]]),N(` `+I(i(r)(`serviceConfigDocker.pullImage`)),1)]),L(`label`,Fn,[le(L(`input`,{"onUpdate:modelValue":t[1]||=e=>l.value=e,type:`radio`,value:`build`,class:`docker-config__radio`,onChange:U},null,544),[[y,l.value]]),N(` `+I(i(r)(`serviceConfigDocker.buildDockerfile`)),1)])])]),l.value===`image`?(n(),M(`div`,In,[L(`label`,Ln,I(i(r)(`serviceConfigDocker.image`)),1),E(i(z),{modelValue:d.value,"onUpdate:modelValue":t[2]||=e=>d.value=e,placeholder:i(r)(`serviceConfigDocker.imagePlaceholder`),class:`docker-config__input`,onBlur:U,onKeydown:R(V(U,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])):j(``,!0),l.value===`build`?(n(),M(D,{key:1},[L(`div`,Rn,[t[18]||=L(`label`,{class:`docker-config__label`},`Dockerfile`,-1),E(i(o),{label:i(r)(`serviceConfigDocker.editDockerfile`),icon:`pi pi-file-edit`,severity:`secondary`,outlined:``,size:`small`,onClick:t[3]||=e=>ie.value=!0},null,8,[`label`]),E(i(C),{visible:ie.value,"onUpdate:visible":t[6]||=e=>ie.value=e,header:i(r)(`serviceConfigDocker.editDockerfile`),modal:``,style:{width:`800px`}},{footer:B(()=>[E(i(o),{label:i(r)(`serviceConfigDocker.closeDockerfile`),icon:`pi pi-times`,onClick:t[5]||=()=>{ie.value=!1,U()}},null,8,[`label`])]),default:B(()=>[E(se,{modelValue:f.value,"onUpdate:modelValue":t[4]||=e=>f.value=e,language:`dockerfile`,style:{height:`400px`}},null,8,[`modelValue`])]),_:1},8,[`visible`,`header`])]),L(`div`,zn,[L(`label`,Bn,I(i(r)(`serviceConfigDocker.buildContext`)),1),E(i(z),{modelValue:p.value,"onUpdate:modelValue":t[7]||=e=>p.value=e,placeholder:`.`,class:`docker-config__input`,onBlur:U,onKeydown:R(V(U,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),L(`div`,Vn,[L(`label`,Hn,I(i(r)(`serviceConfigDocker.buildArgs`)),1),L(`div`,Un,[(n(!0),M(D,null,u(m.value,(e,t)=>(n(),M(`div`,{key:t,class:`docker-config__kv-row`},[E(i(z),{"model-value":e.key,placeholder:i(r)(`serviceConfigDocker.argNamePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>ce(t,`key`,e),onBlur:U,onKeydown:R(V(U,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),E(i(z),{"model-value":e.value,placeholder:i(r)(`serviceConfigDocker.argValuePlaceholder`),class:`docker-config__kv-input`,"onUpdate:modelValue":e=>ce(t,`value`,e),onBlur:U,onKeydown:R(V(U,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),E(i(o),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>ye(t)},null,8,[`onClick`])]))),128)),E(i(o),{label:i(r)(`serviceConfigDocker.addBuildArg`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:ae},null,8,[`label`])])]),L(`div`,Wn,[L(`label`,Gn,I(i(r)(`serviceConfigDocker.targetStage`)),1),E(i(z),{modelValue:h.value,"onUpdate:modelValue":t[8]||=e=>h.value=e,placeholder:i(r)(`serviceConfigDocker.targetStagePlaceholder`),class:`docker-config__input`,onBlur:U,onKeydown:R(V(U,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)):j(``,!0),E(i(Ue)),L(`div`,Kn,[L(`label`,qn,I(i(r)(`serviceConfigDocker.runtimeConfig`)),1)]),L(`div`,Jn,[L(`label`,Yn,I(i(r)(`serviceConfigDocker.userGroup`)),1),E(i(z),{modelValue:S.value,"onUpdate:modelValue":t[9]||=e=>S.value=e,placeholder:i(r)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,onBlur:U,onKeydown:R(V(U,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),L(`div`,Xn,[L(`label`,Zn,I(i(r)(`serviceConfigDocker.networkMode`)),1),E(i(w),{modelValue:g.value,"onUpdate:modelValue":t[10]||=e=>g.value=e,options:A,"option-label":`label`,"option-value":`value`,class:`docker-config__select`,onChange:U},null,8,[`modelValue`])]),g.value===`bridge`?(n(),M(`div`,Qn,[L(`label`,$n,I(i(r)(`serviceConfigDocker.portMappings`)),1),L(`div`,er,[(n(!0),M(D,null,u(_.value,(e,t)=>(n(),M(`div`,{key:t,class:`docker-config__list-row`},[E(i(z),{"model-value":e,placeholder:i(r)(`serviceConfigDocker.portPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>de(t,e),onBlur:U,onKeydown:R(V(U,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),E(i(o),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>K(t)},null,8,[`onClick`])]))),128)),E(i(o),{label:i(r)(`serviceConfigDocker.addPort`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:F},null,8,[`label`])])])):j(``,!0),L(`div`,tr,[L(`label`,nr,I(i(r)(`serviceConfigDocker.volumes`)),1),L(`div`,rr,[E(i(ke),{modelValue:ee.value,"onUpdate:modelValue":t[11]||=e=>ee.value=e,binary:!0,"input-id":`mountRootpath`,onChange:U},null,8,[`modelValue`]),L(`label`,ir,I(i(r)(`serviceConfigDocker.autoMount`)),1)]),L(`div`,ar,[(n(!0),M(D,null,u(v.value,(e,t)=>(n(),M(`div`,{key:t,class:`docker-config__list-row`},[E(i(z),{"model-value":e,placeholder:i(r)(`serviceConfigDocker.volumePlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>me(t,e),onBlur:U,onKeydown:R(V(U,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`]),E(i(o),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>be(t)},null,8,[`onClick`])]))),128)),E(i(o),{label:i(r)(`serviceConfigDocker.addVolume`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:fe},null,8,[`label`])])]),E(i(Ue)),L(`div`,or,[L(`div`,sr,[E(i(ke),{modelValue:T.value,"onUpdate:modelValue":t[12]||=e=>T.value=e,binary:!0,"input-id":`useNativeCommand`,onChange:U},null,8,[`modelValue`]),L(`label`,cr,I(i(r)(`serviceConfigDocker.runNative`)),1)]),t[21]||=L(`span`,{class:`docker-config__hint`},` When enabled, the service command is executed directly inside the container (ignores CMD override below). `,-1),T.value?(n(),M(`div`,lr,[L(`label`,ur,I(i(r)(`serviceConfigDocker.shell`)),1),E(i(w),{modelValue:re.value,"onUpdate:modelValue":t[13]||=e=>re.value=e,options:O,"option-label":`label`,"option-value":`value`,class:`docker-config__select docker-config__select--small`,editable:``,placeholder:i(r)(`serviceConfigDocker.shellPlaceholder`),onChange:U},null,8,[`modelValue`,`placeholder`]),L(`span`,dr,[N(I(i(r)(`serviceConfigDocker.shellHint`))+` (`,1),t[19]||=L(`code`,null,`shell -c '...'`,-1),t[20]||=N(`)`,-1)])])):j(``,!0),T.value?(n(),M(`div`,fr,[L(`label`,pr,[le(L(`input`,{"onUpdate:modelValue":t[14]||=e=>ne.value=e,type:`radio`,value:`isolated`,class:`docker-config__radio`,onChange:U},null,544),[[y,ne.value]]),N(` `+I(i(r)(`serviceConfigDocker.isolated`)),1)]),L(`label`,mr,[le(L(`input`,{"onUpdate:modelValue":t[15]||=e=>ne.value=e,type:`radio`,value:`shared`,class:`docker-config__radio`,onChange:U},null,544),[[y,ne.value]]),N(` `+I(i(r)(`serviceConfigDocker.shared`)),1)])])):j(``,!0)]),T.value?j(``,!0):(n(),M(D,{key:3},[t[22]||=L(`div`,{class:`docker-config__section`},[L(`label`,{class:`docker-config__section-title`},`Override`)],-1),L(`div`,hr,[L(`label`,gr,I(i(r)(`serviceConfigDocker.entrypoint`)),1),E(i(z),{modelValue:b.value,"onUpdate:modelValue":t[16]||=e=>b.value=e,placeholder:i(r)(`serviceConfigDocker.entrypointPlaceholder`),class:`docker-config__input`,onBlur:U,onKeydown:R(V(U,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])]),L(`div`,_r,[L(`label`,vr,I(i(r)(`serviceConfigDocker.cmdOverride`)),1),E(i(z),{modelValue:x.value,"onUpdate:modelValue":t[17]||=e=>x.value=e,placeholder:i(r)(`serviceConfigDocker.cmdPlaceholder`),class:`docker-config__input`,onBlur:U,onKeydown:R(V(U,[`prevent`]),[`enter`])},null,8,[`modelValue`,`placeholder`,`onKeydown`])])],64)),E(i(Ue)),L(`div`,yr,[L(`label`,br,[N(I(i(r)(`serviceConfigDocker.bootstrapCommands`))+` `,1),t[23]||=L(`span`,{class:`docker-config__hint-inline`},` — run sequentially before the service starts`,-1)])]),(n(!0),M(D,null,u(k.value,(e,a)=>(n(),M(`div`,{key:e.id,class:`docker-config__bootstrap-card`},[L(`div`,xr,[L(`div`,Sr,[t[24]||=L(`label`,{class:`docker-config__label`},`Label`,-1),E(i(z),{"model-value":e.label,placeholder:i(r)(`serviceConfigDocker.bootstrapLabelPlaceholder`),class:`docker-config__input`,"onUpdate:modelValue":e=>_e(a,`label`,e),onBlur:U,onKeydown:R(V(U,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),L(`div`,Cr,[t[25]||=L(`label`,{class:`docker-config__label`},`Entrypoint`,-1),E(i(z),{"model-value":e.entrypoint??``,placeholder:`/bin/sh`,class:`docker-config__input`,"onUpdate:modelValue":e=>_e(a,`entrypoint`,e),onBlur:U,onKeydown:R(V(U,[`prevent`]),[`enter`])},null,8,[`model-value`,`onUpdate:modelValue`,`onKeydown`])]),L(`div`,wr,[t[26]||=L(`label`,{class:`docker-config__label`},`Command`,-1),E(i(z),{"model-value":e.command,placeholder:`-c "npm install"`,class:`docker-config__input`,"onUpdate:modelValue":e=>_e(a,`command`,e),onBlur:U,onKeydown:R(V(U,[`prevent`]),[`enter`])},null,8,[`model-value`,`onUpdate:modelValue`,`onKeydown`])]),L(`div`,Tr,[t[27]||=L(`label`,{class:`docker-config__label`},`User:Group`,-1),E(i(z),{"model-value":e.user??``,placeholder:i(r)(`serviceConfigDocker.userGroupHint`),class:`docker-config__input`,"onUpdate:modelValue":e=>_e(a,`user`,e),onBlur:U,onKeydown:R(V(U,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),L(`div`,Er,[E(i(o),{icon:`pi pi-arrow-up`,text:``,rounded:``,size:`small`,disabled:a===0,onClick:e=>G(a,-1)},null,8,[`disabled`,`onClick`]),E(i(o),{icon:`pi pi-arrow-down`,text:``,rounded:``,size:`small`,disabled:a===k.value.length-1,onClick:e=>G(a,1)},null,8,[`disabled`,`onClick`]),E(i(o),{icon:`pi pi-times`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>W(a)},null,8,[`onClick`])])])]))),128)),L(`div`,Dr,[E(i(o),{label:i(r)(`serviceConfigDocker.addBootstrapCommand`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:he},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-08f9eb76`]]),kr={class:`config-commands`},Ar={class:`config-commands__execution`},jr={class:`config-card config-card--execution`},Mr={class:`config-card__header`},Nr={class:`config-card__hint`},Pr={class:`config-card config-card--execution`},Fr={class:`config-card__header`},Ir={key:0,class:`runner-option`},Lr={class:`runner-option`},Rr={class:`config-commands__tab-content`},zr={key:0,class:`config-commands__empty`},Br={class:`config-commands__row`},Vr={class:`config-commands__field`},Hr={class:`config-commands__label`},Ur={class:`config-commands__field config-commands__field--wide`},Wr={class:`config-commands__label`},Gr={class:`config-commands__field`},Kr={class:`config-commands__actions-cell`},qr={class:`config-commands__footer`},Jr={class:`config-commands__tab-content`},Yr=`__inherit__`,Xr=a(K({__name:`ServiceConfigCommands`,props:{service:{}},emits:[`save`,`dockerSave`],setup(t,{emit:r}){let a=t,c=r,{t:d}=te(),f=l(),p=null,m=P({agentId:a.service.agentId??Yr,runner:a.service.runner});e(()=>a.service,e=>{m.value={agentId:e.agentId??Yr,runner:e.runner}});let h=A(()=>[{label:d(`serviceConfigCommands.native`),value:`native`,icon:`pi pi-desktop`},{label:d(`serviceConfigCommands.docker`),value:`docker`,icon:`pi pi-box`}]),g=A(()=>h.value.find(e=>e.value===m.value.runner)?.icon??`pi pi-box`),_=A(()=>[{label:d(`serviceForm.agentInherit`),value:Yr},...f.agents.map(e=>({label:`${e.config.name} (${e.status.connected?d(`serviceConfigCommands.online`):d(`serviceConfigCommands.offline`)})`,value:e.config.id}))]),v=P([...a.service.commands??[]]);e(()=>a.service,e=>{p||(v.value=[...e.commands??[]])});function y(){v.value=[...v.value,{id:ze(),label:``,command:``,cwd:void 0,shell:!0}]}function ee(e){v.value=v.value.filter((t,n)=>n!==e)}function b(e,t,n){v.value=v.value.map((r,i)=>i===e?{...r,[t]:n===``?void 0:n}:r)}function x(){p&&clearTimeout(p),p=setTimeout(()=>{c(`save`,{agentId:m.value.agentId===Yr?null:m.value.agentId||null,runner:m.value.runner,commands:v.value}),p=null},150)}function S(e){c(`dockerSave`,e)}function C(e){ee(e),x()}return(e,r)=>(n(),M(`div`,kr,[L(`div`,Ar,[L(`div`,jr,[L(`div`,Mr,[r[2]||=L(`i`,{class:`pi pi-server`},null,-1),L(`span`,null,I(i(d)(`serviceConfigCommands.agent`)),1)]),E(i(w),{modelValue:m.value.agentId,"onUpdate:modelValue":r[0]||=e=>m.value.agentId=e,options:_.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:x},null,8,[`modelValue`,`options`]),L(`small`,Nr,I(i(d)(`serviceForm.agentHintEdit`)),1)]),L(`div`,Pr,[L(`div`,Fr,[L(`i`,{class:s(g.value)},null,2),L(`span`,null,I(i(d)(`serviceConfigCommands.runner`)),1)]),E(i(w),{modelValue:m.value.runner,"onUpdate:modelValue":r[1]||=e=>m.value.runner=e,options:h.value,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:x},{value:B(e=>[e.value?(n(),M(`div`,Ir,[L(`i`,{class:s(h.value.find(t=>t.value===e.value)?.icon)},null,2),L(`span`,null,I(h.value.find(t=>t.value===e.value)?.label),1)])):j(``,!0)]),option:B(e=>[L(`div`,Lr,[L(`i`,{class:s(e.option.icon)},null,2),L(`span`,null,I(e.option.label),1)])]),_:1},8,[`modelValue`,`options`])])]),E(i(Me),{value:`0`},{default:B(()=>[E(i(Ne),null,{default:B(()=>[E(i(Fe),{value:`0`},{default:B(()=>[r[3]||=L(`i`,{class:`pi pi-desktop tab-icon`},null,-1),L(`span`,null,I(i(d)(`serviceConfigCommands.native`)),1)]),_:1}),E(i(Fe),{value:`1`},{default:B(()=>[r[4]||=L(`i`,{class:`pi pi-box tab-icon`},null,-1),L(`span`,null,I(i(d)(`serviceConfigCommands.docker`)),1)]),_:1})]),_:1}),E(i(Pe),null,{default:B(()=>[E(i(Ie),{value:`0`},{default:B(()=>[L(`div`,Rr,[v.value.length===0?(n(),M(`div`,zr,[L(`p`,null,I(i(d)(`serviceConfigCommands.noCommands`)),1)])):j(``,!0),(n(!0),M(D,null,u(v.value,(e,t)=>(n(),M(`div`,{key:e.id,class:`config-card`},[L(`div`,Br,[L(`div`,Vr,[L(`label`,Hr,I(i(d)(`serviceConfigCommands.labelPlaceholder`)),1),E(i(z),{"model-value":e.label,placeholder:i(d)(`serviceConfigCommands.labelPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>b(t,`label`,e),onBlur:x,onKeydown:R(V(x,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),L(`div`,Ur,[L(`label`,Wr,I(i(d)(`serviceConfigCommands.commandPlaceholder`)),1),E(i(z),{"model-value":e.command,placeholder:`e.g. npm start`,class:`config-card__input`,"onUpdate:modelValue":e=>b(t,`command`,e),onBlur:x,onKeydown:R(V(x,[`prevent`]),[`enter`])},null,8,[`model-value`,`onUpdate:modelValue`,`onKeydown`])]),L(`div`,Gr,[r[5]||=L(`label`,{class:`config-commands__label`},`Working Dir (optional)`,-1),E(i(z),{"model-value":e.cwd??``,placeholder:i(d)(`serviceConfigCommands.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>b(t,`cwd`,e),onBlur:x,onKeydown:R(V(x,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),L(`div`,Kr,[E(i(o),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>C(t)},null,8,[`onClick`])])])]))),128)),L(`div`,qr,[E(i(o),{label:i(d)(`serviceConfigCommands.addCommand`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,onClick:y},null,8,[`label`])])])]),_:1}),E(i(Ie),{value:`1`},{default:B(()=>[L(`div`,Jr,[E(Or,{service:t.service,onSave:S},null,8,[`service`])])]),_:1})]),_:1})]),_:1})]))}}),[[`__scopeId`,`data-v-eab249e5`]]),Zr={class:`config-env`,"data-testid":`config-env`},Qr={key:0,class:`active-env-display`},$r={class:`active-env-label`},ei={key:1,class:`inheritance-toggle`},ti={class:`inheritance-label`},ni={class:`config-env__header`},ri={class:`config-env__title`},ii={class:`config-env__actions`},ai={key:2,class:`variables-view`},oi={key:0},si={key:1,class:`empty-state`},ci={class:`inherited-header`},li={class:`inherited-row-key`},ui={class:`preview-key`},di={class:`value-row`},fi=[`onClick`],pi=[`onClick`],mi={key:0,class:`secret-mask`},hi={key:1,class:`preview-value`},gi={class:`inherited-header`},_i={class:`passthrough-info`},vi={class:`preview-key`},yi={key:0,class:`preview-value`},bi={key:1,class:`passthrough-undefined`},xi={key:3,class:`empty-state`},Si={key:4,class:`empty-state`},Ci={class:`editor-container`},wi={key:0,class:`editor-env-banner`},Ti={class:`editor-env-text`},Ei={class:`editor-section`,"data-testid":`variables-editor`},Di={key:0,class:`loading-container`},Oi={key:1,class:`preview-container`},ki={class:`preview-info`},Ai={class:`preview-key`},ji={class:`value-row`},Mi=[`onClick`],Ni=[`onClick`],Pi={key:0,class:`secret-mask`},Fi={key:1,class:`preview-value`},Ii=a(K({__name:`ServiceConfigEnv`,props:{service:{},projectId:{},activeEnvironmentId:{}},setup(r){let a=r,{t:u}=te(),m=c(),h=T(),g=ue(),_=Se(),v=l(),y=ne(),b=A(()=>_.projects.find(e=>e.id===a.projectId)?.activeEnvironmentId??null),x=A(()=>g.findServiceEnvironment(a.service.id,b.value??``)),S=P(!1),w=P(!1),D=P(!1),re=P(!1),O=P(null),k=P(null),ie=P([]),ae=P({}),oe=P(new Set);function se(e){let t=new Set(oe.value);t.has(e)?t.delete(e):t.add(e),oe.value=t}let ce=P(null);function le(e,t){navigator.clipboard.writeText(t),ce.value=e,setTimeout(()=>{ce.value===e&&(ce.value=null)},1500)}let de=P({}),fe=P(!1),pe=A(()=>a.service.agentId?v.getById(a.service.agentId):null),me=A(()=>{let e=pe.value?.status.lanIp;return e?{"service.HOST_LAN":e}:{}}),R=A(()=>pe.value?.config.passthroughEnv??[]),he=A(()=>R.value.length>0);async function ge(){if(!a.service.agentId||!he.value){de.value={};return}fe.value=!0;try{de.value=await F.agent.getPassthroughEnv.query({id:a.service.agentId})}catch{de.value={}}finally{fe.value=!1}}let _e=A(()=>R.value.map(e=>({name:e,value:de.value[e]??null}))),ve=A(()=>!x.value||!b.value?!0:x.value.parentIds?.includes(b.value)??!0);async function z(e){if(!(!x.value||!b.value)){re.value=!0;try{await g.update({id:x.value.id,parentIds:e?[b.value]:[]}),await we()}catch(e){m.add({severity:`error`,summary:u(`serviceConfigEnv.error`),detail:e.message??u(`serviceConfigEnv.failedToUpdateInheritance`),life:5e3})}finally{re.value=!1}}}let H=A(()=>{let e=_.projects.find(e=>e.id===a.projectId);return e?.activeEnvironmentId?g.getById(e.activeEnvironmentId):null});function U(e){return!e||typeof e!=`object`?[]:Object.entries(e).map(([e,t])=>({variableId:e,key:t.key||e,slot:{value:t.value?.value??``,pre:t.value?.pre??``,post:t.value?.post??``,isSecret:t.value?.isSecret??!1}}))}let W=A(()=>O.value?U(O.value.variables):[]),ye=A(()=>{if(!x.value||!O.value?.sources)return W.value;let e=x.value.id;return W.value.filter(t=>O.value.sources[t.variableId]?.environmentId===e)}),K=A(()=>{if(!x.value||!O.value?.sources)return[];let e=x.value.id;return W.value.filter(t=>O.value.sources[t.variableId]?.environmentId!==e)}),xe=A(()=>{if(!O.value?.sources)return{};let e={};for(let[t,n]of Object.entries(O.value.sources))e[t]={environmentId:n.environmentId,overridden:n.overridden,...n.resolvedFrom?{resolvedFrom:n.resolvedFrom}:{}};return e});async function we(){if(x.value)try{O.value=await g.resolve(x.value.id)}catch(e){console.error(`Failed to resolve environment:`,e)}}async function Te(){if(b.value)try{k.value=await g.resolve(b.value)}catch{}}async function Oe(e){let t=e.toLowerCase(),n=k.value??O.value;if(!n)return;let r=n.variables,i=Object.keys(n.env).filter(e=>e.toLowerCase().includes(t));ie.value=i;let a={};if(r)for(let e of i){let t=Object.values(r).find(t=>t.key===e);t&&(a[e]={key:e,isSecret:t.value?.isSecret??!1,pre:t.value?.pre??``,post:t.value?.post??``})}ae.value=a}async function ke(){D.value=!0;try{await Ne(),await we(),w.value=!0}catch(e){m.add({severity:`error`,summary:u(`serviceConfigEnv.error`),detail:e.message??u(`serviceConfigEnv.failedToLoadPreview`),life:5e3})}finally{D.value=!1}}let Ae=A(()=>O.value?Object.entries(O.value.env).map(([e,t])=>({key:e,value:Object.entries(me.value).reduce((e,[t,n])=>e.replaceAll(`{{${t}}}`,n),t)})):[]);function Me(e,t){return t?`***`:e.length>50?e.substring(0,47)+`...`:e}async function Ne(){if(x.value)return x.value;if(!b.value)return null;let e=H.value;return e?(await g.create({name:`${a.service.name??a.service.id} — ${e.name}`,projectId:a.projectId,scope:`service`,reference:a.service.id,activateOn:b.value,parentIds:[b.value],variables:{}}),x.value):null}let Pe=A(()=>{let e=y.getByService(a.service.id);return e.length>0?e[0]:null}),Fe=A(()=>{let e=Pe.value?.state;return e===`running`||e===`errored`});async function Ie(){await Ne(),S.value=!0,await Promise.all([we(),Te()])}function ze(){if(S.value=!1,!Fe.value||!Pe.value)return;let e=Pe.value.state===`running`?`restart`:`start`,t=a.service.name||a.service.id;h.require({message:u(e===`restart`?`serviceConfigEnv.restartConfirmMsg`:`serviceConfigEnv.startConfirmMsg`,{name:t}),header:u(e===`restart`?`serviceConfigEnv.restartTitle`:`serviceConfigEnv.startTitle`),icon:`pi pi-refresh`,acceptLabel:u(e===`restart`?`serviceConfigEnv.restartTitle`:`actions.start`),rejectLabel:u(`serviceConfigEnv.notNow`),accept:async()=>{try{let t=a.service.agentId;if(!t)return;e===`restart`?(await y.restart(t,a.service.id),m.add({severity:`success`,summary:u(`serviceConfigEnv.serviceRestarted`),life:3e3})):(await y.start(t,a.service.id),m.add({severity:`success`,summary:u(`serviceConfigEnv.serviceStarted`),life:3e3}))}catch(t){m.add({severity:`error`,summary:u(`serviceConfigEnv.error`),detail:t.message??u(`serviceConfigEnv.failedToAction`,{action:e}),life:5e3})}}})}return e(H,async e=>{e&&await Promise.all([we(),Te()])}),e(()=>a.service.agentId,()=>{ge()}),f(async()=>{a.projectId&&await g.fetchAll(a.projectId),await Promise.all([we(),Te(),ge()])}),(e,a)=>(n(),M(`div`,Zr,[b.value?(n(),M(`div`,Qr,[L(`span`,$r,I(i(u)(`serviceConfigEnv.activeEnvironment`)),1),E(Le,{"environment-id":b.value},null,8,[`environment-id`])])):j(``,!0),x.value&&H.value?(n(),M(`div`,ei,[E(i(je),{"model-value":ve.value,disabled:re.value,"onUpdate:modelValue":z},null,8,[`model-value`,`disabled`]),L(`span`,ti,I(ve.value?i(u)(`serviceConfigEnv.inheritsFrom`,{name:H.value.name}):i(u)(`serviceConfigEnv.isolated`,{name:H.value.name})),1)])):j(``,!0),L(`div`,ni,[L(`h3`,ri,I(i(u)(`serviceConfigEnv.envVars`)),1),L(`div`,ii,[E(i(o),{label:i(u)(`serviceConfigEnv.editVariables`),icon:`pi pi-pencil`,size:`small`,outlined:``,"data-testid":`env-edit-btn`,disabled:!b.value,onClick:Ie},null,8,[`label`,`disabled`]),E(i(o),{label:i(u)(`serviceConfigEnv.preview`),icon:`pi pi-eye`,size:`small`,outlined:``,severity:`secondary`,loading:D.value,disabled:!b.value,"data-testid":`env-preview-btn`,onClick:ke},null,8,[`label`,`loading`,`disabled`])])]),x.value?(n(),M(`div`,ai,[ye.value.length>0?(n(),M(`div`,oi,[E(Re,{"environment-id":x.value.id,sources:xe.value,"resolved-env":{...k.value?.env??{},...O.value?.env??{}},"service-builtins":me.value,editable:!1,"show-overrides":!1,"show-override-badge":!0,"show-delete":!1,"show-add-button":!1},null,8,[`environment-id`,`sources`,`resolved-env`,`service-builtins`])])):(n(),M(`div`,si,[L(`p`,null,I(i(u)(`serviceConfigEnv.noVarsConfigured`)),1)])),K.value.length>0?(n(),G(i(d),{key:2,class:`inherited-accordion`},{default:B(()=>[E(i(p),{value:`inherited`},{default:B(()=>[E(i(ee),null,{default:B(()=>[L(`span`,ci,[a[6]||=L(`i`,{class:`pi pi-arrow-down-left`},null,-1),N(` `+I(i(u)(`serviceConfigEnv.inheritedVars`))+` `,1),E(i(Ce),{value:String(K.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),E(i(be),null,{default:B(()=>[E(i(Ee),{value:K.value,size:`small`,"show-headers":!1},{default:B(()=>[E(i(De),{style:{width:`35%`}},{body:B(({data:e})=>[L(`div`,li,[L(`code`,ui,I(e.key),1),xe.value[e.variableId]?(n(),G(Le,{key:0,"environment-id":xe.value[e.variableId].environmentId,class:`source-badge`},null,8,[`environment-id`])):j(``,!0)])]),_:1}),E(i(De),{style:{width:`65%`}},{body:B(({data:e})=>[L(`span`,di,[L(`span`,{class:`value-actions`,onClick:a[0]||=V(()=>{},[`stop`])},[e.slot.isSecret?(n(),M(`i`,{key:0,class:s([oe.value.has(e.variableId)?`pi pi-eye-slash`:`pi pi-eye`,`action-icon`]),onClick:t=>se(e.variableId)},null,10,fi)):j(``,!0),L(`i`,{class:s([ce.value===e.variableId?`pi pi-check`:`pi pi-copy`,`action-icon`]),onClick:t=>le(e.variableId,e.slot.pre+e.slot.value+e.slot.post)},null,10,pi)]),e.slot.isSecret&&!oe.value.has(e.variableId)?(n(),M(`span`,mi,`***`)):(n(),M(`code`,hi,I(e.slot.pre)+I(e.slot.value)+I(e.slot.post),1))])]),_:1})]),_:1},8,[`value`])]),_:1})]),_:1})]),_:1})):j(``,!0),he.value?(n(),G(i(d),{key:3,class:`inherited-accordion`},{default:B(()=>[E(i(p),{value:`passthrough`},{default:B(()=>[E(i(ee),null,{default:B(()=>[L(`span`,gi,[a[7]||=L(`i`,{class:`pi pi-globe`},null,-1),N(` `+I(i(u)(`agentPage.passthrough.titleShort`))+` `,1),E(i(Ce),{value:String(R.value.length),severity:`secondary`,rounded:``},null,8,[`value`])])]),_:1}),E(i(be),null,{default:B(()=>[L(`p`,_i,I(i(u)(`serviceConfigEnv.passthroughInfo`)),1),fe.value?(n(),G(i(t),{key:0,style:{width:`24px`,height:`24px`}})):(n(),G(i(Ee),{key:1,value:_e.value,stripedRows:``,size:`small`},{default:B(()=>[E(i(De),{field:`name`,header:i(u)(`common.key`),style:{width:`35%`}},{body:B(({data:e})=>[L(`code`,vi,I(e.name),1)]),_:1},8,[`header`]),E(i(De),{header:i(u)(`common.value`),style:{width:`65%`}},{body:B(({data:e})=>[e.value===null?(n(),M(`span`,bi,I(i(u)(`serviceConfigEnv.undefined`)),1)):(n(),M(`span`,yi,I(e.value),1))]),_:1},8,[`header`])]),_:1},8,[`value`]))]),_:1})]),_:1})]),_:1})):j(``,!0)])):b.value?(n(),M(`div`,Si,[L(`p`,null,I(i(u)(`serviceConfigEnv.noVarsConfigured`)),1)])):(n(),M(`div`,xi,[L(`p`,null,I(i(u)(`serviceConfigEnv.noActiveEnv`)),1)])),E(i(C),{visible:S.value,header:i(u)(`serviceConfigEnv.editVarsHeader`),style:{width:`900px`},modal:``,"onUpdate:visible":a[2]||=e=>{e||ze()}},{footer:B(()=>[E(i(o),{label:i(u)(`actions.close`),icon:`pi pi-times`,onClick:a[1]||=e=>ze()},null,8,[`label`])]),default:B(()=>[L(`div`,Ci,[b.value?(n(),M(`div`,wi,[L(`span`,Ti,I(i(u)(`serviceConfigEnv.editingVarsFor`,{name:r.service.name||r.service.id})),1),E(Le,{"environment-id":b.value},null,8,[`environment-id`])])):j(``,!0),L(`div`,Ei,[x.value?(n(),G(Re,{key:0,"environment-id":x.value.id,editable:!0,"autocomplete-enabled":!0,"autocomplete-suggestions":ie.value,"autocomplete-meta":ae.value,"resolved-env":{...k.value?.env??{},...O.value?.env??{}},"service-builtins":me.value,"show-overrides":!0,"show-delete":!0,"show-add-button":!0,onAutocompleteSearch:Oe},null,8,[`environment-id`,`autocomplete-suggestions`,`autocomplete-meta`,`resolved-env`,`service-builtins`])):j(``,!0)])])]),_:1},8,[`visible`,`header`]),E(i(C),{visible:w.value,"onUpdate:visible":a[5]||=e=>w.value=e,header:i(u)(`serviceConfigEnv.previewHeader`),style:{width:`700px`},modal:``,"data-testid":`env-preview-dialog`},{footer:B(()=>[E(i(o),{label:i(u)(`actions.close`),icon:`pi pi-times`,onClick:a[4]||=e=>w.value=!1},null,8,[`label`])]),default:B(()=>[D.value?(n(),M(`div`,Di,[E(i(t))])):O.value?(n(),M(`div`,Oi,[L(`p`,ki,I(i(u)(`serviceConfigEnv.injectedVarsInfo`)),1),E(i(Ee),{value:Ae.value,stripedRows:``,size:`small`,rows:15,paginator:Ae.value.length>15},{default:B(()=>[E(i(De),{field:`key`,header:i(u)(`common.key`),style:{width:`35%`}},{body:B(({data:e})=>[L(`code`,Ai,I(e.key),1)]),_:1},8,[`header`]),E(i(De),{header:i(u)(`common.value`),style:{width:`65%`}},{body:B(({data:e})=>[L(`span`,ji,[L(`span`,{class:`value-actions`,onClick:a[3]||=V(()=>{},[`stop`])},[O.value.envSecrets.includes(e.key)?(n(),M(`i`,{key:0,class:s([oe.value.has(`preview:`+e.key)?`pi pi-eye-slash`:`pi pi-eye`,`action-icon`]),onClick:t=>se(`preview:`+e.key)},null,10,Mi)):j(``,!0),L(`i`,{class:s([ce.value===`preview:`+e.key?`pi pi-check`:`pi pi-copy`,`action-icon`]),onClick:t=>le(`preview:`+e.key,e.value)},null,10,Ni)]),O.value.envSecrets.includes(e.key)&&!oe.value.has(`preview:`+e.key)?(n(),M(`span`,Pi,`***`)):(n(),M(`span`,Fi,I(Me(e.value,!1)),1))])]),_:1},8,[`header`])]),_:1},8,[`value`,`paginator`])])):j(``,!0)]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-a6a198b8`]]),Li={class:`config-health`},Ri={class:`config-card config-card--inline`},zi={class:`config-card__header`},Bi={class:`config-card`},Vi={class:`config-card__header`},Hi={class:`config-card`},Ui={class:`config-card__header`},Wi={class:`config-card`},Gi={class:`config-card__header`},Ki={class:`config-card`},qi={class:`config-card__header`},Ji={key:1,class:`config-card`},Yi={class:`config-card__header`},Xi={class:`config-card__hint`},Zi={class:`config-card`},Qi={class:`config-card__header`},$i={class:`config-card`},ea={class:`config-card__header`},ta={class:`config-card`},na={class:`config-card__header`},ra={class:`config-card`},ia={class:`config-card__header`},aa=a(K({__name:`ServiceConfigHealthCheck`,props:{service:{}},emits:[`save`],setup(t,{emit:r}){let a=t,o=r,{t:s}=te(),c=P(!!a.service.healthCheck),l=P({type:a.service.healthCheck?.type??`http`,path:a.service.healthCheck?.path??`/health`,interval:a.service.healthCheck?.interval??3e4,timeout:a.service.healthCheck?.timeout??5e3,retries:a.service.healthCheck?.retries??3,method:a.service.healthCheck?.method??`GET`,expectedStatus:a.service.healthCheck?.expectedStatus??200,initialDelay:a.service.healthCheck?.initialDelay??5e3,command:a.service.healthCheck?.command??``}),u=[{label:`HTTP Request`,value:`http`},{label:`Command`,value:`command`}],d=[{label:`GET`,value:`GET`},{label:`HEAD`,value:`HEAD`},{label:`POST`,value:`POST`},{label:`PUT`,value:`PUT`}];e(()=>a.service,e=>{c.value=!!e.healthCheck,l.value={type:e.healthCheck?.type??`http`,path:e.healthCheck?.path??`/health`,interval:e.healthCheck?.interval??3e4,timeout:e.healthCheck?.timeout??5e3,retries:e.healthCheck?.retries??3,method:e.healthCheck?.method??`GET`,expectedStatus:e.healthCheck?.expectedStatus??200,initialDelay:e.healthCheck?.initialDelay??5e3,command:e.healthCheck?.command??``}});let f=null;function p(){f&&clearTimeout(f),f=setTimeout(()=>{if(!c.value)o(`save`,void 0);else{if(l.value.type===`http`&&!l.value.path?.trim()||l.value.type===`command`&&!l.value.command?.trim())return;o(`save`,{type:l.value.type,path:l.value.path,method:l.value.method,expectedStatus:l.value.expectedStatus,command:l.value.command||void 0,interval:l.value.interval,timeout:l.value.timeout,retries:l.value.retries,initialDelay:l.value.initialDelay})}f=null},150)}return(e,t)=>(n(),M(`div`,Li,[L(`div`,Ri,[L(`div`,zi,[t[10]||=L(`i`,{class:`pi pi-heart`},null,-1),L(`span`,null,I(i(s)(`serviceConfigHealthCheck.enable`)),1)]),E(i(je),{modelValue:c.value,"onUpdate:modelValue":t[0]||=e=>c.value=e,onChange:p},null,8,[`modelValue`])]),c.value?(n(),M(D,{key:0},[L(`div`,Bi,[L(`div`,Vi,[t[11]||=L(`i`,{class:`pi pi-cog`},null,-1),L(`span`,null,I(i(s)(`serviceConfigHealthCheck.type`)),1)]),E(i(w),{modelValue:l.value.type,"onUpdate:modelValue":t[1]||=e=>l.value.type=e,options:u,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:p},null,8,[`modelValue`]),t[12]||=L(`small`,{class:`config-card__hint`},`HTTP checks a URL endpoint; Command runs a shell command (exit 0 = healthy)`,-1)]),l.value.type===`http`?(n(),M(D,{key:0},[L(`div`,Hi,[L(`div`,Ui,[t[13]||=L(`i`,{class:`pi pi-link`},null,-1),L(`span`,null,I(i(s)(`serviceConfigHealthCheck.path`)),1)]),E(i(z),{modelValue:l.value.path,"onUpdate:modelValue":t[2]||=e=>l.value.path=e,class:`config-card__input`,placeholder:`/health`,onBlur:p,onKeydown:R(V(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),L(`div`,Wi,[L(`div`,Gi,[t[14]||=L(`i`,{class:`pi pi-directions`},null,-1),L(`span`,null,I(i(s)(`serviceConfigHealthCheck.method`)),1)]),E(i(w),{modelValue:l.value.method,"onUpdate:modelValue":t[3]||=e=>l.value.method=e,options:d,"option-label":`label`,"option-value":`value`,class:`config-card__input`,onChange:p},null,8,[`modelValue`])]),L(`div`,Ki,[L(`div`,qi,[t[15]||=L(`i`,{class:`pi pi-check-circle`},null,-1),L(`span`,null,I(i(s)(`serviceConfigHealthCheck.expectedStatus`)),1)]),E(i(Oe),{modelValue:l.value.expectedStatus,"onUpdate:modelValue":t[4]||=e=>l.value.expectedStatus=e,class:`config-card__input`,"use-grouping":!1,min:100,max:599,onBlur:p,onKeydown:R(V(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),t[16]||=L(`small`,{class:`config-card__hint`},`HTTP status code to expect (default 200)`,-1)])],64)):j(``,!0),l.value.type===`command`?(n(),M(`div`,Ji,[L(`div`,Yi,[t[17]||=L(`i`,{class:`pi pi-code`},null,-1),L(`span`,null,I(i(s)(`serviceConfigHealthCheck.command`)),1)]),E(i(de),{modelValue:l.value.command,"onUpdate:modelValue":t[5]||=e=>l.value.command=e,class:`config-card__input`,rows:`2`,placeholder:`curl -sf http://localhost:3000/health`,"auto-resize":``,onBlur:p},null,8,[`modelValue`]),L(`small`,Xi,I(i(s)(`serviceConfigHealthCheck.commandHint`)),1)])):j(``,!0),L(`div`,Zi,[L(`div`,Qi,[t[18]||=L(`i`,{class:`pi pi-hourglass`},null,-1),L(`span`,null,I(i(s)(`serviceConfigHealthCheck.initialDelay`)),1)]),E(i(Oe),{modelValue:l.value.initialDelay,"onUpdate:modelValue":t[6]||=e=>l.value.initialDelay=e,class:`config-card__input`,"use-grouping":!1,min:0,onBlur:p,onKeydown:R(V(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`]),t[19]||=L(`small`,{class:`config-card__hint`},`Wait before first health check (ms)`,-1)]),L(`div`,$i,[L(`div`,ea,[t[20]||=L(`i`,{class:`pi pi-clock`},null,-1),L(`span`,null,I(i(s)(`serviceConfigHealthCheck.interval`)),1)]),E(i(Oe),{modelValue:l.value.interval,"onUpdate:modelValue":t[7]||=e=>l.value.interval=e,class:`config-card__input`,"use-grouping":!1,min:1e3,onBlur:p,onKeydown:R(V(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),L(`div`,ta,[L(`div`,na,[t[21]||=L(`i`,{class:`pi pi-stopwatch`},null,-1),L(`span`,null,I(i(s)(`serviceConfigHealthCheck.timeout`)),1)]),E(i(Oe),{modelValue:l.value.timeout,"onUpdate:modelValue":t[8]||=e=>l.value.timeout=e,class:`config-card__input`,"use-grouping":!1,min:500,onBlur:p,onKeydown:R(V(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),L(`div`,ra,[L(`div`,ia,[t[22]||=L(`i`,{class:`pi pi-replay`},null,-1),L(`span`,null,I(i(s)(`serviceConfigHealthCheck.retries`)),1)]),E(i(Oe),{modelValue:l.value.retries,"onUpdate:modelValue":t[9]||=e=>l.value.retries=e,class:`config-card__input`,"use-grouping":!1,min:0,max:10,onBlur:p,onKeydown:R(V(p,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])],64)):j(``,!0)]))}}),[[`__scopeId`,`data-v-63e32039`]]),oa={class:`config-shortcuts`},sa={key:0,class:`config-shortcuts__empty`},ca={class:`config-shortcuts__row`},la={class:`config-shortcuts__field`},ua={class:`config-shortcuts__label`},da={class:`config-shortcuts__field config-shortcuts__field--wide`},fa={class:`config-shortcuts__label`},pa={class:`config-shortcuts__field`},ma={class:`config-shortcuts__label`},ha={class:`config-shortcuts__actions-cell`},ga={class:`config-shortcuts__footer`},_a=a(K({__name:`ServiceConfigShortcuts`,props:{service:{}},emits:[`save`],setup(t,{emit:r}){let a=t,{t:s}=te(),c=r,l=P([...a.service.shortcuts??[]]),d=null;e(()=>a.service,e=>{d||(l.value=[...e.shortcuts??[]])});function f(){l.value=[...l.value,{id:ze(),label:``,command:``,cwd:void 0}]}function p(e){l.value=l.value.filter((t,n)=>n!==e)}function m(e,t,n){l.value=l.value.map((r,i)=>i===e?{...r,[t]:n||void 0}:r)}function h(){d&&clearTimeout(d),d=setTimeout(()=>{c(`save`,l.value),d=null},150)}function g(e){p(e),h()}return(e,t)=>(n(),M(`div`,oa,[l.value.length===0?(n(),M(`div`,sa,[L(`p`,null,I(i(s)(`serviceConfigShortcuts.empty`)),1)])):j(``,!0),(n(!0),M(D,null,u(l.value,(e,t)=>(n(),M(`div`,{key:e.id,class:`config-card`},[L(`div`,ca,[L(`div`,la,[L(`label`,ua,I(i(s)(`serviceConfigShortcuts.label`)),1),E(i(z),{"model-value":e.label,placeholder:i(s)(`serviceConfigShortcuts.labelPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-label-input`,"onUpdate:modelValue":e=>m(t,`label`,e),onBlur:h,onKeydown:R(V(h,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),L(`div`,da,[L(`label`,fa,I(i(s)(`serviceConfigShortcuts.command`)),1),E(i(z),{"model-value":e.command,placeholder:i(s)(`serviceConfigShortcuts.commandPlaceholder`),class:`config-card__input`,"data-testid":`shortcut-command-input`,"onUpdate:modelValue":e=>m(t,`command`,e),onBlur:h,onKeydown:R(V(h,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),L(`div`,pa,[L(`label`,ma,I(i(s)(`serviceConfigShortcuts.workingDir`)),1),E(i(z),{"model-value":e.cwd??``,placeholder:i(s)(`serviceConfigShortcuts.cwdPlaceholder`),class:`config-card__input`,"onUpdate:modelValue":e=>m(t,`cwd`,e),onBlur:h,onKeydown:R(V(h,[`prevent`]),[`enter`])},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`,`onKeydown`])]),L(`div`,ha,[E(i(o),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:e=>g(t)},null,8,[`onClick`])])])]))),128)),L(`div`,ga,[E(i(o),{label:i(s)(`serviceConfigShortcuts.addShortcut`),icon:`pi pi-plus`,severity:`secondary`,outlined:``,size:`small`,"data-testid":`add-shortcut-btn`,onClick:f},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-7cab9b4c`]]),va=Object.defineProperty,ya=Object.getOwnPropertySymbols,ba=Object.prototype.hasOwnProperty,xa=Object.prototype.propertyIsEnumerable,Sa=(e,t,n)=>t in e?va(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Ca=(e,t)=>{for(var n in t||={})ba.call(t,n)&&Sa(e,n,t[n]);if(ya)for(var n of ya(t))xa.call(t,n)&&Sa(e,n,t[n]);return e},wa=(e,t)=>{var n={};for(var r in e)ba.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&ya)for(var r of ya(e))t.indexOf(r)<0&&xa.call(e,r)&&(n[r]=e[r]);return n},Ta=`[vue-draggable-plus]: `;function Ea(e){console.warn(Ta+e)}function Da(e){console.error(Ta+e)}function Oa(e,t,n){return n>=0&&n<e.length&&e.splice(n,0,e.splice(t,1)[0]),e}function ka(e){return e.replace(/-(\w)/g,(e,t)=>t?t.toUpperCase():``)}function Aa(e){return Object.keys(e).reduce((t,n)=>(e[n]!==void 0&&(t[ka(n)]=e[n]),t),{})}function ja(e,t){return Array.isArray(e)&&e.splice(t,1),e}function Ma(e,t,n){return Array.isArray(e)&&e.splice(t,0,n),e}function Na(e){return e===void 0}function Pa(e){return typeof e==`string`}function Fa(e,t,n){let r=e.children[n];e.insertBefore(t,r)}function Ia(e){e.parentNode&&e.parentNode.removeChild(e)}function La(e,t=document){let n=null;return n=typeof t?.querySelector==`function`?(t?.querySelector)?.call(t,e):document.querySelector(e),n||Ea(`Element not found: ${e}`),n}function Ra(e,t,n=null){return function(...r){return e.apply(n,r),t.apply(n,r)}}function za(e,t){let n=Ca({},e);return Object.keys(t).forEach(r=>{n[r]?n[r]=Ra(e[r],t[r]):n[r]=t[r]}),n}function Ba(e){return e instanceof HTMLElement}function Va(e,t){Object.keys(e).forEach(n=>{t(n,e[n])})}function Ha(e){return e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97)}var Ua=Object.assign;function Wa(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Ga(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?Wa(Object(n),!0).forEach(function(t){qa(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Wa(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function Ka(e){"@babel/helpers - typeof";return Ka=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},Ka(e)}function qa(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ja(){return Ja=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ja.apply(this,arguments)}function Ya(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,a;for(a=0;a<r.length;a++)i=r[a],!(t.indexOf(i)>=0)&&(n[i]=e[i]);return n}function Xa(e,t){if(e==null)return{};var n=Ya(e,t),r,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var Za=`1.15.2`;function Qa(e){if(typeof window<`u`&&window.navigator)return!!navigator.userAgent.match(e)}var $a=Qa(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),eo=Qa(/Edge/i),to=Qa(/firefox/i),no=Qa(/safari/i)&&!Qa(/chrome/i)&&!Qa(/android/i),ro=Qa(/iP(ad|od|hone)/i),io=Qa(/chrome/i)&&Qa(/android/i),ao={capture:!1,passive:!1};function q(e,t,n){e.addEventListener(t,n,!$a&&ao)}function J(e,t,n){e.removeEventListener(t,n,!$a&&ao)}function oo(e,t){if(t){if(t[0]===`>`&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch{return!1}return!1}}function so(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function co(e,t,n,r){if(e){n||=document;do{if(t!=null&&(t[0]===`>`?e.parentNode===n&&oo(e,t):oo(e,t))||r&&e===n)return e;if(e===n)break}while(e=so(e))}return null}var lo=/\s+/g;function uo(e,t,n){e&&t&&(e.classList?e.classList[n?`add`:`remove`](t):e.className=((` `+e.className+` `).replace(lo,` `).replace(` `+t+` `,` `)+(n?` `+t:``)).replace(lo,` `))}function Y(e,t,n){var r=e&&e.style;if(r){if(n===void 0)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(e,``):e.currentStyle&&(n=e.currentStyle),t===void 0?n:n[t];!(t in r)&&t.indexOf(`webkit`)===-1&&(t=`-webkit-`+t),r[t]=n+(typeof n==`string`?``:`px`)}}function fo(e,t){var n=``;if(typeof e==`string`)n=e;else do{var r=Y(e,`transform`);r&&r!==`none`&&(n=r+` `+n)}while(!t&&(e=e.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function po(e,t,n){if(e){var r=e.getElementsByTagName(t),i=0,a=r.length;if(n)for(;i<a;i++)n(r[i],i);return r}return[]}function mo(){return document.scrollingElement||document.documentElement}function ho(e,t,n,r,i){if(!(!e.getBoundingClientRect&&e!==window)){var a,o,s,c,l,u,d;if(e!==window&&e.parentNode&&e!==mo()?(a=e.getBoundingClientRect(),o=a.top,s=a.left,c=a.bottom,l=a.right,u=a.height,d=a.width):(o=0,s=0,c=window.innerHeight,l=window.innerWidth,u=window.innerHeight,d=window.innerWidth),(t||n)&&e!==window&&(i||=e.parentNode,!$a))do if(i&&i.getBoundingClientRect&&(Y(i,`transform`)!==`none`||n&&Y(i,`position`)!==`static`)){var f=i.getBoundingClientRect();o-=f.top+parseInt(Y(i,`border-top-width`)),s-=f.left+parseInt(Y(i,`border-left-width`)),c=o+a.height,l=s+a.width;break}while(i=i.parentNode);if(r&&e!==window){var p=fo(i||e),m=p&&p.a,h=p&&p.d;p&&(o/=h,s/=m,d/=m,u/=h,c=o+u,l=s+d)}return{top:o,left:s,bottom:c,right:l,width:d,height:u}}}function go(e,t,n){for(var r=So(e,!0),i=ho(e)[t];r;){var a=ho(r)[n],o=void 0;if(o=i>=a,!o)return r;if(r===mo())break;r=So(r,!1)}return!1}function _o(e,t,n,r){for(var i=0,a=0,o=e.children;a<o.length;){if(o[a].style.display!==`none`&&o[a]!==$.ghost&&(r||o[a]!==$.dragged)&&co(o[a],n.draggable,e,!1)){if(i===t)return o[a];i++}a++}return null}function vo(e,t){for(var n=e.lastElementChild;n&&(n===$.ghost||Y(n,`display`)===`none`||t&&!oo(n,t));)n=n.previousElementSibling;return n||null}function yo(e,t){var n=0;if(!e||!e.parentNode)return-1;for(;e=e.previousElementSibling;)e.nodeName.toUpperCase()!==`TEMPLATE`&&e!==$.clone&&(!t||oo(e,t))&&n++;return n}function bo(e){var t=0,n=0,r=mo();if(e)do{var i=fo(e),a=i.a,o=i.d;t+=e.scrollLeft*a,n+=e.scrollTop*o}while(e!==r&&(e=e.parentNode));return[t,n]}function xo(e,t){for(var n in e)if(e.hasOwnProperty(n)){for(var r in t)if(t.hasOwnProperty(r)&&t[r]===e[n][r])return Number(n)}return-1}function So(e,t){if(!e||!e.getBoundingClientRect)return mo();var n=e,r=!1;do if(n.clientWidth<n.scrollWidth||n.clientHeight<n.scrollHeight){var i=Y(n);if(n.clientWidth<n.scrollWidth&&(i.overflowX==`auto`||i.overflowX==`scroll`)||n.clientHeight<n.scrollHeight&&(i.overflowY==`auto`||i.overflowY==`scroll`)){if(!n.getBoundingClientRect||n===document.body)return mo();if(r||t)return n;r=!0}}while(n=n.parentNode);return mo()}function Co(e,t){if(e&&t)for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function wo(e,t){return Math.round(e.top)===Math.round(t.top)&&Math.round(e.left)===Math.round(t.left)&&Math.round(e.height)===Math.round(t.height)&&Math.round(e.width)===Math.round(t.width)}var To;function Eo(e,t){return function(){if(!To){var n=arguments,r=this;n.length===1?e.call(r,n[0]):e.apply(r,n),To=setTimeout(function(){To=void 0},t)}}}function Do(){clearTimeout(To),To=void 0}function Oo(e,t,n){e.scrollLeft+=t,e.scrollTop+=n}function ko(e){var t=window.Polymer,n=window.jQuery||window.Zepto;return t&&t.dom?t.dom(e).cloneNode(!0):n?n(e).clone(!0)[0]:e.cloneNode(!0)}function Ao(e,t,n){var r={};return Array.from(e.children).forEach(function(i){if(!(!co(i,t.draggable,e,!1)||i.animated||i===n)){var a=ho(i);r.left=Math.min(r.left??1/0,a.left),r.top=Math.min(r.top??1/0,a.top),r.right=Math.max(r.right??-1/0,a.right),r.bottom=Math.max(r.bottom??-1/0,a.bottom)}}),r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}var jo=`Sortable`+new Date().getTime();function Mo(){var e=[],t;return{captureAnimationState:function(){e=[],this.options.animation&&[].slice.call(this.el.children).forEach(function(t){if(!(Y(t,`display`)===`none`||t===$.ghost)){e.push({target:t,rect:ho(t)});var n=Ga({},e[e.length-1].rect);if(t.thisAnimationDuration){var r=fo(t,!0);r&&(n.top-=r.f,n.left-=r.e)}t.fromRect=n}})},addAnimationState:function(t){e.push(t)},removeAnimationState:function(t){e.splice(xo(e,{target:t}),1)},animateAll:function(n){var r=this;if(!this.options.animation){clearTimeout(t),typeof n==`function`&&n();return}var i=!1,a=0;e.forEach(function(e){var t=0,n=e.target,o=n.fromRect,s=ho(n),c=n.prevFromRect,l=n.prevToRect,u=e.rect,d=fo(n,!0);d&&(s.top-=d.f,s.left-=d.e),n.toRect=s,n.thisAnimationDuration&&wo(c,s)&&!wo(o,s)&&(u.top-s.top)/(u.left-s.left)===(o.top-s.top)/(o.left-s.left)&&(t=Po(u,c,l,r.options)),wo(s,o)||(n.prevFromRect=o,n.prevToRect=s,t||=r.options.animation,r.animate(n,u,s,t)),t&&(i=!0,a=Math.max(a,t),clearTimeout(n.animationResetTimer),n.animationResetTimer=setTimeout(function(){n.animationTime=0,n.prevFromRect=null,n.fromRect=null,n.prevToRect=null,n.thisAnimationDuration=null},t),n.thisAnimationDuration=t)}),clearTimeout(t),i?t=setTimeout(function(){typeof n==`function`&&n()},a):typeof n==`function`&&n(),e=[]},animate:function(e,t,n,r){if(r){Y(e,`transition`,``),Y(e,`transform`,``);var i=fo(this.el),a=i&&i.a,o=i&&i.d,s=(t.left-n.left)/(a||1),c=(t.top-n.top)/(o||1);e.animatingX=!!s,e.animatingY=!!c,Y(e,`transform`,`translate3d(`+s+`px,`+c+`px,0)`),this.forRepaintDummy=No(e),Y(e,`transition`,`transform `+r+`ms`+(this.options.easing?` `+this.options.easing:``)),Y(e,`transform`,`translate3d(0,0,0)`),typeof e.animated==`number`&&clearTimeout(e.animated),e.animated=setTimeout(function(){Y(e,`transition`,``),Y(e,`transform`,``),e.animated=!1,e.animatingX=!1,e.animatingY=!1},r)}}}}function No(e){return e.offsetWidth}function Po(e,t,n,r){return Math.sqrt((t.top-e.top)**2+(t.left-e.left)**2)/Math.sqrt((t.top-n.top)**2+(t.left-n.left)**2)*r.animation}var Fo=[],Io={initializeByDefault:!0},Lo={mount:function(e){for(var t in Io)Io.hasOwnProperty(t)&&!(t in e)&&(e[t]=Io[t]);Fo.forEach(function(t){if(t.pluginName===e.pluginName)throw`Sortable: Cannot mount plugin ${e.pluginName} more than once`}),Fo.push(e)},pluginEvent:function(e,t,n){var r=this;this.eventCanceled=!1,n.cancel=function(){r.eventCanceled=!0};var i=e+`Global`;Fo.forEach(function(r){t[r.pluginName]&&(t[r.pluginName][i]&&t[r.pluginName][i](Ga({sortable:t},n)),t.options[r.pluginName]&&t[r.pluginName][e]&&t[r.pluginName][e](Ga({sortable:t},n)))})},initializePlugins:function(e,t,n,r){for(var i in Fo.forEach(function(r){var i=r.pluginName;if(!(!e.options[i]&&!r.initializeByDefault)){var a=new r(e,t,e.options);a.sortable=e,a.options=e.options,e[i]=a,Ja(n,a.defaults)}}),e.options)if(e.options.hasOwnProperty(i)){var a=this.modifyOption(e,i,e.options[i]);a!==void 0&&(e.options[i]=a)}},getEventProperties:function(e,t){var n={};return Fo.forEach(function(r){typeof r.eventProperties==`function`&&Ja(n,r.eventProperties.call(t[r.pluginName],e))}),n},modifyOption:function(e,t,n){var r;return Fo.forEach(function(i){e[i.pluginName]&&i.optionListeners&&typeof i.optionListeners[t]==`function`&&(r=i.optionListeners[t].call(e[i.pluginName],n))}),r}};function Ro(e){var t=e.sortable,n=e.rootEl,r=e.name,i=e.targetEl,a=e.cloneEl,o=e.toEl,s=e.fromEl,c=e.oldIndex,l=e.newIndex,u=e.oldDraggableIndex,d=e.newDraggableIndex,f=e.originalEvent,p=e.putSortable,m=e.extraEventProperties;if(t||=n&&n[jo],t){var h,g=t.options,_=`on`+r.charAt(0).toUpperCase()+r.substr(1);window.CustomEvent&&!$a&&!eo?h=new CustomEvent(r,{bubbles:!0,cancelable:!0}):(h=document.createEvent(`Event`),h.initEvent(r,!0,!0)),h.to=o||n,h.from=s||n,h.item=i||n,h.clone=a,h.oldIndex=c,h.newIndex=l,h.oldDraggableIndex=u,h.newDraggableIndex=d,h.originalEvent=f,h.pullMode=p?p.lastPutMode:void 0;var v=Ga(Ga({},m),Lo.getEventProperties(r,t));for(var y in v)h[y]=v[y];n&&n.dispatchEvent(h),g[_]&&g[_].call(t,h)}}var zo=[`evt`],Bo=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=n.evt,i=Xa(n,zo);Lo.pluginEvent.bind($)(e,t,Ga({dragEl:X,parentEl:Ho,ghostEl:Z,rootEl:Q,nextEl:Uo,lastDownEl:Wo,cloneEl:Go,cloneHidden:Ko,dragStarted:cs,putSortable:Qo,activeSortable:$.active,originalEvent:r,oldIndex:qo,oldDraggableIndex:Yo,newIndex:Jo,newDraggableIndex:Xo,hideGhostForTarget:Ds,unhideGhostForTarget:Os,cloneNowHidden:function(){Ko=!0},cloneNowShown:function(){Ko=!1},dispatchSortableEvent:function(e){Vo({sortable:t,name:e,originalEvent:r})}},i))};function Vo(e){Ro(Ga({putSortable:Qo,cloneEl:Go,targetEl:X,rootEl:Q,oldIndex:qo,oldDraggableIndex:Yo,newIndex:Jo,newDraggableIndex:Xo},e))}var X,Ho,Z,Q,Uo,Wo,Go,Ko,qo,Jo,Yo,Xo,Zo,Qo,$o=!1,es=!1,ts=[],ns,rs,is,as,os,ss,cs,ls,us,ds=!1,fs=!1,ps,ms,hs=[],gs=!1,_s=[],vs=typeof document<`u`,ys=ro,bs=eo||$a?`cssFloat`:`float`,xs=vs&&!io&&!ro&&`draggable`in document.createElement(`div`),Ss=function(){if(vs){if($a)return!1;var e=document.createElement(`x`);return e.style.cssText=`pointer-events:auto`,e.style.pointerEvents===`auto`}}(),Cs=function(e,t){var n=Y(e),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),i=_o(e,0,t),a=_o(e,1,t),o=i&&Y(i),s=a&&Y(a),c=o&&parseInt(o.marginLeft)+parseInt(o.marginRight)+ho(i).width,l=s&&parseInt(s.marginLeft)+parseInt(s.marginRight)+ho(a).width;if(n.display===`flex`)return n.flexDirection===`column`||n.flexDirection===`column-reverse`?`vertical`:`horizontal`;if(n.display===`grid`)return n.gridTemplateColumns.split(` `).length<=1?`vertical`:`horizontal`;if(i&&o.float&&o.float!==`none`){var u=o.float===`left`?`left`:`right`;return a&&(s.clear===`both`||s.clear===u)?`vertical`:`horizontal`}return i&&(o.display===`block`||o.display===`flex`||o.display===`table`||o.display===`grid`||c>=r&&n[bs]===`none`||a&&n[bs]===`none`&&c+l>r)?`vertical`:`horizontal`},ws=function(e,t,n){var r=n?e.left:e.top,i=n?e.right:e.bottom,a=n?e.width:e.height,o=n?t.left:t.top,s=n?t.right:t.bottom,c=n?t.width:t.height;return r===o||i===s||r+a/2===o+c/2},Ts=function(e,t){var n;return ts.some(function(r){var i=r[jo].options.emptyInsertThreshold;if(!(!i||vo(r))){var a=ho(r),o=e>=a.left-i&&e<=a.right+i,s=t>=a.top-i&&t<=a.bottom+i;if(o&&s)return n=r}}),n},Es=function(e){function t(e,n){return function(r,i,a,o){var s=r.options.group.name&&i.options.group.name&&r.options.group.name===i.options.group.name;if(e==null&&(n||s))return!0;if(e==null||e===!1)return!1;if(n&&e===`clone`)return e;if(typeof e==`function`)return t(e(r,i,a,o),n)(r,i,a,o);var c=(n?r:i).options.group.name;return e===!0||typeof e==`string`&&e===c||e.join&&e.indexOf(c)>-1}}var n={},r=e.group;(!r||Ka(r)!=`object`)&&(r={name:r}),n.name=r.name,n.checkPull=t(r.pull,!0),n.checkPut=t(r.put),n.revertClone=r.revertClone,e.group=n},Ds=function(){!Ss&&Z&&Y(Z,`display`,`none`)},Os=function(){!Ss&&Z&&Y(Z,`display`,``)};vs&&!io&&document.addEventListener(`click`,function(e){if(es)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),es=!1,!1},!0);var ks=function(e){if(X){e=e.touches?e.touches[0]:e;var t=Ts(e.clientX,e.clientY);if(t){var n={};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);n.target=n.rootEl=t,n.preventDefault=void 0,n.stopPropagation=void 0,t[jo]._onDragOver(n)}}},As=function(e){X&&X.parentNode[jo]._isOutsideThisEl(e.target)};function $(e,t){if(!(e&&e.nodeType&&e.nodeType===1))throw`Sortable: \`el\` must be an HTMLElement, not ${{}.toString.call(e)}`;this.el=e,this.options=t=Ja({},t),e[jo]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?`>li`:`>*`,swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Cs(e,this.options)},ghostClass:`sortable-ghost`,chosenClass:`sortable-chosen`,dragClass:`sortable-drag`,ignore:`a, img`,filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(e,t){e.setData(`Text`,t.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:`data-id`,delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:`sortable-fallback`,fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:$.supportPointer!==!1&&`PointerEvent`in window&&!no,emptyInsertThreshold:5};for(var r in Lo.initializePlugins(this,e,n),n)!(r in t)&&(t[r]=n[r]);for(var i in Es(t),this)i.charAt(0)===`_`&&typeof this[i]==`function`&&(this[i]=this[i].bind(this));this.nativeDraggable=t.forceFallback?!1:xs,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?q(e,`pointerdown`,this._onTapStart):(q(e,`mousedown`,this._onTapStart),q(e,`touchstart`,this._onTapStart)),this.nativeDraggable&&(q(e,`dragover`,this),q(e,`dragenter`,this)),ts.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),Ja(this,Mo())}$.prototype={constructor:$,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(ls=null)},_getDirection:function(e,t){return typeof this.options.direction==`function`?this.options.direction.call(this,e,t,X):this.options.direction},_onTapStart:function(e){if(e.cancelable){var t=this,n=this.el,r=this.options,i=r.preventOnFilter,a=e.type,o=e.touches&&e.touches[0]||e.pointerType&&e.pointerType===`touch`&&e,s=(o||e).target,c=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||s,l=r.filter;if(Bs(n),!X&&!(/mousedown|pointerdown/.test(a)&&e.button!==0||r.disabled)&&!c.isContentEditable&&!(!this.nativeDraggable&&no&&s&&s.tagName.toUpperCase()===`SELECT`)&&(s=co(s,r.draggable,n,!1),!(s&&s.animated)&&Wo!==s)){if(qo=yo(s),Yo=yo(s,r.draggable),typeof l==`function`){if(l.call(this,e,s,this)){Vo({sortable:t,rootEl:c,name:`filter`,targetEl:s,toEl:n,fromEl:n}),Bo(`filter`,t,{evt:e}),i&&e.cancelable&&e.preventDefault();return}}else if(l&&(l=l.split(`,`).some(function(r){if(r=co(c,r.trim(),n,!1),r)return Vo({sortable:t,rootEl:r,name:`filter`,targetEl:s,fromEl:n,toEl:n}),Bo(`filter`,t,{evt:e}),!0}),l)){i&&e.cancelable&&e.preventDefault();return}r.handle&&!co(c,r.handle,n,!1)||this._prepareDragStart(e,o,s)}}},_prepareDragStart:function(e,t,n){var r=this,i=r.el,a=r.options,o=i.ownerDocument,s;if(n&&!X&&n.parentNode===i){var c=ho(n);if(Q=i,X=n,Ho=X.parentNode,Uo=X.nextSibling,Wo=n,Zo=a.group,$.dragged=X,ns={target:X,clientX:(t||e).clientX,clientY:(t||e).clientY},os=ns.clientX-c.left,ss=ns.clientY-c.top,this._lastX=(t||e).clientX,this._lastY=(t||e).clientY,X.style[`will-change`]=`all`,s=function(){if(Bo(`delayEnded`,r,{evt:e}),$.eventCanceled){r._onDrop();return}r._disableDelayedDragEvents(),!to&&r.nativeDraggable&&(X.draggable=!0),r._triggerDragStart(e,t),Vo({sortable:r,name:`choose`,originalEvent:e}),uo(X,a.chosenClass,!0)},a.ignore.split(`,`).forEach(function(e){po(X,e.trim(),Ns)}),q(o,`dragover`,ks),q(o,`mousemove`,ks),q(o,`touchmove`,ks),q(o,`mouseup`,r._onDrop),q(o,`touchend`,r._onDrop),q(o,`touchcancel`,r._onDrop),to&&this.nativeDraggable&&(this.options.touchStartThreshold=4,X.draggable=!0),Bo(`delayStart`,this,{evt:e}),a.delay&&(!a.delayOnTouchOnly||t)&&(!this.nativeDraggable||!(eo||$a))){if($.eventCanceled){this._onDrop();return}q(o,`mouseup`,r._disableDelayedDrag),q(o,`touchend`,r._disableDelayedDrag),q(o,`touchcancel`,r._disableDelayedDrag),q(o,`mousemove`,r._delayedDragTouchMoveHandler),q(o,`touchmove`,r._delayedDragTouchMoveHandler),a.supportPointer&&q(o,`pointermove`,r._delayedDragTouchMoveHandler),r._dragStartTimer=setTimeout(s,a.delay)}else s()}},_delayedDragTouchMoveHandler:function(e){var t=e.touches?e.touches[0]:e;Math.max(Math.abs(t.clientX-this._lastX),Math.abs(t.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){X&&Ns(X),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;J(e,`mouseup`,this._disableDelayedDrag),J(e,`touchend`,this._disableDelayedDrag),J(e,`touchcancel`,this._disableDelayedDrag),J(e,`mousemove`,this._delayedDragTouchMoveHandler),J(e,`touchmove`,this._delayedDragTouchMoveHandler),J(e,`pointermove`,this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,t){t||=e.pointerType==`touch`&&e,!this.nativeDraggable||t?this.options.supportPointer?q(document,`pointermove`,this._onTouchMove):t?q(document,`touchmove`,this._onTouchMove):q(document,`mousemove`,this._onTouchMove):(q(X,`dragend`,this),q(Q,`dragstart`,this._onDragStart));try{document.selection?Vs(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(e,t){if($o=!1,Q&&X){Bo(`dragStarted`,this,{evt:t}),this.nativeDraggable&&q(document,`dragover`,As);var n=this.options;!e&&uo(X,n.dragClass,!1),uo(X,n.ghostClass,!0),$.active=this,e&&this._appendGhost(),Vo({sortable:this,name:`start`,originalEvent:t})}else this._nulling()},_emulateDragOver:function(){if(rs){this._lastX=rs.clientX,this._lastY=rs.clientY,Ds();for(var e=document.elementFromPoint(rs.clientX,rs.clientY),t=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(rs.clientX,rs.clientY),e!==t);)t=e;if(X.parentNode[jo]._isOutsideThisEl(e),t)do{if(t[jo]){var n=void 0;if(n=t[jo]._onDragOver({clientX:rs.clientX,clientY:rs.clientY,target:e,rootEl:t}),n&&!this.options.dragoverBubble)break}e=t}while(t=t.parentNode);Os()}},_onTouchMove:function(e){if(ns){var t=this.options,n=t.fallbackTolerance,r=t.fallbackOffset,i=e.touches?e.touches[0]:e,a=Z&&fo(Z,!0),o=Z&&a&&a.a,s=Z&&a&&a.d,c=ys&&ms&&bo(ms),l=(i.clientX-ns.clientX+r.x)/(o||1)+(c?c[0]-hs[0]:0)/(o||1),u=(i.clientY-ns.clientY+r.y)/(s||1)+(c?c[1]-hs[1]:0)/(s||1);if(!$.active&&!$o){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))<n)return;this._onDragStart(e,!0)}if(Z){a?(a.e+=l-(is||0),a.f+=u-(as||0)):a={a:1,b:0,c:0,d:1,e:l,f:u};var d=`matrix(${a.a},${a.b},${a.c},${a.d},${a.e},${a.f})`;Y(Z,`webkitTransform`,d),Y(Z,`mozTransform`,d),Y(Z,`msTransform`,d),Y(Z,`transform`,d),is=l,as=u,rs=i}e.cancelable&&e.preventDefault()}},_appendGhost:function(){if(!Z){var e=this.options.fallbackOnBody?document.body:Q,t=ho(X,!0,ys,!0,e),n=this.options;if(ys){for(ms=e;Y(ms,`position`)===`static`&&Y(ms,`transform`)===`none`&&ms!==document;)ms=ms.parentNode;ms!==document.body&&ms!==document.documentElement?(ms===document&&(ms=mo()),t.top+=ms.scrollTop,t.left+=ms.scrollLeft):ms=mo(),hs=bo(ms)}Z=X.cloneNode(!0),uo(Z,n.ghostClass,!1),uo(Z,n.fallbackClass,!0),uo(Z,n.dragClass,!0),Y(Z,`transition`,``),Y(Z,`transform`,``),Y(Z,`box-sizing`,`border-box`),Y(Z,`margin`,0),Y(Z,`top`,t.top),Y(Z,`left`,t.left),Y(Z,`width`,t.width),Y(Z,`height`,t.height),Y(Z,`opacity`,`0.8`),Y(Z,`position`,ys?`absolute`:`fixed`),Y(Z,`zIndex`,`100000`),Y(Z,`pointerEvents`,`none`),$.ghost=Z,e.appendChild(Z),Y(Z,`transform-origin`,os/parseInt(Z.style.width)*100+`% `+ss/parseInt(Z.style.height)*100+`%`)}},_onDragStart:function(e,t){var n=this,r=e.dataTransfer,i=n.options;if(Bo(`dragStart`,this,{evt:e}),$.eventCanceled){this._onDrop();return}Bo(`setupClone`,this),$.eventCanceled||(Go=ko(X),Go.removeAttribute(`id`),Go.draggable=!1,Go.style[`will-change`]=``,this._hideClone(),uo(Go,this.options.chosenClass,!1),$.clone=Go),n.cloneId=Vs(function(){Bo(`clone`,n),!$.eventCanceled&&(n.options.removeCloneOnHide||Q.insertBefore(Go,X),n._hideClone(),Vo({sortable:n,name:`clone`}))}),!t&&uo(X,i.dragClass,!0),t?(es=!0,n._loopId=setInterval(n._emulateDragOver,50)):(J(document,`mouseup`,n._onDrop),J(document,`touchend`,n._onDrop),J(document,`touchcancel`,n._onDrop),r&&(r.effectAllowed=`move`,i.setData&&i.setData.call(n,r,X)),q(document,`drop`,n),Y(X,`transform`,`translateZ(0)`)),$o=!0,n._dragStartId=Vs(n._dragStarted.bind(n,t,e)),q(document,`selectstart`,n),cs=!0,no&&Y(document.body,`user-select`,`none`)},_onDragOver:function(e){var t=this.el,n=e.target,r,i,a,o=this.options,s=o.group,c=$.active,l=Zo===s,u=o.sort,d=Qo||c,f,p=this,m=!1;if(gs)return;function h(o,s){Bo(o,p,Ga({evt:e,isOwner:l,axis:f?`vertical`:`horizontal`,revert:a,dragRect:r,targetRect:i,canSort:u,fromSortable:d,target:n,completed:_,onMove:function(n,i){return Ms(Q,t,X,r,n,ho(n),e,i)},changed:v},s))}function g(){h(`dragOverAnimationCapture`),p.captureAnimationState(),p!==d&&d.captureAnimationState()}function _(r){return h(`dragOverCompleted`,{insertion:r}),r&&(l?c._hideClone():c._showClone(p),p!==d&&(uo(X,Qo?Qo.options.ghostClass:c.options.ghostClass,!1),uo(X,o.ghostClass,!0)),Qo!==p&&p!==$.active?Qo=p:p===$.active&&Qo&&(Qo=null),d===p&&(p._ignoreWhileAnimating=n),p.animateAll(function(){h(`dragOverAnimationComplete`),p._ignoreWhileAnimating=null}),p!==d&&(d.animateAll(),d._ignoreWhileAnimating=null)),(n===X&&!X.animated||n===t&&!n.animated)&&(ls=null),!o.dragoverBubble&&!e.rootEl&&n!==document&&(X.parentNode[jo]._isOutsideThisEl(e.target),!r&&ks(e)),!o.dragoverBubble&&e.stopPropagation&&e.stopPropagation(),m=!0}function v(){Jo=yo(X),Xo=yo(X,o.draggable),Vo({sortable:p,name:`change`,toEl:t,newIndex:Jo,newDraggableIndex:Xo,originalEvent:e})}if(e.preventDefault!==void 0&&e.cancelable&&e.preventDefault(),n=co(n,o.draggable,t,!0),h(`dragOver`),$.eventCanceled)return m;if(X.contains(e.target)||n.animated&&n.animatingX&&n.animatingY||p._ignoreWhileAnimating===n)return _(!1);if(es=!1,c&&!o.disabled&&(l?u||(a=Ho!==Q):Qo===this||(this.lastPutMode=Zo.checkPull(this,c,X,e))&&s.checkPut(this,c,X,e))){if(f=this._getDirection(e,n)===`vertical`,r=ho(X),h(`dragOverValid`),$.eventCanceled)return m;if(a)return Ho=Q,g(),this._hideClone(),h(`revert`),$.eventCanceled||(Uo?Q.insertBefore(X,Uo):Q.appendChild(X)),_(!0);var y=vo(t,o.draggable);if(!y||Is(e,f,this)&&!y.animated){if(y===X)return _(!1);if(y&&t===e.target&&(n=y),n&&(i=ho(n)),Ms(Q,t,X,r,n,i,e,!!n)!==!1)return g(),y&&y.nextSibling?t.insertBefore(X,y.nextSibling):t.appendChild(X),Ho=t,v(),_(!0)}else if(y&&Fs(e,f,this)){var ee=_o(t,0,o,!0);if(ee===X)return _(!1);if(n=ee,i=ho(n),Ms(Q,t,X,r,n,i,e,!1)!==!1)return g(),t.insertBefore(X,ee),Ho=t,v(),_(!0)}else if(n.parentNode===t){i=ho(n);var b=0,x,S=X.parentNode!==t,C=!ws(X.animated&&X.toRect||r,n.animated&&n.toRect||i,f),w=f?`top`:`left`,T=go(n,`top`,`top`)||go(X,`top`,`top`),te=T?T.scrollTop:void 0;ls!==n&&(x=i[w],ds=!1,fs=!C&&o.invertSwap||S),b=Ls(e,n,i,f,C?1:o.swapThreshold,o.invertedSwapThreshold==null?o.swapThreshold:o.invertedSwapThreshold,fs,ls===n);var E;if(b!==0){var ne=yo(X);do ne-=b,E=Ho.children[ne];while(E&&(Y(E,`display`)===`none`||E===Z))}if(b===0||E===n)return _(!1);ls=n,us=b;var D=n.nextElementSibling,re=!1;re=b===1;var O=Ms(Q,t,X,r,n,i,e,re);if(O!==!1)return(O===1||O===-1)&&(re=O===1),gs=!0,setTimeout(Ps,30),g(),re&&!D?t.appendChild(X):n.parentNode.insertBefore(X,re?D:n),T&&Oo(T,0,te-T.scrollTop),Ho=X.parentNode,x!==void 0&&!fs&&(ps=Math.abs(x-ho(n)[w])),v(),_(!0)}if(t.contains(X))return _(!1)}return!1},_ignoreWhileAnimating:null,_offMoveEvents:function(){J(document,`mousemove`,this._onTouchMove),J(document,`touchmove`,this._onTouchMove),J(document,`pointermove`,this._onTouchMove),J(document,`dragover`,ks),J(document,`mousemove`,ks),J(document,`touchmove`,ks)},_offUpEvents:function(){var e=this.el.ownerDocument;J(e,`mouseup`,this._onDrop),J(e,`touchend`,this._onDrop),J(e,`pointerup`,this._onDrop),J(e,`touchcancel`,this._onDrop),J(document,`selectstart`,this)},_onDrop:function(e){var t=this.el,n=this.options;if(Jo=yo(X),Xo=yo(X,n.draggable),Bo(`drop`,this,{evt:e}),Ho=X&&X.parentNode,Jo=yo(X),Xo=yo(X,n.draggable),$.eventCanceled){this._nulling();return}$o=!1,fs=!1,ds=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Hs(this.cloneId),Hs(this._dragStartId),this.nativeDraggable&&(J(document,`drop`,this),J(t,`dragstart`,this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),no&&Y(document.body,`user-select`,``),Y(X,`transform`,``),e&&(cs&&(e.cancelable&&e.preventDefault(),!n.dropBubble&&e.stopPropagation()),Z&&Z.parentNode&&Z.parentNode.removeChild(Z),(Q===Ho||Qo&&Qo.lastPutMode!==`clone`)&&Go&&Go.parentNode&&Go.parentNode.removeChild(Go),X&&(this.nativeDraggable&&J(X,`dragend`,this),Ns(X),X.style[`will-change`]=``,cs&&!$o&&uo(X,Qo?Qo.options.ghostClass:this.options.ghostClass,!1),uo(X,this.options.chosenClass,!1),Vo({sortable:this,name:`unchoose`,toEl:Ho,newIndex:null,newDraggableIndex:null,originalEvent:e}),Q===Ho?Jo!==qo&&Jo>=0&&(Vo({sortable:this,name:`update`,toEl:Ho,originalEvent:e}),Vo({sortable:this,name:`sort`,toEl:Ho,originalEvent:e})):(Jo>=0&&(Vo({rootEl:Ho,name:`add`,toEl:Ho,fromEl:Q,originalEvent:e}),Vo({sortable:this,name:`remove`,toEl:Ho,originalEvent:e}),Vo({rootEl:Ho,name:`sort`,toEl:Ho,fromEl:Q,originalEvent:e}),Vo({sortable:this,name:`sort`,toEl:Ho,originalEvent:e})),Qo&&Qo.save()),$.active&&((Jo==null||Jo===-1)&&(Jo=qo,Xo=Yo),Vo({sortable:this,name:`end`,toEl:Ho,originalEvent:e}),this.save()))),this._nulling()},_nulling:function(){Bo(`nulling`,this),Q=X=Ho=Z=Uo=Go=Wo=Ko=ns=rs=cs=Jo=Xo=qo=Yo=ls=us=Qo=Zo=$.dragged=$.ghost=$.clone=$.active=null,_s.forEach(function(e){e.checked=!0}),_s.length=is=as=0},handleEvent:function(e){switch(e.type){case`drop`:case`dragend`:this._onDrop(e);break;case`dragenter`:case`dragover`:X&&(this._onDragOver(e),js(e));break;case`selectstart`:e.preventDefault();break}},toArray:function(){for(var e=[],t,n=this.el.children,r=0,i=n.length,a=this.options;r<i;r++)t=n[r],co(t,a.draggable,this.el,!1)&&e.push(t.getAttribute(a.dataIdAttr)||zs(t));return e},sort:function(e,t){var n={},r=this.el;this.toArray().forEach(function(e,t){var i=r.children[t];co(i,this.options.draggable,r,!1)&&(n[e]=i)},this),t&&this.captureAnimationState(),e.forEach(function(e){n[e]&&(r.removeChild(n[e]),r.appendChild(n[e]))}),t&&this.animateAll()},save:function(){var e=this.options.store;e&&e.set&&e.set(this)},closest:function(e,t){return co(e,t||this.options.draggable,this.el,!1)},option:function(e,t){var n=this.options;if(t===void 0)return n[e];var r=Lo.modifyOption(this,e,t);r===void 0?n[e]=t:n[e]=r,e===`group`&&Es(n)},destroy:function(){Bo(`destroy`,this);var e=this.el;e[jo]=null,J(e,`mousedown`,this._onTapStart),J(e,`touchstart`,this._onTapStart),J(e,`pointerdown`,this._onTapStart),this.nativeDraggable&&(J(e,`dragover`,this),J(e,`dragenter`,this)),Array.prototype.forEach.call(e.querySelectorAll(`[draggable]`),function(e){e.removeAttribute(`draggable`)}),this._onDrop(),this._disableDelayedDragEvents(),ts.splice(ts.indexOf(this.el),1),this.el=e=null},_hideClone:function(){if(!Ko){if(Bo(`hideClone`,this),$.eventCanceled)return;Y(Go,`display`,`none`),this.options.removeCloneOnHide&&Go.parentNode&&Go.parentNode.removeChild(Go),Ko=!0}},_showClone:function(e){if(e.lastPutMode!==`clone`){this._hideClone();return}if(Ko){if(Bo(`showClone`,this),$.eventCanceled)return;X.parentNode==Q&&!this.options.group.revertClone?Q.insertBefore(Go,X):Uo?Q.insertBefore(Go,Uo):Q.appendChild(Go),this.options.group.revertClone&&this.animate(X,Go),Y(Go,`display`,``),Ko=!1}}};function js(e){e.dataTransfer&&(e.dataTransfer.dropEffect=`move`),e.cancelable&&e.preventDefault()}function Ms(e,t,n,r,i,a,o,s){var c,l=e[jo],u=l.options.onMove,d;return window.CustomEvent&&!$a&&!eo?c=new CustomEvent(`move`,{bubbles:!0,cancelable:!0}):(c=document.createEvent(`Event`),c.initEvent(`move`,!0,!0)),c.to=t,c.from=e,c.dragged=n,c.draggedRect=r,c.related=i||t,c.relatedRect=a||ho(t),c.willInsertAfter=s,c.originalEvent=o,e.dispatchEvent(c),u&&(d=u.call(l,c,o)),d}function Ns(e){e.draggable=!1}function Ps(){gs=!1}function Fs(e,t,n){var r=ho(_o(n.el,0,n.options,!0)),i=Ao(n.el,n.options,Z),a=10;return t?e.clientX<i.left-a||e.clientY<r.top&&e.clientX<r.right:e.clientY<i.top-a||e.clientY<r.bottom&&e.clientX<r.left}function Is(e,t,n){var r=ho(vo(n.el,n.options.draggable)),i=Ao(n.el,n.options,Z),a=10;return t?e.clientX>i.right+a||e.clientY>r.bottom&&e.clientX>r.left:e.clientY>i.bottom+a||e.clientX>r.right&&e.clientY>r.top}function Ls(e,t,n,r,i,a,o,s){var c=r?e.clientY:e.clientX,l=r?n.height:n.width,u=r?n.top:n.left,d=r?n.bottom:n.right,f=!1;if(!o){if(s&&ps<l*i){if(!ds&&(us===1?c>u+l*a/2:c<d-l*a/2)&&(ds=!0),ds)f=!0;else if(us===1?c<u+ps:c>d-ps)return-us}else if(c>u+l*(1-i)/2&&c<d-l*(1-i)/2)return Rs(t)}return f||=o,f&&(c<u+l*a/2||c>d-l*a/2)?c>u+l/2?1:-1:0}function Rs(e){return yo(X)<yo(e)?1:-1}function zs(e){for(var t=e.tagName+e.className+e.src+e.href+e.textContent,n=t.length,r=0;n--;)r+=t.charCodeAt(n);return r.toString(36)}function Bs(e){_s.length=0;for(var t=e.getElementsByTagName(`input`),n=t.length;n--;){var r=t[n];r.checked&&_s.push(r)}}function Vs(e){return setTimeout(e,0)}function Hs(e){return clearTimeout(e)}vs&&q(document,`touchmove`,function(e){($.active||$o)&&e.cancelable&&e.preventDefault()}),$.utils={on:q,off:J,css:Y,find:po,is:function(e,t){return!!co(e,t,e,!1)},extend:Co,throttle:Eo,closest:co,toggleClass:uo,clone:ko,index:yo,nextTick:Vs,cancelNextTick:Hs,detectDirection:Cs,getChild:_o},$.get=function(e){return e[jo]},$.mount=function(){var e=[...arguments];e[0].constructor===Array&&(e=e[0]),e.forEach(function(e){if(!e.prototype||!e.prototype.constructor)throw`Sortable: Mounted plugin must be a constructor function, not ${{}.toString.call(e)}`;e.utils&&($.utils=Ga(Ga({},$.utils),e.utils)),Lo.mount(e)})},$.create=function(e,t){return new $(e,t)},$.version=Za;var Us=[],Ws,Gs,Ks=!1,qs,Js,Ys,Xs;function Zs(){function e(){for(var e in this.defaults={scroll:!0,forceAutoScrollFallback:!1,scrollSensitivity:30,scrollSpeed:10,bubbleScroll:!0},this)e.charAt(0)===`_`&&typeof this[e]==`function`&&(this[e]=this[e].bind(this))}return e.prototype={dragStarted:function(e){var t=e.originalEvent;this.sortable.nativeDraggable?q(document,`dragover`,this._handleAutoScroll):this.options.supportPointer?q(document,`pointermove`,this._handleFallbackAutoScroll):t.touches?q(document,`touchmove`,this._handleFallbackAutoScroll):q(document,`mousemove`,this._handleFallbackAutoScroll)},dragOverCompleted:function(e){var t=e.originalEvent;!this.options.dragOverBubble&&!t.rootEl&&this._handleAutoScroll(t)},drop:function(){this.sortable.nativeDraggable?J(document,`dragover`,this._handleAutoScroll):(J(document,`pointermove`,this._handleFallbackAutoScroll),J(document,`touchmove`,this._handleFallbackAutoScroll),J(document,`mousemove`,this._handleFallbackAutoScroll)),$s(),Qs(),Do()},nulling:function(){Ys=Gs=Ws=Ks=Xs=qs=Js=null,Us.length=0},_handleFallbackAutoScroll:function(e){this._handleAutoScroll(e,!0)},_handleAutoScroll:function(e,t){var n=this,r=(e.touches?e.touches[0]:e).clientX,i=(e.touches?e.touches[0]:e).clientY,a=document.elementFromPoint(r,i);if(Ys=e,t||this.options.forceAutoScrollFallback||eo||$a||no){ec(e,this.options,a,t);var o=So(a,!0);Ks&&(!Xs||r!==qs||i!==Js)&&(Xs&&$s(),Xs=setInterval(function(){var a=So(document.elementFromPoint(r,i),!0);a!==o&&(o=a,Qs()),ec(e,n.options,a,t)},10),qs=r,Js=i)}else{if(!this.options.bubbleScroll||So(a,!0)===mo()){Qs();return}ec(e,this.options,So(a,!1),!1)}}},Ja(e,{pluginName:`scroll`,initializeByDefault:!0})}function Qs(){Us.forEach(function(e){clearInterval(e.pid)}),Us=[]}function $s(){clearInterval(Xs)}var ec=Eo(function(e,t,n,r){if(t.scroll){var i=(e.touches?e.touches[0]:e).clientX,a=(e.touches?e.touches[0]:e).clientY,o=t.scrollSensitivity,s=t.scrollSpeed,c=mo(),l=!1,u;Gs!==n&&(Gs=n,Qs(),Ws=t.scroll,u=t.scrollFn,Ws===!0&&(Ws=So(n,!0)));var d=0,f=Ws;do{var p=f,m=ho(p),h=m.top,g=m.bottom,_=m.left,v=m.right,y=m.width,ee=m.height,b=void 0,x=void 0,S=p.scrollWidth,C=p.scrollHeight,w=Y(p),T=p.scrollLeft,te=p.scrollTop;p===c?(b=y<S&&(w.overflowX===`auto`||w.overflowX===`scroll`||w.overflowX===`visible`),x=ee<C&&(w.overflowY===`auto`||w.overflowY===`scroll`||w.overflowY===`visible`)):(b=y<S&&(w.overflowX===`auto`||w.overflowX===`scroll`),x=ee<C&&(w.overflowY===`auto`||w.overflowY===`scroll`));var E=b&&(Math.abs(v-i)<=o&&T+y<S)-(Math.abs(_-i)<=o&&!!T),ne=x&&(Math.abs(g-a)<=o&&te+ee<C)-(Math.abs(h-a)<=o&&!!te);if(!Us[d])for(var D=0;D<=d;D++)Us[D]||(Us[D]={});(Us[d].vx!=E||Us[d].vy!=ne||Us[d].el!==p)&&(Us[d].el=p,Us[d].vx=E,Us[d].vy=ne,clearInterval(Us[d].pid),(E!=0||ne!=0)&&(l=!0,Us[d].pid=setInterval(function(){r&&this.layer===0&&$.active._onTouchMove(Ys);var t=Us[this.layer].vy?Us[this.layer].vy*s:0,n=Us[this.layer].vx?Us[this.layer].vx*s:0;typeof u==`function`&&u.call($.dragged.parentNode[jo],n,t,e,Ys,Us[this.layer].el)!==`continue`||Oo(Us[this.layer].el,n,t)}.bind({layer:d}),24))),d++}while(t.bubbleScroll&&f!==c&&(f=So(f,!1)));Ks=l}},30),tc=function(e){var t=e.originalEvent,n=e.putSortable,r=e.dragEl,i=e.activeSortable,a=e.dispatchSortableEvent,o=e.hideGhostForTarget,s=e.unhideGhostForTarget;if(t){var c=n||i;o();var l=t.changedTouches&&t.changedTouches.length?t.changedTouches[0]:t,u=document.elementFromPoint(l.clientX,l.clientY);s(),c&&!c.el.contains(u)&&(a(`spill`),this.onSpill({dragEl:r,putSortable:n}))}};function nc(){}nc.prototype={startIndex:null,dragStart:function(e){this.startIndex=e.oldDraggableIndex},onSpill:function(e){var t=e.dragEl,n=e.putSortable;this.sortable.captureAnimationState(),n&&n.captureAnimationState();var r=_o(this.sortable.el,this.startIndex,this.options);r?this.sortable.el.insertBefore(t,r):this.sortable.el.appendChild(t),this.sortable.animateAll(),n&&n.animateAll()},drop:tc},Ja(nc,{pluginName:`revertOnSpill`});function rc(){}rc.prototype={onSpill:function(e){var t=e.dragEl,n=e.putSortable||this.sortable;n.captureAnimationState(),t.parentNode&&t.parentNode.removeChild(t),n.animateAll()},drop:tc},Ja(rc,{pluginName:`removeOnSpill`}),$.mount(new Zs),$.mount(rc,nc);function ic(e){return e==null?e:JSON.parse(JSON.stringify(e))}function ac(e){k()&&b(e)}function oc(e){k()?f(e):pe(e)}var sc=null,cc=null;function lc(e=null,t=null){sc=e,cc=t}function uc(){return{data:sc,clonedData:cc}}var dc=Symbol(`cloneElement`);function fc(...t){let n=k()?.proxy,r=null,a=t[0],[,o,s]=t;Array.isArray(i(o))||(s=o,o=null);let c=null,{immediate:l=!0,clone:u=ic,forceFallback:d,fallbackOnBody:f,customUpdate:p}=i(s)??{};function m(e){let{from:t,oldIndex:n,item:a}=e,s=Array.from(t.childNodes);r=d&&!f?s.slice(0,-1):s;let c=i(i(o)?.[n]),l=u(c);lc(c,l),a[dc]=l}function h(e){let t=e.item[dc];if(!Na(t)){if(Ia(e.item),W(o)){let n=[...i(o)];o.value=Ma(n,e.newDraggableIndex,t);return}Ma(i(o),e.newDraggableIndex,t)}}function g(e){let{from:t,item:n,oldIndex:r,oldDraggableIndex:a,pullMode:s,clone:c}=e;if(Fa(t,n,r),s===`clone`){Ia(c);return}if(W(o)){let e=[...i(o)];o.value=ja(e,a);return}ja(i(o),a)}function _(e){if(p){p(e);return}let{from:t,item:n,oldIndex:r,oldDraggableIndex:a,newDraggableIndex:s}=e;if(Ia(n),Fa(t,n,r),W(o)){let e=[...i(o)];o.value=Oa(e,a,s);return}Oa(i(o),a,s)}function v(e){let{newIndex:t,oldIndex:n,from:i,to:a}=e,o=null,s=t===n&&i===a;try{if(s){let e=null;r?.some((t,n)=>{if(e&&r?.length!==a.childNodes.length)return i.insertBefore(e,t.nextSibling),!0;let o=a.childNodes[n];e=a?.replaceChild(t,o)})}}catch(e){o=e}finally{r=null}pe(()=>{if(lc(),o)throw o})}let y={onUpdate:_,onStart:m,onAdd:h,onRemove:g,onEnd:v};function ee(e){let t=i(a);return e||=Pa(t)?La(t,n?.$el):t,e&&!Ba(e)&&(e=e.$el),e||Da(`Root element not found`),e}function b(){let e=i(s)??{},{immediate:t,clone:n}=e,r=wa(e,[`immediate`,`clone`]);return Va(r,(e,t)=>{Ha(e)&&(r[e]=(e,...n)=>(Ua(e,uc()),t(e,...n)))}),za(o===null?{}:y,r)}let x=e=>{e=ee(e),c&&S.destroy(),c=new $(e,b())};e(()=>s,()=>{c&&Va(b(),(e,t)=>{c?.option(e,t)})},{deep:!0});let S={option:(e,t)=>c?.option(e,t),destroy:()=>{c?.destroy(),c=null},save:()=>c?.save(),toArray:()=>c?.toArray(),closest:(...e)=>c?.closest(...e)};return oc(()=>{l&&x()}),ac(S.destroy),Ca({start:x,pause:()=>S?.option(`disabled`,!0),resume:()=>S?.option(`disabled`,!1)},S)}var pc=[`update`,`start`,`add`,`remove`,`choose`,`unchoose`,`end`,`sort`,`filter`,`clone`,`move`,`change`],mc=K({name:`VueDraggable`,model:{prop:`modelValue`,event:`update:modelValue`},props:[`clone`,`animation`,`ghostClass`,`group`,`sort`,`disabled`,`store`,`handle`,`draggable`,`swapThreshold`,`invertSwap`,`invertedSwapThreshold`,`removeCloneOnHide`,`direction`,`chosenClass`,`dragClass`,`ignore`,`filter`,`preventOnFilter`,`easing`,`setData`,`dropBubble`,`dragoverBubble`,`dataIdAttr`,`delay`,`delayOnTouchOnly`,`touchStartThreshold`,`forceFallback`,`fallbackClass`,`fallbackOnBody`,`fallbackTolerance`,`fallbackOffset`,`supportPointer`,`emptyInsertThreshold`,`scroll`,`forceAutoScrollFallback`,`scrollSensitivity`,`scrollSpeed`,`bubbleScroll`,`modelValue`,`tag`,`target`,`customUpdate`,...pc.map(e=>`on${e.replace(/^\S/,e=>e.toUpperCase())}`)],emits:[`update:modelValue`,...pc],setup(e,{slots:t,emit:n,expose:r,attrs:a}){let o=pc.reduce((e,t)=>{let r=`on${t.replace(/^\S/,e=>e.toUpperCase())}`;return e[r]=(...e)=>n(t,...e),e},{}),s=A(()=>{let t=O(e),{modelValue:n}=t,r=wa(t,[`modelValue`]),s=Object.entries(r).reduce((e,[t,n])=>{let r=i(n);return r!==void 0&&(e[t]=r),e},{});return Ca(Ca({},o),Aa(Ca(Ca({},a),s)))}),c=A({get:()=>e.modelValue,set:e=>n(`update:modelValue`,e)}),l=P(),u=ve(fc(e.target||l,c,s));return r(u),()=>x(e.tag||`div`,{ref:l},(t?.default)?.call(t,u))}}),hc={mounted:`mounted`,unmounted:`unmounted`};hc.mounted,hc.unmounted;var gc={class:`config-log-parsers`},_c={class:`config-card`},vc={class:`config-card__header`},yc={class:`config-card__hint`},bc={class:`config-card`},xc={class:`config-card__header`},Sc={class:`config-card__header-hint`},Cc={class:`config-log-parsers__order`},wc={class:`config-log-parsers__name`},Tc={key:1,class:`config-log-parsers__empty`},Ec={class:`config-log-parsers__add-row`},Dc={class:`config-log-parsers__footer`},Oc=a(K({__name:`ServiceConfigLogs`,props:{service:{}},emits:[`save`],setup(t,{emit:a}){let s=t,c=a,l=r(),{t:d}=te(),p=We(),m=P([...s.service.parserIds??[]]);e(()=>s.service,e=>{m.value=[...e.parserIds??[]]});let h=A(()=>[...p.parsers].filter(e=>e.enabled).sort((e,t)=>e.name.localeCompare(t.name))),g=A(()=>h.value.filter(e=>!m.value.includes(e.id))),_=P(m.value.map(e=>p.parsers.find(t=>t.id===e)).filter(e=>e!==void 0));e(m,e=>{let t=_.value.filter(t=>e.includes(t.id)),n=e.filter(e=>!t.find(t=>t.id===e)).map(e=>p.parsers.find(t=>t.id===e)).filter(e=>e!==void 0);_.value=[...t,...n]}),e(()=>p.parsers,()=>{_.value=m.value.map(e=>p.parsers.find(t=>t.id===e)).filter(e=>e!==void 0)});let v=P(null);function y(e){if(!e)return;let t=p.parsers.find(t=>t.id===e);t&&(m.value=[...m.value,e],_.value=[..._.value,t],v.value=null,x())}function ee(e){m.value=m.value.filter(t=>t!==e),_.value=_.value.filter(t=>t.id!==e),x()}function b(){m.value=_.value.map(e=>e.id),x()}function x(){c(`save`,{parserIds:_.value.map(e=>e.id)})}return f(()=>{p.fetchParsers()}),(e,t)=>(n(),M(`div`,gc,[L(`div`,_c,[L(`div`,vc,[t[3]||=L(`i`,{class:`pi pi-code`},null,-1),L(`span`,null,I(i(d)(`serviceConfigLogs.jsParsers`)),1)]),L(`small`,yc,I(i(d)(`serviceConfigLogs.jsParsersHint`)),1)]),L(`div`,bc,[L(`div`,xc,[t[4]||=L(`i`,{class:`pi pi-sort-alt`},null,-1),L(`span`,null,I(i(d)(`serviceConfigLogs.executionOrder`)),1),L(`small`,Sc,I(i(d)(`serviceConfigLogs.executionOrderHint`)),1)]),_.value.length>0?(n(),G(i(mc),{key:0,modelValue:_.value,"onUpdate:modelValue":t[0]||=e=>_.value=e,animation:150,handle:`.drag-handle`,class:`config-log-parsers__drag-list`,"data-testid":`log-parsers-drag-list`,onEnd:b},{default:B(()=>[(n(!0),M(D,null,u(_.value,(e,r)=>(n(),M(`div`,{key:e.id,class:`config-log-parsers__drag-row`,"data-testid":`log-parsers-drag-row`},[t[5]||=L(`span`,{class:`drag-handle`,"data-testid":`drag-handle`},[L(`i`,{class:`pi pi-bars`})],-1),L(`span`,Cc,I(r+1),1),L(`span`,wc,I(e.name),1),e.builtin?(n(),G(i(Ce),{key:0,severity:`secondary`,class:`config-log-parsers__builtin-badge`},{default:B(()=>[N(I(i(d)(`serviceConfigLogs.builtin`)),1)]),_:1})):j(``,!0),e.enabled?j(``,!0):(n(),G(i(Ce),{key:1,severity:`warn`,class:`config-log-parsers__disabled-badge`},{default:B(()=>[N(I(i(d)(`serviceConfigLogs.disabled`)),1)]),_:1})),E(i(o),{icon:`pi pi-trash`,severity:`danger`,text:``,size:`small`,class:`config-log-parsers__delete`,onClick:t=>ee(e.id)},null,8,[`onClick`])]))),128))]),_:1},8,[`modelValue`])):j(``,!0),_.value.length===0?(n(),M(`div`,Tc,I(i(d)(`serviceConfigLogs.empty`)),1)):j(``,!0),L(`div`,Ec,[E(i(w),{modelValue:v.value,"onUpdate:modelValue":[t[1]||=e=>v.value=e,y],options:g.value,"option-label":`name`,"option-value":`id`,placeholder:i(d)(`serviceConfigLogs.addParser`),class:`config-log-parsers__add-select`,loading:i(p).loading,disabled:g.value.length===0},{option:B(({option:e})=>[L(`span`,null,I(e.name),1),e.builtin?(n(),G(i(Ce),{key:0,severity:`secondary`,class:`ml-2`,style:{"font-size":`0.65rem`,padding:`0.1rem 0.35rem`}},{default:B(()=>[N(I(i(d)(`serviceConfigLogs.builtin`)),1)]),_:1})):j(``,!0)]),_:1},8,[`modelValue`,`options`,`placeholder`,`loading`,`disabled`])])]),L(`div`,Dc,[E(i(o),{label:i(d)(`serviceConfigLogs.manageParsers`),icon:`pi pi-cog`,severity:`secondary`,outlined:``,size:`small`,onClick:t[2]||=e=>i(l).push({name:`settings`,query:{section:`parsers`}})},null,8,[`label`])])]))}}),[[`__scopeId`,`data-v-2a8eb0c6`]]),kc={class:`config-log-sources`},Ac={class:`config-card`},jc={class:`config-card__header`},Mc={class:`config-card__hint`},Nc={key:0,class:`config-card config-card--list`},Pc={class:`source-row__info`},Fc={class:`source-row__type`},Ic={class:`source-row__label`},Lc={class:`source-row__actions`},Rc={key:1,class:`config-log-sources__empty`},zc={class:`config-log-sources__footer`},Bc={class:`dialog-form`},Vc={class:`dialog-form__field`},Hc={class:`dialog-form__label`},Uc={class:`dialog-form__field`},Wc={class:`dialog-form__label`},Gc={class:`dialog-form__field`},Kc={class:`dialog-form__label`},qc={class:`dialog-form__field dialog-form__field--row`},Jc={class:`dialog-form__label`},Yc={class:`dialog-form__field`},Xc={class:`dialog-form__label`},Zc={class:`dialog-form__row`},Qc={class:`dialog-form__field`},$c={class:`dialog-form__field`},el={class:`dialog-form__row`},tl={class:`dialog-form__field`},nl={class:`dialog-form__field`},rl={class:`dialog-form__field`},il={class:`dialog-form__row`},al={class:`dialog-form__field dialog-form__field--grow`},ol={class:`dialog-form__field dialog-form__field--port`},sl={class:`dialog-form__row`},cl={class:`dialog-form__field`},ll={class:`dialog-form__field`},ul={class:`dialog-form__row`},dl={class:`dialog-form__field`},fl={class:`dialog-form__field`},pl={class:`dialog-form__row`},ml={class:`dialog-form__field`},hl={class:`dialog-form__field`},gl={class:`dialog-form__row`},_l={class:`dialog-form__field`},vl={class:`dialog-form__field`},yl={class:`dialog-form__field`},bl={key:3,class:`dialog-form__hint-block`},xl=a(K({__name:`ServiceConfigLogSources`,props:{service:{}},emits:[`save`],setup(t,{emit:r}){let{t:a}=te(),c=t,l=r,d=[{label:`Console (stdout/stderr)`,value:`console`,icon:`pi-terminal`},{label:`File`,value:`file`,icon:`pi-file`},{label:`MongoDB`,value:`mongo`,icon:`pi-database`},{label:`MySQL`,value:`mysql`,icon:`pi-database`}];function f(e){return e===`console`?{type:`console`}:e===`file`?{type:`file`,path:``,encoding:`utf-8`,startFromEnd:!0}:e===`mongo`?{type:`mongo`,connectionString:``,database:``,collection:``,timestampField:`timestamp`,messageField:`message`}:{type:`mysql`,host:`localhost`,port:3306,user:``,password:``,database:``,table:``,timestampColumn:`created_at`,messageColumn:`message`,pollIntervalMs:2e3}}let p=P([...c.service.logSources??[]]);e(()=>c.service.logSources,e=>{p.value=[...e??[]]});let m=P(!1),h=P(null),g=P(f(`console`));function _(){h.value=null,g.value=f(`file`),m.value=!0}function v(e){h.value=e,g.value={...p.value[e]},m.value=!0}function y(e){g.value=f(e)}function ee(){h.value===null?p.value=[...p.value,{...g.value}]:p.value=p.value.map((e,t)=>t===h.value?{...g.value}:e),m.value=!1,l(`save`,{logSources:p.value})}function b(e){p.value=p.value.filter((t,n)=>n!==e),l(`save`,{logSources:p.value})}function x(e){return e.type===`console`?`Console`:e.type===`file`?e.path||`(no path)`:e.type===`mongo`?e.database?`mongo/${e.database}/${e.collection}`:`(not configured)`:e.type===`mysql`?e.database?`mysql/${e.host}/${e.database}/${e.table}`:`(not configured)`:e.type}function S(e){return e===`console`?`pi-terminal`:e===`file`?`pi-file`:`pi-database`}return(e,t)=>(n(),M(`div`,kc,[L(`div`,Ac,[L(`div`,jc,[t[22]||=L(`i`,{class:`pi pi-inbox`},null,-1),L(`span`,null,I(i(a)(`serviceConfigLogSources.title`)),1)]),L(`small`,Mc,I(i(a)(`serviceConfigLogSources.hint`)),1)]),p.value.length>0?(n(),M(`div`,Nc,[(n(!0),M(D,null,u(p.value,(e,t)=>(n(),M(`div`,{key:t,class:`source-row`},[L(`i`,{class:s(`pi ${S(e.type)} source-row__icon`)},null,2),L(`div`,Pc,[L(`span`,Fc,I(e.type),1),L(`span`,Ic,I(x(e)),1)]),L(`div`,Lc,[E(i(o),{icon:`pi pi-pencil`,text:``,size:`small`,severity:`secondary`,onClick:e=>v(t)},null,8,[`onClick`]),E(i(o),{icon:`pi pi-trash`,text:``,size:`small`,severity:`danger`,onClick:e=>b(t)},null,8,[`onClick`])])]))),128))])):(n(),M(`div`,Rc,[t[23]||=L(`i`,{class:`pi pi-inbox config-log-sources__empty-icon`},null,-1),L(`p`,null,I(i(a)(`serviceConfigLogSources.empty`)),1),L(`small`,null,I(i(a)(`serviceConfigLogSources.emptyHint`)),1)])),L(`div`,zc,[E(i(o),{label:i(a)(`serviceConfigLogSources.addSource`),icon:`pi pi-plus`,size:`small`,onClick:_},null,8,[`label`])]),E(i(C),{visible:m.value,"onUpdate:visible":t[21]||=e=>m.value=e,header:h.value===null?i(a)(`serviceConfigLogSources.addDialog`):i(a)(`serviceConfigLogSources.editDialog`),modal:``,style:{width:`520px`}},{footer:B(()=>[E(i(o),{label:i(a)(`serviceConfigLogSources.cancel`),severity:`secondary`,outlined:``,onClick:t[20]||=e=>m.value=!1},null,8,[`label`]),E(i(o),{label:h.value===null?i(a)(`serviceConfigLogSources.add`):i(a)(`serviceConfigLogSources.save`),icon:`pi pi-check`,onClick:ee},null,8,[`label`])]),default:B(()=>[L(`div`,Bc,[L(`div`,Vc,[L(`label`,Hc,I(i(a)(`serviceConfigLogSources.type`)),1),E(i(w),{"model-value":g.value.type,options:d,"option-label":`label`,"option-value":`value`,class:`dialog-form__input`,"onUpdate:modelValue":y},null,8,[`model-value`])]),g.value.type===`file`?(n(),M(D,{key:0},[L(`div`,Uc,[L(`label`,Wc,[N(I(i(a)(`serviceConfigLogSources.path`))+` `,1),t[24]||=L(`span`,{class:`dialog-form__required`},`*`,-1)]),E(i(z),{modelValue:g.value.path,"onUpdate:modelValue":t[0]||=e=>g.value.path=e,class:`dialog-form__input`,placeholder:`/var/log/app.log`},null,8,[`modelValue`])]),L(`div`,Gc,[L(`label`,Kc,I(i(a)(`serviceConfigLogSources.encoding`)),1),E(i(z),{modelValue:g.value.encoding,"onUpdate:modelValue":t[1]||=e=>g.value.encoding=e,class:`dialog-form__input`,placeholder:`utf-8`},null,8,[`modelValue`])]),L(`div`,qc,[L(`label`,Jc,I(i(a)(`serviceConfigLogSources.startFromEnd`)),1),E(i(je),{modelValue:g.value.startFromEnd,"onUpdate:modelValue":t[2]||=e=>g.value.startFromEnd=e},null,8,[`modelValue`])])],64)):g.value.type===`mongo`?(n(),M(D,{key:1},[L(`div`,Yc,[L(`label`,Xc,[N(I(i(a)(`serviceConfigLogSources.connectionString`))+` `,1),t[25]||=L(`span`,{class:`dialog-form__required`},`*`,-1)]),E(i(z),{modelValue:g.value.connectionString,"onUpdate:modelValue":t[3]||=e=>g.value.connectionString=e,class:`dialog-form__input`,placeholder:`mongodb://user:pass@host:27017`,type:`password`,autocomplete:`off`},null,8,[`modelValue`])]),L(`div`,Zc,[L(`div`,Qc,[t[26]||=L(`label`,{class:`dialog-form__label`},[N(`Database `),L(`span`,{class:`dialog-form__required`},`*`)],-1),E(i(z),{modelValue:g.value.database,"onUpdate:modelValue":t[4]||=e=>g.value.database=e,class:`dialog-form__input`,placeholder:`mydb`},null,8,[`modelValue`])]),L(`div`,$c,[t[27]||=L(`label`,{class:`dialog-form__label`},[N(`Collection `),L(`span`,{class:`dialog-form__required`},`*`)],-1),E(i(z),{modelValue:g.value.collection,"onUpdate:modelValue":t[5]||=e=>g.value.collection=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),L(`div`,el,[L(`div`,tl,[t[28]||=L(`label`,{class:`dialog-form__label`},`Timestamp field`,-1),E(i(z),{modelValue:g.value.timestampField,"onUpdate:modelValue":t[6]||=e=>g.value.timestampField=e,class:`dialog-form__input`,placeholder:`timestamp`},null,8,[`modelValue`])]),L(`div`,nl,[t[29]||=L(`label`,{class:`dialog-form__label`},`Message field`,-1),E(i(z),{modelValue:g.value.messageField,"onUpdate:modelValue":t[7]||=e=>g.value.messageField=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),L(`div`,rl,[t[30]||=L(`label`,{class:`dialog-form__label`},[N(`Level field `),L(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),E(i(z),{modelValue:g.value.levelField,"onUpdate:modelValue":t[8]||=e=>g.value.levelField=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])])],64)):g.value.type===`mysql`?(n(),M(D,{key:2},[L(`div`,il,[L(`div`,al,[t[31]||=L(`label`,{class:`dialog-form__label`},[N(`Host `),L(`span`,{class:`dialog-form__required`},`*`)],-1),E(i(z),{modelValue:g.value.host,"onUpdate:modelValue":t[9]||=e=>g.value.host=e,class:`dialog-form__input`,placeholder:`localhost`},null,8,[`modelValue`])]),L(`div`,ol,[t[32]||=L(`label`,{class:`dialog-form__label`},`Port`,-1),E(i(Oe),{modelValue:g.value.port,"onUpdate:modelValue":t[10]||=e=>g.value.port=e,min:1,max:65535,class:`dialog-form__input`},null,8,[`modelValue`])])]),L(`div`,sl,[L(`div`,cl,[t[33]||=L(`label`,{class:`dialog-form__label`},[N(`User `),L(`span`,{class:`dialog-form__required`},`*`)],-1),E(i(z),{modelValue:g.value.user,"onUpdate:modelValue":t[11]||=e=>g.value.user=e,class:`dialog-form__input`,placeholder:`root`},null,8,[`modelValue`])]),L(`div`,ll,[t[34]||=L(`label`,{class:`dialog-form__label`},`Password`,-1),E(i(z),{modelValue:g.value.password,"onUpdate:modelValue":t[12]||=e=>g.value.password=e,class:`dialog-form__input`,type:`password`,autocomplete:`new-password`},null,8,[`modelValue`])])]),L(`div`,ul,[L(`div`,dl,[t[35]||=L(`label`,{class:`dialog-form__label`},[N(`Database `),L(`span`,{class:`dialog-form__required`},`*`)],-1),E(i(z),{modelValue:g.value.database,"onUpdate:modelValue":t[13]||=e=>g.value.database=e,class:`dialog-form__input`,placeholder:`app_db`},null,8,[`modelValue`])]),L(`div`,fl,[t[36]||=L(`label`,{class:`dialog-form__label`},[N(`Table `),L(`span`,{class:`dialog-form__required`},`*`)],-1),E(i(z),{modelValue:g.value.table,"onUpdate:modelValue":t[14]||=e=>g.value.table=e,class:`dialog-form__input`,placeholder:`logs`},null,8,[`modelValue`])])]),L(`div`,pl,[L(`div`,ml,[t[37]||=L(`label`,{class:`dialog-form__label`},`Timestamp column`,-1),E(i(z),{modelValue:g.value.timestampColumn,"onUpdate:modelValue":t[15]||=e=>g.value.timestampColumn=e,class:`dialog-form__input`,placeholder:`created_at`},null,8,[`modelValue`])]),L(`div`,hl,[t[38]||=L(`label`,{class:`dialog-form__label`},`Message column`,-1),E(i(z),{modelValue:g.value.messageColumn,"onUpdate:modelValue":t[16]||=e=>g.value.messageColumn=e,class:`dialog-form__input`,placeholder:`message`},null,8,[`modelValue`])])]),L(`div`,gl,[L(`div`,_l,[t[39]||=L(`label`,{class:`dialog-form__label`},[N(`Level column `),L(`span`,{class:`dialog-form__hint`},`(optional)`)],-1),E(i(z),{modelValue:g.value.levelColumn,"onUpdate:modelValue":t[17]||=e=>g.value.levelColumn=e,class:`dialog-form__input`,placeholder:`level`},null,8,[`modelValue`])]),L(`div`,vl,[t[40]||=L(`label`,{class:`dialog-form__label`},`Poll interval (ms)`,-1),E(i(Oe),{modelValue:g.value.pollIntervalMs,"onUpdate:modelValue":t[18]||=e=>g.value.pollIntervalMs=e,min:500,max:6e4,class:`dialog-form__input`},null,8,[`modelValue`])])]),L(`div`,yl,[t[41]||=L(`label`,{class:`dialog-form__label`},[N(`Custom query `),L(`span`,{class:`dialog-form__hint`},[N(`(optional, must include `),L(`code`,null,`WHERE … > ?`),N(`)`)])],-1),E(i(z),{modelValue:g.value.query,"onUpdate:modelValue":t[19]||=e=>g.value.query=e,class:`dialog-form__input`,placeholder:`SELECT * FROM logs WHERE created_at > ? ORDER BY id ASC`},null,8,[`modelValue`])])],64)):g.value.type===`console`?(n(),M(`small`,bl,`The console source captures stdout/stderr and is always active. Adding it here has no effect unless you want to track it explicitly.`)):j(``,!0)])]),_:1},8,[`visible`,`header`])]))}}),[[`__scopeId`,`data-v-f15914b0`]]),Sl={class:`config-traefik`},Cl={class:`traefik-entry__fields`},wl=a(K({__name:`ServiceConfigTraefik`,props:{service:{}},emits:[`save`],setup(t,{emit:r}){let a=t,s=r,c=P([...a.service.localUrls??[]]),l=P(null);f(async()=>{a.service.agentId&&(l.value=(await F.settings.getAgentTraefikConfig.query({agentId:a.service.agentId})).enabled)});let d=null;e(()=>a.service,e=>{d||(c.value=[...e.localUrls??[]])});function p(){c.value=[...c.value,{url:``,port:3e3}]}function h(e){c.value=c.value.filter((t,n)=>n!==e),_()}function g(e,t,n){c.value=c.value.map((r,i)=>i===e?{...r,[t]:n}:r)}function _(){d&&clearTimeout(d),d=setTimeout(()=>{s(`save`,{localUrls:c.value.filter(e=>e.url.trim())}),d=null},150)}return(e,t)=>(n(),M(`div`,Sl,[l.value===!1?(n(),G(i(Be),{key:0,severity:`warn`,closable:!1},{default:B(()=>[t[1]||=N(` Traefik n'est pas activé. Configurez-le dans `,-1),E(i(m),{to:`/settings`},{default:B(()=>[...t[0]||=[N(`Paramètres → Traefik`,-1)]]),_:1}),t[2]||=N(` pour que ces URLs soient actives. `,-1)]),_:1})):j(``,!0),(n(!0),M(D,null,u(c.value,(e,t)=>(n(),M(`div`,{key:t,class:`traefik-entry`},[L(`div`,Cl,[E(i(z),{"model-value":e.url,class:`traefik-entry__url`,placeholder:`mon-app.local.mondomaine.com`,"onUpdate:modelValue":e=>g(t,`url`,e),onBlur:_,onKeydown:R(V(_,[`prevent`]),[`enter`])},null,8,[`model-value`,`onUpdate:modelValue`,`onKeydown`]),E(i(Oe),{"model-value":e.port,class:`traefik-entry__port`,min:1,max:65535,"use-grouping":!1,placeholder:`3000`,"onUpdate:modelValue":e=>{g(t,`port`,e??3e3),_()}},null,8,[`model-value`,`onUpdate:modelValue`]),E(i(o),{icon:`pi pi-trash`,severity:`danger`,text:``,size:`small`,onClick:e=>h(t)},null,8,[`onClick`])])]))),128)),E(i(o),{icon:`pi pi-plus`,label:`Ajouter une URL`,size:`small`,outlined:``,onClick:p})]))}}),[[`__scopeId`,`data-v-f22ba351`]]),Tl={class:`config-view`,"data-testid":`config-view`},El={class:`config-view__header`},Dl={class:`config-view__title`},Ol={class:`config-view__actions`},kl=a(K({__name:`ServiceConfigView`,props:{service:{},projectId:{}},emits:[`remove-service`],setup(e,{emit:t}){let a=e,s=t,{t:c}=te(),l=he(),u=Se(),{isDebug:d}=Jt(),f=xe(),p=r(),m=[`general`,`commands`,`shortcuts`,`env`,`health`,`log-parsers`,`log-sources`,`traefik`],h=A(()=>{let e=f.query.configTab;return m.includes(e)?e:`general`});function g(e){p.replace({query:{...f.query,configTab:e}})}let _=A(()=>u.projects.find(e=>e.id===a.projectId)?.activeEnvironmentId);async function v(e,t){await t()?d.value&&console.debug(`[autosave] ${e} saved`):console.error(`[autosave] ${e} failed:`,l.error??`Save failed`)}async function y(e){await v(`General`,()=>l.update(a.service.id,e))}async function ee(e){await v(`Commands`,()=>l.update(a.service.id,e))}async function b(e){await v(`Health check`,()=>l.update(a.service.id,{healthCheck:e??null}))}async function x(e){await v(`Shortcuts`,()=>l.update(a.service.id,{shortcuts:e}))}async function S(e){await v(`Docker`,()=>l.update(a.service.id,{dockerConfig:e}))}async function C(e){await v(`Log parsers`,()=>l.update(a.service.id,e))}async function w(e){await v(`Log sources`,()=>l.update(a.service.id,e))}async function T(e){await v(`Traefik`,()=>l.update(a.service.id,e))}function ne(){s(`remove-service`,a.service.id)}return(t,r)=>(n(),M(`div`,Tl,[L(`div`,El,[L(`h2`,Dl,I(i(c)(`serviceConfigView.title`)),1),L(`div`,Ol,[E(i(o),{label:i(c)(`serviceConfigView.remove`),icon:`pi pi-trash`,severity:`danger`,size:`small`,outlined:``,onClick:ne},null,8,[`label`])])]),E(i(Me),{value:h.value,class:`config-view__tabs`,"onUpdate:value":g},{default:B(()=>[E(i(Ne),null,{default:B(()=>[E(i(Fe),{value:`general`,"data-testid":`tab-config`},{default:B(()=>[r[0]||=L(`i`,{class:`pi pi-cog tab-icon`},null,-1),L(`span`,null,I(i(c)(`serviceConfigView.tabGeneral`)),1)]),_:1}),E(i(Fe),{value:`commands`,"data-testid":`tab-commands`},{default:B(()=>[r[1]||=L(`i`,{class:`pi pi-code tab-icon`},null,-1),L(`span`,null,I(i(c)(`serviceConfigView.tabCommands`)),1)]),_:1}),E(i(Fe),{value:`shortcuts`,"data-testid":`tab-shortcuts`},{default:B(()=>[r[2]||=L(`i`,{class:`pi pi-bolt tab-icon`},null,-1),L(`span`,null,I(i(c)(`serviceConfigView.tabShortcuts`)),1)]),_:1}),E(i(Fe),{value:`env`,"data-testid":`tab-env`},{default:B(()=>[r[3]||=L(`i`,{class:`pi pi-database tab-icon`},null,-1),L(`span`,null,I(i(c)(`serviceConfigView.tabEnvironment`)),1)]),_:1}),E(i(Fe),{value:`health`},{default:B(()=>[r[4]||=L(`i`,{class:`pi pi-heart tab-icon`},null,-1),L(`span`,null,I(i(c)(`serviceConfigView.tabHealthCheck`)),1)]),_:1}),E(i(Fe),{value:`log-parsers`,"data-testid":`tab-log-parsers`},{default:B(()=>[r[5]||=L(`i`,{class:`pi pi-list tab-icon`},null,-1),L(`span`,null,I(i(c)(`serviceConfigView.tabLogParsers`)),1)]),_:1}),E(i(Fe),{value:`log-sources`},{default:B(()=>[r[6]||=L(`i`,{class:`pi pi-inbox tab-icon`},null,-1),L(`span`,null,I(i(c)(`serviceConfigView.tabLogSources`)),1)]),_:1}),E(i(Fe),{value:`traefik`},{default:B(()=>[...r[7]||=[L(`i`,{class:`pi pi-server tab-icon`},null,-1),L(`span`,null,`Traefik`,-1)]]),_:1})]),_:1}),E(i(Pe),null,{default:B(()=>[E(i(Ie),{value:`general`},{default:B(()=>[E(kn,{service:e.service,onSave:y},null,8,[`service`])]),_:1}),E(i(Ie),{value:`commands`},{default:B(()=>[E(Xr,{service:e.service,onSave:ee,onDockerSave:S},null,8,[`service`])]),_:1}),E(i(Ie),{value:`shortcuts`,"data-testid":`tabpanel-shortcuts`},{default:B(()=>[E(_a,{service:e.service,onSave:x},null,8,[`service`])]),_:1}),E(i(Ie),{value:`env`},{default:B(()=>[E(Ii,{service:e.service,"project-id":e.projectId,"active-environment-id":_.value},null,8,[`service`,`project-id`,`active-environment-id`])]),_:1}),E(i(Ie),{value:`health`},{default:B(()=>[E(aa,{service:e.service,onSave:b},null,8,[`service`])]),_:1}),E(i(Ie),{value:`log-parsers`,"data-testid":`tabpanel-log-parsers`},{default:B(()=>[E(Oc,{service:e.service,onSave:C},null,8,[`service`])]),_:1}),E(i(Ie),{value:`log-sources`},{default:B(()=>[E(xl,{service:e.service,onSave:w},null,8,[`service`])]),_:1}),E(i(Ie),{value:`traefik`},{default:B(()=>[E(wl,{service:e.service,onSave:T},null,8,[`service`])]),_:1})]),_:1})]),_:1},8,[`value`])]))}}),[[`__scopeId`,`data-v-51a781dd`]]),Al=a(K({__name:`MonacoDiffEditor`,props:{original:{},modified:{},language:{default:`plaintext`},height:{default:`100%`},theme:{default:`monokai`}},setup(e){window.MonacoEnvironment||(window.MonacoEnvironment={getWorker(){return new _e}}),ce.defineTheme(`monokai`,{base:`vs-dark`,inherit:!0,rules:[{token:`comment`,foreground:`75715E`,fontStyle:`italic`},{token:`string`,foreground:`E6DB74`},{token:`keyword`,foreground:`F92672`},{token:`number`,foreground:`AE81FF`},{token:`regexp`,foreground:`E6DB74`},{token:`type`,foreground:`66D9EF`,fontStyle:`italic`},{token:`type.identifier`,foreground:`A6E22E`},{token:`delimiter`,foreground:`F8F8F2`},{token:`delimiter.bracket`,foreground:`F8F8F2`},{token:`tag`,foreground:`F92672`},{token:`attribute.name`,foreground:`A6E22E`},{token:`attribute.value`,foreground:`E6DB74`},{token:`variable`,foreground:`F8F8F2`},{token:`variable.predefined`,foreground:`66D9EF`},{token:`constant`,foreground:`AE81FF`},{token:`function`,foreground:`A6E22E`},{token:`operator`,foreground:`F92672`},{token:`identifier`,foreground:`F8F8F2`},{token:`meta.tag`,foreground:`F92672`}],colors:{"editor.background":`#272822`,"editor.foreground":`#F8F8F2`,"editor.lineHighlightBackground":`#3E3D32`,"editor.selectionBackground":`#49483E`,"editorCursor.foreground":`#F8F8F0`,"editorWhitespace.foreground":`#464741`,"editorIndentGuide.background":`#464741`,"editorLineNumber.foreground":`#90908A`,"editorLineNumber.activeForeground":`#F8F8F2`,"diffEditor.insertedTextBackground":`#A6E22E26`,"diffEditor.removedTextBackground":`#F9267226`,"diffEditor.insertedLineBackground":`#A6E22E15`,"diffEditor.removedLineBackground":`#F9267215`}});let t=e,r=P(),i=null,a=null,o=null;return f(()=>{r.value&&(a=ce.createModel(t.original,t.language),o=ce.createModel(t.modified,t.language),i=ce.createDiffEditor(r.value,{theme:t.theme,readOnly:!0,minimap:{enabled:!1},scrollBeyondLastLine:!1,automaticLayout:!0,fontSize:13,fontFamily:`'Monaco', 'Menlo', 'Ubuntu Mono', Courier, monospace`,renderSideBySide:!0,overviewRulerLanes:0,scrollbar:{verticalScrollbarSize:8,horizontalScrollbarSize:8},originalEditable:!1,ignoreTrimWhitespace:!1}),i.setModel({original:a,modified:o}))}),h(()=>{a?.dispose(),o?.dispose(),i?.dispose(),a=null,o=null,i=null}),(t,i)=>(n(),M(`div`,{ref_key:`editorContainer`,ref:r,style:_({height:e.height,width:`100%`}),class:`monaco-diff-container`},null,4))}}),[[`__scopeId`,`data-v-3051d904`]]),jl={class:`git-panel`},Ml={key:0,class:`git-panel__unavailable`},Nl={class:`git-panel__unavailable-title`},Pl={class:`git-panel__unavailable-detail`},Fl={key:1,class:`git-panel__header`},Il={class:`git-panel__branch`},Ll={class:`branch-name`},Rl={key:2,class:`upstream-label`},zl={class:`git-panel__actions`},Bl={class:`git-panel__tabs`},Vl={key:0,class:`tab-badge`},Hl={class:`git-panel__file-list`},Ul={class:`git-commit-area`},Wl={class:`commit-actions`},Gl={class:`generate-popover`},Kl={key:0,class:`git-empty`},ql={class:`git-section-header`},Jl=[`onClick`],Yl={class:`file-name`},Xl={class:`git-section-header`},Zl=[`onClick`],Ql={class:`file-name`},$l={class:`file-actions`},eu={class:`git-section-header`},tu=[`onClick`],nu={class:`file-name`},ru={class:`git-panel__diff-pane`},iu={class:`git-section-header diff-header`},au={class:`diff-header-actions`},ou={key:1,class:`diff-placeholder`},su={key:1,class:`git-panel__content`},cu={key:0,class:`git-empty`},lu={class:`commit-hash`},uu={class:`commit-info`},du={class:`commit-subject`},fu={class:`commit-meta`},pu={key:2,class:`git-panel__content`},mu={class:`git-section-header`},hu={class:`create-branch`},gu={class:`git-section-header`},_u={class:`branch-label`},vu={class:`git-section-header`},yu={class:`branch-label`},bu=a(K({__name:`ServiceConfigGit`,props:{serviceId:{}},setup(e){let t=e,a=c(),l=r(),{t:d}=te(),p=we(),m=P(!1),h=P(),_=A(()=>p.getEffectiveEditor(t.serviceId)),{openWithDiffContext:y}=re();function ee(){!oe.value||!le.value||y(`\`\`\`diff\n// ${le.value}\n${oe.value}\n\`\`\``)}async function x(){let e=_.value;if(!(!e||!le.value))try{await F.editor.openFile.mutate({editorKey:e.key,serviceId:t.serviceId,relativePath:le.value})}catch(e){a.add({severity:`error`,summary:d(`git.errorTitle`),detail:e instanceof Error?e.message:String(e),life:4e3})}}let S=P(!1),C=P(!1),T=P(null),ne=P([]),O=P({current:``,branches:[]}),k=P([]),ie=P(``),ae=P(``),oe=P(``),se=P(``),ce=P(``),le=P(``),ue=P(!1),pe=P(`status`),me=P(`origin`),R=P(``);function he(e){let t=e.toLowerCase();return t.includes(`fetch failed`)||t.includes(`http 404`)||t.includes(`agent`)&&(t.includes(`not found`)||t.includes(`not connected`))}let ge=A(()=>k.value.map(e=>({label:e.name,value:e.name}))),_e=A(()=>!!T.value?.upstream),ve=A(()=>O.value.branches.filter(e=>!e.remote));async function H(e,t){R.value=e;try{await t()}catch(e){let t=e instanceof Error?e.message:String(e);a.add({severity:`error`,summary:d(`git.errorTitle`),detail:t,life:6e3})}finally{R.value=``}}async function W(){S.value=!0;try{let[e,n,r]=await Promise.all([F.git.status.query({serviceId:t.serviceId}),F.git.branches.query({serviceId:t.serviceId}),F.git.remotes.query({serviceId:t.serviceId})]);C.value=!1,T.value=e,O.value=n,k.value=r,k.value.length&&!k.value.find(e=>e.name===me.value)&&(me.value=k.value[0]?.name??`origin`)}catch(e){let t=e instanceof Error?e.message:String(e);T.value=null,he(t)?C.value=!0:(C.value=!1,a.add({severity:`error`,summary:d(`git.errorTitle`),detail:t,life:6e3}))}finally{S.value=!1}}async function ye(){try{let e=await F.git.status.query({serviceId:t.serviceId});C.value=!1,T.value=e}catch(e){he(e instanceof Error?e.message:String(e))&&(C.value=!0)}}async function K(){try{ne.value=await F.git.log.query({serviceId:t.serviceId,limit:50})}catch(e){let t=e instanceof Error?e.message:String(e);he(t)||a.add({severity:`error`,summary:d(`git.errorTitle`),detail:t,life:6e3})}}function be(e){return{ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,json:`json`,md:`markdown`,css:`css`,scss:`scss`,less:`less`,html:`html`,vue:`html`,xml:`xml`,yaml:`yaml`,yml:`yaml`,py:`python`,rs:`rust`,go:`go`,java:`java`,sh:`shell`,sql:`sql`,toml:`ini`,php:`php`,rb:`ruby`,c:`c`,cpp:`cpp`,h:`c`,hpp:`cpp`,swift:`swift`,kt:`kotlin`,lua:`lua`,r:`r`,pl:`perl`,bat:`bat`,ps1:`powershell`}[e.split(`.`).pop()?.toLowerCase()??``]||`plaintext`}let xe=A(()=>le.value?be(le.value):`plaintext`);async function Se(e,n=!1,r=!1){let i=await F.git.diff.query({serviceId:t.serviceId,path:e,staged:n,untracked:r});oe.value=i.diff,se.value=i.original,ce.value=i.modified,le.value=e??``,ue.value=n}async function Te(e){await H(`stage:`+e,async()=>{await F.git.stage.mutate({serviceId:t.serviceId,paths:[e]}),await ye()})}async function Ee(){await H(`stageAll`,async()=>{await F.git.stageAll.mutate({serviceId:t.serviceId}),await ye()})}async function De(e){await H(`unstage:`+e,async()=>{await F.git.unstage.mutate({serviceId:t.serviceId,paths:[e]}),await ye()})}async function Oe(e){await H(`discard:`+e,async()=>{await F.git.discard.mutate({serviceId:t.serviceId,paths:[e]}),await ye()})}async function ke(){await H(`generateCommit`,async()=>{ie.value=(await F.git.generateCommitMessage.mutate({serviceId:t.serviceId})).message})}async function Ae(){if(!ie.value.trim()){a.add({severity:`warn`,summary:d(`git.errorTitle`),detail:d(`git.commitRequired`),life:3e3});return}await H(`commit`,async()=>{let e=await F.git.commit.mutate({serviceId:t.serviceId,message:ie.value});a.add({severity:`success`,summary:d(`git.committed`),detail:e.output,life:4e3}),ie.value=``,await ye()})}async function je(){await H(`push`,async()=>{let e=await F.git.push.mutate({serviceId:t.serviceId,remote:me.value,setUpstream:!_e.value});a.add({severity:`success`,summary:d(`git.pushed`),detail:e.output||d(`git.done`),life:4e3}),await W()})}async function Me(){await H(`pull`,async()=>{let e=await F.git.pull.mutate({serviceId:t.serviceId,remote:me.value});a.add({severity:`success`,summary:d(`git.pulled`),detail:e.output||d(`git.done`),life:4e3}),await W()})}async function Ne(){await H(`fetch`,async()=>{await F.git.fetch.mutate({serviceId:t.serviceId,remote:me.value}),a.add({severity:`success`,summary:d(`git.fetched`),detail:d(`git.fetchedDetail`),life:3e3}),await W()})}async function Pe(e){await H(`checkout`,async()=>{await F.git.checkout.mutate({serviceId:t.serviceId,branch:e}),a.add({severity:`success`,summary:d(`git.checkedOut`),detail:e,life:3e3}),await W()})}async function Fe(e){await H(`merge-${e}`,async()=>{let n=await F.git.merge.mutate({serviceId:t.serviceId,branch:e});a.add({severity:`success`,summary:d(`git.merged`),detail:n.output||d(`git.done`),life:4e3}),await W()})}async function Ie(e){await H(`rebase-${e}`,async()=>{let n=await F.git.rebase.mutate({serviceId:t.serviceId,branch:e});a.add({severity:`success`,summary:d(`git.rebased`),detail:n.output||d(`git.done`),life:4e3}),await W()})}async function Le(){ae.value.trim()&&await H(`create-branch`,async()=>{await F.git.checkout.mutate({serviceId:t.serviceId,branch:ae.value,create:!0}),a.add({severity:`success`,summary:d(`git.branchCreated`),detail:ae.value,life:3e3}),ae.value=``,await W()})}let Re=null,ze=null;async function Be(){try{let e=await F.settings.listAIProviders.query();m.value=e.some(e=>e.active),U()&&console.log(`[git] AI providers:`,e.map(e=>({name:e.name,active:e.active})),`→ hasActive:`,m.value)}catch{m.value=!1}}return f(()=>{W(),Be(),Re=F.git.onStatusChange.subscribe({serviceId:t.serviceId},{onData(e){T.value=e,C.value=!1},onError(e){let t=e?.message??``;t.includes(`PRECONDITION_FAILED`)||t.includes(`Unresolved variables`)}}),ze=setInterval(W,1e4)}),b(()=>{Re?.unsubscribe(),Re=null,ze!==null&&(clearInterval(ze),ze=null)}),(e,t)=>(n(),M(`div`,jl,[C.value?(n(),M(`div`,Ml,[t[12]||=L(`i`,{class:`pi pi-server git-panel__unavailable-icon`},null,-1),L(`span`,Nl,I(i(d)(`git.agentUnavailable`)),1),L(`span`,Pl,I(i(d)(`git.agentUnavailableDetail`)),1),E(i(o),{label:i(d)(`git.retry`),icon:`pi pi-refresh`,size:`small`,onClick:W},null,8,[`label`])])):j(``,!0),C.value?j(``,!0):(n(),M(`div`,Fl,[L(`div`,Il,[t[13]||=L(`i`,{class:`pi pi-github`},null,-1),L(`span`,Ll,I(T.value?.branch??`…`),1),T.value&&T.value.ahead>0?(n(),G(i(Ce),{key:0,value:`↑${T.value.ahead}`,severity:`info`,class:`ahead-tag`},null,8,[`value`])):j(``,!0),T.value&&T.value.behind>0?(n(),G(i(Ce),{key:1,value:`↓${T.value.behind}`,severity:`warn`,class:`behind-tag`},null,8,[`value`])):j(``,!0),T.value?.upstream?(n(),M(`span`,Rl,`→ `+I(T.value.upstream),1)):j(``,!0)]),L(`div`,zl,[ge.value.length?(n(),G(i(w),{key:0,modelValue:me.value,"onUpdate:modelValue":t[0]||=e=>me.value=e,options:ge.value,"option-label":`label`,"option-value":`value`,size:`small`,class:`remote-select`},null,8,[`modelValue`,`options`])):j(``,!0),E(i(o),{icon:`pi pi-download`,label:i(d)(`git.pull`),size:`small`,outlined:``,loading:R.value===`pull`,onClick:Me},null,8,[`label`,`loading`]),E(i(o),{icon:`pi pi-cloud-upload`,label:i(d)(`git.push`),size:`small`,outlined:``,loading:R.value===`push`,onClick:je},null,8,[`label`,`loading`]),E(i(o),{icon:`pi pi-sync`,label:i(d)(`git.fetch`),size:`small`,outlined:``,loading:R.value===`fetch`,onClick:Ne},null,8,[`label`,`loading`]),E(i(o),{icon:`pi pi-refresh`,size:`small`,text:``,loading:S.value,onClick:W},null,8,[`loading`])])])),C.value?j(``,!0):(n(),M(D,{key:2},[L(`div`,Bl,[L(`button`,{class:s([`git-tab`,{active:pe.value===`status`}]),onClick:t[1]||=e=>pe.value=`status`},[t[14]||=L(`i`,{class:`pi pi-file-edit`},null,-1),N(` `+I(i(d)(`git.tabChanges`))+` `,1),T.value?(n(),M(`span`,Vl,I(T.value.staged.length+T.value.unstaged.length+T.value.untracked.length),1)):j(``,!0)],2),L(`button`,{class:s([`git-tab`,{active:pe.value===`log`}]),onClick:t[2]||=e=>{pe.value=`log`,K()}},[t[15]||=L(`i`,{class:`pi pi-history`},null,-1),N(` `+I(i(d)(`git.tabHistory`)),1)],2),L(`button`,{class:s([`git-tab`,{active:pe.value===`branches`}]),onClick:t[3]||=e=>pe.value=`branches`},[t[16]||=L(`i`,{class:`pi pi-github`},null,-1),N(` `+I(i(d)(`git.tabBranches`)),1)],2)]),pe.value===`status`?(n(),G(i(fe),{key:0,class:`git-panel__status-split`,"gutter-size":6},{default:B(()=>[E(i(g),{size:30,"min-size":15,class:`git-panel__file-list-panel`},{default:B(()=>[L(`div`,Hl,[L(`div`,Ul,[E(i(de),{modelValue:ie.value,"onUpdate:modelValue":t[4]||=e=>ie.value=e,placeholder:i(d)(`git.commitPlaceholder`),rows:`3`,class:`commit-message`,"auto-resize":``},null,8,[`modelValue`,`placeholder`]),L(`div`,Wl,[E(i(o),{icon:`pi pi-sparkles`,label:i(d)(`git.generateMessage`),size:`small`,outlined:``,disabled:!T.value?.staged.length||!m.value,loading:R.value===`generateCommit`,onClick:t[5]||=e=>m.value?ke():void 0,onMouseenter:t[6]||=e=>m.value?void 0:h.value?.show(e),onMouseleave:t[7]||=e=>m.value?void 0:h.value?.hide()},null,8,[`label`,`disabled`,`loading`]),E(i(v),{ref_key:`generatePopover`,ref:h},{default:B(()=>[L(`div`,Gl,[L(`p`,null,I(i(d)(`git.noProviderMessage`)),1),E(i(o),{label:i(d)(`git.goToSettings`),icon:`pi pi-cog`,size:`small`,text:``,onClick:t[8]||=e=>{i(l).push({name:`settings`,query:{section:`ai`}}),h.value?.hide()}},null,8,[`label`])])]),_:1},512),E(i(o),{label:i(d)(`git.commit`),icon:`pi pi-check`,size:`small`,disabled:!ie.value.trim()||!T.value?.staged.length,loading:R.value===`commit`,onClick:Ae},null,8,[`label`,`disabled`,`loading`])])]),T.value&&T.value.staged.length===0&&T.value.unstaged.length===0&&T.value.untracked.length===0?(n(),M(`div`,Kl,[t[17]||=L(`i`,{class:`pi pi-check-circle`},null,-1),L(`span`,null,I(i(d)(`git.workingTreeClean`)),1)])):j(``,!0),T.value&&T.value.staged.length>0?(n(),M(D,{key:1},[L(`div`,ql,[L(`span`,null,I(i(d)(`git.staged`,{count:T.value.staged.length})),1),E(i(o),{size:`small`,text:``,label:i(d)(`git.unstageAll`),onClick:t[9]||=e=>De(`--all`)},null,8,[`label`])]),(n(!0),M(D,null,u(T.value.staged,e=>(n(),M(`div`,{key:`staged-`+e,class:s([`git-file staged`,{selected:le.value===e&&ue.value}]),onClick:t=>Se(e,!0)},[t[18]||=L(`i`,{class:`pi pi-plus file-icon`},null,-1),L(`span`,Yl,I(e),1),E(i(o),{icon:`pi pi-minus`,size:`small`,text:``,severity:`secondary`,class:`file-action`,title:i(d)(`git.unstage`),onClick:V(t=>De(e),[`stop`])},null,8,[`title`,`onClick`])],10,Jl))),128))],64)):j(``,!0),T.value&&T.value.unstaged.length>0?(n(),M(D,{key:2},[L(`div`,Xl,[L(`span`,null,I(i(d)(`git.unstaged`,{count:T.value.unstaged.length})),1),E(i(o),{size:`small`,text:``,label:i(d)(`git.stageAll`),onClick:Ee},null,8,[`label`])]),(n(!0),M(D,null,u(T.value.unstaged,e=>(n(),M(`div`,{key:`unstaged-`+e,class:s([`git-file unstaged`,{selected:le.value===e&&!ue.value}]),onClick:t=>Se(e,!1)},[t[19]||=L(`i`,{class:`pi pi-pencil file-icon`},null,-1),L(`span`,Ql,I(e),1),L(`div`,$l,[E(i(o),{icon:`pi pi-plus`,size:`small`,text:``,title:i(d)(`git.stage`),class:`file-action`,onClick:V(t=>Te(e),[`stop`])},null,8,[`title`,`onClick`]),E(i(o),{icon:`pi pi-trash`,size:`small`,text:``,severity:`danger`,title:i(d)(`git.discard`),class:`file-action`,onClick:V(t=>Oe(e),[`stop`])},null,8,[`title`,`onClick`])])],10,Zl))),128))],64)):j(``,!0),T.value&&T.value.untracked.length>0?(n(),M(D,{key:3},[L(`div`,eu,[L(`span`,null,I(i(d)(`git.untracked`,{count:T.value.untracked.length})),1)]),(n(!0),M(D,null,u(T.value.untracked,e=>(n(),M(`div`,{key:`untracked-`+e,class:`git-file untracked`,onClick:t=>Se(e,!1,!0)},[t[20]||=L(`i`,{class:`pi pi-question-circle file-icon`},null,-1),L(`span`,nu,I(e),1),E(i(o),{icon:`pi pi-plus`,size:`small`,text:``,title:i(d)(`git.stage`),class:`file-action`,onClick:V(t=>Te(e),[`stop`])},null,8,[`title`,`onClick`])],8,tu))),128))],64)):j(``,!0)])]),_:1}),E(i(g),{size:70,"min-size":30,class:`git-panel__diff-pane-panel`},{default:B(()=>[L(`div`,ru,[le.value?(n(),M(D,{key:0},[L(`div`,iu,[L(`span`,null,I(i(d)(`git.diff`,{path:le.value||`all`})),1),L(`div`,au,[E(i(o),{icon:`pi pi-comment`,size:`small`,text:``,title:i(d)(`git.askAiAboutDiff`),onClick:ee},null,8,[`title`]),_.value?(n(),G(i(o),{key:0,icon:`pi pi-external-link`,size:`small`,text:``,title:i(d)(`git.openInEditor`,{editor:_.value.name}),onClick:x},null,8,[`title`])):j(``,!0),E(i(o),{icon:`pi pi-times`,size:`small`,text:``,onClick:t[10]||=e=>{le.value=``,oe.value=``,se.value=``,ce.value=``}})])]),(n(),G(Al,{key:le.value+`:`+ue.value,original:se.value,modified:ce.value,language:xe.value,height:`100%`},null,8,[`original`,`modified`,`language`]))],64)):(n(),M(`div`,ou,[t[21]||=L(`i`,{class:`pi pi-code`},null,-1),L(`span`,null,I(i(d)(`git.selectFileForDiff`)),1)]))])]),_:1})]),_:1})):pe.value===`log`?(n(),M(`div`,su,[ne.value.length===0?(n(),M(`div`,cu,[t[22]||=L(`i`,{class:`pi pi-history`},null,-1),L(`span`,null,I(i(d)(`git.noCommits`)),1)])):j(``,!0),(n(!0),M(D,null,u(ne.value,e=>(n(),M(`div`,{key:e.hash,class:`git-commit-entry`},[L(`div`,lu,I(e.shortHash),1),L(`div`,uu,[L(`div`,du,I(e.subject),1),L(`div`,fu,I(e.author)+` · `+I(new Date(e.date).toLocaleString()),1)])]))),128))])):pe.value===`branches`?(n(),M(`div`,pu,[L(`div`,mu,I(i(d)(`git.newBranch`)),1),L(`div`,hu,[E(i(z),{modelValue:ae.value,"onUpdate:modelValue":t[11]||=e=>ae.value=e,placeholder:i(d)(`git.branchNamePlaceholder`),size:`small`,class:`branch-input`},null,8,[`modelValue`,`placeholder`]),E(i(o),{label:i(d)(`git.createAndCheckout`),icon:`pi pi-plus`,size:`small`,disabled:!ae.value.trim(),loading:R.value===`create-branch`,onClick:Le},null,8,[`label`,`disabled`,`loading`])]),L(`div`,gu,I(i(d)(`git.localBranches`,{count:ve.value.length})),1),(n(!0),M(D,null,u(ve.value,e=>(n(),M(`div`,{key:e.name,class:s([`git-branch-entry`,{current:e.current}])},[t[23]||=L(`i`,{class:`pi pi-github branch-icon`},null,-1),L(`span`,_u,I(e.name),1),e.current?(n(),G(i(Ce),{key:0,value:i(d)(`git.current`),severity:`success`,class:`current-tag`},null,8,[`value`])):(n(),G(i(o),{key:1,label:i(d)(`git.checkout`),size:`small`,text:``,loading:R.value===`checkout`,class:`checkout-btn`,onClick:t=>Pe(e.name)},null,8,[`label`,`loading`,`onClick`])),e.current?j(``,!0):(n(),G(i(o),{key:2,label:i(d)(`git.merge`),size:`small`,text:``,severity:`secondary`,loading:R.value===`merge-${e.name}`,class:`checkout-btn`,onClick:t=>Fe(e.name)},null,8,[`label`,`loading`,`onClick`])),e.current?j(``,!0):(n(),G(i(o),{key:3,label:i(d)(`git.rebase`),size:`small`,text:``,severity:`secondary`,loading:R.value===`rebase-${e.name}`,class:`checkout-btn`,onClick:t=>Ie(e.name)},null,8,[`label`,`loading`,`onClick`]))],2))),128)),O.value.branches.filter(e=>e.remote).length?(n(),M(D,{key:0},[L(`div`,vu,I(i(d)(`git.remoteBranches`)),1),(n(!0),M(D,null,u(O.value.branches.filter(e=>e.remote),e=>(n(),M(`div`,{key:e.name,class:`git-branch-entry remote`},[t[24]||=L(`i`,{class:`pi pi-globe branch-icon`},null,-1),L(`span`,yu,I(e.name.replace(/^remotes\//,``)),1)]))),128))],64)):j(``,!0)])):j(``,!0)],64))]))}}),[[`__scopeId`,`data-v-c703ddb4`]]),xu={key:0,class:`service-detail`},Su={key:1,class:`service-detail__not-found`},Cu=a(K({__name:`ServiceDetailPage`,setup(t){let a=xe(),o=r(),s=c(),l=T(),{t:u}=te(),d=he(),f=ne(),p=Se(),{setServiceContext:m}=re(),h=A(()=>a.params.id);e(h,e=>m(e),{immediate:!0}),b(()=>m(null));let g=A(()=>{let e=a.params.tab;return e===`terminal`||e===`metrics`||e===`config`||e===`git`?e:`terminal`}),_=A(()=>d.getById(h.value)),v=A(()=>f.getByService(h.value)),y=A(()=>p.currentProject?.id??``);function ee(e){let t=d.getById(e);l.require({message:u(`serviceDetail.deleteConfirmMessage`,{name:t?.name??e}),header:u(`serviceDetail.deleteConfirmHeader`),icon:`pi pi-exclamation-triangle`,rejectLabel:u(`actions.cancel`),acceptLabel:u(`actions.delete`),acceptProps:{severity:`danger`},accept:async()=>{await d.remove(e)&&(s.add({severity:`success`,summary:u(`serviceDetail.removed`),detail:u(`serviceDetail.deleted`),life:3e3}),o.push(`/`))}})}return(e,t)=>_.value?(n(),M(`div`,xu,[g.value===`terminal`?(n(),G(Lt,{key:`terminal-`+h.value,service:_.value,processes:v.value},null,8,[`service`,`processes`])):g.value===`metrics`?(n(),G(Gt,{key:`metrics-`+h.value,service:_.value,processes:v.value},null,8,[`service`,`processes`])):g.value===`config`?(n(),G(kl,{key:`config-`+h.value,service:_.value,"project-id":y.value,onRemoveService:ee},null,8,[`service`,`project-id`])):g.value===`git`?(n(),G(bu,{key:`git-`+h.value,"service-id":h.value},null,8,[`service-id`])):j(``,!0)])):(n(),M(`div`,Su,[L(`p`,null,I(i(u)(`serviceDetail.notFound`)),1)]))}}),[[`__scopeId`,`data-v-460acc37`]]);export{Cu as default};
@@ -0,0 +1 @@
1
+ import{A as e,Bi as t,Bn as n,Ca as r,Cn as i,Dn as a,Gn as ee,H as te,Hi as ne,Ii as re,W as o,Yn as ie,_i as s,a as ae,ai as c,ci as l,di as u,fi as d,ha as f,hn as p,ka as m,li as h,ni as g,nt as oe,pa as se,q as _,ra as ce,ri as v,rt as y,s as le,yi as b,zn as ue}from"./index-gfmcW9Sb.js";import{t as de}from"./project.store-CUclo-tf.js";import{n as x}from"./plus-CaknAInj.js";import{t as fe}from"./autocomplete-Bx5M86A5.js";import{t as pe}from"./toggleswitch-C0fuTzJt.js";import{t as me}from"./fieldset-BRuU3VW2.js";import{t as S}from"./divider-J1wJyhb6.js";var he={class:`service-form-page`},ge={class:`page-header`},_e={key:0,class:`restart-banner`},ve={key:1,class:`loading-container`},ye={class:`form-section`},be={class:`form-group`},C={for:`svc-project`},w={class:`form-hint`},T={class:`form-group`},E={for:`svc-agent`},D={class:`form-hint`},O={class:`form-group`},k={for:`svc-name`},A={class:`form-hint`},j={class:`form-actions`},M={class:`form-section`},N={class:`form-row`},xe={class:`form-group flex-1`},Se={for:`svc-name`},Ce={class:`form-group`,style:{width:`160px`}},we={for:`svc-runner`},Te={class:`form-group`},Ee={for:`svc-agent-edit`},De={class:`form-hint`},Oe={class:`form-row`},ke={class:`form-group flex-1`},Ae={for:`svc-cwd`},je={class:`form-group`,style:{"min-width":`200px`}},Me={class:`form-group switch-group`},P={for:`svc-autorestart`},Ne={class:`form-section`},Pe={class:`section-header`},Fe={key:0,class:`empty-env`},Ie={class:`form-group`},Le={for:`hc-path`},Re={class:`form-row`},ze={class:`form-group flex-1`},Be={for:`hc-interval`},Ve={class:`form-group flex-1`},He={for:`hc-timeout`},Ue={class:`form-group flex-1`},We={for:`hc-retries`},F=`__inherit__`,I=i(b({__name:`ServiceFormPage`,props:{id:{}},setup(i){let b=i,I=n(),Ge=ue(),L=ee(),R=de(),z=oe(),B=te(),V=le(),Ke=ae(),{t:H}=ie(),U=l(()=>!!b.id),W=l(()=>Ge.query.projectId),G=f(!1),K=f(!1),q=f(null),J=f(null),Y=f(!1),X=se({projectId:``,agentId:F,name:``,cwd:``,ports:[],runner:`native`,autoRestart:!1,healthCheck:{enabled:!1,path:``,interval:3e4,timeout:5e3,retries:3}}),Z=f([]),qe=[{label:`Native`,value:`native`},{label:`Docker`,value:`docker`}],Je=l(()=>R.projects.map(e=>({label:e.name,value:e.id}))),Q=l(()=>[{label:H(`serviceForm.agentInherit`),value:F},...B.agents.map(e=>({label:`${e.config.name} ${e.status.connected?`(Online)`:`(Offline)`}`,value:e.config.id}))]);function Ye(){Z.value=[...Z.value,{key:``,value:``,isSecret:!1}]}function Xe(e){Z.value=Z.value.filter((t,n)=>n!==e)}function Ze(){let e={},t=!1;for(let n of Z.value){let r=n.key.trim();r&&(e[r]={value:{value:n.value,pre:``,post:``,isSecret:n.isSecret}},t=!0)}return t?e:void 0}async function Qe(){if(b.id){G.value=!0;try{let e=await p.service.get.query({id:b.id});X.agentId=e.agentId??F,X.name=e.name,X.cwd=e.cwd??``,X.ports=(e.ports??[]).map(String),X.runner=e.runner,X.autoRestart=e.autoRestart,e.healthCheck&&(X.healthCheck.enabled=!0,X.healthCheck.path=e.healthCheck.path,X.healthCheck.interval=e.healthCheck.interval,X.healthCheck.timeout=e.healthCheck.timeout,X.healthCheck.retries=e.healthCheck.retries),e.variables&&typeof e.variables==`object`&&Object.keys(e.variables).length>0&&(Z.value=Object.entries(e.variables).map(([e,t])=>{let n=t;return{key:e,value:n.value.value??``,isSecret:n.value.isSecret??!1}}))}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:y(e)??H(`serviceForm.failedToLoad`),life:5e3}),I.back()}finally{G.value=!1}}}async function $(){if(!(!U.value||!b.id||K.value||G.value)){if(!X.name.trim()){L.add({severity:`warn`,summary:H(`serviceForm.validation`),detail:H(`serviceForm.nameRequired`),life:3e3});return}K.value=!0;try{let e={agentId:X.agentId===F?null:X.agentId||null,name:X.name.trim(),cwd:X.cwd.trim()||void 0,ports:X.ports.map(Number).filter(e=>e>0&&e<=65535),runner:X.runner,autoRestart:X.autoRestart,variables:Ze(),healthCheck:X.healthCheck.enabled?{path:X.healthCheck.path,interval:X.healthCheck.interval,timeout:X.healthCheck.timeout,retries:X.healthCheck.retries}:void 0};(await p.service.update.mutate({id:b.id,...e}))?.stoppedForAgentChange?(q.value=e.agentId,J.value=b.id,L.add({severity:`warn`,summary:H(`serviceForm.saved`),detail:H(`serviceForm.agentChangedServiceStopped`),life:4e3})):L.add({severity:`success`,summary:H(`serviceForm.saved`),life:1500})}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:y(e)??H(`serviceForm.failedToSave`),life:5e3})}finally{K.value=!1}}}async function $e(){if(!(!q.value||!J.value)){Y.value=!0;try{await Ke.start(q.value,J.value),q.value=null,J.value=null,L.add({severity:`success`,summary:H(`serviceForm.restarted`),life:2e3})}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:y(e),life:5e3})}finally{Y.value=!1}}}async function et(){if(!X.name.trim()){L.add({severity:`warn`,summary:H(`serviceForm.validation`),detail:H(`serviceForm.nameRequired`),life:3e3});return}if(!X.projectId){L.add({severity:`warn`,summary:H(`serviceForm.validation`),detail:H(`serviceForm.projectRequired`),life:3e3});return}K.value=!0;try{let e=await z.create({name:X.name.trim(),...X.agentId&&X.agentId!==F?{agentId:X.agentId}:{}});if(!e)throw Error(z.error??`Failed to create service`);await R.addService(X.projectId,e.id),L.add({severity:`success`,summary:H(`serviceForm.serviceCreated`),detail:H(`serviceForm.configureAfterCreate`),life:3e3}),I.push({name:`service-detail`,params:{id:e.id,tab:`config`}})}catch(e){L.add({severity:`error`,summary:H(`serviceForm.error`),detail:y(e)??H(`serviceForm.failedToSave`),life:5e3})}finally{K.value=!1}}return re(async()=>{await Promise.all([R.fetchAll(),B.fetchAll()]),W.value?X.projectId=W.value:!X.projectId&&V.activeProjectId&&(X.projectId=V.activeProjectId),U.value&&await Qe()}),(n,i)=>(t(),d(`div`,he,[h(`div`,ge,[s(r(a),{icon:`pi pi-arrow-left`,severity:`secondary`,text:``,rounded:``,onClick:i[0]||=e=>r(I).back()}),h(`h1`,null,m(U.value?r(H)(`serviceForm.editTitle`):r(H)(`serviceForm.createTitle`)),1)]),J.value?(t(),d(`div`,_e,[h(`span`,null,m(r(H)(`serviceForm.agentChangedServiceStopped`)),1),s(r(a),{label:r(H)(`serviceForm.restartNow`),icon:`pi pi-play`,severity:`warning`,size:`small`,loading:Y.value,onClick:$e},null,8,[`label`,`loading`]),s(r(a),{icon:`pi pi-times`,severity:`secondary`,text:``,rounded:``,size:`small`,onClick:i[1]||=e=>{J.value=null,q.value=null}})])):u(``,!0),G.value?(t(),d(`div`,ve,[s(r(e))])):(t(),d(`form`,{key:2,class:`service-form`,onSubmit:v(et,[`prevent`])},[U.value?(t(),d(c,{key:1},[h(`div`,M,[h(`div`,N,[h(`div`,xe,[h(`label`,Se,m(r(H)(`serviceForm.nameLabelShort`)),1),s(r(_),{id:`svc-name`,modelValue:X.name,"onUpdate:modelValue":i[6]||=e=>X.name=e,placeholder:`my-service`,class:`w-full`,onBlur:$,onKeydown:g(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,Ce,[h(`label`,we,m(r(H)(`serviceForm.runnerLabel`)),1),s(r(o),{id:`svc-runner`,modelValue:X.runner,"onUpdate:modelValue":i[7]||=e=>X.runner=e,options:qe,optionLabel:`label`,optionValue:`value`,class:`w-full`,onChange:$},null,8,[`modelValue`])])]),h(`div`,Te,[h(`label`,Ee,m(r(H)(`serviceForm.agentLabel`)),1),s(r(o),{id:`svc-agent-edit`,modelValue:X.agentId,"onUpdate:modelValue":i[8]||=e=>X.agentId=e,options:Q.value,optionLabel:`label`,optionValue:`value`,class:`w-full`,onChange:$},null,8,[`modelValue`,`options`]),h(`small`,De,m(r(H)(`serviceForm.agentHintEdit`)),1)]),h(`div`,Oe,[h(`div`,ke,[h(`label`,Ae,m(r(H)(`serviceForm.cwdLabel`)),1),s(r(_),{id:`svc-cwd`,modelValue:X.cwd,"onUpdate:modelValue":i[9]||=e=>X.cwd=e,placeholder:`.`,class:`w-full`,onBlur:$,onKeydown:g(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,je,[h(`label`,null,m(r(H)(`serviceForm.portsLabel`)),1),s(r(fe),{modelValue:X.ports,"onUpdate:modelValue":i[10]||=e=>X.ports=e,multiple:``,typeahead:!1,placeholder:r(H)(`serviceForm.portsPlaceholder`),class:`w-full`,onChange:$},null,8,[`modelValue`,`placeholder`])])]),h(`div`,Me,[s(r(pe),{modelValue:X.autoRestart,"onUpdate:modelValue":i[11]||=e=>X.autoRestart=e,inputId:`svc-autorestart`,onChange:$},null,8,[`modelValue`]),h(`label`,P,m(r(H)(`serviceForm.autoRestart`)),1)])]),s(r(S)),h(`div`,Ne,[h(`div`,Pe,[h(`h3`,null,m(r(H)(`serviceForm.envVars`)),1),s(r(a),{label:r(H)(`serviceForm.addEnvVar`),icon:`pi pi-plus`,severity:`secondary`,size:`small`,onClick:Ye},null,8,[`label`])]),Z.value.length===0?(t(),d(`div`,Fe,[h(`small`,null,m(r(H)(`serviceForm.noEnvVars`)),1)])):u(``,!0),(t(!0),d(c,null,ne(Z.value,(e,n)=>(t(),d(`div`,{key:n,class:`env-row`},[s(r(_),{modelValue:e.key,"onUpdate:modelValue":t=>e.key=t,placeholder:`KEY`,class:`env-key`,onBlur:$,onKeydown:g(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),i[17]||=h(`span`,{class:`env-eq`},`=`,-1),s(r(_),{modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,placeholder:`value`,class:`env-value`,onBlur:$,onKeydown:g(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onUpdate:modelValue`,`onKeydown`]),s(r(a),{icon:`pi pi-trash`,severity:`danger`,text:``,rounded:``,size:`small`,onClick:()=>{Xe(n),$()}},null,8,[`onClick`])]))),128))]),s(r(S)),s(r(me),{legend:r(H)(`serviceForm.healthCheck`),toggleable:!0,collapsed:!X.healthCheck.enabled,onToggle:i[16]||=e=>{X.healthCheck.enabled=!e.value,$()}},{default:ce(()=>[h(`div`,Ie,[h(`label`,Le,m(r(H)(`serviceForm.healthCheckPath`)),1),s(r(_),{id:`hc-path`,modelValue:X.healthCheck.path,"onUpdate:modelValue":i[12]||=e=>X.healthCheck.path=e,placeholder:`/health`,class:`w-full`,onBlur:$,onKeydown:g(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,Re,[h(`div`,ze,[h(`label`,Be,m(r(H)(`serviceForm.interval`)),1),s(r(x),{id:`hc-interval`,modelValue:X.healthCheck.interval,"onUpdate:modelValue":i[13]||=e=>X.healthCheck.interval=e,min:1e3,step:1e3,class:`w-full`,onBlur:$,onKeydown:g(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,Ve,[h(`label`,He,m(r(H)(`serviceForm.timeout`)),1),s(r(x),{id:`hc-timeout`,modelValue:X.healthCheck.timeout,"onUpdate:modelValue":i[14]||=e=>X.healthCheck.timeout=e,min:500,step:500,class:`w-full`,onBlur:$,onKeydown:g(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])]),h(`div`,Ue,[h(`label`,We,m(r(H)(`serviceForm.retries`)),1),s(r(x),{id:`hc-retries`,modelValue:X.healthCheck.retries,"onUpdate:modelValue":i[15]||=e=>X.healthCheck.retries=e,min:0,max:20,class:`w-full`,onBlur:$,onKeydown:g(v($,[`prevent`]),[`enter`])},null,8,[`modelValue`,`onKeydown`])])])]),_:1},8,[`legend`,`collapsed`]),s(r(S))],64)):(t(),d(c,{key:0},[h(`div`,ye,[h(`div`,be,[h(`label`,C,m(r(H)(`serviceForm.projectLabel`)),1),s(r(o),{id:`svc-project`,modelValue:X.projectId,"onUpdate:modelValue":i[2]||=e=>X.projectId=e,options:Je.value,optionLabel:`label`,optionValue:`value`,placeholder:r(H)(`serviceForm.projectPlaceholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),h(`small`,w,m(r(H)(`serviceForm.projectHint`)),1)]),h(`div`,T,[h(`label`,E,m(r(H)(`serviceForm.agentLabel`)),1),s(r(o),{id:`svc-agent`,modelValue:X.agentId,"onUpdate:modelValue":i[3]||=e=>X.agentId=e,options:Q.value,optionLabel:`label`,optionValue:`value`,placeholder:r(H)(`serviceForm.agentInherit`),"show-clear":``,class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),h(`small`,D,m(r(H)(`serviceForm.agentHint`)),1)]),h(`div`,O,[h(`label`,k,m(r(H)(`serviceForm.nameLabel`)),1),s(r(_),{id:`svc-name`,modelValue:X.name,"onUpdate:modelValue":i[4]||=e=>X.name=e,placeholder:`my-service`,class:`w-full`},null,8,[`modelValue`]),h(`small`,A,m(r(H)(`serviceForm.nameConfigHint`)),1)])]),s(r(S)),h(`div`,j,[s(r(a),{label:r(H)(`serviceForm.cancel`),severity:`secondary`,text:``,onClick:i[5]||=e=>r(I).back()},null,8,[`label`]),s(r(a),{label:r(H)(`serviceForm.create`),icon:`pi pi-check`,loading:K.value,type:`submit`},null,8,[`label`,`loading`])])],64))],32))]))}}),[[`__scopeId`,`data-v-39a96e7b`]]);export{I as default};
@@ -0,0 +1 @@
1
+ .service-form-page[data-v-39a96e7b]{max-width:800px;margin:0 auto;padding:1.5rem}.page-header[data-v-39a96e7b]{align-items:center;gap:.5rem;margin-bottom:1.5rem;display:flex}.page-header h1[data-v-39a96e7b]{margin:0;font-size:1.5rem;font-weight:700}.restart-banner[data-v-39a96e7b]{background:var(--p-yellow-100,#fef3c7);border:1px solid var(--p-yellow-400,#f59e0b);color:var(--p-yellow-900,#78350f);border-radius:6px;align-items:center;gap:.75rem;margin-bottom:1rem;padding:.75rem 1rem;font-size:.9rem;display:flex}.restart-banner span[data-v-39a96e7b]{flex:1}.loading-container[data-v-39a96e7b]{justify-content:center;padding:3rem 0;display:flex}.service-form[data-v-39a96e7b]{flex-direction:column;gap:0;display:flex}.form-section[data-v-39a96e7b]{flex-direction:column;gap:1rem;display:flex}.section-header[data-v-39a96e7b]{justify-content:space-between;align-items:center;display:flex}.section-header h3[data-v-39a96e7b]{margin:0;font-size:1.05rem;font-weight:600}.form-row[data-v-39a96e7b]{align-items:flex-start;gap:1rem;display:flex}.flex-1[data-v-39a96e7b]{flex:1}.form-group[data-v-39a96e7b]{flex-direction:column;gap:.3rem;display:flex}.form-group label[data-v-39a96e7b]{font-size:.875rem;font-weight:500}.form-hint[data-v-39a96e7b]{color:var(--p-text-muted-color);font-size:.78rem}.switch-group[data-v-39a96e7b]{flex-direction:row;align-items:center;gap:.6rem}.switch-group label[data-v-39a96e7b]{font-weight:400}.w-full[data-v-39a96e7b]{width:100%}.empty-env[data-v-39a96e7b]{text-align:center;color:var(--p-text-muted-color);border:1px dashed var(--p-content-border-color);border-radius:6px;padding:.75rem}.env-row[data-v-39a96e7b]{align-items:center;gap:.5rem;display:flex}.env-key[data-v-39a96e7b]{width:200px;font-family:Fira Code,Cascadia Code,monospace;font-size:.85rem}.env-eq[data-v-39a96e7b]{color:var(--p-text-muted-color);font-weight:700}.env-value[data-v-39a96e7b]{flex:1;font-family:Fira Code,Cascadia Code,monospace;font-size:.85rem}.form-actions[data-v-39a96e7b]{justify-content:flex-end;gap:.5rem;padding-top:.5rem;display:flex}
@@ -0,0 +1 @@
1
+ import{Bi as e,Ca as t,Ea as n,Hi as r,Ki as i,Oa as a,Ui as o,_i as s,ai as c,ci as l,di as u,fi as d,gi as f,ha as p,ka as m,li as h,ra as g,ui as _,yi as v}from"./index-gfmcW9Sb.js";import{V as y,hn as b,it as x,vn as S,yn as C}from"./dist-CNJKy0Au.js";import{a as w,t as T}from"./store-BSUCffsu.js";import{t as E}from"./active-entities-DMSK8Kvo.js";import{t as D}from"./ViewLayout.vue-D30IFsIP.js";import{t as O}from"./ViewLayoutContent.vue-B4BXKBtQ.js";var k=v({__name:`IntegrationLogo`,props:{integration:{}},setup(n){let r=n,i=[`adonisjs`,`astro`,`dotnet`,`elysiajs`,`express`,`fastapi`,`fastify`,`go`,`hono`,`laravel`,`litestar`,`nestjs`,`nextjs`,`nitro`,`nuxt`,`platformatic`,`react`,`rust`,`svelte`],a=l(()=>{let e=`Openapi`,t=r.integration?.toLocaleLowerCase();if(!t)return e;let n=t.charAt(0).toUpperCase()+t.slice(1);return i.includes(t)?n:e});return(n,r)=>(e(),_(t(y),{class:`h-full w-full rounded-lg`,logo:a.value},null,8,[`logo`]))}}),A={class:`flex flex-col gap-2`},j=v({__name:`SettingsAppearance`,setup(r){let{colorMode:i,setColorMode:a}=x(),o=S({base:`w-full shadow-none text-c-1 justify-start pl-2 gap-2 border`,variants:{active:{true:`bg-primary text-c-1 hover:bg-inherit`,false:`bg-b-1 hover:bg-b-2`}}});return(r,c)=>(e(),d(`div`,A,[s(t(b),{class:n(t(C)(t(o)({active:t(i)===`system`}))),onClick:c[0]||=e=>t(a)(`system`)},{default:g(()=>[h(`div`,{class:n([`flex h-5 w-5 items-center justify-center rounded-full border-[1.5px] p-1`,{"bg-c-accent text-b-1 border-transparent":t(i)===`system`}])},[t(i)===`system`?(e(),_(t(y),{key:0,icon:`Checkmark`,size:`xs`,thickness:`3.5`})):u(``,!0)],2),c[3]||=f(` System Preference (default) `,-1)]),_:1},8,[`class`]),s(t(b),{class:n(t(C)(t(o)({active:t(i)===`light`}))),onClick:c[1]||=e=>t(a)(`light`)},{default:g(()=>[h(`div`,{class:n([`flex h-5 w-5 items-center justify-center rounded-full border-[1.5px] p-1`,{"bg-c-accent text-b-1 border-transparent":t(i)===`light`}])},[t(i)===`light`?(e(),_(t(y),{key:0,icon:`Checkmark`,size:`xs`,thickness:`3.5`})):u(``,!0)],2),c[4]||=f(` Light Mode Always `,-1)]),_:1},8,[`class`]),s(t(b),{class:n(t(C)(t(o)({active:t(i)===`dark`}))),onClick:c[2]||=e=>t(a)(`dark`)},{default:g(()=>[h(`div`,{class:n([`flex h-5 w-5 items-center justify-center rounded-full border-[1.5px] p-1`,{"bg-c-accent text-b-1 border-transparent":t(i)===`dark`}])},[t(i)===`dark`?(e(),_(t(y),{key:0,icon:`Checkmark`,size:`xs`,thickness:`3.5`})):u(``,!0)],2),c[5]||=f(` Dark Mode Always `,-1)]),_:1},8,[`class`])]))}}),M={class:`flex flex-col gap-2`},N={key:0,class:`font-bold`},P={key:1,class:`text-c-2 mb-4 leading-[21px]`},F=v({__name:`SettingsSection`,setup(t){return(t,n)=>(e(),d(`div`,M,[t.$slots.title?(e(),d(`h3`,N,[o(t.$slots,`title`)])):u(``,!0),t.$slots.description?(e(),d(`p`,P,[o(t.$slots,`description`)])):u(``,!0),o(t.$slots,`default`)]))}}),I={class:`bg-b-1 h-full w-full overflow-auto`},L={class:`mr-auto ml-auto w-full max-w-[720px] px-5 py-5`},R={class:`flex flex-col gap-8`},z={class:`flex flex-col gap-2`},B={class:`flex flex-col gap-2`},V={class:`grid grid-cols-2 gap-2`},H={class:`flex items-center gap-2`},U={class:`flex items-center gap-1`},W={class:`grid grid-cols-2 gap-2`},G={class:`flex items-center gap-2`},K={class:`flex items-center gap-1`},q={class:`size-7 rounded-xl`},J=`https://proxy.scalar.com`,Y=v({__name:`SettingsGeneral`,setup(i){let{activeWorkspace:o}=E(),{proxyUrl:l,workspaceMutators:p}=T(),v=[`default`,`alternate`,`purple`,`solarized`,`saturn`,`kepler`],x=[`elysiajs`,`fastify`],D=e=>({default:{light:`#fff`,dark:`#0f0f0f`,accent:`#0099ff`},alternate:{light:`#f9f9f9`,dark:`#131313`,accent:`#e7e7e7`},moon:{light:`#ccc9b3`,dark:`#313332`,accent:`#645b0f`},purple:{light:`#f5f6f8`,dark:`#22252b`,accent:`#5469d4`},solarized:{light:`#fdf6e3`,dark:`#00212b`,accent:`#007acc`},bluePlanet:{light:`#f0f2f5`,dark:`#000e23`,accent:`#e0e2e6`},saturn:{light:`#e4e4df`,dark:`#2c2c30`,accent:`#1763a6`},kepler:{light:`#f6f6f6`,dark:`#0d0f1e`,accent:`#7070ff`},mars:{light:`#f2efe8`,dark:`#321116`,accent:`#c75549`},deepSpace:{light:`#f4f4f5`,dark:`#09090b`,accent:`#8ab4f8`},laserwave:{light:`#f4f2f7`,dark:`#27212e`,accent:`#ed78c2`},none:{light:`#ffffff`,dark:`#000000`,accent:`#3b82f6`}})[e]||{light:`#ffffff`,dark:`#000000`,accent:`#3b82f6`},O=e=>p.edit(o.value?.uid,`themeId`,e),A=S({base:`w-full shadow-none text-c-1 justify-start pl-2 gap-2 border`,variants:{active:{true:`bg-primary text-c-1 hover:bg-inherit`,false:`bg-b-1 hover:bg-b-2`}}}),M=e=>p.edit(o.value?.uid,`proxyUrl`,e);return(i,p)=>(e(),d(`div`,I,[h(`div`,L,[h(`div`,R,[p[13]||=h(`div`,null,[h(`h2`,{class:`mt-10 text-xl font-bold`},`Settings`)],-1),s(F,null,{title:g(()=>[...p[3]||=[f(` CORS Proxy `,-1)]]),description:g(()=>[...p[4]||=[f(` Browsers block cross-origin requests for security. We provide a public proxy to `,-1),h(`a`,{class:`hover:text-c-1 underline-offset-2`,href:`https://en.wikipedia.org/wiki/Cross-origin_resource_sharing`,target:`_blank`},` bypass CORS issues `,-1),f(` . Check the `,-1),h(`a`,{class:`hover:text-c-1 underline-offset-2`,href:`https://github.com/scalar/scalar/tree/main/examples/proxy-server`,target:`_blank`},` source code on GitHub `,-1),f(` . `,-1)]]),default:g(()=>[h(`div`,z,[s(t(b),{class:n(t(C)(t(A)({active:t(o)?.proxyUrl===J}))),onClick:p[0]||=e=>M(J)},{default:g(()=>[h(`div`,{class:n([`flex h-5 w-5 items-center justify-center rounded-full border-[1.5px] p-1`,{"bg-c-accent text-b-1 border-transparent":t(o)?.proxyUrl===J}])},[t(o)?.proxyUrl===J?(e(),_(t(y),{key:0,icon:`Checkmark`,size:`xs`,thickness:`3.5`})):u(``,!0)],2),p[5]||=f(` Use proxy.scalar.com (default) `,-1)]),_:1},8,[`class`]),t(l)&&t(l)!==J?(e(),_(t(b),{key:0,class:n(t(C)(t(A)({active:t(o)?.proxyUrl===t(l)}))),onClick:p[1]||=e=>M(t(l))},{default:g(()=>[h(`div`,{class:n([`flex h-5 w-5 items-center justify-center rounded-full border-[1.5px] p-1`,{"bg-c-accent text-b-1 border-transparent":t(o)?.proxyUrl===t(l)}])},[t(o)?.proxyUrl===t(l)?(e(),_(t(y),{key:0,icon:`Checkmark`,size:`xs`,thickness:`3.5`})):u(``,!0)],2),f(` Use custom proxy (`+m(t(l))+`) `,1)]),_:1},8,[`class`])):u(``,!0),s(t(b),{class:n(t(C)(t(A)({active:!t(o)?.proxyUrl}))),onClick:p[2]||=e=>M(void 0)},{default:g(()=>[h(`div`,{class:n([`flex h-5 w-5 items-center justify-center rounded-full border-[1.5px] p-1`,!t(o)?.proxyUrl&&`bg-c-accent text-b-1 border-transparent`])},[t(o)?.proxyUrl?u(``,!0):(e(),_(t(y),{key:0,icon:`Checkmark`,size:`xs`,thickness:`3.5`}))],2),p[6]||=f(` Skip the proxy `,-1)]),_:1},8,[`class`])])]),_:1}),s(F,null,{title:g(()=>[...p[7]||=[f(` Themes `,-1)]]),description:g(()=>[...p[8]||=[f(` We've got a whole rainbow of themes for you to play with: `,-1)]]),default:g(()=>[h(`div`,B,[h(`div`,V,[(e(),d(c,null,r(v,r=>s(t(b),{key:r,class:n(t(C)(t(A)({active:t(o)?.themeId===r}))),onClick:e=>O(r)},{default:g(()=>[h(`div`,H,[h(`div`,{class:n([`flex h-5 w-5 items-center justify-center rounded-full border-[1.5px] p-1`,{"bg-c-accent text-b-1 border-transparent":t(o)?.themeId===r}])},[t(o)?.themeId===r?(e(),_(t(y),{key:0,icon:`Checkmark`,size:`xs`,thickness:`3.5`})):u(``,!0)],2),f(` `+m(t(w)[r]),1)]),h(`div`,U,[h(`span`,{class:`border-c-3 -mr-3 inline-block h-5 w-5 rounded-full`,style:a({backgroundColor:D(r).light})},null,4),h(`span`,{class:`border-c-3 -mr-3 inline-block h-5 w-5 rounded-full`,style:a({backgroundColor:D(r).dark})},null,4),h(`span`,{class:`border-c-3 inline-block h-5 w-5 rounded-full`,style:a({backgroundColor:D(r).accent})},null,4)])]),_:2},1032,[`class`,`onClick`])),64))])])]),_:1}),s(F,null,{title:g(()=>[...p[9]||=[f(` Framework Themes `,-1)]]),description:g(()=>[...p[10]||=[f(` Are you a real fan? Show your support by using your favorite framework's theme! `,-1)]]),default:g(()=>[h(`div`,W,[(e(),d(c,null,r(x,r=>s(t(b),{key:r,class:n(t(C)(t(A)({active:t(o)?.themeId===r}))),onClick:e=>O(r)},{default:g(()=>[h(`div`,G,[h(`div`,{class:n([`flex h-5 w-5 items-center justify-center rounded-full border-[1.5px] p-1`,{"bg-c-accent text-b-1 border-transparent":t(o)?.themeId===r}])},[t(o)?.themeId===r?(e(),_(t(y),{key:0,icon:`Checkmark`,size:`xs`,thickness:`3.5`})):u(``,!0)],2),f(` `+m(t(w)[r]),1)]),h(`div`,K,[h(`div`,q,[s(k,{integration:r},null,8,[`integration`])])])]),_:2},1032,[`class`,`onClick`])),64))])]),_:1}),s(F,null,{title:g(()=>[...p[11]||=[f(` Appearance `,-1)]]),description:g(()=>[...p[12]||=[f(` Choose between light, dark, or system-based appearance for your workspace. `,-1)]]),default:g(()=>[s(j)]),_:1})])])]))}}),X=v({__name:`Settings`,setup(t){let n={general:{component:Y,title:`general`}},r=p(`general`);return(t,a)=>(e(),_(D,null,{default:g(()=>[s(O,{class:`flex-1`},{default:g(()=>[n[r.value]?(e(),_(i(n[r.value].component),{key:0})):u(``,!0)]),_:1})]),_:1}))}});export{X as default};